{"version":3,"mappings":"ymBAKO,IAAKA,EAgBX,MAhBD,OAAYA,QAAsB,KAChCA,gDACAA,kEACAA,4DACAA,8EACAA,8FACAA,gGACAA,uCACAA,uDACAA,yDACAA,4DACAA,4EACAA,4DACAA,4EACAA,4CACAA,4DAfUA,EAAZ,IAAYA,GAgBX,GA2DK,QAGJC,YAAmBC,kBAFVC,UAAOH,EAAuBI,4BAMnC,QAGJH,YAAmBC,kBAFVC,UAAOH,EAAuBK,oCAMnC,QAGJJ,YAAmBC,kBAFVC,UAAOH,EAAuBM,4BAMnC,QAGJL,YAAmBC,kBAFVC,UAAOH,EAAuBO,oCAMnC,QAGJN,YAAmBC,kBAFVC,UAAOH,EAAuBQ,oBAMnC,QAGJP,YAAmBC,kBAFVC,UAAOH,EAAuBS,gGClHlC,IAAKC,EAibX,MAjbD,OAAYA,QAAa,KACxBA,0DACAA,oFACAA,kFACAA,wEACAA,sEACAA,gFACAA,8EACAA,8EACAA,oGACAA,sGACAA,0DACAA,sDACAA,oDACAA,sDACAA,8DACAA,0DACAA,4DACAA,0DACAA,0DACAA,4DACAA,oDACAA,gEACAA,gDACAA,8DACAA,8CACAA,gDACAA,8CACAA,sDACAA,0CACAA,kEACAA,8DACAA,wEACAA,8DACAA,0DACAA,0DACAA,0DACAA,gEACAA,oGACAA,oGACAA,gEACAA,0GACAA,0HACAA,0FACAA,wFACAA,0EACAA,sIACAA,sJACAA,kFACAA,oHACAA,kHACAA,4FACAA,kGACAA,gHACAA,gIACAA,0FACAA,oHACAA,oIACAA,wGACAA,sFACAA,0FACAA,gGACAA,sFACAA,kFACAA,4DACAA,sCACAA,gDACAA,kDACAA,4DACAA,0DACAA,4FACAA,0GACAA,kDACAA,sEACAA,sFACAA,0EACAA,gEACAA,8EACAA,0EACAA,4FACAA,0EACAA,sEACAA,sEACAA,gGACAA,wEACAA,wFACAA,sDACAA,sEACAA,8DACAA,oEACAA,gGACAA,oEACAA,sFACAA,4EACAA,4FACAA,oEACAA,oFACAA,4FACAA,4GACAA,sEACAA,4EACAA,4DACAA,kEACAA,kFACAA,4FACAA,sFACAA,oEACAA,0DACAA,4DACAA,4DACAA,4DACAA,oEACAA,wDACAA,kEACAA,0FACAA,4EACAA,sFACAA,sEACAA,kGACAA,wEACAA,4DACAA,8DACAA,sFACAA,4FACAA,wEACAA,oFACAA,wEACAA,gDACAA,gEACAA,oDACAA,sDACAA,4DACAA,oDACAA,gEACAA,oEACAA,8DACAA,kDACAA,4DACAA,kDACAA,sFACAA,kDACAA,wDACAA,oEACAA,8EACAA,sEACAA,oFACAA,0EACAA,oFACAA,gCACAA,8CACAA,0CACAA,wCACAA,kEACAA,8DACAA,sEACAA,gEACAA,0FACAA,oEACAA,gFACAA,sEACAA,sEACAA,wEACAA,wDACAA,8DACAA,wCACAA,gFACAA,8FACAA,8GACAA,wHACAA,gGACAA,sGACAA,0GACAA,sHACAA,gGACAA,gHACAA,sGACAA,0GACAA,oFACAA,gFACAA,wEACAA,4EACAA,gGACAA,gDACAA,4DACAA,wDACAA,4CACAA,4CACAA,wDACAA,oDACAA,sDACAA,sEACAA,wDACAA,kDACAA,oDACAA,wEACAA,sDACAA,oCACAA,gDACAA,sEACAA,gGACAA,kGACAA,oEACAA,0EACAA,kFACAA,wDACAA,kEACAA,oEACAA,wEACAA,0DACAA,8DACAA,kFACAA,8FACAA,8DACAA,kFACAA,4DACAA,0DACAA,4FACAA,gFACAA,wFACAA,gFACAA,0DACAA,kEACAA,kEACAA,sFACAA,kFACAA,wEACAA,kFACAA,gGACAA,0FACAA,kEACAA,wEACAA,gFACAA,sEACAA,wFACAA,gEACAA,oEACAA,gDACAA,gEACAA,4FACAA,4FACAA,wFACAA,4FACAA,wEACAA,4FACAA,8EACAA,8DACAA,0EACAA,kFACAA,kGACAA,wHACAA,kGACAA,oHACAA,wHACAA,4FACAA,sEACAA,gFACAA,wFACAA,4FACAA,wFACAA,kEACAA,oFACAA,0EACAA,wFACAA,oFACAA,0FACAA,wGACAA,kFACAA,oGACAA,wGACAA,8FACAA,8FACAA,kHACAA,4HACAA,kGACAA,wHACAA,4HACAA,wFACAA,kEACAA,oFACAA,wFACAA,8EACAA,kFACAA,wGACAA,wHACAA,gGACAA,gHACAA,gHACAA,4CACAA,gEACAA,4DACAA,wEACAA,wGACAA,kEACAA,4CACAA,sDACAA,4EACAA,4CACAA,sDACAA,sDACAA,4CACAA,sDACAA,wDACAA,wDACAA,0DACAA,wDACAA,sCACAA,4DACAA,8DACAA,sDACAA,oDACAA,kEACAA,oDACAA,sEACAA,8DACAA,4DACAA,gEACAA,4DACAA,kDACAA,gDACAA,wDACAA,8EACAA,4FACAA,8GACAA,gGACAA,gEACAA,0EACAA,wEACAA,oEACAA,kDACAA,kDACAA,oDACAA,oDACAA,0DACAA,oDACAA,oDACAA,0DACAA,oEACAA,kEACAA,gEACAA,sEACAA,sDACAA,gEACAA,gEACAA,wEACAA,sEACAA,oEACAA,wDACAA,kFACAA,8EACAA,sDACAA,sEACAA,oFACAA,oGACAA,8EACAA,4EACAA,kFACAA,8EACAA,4EACAA,0EACAA,8FACAA,wEACAA,8GACAA,sDACAA,kEACAA,gEACAA,wGACAA,sFACAA,sFACAA,sFACAA,sFACAA,sFACAA,sFACAA,sFACAA,sFACAA,sFACAA,sFACAA,sFACAA,oFACAA,0FACAA,0EACAA,0FACAA,oEACAA,kFACAA,gFACAA,4EACAA,oEACAA,kDACAA,4CACAA,8EACAA,8CACAA,gGACAA,wFACAA,gFACAA,kFACAA,oEACAA,0EACAA,wEACAA,4FACAA,8FACAA,8FACAA,sGACAA,8GACAA,0HACAA,0IACAA,oIACAA,gGACAA,8GACAA,wIACAA,8IACAA,sIACAA,8IACAA,sHACAA,4HACAA,oHACAA,4HACAA,0HACAA,gIACAA,wHACAA,gIACAA,gHACAA,sHACAA,8GACAA,sHACAA,8GACAA,oHACAA,4GACAA,oHACAA,4GACAA,kHACAA,0GACAA,gIACAA,kHACAA,4GAhbWA,EAAZ,IAAYA,GAibX,GAEWC,EAYX,MAZD,OAAYA,QAAQ,KACnBA,mBACAA,qBACAA,sBACAA,qBACAA,yBACAA,wBACAA,wBACAA,yBACAA,6BACAA,6BACAA,yBAXWA,EAAZ,IAAYA,GAYX,GAEWC,EAsFX,MAtFD,OAAYA,QAAa,KACxBA,0BACAA,4BACAA,sDACAA,sDACAA,wCACAA,8BACAA,8BACAA,8BACAA,0BACAA,wCACAA,wCACAA,0CACAA,0CACAA,gCACAA,gCACAA,8CACAA,8CACAA,4BACAA,4DACAA,4BACAA,kCACAA,kCACAA,oDACAA,kCACAA,kCACAA,oCACAA,oCACAA,gDACAA,gDACAA,kCACAA,kCACAA,kCACAA,kCACAA,gCACAA,gCACAA,sCACAA,kDACAA,0BACAA,wCACAA,8BACAA,8BACAA,8BACAA,8BACAA,gCACAA,0BACAA,sCACAA,4CACAA,8BACAA,oCACAA,wDACAA,kCACAA,kCACAA,oCACAA,8DACAA,0DACAA,8DACAA,8DACAA,4DACAA,4DACAA,gEACAA,gEACAA,8DACAA,8DACAA,8CACAA,8CACAA,8CACAA,8CACAA,4DACAA,gEACAA,gEACAA,sDACAA,0CACAA,oCACAA,wEACAA,wEACAA,kDACAA,kDACAA,gCACAA,sDACAA,gDACAA,oDACAA,oDACAA,kDACAA,kDACAA,4DArFWA,EAAZ,IAAYA,GAsFX,4dCxXM,IAAMC,GAAb,MAAM,0DAAOA,mEAzBA,CACTC,IACAC,IACAC,KACDC,SAtCQ,CACPC,KACAC,KACAC,KACAC,KACAC,IACAC,IACAC,KACAC,IACAC,IACAC,IACAC,MACAC,MACAC,KACAC,KACAC,KACAC,KACAC,KACAD,KACAE,MACAC,KACAC,MACAC,IACAC,KACAC,IACAC,IACAC,KACAC,KACAC,IACAC,KACAC,MACAC,MACAC,SA2BSnC,IAAb,UA1EIoC,IAAoB,YAUpBC,IAA2BC,MAG3BC,KAAuBD,MARvBE,IAA0BC,yCAH1BC,IAAqB,iBAQrBL,IAA2BC,MAG3BC,KAAuBD,gCARvBE,IAA0B,oLCzFxBG,SACEA,iBACEA,8BACFA,QACFA,4CAHoBA,mDAChBA,iDCGH,IAAMC,EAAb,MAAM,QALNxD,cAOSE,aAAqC,GAK5CuD,UACE,OAAOC,UAAKxD,KAAKyD,SAAW,IAG9BC,OAAOC,GACL,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CAgkE,GACA+9G,GACAC,GACAC,GACAC,GACAC,GACAC,GACA1kF,GACAkhD,GACAyjC,GACAltF,GACA4wD,GACAu8B,GACA/9R,GACAg+R,GACA18E,GACAzN,GACA2lB,GACAo5B,GACAqrC,GACAC,GACArzP,GACAszP,GACAC,IAClBtjR,MAAMpI,GAAS,CACbyyK,MAAO,CACL/2K,KAAM,GACNo4C,SAAS,EACTtU,QAAQ,EACRojH,KAAM,KACNm8G,SAAU,KACVjkC,SAAU,KACV6wD,aAAc,KACd7/P,YAAY,EACZ1rB,QAAS,GACTwrR,oBAAoB,EACpBC,eAAe,EACfC,eAAgB,KAChBC,gBAAiB,EACjBC,YAAa,IACbC,iBAAiB,EACjB/xR,MAAO,GAETqxJ,KAAM,CACJ7vJ,KAAM,GACN8jC,QAAQ,EACRsU,SAAS,EACTq4I,aAAc,MAEhB+/F,YAAa,CACXxwR,KAAM,GACN8jC,QAAQ,EACRsU,SAAS,GAEXq4O,aAAa,EACbC,yBAAyB,EACzBC,qBAAqB,EACrB/lO,oBAAoB,EACpBgmO,gBAAiB,OAxFF1jS,gBACCA,sBACAA,oBACAA,mBACAA,yBACAA,uBACAA,oBACAA,iCACAA,+BACAA,wBACAA,uBACAA,qBACAA,wBACAA,qBACAA,4BACAA,oBACAA,oBACAA,2BACAA,sBACAA,kBACAA,0BACAA,sBACAA,+BACAA,kBACAA,4BACAA,wBACAA,0BACAA,iCACAA,0BACAA,iBACAA,kBACAA,qBACAA,uBACAA,sBACAA,2BACAA,2BACAA,0BACAA,4BACAA,mBACAA,0BACAA,0BACAA,6BACAA,iBACAA,yBACAA,qBACAA,uCACAA,yCACAA,kBACAA,qBACAA,4BACAA,qBACAA,sBACAA,6BACAA,0BArGZA,sBAAmB,IACnBA,aAAwB,CAC9BA,KAAK6hS,cACL7hS,KAAKgzL,yBACLhzL,KAAKq1L,uBACLr1L,KAAKqtR,gBACLrtR,KAAK4hS,eACL5hS,KAAK8yK,aACL9yK,KAAKokL,gBACLpkL,KAAKk3L,aACLl3L,KAAKi8L,oBACLj8L,KAAK88N,YACL98N,KAAKkkL,YACLlkL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A,QACAA,eACEA,eACAA,eACEA,gCACAA,iBAAkGA,mBAAMA,QAC1GA,QACAA,eACEA,sEAGFA,QACFA,QACAA,kBACEA,eACEA,gCACAA,iBAAkFA,mBAAMA,QACxFA,eACAA,oBAAsBA,mBAAMA,QAC9BA,QACAA,kBACEA,wBACEA,gCACEA,+BACEA,iEAmBFA,QACAA,kCAKAA,mCACEA,2CAIFA,QACAA,sCACEA,gEAGFA,QACFA,QACFA,QACFA,QACFA,QACAA,kBACEA,eAAIA,gCAA0CA,QAC9CA,eACEA,gCACAA,iBAAwFA,mBAAMA,QAChGA,QACAA,eACEA,sEAGFA,QACFA,QACAA,eACEA,eACAA,eACEA,gCACAA,iBAAwFA,mBAAMA,QAChGA,QACAA,eAAIA,4BAAwDA,QAC9DA,QACAA,eACEA,eACAA,eAAIA,gCAAmCA,QACvCA,eACEA,oDAGFA,QACFA,QACAA,kBACEA,eACEA,gCACAA,kBAAwFA,oBAAMA,QAChGA,QACAA,gBAAIA,kCAA8BA,QAClCA,gBACEA,qGAGFA,QACFA,QACAA,gBACEA,gBACAA,gBAAIA,kCAAkCA,QACtCA,gBACEA,sDAGFA,QACFA,QACAA,mBACEA,gBAAIA,kCAAmCA,QACvCA,gBACEA,kCACAA,kBAAkFA,oBAAMA,QAC1FA,QACAA,gBACEA,sDAGFA,QACFA,QACAA,gBACEA,gBACAA,gBACEA,kCACAA,kBAAoFA,oBAAMA,QAC5FA,QACAA,gBACEA,sDAGFA,QACFA,QACAA,gBACEA,gBACAA,gBACEA,kCACAA,kBAAoFA,oBAAMA,QAC5FA,QACAA,gBACEA,sDAGFA,QACFA,QACAA,gBACEA,gBACAA,gBACEA,kCACAA,kBAA0FA,oBAAMA,QAClGA,QACAA,gBACEA,sDAGFA,QACFA,QACAA,gBACEA,gBACAA,gBACEA,kCACAA,kBAAwFA,oBAAMA,QAChGA,QACAA,gBACEA,sDAGFA,QACFA,QACAA,gBACEA,gBACAA,gBACEA,kCACAA,kBAAwFA,oBAAMA,QAChGA,QACAA,gBACEA,sDAGFA,QACFA,QACAA,gBACEA,gBACAA,gBACEA,kCACAA,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AAe,GACtCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,yBAAqB,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,2BAAuB,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,cAAU,GACjCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,eAAW,GAClCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,aAAS,GAChCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,YAAQ,GAC/BmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,iBAAa,GACpCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,qBAAiB,GACxCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,iBAAa,GACpCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,mBAAe,GACtCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,iBAAa,GACpCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,YAAQ,GAC/BmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,cAAU,GACjCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,kBAAc,GACrCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,mBAAe,GACtCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,uBAAmB,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,sBAAkB,GACzCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,oBAAgB,GACvCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,mBAAe,GACtCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,oBAAgB,GACvCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,iBAAa,GACpCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,mBAAe,GACtCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,mBAAe,GACtCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,oBAAgB,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,oBAAgB,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,oBAAgB,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,gBAAY,GACnCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,iBAAa,GACpCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,sBAAkB,GACzCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,oBAAgB,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,mBAAe,GACtCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,uBAAmB,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,kBAAc,GACrCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC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AC1CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,iBAAa,GACpCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,kBAAc,GACrCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,sBAAkB,GACzCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,qBAAiB,GACxCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,yBAAqB,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,qBAAiB,GACxCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,iBAAa,GACpCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,yBAAqB,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,eAAW,GAClCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,kBAAc,GACrCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,iCAA6B,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,cAAU,GACjCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,wBAAoB,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,uBAAmB,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,wCAAoC,GAC3DmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,oCAAgC,GACvDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,wBAAoB,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,2BAAuB,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,4BAAwB,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,+BAA2B,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,6BAAyB,GAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,gCAA4B,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,gCAA4B,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,8BAA0B,GACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,iCAA6B,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,8BAA0B,GACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,yBAAqB,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,wBAAoB,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,yBAAqB,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,wBAAoB,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,oBAAgB,GACvCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,qBAAiB,GACxCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,wBAAoB,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,kCAA8B,GACrDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,2BAAuB,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,4BAAwB,GAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,mCAA+B,GACtDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,0BAAsB,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,yBAAqB,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,sBAAkB,GACzCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,qBAAiB,GACxCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,eAAW,GAClCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,iBAAa,GACpCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,kBAAc,GACrCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,yBAAqB,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,eAAW,GAClCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,YAAQ,GAC/BmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,cAAU,GACjCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,aAAS,GAChCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,EAAS53B,UAAW,eAAW,GAClCmuB,EAAW,IACP0/I,S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AAG,MACHnhM,EAAG,IACHoxjB,GAAI,SACJC,GAAI,OACJC,IAAK,YACLC,IAAK,UACLC,KAAM,cACNC,KAAM,YACNC,IAAK,WACLC,IAAK,SACL9yV,EAAG,IACH+yV,GAAI,QACJC,IAAK,UACLC,IAAK,MACLC,KAAM,QACNC,MAAO,UACPC,MAAO,UACPC,OAAQ,YACR,kBAAmB,qBACnB,kBAAmB,qBACnB,mBAAoB,qBACpB,oBAAqB,qBACrB3rkB,GAAI,QACJi3C,EAAG,IACH20hB,GAAI,MACJC,IAAK,UACLC,KAAM,YACNC,KAAM,SACNC,MAAO,UACPC,OAAQ,YACRC,MAAO,SACPC,OAAQ,YACRC,QAAS,cACTC,KAAM,QACNC,MAAO,SACP,eAAgB,yBAChB,eAAgB,yBAChB,gBAAiB,yBACjB,iBAAkB,2BAG1BC,YAAa,CACTlykB,KAAM,eACNqvkB,KAAM,YACN5tB,OAAQ,UACR6tB,MAAO,QAEX3xM,YAAa,CACT39X,KAAM,iBACNqvkB,KAAM,YACN5tB,OAAQ,UACR6tB,MAAO,YAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,KACA,KACA,QACA,KACA,UACA,QACA,MAEJC,OAAQ,CACJ,IACA,IACA,OACA,IACA,SACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,QACA,KACA,UACA,QACA,MAEJ+C,KAAM,CACF,cACA,kBACA,cACA,cACA,eACA,WACA,WAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,QACA,KACA,UACA,QACA,MAEJC,OAAQ,CACJ,IACA,IACA,OACA,IACA,SACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,QACA,KACA,UACA,QACA,MAEJ+C,KAAM,CACF,cACA,kBACA,cACA,cACA,eACA,WACA,YAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,MACA,SACA,WACA,MACA,WACA,WACA,WACA,MACA,cACA,cACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,MAEJC,KAAM,CACF,QACA,WACA,cACA,QACA,cACA,cACA,gBACA,QACA,kBACA,gBACA,YACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,SACA,WACA,MACA,WACA,WACA,WACA,MACA,cACA,cACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,MAEJC,KAAM,CACF,QACA,UACA,cACA,QACA,cACA,cACA,gBACA,QACA,kBACA,gBACA,WACA,cAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,uBACA,uBACA,uBACA,yBAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,uBACA,uBACA,uBACA,0BAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,aACVnuK,GAAI,OACJouK,KAAM,OACNrsf,GAAI,OACJssf,SAAU,KACVC,SAAU,OACVC,WAAY,OACZC,SAAU,YACVC,OAAQ,QAEZT,OAAQ,CACJG,SAAU,YACVnuK,GAAI,OACJouK,KAAM,OACNrsf,GAAI,OACJssf,SAAU,KACVC,SAAU,KACVC,WAAY,KACZC,SAAU,KACVC,OAAQ,MAEZR,KAAM,CACFE,SAAU,cACVnuK,GAAI,OACJouK,KAAM,UACNrsf,GAAI,OACJssf,SAAU,UACVC,SAAU,YACVC,WAAY,YACZC,SAAU,aACVC,OAAQ,WAGhB,cAAe,CACXV,YAAa,CACTI,SAAU,cACVnuK,GAAI,OACJouK,KAAM,UACNrsf,GAAI,OACJssf,SAAU,UACVC,SAAU,YACVC,WAAY,YACZC,SAAU,aACVC,OAAQ,OAEZT,OAAQ,CACJG,SAAU,YACVnuK,GAAI,OACJouK,KAAM,OACNrsf,GAAI,OACJssf,SAAU,UACVC,SAAU,OACVC,WAAY,OACZC,SAAU,YACVC,OAAQ,OAEZR,KAAM,CACFE,SAAU,cACVnuK,GAAI,OACJouK,KAAM,UACNrsf,GAAI,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H+yV,GAAI,OACJC,IAAK,UACL4D,IAAK,QACLC,KAAM,SACN5D,IAAK,MACLC,KAAM,SACNC,MAAO,YACPC,MAAO,UACPC,OAAQ,aACR,kBAAmB,sBACnB,oBAAqB,sBACrB3rkB,GAAI,QACJi3C,EAAG,IACH20hB,GAAI,MACJC,IAAK,QACLC,KAAM,WACNsD,IAAK,OACLC,MAAO,UACPtD,KAAM,QACNC,MAAO,WACPC,OAAQ,cACRC,MAAO,SACPG,KAAM,QACNC,MAAO,SACP,eAAgB,6BAChB,iBAAkB,+BAG1BC,YAAa,CACTlykB,KAAM,gBACNqvkB,KAAM,aACN5tB,OAAQ,WACR6tB,MAAO,SAEX3xM,YAAa,CACT39X,KAAM,kBACNqvkB,KAAM,YACN5tB,OAAQ,UACR6tB,MAAO,YAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,MACA,MACA,MACA,MACA,MACA,MACA,OAEJ+C,KAAM,CACF,UACA,SACA,WACA,WACA,aACA,UACA,YAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,MACA,MACA,MACA,MACA,MACA,MACA,OAEJ+C,KAAM,CACF,UACA,SACA,WACA,WACA,aACA,UACA,aAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,OACA,OACA,UACA,OACA,MACA,OACA,OACA,OACA,QACA,OACA,OACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,SACA,UACA,UACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,SACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA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AG1BC,YAAa,CACTlykB,KAAM,iBACNqvkB,KAAM,cACN5tB,OAAQ,YACR6tB,MAAO,UAEX3xM,YAAa,CACT39X,KAAM,kBACNqvkB,KAAM,YACN5tB,OAAQ,WACR6tB,MAAO,UAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ+C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ+C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,cACA,cACA,cACA,gBAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IA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ACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ+C,KAAM,CACF,iBACA,eACA,eACA,eACA,eACA,QACA,eAGR,cAAe,CACXF,YAAa,CACT,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ+C,KAAM,CACF,iBACA,eACA,eACA,eACA,eACA,QACA,gBAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,OACA,QACA,WACA,MACA,MACA,QACA,QACA,MACA,OACA,MACA,MACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,WACA,SACA,MACA,QACA,QACA,SACA,YACA,WACA,WACA,cAGR,cAAe,CACXF,YAAa,CACT,OACA,QACA,WACA,MACA,MACA,QACA,QACA,MACA,OACA,MACA,MACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,WACA,SACA,MACA,QACA,QACA,SACA,YACA,WACA,WACA,eAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,aACA,aACA,aACA,eAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,KACA,KACA,KACA,MAEJC,KAAM,CACF,aACA,aACA,aACA,gBAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,gBACVnuK,GAAI,KACJouK,KAAM,gBACNrsf,GAAI,KACJssf,SAAU,WACVE,WAAY,qBACZC,SAAU,WACVC,OAAQ,eAEZT,OAAQ,CACJG,SAAU,gBACVnuK,GAAI,KACJouK,KAAM,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,cACN5tB,OAAQ,UACR6tB,MAAO,UACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACNp7kB,EAAG,KACHysa,EAAG,MACH4uK,KAAM,WACNC,MAAO,cACPC,GAAI,QACJC,IAAK,WACLC,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,OACJC,MAAO,WACPC,OAAQ,cACRC,QAAS,iBACT9vX,EAAG,MACHnhM,EAAG,KACHoxjB,GAAI,UACJC,GAAI,QACJC,IAAK,aACLC,IAAK,WACLC,KAAM,cACNC,KAAM,aACNC,IAAK,WACLC,IAAK,UACL9yV,EAAG,KACH+yV,GAAI,UACJC,IAAK,aACL6D,KAAM,UACN5D,IAAK,MACLC,KAAM,SACNC,MAAO,YACPC,MAAO,UACPC,OAAQ,aACR,kBAAmB,mBACnB,kBAAmB,mBACnB,oBAAqB,mBACrB3rkB,GAAI,QACJi3C,EAAG,KACH20hB,GAAI,SACJC,IAAK,aACLC,KAAM,gBACNsD,IAAK,SACLrD,KAAM,SACNC,MAAO,YACPC,OAAQ,eACRC,MAAO,UACPG,KAAM,SACNC,MAAO,UACP,eAAgB,qBAChB,eAAgB,qBAChB,iBAAkB,uBAG1BC,YAAa,CACTlykB,KAAM,kBACNqvkB,KAAM,aACN5tB,OAAQ,WACR6tB,MAAO,SAEX3xM,YAAa,CACT39X,KAAM,mBACNqvkB,KAAM,aACN5tB,OAAQ,YACR6tB,MAAO,cAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,MACA,WACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,SACA,IACA,KAEJ9C,MAAO,CACH,MACA,MACA,MACA,MACA,WACA,MACA,OAEJ+C,KAAM,CACF,WACA,cACA,SACA,UACA,gBACA,QACA,WAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,WACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,SACA,IACA,KAEJ9C,MAAO,CACH,MACA,MACA,MACA,MACA,WACA,MACA,OAEJ+C,KAAM,CACF,WACA,cACA,SACA,UACA,gBACA,QACA,YAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,MACA,OACA,WACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,OAEJC,KAAM,CACF,gBACA,eACA,cACA,UACA,UACA,SACA,SACA,WACA,QACA,YACA,YACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,OACA,WACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,OAEJC,KAAM,CACF,gBACA,eACA,cACA,UACA,UACA,SACA,SACA,UACA,QACA,WACA,UACA,cAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,KACA,KACA,KACA,MAEJC,KAAM,CACF,aACA,aACA,aACA,eAGR,cAAe,CACXF,YAAa,CACT,SACA,SACA,SACA,UAEJC,OAAQ,CACJ,KACA,KACA,KACA,MAEJC,KAAM,CACF,aACA,aACA,aACA,gBAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,aACVnuK,GAAI,KACJouK,KAAM,QACNrsf,GAAI,KACJssf,SAAU,SACVE,WAAY,UACZC,SAAU,eACVC,OAAQ,aAEZT,OAAQ,CACJG,SAAU,aACVnuK,GAAI,KACJouK,KAAM,QACNrsf,GAAI,KACJssf,SAAU,SACVE,WAAY,UACZC,SAAU,eACVC,OAAQ,aAEZR,KAAM,CACFE,SAAU,aACVnuK,GAAI,KACJouK,KAAM,QACNrsf,GAAI,KACJssf,SAAU,SACVE,WAAY,gBACZC,SAAU,eACVC,OAAQ,cAGhB,cAAe,CACXV,YAAa,CACTI,SAAU,aACVnuK,GAAI,KACJouK,KAAM,QACNrsf,GAAI,KACJssf,SAAU,SACVE,WAAY,UACZC,SAAU,eACVC,OAAQ,aAEZT,OAAQ,CACJG,SAAU,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AAM,aACNC,IAAK,WACLC,IAAK,UACL9yV,EAAG,IACH+yV,GAAI,QACJC,IAAK,WACLC,IAAK,MACLC,KAAM,SACNC,MAAO,YACPC,MAAO,UACP,kBAAmB,iBACnB,oBAAqB,iBACrB6D,KAAM,QACNvvkB,GAAI,QACJi3C,EAAG,KACH20hB,GAAI,QACJC,IAAK,aACLC,KAAM,gBACNC,KAAM,SACNC,MAAO,YACPC,OAAQ,eACRC,MAAO,UACPG,KAAM,SACNC,MAAO,UACP,eAAgB,cAChB,iBAAkB,gBAG1BC,YAAa,CACTlykB,KAAM,eACNqvkB,KAAM,YACN5tB,OAAQ,UACR6tB,MAAO,QAEX3xM,YAAa,CACT39X,KAAM,mBACNqvkB,KAAM,aACN5tB,OAAQ,YACR6tB,MAAO,cAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,IACA,IACA,IACA,MACA,KACA,IACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,KACA,KACA,IACA,MAEJ9C,MAAO,CACH,IACA,IACA,IACA,MACA,KACA,IACA,OAEJ+C,KAAM,CACF,cACA,gBACA,OACA,SACA,qBACA,YACA,YAGR,cAAe,CACXF,YAAa,CACT,IACA,IACA,IACA,MACA,KACA,IACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,KACA,KACA,IACA,MAEJ9C,MAAO,CACH,IACA,IACA,IACA,MACA,KACA,IACA,OAEJ+C,KAAM,CACF,cACA,gBACA,OACA,SACA,qBACA,YACA,aAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,OACA,QACA,WACA,UACA,UACA,UACA,UACA,OACA,SACA,OACA,OACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,OACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEJC,KAAM,CACF,YACA,aACA,aACA,aACA,WACA,YACA,YACA,YACA,aACA,aACA,WACA,aAGR,cAAe,CACXF,YAAa,CACT,OACA,QACA,WACA,UACA,UACA,UACA,UACA,OACA,SACA,OACA,OACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,OACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEJC,KAAM,CACF,YACA,aACA,aACA,aACA,WACA,YACA,YACA,YACA,aACA,aACA,WACA,cAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,aACA,cACA,eACA,eAEJC,OAAQ,CACJ,KACA,MACA,OACA,OAEJC,KAAM,CACF,iBACA,kBACA,mBACA,oBAGR,cAAe,CACXF,YAAa,CACT,aACA,aACA,aACA,cAEJC,OAAQ,CACJ,KACA,KACA,KACA,MAEJC,KAAM,CACF,iBACA,iBACA,iBACA,oBAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,cACVnuK,GAAI,MACJouK,KAAM,SACNrsf,GAAI,MACJssf,SAAU,SACVC,SAAU,MACVC,WAAY,MACZC,SAAU,OACVC,OAAQ,WACRwC,OAAQ,UAEZjD,OAAQ,CACJG,SAAU,cACVnuK,GAAI,MACJouK,KAAM,SACNrsf,GAAI,MACJssf,SAAU,SACVC,SAAU,MACVC,WAAY,MACZC,SAAU,OACVC,OAAQ,WACRwC,OAAQ,UAEZhD,KAAM,CACFE,SAAU,cACVnuK,GAAI,MACJouK,KAAM,SACNrsf,GAAI,MACJssf,SAAU,SACVC,SAAU,mBACVC,WAAY,gBACZC,SAAU,OACVC,OAAQ,WACRwC,OAAQ,WAGhB,cAAe,CACXlD,YAAa,CACTI,SAAU,cACVnuK,GAAI,MACJouK,KAAM,SACNrsf,GAAI,MACJssf,SAAU,SACVC,SAAU,MACVC,WAAY,MACZC,SAAU,OACVC,OAAQ,WACRwC,OAAQ,UAEZjD,OAAQ,CACJG,SAAU,cACVnuK,GAAI,MACJouK,KAAM,SACNrsf,GAAI,MACJssf,SAAU,SACVC,SAAU,MACVC,WAAY,MACZC,SAAU,OACVC,OAAQ,WACRwC,OAAQ,UAEZhD,KAAM,CACFE,SAAU,cACVnuK,GAAI,MACJouK,KAAM,SACNrsf,GAAI,MACJssf,SAAU,SACVC,SAAU,mBACVC,WAAY,gBACZC,SAAU,OACVC,OAAQ,WACRwC,OAAQ,YAIpBvC,KAAM,CACF5ukB,OAAQ,CACJmukB,KAAM,CACF,EAAK,sBACL,EAAK,uCACL,gBAAiB,0CACjB,gBAAiB,UAErBF,YAAa,CACT,EAAK,QACL,EAAK,SACL,gBAAiB,OACjB,gBAAiB,SAErBC,OAAQ,CACJ,EAAK,MACL,EAAK,OACL,gBAAiB,OACjB,gBAAiB,WAI7BW,UAAW,SACXC,cAAe,MACfC,WAAY,CACRC,IAAK,CACDb,KAAM,SACN/C,MAAO,SACP8C,OAAQ,UAEZ5tkB,KAAM,CACF6tkB,KAAM,QACN/C,MAAO,QACP8C,OAAQ,SAEZe,QAAS,CACLd,KAAM,cACN/C,MAAO,UACP8C,OAAQ,WAEZ3tkB,MAAO,CACH4tkB,KAAM,WACN/C,MAAO,WACP8C,OAAQ,YAEZ93J,KAAM,CACF+3J,KAAM,SACN/C,MAAO,SACP8C,OAAQ,UAEZgB,YAAa,CACTf,KAAM,gBACN/C,MAAO,gBACP8C,OAAQ,iBAEZ9ukB,IAAK,CACD+ukB,KAAM,MACN/C,MAAO,MACP8C,OAAQ,OAEZiB,UAAW,CACPhB,KAAM,cACN/C,MAAO,cACP8C,OAAQ,eAEZkB,QAAS,CACLjB,KAAM,eACN/C,MAAO,eACP8C,OAAQ,gBAEZmB,eAAgB,CACZlB,KAAM,6BACN/C,MAAO,6BACP8C,OAAQ,8BAEZoB,UAAW,CACPlE,MAAO,UACP+C,KAAM,UACND,OAAQ,WAEZ1tkB,KAAM,CACF2tkB,KAAM,SACN/C,MAAO,SACP8C,OAAQ,QAEZn8hB,OAAQ,CACJo8hB,KAAM,OACN/C,MAAO,OACP8C,OAAQ,KAEZxtkB,OAAQ,CACJytkB,KAAM,eACN/C,MAAO,eACP8C,OAAQ,MAEZ19N,KAAM,CACF29N,KAAM,kBACN/C,MAAO,kBACP8C,OAAQ,qBAIpBruM,SAAU,uBCpedhuQ,EADc64c,aACN,CACJ9glB,KAAM,KACN+glB,cAAe,CACXuG,GAAI,cAERtsG,SAAU,CACNhwc,SAAU,MAEdi2iB,UAAW,KACX0E,QAAS,CACLjzK,QAAS,CACL94T,QAAS,IACTl2E,MAAO,OACPZ,KAAM,IACN8ijB,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbC,uBAAwB,OACxBC,SAAU,SACVC,SAAU,SACVC,IAAK,MACLC,cAAe,KAEnBxse,QAAS,CACLsne,SAAU,CACN,KAEJmF,UAAW,CACP,IAGRC,WAAY,CACRpF,SAAU,CACN,OAEJmF,UAAW,IAEfh3iB,QAAS,CACL6xiB,SAAU,CACN,MAEJmF,UAAW,CACP,IAGRE,SAAU,CACNrF,SAAU,CACN,UAEJmF,UAAW,CACP,GAEJ,wBAAyB,MACzB,0BAA2B,OAE/BG,WAAY,CACRtF,SAAU,CACN,UAEJmF,UAAW,CACP,KAIZI,aAAc,CACVe,IAAK,CACDb,UAAW,IACXC,QAAS,IACTC,cAAe,IACfC,YAAa,2BCtEzB7+c,EADc64c,aACN,CACJ9glB,KAAM,KACN+glB,cAAe,CACX7uhB,GAAI,cAER8ob,SAAU,CACNhwc,SAAU,MAEdi2iB,UAAW,KACX51iB,SAAU,CACN61iB,SAAU,CACN16kB,EAAG,UACH26kB,EAAG,2BACHtpjB,EAAG,QACHs4N,EAAG,cACHrhM,EAAG,OACHhuD,EAAG,cACHsglB,EAAG,oCACH52hB,EAAG,gBACH45F,EAAG,mBACHh7G,EAAG,QACHi4iB,EAAG,WACHx/kB,EAAG,gCACHgmD,EAAG,kCAEPy5hB,gBAAiB,CACbpvkB,KAAM,UACNqvkB,KAAM,UACN5tB,OAAQ,UACR6tB,MAAO,UACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACNp7kB,EAAG,KACHysa,EAAG,MACH4uK,KAAM,YACNC,MAAO,eACPC,GAAI,OACJC,IAAK,aACLC,IAAK,WACLC,KAAM,gBACNC,KAAM,cACNC,GAAI,WACJC,MAAO,SACPC,OAAQ,YACRC,QAAS,eACTkF,OAAQ,iBACRjF,QAAS,uBACTC,SAAU,0BACVhwX,EAAG,OACHnhM,EAAG,KACHoxjB,GAAI,UACJC,GAAI,QACJC,IAAK,aACLC,IAAK,WACLC,KAAM,gBACNC,KAAM,cACNC,IAAK,aACLC,IAAK,WACL9yV,EAAG,KACH+yV,GAAI,OACJC,IAAK,WACL6D,KAAM,QACN5D,IAAK,KACLC,KAAM,QACNC,MAAO,WACPoE,KAAM,OACNnE,MAAO,cACPC,OAAQ,iBACR,kBAAmB,gBACnB,kBAAmB,gBACnB,mBAAoB,gBACpB,oBAAqB,gBACrB3rkB,GAAI,QACJi3C,EAAG,IACH20hB,GAAI,OACJC,IAAK,UACLC,KAAM,aACNC,KAAM,OACNC,MAAO,UACPC,OAAQ,aACRC,MAAO,cACPC,OAAQ,qBACRC,QAAS,wBACTC,KAAM,QACNC,MAAO,SACP,eAAgB,aAChB,eAAgB,aAChB,gBAAiB,aACjB,iBAAkB,eAG1BC,YAAa,CACTlykB,KAAM,gBACNqvkB,KAAM,aACN5tB,OAAQ,WACR6tB,MAAO,SAEX3xM,YAAa,CACT39X,KAAM,2BACNqvkB,KAAM,qBACN5tB,OAAQ,UACR6tB,MAAO,WAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,KACA,KACA,KACA,KACA,KACA,KACA,WAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,UAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,WAEJ+C,KAAM,CACF,cACA,cACA,cACA,oBACA,iBACA,eACA,0BAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,KACA,KACA,KACA,WAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,UAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,WAEJ+C,KAAM,CACF,cACA,cACA,cACA,oBACA,iBACA,eACA,2BAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,QACA,OACA,OACA,OACA,OACA,aACA,QACA,QACA,QACA,QACA,SACA,UAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,SACA,UACA,OACA,iBACA,oBACA,gBACA,SACA,sBACA,eACA,SACA,iBACA,kBAGR,cAAe,CACXF,YAAa,CACT,QACA,OACA,OACA,OACA,OACA,aACA,QACA,QACA,QACA,QACA,SACA,UAEJC,OAAQ,CACJ,IACA,IACA,IACA,I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,iBAAkB,kCAG1BC,YAAa,CACTlykB,KAAM,gBACNqvkB,KAAM,aACN5tB,OAAQ,WACR6tB,MAAO,SAEX3xM,YAAa,CACT39X,KAAM,0BACNqvkB,KAAM,oBACN5tB,OAAQ,mBACR6tB,MAAO,YAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,cACA,SACA,QACA,cACA,WACA,UACA,UAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ+C,KAAM,CACF,iBACA,YACA,WACA,iBACA,cACA,aACA,cAGR,cAAe,CACXF,YAAa,CACT,cACA,SACA,QACA,cACA,WACA,UACA,UAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ+C,KAAM,CACF,iBACA,YACA,WACA,iBACA,cACA,aACA,eAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,QACA,QACA,QACA,OACA,QACA,YACA,YACA,OACA,QACA,OACA,OACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,gBACA,iBACA,QACA,eACA,QACA,cACA,cACA,UACA,aACA,WACA,YACA,cAGR,cAAe,CACXF,YAAa,CACT,QACA,QACA,QACA,OACA,QACA,YACA,YACA,OACA,QACA,OACA,OACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,gBACA,iBACA,QACA,eACA,QACA,cACA,cACA,UACA,aACA,WACA,YACA,eAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,aACA,aACA,aACA,cAEJC,OAAQ,CACJ,KACA,KACA,KACA,MAEJC,KAAM,CACF,gBACA,gBACA,gBACA,kBAGR,cAAe,CACXF,YAAa,CACT,aACA,aACA,aACA,cAEJC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,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,SACA,IACA,IACA,KAEJ9C,MAAO,CACH,MACA,MACA,MACA,WACA,MACA,WACA,OAEJ+C,KAAM,CACF,YACA,oBACA,SACA,aACA,WACA,cACA,WAGR,cAAe,CACXF,YAAa,CACT,SACA,OACA,MACA,WACA,OACA,MACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,SACA,IACA,IACA,KAEJ9C,MAAO,CACH,MACA,MACA,MACA,WACA,MACA,WACA,OAEJ+C,KAAM,CACF,YACA,oBACA,SACA,aACA,WACA,cACA,YAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,WACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,WACA,SACA,QACA,WACA,OACA,UACA,QACA,WACA,gBACA,oBACA,YACA,YAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,WACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,eACA,OACA,SACA,gBACA,MACA,WACA,SACA,gBACA,gBACA,mBACA,WACA,mBAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,QACA,SACA,UACA,UAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,iBACA,kBACA,mBACA,oBAGR,cAAe,CACXF,YAAa,CACT,QACA,SACA,UACA,UAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,iBACA,kBACA,mBACA,qBAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,oBACVnuK,GAAI,KACJouK,KAAM,kBACNrsf,GAAI,KACJssf,SAAU,OACVC,SAAU,uBACVC,WAAY,mBACZC,SAAU,YACVC,OAAQ,UAEZT,OAAQ,CACJG,SAAU,kBACVnuK,GAAI,IACJouK,KAAM,cACNrsf,GAAI,IACJssf,SAAU,OACVC,SAAU,kBACVC,WAAY,eACZC,SAAU,SACVC,OAAQ,UAEZR,KAAM,CACFE,SAAU,oBACVnuK,GAAI,KACJouK,KAAM,kBACNrsf,GAAI,KACJssf,SAAU,OACVC,SAAU,uBACVC,WAAY,mBACZC,SAAU,YACVC,OAAQ,WAGhB,cAAe,CACXV,YAAa,CACTI,SAAU,iBACVnuK,GAAI,KACJouK,KAAM,gBACNrsf,GAAI,KACJssf,SAAU,OACVC,SAAU,qBACVC,WAAY,kBACZC,SAAU,aACVC,OAAQ,OAEZT,OAAQ,CACJG,SAAU,gBACVnuK,GAAI,IACJouK,KAAM,YACNrsf,GAAI,IACJssf,SAAU,OACVC,SAAU,iBACVC,WAAY,cACZC,SAAU,SACVC,OAAQ,OAEZR,KAAM,CACFE,SAAU,iBACVnuK,GAAI,KACJouK,KAAM,gBACNrsf,GAAI,KACJssf,SAAU,OACVC,SAAU,qBACVC,WAAY,kBACZC,SAAU,aACVC,OAAQ,SAIpBC,KAAM,CACF5ukB,OAAQ,CACJmukB,KAAM,CACF,EAAK,4BACL,EAAK,aACL,gBAAiB,SACjB,gBAAiB,QAErBF,YAAa,CACT,EAAK,SACL,EAAK,OACL,gBAAiB,MACjB,gBAAiB,MAErBC,OAAQ,CACJ,EAAK,SACL,EAAK,OACL,gBAAiB,MACjB,gBAAiB,QAI7BW,UAAW,SACXC,cAAe,MACfC,WAAY,CACRC,IAAK,CACDb,KAAM,MACN/C,MAAO,MACP8C,OAAQ,OAEZ5tkB,KAAM,CACF6tkB,KAAM,MACN/C,MAAO,KACP8C,OAAQ,MAEZe,QAAS,CACLd,KAAM,eACN/C,MAAO,MACP8C,OAAQ,OAEZ3tkB,MAAO,CACH4tkB,KAAM,eACN/C,MAAO,QACP8C,OAAQ,MAEZ93J,KAAM,CACF+3J,KAAM,eACN/C,MAAO,QACP8C,OAAQ,SAEZgB,YAAa,CACTf,KAAM,6BACN/C,MAAO,cACP8C,OAAQ,eAEZ9ukB,IAAK,CACD+ukB,KAAM,aACN/C,MAAO,MACP8C,OAAQ,MAEZiB,UAAW,CACPhB,KAAM,kBACN/C,MAAO,WACP8C,OAAQ,UAEZkB,QAAS,CACLjB,KAAM,sBACN/C,MAAO,kBACP8C,OAAQ,YAEZmB,eAAgB,CACZlB,KAAM,2BACN/C,MAAO,mBACP8C,OAAQ,aAEZoB,UAAW,CACPlE,MAAO,sCACP+C,KAAM,sCACND,OAAQ,gCAEZ1tkB,KAAM,CACF2tkB,KAAM,UACN/C,MAAO,QACP8C,OAAQ,MAEZn8hB,OAAQ,CACJo8hB,KAAM,SACN/C,MAAO,MACP8C,OAAQ,OAEZxtkB,OAAQ,CACJytkB,KAAM,UACN/C,MAAO,OACP8C,OAAQ,KAEZ19N,KAAM,CACF29N,KAAM,iBACN/C,MAAO,eACP8C,OAAQ,gBAIpBruM,SAAU,uBCvedhuQ,EADc64c,aACN,CACJ9glB,KAAM,KACN+glB,cAAe,CACX/vkB,GAAI,cAERgqe,SAAU,CACNhwc,SAAU,MAEdi2iB,UAAW,KACX0E,QAAS,CACLjzK,QAAS,CACL94T,QAAS,IACTl2E,MAAO,OACPZ,KAAM,IACN8ijB,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbC,uBAAwB,OACxBC,SAAU,SACVC,SAAU,SACVC,IAAK,MACLC,cAAe,KAEnBxse,QAAS,CACLsne,SAAU,CACN,KAEJmF,UAAW,CACP,IAGRC,WAAY,CACRpF,SAAU,CACN,OAEJmF,UAAW,IAEfh3iB,QAAS,CACL6xiB,SAAU,CACN,MAEJmF,UAAW,CACP,IAGRE,SAAU,CACNrF,SAAU,CACN,UAEJmF,UAAW,CACP,GAEJ,wBAAyB,MACzB,wBAAyB,MACzB,yBAA0B,MAC1B,0BAA2B,OAE/BG,WAAY,CACRtF,SAAU,CACN,SACA,YAEJmF,UAAW,CACP,0BChEhBp+c,EADc64c,aACN,CACJ9glB,KAAM,KACN+glB,cAAe,CACX6G,GAAI,cAER5sG,SAAU,CACNhwc,SAAU,MAEdi2iB,UAAW,KACX51iB,SAAU,CACN61iB,SAAU,CACN16kB,EAAG,UACH26kB,EAAG,iBACHtpjB,EAAG,QACHs4N,EAAG,SACHrhM,EAAG,QACHhuD,EAAG,SACHsglB,EAAG,0BACH52hB,EAAG,gBACH45F,EAAG,mBACHh7G,EAAG,QACHi4iB,EAAG,WACHx/kB,EAAG,gCACHgmD,EAAG,kCAEPy5hB,gBAAiB,CACbpvkB,KAAM,WACNqvkB,KAAM,WACN5tB,OAAQ,WACR6tB,MAAO,WACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACNp7kB,EAAG,IACHysa,EAAG,MACH4uK,KAAM,WACNC,MAAO,cACPC,GAAI,MACJC,IAAK,WACLC,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,MACJC,MAAO,UACPC,OAAQ,YACRC,QAAS,eACT9vX,EAAG,MACHnhM,EAAG,KACHoxjB,GAAI,SACJC,GAAI,QACJC,IAAK,YACLC,IAAK,WACLC,KAAM,cACNC,KAAM,aACNC,IAAK,WACLC,IAAK,UACL9yV,EAAG,IACH+yV,GAAI,QACJC,IAAK,WACL6D,KAAM,QACN5D,IAAK,MACLC,KAAM,QACNC,MAAO,WACPC,MAAO,SACPC,OAAQ,YACR,kBAAmB,wCACnB,kBAAmB,wCACnB,oBAAqB,wCACrB3rkB,GAAI,QACJi3C,EAAG,IACH20hB,GAAI,OACJC,IAAK,UACLC,KAAM,aACNsD,IAAK,OACLrD,KAAM,QACNC,MAAO,UACPC,OAAQ,aACRC,MAAO,SACPG,KAAM,QACNC,MAAO,SACP,eAAgB,qCAChB,eAAgB,qCAChB,iBAAkB,uCAG1BC,YAAa,CACTlykB,KAAM,gBACNqvkB,KAAM,aACN5tB,OAAQ,WACR6tB,MAAO,SAEX3xM,YAAa,CACT39X,KAAM,iBACNqvkB,KAAM,WACN5tB,OAAQ,UACR6tB,MAAO,WAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,OACA,OACA,OACA,OACA,MACA,OACA,WAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,MACA,MACA,MACA,MACA,MACA,MACA,UAEJ+C,KAAM,CACF,gBACA,OACA,aACA,WACA,MACA,SACA,yBAGR,cAAe,CACXF,YAAa,CACT,OACA,OACA,OACA,OACA,MACA,OACA,WAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,MACA,MACA,MACA,MACA,MACA,MACA,UAEJ+C,KAAM,CACF,gBACA,OACA,aACA,WACA,MACA,SACA,0BAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QACA,OACA,OACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,WACA,YACA,SACA,UACA,MACA,QACA,QACA,SACA,aACA,YACA,YACA,cAGR,cAAe,CACXF,YAAa,CACT,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QACA,OACA,OACA,QAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,WACA,YACA,SACA,UACA,MACA,QACA,QACA,SACA,aACA,YACA,YACA,eAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,UACA,WACA,YACA,YAEJC,OAAQ,CACJ,IACA,KACA,MACA,MAEJC,KAAM,CACF,eACA,uBACA,wBACA,yBAGR,cAAe,CACXF,YAAa,CACT,UACA,WACA,YACA,YAEJC,OAAQ,CACJ,IACA,KACA,MACA,MAEJC,KAAM,CACF,eACA,uBACA,wBACA,0BAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,qBACVnuK,GAAI,OACJouK,KAAM,cACNrsf,GAAI,OACJssf,SAAU,iBACVE,WAAY,mBACZC,SAAU,QACVC,OAAQ,WAEZT,OAAQ,CACJG,SAAU,qBACVnuK,GAAI,OACJouK,KAAM,iBACNrsf,GAAI,OACJssf,SAAU,iBACVE,WAAY,mBACZC,SAAU,QACVC,OAAQ,WAEZR,KAAM,CACFE,SAAU,wBACVnuK,GAAI,OACJouK,KAAM,iBACNrsf,GAAI,OACJssf,SAAU,iBACVE,WAAY,mBACZC,SAAU,QACVC,OAAQ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C,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,gBACJC,MAAO,UACPC,OAAQ,sBACRC,QAAS,yBACT9vX,EAAG,MACHnhM,EAAG,KACHoxjB,GAAI,SACJC,GAAI,QACJC,IAAK,YACLC,IAAK,WACLC,KAAM,cACNC,KAAM,aACNC,IAAK,WACLC,IAAK,UACL9yV,EAAG,IACH+yV,GAAI,QACJC,IAAK,WACL6D,KAAM,QACN5D,IAAK,MACLC,KAAM,QACNC,MAAO,aACPC,MAAO,SACP,kBAAmB,yDACnB,kBAAmB,yDACnB,mBAAoB,yDACpB,oBAAqB,yDACrB1rkB,GAAI,QACJi3C,EAAG,IACH20hB,GAAI,OACJC,IAAK,UACLC,KAAM,yBACNsD,IAAK,OACLrD,KAAM,kBACNC,MAAO,oBACPC,OAAQ,uBACRC,MAAO,mBACPG,KAAM,kBACNC,MAAO,mBACP,eAAgB,gEAChB,eAAgB,gEAChB,gBAAiB,gEACjB,iBAAkB,kEAG1BC,YAAa,CACTlykB,KAAM,gBACNqvkB,KAAM,aACN5tB,OAAQ,WACR6tB,MAAO,SAEX3xM,YAAa,CACT39X,KAAM,2BACNqvkB,KAAM,qBACN5tB,OAAQ,oBACR6tB,MAAO,WAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJC,OAAQ,CACJ,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ9C,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ+C,KAAM,CACF,qEACA,qEACA,6CACA,iCACA,6CACA,6CACA,+CAGR,cAAe,CACXF,YAAa,CACT,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,UAEJ9C,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ+C,KAAM,CACF,qEACA,qEACA,6CACA,iCACA,6CACA,6CACA,gDAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,sBACA,4BACA,sBACA,sBACA,qBACA,sBACA,sBACA,sBACA,4BACA,sBACA,4BACA,uBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJC,KAAM,CACF,uCACA,6CACA,iCACA,uCACA,qBACA,2BACA,2BACA,6CACA,mDACA,6CACA,uCACA,+CAGR,cAAe,CACXF,YAAa,CACT,sBACA,4BACA,2BACA,sBACA,qBACA,2BACA,2BACA,sBACA,4BACA,sBACA,4BACA,uBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJC,KAAM,CACF,uCACA,6CACA,2BACA,uCACA,qBACA,2BACA,2BACA,uCACA,mDACA,6CACA,uCACA,gDAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,yBACA,yBACA,yBACA,0BAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,sDACA,sDACA,sDACA,wDAGR,cAAe,CACXF,YAAa,CACT,yBACA,yBACA,yBACA,0BAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,sDACA,sDACA,sDACA,yDAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,4BACVnuK,GAAI,KACJouK,KAAM,4BACNrsf,GAAI,KACJssf,SAAU,2BACVE,WAAY,qBACZC,SAAU,uCACVC,OAAQ,4BAEZT,OAAQ,CACJG,SAAU,4BACVnuK,GAAI,KACJouK,KAAM,4BACNrsf,GAAI,KACJssf,SAAU,2BACVE,WAAY,qBACZC,SAAU,sBACVC,OAAQ,4BAEZR,KAAM,CACFE,SAAU,6CACVnuK,GAAI,KACJouK,KAAM,6CACNrsf,GAAI,KACJssf,SAAU,2BACVE,WAAY,qBACZC,SAAU,uCACVC,OAAQ,6BAGhB,cAAe,CACXV,YAAa,CACTI,SAAU,4BACVnuK,GAAI,KACJouK,KAAM,4BACNrsf,GAAI,KACJssf,SAAU,2BACVE,WAAY,2BACZC,SAAU,sBACVC,OAAQ,4BAEZT,OAAQ,CACJG,SAAU,4BACVnuK,GAAI,KACJouK,KAAM,4BACNrsf,GAAI,KACJssf,SAAU,2BACVE,WAAY,2BACZC,SAAU,sBACVC,OAAQ,4BAEZR,KAAM,CACFE,SAAU,6CACVnuK,GAAI,KACJouK,KAAM,6CACNrsf,GAAI,KACJssf,SAAU,2BACVE,WAAY,2BACZC,SAAU,iCACVC,OAAQ,8BAIpBC,KAAM,CACF5ukB,OAAQ,CACJmukB,KAAM,CACF,EAAK,uHACL,EAAK,uHACL,gBAAiB,iEACjB,gBAAiB,qDAErBF,YAAa,CACT,EAAK,+BACL,EAAK,kBACL,gBAAiB,+BACjB,gBAAiB,sBAErBC,OAAQ,CACJ,EAAK,8BACL,EAAK,iBACL,gBAAiB,+BACjB,gBAAiB,wBAI7BW,UAAW,SACXC,cAAe,MACfC,WAAY,CACRC,IAAK,CACDb,KAAM,qBACN/C,MAAO,qBACP8C,OAAQ,sBAEZ5tkB,KAAM,CACF6tkB,KAAM,qBACN/C,MAAO,UACP8C,OAAQ,WAEZe,QAAS,CACLd,KAAM,6CACN/C,MAAO,gBACP8C,OAAQ,iBAEZ3tkB,MAAO,CACH4tkB,KAAM,iCACN/C,MAAO,sBACP8C,OAAQ,uBAEZ93J,KAAM,CACF+3J,KAAM,uCACN/C,MAAO,sBACP8C,OAAQ,uBAEZgB,YAAa,CACTf,KAAM,4EACN/C,MAAO,2DACP8C,OAAQ,2CAEZ9ukB,IAAK,CACD+ukB,KAAM,2BACN/C,MAAO,gBACP8C,OAAQ,iBAEZiB,UAAW,CACPhB,KAAM,oDACN/C,MAAO,yCACP8C,OAAQ,0CAEZkB,QAAS,CACLjB,KAAM,gEACN/C,MAAO,qDACP8C,OAAQ,qCAEZmB,eAAgB,CACZlB,KAAM,4GACN/C,MAAO,gFACP8C,OAAQ,gEAEZoB,UAAW,CACPlE,MAAO,QACP+C,KAAM,QACND,OAAQ,SAEZ1tkB,KAAM,CACF2tkB,KAAM,qBACN/C,MAAO,SACP8C,OAAQ,UAEZn8hB,OAAQ,CACJo8hB,KAAM,uCACN/C,MAAO,sBACP8C,OAAQ,sBAEZxtkB,OAAQ,CACJytkB,KAAM,6CACN/C,MAAO,sBACP8C,OAAQ,UAEZ19N,KAAM,CACF29N,KAAM,sEACN/C,MAAO,+CACP8C,OAAQ,kDAIpBruM,SAAU,uBC7ddhuQ,EADc64c,aACN,CACJ9glB,KAAM,KACN+glB,cAAe,CACX8G,GAAI,cAER7sG,SAAU,CACNhwc,SAAU,MAEdi2iB,UAAW,KACX0E,QAAS,CACLjzK,QAAS,CACL94T,QAAS,IACTl2E,MAAO,OACPZ,KAAM,IACN8ijB,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbC,uBAAwB,OACxBC,SAAU,SACVC,SAAU,SACVC,IAAK,iDACLC,cAAe,KAEnBxse,QAAS,CACLsne,SAAU,CACN,KAEJmF,UAAW,CACP,IAGRC,WAAY,CACRpF,SAAU,CACN,OAEJmF,UAAW,IAEfh3iB,QAAS,CACL6xiB,SAAU,CACN,UAEJmF,UAAW,CACP,IAGRE,SAAU,CACNrF,SAAU,CACN,UAEJmF,UAAW,CACP,GAEJ,wBAAyB,MACzB,wBAAyB,MACzB,yBAA0B,MAC1B,0BAA2B,OAE/BG,WAAY,CACRtF,SAAU,CACN,UAEJmF,UAAW,CACP,0BC/DhBp+c,EADc64c,aACN,CACJ9glB,KAAM,KACN+glB,cAAe,CACX+G,GAAI,cAER9sG,SAAU,CACNhwc,SAAU,MAEdi2iB,UAAW,KACX51iB,SAAU,CACN61iB,SAAU,CACN16kB,EAAG,UACH26kB,EAAG,iBACHtpjB,EAAG,QACHs4N,EAAG,UACHrhM,EAAG,MACHhuD,EAAG,SACHsglB,EAAG,yBACH52hB,EAAG,eACH45F,EAAG,kBACHh7G,EAAG,OACHi4iB,EAAG,UACHx/kB,EAAG,gCACHgmD,EAAG,kCAEPy5hB,gBAAiB,CACbpvkB,KAAM,WACNqvkB,KAAM,WACN5tB,OAAQ,WACR6tB,MAAO,UACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACNp7kB,EAAG,KACHysa,EAAG,MACH4uK,KAAM,WACNC,MAAO,cACPC,GAAI,OACJC,IAAK,WACLC,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,MACJC,MAAO,WACPC,OAAQ,YACRC,QAAS,cACTC,QAAS,YACT/vX,EAAG,MACHnhM,EAAG,IACHoxjB,GAAI,SACJC,GAAI,OACJC,IAAK,YACLC,IAAK,UACLC,KAAM,cACNC,KAAM,YACNC,IAAK,WACLC,IAAK,SACL9yV,EAAG,KACH+yV,GAAI,QACJC,IAAK,UACLC,IAAK,MACLC,KAAM,QACNC,MAAO,UACPC,MAAO,UACPC,OAAQ,YACR,kBAAmB,gCACnB,kBAAmB,gCACnB,mBAAoB,gCACpB,oBAAqB,gCACrB4D,KAAM,QACNvvkB,GAAI,QACJi3C,EAAG,IACH20hB,GAAI,MACJC,IAAK,UACLC,KAAM,YACNC,KAAM,MACNC,MAAO,UACPC,OAAQ,YACRC,MAAO,SACPC,OAAQ,YACRE,KAAM,QACNC,MAAO,SACP,eAAgB,oCAChB,eAAgB,oCAChB,gBAAiB,oCACjB,iBAAkB,sCAG1BC,YAAa,CACTlykB,KAAM,eACNqvkB,KAAM,YACN5tB,OAAQ,UACR6tB,MAAO,QAEX3xM,YAAa,CACT39X,KAAM,iBACNqvkB,KAAM,YACN5tB,OAAQ,UACR6tB,MAAO,WAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,KACA,KACA,KACA,KACA,UACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,SACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,UACA,KACA,MAEJ+C,KAAM,CACF,cACA,WACA,SACA,SACA,eACA,SACA,WAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,KACA,UACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,SACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,UACA,KACA,MAEJ+C,KAAM,CACF,cACA,WACA,SACA,SACA,eACA,SACA,YAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,MACA,SACA,SACA,SACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,aACA,cACA,QACA,YACA,UACA,UACA,UACA,UACA,YACA,aACA,WACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,SACA,SACA,SACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,YACA,aACA,QACA,WACA,SACA,SACA,SACA,SACA,YACA,aACA,WACA,cAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,wBACA,wBACA,wBACA,0BAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,wBACA,wBACA,wBACA,2BAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,UACVnuK,GAAI,KACJouK,KAAM,SACNrsf,GAAI,KACJssf,SAAU,UACVC,SAAU,SACVC,WAAY,SACZC,SAAU,aACVC,OAAQ,UAEZT,OAAQ,CACJG,SAAU,UACVnuK,GAAI,KACJouK,KAAM,OACNrsf,GAAI,KACJssf,SAAU,UACVC,SAAU,OACVC,WAAY,OACZC,SAAU,YACVC,OAAQ,QAEZR,KAAM,CACFE,SAAU,YACVnuK,GAAI,KACJouK,KAAM,aACNrsf,GAAI,KACJssf,SAAU,UACVC,SAAU,aACVC,WAAY,eACZC,SAAU,aACVC,OAAQ,WAGhB,cAAe,CACXV,YAAa,CACTI,SAAU,QACVnuK,GAAI,KACJouK,KAAM,OACNrsf,GAAI,KACJssf,SAAU,UACVC,SAAU,SACVC,WAAY,SACZC,SAAU,aACVC,OAAQ,OAEZT,OAAQ,CACJG,SAAU,QACVnuK,GAAI,KACJouK,KAAM,OACNrsf,GAAI,KACJssf,SAAU,UACVC,SAAU,OACVC,WAAY,OACZC,SAAU,YACVC,OAAQ,OAEZR,KAAM,CACFE,SAAU,SACVnuK,GAAI,KACJouK,KAAM,WACNrsf,GAAI,KACJssf,SAAU,UACVC,SAAU,aACVC,WAAY,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aACR,kBAAmB,iEACnB,kBAAmB,iEACnB,oBAAqB,iEACrB3rkB,GAAI,QACJi3C,EAAG,KACH20hB,GAAI,OACJC,IAAK,SACLC,KAAM,YACNsD,IAAK,QACLC,MAAO,WACPtD,KAAM,SACNC,MAAO,YACPC,OAAQ,eACRC,MAAO,UACPG,KAAM,SACNC,MAAO,UACP,eAAgB,8DAChB,eAAgB,8DAChB,iBAAkB,gEAG1BC,YAAa,CACTlykB,KAAM,gBACNqvkB,KAAM,aACN5tB,OAAQ,WACR6tB,MAAO,SAEX3xM,YAAa,CACT39X,KAAM,oBACNqvkB,KAAM,cACN5tB,OAAQ,WACR6tB,MAAO,WAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,UAEJ9C,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ+C,KAAM,CACF,uCACA,yDACA,uCACA,iCACA,mDACA,iCACA,yCAGR,cAAe,CACXF,YAAa,CACT,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,UAEJ9C,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ+C,KAAM,CACF,uCACA,yDACA,uCACA,iCACA,mDACA,iCACA,0CAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJC,KAAM,CACF,uCACA,6CACA,2BACA,iCACA,qBACA,qBACA,qBACA,uCACA,yDACA,6CACA,mDACA,qDAGR,cAAe,CACXF,YAAa,CACT,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEJC,OAAQ,CACJ,SACA,SACA,SACA,S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CJC,IAAK,UACLC,KAAM,aACNC,KAAM,QACNC,MAAO,UACPC,OAAQ,aACRC,MAAO,SACPG,KAAM,QACNC,MAAO,mBACP,eAAgB,+CAChB,eAAgB,+CAChB,gBAAiB,+CACjB,iBAAkB,iDAG1BC,YAAa,CACTlykB,KAAM,gBACNqvkB,KAAM,aACN5tB,OAAQ,WACR6tB,MAAO,SAEX3xM,YAAa,CACT39X,KAAM,2BACNqvkB,KAAM,qBACN5tB,OAAQ,oBACR6tB,MAAO,YAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,UAEJ9C,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ+C,KAAM,CACF,uCACA,yDACA,mDACA,uCACA,uCACA,mDACA,yCAGR,cAAe,CACXF,YAAa,CACT,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,UAEJ9C,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ+C,KAAM,CACF,uCACA,yDACA,mDACA,uCACA,uCACA,mDACA,0CAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,sBACA,sBACA,sBACA,4BACA,4BACA,4BACA,sBACA,4BACA,sBACA,4BACA,4BACA,6BAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJC,KAAM,CACF,iCACA,uCACA,6CACA,uCACA,uCACA,uCACA,iCACA,uCACA,6CACA,uCACA,yDACA,yCAGR,cAAe,CACXF,YAAa,CACT,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEJC,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJC,KAAM,CACF,uCACA,iCACA,mDACA,6CACA,6CACA,6CACA,uCACA,6CACA,mDACA,6CACA,mDACA,gDAIZC,SAAU,CACNpukB,OAAQ,CACJiukB,YAAa,CACT,yBACA,yBACA,yBACA,0BAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,sDACA,sDACA,sDACA,wDAGR,cAAe,CACXF,YAAa,CACT,yBACA,yBACA,yBACA,0BAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,sDACA,sDACA,sDACA,yDAIZpxK,WAAY,CACR/8Z,OAAQ,CACJiukB,YAAa,CACTI,SAAU,mDACVnuK,GAAI,eACJouK,KAAM,yDACNrsf,GAAI,eACJssf,SAAU,iCACVE,WAAY,qBACZC,SAAU,uCACVC,OAAQ,4BAEZT,OAAQ,CACJG,SAAU,uCACVnuK,GAAI,eACJouK,KAAM,SACNrsf,GAAI,eACJssf,SAAU,iCACVE,WAAY,qBACZC,SAAU,uCACVC,OAAQ,4BAEZR,KAAM,CACFE,SAAU,mDACVnuK,GAAI,eACJouK,KAAM,yDACNrsf,GAAI,eACJssf,SAAU,iCACVE,WAAY,qBACZC,SAAU,uCACVC,OAAQ,6BAGhB,cAAe,CACXV,YAAa,CACTI,SAAU,uCACVnuK,GAAI,eACJouK,KAAM,mDACNrsf,GAAI,eACJssf,SAAU,iCACVE,WAAY,2BACZC,SAAU,iCACVC,OAAQ,sBAEZT,OAAQ,CACJG,SAAU,uCACVnuK,GAAI,eACJouK,KAAM,mDACNrsf,GAAI,eACJssf,SAAU,iCACVE,WAAY,2BACZC,SAAU,iCACVC,OAAQ,sBAEZR,KAAM,CACFE,SAAU,6CACVnuK,GAAI,eACJouK,KAAM,mDACNrsf,GAAI,eACJssf,SAAU,iCACVE,WAAY,2BACZC,SAAU,iCACVC,OAAQ,wBAIpBC,KAAM,CACF5ukB,OAAQ,CACJmukB,KAAM,CACF,EAAK,iEACL,EAAK,oDACL,gBAAiB,iEACjB,gBAAiB,qDAErBF,YAAa,CACT,EAAK,+BACL,EAAK,kBACL,gBAAiB,+BACjB,gBAAiB,mBAErBC,OAAQ,CACJ,EAAK,8BACL,EAAK,iBACL,gBAAiB,+BACjB,gBAAiB,qBAI7BW,UAAW,SACXC,cAAe,MACfC,WAAY,CACRC,IAAK,CACDb,KAAM,qBACN/C,MAAO,UACP8C,OAAQ,UAEZ5tkB,KAAM,CACF6tkB,KAAM,qBACN/C,MAAO,UACP8C,OAAQ,UAEZe,QAAS,CACLd,KAAM,6CACN/C,MAAO,gBACP8C,OAAQ,gBAEZ3tkB,MAAO,CACH4tkB,KAAM,uCACN/C,MAAO,sBACP8C,OAAQ,UAEZ93J,KAAM,CACF+3J,KAAM,6CACN/C,MAAO,sBACP8C,OAAQ,UAEZgB,YAAa,CACTf,KAAM,kFACN/C,MAAO,2DACP8C,OAAQ,2CAEZ9ukB,IAAK,CACD+ukB,KAAM,2BACN/C,MAAO,UACP8C,OAAQ,UAEZiB,UAAW,CACPhB,KAAM,oDACN/C,MAAO,mCACP8C,OAAQ,qDAEZkB,QAAS,CACLjB,KAAM,0DACN/C,MAAO,yCACP8C,OAAQ,yCAEZmB,eAAgB,CACZlB,KAAM,gEACN/C,MAAO,+CACP8C,OAAQ,+CAEZoB,UAAW,CACPlE,MAAO,4BACP+C,KAAM,4BACND,OAAQ,6BAEZ1tkB,KAAM,CACF2tkB,KAAM,uCACN/C,MAAO,sBACP8C,OAAQ,sBAEZn8hB,OAAQ,CACJo8hB,KAAM,6CACN/C,MAAO,gBACP8C,OAAQ,gBAEZxtkB,OAAQ,CACJytkB,KAAM,6CACN/C,MAAO,SACP8C,OAAQ,UAEZ19N,KAAM,CACF29N,KAAM,sEACN/C,MAAO,+CACP8C,OAAQ,iCAIpBruM,SAAU,uBC5ddhuQ,EADc64c,aACN,CACJ9glB,KAAM,KACN+glB,cAAe,CACXmH,GAAI,cAERltG,SAAU,CACNhwc,SAAU,MAEdi2iB,UAAW,KACX0E,QAAS,CACLjzK,QAAS,CACL94T,QAAS,IACTl2E,MAAO,OACPZ,KAAM,IACN8ijB,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,SACbC,uBAAwB,OACxBC,SAAU,SACVC,SAAU,SACVC,IAAK,MACLC,cAAe,KAEnBxse,QAAS,CACLsne,SAAU,CACN,KAEJmF,UAAW,CACP,IAGRC,WAAY,CACRpF,SAAU,CACN,OAEJmF,UAAW,IAEfh3iB,QAAS,CACL6xiB,SAAU,CACN,MAEJmF,UAAW,CACP,IAGRE,SAAU,CACNrF,SAAU,CACN,UAEJmF,UAAW,CACP,GAEJ,wBAAyB,MACzB,wBAAyB,MACzB,yBAA0B,MAC1B,0BAA2B,OAE/BG,WAAY,CACRtF,SAAU,CACN,UAEJmF,UAAW,CACP,sCCLT,kBACP,uBAAoCv8Y,cAG7B,kBACP,oNChDA,IAAI8/K,EAAc,UAASA,GAAN,MAOjB9uX,cAIIE,KAAKgH,QAAU,IAAI0D,IAAgB,CAAEg6T,SAAKv/T,IAO9C4qU,OAAOrL,IACH1kU,KAAKgH,QAAQqE,KAAK,CAAEq5T,SAQxB7lT,IAAIhM,OAIR+7W,UAAexoD,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAKwgV,KAC5EA,GAAehkD,WAAsBnH,MAA0B,CAAEp4S,MAAOujW,GAAgBt2W,QAAS,SAAU81B,IAAK,OAAOwgV,GAAexoD,UAAKh4R,OAhChHwgV,IAAT,GAwCZ1jD,SAAN,SACQq1D,eACA,OAAO,EAEXx5X,YAAYC,IACRhH,KAAK04C,SAAS1xC,IACVnB,OAAOrC,KAAKwD,IAAS+8C,KAAK8G,KAAU7jD,GAAQ6jD,IAAO29V,kBACnDxoZ,KAAK24T,QAAQquE,gBAGrB3hY,WACIrF,KAAKkhD,aAAelhD,KAAK24T,QAAQ3xT,QAAQwF,QAAKF,KAAK,IAAI5G,UAAU,IAAM1F,KAAK04C,SAAS14C,OAEzF04C,SAAS1xC,IACQnB,OAAOrC,KAAKwD,IACpBJ,QAAQiM,IAAO7S,KAAK24T,QAAQjgR,SAAS7lC,GAAK7S,KAAK6S,IAAM7S,KAAKugY,WAEnE55X,cACQ3G,KAAKkhD,cACLlhD,KAAKkhD,aAAap6C,eAI9BokU,UAAkB9E,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK88R,KAClFA,GAAkBC,UAAqB1H,MAAyB,CAAE37T,KAAMojU,GAAmB/+S,SAAU,CAACs3S,SAxBhGyH,OAmCN,MAAMyhH,GAAM,IAAI9iH,MAAe,gCAQzB9C,GAAc,IAAI8C,MAAe,2BAOvC,IAAI/C,GAAmB,UAASA,GAAN,MACtBhnU,YAAY4zC,GAAQisZ,GAAgBksC,IAChC7re,KAAK0zC,OAASA,GACd1zC,KAAK2/b,eAAiBA,GACtB3/b,KAAK6re,KAAOA,GACZ7re,KAAKgH,QAAU,IAAI0D,IAAgB,CAAEg6T,IAAK1kU,KAAK6re,OAC/C7re,KAAKmtlB,WAAa,GACdxtJ,KACA3/b,KAAKkhD,aAAey+Y,GAAe34b,QAC9BwF,MAAK7G,OAAI,EAAG++T,eAAkBv/T,IAARu/T,GAAoBA,GAAM1kU,KAAK6re,SAAOj7a,KAAI8zQ,IAAO1kU,KAAK6re,KAAOnnK,KACnFh/T,UAAUg/T,KACX1kU,KAAKmtlB,WAAa,GAClBntlB,KAAKgH,QAAQqE,KAAK,CAAEq5T,YAI5BA,UACA,OAAO1kU,KAAK6re,KAEhBlle,cACQ3G,KAAKkhD,cACLlhD,KAAKkhD,aAAap6C,cAG1B+X,IAAIghb,IACA,MAAMhtb,GAAM7S,KAAK6S,IAAIgtb,IACrB,OAAO7/b,KAAKmtlB,WAAWt6kB,IAE3B6lC,SAASmnZ,GAAUl8b,GAAO48X,IAAW,GACjC,MAAM1tX,GAAM7S,KAAK6S,IAAIgtb,IACrB,IAAIrob,GAAU7T,GACd,IAAK48X,GAAU,CACX,GAAIvgY,KAAKmtlB,WAAW9gjB,eAAex5B,IAC/B,OAEJ2E,GAAUxX,KAAKmsC,aAAat5B,GAAKlP,IAErC3D,KAAKmtlB,WAAWt6kB,IAAO2E,GAE3BwvX,gBACIhnY,KAAKgH,QAAQqE,KAAK,CAAEq5T,IAAK1kU,KAAK0kU,MAElC7xT,IAAIgtb,IACA,OAAO7/b,KAAK0zC,OAAS,IAAMmsZ,GAE/B1zZ,aAAat5B,GAAKlP,IACd,IAAK3D,KAAK2/b,eACN,OAAOh8b,GAEX,MAAM84C,GAAMz8C,KAAK2/b,eAAe9gb,IAAIhM,IACpC,YAAgB1N,IAARs3C,GAAqB94C,GAAQ84C,KAG7CqqR,UAAoBV,UAAO,SAAqCh4R,IAAK,OAAO,IAAKA,IAAK04R,IAAqBrD,MAAgBsD,IAActD,MAAgBmrD,EAAgB,GAAInrD,MAAgBkpH,GAAK,KAClM7lH,GAAoB8D,WAAsBnH,MAA0B,CAAEp4S,MAAOy7S,GAAqBxuT,QAAS,SAAU81B,IAAK,OAAO04R,GAAoBV,UAAKh4R,OAC1J04R,GD7GO,wBACP,6FACA,uGACA,uBAA6C3lK,MAAQA,qEACrD,oDCyGsB3yH,CAAW,CAAEq8R,EAAQ,GAAGC,SAAO/D,KACjD8D,EAAQ,KAAGE,UACXF,EAAQ,GAAGE,YAAaF,EAAQ,KAAGC,OAAO6hH,KAC1C7kH,EAAW,oBAAqB,CAAC90S,OAAQ47V,EAAgB5mD,WAC1DlB,IA3D6BA,IAAT,kCCtDhB,uBACP,6FACA,sGACA,sBAA6CsmR,MAAQA,oEACrD,oDAGO,iBACP,uBAAoC5vI,aAG7B,iBACP,8dCtCA,MAAMj6I,GAAM,CAAC,UACP0tD,GAAM,CAAC,kBACb,YAA+CztD,EAAI/3T,IAEjD,GAFiE,EAAL+3T,GAC1DC,MAAiB,EAAG,OAAQ,GACrB,EAALD,EAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,UAAWt+R,GAAOkojB,cAExC,YAA8C7pR,EAAI/3T,IAEhD,GAFgE,EAAL+3T,GACzDC,MAAiB,EAAG,MAAO,GACpB,EAALD,EAAQ,CACV,MAAM/+J,GAASg/J,QACfA,MAAkB,MAAOh/J,GAAOz2F,SAAUy1P,QAE9C,YAAuDD,EAAI/3T,IAMzD,GANyE,EAAL+3T,IAClEC,MAA+B,GAC/BA,MAAsB,EAAG,OAAQ,GACjCA,MAAc,GACdA,QACAA,SACO,EAALD,EAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAiB,GACjBA,MAAyB3/T,GAAO8oD,QAEpC,YAAwD42Q,EAAI/3T,KAC5D,YAA0C+3T,EAAI/3T,IAE5C,GAF4D,EAAL+3T,GACrDC,MAAkB,EAAG6pR,GAAgD,EAAG,EAAG,cAAe,GACnF,EAAL9pR,EAAQ,CACV,MAAMp+R,GAASq+R,QACfA,MAAkB,mBAAoBr+R,GAAOq1d,gBAEjD,MAAMvpI,GAAM,SAAUC,EAAIC,IAAM,MAAO,CAAE,2CAA4CD,EAAI,2CAA4CC,KACrI,YAA+C5tD,EAAI/3T,IAEjD,GAFiE,EAAL+3T,GAC1DC,MAAiB,EAAG,OAAQ,IACrB,EAALD,EAAQ,CACV,MAAMz/T,GAAS0/T,QACfA,MAAkB,UAAWA,MAAuB,EAAGytD,GAAKntX,GAAO4rU,UAAW5rU,GAAO4rU,YAEzF,YAAoDnM,EAAI/3T,IAItD,GAJsE,EAAL+3T,IAC/DC,MAAsB,EAAG,MAAO,IAChCA,MAAoB,GACpBA,SACO,EAALD,EAAQ,CACV,MAAM73T,GAAS83T,MAAqB,GACpCA,MAAmB,WAAY93T,GAAO4hlB,gBAAtC9pR,CAAuD,SAAU93T,GAAO6hlB,gBAE5E,YAAkEhqR,EAAI/3T,KACtE,MAAMu4T,GAAM,SAAUmtD,EAAIC,GAAI4gC,GAAIiD,GAAIC,GAAIC,IAAM,MAAO,CAAEvoW,MAAOukU,EAAIjsX,GAAIksX,GAAIthX,KAAMkiZ,GAAIhkV,SAAUinV,GAAI5sZ,SAAU6sZ,GAAIt2Y,QAASu2Y,KACrHpjC,GAAM,SAAUZ,GAAM,MAAO,CAAEE,UAAWF,IAChD,YAAoD3tD,EAAI/3T,IAItD,GAJsE,EAAL+3T,IAC/DC,MAAsB,EAAG,MAAO,IAChCA,MAAkB,EAAGgqR,GAA0D,EAAG,EAAG,cAAe,IACpGhqR,SACO,EAALD,EAAQ,CACV,MAAMtyT,GAAUuyT,MAAqB,GACrCA,MAAmB,WAAYvyT,GAAQq8kB,gBAAvC9pR,CAAwD,SAAUvyT,GAAQs8kB,eAC1E/pR,MAAiB,GACjBA,MAAkB,mBAAoBvyT,GAAQu7a,gBAAgBvlb,MAAM2/T,YAApEpD,CAAiF,0BAA2BA,MAAuB,GAAIsuD,GAAKtuD,MAAuB,EAAGO,GAAK9yT,GAAQ07C,MAAO17C,GAAQhM,GAAIgM,GAAQpB,KAAMoB,GAAQ88D,SAAU98D,GAAQ7I,SAAU6I,GAAQ0N,YAEpQ,YAAyF4kT,EAAI/3T,IAE3F,GAF2G,EAAL+3T,GACpGC,MAAiB,EAAG,sBAAuB,IACpC,EAALD,EAAQ,CACV,MAAMkqR,GAAWjqR,QAAuB4tD,UAClCpiX,GAAUw0T,MAAqB,GACrCA,MAAkB,QAASiqR,GAAS9giB,MAApC62Q,CAA2C,KAAMiqR,GAASxolB,GAA1Du+T,CAA8D,OAAQiqR,GAAS59kB,KAA/E2zT,CAAqF,YAAaiqR,GAASt/gB,UAA3Gq1P,CAAsH,WAAYiqR,GAAS1/gB,SAA3Iy1P,CAAqJ,aAAciqR,GAAS3/iB,SAA5K01R,CAAsL,aAAciqR,GAAS/9Q,SAA7MlM,CAAuN,aAAciqR,GAASrllB,SAA9Oo7T,CAAwP,WAAYx0T,GAAQijD,SAA5QuxQ,CAAsR,QAASiqR,GAASlvhB,SAAxSilQ,CAAkT,UAAWiqR,GAAS9ukB,UAE1U,YAAmE4kT,EAAI/3T,IAIrE,GAJqF,EAAL+3T,IAC9EC,MAA+B,GAC/BA,MAAkB,EAAGkqR,GAAiF,EAAG,GAAI,sBAAuB,IACpIlqR,SACO,EAALD,EAAQ,CACV,MAAMkqR,GAAWjilB,GAAI4lX,UACrB5tD,MAAiB,GACjBA,MAAkB,QAASiqR,GAASrvhB,SAExC,YAAoDmlQ,EAAI/3T,IAItD,GAJsE,EAAL+3T,IAC/DC,MAAsB,EAAG,MAAO,IAChCA,MAAkB,EAAGmqR,GAA2D,EAAG,EAAG,eAAgB,IACtGnqR,SACO,EAALD,EAAQ,CACV,MAAM53T,GAAU63T,MAAqB,GACrCA,MAAmB,WAAY73T,GAAQ2hlB,gBAAvC9pR,CAAwD,SAAU73T,GAAQ4hlB,eAC1E/pR,MAAiB,GACjBA,MAAkB,UAAW73T,GAAQ4mD,QAEzC,YAAkEgxQ,EAAI/3T,KACtE,YAAkE+3T,EAAI/3T,IAEpE,GAFoF,EAAL+3T,GAC7EC,MAAc,GACP,EAALD,EAAQ,CACV,MAAM0O,GAAUzO,MAAqB,GACrCA,MAAyByO,GAAQtzT,UAErC,YAAoD4kT,EAAI/3T,IAKtD,GALsE,EAAL+3T,IAC/DC,MAAsB,EAAG,MAAO,IAChCA,MAAkB,EAAGoqR,GAA0D,EAAG,EAAG,cAAe,IACpGpqR,MAAkB,EAAGqqR,GAA0D,EAAG,EAAG,cAAe,IACpGrqR,SACO,EAALD,EAAQ,CACV,MAAM10T,GAAU20T,MAAqB,GACrCA,MAAmB,WAAY30T,GAAQy+kB,gBAAvC9pR,CAAwD,SAAU30T,GAAQ0+kB,eAC1E/pR,MAAiB,GACjBA,MAAkB,mBAAoB30T,GAAQojD,SAA9CuxQ,CAAwD,0BAA2BA,MAAuB,GAAIsuD,GAAKtuD,MAAuB,EAAGO,GAAKl1T,GAAQ89C,MAAO99C,GAAQ5J,GAAI4J,GAAQgB,KAAMhB,GAAQk/D,SAAUl/D,GAAQzG,SAAUyG,GAAQ8P,WACvO6kT,MAAiB,GACjBA,MAAkB,QAAS30T,GAAQojD,WAEvC,YAA8CsxQ,EAAI/3T,IAOhD,GAPgE,EAAL+3T,IACzDC,MAAsB,EAAG,MAAO,KAAM,IACtCA,MAAkB,EAAGsqR,GAA4C,EAAG,EAAG,MAAO,IAC9EtqR,MAAkB,EAAGuqR,GAA4C,EAAG,GAAI,MAAO,IAC/EvqR,MAAkB,EAAGwqR,GAA4C,EAAG,EAAG,MAAO,IAC9ExqR,MAAkB,EAAGyqR,GAA4C,EAAG,GAAI,MAAO,IAC/EzqR,SACO,EAALD,EAAQ,CACV,MAAM93T,GAAS+3T,QACfA,MAAkB,UAAW/3T,GAAOxB,OACpCu5T,MAAmB,OAAQ,QAA3BA,CAAoC,eAAgB/3T,GAAOrD,WAAaqD,GAAOikU,UAC/ElM,MAAiB,GACjBA,MAAkB,OAAQ/3T,GAAOyilB,iBAAmC,MAAhBzilB,GAAO8mD,OAAuB9mD,GAAO8mD,MAAMzsD,SAC/F09T,MAAiB,GACjBA,MAAkB,OAAQ/3T,GAAO0ilB,aAAe1ilB,GAAOkT,SACvD6kT,MAAiB,GACjBA,MAAkB,OAAQ/3T,GAAOm9iB,UACjCplP,MAAiB,GACjBA,MAAkB,OAAQ/3T,GAAOkT,UAErC,MAAMozW,GAAM,CAAC,CAAC,CAAC,yBACTC,GAAM,CAAC,uBACb,YAAiDzuD,EAAI/3T,IAAgB,EAAL+3T,GAC5DC,MAAoB,EAAG,EAAG,CAAC,QAAS,gCAExC,YAAuFD,EAAI/3T,IAEzF,GAFyG,EAAL+3T,GAClGC,MAAiB,EAAG,sBAAuB,GACpC,EAALD,EAAQ,CACV,MAAM6qR,GAAU5qR,QAAuB4tD,UACjCjsV,GAASq+R,MAAqB,GACpCA,MAAkB,QAAS4qR,GAAQzhiB,MAAnC62Q,CAA0C,KAAM4qR,GAAQnplB,GAAxDu+T,CAA4D,OAAQ4qR,GAAQv+kB,KAA5E2zT,CAAkF,YAAa4qR,GAAQjghB,UAAvGq1P,CAAkH,WAAY4qR,GAAQrghB,SAAtIy1P,CAAgJ,aAAc4qR,GAAQtgjB,SAAtK01R,CAAgL,aAAc4qR,GAAQ1+Q,SAAtMlM,CAAgN,aAAc4qR,GAAQhmlB,SAAtOo7T,CAAgP,WAAYr+R,GAAOyhS,YAAnQpD,CAAgR,QAAS4qR,GAAQ7vhB,SAAjSilQ,CAA2S,UAAW4qR,GAAQzvkB,UAElU,YAAiE4kT,EAAI/3T,IAInE,GAJmF,EAAL+3T,IAC5EC,MAA+B,GAC/BA,MAAkB,EAAG6qR,GAA+E,EAAG,GAAI,sBAAuB,GAClI7qR,SACO,EAALD,EAAQ,CACV,MAAM6qR,GAAU5ilB,GAAI4lX,UACpB5tD,MAAiB,GACjBA,MAAkB,QAAS4qR,GAAQhwhB,SAEvC,YAAkDmlQ,EAAI/3T,IAEpD,GAFoE,EAAL+3T,GAC7DC,MAAkB,EAAG8qR,GAAyD,EAAG,EAAG,eAAgB,GAC7F,EAAL/qR,EAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,UAAWt+R,GAAOqtB,QAExC,YAAuDgxQ,EAAI/3T,IAAgB,EAAL+3T,IAClEC,MAA+B,GAC/BA,MAAoB,GACpBA,SAEJ,YAA8CD,EAAI/3T,IAAgB,EAAL+3T,GACzDC,MAAiB,EAAG,MAAO,GAE/B,MAAMyuD,GAAM,CAAC,KACb,YAAwE1uD,EAAI/3T,IAE1E,GAF0F,EAAL+3T,GACnFC,MAAiB,EAAG,qBAAsB,GACnC,EAALD,EAAQ,CACV,MAAMouD,GAAWnuD,QAAuB7/S,MAClCwhB,GAASq+R,QACfA,MAAkB,QAASmuD,GAA3BnuD,CAAqC,cAAer+R,GAAOujD,cAE/D,YAAmD66O,EAAI/3T,IAIrD,GAJqE,EAAL+3T,IAC9DC,MAA+B,GAC/BA,MAAkB,EAAG+qR,GAAgE,EAAG,EAAG,qBAAsB,GACjH/qR,SACO,EAALD,EAAQ,CACV,MAAMirR,GAAUhjlB,GAAI6rH,KACpBmsM,MAAiB,GACjBA,MAAkB,QAASgrR,KAE/B,MAAMhgJ,GAAM,CAAC,CAAC,CAAC,yBACT2B,GAAM,CAAC,uBACP79E,GAAO,CAAC,gCAAiC,IACzCC,GAAO,CAAC,WACR69E,GAAO,CAAC,oBACRC,GAAO,CAAC,oBACRgqH,GAAO,CAAC,sBACd,YAAkE92P,EAAI/3T,IAAgB,EAAL+3T,GAC7EC,MAA0B,GAE9B,YAAkED,EAAI/3T,IAAgB,EAAL+3T,GAC7EC,MAA0B,GAE9B,YAAmDD,EAAI/3T,IAKrD,GALqE,EAAL+3T,IAC9DC,MAA+B,GAC/BA,MAAkB,EAAGirR,GAA0D,EAAG,EAAG,eAAgB,GACrGjrR,MAAkB,EAAGkrR,GAA0D,EAAG,EAAG,eAAgB,GACrGlrR,SACO,EAALD,EAAQ,CACVC,QACA,MAAMu0M,GAAMv0M,MAAmB,GACzByvF,GAAMzvF,MAAmB,GAC/BA,MAAiB,GACjBA,MAAkB,mBAAoBu0M,IACtCv0M,MAAiB,GACjBA,MAAkB,mBAAoByvF,KAE1C,YAAkE1vF,EAAI/3T,IAAgB,EAAL+3T,GAC7EC,MAA0B,GAE9B,YAAkED,EAAI/3T,IAAgB,EAAL+3T,GAC7EC,MAA0B,GAE9B,YAAmDD,EAAI/3T,IAKrD,GALqE,EAAL+3T,IAC9DC,MAA+B,GAC/BA,MAAkB,EAAGmrR,GAA0D,EAAG,EAAG,eAAgB,GACrGnrR,MAAkB,EAAGorR,GAA0D,EAAG,EAAG,eAAgB,GACrGprR,SACO,EAALD,EAAQ,CACVC,QACA,MAAMyvF,GAAMzvF,MAAmB,GACzBu0M,GAAMv0M,MAAmB,GAC/BA,MAAiB,GACjBA,MAAkB,mBAAoByvF,IACtCzvF,MAAiB,GACjBA,MAAkB,mBAAoBu0M,KAE1C,YAAyDx0M,EAAI/3T,IAAgB,EAAL+3T,GACpEC,MAAiB,EAAG,OAAQ,GAAI,IACzB,EAALD,GACFC,MAAkB,QAAQ,GAE9B,YAAsED,EAAI/3T,IAAO,GAAS,EAAL+3T,EAAQ,CACzF,MAAMsrR,GAAOrrR,QACbA,MAAsB,EAAG,KAAM,GAAI,IACnCA,MAAkB,QAAS,SAA0F97T,IAAU87T,MAAqBqrR,IAAO,MAAMC,GAAQtrR,QAAuB7/S,MAAgD,OAAO27B,EAAhCkkR,IAAqB,GAAmBurR,WAAWrnlB,GAAQonlB,MAClRtrR,QACF,GAAS,EAALD,EAAQ,CACV,MAAM90R,GAAU+0R,QACVwrR,GAAUvgjB,GAAQ2iV,UAClB09N,GAAQrgjB,GAAQ9qB,MAChB3f,GAAUw/T,MAAqB,GACrCA,MAAkB,UAAWwrR,GAAQrliB,SAArC65Q,CAA+C,UAAWwrR,GAAQ3lR,SAAlE7F,CAA4E,MAAOwrR,GAAnFxrR,CAA4F,QAASsrR,GAArGtrR,CAA4G,mBAAoBx/T,GAAQghU,SAAxIxB,CAAkJ,oBAAqBx/T,GAAQirlB,UAA/KzrR,CAA0L,KAAM,kBAAoBsrR,IACpNtrR,MAAmB,gBAAiB,uBAAyBsrR,KAEjE,YAAiEvrR,EAAI/3T,IAInE,GAJmF,EAAL+3T,IAC5EC,MAA+B,GAC/BA,MAAkB,EAAG0rR,GAA8D,EAAG,EAAG,KAAM,IAC/F1rR,SACO,EAALD,EAAQ,CACV,MAAMyrR,GAAUxjlB,GAAI4lX,UACpB5tD,MAAiB,GACjBA,MAAkB,QAASwrR,GAAQjyT,SAEvC,YAAyDwmC,EAAI/3T,IAAgB,EAAL+3T,GACpEC,MAAiB,EAAG,OAAQ,GAAI,IACzB,EAALD,GACFC,MAAkB,QAAQ,GAE9B,YAAkDD,EAAI/3T,IAQpD,GARoE,EAAL+3T,IAC7DC,MAAsB,EAAG,MAAO,GAChCA,MAAkB,EAAG2rR,GAAiD,EAAG,EAAG,OAAQ,GACpF3rR,MAAsB,EAAG,KAAM,EAAG,GAClCA,MAAkB,EAAG4rR,GAAyD,EAAG,EAAG,eAAgB,IACpG5rR,QACAA,MAAkB,EAAG6rR,GAAiD,EAAG,EAAG,OAAQ,GACpF7rR,SACO,EAALD,EAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAkB,UAAW3/T,GAAOyrlB,mBACpC9rR,MAAiB,GACjBA,MAAkB,OAAQ3/T,GAAO0rlB,kBACjC/rR,MAAiB,GACjBA,MAAmB,kBAAmB3/T,GAAO2rlB,qBAC7ChsR,MAAiB,GACjBA,MAAkB,UAAW3/T,GAAOsD,MACpCq8T,MAAiB,GACjBA,MAAkB,OAAQ3/T,GAAO0rlB,mBAErC,YAAoFhsR,EAAI/3T,KACxF,YAAsE+3T,EAAI/3T,IAIxE,GAJwF,EAAL+3T,IACjFC,MAAsB,EAAG,MAAO,IAChCA,MAAkB,EAAGisR,GAA4E,EAAG,EAAG,cAAe,IACtHjsR,SACO,EAALD,EAAQ,CACV,MAAM3hE,GAAU4hE,QACVksR,GAAU9tV,GAAQwvH,UAClBu+N,GAAQ/tV,GAAQj+O,MAChByrT,GAAU5L,MAAqB,GACrCA,MAAkB,SAAUksR,GAAQ5hjB,UAAYshS,GAAQ7kU,QAAU,SAAW,WAA7Ei5T,CAAyF,WAAY4L,GAAQwgR,gBAAkBF,GAAQ5hjB,SAAW,2BAA6B,YAA/K01R,CAA4L,WAAY,EAAxMA,CAA2M,KAAM,uBAAyBmsR,IAC1OnsR,MAAmB,eAAgBksR,GAAQ5hjB,SAA3C01R,CAAqD,gBAAiBksR,GAAQ5hjB,SAA9E01R,CAAwF,kBAAmB,kBAAoBmsR,GAA/HnsR,CAAsI,gBAAiBksR,GAAQtnlB,UAC/Jo7T,MAAiB,GACjBA,MAAkB,mBAA0C,MAAtBksR,GAAQG,WAAqB,KAAOH,GAAQG,WAAWjpR,cAEjG,YAAgErD,EAAI/3T,IAElE,GAFkF,EAAL+3T,GAC3EC,MAAkB,EAAGssR,GAA8D,EAAG,EAAG,MAAO,IACzF,EAALvsR,EAAQ,CACV,MAAMmsR,GAAUlklB,GAAI4lX,UACdj/C,GAAU3O,MAAqB,GACrCA,MAAkB,QAASksR,GAAQ3yT,SAAW2yT,GAAQ5hjB,UAAYqkS,GAAQy9Q,kBAE9E,YAAkDrsR,EAAI/3T,IAEpD,GAFoE,EAAL+3T,GAC7DC,MAAkB,EAAGusR,GAAwD,EAAG,EAAG,cAAe,IAC3F,EAALxsR,EAAQ,CACV,MAAMz/T,GAAS0/T,QACfA,MAAkB,UAAW1/T,GAAOqD,OAExC,YAA0Do8T,EAAI/3T,IAAO,GAAS,EAAL+3T,EAAQ,CAC7E,MAAMysR,GAAOxsR,QACbA,MAAsB,EAAG,sBAAuB,IAChDA,MAAkB,SAAU,WAAoGA,aAAqBwsR,IAAuBxsR,QAAuCtiR,aACnNsiR,SA2ZJ,MAAM+2P,GAAO,CAAC,mBAAoB,IAClC,YAAsCh3P,EAAI/3T,IAIxC,GAJwD,EAAL+3T,IACjDC,MAAsB,EAAG,OAAQ,GACjCA,MAAc,GACdA,SACO,EAALD,EAAQ,CACV,MAAME,GAASD,QACfA,MAAiB,GACjBA,MAAyBC,GAAO52R,IAAI8f,QAExC,YAAoD42Q,EAAI/3T,KACxD,YAAsC+3T,EAAI/3T,IAIxC,GAJwD,EAAL+3T,IACjDC,MAAsB,EAAG,OAAQ,GACjCA,MAAkB,EAAGysR,GAA4C,EAAG,EAAG,cAAe,GACtFzsR,SACO,EAALD,EAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAiB,GACjBA,MAAkB,mBAA2C,MAAvBt+R,GAAO2H,IAAIqjjB,SAAmB,KAAOhrjB,GAAO2H,IAAIqjjB,SAAStpR,cAEnG,YAAsCrD,EAAI/3T,IAAO,GAAS,EAAL+3T,EAAQ,CACzD,MAAMkxF,GAAMjxF,QACZA,MAAsB,EAAG,OAAQ,GACjCA,MAAkB,QAAS,WAAgEA,MAAqBixF,IAAM,MAAMtvX,GAASq+R,QAAwB,OAAOr+R,GAAOgrjB,SAAShrjB,GAAOxhB,SAC3L6/S,MAAiB,EAAG,OAAQ,GAC5BA,QACF,GAAS,EAALD,EAAQ,CACV,MAAM/+J,GAASg/J,QACfA,MAAkB,QAASh/J,GAAOs/J,kBAClCN,MAAmB,aAAch/J,GAAOs/J,kBACxCN,MAAiB,GACjBA,MAAkB,UAAWh/J,GAAO4rb,qBAExC,MAAMpsR,GAAkB,CACpBj/T,KAAM,iCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAOtB,IAAImO,GAAkB,MACrB,OAAUA,EAoBRA,KAAuBA,GAAqB,KAfxBA,EAAmB+9Q,OAAY,GAAK,SAKvD/9Q,EAAmBA,EAAmBg+Q,KAAU,GAAK,OAKrDh+Q,EAAmBA,EAAmBi+Q,SAAc,GAAK,WAIzDj+Q,EAAmBA,EAAmBk+Q,QAAa,GAAK,UApBxDl+Q,GACH,IAAUA,GADW,GA0BtB,IAAIm+Q,GAAiB,EAIjBC,GAAe,UAASA,EAAN,MAClB7wlB,cACIE,KAAK4wlB,aAAe,IAAIp2jB,IACxBx6B,KAAK6wlB,kBAAoB,IAAInmlB,MAAgB,GAC7C1K,KAAK8wlB,YAAc,IAAIt2jB,IACvBx6B,KAAK+wlB,QAAU/wlB,KAAK4wlB,aAAa7ma,eACjC/pL,KAAKgxlB,UAAYhxlB,KAAK8wlB,YAAY/ma,eAClC/pL,KAAKixlB,aAAejxlB,KAAK6wlB,kBAAkB9ma,eAC3C/pL,KAAKkxlB,KAAOR,KAEhBS,cAAcnyJ,IACVh/b,KAAK6wlB,kBAAkBxllB,KAAK2zb,IAEhC3pH,SAAS1nU,IACL3N,KAAK8wlB,YAAYzllB,KAAKsC,IAE1B65C,UACIxnD,KAAK4wlB,aAAavllB,MAAK,GAE3Bq8C,SACI1nD,KAAK4wlB,aAAavllB,MAAK,KAG/BsllB,SAAgBvqR,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAKuijB,IAC9EA,EAAgB/lR,WAAsBnH,MAA0B,CAAEp4S,MAAOslkB,EAAiBr4kB,QAAS,SAAU81B,IAAK,OAAOuijB,EAAgBvqR,UAAKh4R,OAC9IuijB,EAAkBnijB,EAAW,CAAEs5R,EAAW,oBAAqB,KAC5D6oR,GA1ByBA,GAAT,GAgCfS,GAAwB,UAASA,EAAN,MAC3BtxlB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BuqR,SAAyBhrR,UAAO,SAA0Ch4R,IAAK,OAAO,IAAKA,IAAKgjjB,GAA0B3tR,MAAyBA,SACnJ2tR,EAAyBjmR,UAAqB1H,MAAyB,CAAE37T,KAAMsplB,EAA0BvtlB,UAAW,CAAC,CAAC,GAAI,uBAAwB,OAClJutlB,EAA2B5ijB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACC,SACtEqpR,GARkCA,GAAT,GAoCxBC,GAA0B,UAASA,EAAN,MAC7BvxlB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BwqR,SAA2BjrR,UAAO,SAA4Ch4R,IAAK,OAAO,IAAKA,IAAKijjB,GAA4B5tR,MAAyBA,MAAoB,KAC7K4tR,EAA2BlmR,UAAqB1H,MAAyB,CAAE37T,KAAMuplB,EAA4BxtlB,UAAW,CAAC,CAAC,GAAI,yBAA0B,OACxJwtlB,EAA6B7ijB,EAAW,CAAEq8R,EAAQ,KAAGE,UACjDjD,EAAW,oBAAqB,CAACC,SAClCspR,GAToCA,GAAT,GAW1Bj3C,GAAS,EACb,MAAMk3C,GAAsBx+kB,GACjBA,EAAKnN,IAAKqN,KACRA,GAAK9N,KACN8N,GAAK9N,GAAM,WAAUk1iB,MAErBpniB,GAAKwrD,WACLxrD,GAAKwrD,SAAW8yhB,GAAmBt+kB,GAAKwrD,WAErCxrD,KAGf,IAAIu+kB,GAAO,CACPD,uBAKJ,MAAM36N,GAAahzX,GAAoB,MAAVA,EAIvB6tlB,GAAuBr8N,GAAWA,IAAYpxP,gBAAkBoxP,IAAYpxP,gBAI5E0td,GAAqBt8N,GAAWA,IAAYpxP,cAAgBoxP,IAAYpxP,eAQxE4kZ,GAAkBxzJ,GAAWA,IAAYpxP,aAAeoxP,IAAYpxP,eACtEoxP,IAAYpxP,WAAaoxP,IAAYpxP,SAEnCk8T,GAAiB,sDAKjBO,GAAe9rb,IACjB,GAAIA,EAAQogX,QAAS,CACjB,MAAMA,GAAUpgX,EAAQogX,QAAQz5V,cAC1Bq4V,GAAWh/W,EAAQozC,aAAa,YAChC4piB,GAAuB,OAAbh+N,GAChB,IAAIitE,GAAyB,OAAbjtE,KAAsBg+N,GACtC,OAAIzxJ,GAAezkB,KAAK1mD,MACpB6rE,IAAajsb,EAAQrM,WAAaqplB,IAE/B/wJ,GAEX,OAAO,GAKLykH,GAAW,CAAC1wiB,EAAS0oC,KAAc4qR,QApBpBkuD,IAAeljW,OAAOkjW,GAAYxxV,OAAO1tB,MAAM,KAoBnBgpb,CAAYtrb,EAAQ0oC,WAAW72C,KAAMvB,IAASA,KAASo4C,KAsBxG,IAAIu0iB,GAIJ,IAAIx2C,GAAW,EAIXy2C,GAAwBD,GAA0B,MAClD7xlB,YAAYu8W,GAAQw1O,GAAcn9kB,GAASwwJ,IACvCllK,KAAKq8W,OAASA,GACdr8W,KAAK6xlB,aAAeA,GACpB7xlB,KAAK0U,QAAUA,GACf1U,KAAKklK,SAAWA,GAKhBllK,KAAKkF,GAAM,WAAUi2iB,KAIrBn7iB,KAAK8P,KAAO,GAKZ9P,KAAKouE,UAAY,GAKjBpuE,KAAKguE,SAAW,GAIhBhuE,KAAKqI,UAAW,EAIhBrI,KAAK+tC,UAAW,EAChB/tC,KAAKg/b,aAAc,EACnBh/b,KAAKmulB,eAAgB,EACrBnulB,KAAK6ojB,UAAW,EAChB7ojB,KAAKoulB,YAAa,EAClBpulB,KAAKkK,MAAQ,WACblK,KAAKizP,KAAO,WACZjzP,KAAK8xlB,eAAiB,KACtB9xlB,KAAK+xlB,YAAa,EAClB/xlB,KAAK6yU,SAAU,EACf7yU,KAAK8pd,gBAAiB,EACtB9pd,KAAKipC,cAAgB,IAAIi7Y,MAAa,QACtClkb,KAAKgylB,WAAY,EACjBhylB,KAAKipC,cAAcuf,IAAIqpiB,GAAad,QAAQrrlB,UAAUmtU,IAAW7yU,KAAKiylB,qBAAqBp/Q,MAC3F7yU,KAAKipC,cAAcuf,IAAIqpiB,GAAaZ,aAAavrlB,UAAUs5b,IAAeh/b,KAAKg/b,YAAcA,KAC7Fh/b,KAAK8pd,iBAAiBztG,IAASA,GAAOxpC,QACtC7yU,KAAKkiH,MAAQliH,KAAKq8W,OAASr8W,KAAKq8W,OAAOn6P,MAAQ,EAAI,EAKnDytN,aAAShsU,IAET3D,KAAKkK,MAAQvG,GADO3D,KAAKwK,QAAU,SAAW,yBACX,WAC9BxK,KAAKg/b,aACNh/b,KAAKkylB,8BAA8BvulB,IAEvC3D,KAAKgylB,UAAYrulB,GAEjBgsU,eACA,OAAO3vU,KAAKgylB,UAEZxnlB,cACA,OAAOxK,KAAK6xlB,aAAarnlB,QAEzB2nlB,yBACA,OAAQnylB,KAAKqI,SAEb+plB,0BACA,OAAOpylB,KAAKqI,SAEZgqlB,0BACA,OAAQrylB,KAAKqI,UAAYrI,KAAK2vU,WAAa3vU,KAAKmulB,eAAiBnulB,KAAKoulB,YAEtExzI,aACA,MAAO,cAAgB56c,KAAK6xlB,aAAaX,KAAO,SAAWlxlB,KAAKkF,GAEhEild,mBACA,OAAQnqd,KAAKmulB,eAAiBnulB,KAAKoulB,YAAepulB,KAAKqI,UAAYrI,KAAK2vU,SAAW,KAEnF2iR,mBACA,OAAQtylB,KAAKqI,UAAYrI,KAAK+tC,SAE9BypV,mBACA,QAAOx3X,KAAKqI,UAAkB,KAE9Bgtc,kBACA,OAAOr1c,KAAKq8W,QAAS,KAErBk2O,iBACA,QAAOvylB,KAAKq8W,QAAgB,KAK5Bo+I,oBACA,OAAOz6f,KAAKwylB,eAAezslB,OAAS,EAAI/F,KAAKwylB,eAAehkgB,UAAU,GAAGq4O,iBAAc1hU,EAK3Fkha,eACI,OAAOrma,KAAK0U,QAAQxG,cAAc04C,cAAgB5mD,KAAKyylB,eAAiBzylB,KAAKyylB,eAAevklB,cAAc04C,aAAe,GAE7HvhD,WACIrF,KAAK0ylB,gBAETt6N,wBACIp4X,KAAK6ojB,SAAW7ojB,KAAKwyD,OAASxyD,KAAKwyD,MAAMzlD,OAAOiG,KAASA,GAAKqrD,QAAQt4D,OAAS,EAC/E/F,KAAKmulB,cAAgBnulB,KAAK2ylB,aAAa5llB,OAAOiG,IAAQA,KAAShT,MAAM+F,OAAS,GAAK/F,KAAK6ojB,SACxF7ojB,KAAKoulB,gBAAuCjplB,IAAzBnF,KAAKysb,iBAAiCzsb,KAAKysb,gBAAgB1mb,OAAS,QAClEZ,IAAjBnF,KAAK4e,QACT5e,KAAK4ylB,wBAETx9N,qBAEQp1X,KAAK6ylB,cADL7ylB,KAAKwyD,MACgBxyD,KAAK8ylB,eAAetkgB,UAGpBxuF,KAAK2ylB,aAAa5llB,OAAOiG,IAAQA,KAAShT,MAGvE2G,cACI3G,KAAKipC,cAAcniC,cAKvBislB,eACS/ylB,KAAKqI,UACNrI,KAAK6xlB,aAAax8Q,SAASr1U,MAMnC0wU,YAAYznU,IACHu3b,GAAYv3b,GAAEP,SACf1I,KAAK+ylB,eAMT1F,kBAEA,MAAO,GADIrtlB,KAAK8P,KAAO,OAAS9P,KAAK8P,KAAO,OAE/B9P,KAAKouE,YAAY,GAMlC8iP,YACI,MAAO,CACHtyS,QAAS5e,KAAK4e,QACdvW,SAAUrI,KAAKqI,SACfsnU,SAAU3vU,KAAK2vU,SACfkD,QAAS7yU,KAAK6yU,QACd/iU,KAAM9P,KAAK8P,KACXs+D,UAAWpuE,KAAKouE,UAChBlpE,GAAIlF,KAAKkF,GACT8oE,SAAUhuE,KAAKguE,SACfjgC,SAAU/tC,KAAK+tC,SACf6e,MAAO5sD,KAAK4sD,OAMpBomiB,mBACI,IAAIC,GAAU,GACd,YAAKH,eAAelslB,QAAQoM,KACxBiglB,GAAUA,GAAQt/iB,OAAO3gC,GAAKgglB,oBAC9BC,GAAQxtlB,KAAKuN,MAEViglB,GAKXL,wBACI,MAAI1lO,UACIltX,KAAK4e,cAAqCzZ,IAAzBnF,KAAKysb,iBAAiCzsb,KAAKysb,gBAAgB1mb,OAAS,EACrF,MAAM,IAAI0Q,MAAM,4EAO5By8kB,qBAAqBvvlB,KACZ3D,KAAKwK,UAGVxK,KAAKkK,MAAQvG,IAAS3D,KAAK6xlB,aAAasB,aAAe5gR,GAAmB+9Q,OAAS,SAAW,0BAKlG4B,8BAA8BvulB,IACtB3D,KAAK6ylB,eACL7ylB,KAAK6ylB,cAAcjslB,QAAQ63D,KACnBA,GAAMkxQ,WACNlxQ,GAAMy0hB,qBAAqBvvlB,IAC3B86D,GAAMyzhB,8BAA8BvulB,OAQpD+ulB,gBACQ1ylB,KAAKkiH,OAAS,GACdliH,KAAKklK,SAAS0gK,SAAS5lU,KAAK0U,QAAQxG,cAAgB,WAAUlO,KAAKkiH,SAG3E+ve,qBAAqBp/Q,IACjB7yU,KAAK8pd,eAAiBj3I,KAG9B++Q,GAAsBxrR,UAAO,SAAuCh4R,IAAK,OAAO,IAAKA,IAAKwjjB,IAAuBnuR,MAAyBmuR,GAAuB,IAAKnuR,MAAyBktR,IAAkBltR,MAAyBA,OAAoBA,MAAyBA,SACvRmuR,GAAsBrrR,UAAqB9C,MAAyB,CAAE37T,KAAM8plB,GAAuB/tlB,UAAW,CAAC,CAAC,wBAAyB20X,eAAgB,SAA8Ch1D,GAAI/3T,GAAKgtX,IAI1M,GAJ+N,EAALj1D,KACxNC,MAAsBg1D,GAAUk5N,GAAyB,GACzDluR,MAAsBg1D,GAAU24N,GAA0B,GAC1D3tR,MAAsBg1D,GAAU44N,GAA4B,IACrD,EAAL7tR,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIknlB,aAAejoe,IACxE+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIghb,gBAAkB/hU,IAC3E+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+mlB,eAAiB9ne,MACzE87M,UAAW,SAAqChD,GAAI/3T,IAIvD,GAJuE,EAAL+3T,KAChEC,KAAmBF,GAAK,GACxBE,KAAmBwtD,GAAK,GACxBxtD,KAAmBkuR,GAAyB,IACrC,EAALnuR,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIwc,OAASyiG,GAAGxjH,OACrEu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIgnlB,eAAiB/ne,GAAGxjH,OAC7Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIqnlB,eAAiBpoe,MACzEg8M,SAAU,GAAIC,aAAc,SAA4CnD,GAAI/3T,IAAgB,EAAL+3T,KACxFC,MAAsB,KAAMh4T,GAAImvc,QAChCn3I,MAAmB,OAAQh4T,GAAIwnP,KAA/BwwE,CAAqC,QAASh4T,GAAIqmlB,eAAlDruR,CAAkE,gBAAiBh4T,GAAI0+c,aAAvF1mJ,CAAqG,gBAAiBh4T,GAAI6mlB,aAA1H7uR,CAAwI,gBAAiBh4T,GAAI+rX,cAC7J/zD,MAAmB,SAAUh4T,GAAIsmlB,WAAjCtuR,CAA6C,kBAAmBh4T,GAAI0mlB,mBAApE1uR,CAAwF,mBAAoBh4T,GAAI2mlB,oBAAhH3uR,CAAqI,mBAAoBh4T,GAAI4mlB,oBAA7J5uR,CAAkL,oBAAqBh4T,GAAI4pc,YAA3M5xI,CAAwN,kBAAmBh4T,GAAI8mlB,cAC9O3rR,OAAQ,CAAE1hU,GAAI,KAAM4K,KAAM,OAAQs+D,UAAW,YAAaJ,SAAU,WAAY3lE,SAAU,WAAY0lC,SAAU,WAAY4hS,SAAU,WAAY/iR,MAAO,QAAShuC,QAAS,UAAW4zC,MAAO,QAASN,SAAU,YAAcskU,SAAU,CAAC,qBAAsBkC,mBAAoBzG,GAAKpkL,MAAO,EAAGo5H,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,SAAU,CAAC,SAAU,IAAK,CAAC,QAAS,8BAA+B,EAAG,UAAW,EAAG,QAAS,CAAC,QAAS,+BAAgC,MAAO,GAAI,EAAG,MAAO,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,QAAS,2BAA4B,EAAG,UAAW,EAAG,QAAS,CAAC,EAAG,SAAU,uBAAwB,EAAG,WAAY,CAAC,MAAO,GAAI,EAAG,UAAW,uBAAwB,EAAG,OAAQ,CAAC,EAAG,wBAAyB,CAAC,EAAG,oBAAqB,CAAC,EAAG,SAAU,oBAAqB,EAAG,WAAY,CAAC,iBAAkB,IAAK,CAAC,QAAS,mCAAoC,EAAG,WAAY,SAAU,EAAG,QAAS,CAAC,QAAS,+BAAgC,EAAG,WAAY,SAAU,EAAG,QAAS,CAAC,EAAG,UAAW,UAAW,oBAAqB,CAAC,EAAG,YAAa,sBAAuB,CAAC,EAAG,mBAAoB,2BAA4B,CAAC,EAAG,QAAS,WAAY,CAAC,EAAG,QAAS,KAAM,OAAQ,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,QAAS,UAAW,EAAG,QAAS,CAAC,EAAG,QAAS,KAAM,OAAQ,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,QAAS,WAAY,CAAC,EAAG,SAAUh1Q,SAAU,SAAwCsxQ,GAAI/3T,IAAgB,EAAL+3T,KACn7CC,MAAuBuuD,IACvBvuD,MAAsB,EAAG,OAAQ,EAAG,GACpCA,MAAkB,QAAS,SAA8D97T,IAAU,OAAO8D,GAAIilU,YAAY/oU,MAC1H87T,MAAkB,EAAG2vR,GAAuC,EAAG,EAAG,OAAQ,GAC1E3vR,MAAkB,EAAG4vR,GAAsC,EAAG,EAAG,MAAO,GACxE5vR,MAAkB,EAAG6vR,GAA+C,EAAG,EAAG,eAAgB,GAC1F7vR,MAAkB,EAAG8vR,GAAkC,EAAG,EAAG,KAAM,GACnE9vR,MAAkB,EAAG+vR,GAAuC,EAAG,EAAG,OAAQ,GAC1E/vR,QACAA,MAAkB,EAAGgwR,GAAsC,EAAG,EAAG,MAAO,IACjE,EAALjwR,KACFC,MAAmB,UAAU,EAA7BA,CAAmC,oBAAqBh4T,GAAIpD,UAAYoD,GAAIsiC,SAA5E01R,CAAsF,kBAAmBh4T,GAAIonU,SAAWpnU,GAAIq+c,gBAC5HrmJ,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIqE,MAAQrE,GAAI2iE,WAC1Cq1P,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIuiE,UAC9By1P,MAAiB,GACjBA,MAAkB,QAASh4T,GAAIgvf,eAC/Bh3L,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIgvf,eAC9Bh3L,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAI0ilB,eAAiB1ilB,GAAI2ilB,YACnD3qR,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIuzb,cAAgBvzb,GAAIpD,UAAYoD,GAAIkkU,WAAalkU,GAAI0ilB,eAAiB1ilB,GAAI2ilB,eACvG3mR,WAAY,CAACpB,MAAaA,MAAgBA,MAAyBA,MAAgBurR,IAAwBhqR,cAAe,EAAG90T,KAAM,CAAEqyT,UAAW,EAC7Il7T,QAAQ,SAAU,IACdC,MAAM,cAAYC,MAAM,CAAEkkC,QAAS,aACnC/jC,MAAW,cAAe,IACtBH,MAAM,CAAE+mJ,SAAU,SAAU7iH,QAAS,QAAS9jC,OAAQ,OACtDC,MAAQ,OAAKL,MAAM,CAAEI,OAAQ04V,aAEjC34V,MAAW,cAAe,IACtBH,MAAM,CAAE+mJ,SAAU,SAAU3mJ,OAAQ04V,UACpCz4V,MAAQ,OAAKL,MAAM,CAAEI,OAAQ,EAAG8jC,QAAS,kBAI7DG,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B4+jB,GAAsBvxkB,UAAW,aAAS,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B4+jB,GAAsBvxkB,UAAW,UAAM,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B4+jB,GAAsBvxkB,UAAW,YAAQ,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B4+jB,GAAsBvxkB,UAAW,iBAAa,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B4+jB,GAAsBvxkB,UAAW,gBAAY,GAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B4pR,GAAsBvxkB,UAAW,gBAAY,GAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClC4pR,GAAsBvxkB,UAAW,WAAY,MAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B4pR,GAAsBvxkB,UAAW,gBAAY,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3B+rlB,GAAsBvxkB,UAAW,eAAW,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,QAC3BsjlB,GAAsBvxkB,UAAW,aAAS,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3B6pR,GAAsBvxkB,UAAW,gBAAY,GAChDmuB,EAAW,EACPq5R,SAAU,SAAU,CAAExmT,QAAQ,IAC9BymT,EAAW,cAAej5T,QAC3B+ilB,GAAsBvxkB,UAAW,cAAU,GAC9CmuB,EAAW,EACPq5R,SAAU,iBAAkB,CAAExmT,QAAQ,IACtCymT,EAAW,cAAej5T,QAC3B+ilB,GAAsBvxkB,UAAW,sBAAkB,GACtDmuB,EAAW,IACPy5R,OAAY,aACZH,EAAW,cAAe90S,SAC3B4+jB,GAAsBvxkB,UAAW,YAAQ,GAC5CmuB,EAAW,IACPy5R,OAAY,cACZH,EAAW,cAAe90S,SAC3B4+jB,GAAsBvxkB,UAAW,sBAAkB,GACtDmuB,EAAW,IACPy5R,OAAY,gBACZH,EAAW,cAAeE,UAC3B4pR,GAAsBvxkB,UAAW,kBAAc,GAClDmuB,EAAW,EACPy5R,SAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,qBAAsB,MAC1DmuB,EAAW,EACPy5R,SAAY,0BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,sBAAuB,MAC3DmuB,EAAW,EACPy5R,SAAY,0BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,sBAAuB,MAC3DmuB,EAAW,EACPy5R,SAAY,MACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,SAAU,MAC9CmuB,EAAW,IACPy5R,OAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,eAAgB,MACpDmuB,EAAW,IACPy5R,OAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,eAAgB,MACpDmuB,EAAW,EACPy5R,SAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,eAAgB,MACpDmuB,EAAW,EACPy5R,SAAY,2BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,cAAe,MACnDmuB,EAAW,IACPy5R,OAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8pR,GAAsBvxkB,UAAW,aAAc,MAClDmuB,EAAW,EACP6jW,QAAas/M,IACb7pR,EAAW,cAAe8wD,QAC3Bg5N,GAAsBvxkB,UAAW,sBAAkB,GACtDmuB,EAAW,EACPmqV,SAAgBg5N,IAChB7pR,EAAW,cAAe8wD,QAC3Bg5N,GAAsBvxkB,UAAW,oBAAgB,GACpDmuB,EAAW,EACPmqV,SAAgBy4N,GAA0B,CAAE13M,aAAa,IACzD5xE,EAAW,cAAe8wD,QAC3Bg5N,GAAsBvxkB,UAAW,uBAAmB,GACvDmuB,EAAW,EACPmqV,SAAgB04N,GAA4B,CAAE33M,aAAa,IAC3D5xE,EAAW,cAAe8wD,QAC3Bg5N,GAAsBvxkB,UAAW,sBAAkB,GACtDuxkB,GAAwBD,GAA0BnjjB,EAAW,CAAEq8R,EAAQ,KAAGk8L,UAAal8L,EAAQ,GAAGs+H,YAASt+H,EAAQ,GAAGE,YAClHjD,EAAW,oBAAqB,CAAC8pR,GAC7BjB,GACA9hlB,MACAs5T,SACLypR,IAKH,IAAI8B,GAA6B,UAASA,EAAN,MAChC5zlB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3B6sR,SAA8BttR,UAAO,SAA+Ch4R,IAAK,OAAO,IAAKA,IAAKsljB,GAA+BjwR,MAAyBA,MAAoB,KACtLiwR,EAA8BvoR,UAAqB1H,MAAyB,CAAE37T,KAAM4rlB,EAA+B7vlB,UAAW,CAAC,CAAC,GAAI,4BAA6B,OACjK6vlB,EAAgClljB,EAAW,CAAEq8R,EAAQ,KAAGE,UACpDjD,EAAW,oBAAqB,CAACC,SAClC2rR,GATuCA,GAAT,GAc7B9wX,GAAiB,UAEfA,EAAN,MACI9iO,YAAY+/C,GAAYgyiB,GAAc5+N,IAClCjzX,KAAKizX,aAAeA,GAWpBjzX,KAAKmzlB,WAAa5gR,GAAmBk+Q,QAIrCzwlB,KAAKq9D,YAAa,EAIlBr9D,KAAKwK,SAAU,EAKfxK,KAAKuK,OAAS,QAMdvK,KAAKyqE,YAAc,IAAI7lE,MACvB5E,KAAK0zX,SAAW,EAChB1zX,KAAKizP,KAAO,OACZjzP,KAAKipc,WAAY,EACjBjpc,KAAK69c,iBAAmB,GACxB79c,KAAK2zlB,YAAa,EAClB3zlB,KAAK6yU,SAAU,EACf7yU,KAAK4zlB,kBAAmB,EACxB5zlB,KAAK6zlB,qBAAuB,KACxB,IAAIC,GAAiB,EACrB,MAAMC,GAAiB/zlB,KAAK6/C,WAAW3xC,cAAc04C,aAC/C2miB,GAAkBvtlB,KAAKmzlB,aAAe5gR,GAAmBg+Q,KAAO,OAAS,UAC/EvwlB,KAAK6ylB,cAAcjslB,QAAQoM,KACvB8glB,IAAkB9glB,GAAKqzZ,iBAE3Brma,KAAK6ylB,cAAcjslB,QAAQoM,KACvBA,GAAKw6kB,cAAgBj7Q,GAAmBg+Q,OAASvwlB,KAAKmzlB,WAAcY,GAAiBD,GAAkB,KAAO,OAC9G9glB,GAAKu6kB,gBAAkBA,SAG/B5oR,KAAgBV,IAEhBjkU,KAAKg0lB,YAAch0lB,KAAKi0lB,aACxBj0lB,KAAK6/C,WAAaA,GAClB7/C,KAAK6xlB,aAAeA,GACpB7xlB,KAAK6xlB,aAAab,UAAUtrlB,UAAUiI,IAAS3N,KAAK+ylB,aAAapllB,KAOjEumlB,sBACA,OAAOl0lB,KAAK4zlB,iBAEZM,oBAAgBA,IAChBl0lB,KAAK4zlB,iBAAmBM,GACxBl0lB,KAAK6xlB,aAAaV,cAAc+C,IAMhC1hiB,UAAM1/C,IACFA,KACA9S,KAAKm0lB,OAAS5C,GAAKD,mBAAmBx+kB,KAG1C0/C,YACA,OAAOxyD,KAAKm0lB,OAEZC,iBACA,OAAOp0lB,KAAKmzlB,aAAe5gR,GAAmBg+Q,KAAOvwlB,KAAKuK,OAAS,OAEnE2mJ,eACA,OAAOlxJ,KAAKmzlB,aAAe5gR,GAAmBg+Q,KAAO,SAAW,UAEhEl/hB,UACA,OAAOrxD,KAAKizX,aAAavuD,IAAM,MAAQ,MAK3C2vR,WAAWjiiB,GAAUkiiB,IACjB,OAAOt0lB,KAAKizX,aAAavuD,IAAM4vR,GAAWliiB,GAE1C6hiB,mBACA,MAAO,EACFlwd,YAAa,IAAM/jI,KAAKu0lB,qBACxBxwd,YAAa,IAAM/jI,KAAKu0lB,qBACxBxwd,cAAe,IAAM/jI,KAAKw0lB,qBAC1Bx0lB,KAAKq0lB,WAAWtwd,eAAgBA,kBAAmB,IAAM/jI,KAAKy0lB,gBAC9D1wd,gBAAiB,IAAM/jI,KAAK00lB,iBAC5B10lB,KAAKq0lB,WAAWtwd,gBAAiBA,iBAAkB,IAAM/jI,KAAK+yU,cAC9DhvM,UAAW,IAAM/jI,KAAK20lB,iBACtB5wd,WAAY,IAAM/jI,KAAKs8X,kBAGhC31X,cACQ3G,KAAKuzX,gCACLvzX,KAAKuzX,+BAA+BzsX,cAG5CzB,WACIrF,KAAKuzX,+BAAiCvzX,KAAKizX,aACtCjsX,QAAQtB,UAAU,IAAM1F,KAAKg0lB,YAAch0lB,KAAKi0lB,cACrDj0lB,KAAK6xlB,aAAarnlB,QAAUxK,KAAKwK,QACjCxK,KAAK6xlB,aAAasB,WAAanzlB,KAAKmzlB,WAExC/9N,qBACQp1X,KAAKwyD,OACLxyD,KAAK6ylB,cAAgB7ylB,KAAK8ylB,eAAetkgB,UACzCxuF,KAAK40lB,SAAW50lB,KAAK60lB,YAGrB70lB,KAAK6ylB,cAAgB7ylB,KAAKwiO,kBAAkBh0I,UAC5CxuF,KAAK40lB,SAAW50lB,KAAK2ylB,aAAankgB,WAElCxuF,KAAK2zlB,YAAc3zlB,KAAK6ylB,cAAc9slB,SACtC/F,KAAK2zlB,YAAa,EAClBzhlB,WAAW,IAAMlS,KAAK6zlB,yBAE1B7zlB,KAAK4ylB,wBAET7rlB,YAAYC,KACJA,GAAQuD,QAAavD,GAAQmslB,YAAiBnslB,GAAQwrD,QAClDxyD,KAAK6ylB,eACL3glB,WAAWlS,KAAK6zlB,sBAGpB7slB,GAAQwD,UACRxK,KAAK6xlB,aAAarnlB,QAAUxK,KAAKwK,SAEjCxD,GAAQmslB,aACRnzlB,KAAK6xlB,aAAasB,WAAanzlB,KAAKmzlB,YAGxCtsR,kBACA,OAAO7mU,KAAKkyD,SAAWlyD,KAAKkyD,SAAS20Q,iBAAc1hU,EAKvD2vlB,iBAAiBnnlB,IACb,MAAMonlB,GAAc/0lB,KAAKkhd,eAAen9Z,KAAM/wC,IACnCA,GAAKiV,OAAO/Z,cAAcC,SAASR,GAAMjF,UAE/C83b,GAAY7yb,GAAMjF,UAAY1I,KAAK6yU,SAAWkiR,IAC/C/0lB,KAAK6/C,WAAW3xC,cAAcm/T,QAMtC0+H,mBAGI,GAFA/rc,KAAK6xlB,aAAarqiB,UAClBxnD,KAAK6yU,SAAU,EACX7yU,KAAK40lB,SAAS7ulB,OAAS,EAAG,CAC1B,MAAMm7c,GAAelhd,KAAKkhd,gBAErB8zI,GAD6BjolB,OAAOiG,IAAQA,GAAK6/T,SACpC9sU,QAAUm7c,GAAan7c,OAAS,IAC9Cm7c,GAAa,GAAGruI,SAAU,EAC1B7yU,KAAK69c,iBAAmBqD,GAAa,GAAGtG,SAOpD5O,kBACIhsc,KAAK6xlB,aAAanqiB,SAClB1nD,KAAK6yU,SAAU,EACf7yU,KAAK69c,iBAAmB,GAK5Bo3I,mBAAmBtnlB,IACf,GAAIA,GAAMjF,SAAW1I,KAAK6/C,WAAW3xC,cAAe,EAC5CP,GAAMwnX,UAAYpxP,YAAcp2H,GAAMwnX,UAAYpxP,cAAgBp2H,GAAMwnX,UAAYpxP,gBACpFp2H,GAAMwnX,UAAYpxP,gBAAkBp2H,GAAMwnX,UAAYpxP,iBAAmBp2H,GAAMwnX,UAAYpxP,WAC3Fp2H,GAAMwnX,UAAYpxP,UAAYp2H,GAAMwnX,UAAYpxP,aAAep2H,GAAMwnX,UAAYpxP,gBACjFp2H,GAAMu0C,iBAEV,MAAM8hhB,GAAUhkkB,KAAKg0lB,YAAYrmlB,GAAMwnX,SAEnC6uM,IACAA,MAIR6wB,gBACA,IAAIK,GAAY,GAChB,YAAKpC,eAAetkgB,UAAU5nF,QAAQoM,KAClCkilB,GAAUzvlB,KAAKuN,IACfkilB,GAAYA,GAAUvhjB,OAAO3gC,GAAKgglB,sBAE/BkC,GAEXtC,wBACI,MAAI1lO,UACIltX,KAAKwyD,OAAUxyD,KAAK2ylB,cAAgB3ylB,KAAK2ylB,aAAa5slB,OAAS,EAC/D,MAAM,IAAI0Q,MAAM,wEAI5Bs8kB,aAAa//kB,IACT,IAAKA,GACD,OAEJ,IAAImilB,GAAgB,IAAI7mlB,MAaxB,GAZAtO,KAAK40lB,SACAhulB,QAASu7U,KACV,IAAIizQ,GAAgBjzQ,KAAgBnvU,GAChCqilB,GAAeD,GACnBA,GAAgBp1lB,KAAKq9D,WAAa+3hB,GAAgBjzQ,GAAYp0S,UAC1Do0S,GAAYp0S,WAAaqnjB,IAAiBjzQ,GAAYtP,UAAYwiR,MAClElzQ,GAAYp0S,SAAWqnjB,GACvBjzQ,GAAYtP,QAAUwiR,GACtBr1lB,KAAK69c,iBAAmBw3I,GAAelzQ,GAAYy4H,OAAS,GAC5Du6I,GAAc1vlB,KAAK08U,OAGvBniV,KAAKmzlB,aAAe5gR,GAAmBi+Q,UACnCx9kB,GAAKm7kB,eAAiBn7kB,GAAKo7kB,cAC3Bp7kB,GAAK28T,UAAY38T,GAAK28T,UAEtBwlR,GAAcr1kB,QAAQ9M,IAAQ,GAC9BmilB,GAAc1vlB,KAAKuN,QAGtB,CACD,IAAIsilB,GAAWtilB,GAAKqpW,OAASrpW,GAAKqpW,OAAOw2O,cAAgB7ylB,KAAK6ylB,eAC1D7/kB,GAAKm7kB,eAAiBn7kB,GAAKo7kB,aAC3BkH,GACK1ulB,QAASu7U,KACV,IAAIozQ,GAAgBpzQ,KAAgBnvU,GAChCmvU,GAAYxS,WAAa4lR,KACzBpzQ,GAAYxS,SAAW4lR,GACnBJ,GAAcr1kB,QAAQqiU,IAAe,GACrCgzQ,GAAc1vlB,KAAK08U,OAMnCgzQ,GAAcpvlB,OAAS,GACvB/F,KAAKyqE,YAAY5iE,KAAKstlB,GAAcxvlB,IAAIw8U,IAAeA,GAAYjxB,cAG3E0vI,UAAU5tb,IAEN,OAAOkuc,KADmBA,eACNn9Z,KAAKp1C,IAAKA,KAAMqE,IAExCwilB,iBAAiBxilB,IACb,MAAMkuc,GAAelhd,KAAKkhd,eAC1B,OAAKluc,GAAKqpW,OAGH6kG,GAAan9Z,KAAKp1C,IAAKA,KAAMqE,GAAKqpW,QAAUrpW,GAAKqpW,OAASr8W,KAAKw1lB,iBAAiBxilB,GAAKqpW,QAFjFrpW,GAIfyilB,UAAUz0jB,IACN,MAAMkgb,GAAelhd,KAAKkhd,eAC1B,IAEIw0I,GAFAtzQ,GAAe8+H,GAAapza,UAAU96B,IAAQA,GAAK6/T,SACnDsP,GAAc++H,GAAa9+H,IAE/B,IAAqB,IAAjBA,GAAqB,CACrB,IAAIuzQ,GAAc31lB,KAAK40lB,SAASrulB,KAAKyM,IAAQA,GAAK6/T,SAClD8iR,GAAY9iR,SAAU,EACtBsP,GAAcniV,KAAKw1lB,iBAAiBG,IACpCvzQ,GAAe8+H,GAAapza,UAAU96B,IAAQA,KAASmvU,IAE3D,OAAQnhT,QACC,WACD00jB,GAAWx0I,GAAaA,GAAan7c,OAAS,GAC9C,UACC,YACD2vlB,GAAWx0I,GAAa,GACxB,UACC,WACDw0I,GAAWx0I,GAAa9+H,GAAe8+H,GAAan7c,OAAS,EAAIq8U,GAAe,EAAI,GACpF,UACC,eACDszQ,GAAWx0I,GAAa9+H,GAAe,EAAIA,GAAe,EAAI8+H,GAAan7c,OAAS,GAIxFo8U,IAAeuzQ,IAAYvzQ,KAAgBuzQ,IAC3C11lB,KAAK41lB,UAAUzzQ,GAAauzQ,IAGpCE,UAAUxthB,GAAMqlE,IACZrlE,GAAKyqQ,SAAU,EACfplM,GAAGolM,SAAU,EACb7yU,KAAK69c,iBAAmBpwU,GAAGmtU,OAC3B,MAAMu6I,GAAgB,IAAI7mlB,MAAM85D,GAAK8oP,YAAazjL,GAAGyjL,aACrDlxT,KAAKyqE,YAAY5iE,KAAKstlB,IAE1BR,gBACI30lB,KAAKy1lB,UAAU,YAEnBn5N,iBACIt8X,KAAKy1lB,UAAU,aAEnBf,gBACI10lB,KAAKy1lB,UAAU,YAEnBjB,oBACIx0lB,KAAKy1lB,UAAU,gBAEnB1iR,aACI,IAAIoP,GAAcniV,KAAK40lB,SAAS7nlB,OAAOiG,IAAQA,GAAK6/T,SAAS,GAK7D,GAJK7yU,KAAK4gc,UAAUz+G,MAChBA,GAAYtP,SAAU,EACtBsP,GAAcniV,KAAKw1lB,iBAAiBrzQ,KAEpCA,GAAYgsQ,eAAiBhsQ,GAAYisQ,WACzC,GAAKjsQ,GAAYxS,UACKwS,GAEbA,GAAYgsQ,cAAe,CAChC,MAAM0H,GAAkB1zQ,GAAY0wQ,cAAc/kjB,UAAU96B,KAASA,GAAK3K,UACtEwtlB,IAAkB,GAClB71lB,KAAK41lB,UAAUzzQ,GAAaA,GAAY0wQ,cAAcgD,WAL1D71lB,KAAK+ylB,aAAa5wQ,IAU9BsyQ,eACI,MAAMtyQ,GAAcniV,KAAK40lB,SAAS7nlB,OAAOiG,IAAQA,GAAK6/T,SAAS,GAC3DsP,GAAYxS,SACZ3vU,KAAK+ylB,aAAa5wQ,IAEbA,GAAYk6B,QACjBr8W,KAAK41lB,UAAUzzQ,GAAaA,GAAYk6B,QAGhDk4O,oBACI,IAAIoB,GAAc31lB,KAAK40lB,SAAS7nlB,OAAOiG,IAAQA,GAAK6/T,SAAS,GACxD7yU,KAAK4gc,UAAU+0J,MAChBA,GAAY9iR,SAAU,EACtB8iR,GAAc31lB,KAAKw1lB,iBAAiBG,KAEpCA,IACAA,GAAY5C,eAGpB7xI,eACI,OAAOlhd,KAAK81lB,iBAAiB91lB,KAAK6ylB,eAEtCiD,iBAAiBC,GAAc,IAAIznlB,MAAS0nlB,GAAe,IAAI1nlB,OAC3DynlB,UAAYnvlB,QAAQoM,KAChBgjlB,GAAavwlB,KAAKuN,IACdA,GAAK28T,UAAY38T,GAAKm7kB,eACtBnulB,KAAK81lB,iBAAiB9ilB,GAAK6/kB,cAAemD,MAG3CA,KAGfpzX,SAAkBwjG,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKw0L,GAAmB6gG,MAAyBA,OAAoBA,MAAyBktR,IAAkBltR,MAAyB6C,QACtN1jG,EAAkB2jG,UAAqB9C,MAAyB,CAAE37T,KAAM86N,EAAmB/+N,UAAW,CAAC,CAAC,mBAAoB20X,eAAgB,SAA0Ch1D,GAAI/3T,GAAKgtX,IAIzL,GAJ8M,EAALj1D,KACvMC,MAAsBg1D,GAAUi7N,GAA+B,GAC/DjwR,MAAsBg1D,GAAUm5N,GAAuB,GACvDnuR,MAAsBg1D,GAAUm5N,GAAuB,IAChD,EAALpuR,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIymD,SAAWw4D,GAAGxjH,OACvEu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIknlB,aAAejoe,IACxE+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+2N,kBAAoB93G,MAC5E87M,UAAW,SAAiChD,GAAI/3T,IAEnD,GAFmE,EAAL+3T,IAC5DC,KAAmBmuR,GAAuB,GACnC,EAALpuR,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIqnlB,eAAiBpoe,MACzEg8M,SAAU,GAAIC,aAAc,SAAwCnD,GAAI/3T,IAAgB,EAAL+3T,IACpFC,MAAkB,QAAS,SAAoD97T,IAAU,OAAO8D,GAAIqplB,iBAAiBntlB,KAArH87T,CAAiI,QAAS,WAAwD,OAAOh4T,GAAIsgc,oBAA7MtoI,CAAoO,OAAQ,WAAuD,OAAOh4T,GAAIugc,mBAA9SvoI,CAAoU,UAAW,SAAsD97T,IAAU,OAAO8D,GAAIwplB,mBAAmBttlB,MACta,EAAL67T,KACFC,MAAmB,WAAYh4T,GAAIioX,SAAnCjwD,CAA6C,OAAQh4T,GAAIwnP,KAAzDwwE,CAA+D,wBAAyBh4T,GAAIoyc,iBAA5Fp6I,CAA8G,MAAOh4T,GAAI4lD,KACzHoyQ,MAAmB,SAAUh4T,GAAI2olB,WAAjC3wR,CAA6C,WAAYh4T,GAAIylJ,UAC7DuyK,MAAmB,aAAch4T,GAAIw9b,aACpCriI,OAAQ,CAAEusR,WAAY,aAAc91hB,WAAY,aAAc7yD,QAAS,UAAWD,OAAQ,SAAU2plB,gBAAiB,kBAAmB1hiB,MAAO,SAAW+jU,QAAS,CAAE9rT,YAAa,eAAiB+rT,SAAU,CAAC,iBAAkBrqW,SAAU,CAACs3S,MAA0B,CAClQktR,GACA7pR,KACA,CACIjuR,QAASkuR,KACTC,SAAU,oBAEdvD,OAA8Bi1D,mBAAoBzG,GAAKpkL,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,WAAY,CAAC,EAAG,QAAS,KAAM,OAAQ,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,QAAS,UAAW,EAAG,QAAS,CAAC,EAAG,QAAS,KAAM,OAAQ,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,QAAS,YAAah1Q,SAAU,SAAoCsxQ,GAAI/3T,IAAgB,EAAL+3T,KACrcC,MAAuBuuD,IACvBvuD,MAAkB,EAAGwyR,GAAyC,EAAG,EAAG,aAAc,GAClFxyR,MAAkB,EAAGyyR,GAA0C,EAAG,EAAG,cAAe,IAC7E,EAAL1yR,KACFC,MAAkB,OAAQh4T,GAAI+2N,oBAAsB/2N,GAAI+mD,OACxDixQ,MAAiB,GACjBA,MAAkB,OAAqB,MAAbh4T,GAAI+mD,MAAgB,KAAO/mD,GAAI+mD,MAAMzsD,UAC9D0hU,WAAY,CAACpB,MAAaA,MAAgBurR,IAAwBhqR,cAAe,IAC1Fp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3Bs0K,EAAkBviN,UAAW,kBAAc,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BplG,EAAkBviN,UAAW,kBAAc,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BplG,EAAkBviN,UAAW,eAAW,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B+8N,EAAkBviN,UAAW,cAAU,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClCplG,EAAkBviN,UAAW,kBAAmB,MACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,OAC1Bw5T,EAAW,oBAAqB,CAACx5T,SAClCs0N,EAAkBviN,UAAW,QAAS,MACzCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3Bg+N,EAAkBviN,UAAW,mBAAe,GAC/CmuB,EAAW,IACPy5R,OAAY,iBACZH,EAAW,cAAex5Q,SAC3Bs0K,EAAkBviN,UAAW,gBAAY,GAC5CmuB,EAAW,IACPy5R,OAAY,aACZH,EAAW,cAAe90S,SAC3B4vM,EAAkBviN,UAAW,YAAQ,GACxCmuB,EAAW,EACPy5R,SAAY,oBACZH,EAAW,cAAeE,UAC3BplG,EAAkBviN,UAAW,iBAAa,GAC7CmuB,EAAW,EACPy5R,SAAY,8BACZH,EAAW,cAAe90S,SAC3B4vM,EAAkBviN,UAAW,wBAAoB,GACpDmuB,EAAW,IACPy5R,OAAY,gBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCllG,EAAkBviN,UAAW,aAAc,MAC9CmuB,EAAW,EACPy5R,SAAY,kBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCllG,EAAkBviN,UAAW,WAAY,MAC5CmuB,EAAW,IACPy5R,OAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCllG,EAAkBviN,UAAW,MAAO,MACvCmuB,EAAW,EACPwxV,SAAa0zN,GAA+B,CAAErykB,QAAQ,IACtDymT,EAAW,cAAe4rR,KAC3B9wX,EAAkBviN,UAAW,gBAAY,GAC5CmuB,EAAW,EACPmqV,SAAgBi5N,GAAuB,CAAEl4M,aAAa,IACtD5xE,EAAW,cAAe8wD,QAC3Bh2J,EAAkBviN,UAAW,oBAAgB,GAChDmuB,EAAW,EACPmqV,SAAgBi5N,IAChB9pR,EAAW,cAAe8wD,QAC3Bh2J,EAAkBviN,UAAW,yBAAqB,GACrDmuB,EAAW,IACP6jW,MAAau/M,IACb9pR,EAAW,cAAe8wD,QAC3Bh2J,EAAkBviN,UAAW,sBAAkB,GAClDmuB,EAAW,IACPioV,OAAa,QAAS,CAAC,WACvB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjCllG,EAAkBviN,UAAW,mBAAoB,MACpDmuB,EAAW,EACPioV,SAAa,SACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,yBAAqB,IACjCllG,EAAkBviN,UAAW,mBAAoB,MACpDmuB,EAAW,IACPioV,OAAa,QACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,yBAAqB,IACjCllG,EAAkBviN,UAAW,kBAAmB,MACnDmuB,EAAW,EACPioV,SAAa,UAAW,CAAC,WACzB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjCllG,EAAkBviN,UAAW,qBAAsB,MACtDuiN,EAAoBp0L,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC1D8hlB,GACA7pR,QACLlkG,GAjgBGA,GAFe,GAwgBjBuzX,GAAqB,UAASA,EAAN,MACxBr2lB,YAAY4U,GAASwwJ,GAAUo/J,IAC3BtkU,KAAK0U,QAAUA,GACf1U,KAAKklK,SAAWA,GAChBllK,KAAKskU,IAAMA,GAIXtkU,KAAK8lc,WAAY,EAIjB9lc,KAAKqjgB,aAAc,EAInBrjgB,KAAKkla,YAAa,EAIlBlla,KAAKo2lB,WAAY,EAIjBp2lB,KAAK2oF,YAAc,aAInB3oF,KAAK42jB,gBAAiB,EAMtB52jB,KAAKq2lB,WAAa,IAAIzxlB,MAMtB5E,KAAKs2lB,gBAAkB,IAAI1xlB,MAC3B5E,KAAKipc,WAAY,EAIjBjpc,KAAKu2lB,aAAc,EAInBv2lB,KAAKw2lB,WAAY,EAKjBxqT,UAAMyqT,IACNz2lB,KAAK02lB,OAASD,GACdz2lB,KAAK22lB,iBAEL3qT,YACA,OAAOhsS,KAAK02lB,OAMZ1niB,SAAK4niB,IACL52lB,KAAKm5jB,MAAQy9B,GACb,MAAMlilB,GAAU1U,KAAK0U,QAAQxG,cAC7BlO,KAAKklK,SAAS5oB,SAAS5nI,GAAS,0BAA2BkilB,IAC3D52lB,KAAKklK,SAAS5oB,SAAS5nI,GAAS,aAAckilB,IAC1C52lB,KAAK62lB,gBACL72lB,KAAKklK,SAAS0gK,SAASlxT,GAAS,iBAGhC1U,KAAKklK,SAAS4gK,YAAYpxT,GAAS,iBAGvCs6C,WACA,OAAOhvD,KAAKm5jB,MAKZ29B,qBAAiBnzlB,IACjB,MAAM+Q,GAAU1U,KAAK0U,QAAQxG,cACzBvK,GACA3D,KAAKklK,SAAS0gK,SAASlxT,GAAS,eAGhC1U,KAAKklK,SAAS4gK,YAAYpxT,GAAS,eAGvCqilB,eACA,OAAO/2lB,KAAKo2lB,UAEZS,sBACA,OAAI72lB,KAAKu2lB,eAGDv2lB,KAAK8lc,YAAc9lc,KAAKqjgB,aAAerjgB,KAAKg3lB,WAEpDC,0BACA,OAAOj3lB,KAAKkla,WAEZ8xL,gBACA,OAAOh3lB,KAAKgvD,MAAQhvD,KAAKgvD,KAAKjpD,OAAS,EAE3CqvX,qBACI,MAAM1gX,GAAU1U,KAAK0U,QAAQxG,cACzBlO,KAAK+2lB,UACL/2lB,KAAKklK,SAAS0gK,SAASlxT,GAAS,kBAChC1U,KAAKklK,SAAS0gK,SAASlxT,GAAS,YAGhC1U,KAAKklK,SAAS4gK,YAAYpxT,GAAS,kBACnC1U,KAAKklK,SAAS4gK,YAAYpxT,GAAS,WAMvCwilB,mBACA,MAAyB,aAArBl3lB,KAAK2oF,YACE3oF,KAAK0U,QAAQxG,cAAc04C,aAG3B5mD,KAAK0U,QAAQxG,cAAcq3J,YAM1C4xb,cAAc3plB,IACVxN,KAAK42jB,eAAiBppjB,GACtBxN,KAAKskU,IAAIpvH,gBAKbA,gBACIl1M,KAAKskU,IAAIpvH,gBAEbyhZ,iBACI,MAAMjilB,GAAU1U,KAAK0U,QAAQxG,cAC7BlO,KAAKklK,SAAS5oB,SAAS5nI,GAAS,iBAAkB1U,KAAKgsS,OACvDhsS,KAAKklK,SAAS5oB,SAAS5nI,GAAS,QAAS1U,KAAKgsS,SAGtDmqT,SAAsB/vR,UAAO,SAAuCh4R,IAAK,OAAO,IAAKA,IAAK+njB,GAAuB1yR,MAAyBA,OAAoBA,MAAyBA,OAAmBA,MAAyBA,SACnO0yR,EAAsB5vR,UAAqB9C,MAAyB,CAAE37T,KAAMqulB,EAAuBtylB,UAAW,CAAC,CAAC,wBAAyB6iU,SAAU,EAAGC,aAAc,SAA4CnD,GAAI/3T,IAAgB,EAAL+3T,IACvNC,MAAmB,SAAUh4T,GAAIw9b,UAAjCxlI,CAA4C,gBAAiBh4T,GAAIorlB,gBAAjEpzR,CAAkF,eAAgBh4T,GAAIwrlB,sBACrGrwR,OAAQ,CAAEk/H,UAAW,YAAau9D,YAAa,cAAen+F,WAAY,aAAckxL,UAAW,YAAaztgB,YAAa,cAAeiue,eAAgB,iBAAkB5qR,MAAO,QAASh9O,KAAM,OAAQ8niB,iBAAkB,mBAAoBrkjB,IAAK,MAAOjkC,IAAK,OAAS+nX,QAAS,CAAE8/N,WAAY,aAAcC,gBAAiB,mBAAqB9/N,SAAU,CAAC,qBAAsBkC,mBAAoBxG,GAAKrkL,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,QAAS,CAAC,QAAS,+BAAgC,EAAG,QAAS,CAAC,EAAG,qBAAsB,cAAeh1Q,SAAU,SAAwCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC3lBC,QACAA,MAAkB,EAAG2zR,GAA+C,EAAG,EAAG,eAAgB,GAC1F3zR,MAAkB,EAAG4zR,GAAsC,EAAG,EAAG,MAAO,IACjE,EAAL7zR,KACFC,MAAkB,QAASh4T,GAAI2qlB,WAC/B3yR,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAImrjB,kBAC7BnvP,WAAY,CAACpB,OAAcuB,cAAe,IACnDp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,QAC1Bw5Q,EAAW,oBAAqB,CAACx5Q,UAClC6niB,EAAsB91kB,UAAW,QAAS,MAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCmjkB,EAAsB91kB,UAAW,OAAQ,MAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BmjkB,EAAsB91kB,UAAW,WAAO,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BmjkB,EAAsB91kB,UAAW,WAAO,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BmuR,EAAsB91kB,UAAW,iBAAa,GACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BmuR,EAAsB91kB,UAAW,mBAAe,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BmuR,EAAsB91kB,UAAW,kBAAc,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BmuR,EAAsB91kB,UAAW,iBAAa,GACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BmjkB,EAAsB91kB,UAAW,mBAAe,GACnDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClCmuR,EAAsB91kB,UAAW,mBAAoB,MACxDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BmuR,EAAsB91kB,UAAW,sBAAkB,GACtDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BuxlB,EAAsB91kB,UAAW,kBAAc,GAClDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BuxlB,EAAsB91kB,UAAW,uBAAmB,GACvDmuB,EAAW,IACPy5R,OAAY,gBACZH,EAAW,cAAeE,UAC3BmuR,EAAsB91kB,UAAW,iBAAa,GACjDmuB,EAAW,IACPy5R,OAAY,uBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCquR,EAAsB91kB,UAAW,kBAAmB,MACvDmuB,EAAW,IACPy5R,OAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCquR,EAAsB91kB,UAAW,sBAAuB,MAC3D81kB,EAAwB3njB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC9Ds5T,MACAD,SACLiuR,GAxO+BA,GAAT,GA8OrBmB,GAAe,UAASA,EAAN,MAClBx3lB,YAAY8rX,IACR5rX,KAAK4rX,KAAOA,GACZ5rX,KAAKu3lB,aAAe,IAAI3ylB,MACxB5E,KAAKw3lB,cAAgB,OAEzBC,UAAUC,IACN,MAAM19M,GAAOh6Y,KAAKg6Y,KAAK09M,IACnB19M,GAAKqpH,cACLrpH,GAAKo8M,WAAap8M,GAAKo8M,UACvBp8M,GAAKs8M,gBAAgBzulB,KAAKmyY,GAAKo8M,WAC/Bp2lB,KAAK6H,KAAK7H,KAAKu3lB,aAAc,IACzBv9M,GAAKo8M,WACLp8M,GAAK9kM,iBAGb,MAAMyiZ,GAAe33lB,KAAKilY,MAAMl4X,OAAO03D,KAAMA,GAAE2xhB,WACzCwB,GAAmBD,GAAa5klB,MAAM0xD,IAAKA,GAAEuyhB,WACnDW,UAAaA,GAAa5xlB,OAAS,GAAGwwlB,cAAcqB,GAC7C59M,GAAKqpH,YAEhBw0F,qBAAqBj0kB,GAAOpW,IACxBxN,KAAKg6Y,KAAKp2X,IAAOuzkB,cAAc3plB,IAC/BxN,KAAKg6Y,KAAKp2X,GAAQ,GAAGuzkB,cAAc3plB,IAEvCsqlB,UAAUC,IACN,IAAI9uW,GAAOjpP,KAAKg6Y,KAAK+9M,IACjB1slB,GAAOrL,KAAKg6Y,KAAK+9M,GAAgB,GACrC,MAAMtplB,GAAQw6O,GAAKiuW,aAAe7rlB,GAAK6rlB,aACjCziG,GAAK5tf,IAAK7G,KAAKg4lB,SAASnxlB,IAC9B,MAAO,CACHoiP,KAAM,CACFrlO,MAAOm0kB,GACPE,YAAahvW,GAAKiuW,aAClBzkjB,IAAKgid,GAAGxrQ,GAAKx2M,MAAQhkC,GAAQgmf,GAAGppf,GAAKmD,MAAQ,EAC7CA,IAAKimf,GAAGxrQ,GAAKz6O,MAAQC,GAAQgmf,GAAGppf,GAAKonC,MAAQhkC,IAEjDpD,KAAM,CACFuY,MAAOm0kB,GAAgB,EACvBE,YAAa5slB,GAAK6rlB,aAClBzkjB,IAAKgid,GAAGppf,GAAKonC,MAAQhkC,GAAQgmf,GAAGxrQ,GAAKz6O,MAAQ,EAC7CA,IAAKimf,GAAGppf,GAAKmD,MAAQC,GAAQgmf,GAAGxrQ,GAAKx2M,MAAQhkC,KAIzD69H,QAAQo6T,GAAU32U,IACd,MACM6mR,GAAS,CAACshN,GAAWnwhB,MACvB,MAAMiyU,GAAOh6Y,KAAKg6Y,KAAKk+M,GAAUt0kB,OAC3Bu0kB,GAAen4lB,KAAKw3lB,gBACpBZ,GAJI,EAACnkjB,GAAKjkC,GAAKhI,KAAM0G,KAAKulC,IAAIjkC,GAAKtB,KAAKsB,IAAIikC,GAAKjsC,KAIvCi+Z,CAAMyzL,GAAUzljB,IAAKyljB,GAAU1plB,IAAK0plB,GAAUD,YAAclwhB,IAC5E,IAAI/Y,GAAO,GAEPA,GADAhvD,KAAKo4lB,UAAUp+M,GAAKhrV,MACZ,IAAM4niB,GAAUuB,GAAgB,IAGjCvB,GAAU,KAErB58M,GAAKhrV,KAAOA,GACZgrV,GAAKw8M,WAAY,EACjBx2lB,KAAK6H,KAAKmyY,GAAKq8M,WAAYrniB,KAEzBi6L,GAAOjpP,KAAKg6Y,KAAK0sD,GAASz9M,KAAKrlO,OAC/BvY,GAAOrL,KAAKg6Y,KAAK0sD,GAASr7b,KAAKuY,OAEjCqlO,GAAK+tW,WAAa3rlB,GAAK2rlB,WAEvBpgN,GAAO8vD,GAASz9M,KAAMl5H,IACtB6mR,GAAO8vD,GAASr7b,MAAO0kH,KAEtBq9d,GAAS/pF,aAAeh4f,GAAK2rlB,UAE9BpgN,GAAO8vD,GAASr7b,MAAO0kH,IAIvB6mR,GAAO8vD,GAASz9M,KAAMl5H,IAE1B/vH,KAAK6H,KAAK7H,KAAKu3lB,aAAc,IAEjCjuJ,YAAY+uJ,IACR,MAAMpvW,GAAOjpP,KAAKg6Y,KAAKq+M,IACjBhtlB,GAAOrL,KAAKg6Y,KAAKq+M,GAAgB,GAGvC,OAF8BpvW,GAAK68M,WAAaz6b,GAAKy6b,aAC3B78M,GAAKmtW,WAAa/qlB,GAAK+qlB,WAGrDxojB,SAASyqjB,IACL,MAAMpvW,GAAOjpP,KAAKg6Y,KAAKq+M,IACjBhtlB,GAAOrL,KAAKg6Y,KAAKq+M,GAAgB,GAGvC,QAF8BpvW,GAAK68M,WAAaz6b,GAAKy6b,WACzB78M,GAAKo6Q,aAAeh4f,GAAKg4f,aAGzDrpH,KAAKp2X,IACD,IAAK5jB,KAAKilY,MACN,MAAM,IAAIxuX,MAAM,yBAEpB,GAAImN,GAAQ,GAAKA,IAAS5jB,KAAKilY,MAAMl/X,OACjC,MAAM,IAAI0Q,MAAM,sBAEpB,OAAOzW,KAAKilY,MAAMrhX,IAEtBugZ,WAAYl/B,SAAOt8S,eAAa6ugB,mBAM5B,GALAx3lB,KAAKilY,MAAQA,GACbjlY,KAAKilY,MAAMr+X,QAAQ,CAACozY,GAAMp2X,MACtBo2X,GAAKhuG,MAAgB,EAARpoR,GACbo2X,GAAKrxT,YAAcA,QAEnBukS,SAAa,CACb,MAAMorO,GAAmBrzN,GAAMl/X,SAAWk/X,GAAMlhV,KAAKi2V,KAASA,GAAKg9M,WAC7DuB,GAAiBtzN,GAAMl/X,QAAUk/X,GAAMlhV,KAAKi2V,IAAQA,GAAKw8M,WAC/D,GAAI8B,KAAqBC,GACrB,MAAM,IAAI9hlB,MAAO,6OAMzBzW,KAAKw3lB,cAAgBA,GAEzBY,UAAUppiB,IACN,MAAO,KAAKwsX,KAAKxsX,IAErBgpiB,SAAShpiB,IACL,IAAIz8C,GAASoyB,WAAWqqB,IACxB,OAAIhvD,KAAKo4lB,UAAUppiB,MACfz8C,GAAUvS,KAAKw3lB,gBAAkBjllB,GAAS,KAEvCA,GAEX1K,KAAK6uK,GAASz8I,IACNy8I,GAAQ7yJ,UAAU9d,QAClB/F,KAAK4rX,KAAKtjU,IAAI,IAAMouH,GAAQ7uK,KAAKoyB,OAI7Cq9jB,SAAgBlxR,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAKkpjB,GAAiB7zR,MAAgBA,SAC/G6zR,EAAgB1sR,WAAsBnH,MAA0B,CAAEp4S,MAAOiskB,EAAiBh/kB,QAAS,SAAU81B,IAAK,OAAOkpjB,EAAgBlxR,UAAKh4R,OAC9IkpjB,EAAkB9ojB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACikD,SAC7DurO,GA5IyBA,GAAT,GAiLfkB,GAAiB,UAASA,EAAN,MACpB14lB,YAAY4U,GAAS+jlB,GAAiBxlO,GAAcylO,IAChD14lB,KAAK0U,QAAUA,GACf1U,KAAKy4lB,gBAAkBA,GACvBz4lB,KAAKizX,aAAeA,GACpBjzX,KAAK04lB,cAAgBA,GAMrB14lB,KAAK2oF,YAAc,aACnB3oF,KAAK0wgB,SAAW,YAChB/rM,OAAgBV,IACZy0R,KACAA,GAAc5B,kBAAmB,GAIrC92lB,KAAKu3lB,aAAev3lB,KAAKy4lB,gBAAgBlB,aACzCv3lB,KAAKmka,UAAYnka,KAAKmka,UAAUt+Y,KAAK7lB,MAErCk2Y,kBACA,OAAO,EAEPyiN,4BACA,MAA4B,eAArB34lB,KAAK2oF,YAEZiwgB,0BACA,MAA4B,aAArB54lB,KAAK2oF,YAEZt3B,UACA,OAAOrxD,KAAKiM,UAEhBE,qBACInM,KAAK64lB,cAET9xlB,YAAYC,IACJA,GAAQ2hF,cAAgB3hF,GAAQ2hF,YAAY6/T,iBAC5CxoZ,KAAK64lB,cAGblylB,cACQ3G,KAAK04lB,gBACL14lB,KAAK04lB,cAAc5B,kBAAmB,GAE1C92lB,KAAKw3iB,qBAETqhD,cACI74lB,KAAKw3iB,qBACLx3iB,KAAKmka,YACLnka,KAAK84lB,wBAA0B94lB,KAAKilY,MAAMj+X,QAAQtB,UAAU1F,KAAKmka,WAErEqzI,qBACQx3iB,KAAK84lB,0BACL94lB,KAAK84lB,wBAAwBhylB,cAC7B9G,KAAK84lB,wBAA0B,MAGvC30L,YACInka,KAAKy4lB,gBAAgBt0L,UAAU,CAC3Bl/B,MAAOjlY,KAAKilY,MAAMz2S,UAClB7F,YAAa3oF,KAAK2oF,YAClB6ugB,cAAe,IACc,aAArBx3lB,KAAK2oF,YACE3oF,KAAK0U,QAAQxG,cAAc26O,aAG3B7oP,KAAK0U,QAAQxG,cAAc2rV,cAK9C5tV,gBACA,OAAOjM,KAAKizX,aAAavuD,IAAM,MAAQ,QAG/C8zR,SAAkBpyR,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKoqjB,GAAmB/0R,MAAyBA,OAAoBA,MAAyB6zR,IAAkB7zR,MAAyB6C,MAA6B7C,MAAyB0yR,GAAuB,KACnSqC,EAAkBjyR,UAAqB9C,MAAyB,CAAE37T,KAAM0wlB,EAAmB30lB,UAAW,CAAC,CAAC,mBAAoB20X,eAAgB,SAA0Ch1D,GAAI/3T,GAAKgtX,IAEzL,GAF8M,EAALj1D,IACvMC,MAAsBg1D,GAAU09N,GAAuB,GAChD,EAAL3yR,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIw5X,MAAQv6Q,MAChEg8M,SAAU,GAAIC,aAAc,SAAwCnD,GAAI/3T,IAAgB,EAAL+3T,KACpFC,MAAmB,OAAQh4T,GAAIilgB,SAA/BjtM,CAAyC,MAAOh4T,GAAI4lD,KACpDoyQ,MAAmB,WAAYh4T,GAAIyqY,YAAnCzyE,CAAgD,aAAch4T,GAAIyqY,YAAlEzyE,CAA+E,kBAAmBh4T,GAAIyqY,YAAtGzyE,CAAmH,wBAAyBh4T,GAAIktlB,sBAAhJl1R,CAAuK,sBAAuBh4T,GAAImtlB,uBACjMhyR,OAAQ,CAAEj+O,YAAa,eAAiB4tS,QAAS,CAAEghO,aAAc,gBAAkB/gO,SAAU,CAAC,iBAAkBrqW,SAAU,CAACs3S,MAA0B,CAClJ6zR,GACAxwR,KACA,CACIjuR,QAASkuR,KACTC,SAAU,mBAEdvD,OAA8Bi1D,mBAAoB03E,GAAKviQ,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,QAAS,WAAY,CAAC,iBAAkB,GAAI,EAAG,QAAS,cAAe,EAAG,QAAS,CAAC,iBAAkB,GAAI,EAAG,QAAS,gBAAiBh1Q,SAAU,SAAoCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC/RC,MAAuBgrI,IACvBhrI,MAAoB,GACpBA,MAAkB,EAAGs1R,GAA2C,EAAG,EAAG,eAAgB,IAC/E,EAALv1R,KACFC,MAAiB,GACjBA,MAAkB,UAAWh4T,GAAIw5X,SAChCx9D,WAAY,WAAc,MAAO,CAACpB,MAAgBA,MAAa2yR,GAAsBrxR,OAA+BC,cAAe,IAC5Ip5R,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BwlkB,EAAkBn4kB,UAAW,mBAAe,GAC/CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B4zlB,EAAkBn4kB,UAAW,oBAAgB,GAChDmuB,EAAW,EACPy5R,SAAY,mBACZA,SAAY,qBACZA,SAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC0wR,EAAkBn4kB,UAAW,cAAe,MAC/CmuB,EAAW,IACPy5R,OAAY,+BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC0wR,EAAkBn4kB,UAAW,wBAAyB,MACzDmuB,EAAW,IACPy5R,OAAY,6BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC0wR,EAAkBn4kB,UAAW,sBAAuB,MACvDmuB,EAAW,EACPy5R,SAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC0wR,EAAkBn4kB,UAAW,MAAO,MACvCmuB,EAAW,IACPy5R,OAAY,aACZH,EAAW,cAAe90S,SAC3BwlkB,EAAkBn4kB,UAAW,gBAAY,GAC5CmuB,EAAW,IACPmqV,OAAgBw9N,IAChBruR,EAAW,cAAe8wD,QAC3B4/N,EAAkBn4kB,UAAW,aAAS,GACzCm4kB,EAAoBhqjB,EAAW,CAAEq8R,EAAQ,KAAGE,UAAaF,EAAQ,KAAGs+H,UAASt+H,EAAQ,GAAGC,SAAOqrR,KAC3FruR,EAAW,oBAAqB,CAACj5T,MAC7ByolB,GACAxwR,KACAqvR,MACLqC,GAhJ2BA,GAAT,GAgLjBS,GAAmB,UAASA,EAAN,MACtBn5lB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BoyR,SAAoB7yR,UAAO,SAAqCh4R,IAAK,OAAO,IAAKA,IAAK6qjB,GAAqBx1R,MAAyBA,SACpIw1R,EAAoB9tR,UAAqB1H,MAAyB,CAAE37T,KAAMmxlB,EAAqBp1lB,UAAW,CAAC,CAAC,GAAI,kBAAmB,OACnIo1lB,EAAsBzqjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACC,SACjEkxR,GAR6BA,GAAT,GA6CnBC,GAAiB,UAASA,EAAN,MACpBp5lB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BqyR,SAAkB9yR,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK8qjB,GAAmBz1R,MAAyBA,SAC9Hy1R,EAAkB/tR,UAAqB1H,MAAyB,CAAE37T,KAAMoxlB,EAAmBr1lB,UAAW,CAAC,CAAC,GAAI,gBAAiB,OAC7Hq1lB,EAAoB1qjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACC,SAC/DmxR,GAR2BA,GAAT,GAajBC,GAAoB,UAASA,EAAN,MAIvBr5lB,cAMIE,KAAKqI,UAAW,EAChBrI,KAAKo5lB,YAAc,IAAIxgO,MAOvB54X,KAAK6yU,SAAU,EAEfi9Q,iBACA,OAAO9vlB,KAAKo5lB,YAAYlylB,MAExBiplB,eACA,OAAOnwlB,KAAKq5lB,mBAAmBnylB,QAGvCiylB,SAAqB/yR,UAAO,SAAsCh4R,IAAK,OAAO,IAAKA,IAAK+qjB,IACxFA,EAAqB5yR,UAAqB9C,MAAyB,CAAE37T,KAAMqxlB,EAAsBt1lB,UAAW,CAAC,CAAC,uBAAwB20X,eAAgB,SAA6Ch1D,GAAI/3T,GAAKgtX,IAGtM,GAH2N,EAALj1D,KACpNC,MAAsBg1D,GAAUwgO,GAAqB,GACrDx1R,MAAsBg1D,GAAUygO,GAAmB,IAC5C,EAAL11R,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI2tlB,YAAc1ue,IACvE+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI4tlB,mBAAqB3ue,MAC7Ek8M,OAAQ,CAAEv+T,SAAU,WAAYukD,MAAO,QAAShD,SAAU,WAAY0/Q,SAAU,WAAYv7R,SAAU,WAAYk3R,SAAU,WAAYiqR,UAAW,aAAe14N,SAAU,CAAC,oBAAqB3oL,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAAuCsxQ,GAAI/3T,MAAUm8T,cAAe,IAC5Sp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BmmkB,EAAqB94kB,UAAW,aAAS,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BmxR,EAAqB94kB,UAAW,gBAAY,GAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BszlB,EAAqB94kB,UAAW,gBAAY,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BszlB,EAAqB94kB,UAAW,gBAAY,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BmxR,EAAqB94kB,UAAW,gBAAY,GAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BmxR,EAAqB94kB,UAAW,gBAAY,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BmmkB,EAAqB94kB,UAAW,iBAAa,GAChDmuB,EAAW,IACPmqV,OAAgBsgO,IAChBnxR,EAAW,cAAe8wD,QAC3BugO,EAAqB94kB,UAAW,mBAAe,GAClDmuB,EAAW,EACPmqV,SAAgBugO,IAChBpxR,EAAW,cAAe8wD,QAC3BugO,EAAqB94kB,UAAW,0BAAsB,GAvExB84kB,GAAT,GA8ExB,SAMIr5lB,YAAY8jB,GAAOkpB,IACf9sC,KAAK4jB,MAAQA,GACb5jB,KAAK8sC,IAAMA,IAQnB,iBAA0BwrV,KAMtBx4X,YAAY8jB,GAAOgpC,IACfptC,QACAxf,KAAK4jB,MAAQA,GACb5jB,KAAK4sD,MAAQA,IASrB,MA+BM0siB,GAAsBC,GACjBA,EAAmB9zjB,SAAW8zjB,EAAmBC,YAQtDC,GAAgBrylB,IAClB,IAAIsylB,GACA98X,GACAi7J,IAAe,EACf29D,IAAgB,EACpBpub,SAAKR,QAAQ,CAACkmC,GAAKlpB,MACXkpB,GAAIiB,UACJ6uL,GAAc9vL,GACd0oZ,GAAgB5xa,IAEXkpB,GAAI+lS,UACT6mR,GAAa5sjB,GACb+qV,GAAej0W,MAGhBi0W,IAAgB,EACnB,CAAE/qV,IAAK4sjB,GAAY91kB,MAAOi0W,IAC1B,CAAE/qV,IAAK8vL,GAAah5M,MAAO4xa,KAK7BmkK,GAAgB,CAACvylB,EAAMwc,MACzB,MAAMg2kB,GAAWxylB,EAAK2F,OAAO,CAAC8slB,GAAMlrlB,KAAMA,KAAMiV,IAChD,OAAIg2kB,GAAS7zlB,OAAS,EACX6zlB,GAAS,GAEb,MA+BLE,GAAuBC,GAAgC,QAAhBA,GAAyC,WAAhBA,EAKtE,IAAIC,GAAe,UAASA,EAAN,MAClBl6lB,YAAYmzX,GAAc3rU,IACtBtnD,KAAKizX,aAAeA,GACpBjzX,KAAKsnD,OAASA,GAElB2pgB,UAAUtjjB,IACN,IA7GcjF,KAClB,MAAMuxlB,GAAWvxlB,EAAOo/C,aAAa,MACrC,SAAI6uU,GAAUsjO,KAAaA,GAASn6kB,QAAQ,oBAAsB,IA2GzDo6kB,CAAavslB,GAAMjF,QACpB,OAEJ,MAAMmK,GAAMlF,GAAMwnX,QACdn1X,KAAKm6lB,gBAAgBtnlB,MACrBlF,GAAMu0C,iBAKNyme,GAAgB91gB,KAr2DTsiX,IAAWq8N,GAAqBr8N,IAAYs8N,GAAmBt8N,GAq2D9CyzJ,CAAW/1gB,IACnC7S,KAAK08c,WAAW7pc,IAEXA,KAAQkxH,aACb/jI,KAAKi+L,YAGbm8Z,YAAYttjB,GAAKlpB,IACb,MAAMy2kB,GAAa,IAAIC,GAAY12kB,GAAOkpB,GAAI8f,OAE9C,GADA5sD,KAAKu6lB,MAAMltjB,UAAUxlC,KAAKwylB,KACrBA,GAAWvjO,qBAAsB,CAClC,GAAIhqV,GAAIiB,SAEJ,YADA/tC,KAAKw6lB,eAAe52kB,IAGxB5jB,KAAKmuC,UAAUrB,GAAKlpB,KAG5BuqB,UAAUrB,GAAKlpB,IA/CQxc,KAgDDpH,KAAKu6lB,MAAMnzlB,KA/C5BR,QAASkmC,KACVA,GAAIiB,UAAW,KA8Cf0sjB,GACAz6lB,KAAKw6lB,eAAe52kB,IACpBkpB,GAAIiB,UAAW,EACX/tC,KAAKu6lB,MAAM31D,cACX5kiB,KAAKu6lB,MAAMG,sBAGnBC,WAAW7tjB,GAAKlpB,IACZ,MAAMg3kB,GAAY,IAAIC,GAAcj3kB,GAAOkpB,IAC3C9sC,KAAKu6lB,MAAMO,SAASjzlB,KAAK+ylB,IAE7Bl+I,WAAWvnF,IACP,IAAMroV,IAAKqqX,GAAWvzY,MAAO2nZ,IAAgBkuL,GAAaz5lB,KAAKu6lB,MAAMnzlB,MAChE2kX,yBACD/rX,KAAKsnD,OAAOgB,IAAI,KACZ,GAAIijX,GAAc,EAEd,YADAvra,KAAKu6lB,MAAMpsjB,UAAUnuC,KAAK+6lB,yBAG9B5jM,GAAUtkF,SAAU,EACpB,MAAMitI,GAAY9/c,KAAKg7lB,iBAAiBzvL,GAAap2C,IACrDn1X,KAAKi7lB,YAAYn7I,MAI7B7hR,WACI,IAAMnxJ,IAAKqqX,GAAWvzY,MAAOs3kB,IAAmBzB,GAAaz5lB,KAAKu6lB,MAAMnzlB,MAxJ1D,EAAC0lC,EAAKqujB,UACHh2lB,IAAjB2nC,EAAIm4R,SACGn4R,EAAIm4R,SAuJkBjlU,KAAKu6lB,MAAMt1R,SAApCm2R,CAAcjkM,MAAoCA,GAAU9uZ,UAC5DrI,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAK26lB,WAAWxjM,GAAW+jM,MAIvCD,YAAYr3kB,IACR,MAAMkpB,GAAM6sjB,GAAc35lB,KAAKu6lB,MAAMnzlB,KAAMwc,IACvCkpB,GAAIzkC,UACJrI,KAAKw6lB,eAAe52kB,IACpBkpB,GAAI+lS,SAAU,GAGd7yU,KAAKo6lB,YAAYttjB,GAAKlpB,IAG9B42kB,eAAe52kB,IA7GS,EAACy3kB,EAAqBz3kB,MAC9C,MAAMg2kB,GA6GoC55lB,KAAKu6lB,MAAMc,oBA7GhBtulB,OAAO,CAACuulB,GAAY3slB,KAAMA,KAAMiV,IACrE,OAAIg2kB,GAAS7zlB,OAAS,EACX6zlB,GAAS,GAEb,MAyGe2B,CAAoBv7lB,EAAgC4jB,IAC5D1V,cAAcm/T,QAE5B8sR,gBAAgBhlO,IAUZ,SATIwzJ,GAAgBxzJ,KAGhB2kO,GAAoB95lB,KAAKu6lB,MAAMR,cAAgBvI,GAAqBr8N,MAGnE2kO,GAAoB95lB,KAAKu6lB,MAAMR,cAAgBtI,GAAmBt8N,KAGnEA,KAAYpxP,aAKpBi3d,iBAAiBzvL,GAAap2C,IAC1B,OAAQA,SACCn1X,KAAKq0lB,WAAWtwd,eAAgBA,sBAChC/jI,KAAKq0lB,WAAWtwd,aAAcA,gBAC/B,OAAO/jI,KAAKw7lB,qBAAqBjwL,SAChCvra,KAAKq0lB,WAAWtwd,gBAAiBA,qBACjC/jI,KAAKq0lB,WAAWtwd,eAAgBA,cACjC,OAAO/jI,KAAKy7lB,qBAAqBlwL,SAChCxnS,UACD,OAAO/jI,KAAK+6lB,6BACXh3d,SACD,OAAO/jI,KAAK07lB,+BAEZ,QAGZrH,WAAWjiiB,GAAUkiiB,IACjB,OAAOt0lB,KAAKizX,aAAavuD,IAAM4vR,GAAWliiB,GAE9C2oiB,wBACI,OAAO,EAEXW,uBACI,OAAO17lB,KAAKu6lB,MAAMnzlB,KAAKrB,OAAS,EAEpCy1lB,qBAAqBhmK,IACjB,OAAIA,GAAgB,EAAI,EACbx1b,KAAK07lB,uBAETlmK,GAAgB,EAE3BimK,qBAAqBjmK,IACjB,OAAIA,GAAgB,GAAKx1b,KAAKu6lB,MAAMnzlB,KAAKrB,OAC9B/F,KAAK+6lB,wBAETvlK,GAAgB,IAG/BwkK,SAAgB5zR,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAK4rjB,GAAiBv2R,MAAgB6C,MAA6B7C,MAAgBA,SAC5Ju2R,EAAgBpvR,WAAsBnH,MAA0B,CAAEp4S,MAAO2ukB,EAAiB1hlB,QAAS,SAAU81B,IAAK,OAAO4rjB,EAAgB5zR,UAAKh4R,OAC9I4rjB,EAAkBxrjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,KACxDilD,SACLiuO,GA3IyBA,GAAT,GA0KnB,SAIIl6lB,YAAYm6B,IACRj6B,KAAK62X,WAAY,EACjBhxX,OAAOw0D,OAAOr6D,KAAMi6B,IAOxBioB,iBACIliD,KAAK62X,WAAY,EASrBC,qBACI,OAAO92X,KAAK62X,WASpB,iBAA6B8kO,IAM7B,IAAIC,GAAa,UAASA,EAAN,MAChB97lB,YAAYwnD,IACRtnD,KAAKsnD,OAASA,GACdtnD,KAAKkqC,SAAW,EAChBlqC,KAAK67lB,8BAAgC,IAAIrhkB,IAEzCshkB,qBACA,OAAO97lB,KAAKu6lB,MAAMwB,QAAQ7tlB,cAE1B8tlB,4BACA,MAAM9tjB,GAAWluC,KAAKu6lB,MAChB0B,GAAkBnC,GAAoB5rjB,GAAS6rjB,aA/DnD,oBAEF,kBA8DMmC,GAAkBpC,GAAoB5rjB,GAAS6rjB,aA/DlD,qBAED,oBA8DF,MAAmC,iBAAxB7rjB,GAASg3X,WAGT,CAAEi3L,sBAFsD,IAAvCjujB,GAASg3X,WAAWk3L,eAAiCH,GAAkB/tjB,GAASg3X,WAAWk3L,eAE9EC,sBAD0B,IAAvCnujB,GAASg3X,WAAWo3L,eAAiCJ,GAAkBhujB,GAASg3X,WAAWo3L,gBAGhH,CAAEH,iBAAkBF,GAAiBI,iBAAkBH,IAE9DK,mBACA,MAAMpjP,GAAcn5W,KAAKu6lB,MAAMt/N,QAAQ/sX,cACjCupX,GAAe9yV,WAAWE,iBAAiBs0U,IAAaziW,OACxD8llB,GAAgB73jB,WAAWE,iBAAiBs0U,IAAa5uW,QAC/D,OAAOuvlB,GAAoB95lB,KAAKu6lB,MAAMR,aAAetiO,GAAe+kO,GAEpEC,0BACA,KAAK/mO,UACD,OAAO,EAEX,MAAMn+R,GAAeuigB,GAAoB95lB,KAAKu6lB,MAAMR,aAC9C2C,GAAexvlB,KAAKC,MAAMnN,KAAK87lB,eAAevkgB,GAAe,cAAgB,gBAC7Ev3F,KAAK87lB,eAAe3yR,wBAAwB5xO,GAAe,QAAU,WAC3E,OAAOmlgB,GAAe,EAAI,EAAIA,GAE9BC,mBACA,OAAO38lB,KAAKy8lB,oBAAsB,EAElCG,wBACA,IAAK58lB,KAAKu6lB,MAAM/K,iBACZ,OAAO,EAEX,MAAMqN,GAAW78lB,KAAKu6lB,MAAM4B,iBAAiBW,uBACvCC,GAAWjD,GAAoB95lB,KAAKu6lB,MAAMR,aAAe8C,GAASnmlB,MAAQmmlB,GAAStylB,OACnFyylB,GAAWh9lB,KAAKu6lB,MAAM8B,iBAAiBS,uBAE7C,OAAOC,IADUjD,GAAoB95lB,KAAKu6lB,MAAMR,aAAeiD,GAAStmlB,MAAQsmlB,GAASzylB,QAG7F0ylB,2BACI,MAAM/ujB,GAAWluC,KAAKu6lB,MACtB,IAAKrsjB,GAASshjB,iBACV,OAEJ,MACM0N,IAA2BhvjB,GAASmujB,iBAAiBh0lB,SACrD80lB,GAA6Bn9lB,KAAKkqC,SAAW,GAAKlqC,KAAKy8lB,oBAAsB,EAC7EW,GAA6Bp9lB,KAAKkqC,SAAWlqC,KAAKy8lB,oBAAsBz8lB,KAAK48lB,mBAAqB58lB,KAAKy8lB,oBAAsB,EAC/HU,MAJ6BjvjB,GAASiujB,iBAAiB9zlB,UAKvDrI,KAAKsnD,OAAOgB,IAAI,IAAMtoD,KAAK2+X,wBAAwB,OAAQw+N,KAE3DC,KAA+BF,IAC/Bl9lB,KAAKsnD,OAAOgB,IAAI,IAAMtoD,KAAK2+X,wBAAwB,OAAQy+N,KAGnE1C,sBACI,IAAK16lB,KAAK28lB,aACN,OAEJ,IAAM/4kB,MAAO2nZ,IAAgBkuL,GAAaz5lB,KAAKu6lB,MAAMnzlB,MACrD,IAAoB,IAAhBmka,GACA,OAEJvra,KAAKkqC,UAAYlqC,KAAKq9lB,gBAAgB9xL,IACtCxgT,GAAwB/qH,KAAKu6lB,MAAMR,aAC/B/5lB,KAAK87lB,eAAehsN,WAAa9vY,KAAKkqC,SAGtClqC,KAAK87lB,eAAe/rN,UAAY/vY,KAAKkqC,SAEzClqC,KAAKi9lB,2BACL,MAAM/ujB,GAAWluC,KAAKu6lB,MACtB,IAAKrsjB,GAASshjB,iBACV,OAEJ,MACM8N,GAAkB/xL,KAAgBvra,KAAKu6lB,MAAMnzlB,KAAKrB,OAAS,EADxB,IAAhBwla,KAEAr9X,GAASiujB,iBAAiB9zlB,UAC/CrI,KAAKsnD,OAAOgB,IAAI,IAAMtoD,KAAK2+X,wBAAwB,QAAQ,IAE3D2+N,KAAoBpvjB,GAASmujB,iBAAiBh0lB,UAC9CrI,KAAKsnD,OAAOgB,IAAI,IAAMtoD,KAAK2+X,wBAAwB,QAAQ,IAGnE0+N,gBAAgB9xL,IACZ,KAAK71C,UACD,OAAO,EAEX,MAAMn+R,GAAeuigB,GAAoB95lB,KAAKu6lB,MAAMR,aACpD/5lB,KAAK87lB,eAAgB,UAAQvkgB,GAAe,OAAS,QAAWv3F,KAAKkqC,SACrE,MAAMqzjB,GAAgBv9lB,KAAK87lB,eAAet9hB,SAAS+sW,IAAapiG,wBAC1Dq0R,GAAcx9lB,KAAK87lB,eAAe3yR,wBAClC7+R,GAAMitD,GAAe,QAAU,SAC/BvqE,GAAQuqE,GAAe,OAAS,MAChCkmgB,GAAiBF,GAAcvwkB,IAC/B0wkB,GAAeH,GAAcjzjB,IAC7BqzjB,GAAeH,GAAYxwkB,IAC3B4wkB,GAAaJ,GAAYlzjB,IACzBuzjB,GAAyBH,IAAgBE,GACzCE,GAA2BL,IAAkBE,GAEnD,OAD0BE,IAA0BC,GAEzC,EAEND,GAGAC,QAAL,EACWL,GAAiBE,GAHjBD,GAAeE,GAM9BG,cAAcpwlB,IACVA,GAAMu0C,iBACDo3iB,GAAmBt5lB,KAAKu6lB,MAAMr1L,cAInClla,KAAKg+lB,sBADarwlB,GAAMK,OAAS,EAAI,OAAS,OACRhO,KAAKu6lB,MAAMr1L,WAAW+4L,kBAC5Dlze,GAAwB/qH,KAAKu6lB,MAAMR,aAC/B/5lB,KAAK87lB,eAAehsN,WAAa9vY,KAAKkqC,SAGtClqC,KAAK87lB,eAAe/rN,UAAY/vY,KAAKkqC,SAEzClqC,KAAKi9lB,4BAETiB,WAAWjylB,IACPjM,KAAKg+lB,sBAAsB/xlB,GAAWjM,KAAKu6lB,MAAMr1L,WAAWi5L,mBAC5Dpze,GAAwB/qH,KAAKu6lB,MAAMR,aAC/B/5lB,KAAK87lB,eAAe9iR,SAAS,CAAE5pQ,KAAMpvE,KAAKkqC,SAAUk0jB,SAtLhC,WAyLpBp+lB,KAAK87lB,eAAe9iR,SAAS,CAAE7qN,IAAKnuH,KAAKkqC,SAAUk0jB,SAzL/B,WA2LxBp+lB,KAAKi9lB,2BAETe,sBAAsB/xlB,GAAWoylB,IAC7B,MAAMC,GAAoBt+lB,KAAKy8lB,oBAAsBz8lB,KAAK48lB,kBAC1D,GAAkB,SAAd3wlB,IAAwBjM,KAAKkqC,SAAW,EACxClqC,KAAKkqC,SAAWlqC,KAAKkqC,SAAWm0jB,IAAe,EAAI,EAAIr+lB,KAAKkqC,SAAWm0jB,WAEpD,SAAdpylB,IAAwBjM,KAAKkqC,SAAWo0jB,GAAmB,CAChE,GAAIt+lB,KAAKkqC,SAAWm0jB,GAAcC,GAE9B,YADAt+lB,KAAKkqC,SAAWo0jB,IAGpBt+lB,KAAKkqC,UAAYm0jB,IAGzBE,gBAAgBv4J,IACZ,MAAMw4J,GAAc,IAAIC,GAAe,CACnCppe,cAAe2wU,KAEnB,SAAInwE,MAAa71X,KAAKu6lB,MAAMmE,YACxB1+lB,KAAKu6lB,MAAMmE,UAAU72lB,KAAK22lB,IAEvBA,GAEXG,wBACQ7E,GAAoB95lB,KAAKu6lB,MAAMR,aAC/B/5lB,KAAK87lB,eAAe9iR,SAAS,CAAE5pQ,KAAMpvE,KAAKkqC,WAG1ClqC,KAAK87lB,eAAe9iR,SAAS,CAAE7qN,IAAKnuH,KAAKkqC,WAE7ClqC,KAAKi9lB,2BAETt+N,wBAAwBmuE,GAAYn9X,IAChC3vE,KAAK67lB,8BAA8BxwlB,KAAK,CAAEyhc,cAAYn9X,cAG9DishB,SAAcx1R,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAKwtjB,GAAen4R,MAAgBA,SACzGm4R,EAAchxR,WAAsBnH,MAA0B,CAAEp4S,MAAOuwkB,EAAetjlB,QAAS,SAAU81B,IAAK,OAAOwtjB,EAAcx1R,UAAKh4R,OACxIwtjB,EAAgBptjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACikD,SAC3D6vO,GAvLuBA,GAAT,GA4LjB,MAYMgD,GAA+BvjlB,GAZX,GAAGoqB,WAAU,EAAMo5jB,iBAAgB,OAAQrF,gBAAc,EAAM2E,qBAzP7D,IAyPsGF,oBA7PvG,GA6P8I7B,kBAAgBE,sBAAsB,CAC3M72jB,UACAo5jB,iBACArF,eACA2E,qBACAF,oBACA7B,kBACAE,oBAK8C18C,EAA+B,IAAbvkiB,EAAqB,CAAEoqB,SAAS,GAAUpqB,GAK9G,IAAIyjlB,GAAiC,UAASA,EAAN,MACpCh/lB,YAAYghM,GAAMi+Z,GAAe75b,GAAU59G,IACvCtnD,KAAK8gM,KAAOA,GACZ9gM,KAAK++lB,cAAgBA,GACrB/+lB,KAAKklK,SAAWA,GAChBllK,KAAKsnD,OAASA,GACdtnD,KAAKg/lB,YAAa,EAClBh/lB,KAAKipP,MAAO,EACZjpP,KAAK66X,WAAY,EACjB76X,KAAKsmd,KAAO,IAAIpiC,MAChBlkb,KAAK2xb,aAAgB6sK,KAEsBS,KADNF,cAAcR,gBAAgBC,IACJ1nO,sBAK3D92X,KAAK++lB,cAAcb,WADAl+lB,KAAKipP,KAAO,OAAS,SAG5CjpP,KAAKsmd,KAAK99Z,IAAIxoD,KAAK++lB,cAAclD,8BAA8Bn2lB,UAAWw5lB,MAC5Cl/lB,KAAKipP,MAA4C,SAApCi2W,GAAqBpyJ,aACtD9sc,KAAKipP,MAA4C,SAApCi2W,GAAqBpyJ,cAEpC9sc,KAAKqI,UAAY62lB,GAAqBvvhB,WAI9CwvhB,gBACA,OAAOn/lB,KAAKipP,KAEZm2W,gBACA,OAAQp/lB,KAAKipP,KAEb5gP,eACA,OAAOrI,KAAK66X,UAEZiiO,6BACA,OAAO98lB,KAAK8gM,KAAK5yL,cAAci7T,wBAE/B/6P,gBACA,OAAOpuE,KAAK++lB,cAAc/C,sBAAsBh8lB,KAAKipP,KAAO,mBAAqB,oBAEjF5gP,aAAS1E,IACT3D,KAAK66X,UAAYl3X,GAErBktC,kBACI7wC,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAKsmd,KAAK99Z,IAAIxoD,KAAKklK,SAASrpD,OAAO77G,KAAK8gM,KAAK5yL,cAAe,QAASlO,KAAK2xb,iBAGlFhrb,cACI3G,KAAKsmd,KAAKx/c,cAEdgiP,OAAOt7O,IACHxN,KAAKklK,SAAS13J,GAAO,cAAgB,YAAYxN,KAAK8gM,KAAK5yL,cA5T9C,cA+TrB4wlB,SAAkC14R,UAAO,SAAmDh4R,IAAK,OAAO,IAAKA,IAAK0wjB,GAAmCr7R,MAAyBA,OAAoBA,MAAyBm4R,IAAgBn4R,MAAyBA,OAAmBA,MAAyBA,SAChTq7R,EAAkCv4R,UAAqB9C,MAAyB,CAAE37T,KAAMg3lB,EAAmCj7lB,UAAW,CAAC,CAAC,GAAI,gCAAiC,KAAM6iU,SAAU,GAAIC,aAAc,SAAwDnD,GAAI/3T,IAAgB,EAAL+3T,IAC9QC,MAAmB,WAAYh4T,GAAIuzlB,WAAnCv7R,CAA+C,gBAAiBh4T,GAAIuzlB,WAApEv7R,CAAgF,SAAUh4T,GAAIuzlB,WAA9Fv7R,CAA0G,aAAch4T,GAAIpD,SAA5Ho7T,CAAsI,kBAAmBh4T,GAAI0zlB,UAA7J17R,CAAwK,kBAAmBh4T,GAAI2zlB,YAC9Lx4R,OAAQ,CAAE39E,KAAM,QAAUjc,MAAOulJ,GAAM1kL,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,SAAU,EAAG,YAAah1Q,SAAU,SAAoDsxQ,GAAI/3T,IAAgB,EAAL+3T,IAC/KC,MAAiB,EAAG,OAAQ,GACrB,EAALD,IACFC,MAAkB,UAAWh4T,GAAI2iE,YAChCq5P,WAAY,CAACpB,OAAiBuB,cAAe,IACtDp5R,EAAW,IACPy5R,OAAY,qBACZA,OAAY,wBACZA,SAAY,gBACZH,EAAW,cAAeE,UAC3B82R,EAAkCz+kB,UAAW,kBAAc,GAC9DmuB,EAAW,EACPy5R,SAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCg3R,EAAkCz+kB,UAAW,YAAa,MAC7DmuB,EAAW,IACPy5R,OAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCg3R,EAAkCz+kB,UAAW,YAAa,MAC7DmuB,EAAW,EACPy5R,SAAY,oBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClC82R,EAAkCz+kB,UAAW,WAAY,MAC5DmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B82R,EAAkCz+kB,UAAW,YAAQ,GACxDy+kB,EAAoCtwjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC1E+slB,GACAzzR,MACA4jD,SACL+yO,GA9F2CA,GAAT,GAmGjCO,GAAiB,UAASA,EAAN,MACpBv/lB,YAAYmzX,GAAc/tN,GAAU+1N,GAASqkO,GAAiBP,GAAez3iB,IACzEtnD,KAAKizX,aAAeA,GACpBjzX,KAAKklK,SAAWA,GAChBllK,KAAKi7X,QAAUA,GACfj7X,KAAKs/lB,gBAAkBA,GACvBt/lB,KAAK++lB,cAAgBA,GACrB/+lB,KAAKsnD,OAASA,GAMdtnD,KAAKwK,SAAU,EAMfxK,KAAK+5lB,YAAc,MAOnB/5lB,KAAK6vlB,gBAAiB,EAOtB7vlB,KAAKilU,UAAW,EAKhBjlU,KAAKkvlB,UAAY,eAKjBlvlB,KAAKqtC,UAAY,IAAIzoC,MAKrB5E,KAAK86lB,SAAW,IAAIl2lB,MAKpB5E,KAAK0+lB,UAAY,IAAI95lB,MACrB5E,KAAKk2Y,aAAc,EAInBl2Y,KAAKoH,KAAO,IAAIwxX,MAChB54X,KAAKu/lB,oBAAsBX,IAA4B,GACvD5+lB,KAAKipC,cAAgB,IAAIi7Y,MACzBlkb,KAAKw/lB,yBAA0B,KAC/B76R,KAAgBV,IAChBjkU,KAAKs/lB,gBAAgB/E,MAAQv6lB,KAC7BA,KAAK++lB,cAAcxE,MAAQv6lB,KAK3BuK,WAAO5G,IACP3D,KAAKy/lB,QAAU97lB,GACf3D,KAAKklK,SAAS5oB,SAASt8I,KAAKi7X,QAAQ/sX,cAAe,SAAUvK,IAE7D4G,aACA,OAAOvK,KAAKy/lB,QAUZv6L,eAAWvha,IACX3D,KAAKu/lB,oBAAsBX,GAA4Bj7lB,IACnD3D,KAAK+7lB,UACL/7lB,KAAK0/lB,oBAAoB1/lB,KAAK++lB,cAAcpC,cAC5C38lB,KAAK2/lB,mBAAmB3/lB,KAAK+7lB,QAAQ7tlB,gBAGzCg3Z,iBACA,OAAOlla,KAAKu/lB,oBAEZK,gBACA,MAA4B,QAArB5/lB,KAAK+5lB,YAEZ8F,kBACA,MAA4B,UAArB7/lB,KAAK+5lB,YAEZ+F,mBACA,MAA4B,WAArB9/lB,KAAK+5lB,YAEZgG,iBACA,MAA4B,SAArB//lB,KAAK+5lB,YAEZ1oiB,UACA,OAAOrxD,KAAKizX,aAAavuD,IAAM,MAAQ,MAEvCs7R,yBACA,OAAOhgmB,KAAKu/lB,oBAAoB95jB,QAEpCoL,kBACI7wC,KAAKsnD,OAAO4yR,kBAAkB,KAEtBl6U,KAAK0/lB,sBADL1/lB,KAAK++lB,cAAcpC,cAMvBzqlB,WAAW,KACPlS,KAAK06lB,0BAGb16lB,KAAKw6kB,gBAETzzkB,YAAYC,IACR,MAAMi5lB,GAAiBj5lB,GAAQ+ylB,YAC/B,GAAIkG,GAAgB,CAChB,MAAMC,GAAuD,WAAjCD,GAAel4iB,eAA8D,WAAhCk4iB,GAAez4lB,aACxFxH,KAAKsnD,OAAOy4Y,SAASvzb,MAAK+kD,QAAK,IAAI7rD,UAAU,KACrCw6lB,KACIlgmB,KAAKw/lB,0BACLx/lB,KAAKipC,cAAcniC,cACnB9G,KAAKipC,cAAgB,IAAIi7Y,MACzBlkb,KAAKw/lB,yBAA0B,GAEnCx/lB,KAAKw6kB,iBAETx6kB,KAAK++lB,cAAcJ,2BAI/Bh4lB,cACQ3G,KAAKipC,eACLjpC,KAAKipC,cAAcniC,cAMvB2olB,0BACA,MAAO,CACHzikB,MAAO,aACPsd,IAAK,WACL+kC,OAAQ,SACR8whB,QAAS,iBACXngmB,KAAKogmB,cAKPx7D,mBACA,OAAO5kiB,KAAKu/lB,oBAAoB95jB,QAKhC+pjB,uBACA,MA1vB0B+J,IACvBA,EAAmB9zjB,SAAgD,WAArC8zjB,EAAmBsF,cAyvB7CwB,CAAyBrgmB,KAAKu/lB,qBAKrCjG,yBACA,OAAOA,GAAmBt5lB,KAAKu/lB,qBAK/BhQ,wBACA,OAAOuK,GAAoB95lB,KAAK+5lB,aAAe,WAAa,WAMhE5rjB,UAAUvqB,IACN,MAAMkpB,GAAM6sjB,GAAc35lB,KAAKoH,KAAMwc,KAChCkpB,IAAOA,GAAIzkC,WAGhBrI,KAAKs/lB,gBAAgBnxjB,UAAUrB,GAAKlpB,IACpC5jB,KAAK06lB,uBAKT1L,WAAW35d,GAAeq+P,IACtB,GAAI8sE,GAAYnrU,GAAc3sH,QAC1B,OAEJ,MAAM8sP,GAAgBngI,GAAc3sH,OAEpC,GAD4B08iB,GAAS5vT,GAAe,iBAAmB4vT,GAAS5vT,GAAcy6I,cAAe,gBAEzG,OAEJ,MAAMnjW,GAAM6sjB,GAAc35lB,KAAKoH,KAAMssX,IACrC1zX,KAAKs/lB,gBAAgBlF,YAAYttjB,GAAK4mV,IACtC1zX,KAAK06lB,sBAKTv5iB,WAEQnhD,KAAK0/lB,sBADL1/lB,KAAK++lB,cAAcpC,cAMvB38lB,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAK++lB,cAAc9B,6BAM3BvC,sBACQ16lB,KAAKu/lB,oBAAoB95jB,SACzBzlC,KAAK++lB,cAAcrE,sBAG3BlgB,gBACI,IAAKx6kB,KAAKi7X,SAAWj7X,KAAKw/lB,wBACtB,OAEJ,MAAMzD,GAAU/7lB,KAAK+7lB,QAAQ7tlB,cAC7BlO,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAKipC,cAAcuf,IAAIxoD,KAAKklK,SAASrpD,OAAOkgf,GAAS,UAAY/1J,KAC7Dhmc,KAAKs/lB,gBAAgBruC,UAAUjrH,SAGvChmc,KAAKipC,cAAcuf,IAAIxoD,KAAKklK,SAASrpD,OAAOkgf,GAAS,WAAY,KAzwBlD30lB,KA0wBGpH,KAAKoH,KAzwBtBR,QAASkmC,KACVA,GAAI+lS,SAAU,KAwwBVytR,MAEAtgmB,KAAK4kiB,cAAgB5kiB,KAAKs5lB,oBAC1Bt5lB,KAAK2/lB,mBAAmB5D,IAE5B/7lB,KAAKw/lB,yBAA0B,EAEnCE,oBAAoB/C,IAChB38lB,KAAKsnD,OAAOy4Y,SAASvzb,MAAK+kD,QAAK,IAAI7rD,UAAU,KACzC,MAAM66lB,GAAuBvgmB,KAAKu/lB,oBAAoBV,cAChD2B,GAA0BxgmB,KAAKm8lB,kBAAoBn8lB,KAAKq8lB,iBACxDoE,GAAoBD,IAA2B7D,GAI/C+D,GAAyC,YAAzBH,GAHIC,KACrB7D,IACwB,YAAzB4D,IAGAvgmB,KAAKm8lB,iBAAiBrzW,QAAO,GAC7B9oP,KAAKq8lB,iBAAiBvzW,QAAO,KAExB23W,IAAqBC,MAC1B1gmB,KAAKm8lB,iBAAiBrzW,QAAO,GAC7B9oP,KAAKq8lB,iBAAiBvzW,QAAO,IAE7B03W,IAA2BE,IAC3B1gmB,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAK++lB,cAAc9B,+BAKnC0C,mBAAmB5D,IACf/7lB,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAKipC,cAAcuf,IAAIxoD,KAAKklK,SAASrpD,OAAOkgf,GAAS,QAAU4E,KAC/B3gmB,KAAK++lB,cAAcR,gBAAgBoC,IACJ7pO,uBACpB92X,KAAK++lB,cAAcpC,cAG1D38lB,KAAK++lB,cAAchB,cAAc4C,WAKjDtB,SAAkBj5R,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKixjB,GAAmB57R,MAAyB6C,MAA6B7C,MAAyBA,OAAmBA,MAAyBA,OAAoBA,MAAyBu2R,IAAkBv2R,MAAyBm4R,IAAgBn4R,MAAyBA,SACjW47R,EAAkB94R,UAAqB9C,MAAyB,CAAE37T,KAAMu3lB,EAAmBx7lB,UAAW,CAAC,CAAC,mBAAoB20X,eAAgB,SAA0Ch1D,GAAI/3T,GAAKgtX,IAEzL,GAF8M,EAALj1D,IACvMC,MAAsBg1D,GAAU0gO,GAAsB,GAC/C,EAAL31R,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIrE,KAAOsjH,MAC/D87M,UAAW,SAAiChD,GAAI/3T,IAKnD,GALmE,EAAL+3T,KAC5DC,KAAmB+uD,GAAM,GACzB/uD,KAAmB4sI,GAAM,GACzB5sI,KAAmB6sI,GAAM,GACzB7sI,KAAmB62P,GAAM,EAAGzrjB,QACrB,EAAL20T,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIswlB,QAAUrxe,GAAGxjH,OACtEu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI0wlB,iBAAmBzxe,GAAGxjH,OAC/Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI4wlB,iBAAmB3xe,GAAGxjH,OAC/Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI4vlB,oBAAsB3we,MAC9Eg8M,SAAU,GAAIC,aAAc,SAAwCnD,GAAI/3T,IAAgB,EAAL+3T,KACpFC,MAAmB,MAAOh4T,GAAI4lD,KAC9BoyQ,MAAmB,aAAch4T,GAAIyqY,YAArCzyE,CAAkD,cAAeh4T,GAAIyqY,YAArEzyE,CAAkF,iBAAkBh4T,GAAIm0lB,UAAxGn8R,CAAmH,mBAAoBh4T,GAAIo0lB,YAA3Ip8R,CAAwJ,oBAAqBh4T,GAAIq0lB,aAAjLr8R,CAA+L,kBAAmBh4T,GAAIs0lB,WAAtNt8R,CAAkO,wBAAyBh4T,GAAIu0lB,sBAC9Pp5R,OAAQ,CAAEp8T,QAAS,UAAWuvlB,YAAa,cAAelK,eAAgB,iBAAkB5qR,SAAU,WAAYiqR,UAAW,YAAa3klB,OAAQ,SAAU26Z,WAAY,aAAck7L,aAAc,gBAAkB7pO,QAAS,CAAElpV,UAAW,YAAaytjB,SAAU,WAAY4D,UAAW,aAAeloO,SAAU,CAAC,iBAAkBrqW,SAAU,CAACs3S,MAA0B,CACxWu2R,GACA4B,GACA90R,KACA,CACIjuR,QAASkuR,KACTC,SAAU,oBAEdvD,OAA8B51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,WAAc,IAAI05R,GAS/EA,UAAUx5R,iKACL,CAAC,CAAC,iCAAkC,GAAI,aAAcw5R,IAAU,CAAC,EAAG,QAAS,CAAC,UAAW,IAAK,CAAC,UAAW,IAAK,CAAC,EAAG,SAAU,EAAG,QAAS,CAAC,EAAG,oBAAqB,CAAC,EAAG,2BAA4B,EAAG,WAAY,CAAC,gCAAiC,GAAI,EAAG,OAAQ,EAAG,QAAS,CAAC,OAAQ,UAAW,EAAG,UAAW,oBAAqB,CAAC,UAAW,IAAK,CAAC,EAAG,QAAS,WAAY,CAAC,gCAAiC,GAAI,EAAG,QAAS,CAAC,mBAAoB,IAAK,CAAC,mBAAoB,GAAI,OAAQ,MAAO,EAAG,UAAW,UAAW,MAAO,QAAS,mBAAoB,oBAAqB,KAAM,QAAS,EAAG,QAAS,CAAC,mBAAoB,GAAI,OAAQ,MAAO,EAAG,UAAW,UAAW,MAAO,QAAS,mBAAoB,oBAAqB,KAAM,SAAU,CAAC,qBAAsB,IAAK,CAAC,mBAAoB,IAAK,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,OAAQ,WAAY,EAAG,UAAW,WAAY,KAAM,EAAG,QAAS,CAAC,OAAQ,WAAY,EAAG,UAAW,WAAY,MAAO,CAAC,EAAG,oBAAqB,CAAC,EAAG,YAAe1uiB,SAAU,SAAoCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAClhCC,MAA0B,EAAG,GAC7BA,MAAkB,EAAGo9R,GAA2C,EAAG,EAAG,eAAgB,GACtFp9R,MAAkB,EAAGq9R,GAA2C,EAAG,EAAG,eAAgB,GACtFr9R,MAAkB,EAAGs9R,GAA0C,EAAG,EAAG,cAAe,KAAM,EAAGt9R,OAC7FA,MAAkB,EAAGu9R,GAA0C,EAAG,EAAG,cAAe,KAAM,EAAGv9R,OAC7FA,MAAkB,EAAGw9R,GAAkD,EAAG,EAAG,sBAAuB,IAC7F,EAALz9R,KACFC,MAAiB,GACjBA,MAAkB,QAASh4T,GAAIq0lB,cAC/Br8R,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIq0lB,cAC9Br8R,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIm5hB,gBAC7Bn9N,WAAY,WAAc,MAAO,CAACy5R,GAAoC76R,MAAaA,MAAyBA,MAAgBy4R,GAAmCz4R,MAAgB86R,GAAc96R,MAAgBsB,OAAkCC,cAAe,EAAG90T,KAAM,CAAEqyT,UAAW,EACjRl7T,QAAQ,QAAS,IACbC,MAAM,YAAUC,MAAM,CAAEC,QAAS,QACjCE,MAAW,cAAe,IACtBH,MAAM,CAAEC,QAAS,OACjBI,MAAQ,yBAI5BgkC,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCqskB,EAAkBh/kB,UAAW,SAAU,MAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3Bq3R,EAAkBh/kB,UAAW,eAAW,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BqskB,EAAkBh/kB,UAAW,oBAAgB,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BqskB,EAAkBh/kB,UAAW,mBAAe,GAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3Bq3R,EAAkBh/kB,UAAW,sBAAkB,GAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3Bq3R,EAAkBh/kB,UAAW,gBAAY,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,QAC1BiiU,EAAW,oBAAqB,CAACjiU,UAClCw5lB,EAAkBh/kB,UAAW,aAAc,MAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BqskB,EAAkBh/kB,UAAW,iBAAa,GAC7CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3By6lB,EAAkBh/kB,UAAW,iBAAa,GAC7CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3By6lB,EAAkBh/kB,UAAW,gBAAY,GAC5CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3By6lB,EAAkBh/kB,UAAW,iBAAa,GAC7CmuB,EAAW,EACPy5R,SAAY,qBACZA,SAAY,qBACZH,EAAW,cAAeE,UAC3Bq3R,EAAkBh/kB,UAAW,mBAAe,GAC/CmuB,EAAW,IACPy5R,OAAY,wBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCu3R,EAAkBh/kB,UAAW,YAAa,MAC7CmuB,EAAW,IACPy5R,OAAY,0BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCu3R,EAAkBh/kB,UAAW,cAAe,MAC/CmuB,EAAW,EACPy5R,SAAY,2BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCu3R,EAAkBh/kB,UAAW,eAAgB,MAChDmuB,EAAW,EACPy5R,SAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCu3R,EAAkBh/kB,UAAW,aAAc,MAC9CmuB,EAAW,IACPy5R,OAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCu3R,EAAkBh/kB,UAAW,MAAO,MACvCmuB,EAAW,EACPy5R,SAAY,+BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCu3R,EAAkBh/kB,UAAW,qBAAsB,MACtDmuB,EAAW,EACPmqV,SAAgBwgO,IAChBrxR,EAAW,cAAe8wD,QAC3BymO,EAAkBh/kB,UAAW,YAAQ,GACxCmuB,EAAW,EACPq5R,SAAU,UAAW,CAAExmT,QAAQ,IAC/BymT,EAAW,cAAej5T,QAC3BwwlB,EAAkBh/kB,UAAW,eAAW,GAC3CmuB,EAAW,EACP6jW,QAAa,qBAAsB,CAAEnjR,KAAMrgH,QAC3Ci5T,EAAW,cAAe8wD,QAC3BymO,EAAkBh/kB,UAAW,2BAAuB,GACvDmuB,EAAW,EACPq5R,SAAU,mBAAoB,CAAExmT,QAAQ,IACxCymT,EAAW,cAAeg3R,KAC3BO,EAAkBh/kB,UAAW,wBAAoB,GACpDmuB,EAAW,EACPq5R,SAAU,mBAAoB,CAAExmT,QAAQ,IACxCymT,EAAW,cAAeg3R,KAC3BO,EAAkBh/kB,UAAW,wBAAoB,GACpDg/kB,EAAoB7wjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,KAC1DqB,MACAt5T,MACAmrlB,GACA4B,GACA7vO,SACLszO,GAxc2BA,GAAT,GA6cf+B,SAAN,gBAA+Bl2R,MAE/Bk2R,SAAiBh7R,UAAqB,WAAc,IAAIi7R,GAA+B,OAAO,SAAkCjzjB,IAAK,OAAQizjB,KAAkCA,GAAgC59R,MAA6B29R,KAAoBhzjB,IAAKgzjB,IAA/N,GACtCA,EAAiBj2R,UAAqB1H,MAAyB,CAAE37T,KAAMs5lB,EAAkBx6R,OAAQ,CAAE9B,WAAY,cAAgB34S,SAAU,CAACs3S,SAC1Ij1R,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BoukB,EAAiB/glB,UAAW,kBAAc,GAPvC+glB,MASN,IAAIE,GAIJ,IAAIJ,GAAqCI,GAAuC,cAAiDF,GAC7HthmB,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,KAavB,IAAI4oS,GAVJL,GAAmC96R,UAAO,SAAoDh4R,IAAK,OAAO,IAAKA,IAAK8yjB,IAAoCz9R,MAAyB6C,QACjL46R,GAAmC/1R,UAAqB1H,MAAyB,CAAE37T,KAAMo5lB,GAAoCr9lB,UAAW,CAAC,CAAC,GAAI,iCAAkC,KAAMsoB,SAAU,CAACs3S,MAA0B,CAC/M,CACI5qR,QAASuojB,GACTtojB,aAAa/nC,SAAW,IAAMuwlB,OAElC79R,SACZy9R,GAAqCI,GAAuC9yjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QACvHo6R,IAOH,IAAIM,GAAkCD,GAAoC,cAA8CH,GACpHthmB,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,GAEf4nE,eACA,OAAO,IAGfihO,GAAgCp7R,UAAO,SAAiDh4R,IAAK,OAAO,IAAKA,IAAKozjB,IAAiC/9R,MAAyB6C,QACxKk7R,GAAgCj7R,UAAqB9C,MAAyB,CAAE37T,KAAM05lB,GAAiC39lB,UAAW,CAAC,CAAC,4BAA6BsoB,SAAU,CAACs3S,MAA0B,CAC1L,CACI5qR,QAASuojB,GACTtojB,aAAa/nC,SAAW,IAAMwwlB,OAElC99R,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAAkDsxQ,GAAI/3T,MAAUm8T,cAAe,IAC5J45R,GAAkCD,GAAoC/yjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QACjH06R,IAwyBH,MACMjmkB,GAAW,GACjBA,GAASwoG,gBAAkB,OAC3BxoG,GAASwoG,iBAAmB,QAC5BxoG,GAASwoG,cAAgB,KACzBxoG,GAASwoG,gBAAkB,OAC3BxoG,GAASwoG,WAAa,OACtBxoG,GAASwoG,UAAY,MACrBxoG,GAASwoG,YAAc,QACvBxoG,GAASwoG,YAAc,QACvB,MAAM09d,GAAc57lB,OAAOw0D,OAAO,GAAI9+B,IACtCkmkB,GAAY19d,gBAAkB,QAC9B09d,GAAY19d,iBAAmB,OAI/B,IAobM29d,SAAN,gBAA8Bx2R,MAE9Bw2R,SAAgBt7R,UAAqB,WAAc,IAAIu7R,GAA8B,OAAO,SAAiCvzjB,IAAK,OAAQuzjB,KAAiCA,GAA+Bl+R,MAA6Bi+R,KAAmBtzjB,IAAKszjB,IAA1N,GACrCA,EAAgBv2R,UAAqB1H,MAAyB,CAAE37T,KAAM45lB,EAAiB96R,OAAQ,CAAEhG,SAAU,YAAcz0S,SAAU,CAACs3S,SACpIj1R,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B0ukB,EAAgBrhlB,UAAW,gBAAY,GAPpCqhlB,MASN,IAAIE,GAKJ,IAAIC,GAAiCD,GAAmC,cAA6CF,GACjH5hmB,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,GAEf4nE,eACA,OAAO,IAaf,IAAIuhO,GAVJD,GAA+Bz7R,UAAO,SAAgDh4R,IAAK,OAAO,IAAKA,IAAKyzjB,IAAgCp+R,MAAyB6C,QACrKu7R,GAA+Bt7R,UAAqB9C,MAAyB,CAAE37T,KAAM+5lB,GAAgCh+lB,UAAW,CAAC,CAAC,2BAA4BsoB,SAAU,CAACs3S,MAA0B,CACvL,CACI5qR,QAAS6ojB,GACT5ojB,aAAa/nC,SAAW,IAAM6wlB,OAElCn+R,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAAiDsxQ,GAAI/3T,MAAUm8T,cAAe,IAC3Ji6R,GAAiCD,GAAmCpzjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QAC/G+6R,IAMH,IAAIE,GAAoCD,GAAsC,cAAgDJ,GAC1H5hmB,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,KAGvBopS,GAAkC37R,UAAO,SAAmDh4R,IAAK,OAAO,IAAKA,IAAK2zjB,IAAmCt+R,MAAyB6C,QAC9Ky7R,GAAkC52R,UAAqB1H,MAAyB,CAAE37T,KAAMi6lB,GAAmCl+lB,UAAW,CAAC,CAAC,GAAI,gCAAiC,KAAMsoB,SAAU,CAACs3S,MAA0B,CAC5M,CACI5qR,QAAS6ojB,GACT5ojB,aAAa/nC,SAAW,IAAM+wlB,OAElCr+R,SACZs+R,GAAoCD,GAAsCtzjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QACrHi7R,IAwyEH,IAAIC,GAAY,UAASA,EAAN,QAEnBA,SAAa57R,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAK4zjB,IACxEA,EAAa32R,UAAqB5H,MAAwB,CAAE37T,KAAMk6lB,IAClEA,EAAa12R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,UAJ9CihmB,GAAT,GAyBZC,GAAU,UAASA,EAAN,QAEjBA,SAAW77R,UAAO,SAA4Bh4R,IAAK,OAAO,IAAKA,IAAK6zjB,IACpEA,EAAW52R,UAAqB5H,MAAwB,CAAE37T,KAAMm6lB,IAChEA,EAAW32R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,UAJ9CkhmB,GAAT,GAmId,IA2HIC,GAAY,UAASA,EAAN,QAEnBA,SAAa97R,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAK8zjB,IACxEA,EAAa72R,UAAqB5H,MAAwB,CAAE37T,KAAMo6lB,IAClEA,EAAa52R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,UAJ9CmhmB,GAAT,GAiBZC,GAAoB,UAASA,EAAN,QAE3BA,SAAqB/7R,UAAO,SAAsCh4R,IAAK,OAAO,IAAKA,IAAK+zjB,IACxFA,EAAqB92R,UAAqB5H,MAAwB,CAAE37T,KAAMq6lB,IAC1EA,EAAqB72R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,MAAcugY,SAJ5D6gO,GAAT,GA2BpBC,GAAc,UAASA,EAAN,QAErBA,SAAeh8R,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAKg0jB,IAC5EA,EAAe/2R,UAAqB5H,MAAwB,CAAE37T,KAAMs6lB,IACpEA,EAAe92R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,UAJ9CqhmB,GAAT,GAMlB,MAAM/re,GAAkB,EAAGhB,cAAe1nH,MACtCA,EAAM0oH,kBACN1oH,EAAMu0C,kBAGJmgjB,GAAkB5pc,GAAW5yJ,OAAOrC,KAAKi1J,GAAS1rJ,OAAOkT,IAAKw4I,EAAQx4I,KAAIwH,KAAK,KAWrF,IAAIuxkB,GAAoB,UAASA,EAAN,MACvBl5lB,YAAYopZ,GAAWgzE,GAAUjpG,IAC7BjzX,KAAKkpZ,UAAYA,GACjBlpZ,KAAKk8d,SAAWA,GAChBl8d,KAAKizX,aAAeA,GACpBjzX,KAAK2oF,YAAc,aACnB3oF,KAAK4jB,MAAQ,EACb5jB,KAAK0wgB,SAAW,YAChB1wgB,KAAK6yU,SAAU,EACf7yU,KAAKipC,cAAgB,IAAIi7Y,MAEzBj4a,gBACA,OAAOjM,KAAKizX,aAAavuD,IAAM,MAAQ,MAEvCgvD,eACA,OAAO1zX,KAAKk8d,SAAStub,SAAS5tC,KAAK4jB,QAAS,EAAK,EAEjDsyX,kBACA,MAAM3+S,GAAoC,eAArBv3F,KAAK2oF,YACpB2gX,GAActpc,KAAKk8d,SAAS5yB,YAAYtpc,KAAK4jB,OAC7CgqB,GAAW5tC,KAAKk8d,SAAStub,SAAS5tC,KAAK4jB,OAC7C,OAAOy+kB,GAAgB,CACnB,kBAAmBrimB,KAAK6yU,QACxB,cAAc,EACd,wBAAyBt7O,GACzB,uBAAwBA,GACxB,kCAAmCA,IAAgB+xW,GACnD,iCAAkC/xW,IAAgB+xW,GAClD,+BAAgC/xW,IAAgB3pD,GAChD,8BAA+B2pD,IAAgB3pD,GAC/C,sBAAuB07Z,KAG3Bt9J,YACA,OAAO,EAAIhsS,KAAK4jB,MAAQ,EAE5B0+kB,cACQtimB,KAAKuimB,WACLvimB,KAAKwimB,aAGLximB,KAAKyimB,mBAGbriD,YACIpgjB,KAAK6yU,SAAU,EAEnBo3M,aACIjqhB,KAAK6yU,SAAU,EAEnBo+O,UAAUtjjB,IACN,MAAMwnX,GAAUxnX,IAASA,GAAMwnX,QACzB59R,GAAoC,eAArBv3F,KAAK2oF,YACpBiuT,GAAS7mR,KACXpiH,GAAMu0C,iBACN,MAAMwkZ,GAAW1mc,KAAKk8d,SAAS47H,UAAU93lB,KAAK4jB,OAC9C5jB,KAAKk8d,SAAS5vV,QAAQo6T,GAAU32U,KAEhColQ,KAAYpxP,YACZp2H,GAAMu0C,iBACNliD,KAAKsimB,eAEJI,IAAoBvtO,KAAYpxP,eACjC6yQ,IAAO,IAEFr/S,IAAgB49R,KAAYpxP,gBACjC6yQ,GAAO,IAEDr/S,IAAgB49R,KAAYpxP,cAG5BxsC,IAAgB49R,KAAYpxP,gBAClC6yQ,GAAO,IAHPA,IAAO,IAMX2rN,iBACA,MAAMt9N,GAAQjlY,KAAKk8d,SAASj3F,MAC5B,OAAwB,IAAjBA,GAAMl/X,QAAgBk/X,GAAM,GAAGmxN,UAE1C/wlB,WACI,IAAIqhc,GACJ,MAAMjka,GAAWziC,KAAKkpZ,UAAUL,WAAWr8Y,QAAKokD,MAAIylE,OAAkBtpH,MAAO,IAAM/M,KAAKk8d,SAAS5yB,YAAYtpc,KAAK4jB,SAASgtC,QAAI,IAAM81Y,GAAW1mc,KAAKk8d,SAAS47H,UAAU93lB,KAAK4jB,WAASgtC,MAAI,IAAM5wD,KAAKk8d,SAAS27H,qBAAqB73lB,KAAK4jB,OAAO,KAAQgnB,QA7FrO5oB,IAAWikb,KAAa3ga,SAAG2ga,IAAWz5b,MAAK8E,QAAM,MAAM40b,QAAUlkb,IA6F8K2jiB,CAAkB3ljB,KAAKkpZ,UAAUH,kBAAgBn+W,MA3FhSs+W,IAAc+8C,IAAa/8C,EAAUJ,UAC1Dt8Y,QAAK05b,MAAUh9C,EAAUH,eAAepjZ,QAAI,EAAG6sY,SAAOC,aAAa,CACpE0zD,UAAWF,GAAUzzD,MACrB4zD,UAAWH,GAAUxzD,MACrBD,SACAC,aAsFgUszD,CAAiB/lc,KAAKkpZ,aAAaxjZ,UAAU,EAAG8sY,SAAOC,SAAO0zD,aAAWC,iBACjY,IAAIr2U,GAEAA,GADqB,aAArB/vH,KAAK2oF,YACG8pT,GAAQ2zD,GAEQ,QAAnBpmc,KAAKiM,UACFk6b,GAAY3zD,GAGZA,GAAQ2zD,GAEpBnmc,KAAKk8d,SAAS5vV,QAAQo6T,GAAU32U,MAEpC/vH,KAAKipC,cAAcuf,IAAI/lB,IACvBziC,KAAKipC,cAAcuf,IAAIxoD,KAAKkpZ,UAAUH,aAAarjZ,UAAU,IAAM1F,KAAKk8d,SAAS27H,qBAAqB73lB,KAAK4jB,OAAO,KAEtHjd,cACQ3G,KAAKipC,eACLjpC,KAAKipC,cAAcniC,cAG3B67lB,iBACI3imB,KAAKk8d,SAASu7H,UAAUz3lB,KAAK4jB,OAEjC4+kB,aACIximB,KAAKk8d,SAASu7H,UAAUz3lB,KAAK4jB,MAAQ,GAEzCg/kB,qBACI,MAAM5oN,GAAOh6Y,KAAKk8d,SAASliF,KAAKh6Y,KAAK4jB,OAC/Bi/kB,GAAW7imB,KAAKk8d,SAASliF,KAAKh6Y,KAAK4jB,MAAQ,GAC3Ck/kB,GAAgB9oN,GAAKqpH,YACrB0/F,GAAc/oN,GAAKo8M,UACnB7+f,GAAoC,eAArBv3F,KAAK2oF,YAC1B,OAAO05gB,GAAgB,CACnB,UAAU,EACV,YAAaS,IAAiBD,GAAS9L,SACvC,kBAAmB+L,GACnB,oBAAqBA,IAAiBvrgB,KAAiBwrgB,GACvD,qBAAsBD,IAAiBvrgB,IAAgBwrgB,GACvD,kBAAmBD,KAAkBvrgB,KAAiBwrgB,GACtD,oBAAqBD,KAAkBvrgB,IAAgBwrgB,KAG/DC,iBACI,MAAMhpN,GAAOh6Y,KAAKk8d,SAASliF,KAAKh6Y,KAAK4jB,MAAQ,GACvCq/kB,GAAWjjmB,KAAKk8d,SAASliF,KAAKh6Y,KAAK4jB,OACnCk/kB,GAAgB9oN,GAAKqpH,YACrB0/F,GAAc/oN,GAAKo8M,UACnB7+f,GAAoC,eAArBv3F,KAAK2oF,YAC1B,OAAO05gB,GAAgB,CACnB,UAAU,EACV,YAAaS,IAAiBG,GAASlM,SACvC,kBAAmB+L,GACnB,qBAAsBA,IAAiBvrgB,KAAiBwrgB,GACxD,oBAAqBD,IAAiBvrgB,IAAgBwrgB,GACtD,oBAAqBD,KAAkBvrgB,KAAiBwrgB,GACxD,kBAAmBD,KAAkBvrgB,IAAgBwrgB,KAG7DN,mBACI,MACMp3lB,GAAOrL,KAAK4jB,MAAQ,EACrB5jB,KAAKk8d,SAASu7H,UAFNz3lB,KAAK4jB,QAGd5jB,KAAKk8d,SAASu7H,UAAUpslB,MAIpC2tlB,SAAqB5yR,UAAO,SAAsCh4R,IAAK,OAAO,IAAKA,IAAK4qjB,GAAsBv1R,MAAyBkE,KAA2B,GAAIlE,MAAyB6zR,IAAkB7zR,MAAyB6C,QAC1O0yR,EAAqBzyR,UAAqB9C,MAAyB,CAAE37T,KAAMkxlB,EAAsBn1lB,UAAW,CAAC,CAAC,uBAAwB6iU,SAAU,GAAIC,aAAc,SAA2CnD,GAAI/3T,IAAgB,EAAL+3T,IACpNC,MAAkB,WAAY,WAA8D,OAAOh4T,GAAI62lB,eAAvG7+R,CAAyH,UAAW,WAA6D,OAAOh4T,GAAI20iB,aAA5M38O,CAA4N,WAAY,WAA8D,OAAOh4T,GAAIw+gB,cAAjTxmN,CAAkU,UAAW,SAAyD97T,IAAU,OAAO8D,GAAIwljB,UAAUtpjB,MAC9Z,EAAL67T,KACFC,MAAmB,mBAAoBh4T,GAAIk9E,YAA3C86O,CAAwD,OAAQh4T,GAAIilgB,SAApEjtM,CAA8E,WAAYh4T,GAAIioX,UAC9FjwD,MAAkBh4T,GAAIyqY,aACtBzyE,MAAmB,iBAAkBh4T,GAAIugS,MAAzCy3B,CAAgD,QAASh4T,GAAIugS,OAC7Dy3B,MAAmB,kBAAmBh4T,GAAIonU,WACzCjM,OAAQ,CAAEj+O,YAAa,cAAe/kE,MAAO,SAAWiqL,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,SAAU,CAAC,EAAG,oBAAqBh1Q,SAAU,SAAuCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC5LC,MAAsB,EAAG,MAAO,GAChCA,MAAkB,QAAS,WAAgE,OAAOh4T,GAAIk3lB,mBACtGl/R,QACAA,MAAiB,EAAG,MAAO,GAC3BA,MAAsB,EAAG,MAAO,GAChCA,MAAkB,QAAS,WAAgE,OAAOh4T,GAAI+2lB,eACtG/+R,SACO,EAALD,KACFC,MAAkBh4T,GAAIm3lB,sBACtBn/R,MAAiB,GACjBA,MAAkBh4T,GAAIu3lB,oBACrBp7R,cAAe,IACxBp5R,EAAW,IACP0/I,YACA+5I,OAAY,yBACZH,EAAW,cAAe90S,SAC3BgmkB,EAAqB34kB,UAAW,mBAAe,GAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3B0qiB,EAAqB34kB,UAAW,aAAS,GAC5CmuB,EAAW,EACPy5R,SAAY,aACZH,EAAW,cAAe90S,SAC3BgmkB,EAAqB34kB,UAAW,gBAAY,GAC/CmuB,EAAW,EACPy5R,SAAY,yBACZH,EAAW,cAAeE,UAC3BgxR,EAAqB34kB,UAAW,eAAW,GAC9CmuB,EAAW,EACPy5R,SAAY,iBACZH,EAAW,cAAex5Q,QAC1Bw5Q,EAAW,oBAAqB,KACjCkxR,EAAqB34kB,UAAW,WAAY,MAC/CmuB,EAAW,EACPy5R,SAAY,SACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCkxR,EAAqB34kB,UAAW,cAAe,MAClDmuB,EAAW,IACPy5R,OAAY,2BACZA,OAAY,eACZH,EAAW,cAAex5Q,QAC1Bw5Q,EAAW,oBAAqB,KACjCkxR,EAAqB34kB,UAAW,QAAS,MAC5CmuB,EAAW,IACPioV,OAAa,YACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,yBAAqB,IACjCkxR,EAAqB34kB,UAAW,cAAe,MAClDmuB,EAAW,EACPioV,SAAa,WACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,yBAAqB,IACjCkxR,EAAqB34kB,UAAW,YAAa,MAChDmuB,EAAW,IACPioV,OAAa,YACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,yBAAqB,IACjCkxR,EAAqB34kB,UAAW,aAAc,MACjDmuB,EAAW,EACPioV,SAAa,UAAW,CAAC,WACzB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjCkxR,EAAqB34kB,UAAW,YAAa,MAChD24kB,EAAuBxqjB,EAAW,CAAEq8R,EAAQ,GAAGs+H,YAC3CrhI,EAAW,oBAAqB,CAAC6gF,KAC7B2uM,GACAxwR,QACLkyR,GAtO8BA,GAAT,GAwPpBkK,GAAc,UAASA,EAAN,QAErBA,SAAe98R,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAK80jB,IAC5EA,EAAe73R,UAAqB5H,MAAwB,CAAE37T,KAAMo7lB,IACpEA,EAAe53R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAC5DC,MACAsoZ,SANe65M,GAAT,GA+OlB,IA+IIC,GAAa,UAASA,EAAN,QAEpBA,SAAc/8R,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAK+0jB,IAC1EA,EAAc93R,UAAqB5H,MAAwB,CAAE37T,KAAMq7lB,IACnEA,EAAc73R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,MAAc4B,UAJ5DwgmB,GAAT,GASbhC,GAAY,UAASA,EAAN,MACfrhmB,YAAYmzX,GAAcqsO,IACtBt/lB,KAAKizX,aAAeA,GACpBjzX,KAAKs/lB,gBAAkBA,GACvBt/lB,KAAKk2Y,aAAc,EAEnBktN,kBACA,OAAOpjmB,KAAK8sC,IAAIiB,SAEhBqpV,oBACA,OAAOp3X,KAAK8sC,IAAIzkC,SAEhBg7lB,mBACA,OAAOrjmB,KAAK8sC,IAAI+lS,QAEhB6gD,eACA,OAAO1zX,KAAK8sC,IAAIiB,UAAY/tC,KAAK8sC,IAAI+lS,QAAU,GAAI,EAEnDywR,kBACA,YAA0Bn+lB,IAAtBnF,KAAK8sC,IAAIm4R,SACFjlU,KAAK8sC,IAAIm4R,SAEbjlU,KAAKm7lB,iBAEZ9K,yBACA,OAAI15N,GAAU32X,KAAK8sC,IAAIoijB,WACZlvlB,KAAK8sC,IAAIoijB,UAEblvlB,KAAKujmB,kBAEZx/R,uBACA,OAAO/jU,KAAKizX,aAAap0W,IAAI,cAEjCuxkB,SAASxskB,IACL5jB,KAAKs/lB,gBAAgB3E,WAAW36lB,KAAK8sC,IAAKlpB,MAGlDu9kB,SAAa/6R,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAK+yjB,GAAc19R,MAAyB6C,MAA6B7C,MAAyBu2R,MACrKmH,EAAa56R,UAAqB9C,MAAyB,CAAE37T,KAAMq5lB,EAAct9lB,UAAW,CAAC,CAAC,GAAI,mBAAoB,KAAM6iU,SAAU,GAAIC,aAAc,SAAmCnD,GAAI/3T,IAAgB,EAAL+3T,KAClMC,MAAmB,gBAAiBh4T,GAAI23lB,YAAxC3/R,CAAqD,gBAAiBh4T,GAAI2rX,cAA1E3zD,CAAyF,WAAYh4T,GAAIioX,UACzGjwD,MAAmB,SAAUh4T,GAAIyqY,YAAjCzyE,CAA8C,kBAAmBh4T,GAAIyqY,YAArEzyE,CAAkF,iBAAkBh4T,GAAI23lB,YAAxG3/R,CAAqH,mBAAoBh4T,GAAI2rX,cAA7I3zD,CAA4J,kBAAmBh4T,GAAI43lB,gBAClLz8R,OAAQ,CAAE95R,IAAK,MAAOlpB,MAAO,QAASu3kB,iBAAkB,mBAAoBoI,kBAAmB,qBAAuBv2X,MAAOwtV,GAAM3sX,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,SAAU,EAAG,QAAS,CAAC,QAAS,6CAA8C,OAAQ,SAAU,EAAG,QAAS,QAAS,EAAG,QAAS,CAAC,EAAG,UAAW,CAAC,EAAG,oBAAqB,CAAC,OAAQ,SAAU,EAAG,eAAgB,WAAY,gBAAiB,SAAU,EAAG,QAAS,SAAU,CAAC,EAAG,YAAah1Q,SAAU,SAA+BsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC/fC,MAAkB,EAAG+/R,GAA8B,EAAG,EAAG,OAAQ,GACjE//R,MAAkB,EAAGggS,GAA8B,EAAG,EAAG,OAAQ,GACjEhgS,MAAkB,EAAGigS,GAA8B,EAAG,EAAG,OAAQ,IAC1D,EAALlgS,KACFC,MAAkB,QAASh4T,GAAIqhC,IAAIqjjB,UACnC1sR,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIqhC,IAAIqjjB,UAClC1sR,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAI63lB,eAC7B77R,WAAY,CAACpB,MAAaA,MAAyBA,OAAiBuB,cAAe,IAC5Fp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAeqxR,KAC3BgI,EAAa9glB,UAAW,WAAO,GAClCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3B6yiB,EAAa9glB,UAAW,aAAS,GACpCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3Bm5R,EAAa9glB,UAAW,wBAAoB,GAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BmukB,EAAa9glB,UAAW,yBAAqB,GAChDmuB,EAAW,IACPy5R,OAAY,mBACZA,OAAY,yBACZH,EAAW,cAAeE,UAC3Bm5R,EAAa9glB,UAAW,mBAAe,GAC1CmuB,EAAW,EACPy5R,SAAY,wBACZA,SAAY,wBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCq5R,EAAa9glB,UAAW,cAAe,MAC1CmuB,EAAW,EACPy5R,SAAY,0BACZA,OAAY,0BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCq5R,EAAa9glB,UAAW,gBAAiB,MAC5CmuB,EAAW,EACPy5R,SAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCq5R,EAAa9glB,UAAW,eAAgB,MAC3CmuB,EAAW,IACPy5R,OAAY,iBACZH,EAAW,cAAex5Q,QAC1Bw5Q,EAAW,oBAAqB,KACjCq5R,EAAa9glB,UAAW,WAAY,MACvC8glB,EAAe3yjB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,KACrDkzR,MACLmH,GAjGsBA,GAAT,GA0HZnyO,GAAc,UAASA,EAAN,QAErBA,SAAe5oD,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAK4gV,IAC5EA,EAAe3jD,UAAqB5H,MAAwB,CAAE37T,KAAMknX,IACpEA,EAAe1jD,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,MAAcqnZ,SAJ5Dp5B,GAAT,GA6Ed20O,EAAgB,UAASA,EAAN,QAEvBA,SAAiBv9R,UAAO,SAAkCh4R,IAAK,OAAO,IAAKA,IAAKu1jB,IAChFA,EAAiBt4R,UAAqB5H,MAAwB,CAAE37T,KAAM67lB,IACtEA,EAAiBr4R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,UAJ9C4imB,GAAT,GAqChB/hmB,GAAY,UAASA,EAAN,QAEnBA,SAAawkU,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAKxsC,IACxEA,EAAaypU,UAAqB5H,MAAwB,CAAE37T,KAAMlG,IAClEA,EAAa0pU,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAACkhmB,GAAcC,GAAYC,GAAcE,GAAgBD,GAAsBe,GAAgBC,GAAen0O,GAAgB20O,KAJ1K/hmB,GAAT,kCCh9QT,wBACP,6FACA,uGACA,uBAA6CgimB,MAAQA,qEACrD,oDAGO,kBACP,uBAAoC3/iB,cAG7B,kBACP,sNC5CA,MAAMs/Q,GAAM,CAAC,gBAAiB,IAC9B,YAAoDC,GAAI/3T,IAEtD,GAFsE,EAAL+3T,IAC/DC,MAAiB,EAAG,KAAM,GACnB,EAALD,GAAQ,CACV,MAAMz/T,GAAS0/T,QACTogS,GAAS9/lB,GAAO6f,MAChBg4Y,GAAU73Z,GAAOstX,UACjBvtX,GAAS2/T,QACfA,MAAmB,UAAsB,IAAXogS,GAA9BpgS,CAA4C,SAAUogS,KAAW//lB,GAAO0uD,MAAMzsD,OAAS,EAAvF09T,CAA0F,mBAAoBm4F,GAAQvzZ,UACtHo7T,MAAkB,OAAQm4F,GAA1Bn4F,CAAmC,QAAS3/T,GAAOo+G,MAAnDuhN,CAA0D,WAAY3/T,GAAOkI,SAA7Ey3T,CAAuF,UAAW3/T,GAAO0G,QAAzGi5T,CAAkH,MAAO3/T,GAAO4gU,IAAhIjB,CAAqI,eAAgB3/T,GAAOqnD,aAA5Js4Q,CAA0K,mBAAoB3/T,GAAOggmB,iBAArMrgS,CAAuN,cAAe3/T,GAAOigmB,YAA7OtgS,CAA0P,QAAS3/T,GAAOkgmB,eAAeH,IAAzRpgS,CAAkS,eAAgBogS,GAAlTpgS,CAA0T,UAAWm4F,GAAQhyW,SAA7U65Q,CAAuV,UAAWm4F,GAAQtyF,UAC1W7F,MAAmB,wBAAyB3/T,GAAOkgmB,eAAeH,MAEtE,YAAoDrgS,GAAI/3T,IAItD,GAJsE,EAAL+3T,KAC/DC,MAAsB,EAAG,KAAM,GAC/BA,MAAc,EAAG,UACjBA,SACO,EAALD,GAAQ,CACV,MAAMo4F,GAAUn4F,QAAuB4tD,UACvC5tD,MAAkB,UAAWm4F,GAAQhyW,SAArC65Q,CAA+C,UAAWm4F,GAAQtyF,WAEtE,YAA+C9F,GAAI/3T,IAKjD,GALiE,EAAL+3T,KAC1DC,MAA+B,GAC/BA,MAAkB,EAAGwgS,GAA4C,EAAG,GAAI,KAAM,GAC9ExgS,MAAkB,EAAGygS,GAA4C,EAAG,EAAG,KAAM,GAC7EzgS,SACO,EAALD,GAAQ,CACV,MAAMo4F,GAAUnwZ,GAAI4lX,UACpB5tD,MAAiB,GACjBA,MAAkB,QAASm4F,GAAQ1zD,WACnCzkC,MAAiB,GACjBA,MAAkB,OAAQm4F,GAAQ1zD,YAEtC,MAAM+oB,GAAM,CAAC,QACPC,GAAM,CAAC,iBACPltD,GAAM,CAAC,gBAAiB,IAC9B,YAAqDR,GAAI/3T,KACzD,YAAuC+3T,GAAI/3T,IAIzC,GAJyD,EAAL+3T,KAClDC,MAAsB,EAAG,OAAQ,EAAG,GACpCA,MAAkB,EAAG0gS,GAA6C,EAAG,EAAG,cAAe,GACvF1gS,SACO,EAALD,GAAQ,CACV,MAAME,GAASD,QACTI,GAAMJ,MAAmB,GAC/BA,MAAmB,iBAAkBC,GAAOh5S,QAC5C+4S,MAAiB,GACjBA,MAAkB,mBAAoBI,KAE1C,YAAkDL,GAAI/3T,KACtD,YAAoC+3T,GAAI/3T,IAItC,GAJsD,EAAL+3T,KAC/CC,MAAsB,EAAG,IAAK,EAAG,GACjCA,MAAkB,EAAG2gS,GAA0C,EAAG,EAAG,cAAe,GACpF3gS,SACO,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACTI,GAAMJ,MAAmB,GAC/BA,MAAmB,iBAAkBt+R,GAAOza,QAC5C+4S,MAAmB,OAAQt+R,GAAOnyB,KAAK8L,IAAK2kT,OAC5CA,MAAiB,GACjBA,MAAkB,mBAAoBI,KAE1C,YAAgDL,GAAI/3T,KACpD,MAAMsmX,GAAM,SAAUZ,GAAIC,IAAM,MAAO,CAAEp+W,KAAMm+W,GAAIvtW,MAAOwtW,KAC1D,YAAkC5tD,GAAI/3T,IAEpC,GAFoD,EAAL+3T,IAC7CC,MAAkB,EAAG4gS,GAAwC,EAAG,EAAG,cAAe,IAC3E,EAAL7gS,GAAQ,CACV,MAAM/+J,GAASg/J,QACfA,MAAkB,mBAAoBh/J,GAAO6/b,aAA7C7gS,CAA2D,0BAA2BA,MAAuB,EAAGsuD,GAAKttN,GAAOzxJ,KAAMyxJ,GAAO7gJ,SAE7I,YAAoD4/S,GAAI/3T,KACxD,YAAsC+3T,GAAI/3T,IAIxC,GAJwD,EAAL+3T,KACjDC,MAAsB,EAAG,MAAO,IAChCA,MAAkB,EAAG8gS,GAA4C,EAAG,EAAG,cAAe,IACtF9gS,SACO,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAiB,GACjBA,MAAkB,mBAAoB3/T,GAAOkP,KAAK4L,QAAlD6kT,CAA2D,0BAA2BA,MAAuB,EAAGsuD,GAAKjuX,GAAOkP,KAAKunlB,MAAOz2lB,GAAOkP,KAAKwxlB,cAExJ,YAA8ChhS,GAAI/3T,IAEhD,GAFgE,EAAL+3T,IACzDC,MAAiB,EAAG,KAAM,IACnB,EAALD,GAAQ,CACV,MAAMz/T,GAAS0/T,QACfA,MAAkB,UAAW1/T,GAAOyG,QAApCi5T,CAA6C,MAAO1/T,GAAO2gU,IAA3DjB,CAAgE,WAAY1/T,GAAOiI,SAAnFy3T,CAA6F,cAAe1/T,GAAOggmB,YAAnHtgS,CAAgI,QAAS1/T,GAAOy6D,SAAhJilQ,CAA0J,QAAS1/T,GAAOm+G,MAAQ,EAAlLuhN,CAAqL,QAAS1/T,GAAO6f,MAArM6/S,CAA4M,eAAgB1/T,GAAOonD,aAAnOs4Q,CAAiP,mBAAoB1/T,GAAO+/lB,kBAC5QrgS,MAAmB,KAAM1/T,GAAO0gmB,UAEpC,YAAqDjhS,GAAI/3T,IAEvD,GAFuE,EAAL+3T,IAChEC,MAAiB,EAAG,OAAQ,IACrB,EAALD,GAAQ,CACV,MAAMx0T,GAAUy0T,MAAqB,GACrCA,MAAkB,UAAWz0T,GAAQo/D,YAEzC,YAA6Do1P,GAAI/3T,IAI/D,GAJ+E,EAAL+3T,KACxEC,MAA+B,GAC/BA,MAAc,GACdA,SACO,EAALD,GAAQ,CACV,MAAM33T,GAAU43T,MAAqB,GACrCA,MAAiB,GACjBA,MAA0B,IAAK53T,GAAQmH,KAAKlI,KAAM,MAEtD,YAA8D04T,GAAI/3T,KAClE,YAAgD+3T,GAAI/3T,IAElD,GAFkE,EAAL+3T,IAC3DC,MAAkB,EAAGihS,GAAsD,EAAG,EAAG,cAAe,IACzF,EAALlhS,GAAQ,CACV,MAAMv0T,GAAUw0T,MAAqB,GACrCA,MAAkB,mBAAoBx0T,GAAQijD,SAA9CuxQ,CAAwD,0BAA2BA,MAAuB,EAAGsuD,GAAK9iX,GAAQ+D,KAAM/D,GAAQ2U,SAE5I,YAAqD4/S,GAAI/3T,IAEvD,GAFuE,EAAL+3T,IAChEC,MAAiB,EAAG,OAAQ,IACrB,EAALD,GAAQ,CACV,MAAMt0T,GAAUu0T,MAAqB,GACrCA,MAAmB,qBAAsBv0T,GAAQnD,WAAjD03T,CAA6D,qBAAsBv0T,GAAQnD,aAAemD,GAAQw1T,IAAlHjB,CAAuH,oBAAqBv0T,GAAQnD,YAAcmD,GAAQw1T,MAE9K,YAA8ClB,GAAI/3T,IAKhD,GALgE,EAAL+3T,KACzDC,MAAkB,EAAGkhS,GAA6C,EAAG,EAAG,OAAQ,IAChFlhS,MAAkB,EAAGmhS,GAAqD,EAAG,EAAG,eAAgB,GAChGnhS,MAAkB,EAAGohS,GAAwC,EAAG,EAAG,KAAM,GACzEphS,MAAkB,EAAGqhS,GAA6C,EAAG,EAAG,OAAQ,KACzE,EAALthS,GAAQ,CACV,MAAMx/J,GAASy/J,QACfA,MAAkB,OAAQz/J,GAAOhxJ,KAAKlD,MACtC2zT,MAAiB,GACjBA,MAAkB,QAASz/J,GAAO9xG,UAClCuxQ,MAAiB,GACjBA,MAAkB,OAAQz/J,GAAO9xG,UACjCuxQ,MAAiB,GACjBA,MAAkB,OAAQz/J,GAAOoqb,aAErC,MAAMp8N,GAAM,CAAC,WACb,YAAqDxuD,GAAI/3T,IAEvD,GAFuE,EAAL+3T,IAChEC,MAAiB,EAAG,aAAc,GAC3B,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,QAASt+R,GAAO4/jB,UAAlCthS,CAA6C,WAAYt+R,GAAOn5B,SAAhEy3T,CAA0E,cAAet+R,GAAO4+jB,YAAhGtgS,CAA6G,aAAct+R,GAAO6/jB,WAAlIvhS,CAA8I,UAAWt+R,GAAO36B,QAAhKi5T,CAAyK,mBAAiD,MAA7Bt+R,GAAOgmB,aAAajkD,MAAgB,KAAOi+B,GAAOgmB,aAAajkD,MAAM2/T,YAAlQpD,CAA+Q,uBAAyD,MAAjCt+R,GAAO2+jB,iBAAiB58lB,MAAgB,KAAOi+B,GAAO2+jB,iBAAiB58lB,MAAM2/T,cAExX,MAAM5C,GAAkB,CACpBj/T,KAAM,+BACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAGhB6gS,GAAe,SAErB,IAAI//lB,GAAK,EACT,MAAMggmB,GAAoB,CAAC/ykB,GAAGD,KAAMC,GAAEgzkB,aAAejzkB,GAAEizkB,aACjD95lB,GAAO,CAAC8+B,GAAKqoB,GAAOnB,MACtB,IAAIhrB,GAAUmsB,GAAMroB,GAAMknB,IAC1B,MAAQhrB,IACA8D,GAAM,EACNA,GAAMqoB,GAAMzsD,OAAS,EAEhBokC,IAAOqoB,GAAMzsD,OAClBokC,GAAM,EAGNA,IAAOknB,GAEXhrB,GAAUmsB,GAAMroB,IAEpB,OAAO9D,IAKX,IAAI++jB,GAAY,UAASA,GAAN,MAIftlmB,cACIE,KAAKwyD,MAAQ,GACbxyD,KAAKo3hB,MAAQ,GACbp3hB,KAAKm4gB,SAAY,SAAQjzgB,KAEzB2jjB,eACA,OAAOhjjB,OAAOrC,KAAKxD,KAAKwyD,OAAOzsD,OAAS,EAE5C0+lB,QAAQ7glB,IACJ,MAAQ,GAAE5jB,KAAKm4gB,iBAAiBv0f,KAEpC4xS,UAAU/hR,GAAa7vB,IACnB,OAAQ6vB,GAAcA,GAtCZ,IAsCsC,IAAM7vB,GAE1D/E,IAAI+E,IACA,OAAO5jB,KAAKwyD,MAAM5uC,IAEtB4kC,IAAIx1C,IACAhT,KAAKwyD,MAAMx/C,GAAK4Q,OAAS5Q,GAE7ByrC,OAAOzrC,IACChT,KAAKwyD,MAAMx/C,GAAK4Q,SAAW5Q,WACpBhT,KAAKwyD,MAAMx/C,GAAK4Q,OAG/ByhlB,QAAQv9jB,IACJ9nC,KAAKo3hB,MAAM3xhB,KAAKqiC,IAEpBw9jB,WAAWx9jB,IACP,MAAMlkB,GAAQ5jB,KAAKo3hB,MAAMt3gB,QAAQgoB,IAC7BlkB,IAAS,GACT5jB,KAAKo3hB,MAAMtzgB,OAAOF,GAAO,GAGjC2hlB,aAAa7wlB,IACT,OAAOszT,QAAQhoU,KAAKo3hB,MAAM7whB,KAAKuhC,IAAQA,GAAKpzB,QAAQxG,gBAAkBwG,KAE1E4glB,SAAStilB,IACL,MAAMygC,GAAczzC,KAAKyzC,YAAYzgC,GAAK4Q,OAC1C,OAAO5jB,KAAK+M,OAAQ6W,IAAU5jB,KAAKyzC,YAAY7vB,MAAW6vB,IAE9D+xjB,cAAcxylB,IACV,MAAMygC,GAAczzC,KAAKyzC,YAAYzgC,GAAK4Q,OAC1C,OAAO5jB,KAAK+M,OAAQ6W,IAAU5jB,KAAKyzC,YAAY7vB,MAAW6vB,IAAe7vB,KAAU5Q,GAAK4Q,OAE5F46C,SAASxrD,IACL,OAAOhT,KAAK+M,OAAQ6W,IAAU5jB,KAAKyzC,YAAY7vB,MAAW5Q,GAAK4Q,OAEnEy4V,OAAOrpW,IACH,OAAOhT,KAAKwyD,MAAMxyD,KAAKyzC,YAAYzgC,GAAK4Q,QAE5CkuS,KAAK9+S,IACD,OAAOhT,KAAKwyD,MAAMxyD,KAAKo+c,QAAQprc,GAAK4Q,OAAO,IAE/Cw6b,QAAQx6b,IACJ,OAAOA,GAAM5M,MAjFH,KAmFdjK,OAAOqga,IACH,MAAM76Z,GAAS,GACTigD,GAAQxyD,KAAKwyD,MACnB,QAAS5uC,MAAS4uC,GACV46W,GAAUxpZ,GAAO4uC,GAAM5uC,MACvBrR,GAAO9M,KAAK+sD,GAAM5uC,KAG1B,OAAOrR,GAAOuH,KAAKorlB,IAEvB9+jB,SAASpzB,IACL,MAAMsilB,GAAWt1lB,KAAKs1lB,SAAStilB,IACzBwiT,GAAY8/R,GAASx1kB,QAAQ9M,IACnC,OAAO3H,GAAKmqT,GAAW8/R,IAAU,GAErCjqlB,KAAK2H,IACD,MAAMsilB,GAAWt1lB,KAAKs1lB,SAAStilB,IACzBwiT,GAAY8/R,GAASx1kB,QAAQ9M,IACnC,OAAO3H,GAAKmqT,GAAW8/R,GAAU,GAErC3kN,UAAU39X,GAAMqpW,IACZ,OAAOrpW,GAAK4Q,MAAMqtC,WAAWorT,GAAOz4V,OAExC6hlB,YAAYC,GAAOC,IACf,OAAOD,KAAUC,IAAS3lmB,KAAKq8W,OAAOqpP,MAAW1lmB,KAAKq8W,OAAOspP,IAEjE/+lB,QAAQiJ,IACJ,MAAM2iD,GAAQxyD,KAAKwyD,MACnB,QAAS5uC,MAAS4uC,GACVA,GAAMnmB,eAAezoB,KACrB/T,GAAS2iD,GAAM5uC,KAI3B6vB,YAAY7vB,IACR,OAAOA,GAAM2H,QAAQ05kB,GAAc,MAG3CG,UAAah/R,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAKg3jB,KACxEA,GAAax6R,WAAsBnH,MAA0B,CAAEp4S,MAAO+5kB,GAAc9slB,QAAS,SAAU81B,IAAK,OAAOg3jB,GAAah/R,UAAKh4R,OApG5Gg3jB,IAAT,GAyGhB,SAIItlmB,YAAYm6B,IACRj6B,KAAK62X,WAAY,EACjBhxX,OAAOw0D,OAAOr6D,KAAMi6B,IAOxBioB,iBACIliD,KAAK62X,WAAY,EASrBC,qBACI,OAAO92X,KAAK62X,WAOpB,iBAAwByB,IAGxB,MAAMstO,GAAmB,CAAC5ylB,GAAMguB,OAAyB,SAAXA,IAAqBhuB,GAAK0X,QAAuB,UAAXsW,KAAuBhuB,GAAK0X,QAIhH,IAAIm7kB,GAAc,UAASA,GAAN,MACjB/lmB,YAAYwnD,GAAQkL,IAChBxyD,KAAKsnD,OAASA,GACdtnD,KAAKwyD,MAAQA,GACbxyD,KAAKm+b,QAAU,GAEnBp2a,KAAK/U,GAAM8ylB,IACH9ylB,GAAK3K,WAGL2K,GAAKo7kB,aAAep7kB,GAAK0X,OACzB1qB,KAAKm+b,QAAQ14b,KAAK,CACdT,KAAM,OACN+gmB,aAAc/ylB,GAAKgzlB,sBACnBhzlB,QACA8ylB,cAGCA,IACLA,MAGR96kB,MAAMhY,IACFhT,KAAKimmB,cAAcjzlB,IACnBhT,KAAKkmmB,UAAUlzlB,IAEnBkzlB,UAAUlzlB,IACFA,GAAK0X,QACL1qB,KAAKm+b,QAAQ14b,KAAK,CACdT,KAAM,QACNgO,UAIZmzlB,YAAYnzlB,IACRhT,KAAKimmB,cAAcjzlB,IACnB,IAAIqzB,GAAUrzB,GACd,GACIhT,KAAKkmmB,UAAU7/jB,IACfA,GAAUrmC,KAAKwyD,MAAM6pT,OAAOh2U,UACvBA,IAEb+/jB,YAAYpzlB,IACRhT,KAAKimmB,cAAcjzlB,IACnB,IAAIqzB,GAAUrzB,GACd,KAAOqzB,IAAS,CACZ,MAAMivjB,GAAWt1lB,KAAKwyD,MAAMgziB,cAAcn/jB,IAC1CrmC,KAAKqmmB,WAAW/Q,IAChBjvjB,GAAUrmC,KAAKwyD,MAAM6pT,OAAOh2U,KAGpCigkB,WACItmmB,KAAKwyD,MAAM5rD,QAASoM,KACZA,GAAK0X,QAAyB,IAAf1X,GAAKkvG,OACpBliH,KAAKgrB,MAAMhY,MAIvBs6B,OAAOt6B,GAAMu/X,GAAU1b,GAAWivO,IAC9B9lmB,KAAKm+b,QAAQ14b,KAAK,CACdT,KAAM,SACNgO,QACA6jX,aACAivO,YACAvzN,cAGR1qY,KAAK7C,GAAMgO,GAAMu/X,IACb,MAAMgoN,GAAQv6lB,KAAKu6lB,MACb9jiB,GAAY,IAAI8viB,GAAU,CAC5BztQ,OAAQyhQ,GACRvnlB,KAAMA,GAAKA,KACX4Q,MAAO5Q,GAAK4Q,MACZyxG,cAAek9Q,GACf67M,WAAYp7kB,GAAKo7kB,aAErBmM,UAAMv1lB,IAAM6C,KAAK4uD,IACb8jiB,GAAMiM,gBACNjM,GAAMiM,eAAe3+lB,KAAK7C,GAAMyxD,IAE7BA,GAAUqgU,qBAEjB2vO,iBACA,OAAOzmmB,KAAKm+b,QAAQp4b,OAAS,EAEjC2gmB,QAAQC,IACJ,IAAK3mmB,KAAKymmB,aAAeE,GACrB,OAEJ,MAAMxoK,GAAUwoK,IAAa3mmB,KAAKs/C,SAC7BysU,yBAA4B/rX,KAAK+lmB,aAAa5nK,IAC/Cn+b,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAK4mmB,eAAezoK,MAIxBn+b,KAAK4mmB,eAAezoK,IAG5B7+Y,QACI,MAAM6+Y,GAAUn+b,KAAKm+b,QACrB,YAAKA,QAAU,GACRA,GAEXyoK,eAAezoK,IACX,QAASh0Z,GAAM,EAAGA,GAAMg0Z,GAAQp4b,OAAQokC,KAAO,CAC3C,MAAQn3B,QAAMhO,QAAM6xX,aAAWivO,YAAUvzN,aAAa4rD,GAAQh0Z,KACzDy7jB,GAAiB5ylB,GAAMhO,MAGvBhF,KAAK6H,KAAK7C,GAAMgO,GAAMu/X,IAQlB1b,IACLA,MARI7jX,GAAKhO,KACLgO,GAAKhO,MAEL8gmB,IACAA,QAQhBC,aAAaY,IACT,MAAMxoK,GAAUwoK,IAAa3mmB,KAAKm+b,QAC5Bo8J,GAAQv6lB,KAAKu6lB,MACbiM,GAAiBjM,GAAMiM,eAC7B,QAASr8jB,GAAM,EAAGA,GAAMg0Z,GAAQp4b,OAAQokC,KAAO,CAC3C,MAAMnJ,GAASm9Z,GAAQh0Z,IACjBnlC,GAAOg8B,GAAOh8B,KACpB,GAAIg8B,GAAO+kkB,cAAiB/gmB,QAAS6wX,MAAa0kO,GAAMv1lB,MAAWwhmB,IAAkBA,GAAe3wO,aAAa7wX,KAC7G,OAAO,EAGf,OAAO,EAEXihmB,cAAcjzlB,IACV,IAAKA,GAAK0X,OACN,OAEJ,MAAM8zC,GAAWx+D,KAAKwyD,MAAMgM,SAASxrD,IACrChT,KAAKqmmB,WAAW7niB,IAEpB6niB,WAAW7ziB,IACP,QAASroB,GAAM,EAAGA,GAAMqoB,GAAMzsD,OAAQokC,KAClCnqC,KAAKgrB,MAAMwnC,GAAMroB,OAI7B07jB,UAAez/R,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAKy3jB,IAAgBpiS,MAAgBA,OAAgBA,MAAgB2hS,MAC5IS,GAAej7R,WAAsBnH,MAA0B,CAAEp4S,MAAOw6kB,GAAgBvtlB,QAAS,SAAU81B,IAAK,OAAOy3jB,GAAez/R,UAAKh4R,OAC3Iy3jB,GAAiBr3jB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACikD,MAAQq5O,MACpES,IAxJwBA,IAAT,GA0JlB,MACMgB,GAAiB,KACjBtrkB,GAAW,CACjBA,GAAiB,OACjBA,GAAiB,QACjBA,GAAiB,KACjBA,GAAiB,OACjBA,GAAiB,OACjBA,GAAiB,MACjBA,GAAiB,QACjBA,GAAiB,QACjBA,GAAiB,MACjBA,EAAgB,OACVkmkB,GAAc57lB,OAAOw0D,OAAO,GAAI9+B,GAAU,CAC5C,GAAM,QACN,GAAM,SAKJm7V,GAAkBr4W,QAAQuJ,QAAQ,MAIxC,IAAIu1W,GAAiB,UAASA,GAAN,MACpBr9X,YAAY0yD,GAAO2rY,GAASlrE,GAAc3rU,IACtCtnD,KAAKwyD,MAAQA,GACbxyD,KAAKm+b,QAAUA,GACfn+b,KAAKizX,aAAeA,GACpBjzX,KAAKsnD,OAASA,GACdtnD,KAAKgM,UAAW,EAChBhM,KAAKura,YA/BU,IAiCfoqL,kBACA,OAAO31lB,KAAKwyD,MAAM3zC,IAAI7e,KAAK8mmB,YAE3BC,iBACA,OAAO/mmB,KAAKwyD,MAAM3zC,IAAI7e,KAAKura,aAE3BhwY,eACA,OAAOv7B,KAAKizX,aAAavuD,IAAM+8R,GAAclmkB,GAEjD8xS,MAAMr6T,IACEA,GAAK4Q,QAAU5jB,KAAK8mmB,eAGnB9mmB,KAAK+mmB,aAAe/mmB,KAAKwyD,MAAMm+U,UAAU39X,GAAMhT,KAAK+mmB,cACrD/mmB,KAAK4/H,UAAU5sH,IAEnBhT,KAAKgnmB,SAASh0lB,KAElBg0lB,SAASh0lB,IACLhT,KAAK8mmB,WAAa9zlB,GAAK4Q,MACvB5Q,GAAKq6T,QAET45R,aACI,MAAMp0R,GAAU7yU,KAAK21lB,YACjB9iR,KACA7yU,KAAKm+b,QAAQgoK,YAAYtzR,IACzB7yU,KAAKm+b,QAAQuoK,WAEjB1mmB,KAAK8mmB,WAAa,KAEtBI,gBACSlnmB,KAAK+mmB,YAAc/mmB,KAAKwyD,MAAMq2f,WACb7ojB,KAAKwyD,MAAM3zC,IAjElB,KAkEDsolB,cAAa,GACvBnnmB,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bw8C,GAAgB97V,KAAK,KACjB56B,KAAKura,YArEF,SA0EnB5zC,QAAQ1uX,IACJ,MAAMo9B,GAAUrmC,KAAK21lB,aAAe31lB,KAAK+mmB,WACnC/iC,GAAUhkkB,KAAKu7B,SAAStyB,GAAEksX,UAC3B9uV,KAGD29hB,IACgB,QAAZA,IACA/6jB,GAAEi5C,iBAENliD,KAAKgkkB,IAAS39hB,GAASp9B,KAnEnC,YAA8B4J,IAC1B,OAAsB,IAAfA,GAAI9M,QAAgB8gmB,GAAerrL,KAAK3oa,IAoElC+5gB,CAAqB3jhB,GAAE4J,MAC5B7S,KAAKmxB,OAAOkV,GAASp9B,GAAE4J,KAE3B7S,KAAKm+b,QAAQuoK,WAEjBU,WAAWxjlB,IACP,IAAKA,IAAS5jB,KAAK+mmB,WACf/mmB,KAAKgnmB,SAAShnmB,KAAK+mmB,oBAEJ,UAAVnjlB,GACL5jB,KAAKqnmB,qBAEU,SAAVzjlB,GACL5jB,KAAKsnmB,gBAEJ,CACD,MAAMt0lB,GAAOhT,KAAKwyD,MAAM3zC,IAAI+E,IACxB5Q,IACAhT,KAAKqtU,MAAMr6T,KAIvBq0lB,aACI,MAAM70iB,GAAQxyD,KAAKwyD,MAAM8iiB,SAASt1lB,KAAKwyD,MAAM3zC,IAAI,MACjD7e,KAAKqtU,MAAM76Q,GAAM,IAErB80iB,YACI,MAAM90iB,GAAQxyD,KAAKwyD,MAAM8iiB,SAASt1lB,KAAKwyD,MAAM3zC,IAAI,MACjD7e,KAAKqtU,MAAM76Q,GAAMA,GAAMzsD,OAAS,IAEpCorB,OAAOkV,GAASxzB,IACZ,MAAMyilB,GAAWt1lB,KAAKwyD,MAAM8iiB,SAASjvjB,IAC/Bk/D,GAAa+vf,GAASx1kB,QAAQumB,IAC9BmsB,GAAQ8iiB,GAAS1mlB,MAAM22F,GAAa,GAAG5xD,OAAO2hjB,GAAS1mlB,MAAM,EAAG22F,KACtE,QAASp7D,GAAM,EAAGA,GAAMqoB,GAAMzsD,OAAQokC,KAAO,CACzC,MAAMo9jB,GAAU/0iB,GAAMroB,IAEtB,IADao9jB,GAAQv0lB,KAAKlI,MAAQ,IACzBuwB,cAAc41B,WAAWp+C,GAAIwoB,eAAgB,CAClDr7B,KAAKqtU,MAAMk6R,IACX,QAIZnnK,KAAK/5Z,IACqB,IAAlBA,GAAQ67E,OAAgBliH,KAAKgM,SAM7BhM,KAAKqtU,MAAMrtU,KAAKwyD,MAAMnnD,KAAKg7B,KALvBA,GAAQ+njB,YACRpulB,KAAKm+b,QAAQp2a,KAAKse,GAASrmC,KAAKwnmB,WAAWnhkB,GAAS,IAOhE8iY,GAAG9iY,IACuB,IAAlBA,GAAQ67E,OAAgBliH,KAAKgM,SAM7BhM,KAAKqtU,MAAMrtU,KAAKwyD,MAAMpsB,SAASC,KAL3BA,GAAQ+njB,YACRpulB,KAAKm+b,QAAQp2a,KAAKse,GAASrmC,KAAKwnmB,WAAWnhkB,GAASA,GAAQm4B,SAASz4D,OAAS,IAO1FqpE,KAAK/oC,IACD,IAAIrmC,KAAKgM,UAA8B,IAAlBq6B,GAAQ67E,QAAe77E,GAAQh+B,SAGpD,GAAIg+B,GAAQ67E,MAAQ,GAAMliH,KAAKgM,UAAYq6B,GAAQ67E,MAAQ,EAAI,CAC3D,MAAMm6P,GAASr8W,KAAKwyD,MAAM6pT,OAAOh2U,IACjCrmC,KAAKqtU,MAAMgvC,IACXr8W,KAAKm+b,QAAQnza,MAAMqxV,SAEdr8W,KAAKgM,UAA8B,IAAlBq6B,GAAQ67E,QAAgB77E,GAAQh+B,SAClDg+B,GAAQ+njB,YACRpulB,KAAKm+b,QAAQp2a,KAAKse,GAASrmC,KAAKwnmB,WAAWnhkB,GAASA,GAAQm4B,SAASz4D,OAAS,IAIlF/F,KAAKqtU,MAAMrtU,KAAKwyD,MAAMpsB,SAASpmC,KAAK+mmB,aAG5Cz3hB,MAAMjpC,IACErmC,KAAKgM,UAA8B,IAAlBq6B,GAAQ67E,OAAe77E,GAAQh+B,WAGhDg+B,GAAQt6B,aAAes6B,GAAQh+B,SAC/B4/C,GAAYmmiB,WACRpulB,KAAKm+b,QAAQp2a,KAAKse,GAASrmC,KAAKwnmB,WAAWnhkB,GAAS,MAE9CrmC,KAAKgM,UAAYq6B,GAAQ67E,MAAQ,IACvCliH,KAAKqtU,MAAMrtU,KAAKwyD,MAAMnnD,KAAKrL,KAAK+mmB,aAIpC/mmB,KAAKqtU,MAAMrtU,KAAKwyD,MAAMnnD,KAAKrL,KAAK+mmB,cAGxCrnJ,KAAKr5a,IACD,MAAMivjB,GAAWt1lB,KAAKwyD,MAAM8iiB,SAASjvjB,IACrCrmC,KAAKqtU,MAAMioR,GAAS,IAExBhrjB,IAAIjE,IACA,MAAMivjB,GAAWt1lB,KAAKwyD,MAAM8iiB,SAASjvjB,IACrCrmC,KAAKqtU,MAAMioR,GAASA,GAASvvlB,OAAS,IAE1Cq3X,MAAM/2V,GAASksW,IACX,MAAM4rD,GAAUn+b,KAAKm+b,QACjB93Z,GAAQh+B,WAGRg+B,GAAQ+njB,YACRjwJ,GAAQ7wZ,OAAOjH,GAASksW,IACxB4rD,GAAQp2a,KAAKse,GAASrmC,KAAKwnmB,WAAWnhkB,GAAS,MAG/C83Z,GAAQ7wZ,OAAOjH,GAASksW,GAAU,KAAM,KACpClsW,GAAQsmM,aAEZ3sO,KAAKqtU,MAAMrtU,KAAKwyD,MAAMs/P,KAAKzrR,KAC3B83Z,GAAQgoK,YAAY9/jB,MAG5Bm2V,IAAIn2V,IACA,GAAIA,GAAQ67E,MAAQ,EAAG,CACnB,MAAMm6P,GAASr8W,KAAKwyD,MAAM6pT,OAAOh2U,IACjCrmC,KAAKm+b,QAAQnza,MAAMqxV,IACnBr8W,KAAKqtU,MAAMgvC,KAGnBvvU,IAAIzG,IACIA,GAAQ67E,MAAQ,GAChBliH,KAAK+mmB,WAAW15R,QAGxBm6R,WAAWx0lB,GAAM4Q,IACb,MAAO,KACH,MAAM66C,GAAQz+D,KAAKwyD,MAAMgM,SAASxrD,IAAM4Q,IACxC5jB,KAAKgnmB,SAASvoiB,KAGtBmhE,UAAU5sH,IACN,MAAM6/T,GAAU7yU,KAAK21lB,YACfhmhB,GAAS3vE,KAAKwyD,MAAMs/P,KAAK9+S,IAC3BhT,KAAK+mmB,YACL/mmB,KAAK+mmB,WAAWI,cAAa,GAEjCnnmB,KAAKura,YAAc57V,GAAO/rD,MAC1B+rD,GAAOw3hB,cAAa,GAChBt0R,KACA7yU,KAAKm+b,QAAQgoK,YAAYtzR,IACrBA,GAAQ3wN,MAAQ,GAChBliH,KAAKm+b,QAAQp2a,KAAK4nD,OAKlCwtT,UAAkB/2D,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK+uV,IAAmB15D,MAAgB2hS,IAAe3hS,MAAgBoiS,IAAiBpiS,MAAgB4C,MAA6B5C,MAAgBA,SAClO05D,GAAkBvyD,WAAsBnH,MAA0B,CAAEp4S,MAAO8xW,GAAmB7kX,QAAS,SAAU81B,IAAK,OAAO+uV,GAAkB/2D,UAAKh4R,OACpJ+uV,GAAoB3uV,EAAW,CAAEs5R,EAAW,oBAAqB,CAACs9R,GAC1DS,GACA/+R,KACAilD,SACLoR,IAhO2BA,IAAT,GAsOjBsqO,GAAY,UAASA,GAAN,MACf3nmB,YAAYq+b,GAAS3rY,IACjBxyD,KAAKm+b,QAAUA,GACfn+b,KAAKwyD,MAAQA,GACbxyD,KAAKsR,MAAQ,IACbtR,KAAK0nmB,aAAc,EACnB1nmB,KAAK8qZ,UAAY,GAEjB68M,iBACA,OAAO3nmB,KAAK0nmB,YAEZC,eAAWhkmB,IACX3D,KAAK69S,gBACL79S,KAAK0nmB,YAAc/jmB,GAEnBikmB,cACA,OAAO5nmB,KAAKwyD,MAAM3zC,IAAI7e,KAAK6nmB,YAE3BD,YAAQ50lB,IACRhT,KAAK6nmB,WAAa70lB,GAAOA,GAAK4Q,MAAQ,KAE1Cjd,cACI3G,KAAK69S,gBAETp7E,KAAKzvN,IACDhT,KAAK69S,cAAe78Q,IAA2B,eAAhBA,GAAOh8B,QACjChF,KAAK4nmB,SAAW5nmB,KAAK4nmB,UAAY50lB,MAClChT,KAAKm+b,QAAQioK,YAAYpzlB,IACzBhT,KAAK4nmB,QAAU50lB,IACVA,GAAKkvG,MAAQ,GAAKliH,KAAK2nmB,cAAgB30lB,GAAK3K,WAC7CrI,KAAKm+b,QAAQp2a,KAAK/U,IAClBhT,KAAK69S,cAAe78Q,IAA4B,UAAhBA,GAAOh8B,OAAqBgO,KAASguB,GAAOhuB,MAAQhT,KAAKwyD,MAAMm+U,UAAU39X,GAAMguB,GAAOhuB,QACjG,SAAhBguB,GAAOh8B,OAAoBhF,KAAKwyD,MAAMm+U,UAAU39X,GAAMguB,GAAOhuB,QAEtEhT,KAAK8nmB,mBAGbx3N,MAAMy3N,IACF,MAAMH,GAAU5nmB,KAAK4nmB,QACjBA,KACA5nmB,KAAKm+b,QAAQgoK,YAAYyB,IACzB5nmB,KAAK69S,cAAc78Q,IAA0B,SAAhBA,GAAOh8B,MACpChF,KAAK8nmB,mBAELC,IAAqB/nmB,KAAK0nmB,aAC1B1nmB,KAAKgomB,4BAEThomB,KAAK4nmB,QAAU,KAEnBK,eACI,MAAML,GAAU5nmB,KAAK4nmB,QACjBA,KACA5nmB,KAAKm+b,QAAQgoK,YAAYyB,IACzB5nmB,KAAK4nmB,QAAU,MAGvBE,kBACI,GAAI9nmB,KAAKm+b,QAAQsoK,WAAY,CACzB,MAAMzzlB,GAAO,GACbA,GAAKmrb,QAAUn+b,KAAKm+b,QAAQ7+Y,QAC5BtsC,GAAK9N,GAAKgN,WAAW,KACjBlS,KAAKm+b,QAAQuoK,QAAQ1zlB,GAAKmrb,SAC1Bn+b,KAAKkomB,gBAAgBl1lB,KACtBhT,KAAKsR,OACRtR,KAAK8qZ,UAAUrlZ,KAAKuN,KAG5Bg1lB,4BACI,MAAMh1lB,GAAO,CACTmrb,QAAS,CAAC,CAAEn5b,KAAM,gBAEtBgO,GAAK9N,GAAKgN,WAAW,KACjBlS,KAAK0nmB,aAAc,EACnB1nmB,KAAKkomB,gBAAgBl1lB,KACtB9F,KAAKsB,IAAIxO,KAAKsR,MA9EU,MA+E3BtR,KAAK8qZ,UAAUrlZ,KAAKuN,IAExBk1lB,gBAAgBl1lB,IACZ,MAAM83Y,GAAY9qZ,KAAK8qZ,UACvB,QAAS3gX,GAAM,EAAGA,GAAM2gX,GAAU/kZ,OAAQokC,KACtC,GAAI2gX,GAAU3gX,MAASn3B,GAEnB,YADA83Y,GAAUhnY,OAAOqmB,GAAK,GAKlC0zQ,cAAcuvH,IACV,MAAMtiB,GAAY9qZ,KAAK8qZ,UACvB,QAAS3gX,GAAM2gX,GAAU/kZ,OAAS,EAAGokC,IAAO,EAAGA,KAAO,CAClD,MAAMn3B,GAAO83Y,GAAU3gX,IACjBg0Z,GAAUnrb,GAAKmrb,QACrB,GAAI/wB,GACA,QAAS+6L,GAAYhqK,GAAQp4b,OAAS,EAAGoimB,IAAa,EAAGA,KACjD/6L,GAAU+wB,GAAQgqK,MAClBhqK,GAAQr6a,OAAOqklB,GAAW,KAIjC/6L,IAAgC,IAAnB+wB,GAAQp4b,UACtBkhB,aAAajU,GAAK9N,IAClB4lZ,GAAUhnY,OAAOqmB,GAAK,OAKtCs9jB,UAAarhS,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAKq5jB,IAAchkS,MAAgBoiS,IAAiBpiS,MAAgB2hS,MACvIqC,GAAa78R,WAAsBnH,MAA0B,CAAEp4S,MAAOo8kB,GAAcnvlB,QAAS,SAAU81B,IAAK,OAAOq5jB,GAAarhS,UAAKh4R,OACrIq5jB,GAAej5jB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC+9R,GAAgBT,MAC1EqC,IA5GsBA,IAAT,GAkHhB,MASMW,GAAa,0BACbnoK,GAAiB,sDAKjB5/Y,GAAU,CAACj7B,GAAMgoZ,MACnB,KAAOhoZ,KAASgoZ,GAAUhoZ,KACtBA,GAAOA,GAAKqoI,WAEhB,OAAOroI,IAKL+nZ,GAAiB,CAAC/nZ,GAAMgoZ,GAAW7jB,MACrC,KAAOnkY,IAAQA,KAASmkY,KAAU6jB,GAAUhoZ,KACxCA,GAAOA,GAAKqoI,WAEhB,GAAIroI,KAASmkY,GACT,OAAOnkY,IAMTo7a,GAAe9rb,KACjB,GAAIA,GAAQogX,QAAS,CACjB,MAAMA,GAAUpgX,GAAQogX,QAAQz5V,cAC1Bq4V,GAAWh/W,GAAQozC,aAAa,YAChC4piB,GAAuB,OAAbh+N,GAChB,IAAIitE,GAAyB,OAAbjtE,KAAsBg+N,GACtC,OAAIzxJ,GAAezkB,KAAK1mD,MACpB6rE,IAAajsb,GAAQrM,WAAaqplB,IAE/B/wJ,GAEX,OAAO,GAELX,GAAe9pE,IAAeljW,OAAOkjW,IAAYxxV,OAAO1tB,MAAM,KAI9DouiB,GAAW,CAAC1wiB,GAAS1P,KAChBg7b,GAAYtrb,GAAQ0oC,WAAWt9B,QAAQ9a,KAAS,EAerDqjmB,GAAajjlB,IAASA,GAAK0iC,aA7Dd,yBA+EbwgjB,GAAS,CAACljlB,GAAMmjlB,MAClB,GAAInjlB,KAASmjlB,GAAanxE,MAAM,GAAG1ihB,QAAQxG,cACvC,OAAO,EAEX,MAAM45B,GAdW1iB,MACjB,IAAI0iB,GAAOuY,GAAQj7B,GAnBCqzI,MACpB,MAAM3wH,GAAOk4Z,GAkB2B,oCAjBxC,OAAQtrb,KACJ,MAAMkzC,GAAYo4Y,GAAYtrb,GAAQ0oC,WACtC,OAAO4qR,QAAQlgS,GAAKvhC,KAAKvB,IAAQ4iD,GAAU9nC,QAAQ9a,KAAS,MAevC28gB,IACzB,OAAI75e,IAAQs9gB,GAASt9gB,GAAM,kBACvBA,GAAOA,GAAKyU,cAAc,kBAEvBzU,IASM0gkB,CAAYpjlB,IACzB,OAAO0iB,IAAQygkB,GAAahD,aAAaz9jB,KAqB7C,IAAI2gkB,GAAkB,UAASA,GAAN,MAIrB3omB,cACIE,KAAK23X,QAAU,IAAI/yX,MAEvBiD,KAAK7C,GAAMi1B,IACPj6B,KAAKu6lB,MAAMmO,cAAc1jmB,GAAMi1B,IAEnC47V,aAAa7wX,IACT,OAAOhF,KAAKu6lB,QAAS1kO,QAAa71X,KAAKu6lB,MAAMv1lB,KAEjD2jmB,UAAU1/lB,IACN,OAAOjJ,KAAKwyD,QAAS81iB,GAAOr/lB,GAAEP,OAAQ1I,KAAKwyD,SAGnDi2iB,UAAmBriS,UAAO,SAAoCh4R,IAAK,OAAO,IAAKA,IAAKq6jB,KACpFA,GAAmB79R,WAAsBnH,MAA0B,CAAEp4S,MAAOo9kB,GAAoBnwlB,QAAS,SAAU81B,IAAK,OAAOq6jB,GAAmBriS,UAAKh4R,OAlBxHq6jB,IAAT,GAmDlB3qJ,GAAqB,UAASA,GAAN,MACxBh+c,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3Bi3I,UAAsB13I,UAAO,SAAuCh4R,IAAK,OAAO,IAAKA,IAAK0va,IAAuBr6I,MAAyBA,MAAoB,KAC9Jq6I,GAAsB3yI,UAAqB1H,MAAyB,CAAE37T,KAAMg2c,GAAuBj6c,UAAW,CAAC,CAAC,GAAI,wBAAyB,OAC7Ii6c,GAAwBtva,EAAW,CAAEq8R,EAAQ,KAAGE,UAC5CjD,EAAW,oBAAqB,CAACC,SAClC+1I,IAT+BA,IAAT,GA2CrB8qJ,GAAyB,UAASA,GAAN,MAC5B9omB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3B+hS,UAA0BxiS,UAAO,SAA2Ch4R,IAAK,OAAO,IAAKA,IAAKw6jB,IAA2BnlS,MAAyBA,MAAoB,KAC1KmlS,GAA0Bz9R,UAAqB1H,MAAyB,CAAE37T,KAAM8gmB,GAA2B/kmB,UAAW,CAAC,CAAC,GAAI,4BAA6B,OACzJ+kmB,GAA4Bp6jB,EAAW,CAAEq8R,EAAQ,KAAGE,UAChDjD,EAAW,oBAAqB,CAACC,SAClC6gS,IATmCA,IAAT,GAyCzBC,GAA4B,UAASA,GAAN,MAC/B/omB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BgiS,UAA6BziS,UAAO,SAA8Ch4R,IAAK,OAAO,IAAKA,IAAKy6jB,IAA8BplS,MAAyBA,MAAoB,KACnLolS,GAA6B19R,UAAqB1H,MAAyB,CAAE37T,KAAM+gmB,GAA8BhlmB,UAAW,CAAC,CAAC,GAAI,+BAAgC,OAClKglmB,GAA+Br6jB,EAAW,CAAEq8R,EAAQ,KAAGE,UACnDjD,EAAW,oBAAqB,CAACC,SAClC8gS,IATsCA,IAAT,GAWhC,IAAIC,GA8CJ,IAAIC,GAAoBD,GAAsB,MAItC52iB,eACA,GAAIlyD,KAAKmrD,cAAgBnrD,KAAKmrD,aAAaplD,OACvC,OAAO/F,KAAKmrD,aAAajkD,MAAM2/T,YAMnCy9R,mBACA,GAAItkmB,KAAK8jmB,kBAAoB9jmB,KAAK8jmB,iBAAiB/9lB,OAC/C,OAAO/F,KAAK8jmB,iBAAiB58lB,MAAM2/T,YAMvC4lH,sBACA,GAAIzsb,KAAKgpmB,qBAAuBhpmB,KAAKgpmB,oBAAoBjjmB,OACrD,OAAO/F,KAAKgpmB,oBAAoB9hmB,MAAM2/T,YAM1Cr0Q,YACA,GAAIxyD,KAAKw+D,SAASz4D,OACd,OAAO/F,KAAKw+D,SAASgwB,UAAUzhF,OAAOkT,IAAKA,KAAMjgB,QAI7D+omB,GAAkB3iS,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK26jB,KAClFA,GAAkBxiS,UAAqB9C,MAAyB,CAAE37T,KAAMihmB,GAAmBllmB,UAAW,CAAC,CAAC,oBAAqB20X,eAAgB,SAA0Ch1D,GAAI/3T,GAAKgtX,IAK1L,GAL+M,EAALj1D,KACxMC,MAAsBg1D,GAAUqlF,GAAuB,GACvDr6I,MAAsBg1D,GAAUmwO,GAA2B,GAC3DnlS,MAAsBg1D,GAAUowO,GAA8B,GAC9DplS,MAAsBg1D,GAAUqwO,GAAqB,IAC9C,EAALtlS,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI0/C,aAAeu/D,IACxE+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIq4lB,iBAAmBp5e,IAC5E+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIu9lB,oBAAsBt+e,IAC/E+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+yD,SAAWksD,MACnEk8M,OAAQ,CAAE97T,KAAM,OAAQgU,IAAK,MAAOzW,SAAU,WAAYuhD,SAAU,WAAY0/Q,SAAU,WAAYx5T,KAAM,OAAQgD,KAAM,OAAQo1V,UAAW,aAAer6J,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAAoCsxQ,GAAI/3T,MAAUm8T,cAAe,IACnQp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B+1kB,GAAkB1olB,UAAW,YAAQ,GACxCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B+1kB,GAAkB1olB,UAAW,WAAO,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B+gS,GAAkB1olB,UAAW,gBAAY,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BkjmB,GAAkB1olB,UAAW,gBAAY,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BkjmB,GAAkB1olB,UAAW,gBAAY,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B+1kB,GAAkB1olB,UAAW,YAAQ,GACxCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BkjmB,GAAkB1olB,UAAW,YAAQ,GACxCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B+gS,GAAkB1olB,UAAW,iBAAa,GAC7CmuB,EAAW,IACPmqV,OAAgBmlF,IAChBh2I,EAAW,cAAe8wD,QAC3BmwO,GAAkB1olB,UAAW,oBAAgB,GAChDmuB,EAAW,EACPmqV,SAAgBiwO,IAChB9gS,EAAW,cAAe8wD,QAC3BmwO,GAAkB1olB,UAAW,wBAAoB,GACpDmuB,EAAW,IACPmqV,OAAgBkwO,IAChB/gS,EAAW,cAAe8wD,QAC3BmwO,GAAkB1olB,UAAW,2BAAuB,GACvDmuB,EAAW,IACPmqV,OAAgBmwO,IAChBhhS,EAAW,cAAe8wD,QAC3BmwO,GAAkB1olB,UAAW,gBAAY,OAKtC4olB,SAAN,SACInpmB,cAIIE,KAAKgM,UAAW,EAKhBhM,KAAK+jmB,aAAc,EAMnB/jmB,KAAKglmB,WAAa,IAIlBhlmB,KAAKwK,SAAU,EAKfu6lB,gBACA,OAAO/kmB,KAAKwyD,QAAUxyD,KAAKw+D,SAAWx+D,KAAKw+D,SAASgwB,UAAY,KAGxEy6gB,UAAS7iS,UAAO,SAA0Bh4R,IAAK,OAAO,IAAKA,IAAK66jB,KAChEA,GAAS99R,UAAqB1H,MAAyB,CAAE37T,KAAMmhmB,GAAUzwO,eAAgB,SAAiCh1D,GAAI/3T,GAAKgtX,IAI7H,GAJkJ,EAALj1D,KAC3IC,MAAsBg1D,GAAUqlF,GAAuB,GACvDr6I,MAAsBg1D,GAAUmwO,GAA2B,GAC3DnlS,MAAsBg1D,GAAUswO,GAAmB,IAC5C,EAALvlS,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI0/C,aAAeu/D,IACxE+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIq4lB,iBAAmBp5e,IAC5E+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+yD,SAAWksD,MACnEk8M,OAAQ,CAAE56T,SAAU,WAAY+3lB,YAAa,cAAeiB,WAAY,aAAcx6lB,QAAS,UAAWgoD,MAAO,WAC1HhkB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5T,QAC3B26lB,GAAS5olB,UAAW,aAAS,GAChCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BihS,GAAS5olB,UAAW,gBAAY,GACnCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BojmB,GAAS5olB,UAAW,mBAAe,GACtCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3B26iB,GAAS5olB,UAAW,kBAAc,GACrCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BojmB,GAAS5olB,UAAW,eAAW,GAClCmuB,EAAW,EACPmqV,SAAgBmlF,IAChBh2I,EAAW,cAAe8wD,QAC3BqwO,GAAS5olB,UAAW,oBAAgB,GACvCmuB,EAAW,IACPmqV,OAAgBiwO,IAChB9gS,EAAW,cAAe8wD,QAC3BqwO,GAAS5olB,UAAW,wBAAoB,GAC3CmuB,EAAW,EACPmqV,SAAgBowO,IAChBjhS,EAAW,cAAe8wD,QAC3BqwO,GAAS5olB,UAAW,gBAAY,GAvE7B4olB,OAyEN,IAAIC,GAkBJ,IAAIC,GAAgBD,GAAkB,cAA4BD,GAC9DnpmB,YAAYyomB,GAAca,GAAOjrK,GAAStqC,GAAY5gC,GAAc3rU,GAAQ49G,GAAUshc,IAClFhnlB,QACAxf,KAAKuomB,aAAeA,GACpBvomB,KAAKopmB,MAAQA,GACbppmB,KAAKm+b,QAAUA,GACfn+b,KAAK6zZ,WAAaA,GAClB7zZ,KAAKizX,aAAeA,GACpBjzX,KAAKsnD,OAASA,GACdtnD,KAAKklK,SAAWA,GAChBllK,KAAKwmmB,eAAiBA,GAItBxmmB,KAAKstC,OAAS,IAAI1oC,MAIlB5E,KAAK+nB,KAAO,IAAInjB,MAIhB5E,KAAKgrB,MAAQ,IAAIpmB,SACjB+/T,KAAgBV,IAChBjkU,KAAKm+b,QAAQo8J,MAAQv6lB,KACjBwmmB,KACAA,GAAeh0iB,MAAQxyD,KAAKuomB,aAC5BvomB,KAAKqpmB,2BAA6B7C,GAAe7uO,QAAQjyX,UAAU1F,KAAKspmB,eAAezjlB,KAAK7lB,QAMhGupmB,sBACA,GAAIvpmB,KAAKgM,SACL,MAAO,WAMXw9lB,uBACA,OAAOxhS,QAAQhoU,KAAKwmmB,gBAEpBv6lB,gBACA,OAAOjM,KAAK0kU,IAEZA,UACA,OAAO1kU,KAAKizX,aAAavuD,IAQ7B57E,OAAO/gO,MAASq2b,IACZ,QAASj0a,GAAM,EAAGA,GAAMi0a,GAAQr4c,OAAQokC,KAAO,CAC3C,MAAMn3B,GAAOhT,KAAKuomB,aAAa1plB,IAAIu/b,GAAQj0a,KACvCn3B,KAASA,GAAK3K,WACV0f,GACA/U,GAAK+U,OAGL/U,GAAKgY,UAQrBqiT,MAAMzpT,IACF5jB,KAAK6zZ,WAAWuzM,WAAWxjlB,IAE/B7c,YAAYC,IAGR,GAFAhH,KAAK6zZ,WAAW7nZ,SAAWhM,KAAKgM,SAChChM,KAAKopmB,MAAM93lB,MAAQtR,KAAKglmB,WACpBh+lB,GAAQ+8lB,YAAa,CACrB,MAAMA,GAAc/jmB,KAAK+jmB,aA7jBlB1olB,GA6jB0Crb,KAAK+jmB,cA7jBtBl+lB,OAAOw0D,OAAO,CACtDyuL,OAAQ,UACTztO,IA4jBSrb,KAAKopmB,MAAMzB,YAAc5D,GACzB97iB,IAA0C,UAAvB87iB,GAAYj7W,OAC3B9oP,KAAKypmB,mBAGLzpmB,KAAKi3d,mBAnkBF57c,OAukBf+5W,qBACIp1X,KAAK6zZ,WAAWqzM,eAEpBvgmB,cACI3G,KAAKi3d,mBACDj3d,KAAKwmmB,iBACLxmmB,KAAKwmmB,eAAeh0iB,MAAQ,KAC5BxyD,KAAKqpmB,2BAA2BvimB,eAGxC2imB,oBACSzpmB,KAAKuoU,yBAA0BmtD,WAChC11X,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAKuoU,uBAAyBvoU,KAAKklK,SAASrpD,OAAO,WAAY,QAAU5yG,KAChEq/lB,GAAOr/lB,GAAEP,OAAQ1I,KAAKuomB,gBACvBvomB,KAAKopmB,MAAMzB,YAAa,EACxB3nmB,KAAKm+b,QAAQmoK,WACbtmmB,KAAKm+b,QAAQuoK,eAMjCzvI,mBACQj3d,KAAKuoU,wBACLvoU,KAAKuoU,yBAGb+gS,eAAergmB,IACX,IAAKjJ,KAAKuomB,aAAa1/C,SACnB,OAEJ,MAAM1zL,GAAUlsX,GAAEksX,QACZzwD,GAAM1kU,KAAKizX,aAAavuD,IACxBx9T,GAAQiuX,KAAYpxP,gBAAkBoxP,KAAYpxP,gBAClDzM,GAAO69P,KAAYpxP,cAAgBoxP,KAAYpxP,eACrD,IAAIngH,GACC1c,KAAUw9T,IAASptM,IAAQotM,GAC5B9gT,GAAQ,SAEF1c,IAASw9T,IAASptM,KAASotM,MACjC9gT,GAAQ,QAERA,KACA3a,GAAEi5C,iBACFliD,KAAKqtU,MAAMzpT,OAIvBullB,GAAc/iS,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAK+6jB,IAAe1lS,MAAyB2hS,IAAe3hS,MAAyBgkS,IAAehkS,MAAyBoiS,IAAiBpiS,MAAyB05D,IAAoB15D,MAAyB4C,MAA6B5C,MAAyBA,OAAgBA,MAAyBA,OAAmBA,MAAyBglS,GAAoB,KACxbU,GAAc5iS,UAAqB9C,MAAyB,CAAE37T,KAAMqhmB,GAAetlmB,UAAW,CAAC,CAAC,eAAgB6iU,SAAU,EAAGC,aAAc,SAAoCnD,GAAI/3T,IAAgB,EAAL+3T,IACtLC,MAAmB,QAASh4T,GAAIQ,YAC/B26T,OAAQ,CAAE8iS,iBAAkB,mBAAoBC,qBAAsB,wBAA0BpzO,QAAS,CAAEjpV,OAAQ,SAAUvlB,KAAM,OAAQiD,MAAO,SAAWwrW,SAAU,CAAC,aAAcrqW,SAAU,CAACs3S,MAA0B,CACxN2hS,GACAS,GACA1oO,GACAsqO,GACA3gS,KACA,CACIjuR,QAASkuR,KACTC,SAAU,cAEd,CACInuR,QAASowjB,GACTnwjB,aAAa/nC,SAAW,IAAMm4lB,OAElCzlS,MAAmCA,OAA8B51H,MAAO,EAAGo5H,KAAM,GAAIC,OAAQ,CAAC,CAAC,OAAQ,UAAW,gBAAiB,GAAI,EAAG,WAAY,UAAW,WAAY,SAAU,EAAG,QAAS,QAAS,WAAY,MAAO,UAAW,cAAe,eAAgB,qBAAsBh1Q,SAAU,SAAgCsxQ,GAAI/3T,IAAgB,EAAL+3T,IAC5VC,MAAiB,EAAG,KAAM,GACnB,EAALD,KACFC,MAAmB,qBAAsBh4T,GAAIO,SAA7Cy3T,CAAuD,kBAAmBh4T,GAAIO,SAA9Ey3T,CAAwF,iBAAkBh4T,GAAI+9lB,kBAC9G/lS,MAAkB,QAASh4T,GAAIs5lB,UAA/BthS,CAA0C,QAAS,EAAnDA,CAAsD,WAAYh4T,GAAIO,SAAtEy3T,CAAgF,MAAOh4T,GAAIi5T,IAA3FjB,CAAgG,UAAWh4T,GAAIjB,QAA/Gi5T,CAAwH,cAAeh4T,GAAIs4lB,YAA3ItgS,CAAwJ,gBAA2C,MAA1Bh4T,GAAI0/C,aAAajkD,MAAgB,KAAOuE,GAAI0/C,aAAajkD,MAAM2/T,cAAgBp7T,GAAIi+lB,iBAA5PjmS,CAA8Q,oBAAmD,MAA9Bh4T,GAAIq4lB,iBAAiB58lB,MAAgB,KAAOuE,GAAIq4lB,iBAAiB58lB,MAAM2/T,cAAgBp7T,GAAIk+lB,sBAC9XlmS,MAAmB,mBAAoBh4T,GAAI89lB,mBAC1C9hS,WAAY,WAAc,MAAO,CAACqxD,KAAmBlxD,cAAe,IAC7Ep5R,EAAW,IACP0/I,SACA45I,EAAW,cAAeC,QAC3BohS,GAAc9olB,UAAW,wBAAoB,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeC,QAC3BohS,GAAc9olB,UAAW,4BAAwB,GACpDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BukmB,GAAc9olB,UAAW,cAAU,GACtCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BukmB,GAAc9olB,UAAW,YAAQ,GACpCmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BukmB,GAAc9olB,UAAW,aAAS,GACrCmuB,EAAW,EACPy5R,SAAY,eACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCqhS,GAAc9olB,UAAW,YAAa,MACzC8olB,GAAgBD,GAAkB16jB,EAAW,CAAEq8R,EAAQ,GAAGE,YACtDjD,EAAW,oBAAqB,CAACs9R,GAC7BqC,GACA5B,GACA1oO,GACAr2D,KACAilD,MACA5jD,MACAsgS,MACLU,IAMH,IAAIrwO,GAAa,UAASA,GAAN,MAChBh5X,YAAYyomB,GAAca,GAAOjrK,GAAStqC,GAAY3uP,GAAU59G,GAAQ5yC,IACpE1U,KAAKuomB,aAAeA,GACpBvomB,KAAKopmB,MAAQA,GACbppmB,KAAKm+b,QAAUA,GACfn+b,KAAK6zZ,WAAaA,GAClB7zZ,KAAKklK,SAAWA,GAChBllK,KAAKsnD,OAASA,GACdtnD,KAAK0U,QAAUA,GACf1U,KAAKwK,SAAU,EAEnBw5lB,eAAepglB,IACX,OAAO5jB,KAAKuomB,aAAa/yS,UAAUx1T,KAAK4jB,MAAOA,IAEnDve,WACIrF,KAAKuomB,aAAalD,QAAQrlmB,MAC1BA,KAAKw6kB,gBAET7zkB,cACI3G,KAAKuomB,aAAajD,WAAWtlmB,MACzBA,KAAKs2Y,kBACLt2Y,KAAKs2Y,mBAGbkkM,kBACS9kN,YAA0B11X,KAAK0U,SAGpC1U,KAAKsnD,OAAO4yR,kBAAkB,KAC1B,MAAMxlU,GAAU1U,KAAK0U,QAAQxG,cACvBuvJ,GAAYz9J,KAAKkiH,MAAQ,EAAI7hE,GAAQ3rC,GAAU0Q,IAASggiB,GAAShgiB,GAAM,YAAc1Q,GACrFk1lB,GAAmB5pmB,KAAKklK,SAASrpD,OAAOnnG,GAAS,YAAczL,KACjE,GAAIA,GAAEP,SAAWgM,IAA0B,IAAf1U,KAAKkiH,MAC7BliH,KAAK6pmB,cAEJ,CACD,MAAM72lB,GAAOhT,KAAK8pmB,SAAS7gmB,GAAEP,SAAW1I,KAAKuomB,aAAa1plB,IAAI7e,KAAK4jB,OAC/D5Q,MAAUhT,KAAK+jmB,aAA2C,UAA5B/jmB,KAAK+jmB,YAAYj7W,QAAqC,IAAf91O,GAAKkvG,OAAgBlvG,GAAKo7kB,aAC/FpulB,KAAKopmB,MAAM3mY,KAAKzvN,OAItB+2lB,GAAoB/pmB,KAAKklK,SAASrpD,OAAO4hD,GAAW,aAAex0J,KACjEjJ,KAAKgqmB,WAAW/gmB,KAChBjJ,KAAK6pmB,YAGP5gE,GAAsBjpiB,KAAKklK,SAASrpD,OAAOnnG,GAAS,UAAYzL,KAC9Dm8iB,GAASn8iB,GAAEP,OAAQ,gBACnB1I,KAAK6zZ,WAAWl8B,QAAQ1uX,MAG1Bqjb,GAAmBtsb,KAAKklK,SAASrpD,OAAOnnG,GAAS,WAAazL,KAC5DjJ,KAAKgqmB,WAAW/gmB,KAChBjJ,KAAK6zZ,WAAWozM,eAOlBp1C,GAAoB7xjB,KAAKklK,SAASrpD,OAAOl6F,SAAU,aAAe1Y,KACpE,GAAIq/lB,GAAOr/lB,GAAEP,OAAQ1I,KAAKuomB,cAAe,CACrC,MAAMv1lB,GAAOhT,KAAK8pmB,SAAS7gmB,GAAEP,QAE7B1I,KAAK6zZ,WAAWxmF,MAAMr6T,IAEjBA,GAAK0X,QACN1qB,KAAKopmB,MAAM3mY,KAAKzvN,YAGfhT,KAAK6zZ,WAAWizM,WAAY,CAEjC,MAAMC,GAAa/mmB,KAAKuomB,aAAa1plB,IAAI7e,KAAK6zZ,WAAW0X,aACzDvra,KAAK6pmB,UACL9C,GAAW9iU,UAGbozL,GAAoBr3d,KAAKklK,SAASrpD,OAAOnnG,GAAS,QAAS1U,KAAK2xb,aAAa9ra,KAAK7lB,OACxFA,KAAKs2Y,iBAAmB,KACpBszN,KACAG,KACA9gE,KACA38G,KACA+qC,KACAw6F,QAIZm4C,WAAW/gmB,IACP,OAAKA,GAAE+uX,gBAGCswO,GAAOr/lB,GAAE+uX,cAAeh4X,KAAKuomB,cAEzCsB,UACI,MAAM9F,GAAc/jmB,KAAK+jmB,cACpBA,IAAsC,UAAvBA,GAAYj7W,SAC5B9oP,KAAKopmB,MAAM94N,MAAMyzN,IAAsC,UAAvBA,GAAYj7W,QAGpDghX,SAASphmB,IACL,MAAM0c,GAttBM,EAACA,GAAMmkY,KAAU4jB,GAAe/nZ,GAAMijlB,GAstBjBromB,KAAK0U,QAAQxG,eAAjC+7lB,CAAYvhmB,IACzB,GAAI0c,GAAM,CACN,MAAMxB,GAAQyklB,GAAUjjlB,IACxB,OAAOplB,KAAKuomB,aAAa1plB,IAAI+E,KAGrC+ta,aAAa1ob,IACT,GAAIu3b,GAAYv3b,GAAEP,UAAY08iB,GAASn8iB,GAAEP,OAAQ,eAC7C,OAEJ,MAAMsK,GAAOhT,KAAK8pmB,SAAS7gmB,GAAEP,QAC7B,GAAKsK,KAAQA,GAAKk3lB,YAAal3lB,GAAKm3lB,WAGpC,IAAIn3lB,GAAK3K,SAEL,YADAY,GAAEi5C,iBAUN,GAPAliD,KAAKm+b,QAAQ7wZ,OAAOt6B,GAAM/J,GAAG,KACzBA,GAAEi5C,mBAENliD,KAAK6zZ,WAAWxmF,MAAMr6T,IAClBA,GAAKkvG,MAAQ,IAAMlvG,GAAKo7kB,YACxBpulB,KAAKm+b,QAAQgoK,YAAYnzlB,IAEzBhT,KAAK+jmB,YAAa,CAClB,MAAMqF,GAAQppmB,KAAKopmB,MACfp2lB,GAAK0X,OACc,IAAf1X,GAAKkvG,QACLknf,GAAMzB,YAAa,EACnB3nmB,KAAKm+b,QAAQnza,MAAMhY,KAGlBA,GAAKo7kB,YACVgb,GAAMzB,YAAa,EACnB3nmB,KAAKm+b,QAAQioK,YAAYpzlB,IACzBhT,KAAKm+b,QAAQp2a,KAAK/U,MAGlBo2lB,GAAMzB,YAAa,EACA,IAAf30lB,GAAKkvG,OAA2C,UAA5BliH,KAAK+jmB,YAAYj7W,QACrC9oP,KAAKopmB,MAAMnB,gBAIvBjomB,KAAKm+b,QAAQuoK,aAGrB5tO,UAAc1yD,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAK0qV,IAAer1D,MAAyB2hS,IAAe3hS,MAAyBgkS,IAAehkS,MAAyBoiS,IAAiBpiS,MAAyB05D,IAAoB15D,MAAyBA,OAAmBA,MAAyBA,OAAgBA,MAAyBA,SAC9Wq1D,GAAcvyD,UAAqB9C,MAAyB,CAAE37T,KAAMgxX,GAAej1X,UAAW,CAAC,CAAC,GAAI,gBAAiB,KAAM+iU,OAAQ,CAAEp8T,QAAS,UAAWgoD,MAAO,QAAS0vD,MAAO,QAASt+F,MAAO,QAAS5X,SAAU,WAAY04T,IAAK,MAAOq/R,YAAa,cAAe54iB,aAAc,eAAgB24iB,iBAAkB,oBAAsB92X,MAAOu2F,GAAK11H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,QAAS,WAAY,CAAC,gBAAiB,GAAI,OAAQ,WAAY,QAAS,qBAAsB,EAAG,OAAQ,QAAS,WAAY,UAAW,MAAO,eAAgB,mBAAoB,cAAe,QAAS,eAAgB,UAAW,UAAW,UAAW,SAAU,mBAAoB,EAAG,QAAS,CAAC,QAAS,qBAAsB,OAAQ,YAAa,EAAG,UAAW,UAAW,EAAG,QAAS,CAAC,gBAAiB,GAAI,OAAQ,WAAY,EAAG,SAAU,cAAe,EAAG,OAAQ,QAAS,WAAY,UAAW,MAAO,eAAgB,mBAAoB,cAAe,QAAS,eAAgB,UAAW,WAAY,CAAC,OAAQ,YAAa,EAAG,cAAe,SAAU,EAAG,UAAW,YAAah1Q,SAAU,SAAgCsxQ,GAAI/3T,IAAgB,EAAL+3T,IACnlCC,MAAkB,EAAG2mS,GAAuC,EAAG,EAAG,eAAgB,GAC3E,EAAL5mS,IACFC,MAAkB,UAAWh4T,GAAI+mD,QAChCi1Q,WAAY,WAAc,MAAO,CAACnB,KAAgBA,KAAa+jS,GAAe/jS,KAAgBA,OAAoBsB,cAAe,IAC1Ip5R,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,QAC3BwqX,GAAcz4W,UAAW,aAAS,GACrCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3BwqU,GAAcz4W,UAAW,aAAS,GACrCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B8lW,GAAcz4W,UAAW,aAAS,GACrCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BizX,GAAcz4W,UAAW,eAAW,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B8wD,GAAcz4W,UAAW,gBAAY,GACxCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B8wD,GAAcz4W,UAAW,WAAO,GACnCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BizX,GAAcz4W,UAAW,mBAAe,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3B+wD,GAAcz4W,UAAW,oBAAgB,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3B+wD,GAAcz4W,UAAW,wBAAoB,GAChDy4W,GAAgBtqV,EAAW,CAAEs5R,EAAW,oBAAqB,CAACs9R,GACtDqC,GACA5B,GACA1oO,GACAh1D,MACA4jD,MACAl9W,SACLiqX,IAvMuBA,IAAT,GAyMjB,MAAMwxO,GAAc,CAChBt+lB,SAAU,MACVD,WAAY,QAEVw+lB,GAAkB,CACpBv+lB,SAAU,MACVD,WAAY,SAEVy+lB,GAAqB,CACvBx+lB,SAAU,OACVD,WAAY,OAEV0+lB,GAAuB,CACzBz+lB,SAAU,MACVD,WAAY,QAKV2+lB,GAAqB,CACvB1+lB,SAAU,CACNiC,OAAQ,CACJjC,SAAU,SACVD,WAAY,SAEhBqC,MAAOm8lB,GACP56N,UAAW66N,GACXhgmB,QAAS,QAEbuB,WAAY,CACRkC,OAAQ,CACJjC,SAAU,MACVD,WAAY,QAEhBqC,MAAOm8lB,GACP56N,UAAW86N,GACXjgmB,QAAS,SAMXmgmB,GAAiB,CACnB3+lB,SAAU,CACNiC,OAAQ,CACJjC,SAAU,SACVD,WAAY,QAEhBqC,MAAOk8lB,GACP36N,UAAW66N,GACXhgmB,QAAS,QAEbuB,WAAY,CACRkC,OAAQ,CACJjC,SAAU,MACVD,WAAY,SAEhBqC,MAAOk8lB,GACP36N,UAAW86N,GACXjgmB,QAAS,UAOXogmB,GAAWjnmB,SAA2B,IAAVA,GAI5BwsY,GAAc,KAChB,MAAIza,QACA,OAAO,IAAI7mX,MAAW8S,SAASgF,OAIjCwqX,GAAOhB,GAKb,IAAIk6N,GAAa,UAASA,GAAN,MAChBvqmB,YAAYyomB,GAAc10M,GAAY/d,GAAgB5wO,GAAUkB,GAAc1xJ,IAC1E1U,KAAKuomB,aAAeA,GACpBvomB,KAAK6zZ,WAAaA,GAClB7zZ,KAAK81Y,eAAiBA,GACtB91Y,KAAKklK,SAAWA,GAChBllK,KAAKomK,aAAeA,GACpBpmK,KAAK0U,QAAUA,GACf1U,KAAKwK,SAAU,EACfxK,KAAK+jmB,aAAc,EACnB/jmB,KAAK0qB,QAAS,EACd1qB,KAAKmqmB,YAAa,EAClBnqmB,KAAK48W,WAAY,EAEjBh5V,UAAMA,IACF5jB,KAAKqkG,QAAUrkG,KAAKqkG,SAAWzgF,IAC/B5jB,KAAKuomB,aAAa9pjB,OAAOz+C,MACzBA,KAAKqkG,OAASzgF,GACd5jB,KAAKuomB,aAAa//iB,IAAIxoD,OAGtBA,KAAKqkG,OAASzgF,GAElB5jB,KAAKykmB,QAAUzkmB,KAAKuomB,aAAa9D,QAAQ7glB,IAEzCA,YACA,OAAO5jB,KAAKqkG,OAEZh8F,eACA,OAAOrI,KAAKgT,KAAK3K,SAEjB8za,eACA,QAAOn8a,KAAKoulB,YAAoB,KAEhCz+Q,eACA,OAAO3vU,KAAKoulB,WAAapulB,KAAK0qB,OAAS,KAEvCtlB,YACA,OAAOpF,KAAKgT,KAAKlI,KAAO9K,KAAKgT,KAAKlI,KAAO,KAEzC+/lB,eACA,OAAO7qmB,KAAK4jB,QAAU5jB,KAAK6zZ,WAAW0X,YAAc,IAAM,KAE1DptC,oBACA,MAAM9iX,GAAWrb,KAAK0kU,IAAMgmS,GAAqBC,GACjD,OAAO3qmB,KAAK+L,WAAasP,GAAStP,WAAasP,GAASrP,SAExDD,iBACA,OAAO/L,KAAKgM,UAAYhM,KAAKkiH,MAAQ,EAErC4of,cACA,OAAO9iS,QAAQhoU,KAAKgT,KAAK8L,KAEzBwllB,mBACA,OAAOtkmB,KAAKgT,KAAKsxlB,cAAgBtkmB,KAAK8jmB,iBAEtC1V,iBACA,MAAM57hB,GAAQxyD,KAAKgT,KAAKw/C,MACxB,OAAOA,IAASA,GAAMzsD,QAAU/F,KAAKgT,KAAKy5a,gBAE1Cy9K,gBACA,OAAOliS,QAAQhoU,KAAKgT,KAAK4L,SAEzBwvD,gBACA,MAAQ,OAAMpuE,KAAKgT,KAAKlD,OAExB0uD,eACA,MAAMxrD,GAAOhT,KAAKgT,KAClB,OAAIA,GAAKy5a,iBACAzsb,KAAK2ylB,eACN3ylB,KAAK2ylB,aAAe,CAAC,CACb/zkB,QAAS5L,GAAKy5a,gBACd8tK,MAAOvnlB,GACPwxlB,WAAYxkmB,KAAK4jB,SAGtB5jB,KAAK2ylB,cAET3/kB,GAAKw/C,MAEZN,eACA,OAAOlyD,KAAKgT,KAAKk/C,UAAYlyD,KAAKmrD,aAEtC66iB,sBACI,MAAMhzlB,GAAOhT,KAAKgT,KAClB,OAAOhT,KAAKmrD,cAAgBn4C,GAAKy5a,iBAAmBzsb,KAAK8jmB,kBACpD9wlB,GAAKw/C,OAASx/C,GAAKw/C,MAAMjsD,KAAK8/B,IAAWA,GAAQ6rB,UAAY7rB,GAAQi+jB,cAE9Ej/lB,WACIrF,KAAKuomB,aAAa//iB,IAAIxoD,MAE1B2G,cACI3G,KAAKuomB,aAAa9pjB,OAAOz+C,MACzBA,KAAK48W,WAAY,EACb58W,KAAK8vC,WACL9vC,KAAK8vC,SAAS9kB,QACdhrB,KAAK8vC,SAAW,MAGxBu9R,QACIrtU,KAAK0U,QAAQxG,cAAcm/T,QAE/BppC,OACIjkS,KAAK0U,QAAQxG,cAAc+1R,OAE/BkjU,aAAatzb,IAEL7zK,KAAK65G,aAAa,WADlBg6D,GAC8B,IAGA,MAGtC9rJ,OACI,IAAK/nB,KAAK48W,WAAa58W,KAAKoulB,aAAepulB,KAAK0qB,OAAQ,CACpD,MAAMyzW,GAAgBn+X,KAAKm+X,cACrB3zX,KAAUxK,KAAKwK,SAAU3E,OAAOw0D,OAAO,GAAIr6D,KAAKwK,QAAS,CAC3DyB,UAAWkyX,GAAc3zX,UAE7BxK,KAAK0qB,QAAS,EACd1qB,KAAK8vC,SAAW9vC,KAAKomK,aAAar+I,KAAK,CACnCk3W,WAAYd,GAAc/vX,MAC1B+wX,YAAahB,GAAclwX,OAC3B0hY,UAAWxR,GAAcwR,UACzB1hY,OAAQjO,KAAK0U,QACbk7X,aAAc,WACdhxX,QAAS5e,KAAKw/X,cACdpiU,WAAY,CACR,QAASp9D,KAAK0kU,IACd,gBAAgB,GAEpBl6T,QAASA,KAEbxK,KAAK65G,aAAa,gBAAiB,QACnC75G,KAAK65G,aAAa,YAAa75G,KAAKykmB,SACpCzkmB,KAAK81Y,eAAe5gM,iBAG5BlqL,SACShrB,KAAK48W,WAAa58W,KAAK0qB,SACxB1qB,KAAK0qB,QAAS,EACV1qB,KAAK8vC,WACL9vC,KAAK8vC,SAAS9kB,QACdhrB,KAAK8vC,SAAW,MAEpB9vC,KAAK81Y,eAAe5gM,gBACpBl1M,KAAK65G,aAAa,gBAAiB,SACnC75G,KAAKklK,SAAS4B,gBAAgB9mK,KAAK0U,QAAQxG,cAAe,cAGlEy+N,WACI,IAAI8Q,GACAz9O,KAAKskmB,aACL7mX,GAAOz9O,KAAK0U,QAAQxG,cAAcquC,cAAc,iBAE3Cv8C,KAAK8qmB,UACVrtX,GAAOz9O,KAAKy9O,KAAKvvO,eAEjBuvO,KACAz9O,KAAKmqmB,YAAa,EAClB1sX,GAAKhyK,QACLzrE,KAAKmqmB,YAAa,GAG1Btwf,aAAa70G,GAAMrB,IACf3D,KAAKklK,SAASrrD,aAAa75G,KAAK0U,QAAQxG,cAAelJ,GAAMrB,MAGrE0mmB,UAAcjkS,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAKi8jB,IAAe5mS,MAAyB2hS,IAAe3hS,MAAyB05D,IAAoB15D,MAAyBA,OAA2BA,MAAyBA,OAAmBA,MAAyBkE,MAAsBlE,MAAyBA,SACtV4mS,GAAc9jS,UAAqB9C,MAAyB,CAAE37T,KAAMuimB,GAAexmmB,UAAW,CAAC,CAAC,GAAI,gBAAiB,KAAM2iU,UAAW,SAA6BhD,GAAI/3T,IAGjK,GAHiL,EAAL+3T,KAC1KC,KAAmBwtD,GAAK,GACxBxtD,KAAmBytD,GAAK,IACjB,EAAL1tD,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIgyO,KAAO/yH,GAAGxjH,OACnEu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+zX,cAAgB90Q,GAAGxjH,SAC3Ew/T,SAAU,EAAGC,aAAc,SAAoCnD,GAAI/3T,IAAgB,EAAL+3T,IAC/EC,MAAmB,gBAAiBh4T,GAAIpD,SAAxCo7T,CAAkD,gBAAiBh4T,GAAI0wa,SAAvE14G,CAAiF,gBAAiBh4T,GAAIkkU,SAAtGlM,CAAgH,aAAch4T,GAAIrG,MAAlIq+T,CAAyI,WAAYh4T,GAAIo/lB,WACxJjkS,OAAQ,CAAEp8T,QAAS,UAAWu5lB,YAAa,cAAenglB,MAAO,QAAS5Q,KAAM,OAAQkvG,MAAO,QAASijf,aAAc,eAAgBn5lB,SAAU,WAAY04T,IAAK,MAAOv5Q,aAAc,eAAgB24iB,iBAAkB,oBAAsB33kB,SAAU,CAACs3S,MAA0B,CAACw8D,KAAc,CAC3RpnV,QAASk4V,KACTtlB,WAAY0lB,OACVnkK,MAAOg3F,GAAKn2H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,qBAAsB,OAAQ,eAAgB,EAAG,iBAAkB,EAAG,QAAS,CAAC,QAAS,qBAAsB,WAAY,KAAM,OAAQ,eAAgB,EAAG,iBAAkB,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,QAAS,YAAa,OAAQ,eAAgB,EAAG,QAAS,CAAC,gBAAiB,IAAK,CAAC,cAAe,IAAK,CAAC,OAAQ,eAAgB,EAAG,SAAU,eAAgB,CAAC,OAAQ,IAAK,CAAC,EAAG,oBAAqB,CAAC,WAAY,KAAM,OAAQ,eAAgB,EAAG,SAAU,eAAgB,CAAC,EAAG,mBAAoB,2BAA4B,CAAC,OAAQ,eAAgB,EAAG,aAAc,CAAC,gBAAiB,GAAI,OAAQ,OAAQ,EAAG,UAAW,eAAgB,UAAW,EAAG,UAAW,MAAO,WAAY,cAAe,QAAS,QAAS,QAAS,eAAgB,oBAAqB,CAAC,QAAS,SAAU,OAAQ,eAAgB,EAAG,UAAW,EAAG,QAAS,CAAC,QAAS,6BAA8B,OAAQ,eAAgB,EAAG,oBAAqB,qBAAsB,oBAAqB,EAAG,QAAS,CAAC,OAAQ,eAAgB,EAAG,SAAU,EAAG,WAAY,CAAC,OAAQ,eAAgB,EAAG,SAAU,wBAAyBh1Q,SAAU,SAAgCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC9qCC,MAAkB,EAAGsnS,GAA+B,EAAG,EAAG,OAAQ,GAClEtnS,MAAkB,EAAGunS,GAA4B,EAAG,EAAG,IAAK,GAC5DvnS,MAAkB,EAAGwnS,GAA0B,EAAG,EAAG,KAAM,GAC3DxnS,MAAkB,EAAGynS,GAA8B,EAAG,EAAG,MAAO,GAChEznS,MAAkB,EAAG0nS,GAAsC,EAAG,GAAI,cAAe,KAAM,EAAG1nS,OAC1FA,MAAkB,EAAG2nS,GAAsC,EAAG,EAAG,cAAe,KAAM,EAAG3nS,QAClF,EAALD,KACFC,MAAkB,QAASh4T,GAAIq/lB,UAAYr/lB,GAAIuH,KAAK4L,UAAYnT,GAAI64lB,cACpE7gS,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIuH,KAAK8L,MAAQrT,GAAI64lB,cAC/C7gS,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAI64lB,eAAiB74lB,GAAIuH,KAAK4L,SACxD6kT,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIuH,KAAK4L,WAClC6oT,WAAY,CAACnB,KAAaA,KAAyBwyD,GAAexyD,MAAiBsB,cAAe,IAC3Gp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BwkmB,GAAchqlB,UAAW,YAAQ,GACpCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3B+7iB,GAAchqlB,UAAW,aAAS,GACrCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCq3kB,GAAchqlB,UAAW,QAAS,MACrCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3B+7iB,GAAchqlB,UAAW,oBAAgB,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BwkmB,GAAchqlB,UAAW,eAAW,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BqiS,GAAchqlB,UAAW,gBAAY,GACxCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BqiS,GAAchqlB,UAAW,WAAO,GACnCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BqiS,GAAchqlB,UAAW,mBAAe,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3BsiS,GAAchqlB,UAAW,oBAAgB,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3BsiS,GAAchqlB,UAAW,wBAAoB,GAChDmuB,EAAW,EACPq5R,SAAU,OAAQ,CAAExmT,QAAQ,IAC5BymT,EAAW,cAAej5T,QAC3Bw7lB,GAAchqlB,UAAW,YAAQ,GACpCmuB,EAAW,EACPq5R,SAAU,gBAAiB,CAAExmT,QAAQ,IACrCymT,EAAW,cAAeC,QAC3BsiS,GAAchqlB,UAAW,qBAAiB,GAC7CmuB,EAAW,IACPy5R,OAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCuiS,GAAchqlB,UAAW,WAAY,MACxCmuB,EAAW,EACPy5R,SAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCuiS,GAAchqlB,UAAW,WAAY,MACxCmuB,EAAW,EACPy5R,SAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCuiS,GAAchqlB,UAAW,WAAY,MACxCmuB,EAAW,IACPy5R,OAAY,mBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCuiS,GAAchqlB,UAAW,QAAS,MACrCmuB,EAAW,EACPy5R,SAAY,iBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCuiS,GAAchqlB,UAAW,WAAY,MACxCgqlB,GAAgB77jB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACs9R,GACtDjoO,GACAj1D,MACAC,MACA83D,KACApxX,SACLw7lB,IArRuBA,IAAT,GA6pBbgB,GAAU,UAASA,GAAN,QAEjBA,UAAWjlS,UAAO,SAA4Bh4R,IAAK,OAAO,IAAKA,IAAKi9jB,KACpEA,GAAWhgS,UAAqB5H,MAAwB,CAAE37T,KAAMujmB,KAChEA,GAAW//R,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACmB,KAAalB,SAJ3DsqmB,IAAT,GAqBd,iBAAoC/yO,IAcpC,IAAIgzO,GAA4B,UAASA,GAAN,MAC/BxrmB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BykS,UAA6BllS,UAAO,SAA8Ch4R,IAAK,OAAO,IAAKA,IAAKk9jB,IAA8B7nS,MAAyBA,MAAoB,KACnL6nS,GAA6BngS,UAAqB1H,MAAyB,CAAE37T,KAAMwjmB,GAA8BznmB,UAAW,CAAC,CAAC,GAAI,2BAA4B,OAC9JynmB,GAA+B98jB,EAAW,CAAEq8R,EAAQ,KAAGE,UACnDjD,EAAW,oBAAqB,CAACC,SAClCujS,IATsCA,IAAT,GAc5BC,GAAuB,UAASA,GAAN,MAC1BzrmB,YAAY0mmB,IACRxmmB,KAAKwmmB,eAAiBA,GAE1B3nlB,IAAI+E,IACA,GAAI5jB,KAAKwmmB,eAAeh0iB,MACpB,OAAOxyD,KAAKwmmB,eAAeh0iB,MAAM3zC,IAAI+E,MAIjD2nlB,UAAwBnlS,UAAO,SAAyCh4R,IAAK,OAAO,IAAKA,IAAKm9jB,IAAyB9nS,MAAgBglS,MACvI8C,GAAwB3gS,WAAsBnH,MAA0B,CAAEp4S,MAAOkglB,GAAyBjzlB,QAAS,SAAU81B,IAAK,OAAOm9jB,GAAwBnlS,UAAKh4R,OACtKm9jB,GAA0B/8jB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC2gS,MACrE8C,IAbiCA,IAAT,GAkBvBC,GAAwB,UAASA,GAAN,MAI3B1rmB,cACIE,KAAKyrmB,QAAU,GAEnBjjjB,IAAI9/C,IACA1I,KAAKyrmB,QAAQhmmB,KAAKiD,IAEtB+1C,OAAO/1C,IACH,MAAMkb,GAAQ5jB,KAAKyrmB,QAAQ3rlB,QAAQpX,IACnC1I,KAAKyrmB,QAAQ3nlB,OAAOF,GAAO,GAE/Brd,KAAKivP,IACD,OAAOx1P,KAAKyrmB,QAAQllmB,KAAKmC,IAAUA,GAAOgM,UAAY8gP,MAG9Dg2W,UAAyBplS,UAAO,SAA0Ch4R,IAAK,OAAO,IAAKA,IAAKo9jB,KAChGA,GAAyB5gS,WAAsBnH,MAA0B,CAAEp4S,MAAOmglB,GAA0BlzlB,QAAS,SAAU81B,IAAK,OAAOo9jB,GAAyBplS,UAAKh4R,OAnBpIo9jB,IAAT,GAwBxBE,GAAmC,UAASA,GAAN,MAItC5rmB,YAAY+/C,GAAY8rjB,IACpB3rmB,KAAK2rmB,cAAgBA,GACjB9rjB,KACA7/C,KAAK0U,QAAUmrC,GAAW3xC,iBAItCw9lB,UAAoCtlS,UAAO,SAAqDh4R,IAAK,OAAO,IAAKA,IAAKs9jB,IAAqCjoS,MAAyBA,OAAoBA,MAAyB+nS,MACjOE,GAAoCvgS,UAAqB1H,MAAyB,CAAE37T,KAAM4jmB,GAAqC7nmB,UAAW,CAAC,CAAC,GAAI,kCAAmC,KAAM2yX,SAAU,CAAC,mCAAoCrqW,SAAU,CAACs3S,MAA0B,CAAC+nS,QAC9QE,GAAsCl9jB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAAY28lB,MAC7FE,IAd6CA,IAAT,GAuDvC,IAAIE,GACJ,MAAMC,GAAe,cACfC,GAAuB,CAAE//lB,WAAY,OAAQC,SAAU,UACvD+/lB,GAAsB,CAAEhgmB,WAAY,OAAQC,SAAU,OACtDggmB,GAAoB,CAAEjgmB,WAAY,MAAOC,SAAU,QACnDk2C,GAAiBj5C,IAAKA,GAAEi5C,iBACxB+pjB,GAAO97N,GAWb,IAAIz6D,GAAuBk2R,GAAyB,cAAmC3C,GACnFnpmB,YAAYsmK,GAAcuyJ,GAASrxQ,GAAQ49G,IACvC1lJ,QACAxf,KAAKomK,aAAeA,GACpBpmK,KAAK24T,QAAUA,GACf34T,KAAKsnD,OAASA,GACdtnD,KAAKklK,SAAWA,GAKhBllK,KAAKksmB,OAASL,GAId7rmB,KAAKmsmB,eAAgB,EAKrBnsmB,KAAKgM,UAAW,EAIhBhM,KAAK+vC,UAAY,IAAInrC,MAIrB5E,KAAKild,WAAa,IAAIrgd,MAItB5E,KAAKstC,OAAS,IAAI1oC,MAIlB5E,KAAK+nB,KAAO,IAAInjB,MAIhB5E,KAAKgrB,MAAQ,IAAIpmB,MACjB5E,KAAK24T,QAAQ4hS,MAAQv6lB,KACrBA,KAAKosmB,oBAAsBpsmB,KAAKosmB,oBAAoBvmlB,KAAK7lB,MAK7D69D,OACI79D,KAAKqsmB,cAMT7+lB,KAAK9E,IACD,IAAKA,GACD,OAEJ,MAAM4jmB,GAAa5jmB,GACnB1I,KAAKqsmB,cACDzB,GAAQ0B,GAAWl9hB,OAASw7hB,GAAQ0B,GAAWn+e,KAC/CnuH,KAAKu/X,YAAY,CAAEntW,OAAQk6kB,MAG3BtsmB,KAAK2hb,cAAgB2qL,GAAWp+lB,eAAiBo+lB,GACjDtsmB,KAAKu/X,YAAY,CAAEtxX,OAAQjO,KAAK2hb,iBAGxC56a,YAAYC,KACJA,GAAQ0B,QAAU1B,GAAQklmB,SAC1BlsmB,KAAKusmB,kBAGblnmB,WACIrF,KAAKsnD,OAAO4yR,kBAAkB,KAC1B,MAAM3R,GAAyBvoU,KAAKklK,SAASrpD,OAAO,WAAY,YAAc5yG,KACtEjJ,KAAK8vC,WAAauQ,GAAQp3C,GAAEP,OAAQ0c,IAAQA,KAASplB,KAAK8vC,SAASovV,eAAiBl/X,KAAK24T,QAAQgwS,UAAU1/lB,KAC3GjJ,KAAK0kb,WAAWz7a,MAGlBujmB,GAAwBxsmB,KAAKklK,SAASrpD,OAAO,SAAU,OAAS5yG,KAC9DjJ,KAAK8vC,UACL9vC,KAAK0kb,WAAWz7a,MAGxBjJ,KAAKu8X,kBAAoB,KACrBh0D,KACAikS,QAIZ7lmB,cACQ3G,KAAKu8X,oBACLv8X,KAAKu8X,oBACLv8X,KAAKu8X,kBAAoB,MAE7Bv8X,KAAKysmB,oBACLzsmB,KAAKqsmB,cAKT3D,cAAc1jmB,GAAMi1B,IAChBA,GAAKvxB,OAAS1I,KAAK2hb,cACnB1nZ,GAAK6+T,OAAS94V,KACdA,KAAKgF,IAAM6C,KAAKoyB,IACH,WAATj1B,KAAsBi1B,GAAKm0jB,YAC3BpulB,KAAK0smB,cAAczykB,GAAKo7F,eAGhCk3e,kBACIvsmB,KAAKysmB,oBACLzsmB,KAAKsnD,OAAO4yR,kBAAkB,KAC1B,MAAMxlU,GAAU1U,KAAKw1P,gBACrB,IAAK9gP,GACD,OAEJ,MAAM0uV,GAAYpjW,KAAKksmB,QAAUL,GACjC7rmB,KAAK2smB,iBAAmB3smB,KAAKklK,SAASrpD,OAAOnnG,GAAS1U,KAAKksmB,QAAUL,GAAe5imB,KAChFjJ,KAAK4smB,gBAAgB3jmB,GAAGyL,MAExB0uV,KAAcyoQ,KACd7rmB,KAAKipiB,oBAAsBjpiB,KAAKklK,SAASrpD,OAAOnnG,GAAS,UAAYzL,KAC7DA,GAAE0na,UAAY1na,GAAEksX,UAAYpxP,UAC5B/jI,KAAK4smB,gBAAgB3jmB,GAAGyL,SAM5Ck4lB,gBAAgB3jmB,GAAGyL,IACf,MAAM3H,GAAS/M,KAAK6smB,eACpB,IAAIlrL,GAAgBjta,GACpB,GAAI3H,GAAQ,CAER,GADA40a,GAxzDY,EAACjta,GAAS8kR,GAAU/7H,MACxC,MAAMv4J,GAAKu4J,GAAU31G,aAAa,MAC7B5iD,IACDu4J,GAAU5jD,aAAa,KAAMuuf,IAEjC,MAAM0E,GAAmB,IAAG5nmB,IAAMkjmB,MAAc5uU,KAC1Cj4Q,GAAQ4rZ,GAAez4Z,GAAS0Q,IA3F1B,EAAC1Q,GAAS8kR,MAAc9kR,GAAQwjG,SAAWxjG,GAAQonc,mBAAmBlob,KAAKlf,GAAS8kR,IA2FlDthL,CAAQ9yF,GAAM0nlB,IAAkBrvc,IAC9E,OAAKv4J,IACDu4J,GAAUqJ,gBAAgB,MAEvBvlJ,IA8yDiBwrlB,CAAgB9jmB,GAAEP,OAAQqE,GAAQ2H,IAC9Cita,IAAiBA,KAAkB14a,GAAEP,QAAU83b,GAAYv3b,GAAEP,QAC7D,OAEAi5a,IAAiB3hb,KAAKgtmB,kBACtBrrL,GAAgB3hb,KAAK0I,OAAOijmB,cAAcplmB,KAAKo7a,KAGlDA,GAIL3hb,KAAKsnD,OAAOgB,IAAI,KACPtoD,KAAK0kb,WAAWz7a,MACjBjJ,KAAK2hb,cAAgBA,GACrB3hb,KAAK4gY,UAAU33X,OANnBjJ,KAAK0kb,WAAWz7a,IAUxBwjmB,oBACQzsmB,KAAK2smB,mBACL3smB,KAAK2smB,mBACL3smB,KAAK2smB,iBAAmB,MAExB3smB,KAAKipiB,sBACLjpiB,KAAKipiB,sBACLjpiB,KAAKipiB,oBAAsB,MAGnCzzS,gBACI,KAAKkgI,UACD,OAEJ11X,KAAKgtmB,iBAAkB,EACvB,IAAItkmB,GAAS1I,KAAK0I,OAClB,MAAsB,iBAAXA,GACPA,GAASiZ,SAAS46B,cAAc7zC,IAE/Bu7C,IAAcv7C,GAAOwF,cACtBxF,GAASA,GAAOwF,cAEXxF,cAAkBgjmB,KACvBhjmB,GAASA,GAAOgM,QAChB1U,KAAKgtmB,iBAAkB,GAEpBtkmB,GAEXmkmB,eACI,OAAI7smB,KAAKgtmB,gBACG,wBAELhtmB,KAAK+M,OAEhB23a,WAAWz7a,IACP,GAAKjJ,KAAK8vC,SAGV,OAAO9vC,KAAKitmB,YAAY,aAAchkmB,GAAG,KACrCjJ,KAAKqsmB,gBAGbA,cACQrsmB,KAAK8vC,WACL9vC,KAAK8vC,SAAS9kB,QACdhrB,KAAK8vC,SAAW,KAChB9vC,KAAK2hb,cAAgB,MAErB3hb,KAAKgsb,qBACLhsb,KAAKgsb,qBACLhsb,KAAKgsb,mBAAqB,MAGlCprD,UAAU33X,IACNjJ,KAAKitmB,YAAY,YAAahkmB,GAAG,KAE7B,IAAIgF,GAAQmkB,GADZnpB,GAAEi5C,iBAEEliD,KAAKmsmB,eAA4B,YAAXljmB,GAAEnB,KACxBmG,GAASjO,KAAKktmB,qBAGd96kB,GAAS,CAAEg9C,KAAMnmE,GAAEupY,MAAOrkR,IAAKllH,GAAEwpY,OAErCzyY,KAAKu/X,YAAY,CAAEtxX,UAAQmkB,cAGnCmtW,YAAYxgX,IACR/e,KAAK8vC,SAAW9vC,KAAKomK,aAAar+I,KAAKliB,OAAOw0D,OAAO,CACjD7vD,SAASogmB,GAAQ5qmB,KAAKmtmB,eAAgBntmB,KAAKmtmB,aAC3CvkS,SAAU5oU,KAAK4oU,SACf+mE,UAAW3vY,KAAK2vY,WAAaq8N,GAC7B/sO,WAAYj/X,KAAKi/X,YAAc8sO,GAC/B5sO,YAAan/X,KAAKm/X,aAAe2sO,GACjCltlB,QAAS5e,KAAKysb,gBAAkBzsb,KAAKysb,gBAAgB5lH,YAAc7mU,KAAKotmB,uBACxEhwiB,WAAY,gBACbr+C,KACH,MAAMrK,GAAU1U,KAAK8vC,SAASovV,aAC9Bl/X,KAAKklK,SAAS0gK,SAASlxT,GAAS,wBAChC1U,KAAKklK,SAASrrD,aAAanlG,GAAS,WAAY,MAChD1U,KAAKklK,SAAS5oB,SAAS5nI,GAAS,UAAW,KACvC1U,KAAKu+X,WACLv+X,KAAKklK,SAASrrD,aAAanlG,GAAS,aAAc1U,KAAKu+X,WAE3Dv+X,KAAKqtmB,aAAertmB,KAAKktmB,uBAAyBvrlB,SAASqiR,cAC3DhkS,KAAKsnD,OAAO4yR,kBAAkB,KAC1B,MAAMozR,GAAgBttmB,KAAKklK,SAASrpD,OAAOnnG,GAAS,UAAW1U,KAAKosmB,qBAC9DmB,GAAoBvtmB,KAAKklK,SAASrpD,OAAOnnG,GAAS,cAAewtC,IACvEliD,KAAKgsb,mBAAqB,KACtBshL,KACAC,QAGR74lB,GAAQ24T,QAEZq/R,cAAczjmB,IACV,MAAM04a,GAAgB3hb,KAAKktmB,sBACtBltmB,KAAK0kb,WAAWz7a,KAAMjJ,KAAKqtmB,cAC5B1rL,GAAct0G,QAGtB++R,oBAAoBnjmB,IAChB,MAAMyL,GAAU1U,KAAK8vC,SAASovV,aAC1Bj2X,GAAEksX,UAAYpxP,cAAgBqhb,GAASn8iB,GAAEP,OAAQ,gBAAkBO,GAAEP,SAAWgM,GAG3EzL,GAAEP,SAAWgM,IAClB1U,KAAK24T,QAAQg/D,QAAQ9vX,KAAKoB,IAH1BjJ,KAAK0smB,cAAczjmB,IAM3BgkmB,YAAYjomB,GAAMqwH,GAAexlH,IAC7B,MAAM6mK,GAAU12K,KAAKgF,IACrB,IAAI6xX,IAAY,EAChB,SAAIhB,MAAan/M,IACb12K,KAAKsnD,OAAOgB,IAAI,KACZ,MAAMruB,GAAO,IAAIuzkB,GAAsB,CACnCn4e,cAAeA,GACfyjO,OAAQ94V,KACR0I,OAAQ1I,KAAK2hb,gBAEjBjrQ,GAAQ7uK,KAAKoyB,IACRA,GAAK68V,sBACNjnX,KAEJgnX,GAAY58V,GAAK68V,uBAIrBjnX,KAEGgnX,GAEPq2O,2BACA,OAAOltmB,KAAKgtmB,iBAAmBhtmB,KAAK2hb,cAAgB3hb,KAAK2hb,cAAcjta,QAAU1U,KAAK2hb,gBAG9FjsG,GAAqBtP,UAAO,SAAsCh4R,IAAK,OAAO,IAAKA,IAAKsnS,IAAsBjS,MAAyBkE,MAAsBlE,MAAyBglS,IAAqBhlS,MAAyBA,OAAgBA,MAAyBA,SAC7QiS,GAAqBnP,UAAqB9C,MAAyB,CAAE37T,KAAM4tU,GAAsB7xU,UAAW,CAAC,CAAC,sBAAuB20X,eAAgB,SAA6Ch1D,GAAI/3T,GAAKgtX,IAErM,GAF0N,EAALj1D,IACnNC,MAAsBg1D,GAAU6yO,GAA8B,GACvD,EAAL9nS,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIghb,gBAAkB/hU,GAAGxjH,SAC7Es/T,UAAW,SAAoChD,GAAI/3T,IAEtD,GAFsE,EAAL+3T,IAC/DC,KAAmBuuD,GAAK,GACjB,EAALxuD,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI2hmB,uBAAyB1if,GAAGxjH,SACpF0/T,OAAQ,CAAEslS,OAAQ,SAAUC,cAAe,gBAAiBngmB,SAAU,WAAYtD,OAAQ,SAAUqE,OAAQ,SAAUogmB,aAAc,eAAgBluO,WAAY,aAAcE,YAAa,cAAewQ,UAAW,YAAa/mE,SAAU,WAAY21D,UAAW,aAAehI,QAAS,CAAExmV,UAAW,YAAak1a,WAAY,aAAc33a,OAAQ,SAAUvlB,KAAM,OAAQiD,MAAO,SAAWwrW,SAAU,CAAC,oBAAqBrqW,SAAU,CAACs3S,MAA0B,CACncglS,GACA3hS,KACA,CACIjuR,QAASkuR,KACTC,SAAU,qBAEd,CACInuR,QAASusjB,GACT18iB,SAAU6ijB,IAEd,CACI1yjB,QAASowjB,GACTnwjB,aAAa/nC,SAAW,IAAM66lB,KAElC3rO,KACA,CACIpnV,QAASk4V,KACTtlB,WAAYwgP,MAEhBxoS,MAAmCA,OAA8B51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,UAAW,IAAK,CAAC,EAAG,QAAS,WAAY,cAAe,aAAc,UAAW,mBAAoB,yBAA0Bh1Q,SAAU,SAAuCsxQ,GAAI/3T,IAAgB,EAAL+3T,IACjSC,MAAkB,EAAGgqS,GAA6C,EAAG,EAAG,cAAe,KAAM,EAAGhqS,QAC/FgE,WAAY,CAAC0hS,IAAgBvhS,cAAe,IACrDp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B0iT,GAAqBr1T,UAAW,cAAU,GAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3B6vU,GAAqBr1T,UAAW,cAAU,GAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B0iT,GAAqBr1T,UAAW,cAAU,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B0N,GAAqBr1T,UAAW,qBAAiB,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B0N,GAAqBr1T,UAAW,gBAAY,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B6vU,GAAqBr1T,UAAW,oBAAgB,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B6vU,GAAqBr1T,UAAW,kBAAc,GACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B6vU,GAAqBr1T,UAAW,mBAAe,GAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3B6vU,GAAqBr1T,UAAW,iBAAa,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAerB,QAC3BiP,GAAqBr1T,UAAW,gBAAY,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B0iT,GAAqBr1T,UAAW,iBAAa,GAChDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8wU,GAAqBr1T,UAAW,iBAAa,GAChDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8wU,GAAqBr1T,UAAW,kBAAc,GACjDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B8wU,GAAqBr1T,UAAW,cAAU,GAC7CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8wU,GAAqBr1T,UAAW,YAAQ,GAC3CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8wU,GAAqBr1T,UAAW,aAAS,GAC5CmuB,EAAW,EACPwxV,SAAasrO,GAA8B,CAAEjqlB,QAAQ,IACrDymT,EAAW,cAAewjS,KAC3B51R,GAAqBr1T,UAAW,uBAAmB,GACtDmuB,EAAW,EACPq5R,SAAU,UAAW,CAAExmT,QAAQ,IAC/BymT,EAAW,cAAeC,QAC3B2N,GAAqBr1T,UAAW,8BAA0B,GAC7Dq1T,GAAuBk2R,GAAyBp9jB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACm4D,KACtFwoO,GACA18O,MACA5jD,SACLuN,IAwCH,IAAIhpQ,GAAiB,UAASA,GAAN,QAExBA,UAAkB05P,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKs+B,KAClFA,GAAkB2+P,UAAqB5H,MAAwB,CAAE37T,KAAM4kE,KACvEA,GAAkB4+P,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACmB,KAAalB,KAAcsqmB,IAAaA,MAJtF3+hB,IAAT,kCCx+Fd,wBACP,6FACA,uGACA,uBAA6C03H,MAAQA,qEACrD,oDAGO,kBACP,uBAAoC31J,cAG7B,kBACP,2MCjDA,MAAM80R,EAAM,CAAC,KACPU,GAAkB,CACpBj/T,KAAM,qCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAGtB,IAAIqwP,GAA0B,UAASA,GAAN,MAC7B30jB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3B4tP,UAA2BruP,UAAO,SAA4Ch4R,IAAK,OAAO,IAAKA,IAAKqmhB,IAA4BhxP,MAAyBA,MAAoB,KAC7KgxP,GAA2BtpP,UAAqB1H,MAAyB,CAAE37T,KAAM2sjB,GAA4B5wjB,UAAW,CAAC,CAAC,GAAI,mBAAoB,OAClJ4wjB,GAA6BjmhB,EAAW,CAAEq8R,EAAQ,KAAGE,UACjDjD,EAAW,oBAAqB,CAACC,SAClC0sP,IAToCA,IAAT,GAW9B,MAAMi5C,GAAS,CAAC,SAAU,OAAQ,QAAS,OAI3C,IAAIp5C,GAAwB,UAASA,GAAN,MAIvBv1iB,cACA,MAAMA,GAAU,GAChB,QAASorB,GAAM,EAAGA,GAAMujkB,GAAO3nmB,OAAQokC,KAAO,CAC1C,MAAM0gB,GAAQ6ijB,GAAOvjkB,IACfxmC,GAAQ3D,KAAK6qD,SACE,IAAVlnD,KACPob,GAAQ8rC,IAASlnD,IAGzB,OAAOob,KAGfu1iB,UAAyBluP,UAAO,SAA0Ch4R,IAAK,OAAO,IAAKA,IAAKkmhB,KAChGA,GAAyB/tP,UAAqB9C,MAAyB,CAAE37T,KAAMwsjB,GAA0BzwjB,UAAW,CAAC,CAAC,4BAA6B+iU,OAAQ,CAAEx3P,KAAM,OAAQ++C,IAAK,MAAO7+C,MAAO,QAASo6P,OAAQ,UAAY77H,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAA2CsxQ,GAAI/3T,MAAUm8T,cAAe,IAChUp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3ByujB,GAAyBj0iB,UAAW,YAAQ,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3ByujB,GAAyBj0iB,UAAW,WAAO,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3ByujB,GAAyBj0iB,UAAW,aAAS,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3ByujB,GAAyBj0iB,UAAW,cAAU,GAjCZi0iB,IAAT,GAgFxBuB,GAAkB,UAASA,GAAN,MACrB/1jB,YAAY4U,IACR1U,KAAK0U,QAAUA,GAKf1U,KAAKo3D,QAAU,yBAKfp3D,KAAKmzP,SAAW,gBAChBwxE,KAAgBV,IAEhB0pS,iBACA,MAAMl2C,GAAkBz3jB,KAAKy3jB,gBAC7B,IAAIlphB,GAASvuC,KAAKuuC,OAClB,OAAIkphB,KACAlphB,GAAS1oC,OAAOw0D,OAAO9rB,IAAU,GAAIkphB,GAAgB14iB,UAElDwvB,GAMXwX,OAAOotM,GAAWnzP,KAAKmzP,UACnBnzP,KAAKkmgB,KAAKlmgB,KAAK0U,QAAQxG,cAAeilP,IAO1ConE,SACI,OAAOv6T,KAAKg3jB,cAAch3jB,KAAK0U,QAAQxG,eAE3Cg4f,KAAKxxf,GAASy+O,IACVnzP,KAAKg3jB,cAActijB,IACdkmB,KAAK8N,IAAS1oC,KAAK4tmB,YAAYllkB,GAAO1oC,KAAK6tmB,eAC3CjzkB,KAAKkzkB,IAAW9tmB,KAAK+tmB,YAAYD,GAAS36W,GAAUnzP,KAAKgumB,gBAElEh3C,cAActijB,IACV,MAAMmd,GAAU7xB,KAAKiumB,YAAYv5lB,GAAS1U,KAAKq3jB,eACzCzpa,GAAU5tJ,KAAK4tJ,QAAQ/nI,KAAK7lB,MAClC6xB,UAAQ+I,KAAKgzH,GAASA,IACf/7H,GAEX+7H,UACQ5tJ,KAAKkumB,eACLlumB,KAAKkumB,aAAazoS,iBACXzlU,KAAKkumB,cAGpB72C,cACI,OAAIr3jB,KAAK03jB,wBACL13jB,KAAKkumB,aAnGQrnS,MACrB,MAAMzjQ,GAAU,GAChB,IAAIk+b,GAiGwCthgB,KAAK03jB,sBAAsB7wP,YAjGxC8yD,mBAAmBv2T,IAClD,MAAM7wD,GAAUO,KACZjN,OAAOw0D,OAAO+I,GAAStwD,IACvBwuf,GAAapsT,gBACb,MAAMi5Z,GAAexslB,SAAS+O,cAAc,QAC5C4we,UAAaC,UAAU36f,QAAS46f,KAC5B2sG,GAAatzjB,YAAY2md,GAASh6F,WAAU,MAEzC2mM,IAEX57lB,UAAOkzT,QAAU,KACb67L,GAAa77L,UACb67L,GAAe,MAEZ/uf,IAmFqB6uf,IAEjB,CACHgtG,WAAYpumB,KAAKoumB,WACjBC,eAAgBrumB,KAAKqumB,eACrBC,aAActumB,KAAKsumB,aACnB//jB,OAAQvuC,KAAK2tmB,WACbY,UAAWvumB,KAAKuumB,UAChBC,UAAWxumB,KAAKwumB,UAChBC,cAAezumB,KAAKyumB,cACpB/tgB,MAAO1gG,KAAK0gG,MACZxuC,SAAUlyD,KAAKkumB,cAGvBL,aACI,MAAO,CACHa,UAAW1umB,KAAK0umB,UAChBC,OAAQ3umB,KAAK2umB,OACbv3iB,QAASp3D,KAAKo3D,QACdl+C,KAAMlZ,KAAKkZ,KACX01lB,OAAQ5umB,KAAK67J,gBACbgzc,SAAU7umB,KAAK6umB,SACfL,UAAWxumB,KAAKwumB,UAChBjgkB,OAAQvuC,KAAK2tmB,WACbmB,WAAW,EACXP,UAAWvumB,KAAKuumB,UAChBQ,SAAU/umB,KAAK+umB,SACfxrlB,QAASvjB,KAAKujB,QACdqpC,MAAO5sD,KAAK4sD,OAGpBohjB,cACI,MAAO,CACHznG,WAAYvmgB,KAAKumgB,WACjByoG,UAAWhvmB,KAAKgvmB,UAChBC,YAAajvmB,KAAKivmB,YAClBzoG,SAAUxmgB,KAAKwmgB,UAGvBynG,YAAYv5lB,GAASqK,IACjB,OAAOmwlB,QAAQx6lB,GAASqK,IAE5B6ulB,YAAYllkB,GAAO3pB,IACf,OAAOowlB,QAAUzmkB,GAAO3pB,IAE5BgvlB,YAAYD,GAAS36W,GAAUp0O,KAC3BgnC,OAAO+njB,GAAS36W,GAAUp0O,MAGlC82iB,UAAmBzvP,UAAO,SAAoCh4R,IAAK,OAAO,IAAKA,IAAKynhB,IAAoBpyP,MAAyBA,SACjIoyP,GAAmBtvP,UAAqB9C,MAAyB,CAAE37T,KAAM+tjB,GAAoBhyjB,UAAW,CAAC,CAAC,qBAAsB20X,eAAgB,SAA2Ch1D,GAAI/3T,GAAKgtX,IAG9L,GAHmN,EAALj1D,KAC5MC,MAAsBg1D,GAAUg8L,GAA4B,GAC5DhxP,MAAsBg1D,GAAU67L,GAA0B,IACnD,EAAL9wP,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIisjB,sBAAwBhtc,GAAGxjH,OACpFu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIgsjB,gBAAkB/sc,GAAGxjH,SAC7E0/T,OAAQ,CAAExvQ,QAAS,UAAW+7L,SAAU,WAAYu7W,UAAW,YAAaC,OAAQ,SAAUP,WAAY,aAAcC,eAAgB,iBAAkBC,aAAc,eAAgBp1lB,KAAM,OAAQ2iJ,gBAAiB,kBAAmB0qW,WAAY,aAAcsoG,SAAU,WAAYL,UAAW,YAAajgkB,OAAQ,SAAUggkB,UAAW,YAAaE,cAAe,gBAAiB/tgB,MAAO,QAASsugB,UAAW,YAAaxoG,SAAU,WAAYyoG,YAAa,cAAeF,SAAU,WAAYxrlB,QAAS,UAAWqpC,MAAO,SAAW8rU,mBAAoBn1D,EAAK11H,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAAqCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC7nBC,QACAA,MAAsB,EAAG,OACzBA,MAAoB,GACpBA,UACCmE,cAAe,IACxBp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B6tP,GAAmBx1iB,UAAW,iBAAa,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,cAAU,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BgwjB,GAAmBx1iB,UAAW,kBAAc,GAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,sBAAkB,GACnDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,oBAAgB,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,eAAW,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe/uT,OAC3B88iB,GAAmBx1iB,UAAW,YAAQ,GACzCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3BungB,GAAmBx1iB,UAAW,uBAAmB,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,gBAAY,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B6tP,GAAmBx1iB,UAAW,kBAAc,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,gBAAY,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B6tP,GAAmBx1iB,UAAW,iBAAa,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BgwjB,GAAmBx1iB,UAAW,cAAU,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BgwjB,GAAmBx1iB,UAAW,iBAAa,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B6tP,GAAmBx1iB,UAAW,qBAAiB,GAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3BungB,GAAmBx1iB,UAAW,aAAS,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BgwjB,GAAmBx1iB,UAAW,iBAAa,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,gBAAY,GAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,mBAAe,GAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,gBAAY,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,eAAW,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B6iiB,GAAmBx1iB,UAAW,aAAS,GAC1CmuB,EAAW,EACPwxV,SAAay0L,GAA4B,CAAEpziB,QAAQ,IACnDymT,EAAW,cAAe2sP,KAC3BoB,GAAmBx1iB,UAAW,6BAAyB,GAC1DmuB,EAAW,EACPwxV,SAAas0L,GAA0B,CAAEjziB,QAAQ,IACjDymT,EAAW,cAAewsP,KAC3BuB,GAAmBx1iB,UAAW,uBAAmB,GACpDw1iB,GAAqBrnhB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,SAChEgnjB,IAzN4BA,IAAT,GAmOlBu5C,GAAe,UAASA,GAAN,QAEtBA,UAAgBhpS,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAKghkB,KAC9EA,GAAgB/jS,UAAqB5H,MAAwB,CAAE37T,KAAMsnmB,KACrEA,GAAgB9jS,UAAqB7H,MAAwB,IAJjC2rS,IAAT,kCCvSZ,wBACP,6FACA,uGACA,uBAA6C9wlB,MAAQA,qEACrD,oDAGO,kBACP,uBAAoCsE,cAG7B,kBACP,sQC1CA,MAAM2gT,GAAM,CAAC,aACb,YAA+CC,GAAI/3T,KACnD,MAAMwlX,GAAM,CAAC,KACPo+O,GAAa,CAACnxR,GAAMisH,KACjBjsH,IACM,CAAE3zU,OAAQ,EAAG6kE,KAAM+6X,GAAU/6X,KAAM++C,IAAKg8U,GAAUh8U,IAAKz3G,MAAO,GA8BvEooZ,GAAoB,IACG,oBAAX3pZ,OAKZm6lB,GAAkB,cAQlBC,GAAiB76lB,IAPOA,KAClB,GAAEA,GAAQvK,MAAM+mJ,WAAWx8I,GAAQvK,MAAMqlmB,YAAY96lB,GAAQvK,MAAMs2c,YAOpEgvJ,CAAqB/6lB,KALDA,MAC3B,MAAM+jH,GAAStjH,OAAO0vB,iBAAiBnwB,IACvC,MAAQ,GAAE+jH,GAAOy4B,WAAWz4B,GAAO+2e,YAAY/2e,GAAOgoV,aAGdivJ,CAAsBh7lB,IAuB5Di7lB,GAAiB,IAAO,GA6BxBC,GA5BN,YAAiBC,IACb,IAAIt9lB,GACAu9lB,IAAS,EACb,MAAO,IAAI71kB,MACH61kB,KAGJv9lB,GAASs9lB,MAAO51kB,IAChB61kB,IAAS,GACFv9lB,IAmBoBw9lB,CAhBxB,KACP,KAAKr6O,WAA2C,OAAlB/zW,SAASgF,KACnC,OAAO,EAEX,MACM01V,GAAS16V,SAAS+O,cAAc,OACtC2rV,GAAOlyW,MAAME,UAAY,6BACzBgyW,GAAOh/T,UAAa,uDACpB17B,SAASgF,KAAKk0B,YAAYwhU,IAC1B,MAAM2zP,GALM,KAKQ3zP,GAAO79S,SAAS,GAAG2qQ,wBAAwBh7M,IAC/DxsG,gBAASgF,KAAK+2B,YAAY2+T,IACnB2zP,KA2BLC,GAAY,CAAC/xR,GAAMx9O,KAChBw9O,IAAkB,IAAVx9O,GAGN,CACHn2F,OAAQ2zU,GAAK3zU,OAASm2F,GACtBtxB,KAAM8uQ,GAAK9uQ,KAAOsxB,GAClBytB,IAAK+vN,GAAK/vN,IAAMztB,GAChBhqF,MAAOwnU,GAAKxnU,MAAQgqF,IANbw9O,GAUT8/K,GAAS,CACX,YACA,cACA,eACA,aACA,cACA,eAKJ,IAAIkyG,GAAU,UAASA,GAAN,MACbC,UAAU9pkB,GAAS+pkB,IACf,MAAO,CACHhhiB,KAAM/oC,GAAQ+oC,KAAOghiB,GAAShhiB,KAC9B++C,IAAK9nF,GAAQ8nF,IAAMiif,GAASjif,KAGpCkif,UAAUnyR,GAAMuqH,IACZ,OAAO4nK,QAAUnyR,GAAMuqH,IAE3BtrY,MAAM9hD,IACF,SAAO8hD,MAAM9hD,IAEjBi1lB,eAAejpjB,IACX,OAAOipjB,QAAetwmB,KAAKkO,cAAcm5C,KAE7CkpjB,cAAclpjB,IACV,MAAMlyC,GAASnV,KAAK08hB,YACpB,IAAKvnhB,KAAWkyC,GACZ,MAAO,GAEX,MAAMmpjB,GAAiBr7lB,GAAO0vB,iBAAiB7kC,KAAKkO,cAAcm5C,KAClE,OAAO22c,GAAOr4f,IAAI0/I,KAAS,CAAExyI,IAAKwyI,GAAM1hJ,MAAO6smB,GAAenrd,OAElEq3Y,YACI,OAAO59H,KAAsB3pZ,OAAS,KAE1Cs7lB,gBAAgBppjB,IACZ,QAAKA,MAGIrnD,KAAKkO,cAAcm5C,IAAI4mE,aAEpC77F,OAAOi1B,IACH,OAAKA,IAGEj1B,QAAOpyB,KAAKkO,cAAcm5C,KAFtB,KAIfqpjB,cAAcrpjB,GAAIspjB,IACd,IAAKtpjB,GACD,OAAO,KAEX,MAAM3yC,GAAU1U,KAAKkO,cAAcm5C,KAC3B+nB,QAAM++C,OAAK7jH,eAAeoK,GAAQvK,MAC1CuK,GAAQvK,MAAMG,WAAa,OAC3BoK,GAAQvK,MAAMilE,KAAQ,GAAEuhiB,GAAgBvhiB,SACxC16D,GAAQvK,MAAMgkH,IAAO,GAAEwif,GAAgBxif,QACvC,MAAMyif,MAAgBx+kB,MAAO1d,IAC7BA,UAAQvK,MAAMilE,KAAOA,GACrB16D,GAAQvK,MAAMgkH,IAAMA,GAIpBz5G,GAAQvK,MAAMG,WAAaA,GACpBsmmB,GAEX1imB,cAAcm5C,IACV,OAAKA,GAGEA,GAAGn5C,eAAiBm5C,GAFhB,KAIfnd,SAASx1B,GAAStG,GAAOsyF,GAAQ,GAC7B,OAAKhsF,IAAYtG,IAGVs6b,QAAmB1oc,KAAKkO,cAAcwG,IAAU1U,KAAKkO,cAAcE,IAAQsyF,IAFvE,KAIfmwgB,aAAa3yR,GAAMuqH,IACf,OAAOooK,QAAa3yR,GAAMuqH,IAE9BqoK,eAAez1lB,IACX,SAAOy1lB,MAAez1lB,IAE1B4tZ,eAAe5hX,IACX,OAAO4hX,QAAejpa,KAAKkO,cAAcm5C,KAE7C0pjB,kBAAkB1pjB,IACd,MA3KmB3yC,MACvB,MAAMs8lB,GAAiB,GACvB,OAAKt7O,UAA0BopC,KAC3B,OAAOkyM,GAEX,IAAI30P,GAAS3nW,GAAQu7X,cACrB,KAAO5zB,KACCizP,GAAgB9zL,KAAK+zL,GAAclzP,MAAYA,GAAO2Y,aAAa,qBACnEg8O,GAAevrmB,KAAK42W,IAExBA,GAASA,GAAO4zB,cAEpB+gO,UAAevrmB,KAAK0P,QACb67lB,IA8JID,CAAkB/wmB,KAAKkO,cAAcm5C,KAEhD4pjB,sBAAsB5pjB,IAClB,MAAM6pjB,GAAyBlxmB,KAAKmxmB,0BAA0B9pjB,IAC9D,OAAK6pjB,IAGE9+kB,QAAO8+kB,IAFH,KAIfE,sBAAsB/pjB,IAClB,MAAM6pjB,GAAyBlxmB,KAAKmxmB,0BAA0B9pjB,IAC9D,OAAK6pjB,GAGE,CACHvnmB,EAAGunmB,GAAuBphO,WAC1Bh8U,EAAGo9iB,GAAuBnhO,WAJnB,CAAEpmY,EAAG,EAAGmqD,EAAG,GAO1Bq9iB,0BAA0B9pjB,IACtB,IAAKA,KAAOuojB,KACR,OAAO,KAEX,IAAIvzP,GAASr8W,KAAKkO,cAAcm5C,IAAI4oV,cACpC,KAAO5zB,IAAQ,CACX,GAAkD,SAA9ClnW,OAAO0vB,iBAAiBw3U,IAAQhyW,UAChC,OAAOgyW,GAEXA,GAASA,GAAO4zB,cAEpB,OAAO,KAEXohO,oBAAoBhqjB,IAChB,QAASrnD,KAAKmxmB,0BAA0B9pjB,IAE5C6gZ,eAAe7gZ,IACX,OAAO0hZ,QAAkB/oc,KAAKkO,cAAcm5C,KAEhD4pG,OAAOhjJ,GAAQwvJ,IACX,MA/JO,EAACxvJ,GAAQwvJ,MACpB,IAAKxvJ,QAAWynX,UAA0BopC,KACtC,OAAO,KAEX,MAAMyoM,IAAU+J,QAAiBrjmB,GAAQwvJ,IACzC,IAAK8pc,GACD,OAAO,KAEX,MAAMh1lB,GAAS,CAACtE,IAAQ0lC,UAAO8wd,MAAQx2f,GAAQs5lB,KAAUvtlB,OAAO,CAAC4J,GAAO6gD,MACpE,MAAM8siB,GAAc9siB,GAAEt6D,MAAM8mJ,QAAU97I,OAAO0vB,iBAAiB4/B,IAAGwsF,OAC3D5qH,GAAUziC,SAAS2tmB,GAAa,IACtC,OAAOlrkB,GAAUziB,GAAQyiB,GAAUziB,IACpC,GACH,OAAOrR,GAAUA,GAAS,EAAK,MAkJpB0+I,CAAOjxJ,KAAKkO,cAAcD,IAASjO,KAAKkO,cAAcuvJ,KAEjE+zc,YACI,SAAK97O,SAA0BopC,MAGxBn6X,YAAYhjB,SAASmjB,gBAAgB+0T,YAAc1kV,OAAOC,YAAY0pG,QAAQ,KAF1E,EAIf2yf,WACI,OAAOzxmB,KAAKwxmB,YAAc,IAGlCtB,UAAW9pS,UAAO,SAA4Bh4R,IAAK,OAAO,IAAKA,IAAK8hkB,KACpEA,GAAWtlS,WAAsBnH,MAA0B,CAAEp4S,MAAO6klB,GAAY53lB,QAAS,SAAU81B,IAAK,OAAO8hkB,GAAW9pS,UAAKh4R,OAnIxG8hkB,IAAT,GAoJd,MAAMwB,GAAQ,IAAI7nS,MAAe,wBAKjC,IAAI8nS,GAAY,UAASA,GAAN,MACf7xmB,YAAY8xmB,GAAMlxgB,GAAQ,GACtB1gG,KAAK4xmB,KAAOA,GACZ5xmB,KAAK0gG,MAAQA,GAEjBmxgB,aAAax2lB,IACT,MAAQpN,UAAQyG,WAASyqX,eAAa2yO,gBAAcvjkB,UAAQnc,OAAQ+3a,GAAWv6D,iBAAiBv0X,GAC1FqlF,GAAQ1gG,KAAK0gG,OAAS,EAEtBogY,GAD6B,UAChBixI,IAD4B/xmB,KAAK4xmB,KAAKnB,gBAAgB/7lB,IACa1U,KAAKgymB,aAAa/jmB,GAAQyG,GAASy1b,GAAWzpW,IAArG1gG,KAAKiymB,aAAahkmB,GAAQyG,GAASy1b,GAAWzpW,IACvEwxgB,GAAcjC,GAAUjwmB,KAAK4xmB,KAAKx/kB,OAAO1d,IAAUgsF,IAQzD,OAPe1gG,KAAK4xmB,KAAKz0iB,MAAM,CAC3BgiU,YAAaA,GACb2hG,WAAYA,GACZgxI,aAAcA,GACdI,YAAaA,GACb3jkB,YAIR0jkB,aAAahkmB,GAAQyG,GAASy1b,GAAWzpW,IACrC,MAAMyxgB,GAAYnymB,KAAKoymB,sBAAsBnkmB,GAAQyG,IAC/CwpU,GAAOmxR,GAAWrvmB,KAAK4xmB,KAAKx/kB,OAAOnkB,IAASk8b,IAC5CkoK,GAAa,EAAI3xgB,GACjB4xgB,GAActymB,KAAK4xmB,KAAKR,sBAAsB18lB,IACtC,IAAVgsF,IAAe4xgB,KACfA,GAAY3omB,GAAK0omB,GACjBC,GAAYx+iB,GAAKu+iB,IAErB,MAAME,GAAcvymB,KAAK4xmB,KAAKX,sBAAsBv8lB,IACpD,OAAc,IAAVgsF,IAAe6xgB,KACfA,GAAYnjiB,MAAQijiB,GACpBE,GAAYpkf,KAAOkkf,IAEhBrymB,KAAK4xmB,KAAKf,aAAa7wmB,KAAK4xmB,KAAKvB,UAlUnB,EAACnyR,GAAMs0R,KAC3BA,GAGU,CACXjomB,OAAQ2zU,GAAK3zU,OACb6kE,KAAM8uQ,GAAK9uQ,KAAOojiB,GAAepjiB,KACjC++C,IAAK+vN,GAAK/vN,IAAMqkf,GAAerkf,IAC/Bz3G,MAAOwnU,GAAKxnU,OANLwnU,GAgU2Cu0R,CAAqBxC,GAAU/xR,GAAMx9O,IAAQ6xgB,IAAcD,IAAcH,IAE/HC,sBAAsBnkmB,GAAQyG,IAC1B,OAAOzG,GAAS,CAAEtE,EAAG,EAAGmqD,EAAG,GAAM9zD,KAAK4xmB,KAAK3oM,eAAev0Z,IAE9Ds9lB,aAAa/jmB,GAAQyG,GAASy1b,GAAWzpW,IACrC,MAAMw9O,GAAOmxR,GAAWrvmB,KAAK4xmB,KAAK1nkB,SAASj8B,GAAQyG,GAASgsF,IAAQypW,IACpE,OAAO8lK,GAAU/xR,GAAMx9O,MAG/BixgB,UAAavrS,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAKujkB,IAAcluS,MAAgBysS,IAAazsS,MAAgBiuS,GAAO,KAC1IC,GAAa/mS,WAAsBnH,MAA0B,CAAEp4S,MAAOsmlB,GAAcr5lB,QAAS,SAAU81B,IAAK,OAAOujkB,GAAavrS,UAAKh4R,OACrIujkB,GAAenjkB,EAAW,CAAEq8R,EAAQ,GAAGC,SAAO4mS,KAAS7mS,EAAQ,KAAGE,UAC9DjD,EAAW,oBAAqB,CAACooS,GAAY5hjB,UAC9CqjjB,IAhDsBA,IAAT,GAqDZe,GAAe,UAASA,GAAN,MAClB5ymB,YAAY8xmB,GAAMlxgB,GAAQ,GACtB1gG,KAAK4xmB,KAAOA,GACZ5xmB,KAAK0gG,MAAQA,GAEjBiygB,gBAAgBt3lB,IACZ,MAAQpN,UAAQ0imB,mBAAiBj8lB,WAASyqX,eAAa2yO,gBAAcc,cAAYrkkB,WAAWlzB,GACtFgyN,GAAMrtO,KAAK4xmB,KACXlxgB,GAAQ1gG,KAAK0gG,OAAS,EACtB4rc,GAAgBj/T,GAAIqjY,cAAch8lB,GAASi8lB,IAC3CuB,GAAcjC,GAAU3jE,GAAe5rc,IACvCmygB,GAAe5C,GAAU5iY,GAAIj7M,OAAOnkB,IAASyyF,IAC7CogY,GAAauuI,GAAWwD,GAAclC,IACtCzkK,GAAW7wb,GAAS6wb,UAAY7+N,GAAI66N,eAAexzb,IACzDw3b,GAASx1b,MAAQw1b,GAASx1b,MAAQgqF,GAClCwrW,GAAS3hc,OAAS2hc,GAAS3hc,OAASm2F,GACpC,MAAMnuF,GAAS86N,GAAIyjY,eAAe,CAC9B3xO,eACA2hG,cACA8xI,cACAd,gBACAI,eACA3jkB,UACA29Z,cAEE/B,GAAY98N,GAAI8iY,UAAUQ,GAAiBp+lB,GAAO6f,QACxD,MAAO,CACHwrE,KAAMrrF,GAAOqrF,KACbk1gB,QAASvgmB,GAAOugmB,QAChB1glB,OAAQ+3a,MAIpBuoK,UAAgBtsS,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAKskkB,IAAiBjvS,MAAgBysS,IAAazsS,MAAgBiuS,GAAO,KACnJgB,GAAgB9nS,WAAsBnH,MAA0B,CAAEp4S,MAAOqnlB,GAAiBp6lB,QAAS,SAAU81B,IAAK,OAAOskkB,GAAgBtsS,UAAKh4R,OAC9IskkB,GAAkBlkkB,EAAW,CAAEq8R,EAAQ,GAAGC,SAAO4mS,KAAS7mS,EAAQ,KAAGE,UACjEjD,EAAW,oBAAqB,CAACooS,GAAY5hjB,UAC9CokjB,IArCyBA,IAAT,GA0CftoN,GAAa,UAASA,GAAN,MAChBtqZ,YAAY8xmB,GAAMroP,IACdvpX,KAAK4xmB,KAAOA,GACZ5xmB,KAAKupX,MAAQA,GAEjB7jX,UAAUmK,MACD6lX,WAGL11X,KAAKupX,MAAMrvC,kBAAkB,KACzBl6U,KAAKkhD,cAAeigL,OAAUnhO,KAAK4xmB,KAAKl1E,YAAa,UAChDlwhB,MAAKq5X,QAAU8pO,KACfjqmB,UAAU,IAAMmK,QAG7B/I,eACS9G,KAAKkhD,cAGVlhD,KAAKkhD,aAAap6C,cAEtBismB,iBACI,OAAO/ymB,KAAKkhD,cAAgBlhD,KAAKkhD,aAAa87O,SAGtDotH,UAAchkF,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAKg8W,IAAe3mF,MAAgBysS,IAAazsS,MAAgBA,SACtI2mF,GAAcx/E,WAAsBnH,MAA0B,CAAEp4S,MAAO++X,GAAe9xY,QAAS,SAAU81B,IAAK,OAAOg8W,GAAchkF,UAAKh4R,OACxIg8W,GAAgB57W,EAAW,CAAEs5R,EAAW,oBAAqB,CAACooS,GAAYnkP,SACvEq+B,IA5BuBA,IAAT,GAqCb4oN,GAAiB,UAASA,GAAN,MACpBlzmB,YAAY8xmB,GAAMroP,IACdvpX,KAAK4xmB,KAAOA,GACZ5xmB,KAAKupX,MAAQA,GAEjB0pP,WAAWv+lB,IACP,YAAK5N,cACL9G,KAAK0U,QAAUA,GACR1U,KAEX0F,UAAUmK,IACN,IAAKA,MAAa6lX,YAA0B11X,KAAK0U,QAC7C,OAEJ,MAAMxG,GAAgBlO,KAAK4xmB,KAAK1jmB,cAAclO,KAAK0U,SAC7Cw+lB,GAAalzmB,KAAK4xmB,KAAKb,kBAAkB/wmB,KAAK0U,SACpD1U,KAAKupX,MAAMrvC,kBAAkB,KACzB,MAAMshN,GAAc03E,GAAWvtmB,IAAI8+D,KAAK08J,OAAU18J,GAAG,UAAUj4D,MAAKq5X,QAAU8pO,MAU9E3vmB,KAAKkhD,cAAe3Q,UAASirf,IAAa91hB,UATtBuD,KAChB,MAAMP,GAASO,GAAEP,QACAwqmB,GAAWnmmB,OAAO03D,IAAKA,KAAM/7D,IAAQ3C,OAAS,GAC5C2C,KAAWiZ,UACbjZ,KAAWyM,SAExBtF,GAAS7P,KAAK4gc,UAAU1yb,GAAexF,SAMvD5B,eACS9G,KAAKkhD,cAGVlhD,KAAKkhD,aAAap6C,cAEtB85b,UAAU3kX,GAAMwhF,IACZ,MAAM01c,GAAWnzmB,KAAK4xmB,KAAKtB,eAAer0hB,IACpCm3hB,GAAgBpzmB,KAAK4xmB,KAAKtB,eAAe7yc,IAU/C,QApDe,EA2CO21c,GAAcjlf,IAAMglf,GAASzpS,QA3CpC,EA8COypS,GAAShlf,IAAMilf,GAAc1pS,QA9CpC,EAiDOypS,GAAS/jiB,KAAOgkiB,GAAc9jiB,OAjDrC,EAoDO8jiB,GAAchkiB,KAAO+jiB,GAAS7jiB,SAM5D0jiB,UAAkB5sS,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK4kkB,IAAmBvvS,MAAgBysS,IAAazsS,MAAgBA,SAClJuvS,GAAkBpoS,WAAsBnH,MAA0B,CAAEp4S,MAAO2nlB,GAAmB16lB,QAAS,SAAU81B,IAAK,OAAO4kkB,GAAkB5sS,UAAKh4R,OACpJ4kkB,GAAoBxkkB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACooS,GAAYnkP,SAC3EinP,IAzD2BA,IAAT,GA2DrB,MAAMK,GAAO,OACPC,GAAQ,QACRC,GAAO,OAIPC,GAAiB,CAEvBA,OAAyBvnmB,KACrB,MAAMy0F,GANC,OAMOz0F,IAAoBA,KAAcsnmB,GAAO,SAAW,SAGlE,IAAIlvkB,GACJ,OACIA,GADAp4B,KAAcsnmB,GACL,MAEJtnmB,KAAconmB,GACVC,GAERzpa,KAAkBypa,GACVD,GAGA,SAEN,CACHrmlB,MAAO,CAAE3iB,UAAY,GAAEq2F,QAAwB+ygB,gBAAiBpvkB,IAChEiG,IAAK,CAAEjgC,UAAY,GAAEq2F,WAG7B8ygB,MAAwBvnmB,KACpB,MAAMusC,GAAYvsC,KAAconmB,IAAQpnmB,KAAcqnmB,GAAQ,aAAe,aAG7E,MAAO,CACHtmlB,MAAO,CAAE3iB,UAAY,GAAEmuC,MAHbvsC,KAAcqnmB,IAASrnmB,KAAcsnmB,IAAO,IAAO,SAI7DjpkB,IAAK,CAAEjgC,UAAY,GAAEmuC,YAG7Bg7jB,KAAsB,KACX,CACHxmlB,MAAO,CAAE5iB,QAAS,GAClBkgC,IAAK,CAAElgC,QAAS,KAGxBopmB,KAAsB,KAGX,CACHxmlB,MAAO,CAAE3iB,UAAY,YACrBigC,IAAK,CAAEjgC,UAAY,eAM3B,IAAIqpmB,GAAgB,UAASA,GAAN,MACnB5zmB,YAAY6zmB,IACR3zmB,KAAK2zmB,iBAAmBA,GACxB3zmB,KAAKgtB,MAAQ,IAAIpoB,MACjB5E,KAAKsqC,IAAM,IAAI1lC,MAEnB8gU,KAAKhxT,GAASqK,GAAS6+E,IACnB,IAAK59F,KAAK49F,MAAQ59F,KAAK49F,KAAK7xF,aAAe6xF,GAAK7xF,YAC5C/L,KAAK49F,KAAK5xF,WAAa4xF,GAAK5xF,SAAU,CACtChM,KAAK49F,KAAOA,GACZ,MAAM91F,GAAOiX,GAAQjX,MA9DZ,QA+DH8rmB,GAAWJ,GAAe1rmB,IAChC,GAAI8rmB,GAAU,CACV,MACMt3U,GAASs3U,GADG5zmB,KAAK40X,aAAah3R,GAAM7+E,KAE1C/e,KAAK6zmB,WAAWn/lB,GAAS4nR,GAAQv9Q,eAE5BmuW,SACL,MAAM,IAAIz2W,MAAO,gCAA+B3O,+DAI5DnB,cACI3G,KAAK8zmB,aAETD,WAAWn/lB,GAAS4nR,GAAQv9Q,IACxB/e,KAAK8zmB,aACL,MAAM5nmB,GAAW6S,GAAQ7S,UA9ER,IA+EXoM,GAAUtY,KAAK2zmB,iBAAiBxzkB,MAAM,IACxCh2B,OAAMmyR,GAAOtvQ,QACbxiB,SAAS,GAAE0B,kBAAsB/B,OAAMmyR,GAAOhyP,QAE5Cu7R,GAAS7lU,KAAK6lU,OAASvtT,GAAQ0pD,OAAOttD,IAC5CmxT,GAAOznB,OAAO,KACVp+S,KAAKsqC,IAAIziC,OACT7H,KAAK8zmB,eAET9zmB,KAAKgtB,MAAMnlB,OACXg+T,GAAOH,OAEXkvD,aAAah3R,GAAM7+E,IACf,IAAI9S,GAAY8S,GAAQ9S,WAAasnmB,GACrC,OAAI31gB,GAAK7xF,aACDE,KAAconmB,GACdpnmB,GAAYqnmB,GAEPrnmB,KAAcqnmB,KACnBrnmB,GAAYonmB,KAGhBz1gB,GAAK5xF,WACDC,KAAcsnmB,GACdtnmB,GAzGL,YA2GUA,KACLA,GAAYsnmB,KAGbtnmB,GAEX6nmB,aACQ9zmB,KAAK6lU,SACL7lU,KAAK6lU,OAAOJ,UACZzlU,KAAK6lU,OAAS,QAI1B6tS,UAAiBttS,UAAO,SAAkCh4R,IAAK,OAAO,IAAKA,IAAKslkB,IAAkBjwS,MAAgB4C,SAClHqtS,GAAiB9oS,WAAsBnH,MAA0B,CAAEp4S,MAAOqolB,GAAkBp7lB,QAAS,SAAU81B,IAAK,OAAOslkB,GAAiBttS,UAAKh4R,OACjJslkB,GAAmBllkB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACM,SAC9DsrS,IAtE0BA,IAAT,GA2EpB,MAAMzvS,GAAkB,CACpBj/T,KAAM,gCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAGhB2vS,GAAiB,CAAE3kiB,MAAM,IAAQ++C,IAAK,GAsB5C,IAAI6lf,GAAc,UAASA,GAAN,MACjBl0mB,YAAY29J,GAAWw2c,GAAeC,GAAYC,GAAkBC,GAAgBC,GAAoBC,GAAkB5rP,GAAWa,IACjIvpX,KAAKy9J,UAAYA,GACjBz9J,KAAKi0mB,cAAgBA,GACrBj0mB,KAAKk0mB,WAAaA,GAClBl0mB,KAAKm0mB,iBAAmBA,GACxBn0mB,KAAKo0mB,eAAiBA,GACtBp0mB,KAAKq0mB,mBAAqBA,GAC1Br0mB,KAAKs0mB,iBAAmBA,GACxBt0mB,KAAK0oX,UAAYA,GACjB1oX,KAAKupX,MAAQA,GAKbvpX,KAAKwK,SAAU,EAKfxK,KAAKm/X,YAAc,CAAEpzX,WAAY,OAAQC,SAAU,UAKnDhM,KAAK2vY,UAAY,CAAE5jY,WAAY,MAAOC,SAAU,QAKhDhM,KAAKi/X,WAAa,CAAElzX,WAAY,OAAQC,SAAU,OAIlDhM,KAAKu0mB,kBAAmB,EAiGxBv0mB,KAAK4vY,aAAe,QAOpB5vY,KAAKoyB,OAAS2hlB,GAKd/zmB,KAAKw0mB,oBAAsB,IAAI5vmB,MAI/B5E,KAAKgrB,MAAQ,IAAIpmB,MAIjB5E,KAAK+nB,KAAO,IAAInjB,MAIhB5E,KAAKigmB,eAAiB,IAAIr7lB,MAC1B5E,KAAK02X,gBAAkBr4W,QAAQuJ,QAAQ,MACvC5nB,KAAKy0mB,cAAe,KACpB9vS,MAAgBV,IAChBjkU,KAAK0oX,UAAU9iD,SAASnoK,GAAUvvJ,cApLd,yBAqLpBlO,KAAK00mB,mBAETrvmB,WACIrF,KAAK20mB,WAAa30mB,KAAK20mB,WAAW9ulB,KAAK7lB,MACvCA,KAAKo0mB,eAAe1umB,UAAU1F,KAAK20mB,YACnC30mB,KAAK40mB,uBAAyB50mB,KAAKs0mB,iBAAiBtnlB,MAAMtnB,UAAU1F,KAAK60mB,iBAAiBhvlB,KAAK7lB,OAC/FA,KAAK40mB,uBAAuBpsjB,IAAIxoD,KAAKs0mB,iBAAiBhqkB,IAAI5kC,UAAU1F,KAAK2nD,eAAe9hC,KAAK7lB,QAC7FA,KAAKq0mB,mBAAmBpB,WAAWjzmB,KAAKiO,QAAUjO,KAAKy9J,WAAW/3J,UAAU1F,KAAKgpa,SAASnjZ,KAAK7lB,OAC/FA,KAAK4wmB,cAAgBmD,GACrB/zmB,KAAKgoJ,YACLhoJ,KAAK80mB,iBACL90mB,KAAK00mB,mBACL10mB,KAAK20mB,aAET5tmB,YAAYC,IACJA,GAAQutmB,kBACRv0mB,KAAK80mB,iBAEL9tmB,GAAQ4oY,cACR5vY,KAAK00mB,mBAGb7jkB,kBACS7wC,KAAKwK,SACNxK,KAAK02X,gBAAgB97V,KAAK,KACtB56B,KAAK2nD,mBAIjBytU,qBACQp1X,KAAKy0mB,aACLz0mB,KAAKy0mB,cAAe,EAGxBz0mB,KAAKupX,MAAMrvC,kBAAkB,KAIzBl6U,KAAK+0mB,wBACL/0mB,KAAKg1mB,wBAAyB5siB,OAAKpoE,KAAK02X,iBACnChxX,UAAU1F,KAAK20mB,cAG5BhumB,cACI3G,KAAKw0mB,oBAAoB//kB,WACzBz0B,KAAKigmB,eAAexrkB,WACpBz0B,KAAKgrB,MAAMnjB,OACX7H,KAAKgrB,MAAMyJ,WACXz0B,KAAKo0mB,eAAettmB,cACpB9G,KAAKq0mB,mBAAmBvtmB,cACxB9G,KAAK40mB,uBAAuB9tmB,cAC5B9G,KAAK+0mB,wBAKT5zjB,WACInhD,KAAK20mB,aAETE,mBACI70mB,KAAK0oX,UAAU5iD,YAAY9lU,KAAKy9J,UAAUvvJ,cAAe,+BAE7Dy5C,iBACI3nD,KAAK0oX,UAAU9iD,SAAS5lU,KAAKy9J,UAAUvvJ,cAAe,+BACtDlO,KAAK+nB,KAAKlgB,OACV7H,KAAK+nB,KAAK0M,WAEVm8kB,oBACA,OAAO5wmB,KAAKi1mB,eAEZrE,kBAAczmK,IACdnqc,KAAKk1mB,kBAAkB,OAAS,GAAE/qK,GAAU/6X,UAC5CpvE,KAAKk1mB,kBAAkB,MAAQ,GAAE/qK,GAAUh8U,SAC3CnuH,KAAKi1mB,eAAiB9qK,GAE1BniT,YACQhoJ,KAAKiO,QACLjO,KAAKk1mB,kBAAkB,UAAWlilB,OAAOhzB,KAAKk0mB,WAAWjjd,OAAOjxJ,KAAKiO,OAAQjO,KAAKy9J,aAG1Fk3c,aACI,KAAKj/O,UACD,OAEJ,MAAQ93R,QAAMxrE,OAAQ+3a,IAAcnqc,KAAKkqC,aACpClqC,KAAK4wmB,eAv2BQ,EAACuE,GAAWC,MAClC,MAAQhmiB,KAAMimiB,GAASlnf,IAAKmnf,IAAWH,IAC/B/liB,KAAMu4X,GAASx5U,IAAKu5U,IAAW0tK,GACvC,OAAOlomB,KAAKiN,IAAIk7lB,GAAU1tK,KAAY,GAAKz6b,KAAKiN,IAAIm7lB,GAAS5tK,KAAW,GAo2BzC6tK,CAAkBv1mB,KAAK4wmB,cAAezmK,OAC7Dnqc,KAAK4wmB,cAAgBzmK,IACjBt0E,QAAa71X,KAAKigmB,iBAClBjgmB,KAAKupX,MAAMjhU,IAAI,IAAMtoD,KAAKigmB,eAAep4lB,KAAK,CAAEuqB,OAAQ+3a,GAAWvsW,YAGvE59F,KAAKwK,SACLxK,KAAKs0mB,iBAAiB5uS,KAAK1lU,KAAKw1mB,iBAAiBtnmB,cAAelO,KAAKwK,QAASozF,IAElF59F,KAAKy1mB,aAAa/rN,aAEtBx/W,WACI,MAAMwrkB,GAAgB11mB,KAAKi0mB,cAAcpC,aAAa,CAClD5jmB,OAAQjO,KAAKiO,OACbkxX,YAAan/X,KAAKm/X,YAClBzqX,QAAS1U,KAAKy9J,UACdq0c,aAAc9xmB,KAAKi/X,WACnB1wV,OAAQvuC,KAAKuuC,OACbnc,OAAQpyB,KAAKoyB,OACbw9W,aAAc5vY,KAAK4vY,eAEvB,OAAO5vY,KAAKm0mB,iBAAiBxB,gBAAgB,CACzC1kmB,OAAQjO,KAAKiO,OACbkxX,YAAan/X,KAAKm/X,YAClByzO,WAAY5ymB,KAAK2vY,UACjBghO,gBAAiB+E,GACjBhhmB,QAAS1U,KAAKy9J,UACdq0c,aAAc9xmB,KAAKi/X,WACnB1wV,OAAQvuC,KAAKuuC,SAGrBy6X,SAAS2sM,IACL,MAAMC,IAAoB//O,QAAa71X,KAAKw0mB,qBACxCmB,KAAiBC,GACjB51mB,KAAK20mB,aAEAiB,IACL51mB,KAAKupX,MAAMjhU,IAAI,KACXtoD,KAAKw0mB,oBAAoB3smB,SAIrCitmB,kBACS90mB,KAAKiO,SAAWjO,KAAKu0mB,kBAG1Bv0mB,KAAKk0mB,WAAW3D,cAAcvwmB,KAAKiO,QAC9BrH,QAAQC,IAAK7G,KAAKk1mB,kBAAkBrumB,GAAEgM,IAAKhM,GAAElD,QAEtD+wmB,mBAEI10mB,KAAK0oX,UADgC,UAAtB1oX,KAAK4vY,aAA2B,WAAa,eACrC5vY,KAAKy9J,UAAUvvJ,cA5TZ,+BA8T9BgnmB,kBAAkBlwmB,GAAMrB,IACpB3D,KAAK0oX,UAAUpsO,SAASt8I,KAAKy9J,UAAUvvJ,cAAelJ,GAAMrB,IAEhEoxmB,wBACQ/0mB,KAAKg1mB,wBACLh1mB,KAAKg1mB,uBAAuBlumB,gBAIxCktmB,UAAe5tS,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAK4lkB,IAAgBvwS,MAAyBA,OAAoBA,MAAyBkuS,IAAeluS,MAAyBysS,IAAazsS,MAAyBivS,IAAkBjvS,MAAyB2mF,IAAgB3mF,MAAyBuvS,IAAoBvvS,MAAyBiwS,IAAmBjwS,MAAyBA,OAAmBA,MAAyBA,SACzcuwS,GAAeztS,UAAqB9C,MAAyB,CAAE37T,KAAMksmB,GAAgBnwmB,UAAW,CAAC,CAAC,gBAAiB2iU,UAAW,SAA8BhD,GAAI/3T,IAG1J,GAH0K,EAAL+3T,KACnKC,KAAmBF,GAAK,GACxBE,KAAmBsnF,KAAuB,IACnC,EAALvnF,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+pmB,iBAAmB9qf,GAAGxjH,OAC/Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIgqmB,aAAe/qf,GAAGxjH,SAC1E0/T,OAAQ,CAAEp8T,QAAS,UAAW20X,YAAa,cAAewQ,UAAW,YAAa1Q,WAAY,aAAcs1O,iBAAkB,mBAAoB3kO,aAAc,eAAgBx9W,OAAQ,SAAUnkB,OAAQ,SAAUmvD,WAAY,aAAc7uB,OAAQ,UAAYgoV,QAAS,CAAEi+O,oBAAqB,sBAAuBxplB,MAAO,QAASjD,KAAM,OAAQk4kB,eAAgB,kBAAoBzpO,SAAU,CAAC,eAAgBrqW,SAAU,CAACs3S,MAA0B,CAACkuS,GAAc+B,GAAkBxD,GAAYwC,GAAiBtoN,GAAe4oN,KAAqBvvS,OAA8Bi1D,mBAAoBzH,GAAKpjL,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,UAAW,EAAG,WAAY,CAAC,YAAa,IAAK,CAAC,EAAG,mBAAoB,QAAS,CAAC,EAAG,YAAa,WAAYh1Q,SAAU,SAAiCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC1xBC,QACAA,MAAsB,EAAG,MAAO,EAAG,GACnCA,MAAoB,GACpBA,MAAkB,EAAGoyS,GAAuC,EAAG,EAAG,cAAe,GACjFpyS,MAAsB,EAAG,sBAAuB,GAChDA,MAAkB,SAAU,WAA2E,OAAOh4T,GAAI01C,aAClHsiR,QACAA,SACO,EAALD,KACFC,MAAkB,UAAWh4T,GAAI2xD,YACjCqmQ,MAAiB,GACjBA,MAAkB,mBAAoBh4T,GAAImT,QAA1C6kT,CAAmD,OAAQh4T,GAAImT,SAC/D6kT,MAAiB,GACjBA,MAAkB,YAAa,OAC9BgE,WAAY,CAACnB,MAAgBA,MAAyBA,MAAaqB,MAA+BC,cAAe,IAC1Hp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BmumB,GAAe3zlB,UAAW,eAAW,GACxCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAej5T,QAC3BmlmB,GAAe3zlB,UAAW,cAAU,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BmumB,GAAe3zlB,UAAW,mBAAe,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BmumB,GAAe3zlB,UAAW,iBAAa,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BmumB,GAAe3zlB,UAAW,kBAAc,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BgsS,GAAe3zlB,UAAW,wBAAoB,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BmumB,GAAe3zlB,UAAW,kBAAc,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BghlB,GAAe3zlB,UAAW,oBAAgB,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BmumB,GAAe3zlB,UAAW,cAAU,GACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BmumB,GAAe3zlB,UAAW,cAAU,GACvCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BovmB,GAAe3zlB,UAAW,2BAAuB,GACpDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BovmB,GAAe3zlB,UAAW,aAAS,GACtCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BovmB,GAAe3zlB,UAAW,YAAQ,GACrCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BovmB,GAAe3zlB,UAAW,sBAAkB,GAC/CmuB,EAAW,EACPq5R,SAAU,YAAa,CAAExmT,QAAQ,IACjCymT,EAAW,cAAej5T,QAC3BmlmB,GAAe3zlB,UAAW,wBAAoB,GACjDmuB,EAAW,EACPq5R,SAAUkjF,KAAuB,CAAE1pY,QAAQ,IAC3CymT,EAAW,cAAeijF,OAC3BipN,GAAe3zlB,UAAW,oBAAgB,GAC7C2zlB,GAAiBxlkB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MACvD8imB,GACAzB,GACAwC,GACAtoN,GACA4oN,GACAU,GACAvrS,MACA4jD,SACLioP,IApZwBA,IAAT,GAsZlB,MA4CMjjO,GAAkB,IAAIlnE,MAAe,mBAQ3C,IAAIo2D,GAAY,UAASA,GAAN,MACfngY,YAAY0qU,GAAgB9pI,GAA0BqpI,GAAUtsK,IAC5Dz9J,KAAKwqU,eAAiBA,GACtBxqU,KAAK0gM,yBAA2BA,GAChC1gM,KAAK+pU,SAAWA,GAChB/pU,KAAKy9J,UAAYA,GAOjBq4c,wBAEA,MAAMC,GAAiB/1mB,KAAKwqU,eAAeG,YAAc,GACzD,GAAIorS,GAAe,GACf,OAAOA,GAAe,GAE1B,MAAM,IAAIt/lB,MAAO,gQAUjBu/lB,4BACA,OAAOh2mB,KAAKy9J,UAAYz9J,KAAKy9J,UAAUvvJ,cAAgBlO,KAAKi2mB,qBAAqBj2mB,KAAK81mB,mBAyC1F/tlB,KAAKhJ,GAAU,IACX,MAAQmjH,aAAWT,UAAUzhI,KAAK+kc,YAAYhmb,GAAQH,SAChDs3lB,GAAoBl2mB,KAAKm2mB,YAAY10e,GAAO1iH,GAAQ6pT,UACpDwtS,GAAgBF,GAAkB90lB,SACxCphB,KAAKq2mB,uBAAuBH,GAAmBn3lB,IAC/Cm3lB,GAAkBrzX,kBAAkB3tC,gBAChChzE,IACAA,GAAU2gH,kBAAkB3tC,gBAEhC,MAAMgqL,GAAel/X,KAAKi2mB,qBAAqBC,IAC/C,MAAO,CACHlrlB,MAAO,KACCk3G,IACAA,GAAUujM,UAEdywS,GAAkBzwS,UAzIX/wT,MACfA,IAAWA,GAAQ+4I,YACnB/4I,GAAQ+4I,WAAW/vG,YAAYhpC,KAyIvB4hmB,CAAcp3O,KAElBtgX,QAASsjH,GACT9zH,MAAO8nmB,GACPz2O,yBAA0B22O,GAAc5B,oBACxCvvJ,WAAYmxJ,GAAcprlB,MAC1Bk0W,aAAcA,GACdnvV,UAAWqmkB,GAAcrulB,KACzBwulB,oBAAqBH,GAAcnW,gBAG3CkW,YAAY10e,GAAOg8B,IACf,MAAMy4c,GAAoBl2mB,KAAK+gM,gBAAgBiza,GAAgBvye,GAAOg8B,IACtE,OAAKA,IACDz9J,KAAKg2mB,sBAAsBn7jB,YAAY76C,KAAKi2mB,qBAAqBC,KAE9DA,GAQXD,qBAAqBnlP,IACjB,OAAOA,GAAa1sV,SAASl2B,cASjCsomB,oBAAoB99K,IAChB,OAAO14b,KAAK0gM,yBAAyBG,wBAAwB63P,IASjE33P,gBAAgB23P,GAAgBj3T,GAAOg8B,IACnC,MAAMnlJ,GAAUtY,KAAKw2mB,oBAAoB99K,IACzC,GAAIj7R,GACA,OAAOA,GAAUsjC,gBAAgBzoL,QAASnT,EAAWnF,KAAK+pU,SAAUtoM,IAEnE,CACD,MAAMS,GAAY5pH,GAAQ0pD,OAAOhiE,KAAK+pU,SAAUtoM,IAChD,YAAK+oM,eAAeJ,WAAWloM,GAAUmoM,UAClCnoM,IAUfm0e,uBAAuBn0e,GAAWnjH,IAC9BlZ,cAAOm1D,oBAAoBj8C,IACtBhS,OAAO2iD,IAAiB,YAATA,IAAsB3wC,GAAQH,mBAAmBmpT,OAChEpiU,IAAK+pD,KACNwyE,GAAU9gH,SAASsuC,IAAQ3wC,GAAQ2wC,MAEhCwyE,GAQX6iU,YAAYnmb,IACR,IAAKA,IAAWA,cAAmBmpT,MAC/B,MAAO,CAAE7lM,UAAW,KAAMT,MAAO,CAAC,KAEtC,MAAMS,GAAYliI,KAAK+gM,gBAAgBniL,IAEvC,MAAO,CACHsjH,UAAWA,GACXT,MAAO,CAHGS,GAAY,CAACA,GAAU99F,SAASl2B,eAAiB,OASvE+xX,UAAa75D,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAK6xV,IAAcx8D,MAAgBA,OAAwBA,MAAgBA,OAAkCA,MAAgBA,OAAkBA,MAAgBstE,GAAiB,KACnP9Q,GAAar1D,WAAsBnH,MAA0B,CAAEp4S,MAAO40W,GAAc3nX,QAAS,SAAU81B,IAAK,OAAO6xV,GAAa75D,UAAKh4R,OACrI6xV,GAAezxV,EAAW,CAAEq8R,EAAQ,KAAGC,OAAOimE,KAAmBlmE,EAAQ,GAAGE,YACxEjD,EAAW,oBAAqB,CAAC2C,MAC7Bd,MACAqB,MACAn8T,SACLoxX,IAxLsBA,IAAT,GA0NZh+X,GAAW,UAASA,GAAN,QAElBA,UAAYmkU,UAAO,SAA6Bh4R,IAAK,OAAO,IAAKA,IAAKnsC,KACtEA,GAAYopU,UAAqB5H,MAAwB,CAAE37T,KAAM7F,KACjEA,GAAYqpU,UAAqB7H,MAAwB,CAAE8H,UAAW,CAAC00D,IAAen/X,QAAS,CAAC,CAACC,MAAcqnZ,SAJvFnmZ,IAAT,kCCnxCR,wBACP,6FACA,uGACA,uBAA6CsnE,MAAQA,qEACrD,oDAOO,kBACP,uLC9CA,MAAMg6P,EAAM,CAAC,kBACP0tD,GAAM,CAAC,sBACb,YAA8CztD,GAAI/3T,IAIhD,GAJgE,EAAL+3T,KACzDC,MAAsB,EAAG,OAAQ,GACjCA,MAAc,GACdA,SACO,EAALD,GAAQ,CACV,MAAME,GAASD,QACfA,MAAiB,GACjBA,MAAyBC,GAAO+yS,sBAEpC,YAA8CjzS,GAAI/3T,IAIhD,GAJgE,EAAL+3T,KACzDC,MAAsB,EAAG,OAAQ,GACjCA,MAAc,GACdA,SACO,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAiB,GACjBA,MAAyB3/T,GAAO2ymB,sBAYpC,MAAMxyS,GAAkB,CACpBj/T,KAAM,sCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAwDhBsyS,GAAqB,CAACjkkB,GAAKjkC,GAAK7K,KAAUuJ,KAAKsB,IAAItB,KAAKulC,IAAI9uC,GAAO6K,IAAMikC,IAkBzEkkkB,GAAiB,CAAClkkB,GAAKjkC,GAAK7K,KAAUuJ,KAAKsB,KAAK7K,GAAQ8uC,KAAQjkC,GAAMikC,IA5D1D,MAgEZmkkB,GAA0B,CAAC5vmB,GAASc,GAAMnE,KAAUqD,GAAQc,UAAwC3C,IAA/B6B,GAAQc,IAAMN,aAA6BR,GAAQc,IAAMN,aAAe7D,OAiB7IkzmB,SAAN,SAII/2mB,YAAYmzX,IACRjzX,KAAKizX,aAAeA,GACpBjzX,KAAKs+X,eAAgB,EACrBt+X,KAAK82mB,cAAgB,cAKrB92mB,KAAKwO,IAAM,IAKXxO,KAAKyyC,IAAM,EAWXzyC,KAAK2D,MAAQ,EAMb3D,KAAK2oF,YAAc,aAOnB3oF,KAAKqI,UAAW,EAMhBrI,KAAK+uF,SAAU,EAKf/uF,KAAK+2mB,eAAgB,EACrB/2mB,KAAKu5f,aAAe,EACpBv5f,KAAK+nD,cAAgB,KACrB48Q,KAAgBV,IAChBjkU,KAAKuzX,+BAAiCN,GAAajsX,QAAQtB,UAAU,EAAGg/T,WACpE1kU,KAAKiM,UAAYy4T,GAAM,MAAQ,QAGnCntO,mBACA,MAA4B,eAArBv3F,KAAK2oF,YAEZquhB,iBACA,MAA4B,aAArBh3mB,KAAK2oF,YAEZyuS,oBACA,OAAOp3X,KAAKqI,SAEZ4umB,mBACA,OAAOj3mB,KAAK+uF,QAEZmohB,yBACA,OAAOl3mB,KAAK+2mB,cAEZI,mBACA,OAAOn3mB,KAAKiM,UAEZmrmB,uBACA,OAAOpklB,OAAOhzB,KAAKyyC,KAEnB4kkB,uBACA,OAAOrklB,OAAOhzB,KAAKwO,KAEnB8omB,yBACA,OAAOt3mB,KAAK+2mB,mBAAgB5xmB,EAAY6tB,OAAOhzB,KAAKu5f,cAKpDg+G,kBACA,OAAOv3mB,KAAK2D,QAAU3D,KAAKwO,IAK3BgpmB,kBACA,MAA4B,eAArBx3mB,KAAK2oF,YAAqD,IAAtB3oF,KAAKy3mB,eAAuB,IAKvEC,mBACA,MAA4B,aAArB13mB,KAAK2oF,YAAmD,IAAtB3oF,KAAKy3mB,eAAuB,IAKrEE,yBACA,MAA4B,eAArB33mB,KAAK2oF,YAA+B,IAAM3oF,KAAKy3mB,eAAiB,IAKvEG,0BACA,MAA4B,aAArB53mB,KAAK2oF,YAA6B,IAAM3oF,KAAKy3mB,eAAiB,IAErEA,qBACA,OAAOd,GAAe32mB,KAAKyyC,IAAKzyC,KAAKwO,IAAKxO,KAAKu5f,cAEnDxyf,YAAYC,IACR,MAAMyrC,GAAMmkkB,GAAwB5vmB,GAAS,MAAOhH,KAAKyyC,KACnDjkC,GAAMoomB,GAAwB5vmB,GAAS,MAAOhH,KAAKwO,KACnD7K,GAAQizmB,GAAwB5vmB,GAAS,QAAShH,KAAK2D,OAC7D,GAAIqD,GAAQyrC,KAAOzrC,GAAQwH,KAAOxH,GAAQrD,MAAO,CAI7C,IAHIqD,GAAQyrC,KAAOzrC,GAAQwH,MA5KjB,EAACikC,GAAKjkC,MACxB,GAAI0+W,OAAaz6U,GAAMjkC,GACnB,MAAM,IAAIiI,MA5Ca,kDAuNfohmB,CAAcplkB,GAAKjkC,IAEnBxH,GAAQrD,MAAO,EACF,MAATA,IAAiB2qD,OAAOn3C,MAAMxT,OAC9B3D,KAAK2D,MAAQ8uC,IAEjB,MAAMsV,GAAgB/nD,KAAKu5f,aAC3Bv5f,KAAKu5f,aAAem9G,GAAmB12mB,KAAKyyC,IAAKzyC,KAAKwO,IAAK7K,IAC3D3D,KAAK+nD,cAAgBA,GAEzB/nD,KAAKyyC,IAAMA,GACXzyC,KAAKwO,IAAMA,GACXxO,KAAKu5f,aAAem9G,GAAmB12mB,KAAKyyC,IAAKzyC,KAAKwO,IAAK7K,KAGnEgD,cACQ3G,KAAKuzX,gCACLvzX,KAAKuzX,+BAA+BzsX,eAIhD+vmB,UAAgBzwS,UAAO,SAAiCh4R,IAAKq1R,QAC7DozS,GAAgB1rS,UAAqB1H,MAAyB,CAAE37T,KAAM+umB,GAAiBnwS,SAAU,GAAIC,aAAc,SAAsCnD,GAAI/3T,IAAgB,EAAL+3T,KAChKC,MAAmB,OAAQh4T,GAAIqrmB,cAA/BrzS,CAA8C,MAAOh4T,GAAI0rmB,aAAzD1zS,CAAuE,gBAAiBh4T,GAAI2rmB,iBAA5F3zS,CAA8G,gBAAiBh4T,GAAI4rmB,iBAAnI5zS,CAAqJ,gBAAiBh4T,GAAI6rmB,oBAC1K7zS,MAAmB,WAAYh4T,GAAI6yX,cAAnC76D,CAAkD,gBAAiBh4T,GAAI6yX,cAAvE76D,CAAsF,2BAA4Bh4T,GAAI8rF,aAAtHksO,CAAoI,yBAA0Bh4T,GAAIurmB,WAAlKvzS,CAA8K,mBAAoBh4T,GAAI2rX,cAAtM3zD,CAAqN,wBAAyBh4T,GAAIwrmB,aAAlPxzS,CAAgQ,8BAA+Bh4T,GAAIyrmB,sBAClStwS,OAAQ,CAAEp4T,IAAK,MAAOikC,IAAK,MAAO9uC,MAAO,QAASglF,YAAa,cAAetgF,SAAU,WAAY0mF,QAAS,UAAWgohB,cAAe,iBAAmB5qlB,SAAU,CAACs3S,SAC9Kj1R,EAAW,EACPy5R,SAAY,mBACZA,SAAY,uBACZH,EAAW,cAAeE,UAC3B6uS,GAAgBx2lB,UAAW,qBAAiB,GAC/CmuB,EAAW,EACPy5R,SAAY,kCACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,eAAgB,MAC9CmuB,EAAW,IACPy5R,OAAY,gCACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,aAAc,MAC5CmuB,EAAW,IACPy5R,OAAY,0BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,gBAAiB,MAC/CmuB,EAAW,IACPy5R,OAAY,+BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,eAAgB,MAC9CmuB,EAAW,EACPy5R,SAAY,qCACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,qBAAsB,MACpDmuB,EAAW,EACPy5R,SAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,eAAgB,MAC9CmuB,EAAW,EACPy5R,SAAY,aACZH,EAAW,cAAe90S,SAC3B6jlB,GAAgBx2lB,UAAW,qBAAiB,GAC/CmuB,EAAW,EACPy5R,SAAY,sBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,mBAAoB,MAClDmuB,EAAW,IACPy5R,OAAY,sBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,mBAAoB,MAClDmuB,EAAW,IACPy5R,OAAY,sBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC+uS,GAAgBx2lB,UAAW,qBAAsB,MACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3BuojB,GAAgBx2lB,UAAW,WAAO,GACrCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3BuojB,GAAgBx2lB,UAAW,WAAO,GACrCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3BuojB,GAAgBx2lB,UAAW,aAAS,GACvCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B6jlB,GAAgBx2lB,UAAW,mBAAe,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B6uS,GAAgBx2lB,UAAW,gBAAY,GAC1CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B6uS,GAAgBx2lB,UAAW,eAAW,GACzCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B6uS,GAAgBx2lB,UAAW,qBAAiB,GAzOzCw2lB,OA4PFiB,GAAoB,UAASA,GAAN,cAAmCjB,GAI1D/2mB,YAAYmzX,GAAcrH,GAAM1mN,IAC5B1lJ,MAAMyzW,IACNjzX,KAAKizX,aAAeA,GACpBjzX,KAAK4rX,KAAOA,GACZ5rX,KAAKklK,SAAWA,GAMhBllK,KAAKoF,OAAQ,EAKbpF,KAAKmlU,WAAY,EAIjBnlU,KAAKykU,aAAe,IAAI7/T,MAKxBmzmB,gBACA,MAA0B,kBAAf/3mB,KAAKoF,MACLpF,KAAKoF,OAGRpF,KAAKoF,QAAUpF,KAAKoF,MAAMinC,eAAe,aACzCrsC,KAAKoF,MAAM6uU,SAAU,GAElBj0U,KAAKoF,MAAM6uU,SAMtB+jS,oBACA,MAA0B,kBAAfh4mB,KAAKoF,MACL,OAGHpF,KAAKoF,QAAUpF,KAAKoF,MAAMinC,eAAe,cACzCrsC,KAAKoF,MAAM8kC,SAAW,OAEnBlqC,KAAKoF,MAAM8kC,UAMtB+tkB,sBACA,MAA8B,UAAvBj4mB,KAAKg4mB,cAKZE,uBACA,MAA8B,WAAvBl4mB,KAAKg4mB,cAKZG,oBACA,MAA8B,QAAvBn4mB,KAAKg4mB,cAKZvB,0BACA,MA/YY,EAAC9ymB,GAAO8uC,GAAKjkC,GAAKpJ,MAClC,MAAMgzmB,GA2Ccz0mB,MACpB,MAAM00mB,GAAc10mB,GAAMoH,WAAWiM,MAAM,KAC3C,OAA8B,IAAvBqhmB,GAAYtymB,OAAgB,GAAEsymB,GAAY,KAAQ,GAAEA,GAAY,MAAMA,GAAY,GAAG51lB,OAAO,EA3DhF,MAcW61lB,CAAe30mB,IAC7C,GAAqB,kBAAVyB,GACP,IAA4B,iBAAjBA,GAAMgW,OAUZ,MAA4B,mBAAjBhW,GAAMgW,OACXhW,GAAMgW,OAAOzX,IAGby0mB,GAbP,OAAQhzmB,GAAMgW,YACL,QAGoD5M,QAErD,OAAO4pmB,GAJAA,IACN,UACD,MAAQ,GAAElrmB,KAAKC,MA6BP,EAACxJ,GAAO8uC,GAAKjkC,MACrC,MAAM+pmB,GAAarrmB,KAAKiN,KAAK3L,GAAMikC,IAAO,KAC1C,OAAOvlC,KAAKiN,KAAKxW,GAAQ8uC,IAAO8lkB,KA/BKC,CAAoB70mB,GAAO8uC,GAAKjkC,SAYrE,OAAO4pmB,IA2XI5oO,CAAYxvY,KAAKu5f,aAAcv5f,KAAKyyC,IAAKzyC,KAAKwO,IAAKxO,KAAKoF,OAKnE2B,YAAYC,IACRwY,MAAMzY,YAAYC,IACdhH,KAAKy4mB,uBAvVazxmB,MAC1B,MAAM0xmB,GAAqB1wS,QAAQhhU,GAAQm+T,WAE3C,OAAOuzS,MADcA,IAAsB1xmB,GAAQm+T,UAAU39T,eAqVvBmxmB,CAAqB3xmB,MACnDhH,KAAK44mB,wBAAyB,GA5VrB,EAAC5xmB,GAASm+T,GAAWp9Q,GAAewxc,KA8VvBv5f,KAAKmlU,WA9ViF,oBAA1Bw7M,uBAAyC35gB,GAAQrD,OA8V7F3D,KAAK+nD,gBAAe/nD,KAAKu5f,aAA/Ds/G,CAAa7xmB,MAAoEA,GAAQrD,MAAMsoC,aAC/FjsC,KAAKqoD,eAAeroD,KAAK+nD,eAMjCphD,cACQ3G,KAAK84mB,gBACLj4F,qBAAqB7ghB,KAAK84mB,gBAMlCzwjB,eAAeN,IACX/nD,KAAKy4mB,uBAAwB,EAC7B,MAAM/jmB,GAAU1U,KAAK+4mB,sBAAsB7qmB,cACrCwxiB,GAAiB1/iB,KAAKg5mB,6BAA6B9qmB,cACnD6nW,GAAmB/1W,KAAKi5mB,oBAAoBlxjB,IAClD/nD,KAAK4rX,KAAK1xC,kBAAkB,KACpBl6U,KAAK84mB,gBACLj4F,qBAAqB7ghB,KAAK84mB,gBAE9B,MAAMtumB,GAAU,KACZ,MAAMkhJ,IAAU,IAAI3yI,MAAOuB,UAAYy7V,GAAiBn9L,UAClD1uI,GAAWh9B,KAAKulC,IAAIi5G,GAAUqqN,GAAiB7pW,SAAU,GACzD8iD,GAAO+mT,GAAiBmjQ,UAAYnjQ,GAAiBojQ,UAAYjvkB,GAGvE,GADAlqC,KAAKo5mB,kBAAkB1kmB,GAASgriB,GAAgB3pM,GAAiBpxS,SAAU3V,GADtD,IAAMA,GAAQ,KAE/B9kB,GAAW,EAAG,CACd,GAAIlqC,KAAK44mB,uBAEL,YADA54mB,KAAKq5mB,cAAc3kmB,GAASgriB,GAAgB3pM,GAAiBpxS,UAGjE3kE,KAAK84mB,eAAiBn4F,sBAAsBn2gB,SAG5CxK,KAAKs5mB,cAAcvxjB,KAG3Bv9C,OAMJ+umB,wBACA,MAA8B,kBAAnBv5mB,KAAKmlU,UACL,KAGHnlU,KAAKmlU,YAAcnlU,KAAKmlU,UAAU94R,eAAe,cACjDrsC,KAAKmlU,UAAUj5T,SAAW,KAEvBlM,KAAKmlU,UAAUj5T,UAG9BotmB,cAAc31mB,OACNkyX,MAAa71X,KAAKykU,eAClBzkU,KAAK4rX,KAAKtjU,IAAI,KACVtoD,KAAKykU,aAAa58T,KAAK,CACnBugE,KAAMzkE,GACN8pI,GAAIztI,KAAKu5f,iBAIrBv5f,KAAK4rX,KAAKtjU,IAAI,KACVtoD,KAAKy4mB,uBAAwB,IAGrCQ,oBAAoBt1mB,IAChB,MAAM4zF,GAAoC,eAArBv3F,KAAK2oF,YACpB6whB,GAAgB7C,GAAe32mB,KAAKyyC,IAAKzyC,KAAKwO,IAAK7K,IACnD81mB,GAAsBlihB,GAA+B,IAAhBiihB,GAAsB,IAC3DE,GAAuBjxa,GAAsC,IAAN,IAAhB+wa,GACvC70iB,GAAW4yB,GAAe,QAAU,SACpCqhF,IAAY,IAAI7/J,MAAOuB,UAEvB6+lB,GAAY5hhB,GAAev3F,KAAKw3mB,YAAciC,GAAsBz5mB,KAAK03mB,aAAegC,GAE9F,MAAO,CACH/0iB,YACAi0G,aACAsgc,UANc3hhB,GAAekihB,GAAsBC,GAOnDP,aACAjtmB,SANalM,KAAKu5mB,kBAAoBrsmB,KAAKiN,IAAKg/lB,GAAY,MASpEC,kBAAkB1kmB,GAASgriB,GAAgB/6e,GAAU3V,GAAMkzgB,IACvDlikB,KAAKklK,SAAS5oB,SAAS5nI,GAASiwD,GAAU3V,GAAO,KACjDhvD,KAAKklK,SAAS5oB,SAASoja,GAAgB/6e,GAAUu9f,GAAc,KAEnEm3C,cAAc3kmB,GAASgriB,GAAgB/6e,IACnC,MAAM3V,GAAO2njB,GAAe32mB,KAAKyyC,IAAKzyC,KAAKwO,IAAKxO,KAAK2D,OAGrD3D,KAAKo5mB,kBAAkB1kmB,GAASgriB,GAAgB/6e,GAFzB,IAAP3V,GACO,IAAMA,IAE7BhvD,KAAK4rX,KAAKtjU,IAAI,KACVtoD,KAAK44mB,wBAAyB,EAC9B54mB,KAAKy4mB,uBAAwB,MAIzCX,UAAqB1xS,UAAO,SAAsCh4R,IAAK,OAAO,IAAKA,IAAK0pkB,IAAsBr0S,MAAyB4C,MAA6B5C,MAAyBA,OAAgBA,MAAyBA,SACtOq0S,GAAqBvxS,UAAqB9C,MAAyB,CAAE37T,KAAMgwmB,GAAsBj0mB,UAAW,CAAC,CAAC,sBAAuB2iU,UAAW,SAAoChD,GAAI/3T,IAGlL,GAHkM,EAAL+3T,KAC3LC,KAAmBF,EAAK,GACxBE,KAAmBwtD,GAAK,IACjB,EAALztD,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIstmB,sBAAwBruf,GAAGxjH,OACpFu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIutmB,6BAA+Btuf,GAAGxjH,SAC1F0/T,OAAQ,CAAExhU,MAAO,QAAS+/T,UAAW,YAAaw0S,iBAAkB,mBAAoBC,iBAAkB,mBAAoBC,cAAe,gBAAiBC,cAAe,iBAAmBvjP,QAAS,CAAE9xD,aAAc,gBAAkB+xD,SAAU,CAAC,oBAAqBrqW,SAAU,CAACs3S,MAA0B,CAC7SqD,KACA,CACIjuR,QAASkuR,KACTC,SAAU,uBAEdvD,MAAmCA,OAA8B51H,MAAO,EAAGo5H,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,yBAA0B,EAAG,UAAW,WAAY,CAAC,QAAS,oBAAqB,EAAG,QAAS,CAAC,EAAG,mBAAoB,EAAG,UAAW,WAAY,CAAC,iBAAkB,IAAK,CAAC,EAAG,0BAA2B,CAAC,qBAAsB,IAAK,CAAC,EAAG,sBAAuBh1Q,SAAU,SAAuCsxQ,GAAI/3T,IAAgB,EAAL+3T,KACraC,MAAsB,EAAG,OAAQ,GACjCA,MAAkB,EAAGs2S,GAAsC,EAAG,EAAG,OAAQ,GACzEt2S,QACAA,MAAsB,EAAG,MAAO,EAAG,GACnCA,MAAsB,EAAG,OAAQ,EAAG,GACpCA,MAAkB,EAAGu2S,GAAsC,EAAG,EAAG,OAAQ,GACzEv2S,QACAA,SACO,EAALD,KACFC,MAAmB,mBAAoBh4T,GAAIwsmB,gBAA3Cx0S,CAA4D,oBAAqBh4T,GAAIysmB,iBAArFz0S,CAAuG,iBAAkBh4T,GAAI0smB,eAC7H10S,MAAkB,UAAWh4T,GAAIoumB,cAAjCp2S,CAAgD,UAAWh4T,GAAIqumB,eAC/Dr2S,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIssmB,WAC9Bt0S,MAAiB,GACjBA,MAAmB,QAASh4T,GAAI+rmB,YAAa,IAA7C/zS,CAAkD,SAAUh4T,GAAIismB,aAAc,KAC9Ej0S,MAAmB,aAAch4T,GAAI8rmB,aACrC9zS,MAAkB,UAAWh4T,GAAIkumB,iBAAjCl2S,CAAmD,UAAWh4T,GAAImumB,kBAClEn2S,MAAiB,GACjBA,MAAmB,QAASh4T,GAAIksmB,mBAAoB,IAApDl0S,CAAyD,SAAUh4T,GAAImsmB,oBAAqB,KAC5Fn0S,MAAmB,mBAAoBh4T,GAAIwsmB,gBAA3Cx0S,CAA4D,oBAAqBh4T,GAAIysmB,iBAArFz0S,CAAuG,iBAAkBh4T,GAAI0smB,eAC7H10S,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIssmB,aAC7BtwS,WAAY,CAACnB,KAAgBA,KAAgBA,MAAcsB,cAAe,IACnFp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BiymB,GAAqBz3lB,UAAW,aAAS,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BiymB,GAAqBz3lB,UAAW,wBAAoB,GACvDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BiymB,GAAqBz3lB,UAAW,wBAAoB,GACvDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BiymB,GAAqBz3lB,UAAW,qBAAiB,GACpDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BiymB,GAAqBz3lB,UAAW,qBAAiB,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BiymB,GAAqBz3lB,UAAW,iBAAa,GAChDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkzmB,GAAqBz3lB,UAAW,oBAAgB,GACnDmuB,EAAW,EACPq5R,SAAU,iBAAkB,CAAExmT,QAAQ,IACtCymT,EAAW,cAAej5T,QAC3BipmB,GAAqBz3lB,UAAW,6BAAyB,GAC5DmuB,EAAW,EACPq5R,SAAU,qBAAsB,CAAExmT,QAAQ,IAC1CymT,EAAW,cAAej5T,QAC3BipmB,GAAqBz3lB,UAAW,oCAAgC,GACnEy3lB,GAAuBtpkB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,KAC7DilD,MACA5jD,SACL2vS,IA1Q8BA,IAAT,GAuXxB,MACMmC,GAAU,CAACl5mB,MAgCjB,IAAI4B,GAAiB,UAASA,GAAN,QAExBA,UAAkByjU,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKzrC,KAClFA,GAAkB0oU,UAAqB5H,MAAwB,CAAE37T,KAAMnF,KACvEA,GAAkB2oU,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAACm5mB,MAJ7Ct3mB,IAAT,kCCrvBd,wBACP,6FACA,uGACA,uBAA6CgmM,MAAQA,qEACrD,oDAOO,kBACP,kMC5CA,YAAyD66H,GAAI/3T,KAC7D,MAAM83T,GAAM,SAAU4tD,IAAM,MAAO,CAAEn+W,KAAMm+W,KAC3C,YAA2C3tD,GAAI/3T,IAI7C,GAJ6D,EAAL+3T,KACtDC,MAAsB,EAAG,KAAM,GAC/BA,MAAkB,EAAGy2S,GAAiD,EAAG,EAAG,cAAe,GAC3Fz2S,SACO,EAALD,GAAQ,CACV,MAAM22S,GAAU1umB,GAAI4lX,UACd+oP,GAAO3umB,GAAImY,MACX8/S,GAASD,QACfA,MAAkB,UAAWC,GAAO22S,qBAAqBD,KACzD32S,MAAmB,cAAwB,IAAT22S,IAClC32S,MAAiB,GACjBA,MAAkB,mBAAoBC,GAAO42S,gBAA7C72S,CAA8D,0BAA2BA,MAAuB,EAAGF,GAAK42S,MAE5H,YAAgD32S,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACnE,MAAMkvF,GAAMjvF,QACZA,MAAsB,EAAG,IAAK,GAC9BA,MAAkB,QAAS,WAAuEA,aAAqBivF,IAAqBjvF,MAAqB,GAAkB82S,mBACnL92S,MAAiB,EAAG,OAAQ,IAC5BA,SAEJ,YAAgDD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACnE,MAAMizI,GAAOhzI,QACbA,MAAsB,EAAG,IAAK,IAC9BA,MAAkB,QAAS,WAAuEA,aAAqBgzI,IAAuBhzI,MAAqB,GAAmB+2S,oBACtL/2S,MAAiB,EAAG,OAAQ,IAC5BA,SAEJ,YAAqED,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACxF,MAAMmuD,GAAOluD,QACbA,MAAsB,EAAG,yBAA0B,IACnDA,MAAkB,mBAAoB,SAAwH97T,IAAU87T,aAAqBkuD,IAAuD7iX,EAAhC20T,IAAqB,GAAmBxvQ,WAAWtsD,MACvQ87T,QACF,GAAS,EAALD,GAAQ,CACV,MAAMx/J,GAASy/J,MAAqB,GACpCA,MAAkB,OAAQz/J,GAAOlxJ,KAAjC2wT,CAAuC,cAAez/J,GAAOunQ,cAEjE,MAAMt6C,GAAM,SAAUE,IAAM,MAAO,CAAE5mX,OAAU4mX,KAC/C,YAA4C3tD,GAAI/3T,IAM9C,GAN8D,EAAL+3T,KACvDC,MAAsB,EAAG,MAAO,GAChCA,MAAkB,EAAGg3S,GAAwC,EAAG,EAAG,IAAK,GACxEh3S,MAAkB,EAAGi3S,GAAwC,EAAG,EAAG,IAAK,GACxEj3S,MAAkB,EAAGk3S,GAA6D,EAAG,EAAG,yBAA0B,GAClHl3S,SACO,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,UAAWA,MAAuB,EAAGwtD,GAAK9rV,GAAO56B,SACnEk5T,MAAiB,GACjBA,MAAkB,OAAQt+R,GAAOy1kB,QAAUz1kB,GAAO01kB,oBAClDp3S,MAAiB,GACjBA,MAAkB,OAAQt+R,GAAOy1kB,QAAUz1kB,GAAO21kB,qBAClDr3S,MAAiB,GACjBA,MAAkB,OAAQt+R,GAAO8je,WAErC,MAAM/3I,GAAM,SAAUC,IAAM,MAAO,CAAE9mX,UAAW8mX,KAChD,YAAgD3tD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACnE,MAAM0vF,GAAMzvF,QACZA,MAAsB,EAAG,KAAM,GAC/BA,MAAkB,QAAS,WAAuH,MAAMs3S,GAAjCt3S,MAAqByvF,IAA+BtvY,MAA8C,OAAxB6/S,QAAsCg3O,YAAYsgE,MACnPt3S,QACF,GAAS,EAALD,GAAQ,CACV,MAAMu3S,GAAOtvmB,GAAImY,MACX8/S,GAASD,QACfA,MAAkB,UAAWC,GAAOs3S,UAAUD,MAElD,IAAIE,GAAG,MACN,OAAUA,GAGRA,KAAQA,GAAM,KAFTA,GAAIC,KAAU,GAAK,OACvBD,GAAIA,GAAIE,MAAU,GAAM,OAHxBF,GACH,IAAUA,IADJ,GASP,MAAMh3S,GAAkB,CACpBj/T,KAAM,qCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAKhBnmP,GAEN,cACI,GAAsB,mBAAXuic,QAAyBA,OAAOvic,SACvC,OAAOuic,OAAOvic,SAElB,MAAMz6E,GAAOqC,OAAOm1D,oBAAoBrc,IAAIt+B,WACtCoggB,GAAQ9he,IAAIt+B,UAClB,QAAS1R,GAAI,EAAGA,GAAInL,GAAKuC,SAAU4I,GAAG,CAClC,MAAMkE,GAAMrP,GAAKmL,IACjB,GAAY,YAARkE,IAA6B,SAARA,IAAkB4tgB,GAAM5tgB,MAAS4tgB,GAAMjgd,QAC5D,OAAO3tD,IAXF6tgB,GAeX06F,GAAY,GAIlB,SACIt7mB,YAAY66C,GAAQ/2B,GAAOy3lB,GAASC,GAAW52S,IAC3C1kU,KAAK0kU,KAAM,EACX1kU,KAAK26C,OAASA,IAAkB,GAChC36C,KAAK4jB,MAAQA,IAAgB,EAC7B5jB,KAAKq7mB,QAAUA,GACfr7mB,KAAKs7mB,UAAYA,GACjBt7mB,KAAK0kU,IAAMA,GAEX5xT,WACA,IACIP,GADAxC,GAAY/P,KAAKyO,MAiBrB,OAdI8D,GADAvS,KAAKq7mB,QACI,CACLr7mB,KAAK26C,QAAQ36C,KAAK4jB,MAAQ,EAAI7T,IAAaA,IAC3C/P,KAAK26C,OAAO36C,KAAK4jB,MAAQ7T,IACzB/P,KAAK26C,QAAQ36C,KAAK4jB,MAAQ,EAAI7T,IAAaA,KAKtC+C,CADKsomB,MAAcp7mB,KAAK26C,OAAQygkB,IAC3BxsmB,MAAM5O,KAAK4jB,MAAO5jB,KAAK4jB,MAAQ,GAE1B,OAAnB5jB,KAAKs7mB,YAEL/omB,GADgBvS,KAAKs7mB,UAAYt7mB,KAAK4jB,MACnB,EAAI,GAAK5jB,KAAK26C,OAAO36C,KAAKs7mB,YAE1Ct7mB,KAAK0kU,IAAMnyT,GAAOw8E,UAAYx8E,GAErC9D,YACA,OAAOzO,KAAK26C,OAAO50C,OAEvBw1mB,cACI,OAAQv7mB,KAAKq7mB,SAAYr7mB,KAAK4jB,MAAQ5jB,KAAKyO,MAAQ,EAEvD+smB,cACI,OAAQx7mB,KAAKq7mB,SAAWr7mB,KAAK4jB,MAAQ,GAExCq6D,MACG,OAAOj+E,KAAK8S,KAAKmrE,OAMzB,SACIn+E,YAAY2uhB,IACRzuhB,KAAKyuhB,SAAWA,GAEhB1ohB,aAAW,OAAO/F,KAAKyuhB,WAAW37gB,KAAK/M,OACvC0I,YAAU,OAAOzO,KAAKyuhB,WAAWhghB,MACrCuE,KAAK4Q,IACD,OAAO5jB,KAAKyuhB,WAAW37gB,KAAK8Q,IAEhC23lB,cACI,OAAOv7mB,KAAKyuhB,WAAW8sF,cAE3BC,cACI,OAAOx7mB,KAAKyuhB,WAAW+sF,eAE1Bh7F,OAAOvic,YACJ,OAAOj+E,KAAKyuhB,WAAWjO,OAAOvic,aAyDtC,IAAIw9hB,GAAmB,UAASA,GAAN,MACtB37mB,YAAY4U,GAASuuK,GAAagwM,GAAc3rU,IAC5CtnD,KAAK0U,QAAUA,GACf1U,KAAKijL,YAAcA,GACnBjjL,KAAKizX,aAAeA,GACpBjzX,KAAKsnD,OAASA,GAIdtnD,KAAK8S,KAAO,GAMZ9S,KAAKq7mB,SAAU,EAKfr7mB,KAAK07mB,aAAe,OAKpB17mB,KAAKwK,SAAU,EAKfxK,KAAKipgB,UAAW,EAKhBjpgB,KAAK46mB,QAAS,EAId56mB,KAAK27mB,YAAc,IAAI/2mB,MAIvB5E,KAAKqqa,kBAAoB,IAAIzla,MAC7B5E,KAAK6pc,YAAc,mBACnB7pc,KAAK47mB,eAAiB,KACtB57mB,KAAK67mB,gBAAkB,KACvB77mB,KAAKqiB,KAAO,IAAI0+gB,GAAe,IAAM,IAAIC,GAAmBhhiB,KAAK8S,KAAM9S,KAAKura,YAAavra,KAAKq7mB,QAASr7mB,KAAKs7mB,UAAWt7mB,KAAKq5Y,QAC5Hr5Y,KAAK87mB,mBAAoB,EACzB97mB,KAAK+7mB,aAAe,EACpB/7mB,KAAK4jB,MAAQ,EACb5jB,KAAKs7mB,UAAY,KACjBt7mB,KAAKg8mB,WAAa,CAAC,oBAAqB,iBAAkB,uBAC1Dr3S,KAAgBV,IAKhBsnG,gBAAY5na,IACZ3D,KAAK4jB,MAAQ5jB,KAAK+7mB,aAAep4mB,GAEjC4na,kBACA,OAAOvra,KAAK+7mB,aAEZ/7D,kBACA,OAAO,EAEPi8D,sBACA,OAAO,EAEPC,kCACA,MAA6B,UAAtBl8mB,KAAK07mB,aAEZS,iCACA,MAA6B,SAAtBn8mB,KAAK07mB,aAEZU,gBAAc,OAAOp8mB,KAAK0W,MAC1B09kB,iBAAe,OAAOp0lB,KAAKuK,OAC3BmpX,eAAa,OAAO,EACpB2oP,eAAa,MAAO,YACpBhrjB,UACA,OAAOrxD,KAAKiM,UAEZA,gBACA,OAAOjM,KAAKizX,aAAavuD,IAAM,MAAQ,MAK3C43S,QAAQrzmB,IACAA,GAAEksX,UAAYpxP,iBACV/jI,KAAKq5Y,MACLr5Y,KAAKqL,OAGLrL,KAAKipP,QAGThgP,GAAEksX,UAAYpxP,kBACV/jI,KAAKq5Y,MACLr5Y,KAAKipP,OAGLjpP,KAAKqL,QAOjBtE,YAAYmE,IACRlL,KAAKura,YAAcr+Z,KAAKsB,IAAItB,KAAKulC,IAAIzyC,KAAKura,YAAavra,KAAKqiB,KAAK5T,MAAQ,GAAI,GAKjFw6O,OACIjpP,KAAK2sO,SAASsuY,GAAIE,MAKtB9vmB,OACIrL,KAAK2sO,SAASsuY,GAAIC,MAKtBqB,qBAAqBtzmB,IACjBjJ,KAAK47mB,eAAiB,KACtB57mB,KAAK67mB,gBAAkB,MACL,SAAd5ymB,GAAEG,SAAoC,UAAdH,GAAEG,WACH,OAAnBpJ,KAAKs7mB,YACLt7mB,KAAKura,YAAcvra,KAAKs7mB,UACxBt7mB,KAAKs7mB,UAAY,MAErBt7mB,KAAKura,YAAcvra,KAAK4jB,MACxB5jB,KAAKqqa,kBAAkBxia,KAAK7H,KAAKura,aACjCvra,KAAK27mB,YAAY9zmB,KAAK,CAAE+b,MAAO5jB,KAAKura,YAAav4Z,KAAMhT,KAAKqiB,KAAKrP,KAAK,KACtEhT,KAAKijL,YAAY2zM,QAMzB4lP,YAAYvzmB,IACRjJ,KAAKy8mB,uBAAyBxzmB,GAAEupY,MAKpC00D,WAAWj+b,IACP,MAAM+nH,GAAS/nH,GAAEupY,MAAQxyY,KAAKy8mB,wBACzBz8mB,KAAK47mB,iBAAmB57mB,KAAK08mB,gBAAgB1rf,KAAWhxH,KAAK28mB,oBAAoB3rf,KAElFhxH,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAK67mB,gBAAmB,cAAa7qf,UAOjD4rf,cAAc3zmB,IACV,MAAM+nH,GAAS/nH,GAAEupY,MAAQxyY,KAAKy8mB,uBAC1Bz8mB,KAAK08mB,gBAAgB1rf,KAGzBhxH,KAAKsnD,OAAOgB,IAAI,KACRtoD,KAAK68mB,wBAAwB7rf,KAEzBhxH,KAAK88mB,YADL98mB,KAAKq5Y,MACYroR,GAAS,EAAIiqf,GAAIE,KAAOF,GAAIC,KAG5Blqf,GAAS,EAAIiqf,GAAIE,KAAOF,GAAIC,MAE5Cl7mB,KAAKwK,UACNxK,KAAK67mB,gBAAkB,KACvB77mB,KAAKqqa,kBAAkBxia,KAAK7H,KAAKura,aACjCvra,KAAK27mB,YAAY9zmB,KAAK,CAAE+b,MAAO5jB,KAAKura,YAAav4Z,KAAMhT,KAAKqiB,KAAKrP,KAAK,OAGrE9F,KAAKiN,IAAI62G,IAAU,IACpBhxH,KAAKwK,QACLxK,KAAK47mB,eAAiB,SAGtB57mB,KAAK67mB,gBAAkB,QAQvC5njB,WAAW9pB,KACFnqC,KAAK47mB,gBAAkB57mB,KAAKura,cAAgBphY,KACzCnqC,KAAKwK,SACLxK,KAAKs7mB,UAAYnxkB,GAEbnqC,KAAK47mB,eADT57mB,KAASq5Y,MACkBr5Y,KAAKs7mB,UAAYt7mB,KAAK4jB,MAAQ,QAAU,OAGxC5jB,KAAKs7mB,UAAYt7mB,KAAK4jB,MAAQ,OAAS,SAIlE5jB,KAAKura,YAAcphY,IAO/BkwkB,qBAAqBlwkB,IACjB,MAAO,CACH5/B,OAAUvK,KAAKuK,OACfF,UAAarK,KAAKg8mB,WAAW7xkB,IAC7BzzB,MAAS,QAMjBmkmB,mBACI,IAAIkC,GACJ,OACIA,GADA/8mB,KAAKq5Y,MACar5Y,KAAKura,YAAc,EAAIvra,KAAKqiB,KAAK5T,MAGjCzO,KAAKura,YAAc,GAEjCvra,KAAKq7mB,SAAW0B,KAAoB/8mB,KAAKqiB,KAAK5T,MAAQ,EAKlE8rmB,iBACQv6mB,KAAKq5Y,MACLr5Y,KAAKqL,OAGLrL,KAAKipP,OAMb6xX,oBACI,IAAIiC,GACJ,OACIA,GADA/8mB,KAAKq5Y,MACar5Y,KAAKura,YAAc,EAGnBvra,KAAKura,YAAc,EAAIvra,KAAKqiB,KAAK5T,OAE/CzO,KAAKq7mB,SAAW0B,KAAoB/8mB,KAAKqiB,KAAK5T,MAAQ,EAKlE+rmB,kBACQx6mB,KAAKq5Y,MACLr5Y,KAAKipP,OAGLjpP,KAAKqL,OAGbsxmB,oBAAoB3rf,IAChB,OAAO9jH,KAAKiN,IAAI62G,KAAWhxH,KAAK0U,QAAQxG,cAAcq3J,YAE1Ds3c,wBAAwB7rf,IACpB,OAAO9jH,KAAKiN,IAAI62G,IAAWhxH,KAAK0U,QAAQxG,cAAcq3J,YAAc,EAExEm3c,gBAAgB1rf,IACZ,IAAIgsf,GACAC,GACJ,OACID,GADAh9mB,KAAKq5Y,MACKroR,GAAS,GAAgB,IAAXA,GAGdA,GAAS,GAAgB,IAAXA,GAE5Bisf,GAAsC,IAArBj9mB,KAAKura,aAAqByxM,IAAah9mB,KAAKura,cAAgBvra,KAAKqiB,KAAK5T,MAAQ,IAAMuumB,IAC7Fh9mB,KAAKq7mB,SAAW4B,GAE5BtwY,SAAS1gO,IACDjM,KAAK87mB,mBAAqB97mB,KAAK47mB,iBAGnC57mB,KAAK88mB,YAAY7wmB,IACZjM,KAAKwK,UACNxK,KAAKqqa,kBAAkBxia,KAAK7H,KAAKura,aACjCvra,KAAK27mB,YAAY9zmB,KAAK,CAAE+b,MAAO5jB,KAAKura,YAAav4Z,KAAMhT,KAAKqiB,KAAKrP,KAAK,OAG9E8pmB,YAAY7wmB,IACJA,KAAcgvmB,GAAIC,MAAQl7mB,KAAKqiB,KAAKk5lB,eACpCv7mB,KAAK4jB,OAAS5jB,KAAK4jB,MAAQ,GAAK5jB,KAAKqiB,KAAK5T,MAC1CzO,KAASwK,QACLxK,KAAK47mB,eAAiB57mB,KAAKq5Y,MAAQ,QAAU,OAG7Cr5Y,KAAKura,YAAcvra,KAAK4jB,OAGvB3X,KAAcgvmB,GAAIE,MAAQn7mB,KAAKqiB,KAAKm5lB,gBACzCx7mB,KAAK4jB,MAAuB,IAAf5jB,KAAK4jB,MAAc5jB,KAAKqiB,KAAK5T,MAAQ,EAAIzO,KAAK4jB,MAAQ,EAC/D5jB,KAAKwK,QACLxK,KAAK47mB,eAAiB57mB,KAAKq5Y,MAAQ,OAAS,QAG5Cr5Y,KAAKura,YAAcvra,KAAK4jB,OAIhCy1X,YACA,MAA0B,QAAnBr5Y,KAAKiM,YAGpBwvmB,UAAoBr1S,UAAO,SAAqCh4R,IAAK,OAAO,IAAKA,IAAKqtkB,IAAqBh4S,MAAyBA,OAAoBA,MAAyBA,OAAwBA,MAAyB4C,MAA6B5C,MAAyBA,SACxRg4S,GAAoBl1S,UAAqB9C,MAAyB,CAAE37T,KAAM2zmB,GAAqB53mB,UAAW,CAAC,CAAC,qBAAsB20X,eAAgB,SAA4Ch1D,GAAI/3T,GAAKgtX,IAEjM,GAFsN,EAALj1D,IAC/MC,MAAsBg1D,GAAU1wD,MAAa,GACtC,EAALvE,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI6umB,gBAAkB5vf,GAAGxjH,SAC7Ew/T,SAAU,GAAIC,aAAc,SAA0CnD,GAAI/3T,IAAgB,EAAL+3T,IACtFC,MAAkB,UAAW,SAAwD97T,IAAU,OAAO8D,GAAI6wmB,QAAQ30mB,MAC3G,EAAL67T,KACFC,MAAmB,WAAYh4T,GAAIioX,SAAnCjwD,CAA6C,YAAah4T,GAAI4wmB,SAA9D54S,CAAwE,MAAOh4T,GAAI4lD,KACnFoyQ,MAAmB,eAAgBh4T,GAAIo+b,YAAvCpmI,CAAoD,QAASh4T,GAAI2wmB,UAAjE34S,CAA4E,SAAUh4T,GAAI2olB,YAC1F3wR,MAAmB,WAAYh4T,GAAIu0iB,YAAnCv8O,CAAgD,eAAgBh4T,GAAIwwmB,gBAApEx4S,CAAqF,qBAAsBh4T,GAAIywmB,4BAA/Gz4S,CAA4I,oBAAqBh4T,GAAI0wmB,8BACpKv1S,OAAQ,CAAE9zT,KAAM,OAAQuomB,QAAS,UAAWK,aAAc,eAAgBlxmB,QAAS,UAAWy+f,SAAU,WAAY2xG,OAAQ,SAAUrvM,YAAa,cAAe70Z,MAAO,QAASnM,OAAQ,UAAYgsX,QAAS,CAAEolP,YAAa,cAAetxM,kBAAmB,qBAAuB7zC,SAAU,CAAC,mBAAoBrqW,SAAU,CAACs3S,MAA0B,CACxVqD,KACA,CACIjuR,QAASkuR,KACTC,SAAU,sBAEdvD,OAA8B51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,iBAAkB,GAAI,EAAG,oBAAqB,EAAG,UAAW,YAAa,aAAc,gBAAiB,CAAC,EAAG,UAAW,EAAG,QAAS,WAAY,CAAC,QAAS,wBAAyB,EAAG,UAAW,EAAG,QAAS,CAAC,EAAG,WAAY,CAAC,EAAG,mBAAoB,2BAA4B,CAAC,EAAG,wBAAyB,EAAG,WAAY,CAAC,QAAS,oBAAqB,aAAc,WAAY,EAAG,QAAS,EAAG,QAAS,CAAC,QAAS,oBAAqB,aAAc,OAAQ,EAAG,QAAS,EAAG,QAAS,CAAC,QAAS,wBAAyB,EAAG,OAAQ,cAAe,mBAAoB,EAAG,QAAS,CAAC,aAAc,WAAY,EAAG,oBAAqB,EAAG,SAAU,CAAC,EAAG,SAAU,mBAAoB,CAAC,aAAc,OAAQ,EAAG,oBAAqB,EAAG,SAAU,CAAC,EAAG,SAAU,mBAAoB,CAAC,EAAG,wBAAyB,EAAG,OAAQ,cAAe,qBAAsBh1Q,SAAU,SAAsCsxQ,GAAI/3T,IAAgB,EAAL+3T,KACl8BC,MAAsB,EAAG,KAAM,GAC/BA,MAAkB,kBAAmB,SAA6E97T,IAAU,OAAO8D,GAAI8wmB,qBAAqB50mB,KAA5J87T,CAAwK,YAAa,SAA8D97T,IAAU,OAAO8D,GAAIy7b,WAAWv/b,KAAnR87T,CAA+R,aAAc,SAA+D97T,IAAU,OAAO8D,GAAI+wmB,YAAY70mB,KAA7Y87T,CAAyZ,eAAgB,SAAiE97T,IAAU,OAAO8D,GAAImxmB,cAAcj1mB,MAC7gB87T,MAAkB,EAAGy5S,GAAmC,EAAG,EAAG,KAAM,GACpEz5S,QACAA,MAAkB,EAAG05S,GAAoC,EAAG,EAAG,MAAO,IAC/D,EAAL35S,KACFC,MAAkB,UAAWA,MAAuB,EAAGytD,GAAKzlX,GAAIowmB,iBAAhEp4S,CAAkF,aAAch4T,GAAImwmB,gBACpGn4S,MAAiB,GACjBA,MAAkB,UAAWh4T,GAAI4W,MACjCohT,MAAiB,GACjBA,MAAkB,QAASh4T,GAAIqwmB,oBAAsBrwmB,GAAIw9f,UAAYx9f,GAAImvmB,WACxEnzS,WAAY,WAAc,MAAO,CAACnB,KAA2BqB,KAAgBA,KAAgBA,KAAyBA,KAAay1S,KAA8Bx1S,cAAe,EAAG90T,KAAM,CAAEqyT,UAAW,EACnMl7T,QAAQ,YAAa,IACjBC,MAAM,yBAAuBC,MAAM,CAAEE,UAAW,oBAChDC,QAAW,aAAc,IACrBE,MAAQ,oBAAkBL,MAAM,CAAEE,UAAW,yBAEjDC,QAAW,YAAa,IACpBE,MAAQ,oBAAkBL,MAAM,CAAEE,UAAW,4BAEjDC,MAAW,cAAe,IACtBE,MAAQ,0BAI5BgkC,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,QAC3BmtmB,GAAoBp7lB,UAAW,YAAQ,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,QAC1Bw5Q,EAAW,oBAAqB,CAACx5Q,UAClCmtjB,GAAoBp7lB,UAAW,cAAe,MACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3ByolB,GAAoBp7lB,UAAW,aAAS,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3ByolB,GAAoBp7lB,UAAW,cAAU,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3ByzS,GAAoBp7lB,UAAW,eAAW,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3ByolB,GAAoBp7lB,UAAW,oBAAgB,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3ByzS,GAAoBp7lB,UAAW,eAAW,GAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3ByzS,GAAoBp7lB,UAAW,gBAAY,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3ByzS,GAAoBp7lB,UAAW,cAAU,GAC5CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B62mB,GAAoBp7lB,UAAW,mBAAe,GACjDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B62mB,GAAoBp7lB,UAAW,yBAAqB,GACvDmuB,EAAW,EACPwxV,SAAaj4D,MAAa,CAAE1mT,QAAQ,IACpCymT,EAAW,cAAeC,QAC3B0zS,GAAoBp7lB,UAAW,uBAAmB,GACrDmuB,EAAW,IACPy5R,OAAY,kBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,cAAe,MACjDmuB,EAAW,EACPy5R,SAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,kBAAmB,MACrDmuB,EAAW,EACPy5R,SAAY,4BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,8BAA+B,MACjEmuB,EAAW,EACPy5R,SAAY,2BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,6BAA8B,MAChEmuB,EAAW,EACPy5R,SAAY,eACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,YAAa,MAC/CmuB,EAAW,IACPy5R,OAAY,gBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,aAAc,MAChDmuB,EAAW,IACPy5R,OAAY,iBACZH,EAAW,cAAex5Q,QAC1Bw5Q,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,WAAY,MAC9CmuB,EAAW,EACPy5R,SAAY,kBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,WAAY,MAC9CmuB,EAAW,EACPy5R,SAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC2zS,GAAoBp7lB,UAAW,MAAO,MACzCmuB,EAAW,IACPy5R,OAAY,sBACZH,EAAW,cAAe90S,SAC3ByolB,GAAoBp7lB,UAAW,mBAAe,GACjDmuB,EAAW,EACPioV,SAAa,UAAW,CAAC,WACzB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjC2zS,GAAoBp7lB,UAAW,UAAW,MAC7Co7lB,GAAsBjtkB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC5D47T,MACA3D,KACAilD,SACL0vP,IAzd6BA,IAAT,GA8dnB2B,GAAwB,UAASA,GAAN,MAI3Bt9mB,cACIE,KAAKq9mB,iBAAmB,IAAIz4mB,MAEhCo2mB,UAAU7wkB,IACN,MAAO,CACH,YAAaA,KAAQnqC,KAAKura,aAGlCkvI,YAAYjlH,IACRx1b,KAAKq9mB,iBAAiBx1mB,KAAK2tb,MAGnC4nL,UAAyBh3S,UAAO,SAA0Ch4R,IAAK,OAAO,IAAKA,IAAKgvkB,KAChGA,GAAyB72S,UAAqB9C,MAAyB,CAAE37T,KAAMs1mB,GAA0Bv5mB,UAAW,CAAC,CAAC,2BAA4B+iU,OAAQ,CAAE2kG,YAAa,cAAez4Z,KAAM,QAAUyjX,QAAS,CAAE8mP,iBAAkB,oBAAsBxva,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,wBAAyB,oBAAqB,CAAC,QAAS,WAAY,EAAG,UAAW,QAAS,EAAG,QAAS,WAAY,CAAC,EAAG,WAAY,EAAG,UAAW,UAAWh1Q,SAAU,SAA2CsxQ,GAAI/3T,IAAgB,EAAL+3T,KACnfC,MAAsB,EAAG,KAAM,GAC/BA,MAAkB,EAAG65S,GAAwC,EAAG,EAAG,KAAM,GACzE75S,SACO,EAALD,KACFC,MAAiB,GACjBA,MAAkB,UAAWh4T,GAAIqH,QAChC20T,WAAY,CAACE,KAAgBA,MAAiBC,cAAe,IACtEp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3B8ujB,GAAyB/8lB,UAAW,mBAAe,GACtDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5T,QAC3B8umB,GAAyB/8lB,UAAW,YAAQ,GAC/CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3Bw4mB,GAAyB/8lB,UAAW,wBAAoB,GApCtB+8lB,IAAT,GA4ExBj0jB,GAAgB,UAASA,GAAN,QAEvBA,UAAiBi9Q,UAAO,SAAkCh4R,IAAK,OAAO,IAAKA,IAAK+a,KAChFA,GAAiBkiR,UAAqB5H,MAAwB,CAAE37T,KAAMqhD,KACtEA,GAAiBmiR,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,KAAcsoZ,SAJ5DlgW,IAAT,kCCzuBb,wBACP,6FACA,uGACA,uBAA6Co0jB,MAAQA,qEACrD,oDAOO,kBACP,yUCvCA,MAAMh6S,GAAM,CAAC,kBACP0tD,GAAM,CAAC,iBACPC,GAAM,CAAC,gBACPltD,GAAM,CAAC,aACP+tD,GAAM,CAAC,mBACPC,GAAM,CAAC,oBACb,YAAkDxuD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACrE,MAAM44F,GAAO34F,QACbA,MAA+B,GAC/BA,MAAsB,EAAG,yBAA0B,EAAG,GACtDA,MAAkB,gBAAiB,SAAkG97T,IAAU87T,aAAqB24F,IAAsB34F,QAAsC+5S,gBAAgB71mB,MAChP87T,QACAA,QACF,GAAS,EAALD,GAAQ,CACV,MAAMi6S,GAAUhymB,GAAI4lX,UACd3tD,GAASD,QACfA,MAAiB,GACjBA,MAAkB,WAAY,UAA9BA,CAAyC,YAAaC,GAAOxyK,SAA7DuyK,CAAuE,OAAQg6S,KAEnF,YAA4Cj6S,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAC/D,MAAMmuD,GAAOluD,QACbA,MAAsB,EAAG,SAAU,EAAG,GACtCA,MAAkB,QAAS,WAAwEA,aAAqBkuD,IAAuBluD,QAAuC16E,cACtL06E,MAAiB,EAAG,OAAQ,IAC5BA,QACF,GAAS,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAmB,aAAct+R,GAAOu4kB,eACxCj6S,MAAkB,QAASt+R,GAAOw4kB,gBAClCl6S,MAAmB,aAAct+R,GAAOw4kB,iBAE5C,YAAgEn6S,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACnF,MAAMytI,GAAOxtI,QACbA,MAA+B,GAC/BA,MAAsB,EAAG,KAAM,IAC/BA,MAAsB,EAAG,yBAA0B,EAAG,IACtDA,MAAkB,gBAAiB,SAAgH97T,IAAU87T,aAAqBwtI,IAAuDhtc,EAAhCw/T,IAAqB,GAAmB+5S,gBAAgB71mB,MACjQ87T,QACAA,QACAA,QACF,GAAS,EAALD,GAAQ,CACV,MAAMo6S,GAAWnymB,GAAI4lX,UACfriX,GAAUy0T,MAAqB,GACrCA,MAAiB,GACjBA,MAAkB,WAAY,WAA9BA,CAA0C,YAAaz0T,GAAQkiJ,SAA/DuyK,CAAyE,OAAQm6S,KAErF,YAAiDp6S,GAAI/3T,IAInD,GAJmE,EAAL+3T,KAC5DC,MAAsB,EAAG,KAAM,IAC/BA,MAAkB,EAAGo6S,GAAwD,EAAG,EAAG,eAAgB,GACnGp6S,SACO,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAiB,GACjBA,MAAkB,UAAW3/T,GAAOg6mB,WAExC,YAAyDt6S,GAAI/3T,IAAgB,EAAL+3T,IACpEC,MAAiB,EAAG,sBAAuB,GAAI,IACxC,EAALD,IACFC,MAAkB,YAAa,KAEnC,MAAMgrI,GAAM,CAAC,mBACP2B,GAAM,CAAC,iBACb,YAAuD5sI,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAC1E,MAAMK,GAAMJ,QACZA,MAAsB,EAAG,SAAU,EAAG,GACtCA,MAAkB,QAAS,SAA+E97T,IAAU87T,aAAqBI,IAAoD9/T,EAA/B0/T,MAAsCh4P,MAAM5jE,KAAKF,KAA/M87T,CAA2N,cAAe,SAAqF97T,IAAU87T,aAAqBI,IAAoD7/J,EAA/By/J,MAAsCq4K,YAAYj0e,KAAKF,KAA1a87T,CAAsb,iBAAkB,SAAwF97T,IAAU87T,aAAqBI,IAAoD5yT,EAA/BwyT,MAAsCgY,eAAe5zU,KAAKF,KAA9oB87T,CAA0pB,OAAQ,WAAkFA,aAAqBI,IAAqBJ,QAAsC/7Q,WACp0B+7Q,MAAc,GACdA,QACF,GAAS,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,WAAYt+R,GAAOuuV,SAArCjwD,CAA+C,UAAWt+R,GAAOh7B,MAAjEs5T,CAAwE,UAAWt+R,GAAOiY,UAA1FqmR,CAAqG,WAAYt+R,GAAO98B,SAAxHo7T,CAAkI,aAAct+R,GAAO61I,WAAvJyoJ,CAAmK,UAAWt+R,GAAO8rJ,QAArLwyI,CAA8L,WAAYt+R,GAAO4I,SAAjN01R,CAA2N,OAAQt+R,GAAOy2c,eAAe9re,KAAzP2zT,CAA+P,YAAat+R,GAAOy2c,eAAexta,UAAlSq1P,CAA6S,WAAYt+R,GAAOy2c,eAAe5ta,SAA/Uy1P,CAAyV,OAAQt+R,GAAO4tV,MACxWtvD,MAAmB,QAASt+R,GAAOynB,OACnC62Q,MAAiB,GACjBA,MAA0B,IAAKt+R,GAAOy2c,eAAe9we,KAAM,MAE/D,YAAuD04T,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAC1E,MAAMm1I,GAAOl1I,QACbA,MAAsB,EAAG,SAAU,EAAG,GACtCA,MAAkB,QAAS,SAA+E97T,IAAU87T,aAAqBk1I,IAAsD/sc,EAA/B63T,MAAuCh4P,MAAM5jE,KAAKF,KAAlN87T,CAA8N,iBAAkB,SAAwF97T,IAAU87T,aAAqBk1I,IAAsD5pc,EAA/B00T,MAAuCgY,eAAe5zU,KAAKF,MACzb87T,MAAc,GACdA,QACF,GAAS,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAkB,UAAW3/T,GAAOqG,MAApCs5T,CAA2C,UAAW3/T,GAAOs5C,UAA7DqmR,CAAwE,WAAY3/T,GAAOuE,SAA3Fo7T,CAAqG,aAAc3/T,GAAOk3K,WAA1HyoJ,CAAsI,UAAW3/T,GAAOmtL,QAAxJwyI,CAAiK,WAAY3/T,GAAOiqC,SAApL01R,CAA8L,OAAQ3/T,GAAOi6mB,gBAAgBjumB,KAA7N2zT,CAAmO,YAAa3/T,GAAOi6mB,gBAAgB3viB,UAAvQq1P,CAAkR,WAAY3/T,GAAOi6mB,gBAAgB/viB,SAArTy1P,CAA+T,OAAQ3/T,GAAOivX,MAC9UtvD,MAAmB,QAAS3/T,GAAO8oD,OACnC62Q,MAAiB,GACjBA,MAA0B,IAAK3/T,GAAOi6mB,gBAAgBjzmB,KAAM,MAEhE,MAAMynX,GAAO,CAAC,sBACRC,GAAO,CAAC,uBACd,YAAmEhvD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACtF,MAAMmyF,GAAMlyF,QACZA,MAAsB,EAAG,OAAQ,GACjCA,MAAkB,QAAS,SAAyF97T,IAAyD,MAAMq2mB,GAAYvjK,EAA7Ch3I,IAAqBkyF,IAAoCtkC,UAAiBrtN,GAASy/J,MAAqB,GAAIu6S,UAAUvyiB,MAAM5jE,KAAKF,IAAgBq8J,GAAO66N,cAAcl3X,KAAxT87T,CAAoU,cAAe,SAA+F97T,IAAkG,OAAOq2mB,EAA3Ev6S,IAAqBkyF,IAAoCtkC,UAA4ByqH,YAAYj0e,KAAKF,KAAtjB87T,CAAkkB,iBAAkB,SAAkG97T,IAAyD,MAAMq2mB,GAAjCv6S,MAAqBkyF,IAAoCtkC,UAAoD,OAAOngX,EAAhCuyT,IAAqB,GAAmBw6S,sBAAsBt2mB,GAAQq2mB,MAC92Bv6S,MAAc,GACdA,QACF,GAAS,EAALD,GAAQ,CACV,MAAMw6S,GAAYvymB,GAAI4lX,UACtB5tD,MAAkB,UAAWu6S,GAAU7zmB,MAAvCs5T,CAA8C,UAAWu6S,GAAU5gkB,UAAnEqmR,CAA8E,WAAYu6S,GAAU31mB,SAApGo7T,CAA8G,YAAau6S,GAAUxqP,UAArI/vD,CAAgJ,UAAWu6S,GAAU/sb,QAArKwyI,CAA8K,WAAYu6S,GAAUjwkB,SAApM01R,CAA8M,OAAQu6S,GAAUpiI,eAAe9re,KAA/O2zT,CAAqP,YAAau6S,GAAUpiI,eAAexta,UAA3Rq1P,CAAsS,WAAYu6S,GAAUpiI,eAAe5ta,UAC3Uy1P,MAAmB,QAASu6S,GAAUpxjB,OACtC62Q,MAAiB,GACjBA,MAA0B,IAAKu6S,GAAUpiI,eAAe9we,KAAM,MAElE,YAA4D04T,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAC/E,MAAMm1I,GAAOl1I,QACbA,MAAsB,EAAG,oBAAqB,EAAG,GACjDA,MAAkB,WAAY,SAAkG97T,IAAU87T,aAAqBk1I,IAAuBl1I,QAAuCi5I,WAAW/0c,KAAxO87T,CAAoP,QAAS,WAAmGA,aAAqBk1I,IAAuBl1I,QAAuCj8Q,YACnbi8Q,MAAkB,EAAGy6S,GAA2D,EAAG,GAAI,OAAQ,GAC/Fz6S,QACF,GAAS,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,YAAY,EAA9BA,CAAkC,YAAat+R,GAAO26B,UAAtD2jQ,CAAiE,WAAYt+R,GAAO98B,SAApFo7T,CAA8F,OAAQt+R,GAAO4tV,KAA7GtvD,CAAmH,QAASt+R,GAAOzuB,OACnI+sT,MAAiB,GACjBA,MAAkB,UAAWt+R,GAAOg5kB,mBAExC,YAAmE36S,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACtF,MAAM4qI,GAAO3qI,QACbA,MAAsB,EAAG,OAAQ,GACjCA,MAAkB,QAAS,SAAyF97T,IAA0D,MAAMy2mB,GAAa3jK,EAA/Ch3I,IAAqB2qI,IAAsC/8E,UAAiBniX,GAAUu0T,MAAqB,GAAI26S,UAAW3yiB,MAAM5jE,KAAKF,IAAgBuH,GAAQ2vX,cAAcl3X,KAA7T87T,CAAyU,iBAAkB,SAAkG97T,IAA0D,MAAMy2mB,GAAlC36S,MAAqB2qI,IAAsC/8E,UAAoD,OAAOn/C,EAAhCzO,IAAqB,GAAmBw6S,sBAAsBt2mB,GAAQy2mB,MACvnB36S,MAAc,GACdA,QACF,GAAS,EAALD,GAAQ,CACV,MAAM46S,GAAa3ymB,GAAI4lX,UACvB5tD,MAAkB,UAAW26S,GAAWj0mB,MAAxCs5T,CAA+C,UAAW26S,GAAWhhkB,UAArEqmR,CAAgF,WAAY26S,GAAW/1mB,SAAvGo7T,CAAiH,YAAa26S,GAAW5qP,UAAzI/vD,CAAoJ,UAAW26S,GAAWntb,QAA1KwyI,CAAmL,WAAY26S,GAAWrwkB,SAA1M01R,CAAoN,OAAQ26S,GAAWL,gBAAgBjumB,KAAvP2zT,CAA6P,YAAa26S,GAAWL,gBAAgB3viB,UAArSq1P,CAAgT,WAAY26S,GAAWL,gBAAgB/viB,UACvVy1P,MAAmB,QAAS26S,GAAWxxjB,OACvC62Q,MAAiB,GACjBA,MAA0B,IAAK26S,GAAWL,gBAAgBjzmB,KAAM,MAEpE,YAA4D04T,GAAI/3T,IAI9D,GAJ8E,EAAL+3T,KACvEC,MAAsB,EAAG,oBAAqB,EAAG,GACjDA,MAAkB,EAAG46S,GAA2D,EAAG,GAAI,OAAQ,GAC/F56S,SACO,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAkB,YAAY,EAA9BA,CAAkC,YAAa3/T,GAAOg8D,UAAtD2jQ,CAAiE,WAAY3/T,GAAOuE,SAApFo7T,CAA8F,OAAQ3/T,GAAOivX,KAA7GtvD,CAAmH,QAAS3/T,GAAO4S,OACnI+sT,MAAiB,GACjBA,MAAkB,UAAW3/T,GAAOq6mB,mBAExC,MAAM9tK,GAAO,CAAC,UACd,YAAsD7sI,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACzE,MAAMkxF,GAAMjxF,QACZA,MAAsB,EAAG,SAAU,EAAG,GACtCA,MAAkB,QAAS,WAAkF,MAAMg3I,GAAch3I,MAAqBixF,IAAYkH,GAAU6+C,GAAYppF,UAAiB0pP,GAAOtgK,GAAY72b,MAA8C,OAAOwhB,EAA/Bq+R,MAAsCniR,QAAQs6W,GAASm/M,MACzSt3S,MAAc,GACdA,QACF,GAAS,EAALD,GAAQ,CACV,MAAMo4F,GAAUnwZ,GAAI4lX,UACd3tD,GAASD,QACfA,MAAkB,WAAYC,GAAOr7T,UAAYuzZ,GAAQvzZ,SAAzDo7T,CAAmE,OAAQm4F,GAAQ9rZ,KAAnF2zT,CAAyF,YAAam4F,GAAQxtV,UAA9Gq1P,CAAyH,WAAYm4F,GAAQ5tV,SAA7Iy1P,CAAuJ,OAAQC,GAAOqvD,MACtKtvD,MAAiB,GACjBA,MAA0B,IAAKC,GAAO/3P,QAAQiwV,IAAU,MAE5D,MAAM00C,GAAO,CAAC,kBACRgqH,GAAO,CAAC,yBACRC,GAAO,CAAC,oCACd,YAA+D/2P,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAClF,MAAMK,GAAMJ,QACZA,MAAsB,EAAG,uBAAwB,EAAG,GACpDA,MAAkB,OAAQ,SAAoG97T,IAAU87T,aAAqBI,IAAoD9/T,EAA/B0/T,MAAsC17S,KAAKlgB,KAAKF,KAAlO87T,CAA8O,QAAS,SAAqG97T,IAAU87T,aAAqBI,IAAoD7/J,EAA/By/J,MAAsCz4S,MAAMnjB,KAAKF,KAAjc87T,CAA6c,YAAa,SAAyG97T,IAAU87T,aAAqBI,IAAoD5yT,EAA/BwyT,MAAsCq6D,UAAUj2X,KAAKF,MAC5qB87T,MAAc,GACdA,QACF,GAAS,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,OAAQt+R,GAAOy2c,eAAe9re,KAAhD2zT,CAAsD,YAAat+R,GAAOy2c,eAAexta,UAAzFq1P,CAAoG,WAAYt+R,GAAOy2c,eAAe5ta,SAAtIy1P,CAAgJ,cAAet+R,GAAOw6V,YAAtKl8D,CAAmL,WAAYt+R,GAAO98B,SAAtMo7T,CAAgN,YAAY,EAA5NA,CAAgO,OAAQt+R,GAAOryB,KAA/O2wT,CAAqP,YAAat+R,GAAO+kB,UAAzQu5Q,CAAoR,gBAAiBt+R,GAAOg5V,cAA5S16D,CAA2T,OAAQt+R,GAAO4tV,KAA1UtvD,CAAgV,UAAWt+R,GAAO8rJ,SAClWwyI,MAAiB,GACjBA,MAA0B,IAAKt+R,GAAOy2c,eAAe9we,KAAM,MAE/D,YAA+D04T,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAClF,MAAMizI,GAAOhzI,QACbA,MAAsB,EAAG,SAAU,GACnCA,MAAkB,QAAS,SAAuF97T,IAAU87T,aAAqBgzI,IAAsDvlc,EAA/BuyT,MAAuCq6D,UAAUj2X,KAAKF,MAC9N87T,MAAc,GACdA,QACAA,MAAsB,EAAG,2BAA4B,EAAG,GACxDA,MAAkB,YAAa,SAA6G97T,IAAU87T,aAAqBgzI,IAAsD3nc,EAA/B20T,MAAuCq6D,UAAUj2X,KAAKF,KAAxP87T,CAAoQ,QAAS,SAAyG97T,IAAU87T,aAAqBgzI,IAAuBhzI,QAAuC66S,kBAAkB32mB,MACre87T,QACF,GAAS,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAkB,YAAY,EAA9BA,CAAoC,OAAQ3/T,GAAOi6mB,gBAAgBjumB,KAAnE2zT,CAAyE,YAAa3/T,GAAOi6mB,gBAAgB3viB,UAA7Gq1P,CAAwH,WAAY3/T,GAAOi6mB,gBAAgB/viB,SAA3Jy1P,CAAqK,UAAW3/T,GAAO67X,aACvLl8D,MAAiB,GACjBA,MAA0B,IAAK3/T,GAAOi6mB,gBAAgBjzmB,KAAM,KAC5D24T,MAAiB,GACjBA,MAAkB,OAAQ3/T,GAAOgP,KAAjC2wT,CAAuC,WAAY3/T,GAAOuE,SAA1Do7T,CAAoE,YAAa3/T,GAAOomD,YAE5F,MAAM8qW,GAAO,CAAC,sBACRO,GAAO,CAAC,uBACRC,GAAO,CAAC,iCACd,YAA4DhyF,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAC/E,MAAMK,GAAMJ,QACZA,MAAsB,EAAG,oBAAqB,EAAG,GACjDA,MAAkB,cAAe,SAAqG97T,IAAU87T,aAAqBI,IAAoD9/T,EAA/B0/T,MAAsCo6D,YAAYh2X,KAAKF,KAAjP87T,CAA6P,OAAQ,SAA8F97T,IAAU87T,aAAqBI,IAAoD7/J,EAA/By/J,MAAsC17S,KAAKlgB,KAAKF,KAAvc87T,CAAmd,QAAS,SAA+F97T,IAAU87T,aAAqBI,IAAoD5yT,EAA/BwyT,MAAsCz4S,MAAMnjB,KAAKF,KAAhqB87T,CAA4qB,YAAa,SAAmG97T,IAAU87T,aAAqBI,IAAoDl4T,EAA/B83T,MAAsCq6D,UAAUj2X,KAAKF,MACr4B87T,QACF,GAAS,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,OAAQt+R,GAAOryB,KAAjC2wT,CAAuC,OAAQt+R,GAAOy2c,eAAe9we,KAArE24T,CAA2E,OAAQt+R,GAAOy2c,eAAe9re,KAAzG2zT,CAA+G,YAAat+R,GAAOy2c,eAAexta,UAAlJq1P,CAA6J,WAAYt+R,GAAOy2c,eAAe5ta,SAA/Ly1P,CAAyM,cAAet+R,GAAOw6V,YAA/Nl8D,CAA4O,mBAAoBt+R,GAAOy6V,iBAAvQn8D,CAAyR,kBAAmBt+R,GAAOy4V,gBAAnTn6D,CAAoU,WAAYt+R,GAAO98B,SAAvVo7T,CAAiW,YAAY,EAA7WA,CAAiX,YAAat+R,GAAO+kB,UAArYu5Q,CAAgZ,gBAAiBt+R,GAAOg5V,cAAxa16D,CAAub,OAAQt+R,GAAO4tV,OAE1c,YAA4DvvD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAC/E,MAAMmuD,GAAOluD,QACbA,MAAsB,EAAG,SAAU,EAAG,GACtCA,MAAkB,QAAS,SAAoF97T,IAAU87T,aAAqBkuD,IAAsD7iX,EAA/B20T,MAAuCo6D,YAAYh2X,KAAKF,KAA7N87T,CAAyO,QAAS,SAAoF97T,IAAU87T,aAAqBkuD,IAAuBluD,QAAuC86S,kBAAkB52mB,MACrb87T,MAAc,GACdA,QACAA,MAAsB,EAAG,2BAA4B,EAAG,GACxDA,MAAkB,YAAa,SAA0G97T,IAAU87T,aAAqBkuD,IAAsD9lX,EAA/B43T,MAAuCq6D,UAAUj2X,KAAKF,KAArP87T,CAAiQ,QAAS,SAAsG97T,IAAU87T,aAAqBkuD,IAAuBluD,QAAuC66S,kBAAkB32mB,MAC/d87T,QACF,GAAS,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAkB,WAAY3/T,GAAOuE,SAArCo7T,CAA+C,OAAQ3/T,GAAOi6mB,gBAAgBjumB,KAA9E2zT,CAAoF,YAAa3/T,GAAOi6mB,gBAAgB3viB,UAAxHq1P,CAAmI,WAAY3/T,GAAOi6mB,gBAAgB/viB,SAAtKy1P,CAAgL,OAAQ3/T,GAAOivX,KAA/LtvD,CAAqM,UAAW3/T,GAAO67X,aACvNl8D,MAAiB,GACjBA,MAA0B,IAAK3/T,GAAOi6mB,gBAAgBjzmB,KAAM,KAC5D24T,MAAiB,GACjBA,MAAkB,OAAQ3/T,GAAOivX,KAAjCtvD,CAAuC,OAAQ3/T,GAAOgP,KAAtD2wT,CAA4D,WAAY3/T,GAAOuE,SAA/Eo7T,CAAyF,YAAa3/T,GAAOomD,YAEjH,MAAMurW,GAAO,CAAC,aACd,YAA0DjyF,GAAI/3T,IAAgB,EAAL+3T,IACrEC,MAAiB,EAAG,MAAO,GAE/B,YAAwED,GAAI/3T,KAC5E,YAA0D+3T,GAAI/3T,IAI5D,GAJ4E,EAAL+3T,KACrEC,MAA+B,GAC/BA,MAAkB,EAAG+6S,GAAgE,EAAG,EAAG,cAAe,GAC1G/6S,SACO,EAALD,GAAQ,CACV,MAAME,GAASD,QACfA,MAAiB,GACjBA,MAAkB,mBAAoBC,GAAOxxQ,WAEjD,YAAwEsxQ,GAAI/3T,KAC5E,YAA0D+3T,GAAI/3T,IAI5D,GAJ4E,EAAL+3T,KACrEC,MAA+B,GAC/BA,MAAkB,EAAGg7S,GAAgE,EAAG,EAAG,cAAe,GAC1Gh7S,SACO,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAiB,GACjBA,MAAkB,mBAAoBt+R,GAAO+sB,WAEjD,MAAM+xQ,GAAkB,CACpBj/T,KAAM,kCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAMtB,IAAIs6S,GAAc,UAASA,GAAN,MAIjB5+mB,cACIE,KAAK2+mB,UAAY,IAAI/5mB,MAEzBovD,QAAQ2qP,IACJ3+S,KAAK2+mB,UAAU92mB,KAAK82S,MAG5B+/T,UAAet4S,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAKswkB,KAC5EA,GAAe9zS,WAAsBnH,MAA0B,CAAEp4S,MAAOqzlB,GAAgBpmmB,QAAS,SAAU81B,IAAK,OAAOswkB,GAAet4S,UAAKh4R,OAZhHswkB,IAAT,GAiBlB,MAAMz+K,GAAiB,+CAIvB,YAAoBvrb,IAChB,IAAIgC,GAAQhC,GAAQ6wJ,YAChBp7J,GAAQ06B,iBAAiBnwB,IAC7BgC,WAASiuB,WAAWx6B,GAAMkM,aAAe,EAAIsuB,WAAWx6B,GAAMoM,cAAgB,GAgBlF,MAoBMyrgB,GAAc,CAAC58f,GAAMgoZ,GAAW60G,IAAY,KAC9C,GAAK78f,GAGL,IAAI68f,IAAa70G,GAAUhoZ,IACvB,OAAOA,GAGX,IADAA,GAAOA,GAAK2sS,WACL3sS,IAAM,CACT,GAAsB,IAAlBA,GAAK8+V,SAAgB,CACrB,MAAMxvW,GAAUstgB,GAAY58f,GAAMgoZ,IAClC,GAAI14Z,GACA,OAAOA,GAGf0Q,GAAOA,GAAK0lW,eAMd01E,GAAc,CAAC9rb,GAAS+rb,IAAkB,KAC5C,GAAI/rb,GAAQogX,QAAS,CACjB,MAAMA,GAAUpgX,GAAQogX,QAAQz5V,cAEhC,IAAIsla,GAAyB,OADZjsb,GAAQozC,aAAa,YAEtC,OAAIm4Y,GAAezkB,KAAK1mD,MACpB6rE,IAAajsb,GAAQrM,UAElBs4b,MAAeF,IAxCX/rb,MACf,MAAMwpU,GAAOxpU,GAAQy0T,wBAKrB,OAJgB+U,GAAKxnU,MAAQ,GAAKwnU,GAAK3zU,OAAS,GACjB,IAAX2zU,GAAKv0U,GAAsB,IAAXu0U,GAAKpqR,IAG0C,WAAhD3+C,OAAO0vB,iBAAiBnwB,IAASwtN,YAkCvB0+N,CAAUlsb,KAEvD,OAAO,GAiBLkqmB,GAAuB,CAAClqmB,GAAS+rb,IAAkB,EAAM1xW,MAC3D,IAAI3pE,GAAO2pE,GAAUr6E,GAAQmqmB,YAAcnqmB,GAAQo2W,YACnD,KAAO1lW,IAAM,CACT,GAAsB,IAAlBA,GAAK8+V,SAAgB,CACrB,MAAM3xW,GAASyvgB,GAAY58f,GAAMiiC,IAAMm5Y,GAAYn5Y,GAAIo5Y,KACvD,GAAIlub,GACA,OAAOA,GAGf6S,GAAO2pE,GAAU3pE,GAAKy5lB,YAAcz5lB,GAAK0lW,cAM3C6L,GAAahzX,IAAoB,MAAVA,GAIvBm7mB,GAAcp2e,IAAgB9kH,IAAU+yW,GAAUjuP,GAAW9kH,KAI7Dm7lB,GAAoB,CAACC,GAAaC,GAAav2e,KAAgBs9T,KACjE,OAAQA,GAAGl+b,UACF,UACD,GAAIk+b,GAAG7wE,UAAY6pP,GACf,OAAOt2e,GAAW3iI,OAAS,EAE/B,GAAIigc,GAAG7wE,UAAY8pP,GACf,OAAO,EAEX,UACC,QACD,OAAOv2e,GAAW56F,UAAUopH,IAAMA,KAAO8uS,GAAGt9b,QAAUwuJ,GAAG/oJ,SAAS63b,GAAGt9b,SAE9D,QAEP,OAAO,IAMbw2mB,GAAmB,CAACF,GAAaC,GAAaE,KAAW,CAAC55gB,GAAYygW,MACxE,OAAQA,GAAG7wE,cACF6pP,GACD,OAAOG,GAAO55gB,GAAa,GAAKA,GAAa,EAAIA,QAChD05gB,GACD,OAAOE,GAAO55gB,GAAa,GAAKA,GAAa,EAAIA,WAEjD,OAAOA,KAMb65gB,GAAYl4mB,IAAW4U,IAAW5U,KAAU4U,GAI5CujmB,GAAa,CAAC36S,IAAM,IAAU,CAACk0K,IAAY,IAASA,GAAY70W,eAAiB2gM,GAAM3gM,eAAiBA,gBAIxGu7e,GAAa,CAAC56S,IAAM,IAAU,CAACk0K,IAAY,IAASA,GAAY70W,aAAe2gM,GAAM3gM,gBAAkBA,eAIvGw7e,GAAsB,CAAC56iB,GAAU66iB,GAAa5mI,MAChD,OAAQ4mI,QACC,UACD,OAAO5mI,QAAYzze,EAAYw/D,OAC9B,WACD,OAAOi0a,GAAYj0a,QAAWx/D,UAE9B,OAAOw/D,KAOnB,IAAIw4T,GAAiB,UAASA,GAAN,MACpBr9X,YAAY8rX,IACR5rX,KAAK4rX,KAAOA,GACZ5rX,KAAK6yU,QAAU,CAAE4sS,aAAc,KAAM77lB,OAAO,GAC5C5jB,KAAK0/mB,cAAgB,GACrB1/mB,KAAK2/mB,gBAAiB,EACtB3/mB,KAAK4/mB,yBAA0B,EAEnCC,iBAAiBC,IACb9/mB,KAAK0/mB,cAAgB,IAAII,IAE7Br0iB,OAAQrI,WAASz1D,MAAOq4b,KAChBhmc,KAAK6yU,QAAQ4sS,eAAiBr8iB,IAAW4iY,IACzChmc,KAAKqtU,MAAMjqQ,GAAS4iY,IAG5B+5K,qBACI//mB,KAAK2/mB,gBAAiB,EACtB3/mB,KAAKggnB,sBAETC,mBACIjgnB,KAAK2/mB,gBAAiB,EACtB3/mB,KAAKkgnB,qBACLlgnB,KAAKqtU,QAET8yS,UAAUn6K,IACN,IAAKhmc,KAAK4/mB,yBAA2B5/mB,KAAK6yU,QAAQ4sS,eAAiBz/mB,KAAK6yU,QAAQ4sS,aAAa9gU,KAAKq6L,UAAUhzC,IAAK,CAC7G,MAAMo6K,GAASpgnB,KAAKqgnB,oBAAoBzxmB,MAAM5O,KAAK6yU,QAAQjvT,MAAQ,GAAG,GAClEw8lB,GACApgnB,KAAKqtU,MAAM+yS,GAAQp6K,IAGfhmc,KAAKsgnB,4BAA8BtgnB,KAAK2/mB,gBACxC3/mB,KAAKggnB,uBAKrBO,UAAUv6K,IACN,GAAIhmc,KAAK4/mB,wBAAyB,CAC9B,MAAMY,GAAkBxgnB,KAAKqgnB,oBAAoBtxhB,UAAU,GAC3D/uF,KAAKqtU,MAAMmzS,GAAiBx6K,YAEvBhmc,KAAK6yU,QAAQ4sS,eAAiBz/mB,KAAK6yU,QAAQ4sS,aAAa9gU,KAAKq6L,UAAUhzC,IAAK,CACjF,MAAMy6K,GAASzgnB,KAAKqgnB,oBACfzxmB,MAAM,EAAG5O,KAAK6yU,QAAQjvT,OACtBmrE,UAAU,GACX0xhB,IACAzgnB,KAAKqtU,MAAMozS,GAAQz6K,KAI/B06K,kBACI1gnB,KAAKkgnB,qBACLlgnB,KAAK6yU,QAAQ4sS,aAAe,KAC5Bz/mB,KAAK6yU,QAAQjvT,OAAQ,EAEzByjlB,WAAWrhK,IACP,MAAM26K,GAAY3gnB,KAAKqgnB,oBAAoB,GACrCO,GAAiB5gnB,KAAK6gnB,eACxBF,IACA3gnB,KAAK6yU,QAAQ4sS,aAAekB,GAC5B3gnB,KAAK6yU,QAAQjvT,MAAQ5jB,KAAKqgnB,oBAAoBvykB,UAAUgzkB,IAAMA,KAAOH,IACrE3gnB,KAAKqtU,MAAMszS,GAAW36K,KAEjB46K,IACLA,GAAe1ymB,cAAcm/T,QAGrCgzS,oBACI,OAAOrgnB,KAAK0/mB,cAAc3ymB,OAAO+zmB,IAAMA,GAAGniU,KAAKi6L,YAAc54e,KAAK2/mB,gBAAkBmB,GAAGniU,KAAKm6L,YAEhGzrK,MAAMoyS,GAAcz5K,IAEhBhmc,KAAK4rX,KAAKm0E,SAASvzb,MAAK+kD,OAAK,IAAI7rD,UAAU,KACvC,GAAK+5mB,GAWIA,GAAa9gU,KAAKm6L,UAAY2mI,GAAa9gU,KAAKm6L,aACrD94e,KAAK6yU,QAAQ4sS,aAAeA,GAC5Bz/mB,KAAK6yU,QAAQjvT,MAAQ5jB,KAAKqgnB,oBAAoBvykB,UAAUgzkB,IAAMA,KAAOrB,IACrEA,GAAa9gU,KAAK0uB,MAAM24H,IACxBhmc,KAAKkgnB,0BAfU,CACf,MAAMa,GAAe/gnB,KAAKqgnB,oBACpBW,GAAgBD,GAAax6mB,KAAKu6mB,IAAMA,KAAO9gnB,KAAK6yU,QAAQ4sS,eAAiBsB,GAAa,GAE5FC,KACAhhnB,KAAK6yU,QAAQ4sS,aAAeuB,GAC5BhhnB,KAAK6yU,QAAQjvT,MAAQ5jB,KAAKqgnB,oBAAoBvykB,UAAUgzkB,IAAMA,KAAOE,IAErEA,GAAcriU,KAAK0uB,MAAM24H,QAWzCk6K,qBACQlgnB,KAAK6gnB,iBACL7gnB,KAAK4/mB,yBAA0B,EAC/B5/mB,KAAK6gnB,eAAe3ymB,cAAcwlX,UAAW,GAGrDssP,sBACIhgnB,KAAK4/mB,yBAA0B,EAC/B5/mB,KAAK6gnB,eAAe3ymB,cAAcwlX,SAAW,EAC7C1zX,KAAK6gnB,eAAe3ymB,cAAcm/T,QAEtCizS,0BACI,OAAQ3pP,GAAU32X,KAAK6gnB,iBAC2E,YAA9F1rmB,OAAO0vB,iBAAiB7kC,KAAK6gnB,eAAe3ymB,eAAe62B,iBAAiB,gBAGxFo4V,UAAkB/2D,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK+uV,IAAmB15D,MAAgBA,SACrH05D,GAAkBvyD,WAAsBnH,MAA0B,CAAEp4S,MAAO8xW,GAAmB7kX,QAAS,SAAU81B,IAAK,OAAO+uV,GAAkB/2D,UAAKh4R,OACpJ+uV,GAAoB3uV,EAAW,CAAEs5R,EAAW,oBAAqB,CAACikD,SAC/DoR,IAjH2BA,IAAT,GAuHjBs7G,GAAoB,UAASA,GAAN,MAKvB34e,cACIE,KAAK0zX,UAAW,EAChB1zX,KAAK44e,WAAY,EAKjB54e,KAAK2/iB,YAAa,EAElBshE,qBACA,OAAOjhnB,KAAK44e,UAAY,OAAS,eAEjCsoI,sBACA,OAAOlhnB,KAAK44e,UAAY,QAAU,OAOtCE,WACI,OAAO,EAQXzrK,MAAM24H,KAWNgzC,UAAUhzC,IACN,OAAO,IAGfyyC,UAAqBryK,UAAO,SAAsCh4R,IAAK,OAAO,IAAKA,IAAKqqc,KACxFA,GAAqBlyK,UAAqB9C,MAAyB,CAAE37T,KAAM2we,GAAsB50e,UAAW,CAAC,CAAC,iBAAkB+iU,OAAQ,CAAE+4O,WAAY,cAAgB9xW,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAAuCsxQ,GAAI/3T,MAAUm8T,cAAe,IACvQp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BywK,GAAqBp4d,UAAW,kBAAc,GAtDhBo4d,IAAT,GA2DxB,SACI34e,cACIE,KAAK62X,WAAY,EAMrB30U,iBACIliD,KAAK62X,WAAY,EAOrBC,qBACI,OAAO92X,KAAK62X,WAOpB,MAEMsqP,GAA2BC,KAAW,CACxC52mB,SAAS,EACT20X,YAAa,CAAEpzX,WAAYq1mB,GAAQ,OAAS,QAASp1mB,SAAU,UAC/DizX,WAAY,CAAElzX,WAAYq1mB,GAAQ,OAAS,QAASp1mB,SAAU,SAKlE,IAAIqoe,GAAgB,UAASA,GAAN,MACnBv0e,YAAYmzX,GAAc7sN,GAAci7c,GAAgB3mP,GAAmBhmX,GAAS4vT,GAAKsnD,GAAM1mN,IAC3FllK,KAAKizX,aAAeA,GACpBjzX,KAAKomK,aAAeA,GACpBpmK,KAAKqhnB,eAAiBA,GACtBrhnB,KAAK06X,kBAAoBA,GACzB16X,KAAK0U,QAAUA,GACf1U,KAAKskU,IAAMA,GACXtkU,KAAK4rX,KAAOA,GACZ5rX,KAAKklK,SAAWA,GAIhBllK,KAAKkxJ,UAAW,EAIhBlxJ,KAAK+2X,SAAW,EAIhB/2X,KAAK+nB,KAAO,IAAInjB,MAIhB5E,KAAKgrB,MAAQ,IAAIpmB,MACjB5E,KAAKk2Y,aAAc,EACnBl2Y,KAAKshnB,iCAAmC,IAAI9mlB,KAC5Cx6B,KAAKipC,cAAgB,IAAIi7Y,SACzBv/G,KAAgBV,IAChBjkU,KAAKiM,UAAYgnX,GAAavuD,IAAM,MAAQ,MAK5CohI,cAAUnic,IACV3D,KAAKkxJ,SAAWvtJ,GAEhBmic,gBACA,OAAO9lc,KAAKkxJ,SASZitO,kBAAc9iX,IACdrb,KAAK+6X,eAAiBl1X,OAAOw0D,OAAO,GAAI8mjB,GAAwBnhnB,KAAKizX,aAAavuD,KAAMrpT,IAExF8iX,oBACA,OAAOn+X,KAAK+6X,gBAAkBomP,GAAwBnhnB,KAAKizX,aAAavuD,KAKxEgvD,aAASA,IACT1zX,KAAK+2X,SAAWrD,GAEhBA,eACA,OAAO1zX,KAAK+2X,SAEZnuD,eACA,MAAQA,aAAa5oU,KAAKm+X,cAC1B,GAAKv1D,IAAyB,SAAbA,GAGjB,MAAoB,cAAbA,GAA2B5oU,KAAKy9J,UAAYmrK,GAEnD74R,cAAUhoB,IACV,GAAI/nB,KAAK+vC,YAAchoB,GACnB,OAEJ,MAAM0uC,GAAY,IAAI6hU,GACtBnuS,GACInqF,KAAK+nB,KAAKlgB,KAAK4uD,IAGfz2D,KAAKgrB,MAAMnjB,KAAK4uD,KAEhBA,GAAUqgU,sBAGd92X,KAAK8oP,OAAO/gO,IAEZgoB,gBACA,OAAO/vC,KAAK46X,MAKhBpzU,QAAQw+Y,IACJhmc,KAAK06X,kBAAkBgmP,kBACvB1gnB,KAAK06X,kBAAkB2sO,WAAWrhK,IAElChmc,KAAK0U,QAAQxG,cAAc2rG,aAAa,WAAY,MAKxDowa,WAAWt8gB,IAhdC,EAACyX,GAAMgoZ,MACnB,KAAOhoZ,KAASgoZ,GAAUhoZ,KACtBA,GAAOA,GAAKqoI,WAEhB,OAAOroI,IA8cCi7B,CAAQ1yC,GAAMqqX,cAAgB3wU,IAAOA,KAAOrnD,KAAK0U,QAAQxG,eACzDlO,KAAK0U,QAAQxG,cAAc2rG,aAAa,WAAY,MAGxD75G,KAAK0U,QAAQxG,cAAc2rG,aAAa,WAAY75G,KAAK+2X,SAAShsX,YAElEusX,cACA,MAAO,UAEPiqP,aACA,OAAOvhnB,KAAKiM,UAEZ0je,qBACA,OAAO3ve,KAAKkxJ,SAEhBrgH,kBAESn8B,KADgBA,QAAQxG,cAChB45C,aAAa,aACtB9nD,KAAK0U,QAAQxG,cAAc2rG,aAAa,WAAY,KAExD75G,KAAK4rX,KAAK1xC,kBAAkB,KACxBl6U,KAAKwhnB,uBAAyBxhnB,KAAKklK,SAASrpD,OAAO77G,KAAK0U,QAAQxG,cAAe,UAAY83b,KACvF,OAAQA,GAAG7wE,cACFpxP,eACD/jI,KAAK4rX,KAAKtjU,IAAI,KACV09Y,GAAG9jZ,iBACgB,QAAnBliD,KAAKiM,UAAsBjM,KAAK06X,kBAAkB6lP,UAAUv6K,IAAMhmc,KAAK06X,kBAAkBylP,UAAUn6K,IAEnGhmc,KAAK0U,QAAQxG,cAAc2rG,aAAa,WAAY,QAExD,WACCkqB,gBACD/jI,KAAK4rX,KAAKtjU,IAAI,KACV09Y,GAAG9jZ,iBACgB,QAAnBliD,KAAKiM,UAAsBjM,KAAK06X,kBAAkBylP,UAAUn6K,IAAMhmc,KAAK06X,kBAAkB6lP,UAAUv6K,IAEnGhmc,KAAK0U,QAAQxG,cAAc2rG,aAAa,WAAY,QAExD,WACCkqB,SACD/jI,KAAK4rX,KAAKtjU,IAAI,IAAMtoD,KAAK06X,kBAAkBgmP,mBAC3C,WACC38e,YACD/jI,KAAK4rX,KAAKtjU,IAAI,IAAMtoD,KAAK8oP,QAAO,SAO5C9oP,KAAKkxJ,WACLlxJ,KAAKipC,cAAcuf,OAAIjY,MAAMvwC,KAAKy1mB,aAAa7+N,OAAOpqY,QAAKO,MAAO,IAAM/M,KAAKkxJ,WAAYlxJ,KAAK0/mB,cAAc14mB,SAAStB,UAAU,IAAM1F,KAAKmhD,aAE1InhD,KAAK4rX,KAAK1xC,kBAAkB,IAAMhoU,WAAW,IAAMlS,KAAKmhD,aACxDnhD,KAAK06X,kBAAkBmmP,eAAiB7gnB,KAAK6gnB,gBAEjD7gnB,KAAK06X,kBAAkBmlP,iBAAiB7/mB,KAAK0/mB,cAAclxhB,WAC3DxuF,KAAKipC,cAAcuf,IAAIxoD,KAAK0/mB,cAAc14mB,QAAQtB,UAAWo6mB,IAAQ9/mB,KAAK06X,kBAAkBmlP,iBAAiBC,GAAItxhB,aAErHnpF,WACIrF,KAAKipC,cAAcuf,IAAIxoD,KAAKizX,aAAajsX,QAAQtB,UAAU,EAAGg/T,UAAW1kU,KAAKiM,UAAYy4T,GAAM,MAAQ,WACpGgxD,SACA11X,KAAK4rX,KAAK1xC,kBAAkB,IAAMl6U,KAAKipC,cAAcuf,OAAI24K,MAAUx/M,SAAU,SACxEnV,MAAKO,QAAO,MAAQ/M,KAAK8vC,WAAW/iC,QAAQi5b,KAAQhmc,KAAK8vC,SAAS1hC,MAAMgT,SAASq8I,UAAUvvJ,cAAcC,SAAS63b,GAAGt9b,UAAUqE,QAAQi5b,KAAQhmc,KAAK6gnB,eAAe3ymB,cAAcC,SAAS63b,GAAGt9b,UAC7LhD,UAAU,KACX1F,KAAK4rX,KAAKtjU,IAAI,KACVtoD,KAAK+vC,WAAY,QAKjChpC,YAAYC,IACJA,GAAQ+vX,UAER/2X,KAAK0U,QAAQxG,cAAc2rG,aAAa,WAAY7yG,GAAQ+vX,SAASvvX,aAAauD,YAG1FpE,cACQ3G,KAAK8vC,UACL9vC,KAAK8vC,SAAS9kB,QAEdhrB,KAAKwhnB,wBACLxhnB,KAAKwhnB,yBAETxhnB,KAAKshnB,iCAAiCj2mB,OACtCrL,KAAKipC,cAAcniC,cAKnB62mB,qBACA,OAAO39mB,KAAKizX,aAAap0W,IAAI,kBAKjC2+lB,gBAAgB1qmB,IACZ9S,KAAK06X,kBAAkBjvT,MAAM34D,IAC7B9S,KAAK0U,QAAQxG,cAAc2rG,aAAa,WAAY,MAKxDkvI,YACI/oP,KAAK+vC,WAAa/vC,KAAK+vC,UACvB/vC,KAAK06X,kBAAkBjvT,MAAM,CAAErI,aAASj+D,EAAWwI,WAAOxI,IAK9D2jP,OAAO/4M,IACH/vC,KAAK46X,WAAsBz1X,IAAd4qC,GAA0BA,IAAa/vC,KAAK+vC,UACrD/vC,KAAK8vC,WACL9vC,KAAK8vC,SAAS9kB,QACdhrB,KAAK8vC,SAAW,MAEhB9vC,KAAK+vC,YACL/vC,KAAK8vC,SAAW9vC,KAAKomK,aAAar+I,KAAK,CACnC9Z,OAAQjO,KAAK6gnB,eACb1hP,YAAan/X,KAAKm+X,cAAcgB,YAChCF,WAAYj/X,KAAKm+X,cAAcc,WAC/BrgX,QAAS5e,KAAKw/X,cACd52D,SAAU5oU,KAAK4oU,SACfp+T,QAASxK,KAAKm+X,cAAc3zX,QAC5B4yD,WAAYp9D,KAAKm+X,cAAc/gU,WAC/BwyU,aAAc,aAElB5vY,KAAKyhnB,4BACLzhnB,KAAK8vC,SAASC,UAAUrqC,UAAU1F,KAAK0hnB,YAAY77lB,KAAK7lB,OACxDA,KAAK8vC,SAASm1a,WAAWv/c,UAAU1F,KAAK2hnB,aAAa97lB,KAAK7lB,QAMlEmhD,WACI,MAAIu0U,QAAuB,CACvB,MAAMqyD,GArmBlB,YAAoBrza,IAChB,IAAIgC,GAAQhC,GAAQ6wJ,YAChBp7J,GAAQ06B,iBAAiBnwB,IAC7BgC,WAASiuB,WAAWx6B,GAAM8L,cAAgB,EAAI0uB,WAAWx6B,GAAMy3mB,kBAAoB,IAC1Ej9kB,WAAWx6B,GAAMgM,eAAiB,EAAIwuB,WAAWx6B,GAAM03mB,mBAAqB,GAimBtDzsmB,CAAWpV,KAAK0U,QAAQxG,eAAiBlO,KAAK8hnB,oBACrE9hnB,KAAKuqZ,OAAOw9B,GAAgB/nb,KAAK+hnB,eACjC/hnB,KAAKginB,QAAQj6L,GAAgB/nb,KAAK+hnB,eAEtC/hnB,KAAKskU,IAAIpvH,gBACTl1M,KAAKy1mB,aAAa/rN,aAKtBg4N,cACI1hnB,KAAK4rX,KAAK1xC,kBAAkB,KACxBl6U,KAAKiinB,wBAA0BjinB,KAAKklK,SAASrpD,OAAO77G,KAAK8vC,SAASovV,aAAc,UAAY8mE,KACxF,OAAQA,GAAG7wE,cACFpxP,aACD/jI,KAAK4rX,KAAKtjU,IAAI,KACV09Y,GAAG9jZ,iBACHliD,KAAK06X,kBAAkB6lP,UAAUv6K,MAErC,WACCjiU,eACD/jI,KAAK4rX,KAAKtjU,IAAI,KACV09Y,GAAG9jZ,iBACHliD,KAAK06X,kBAAkBylP,UAAUn6K,MAErC,WACCjiU,YACD/jI,KAAK4rX,KAAKtjU,IAAI,IAAMtoD,KAAK8oP,QAAO,IAChC,WACC/kH,SACD/jI,KAAK4rX,KAAKtjU,IAAI,KACVtoD,KAAK8oP,QAAO,GACZ9oP,KAAK06X,kBAAkBgmP,yBAQ3C1gnB,KAAKshnB,iCAAiCj2mB,OACtCrL,KAAK06X,kBAAkBulP,mBACvBjgnB,KAAK06X,kBAAkBmlP,iBAAiB7/mB,KAAKkinB,sBAAsB1zhB,WACnExuF,KAAKkinB,sBAAsBl7mB,QACtBwF,QAAK05b,MAAUlmc,KAAKshnB,mCACpB57mB,UAAWo6mB,IAAQ9/mB,KAAK06X,kBAAkBmlP,iBAAiBC,GAAItxhB,YAKxEmzhB,eACI3hnB,KAAKshnB,iCAAiCj2mB,OACtCrL,KAAK06X,kBAAkBmlP,iBAAiB7/mB,KAAK0/mB,cAAclxhB,WAC3DxuF,KAAK0/mB,cAAc14mB,QACdwF,MAAK05b,QAAUlmc,KAAKshnB,mCACpB57mB,UAAWo6mB,IAAQ9/mB,KAAK06X,kBAAkBmlP,iBAAiBC,GAAItxhB,YACpExuF,KAAK06X,kBAAkBqlP,qBACnB//mB,KAAKiinB,yBACLjinB,KAAKiinB,0BAGTvE,oBACA,OAAO19mB,KAAK89mB,SAAS/wmB,OAAOqhC,IAAKA,GAAEwqc,WAAaxqc,GAAEuxgB,YAAY55iB,OAAS,EAAI,UAAY,SAEvF2gd,iBACA,OAAK1md,KAAKm+X,eAAkBn+X,KAAKm+X,cAAcznX,MAGxCS,MAAMnX,KAAKm+X,cAAcznX,OAAS1W,KAAKm+X,cAAcznX,MAAS,GAAE1W,KAAKm+X,cAAcznX,UA9TxE,QAgUlBssc,kBACA,GAAKhjd,KAAKm+X,eAAkBn+X,KAAKm+X,cAAc5zX,OAG/C,OAAO4M,MAAMnX,KAAKm+X,cAAc5zX,QAAUvK,KAAKm+X,cAAc5zX,OAAU,GAAEvK,KAAKm+X,cAAc5zX,WAE5Fu3mB,0BACA,OAAK9hnB,KAAKkxJ,UAGLlxJ,KAAKminB,4BACNninB,KAAKminB,0BAA4B5gR,GAAWvhW,KAAK6gnB,eAAe3ymB,gBAE7DlO,KAAKminB,2BALD,EAOXJ,oBACA,MAAMrrmB,GAAQ1W,KAAK0/mB,cAAc1lmB,OAAO,CAACm3c,GAAYxyK,KAASA,GAAKjoS,MAAQy6c,GAAY,GACvF,OAAOjkd,KAAKqB,KAAKmI,IAEjB0rmB,mBACA,OAAOpinB,KAAK89mB,SAAS/wmB,OAAQ4xS,KACC,IAAnBA,GAAKi6L,WAGhBypI,oBACA,OAAOrinB,KAAK89mB,SAAS/wmB,OAAQ4xS,KACC,IAAnBA,GAAKi6L,WAGpBruF,OAAOw9B,GAAgBg6L,IACnB,IAAIrrmB,GACJ,GAAIqxa,GAAiBg6L,GACjB,QAASpzmB,GAAI3O,KAAKoinB,aAAar8mB,OAAS,EAAG4I,IAAK,KACxCo5a,GAAiBg6L,IAD0BpzmB,KAK3C+H,GAAQ1W,KAAKsinB,sBACbP,IAAiBrrmB,GAKjCsrmB,QAAQj6L,GAAgBg6L,IACpB,IAAIrrmB,GACJ,GAAIqxa,GAAiBg6L,GACjB,QAASpzmB,GAAI3O,KAAKqinB,cAAct8mB,OAAS,EAAG4I,IAAK,IAC7C+H,GAAQ1W,KAAKuinB,oBAAoBx6L,GAAgBg6L,IAC7CrrmB,IAF4C/H,KAG5CozmB,IAAiBrrmB,GAQjC4rmB,sBACI,MAAM3jU,GAAO3+S,KAAKoinB,aAAapinB,KAAKoinB,aAAar8mB,OAAS,GAIpD2Q,GAAQ8rmB,KAHe9C,cAAcn5mB,KAAMsqD,IACtCA,GAAE8tP,OAASA,IAEQjoS,MAC9BioS,UAAKi6L,WAAY,EACjB54e,KAAKqhnB,eAAertjB,QAAQ2qP,IACrBjoS,GAEX6rmB,oBAAoBx6L,GAAgBg6L,IAChC,MAAMpjU,GAAO3+S,KAAKqinB,cAAc,GAC1BG,GAAkBxinB,KAAK0/mB,cAAcn5mB,KAAKsqD,IAAKA,GAAE8tP,OAASA,IAChEA,UAAKi6L,WAAY,EACjBj6L,GAAKz8E,WAAa,SAClBliO,KAAKqhnB,eAAertjB,QAAQ2qP,IAC5Bx0N,GAAqB43hB,GAAgBS,GAAgB9rmB,OACjDioS,GAAKz8E,WAAa,UAClBliO,KAAKqhnB,eAAertjB,QAAQ2qP,MAG5BA,GAAKi6L,WAAY,EACjB54e,KAAKqhnB,eAAertjB,QAAQ2qP,KAEzB6jU,GAAgB9rmB,MAE3B+qmB,4BACI,MAAMgB,GAAwBzinB,KAAK8vC,SAAS1hC,MAAMgT,SAASo0lB,iBAAiBtnmB,cAC5Eu0mB,GAAsBt4mB,MAAMuM,MAAQ1W,KAAK0md,WACzC+7J,GAAsBt4mB,MAAMI,OAASvK,KAAKgjd,YAC1Cy/J,GAAsBt4mB,MAAM+mJ,SAAW,SAG/CmjV,UAAiBjuK,UAAO,SAAkCh4R,IAAK,OAAO,IAAKA,IAAKimc,IAAkB5wK,MAAyB4C,MAA6B5C,MAAyB6C,MAAsB7C,MAAyBi7S,IAAiBj7S,MAAyB05D,IAAoB15D,MAAyBA,OAAoBA,MAAyBA,OAA2BA,MAAyBA,OAAgBA,MAAyBA,SACjc4wK,GAAiB9tK,UAAqB9C,MAAyB,CAAE37T,KAAMuse,GAAkBxwe,UAAW,CAAC,CAAC,kBAAmB20X,eAAgB,SAAyCh1D,GAAI/3T,GAAKgtX,IAErL,GAF0M,EAALj1D,IACnMC,MAAsBg1D,GAAUggH,GAAsB,GAC/C,EAALj1K,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIqymB,SAAWpzf,MACnE87M,UAAW,SAAgChD,GAAI/3T,IAOlD,GAPkE,EAAL+3T,KAC3DC,KAAmBF,GAAK,GACxBE,KAAmBwtD,GAAK,GACxBxtD,KAAmBytD,GAAK,GACxBztD,KAAmBO,GAAK,EAAGyC,OAC3BhD,KAAmBsuD,GAAK,GACxBtuD,KAAmBuuD,GAAK,IACjB,EAALxuD,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIo1mB,eAAiBn2f,GAAGxjH,OAC7Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+zX,cAAgB90Q,GAAGxjH,OAC5Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIgqmB,aAAe/qf,GAAGxjH,OAC3Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIgyJ,UAAY/yC,GAAGxjH,OACxEu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIi0mB,cAAgBh1f,IACzE+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIy2mB,sBAAwBx3f,MAChFg8M,SAAU,EAAGC,aAAc,SAAuCnD,GAAI/3T,IAAgB,EAAL+3T,IAClFC,MAAkB,QAAS,SAAmD97T,IAAU,OAAO8D,GAAI+7C,QAAQ7/C,KAA3G87T,CAAuH,WAAY,SAAsD97T,IAAU,OAAO8D,GAAIw+gB,WAAWtihB,MAClN,EAAL67T,KACFC,MAAmB,OAAQh4T,GAAI6rX,QAA/B7zD,CAAwC,MAAOh4T,GAAI81mB,QACnD99S,MAAmB,WAAYh4T,GAAIyqY,YAAnCzyE,CAAgD,YAAah4T,GAAIyqY,YAAjEzyE,CAA8E,sBAAuBh4T,GAAIkke,kBACxG/oK,OAAQ,CAAE11K,SAAU,WAAY6lO,SAAU,WAAY+uE,UAAW,YAAa3nE,cAAe,gBAAiBzK,SAAU,YAAc6C,QAAS,CAAExuW,KAAM,OAAQiD,MAAO,SAAWwrW,SAAU,CAAC,gBAAiBrqW,SAAU,CAACs3S,MAA0B,CAC/Oi7S,GACAvhP,GACAr2D,KACA,CACIjuR,QAASkuR,KACTC,SAAU,mBAEdvD,OAA8B51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,WAAc,IAAIyvG,GAS/EA,UAASvvG,gLACJ,CAAC,CAAC,gCAAiC,GAAI,iBAAkBuvG,IAAS,CAAC,EAAG,QAAS,WAAY,CAAC,OAAQ,SAAU,WAAY,KAAM,QAAS,6BAA8B,EAAG,QAAS,aAAc,QAAS,EAAG,QAAS,CAAC,gBAAiB,IAAK,CAAC,YAAa,IAAK,CAAC,EAAG,YAAa,EAAG,QAAS,CAAC,EAAG,WAAY,YAAa,OAAQ,iBAAkB,CAAC,kBAAmB,IAAK,CAAC,OAAQ,SAAU,WAAY,KAAM,EAAG,oBAAqB,WAAY,EAAG,QAAS,SAAU,CAAC,iBAAkB,IAAK,CAAC,EAAG,SAAU,qBAAsB,CAAC,EAAG,uBAAwB,mBAAoB,WAAY,CAAC,EAAG,UAAW,CAAC,mBAAoB,IAAK,CAAC,EAAG,aAAc,CAAC,eAAgB,MAASzkX,SAAU,SAAmCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC1tBC,MAA0B,EAAG,GAC7BA,MAAkB,EAAGi/S,GAA0C,EAAG,EAAG,eAAgB,GACrFj/S,MAAkB,EAAGk/S,GAAoC,EAAG,EAAG,SAAU,GACzEl/S,MAAkB,EAAGm/S,GAAyC,EAAG,EAAG,cAAe,KAAM,EAAGn/S,OAC5FA,MAA0B,EAAG,KAAM,GACnCA,MAAkB,EAAGo/S,GAAiD,EAAG,EAAG,sBAAuB,IAC5F,EAALr/S,KACFC,MAAiB,GACjBA,MAAkB,UAAWh4T,GAAIqymB,UACjCr6S,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIylJ,UAC9BuyK,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIylJ,YAC7Bu2K,WAAY,WAAc,MAAO,CAACq7S,GAAmCn7S,MAAgBo7S,GAA0Bp7S,MAAa4xE,OAAkC3xE,cAAe,IACtLp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BqsK,GAAiBh0d,UAAW,gBAAY,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClCqsK,GAAiBh0d,UAAW,YAAa,MAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,QAC1BiiU,EAAW,oBAAqB,CAACjiU,UAClCwue,GAAiBh0d,UAAW,gBAAiB,MAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3B+lb,GAAiBh0d,UAAW,gBAAY,GAC3CmuB,EAAW,EACP0/I,SAAM,YACN45I,EAAW,cAAex5Q,QAC1Bw5Q,EAAW,oBAAqB,CAACx5Q,UAClC+lb,GAAiBh0d,UAAW,WAAY,MAC3CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3Byve,GAAiBh0d,UAAW,YAAQ,GACvCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3Byve,GAAiBh0d,UAAW,aAAS,GACxCmuB,EAAW,EACPmqV,SAAgB8/G,IAChB3wK,EAAW,cAAe8wD,QAC3By7G,GAAiBh0d,UAAW,gBAAY,GAC3CmuB,EAAW,EACPq5R,SAAU,iBAAkB,CAAExmT,QAAQ,IACtCymT,EAAW,cAAej5T,QAC3Bwle,GAAiBh0d,UAAW,sBAAkB,GACjDmuB,EAAW,EACPq5R,SAAU,gBAAiB,CAAExmT,QAAQ,IACrCymT,EAAW,cAAeC,QAC3BssK,GAAiBh0d,UAAW,qBAAiB,GAChDmuB,EAAW,EACPq5R,SAAU,eAAgB,CAAExmT,QAAQ,IACpCymT,EAAW,cAAeijF,OAC3BspF,GAAiBh0d,UAAW,oBAAgB,GAC/CmuB,EAAW,EACPq5R,SAAU,YAAa,CAAE34M,KAAMu3M,MAAkBplT,QAAQ,IACzDymT,EAAW,cAAerB,QAC3B4tK,GAAiBh0d,UAAW,iBAAa,GAC5CmuB,EAAW,EACP6jW,QAAa,mBACbvqE,EAAW,cAAe8wD,QAC3By7G,GAAiBh0d,UAAW,qBAAiB,GAChDmuB,EAAW,EACP6jW,QAAa,oBACbvqE,EAAW,cAAe8wD,QAC3By7G,GAAiBh0d,UAAW,6BAAyB,GACxDmuB,EAAW,EACPy5R,SAAY,mBACZA,SAAY,mBACZH,EAAW,cAAeE,UAC3BqsK,GAAiBh0d,UAAW,mBAAe,GAC9CmuB,EAAW,IACPioV,OAAa,QAAS,CAAC,WACvB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjCusK,GAAiBh0d,UAAW,UAAW,MAC1CmuB,EAAW,IACPioV,OAAa,WAAY,CAAC,WAC1B3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjCusK,GAAiBh0d,UAAW,aAAc,MAC7CmuB,EAAW,EACPy5R,SAAY,aACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCusK,GAAiBh0d,UAAW,UAAW,MAC1CmuB,EAAW,IACPy5R,OAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCusK,GAAiBh0d,UAAW,SAAU,MACzCmuB,EAAW,EACPy5R,SAAY,6BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCusK,GAAiBh0d,UAAW,iBAAkB,MACjDg0d,GAAmB7lc,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,KACzDm5D,KACAy+O,GACAvhP,GACAtuX,MACAq5T,MACA6jD,MACA5jD,SACLksK,IA9iB0BA,IAAT,GAgjBpB,IAAI2uI,GAIJ,IAAI7mI,GAAyB6mI,GAA2B,cAAqCvqI,GACzF34e,cACI0f,QAKAxf,KAAK07e,SAAW,OAIhB17e,KAAK27e,SAAW,OAMhB37e,KAAKg7K,YAAa,EAKlBh7K,KAAKixL,SAAU,EAUfjxL,KAAK+yX,KAAO,UAIZ/yX,KAAK+tC,UAAW,EAIhB/tC,KAAKyrE,MAAQ,IAAI7mE,MAIjB5E,KAAK87e,YAAc,IAAIl3e,MAKvB5E,KAAKy7U,eAAiB,IAAI72U,MAC1B5E,KAAK47e,eAAiB,CAClB9we,KAAM,GACNgF,KAAM,GACNs+D,UAAW,GACXJ,SAAU,IAEdhuE,KAAK+9mB,gBAAkB,CACnBjzmB,KAAM,GACNgF,KAAM,GACNs+D,UAAW,GACXJ,SAAU,IAMdljE,SAAKA,IACL9K,KAAK47e,eAAe9we,KAAOy0mB,GAAoBz0mB,GAAM9K,KAAK07e,UAAU,GACpE17e,KAAK+9mB,gBAAgBjzmB,KAAOy0mB,GAAoBz0mB,GAAM9K,KAAK07e,UAAU,GAKrEloH,gBACA,OAAOxzX,KAAKg7K,WAEZw4M,cAAU7vX,IACV3D,KAAKg7K,WAAar3K,GAOlBmM,SAAKA,IACL9P,KAAK47e,eAAe9re,KAAOyvmB,GAAoBzvmB,GAAM9P,KAAK27e,UAAU,GACpE37e,KAAK+9mB,gBAAgBjumB,KAAOyvmB,GAAoBzvmB,GAAM9P,KAAK27e,UAAU,GAMrEvta,cAAUA,IACVpuE,KAAK47e,eAAexta,UAAYmxiB,GAAoBnxiB,GAAWpuE,KAAK27e,UAAU,GAC9E37e,KAAK+9mB,gBAAgB3viB,UAAYmxiB,GAAoBnxiB,GAAWpuE,KAAK27e,UAAU,GAM/E3ta,aAASA,IACThuE,KAAK47e,eAAe5ta,SAAWuxiB,GAAoBvxiB,GAAUhuE,KAAK27e,UAAU,GAC5E37e,KAAK+9mB,gBAAgB/viB,SAAWuxiB,GAAoBvxiB,GAAUhuE,KAAK27e,UAAU,GAKjFj0b,SACI1nD,KAAK66e,YAAYnnH,UAAW,EAKhColH,WACI,OAAQ94e,KAAKqI,SAKjBglU,MAAM24H,MAEGA,IAAkB,UAAZA,GAAGl+b,MAAgC,YAAZk+b,GAAGl+b,OACjC9H,KAAK66e,YAAYxtK,QAErBrtU,KAAK66e,YAAYnnH,SAAW,EAKhCslH,YACI,YAAK6B,YAAYnnH,UAAW,GACrB,EAEXmnH,YACI,OAAQ76e,KAAK44e,UAAY54e,KAAKijnB,sBAAwBjjnB,KAAKkjnB,sBAAsBh1mB,gBAmHzF,IAAIi1mB,GAhHJhnI,GAAuB/1K,UAAO,SAAwCh4R,IAAK,OAAO,IAAKA,IAAK+tc,KAC5FA,GAAuB51K,UAAqB9C,MAAyB,CAAE37T,KAAMq0e,GAAwBt4e,UAAW,CAAC,CAAC,yBAA0B2iU,UAAW,SAAsChD,GAAI/3T,IAK3L,GAL2M,EAAL+3T,KACpMC,KAAmBgrI,GAAK,GACxBhrI,KAAmBwtD,GAAK,GACxBxtD,KAAmB2sI,GAAK,EAAGvhc,OAC3B40T,KAAmBF,GAAK,EAAG10T,QACpB,EAAL20T,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIwte,gBAAkBvuX,GAAGxjH,OAC9Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+zX,cAAgB90Q,GAAGxjH,OAC5Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIy3mB,qBAAuBx4f,GAAGxjH,OACnFu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIw3mB,sBAAwBv4f,GAAGxjH,SACnF0/T,OAAQ,CAAE80K,SAAU,WAAYC,SAAU,WAAY3gU,WAAY,aAAciW,QAAS,UAAW8hM,KAAM,OAAQhlV,SAAU,WAAYjjC,KAAM,OAAQ0oX,UAAW,YAAa1jX,KAAM,OAAQs+D,UAAW,YAAaJ,SAAU,WAAY7jE,MAAO,QAASizC,UAAW,YAAawP,MAAO,QAASvkD,SAAU,YAAckuX,QAAS,CAAE9qT,MAAO,QAASqwa,YAAa,cAAergK,eAAgB,kBAAoB+6C,SAAU,CAAC,sBAAuBrqW,SAAU,CAACs3S,MAA0B,CAAC,CAAE5qR,QAAS4/b,GAAsB3/b,aAAa/nC,SAAW,IAAMiymB,OAA+Bv/S,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,IAAK,CAAC,gBAAiB,IAAK,CAAC,OAAQ,SAAU,cAAe,GAAI,EAAG,WAAY,UAAW,UAAW,WAAY,aAAc,UAAW,WAAY,OAAQ,YAAa,WAAY,OAAQ,QAAS,cAAe,iBAAkB,QAAS,CAAC,gBAAiB,IAAK,CAAC,WAAY,KAAM,OAAQ,SAAU,cAAe,GAAI,EAAG,oBAAqB,EAAG,UAAW,UAAW,WAAY,aAAc,UAAW,WAAY,OAAQ,YAAa,WAAY,OAAQ,QAAS,kBAAmB,CAAC,iBAAkB,KAAMh1Q,SAAU,SAAyCsxQ,GAAI/3T,IAAgB,EAAL+3T,KACrtCC,MAAkB,EAAG2/S,GAA+C,EAAG,GAAI,cAAe,KAAM,EAAG3/S,OACnGA,MAAkB,EAAG4/S,GAA+C,EAAG,GAAI,cAAe,KAAM,EAAG5/S,SAClGgE,WAAY,CAACgyE,MAAwB9xE,MAAgBA,OAAiBC,cAAe,IAC9Fp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3Bmpd,GAAuB97d,UAAW,gBAAY,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3Bmpd,GAAuB97d,UAAW,gBAAY,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCmpd,GAAuB97d,UAAW,OAAQ,MAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3Bs2e,GAAuB97d,UAAW,aAAS,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3Bs2e,GAAuB97d,UAAW,iBAAa,GAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3Bmpd,GAAuB97d,UAAW,aAAS,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3Bm0K,GAAuB97d,UAAW,gBAAY,GACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3Bm0K,GAAuB97d,UAAW,kBAAc,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClCm0K,GAAuB97d,UAAW,YAAa,MAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3Bm0K,GAAuB97d,UAAW,eAAW,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3Bmpd,GAAuB97d,UAAW,YAAQ,GAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3Bm0K,GAAuB97d,UAAW,gBAAY,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCmpd,GAAuB97d,UAAW,OAAQ,MAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCmpd,GAAuB97d,UAAW,YAAa,MAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCmpd,GAAuB97d,UAAW,WAAY,MACjDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3Bu3e,GAAuB97d,UAAW,aAAS,GAC9CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3Bu3e,GAAuB97d,UAAW,mBAAe,GACpDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3Bu3e,GAAuB97d,UAAW,sBAAkB,GACvDmuB,EAAW,EACPq5R,SAAU,kBAAmB,CAAExmT,QAAQ,IACvCymT,EAAW,cAAeC,QAC3Bo0K,GAAuB97d,UAAW,uBAAmB,GACxDmuB,EAAW,EACPq5R,SAAU,gBAAiB,CAAExmT,QAAQ,IACrCymT,EAAW,cAAeC,QAC3Bo0K,GAAuB97d,UAAW,qBAAiB,GACtDmuB,EAAW,EACPq5R,SAAU,gBAAiB,CAAE34M,KAAMrgH,MAAYwS,QAAQ,IACvDymT,EAAW,cAAej5T,QAC3Bste,GAAuB97d,UAAW,4BAAwB,GAC7DmuB,EAAW,EACPq5R,SAAU,iBAAkB,CAAE34M,KAAMrgH,MAAYwS,QAAQ,IACxDymT,EAAW,cAAej5T,QAC3Bste,GAAuB97d,UAAW,6BAAyB,GAC9D87d,GAAyB6mI,GAA2Bx0kB,EAAW,CAAEs5R,EAAW,oBAAqB,KAC9Fq0K,IAMH,IAAImnI,GAA8BH,GAAgC,cAA0C1qI,GACxG34e,YAAYmzX,IACRzzW,QACAxf,KAAKizX,aAAeA,GAIpBjzX,KAAK8/D,UAAY,WAUjB9/D,KAAK+yX,KAAO,UACZ/yX,KAAK63X,cAAe,EACpB73X,KAAKq/mB,WAAaA,GAAWr/mB,KAAKizX,aAAavuD,KAC/C1kU,KAAKs/mB,WAAaA,GAAWt/mB,KAAKizX,aAAavuD,KAE/C6+S,qBACA,OAAOvjnB,KAAKwjnB,iBACPxyb,QAAQjkL,OAAOmlB,KAAMA,GAAEghW,YACvBvtX,IAAIusB,IAAKA,GAAExd,SAKpB8yC,UAEIxnD,KAAK63X,aAAe,EAKxB6kF,WAAW1W,IACPA,GAAG9jZ,iBAKP+7jB,sBAAsB/zmB,GAAO2oX,IACzBA,GAAO9kV,SAAW7jC,GAClB2oX,GAAOp3C,eAAe5zU,KAAKqC,IAK/B20X,cAAcmnE,IACVhmc,KAAK63X,aAAe73X,KAAKujnB,eAAez1kB,UAAUopH,IAAMA,KAAO8uS,GAAGt9b,QAAUwuJ,GAAG/oJ,SAAS63b,GAAGt9b,SAC3F1I,KAAK+8X,YAAY/8X,KAAK63X,aAAcmuE,IAKxC8yC,WACI,QAAS94e,KAAKqI,UAA2C,IAA/BrI,KAAKujnB,eAAex9mB,QAKlDsnU,MAAM24H,GAAK,IACP,MAAMy9K,GAAUzjnB,KAAKq/mB,WAAWr/mB,KAAK44e,WAC/B8qI,GAAU1jnB,KAAKs/mB,WAAWt/mB,KAAK44e,WACrC54e,KAAK63X,aAAeknP,GAAkB2E,GAASD,GAASzjnB,KAAKujnB,eAAzCxE,CAAyD/4K,IAC7Ehmc,KAAK+8X,YAAY/8X,KAAK63X,aAAcmuE,IAKxCgzC,UAAUhzC,IACN,MAAMy9K,GAAUzjnB,KAAKq/mB,WAAWr/mB,KAAK44e,WAC/B8qI,GAAU1jnB,KAAKs/mB,WAAWt/mB,KAAK44e,WAC/B+qI,GAAc7E,GAAW9+mB,KAAKujnB,gBAC9BK,GAAexE,GAASp/mB,KAAK63X,cACnC,YAAKA,aAAeqnP,GAAiBwE,GAASD,GAASE,GAAnCzE,CAAgDl/mB,KAAK63X,aAAcmuE,IACvFhmc,KAAK+8X,YAAY/8X,KAAK63X,aAAcmuE,KAC5B49K,GAAa5jnB,KAAK63X,cAE9B2rP,iBACI,OAAOxjnB,KAAK44e,UAAY54e,KAAK6jnB,oBAAsB7jnB,KAAK8jnB,mBAE5D/mP,YAAYn5W,GAAOoib,MAEVA,GAAGl+b,MAAoB,UAAZk+b,GAAGl+b,MAAgC,YAAZk+b,GAAGl+b,OACtC9H,KAAKujnB,eAAe3/lB,IAAOypT,UAIvCi2S,GAA4Bl9S,UAAO,SAA6Ch4R,IAAK,OAAO,IAAKA,IAAKk1kB,IAA6B7/S,MAAyB4C,QAC5Ji9S,GAA4B/8S,UAAqB9C,MAAyB,CAAE37T,KAAMw7mB,GAA6Bz/mB,UAAW,CAAC,CAAC,8BAA+B20X,eAAgB,SAAoDh1D,GAAI/3T,GAAKgtX,IAElO,GAFuP,EAALj1D,IAChPC,MAAsBg1D,GAAU0jH,GAAwB,GACjD,EAAL34K,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI0ymB,iBAAmBzzf,MAC3E87M,UAAW,SAA2ChD,GAAI/3T,IAK7D,GAL6E,EAAL+3T,KACtEC,KAAmBgrI,GAAK,GACxBhrI,KAAmBwtD,GAAK,GACxBxtD,KAAmB8uD,GAAM,GACzB9uD,KAAmB+uD,GAAM,IAClB,EAALhvD,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIwte,gBAAkBvuX,GAAGxjH,OAC9Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+zX,cAAgB90Q,GAAGxjH,OAC5Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIq4mB,mBAAqBp5f,GAAGxjH,OACjFu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIo4mB,oBAAsBn5f,GAAGxjH,SACjF0/T,OAAQ,CAAE9mQ,UAAW,YAAaizT,KAAM,OAAQ1qX,SAAU,WAAYqO,MAAO,SAAW8/W,SAAU,CAAC,2BAA4BrqW,SAAU,CAACs3S,MAA0B,CAACqD,KAAqB,CAAEjuR,QAAS4/b,GAAsB3/b,aAAa/nC,SAAW,IAAMoymB,OAAoC1/S,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,IAAK,CAAC,gBAAiB,IAAK,CAAC,EAAG,WAAY,YAAa,WAAY,OAAQ,QAAS,WAAY,SAAU,CAAC,qBAAsB,IAAK,CAAC,cAAe,GAAI,EAAG,UAAW,UAAW,WAAY,YAAa,UAAW,WAAY,OAAQ,YAAa,WAAY,QAAS,cAAe,iBAAkB,EAAG,QAAS,WAAY,CAAC,cAAe,GAAI,EAAG,UAAW,UAAW,WAAY,YAAa,UAAW,WAAY,OAAQ,YAAa,WAAY,QAAS,cAAe,kBAAmB,CAAC,EAAG,oBAAqB,EAAG,WAAY,YAAa,WAAY,OAAQ,SAAU,CAAC,sBAAuB,IAAK,CAAC,cAAe,GAAI,QAAS,oBAAqB,EAAG,UAAW,UAAW,WAAY,YAAa,UAAW,WAAY,OAAQ,YAAa,WAAY,QAAS,iBAAkB,EAAG,QAAS,WAAY,CAAC,cAAe,GAAI,EAAG,oBAAqB,EAAG,UAAW,UAAW,WAAY,YAAa,UAAW,WAAY,OAAQ,YAAa,WAAY,QAAS,mBAAoBh1Q,SAAU,SAA8CsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC55CC,MAAkB,EAAGsgT,GAAoD,EAAG,EAAG,cAAe,KAAM,EAAGtgT,OACvGA,MAAkB,EAAGugT,GAAoD,EAAG,EAAG,cAAe,KAAM,EAAGvgT,SACtGgE,WAAY,CAACgyE,MAA6B9xE,MAAgB8xE,MAAwB9xE,MAAgBA,OAAiBC,cAAe,IAC3Ip5R,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3Bs7S,GAA4BjjmB,UAAW,gBAAY,GACtDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BswlB,GAA4BjjmB,UAAW,iBAAa,GACvDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BswlB,GAA4BjjmB,UAAW,aAAS,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BswlB,GAA4BjjmB,UAAW,YAAQ,GAClDmuB,EAAW,EACPq5R,SAAU,kBAAmB,CAAExmT,QAAQ,IACvCymT,EAAW,cAAeC,QAC3Bu7S,GAA4BjjmB,UAAW,uBAAmB,GAC7DmuB,EAAW,EACPq5R,SAAU,gBAAiB,CAAExmT,QAAQ,IACrCymT,EAAW,cAAeC,QAC3Bu7S,GAA4BjjmB,UAAW,qBAAiB,GAC3DmuB,EAAW,IACPmqV,UAAgB5nX,OAAW,IAAMore,KACjCr0K,EAAW,cAAe8wD,QAC3B0qP,GAA4BjjmB,UAAW,wBAAoB,GAC9DmuB,EAAW,EACPq5R,SAAU,qBAAsB,CAAExmT,QAAQ,IAC1CymT,EAAW,cAAekvD,QAC3BssP,GAA4BjjmB,UAAW,0BAAsB,GAChEmuB,EAAW,EACPq5R,SAAU,sBAAuB,CAAExmT,QAAQ,IAC3CymT,EAAW,cAAekvD,QAC3BssP,GAA4BjjmB,UAAW,2BAAuB,GACjEijmB,GAA8BH,GAAgC30kB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QACzGw8S,IAKH,IAAIW,GAA0B,UAASA,GAAN,MAI7BnknB,cACIE,KAAKqI,UAAW,EAChBrI,KAAK+yX,KAAO,UACZ/yX,KAAK89X,UAAY,IAAIl5X,MAEzB+mE,QAAQrW,IACJ,GAAIA,GACA,OAAOt1D,KAAKkqD,UAAYoL,GAASt1D,KAAKkqD,WAAaoL,GAASxqD,MAAQwqD,GAI5EhU,QAAQtuC,GAAM4Q,IACV,MAAM0xC,GAAWt1D,KAAK8S,KAAK8Q,IACvB5Q,GAAKy4D,OACLz4D,GAAKy4D,MAAMnW,IAEft1D,KAAK89X,UAAUj2X,KAAKytD,MAG5B2ujB,UAA2B79S,UAAO,SAA4Ch4R,IAAK,OAAO,IAAKA,IAAK61kB,KACpGA,GAA2B19S,UAAqB9C,MAAyB,CAAE37T,KAAMm8mB,GAA4BpgnB,UAAW,CAAC,CAAC,6BAA8B2iU,UAAW,SAA0ChD,GAAI/3T,IAE3M,GAF2N,EAAL+3T,IACpNC,KAAmB4sI,GAAM,GAClB,EAAL7sI,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIulL,QAAUtmE,MAClEk8M,OAAQ,CAAEv+T,SAAU,WAAY0qX,KAAM,OAAQjgX,KAAM,OAAQo3C,UAAW,aAAeqsU,QAAS,CAAEuH,UAAW,aAAejwL,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,SAAU,WAAY,KAAM,cAAe,GAAI,QAAS,qBAAsB,QAAS,oBAAqB,EAAG,WAAY,OAAQ,YAAa,WAAY,OAAQ,QAAS,EAAG,QAAS,WAAY,CAAC,OAAQ,SAAU,WAAY,KAAM,cAAe,GAAI,EAAG,oBAAqB,EAAG,eAAgB,OAAQ,EAAG,WAAY,OAAQ,YAAa,WAAY,OAAQ,SAAU,CAAC,SAAU,KAAMh1Q,SAAU,SAA6CsxQ,GAAI/3T,IAAgB,EAAL+3T,IAC1mBC,MAAkB,EAAGygT,GAA8C,EAAG,EAAG,SAAU,GAC5E,EAAL1gT,IACFC,MAAkB,UAAWh4T,GAAIqH,OAChC20T,WAAY,CAACE,MAAgB8xE,OAAyB7xE,cAAe,IAC9Ep5R,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,QAC3B21mB,GAA2B5jmB,UAAW,YAAQ,GACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BixlB,GAA2B5jmB,UAAW,iBAAa,GACtDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3Bi8S,GAA2B5jmB,UAAW,gBAAY,GACrDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BixlB,GAA2B5jmB,UAAW,YAAQ,GACjDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3Bq/mB,GAA2B5jmB,UAAW,iBAAa,GACtDmuB,EAAW,EACP6jW,QAAa,UACbvqE,EAAW,cAAe8wD,QAC3BqrP,GAA2B5jmB,UAAW,eAAW,GAzDb4jmB,IAAT,GA2D9B,IAAIE,GAIJ,IAAIC,GAAiCD,GAAmC,cAA6C1rI,GACjH34e,cACI0f,QAKAxf,KAAK07e,SAAW,OAIhB17e,KAAK27e,SAAW,OAShB37e,KAAK+yX,KAAO,UAIZ/yX,KAAKixL,SAAU,EAKfjxL,KAAK89X,UAAY,IAAIl5X,MAKrB5E,KAAK+nB,KAAO,IAAInjB,MAKhB5E,KAAKgrB,MAAQ,IAAIpmB,MACjB5E,KAAK47e,eAAiB,CAClB9we,KAAM,GACNgF,KAAM,GACNs+D,UAAW,GACXJ,SAAU,IAEdhuE,KAAK+9mB,gBAAkB,CACnBjzmB,KAAM,GACNgF,KAAM,GACNs+D,UAAW,GACXJ,SAAU,IAEdhuE,KAAK+6X,eAAiB,CAAEvwX,SAAS,EAAM4yD,WAAY,IACnDp9D,KAAK63X,cAAe,EACpB73X,KAAKq/mB,WAAaA,KAClBr/mB,KAAKs/mB,WAAaA,KAMlBx0mB,SAAKA,IACL9K,KAAK47e,eAAe9we,KAAOy0mB,GAAoBz0mB,GAAM9K,KAAK07e,UAAU,GACpE17e,KAAK+9mB,gBAAgBjzmB,KAAOy0mB,GAAoBz0mB,GAAM9K,KAAK07e,UAAU,GAKrE5re,SAAKA,IACL9P,KAAK47e,eAAe9re,KAAOyvmB,GAAoBzvmB,GAAM9P,KAAK27e,UAAU,GACpE37e,KAAK+9mB,gBAAgBjumB,KAAOyvmB,GAAoBzvmB,GAAM9P,KAAK27e,UAAU,GAKrEvta,cAAUA,IACVpuE,KAAK47e,eAAexta,UAAYmxiB,GAAoBnxiB,GAAWpuE,KAAK27e,UAAU,GAC9E37e,KAAK+9mB,gBAAgB3viB,UAAYmxiB,GAAoBnxiB,GAAWpuE,KAAK27e,UAAU,GAK/E3ta,aAASA,IACThuE,KAAK47e,eAAe5ta,SAAWuxiB,GAAoBvxiB,GAAUhuE,KAAK27e,UAAU,GAC5E37e,KAAK+9mB,gBAAgB/viB,SAAWuxiB,GAAoBvxiB,GAAUhuE,KAAK27e,UAAU,GAS7Ex9G,kBAAc9iX,IACdrb,KAAK+6X,eAAiBl1X,OAAOw0D,OAAO,CAAE7vD,SAAS,EAAM4yD,WAAY,IAAM/hD,IAEvE8iX,oBACA,OAAOn+X,KAAK+6X,eAQZjoX,SAAKA,IACL9S,KAAK2sI,MAAQ75H,IAAQ,GAErBA,WACA,OAAK9S,KAAK2sI,QACN3sI,KAAK8S,KAAO,IAET9S,KAAK2sI,MAEZ03e,sBACA,MAAO,IAAIrknB,KAAKsknB,iCAAiCtzb,QAAQxiG,UAAUzhF,OAAOmlB,KAAMA,GAAEhkB,cAAc7F,WAKpGi2mB,kBAAkBt4K,IACdhmc,KAAK63X,aAAe73X,KAAKsknB,iCAAiCtzb,QACrDxiG,UACA1gD,UAAU5b,IAAKA,GAAEhkB,cAAcC,SAAS63b,GAAGt9b,SAKpDowe,WACI,OAAQ94e,KAAKqI,SAKjBglU,MAAM24H,GAAK,IACFhmc,KAAK44e,UAKD54e,KAAKqknB,gBAAgBt+mB,OAAS,IACnC/F,KAAK63X,aAAeknP,GAAkB/+mB,KAAKs/mB,aAAct/mB,KAAKq/mB,aAAcr/mB,KAAKqknB,gBAAgB1+mB,IAAI4+mB,IAAMA,GAAGr2mB,eAA1F6wmB,CAA0G/4K,IAC9Hhmc,KAAK+8X,YAAY/8X,KAAK63X,aAAcmuE,MANpB,UAAZA,GAAGl+b,MAAgC,YAAZk+b,GAAGl+b,OAC1B9H,KAAKwknB,sBAAsBn3S,QAWvC2rK,UAAUhzC,IACN,IAAKhmc,KAAK44e,YAAc5yC,GAAG7wE,UAAYn1X,KAAKs/mB,WAAWt/mB,KAAK44e,YAAc5yC,GAAG7wE,UAAYn1X,KAAKq/mB,WAAWr/mB,KAAK44e,YAC1G,OAAO,EAEX,GAAI54e,KAAK44e,UAAW,CAChB,MAAM+qI,GAAc7E,GAAW9+mB,KAAKqknB,iBAC9BT,GAAexE,GAASp/mB,KAAK63X,cACnC,YAAKA,aAAeqnP,GAAiBl/mB,KAAKs/mB,aAAct/mB,KAAKq/mB,aAAcsE,GAAvDzE,CAAoEl/mB,KAAK63X,aAAcmuE,IAC3Ghmc,KAAK+8X,YAAY/8X,KAAK63X,aAAcmuE,KAC5B49K,GAAa5jnB,KAAK63X,eAGlCkF,YAAYn5W,GAAOoib,MACVA,GAAGl+b,MAAoB,UAAZk+b,GAAGl+b,MAAgC,YAAZk+b,GAAGl+b,OACtC9H,KAAKqknB,gBAAgBzgmB,IAAO1V,cAAcm/T,UAyHtD,IAAIo3S,GArHJL,GAA+Bh+S,UAAO,SAAgDh4R,IAAK,OAAO,IAAKA,IAAKg2kB,KAC5GA,GAA+B79S,UAAqB9C,MAAyB,CAAE37T,KAAMs8mB,GAAgCvgnB,UAAW,CAAC,CAAC,iCAAkC2iU,UAAW,SAA8ChD,GAAI/3T,IAO3N,GAP2O,EAAL+3T,KACpOC,KAAmBgrI,GAAK,GACxBhrI,KAAmBwtD,GAAK,GACxBxtD,KAAmB6sI,GAAM,EAAGzhc,OAC5B40T,KAAmBg9D,MAAyB,GAC5Ch9D,KAAmB62P,GAAM,GACzB72P,KAAmB82P,GAAM,IAClB,EAAL/2P,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIwte,gBAAkBvuX,GAAGxjH,OAC9Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+zX,cAAgB90Q,GAAGxjH,OAC5Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIi5mB,eAAiBh6f,GAAGxjH,OAC7Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIk5mB,wBAA0Bj6f,GAAGxjH,OACtFu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+4mB,sBAAwB95f,GAAGxjH,OACpFu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI64mB,iCAAmC55f,GAAGxjH,SAC9F0/T,OAAQ,CAAE80K,SAAU,WAAYC,SAAU,WAAY5oH,KAAM,OAAQ9hM,QAAS,UAAWnmL,KAAM,OAAQgF,KAAM,OAAQs+D,UAAW,YAAaJ,SAAU,WAAYmwT,cAAe,gBAAiBrrX,KAAM,OAAQ6sX,YAAa,cAAez1U,UAAW,YAAa7hD,SAAU,YAAckuX,QAAS,CAAEuH,UAAW,YAAa/1W,KAAM,OAAQiD,MAAO,SAAWwrW,SAAU,CAAC,8BAA+BrqW,SAAU,CAACs3S,MAA0B,CAAC,CAAE5qR,QAAS4/b,GAAsB3/b,aAAa/nC,SAAW,IAAMozmB,OAAuC1gT,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,IAAK,CAAC,gBAAiB,IAAK,CAAC,EAAG,OAAQ,YAAa,WAAY,cAAe,WAAY,WAAY,OAAQ,YAAa,gBAAiB,OAAQ,UAAW,OAAQ,QAAS,aAAc,CAAC,wBAAyB,IAAK,CAAC,OAAQ,SAAU,WAAY,KAAM,cAAe,GAAI,EAAG,oBAAqB,EAAG,WAAY,OAAQ,YAAa,WAAY,UAAW,SAAU,CAAC,EAAG,OAAQ,WAAY,YAAa,YAAa,SAAU,CAAC,mCAAoC,KAAMh1Q,SAAU,SAAiDsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC/oCC,MAAkB,EAAGmhT,GAAuD,EAAG,GAAI,cAAe,KAAM,EAAGnhT,OAC3GA,MAAkB,EAAGohT,GAAuD,EAAG,EAAG,cAAe,KAAM,EAAGphT,SACzGgE,WAAY,CAACgyE,MAAgCA,MAAwB9xE,MAAgBs8S,IAA6Br8S,cAAe,IAC1Ip5R,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BoxlB,GAA+B/jmB,UAAW,gBAAY,GACzDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BoxlB,GAA+B/jmB,UAAW,gBAAY,GACzDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCoxlB,GAA+B/jmB,UAAW,OAAQ,MACrDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCoxlB,GAA+B/jmB,UAAW,OAAQ,MACrDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCoxlB,GAA+B/jmB,UAAW,YAAa,MAC1DmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCoxlB,GAA+B/jmB,UAAW,WAAY,MACzDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,QAC1BiiU,EAAW,oBAAqB,CAACjiU,UAClCu+mB,GAA+B/jmB,UAAW,gBAAiB,MAC9DmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BoxlB,GAA+B/jmB,UAAW,mBAAe,GAC5DmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BoxlB,GAA+B/jmB,UAAW,iBAAa,GAC1DmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3Bo8S,GAA+B/jmB,UAAW,gBAAY,GACzDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BoxlB,GAA+B/jmB,UAAW,YAAQ,GACrDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,OAC1Bw5T,EAAW,oBAAqB,CAACx5T,SAClC81mB,GAA+B/jmB,UAAW,OAAQ,MACrDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3Bo8S,GAA+B/jmB,UAAW,eAAW,GACxDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3Bw/mB,GAA+B/jmB,UAAW,iBAAa,GAC1DmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3Bw/mB,GAA+B/jmB,UAAW,YAAQ,GACrDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3Bw/mB,GAA+B/jmB,UAAW,aAAS,GACtDmuB,EAAW,EACPq5R,SAAU,kBAAmB,CAAExmT,QAAQ,IACvCymT,EAAW,cAAeC,QAC3Bq8S,GAA+B/jmB,UAAW,uBAAmB,GAChEmuB,EAAW,EACPq5R,SAAU,gBAAiB,CAAExmT,QAAQ,IACrCymT,EAAW,cAAeC,QAC3Bq8S,GAA+B/jmB,UAAW,qBAAiB,GAC9DmuB,EAAW,EACPq5R,SAAU,iBAAkB,CAAE34M,KAAMrgH,MAAYwS,QAAQ,IACxDymT,EAAW,cAAej5T,QAC3Bu1mB,GAA+B/jmB,UAAW,sBAAkB,GAC/DmuB,EAAW,EACPq5R,SAAU44D,MAAyB,CAAEp/W,QAAQ,IAC7CymT,EAAW,cAAe24D,QAC3B2jP,GAA+B/jmB,UAAW,+BAA2B,GACxEmuB,EAAW,EACPq5R,SAAU,wBAAyB,CAAExmT,QAAQ,IAC7CymT,EAAW,cAAe24D,QAC3B2jP,GAA+B/jmB,UAAW,6BAAyB,GACtEmuB,EAAW,EACPq5R,SAAU,mCAAoC,CAAExmT,QAAQ,IACxDymT,EAAW,cAAem8S,KAC3BG,GAA+B/jmB,UAAW,wCAAoC,GACjF+jmB,GAAiCD,GAAmC31kB,EAAW,CAAEs5R,EAAW,oBAAqB,KAC9Gs8S,IAMH,IAAIU,GAA8BL,GAAgC,cAA0ChsI,GACxG34e,cACI0f,QAKAxf,KAAK07e,SAAW,OAIhB17e,KAAK27e,SAAW,OAUhB37e,KAAK+yX,KAAO,UAKZ/yX,KAAK49X,gBAAkB,UAIvB59X,KAAKkqD,UAAY,OAIjBlqD,KAAK69X,YAAc,IAAIj5X,MAKvB5E,KAAK89X,UAAY,IAAIl5X,MAKrB5E,KAAK+nB,KAAO,IAAInjB,MAKhB5E,KAAKgrB,MAAQ,IAAIpmB,MACjB5E,KAAK47e,eAAiB,CAClB9we,KAAM,GACNgF,KAAM,GACNs+D,UAAW,GACXJ,SAAU,IAEdhuE,KAAK+9mB,gBAAkB,CACnBjzmB,KAAM,GACNgF,KAAM,GACNs+D,UAAW,GACXJ,SAAU,IAEdhuE,KAAK+6X,eAAiB,CAAEvwX,SAAS,EAAM4yD,WAAY,IACnDp9D,KAAK63X,cAAe,EACpB73X,KAAKq/mB,WAAaA,KAClBr/mB,KAAKs/mB,WAAaA,KAKlBx0mB,SAAKA,IACL9K,KAAK47e,eAAe9we,KAAOy0mB,GAAoBz0mB,GAAM9K,KAAK07e,UAAU,GACpE17e,KAAK+9mB,gBAAgBjzmB,KAAOy0mB,GAAoBz0mB,GAAM9K,KAAK07e,UAAU,GAMrE5re,SAAKA,IACL9P,KAAK47e,eAAe9re,KAAOyvmB,GAAoBzvmB,GAAM9P,KAAK27e,UAAU,GACpE37e,KAAK+9mB,gBAAgBjumB,KAAOyvmB,GAAoBzvmB,GAAM9P,KAAK27e,UAAU,GAKrEvta,cAAUA,IACVpuE,KAAK47e,eAAexta,UAAYmxiB,GAAoBnxiB,GAAWpuE,KAAK27e,UAAU,GAC9E37e,KAAK+9mB,gBAAgB3viB,UAAYmxiB,GAAoBnxiB,GAAWpuE,KAAK27e,UAAU,GAK/E3ta,aAASA,IACThuE,KAAK47e,eAAe5ta,SAAWuxiB,GAAoBvxiB,GAAUhuE,KAAK27e,UAAU,GAC5E37e,KAAK+9mB,gBAAgB/viB,SAAWuxiB,GAAoBvxiB,GAAUhuE,KAAK27e,UAAU,GAS7Ex9G,kBAAcx6X,IACd3D,KAAK+6X,eAAiBp3X,GAEtBw6X,oBACA,OAAKn+X,KAAK+6X,iBACN/6X,KAAK+6X,eAAiB,CAAEvwX,SAAS,EAAM4yD,WAAY,KAEhDp9D,KAAK+6X,eAOZjoX,SAAKA,IACL9S,KAAK2sI,MAAQ75H,IAAQ,GAErBA,WACA,OAAK9S,KAAK2sI,QACN3sI,KAAK8S,KAAO,IAET9S,KAAK2sI,MAEZ03e,sBACA,MAAO,CAACrknB,KAAK+knB,uBAAwB/knB,KAAKglnB,8BAA8Bh0b,QAAQxiG,UAAUzhF,OAAOmlB,KAAMA,GAAEhkB,cAAc7F,WAK3Hi2mB,kBAAkBt4K,IACdhmc,KAAK63X,aAAe73X,KAAKqknB,gBAAgBv2kB,UAAU5b,IAAKA,GAAEhkB,cAAcC,SAAS63b,GAAGt9b,SAKxF61mB,kBAAkBv4K,IACdhmc,KAAK69X,YAAYh2X,KAAKm+b,IACtBhmc,KAAK63X,aAAe,EAKxBihH,WACI,OAAQ94e,KAAKqI,SAKjBglU,MAAM24H,GAAK,IACFhmc,KAAK44e,UAKD54e,KAAKqknB,gBAAgBt+mB,OAAS,IACnC/F,KAAK63X,aAAeknP,GAAkB/+mB,KAAKs/mB,aAAct/mB,KAAKq/mB,aAAcr/mB,KAAKqknB,gBAAgB1+mB,IAAI4+mB,IAAMA,GAAGr2mB,eAA1F6wmB,CAA0G/4K,IAC9Hhmc,KAAK+8X,YAAY/8X,KAAK63X,aAAcmuE,MANpB,UAAZA,GAAGl+b,MAAgC,YAAZk+b,GAAGl+b,OAC1B9H,KAAKilnB,mBAAmB53S,QAWpC2rK,UAAUhzC,IACN,IAAKhmc,KAAK44e,YAAc5yC,GAAG7wE,UAAYn1X,KAAKs/mB,WAAWt/mB,KAAK44e,YAAc5yC,GAAG7wE,UAAYn1X,KAAKq/mB,WAAWr/mB,KAAK44e,YAC1G,OAAO,EAEX,GAAI54e,KAAK44e,UAAW,CAChB,MAAM+qI,GAAc7E,GAAW9+mB,KAAKqknB,iBAC9BT,GAAexE,GAASp/mB,KAAK63X,cACnC,YAAKA,aAAeqnP,GAAiBl/mB,KAAKs/mB,aAAct/mB,KAAKq/mB,aAAcsE,GAAvDzE,CAAoEl/mB,KAAK63X,aAAcmuE,IAC3Ghmc,KAAK+8X,YAAY/8X,KAAK63X,aAAcmuE,KAC5B49K,GAAa5jnB,KAAK63X,eAGlCkF,YAAYn5W,GAAOoib,MACVA,GAAGl+b,MAAoB,UAAZk+b,GAAGl+b,MAAgC,YAAZk+b,GAAGl+b,MAAkC,UAAZk+b,GAAGl+b,OAC/D9H,KAAKqknB,gBAAgBzgmB,IAAO1V,cAAcm/T,UA2HtD,IAAI63S,GAvHJJ,GAA4B1+S,UAAO,SAA6Ch4R,IAAK,OAAO,IAAKA,IAAK02kB,KACtGA,GAA4Bv+S,UAAqB9C,MAAyB,CAAE37T,KAAMg9mB,GAA6BjhnB,UAAW,CAAC,CAAC,8BAA+B2iU,UAAW,SAA2ChD,GAAI/3T,IAM/M,GAN+N,EAAL+3T,KACxNC,KAAmBgrI,GAAK,GACxBhrI,KAAmBwtD,GAAK,GACxBxtD,KAAmBuxF,GAAM,GACzBvxF,KAAmB8xF,GAAM,EAAG1mZ,OAC5B40T,KAAmB+xF,GAAM,IAClB,EAALhyF,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIwte,gBAAkBvuX,GAAGxjH,OAC9Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+zX,cAAgB90Q,GAAGxjH,OAC5Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIw5mB,mBAAqBv6f,GAAGxjH,OACjFu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIs5mB,oBAAsBr6f,GAAGxjH,OAClFu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIu5mB,8BAAgCt6f,GAAGxjH,SAC3F0/T,OAAQ,CAAE80K,SAAU,WAAYC,SAAU,WAAY5oH,KAAM,OAAQ6K,gBAAiB,kBAAmB1zU,UAAW,YAAap/C,KAAM,OAAQgF,KAAM,OAAQs+D,UAAW,YAAaJ,SAAU,WAAYmwT,cAAe,gBAAiBrrX,KAAM,OAAQzK,SAAU,WAAYs3X,YAAa,cAAeC,iBAAkB,oBAAsBrJ,QAAS,CAAEsH,YAAa,cAAeC,UAAW,YAAa/1W,KAAM,OAAQiD,MAAO,SAAWwrW,SAAU,CAAC,2BAA4BrqW,SAAU,CAACs3S,MAA0B,CAAC,CAAE5qR,QAAS4/b,GAAsB3/b,aAAa/nC,SAAW,IAAM0zmB,OAAoChhT,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,IAAK,CAAC,gBAAiB,IAAK,CAAC,EAAG,OAAQ,OAAQ,OAAQ,YAAa,WAAY,cAAe,mBAAoB,kBAAmB,WAAY,WAAY,YAAa,gBAAiB,OAAQ,cAAe,OAAQ,QAAS,aAAc,CAAC,qBAAsB,IAAK,CAAC,OAAQ,SAAU,WAAY,KAAM,cAAe,GAAI,EAAG,oBAAqB,EAAG,WAAY,OAAQ,YAAa,WAAY,OAAQ,UAAW,SAAU,CAAC,sBAAuB,IAAK,CAAC,EAAG,OAAQ,OAAQ,WAAY,YAAa,YAAa,SAAU,CAAC,gCAAiC,KAAMh1Q,SAAU,SAA8CsxQ,GAAI/3T,IAAgB,EAAL+3T,KAClzCC,MAAkB,EAAG0hT,GAAoD,EAAG,GAAI,cAAe,KAAM,EAAG1hT,OACxGA,MAAkB,EAAG2hT,GAAoD,EAAG,GAAI,cAAe,KAAM,EAAG3hT,SACvGgE,WAAY,CAACgyE,MAA6BA,MAAwB9xE,MAAgBs8S,IAA6Br8S,cAAe,IACvIp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8xlB,GAA4BzkmB,UAAW,gBAAY,GACtDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8xlB,GAA4BzkmB,UAAW,gBAAY,GACtDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8xlB,GAA4BzkmB,UAAW,OAAQ,MAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8xlB,GAA4BzkmB,UAAW,OAAQ,MAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8xlB,GAA4BzkmB,UAAW,YAAa,MACvDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8xlB,GAA4BzkmB,UAAW,WAAY,MACtDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B88S,GAA4BzkmB,UAAW,gBAAY,GACtDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8xlB,GAA4BzkmB,UAAW,YAAQ,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,QAC1BiiU,EAAW,oBAAqB,CAACjiU,UAClCi/mB,GAA4BzkmB,UAAW,gBAAiB,MAC3DmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8xlB,GAA4BzkmB,UAAW,mBAAe,GACzDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3Bi/mB,GAA4BzkmB,UAAW,wBAAoB,GAC9DmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B8xlB,GAA4BzkmB,UAAW,uBAAmB,GAC7DmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8xlB,GAA4BzkmB,UAAW,iBAAa,GACvDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,OAC1Bw5T,EAAW,oBAAqB,CAACx5T,SAClCw2mB,GAA4BzkmB,UAAW,OAAQ,MAClDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkgnB,GAA4BzkmB,UAAW,mBAAe,GACzDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BkgnB,GAA4BzkmB,UAAW,iBAAa,GACvDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkgnB,GAA4BzkmB,UAAW,YAAQ,GAClDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkgnB,GAA4BzkmB,UAAW,aAAS,GACnDmuB,EAAW,EACPq5R,SAAU,kBAAmB,CAAExmT,QAAQ,IACvCymT,EAAW,cAAeC,QAC3B+8S,GAA4BzkmB,UAAW,uBAAmB,GAC7DmuB,EAAW,EACPq5R,SAAU,gBAAiB,CAAExmT,QAAQ,IACrCymT,EAAW,cAAeC,QAC3B+8S,GAA4BzkmB,UAAW,qBAAiB,GAC3DmuB,EAAW,EACPq5R,SAAU,qBAAsB,CAAExmT,QAAQ,IAC1CymT,EAAW,cAAe41D,QAC3BonP,GAA4BzkmB,UAAW,0BAAsB,GAChEmuB,EAAW,EACPq5R,SAAU,sBAAuB,CAAE34M,KAAMrgH,MAAYwS,QAAQ,IAC7DymT,EAAW,cAAej5T,QAC3Bi2mB,GAA4BzkmB,UAAW,2BAAuB,GACjEmuB,EAAW,EACPq5R,SAAU,gCAAiC,CAAExmT,QAAQ,IACrDymT,EAAW,cAAem8S,KAC3Ba,GAA4BzkmB,UAAW,qCAAiC,GAC3EykmB,GAA8BL,GAAgCj2kB,EAAW,CAAEs5R,EAAW,oBAAqB,KACxGg9S,IAMH,IAAIO,GAA4BH,GAA8B,cAAwCzsI,GAClG34e,cACI0f,QAKJs5d,WACI,OAAO,EAMXzrK,SAOA2rK,YACI,OAAO,EAEXnoc,kBACS7wC,KAAKw/X,gBACNx/X,KAAKw/X,cAAgBx/X,KAAKi5e,mBAItCosI,GAA0Bj/S,UAAO,SAA2Ch4R,IAAK,OAAO,IAAKA,IAAKi3kB,KAClGA,GAA0B9+S,UAAqB9C,MAAyB,CAAE37T,KAAMu9mB,GAA2BxhnB,UAAW,CAAC,CAAC,4BAA6B2iU,UAAW,SAAyChD,GAAI/3T,IAIvM,GAJuN,EAAL+3T,KAChNC,KAAmBwtD,GAAK,GACxBxtD,KAAmBgrI,GAAK,GACxBhrI,KAAmBgyF,GAAM,IAClB,EAALjyF,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI+zX,cAAgB90Q,GAAGxjH,OAC5Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIwte,gBAAkBvuX,GAAGxjH,OAC9Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIy8V,UAAYx9O,GAAGxjH,SACvEsvX,SAAU,CAAC,yBAA0BrqW,SAAU,CAACs3S,MAA0B,CAAC,CAAE5qR,QAAS4/b,GAAsB3/b,aAAa/nC,SAAW,IAAMm0mB,OAAkCzhT,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,IAAK,CAAC,EAAG,gBAAiBh1Q,SAAU,SAA4CsxQ,GAAI/3T,IAAgB,EAAL+3T,IAChWC,MAAkB,EAAG6hT,GAAkD,EAAG,EAAG,cAAe,KAAM,EAAG7hT,QACpGmE,cAAe,IACxBp5R,EAAW,EACPq5R,SAAU,kBAAmB,CAAExmT,QAAQ,IACvCymT,EAAW,cAAeC,QAC3Bs9S,GAA0BhlmB,UAAW,uBAAmB,GAC3DmuB,EAAW,EACPq5R,SAAU,gBAAiB,CAAExmT,QAAQ,IACrCymT,EAAW,cAAeC,QAC3Bs9S,GAA0BhlmB,UAAW,qBAAiB,GACzDmuB,EAAW,EACPq5R,SAAU,YAAa,CAAExmT,QAAQ,IACjCymT,EAAW,cAAej5T,QAC3Bw2mB,GAA0BhlmB,UAAW,iBAAa,GACrDglmB,GAA4BH,GAA8B12kB,EAAW,CAAEs5R,EAAW,oBAAqB,KACpGu9S,IAKH,IAAIE,GAAe,UAASA,GAAN,MAClBlrZ,aACI,OAAOr6N,KAAK0U,QAAQxG,cAExBquC,cAAci9O,IACV,OAAOx5R,KAAK0U,QAAQxG,cAAcquC,cAAci9O,IAEpDj7O,iBAAiBi7O,IACb,OAAOx5R,KAAK0U,QAAQxG,cAAcqwC,iBAAiBi7O,IAEvD8oP,gBACI,MAt9Dc,EAAC5tgB,GAAS+rb,IAAkB,IACvCuhF,GAq9DkBhihB,KAAK0U,QAAQxG,cAr9DVkX,IAAQo7a,GAAYp7a,GAAMq7a,KAq9D3C6hF,CAActihB,GAA4B,GAErDkihB,mBAAmBxtgB,IACf,OAAKA,KACDA,GAAU1U,KAAKsihB,iBAp9DA,EAAC5tgB,GAAS+rb,IAAkB,IAC5CuhF,GAAYttgB,GAAS0Q,IAAQo7a,GAAYp7a,GAAMq7a,KAAkB,GAq9D7DyhF,CAAmBxtgB,IAAS,GAEvC8wmB,yBAAyB9wmB,IACrB,OAAKA,KACDA,GAAU1U,KAAKsihB,iBAEZs8F,GAAqBlqmB,IAAS,GAEzC+wmB,yBAAyB/wmB,IACrB,OAAKA,KACDA,GAAU1U,KAAKsihB,iBAEZs8F,GAAqBlqmB,IAAS,GAAO,GAEhDmlG,aAAanlG,GAASmmd,GAAMl3d,IACxB3D,KAAKklK,SAASrrD,aAAanlG,GAASmmd,GAAMl3d,MAGlD4hnB,UAAgBn/S,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAKm3kB,KAC9EA,GAAgB36S,WAAsBnH,MAA0B,CAAEp4S,MAAOk6lB,GAAiBjtmB,QAAS,SAAU81B,IAAK,OAAOm3kB,GAAgBn/S,UAAKh4R,OApClHm3kB,IAAT,GAyCfxC,GAAwB,UAASA,GAAN,MAC3BjjnB,YAAY4U,GAASwwJ,GAAUwgd,GAAiBrE,IAC5CrhnB,KAAK0U,QAAUA,GACf1U,KAAKklK,SAAWA,GAChBllK,KAAK0lnB,gBAAkBA,GACvB1lnB,KAAKqhnB,eAAiBA,GACtBrhnB,KAAK2lnB,cAAgB,IAAI/gnB,MACzB5E,KAAK0lnB,gBAAgBhxmB,QAAUA,GAC/B1U,KAAK0lnB,gBAAgBxgd,SAAWllK,KAChCA,KAAK4lnB,oBAAsB5lnB,KAAKqhnB,eAAe1C,UAAUj5mB,UAAWi5S,KAC5D3+S,KAAK2+S,OAASA,IACd3+S,KAAKg0D,YAIjB1S,QAAQ0kZ,IACJhmc,KAAK2lnB,cAAc99mB,KAAK,CAAEu7D,QAASpjE,KAAM2N,MAAOq4b,KAEpD3gc,WACQrF,KAAK8lc,UACiB,YAAtB9lc,KAASokC,UACLpkC,KAAKkyD,SAAWlyD,KAAK2+S,KAAKs6L,gBAC1Bj5e,KAAKklK,SAAS5oB,SAASt8I,KAAK0U,QAAQxG,cAAe,aAAc,UACjElO,KAAKklK,SAAS5oB,SAASt8I,KAAK0U,QAAQxG,cAAe,UAAW,UAG9DlO,KAAKkyD,SAAWlyD,KAAK2+S,KAAK6gF,cAC1Bx/X,KAAKklK,SAAS5oB,SAASt8I,KAAK0U,QAAQxG,cAAe,UAAW,UAIlElO,KAAK2+S,KAAKi6L,WAAY,EACtB54e,KAAKkyD,SAAWlyD,KAAK2+S,KAAKs6L,gBAC1Bj5e,KAAKklK,SAAS5oB,SAASt8I,KAAK0U,QAAQxG,cAAe,aAAc,WACjElO,KAAKklK,SAAS5oB,SAASt8I,KAAK0U,QAAQxG,cAAe,UAAW,iBAGtEvH,cACI3G,KAAK4lnB,oBAAoB9+mB,cAE7B+pC,kBACQ7wC,KAAK8lc,WACL9lc,KAAKg0D,UAMTt9C,YACA,OAAO1W,KAAK2+S,KAAKi6L,UAAY,EAAIr3I,GAAWvhW,KAAK0U,QAAQxG,eAK7D23mB,cACI,MAAoD,SAA7C7lnB,KAAK0U,QAAQxG,cAAc/D,MAAMkkC,QAK5C2lB,UACQh0D,KAAK8lc,YACiB,YAAlB9lc,KAAKokC,UACLpkC,KAAKklK,SAAS5oB,SAASt8I,KAAK0U,QAAQxG,cAAe,aAAclO,KAAK2+S,KAAKz8E,YAC3EliO,KAAKklK,SAAS5oB,SAASt8I,KAAK0U,QAAQxG,cAAe,UAAWlO,KAAK2+S,KAAKsiU,iBAGxEjhnB,KAAKklK,SAAS5oB,SAASt8I,KAAK0U,QAAQxG,cAAe,UAAWlO,KAAK2+S,KAAKuiU,kBAOpFrngB,aAAanlG,GAASmmd,GAAMl3d,IACxB3D,KAAKklK,SAASrrD,aAAanlG,GAASmmd,GAAMl3d,MAGlDo/mB,UAAyB38S,UAAO,SAA0Ch4R,IAAK,OAAO,IAAKA,IAAK20kB,IAA0Bt/S,MAAyBA,OAAoBA,MAAyBA,OAAmBA,MAAyB8hT,IAAkB9hT,MAAyBi7S,MACvRqE,GAAyBx8S,UAAqB9C,MAAyB,CAAE37T,KAAMi7mB,GAA0Bl/mB,UAAW,CAAC,CAAC,2BAA4B8iU,aAAc,SAA+CnD,GAAI/3T,IAAgB,EAAL+3T,IACtNC,MAAkB,QAAS,SAA2D97T,IAAU,OAAO8D,GAAI61C,QAAQ35C,OAClHi/T,OAAQ,CAAEjoB,KAAM,OAAQv6Q,SAAU,WAAY0ha,UAAW,aAAevvE,QAAS,CAAEovP,cAAe,iBAAmBnvP,SAAU,CAAC,wBAAyBrqW,SAAU,CAACs3S,MAA0B,CAAC8hT,MAAoB13a,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,QAAS,CAAC,EAAG,qBAAsBh1Q,SAAU,SAA2CsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC3VC,MAAkB,EAAGqiT,GAAkD,EAAG,EAAG,eAAgB,GAC7FriT,MAAkB,EAAGsiT,GAAkD,EAAG,EAAG,eAAgB,IACtF,EAALviT,KACFC,MAAkB,OAAyB,YAAjBh4T,GAAI24B,UAC9Bq/R,MAAiB,GACjBA,MAAkB,OAAyB,aAAjBh4T,GAAI24B,UAA2B34B,GAAIkzS,KAAKghQ,cACjEl4O,WAAY,CAACE,MAAaA,OAA0BC,cAAe,IAC5Ep5R,EAAW,EACP0/I,WACA45I,EAAW,cAAe2wK,KAC3BsqI,GAAyB1imB,UAAW,YAAQ,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B+vlB,GAAyB1imB,UAAW,gBAAY,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B+6S,GAAyB1imB,UAAW,iBAAa,GACpDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3Bm+mB,GAAyB1imB,UAAW,qBAAiB,GACxDmuB,EAAW,EACPioV,SAAa,QAAS,CAAC,WACvB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjCi7S,GAAyB1imB,UAAW,UAAW,MAClD0imB,GAA2Bv0kB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MACjEs5T,MACAo9S,GACA7G,MACLqE,IAnHkCA,IAAT,GAwHtBiD,SAAN,iBAA8B96S,MAE9B86S,UAAgB5/S,UAAqB,WAAc,IAAI6/S,GAA8B,OAAO,SAAiC73kB,IAAK,OAAQ63kB,KAAiCA,GAA+BxiT,MAA6BuiT,MAAmB53kB,IAAK43kB,KAA1N,GACrCA,GAAgB76S,UAAqB1H,MAAyB,CAAE37T,KAAMk+mB,GAAiBp/S,OAAQ,CAAE+2S,eAAgB,kBAAoBxxlB,SAAU,CAACs3S,SAChJj1R,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BgzlB,GAAgB3lmB,UAAW,sBAAkB,GAP1C2lmB,OASN,IAAIE,GAIJ,IAAIpD,GAAoCoD,GAAsC,cAAgDF,GAC1HlmnB,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,KAavB,IAAIwtT,GAVJrD,GAAkC18S,UAAO,SAAmDh4R,IAAK,OAAO,IAAKA,IAAK00kB,IAAmCr/S,MAAyB4C,QAC9Ky8S,GAAkC33S,UAAqB1H,MAAyB,CAAE37T,KAAMg7mB,GAAmCj/mB,UAAW,CAAC,CAAC,GAAI,gCAAiC,KAAMsoB,SAAU,CAACs3S,MAA0B,CAC5M,CACI5qR,QAASmtkB,GACTltkB,aAAa/nC,SAAW,IAAMm1mB,OAElCziT,SACZq/S,GAAoCoD,GAAsC13kB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QACrHg8S,IAMH,IAAIsD,GAAiCD,GAAmC,cAA6CH,GACjHlmnB,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,GAEf4nE,eACA,OAAO,IAGf6lP,GAA+BhgT,UAAO,SAAgDh4R,IAAK,OAAO,IAAKA,IAAKg4kB,IAAgC3iT,MAAyB4C,QACrK+/S,GAA+B7/S,UAAqB9C,MAAyB,CAAE37T,KAAMs+mB,GAAgCvinB,UAAW,CAAC,CAAC,2BAA4BsoB,SAAU,CAACs3S,MAA0B,CACvL,CACI5qR,QAASmtkB,GACTltkB,aAAa/nC,SAAW,IAAMo1mB,OAElC1iT,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAAiDsxQ,GAAI/3T,MAAUm8T,cAAe,IAC3Jw+S,GAAiCD,GAAmC33kB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QAC/Gs/S,IA4BH,IAAIllnB,GAAa,UAASA,GAAN,QAEpBA,UAAcklU,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAKltC,KAC1EA,GAAcmqU,UAAqB5H,MAAwB,CAAE37T,KAAM5G,KACnEA,GAAcoqU,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,MAAcyB,MAAeP,KAAammZ,SAJxFlnZ,IAAT,kCCx/EV,wBACP,6FACA,uGACA,uBAA6C8nM,MAAQA,qEACrD,oDAGO,kBACP,uBAAoCL,cAG7B,kBACP,sOC3CA,YAA8D66H,GAAI/3T,KAClE,MAAMylX,GAAM,SAAUC,GAAIC,IAAM,MAAO,CAAEC,UAAWF,GAAIljX,OAAQmjX,KAChE,YAAgD5tD,GAAI/3T,IAIlD,GAJkE,EAAL+3T,KAC3DC,MAAsB,EAAG,MAAO,GAChCA,MAAkB,EAAG4iT,GAAsD,EAAG,EAAG,cAAe,GAChG5iT,SACO,EAALD,GAAQ,CACV,MAAME,GAASD,QACfA,MAAiB,GACjBA,MAAkB,OAAQC,GAAO+2L,cAAjCh3L,CAAgD,mBAAoBC,GAAO+2L,cAA3Eh3L,CAA0F,0BAA2BA,MAAuB,EAAGytD,GAAKxtD,GAAOz1T,OAAQy1T,GAAOz1T,UAE9K,YAAwDu1T,GAAI/3T,KAC5D,YAAwD+3T,GAAI/3T,IAE1D,GAF0E,EAAL+3T,IACnEC,MAAc,GACP,EAALD,GAAQ,CACV,MAAM/+J,GAASg/J,QACfA,MAA0B,IAAKh/J,GAAOm/J,eAAgB,MAE1D,YAAgDJ,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACnE,MAAM8vF,GAAM7vF,QACZA,MAAsB,EAAG,MAAO,GAChCA,MAAkB,QAAS,SAAqE97T,IAAU87T,aAAqB6vF,IAAqB7vF,QAAsCK,aAAan8T,MACvM87T,MAAiB,EAAG,IAAK,GACzBA,QACF,GAAS,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAiB,GACjBA,MAAmB,QAAS3/T,GAAOigU,mBAEvC,YAAgDP,GAAI/3T,IAElD,GAFkE,EAAL+3T,IAC3DC,MAAiB,EAAG,MAAO,IACpB,EAALD,GAAQ,CACV,MAAMp+R,GAASq+R,QACfA,MAAkB,UAAWr+R,GAAOkhlB,yBAExC,MAAMriT,GAAkB,CACpBj/T,KAAM,kCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAQhBmiT,GAAmB,IAAI18S,MAAe,6BA0B5C,IAAI28S,GAAe,UAASA,GAAN,QAEtBA,UAAgBpgT,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAKo4kB,KAC9EA,GAAgB57S,WAAsBnH,MAA0B,CAAEp4S,MAAOm7lB,GAAiBlumB,QAAS,SAAU81B,IAAK,OAAOo4kB,GAAgBpgT,UAAKh4R,OAHlHo4kB,IAAT,GA4CnB,YAAmBC,GAAgBv8kB,IAC/B,OAAIu8kB,KAGa,QAAbv8kB,IAAmC,WAAbA,GACf,CAAEn+B,WAAY,MAAOC,SAAU,QAEnC,CAAED,WAAY,OAAQC,SAAU,QAE3C,YAAwByxJ,IACpB,OAA8B,IAAvBA,GAAUymN,SAKrB,YAAiBxvW,GAAS8kR,IACtB,GAAI9kR,GAAQ2rC,QACR,OAAO3rC,GAAQ2rC,QAAQm5O,IAE3B,MAAMthL,GAAUwiG,QAAQr6L,UAAU63F,QAC9B,CAAC7wD,GAAIu7a,KAAQv7a,GAAG6wD,QAAQ0qX,IACtB,CAACv7a,GAAIu7a,KAAQv7a,GAAGy0Z,kBAAkB8mB,IACxC,IAAIx9c,GAAO1Q,GACX,KAAO0Q,KAASshmB,GAAethmB,KAAO,CAClC,GAAI8yF,GAAQ9yF,GAAMo0Q,IACd,OAAOp0Q,GAEXA,GAAOA,GAAKqoI,YAMpB,YAAkBgQ,GAAWh/F,IAIzB,SAHKg/F,IAGDipd,GAAejpd,OAGfA,GAAUtvJ,SACHsvJ,GAAUtvJ,SAASswD,IAE1Bg/F,GAAUm/X,2BAEAn/X,GAAUm/X,wBAAwBn+d,IAASoxE,KAAK82e,qCAF9D,GAiBJ,YAAyB3zmB,GAAMq+C,GAAKrC,IAChC,MAAMkvR,GAAOlrU,GAAKm2T,wBAClB,OAAO+U,GAAK7sR,IAAQ6sR,GAAKlvR,IAAQ,EAKrC,YAAsB05E,GAAY11H,IAC9B,OAAoC,IAA7B01H,GAAW5oH,QAAQ9M,IAM9B,IAAI4zmB,GAAuB,UAASA,GAAN,MAC1B9mnB,YAAY8e,GAASs5B,IACjBl4C,KAAK4e,QAAUA,GACf5e,KAAKk4C,oBAAsBA,GAC3Bl4C,KAAKgrB,MAAQ,IAAIpmB,MACjB5E,KAAK6mnB,aAAe,KACpB7mnB,KAAK8mnB,cAAgB,KACrB9mnB,KAAK+mnB,SAAU,EACf/mnB,KAAKgnnB,cAAgB,CAAC98kB,GAAU+8kB,GAAaC,MACzC,MAAMzuf,GAAS,GACTu+e,GAA0B,QAAb9skB,IAAmC,WAAbA,GAGzC,OAAKg9kB,IAIY,QAAbh9kB,GACAuuF,GAAOixM,OAAS,QAEE,WAAjB5gI,GACDrwE,GAAOtK,IAAM,QAEK,SAAjB26E,GACDrwE,GAAOnpD,MAAQ,QAEG,UAAbplC,KACLuuF,GAAOrpD,KAAO,SAElBqpD,GAAOvuF,KAAgB+8kB,GAAH,KACpBxuf,GAAOpuH,UAAY2smB,GAAc,kBAAwB,kBAClDv+e,KAjBHA,GAAOpuH,UAAY2smB,GAAc,gBAAwB,gBAClDv+e,KAkBfz4H,KAAKiM,UAAYisC,GAAoBwsR,IAAM,MAAQ,MAEnD1qN,iBACA,MAAO,qBAEP58D,gBACA,OAAOp9C,KAAKilU,SAEZkiT,kBACA,MAAO,WAEX9hnB,WACIrF,KAAK4kU,uBAAyB5kU,KAAKk4C,oBAAoBlxC,QAClDtB,UAAU,EAAGg/T,UAAU1kU,KAAKiM,UAAYy4T,GAAM,MAAQ,OAE/D/9T,cACQ3G,KAAK4kU,wBACL5kU,KAAK4kU,uBAAuB99T,cAGhCi9T,uBACA,OAAO/jU,KAAK8kU,YAAc9kU,KAAKk4C,oBAAoBr5B,IAAI,cAE3DynmB,uBACI,MAAO,CACHn4f,IAAO,cACP/+C,KAAQ,cACRs6P,OAAU,cACVp6P,MAAS,eACXtvE,KAAKkqC,UAEX45R,aAAan2T,IACTA,GAAMu0C,iBACNliD,KAAKgrB,MAAMnjB,OAEfu/mB,sBAAsBl9kB,GAAUg9kB,IAC5B,IAAKlnnB,KAAK+mnB,QACN,OAEJ,MAAMA,GAAU/mnB,KAAK4e,QAAQ1Q,cAAcquC,cAAc,cACnDy6jB,GAA0B,QAAb9skB,IAAmC,WAAbA,GACnC8kB,GAAOgojB,GAAa,QAAU,SAC9B3ljB,GAAM2ljB,GAAa,OAAS,MAC5BqQ,GAAiBrQ,GAAa,aAAe,YAC7CiQ,GAAcF,GAAQ59S,wBAAwBn6Q,IAC9Cs4jB,GAAeC,GAAgBvnnB,KAAKiO,OAAOC,cAAemjD,GAAKrC,IAC/Dw4jB,GAAgBD,GAAgBvnnB,KAAK4e,QAAQ1Q,cAAemjD,GAAKrC,IACjEv1C,GAAOvM,KAAKiN,IAAIqtmB,GAAgBF,KAClC7tmB,GAAO,GAAc,IAATA,IAAmC,IAArBvM,KAAK4zF,MAAMrnF,OAErCstmB,GAAQ58mB,MAAMk9mB,MADIG,GAAgBF,GAAgBL,GAAc,GAC/B,MAErC,MAAMD,GAAgBhnnB,KAAKgnnB,cAAc98kB,GAAU+8kB,GAAaC,IAChErhnB,OAAOrC,KAAKwjnB,IAAepgnB,QAASuD,KAChC48mB,GAAQ58mB,MAAMA,IAAS68mB,GAAc78mB,QAIjDy8mB,UAAwBxgT,UAAO,SAAyCh4R,IAAK,OAAO,IAAKA,IAAKw4kB,IAAyBnjT,MAAyBA,OAAoBA,MAAyB4C,SAC7LugT,GAAwBrgT,UAAqB9C,MAAyB,CAAE37T,KAAM8+mB,GAAyB/inB,UAAW,CAAC,CAAC,kBAAmB6iU,SAAU,GAAIC,aAAc,SAA8CnD,GAAI/3T,IAAgB,EAAL+3T,KACxNC,MAAmB,MAAOh4T,GAAIQ,WAC9Bw3T,MAAkBh4T,GAAIuuG,YACtBypN,MAAmB,QAASh4T,GAAIo7mB,aAAc,KAA9CpjT,CAAoD,SAAUh4T,GAAIq7mB,cAAe,KAAjFrjT,CAAuF,WAAYh4T,GAAI07mB,aACvG1jT,MAAmB,qBAAsBh4T,GAAI2xC,aAC5CwpR,OAAQ,CAAEigT,aAAc,eAAgBC,cAAe,gBAAiBrsH,cAAe,gBAAiBxsf,OAAQ,SAAUg3T,SAAU,WAAY4B,YAAa,cAAejD,eAAgB,kBAAoB2yD,QAAS,CAAEvrW,MAAO,SAAWmB,SAAU,CAACs3S,MAA0B,CAC/QqD,MACA,CACIjuR,QAASkuR,MACTC,SAAU,oBAEbn5H,MAAO,EAAGo5H,KAAM,GAAIC,OAAQ,WAAc,IAAIugT,GASnDA,UAASrgT,sIACJ,CAAC,CAAC,gCAAiC,GAAI,aAAcqgT,IAAS,CAAC,EAAG,qBAAsB,CAAC,QAAS,kBAAmB,EAAG,QAAS,CAAC,EAAG,OAAQ,mBAAoB,2BAA4B,CAAC,EAAG,QAAS,CAAC,QAAS,mBAAoB,EAAG,QAAS,EAAG,QAAS,CAAC,QAAS,YAAa,EAAG,UAAW,EAAG,QAAS,CAAC,EAAG,mBAAoB,CAAC,EAAG,mBAAoB,EAAG,SAAU,CAAC,OAAQ,IAAK,EAAG,SAAU,aAAc,CAAC,EAAG,YAAa,EAAG,aAAgBv1jB,SAAU,SAA0CsxQ,GAAI/3T,IAAgB,EAAL+3T,KACngBC,MAA0B,EAAG,GAC7BA,MAAsB,EAAG,MAAO,GAChCA,MAAkB,EAAGikT,GAAwC,EAAG,EAAG,MAAO,GAC1EjkT,MAAkB,EAAGkkT,GAAgD,EAAG,EAAG,cAAe,GAC1FlkT,MAAkB,EAAGmkT,GAAgD,EAAG,EAAG,cAAe,GAC1FnkT,QACAA,MAAkB,EAAGokT,GAAwC,EAAG,EAAG,MAAO,GAC1EpkT,MAAkB,EAAGqkT,GAAwC,EAAG,EAAG,MAAO,IACnE,EAALtkT,KACFC,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIgvf,eAC9Bh3L,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIo7T,YAA9BpD,CAA2C,mBAAoBh4T,GAAIo7T,YAAnEpD,CAAgF,0BAA2BA,MAAuB,EAAGytD,GAAKzlX,GAAIwC,OAAQxC,GAAIwC,SAC1Jw1T,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIm4T,gBAC9BH,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIw5T,UAC9BxB,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIs7mB,WAC7Bt/S,WAAY,WAAc,MAAO,CAACC,GAA4BpB,MAAaA,MAAyBA,QAAoBsB,cAAe,IAChJp5R,EAAW,IACPy5R,OAAY,YACZH,EAAW,cAAe90S,SAC3B4zlB,GAAwBvmmB,UAAW,iBAAa,GACnDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BginB,GAAwBvmmB,UAAW,aAAS,GAC/CmuB,EAAW,EACPy5R,SAAY,SACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC8+S,GAAwBvmmB,UAAW,aAAc,MACpDmuB,EAAW,EACPy5R,SAAY,4BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC8+S,GAAwBvmmB,UAAW,YAAa,MACnDmuB,EAAW,EACPy5R,SAAY,kBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC8+S,GAAwBvmmB,UAAW,cAAe,MACrDmuB,EAAW,IACPy5R,OAAY,qBACZ/5I,SACA45I,EAAW,cAAex5Q,SAC3Bs4jB,GAAwBvmmB,UAAW,oBAAgB,GACtDmuB,EAAW,IACPy5R,OAAY,oBACZ/5I,WACA45I,EAAW,cAAex5Q,SAC3Bs4jB,GAAwBvmmB,UAAW,qBAAiB,GACvDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3B6+S,GAAwBvmmB,UAAW,qBAAiB,GACvDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAej5T,QAC3B+3mB,GAAwBvmmB,UAAW,cAAU,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B4+S,GAAwBvmmB,UAAW,gBAAY,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3B6+S,GAAwBvmmB,UAAW,mBAAe,GACrDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B4zlB,GAAwBvmmB,UAAW,sBAAkB,GACxDummB,GAA0Bp4kB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAChEi4T,SACL8/S,IA7LiCA,IAAT,GA0MvBtgd,GAAgB,UAASA,GAAN,MACnBxmK,YAAYqmK,GAAgB7+G,GAAQ49G,GAAUkB,GAAc/qJ,GAAU0smB,IAClE/nnB,KAAKmmK,eAAiBA,GACtBnmK,KAAKsnD,OAASA,GACdtnD,KAAKklK,SAAWA,GAChBllK,KAAKomK,aAAeA,GAMpBpmK,KAAK+M,OAAS,UAWd/M,KAAKkqC,SAAW,MAKhBlqC,KAAKumK,UAAY,IAQjBvmK,KAAK+mnB,SAAU,EASf/mnB,KAAKilU,UAAW,EAMhBjlU,KAAKoyB,OAAS,EACdpyB,KAAKiO,OAAS,KACdjO,KAAKgonB,eAAiB,CAAC,MAAO,SAAU,QAAS,QACjDhonB,KAAKionB,iBAAmB,CAAC,QAAS,QAAS,SAC3CtjT,QAAgBV,IAChBp+T,OAAOw0D,OAAOr6D,KAAMqb,GAAU0smB,IAC9B/nnB,KAAKsnD,OAAO4yR,kBAAkB,KAC1B,MAAM+gD,GAAUj7X,KAAKmmK,eAAej4J,cACpClO,KAAKkonB,yBAA0B/mZ,OAAU85J,GAAS,aAC7CzuX,QAAKO,KAAO,IAAsB,KAAhB/M,KAAK+M,SACvBrH,UAAWuD,KACZ,MAAMk/mB,GAAgB9nkB,GAAQp3C,GAAEP,OAAQ1I,KAAK+M,QACzCo7mB,IACAnonB,KAAKoonB,iBAAiB,CAAEl6mB,cAAei6mB,OAG/CnonB,KAAKqonB,uBAAwBlnZ,OAAU85J,GAAS,aAC3CzuX,MAAKs0D,OAAa,MAAM/zD,OAAO,IAAsB,KAAhB/M,KAAK+M,SAC1CrH,UAAUuD,IAAKjJ,KAAKsonB,YAAYr/mB,KACrCjJ,KAAKuonB,sBAAuBpnZ,OAAU85J,GAAS,YAC1CzuX,QAAKs0D,KAAa,MAClBp7D,UAAUuD,IAAKjJ,KAAKwonB,WAAWv/mB,OAOxC09J,oBAAgBhjK,IAChB3D,KAAKkyD,SAAWvuD,GAEhBgjK,sBAAoB,OAAO3mK,KAAKkyD,SAMpC1kD,KAAKS,IACD,IAAIjO,KAAK8vC,SAOT,GAJI7hC,cAAkBysM,UAClBzsM,GAAS,CAAEC,cAAeD,KAE9BjO,KAAKiO,OAASA,GACM,UAAhBjO,KAAKksmB,OAAoB,CACzB,GAAIlsmB,KAAK8vC,SACL,OAEJ7oB,aAAajnB,KAAKyonB,aAClBzonB,KAAKyonB,YAActzmB,OAAOjD,WAAW,IAAMlS,KAAK0onB,YAAY1onB,KAAKiO,QAASjO,KAAKumK,gBAG/EvmK,KAAKoonB,iBAAiBponB,KAAKiO,QAC3BjO,KAAK0onB,YAAY1onB,KAAKiO,QAM9B4vD,OACI52C,aAAajnB,KAAKyonB,aAClB,MAAMx6mB,GAASjO,KAAKiO,QAAUjO,KAAKiO,OAAOC,cACtCD,IAAUA,GAAO65C,aAAa,iBACzB75C,GAAO65C,aAAa,UAAY75C,GAAO+mX,aAAa,UACrD/mX,GAAO4rG,aAAa,QAAS5rG,GAAO65C,aAAa,eAErD75C,GAAO4rG,aAAa,aAAc,KAElC75G,KAAK2onB,2BACL3onB,KAAK2onB,0BAA0B7hnB,cAE/B9G,KAAKuoU,wBACLvoU,KAAKuoU,uBAAuBzhU,cAEhC9G,KAAK0kb,aAQT57L,OAAO76O,GAAQT,IACX,MAAMo7mB,GAAiB5onB,KAAKiO,QAAUjO,KAAKiO,OAAOC,cAC9CD,cAAkBysM,UAClBzsM,GAAS,CAAEC,cAAeD,KAE1B26mB,KAAmB36mB,GAAOC,eAC1BlO,KAAK69D,OAEL+qjB,KAAmB36mB,GAAOC,eAAiC,UAAhBlO,KAAKksmB,QAChDlsmB,KAAK69D,YAEW,IAATrwD,KACPA,IAAQxN,KAAK8vC,UAEjBy5B,GACIvpE,KAAKwN,KAAKS,IAGVjO,KAAK69D,OAGbx4D,gBACwBF,IAAhBnF,KAAKksmB,SACLlsmB,KAAKksmB,OAAS,SAElBlsmB,KAAK6onB,mBAET9hnB,YAAYC,IACJA,GAAQklmB,QACRlsmB,KAAK8onB,iBAGb1zP,sBACSp1X,KAAK8vC,UAGN9vC,KAAKiO,SA1YC,EAACmX,GAAMi3V,MACrB,KAAOj3V,IAAQA,KAASi3V,IACpBj3V,GAAOA,GAAKqoI,WAEhB,OAAOroI,IAuYEurX,CAAU3wY,KAAKiO,OAAOC,eAAiBlO,KAAKiO,OAAQjO,KAAKmmK,eAAej4J,iBACzElO,KAAKiO,OAAS,KACdjO,KAAK69D,QAGbl3D,cACI3G,KAAK69D,OACL79D,KAAKkyD,SAAW,KAChBlyD,KAAKkonB,wBAAwBphnB,cAC7B9G,KAAKqonB,sBAAsBvhnB,cAC3B9G,KAAKuonB,qBAAqBzhnB,cACtB9G,KAAK+onB,wBACL/onB,KAAK+onB,uBAAuBjinB,cAE5B9G,KAAKgpnB,iCACLhpnB,KAAKgpnB,gCAAgClinB,cAErC9G,KAAK2onB,2BACL3onB,KAAK2onB,0BAA0B7hnB,cAGvC4hnB,YAAYO,KACHA,GAAU/6mB,cAAc45C,aAAa,gBAAkB9nD,KAAKkyD,WAGjElyD,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAK4gY,UAAUqoP,IACfjpnB,KAAKkpnB,YAAYlpnB,KAAK8vC,SAASlxB,QAASqqmB,MAE5CjpnB,KAAK8vC,SAAS2vV,yBACTjzX,MAAK+kD,OAAK,IACV7rD,UAAU,IAAM1F,KAAK69D,SAE9BqrjB,YAAYC,GAAkBF,IAC1B,MAAMrqmB,GAAUuqmB,GAAiB/nmB,SACjCphB,KAAKuoU,uBAAyB3pT,GAAQoM,MACjCtlB,UAAU,KAAQ1F,KAAK69D,SACvB79D,KAAKkyD,SAINtzC,GAAQioT,YAAc7mU,KAAKkyD,SAH3BtzC,GAAQglT,eAAiB5jU,KAAKiO,OAAOC,cAAc45C,aAAa,cAKhE9nD,KAAKy6f,gBACL77e,GAAQ67e,cAAgBz6f,KAAKy6f,eAEjC77e,GAAQkmT,WAAa9kU,KAAK8kU,WAC1BlmT,GAAQ3Q,OAASg7mB,GACjBrqmB,GAAQmomB,QAAU/mnB,KAAK+mnB,QACvBnomB,GAAQqmT,SAAWjlU,KAAKilU,SACxBrmT,GAAQsrB,SAAWlqC,KAAKkqC,SACxBtrB,GAAQiomB,aAAe7mnB,KAAK6mnB,aAC5BjomB,GAAQkomB,cAAgB9mnB,KAAK8mnB,cAC7B9mnB,KAAK8vC,SAASlxB,QAAQikO,kBAAkB3tC,gBAE5Ckza,iBAAiBvokB,IACb,MAAMnrC,GAAUmrC,GAAW3xC,cACvBwG,GAAQozC,aAAa,WACrBpzC,GAAQmlG,aAAa,aAAcnlG,GAAQozC,aAAa,UACxDpzC,GAAQmlG,aAAa,QAAS,KAGtC+mR,UAAUqoP,IACN,MAAMG,GAjiBd,YAAel/kB,GAAU9X,IACrB,IAAI+sW,GAAc,GACdF,GAAa,GACboqP,GAAc,GAClB,OAAQn/kB,QACC,MACDi1V,GAAc,CAAEpzX,WAAY,SAAUC,SAAU,OAChDizX,GAAa,CAAElzX,WAAY,SAAUC,SAAU,UAC/Cq9mB,GAAc,CAAEt9mB,WAAY,EAAGC,SAAUomB,IACzC,UACC,SACD+sW,GAAc,CAAEpzX,WAAY,SAAUC,SAAU,UAChDizX,GAAa,CAAElzX,WAAY,SAAUC,SAAU,OAC/Cq9mB,GAAc,CAAEt9mB,WAAY,EAAGC,SAAUomB,IACzC,UACC,QACD+sW,GAAc,CAAEpzX,WAAY,QAASC,SAAU,UAC/CizX,GAAa,CAAElzX,WAAY,OAAQC,SAAU,UAC7Cq9mB,GAAc,CAAEt9mB,WAAYqmB,GAAQpmB,SAAU,GAC9C,UACC,OACDmzX,GAAc,CAAEpzX,WAAY,OAAQC,SAAU,UAC9CizX,GAAa,CAAElzX,WAAY,QAASC,SAAU,UAC9Cq9mB,GAAc,CAAEt9mB,WAAYqmB,GAAQpmB,SAAU,GAItD,MAAO,CACHmzX,eACAF,cACAoqP,gBAmgBsBlsjB,CAAMn9D,KAAKkqC,SAAUlqC,KAAKoyB,QAE1C6sW,GAAamqP,GAAcnqP,WAC3BoqP,GAAcD,GAAcC,YAClCrpnB,KAAK8vC,SAAW9vC,KAAKomK,aAAar+I,KAAK,CACnC9Z,OAAQg7mB,GACR9pP,YALgBiqP,GAAcjqP,YAM9B30X,SAAS,EACToU,QAASgomB,GACTj3O,UAAWA,GAAU3vY,KAAK2vY,UAAW3vY,KAAKkqC,UAC1CqE,OAAQ86kB,GACRpqP,cACA7hU,WAAY,wBAEhBp9D,KAAKklK,SAAS0gK,SAAS5lU,KAAK8vC,SAASovV,aAAc,qBAC/Cl/X,KAAKspnB,cACLtpnB,KAAKklK,SAAS0gK,SAAS5lU,KAAK8vC,SAASovV,aAAcl/X,KAAKspnB,cAE5D,MAAMlT,GAAgBp2mB,KAAK8vC,SAASlxB,QAAQwC,SACxCg1lB,GAAc2Q,UACd/mnB,KAAKgpnB,gCAAkChpnB,KAAK8vC,SAASymkB,oBAChD7wmB,UAAU,EAAGk4F,YAEdw4gB,GAAcgR,sBAAsBpnnB,KAAKkqC,UADN,IAApB0zD,GAAK7xF,aAAyC,IAAlB6xF,GAAK5xF,aAIpC,UAAhBhM,KAAKksmB,QACLlsmB,KAAKsnD,OAAO4yR,kBAAkB,KAE1Bl6U,KAAK2onB,6BAA4BxnZ,KADnBnhO,KAAK8vC,SAASovV,aACsB,YAC7Cx5X,UAAWuD,IAAMjJ,KAAKwonB,WAAWv/mB,OAIlDy7a,aACQ1kb,KAAK8vC,WACL9vC,KAAK8vC,SAAS9kB,QACdhrB,KAAK8vC,SAAW,MAEhB9vC,KAAKgpnB,iCACLhpnB,KAAKgpnB,gCAAgClinB,cAG7CginB,iBACQ9onB,KAAK+onB,wBACL/onB,KAAK+onB,uBAAuBjinB,cAEZ,UAAhB9G,KAAKksmB,SACLlsmB,KAAK+onB,0BAAyB5nZ,KAAUx/M,SAAU,SAC7CnV,MAAKO,OAAO,IAAsB,KAAhB/M,KAAK+M,SACvBrH,UAAUuD,IAAKjJ,KAAKupnB,aAAatgnB,GAAGjJ,KAAKmmK,eAAej4J,iBAGrEq7mB,aAAatgnB,GAAGgyX,IACZ,MAAMvyX,GAASO,GAAEP,OACXy/mB,GAAgB9nkB,GAAQ33C,GAAQ1I,KAAK+M,QACrCqB,GAAQpO,KAAK8vC,UAAY9vC,KAAK8vC,SAASovV,aACzC9wX,KACIA,GAAMD,SAASzF,KAGf1I,KAAKilU,YAITg2D,GAAQ9sX,SAASzF,KAAWy/mB,GAC5BnonB,KAAK8oP,OAAOq/X,IAAe,GAEtB/5mB,IACLpO,KAAK69D,QAGbyqjB,YAAYr/mB,IACR,MAAMk/mB,GAAgB9nkB,GAAQp3C,GAAEP,OAAQ1I,KAAK+M,QACzB,UAAhB/M,KAAKksmB,QAGLic,IACAnonB,KAAK8oP,OAAOq/X,IAAe,GAGnCK,WAAWv/mB,IAIP,GAHoB,UAAhBjJ,KAAKksmB,QAGLlsmB,KAAKilU,SACL,OAEJ,MAAM72T,GAAQpO,KAAK8vC,UAAY9vC,KAAK8vC,SAASovV,aACvClH,GAAgB/uX,GAAE+uX,cACpBA,IAAiBh4X,KAAKiO,QAAUE,GAASnO,KAAKiO,OAAOC,cAAe8pX,KAGpEA,IAAiB7pX,GAASC,GAAO4pX,KAGrCh4X,KAAK69D,OAETgrjB,mBACI,MAAK37P,SAGL,KAAKs8P,GAAaxpnB,KAAKgonB,eAAgBhonB,KAAKkqC,UACxC,MAAM,IAAIzzB,MAAO,+GAErB,IAAK+ymB,GAAaxpnB,KAAKionB,iBAAkBjonB,KAAKksmB,QAC1C,MAAM,IAAIz1lB,MAAO,8FAI7B6vJ,UAAiB8/J,UAAO,SAAkCh4R,IAAK,OAAO,IAAKA,IAAKk4H,IAAkBm9J,MAAyBA,OAAoBA,MAAyBA,OAAgBA,MAAyBA,OAAmBA,MAAyBkE,MAAsBlE,MAAyB+iT,GAAiB,GAAI/iT,MAAyB8iT,GAAkB,KAC5Wjgd,GAAiB6kK,UAAqB1H,MAAyB,CAAE37T,KAAMw+J,GAAkBziK,UAAW,CAAC,CAAC,GAAI,eAAgB,KAAM+iU,OAAQ,CAAE75T,OAAQ,SAAUm9B,SAAU,WAAYq8H,UAAW,YAAawgd,QAAS,UAAW9hT,SAAU,WAAY7yS,OAAQ,SAAUu0I,gBAAiB,kBAAmBulc,OAAQ,SAAUzxG,cAAe,gBAAiBosH,aAAc,eAAgBC,cAAe,gBAAiBwC,aAAc,eAAgB35O,UAAW,YAAa7qE,WAAY,cAAgB0xD,SAAU,CAAC,gBAAiBrqW,SAAU,CAACs3S,SACnhBj1R,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BszI,GAAiBjmJ,UAAW,cAAU,GACzCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BszI,GAAiBjmJ,UAAW,gBAAY,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeC,QAC3BzhK,GAAiBjmJ,UAAW,qBAAiB,GAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BszI,GAAiBjmJ,UAAW,cAAU,GACzCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3Bg4G,GAAiBjmJ,UAAW,iBAAa,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B1hK,GAAiBjmJ,UAAW,eAAW,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B1hK,GAAiBjmJ,UAAW,gBAAY,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3Bg4G,GAAiBjmJ,UAAW,cAAU,GACzCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3Bg4G,GAAiBjmJ,UAAW,oBAAgB,GAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3Bg4G,GAAiBjmJ,UAAW,qBAAiB,GAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BszI,GAAiBjmJ,UAAW,oBAAgB,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BygK,GAAiBjmJ,UAAW,iBAAa,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BszI,GAAiBjmJ,UAAW,kBAAc,GAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeC,OAC1BD,EAAW,oBAAqB,CAACC,SAClCzhK,GAAiBjmJ,UAAW,kBAAmB,MAClDimJ,GAAmB93H,EAAW,CAAEq8R,EAAQ,GAAGE,YACvCF,EAAQ,KAAGE,UAAaF,EAAQ,GAAGC,SAAOy7S,KAC1Cz+S,EAAW,oBAAqB,CAACj5T,MAC7Bk9W,MACA5jD,MACA83D,KACAumP,GACAA,MACLlgd,IA1Z0BA,IAAT,GA4ZpB,IAAI2kK,GAIJ,IAAIvD,GAA6BuD,GAA+B,cAAyCC,MACrGprU,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,KAGvB+O,GAA2BtB,UAAO,SAA4Ch4R,IAAK,OAAO,IAAKA,IAAKs5R,IAA4BjE,MAAyB4C,SACzJqB,GAA2ByD,UAAqB1H,MAAyB,CAAE37T,KAAM4/T,GAA4B7jU,UAAW,CAAC,CAAC,GAAI,gCAAiC,KAAM+iU,OAAQ,CAAE9B,WAAY,cAAgB34S,SAAU,CAACs3S,MAA0B,CACpO,CACI5qR,QAASqyR,MACTpyR,aAAa/nC,SAAW,IAAMk6T,OAElCxH,SACZj1R,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B00S,GAA2BrnT,UAAW,kBAAc,GACvDqnT,GAA6BuD,GAA+Bz8R,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,SACvGY,IAEH,MACMmsH,GAAoB,CAAC5xb,MA+B3B,IAAIM,GAAa,UAASA,GAAN,QAEpBA,UAAc6jU,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAK7rC,KAC1EA,GAAc8oU,UAAqB5H,MAAwB,CAAE37T,KAAMvF,KACnEA,GAAc+oU,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,SAAiB8yb,OAJ/Dtxb,IAAT,kCCh0BV,wBACP,6FACA,uGACA,uBAA6CknnB,MAAQA,qEACrD,oDAGO,kBACP,uBAAoCC,cAG7B,kBACP,sdCvCA,MAAMnmT,GAAM,CAAC,mBACb,YAAkEC,GAAI/3T,IAAgB,EAAL+3T,IAC7EC,MAAiB,EAAG,OAAQ,GAEhC,YAAoDD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACvE,MAAMkxF,GAAMjxF,QACZA,MAAsB,EAAG,gBAAiB,EAAG,GAC7CA,MAAkB,cAAe,SAAyF97T,IAAU87T,aAAqBixF,IAAoDtvX,EAA/Bq+R,MAAsCx8R,aAAap/B,KAAKF,MACtO87T,MAAkB,EAAGkmT,GAA0D,EAAG,EAAG,cAAe,GACpGlmT,QACF,GAAS,EAALD,GAAQ,CACV,MAAME,GAASD,QACfA,MAAkB,QAASC,GAAO32T,OAAlC02T,CAA0C,eAAe,EAAzDA,CAA+D,cAAeC,GAAOkmT,yBAEzF,MAAM34P,GAAM,CAAC,qBAAsB,IACnC,YAAqDztD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CACxE,MAAMizI,GAAOhzI,QACbA,MAAsB,EAAG,OAAQ,IACjCA,MAAkB,QAAS,WAA+EA,MAAqBgzI,IAAO,MAAMvlc,GAAUuyT,QAA8B0uF,GAAWjhZ,GAAQ0S,MAAaimmB,GAAU34mB,GAAQmgX,UAAiB1lX,GAAS83T,QAAwB,OAAO93T,GAAOm+mB,WAAWn+mB,GAAO08lB,UAAUl2M,IAAW03N,IAAUl+mB,GAAO2md,WAAWu3J,GAASl+mB,GAAO08lB,UAAUl2M,QACnY1uF,QACF,GAAS,EAALD,GAAQ,CACV,MAAM10T,GAAU20T,QACVomT,GAAU/6mB,GAAQuiX,UAClB8gC,GAAWrjZ,GAAQ8U,MACnBwhB,GAASq+R,QACfA,MAAmB,eAAgBr+R,GAAOktb,WAAWu3J,GAASzklB,GAAOijkB,UAAUl2M,KAA/E1uF,CAA2F,cAAer+R,GAAOktb,WAAWu3J,GAASzklB,GAAOijkB,UAAUl2M,MACtJ1uF,MAAkB,uBAAwBr+R,GAAOijkB,UAAUl2M,MAE/D,YAA+D3uF,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAClF,MAAMywF,GAAOxwF,QACbA,MAAsB,EAAG,iBAAkB,IAC3CA,MAAkB,mBAAoB,WAA8GA,MAAqBwwF,IAAO,MAAM9B,GAAW1uF,QAAuB7/S,MAAa7U,GAAU00T,QAAwB,OAAO10T,GAAQood,UAAUpod,GAAQs5lB,UAAUl2M,OAClT1uF,QACF,GAAS,EAALD,GAAQ,CACV,MAAMv0T,GAAUw0T,QACVomT,GAAU56mB,GAAQoiX,UAClB8gC,GAAWljZ,GAAQ2U,MACnB7f,GAAS0/T,QACfA,MAAkB,OAAQomT,GAA1BpmT,CAAmC,QAAS1/T,GAAOskmB,UAAUl2M,IAA7D1uF,CAAwE,YAAa1/T,GAAO61U,YAEhG,YAA2EpW,GAAI/3T,KAC/E,MAAMylX,GAAM,SAAUC,GAAIC,IAAM,MAAO,CAAEC,UAAWF,GAAIvtW,MAAOwtW,KAC/D,YAA6D5tD,GAAI/3T,IAI/D,GAJ+E,EAAL+3T,KACxEC,MAA+B,GAC/BA,MAAkB,EAAGsmT,GAAmE,EAAG,EAAG,cAAe,IAC7GtmT,SACO,EAALD,GAAQ,CACV,MAAMv/T,GAAUw/T,QACVomT,GAAU5lnB,GAAQotX,UAClB8gC,GAAWluZ,GAAQ2f,MACnBlY,GAAS+3T,QACfA,MAAiB,GACjBA,MAAkB,mBAAoB/3T,GAAOs+mB,gBAA7CvmT,CAA8D,0BAA2BA,MAAuB,EAAGytD,GAAK24P,GAASn+mB,GAAO28lB,UAAUl2M,OAEtJ,YAA6D3uF,GAAI/3T,IAI/D,GAJ+E,EAAL+3T,KACxEC,MAA+B,GAC/BA,MAAc,GACdA,SACO,EAALD,GAAQ,CACV,MAAMqmT,GAAUpmT,QAAuB4tD,UACjCrtN,GAASy/J,QACfA,MAAiB,GACjBA,MAA0B,IAAKz/J,GAAOimd,SAASJ,IAAU,MAE7D,YAAmDrmT,GAAI/3T,IAErD,GAFqE,EAAL+3T,IAC9DC,MAAiB,EAAG,KAAM,IACnB,EAALD,GAAQ,CACV,MAAMjkR,GAAUkkR,QACVomT,GAAUtqkB,GAAQ8xU,UAClB8gC,GAAW5yW,GAAQ37B,MACnB3S,GAASwyT,QACfA,MAAkB,QAASxyT,GAAOghd,cAAlCxuJ,CAAiD,eAAgBxyT,GAAOwmc,aAAxEh0I,CAAsF,aAAcxyT,GAAO49b,WAA3GprI,CAAuH,cAAexyT,GAAOi5mB,YAA7IzmT,CAA0J,aAAcxyT,GAAOosD,WAA/KomQ,CAA2L,eAAgBxyT,GAAOk5mB,aAAlN1mT,CAAgO,WAAYxyT,GAAOutD,SAAnPilQ,CAA6P,cAAexyT,GAAO0oU,YAAnRlW,CAAgS,YAAaxyT,GAAO2oU,UAApTnW,CAA+T,aAAcxyT,GAAOiiX,WAApVzvD,CAAgW,WAAYxyT,GAAO5I,UAAY4I,GAAOiiX,WAAW22P,GAAS54mB,GAAOo3lB,UAAUl2M,KAA3a1uF,CAAub,aAAcxyT,GAAOqhd,WAA5c7uJ,CAAwd,aAAcxyT,GAAOoqZ,WAA7e53F,CAAyf,YAAaxyT,GAAO2vb,UAA7gBn9H,CAAwhB,kBAAmBxyT,GAAO+4mB,gBAAljBvmT,CAAmkB,4BAA6BxyT,GAAOm5mB,0BAAvmB3mT,CAAkoB,cAAexyT,GAAOo3lB,UAAUl2M,IAAlqB1uF,CAA6qB,iBAAkBomT,GAA/rBpmT,CAAwsB,YAAaxyT,GAAOo5mB,WAA5tB5mT,CAAwuB,kBAAmBxyT,GAAOq5mB,gBAAlwB7mT,CAAmxB,WAAW,EAA9xBA,CAAoyB,UAAWxyT,GAAO85f,UAE1zB,YAA8CvnM,GAAI/3T,IAchD,GAdgE,EAAL+3T,KACzDC,MAAsB,EAAG,KAAM,GAC/BA,MAAsB,EAAG,MAAO,GAChCA,MAAkB,EAAG8mT,GAA6C,EAAG,EAAG,OAAQ,GAChF9mT,MAAkB,EAAG+mT,GAAuD,EAAG,EAAG,iBAAkB,GACpG/mT,MAAsB,EAAG,OAAQ,GACjCA,MAA+B,EAAG,GAClCA,MAAkB,EAAGgnT,GAAqD,EAAG,EAAG,eAAgB,GAChGhnT,MAAkB,EAAGinT,GAAqD,EAAG,EAAG,eAAgB,GAChGjnT,QACAA,QACAA,QACAA,MAAkB,EAAGknT,GAA2C,EAAG,GAAI,KAAM,IAC7ElnT,SACO,EAALD,GAAQ,CACV,MAAMqmT,GAAUp+mB,GAAI4lX,UACd8gC,GAAW1mZ,GAAImY,MACf8/S,GAASD,QACfA,MAAmB,kBAAmBC,GAAOk9H,UAAUipL,GAASnmT,GAAO2kS,UAAUl2M,MACjF1uF,MAAkB,WAAYomT,GAA9BpmT,CAAuC,QAASC,GAAO2kS,UAAUl2M,IAAjE1uF,CAA4E,iBAAkBC,GAAOknT,eAArGnnT,CAAqH,cAAeC,GAAOjwR,YAA3IgwR,CAAwJ,eAAgBC,GAAO+zI,aAA/Kh0I,CAA6L,YAAaC,GAAOmrI,WAAjNprI,CAA6N,YAAaC,GAAOkW,UAAUiwS,GAASnmT,GAAO2kS,UAAUl2M,KAArR1uF,CAAiS,aAAcC,GAAOr7T,UAAYq7T,GAAOwvD,WAAW22P,GAASnmT,GAAO2kS,UAAUl2M,KAA9W1uF,CAA0X,YAAaC,GAAOk9H,UAAUipL,GAASnmT,GAAO2kS,UAAUl2M,KAAlb1uF,CAA8b,aAAcC,GAAOwmT,aAAexmT,GAAOiW,YAAYkwS,IAArfpmT,CAA+f,aAAcC,GAAO4uJ,WAAWu3J,GAASnmT,GAAO2kS,UAAUl2M,KAAzjB1uF,CAAqkB,aAAcC,GAAOrmQ,WAA1lBomQ,CAAsmB,aAAcC,GAAO23F,WAAWwuN,GAASnmT,GAAO2kS,UAAUl2M,MAChqB1uF,MAAmB,eAAgBC,GAAOmnT,gBAA1CpnT,CAA2D,iBAAkBC,GAAO2kS,UAAUl2M,KAC9F1uF,MAAiB,GACjBA,MAAkB,OAAQC,GAAOwmT,aAAexmT,GAAOiW,YAAYkwS,KACnEpmT,MAAiB,GACjBA,MAAkB,OAAQC,GAAOmrI,YACjCprI,MAAiB,GACjBA,MAAmB,eAAgBC,GAAOymT,aAAe,GAAK,QAC9D1mT,MAAkB,WAAYomT,GAA9BpmT,CAAuC,QAASC,GAAO2kS,UAAUl2M,IAAjE1uF,CAA4E,mBAAoBC,GAAO23F,WAAWwuN,GAASnmT,GAAO2kS,UAAUl2M,KAA5I1uF,CAAwJ,aAAcC,GAAO23F,YAC7K53F,MAAmB,iBAAkBC,GAAO2kS,UAAUl2M,KACtD1uF,MAAiB,GACjBA,MAAkB,WAAYC,GAAO0pM,aACrC3pM,MAAiB,GACjBA,MAAkB,gBAAgB,GAClCA,MAAiB,GACjBA,MAAkB,OAAQC,GAAO4uJ,WAAWu3J,GAASnmT,GAAO2kS,UAAUl2M,MAAczuF,GAAOiW,YAAYkwS,MAE3G,YAAqDrmT,GAAI/3T,IAAgB,EAAL+3T,IAChEC,MAAiB,EAAG,OAAQ,IAEhC,YAA8DD,GAAI/3T,KAClE,MAAMu4T,GAAM,SAAUmtD,IAAM,MAAO,CAAEvtW,MAAOutW,KAC5C,YAAgD3tD,GAAI/3T,IAElD,GAFkE,EAAL+3T,IAC3DC,MAAkB,EAAGqnT,GAAsD,EAAG,EAAG,cAAe,IACzF,EAALtnT,GAAQ,CACV,MAAMt/T,GAAUu/T,MAAqB,GACrCA,MAAkB,mBAAoBv/T,GAAQkmnB,0BAA9C3mT,CAAyE,0BAA2BA,MAAuB,EAAGO,GAAK9/T,GAAQ6mnB,uBAE/I,YAA6DvnT,GAAI/3T,IAAgB,EAAL+3T,KACxEC,MAA+B,GAC/BA,MAAc,EAAG,eACjBA,SAEJ,YAA8CD,GAAI/3T,IAUhD,GAVgE,EAAL+3T,KACzDC,MAAsB,EAAG,KAAM,IAC/BA,MAAsB,EAAG,MAAO,GAChCA,MAAkB,EAAGunT,GAA6C,EAAG,EAAG,OAAQ,IAChFvnT,MAAsB,EAAG,OAAQ,IACjCA,MAAkB,EAAGwnT,GAAwC,EAAG,EAAG,KAAM,IACzExnT,MAAkB,EAAGynT,GAAqD,EAAG,EAAG,eAAgB,IAChGznT,QACAA,QACAA,SACO,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAmB,4CAA6Ct+R,GAAO0pa,YACvEprI,MAAkB,cAAc,EAAhCA,CAAuC,aAAa,EAApDA,CAA2D,cAAc,EAAzEA,CAAgF,QAASt+R,GAAO4llB,oBAAhGtnT,CAAqH,iBAAkBt+R,GAAOyllB,eAA9InnT,CAA8J,cAAet+R,GAAOsO,aACpLgwR,MAAmB,iBAAkBt+R,GAAO4llB,qBAC5CtnT,MAAiB,GACjBA,MAAkB,OAAQt+R,GAAOgmlB,kBACjC1nT,MAAiB,GACjBA,MAAkB,QAASt+R,GAAO4llB,qBAClCtnT,MAAmB,iBAAkBt+R,GAAO4llB,qBAC5CtnT,MAAiB,GACjBA,MAAkB,OAAQt+R,GAAOillB,2BACjC3mT,MAAiB,GACjBA,MAAkB,QAASt+R,GAAOillB,4BAEtC,YAAmD5mT,GAAI/3T,IAOrD,GAPqE,EAAL+3T,KAC9DC,MAA+B,GAC/BA,MAAiB,EAAG,QACpBA,MAAsB,EAAG,QACzBA,MAAc,GACdA,QACAA,SACO,EAALD,GAAQ,CACV,MAAME,GAASD,QACfA,MAAiB,GACjBA,MAA8B,UAAWC,GAAO0nT,gBAAiB,kBACjE3nT,MAAiB,GACjBA,MAAyBC,GAAO54T,OAEpC,YAAoD04T,GAAI/3T,KACxD,MAAMsmX,GAAM,SAAUZ,GAAIC,GAAI4gC,GAAIiD,IAAM,MAAO,CAAEnqZ,KAAMqmX,GAAInwV,OAAQowV,GAAIzvM,WAAYqwO,GAAIvwL,gBAAiBwzL,KACxG,YAAsCzxF,GAAI/3T,IAExC,GAFwD,EAAL+3T,IACjDC,MAAkB,EAAG4nT,GAA4C,EAAG,EAAG,cAAe,GAC/E,EAAL7nT,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,mBAAoBt+R,GAAO+sB,SAA7CuxQ,CAAuD,0BAA2BA,MAAuB,EAAGsuD,GAAK5sV,GAAOr6B,KAAMq6B,GAAOnE,OAAQmE,GAAOw8I,WAAYx8I,GAAOs8L,mBAE3K,YAA0C+hG,GAAI/3T,IAAgB,EAAL+3T,KACrDC,MAAsB,EAAG,MAAO,GAChCA,MAAiB,EAAG,MAAO,GAC3BA,MAAiB,EAAG,MAAO,GAC3BA,SAEJ,YAAkED,GAAI/3T,KACtE,YAAoD+3T,GAAI/3T,IAAgB,EAAL+3T,IAC/DC,MAAkB,EAAG6nT,GAA0D,EAAG,EAAG,eAEzF,MAAMt5P,GAAM,SAAUb,GAAIC,GAAI4gC,IAAM,MAAO,CAAEhxX,OAAQmwV,GAAIxvM,WAAYyvM,GAAI3vJ,gBAAiBuwL,KAC1F,YAAsCxuF,GAAI/3T,IAExC,GAFwD,EAAL+3T,IACjDC,MAAkB,EAAG8nT,GAA4C,EAAG,EAAG,cAAe,GAC/E,EAAL/nT,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,mBAAoBt+R,GAAO+sB,SAA7CuxQ,CAAuD,0BAA2BA,MAAuB,EAAGuuD,GAAK7sV,GAAOnE,OAAQmE,GAAOw8I,WAAYx8I,GAAOs8L,mBAE9J,MAAMwiG,GAAkB,CACpBj/T,KAAM,mCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,mKAMhBonT,SAAN,SACI1rnB,cACIE,KAAKgH,QAAU,IAAIpC,MAEvBmrU,SACI/vU,KAAKgH,QAAQa,QAGrB2jnB,UAA8BplT,UAAO,SAA+Ch4R,IAAK,OAAO,IAAKA,IAAKo9kB,KAC1GA,GAA8B5gT,WAAsBnH,MAA0B,CAAEp4S,MAAOmgmB,GAA+BlzmB,QAASkzmB,GAA8BplT,YATvJolT,OAcN,MAAM7xS,GAAc,KAAM,EAIpBC,GAAY,IAAM,OAIlBs5C,GAAa,KAAM,EAInBo/F,GAAa,KAAM,EAInBj3D,GAAa,KAAM,EAInBulC,GAAY,KAAM,EAIlBmqE,GAAU,CAAC7/f,GAAG8H,KAASA,GAK7B,IAAIy4mB,GAAkB,UAASA,GAAN,MAIrB3rnB,cACIE,KAAKgH,QAAU,IAAIwzB,IAEvB8vX,OAAO1mY,GAAO0xC,IACVt1D,KAAKgH,QAAQqE,KAAK,CAAEiqD,YAAU1xC,SAAO0mY,QAAQ,IAEjDioE,SAAS3uc,GAAO0xC,IACZt1D,KAAKgH,QAAQqE,KAAK,CAAEiqD,YAAU1xC,SAAO0mY,QAAQ,MAGrDmhO,UAAmBrlT,UAAO,SAAoCh4R,IAAK,OAAO,IAAKA,IAAKq9kB,KACpFA,GAAmB7gT,WAAsBnH,MAA0B,CAAEp4S,MAAOogmB,GAAoBnzmB,QAAS,SAAU81B,IAAK,OAAOq9kB,GAAmBrlT,UAAKh4R,OAfxHq9kB,IAAT,GAoBlBC,GAAmB,UAASA,GAAN,MAItB5rnB,cACIE,KAAK2rnB,gBAAkB,IAE3BtjB,UAAUzklB,GAAQ,GAAI6vB,GAAc,IAChC,MAAQ,GAAEA,KAAcA,GAAczzC,KAAK2rnB,gBAAkB,KAAK/nmB,KAEtEgomB,cAAchomB,GAAOs+F,IACjB,OAAOt+F,GAAM5M,MAAMhX,KAAK2rnB,iBAAiB/8mB,MAAM,EAAGszG,IAAOz6F,KAAKznB,KAAK2rnB,iBAEvEE,eAAejomB,GAAQ,IACnB,MAAM84S,GAAQ94S,GAAM5M,MAAMhX,KAAK2rnB,iBAC/B,OAAKjvT,GAAM32T,OAGJnC,SAAS84T,GAAMA,GAAM32T,OAAS,GAAI,IAF9B+sH,IAIf5Q,MAAMt+F,IACF,OAAOA,GAAM5M,MAAMhX,KAAK2rnB,iBAAiB5lnB,SAGjD2lnB,UAAoBtlT,UAAO,SAAqCh4R,IAAK,OAAO,IAAKA,IAAKs9kB,KACtFA,GAAoB9gT,WAAsBnH,MAA0B,CAAEp4S,MAAOqgmB,GAAqBpzmB,QAAS,SAAU81B,IAAK,OAAOs9kB,GAAoBtlT,UAAKh4R,OAzB1Hs9kB,IAAT,GA8BnBI,GAA0B,UAASA,GAAN,MAI7BhsnB,cACIE,KAAKgH,QAAU,IAAIwzB,IAEvBuxlB,aAAanomB,IACT5jB,KAAKgH,QAAQqE,KAAKuY,MAG1BkomB,UAA2B1lT,UAAO,SAA4Ch4R,IAAK,OAAO,IAAKA,IAAK09kB,KACpGA,GAA2BlhT,WAAsBnH,MAA0B,CAAEp4S,MAAOygmB,GAA4BxzmB,QAAS,SAAU81B,IAAK,OAAO09kB,GAA2B1lT,UAAKh4R,OAZxI09kB,IAAT,GAc9B,MAAM7rL,GAAiB,sDAIjB1+a,GAAQ,CAAC7M,GAAS8kR,MACpB,MAAMqiL,GAAUnnc,GAAQwjG,SAAWxjG,GAAQonc,mBAAqBpnc,GAAQqnc,sBACxE,QAAKF,IAGEA,GAAQjob,KAAKlf,GAAS8kR,KAK3BwyV,GAAmB,CAACt3mB,GAAS8kR,MAC/B,IAAK73Q,SAASmjB,gBAAgB32B,SAASuG,IACnC,OAAO,KAEX,IAAI2nW,GAAS3nW,GACb,KAAkB,OAAX2nW,IAAuC,IAApBA,GAAO6H,UAAgB,CAC7C,GAAI3iW,GAAM86V,GAAQ7iF,IACd,OAAO6iF,GAEXA,GAASA,GAAO4zB,eAAiB5zB,GAAO5uN,WAE5C,OAAO,MAKLoxQ,GAAO,OAIPloC,GAAahzX,IAAoB,MAAVA,GAIvBs8gB,GAAWt8gB,IAAoB,MAAVA,GAIrBg8B,GAAWh8B,IAAU2K,MAAMqxB,QAAQh8B,IAQnCsonB,GAAatonB,IAA2B,kBAAVA,GAI9BuonB,GAAex3mB,KACjB,MAAM8kR,GAAW,qBACjB,SAAKk8F,QAGDhhX,GAAQ2rC,QACD3rC,GAAQ2rC,QAAQm5O,IAGhBwyV,GAAiBt3mB,GAAS8kR,IAN1B,MAYTgnK,GAAe9rb,KACjB,GAAIA,GAAQogX,QAAS,CACjB,MAAMA,GAAUpgX,GAAQogX,QAAQz5V,cAC1Bq4V,GAAWh/W,GAAQozC,aAAa,YAChC4piB,GAAuB,OAAbh+N,GAChB,IAAIitE,GAAyB,OAAbjtE,KAAsBg+N,GACtC,OAAIzxJ,GAAezkB,KAAK1mD,MACpB6rE,IAAajsb,GAAQrM,WAAaqplB,IAE/B/wJ,GAEX,OAAO,GAKLupK,GAAax1lB,KAEf,KAAKghX,UACD,OAAO,KAEX,IAAItwW,GAAO1Q,GACX,KAAO0Q,KAAS7D,GAAM6D,GALA,yEAMlBA,GAAOA,GAAKqoI,WAEhB,OAAIroI,GACO7D,GAAM6D,GAAM,gDADvB,GAuBE+mmB,GAAoBz3mB,IACfiiX,GAAUq1P,GAAiBt3mB,GAAS,sCAczCi8X,GAAY,CAACj8X,GAAS+oJ,KACjBuqK,QAVK,EAAC5iT,GAAMgoZ,MACnB,KAAOhoZ,KAASgoZ,GAAUhoZ,KACtBA,GAAOA,GAAKqoI,WAEhB,OAAOroI,IAMQi7B,CAAQ3rC,GAAU0Q,IAASA,KAASq4I,KAKjD2ud,GAAiB13mB,IAAYA,GAAQxG,cAAcquC,cAAc,oBAIjE8vkB,GAAUjnmB,IAASA,GAAOA,GAAK0iC,aAAa,kBAAoB,GAIhEugjB,GAAar1lB,KAAUA,IAAQ,IAAI4Q,MAInC0omB,GAAiB,CAACplnB,GAAO4U,MACtB66W,GAAUzvX,MAAWyvX,GAAU76W,KAG7B66W,GAAUzvX,KAAUyvX,GAAU76W,KAAW5U,GAAM8L,KAAKsiD,WAAax5C,GAAO9I,KAAKsiD,SAKlFi3jB,GAAenwK,IACZzlF,GAAUylF,IAGRA,GAAOppc,KAAKsiD,SAFR8mZ,GAOTowK,GAA4BhmnB,IAAKA,IAAK8H,MAAMqxB,QAAQn5B,KAAmB,IAAbA,GAAET,OAO5D0mnB,GAAa,CAACj6jB,GAAOsga,IAAQ9/Z,YAAUyoZ,cAAY30b,SAAQojC,GAAWstC,GAAQ,KAChF,MAAM3sC,GAA6B,iBAAdX,GAAyBA,GAAYA,GAAUstC,IACpEhlC,GAAM5rD,QAASq0X,KAEX,MAAMyxP,IAD8B,iBAAb15jB,GAAwB25jB,GAAoB9hkB,GAAOmI,GAAUyoZ,IAAczoZ,IAC1EioU,GAAQ3lU,SAAUw9Z,IAC1C73F,GAAQyxP,QAAUA,GAClBzxP,GAAQhnD,QAAUy4S,GAClBzxP,GAAQ2xP,iBAAkB,EACtBF,IACAG,GAAe5xP,GAAQ5e,QAEvB4e,GAAQz8T,UAAYy8T,GAAQz8T,SAASz4D,OAAS,IACjC,WAAT+gB,IAAsB4lmB,GAItBI,GAAe7xP,GAAQz8T,UAHvBiujB,GAAWxxP,GAAQz8T,SAAUs0Z,GAAM,CAAE9/Z,YAAUyoZ,cAAY30b,SAAQojC,GAAWstC,GAAQ,OAQhGq1hB,GAAkBznmB,MACfuxW,GAAUvxW,MAGfA,GAAKwnmB,iBAAkB,EACvBxnmB,GAAK6uT,SAAU,EACX0iD,GAAUvxW,GAAKi3V,UAAYj3V,GAAKi3V,OAAOuwQ,iBACvCC,GAAeznmB,GAAKi3V,UAGtBywQ,GAAkBrrf,KACpBA,GAAM76H,QAAQwe,KACVA,GAAK6uT,SAAU,EACX7uT,GAAKo5C,UACLsujB,GAAe1nmB,GAAKo5C,aAK1Bivc,GAAY,CACdt/f,SAFO,CAACgkB,GAAGD,KAAMC,GAAErS,QAAQoS,KAAM,EAGjCgue,eAHyC,CAAC/te,GAAGD,MAAuB,IAAjBC,GAAErS,QAAQoS,IAI7D66lB,WAJ6E,CAAC56lB,GAAGD,KAA8B,IAAxBC,GAAE3B,YAAY0B,GAAG,GAKxG8te,iBALuH,CAAC7te,GAAGD,MAA8B,IAAxBC,GAAE3B,YAAY0B,GAAG,GAMlJ86lB,SANkK,CAAC76lB,GAAGD,KAAMC,GAAErS,QAAQoS,GAAGC,GAAEpsB,OAASmsB,GAAEnsB,SAAW,EAOjNk6f,eAPyN,CAAC9te,GAAGD,KAAMC,GAAErS,QAAQoS,GAAGC,GAAEpsB,OAASmsB,GAAEnsB,QAAU,GAerQ4mnB,GAAsB,CAAC9hkB,GAAOmI,GAAUyoZ,KAAe,CAACnmZ,GAAUw9Z,KANpD,EAACjX,GAASJ,KAAe,CAACtpb,GAAGD,KACzCupb,GACOI,GAAQ1pb,GAAEkJ,cAAenJ,GAAEmJ,eAE/Bwgb,GAAQ1pb,GAAGD,IAE2D+6lB,CAAYx/G,GAAUz6c,IAAWyoZ,GAAjCwxK,IAA6CnzL,OAAOjvY,GAAPivY,CAAcxkY,IAAWw9Z,IAIjJo6J,GAAiB,CAACz5kB,GAAa+hR,KAC1B,CAAC/hR,GAAa+hR,IAAWzoT,OAAO6ra,IAAQjiD,GAAUiiD,KAAOnxZ,KAAK,KAsCnE0lmB,GAAa,CAACh7lB,GAAGD,MACnB,GAAIC,GAAEpsB,SAAWmsB,GAAEnsB,OACf,OAAO,EAEX,MAAMM,GAAS,IAAIgiE,IAAIn2C,IACvB,OAAOC,GAAEpf,MAAMvM,IAAKH,GAAO4qB,IAAIzqB,MAG7BsxkB,GAAO1yjB,IAASA,IAAQ,GACxBgomB,GAAehomB,IAAS0yjB,GAAK1yjB,IAAMo5C,UAAY,GAC/C6ujB,GAAmB5rf,KACrB,IAAKnzH,MAAMqxB,QAAQ8hG,KAA2B,IAAjBA,GAAM17H,OAC/B,OAAO,KAIX,QAAS6d,GADS0pmB,GADOvnnB,OACM,EACH6d,IAAS,EAAGA,IAAS,EAAG,CAChD,MAAMwB,GAAOq8G,GAAM79G,IACnB,GAAIwB,GAAK6uT,QACL,OAAO7uT,GAGf,OAAO,MAKX,SACItlB,cACIE,KAAKutnB,GAAK,IAAI7B,GACd1rnB,KAAKyhI,MAAQ,GAEjB+rf,mBACI,OAAQxtnB,KAAKyhI,OAAS,IAAIl7H,KAAK6e,IAAQA,GAAK6uT,SAEhDo5S,kBACI,IAAIjomB,GAAOiomB,GAAgBrtnB,KAAKyhI,OAChC,KAAOk1P,GAAUvxW,KAASgomB,GAAahomB,IAAMrf,OAAS,GAAG,CACrD,MAAMy4D,GAAW4ujB,GAAahomB,IACxBqomB,GAAmBJ,GAAgB7ujB,IACzC,IAAKm4T,GAAU82P,IACX,OAAOromB,GAEXA,GAAOqomB,GAEX,OAAOromB,GAEX8mmB,YAAYtomB,IACR,MAAQqlO,SAAS6uV,GAAK93kB,KAAK+0I,SAASnxH,KAC9B2jlB,GAAUt+W,IAAQjpP,KAAKwtnB,mBAC7B,OAAO11C,GAAKyvB,IAAS3jlB,QAAUA,GAAQ5jB,KAAK0tnB,eAAenmB,GAAS,GAAKA,GAE7EomB,qBACI,OAAO3tnB,KAAKyhI,MAAMl7H,KAAM6e,KACZA,GAAK/c,UAAY+c,GAAK6uT,SAGtCl/L,SAASnxH,IACL,OAAO5jB,KAAKuG,KAAKqd,GAAO5jB,KAAKyhI,OAEjC2pb,WAAWxniB,IACP,MAAMgqmB,GAAc5tnB,KAAKutnB,GAAGrrgB,MAAMt+F,IAAS,EAC3C,OAAO5jB,KAAK+0I,SAAS/0I,KAAKutnB,GAAG3B,cAAchomB,GAAOgqmB,KAEtDC,iBAAiBjqmB,IACb,MAAMwB,GAAOplB,KAAK+0I,SAASnxH,IAE3B,OAAO46C,GADuBp5C,IACd7e,KAAMk4D,IAAUA,GAAMw1Q,SAE1C65S,gBAAgB96mB,IACZ,MAAM4Q,GAAQ5Q,GAAK4Q,MACby4V,GAASr8W,KAAKorjB,WAAWxniB,IACzBmqmB,GAAa/tnB,KAAKutnB,GAAG1B,eAAejomB,IAEpCoqmB,GADYhunB,KAAKy9J,UAAU4+M,IAAQztW,MAAM,EAAGm/mB,IAChBh7mB,MAAMqS,KAASA,GAAK6uT,SACtD,GAAmB,IAAf85S,IAAoBC,GACpB,OAAO3xQ,GAEX,MAAM4xQ,GAAcjunB,KAAK+0I,SAASnxH,IAClC,IAAIqlO,GAAOjpP,KAAK0tnB,eAAeO,IAAa,GAC5C,GAAIhlY,GAAM,CACN,IAAIzqL,GAAWx+D,KAAKy9J,UAAUwrF,IAC9B,KAAOzqL,GAASz4D,OAAS,GAAKy4D,GAASza,KAAK3+B,IAAQA,GAAK6uT,UACrDhrF,GAAOokY,GAAgB7ujB,IACvBA,GAAWx+D,KAAKy9J,UAAUwrF,IAGlC,OAAOA,GAEXilY,gBAAgBl7mB,IACZ,MAAMwrD,GAAWx+D,KAAKy9J,UAAUzqJ,IAC1Bm7mB,GAAqB3vjB,GAASza,KAAK0a,IAASA,GAAMw1Q,SACxD,OAAwB,IAApBz1Q,GAASz4D,QAAiBoonB,GAGvB3vjB,GAASj4D,KAAKk4D,IAASA,GAAMw1Q,SAFzBj0U,KAAK0tnB,eAAe16mB,GAAM,GAIzCo7mB,aAAalpnB,GAAI0e,GAAOvb,GAAUgmnB,IAAiB,EAAOp6S,IAAU,GAChE,MAAMz1Q,GAAW,GACX0jD,GAAQliH,KAAKutnB,GAAGrrgB,MAAMt+F,IACtBy4V,GAASr8W,KAAKorjB,WAAWxniB,KAC3By4V,IAAoB,IAAVn6P,KAEVliH,KAAKw+E,OADQ,CAAEt5E,MAAIs5D,YAAU56C,SAAOy4V,UAAQh0W,YAAUgmnB,kBAAgBp6S,YACpDooC,IAG1BiyQ,eAAeppnB,GAAI0e,IACf,MAAMwB,GAAOplB,KAAKuG,KAAKqd,GAAO5jB,KAAKyhI,OACnC,IAAKr8G,IAAQA,GAAKlgB,KAAOA,GACrB,OAEJ,MAAMs5D,GAAWx+D,KAAKy9J,UAAUr4I,GAAKi3V,QACrC79S,GAAS16C,OAAO06C,GAAS1+C,QAAQsF,IAAO,GAE5CmpmB,WAAW9sf,IACP,MAAMjjE,GAAWijE,GAAM10H,OAAOqY,IAAQuxW,GAAUvxW,KAChD,OAAKo5C,IAAaA,GAASz4D,OAGpB/F,KAAKutnB,GAAGrrgB,MAAM1jD,GAAS,GAAG56C,OAFtB,EAIf65I,UAAUr4I,IACN,OAAOA,GAAOA,GAAKo5C,SAAWx+D,KAAKyhI,MAEvCl7H,KAAKqd,GAAO69G,IACR,MAAM8sf,GAAavunB,KAAKuunB,WAAW9sf,IAC7B+sf,GAAexunB,KAAKutnB,GAAG3B,cAAchomB,GAAO2qmB,IAC5CE,GAASF,KAAevunB,KAAKutnB,GAAGrrgB,MAAMt+F,IACtCwB,GAAOq8G,GAAMl7H,KAAKuH,IAAKA,IAAKA,GAAE8V,QAAU4qmB,IAC9C,OAAKppmB,GAGEqpmB,GAASrpmB,GAAOplB,KAAKuG,KAAKqd,GAAOwB,GAAKo5C,UAFlC,KAIfggB,OAAOp5D,GAAMi3V,IACKr8W,KAAKy9J,UAAU4+M,IACvBv4V,OAAO9jB,KAAKutnB,GAAG1B,eAAezmmB,GAAKxB,OAAQ,EAAGwB,IAExDsomB,eAAetomB,GAAMgN,IACjB,IAAKhN,GACD,OAAO,KAEX,MAAMi3V,GAASr8W,KAAKorjB,WAAWhmiB,GAAKxB,OAC9B65I,GAAYz9J,KAAKy9J,UAAU4+M,IACjC,IAAIowK,GAAgBhvX,GAAU39I,QAAQsF,IAAQgN,GAC1CsjkB,GAAWj4b,GAAUgvX,IACzB,KAAO91J,GAAU++N,KAAW,CACxB,GAAIA,GAASzhR,QACT,OAAOyhR,GAEXjpE,IAAiBr6f,GACjBsjkB,GAAWj4b,GAAUgvX,IAEzB,OAAOzshB,KAAK0tnB,eAAerxQ,GAAQjqV,KAO3C,IAAI+qW,GAAiB,UAASA,GAAN,MACpBr9X,YAAYmzX,IACRjzX,KAAKizX,aAAeA,GACpBjzX,KAAK0unB,QAAU,IAAIl0lB,IACnBx6B,KAAK2unB,MAAQ,IAAIn0lB,IACjBx6B,KAAK4unB,OAAS,IAAIp0lB,IAClBx6B,KAAK6unB,QAAU,IAAIr0lB,IACnBx6B,KAAK8unB,SAAW,IAAIt0lB,IACpBx6B,KAAK+ogB,WAAY,EACjB/ogB,KAAKm+b,QAAU,EACVp6T,cAAe,IAAM/jI,KAAKu4X,SAASv4X,KAAKwrQ,MAAMsiX,gBAAgB9tnB,KAAK+unB,iBACnEhrf,gBAAiB,IAAM/jI,KAAKu4X,SAASv4X,KAAKwrQ,MAAM0iX,gBAAgBlunB,KAAK+unB,iBACrEhrf,gBAAiB,KAAO/jI,KAAKmsnB,kBAAqBnsnB,KAAKsqZ,OAAO,CAC3DA,OAAQtqZ,KAAKizX,aAAavuD,IAC1Bz9Q,UAAWjnD,KAAKizX,aAAavuD,IAAM1kU,KAAKgvnB,wBAA0BhvnB,KAAKivnB,gBAE1Elrf,iBAAkB,KAAO/jI,KAAKmsnB,kBAAqBnsnB,KAAKsqZ,OAAO,CAC5DA,QAAStqZ,KAAKizX,aAAavuD,IAC3Bz9Q,UAAWjnD,KAAKizX,aAAavuD,IAAM1kU,KAAKivnB,aAAejvnB,KAAKgvnB,2BAE/Djrf,WAAY,IAAM/jI,KAAKu4X,SAASv4X,KAAKwrQ,MAAMgiX,qBAC3Czpf,UAAW,IAAM/jI,KAAKu4X,SAASv4X,KAAKwrQ,MAAM6hX,oBAC1Ctpf,YAAa,IAAM/jI,KAAKkkd,eACxBngV,YAAa,IAAM/jI,KAAKkvnB,eAE7BlvnB,KAAKynD,WAAY,EACjBznD,KAAKmvnB,OAAS,IAAI1lG,GAClBzphB,KAAKgvnB,wBAA0BhvnB,KAAKgvnB,wBAAwBnpmB,KAAK7lB,MACjEA,KAAKivnB,aAAejvnB,KAAKivnB,aAAappmB,KAAK7lB,MAE3CwrQ,YACA,OAAOxrQ,KAAKmvnB,OAEZ3jX,UAAMA,IACNxrQ,KAAKmvnB,OAAS3jX,GAEd+/J,kBACA,OAAO88L,GAAUromB,KAAK+mmB,aAAe,KAErCqoB,uBACA,OAAOpvnB,KAAK+mmB,YAAc/mmB,KAAK+mmB,WAAWvoiB,SAASz4D,OAAS,EAE5DomnB,uBACA,OAAOnsnB,KAAK+mmB,YAAc/mmB,KAAK+mmB,WAAWsnB,eAE1CU,oBACA,OAAO/unB,KAAK+mmB,YAAc/mmB,KAAKwrQ,MAAMmiX,qBAEzCp1P,SAASvlX,KACAhT,KAAK+ogB,YAAc/1f,IAAQhT,KAAK6zK,SAASw0b,GAAUr1lB,OAGxDhT,KAAKynD,WAAY,EACjBznD,KAAK+mmB,WAAa/zlB,IAAQhT,KAAK+mmB,WAC/B/mmB,KAAKqvnB,cAETC,eAAe1rmB,IACX5jB,KAAKu4X,SAASv4X,KAAKwrQ,MAAM4/S,WAAWxniB,KAExC2rmB,cAAc3rmB,KACLA,IAGL5jB,KAAKu4X,SAASv4X,KAAKwrQ,MAAMz2H,SAASnxH,KAEtC4rmB,gBAAgB5rmB,KACPA,IAASyklB,GAAUromB,KAAK+unB,iBAAmBnrmB,KAGhD5jB,KAAK+mmB,WAAa/mmB,KAAKwrQ,MAAM0gX,YAAYtomB,IACzC5jB,KAAKqvnB,cAETI,oBACQzvnB,KAAK+mmB,aAGT/mmB,KAAK+mmB,WAAa/mmB,KAAKwrQ,MAAMgiX,mBAC7BxtnB,KAAKqvnB,cAETl3P,cACSn4X,KAAK+ogB,YAAc/ogB,KAAKynD,YAG7BznD,KAAKynD,WAAY,EACjBznD,KAAKqvnB,cAET5jI,WAAW7ne,IACF5jB,KAAKkzX,WAAWtvW,KACjB5jB,KAAK4unB,OAAOvjnB,KAAKuY,IAGzB8rmB,YAAY9rmB,IACH5jB,KAAKkzX,WAAWtvW,KACjB5jB,KAAK6unB,QAAQxjnB,KAAKuY,IAG1B+rmB,eAAe/rmB,KACN+yW,GAAU/yW,KAGf5jB,KAAK8unB,SAASzjnB,KAAKuY,IAEvBiwJ,SAASjwJ,IACL,QAAKA,IAGE5jB,KAAKynD,WAAaznD,KAAKura,cAAgB3nZ,GAElD48a,YAAY58a,IACR,OAAOyklB,GAAUromB,KAAK+unB,iBAAmBnrmB,GAE7CsvW,WAAWtvW,IACP,OAAO5jB,KAAKwrQ,MAAMz2H,SAASnxH,IAAOvb,SAEtC+lnB,aAAalpnB,GAAI0e,GAAOvb,GAAUgmnB,IAAiB,EAAOp6S,IAAU,GAChE,MAAM27S,GAAc5vnB,KAAKwrQ,MAAMz2H,SAASnxH,IACpC+yW,GAAUi5P,MACV5vnB,KAAKwrQ,MAAM8iX,eAAesB,GAAY1qnB,GAAI0qnB,GAAYhsmB,OAClD5jB,KAAK6zK,SAASjwJ,KACd5jB,KAAKm4X,cAGbn4X,KAAKwrQ,MAAM4iX,aAAalpnB,GAAI0e,GAAOvb,GAAUgmnB,GAAgBp6S,IAEjEq6S,eAAeppnB,GAAI0e,IACX5jB,KAAK6zK,SAASjwJ,KACd5jB,KAAKsvnB,eAAe1rmB,IAExB5jB,KAAKwrQ,MAAM8iX,eAAeppnB,GAAI0e,IAElC0xG,KAAKrsH,IACD,IAAKjJ,KAAK+ogB,UACN,OAEJ,MAAM8mH,GAAa7vnB,KAAKm+b,QAAQl1b,GAAEksX,UAC7B06P,KAGLA,KACA5mnB,GAAEi5C,kBAENooW,QAASA,UAAQrjW,eACb,MAAMrjC,GAAQyklB,GAAUromB,KAAK+mmB,aACxBnjlB,IAASqjC,GAAUrjC,KAGxB5jB,KAAK8vnB,aAAaxlO,IAEtB2kO,eACI,OAAIjvnB,KAAKovnB,mBAGTpvnB,KAAKu4X,SAASv4X,KAAKwrQ,MAAM4/S,WAAWi9C,GAAUromB,KAAK+mmB,eAC5C,GAEXioB,0BACI,QAAKhvnB,KAAKovnB,mBAGVpvnB,KAAKu4X,SAASv4X,KAAKwrQ,MAAMqiX,iBAAiBxlB,GAAUromB,KAAK+mmB,eAClD,GAEX+oB,aAAaxlO,IACTtqZ,KAAK0unB,QAAQrjnB,KAAKrL,KAAK+vnB,gBAAgBzlO,KAE3C+kO,aACIrvnB,KAAK2unB,MAAMtjnB,KAAKrL,KAAK+vnB,mBAEzBA,gBAAgBzlO,IAAS,GACrB,MAAQ,CAAEA,UAAQ1mY,MAAO5jB,KAAKura,YAAa9jX,UAAWznD,KAAKynD,WAE/Dy8Z,eACSlkd,KAAK+ogB,YAGN/ogB,KAAKmsnB,iBACLnsnB,KAAK2vnB,eAAe3vnB,KAAKura,aAGzBvra,KAAK0vnB,YAAY1vnB,KAAKura,cAG9B2jN,eACSlvnB,KAAK+ogB,YAGN/ogB,KAAKmsnB,iBACLnsnB,KAAK2vnB,eAAe3vnB,KAAKura,aAGzBvra,KAAKyrf,WAAWzrf,KAAKura,gBAIjCpuC,UAAkB/2D,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK+uV,IAAmB15D,MAAgB4C,QACrH82D,GAAkBvyD,WAAsBnH,MAA0B,CAAEp4S,MAAO8xW,GAAmB7kX,QAAS,SAAU81B,IAAK,OAAO+uV,GAAkB/2D,UAAKh4R,OACpJ+uV,GAAoB3uV,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QAC/Dq2D,IArM2BA,IAAT,GA0MjB6yP,GAAmB,UAASA,GAAN,MAItBlwnB,cACIE,KAAKgH,QAAU,IAAIwzB,IAEvBy1lB,eAAej9mB,GAAMwrD,IACjBx+D,KAAKgH,QAAQqE,KAAK,CAAE2H,QAAMwrD,gBAGlCwxjB,UAAoB5pT,UAAO,SAAqCh4R,IAAK,OAAO,IAAKA,IAAK4hlB,KACtFA,GAAoBplT,WAAsBnH,MAA0B,CAAEp4S,MAAO2kmB,GAAqB13mB,QAAS,SAAU81B,IAAK,OAAO4hlB,GAAoB5pT,UAAKh4R,OAZ1H4hlB,IAAT,GAoEnBl+J,GAAqB,UAASA,GAAN,MACxBhyd,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BirJ,UAAsB1rJ,UAAO,SAAuCh4R,IAAK,OAAO,IAAKA,IAAK0jb,IAAuBruJ,MAAyBA,MAAoB,KAC9JquJ,GAAsB3mJ,UAAqB1H,MAAyB,CAAE37T,KAAMgqd,GAAuBjud,UAAW,CAAC,CAAC,GAAI,4BAA6B,OACjJiud,GAAwBtjb,EAAW,CAAEq8R,EAAQ,KAAGE,UAC5CjD,EAAW,oBAAqB,CAACC,SAClC+pJ,IAT+BA,IAAT,GAqBrBo+J,GAA+B,UAASA,GAAN,MAClCpwnB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BqpT,UAAgC9pT,UAAO,SAAiDh4R,IAAK,OAAO,IAAKA,IAAK8hlB,IAAiCzsT,MAAyBA,MAAoB,KAC5LysT,GAAgC/kT,UAAqB1H,MAAyB,CAAE37T,KAAMoonB,GAAiCrsnB,UAAW,CAAC,CAAC,GAAI,sCAAuC,OAC/KqsnB,GAAkC1hlB,EAAW,CAAEq8R,EAAQ,KAAGE,UACtDjD,EAAW,oBAAqB,CAACC,SAClCmoT,IATyCA,IAAT,GAiB/Bh9J,GAAkB,UAASA,GAAN,QAEzBA,UAAmB9sJ,UAAO,SAAoCh4R,IAAK,OAAO,IAAKA,IAAK8kb,KACpFA,GAAmBtoJ,WAAsBnH,MAA0B,CAAEp4S,MAAO6nc,GAAoB56c,QAAS,SAAU81B,IAAK,OAAO8kb,GAAmB9sJ,UAAKh4R,OAHxH8kb,IAAT,GAWlBC,GAAmB,UAASA,GAAN,QAE1BA,UAAoB/sJ,UAAO,SAAqCh4R,IAAK,OAAO,IAAKA,IAAK+kb,KACtFA,GAAoBvoJ,WAAsBnH,MAA0B,CAAEp4S,MAAO8nc,GAAqB76c,QAAS,SAAU81B,IAAK,OAAO+kb,GAAoB/sJ,UAAKh4R,OAH1H+kb,IAAT,GAQnB9iD,GAAgB,UAASA,GAAN,MAInBvwa,cACIE,KAAKgH,QAAU,IAAIwzB,IAEvB21lB,gBAAgBvsmB,IACZ,OAAO5jB,KAAKqqd,aAAezmc,GAE/BwsmB,iBAAiBxsmB,GAAOmqB,IAChB/tC,KAAKqqd,aAAezmc,KAAsB,IAAbmqB,GAC7B/tC,KAAKqqd,WAAa,MAEZrqd,KAAKqqd,YAAct8a,KACzB/tC,KAAKqqd,WAAazmc,IAG1B0pB,OAAO1pB,GAAO0xC,IACVt1D,KAAKgH,QAAQqE,KAAK,CAAEiqD,YAAU1xC,aAGtCysZ,UAAiBjqG,UAAO,SAAkCh4R,IAAK,OAAO,IAAKA,IAAKiiY,KAChFA,GAAiBzlG,WAAsBnH,MAA0B,CAAEp4S,MAAOglZ,GAAkB/3Z,QAAS,SAAU81B,IAAK,OAAOiiY,GAAiBjqG,UAAKh4R,OAvBpHiiY,IAAT,GAyBpB,MAAMggN,GAAc,OAIpB,IAAIC,GAAqB,UAASA,GAAN,MAIxBxwnB,cACIE,KAAK2F,IAAM,IAAIg5C,IAEnB2lH,QACItkK,KAAK2F,IAAI25C,QAEb8ukB,aAAap7mB,GAAMqpW,IACf,MAAMk0Q,GAAgB,CAClB/xjB,SAAU,GACVxrD,QACAqpW,OAAQr8W,KAAKgT,KAAKq1lB,GAAUhsP,MAEhCr8W,KAAK2F,IAAI0sB,IAAIrf,GAAK4Q,MAAO2smB,IAE7BC,iBAAiB5smB,GAAO46C,IACpB,MAAMxrD,GAAOhT,KAAKgT,KAAK4Q,KAClB5Q,KAGLA,GAAKwrD,SAAWA,IAEpB8vjB,eAAe1qmB,GAAO0xC,IAClB,MAAMjvB,GAAUrmC,KAAKgT,KAAK4Q,IACtByiB,IAAWA,GAAQrzB,KAAKsiD,WAAaA,KACrCt1D,KAAK2F,IAAIwZ,OAAOyE,IACZyiB,GAAQg2U,QAAUh2U,GAAQg2U,OAAO79S,WACjCn4B,GAAQg2U,OAAO79S,SAAWn4B,GAAQg2U,OAAO79S,SAASzxD,OAAOiG,IAAQA,GAAKsiD,WAAaA,MAI/Fm7jB,YAAY7smB,GAAO5Q,GAAMqpW,KAChBrpW,KAGLhT,KAAKsunB,eAAe1qmB,GAAO5Q,GAAKsiD,UAChCt1D,KAAKounB,aAAap7mB,GAAMqpW,IACxBr8W,KAAK0wnB,YAAY19mB,GAAMqpW,KAE3Bo2G,WAAW7uc,IACP,MAAM5Q,GAAOhT,KAAKgT,KAAK4Q,IACvB,OAAK5Q,GAGE,CACHwrD,SAAUx+D,KAAK2wnB,YAAY39mB,GAAKwrD,UAChCxrD,KAAMA,GAAKA,KACXqpW,OAAQrpW,GAAKqpW,QALN,KAQfu0Q,QAAQhtmB,IACJ,OAAO5jB,KAAK2F,IAAIsrB,IAAIrN,IAExB5Q,KAAK4Q,IACD,OAAO5jB,KAAK2F,IAAIkZ,IAAI+E,KAAU,KAElC8smB,YAAY19mB,GAAMqpW,IACd,GAAIA,GAAQ,CACR,MAAMw0Q,GAAa7wnB,KAAKgT,KAAKqpW,GAAOz4V,OAC9BA,GAAQhgB,SAASysnB,GAAYzpR,KAAK5zV,GAAK4Q,OAAO,GAAI,IACxDitmB,GAAWryjB,SAAWqyjB,GAAWryjB,UAAY,GAC7CqyjB,GAAWryjB,SAAS16C,OAAOF,GAAO,EAAG5Q,KAG7C29mB,YAAYnyjB,GAAW,IACnB,OAAOA,GAAS74D,IAAIsa,KAChB,MAAQjN,QAAMqpW,UAAQ79S,aAAax+D,KAAKgT,KAAKiN,GAAE2D,OAC/C,MAAO,CACH46C,SAAUx+D,KAAK2wnB,YAAYnyjB,IAC3BxrD,QACAqpW,eAKhBi0Q,UAAsBlqT,UAAO,SAAuCh4R,IAAK,OAAO,IAAKA,IAAKkilB,KAC1FA,GAAsB1lT,WAAsBnH,MAA0B,CAAEp4S,MAAOilmB,GAAuBh4mB,QAAS,SAAU81B,IAAK,OAAOkilB,GAAsBlqT,UAAKh4R,OA/E9HkilB,IAAT,GAiFzB,MACM/kT,GAAY,CACdkgT,GACAC,GACA4E,GACAxE,GACAkE,GACA7yP,GACAkzC,GACAm7M,GACA1kT,KACA,CACIjuR,QAASkuR,KACTC,SAAU,kBAEd,CACInuR,QAASq6a,GACTp6a,aAAa/nC,SAAW,IAAM2id,KAElC,CACI76a,QAASs6a,GACTr6a,aAAa/nC,SAAW,IAAM2id,MAatC,IAAIA,GAAiB,UAASA,GAAN,MACpB5zd,YAAY4U,GAASmuO,GAAmBiuY,GAAep2P,GAAmBq2P,GAAqB19M,GAAkB29M,GAAuB1pkB,GAAQ49G,GAAU+rd,GAAwBh+P,IAC9KjzX,KAAK0U,QAAUA,GACf1U,KAAK6iP,kBAAoBA,GACzB7iP,KAAK8wnB,cAAgBA,GACrB9wnB,KAAK06X,kBAAoBA,GACzB16X,KAAK+wnB,oBAAsBA,GAC3B/wnB,KAAKqza,iBAAmBA,GACxBrza,KAAKgxnB,sBAAwBA,GAC7BhxnB,KAAKsnD,OAASA,GACdtnD,KAAKklK,SAAWA,GAChBllK,KAAKixnB,uBAAyBA,GAC9BjxnB,KAAKizX,aAAeA,GACpBjzX,KAAKk2X,YAAa,EAClBl2X,KAAKizP,KAAO,OAIZjzP,KAAK4pnB,uBAAyB,GAE9B5pnB,KAAKkxnB,WAAa,IAAMlxnB,KAAK8S,KAI7B9S,KAAKiwnB,eAAiB,IAAIrrnB,MAI1B5E,KAAK0nD,OAAS,IAAI9iD,MAIlB5E,KAAKwnD,QAAU,IAAI5iD,MAInB5E,KAAKsqZ,OAAS,IAAI1lZ,MAIlB5E,KAAKuyd,SAAW,IAAI3td,MAKpB5E,KAAKmxnB,cAAgB,IAAIvsnB,MAIzB5E,KAAKoxnB,SAAW,IAAIxsnB,MAKpB5E,KAAKmyd,kBAAoB,IAAIvtd,MAU7B5E,KAAKqxnB,SAAW,IAAIzsnB,MAIpB5E,KAAKsxnB,YAAc,IAAI1snB,MAKvB5E,KAAKu2d,QAAU,IAAI3xd,MAKnB5E,KAAK47R,WAAa,IAAIh3R,MAKtB5E,KAAK65U,cAAgB,IAAIj1U,MAKzB5E,KAAK2lE,gBAAkB,IAAI/gE,MAI3B5E,KAAKinC,aAAe,IAAIriC,MAIxB5E,KAAKs3d,UAAY,IAAI1yd,MAIrB5E,KAAKuxnB,aAAe,IAAI3snB,MA8BxB5E,KAAK+qgB,QAAUA,GAIf/qgB,KAAKkzX,WAAaA,GAKlBlzX,KAAK4gc,UAAYA,GAIjB5gc,KAAK+ogB,WAAY,EAKjB/ogB,KAAKw+D,SAAW,OAAMl5B,MAAG,IAKzBtlC,KAAKy3c,cAAe,EAMpBz3c,KAAKkwE,YAAa,EAIlBlwE,KAAK+M,OAAS,GACd/M,KAAK6uc,YAAa,EAClB7uc,KAAKkqnB,aAAc,EACnBlqnB,KAAKq9D,YAAa,EAClBr9D,KAAKmqnB,cAAe,EACpBnqnB,KAAK6zK,UAAW,EAChB7zK,KAAK8S,KAAO,IAAIpI,IAAgB,IAChC1K,KAAKwxnB,UAAW,EAChBxxnB,KAAKipC,cAAgB,IAAIi7Y,MACzBlkb,KAAKs2Y,iBAAmB,MACxB3xE,MAAgBV,IAGhBh4T,gBACA,OAAOjM,KAAKizX,aAAavuD,IAAM,MAAQ,MAKvCl6T,YAAQ7G,IACR3D,KAAKwxnB,SAAW7tnB,GAEhB6G,cACA,OAAQxK,KAAKwxnB,SAKbxH,oBAAgB93jB,IAChBlyD,KAAK23c,aAAezlZ,GAKpBk4jB,8BAA0Bl4jB,IAC1BlyD,KAAKyxnB,uBAAyBv/jB,GAM9BuvE,UAAM99H,IACN3D,KAAK8S,KAAKzH,KAAK1H,IAAS,IACxB3D,KAAKixnB,uBAAuBlhT,SAE5BtuM,YACA,OAAOzhI,KAAK8S,KAAKnP,MAMjBg2U,kBACA,OAAO35U,KAAK0xnB,cAAgB/3S,GAE5BA,gBAAY9pU,IACZ7P,KAAK0xnB,aAAe7hnB,GACpB7P,KAAKkqnB,YAAcliT,QAAQhoU,KAAK2xnB,aAAe3xnB,KAAK0xnB,cAMpD93S,gBACA,OAAO55U,KAAK4xnB,YAAch4S,GAE1BA,cAAU/pU,IACV7P,KAAK4xnB,WAAa/hnB,GAClB7P,KAAK6uc,WAAa7mI,QAAQhoU,KAAK4xnB,YAK/Bt/J,iBACA,OAAOtyd,KAAK2xnB,aAAer/J,GAE3BA,eAAWzid,IACX7P,KAAK2xnB,YAAc9hnB,GACnB7P,KAAKkqnB,YAAcliT,QAAQhoU,KAAK2xnB,aAAe3xnB,KAAK0xnB,cAMpDr2N,iBACA,OAAOr7Z,KAAK6xnB,aAAex2N,GAE3BA,eAAWxrZ,IACX7P,KAAK6xnB,YAAchinB,GACnB7P,KAAKq9D,WAAa2qQ,QAAQhoU,KAAK6xnB,aAEnC9qnB,YAAYC,IACRhH,KAAK06X,kBAAkBquI,UAAY/gM,QAAQhoU,KAAK+ogB,YAE5CtgH,QAAW,CAAC,QAAS,WAAY,cAAe,gBAAiBzhZ,IAAS,KAAWhH,KAAKy3c,cAC1Fz3c,KAAK8xnB,oBAGbnrnB,cACI3G,KAAKipC,cAAcniC,cACnB9G,KAAKs2Y,iBAAiB1vY,QAAQs6C,IAAgBA,MAElD77C,WACIrF,KAAKipC,cAAcuf,IAAIxoD,KAAK+wnB,oBACvB/pnB,QACAtB,UAAWiE,IAAM3J,KAAKiwnB,eAAeponB,KAAK8B,MAC/C3J,KAAKipC,cAAcuf,IAAIxoD,KAAK8wnB,cAAc9pnB,QACrCtB,UAAU,EAAGke,SAAO0xC,YAAUg1V,aAAaA,GAC1CtqZ,KAAKsqZ,OAAOziZ,KAAK,CAAE+b,SAAO0xC,cAC1Bt1D,KAAKuyd,SAAS1qd,KAAK,CAAE+b,SAAO0xC,gBAClCt1D,KAAKipC,cAAcuf,IAAIxoD,KAAK06X,kBAAkBk0P,OACzClpnB,UAAWiE,IAAM3J,KAAK65U,cAAchyU,KAAK7H,KAAKgxnB,sBAAsBv+J,WAAW9od,OACpF3J,KAAKipC,cAAcuf,IAAIxoD,KAAKqza,iBAAiBrsa,QACxCtB,UAAWiE,QACRksX,MAAa71X,KAAK2lE,kBAClB3lE,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAK2lE,gBAAgB99D,KAAK8B,SAIlC3J,KAAK0U,SACL1U,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAK+xnB,sBAOjB9tV,OACI,KAAKyxF,UACD,OAEJ,MAAMhtX,GAAS0jnB,GAAcpsnB,KAAK0U,SAC9BiN,SAASqiR,gBAAkBt7R,IAC3BA,GAAOu7R,OA8BfopC,MAAMzpT,IACF,MAAMwjlB,GAAaxjlB,IAASyklB,GAAUromB,KAAK06X,kBAAkBq0P,eAC7D/unB,KAAK06X,kBAAkB60P,cAAcnoB,IACrC,MAAM1+lB,GAAS0jnB,GAAcpsnB,KAAK0U,SAC9BhM,IACAA,GAAO2kU,QASfolJ,WAAW7uc,IACP,OAAO5jB,KAAKgxnB,sBAAsBv+J,WAAW7uc,IAMjDoumB,iBACIhynB,KAAKixnB,uBAAuBlhT,SAKhC+5S,WAAW92mB,GAAM4Q,IACb5jB,KAAK8wnB,cAAcxmO,OAAO1mY,GAAO5Q,IAKrCi/mB,aAAaj/mB,GAAM4Q,IACf5jB,KAAK8wnB,cAAcv+J,SAAS3uc,GAAO5Q,IAWvCk/mB,gBAAgB58jB,IACZ,YAAK68jB,wBACEnynB,KAAKsqnB,gBAAgB8H,aAAa98jB,IAW7C+8jB,gBAAgB/8jB,GAAU/oD,IACtBvM,KAAKmynB,wBACLnynB,KAAKsqnB,gBAAgBgI,aAAah9jB,GAAU/oD,IAQhDulnB,oBACI9xnB,KAAKgxnB,sBAAsB1sd,QAC3BtkK,KAAKuynB,oBAAoBvynB,KAAKyhI,OAElCswf,oBACI,MAAMr9mB,GAAU1U,KAAK0U,QAAQxG,cAC7BlO,KAAK2xb,aAAe3xb,KAAK2xb,aAAa9ra,KAAK7lB,MAC3CA,KAAKs2Y,iBAAiB7wY,KAAKzF,KAAKklK,SAASrpD,OAAOnnG,GAAS,cAAe1U,KAAK2xb,cAAe3xb,KAAKklK,SAASrpD,OAAOnnG,GAAS,QAAS1U,KAAK2xb,cAAe3xb,KAAKklK,SAASrpD,OAAOnnG,GAAS,WAAY1U,KAAK2xb,cAAe3xb,KAAKklK,SAASrpD,OAAOnnG,GAAS,UAAW1U,KAAKwynB,aAAa3smB,KAAK7lB,OAAQA,KAAKklK,SAASrpD,OAAOnnG,GAAS,WAAY1U,KAAKyynB,YAAY5smB,KAAK7lB,OAAQA,KAAKklK,SAASrpD,OAAOnnG,GAAS,UAAW1U,KAAKy/iB,eAAe55hB,KAAK7lB,QAE3awynB,aAAavpnB,IACT,IAAIwslB,GACAl0kB,GAAMtY,GAAEP,OAAQ,oBAChB+slB,GAAYxslB,GAAEP,OAER83b,GAAYv3b,GAAEP,UACpB+slB,GAAYy2B,GAAYjjnB,GAAEP,SAE1B+slB,KACAz1lB,KAAK06X,kBAAkB60P,cAAclD,GAAOpjnB,GAAEP,UACzC1I,KAAK6zK,aAAYgiN,MAAa71X,KAAKwnD,UACpCxnD,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAKwnD,QAAQ3/C,SAGrB7H,KAAK6zK,UAAW,GAGxB4+c,YAAYxpnB,IACJjJ,KAAK6zK,UAAYtyJ,GAAMtY,GAAEP,OAAQ,uBAC/BO,GAAE+uX,gBAAkBz2W,GAAMtY,GAAE+uX,cAAe,sBAAwB2Y,GAAU1nY,GAAE+uX,cAAeh4X,KAAK0U,QAAQxG,kBAC7GlO,KAAK06X,kBAAkBvC,aACvBn4X,KAAK6zK,UAAW,KACZgiN,MAAa71X,KAAK0nD,SAClB1nD,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAK0nD,OAAO7/C,UAK5B8pb,aAAa1ob,IACT,MAAMP,GAASO,GAAEP,OACjB,GAAgB,gBAAXO,GAAEnB,QAA2B+tX,QAAa71X,KAAKs3d,YACpC,UAAXrud,GAAEnB,UAAqB+tX,MAAa71X,KAAKs3d,gBAAezhG,MAAa71X,KAAK2lE,mBAAqBwmjB,GAAiBzjnB,KACrG,aAAXO,GAAEnB,QAAwB+tX,QAAa71X,KAAKuxnB,eAAkB/wL,GAAY93b,MACzEwhmB,GAAUxhmB,MAAYyjnB,GAAiBzjnB,MAAaioY,GAAUjoY,GAAQ1I,KAAK0U,QAAQxG,eACrF,OAEJ,MAAM0V,GAAQyomB,GAAOH,GAAYxjnB,MAE5Bkb,IAAS5jB,KAAK06X,kBAAkBxH,WAAWtvW,KAGhD5jB,KAAKsnD,OAAOgB,IAAI,KAEZ,MAAM8zZ,GAASp8c,KAAKgxnB,sBAAsBv+J,WAAW7uc,IACrD,GAAe,UAAX3a,GAAEnB,KAEF,IADuB9H,KAAK06X,kBAAkBlvH,MAAMz2H,SAASnxH,IAAOyqmB,eAGhE,YADArunB,KAAK06X,kBAAkBi1P,eAAe/rmB,IAItC5jB,KAAK06X,kBAAkBg1P,YAAY9rmB,KAGhB,aAAX3a,GAAEnB,KAAsB9H,KAAKuxnB,aAAevxnB,KAAKs3d,WACzDzvd,KAAK,CACTmL,KAAMopc,GAAOppc,KACbqiH,cAAepsH,GACfnB,KAAMmB,GAAEnB,SAIpB23iB,eAAex2iB,IACPjJ,KAAK6zK,UAAY7zK,KAAK+ogB,WACtB/ogB,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAK06X,kBAAkBplQ,KAAKrsH,MAIxCkpnB,wBACI,IAAIjlQ,aAAgByJ,GAAU32X,KAAKsqnB,iBAC/B,MAAM,IAAI7zmB,MAAO,0LAGzB87mB,oBAAoBz/mB,GAAM+9mB,GAAa,MACnC,IAAKl6P,GAAU7jX,KAAyB,IAAhBA,GAAK/M,OACzB,OAEJ,MAAM0tC,GAAc40jB,GAAUwoB,IACxB37B,GAAYpilB,GAAKnN,IAAI,CAACyf,GAAMxB,KA9nCpB,EAAC0xC,GAAUo9jB,GAAmBj/kB,KAC3CkjV,GAAUrhU,IAGR,CACHA,YACA1xC,MAAOspmB,GAAez5kB,GAAai/kB,KAJ5B,KA4nCqCC,CAAcvtmB,GAAMxB,GAAO6vB,KACnEkjV,GAAUk6P,KACV7wnB,KAAKgxnB,sBAAsBR,iBAAiB/8kB,GAAayhjB,IAE7DA,GAAUtulB,QAAQoM,KACdhT,KAAKgxnB,sBAAsB5C,aAAap7mB,GAAM69mB,IAC1C7wnB,KAAK25U,YAAY3mU,GAAKsiD,WACtBt1D,KAAKw+D,SAASxrD,GAAKsiD,UACd5vD,UAAU84D,IAAYx+D,KAAKuynB,oBAAoB/zjB,GAAUxrD,SAK9E0gd,UAAkBttJ,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKslb,IAAmBjwJ,MAAyBA,OAAoBA,MAAyBA,OAA2BA,MAAyBgoT,IAAqBhoT,MAAyB05D,IAAoB15D,MAAyBusT,IAAsBvsT,MAAyB4sG,IAAmB5sG,MAAyB6sT,IAAwB7sT,MAAyBA,OAAgBA,MAAyBA,OAAmBA,MAAyB+nT,IAAgC/nT,MAAyB4C,QACplBqtJ,GAAkBntJ,UAAqB9C,MAAyB,CAAE37T,KAAM4rd,GAAmB7vd,UAAW,CAAC,CAAC,mBAAoB20X,eAAgB,SAA0Ch1D,GAAI/3T,GAAKgtX,IAGzL,GAH8M,EAALj1D,KACvMC,MAAsBg1D,GAAUq5F,GAAuB,GACvDruJ,MAAsBg1D,GAAUy3P,GAAiC,IAC1D,EAAL1sT,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIksc,aAAejtV,GAAGxjH,OAC3Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIgmnB,uBAAyB/mgB,GAAGxjH,SACpFs/T,UAAW,SAAiChD,GAAI/3T,IAEnD,GAFmE,EAAL+3T,IAC5DC,KAAmBF,GAAK,EAAGkD,OACpB,EAALjD,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAImnnB,gBAAkBlogB,GAAGxjH,SAC7Ew/T,SAAU,EAAGC,aAAc,SAAwCnD,GAAI/3T,IAAgB,EAAL+3T,KACnFC,MAAmB,OAAQh4T,GAAIwnP,KAA/BwwE,CAAqC,MAAOh4T,GAAIQ,WAChDw3T,MAA+B,aAAch4T,GAAIjB,SACjDi5T,MAAmB,WAAYh4T,GAAIyqX,WAAnCzyD,CAA+C,aAAch4T,GAAIyqX,cAChEtvD,OAAQ,CAAEgjT,uBAAwB,yBAA0B7+G,QAAS,UAAW73I,WAAY,aAAc0tE,UAAW,YAAamoE,UAAW,YAAavqc,SAAU,WAAYi5Y,aAAc,eAAgBvnY,WAAY,aAAcnjE,OAAQ,SAAUvC,QAAS,UAAWw/mB,gBAAiB,CAAC,eAAgB,mBAAoBI,0BAA2B,CAAC,yBAA0B,6BAA8B3of,MAAO,QAASk4M,YAAa,cAAeC,UAAW,YAAa04I,WAAY,aAAcj3D,WAAY,aAAcnxW,UAAW,aAAeqsU,QAAS,CAAE05P,eAAgB,iBAAkBvokB,OAAQ,OAAQF,QAAS,QAAS8iW,OAAQ,SAAUioE,SAAU,WAAY4+J,cAAe,gBAAiBC,SAAU,WAAYj/J,kBAAmB,oBAAqBk/J,SAAU,WAAYC,YAAa,cAAe/6J,QAAS,UAAW36L,WAAY,aAAci+C,cAAe,gBAAiBl0Q,gBAAiB,kBAAmB1+B,aAAc,eAAgBqwb,UAAW,YAAai6J,aAAc,gBAAkB/6P,SAAU,CAAC,iBAAkBrqW,SAAU,CAACs3S,MAA0B8H,IAAY9H,OAA8B51H,MAAO,EAAGo5H,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,QAAS,cAAe,cAAe,cAAe,EAAG,QAAS,CAAC,qBAAsB,GAAI,OAAQ,QAAS,EAAG,mBAAoB,EAAG,eAAgB,aAAc,cAAe,aAAc,eAAgB,WAAY,cAAe,YAAa,aAAc,aAAc,aAAc,YAAa,kBAAmB,4BAA6B,YAAa,QAAS,kBAAmB,WAAY,CAAC,kBAAmB,IAAK,CAAC,EAAG,QAAS,cAAe,cAAe,eAAgB,CAAC,cAAe,IAAK,CAAC,6BAA8B,IAAK,CAAC,EAAG,SAAU,eAAgBh1Q,SAAU,SAAoCsxQ,GAAI/3T,IAAgB,EAAL+3T,KACtwDC,MAAkB,EAAGovT,GAA4C,EAAG,EAAG,gBAAiB,GACxFpvT,MAAiB,EAAG,KAAM,GAC1BA,MAA0B,EAAG,KAAM,IAC5B,EAALD,KACFC,MAAkB,OAAQh4T,GAAIykE,YAC9BuzP,MAAiB,GACjBA,MAAkB,eAAgBh4T,GAAIgsc,aAAtCh0I,CAAoD,aAAch4T,GAAIojc,WAAtEprI,CAAkF,cAAeh4T,GAAIy+mB,YAArGzmT,CAAkH,aAAch4T,GAAI4xD,WAApIomQ,CAAgJ,eAAgBh4T,GAAI0+mB,aAApK1mT,CAAkL,WAAYh4T,GAAI+yD,SAAlMilQ,CAA4M,cAAeh4T,GAAIkuU,YAA/NlW,CAA4O,YAAah4T,GAAImuU,UAA7PnW,CAAwQ,aAAch4T,GAAIynX,WAA1RzvD,CAAsS,aAAch4T,GAAI6md,WAAxT7uJ,CAAoU,aAAch4T,GAAI4vZ,WAAtV53F,CAAkW,YAAah4T,GAAIm1b,UAAnXn9H,CAA8X,kBAAuC,MAApBh4T,GAAIksc,aAAuB,KAAOlsc,GAAIksc,aAAa9wI,YAApcpD,CAAid,4BAA2D,MAA9Bh4T,GAAIgmnB,uBAAiC,KAAOhmnB,GAAIgmnB,uBAAuB5qT,YAArjBpD,CAAkkB,YAAah4T,GAAIy+C,UAAnlBu5Q,CAA8lB,QAASh4T,GAAIylnB,WAA3mBztT,CAAunB,kBAAmBh4T,GAAI6+mB,gBAA9oB7mT,CAA+pB,UAAWh4T,GAAIs/f,WAC7qBtjM,WAAY,WAAc,MAAO,CAACnB,MAAaqB,MAAyBA,MAAuCmrT,KAA4BlrT,cAAe,IACnKp5R,EAAW,IACPy5R,OAAY,qBACZA,OAAY,oBACZH,EAAW,cAAeE,UAC3B0rJ,GAAkBrzc,UAAW,kBAAc,GAC9CmuB,EAAW,EACPy5R,SAAY,aACZH,EAAW,cAAe90S,SAC3B0gc,GAAkBrzc,UAAW,YAAQ,GACxCmuB,EAAW,IACPy5R,OAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC4rJ,GAAkBrzc,UAAW,YAAa,MAC7CmuB,EAAW,EACPq5R,SAAU,kBAAmB,CAAE34M,KAAMu3M,MAAkBplT,QAAQ,IAC/DymT,EAAW,cAAerB,QAC3BitJ,GAAkBrzc,UAAW,uBAAmB,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B0gc,GAAkBrzc,UAAW,8BAA0B,GAC1DmuB,EAAW,EACP0/I,YACA+5I,SAAY,cACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClC0rJ,GAAkBrzc,UAAW,UAAW,MAC3CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,sBAAkB,GAClDmuB,EAAW,IACP2/I,OAAO,QACP25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,cAAU,GAC1CmuB,EAAW,IACP2/I,OAAO,SACP25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,eAAW,GAC3CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,cAAU,GAC1CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,gBAAY,GAC5CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,qBAAiB,GACjDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,gBAAY,GAC5CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,yBAAqB,GACrDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,gBAAY,GAC5CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,mBAAe,GAC/CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,eAAW,GAC3CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,kBAAc,GAC9CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,qBAAiB,GACjDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,uBAAmB,GACnDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,oBAAgB,GAChDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,iBAAa,GAC7CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B8ud,GAAkBrzc,UAAW,oBAAgB,GAChDmuB,EAAW,EACPwxV,SAAa8xF,GAAuB,CAAEzwc,QAAQ,IAC9CymT,EAAW,cAAegqJ,KAC3B4B,GAAkBrzc,UAAW,oBAAgB,GAChDmuB,EAAW,IACP0/I,OAAM,gBACN45I,EAAW,cAAegqJ,IAC1BhqJ,EAAW,oBAAqB,CAACgqJ,MAClC4B,GAAkBrzc,UAAW,kBAAmB,MACnDmuB,EAAW,EACPwxV,SAAakwP,GAAiC,CAAE7umB,QAAQ,IACxDymT,EAAW,cAAeooT,KAC3Bx8J,GAAkBrzc,UAAW,8BAA0B,GAC1DmuB,EAAW,IACP0/I,OAAM,0BACN45I,EAAW,cAAeooT,IAC1BpoT,EAAW,oBAAqB,CAACooT,MAClCx8J,GAAkBrzc,UAAW,4BAA6B,MAC7DmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,WAC3B4ma,GAAkBrzc,UAAW,eAAW,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5T,OAC1Bw5T,EAAW,oBAAqB,CAACx5T,SAClCold,GAAkBrzc,UAAW,QAAS,MACzCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3B6td,GAAkBrzc,UAAW,iBAAa,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACh7Q,YAClC4ma,GAAkBrzc,UAAW,cAAe,MAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACh7Q,YAClC4ma,GAAkBrzc,UAAW,YAAa,MAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,WAC3B4ma,GAAkBrzc,UAAW,kBAAc,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACh7Q,YAClC4ma,GAAkBrzc,UAAW,aAAc,MAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACh7Q,YAClC4ma,GAAkBrzc,UAAW,aAAc,MAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,WAC3B4ma,GAAkBrzc,UAAW,iBAAa,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B0rJ,GAAkBrzc,UAAW,iBAAa,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,WAC3B4ma,GAAkBrzc,UAAW,gBAAY,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B0rJ,GAAkBrzc,UAAW,oBAAgB,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B0rJ,GAAkBrzc,UAAW,kBAAc,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B0gc,GAAkBrzc,UAAW,cAAU,GAC1Cqzc,GAAoBllb,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC1Dq5T,MACAujT,GACAtuP,GACA6yP,GACA3/M,GACAigN,GACAvkQ,MACA5jD,MACAqjT,GACA1kT,QACL4sJ,IAvsB2BA,IAAT,GA4sBjBo/J,GAAsB,UAASA,GAAN,MACzBhznB,YAAYgxnB,GAAeiC,GAAgBC,GAAchC,GAAuBt2P,GAAmBq2P,GAAqBE,GAAwBpuY,IAC5I7iP,KAAK8wnB,cAAgBA,GACrB9wnB,KAAK+ynB,eAAiBA,GACtB/ynB,KAAKgznB,aAAeA,GACpBhznB,KAAKgxnB,sBAAwBA,GAC7BhxnB,KAAK06X,kBAAoBA,GACzB16X,KAAK+wnB,oBAAsBA,GAC3B/wnB,KAAKixnB,uBAAyBA,GAC9BjxnB,KAAK6iP,kBAAoBA,GACzB7iP,KAAKiznB,aAAc,EACnBjznB,KAAKizP,KAAO,QACZjzP,KAAKy3c,cAAe,EACpBz3c,KAAKkqD,UAAY,GACjBlqD,KAAKkznB,oBAAqB,EAC1BlznB,KAAKmrnB,kBAAmB,EACxBnrnB,KAAK2sI,MAAQ,GACb3sI,KAAKmznB,0BAA4B,IAAIjvM,MACrClkb,KAAK45U,UAAY,IAAM,OACvB55U,KAAKkzX,WAAa,KAAM,EACxBlzX,KAAKsyd,WAAa,KAAM,EACxBtyd,KAAK4gc,UAAY,KAAM,EACvB5gc,KAAKq7Z,WAAa,KAAM,EACxBr7Z,KAAKw+D,SAAW,KAAMl5B,QAAG,IACzBtlC,KAAK25U,YAAc,KAAM,EAEzBy5S,yBACA,SAAKz8P,GAAU32X,KAAKsqnB,kBAAyC,IAArBtqnB,KAAK8S,KAAK/M,SAG3C/F,KAAKuM,SAAWvM,KAAK6qnB,gBAE5Bt+mB,eACA,OAAKoqX,GAAU32X,KAAKsqnB,iBAGbtqnB,KAAKsqnB,gBAAgB8H,aAAapynB,KAAK4qnB,gBAFnC,KAIXr+mB,aAASA,IACTvM,KAAKsqnB,gBAAgBgI,aAAatynB,KAAK4qnB,eAAgBr+mB,IAEvDuG,WACA,OAAI6jX,GAAU32X,KAAKuM,UAERvM,KAAK2sI,MAAM/9H,MAAM,EADI5O,KAAKuM,SAAW,EAAIvM,KAAKuM,SAAW,GAG7DvM,KAAK2sI,MAEZ75H,SAAKA,IACL9S,KAAK2sI,MAAQ75H,GACb9S,KAAKqznB,oBAAoBrznB,KAAK8S,MAE9Bi4mB,0BACA,OAAK/qnB,KAAKsqnB,gBAGHtqnB,KAAKqomB,UAAUromB,KAAK8S,KAAK/M,QAFrB,KAOX8knB,sBACA,OAAK7qnB,KAAKsqnB,gBAGHtqnB,KAAKsqnB,gBAAgBgJ,mBAAmBtznB,KAAK4qnB,eAAgB5qnB,KAAK2sI,MAAM5mI,QAFpE/F,KAAK8S,KAAK/M,OAIrBqngB,kBACA,OAAOz2I,GAAU32X,KAAKgqnB,iBAE1BF,WAAWlmmB,GAAO0xC,GAAUg1V,IACpBA,GACAtqZ,KAAK8wnB,cAAcxmO,OAAO1mY,GAAO0xC,IAGjCt1D,KAAK8wnB,cAAcv+J,SAAS3uc,GAAO0xC,IAG3C6ha,UAAUvzc,IACN5jB,KAAK06X,kBAAkB+wH,WAAW7ne,IAClC5jB,KAAK06X,kBAAkB60P,cAAc3rmB,IAEzCyklB,UAAUzklB,IACN,OAAO5jB,KAAKgznB,aAAa3qB,UAAUzklB,GAAM7Y,WAAY/K,KAAKyzC,aAE9Dw2kB,SAAS30jB,IACL,MAAMpL,GAAYvqB,GAAQ3/B,KAAKkqD,WAAalqD,KAAKkqD,UAAU,GAAKlqD,KAAKkqD,UACrE,OAAO4vY,SAAO5vY,IAAWoL,IAE7B3uD,cACQgwX,GAAU32X,KAAKuznB,oBACfvznB,KAAKuznB,kBAAkBzsnB,cAEvB6vX,GAAU32X,KAAKwznB,4BACfxznB,KAAKwznB,0BAA0B1snB,cAEnC9G,KAAKmznB,0BAA0BrsnB,cAEnCzB,WACIrF,KAAKyznB,yBACLzznB,KAAKmznB,0BAA0B3qkB,IAAIxoD,KAAKixnB,uBACnCjqnB,QACAtB,UAAU1F,KAAKyznB,uBAAuB5tmB,KAAK7lB,QAChDA,KAAKmznB,0BAA0B3qkB,IAAIxoD,KAAK06X,kBAAkBo0P,SACrDtinB,QAAKO,MAAO6W,IAASA,KAAU5jB,KAAK+qnB,sBACpCrlnB,UAAU1F,KAAK0znB,cAAc7tmB,KAAK7lB,QAE3C+G,YAAYC,IACJA,GAAQysC,aAAezzC,KAAKy3c,cAC5Bz3c,KAAK2znB,gBAAgB3znB,KAAK4znB,cAAc5znB,KAAK8S,OAGrDm/c,cAAc7sc,GAAMxB,IAChB,OAAO5jB,KAAKw+D,SAASp5C,IAChB5Y,MAAKskD,QAAW,KACjB9wD,KAAK+ynB,eAAehH,aAAanomB,IAC1BmpZ,QACPn8W,QAAI,IAAM5wD,KAAK+ynB,eAAehH,aAAanomB,MAE/CymmB,iBACA,OAAI1qlB,GAAQ3/B,KAAKkqD,WACNlqD,KAAKkqD,UAAUnkD,OAAS,EAAI/F,KAAKkqD,UAAUt7C,MAAM,GAAK5O,KAAKkqD,UAE/D,CAAClqD,KAAKkqD,WAEjBwpkB,gBACQ/8P,GAAU32X,KAAKsqnB,gBAAgBoJ,eAC/B1znB,KAAK6znB,iBAGL7znB,KAAK8znB,qBAGbA,qBACI,MAAMC,GAA6B/znB,KAAK+qnB,oBACxC/qnB,KAAKuM,UAAYvM,KAAKsqnB,gBAAgB0J,mBAAmBh0nB,KAAK4qnB,gBAC9D5qnB,KAAKqznB,oBAAoBrznB,KAAK8S,MAE9B9S,KAAK6iP,kBAAkB3tC,gBACvBl1M,KAAKi0nB,eAAeF,IAExBF,iBACQ7znB,KAAKmrnB,mBAGTnrnB,KAAKmrnB,kBAAmB,EACpBx0P,GAAU32X,KAAKwznB,4BACfxznB,KAAKwznB,0BAA0B1snB,cAEnC9G,KAAKwznB,0BAA4BxznB,KAAKsqnB,gBACjCoJ,cAAc,CACfp+jB,SAAUt1D,KAAK4qnB,eACft+mB,KAAMtM,KAAK8S,KAAK/M,OAChBwrD,KAAMvxD,KAAKsqnB,gBAAgB0J,mBAAmBh0nB,KAAK4qnB,kBAElDp+mB,QAAK0nnB,MAAS,IAAMl0nB,KAAKmrnB,kBAAmB,IAC5CzlnB,UAAU8sD,KACX,KAAMlkD,MAAMqxB,QAAQ6yB,KAAUA,GAAMzsD,OAAS,GACzC,OAEJ,MAAMgunB,GAA6B/znB,KAAK+qnB,oBACxC/qnB,KAAKuM,UAAYimD,GAAMzsD,OACvB/F,KAAK8S,KAAO9S,KAAK8S,KAAK6gC,OAAO6e,IACzBxyD,KAAK06X,kBAAkB7mN,SAASkgd,MAEhC/znB,KAAK6iP,kBAAkB3tC,gBACvBl1M,KAAKi0nB,eAAeF,QAIhCJ,gBAAgBn1jB,IACZx+D,KAAKgxnB,sBAAsBR,iBAAiBxwnB,KAAKyzC,YAAa+qB,IAElEo1jB,cAAc9gnB,IACV,OAAK9S,KAAKyzC,YAGH3gC,GAAKnN,IAAI,CAAC2vD,GAAUnrB,MAAS,CAAEmrB,YAAU1xC,MAAO5jB,KAAKqomB,UAAUl+jB,OAF3D,GAIfgqlB,mBAAmB31jB,IACf,IAAKx+D,KAAKyzC,YACN,OAGJ,MAAM2glB,GAAkB51jB,GAASzxD,OAAOiG,IAAQA,GAAKsiD,UACrDt1D,KAAK+wnB,oBAAoBd,eAAe,CAAE36jB,SAAUt1D,KAAK4qnB,eAAgBhnmB,MAAO5jB,KAAKyzC,aAAe2glB,IAExGX,yBACQzznB,KAAKuznB,mBACLvznB,KAAKuznB,kBAAkBzsnB,cAE3B9G,KAAKuznB,kBAAoBvznB,KAAKyhI,MAAMzhI,KAAK4qnB,eAAgB5qnB,KAAKyzC,aACzD/tC,UAAUoN,KACX9S,KAAK8S,KAAOA,GACZ9S,KAAKkznB,oBAAqB,IAGlCe,eAAerwmB,KACN+yW,GAAU/yW,MAIf5jB,KAAK06X,kBAAkBvC,aACvBn4X,KAAK06X,kBAAkB60P,cAAc3rmB,KAEzCyvmB,oBAAoB5xf,GAAQ,IACxB,MAAM4yf,GAAiBr0nB,KAAK4znB,cAAcnyf,IACtCzhI,KAAKy3c,cACLz3c,KAAK2znB,gBAAgBU,IAEzBr0nB,KAAKm0nB,mBAAmBE,MAGhCvB,UAAuB1sT,UAAO,SAAwCh4R,IAAK,OAAO,IAAKA,IAAK0klB,IAAwBrvT,MAAyBgoT,IAAqBhoT,MAAyBqoT,IAA6BroT,MAAyBioT,IAAsBjoT,MAAyB6sT,IAAwB7sT,MAAyB05D,IAAoB15D,MAAyBusT,IAAsBvsT,MAAyB+nT,IAAgC/nT,MAAyBA,SACteqvT,GAAuBvsT,UAAqB9C,MAAyB,CAAE37T,KAAMgrnB,GAAwBjvnB,UAAW,CAAC,CAAC,GAAI,qBAAsB,KAAM6iU,SAAU,EAAGC,aAAc,SAA6CnD,GAAI/3T,IAAgB,EAAL+3T,KACjOC,MAAmB,OAAQh4T,GAAIwnP,MAC/BwwE,MAAmB,UAAWh4T,GAAIwnnB,eACjCrsT,OAAQ,CAAE6wI,aAAc,eAAgBvtZ,UAAW,YAAa0vR,UAAW,YAAas5C,WAAY,aAAco/F,WAAY,aAAc1xB,UAAW,YAAavlC,WAAY,aAAc78V,SAAU,WAAYm7Q,YAAa,cAAek1H,WAAY,aAAcq7K,YAAa,cAAe7hnB,SAAU,WAAYg1D,WAAY,aAAc8sjB,aAAc,eAAgBp/G,QAAS,UAAWtpY,MAAO,QAASmpf,eAAgB,iBAAkBn3kB,YAAa,cAAeu2kB,gBAAiB,kBAAmBI,0BAA2B,4BAA6BE,gBAAiB,mBAAqBn+lB,SAAU,CAACs3S,OAA8Bz2F,MAAOikJ,GAAKpjL,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,yBAA0B,oBAAqB,GAAI,EAAG,iBAAkB,WAAY,QAAS,iBAAkB,cAAe,eAAgB,YAAa,YAAa,aAAc,YAAa,aAAc,aAAc,aAAc,aAAc,EAAG,QAAS,UAAW,gBAAiB,CAAC,QAAS,yBAA0B,oBAAqB,GAAI,OAAQ,SAAU,EAAG,4CAA6C,aAAc,YAAa,aAAc,QAAS,iBAAkB,cAAe,EAAG,QAAS,CAAC,oBAAqB,GAAI,EAAG,SAAU,kBAAmB,EAAG,WAAY,QAAS,iBAAkB,cAAe,eAAgB,YAAa,YAAa,aAAc,YAAa,aAAc,aAAc,aAAc,cAAe,CAAC,EAAG,SAAU,CAAC,QAAS,SAAU,EAAG,eAAgB,aAAc,uBAAwB,QAAS,EAAG,QAAS,CAAC,WAAY,KAAM,EAAG,OAAQ,QAAS,YAAa,mBAAoB,EAAG,QAAS,CAAC,2BAA4B,GAAI,EAAG,OAAQ,EAAG,WAAY,QAAS,mBAAoB,cAAe,CAAC,EAAG,YAAa,CAAC,EAAG,gBAAiB,CAAC,EAAG,mBAAoB,CAAC,qBAAsB,GAAI,OAAQ,QAAS,EAAG,QAAS,eAAgB,aAAc,cAAe,aAAc,eAAgB,WAAY,cAAe,YAAa,aAAc,WAAY,aAAc,aAAc,YAAa,kBAAmB,4BAA6B,cAAe,iBAAkB,YAAa,kBAAmB,UAAW,EAAG,QAAS,CAAC,EAAG,SAAU,EAAG,uBAAwB,SAAU,CAAC,WAAY,KAAM,EAAG,OAAQ,QAAS,YAAa,oBAAqB,CAAC,EAAG,mBAAoB,2BAA4B,CAAC,qBAAsB,GAAI,OAAQ,QAAS,EAAG,QAAS,eAAgB,aAAc,cAAe,aAAc,eAAgB,WAAY,cAAe,YAAa,aAAc,WAAY,aAAc,aAAc,YAAa,kBAAmB,4BAA6B,cAAe,iBAAkB,YAAa,kBAAmB,WAAY,CAAC,oBAAqB,GAAI,OAAQ,SAAU,EAAG,SAAU,kBAAmB,EAAG,aAAc,YAAa,aAAc,QAAS,iBAAkB,eAAgB,CAAC,QAAS,gCAAiC,EAAG,QAAS,CAAC,2BAA4B,GAAI,EAAG,OAAQ,8BAA+B,EAAG,SAAU,CAAC,EAAG,QAAS,CAAC,EAAG,SAAU,cAAe,eAAgBh1Q,SAAU,SAAyCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC9kGC,MAAkB,EAAG6wT,GAAsC,EAAG,GAAI,KAAM,GACxE7wT,MAAkB,EAAG8wT,GAAsC,EAAG,GAAI,KAAM,IACjE,EAAL/wT,KACFC,MAAkB,UAAWh4T,GAAIqH,KAAjC2wT,CAAuC,eAAgBh4T,GAAIs/f,SAC3DtnM,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIynnB,oBAAsBznnB,GAAI2nnB,sBACvD3rT,WAAY,WAAc,MAAO,CAACnB,MAAgBkuT,GAAuBluT,MAAamuT,GAA2BC,GAAmBC,GAA8BruT,MAAiBA,MAAqBA,MAAyBA,MAAwBwsT,KAA4BlrT,cAAe,EAAG90T,KAAM,CAAEqyT,UAAW,EACvTl7T,SAAQ,SAAU,IACdK,OAAW,YAAa,IACpBH,OAAM,CAAEI,OAAQ,OAChBC,OAAQ,kBAAgBL,OAAM,CAAEI,OAAQ,YAE5CD,OAAW,YAAa,IACpBH,OAAM,CAAEI,OAAQ,SAChBC,OAAQ,kBAAgBL,OAAM,CAAEI,OAAQ,aAI5DikC,EAAW,EACPy5R,SAAY,iBACZH,EAAW,cAAeE,UAC3B8qT,GAAuBzymB,UAAW,mBAAe,GACpDmuB,EAAW,EACPy5R,SAAY,aACZH,EAAW,cAAe90S,SAC3B8/lB,GAAuBzymB,UAAW,YAAQ,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B8qT,GAAuBzymB,UAAW,kBAAc,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B8qT,GAAuBzymB,UAAW,mBAAe,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B8qT,GAAuBzymB,UAAW,gBAAY,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B8qT,GAAuBzymB,UAAW,kBAAc,GACnDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B8qT,GAAuBzymB,UAAW,oBAAgB,GACrDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B8qT,GAAuBzymB,UAAW,oBAAgB,GACrDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,eAAW,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,aAAS,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BitnB,GAAuBzymB,UAAW,iBAAa,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BitnB,GAAuBzymB,UAAW,sBAAkB,GACvDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8/lB,GAAuBzymB,UAAW,mBAAe,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3B+qT,GAAuBzymB,UAAW,uBAAmB,GACxDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeC,QAC3B+qT,GAAuBzymB,UAAW,iCAA6B,GAClEmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BitnB,GAAuBzymB,UAAW,uBAAmB,GACxDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,iBAAa,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,kBAAc,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,kBAAc,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,iBAAa,GAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,kBAAc,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,gBAAY,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,WAC3BgmkB,GAAuBzymB,UAAW,mBAAe,GACpDyymB,GAAyBtklB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC2jT,GAC/DK,GACAJ,GACA4E,GACAnzP,GACA6yP,GACAxE,GACAtjT,SACL4qT,IAhVgCA,IAAT,GAwoB1B,MAAM8B,GAAiC,CACnCC,sBAAsB,EACtBC,eAAe,EACfC,gBAAiB,QAMrB,IAAIC,GAAe,UAASA,GAAN,MAClBl1nB,YAAYoiI,IACRliI,KAAKkiI,UAAYA,GAMjBliI,KAAKi1nB,gBAAiB,EAItBj1nB,KAAKk1nB,mBAAqB,IAAItwnB,MAC9B5E,KAAKipC,cAAgB,IAAIi7Y,MACzBlkb,KAAKm1nB,cAAgB,GACrBn1nB,KAAKo1nB,qBAAuB,GAC5Bp1nB,KAAKq1nB,YAAa,EAIlBr1nB,KAAKs1nB,oBAAsB,CAAC5sf,GAAYtjH,GAAMmwmB,OACtCnwmB,GAAKwnmB,iBAAmBxnmB,GAAKsnmB,SAAW6I,IAAqB/I,GAA0BpnmB,GAAKo5C,YAC5FkqE,GAAWjjI,KAAKzF,KAAK8uhB,QAAQ,CAAEx5d,SAAUlwC,GAAKkwC,SAAU1xC,MAAOwB,GAAKxB,SAEpE4omB,GAA0BpnmB,GAAKo5C,WAC/Bp5C,GAAKo5C,SAAS53D,QAAQ63D,KAClBz+D,KAAKs1nB,oBAAoB5sf,GAAYjqE,GAAO82jB,OAOxDv1nB,KAAKw1nB,kBAAoB,CAAC9sf,GAAYtjH,MAC9BonmB,GAA0BpnmB,GAAKo5C,WAC/BkqE,GAAWjjI,KAAKzF,KAAK8uhB,QAAQ,CAAEx5d,SAAUlwC,GAAKkwC,SAAU1xC,MAAOwB,GAAKxB,SAEpE4omB,GAA0BpnmB,GAAKo5C,WAC/Bp5C,GAAKo5C,SAAS53D,QAAQ63D,KAClBz+D,KAAKw1nB,kBAAkB9sf,GAAYjqE,OAI/Cz+D,KAAKipC,cAAcuf,KAAIjY,QAAMvwC,KAAKkiI,UAAUooR,OAAO99Y,MAAK7G,QAAIsD,IAAMpD,OAAOw0D,OAAO,CAAEiwV,QAAQ,GAAQrhZ,MAAOjJ,KAAKkiI,UAAUqwV,SAAS/ld,MAAK7G,QAAIsD,IAAMpD,OAAOw0D,OAAO,CAAEiwV,QAAQ,GAASrhZ,OAAOvD,UAAU1F,KAAKy1nB,aAAa5vmB,KAAK7lB,QACrNA,KAAKkiI,UAAUiwV,mBACfnyd,KAAKipC,cAAcuf,IAAIxoD,KAAKkiI,UAAUiwV,kBAAkBzsd,UAAU1F,KAAK01nB,iBAAiB7vmB,KAAK7lB,QAEjGA,KAAKkiI,UAAUowV,WAAa,CAACh9Z,GAAU1xC,KAAU5jB,KAAK21nB,aAAa71mB,QAAQ9f,KAAK8uhB,QAAQ,CAAEx5d,YAAU1xC,aAAY,EAKhH0uc,eAAW3ud,IACX3D,KAAKkiI,UAAUowV,WAAa3ud,GAE5BiynB,2BACA,MAAMv6mB,GAAW4wmB,GAAUjsnB,KAAKi1nB,gBAAkB,CAAExvlB,QAASzlC,KAAKi1nB,gBAAmBpvnB,OAAOw0D,OAAO,GAAIr6D,KAAKi1nB,eAAgB,CAAExvlB,SAAS,IACvI,OAAO5/B,OAAOw0D,OAAO,GAAIu6jB,GAAgCv5mB,IAKzDs6mB,mBACA,OAAO31nB,KAAKm1nB,cAEZQ,iBAAanynB,IACbxD,KAAKm1nB,cAAgB3xnB,GAEzBmD,cACI3G,KAAKipC,cAAcniC,cAKvBgohB,QAAQ7lhB,IACJ,GAAIjJ,KAAK61nB,UAAW,CAChB,GAA8B,iBAAnB71nB,KAAK61nB,UACZ,OAAO5snB,GAAEqsD,SAASt1D,KAAK61nB,WAE3B,GAA8B,mBAAnB71nB,KAAK61nB,UACZ,OAAO71nB,KAAK61nB,UAAU5snB,IAG9B,OAAOA,GAAE2a,MAEb6xmB,cAAe7xmB,SAAO0xC,YAAUg1V,YAC5B,MAAMt3Y,GAAOhT,KAAK8uhB,QAAQ,CAAElrgB,SAAO0xC,cAC7BnrB,GAAMnqC,KAAK21nB,aAAa71mB,QAAQ9M,IACtC,IAAI+8T,IAAS,EACT5lS,IAAM,IAAOmgX,IACbtqZ,KAAK21nB,aAAa7xmB,OAAOqmB,GAAK,GAC9B4lS,IAAS,IAEI,IAAR5lS,IAAcmgX,KACnBtqZ,KAAK21nB,aAAalwnB,KAAKuN,IACvB+8T,IAAS,GAETA,IACA/vU,KAAKk1nB,mBAAmBrtnB,KAAK7H,KAAK21nB,cAG1CD,kBAAmBj0f,SAAOq0f,cAAYhjK,UAClC,IAAK9yd,KAAK41nB,qBAAqBnwlB,QAC3B,OAEJ,MAAQovlB,wBAAsBC,cAAeS,GAAmBR,oBAAoB/0nB,KAAK41nB,qBAOzF,GANK51nB,KAAKq1nB,aACNr1nB,KAAKo1nB,qBAAuBp1nB,KAAK21nB,aAAa/mnB,SAErB5O,KAAKq1nB,aAAeviK,KACJ,IAAzB+hK,IAA+BiB,GAAajB,GAErC,CACvB,OAAQE,QACC,UACI5H,GAAWntnB,KAAK21nB,aAAc31nB,KAAKo1nB,wBACpCp1nB,KAAK21nB,aAAe31nB,KAAKo1nB,qBACzBp1nB,KAAKk1nB,mBAAmBrtnB,KAAK7H,KAAK21nB,eAEtC,UAEC,MACD31nB,KAAK21nB,aAAel0f,GAAMznH,OAAO,CAAC0kD,GAAK8ic,MACnCxhgB,KAAKw1nB,kBAAkB92jB,GAAK8ic,IACrB9ic,IACR,IACH1+D,KAAKk1nB,mBAAmBrtnB,KAAK7H,KAAK21nB,cAClC,UAEC,YACD,MAEC,QAEgC,IAA7B31nB,KAAK21nB,aAAa5vnB,SAClB/F,KAAK21nB,aAAe,GACpB31nB,KAAKk1nB,mBAAmBrtnB,KAAK7H,KAAK21nB,eAM9C,YADA31nB,KAAKq1nB,YAAa,GAGtB,MAAMU,GAAkBt0f,GAAMznH,OAAO,CAAC0kD,GAAK8ic,MACvCxhgB,KAAKs1nB,oBAAoB52jB,GAAK8ic,GAAU+zH,IACjC72jB,IACR,IACEyujB,GAAWntnB,KAAK21nB,aAAcI,MAC/B/1nB,KAAK21nB,aAAeI,GACpB/1nB,KAAKk1nB,mBAAmBrtnB,KAAK7H,KAAK21nB,eAEtC31nB,KAAKq1nB,YAAa,IAG1BL,UAAgB5uT,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAK4mlB,IAAiBvxT,MAAyB0vJ,MACxH6hK,GAAgB7pT,UAAqB1H,MAAyB,CAAE37T,KAAMktnB,GAAiBnxnB,UAAW,CAAC,CAAC,GAAI,0BAA2B,KAAM+iU,OAAQ,CAAEquT,eAAgB,iBAAkB3iK,WAAY,aAAcqjK,aAAc,eAAgBE,UAAW,CAAC,WAAY,cAAgBt/P,QAAS,CAAE2+P,mBAAoB,wBACpT1mlB,EAAW,EACP0/I,WACA45I,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACh7Q,YAClCkokB,GAAgB30mB,UAAW,aAAc,MAC5CmuB,EAAW,EACP0/I,SAAM,YACN45I,EAAW,cAAejiU,SAC3BmvnB,GAAgB30mB,UAAW,iBAAa,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3BmvnB,GAAgB30mB,UAAW,sBAAkB,GAChDmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BownB,GAAgB30mB,UAAW,0BAAsB,GACpDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5T,OAC1Bw5T,EAAW,oBAAqB,CAACx5T,SAClC0mnB,GAAgB30mB,UAAW,eAAgB,MAC9C20mB,GAAkBxmlB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACqrJ,MAC7D6hK,IApLyBA,IAAT,GA0LfgB,GAAe,UAASA,GAAN,MAClBl2nB,YAAY62d,IACR32d,KAAK22d,SAAWA,GAIhB32d,KAAKi2hB,mBAAqB,IAAIrxhB,MAC9B5E,KAAKipC,cAAgB,IAAIi7Y,MACzBlkb,KAAKi2nB,cAAgB,CACjBrokB,SAAa3kD,IAAMjJ,KAAKk2nB,eAAejtnB,IACvCktnB,OAAWltnB,IAAMjJ,KAAKo2nB,aAAantnB,KAEvCjJ,KAAKq2nB,cAAgB,GACrBr2nB,KAAKipC,cAAcuf,IAAIxoD,KAAK22d,SAAShxZ,gBAAgBjgE,UAAU1F,KAAKstC,OAAOznB,KAAK7lB,QAChFA,KAAK22d,SAASt7D,WAAa,CAAC/lW,GAAU1xC,KAAW5jB,KAAKuH,aAAauY,QAAQ9f,KAAK8uhB,QAAQ,CAAEx5d,YAAU1xC,aAAY,EAKhHy3Y,eAAW13Z,IACX3D,KAAK22d,SAASt7D,WAAa13Z,GAM3B4D,mBACA,OAAOvH,KAAKq2nB,cAEZ9unB,iBAAa/D,IACbxD,KAAKq2nB,cAAgB7ynB,GAErB8ynB,6BACA,MAA6B,aAAtBt2nB,KAAK+e,QAAQ+H,KAEpB/H,cACA,MAAMmvgB,GAAiB,CACnBzof,SAAS,EACT3e,KAAM,UAEV,IAAK6vW,GAAU32X,KAAK8/D,YAAwC,iBAAnB9/D,KAAK8/D,UAC1C,OAAOoud,GAEX,MAAMqoG,GAAoBtK,GAAUjsnB,KAAK8/D,WAAa,CAAEr6B,QAASzlC,KAAK8/D,WAAc9/D,KAAK8/D,UACzF,OAAOj6D,OAAOw0D,OAAO6zd,GAAgBqoG,IAEzC5vnB,cACI3G,KAAKipC,cAAcniC,cAEvBgohB,QAAQ7lhB,IACJ,OAAKjJ,KAAKw2nB,UAGoB,iBAAnBx2nB,KAAKw2nB,UACLvtnB,GAAEqsD,SAASt1D,KAAKw2nB,WAEG,mBAAnBx2nB,KAAKw2nB,UACLx2nB,KAAKw2nB,UAAUvtnB,SAD1B,EALWA,GAAE2a,MASjB0pB,OAAOrkC,IACH,MAAQw8B,WAAS3e,SAAS9mB,KAAK+e,SAE1B0mB,KADoBzlC,KAAKi2nB,cAAcnvmB,KAAS+3Y,IAIpC51Z,IAErBmtnB,aAAahxmB,IACT,MAAMvS,GAAM7S,KAAK8uhB,QAAQ1pgB,IACrBplB,KAAKuH,aAAa,KAAOsL,KAG7B7S,KAAKuH,aAAe,CAACsL,IACrB7S,KAAK+vU,UAETmmT,eAAe9wmB,IACX,MAAMvS,GAAM7S,KAAK8uhB,QAAQ1pgB,IACnB+kB,GAAMnqC,KAAKuH,aAAauY,QAAQjN,IAChCwoZ,GAAalxX,IAAM,GACpBwsV,GAAU9jX,MAGXwoZ,GACAr7Z,KAAKuH,aAAauc,OAAOqmB,GAAK,GAG9BnqC,KAAKuH,aAAa9B,KAAKoN,IAE3B7S,KAAK+vU,UAETA,SACI/vU,KAAKi2hB,mBAAmBpuhB,KAAK7H,KAAKuH,aAAaqH,WAGvDonnB,UAAgB5vT,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAK4nlB,IAAiBvyT,MAAyBiwJ,MACxHsiK,GAAgB7qT,UAAqB1H,MAAyB,CAAE37T,KAAMkunB,GAAiBnynB,UAAW,CAAC,CAAC,GAAI,0BAA2B,KAAM6iU,SAAU,EAAGC,aAAc,SAAsCnD,GAAI/3T,IAAgB,EAAL+3T,IACjNC,MAAmB,uBAAwBh4T,GAAI6qnB,yBAC9C1vT,OAAQ,CAAEy0F,WAAY,aAAc9zZ,aAAc,eAAgBivnB,UAAW,CAAC,WAAY,aAAc12jB,UAAW,CAAC,0BAA2B,cAAgBy2T,QAAS,CAAE0/J,mBAAoB,wBACvMznf,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACh7Q,YAClCkpkB,GAAgB31mB,UAAW,aAAc,MAC5CmuB,EAAW,EACP0/I,SAAM,YACN45I,EAAW,cAAejiU,SAC3BmwnB,GAAgB31mB,UAAW,iBAAa,GAC3CmuB,EAAW,EACP0/I,SAAM,2BACN45I,EAAW,cAAejiU,SAC3BmwnB,GAAgB31mB,UAAW,iBAAa,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5T,OAC1Bw5T,EAAW,oBAAqB,CAACx5T,SAClC0nnB,GAAgB31mB,UAAW,eAAgB,MAC9CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BoxnB,GAAgB31mB,UAAW,0BAAsB,GACpDmuB,EAAW,IACPy5R,OAAY,6BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCkuT,GAAgB31mB,UAAW,yBAA0B,MACxD21mB,GAAkBxnlB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC4rJ,MAC7DsiK,IA/HyBA,IAAT,GAsInB,IAAIS,GAAU,MACb,OAAUA,GAMRA,KAAeA,GAAa,KALhBA,GAAWjhkB,IAAS,GAAK,MACpCihkB,GAAWA,GAAWC,UAAe,GAAK,YAC1CD,GAAWA,GAAWE,aAAkB,GAAK,eAC7CF,GAAWA,GAAWG,aAAkB,GAAK,eAC7CH,GAAWA,GAAWI,QAAa,GAAK,UANxCJ,GACH,IAAUA,IADG,GAYVK,GAAY,MACf,OAAUA,GAIRA,KAAiBA,GAAe,KAHlBA,GAAaC,KAAU,GAAK,OACzCD,GAAaA,GAAaE,OAAY,GAAK,SAC3CF,GAAaA,GAAaG,MAAW,GAAK,QAJ1CH,GACH,IAAUA,IADK,GAUZptN,GAAe,MAClB,OAAUA,GAGRA,KAAoBA,GAAkB,KAFrBA,GAAgB7U,IAAQ,GAAM,KAC9C6U,GAAgBA,GAAgB3U,KAAU,GAAK,OAH/C2U,GACH,IAAUA,IADQ,GASnB,SACI5pa,cACIE,KAAK62X,WAAY,EAMrB30U,iBACIliD,KAAK62X,WAAY,EAOrBC,qBACI,OAAO92X,KAAK62X,WAOpB,iBAAgCyB,GAI5Bx4X,YAAYo3nB,GAAa7hgB,IACrB71G,QAIAxf,KAAK6yI,SAAU,EACfhtI,OAAOw0D,OAAOr6D,KAAMk3nB,IACpBl3nB,KAAKq1H,cAAgBA,GAQzB8hgB,SAAStkf,IACL7yI,KAAK6yI,QAAUA,IAOvB,iBAAqCylP,GAIjCx4X,YAAYo3nB,IACR13mB,QACA3Z,OAAOw0D,OAAOr6D,KAAMk3nB,KA4B5B,MAAMtnB,GAIN,YAAiB12iB,IACb,IAAI3mD,GACAu9lB,IAAS,EACb,MAAO,IAAI71kB,MACH61kB,KAGJv9lB,GAAS2mD,MAAMj/B,IACf61kB,IAAS,GACFv9lB,IAboBw9lB,CAjBtB,KACT,OAAMr6O,UAAyBiB,GAAUh1W,SAASgF,MAC9C,OAAO,EAEX,MACM01V,GAAS16V,SAAS+O,cAAc,OACtC2rV,GAAOlyW,MAAME,UAAY,6BACzBgyW,GAAOh/T,UAAa,uDACpB17B,SAASgF,KAAKk0B,YAAYwhU,IAC1B,MAAM2zP,GALM,KAKQ3zP,GAAO79S,SAAS,GAAG2qQ,wBAAwBh7M,IAC/DxsG,gBAASgF,KAAK+2B,YAAY2+T,IACnB2zP,KAwELonB,GAAkB,CAACC,GAAa3unB,GAAQ2wV,GAASi+R,GAAgBC,MACnE,KAAM5gQ,GAAU0gQ,KAAgB1gQ,GAAUjuX,KAAWiuX,GAAU2gQ,KAAmB3gQ,GAAU4gQ,KACxF,OAGJ,MAAMvknB,GAAOg5mB,GAAiBtjnB,GAAQ,UACtC,IAAKiuX,GAAU3jX,IACX,OAGJ,MAAM4L,GA5nFiBy9V,MACvB,IAAKsa,GAAUta,IACX,OAAO,KAEX,MAAM7iF,GAAW,0CACjB,OAAIj4Q,GAAM86V,GAAQ7iF,IACP6iF,GAEJA,GAAO9/T,cAAci9O,KAonFZg+V,CAAkBxknB,IAC5ByknB,GAA2B9mP,GAAU39X,GAAMk5mB,GAAYmL,KAC7D,IAAK1gQ,GAAU/3W,KAAaA,KAAYy4mB,IAAgBI,GACpD,OAEJ,MAAMC,GAAqB94mB,GAAQuqT,wBAU7BwuT,GAAqBD,GAAmBntnB,QAAU2/lB,GAAUxhmB,IAAU,EAAI,GAE1EkvnB,GAAkBv+R,GAAUk+R,GAAgBppgB,IAC5C0pgB,GAAUH,GAAmBvpgB,IAAMopgB,GAAgBppgB,IACzD,OAAIypgB,GAAkBC,GAAUF,GACrBb,GAAaE,OAEpBY,IAAmBC,GAAUH,GAAmBntnB,OAASotnB,GAClDb,GAAaG,MAEjBH,GAAaC,MAKlBe,GAA0B,CAACnhK,GAAUohK,MACvC,IAAMphQ,GAAUggG,MAAahgG,GAAUohQ,IACnC,OAAO,KAEX,MAAM3ymB,GAAO8mmB,GAAY6L,IACnBn0mB,GAAQyomB,GAAOjnmB,IACfg3b,GAASua,GAASlE,WAAW7uc,IACnC,OAAM+yW,GAAUylF,KAAWzlF,GAAUylF,GAAOppc,KAAKsiD,UAG1C8mZ,GAFI,MAST47K,GAAsB,CAAC37Q,GAAQ47Q,GAAa7lK,MAC1Cz7F,GAAUta,KAAkC,IAAvB47Q,GAAYlynB,QAAgBqsd,GAASE,WAAWj2G,GAAOrpW,KAAKsiD,SAAU+mT,GAAOrpW,KAAK4Q,QACvGwuc,GAAS6/J,aAAa51Q,GAAOrpW,KAAKsiD,SAAU+mT,GAAOrpW,KAAK4Q,QAQ1Ds0mB,GAAmB,CAACH,GAAYphK,MAC7BA,GAASrE,WAAWylK,GAAW/knB,KAAKsiD,SAAUyikB,GAAW/knB,KAAK4Q,QAC/D+yc,GAASmzJ,WAAWiO,GAAW/knB,KAAKsiD,SAAUyikB,GAAW/knB,KAAK4Q,QAShEu0mB,GAAiBxqnB,KACb+nX,WAAyBiB,GAAUh1W,SAASs/b,kBAG3Ct/b,SAASs/b,iBAAiBtzc,GAAMwrV,QAASxrV,GAAM0rV,SAF3C1rV,GAAMjF,OASf0vnB,GAAuB,CAACj2f,GAAUk2f,MACpC,MAAMC,GAAyBn2f,GAASnrH,MAAM,KACxCuhnB,GAAyBF,GAAcrhnB,MAAM,KAGnD,GAAIshnB,GAAuBvynB,OAASwynB,GAAuBxynB,OACvD,OAAOo8H,GAKX,MAAMq2f,GAA+BD,GAAuBxynB,OAAS,EAC/D0ynB,GAAyBF,GAAuB3pnB,MAAM,EAAG4pnB,IAA8B/wmB,KAAK,KAC5FixmB,GAAsBJ,GAAuB1pnB,MAAM,EAAG4pnB,IAA8B/wmB,KAAK,KAIzFkxmB,GAAyBJ,GAAuBxynB,OAAS,EACzD6ynB,GAAyBtqkB,OAAOiqkB,GAAuBI,KACvDE,GAAsBvqkB,OAAOgqkB,GAAuBK,KAC1D,OAAKF,KAA2BC,IAAyBG,GAAsBD,IAE3EN,GAAuBK,IAA0B3lmB,OAAO6lmB,GAAsB,GACvEP,GAAuB7wmB,KAAK,MAEhC06G,IAKL22f,GAAoB,IAAInyR,OAAO,iBAuB/BoyR,GAAgBrknB,IAAYxH,KAAKC,MAAMuH,GAAQq7X,YAAc,EAO7DipP,GAAmBtknB,IAAYxH,KAAKqB,KAAKmG,GAAQq7X,YAAcr7X,GAAQy7b,aAAez7b,GAAQm0O,aAW9FowY,GAAkB,CAACvknB,GAAS83C,GAAMvgD,MACpC,IAAM0qX,GAAUjiX,SAAYghX,QACxB,OAEJ,MAAMwjQ,GAAmBxknB,GAAQq7X,UACjC,IAAI1mL,GAAc78J,GACd2skB,GAAa,EACjB,KAAOD,KAAqBxknB,GAAQq7X,YAC9B9jY,KAAcy9Z,GAAgB7U,KAAMkkO,GAAarknB,OACjDzI,KAAcy9Z,GAAgB3U,OAAQikO,GAAgBtknB,MACxDyknB,GAAa,IAEbzknB,GAAQq7X,WAAc1mL,GAAcp9M,GACpCo9M,IAAe,EACf8va,IAAc,GAOhBC,GAAe,CAAChnK,GAAUz3a,GAAQjyC,MACpC,IAAKiuX,GAAUy7F,GAASk4J,iBACpB,OAEJ,MAAM+O,GAAkBjnK,GAAS8/J,gBAAgBv3kB,IACjDy3a,GAASigK,gBAAgB3pnB,GAAQ2wnB,KAK/BC,GAAoB,CAAClnK,GAAU98Z,MACjC,IAAKqhU,GAAUy7F,GAASk4J,iBACpB,OAEJ,MAAMiP,GAAkBnnK,GAAS8/J,gBAAgB58jB,IACjD88Z,GAASigK,gBAAgB/8jB,GAAUikkB,GAAkB,IAKnDC,GAAoB,CAACpnK,GAAU98Z,MACjC,IAAKqhU,GAAUy7F,GAASk4J,iBACpB,OAEJ,MAAMiP,GAAkBnnK,GAAS8/J,gBAAgB58jB,IACjD88Z,GAASigK,gBAAgB/8jB,GAAUikkB,GAAkB,IAMzD,SACIz5nB,YAAY25nB,IACRz5nB,KAAKy5nB,iBAAmBA,GAE5BjxkB,KAAMm5H,cAAY8/C,mBAAiBi4Z,gBAAcC,cAAYC,qBAEzD,MAAMC,GAAuBh0nB,OAAOw0D,OAAO,GAAIkyjB,GAAY5qc,KAC3D,GAAI+3c,KAAiB5C,GAAaC,KAAM,CAEpCmB,GAAiBz2Z,GAAiBm4Z,IAClC,MAAME,GAAsB95nB,KAAK+5nB,YAAYxN,GAAY9qZ,KAEnDr0H,GAAcupR,GAAUijQ,GAAgBtP,iBAC1Cp9mB,KAAKulC,IAAImnlB,GAAgBtP,gBAAgB8H,aAAa7F,GAAY9qZ,KAAmBq4Z,GAAoB/znB,QACzG+znB,GAAoB/znB,OACxB+znB,GAAoBh2mB,OAAOspF,GAAa,EAAGyshB,KAC3Cp6V,SAAOz/R,KAAKy5nB,iBAAiBO,cAA7Bv6V,CAA4C8sV,GAAY9qZ,IAAkBq4Z,IAC1E95nB,KAAKi6nB,kBAAoB/M,GAAezrZ,GAAgBzuN,KAAK4Q,MAAOwpF,QAEnE,CACD,MAAM8shB,GAAyBl6nB,KAAKm6nB,eAAe14Z,GAAiBm4Z,IAC9DQ,GAAaV,KAAiB5C,GAAaG,MAAQ,EAAI,EACvD7phB,GAAc8shB,GAAuBp6mB,QAAQysmB,GAAY9qZ,KAAoB24Z,GACnFF,GAAuBp2mB,OAAOspF,GAAa,EAAGyshB,IAE9C75nB,KAAKi6nB,kBAAoB/M,GADLzrZ,GAAgB46I,OAAS56I,GAAgB46I,OAAOrpW,KAAK4Q,MAAQ,KAC5BwpF,IAGzD,MAAMithB,GAAqD9N,GAArCmN,KAAiB5C,GAAaC,KAAmBt1Z,GAA+BA,GAAgB46I,QACtHi9Q,GAAkBM,GAAiBS,IAEnCjB,GAAaQ,GAAiBrN,GAAY5qc,IAAak4c,IAEnDF,KAAeC,KAAoBA,GAAgBniL,cACnDmiL,GAAgB9H,oBAIhB6H,KAAeC,KAEfA,GAAgB/2Y,kBAAkB3tC,gBAClC0kb,GAAgBvsT,MAAMrtU,KAAKi6nB,oBAGnCx7kB,QAASkjI,cAAYg4c,cAAYC,qBAC7B,MAAMU,GAAoBt6nB,KAAKm6nB,eAAex4c,GAAYg4c,IACpDY,GAAkBD,GAAkBx6mB,QAAQysmB,GAAY5qc,KAW9D,GAVA24c,GAAkBx2mB,OAAOy2mB,GAAiB,GAE1CvC,GAAoBr2c,GAAW06L,OAAQi+Q,GAAmBX,IAE1DH,GAAkBG,GAAYpN,GAAY5qc,GAAW06L,SAEhDs9Q,GAAWliL,cACZkiL,GAAW7H,oBAGX6H,KAAeC,GAAiB,CAEhCA,GAAgB/2Y,kBAAkB3tC,gBAElC,MAAMtxL,GAAQw0mB,GAAqBp4nB,KAAKi6nB,kBAAmBt4c,GAAW3uK,KAAK4Q,OAC3Eg2mB,GAAgBvsT,MAAMzpT,KAG9Bu2mB,eAAe/0mB,GAAMuxc,IACjB,OAAOhgG,GAAUvxW,GAAKi3V,QAClBr8W,KAAK+5nB,YAAYxN,GAAYnnmB,GAAKi3V,SAClCs6G,GAASl1V,MAEjBs4f,YAAYzkkB,IACR,OAAOwkY,SAAO95b,KAAKy5nB,iBAAiBO,cAA7BlgM,CAA4CxkY,KAAa,IAOxE,IAAIklkB,GAAiB,UAASA,GAAN,MACpB16nB,YAAYwkU,IACRtkU,KAAKskU,IAAMA,GACXtkU,KAAKk2Y,aAAc,EACnBl2Y,KAAKy6nB,eAAiB,QAEtBrP,sBACA,OAAQprnB,KAAKghC,aACJy1lB,GAAWjhkB,IAAK,MAAO,gBACvBihkB,GAAWC,UAAW,MAAO,qBAC7BD,GAAWE,aAAc,MAAO,uBAChCF,GAAWG,aAAc,MAAO,oBACrBC,QACP,MAAO,cAIxB3hb,gBACIl1M,KAAKskU,IAAIpvH,kBAGjBslb,UAAkBp0T,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKoslB,IAAmB/2T,MAAyBA,SAC9H+2T,GAAkBj0T,UAAqB9C,MAAyB,CAAE37T,KAAM0ynB,GAAmB32nB,UAAW,CAAC,CAAC,6BAA8B6iU,SAAU,EAAGC,aAAc,SAAwCnD,GAAI/3T,IAAgB,EAAL+3T,KAChNC,MAAmB,WAAYh4T,GAAIgvnB,gBACnCh3T,MAAmB,WAAYh4T,GAAIyqY,YAAnCzyE,CAAgD,cAAeh4T,GAAIyqY,eAClEroM,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,QAAS,CAAC,EAAG,mBAAoB,4BAA6Bh1Q,SAAU,SAAoCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC5JC,MAAkB,EAAGi3T,GAA2C,EAAG,EAAG,eAAgB,GACtFj3T,MAAkB,EAAGk3T,GAA8B,EAAG,EAAG,KAAM,IACxD,EAALn3T,KACFC,MAAkB,QAASh4T,GAAIymD,UAC/BuxQ,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIymD,YAC7Bu1Q,WAAY,CAACnB,MAAaA,OAA0BsB,cAAe,EAAGn0H,gBAAiB,IAChGjlK,EAAW,EACPy5R,SAAY,mBACZA,SAAY,qBACZH,EAAW,cAAeE,UAC3BwyT,GAAkBn6mB,UAAW,mBAAe,GAC/CmuB,EAAW,IACPy5R,OAAY,kBACZH,EAAW,cAAe90S,SAC3BwnmB,GAAkBn6mB,UAAW,sBAAkB,GAClDm6mB,GAAoBhslB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACI,SAC/DsyT,IA3C2BA,IAAT,GAgDfI,SAAN,SACQ9pQ,mBACA,IAAK6F,GAAU32X,KAAK66nB,eAChB,MAAM,IAAIpknB,MAAM,+EAEpB,OAAOzW,KAAK66nB,cAEZ/pQ,iBAAaA,IACb9wX,KAAK66nB,cAAgB/pQ,GAErBp8W,cACA,OAAO1U,KAAK8wX,aAAa1sV,SAASl2B,cAEtCvH,eACSgwX,GAAU32X,KAAK66nB,iBAGpB76nB,KAAK0U,QAAQu7X,cAAcvyV,YAAY19C,KAAK0U,SAC5C1U,KAAK8wX,aAAarrD,UAClBzlU,KAAK8wX,aAAe,MAExBtjX,OACIxN,KAAK0U,QAAQvK,MAAMkkC,QAAU,GAEjCwvB,OACI79D,KAAK0U,QAAQvK,MAAMkkC,QAAU,OAEjCinF,KAAKlmD,GAAM++C,GAAK/7F,GAAS,GACrBpyB,KAAK0U,QAAQvK,MAAMilE,KAAQ,GAAEA,GAAOh9C,OACpCpyB,KAAK0U,QAAQvK,MAAMgkH,IAAO,GAAEA,GAAM/7F,QAG1CwomB,UAAwBx0T,UAAO,SAAyCh4R,IAAK,OAAO,IAAKA,IAAKwslB,KAC9FA,GAAwBzvT,UAAqB1H,MAAyB,CAAE37T,KAAM8ynB,KAjCxEA,OA8CFE,GAAe,UAASA,GAAN,cAA8BF,GAChD96nB,YAAY4gM,IACRlhL,QACAxf,KAAK0gM,yBAA2BA,GAEpCovO,WAAWryQ,GAAWvrG,IACdykU,GAAU32X,KAAK66nB,gBACf76nB,KAAK2G,cAET,MAAMo0nB,GAAuB/6nB,KAAK0gM,yBAAyBG,wBAAwB25b,IACnFx6nB,KAAK8wX,aAAerzN,GAAUsjC,gBAAgBg6b,IAC9C/6nB,KAAK69D,OACL79D,KAAK8wX,aAAa1vW,SAAS8wC,SAAWA,GACtClyD,KAAK8wX,aAAajuI,kBAAkB3tC,gBAExCvuM,cACI3G,KAAKg7nB,wBACLh7nB,KAAKi7nB,eACLz7mB,MAAM7Y,cAEV2uH,KAAKlmD,GAAM++C,IACP3uG,MAAM81G,KAAKlmD,GAAM++C,GA7BL,IA+BhB+sgB,iCAAiCxynB,IAC7B,IAAMiuX,GAAUjuX,MAAWiuX,GAAU32X,KAAK0U,QAAQlK,SAE9C,YADAxK,KAAK69D,OAGT,MAAMs9jB,GAA8BzynB,GAAOygU,wBACrCiyT,GAA4Bp7nB,KAAK0U,QAAQy0T,wBAC/CnpU,KAAKq7nB,gBAAkBr7nB,KAAK0U,QAAQlK,QAAQ,CACxC,CAAEH,UAAW,mBACb,CAAEA,UAAY,aAAY8wnB,GAA4B/rjB,KAAOgsjB,GAA0BhsjB,WAAW+rjB,GAA4BhtgB,IAAMitgB,GAA0BjtgB,WApCxI,KAsC1BnuH,KAAKq7nB,gBAAgBzzM,SAAW,IAAM5nb,KAAK69D,OAE/Cm9jB,yBACSrkQ,GAAU32X,KAAKq7nB,mBAGpBr7nB,KAAKq7nB,gBAAgB9zQ,SACrBvnX,KAAKq7nB,gBAAkB,MAE3BC,mBAAmBt6lB,GAAQ2gJ,GAAY8/C,IACnC,MAAM85Z,GAAWv7nB,KAAK8wX,aAAa1vW,SAC/B4f,KAAWu6lB,GAASv6lB,QAAUsrlB,GAAe3qc,GAAY45c,GAAS55c,aAAe2qc,GAAe7qZ,GAAiB85Z,GAAS95Z,mBAG9H85Z,GAASv6lB,OAASA,GAClBu6lB,GAAS55c,WAAaA,GACtB45c,GAAS95Z,gBAAkBA,GAC3B85Z,GAASrmb,iBAEbsmb,WAAW1wnB,IACHA,KAAS9K,KAAK8wX,aAAa1vW,SAAStW,OAGxC9K,KAAK8wX,aAAa1vW,SAAStW,KAAOA,GAClC9K,KAAK8wX,aAAa1vW,SAAS8zL,iBAM/ByyR,gBAAiBn7a,QAAMxpB,cACnBhjC,KAAKi7nB,eACL,MAAMQ,GArUkBr2mB,MAC5B,KAAOuxW,GAAUvxW,KAA2B,SAAlBA,GAAKq1C,UAAqB,CAChD,MAAMihkB,GAAct2mB,GAAK+qb,aAAe/qb,GAAKyjO,aACvC44N,GAAeq3K,GAAkBt9M,KAAK32Y,iBAAiBzf,IAAMq7b,WACnE,GAAIi7K,IAAej6K,GACf,OAAOr8b,GAEXA,GAAOA,GAAKqoI,WAEhB,OAAOroI,IA4TyBu2mB,CAAuB37nB,KAAK0U,SACxD,IAAKiiX,GAAU8kQ,IACX,OAEJ,MAAMroB,GAAgBqoB,GAAoBtyT,wBACpCyyT,GAAW57nB,KAAK0U,QAAQy0T,wBAExB0yT,GAA4B3unB,KAAKsB,IAAI4kmB,GAAcjlf,IAAK,GAExD2tgB,GAAWD,GAA4BD,GAASrxnB,OAGhDwxnB,GAAcF,GAA4B3unB,KAAKulC,IAAI2gkB,GAAc1pS,OAAQ+xT,GAAoB5yY,cAC/F+yY,GAASztgB,IAAM2tgB,GACf97nB,KAAKg8nB,eAAiBzgd,YAAY,IAAM09c,GAAgBwC,GAAqBjvkB,GAAMk9W,GAAgB7U,IAAK7xX,IAEnG44lB,GAASlyT,OAASqyT,KACvB/7nB,KAAKg8nB,eAAiBzgd,YAAY,IAAM09c,GAAgBwC,GAAqBjvkB,GAAMk9W,GAAgB3U,MAAO/xX,KAMlHi4lB,eACQtkQ,GAAU32X,KAAKg8nB,kBACf3gd,cAAcr7K,KAAKg8nB,gBACnBh8nB,KAAKg8nB,eAAiB,QAIlClB,UAAgB10T,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAK0slB,IAAiBr3T,MAAgBA,SAC/Gq3T,GAAgBlwT,WAAsBnH,MAA0B,CAAEp4S,MAAOyvmB,GAAiBxinB,QAAS,SAAU81B,IAAK,OAAO0slB,GAAgB10T,UAAKh4R,OAC9I0slB,GAAkBtslB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC6B,SAC7DmxT,IAnGyBA,IAAT,GAwGfmB,GAAiB,UAASA,GAAN,MACpBn8nB,YAAY+iP,IACR7iP,KAAK6iP,kBAAoBA,GACzB7iP,KAAKipc,WAAY,EACjBjpc,KAAKkqC,SAAW,QAChBlqC,KAAKk8nB,cAAgB,OAGzBhnb,gBACIl1M,KAAK6iP,kBAAkB3tC,kBAG/B+mb,UAAkB71T,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK6tlB,IAAmBx4T,MAAyBA,SAC9Hw4T,GAAkB11T,UAAqB9C,MAAyB,CAAE37T,KAAMm0nB,GAAmBp4nB,UAAW,CAAC,CAAC,6BAA8B6iU,SAAU,EAAGC,aAAc,SAAwCnD,GAAI/3T,IAAgB,EAAL+3T,KAChNC,MAAmB,WAAYh4T,GAAIy+B,SAAnCu5R,CAA6C,iBAAkBh4T,GAAIywnB,eACnEz4T,MAAmB,wBAAyBh4T,GAAIw9b,aAC/Cp7P,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,4BAA6B,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,cAAe,iBAAkB,CAAC,EAAG,qBAAsB,CAAC,EAAG,oBAAqB,CAAC,EAAG,mBAAoB,4BAA6Bh1Q,SAAU,SAAoCsxQ,GAAI/3T,IAAgB,EAAL+3T,KACvSC,MAAkB,EAAG04T,GAAkC,EAAG,EAAG,MAAO,GACpE14T,MAAkB,EAAG24T,GAA8B,EAAG,EAAG,KAAM,IACxD,EAAL54T,KACFC,MAAkB,QAASh4T,GAAIymD,UAC/BuxQ,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIymD,YAC7Bu1Q,WAAY,CAACnB,MAAaA,OAA0BsB,cAAe,EAAGn0H,gBAAiB,IAChGjlK,EAAW,IACPy5R,OAAY,+BACZH,EAAW,cAAeE,UAC3Bi0T,GAAkB57mB,UAAW,iBAAa,GAC7CmuB,EAAW,EACPy5R,SAAY,kBACZH,EAAW,cAAe90S,SAC3BipmB,GAAkB57mB,UAAW,gBAAY,GAC5CmuB,EAAW,IACPy5R,OAAY,wBACZH,EAAW,cAAe90S,SAC3BipmB,GAAkB57mB,UAAW,qBAAiB,GACjD47mB,GAAoBztlB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACI,SAC/D+zT,IArC2BA,IAAT,GA0CjBI,GAAe,UAASA,GAAN,cAA8BzB,GAChD96nB,YAAY4gM,IACRlhL,QACAxf,KAAK0gM,yBAA2BA,GAEpCovO,WAAWryQ,GAAWvrG,IACdykU,GAAU32X,KAAK66nB,gBACf76nB,KAAK2G,cAET,MAAM21nB,GAAuBt8nB,KAAK0gM,yBAAyBG,wBAAwBo7b,IACnFj8nB,KAAK8wX,aAAerzN,GAAUsjC,gBAAgBu7b,IAC9Ct8nB,KAAK69D,OACL79D,KAAK8wX,aAAa1vW,SAAS8wC,SAAWA,GACtClyD,KAAK8wX,aAAajuI,kBAAkB3tC,gBAExCqnb,mBAAmBv7lB,GAAQ2gJ,GAAY8/C,IACnC,MAAM+6Z,GAAWx8nB,KAAK8wX,aAAa1vW,SAC/B4f,KAAWw7lB,GAASx7lB,QAAUsrlB,GAAe3qc,GAAY66c,GAAS76c,aAAe2qc,GAAe7qZ,GAAiB+6Z,GAAS/6Z,mBAG9H+6Z,GAASx7lB,OAASA,GAClBw7lB,GAAS76c,WAAaA,GACtB66c,GAAS/6Z,gBAAkBA,GAC3B+6Z,GAAStnb,mBAGjBmnb,UAAgBj2T,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAKiulB,IAAiB54T,MAAgBA,SAC/G44T,GAAgBzxT,WAAsBnH,MAA0B,CAAEp4S,MAAOgxmB,GAAiB/jnB,QAAS,SAAU81B,IAAK,OAAOiulB,GAAgBj2T,UAAKh4R,OAC9IiulB,GAAkB7tlB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC6B,SAC7D0yT,IA7ByBA,IAAT,GA6CfI,GAAyB,UAASA,GAAN,MAC5B38nB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3B41T,UAA0Br2T,UAAO,SAA2Ch4R,IAAK,OAAO,IAAKA,IAAKqulB,IAA2Bh5T,MAAyBA,MAAoB,KAC1Kg5T,GAA0BtxT,UAAqB1H,MAAyB,CAAE37T,KAAM20nB,GAA2B54nB,UAAW,CAAC,CAAC,GAAI,gCAAiC,OAC7J44nB,GAA4BjulB,EAAW,CAAEq8R,EAAQ,KAAGE,UAChDjD,EAAW,oBAAqB,CAACC,SAClC00T,IATmCA,IAAT,GAsBzBC,GAAyB,UAASA,GAAN,MAC5B58nB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3B61T,UAA0Bt2T,UAAO,SAA2Ch4R,IAAK,OAAO,IAAKA,IAAKsulB,IAA2Bj5T,MAAyBA,MAAoB,KAC1Ki5T,GAA0BvxT,UAAqB1H,MAAyB,CAAE37T,KAAM40nB,GAA2B74nB,UAAW,CAAC,CAAC,GAAI,gCAAiC,OAC7J64nB,GAA4BlulB,EAAW,CAAEq8R,EAAQ,KAAGE,UAChDjD,EAAW,oBAAqB,CAACC,SAClC20T,IATmCA,IAAT,GAW7B,MAAMC,GAA0B,CAC5Bl3lB,SAAS,EACT+mB,KAAM,EACNxpB,SAAU,GAcd,IAAI45lB,GAAoB,UAASA,GAAN,MACvB98nB,YAAY4U,GAASk3W,GAAMwmG,GAAUyqK,GAAiBC,IAClD98nB,KAAK0U,QAAUA,GACf1U,KAAK4rX,KAAOA,GACZ5rX,KAAKoyd,SAAWA,GAChBpyd,KAAK68nB,gBAAkBA,GACvB78nB,KAAK88nB,gBAAkBA,GAQvB98nB,KAAK+8nB,WAAY,EAKjB/8nB,KAAKg9nB,kBAAoB,GAOzBh9nB,KAAKi9nB,eAAiB,EAUtBj9nB,KAAKk9nB,YAAa,EAIlBl9nB,KAAKm9nB,gBAAkB,OAMvBn9nB,KAAKu3nB,gBAAkB,CAAEppgB,IAAK,EAAG/+C,KAAM,GACvCpvE,KAAKoyd,SAAS+3J,cAAe,EAE7BiT,qBAIA,OAAOv3nB,OAAOw0D,OAAO,GAAIsikB,GAH+B,kBAApB38nB,KAAKk9nB,WACrC,CAAEz3lB,QAASzlC,KAAKk9nB,YAChBl9nB,KAAKk9nB,YAGb/wnB,qBACInM,KAAKq9nB,qBACLr9nB,KAAK68nB,gBAAgB/sN,WAAW9va,KAAKoyd,SAASwgK,gBAAiB5ynB,KAAKs9nB,kBAAoBt9nB,KAAKs9nB,iBAAiBz2T,aAC9G7mU,KAAK88nB,gBAAgBhtN,WAAW9va,KAAKoyd,SAASwgK,gBAAiB5ynB,KAAKu9nB,kBAAoBv9nB,KAAKu9nB,iBAAiB12T,aAElHlgU,cACI3G,KAAKkpZ,UAAUzjF,UAKnB+2S,aAAcnnf,oBACL60e,GAAU70e,GAAc3sH,UAI7B1I,KAAKq3nB,YAAcrL,GAAiB32f,GAAc3sH,OAAQ,SAE1D1I,KAAKw9nB,sBAAwBnogB,IAKjC6xU,YAAa7xU,iBAAe8jO,WAASE,aAIjC,GAHIr5V,KAAKy9nB,wBAAwB,CAAEtkS,WAASE,cACxCr5V,KAAK09nB,qBAEJ/mQ,GAAU32X,KAAKq3nB,cAAgB1gQ,GAAU32X,KAAKw9nB,uBAC/C,OAEJ,MAAMzF,GAAaI,GAAc9igB,KAC7BwgQ,QAAa71X,KAAKoyd,SAASg/J,WAC3BpxnB,KAAK4rX,KAAKtjU,IAAI,IAAMtoD,KAAKg9hB,WAAW3na,GAAe0igB,KAEvD,MAAMT,GAAiBt3nB,KAAK29nB,kBAAkB5F,IACxC2B,GAAetC,GAAgBp3nB,KAAKq3nB,YAAaU,GAAY1+R,GAASi+R,GAAgBt3nB,KAAKu3nB,iBAC3FqG,GAAiB5R,GAAiB+L,GAAY,UAC9C8F,GA/tBQ,EAACnE,GAAc3B,MACjC,IAAMphQ,GAAU+iQ,MAAiB/iQ,GAAUohQ,IACvC,OAAOtB,GAAWI,QAEtB,OAAQ6C,SACC5C,GAAaC,KACd,OAAON,GAAWjhkB,SACjBshkB,GAAaE,OACd,OAAOrgQ,GAAUu1P,GAAY6L,IAAY+F,wBAA0BrH,GAAWG,aAAeH,GAAWC,eACvGI,GAAaG,MACd,OAAOtgQ,GAAUu1P,GAAY6L,IAAY1yM,oBAAsBoxM,GAAWG,aAAeH,GAAWE,qBAEpG,OAAOF,GAAWI,UAmtBHkH,CAAcrE,GAAc3B,IACzCp2c,GAAam2c,GAAwB93nB,KAAKoyd,SAAUpyd,KAAKq3nB,aACzD51Z,GAAkBq2Z,GAAwBR,GAAgBS,IAChE/3nB,KAAKg+nB,oBAAoBtE,GAAckE,GAAgBC,GAAYl8c,GAAY8/C,IAC/EzhO,KAAKi+nB,oBAAoBJ,GAAY1kS,GAASE,GAAS13K,GAAY8/C,IAC/DzhO,KAAKo9nB,eAAe33lB,SACpBzlC,KAAK68nB,gBAAgBl1J,eAAe3ne,KAAKo9nB,gBAMjDxgB,eAAgBvnf,iBAAegkO,aAI3B,GAHIr5V,KAAKo9nB,eAAe33lB,SACpBzlC,KAAK68nB,gBAAgB5B,gBAEpBtkQ,GAAU32X,KAAKq3nB,cAAgB1gQ,GAAU32X,KAAKw9nB,uBAG/C,OAFAx9nB,KAAKw9nB,sBAAwB,UAC7Bx9nB,KAAKq3nB,YAAc,MAGvB,MAAMU,GAAaI,GAAc9igB,IAC3BskgB,GAAa35nB,KAAKoyd,SAClBwnK,GAAkB55nB,KAAK29nB,kBAAkB5F,IACzC2B,GAAetC,GAAgBp3nB,KAAKq3nB,YAAaU,GAAY1+R,GAASr5V,KAAK29nB,kBAAkB5F,IAAa/3nB,KAAKu3nB,iBAC/G51c,GAAam2c,GAAwB6B,GAAY35nB,KAAKq3nB,aACtD51Z,GAAkBq2Z,GAAwB8B,GAAiB7B,IAC7DphQ,GAAUl1J,KAAoBk1J,GAAU+iQ,IACxC15nB,KAAK4rX,KAAKtjU,IAAI,IAAMtoD,KAAKm9hB,WAAW,CAAEx7W,cAAY8/C,mBAAiBi4Z,gBAAcC,cAAYC,oBAAmBvkgB,KAGhHr1H,KAAK68nB,gBAAgB3B,iCAAiCl7nB,KAAKq3nB,cAE3DxhQ,QAAa71X,KAAKoyd,SAASk/J,cAC3BtxnB,KAAK4rX,KAAKtjU,IAAI,IAAMtoD,KAAKk+nB,cAAc,CAAEv8c,cAAY8/C,mBAAiBpsG,oBAE1Er1H,KAAK88nB,gBAAgBj/jB,OACrB79D,KAAKq3nB,YAAc,KAEvB2G,oBAAoBtE,GAAckE,GAAgBC,GAAYl8c,GAAY8/C,IACtE,IAAKk1J,GAAUinQ,KAAmBlE,KAAiB5C,GAAaC,OAASpgQ,GAAU+iQ,IAE/E,YADA15nB,KAAK88nB,gBAAgBj/jB,OAGzB,MAAMsgkB,GAAuBP,GAAez0T,wBAEtCh7M,GADeurgB,KAAiB5C,GAAaE,OACxBmH,GAAqBhwgB,IAAOgwgB,GAAqBhwgB,IAAMgwgB,GAAqB5znB,OACvGvK,KAAK88nB,gBAAgBP,mBAAmBsB,GAAYl8c,GAAY8/C,IAEhEzhO,KAAK88nB,gBAAgBxngB,KAAK6ogB,GAAqB/ujB,KAAOpvE,KAAKu3nB,gBAAgBnojB,KAAM++C,GAAMnuH,KAAKu3nB,gBAAgBppgB,KAC5GnuH,KAAK88nB,gBAAgBtvnB,OAEzBywnB,oBAAoBJ,GAAY1kS,GAASE,GAAS13K,GAAY8/C,IAE1DzhO,KAAK68nB,gBAAgBvngB,KAAK6jO,GAAUn5V,KAAKu3nB,gBAAgBnojB,KAAMiqR,GAAUr5V,KAAKu3nB,gBAAgBppgB,KAC9FnuH,KAAK68nB,gBAAgBvB,mBAAmBuC,GAAYl8c,GAAY8/C,IAChEzhO,KAAK68nB,gBAAgBrvnB,OAEzB6vnB,qBACIr9nB,KAAKkpZ,UAAY,IAAIC,KAAU,CAC3BpW,MAAO/yY,KAAKw8mB,YAAY32lB,KAAK7lB,MAC7BylE,KAAMzlE,KAAKknc,WAAWrhb,KAAK7lB,MAC3BgiB,QAAShiB,KAAK48mB,cAAc/2lB,KAAK7lB,QAErCA,KAAK4rX,KAAK1xC,kBAAkB,IAAMl6U,KAAKkpZ,UAAUE,OAAOppZ,KAAK0U,QAAQxG,gBAEzEkwnB,gBAAgB/ogB,GAAe0igB,IAC3B,MAAMp2c,GAAam2c,GAAwB93nB,KAAKoyd,SAAU2lK,IACpDpqnB,GAAQ,IAAI0wnB,GAAuB,CAAE18c,cAAYtsD,mBACvD,YAAK+8V,SAAS++J,cAActpnB,KAAK8F,IAC1BA,GAEXqvhB,WAAW3na,GAAe0igB,IACtB,MAAMuG,GAAY,CACd38c,WAAYm2c,GAAwB93nB,KAAKoyd,SAAUpyd,KAAKq3nB,aACxD51Z,gBAAiBq2Z,GAAwB93nB,KAAK29nB,kBAAkB5F,IAAaA,IAC7E1igB,kBAEJr1H,KAAKoyd,SAASg/J,SAASvpnB,KAAKy2nB,IAEhCnhG,WAAWljgB,GAAMo7F,IACb,MAAM1nH,GAAQ,IAAI4wnB,GAAkBtkmB,GAAMo7F,IAC1Cp7F,GAAK2/lB,gBAAgBvI,SAASxpnB,KAAK8F,IAEnC3N,KAAKw+nB,6BAA6BvkmB,GAAK2/lB,iBACnC3/lB,GAAK0/lB,aAAe1/lB,GAAK2/lB,iBACzB55nB,KAAKw+nB,6BAA6BvkmB,GAAK0/lB,aAEtChsnB,GAAMmpX,sBAAwBnpX,GAAMklI,SACrC7yI,KAAK68nB,gBAAgBh/jB,OAErB5jC,GAAK2/lB,gBAAgBrjK,QAAQ1ud,KAAKoyB,IAC5Bo7F,GAAczvD,SAAW5lE,KAAK+8nB,WAChC9imB,GAAK0/lB,WAAW/9V,WAAW/zR,KAAKoyB,KAG/BtsB,GAAMmpX,qBAEX92X,KAAK68nB,gBAAgBh/jB,OAEflwD,GAAMklI,SAEZ7yI,KAAK68nB,gBAAgB3B,iCAAiCl7nB,KAAKq3nB,aAGnE6G,cAAcO,IACVz+nB,KAAKoyd,SAASk/J,YAAYzpnB,KAAK42nB,IAEnCd,kBAAkB5F,IACd,MACMT,GAAiBtL,GAAiB+L,GADhB/3nB,KAAKoyd,SAAS19c,QAAQxG,cAAc4mX,SAE5D,MAAO,CAAC90X,KAAKoyd,YAAapyd,KAAKg9nB,mBAAmBz2nB,KAAKowd,IAAYhgG,GAAUggG,KAAaA,GAASjid,QAAQxG,gBAAkBopnB,IAEjIkH,6BAA6B7nK,IAGrBA,GAASnsd,UAGbmsd,GAASnsd,SAAU,EACnBxK,KAAK4rX,KAAK1xC,kBAAkB,IAAMhoU,WAAW,IAAMykd,GAASnsd,SAAU,KAE1EiznB,wBAAwBiB,IACpB,QAAK/nQ,GAAU32X,KAAKw9nB,wBAGYtwnB,KAAKqnF,KAAKrnF,KAAK06F,IAAK5nG,KAAKw9nB,sBAAsBrkS,QAAUulS,GAAqBvlS,QAAU,GACpHjsV,KAAK06F,IAAK5nG,KAAKw9nB,sBAAsBnkS,QAAUqlS,GAAqBrlS,QAAU,KAChDr5V,KAAKi9nB,eAE3CS,oBACI,IAAI7nQ,QAAa71X,KAAKoyd,SAAS++J,gBAEvBwN,KADwB/yQ,KAAKtjU,IAAI,IAAMtoD,KAAKo+nB,gBAAgBp+nB,KAAKw9nB,sBAAuBrF,GAAcn4nB,KAAKw9nB,yBAC5F1mQ,qBAGf,OAFA92X,KAAKw9nB,sBAAwB,UAC7Bx9nB,KAAKq3nB,YAAc,MAI3Br3nB,KAAK68nB,gBAAgB7B,wBACrBh7nB,KAAK68nB,gBAAgBrB,WAAWx7nB,KAAKq3nB,YAAYh4P,WACjDr/X,KAAKu3nB,gBAn4Be7inB,MACxB,IAAMA,KAAWk7lB,KACb,MAAO,CAAExgiB,KAAM,EAAG++C,IAAK,GAE3B,IAAIF,GAAev5G,GAAQu7X,cAC3B,KAAOhiR,IACqD,SAApD94G,OAAO0vB,iBAAiBopF,IAAc5jH,WAG1C4jH,GAAeA,GAAagiR,cAEhC,GAAIhiR,GAAc,CACd,MAAMiwN,GAAOjwN,GAAak7M,wBAC1B,MAAO,CACH/5P,KAAM8uQ,GAAK9uQ,KAAO6+C,GAAa6hR,WAC/B3hR,IAAK+vN,GAAK/vN,IAAMF,GAAa8hR,WAGrC,MAAO,CAAE3gU,KAAM,EAAG++C,IAAK,IAi3BIywgB,CAAmB5+nB,KAAKq3nB,aAC/Cr3nB,KAAKw9nB,sBAAwB,OAGrCZ,UAAqBx2T,UAAO,SAAsCh4R,IAAK,OAAO,IAAKA,IAAKwulB,IAAsBn5T,MAAyBA,OAAoBA,MAAyBA,OAAgBA,MAAyBiwJ,IAAoBjwJ,MAAyBq3T,IAAkBr3T,MAAyB44T,MACrTO,GAAqBzxT,UAAqB1H,MAAyB,CAAE37T,KAAM80nB,GAAsB/4nB,UAAW,CAAC,CAAC,GAAI,2BAA4B,KAAM20X,eAAgB,SAA6Ch1D,GAAI/3T,GAAKgtX,IAGpN,GAHyO,EAALj1D,KAClOC,MAAsBg1D,GAAUgkQ,GAA2B,GAC3Dh5T,MAAsBg1D,GAAUikQ,GAA2B,IACpD,EAALl5T,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI6xnB,iBAAmB5ygB,GAAGxjH,OAC/Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI8xnB,iBAAmB7ygB,GAAGxjH,SAC9Ew/T,SAAU,EAAGC,aAAc,SAA2CnD,GAAI/3T,IAAgB,EAAL+3T,IACtFC,MAAmB,cAAeh4T,GAAI0xnB,gBAAtC15T,CAAuD,kBAAmBh4T,GAAI0xnB,gBAA9E15T,CAA+F,mBAAoBh4T,GAAI0xnB,gBAAvH15T,CAAwI,sBAAuBh4T,GAAI0xnB,kBAClKv2T,OAAQ,CAAEm2T,UAAW,YAAaC,kBAAmB,oBAAqBC,eAAgB,iBAAkBC,WAAY,cAAgB/wmB,SAAU,CAACs3S,MAA0B,CAC1Kq3T,GACAuB,QAEZ7tlB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3B40T,GAAqBv8mB,UAAW,iBAAa,GAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,QAC3BsunB,GAAqBv8mB,UAAW,yBAAqB,GACxDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3BsukB,GAAqBv8mB,UAAW,sBAAkB,GACrDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B+2nB,GAAqBv8mB,UAAW,kBAAc,GACjDmuB,EAAW,EACPwxV,SAAay8P,GAA2B,CAAEp7mB,QAAQ,IAClDymT,EAAW,cAAe20T,KAC3BG,GAAqBv8mB,UAAW,wBAAoB,GACvDmuB,EAAW,EACPwxV,SAAa08P,GAA2B,CAAEr7mB,QAAQ,IAClDymT,EAAW,cAAe40T,KAC3BE,GAAqBv8mB,UAAW,wBAAoB,GACvDmuB,EAAW,EACPy5R,SAAY,sBACZA,SAAY,0BACZA,SAAY,6BACZA,OAAY,6BACZH,EAAW,cAAe90S,SAC3B4pmB,GAAqBv8mB,UAAW,uBAAmB,GACtDu8mB,GAAuBpulB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC7Dk9W,MACA2nG,GACAonK,GACAuB,MACLO,IA/R8BA,IAAT,GAoSxB,MAAMiC,GAA0B,CAC5B7rkB,SAAU,WACVyoZ,YAAY,EACZ30b,KAAM,eAMJg4mB,SAAN,SACIh/nB,YAAYoiI,IACRliI,KAAKkiI,UAAYA,GACjBliI,KAAK++nB,aAAe,IAAI12jB,IACxBroE,KAAKg/nB,gBAAkBH,GAKvBI,mBAAe5jnB,IACfrb,KAAKg/nB,gBAAkBn5nB,OAAOw0D,OAAO,GAAIwkkB,GAAyBxjnB,IAElE4jnB,qBACA,OAAOj/nB,KAAKg/nB,gBAKZjynB,WAAO+ld,IACP9yd,KAAKk/nB,mBAAmBpsK,IAK5BosK,mBAAmBpsK,KACV9yd,KAAKm/nB,aAGVn/nB,KAAKo/nB,qBAAqBp/nB,KAAKm/nB,YAC3BrsK,IACA25J,GAAWzsnB,KAAKm/nB,WAAYrsK,GAAM9yd,KAAKi/nB,eAAgBj/nB,KAAKkiI,UAAUh4E,WAE1ElqD,KAAKq/nB,mBAAmBr/nB,KAAKm/nB,YACzBxoQ,GAAU32X,KAAKkiI,UAAUiwV,oBACzBnyd,KAAKkiI,UAAUiwV,kBAAkBtqd,KAAK,CAClC45H,MAAOzhI,KAAKm/nB,WACZrJ,WAAY91nB,KAAK++nB,aAAa/vkB,KAC9B8ja,QACAmsK,eAAgBj/nB,KAAKi/nB,kBAIjCI,mBAAmB7skB,IACfA,GAAM5rD,QAASq0X,KACPA,GAAQhnD,SACRj0U,KAAK++nB,aAAav2kB,IAAIyyU,GAAQ3lU,UAE9B2lU,GAAQz8T,UACRx+D,KAAKq/nB,mBAAmBpkQ,GAAQz8T,YAI5C4gkB,qBAAqB5skB,IACjBxyD,KAAK++nB,aAAaz/kB,QAClBkT,GAAM5rD,QAASq0X,KACXA,GAAQhnD,SAAU,EACdgnD,GAAQz8T,UACRx+D,KAAKo/nB,qBAAqBnkQ,GAAQz8T,aAKlDsgkB,UAAc14T,UAAO,SAA+Bh4R,IAAKq1R,QACzDq7T,GAAc3zT,UAAqB1H,MAAyB,CAAE37T,KAAMg3nB,GAAel4T,OAAQ,CAAEq4T,eAAgB,iBAAkBlynB,OAAQ,YACvIyhC,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,QAC1BiiU,EAAW,oBAAqB,CAACjiU,UAClCi5nB,GAAcz+mB,UAAW,iBAAkB,MAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8rmB,GAAcz+mB,UAAW,SAAU,MAzEhCy+mB,OA2EN,MAAM9L,GAAe,IAAItH,GACnB4T,GAAgB,CAACC,GAAmBvF,GAAe39Q,GAAS,KAAM5oU,GAAc,KAC7E+4kB,GAA0B+S,IAGxBA,GAAkB55nB,IAAI,CAACyf,GAAM+kB,MAChC,MAAMvmB,GAAQovmB,GAAa3qB,UAAUl+jB,GAAIp/B,WAAY0oC,IAC/CwnV,GAAU,CACZ3lU,SAAUlwC,GACVxB,SACAy4V,UACApoC,SAAS,GAEbgnD,UAAQz8T,SAAW8gkB,MAAcxlM,OAAOkgM,GAAPlgM,CAAsB10a,IAAO40mB,GAAe/+P,GAASr3W,IAC/Eq3W,KAXA,GAiBf,IAAIukQ,GAAyB,UAASA,GAAN,cAAwCV,GACpEh/nB,YAAYoiI,GAAWu9f,IACnBjgnB,MAAM0iH,IACNliI,KAAKkiI,UAAYA,GACjBliI,KAAKy/nB,qBAAuBA,GAI5Bz/nB,KAAKy3c,cAAe,EACpBz3c,KAAK0/nB,aAAe,GACpB,MAAMC,IAAgBhpQ,GAAU32X,KAAKy/nB,sBACrCz/nB,KAAKkiI,UAAU0+T,UAAY++L,GAAgBv6mB,IAASplB,KAAK++nB,aAAa9tmB,IAAI7L,IAAQw7a,GAKlFo5L,kBAAcr2nB,IACd,IAAKA,GACD,MAAM,IAAI8S,MAAM,mCAEpBzW,KAAK4/nB,eAAiBj8nB,GAKtB89H,UAAMp7H,IACNrG,KAAK0/nB,aAAer5nB,IAAU,GAC9BrG,KAAKm/nB,WAAaG,GAAcj5nB,GAAQrG,KAAKg6nB,gBAAkB,GAC/Dh6nB,KAAKq/nB,mBAAmBr/nB,KAAKm/nB,YAM7Bv+L,cAAU1nY,IACVl5D,KAAKkiI,UAAU0+T,UAAY1nY,GAK3B8gkB,oBACA,OAAOh6nB,KAAK4/nB,eAEhBv6nB,WACQsxX,GAAU32X,KAAKg6nB,iBACfh6nB,KAAKkiI,UAAU1jE,SAAWxrD,KAAQsyB,WAAGw0Z,OAAO95b,KAAKg6nB,eAAehnnB,KAChEhT,KAAKkiI,UAAUy3M,YAAc3mU,KACzB,MAAMwrD,IAAWs7X,SAAO95b,KAAKg6nB,eAAehnnB,IAC5C,OAAOg1T,QAAQxpQ,IAAYA,GAASz4D,SAExC/F,KAAKkiI,UAAUinZ,YAAc,IAAI02G,GAAwB7/nB,MACzDA,KAAKkiI,UAAUj7F,aAAavhC,UAAU1F,KAAKk/nB,mBAAmBr5mB,KAAK7lB,OAC/DA,KAAKkiI,UAAUn1H,QACf/M,KAAKk/nB,mBAAmBl/nB,KAAKkiI,UAAUn1H,SAEtC/M,KAAKy3c,cAAgB9gF,GAAU32X,KAAKkiI,UAAU4vf,oBAC/C9xnB,KAAKkiI,UAAU4vf,qBAI3B/qnB,YAAYC,OACJumF,MAAU,gBAAiBvmF,IAAS,KACpChH,KAAKyhI,MAAQzhI,KAAK0/nB,eAGlBj3O,QAAW,CAAC,QAAS,gBAAiBzhZ,MAAahH,KAAKy3c,cAAgB9gF,GAAU32X,KAAKkiI,UAAU4vf,oBACjG9xnB,KAAKkiI,UAAU4vf,sBAI3B0N,UAA0Bp5T,UAAO,SAA2Ch4R,IAAK,OAAO,IAAKA,IAAKoxlB,IAA2B/7T,MAAyByvJ,IAAqBzvJ,MAAyBm5T,GAAsB,KAC1N4C,GAA0Br0T,UAAqB1H,MAAyB,CAAE37T,KAAM03nB,GAA2B37nB,UAAW,CAAC,CAAC,GAAI,gCAAiC,KAAM+iU,OAAQ,CAAE6wI,aAAc,eAAgBuiL,cAAe,gBAAiBv4f,MAAO,QAASm/T,UAAW,aAAez0a,SAAU,CAACs3S,MAAmCA,SACnUj1R,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCwsmB,GAA0Bn/mB,UAAW,gBAAiB,MACzDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,OAC1Bw5T,EAAW,oBAAqB,CAACx5T,SAClCkxnB,GAA0Bn/mB,UAAW,QAAS,MACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACh7Q,YAClC0ykB,GAA0Bn/mB,UAAW,YAAa,MACrDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3Bw3T,GAA0Bn/mB,UAAW,oBAAgB,GACxDm/mB,GAA4BhxlB,EAAW,CAAEq8R,EAAQ,GAAGE,YAAaF,EAAQ,KAAGs+H,UACxErhI,EAAW,oBAAqB,CAACorJ,GAC7B0pK,MACL4C,IA9FmCA,IAAT,GAmGzB/K,GAAyB,UAASA,GAAN,MAC5B30nB,YAAYgxnB,GAAeiC,GAAgB3pG,IACvCpphB,KAAK8wnB,cAAgBA,GACrB9wnB,KAAK+ynB,eAAiBA,GACtB/ynB,KAAKophB,GAAKA,GACVpphB,KAAK8/nB,UAAW,EAEhB50kB,cACA,OAAOlrD,KAAK8/nB,SAEZ50kB,YAAQvnD,IACR3D,KAAK8/nB,SAAWn8nB,GAChB3D,KAAKophB,GAAGnsJ,eAEZ53X,WACI,MAAM06nB,GAAuB//nB,KAAK+ynB,eAC7B/rnB,QACAwF,MAAKO,QAAO6W,IAASA,KAAU5jB,KAAK4jB,QACzC5jB,KAAKkhD,aAAelhD,KAAK8wnB,cACpB9pnB,QACAwF,MAAKO,QAAO,EAAG6W,YAAYA,KAAU5jB,KAAK4jB,QAAQgtC,QAAI,EAAG05V,eACrDA,IAAUtqZ,KAAKkrD,UAChBlrD,KAAKkrD,SAAU,MAEnBn+C,QAAO,EAAGu9Y,aAAaA,KAAS1/W,QAAUjhC,KAAK27B,QAAG37B,IAAG6C,QAAK8E,MAAM,MAAM40b,QAAU65L,OAC/Er6nB,UAAU,IAAM1F,KAAKkrD,SAAU,GACpClrD,KAAKkhD,aAAasH,IAAIu3kB,GAAqBr6nB,UAAU,IAAM1F,KAAKkrD,SAAU,IAE9EvkD,cACQ3G,KAAKkhD,cACLlhD,KAAKkhD,aAAap6C,gBAI9B2tnB,UAA0BruT,UAAO,SAA2Ch4R,IAAK,OAAO,IAAKA,IAAKqmlB,IAA2BhxT,MAAyBgoT,IAAqBhoT,MAAyBqoT,IAA6BroT,MAAyBA,SAC1PgxT,GAA0BtpT,UAAqB1H,MAAyB,CAAE37T,KAAM2snB,GAA2B5wnB,UAAW,CAAC,CAAC,GAAI,uBAAwB,KAAM6iU,SAAU,EAAGC,aAAc,SAAgDnD,GAAI/3T,IAAgB,EAAL+3T,IAC5OC,MAAmB,cAAeh4T,GAAIy/C,UACrC07Q,OAAQ,CAAEhjT,MAAO,CAAC,uBAAwB,YACnD4qB,EAAW,EACPy5R,SAAY,qBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClCysT,GAA0Bp0mB,UAAW,UAAW,MACnDmuB,EAAW,IACP0/I,OAAM,wBACN45I,EAAW,cAAe90S,SAC3ByhmB,GAA0Bp0mB,UAAW,aAAS,GACjDo0mB,GAA4BjmlB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC2jT,GAClEK,GACA5jT,SACLusT,IAlDmCA,IAAT,GA6D7B,SACI30nB,YAAYkgoB,IACRhgoB,KAAKggoB,YAAcA,GAEvBx3kB,KAAMm5H,cAAY8/C,mBAAiBi4Z,gBAAcC,cAAYC,qBAEzD,MAAMC,GAAuBh0nB,OAAOw0D,OAAO,GAAIkyjB,GAAY5qc,KAC3D,GAAI+3c,KAAiB5C,GAAaC,KAAM,CAEpCmB,GAAiBz2Z,GAAiBm4Z,IAClC,MAAMqG,IAAoBnmM,SAAO95b,KAAKggoB,YAAYE,QAAxBpmM,CAAiCyyL,GAAY9qZ,MACvEg+D,SAAOz/R,KAAKggoB,YAAYG,cAAxB1gW,CAAuCo6V,GAAsBoG,IAG7D,MAAM7yhB,GAFqBptG,KAAKogoB,6BAA6BxG,GAAiB55nB,KAAKggoB,YAAYN,aAAcnT,GAAY9qZ,KAEhF,EACzCzhO,KAAKggoB,YAAYN,aAAa57mB,OAAOspF,GAAa,EAAGyshB,IAErD75nB,KAAKqgoB,aACL,MAAMzqN,GAAc51a,KAAKsgoB,gBAAgB/T,GAAY9qZ,IAAkBm4Z,IAAiB95mB,QAAQ+5mB,IAChG75nB,KAAKi6nB,kBAAoB/M,GAAezrZ,GAAgBzuN,KAAK4Q,MAAOgyZ,QAEnE,CACD,MAAMwkN,GAAaV,KAAiB5C,GAAaG,MAAQ,EAAI,EACvD7phB,GAAcptG,KAAKggoB,YAAYN,aAAa5/mB,QAAQysmB,GAAY9qZ,KAAoB24Z,GAC1Fp6nB,KAAKggoB,YAAYN,aAAa57mB,OAAOspF,GAAa,EAAGyshB,IACrD,MAAM0G,IAA0BzmM,SAAO95b,KAAKggoB,YAAYG,cAAxBrmM,CAAuCyyL,GAAY9qZ,QACnFg+D,OAAOz/R,KAAKggoB,YAAYG,cAAxB1gW,CAAuCo6V,GAAsB0G,IAE7DvgoB,KAAKqgoB,aACL,MAAM5slB,GAAcguL,GAAgB46I,OAChC56I,GAAgB46I,OAAOrpW,KAAK4Q,MAC5B,KAIEgyZ,IAHkBn0M,GAAgB46I,OACpCr8W,KAAKsgoB,gBAAgB/T,GAAY9qZ,GAAgB46I,QAASu9Q,IAC1DA,GAAgBn4f,OACgB3hH,QAAQ+5mB,IAC5C75nB,KAAKi6nB,kBAAoB/M,GAAez5kB,GAAamiY,IAErD+jN,KAAeC,IACf55nB,KAAKwgoB,cAAc3G,GAAsBF,IAG7C,MAAMU,GAAqD9N,GAArCmN,KAAiB5C,GAAaC,KAAmBt1Z,GAA+BA,GAAgB46I,QACtHi9Q,GAAkBM,GAAiBS,IAEnCjB,GAAaQ,GAAiBrN,GAAY5qc,IAAak4c,IAEnDF,KAAeC,KAAoBA,GAAgBniL,cACnDmiL,GAAgB9H,oBAIhB6H,KAAeC,KAEfA,GAAgB/2Y,kBAAkB3tC,gBAClC0kb,GAAgBvsT,MAAMrtU,KAAKi6nB,oBAGnCx7kB,QAASkjI,cAAYg4c,cAAYC,qBAC7B,MAAM6G,GAAiBlU,GAAY5qc,IAC7B44c,GAAkBv6nB,KAAKggoB,YAAYN,aAAa5/mB,QAAQ2gnB,IAgB9D,GAfAzgoB,KAAKggoB,YAAYN,aAAa57mB,OAAOy2mB,GAAiB,GAClDZ,KAAeC,IACf55nB,KAAK0goB,iBAAiBD,GAAgB9G,IAE1C35nB,KAAKqgoB,aAGLrI,GAAoBr2c,GAAW06L,OADR16L,GAAW06L,OAAS16L,GAAW06L,OAAO79S,SAAW,GACjBm7jB,IAEvDH,GAAkBG,GAAYpN,GAAY5qc,GAAW06L,SAEhDs9Q,GAAWliL,cACZkiL,GAAW7H,oBAGX6H,KAAeC,GAAiB,CAEhCA,GAAgB/2Y,kBAAkB3tC,gBAElC,MAAMtxL,GAAQw0mB,GAAqBp4nB,KAAKi6nB,kBAAmBt4c,GAAW3uK,KAAK4Q,OAC3Eg2mB,GAAgBvsT,MAAMzpT,KAG9B48mB,cAAclrkB,GAAU3a,IACpB,MAAMgmlB,GAAe3goB,KAAK4goB,wBAAwBtrkB,GAAU3a,IAC5D36C,KAAKggoB,YAAYN,aAAaj6nB,QAAQk7nB,IAE1CD,iBAAiBprkB,GAAU3a,IACA36C,KAAK4goB,wBAAwBtrkB,GAAU3a,IAC/C/zC,QAAQoM,KACnB,MAAM4Q,GAAQ5jB,KAAKggoB,YAAYN,aAAa5/mB,QAAQ9M,IACpDhT,KAAKggoB,YAAYN,aAAa57mB,OAAOF,GAAO,KAGpDg9mB,wBAAwBx7mB,GAAMgtc,IAC1B,IAAI3wV,GAAQzhI,KAAKsgoB,gBAAgBl7mB,GAAMgtc,IACvC3wV,UAAM76H,QAAQwe,IAAQq8G,GAAQA,GAAM9tF,OAAO3zC,KAAK4goB,wBAAwBx7mB,GAAMgtc,KAAa,KACpF3wV,GAEX6+f,gBAAgBl7mB,GAAMgtc,IAClB,IAAKhtc,GACD,MAAO,GAEX,IAAIq8G,GAAQ,GACZ2wV,UACK5zZ,SAASp5C,IACT5Y,QAAK+kD,MAAK,IACV7rD,UAAU84D,IAAYijE,GAAQA,GAAM9tF,OAAO6qB,IAAY,KACrDijE,GAEX2+f,6BAA6BhuK,GAAUt/c,GAAMsS,IACzC,IAAKuxW,GAAUy7F,GAASk4J,mBAAqBl4J,GAASz4I,YAAYv0T,IAC9D,OAAOtS,GAAK/M,OAEhB,MAAM86nB,GAAoBzuK,GAASk4J,gBAAgB8H,aAAahtmB,IAC1D07mB,GAAkB9goB,KAAKsgoB,gBAAgBl7mB,GAAMgtc,IAAUxjd,MAAM,EAAGiynB,IAGtE,OADsB/tnB,GAAKgN,QADVghnB,GAAgBA,GAAgB/6nB,OAAS,IAI9Ds6nB,aACIrgoB,KAAKggoB,YAAYv+f,MAAQzhI,KAAKggoB,YAAYN,cAIlD,MAAMqB,GAAe,CAACrxkB,GAAM+xE,GAAO99H,KAAU89H,GAAM10H,OAAQpD,IAAM+lD,GAAK/lD,MAAOhG,IACvEq9nB,GAAiB,IAAItV,GACrBuV,GAAY,CAAC1B,GAAmB2B,GAAUf,GAAeD,GAAS7jR,GAAS,KAAM5oU,GAAc,KAC5F+4kB,GAA0B+S,IAGxBA,GAAkB55nB,IAAI,CAACyf,GAAM+kB,MAChC,MAAMvmB,GAAQo9mB,GAAe34B,UAAUl+jB,GAAIp/B,WAAY0oC,IACjDwnV,GAAU,CACZ3lU,SAAUlwC,GACVxB,SACAy4V,UACApoC,SAAS,GAEbgnD,UAAQz8T,SAAWyikB,GAAUF,IAAajnM,SAAOqmM,IAAgBe,IAAY,MAAIpnM,OAAOomM,GAAPpmM,CAAgB10a,KAAQ87mB,GAAUf,GAAeD,GAASjlQ,GAASr3W,IAC7Iq3W,KAXA,GAiBf,IAAIkmQ,GAAwB,UAASA,GAAN,cAAuCrC,GAClEh/nB,YAAYoiI,IACR1iH,MAAM0iH,IACNliI,KAAKkiI,UAAYA,GAIjBliI,KAAKy3c,cAAe,EAIpBz3c,KAAK0/nB,aAAe,GACpB1/nB,KAAKkiI,UAAU0+T,UAAax7a,IAASplB,KAAK++nB,aAAa9tmB,IAAI7L,IAK3Dq8G,UAAMp7H,IAEN,GADArG,KAAK0/nB,aAAer5nB,IAAU,GA9+HT1C,KAAUs8gB,GAAQt8gB,KAAkC,IAAxBA,GAAM+gC,OAAO3+B,OA++HzDm6gB,CAAoBlghB,KAAKmgoB,eAO1BngoB,KAAKkiI,UAAUT,MAAQzhI,KAAK0/nB,aAAa9wnB,MAAM,OAPL,CAC1C,MAAM8gD,IAAOoqY,SAAO95b,KAAKmgoB,eACzBngoB,KAAKkiI,UAAUT,MAAQzhI,KAAK0/nB,aAAa3ynB,OA7KrC,KAAIktB,KAAUnnB,IAASmnB,GAAKmnmB,YAAY,CAAC1ikB,GAAKwkR,KAASA,GAAKxkR,IAAM5rD,IA6KtBuzH,CAAQ45Y,GAASvwd,KACjE1vD,KAAKm/nB,WAAa8B,GAAUjhoB,KAAKkiI,UAAUT,MAAOzhI,KAAK0/nB,aAAc1/nB,KAAKmgoB,cAAengoB,KAAKkgoB,SAC9FlgoB,KAAKq/nB,mBAAmBr/nB,KAAKm/nB,aAUjCv+L,cAAU1nY,IACVl5D,KAAKkiI,UAAU0+T,UAAY1nY,GAK/B7zD,WACI,GAAIsxX,GAAU32X,KAAKmgoB,gBAAkBxpQ,GAAU32X,KAAKkgoB,SAAU,CAC1D,MAAMjuK,GAAiB7sc,IAAS27mB,IAAajnM,SAAO95b,KAAKmgoB,eAAgBngoB,KAAK0/nB,cAAgB,IAAI5lM,SAAO95b,KAAKkgoB,SAAS96mB,KACvHplB,KAAKkiI,UAAUy3M,YAAev0T,IAAS6sc,GAAc7sc,IAAMrf,OAAS,EACpE/F,KAAKkiI,UAAU1jE,SAAYp5C,KAASkgB,QAAG2sb,GAAc7sc,KACrDplB,KAAKkiI,UAAUinZ,YAAc,IAAIk4G,GAAmBrhoB,MACpDA,KAAKkiI,UAAUj7F,aAAavhC,UAAU1F,KAAKk/nB,mBAAmBr5mB,KAAK7lB,OAC/DA,KAAKkiI,UAAUn1H,QACf/M,KAAKk/nB,mBAAmBl/nB,KAAKkiI,UAAUn1H,SAEtC/M,KAAKy3c,cAAgB9gF,GAAU32X,KAAKkiI,UAAU4vf,oBAC/C9xnB,KAAKkiI,UAAU4vf,qBAO3B/qnB,YAAYC,OACJumF,MAAU,gBAAiBvmF,IAAS,KACpChH,KAAKyhI,MAAQzhI,KAAK0/nB,eAGlBj3O,QAAW,CAAC,QAAS,gBAAiBzhZ,MAAahH,KAAKy3c,cAAgB9gF,GAAU32X,KAAKkiI,UAAU4vf,oBACjG9xnB,KAAKkiI,UAAU4vf,sBAI3BqP,UAAyB/6T,UAAO,SAA0Ch4R,IAAK,OAAO,IAAKA,IAAK+ylB,IAA0B19T,MAAyByvJ,MACnJiuK,GAAyBh2T,UAAqB1H,MAAyB,CAAE37T,KAAMq5nB,GAA0Bt9nB,UAAW,CAAC,CAAC,GAAI,+BAAgC,KAAM+iU,OAAQ,CAAE6wI,aAAc,eAAgBh2U,MAAO,QAASm/T,UAAW,YAAau/L,cAAe,gBAAiBD,QAAS,WAAa/zmB,SAAU,CAACs3S,MAAmCA,SACpVj1R,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,OAC1Bw5T,EAAW,oBAAqB,CAACx5T,SAClC6ynB,GAAyB9gnB,UAAW,QAAS,MAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BmumB,GAAyB9gnB,UAAW,qBAAiB,GACxDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BmumB,GAAyB9gnB,UAAW,eAAW,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3Bm5T,GAAyB9gnB,UAAW,oBAAgB,GACvDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACh7Q,YAClCq0kB,GAAyB9gnB,UAAW,YAAa,MACpD8gnB,GAA2B3ylB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACorJ,MACtEiuK,IA5FkCA,IAAT,GA8F5B,MAAMG,GAAY,CAAC19mB,GAAO0xC,MAAc,CAAEA,YAAU1xC,WACpD,IAAI1e,GAAK,EAQLsvnB,GAAqB,UAASA,GAAN,MACxB10nB,YAAY4U,GAASo8mB,GAAep2P,GAAmB24C,GAAkBkuN,GAAer8d,GAAUqod,IAC9FvtnB,KAAK0U,QAAUA,GACf1U,KAAK8wnB,cAAgBA,GACrB9wnB,KAAK06X,kBAAoBA,GACzB16X,KAAKqza,iBAAmBA,GACxBrza,KAAKuhoB,cAAgBA,GACrBvhoB,KAAKklK,SAAWA,GAChBllK,KAAKutnB,GAAKA,GACVvtnB,KAAKizP,KAhBU,WAiBfjzP,KAAKy3c,cAAe,EACpBz3c,KAAKkzX,YAAa,EAClBlzX,KAAK4gc,WAAY,EACjB5gc,KAAKwhoB,YAAc,QACnBxhoB,KAAKkF,GAAKA,KACVlF,KAAKyhoB,eAAgB,EACrBzhoB,KAAKipC,cAAgB,GACrBjpC,KAAK0F,YAELk0U,cAAUmnI,IAEN/gd,KAAKwhoB,YADO,YAAZzgL,GACmB,OAEF,kBAAhB2gL,GACkB,QAGA,QAGvBpvK,iBACA,OAAOtyd,KAAK2xnB,cAAe,EAE3Br/J,eAAWA,IACXtyd,KAAK2xnB,YAAcr/J,GAEnBj3D,iBACA,OAAOr7Z,KAAK6xnB,cAAe,EAE3Bx2N,eAAWA,IACXr7Z,KAAK6xnB,YAAcx2N,GAEnB8mH,eACA,MAjDY,WAiDLnihB,KAAKizP,KAEZ0uY,eACA,OAAOL,GAAUthoB,KAAK4jB,MAAO5jB,KAAKs1D,UAElCsskB,qBACA,OAAO5hoB,KAAK4qnB,eAAiB0W,GAAUthoB,KAAKyzC,YAAazzC,KAAK4qnB,gBAAkB,KAEpFvlnB,WACQrF,KAAKy3c,eAAiBz3c,KAAKmihB,UAC3BnihB,KAAKuhoB,cAAcnT,aAAapunB,KAAK2hoB,SAAU3hoB,KAAK4hoB,gBAExD5hoB,KAAK6hoB,yBACL7hoB,KAAKyhoB,eAAgB,EACrBzhoB,KAAK65G,aAAa,OAAQ75G,KAAKizP,MAC/BjzP,KAAK8hoB,oBACL9hoB,KAAK+hoB,mBACL/hoB,KAAKgioB,iBAETj7nB,YAAYC,IACR,MAAQ4c,SAAOsvW,eAAelsX,IAC1ByhZ,QAAW,CAAC,QAAS,YAAa,YAAa,aAAc,aAAc,aAAc,cAAezhZ,KACxGhH,KAAK8hoB,oBAEL5uQ,IACAlzX,KAAK+hoB,mBAEL/hoB,KAAKy3c,eAAiBz3c,KAAKmihB,UAC3BnihB,KAAKiioB,eAAej7nB,IAExBhH,KAAKkioB,mBAAmBt+mB,OACpB6kY,MAAW,CAAC,aAAc,aAAczhZ,KACxChH,KAAKmioB,yBAGbx7nB,cACI3G,KAAK06X,kBAAkB4zP,eAAetunB,KAAKkF,GAAIlF,KAAK4jB,OAChD5jB,KAAKy3c,eAAiBz3c,KAAKmihB,UAC3BnihB,KAAKuhoB,cAAcjT,eAAetunB,KAAK4jB,MAAO5jB,KAAKs1D,UAEvDt1D,KAAKipC,cAAgBjpC,KAAKipC,cAAcjvB,OAAO,CAAC8tB,GAAMj4B,MAAcA,GAAS/I,cAAeghC,IAAO,IAEvGpiC,YACI1F,KAAKipC,cAAgB,CACjBjpC,KAAK06X,kBAAkBi0P,MAClBjpnB,UAAU,KACX1F,KAAKgioB,iBACLhioB,KAAKy1lB,cAETz1lB,KAAK06X,kBAAkBg0P,QAClBlinB,MAAKO,QAAO,EAAG6W,YAAYA,KAAU5jB,KAAK4jB,QAAU5jB,KAAKkzX,aACzDxtX,UAAU,EAAG4kZ,aAAatqZ,KAAKsqZ,OAAOA,MAGnDu3O,yBACI7hoB,KAAK06X,kBAAkB0zP,aAAapunB,KAAKkF,GAAIlF,KAAK4jB,MAAO5jB,KAAKkzX,WAAYlzX,KAAKmihB,SAAUnihB,KAAK4gc,WAC9F5gc,KAAKoioB,eAETA,eACI,GAAIpioB,KAAKkzX,WACL,OAEJ,MAAMwH,GAAoB16X,KAAK06X,kBACzB24C,GAAmBrza,KAAKqza,iBACxBzvZ,GAAQ5jB,KAAK4jB,MACnByvZ,GAAiB+8M,iBAAiBxsmB,GAAO5jB,KAAKq7Z,aACzC3gC,GAAkB7mN,SAASjwJ,KAAUyvZ,GAAiB88M,gBAAgBvsmB,KACvE82W,GAAkB60P,cAAc3rmB,IAGxC0mY,OAAO+3O,IACHrioB,KAAK8wnB,cAAcuR,GAAe,SAAW,YAAYrioB,KAAK4jB,MAAO5jB,KAAKs1D,UAE9EkrY,cACI,OAAQxgc,KAAKkzX,YAAclzX,KAAK06X,kBAAkB8lE,YAAYxgc,KAAK4jB,OAEvE6xkB,YACQz1lB,KAAKyhoB,eAAiBzhoB,KAAK06X,kBAAkB7mN,SAAS7zK,KAAK4jB,QAC3D5jB,KAAK0U,QAAQxG,cAAcm/T,QAGnC40T,eAAej7nB,GAAU,IACrB,MAAQsuD,YAAU1xC,SAAOgnmB,kBAAgBn3kB,gBAAgBzsC,GACpD4c,IAASA,GAAMqoB,eACdqpB,IAAa1xC,IAAUgnmB,IAAmBn3kB,KAIhDzzC,KAAKuhoB,cAAc9Q,aADD7smB,IAAS,IAAImkC,eAAiB/nD,KAAK4jB,MACZ5jB,KAAK2hoB,SAAU3hoB,KAAK4hoB,gBAEjEM,mBAAmBznF,GAAc,IAC7B,MAAQjziB,gBAAcykC,eAAa8b,kBAAkB0yf,IAChDxugB,IAAe0qV,GAAUnvX,KAAiBmvX,GAAU5uU,MACrD/nD,KAAK06X,kBAAkB4zP,eAAetunB,KAAKkF,GAAI6iD,IAC/C/nD,KAAK06X,kBAAkB0zP,aAAapunB,KAAKkF,GAAIsC,GAAcxH,KAAKkzX,WAAYlzX,KAAKmihB,WAGzFggH,yBACI,MAAMxpU,GAAU34T,KAAK06X,kBACjB16X,KAAKkzX,aAAelzX,KAAK4gc,UACzBjoI,GAAQ62T,gBAAgBxvnB,KAAK4jB,OAG7B+0S,GAAQ82T,oBAEZ92T,GAAQ21T,eAAetunB,KAAKkF,GAAIlF,KAAK4jB,OACrC+0S,GAAQy1T,aAAapunB,KAAKkF,GAAIlF,KAAK4jB,MAAO5jB,KAAKkzX,WAAYlzX,KAAKmihB,SAAUnihB,KAAK4gc,WAEnFkhM,oBACI9hoB,KAAK65G,aAAa,aAAc75G,KAAKutnB,GAAGrrgB,MAAMliH,KAAK4jB,OAAO7Y,YAE1D/K,KAAK65G,aAAa,gBAAiB75G,KAAKsioB,WAAatioB,KAAKsyd,WAAWvnd,WAAa,MAClF/K,KAAK65G,aAAa,gBAAiB75G,KAAKq9D,WAAar9D,KAAKq7Z,WAAWtwZ,WAAa,MAClF/K,KAAK65G,aAAa,eAAgB75G,KAAK+2d,UAAY/2d,KAAKwhoB,YAAc,MAE1EO,mBACI/hoB,KAAKuioB,SAAS,mBAAoBvioB,KAAKkzX,YAE3CqvQ,SAASnllB,GAAW0rM,IAEhB9oP,KAAKklK,SADU4jF,GAAS,WAAa,eACf9oP,KAAK0U,QAAQxG,cAAekvC,IAEtD4klB,iBACIhioB,KAAK65G,aAAa,WAAY75G,KAAKwgc,cAAgB,IAAM,MAE7D3mV,aAAaghX,GAAMl3d,IACVgzX,GAAUhzX,IAIf3D,KAAKklK,SAASrrD,aAAa75G,KAAK0U,QAAQxG,cAAe2sd,GAAMl3d,IAHzD3D,KAAKklK,SAAS4B,gBAAgB9mK,KAAK0U,QAAQxG,cAAe2sd,MAMtE25J,UAAsBpuT,UAAO,SAAuCh4R,IAAK,OAAO,IAAKA,IAAKomlB,IAAuB/wT,MAAyBA,OAAoBA,MAAyBgoT,IAAqBhoT,MAAyB05D,IAAoB15D,MAAyB4sG,IAAmB5sG,MAAyB6sT,IAAwB7sT,MAAyBA,OAAmBA,MAAyBioT,MAC3Z8I,GAAsBrpT,UAAqB1H,MAAyB,CAAE37T,KAAM0snB,GAAuB3wnB,UAAW,CAAC,CAAC,GAAI,oBAAqB,KAAM+iU,OAAQ,CAAE3zE,KAAM,OAAQwkN,aAAc,eAAgBvkF,WAAY,aAAc0tE,UAAW,YAAahnH,UAAW,YAAa04I,WAAY,aAAcj3D,WAAY,aAAc/lW,SAAU,WAAY1xC,MAAO,QAASgnmB,eAAgB,iBAAkBn3kB,YAAa,cAAesjb,UAAW,YAAa15Z,WAAY,aAAcilkB,WAAY,cAAgBn2mB,SAAU,CAACs3S,SAChgBj1R,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3B2unB,GAAsBn0mB,UAAW,gBAAY,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BwhmB,GAAsBn0mB,UAAW,aAAS,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B2unB,GAAsBn0mB,UAAW,sBAAkB,GACtDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BwhmB,GAAsBn0mB,UAAW,mBAAe,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BwhmB,GAAsBn0mB,UAAW,YAAQ,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BwsT,GAAsBn0mB,UAAW,oBAAgB,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BwsT,GAAsBn0mB,UAAW,iBAAa,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BwsT,GAAsBn0mB,UAAW,kBAAc,GAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BwsT,GAAsBn0mB,UAAW,kBAAc,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCwhmB,GAAsBn0mB,UAAW,YAAa,MACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BwsT,GAAsBn0mB,UAAW,kBAAc,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BwsT,GAAsBn0mB,UAAW,iBAAa,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClCwsT,GAAsBn0mB,UAAW,aAAc,MAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClCwsT,GAAsBn0mB,UAAW,aAAc,MAClDm0mB,GAAwBhmlB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC9D48mB,GACAtuP,GACAkzC,GACAigN,GACAnoT,MACAujT,MACL8I,IApP+BA,IAAT,GA2PrBG,GAA4B,UAASA,GAAN,MAC/B70nB,YAAY4U,GAASgmX,GAAmB24C,GAAkBnuQ,IACtDllK,KAAK0U,QAAUA,GACf1U,KAAK06X,kBAAoBA,GACzB16X,KAAKqza,iBAAmBA,GACxBrza,KAAKklK,SAAWA,GAChBllK,KAAKwioB,kBAAmB,EACxBxioB,KAAKq7Z,WAAaA,GAClBr7Z,KAAKipC,cAAgB,IAAIi7Y,MACzBlkb,KAAKipC,cAAcuf,IAAIxoD,KAAK06X,kBAAkBi0P,MACzCjpnB,UAAU1F,KAAKyioB,iBAAiB58mB,KAAK7lB,QAC1CA,KAAKipC,cAAcuf,IAAIxoD,KAAK06X,kBAAkBm0P,QACzCrinB,QAAKO,MAAQ6W,IAAUA,KAAU5jB,KAAK4jB,QACtCle,UAAWke,IAAU5jB,KAAKqza,iBAAiB/lY,OAAO1pB,GAAO5jB,KAAKs1D,YACnEt1D,KAAKipC,cAAcuf,IAAIxoD,KAAKqza,iBAAiBrsa,QACxCtB,UAAU,KACX1F,KAAK0ioB,qBAAqB1ioB,KAAKq7Z,WAAWr7Z,KAAKs1D,SAAUt1D,KAAK4jB,WAGtE7c,YAAYC,IACJA,GAAQw7nB,kBACRxioB,KAAK0ioB,qBAAqB1ioB,KAAKwioB,kBAE/Bx7nB,GAAQ4c,OACR5jB,KAAKyioB,mBAGb97nB,cACI3G,KAAKipC,cAAcniC,cAEvB27nB,mBACIzioB,KAAK28G,OAAO38G,KAAK06X,kBAAkB7mN,SAAS7zK,KAAK4jB,OAAQ,mBAE7D8+mB,qBAAqB30lB,IACjB/tC,KAAK28G,OAAO5uE,GAAU,oBAE1B4uE,OAAOipN,GAAUxoR,IAEbp9C,KAAKklK,SADU0gK,GAAW,WAAa,eACjB5lU,KAAK0U,QAAQxG,cAAekvC,MAG1Du3kB,UAA6BvuT,UAAO,SAA8Ch4R,IAAK,OAAO,IAAKA,IAAKumlB,IAA8BlxT,MAAyBA,OAAoBA,MAAyB05D,IAAoB15D,MAAyB4sG,IAAmB5sG,MAAyBA,SACrSkxT,GAA6BxpT,UAAqB1H,MAAyB,CAAE37T,KAAM6snB,GAA8B9wnB,UAAW,CAAC,CAAC,GAAI,2BAA4B,KAAM+iU,OAAQ,CAAE47T,iBAAkB,mBAAoBnnO,WAAY,aAAc/lW,SAAU,WAAY1xC,MAAO,SAAWuI,SAAU,CAACs3S,SACjSj1R,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B8unB,GAA6Bt0mB,UAAW,gBAAY,GACvDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B2hmB,GAA6Bt0mB,UAAW,aAAS,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B2sT,GAA6Bt0mB,UAAW,wBAAoB,GAC/DmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeh7Q,WAC3B6nkB,GAA6Bt0mB,UAAW,kBAAc,GACzDs0mB,GAA+BnmlB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MACrEsuX,GACAkzC,GACAloG,SACLwsT,IA/DsCA,IAAT,GAuE5BD,GAAiB,UAASA,GAAN,MACpB50nB,YAAY4U,GAASwwJ,GAAU4wO,IAC3B91Y,KAAK0U,QAAUA,GACf1U,KAAKklK,SAAWA,GAChBllK,KAAK81Y,eAAiBA,GAItB91Y,KAAKkF,GAAM,KAAGqvK,YAIdv0K,KAAK+2X,SAAW,EAIhB/2X,KAAK2ioB,iBAAmB,IAAI/9nB,MAC5B5E,KAAK4ioB,WAAa,OAIlBC,mBAAiB,OAAO,EACxB9rB,oBACA,MAA2B,kBAApB/2mB,KAAK4ioB,WAEZ7hL,cACA,MAA2B,YAApB/gd,KAAK4ioB,WAEhBv9nB,WACIrF,KAAKklK,SAAS4B,gBAAgB9mK,KAAK0U,QAAQxG,cAAe,YAE9Dshb,YACIxvb,KAAK4ioB,WAAa5ioB,KAAK45U,UAAU55U,KAAKolB,KAAMplB,KAAK4jB,OAErDgyY,aAAa3sZ,IACT,MAAMiB,GAAQjB,GAAEP,OAAOq4c,QAAU,UAAY,OAE7C/gd,KAAK4ioB,WAAa14nB,GAClBlK,KAAK81Y,eAAe5gM,gBACpBl1M,KAAK2ioB,iBAAiB96nB,KAAKqC,MAGnCwqnB,UAAkBtuT,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKsmlB,IAAmBjxT,MAAyBA,OAAoBA,MAAyBA,OAAmBA,MAAyBA,SACvNixT,GAAkBnuT,UAAqB9C,MAAyB,CAAE37T,KAAM4snB,GAAmB7wnB,UAAW,CAAC,CAAC,mBAAoB6iU,SAAU,EAAGC,aAAc,SAAwCnD,GAAI/3T,IAAgB,EAAL+3T,IACtMC,MAAmB,qBAAsBh4T,GAAIo3nB,eAC5Cj8T,OAAQ,CAAE1hU,GAAI,KAAM6xX,SAAU,WAAYn9C,UAAW,YAAax0T,KAAM,OAAQxB,MAAO,QAAS+6N,UAAW,aAAe43I,QAAS,CAAEosQ,iBAAkB,oBAAsB90b,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,WAAY,EAAG,aAAc,EAAG,KAAM,UAAW,gBAAiB,WAAY,UAAW,CAAC,WAAY,KAAM,EAAG,mBAAoB,EAAG,QAASh1Q,SAAU,SAAoCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC/ZC,MAAsB,EAAG,QAAS,GAClCA,MAAkB,SAAU,SAA4D97T,IAAU,OAAO8D,GAAImqZ,aAAajuZ,MAC1H87T,QACAA,MAAsB,EAAG,QAAS,GAClCA,MAAc,GACdA,SACO,EAALD,KACFC,MAAkB,KAAMh4T,GAAIvG,GAA5Bu+T,CAAgC,UAAWh4T,GAAIs1c,QAA/Ct9I,CAAwD,gBAAiBh4T,GAAIsrmB,cAA7EtzS,CAA4F,WAAYh4T,GAAIsrX,UAC5GtzD,MAAiB,GACjBA,MAAkB,MAAOh4T,GAAIvG,IAC7Bu+T,MAAiB,GACjBA,MAAyBh4T,GAAIkzO,aAC5BipF,cAAe,IACxBp5R,EAAW,IACPy5R,OAAY,4BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjC4sT,GAAkBr0mB,UAAW,eAAgB,MAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B0hmB,GAAkBr0mB,UAAW,UAAM,GACtCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B6unB,GAAkBr0mB,UAAW,iBAAa,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B6unB,GAAkBr0mB,UAAW,YAAQ,GACxCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B0hmB,GAAkBr0mB,UAAW,aAAS,GACzCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B0hmB,GAAkBr0mB,UAAW,iBAAa,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3BomkB,GAAkBr0mB,UAAW,gBAAY,GAC5CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B8vnB,GAAkBr0mB,UAAW,wBAAoB,GACpDq0mB,GAAoBlmlB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC1Ds5T,MACAD,SACLwsT,IA/F2BA,IAAT,GAyGjBjyY,GAAc,UAASA,GAAN,QAErBA,UAAe2jF,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAKq0M,KAC5EA,GAAe4oF,UAAqB5H,MAAwB,CAAE37T,KAAM26O,KACpEA,GAAe6oF,UAAqB7H,MAAwB,IAJjChhF,IAAT,GAkLdz5L,GAAY,UAASA,GAAN,QAEnBA,UAAao9Q,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAK4a,KACxEA,GAAaqiR,UAAqB5H,MAAwB,CAAE37T,KAAMkhD,KAClEA,GAAasiR,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAC1DC,MACA0hP,GACA5gP,UAPamnD,IAAT,GA6BZw5L,GAAc,UAASA,GAAN,QAErBA,UAAe4jF,UAAO,SAAgCh4R,IAAK,OAAO,IAAKA,IAAKo0M,KAC5EA,GAAe6oF,UAAqB5H,MAAwB,CAAE37T,KAAM06O,KACpEA,GAAe8oF,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACkoD,OAJ9Cw5L,IAAT,kCCpgKX,wBACP,6FACA,uGACA,uBAA6CsgZ,MAAQA,qEACrD,oDAOO,kBACP,gTCxCA,MAAMv/T,GAAM,CAAC,cACP0tD,GAAM,CAAC,oBACb,YAA4CztD,GAAI/3T,IAE9C,GAF8D,EAAL+3T,IACvDC,MAAiB,EAAG,KAAM,GACnB,EAALD,GAAQ,CACV,MAAM/+J,GAASg/J,QACfA,MAAkB,WAAYh/J,GAAOp8J,SAArCo7T,CAA+C,WAAYh/J,GAAOvkH,SAASyB,MAA3E8hR,CAAkF,eAAgBh/J,GAAOs+d,aAAzGt/T,CAAuH,mBAAoBh/J,GAAOu+d,mBAEtJ,MAAM1oE,GAAO,CAAC,yBAA0B,IACxC,YAAuF92P,GAAI/3T,IAEzF,GAFyG,EAAL+3T,IAClGC,MAAiB,EAAG,qCAAsC,GACnD,EAALD,GAAQ,CACV,MAAMy/T,GAAWx/T,QAAuB4tD,UAClCvtX,GAAS2/T,QACfA,MAAkB,WAAY3/T,GAAOuE,SAArCo7T,CAA+C,OAAQw/T,GAAS,GAAhEx/T,CAAoE,mBAAoB3/T,GAAOk/nB,mBAEnG,YAA0Fx/T,GAAI/3T,IAE5F,GAF4G,EAAL+3T,IACrGC,MAAiB,EAAG,wCAAyC,GACtD,EAALD,GAAQ,CACV,MAAMy/T,GAAWx/T,QAAuB4tD,UAClCjsV,GAASq+R,QACfA,MAAkB,WAAYr+R,GAAO/8B,SAArCo7T,CAA+C,QAASw/T,GAAxDx/T,CAAkE,mBAAoBr+R,GAAO49lB,mBAEjG,YAAkEx/T,GAAI/3T,KACtE,MAAM8ujB,GAAO,SAAUppM,GAAIC,GAAI4gC,IAAM,MAAO,CAAEnrF,YAAasqD,GAAIjnX,MAAOknX,GAAIC,UAAW2gC,KACrF,YAAoDxuF,GAAI/3T,IAEtD,GAFsE,EAAL+3T,IAC/DC,MAAkB,EAAGy/T,GAA0D,EAAG,EAAG,cAAe,GAC7F,EAAL1/T,GAAQ,CACV,MAAMy/T,GAAWx/T,QAAuB4tD,UAClCttX,GAAS0/T,QACfA,MAAkB,kBAAmBA,MAAuB,EAAG82P,GAAMx2jB,GAAOg/nB,aAAal8T,YAAao8T,GAAS,GAAG/4nB,MAAO+4nB,MAE7H,YAAkDz/T,GAAI/3T,IAMpD,GANoE,EAAL+3T,KAC7DC,MAAsB,EAAG,KAAM,GAC/BA,MAAkB,EAAG0/T,GAA+E,EAAG,EAAG,qCAAsC,GAChJ1/T,MAAkB,EAAG2/T,GAAkF,EAAG,EAAG,wCAAyC,GACtJ3/T,MAAkB,EAAG4/T,GAA4C,EAAG,EAAG,KAAM,GAC7E5/T,SACO,EAALD,GAAQ,CACV,MAAMy/T,GAAWx3nB,GAAI4lX,UACfO,GAAWnmX,GAAImY,MACf8/S,GAASD,QACfA,MAAkB,QAASw/T,GAA3Bx/T,CAAqC,QAASmuD,IAC9CnuD,MAAiB,GACjBA,MAAkB,OAA4B,IAApBw/T,GAASl9nB,SAAiB29T,GAAOq/T,cAC3Dt/T,MAAiB,GACjBA,MAAkB,OAAQw/T,GAASl9nB,OAAS,IAAM29T,GAAOq/T,cACzDt/T,MAAiB,GACjBA,MAAkB,OAAQC,GAAOq/T,eAErC,YAA2Dv/T,GAAI/3T,IAI7D,GAJ6E,EAAL+3T,KACtEC,MAAsB,EAAG,OAAQ,GACjCA,MAAc,GACdA,SACO,EAALD,GAAQ,CACV,MAAME,GAASD,QACfA,MAAiB,GACjBA,MAA0B,GAAIC,GAAOzkR,SAAU,MAEnD,MAAM+1W,GAAO,SAAU7jC,IAAM,MAAO,CAAE,kBAAmBA,KACzD,YAA6D3tD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAChF,MAAMkxF,GAAMjxF,QACZA,MAAsB,EAAG,SAAU,GACnCA,MAAkB,QAAS,WAAyFA,aAAqBixF,IAAqBjxF,QAAsCj8Q,QAAQ,UAA5Mi8Q,CAAyN,OAAQ,WAAwFA,aAAqBixF,IAAqBjxF,QAAsC/7Q,OAAO,UAAhZ+7Q,CAA6Z,QAAS,WAAyFA,aAAqBixF,IAAqBjxF,QAAsC6/T,iBAC/kB7/T,MAAiB,EAAG,OAAQ,GAC5BA,QACF,GAAS,EAALD,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,UAAWA,MAAuB,EAAGuxF,GAAM7vX,GAAOo+lB,eACpE9/T,MAAmB,YAAY,GAC/BA,MAAiB,GACjBA,MAAmB,aAAct+R,GAAOq+lB,iBAAxC//T,CAA0D,QAASt+R,GAAOq+lB,mBAE9E,MAAMjuO,GAAO,SAAUpkC,GAAIC,IAAM,MAAO,CAAE,cAAeD,GAAI,eAAgBC,KAC7E,YAA6D5tD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAChF,MAAMkvF,GAAMjvF,QACZA,MAAsB,EAAG,SAAU,GACnCA,MAAkB,QAAS,WAAyFA,aAAqBivF,IAAqBjvF,QAAsCj8Q,QAAQ,gBAA5Mi8Q,CAA+N,OAAQ,WAAwFA,aAAqBivF,IAAsBjvF,QAAuC/7Q,OAAO,gBAAxZ+7Q,CAA2a,QAAS,WAAyFA,aAAqBivF,IAAsBjvF,QAAuCggU,uBAC/lBhgU,MAAiB,EAAG,OAAQ,GAC5BA,QACF,GAAS,EAALD,GAAQ,CACV,MAAM/+J,GAASg/J,QACfA,MAAkB,UAAWA,MAAuB,EAAGuxF,GAAMvwP,GAAOi/d,qBACpEjgU,MAAmB,YAAY,GAC/BA,MAAiB,GACjBA,MAAkB,UAAWA,MAAuB,EAAG8xF,GAAM9wP,GAAOg9U,UAAWh9U,GAAOg9U,WACtFh+K,MAAmB,aAAch/J,GAAOk/d,uBAAxClgU,CAAgE,QAASh/J,GAAOk/d,yBAEpF,MAAMnuO,GAAO,SAAUrkC,GAAIC,IAAM,MAAO,CAAE,aAAcD,GAAI,iBAAkBC,KAC9E,YAA6D5tD,GAAI/3T,IAAO,GAAS,EAAL+3T,GAAQ,CAChF,MAAMmuD,GAAOluD,QACbA,MAAsB,EAAG,SAAU,GACnCA,MAAkB,QAAS,WAAyFA,aAAqBkuD,IAAuBluD,QAAuCj8Q,QAAQ,WAA/Mi8Q,CAA6N,OAAQ,WAAwFA,aAAqBkuD,IAAuBluD,QAAuC/7Q,OAAO,WAAvZ+7Q,CAAqa,QAAS,WAAyFA,aAAqBkuD,IAAuBluD,QAAuCmgU,wBAC1lBngU,MAAiB,EAAG,OAAQ,GAC5BA,QACF,GAAS,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAkB,UAAWA,MAAuB,EAAGuxF,GAAMlxZ,GAAO+/nB,gBACpEpgU,MAAmB,YAAY,GAC/BA,MAAiB,GACjBA,MAAkB,UAAWA,MAAuB,EAAG+xF,GAAM1xZ,GAAOggoB,aAAchgoB,GAAOggoB,cACzFrgU,MAAmB,aAAc3/T,GAAOigoB,kBAAxCtgU,CAA2D,QAAS3/T,GAAOigoB,oBAE/E,MAAMtuO,GAAO,SAAUtkC,GAAIC,GAAI4gC,IAAM,MAAO,CAAE,eAAgB7gC,GAAI,4BAA6BC,GAAI,cAAe4gC,KAClH,YAAuExuF,GAAI/3T,IASzE,GATyF,EAAL+3T,KAClFC,MAAsB,EAAG,OAAQ,GACjCA,MAAsB,EAAG,OAAQ,IACjCA,MAAc,GACdA,QACAA,MAAsB,EAAG,OAAQ,IACjCA,MAAc,GACdA,QACAA,SACO,EAALD,GAAQ,CACV,MAAMwgU,GAAUv4nB,GAAI4lX,UACd5sN,GAASg/J,MAAqB,GACpCA,MAAiB,GACjBA,MAAkB,QAASugU,GAAQh/nB,MACnCy+T,MAAiB,GACjBA,MAA0B,IAAKugU,GAAQh/nB,KAAM,KAC7Cy+T,MAAiB,GACjBA,MAAkB,UAAWA,MAAuB,EAAGgyF,GAAMuuO,GAAQ9/kB,iBAAkB8/kB,GAAQ9/kB,kBAAmB8/kB,GAAQ9/kB,mBAC1Hu/Q,MAAiB,GACjBA,MAAyBh/J,GAAOw/d,eAAeD,MAEnD,MAAMzyL,GAAO,SAAUpgF,GAAIC,IAAM,MAAO,CAAE,iBAAkBD,GAAI,eAAgBC,KAChF,YAAgE5tD,GAAI/3T,IAOlE,GAPkF,EAAL+3T,KAC3EC,MAA+B,GAC/BA,MAAkB,EAAGygU,GAA+D,EAAG,EAAG,OAAQ,GAClGzgU,MAAsB,EAAG,OAAQ,GACjCA,MAAc,GACdA,QACAA,SACO,EAALD,GAAQ,CACV,MAAME,GAASD,QACfA,MAAiB,GACjBA,MAAkB,UAAWC,GAAO/hR,OACpC8hR,MAAiB,GACjBA,MAAkB,UAAWA,MAAuB,EAAG8tI,GAAM7tI,GAAOygU,mBAAoBzgU,GAAO0gU,iBAC/F3gU,MAAiB,GACjBA,MAAyBC,GAAO2gU,kBAEpC,YAAiE7gU,GAAI/3T,KACrE,YAAmD+3T,GAAI/3T,IAErD,GAFqE,EAAL+3T,IAC9DC,MAAkB,EAAG6gU,GAAyD,EAAG,EAAG,cAAe,IAC5F,EAAL9gU,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,kBAAmBA,MAAuB,EAAG82P,GAAMp1hB,GAAO69lB,iBAAiBn8T,YAAa1hS,GAAOwc,MAAM,GAAGz3C,MAAOi7B,GAAOwc,SAE5I,MAAM4ilB,GAAO,SAAUpzQ,GAAIC,GAAI4gC,GAAIiD,GAAIC,IAAM,MAAO,CAAE,4BAA6B/jC,GAAI,cAAeC,GAAI,iBAAkB4gC,GAAI,eAAgBiD,GAAI,qBAAsBC,KAC1K,YAA6D1xF,GAAI/3T,IAS/D,GAT+E,EAAL+3T,KACxEC,MAA+B,GAC/BA,MAAsB,EAAG,OAAQ,GACjCA,MAAc,GACdA,QACAA,MAAsB,EAAG,OAAQ,GACjCA,MAAc,GACdA,QACAA,SACO,EAALD,GAAQ,CACV,MAAME,GAASD,QACfA,MAAiB,GACjBA,MAAkB,QAASC,GAAOvqR,KAAKn0C,MACvCy+T,MAAiB,GACjBA,MAAyBC,GAAOvqR,KAAKn0C,MACrCy+T,MAAiB,GACjBA,MAAkB,UAAWA,MAAuB,EAAG8gU,GAAM7gU,GAAOvqR,KAAK+K,kBAAmBw/Q,GAAOvqR,KAAK+K,kBAAoBw/Q,GAAO8gU,iBAAkB9gU,GAAOygU,mBAAoBzgU,GAAOvqR,KAAK+K,kBAAoBw/Q,GAAO0gU,eAAgB1gU,GAAOygU,oBAAsBzgU,GAAO0gU,iBAC3Q3gU,MAAiB,GACjBA,MAAyBC,GAAOugU,iBAEpC,YAA8DzgU,GAAI/3T,KAClE,MAAMg5nB,GAAO,SAAUtzQ,IAAM,MAAO,CAACA,KACrC,YAAgD3tD,GAAI/3T,IAElD,GAFkE,EAAL+3T,IAC3DC,MAAkB,EAAGihU,GAAsD,EAAG,EAAG,cAAe,GACzF,EAALlhU,GAAQ,CACV,MAAMr+R,GAASs+R,QACfA,MAAkB,kBAAmBA,MAAuB,EAAG82P,GAAMp1hB,GAAO69lB,iBAAiBn8T,YAAa1hS,GAAOgU,KAAKjvC,MAAOu5T,MAAuB,EAAGghU,GAAMt/lB,GAAOgU,SAExK,YAA8DqqR,GAAI/3T,IAEhE,GAFgF,EAAL+3T,IACzEC,MAAiB,EAAG,4BAA6B,IAC1C,EAALD,GAAQ,CACV,MAAM/+J,GAASg/J,QACfA,MAAkB,WAAYh/J,GAAOvkH,WAEzC,YAAwCsjR,GAAI/3T,IAE1C,GAF0D,EAAL+3T,IACnDC,MAAiB,EAAG,KAAM,IACnB,EAALD,GAAQ,CACV,MAAM1/T,GAAS2/T,QACfA,MAAkB,WAAY3/T,GAAOuE,SAArCo7T,CAA+C,WAAY3/T,GAAOo8C,SAASyB,MAA3E8hR,CAAkF,eAAgB3/T,GAAOi/nB,aAAzGt/T,CAAuH,mBAAoB3/T,GAAOk/nB,mBAEtJ,YAAiEx/T,GAAI/3T,IAEnE,GAFmF,EAAL+3T,IAC5EC,MAAiB,EAAG,8BAA+B,IAC5C,EAALD,GAAQ,CACV,MAAMp+R,GAASq+R,QACfA,MAAkB,WAAYr+R,GAAO/8B,SAArCo7T,CAA+C,gBAAiBr+R,GAAOm5Z,gBAE3E,MACMomM,GAAO,CAAC,eACRC,GAAO,CAAC,gBACRC,GAAO,SAAU1zQ,GAAIC,GAAI4gC,GAAIiD,IAAM,MAAO,CAAE,gBAAiB9jC,GAAI,gBAAiBC,GAAI,aAAc4gC,GAAI,eAAgBiD,KACxHhxF,GAAkB,CACpBj/T,KAAM,iCACNwrP,YAAa,uBACb0zE,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbv/S,QAAS,GACTw/S,iBAAkB,+JAMtB,IAAI5mR,GAAS,MACZ,OAAUA,GAyBRA,KAAcA,GAAY,KArBfA,GAAUsnlB,OAAY,GAAK,SAIrCtnlB,GAAUA,GAAU24S,QAAa,GAAK,UAItC34S,GAAUA,GAAUqkJ,SAAc,GAAK,WAIvCrkJ,GAAUA,GAAUunlB,SAAc,GAAK,WAIvCvnlB,GAAUA,GAAUwnlB,UAAe,GAAK,YAIxCxnlB,GAAUA,GAAUynlB,OAAY,GAAK,SAzBrCznlB,GACH,IAAUA,IADE,GA+Bb,SACI19C,cACIE,KAAKkloB,OAAS,GAElB18kB,IAAIrP,IACA,IAAIiD,GAAMjD,GAAKiD,IACXp8C,KAAKixB,IAAImrB,IACLjD,GAAK+K,kBAAoB/K,GAAK+K,iBAAiBn+C,OAAS,EACxD/F,KAAKkloB,OAAO9olB,IAAKu5M,QAAQx8M,IAGzBn5C,KAAKkloB,OAAO9olB,IAAK32C,KAAK0zC,IAI1Bn5C,KAAKkloB,OAAO9olB,IAAO,CAACjD,IAG5BsF,OAAOrC,IACCp8C,KAAKixB,IAAImrB,MACTp8C,KAAKkloB,OAAO9olB,IAAO,YACZp8C,KAAKkloB,OAAO9olB,KAG3BkD,QACI,IAAI6llB,GAAWnloB,KAAKkloB,OACpB,QAAS9olB,MAAO+olB,GACZ,GAAIA,GAAS94lB,eAAe+P,IAAM,CAC9B,QAASjD,MAAQgslB,GAAS/olB,IAClBjD,GAAKsW,kBACLtW,GAAKsW,iBAAiB3oD,cAG9Bq+nB,GAAS/olB,IAAO,YACT+olB,GAAS/olB,KAI5BnrB,IAAImrB,IACA,OAAOA,MAAOp8C,KAAKkloB,OAEvBrmnB,IAAIu9B,IACA,OAAOp8C,KAAKkloB,OAAO9olB,IAEvBgplB,cAAczjlB,GAAO+kZ,IACjB,QAASvtZ,MAAQwI,GACb3hD,KAAKqloB,mBAAmBlslB,GAAKiD,IAAKsqZ,IAG1C2+L,mBAAmBjplB,GAAKsqZ,IACpB1mc,KAAK6e,IAAIu9B,IAAKx1C,QAAShB,KACnBA,GAAEsE,MAAQw8b,KAGd9uV,YACA,OAAO/xG,OAAOm1D,oBAAoBh7D,KAAKkloB,QAAQn/nB,OAE/C47C,YACA,IAAI89W,GAAUz/Z,KAAKkloB,OACfI,GAAc,GAClB,QAASlplB,MAAOqjX,GACRA,GAAQpzX,eAAe+P,KACvBkplB,GAAY7/nB,KAAKg6Z,GAAQrjX,KAGjC,OAAOkplB,GAEPnllB,gBACA,IAAIs/W,GAAUz/Z,KAAKkloB,OACfI,GAAc,GAClB,QAASlplB,MAAOqjX,GACRA,GAAQpzX,eAAe+P,KAEvB/V,GADsB+V,IACdx1C,QAASuyC,KACbmslB,GAAY7/nB,KAAK0zC,MAI7B,OAAOmslB,GAEPC,oBACA,IAAI5jlB,GAAQ3hD,KAAKkloB,OACbM,GAAc,GAClB,QAASpplB,MAAOuF,GACZ,GAAIA,GAAMtV,eAAe+P,IAAM,CAC3B,IAAIqplB,GAAe9jlB,GAAMvF,IACrBsplB,IAAoB,EACxB,QAASvslB,MAAQsslB,IACTtslB,GAAKjvC,QAAUszC,GAAUqkJ,UAAa1oJ,GAAK+K,kBAAoB/K,GAAK+K,iBAAiBn+C,OAAS,KAC9F2/nB,IAAoB,GAGxBA,IACAF,GAAY//nB,KAAKggoB,IAI7B,OAAOD,GAEPG,wBACA,IAAIhklB,GAAQ3hD,KAAKkloB,OACjB,QAAS9olB,MAAOuF,GACZ,GAAIA,GAAMtV,eAAe+P,IAAM,CAC3B,IAAIqplB,GAAe9jlB,GAAMvF,IACrBsplB,IAAoB,EACxB,QAASvslB,MAAQsslB,IACTtslB,GAAKjvC,QAAUszC,GAAUqkJ,UAAa1oJ,GAAK+K,kBAAoB/K,GAAK+K,iBAAiBn+C,OAAS,KAC9F2/nB,IAAoB,GAG5B,GAAIA,GACA,OAAOD,GAInB,OAAO,KAEXG,kBAAkBl/L,IACd,OAAO1mc,KAAKmgD,UAAUpzC,OAAOosC,IAAQA,GAAKjvC,QAAUw8b,IAExDm/L,iBAAiBC,IACb,IAAInklB,GAAQ3hD,KAAKkloB,OACjB,QAAS9olB,MAAOuF,GACZ,GAAIA,GAAMtV,eAAe+P,IAAM,CAC3B,IAAIqplB,GAAe9jlB,GAAMvF,IACzB,QAASjD,MAAQsslB,GACb,GAAIK,GAAWhmnB,QAAQq5B,GAAKjvC,QAAU,EAClC,OAAO,EAKvB,OAAO,GA8Bf,SAKIpK,YAAY6hD,IACR3hD,KAAK2hD,MAAQA,IAOrB,SACI7hD,cACIE,KAAK62X,WAAY,EAMrB30U,iBACIliD,KAAK62X,WAAY,EAOrBC,qBACI,OAAO92X,KAAK62X,WA8BpB,iBAAyByB,GAIrBx4X,cAAgB0f,SA4BpB,SAQI1f,YAAY6hD,GAAOymF,GAAWpoH,IAC1BhgB,KAAK2hD,MAAQA,GACb3hD,KAAKooI,UAAYA,GACjBpoI,KAAKggB,SAAWA,IA+BxB,SAKIlgB,YAAYq5C,IACRn5C,KAAKm5C,KAAOA,IA6BpB,iBAA0Bm/U,GAMtBx4X,YAAY6hD,GAAOzhC,IACfV,QACAxf,KAAK2hD,MAAQA,GACb3hD,KAAKkgB,QAAUA,IA+BvB,SAKIpgB,YAAYq5C,IACRn5C,KAAKm5C,KAAOA,IA6BpB,iBAA0Bm/U,GAKtBx4X,YAAY6hD,IACRniC,QACAxf,KAAK2hD,MAAQA,IA6BrB,iBAA2B22U,GAOvBx4X,YAAY6hD,GAAOymF,GAAWpoH,IAC1BR,QACAxf,KAAK2hD,MAAQA,GACb3hD,KAAKooI,UAAYA,GACjBpoI,KAAKggB,SAAWA,IA6BxB,iBAA0Bs4W,GAMtBx4X,YAAY6hD,GAAOzhC,IACfV,QACAxf,KAAK2hD,MAAQA,GACb3hD,KAAKkgB,QAAUA,IA6BvB,SAMIpgB,YAAY6hD,GAAOoklB,IACf/loB,KAAK2hD,MAAQA,GACb3hD,KAAK+loB,gBAAkBA,IAU/B,MAAMC,GAAe,CACjBC,MAAO,CACH,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAEpG5rlB,MAAO,CACH,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAEnIsnG,MAAO,CACH,MAAO,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,OAAQ,SAE7Jukf,IAAK,CACD,OAAQ,QAAS,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QAEhGC,aAAc,CACV,OAAQ,OAAQ,OAAQ,OAAQ,SAEpCrznB,KAtBO,CACP,OAAQ,OAAQ,SAsBhBsznB,YAAa,CACT,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAQ,OAC1G,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,MAAO,OAAQ,OAAQ,UAErGv2jB,IAAK,CACD,QAEJp9D,OAAQ,CACJ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,OAAQ,QAEvEs8d,IAAK,CACD,MAAO,OAAQ,MAAO,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,KAAM,OAAQ,SAEpGs3J,UAAW,CACP,OAAQ,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,SA6BpDC,GAAathoB,KACf,IAAIuhoB,GAAavhoB,GAAKwrB,YAAY,MAClC,OAAuB,IAAf+1mB,GAAqBvhoB,GAAKyd,OAAO8jnB,GAAa,GAAKvhoB,IAEzDwhoB,GAAoBrzY,KACtB,MACMj7I,GAAUi7I,GAAS5xO,MADF,eAEvB,OAAO22F,GAAUA,GAAQ,GAAK,IAK5BuuhB,GAA2BttlB,OACzBA,cAAgBtzC,QAAUszC,GAAK9M,eAAe,SAiBhDq6lB,GAAsBC,KACxBA,GAAS53kB,UAAY43kB,GAAS53kB,WAAay3kB,GAAiBG,GAAS3hoB,MACrE2hoB,GAAS3hoB,KAAO2hoB,GAAS3hoB,KACzB2hoB,GAAS33kB,KAAO23kB,GAAS33kB,MAAQ,EAC5B23kB,GAASt6lB,eAAe,WACzBs6lB,GAASz8nB,MAAQszC,GAAU24S,SAE1BwwS,GAASt6lB,eAAe,SACzBs6lB,GAASvqlB,KAAMm4H,WAEZoyd,IAYLC,GAAetklB,KACjB,MAAM6wM,GAAW7wM,GAAQt9C,KACnB6hoB,GAAWvklB,GAAQ0M,KACzB,MAAO,CACHD,UAAWy3kB,GAAiBrzY,IAC5BnuP,KAAMmuP,GACN7wM,QAASA,GACT0M,KAAM63kB,GACN38nB,MAAOszC,GAAUqkJ,WAMnBilc,GAAkBC,KACpB,IACIp4nB,GADAq4nB,GAAc,IAAI14nB,MAEtB,IAAKK,GAAI,EAAGA,GAAIo4nB,GAAShhoB,OAAQ4I,KAC7Bq4nB,GAAYvhoB,KAAKmhoB,GAAYG,GAASp4nB,MAE1C,OAAOq4nB,IAKLC,GAA2B9tlB,OACzBA,GAAK+K,kBAAoB/K,GAAK+K,iBAAiBn+C,OAAS,GAQ1DmhoB,GAA6BvllB,KAC/B,QAASxI,MAAQwI,GACb,GAAIsllB,GAAwB9tlB,IACxB,OAAO,EAGf,OAAO,GA2BLgulB,GAAoB,CAACxllB,GAAOyllB,MAC9B,MAAMhrlB,MAAMm4H,QACZ,OAAO5yH,GAAMh8C,IAAKwzC,KACdA,GAAKiD,IAAMgrlB,IAAW7yd,UAASn4H,GACxBjD,MAGT8mZ,GAAiB,+CAIjBonM,GAAwB,6CAIxBC,GAAiB,qEAKjBtnM,GAAe9pE,IAAeljW,OAAOkjW,IAAYxxV,OAAO1tB,MAAM,KAI9Dspb,GAAa,CAAC5rb,GAASwhX,MACzB,MAAMqqE,GAAYP,GAAY9pE,IAC9B,OAAOluD,QAAQg4H,GAAYtrb,GAAQ0oC,WAAW72C,KAAM62C,IAAcmjZ,GAAUzgb,QAAQs9B,KAAc,KAKhGojZ,GAAc,CAAC9rb,GAAS+rb,IAAkB,KAC5C,GAAI/rb,GAAQogX,QAAS,CACjB,MAAMA,GAAUpgX,GAAQogX,QAAQz5V,cAC1Bq4V,GAAWh/W,GAAQozC,aAAa,YAChC44Y,GAA6B,OAAbhtE,KAAsBv8W,MAAMu8W,KAAaA,IAAW,EAC1E,IAAIitE,IAAY,EAChB,OACIA,GADAV,GAAezkB,KAAK1mD,KACPpgX,GAAQrM,SAGTq4b,GAETC,MAAeF,IA3BX/rb,MACf,MAAMwpU,GAAOxpU,GAAQy0T,wBACrB,SAAU+U,GAAKxnU,QAASwnU,GAAK3zU,SAA2D,WAAhD4K,OAAO0vB,iBAAiBnwB,IAASwtN,YAyB5B0+N,CAAUlsb,KAEvD,OAAO,GAiBLiiX,GAAahzX,IAAoB,MAAVA,GAK7B,SACI7D,cACIE,KAAKkloB,OAAS,GAElB18kB,IAAIpM,GAAKmrlB,IACL,MAAMC,GAAmB,CACrB5jnB,MAAO,EACPsmB,SAAU,EACVu9lB,QAAS,EACTF,YAAaA,IAEjB,YAAKrC,OAAO9olB,IAAOorlB,GACZA,GAEX/olB,OAAOrC,IACCp8C,KAAKixB,IAAImrB,MACTp8C,KAAKkloB,OAAO9olB,IAAO,YACZp8C,KAAKkloB,OAAO9olB,KAG3BnrB,IAAImrB,IACA,OAAOA,MAAOp8C,KAAKkloB,OAEvBrmnB,IAAIu9B,IACA,OAAOp8C,KAAKkloB,OAAO9olB,KAO3B,IAAIsrlB,GAAa,UAASA,GAAN,MAChB5noB,YAAY6noB,IACR3noB,KAAK2noB,KAAOA,GACZ3noB,KAAK4noB,YAAc,IAAIhjoB,MACvB5E,KAAK6noB,WAAa,IAAIjjoB,MACtB5E,KAAK8noB,cAAgB,IAAIljoB,MACzB5E,KAAK+noB,WAAa,IAAInjoB,MACtB5E,KAAKgooB,WAAa,IAAIpjoB,MACtB5E,KAAKiooB,YAAc,IAAIrjoB,MACvB5E,KAAKkooB,YAAc,IAAItjoB,MACvB5E,KAAKmooB,YAAc,IAAIvjoB,MACvB5E,KAAKoooB,aAAe,IAAIxjoB,MACxB5E,KAAKqooB,YAAc,IAAIzjoB,MACvB5E,KAAKsooB,oBAAsB,IAAI1joB,MAI/B5E,KAAKuooB,YAAc,IAAI3joB,MAIvB5E,KAAK0tJ,MAAQ,CACTvoG,YAAY,EACZghX,OAAO,EACP3iP,OAAO,EACPgld,YAAY,EACZC,YAAa,YACbC,cAAe,IAAIC,MACnBC,aAAc,OACdC,UAAW,GACX1lnB,aAAc,OACdiiL,UAAW,QACX0jc,YAAa,IAAIH,MACjBI,WAAY,OACZC,QAAS,GACT1lnB,iBAAiB,GAKrBtjB,KAAKwjL,MAAQ,CACTyld,eAAgB,IAChBj6kB,KAAM,QACNk6kB,eAAgB,EAChBC,WAAW,GAEfnpoB,KAAKkiI,UAAY,SACjBliI,KAAKopoB,SAAW,IAAIC,GACpBrpoB,KAAKkgD,SAAW,IAAIoplB,GAEpB3nlB,YACA,OAAO3hD,KAAKkgD,SAEhBqplB,iBAAiBlunB,KACI,IAAbA,KACArb,KAAK0tJ,MAAM81B,OAAQ,EACK,iBAAbnoK,KACPrb,KAAKwjL,MAAQ39K,OAAOw0D,OAAO,GAAIr6D,KAAKwjL,MAAOnoK,MAIvDktD,WACI,IAAI5mB,GAAQ3hD,KAAKkgD,SAASC,UAAUpzC,OAAQosC,IACjCA,GAAKjvC,QAAUszC,GAAU24S,SAC5Bh9S,GAAKjvC,QAAUszC,GAAUunlB,UAEjC/koB,KAAKuooB,YAAY1goB,KAAK85C,GAAM57C,OAAS,EAAI47C,GAAQ,MAErD6nlB,SAAS7nlB,IACL,IAAI8nlB,GAAkB,IAAInvC,GAAY34iB,IAEtC,GADA3hD,KAAKmooB,YAAYtgoB,KAAK4hoB,KACjBA,GAAgB3yQ,qBAAsB,CACvC,QAAS39U,MAAQwI,GACb3hD,KAAKkgD,SAASsI,IAAIrP,IAElBn5C,KAAK0tJ,MAAMvoG,YACXnlD,KAAK0poB,cAGb,GAAuB,eAAnB1poB,KAAKkiI,UAA4B,CACjC,MAAMyngB,GAAY3poB,KAAKkgD,SAASC,UAChCngD,KAAKuooB,YAAY1goB,KAAK8hoB,GAAU5joB,OAAS,EAAI4joB,GAAY,OAGjEC,gBAAgBC,IACZ7poB,KAAKkgD,SAASZ,QACduqlB,GAAajjoB,QAASuyC,KAClB,IAAIwtlB,GAAWD,GAAmBvtlB,IAClCn5C,KAAKkgD,SAASsI,IAAIm+kB,MAG1BmD,0BAA0BD,IACtB7poB,KAAKkgD,SAASZ,QACduqlB,GAAajjoB,QAASuyC,KACdA,cAAgBkC,KAChBr7C,KAAKkgD,SAASsI,IA3QCrP,MAC3B,IAAImL,GAAWsilB,GAAYztlB,IAC3BmL,UAASlI,KAAMm4H,UAEfjwH,GAASp6C,MAAQszC,GAAUqkJ,SACpBv9I,IAsQuByllB,CAAsB5wlB,KAGxCn5C,KAAKkgD,SAASsI,IAAIk+kB,GAAmBvtlB,OAIjD6wlB,WAAW5tlB,IACP,MAAM6tlB,GAAejqoB,KAAKkgD,SAASrhC,IAAIu9B,IACvCp8C,KAAKkooB,YAAYrgoB,KAAK,IAAIqioB,GAAYD,GAAa,KACnDjqoB,KAAKkgD,SAASmllB,mBAAmBjplB,GAAKoB,GAAUwnlB,WAChDhloB,KAAKmqoB,aAAa,CAACF,KAEvBG,UAAUhulB,IACN,IAAIiulB,GAAarqoB,KAAKkgD,SAASrhC,IAAIu9B,IAAK,GACxCp8C,KAAKgooB,WAAWngoB,KAAK,IAAIyioB,GAAWD,KACpCrqoB,KAAKkgD,SAASmllB,mBAAmBjplB,GAAKoB,GAAUynlB,QAEpDsF,YAAYnulB,IACR,IAAIoulB,GAAexqoB,KAAKkgD,SAASrhC,IAAIu9B,IAEjCqulB,GAAkB,IAAIC,GAAYF,GAAcxqoB,KAAK2qoB,oBAAoB3qoB,KAAK0tJ,MAAMg7e,gBAExF,GADA1ooB,KAAKiooB,YAAYpgoB,KAAK4ioB,KACjBA,GAAgB3zQ,qBACjB,GAAuB,WAAnB92X,KAAKkiI,WACJsogB,GAAa,GAAGtgoB,QAAUszC,GAAUunlB,UACjCyF,GAAa,GAAGtgoB,QAAUszC,GAAU24S,SACPs0S,GAGjCzqoB,KAAKkgD,SAASzB,OAAOrC,IACE,eAAnBp8C,KAAKkiI,UAA4B,CACjC,MAAMyngB,GAAY3poB,KAAKkgD,SAASC,UAChCngD,KAAKuooB,YAAY1goB,KAAK8hoB,GAAU5joB,OAAS,EAAI4joB,GAAY,YAN7D3poB,KAAK4qoB,cAAcJ,GAAcC,IAW7CI,YAAYzulB,IACR,IAAI0ulB,GAAgB9qoB,KAAKkgD,SAASrhC,IAAIu9B,IAClC2ulB,GAAkB,IAAIC,GAAYF,IACtC9qoB,KAAK4noB,YAAY//nB,KAAKkjoB,IACtB,QAAS5xlB,MAAQ2xlB,GACT3xlB,GAAKsW,kBACLtW,GAAKsW,iBAAiB3oD,cAG9B9G,KAAKkgD,SAASzB,OAAOrC,IACrBp8C,KAAKiroB,mBAETC,aACI,IAAIC,GAAiB,IAAIC,GAEzB,GADAproB,KAAK6noB,WAAWhgoB,KAAKsjoB,KAChBA,GAAer0Q,qBAAsB,CACtC,IAAI2mD,GAAgBz9a,KAAKkgD,SAAS2llB,iBAAiB,CAC/CrolB,GAAU24S,QACV34S,GAAUunlB,WAEd/koB,KAAKkgD,SAASZ,QACVm+X,IACAz9a,KAAKuoE,YAIjBmhkB,cACI,IAAInE,GAAgB,GAChBvloB,KAAK0tJ,MAAM86e,aACXjD,GAAgBvloB,KAAKkgD,SAASqllB,gBAE7BvloB,KAAK0tJ,MAAM86e,aAAexooB,KAAKkgD,SAAS2llB,iBAAiB,CAACrolB,GAAUwnlB,cACrEO,GAAgBvloB,KAAKkgD,SAASyllB,kBAAoB,CAAC3loB,KAAKkgD,SAASyllB,mBAAqB,IAEtFJ,IAAiBA,GAAcx/nB,OAAS,GACxC/F,KAAKmqoB,aAAa5E,IAG1B8F,WAAWjvlB,IACP,IAAIkvlB,GAAe,CAACtroB,KAAKkgD,SAASrhC,IAAIu9B,KAClCkvlB,IACAtroB,KAAKmqoB,aAAamB,IAG1BnB,aAAahF,IACT,QAASI,MAAiBJ,GAAU,CAChC,GAAII,GAAc,GAAGr7nB,QAAUszC,GAAUynlB,OACrC,OAGJ,IAAIsG,GAAkB,IAAIC,GAAYjG,GAAevloB,KAAK2qoB,oBAAoB3qoB,KAAK0tJ,MAAMo7e,cAEzF,GADA9ooB,KAAKqooB,YAAYxgoB,KAAK0joB,IACjBA,GAAgBz0Q,qBAQjB92X,KAAKkgD,SAASzB,OAAO8mlB,GAAc,GAAGnplB,SARC,CACvCp8C,KAAKkgD,SAASkllB,cAAcG,GAAe/nlB,GAAUwnlB,WACrD,IAAIyG,GAAkBzroB,KAAK0roB,cAAcnG,GAAegG,IACxDhG,GAAc3+nB,QAASuyC,KACnBA,GAAKsW,iBAAmBg8kB,OAQxCb,cAAcjplB,GAAO8olB,IACjB,MAAM/8e,GAAQ1tJ,KAAK0tJ,MACnB,IAAIi+e,GAAYhqlB,GAAMh8C,IAAKwzC,IAChBA,GAAKn0C,MAEZgoM,GAAWhtM,KAAK4roB,uBAAuBD,GAAWlB,GAAgB33nB,MAClEiM,GAAU/e,KAAK6roB,uBAAuBpB,GAAgBvqnB,SACtD4rnB,GAAgB,IAAIC,MAAYr+e,GAAMk7e,aAAcl7e,GAAMm7e,UAAW77b,GAAUjuL,IACnF/e,KAAK2noB,KAAKhonB,QAAQmsnB,IACbpmoB,UAAU4iM,KACXtoM,KAAKgsoB,UAAU1jc,GAAS3mJ,GAAO,WAChCr9B,KACCtkB,KAAK2yO,QAAQruN,GAAOq9B,GAAO,YAGnC+plB,cAAc/plB,GAAO4plB,IACjB,MAAM79e,GAAQ1tJ,KAAK0tJ,MACnB,IAAIs/C,GAAWhtM,KAAKisoB,uBAAuBtqlB,GAAO4plB,GAAgBz4nB,MAC9DiM,GAAU/e,KAAK6roB,uBAAuBN,GAAgBrrnB,SACtDgsnB,GAAgB,IAAIH,MAAYr+e,GAAMq7e,WAAYr7e,GAAMs7e,QAASh8b,GAAUjuL,IAc/E,OAbuB/e,KAAK2noB,KAAKhonB,QAAQusnB,IACpCxmoB,UAAUiI,KACPA,GAAM7F,OAASo3C,sBAAiCl/C,KAAK0tJ,MAAM81B,MAGtD71K,cAAiB2Z,QACtBtnB,KAAKgsoB,UAAUr+nB,GAAOg0C,GAAO,UAC7B3hD,KAAKiroB,oBAJLjroB,KAAKmsoB,WAAWx+nB,GAAOg0C,KAM5Br9B,KACCtkB,KAAK2yO,QAAQruN,GAAOq9B,GAAO,UAC3B3hD,KAAKiroB,qBAIbe,UAAUI,GAAiBzqlB,GAAOymF,IAC9B,GAAkB,WAAdA,IAA0BpoI,KAAK0tJ,MAAM81B,MAErC,IADAxjL,KAAKqsoB,gBAAgB1qlB,KACjB3hD,KAAKssoB,sBAAsB3qlB,GAAM,GAAGvF,KAMpC,OAFAp8C,KAAKusoB,gBAAgB5qlB,GAAM,GAAGvF,UAC9Bp8C,KAAKmqoB,aAAa,CAACxolB,KAJnB3hD,KAAKwsoB,gBAAgB7qlB,GAAM,GAAGvF,KAQtC,MAAMqwlB,GAAc,IAAIC,GAAa/qlB,GAAOymF,GAAWgkgB,IACvDpsoB,KAAKoooB,aAAavgoB,KAAK4koB,IACL,WAAdrkgB,GACApoI,KAAKkgD,SAASkllB,cAAczjlB,GAAO8qlB,GAAY31Q,qBAAuBt5U,GAAUsnlB,OAAStnlB,GAAUunlB,UAG9F0H,GAAY31Q,sBACb92X,KAAKkgD,SAASzB,OAAOkD,GAAM,GAAGvF,KAGjCqwlB,GAAY31Q,sBACb92X,KAAKuoE,WAGboqK,QAAQg6Z,GAAehrlB,GAAOymF,IAC1B,GAAkB,WAAdA,IAA0BpoI,KAAK0tJ,MAAM81B,MAAO,CAC5C,MAAMopd,GAAa5soB,KAAKwjL,MAAM0ld,eACxB2D,GAAY7soB,KAAKopoB,SAASvqnB,IAAI8iC,GAAM,GAAGvF,KAC7C,GAAIywlB,GAAUpF,QAAUmF,GAKpB,OAJAC,GAAUpF,SAAW,OACrBv1nB,WAAW,KACPlS,KAAKqroB,WAAW1plB,GAAM,GAAGvF,MAC1Bp8C,KAAKwjL,MAAMyld,gBAItB,MAAM6D,GAAY,IAAInhnB,GAAWg2B,GAAOymF,GAAWukgB,IACnD3soB,KAAK+noB,WAAWlgoB,KAAKiloB,IACH,WAAd1kgB,IACApoI,KAAKkgD,SAASkllB,cAAczjlB,GAAOnE,GAAUsnlB,QAGrDqH,WAAWx+nB,GAAOg0C,IACd,MAAMoklB,GAAkB74nB,KAAK4zF,MAAM,IAAMnzF,GAAMipC,OAASjpC,GAAMc,OACxDs+nB,GAAe,IAAIC,GAAoBrrlB,GAAOoklB,GAAkB,IAAMA,GAAkB,KAC9F/loB,KAAKsooB,oBAAoBzgoB,KAAKkloB,IAElCV,gBAAgB1qlB,IACZ,MAAMkrlB,GAAY7soB,KAAKopoB,SAASvqnB,IAAI8iC,GAAM,GAAGvF,KAC7C,IAAI2plB,GAAkB,EAClB8G,KAEI9G,GADA8G,GAAUjpnB,QAAUipnB,GAAUtF,YAAc,EAC1B,IAGAr6nB,KAAK4zF,OAAQ+riB,GAAUjpnB,MAAQ,GAAKipnB,GAAUtF,YAAe,MAGvF,MAAMwF,GAAe,IAAIC,GAAoBrrlB,GAAOoklB,GAAkB,IAAMA,GAAkB,KAC9F/loB,KAAKsooB,oBAAoBzgoB,KAAKkloB,IAElC9B,oBACSjroB,KAAKkgD,SAAS2llB,iBAAiB,CAChCrolB,GAAUwnlB,UACVxnlB,GAAUynlB,UACRjloB,KAAKitoB,6BACPjtoB,KAAK8noB,cAAcjgoB,OAEd7H,KAAKktoB,wBACVltoB,KAAK0poB,cAGbwD,uBACI,OAAQltoB,KAAK0tJ,MAAM86e,YACfxooB,KAAKkgD,SAAS2llB,iBAAiB,CAACrolB,GAAUqkJ,aACzC7hM,KAAKkgD,SAAS2llB,iBAAiB,CAACrolB,GAAUwnlB,YAEnDiI,6BAEI,OAAqC,IADVjtoB,KAAKkgD,SAAS0llB,kBAAkBpolB,GAAUqkJ,UAAU90L,OAAOosC,KAASA,GAAK+K,kBAC1En+C,OAE9B4koB,oBAAoBzqnB,IAChB,IAAIitnB,GAAS,GACb,OAAIjtnB,IACAA,GAAQ1c,OAAOoD,QAASiM,KACpBs6nB,GAAOt6nB,IAAOqN,GAAQrB,IAAIhM,MAG3B,IAAI81nB,MAAYwE,IAE3BtB,uBAAuB3rnB,IACnB,MAAO,CACHA,QAASA,GACTktnB,gBAAgB,EAChBjqnB,aAAcnjB,KAAK0tJ,MAAMvqI,aACzBG,gBAAiBtjB,KAAK0tJ,MAAMpqI,iBAGpC2onB,uBAAuBtqlB,GAAO0rlB,IAC1B,MAAMjoc,GAAYplM,KAAK0tJ,MAAM03C,UAC7B,IAAItyL,GAAO,IAAIw6nB,SAEf,GADAttoB,KAAKutoB,uBAAuBz6nB,GAAMu6nB,IAC9BrtoB,KAAK0tJ,MAAM81B,MACX1wK,GAAKoe,OAAOk0K,GAAWplM,KAAKwtoB,aAAa7rlB,GAAM,KAC/C7uC,GAAKoe,OAAO,WAAYlxB,KAAKytoB,iBAAiB9rlB,GAAM,UAGpD,QAASxI,MAAQwI,GACb7uC,GAAKoe,OAAOk0K,GAAWjsJ,GAAKmJ,SAGpC,OAAOxvC,GAEX84nB,uBAAuBD,GAAW0B,IAC9B,IAAIv6nB,GAAO,IAAIw6nB,SACfttoB,KAAKutoB,uBAAuBz6nB,GAAMu6nB,IAClC,QAASl6Y,MAAYw4Y,GACjB74nB,GAAKoe,OAAOlxB,KAAK0tJ,MAAM+6e,YAAat1Y,IAExC,OAAOrgP,GAEXy6nB,uBAAuBz6nB,GAAMu6nB,IACzB,QAASx6nB,MAAOw6nB,GACRA,GAAWhhmB,eAAex5B,KAC1BC,GAAKoe,OAAOre,GAAKw6nB,GAAWx6nB,KAKxC26nB,aAAar0lB,IACT,MAAM50B,GAAOvkB,KAAK0toB,aAAav0lB,IAE/B,OAAOA,GAAKmJ,QAAQ1zC,MAAM2V,GAAK2lB,SADX3lB,GAAK2lB,SAAWlqC,KAAKwjL,MAAMx0H,MAGnD0+kB,aAAav0lB,IACT,IAAI0zlB,GAAY7soB,KAAKopoB,SAASvqnB,IAAIs6B,GAAKiD,KACvC,IAAKywlB,GAAW,CACZ,MAAMtF,GAAcr6nB,KAAKqB,KAAK4qC,GAAK6V,KAAOhvD,KAAKwjL,MAAMx0H,MACrD69kB,GAAY7soB,KAAKopoB,SAAS5glB,IAAIrP,GAAKiD,IAAKmrlB,IAE5C,OAAOsF,GAEXN,gBAAgBnwlB,IACZ,MAAMywlB,GAAY7soB,KAAKopoB,SAASvqnB,IAAIu9B,IAChCywlB,GAAUjpnB,MAAQipnB,GAAUtF,YAAc,IAC1CsF,GAAUjpnB,OAAS,EACnBipnB,GAAU3imB,UAAYlqC,KAAKwjL,MAAMx0H,KACjC69kB,GAAUpF,QAAU,GAG5B+E,gBAAgBpwlB,IACZp8C,KAAKopoB,SAAS3qlB,OAAOrC,IAEzBqxlB,iBAAiBt0lB,IACb,MAAM0zlB,GAAY7soB,KAAKopoB,SAASvqnB,IAAIs6B,GAAKiD,KASzC,OAAO/tB,KAAK+E,UARU,CAClBu6mB,WAAYd,GAAUjpnB,MACtBgqnB,YAAaz0lB,GAAKmJ,QAAQx6C,KAC1BqrP,SAAUh6M,GAAKn0C,KACf6hoB,SAAU1tlB,GAAK6V,KACf6+kB,QAAS10lB,GAAKiD,IACdmrlB,YAAasF,GAAUtF,cAI/B+E,sBAAsBlwlB,IAClB,MAAMywlB,GAAY7soB,KAAKopoB,SAASvqnB,IAAIu9B,IACpC,QAAIywlB,IACOA,GAAUjpnB,MAAQ,IAAMipnB,GAAUtF,cAKrDG,UAActhU,UAAO,SAA+Bh4R,IAAK,OAAO,IAAKA,IAAKs5lB,IAAejkU,MAAgB4C,SACzGqhU,GAAc98T,WAAsBnH,MAA0B,CAAEp4S,MAAOq8mB,GAAepvnB,QAAS,SAAU81B,IAAK,OAAOs5lB,GAActhU,UAAKh4R,OACxIs5lB,GAAgBl5lB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACzoT,SAC3DqonB,IA1ZuBA,IAAT,GA+ZbvqQ,GAAiB,UAASA,GAAN,MACpBr9X,YAAYguoB,IACR9toB,KAAK8toB,cAAgBA,GACrB9toB,KAAK+toB,qBAAuB,IAAInpoB,MAChC5E,KAAKguoB,oBAAsB,IAAIppoB,MAC/B5E,KAAKiuoB,aAAe,IAAIrpoB,MACxB5E,KAAKkuoB,YAAc,IAAItpoB,MACvB5E,KAAKw4gB,MAAQ,IAAI5zgB,MACjB5E,KAAKmuoB,eAAiB,IAAIvpoB,MAC1B5E,KAAKouoB,oBAAsB,IAAIxpoB,MAC/B5E,KAAKquoB,sBAAuB,EAC5BruoB,KAAK6yU,SAAU,EACf7yU,KAAKsuoB,eAAgB,EAEzBttmB,OAAOrzB,IAEH,OAAO3N,KAAKg0lB,YADArmlB,GAAMwnX,SAGtBpzW,QAAQpU,IACJ,MAAMq2jB,GAAUhkkB,KAAKghC,OAAOrzB,IACxBq2jB,IACAA,GAAQr2jB,GAAMgja,UAGtB49N,YAAYtioB,IACRjM,KAAKg0lB,YAAc,EACdjwd,YAAa,IAAM/jI,KAAKkkd,eACxBngV,aAAc,IAAM/jI,KAAKiqc,gBACzBlmU,aAAc,IAAM/jI,KAAKqvd,gBACzBtrV,UAAYyqgB,IAAYxuoB,KAAK67X,UAAU2yQ,KACvCzqgB,cAAe,IAAM/jI,KAAKkvd,YAC1BnrV,gBAAiB,IAAM/jI,KAAKyuoB,cAC5BzuoB,KAAKq0lB,WAAWpolB,GAAW83H,eAAgBA,kBAAmB,IAAM/jI,KAAK0uoB,cACzE1uoB,KAAKq0lB,WAAWpolB,GAAW83H,gBAAiBA,iBAAkB,IAAM/jI,KAAK2uoB,eAGlFt6C,WAAWpolB,GAAWmmD,GAAUkiiB,IAC5B,MAAqB,QAAdrolB,GAAsBqolB,GAAWliiB,GAE5Cw8kB,oBACI5uoB,KAAK6yU,SAAU,EACf7yU,KAAKsuoB,eAAgB,EACrBtuoB,KAAKouoB,oBAAoBvmoB,OAE7Bq8c,cACI,GAAIlkd,KAAKstF,WAAa,EAAG,CACrB,GAAIttF,KAAK63X,cAAgB73X,KAAK6uoB,cAE1B,YADA7uoB,KAAKiuoB,aAAapmoB,KAAKk8H,YAGvB/jI,KAAKquoB,sBAAwBruoB,KAAK63X,cAAgB73X,KAAKstF,WACvDttF,KAAK+toB,qBAAqBlmoB,KAAK7H,KAAK63X,aAAe73X,KAAKstF,UAAY,QAAU,WAI1F+hY,eACQrvd,KAAK63X,cAAgB,GAAK73X,KAAK63X,cAAgB73X,KAAK6uoB,eACpD7uoB,KAAKiuoB,aAAapmoB,KAAKk8H,aAG/BkmU,eACQjqc,KAAK63X,cAAgB,GAAK73X,KAAK63X,cAAgB73X,KAAK6uoB,eACpD7uoB,KAAKiuoB,aAAapmoB,KAAKk8H,aAG/B2qgB,aACQ1uoB,KAAKquoB,sBAAwBruoB,KAAK63X,eAAiB73X,KAAKstF,YACxDttF,KAAK63X,cAAgB,EACrB73X,KAAKguoB,oBAAoBnmoB,KAAK,UAGtC8moB,cACQ3uoB,KAAKquoB,sBAAwBruoB,KAAK63X,eAAiB73X,KAAKstF,UAAY,IACpEttF,KAAK63X,cAAgB,EACrB73X,KAAKguoB,oBAAoBnmoB,KAAK,WAGtCg0X,UAAU2yQ,IACFxuoB,KAAK63X,cAAgB,GAAK22Q,GAC1BxuoB,KAAK63X,cAAe,EAGxB73X,KAAKw4gB,MAAM3wgB,OAEf4moB,aACI,GAAIzuoB,KAAKstF,WAAa,GAAKttF,KAAK63X,aAAe73X,KAAKstF,UAAW,CAC3D,GAAIttF,KAAK63X,aAAe73X,KAAK6uoB,cAGzB,OAFA7uoB,KAAK63X,cAAgB,OACrB73X,KAAKkuoB,YAAYrmoB,KAAK7H,KAAK63X,cAG3B73X,KAAKquoB,sBAAwBruoB,KAAK63X,eAAiB73X,KAAK6uoB,gBACxD7uoB,KAAK63X,cAAgB,EACrB73X,KAAKguoB,oBAAoBnmoB,KAAK,WAI1Cqnd,WACI,GAAIlvd,KAAKstF,WAAa,GAAKttF,KAAK63X,cAAe,EAAI,CAE/C,GADA73X,KAAK63X,cAAgB,GACK,IAAtB73X,KAAK63X,aAEL,YADA73X,KAAKouoB,oBAAoBvmoB,OAG7B,GAAI7H,KAAK63X,cAAgB73X,KAAK6uoB,cAE1B,YADA7uoB,KAAKkuoB,YAAYrmoB,KAAK7H,KAAK63X,cAG3B73X,KAAKquoB,sBAAwBruoB,KAAK63X,cAAgB73X,KAAKstF,YACvDttF,KAAK63X,aAAe73X,KAAK6uoB,cACzB7uoB,KAAKkuoB,YAAYrmoB,KAAK7H,KAAK63X,gBAInCA,mBACA,OAAO73X,KAAKsuoB,cAEZz2Q,iBAAaj0W,IACR5jB,KAAK6yU,SACN7yU,KAAKmuoB,eAAetmoB,OAExB7H,KAAKsuoB,cAAgB1qnB,GACrB5jB,KAAK6yU,SAAU,EACX7yU,KAAKsuoB,eAAiB,GAAKtuoB,KAAKsuoB,eAAiBtuoB,KAAK6uoB,eACtD7uoB,KAAKkuoB,YAAYrmoB,KAAK+b,IAG1BirnB,oBACA,OAAO7uoB,KAAKquoB,qBAAuBruoB,KAAKstF,UAAY,EAAIttF,KAAKstF,UAE7DA,gBACA,MAAMwhjB,GAAY9uoB,KAAK8toB,cAAcnslB,MAAMi2D,MAC3C,OAAO53G,KAAKquoB,qBAAuBS,GAAY,EAAIA,GAAY,IAGvE3xQ,UAAkB/2D,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAK+uV,IAAmB15D,MAAgBikU,MACrHvqQ,GAAkBvyD,WAAsBnH,MAA0B,CAAEp4S,MAAO8xW,GAAmB7kX,QAAS,SAAU81B,IAAK,OAAO+uV,GAAkB/2D,UAAKh4R,OACpJ+uV,GAAoB3uV,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC4/T,MAC/DvqQ,IA1I2BA,IAAT,GA+IjB4xQ,GAAqB,UAASA,GAAN,MACxBjvoB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BkoU,UAAsB3oU,UAAO,SAAuCh4R,IAAK,OAAO,IAAKA,IAAK2gmB,IAAuBtrU,MAAyBA,SAC1IsrU,GAAsB5jU,UAAqB1H,MAAyB,CAAE37T,KAAMinoB,GAAuBlroB,UAAW,CAAC,CAAC,GAAI,0BAA2B,IAAK,CAAC,GAAI,8BAA+B,OACxLkroB,GAAwBvgmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACC,SACnEgnU,IAR+BA,IAAT,GAUrBpkU,GAAa,GAIbqkU,GAAe,UAASA,GAAN,MAClBC,aAAa/sgB,GAAWgtgB,IAChBlvoB,KAAKixB,IAAIi+mB,IACTvkU,GAAWukU,IAAQzpoB,KAAKy8H,IAGxByoM,GAAWukU,IAAU,CAAChtgB,IAG9BitgB,cAAcD,IACV,OAAOvkU,GAAWukU,IAEtBj+mB,IAAI/rB,IACA,OAAOA,MAAMylU,KAGrBqkU,UAAgB5oU,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAK4gmB,KAC9EA,GAAgBpkU,WAAsBnH,MAA0B,CAAEp4S,MAAO2jnB,GAAiB12nB,QAAS,SAAU81B,IAAK,OAAO4gmB,GAAgB5oU,UAAKh4R,OAjBlH4gmB,IAAT,GAsBfI,GAAyB,UAASA,GAAN,MAC5BtvoB,YAAY+mU,IACR7mU,KAAK6mU,YAAcA,KAG3BuoU,UAA0BhpU,UAAO,SAA2Ch4R,IAAK,OAAO,IAAKA,IAAKghmB,IAA2B3rU,MAAyBA,SACtJ2rU,GAA0BjkU,UAAqB1H,MAAyB,CAAE37T,KAAMsnoB,GAA2BvroB,UAAW,CAAC,CAAC,GAAI,8BAA+B,IAAK,CAAC,GAAI,kCAAmC,OACxMuroB,GAA4B5gmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACC,SACvEqnU,IARmCA,IAAT,GAU7B,IAAIC,GAIJ,MAAMC,GAA4B,CAC9B3mlB,OAAO,EACP9P,QAASg6X,KACT/5X,aAAa/nC,SAAW,IAAMw+nB,KAElC,IAAIA,GAAsBF,GAAwB,MAC9CvvoB,YAAYguoB,GAAe76Q,GAAc4gC,GAAY27O,GAAiBlolB,GAAQ49G,GAAUo/J,GAAK22D,IACzFj7X,KAAK8toB,cAAgBA,GACrB9toB,KAAKizX,aAAeA,GACpBjzX,KAAK6zZ,WAAaA,GAClB7zZ,KAAKwvoB,gBAAkBA,GACvBxvoB,KAAKsnD,OAASA,GACdtnD,KAAKklK,SAAWA,GAChBllK,KAAKskU,IAAMA,GAKXtkU,KAAKqI,UAAW,EAMhBrI,KAAK4tD,UAAW,EAIhB5tD,KAAKyvoB,cAAe,EAIpBzvoB,KAAK+2X,SAAW,EAIhB/2X,KAAK+7a,YAAe,MAAIxnQ,YAIxBv0K,KAAK0nD,OAAS,IAAI9iD,MAIlB5E,KAAKwnD,QAAU,IAAI5iD,MAInB5E,KAAKstC,OAAS,IAAI1oC,MAIlB5E,KAAKy+C,OAAS,IAAI75C,MAIlB5E,KAAKsL,YAAc,IAAI1G,MACvB5E,KAAK0voB,oBAAqB,EAI1B1voB,KAAK2voB,cAAgB,CACjB5vlB,kBAAmB,GACnByO,YAAa,EACbC,YAAa,GAEjBzuD,KAAK2id,kBAAqBz3c,OAC1BlL,KAAK0id,iBAAoBx3c,QACzBy5T,QAAgBV,IAChBjkU,KAAKi7X,QAAUA,GAAQ/sX,cACvBlO,KAAKiM,UAAYgnX,GAAavuD,IAAM,MAAQ,MAC5C1kU,KAAK6zZ,WAAW06O,YAAYvuoB,KAAKiM,WACjCjM,KAAKkgD,SAAWlgD,KAAK8toB,cAAcnslB,MACnC3hD,KAAKuzX,+BAAiCN,GAAajsX,QAAQtB,UAAU,EAAGg/T,WACpE1kU,KAAKiM,UAAYy4T,GAAM,MAAQ,MAC/B1kU,KAAK6zZ,WAAW06O,YAAYvuoB,KAAKiM,aAErCjM,KAAK4voB,gBACL5voB,KAAK6voB,iBACL7voB,KAAK8voB,sBACL9voB,KAAK+voB,qBAKL/qoB,SAAKA,IACLhF,KAAK8toB,cAAcpgf,MAAM03C,UAAYpgM,GAErCA,WACA,OAAOhF,KAAK8toB,cAAcpgf,MAAM03C,UAKhCj3I,iBAAaA,IACb,IAAI6hlB,GAAqBnqoB,OAAOw0D,OAAO,GAAIr6D,KAAK2voB,cAAexhlB,IAC/DnuD,KAAK2voB,cAAgBK,GAErB7hlB,mBACA,OAAOnuD,KAAK2voB,cAEZ/8D,wBACA,OAAO5ykB,KAAKqI,SAEZgpD,UACA,OAAOrxD,KAAKiM,UAEhB5G,WACIrF,KAAKklK,SAAS4B,gBAAgB9mK,KAAKi7X,QAAS,YACxCj7X,KAAKkvoB,QACLlvoB,KAAKwvoB,gBAAgBP,aAAajvoB,KAAMA,KAAKkvoB,QAMrDhjK,QAAQr5d,IACJ,OAAO7S,KAAKizX,aAAap0W,IAAIhM,IAKjCw6T,QACIn7T,WAAW,KACPlS,KAAKiwoB,iBAAiB/hoB,cAAcm/T,UAG5C1mU,cACI3G,KAAKkgD,SAASZ,QACVt/C,KAAKssb,kBACLtsb,KAAKssb,iBAAiBxlb,cAEtB9G,KAAKkwoB,0BACLlwoB,KAAKkwoB,yBAAyBppoB,cAE9B9G,KAAKmwoB,+BACLnwoB,KAAKmwoB,8BAA8BrpoB,cAEnC9G,KAAKuzX,gCACLvzX,KAAKuzX,+BAA+BzsX,cAEpC9G,KAAKsmd,MACLtmd,KAAKsmd,KAAKx/c,cAMlBovZ,cAAcvoZ,IACV,IAAI3N,KAAKqI,SAGT,KAAKsF,GAAMwnX,UAAYpxP,YAAcp2H,GAAMwnX,UAAYpxP,aACnDp2H,GAAMjF,SAAW1I,KAAKiwoB,iBAAiB/hoB,cAGvC,OAFAP,GAAMu0C,sBACNliD,KAAK8hD,WAAW5zC,cAAcu9D,SAG9B60X,GAAW3yb,GAAMjF,OAAQ4+nB,MACvB9mM,GAAY7yb,GAAMjF,UAAY43b,GAAW3yb,GAAMjF,OAAQ2+nB,MACzDrnoB,KAAK6zZ,WAAW9xY,QAAQpU,KAMhCy/T,WAAWn1G,IACP,IAAIplF,IAAU,EACVolF,cAAoB3pN,QACpB2pN,GAASrxN,QAASuyC,KA78BSA,WA88BYA,cA78B3BkC,MAAQorlB,GAAwBttlB,MA88BpC05F,IAAU,KAGdA,IACA7yI,KAAK8toB,cAAchE,0BAA0B7xa,KAGpC,OAAbA,IACAj4N,KAAKkgD,SAASZ,QAElBt/C,KAAKskU,IAAI24D,eAKb90U,iBAAiB+Q,IACbl5D,KAAK0id,iBAAmBxpZ,GAK5B+8W,kBAAkB/8W,IACdl5D,KAAK2id,kBAAoBzpZ,GAK7Bg9W,iBAAiBhjD,IACblzX,KAAKqI,SAAW6qX,GAKpBk9Q,gBAAgBh0lB,IACZp8C,KAAK8toB,cAAcvD,YAAYnulB,IAKnC8ulB,aACIlroB,KAAK8toB,cAAc5C,aAMvB13jB,UACI,OAAO,EAMXg2jB,SAAS7nlB,IACL3hD,KAAK8toB,cAActE,SAAS7nlB,IAK5B0ulB,2BACA,OAAOrwoB,KAAKqI,cAAWlD,EAAYnF,KAAK+2X,SAK5Cu5Q,wBAAwB7knB,IACpBzrB,KAAKklK,SAAS0gK,SAAS5lU,KAAKiwoB,iBAAiB/hoB,cAAe,mBACvDlO,KAAK6zZ,WAAWhhF,UACjB7yU,KAAK6zZ,WAAWh8B,cAAe,GAMvC04Q,uBAAuB9knB,IACnBzrB,KAAKklK,SAAS4gK,YAAY9lU,KAAKiwoB,iBAAiB/hoB,cAAe,mBAEnE0hoB,kBACSl6Q,WAGL11X,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAK0N,eAAgByzN,OAAUx/M,SAAU,SAASnV,QAAKO,MAAQY,MAClD3N,KAAKi7X,UAAYttX,GAAMjF,QAAU1I,KAAKi7X,QAAQ9sX,SAASR,GAAMjF,WAE1E1I,KAAKssb,oBAAmB/7Y,KAAMvwC,KAAK0N,cAAe1N,KAAK6zZ,WAAW2kH,OAAO9ygB,UAAU,KAC3E1F,KAAK6zZ,WAAWhhF,SAChB7yU,KAAKsnD,OAAOgB,IAAI,KACZtoD,KAAK6zZ,WAAWhhF,SAAU,EAC1B7yU,KAAK2id,oBACL3id,KAAK0nD,OAAO7/C,aAMhCgooB,iBACI7voB,KAAKkwoB,yBAA2BlwoB,KAAK6zZ,WAAWs6O,eAAezooB,UAAU,KACrE1F,KAAKwnD,QAAQ3/C,SAEjB7H,KAAKmwoB,8BAAgCnwoB,KAAK6zZ,WAAWu6O,oBAAoB1ooB,UAAU,KAC/E1F,KAAKiwoB,iBAAiB/hoB,cAAcm/T,UAG5CyiU,sBACI9voB,KAAKsmd,KAAOtmd,KAAK8toB,cAAcvF,YAAY7ioB,UAAWi8C,KAClD,IAAI6pN,GAAQ,GACE,OAAV7pN,IACAA,GAAM/6C,QAASuyC,KACPA,GAAKjvC,QAAUszC,GAAU24S,SACzB3qF,GAAM/lQ,KAAK0zC,IAEXA,GAAKjvC,QAAUszC,GAAUqkJ,UAAY1oJ,GAAKmJ,UAAYnJ,GAAK+K,kBAC3DsnN,GAAM/lQ,KAAK0zC,GAAKmJ,WAIP,IAAjBkpN,GAAMzlQ,SACNylQ,GAAQ,MAEZxrQ,KAAK0id,iBAAiBl3M,IACtBxrQ,KAAKsL,YAAYzD,KAAK2jQ,MAE1BxrQ,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAc7F,YAAYvioB,UAAWu0B,KACpDj6B,KAAKy+C,OAAO52C,KAAKoyB,OAErBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAc3F,YAAYzioB,UAAWu0B,KACpDj6B,KAAKstC,OAAOzlC,KAAKoyB,OAGzB81mB,qBACI/voB,KAAK8toB,cAAcpgf,MAAMvoG,YAAa,EACtCnlD,KAAK8toB,cAAc5rgB,UAAY,eAGvCqtgB,GAAoBnpU,UAAO,SAAqCh4R,IAAK,OAAO,IAAKA,IAAKmhmB,IAAqB9rU,MAAyBikU,IAAgBjkU,MAAyB6C,MAA6B7C,MAAyB05D,IAAoB15D,MAAyBurU,IAAkBvrU,MAAyBA,OAAgBA,MAAyBA,OAAmBA,MAAyBA,OAA2BA,MAAyBA,SACpc8rU,GAAoBhpU,UAAqB9C,MAAyB,CAAE37T,KAAMynoB,GAAqB1roB,UAAW,CAAC,CAAC,qBAAsB20X,eAAgB,SAA4Ch1D,GAAI/3T,GAAKgtX,IAGjM,GAHsN,EAALj1D,KAC/MC,MAAsBg1D,GAAUs2Q,GAAuB,GACvDtrU,MAAsBg1D,GAAU22Q,GAA2B,IACpD,EAAL5rU,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIs3nB,aAAer4gB,GAAGxjH,OAC3Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIu3nB,iBAAmBt4gB,GAAGxjH,SAC9Es/T,UAAW,SAAmChD,GAAI/3T,IAGrD,GAHqE,EAAL+3T,KAC9DC,KAAmBF,GAAK,GACxBE,KAAmBwtD,GAAK,IACjB,EAALztD,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIq2C,WAAa4oE,GAAGxjH,OACzEu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIwkoB,iBAAmBvlhB,GAAGxjH,SAC9Ew/T,SAAU,EAAGC,aAAc,SAA0CnD,GAAI/3T,IAAgB,EAAL+3T,IACrFC,MAAkB,UAAW,SAAwD97T,IAAU,OAAO8D,GAAIyqZ,cAAcvuZ,MACjH,EAAL67T,KACFC,MAAmB,MAAOh4T,GAAI4lD,KAC9BoyQ,MAAmB,WAAYh4T,GAAIikoB,mBAAnCjsU,CAAuD,WAAYh4T,GAAIikoB,mBAAvEjsU,CAA2F,mBAAoBh4T,GAAImnkB,qBAClHhsQ,OAAQ,CAAEv+T,SAAU,WAAYulD,SAAU,WAAY6hlB,aAAc,eAAgB14Q,SAAU,WAAYglD,YAAa,cAAe/2a,KAAM,OAAQmpD,aAAc,eAAgBwtY,OAAQ,SAAUuzM,OAAQ,UAAY34Q,QAAS,CAAE7uU,OAAQ,OAAQF,QAAS,QAASla,OAAQ,SAAUmR,OAAQ,SAAUnzC,YAAa,eAAiBkrX,SAAU,CAAC,mBAAoBrqW,SAAU,CAACs3S,MAA0B,CACxYqD,KACAq2D,GACAuqQ,GACAsH,GACAM,GACA,CACIz2lB,QAASkuR,KACTC,SAAU,oBAEd,CACInuR,QAASq6X,KACTp6X,aAAa/nC,SAAW,IAAMs+nB,QAEjCxhc,MAAO,GAAIo5H,KAAM,GAAIC,OAAQ,WAAc,IAAIspU,GAUlD95N,GAUAC,GAUA92C,GAUAusE,GAUAjsB,GASFA,OAlDAqwN,GAASppU,oJAUTsvG,GAAStvG,sMAUTuvG,GAASvvG,6LAUTy4D,GAASz4D,6LAUTglI,GAAUhlI,uIAUV+4G,GAAU/4G,gJACL,CAAC,CAAC,mCAAoC,GAAI,gBAAiBopU,GAAQ,uBAAwB95N,GAAQ,qBAAsBC,GAAQ,qBAAsB92C,GAAQ,SAAUusE,GAAS,SAAUjsB,IAAU,CAAC,kCAAmC,GAAI,EAAG,eAAgB,WAAY,YAAa,CAAC,OAAQ,SAAU,EAAG,WAAY,kBAAmB,EAAG,KAAM,QAAS,QAAS,CAAC,mBAAoB,IAAK,CAAC,kBAAmB,GAAI,EAAG,MAAO,eAAgB,WAAY,YAAa,CAAC,aAAc,IAAK,CAAC,EAAG,mBAAoB,CAAC,yBAA0B,GAAI,QAAS,yBAA0B,EAAG,WAAY,WAAY,eAAgB,mBAAoB,EAAG,QAAS,CAAC,yBAA0B,GAAI,EAAG,iBAAkB,UAAW,EAAG,WAAY,WAAY,eAAgB,sBAAyBjuX,SAAU,SAAsCsxQ,GAAI/3T,IAAgB,EAAL+3T,KAC/0BC,MAA0B,EAAG,GAC7BA,MAAsB,EAAG,MAAO,GAChCA,MAAsB,EAAG,MAAO,EAAG,GACnCA,MAAkB,QAAS,SAA2D97T,IAAU,OAAO8D,GAAI6koB,wBAAwB3ooB,KAAnI87T,CAA+I,OAAQ,SAA0D97T,IAAU,OAAO8D,GAAI8koB,uBAAuB5ooB,MAC7P87T,MAAiB,EAAG,QAAS,EAAG,GAChCA,MAAsB,EAAG,QACzBA,MAAc,GACdA,QACAA,QACAA,MAAsB,EAAG,MAAO,GAChCA,MAAc,GACdA,QACAA,QACAA,MAAkB,GAAIgtU,GAAoC,EAAG,EAAG,KAAM,IAC/D,EAALjtU,KACFC,MAAiB,GACjBA,MAAkB,eAAgBh4T,GAAI0iD,aAAtCs1Q,CAAoD,WAAYh4T,GAAImiD,SAApE61Q,CAA8E,WAAYh4T,GAAIpD,UAC9Fo7T,MAAiB,GACjBA,MAAkB,KAAMh4T,GAAIswa,aAC5Bt4G,MAAmB,aAAch4T,GAAIyge,QAAQ,UAA7CzoK,CAAwD,WAAYh4T,GAAI4koB,sBACxE5sU,MAAiB,GACjBA,MAAkB,MAAOh4T,GAAIQ,UAA7Bw3T,CAAwC,eAAgBh4T,GAAI0iD,aAA5Ds1Q,CAA0E,WAAYh4T,GAAImiD,SAA1F61Q,CAAoG,WAAYh4T,GAAIpD,UACpHo7T,MAAmB,SAAUh4T,GAAIkwb,OAASlwb,GAAIkwb,OAAS,MACvDl4H,MAAiB,GACjBA,MAAyBh4T,GAAIyge,QAAQ,WACrCzoK,MAAiB,GACjBA,MAAyBh4T,GAAIyge,QAAQ,kBACrCzoK,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIgkoB,cAAgBhkoB,GAAIy0C,SAAS03D,MAAQ,KAClE6vN,WAAY,WAAc,MAAO,CAACC,GAA4BgpU,GAA2BC,GAAqBhpU,MAAaipU,KAAuBhpU,cAAe,IAC1Kp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3Bu8mB,GAAoBlvnB,UAAW,cAAU,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BunU,GAAoBlvnB,UAAW,gBAAY,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BunU,GAAoBlvnB,UAAW,gBAAY,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClCu8mB,GAAoBlvnB,UAAW,OAAQ,MAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BunU,GAAoBlvnB,UAAW,oBAAgB,GAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5Q,SAC3BihlB,GAAoBlvnB,UAAW,gBAAY,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,QAC1BiiU,EAAW,oBAAqB,CAACjiU,UAClC0poB,GAAoBlvnB,UAAW,eAAgB,MAClDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3Bu8mB,GAAoBlvnB,UAAW,cAAU,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3Bu8mB,GAAoBlvnB,UAAW,mBAAe,GACjDmuB,EAAW,EACPwxV,SAAa+uQ,GAAuB,CAAE1tnB,QAAQ,IAC9CymT,EAAW,cAAeinU,KAC3BQ,GAAoBlvnB,UAAW,oBAAgB,GAClDmuB,EAAW,EACPwxV,SAAaovQ,GAA2B,CAAE/tnB,QAAQ,IAClDymT,EAAW,cAAesnU,KAC3BG,GAAoBlvnB,UAAW,wBAAoB,GACtDmuB,EAAW,EACPq5R,SAAU,aAAc,CAAExmT,QAAQ,IAClCymT,EAAW,cAAej5T,QAC3B0goB,GAAoBlvnB,UAAW,kBAAc,GAChDmuB,EAAW,EACPq5R,SAAU,mBAAoB,CAAExmT,QAAQ,IACxCymT,EAAW,cAAej5T,QAC3B0goB,GAAoBlvnB,UAAW,wBAAoB,GACtDmuB,EAAW,EACP2/I,SAAO,QACP25I,EAAW,cAAeljU,QAC3B2qoB,GAAoBlvnB,UAAW,cAAU,GAC5CmuB,EAAW,EACP2/I,SAAO,SACP25I,EAAW,cAAeljU,QAC3B2qoB,GAAoBlvnB,UAAW,eAAW,GAC7CmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3B2qoB,GAAoBlvnB,UAAW,cAAU,GAC5CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B2qoB,GAAoBlvnB,UAAW,cAAU,GAC5CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3B2qoB,GAAoBlvnB,UAAW,mBAAe,GACjDmuB,EAAW,IACPy5R,OAAY,mBACZA,SAAY,kBACZH,EAAW,cAAeE,UAC3BunU,GAAoBlvnB,UAAW,0BAAsB,GACxDmuB,EAAW,EACPy5R,SAAY,0BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCynU,GAAoBlvnB,UAAW,oBAAqB,MACvDmuB,EAAW,IACPy5R,OAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCynU,GAAoBlvnB,UAAW,MAAO,MACzCmuB,EAAW,EACPioV,SAAa,UAAW,CAAC,WACzB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjCynU,GAAoBlvnB,UAAW,gBAAiB,MACnDkvnB,GAAsBF,GAAwB7gmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC4/T,GACpF5gU,KACAq2D,GACA6xQ,GACAjjR,MACA5jD,MACAD,MACAr5T,SACL0goB,QAKGt3lB,SAAN,iBAAuBizR,MAEvBjzR,UAASmuR,UAAqB,WAAc,IAAI85D,GAAuB,OAAO,SAA0B9xV,IAAK,OAAQ8xV,KAA0BA,GAAwBz8D,MAA6BxrR,MAAY7J,IAAK6J,KAAvL,GAC9BA,GAASkzR,UAAqB1H,MAAyB,CAAE37T,KAAMmwC,GAAU2uR,OAAQ,CAAE2gD,OAAQ,SAAUspR,mBAAoB,qBAAsBC,cAAe,gBAAiBC,sBAAuB,wBAAyBC,iBAAkB,mBAAoBC,uBAAwB,yBAA0BC,yBAA0B,2BAA4BC,iBAAkB,mBAAoBC,mBAAoB,qBAAsBC,mBAAoB,qBAAsBC,qBAAsB,uBAAwBC,sBAAuB,wBAAyBC,qBAAsB,uBAAwBC,mBAAoB,qBAAsBC,mBAAoB,qBAAsB15R,MAAO,QAASv5T,OAAQ,SAAUujc,OAAQ,SAAUl/c,MAAO,QAASwK,OAAQ,SAAUqkmB,oBAAqB,uBAAyBxlnB,SAAU,CAACs3S,SACt1Bj1R,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,cAAU,GACjCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,0BAAsB,GAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,qBAAiB,GACxCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,6BAAyB,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,wBAAoB,GAC3CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,8BAA0B,GACjDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,gCAA4B,GACnDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,wBAAoB,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,0BAAsB,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,0BAAsB,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,4BAAwB,GAC/CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,6BAAyB,GAChDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,4BAAwB,GAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,0BAAsB,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,0BAAsB,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,aAAS,GAChCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,cAAU,GACjCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,cAAU,GACjCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,aAAS,GAChCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,cAAU,GACjCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3BilB,GAAS53B,UAAW,2BAAuB,GAvFxC43B,OAyFN,IAAIw1Z,GAcJ,IAAIC,GAA0BD,GAA4B,cAAsCx1Z,GAC5Fn4C,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,GAEf4nE,eACA,OAAO,IAGfmtE,GAAwBtnI,UAAO,SAAyCh4R,IAAK,OAAO,IAAKA,IAAKs/Z,IAAyBjqI,MAAyB6C,QAChJonI,GAAwBnnI,UAAqB9C,MAAyB,CAAE37T,KAAM4lc,GAAyB7pc,UAAW,CAAC,CAAC,yBAA0B,CAAC,6BAA8B,CAAC,kCAAmCsoB,SAAU,CAACs3S,MAA0B,CAC1O,CACI5qR,QAASZ,GACTa,aAAa/nC,SAAW,IAAM08b,OAElChqI,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAG/0Q,SAAU,SAA0CsxQ,GAAI/3T,MAAUm8T,cAAe,IACpJ8lI,GAA0BD,GAA4Bj/Z,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QACjG4mI,IAKH,MAAMkkM,GAAqB,qBAIrBC,GAAqB,qBAIrBC,GAAuB,uBACvBC,GAAwB,CAAC54lB,GAAM4G,MAC7BA,GAAkBh6C,OAAS,GACvBg6C,GAAkBjgC,QAAQq5B,GAAK4V,UAAU1zB,eAAiB,IAC1D8d,GAAK+K,iBAAmB/K,GAAK+K,kBAAoB,GAC7C/K,GAAK+K,iBAAiBpkC,QAAQgynB,IAAwB,GACtD34lB,GAAK+K,iBAAiBz+C,KAAKqsoB,MAKrCE,GAAmB,CAAC74lB,GAAMsV,GAAaD,MACrB,IAAhBC,IAAqBtV,GAAK6V,KAAOP,KACjCtV,GAAK+K,iBAAmB/K,GAAK+K,kBAAoB,GAC7C/K,GAAK+K,iBAAiBpkC,QAAQ+xnB,IAAsB,GACpD14lB,GAAK+K,iBAAiBz+C,KAAKosoB,KAGf,IAAhBrjlB,IAAqBrV,GAAK6V,KAAOR,KACjCrV,GAAK+K,iBAAmB/K,GAAK+K,kBAAoB,GAC7C/K,GAAK+K,iBAAiBpkC,QAAQ8xnB,IAAsB,GACpDz4lB,GAAK+K,iBAAiBz+C,KAAKmsoB,MAcjCK,GAAgB,CAACtwlB,GAAOuwlB,MAC1B,MAAMnylB,GAXsBoylB,KACFA,GAAWxsoB,IAAKm8J,KACG,MAAxBA,GAAIhuI,UAAU,EAAG,GAAcguI,GAAO,IAAMA,IAC5CzmI,eAQK+2mB,CAAuBF,GAAgBnylB,mBAC3DyO,GAAc0jlB,GAAgB1jlB,YAC9BC,GAAcyjlB,GAAgBzjlB,YACpC,IAAI9/C,GACJ,IAAKA,GAAI,EAAGA,GAAIgzC,GAAM57C,OAAQ4I,KAC1BojoB,GAAsBpwlB,GAAMhzC,IAAIoxC,IAChCiylB,GAAiBrwlB,GAAMhzC,IAAI8/C,GAAaD,SAO1C6jlB,SAAN,SACIvyoB,YAAY4U,GAASwwJ,GAAUote,IAC3BtyoB,KAAK0U,QAAUA,GACf1U,KAAKklK,SAAWA,GAChBllK,KAAKuyoB,oBAAsB,KAC3BvyoB,KAAKsyoB,WAAaA,GAKtBE,6BACI,YAAK5sU,SAAS5lU,KAAKsyoB,YACnBtyoB,KAAKyyoB,gBAAkB,IAAI15nB,KACtB/Y,KAAKuyoB,sBACNvyoB,KAAKuyoB,oBAAsBh3d,YAAY,KAC/Bv7K,KAAK0yoB,kBAAkB1yoB,KAAKyyoB,iBAAmB,MAGnDzyoB,KAAK8lU,YAAY9lU,KAAKsyoB,YACtBj3d,cAAcr7K,KAAKuyoB,qBACnBvyoB,KAAKuyoB,oBAAsB,OAC5B,OAEA,EAKXI,4BACI,YAAKF,gBAAkB,IAAI15nB,MACpB,EAEX25nB,kBAAkBE,IACd,OAAO,IAAI75nB,MAAOuB,UAAYs4nB,GAAUt4nB,UAE5CsrT,SAASxoR,IACLp9C,KAAKklK,SAAS0gK,SAAS5lU,KAAK0U,QAAQxG,cAAekvC,IAEvD0oR,YAAY1oR,IACRp9C,KAAKklK,SAAS4gK,YAAY9lU,KAAK0U,QAAQxG,cAAekvC,KAG9Di1lB,UAAajsU,UAAO,SAA8Bh4R,IAAKq1R,QACvD4uU,GAAalnU,UAAqB1H,MAAyB,CAAE37T,KAAMuqoB,GAAc1rU,aAAc,SAAmCnD,GAAI/3T,IAAgB,EAAL+3T,IACzIC,MAAkB,YAAa,WAAuD,OAAOh4T,GAAI+moB,8BAAjG/uU,CAAkI,WAAY,WAAsD,OAAOh4T,GAAIknoB,iCAEvNnkmB,EAAW,EACPioV,SAAa,aACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,oBAAqBE,UACjCqqU,GAAahynB,UAAW,6BAA8B,MACzDmuB,EAAW,EACPioV,SAAa,YACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,oBAAqBE,UACjCqqU,GAAahynB,UAAW,4BAA6B,MAzDlDgynB,OA8DF3B,GAAyB,UAASA,GAAN,cAAwC2B,GACpEvyoB,YAAY4U,GAASwwJ,GAAU59G,GAAQwmlB,IACnCtunB,MAAM9K,GAASwwJ,GAAU,oBACzBllK,KAAKsnD,OAASA,GACdtnD,KAAK8toB,cAAgBA,GACrB9toB,KAAK6yoB,kBAAmB,EACxB7yoB,KAAK8yoB,qBAAuB,KAC5B9yoB,KAAKojmB,YAAc,oBACnBpjmB,KAAKsnD,OAAO4yR,kBAAkB,KAC1Bl6U,KAAK+yoB,6BAA+B/yoB,KAAKklK,SAASrpD,OAAO,WAAY,YAAa,IAAM77G,KAAKgzoB,uBAC7FhzoB,KAAKizoB,4BAA8BjzoB,KAAKklK,SAASrpD,OAAO,WAAY,WAAY,IAAM77G,KAAKkzoB,wBAGnGvsoB,cACI3G,KAAKsnD,OAAO4yR,kBAAkB,KACtBl6U,KAAK+yoB,8BACL/yoB,KAAK+yoB,+BAEL/yoB,KAAKizoB,6BACLjzoB,KAAKizoB,gCAIjBD,sBACI,YAAKptU,SAAS5lU,KAAKojmB,aACnBpjmB,KAAKmzoB,iBAAmB,IAAIp6nB,KACvB/Y,KAAK8yoB,uBACN9yoB,KAAK8yoB,qBAAuBv3d,YAAY,KAChCv7K,KAAK0yoB,kBAAkB1yoB,KAAKmzoB,kBAAoB,MAGpDnzoB,KAAK8lU,YAAY9lU,KAAKojmB,aACtB/nb,cAAcr7K,KAAK8yoB,sBACnB9yoB,KAAK8yoB,qBAAuB,OAC7B,OAEA,EAKXI,qBACI,YAAKC,iBAAmB,IAAIp6nB,MACrB,EAEXq6nB,eAAezloB,IACX,IAAI0loB,GAAe1loB,GAAM2loB,aAAa3xlB,MACtC,GAAI0xlB,GAAattoB,OAAS,IAAM/F,KAAKqI,SAAU,CAC3C,IAAIs5C,GAAQmllB,GAAeuM,IAC3B1xlB,GAAQwllB,GAAkBxllB,IAAQ3hD,KAAK8toB,cAAcpgf,MAAMy4Q,OACtDnma,KAAK4tD,WACNjM,GAAM79B,OAAO,EAAG69B,GAAM57C,OAAS,GAC/B/F,KAAK8toB,cAAc5C,cAEvB+G,GAActwlB,GAAO3hD,KAAKmuD,cAC1BnuD,KAAK8toB,cAActE,SAAS7nlB,IAEhC,OAAO,IAGf+ulB,UAA0BtqU,UAAO,SAA2Ch4R,IAAK,OAAO,IAAKA,IAAKsimB,IAA2BjtU,MAAyBA,OAAoBA,MAAyBA,OAAmBA,MAAyBA,OAAgBA,MAAyBikU,MACxRgJ,GAA0BvlU,UAAqB1H,MAAyB,CAAE37T,KAAM4ooB,GAA2B7soB,UAAW,CAAC,CAAC,GAAI,8BAA+B,IAAK,CAAC,GAAI,kCAAmC,KAAM6iU,SAAU,EAAGC,aAAc,SAAgDnD,GAAI/3T,IAAgB,EAAL+3T,IAChSC,MAAkB,OAAQ,SAA2D97T,IAAU,OAAO8D,GAAI2noB,eAAezroB,MAClH,EAAL67T,IACFC,MAAmB,aAAch4T,GAAIonoB,mBACpCjsU,OAAQ,CAAEv+T,SAAU,WAAYulD,SAAU,WAAYO,aAAc,gBAAkBhiC,SAAU,CAACs3S,SAC1Gj1R,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B0oU,GAA0BrwnB,UAAW,gBAAY,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B0oU,GAA0BrwnB,UAAW,gBAAY,GACpDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B6qoB,GAA0BrwnB,UAAW,oBAAgB,GACxDmuB,EAAW,IACPy5R,OAAY,oBACZH,EAAW,cAAeE,UAC3B0oU,GAA0BrwnB,UAAW,wBAAoB,GAC5DmuB,EAAW,EACPioV,SAAa,OAAQ,CAAC,WACtB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,oBAAqBE,UACjC0oU,GAA0BrwnB,UAAW,iBAAkB,MAC1DqwnB,GAA4BlimB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAClEs5T,MACA4jD,MACA27Q,MACLgJ,IA5FmCA,IAAT,GAiGzB6C,GAAqB,UAASA,GAAN,MACxBzzoB,YAAYunD,GAAIqzU,GAAmBozQ,IAC/B9toB,KAAK06X,kBAAoBA,GACzB16X,KAAK8toB,cAAgBA,GACrB9toB,KAAKwzoB,WAAY,EACjBxzoB,KAAK6yU,SAAU,EACf7yU,KAAK0U,QAAU2yC,GAEnBgmR,QACIrtU,KAAK0U,QAAQxG,cAAcm/T,QAE3BomU,mBACA,OAAOzzoB,KAAK2hD,MAAM,GAAGvF,IAErBs3U,eACA,MAAO,KAEPggR,iBACA,OAAO1zoB,KAAK2hD,MAAM,GAAGz3C,QAAUszC,GAAUsnlB,OAEzC6O,mBACA,OAAOzM,GAA0BlnoB,KAAK2hD,OAEtCiylB,oBACA,OAAO5zoB,KAAK2hD,MAAM,GAAGz3C,QAAUszC,GAAUwnlB,WACrChloB,KAAK2hD,MAAM,GAAGz3C,QAAUszC,GAAUynlB,OAEtC4O,mBACA,MAAqC,WAAjC7zoB,KAAK8toB,cAAc5rgB,YACZliI,KAAK2hD,MAAM,GAAGz3C,QAAUszC,GAAUunlB,UACrC/koB,KAAK2hD,MAAM,GAAGz3C,QAAUszC,GAAU24S,SAI1C29S,oBACA,OAAO9zoB,KAAK6yU,QAEhBrrR,UACIxnD,KAAK6yU,SAAU,EAEnBnrR,SACI1nD,KAAK6yU,SAAU,EAEnBvxR,QAAQ3zC,KACC6yb,GAAY7yb,GAAMjF,UAAY43b,GAAW3yb,GAAMjF,OAAQ2+nB,MACxDrnoB,KAAK06X,kBAAkB7C,aAAe73X,KAAK4jB,SAIvD2vnB,UAAsBntU,UAAO,SAAuCh4R,IAAK,OAAO,IAAKA,IAAKmlmB,IAAuB9vU,MAAyBA,OAAoBA,MAAyB05D,IAAoB15D,MAAyBikU,MACpO6L,GAAsBpoU,UAAqB1H,MAAyB,CAAE37T,KAAMyroB,GAAuB1voB,UAAW,CAAC,CAAC,GAAI,0BAA2B,KAAM6iU,SAAU,GAAIC,aAAc,SAA4CnD,GAAI/3T,IAAgB,EAAL+3T,IACpOC,MAAkB,QAAS,WAA4D,OAAOh4T,GAAI+7C,WAAlGi8Q,CAAgH,OAAQ,WAA2D,OAAOh4T,GAAIi8C,UAA9L+7Q,CAA2M,QAAS,SAAwD97T,IAAU,OAAO8D,GAAI61C,QAAQ35C,MAClS,EAAL67T,KACFC,MAAmB,WAAYh4T,GAAIgooB,aAAnChwU,CAAiD,WAAYh4T,GAAIioX,UACjEjwD,MAAmB,SAAUh4T,GAAI+noB,UAAjC/vU,CAA4C,eAAgBh4T,GAAIiooB,WAAhEjwU,CAA4E,iBAAkBh4T,GAAIkooB,aAAlGlwU,CAAgH,kBAAmBh4T,GAAImooB,cAAvInwU,CAAsJ,iBAAkBh4T,GAAIoooB,aAA5KpwU,CAA0L,kBAAmBh4T,GAAIqooB,iBAChNltU,OAAQ,CAAEjlR,MAAO,QAAS/9B,MAAO,WAC1C4qB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5T,QAC3BiloB,GAAsBlznB,UAAW,aAAS,GAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3BillB,GAAsBlznB,UAAW,aAAS,GAC7CmuB,EAAW,IACPy5R,OAAY,gBACZH,EAAW,cAAeE,UAC3BurU,GAAsBlznB,UAAW,iBAAa,GACjDmuB,EAAW,IACPy5R,OAAY,iBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCyrU,GAAsBlznB,UAAW,eAAgB,MACpDmuB,EAAW,EACPy5R,SAAY,iBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjCyrU,GAAsBlznB,UAAW,WAAY,MAChDmuB,EAAW,EACPy5R,SAAY,sBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCyrU,GAAsBlznB,UAAW,aAAc,MAClDmuB,EAAW,EACPy5R,SAAY,wBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCyrU,GAAsBlznB,UAAW,eAAgB,MACpDmuB,EAAW,IACPy5R,OAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCyrU,GAAsBlznB,UAAW,gBAAiB,MACrDmuB,EAAW,IACPy5R,OAAY,wBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCyrU,GAAsBlznB,UAAW,eAAgB,MACpDmuB,EAAW,EACPy5R,SAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCyrU,GAAsBlznB,UAAW,gBAAiB,MACrDmuB,EAAW,EACPioV,SAAa,SACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,yBAAqB,IACjCyrU,GAAsBlznB,UAAW,UAAW,MAC/CmuB,EAAW,IACPioV,OAAa,QACb3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,IAChCA,EAAW,yBAAqB,IACjCyrU,GAAsBlznB,UAAW,SAAU,MAC9CmuB,EAAW,EACPioV,SAAa,QAAS,CAAC,WACvB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjCyrU,GAAsBlznB,UAAW,UAAW,MAC/CkznB,GAAwB/kmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAACj5T,MAC9DsuX,GACAuqQ,MACL6L,IA5H+BA,IAAT,GAiIrB3C,GAAiB,UAASA,GAAN,MACpB9woB,YAAYguoB,GAAej6O,IACvB7zZ,KAAK8toB,cAAgBA,GACrB9toB,KAAK6zZ,WAAaA,GAClB7zZ,KAAK+zoB,cACL/zoB,KAAK+ylB,eAETghD,cACI/zoB,KAAKw5X,kBAAoBx5X,KAAK6zZ,WAAWq6O,YAAYxooB,UAAWke,KAC5D5jB,KAAKg0oB,cAAcxljB,UAAU5qE,IAAOypT,UAG5C0lR,eACI/ylB,KAAKi0oB,mBAAqBj0oB,KAAK6zZ,WAAWo6O,aAAavooB,UAAWmN,KAC9D7S,KAAKk0oB,kBAAkBrhoB,MAG/BqhoB,kBAAkBrhoB,IACd,IAAI+Q,GAAQ5jB,KAAK6zZ,WAAWh8B,aACxB7kX,GAAOhT,KAAKg0oB,cAAcxljB,UAAU5qE,IACpCw4B,GAAMppC,GAAKygoB,aACX9xlB,GAAQ3hD,KAAK8toB,cAAcnslB,MAAM9iC,IAAIu9B,IACzC,GAAIvpC,KAAQkxH,aAAepiF,GAAM,GAAGz3C,QAAUszC,GAAUwnlB,UAGpD,OAFAhloB,KAAK8toB,cAAcjD,YAAYzulB,SAC/Bp8C,KAAK6zZ,WAAW+6O,oBAGhB/7nB,KAAQkxH,YAAcpiF,GAAM,GAAGz3C,QAAUszC,GAAUsnlB,OAInDjynB,KAAQkxH,cACJpiF,GAAM,GAAGz3C,QAAUszC,GAAUwnlB,UAC7BhloB,KAAK8toB,cAAcjD,YAAYzulB,IAE1Bp8C,KAAKm0oB,UAAUnhoB,KACpBhT,KAAK8toB,cAAcvD,YAAYnulB,IAEnCp8C,KAAK6zZ,WAAW+6O,qBAVhB5uoB,KAAK8toB,cAAczC,WAAWjvlB,IAatC+3lB,UAAUnhoB,IACN,OAAOA,GAAK0B,QAAQxG,cAAcggjB,uBAAuB,YAAYnojB,OAAS,EAElFY,cACI3G,KAAKw5X,kBAAkB1yX,cACvB9G,KAAKi0oB,mBAAmBntoB,gBAGhC8poB,UAAkBxqU,UAAO,SAAmCh4R,IAAK,OAAO,IAAKA,IAAKwimB,IAAmBntU,MAAyBikU,IAAgBjkU,MAAyB05D,MACvKyzQ,GAAkBrqU,UAAqB9C,MAAyB,CAAE37T,KAAM8ooB,GAAmB/soB,UAAW,CAAC,CAAC,GAAI,yBAA0B,KAAM2iU,UAAW,SAAiChD,GAAI/3T,IAEtL,GAFsM,EAAL+3T,IAC/LC,KAAmB8vU,GAAuB,GACnC,EAAL/vU,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIuooB,cAAgBtphB,MACxEk8M,OAAQ,CAAEv+T,SAAU,WAAY63C,SAAU,WAAY6ilB,aAAc,eAAgBC,iBAAkB,oBAAsBh2Z,MAAOstV,GAAMzsX,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,0BAA2B,GAAI,EAAG,QAAS,SAAU,CAAC,QAAS,gBAAiB,EAAG,WAAY,OAAQ,mBAAoB,EAAG,QAAS,CAAC,QAAS,kBAAmB,EAAG,WAAY,QAAS,mBAAoB,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,gBAAiB,EAAG,WAAY,OAAQ,oBAAqB,CAAC,EAAG,kBAAmB,EAAG,WAAY,QAAS,oBAAqB,CAAC,EAAG,oBAAqBh1Q,SAAU,SAAoCsxQ,GAAI/3T,IAAgB,EAAL+3T,IACxoBC,MAAkB,EAAG2wU,GAA0C,EAAG,EAAG,cAAe,GAC7E,EAAL5wU,IACFC,MAAkB,UAAWh4T,GAAIy0C,WAChCunR,WAAY,WAAc,MAAO,CAACE,MAAgB4rU,GAAuB5rU,MAAa0sU,GAA6BC,GAAgCp7Q,KAA8BtxD,cAAe,IACzMp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B4oU,GAAkBvwnB,UAAW,gBAAY,GAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,QAC3BsioB,GAAkBvwnB,UAAW,gBAAY,GAC5CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeinU,KAC3B6B,GAAkBvwnB,UAAW,oBAAgB,GAChDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAesnU,KAC3BwB,GAAkBvwnB,UAAW,wBAAoB,GACpDmuB,EAAW,IACP6jW,MAAakhQ,IACbzrU,EAAW,cAAe8wD,QAC3Bg4Q,GAAkBvwnB,UAAW,qBAAiB,GACjDuwnB,GAAoBpimB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC4/T,GAC1DvqQ,MACLyzQ,IAlF2BA,IAAT,GAuFjB2D,GAAiC,UAASA,GAAN,MACpCz0oB,YAAYguoB,GAAe76Q,IACvBjzX,KAAK8toB,cAAgBA,GACrB9toB,KAAKizX,aAAeA,GACpBjzX,KAAK6joB,eAAgB,EACrB7joB,KAAKujoB,cAAe,EACpBvjoB,KAAK0joB,oBAAqB,EAE9Bl8kB,QAAQ1/C,IACS,WAATA,KACA9H,KAAK6joB,eAAgB,GAEZ,UAAT/7nB,KACA9H,KAAKujoB,cAAe,GAEX,gBAATz7nB,KACA9H,KAAK0joB,oBAAqB,GAGlCh8kB,OAAO5/C,IACU,UAATA,KACA9H,KAAKujoB,cAAe,GAEX,WAATz7nB,KACA9H,KAAK6joB,eAAgB,GAEZ,gBAAT/7nB,KACA9H,KAAK0joB,oBAAqB,GAGlCJ,eACQtjoB,KAAKqI,UAGTrI,KAAK8toB,cAAczC,WAAWrroB,KAAKm5C,KAAKiD,KAE5CwnlB,sBACI,GAAI5joB,KAAKqI,SACL,OAEJ,MAAM+zC,GAAMp8C,KAAKm5C,KAAKiD,IAClBp8C,KAAKm5C,KAAKjvC,QAAUszC,GAAUwnlB,UAC9BhloB,KAAK8toB,cAAcjD,YAAYzulB,IAG/Bp8C,KAAK8toB,cAAcvD,YAAYnulB,IAGvCqnlB,qBACI,GAAIzjoB,KAAKqI,SACL,OAEJ,MAAM+zC,GAAMp8C,KAAKm5C,KAAKiD,IAClBp8C,KAAKm5C,KAAKjvC,QAAUszC,GAAUynlB,OAC9BjloB,KAAK8toB,cAAc9D,WAAW5tlB,IAG9Bp8C,KAAK8toB,cAAc1D,UAAUhulB,IAGjC2nlB,wBACA,OACW/joB,KAAKizX,aAAap0W,IADzB7e,KAAKm5C,KAAKjvC,QAAUszC,GAAUwnlB,UACD,SAEJ,UAE7BxB,uBACA,OAAOxjoB,KAAKizX,aAAap0W,IAAI,SAE7B8knB,6BACA,OACW3joB,KAAKizX,aAAap0W,IADzB7e,KAAKm5C,KAAKjvC,QAAUszC,GAAUwnlB,UACD,QAEJ,UAE7BlB,kBACA,OAAO9joB,KAAKm5C,KAAKjvC,QAAUszC,GAAUwnlB,UAErCwP,eACA,OAAOx0oB,KAAKm5C,KAAKjvC,QAAUszC,GAAUsnlB,OAErCrjJ,eACA,OAAOzhf,KAAKm5C,KAAKjvC,QAAUszC,GAAUynlB,OAErCwP,kBACA,MAAM97U,GAAU34T,KAAK8toB,cAGrB,OAFoBn1U,GAAQjrK,MAAM81B,OAASm1I,GAAQn1I,MAAM2ld,YACpCnpoB,KAAKm5C,KAAKjvC,QAAUszC,GAAUynlB,QAAYjloB,KAAKm5C,KAAKjvC,QAAUszC,GAAUwnlB,WAG7F0P,4BACA,SAAK10oB,KAAKm5C,KAAKjvC,QAAUszC,GAAUunlB,UAAY/koB,KAAKm5C,KAAKjvC,QAAUszC,GAAU24S,WACxEn2V,KAAK8toB,cAAcpgf,MAAMm7e,WAA8C,WAAjC7ooB,KAAK8toB,cAAc5rgB,aAMtEqygB,UAAkCnuU,UAAO,SAAmDh4R,IAAK,OAAO,IAAKA,IAAKmmmB,IAAmC9wU,MAAyBikU,IAAgBjkU,MAAyB6C,QACvNiuU,GAAkChuU,UAAqB9C,MAAyB,CAAE37T,KAAMysoB,GAAmC1woB,UAAW,CAAC,CAAC,8CAA+C+iU,OAAQ,CAAEztR,KAAM,OAAQ9wC,SAAU,WAAY42C,SAAU,YAAc4uJ,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,mBAAoB,CAAC,QAAS,eAAgB,EAAG,QAAS,CAAC,OAAQ,SAAU,QAAS,gDAAiD,EAAG,UAAW,QAAS,OAAQ,QAAS,EAAG,QAAS,CAAC,EAAG,gBAAiB,CAAC,OAAQ,SAAU,EAAG,WAAY,gBAAiB,SAAU,kBAAmB,EAAG,UAAW,QAAS,OAAQ,SAAU,CAAC,EAAG,SAAU,UAAW,kBAAmB,CAAC,EAAG,SAAU,EAAG,YAAah1Q,SAAU,SAAoDsxQ,GAAI/3T,IAAgB,EAAL+3T,KACrvBC,MAAsB,EAAG,SAAU,GACnCA,MAAkB,EAAGkxU,GAAmD,EAAG,EAAG,OAAQ,GACtFlxU,MAAkB,EAAGmxU,GAAqD,EAAG,EAAG,SAAU,GAC1FnxU,MAAkB,EAAGoxU,GAAqD,EAAG,GAAI,SAAU,GAC3FpxU,MAAkB,EAAGqxU,GAAqD,EAAG,GAAI,SAAU,GAC3FrxU,SACO,EAALD,KACFC,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIq4nB,aAAer4nB,GAAIg2e,UACjDh+K,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAI+ooB,UAC9B/wU,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIgpoB,aAC9BhxU,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIipoB,yBAC7BjtU,WAAY,CAACE,MAAaA,OAAiBC,cAAe,IACnEp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,SAC3B0uoB,GAAkCl0nB,UAAW,YAAQ,GACxDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BusU,GAAkCl0nB,UAAW,gBAAY,GAC5DmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3BimlB,GAAkCl0nB,UAAW,gBAAY,GAC5Dk0nB,GAAoC/lmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC4/T,GAC1E5gU,QACLytU,IAlI2CA,IAAT,GAuI/BQ,SAAN,SACIj1oB,YAAYguoB,IACR9toB,KAAK8toB,cAAgBA,GACrB9toB,KAAKg1oB,iBAAmB,EAE5BC,wBAAwBC,IACpBl1oB,KAAKm1oB,2BAA6Bn1oB,KAAK8toB,cAAcxF,oBAAoB5ioB,UAAUwvoB,IAEvFjO,wBAAwB9tlB,IACpB,OAAO8tlB,GAAwB9tlB,IAEnC+tlB,0BAA0BvllB,IACtB,OAAOullB,GAA0BvllB,IAErCh7C,cACI3G,KAAKm1oB,2BAA2BruoB,cAEpCsuoB,yBAAyBj8lB,IACrB,IAAIk8lB,GACJ,OAAIl8lB,GAAK+K,kBAAoB/K,GAAK+K,iBAAiBn+C,OAAS,IACxDsvoB,GAAoBr1oB,KAAKizX,aAAap0W,IAAIs6B,GAAK+K,iBAAiB,KAE7DmxlB,GAEXC,yBAAyB3zlB,IACrB,MAtjE0BA,MAC9B,IACIhzC,GADAi8Z,GAAY,EAEhB,GAA6B,iBAAlBjpX,GAAM,GAAGqN,KAQhB,MAAO,GAPP,IAAKrgD,GAAI,EAAGA,GAAIgzC,GAAM57C,OAAQ4I,KACtBgzC,GAAMhzC,IAAGqgD,OACT47W,IAAajpX,GAAMhzC,IAAGqgD,MAQlC,OADA47W,IAAa,KACTA,GAAY,KACLA,GAAU9rT,QAAQ,GAAK,OAGtB8rT,GAAY,MAAM9rT,QAAQ,GAAK,OAoiEhCw2hB,CAAyB3zlB,IAEpCuqb,QAAQr5d,IACJ,OAAO7S,KAAKizX,aAAap0W,IAAIhM,KAGrCkioB,UAAiB3uU,UAAO,SAAkCh4R,IAAKq1R,QAC/DsxU,GAAiB5pU,UAAqB1H,MAAyB,CAAE37T,KAAMitoB,KAhCjEA,OAqCFT,GAA8B,UAASA,GAAN,cAA6CS,GAC9Ej1oB,YAAYmzX,GAAc66Q,IACtBtunB,MAAMsunB,IACN9toB,KAAKizX,aAAeA,GACpBjzX,KAAKi1oB,wBAAyBh7mB,KACtBA,GAAK0nB,MAAM,GAAGvF,MAAQp8C,KAAK2hD,MAAM,GAAGvF,MACpCp8C,KAAKg1oB,iBAAmB/6mB,GAAK8rmB,mBAIrCwP,mBAEA,OAAOA,KADmB5zlB,MAAM,GAAGz3C,QAAUszC,GAAUwnlB,WAAahloB,KAAK2hD,MAAM,GAAGz3C,QAAUszC,GAAUynlB,OAChF,SAAW,WAErC5/nB,WACIrF,KAAKw1oB,gBAAkBh2nB,MAAM0nnB,0BAA0BlnoB,KAAK2hD,OAEhEsilB,eAAe9qlB,IAEX,OAAKw9U,GADUx9U,GAAK+K,kBAIblkD,KAAKo1oB,yBAAyBj8lB,IAF1Bn5C,KAAKs1oB,yBAAyB,CAACn8lB,KAI1CkrlB,sBACA,MAAM39L,GAAW1mc,KAAK2hD,MAAM,GAAGz3C,MACzB4koB,GAAY9uoB,KAAK2hD,MAAM57C,OAC7B,OAAI2gc,KAAalpZ,GAAUunlB,SACf,GAAE+J,MAAa9uoB,KAAKkse,QAAQ,8BAEpCxlC,KAAalpZ,GAAUsnlB,OACf,GAAEgK,MAAa9uoB,KAAKkse,QAAQ,4BAEhC,GAAE4iK,MAAa9uoB,KAAKkse,QAAQ,sBAEpCi4J,yBACA,OAAOnkoB,KAAK2hD,MAAM,GAAGz3C,QAAUszC,GAAUunlB,SAEzCX,qBACA,OAAOpkoB,KAAK2hD,MAAM,GAAGz3C,QAAUszC,GAAUsnlB,SAGjDwP,UAA+BluU,UAAO,SAAgDh4R,IAAK,OAAO,IAAKA,IAAKkmmB,IAAgC7wU,MAAyB6C,MAA6B7C,MAAyBikU,MAC3N4M,GAA+B/tU,UAAqB9C,MAAyB,CAAE37T,KAAMwsoB,GAAgCzwoB,UAAW,CAAC,CAAC,0CAA2C+iU,OAAQ,CAAEv+T,SAAU,WAAYs5C,MAAO,QAASqhlB,iBAAkB,oBAAsB72mB,SAAU,CAACs3S,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,iBAAkB,CAAC,EAAG,cAAe,CAAC,EAAG,kCAAmC,CAAC,EAAG,eAAgB,SAAU,YAAa,CAAC,EAAG,4BAA6B,CAAC,EAAG,QAAS,CAAC,EAAG,OAAQ,WAAY,YAAa,CAAC,QAAS,2BAA4B,EAAG,QAAS,WAAY,CAAC,EAAG,qBAAsB,EAAG,WAAY,CAAC,EAAG,4BAA6B,CAAC,EAAG,cAAe,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,oBAAqBh1Q,SAAU,SAAiDsxQ,GAAI/3T,IAAgB,EAAL+3T,KACjzBC,MAAsB,EAAG,MAAO,GAChCA,MAAiB,EAAG,OAAQ,GAC5BA,QACAA,MAAsB,EAAG,OAAQ,GACjCA,MAAiB,EAAG,OAAQ,GAC5BA,QACAA,MAAsB,EAAG,OAAQ,GACjCA,MAAkB,EAAGgyU,GAAwD,EAAG,EAAG,eAAgB,GACnGhyU,MAAkB,EAAGiyU,GAA2C,EAAG,EAAG,KAAM,GAC5EjyU,QACAA,MAAiB,EAAG,4CAA6C,IAC1D,EAALD,KACFC,MAAkB,iBAAkBh4T,GAAI8poB,cACxC9xU,MAAiB,GACjBA,MAAmB,QAASh4T,GAAIupoB,iBAAmB,KACnDvxU,MAAiB,GACjBA,MAAkB,QAASh4T,GAAIu3nB,kBAC/Bv/T,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIu3nB,kBAC9Bv/T,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIk2C,MAAM,GAApC8hR,CAAwC,WAAYh4T,GAAIpD,SAAxDo7T,CAAkE,WAAYh4T,GAAIupoB,oBACjFvtU,WAAY,WAAc,MAAO,CAACE,MAAaA,MAAgBA,MAAgBuxD,GAA0Bq7Q,KAAuC3sU,cAAe,EAAG90T,KAAM,CAAEqyT,UAAW,EAClLl7T,SAAQ,gBAAiB,IACrBC,OAAM,YAAUC,OAAM,CAAEC,QAAS,QACjCF,OAAM,cAAYC,OAAM,CAAEC,QAAS,QACnCE,OAAW,oBAAkBH,OAAM,CAAEC,QAAS,QAC9CE,OAAW,wBAAsBH,OAAM,CAAEC,QAAS,QAClDE,OAAW,wBAAsBE,OAAQ,yBAGzDgkC,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BssU,GAA+Bj0nB,UAAW,gBAAY,GACzDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAex5T,QAC3BgmoB,GAA+Bj0nB,UAAW,aAAS,GACtDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAesnU,KAC3BkF,GAA+Bj0nB,UAAW,wBAAoB,GACjEi0nB,GAAiC9lmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,KACvE4gU,MACL4M,IAxFwCA,IAAT,GA6F9BD,GAA2B,UAASA,GAAN,cAA0CU,GACxEj1oB,YAAYmzX,GAAc66Q,IACtBtunB,MAAMsunB,IACN9toB,KAAKizX,aAAeA,GACpBjzX,KAAKi1oB,wBAAyBh7mB,KACtBA,GAAK0nB,MAAM,GAAGvF,MAAQp8C,KAAKm5C,KAAKiD,MAChCp8C,KAAKg1oB,iBAAmB/6mB,GAAK8rmB,mBAIrC9B,qBACA,MAAMj5lB,GAAShrC,KAAKm5C,KAAK+K,iBACzB,OAAIlkD,KAAKm5C,KAAKjvC,QAAUszC,GAAUunlB,SACtB,GAAE/koB,KAAKkse,QAAQ,wBAEvBlse,KAAKm5C,KAAKjvC,QAAUszC,GAAUsnlB,OACtB,GAAE9koB,KAAKkse,QAAQ,sBAEtBv1G,GAAU3rV,IAGRhrC,KAAKo1oB,yBAAyBp1oB,KAAKm5C,MAF/Bn5C,KAAKs1oB,yBAAyB,CAACt1oB,KAAKm5C,OAI/Co8lB,mBAEA,OADqBv1oB,KAAKm5C,KAAKjvC,QAAUszC,GAAUwnlB,WAAahloB,KAAKm5C,KAAKjvC,QAAUszC,GAAUynlB,OACxE,SAAW,WAEjC0Q,qBACA,MA7/DsB9mlB,MAC1B,MAAM4wW,GAAU,WAChB,QAAS/2X,MAASs9lB,GACd,GAAIA,GAAat9lB,IAAO5oB,QAAQ+uC,KAAkB,EAC9C,MAAQ,GAAE4wW,MAAW/2X,KAG7B,OAAO+2X,IAs/DIm2O,CAAqB51oB,KAAKm5C,KAAK4V,UAAY/uD,KAAKm5C,KAAK4V,UAAY,IAExEo1kB,yBACA,OAAOnkoB,KAAKm5C,KAAKjvC,QAAUszC,GAAUunlB,SAErCX,qBACA,OAAOpkoB,KAAKm5C,KAAKjvC,QAAUszC,GAAUsnlB,OAErCN,uBACA,OAAQxkoB,KAAKokoB,iBAAmBpkoB,KAAKmkoB,qBAG7CkQ,UAA4BjuU,UAAO,SAA6Ch4R,IAAK,OAAO,IAAKA,IAAKimmB,IAA6B5wU,MAAyB6C,MAA6B7C,MAAyBikU,MAClN2M,GAA4B9tU,UAAqB9C,MAAyB,CAAE37T,KAAMusoB,GAA6BxwoB,UAAW,CAAC,CAAC,uCAAwC+iU,OAAQ,CAAEv+T,SAAU,WAAY8wC,KAAM,OAAQ6plB,iBAAkB,oBAAsB72mB,SAAU,CAACs3S,OAAoC51H,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,iBAAkB,CAAC,EAAG,cAAe,CAAC,EAAG,wBAAyB,CAAC,EAAG,eAAgB,SAAU,EAAG,WAAY,CAAC,EAAG,4BAA6B,CAAC,EAAG,QAAS,CAAC,EAAG,OAAQ,WAAY,YAAa,CAAC,EAAG,cAAe,EAAG,SAAU,CAAC,EAAG,WAAY,CAAC,EAAG,oBAAqBh1Q,SAAU,SAA8CsxQ,GAAI/3T,IAAgB,EAAL+3T,KACnpBC,MAAsB,EAAG,MAAO,GAChCA,MAAiB,EAAG,OAAQ,GAC5BA,QACAA,MAAsB,EAAG,OAAQ,GACjCA,MAAiB,EAAG,OAAQ,GAC5BA,QACAA,MAAsB,EAAG,OAAQ,GACjCA,MAAkB,EAAGoyU,GAAqD,EAAG,GAAI,eAAgB,GACjGpyU,MAAkB,EAAGqyU,GAAwC,EAAG,EAAG,KAAM,GACzEryU,QACAA,MAAiB,EAAG,4CAA6C,IAC1D,EAALD,KACFC,MAAkB,iBAAkBh4T,GAAI8poB,cACxC9xU,MAAiB,GACjBA,MAAmB,QAASh4T,GAAIupoB,iBAAmB,KACnDvxU,MAAiB,GACjBA,MAAkB,UAAWh4T,GAAIkqoB,gBACjClyU,MAAiB,GACjBA,MAAkB,QAASh4T,GAAIu3nB,kBAC/Bv/T,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIu3nB,kBAC9Bv/T,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAI0tC,KAA9BsqR,CAAoC,WAAYh4T,GAAIpD,SAApDo7T,CAA8D,WAAYh4T,GAAIupoB,oBAC7EvtU,WAAY,WAAc,MAAO,CAACE,MAAgBA,MAAauxD,GAA0Bq7Q,KAAuC3sU,cAAe,EAAG90T,KAAM,CAAEqyT,UAAW,EAClKl7T,SAAQ,gBAAiB,IACrBC,OAAM,YAAUC,OAAM,CAAEC,QAAS,QACjCF,OAAM,cAAYC,OAAM,CAAEC,QAAS,QACnCE,OAAW,oBAAkBH,OAAM,CAAEC,QAAS,QAC9CE,OAAW,wBAAsBH,OAAM,CAAEC,QAAS,QAClDE,OAAW,wBAAsBE,OAAQ,yBAGzDgkC,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BqsU,GAA4Bh0nB,UAAW,gBAAY,GACtDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BwuoB,GAA4Bh0nB,UAAW,YAAQ,GAClDmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAesnU,KAC3BiF,GAA4Bh0nB,UAAW,wBAAoB,GAC9Dg0nB,GAA8B7lmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,KAAqB4gU,MAC9F2M,IAvFqCA,IAAT,GA4F3B1D,GAAmB,UAASA,GAAN,MACtB7woB,YAAYguoB,GAAej6O,GAAYxsW,IACnCrnD,KAAK8toB,cAAgBA,GACrB9toB,KAAK6zZ,WAAaA,GAClB7zZ,KAAK8H,KAAO,OACZ9H,KAAKkxC,aAAe,MACpBlxC,KAAK0zX,UAAW,EAChB1zX,KAAK0U,QAAU2yC,GAEf0ulB,oBACA,OAAO/1oB,KAAK8toB,cAAcpgf,MAAM03C,UAEhC4wc,wBACA,OAAOh2oB,KAAK4tD,SAAW,WAAa,KAEpCupjB,mBACA,OAAOn3mB,KAAKqxD,IAEZ4klB,wBACA,OAAOj2oB,KAAKqI,SAAW,OAAS,KAEpC6toB,cAAcvooB,IACV,MAAMmie,GAAKvrc,UAAUvf,UAGrB,IAAImxnB,GA9pEQvjnB,KACZA,GAAM+uB,MACCmllB,GAAel0mB,GAAM+uB,OAIZ/uB,GAAMjvB,MAAMqT,MAAM,KAAKrR,IAAI,CAACwzC,GAAMv1B,MAC9C,IAAIuvO,GAAWh6M,GAAKzU,OACpB,MAAO,CACHqqB,UAAWy3kB,GAAiBrzY,IAC5BnuP,KAAMshoB,GAAUnzY,IAChB7wM,QAAS,KACT0M,KAAoB,KAAbprC,GAAQ,GACf1Z,MAAOszC,GAAUqkJ,YAipELu0c,CAAWzooB,GAAMjF,QACrCytoB,GAAgBhP,GAAkBgP,IAAgBn2oB,KAAK8toB,cAAcpgf,MAAMy4Q,OAC3E8rO,GAAckE,GAAen2oB,KAAKmuD,cAC7BnuD,KAAK4tD,UACN5tD,KAAK8toB,cAAc5C,aAEvBlroB,KAAK8toB,cAActE,SAAS2M,IAM5B,MAAME,GAASr2oB,KAAK0U,QAAQxG,eACxB4he,GAAGvud,MAfQ,2BAeSuud,GAAGvud,MAdhB,8BAeP80nB,GAAOvuoB,KAAO,GACduuoB,GAAOvuoB,KAAO,QAElBoK,WAAW,KACPlS,KAAK6zZ,WAAWh8B,cAAe,MAI3C84Q,UAAoBvqU,UAAO,SAAqCh4R,IAAK,OAAO,IAAKA,IAAKuimB,IAAqBltU,MAAyBikU,IAAgBjkU,MAAyB05D,IAAoB15D,MAAyBA,SAC1NktU,GAAoBxlU,UAAqB1H,MAAyB,CAAE37T,KAAM6ooB,GAAqB9soB,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAM6iU,SAAU,EAAGC,aAAc,SAA0CnD,GAAI/3T,IAAgB,EAAL+3T,IACrNC,MAAkB,SAAU,SAAuD97T,IAAU,OAAO8D,GAAIyqoB,cAAcvuoB,MAC/G,EAAL67T,IACFC,MAAmB,OAAQh4T,GAAI3D,KAA/B27T,CAAqC,eAAgBh4T,GAAIylC,aAAzDuyR,CAAuE,WAAYh4T,GAAIioX,SAAvFjwD,CAAiG,OAAQh4T,GAAIsqoB,cAA7GtyU,CAA4H,WAAYh4T,GAAIuqoB,kBAA5IvyU,CAA+J,MAAOh4T,GAAI0rmB,aAA1K1zS,CAAwL,WAAYh4T,GAAIwqoB,oBACvMrvU,OAAQ,CAAEv1Q,IAAK,MAAOhpD,SAAU,WAAYulD,SAAU,WAAYO,aAAc,kBACzF3f,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,SAC3B29mB,GAAoBtwnB,UAAW,WAAO,GACzCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B2oU,GAAoBtwnB,UAAW,gBAAY,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B2oU,GAAoBtwnB,UAAW,gBAAY,GAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3B8qoB,GAAoBtwnB,UAAW,oBAAgB,GAClDmuB,EAAW,EACPy5R,SAAY,aACZH,EAAW,cAAe90S,SAC3B29mB,GAAoBtwnB,UAAW,YAAQ,GAC1CmuB,EAAW,EACPy5R,SAAY,qBACZH,EAAW,cAAe90S,SAC3B29mB,GAAoBtwnB,UAAW,oBAAgB,GAClDmuB,EAAW,IACPy5R,OAAY,iBACZH,EAAW,cAAex5Q,SAC3BqilB,GAAoBtwnB,UAAW,gBAAY,GAC9CmuB,EAAW,IACPy5R,OAAY,aACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC6oU,GAAoBtwnB,UAAW,gBAAiB,MACnDmuB,EAAW,EACPy5R,SAAY,iBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC6oU,GAAoBtwnB,UAAW,oBAAqB,MACvDmuB,EAAW,EACPy5R,SAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC6oU,GAAoBtwnB,UAAW,eAAgB,MAClDmuB,EAAW,IACPy5R,OAAY,iBACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjC6oU,GAAoBtwnB,UAAW,oBAAqB,MACvDmuB,EAAW,EACPioV,SAAa,SAAU,CAAC,WACxB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjC6oU,GAAoBtwnB,UAAW,gBAAiB,MACnDswnB,GAAsBnimB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC4/T,GAC5DvqQ,GACAtuX,SACL8hoB,IA9G6BA,IAAT,GAgHvB,IAAI1lU,GAIJ,IAAIvD,GAA6BuD,GAA+B,cAAyChzR,GACrGn4C,YAAY64T,IACRn5S,QACAxf,KAAK24T,QAAUA,KAGvB+O,GAA2BtB,UAAO,SAA4Ch4R,IAAK,OAAO,IAAKA,IAAKs5R,IAA4BjE,MAAyB6C,QACzJoB,GAA2ByD,UAAqB1H,MAAyB,CAAE37T,KAAM4/T,GAA4B7jU,UAAW,CAAC,CAAC,GAAI,+BAAgC,IAAK,CAAC,GAAI,mCAAoC,IAAK,CAAC,GAAI,uCAAwC,KAAMsoB,SAAU,CAACs3S,MAA0B,CAC7R,CACI5qR,QAASZ,GACTa,aAAa/nC,SAAW,IAAMk6T,OAElCxH,SACZiE,GAA6BuD,GAA+Bz8R,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QACvGY,IAKH,IAAIwxD,GAAwB,UAASA,GAAN,MAC3Bp5X,YAAYugM,IACRrgM,KAAKqgM,iBAAmBA,GAExBo5L,oBAAgBr2T,IACZpjE,KAAK05X,kBACL15X,KAAKqgM,iBAAiB5hJ,OAAOz+C,KAAKqgM,iBAAiBvgL,QAAQ9f,KAAK05X,kBAChE15X,KAAK05X,qBAAkBv0X,GAEvBi+D,GAAQyjQ,cACR7mU,KAAK05X,gBAAkB15X,KAAKqgM,iBAAiBs5L,mBAAmBv2T,GAAQyjQ,YAAazjQ,OAIjG81T,UAAyB9yD,UAAO,SAA0Ch4R,IAAK,OAAO,IAAKA,IAAK8qV,IAA0Bz1D,MAAyBA,SACnJy1D,GAAyB/tD,UAAqB1H,MAAyB,CAAE37T,KAAMoxX,GAA0Br1X,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAM+iU,OAAQ,CAAE6yD,gBAAiB,qBAC9KjrV,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,QAC1BiiU,EAAW,oBAAqB,CAACjiU,UAClCqzX,GAAyB74W,UAAW,kBAAmB,MAC1D64W,GAA2B1qV,EAAW,CAAEs5R,EAAW,oBAAqB,CAACrB,SACtEyyD,IAtBkCA,IAAT,GAwB5B,IAAIo9Q,GAKJ,MAAMC,GAAwB,CAC1B5tlB,OAAO,EACP9P,QAASg6X,KACT/5X,aAAa/nC,SAAW,IAAM+1C,KAKlC,IAAIA,GAAkBwvlB,GAAoB,MACtCx2oB,YAAYguoB,GAAe76Q,GAAc4gC,GAAY27O,GAAiBgH,GAAStxe,GAAUo/J,GAAK22D,IAC1Fj7X,KAAK8toB,cAAgBA,GACrB9toB,KAAKizX,aAAeA,GACpBjzX,KAAK6zZ,WAAaA,GAClB7zZ,KAAKwvoB,gBAAkBA,GACvBxvoB,KAAKw2oB,QAAUA,GACfx2oB,KAAKklK,SAAWA,GAChBllK,KAAKskU,IAAMA,GAMXtkU,KAAKy2oB,WAAY,EAMjBz2oB,KAAK4tD,UAAW,EAKhB5tD,KAAKqI,UAAW,EAIhBrI,KAAKyvoB,cAAe,EAIpBzvoB,KAAK+2X,SAAW,EAIhB/2X,KAAK+7a,YAAe,MAAIxnQ,YAIxBv0K,KAAKu+b,cAAgB,MAIrBv+b,KAAK0nD,OAAS,IAAI9iD,MAIlB5E,KAAKunX,OAAS,IAAI3iX,MAIlB5E,KAAKs/C,MAAQ,IAAI16C,MAIjB5E,KAAKy0B,SAAW,IAAI7vB,MAIpB5E,KAAKskB,MAAQ,IAAI1f,MAIjB5E,KAAKwnD,QAAU,IAAI5iD,MAInB5E,KAAKg4W,MAAQ,IAAIpzW,MAIjB5E,KAAKy+C,OAAS,IAAI75C,MAIlB5E,KAAKgif,OAAS,IAAIp9e,MAIlB5E,KAAKstC,OAAS,IAAI1oC,MAIlB5E,KAAKsoM,QAAU,IAAI1jM,MAInB5E,KAAK02oB,OAAS,IAAI9xoB,MAIlB5E,KAAK22oB,eAAiB,IAAI/xoB,MAI1B5E,KAAKsL,YAAc,IAAI1G,MACvB5E,KAAK0voB,oBAAqB,EAI1B1voB,KAAK2voB,cAAgB,CACjB5vlB,kBAAmB,GACnByO,YAAa,EACbC,YAAa,GAEjBzuD,KAAK2id,kBAAqBz3c,OAC1BlL,KAAK0id,iBAAoBx3c,QACzBy5T,QAAgBV,IAChBjkU,KAAKkgD,SAAWlgD,KAAK8toB,cAAcnslB,MACnC3hD,KAAKuzX,+BAAiCN,GAAajsX,QAAQtB,UAAU,EAAGg/T,WACpE1kU,KAAKiM,UAAYy4T,GAAM,MAAQ,MAC/B1kU,KAAK6zZ,WAAW06O,YAAYvuoB,KAAKiM,aAErCjM,KAAKiM,UAAYgnX,GAAavuD,IAAM,MAAQ,MAC5C1kU,KAAK6zZ,WAAW06O,YAAYvuoB,KAAKiM,WACjCjM,KAAKi7X,QAAUA,GAAQ/sX,cACvBlO,KAAK4voB,gBACL5voB,KAAK6voB,iBACL7voB,KAAK8voB,sBAOL3qlB,eAAWA,IACXnlD,KAAK8toB,cAAcpgf,MAAMvoG,WAAaA,GAEtCA,iBACA,OAAOnlD,KAAK8toB,cAAcpgf,MAAMvoG,WAOhCghX,UAAMA,IACNnma,KAAK8toB,cAAcpgf,MAAMy4Q,MAAQA,GAEjCA,YACA,OAAOnma,KAAK8toB,cAAcpgf,MAAMy4Q,MAShC7iZ,oBAAgBA,IAChBtjB,KAAK8toB,cAAcpgf,MAAMpqI,gBAAkBA,GAE3CA,sBACA,OAAOtjB,KAAK8toB,cAAcpgf,MAAMpqI,gBAMhC8hL,cAAUA,IACVplM,KAAK8toB,cAAcpgf,MAAM03C,UAAYA,GAErCA,gBACA,OAAOplM,KAAK8toB,cAAcpgf,MAAM03C,UAMhC0jc,gBAAYA,IACZ9ooB,KAAK8toB,cAAcpgf,MAAMo7e,YAAcA,GAEvCA,kBACA,OAAO9ooB,KAAK8toB,cAAcpgf,MAAMo7e,YAMhCC,eAAWA,IACX/ooB,KAAK8toB,cAAcpgf,MAAMq7e,WAAaA,GAEtCA,iBACA,OAAO/ooB,KAAK8toB,cAAcpgf,MAAMq7e,WAOhCC,YAAQA,IACRhpoB,KAAK8toB,cAAcpgf,MAAMs7e,QAAUA,GAEnCA,cACA,OAAOhpoB,KAAK8toB,cAAcpgf,MAAMs7e,QAOhC7lnB,iBAAaA,IACbnjB,KAAK8toB,cAAcpgf,MAAMvqI,aAAeA,GAExCA,mBACA,OAAOnjB,KAAK8toB,cAAcpgf,MAAMvqI,aAOhCslnB,gBAAYA,IAAezooB,KAAK8toB,cAAcpgf,MAAM+6e,YAAcA,GAClEA,kBAAgB,OAAOzooB,KAAK8toB,cAAcpgf,MAAM+6e,YAKhDC,kBAAcA,IACd1ooB,KAAK8toB,cAAcpgf,MAAMg7e,cAAgBA,GAEzCA,oBACA,OAAO1ooB,KAAK8toB,cAAcpgf,MAAMg7e,cAMhCE,iBAAaA,IACb5ooB,KAAK8toB,cAAcpgf,MAAMk7e,aAAeA,GAExCA,mBACA,OAAO5ooB,KAAK8toB,cAAcpgf,MAAMk7e,aAOhCC,cAAUA,IACV7ooB,KAAK8toB,cAAcpgf,MAAMm7e,UAAYA,GAErCA,gBACA,OAAO7ooB,KAAK8toB,cAAcpgf,MAAMm7e,UAOhCL,eAAWA,IACXxooB,KAAK8toB,cAAcpgf,MAAM86e,WAAaA,GAEtCA,iBACA,OAAOxooB,KAAK8toB,cAAcpgf,MAAM86e,WAKhC90Q,aAASA,IACT1zX,KAAK+2X,SAAWrD,GAEhBA,eACA,OAAO1zX,KAAK+2X,SAKZ5oU,iBAAaA,IACb,IAAI6hlB,GAAqBnqoB,OAAOw0D,OAAO,GAAIr6D,KAAK2voB,cAAexhlB,IAC/DnuD,KAAK2voB,cAAgBK,GAErB7hlB,mBACA,OAAOnuD,KAAK2voB,cAEZ/8D,wBACA,OAAO5ykB,KAAKqI,SAEZgpD,UACA,OAAOrxD,KAAKiM,UAEhB5G,WACIrF,KAAKq4X,iBACLr4X,KAAKklK,SAAS4B,gBAAgB9mK,KAAKi7X,QAAS,YAC5Cj7X,KAAK8toB,cAAcvE,iBAAiBvpoB,KAAKy2oB,WACrCz2oB,KAAKkvoB,QACLlvoB,KAAKwvoB,gBAAgBP,aAAajvoB,KAAMA,KAAKkvoB,QAGrDnooB,YAAYC,IACR,IAAIumF,QAAU,YAAavmF,IAAU,CACjC,MAAM4voB,GAAe5voB,GAAQyvoB,UAAUjvoB,aACX,kBAAjBovoB,KACP52oB,KAAK8toB,cAAcpgf,MAAM81B,MAAQozd,IAET,iBAAjBA,IAA8C,OAAjBA,KACpC52oB,KAAK8toB,cAAcpgf,MAAM81B,OAAQ,EACjCxjL,KAAK8toB,cAActqd,MAAQ39K,OAAOw0D,OAAO,GAAIr6D,KAAK8toB,cAActqd,MAAOozd,MAInFjwoB,cACI3G,KAAKkgD,SAASZ,QACVt/C,KAAKssb,kBACLtsb,KAAKssb,iBAAiBxlb,cAEtB9G,KAAKkwoB,0BACLlwoB,KAAKkwoB,yBAAyBppoB,cAE9B9G,KAAKmwoB,+BACLnwoB,KAAKmwoB,8BAA8BrpoB,cAEnC9G,KAAKuzX,gCACLvzX,KAAKuzX,+BAA+BzsX,cAEpC9G,KAAKsmd,MACLtmd,KAAKsmd,KAAKx/c,cAMlBovZ,cAAcvoZ,IACV,IAAI3N,KAAKqI,SAGT,KAAKsF,GAAMwnX,UAAYpxP,YAAcp2H,GAAMwnX,UAAYpxP,aACnDp2H,GAAMjF,SAAW1I,KAAKiwoB,iBAAiB/hoB,cAGvC,OAFAP,GAAMu0C,sBACNliD,KAAK8hD,WAAW5zC,cAAcu9D,SAG9B60X,GAAW3yb,GAAMjF,OAAQ4+nB,MACvB9mM,GAAY7yb,GAAMjF,UAAY43b,GAAW3yb,GAAMjF,OAAQ2+nB,MACzDrnoB,KAAK6zZ,WAAW9xY,QAAQpU,KAMhCy/T,WAAWn1G,IACP,IAAIplF,IAAU,EACVolF,cAAoB3pN,QACpB2pN,GAASrxN,QAASuyC,KACTstlB,GAAwBttlB,MACzB05F,IAAU,KAGdA,IACA7yI,KAAK8toB,cAAclE,gBAAgB3xa,KAG1B,OAAbA,IACAj4N,KAAKkgD,SAASZ,QAElBt/C,KAAKskU,IAAI24D,eAKb90U,iBAAiB+Q,IACbl5D,KAAK0id,iBAAmBxpZ,GAK5B+8W,kBAAkB/8W,IACdl5D,KAAK2id,kBAAoBzpZ,GAK7Bg9W,iBAAiBhjD,IACblzX,KAAKqI,SAAW6qX,GAKhBm9Q,2BACA,OAAOrwoB,KAAKqI,cAAWlD,EAAYnF,KAAK0zX,SAK5C48Q,wBAAwB7knB,IACpBzrB,KAAKklK,SAAS0gK,SAAS5lU,KAAKiwoB,iBAAiB/hoB,cAAe,mBACvDlO,KAAK6zZ,WAAWhhF,UACjB7yU,KAAK6zZ,WAAWh8B,cAAe,GAMvC04Q,uBAAuB9knB,IACnBzrB,KAAKklK,SAAS4gK,YAAY9lU,KAAKiwoB,iBAAiB/hoB,cAAe,mBAK/D2ooB,wBACA,IAAIC,IAAa,EACjB,IAAK92oB,KAAKmlD,WAAY,CAClB,MAAM4xlB,GAAmB/2oB,KAAKkgD,SAASqllB,cAAcx/nB,OAAS,EACxDixoB,GAAiBh3oB,KAAKkgD,SAAS2llB,iBAAiB,CAACrolB,GAAUwnlB,YAC7DhloB,KAAKwooB,YAAcuO,KACnBD,IAAa,IAEZ92oB,KAAKwooB,YAAcuO,KAAqBC,KACzCF,IAAa,GAGrB,YAAKjjP,WAAWw6O,qBAAuByI,GAChCA,GAKPG,sBAOA,QAAIj3oB,KAAKkgD,SAAS2llB,iBANH,CACXrolB,GAAUunlB,SACVvnlB,GAAUwnlB,UACVxnlB,GAAUsnlB,OACVtnlB,GAAUynlB,SAUlB/4J,QAAQr5d,IACJ,OAAO7S,KAAKizX,aAAap0W,IAAIhM,IAKjCw6T,QACIn7T,WAAW,KACPlS,KAAKiwoB,iBAAiB/hoB,cAAcm/T,UAO5C+8I,iBACIpqd,KAAKqtU,QAKTppC,OACQjkS,KAAK6zZ,WAAWhhF,UAChB7yU,KAAK6zZ,WAAWhhF,SAAU,EAC1BlxT,SAASqiR,cAAcC,OACvBjkS,KAAK0nD,OAAO7/C,QAOpB+5a,gBACI5hb,KAAKikS,OAQTizW,eAAe96lB,IACXp8C,KAAK8toB,cAAc1D,UAAUhulB,IAQjC+6lB,gBAAgB/6lB,IACZp8C,KAAK8toB,cAAc9D,WAAW5tlB,IAMlCg7lB,iBAAiBh7lB,IACbp8C,KAAK8toB,cAAcvD,YAAYnulB,IAMnCi7lB,iBAAiBj7lB,IACbp8C,KAAK8toB,cAAczC,WAAWjvlB,IAMlCk7lB,kBAAkBl7lB,IACdp8C,KAAK8toB,cAAcjD,YAAYzulB,IAKnCstlB,cACQ1poB,KAAKkgD,SAASqllB,cAAcx/nB,QAC5B/F,KAAK8toB,cAAcpE,cAM3BwB,aACIlroB,KAAK8toB,cAAc5C,aAMvB1B,SAAS7nlB,IACL3hD,KAAK8toB,cAActE,SAAS7nlB,IAMhC6xB,UACI,OAAO,EAEX6kT,iBACI,IAAInL,YACIltX,KAAKmma,QAA4B,IAAnBnma,KAAKy2oB,UACnB,MAAM,IAAIhgoB,MAAM,8EAI5Bm5nB,kBACSl6Q,WAGL11X,KAAKw2oB,QAAQt8T,kBAAkB,KAC3Bl6U,KAAK0N,eAAgByzN,OAAUx/M,SAAU,SAASnV,QAAKO,MAAQY,MAClD3N,KAAKi7X,UAAYttX,GAAMjF,QAAU1I,KAAKi7X,QAAQ9sX,SAASR,GAAMjF,WAE1E1I,KAAKssb,oBAAmB/7Y,KAAMvwC,KAAK0N,cAAe1N,KAAK6zZ,WAAW2kH,OAAO9ygB,UAAU,KAC3E1F,KAAK6zZ,WAAWhhF,SAChB7yU,KAAKw2oB,QAAQlulB,IAAI,KACbtoD,KAAK6zZ,WAAWhhF,SAAU,EAC1B7yU,KAAK2id,oBACL3id,KAAK0nD,OAAO7/C,aAMhCgooB,iBACI7voB,KAAKkwoB,yBAA2BlwoB,KAAK6zZ,WAAWs6O,eAAezooB,UAAU,KACrE1F,KAAKwnD,QAAQ3/C,SAEjB7H,KAAKmwoB,8BAAgCnwoB,KAAK6zZ,WAAWu6O,oBAAoB1ooB,UAAU,KAC/E1F,KAAKiwoB,iBAAiB/hoB,cAAcm/T,UAG5CyiU,sBACI9voB,KAAKsmd,KAAOtmd,KAAK8toB,cAAclG,YAAYlioB,UAAWu0B,KAClDj6B,KAAKunX,OAAO1/W,KAAKoyB,MAErBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAcvF,YAAY7ioB,UAAWi8C,KACpD3hD,KAAK0id,iBAAiB/ga,IACtB3hD,KAAKsL,YAAYzD,KAAK85C,OAE1B3hD,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAcjG,WAAWnioB,UAAWu0B,KACnDj6B,KAAKs/C,MAAMz3C,KAAKoyB,OAEpBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAchG,cAAcpioB,UAAU,KACrD1F,KAAKy0B,SAAS5sB,UAElB7H,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAc/F,WAAWrioB,UAAWu0B,KACnDj6B,KAAKskB,MAAMzc,KAAKoyB,OAEpBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAc9F,WAAWtioB,UAAWu0B,KACnDj6B,KAAKg4W,MAAMnwW,KAAKoyB,OAEpBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAc7F,YAAYvioB,UAAWu0B,KACpDj6B,KAAKy+C,OAAO52C,KAAKoyB,OAErBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAc5F,YAAYxioB,UAAWu0B,KACpDj6B,KAAKgif,OAAOn6e,KAAKoyB,OAErBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAc3F,YAAYzioB,UAAWu0B,KACpDj6B,KAAKstC,OAAOzlC,KAAKoyB,OAErBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAc1F,aAAa1ioB,UAAWu0B,KACrDj6B,KAAKsoM,QAAQzgM,KAAKoyB,OAEtBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAczF,YAAY3ioB,UAAWu0B,KACpDj6B,KAAK02oB,OAAO7uoB,KAAKoyB,OAErBj6B,KAAKsmd,KAAK99Z,IAAIxoD,KAAK8toB,cAAcxF,oBAAoB5ioB,UAAWu0B,KAC5Dj6B,KAAK22oB,eAAe9uoB,KAAKoyB,SAIrC6sB,GAAgBs/Q,UAAO,SAAiCh4R,IAAK,OAAO,IAAKA,IAAK0Y,IAAiB28Q,MAAyBikU,IAAgBjkU,MAAyB6C,MAA6B7C,MAAyB05D,IAAoB15D,MAAyBurU,IAAkBvrU,MAAyBA,OAAgBA,MAAyBA,OAAmBA,MAAyBA,OAA2BA,MAAyBA,SACxb38Q,GAAgBy/Q,UAAqB9C,MAAyB,CAAE37T,KAAMg/C,GAAiBjjD,UAAW,CAAC,CAAC,iBAAkB20X,eAAgB,SAAwCh1D,GAAI/3T,GAAKgtX,IAGjL,GAHsM,EAALj1D,KAC/LC,MAAsBg1D,GAAUs2Q,GAAuB,GACvDtrU,MAAsBg1D,GAAU22Q,GAA2B,IACpD,EAAL5rU,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIs3nB,aAAer4gB,GAAGxjH,OAC3Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIu3nB,iBAAmBt4gB,GAAGxjH,SAC9Es/T,UAAW,SAA+BhD,GAAI/3T,IAGjD,GAHiE,EAAL+3T,KAC1DC,KAAmBF,GAAK,GACxBE,KAAmBwtD,GAAK,IACjB,EAALztD,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIq2C,WAAa4oE,GAAGxjH,OACzEu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIwkoB,iBAAmBvlhB,GAAGxjH,SAC9Ew/T,SAAU,EAAGC,aAAc,SAAsCnD,GAAI/3T,IAAgB,EAAL+3T,IACjFC,MAAkB,UAAW,SAAoD97T,IAAU,OAAO8D,GAAIyqZ,cAAcvuZ,MAC7G,EAAL67T,KACFC,MAAmB,MAAOh4T,GAAI4lD,KAC9BoyQ,MAAmB,WAAYh4T,GAAIikoB,mBAAnCjsU,CAAuD,WAAYh4T,GAAIikoB,mBAAvEjsU,CAA2F,mBAAoBh4T,GAAImnkB,qBAClHhsQ,OAAQ,CAAE6vU,UAAW,YAAa7olB,SAAU,WAAYvlD,SAAU,WAAYonoB,aAAc,eAAgB14Q,SAAU,WAAYglD,YAAa,cAAewiB,cAAe,gBAAiBp5Y,WAAY,aAAcghX,MAAO,QAAS7iZ,gBAAiB,kBAAmB8hL,UAAW,YAAa0jc,YAAa,cAAeC,WAAY,aAAcC,QAAS,UAAW7lnB,aAAc,eAAgBslnB,YAAa,cAAeC,cAAe,gBAAiBE,aAAc,eAAgBC,UAAW,YAAaL,WAAY,aAAc90Q,SAAU,WAAYvlU,aAAc,eAAgB+glB,OAAQ,SAAUvzM,OAAQ,UAAYplE,QAAS,CAAE7uU,OAAQ,OAAQ6/T,OAAQ,SAAUjoU,MAAO,QAAS7qB,SAAU,WAAYnQ,MAAO,QAASkjC,QAAS,QAASwwT,MAAO,QAASv5T,OAAQ,SAAUujc,OAAQ,SAAU10c,OAAQ,SAAUg7J,QAAS,UAAWouc,OAAQ,SAAUC,eAAgB,iBAAkBrroB,YAAa,eAAiBkrX,SAAU,CAAC,eAAgBrqW,SAAU,CAACs3S,MAA0B,CACh9BqD,KACAq2D,GACAuqQ,GACAsH,GACAuH,GACA,CACI19lB,QAASkuR,KACTC,SAAU,gBAEd,CACInuR,QAASq6X,KACTp6X,aAAa/nC,SAAW,IAAMuloB,OAElC7yU,OAA8B51H,MAAO,GAAIo5H,KAAM,GAAIC,OAAQ,WAAc,IAAIkiJ,GAU/EmuL,GAUAtrL,GAUA+hH,GAUAC,GAUAupE,GAUA/lL,GAUAC,GAUA+lL,GAUArhE,GAUAhjH,GAUAttC,GAUAC,GAUAC,GAUAC,GAUAC,GAUAC,GAUAC,GAUAC,GAUAC,GASFA,OA9LA8iC,GAAUhiJ,mIAUVmwU,GAAUnwU,6IAUV6kJ,GAAU7kJ,iJAUV4mQ,GAAU5mQ,qJAUV6mQ,GAAU7mQ,iMAUVowU,GAAUpwU,4MAUVqqJ,GAAUrqJ,yKAUVsqJ,GAAUtqJ,qLAUVqwU,GAAUrwU,yKAUVgvQ,GAAUhvQ,uKAUVgsJ,GAAUhsJ,sKAUV0+G,GAAU1+G,kMAUV2+G,GAAU3+G,yLAUV4+G,GAAU5+G,yLAUV6+G,GAAU7+G,gIAUV8+G,GAAU9+G,mIAUV++G,GAAU/+G,mIAUVg/G,GAAUh/G,gIAUVi/G,GAAUj/G,4IAUVk/G,GAAUl/G,sJACL,CAAC,CAAC,+BAAgC,GAAI,SAAUgiJ,GAAS,qBAAsBmuL,GAAS,gBAAiBtrL,GAAS,mBAAoB+hH,GAAS,yBAA0BC,GAAS,2BAA4BupE,GAAS,mBAAoB/lL,GAAS,qBAAsBC,GAAS,qBAAsB+lL,GAAS,uBAAwBrhE,GAAS,wBAAyBhjH,GAAS,uBAAwBttC,GAAS,qBAAsBC,GAAS,qBAAsBC,GAAS,QAASC,GAAS,SAAUC,GAAS,SAAUC,GAAS,QAASC,GAAS,SAAUC,GAAS,sBAAuBC,IAAU,CAAC,8BAA+B,GAAI,EAAG,eAAgB,WAAY,YAAa,CAAC,OAAQ,SAAU,EAAG,WAAY,kBAAmB,EAAG,KAAM,QAAS,QAAS,CAAC,mBAAoB,IAAK,CAAC,kBAAmB,GAAI,EAAG,MAAO,eAAgB,WAAY,YAAa,CAAC,aAAc,IAAK,CAAC,QAAS,wCAAyC,EAAG,WAAY,EAAG,QAAS,CAAC,EAAG,mBAAoB,CAAC,yBAA0B,GAAI,QAAS,yBAA0B,EAAG,WAAY,WAAY,eAAgB,mBAAoB,EAAG,QAAS,CAAC,EAAG,WAAY,gBAAiB,EAAG,QAAS,CAAC,EAAG,kBAAmB,wBAAyB,EAAG,YAAa,CAAC,yBAA0B,GAAI,EAAG,iBAAkB,UAAW,EAAG,WAAY,WAAY,eAAgB,oBAAqB,CAAC,EAAG,WAAY,mBAAsBp0X,SAAU,SAAkCsxQ,GAAI/3T,IAAgB,EAAL+3T,KACh7CC,MAA0B,EAAG,GAC7BA,MAAsB,EAAG,MAAO,GAChCA,MAAsB,EAAG,MAAO,EAAG,GACnCA,MAAkB,QAAS,SAAuD97T,IAAU,OAAO8D,GAAI6koB,wBAAwB3ooB,KAA/H87T,CAA2I,OAAQ,SAAsD97T,IAAU,OAAO8D,GAAI8koB,uBAAuB5ooB,MACrP87T,MAAiB,EAAG,QAAS,EAAG,GAChCA,MAAsB,EAAG,QACzBA,MAAc,GACdA,QACAA,QACAA,MAAkB,EAAGi0U,GAAsD,EAAG,EAAG,4BAA6B,GAC9Gj0U,MAAsB,EAAG,MAAO,GAChCA,MAAc,IACdA,QACAA,QACAA,MAAkB,GAAIk0U,GAAgC,EAAG,EAAG,KAAM,GAClEl0U,MAAkB,GAAIm0U,GAAyD,EAAG,EAAG,8BAA+B,IAC7G,EAALp0U,KACFC,MAAiB,GACjBA,MAAkB,eAAgBh4T,GAAI0iD,aAAtCs1Q,CAAoD,WAAYh4T,GAAImiD,SAApE61Q,CAA8E,WAAYh4T,GAAIpD,UAC9Fo7T,MAAiB,GACjBA,MAAkB,KAAMh4T,GAAIswa,aAC5Bt4G,MAAmB,aAAch4T,GAAIyge,QAAQ,UAA7CzoK,CAAwD,WAAYh4T,GAAI4koB,sBACxE5sU,MAAiB,GACjBA,MAAkB,MAAOh4T,GAAIQ,UAA7Bw3T,CAAwC,eAAgBh4T,GAAI0iD,aAA5Ds1Q,CAA0E,WAAYh4T,GAAImiD,SAA1F61Q,CAAoG,WAAYh4T,GAAIpD,UACpHo7T,MAAmB,SAAUh4T,GAAIkwb,OAASlwb,GAAIkwb,OAAS,KAAvDl4H,CAA6D,eAAe,GAC5EA,MAAiB,GACjBA,MAAyBh4T,GAAIyge,QAAQ,WACrCzoK,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIwroB,iBAC9BxzU,MAAiB,GACjBA,MAAyBh4T,GAAIyge,QAAQ,kBACrCzoK,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIgkoB,cAAgBhkoB,GAAIy0C,SAAS03D,MAAQ,GACnE6rN,MAAiB,GACjBA,MAAkB,OAAQh4T,GAAIoroB,qBAC7BpvU,WAAY,WAAc,MAAO,CAACC,GAA4BgpU,GAA2BC,GAAqBhpU,MAAakwU,GAA4BjH,GAAmBkH,KAAkClwU,cAAe,IACpOp5R,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClClhR,GAAgBzmC,UAAW,aAAc,MAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClClhR,GAAgBzmC,UAAW,QAAS,MACvCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClClhR,GAAgBzmC,UAAW,kBAAmB,MACjDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8zB,GAAgBzmC,UAAW,YAAa,MAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe6gU,OAC1B7gU,EAAW,oBAAqB,CAAC6gU,SAClC7hlB,GAAgBzmC,UAAW,cAAe,MAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8zB,GAAgBzmC,UAAW,aAAc,MAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8zB,GAAgBzmC,UAAW,UAAW,MACzCmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8zB,GAAgBzmC,UAAW,eAAgB,MAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8zB,GAAgBzmC,UAAW,cAAe,MAC7CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe6gU,OAC1B7gU,EAAW,oBAAqB,CAAC6gU,SAClC7hlB,GAAgBzmC,UAAW,gBAAiB,MAC/CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8zB,GAAgBzmC,UAAW,eAAgB,MAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,CAAC90S,UAClC8zB,GAAgBzmC,UAAW,YAAa,MAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAejiU,SAC3BihD,GAAgBzmC,UAAW,iBAAa,GAC3CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,CAACE,WAClClhR,GAAgBzmC,UAAW,aAAc,MAC5CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BlhR,GAAgBzmC,UAAW,gBAAY,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3BlhR,GAAgBzmC,UAAW,gBAAY,GAC1CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAeE,UAC3BlhR,GAAgBzmC,UAAW,oBAAgB,GAC9CmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAex5Q,SAC3BxH,GAAgBzmC,UAAW,gBAAY,GAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8zB,GAAgBzmC,UAAW,cAAU,GACxCmuB,EAAW,EACP0/I,SAAM,YACN45I,EAAW,cAAex5Q,QAC1Bw5Q,EAAW,oBAAqB,CAACx5Q,UAClCxH,GAAgBzmC,UAAW,WAAY,MAC1CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8zB,GAAgBzmC,UAAW,cAAU,GACxCmuB,EAAW,IACP0/I,SACA45I,EAAW,cAAejiU,QAC1BiiU,EAAW,oBAAqB,CAACjiU,UAClCihD,GAAgBzmC,UAAW,eAAgB,MAC9CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8zB,GAAgBzmC,UAAW,mBAAe,GAC7CmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8zB,GAAgBzmC,UAAW,qBAAiB,GAC/CmuB,EAAW,EACPwxV,SAAa+uQ,GAAuB,CAAE1tnB,QAAQ,IAC9CymT,EAAW,cAAeinU,KAC3BjolB,GAAgBzmC,UAAW,oBAAgB,GAC9CmuB,EAAW,EACPwxV,SAAaovQ,GAA2B,CAAE/tnB,QAAQ,IAClDymT,EAAW,cAAesnU,KAC3BtolB,GAAgBzmC,UAAW,wBAAoB,GAClDmuB,EAAW,EACPq5R,SAAU,aAAc,CAAExmT,QAAQ,IAClCymT,EAAW,cAAej5T,QAC3Bi4C,GAAgBzmC,UAAW,kBAAc,GAC5CmuB,EAAW,EACPq5R,SAAU,mBAAoB,CAAExmT,QAAQ,IACxCymT,EAAW,cAAej5T,QAC3Bi4C,GAAgBzmC,UAAW,wBAAoB,GAClDmuB,EAAW,EACP2/I,SAAO,QACP25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,cAAU,GACxCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,cAAU,GACxCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,aAAS,GACvCmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,gBAAY,GAC1CmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,aAAS,GACvCmuB,EAAW,IACP2/I,OAAO,SACP25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,eAAW,GACzCmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,aAAS,GACvCmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,cAAU,GACxCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,cAAU,GACxCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,cAAU,GACxCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,eAAW,GACzCmuB,EAAW,EACP2/I,WACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,cAAU,GACxCmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,sBAAkB,GAChDmuB,EAAW,IACP2/I,SACA25I,EAAW,cAAeljU,QAC3BkiD,GAAgBzmC,UAAW,mBAAe,GAC7CmuB,EAAW,IACPy5R,OAAY,mBACZA,SAAY,kBACZH,EAAW,cAAeE,UAC3BlhR,GAAgBzmC,UAAW,0BAAsB,GACpDmuB,EAAW,EACPy5R,SAAY,0BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjChhR,GAAgBzmC,UAAW,oBAAqB,MACnDmuB,EAAW,IACPy5R,OAAY,YACZH,EAAW,cAAe90S,QAC1B80S,EAAW,oBAAqB,KACjChhR,GAAgBzmC,UAAW,MAAO,MACrCmuB,EAAW,EACPioV,SAAa,UAAW,CAAC,WACzB3uD,EAAW,cAAeh7Q,UAC1Bg7Q,EAAW,oBAAqB,CAACjiU,SACjCiiU,EAAW,yBAAqB,IACjChhR,GAAgBzmC,UAAW,gBAAiB,MAC/CymC,GAAkBwvlB,GAAoB9nmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC4/T,GAC5E5gU,KACAq2D,GACA6xQ,GACAjjR,MACA5jD,MACAD,MACAr5T,SACLi4C,IAyNH,IAAIkC,GAAY,UAASA,GAAN,QAEnBA,UAAao9Q,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAK4a,KACxEA,GAAaqiR,UAAqB5H,MAAwB,CAAE37T,KAAMkhD,KAClEA,GAAasiR,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACC,OAAeA,SAJ7DioD,IAAT,GAqBZ8ulB,GAA4B,UAASA,GAAN,MAC/Bh4oB,YAAYguoB,GAAe76Q,GAAc4gC,IACrC7zZ,KAAK8toB,cAAgBA,GACrB9toB,KAAKizX,aAAeA,GACpBjzX,KAAK6zZ,WAAaA,GAClB7zZ,KAAK+3oB,kBAAmB,EACxB/3oB,KAAKg4oB,WACLh4oB,KAAKwnD,UAELywlB,gCACA,MAA8B,QAAvBj4oB,KAAKu+b,cAEZ25M,sCACA,MAA8B,cAAvBl4oB,KAAKu+b,cAEZ45M,kCACA,MAA8B,UAAvBn4oB,KAAKu+b,cAEZ65M,mCACA,MAA8B,WAAvBp4oB,KAAKu+b,cAEhBy5M,WACIh4oB,KAAKi0oB,mBAAqBj0oB,KAAK6zZ,WAAWk6O,qBAAqBrooB,UAAWmtX,KACvD,UAAXA,GACA7yX,KAAKkroB,aAGLlroB,KAAK0roB,gBAET1roB,KAAK6zZ,WAAW+6O,sBAGxBpnlB,UACIxnD,KAAKw5X,kBAAoBx5X,KAAK6zZ,WAAWm6O,oBAAoBtooB,UAAWmtX,KACpE7yX,KAAK+8X,YAAYlK,MAGzBkK,YAAYlK,KACe,UAAXA,GAAsB7yX,KAAKgrD,YAAchrD,KAAKq4oB,cACvDnqoB,cAAcm/T,QAErB1mU,cACI3G,KAAKi0oB,mBAAmBntoB,cACxB9G,KAAKw5X,kBAAkB1yX,cAE3B4koB,cAAcjgnB,IACLzrB,KAAKqI,UACNrI,KAAK8toB,cAAcpE,cAG3BwB,WAAWz/mB,IACFzrB,KAAKqI,UACNrI,KAAK8toB,cAAc5C,aAG3Bh/J,QAAQr5d,IACJ,OAAO7S,KAAKizX,aAAap0W,IAAIhM,MAGrCiloB,UAA6B1xU,UAAO,SAA8Ch4R,IAAK,OAAO,IAAKA,IAAK0pmB,IAA8Br0U,MAAyBikU,IAAgBjkU,MAAyB6C,MAA6B7C,MAAyB05D,MAC9P26Q,GAA6BvxU,UAAqB9C,MAAyB,CAAE37T,KAAMgwoB,GAA8Bj0oB,UAAW,CAAC,CAAC,gCAAiC2iU,UAAW,SAA4ChD,GAAI/3T,IAGpN,GAHoO,EAAL+3T,KAC7NC,KAAmBkhU,GAAM,GACzBlhU,KAAmBmhU,GAAM,IAClB,EAALphU,GAAQ,CACV,IAAI94M,GACJ+4M,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAIu/C,YAAc0/D,GAAGxjH,OAC1Eu8T,MAAsB/4M,GAAK+4M,WAA0Bh4T,GAAI4soB,aAAe3thB,GAAGxjH,SAC1Ew/T,SAAU,GAAIC,aAAc,SAAmDnD,GAAI/3T,IAAgB,EAAL+3T,IAC/FC,MAAmB,YAAah4T,GAAIssoB,iBAApCt0U,CAAsD,gBAAiBh4T,GAAIwsoB,0BAA3Ex0U,CAAsG,sBAAuBh4T,GAAIysoB,gCAAjIz0U,CAAkK,kBAAmBh4T,GAAI0soB,4BAAzL10U,CAAsN,mBAAoBh4T,GAAI2soB,+BAC7OxxU,OAAQ,CAAEv+T,SAAU,WAAYk2b,cAAe,iBAAmB1wP,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,SAAU,EAAG,WAAY,mBAAoB,EAAG,SAAU,CAAC,cAAe,IAAK,CAAC,OAAQ,SAAU,EAAG,WAAY,YAAa,oBAAqB,EAAG,SAAU,CAAC,eAAgB,KAAMh1Q,SAAU,SAA+CsxQ,GAAI/3T,IAAgB,EAAL+3T,KACvWC,MAAsB,EAAG,SAAU,EAAG,GACtCA,MAAkB,QAAS,SAAuE97T,IAAU,OAAO8D,GAAIy/nB,WAAWvjoB,MAClI87T,MAAc,GACdA,QACAA,MAAsB,EAAG,SAAU,EAAG,GACtCA,MAAkB,QAAS,SAAuE97T,IAAU,OAAO8D,GAAIigoB,cAAc/joB,MACrI87T,MAAc,GACdA,SACO,EAALD,KACFC,MAAmB,YAAY,GAC/BA,MAAiB,GACjBA,MAA0B,IAAKh4T,GAAIyge,QAAQ,sBAAuB,KAClEzoK,MAAiB,GACjBA,MAAmB,YAAY,GAC/BA,MAAiB,GACjBA,MAA0B,IAAKh4T,GAAIyge,QAAQ,uBAAwB,OAClEtkK,cAAe,IACxBp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAeE,UAC3B8vU,GAA6Bz3nB,UAAW,gBAAY,GACvDmuB,EAAW,EACP0/I,WACA45I,EAAW,cAAe90S,SAC3B8knB,GAA6Bz3nB,UAAW,qBAAiB,GAC5DmuB,EAAW,EACPq5R,SAAU,cAAe,CAAExmT,QAAQ,IACnCymT,EAAW,cAAej5T,QAC3BipoB,GAA6Bz3nB,UAAW,mBAAe,GAC1DmuB,EAAW,EACPq5R,SAAU,eAAgB,CAAExmT,QAAQ,IACpCymT,EAAW,cAAej5T,QAC3BipoB,GAA6Bz3nB,UAAW,oBAAgB,GAC3DmuB,EAAW,EACPy5R,SAAY,mBACZH,EAAW,cAAeE,UAC3B8vU,GAA6Bz3nB,UAAW,wBAAoB,GAC/DmuB,EAAW,EACPy5R,SAAY,uBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCgwU,GAA6Bz3nB,UAAW,4BAA6B,MACxEmuB,EAAW,IACPy5R,OAAY,6BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCgwU,GAA6Bz3nB,UAAW,kCAAmC,MAC9EmuB,EAAW,EACPy5R,SAAY,yBACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCgwU,GAA6Bz3nB,UAAW,8BAA+B,MAC1EmuB,EAAW,IACPy5R,OAAY,0BACZH,EAAW,cAAeE,SAC1BF,EAAW,oBAAqB,KACjCgwU,GAA6Bz3nB,UAAW,+BAAgC,MAC3Ey3nB,GAA+BtpmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAC4/T,GACrE5gU,KACAq2D,MACL26Q,IAlIsCA,IAAT,GAuI5BD,GAA0B,UAASA,GAAN,MAC7B/3oB,YAAYmzX,IACRjzX,KAAKizX,aAAeA,GAExBu8D,YACIxvb,KAAKyhf,SAAWzhf,KAAKkgD,SAAS2llB,iBAAiB,CAACrolB,GAAUynlB,SAC1DjloB,KAAKw0oB,SAAWx0oB,KAAKkgD,SAAS2llB,iBAAiB,CAACrolB,GAAUsnlB,SAC1D9koB,KAAK8joB,YAAc9joB,KAAKkgD,SAAS2llB,iBAAiB,CAACrolB,GAAUwnlB,YAEzDhloB,KAAK2e,WAAa3e,KAAKizX,aAAap0W,IADxC7e,KAASyhf,WAAazhf,KAAK8joB,YACiB,qBAGtB9joB,KAAK8joB,YAAoC,wBAC/B,0BAIxC+T,UAA2BzxU,UAAO,SAA4Ch4R,IAAK,OAAO,IAAKA,IAAKypmB,IAA4Bp0U,MAAyB6C,QACzJuxU,GAA2BtxU,UAAqB9C,MAAyB,CAAE37T,KAAM+voB,GAA4Bh0oB,UAAW,CAAC,CAAC,8BAA+B+iU,OAAQ,CAAE1mR,SAAU,YAAc2tJ,MAAO,EAAGo5H,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,SAAU,EAAG,YAAah1Q,SAAU,SAA6CsxQ,GAAI/3T,IAAgB,EAAL+3T,KACnTC,MAAiB,EAAG,OAAQ,GAC5BA,MAAc,IACP,EAALD,KACFC,MAAkB,UAAWA,MAAuB,EAAGohU,IAAOp5nB,GAAIq4nB,cAAgBr4nB,GAAI+ooB,UAAW/ooB,GAAIq4nB,aAAer4nB,GAAI+ooB,SAAU/ooB,GAAIq4nB,YAAar4nB,GAAIg2e,WACvJh+K,MAAiB,GACjBA,MAA0B,IAAKh4T,GAAIkT,WAAY,OAC9C8oT,WAAY,CAACE,OAAiBC,cAAe,IACtDp5R,EAAW,EACP0/I,WACA45I,EAAW,cAAewhU,KAC3BuO,GAA2Bx3nB,UAAW,gBAAY,GACrDw3nB,GAA6BrpmB,EAAW,CAAEs5R,EAAW,oBAAqB,CAAChB,QACxE+wU,IA/BoCA,IAAT,GAyC1B9ulB,GAAY,UAASA,GAAN,QAEnBA,UAAaq9Q,UAAO,SAA8Bh4R,IAAK,OAAO,IAAKA,IAAK2a,KACxEA,GAAasiR,UAAqB5H,MAAwB,CAAE37T,KAAMihD,KAClEA,GAAauiR,UAAqB7H,MAAwB,CAAE3iU,QAAS,CAAC,CAACkoD,OAJ9CD,IAAT,6nECttJT,MAAMuvlB,EAAM,MAENC,EAAQ,OACRC,EAAS,SACTC,EAAS,SACTC,EAAS,SAETC,EAAQ,QACR3nkB,EAAO,OACP4nkB,EAAe,kBAEfC,EAAoB,GAGpBv9F,EAAe,UACfw9F,EAAS,SAETC,EAAS,SACT1lC,GAAO,OACP2lC,EAAY1qlB,OAAO0qlB,UACnBC,GAAa3qlB,OAAO0qlB,UACpBtokB,EAAO,OAIPwokB,GAAS,SACTC,GAAU,UACV7lC,GAAQ,QACR8lC,GAAe,cAEftokB,GAAS,SACTuokB,GAAM,MAENC,GAAQ,QACRC,GAAQ,OACRC,GAAQ,QACRzxoB,GAAI,IACJjC,GAAI,ICrCF,YAAiBnC,IAC5B,OAAO2K,MAAMqxB,QAAQh8B,ICCV,YAAkB+Q,GAAS+jJ,GACtC,MAAMghf,EAAa95mB,GAAQ84H,GAAWA,EAAU,CAAEA,GAElD,QAAStuH,EAAM,EAAGA,EAAMsvmB,EAAW1zoB,OAAQokC,IAAO,CAC9C,MAAMiT,EAAYq8lB,EAAWtvmB,IACgB,IAAzCz1B,GAAQ0oC,UAAUt9B,QAAQs9B,KAC1B1oC,GAAQ0oC,WAAa,IAAMA,ICRvC,MAAMs8lB,GAAc,uBCEL,YAA0Bhwd,IACrC,IAAIt3J,EAAS,GACTs3J,GAAK3qK,QAAQ8iI,QAAUm1W,KAAqBttU,GAAK3qK,QAAQ8iI,OAAOnrI,QAC5DgzK,GAAK3qK,QAAQ8iI,OAAOnrI,MAAQ,GAAM,IAClC0b,EAAS,GAIjB,QAASzjB,EAAI,EAAGA,EAAI+6K,GAAKvtD,SAASp2H,OAAQ4I,IACtC+6K,GAAKvtD,SAASxtH,GAAGV,SAAS6yF,MAAM,GAAGtoD,UAAUpmB,EAAQA,GAGzD,OAAOs3J,GCdI,YAAmBiwd,GAAQC,GAItC,OAAQD,GAAOhwoB,EAAIiwoB,EAAO9llB,EAAI6llB,GAAO7llB,EAAI8llB,EAAOjwoB,EAAI,ECJzC,YAAkBhG,IAC7B,MAAwB,iBAAVA,KAAuBwT,MAAMxT,ICChC,YAAkBA,IAC7B,cAAcA,KAAUmtE,GCAb,YAA6BntE,IACxC,OAAOsxU,GAAStxU,KAAWinJ,GAASjnJ,KAAU4qD,SAAS5qD,ICJ5C,YAAoBu1D,IAC/B,MAAqB,mBAAPA,GCIlB,YAAuB2gL,GAAal/L,GAEhC,QAASgqB,KAAYhqB,EAAQ,CACzB,IAGIk/lB,EAHA52f,EAAYtoG,EAAOgqB,GACnBm1kB,SAAkB72f,EAStB,GALI42f,EAXG,WAUHC,GAAqC,OAAd72f,EACZA,EAAUnjJ,YAEV,KAGX+5oB,GAAYA,IAAavroB,MAEzB,GAAI20I,aAAqBlqI,KACrB8gO,GAAYl1K,GAAY,IAAI5rD,KAAKkqI,EAAU3oI,mBACpCy/nB,GAAW92f,EAAUzzB,OAC5BqqH,GAAYl1K,GAAYs+E,EAAUzzB,YAC/B,CACH,IAAIwqhB,GAAWnga,GAAYl1K,GAEvBk1K,GAAYl1K,GAzBjB,iBAwBaq1kB,IACgBA,IAEA,GAE5BC,GAAcpga,GAAYl1K,GAAWs+E,OA5BnC,cA8BC62f,IACPjga,GAAYl1K,GAAYs+E,GAIhC,OAAO42F,GAGI,YAAoBA,IAC/B,MAAM9zO,EAASg3B,UAAUh3B,OAEzB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IACxBsroB,GAAcpga,GAAa98M,UAAUpuB,IAGzC,OAAOkrO,GChDI,YAAkBl2O,IAC7B,MAAwB,iBAAVA,GCCH,YAAoBA,IAC/B,OAAIsxU,GAAStxU,IACFA,GAAQ,KAEZA,GCDX,MAAMu2oB,GAAoB,sCAE1B,YAAqBrvlB,IACjB,OAAOqvlB,GAAkB1+N,KAAK3wX,IAGnB,YAAuBn2C,GAAS+jH,GAC3C,MAAM0hhB,EAAcvvf,GAASnyB,GAAU,CAAEA,GAAWA,EAEpD,GAAI94F,GAAQw6mB,GAAc,CACtB,MAAM5noB,EAAS,GACTpI,EAAQgL,OAAO0vB,iBAAiBnwB,IAEtC,QAASy1B,EAAM,EAAGA,EAAMgwmB,EAAYp0oB,OAAQokC,IAAO,CAC/C,IAAI0gB,GAAQsvlB,EAAYhwmB,GACxB53B,EAAOs4C,IAASuvlB,GAAYvvlB,IAASlmB,WAAWx6B,EAAM0gD,KAAU1gD,EAAM0gD,IAG1E,OAAOt4C,KACA24J,GAASzyC,GAChB,QAAS5tE,KAAS4tE,EACd/jH,GAAQvK,MAAM0gD,GAASwvlB,GAAW5hhB,EAAO5tE,ICxBtC,YAAoBlnD,GAAO22oB,EAAiB,GACvD,MAAM9wQ,EAAU,CAAEr7Q,IAAK,EAAG7+C,MAAO,EAAGo6P,OAAQ,EAAGt6P,KAAM,GAErD,MAAsB,iBAAXzrE,GACP6lY,EAAQ6vQ,IAAO7vQ,EAAQ8pO,IAAS9pO,EAAQgvQ,GAAUhvQ,EAAQ6pO,IAAQ1vmB,IAElE6lY,EAAQ6vQ,IAAO11oB,GAAM01oB,KAAQiB,EAC7B9wQ,EAAQ8pO,IAAS3vmB,GAAM2vmB,KAAUgnC,EACjC9wQ,EAAQgvQ,GAAU70oB,GAAM60oB,IAAW8B,EACnC9wQ,EAAQ6pO,IAAQ1vmB,GAAM0vmB,KAASinC,GAG5B9wQ,ECdX,IAAInjW,GAAU,CACVk4c,QAAS,SAASrsb,IACd,OAAOA,KCCA,YAAqBnzC,GAAU,IAC1C,IAAImzC,EACJ,OAAInzC,GAAQmzC,SACRnzC,GAAQmzC,SAAWA,EDA3B,SAAsB7wC,gBACFi9d,GACZj4c,GAAUi4c,iBAGCpsb,GACX,OAAO7rB,GAAQk4c,QAAQrsb,KCNOwxc,QAAwB3kf,GAAQmzC,UACvD6nlB,GAAWh7nB,GAAQH,WAC1BszC,EAAWnzC,GAAQH,SAGhBszC,ECTX,MAAMssb,GAAc,sDACdC,GAAc,GAML,YAAgB5zb,IAC3B,GAAI4zb,GAAY5zb,IACZ,OAAO4zb,GAAY5zb,IAGvB,MAAMq4D,EAAS,GACfr4D,UAAMt/B,QAAQizd,GAAa,SAASj9d,EAAOqC,EAAO+6d,EAAe9zb,GAC7Dq4D,EAAOz9G,KAAKuxf,KAAqBpze,GAASA,EAAS+6d,GAAiB9zb,KAGxE4zb,GAAY5zb,IAAS,SAAS6U,GAC1B,IAAIntD,EAASmtD,EACb,QAASv1B,EAAM,EAAGA,EAAM+4E,EAAOn9G,QAAUwM,EAAQ43B,IAC7C53B,EAASA,EAAO2wG,EAAO/4E,IAG3B,OAAO53B,GAGJkse,GAAY5zb,IC5BR,YAAc5gB,GAAOp6B,GAChC,MAAM9J,EAASkkC,GAAMlkC,OACfwM,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAMpkC,EAAQokC,IACxBt6B,EAASo6B,GAAME,KACf53B,EAAQ9M,KAAKwkC,GAAME,IAI3B,OAAO53B,ECTI,YAAoBmC,GAASwhX,GACxC,GAAIxhX,GAAQ0oC,UAAW,CACnB,MAAMk7V,EAAQpiB,EAAWl/W,MAAM,KAC/B,QAASmzB,EAAM,EAAGA,EAAMmuW,EAAMvyY,OAAQokC,IAClC,IAA8C,IAA1Cz1B,GAAQ0oC,UAAUt9B,QAAQw4X,EAAMnuW,IAChC,OAAO,GFAvBs0c,GAAYt5e,UAAe,SAASu6D,IAChC,OAAOA,IGLI,SACX5/D,cACIE,KAAKmtW,KAAO,GAGhBtuV,IAAI7Z,GACA,OAAOhF,KAAKmtW,KAAKntW,KAAKu6oB,KAAKv1oB,IAG/BqtB,IAAIrtB,EAAMrB,GACN3D,KAAKmtW,KAAKntW,KAAKu6oB,KAAKv1oB,IAASrB,EAGjC42oB,KAAKv1oB,GACD,OAAOA,aAAgB+T,KAAO/T,EAAKsV,UAAYtV,GCfxC,YAAiBrB,GAAOsmC,GACnC,GAAIA,EACA,OAAgC,IAAzBA,EAAMnqB,QAAQnc,oBCCd,YAA0BqpB,GAAOsd,EAAK2U,GACjD,OAAO+3c,KAAmBhqe,IAASsd,EAAMtd,IAASiyB,EtBEvB,GuBJ/B,MAAMu7lB,GAAU,UAqChBp8nB,GAnCA,SACIte,YAAY0jB,EAAU+X,GAClBv7B,KAAKwjB,SAAWA,EAChBxjB,KAAKkuY,WAAausQ,GAAW,GAAIz6oB,KAAKkuY,WAAY3yW,GAGtDtxB,QAAQjF,EAAMi1B,GACV,MAAQzW,WAAU0qX,cAAeluY,KACjC,IAAI82X,EACJ,OAAIoX,EAAWlpY,GACX8xX,EAAqB92X,KAAK06oB,aAAaxsQ,EAAWlpY,GAAOi1B,GAClDzW,EAASg3nB,MAChB1jR,EAAqB92X,KAAK06oB,aAAaF,GAASx1oB,EAAMi1B,IAGnD68V,EAGX4jR,aAAaC,KAAW1gnB,GACpB,OAAOj6B,KAAKwjB,SAASm3nB,GAAQhnnB,MAAM3zB,KAAKwjB,SAAUyW,GAGtDo+W,iBAAiBC,GACb,GAAIt4Y,KAAKwjB,SAAS60X,iBACd,OAAOr4Y,KAAKwjB,SAAS60X,iBAAiBC,GAG1C,QAASnuW,EAAM,EAAGA,EAAMmuW,EAAMvyY,OAAQokC,IAClC,GAAInqC,KAAKkuY,WAAWoK,EAAMnuW,IACtB,OAAO,IC/BR,YAAaF,GAAOp6B,GAC/B,MAAM9J,EAASkkC,GAAMlkC,OACfwM,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAMpkC,EAAQokC,IAAO,CACnC,IAAIxmC,EAAQkM,EAASo6B,GAAME,IACvB6sd,KAAqBrzf,IACrB4O,EAAO9M,KAAK9B,GAGpB,OAAO4O,kBCTX,MAAM41jB,GAAUtpF,cAAmB,GAEpB,YAAyB51e,IACpC,IAAI8mH,EAAQ,EAEZ,OAAI9mH,GAAEo2a,YACFtvT,GAAS9mH,GAAEo2a,WAAa,IAEpB8oJ,GAAQyyE,SAKR7qhB,GAAiB,EAAI7iH,KAAKsB,IAAI2G,OAAOq/gB,iBAAkB,QAEpDvrhB,GAAEiZ,SACT6tG,EAAQ9mH,GAAEiZ,OAAS,GAGvB6tG,EAAQA,EAAQ,EAAI7iH,KAAKqB,KAAKwhH,GAAS7iH,KAAKC,MAAM4iH,GAE3CA,kBCrBI,YAAsBv4G,IACjC,MAAM1B,EAAUX,OAAOW,aAEA,IAAZA,GAA2BA,EAAQkL,KAC1ClL,EAAQkL,IAAIxJ,oVCJpB,MAAQ0Z,OAAF2pnB,GAAUtlO,cAAYq1L,QAAtBkwC,GAA+BC,IAA/B34b,GAAoCkqV,iBAAe61B,eAAa64E,gBAAcC,oBAAkB3jhB,KAAhGknL,GAAsGmiR,cAAYu6E,aAAWC,IAA7HhxjB,GAAkI2W,MAAlIrqB,GAAyI2kkB,gBAAcC,mBAAmBrkJ,ECAhL,SAAiB31e,kBACKtC,EAAS+6d,EAAO5ve,EAAQ,CAAEstF,MAAO,KAG1Cz4E,GAAW7U,EAAMstF,MAFJ,IAE0B71E,SAASm4d,OAIrDj0e,OAAOrC,KAAKub,GAASnY,QAAQ,SAASiM,GAClC,MAAMlP,GAAQob,EAAQlM,GACV,eAARA,GAAmC,MAAXA,EAAI,KAAelP,KAInC,SAARkP,EACAine,EAAMr0e,KAAK9B,IACa,iBAAVA,KACduG,EAAMstF,QACN8jjB,GAAWC,WAAW53oB,GAAOm2e,EAAO5ve,GACpCA,EAAMstF,6BAKDsiZ,EAAOjqe,GACpB,IAAIyhf,EAAW,GAEf,GAAIxX,EAAM/ze,OAAS,GAAK4b,SAASm4d,MAAO,CACpC,IACIwX,EAAWxX,EAAMn0e,IAAI,SAAS0/I,GAC1B,OAAO1jI,SAASm4d,MAAM37U,KAAK9Y,WAE1Bp8I,GAELuyoB,GAAavyoB,GAGjBoV,QAAQq8a,IAAI42D,GAAU12d,KAAK/qB,EAAUA,QAErCA,wBAIYkP,EAASlP,GACzB,MAAMiqe,EAAQ,GACdwhK,GAAWC,WAAWx8nB,EAAS+6d,GAE/BwhK,GAAWG,UAAU3hK,EAAOjqe,IAIpC,SAAeyroB,GCnDA,YAA2BxzoB,GAAMiX,GAC5C,MAAM0hgB,EAAQ34gB,GAAKuY,UAEfoggB,EAAM1hgB,QADN0hgB,EAAM1hgB,QACU07nB,GAAW,GAAIh6H,EAAM1hgB,QAASA,GAE9BA,ECLT,YAA2B1Q,IACtC,IAAIokC,EAAMummB,EACNxqoB,EAAMyqoB,EAEV,QAAS9umB,EAAM,EAAGpkC,EAASsI,GAAItI,OAAQokC,EAAMpkC,EAAQokC,IAAO,CACxD,MAAMxmC,EAAQ0K,GAAI87B,GACJ,OAAVxmC,GAAkB4qD,SAAS5qD,KAC3B8uC,EAAMvlC,KAAKulC,IAAIA,EAAK9uC,GACpB6K,EAAMtB,KAAKsB,IAAIA,EAAK7K,IAI5B,MAAO,CACH8uC,IAAKA,IAAQummB,OAAY7zoB,EAAYstC,EACrCjkC,IAAKA,IAAQyqoB,OAAY9zoB,EAAYqJ,GChB9B,YAAcy7B,GAAOmjY,GAChC,QAASz+Z,EAAI,EAAGA,EAAIs7B,GAAMlkC,OAAQ4I,IAAK,CACnC,MAAMqE,EAAOi3B,GAAMt7B,GACnB,GAAIy+Z,EAAUp6Z,EAAMrE,EAAGs7B,IACnB,OAAOj3B,GCFnB,MAAM0ooB,YAASxyiB,EACTyyiB,GAAe,iBAYrB,YAAyBjnoB,IACrB,MAAMrK,EAAYw6B,iBAAiBnwB,IAASrK,UAE5C,MAAkB,SAAdA,EACOqxoB,GAAOj3mB,OAdtB,YAAqBm3mB,IACjB,MAAMr6nB,EAAQq6nB,GAAar6nB,MAAMo6nB,IACjC,GAAc,OAAVp6nB,GAAmC,IAAjBA,EAAMxb,OACxB,OAAO21oB,GAAOj3mB,OAGlB,MAAMo3mB,EAAUt6nB,EAAM,GAAGvK,MAAM,KAAKrR,IAAIgE,GAAKg7B,WAAWh7B,IACxD,OAAO,IAAI+xoB,MAAUG,GAUdC,CAAYzxoB,mBCVvB,SATA,YAAuBk1I,IAEnB,OADe,IAAIlB,KAAMkB,IAAOw8f,SAErBxC,GAGJhB,GCTLyD,GAAU,GAEhB,SACIl8oB,YAAYuG,GACRrG,KAAKqkG,OAAS,GACdrkG,KAAKm4K,QAAU9xK,EAASA,EAAOuI,MAAM,GAAK,GAE1C,QAASD,EAAI,EAAGA,EAAI3O,KAAKm4K,QAAQpyK,OAAQ4I,IACrC3O,KAAKqkG,OAAOrkG,KAAKm4K,QAAQxpK,IAAMA,EAIvCtI,SACI,OAAOrG,KAAKm4K,QAAQprK,OAAOiG,GAAQA,IAASgpoB,IAGhD/qnB,IAAIttB,GACA,YAA8BwB,IAAvBnF,KAAKqkG,OAAO1gG,GAGvB6kD,IAAI7kD,GACK3D,KAAKixB,IAAIttB,KACV3D,KAAKqkG,OAAO1gG,GAAS3D,KAAKm4K,QAAQpyK,OAClC/F,KAAKm4K,QAAQ1yK,KAAK9B,IAI1Bwb,OAAOxb,GACH,MAAMigB,EAAQ5jB,KAAKqkG,OAAO1gG,QACZwB,IAAVye,IACA5jB,KAAKm4K,QAAQv0J,GAASo4nB,UACfh8oB,KAAKqkG,OAAO1gG,IAI3B27C,QACIt/C,KAAKqkG,OAAS,GACdrkG,KAAKm4K,QAAU,GAGfnpH,WACA,OAAOhvD,KAAKm4K,QAAQpyK,QAI5B,SACIjG,YAAYuG,GACRrG,KAAKi8oB,KAAO,IAAI5zkB,IAAIhiE,GAGxBA,SACI,OAAOiI,MAAM85D,KAAKpoE,KAAKi8oB,MAG3BhrnB,IAAIttB,GACA,OAAO3D,KAAKi8oB,KAAKhrnB,IAAIttB,GAGzB6kD,IAAI7kD,GACA3D,KAAKi8oB,KAAKzzlB,IAAI7kD,GAGlBwb,OAAOxb,GACH3D,KAAKi8oB,KAAK98nB,OAAOxb,GAGrB27C,QACIt/C,KAAKi8oB,KAAK38lB,QAGV0P,WACA,OAAOhvD,KAAKi8oB,KAAKjtlB,MAgBV,YAAuB3oD,IAClC,MAZc,MACd,IAAI8kZ,IAAY,EAEhB,MAAmB,mBAAR9iV,MAEP8iV,GAAY94X,IADIg2C,IAAI,CAAC,IACLp3C,IAAI,IAGjBk6X,IAIH+wP,GACO,IAAIC,GAAW91oB,IAGnB,IAAI+1oB,GAAU/1oB,IC5FV,YAA6Bie,IACxC,MAAMA,GCEK,YAAuBmuB,GAAKjkC,GACvC,IAAIiL,EAAOqnF,GAAMtyF,EAAMikC,GAAKommB,GAE5B,GAAa,IAATp/nB,EAAY,CACZ,GAAY,IAARjL,EACA,MAAO,GAGXiL,EAAOvM,KAAKiN,IAAI3L,GAGpB,MAAMkyF,EAAQxzF,KAAK06F,IAAI,GAAI16F,KAAKC,MAAMD,KAAK8T,IAAIvH,GAAQvM,KAAK8T,IAAI,MAC1Dq7nB,EAAgBv7iB,GAAOrnF,EAAOinF,EAAQm4iB,GAC5C,IAAIyD,EAAkB,EAEtB,OACIA,EADAD,EAAgB,SACE,GACfj2D,EAAoB,SACL,GACXi2D,EAAgB,SACL,EAEA,EAGfv7iB,GAAMJ,EAAQ47iB,EAAiBzD,GCzB1C,iBAAoB0D,KAChBz8oB,YAAY6J,EAAGmqD,GACXt0C,QAEAxf,KAAK2J,EAAIA,GAAK,EACd3J,KAAK8zD,EAAIA,GAAK,EAGlB07D,QACI,OAAO,IAAIt1C,GAAMl6E,KAAK2J,EAAG3J,KAAK8zD,GAGlCmK,OAAOwa,GACH,OAAOA,GAASz4E,KAAK2J,IAAM8uE,EAAM9uE,GAAK3J,KAAK8zD,IAAM2kB,EAAM3kB,EAG3Dg9D,OAAOzhD,EAAQmtkB,GACX,MAAMj3gB,EAAQ41gB,GAAIqB,GACZC,EAAOvvoB,KAAK65E,IAAIw+C,GAChBm3gB,EAAOxvoB,KAAKwkF,IAAI6zC,IACd57H,EAAGgzoB,GAAI7olB,EAAGm8N,IAAO5gN,GACjB1lE,KAAGmqD,MAAM9zD,KAEjB,YAAK2J,EAAIm3F,GACL67iB,IAAMhzoB,GAAIgzoB,IAAMF,GAAQ3olB,GAAIm8N,IAAMysX,ErCrBf,GqCyBvB18oB,KAAK8zD,EAAIgtC,GACLmvL,IAAMn8N,GAAIm8N,IAAMwsX,GAAQ9yoB,GAAIgzoB,IAAMD,ErC1Bf,GqC8BhB18oB,KAGXq/jB,SAASltiB,GAEL,YAAKxoB,GAAKwoB,EACVnyB,KAAK8zD,GAAK3hC,EAEHnyB,KAGX48oB,WAAWnkkB,GACP,MAAM2b,EAAKp0F,KAAK2J,EAAI8uE,EAAM9uE,EACpB0qF,EAAKr0F,KAAK8zD,EAAI2kB,EAAM3kB,EAE1B,OAAO5mD,KAAKqnF,KAAKH,EAAKA,EAAKC,EAAKA,mBAGpBhlB,EAAQiiB,EAAOmB,GAC3B,MAAMq4C,EAAUqwgB,GAAI7pjB,GAEpB,OAAO,IAAIpX,GACP7K,EAAO1lE,EAAI8oF,EAASvlF,KAAK65E,IAAI+jD,GAC7Bz7D,EAAOvb,EAAI2+B,EAASvlF,KAAKwkF,IAAIo5C,KAMzC,SAAe5wD,mBC1Df,iBAAkBqikB,KACdz8oB,YAAYq1E,EAAIN,EAAIY,EAAIonkB,GACpBr9nB,QAEAxf,KAAKm1E,GAAKA,GAAM,EAChBn1E,KAAK60E,GAAKA,GAAM,EAChB70E,KAAKy1E,GAAKA,GAAM,EAChBz1E,KAAK68oB,GAAKA,GAAM,EAGpB5+kB,OAAOg+D,GACH,OAAOj8H,KAAKm1E,KAAO8mD,EAAI9mD,IAAMn1E,KAAKy1E,KAAOwmD,EAAIxmD,IACzCz1E,KAAK60E,KAAOonD,EAAIpnD,IAAM70E,KAAK68oB,KAAO5ghB,EAAI4ghB,GAG9CnmoB,QACI,OAAO1W,KAAKy1E,GAAKz1E,KAAKm1E,GAG1B5qE,SACI,OAAOvK,KAAK68oB,GAAK78oB,KAAK60E,GAG1Br8B,UAAU47C,EAAIC,GACV,YAAKlf,IAAMif,EACXp0F,KAAKy1E,IAAM2e,EACXp0F,KAAK60E,IAAMwf,EACXr0F,KAAK68oB,IAAMxojB,EAEJr0F,KAGXs1H,KAAK3rH,EAAGmqD,GACJ,MAAMvpD,EAASvK,KAAKuK,SACdmM,EAAQ1W,KAAK0W,QAEnB,OAAIk0lB,GAAQjhmB,KACR3J,KAAKm1E,GAAKxrE,EACV3J,KAAKy1E,GAAKz1E,KAAKm1E,GAAKz+D,GAGpBk0lB,GAAQ92iB,KACR9zD,KAAK60E,GAAK/gB,EACV9zD,KAAK68oB,GAAK78oB,KAAK60E,GAAKtqE,GAGjBvK,KAGXs6D,KAAKwilB,GACD,YAAK3nkB,GAAKjoE,KAAKulC,IAAIzyC,KAAKm1E,GAAI2nkB,EAAU3nkB,IACtCn1E,KAAK60E,GAAK3nE,KAAKulC,IAAIzyC,KAAK60E,GAAIiokB,EAAUjokB,IACtC70E,KAAKy1E,GAAKvoE,KAAKsB,IAAIxO,KAAKy1E,GAAIqnkB,EAAUrnkB,IACtCz1E,KAAK68oB,GAAK3voB,KAAKsB,IAAIxO,KAAK68oB,GAAIC,EAAUD,IAE/B78oB,KAGX+8oB,UAAUtkkB,GACN,MAAMukkB,EAAar9mB,GAAQ84C,GACrB9uE,EAAIqzoB,EAAavkkB,EAAM,GAAKA,EAAM9uE,EAClCmqD,EAAIkplB,EAAavkkB,EAAM,GAAKA,EAAM3kB,EACxC,YAAKwG,KAAK,IAAI2ilB,GAAItzoB,EAAGmqD,EAAGnqD,EAAGmqD,IAEpB9zD,KAGX26H,OAAOmihB,EAAW32Q,GAEd,OAAIA,IAASp+X,KAAMo+X,KACfnmY,KAAKm1E,GAAK2nkB,EAAU3nkB,GACpBn1E,KAAKy1E,GAAKqnkB,EAAUrnkB,KAGpB0wT,IAASrgY,KAAMqgY,KACfnmY,KAAK60E,GAAKiokB,EAAUjokB,GACpB70E,KAAK68oB,GAAKC,EAAUD,IAGjB78oB,KAGXk9oB,QAAQJ,EAAW7uoB,GACf,MAAM1D,EAASvK,KAAKuK,SACdmM,EAAQ1W,KAAK0W,QACbyvX,EAAOl4X,IAAWoroB,IAAOproB,IAAWuqoB,EAAS1yoB,GAAIiC,GACjDqqB,GAAS+zW,IAASrgY,GAAIyE,EAASmM,EAErC,GAAIzI,IAAWwqoB,EAAQ,CACnB,MAAM0E,GAAeL,EAAUztkB,SACzBA,GAASrvE,KAAKqvE,SAEpBrvE,KAAKm1E,IAAMgokB,GAAaxzoB,EAAI0lE,GAAO1lE,EACnC3J,KAAK60E,IAAMsokB,GAAarplB,EAAIub,GAAOvb,OAEnC9zD,KAAKmmY,EAAO,GADLl4X,IAAWoroB,IAAOproB,IAAWolmB,GACnBypC,EAAU32Q,EAAO,GAAK/zW,GAEtB0qnB,EAAU32Q,EAAO,GAGtC,YAAK1wT,GAAKz1E,KAAKm1E,GAAKz+D,EACpB1W,KAAK68oB,GAAK78oB,KAAK60E,GAAKtqE,EAEbvK,KAGXuqZ,OAAOttP,EAAIC,GAEP,YAAKznF,IAAMwnF,EACXj9J,KAAK68oB,IAAM3/e,EAEJl9J,KAGXsqZ,OAAOrtP,EAAIC,GACP,YAAKqtP,QAAQttP,GAAKC,GACXl9J,KAGXkrG,IAAIs6C,GACA,MAAMgkP,EAAU4zQ,GAAW53f,GAE3B,YAAKrwE,IAAMq0T,EAAQp6T,KACnBpvE,KAAKy1E,IAAM+zT,EAAQl6T,MACnBtvE,KAAK60E,IAAM20T,EAAQr7Q,IACnBnuH,KAAK68oB,IAAMrzQ,EAAQ9/D,OAEZ1pU,KAGXq9oB,MAAM73f,GACF,MAAMgkP,EAAU4zQ,GAAW53f,GAE3BgkP,SAAQp6T,MAAQo6T,EAAQp6T,KACxBo6T,EAAQr7Q,KAAOq7Q,EAAQr7Q,IACvBq7Q,EAAQl6T,OAASk6T,EAAQl6T,MACzBk6T,EAAQ9/D,QAAU8/D,EAAQ9/D,OAEnB1pU,KAAKkrG,IAAIs+R,GAGpBh6Q,QACI,OAAO,IAAIythB,GAAIj9oB,KAAKm1E,GAAIn1E,KAAK60E,GAAI70E,KAAKy1E,GAAIz1E,KAAK68oB,IAGnDxtkB,SACI,OAAO,IAAI6K,GACPl6E,KAAKm1E,GAAKn1E,KAAK0W,QAAU,EACzB1W,KAAK60E,GAAK70E,KAAKuK,SAAW,GAIlCwmG,cAAct4B,GAEV,OAAOA,EAAM9uE,GAAK3J,KAAKm1E,IAAMsD,EAAM9uE,GAAK3J,KAAKy1E,IACtCgD,EAAM3kB,GAAK9zD,KAAK60E,IAAM4D,EAAM3kB,GAAK9zD,KAAK68oB,GAGjD/8jB,SACI,MAAO,CACH,IAAI5F,GAAMl6E,KAAKm1E,GAAIn1E,KAAK60E,IACxB,IAAIqF,GAAMl6E,KAAKy1E,GAAIz1E,KAAK60E,IACxB,IAAIqF,GAAMl6E,KAAKy1E,GAAIz1E,KAAK68oB,IACxB,IAAI3ikB,GAAMl6E,KAAKm1E,GAAIn1E,KAAK68oB,KAIhCS,UACI,MAAO,CAAEt9oB,KAAKm1E,GAAIn1E,KAAK60E,GAAI70E,KAAKy1E,GAAIz1E,KAAK68oB,IAAKp1nB,KAAK,KAGvDutN,SAAS/4G,GACL,QAASA,EAAI4ghB,GAAK78oB,KAAK60E,IAAM70E,KAAK68oB,GAAK5ghB,EAAIpnD,IAAMonD,EAAIxmD,GAAKz1E,KAAKm1E,IAAMn1E,KAAKy1E,GAAKwmD,EAAI9mD,IAGvF27C,OAAOmrC,GACH,IAAIvlJ,EAAQ1W,KAAK0W,QACbnM,EAASvK,KAAKuK,SAClB,MAAQZ,EAAGgzoB,EAAI7olB,EAAGm8N,GAAOjwR,KAAKqvE,SAExBilE,GAAKipgB,GAAY,EAAG,EAAGZ,EAAI1sX,EAAIh0H,GAC/Bg9a,GAAKskE,GAAY7moB,EAAO,EAAGimoB,EAAI1sX,EAAIh0H,GACnCuhf,GAAKD,GAAY7moB,EAAOnM,EAAQoyoB,EAAI1sX,EAAIh0H,GACxC7xB,GAAKmzgB,GAAY,EAAGhzoB,EAAQoyoB,EAAI1sX,EAAIh0H,GAE1CvlJ,SAAQxJ,KAAKsB,IAAI8lI,GAAG3qI,EAAGsvkB,GAAGtvkB,EAAG6zoB,GAAG7zoB,EAAGygI,GAAGzgI,GAAKuD,KAAKulC,IAAI6hG,GAAG3qI,EAAGsvkB,GAAGtvkB,EAAG6zoB,GAAG7zoB,EAAGygI,GAAGzgI,GACzEY,EAAS2C,KAAKsB,IAAI8lI,GAAGxgF,EAAGmlhB,GAAGnlhB,EAAG0plB,GAAG1plB,EAAGs2E,GAAGt2E,GAAK5mD,KAAKulC,IAAI6hG,GAAGxgF,EAAGmlhB,GAAGnlhB,EAAG0plB,GAAG1plB,EAAGs2E,GAAGt2E,GAE1E9zD,KAAKy1E,GAAKz1E,KAAKm1E,GAAKz+D,EACpB1W,KAAK68oB,GAAK78oB,KAAK60E,GAAKtqE,EAEbvK,KAGXy9oB,SACI,OAAO,IAAInqkB,KAAU,CAAEtzE,KAAKm1E,GAAIn1E,KAAK60E,IAAM,CAAE70E,KAAK0W,QAAS1W,KAAKuK,WAGpEmzoB,UACI,OAAwB,IAAjB19oB,KAAK0W,SAAmC,IAAlB1W,KAAKuK,SAGtC4yD,MAAM2/kB,EAAW32Q,EAAMw3Q,GACnB,MAAMtziB,EAAK87R,EAAO,EACZ77R,EAAK67R,EAAO,EACZy3Q,GAAWz3Q,IAASp+X,GAAIyxoB,GAAQV,EAChC9plB,GAAOhvD,KAAK49oB,MAEdC,GAAQF,EAAW,CAAEtqC,GAAMgmC,MAC3Br5oB,KAAKqqG,GAAMyyiB,EAAUzyiB,GACrBrqG,KAAKsqG,GAAMtqG,KAAKqqG,GAAMr7C,IACnBu6I,GAAYo0c,EAAW,CAAErqC,GAAOklC,KACnCx4oB,KAAKsqG,GAAMwyiB,EAAUxyiB,GACrBtqG,KAAKqqG,GAAMrqG,KAAKsqG,GAAMt7C,IACf2ulB,IAAclF,IACrBz4oB,KAAKqqG,GAAMyyiB,EAAUzyiB,IAAOyyiB,EAAUc,MAAc5ulB,IAAQ,EAC5DhvD,KAAKsqG,GAAMtqG,KAAKqqG,GAAMr7C,KAKlC,YAAqBrlD,GAAGmqD,EAAG6olB,EAAI1sX,EAAI3+L,GAC/B,MAAMi0C,EAAQ41gB,GAAI7pjB,GAElB,OAAO,IAAIpX,GACPyikB,GAAMhzoB,GAAIgzoB,GAAMzvoB,KAAK65E,IAAIw+C,IAAUzxE,EAAIm8N,GAAM/iR,KAAKwkF,IAAI6zC,GACtD0qJ,GAAMtmR,GAAIgzoB,GAAMzvoB,KAAKwkF,IAAI6zC,IAAUzxE,EAAIm8N,GAAM/iR,KAAK65E,IAAIw+C,IAI9D,SAAe03gB,GCxOf,iBAAmBV,KAEfz8oB,YAAYuvE,EAAQ6pU,EAAazmT,EAAQC,EAAYpB,GACjD9xE,QAEAxf,KAAKqvE,OAASA,EACdrvE,KAAKk5Y,YAAcA,EACnBl5Y,KAAKyyF,OAASA,EACdzyF,KAAK0yF,WAAaA,EAClB1yF,KAAKsxF,MAAQA,EAGjBk+B,QACI,OAAO,IAAIsuhB,GAAK99oB,KAAKqvE,OAAQrvE,KAAKk5Y,YAAal5Y,KAAKyyF,OAAQzyF,KAAK0yF,WAAY1yF,KAAKsxF,OAGtF8oV,SACI,OAAOp6a,KAAK0yF,WAAa1yF,KAAKsxF,MAAQ,EAG1Cu/B,UAAUkthB,EAAW7kQ,GACjB,OAAIA,EACAl5Y,KAAKk5Y,YAAc6kQ,EAEnB/9oB,KAAKyyF,OAASsrjB,EAGX/9oB,KAIXy4E,MAAM6Y,EAAO4nT,GACT,MAAM8kQ,EAAc7C,GAAI7pjB,GAClBsvE,EAAK1zJ,KAAK65E,IAAIi3jB,GACdC,EAAK/woB,KAAKwkF,IAAIssjB,GACdvrjB,GAASymT,EAAcl5Y,KAAKk5Y,YAAcl5Y,KAAKyyF,OAC/C9oF,GAAIm3F,GAAM9gG,KAAKqvE,OAAO1lE,EAAKi3J,EAAKnuE,GvCnCf,GuCoCjB3+B,GAAIgtC,GAAM9gG,KAAKqvE,OAAOvb,EAAKmqlB,EAAKxrjB,GvCpCf,GuCsCvB,OAAO,IAAIvY,GAAMvwE,GAAGmqD,IAGxBoqlB,YAAYx8jB,EAAUhrE,EAAOnM,GACzB,MAAM0uY,EAASj5Y,KAAKwvH,QAAQ86R,OAAO5oU,GAC7By8jB,EAAWllQ,EAAOmhC,SAClBgkO,GAAWnlQ,EAAOxgU,MAAM0lkB,GACxBE,GAAK3noB,EAAQ,EACbgjf,GAAKnvf,EAAS,EACd+zoB,GAAKpxoB,KAAKwkF,IAAIypjB,GAAIgD,IAClBI,GAAKrxoB,KAAK65E,IAAIo0jB,GAAIgD,IACxB,IAAIx0oB,GAAIy0oB,GAASz0oB,EAAI00oB,GACjBvqlB,GAAIsqlB,GAAStqlB,EAAI4lc,GAErB,OAAIxsf,KAAKiN,IAAImkoB,IAAM,KACf30oB,IAAK00oB,IAAME,GAAKrxoB,KAAKiN,IAAIokoB,KAGzBrxoB,KAAKiN,IAAIokoB,IAAM,KACfzqlB,IAAK4lc,IAAM4kJ,GAAKpxoB,KAAKiN,IAAImkoB,KAGtB,IAAIrB,GAAItzoB,GAAGmqD,GAAGnqD,GAAI+M,EAAOo9C,GAAIvpD,GAGxCwmG,cAActsC,GACV,MAAM4K,EAASrvE,KAAKqvE,OACd6pU,EAAcl5Y,KAAKk5Y,YACnBzmT,EAASzyF,KAAKyyF,OACdC,EAAa1yF,KAAK0yF,WAClBC,GAAW3yF,KAAK0yF,WAAa1yF,KAAKsxF,MAClC8C,GAAK3vB,EAAE96D,EAAI0lE,EAAO1lE,EAClB0qF,GAAK5vB,EAAE3Q,EAAIub,EAAOvb,EAClB0qlB,GAAS,IAAItkkB,GAAMka,GAAIC,IACvBoqjB,GAAaz+oB,KAAKy4E,MAAMia,GACxBgsjB,GAAc,IAAIxkkB,GAAMukkB,GAAW90oB,EAAI0lE,EAAO1lE,EAAG80oB,GAAW3qlB,EAAIub,EAAOvb,GACvE0ugB,GAAWxikB,KAAKy4E,MAAMka,IACtBgsjB,GAAY,IAAIzkkB,GAAMsof,GAAS74jB,EAAI0lE,EAAO1lE,EAAG64jB,GAAS1ugB,EAAIub,EAAOvb,GACjE8uB,GAAOke,GAAM1M,GAAKA,GAAKC,GAAKA,GvC5EX,GuC8EvB,OAAQqqjB,GAAYzglB,OAAOuglB,KAAWI,GAAUF,GAAaF,OACrDI,GAAUD,GAAWH,KACtB57jB,IAAQs2T,EAAcA,GAAet2T,IAAQ6P,EAASA,EAGjEosjB,UACI,MAAM5ihB,EAAM,IAAIghhB,GAAIjE,EAAWA,EAAWC,EAAWA,GAC/CvmjB,EAAaoO,GAAM9gG,KAAK0yF,WAAa,KACrCC,EAAWmO,IAAOpO,EAAa1yF,KAAKsxF,OAAS,KAC7C4nT,EAAcl5Y,KAAKk5Y,YACnB4lQ,EAAY,CAAE,EAAG,GAAI,IAAK,IAAKpsjB,EAAYC,GAAW74E,KAAKiloB,IAC3DC,GAAkBF,EAAUh/nB,QAAQ4yE,GACpCusjB,GAAgBH,EAAUh/nB,QAAQ6yE,GACxC,IAAIusjB,GAGAA,GADAxsjB,IAAeC,EACNmsjB,EAELE,GAAkBC,GACTH,EAAUlwoB,MAAMowoB,GAAiBC,GAAgB,GAEjD,GAAGtrmB,OACRmrmB,EAAUlwoB,MAAM,EAAGqwoB,GAAgB,GACnCH,EAAUlwoB,MAAMowoB,GAAiBF,EAAU/4oB,SAKvD,QAAS4I,GAAI,EAAGA,GAAIuwoB,GAAOn5oB,OAAQ4I,KAAK,CACpC,IAAI8pE,GAAQz4E,KAAKy4E,MAAMymkB,GAAOvwoB,KAC9BstH,EAAI8ghB,UAAUtkkB,IACdwjD,EAAI8ghB,UAAUtkkB,GAAOygU,GAGzB,OAAKA,GACDj9Q,EAAI8ghB,UAAU/8oB,KAAKqvE,QAGhB4sD,EAGXquR,OAAO3mZ,GACH,YAAK8uF,QAAU9uF,EACR3D,MAIf,YAAyBmyB,GAAGD,GACxB,OAAOC,GAAID,EAGf,SAAe4rnB,2CClIf,iBAA2BvB,KACvB4C,WAAWlmQ,EAAQl6X,GACf,MAAM2zE,EAAaumT,EAAOvmT,WAAa,IACvC,IAAIC,EAAWsmT,EAAO3nT,MAAQoB,EAG1BumT,EAAO3nT,MAAQ,GAAKoB,IAAeC,IACnCA,GATY,MAYhB,MAAMtjB,EAAS,IAAIiE,KAAW2lU,EAAO5pU,OAAO1lE,EAAGsvY,EAAO5pU,OAAOvb,GACvD2+B,GAASvlF,KAAKsB,IAAIyqY,EAAOxmT,OAAQ,GACjCymT,GAAchsY,KAAKsB,IAAIyqY,EAAOC,YAAa,GAC3CkmQ,GAAM,IAAI9rkB,KAASjE,EAAQ,CAC7BqjB,WAAYA,EACZC,SAAUA,EACV0sjB,QAAS5sjB,GACT6sjB,QAAS7sjB,KAEPi3F,GAAOrtC,aAAkB+igB,GAAKrgoB,GAASiM,QAE7C,GAAIkuX,GAAa,CACbkmQ,GAAIC,QAAUD,GAAIE,QAAUpmQ,GAC5B,MAAMqmQ,GAAWH,GAAII,QAAQ7sjB,GAC7B+2F,GAAKg4D,OAAO69Z,GAAS51oB,EAAG41oB,GAASzrlB,GACjC41H,GAAK01d,IAAIzsjB,EAAUD,EAAYwmT,GAAaA,IAAa,QAEzDxvN,GAAKg4D,OAAOryK,EAAO1lE,EAAG0lE,EAAOvb,GAGjC,OAAO41H,IAIf+1d,GAAap5mB,QAAU,IAAIo5mB,GAE3B,SAAeA,uDCzCR,YAAev1mB,IAClB,MAAO,GAAMh9B,KAAK65E,IAAI78C,GAAWh9B,KAAK45E,IAAM,EAGzC,YAAgB58C,IACnB,OAAOA,GAGJ,YAAwBA,GAAUyhH,EAAM3+H,EAAOvT,GAClD,IAAI5S,EAAI,QACJ49D,EAAI,EACJtyC,GAAI1Y,EAER,OAAiB,IAAbywB,GACOld,EAGM,IAAbkd,GACOld,EAAQvT,GAGdgrD,IACDA,EAAI,IAGRi7kB,GAAQxyoB,KAAKiN,IAAIV,IACb0Y,GAAI1Y,EACJ5S,EAAI49D,EAAI,GAER59D,EAAI49D,GAAK,EAAIv3D,KAAK45E,IAAM55E,KAAKyyoB,KAAKlmoB,EAAO0Y,IAGtCA,GAAIjlB,KAAK06F,IAAI,GAAG,GAAM19D,IACtBh9B,KAAKwkF,KAAKpjC,OAAOpkB,IAAYrjC,IAAM,IAAMqG,KAAK45E,IAAMriB,GAAKhrD,EAAOuT,mBC/B3E,IAAI5L,GAEJ,iBAA+Bm7nB,KAChBl2mB,qBACP,OAAKjlB,KACDA,GAAW,IAAI2nW,IAGZ3nW,GAGXthB,cACI0f,QAEAxf,KAAKm0lB,OAAS,GAGlBz7iB,SAAS1zC,EAAM8C,GACX9H,KAAKm0lB,OAAO1ulB,KAAK,CACbT,KAAMA,EACN8C,KAAMA,IAIdk6D,OAAOttD,EAASqK,GACZ,MAAMyzC,EAAQxyD,KAAKm0lB,OACnB,IAAI5ykB,EAEJ,GAAIxC,GAAWA,EAAQjX,KAAM,CACzB,MAAMA,EAAOiX,EAAQjX,KAAKuzB,cAC1B,QAAS1sB,GAAI,EAAGA,GAAI6jD,EAAMzsD,OAAQ4I,KAC9B,GAAI6jD,EAAM7jD,IAAG3J,KAAKq2B,gBAAkBvzB,EAAM,CACtCyZ,EAAQixC,EAAM7jD,IACd,OAKZ,GAAI4S,EACA,OAAO,IAAIA,EAAMzZ,KAAK4M,EAASqK,IAK3C,SAAegqW,GC+Bf7xT,GAxEA,iBAAwBqllB,KAAMl7nB,cACZvZ,EAAM4M,EAASqK,GACzB,OAAOgqW,kBAAgCjhX,EAAM4M,EAASqK,GAGtDA,cACA,OAAO/e,KAAKmpB,UAAY,CACpBjd,SAAU,IACV24V,OAAQ,SAIZ9lV,YAAQpb,GACR3D,KAAKmpB,SAAWxlB,EAGpB7D,YAAY4U,EAASqK,GACjBS,QAEAxf,KAAK+e,QAAUlZ,OAAOw0D,OAAO,GAAIr6D,KAAK+e,QAASA,GAC/C/e,KAAK0U,QAAUA,EAGnB6kU,SACA/sR,QAEAk5Q,OACI,MAAM3mT,EAAU/e,KAAK+e,SACb7S,WAAUoF,QAAQ,GAAMyN,EAC1B8lV,EAAS+6S,EAAgB7goB,EAAQ8lV,QACjC73U,GAAQhU,UAAQ1H,EAChB2mW,GAASjrV,EAAQ9gB,EAEN,IAAbA,GACAlM,KAAKwsD,KAAK,GACVxsD,KAAKwmB,SAELtU,WAAW,KACP,MAAM2toB,GAAO,KACT,GAAI7/oB,KAAK8/oB,SACL,OAGJ,MAAMC,MAAW/moB,QAEX2yI,IAAOg1a,QAAWo/E,GAAW/ynB,EAAO,EAAG9gB,GAEvC8zoB,GAAiBn7S,EADNl5M,GAAOz/I,EACgBy/I,GAAM,EAAG,EAAGz/I,GAEpDlM,KAAKwsD,KAAKwzlB,IAEND,GAAW9nS,IACX6gQ,QAAe+mC,IAEf7/oB,KAAKwmB,SAIbq5nB,MACDvuoB,GAIXkV,QACIxmB,KAAK8/oB,UAAW,EAGpBr6U,UACIzlU,KAAKwmB,UCpEb,iBAA2B+1nB,KACvBz8oB,YAAYif,GACRS,QAEAxf,KAAKw+D,SAAW,GAEhBx+D,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAAS/e,KAAKigpB,gBAAgBlhoB,IAGrEkhoB,gBAAgBlhoB,GACZ,OAAOA,EAGXmhoB,OAAOpD,GACH,MAAMt+kB,EAAWx+D,KAAKw+D,SACtB,IAAIy9D,EAEJ,QAASttH,EAAI,EAAGA,EAAI6vD,EAASz4D,OAAQ4I,IAAK,CACtC,IAAIwxoB,EAAe3hlB,EAAS7vD,GAC5BwxoB,EAAaD,OAAOpD,GAEpB7ghB,EAAMA,EAAMA,EAAI3hE,KAAK6llB,EAAalkhB,KAAOkkhB,EAAalkhB,IAAIzM,QAG9DxvH,KAAKi8H,IAAMA,GAAO6ghB,EAGtBr3U,UACI,MAAMjnQ,EAAWx+D,KAAKw+D,SAElBx+D,KAAKmlU,WACLnlU,KAAKmlU,UAAUM,UAGnB,QAAS92T,EAAI,EAAGA,EAAI6vD,EAASz4D,OAAQ4I,IACjC6vD,EAAS7vD,GAAG82T,UAIpBm/C,UACI,MAAMvI,EAASr8W,KAAKq8W,OAEpB,OAAOA,EAASA,EAAOuI,UAAY,KAGvCw7R,YACI,MAAMznV,EAAU34T,KAAKqgpB,aACrB,GAAI1nV,EACA,OAAOA,EAAQmgC,OAIvBunT,aACI,IAAI3roB,EAAU1U,KACd,KAAO0U,GAAS,CACZ,GAAIA,EAAQ4roB,aACR,OAAO5roB,EAAQ4roB,aAEnB5roB,EAAUA,EAAQ2nW,QAI1BkkS,kBAAkBnsjB,EAAIC,GAClB,MAAM71B,EAAWx+D,KAAKw+D,SAChBgilB,EAAgBhilB,EAASz4D,OAE/B,QAAS4I,EAAI,EAAGA,EAAI6xoB,EAAe7xoB,IAC/B6vD,EAAS7vD,GAAGstH,IAAIzjF,UAAU47C,EAAIC,GAItCnjE,SACI,QAASviB,EAAI,EAAGA,EAAIouB,UAAUh3B,OAAQ4I,IAAK,CACvC,IAAIqE,EAAO+pB,UAAUpuB,GACrB3O,KAAKw+D,SAAS/4D,KAAKuN,GACnBA,EAAKqpW,OAASr8W,MAItBygpB,gBACiC,IAAzBzgpB,KAAK+e,QAAQk1T,UAIjBj0U,KAAKi+U,eAELj+U,KAAK0gpB,YAEL1gpB,KAAK2gpB,iBAEL3gpB,KAAK4gpB,kBACL5gpB,KAAK6gpB,kBAGTH,YACQ1gpB,KAAK4jQ,SACL5jQ,KAAK4jQ,OAAOm1F,aAAe/4V,KAEvBA,KAAKq8W,QACLr8W,KAAKq8W,OAAOykS,aAAa9gpB,KAAK4jQ,SAK1C+8Y,iBACI,MAAMnilB,EAAWx+D,KAAKw+D,SAChBz4D,EAASy4D,EAASz4D,OACxB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IACxB6vD,EAAS7vD,GAAG8xoB,eAIpBxiU,eACIj+U,KAAK4jQ,OAAS,IAAIvnH,KAAW,CACzB4U,OAAQjxJ,KAAK+e,QAAQkyI,OACrBgjL,QAASonU,GAAer7oB,KAAK+e,QAAQk1T,SAAS,KAItD2sU,kBACQ5gpB,KAAK4jQ,QAAU5jQ,KAAK+e,QAAQomT,YAC5BnlU,KAAKmlU,UAAY9oL,UACbr8I,KAAK4jQ,OAAQ5jQ,KAAK+e,QAAQomT,YAKtC27U,aAAaC,GACJA,EAAYhoT,eACbgoT,EAAYhoT,aAAe/4V,MAG/BmyB,EAAgBpT,QAAQiioB,OACpBhhpB,KAAKihpB,WAAWr9Y,OAAO1yO,OAAO6vnB,GACvBn2C,GAAQm2C,EAAYhioB,QAAQkyI,QACnCjxJ,KAAKkhpB,YAAYC,YAAYJ,GAC1B/gpB,KAASohpB,YACZphpB,KAAKmhpB,YAAYJ,GACV/gpB,KAAK4jQ,OACZ5jQ,KAAK4jQ,OAAO1yO,OAAO6vnB,GAInB/gpB,KAAKq8W,OAAOykS,aAAaC,GAIjCE,WACI,OAAIjhpB,KAAKq8W,OACEr8W,KAAKq8W,OAAO4kS,WAGhBjhpB,KAGXkhpB,YACI,OAAIlhpB,KAAKq8W,OACEr8W,KAAKq8W,OAAO6kS,YAGhBlhpB,KAGXmhpB,YAAYJ,GACR,MAAM9vf,EAAS8vf,EAAYhioB,QAAQkyI,QAAU,EACvCowf,EAAUrhpB,KAAK4jQ,OAAOplM,SACtBz4D,EAASs7oB,EAAQt7oB,OACvB,IAAI8iF,EAEJ,IAAKA,EAAM,EAAGA,EAAM9iF,KAGZu7oB,GAFUD,EAAQx4jB,GACY9pE,QAAQkyI,OAAQ,GACvCA,GAHapoE,KAQ5B7oF,KAAK4jQ,OAAOplL,OAAOqK,EAAKk4jB,GAG5BQ,SAAS1xoB,GACL,MAAM2uD,EAAWx+D,KAAKw+D,SAChBz4D,EAASy4D,EAASz4D,OAExB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,IAAI8vD,EAAQD,EAAS7vD,GAErBkB,EAAS4uD,GACLA,EAAM8ilB,UACN9ilB,EAAM8ilB,SAAS1xoB,IAK3BwwC,QAAQ9+B,GACJ,IAAI7M,EAAU1U,KACVwhpB,GAAU,EAEd,KAAO9soB,IAAY8soB,GACfA,EAAUjgoB,EAAM7M,GAEX8soB,IACD9soB,EAAUA,EAAQ2nW,QAI1B,GAAImlS,EACA,OAAO9soB,EAIfmsoB,kBAEAY,eACI,MAAM1ioB,GAAW/e,KAAK+e,SAAW,IAAIwrX,UACrC,SAAUvqY,KAAK0hpB,iBAAoB3ioB,IAA+B,IAApBA,EAAQk1T,SAG1DujE,gBAAgBhqY,EAAMpD,GAClB,MAAM2U,GAAW/e,KAAK+e,SAAW,IAAIwrX,WAAa,GAC5Co3Q,EAAe5ioB,EAAQ6kP,OAC7B,IAAI2mI,EAAYvqY,KAAK4hpB,WAErB,IAAKr3Q,EAAW,CACZ,MAAMs3Q,GAAmB,CACrBnzoB,KAAM,CACF6wI,MAAOg6f,GACPnvoB,QAASA,GAAW,IAExBy3I,OAAQ,CACJtC,MAAOg6f,GACP7ioB,MAAO,EACPtM,QAASA,GAAW,KAI5B,GAAIu3oB,GAeA,GAdAp3Q,EAAYvqY,KAAK4hpB,WAAaD,EAC1B97oB,OAAOw0D,OAAOr6D,KAAK8hpB,sBAAuB,CACtC7jU,aAAc,IAAMj+U,KAAK0hpB,gBAAgBG,IACzC/oT,OAAQ94V,KAAKogpB,YACbj/Y,OAAQnhQ,KAAKmhQ,OACb7rM,SAAUt1D,KAAKs1D,SACf8rM,SAAUphQ,KAAKohQ,SACfz9P,MAAO3D,KAAK2D,MACZ8hV,WAAYzlV,KAAKylV,WACjBwpD,aAAcjvY,KAAKivY,aACnBxgY,MAAOzO,KAAKyO,UAIf87X,EACD,YAGJA,EAAYvqY,KAAK4hpB,WAAa5hpB,KAAK0hpB,gBAAgBG,IAGlDj3C,GAAQrgO,EAAUxrX,QAAQkyI,UAC3Bs5O,EAAUxrX,QAAQkyI,OAASoqf,GAAet8nB,EAAQkyI,OAAQjxJ,KAAK+e,QAAQkyI,SAG3EjxJ,KAAK8gpB,aAAav2Q,GAGtBA,EAAUt2D,QAAQzmU,GAGtBu0oB,sBAAsBrtoB,EAASqK,EAASijoB,GACpC,MAAM74Q,EAAU,IAAI9sP,KAAUx2I,OAAOw0D,OAAO,CACxCwnF,OAAQ,CACJtC,MAAO,QAEX7wI,KAAM1O,KAAKiipB,eAAeD,GAC1BhlX,OAAQtoR,EAAQqK,QAAQi+Q,QACzBj+Q,IAEHoqX,SAAQhtQ,SAAStzD,SAASn0D,EAAQynH,SAAStzD,YAEpCsgU,EAGX84Q,eAAeljoB,GACX,GAAI/e,KAAKq8W,OACL,OAAOr8W,KAAKq8W,OAAO4lS,eAAeljoB,GAI1CmjoB,+BACI,OAAO,GAIfC,GAAa9hoB,UAAUtB,QAAU,GAEjC,SAAeojoB,GCpSf,iBAAyBA,GACrBripB,YAAYif,GACRS,MAAMT,GAEN/e,KAAK+e,QAAQwvB,OAAS6umB,GAAWp9oB,KAAK+e,QAAQwvB,QAC9CvuC,KAAK+e,QAAQymI,QAAU43f,GAAWp9oB,KAAK+e,QAAQymI,SAGnD06f,OAAOpD,GACH,MAAM/9nB,EAAU/e,KAAK+e,SACbrI,QAAOnM,SAAQ63oB,eAAgBrjoB,EACjCsjoB,GAAa3roB,GAASnM,EACtBgkC,GAASxvB,EAAQwvB,OACjBi3G,GAAUzmI,EAAQymI,QAClB88f,GAAcvjoB,EAAQi+H,OAAOtmI,MACnC,IAAIulH,GAEJ,MAAMsmhB,GAAmB,KACrBvipB,KAAKm9D,MAAM2/kB,EAAW/0oB,GAAGgX,EAAQo+C,OACjCn9D,KAAKm9D,MAAM2/kB,EAAWh3oB,GAAGiZ,EAAQyjoB,QACjCxipB,KAAKyipB,WAAaxmhB,GAAIzM,QAAQ6thB,MAAM9umB,IAAQ8umB,MAAMiF,KAGtD,IAAII,GAAa5F,EAAUtthB,QACvB6yhB,KACAK,GAAWjtkB,GAAKitkB,GAAWvtkB,GAAKz+D,EAChCgsoB,GAAW7F,GAAK6F,GAAW7tkB,GAAKtqE,GAGhC63oB,GACAM,GAAWrF,MAAM9umB,IAAQ8umB,MAAMiF,IAAajF,MAAM73f,IAGtDhmI,MAAM0goB,OAAOwC,IAGTzmhB,GADAomhB,GACMripB,KAAKi8H,IAAM,IAAIghhB,GAAI,EAAG,EAAGvmoB,EAAOnM,GAEhCvK,KAAKi8H,IAGf0mhB,GAAmBN,IACfE,KACAG,GAAa1ipB,KAAK0ipB,WAAa1ipB,KAAKyipB,WAAWjzhB,QAAQ6thB,MAAM73f,MAE7Dk9f,GAAa1ipB,KAAK0ipB,WAAazmhB,GAAIzM,QACnCyM,GAAI/wB,IAAIs6C,IAASt6C,IAAIo3iB,IAAap3iB,IAAI38D,IACtCg0mB,MAGJvipB,KAAKugpB,kBACDtkhB,GAAI9mD,GAAKutkB,GAAWvtkB,GAAK5mC,GAAO6gC,KAAOkzkB,GAAc98f,GAAQp2E,KAC7D6sD,GAAIpnD,GAAK6tkB,GAAW7tkB,GAAKtmC,GAAO4/E,IAAMm0hB,GAAc98f,GAAQr3B,KAGhE,MAAM3vD,GAAWx+D,KAAKw+D,SACtB,QAAS7vD,GAAI,EAAGA,GAAI6vD,GAASz4D,OAAQ4I,KAAK,CACtC,IAAIqE,GAAOwrD,GAAS7vD,IACpBqE,GAAKktoB,OAAOltoB,GAAKipH,MAIzB9+D,MAAM2/kB,EAAW32Q,EAAMw3Q,GACnB39oB,KAAKi8H,IAAI9+D,MAAM2/kB,EAAW32Q,EAAMw3Q,GAGpCiF,SACI,MAAM7joB,EAAU/e,KAAK+e,QACrB,OAAOA,EAAQi+H,OAAOtmI,OAASqI,EAAQinU,WAG3C/H,eACIz+T,MAAMy+T,eAGFl/T,KADiBA,QACTk1T,SAAWj0U,KAAK4ipB,UACxB5ipB,KAAK4jQ,OAAO1yO,OAAOmrH,cACfr8I,KAAKyipB,WAAWhF,SAChBz9oB,KAAK6ipB,gBAKjBA,cACI,MAAM9joB,EAAU/e,KAAK+e,QACfi+H,EAASj+H,EAAQi+H,QAAU,GAEjC,MAAO,CACH6E,OAAQ,CACJnrI,MAAOsmI,EAAOtmI,MACd6oI,MAAOvC,EAAOuC,MACdn1I,QAASixoB,GAAer+f,EAAO5yI,QAAS2U,EAAQ3U,SAChD43P,SAAUhlH,EAAOglH,UAErBtzP,KAAM,CACF6wI,MAAOxgI,EAAQinU,WACf57U,QAAS2U,EAAQ3U,SAErBkzY,OAAQv+X,EAAQu+X,SAK5BwlQ,GAAkBC,GAAY,CAC1B5llB,MAAOk2iB,GACPmvC,OAAQnJ,GACR9qmB,OAAQ,GACRi3G,QAAS,GACTxI,OAAQ,CACJuC,MAAOg5f,EACP7hoB,MAAO,GAEXsvU,WAAY,GACZo8T,aAAa,EACb1roB,MAAO,EACPnM,OAAQ,EACR0pU,SAAS,IAGb,SAAe8uU,GCzHf,iBAA2BA,GAEvBjjpB,YAAYif,EAASikoB,GACjBxjoB,MAAMT,GAEN/e,KAAKgjpB,UAAYA,EAGrB3ob,aACI,MAAQt7M,UAAS0joB,WAAYxmhB,GAAQj8H,MAC7B8H,OAAMm0J,YAAal9I,EACrBswD,EAAS4sD,EAAI5sD,SACb4zkB,GAAYhnhB,EAAIvlH,QAAU,EAC1BwsoB,GAAajnhB,EAAI1xH,SAAW,EAElC,IAAKwU,EAAQk1T,UAAYj0U,KAAK4ipB,SAC1B,OAAO,KAGX,MAAMz4oB,GAAQnK,KAAK6ipB,cACnB,IAAInuoB,GAEJ,GAAI5M,IAAS4woB,EACThkoB,GAAU,IAAI2nI,KACV,IAAI/oE,KAAY,CACZwtB,GAAMm7B,EAAI9mD,GAAK8tkB,G9CzBJ,G8C0BXnijB,GAAMm7B,EAAIpnD,GAAKqukB,G9C1BJ,I8C2BZh2oB,KAAKulC,IAAIwwmB,GAAWC,KACvB/4oB,Y9CFQ,a8CILrC,EACP4M,GAAU2nI,gBAAqB,CAC3B,CAAEpgB,EAAI9mD,GAAK8tkB,GAAWhnhB,EAAIpnD,IAC1B,CAAEonD,EAAI9mD,GAAI8mD,EAAI4ghB,IACd,CAAE5ghB,EAAIxmD,GAAIwmD,EAAI4ghB,KACf1yoB,IAAO6gB,gBACHljB,IAAS6woB,EAChBjkoB,GAAU,IAAI2nI,KAAelyI,IAE7BuK,GAAQ+sO,OAAOxlH,EAAI9mD,GAAI8mD,EAAIpnD,IAAI6sK,OAAOzlH,EAAIxmD,GAAIwmD,EAAI4ghB,IAClDnooB,GAAQ+sO,OAAOxlH,EAAI9mD,GAAI8mD,EAAI4ghB,IAAIn7Z,OAAOzlH,EAAIxmD,GAAIwmD,EAAIpnD,QAC/C,CACH,MAAMqpQ,GAAOjiN,EAAIwhhB,SACjB,GAAI31oB,IAASsxoB,GAAc,CACvB,MAAM+J,GAAe9H,GAAet8nB,EAAQokoB,aAAcjlU,GAAKxnU,QAAU,GACzEwnU,GAAKklU,gBAAgBD,IAGzBzuoB,GAAU2nI,cAAmB6hM,GAAM/zU,IAGvC,OAAI8xJ,GACAvnJ,GAAQrK,UAAUipE,OACbw9C,QAAQmrC,EAAU,CAAE5sF,EAAO1lE,EAAG0lE,EAAOvb,KAI9Cp/C,GAAQqK,QAAQkyI,OAASlyI,EAAQkyI,OAE1Bv8I,GAGXgc,gBACI,MAAMixnB,EAAe3hpB,KAAK+e,QAAQ6kP,OAC5Bo/Y,EAAYhjpB,KAAKgjpB,WAAa,GACpC,IAAIp/Y,EAEJ,OACIA,EADA+9Y,EACSA,EAAa,CAClBh+oB,MAAOq/oB,EAAUr/oB,MACjB2xD,SAAU0tlB,EAAU1tlB,SACpBwjS,OAAQ94V,KAAKogpB,YACbj/Y,OAAQ6hZ,EAAU7hZ,OAClBC,SAAU4hZ,EAAU5hZ,SACpB88E,KAAMl+U,KAAKyipB,WAAWhF,SACtB1+nB,QAAS/e,KAAKqjpB,gBACdplU,aAAc,IAAMj+U,KAAKq6N,eAGpBr6N,KAAKq6N,aAGXupC,EAGXy/Y,gBACI,MAAMtkoB,EAAU/e,KAAK+e,QACrB,MAAO,CACHinU,WAAYjnU,EAAQinU,WACpBhpM,OAAQj+H,EAAQi+H,OAChBzuG,OAAQxvB,EAAQwvB,OAChBi3G,QAASzmI,EAAQymI,QACjB19I,KAAMiX,EAAQjX,KACdknD,KAAMjwC,EAAQrI,MACdu9T,QAASl1T,EAAQk1T,SAIzBgK,eACIj+U,KAAK4jQ,OAAS5jQ,KAAK0wB,iBAI3BoynB,GAAkBQ,GAAc,CAC5Bx7oB,KAAM4woB,EACNv7kB,MAAOs7kB,EACP+J,OAAQ/J,IAGZ,SAAe6K,+BCjHf,MACMC,GAAS,SAyGfzrlB,GAvGkB,CACd0rlB,MAAO,CACH17oB,KALO,SAMPm0J,SAAU,EACVwnf,MAAO,CAAE,CACLrxnB,OAAQ,EACRmtH,MAAOg6f,GACPnvoB,QAAS,GACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,IACV,CACCgoB,OAAQ,EACRmtH,MAAOg6f,GACPnvoB,QAAS,KAGjBs5oB,WAAY,CACR57oB,KAAMy7oB,GACNE,MAAO,CAAE,CACLrxnB,OAAQ,EACRmtH,MAAOg6f,GACPnvoB,QAAS,KACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,GACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,OAGjBu5oB,aAAc,CACV77oB,KAAMy7oB,GACNE,MAAO,CAAE,CACLrxnB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,KACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,IACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,KAGjBw5oB,aAAc,CACV97oB,KAAMy7oB,GACNM,YAAY,EACZJ,MAAO,CAAE,CACLrxnB,OAAQ,EACRmtH,MAAOg6f,GACPnvoB,QAAS,GACV,CACCgoB,OAAQ,GACRmtH,MAAOg6f,GACPnvoB,QAAS,IACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,KAGjB05oB,WAAY,CACRh8oB,KAAMy7oB,GACNM,YAAY,EACZJ,MAAO,CAAE,CACLrxnB,OAAQ,EACRmtH,MAAOg6f,GACPnvoB,QAAS,IACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,KACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,KACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,KACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,KACV,CACCgoB,OAAQ,IACRmtH,MAAOg6f,GACPnvoB,QAAS,KAGjB25oB,aAAc,CACVj8oB,KAAMy7oB,GACNl0kB,OAAQ,CAAE,GAAK,IACfojB,OAAQ,KCrGD,YAAiB5hC,GAAGhqD,GAC/B,GAAIgqD,GAAEskB,KAAOtuE,EAAEsuE,IAAMtkB,GAAEgkB,KAAOhuE,EAAEguE,IAAMhkB,GAAE4kB,KAAO5uE,EAAE4uE,IAAM5kB,GAAEgslB,KAAOh2oB,EAAEg2oB,GAC9D,OAAOh2oB,EAGX,MAAMsrB,EAAIjlB,KAAKulC,IAAIoe,GAAEskB,GAAItuE,EAAEsuE,IACrBjjD,EAAIhlB,KAAKsB,IAAIqiD,GAAEskB,GAAItuE,EAAEsuE,IACrBl1D,EAAI/S,KAAKulC,IAAIoe,GAAE4kB,GAAI5uE,EAAE4uE,IACrBjqE,EAAI0B,KAAKsB,IAAIqiD,GAAE4kB,GAAI5uE,EAAE4uE,IACrBxsE,GAAIiE,KAAKulC,IAAIoe,GAAEgkB,GAAIhuE,EAAEguE,IACrBjvE,GAAIsH,KAAKsB,IAAIqiD,GAAEgkB,GAAIhuE,EAAEguE,IACrBrlB,GAAItiD,KAAKulC,IAAIoe,GAAEgslB,GAAIh2oB,EAAEg2oB,IACrBplb,GAAIvqN,KAAKsB,IAAIqiD,GAAEgslB,GAAIh2oB,EAAEg2oB,IACrBr7e,GAAQ,GAadA,UAAM,GAAK,IAAIy7e,GAAI/qnB,EAAGjpB,GAAGgX,EAAGra,IAC5B47J,GAAM,GAAK,IAAIy7e,GAAI9qnB,EAAGvsB,GAAGssB,EAAGs9B,IAC5BgyG,GAAM,GAAK,IAAIy7e,GAAIh9nB,EAAGra,GAAG4F,EAAGgkD,IAC5BgyG,GAAM,GAAK,IAAIy7e,GAAI/qnB,EAAGs9B,GAAGvvC,EAAGw3M,IAGxB5mK,GAAEskB,KAAOhjD,GAAK0+B,GAAEgkB,KAAO5rE,IAAKpC,EAAEsuE,KAAOhjD,GAAKtrB,EAAEguE,KAAO5rE,IACnDu4J,GAAM,GAAK,IAAIy7e,GAAI9qnB,EAAGlpB,GAAGipB,EAAGtsB,IAC5B47J,GAAM,GAAK,IAAIy7e,GAAIh9nB,EAAGuvC,GAAGhkD,EAAGisN,MAE5Bj2D,GAAM,GAAK,IAAIy7e,GAAIh9nB,EAAGhX,GAAGuC,EAAG5F,IAC5B47J,GAAM,GAAK,IAAIy7e,GAAI9qnB,EAAGq9B,GAAGt9B,EAAGulM,KAGzBusb,GAAKxif,GAAO,SAASvlC,IACxB,OAAOA,GAAI1xH,SAAW,GAAK0xH,GAAIvlH,QAAU,IAC1C,GClCP,iBAA0ByroB,GACtBripB,YAAYif,GACRS,MAAMT,GAEN,MAAMkloB,EAAcjkpB,KAAK+e,QACzBkloB,EAAYvtoB,MAAQ9S,SAASqgpB,EAAYvtoB,MAAO,IAChDutoB,EAAY15oB,OAAS3G,SAASqgpB,EAAY15oB,OAAQ,IAElDvK,KAAKkkpB,UAAY,GAGrBhE,SACI,MAAQnhoB,UAASy/C,YAAax+D,KAC9B,IAAImkpB,EAAa,IAAIlH,GAAI,EAAG,EAAGl+nB,EAAQrI,MAAOqI,EAAQxU,QAEtDvK,KAAKi8H,IAAMkohB,EAAW9G,MAAMt+nB,EAAQwvB,QAEpC,QAAS5/B,EAAI,EAAGA,EAAI6vD,EAASz4D,OAAQ4I,IACjC6vD,EAAS7vD,GAAGuxoB,OAAOiE,GACnBA,EAAaC,GAAQD,EAAY3llB,EAAS7vD,GAAGstH,MAAQ,IAAIghhB,GAIjEh/T,eACIj+U,KAAK4jQ,OAAS,IAAIvnH,KAClBr8I,KAAKqkpB,mBAGTA,mBACI,MAAMtloB,EAAU/e,KAAK+e,QACfi+H,EAASj+H,EAAQi+H,QAAU,GAC3B/gB,EAAMj8H,KAAKi8H,IAAIzM,QAAQtkB,IAAInsF,EAAQwvB,QAAQ8umB,MAAMrggB,EAAOtmI,OAExDsvU,EAAa3pM,cAAmBpgB,EAAIwhhB,SAAU,CAChD57f,OAAQ,CACJtC,MAAOvC,EAAOtmI,MAAQsmI,EAAOuC,MAAQ,GACrC7oI,MAAOsmI,EAAOtmI,MACdsrP,SAAUhlH,EAAOglH,UAErBtzP,KAAM,CACF6wI,MAAOxgI,EAAQinU,WACf57U,QAAS2U,EAAQ3U,SAErB6mJ,QAAQ,KAGZjxJ,KAAK4jQ,OAAO1yO,OAAO80T,GAGvB4+B,UACI,OAAO5kX,KAGXiipB,eAAeljoB,GACX,MAAMmloB,EAAYlkpB,KAAKkkpB,UACjBI,EAAWpJ,GAAUn8nB,GACrBguX,EAAWw3Q,GAAUxloB,EAAQguX,UACnC,IAAIy3Q,EAEJ,GAAIN,EAAUI,GACVE,EAAkBN,EAAUI,OACzB,CACH,MAAMtC,GAAkBn8oB,OAAOw0D,OAAO,GAAI0yU,EAAUhuX,GAC9B,WAAlBguX,EAASjlY,KACT08oB,EAAkB,IAAInogB,KAAoB2lgB,KAEtCjjoB,EAAQm6X,cACR8oQ,GAAgByB,MAoCpC,YAA0B1koB,IACtB,MAAM0koB,EAAQ1koB,GAAQ0koB,MAChBlhF,EAAcxjjB,GAAQm6X,YAAcn6X,GAAQ0zE,OAAU,IACtD1sF,EAAS09oB,EAAM19oB,OACf0+oB,EAAe,GAErB,QAAS91oB,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,IAAI+1oB,GAAc7+oB,OAAOw0D,OAAO,GAAIoplB,EAAM90oB,IAC1C+1oB,GAAYtynB,QAAUsynB,GAAYtynB,QAAU,IAAMmwiB,GAAaA,GAAa,IAC5EkiF,EAAah/oB,KAAKi/oB,IAGtB,OAAOD,EAhDiCE,CAAiB3C,KAE7CwC,EAAkB,IAAInogB,KAAoB2lgB,IAC1CwC,EAAgBX,YAAqC,IAAxB92Q,EAAS82Q,YAE1CK,EAAUI,GAAYE,EAG1B,OAAOA,EAGXI,iBACI,MAAMV,EAAYlkpB,KAAKkkpB,UACvB,QAASI,KAAYJ,EACjBA,EAAUI,GAAUO,WAAa,GAIzC71lB,OACI,MAAMjwC,EAAU/e,KAAK+e,QACrB,OAAO,IAAIk+nB,GAAI,EAAG,EAAGl+nB,EAAQrI,MAAOqI,EAAQxU,SAIpDu4oB,GAAkBgC,GAAa,CAC3BpuoB,MjD3FyB,IiD4FzBnM,OjD9F0B,IiD+F1By7U,WAAYuzT,GACZv8f,OAAQ,CACJuC,MAAOg5f,EACP7hoB,MAAO,GAEX63B,OAAQ6umB,GAAW,GACnBnsf,QAAQ,IAkBZ,SAAe6zf,GC3Hf,iBAA2B3C,GACvBripB,YAAYif,GACRS,MAAMT,GACN/e,KAAK+kpB,iBAGTA,iBACI,MAAMhmoB,EAAU/e,KAAK+e,QACjBA,EAAQ/S,UACRhM,KAAKglpB,UAAYj9oB,GACjB/H,KAAKilpB,YAAcn/oB,GACnB9F,KAAKklpB,eAAiB1L,GACtBx5oB,KAAKmlpB,iBAAmBrM,EACxB94oB,KAAKolpB,aAAermoB,EAAQyqX,QAC5BxpY,KAAKqlpB,eAAiBtmoB,EAAQumoB,WAE9BtlpB,KAAKglpB,UAAYl/oB,GACjB9F,KAAKilpB,YAAcl9oB,GACnB/H,KAAKklpB,eAAiBpM,EACtB94oB,KAAKmlpB,iBAAmB3L,GACxBx5oB,KAAKolpB,aAAermoB,EAAQumoB,SAC5BtlpB,KAAKqlpB,eAAiBtmoB,EAAQyqX,SAItC02Q,OAAOpD,GACH98oB,KAAKi8H,IAAM6ghB,EAAUtthB,QACrBxvH,KAAKulpB,iBAGTA,iBACI,MAAQtphB,MAAKgphB,cAAaD,YAAWG,mBAAkBD,kBAAmBllpB,MAClEwxD,UAAQg0lB,cAAYC,yBAAyBzlpB,KAAK0lpB,eACpDC,GAAcn0lB,GAAOzrD,OACrB6/oB,GAAc3phB,EAAI+ohB,EAAY,GAAKhlpB,KAAK6lpB,WAAWL,GAAYvphB,EAAIiphB,MAEzE,GAAIS,GAAa,CACb,IAAIG,GAAaF,GAEjB,QAASG,GAAW,EAAGA,GAAWJ,GAAaI,KAAY,CACvD,IAAIr9mB,GAAQ8oB,GAAOu0lB,IACfC,GAAgBt9mB,GAAMs9mB,cACtBC,GAAehqhB,EAAIgphB,EAAc,GACjCiB,GAAqBF,GAAcjgpB,OAEvC,QAASokC,GAAM,EAAGA,GAAM+7mB,GAAoB/7mB,KAAO,CAC/C,IAAIz1B,GAAUsxoB,GAAc77mB,IACxBg4hB,GAAcnikB,KAAKmikB,YAAYztjB,IAC/ByxoB,GAAoBL,GAAa9lpB,KAAK6lpB,WAAW1jF,GAAY+iF,GAAiBx8mB,GAAM2ijB,WAEpF+6D,GAAa,IAAInJ,GACrBmJ,GAAWpB,EAAY,GAAKmB,GAC5BC,GAAWpB,EAAY,GAAKmB,GAAoBhkF,GAAY+iF,GAC5DkB,GAAWnB,EAAc,GAAKgB,GAC9BG,GAAWnB,EAAc,GAAKgB,GAAe9jF,GAAYgjF,GAEzDzwoB,GAAQwroB,OAAOkG,IAEfH,IAAgB9jF,GAAYgjF,GAAoBnlpB,KAAKqlpB,eAEzDS,IAAcp9mB,GAAM2ijB,UAAYrrlB,KAAKolpB,aAEzCnphB,EAAI+ohB,EAAY,GAAKY,GACrB3phB,EAAI+ohB,EAAY,GAAKY,GAAcJ,GACnCvphB,EAAIgphB,EAAc,GAAKhphB,EAAIgphB,EAAc,GAAKQ,IAItDI,WAAW72lB,EAAMw5U,GACb,IAAIx7W,EAAQ,EACZ,MAAMmwC,EAAQn9D,KAAK+e,QAAQo+C,MAC3B,OAAIA,IAAUm2iB,IAASn2iB,IAAUq7kB,EAC7BxrnB,EAAQw7W,EAAUx5U,EACXmO,IAAUs7kB,IACjBzrnB,GAASw7W,EAAUx5U,GAAQ,GAExBhiC,EAGX04nB,eACI,MAAQzphB,MAAKz9D,WAAU2mlB,mBAAkBD,iBAAgBG,iBAAgBD,iBAAiBplpB,KACpFwoY,GAAU1nS,GAAMm7B,EAAIkphB,MACpB3E,GAAgBhilB,EAASz4D,OACzByrD,GAAS,GAEf,IAAI65hB,GAAY,EACZg7D,GAAoB,EACpBb,GAAa,EACbC,GAAuB,EACvBO,GAAgB,GAEpB,QAAS77mB,GAAM,EAAGA,GAAMq2mB,GAAer2mB,KAAO,CAC1C,IAAIz1B,GAAU8pD,EAASr0B,IAClBz1B,GAAQunH,KACTvnH,GAAQwroB,OAAOjkhB,GAGnB,IAAIkmc,GAAcnikB,KAAKmikB,YAAYztjB,IAC/B1U,KAAK+e,QAAQu7C,MAAQwmC,GAAMuljB,GAAoBhB,EAAiBljF,GAAYgjF,IAAqB38Q,KACjGh3U,GAAO/rD,KAAK,CACRugpB,cAAeA,GACf36D,UAAWA,GACXg7D,kBAAmBA,KAEvBZ,GAAuBv4oB,KAAKsB,IAAIi3oB,GAAsBY,IACtDb,IAAcJ,GAAe/5D,GAC7BA,GAAY,EACZg7D,GAAoB,EACpBL,GAAgB,IAEpB36D,GAAYn+kB,KAAKsB,IAAI68kB,GAAWlpB,GAAY+iF,IACxCmB,GAAoB,IACpBA,IAAqBhB,GAEzBgB,IAAqBlkF,GAAYgjF,GACjCa,GAAcvgpB,KAAKiP,IAGvB88C,UAAO/rD,KAAK,CACRugpB,cAAeA,GACf36D,UAAWA,GACXg7D,kBAAmBA,KAEvBZ,GAAuBv4oB,KAAKsB,IAAIi3oB,GAAsBY,IACtDb,IAAcn6D,GAEP,CACH75hB,OAAQA,GACRg0lB,WAAYA,GACZC,qBAAsBA,IAI9BtjF,YAAYztjB,GACR,MAAO,CACHgC,MAAOhC,EAAQunH,IAAIvlH,QACnBnM,OAAQmK,EAAQunH,IAAI1xH,UAI5B0zU,iBAGJ6kU,GAAkBwD,GAAc,CAC5Bt6oB,UAAU,EACVsuD,MAAM,EACNgrlB,SAAU,EACV97Q,QAAS,IAGb,SAAe88Q,mBCpJf,MAAMC,GAAclqgB,KAEpB,iBAAmB8lgB,GAEfripB,YAAY8e,EAASG,GACjBS,MAAMT,GAEN/e,KAAK4e,QAAUA,EAGf5e,KAAKkgpB,OAAO,IAAIjD,IAGpBiD,OAAOpD,GACH,MAAM/9nB,EAAU/e,KAAK+e,QACfiwC,EAAOjwC,EAAQiwC,KAAOqtF,KAAsBr8I,KAAK4e,QAAS,CAAEymI,KAAMtmI,EAAQsmI,OAEhFrlJ,KAAKwmpB,SAAWx3lB,EAAKw3lB,SAErBxmpB,KAAKi8H,IAAM,IAAIghhB,GAAIH,EAAU3nkB,GAAI2nkB,EAAUjokB,GACnCiokB,EAAU3nkB,GAAKnmB,EAAKt4C,MAAOomoB,EAAUjokB,GAAK7lB,EAAKzkD,QAG3D0zU,eACI,MAAQ54L,OAAM9F,QAAOn1I,UAASkzY,UAAWt9Y,KAAK+e,QAE9C/e,KAAK4jQ,OAAS,IAAI2iZ,GAAYvmpB,KAAK4e,QAAS5e,KAAKi8H,IAAIwhhB,SAASn/I,UAAW,CACrEj5W,KAAMA,EACN32I,KAAM,CAAE6wI,MAAOA,EAAOn1I,QAASA,GAC/BkzY,OAAQA,KAKpBwlQ,GAAkBh6nB,GAAM,CACpBu8H,KAAMuzf,EACNr5f,MAAOg5f,IAGX,SAAezvnB,GC7CA,YAAmBo1T,IAC9B,MAAM75S,EAAS65S,GAAK75S,OACdk6d,EAAcrgL,GAAKqgL,cAEzB,OAAO,IAAI0+I,GAAI54mB,EAAO16B,EAAG06B,EAAOyvB,EAAGyqc,EAAY50f,EAAG40f,EAAYzqc,GCMlE,MAAM2ylB,GAAmB,MA2JzBx7hB,GAzJA,iBAAsB83hB,GAElBjjpB,YAAY8e,EAASG,EAASjM,GAC1B0M,MAAMT,GACN/e,KAAK4e,QAAUA,EACf5e,KAAK8S,KAAOA,EAEZ9S,KAAK0mpB,kBAC4B,IAA7B1mpB,KAAK+e,QAAQ4noB,aACb3mpB,KAAKkgpB,OAAO,IAAIjD,IAIxByJ,iBACI,MAAM3noB,EAAU/e,KAAK+e,QACfjT,EAAOknB,OAAOhzB,KAAK4e,SAAS5H,MAAMyvoB,IAClCG,EAAe,IAAIN,GAAa,CAAEt6oB,UAAU,EAAMmxD,MAAOp+C,EAAQo+C,MAAO7C,MAAM,IAC9EuslB,EAAcpM,GAAW,GAAK17nB,EAAS,CAAE3U,QAAS,EAAG+6T,UAAW,OAEtEnlU,KAAKy9J,UAAYmpf,EACjB5mpB,KAAKkxB,OAAO01nB,GAEZ,QAASpxF,EAAS,EAAGA,EAAS1pjB,EAAK/F,OAAQyvjB,IAAU,CACjD,IAAI1qjB,GAAO,IAAIge,GAAKhd,EAAK0pjB,GAAQ9whB,OAAQminB,GACzCD,EAAa11nB,OAAOpmB,KAI5Bo1oB,OAAOpD,GACH,MAAM/9nB,EAAU/e,KAAK+e,QACf+noB,EAAW/noB,EAAQ6kP,OAGzB,GAFA5jQ,KAAKy9J,UAAU1+I,QAAQo+C,MAAQp+C,EAAQo+C,MAEnC2plB,IAAa9mpB,KAAK+mpB,WAAY,CAC9B,IAAIC,EAAYlK,EACXkK,EAAUtJ,YACX19oB,KAAK+mpB,YAAa,EAClB/mpB,KAAKkgpB,OAAO8G,GACZhnpB,KAAK+mpB,YAAa,EAClBC,EAAYhnpB,KAAKi8H,KAErB,MAAM2nI,EAAS5jQ,KAAK4jQ,OAASkjZ,EAAS9mpB,KAAKinpB,cAAcD,IAErDpjZ,IACAojZ,EAAYE,GAAUtjZ,EAAOujZ,eAAiB,IAAI7zkB,MAElDswL,EAAO7kP,QAAQkyI,OAASlyI,EAAQkyI,QAGpCjxJ,KAAKi8H,IAAMj8H,KAAK0ipB,WAAa1ipB,KAAKyipB,WAAauE,UAE/CxnoB,MAAM0goB,OAAOpD,GAET/9nB,EAAQk9I,SAAU,CAClB,MAAM1tH,EAAS6umB,GAAWr+nB,EAAQwvB,QAClC,IAAI0tF,EAAMj8H,KAAKi8H,IAAIohhB,MAAM9umB,GAEzBvuC,KAAK88oB,UAAYA,EACjB98oB,KAAKonpB,UAAYnrhB,EAAIzM,QAErByM,EAAMj8H,KAAK8wH,SACXmL,EAAIzjF,UAAUjK,EAAO6gC,KAAO7gC,EAAO+gC,MAAO/gC,EAAO4/E,IAAM5/E,EAAOm7R,QAE9D1pU,KAAKqnpB,WAAaprhB,EAAIzM,QAEtByM,EAAI/wB,IAAI38D,IAKpB0vS,eACI,MAAMl/T,EAAU/e,KAAK+e,QAQrB,GANA/e,KAAK4jQ,OAAS,IAAIvnH,KAAW,CACzBhyI,UAAWrK,KAAKsnpB,oBAChBr2f,OAAQlyI,EAAQkyI,OAChB+vf,OAAQjioB,EAAQiioB,SAGhBhhpB,KAAK4ipB,SAAU,CACf,MAAM3mhB,EAAMogB,cAAmBr8I,KAAKyipB,WAAWhF,SAAUz9oB,KAAK6ipB,eAC9D7ipB,KAAK4jQ,OAAO1yO,OAAO+qG,IAI3BwkhB,eACI,GAAKzgpB,KAAK+e,QAAQk1T,QAIlB,GAAIj0U,KAAK+e,QAAQ6kP,OAAQ,CACrB,MAAMA,EAAS5jQ,KAAK4jQ,OAChBA,IAAWgnW,GAAQhnW,EAAO7kP,QAAQiioB,UAClCp9Y,EAAO7kP,QAAQiioB,OAAShhpB,KAAK+e,QAAQiioB,QAEzChhpB,KAAK0gpB,YACL1gpB,KAAK4gpB,uBAELphoB,MAAMihoB,eAIdwG,cAAcnK,GACV,MAAM15kB,EAAU,CACZt4D,KAAM9K,KAAK4e,QACXs/T,KAAM4+T,EAAUW,SAChB3kT,OAAQ94V,KAAKogpB,YACbrhoB,QAAS/e,KAAK+e,QACdk/T,aAAc,KACVj+U,KAAK+mpB,YAAa,EAClB/mpB,KAAKkgpB,OAAOpD,GACZ98oB,KAAK+mpB,YAAa,EACX/mpB,KAAKunpB,qBAGpB,OAAIvnpB,KAAK8S,MACLjN,OAAOw0D,OAAO+I,EAASpjE,KAAK8S,MAGzBswD,EAGXmklB,mBACIvnpB,KAAKi+U,eACLj+U,KAAK2gpB,iBACL,MAAM/8Y,EAAS5jQ,KAAK4jQ,OACpB,cAAO5jQ,KAAK4jQ,OACLA,EAGX9yI,SACI,MAAM/xG,EAAU/e,KAAK+e,QACrB,YAAKk9G,IAAInL,OAAO/xG,EAAQk9I,UACxBj8J,KAAKm9D,MAAMn9D,KAAK88oB,UAAW/0oB,GAAGgX,EAAQo+C,OACtCn9D,KAAKm9D,MAAMn9D,KAAK88oB,UAAWh3oB,GAAGiZ,EAAQyjoB,QAC/BxipB,KAAKi8H,IAGhBqrhB,oBACI,MAAMrrf,EAAWj8J,KAAK+e,QAAQk9I,SAC9B,IAAKA,EACD,OAAO,KAGX,MAAQtyJ,EAAGgzoB,EAAI7olB,EAAGm8N,GAAOjwR,KAAKonpB,UAAU/3kB,SAClCm4kB,EAAYxnpB,KAAKqnpB,WAAWh4kB,SAElC,OAAOiE,OACK96B,UAAUgvmB,EAAU79oB,EAAIgzoB,EAAI6K,EAAU1zlB,EAAIm8N,GAC1Cn/J,OAAOmrC,EAAU,CAAE0gf,EAAI1sX,MC7J3C,iBAAoBkyX,GAChBripB,YAAYif,GACRS,MAAMT,GAEN/e,KAAKkxB,OACD,IAAIu2nB,GAAQznpB,KAAK+e,QAAQjU,KAAMjF,OAAOw0D,OAAO,GAAIr6D,KAAK+e,QAAS,CAC3DyjoB,OAAQxipB,KAAK+e,QAAQmrB,aAKjCg2mB,OAAOpD,GACHt9nB,MAAM0goB,OAAOpD,GACb98oB,KAAKi8H,IAAItB,OAAOmihB,EAAW/0oB,sBAGbgX,EAASs9V,EAAQ6xK,GAC/B,IAQIthe,EARA86lB,EAAe3ooB,EASnB,MAPuB,iBAAZA,IACP2ooB,EAAe,CAAE58oB,KAAMiU,IAG3B2ooB,EAAe7hpB,OAAOw0D,OAAO,CAAE45Q,SAAS,GAAQi6M,EAAgBw5H,GAG5DA,GAAgBA,EAAazzU,SAAWyzU,EAAa58oB,OACrD8hD,EAAQ,IAAIu1J,GAAMulc,GAClBrrS,EAAOnrV,OAAO07B,IAGXA,GAIfk2lB,GAAkB3gc,GAAO,CACrB5iE,MAAOg5f,EACPrumB,SAAUmvmB,GACVl8kB,MAAOs7kB,EACPlqmB,OAAQ6umB,GAAW,GACnB53f,QAAS43f,GAAW,KAGxB,SAAej7b,GCtCf,iBAAwBslc,GACpB3npB,YAAY6D,EAAOmH,EAAM8Y,EAAO0xC,EAAUv2C,GACtCS,MAAM1U,EAAMiU,GAEZ/e,KAAK8K,KAAOA,EACZ9K,KAAK2D,MAAQA,EACb3D,KAAK4jB,MAAQA,EACb5jB,KAAKs1D,SAAWA,EAChBt1D,KAAKkgpB,OAAO,IAAIjD,IAGpBgK,cAAcnK,GACV,MAAM15kB,EAAU5jD,MAAMynoB,cAAcnK,GAEpC15kB,SAAQz/D,MAAQ3D,KAAK2D,MACrBy/D,EAAQ9N,SAAWt1D,KAAKs1D,SACxB8N,EAAQhoD,OAASpb,KAAK+e,QAAQ3D,OAC9BgoD,EAAQ6pF,QAAUjtJ,KAAK+e,QAAQkuI,QAExB7pF,EAGXqI,MAAMk8kB,EAAQ1+oB,GAEV0+oB,EAAO19oB,QvDlCiB,iBuDkCS,CAC7ByK,QAASsmoB,GAAa/xoB,GACtBtF,MAAO3D,KAAK2D,MACZmH,KAAM9K,KAAK8K,KACX8Y,MAAO5jB,KAAK4jB,MACZ0xC,SAAUt1D,KAAKs1D,SACf6wU,KAAMnmY,KAAKq8W,OAAOt9V,UAI1B+xG,SACI,GAAI9wH,KAAK+e,QAAQ6ooB,gBAAkBnP,EAAQ,CACvC,MAAMx8gB,EAAMj8H,KAAKonpB,UAAU3J,SACrBpzoB,EAAYrK,KAAKsnpB,oBAEvBtnpB,KAAKi8H,IAAMirhB,GAAUjrhB,EAAIq0B,KAAKjmJ,EAAU06H,gBAExCvlH,MAAMsxG,SAGV,OAAO9wH,KAAKi8H,IAGhBqrhB,oBACI,MAAMvooB,EAAU/e,KAAK+e,QACfk9I,EAAWl9I,EAAQk9I,SACzB,IAAKA,EACD,OAAO,KAGX,GAAIl9I,EAAQ6ooB,gBAAkBnP,EAC1B,OAAOj5nB,MAAM8noB,oBAGjB,MAAMO,EAAiBv0kB,OAAiBw9C,OAAOmrC,GAAUl3B,SACnD9I,EAAMj8H,KAAKonpB,UAAU3J,SACrBv/T,EAAOl+U,KAAK88oB,UAAUW,SAEtBqK,GAAiB/ooB,EAAQ+ooB,gBAAkBzO,GAC3C0O,GAAYD,KAAmBzO,IAAOyO,KAAmBtP,EAASzwoB,GAAIjC,GACtEkipB,GAAeF,KAAmBzO,IAAOyO,KAAmBtP,EAAS1yoB,GAAIiC,GACzEkgpB,GAAaH,KAAmBzO,IAAOyO,KAAmBz0C,GAAOn1R,EAAK75S,OAAS65S,EAAKqgL,cAEpFD,GAAUriY,EAAIqiY,UAAU4pJ,cAAcL,GACtC53H,GAAWh0Z,EAAIg0Z,WAAWi4H,cAAcL,GACxCtpJ,GAActiY,EAAIsiY,cAAc2pJ,cAAcL,GAC9C33H,GAAaj0Z,EAAIi0Z,aAAag4H,cAAcL,GAC5CR,GAAa/zkB,gBAAqBgrb,GAAS2xB,GAAU1xB,GAAa2xB,IAElE13e,GAAY,EACbwvmB,IAAe9pU,EAAK75S,OAAO2jnB,IAAgBX,GAAWhjnB,OAAO2jnB,KAG5DG,GAAej7oB,KAAKiN,IAAImkf,GAAQ0pJ,IAAgBxvmB,GAAUwvmB,IAAgBC,GAAWD,KACrFI,GAAgBl7oB,KAAKiN,IAAI81gB,GAAS+3H,IAAgBxvmB,GAAUwvmB,IAAgBC,GAAWD,KAE7F,IAAInC,GAAYwC,GAEZvnjB,GAAMqnjB,GAActP,KAAuB/3iB,GAAMsnjB,GAAevP,IAChEgN,GAAavnJ,GACb+pJ,GAAWp4H,IACJm4H,GAAgBD,IACvBtC,GAAa51H,GACbo4H,GAAW9pJ,KAEXsnJ,GAAavnJ,GACb+pJ,GAAWn4H,IAGf,MAAM7mD,GAAcw8K,GAAWkC,KAAcM,GAASN,IAAalC,GAAWkC,KAAc,EAC5FvvmB,UAAUuvmB,IAAa7pU,EAAK7uQ,SAAS04kB,IAAa1+K,GAE3C/1Z,OACF96B,UAAUA,GAAU7uC,EAAG6uC,GAAUsb,GACjCg9D,OAAOmrC,IAIpB6mf,GAAkBwF,GAAW,CACzB3B,aAAa,IAGjB,SAAe2B,GCxGf,iBAAmBvF,GACfjjpB,YAAYojH,EAAQnkG,EAASuhoB,GACzB9goB,MAAMT,GAEN/e,KAAKkjH,OAASA,EACdljH,KAAKsgpB,aAAeA,EAEpBtgpB,KAAK28G,SAGT9+C,OACI79D,KAAK+e,QAAQk1T,SAAU,EAG3BzmU,OACIxN,KAAK+e,QAAQk1T,SAAU,EAG3Bt3N,SACI,MAAM59F,EAAU/e,KAAK+e,QAErB,GAAIA,EAAQk1T,QAAS,CACjB,MAAQ7uU,QAAO0K,QAASiP,EAClBk9G,EAAM,IAAIghhB,GACVsL,EAAa,IAAMvopB,KACzB,IAEI0W,GAAOnM,GAFPykD,GAAOl/C,EAAKk/C,KACZlkD,GAAO9K,KAAKkjH,OAAOp4G,KAGvB,GAAI8/lB,GAAQxlmB,IAAUA,EAAM6uU,QAAS,CACjC,MAAMu0U,GAAej6Q,GAAYnpY,GAC7BojpB,GACA19oB,GAAO09oB,GAAaxopB,KAAKkjH,QAClB99G,EAAMgW,SACbtQ,GAAO9K,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKhykB,EAAMgW,OAAQtQ,KAGlD1F,EAAMm6I,QACPn6I,EAAMm6I,MAAQn6I,EAAM8kC,WAAa6umB,EAxCzB,OAwCwDjpoB,EAAKk2U,YAGzEhmV,KAAKoF,MAAQ,IAAIqipB,GAAQ38oB,GAAM2voB,GAAW,GAAIr1oB,IAC9CpF,KAAKoF,MAAMqjpB,SAAWF,EAElBnjpB,EAAM8kC,WAAa6umB,IAAWnuC,GAAQ57iB,MAClCl/C,EAAKhI,OAAS4woB,EACd1plB,GAAO9hD,KAAKsB,IAAIxO,KAAKoF,MAAM62H,IAAIvlH,QAAS1W,KAAKoF,MAAM62H,IAAI1xH,WAEvDmM,GAAQ1W,KAAKoF,MAAM62H,IAAIvlH,QACvBnM,GAASvK,KAAKoF,MAAM62H,IAAI1xH,UAE5B0xH,EAAI3hE,KAAKt6D,KAAKoF,MAAM62H,MAI5BnsH,EAAK4G,MAAQA,IAASs4C,IA1DR,EA2Ddl/C,EAAKvF,OAASA,IAAUykD,IA3DV,EA6Dd,MAAM05lB,GAAS,IAAIpF,GAAa7I,GAAW,GAAI3qoB,IAC/C44oB,GAAOD,SAAWF,EAElBvopB,KAAK0opB,OAASA,GACd1opB,KAAKkxB,OAAOw3nB,IAER1opB,KAAKoF,OACLpF,KAAKkxB,OAAOlxB,KAAKoF,OAGrBsjpB,GAAOxI,OAAO,IAAIjD,IAClBj9oB,KAAK2opB,WAAa1shB,EAAI3hE,KAAKoulB,GAAOzshB,MAI1CikhB,OAAOpD,GACH,MAAQ/9nB,UAAS3Z,QAAOsjpB,SAAQC,cAAe3opB,KACzCqvE,GAASytkB,EAAUztkB,SACnBtpE,GAASgZ,EAAQ24D,KAAK3xE,OACtBmkC,GAAWnrB,EAAQmrB,SAGzB,GAAInrB,EAAQk1T,QAAS,CACjB,IAAI20U,GAAW3shB,GAAKymhB,GAEhB7E,GAAQ3zmB,GAAU,CAAEmpkB,GAAMC,KAC1Bu1C,KAAiBx1C,IACbqvC,GAAaiG,EAAWzL,QAAQJ,EAAW5ymB,IAAUsO,WAAWzyC,GAAQ+2oB,EAAUztkB,SAASvb,EAAI60lB,EAAWt5kB,SAASvb,GAE/G/0C,EAAQ24D,KAAKu8P,UACb20U,GAAY,CAAE9L,EAAU3nkB,GAAI9F,GAAOvb,GACnC9zD,KAAK8opB,WAAa,CACdF,GACA,CAAElG,GAAWjtkB,GAAIpG,GAAOvb,IAE5BmoE,GAAMymhB,GAAWlzhB,QAAQuthB,UAAU6L,OAGvClG,GAAaiG,EAAWzL,QAAQJ,EAAW5ymB,IAAUsO,UAAUzyC,GAAQ+2oB,EAAUztkB,SAASvb,EAAI60lB,EAAWt5kB,SAASvb,GAE9G/0C,EAAQ24D,KAAKu8P,UACb20U,GAAY,CAAE9L,EAAUrnkB,GAAIpG,GAAOvb,GACnC9zD,KAAK8opB,WAAa,CACdF,GACA,CAAElG,GAAWvtkB,GAAI9F,GAAOvb,IAE5BmoE,GAAMymhB,GAAWlzhB,QAAQuthB,UAAU6L,MAIvC1+mB,KAAasumB,GACbkK,GAAaiG,EAAWzL,QAAQJ,EAAW5ymB,IAAUsO,UAAUskmB,EAAUztkB,SAAS1lE,EAAIg/oB,EAAWt5kB,SAAS1lE,EAAG5D,IAEzGgZ,EAAQ24D,KAAKu8P,UACb20U,GAAY,CAAEv5kB,GAAO1lE,EAAGmzoB,EAAUD,IAClC78oB,KAAK8opB,WAAa,CACdF,GACA,CAAEv5kB,GAAO1lE,EAAG+4oB,GAAW7tkB,KAE3BonD,GAAMymhB,GAAWlzhB,QAAQuthB,UAAU6L,OAGvClG,GAAaiG,EAAWzL,QAAQJ,EAAW5ymB,IAAUsO,UAAUskmB,EAAUztkB,SAAS1lE,EAAIg/oB,EAAWt5kB,SAAS1lE,GAAI5D,IAE1GgZ,EAAQ24D,KAAKu8P,UACb20U,GAAY,CAAEv5kB,GAAO1lE,EAAGmzoB,EAAUjokB,IAClC70E,KAAK8opB,WAAa,CACdF,GACA,CAAEv5kB,GAAO1lE,EAAG+4oB,GAAW7F,KAE3B5ghB,GAAMymhB,GAAWlzhB,QAAQuthB,UAAU6L,MAK3CF,GACAA,EAAOxI,OAAOwC,IAGdt9oB,IACAA,EAAM86oB,OAAOwC,IACTgG,IACI3poB,EAAQ3Z,MAAM8kC,WAAaivmB,IAC3B/zoB,EAAM62H,IAAIihhB,QAAQwL,EAAOzshB,IAAK/xF,IAElC9kC,EAAM86oB,OAAO96oB,EAAM62H,OAI3Bj8H,KAAK0ipB,WAAaA,GAClB1ipB,KAAK88oB,UAAYA,EACjB98oB,KAAKi8H,IAAMA,IAAOymhB,IAI1BzkU,eACIz+T,MAAMy+T,eACNj+U,KAAK4jQ,OAAO7kP,QAAQiioB,OAAShhpB,KAAK+e,QAAQiioB,OAEtChhpB,KAAK+e,QAAQk1T,SACbj0U,KAAK+opB,aAIbtI,eACI,MAAM1hoB,EAAU/e,KAAK+e,QACf4ioB,EAAe5ioB,EAAQ6kP,OACzB7kP,EAAQk1T,SAAW0tU,GACnB3hpB,KAAK4jQ,OAAS+9Y,EAAa97oB,OAAOw0D,OAAOr6D,KAAKkjH,OAAQ,CAClD41O,OAAQ94V,KAAKogpB,YACbliU,KAAMl+U,KAAK88oB,UAAUW,SACrB1+nB,QAAS,CACLinU,WAAYjnU,EAAQinU,WACpBhpM,OAAQj+H,EAAQinU,WAChBl2U,KAAMiP,EAAQjP,KACd1K,MAAO2Z,EAAQ3Z,MACfsyE,KAAM34D,EAAQ24D,KACdxtC,SAAUnrB,EAAQmrB,SAClB+pS,QAASl1T,EAAQk1T,SAErBgK,aAAc,KACVj+U,KAAKi+U,eACLj+U,KAAK2gpB,iBACL,MAAMqI,EAAgBhppB,KAAK4jQ,OAC3B,cAAO5jQ,KAAK4jQ,OACLolZ,MAGfhppB,KAAK0gpB,aAELlhoB,MAAMihoB,eAIdsI,aACI,MAAMhqoB,EAAU/e,KAAK+e,QAAQ24D,KAE7B,GAAI13E,KAAK8opB,WAAY,CACjB,MAAMp/d,EAAOrtC,gBAAqBr8I,KAAK8opB,WAAY,CAC/CjngB,OAAQ,CACJtC,MAAOxgI,EAAQwgI,MACf7oI,MAAOqI,EAAQrI,MACfsrP,SAAUjjP,EAAQijP,YAI1BinZ,GAAiBv/d,GACjB1pL,KAAK4jQ,OAAO1yO,OAAOw4J,IAI3Bj+G,MAAMk8kB,EAAQ1+oB,GACV,MAAMgxB,EAAOj6B,KAAKy2D,UAAUxtD,GAEvB0+oB,EAAO19oB,QxD3MM,YwD2McgwB,IAC5BhxB,EAAEi5C,iBAIVugL,KAAKklb,EAAQ1+oB,GACT,MAAMgxB,EAAOj6B,KAAKy2D,UAAUxtD,GAEvB0+oB,EAAO19oB,QxDlNM,YwDkNcgwB,IAC5BhxB,EAAEi5C,iBAIV/9B,IAAIwjoB,EAAQ1+oB,GACR,MAAMgxB,EAAOj6B,KAAKy2D,UAAUxtD,GAE5B0+oB,EAAO19oB,QxDzNW,YwDyNSgwB,GAG/Bw8B,UAAUxtD,GACN,MAAM8V,EAAU/e,KAAK+e,QAErB,OAAOlZ,OAAOw0D,OAAOr6D,KAAKkjH,OAAQ,CAC9BxuG,QAASsmoB,GAAa/xoB,GACtB6B,KAAM8/lB,GAAQ7rlB,EAAQ3Z,OAAS2Z,EAAQ3Z,MAAM0F,KAAO,GACpD84P,OAAQ5jQ,KAAK4jQ,UAKzBk/Y,GAAkB1vd,GAAM,CACpBtjL,KAAM,CACFmkU,SAAS,EACTnsU,KAAM4woB,GAEVtzoB,MAAO,CACH8kC,SAAU6umB,EACV9kU,SAAS,EACT92Q,MAAOs7kB,EACP+J,OAAQ/J,GAEZ/gkB,KAAM,CACFu8P,SAAS,GAEbA,SAAS,EACT/pS,SAAUmvmB,GACVpof,OAAQ,IAGZ,SAAemiC,GCxQf,IAAI/sJ,GAV0B,CAC1BjrB,OAAQ,CAACA,GAAQzX,IAAUA,EAE3BoH,SAAWpH,IAAUA,GAErB22a,UAAY32a,IAAU,IAAIoV,KAAKpV,IAE/Bs3Y,SAAU,IAAM,GAepB,SAVA,SAAkB55X,gBACEi9d,GACZj4c,GAAUi4c,EAGH4qK,4BACP,OAAO7inB,KCdT8inB,GAAuB,uBC6B7BC,GA9BA,SACItppB,YAAYypV,EAAOnmR,EAAU,IACzBpjE,KAAKsia,aAAel/V,EAAQ4zU,YAC5Bh3Y,KAAK84V,OAAS11R,EAAQ01R,QAAUvP,EAChCvpV,KAAKob,OAAS,IDDtB,SACItb,YAAYk3Y,GACRh3Y,KAAKsia,aAAetrB,EAGpBzzO,WACA,OAAOvjK,KAAKsia,cAAgB3oB,kBAG5Bp2O,SAAK5/J,GACL3D,KAAKsia,aAAe3+Z,EAGxByzkB,KAAKiyE,KAAiBhjpB,GAClB,MAAMk9J,EAAOvjK,KAAKujK,KAElB,OAAI3Y,GAASy+f,IAAiBA,EAAa9noB,MAAM+5hB,GACtC/3Y,EAAKnoJ,OAAOiuoB,KAAiBhjpB,GAGjCk9J,EAAKx4J,SAAS1E,EAAO,GAAIgjpB,GAGpCC,WAAWD,EAAchjpB,EAAQ4rC,GAC7B,MAAMsxH,EAAOvjK,KAAKujK,KAClB,IAAIhxJ,EAEJ,OACIA,EADAq4I,GAASy+f,IAAiBA,EAAa9noB,MAAM+5hB,GACpC+tG,EAAa99nB,QAAQ49nB,GAAsB,SAAS5noB,GAAOqC,GAAO2loB,IACvE,IAAI5lpB,GAAQ0C,EAAOzC,SAASggB,GAAO,KAEnC,OAAO2/I,EAAKx4J,SAASpH,GAAO4lpB,GAAoBA,GAAkBz1nB,UAAU,GAAK,GAAIme,KAGhFsxH,EAAKx4J,SAAS1E,EAAO,GAAIgjpB,EAAcp3mB,GAG7C1/B,ICpCyB6wD,EAAQ4zU,aACxCh3Y,KAAKupV,MAAQA,EACbvpV,KAAK0kU,IAAMsD,QAAQ5kQ,EAAQshQ,KAG3BnhK,WACA,OAAOvjK,KAAKsia,cAAgB3oB,kBAG5Bp2O,SAAK5/J,GACL3D,KAAKsia,aAAe3+Z,EACpB3D,KAAKob,OAAOmoJ,KAAO5/J,EAGvBosU,OAAO/qU,EAAMi1B,GACLj6B,KAAKupV,OACLvpV,KAAKupV,MAAMt/U,QAAQjF,EAAMi1B,GAIjCuvnB,WAAWrjR,GACP,MAAMh3I,IAAanvP,KAAKupV,OAAS,IAAIxqU,SAAW,IAAIowO,SACpD,OAAOA,GAAYA,EAASgzP,OAASh8G,IC7B7C,IAAI9/V,GAcJ,SAZA,SAAuBhlB,gBACHi9d,GACZj4c,GAAUi4c,gBAGA5pe,EAASqkG,GACnB,GAAI1yE,GACA,OAAOA,GAAQ27B,OAAOttD,EAASqkG,KCL5B,YAAwBh6F,GAAS0qoB,GAC5C,MAAQC,QAAOC,QAAOz/mB,YAAanrB,GAE7B63W,EAAO,IAAIv6O,KAAU,CACvBwF,OAAQ,CACJnrI,MAAO+yoB,EAAY/yoB,MACnB6oI,MAAOkqgB,EAAYlqgB,SAI3B,OAAIxgI,GAAQ/S,SACR4qX,EAAKn1I,OAAOioa,EAAOx/mB,GACdw3M,OAAOgoa,EAAQD,EAAYz6lB,KAAM9kB,GAEtC0sV,EAAKn1I,OAAOv3M,EAAUy/mB,GACjBjoa,OAAOx3M,EAAUy/mB,EAAQF,EAAYz6lB,MAG9Ci6lB,GAAiBryR,GAEVA,ECpBI,YAA4B73W,GAAS6qoB,GAChD,MAAQhB,YAAWiB,UAAS3/mB,YAAanrB,GAEnC24D,EAAO,IAAI2kE,KAAU,CACvBwF,OAAQ,CACJnrI,MAAOkzoB,EAASlzoB,MAChB6oI,MAAOqqgB,EAASrqgB,MAChByiH,SAAU4nZ,EAAS5nZ,YAI3B,OAAIjjP,GAAQ/S,SACR0rE,EAAK+pK,OAAOmna,EAAW1+mB,GAClBw3M,OAAOmoa,EAAS3/mB,GAErBwtC,EAAK+pK,OAAOv3M,EAAU0+mB,GACjBlna,OAAOx3M,EAAU2/mB,GAG1BZ,GAAiBvxkB,GAEVA,ECVX,iBAAmByqkB,GACfripB,YAAYif,EAASuhoB,EAAe,IAAIwJ,IACpCtqoB,MAAMT,GAEN/e,KAAKsgpB,aAAeA,EAEftgpB,KAAK+e,QAAQk1T,UACdj0U,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAAS,CACxCyrX,OAAQ,CACJv2D,SAAS,GAEbv8P,KAAM,CACFu8P,SAAS,GAEb1lS,OAAQ,EACRw7mB,cAAe,EACfC,cAAe,KAIvBhqpB,KAAK+e,QAAQ+6X,WAAa2gQ,GAAW,GAAI,CACrCl7f,MAAOv/I,KAAK+e,QAAQ24D,KAAK6nE,MACzB7oI,MAAO1W,KAAK+e,QAAQ24D,KAAKhhE,MACzBu9T,QAASj0U,KAAK+e,QAAQkroB,gBAAkBv5kB,GACzC1wE,KAAK+e,QAAQ+6X,WAAY,CACxB9qV,KAAMhvD,KAAK+e,QAAQiroB,cACnB7slB,MAAOn9D,KAAK+e,QAAQkroB,gBAGxBjqpB,KAAK+e,QAAQ86X,WAAa4gQ,GAAW,GAAI,CACrCl7f,MAAOv/I,KAAK+e,QAAQ24D,KAAK6nE,MACzB7oI,MAAO1W,KAAK+e,QAAQ24D,KAAKhhE,MACzBu9T,QAASj0U,KAAK+e,QAAQmroB,gBAAkBx5kB,GACzC1wE,KAAK+e,QAAQ86X,WAAY,CACxB7qV,KAAMhvD,KAAK+e,QAAQgroB,cACnB5slB,MAAOn9D,KAAK+e,QAAQmroB,gBAGxBlqpB,KAAKmqpB,aAEAnqpB,KAAK+e,QAAQqroB,cACdpqpB,KAAKqqpB,eAGTrqpB,KAAKsqpB,cACLtqpB,KAAKuqpB,cAGTJ,cAMAK,cACI,MAAO,CACH/3mB,IAAKzyC,KAAK+e,QAAQyrX,OAAOl+X,KACzBkC,IAAKxO,KAAKyqpB,eAIlBC,uBAAuBC,GACnB,MAAM1uf,EAAW0uf,EAAa1uf,SAE1BiP,GAASjP,KACT0uf,EAAa/C,cAAgB3rf,EAAS9+F,MACtCwtlB,EAAa1uf,SAAWA,EAAS3qE,OAIzC+4jB,eACI,MAAMtroB,EAAU/e,KAAK+e,QAEf4roB,EAAelQ,GAAW,GAAK17nB,EAAQyrX,OAAQ,CACjDrtU,MAFUp+C,EAAQ/S,SAAWsnmB,GAAQmlC,EAGrCxnf,OAAQlyI,EAAQkyI,SAEdzkG,EAAOt/C,KAAKsB,IAAI,EAAGm8oB,EAAan+lB,MAItC,GAFAxsD,KAAK4qpB,cAEDD,EAAa12U,QAAS,CACtBj0U,KAAK0qpB,uBAAuBC,GACE,SAA1BA,EAAa1uf,WACb0uf,EAAa1uf,SAAW,EACxBl9I,EAAQ8roB,kBAAmB,GAG/B,MAAMjjlB,EAAQ5nE,KAAKwqpB,cACnB,QAASrgnB,GAAMy9B,EAAMn1B,IAAKtI,GAAMy9B,EAAMp5D,IAAK27B,IAAOqiB,EAAM,CAEpD,IAAIpnD,GAAQpF,KAAK8qpB,gBAAgB3gnB,GAAKwgnB,EADjB,CAAE/moB,MAAOumB,GAAKytE,MAAOhwC,EAAMp5D,MAE5CpJ,KACApF,KAAKkxB,OAAO9rB,IACZpF,KAAKwqY,OAAO/kY,KAAKL,OAMjCwlpB,cACI5qpB,KAAKw+D,SAAWwllB,GAAKhkpB,KAAKw+D,SAAUC,KAAWA,aAAiB6plB,KAChEtopB,KAAKwqY,OAAS,GAGlBimE,aACQzwc,KAAK4sD,QACL5sD,KAAKw+D,SAAWwllB,GAAKhkpB,KAAKw+D,SAAUC,GAASA,IAAUz+D,KAAK4sD,OAC5D5sD,KAAK4sD,WAAQznD,GAIrBm6C,QACIt/C,KAAK4qpB,cACL5qpB,KAAKywc,aAGTs6M,UACI,MAAQhsoB,UAASk9G,OAAQj8H,KAEnBw6Y,EAASz7X,EAAQyrX,OAAOgQ,OACxBwwQ,EAAQxwQ,EAASv+Q,EAAI9mD,GAAK8mD,EAAIxmD,GAC9Bw1kB,GAAQzwQ,EAASv+Q,EAAI4ghB,GAAK5ghB,EAAIpnD,GAC9BysK,GAAYviO,EAAQ24D,KAAKhhE,OAAS,EAExC,OANiBqI,EAAQ/S,SAOrB,IAAIixoB,GAAI+N,EAAO/uhB,EAAIpnD,GAAIm2kB,EAAO/uhB,EAAI4ghB,GAAKv7Z,IACvC,IAAI27Z,GAAIhhhB,EAAI9mD,GAAI81kB,GAAOhvhB,EAAIxmD,GAAK6rK,GAAW2pa,IAGnDX,cACI,MAAMvroB,EAAU/e,KAAK+e,QACf2ooB,EAAejN,GAAW,CAC5Bx+e,SAAUl9I,EAAQ/S,UAAW,GAAM,EACnClB,KAAM,GACNmmJ,OAAQ,EACRi6f,YAAY,GACbnsoB,EAAQ6tC,OAEX,GAAI86lB,EAAazzU,SAAWyzU,EAAa58oB,KAAM,CAC3C,MAAM8hD,EAAQ,IAAI66lB,GAAQC,EAAa58oB,KAAM48oB,GAC7C1npB,KAAKkxB,OAAO07B,GACZ5sD,KAAK4sD,MAAQA,GAIrB29lB,cACI,MAAMxroB,EAAU/e,KAAK+e,QACf0rX,EAAQ1rX,EAAQ0rX,MAChBj4U,EAAQi4U,EAAM33X,MAAQ,GAE5B9S,KAAKyqY,MAAQ,GAEb,QAAS97X,EAAI,EAAGA,EAAI6jD,EAAMzsD,OAAQ4I,IAAK,CACnC,MAAMqE,EAAOynoB,GAAW,GAAIhwQ,EAAOj4U,EAAM7jD,IACzCqE,EAAKrP,MAAQ3D,KAAKmrpB,eAAen4oB,EAAKrP,OAEtC,MAAMuyK,GAAO,IAAIkd,GAAK,CAClBzvL,MAAOqP,EAAKrP,MACZmH,KAAMkI,EAAK5N,MAAM0F,KACjBwqD,SAAUtiD,GACXA,EAAMhT,KAAKsgpB,cAEVpqe,GAAKn3J,QAAQk1T,UACT22R,GAAQ10b,GAAKn3J,QAAQmrB,UACjBnrB,EAAQ/S,WAAa6xoB,GAAQ3ne,GAAKn3J,QAAQmrB,SAAU,CAAEmpkB,GAAMC,KAC5Dp9b,GAAKn3J,QAAQmrB,SAAWnrB,EAAQgwE,QAAUskhB,GAAOC,IACzCv0lB,EAAQ/S,WAAa6xoB,GAAQ3ne,GAAKn3J,QAAQmrB,SAAU,CAAEmvmB,GAAKb,MACnEtie,GAAKn3J,QAAQmrB,SAAWnrB,EAAQgwE,QAAUypjB,EAASa,IAInDnje,GAAKn3J,QAAQmrB,SADjB/X,EAAYnmB,SACgB+S,EAAQgwE,QAAUskhB,GAAOC,GAEzBv0lB,EAAQgwE,QAAUypjB,EAASa,GAG3Dr5oB,KAAKkxB,OAAOglJ,IACZl2K,KAAKyqY,MAAMhlY,KAAKywK,MAK5Bi1e,eAAexnpB,GACX,OAAOA,EAGX88oB,eACIjhoB,MAAMihoB,eAENzgpB,KAAKorpB,kBAGTntU,eACIz+T,MAAMy+T,eAENj+U,KAAKqkpB,mBACLrkpB,KAAK+opB,aAGTsC,kBACI,IAAIC,EAAYtrpB,KAAKurpB,WACrB,OAAKD,IACDA,EAAYtrpB,KAAKurpB,WAAa,IAAIlvgB,KAAW,CACzC4U,QAAQ,IAEZjxJ,KAAK8gpB,aAAa9gpB,KAAKurpB,aAGpBD,EAGXj4E,YAAYm4E,GACR,MAAMzsoB,EAAU/e,KAAK+e,QACfgsoB,EAAU/qpB,KAAK+qpB,UACfvwQ,EAASz7X,EAAQyrX,OAAOgQ,OACxB6G,EAAYtiY,EAAQ86X,WAAW5lE,QAAUl1T,EAAQsiY,UAAY,EAC7DoqQ,GAAkB,CAGpBz/oB,SAAU+S,EAAQ/S,UAGtB,YAAgB0/oB,GAAejC,GAAakC,IACxC,MAAM/ziB,GAAQ8ziB,GAAc3lpB,OACtBymD,GAAOt/C,KAAKsB,IAAI,EAAGi7oB,GAAYj9lB,MAErC,GAAIi9lB,GAAYx1U,QACZ,QAAStlU,GAAI86oB,GAAYn9oB,KAAMqC,GAAIipG,GAAOjpG,IAAK69C,GACvCo+iB,GAAQ+gD,KAAch9oB,GAAIg9oB,IAAa,IAI3CF,GAAgB/B,MAAQlvQ,EAASuwQ,EAAQt1kB,GAAKs1kB,EAAQt1kB,GAAKg0kB,GAAYz6lB,KACvEy8lB,GAAgB9B,MAAQnvQ,EAASuwQ,EAAQl2kB,GAAK40kB,GAAYz6lB,KAAO+7lB,EAAQl2kB,GACzE42kB,GAAgBvhnB,SAAWwhnB,GAAc/8oB,IAEzC68oB,EAAUt6nB,OAAO06nB,GAAeH,GAAiBhC,MAK7D9siB,GAAO38G,KAAK6rpB,wBAAyB9soB,EAAQ86X,YAC7Cl9R,GAAO38G,KAAK8rpB,wBAAyB/soB,EAAQ+6X,WAAYuH,EAAYtiY,EAAQuiY,WAGjFynQ,aACI,MAAMhqoB,EAAU/e,KAAK+e,QACf24D,EAAO34D,EAAQ24D,KACfqzkB,EAAU/qpB,KAAK+qpB,UAErB,GAAIrzkB,EAAKhhE,MAAQ,GAAKghE,EAAKu8P,QAAS,CAChC,MAAMvqJ,EAAO,IAAIrtC,KAAU,CACvBwF,OAAQ,CACJnrI,MAAOghE,EAAKhhE,MACZ6oI,MAAO7nE,EAAK6nE,MACZyiH,SAAUtqL,EAAKsqL,YAQvBt4E,EAAK+3D,OAAOspa,EAAQ51kB,GAAI41kB,EAAQl2kB,IAC3B6sK,OAAOqpa,EAAQt1kB,GAAIs1kB,EAAQlO,IAE5B99nB,EAAQgtoB,aACR9C,GAAiBv/d,GAGrB,MAAMhhJ,EAAQ1oC,KAAKgspB,WAAa,IAAI3vgB,KACpC3zG,EAAMxX,OAAOw4J,GAEb1pL,KAAK4jQ,OAAO1yO,OAAOwX,GACnB1oC,KAAKqzkB,YAAY3qiB,IAIzBujnB,oBACI,MAAMltoB,EAAU/e,KAAK+e,QACrB,IAAImtoB,EAAW,EAEf,OAAIntoB,EAAQ86X,WAAW5lE,SAAWl1T,EAAQ+6X,WAAW7lE,QACjDi4U,EAAWh/oB,KAAKsB,IAAIuQ,EAAQ86X,WAAW7qV,KAAMjwC,EAAQ+6X,WAAW9qV,MAC7D78B,EAAY0nX,WAAW5lE,QAC1Bi4U,EAAWntoB,EAAQ86X,WAAW7qV,KACvBjwC,EAAQ+6X,WAAW7lE,UAC1Bi4U,EAAWntoB,EAAQ+6X,WAAW9qV,MAG3Bk9lB,EAGX7H,mBACI,MAAQtloB,UAASk9G,OAAQj8H,KACnBgmV,EAAajnU,EAAQinU,WAEvBA,IACAhmV,KAAKmspB,gBAAkB9vgB,cAAmBpgB,EAAIwhhB,SAAU,CACpD/uoB,KAAM,CACF6wI,MAAOymM,GAEXnkM,OAAQ,OAGZ7hJ,KAAK4jQ,OAAO1yO,OAAOlxB,KAAKmspB,kBAIhCf,kBACI,MAAMrsoB,EAAU/e,KAAK+e,QACfk7X,EAAYl7X,EAAQk7X,WAAa,GACjCjuY,EAAW+S,EAAQ/S,SACnBm5X,EAAWnlY,KAAKmlY,SAEtB,GAAyB,IAArB8U,EAAUl0Y,OACV,OAGJ,MAAM2iC,EAAQ1oC,KAAKospB,eAAiB,IAAI/vgB,KAAW,CAC/C4U,QAAQ,IAGNo7f,GAAUrI,GAAKhkpB,KAAKg6Y,KAAK72I,KAAMgjI,IAAQA,GAAKpnX,QAAQ/S,WAAahM,KAAK+e,QAAQ/S,UAAU,GAE9F,QAASm+B,GAAM,EAAGA,GAAM8vW,EAAUl0Y,OAAQokC,KAAO,CAC7C,IACIminB,GAAOC,GAEPnnpB,GAHA4N,GAAOinY,EAAU9vW,IAEjBwgnB,GAAe33oB,GAAK5N,MA0BxB,GAvBI4G,GACAsgpB,IAASD,IAAWlnR,EAAS6lR,OAAOD,UACpCwB,GAAQvspB,KAAKwspB,QAAQx5oB,GAAKo1D,KAAMp1D,GAAKy6H,IAAI,KAEzC6+gB,GAAQtspB,KAAKwspB,QAAQx5oB,GAAKo1D,KAAMp1D,GAAKy6H,IAAI,GACzC8+gB,IAASF,IAAWlnR,EAAS8lR,OAAOF,WAGpCJ,KACAA,GAAanI,OAASmI,GAAazgnB,UAAYmpkB,GAC/CjumB,GAAQpF,KAAKyspB,oBACT9B,GACA33oB,GACA,IAAIiqoB,GACAqP,GAAMn3kB,GACNo3kB,GAAM13kB,GACNy3kB,GAAM72kB,GACN82kB,GAAM1P,MAMI,IAAlByP,GAAM51oB,SAAoC,IAAnB61oB,GAAMhipB,SAAgB,CAC7C,MAAMmipB,GAAW,IAAIp5kB,KACjB,CAAEg5kB,GAAMn3kB,GAAIo3kB,GAAM13kB,IAClB,CAAEy3kB,GAAM51oB,QAAS61oB,GAAMhipB,WAGrBm/K,GAAOrtC,cAAmBqwgB,GAAU,CACtCh+oB,KAAM,CACF6wI,MAAOvsI,GAAKusI,MACZn1I,QAAS4I,GAAK5I,SAElBy3I,OAAQ,OAGZn5G,EAAMxX,OAAOw4J,IACTtkL,IACAsjC,EAAMxX,OAAO9rB,KAKzBpF,KAAK8gpB,aAAap4mB,GAGtB+jnB,oBAAoBrnpB,EAAO4N,EAAMipH,GAE7B,IAAsB,IAAlB72H,EAAM6uU,QACN,OAAO,KAGX,IACI04U,EADA7hpB,EAAO1F,EAAM0F,KAGjB,GAAI8/lB,GAAQxlmB,IAAUA,EAAM6uU,QAAS,CACjC,MAAMomP,GAAgB9rL,GAAYnpY,GAC9Bi1jB,GACAvvjB,EAAOuvjB,GAAc,CAAEvvjB,KAAMA,EAAMkI,KAAMA,IAClC5N,EAAMgW,SACbtQ,EAAO9K,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKhykB,EAAMgW,OAAQtQ,IAGlD1F,EAAMm6I,QACPn6I,EAAMm6I,MAAQv/I,KAAK+e,QAAQyrX,OAAOjrP,OAI1CotgB,SAAU,IAAIlF,GAAQ38oB,EAAM1F,GAC5BunpB,EAAQzM,OAAOjkhB,GACf0whB,EAAQlM,eAEDkM,EAAQ/oZ,OAGnBgpZ,gBAAgBP,GACZ,MAAMttoB,EAAU/e,KAAK+e,SACb0tX,iBAAgBD,iBAAgB8U,YAAWt1Y,aAAa+S,EAC1D8toB,GAAkBR,EAAQttoB,QAAQ24D,KAAKu8P,QACvCotE,GAAY7U,EAAev4D,QAAUl1T,EAAQsiY,UAAY,EACzD0pQ,GAAUsB,EAAQtB,UAClB+B,GAAU/B,GAAQ/+oB,GAAW,KAAO,MACpC+gpB,GAAc,CAChBnE,UAAWmC,GAAQ/+oB,GAAW,KAAO,MACrC69oB,QAASkB,GAAQ/+oB,GAAW,KAAO,MACnCA,SAAUA,IAER6tY,GAAa,GAEbp8O,GAAYz9J,KAAKqrpB,kBAEvB,YAAgBK,GAAe9B,GAAU+B,IACrC,MAAM/ziB,GAAQ8ziB,GAAc3lpB,OACtBymD,GAAOt/C,KAAKsB,IAAI,EAAGo7oB,GAASp9lB,MAElC,GAAIo9lB,GAAS31U,QACT,QAAStlU,GAAIi7oB,GAASt9oB,KAAMqC,GAAIipG,GAAOjpG,IAAK69C,GAAM,CAC9C,IAAIq8B,GAAMiY,GAAM4qjB,GAAc/8oB,KACzBkvoB,GAAQh1jB,GAAKgxT,KACVlrY,GAAIg9oB,IAAa,KAAOkB,IAAmBC,KAAYjkkB,MACvDkkkB,GAAY7inB,SAAW2+C,GACvB40E,GAAUvsI,OAAO87nB,GAAmBD,GAAanD,KAEjD/vQ,GAAWp0Y,KAAKojF,MAOpC8zB,UAAO38G,KAAK6rpB,wBAAyBr/Q,GACrC7vR,GAAO38G,KAAK8rpB,wBAAyBr/Q,EAAgB4U,GAAYC,GAE1D7jP,GAAUj/F,SAGrB0hlB,OAAOjkhB,GACH,MAAQl9G,UAASyrX,SAAQ59U,SAAU5sD,KAC7BgM,EAAW+S,EAAQ/S,SACnB4rG,GAAQ4yR,EAAOzkY,OACfknpB,GAASjhpB,EAAWwtoB,GAAQV,EAC5BoU,GAAYtgmB,EAAQA,EAAMqvE,IAAIgxhB,MAAY,EAC1C/sN,GAAQlgc,KAAKispB,oBAAsBltoB,EAAQwvB,OAAS2+mB,GAEpDC,KADWntpB,KAAK4kX,WAAa,IAAI3oP,KAAOA,GACtBgxhB,MACxB,IAAIG,GAAe,EAEnB,QAASz+oB,GAAI,EAAGA,GAAIipG,GAAOjpG,KAAK,CAC5B,IAAI0+oB,GAAY7iR,EAAO77X,IAAGstH,IAAIgxhB,MAC1BI,GAAYntN,IAASitN,KACrBC,GAAelgpB,KAAKsB,IAAI4+oB,GAAcC,KAK1CrtpB,KAAKi8H,IADLjwH,EACW,IAAIixoB,GACXhhhB,EAAI9mD,GAAI8mD,EAAIpnD,GACZonD,EAAI9mD,GAAKi4kB,GAAeltN,GAAOjkU,EAAI4ghB,IAG5B,IAAII,GACXhhhB,EAAI9mD,GAAI8mD,EAAIpnD,GACZonD,EAAIxmD,GAAIwmD,EAAIpnD,GAAKu4kB,GAAeltN,IAIxClgc,KAAKstpB,eACLttpB,KAAKutpB,gBACLvtpB,KAAKwtpB,eAGTC,yBACI,OAAOztpB,KAAK6rpB,wBAGhB6B,eAAetopB,GACX,OAAOA,EAAMwe,MAGjB2poB,gBACI,MAAQxuoB,UAASyrX,UAAWxqY,KACtB2tpB,EAAqB3tpB,KAAK2tpB,qBAC1B3hpB,EAAW+S,EAAQ/S,SACnBwuY,EAASz7X,EAAQyrX,OAAOgQ,OACxBkxQ,GAAgB1rpB,KAAKytpB,yBAE3B,QAAStjnB,GAAM,EAAGA,GAAMqgW,EAAOzkY,OAAQokC,KAAO,CAC1C,MAAM/kC,GAAQolY,EAAOrgW,IACfyjnB,GAAS5tpB,KAAK0tpB,eAAetopB,IAC7BiopB,GAAYrhpB,EAAW5G,GAAM62H,IAAI1xH,SAAWnF,GAAM62H,IAAIvlH,QACtDm3oB,GAAoBnC,GAAckC,IAClCE,GAAmBpC,GAAckC,GAAS,GAChD,IAAIG,GAAeC,GAEfhipB,GAGI+hpB,GAFAJ,EACeE,IAAqBC,GAAmBD,IAAqB,EAClDR,GAAY,EAEtBQ,GAAqBR,GAAY,EAGrDW,GAAcD,IAEdE,GACIF,GAAgBF,GAChBG,GAAcF,KAEdC,GAAgBF,GAAqBR,GAAY,EACjDW,GAAcD,GAAgBV,IAItCrtpB,KAAKkupB,cAAc9opB,GAAOo1Y,EAAQuzQ,GAAeC,KAIzDE,cAAc9opB,EAAOo1Y,EAAQuzQ,EAAeC,EAAcD,GACtD,MAAMhvoB,EAAU/e,KAAK+e,QACf/S,GAAW+S,EAAQ/S,SACnB++oB,GAAU/qpB,KAAK+qpB,UACfoD,GAAcnupB,KAAKispB,oBAAsBltoB,EAAQwvB,OACvD,IAAI6/mB,GAEJ,GAAIpipB,GAAU,CACV,IAAIqipB,GAAStD,GAAQt1kB,GAEjB+kU,GACA6zQ,IAAUF,GACV/opB,EAAM2Z,QAAQ+ooB,eAAiBz0C,KAE/Bg7C,IAAUF,GAAc/opB,EAAM62H,IAAIvlH,QAClCtR,EAAM2Z,QAAQ+ooB,eAAiBx0C,IAGnC86C,GAAWhppB,EAAM62H,IAAI3G,KAAK+4hB,GAAQN,OAC/B,CACH,IAAIO,GAASvD,GAAQl2kB,GAEjB2lU,GACA8zQ,IAAUH,GAAc/opB,EAAM62H,IAAI1xH,SAClCnF,EAAM2Z,QAAQ+ooB,eAAiBtP,IAE/B8V,IAAUH,GACV/opB,EAAM2Z,QAAQ+ooB,eAAiBzO,IAGnC+U,GAAW,IAAInR,GACX8Q,EAAeO,GACfN,EAAaM,GAASlppB,EAAM62H,IAAI1xH,UAIxCnF,EAAM86oB,OAAOkO,IAGjBG,qBAAqBH,EAAUI,GAC3B,OAAIJ,EAAS13oB,QAAU83oB,EACZ,EAGPJ,EAAS7jpB,SAAWikpB,GACb,IAGJ,GAGX3D,mBACI,IAAK7qpB,KAAK+e,QAAQ8roB,kBAAoB7qpB,KAAK+e,QAAQ/S,SAC/C,OAAO,EAGX,MAAM0/oB,EAAgB1rpB,KAAK6rpB,wBACrBrhR,EAASxqY,KAAKwqY,OACdv4U,EAAQ/kD,KAAKulC,IAAI+3V,EAAOzkY,OAAQ2lpB,EAAc3lpB,OAAS,GAC7D,IAAIurF,EAAQ,EAEZ,QAASnnD,EAAM,EAAGA,EAAM8nB,EAAO9nB,IAAO,CAClC,MAAMzzB,GAAQxJ,KAAKiN,IAAIuxoB,EAAcvhnB,EAAM,GAAKuhnB,EAAcvhnB,IAExDsknB,GAAazupB,KAAKuupB,qBADP/jR,EAAOrgW,GAAK8xF,IAC0BvlH,IAMvD,GAJmB,IAAf+3oB,KACAn9jB,EAAQm9jB,KAGE,KAAVn9jB,EACA,MAIR,GAAc,IAAVA,EAAa,CACb,QAASnnD,EAAM,EAAGA,EAAMqgW,EAAOzkY,OAAQokC,IACnCqgW,EAAOrgW,GAAKprB,QAAQk9I,SAAW3qE,EAC/Bk5S,EAAOrgW,GAAK+1mB,OAAO,IAAIjD,IAG3B,OAAO,GAIfqQ,eACI,MAAQvuoB,UAAS6tC,SAAU5sD,KACrBw6Y,EAASz7X,EAAQyrX,OAAOgQ,OAG1B5tV,IAFa7tC,EAAQ/S,UAIjB4gD,EAAM7tC,QAAQo+C,MAAQq9U,EAAS84N,GAAQD,GACvCzmjB,EAAM7tC,QAAQyjoB,OAAS51lB,EAAM7tC,QAAQmrB,WAErC0iB,EAAM7tC,QAAQo+C,MAAQvQ,EAAM7tC,QAAQmrB,SACpC0iB,EAAM7tC,QAAQyjoB,OAAShoQ,EAAS6+P,GAAMb,GAG1C5rlB,EAAMszlB,OAAOlgpB,KAAKi8H,MAI1BuxhB,eACI,QAASrjnB,EAAM,EAAGA,EAAMnqC,KAAKyqY,MAAM1kY,OAAQokC,IAAO,CAC9C,MAAMn3B,EAAOhT,KAAKyqY,MAAMtgW,GAClBxmC,EAAQqP,EAAK+L,QAAQpb,MAC3B,IAAI+qpB,EAEA9jD,GAAQjnmB,IACJ3D,KAAK2upB,iBAAiBhrpB,GACtBqP,EAAKxF,OAELwF,EAAK6qD,OAGT6wlB,EAAO1upB,KAAK4upB,SAASjrpB,IAErBqP,EAAK6qD,OAGT7qD,EAAKktoB,OAAOwO,GAAQ1upB,KAAK+qpB,YAIjC6D,SAASjrpB,GACL,OAAO3D,KAAKwspB,QAAQ7opB,GAGxBu5oB,QAAQ2R,GACJ,MAAM9D,EAAU8D,EAAW9D,UACrB/+oB,EAAWhM,KAAK+e,QAAQ/S,SACxB68E,EAAM78E,EAAWlG,GAAIiC,GAE3B/H,KAAKi8H,IAAItB,OAAOowhB,EAASlikB,GACzBolkB,EACIjupB,KAAKi8H,IAAIsuR,OAAO,EAAGvqZ,KAAK+qpB,UAAUxgpB,SAAWwgpB,EAAQxgpB,UAErDvK,KAAKi8H,IAAIsuR,OAAOvqZ,KAAK+qpB,UAAUr0oB,QAAUq0oB,EAAQr0oB,QAAS,GAE9D1W,KAAKi8H,IAAIpzC,EAAM,IAAM7oF,KAAK+qpB,UAAUlikB,EAAM,GAAKkikB,EAAQlikB,EAAM,GAC7D7oF,KAAKi8H,IAAIpzC,EAAM,IAAM7oF,KAAK+qpB,UAAUlikB,EAAM,GAAKkikB,EAAQlikB,EAAM,GAGjEimkB,cAAcnrpB,EAAOob,EAASqkD,GAC1B,IAAIt4D,EACJ,MAAMikpB,EAAOxgR,GAAYxvX,GACnBiwoB,GAAc,IACXjwoB,EAAQ3D,OAINpb,KAAKsgpB,aAAalloB,OAAOkuoB,WAC5BvqoB,EAAQ3D,OAAQ,CAAEzX,GAASob,EAAQkuI,SAJ5BtpJ,EAqBf,OALImH,EARAikpB,EAQOA,EAPiBlppB,OAAOw0D,OAAO,GAAI+I,EAAS,CAC3Ct4D,WAAS,OAAOkkpB,MACpBrrpB,QACAyX,OAAQ2D,EAAQ3D,OAChB6xI,QAASluI,EAAQkuI,WAKd+hgB,KAGJlkpB,EAGX4jpB,KAAKtmlB,EAAOqlE,EAAIx7E,GACZ,MAAMy8lB,EAAO1upB,KAAKwspB,QAAQpklB,EAAMqlE,EAAIx7E,GACpC,GAAIy8lB,EACA,OAAOA,EAAKjR,SAIpBiF,aACI,MAAMzmhB,EAAMj8H,KAAKi8H,IAAIzM,QACfg7Q,EAASxqY,KAAKwqY,OACpB,GAAIA,EAAOzkY,OAAQ,CACf,MAAMogY,EAAOnmY,KAAK+e,QAAQ/S,SAAWlG,GAAIiC,GACzC,GAAI/H,KAAKsgpB,aAAakJ,WAAWrjR,GAAO,CACpC,MAAM/zW,EAASpyB,KAAKivpB,iBACpBhzhB,EAAIkqQ,EAAO,IAAM/zW,EAAOpF,MACxBivG,EAAIkqQ,EAAO,IAAM/zW,EAAOkY,QACrB,CACCkgW,EAAO,GAAGzrX,QAAQk1T,SAClBh4M,EAAI3hE,KAAKkwU,EAAO,GAAGvuQ,KAEvB,MAAMizhB,EAAY1kR,EAAOA,EAAOzkY,OAAS,GACrCmppB,EAAUnwoB,QAAQk1T,SAClBh4M,EAAI3hE,KAAK40lB,EAAUjzhB,MAK/B,OAAOA,EAGXgzhB,iBACI,MAAQjjpB,WAAU+iF,WAAY/uF,KAAK+e,QAC7B4uoB,EAAqB3tpB,KAAK2tpB,qBAC1BjC,EAAgB1rpB,KAAKytpB,yBACrB0B,EAAcnjpB,EAAWlG,GAAIiC,GAC7ByiY,GAASxqY,KAAKwqY,OACdq8D,GAAgB93W,EAAU,EAAI,EAC9BqgkB,GAAcrgkB,EAAU,EAAI,EAClC,IAAIsgkB,GAAiB,EACjBC,GAAe,EAEnB,QAASnlnB,GAAM,EAAGA,GAAMqgW,GAAOzkY,OAAQokC,KAAO,CAC1C,MAAM/kC,GAAQolY,GAAOrgW,IACfyjnB,GAAS5tpB,KAAK0tpB,eAAetopB,IACnC,IAAImqpB,GAAWC,GAEX7B,GACA4B,GAAY7D,EAAckC,GAAS/mN,IACnC2oN,GAAU9D,EAAckC,GAASwB,KAEjCG,GAAYC,GAAU9D,EAAckC,IAGxCyB,GAAiBnipB,KAAKsB,IAAI6gpB,GAAgBE,GAAYnqpB,GAAM62H,IAAIkzhB,EAAc,IAC9EG,GAAepipB,KAAKsB,IAAI8gpB,GAAclqpB,GAAM62H,IAAIkzhB,EAAc,GAAKK,IAGvE,MAAO,CACHxioB,MAAOqioB,GACP/knB,IAAKglnB,IAIbn6N,WAAW/sX,EAAMqlE,EAAIh7F,EAAKjkC,EAAK4jB,GAC3B,MAAMrT,GAAU/e,KAAK+e,QAErB,GAAKqpD,EAAO31B,GAAOrgB,EAAS,KAAOw4kB,GAAQ7rlB,GAAQ0zB,MAAQ1zB,GAAQ0zB,KAAOA,IAAUjkC,EAAMi/H,GAAMr7G,EAAS,KAAOw4kB,GAAQ7rlB,GAAQvQ,MAAQA,GAAOuQ,GAAQvQ,KACnJ,OAAO,KAGX,GAAKi/H,EAAKh7F,GAAOrgB,EAAS,GAAO5jB,EAAM45D,GAAQh2C,EAAS,EACpD,MAAO,CACHqgB,IAAK21B,EACL55D,IAAKi/H,GAIb,MAAMgihB,GAAYhihB,EAAKrlE,EACvB,IAAIgyF,GAAWhyF,EACXiyF,GAAW5sB,EAEf,OAAIrlE,EAAO31B,GAAOrgB,EAAS,GACvBgoI,GAAWuma,GAAWv4f,EAAM31B,EAAKjkC,GACjC6rJ,GAAWsma,GAAWv4f,EAAOqnlB,GAAWh9mB,EAAMg9mB,GAAWjhpB,IAClDi/H,EAAKj/H,GAAO4jB,EAAS,IAC5BioI,GAAWsma,GAAWlzb,EAAIh7F,EAAKjkC,GAC/B4rJ,GAAWuma,GAAWlzb,EAAKgihB,GAAWh9mB,EAAKjkC,EAAMihpB,KAG9C,CACHh9mB,IAAK2nH,GACL5rJ,IAAK6rJ,IAIbq1f,aACI,MAAO,CACHj9mB,IAAKzyC,KAAK2vpB,UACVnhpB,IAAKxO,KAAK4vpB,WAIlBC,UAOI,MAAQ7jpB,WAAU+iF,WAAY/uF,KAAK+e,QACnC,OAAQ/S,GAAW,EAAK,IAAM+iF,GAAU,EAAK,GAGjD+gkB,WACI,MAAQ9jpB,YAAahM,KAAK+e,QACpBgsoB,EAAU/qpB,KAAK+qpB,UACfgF,EAAW/jpB,EAAW++oB,EAAQxgpB,SAAWwgpB,EAAQr0oB,QACjDyvX,EAAOn6X,EAAWlG,GAAIiC,GACtBiopB,EAAUhwpB,KAAK6vpB,UAEfI,GAAa9pR,GADW,IAAZ6pR,EAAgB,EAAI,GACFjlpB,WAGpC,MAAO,CACHo7X,OACA8pR,cACAD,UACAjF,UACAgF,WACAnH,UARcmC,EAAQkF,KAY9BC,YAAYz3kB,GACR,MAAQ0tT,OAAM6pR,UAASC,aAAYlF,UAASgF,aAAa/vpB,KAAK8vpB,WAI9D,OAHiBE,EAAU,EAAIv3kB,EAAM0tT,GAAQ4kR,EAAQkF,GAAclF,EAAQkF,GAAcx3kB,EAAM0tT,IACrE4pR,GAS9BI,aAAaC,EAAUxolB,GAGnB,MACM84B,EAAQige,GAAWyvF,GADP,WAGlB,IAAIrgiB,EACJ,OACIA,EADArvB,EAAQ,EACA94B,EAAQ16D,KAAKulC,IAAI,EAAGiuD,GAEpB94B,EAASA,GAAS,EAAI84B,GAG3BqvB,EAGX49hB,qBACI,OAAQ3tpB,KAAK+e,QAAQu8X,UAIzB+0Q,uBAIJvN,GAAkBwN,GAAM,CACpB9lR,OAAQ,CACJv2D,SAAS,EACTh4K,SAAU,EACVu+O,QAAQ,EACRhuV,KAAM,EACNlgD,KAAM,GAEVorE,KAAM,CACFhhE,MAAO,EACP6oI,MAAOg5f,EACPtkU,SAAS,GAEbrnR,MAAO,CACHqnR,SAAS,EACT/pS,SAAUuumB,GAEd5+P,WAAY,CACR18U,MAAOg8kB,GACPnqlB,KAAM,EACN1iD,KAAM,EACNkgD,KAAM,GAEVstV,WAAY,CACR38U,MAAOg8kB,GACPnqlB,KAAM,EACN1iD,KAAM,EACNkgD,KAAM,GAEV8iM,kBAAmB,EACnB46Z,cAAe/Q,GACf8Q,cAAev5kB,EACf87T,eAAgB,CACZlgY,KAAM,EACNkgD,KAAM,GAEVigV,eAAgB,CACZx4D,SAAS,EACTv9T,MAAO,EACP6oI,MAAOg5f,EACPjsoB,KAAM,EACNkgD,KAAM,GAGVje,OAAQ,EACR0lS,SAAS,EACTllP,SAAS,EACTusT,WAAW,EACX7Q,MAAO,CACHrlY,MAAO,CACH0F,KAAM,KAIdihpB,aAAa,EACb3B,cAAc,IAGlB,SAAekG,GCl7BFC,GAAe,eACfC,GAAU,UACVC,GAAU,UACVC,GAAQ,QACRC,GAAO,OACPC,GAAQ,QACRC,GAAS,SACTC,GAAQ,QAIRC,GAAkB,IAClBC,GAAgB,GAAKD,GACrBE,GAAe,GAAKD,GACpBE,GAAgB,EAAID,GACpBE,GAAiB,GAAKF,GACtBG,GAAgB,IAAMH,GACtBI,GAAgB,CACzB3qc,MAAS0qc,GACTp8Q,OAAUm8Q,GACVp8Q,MAASm8Q,GACT7xe,KAAQ4xe,GACRzve,MAASwve,GACTn1oB,QAAWk1oB,GACXtve,QAd2B,IAe3B3hJ,aAhBgC,GCPrB,YAA0B3N,GAAGD,GAIxC,OAHaC,GAAE7X,UAAY4X,GACRC,GAAEm/nB,oBAAsBp/nB,EAAEo/nB,qBAEjBP,GCNjB,YAAkB73oB,GAAM6ojB,GACnC,OAAO,IAAIhpjB,KAAKG,GAAKoB,UAAYynjB,GCDtB,YAAgBp+jB,IAC3B,IAAI4O,EAEJ,OAAI5O,cAAiBoV,KACjBxG,EAAS5O,GACFA,KACP4O,EAAS,IAAIwG,KAAKpV,KAGf4O,ECHX,YAAmB2G,GAAMsoK,GACrB,OAAc,IAAVA,GAAmC,KAApBtoK,GAAKomL,aACpBpmL,GAAKgC,SAAShC,GAAKomL,WAAa,IACzB,GAgBA,YAAqBN,GAAWr7L,EAAO8gC,EAAMu2W,GACxD,IAAIzoY,EAASysL,GAEb,GAAIA,GAAW,CACX,IAAI9lL,EAAOL,GAAOmmL,IAClB,MAAMxd,GAAQtoK,EAAKomL,WAEf76J,IAASqsnB,IACTv+oB,EAAS,IAAIwG,KAAKG,EAAKyB,cAAgBhX,EAAO,EAAG,GACjD+qZ,GAAUn8Y,EAAQ,IACfklN,IAAao5b,IAChBt+oB,EAAS,IAAIwG,KAAKG,EAAKyB,cAAezB,EAAK0B,WAAajX,EAAO,GAC/D+qZ,GAAUn8Y,EAAQivK,KACfi2C,IAAam5b,IAChBr+oB,EAASg/oB,GCpCN,YAAqBr4oB,GAAM8hY,EAAe,GACrD,IAAIw2Q,EAAiB,EACjBh3oB,EAAMtB,GAAK6rI,SAEf,IAAK5tI,MAAMqD,GACP,KAAOA,IAAQwgY,GACC,IAARxgY,EACAA,EAAM,EAENA,IAGJg3oB,IAIR,OAAOC,GAASv4oB,IAAOs4oB,EAAiBP,IDoBXS,CAAYx4oB,EAAM8hY,GAAuB,EAARr3Y,EAAWgtpB,IACjEjiQ,GAAUn8Y,EAAQivK,KACX/8I,IAASksnB,IAChBp+oB,EAAS,IAAIwG,KAAKG,EAAKyB,cAAezB,EAAK0B,WAAY1B,EAAKwB,UAAY/W,GACxE+qZ,GAAUn8Y,EAAQivK,KACfi2C,IAAai5b,GAChBn+oB,EA9BZ,YAAkB2G,GAAMsoK,GACpB,MAAMmwe,EAAc,IAAI54oB,KAAKG,IAE7By4oB,EAAYx0oB,WAAW,EAAG,EAAG,GAE7B,MAAMy0oB,GAAU14oB,GAAKo4oB,oBAAsBK,EAAYL,qBAAuBP,GAE9E,OAAOU,GAASE,EAAaC,EAASpwe,EAAQwve,IAuB7Ba,CAAS34oB,EAAMvV,GACrB8zN,IAAag5b,IAChBl+oB,EAASk/oB,GAASv4oB,EAAMvV,EAAQotpB,IAE5Bx+oB,EAAOy6K,aAAe,GACtBz6K,EAAO8K,WAAW,IAEfonB,IAAS+rnB,GAChBj+oB,EAASk/oB,GAASv4oB,EJ3CC,II2CKvV,GACjB8gC,IAAS8rnB,KAChBh+oB,EAASk/oB,GAASv4oB,EAAMvV,IAGxB8gC,IAAS8rnB,IAAgBh+oB,EAAO28Y,kBAAoB,GACpD38Y,EAAOgL,gBAAgB,GAI/B,OAAOhL,EE5DI,YAAmB2G,GAAMurB,EAAMu2W,GAC1C,OAAOu2Q,GAAY14oB,GAAOK,IAAO,EAAGurB,EAAMu2W,GCA/B,YAAkBh8M,GAAWv6J,EAAMu2W,GAC9C,MAAM9hY,EAAOL,GAAOmmL,IAEpB,OAAI9lL,GAAQ44oB,GAAU54oB,EAAMurB,EAAMu2W,GAAc1gY,YAAcpB,EAAKoB,UACxDpB,EAGJq4oB,GAAYr4oB,EAAM,EAAGurB,EAAMu2W,GCXvB,YAAsB7oX,GAAGD,GACpC,OAAIC,IAAKD,EACEC,GAAE7X,UAAY4X,EAAE5X,WAGpB,ECLI,YAAkB6X,GAAGD,GAChC,OAAOC,GAAE7X,UAAY4X,ECEV,YAAgBvuB,IAC3B,GAAIg8B,GAAQh8B,IAAQ,CAChB,IAAI4O,EAAS,GACb,QAAS43B,EAAM,EAAGA,EAAMxmC,GAAMoC,OAAQokC,IAClC53B,EAAO9M,KAAKsspB,GAAOpupB,GAAMwmC,KAG7B,OAAO53B,KACA5O,GACP,OAAOkV,GAAOlV,IAAO2W,UCVd,YAAoB6X,GAAGD,GAClC,OAAIC,IAAKD,EACE6/nB,GAAO5/nB,MAAO4/nB,GAAO7/nB,GAGzBC,KAAMD,ECFjB,YAAmBhZ,GAAM8T,EAAOouX,GAC5B,OAAO42Q,GAAiB94oB,GAAM8T,GAASqkoB,GAAcj2Q,GAG1C,YAAmBz3Y,GAAOqpB,EAAOouX,EAAUC,GACtD,MAAMniY,EAAOL,GAAOlV,IACdsupB,EAAYp5oB,GAAOmU,GACzB,IAAIpJ,GAEJ,OACIA,GADAw3X,IAAay1Q,GACJ33oB,EAAK0B,WAAaq3oB,EAAUr3oB,WAA8D,IAAhD1B,EAAKyB,cAAgBs3oB,EAAUt3oB,eAC9Eu3oB,GAAUh5oB,EAAM,IAAIH,KAAKG,EAAKyB,cAAezB,EAAK0B,YAAa+1oB,IAAQ,IAAI53oB,KAAKG,EAAKyB,cAAezB,EAAK0B,WAAa,EAAG,GAAGF,UAC7H+8M,IAAiBq5b,GACZ53oB,EAAKyB,cAAgBs3oB,EAAUt3oB,cAAgBw3oB,GAAUj5oB,EAAM,IAAIH,KAAKG,EAAKyB,cAAe,GAAIk2oB,GAAQ,GAAK,GAClHp5b,IAAiBk5b,IAAQv1Q,IAAaw1Q,GACjCsB,GAAUh5oB,EAAM+4oB,EAAW72Q,GAE3Bg3Q,GAASl5oB,EAAM8T,GAASqkoB,GAAcj2Q,GAG3Cx3X,GAAQy3X,ECtBJ,YAAkBlpX,GAAGD,EAAGuS,GACnC,IAAIhrB,EAEJ,OACIA,EADAgrB,IAASqsnB,GACF5+nB,EAAEvX,cAAgBwX,GAAExX,cACxB88M,IAAao5b,GACe,GAAxB3kpB,GAASimB,GAAGD,EAAG4+nB,IAAc5+nB,EAAEtX,WAAauX,GAAEvX,WAClD68M,IAAak5b,GACTzjpB,KAAKC,MAAMilpB,GAASlgoB,EAAGC,IAAK8+nB,IAE5B/jpB,KAAKC,MAAMilpB,GAASlgoB,EAAGC,IAAKk/nB,GAAc5snB,IAG9ChrB,ECbI,YAAmBu9X,GAAa99X,GAC3C,IAAI3G,EACJ,OACIA,EADAq4I,GAAS1xI,IACA89X,GAAYsjC,UAAUpha,IAEtBL,GAAOK,GAEb3G,ECNI,YAAoBykY,GAAan9X,GAC5C,GAAI8lB,GAAQ9lB,GAAQ,CAChB,MAAMtH,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAMtwB,EAAM9T,OAAQokC,IAClC53B,EAAO9M,KAAK60a,GAAUtjC,GAAan9X,EAAMswB,KAG7C,OAAO53B,EAGX,OAAO+na,GAAUtjC,GAAan9X,GCZnB,YAAkBkF,GAASi4X,GACtC,OAAI/hE,GAASl2T,GAAQi8X,cACVj8X,GAAQi8X,aAGfhE,GAAeA,EAAYiE,SACpBjE,EAAYiE,WAGhB,ECcX,iBAA2Bq1Q,GACvBnG,aACInqpB,KAAKqypB,OAAS,GAGlBC,iBACI,MAAO,GAGX9iiB,QACI,MAAMzqD,EAAO,IAAIwtlB,GAAa1spB,OAAOw0D,OAAO,GAAIr6D,KAAK+e,QAAS,CAC1DwwO,WAAYvvP,KAAK+e,QAAQyzoB,gBACzBxypB,KAAKsgpB,cACTv7kB,SAAKsllB,eAEEtllB,EAGXk7kB,gBAAgBlhoB,GACZ,MAAMwwO,EAAaxwO,EAAQwwO,YAAc,GACnCkja,EAAa7nD,GAAQ7rlB,EAAQ0zB,KAC7BignB,EAAa9nD,GAAQ7rlB,EAAQvQ,KAGnC,GAFAuQ,EAAQyzoB,cAAgBzzoB,EAAQwwO,WAAaA,GAExCkja,GAAcC,IAAenja,EAAWxpP,OAAQ,CACjD,MAAM0sC,EAAMggnB,EAAavlpB,KAAKC,MAAM4R,EAAQ0zB,KAAO,EACnD,IAAIjkC,GAGAA,GADAkkpB,EACM3zoB,EAAQu8X,UAAYpuY,KAAKC,MAAM4R,EAAQvQ,KAAO,EAAItB,KAAKqB,KAAKwQ,EAAQvQ,KAEpE+gP,EAAWxpP,OAGrBgZ,EAAQwwO,WAAaxwO,EAAQwwO,WAAW3gP,MAAM6jC,EAAKjkC,IAGvD,OAAOuQ,EAGX4zoB,eACI,MAAM5zoB,EAAU/e,KAAK+e,QACfhZ,EAASgZ,EAAQwwO,WAAWxpP,QAAU,EACtC0sC,EAAMwiS,GAASl2T,EAAQ0zB,KAAO1zB,EAAQ0zB,IAAM,EAAI,EACtD,IAAIjkC,EAEJ,OACIA,EADAymU,GAASl2T,EAAQvQ,MAAQuQ,EAAQvQ,IAAM,GAAM,GAAKuQ,EAAQvQ,IAAMxO,KAAK4ypB,aAAapkpB,IAC5EzI,GAAU,EAAIgZ,EAAQvQ,IAAM,GAE5BzI,GAAUgZ,EAAQu8X,UAAY,EAAI,GAGrC,CACH7oW,IAAKA,EACLjkC,IAAKA,GAIbqkpB,kBAAkB5gmB,GACd,MAAMlzC,EAAU/e,KAAK+e,QACrB,IACIvQ,EADAikC,EAAMwiS,GAASl2T,EAAQ0zB,KAAO1zB,EAAQ0zB,IAAM,EAWhD,GAPIjkC,EADAymU,GAASl2T,EAAQvQ,KACXuQ,EAAQvQ,IACXwyJ,GAAajiJ,EAAQ0zB,KAClBA,EAAM1zB,EAAQwwO,WAAWxpP,OAEzB/F,KAAK4ypB,aAAapkpB,KAAO,EAG/ByjD,EAAO,CACP,MAAM2gmB,EAAa5ypB,KAAK4ypB,aACxBngnB,EAAMkuhB,GAAWluhB,EAAK,EAAGmgnB,EAAWpkpB,KACpCA,EAAMmyjB,GAAWnyjB,EAAK,EAAGokpB,EAAWpkpB,KAGxC,MAAO,CACHikC,IAAKA,EACLjkC,IAAKA,GAIbo5D,QACI,MAAM7oD,EAAU/e,KAAK+e,QAIrB,MAAO,CACH0zB,IAJQwiS,GAASl2T,EAAQ0zB,KAAO1zB,EAAQ0zB,IAAM,EAK9CjkC,IAJQymU,GAASl2T,EAAQvQ,KAAOuQ,EAAQvQ,IAAMxO,KAAK4ypB,aAAapkpB,KAQxEskpB,eACI,OAAO9ypB,KAAK4nE,QAGhBgrlB,aACI,MAAM7zoB,EAAU/e,KAAK+e,QACrB,MAAO,CAAE0zB,IAAK,EAAGjkC,IAAKtB,KAAKsB,IAAIxO,KAAK+ypB,YAAc,EAAGh0oB,EAAQyzoB,cAAczspB,SAAWgZ,EAAQu8X,UAAY,EAAI,IAGlH03Q,eACI,MAAQvgnB,MAAKjkC,OAAQxO,KAAK2ypB,eACpB5H,EAAU/qpB,KAAK+qpB,UAIrB,MAAO,CACHrqjB,OAJS1gG,KAAK+e,QAAQ/S,SAAW++oB,EAAQxgpB,SAAWwgpB,EAAQr0oB,UACzClI,EAAMikC,GAAQ,IAGjBzyC,KAAK+e,QAAQgwE,SAAU,EAAK,GAC5CktC,IAAK8uhB,EACLt4mB,IAAKA,EACLjkC,IAAKA,GAIb++oB,gBACI/toB,MAAM+toB,gBACNvtpB,KAAKizpB,uBAGTA,uBACI,MAAQh3hB,MAAKuuQ,UAAWxqY,KAExB,GAAIwqY,EAAOzkY,OAAS,EAAG,CACnB,MAAMs/X,EAAYrlY,KAAK+e,QAAQ/S,SAAWlG,GAAIiC,GACxCilB,EAAQivG,EAAIopQ,EAAY,GACxB/6V,EAAM2xF,EAAIopQ,EAAY,GACtB6tR,GAAa1oR,EAAO,GACpB0kR,GAAY53hB,GAAKkzQ,IAEnB0oR,GAAWj3hB,IAAIopQ,EAAY,GAAK/6V,GAAO4onB,GAAWj3hB,IAAIopQ,EAAY,GAAKr4W,KACvEkmoB,GAAWn0oB,QAAQk1T,SAAU,IAE7Bi7U,GAAUjzhB,IAAIopQ,EAAY,GAAK/6V,GAAO4knB,GAAUjzhB,IAAIopQ,EAAY,GAAKr4W,KACrEkioB,GAAUnwoB,QAAQk1T,SAAU,IAKxC43U,wBACI,OAAO7rpB,KAAKmzpB,WAAWt5Q,WAG3BiyQ,wBACI,OAAO9rpB,KAAKmzpB,WAAWr5Q,WAG3B2zQ,yBACI,OAAOztpB,KAAKmzpB,WAAWC,WAG3BC,YAAYr8f,GACR,MAAQvkH,MAAKjkC,OAAQxO,KAAK2ypB,eACpB1gmB,EAAQ/kD,KAAKqB,KAAKC,GACxB,IAAI63B,EAAUn5B,KAAKC,MAAMslC,GACzB,MAAM2ra,GAAU,GAEhB,KAAO/3a,GAAW4rB,GACdmsZ,GAAQ34c,KAAK4gC,GACbA,GAAW2wH,EAGf,OAAOonT,GAGXk1M,iBAAiBt8f,GACb,MAAQhrJ,WAAU+iF,WAAY/uF,KAAK+e,SAC3B2hF,QAAOu7B,MAAKxpF,QAAQzyC,KAAKgzpB,eAC3BnqkB,GAAMozC,GAAKjwH,EAAWlG,GAAIiC,KAAMgnF,EAAU,EAAI,IAC9CqvX,GAAUp+c,KAAKqzpB,YAAYr8f,GAC3Bu8f,GAAY,GAElB,QAASppnB,GAAM,EAAGA,GAAMi0a,GAAQr4c,OAAQokC,KACpCopnB,GAAU9tpB,KAAKojF,GAAMiY,GAAMJ,GAAS09W,GAAQj0a,IAAOsI,IjFlMhC,IiFqMvB,OAAO8gnB,GAGXJ,WACI,MAAMp0oB,EAAU/e,KAAK+e,QACf6H,EAAQ5mB,KAAKqypB,OACbzqlB,EAAQ5nE,KAAK2ypB,eACb5H,EAAU/qpB,KAAK+qpB,UACf9qX,EAAO8qX,EAAQzN,UAAY11kB,EAAMn1B,IAAM,IAAMm1B,EAAMp5D,IAAMuQ,EAAQgwE,QAAUhwE,EAAQu8X,UAEzF,GAAI10X,EAAM4soB,QAAUvzX,EAAM,CACtB,MAAMwzX,GAAW10oB,EAAQ+6X,WAAW7lE,SAAWl1T,EAAQ0tX,eAAex4D,QACtErtT,EAAM4soB,MAAQvzX,EACdr5Q,EAAMwsoB,WAAapzpB,KAAKszpB,iBAAiB,GACzC1soB,EAAMizX,WAAa75Y,KAAK0zpB,0BAA0B9soB,EAAMwsoB,WAAYrI,GACpEnkoB,EAAMkzX,WAAa25Q,GAAWzzpB,KAAK0zpB,0BAA0B1zpB,KAAKszpB,iBAAiB,IAAMvI,GAAW,GAGxG,OAAOnkoB,EAGX8soB,0BAA0BH,EAAWxI,GACjC,IAAKwI,EAAUxtpB,OACX,OAAOwtpB,EAGX,MAAMptR,EAAOnmY,KAAK+e,QAAQ/S,SAAWlG,GAAIiC,GACnC8vb,EAAW3tZ,IAAa6gnB,EAAQ5kR,EAAO,IAAMj8V,IAAYA,IAAY6gnB,EAAQ5kR,EAAO,GAEpF77V,EAAMipnB,EAAUxtpB,OAAS,EAC/B,IAAIw/F,GAAa,EACjB,MAAQsyV,EAAQ07N,EAAUhujB,MAAgBA,IAAcj7D,GACpDi7D,KAGJ,IAAI0ob,GAAW3jf,EAEf,MAAQutZ,EAAQ07N,EAAUtlI,MAAcA,IAAY,GAChDA,KAGJ,OAAOslI,EAAU3kpB,MAAM22F,GAAY0ob,GAAW,GAGlD6hI,WACI,MAAQ9jpB,WAAU+iF,WAAY/uF,KAAK+e,QAC7BgsoB,EAAU/qpB,KAAK+qpB,UACfgF,EAAW/jpB,EAAW++oB,EAAQxgpB,SAAWwgpB,EAAQr0oB,QACjDyvX,EAAOn6X,EAAWlG,GAAIiC,GACtBiopB,GAAUjhkB,GAAU,EAAK,EAEzBkhkB,GAAa9pR,GADW,IAAZ6pR,GAAgB,EAAI,GACFjlpB,WAGpC,MAAO,CACHo7X,OACA8pR,cACAD,WACAjF,UACAgF,WACAnH,UARcmC,EAAQkF,KAY9BJ,UAOI,MAAQ9gkB,WAAY/uF,KAAK+e,QACzB,OAAOgwE,GAAU,EAAK,EAI1By9jB,QAAQpklB,EAAMqlE,EAAIx7E,GACd,MAAMlzC,EAAU/e,KAAK+e,SACbgwE,UAASusT,cAAcv8X,GACvB2hF,SAAOu7B,OAAKxpF,QAAQzyC,KAAKgzpB,gBACzB7sR,KAAMd,GAAWujR,cAAc5opB,KAAK8vpB,WAEtC6D,GAAU13hB,GAAIzM,QACdokiB,IAAchpD,GAAQn9d,GAEtBzgH,GAAQqunB,GAAejzkB,EAAM,GACnC,IAAI99B,GAAM+wmB,GAAe5tgB,EAAIzgH,IAC7Bsd,GAAMp9B,KAAKsB,IAAI87B,GAAM,EAAGtd,IAIxBsd,GAAMp9B,KAAKsB,IAAIwe,GAAOsd,IAEtB,IAAImqC,GAAKm0kB,IAAa57nB,GAAQylB,IAAOiuD,GACjC1f,GAAK4nkB,IAAat+mB,GAAM,EAAImI,IAAOiuD,GAEvC,OAAIkzjB,IAAct4Q,KACdt6T,GAAKvM,IAGLxiB,IACAwiB,GAAKksf,GAAWlsf,GAAIwnD,GAAIopQ,GAAY,GAAIppQ,GAAIopQ,GAAY,IACxDrkT,GAAK2/e,GAAW3/e,GAAIi7C,GAAIopQ,GAAY,GAAIppQ,GAAIopQ,GAAY,KAG5DsuR,GAAQtuR,GAAY,GAAKt2S,EAAU/N,GAAKvM,GACxCk/kB,GAAQtuR,GAAY,GAAKt2S,EAAUta,GAAKuM,GAEjC2ykB,GAGXE,UAAUnF,GAEN,MAAMrpR,EADWrlY,KAAK+e,QAAQ/S,SACDlG,GAAIiC,GAC3BgjpB,EAAU/qpB,KAAK+qpB,UACf+I,EAAepF,EAAKl/hB,QAE1BskiB,SAAazuR,EAAY,GAAKs7L,GAAW+tF,EAAKrpR,EAAY,GAAI0lR,EAAQ1lR,EAAY,GAAI0lR,EAAQ1lR,EAAY,IAC1GyuR,EAAazuR,EAAY,GAAKs7L,GAAW+tF,EAAKrpR,EAAY,GAAI0lR,EAAQ1lR,EAAY,GAAI0lR,EAAQ1lR,EAAY,IAEnGyuR,EAGXpF,KAAKtmlB,EAAMqlE,EAAIx7E,GACX,MAAMxf,EAAMvlC,KAAKC,MAAMnN,KAAK+e,QAAQ0zB,KAAO,GAC3C,IAAIzlB,EAAQo7C,EACR99B,GAAMmjG,EAEV,MAAqB,iBAAVzgH,EACPA,EAAQhtB,KAAK+uY,cAAc/hX,GACpBioT,GAASjoT,KAChBA,GAASylB,GAGM,iBAARnI,GACPA,GAAMtqC,KAAK+uY,cAAczkW,IAClB2qS,GAAS3qS,MAChBA,IAAOmI,GAGJjzB,MAAMkvoB,KAAK1hoB,EAAOsd,GAAK2nB,GAGlC8hmB,mBAAmBt7kB,GACf,MAAQsW,UAASusT,YAAWtvY,YAAahM,KAAK+e,QACxCsmX,EAAYr5X,EAAWlG,GAAIiC,IACzB24F,SAAOu7B,OAAKxpF,OAAKjkC,QAAQxO,KAAKgzpB,eAEhCpK,GAAY3shB,GAAIopQ,EAAY,GAE5Bx8S,GAAMpQ,EAAM4sT,GAElB,GAAIx8S,GAAM+/jB,IAAa//jB,GAHPozC,GAAIopQ,EAAY,GAI5B,OAAO,KAGX,IAAI1hY,IATeorF,EAAUvgF,GAAMikC,KASTo2C,GAAM+/jB,IAAalojB,GAC7C,MAAMjnF,GAAO9V,GAAQ,EAErB,OAAI23Y,EACA33Y,GAAQuJ,KAAK4zF,MAAMn9F,IACH,IAAT8V,IAAc9V,GAAQ,GAC7BA,KAGGuJ,KAAKC,MAAMxJ,IAGtBqwpB,YAAYv7kB,GACR,MAAM70D,EAAQ5jB,KAAK+zpB,mBAAmBt7kB,GAEtC,OAAc,OAAV70D,EACO,KAGJ5jB,KAAK+e,QAAQwwO,WAAW3rO,GAGnCmrX,cAAcprY,GACV,OAAO3D,KAAKi0pB,WAAWtwpB,GAASuJ,KAAKC,MAAMnN,KAAK+e,QAAQ0zB,KAAO,GAGnEyhnB,WAAWtwoB,EAAOnV,GACd,MAAMsQ,EAAU/e,KAAK+e,QAErB,OAAQtQ,EAAQsQ,EAAQyzoB,cAAgBzzoB,EAAQwwO,YAAY3rO,GAGhEuwoB,kBACI,OAAQn0pB,KAAK+e,QAAQwwO,YAAc,IAAIxpP,OAG3CqupB,eAAerkiB,GACX,MAAMhxG,EAAU/e,KAAK+e,QACfgsoB,EAAU/qpB,KAAK+qpB,UACf/7lB,EAAOjwC,EAAQ/S,SAAW++oB,EAAQxgpB,SAAWwgpB,EAAQr0oB,QACrDkxD,EAAQ7oD,EAAQwwO,WAAWxpP,OAE3BqsB,GAAS0uE,GAAMivB,GADP/gE,EAAO4Y,GACeixkB,GAEpC,MAAO,CACHpmmB,IAAKrgB,GACL5jB,IAAKo5D,EAAQx1C,IAIrBiioB,WAAW3zjB,EAAO48S,GACd,MAAMpzW,EAAWh9B,KAAKiN,IAAIna,KAAKkwpB,YAAY5yQ,IACrCq1Q,EAAe3ypB,KAAK6ypB,oBAEpB9iiB,GAAQ/vH,KAAKmwpB,aAAazvjB,EADlBiyjB,EAAankpB,IAAMmkpB,EAAalgnB,KAIxCA,GAAMkgnB,EAAalgnB,IAFRvI,EAAW6lF,GAG5B,IAAIvhH,GAAMmkpB,EAAankpB,KAFL,EAAI07B,GAAY6lF,GAIlC,OAAIvhH,GAAMikC,GA3ZS,KA4ZfjkC,GAAMikC,GA5ZS,IA+ZZ,CACHA,IAAKA,GACLjkC,IAAKA,IAIb8lpB,UAAU5zjB,EAAO48S,GACb,MAAQ7qW,IAAK6uP,EAAU9yR,IAAKgzR,GAAaxhS,KAAK4ypB,aACxChrlB,EAAQ5nE,KAAKq0pB,WAAW3zjB,EAAO48S,GAErC,MAAO,CACH7qW,IAAKkuhB,GAAW/4f,EAAMn1B,IAAK6uP,EAAUE,GACrChzR,IAAKmyjB,GAAW/4f,EAAMp5D,IAAK8yR,EAAUE,IAI7CipX,cACI,MAAMD,EAAcxqpB,KAAKwqpB,cAEzB,OAAOA,EAAYh8oB,IAAMg8oB,EAAY/3mB,IAGzC+3mB,cACI,MAAMzroB,EAAU/e,KAAK+e,SACbu8X,YAAW9Q,OAAQmgR,GAAiB5roB,EAC5C,IAAM0zB,MAAKjkC,OAAQxO,KAAK6ypB,mBAAkB,GAC1C,MAAM7loB,GAAQ9f,KAAKC,MAAMslC,GAUzB,IAAInmC,GAEJ,OAVKgvY,GAID7oW,EAAMvlC,KAAKqB,KAAKkkC,GAChBjkC,EAAMtB,KAAKC,MAAMqB,KAJjBikC,EAAMvlC,KAAKC,MAAMslC,GACjBjkC,EAAMtB,KAAKqB,KAAKC,IAShBlC,GADAmmC,EAAMk4mB,EAAar+oB,KACZq+oB,EAAar+oB,KAAOq+oB,EAAan+lB,KAAOt/C,KAAKqB,MAAMkkC,EAAMk4mB,EAAar+oB,MAAQq+oB,EAAan+lB,MAE3Fm+lB,EAAar+oB,KAGjB,CACHmmC,IAAKnmC,GAAO0gB,GACZxe,KAAMuQ,EAAQwwO,WAAWxpP,OAASyI,GAAO8sY,EAAY,EAAI,GAAK,GAAKtuX,IAI3E89nB,gBAAgBlnoB,EAAO+moB,EAAc4J,GACjC,MAAMx1oB,EAAU/e,KAAK+e,QACfu2C,EAAWv2C,EAAQ2wc,UAAY3wc,EAAQ2wc,UAAU9rc,GAAS,KAC1Dw9O,GAAWi6Y,GAAet8nB,EAAQwwO,WAAW3rO,GAAQ,IAE3D2woB,EAAaj/lB,SAAWA,EACxB,MAAMxqD,GAAO9K,KAAK8upB,cAAc1tZ,GAAUupZ,EAAc4J,GAExD,OAAO,IAAIjM,GAAUlnZ,GAAUt2P,GAAM8Y,EAAO0xC,EAAUq1lB,GAG1DgE,iBAAiBhrpB,GACb,MAAMikE,EAAQ5nE,KAAK6ypB,oBAEnB,OAAO3lpB,KAAKC,MAAMy6D,EAAMn1B,MAAQ9uC,GAASA,GAASuJ,KAAKqB,KAAKq5D,EAAMp5D,KAGtEogpB,SAASjrpB,GACL,MACMigB,EAAQjgB,EAAQuJ,KAAKC,MADXnN,KAAK+e,QACoB0zB,KAAO,GAChD,OAAOzyC,KAAKwspB,QAAQ5ooB,GAGxB4poB,eACIhuoB,MAAMguoB,eACNxtpB,KAAKw0pB,sBAGTA,sBACI,MAAQ/pR,QAAOxuQ,OAAQj8H,KACvB,GAAIyqY,GAASA,EAAM1kY,OAAQ,CACvB,MAAMs/X,EAAYrlY,KAAK+e,QAAQ/S,SAAWlG,GAAIiC,GACxCilB,EAAQivG,EAAIopQ,EAAY,GACxB/6V,EAAM2xF,EAAIopQ,EAAY,GAE5B,QAASl7V,GAAM,EAAGA,GAAMsgW,EAAM1kY,OAAQokC,KAAO,CACzC,MAAM+rI,GAAOu0N,EAAMtgW,IACf+rI,GAAKj6C,MAAQ3xF,EAAM4rI,GAAKj6C,IAAIopQ,EAAY,IAAMnvN,GAAKj6C,IAAIopQ,EAAY,GAAKr4W,IACxEkpJ,GAAKr4G,SAMrB42lB,IAAI1kiB,GACA,MAAMnoD,EAAQ5nE,KAAK6ypB,mBAAkB,IAC7BnyjB,SAAU1gG,KAAKgzpB,eACjB5goB,EAAS0uE,GAAMivB,EAAQrvB,EAAOm4iB,GAC9B+Z,EAAa5ypB,KAAK4ypB,aAIxB,OAAO5ypB,KAAKm1b,WAHAvtX,EAAMn1B,IAAMrgB,EACZw1C,EAAMp5D,IAAM4jB,EAES,EAAGwgoB,EAAWpkpB,IAAK4jB,GAGxDsioB,YAAY1noB,EAAOsd,GACf,MAAQykD,UAAS/iF,YAAahM,KAAK+e,QAC7BsmX,EAAYr5X,EAAWlG,GAAIiC,GAC3B6/D,GAAQ5nE,KAAK6ypB,mBAAkB,IAC7BnyjB,SAAOu7B,QAAQj8H,KAAKgzpB,eACtBpK,GAAY3shB,GAAIopQ,GAAat2S,EAAU,EAAI,IAK3Ct8C,GAAMm1B,GAAMn1B,KAHAzlB,EAAMq4W,GAAaujR,IAGDlojB,GAC9BlyF,GAAMo5D,GAAMn1B,KAHFnI,EAAI+6V,GAAaujR,IAGClojB,GAC5Bi0jB,GAAWznpB,KAAKulC,IAAIA,GAAKjkC,IACzBompB,GAAW1npB,KAAKsB,IAAIikC,GAAKjkC,IAE/B,GAAIompB,GAAWD,IAxhBW,IAyhBtB,MAAO,CACHlinB,IAAKkinB,GACLnmpB,IAAKompB,IAKjBlF,aACI,OAAO1vpB,KAAK4nE,QAGhBqslB,WAAWtwpB,GACP,MAAMob,EAAU/e,KAAK+e,QAIrB,OAHc/e,KAAK60pB,eACf70pB,KAAK60pB,eAAeh2oB,IAAIlb,GApiBpC,YAAiBA,GAAO0K,GACpB,GAAI1K,cAAiBoV,KAAM,CACvB,MAAMhT,EAASsI,EAAItI,OACnB,QAASokC,EAAM,EAAGA,EAAMpkC,EAAQokC,IAC5B,GAAI2qnB,GAAWzmpB,EAAI87B,GAAMxmC,IACrB,OAAOwmC,EAIf,OAAO,EAGX,OAAO97B,EAAIyR,QAAQnc,IAwhBsBmc,CAAQnc,EAAOob,EAAQyzoB,eAKhEuC,sBACI,MAAMh2oB,EAAU/e,KAAK+e,QACrB,IAMIvQ,EANAikC,EAAM,EAOV,OALIwiS,GAASl2T,EAAQ0zB,OACjBA,EAAMvlC,KAAKC,MAAM4R,EAAQ0zB,MAKzBjkC,EADAymU,GAASl2T,EAAQvQ,KACXuQ,EAAQu8X,UAAYpuY,KAAKC,MAAM4R,EAAQvQ,KAAOtB,KAAKqB,KAAKwQ,EAAQvQ,KAAO,EAEvExO,KAAK8qgB,aAAe,EAGvB,CACHr4d,IAAKA,EACLjkC,IAAKA,GAIbwmpB,gBACI,IAAKh1pB,KAAK60pB,eAAgB,CACtB,MAAMlvpB,EAAM3F,KAAK60pB,eAAiB,IAAII,GAChCzC,EAAgBxypB,KAAK+e,QAAQyzoB,cACnC,QAASronB,EAAM,EAAGA,EAAMqonB,EAAczspB,OAAQokC,IAC1CxkC,EAAI0sB,IAAImgoB,EAAcronB,GAAMA,IAKxC2ge,aACI,OAAO59f,KAAKsB,IAAIxO,KAAK+e,QAAQyzoB,cAAczspB,OAAQ/F,KAAK+ypB,YAAc,IAI9EjQ,GAAkByP,GAAc,CAC5BzqpB,KAAM,WACNkE,UAAU,EACVwgY,eAAgB,CACZv4D,SAAS,EACTv9T,MAAO,EACP6oI,MAAOg5f,GAEX/tQ,OAAQ,CACJv5O,OAAQ,GAEZqqP,WAAW,EACX8uQ,cAAc,IAGlB,SAAemI,GCpmBT2C,GAAmB,CACrBp1nB,aAAc,eACd2hJ,QAAS,WACT5lK,QAAS,QACT2lK,MAAO,QACPnC,KAAM,MACN01N,MAAO,MACPC,OAAQ,UACRtuL,MAAO,QCMLyuc,GAAa,CACf5E,GAAcC,GAASC,GAASC,GAAOC,GAAMC,GAAOC,GAAQC,IAE1DsE,GAAM,MAGZ,YAAuB7la,IACnB,IAAI3nL,EAAQ2nL,GAAW8la,OACvB,OAAKztlB,IACDA,EAAQ2nL,GAAW8la,OAASC,GAAkB/la,IAC9C3nL,EAAMn1B,IAAM55B,GAAO+uD,EAAMn1B,KACzBm1B,EAAMp5D,IAAMqK,GAAO+uD,EAAMp5D,MAGtBo5D,EAGX,SACI9nE,YAAYif,GACR/e,KAAK+e,QAAUA,EAGnBw2oB,iBACI,MAAO,CACH9inB,IAAK,EACLjkC,IAAK,GAIbgnpB,eACI,MAAO,GAGX/mpB,QACI,MAAO,GAGXihpB,aACI,MAAO,GAGXv2N,aACI,OAAO,EAGX9yb,SACI,MAAO,GAGX4tpB,aACI,OAAO,EAGXwB,cACI,OAAO,EAGX3qJ,aACI,OAAO,EAGX4qJ,SACI,OAAO,MAIf,SACI51pB,YAAYktB,EAAOsd,EAAKvrB,GACpB/e,KAAK+e,QAAUA,EACfA,EAAQs8X,aAAet8X,EAAQs8X,cAAgB,EAE/C,MAAQI,kBAAiBH,aAAcv8X,EAEvC/e,KAAKgtB,MAAQukoB,GAAYvkoB,EAAO,EAAGjO,EAAQq8X,SAAUr8X,EAAQi8X,cAC7D,MAAM26Q,GAAW31pB,KAAK41pB,iBAAiBtrnB,GACjCurnB,IAAav6Q,GAAaw5Q,GAAWxqnB,EAAKqrnB,MAAc52oB,EAAQ+2oB,WAEtE91pB,KAAKsqC,IAAMtqC,KAAK41pB,iBAAiBtrnB,GAAMgxW,EAAWu6Q,GAAY,EAAI,GAElE,MAAMpjnB,GAAM1zB,EAAQ0zB,KAAOzlB,EAC3BhtB,KAAK+1pB,WAAa/1pB,KAAK41pB,iBAAiBnjnB,IACxCzyC,KAAKg2pB,aAAev6Q,EAAkBz7Y,KAAK+1pB,WAAatjnB,GAExD,MAAMjkC,GAAMuQ,EAAQvQ,IACpB,GAAKA,GAGE,CACH,MAAMnD,IAAQiwY,GAAaw5Q,GAAWtmpB,GAAKxO,KAAK41pB,iBAAiBpnpB,MAAQ,EAAK,EAC9ExO,KAAKi2pB,SAAWj2pB,KAAK41pB,iBAAiBpnpB,IAAK,EAAOnD,IAClDrL,KAAKk2pB,WAAaz6Q,EAAkBz7Y,KAAK41pB,iBAAiBpnpB,IAAM8sY,GAAav8X,EAAQvQ,SALrFxO,KAAKi2pB,SAAWN,GAChB31pB,KAAKk2pB,WAAaz6Q,GAAmBo6Q,GAAY71pB,KAAKsqC,IAAMA,EAO5DtqC,KAAKi2pB,SAAWj2pB,KAAK+1pB,aACrB/1pB,KAAKi2pB,SAAWj2pB,KAAK+1pB,YAErB/1pB,KAAKk2pB,YAAcl2pB,KAAKg2pB,eACxBh2pB,KAAKk2pB,WAAal2pB,KAAK41pB,iBAAiB51pB,KAAKg2pB,cAAc,EAAO,IAI1ER,eACI,MAAO,CACH/inB,IAAKzyC,KAAKg2pB,aACVxnpB,IAAKxO,KAAKk2pB,YAIlBX,iBACI,IAAKv1pB,KAAKm2pB,SAAU,CAChB,MAAMp3oB,EAAU/e,KAAK+e,SAEbq8X,WAAUC,gBAAiBt8X,EAE7Bq3oB,EAASjE,GAAUnypB,KAAKg2pB,aAAch2pB,KAAK+1pB,WAAY36Q,EAAUC,GACjEg7Q,EAASlE,GAAUnypB,KAAKk2pB,WAAYl2pB,KAAK+1pB,WAAY36Q,EAAUC,GAErEr7Y,KAAKm2pB,SAAW,CAAE1jnB,IAAK2jnB,EAAQ5npB,IAAK6npB,GAGxC,OAAOr2pB,KAAKm2pB,SAGhB1npB,QACI,MAAO,CACHgkC,IAAKzyC,KAAKgtB,MACVxe,IAAKxO,KAAKsqC,KAIlBwge,aAGI,OAFa9qgB,KAAKi0pB,WAAWj0pB,KAAKsqC,MAEnBtqC,KAAK+e,QAAQu8X,UAAY,EAAI,GAGhDo0Q,aACI,MAAO,CACHj9mB,IAAKzyC,KAAK+1pB,WACVvnpB,IAAKxO,KAAKi2pB,UAIlB98N,WAAWx1b,GACP,MAAMob,EAAU/e,KAAK+e,QACrB,OAAO7R,KAAKC,MAAMglpB,GAAUxupB,EAAO3D,KAAK+1pB,WAAYh3oB,EAAQq8X,SAAUr8X,EAAQs8X,eAGlF44Q,WAAWtwpB,GACP,MAAMob,EAAU/e,KAAK+e,QACrB,OAAO7R,KAAKC,MAAMglpB,GAAUxupB,EAAO3D,KAAKgtB,MAAOjO,EAAQq8X,SAAUr8X,EAAQs8X,eAG7E82Q,UAAUxupB,GACN,MAAMob,EAAU/e,KAAK+e,QACrB,OAAOozoB,GAAUxupB,EAAO3D,KAAK+1pB,WAAYh3oB,EAAQq8X,SAAUr8X,EAAQs8X,cAGvEo6Q,cAGI,OAAOY,KAFal9N,WAAWn5b,KAAKi2pB,UAEpB,EAGpB5vpB,SACI,IAAIA,EAASrG,KAAKm4K,QAClB,IAAK9xK,EAAQ,CACT,MAAM0Y,EAAU/e,KAAK+e,QACf6oD,EAAQ5nE,KAAK0vpB,aACnB1vpB,KAAKm4K,QAAU9xK,EAAS,GAExB,QAAS6S,EAAO0uD,EAAMn1B,IAAKv5B,GAAQ0uD,EAAMp5D,KACrCnI,EAAOZ,KAAKyT,GACZA,EAAOq4oB,GAAYr4oB,EAAM6F,EAAQs8X,aAAct8X,EAAQq8X,SAAUr8X,EAAQi8X,cAIjF,OAAO30Y,EAGXqvpB,OAAO9xoB,EAAOnV,GACV,MAAMsQ,EAAU/e,KAAK+e,QAErB,OAAOwyoB,GAAY9ipB,EAAQzO,KAAKgtB,MAAQhtB,KAAK+1pB,WAAYh3oB,EAAQs8X,aAAez3X,EAAO7E,EAAQq8X,SAAUr8X,EAAQi8X,cAGrH46Q,iBAAiBjypB,EAAO4iP,EAAOl7O,GAC3B,MAAQ+vY,WAAUC,eAAcL,iBAAiBh7Y,KAAK+e,QAChDiO,GAAQhtB,KAAKgtB,MAEbw/B,GAAO2lmB,GAAUxupB,EAAOqpB,GAAOouX,EAAUC,GAC/C,IAAIi7Q,GAAc/va,EAAQr5O,KAAKqB,KAAKi+C,IAAQt/C,KAAKC,MAAMq/C,IAEvD,OAAInhD,IACAirpB,IAAejrpB,GAGZkmpB,GAAYvkoB,GAAOspoB,GAAcj7Q,EAAcD,EAAUJ,KAKxE,YAAsBj8X,GAASw3oB,EAAWC,GACtC,MAAMC,EAAiBC,GAAc33oB,GAAQwwO,YACvCona,GAAQ53oB,GAAQvQ,KAAOiopB,EAAejopB,MAAQuQ,GAAQ0zB,KAAOgknB,EAAehknB,MAC1E0oW,oBAAmBI,kBAAkBx8X,GACvC63oB,GAAW73oB,GAAQq8X,WAAag6Q,GACtC,IAIIyB,GAAWrqmB,GAAMsqmB,GAJjBC,GAAaR,EAAYpB,GAAWr1oB,QAAQy2oB,GAAa,EACzDn7Q,GAAWw7Q,GAAWzB,GAAW4B,MAAgBh4oB,GAAQq8X,SACzD99R,GAAQq5iB,EAAOtF,GAAcj2Q,IAC7B47Q,GAAa15iB,GAGjB,MAAQ9wD,IAAQ8wD,IAASi+R,IAAe,CACpCs7Q,GAAYA,IAAa17Q,EAAkBC,IAAUxsY,MAAM,GAE3D,GACIkopB,GAAWD,GAAUltkB,cAChBmtkB,IAAYP,IAAcn7Q,IAAY07Q,GAAWN,GAE1D,GAAIM,GACAtqmB,GAAOsqmB,GACPx5iB,GAAQ05iB,GAAaxqmB,WACd4uV,KAAa9jR,GAAK69hB,IAAa,CACtC3omB,GAAOt/C,KAAKqB,KAAKyopB,GAAaz7Q,IAC9B,UACOq7Q,GAIJ,CACCt5iB,GAAQi+R,KACR/uV,GAAOt/C,KAAKqB,KAAKyopB,GAAaz7Q,KAElC,MAPAH,GAAW+5Q,GAAW4B,OAAiBz/hB,GAAK69hB,IAC5C6B,GAAaL,EAAOtF,GAAcj2Q,IAClCy7Q,GAAY,MASpB93oB,GAAQs8X,aAAe7uV,GACvBztC,GAAQq8X,SAAWA,GAwDvB,iBAA+Bm3Q,GAE3B/iiB,QACI,MAAMzqD,EAAO,IAAIkwU,GAAiBpvY,OAAOw0D,OAAO,GAAIr6D,KAAK+e,SAAU/e,KAAKsgpB,cACxEv7kB,SAAKsllB,eAEEtllB,EAGXutlB,iBACI,MAAMtloB,EAAQhtB,KAAKi3pB,UAAUxopB,QAAQgkC,IACrC,OAAOzyC,KAAK+e,QAAQq8X,SAAWp7Y,KAAK+e,QAAQs8X,aAAeruX,EAG/DiznB,gBAAgBlhoB,GACZ,OAAOA,EAGXoroB,aACI3qoB,MAAM2qoB,aAEN,MAAM7J,EAAetgpB,KAAKsgpB,aACpBtpQ,EAAcspQ,EAAa/8e,KACjC,IAAIxkJ,EAAU/e,KAAK+e,QAEfwwO,EAAaxwO,EAAQwwO,YAAc,GAyBvC,GAxBKA,EAAW2na,UACZ3na,EAAa4na,GAAWngR,EAAaznJ,GACrCA,EAAW2na,SAAU,GAGzBn4oB,EAAU07nB,GAAW,CACjBh/P,iBAAiB,GAClB18X,EAAS,CACRwwO,WAAYA,EACZ98M,IAAK6nY,GAAUtjC,EAAaj4X,EAAQ0zB,KACpCjkC,IAAK8ra,GAAUtjC,EAAaj4X,EAAQvQ,KACpCwsY,aAAcC,GAASl8X,EAASi4X,KAGhCspQ,EAAa8W,SAAW9W,EAAakJ,WAAWzqoB,EAAQ/S,SAAWlG,GAAIiC,MACvEgX,EAAQ08X,iBAAkB,GAG9B18X,EAAQs4oB,gBAAkBt4oB,EAAQs4oB,iBAAmBt4oB,EAAQq8X,SAC7Dr8X,EAAQu4oB,oBAAsBv4oB,EAAQu4oB,qBAAuBv4oB,EAAQs8X,aAErEr7Y,KAAK+e,QAAUA,EACfA,EAAQyzoB,cAAgBjja,EAEpBA,EAAWxpP,OAAS,EAAG,CACvB,MAAM6hE,EAAQ8ulB,GAAcnna,GACtBisJ,GAAez8X,EAAQy8X,aAI7B,GAFAx7Y,KAAKi3pB,UAAY,IAAI/ga,GAAUtuL,EAAMn1B,IAAKm1B,EAAMp5D,IArE5D,YAAkBuQ,IACd,MAAMq8X,GAAYr8X,GAAQq8X,UAAY,IAAI//W,cAG1C,OAAIk8nB,IAF4BnC,KAAQvX,GAAQziQ,EAAU+5Q,KAxC9D,YAAyBp2oB,IACrB,MAAMwwO,EAAaxwO,GAAQwwO,WACrB33I,EAAQgzf,GAAQr7W,GAAcA,EAAWxpP,OAAS,EACxD,IACIyxpB,EAAc/ynB,EADdgznB,EAAUze,EAGd,QAAShqQ,GAAa,EAAGA,GAAap3R,EAAOo3R,KAAc,CACvD,MAAM5tI,GAAW7R,EAAWy/I,IAE5B,GAAI5tI,IAAYo2Z,EAAc,CAC1B,MAAM/9oB,GAAOu4oB,GAAiB5wZ,GAAUo2Z,GACpC/9oB,GAAO,IACPg+oB,EAAUvqpB,KAAKulC,IAAIglnB,EAASh+oB,IAGxBgrB,EADJwpnB,GAAemD,GACJN,GACA2G,GAAWtG,GAAgC,EAAfF,GAC5BJ,GACA4G,GAAWvG,GACXN,GACJ3C,GAAegD,GACXN,GACA8G,GAAWzG,GACXN,GACJzC,GAAe8C,GACXN,GAEAD,IAKnBgH,EAAep2Z,GAGnBriP,GAAQq8X,SAAW32W,GAAQksnB,GAQvB+G,CAAgB34oB,KAGhBq8X,IAAag6Q,IAjSR,SAiSer2oB,GAAQs8X,eAC5Bs8Q,GAAa54oB,IAGVA,GAyDsD64oB,CAAS74oB,IAE1Dy8X,GAAc,CACd,MAAMy7Q,GAAYj3pB,KAAKi3pB,UAAUzB,eAE3BqC,GAAkBhypB,OAAOw0D,OAAO,GAAIt7C,EAAS,CAC/Cu8X,WAAW,EACXG,iBAAiB,EACjBL,SAAU,MACV3oW,IAAKwknB,GAAUxknB,IACfjkC,IAAKyopB,GAAUzopB,IACf+sY,cAAeC,KAGbs8Q,GAAmB93pB,KAAKi3pB,UAAUl4oB,QAExC44oB,GAAaE,GAAiBC,GAAiB18Q,SAAU08Q,GAAiBz8Q,cAE1Er7Y,KAAK+3pB,cAAgB,IAAI7ha,GAAUtuL,EAAMn1B,IAAKm1B,EAAMp5D,IAAKqppB,SAEzD73pB,KAAK+3pB,cAAgB/3pB,KAAKi3pB,eAI9Bl4oB,EAAQq8X,SAAWr8X,EAAQq8X,UAAYu1Q,GACvC3wpB,KAAKi3pB,UAAYj3pB,KAAK+3pB,cAAgB,IAAIC,GAAej5oB,GAG7D/e,KAAK27Y,YAAc,GAGvB03Q,YAAYr8f,GACR,MAAQiggB,YAAWc,iBAAkB/3pB,KAC/By1pB,EAAcsC,EAActC,cAElC,IAAKz1pB,KAAK+e,QAAQy8X,eAAiBi6Q,EAC/B,OAAOj2oB,MAAM6zoB,YAAYr8f,GAG7B,MAAMonT,EAAU,GAChB,IAAI/3c,GAAS0xpB,EAAc1xpB,SACvB+rB,GAAS,EAERpyB,KAAK+e,QAAQu8X,YACdj1Y,GAASA,GAAOstC,OAAOoknB,EAAcrC,OAAOD,IAC5CrjoB,GAAS,IAGb,QAAS+X,GAAM,EAAGA,GAAM9jC,GAAON,OAAQokC,KAEnC,GADAi0a,EAAQ34c,KAAKwxpB,EAAU9E,UAAU9rpB,GAAO8jC,KAAQ/X,IAC/B,IAAb4kI,GAAkB7sH,IAAO,EAAG,CAC5B,MAAMmtF,GAAO8mV,EAAQr4c,OAAS,EAC9Bq4c,EAAQt6b,OAAOqmB,GAAK,EAAGi0a,EAAQ9mV,GAAO,IAAM8mV,EAAQ9mV,IAAQ8mV,EAAQ9mV,GAAO,IAAM0/B,GAIzF,OAAOonT,EAGXuwM,iBAAiBhrpB,GACb,MAAMikE,EAAQ5nE,KAAK4nE,QACb2nL,EAAavvP,KAAK+e,QAAQwwO,YAAc,GAE9C,OAAO0oa,GAAat0pB,EAAOikE,EAAMn1B,MAAQ,GAAKwlnB,GAAat0pB,EAAOikE,EAAMp5D,MAAQ,GAAK+gP,EAAWxpP,OAGpGolpB,eAAexnpB,GACX,OAAO22a,GAAUt6a,KAAKsgpB,aAAa/8e,KAAM5/J,GAG7CirpB,SAASjrpB,GACL,OAAO3D,KAAKwspB,QAAQ7opB,GAGxBywpB,eAAerkiB,GACX,MAAMhxG,EAAU/e,KAAK+e,SACbq8X,WAAUJ,eAAchvY,YAAa+S,EACvCgsoB,GAAU/qpB,KAAK+qpB,UACf/7lB,GAAOhjD,EAAW++oB,GAAQxgpB,SAAWwgpB,GAAQr0oB,QACnD,IAAIkxD,GAAQ5nE,KAAK4nE,QACjB,MACMx1C,GAAS0uE,GAAMivB,GADP/gE,IAAQ4Y,GAAMp5D,IAAMo5D,GAAMn1B,MACJommB,GAEpC,GAAIjxkB,GAAMn1B,KAAOm1B,GAAMp5D,IAAK,CACxB,MAAM45D,GAAOqplB,GAAS1yoB,EAAQ0zB,KAAOm1B,GAAMn1B,IAAKrgB,IAC1Cq7G,GAAKgkhB,GAAS1yoB,EAAQvQ,KAAOo5D,GAAMp5D,IAAK4jB,IAE9Cw1C,GAAQ,CACJn1B,IAAK8+mB,GAAYnplB,GAAM,EAAGgzU,EAAUJ,GACpCxsY,IAAK+ipB,GAAY9jhB,GAAI,EAAG2tQ,EAAUJ,IAI1C,OAAOpzU,GAGX4ilB,cACI,MAAO,CACH/3mB,IAAKzyC,KAAK+e,QAAQyrX,OAAOl+X,KACzBkC,IAAKxO,KAAK+3pB,cAActC,eAIhChB,IAAI1kiB,GACA,GAAI/vH,KAAKwzE,UACL,OAAO,KAGX,MAAMz0D,EAAU/e,KAAK+e,QACfgsoB,EAAU/qpB,KAAK+qpB,UACf/7lB,EAAOjwC,EAAQ/S,SAAW++oB,EAAQxgpB,SAAWwgpB,EAAQr0oB,SACnD+7B,MAAKjkC,QAAQxO,KAAKi3pB,UAAUzB,eAC9B0C,GAAcl4pB,KAAKi3pB,UAAUxopB,QAE7B2jB,GAAS0uE,GAAMivB,GADP/gE,GAAQxgD,GAAMikC,IACQommB,IAAsB95nB,EAAQgwE,SAAU,EAAK,GAC3E3mB,GAAOqplB,GAASh/mB,EAAKrgB,IACrBq7G,GAAKgkhB,GAASjjpB,GAAK4jB,IAEnB+loB,GAAWn4pB,KAAKm1b,WAAW48N,GAAO3plB,IAAO2plB,GAAOtkhB,IAAKskhB,GAAOmG,GAAYzlnB,KAAMs/mB,GAAOmG,GAAY1ppB,KAAM4jB,IAE7G,OAAI+loB,IACAA,GAAS1lnB,IAAM55B,GAAOs/oB,GAAS1lnB,KAC/B0lnB,GAAS3ppB,IAAMqK,GAAOs/oB,GAAS3ppB,KAC/B2ppB,GAAS/8Q,SAAWr8X,EAAQq8X,SAC5B+8Q,GAAS98Q,aAAet8X,EAAQs8X,cAAgB,EAChD88Q,GAASd,gBAAkBt4oB,EAAQs4oB,gBACnCc,GAASb,oBAAsBv4oB,EAAQu4oB,oBAEhCa,SARX,EAYJzD,YAAY1noB,EAAOsd,GACf,GAAItqC,KAAKwzE,UACL,OAAO,KAGX,MAAMkhlB,EAAcl1oB,MAAMk1oB,YAAY1noB,EAAOsd,GACvC8tnB,EAAap4pB,KAAKi3pB,UAAUzB,eAC5B6C,EAAer4pB,KAAKi3pB,UAAU1B,iBAC9B70jB,GAAQ0xjB,GAASgG,EAAW5ppB,IAAK4ppB,EAAW3lnB,MAAQ4lnB,EAAa7ppB,IAAM6ppB,EAAa5lnB,KACpF1zB,GAAU/e,KAAK+e,QAKrB,MAAO,CACH0zB,IAJQg/mB,GAAS2G,EAAW3lnB,IAAKiinB,EAAYjinB,IAAMiuD,IAKnDlyF,IAJQijpB,GAAS2G,EAAW3lnB,IAAKiinB,EAAYlmpB,IAAMkyF,IAKnD06S,SAAUr8X,GAAQs4oB,iBAAmBt4oB,GAAQq8X,SAC7CC,aAAct8X,GAAQu4oB,qBAAuBv4oB,GAAQs8X,cAI7Dg5Q,WAAW3zjB,EAAO48S,GACd,GAAIt9Y,KAAKwzE,UACL,MAAO,GAGX,MAAMz0D,EAAU/e,KAAK+e,QACfu5oB,EAAMv5oB,EAAQs4oB,kBAAoBjC,GAClC8C,EAAcl4pB,KAAKi3pB,UAAUxopB,SAC3BgkC,IAAKkinB,GAAUnmpB,IAAKompB,IAAa50pB,KAAKi3pB,UAAUzB,eAElDtrnB,GAAWh9B,KAAKiN,IAAIna,KAAKkwpB,YAAY5yQ,IAErCvtR,GAAQ/vH,KAAKmwpB,aAAazvjB,EADlBk0jB,GAAWD,IAEnB4D,GAAWrrpB,KAAK4zF,MAAM52D,GAAW6lF,IACjCyoiB,GAAWtrpB,KAAK4zF,OAAO,EAAI52D,IAAY6lF,IAE7C,IAAMqrR,aAAap7Y,KAAKi3pB,UAAUl4oB,QAC9B0zB,GAAM,IAAI15B,KAAK47oB,GAASr6oB,UAAYi+oB,IACpC/ppB,GAAM,IAAIuK,KAAK67oB,GAASt6oB,UAAYk+oB,IAExC,GAAIF,EAAK,CACL,MAAQn9Q,qBAAmBI,kBAAkBx8X,EAEvC05oB,GAAUnhiB,GAAK6jR,GAAkBC,KAAaG,GAAgB81Q,GAAcj2Q,IAC5Es9Q,GAAYtG,GAASwC,GAAUD,IAC/Bl7oB,GAAO24oB,GAAS5jpB,GAAKikC,IAC3B,IACIkmnB,GAAkB52F,GADlB62F,GAAgBzD,GAAWr1oB,QAAQs7X,IAGvC,GAAI3hY,GAAO43oB,GAAcj2Q,KAAaA,KAAam1Q,GAC/Cn1Q,GAAW+5Q,GAAWyD,GAAgB,GACtCD,GAAmBrhiB,GAAK6jR,GAAkBC,KAC1C2mL,IAAS22F,IAAan9Q,GAAgB,GAAKo9Q,GAAmBtH,GAAcj2Q,KAAa,EACzF3oW,GAAMg/mB,GAASkD,GAAU5yF,IACzBvzjB,GAAMijpB,GAASmD,IAAW7yF,YAEnBtojB,GAAOg/oB,IAAWr9Q,KAAa01Q,GAAO,CAC7C,IAAI+H,GAAY,EAEhB,EAAG,CACCD,KACAx9Q,GAAW+5Q,GAAWyD,IACtBC,GAAY,EACZ92F,GAAQ,EAAIsvF,GAAcj2Q,IAC1B,GACIu9Q,GAAmBx9Q,GAAkBC,IAAUy9Q,IAC/CA,WACKA,GAAY19Q,GAAkBC,IAAUr1Y,QAAUg8jB,GAAQ42F,GAAmBD,UACjFt9Q,KAAa01Q,IAAS/uF,GAAQ42F,GAAmBD,IAE1D32F,IAASA,GAAQ42F,GAAmBD,IAAa,EAC7C32F,GAAQ,IACRtvhB,GAAMg/mB,GAASkD,IAAW5yF,IAC1BvzjB,GAAMijpB,GAASmD,GAAU7yF,IACzBtvhB,GAAMg/mB,GAASh/mB,GAAKkuhB,GAAWnyjB,GAAK0ppB,EAAYzlnB,IAAKylnB,EAAY1ppB,KAAOA,IACxEA,GAAMijpB,GAASjjpB,GAAKmyjB,GAAWluhB,GAAKylnB,EAAYzlnB,IAAKylnB,EAAY1ppB,KAAOikC,MAKpF,OAAIA,IAAOjkC,IAAO4jpB,GAAS5jpB,GAAKikC,IAAO,EAC5B,CACHA,IAAKA,GACLjkC,IAAKA,GACL4sY,SAAUr8X,EAAQs4oB,iBAAmBt4oB,EAAQq8X,SAC7CC,aAAct8X,EAAQu4oB,qBAAuBv4oB,EAAQs8X,mBAL7D,EAUJi5Q,UAAU5zjB,EAAO48S,GACb,MAAM46Q,EAAcl4pB,KAAKi3pB,UAAUxopB,QAC7Bm5D,EAAQ5nE,KAAKq0pB,WAAW3zjB,EAAO48S,GAErC,OAAI11U,IACIA,EAAMn1B,IAAMylnB,EAAYzlnB,MACxBm1B,EAAMn1B,IAAMylnB,EAAYzlnB,KAExBm1B,EAAMp5D,IAAM0ppB,EAAY1ppB,MACxBo5D,EAAMp5D,IAAM0ppB,EAAY1ppB,MAIzBo5D,EAGXA,QACI,OAAO5nE,KAAKi3pB,UAAUzB,eAG1BnL,eACI7qoB,MAAM6qoB,eACNrqpB,KAAK84pB,oBAGTlO,cACIproB,MAAMoroB,cACN5qpB,KAAK27Y,YAAc,GAGvB4xQ,gBACIvtpB,KAAK+4pB,qBACLv5oB,MAAM+toB,gBAGVwL,qBACI,MAAQh6oB,UAAS48X,eAAgB37Y,KACjC,GAA2B,IAAvB27Y,EAAY51Y,OACZ,OAGJ,MAAMglpB,EAAU/qpB,KAAK+qpB,UACf/+oB,EAAW+S,EAAQ/S,SACnBwuY,EAASz7X,EAAQ48X,YAAYnB,QAAUz7X,EAAQyrX,OAAOgQ,OAEtD04Q,GAAav3Q,EAAY,GAC/B,GAAIu3Q,GAAY,CACZ,MAAMhpnB,GAAWl+B,EAAW++oB,EAAQl2kB,GAAMq+kB,GAAWj3hB,IAAI1xH,SAAW,EAAKwgpB,EAAQ51kB,GACjFn1E,KAAKkupB,cAAcgF,GAAY14Q,EAAQtwW,IAG3C,MAAMglnB,GAAYvzQ,EAAY,GAC9B,GAAIuzQ,GAAW,CACX,MAAMhlnB,GAAWl+B,EAAW++oB,EAAQlO,GAAMqS,GAAUjzhB,IAAI1xH,SAAW,EAAKwgpB,EAAQt1kB,GAChFz1E,KAAKkupB,cAAcgB,GAAW10Q,EAAQtwW,KAI9C2gnB,mBACIrroB,MAAMqroB,mBACN7qpB,KAAKg5pB,wBAGT/F,uBACIzzoB,MAAMyzoB,uBACNjzpB,KAAKi5pB,wBAGTA,wBACI,MAAQt9Q,cAAanR,UAAWxqY,KAChC,GAA2B,IAAvB27Y,EAAY51Y,OACZ,OAGJ,WAAcmzpB,GAAY9zpB,IACtB,QAAKA,GAAM2Z,QAAQk1T,UAAW7uU,GAAM62H,IAAI+4G,SAASkkb,GAAWj9hB,OACxD72H,GAAM2Z,QAAQk1T,SAAU,EACjB,IAMf,MAAMklV,EAAkBx9Q,EAAY,GACpC,GAAIw9Q,GAAmBA,EAAgBp6oB,QAAQk1T,QAC3C,QAAStlU,GAAI,EAAGA,GAAI67X,EAAOzkY,QACN03Y,EAAK07Q,EAAiB3uR,EAAO77X,KADfA,MAQvC,MAAMyqpB,EAAiBz9Q,EAAY,GACnC,GAAIy9Q,GAAkBA,EAAer6oB,QAAQk1T,QACzC,QAAStlU,GAAI67X,EAAOzkY,OAAS,EAAG4I,GAAI,GACf8uY,EAAK27Q,EAAgB5uR,EAAO77X,OADRA,KASjD+zoB,aACI,MAAMzmhB,EAAMz8G,MAAMkjoB,aACZ/mQ,EAAc37Y,KAAK27Y,YAEzB,QAAShtY,EAAI,EAAGA,EAAIgtY,EAAY51Y,OAAQ4I,IAAK,CACzC,MAAMvJ,EAAQu2Y,EAAYhtY,GACtBvJ,EAAM2Z,QAAQk1T,SACdh4M,EAAI3hE,KAAKl1D,EAAM62H,KAIvB,OAAOA,EAGX6uhB,gBAAgBlnoB,EAAO+moB,EAAc4J,EAAe,IAChD,MAAMx1oB,EAAU/e,KAAK+e,QACfu2C,EAAWv2C,EAAQ2wc,YAAc3wc,EAAQy8X,aAAez8X,EAAQ2wc,UAAU9rc,GAAS,KACnF1K,GAAOlZ,KAAK+3pB,cAAcrC,OAAO9xoB,GAGvC+moB,EAAavvoB,OAASuvoB,EAAavvoB,QAFhBuvoB,EAAa91Q,YAAY70Y,KAAK+3pB,cAAch5oB,QAAQq8X,UAGvEm5Q,EAAaj/lB,SAAWA,EAExB,MAAMxqD,GAAO9K,KAAK8upB,cAAc51oB,GAAMyxoB,EAAc4J,GACpD,GAAIzppB,GACA,OAAO,IAAIw9oB,GAAUpvoB,GAAMpO,GAAM8Y,EAAO0xC,EAAUq1lB,GAI1DmO,oBACI,MAAQ9C,eAAcE,cAAel2pB,KAAK+3pB,cACpCh5oB,EAAU/e,KAAK+e,QACf4roB,EAAe9kpB,OAAOw0D,OAAO,GAAIt7C,EAAQyrX,OAAQzrX,EAAQ48X,YAAa,CACxEx+U,MAAOs7kB,EACPxnf,OAAQlyI,EAAQkyI,SAGpB,IAA6B,IAAzB05f,EAAa12U,QACb,OAGJj0U,KAAK0qpB,uBAAuBC,GAC5BA,EAAa/C,cAAgBnP,EAEC,SAA1BkS,EAAa1uf,WACb0uf,EAAa1uf,SAAW,EACxBl9I,EAAQi6oB,uBAAwB,GAIpCrO,EAAavvoB,OAASuvoB,EAAavvoB,QADhBuvoB,EAAa91Q,YAAY70Y,KAAK+3pB,cAAch5oB,QAAQq8X,UAGvE,MAAMn8J,GAAc,CAACr7N,GAAO1K,GAAMpO,MAC9B,GAAIA,GAAM,CACN,MAAM1F,GAAQ,IAAIkjpB,GAAUpvoB,GAAMpO,GAAM8Y,GAAO,KAAM+moB,GACrD3qpB,KAAKkxB,OAAO9rB,IACZpF,KAAK27Y,YAAYl2Y,KAAKL,MAK9B65O,GAAY,EAAG+2a,EADGh2pB,KAAK8upB,cAAckH,EAAcrL,EAAc,CAAE/moB,MAAO,EAAGg0F,MAAO,KAIpFqnI,GAAY,EAAGi3a,EADCl2pB,KAAK8upB,cAAcoH,EAAYvL,EAAc,CAAE/moB,MAAO,EAAGg0F,MAAO,KAIpFohjB,wBACI,MAAMxuR,EAASxqY,KAAK27Y,YACpB,IAAK37Y,KAAK+e,QAAQi6oB,uBAAyBh5pB,KAAK+e,QAAQ/S,UAA8B,IAAlBw+X,EAAOzkY,OACvE,OAGJ,MAAMszpB,EAAc,CAACj0pB,EAAOsmpB,EAAe9noB,MACvC,MAAMlN,GAAoE,EAA5DxJ,KAAKiN,IAAIuxoB,EAAc9noB,GAAQ,GAAK8noB,EAAc9noB,KAC1D0tE,GAAQtxF,KAAKuupB,qBAAqBnppB,EAAM62H,IAAKvlH,IACrC,IAAV46E,KACAlsF,EAAM2Z,QAAQk9I,SAAW3qE,GACzBlsF,EAAM86oB,OAAO,IAAIjD,MAInByO,EAAgB1rpB,KAAK6rpB,wBAC3BwN,EAAY7uR,EAAO,GAAIkhR,EAAe,GACtC2N,EAAY7uR,EAAO,GAAIkhR,EAAeA,EAAc3lpB,OAAS,GAGjEgpY,cAAcprY,GACV,OAAO3D,KAAKi3pB,UAAU99N,WAAWx1b,GAGrC+qpB,KAAKtmlB,EAAMqlE,EAAIx7E,GACX,MAAMouW,EAAYrga,KAAKi3pB,UACvB,IAAIjqoB,EAAQo7C,EACR99B,GAAMmjG,EAENzgH,aAAiBjU,OACjBiU,EAAQqzY,EAAU8xP,UAAUnloB,IAG5Bsd,cAAevxB,OACfuxB,GAAM+1X,EAAU8xP,UAAU7nnB,KAG9B,MAAMoknB,GAAO1upB,KAAKwspB,QAAQx/nB,EAAOsd,GAAK2nB,GACtC,GAAIy8lB,GACA,OAAOA,GAAKjR,SAIpB+O,QAAQr6nB,EAAGD,EAAG+/B,GACV,IAAIjlC,EAAQmF,EACRmY,EAAMpY,EAEV,cAAWlF,IAAUksnB,KACjBlsnB,EAAQhtB,KAAK+uY,cAAc/hX,WAGpBsd,IAAQ4umB,KACf5umB,EAAMtqC,KAAK+uY,cAAczkW,IAGtB9qB,MAAMgtoB,QAAQx/nB,EAAOsd,EAAK2nB,GAGrCy9lB,aACI,MACM9nlB,EAAQ8ulB,GADE12pB,KAAK+e,QACeyzoB,eAEpC,MAAO,CACH//mB,IAAK55B,GAAO+uD,EAAMn1B,KAClBjkC,IAAKqK,GAAO+uD,EAAMp5D,MAI1B0lpB,WAAWtwoB,EAAOnV,GACd,OAAOzO,KAAKi3pB,UAAUvB,OAAO9xoB,EAAOnV,GAGxC0lpB,kBACI,OAAOn0pB,KAAKi3pB,UAAUxB,cAG1B9C,eACI,OAAO3ypB,KAAKi3pB,UAAU1B,iBAG1B5H,qBACI,OAAQ3tpB,KAAK+3pB,cAAch5oB,QAAQu8X,UAGvC+0Q,qBACQrwpB,KAAKwzE,YAITxzE,KAAK+e,QAAQwwO,WAAavvP,KAAKi3pB,UAAU5wpB,UAG7C2tpB,YAAYv7kB,GACR,MAAM70D,EAAQ5jB,KAAK+zpB,mBAAmBt7kB,GAEtC,OAAc,OAAV70D,EACO,KAGJ5jB,KAAKi3pB,UAAUvB,OAAO9xoB,GAGjCqwoB,WAAWtwpB,GACP,OAAO3D,KAAKi3pB,UAAUhD,WAAWtwpB,GAGrCoxpB,sBACI,MAAMntlB,EAAQ5nE,KAAKi3pB,UAAUvH,aAC7B,MAAO,CACHj9mB,IAAKzyC,KAAKi3pB,UAAUhD,WAAWrslB,EAAMn1B,KACrCjkC,IAAKxO,KAAKi3pB,UAAUhD,WAAWrslB,EAAMp5D,MAI7CokpB,aACI,OAAO5ypB,KAAKi3pB,UAAUxopB,QAG1Bq8f,aACI,OAAO9qgB,KAAKi3pB,UAAUnsJ,aAG1Bt3b,UACI,OAAQxzE,KAAK+e,QAAQyzoB,cAAczspB,OAGvC+spB,eACI,IAAqC,IAAjC9ypB,KAAK+e,QAAQ08X,iBAA6Bz7Y,KAAKwzE,UAC/C,OAAOxzE,KAAK4nE,QAGhB,MAAM7oD,EAAU/e,KAAK+e,QACfq5oB,EAAa1B,GAAc33oB,EAAQyzoB,eAQzC,OANkB,IAAIt8Z,GAAUkia,EAAW3lnB,IAAK2lnB,EAAW5ppB,IAAK3I,OAAOw0D,OAAO,GAAIt7C,EAAS,CACvFu8X,WAAW,EACXG,iBAAiB,EACjBq6Q,WAAY/2oB,EAAQu8X,aAGPk6Q,gBAIzB1S,GAAkB7tQ,GAAkB,CAChCntY,KAAMkpE,EACNw5T,OAAQ,CACJqK,YAAaqgR,IAEjBv5Q,YAAa,CACT1nE,SAAS,GAEbknE,kBAAmB,CACfr7W,aAAc,CAAE,EAAG,GAAI,KACvB2hJ,QAAS,CAAE,EAAG,EAAG,EAAG,GAAI,IACxB5lK,QAAS,CAAE,EAAG,EAAG,EAAG,GAAI,IACxB2lK,MAAO,CAAE,EAAG,EAAG,GACfnC,KAAM,CAAE,EAAG,EAAG,GACd01N,MAAO,CAAE,EAAG,GACZC,OAAQ,CAAE,EAAG,EAAG,EAAG,GACnBtuL,MAAO,CAAE,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,KAEjC60L,cAAe,KAGnB,SAAetG,GC15BA,YAAetxY,GAAO6oD,GACjC,OAAOs0C,GAAM5zF,KAAKC,MAAMxJ,GAAQ6oD,GAAQA,EAAMqslB,GCDnC,YAAcl1oB,GAAO6oD,GAChC,OAAOs0C,GAAM5zF,KAAKqB,KAAK5K,GAAQ6oD,GAAQA,EAAMqslB,GCFlC,YAAyBl1oB,IACpC,OAAOuJ,KAAKsB,IAAItB,KAAKulC,IAAI9uC,GJHJ,WKezB,MAAM21pB,GAAkBpspB,KAAK06F,IAAI,IAAI,GAErC,iBAA0B0ojB,GAEtBxwpB,YAAY6vpB,EAAWC,EAAW7woB,EAASuhoB,GACvC9goB,MAAM3Z,OAAOw0D,OAAO,GAAIt7C,EAAS,CAC7B4woB,UAAWA,EACXC,UAAWA,IACXtP,GAGRL,gBAAgBlhoB,GACZ,MAAMw6oB,EA4Md,YAAyB5J,GAAWC,EAAW7woB,GAC3C,MAAMg7X,EAAch7X,EAAQg7X,YAE5B,IAAIy/Q,ECxOO,YAAqB/mnB,GAAKjkC,EAAK86kB,GAC1C,IAAK72iB,KAAQjkC,EACT,OAAO,EAGX,IAAIirpB,EAEJ,GAAIhnnB,IAAO,GAAKjkC,GAAO,EAAG,CACtB,MAAM4rJ,EAAW3nH,KAAQjkC,EAAM,EAAIikC,GAEnC,IAAIh5B,GAAQjL,EAAM4rJ,GAAY5rJ,EAC9B,IAAe,IAAX86kB,IAAsBA,GAAU7vkB,ENArB,GMCX,OAAO,EAGXggpB,EAAUvspB,KAAKsB,IAAI,EAAG4rJ,GAAa5rJ,EAAM4rJ,GAAY,QAErDq/f,EAAUhnnB,GAGd,OAAOgnnB,EDoNOC,CAAY/J,GAAWC,EAAW71Q,GAC5C4/Q,EEzOO,YAAqBlnnB,GAAKjkC,EAAK86kB,GAC1C,IAAK72iB,KAAQjkC,EACT,OAAO,EAGX,IAAIorpB,EAEJ,GAAInnnB,IAAO,GAAKjkC,GAAO,EAAG,CACtB,MAAM6rJ,EAAW5nH,KAAQjkC,EAAM,EAAIA,EAEnC,IAAIiL,EAAOvM,KAAKiN,KAAKkgJ,EAAW5nH,IAAO4nH,GACvC,IAAe,IAAXivb,IAAsBA,GAAU7vkB,EPArB,GOCX,OAAO,EAGXmgpB,EAAU1spB,KAAKulC,IAAI,EAAG4nH,GAAa5nH,GAAM4nH,GAAY,QAErDu/f,EAAUprpB,EAGd,OAAOorpB,EFqNOC,CAAYlK,GAAWC,EAAW71Q,GAEhD,MAAMsH,GAAYy4Q,GAAcN,EAASG,GACnCJ,GAAc,CAChBl4Q,UAAWA,IAGf,OAAiC,IAA7BtiY,EAAQg7oB,mBACJP,EAAU,GAAKQ,GAAeR,EAASn4Q,GAAW,EAAI,KACtDm4Q,GAAWn4Q,IAGXs4Q,EAAU,GAAKK,GAAeL,EAASt4Q,GAAW,EAAI,KACtDs4Q,GAAWt4Q,KAInBk4Q,GAAY9mnB,IAAMtlC,GAAMqspB,EAASn4Q,IACjCk4Q,GAAY/qpB,IAAMD,GAAKorpB,EAASt4Q,IAEzBk4Q,GApOiBU,CAAgBl7oB,EAAQ4woB,UAAW5woB,EAAQ6woB,UAAW7woB,GAC1E,YAAKm7oB,aAsOb,YAA0BX,GAAax6oB,GACnC,MAAO,CACH0zB,IAAKm4jB,GAAQ7rlB,EAAQ0zB,KAAOvlC,KAAKulC,IAAI8mnB,GAAY9mnB,IAAK1zB,EAAQ0zB,KAAO8mnB,GAAY9mnB,IACjFjkC,IAAKo8lB,GAAQ7rlB,EAAQvQ,KAAOtB,KAAKsB,IAAI+qpB,GAAY/qpB,IAAKuQ,EAAQvQ,KAAO+qpB,GAAY/qpB,IACjF6yY,UAAWk4Q,GAAYl4Q,WA1OH84Q,CAAiBZ,EAAax6oB,GAuP1D,YAAqBw6oB,GAAaa,GAC9B,IACIC,EAAYC,EADZv7oB,EAAUq7oB,EAGd,GAAIA,EAAa,EAbrB,YAAyBr7oB,GAASmkG,GAC9B,QAAS/4E,EAAM,EAAGA,EAAM+4E,EAAOn9G,OAAQokC,IAAO,CAC1C,MAAM0gB,EAAQq4D,EAAO/4E,GACE,OAAnBprB,GAAQ8rC,KACR9rC,GAAQ8rC,QAAS1lD,KAUrBo1pB,CAAgBH,EAAa,CAAE,MAAO,QAEtCC,EAAazvD,GAAQwvD,EAAY3nnB,KACjC6nnB,EAAa1vD,GAAQwvD,EAAY5rpB,KAEjC,MAAMgspB,GAAgBH,GAAcC,EAEhCE,IACIJ,EAAY3nnB,MAAQ2nnB,EAAY5rpB,MAC5B4rpB,EAAY3nnB,IAAM,EAClB2nnB,EAAY3nnB,IAAM,EAElB2nnB,EAAY5rpB,IAAM,GAK1B4rpB,EAAY/4Q,WACZk4Q,GAAY9mnB,IAAMtlC,GAAMospB,GAAY9mnB,IAAK2nnB,EAAY/4Q,WACrDk4Q,GAAY/qpB,IAAMD,GAAKgrpB,GAAY/qpB,IAAK4rpB,EAAY/4Q,YAC7Cm5Q,KACPz7oB,EAAU07nB,GAAW8e,GAAaa,GAGlCb,GAAYl4Q,UAAYy4Q,GAAc/6oB,EAAQ0zB,IAAK1zB,EAAQvQ,MAInE+qpB,GAAYj4Q,WAAaviY,EAAQsiY,WAAak4Q,GAAYl4Q,WAAa,EAEvE,MAAM9uY,EAASkooB,GAAW8e,GAAax6oB,GACvC,OAAIxM,EAAOkgC,KAAOlgC,EAAO/D,MACjB6rpB,IAAeC,EACf/npB,EAAO/D,IAAM+D,EAAOkgC,IAAMlgC,EAAO8uY,WACzBg5Q,GAAcC,IACtB/npB,EAAOkgC,IAAMlgC,EAAO/D,IAAM+D,EAAO8uY,YAIlC9uY,EAjSIkopB,CAAYlB,EAAax6oB,GAGpCoroB,aACInqpB,KAAKshS,SAAWthS,KAAKk6pB,aAAaznnB,IAClCzyC,KAAKwhS,SAAWxhS,KAAKk6pB,aAAa1rpB,IAClCxO,KAAK06pB,eAAiB16pB,KAAKk6pB,aAAa74Q,UACxCrhZ,KAAK2vpB,UAAY3vpB,KAAK+e,QAAQ4woB,UAC9B3vpB,KAAK4vpB,UAAY5vpB,KAAK+e,QAAQ6woB,UAGlCpgiB,QACI,OAAO,IAAImriB,GACP36pB,KAAK2vpB,UACL3vpB,KAAK4vpB,UACL/ppB,OAAOw0D,OAAO,GAAIr6D,KAAK+e,SACvB/e,KAAKsgpB,cAIb75E,aACI,OAAO,EAGX7+f,QACI,MAAM7oD,EAAU/e,KAAK+e,QACrB,MAAO,CAAE0zB,IAAK1zB,EAAQ0zB,IAAKjkC,IAAKuQ,EAAQvQ,KAG5CospB,aAAan6F,GACT,GAAkB,IAAdA,EACA,OAAO,EAGX,MAAM1hjB,EAAU/e,KAAK+e,QAGrB,OAAO7R,KAAKC,MAAM2zF,IAFJ/hF,EAAQvQ,IAAMuQ,EAAQ0zB,KAEJguhB,EvF7DT,IuF6DwC,EAGnE6yF,iBAAiB7unB,EAAMknnB,GACnB,MAAM5soB,EAAU/e,KAAK+e,SACbixoB,UAASC,aAAYlF,WAASgF,aAAa/vpB,KAAK8vpB,WAGlDtjmB,GAAO/nB,GADCsrnB,IADAhxoB,EAAQvQ,IAAMuQ,EAAQ0zB,MAG9BoonB,GAAY76pB,KAAK46pB,aAAan2nB,GAC9B8unB,GAAY,GAClB,IAAI1qkB,GAAMkikB,GAAQkF,GACd6K,GAAW,EAEXnP,IACAmP,GAAWnP,EAAWlnnB,GAG1B,QAAS0F,GAAM,EAAGA,GAAM0wnB,GAAW1wnB,KAC3BA,GAAM2wnB,IAAa,GACnBvH,GAAU9tpB,KAAKq7F,GAAMjY,GvFjFN,IuFoFnBA,IAAYr8B,GAAOwjmB,EAGvB,OAAOuD,GAGX1H,wBACI,OAAO7rpB,KAAKszpB,iBAAiBtzpB,KAAK+e,QAAQsiY,WAG9CyqQ,wBACI,OAAO9rpB,KAAKszpB,iBAAiBtzpB,KAAK+e,QAAQuiY,WAG9CkrQ,QAAQr6nB,EAAGD,EAAG+/B,GAAQ,GAClB,MAAMlzC,EAAU/e,KAAK+e,SACbonX,OAAM6pR,WAASjF,WAASgF,YAAUnH,cAAc5opB,KAAK8vpB,WACvDtjmB,GAAOwjmB,IAAWD,IAAYhxoB,EAAQvQ,IAAMuQ,EAAQ0zB,MAE1D,IAAIzlB,GAAQqunB,GAAelpnB,EAAGD,GAAK,GAC/BoY,GAAM+wmB,GAAenpnB,EAAGC,GAAK,GAE7B8/B,IACAjlC,GAAQ2ziB,GAAW3ziB,GAAOjO,EAAQ0zB,IAAK1zB,EAAQvQ,KAC/C87B,GAAMq2hB,GAAWr2hB,GAAKvrB,EAAQ0zB,IAAK1zB,EAAQvQ,MAG/C,MAAMimE,GAAKvnE,KAAKulC,IAAIzlB,GAAOsd,IAAOvrB,EAAQ0zB,IACpCuuC,GAAK9zE,KAAKsB,IAAIwe,GAAOsd,IAAOvrB,EAAQ0zB,IAEpCkhnB,GAAU,IAAI1W,GAAI8N,GAAQ51kB,GAAI41kB,GAAQl2kB,GAAIk2kB,GAAQ51kB,GAAI41kB,GAAQl2kB,IACpE8+kB,UAAQxtR,EAAO,GAAK40R,GAAgBnS,GAAYp8lB,IAAQwjmB,GAAU,EAAIv7kB,GAAKuM,KAC3E2ykB,GAAQxtR,EAAO,GAAK40R,GAAgBnS,GAAYp8lB,IAAQwjmB,GAAU,EAAIhvkB,GAAKvM,KAEpEk/kB,GAGXrsnB,SAASmxC,GACL,MAAM15D,EAAU/e,KAAK+e,QACfvQ,EAAM8/C,OAAOvvC,EAAQvQ,KACrBikC,EAAM6b,OAAOvvC,EAAQ0zB,KACrBrgB,EAASpyB,KAAKkwpB,YAAYz3kB,GAGhC,OAAIrmD,EAAS,GAAKA,EAAS,EAChB,KAIJ0uE,GADOruD,EANMrgB,GAAU5jB,EAAMikC,GAOhBommB,GAGxBub,eAAerkiB,GACX,MAAMhxG,EAAU/e,KAAK+e,SACb/S,WAAU+iF,UAASvgF,MAAKikC,QAAQ1zB,GAChCgxoB,aAAa/vpB,KAAK8vpB,WAG1B,IAAI19nB,GAAS0uE,GAAMivB,GADLggiB,IADAvhpB,EAAMikC,KAEcommB,GAElC,OAAK7soB,GAAY+iF,MAAc/iF,GAAY+iF,KACvC38D,IAAUA,IAGP,CACHqgB,IAAKA,GAAMrgB,GACX5jB,IAAKA,EAAM4jB,GACXA,OAAQA,IAIhBq4nB,cACI,OAAOzqpB,KAAK46pB,aAAa56pB,KAAK+e,QAAQsiY,WAG1CypQ,gBAAgBlnoB,EAAO+moB,EAAc4J,GACjC,MAAMx1oB,EAAU/e,KAAK+e,QACfpb,EAAQm9F,GAAM/hF,EAAQ0zB,IAAO7uB,EAAQ7E,EAAQsiY,UAAYw3P,GACzD/toB,GAAO9K,KAAK8upB,cAAcnrpB,EAAOgnpB,EAAc4J,GAErD,OAAO,IAAIjM,GAAU3kpB,EAAOmH,GAAM8Y,EAAO,KAAM+moB,GAGnDgE,iBAAiBhrpB,GACb,MAAMikE,EAAQ5nE,KAAK4nE,QACnB,OAAOA,EAAMn1B,KAAO9uC,GAASA,GAASikE,EAAMp5D,IAGhDimpB,IAAI1kiB,GACA,MAAMnoD,EAAQ5nE,KAAKo0pB,eAAerkiB,GAClC,OAAO/vH,KAAKm1b,WAAWvtX,EAAMn1B,IAAKm1B,EAAMp5D,IAAKxO,KAAKshS,SAAUthS,KAAKwhS,SAAU55N,EAAMx1C,QAGrFsioB,YAAY1noB,EAAOsd,GACf,MAAMm8hB,EAAazmkB,KAAKsnC,SAASta,GAC3B05iB,EAAW1mkB,KAAKsnC,SAASgD,GACzBmI,EAAMvlC,KAAKulC,IAAIg0hB,EAAYC,GAC3Bl4jB,GAAMtB,KAAKsB,IAAIi4jB,EAAYC,GAEjC,GAAI1mkB,KAAK0+Z,aAAajsX,EAAKjkC,IACvB,MAAO,CACHikC,IAAKA,EACLjkC,IAAKA,IAKjB6lpB,WAAW3zjB,EAAO48S,GACd,MAAMpzW,EAAWh9B,KAAKiN,IAAIna,KAAKkwpB,YAAY5yQ,IAErCvtR,EAAQ/vH,KAAKmwpB,aAAazvjB,EADlB1gG,KAAK+e,QAAQvQ,IAAMxO,KAAK+e,QAAQ0zB,KAGxC+lnB,IAAY,EAAItunB,GAAY6lF,EAC5Bt9E,GAAMquD,GAAM9gG,KAAK+e,QAAQ0zB,IAFdvI,EAAW6lF,EAEmB8ohB,GAC/C,IAAIrqoB,GAAMsyF,GAAM9gG,KAAK+e,QAAQvQ,IAAMgqpB,GAAU3f,GAE7C,OAAIrqoB,GAAMikC,GAAM6mnB,KACZ9qpB,GAAMikC,GAAM6mnB,IAGT,CACH7mnB,IAAKA,GACLjkC,IAAKA,IAIb8lpB,UAAU5zjB,EAAO48S,GACb,MAAQh8G,WAAUE,YAAaxhS,KACzB4nE,EAAQ5nE,KAAKq0pB,WAAW3zjB,EAAO48S,GAErC,MAAO,CACH7qW,IAAKkuhB,GAAW/4f,EAAMn1B,IAAK6uP,EAAUE,GACrChzR,IAAKmyjB,GAAW/4f,EAAMp5D,IAAK8yR,EAAUE,IAI7Ck9H,aAAajsX,EAAKjkC,GACd,OAAOA,EAAMikC,EAAM6mnB,IA+F3B,YAAwB31pB,GAAO67jB,EAASijB,GACpC,MAAM/iB,EAAY5+d,GAAM5zF,KAAKiN,IAAIxW,GAAQ67jB,GAAUq5E,GAGnD,OAAqB,IAAdn5E,GAAmBA,EAFRF,GAAW,EAAIijB,GAKrCqgE,GAAkB6X,GAAa,CAC3B7ypB,KAAM,UACN2qC,IAAK,EACLjkC,IAAK,EACLxC,UAAU,EACVwgY,eAAgB,CACZv4D,SAAS,EACTv9T,MAAO,EACP6oI,MAAOg5f,GAEX/tQ,OAAQ,CACJpvX,OAAQ,0BAEZ61I,OAAQ,IAGZ,SAAe0pgB,GGzUf,iBAA4BrK,GACxBxwpB,YAAY6vpB,EAAWC,EAAW6K,EAAana,GAC3C,MAAM7tmB,EAAM55B,GAAO82oB,GACbnhpB,GAAMqK,GAAO+2oB,GAEb54Q,GAAcspQ,EAAa/8e,KACjC,IAAIxkJ,GAAU07oB,GAAe,GAC7B17oB,GAAU07nB,GAAW17nB,IAAW,GAAI,CAChC0zB,IAAK6nY,GAAUtjC,GAAaj4X,GAAQ0zB,KACpCjkC,IAAK8ra,GAAUtjC,GAAaj4X,GAAQvQ,KACpC8gP,kBAAmB6na,GAAWngR,GAAaj4X,GAAQi8oB,oBAAsBj8oB,GAAQuwO,mBACjF0rJ,aAAcC,GAASl8X,GAASi4X,MAEpCj4X,GA8LR,YAAuB4woB,GAAWC,EAAW7woB,GACzC,MAAM0zB,EAAM1zB,EAAQ0zB,KAAOk9mB,GACrBnhpB,EAAMuQ,EAAQvQ,KAAOohpB,EACrBx0Q,EAAWr8X,EAAQq8X,WAAa5sY,GAAOikC,EAnBjD,YAAmBs9E,IACf,IAAItrF,EAAOisnB,GAEX,OAAI3giB,IAASqhiB,GACT3snB,EAAOqsnB,GACJpmiB,IAAaymiB,GAChB1snB,EAAOosnB,GACA9giB,IAASmhiB,GAChBzsnB,EAAOmsnB,GACA7giB,IAASkhiB,KAChBxsnB,EAAOksnB,IAGJlsnB,EAM4Cw2nB,CAAUjJ,GAAiBxjpB,EAAKikC,IAAQi+mB,IACrFwK,GAAe7J,GAAcj2Q,GAC7BJ,GAAej8X,EAAQi8X,cAAgB,EACvCw+Q,GAAU1H,GAAUC,GAAOt/mB,GAAO,EAAG2oW,EAAUJ,KAAiBniY,GAAOrK,GACvEmrpB,GAAUwB,GAASpJ,GAAOvjpB,GAAO,EAAG4sY,EAAUJ,IAE9CqG,IADgBtiY,EAAQsiY,UAAYtiY,EAAQsiY,eAAYl8Y,IAC3BoJ,GACfurpB,GAAcN,GAAQl/oB,UAAWq/oB,GAAQr/oB,WACzC4gpB,IACAA,GACdE,GAAclvpB,GAASstpB,GAASG,GAASv+Q,GAEzCigR,GADa9spB,GAAK6spB,GAAa/5Q,IACL+5Q,GAC1Bh+T,GAAOlwV,KAAKC,MAAMkupB,GAAa,GAC/BC,GAAOD,GAAaj+T,GAE1B,OAAKr+U,EAAQq8X,iBACFr8X,EAAQq8X,SAGnBr8X,EAAQq8X,SAAWr8X,EAAQq8X,UAAYA,EACvCr8X,EAAQ0zB,IAAM1zB,EAAQ0zB,KAAO8+mB,GAAYiI,IAAUp8T,GAAMg+C,EAAUJ,IACnEj8X,EAAQvQ,IAAMuQ,EAAQvQ,KAAO+ipB,GAAYoI,GAAS2B,GAAMlgR,EAAUJ,IAClEj8X,EAAQuiY,UAAYviY,EAAQuiY,WAAaD,GAAY,EACrDtiY,EAAQsiY,UAAYA,GAEbtiY,EA3NOw8oB,CAAc9onB,EAAKjkC,GAAKuQ,IAElCS,MAAMT,GAASuhoB,GAEftgpB,KAAKg3Y,YAAcA,GACnBh3Y,KAAK2vpB,UAAYl9mB,EACjBzyC,KAAK4vpB,UAAYphpB,GAEjB,MAAMwsY,GAAej8X,GAAQi8X,cAAgB,EAC7Ch7Y,KAAKshS,SAAWywX,GAAOD,GAAUC,GAAOt/mB,GAAO,EAAG1zB,GAAQq8X,SAAUJ,KACpEh7Y,KAAKwhS,SAAWuwX,GAAOoJ,GAASpJ,GAAOvjpB,IAAO,EAAGuQ,GAAQq8X,SAAUJ,KAGvExrR,QACI,OAAO,IAAIolR,GAAc50Y,KAAK2vpB,UAAW3vpB,KAAK4vpB,UAAW/ppB,OAAOw0D,OAAO,GAAIr6D,KAAK+e,SAAU/e,KAAKsgpB,cAGnG14kB,QACI,MAAM7oD,EAAU/e,KAAK+e,QACrB,MAAO,CAAE0zB,IAAK1zB,EAAQ0zB,IAAKjkC,IAAKuQ,EAAQvQ,KAG5CospB,aAAan6F,GACT,MAAM1hjB,EAAU/e,KAAK+e,QAErB,OAAO7R,KAAKC,MACRjB,GAAS6S,EAAQ0zB,IAAK1zB,EAAQvQ,IAAKuQ,EAAQq8X,UAAYqlL,EAAY,GAI3E6yF,iBAAiB9mmB,GACb,MAAMztC,EAAU/e,KAAK+e,SACbixoB,QAAS3+lB,EAAK0+lB,WAAUnH,UAAW57nB,GAAUhtB,KAAK8vpB,WACpD+K,GAAY76pB,KAAK46pB,aAAapumB,GAE9Bk0C,GAAQqvjB,EADIqC,GAASrzoB,EAAQvQ,IAAKuQ,EAAQ0zB,KAE1CuoW,GAAej8X,EAAQi8X,cAAgB,EAEvCu4Q,GAAY,CAAEvmoB,GACpB,QAASre,GAAI,EAAGA,GAAIkspB,GAAWlspB,KAAK,CAChC,MACMk6E,GAAM77D,EAAQoloB,GADPb,GAAYxyoB,EAAQ0zB,IAAK9jC,GAAI69C,EAAMztC,EAAQq8X,SAAUJ,IAC/Bj8X,EAAQ0zB,KAAOiuD,GAAQrvC,EAE1DkimB,GAAU9tpB,KAAKq7F,GAAMjY,G1FlEF,I0FqEvB,OAAO0qkB,GAGX1H,wBACI,OAAO7rpB,KAAKszpB,iBAAiBtzpB,KAAK+e,QAAQsiY,WAG9CyqQ,wBACI,OAAO9rpB,KAAKszpB,iBAAiBtzpB,KAAK+e,QAAQuiY,WAG9CkrQ,QAAQr6nB,EAAGD,EAAG+/B,GACV,OAAO0omB,0BACH36pB,KAAMs6a,GAAUt6a,KAAKg3Y,YAAa7kX,GAAImoZ,GAAUt6a,KAAKg3Y,YAAa9kX,GAAI+/B,GAI9E3qB,SAASmxC,GACL,MAAM90E,EAAQg3pB,2BAAoC36pB,KAAMy4E,GAExD,OAAiB,OAAV90E,EAAiBkV,GAAOlV,GAAS,KAG5C8mpB,cACI,OAAOzqpB,KAAK46pB,aAAa56pB,KAAK+e,QAAQsiY,WAG1CypQ,gBAAgBlnoB,EAAO+moB,EAAc4J,GACjC,MAAMx1oB,EAAU/e,KAAK+e,QACfqT,EAASxO,EAAQ7E,EAAQsiY,UAE/B,IAAInoY,GAAO6F,EAAQ0zB,IAEfrgB,EAAS,IACTlZ,GAAOq4oB,GAAYr4oB,GAAMkZ,EAAQrT,EAAQq8X,SAJxBr8X,EAAQi8X,cAAgB,IAQ7C2vQ,EAAavvoB,OAASuvoB,EAAavvoB,QADhBuvoB,EAAa91Q,YAAY91X,EAAQq8X,UAGpD,MAAMtwY,GAAO9K,KAAK8upB,cAAc51oB,GAAMyxoB,EAAc4J,GACpD,OAAO,IAAIjM,GAAUpvoB,GAAMpO,GAAM8Y,EAAO,KAAM+moB,GAGlDyJ,eAAerkiB,GACX,MAAMhxG,EAAU/e,KAAK+e,QACfgsoB,EAAU/qpB,KAAK+qpB,WACb/+oB,WAAU+iF,WAAYhwE,EACxBiwC,GAAOhjD,EAAW++oB,EAAQxgpB,SAAWwgpB,EAAQr0oB,QAC7CkxD,GAAQ5nE,KAAK4nE,QACb84B,GAAQ1xC,GAAOojmB,GAASxqlB,GAAMp5D,IAAKo5D,GAAMn1B,KAE/C,IAAIrgB,GAAS0uE,GAAMivB,EAAQrvB,GAAOm4iB,GAQlC,OAPK7soB,GAAY+iF,MAAc/iF,IAAY+iF,KACvC38D,IAAUA,IAMP,CACHqgB,IAJOg/mB,GAAS1yoB,EAAQ0zB,IAAKrgB,IAK7B5jB,IAJKijpB,GAAS1yoB,EAAQvQ,IAAK4jB,IAK3BA,OAAQA,IAIhBu8nB,iBAAiBhrpB,GACb,MAAMikE,EAAQ5nE,KAAK4nE,QAEnB,OAAOqwlB,GAAat0pB,EAAOikE,EAAMn1B,MAAQ,GAAKwlnB,GAAat0pB,EAAOikE,EAAMp5D,MAAQ,EAGpFimpB,IAAI1kiB,GACA,MAAMnoD,EAAQ5nE,KAAKo0pB,eAAerkiB,GAAO,GACnCyriB,EAAgBx7pB,KAAKm1b,WAAW48N,GAAOnqlB,EAAMn1B,KAAMs/mB,GAAOnqlB,EAAMp5D,KAAMxO,KAAKshS,SAAUthS,KAAKwhS,SAAU55N,EAAMx1C,QAEhH,GAAIopoB,EACA,MAAO,CACH/onB,IAAK55B,GAAO2ipB,EAAc/onB,KAC1BjkC,IAAKqK,GAAO2ipB,EAAchtpB,MAKtCkmpB,YAAY1noB,EAAOsd,GACf,MAAMm8hB,EAAazmkB,KAAKsnC,SAASta,GAC3B05iB,EAAW1mkB,KAAKsnC,SAASgD,GACzBmI,EAAMvlC,KAAKulC,IAAIg0hB,EAAYC,GAC3Bl4jB,GAAMtB,KAAKsB,IAAIi4jB,EAAYC,GAEjC,MAAO,CACHj0hB,IAAK55B,GAAO45B,GACZjkC,IAAKqK,GAAOrK,KAIpB6lpB,WAAW3zjB,EAAO48S,GACd,MAAMpzW,EAAWh9B,KAAKiN,IAAIna,KAAKkwpB,YAAY5yQ,IAErCvtR,EAAQ/vH,KAAKmwpB,aAAazvjB,EADlB1gG,KAAK+e,QAAQvQ,IAAMxO,KAAK+e,QAAQ0zB,KAExC8lnB,GAAWrunB,EAAW6lF,EACtByoiB,IAAY,EAAItunB,GAAY6lF,EAC5Bt9E,GAAM55B,GAAOk5oB,GAAO/xpB,KAAK+e,QAAQ0zB,KAAO8lnB,IAC9C,IAAI/ppB,GAAMqK,GAAOk5oB,GAAO/xpB,KAAK+e,QAAQvQ,KAAOgqpB,IAE5C,OAAIhqpB,GAAMikC,GAvKM,MAwKZjkC,GAAMqK,GAAOk5oB,GAAOt/mB,IAxKR,MA2KT,CACHA,IAAKA,GACLjkC,IAAKA,IAIb8lpB,UAAU5zjB,EAAO48S,GACb,MAAM11U,EAAQ5nE,KAAKq0pB,WAAW3zjB,EAAO48S,GAIrC,MAAO,CACH7qW,IAJQ55B,GAAO8njB,GAAWoxF,GAAOnqlB,EAAMn1B,KAAMzyC,KAAKshS,SAAUthS,KAAKwhS,WAKjEhzR,IAJQqK,GAAO8njB,GAAWoxF,GAAOnqlB,EAAMp5D,KAAMxO,KAAKshS,SAAUthS,KAAKwhS,aAyD7EshX,GAAkBluQ,GAAe,CAC7B9sY,KAAMkpE,EACNw7T,eAAgB,CACZv4D,SAAS,EACTv9T,MAAO,EACP6oI,MAAOg5f,GAEX/tQ,OAAQ,CACJqK,YAAaqgR,MAIrB,SAAetgR,GCxPf,iBAA8B07Q,GAC1BxwpB,YAAY6vpB,EAAWC,EAAW7woB,EAASuhoB,GAEvC,MAAMma,EAAchgB,GAAW,CAAEp5P,UANd,GAM6C5uW,IAAKk9mB,EAAWnhpB,IAAKohpB,GAAa7woB,GAC5F9H,GAAOwjpB,EAAYp5Q,UACnBs4Q,GA4Ud,YAAqBnrpB,GAAKyI,GACtB,MAAMwkpB,EAAkB36jB,GAAM9/E,GAAIxS,GAAKyI,GAAO4hoB,GAAqB,EACnE,IAAI8gB,EACJ,OACIA,EADAnrpB,IAAO,EACGyI,EACiB,IAAxBwgN,IAA8Bgkc,EAAkB,IAAOA,EAAkB,IAClEvupB,KAAK06F,IAAI3wF,EAAM+J,GAAIxS,GAAKyI,GAAQ,IAEhC/J,KAAK06F,IAAI3wF,EAAM/J,KAAKqB,KAAKyS,GAAIxS,GAAKyI,KAGzC0ipB,EAvVaE,CAAYjK,EAAW34oB,IACjCuipB,GAgUd,YAAqB/mnB,GAAKjkC,EAAKuQ,GAC3B,MAAM9H,EAAO8H,EAAQsiY,UACrB,IAAIm4Q,EAAU/mnB,GACd,OAAIA,IAAO,EACP+mnB,EAAUhrpB,GAAO,EAAItB,KAAK06F,IAAI3wF,GAAM,GAAM,EAClC8H,EAAQg7X,cAChBy/Q,EAAUtspB,KAAK06F,IAAI3wF,EAAM/J,KAAKC,MAAM6T,GAAIyxB,GAAKx7B,MAE1CuipB,EAxUaE,CAAY/J,EAAWC,EAAW6K,GAC5C7ylB,GAsSd,YAAmB4xlB,GAASG,EAASc,EAAa17oB,GAC9C,IAAM0zB,MAAKjkC,OAAQispB,EAEnB,OAAI7vD,GAAQ6vD,EAAYnra,oBAAsBmra,EAAYnra,mBAAqB,GAC3Eosa,KAGJ5gB,GAAa/7nB,EAAQvQ,KAEVuQ,EAAQvQ,KAAO,GACtBktpB,KAFAltpB,EAAMmrpB,EAKL/uD,GAAQ7rlB,EAAQ0zB,KAEV1zB,EAAQ0zB,KAAO,GACtBipnB,KAFAjpnB,EAAM+mnB,GAKH,CACH/mnB,IAAKA,EACLjkC,IAAKA,GA3TSmtpB,CAAUnC,GAASG,GAASc,EAAa17oB,GAEvD07oB,EAAYjspB,IAAMo5D,GAAMp5D,IACxBispB,EAAYhonB,IAAMm1B,GAAMn1B,IACxBgonB,EAAYn5Q,UAAYviY,EAAQuiY,WAAaxgT,GAAM7pF,GAAO,EAAG4hoB,GAE7Dr5nB,MAAMi7oB,EAAana,GAEnBtgpB,KAAKshS,SAAWspU,GAAQ7rlB,EAAQ0zB,KAAOvlC,KAAKulC,IAAI+mnB,GAASz6oB,EAAQ0zB,KAAO+mnB,GACxEx5pB,KAAKwhS,SAAWopU,GAAQ7rlB,EAAQvQ,KAAOtB,KAAKsB,IAAImrpB,GAAS56oB,EAAQvQ,KAAOmrpB,GACxE35pB,KAAK47pB,OAAS96jB,GAAM9/E,GAAI4mD,GAAMn1B,IAAKx7B,IAAO4hoB,GAC1C74oB,KAAK67pB,OAAS/6jB,GAAM9/E,GAAI4mD,GAAMp5D,IAAKyI,IAAO4hoB,GAC1C74oB,KAAK2vpB,UAAYA,EACjB3vpB,KAAK4vpB,UAAYA,EAEjB5vpB,KAAKqqpB,eAGT76hB,QACI,OAAO,IAAIssiB,GACP97pB,KAAK2vpB,UACL3vpB,KAAK4vpB,UACL/ppB,OAAOw0D,OAAO,GAAIr6D,KAAK+e,SACvB/e,KAAKsgpB,cAIb75E,aACI,OAAOzmkB,KAAK+e,QAAQ0zB,IAGxB+5mB,QAAQr6nB,EAAGD,EAAG+/B,GACV,MAAQlzC,UAAS68oB,SAAQC,WAAW77pB,MAC5BqhZ,UAAWpqY,GAAMw7B,OAAKjkC,QAAQuQ,GAC9BonX,QAAM6pR,WAASjF,WAASgF,YAAUnH,cAAc5opB,KAAK8vpB,WACvDtjmB,GAAOwjmB,IAAWD,IAAY8L,GAASD,IAC7C,IAAI5uoB,GAAQqunB,GAAelpnB,EAAGD,GAAK,GAC/BoY,GAAM+wmB,GAAenpnB,EAAGC,GAAK,GAEjC,GAAInF,IAAS,GAAKsd,IAAO,EACrB,OAAO,KAGP2nB,IACAjlC,GAAQ2ziB,GAAW3ziB,GAAOylB,GAAKjkC,IAC/B87B,GAAMq2hB,GAAWr2hB,GAAKmI,GAAKjkC,KAG/Bwe,GAAQhM,GAAIgM,GAAO/V,IACnBqzB,GAAMtpB,GAAIspB,GAAKrzB,IAEf,MAAMw9D,GAAKvnE,KAAKulC,IAAIzlB,GAAOsd,IAAOsxnB,EAC5B56kB,GAAK9zE,KAAKsB,IAAIwe,GAAOsd,IAAOsxnB,EAE5BjI,GAAU,IAAI1W,GAAI8N,GAAQ51kB,GAAI41kB,GAAQl2kB,GAAIk2kB,GAAQ51kB,GAAI41kB,GAAQl2kB,IACpE8+kB,UAAQxtR,GAAO,GAAK40R,GAAgBnS,GAAYp8lB,IAAQwjmB,GAAU,EAAIv7kB,GAAKuM,KAC3E2ykB,GAAQxtR,GAAO,GAAK40R,GAAgBnS,GAAYp8lB,IAAQwjmB,GAAU,EAAIhvkB,GAAKvM,KAEpEk/kB,GAGXrsnB,SAASmxC,GACL,MAAQ15D,UAAS68oB,SAAQC,UAAW77pB,MAC5BqhZ,UAAWpqY,GAAS8H,GACpBonX,QAAM6pR,WAASpH,aAAWmH,aAAa/vpB,KAAK8vpB,WAE9C19nB,GAAS49nB,IAAWv3kB,EAAM0tT,IAAQyiR,IAGxC,OAAIx2nB,GAAS,GAAKA,GAAS29nB,GAChB,KAKJjvjB,GAAM5zF,KAAK06F,IAAI3wF,EAFR2kpB,EANMxpoB,KAFLypoB,EAASD,GAAU7L,KAUElX,GAGxCjxkB,QACI,MAAM7oD,EAAU/e,KAAK+e,QACrB,MAAO,CAAE0zB,IAAK1zB,EAAQ0zB,IAAKjkC,IAAKuQ,EAAQvQ,KAG5C4lpB,eAAerkiB,GACX,MAAQhxG,UAAS68oB,SAAQC,UAAW77pB,MAC5B+uF,UAAS/iF,YAAUq1Y,UAAWpqY,IAAS8H,EACzCgsoB,GAAU/qpB,KAAK+qpB,UAEfrqjB,IADO10F,GAAW++oB,GAAQxgpB,SAAWwgpB,GAAQr0oB,UAC7BmlpB,EAASD,GAC/B,IAAIxpoB,GAAS0uE,GAAMivB,EAAQrvB,GAAOm4iB,GAElC,OAAK7soB,IAAY+iF,MAAc/iF,IAAY+iF,KACvC38D,IAAUA,IAGP,CACHqgB,IAAKvlC,KAAK06F,IAAI3wF,GAAM2kpB,EAASxpoB,IAC7B5jB,IAAKtB,KAAK06F,IAAI3wF,GAAM4kpB,EAASzpoB,IAC7BA,OAAQA,IAIhBq4nB,cACI,MAAMsR,EAAW7upB,KAAKC,MAAMnN,KAAK67pB,QAGjC,OAFc3upB,KAAKC,MAAM4upB,EAAW/7pB,KAAK47pB,QAAU,EAKvD/P,wBACI,MAAM9pF,EAAQ,GAEd,YAAKi6F,4BAA6B9xnB,IAC9B63hB,EAAMt8jB,KAAKykC,IACZ,CAAEsiB,KAAM,EAAGlgD,KAAM,IAEby1jB,EAGXsR,YAAYm4E,GACR,MAAMzsoB,EAAU/e,KAAK+e,SACb86X,aAAYC,aAAY9tY,YAAa+S,EACvCy7X,GAASz7X,EAAQyrX,OAAOgQ,OACxBuwQ,GAAU/qpB,KAAK+qpB,UAEfU,GAAkB,CAGpBz/oB,SAAUA,GAGd,YAAgBiwpB,GAAcxS,IAC1BgC,GAAgB/B,MAAQlvQ,GAASuwQ,GAAQt1kB,GAAKs1kB,GAAQt1kB,GAAKg0kB,GAAYz6lB,KACvEy8lB,GAAgB9B,MAAQnvQ,GAASuwQ,GAAQl2kB,GAAK40kB,GAAYz6lB,KAAO+7lB,GAAQl2kB,GACzE42kB,GAAgBvhnB,SAAW+xnB,GAE3BzQ,EAAUt6nB,OAAO06nB,GAAeH,GAAiBhC,KAGrD,OAAI5vQ,EAAW5lE,SACXj0U,KAAKg8pB,4BAA4Br/iB,GAAQk9R,GAGzCC,EAAW7lE,SACXj0U,KAAKk8pB,4BAA4Bv/iB,GAAQm9R,GApB/B,GA0BlB8yQ,gBAAgBP,GACZ,MAAMttoB,EAAU/e,KAAK+e,SACb0tX,iBAAgBD,iBAAgBxgY,YAAa+S,EAC/CgsoB,GAAUsB,EAAQtB,UAClBgC,GAAc,CAChBnE,UAAWmC,GAAQ/+oB,EAAW,KAAO,MACrC69oB,QAASkB,GAAQ/+oB,EAAW,KAAO,MACnCA,SAAUA,GAER6tY,GAAa,GAEbp8O,GAAYz9J,KAAKqrpB,kBACvB,YAAgB4Q,GAAcrS,IACrB/L,GAAQoe,GAAcpiR,MACvBkzQ,GAAY7inB,SAAW+xnB,GACvBx+f,GAAUvsI,OAAO87nB,GAAmBD,GAAanD,KAEjD/vQ,GAAWp0Y,KAAKw2pB,KAIxB,OAAIzvR,EAAev4D,SACfj0U,KAAKg8pB,4BAA4Br/iB,GAAQ6vR,GAGzCC,EAAex4D,SACfj0U,KAAKk8pB,4BAA4Bv/iB,GAAQ8vR,GAGtChvO,GAAUj/F,SAGrBw9lB,4BAA4BnspB,EAAU45oB,GAClC,MAAQb,YAAWp8lB,QAASxsD,KAAK8vpB,YACzB8L,SAAQC,WAAW77pB,KAE3B,QAAS+pI,GAAQ78H,KAAKqB,KAAKqtpB,GAAUnS,EAAYn9oB,KAAMy9H,IAAS8xhB,GAAQ9xhB,IAAS0/gB,EAAYj9lB,KAEzF38C,EADeixF,GAAM8njB,EAAYp8lB,GAAQu9E,GAAQ6xhB,GAAS/iB,GACvC4Q,GAI3ByS,4BAA4BrspB,EAAU45oB,GAClC,MAAQh3mB,MAAKjkC,MAAK8yY,YAAWD,UAAWpqY,IAASjX,KAAK+e,SAC9C6poB,aAAWp8lB,SAASxsD,KAAK8vpB,YACzB8L,UAAQC,WAAW77pB,KAG3B,QAAS+pI,GAFK78H,KAAKC,MAAMyupB,IAED7xhB,GAAQ8xhB,GAAQ9xhB,KAAS,CAC7C,MAAMoyhB,GAAen8pB,KAAKo8pB,sBAAsBryhB,IAChD,QAAS5/F,GAAMs/mB,EAAYn9oB,KAAM69B,GAAMm3W,EAAWn3W,IAAOs/mB,EAAYj9lB,KAAM,CACvE,MAAM7oD,GAAQw4pB,GAAax4pB,MAAQwmC,GAAMgynB,GAAaE,UACtD,GAAI14pB,GAAQ6K,EACR,MAEA7K,IAAS8uC,GAET5iC,EADiBixF,GAAM8njB,GAAYp8lB,IAAQxrC,GAAIrd,GAAOsT,IAAQ2kpB,IAAS/iB,GACpD4Q,KAMnCqB,gBAAgBlnoB,EAAO+moB,EAAc4J,GACjC,MAAMxqhB,EAAQ78H,KAAKqB,KAAKvO,KAAK47pB,OAASh4oB,GAChCjgB,EAAQuJ,KAAK06F,IAAI5nG,KAAK+e,QAAQsiY,UAAWt3Q,GACzCj/H,GAAO9K,KAAK8upB,cAAcnrpB,EAAOgnpB,EAAc4J,GAErD,OAAO,IAAIjM,GAAU3kpB,EAAOmH,GAAM8Y,EAAO,KAAM+moB,GAGnDgE,iBAAiBhrpB,GACb,MAAMikE,EAAQ5nE,KAAK4nE,QACnB,OAAOA,EAAMn1B,KAAO9uC,GAASA,GAASikE,EAAMp5D,IAGhDimpB,IAAI1kiB,GACA,MAAMnoD,EAAQ5nE,KAAKo0pB,eAAerkiB,GAClC,OAAO/vH,KAAKm1b,WAAWvtX,EAAMn1B,IAAKm1B,EAAMp5D,IAAKxO,KAAKshS,SAAUthS,KAAKwhS,SAAU55N,EAAMx1C,QAGrFsioB,YAAY1noB,EAAOsd,GACf,MAAMm8hB,EAAazmkB,KAAKsnC,SAASta,GAC3B05iB,EAAW1mkB,KAAKsnC,SAASgD,GAI/B,MAAO,CACHmI,IAJQvlC,KAAKulC,IAAIg0hB,EAAYC,GAK7Bl4jB,IAJQtB,KAAKsB,IAAIi4jB,EAAYC,IAQrC2tF,WAAW3zjB,EAAO48S,GACd,MAAQ+D,UAAWpqY,GAASjX,KAAK+e,QAC3B68oB,EAAS56oB,GAAIhhB,KAAK+e,QAAQ0zB,IAAKx7B,GAC/B4kpB,EAAS76oB,GAAIhhB,KAAK+e,QAAQvQ,IAAKyI,GAC/BizB,GAAWh9B,KAAKiN,IAAIna,KAAKkwpB,YAAY5yQ,IAErCvtR,GAAQ/vH,KAAKmwpB,aAAazvjB,EADlBm7jB,EAASD,GAEjBnpnB,GAAMvlC,KAAK06F,IAAI3wF,EAAM2kpB,EAAS1xnB,GAAW6lF,IAC/C,IAAIvhH,GAAMtB,KAAK06F,IAAI3wF,EAAM4kpB,GAAU,EAAI3xnB,IAAY6lF,IAEnD,OAAIvhH,GAAMikC,GAtQM,OAuQZjkC,GAAMikC,GAvQM,MA0QT,CACHA,IAAKA,GACLjkC,IAAKA,IAIb8lpB,UAAU5zjB,EAAO48S,GACb,MAAM11U,EAAQ5nE,KAAKq0pB,WAAW3zjB,EAAO48S,IAC7Bh8G,WAAUE,YAAaxhS,KAE/B,MAAO,CACHyyC,IAAKkuhB,GAAW/4f,EAAMn1B,IAAK6uP,EAAUE,GACrChzR,IAAKmyjB,GAAW/4f,EAAMp5D,IAAK8yR,EAAUE,IAI7C46X,sBAAsBryhB,GAClB,MAAQu3Q,YAAWD,UAAWpqY,GAASjX,KAAK+e,QACtCpb,EAAQuJ,KAAK06F,IAAI3wF,EAAM8yH,GAK7B,MAAO,CACHpmI,MAAOA,EACP04pB,WANcnvpB,KAAK06F,IAAI3wF,EAAM8yH,EAAQ,GACVpmI,GACA29Y,GAQnCwuQ,WACI,MAAMvroB,EAAO/E,MAAMswoB,WACnBvroB,SAAKioC,KAAOjoC,EAAKyroB,SAAWzroB,EAAKwroB,UAAY/vpB,KAAK67pB,OAAS77pB,KAAK47pB,SAEzDr3oB,GAsDf,cACI,MAAM,IAAI9N,MAAM,6DAGpB,YAAa9M,GAAGsN,GACZ,OAAO/J,KAAK8T,IAAIrX,IAAKuD,KAAK8T,IAAI/J,GAGlC6roB,GAAkBgZ,GAAiB,CAC/Bh0pB,KAAM,MACNu5Y,UA5WuB,GA6WvBC,UAAW,EACXhyJ,kBAAmB,EACnBtjP,UAAU,EACVwgY,eAAgB,CACZv4D,SAAS,EACTv9T,MAAO,EACP6oI,MAAOg5f,GAEXtnf,OAAQ,EACRm5f,cAAc,IAGlB,SAAe0R,GCjTfvhX,GAhFuB,CACnBqyW,gBAAiB,SAASP,IACtB,MAAMttoB,EAAU/e,KAAK+e,QACf0zE,EAASvlF,KAAKiN,IAAIna,KAAKi8H,IAAI5sD,SAASvb,EAAIu4lB,GAAQtB,UAAUl2kB,IAChE,IAEIynlB,EAAaC,GAFbjR,EAAY,GACZkR,GAAY,EAGhB,OAAIz9oB,EAAQytX,eAAev4D,UACvBqoV,EAAct8pB,KAAKy8pB,oBAAoBpQ,IACvCmQ,GAAY,EAEZlR,EAAYtrpB,KAAK08pB,qBACbJ,EAAa7pkB,EAAQ1zE,EAAQytX,iBAIjCztX,EAAQ0tX,eAAex4D,UACvBsoV,GAAcv8pB,KAAK28pB,oBAAoBtQ,GAASmQ,GAEhDtroB,GAAOo6nB,EAAWtrpB,KAAK48pB,qBACnBL,GAAa9pkB,EAAQ1zE,EAAQ0tX,eAAgB4/Q,GAASmQ,KAIvDlR,GAGXoR,qBAAsB,SAASxd,GAAQzsjB,EAAQ1zE,GAC3C,OAAO/e,KAAK68pB,gBAAgB3d,GAAQzsjB,EAAQ1zE,IAGhD69oB,qBAAsB,SAAS1d,GAAQzsjB,EAAQ1zE,EAASstoB,EAASmQ,GAC7D,MAAMM,EAAiB98pB,KAAK88pB,gBAAkB98pB,KAAK88pB,eAAerqkB,EAAQ45jB,EAASmQ,GACnF,OAAOx8pB,KAAK68pB,gBAAgB3d,GAAQzsjB,EAAQ1zE,EAAS+9oB,IAGzDD,gBAAiB,SAAS3d,GAAQzsjB,EAAQ1zE,EAAS+9oB,GAC/C,MAAM3ypB,EAAQ,CACV03I,OAAQ,CACJnrI,MAAOqI,EAAQrI,MACf6oI,MAAOxgI,EAAQwgI,MACfyiH,SAAUjjP,EAAQijP,WAIpB3yL,EAASrvE,KAAKi8H,IAAI5sD,SAClBwjD,GAAS,IAAIv/C,KAAY,CAAEjE,EAAO1lE,EAAG0lE,EAAOvb,GAAK2+B,GACjDgrE,GAAYz9J,KAAKqrpB,kBAEvB,QAAS18oB,GAAI,EAAGA,GAAIuwoB,GAAOn5oB,OAAQ4I,KAAK,CACpC,MAAM+oE,GAAO,IAAI2kE,KAAUlyI,GACvB2ypB,IACAjqiB,GAAOpgC,OAASqqkB,EAAe5d,GAAOvwoB,MAG1C+oE,GAAK+pK,OAAO5uH,GAAOxjD,QACdqyK,OAAO7uH,GAAO2shB,QAAQN,GAAOvwoB,IAAK,MAEvC8uJ,GAAUvsI,OAAOwmD,IAGrB,OAAO+lF,GAAUj/F,UAGrBu+lB,eAAgB,SAAS1Q,GAASr9lB,EAAM1iD,EAAMkgD,EAAMwwmB,GAChD,MAAMC,EAAOj9pB,KAAKk9pB,UAAUlumB,EAAM1iD,EAAMkgD,EAAMwwmB,GACxCj+oB,GAAUstoB,GAAQttoB,QAClBo+oB,GAAiBp+oB,GAAQk1T,UAA4C,KAAhCl1T,GAAQ24D,MAAQ,IAAIu8P,QAE/D,OAAOtuU,GAAIs3pB,EAAOzxpB,KACd,MAAMy5B,GAAQjlC,KAAKo9pB,cAAc5xpB,IAEjC,IAAK2xpB,IAA4B,KAAVl4nB,GACnB,OAAOA,OCnEvB,iBAAgCstnB,GAC5B3qlB,QACI,MAAO,CAAEn1B,IAAK,EAAGjkC,IAAKxO,KAAK+e,QAAQwwO,WAAWxpP,QAGlDm6oB,OAAOjkhB,GACHj8H,KAAKi8H,IAAMA,EACXj8H,KAAKq9pB,eAGTtS,UACI,OAAO/qpB,KAAKi8H,IAGhBohiB,eACI,MAAQ7yR,SAAQzrX,SAAWyrX,OAAQmgR,IAAmB3qpB,KAChDsM,EAAOq+oB,EAAar+oB,MAAQ,EAC5BkgD,EAAOm+lB,EAAan+lB,MAAQ,EAC5B8wmB,EAAa,IAAIrgB,GAEvB,QAAStuoB,GAAI,EAAGA,GAAI67X,EAAOzkY,OAAQ4I,KAAK,CACpC67X,EAAO77X,IAAGuxoB,OAAOod,GACjB,MAAMlP,GAAW5jR,EAAO77X,IAAGstH,IAE3BuuQ,EAAO77X,IAAGuxoB,OAAOlgpB,KAAKwspB,QAAQlgpB,EAAOqC,GAAI69C,GAAM0xlB,YAC3C,EAAGkQ,GAAS13oB,QAAS03oB,GAAS7jpB,YAK1C2ypB,UAAUlumB,EAAMuumB,EAAYC,EAAYR,GAAa,GACjD,MAAMj+oB,EAAU/e,KAAK+e,QAEf0+oB,GAAWlua,EADUA,WAAWxpP,OACRipD,GAAQ,EAChC0umB,GAAW,IAAMD,GAEjBjxmB,GAAOgxmB,GAAc,EACrBP,GAAO,GACb,IAAI3rkB,GAAQ,EAEZ,QAAS3iF,GALI4upB,GAAc,EAKR5upB,GAAI8upB,GAAU9upB,IAAK69C,GAE9B8kC,GADAvyE,EAAQgwE,QACA,IAAMpgF,GAAI+upB,GAEV/upB,GAAI+upB,GAGhBpskB,GAAQwP,GAAMxP,G7FpDK,G6FoDqB,IAElC0rkB,GAAcnf,GAAQvsjB,GAAO0rkB,IAC/BC,GAAKx3pB,KAAK6rF,IAIlB,OAAO2rkB,GAGXU,iBACI,OAAO39pB,KAAKk9pB,UAAU,GAG1BU,iBACI,OAAO59pB,KAAKk9pB,UAAU,IAG1BE,cAAcp6nB,GACV,OAAQ,IAAMA,EAAWhjC,KAAK+e,QAAQ2zE,YAAc,IAGxD4pkB,cACI,OAAO32pB,GAAI3F,KAAK29pB,iBAAmB36nB,GAAahjC,KAAKo9pB,cAAcp6nB,IAGvE+lnB,aACI,MAAO,GAGX0T,oBAAoBpQ,GAChB,MAAM7/Q,EAAiBxsY,KAAK+e,QAAQytX,eACpC,OAAOxsY,KAAK+8pB,eAAe1Q,EAAS,EAAG7/Q,EAAelgY,KAAMkgY,EAAehgV,MAG/EmwmB,oBAAoBtQ,EAASmQ,GACzB,MAAQ/vR,iBAAgBD,kBAAmBxsY,KAAK+e,QAC1C09oB,EAAsBD,EAAYx8pB,KAAKk9pB,UAAU,EAAG1wR,EAAelgY,KAAMkgY,EAAehgV,MAAQ,KAEtG,OAAOxsD,KAAK+8pB,eAAe1Q,EAAS,GAAK5/Q,EAAengY,KAAMmgY,EAAejgV,KAAMiwmB,GAGvFK,eAAerqkB,EAAQ45jB,EAASmQ,GAC5B,GAAInQ,EAAQttoB,QAAQjX,OAASwwoB,EAAK,CAC9B,MAAMulB,EAAa1iB,GAAI,KAAwC,EAAjCn7oB,KAAK+e,QAAQwwO,WAAWxpP,SAChD+3pB,EAAc5wpB,KAAK65E,IAAI82kB,GAAcprkB,EACrC6pkB,GAAct8pB,KAAKs8pB,cASzB,OAPuB,SAAShrkB,IAC5B,OAAKkrkB,GAAa3e,GAAQvsjB,GAAOgrkB,IACtB7pkB,EAGJqrkB,IAMnB1S,kBACI,MAAMnxQ,EAAYj6Y,KAAK+e,QAAQk7X,WAAa,GAEtCvxW,EAAQ1oC,KAAKospB,eAAiB,IAAI/vgB,KAAW,CAC/C4U,QAAQ,IAGZ,QAAStiJ,EAAI,EAAGA,EAAIsrY,EAAUl0Y,OAAQ4I,IAAK,CACvC,MAAMwrJ,EAAO8/O,EAAUtrY,GACjB+/oB,EAAO1upB,KAAK+9pB,aAAa5jgB,GACzBy5f,GAAa5zpB,KAAKwspB,QAAQryf,EAAK/xF,MAE/Bg1R,GAAOjjM,EAAK/xF,KAAOl7D,KAAKC,MAAMgtJ,EAAK/xF,MACzCsmlB,EAAKh8jB,YAAc0qQ,GAAOw2T,GAAWtikB,MAErC,MAAMgqkB,GAAOpupB,KAAKqB,KAAK4rJ,EAAK1sB,IAAM0sB,EAAK1sB,GACvCihhB,EAAKp9jB,QAAUgqkB,GAAOl+T,IAAQw2T,GAAWtikB,MAEzC,MAAMnb,GAAOspkB,sBAAgCiP,EAAM,CAC/ChgpB,KAAM,CACF6wI,MAAO4a,EAAK5a,MACZn1I,QAAS+vJ,EAAK/vJ,SAElBy3I,OAAQ,CACJz3I,QAAS+vJ,EAAK/vJ,WAGtBs+B,EAAMxX,OAAOilD,IAGjBn2E,KAAK8gpB,aAAap4mB,GAGtBq1nB,aAAa5jgB,GACT,OAAOn6J,KAAKwspB,QAAQryf,EAAK/xF,KAAM+xF,EAAK1sB,GAAK,GAG7C++gB,QAAQpklB,EAAMqlE,GACV,MAAM1uH,EAAU/e,KAAK+e,QACfu8X,EAAYv8X,EAAQu8X,UACpBr/Q,EAAMj8H,KAAKi8H,IACXghiB,GAAOj9pB,KAAKs8pB,cACZ0B,GAAYf,GAAKl3pB,OACjBk4pB,GAAY,IAAMD,GACxB,IAAIE,GAAY91lB,EAEZrpD,EAAQgwE,UAAYusT,IACpB4iR,IAAaA,GAAY,GAAKF,IAGlCE,GAAYv9F,GAAWzzjB,KAAKC,MAAM+wpB,IAAY,EAAGF,GAAY,GAC7D,IAAIG,GAAYlB,GAAKiB,IAEjB5iR,IACA6iR,IAAwBF,GAAY,EAEhCE,GAAY,IACZA,IAAa,MAKrB,MACM7skB,GAAQ2skB,IAFEt9F,GAAWzzjB,KAAKqB,KAAKk/H,GAAMywhB,IAAYA,GAAWF,GAAY,GACtDE,GAAY,GAGpC,OAAO,IAAIpgB,GAAK7hhB,EAAI5sD,SAAU,EAAG4sD,EAAI1xH,SAAW,EAAG4zpB,GAAW7skB,IAGlEo9jB,KAAKtmlB,EAAMqlE,GACP,MAAMihhB,EAAO1upB,KAAKwspB,QAAQpklB,EAAMqlE,GAC1B/6C,EAAag8jB,EAAKh8jB,WAAa,IAGrC,OAAO,IAAIpf,KAAS,CAAEo7kB,EAAKr/kB,OAAO1lE,EAAG+kpB,EAAKr/kB,OAAOvb,GAAK,CAClD4+B,WAAYA,EACZC,SAJaD,EAAag8jB,EAAKp9jB,MAK/B+tjB,QAASqP,EAAKj8jB,OACd6sjB,QAASoP,EAAKj8jB,SAItBshkB,mBAAmBt7kB,GACf,MAAM1yE,EAAS/F,KAAK+e,QAAQwwO,WAAWxpP,OACvC,IAAI6d,EAAQ,KAEZ,QAASjV,EAAI,EAAGA,EAAI5I,EAAQ4I,IAExB,GAAI+/oB,KADclC,QAAQ79oB,GACjBoiG,cAAct4B,GAAQ,CAC3B70D,EAAQjV,EACR,MAIR,OAAOiV,GAIfk/nB,GAAkBsb,GAAmB,CACjC1rkB,WAAY,GACZ83S,OAAQ,CACJj8V,OAAQ6umB,GAAW,KAEvB5wQ,eAAgB,CACZv4D,SAAS,GAEbqnE,WAAW,IAEfm/P,GAAW2jB,GAAkB/9oB,UAAWg+oB,IAExC,SAAeD,GCtNf,iBAAwB9N,GACpBxwpB,YAAYif,EAASuhoB,GACjB9goB,MAAMT,EAASuhoB,GAEf,MAAMge,EAAkBt+pB,KAAK+e,QAE7Bu/oB,EAAgBh9Q,UAAYg9Q,EAAgBh9Q,WAAag9Q,EAAgBj9Q,UAAY,EAGzFu5Q,aAAan6F,GACT,OAAOk6F,+BAAwC36pB,KAAMygkB,GAAa,EAGtEy/E,OAAOjkhB,GACHj8H,KAAKi8H,IAAMA,EACXj8H,KAAKq9pB,eAGTA,eACI,MAAQt+oB,UAASyrX,SAAQzrX,SAAWyrX,OAAQmgR,IAAmB3qpB,KACzDsM,EAAOq+oB,EAAar+oB,MAAQ,EAC5BkgD,EAAOm+lB,EAAan+lB,MAAQ,EAE5B8wmB,GAAa,IAAIrgB,GACjBggB,GAAOj9pB,KAAKk9pB,UAAUn+oB,EAAQsiY,UAAW/0Y,EAAMkgD,GAErD,QAAS79C,GAAI,EAAGA,GAAI67X,EAAOzkY,OAAQ4I,KAAK,CACpC67X,EAAO77X,IAAGuxoB,OAAOod,IACjB,MAAMlP,GAAW5jR,EAAO77X,IAAGstH,IAE3BuuQ,EAAO77X,IAAGuxoB,OAAOlgpB,KAAKwspB,QAAQyQ,GAAKtupB,KAAIuvoB,YAAY,EAAGkQ,GAAS13oB,QAAS03oB,GAAS7jpB,YAIzFwgpB,UACI,OAAO/qpB,KAAKi8H,IAGhBihiB,UAAUlumB,EAAMuumB,EAAYC,EAAYR,GAAa,GACjD,MAAMvqnB,EAAMzyC,KAAK+e,QAAQ0zB,IACnBoonB,GAAY76pB,KAAK46pB,aAAa5rmB,GAC9BiumB,GAAO,GAEPzwmB,GAAOgxmB,GAAc,EAE3B,QAAS7upB,GAHI4upB,GAAc,EAGR5upB,GAAIkspB,GAAWlspB,IAAK69C,GAAM,CACzC,MAAMnmB,IAAW,IAAMoM,EAAM9jC,GAAIqgD,GAAQ,IACnCgumB,GAAcnf,GAAQx3mB,GAAS22nB,IACjCC,GAAKx3pB,KAAK4gC,IAIlB,OAAO42nB,GAGXU,iBACI,OAAO39pB,KAAKk9pB,UAAUl9pB,KAAK+e,QAAQsiY,WAGvCu8Q,iBACI,OAAO59pB,KAAKk9pB,UAAUl9pB,KAAK+e,QAAQuiY,WAGvC87Q,cAAczupB,GACV,OAAQ,IAAMA,EAAI3O,KAAK+e,QAAQ2zE,YAAc,IAGjDq2jB,aACI,MAAO,GAGX0T,oBAAoBpQ,GAChB,MAAM7/Q,EAAiBxsY,KAAK+e,QAAQytX,eACpC,OAAOxsY,KAAK+8pB,eAAe1Q,EAASrspB,KAAK+e,QAAQsiY,UAAW7U,EAAelgY,KAAMkgY,EAAehgV,MAGpGmwmB,oBAAoBtQ,EAASmQ,GACzB,MAAMz9oB,EAAU/e,KAAK+e,SACb0tX,iBAAgBD,kBAAmBztX,EACrC09oB,GAAsBD,EAAYx8pB,KAAKk9pB,UAAUn+oB,EAAQsiY,UAAW7U,EAAelgY,KAAMkgY,EAAehgV,MAAQ,KAEtH,OAAOxsD,KAAK+8pB,eAAe1Q,EAASttoB,EAAQuiY,UAAW7U,EAAengY,KAAMmgY,EAAejgV,KAAMiwmB,IAGrGsB,aAAa5jgB,GACT,OAAOn6J,KAAKwspB,QAAQryf,EAAK/xF,KAAM+xF,EAAK1sB,IAGxC++gB,QAAQr6nB,EAAGD,GACP,MAAQnT,UAASk9G,OAAQj8H,KACnB0yF,EAAa3zE,EAAQ2zE,WAC3B,IAAI1lE,GAAQ2ziB,GAAWxuiB,EAAGpT,EAAQ0zB,IAAK1zB,EAAQvQ,KAC3C87B,GAAMq2hB,GAAWzuiB,GAAKlF,GAAOA,GAAOjO,EAAQvQ,KAUhD,GARIuQ,EAAQgwE,UACR/hE,KAAS,EACTsd,KAAO,GAGXtd,IAAS,IAAMA,GAAQ0lE,GAAc,IACrCpoD,IAAO,IAAMA,GAAMooD,GAAc,IAE7BpoD,GAAMtd,GAAO,CACb,MAAMpc,GAAMoc,GACZA,GAAQsd,GACRA,GAAM15B,GAGV,OAAO,IAAIktoB,GAAK7hhB,EAAI5sD,SAAU,EAAG4sD,EAAI1xH,SAAW,EAAGyiB,GAAOsd,GAAMtd,IAGpE0hoB,KAAKtmlB,EAAMqlE,EAAKrlE,GACZ,MAAMrpD,EAAU/e,KAAK+e,QACfiO,EAAQ,IAAMjO,EAAQ2zE,WACtBg8jB,EAAO1upB,KAAKwspB,QAAQpklB,EAAMqlE,GAC1Bh7F,GAAMvlC,KAAKulC,IAAI21B,EAAMqlE,GACrBj/H,GAAMtB,KAAKsB,IAAI45D,EAAMqlE,GAC3B,IAAI/6C,GAAYC,GAEhB,OAAI5zE,EAAQgwE,SACR2D,GAAajgD,GACbkgD,GAAWnkF,KAEXkkF,GAAa,IAAMlkF,GACnBmkF,GAAW,IAAMlgD,IAGrBigD,IAAcA,GAAa1lE,GAAS,IACpC2lE,IAAYA,GAAW3lE,GAAS,IAEzB,IAAIsmD,KAAS,CAAEo7kB,EAAKr/kB,OAAO1lE,EAAG+kpB,EAAKr/kB,OAAOvb,GAAK,CAClD4+B,WAAYA,GACZC,SAAUA,GACV0sjB,QAASqP,EAAKj8jB,OACd6sjB,QAASoP,EAAKj8jB,SAItBnrD,SAASmxC,GACL,MAAM15D,EAAU/e,KAAK+e,QACfswD,EAASrvE,KAAKi8H,IAAI5sD,SAGxB,IAAIk2D,GAAQr4H,KAAK4zF,MAAMi6iB,GAAI7toB,KAAKqkF,MADrB9Y,EAAM3kB,EAAIub,EAAOvb,EADjB2kB,EAAM9uE,EAAI0lE,EAAO1lE,KAGxBqjB,GAAQjO,EAAQ2zE,WAEpB,OAAK3zE,EAAQgwE,UACTw2C,KAAS,EACTv4G,KAAS,IAGLu4G,GAAQv4G,GAAQ,KAAO,IAGnC0ioB,aACI,MAAO,CACHj9mB,IAAK,EACLjkC,IAAe,EAAVtB,KAAK45E,KAKtBg8jB,GAAkByb,GAAW,CACzBz2pB,KAAM,QACN4qF,WAAY,EACZ3D,SAAS,EACTsyT,UAAW,GACX5uW,IAAK,EACLjkC,IAAK,IACLg8X,OAAQ,CACJj8V,OAAQ6umB,GAAW,KAEvB5wQ,eAAgB,CACZjtP,MAAOg5f,EACPtkU,SAAS,EACTv9T,MAAO,GAEX+1X,eAAgB,CACZltP,MAAO,UAIfk7f,GAAW8jB,GAAUl+oB,UAAWg+oB,GAAgB,CAC5CjT,gBAAiBgT,6BACjB9B,YAAa8B,yBACbx2lB,MAAO+ylB,mBACPlQ,YAAakQ,yBACb7P,gBAAiB6P,+BAGrB,SAAe4D,GC1Cf,YAAyBpsoB,GAAGD,GACxB,OAAO,IAAMhlB,KAAKiN,IAAIjN,KAAKiN,IAAIgY,GAAID,GAAK,KAG5C,SA3J8B,CAC1BnT,QAAS,CACLytX,eAAgB,CACZv4D,SAAS,IAIjBm3U,gBAAiB,WACb,MAAQ5+Q,gBAAkB1kY,SAAQmyY,YAAY,IAAOj6Y,KAAK+e,QACpDstoB,EAAUrspB,KAAKmlY,SAASq5R,UACxBlC,EAAcjQ,EAAQiQ,cACtBjtlB,EAASg9kB,EAAQpwhB,IAAI5sD,SACrB3mC,EAAQ1oC,KAAKospB,eAAiB,IAAI/vgB,KAAW,CAC/C4U,QAAQ,IAGZ,QAAStiJ,GAAI,EAAGA,GAAIsrY,EAAUl0Y,OAAQ4I,KAAK,CACvC,MAAMwrJ,GAAO8/O,EAAUtrY,IACjB8vpB,GAAY,CACd/vpB,KAAM,CACF6wI,MAAO4a,GAAK5a,MACZn1I,QAAS+vJ,GAAK/vJ,SAElBy3I,OAAQ,CACJz3I,QAAS+vJ,GAAK/vJ,UAIhBskpB,GAAO1upB,KAAKwspB,QAAQryf,GAAK/xF,KAAM+xF,GAAK1sB,IAAI,GACxCt3D,GAAO,IAAI2nkB,GAAKzukB,EAAQA,EAAOvb,EAAI46lB,GAAK7R,GAAIxtkB,EAAOvb,EAAI46lB,GAAK75kB,GAAI,EAAG,KAEzE,IAAI6plB,GAEAA,GADA52pB,KAASwwoB,EACDmH,sBAAgCtpkB,GAAMsolB,IAEtCpihB,gBAAqBr8I,KAAK2+pB,eAAexolB,GAAMmmlB,GAAcmC,IAAWzzoB,QAGpF0d,EAAMxX,OAAOwtoB,IAGjB1+pB,KAAK8gpB,aAAap4mB,IAGtBi2nB,eAAgB,SAASxolB,GAAM+okB,GAC3B,MAAM0f,EAAc,GACdC,EAAc,GACdxvlB,EAAS,CAAE8G,GAAK9G,OAAO1lE,EAAGwsE,GAAK9G,OAAOvb,GACtCgrmB,EAAc,IAAIxrlB,KAAYjE,EAAQ8G,GAAK+iU,aAC3C6lR,GAAc,IAAIzrlB,KAAYjE,EAAQ8G,GAAKsc,QAEjD,QAAS9jF,GAAI,EAAGA,GAAIuwoB,EAAOn5oB,OAAQ4I,KAC/BiwpB,EAAYn5pB,KAAKq5pB,EAAYtf,QAAQN,EAAOvwoB,IAAK,MACjDkwpB,EAAYp5pB,KAAKs5pB,GAAYvf,QAAQN,EAAOvwoB,IAAK,MAGrDiwpB,SAAY7vkB,UACZ6vkB,EAAYn5pB,KAAKm5pB,EAAY,IAC7BC,EAAYp5pB,KAAKo5pB,EAAY,IAEtBA,EAAYlrnB,OAAOirnB,IAG9BhS,gBAAiB,SAASP,IACtB,MAAMttoB,EAAU/e,KAAK+e,QACf86X,EAAa75Y,KAAKg/pB,8BAClB1C,EAAcjQ,GAAQiQ,cACtBjtlB,EAASg9kB,GAAQpwhB,IAAI5sD,SAC3B,IAAIi8kB,EAAY,GAQhB,GANIvsoB,EAAQytX,eAAev4D,UACvBq3U,EAAYtrpB,KAAK68pB,gBACbxtlB,EAAQwqU,EAAYyiR,EAAav9oB,EAAQytX,iBAI7CztX,EAAQ0tX,eAAex4D,QAAS,CAChC,MAAM6lE,GAAa95Y,KAAKi/pB,8BACxB/toB,GAAOo6nB,EAAWtrpB,KAAK68pB,gBACnBxtlB,EAAQyqU,GAAYwiR,EAAav9oB,EAAQ0tX,iBAIjD,OAAO6+Q,GAGXuR,gBAAiB,SAASxtlB,GAAQ0yf,EAAOm9E,EAAQngoB,GAC7C,MAAM5U,EAAQ,CACV03I,OAAQ,CACJnrI,MAAOqI,EAAQrI,MACf6oI,MAAOxgI,EAAQwgI,MACfyiH,SAAUjjP,EAAQijP,YAGlB11P,OAAO,EAAGkgD,QAAO,GAAMztC,EACzB0+I,GAAYz9J,KAAKqrpB,kBAEvB,QAASuC,GAASthpB,EAAMshpB,GAAS7rF,EAAMh8jB,OAAQ6npB,IAAUphmB,GAAM,CAC3D,MAAM0ymB,GAAa7vlB,GAAOvb,EAAIiugB,EAAM6rF,IACpC,GAAIsR,GAAa,EAAG,CAChB,MAAMrsiB,GAAS,IAAIv/C,KAAY,CAAEjE,GAAO1lE,EAAG0lE,GAAOvb,GAAKormB,IACvD,GAAIngpB,EAAQjX,OAASwwoB,EACjB76e,GAAUvsI,OAAO,IAAImrH,KAAYxpB,GAAQ1oH,QACtC,CACH,MAAMutE,GAAO,IAAI2kE,KAAUlyI,GAC3B,QAASg1pB,GAAU,EAAGA,GAAUjgB,EAAOn5oB,OAAQo5pB,KAC3CznlB,GAAKgqK,OAAO7uH,GAAO2shB,QAAQN,EAAOigB,IAAW,MAGjDznlB,GAAK1sD,QACLyyI,GAAUvsI,OAAOwmD,MAK7B,OAAO+lF,GAAUj/F,UAGrBl3B,SAAU,SAASmxC,IACf,MAAMsykB,EAAU/qpB,KAAK+qpB,UACfsB,EAAUrspB,KAAKmlY,SAASq5R,UACxBlC,EAAcjQ,EAAQiQ,cACtBjtlB,EAASg9kB,EAAQpwhB,IAAI5sD,SACrBojB,EAASha,GAAMmkkB,WAAWvtkB,GAChC,IAAIqS,GAAW+Q,EAEf,GAAIzyF,KAAK+e,QAAQytX,eAAe1kY,OAASwwoB,GAAOgkB,EAAYv2pB,OAAS,EAAG,CACpE,MAEMw/H,IAASw1gB,GAAI7toB,KAAKqkF,MADb9Y,GAAM3kB,EAAIub,EAAOvb,EADjB2kB,GAAM9uE,EAAI0lE,EAAO1lE,IAEa,KAAO,IAEhD2ypB,EAAYxipB,KAAK,SAASqY,GAAGD,IACzB,OAAOktoB,GAAgBjtoB,GAAGozG,IAAS65hB,GAAgBltoB,GAAGqzG,MAK1D,MAAM85hB,GAAWD,GAAgB9C,EAAY,GAAIA,EAAY,IAAM,EAC7Dr3nB,GAAQm6nB,GAAgB75hB,GAAO+2hB,EAAY,IAC3CgD,GAAQ,GAAKD,GAGnB39kB,GAAW+Q,GAAUvlF,KAAKwkF,IAAIypjB,GAFjB,IAAMl2mB,GAAQq6nB,KAEgBpypB,KAAKwkF,IAAIypjB,GAAImkB,MAG5D,OAAOt/pB,KAAKu/pB,WAAWl/oB,UAAUinB,SAAS1T,KACtC5zB,KAAM,IAAIk6E,GAAM6wkB,EAAQ51kB,GAAI41kB,EAAQlO,GAAKn7jB,OCtJrD,iBAA+Bi5kB,GAC3BqE,8BACI,OAAOh/pB,KAAKszpB,iBAAiBtzpB,KAAK+e,QAAQsiY,WAG9C49Q,8BACI,MAAMlgpB,EAAU/e,KAAK+e,QACrB,IAAIygpB,EAAgB,EAEpB,OAAIzgpB,EAAQytX,eAAev4D,UACvBurV,EAAgBzgpB,EAAQsiY,WAErBrhZ,KAAKszpB,iBAAiBv0oB,EAAQuiY,UAAWk+Q,GAGpDD,WACI,OAAO5E,IAIflgB,GAAWglB,GAAiBp/oB,UAAWq/oB,IAEvC,SAAeD,GCtBf,iBAAmC3D,GAC/BkD,8BACI,MAAMzL,EAAY,GAElB,YAAKyI,4BAA4B,SAAS9xnB,GACtCqpnB,EAAU9tpB,KAAKykC,IAChBlqC,KAAK+e,QAAQytX,gBAET+mR,EAGX0L,8BACI,MAAM1L,EAAY,GAElB,YAAK2I,4BAA4B,SAAShynB,GACtCqpnB,EAAU9tpB,KAAKykC,IAChBlqC,KAAK+e,QAAQ0tX,gBAET8mR,EAGXgM,WACI,OAAOzD,IAIfrhB,GAAWklB,GAAqBt/oB,UAAWq/oB,IAE3C,SAAeC,mBC+Pf,YAAoBh8pB,IAChB,OAAOA,IAAS,GAAI,EAAK,EAG7B,SA5RA,iBAA6B44oB,KAEzBz8oB,YAAYk9R,GACRx9Q,QAEAxf,KAAKg9R,OAASA,EAGlBj7Q,QAAQ69oB,GACJ,MAAM9/kB,EAAS8/kB,EAAWhxpB,MAAM,GAC1ButH,EAAW,GACjB,IAAI6gK,EAASh9R,KAAKg9R,OACdj3R,EAAS+5E,EAAO/5E,OAOpB,GALIA,EAAS,IACT/F,KAAK6/pB,iBAAiB,EAAG//kB,GACzB/5E,EAAS+5E,EAAO/5E,QAGhBA,EAAS,GAAiB,IAAXA,GAAgB+5E,EAAO,GAAG7hB,OAAO6hB,EAAO,IACvD,OAAOq8C,EAGX,IA2BI2jiB,GAAqBC,GA3BrBvrlB,GAAKsL,EAAO,GACZrL,GAAKqL,EAAO,GACZkB,GAAKlB,EAAO,GAIhB,IAFAq8C,EAAS12H,KAAK,IAAI6tE,KAAakB,KAExBA,GAAGvW,OAAO6hB,EAAO/5E,EAAS,KAC7Bi3R,GAAS,EACTl9M,EAAOhtD,MACP/sB,IAGJ,GAAe,IAAXA,EAAc,CACd,MAAMi6pB,GAAUhgqB,KAAKggqB,QAAQxrlB,GAAGC,GAAI1sE,GAAGjC,IAEvCwxH,UAAK6E,GAAU8jiB,WACXjgqB,KAAKkgqB,kBAAkBF,GAASxrlB,GAAIC,GAAI1sE,GAAGjC,KAG/Cq2H,EAAS12H,KAAK,IAAI6tE,KACdmB,GACAz0E,KAAKmgqB,mBAAmBH,GAASxrlB,GAAIC,GAAI1sE,GAAGjC,MAGzCq2H,EAKX,GAAI6gK,EAAQ,CACRxoN,GAAKsL,EAAO/5E,EAAS,GAAI0uE,GAAKqL,EAAO,GAAIkB,GAAKlB,EAAO,GACrD,MAAMsglB,GAAgBpgqB,KAAKogqB,cAAc5rlB,GAAIC,GAAIuM,IACjD8+kB,GAAsBM,GAAc,GACpCL,GAAmBK,GAAc,OAC9B,CACH,MAAMJ,GAAUhgqB,KAAKggqB,QAAQxrlB,GAAIC,GAAI1sE,GAAEjC,IACvCg6pB,GAAsB9/pB,KAAKkgqB,kBAAkBF,GAASxrlB,GAAIC,GAAI1sE,GAAGjC,IAGrE,IAAIu6pB,GAAMP,GACV,QAAS31nB,GAAM,EAAGA,IAAOpkC,EAAS,EAAGokC,KAGjC,GAFAnqC,KAAK6/pB,iBAAiB11nB,GAAK21C,GAC3B/5E,EAAS+5E,EAAO/5E,OACZokC,GAAM,GAAKpkC,EAAQ,CACnByuE,GAAKsL,EAAO31C,IAAMsqC,GAAKqL,EAAO31C,GAAM,GAAI62C,GAAKlB,EAAO31C,GAAM,GAC1D,MAAMi2nB,GAAgBpgqB,KAAKogqB,cAAc5rlB,GAAGC,GAAGuM,IAE/Cs2C,GAAK6E,GAAU8jiB,WAAWI,IAC1BA,GAAMD,GAAc,GAGpBjkiB,EAAS12H,KAAK,IAAI6tE,KAAamB,GADnB2rlB,GAAc,KAKlC,GAAIpjY,EAAQ,CACRxoN,GAAKsL,EAAO/5E,EAAS,GAAI0uE,GAAKqL,EAAO/5E,EAAS,GAAIi7E,GAAKlB,EAAO,GAC9D,MAAMsglB,GAAgBpgqB,KAAKogqB,cAAc5rlB,GAAIC,GAAIuM,IAEjDs2C,GAAK6E,GAAU8jiB,WAAWI,IAC1BlkiB,EAAS12H,KAAK,IAAI6tE,KACdmB,GACA2rlB,GAAc,KAGlB9oiB,GAAK6E,GAAU8jiB,WAAWG,GAAc,IACxCjkiB,EAAS12H,KAAK,IAAI6tE,KACd0N,GACA++kB,SAED,CACH,MAAMC,GAAUhgqB,KAAKggqB,QAAQvrlB,GAAIuM,GAAIj5E,GAAGjC,IAExCwxH,GAAK6E,GAAU8jiB,WAAWI,IAC1BlkiB,EAAS12H,KAAK,IAAI6tE,KACd0N,GACAhhF,KAAKmgqB,mBAAmBH,GAASvrlB,GAAIuM,GAAIj5E,GAAGjC,MAIpD,OAAOq2H,EAGX0jiB,iBAAiB11nB,EAAK21C,GAClB,KAAOA,EAAO31C,EAAM,KAAO21C,EAAO31C,GAAK8zB,OAAO6hB,EAAO31C,EAAM,KAAO21C,EAAO31C,EAAM,GAAG8zB,OAAO6hB,EAAO31C,EAAM,MAClG21C,EAAOh8D,OAAOqmB,EAAM,EAAG,GAI/Bm2nB,WAAW9rlB,EAAIC,EAAIuM,GACf,IAAIs/kB,GAAa,EAEjB,GAAI9rlB,EAAG7qE,IAAM8qE,EAAG9qE,EACZ22pB,GAAa,UACN7rlB,EAAG9qE,IAAMq3E,EAAGr3E,GACd8qE,EAAG3gB,EAAIktB,EAAGltB,GAAK0gB,EAAG1gB,GAAK2gB,EAAG3gB,GAAOktB,EAAGltB,EAAI2gB,EAAG3gB,GAAK2gB,EAAG3gB,GAAK0gB,EAAG1gB,KAC5DwsmB,GAAa,OAEd,CACH,MAAMpnmB,EAAKl5D,KAAKugqB,aAAa/rlB,EAAGC,GAC1BookB,GAAK78oB,KAAKwgqB,kBAAkBtnmB,EAAI8nB,EAAGr3E,GACnC6qE,EAAG1gB,GAAK2gB,EAAG3gB,GAAKktB,EAAGltB,GAAK+olB,IACxBpokB,EAAG3gB,GAAK0gB,EAAG1gB,GAAKktB,EAAGltB,GAAK+olB,KAC1ByjB,GAAa,GAIrB,OAAOA,EAGXG,OAAOjslB,EAAIC,EAAIuM,GACX,MAAM9nB,EAAKl5D,KAAKugqB,aAAa/rlB,EAAIC,GAC3BookB,EAAK78oB,KAAKwgqB,kBAAkBtnmB,EAAI8nB,EAAGr3E,GAEzC,OAAQ6qE,EAAG7qE,IAAM8qE,EAAG9qE,GAAK8qE,EAAG9qE,IAAMq3E,EAAGr3E,GAAMm3F,GAAM+7iB,EAAI,KAAO/7iB,GAAM9f,EAAGltB,EAAG,GAG5EysmB,aAAa9rlB,EAAIuM,GACb,MAAM7uD,GAAK6uD,EAAGltB,EAAI2gB,EAAG3gB,IAAMktB,EAAGr3E,EAAI8qE,EAAG9qE,GAGrC,MAAO,CAFG8qE,EAAG3gB,EAAI3hC,EAAIsiD,EAAG9qE,EAEZwoB,GAGhBiuoB,cAAc5rlB,EAAIC,EAAIuM,GAClB,IAIIg/kB,GAJA/1R,EAASliY,GACTqiY,EAAStkY,GACT46pB,IAAW,EACXC,IAAoB,EAGxB,GAAI3gqB,KAAKygqB,OAAOjslB,EAAIC,EAAIuM,GACpBg/kB,GAAUhgqB,KAAKggqB,QAAQxrlB,EAAIC,EAAI1sE,GAAGjC,QAC/B,CACH,MAAM86pB,GAAY,CACdj3pB,EAAG3J,KAAK6gqB,mBAAmBrslB,EAAIC,EAAIuM,EAAIj5E,IACvC+rD,EAAG9zD,KAAK6gqB,mBAAmBrslB,EAAIC,EAAIuM,EAAIl7E,KAG3C,GAAI86pB,GAAUj3pB,GAAKi3pB,GAAU9smB,EACzBksmB,GAAUhgqB,KAAKggqB,QAAQxrlB,EAAIwM,EAAIj5E,GAAGjC,IAClC46pB,IAAW,UAEP1gqB,KAAKsgqB,WAAW9rlB,EAAIC,EAAIuM,KACxBipT,EAASnkY,GACTskY,EAASriY,IAGT64pB,GAAU32R,GACV+1R,GAAU,MACP,CACH,IAAI/9kB,GAGAA,GAFCjB,EAAGopT,GAAU51T,EAAG41T,IAAW51T,EAAG41T,IAAW31T,EAAG21T,IAC5C51T,EAAG41T,GAAUppT,EAAGopT,IAAW31T,EAAG21T,IAAW51T,EAAG41T,GACtC02R,IAAY9/kB,EAAGopT,GAAU51T,EAAG41T,KAAY31T,EAAGw1T,GAAUz1T,EAAGy1T,MAEvD62R,IAAY9/kB,EAAGipT,GAAUz1T,EAAGy1T,KAAYx1T,EAAG21T,GAAU51T,EAAG41T,KAGpE41R,GAxLe,IAwLwB/9kB,GACvC0+kB,IAAoB,GAKhC,MAAMR,GAAqBngqB,KAAKmgqB,mBAAmBH,GAASxrlB,EAAIC,EAAIw1T,EAAQG,GAE5E,GAAIu2R,GAAmB,CACnB,MAAMI,GAAY92R,EAClBA,EAASG,EACTA,EAAS22R,GAGb,MAAMb,GAAoBlgqB,KAAKkgqB,kBAAkBF,GAASvrlB,EAAIuM,EAAIipT,EAAQG,GAE1E,OAAIs2R,KACA1gqB,KAAKghqB,qBAAqBxslB,EAAIC,EAAI0rlB,GAAoBH,IACtDhgqB,KAAKghqB,qBAAqBvslB,EAAIuM,EAAIk/kB,GAAmBF,KAGlD,CAAEG,GAAoBD,IAGjCc,qBAAqBvslB,EAAIuM,EAAIiglB,EAAIjB,GACzBvrlB,EAAG3gB,EAAIktB,EAAGltB,EACV2jK,EAAO3jK,EAAImtmB,EAAGntmB,GACVmtmB,EAAGt3pB,EAAI8qE,EAAG9qE,GAAKq3E,EAAGltB,EAAI2gB,EAAG3gB,GAAKksmB,EAC9BiB,EAAGntmB,EAAIktB,EAAGltB,GACHmtmB,EAAGntmB,EAAI2gB,EAAG3gB,IACjBmtmB,EAAGt3pB,EAAIq3E,EAAGr3E,GAAKq3E,EAAGltB,EAAI2gB,EAAG3gB,GAAKksmB,EAC9BiB,EAAGntmB,EAAI2gB,EAAG3gB,GAGdm6lB,EAAOn6lB,EAAIktB,EAAGltB,GACVmtmB,EAAGt3pB,EAAI8qE,EAAG9qE,GAAK8qE,EAAG3gB,EAAIktB,EAAGltB,GAAKksmB,EAC9BiB,EAAGntmB,EAAIktB,EAAGltB,GACH2gB,EAAG3gB,EAAImtmB,EAAGntmB,IACjBmtmB,EAAGt3pB,EAAIq3E,EAAGr3E,GAAK8qE,EAAG3gB,EAAIktB,EAAGltB,GAAKksmB,EAC9BiB,EAAGntmB,EAAI2gB,EAAG3gB,GAKtBksmB,QAAQxrlB,EAAIC,EAAIw1T,EAAQG,GACpB,MAAMzgY,EAAI8qE,EAAGw1T,GAAUz1T,EAAGy1T,GAE1B,IAAI+1R,GAEJ,OACIA,GADM,IAANr2pB,EACU,GAJJ8qE,EAAG21T,GAAU51T,EAAG41T,IAMRzgY,EAGXq2pB,GAGXa,mBAAmBrslB,EAAIC,EAAIuM,EAAIn2B,GAC3B,OAAQm2B,EAAGn2B,GAAS4pB,EAAG5pB,IAAU4pB,EAAG5pB,GAAS2pB,EAAG3pB,IACnCm2B,EAAGn2B,GAAS4pB,EAAG5pB,IAAU4pB,EAAG5pB,GAAS2pB,EAAG3pB,GAGzDq1mB,kBAAkBF,EAASxrlB,EAAIyM,EAAIgpT,EAAQG,GACvC,MAAM82R,GAAK1slB,EAAGy1T,GAERvoT,GA3PC,MA0PIT,EAAGgpT,GACSi3R,IAEvB,OAAOlhqB,KAAKy4E,MAAMyolB,GAAKx/kB,GAAUlN,EAAG41T,GAAU1oT,GAAWs+kB,EAAS/1R,EAAQG,GAG9E+1R,mBAAmBH,EAASxrlB,EAAIyM,EAAIgpT,EAAQG,GACxC,MACM+2R,GAAKlglB,EAAGgpT,GACRvoT,GAnQC,MAmQWy/kB,GAFP3slB,EAAGy1T,IAId,OAAOjqY,KAAKy4E,MAAM0olB,GAAKz/kB,GAAUT,EAAGmpT,GAAU1oT,GAAWs+kB,EAAS/1R,EAAQG,GAG9E3xT,MAAMy4K,EAAQzB,EAAQw6I,EAAQG,GAC1B,MAAMg3R,EAAe,IAAI9tlB,KACzB8tlB,SAAan3R,GAAU/4I,EACvBkwa,EAAah3R,GAAU36I,EAEhB2xa,EAGXZ,kBAAkBtnmB,EAAIvvD,GAClB,MAAM5D,EAASmzD,EAAGnzD,OAClB,IAAIwM,EAAS,EAEb,QAAS5D,EAAI,EAAGA,EAAI5I,EAAQ4I,IACxB4D,GAAUrF,KAAK06F,IAAIj+F,EAAEgF,GAAKuqD,EAAGvqD,GAEjC,OAAO4D,IC9Pf8upB,GA5BA,iBAAwB9kB,KACpBz8oB,YAAYqmY,GACR3mX,QAEAxf,KAAKshqB,MAAQn7R,EACbnmY,KAAK+e,QAAUonX,EAAKpnX,QAGxBpb,MAAM80E,GACF,MAAM0tT,EAAOnmY,KAAKshqB,MAGlB,OAFcn7R,EAAK6tR,YAAc7tR,EAAK6tR,YAAYv7kB,GAAS0tT,EAAK7+V,SAASmxC,GAK7Ei2kB,KAAKtmlB,EAAMqlE,EAAIx7E,GAAQ,GACnB,OAAOjyD,KAAKshqB,MAAM5S,KAAKtmlB,EAAMqlE,EAAIx7E,GAGrC2V,QACI,OAAO5nE,KAAKshqB,MAAM15lB,QAGtB8nlB,aACI,OAAO1vpB,KAAKshqB,MAAM5R,eCxBX,YAAwB1qpB,GAAMm+P,GACzC,QAASh5N,EAAM,EAAGA,EAAMg5N,EAAKp9P,OAAQokC,IACjC,GAAIg5N,EAAKh5N,GAAKprB,QAAQ/Z,OAASA,GAC3Bm+P,SAAKh5N,GAAKkmnB,qBACH,IAAIkR,GAAUp+Z,EAAKh5N,ICQtC,SAZA,SACIrqC,YAAYk6Y,GACRh6Y,KAAK4jQ,OAASo2I,EAAKp2I,OACnB5jQ,KAAKwhqB,aAAexnR,EAAKynR,eAAe79Z,OACxC5jQ,KAAK0hqB,MAAQ1nR,EAGjB5C,eAAepyY,GACX,OAAOoyY,GAAepyY,EAAMhF,KAAK0hqB,MAAMv+Z,QCE/Cw+Z,GAVA,iBAA4BplB,KACxBz8oB,YAAYqlY,GACR3lX,QAEAxf,KAAK+4Y,UAAY5T,EACjBnlY,KAAK4jQ,OAASuhI,EAASvhI,OACvB5jQ,KAAK4hqB,iBAAmBz8R,EAAS08R,YCN1B,YAAsBx7pB,IACjC,MAAMN,EAASM,GAAON,OACtB,IAAI6xG,EAAQ,EAEZ,QAASjpG,EAAI,EAAGA,EAAI5I,EAAQ4I,IAEpBsmU,GADQ5uU,GAAOsI,KAEfipG,IAIR,OAAOA,ECRX,MAAMkqjB,GAAa,CACfrvnB,IAAK,SAASpsC,IACV,MAAMN,EAASM,GAAON,OACtB,IAAI0sC,EAAMummB,EAEV,QAASrqoB,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMhL,EAAQ0C,GAAOsI,GACjBsmU,GAAStxU,KACT8uC,EAAMvlC,KAAKulC,IAAIA,EAAK9uC,IAI5B,OAAO8uC,IAAQummB,EAAY3yoB,GAAO,GAAKosC,GAG3CjkC,IAAK,SAASnI,IACV,MAAMN,EAASM,GAAON,OACtB,IAAIyI,EAAMyqoB,EAEV,QAAStqoB,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMhL,EAAQ0C,GAAOsI,GACjBsmU,GAAStxU,KACT6K,EAAMtB,KAAKsB,IAAIA,EAAK7K,IAI5B,OAAO6K,IAAQyqoB,EAAY5yoB,GAAO,GAAKmI,GAG3Ci8L,IAAK,SAASpkM,IACV,MAAMN,EAASM,GAAON,OACtB,IAAI0kM,EAAM,EAEV,QAAS97L,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMhL,EAAQ0C,GAAOsI,GACjBsmU,GAAStxU,KACT8mM,GAAO9mM,GAIf,OAAO8mM,GAGXs3d,UAAW,SAAS17pB,IAChB,IAAIkM,EAAS,KAEb,OAAIyvpB,GAAa37pB,MACbkM,EAASuvpB,GAAWr3d,IAAIpkM,KAGrBkM,GAGXqlG,MAAO,SAASvxG,IACZ,MAAMN,EAASM,GAAON,OACtB,IAAI6xG,EAAQ,EAEZ,QAASjpG,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMhL,EAAQ0C,GAAOsI,GACP,OAAVhL,GAAkBinmB,GAAQjnmB,IAC1Bi0G,IAIR,OAAOA,GAGXjiC,IAAK,SAAStvE,IACV,MAAMuxG,EAAQoqjB,GAAa37pB,IAC3B,IAAIkM,EAASlM,GAAO,GAEpB,OAAIuxG,EAAQ,IACRrlG,EAASuvpB,GAAWr3d,IAAIpkM,IAAUuxG,GAG/BrlG,GAGXrL,MAAO,SAASb,IACZ,MAAMN,EAASM,GAAON,OAEtB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMhL,EAAQ0C,GAAOsI,GACrB,GAAc,OAAVhL,GAAkBinmB,GAAQjnmB,GAC1B,OAAOA,EAIf,OAAO0C,GAAO,KAItB47pB,GAAeH,GC/FA,YAAkBj3mB,GAAO3d,GACpC,OAAY,OAARA,EACOA,EAGC4sZ,GAAOjvY,GAAPivY,CACD5sZ,GCJf,iBAA2BqvmB,KAEvBz8oB,cACI0f,QAEAxf,KAAKkiqB,aAAe,GACpBliqB,KAAKmiqB,aAAe,GACpBniqB,KAAKoiqB,WAAa,GAClBpiqB,KAAKqiqB,gBAAkB,GAG3B3pnB,SAAS60V,EAAa+0R,EAAc,CAAEhpB,IAAS76V,EAAc,IAEzD,QAAS9vS,EAAI,EAAGA,EAAI4+X,EAAYxnY,OAAQ4I,IAAK,CACzC,MAAM7G,EAAOylY,EAAY5+X,GAEzB3O,KAAKkiqB,aAAap6pB,GAAQw6pB,EAC1BtiqB,KAAKmiqB,aAAar6pB,GAAQ22S,EAC1Bz+S,KAAKoiqB,WAAWt6pB,GAAQ9H,KAAKuiqB,WAAWD,EAAa,MACrDtiqB,KAAKqiqB,gBAAgBv6pB,GAAQ9H,KAAKuiqB,WAAWD,OAAan9pB,IAIlEq9pB,gBAAgBrha,GACZ,OAAOnhQ,KAAKsiqB,YAAYnha,GAAQxtN,OAAO3zC,KAAKy+S,YAAYt9C,IAG5Dmha,YAAYnha,GACR,OAAOnhQ,KAAKkiqB,aAAa/ga,EAAOr5P,OAAS,CAAEwxoB,IAG/C76V,YAAYt9C,GACR,OAAOnhQ,KAAKmiqB,aAAahha,EAAOr5P,OAAS,CAAEwxoB,IAG/CmpB,UAAUtha,EAAQuha,EAAS1vpB,GACvB,MAAMF,EAAOquP,EAAOruP,KACdkwoB,EAAYp4C,GAAQ53lB,GAAQA,EAAOF,EAAK4vpB,GACxCnwpB,GAAS,CAAE+vpB,YAAa,CAAE3+pB,MAAOq/oB,IACjCsf,GAActiqB,KAAKsiqB,YAAYnha,GAC/Bs9C,GAAcz+S,KAAKmiqB,aAAahha,EAAOr5P,MAC7C,IAAIo7G,GAAQv/G,GAEZ,GAAkB,OAAdq/oB,EACAr/oB,GAAQ3D,KAAKoiqB,WAAWjha,EAAOr5P,cACvB8imB,GAAQo4C,IACoBl7oB,GAC7BwG,MAAMqxB,QAAQqjnB,GAAY,CACjC,MAAM2f,GAAY3f,EAAUp0oB,MAAM0zpB,GAAYv8pB,QAC9CpC,GAAQ3D,KAAK4iqB,eAAe5f,EAAWsf,IACvCp/iB,GAASljH,KAAK4iqB,eAAeD,GAAWlkX,YACZ,iBAAdukW,EAAwB,CACtC,MAAM6f,GAAiB7iqB,KAAK8iqB,aAAa3ha,EAAQmha,IAC3CS,GAAiB/iqB,KAAK8iqB,aAAa3ha,EAAQs9C,IAEjD96S,GAAQ3D,KAAKgjqB,gBAAgBhgB,EAAWsf,GAAaO,IACrD3/iB,GAASljH,KAAKgjqB,gBAAgBhgB,EAAWvkW,GAAaskX,UAVtDp/pB,GAAQ3D,KAAKqiqB,gBAAgBlha,EAAOr5P,MAaxC,OAAI8imB,GAAQjnmB,MACmB,IAAvB2+pB,GAAYv8pB,OACZwM,GAAO+vpB,YAAY3+pB,MAAQA,GAAM2+pB,GAAY,IAE7C/vpB,GAAO+vpB,YAAc3+pB,IAI7B4O,GAAO2wG,OAASA,IAAU,GAEnB3wG,GAGXgwpB,WAAWr/iB,EAAQ+/iB,GACf,MAAMt/pB,EAAQ,GACRoC,EAASm9G,EAAOn9G,OAEtB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IAExBhL,EADkBu/G,EAAOv0G,IACNs0pB,EAGvB,OAAOt/pB,EAGXi/pB,eAAe34nB,EAAOi5E,GAClB,MAAMv/G,EAAQ,GAEd,GAAIu/G,EAAQ,CACR,MAAMn9G,EAASmH,KAAKulC,IAAIywE,EAAOn9G,OAAQkkC,EAAMlkC,QAE7C,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IACxBhL,EAAMu/G,EAAOv0G,IAAMs7B,EAAMt7B,GAIjC,OAAOhL,EAGXq/pB,gBAAgBn6pB,EAAQq6G,EAAQggjB,EAAYhgjB,GACxC,MAAMv/G,EAAQ,GAEd,GAAIu/G,EAAQ,CACR,MAAMn9G,EAASm9G,EAAOn9G,OAEtB,QAAS4I,GAAI,EAAGA,GAAI5I,EAAQ4I,KAAK,CAC7B,MAAM4rD,GAAY2oD,EAAOv0G,IACnBw0pB,GAAeD,EAAUv0pB,IACV,OAAjBw0pB,KACAx/pB,EAAM42D,IAAaq4Z,GAASuwM,GAAct6pB,KAKtD,OAAOlF,EAGXm/pB,aAAa3ha,EAAQqha,GACjB,MAAMM,EAAe,GAErB,GAAIN,EAAiB,CACjB,MAAMz8pB,EAASy8pB,EAAgBz8pB,OAE/B,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAM4rD,GAAYiomB,EAAgB7zpB,GAC5By0pB,GAAkB7omB,KAAc++kB,GAAQ,QAAU/+kB,GAAY,QAEpEuomB,EAAar9pB,KAAiC,OAA5B07P,EAAOiia,IAA6Bjia,EAAOiia,KAAoB7omB,GAAa,OAItG,OAAOuomB,GAIfO,GAAah9nB,QAAU,IAAIg9nB,GAE3B,SAAeA,GCrITC,GAAe,0BACfC,GAAyB,IAAI58T,OAAO,yCAyH1C68T,GAvHA,iBAAmCjnB,KAC/Bz8oB,YAAY2jqB,EAAYtia,EAAQt2M,GAC5BrrC,QAEAxf,KAAK0jqB,iBAAiBD,EAAYtia,EAAQt2M,GAG9C64mB,iBAAiBD,EAAYtia,EAAQt2M,GACjC,MAAM/3C,EAAOquP,EAAOruP,KACd6wpB,EAAiBJ,GAAuB38T,KAAK68T,GAEnD,GAAIE,EAAgB,CAChB3jqB,KAAK4jqB,YAAc5jqB,KAAK6jqB,kBAAkB1ia,EAAQt2M,GAElD,MAAM8xM,GAAU38P,KAAK8jqB,WAAWhxpB,GAC1BixpB,GAAY/jqB,KAAKgkqB,qBAAqBlxpB,EAAM6pP,IAAS,GACrD/uM,GAAW+1mB,EAAe,GAAKh/nB,WAAWg/nB,EAAe,IAAM,EAC/DM,GAAa,CAAE/0R,IAAKvyI,GAAQh5P,MAAQogqB,GAAYn2mB,GAAUuhV,KAAMxyI,GAAQh5P,MAAQogqB,GAAYn2mB,IAElG5tD,KAAKkkqB,YAAc,WACf,OAAOD,YAEJR,EAAW3jpB,SAAW2jpB,EAAW3jpB,QA3BpC,WA2BwD,EAAG,CAC/D9f,KAAK4jqB,YAAc5jqB,KAAK6jqB,kBAAkB1ia,EAAQt2M,GAClD,MAAMs5mB,GAAgBnkqB,KAAKokqB,iBAAiBtxpB,EAAM9S,KAAK8jqB,WAAWhxpB,IAElE9S,KAAKkkqB,YAAc,SAASvgqB,IACxB,MAAO,CAAEurY,IAAKvrY,GAAQwgqB,GAAeh1R,KAAMxrY,GAAQwgqB,MAK/DN,kBAAkB1ia,EAAQt2M,GACtB,MAAM/3C,EAAOquP,EAAOruP,KACduxpB,EAAShB,WACTf,EAAc+B,EAAO/B,YAAYnha,GACjCnuP,GAAO43lB,GAAQ93lB,EAAK,IAAMA,EAAK,GAAK,GAC1C,IAAI8wpB,GAYJ,OAVIjkoB,GAAQ3sB,IAER4wpB,GAAc9pO,GAAO,KADPjvY,EAAQy3mB,EAAYxipB,QAAQ+qC,GAAS,GAChB,KAC5BoqR,GAASjiU,IAChB4wpB,GAAc9pO,YACA9mb,KAASkmoB,KAEvB0qB,GAAc9pO,GADSuqO,EAAOvB,aAAa3ha,EAAQmha,GACfA,EAAYxipB,QAAQ+qC,MAGrD+4mB,GAGXU,cAAcC,EAAYd,GACtB,IAAIv0R,EAAKC,EAAMxrY,EAEf,IAAKinmB,GAAQ64D,GACT,OAAO,KAGX,GAAIzjqB,KAAKkkqB,YACL,OAAOlkqB,KAAKkkqB,YAAYK,GAG5B,GAAI5koB,GAAQ8joB,GACRv0R,EAAMq1R,EAAad,EAAW,GAC9Bt0R,EAAOo1R,EAAad,EAAW,WACxBxuV,GAAStxU,EAAQghC,WAAW8+nB,IACnCv0R,EAAMq1R,EAAa5gqB,EACnBwrY,EAAOo1R,EAAa5gqB,YACZA,EAAQ2/pB,GAAa18T,KAAK68T,IAKlC,MAAM,IAAIhtpB,MAAM,2BAA6BgtpB,GALG,CAChD,MAAMe,GAAeD,GAAc5/nB,WAAWhhC,EAAM,IAAM,KAC1DurY,EAAMq1R,EAAar3pB,KAAKiN,IAAIqqpB,IAC5Br1R,EAAOo1R,EAAar3pB,KAAKiN,IAAIqqpB,KAKjC,MAAO,CAAEt1R,IAAKA,EAAKC,KAAMA,GAG7Bi1R,iBAAiBtxpB,EAAM6pP,GACnB,OAAO38P,KAAKgkqB,qBAAqBlxpB,EAAM6pP,GAAS,GAAQzvP,KAAKqnF,KAAKooK,EAAQ/kJ,OAG9EosjB,qBAAqBlxpB,EAAM6pP,EAAS8na,GAChC,MAAM1+pB,EAAS+M,EAAK/M,OACd0I,EAAQg2pB,EAAW9na,EAAQ/kJ,MAAQ,EAAI+kJ,EAAQ/kJ,MACrD,IAAI8sjB,GAAsB,EAE1B,QAASv6nB,GAAM,EAAGA,GAAMpkC,EAAQokC,KAAO,CACnC,MAAMxmC,GAAQ3D,KAAK4jqB,YAAY9wpB,EAAKq3B,KAChC8qS,GAAStxU,MACT+gqB,IAAuBx3pB,KAAK06F,IAAIjkG,GAAQg5P,EAAQh5P,MAAO,IAI/D,OAAOuJ,KAAKqnF,KAAKmwkB,GAAsBj2pB,GAG3Cq1pB,WAAWhxpB,GACP,MAAM/M,EAAS+M,EAAK/M,OACpB,IAAI0kM,EAAM,EACN7yF,EAAQ,EAEZ,QAASztE,EAAM,EAAGA,EAAMpkC,EAAQokC,IAAO,CACnC,MAAMxmC,GAAQ3D,KAAK4jqB,YAAY9wpB,EAAKq3B,IAChC8qS,GAAStxU,MACT8mM,GAAO9mM,GACPi0G,KAIR,MAAO,CACHj0G,MAAO8mM,EAAM7yF,EACbA,MAAOA,KCxHb+sjB,EAA6B,IAC7BC,EAAS,SAKTC,IARUhmL,cAAmB,IAQP9O,KAAO,KAAQ,EACrC+0L,GAAkB,WAClBC,GAAmB,YAMnBC,GAAO,OACPC,GAAc,cAEdC,GAAQ,QACRC,GAAQ,QAERC,GAAS,SACTC,GAAO,OAEPC,GAAO,OACPC,GAAM,MACNC,GAAW,UACXC,GAAS,SACTC,GAAS,SACTC,GAAc,cACdC,GAAS,SACTC,GAAQ,QACRC,GAAS,SACTC,GAAU,UACVC,GAAuB,sBACvBC,GAAO,OACPC,GAAO,OACPC,GAAM,MACNC,GAAa,YACbC,GAAa,YACbC,GAAgB,eAChBC,GAAa,YACbC,GAAe,cACfC,GAAa,YACbC,GAAa,YACbC,GAAY,WACZC,GAAe,cACfC,GAAU,UACVC,GAAe,cACfC,GAAgB,eAChBC,GAAoB,kBACpBC,GAAkB,iBAClBC,GAAgB,eAChBC,GAAsB,oBACtBC,GAAY,YACZC,GAAwB,CAC1B9B,GAAKK,GAAQM,GAAMP,GAAaH,GAAUwB,GAC1CtB,GAAQkB,GAAcD,GAAWS,GAAWpB,IAO1CsB,GAAe,cAIfC,GAAkB,gBAClBC,GAAkB,gBAClBC,GAAO,OACPC,GAAW,UACXC,GAAa,YACbC,GAAa,YACbC,GAAO,OACPC,GAAW,UACXC,GAAe,cACfhhhB,GAAS,SACTihhB,GAAa,YAEbC,GAAe,cACfC,GAAe,cAGfC,GAAc,MACdC,GAAW,WAEXC,GAAa,YAEbC,GAAc,aAEdC,GAAa,4BCpFnB,iBAA2BpmB,GACvBripB,YAAYovY,EAAKC,EAAM6nO,EAAYztR,EAAOpoF,EAAQpiP,IAC9CS,MAAMT,IAEN/e,KAAKkvY,IAAMA,EACXlvY,KAAKmvY,KAAOA,EACZnvY,KAAKg3mB,WAAaA,EAClBh3mB,KAAKupV,MAAQA,EACbvpV,KAAKmhQ,OAASA,EAGlB++Y,OAAOpD,GACH,MAAMr9P,EAAUz/Y,KAAK+e,QAAQ0gY,QACvBu3N,EAAah3mB,KAAKg3mB,WAElBwxD,EADOxoqB,KAAKyoqB,UACIjc,QAAQxspB,KAAKkvY,IAAKlvY,KAAKmvY,MACvCu5R,GAAY5rB,EAAUztkB,SACtBs5lB,GAAY3oqB,KAAK4oqB,aAAa9rB,EAAW9lC,GACzC6xD,GAAW7xD,EAAa0xD,GAAU/+pB,EAAI++pB,GAAU50mB,EAChDg1mB,GAAWD,GAAWF,GACtBI,GAASF,GAAWF,GAC1B,IAAI7f,GAEA9xC,GACA8xC,GAAa,CACT,IAAI5ukB,GAAMwulB,GAAU/+pB,EAAG6+pB,EAAS3zlB,IAChC,IAAIqF,GAAMwulB,GAAU/+pB,EAAG6+pB,EAAS3rB,KAEhCp9P,GACAqpQ,GAAWrjpB,KAAK,IAAIy0E,GAAM4ulB,GAAUN,EAAS3zlB,IACzC,IAAIqF,GAAM6ulB,GAAQP,EAAS3zlB,IAC3B,IAAIqF,GAAM4ulB,GAAUN,EAAS3rB,IAC7B,IAAI3ikB,GAAM6ulB,GAAQP,EAAS3rB,KAEnC78oB,KAAKi8H,IAAM,IAAIghhB,GAAI6rB,GAAUN,EAAS3zlB,GAAIk0lB,GAAQP,EAAS3rB,MAE3DiM,GAAa,CACT,IAAI5ukB,GAAMsulB,EAASrzlB,GAAIuzlB,GAAU50mB,GACjC,IAAIomB,GAAMsulB,EAAS/ylB,GAAIizlB,GAAU50mB,IAEjC2rV,GACAqpQ,GAAWrjpB,KAAK,IAAIy0E,GAAMsulB,EAASrzlB,GAAI2zlB,IACnC,IAAI5ulB,GAAMsulB,EAASrzlB,GAAI4zlB,IACvB,IAAI7ulB,GAAMsulB,EAAS/ylB,GAAIqzlB,IACvB,IAAI5ulB,GAAMsulB,EAAS/ylB,GAAIszlB,KAE/B/oqB,KAAKi8H,IAAM,IAAIghhB,GAAIurB,EAASrzlB,GAAI2zlB,GAAUN,EAAS/ylB,GAAIszlB,KAG3D/oqB,KAAK8opB,WAAaA,GAGtB8f,aAAa3siB,EAAK+6e,GACd,MAAMm2C,EAAUn2C,EAAa/6e,EAAIvlH,QAAUulH,EAAI1xH,SAG/C,OAFkB2C,KAAKulC,IAAIvlC,KAAKC,MAAMggpB,EAAU,GAxDxB,MA6D5BlvU,eACI,MAAMl/T,EAAU/e,KAAK+e,QACf6kP,EAAS7kP,EAAQ6kP,OAEnBA,EACA5jQ,KAAK4jQ,OAASA,EAAO,CACjBsrI,IAAKlvY,KAAKkvY,IACVC,KAAMnvY,KAAKmvY,KACXjxD,KAAMl+U,KAAKi8H,IAAIwhhB,SACf3kT,OAAQ94V,KAAKogpB,YACbrhoB,QAAS,CACL0gY,QAAS1gY,EAAQ0gY,QACjBlgQ,MAAOxgI,EAAQwgI,MACf7nE,KAAM34D,EAAQ24D,MAElBumQ,aAAc,KACVj+U,KAAKgpqB,sBACL,MAAMhgB,EAAgBhppB,KAAK4jQ,OAC3B,cAAO5jQ,KAAK4jQ,OACLolZ,KAIfhppB,KAAKgpqB,sBAIbA,sBACI,MAAQjqpB,UAAS+poB,cAAe9opB,KAC1B+spB,EAAc,CAChBlrgB,OAAQ,CACJtC,MAAOxgI,EAAQwgI,MACf7oI,MAAOqI,EAAQ24D,KAAKhhE,MACpBsrP,SAAUjjP,EAAQ24D,KAAKsqL,WAI/BxiP,MAAMy+T,eAEN,QAAS9zS,EAAM,EAAGA,EAAM2+mB,EAAW/ipB,OAAQokC,GAAO,EAAG,CACjD,MAAMutC,EAAO,IAAI2kE,KAAU0wgB,GACtBtra,OAAOqna,EAAW3+mB,GAAKxgC,EAAGm/oB,EAAW3+mB,GAAK2pB,GAC1C4tL,OAAOona,EAAW3+mB,EAAM,GAAGxgC,EAAGm/oB,EAAW3+mB,EAAM,GAAG2pB,GAEvDm1lB,GAAiBvxkB,GACjB13E,KAAK4jQ,OAAO1yO,OAAOwmD,KAK/BorkB,GAAkBmmB,GAAc,CAC5B9jW,UAAW,CACPr9T,KAAM88pB,EACNtzpB,MAAOqzpB,GAEXllR,SAAS,EACT/nU,KAAM,CACFhhE,MAAO,GAEXu6I,OAAQ,IAGZ,SAAeg4gB,GCzHfC,GARA,iBAAkCD,GAC9BR,UAGI,OAFazoqB,KAAKupV,MAAM4/U,gBAAgBnpqB,KAAKmhQ,UCAtC,YAAqBpiP,GAASqkD,EAASl5D,EAAQ,GAAIk/pB,GAAS,GACvE,MAAM/mN,EAAWn4c,EAAMm4c,SAAWn4c,EAAMm4c,UAAY,GAC9C7qX,EAAQttF,EAAMstF,MAAQttF,EAAMstF,OAAS,EAC3C,IAAI6xkB,IAAY,EAIhB,GAFAn/pB,EAAMo/pB,SAAWp/pB,EAAMo/pB,UAAY,GAE/B9xkB,EATiB,EAUjB,OAAO,KAGX,QAAS7yB,MAAY5lD,GACjB,IAAK8+nB,GAAQl5kB,GAAUz6D,EAAMo/pB,WAAavqpB,GAAQstB,eAAes4B,IAAW,CACxE,MAAMs+E,GAAYlkI,GAAQ4lD,IACtBo1kB,GAAW92f,KACXomhB,IAAY,EACPD,IACDrqpB,GAAQ4lD,IAAY02kB,GAAep4f,GAAU7/E,GAAUi/Y,EAAS19Y,OAE7DumG,GAASjoB,MACXmmhB,IACDl/pB,EAAMm4c,SAAWA,EAAS19Y,KAE9Bz6D,EAAMstF,QACN6xkB,GAAYE,GAAYtmhB,GAAW7/E,EAASl5D,EAAOk/pB,IAAWC,GAC9Dn/pB,EAAMstF,SAKlB,OAAO6xkB,GClCI,YAAyBloa,IACpC,MAAMqoa,EAAcroa,GAAOp7P,OAC3B,IAAIwpP,EAAa,EAEjB,QAAS5gP,EAAI,EAAGA,EAAI66pB,EAAa76pB,IAC7B4gP,EAAariP,KAAKsB,IAAI+gP,EAAY4R,GAAOxyP,GAAGmE,KAAK/M,QAGrD,OAAOwpP,ECMX,iBAA+B4yZ,GAC3BripB,YAAYqlY,EAAUpmX,GAClBS,MAAMT,GAEN/e,KAAKmlY,SAAWA,EAChBnlY,KAAKsgpB,aAAen7Q,EAASm7Q,aAC7BtgpB,KAAK+kY,aAAeI,EAASskS,mBAAmB1qpB,EAAQoiP,OAAO,IAI/DnhQ,KAAK0pqB,gBAAkB,GAEvB1pqB,KAAK8/E,OAAS,GACd9/E,KAAK2pqB,eAAiB,GACtB3pqB,KAAK4pqB,aAAe,GACpB5pqB,KAAK6pqB,cAAgB,GACrB7pqB,KAAK8pqB,YAAc,GAEnB9pqB,KAAK28G,SAGTA,SACI38G,KAAK+pqB,mBAAmB/pqB,KAAKo0U,SAASvuT,KAAK7lB,OAG/CgqqB,aAAa7oa,EAAQ8oa,GACjB,IAAIlrpB,EAAU/e,KAAK6pqB,cAAcI,GACjC,IAAKlrpB,EAAS,CACV,MAAMsjc,EAAWrid,KAAKkqqB,YAAY7ppB,UAAUgic,SAC5Crid,KAAK6pqB,cAAcI,GAAYlrpB,EAAU07nB,GAAW,GAAKp4L,EAAU,CAC/Dr2c,UAAWhM,KAAK+e,QAAQorpB,YACzBhpa,GAGP,OAAOpiP,EAGXqrpB,UAAU3xlB,GACN,IAAKA,EACD,OAAO,EAGX,GAAIz4E,KAAK+e,QAAQsrpB,cAAgBp1V,GAASx8P,EAAM90E,OAAQ,CACpD,MACMgmqB,EAAiB3pqB,KAAK2pqB,eADTlxlB,EAAMu2T,YAEnBs7R,EAAc,GACpB,IAAIC,EAAc,EAElB,QAAS57pB,GAAI,EAAGA,GAAIg7pB,EAAe5jqB,OAAQ4I,KAAK,CAC5C,MAAM0wD,GAAQsqmB,EAAeh7pB,IAC7B,GAAI0wD,GAAO,CACP,MAAMh6C,GAAQozD,EAAM0oL,OAAO97O,MACrBmlpB,GAAanrmB,GAAM8hM,OAAO97O,MAEhC,GAAKA,IAASmlpB,IAAenlpB,GAAMqjB,QAAU8hoB,GAAW9hoB,MACpD,SAGAusS,GAAS51Q,GAAM17D,SACf4mqB,GAAer9pB,KAAKiN,IAAIklD,GAAM17D,OAC9B2mqB,EAAY7kqB,KAAKyH,KAAKiN,IAAIklD,GAAM17D,UAK5C,GAAI4mqB,EAAc,EACd,OAAO9xlB,EAAM90E,MAAQ4mqB,EAI7B,OAAO9xlB,EAAM90E,MAGjB8mqB,UAAUhylB,EAAOguf,EAAa,GAC1B,MAAMkjG,EAAiB3pqB,KAAK2pqB,eAAelxlB,EAAMu2T,YAEjD,GAAIhvY,KAAK+e,QAAQ2rpB,UAAW,CACxB,IAAIN,GAAYpqqB,KAAKoqqB,UAAU3xlB,GAC/B,MAAMkylB,GAAWP,IAAa,EAC9B,IAAIvnO,GAAY4jI,EACZmkG,IAAe,EAEnB,QAASj8pB,GAAI,EAAGA,GAAIg7pB,EAAe5jqB,OAAQ4I,KAAK,CAC5C,MAAM0wD,GAAQsqmB,EAAeh7pB,IAE7B,GAAI8pE,IAAUpZ,GACV,MAGJ,MAAMh6C,GAAQozD,EAAM0oL,OAAO97O,MACrBmlpB,GAAanrmB,GAAM8hM,OAAO97O,MAChC,GAAIA,IAASmlpB,YACEnlpB,KAAUyrD,IAAUzrD,KAAUmlpB,IAIrCnlpB,GAAMqjB,OAASrjB,GAAMqjB,QAAU8hoB,GAAW9hoB,OAC1C,SAIR,MAAMmioB,GAAa7qqB,KAAKoqqB,UAAU/qmB,KAC7BwrmB,IAAc,GAAKF,IACnBE,GAAa,IAAMF,MACpB9nO,IAAagoO,GACbT,IAAaS,GACbD,IAAe,EAEX5qqB,KAAK+e,QAAQsrpB,eACbD,GAAYl9pB,KAAKulC,IAAI23nB,GAAW,KAK5C,OAAIQ,KACA/nO,IAAa4jI,GAGV,CAAE5jI,GAAWunO,IAGxB,MACM/kS,EAAYrlY,KAAKmpqB,gBADR1wlB,EAAM0oL,QAEf7R,GAAoBtvP,KAAK8qqB,0BAA0BzlS,GAEzD,MAAO,CAAE/1I,GAAmBy7a,GAAoBtylB,EAAM90E,OAAS80E,EAAM90E,MAAQ2rP,IAGjF07a,YAAYp5R,EAAUq5R,GAClB,IAAIx4nB,EAAMummB,EACNxqoB,EAAMyqoB,EAEV,QAAStqoB,EAAI,EAAGA,EAAI3O,KAAK2pqB,eAAe5jqB,OAAQ4I,IAAK,CACjD,MAAMg7pB,GAAiB3pqB,KAAK2pqB,eAAeh7pB,GAC3C,GAAKg7pB,GAIL,QAASuB,GAAM,EAAGA,GAAMvB,GAAe5jqB,OAAQmlqB,KAAO,CAClD,MAAMzylB,GAAQkxlB,GAAeuB,IAC7B,GAAIzylB,KACIA,GAAM0oL,OAAO97O,QAAU4lpB,GAAaxylB,GAAM0oL,OAAOglI,OAASyL,GAAU,CACpE,MAAMnkQ,GAAKztI,KAAKyqqB,UAAUhylB,GAAO,GAAG,GAChCmyhB,GAAQn9d,KAAOl/E,SAASk/E,MACxBj/H,EAAMtB,KAAKsB,IAAIA,EAAKi/H,IACpBh7F,EAAMvlC,KAAKulC,IAAIA,EAAKg7F,OAOxC,MAAO,CAAEh7F,IAAKA,EAAKjkC,IAAKA,GAG5B28pB,mBACI,MAAQT,YAAWvpa,OAAQiqa,GAAgBprqB,KAAK+e,QAC1CsspB,EAAc,GAEpB,GAAIX,EACA,QAAS/7pB,EAAI,EAAGA,EAAIy8pB,EAAYrlqB,OAAQ4I,IAAK,CACzC,MAAMwyP,EAASiqa,EAAYz8pB,GACrBijY,GAAWzwI,EAAOglI,KAClBtzX,GAAM++X,GAAWzwI,EAAO97O,MAE9B,IAAIuiM,GAASyjd,EAAYx4pB,IACzB,IAAK+0M,GAAQ,CACTA,GAAS5nN,KAAKgrqB,YAAYp5R,GAAUzwI,EAAO97O,OAE3C,MAAMimpB,GAActrqB,KAAKsrqB,YACrBA,KACIA,GAAYC,SAASxlqB,SACrB6hN,GAAOn1K,IAAMvlC,KAAKulC,IAAIm1K,GAAOn1K,IAAK6inB,GAAkBgW,GAAYC,UAAU94nB,MAE1E64nB,GAAYX,SAAS5kqB,SACrB6hN,GAAOp5M,IAAMtB,KAAKsB,IAAIo5M,GAAOp5M,IAAK8mpB,GAAkBgW,GAAYX,UAAUn8pB,OAI9Eo5M,GAAOn1K,MAAQummB,GAAapxb,GAAOp5M,MAAQyqoB,EAC3CoyB,EAAYx4pB,IAAO+0M,GAEnBA,GAAS,KAIbA,KACA5nN,KAAK0pqB,gBAAgB93R,IAAYhqL,KAMjD4jd,YAAY/ylB,EAAO3lE,EAAMk8X,GACrB,MAAQrrY,QAAOw9P,SAAQ8oa,aAAaxxlB,EAC9B4xT,GAAY5xT,EAAM15D,QAAQsrX,UAC1BohS,GAAW34pB,EAAKowG,OAAO4hjB,IACvB4G,GAAY54pB,EAAKowG,OAAO6hjB,IAC9B,IAAId,GAEAhvV,GAASw2V,KAAax2V,GAASy2V,IAC/BzH,GAAa,CAAE/0R,IAAKu8R,GAAUt8R,KAAMu8R,IAC7BrhS,IAAaugO,GAAQvgO,GAAU1mY,SACtC3D,KAAK2rqB,kBAAoB3rqB,KAAK2rqB,mBAAqB,GACnD3rqB,KAAK2rqB,kBAAkB1B,IAAYjqqB,KAAK2rqB,kBAAkB1B,KACtD,IAAI2B,GAAqBvhS,GAAU1mY,MAAOw9P,EAAQm4Y,IAEtD2qB,GAAajkqB,KAAK2rqB,kBAAkB1B,IAAU3F,cAAc3gqB,EAAO0mY,GAAU1mY,QAG7EsgqB,KACAxrlB,EAAMy2T,IAAM+0R,GAAW/0R,IACvBz2T,EAAM02T,KAAO80R,GAAW90R,KACxBnvY,KAAK6rqB,iBAAiBpzlB,EAAOu2T,IAIrC68R,iBAAiBpzlB,EAAOu2T,GACpB,MAAMgoO,GAAch3mB,KAAK+e,QAAQorpB,WAC3BprpB,EAAU05D,EAAM15D,QAAQsrX,UAC9B,IAAMlpI,SAAQ+tI,OAAKC,SAAS12T,EAE5B,GAAIz4E,KAAK+e,QAAQ2rpB,UAAW,CACxB,MAAMoB,GAAoB9rqB,KAAK8rqB,kBAAkBrzlB,EAAOu2T,GACxDE,GAAM48R,GAAkB58R,IACxBC,GAAO28R,GAAkB38R,SACtB,CACH,MAAMjsR,GAAS,CAAE8rR,WAAYA,EAAY7tI,OAAQA,GACjDnhQ,KAAKutb,YAAY,CAAE5pb,MAAOurY,IAAOhsR,IACjCljH,KAAKutb,YAAY,CAAE5pb,MAAOwrY,IAAQjsR,IAGtC,MAAM6ojB,GAAW,IAAIC,GAAoB98R,GAAKC,GAAM6nO,EAAYh3mB,KAAMmhQ,EAAQpiP,GAC9E05D,EAAM4xT,UAAY,CAAE0hS,IACpBtzlB,EAAMvnD,OAAO66oB,IAGjBD,kBAAkBrzlB,EAAOu2T,GACrB,MAAMo7R,EAAYpqqB,KAAKyqqB,UAAUhylB,EAAO,GAAG,GAAKA,EAAM90E,MAChDurY,EAAMz2T,EAAMy2T,IAAMk7R,EAClBj7R,EAAO12T,EAAM02T,KAAOi7R,EAE1B,YAAKkB,YAActrqB,KAAKsrqB,aAAe,CAAEX,SAAU,GAAIY,SAAU,IAE7Dr8R,EAAM,IACNlvY,KAAKsrqB,YAAYC,SAASv8R,GAAc9hY,KAAKulC,IAAIzyC,KAAKsrqB,YAAYC,SAASv8R,IAAe,EAAGE,IAG7FC,EAAO,IACPnvY,KAAKsrqB,YAAYX,SAAS37R,GAAc9hY,KAAKsB,IAAIxO,KAAKsrqB,YAAYX,SAAS37R,IAAe,EAAGG,IAG1F,CAAED,IAAKA,EAAKC,KAAMA,GAG7B/6D,SAASthU,EAAMowG,GACX,MAAQ8rR,aAAY7tI,SAAQ8oa,YAAa/mjB,EAEzC,IAAIymjB,GAAiB3pqB,KAAK2pqB,eAAe36R,GACpC26R,KACD3pqB,KAAK2pqB,eAAe36R,GAAc26R,GAAiB,IAGvD,IAAIC,GAAe5pqB,KAAK4pqB,aAAaK,GAChCL,KACD5pqB,KAAK4pqB,aAAaK,GAAYL,GAAe,IAGjD,MAAMnxlB,GAAQz4E,KAAK+4E,YAAYjmE,EAAMowG,GACjCzqC,KACA5yE,OAAOw0D,OAAOoe,GAAOyqC,GAErBzqC,GAAM8hhB,MAAQv6lB,KACdy4E,GAAMwzlB,SAAWn5pB,EAAKowG,OAAO+ojB,SACxBrhE,GAAQnyhB,GAAMnjB,YACfmjB,GAAMnjB,SAAW6rM,EAAOruP,KAAKk8X,IAEjChvY,KAAKwrqB,YAAY/ylB,GAAO3lE,EAAMk8X,IAGlChvY,KAAK8/E,OAAOr6E,KAAKgzE,IACjBmxlB,GAAankqB,KAAKgzE,IAClBkxlB,GAAelkqB,KAAKgzE,IAEpBz4E,KAAKutb,YAAYz6a,EAAKwvpB,YAAap/iB,GAGvCgpjB,iBAAiBntpB,EAASpb,EAAOy9P,EAAU4tI,EAAY7tI,EAAQ8oa,IAC3D,MAAM//pB,GAAQ,CAAEm4c,SAAUlhN,EAAOgra,UAAW7C,SAAU,CAAE,OAAQ,YAAa,UAAW,UAAW,UAAW,WAAY,SAAU,SAAU,sBAAuB,wBAErK,IAAI8C,GAASpsqB,KAAK8pqB,YAAYG,IACzBr/D,GAAQwhE,MACTpsqB,KAAK8pqB,YAAYG,IAAYmC,GAAS7C,GAAYxqpB,EAAS,GAAI7U,IAAO,IAG1E,IAAI8/pB,GAAejrpB,EACnB,OAAIqtpB,KACApC,GAAevvB,GAAW,GAAIuvB,IAC9BT,GAAYS,GAAc,CACtBrmqB,MAAOA,EACPy9P,SAAUA,EACVx9O,MAAOorX,EACP7tI,OAAQA,EACR7rM,SAAU6rM,EAAOruP,KAAKk8X,IACvB9kY,KAGA8/pB,GAGXz8O,YAAYz6a,EAAMowG,GACd,MAAM0uR,EAAW1uR,EAAOi+I,OAAOglI,KACzBxiY,EAAQmP,EAAKnP,MACnB,IAAI0oqB,EAAYrsqB,KAAK0pqB,gBAAgB93R,GAEjCrjV,SAAS5qD,IAAoB,OAAVA,IACnB0oqB,EAAYrsqB,KAAK0pqB,gBAAgB93R,GAC7By6R,GAAa,CAAE55nB,IAAKummB,EAAWxqoB,IAAKyqoB,GAExCozB,EAAU55nB,IAAMvlC,KAAKulC,IAAI45nB,EAAU55nB,IAAK9uC,GACxC0oqB,EAAU79pB,IAAMtB,KAAKsB,IAAI69pB,EAAU79pB,IAAK7K,IAIhDwlqB,gBAAgBhoa,GACZ,MAAMgkI,EAAWnlY,KAAKmlY,SAChByM,EAAWzwI,EAAOglI,KAClBA,EAAOyL,EAAWzM,EAASmnS,eAAe16R,GAAYzM,EAASE,UAErE,IAAKc,EACD,MAAM,IAAI1vX,MAAM,yCAA2Cm7X,GAG/D,OAAOzL,EAGX+5Q,OAAOpD,GACH,MAAMyvB,EAAgBvsqB,KAAKusqB,cAAgB,GACrCC,EAAcxsqB,KAAK8/E,OACnBilT,EAAe/kY,KAAK+kY,aAC1B,IAAI29R,EAAU,EAEd1iqB,KAAK+pqB,mBAAmB,CAACj3pB,GAAMowG,MAC3B,MAAQ8rR,cAAY7tI,OAAQsra,IAAkBvpjB,GAExCmiR,GAAYrlY,KAAKmpqB,gBAAgBsD,IACjCh0lB,GAAQ+zlB,EAAY9J,KAE1B,IAAIgK,GAAeH,EAAcv9R,IAMjC,GALK09R,KACDH,EAAcv9R,IAAc09R,GACxB1sqB,KAAK0sqB,aAAa3nS,EAAciK,GAAY3J,KAGhD5sT,GAAO,CACP,MAAMgylB,GAAYzqqB,KAAKyqqB,UAAUhylB,GAAO4sT,GAAUohM,cAC5CkmG,GAAY3sqB,KAAK2sqB,UAAUtnS,GAAWolS,IAC5C,GAAIkC,GAAW,CACX,MAAMC,GAAY5sqB,KAAK4sqB,UAAUF,GAAcC,IAE/Cl0lB,GAAMo0lB,UAAY7sqB,KAAK6sqB,UAAUp0lB,GAAO4sT,IACxC5sT,GAAMwtT,WAAawkS,GAAU,GAEzBzqqB,KAAK+e,QAAQsrpB,eACb5xlB,GAAMgtQ,WAAazlV,KAAKoqqB,UAAU3xlB,KAGtCz4E,KAAK8sqB,YAAYr0lB,GAAOm0lB,SAExBn0lB,GAAMw7P,SAAU,KAK5Bj0U,KAAK+sqB,iBAAiBR,IACjBvsqB,KAAK+e,QAAQ0+X,MAAQz9Y,KAAK+e,QAAQiupB,aAAehtqB,KAAK8/E,OAAO/5E,QAC9D/F,KAAKgtqB,cAGThtqB,KAAKi8H,IAAM6ghB,EAGf6vB,UAAUtnS,EAAWolS,GACjB,OAAOplS,EAAUmnR,QAAQie,EAAU,GAAIA,EAAU,IAAKzqqB,KAAK+e,QAAQ0+X,MAGvEuvR,cACI,MAAMrD,EAAiB3pqB,KAAK2pqB,eACtB7plB,EAAS6plB,EAAe,GAAGh2nB,OAAO2jF,GAAKqyiB,IAC7C,QAASx/nB,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IAC/B21C,EAAO31C,IACPnqC,KAAKitqB,WAAWntlB,EAAO31C,IAKnC8ioB,WAAWx0lB,GACP,MAAMq7kB,EAAe9zpB,KAAK+kY,aAAa8uR,UAAUp7kB,EAAMwjD,KAClD63hB,EAAa71lB,OAAOwa,EAAMwjD,MAC3BxjD,EAAMynkB,OAAO4T,GAIrB+Y,UAAUp0lB,EAAO4sT,GACb,MAAM/1I,EAAoBtvP,KAAK8qqB,0BAA0BzlS,GACnD1hY,EAAQ80E,EAAM90E,MAEpB,OAAO0hY,EAAUtmX,QAAQgwE,QACrBprF,EAAQ2rP,EAAoB3rP,GAAS2rP,EAG7Cw7a,0BAA0BzlS,GACtB,MAAMN,EAAe/kY,KAAK+kY,aACpBhmX,EAAUsmX,EAAUtmX,QAK1B,MAJuB,GAAG40B,OACtB50B,EAAQi8oB,oBAAsBj8oB,EAAQuwO,mBAGpBy1I,EAAa8M,WAAa,IAAM,EAG1Di7R,YAAYr0lB,EAAOm0lB,GACfn0lB,EAAMynkB,OAAO0sB,GAGjBG,oBAEAH,UAAUF,EAAcC,GAEpB,MAAMxC,EADUnqqB,KAAK+e,QACMorpB,WACrB7d,EAAQ6d,EAAawC,EAAYD,EACjCngB,GAAQ4d,EAAauC,EAAeC,EAE1C,OAAO,IAAI1vB,GAAIqP,EAAMn3kB,GAAIo3kB,GAAM13kB,GAAIy3kB,EAAM72kB,GAAI82kB,GAAM1P,IAGvD6vB,aAAa3nS,EAAciK,GACvB,OAAOjK,EAAaynR,QAAQx9Q,GAGhC+6R,mBAAmBl6pB,GACf,MAAMsxP,EAASnhQ,KAAK+e,QAAQoiP,OACtBvpJ,EAAQu8iB,GAAgBhzZ,GACxBqoa,EAAcroa,EAAOp7P,OAE3B,QAASkkqB,EAAW,EAAGA,EAAWT,EAAaS,IAC3CjqqB,KAAKktqB,oBAAoB/ra,EAAO8oa,GAAW,sBAAuBA,EAAUp6pB,GAGhF,QAASm/X,EAAa,EAAGA,EAAap3R,EAAOo3R,IACzC,QAASi7R,GAAW,EAAGA,GAAWT,EAAaS,KAAY,CACvD,MAAMwC,GAAgBtra,EAAO8oa,IACvBkD,GAAkBntqB,KAAK+kY,aAAamvR,WAAWllR,GAGrDn/X,EAFkB7P,KAAKotqB,WAAWX,GAAexC,GAAUj7R,GAEvC,CAChB5tI,SAAU+ra,GACVn+R,WAAYA,EACZmlR,gBAAiBv8iB,EACjBupJ,OAAQsra,GACRxC,SAAUA,KAKtB,QAASA,EAAW,EAAGA,EAAWT,EAAaS,IAC3CjqqB,KAAKktqB,oBAAoB/ra,EAAO8oa,GAAW,sBAAuBA,EAAUp6pB,GAIpFq9pB,oBAAoB/ra,EAAQt2M,EAAOo/mB,EAAUp6pB,GACzC,MAAMw9pB,EAAkBlsa,EAAOt2M,GAC/B,GAAIwinB,EAAiB,CACjB,MAAMr+R,GAAaq+R,EAAgBr+R,WAGnCn/X,EAFkB7P,KAAKotqB,WAAWjsa,EAAQ8oa,EAAUj7R,GAAYq+R,EAAgBr6pB,MAE5D,CAChBouP,SAAUisa,EAAgBjsa,SAC1B4tI,WAAYA,GACZ7tI,OAAQA,EACR8oa,SAAUA,EACV30mB,SAAU+3mB,EAAgBr6pB,QAKtCo6pB,WAAWjsa,EAAQ8oa,EAAUj7R,EAAYh8X,GAChChT,KAAKstqB,aACNttqB,KAAKstqB,WAAa,IAGtB,IAAIC,EAAYvtqB,KAAKstqB,WAAWrD,GAC3BsD,IACDA,EAAYvtqB,KAAKstqB,WAAWrD,GAAY,IAG5C,IAAIn3pB,GAAOy6pB,EAAUv+R,GACrB,OAAKl8X,KACDA,GAAOy6pB,EAAUv+R,GAAcq0R,qBAA+Blia,EAAQ6tI,EAAYh8X,IAG/EF,GAGX06pB,iBAAiB/0lB,EAAOr9D,GACpB,OAAoB,OAAhBq9D,EAAM90E,MACC,GAGJ3D,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAQq9D,EAAM90E,OAGvD4gqB,WAAWzxpB,GACP,OAAOA,EAAKwvpB,YAAY3+pB,OAIhCm/oB,GAAkB2qB,GAAkB,CAChCtsa,OAAQ,GACRgpa,YAAY,EACZO,WAAW,EACXjtR,MAAM,EACNuvR,aAAa,IAGjB,SAAeS,GC1efC,GA9CyB,CACrBjimB,MAAO,SAAS89Q,GAAOtgV,GACnB,OAAOsgV,GAAMt/U,QN6DA,cM3DTjK,KAAKy2D,UAAUxtD,KAIvBmgmB,MAAO,SAAS7/Q,GAAOtgV,GACnB,OAAOsgV,GAAMt/U,QACTq9pB,GACAtnqB,KAAKy2D,UAAUxtD,KAIvBw5N,KAAM,SAAS8mH,GAAOtgV,GAClB,OAAOsgV,GAAMt/U,QNiDD,aM/CRjK,KAAKy2D,UAAUxtD,KAIvBkb,IAAK,SAASolU,GAAOtgV,GACjB,OAAOsgV,GAAMt/U,QN2CA,cMzCTjK,KAAKy2D,UAAUxtD,KAIvBwtD,UAAW,SAASxtD,IAChB,MAAO,CACHtF,MAAO3D,KAAK2D,MACZ8hV,WAAYzlV,KAAKylV,WACjBwgD,WAAYjmY,KAAKimY,WACjB7kI,SAAUphQ,KAAKohQ,SACfD,OAAQnhQ,KAAKmhQ,OACb7rM,SAAUt1D,KAAKs1D,SACf25U,aAAcjvY,KAAKivY,aACnBxgY,MAAOzO,KAAKyO,MACZiG,QAASsmoB,GAAa/xoB,IACtBosH,cAAepsH,GACfwvE,MAAOz4E,QCtBnBusZ,GAnBkB,CACdohR,WAAY,WACR,MAAM5upB,GAAU/e,KAAK+e,QAAQ0rX,MACvB3/X,EAAO9K,KAAKisqB,UAAYltpB,GAAQ3Z,MAAM0F,MAEpB,IAApBiU,GAAQk1T,SAAqB22R,GAAQ9/lB,IAAkB,OAATA,IAC9C9K,KAAKk2K,KAAO,IAAIkd,GAAK,CACjBzvL,MAAO3D,KAAK2D,MACZmH,KAAMA,EACNwqD,SAAUt1D,KAAKs1D,SACf8rM,SAAUphQ,KAAKohQ,SACfD,OAAQnhQ,KAAKmhQ,QACdnhQ,KAAK+e,QAAQ0rX,MAAOzqY,KAAKu6lB,MAAM+lD,cAElCtgpB,KAAKkxB,OAAOlxB,KAAKk2K,SCN7B,iBAAwBise,GACpBripB,YAAY6D,EAAOob,GACfS,QAEAxf,KAAK2D,MAAQA,EACb3D,KAAK+e,QAAUA,EACf/e,KAAK6sqB,UAAYxxB,GAAer7oB,KAAK+e,QAAQ8tpB,WAAW,GACxD7sqB,KAAK4tqB,iBAAkB,EAG3BjxjB,SACI,MAAQ0pO,UAASmkD,UAAWxqY,KAAK+e,QAEjC,IAAI/e,KAAK6tqB,UAWT,IAPA7tqB,KAAK6tqB,WAAY,EAEbxnV,EAAQpS,SAAWoS,EAAQr3R,OAC3BhvD,KAAK0opB,OAAS1opB,KAAKq/G,eACnBr/G,KAAKkxB,OAAOlxB,KAAK0opB,SAGjBl+Q,EAAOv2D,QAAS,CAChB,MAAMomP,EAAgB9rL,GAAY/D,GAC5Bw4Q,EAAYhjpB,KAAKgjpB,YACvB,IAAIrka,EAAY3+O,KAAK2D,MACjB02jB,EACA17U,EAAY07U,EAAc2oF,GACnBx4Q,EAAOpvX,SACdujO,EAAY3+O,KAAKwvY,YAAYhF,EAAOpvX,SAExCpb,KAAKoF,MAAQ,IAAIqipB,GAAQ9oa,EACrB87Z,GAAW,CACPt9kB,MAAOs7kB,EACP+J,OAAQ/J,EACRlqmB,OAAQ,CACJ6gC,KAAM,EACNE,MAAO,GAEX2hF,OAAQoqf,GAAe7wQ,EAAOv5O,OAAQjxJ,KAAKmhQ,OAAOlwG,SACnDu5O,GACHw4Q,GAEJhjpB,KAAKkxB,OAAOlxB,KAAKoF,OAGrBpF,KAAK2tqB,aAED3tqB,KAAK+rqB,UACL/rqB,KAAKkxB,OAAOlxB,KAAK+rqB,WAIzB+B,eACI,MAAM/upB,EAAU/e,KAAK+e,QAAQsnU,QACvBL,EAAajnU,EAAQinU,WACrBhpM,EAASy9f,GAAW,CAAEl7f,MAAOv/I,KAAKu/I,OAASxgI,EAAQi+H,QAEzD,OAAK4td,GAAQ5td,EAAOuC,SAChBvC,EAAOuC,MAAQ,IAAIlB,KAAM2nM,GAAY+nV,WRhEvB,IQgEqD71F,SAGhEl7b,EAGXihM,gBAEA5+N,eACI,MAAMtgG,EAAU/e,KAAK+e,QAAQsnU,QAmB7B,OAlBe,IAAIi9T,GAAa,CAC5Bx7oB,KAAMiX,EAAQjX,KACd4O,MAAOqI,EAAQiwC,KACfzkD,OAAQwU,EAAQiwC,KAChBitG,SAAUl9I,EAAQk9I,SAClB+pL,WAAYjnU,EAAQinU,WACpBhpM,OAAQh9I,KAAK8tqB,eACb1jqB,QAASpK,KAAKmhQ,OAAO/2P,SAAW2U,EAAQ3U,QACxC6mJ,OAAQoqf,GAAet8nB,EAAQkyI,OAAQjxJ,KAAKmhQ,OAAOlwG,QACnDk0K,UAAWpmT,EAAQomT,UACnBvhE,OAAQ7kP,EAAQ6kP,QACjB,CACCtuM,SAAUt1D,KAAKs1D,SACf3xD,MAAO3D,KAAK2D,MACZw9P,OAAQnhQ,KAAKmhQ,OACbC,SAAUphQ,KAAKohQ,WAMvB4sa,YACI,OAAKhuqB,KAAK0opB,SACN1opB,KAAK0opB,OAAS1opB,KAAKq/G,eACnBr/G,KAAK0opB,OAAOxI,OAAOlgpB,KAAKiuqB,YAGrBjuqB,KAAK0opB,OAAOzshB,IAGvBikhB,OAAOpD,GACH,MAAQ/9nB,UAAS8tpB,aAAc7sqB,KACzBgM,EAAW+S,EAAQ/S,SAEzBhM,KAAK28G,SAEL38G,KAAKi8H,IAAM6ghB,EACX,MAAMoxB,EAAWpxB,EAAUtthB,QAuB3B,GArBA42d,EACQymF,EACAqB,EAASr5lB,IAAMq5lB,EAAS3jqB,SAExB2jqB,EAASrxB,IAAMqxB,EAAS3jqB,SAGxBsiqB,EACAqB,EAAS/4lB,IAAM+4lB,EAASx3pB,QAExBw3pB,EAASz4lB,IAAMy4lB,EAASx3pB,QAIhC1W,KAAKiuqB,UAAYC,EACbluqB,KAAK0opB,QACL1opB,KAAK0opB,OAAOxI,OAAOguB,GAGvBluqB,KAAKmuqB,YAAYD,GAEbluqB,KAAKqqY,UACL,QAAS17X,GAAI,EAAGA,GAAI3O,KAAKqqY,UAAUtkY,OAAQ4I,KACvC3O,KAAKqqY,UAAU17X,IAAGuxoB,OAAOguB,GAIjC,GAAIluqB,KAAKk2K,KAAM,CACX,IAAIk4f,GAAgBpuqB,KAAKguqB,YAEzB,IAAMjvpB,EAAQsnU,QAAQpS,UAAWl1T,EAAQsnU,QAAQr3R,KAAO,CACpD,MAAMqgB,GAAS++lB,GAAc/+lB,SAC7B++lB,GAAgB,IAAInxB,GAAI5tkB,GAAO1lE,EAAG0lE,GAAOvb,EAAGub,GAAO1lE,EAAG0lE,GAAOvb,GAGjE9zD,KAAKk2K,KAAKgqe,OAAOkuB,KAIzBD,YAAYlyiB,GACR,MAAQl9G,UAAS3Z,SAAUpF,KAC3B,IAAIiO,EAAS8Q,EAAQyrX,OAAOtgW,SAExB9kC,IACA6I,EAASA,IAAWi3pB,GAAQ7rB,GAAMproB,EAClCA,EAASA,IAAWk3pB,GAAQ3sB,EAASvqoB,EAErC7I,EAAM86oB,OAAOjkhB,GACb72H,EAAM62H,IAAIihhB,QAAQl9oB,KAAKguqB,YAAa//pB,GACpC7I,EAAM86oB,OAAO96oB,EAAM62H,MAI3BylhB,kBACI,MAAMr7T,EAAUrmV,KAAK+e,QAAQwrX,UAAUlkD,QACjC9uK,EAAev3K,KAAK8tqB,eAAevuhB,MACnCxgI,EAAU/e,KAAK+e,QAAQsnU,QACvBr3R,EAAOjwC,EAAQiwC,MAAQjwC,EAAQi+H,OAAOtmI,OAAS,IAAM2vU,EAAQrpM,OAAOtmI,OAAS,GAE7E23pB,EAAS,IAAI/qB,GAAa,CAC5Bx7oB,KAAMiX,EAAQjX,KACd4O,MAAOs4C,EACPzkD,OAAQykD,EACRitG,SAAUl9I,EAAQk9I,SAClB+pL,WAAYK,EAAQ9mM,OAASg4B,EAC7Bv6B,OAAQ,CACJuC,MAAO8mM,EAAQrpM,OAAOuC,MACtB7oI,MAAO2vU,EAAQrpM,OAAOtmI,MACtBtM,QAASixoB,GAAeh1T,EAAQrpM,OAAO5yI,QAAS,IAEpDA,QAASixoB,GAAeh1T,EAAQj8U,QAAS,KAE7CikqB,SAAOnuB,OAAOlgpB,KAAKiuqB,WAEZI,EAAOh0c,aAGlBi0c,kBACI,OAAQtuqB,KAAK0opB,QAAU,IAAI9kZ,OAG/Bk+Y,sBACI,MAAM4G,EAAS1opB,KAAK0opB,OACpB,IAAI9kZ,EAAQs6E,EAEZ,GAAIwqU,EACAxqU,EAAOwqU,EAAOjG,WAAWhF,SACzB75Y,EAAS8kZ,EAAO9kZ,WACb,CACH,MAAM50M,EAAOhvD,KAAK+e,QAAQsnU,QAAQr3R,KAC5Bu/mB,EAAWv/mB,EAAO,EAClBqgB,GAASrvE,KAAKi8H,IAAI5sD,SACxB6uQ,EAAO,IAAI5qQ,KAAU,CAAEjE,GAAO1lE,EAAI4kqB,EAAUl/lB,GAAOvb,EAAIy6mB,GAAY,CAAEv/mB,EAAMA,IAG/E,MAAO,CACHjwC,QAAS/e,KAAK+e,QACdm/T,KAAMA,EACNt6E,OAAQA,GAIhB4qa,gBACI,MAAMR,EAAYhuqB,KAAKguqB,YACjBS,EAAUzuqB,KAAKu6lB,MAAMvgN,KAAKy0R,UAGhC,IAFqBA,GAAWA,EAAQz5b,SAASg5b,GAEhC,CACb,MACMjpN,EAAkBsuJ,GACxB,IAAIv/iB,GAAGiqc,GAEP,OAAI/9f,KAAK6sqB,WACL/4mB,GAAIk6mB,EAAUn5lB,GACdkpb,GAAgBy6I,IAEhB1klB,GAAIk6mB,EAAUnxB,GACd9+I,GAAgBs7I,IAGb,CACH5gkB,MAAO,IAAIyB,GAbL8zlB,EAAUv4lB,GR5NT,EQyOa3hB,IACpBqJ,MAAO,CACHpxD,WAAYg5c,EACZ/4c,SAAU+xf,MAM1BvuH,YAAYp0X,GACR,OAAOpb,KAAKu6lB,MAAMizE,iBAAiBxtqB,KAAMob,GAG7CszpB,YAAYzyiB,GAER,OADkBj8H,KAAKguqB,YACNh5b,SAAS/4G,GAG9B0yiB,iBACQ3uqB,KAAKoF,QACLpF,KAAKoF,MAAM2Z,QAAQiioB,QAAS,GAG5BhhpB,KAAKk2K,OACLl2K,KAAKk2K,KAAKn3J,QAAQiioB,QAAS,GAInCgC,YACI,MAAO,CACH1tlB,SAAUt1D,KAAKs1D,SACf8rM,SAAUphQ,KAAKohQ,SACfz9P,MAAO3D,KAAK2D,MACZ8hV,WAAYzlV,KAAKylV,WACjBwgD,WAAYjmY,KAAKimY,WACjB9kI,OAAQnhQ,KAAKmhQ,SAKzByta,GAAUvupB,UAAUgic,SAAW,CAC3Br2c,UAAU,EACVq6U,QAAS,CACLpS,SAAS,EACT+R,WAAYuzT,GACZvqlB,KR9QiB,EQ+QjBlnD,KAAM4woB,EACN17f,OAAQ,CACJtmI,MAAO,GAEXtM,QAAS,GAEbogY,OAAQ,CACJv2D,SAAS,EACT/pS,SAAUg7nB,GACV32nB,OAAQ6umB,GAAW,GACnB53f,QAAS43f,GAAW,GACpBj4U,UAAW,CACPr9T,KAAM88pB,EACNtzpB,MAAOqzpB,IAGfl6R,MAAO,CACHrlY,MAAO,IAEXmlY,UAAW,CACPlkD,QAAS,CACLrpM,OAAQ,CACJuC,MAAO,OACP7oI,MAAO,IAGfu6I,OpH1SwB,KoH4S5Bo5O,UAAW,CACP3yT,KAAM,CACFhhE,MAAO,KAKnB+joB,GAAWm0B,GAAUvupB,UAAWwupB,IAChCp0B,GAAWm0B,GAAUvupB,UAAWyupB,IAEhC,SAAeF,GChUf,iBAA0BzsB,GACtBripB,YAAYgppB,EAAY3nZ,EAAQ8oa,GAC5BzqpB,QAEAxf,KAAK8opB,WAAaA,EAClB9opB,KAAKmhQ,OAASA,EACdnhQ,KAAKiqqB,SAAWA,EAGpBnqlB,SACI,OAAO9/E,KAAK+uqB,iBAAiB/uqB,KAAK8opB,YAGtCimB,iBAAiBjvlB,GACb,MAAMvtE,EAAS,GACf,QAAS5D,EAAI,EAAG5I,EAAS+5E,EAAO/5E,OAAQ4I,EAAI5I,EAAQ4I,IAC5CmxE,EAAOnxE,KAA4B,IAAtBmxE,EAAOnxE,GAAGslU,SACvB1hU,EAAO9M,KAAKq6E,EAAOnxE,GAAGs/pB,UAAUxwB,SAASpukB,UAIjD,OAAO98D,EAGX0rU,eACI,MAAM0jU,EAAe3hpB,KAAKmhQ,OAAOyC,OAC7B+9Y,GACA3hpB,KAAK4jQ,OAAS+9Y,EAAa,CACvB7hkB,OAAQ9/E,KAAK+uqB,iBAAiB/uqB,KAAK8opB,YACnC3nZ,OAAQnhQ,KAAKmhQ,OACb23F,OAAQ94V,KAAKogpB,YACbniU,aAAc,KACVj+U,KAAKgvqB,gBAEEhvqB,KAAK4jQ,UAGhB5jQ,KAAK4jQ,SAAWgnW,GAAQ5qmB,KAAK4jQ,OAAO7kP,QAAQkyI,UAC5CjxJ,KAAK4jQ,OAAO7kP,QAAQkyI,OAASjxJ,KAAKmhQ,OAAOlwG,SAG7CjxJ,KAAKgvqB,gBAIbA,gBACI,MAAQjwpB,UAASoiP,UAAWnhQ,KAC5B,IAAMu/I,QAAO4shB,UAAW9pN,GAAalhN,EAEjC44Y,GAAWx6f,IAAU8iU,IACrB9iU,EAAQ8iU,EAAS9iU,OAGrB,MAAM7nE,EAAO2kE,gBAAqBr8I,KAAK8/E,SAAU,CAC7C+hE,OAAQ,CACJtC,MAAOA,EACP7oI,MAAOyqP,EAAOzqP,MACdtM,QAAS+2P,EAAO/2P,QAChB43P,SAAUb,EAAOa,UAErB/wG,OAAQkwG,EAAOlwG,SAGflyI,EAAQi+Q,QACRtlN,EAAK1sD,QAGThrB,KAAK4jQ,OAASlsL,EAGlB+wkB,SAASx/oB,EAAG4vE,GACR,OAAO74E,KAAKq8W,OAAO4yT,gBAAgBp2lB,EAAOlvE,EAAGkvE,EAAO/kB,EAAG9zD,KAAKiqqB,WAIpEnnB,GAAkBxnkB,GAAa,CAC3B0hN,QAAQ,IAGZ,SAAe1hN,GC1Cf,YAAyB4zlB,GAAWC,EAAUC,EAASjpS,EAAM90U,GACzD,MAAM4qE,EAAMiziB,GAAUjziB,IAChB1pH,GAAS,IAAI+gE,KAEnB/gE,UAAO48pB,GAAYlziB,EAAIkziB,EAAWC,GAClC78pB,GAAO4zX,GAAQlqQ,EAAIkqQ,EAAO90U,GAEnB9+C,GAGX,SAhDsB,CAClB88pB,oBAAqB,SAASvvlB,IAC1B,MAAMilT,EAAe/kY,KAAKq8W,OAAO8oB,SAASskS,mBAAmBzpqB,KAAKmhQ,SAC1Dm6I,YAAWtvY,WAAU+iF,WAAYg2S,EAAahmX,QAEhDowpB,EAAWnjqB,EAAWjE,GAAIjC,GAC1BqgY,GAAOn6X,EAAWlG,GAAIiC,GACtBqnqB,GAAUrglB,EAAU,EAAI,EACxB19B,GAAM+9mB,GAEZ,IAAIE,GAAgBC,GAAgBzvlB,GAAO,GAAIqvlB,EAAUC,GAASjpS,GAAM90U,IACxE,MAAM9+C,GAAS,CAAE+8pB,IAEjB,QAASnloB,GAAM,EAAGA,GAAM21C,GAAO/5E,OAAQokC,KAAO,CAC1C,MAAMsuC,GAAQ82lB,GAAgBzvlB,GAAO31C,IAAMgloB,EAAUC,GAASjpS,GAAM90U,IAEpE,GAAIi+mB,GAAcH,KAAc12lB,GAAM02lB,GAAW,CAC7C,MAAMK,GAAY,IAAIl8lB,KACtBk8lB,GAAUL,GAAYG,GAAcH,GACpCK,GAAUrpS,IAAQ1tT,GAAM0tT,IAExB5zX,GAAO9M,KAAK+pqB,GAAW/2lB,IAG3B62lB,GAAgB72lB,GAGpB,OAAK6iU,EAEMg0R,KAAkBh4iB,GAAK/kH,KAC9BA,GAAO9M,KAAK6pqB,IAFZ/8pB,GAAO9M,KAAK8pqB,GAAgBj4iB,GAAKx3C,IAASqvlB,EAAUC,GAASjpS,GAAMp3S,EAAU,EAAI,IAK9Ex8E,KClCf,iBAA8B+oE,GAC1BwE,SACI,OAAO9/E,KAAKqvqB,oBAAoBrvqB,KAAK8opB,aAI7CrO,GAAWg1B,GAAgBpvpB,UAAWqvpB,IAEtC,SAAeD,GCwBfE,GA5BA,iBAA4Br0lB,GACxB0zlB,gBACI,MAAM7ta,EAASnhQ,KAAKmhQ,OACdkhN,EAAWlhN,EAAOgra,UACxB,IAAI5shB,EAAQ4hH,EAAO5hH,MAEfw6f,GAAWx6f,IAAU8iU,IACrB9iU,EAAQ8iU,EAAS9iU,OAIrB,MAAMpjB,EAAWyziB,IADUC,GAAe7vqB,KAAK+e,QAAQi+Q,QACvBj7Q,QAAQ/hB,KAAK8/E,UACvCmZ,GAAQ,IAAIojD,KAAU,CACxBwF,OAAQ,CACJtC,MAAOA,EACP7oI,MAAOyqP,EAAOzqP,MACdtM,QAAS+2P,EAAO/2P,QAChB43P,SAAUb,EAAOa,UAErB/wG,OAAQkwG,EAAOlwG,SAGnBh4D,GAAMkjC,SAAS12H,KAAKkuB,MAAMslE,GAAMkjC,SAAUA,GAE1Cn8H,KAAK4jQ,OAAS3qK,KCuDtB62kB,GAjFuB,CACnBC,eAAgB,WACZ,MAAQhxpB,WAAS6qpB,gBAAiB5pqB,KAC5BmhQ,EAASpiP,GAAQoiP,OACjBqoa,EAAcI,EAAa7jqB,OACjC,IAAIiqqB,EAEJhwqB,KAAKiwqB,UAAY,GAEjB,QAAShG,EAAW,EAAGA,EAAWT,EAAaS,IAAY,CACvD,MAAMwC,GAAgBtra,EAAO8oa,GACvBiG,GAAelwqB,KAAKmwqB,WAAWvG,EAAaK,IAC5CmG,GAAaF,GAAanqqB,OAChC,IAAI+ipB,GAAa,GAEjB,QAAS4Z,GAAU,EAAGA,GAAU0N,GAAY1N,KAAW,CACnD,MAAMjqlB,GAAQy3lB,GAAaxN,IACvBjqlB,GACAqwkB,GAAWrjpB,KAAKgzE,IACTz4E,KAAKqwqB,oBAAoB5D,MAAmBxH,KAC/Cnc,GAAW/ipB,OAAS,IACpBiqqB,EAAchwqB,KAAKswqB,cACfxnB,GAAY2jB,GAAexC,EAAU+F,GAEzChwqB,KAAKuwqB,YAAYP,IAErBlnB,GAAa,IAIjBA,GAAW/ipB,OAAS,IACpBiqqB,EAAchwqB,KAAKswqB,cACfxnB,GAAY2jB,GAAexC,EAAU+F,GAEzChwqB,KAAKuwqB,YAAYP,IAIzBhwqB,KAAKw+D,SAASm3L,QAAQhiO,MAAM3zB,KAAKw+D,SAAUx+D,KAAKiwqB,YAGpDM,YAAa,SAASl0iB,IAClBr8H,KAAKiwqB,UAAUxqqB,KAAK42H,IACpBA,GAAQggP,OAASr8W,MAGrBmwqB,WAAY,SAASrwlB,IACjB,OAAOA,IAGXuwlB,oBAAqB,SAASlva,IAC1B,MAAMynI,EAAgBznI,GAAOynI,cAG7B,OAFoBA,GAAiB5oY,KAAK+e,QAAQ2rpB,UAE9B1F,GAAOp8R,GAAiBq8R,IAGhDgK,gBAAiB,SAAStlqB,GAAGmqD,EAAGm2mB,GAC5B,MAAMvhqB,EAAS,IAAIwxE,GAAMvwE,GAAGmqD,GACtB08mB,EAAYxwqB,KAAK4pqB,aAAaK,GACpC,IACIwG,GADAC,EAAuB13B,EAG3B,QAASrqoB,GAAI,EAAGA,GAAI6hqB,EAAUzqqB,OAAQ4I,KAAK,CACvC,MAAM8pE,GAAQ+3lB,EAAU7hqB,IAExB,GAAI8pE,IAASmyhB,GAAQnyhB,GAAM90E,QAA0B,OAAhB80E,GAAM90E,QAAoC,IAAlB80E,GAAMw7P,QAAmB,CAElF,MAAM08V,GAAgBC,GADC30iB,IACQ5sD,SAASutkB,WAAWl0oB,GAE/CioqB,GAAgBD,IAChBD,GAAeh4lB,GACfi4lB,EAAuBC,KAKnC,OAAOF,KC7Ef,iBAA4Bp0hB,GACxBk9L,QACIv5U,KAAK6wqB,QAAQ7wqB,KAAK+e,QAAQk9G,IAAI9mD,IAGlC3oB,KAAKq8B,GACD,MAAMozC,EAAMj8H,KAAK+e,QAAQk9G,IACzBj8H,KAAK6wqB,QAAQC,GAAiB70iB,EAAI9mD,GAAI8mD,EAAIxmD,GAAIoT,IAGlDgolB,QAAQlnqB,GACJ,MAAM+K,EAAU1U,KAAK0U,QACfynH,EAAWznH,EAAQynH,SACnB8zZ,EAAW9zZ,EAAS,GAAGluH,SACvBswf,EAAcpiY,EAAS,GAAGluH,SAEhCyG,EAAQq8pB,UACR9gJ,EAAS+gJ,KAAKrnqB,GACd+K,EAAQste,SACRuc,EAAYyyK,KAAKrnqB,IAIzBm5oB,GAAkBmuB,GAAe,CAC7B/kqB,SAAUy4pB,IAGdtohB,oBAAuC,OAAQ40hB,IAE/C,SAAeA,GCjCA,YAAsBpomB,IACjC,QAAS1+B,EAAM,EAAGA,EAAM0+B,GAAS9iE,OAAQokC,IACrC,GAAIygkB,GAAQ/hiB,GAAS1+B,GAAK8mH,QACtB,OAAO,EC6BnB,SA5B2B,CACvB2vf,gBAAiB,WACb,MAAM9uV,GAAO9xT,KAAK4kX,UAClB,GAAI9yD,KAA6C,KAApCA,GAAK/yS,SAAW,IAAIi9T,YAAuB,CACpD,MAAM//M,EAAM61L,GAAK9iQ,OACXkinB,EAAW70hB,cAAmBpgB,EAAIwhhB,UACxCz9oB,KAAK4jQ,OAAO65I,KAAKyzR,GACjBlxqB,KAAKmlU,UAAY,IAAI8rW,GAAcC,EAAU,CACzCj1iB,IAAKA,IAELk1iB,GAAanxqB,KAAK+e,QAAQoiP,SAC1BnhQ,KAAKoxqB,sBAAsBF,KAKvCE,sBAAuB,SAASF,IAC5B,MAAMpxlB,EAAS9/E,KAAKqxqB,kBAEpB,QAASlnoB,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IAAO,CAC1C,MAAMsuC,EAAQqH,EAAO31C,GACjBsuC,GAASA,EAAMmrL,QAAUgnW,GAAQnyhB,EAAMmrL,OAAO7kP,QAAQkyI,SACtDx4E,EAAMmrL,OAAO65I,KAAKyzR,OChBlC,iBAAwBzD,GACpB9wjB,SAEIn9F,MAAMm9F,SAEN38G,KAAKmrqB,mBACLnrqB,KAAK+vqB,iBAGT7F,YACI,OAAO0E,GAGX71lB,YAAYjmE,EAAMowG,GACd,MAAQ8rR,aAAY5tI,WAAUD,SAAQ8oa,aAAa/mjB,EAC7C0lR,GAAgB5oY,KAAKqwqB,oBAAoBlva,GAC/C,IAAIx9P,GAAQmP,EAAKwvpB,YAAY3+pB,MAE7B,IAAKinmB,GAAQjnmB,KAAoB,OAAVA,GACnB,IAAIilY,KAAkBo8R,GAGlB,OAAO,KAFPrhqB,GAAQ,EAMhB,IAAIqmqB,GAAehqqB,KAAKgqqB,aAAa7oa,EAAQ8oa,IAC7CD,GAAehqqB,KAAKksqB,iBAChBlC,GAAcrmqB,GAAOy9P,EAAU4tI,EAAY7tI,EAAQ8oa,IAGvD,IAAI1qhB,GAAQzsI,EAAKowG,OAAOq8B,OAAS4hH,EAAO5hH,MACpCw6f,GAAW54Y,EAAO5hH,SAClBA,GAAQyqhB,GAAazqhB,OAGzB,MAAM9mE,GAAQ,IAAIm2lB,GAAUjrqB,GAAOqmqB,IACnCvxlB,UAAM8mE,MAAQA,GAEdv/I,KAAKkxB,OAAOunD,IAELA,GAGXgylB,UAAUhylB,GACN,IAAI2xlB,EAAYpqqB,KAAKoqqB,UAAU3xlB,GAE/B,GAAIz4E,KAAK+e,QAAQ2rpB,UAAW,CACxB,MACMf,EAAiB3pqB,KAAK2pqB,eADTlxlB,EAAMu2T,YAGzB,QAASrgY,EAAI,EAAGA,EAAIg7pB,EAAe5jqB,OAAQ4I,IAAK,CAC5C,MAAM0wD,GAAQsqmB,EAAeh7pB,GAE7B,GAAI8pE,IAAUpZ,GACV,MAGJ+qmB,GAAapqqB,KAAKoqqB,UAAU/qmB,IAExBr/D,KAAK+e,QAAQsrpB,eACbD,EAAYl9pB,KAAKulC,IAAI23nB,EAAW,KAM5C,MAAO,CAAEA,EAAWA,GAGxBkG,cAAcxnB,EAAY2jB,EAAexC,GACrC,MAAM9/pB,EAAQsiqB,EAActiqB,MAC5B,IAAI+/pB,EAEJ,OACIA,EADA//pB,IAAUk7pB,GACEoK,GACLtlqB,IAAUi7pB,GACLkM,GAEAh2lB,GAGT,IAAI4ulB,EAAUphB,EAAY2jB,EAAexC,GAGpDoH,kBACI,MAAMvxlB,EAAS9/E,KAAK8/E,OACdvtE,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IACnC53B,EAAO9M,MAAMq6E,EAAO31C,IAAQ,IAAIu+mB,QAEpC,OAAOn2oB,EAAOohC,OAAO3zC,KAAKiwqB,WAG9B/tB,+BACI,OAAO,GAIfzH,GAAW82B,GAAUlxpB,UAAWmxpB,GAAgBC,IAEhD,SAAeF,GCgBf/pX,GA5HA,iBAA0BlsO,GACtBx7E,YAAYgppB,EAAY2jB,EAAexC,EAAUyH,EAAaC,GAC1DnypB,MAAMspoB,EAAY2jB,EAAexC,GAEjCjqqB,KAAK0xqB,YAAcA,EACnB1xqB,KAAK2xqB,YAAcA,EAGvB1zV,eACI,MAAM98E,EAASnhQ,KAAKmhQ,OACdkhN,EAAWlhN,EAAOgra,UAClBpf,EAAc5rZ,EAAOzpL,MAAQ,GACnC,IAAI6nE,EAAQ4hH,EAAO5hH,MAEfw6f,GAAWx6f,IAAU8iU,IACrB9iU,EAAQ8iU,EAAS9iU,OAGrBv/I,KAAK4jQ,OAAS,IAAIvnH,KAAW,CACzB4U,OAAQkwG,EAAOlwG,SAGnBjxJ,KAAK4xqB,WAAW,CACZljqB,KAAM,CACF6wI,MAAOA,EACPn1I,QAAS+2P,EAAO/2P,SAEpBy3I,OAAQ,OAGRkrgB,EAAYr2oB,MAAQ,IAA6B,IAAxBq2oB,EAAY94U,SACrCj0U,KAAK6xqB,aAAa,CACdhwhB,OAAQ44f,GAAW,CACfl7f,MAAOA,EACPn1I,QAAS+2P,EAAO/2P,QAChB2mJ,QAAS,QACVg8f,KAKf+kB,iBACI,IAAI31iB,EAAWn8H,KAAK+xqB,gBAEpB,OAAK51iB,IACDA,EAAWn8H,KAAK+xqB,gBAAkB/xqB,KAAKgyqB,wBAGpC71iB,EAGX61iB,uBACI,OAAOhyqB,KAAKiyqB,mBAAmBjyqB,KAAK8/E,UAGxCoylB,gBACI,OAAIlyqB,KAAK0xqB,YACE1xqB,KAAK0xqB,YAAYS,oBAAoBnyqB,KAAK2xqB,aAG9C3xqB,KAAKmyqB,oBAAoBnyqB,KAAK2xqB,aAGzCQ,oBAAoBR,GAChB,OAAO3xqB,KAAKiyqB,mBAAmBjyqB,KAAK+uqB,iBAAiB4C,IAAc5ilB,UAGvEkjlB,mBAAmBnylB,GACf,OAAOA,EAAOn6E,IAAK8yE,GAAU,IAAInF,KAAamF,IAGlDo5lB,aAAa1nqB,GACT,MAAM03I,EAAS,IAAIxF,KAAUlyI,GAC7B03I,EAAO1lB,SAAS12H,KAAKkuB,MAAMkuH,EAAO1lB,SAAUn8H,KAAK8xqB,kBAEjD9xqB,KAAK4jQ,OAAO1yO,OAAO2wH,GAGvBuwhB,kBACI,OAAOpyqB,KAAK0xqB,aAAgB1xqB,KAAK2xqB,aAAe3xqB,KAAK2xqB,YAAY5rqB,OAGrE6rqB,WAAWznqB,GACP,MAAM2nqB,EAAiB9xqB,KAAK8xqB,iBACtBO,EAAeP,EAAeljqB,MAAM,GACpC0jqB,EAAmBtyqB,KAAKoyqB,kBAE9B,GAAIE,EAAkB,CAClB,MAAMJ,GAAgBlyqB,KAAKkyqB,gBAE3BhhpB,GAAOmhpB,EAAcH,IAGzB,MAAMxjqB,EAAO,IAAI2tI,KAAUlyI,GAC3BuE,EAAKytH,SAAS12H,KAAKkuB,MAAMjlB,EAAKytH,SAAUk2iB,IAEnCC,GAAoBR,EAAe/rqB,OAAS,GAC7C/F,KAAKuyqB,WAAW7jqB,GAGpB1O,KAAK4jQ,OAAO1yO,OAAOxiB,GAGvB6jqB,WAAWC,GACP,MAAMjpV,EAAQvpV,KAAKq8W,OACb8tT,EAAa5gV,EAAMxqU,QAAQorpB,WAC3B9kS,EAAY97C,EAAM4/U,gBAAgBnpqB,KAAKmhQ,QACvCsxa,EAAgBlpV,EAAMuhV,0BAA0BzlS,GAChDqtS,GAAUrtS,EAAUmnR,QAAQimB,EAAeA,GAAe,GAC1Dt2iB,GAAWn8H,KAAK8xqB,iBAChB94R,GAAa78Q,GAAS,GAAGluH,SACzBw5O,GAAYnwH,GAAK6E,IAAUluH,SACjC,IAAIq8B,GAAM6/nB,EAAauI,GAAQv9lB,GAAKu9lB,GAAQ79lB,GAExCs1lB,EACAqI,EAAS9wb,OAAOp3M,GAAKm9M,GAAU3zL,GACtB4tL,OAAOp3M,GAAK0uW,GAAWllV,GAEhC0+mB,EAAS9wb,OAAO+F,GAAU99O,EAAG2gC,IACpBo3M,OAAOs3J,GAAWrvY,EAAG2gC,MCvH1C,iBAA8BqooB,GAE1BX,uBACI,OAAOhyqB,KAAKiyqB,mBAAmBjyqB,KAAKqvqB,oBAAoBrvqB,KAAK8opB,aAGjEqpB,oBAAoBR,GAChB,OAAO3xqB,KAAKiyqB,mBAAmBjyqB,KAAKqvqB,oBAAoBsC,IAAc5ilB,WAI9E0rjB,GAAWm4B,GAAgBvypB,UAAWqvpB,IAEtC,SAAekD,GCYfC,GAzBA,iBAAgCF,GAE5BX,uBACI,MAAMpC,EAAiB,IAAIC,GAAe7vqB,KAAK+e,QAAQi+Q,QACjD8rX,EAAa9opB,KAAK8/E,SAExB,OAAO8vlB,EAAe7tpB,QAAQ+moB,GAGlCqpB,sBACI,MAAML,EAAiB9xqB,KAAK8xqB,iBACtBI,EAAgB,GACtB,QAAS/noB,EAAM2noB,EAAe/rqB,OAAS,EAAGokC,GAAO,EAAGA,IAAO,CACvD,MAAMkyF,EAAUy1iB,EAAe3noB,GAC/B+noB,EAAczsqB,KAAK,IAAI6tE,KACnB+oD,EAAQpuH,SACRouH,EAAQ4jiB,aACR5jiB,EAAQy2iB,cAIhB,OAAOZ,IC2Gfz2kB,GA5HA,iBAAwB81kB,GACpBjB,cAAcxnB,EAAY2jB,EAAexC,EAAUyH,GAC/C,MACMvnqB,IAASsiqB,EAAc/0lB,MAAQ,IAAIvtE,MACzC,IAAI4oqB,GAEApB,GAWAzH,GACJ,OAhBkBlqqB,KAAK+e,QAAQ2rpB,WAKdT,EAAW,GAAKyH,IAEP,QAAlB9oS,KADuBynS,oBAAoB5D,IAE3CkF,GAAcD,EAAY5oB,WAC1BiqB,GAAkBrB,GAElBC,GAAc3xqB,KAAKgzqB,gBAAgBlqB,EAAYmhB,EAAU9/pB,KAM7D+/pB,GADA//pB,KAAUk7pB,GACEuN,GACTlzB,KAAc0lB,GACL6N,GAEAN,GAGT,IAAIzI,GAAUphB,EAAY2jB,EAAexC,EAAU8I,GAAiBpB,IAG/EzxB,OAAOpD,GACHt9nB,MAAM0goB,OAAOpD,GAEb,MAAM60B,EAAc3xqB,KAAKkzqB,aACzB,GAAIvB,EACA,QAASxnoB,EAAM,EAAGA,EAAMwnoB,EAAY5rqB,OAAQokC,IAAO,CAC/C,MAAMgpoB,EAAaxB,EAAYxnoB,GACzByioB,EAAY5sqB,KAAK+kY,aAAaynR,QAAQ2mB,EAAWnkS,YACvDmkS,EAAWjzB,OAAO0sB,IAK9BoG,gBAAgBlqB,EAAYmhB,EAAU9/pB,GAClC,MAAMy/pB,EAAe5pqB,KAAK4pqB,aAC1B,IAAIh6H,EAAWk5G,EAAW,GAAG95Q,WACzBjpY,GAAS+ipB,EAAW/ipB,OACpB6piB,EAAW,IACXA,EAAW,EACX7piB,MAGJ,MAAM8piB,GAASD,EAAW7piB,GACpBmqpB,GAAclwpB,KAAK6pqB,cAAc,GAAGuJ,oBAAsB,EAAI,EAC9DzB,GAAc,GAEpB3xqB,KAAKkzqB,aAAelzqB,KAAKkzqB,cAAgB,GACzC,QAASlkS,GAAa4gK,EAAU5gK,GAAa6gK,GAAQ7gK,KAAc,CAC/D,MAAM0zR,GAAU1zR,GAAakhR,GAC7B,IACIz3kB,GADA46lB,GAAkBpJ,EAGtB,GACIoJ,KACA56lB,GAAQmxlB,EAAayJ,IAAiB3Q,UACjC2Q,GAAkB,IAAM56lB,IAEjC,GAAIA,GACItuE,IAAUk7pB,IAAQr2R,GAAa4gK,IAAag6H,EAAayJ,IAAiB3Q,GAAU,IACpFiP,GAAYlsqB,KAAKzF,KAAKszqB,sBAAsBtkS,GAAY0zR,GAASA,GAAU,EAAG2Q,KAGlF1B,GAAYlsqB,KAAKgzE,IAEbtuE,IAAUk7pB,IAAQr2R,GAAa,EAAI6gK,KAAW+5H,EAAayJ,IAAiB3Q,GAAU,IACtFiP,GAAYlsqB,KAAKzF,KAAKszqB,sBAAsBtkS,GAAY0zR,GAASA,GAAU,EAAG2Q,SAE/E,CACH,MAAME,GAAgBvzqB,KAAKwzqB,qBAAqBxkS,IAChDhvY,KAAKkzqB,aAAaztqB,KAAK8tqB,IACvB5B,GAAYlsqB,KAAK8tqB,KAIzB,OAAO5B,GAGX2B,sBAAsBtkS,EAAY0zR,EAAS+Q,EAAWC,GAClD,MAAM9J,EAAe5pqB,KAAK4pqB,aAC1B,IACInxlB,GADA70D,GAAQ8vpB,EAGZ,KAAO9vpB,GAAQ,IAAM60D,IACjB70D,KACA60D,GAAQmxlB,EAAahmpB,IAAO6vpB,GAGhC,OAAKh7lB,GAIDA,GAAQmxlB,EAAahmpB,IAAO8+oB,IAH5BjqlB,GAAQz4E,KAAKwzqB,qBAAqBxkS,GAClChvY,KAAKkzqB,aAAaztqB,KAAKgzE,KAKpBA,GAGX+6lB,qBAAqBxkS,GACjB,MAAMjwX,EAAU/e,KAAKgqqB,aAAa,GAAI,GAChCvxlB,EAAQ,IAAIm2lB,GAAU,EAAG7vpB,GAC/B05D,SAAMu2T,WAAaA,EACnBv2T,EAAM0oL,OAAS,GAER1oL,EAGX43lB,oBAAoBlva,GAChB,OAAOA,EAAOynI,eAAiBo8R,GAGnC9iB,+BACI,OAAO,ICjGfgf,GA7BA,iBAAoC3kB,KAChCz8oB,cACI0f,QAEAxf,KAAKomY,WAAa,GAGtB1/Q,OAAOitjB,GACH,MAAMvtS,EAAapmY,KAAKomY,WAExB,QAASwL,KAAY+hS,EAAiB,CAClC,MAAMC,EAAaD,EAAgB/hS,GACnC,IAAIhqU,EAAQw+T,EAAWwL,GACvBxL,EAAWwL,GAAYhqU,EAAQA,GAAS,CAAEn1B,IAAKummB,EAAWxqoB,IAAKyqoB,GAE/DrxkB,EAAMn1B,IAAMvlC,KAAKulC,IAAIm1B,EAAMn1B,IAAKmhoB,EAAWnhoB,KAC3Cm1B,EAAMp5D,IAAMtB,KAAKsB,IAAIo5D,EAAMp5D,IAAKolqB,EAAWplqB,MAInD81J,MAAMstO,GACF5xY,KAAKomY,WAAWwL,QAAYzsY,EAGhC0/F,MAAM+sS,GACF,OAAO5xY,KAAKomY,WAAWwL,KCtB/B,iBAAuBuwQ,GACnBripB,YAAY8e,EAASG,EAASikoB,GAC1BxjoB,MAAMT,GAEN/e,KAAK6zqB,QAAU,IAAIpsB,GAAQ7ooB,EAAS5e,KAAK+e,QAASikoB,GAClDhjpB,KAAKkxB,OAAOlxB,KAAK6zqB,SAGrB51V,eACIj+U,KAAK6zqB,QAAQ90pB,QAAQiioB,OAAShhpB,KAAK+e,QAAQiioB,OAG/Cd,OAAOpD,GACH,MAAM/9nB,EAAU/e,KAAK+e,SACb/S,WAAU6gqB,aAAc9tpB,EAC1BjU,EAAO9K,KAAKw+D,SAAS,GACrBqolB,GAAc/7oB,EAAKiU,QACnBk9G,GAAMnxH,EAAKmxH,IACXupB,GAAU16I,EAAKiU,QAAQymI,QAC7B,IAAI4ogB,GAAWtR,EAEf+J,GAAY1plB,MAAQnxD,EAAWysoB,EAASplC,GACxCwzC,GAAYrE,OAASx2oB,EAAWqtoB,GAAMZ,EAEtChhb,EAAYvtL,WAAam+nB,GACrBpa,GACIpH,GAAYrE,OAASnJ,IAEhBwzB,GAAa5wiB,GAAI1xH,SAAWuyoB,EAAUvyoB,WACvCs8oB,GAAYrE,OAAShK,IAGzBqO,GAAY1plB,MAAQ0vmB,EAAYv5D,GAAQD,GAErCt0lB,EAAQmrB,WAAauumB,GAC5BoO,GAAYrE,OAAS/J,EACrBoO,GAAY1plB,MAAQs7kB,GvBiDZ,euBhDLhhb,EAAYvtL,SACf+jnB,EACIpH,GAAYrE,OAASqqB,EAAYr0B,EAASa,GAE1CwN,GAAY1plB,MAAQ0vmB,EAAYx5D,GAAOC,GAEpCv0lB,EAAQmrB,WAAao+nB,KACxBt8pB,EAEIoipB,GADJhoE,EACe,IAAI62D,GACXH,EAAU3nkB,GAAI2nkB,EAAUjokB,GAAKonD,GAAI1xH,SACjCuyoB,EAAUrnkB,GAAIqnkB,EAAUjokB,IAGjB,IAAIookB,GACXH,EAAU3nkB,GAAI2nkB,EAAUD,GACxBC,EAAUrnkB,GAAIqnkB,EAAUD,GAAK5ghB,GAAI1xH,WAIzCs8oB,GAAY1plB,MAAQs7kB,EAEhB2V,GADAye,EACW,IAAI5vB,GACXH,EAAUrnkB,GAAIqnkB,EAAUjokB,GACxBiokB,EAAUrnkB,GAAKwmD,GAAIvlH,QAASomoB,EAAUD,IAG/B,IAAII,GACXH,EAAU3nkB,GAAK8mD,GAAIvlH,QAASomoB,EAAUjokB,GACtCiokB,EAAU3nkB,GAAI2nkB,EAAUD,MAMnC99nB,EAAQk9I,WACLjwJ,EACAw5I,GAAQp2E,KAAOo2E,GAAQl2E,OAClB8+kB,GAAS13oB,QAAU5L,EAAK43oB,WAAWhsoB,SAAW,EAEnD8uI,GAAQr3B,IAAMq3B,GAAQkkL,QACjB0kV,GAAS7jpB,SAAWO,EAAK43oB,WAAWn4oB,UAAY,GAI7DO,EAAKo1oB,OAAOkO,IAGhB0lB,eAAerF,GAEX,MAAM5jnB,EAAQ7+C,KADQ+S,QAAQ/S,SACLlG,GAAIiC,GACvBilB,EAAQ69B,EAAQ,IAChBvgB,EAAMugB,EAAQ,IAEdkpnB,GAAY/zqB,KAAKq8W,OAAOpgP,IAE9B,GAAI83iB,GAAU/mpB,GAASyhpB,EAAQzhpB,IAAUyhpB,EAAQnkoB,GAAOypoB,GAAUzpoB,GAAM,CACpE,MAAMwymB,GAJG98oB,KAAKw+D,SAAS,GAIAiklB,WAAWjzhB,QAClCsthB,GAAU9vnB,GAAS9f,KAAKsB,IAAIulqB,GAAU/mpB,GAAQyhpB,EAAQzhpB,IACtD8vnB,GAAUxymB,GAAOp9B,KAAKulC,IAAIshoB,GAAUzpoB,GAAMmkoB,EAAQnkoB,IAElDtqC,KAAKkgpB,OAAOpD,MAKxBgG,GAAkBkxB,GAAU,CACxB9poB,SAAUo+nB,GACV/5nB,OAAQ6umB,GAAW,GACnB53f,QAAS43f,GAAW,GACpB79f,MAAOg5f,EACPvyT,WAAY,GACZhpM,OAAQ,CACJtmI,MAAO,EACP6oI,MAAO,IAEXsthB,WAAW,EACX7gqB,UAAU,EACVm5T,UAAW,CACPr9T,KAAM88pB,EACNtzpB,MAAOqzpB,GAEX1zgB,OAAQ,IAGZ,SAAe+ihB,GChIA,YAA4Bj1pB,IACvC,MAAMoqX,EAAUpqX,GAAQoqX,QAExB,OAAOA,GAAWA,EAAQ4D,UAAiC,SAArB5D,EAAQ4D,SCelD,iBAAkBo1Q,GACdripB,YAAY6D,EAAOob,GACfS,QAEAxf,KAAK+e,QAAUA,EACf/e,KAAKu/I,MAAQxgI,EAAQwgI,OAASg6f,GAC9Bv5oB,KAAK6sqB,UAAYxxB,GAAer7oB,KAAK+e,QAAQ8tpB,WAAW,GACxD7sqB,KAAK2D,MAAQA,EAGjBg5G,SACQ38G,KAAK6tqB,YAIT7tqB,KAAK6tqB,WAAY,EAEjB7tqB,KAAKi/O,cACLj/O,KAAK2tqB,aAED3tqB,KAAK+rqB,UACL/rqB,KAAKkxB,OAAOlxB,KAAK+rqB,WAIzB9sb,cACI,MAAMlgO,EAAU/e,KAAK+e,QACfyrX,EAASzrX,EAAQyrX,OAEvB,GAAIA,EAAOv2D,QAAS,CAChB,MAAM+uU,EAAYhjpB,KAAKgjpB,YACvB,IACIrka,EADA07U,EAAgB9rL,GAAY/D,GAI5B7rJ,EADA07U,EACYA,EAAc2oF,GAEdhjpB,KAAKwvY,YAAYhF,EAAOpvX,QAGxCpb,KAAKoF,MAAQ,IAAI4uqB,GAASr1b,EACtB87Z,GAAW,CACPzuoB,SAAU+S,EAAQ/S,UAEtBw+X,GACDw4Q,GACHhjpB,KAAKkxB,OAAOlxB,KAAKoF,QAIzBoqY,YAAYp0X,GACR,OAAOpb,KAAKu6lB,MAAMizE,iBAAiBxtqB,KAAMob,GAG7C8koB,OAAOpD,GACH98oB,KAAK28G,SAEL,MAAMv3G,EAAQpF,KAAKoF,MAanB,GAXApF,KAAKi8H,IAAM6ghB,EAEP13oB,IACAA,EAAM2Z,QAAQ8tpB,UAAY7sqB,KAAK6sqB,UAC/BznqB,EAAM86oB,OAAOpD,IAGb98oB,KAAKk2K,MACLl2K,KAAKk2K,KAAKgqe,OAAOpD,GAGjB98oB,KAAKqqY,UACL,QAAS17X,EAAI,EAAGA,EAAI3O,KAAKqqY,UAAUtkY,OAAQ4I,IACvC3O,KAAKqqY,UAAU17X,GAAGuxoB,OAAOpD,GAKrC7+T,eACI,MAAQhiN,MAAKl9G,WAAY/e,KACnB2hpB,EAAe5ioB,EAAQ6kP,OAE7B,IAAqB,IAAjB5jQ,KAAKi0U,QAGL,GAFAz0T,MAAMy+T,eAEF0jU,EAAc,CACd,MAAM/9Y,EAAS5jQ,KAAKi0qB,WAAatyB,EAAa,CAC1CvgZ,SAAUphQ,KAAKohQ,SACf9rM,SAAUt1D,KAAKs1D,SACf3xD,MAAO3D,KAAK2D,MACZm1V,OAAQ94V,KAAKogpB,YACbj/Y,OAAQnhQ,KAAKmhQ,OACbskF,WAAYzlV,KAAKylV,WACjBwgD,WAAYjmY,KAAKimY,WACjBgJ,aAAcjvY,KAAKivY,aACnBxgY,MAAOzO,KAAKyO,MACZyvU,KAAMjiN,EAAIwhhB,SACVx/T,aAAc,KACV,MAAMv1S,EAAQ,IAAI2zG,KAClB,YAAK63hB,WAAWxroB,GACTA,GAEX3pB,QAASA,IAGT6kP,GACA5jQ,KAAK4jQ,OAAO1yO,OAAO0yO,QAEhB3nI,EAAIvlH,QAAU,GAAKulH,EAAI1xH,SAAW,GACzCvK,KAAKk0qB,WAAWl0qB,KAAK4jQ,QAKjCswa,WAAWtwa,GACP,MAAM7kP,EAAU/e,KAAK+e,QACfi+H,EAASj+H,EAAQi+H,OACjBm3hB,EAAgBvpE,GAAQ5td,EAAO5yI,SAAW4yI,EAAO5yI,QAAU2U,EAAQ3U,QACnE8zU,EAAOl+U,KAAKi8H,IAAIwhhB,SAEtBv/T,EAAKlvR,KAAKt4C,MAAQxJ,KAAK4zF,MAAMo9O,EAAKlvR,KAAKt4C,OAEvC,MAAMgzK,GAAO1pL,KAAKi0qB,WAAa53hB,cAAmB6hM,EAAM,CACpDxvU,KAAM,CACF6wI,MAAOv/I,KAAKu/I,MACZn1I,QAAS2U,EAAQ3U,SAErBy3I,OAAQ,CACJtC,MAAOv/I,KAAKo0qB,iBACZ19pB,MAAOsmI,EAAOtmI,MACdtM,QAAS+pqB,EACTnya,SAAUhlH,EAAOglH,YAInBtrP,GAAQ1W,KAAKi8H,IAAIvlH,QACjBnM,GAASvK,KAAKi8H,IAAI1xH,SAexB,IAbawU,EAAQ/S,SAAW0K,GAAQnM,IA3IpB,IA8IhB0+oB,GAAiBv/d,KAGbhzK,GAAQ,GAAKnM,GAAS,KACtBm/K,GAAK3qK,QAAQ8iI,OAAOwyhB,SAAW,UAIvCzwa,EAAO1yO,OAAOw4J,IAEV4qf,GAAmBv1pB,GAAU,CAC7B,MAAMoqX,GAAUnpY,KAAK+hpB,sBAAsBr4d,GAAM,CAAE6qf,UAAWv0qB,KAAKu/I,OAASk7f,GAAW,CACnFnwmB,IAAKmtL,EAASzrN,cAAsB7G,EAAX,CAAE,EAAG,IAC/B4Z,EAAQoqX,UAEXvlI,EAAO1yO,OAAOi4W,KAItBu4Q,gBAAgBv3oB,GAGZ,OAAO8+oB,GAFW5sgB,cAAmBr8I,KAAKi8H,IAAIwhhB,SAAUtzoB,IAK5DmkqB,kBACI,OAAOtuqB,KAAKi0qB,WAGhBnyB,sBACI,MAAO,CACH/ioB,QAAS/e,KAAK+e,QACdm/T,KAAMl+U,KAAKi8H,IAAIwhhB,SACf75Y,OAAQ5jQ,KAAKi0qB,YAIrBG,iBACI,MAAM70hB,EAAQv/I,KAAKu/I,MACbvC,EAASh9I,KAAK+e,QAAQi+H,OACtB+whB,EAAa/whB,EAAOw3hB,azB9LR,GyB+LlB,IAAIh9f,EAAcx6B,EAAOuC,MAEzB,OAAKqrd,GAAQpzb,KACTA,EAAc,IAAIn5B,KAAMkB,GAAOwuhB,WAAWA,GAAY71F,SAGnD1ga,EAGXg3f,gBACI,MAAQzvpB,UAASk9G,MAAK4wiB,aAAc7sqB,KAC9ByuqB,EAAUzuqB,KAAKu6lB,MAAMvgN,KAAKy0R,WAAaxyiB,EAC7C,IAEItyH,GAAGmqD,GAFHixZ,EAAkBsuJ,GAClBt1G,GAAgBs7I,GAGpB,GAAIt6nB,EAAQ/S,SACRrC,GAAIuD,KAAKulC,IAAIwpF,EAAIxmD,GAAIg5lB,EAAQh5lB,IzB/MlB,EyBgNXw4kB,EACIn6lB,GAAI5mD,KAAKsB,IAAIytH,EAAIpnD,GAAI45lB,EAAQ55lB,KAE7B/gB,GAAI5mD,KAAKulC,IAAIwpF,EAAI4ghB,GAAI4xB,EAAQ5xB,IAC7B9+I,GAAgBy6I,OAEjB,CACH,MAAMrjkB,GAAKjoE,KAAKsB,IAAIytH,EAAI9mD,GAAIs5lB,EAAQt5lB,IAC9BM,GAAKvoE,KAAKulC,IAAIwpF,EAAIxmD,GAAIg5lB,EAAQh5lB,IAEhC12D,EAAQ2rpB,WACR3sK,GAAgBy6I,EAChByV,GACIlpM,EAAkBuuJ,GAClB3pmB,GAAI8rE,IAEJ9rE,GAAIwrE,GAERrhB,GAAI5mD,KAAKsB,IAAIytH,EAAIpnD,GAAI45lB,EAAQ55lB,IzBlOtB,IyBoOHg4lB,EACAljqB,GAAI8rE,GzBrOD,GyBuOH9rE,GAAIwrE,GzBvOD,EyBwOH4vY,EAAkBuuJ,IAEtBx/iB,GAAI5mD,KAAKsB,IAAIytH,EAAIpnD,GAAI45lB,EAAQ55lB,KAIrC,MAAO,CACH4D,MAAO,IAAIyB,GAAMvwE,GAAGmqD,IACpBqJ,MAAO,CACHpxD,WAAYg5c,EACZ/4c,SAAU+xf,KAKtB2wK,YAAYzyiB,GACR,OAAOj8H,KAAKi8H,IAAI+4G,SAAS/4G,GAG7B+mhB,YACI,MAAO,CACH1tlB,SAAUt1D,KAAKs1D,SACf8rM,SAAUphQ,KAAKohQ,SACfz9P,MAAO3D,KAAK2D,MACZ8hV,WAAYzlV,KAAKylV,WACjBwgD,WAAYjmY,KAAKimY,WACjBgJ,aAAcjvY,KAAKivY,aACnBxgY,MAAOzO,KAAKyO,MACZ0yP,OAAQnhQ,KAAKmhQ,SAKzBs5Y,GAAWg6B,GAAIp0pB,UAAWwupB,IAC1Bp0B,GAAWg6B,GAAIp0pB,UAAWyupB,IAE1B2F,GAAIp0pB,UAAUgic,SAAW,CACrBrlU,OAAQ,CACJtmI,MAAO,GAEX1K,UAAU,EACVm9X,QAAS,CACL4D,SAAU,SAEdvC,OAAQ,CACJv2D,SAAS,EACT74T,OAAQ,OAEZhR,QAAS,EACTqgY,MAAO,CACHrlY,MAAO,KAIf,SAAeqvqB,GCvSR,YAAiB5rmB,GAAUh5D,GAC9Bg5D,GAASjiE,QAAQiJ,GAGd,YAAwBg5D,GAAUh5D,GACrC,MAAM9J,EAAS8iE,GAAS9iE,OAExB,QAASokC,EAAMpkC,EAAS,EAAGokC,GAAO,EAAGA,IACjCt6B,EAASg5D,GAAS1+B,GAAMA,EAAMpkC,EAAS,GCF/C,iBAA4Bo8oB,GACxBripB,YAAYif,GACRS,MAAMT,GAEN/e,KAAK4G,QAAUmY,EAAQ2lT,IAAMgwW,GAAiB9tqB,GAGlDs5oB,OAAOjkhB,GACH,MAAQjwH,WAAUm8X,MAAKqB,WAAYxpY,KAAK+e,QAClCy/C,EAAWx+D,KAAKw+D,SAChBo5C,GAAQp5C,EAASz4D,OACjBogY,GAAOn6X,EAAWlG,GAAIiC,GACtB4sqB,GAAQ/8jB,GAAQuwR,EAAOqB,GAAW5xR,GAAQ,GAC1Cg9jB,IAAY5oqB,EAAWiwH,EAAI1xH,SAAW0xH,EAAIvlH,SAAWi+pB,GAC3D,IAAIzqoB,GAAW+xF,EAAIkqQ,GAAO,GAAKyuS,IAAYzsS,EAAM,GAEjDnoY,KAAK4G,QAAQ43D,EAAU,CAACC,GAAOt0B,MAC3B,MAAM+joB,IAAYzvmB,GAAMw9D,KAAOA,GAAKzM,QAEpC0+iB,GAAS/nS,GAAO,GAAKj8V,GACrBgkoB,GAAS/nS,GAAO,GAAKj8V,GAAW0qoB,GAEhCn2mB,GAAMyhlB,OAAOguB,IACT/joB,GAAMytE,GAAQ,IACd1tE,IAAa0qoB,GAAWprS,GAG5Bt/V,IAAY0qoB,MAKxB9xB,GAAkB+xB,GAAe,CAC7B7oqB,UAAU,EACVm8X,IAAK,EACLqB,QAAS,IAGb,SAAeqrS,GCvCf,iBAAwB1yB,GACpBjC,OAAOpD,GACH,MAAMg4B,EAAe90qB,KAAK+e,QAAQ/S,SAAWjE,GAAIjC,GAC3C04D,EAAWx+D,KAAKw+D,SAChBgilB,EAAgBhilB,EAASz4D,OAC/B,IAAIk2H,EAAMj8H,KAAKi8H,IAAM,IAAIghhB,GAEzB,QAAStuoB,GAAI,EAAGA,GAAI6xoB,EAAe7xoB,KAAK,CACpC,MAAMwxoB,GAAe3hlB,EAAS7vD,IAE9B,IAA6B,IAAzBwxoB,GAAalsU,QAAmB,CAChC,MAAMi6V,GAAW/tB,GAAalkhB,IAAIzM,QAClC0+iB,GAASvziB,OAAOmihB,EAAWg4B,GAEjB,IAANnmqB,KACAstH,EAAMj8H,KAAKi8H,IAAMiyiB,GAAS1+iB,SAG9B2whB,GAAaD,OAAOguB,IACpBjyiB,EAAI3hE,KAAK4zmB,OAMzBprB,GAAkBiyB,GAAW,CACzB/oqB,UAAU,IAGd,SAAe+oqB,GCpBf,iBAAuBtH,GAEnB9wjB,SACIn9F,MAAMm9F,SACN38G,KAAKmrqB,mBAGTjB,YACI,OAAOuK,GAGXO,cACI,OAAOH,GAGXI,YACI,OAAOF,GAGX/J,YAAYp5R,EAAUq5R,GAGlB,OAFezrpB,MAAMwrpB,YAAYp5R,EAAUq5R,GAK/ClylB,YAAYjmE,EAAMowG,GACd,MAAQ8rR,aAAY5tI,WAAUD,SAAQ8oa,aAAa/mjB,GAC3CnkG,WAASy/C,aAAax+D,KACxB0qqB,GAAY3rpB,GAAQ2rpB,UACpB/mqB,GAAQ3D,KAAKukqB,WAAWzxpB,GAC9B,IAAIk3pB,GAAehqqB,KAAKgqqB,aAAa7oa,EAAQ8oa,IAE7C,MAAMtf,GAAeqf,GAAax/R,OAC9BkgS,IACI/f,GAAazgnB,WAAao+nB,KAC1B3d,GAAazgnB,SAAWm+nB,IAIhC2B,GAAaU,UAAYA,GAEzB,IAAInrhB,GAAQzsI,EAAKowG,OAAOq8B,OAAS4hH,EAAO5hH,MACpC57I,GAAQ,GAAKqmqB,GAAalhS,gBAC1BvpP,GAAQyqhB,GAAalhS,eAGzBkhS,GAAehqqB,KAAKksqB,iBAChBlC,GAAcrmqB,GAAOy9P,EAAU4tI,EAAY7tI,EAAQ8oa,IAGnDlwB,GAAW54Y,EAAO5hH,SAClBA,GAAQyqhB,GAAazqhB,OAGzB,MACM9mE,GAAQ,IADIz4E,KAAKkqqB,YACT,CAAcvmqB,GAAOqmqB,IACnCvxlB,GAAM8mE,MAAQA,GAEd,IAAI21hB,GAAU12mB,GAASwwU,GAYvB,OAXKkmS,KAEDA,GAAU,IADUl1qB,KAAKg1qB,cACf,CAAgB,CACtBhpqB,SAAU+S,GAAQorpB,WAClBhiS,IAAKppX,GAAQopX,IACbqB,QAASzqX,GAAQyqX,QACjB9kE,KAAM3lT,GAAQorpB,aAAenqqB,KAAKsgpB,cAAgB,IAAI57U,MAE1D1kU,KAAKkxB,OAAOgkpB,KAGZxK,GACkB1qqB,KAAKm1qB,aAAah0a,EAAQ+za,IAClChkpB,OAAOunD,IAEjBy8lB,GAAQhkpB,OAAOunD,IAGZA,GAGX08lB,aAAah0a,EAAQ+za,GACjB,MAAM7vpB,EAAQ87O,EAAO97O,MACf+vpB,EAAa/vpB,IAAQA,EAAMqjB,OAASrjB,GACpCgwpB,EAAQH,EAAQ12mB,SACtB,IAAI82mB,GAEJ,UAAWF,IAAetkmB,IACtB,QAASniE,GAAI,EAAGA,GAAI0mqB,EAAMtvqB,OAAQ4I,KAC9B,GAAI0mqB,EAAM1mqB,IAAG4mqB,cAAgBH,EAAY,CACrCE,GAAYD,EAAM1mqB,IAClB,YAIR2mqB,GAAYD,EAAM,GAYtB,OATKC,KAEDA,GAAY,IADMt1qB,KAAKi1qB,YACX,CAAc,CACtBjpqB,UAAWhM,KAAK+e,QAAQorpB,aAE5BmL,GAAUC,YAAcH,EACxBF,EAAQhkpB,OAAOokpB,KAGZA,GAGX5I,aAAa3nS,EAAciK,EAAY3J,GACnC,MAAMtmX,EAAU/e,KAAK+e,QACf2tpB,EAAe3nS,EAAaynR,QAAQx9Q,GACpCy3L,GAAaphM,EAAUohM,aAE7B,GAAI1njB,EAAQ2rpB,UAAW,CACnB,MAAM8K,GAAWnwS,EAAUmnR,QAAQ/lF,GAAYA,IAAY,GACrDgvG,GAAY12pB,EAAQorpB,WAAapiqB,GAAIjC,GAC3C4mqB,EAAa+I,GAAY,GAAK/I,EAAa+I,GAAY,GAAKD,GAASC,GAAY,GAGrF,OAAO/I,EAGXK,iBAAiBR,GACb,MAAM/tmB,EAAWx+D,KAAKw+D,SAChBk3mB,EAAiBl3mB,EAASz4D,OAEhC,QAAS4I,EAAI,EAAGA,EAAI+mqB,EAAgB/mqB,IAChC6vD,EAAS7vD,GAAGuxoB,OAAOqsB,EAAc59pB,IAIzCiyoB,kBACI5gpB,KAAK21qB,uBACLn2pB,MAAMohoB,kBAEFuwB,GAAanxqB,KAAK+e,QAAQoiP,SAC1BnhQ,KAAKoxqB,wBAIbA,wBACI,MAAMtxlB,EAAS9/E,KAAK8/E,OAEpB,QAAS31C,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IAAO,CAC1C,MAAMsuC,EAAQqH,EAAO31C,GACfyroB,EAAcn9lB,EAAMmrL,OACtBgya,GAAehrE,GAAQgrE,EAAY72pB,QAAQkyI,UAC3Cx4E,EAAM15D,QAAQomT,UAAYnlU,KAAK+e,QAAQomT,UACvC1sP,EAAMmokB,oBAKlB+0B,uBACI,MAAM52pB,EAAU/e,KAAK+e,QACfomT,EAAYpmT,EAAQomT,WAAa,GACvC,IAAI9gS,EAEJ,GAAItlB,EAAQ2rpB,UAAW,CACnB,MAAMrlS,EAAYrlY,KAAKmpqB,gBAAgBpqpB,EAAQoiP,OAAO,IACtD98N,EAASghW,EAAUmnR,QAAQnnR,EAAUohM,mBAErCpiiB,EAASrkC,KAAK+kY,aAAaynR,QAAQ,GAGvCrnV,EAAU9gS,OAAS,IAAIivC,KAAWjvC,EAAO8wC,GAAI9wC,EAAOwwC,IACpDswP,EAAUn5T,UAAY+S,EAAQorpB,YAItCrnB,GAAkB+yB,GAAU,CACxB1wW,UAAW,CACPr9T,KAAMy9pB,MAId,SAAesQ,GCnLf,iBAA0B1zB,GACtBripB,YAAY6D,EAAOob,GACfS,MAAMT,GACN/e,KAAK2D,MAAQA,EAGjBu8oB,OAAOjkhB,GACH,MAAQl9G,UAASpb,QAAO42lB,MAAOhxQ,GAAUvpV,KACnCqlY,EAAY97C,EAAM4/U,gBAAgBpqpB,GAClC+2pB,GAASzwS,EAAUmnR,QAAQ7opB,EAAMokB,KAAMpkB,EAAMqnB,OAC7C+qpB,GAAS1wS,EAAUmnR,QAAQ7opB,EAAMurY,IAAKvrY,EAAMwrY,MAElD2mS,GAAO3gmB,GAAK4gmB,GAAO5gmB,GAAK8mD,EAAI9mD,GAC5B2gmB,GAAOrgmB,GAAKsgmB,GAAOtgmB,GAAKwmD,EAAIxmD,GAE5Bz1E,KAAKg2qB,SAAWF,GAEhB,MAAMh3lB,GAAMi3lB,GAAO1mmB,SAAS1lE,EACtBm2E,GAAS,GAEfA,GAAOr6E,KAAK,CAAE,CAAEq5E,GAAKi3lB,GAAOlhmB,IAAM,CAAEiK,GAAKg3lB,GAAOjhmB,MAChDiL,GAAOr6E,KAAK,CAAE,CAAEq5E,GAAKg3lB,GAAOj5B,IAAM,CAAE/9jB,GAAKi3lB,GAAOl5B,MAEhD78oB,KAAK+/E,MAAQD,GAEb9/E,KAAKi8H,IAAM85iB,GAAOvmjB,QAAQl1D,KAAKw7mB,IAE1B91qB,KAAK6tqB,YACN7tqB,KAAK6tqB,WAAY,EACjB7tqB,KAAK2tqB,cAGT3tqB,KAAKi2qB,aAGTA,aACQj2qB,KAAKk2K,MACLl2K,KAAKk2K,KAAKgqe,OAAOlgpB,KAAKi8H,KAI9BgiN,eACIz+T,MAAMy+T,eACNj+U,KAAKk2qB,YAAcl2qB,KAAKm2qB,WAAWn2qB,KAAK+e,SACxC/e,KAAK4jQ,OAAO1yO,OACRlxB,KAAKk2qB,aAGTl2qB,KAAKo2qB,gBAGTD,WAAWp3pB,GACP,MAAM2pB,EAAQ,IAAI2zG,KAElB,YAAKg6hB,WAAW3toB,EAAO3pB,GACvB/e,KAAKs2qB,YAAY5toB,EAAO3pB,GAEjB2pB,EAGX2toB,WAAW54gB,EAAW1+I,GAClB,MAAM4H,EAAO01H,cAAmBr8I,KAAKg2qB,SAASv4B,SAAU,CACpD/uoB,KAAM,CACF6wI,MAAOv/I,KAAKu/I,MACZn1I,QAAS2U,EAAQ3U,SAErBy3I,OAAQ,OAGR9iI,EAAQi+H,OAAOtmI,MAAQ,GACvBiQ,EAAK5H,QAAQsT,IAAI,SAAU,CACvBktH,MAAOv/I,KAAKo0qB,iBACZ19pB,MAAOqI,EAAQi+H,OAAOtmI,MACtBsrP,SAAUjjP,EAAQi+H,OAAOglH,SACzB53P,QAASixoB,GAAet8nB,EAAQi+H,OAAO5yI,QAAS2U,EAAQ3U,WAIhE6+oB,GAAiBtioB,GACjB82I,EAAUvsI,OAAOvK,GAEb2tpB,GAAmBv1pB,IACnB0+I,EAAUvsI,OAAOlxB,KAAK+hpB,sBAAsBp7nB,EAAM,CAAE4tpB,UAAWv0qB,KAAKu/I,OAASk7f,GAAW,CACpFnwmB,IAAKmtL,EAASzrN,cAAsB7G,EAAX,CAAE,EAAG,IAC/B4Z,EAAQoqX,WAInBmtS,YAAY74gB,EAAW1+I,GACnB/e,KAAKu2qB,UAAU94gB,EAAW1+I,EAAS/e,KAAK+/E,MAAOhhE,EAAQ24D,MAG3D6+lB,UAAU94gB,EAAW1+I,EAASghE,EAAOgtkB,GACjC,IAAKhtkB,EACD,OAGJ,MAAMy2lB,EAAY,CACd30hB,OAAQ,CACJtC,MAAOwtgB,EAAYxtgB,OAASv/I,KAAKu/I,MACjCn1I,QAASixoB,GAAe0R,EAAY3ipB,QAAS2U,EAAQ3U,SACrDsM,MAAOq2oB,EAAYr2oB,MACnBsrP,SAAU+qZ,EAAY/qZ,SACtBjxG,QAAS,SAIjB,QAASpiJ,GAAI,EAAGA,GAAIoxE,EAAMh6E,OAAQ4I,KAAK,CACnC,MAAM+oE,GAAO2kE,gBAAqBt8D,EAAMpxE,IAAI6nqB,GAC5CvtB,GAAiBvxkB,IACjB+lF,EAAUvsI,OAAOwmD,KAIzB08lB,iBACI,MAAMp3hB,EAASh9I,KAAK+e,QAAQi+H,OAC5B,IAAIw6B,EAAcx6B,EAAOuC,MAEzB,OAAKqrd,GAAQpzb,KACTA,EAAc,IAAIn5B,KAAMr+I,KAAKu/I,OAAOwuhB,WAAW/whB,EAAOw3hB,aAAat8F,SAGhE1ga,EAGX4+f,gBACI,MAAMjtS,EAAU9sP,cAAmBr8I,KAAKi8H,IAAIwhhB,SAAU,CAClD/uoB,KAAM,CACF6wI,MAAOg6f,GACPnvoB,QAAS,GAEby3I,OAAQ,OAGZ7hJ,KAAK4jQ,OAAO1yO,OAAOi4W,GAGvBu4Q,kBACI,MAAMn3Q,EAAYvqY,KAAK+e,QAAQwrX,UACzBksS,EAAcz2qB,KAAKu/I,MAEzBv/I,KAAKu/I,MAAQgrP,EAAUhrP,OAASv/I,KAAKu/I,MACrC,MAAM4pP,EAAUnpY,KAAKm2qB,WACjB17B,GAAW,GAAIz6oB,KAAK+e,QAAS,CACzB24D,KAAM,CACF6nE,MAAOv/I,KAAKo0qB,mBAEjB7pS,IAEP,YAAKhrP,MAAQk3hB,EAENttS,EAGXmlS,kBACI,OAAOtuqB,KAAKk2qB,YAGhBp0B,sBACI,MAAO,CACH/ioB,QAAS/e,KAAK+e,QACdm/T,KAAMl+U,KAAKi8H,IAAIwhhB,SACf75Y,OAAQ5jQ,KAAKk2qB,aAIrB1H,gBACI,MAAMvyiB,EAAMj8H,KAAKi8H,IACXwyiB,EAAUzuqB,KAAKu6lB,MAAMvgN,KAAKy0R,WAAaxyiB,EAE7C,MAAO,CACHxjD,MAAO,IAAIyB,GAAM+hD,EAAIxmD,G9B9KV,E8B8K+BvoE,KAAKsB,IAAIytH,EAAIpnD,GAAI45lB,EAAQ55lB,I9B9KxD,G8B+KX1X,MAAO,CACHpxD,WAAYsnmB,GACZrnmB,SAAUqtoB,KAKtB7pQ,YAAYp0X,GACR,OAAOpb,KAAKu6lB,MAAMizE,iBAAiBxtqB,KAAMob,GAG7CszpB,YAAYzyiB,GACR,OAAOj8H,KAAKi8H,IAAI+4G,SAAS/4G,IAIjC6mhB,GAAkB4zB,GAAa,CAC3B1qqB,UAAU,EACVgxI,OAAQ,CACJw3hB,YAAa,IAEjB98lB,KAAM,CACFhhE,MAAO,GAEXyyX,QAAS,CACL4D,SAAU,SAEdh2V,QAAS,CACL37B,OAAQ,0MAQZmvX,UAAW,CACPngY,QAAS,EACT4yI,OAAQ,CACJtmI,MAAO,EACPtM,QAAS,GAEbstE,KAAM,CACFhhE,MAAO,EACPtM,QAAS,IAGjBqgY,MAAO,CACHx2D,SAAS,EACT7uU,MAAO,MAIfq1oB,GAAWi8B,GAAYr2pB,UAAWwupB,IAClCp0B,GAAWi8B,GAAYr2pB,UAAWyupB,IAElC,SAAe4H,GC9OA,YAAoBrwqB,IAC/B,OAAO27pB,GAAa37pB,MAAYA,GAAON,OCQ3C,iBAA+B0nqB,GAE3BV,iBAAiBR,GACb,MAAM/tmB,EAAWx+D,KAAKw+D,SAChBk3mB,EAAiBl3mB,EAASz4D,OAEhC,QAAS4I,EAAI,EAAGA,EAAI+mqB,EAAgB/mqB,IAChC6vD,EAAS7vD,GAAGuxoB,OAAOqsB,EAAc59pB,IAIzCylU,SAASthU,EAAMowG,GACX,MAAQ8rR,aAAY5tI,WAAUD,SAAQ8oa,aAAa/mjB,GAC3C1kD,YAAUz/C,YAAY/e,KACxB2D,GAAQmP,EAAKwvpB,YAEb9pP,GAAWm+P,GADE32qB,KAAK42qB,WAAWjzqB,KAE7B2xD,GAAW6rM,EAAOruP,KAAKk8X,GAC7B,IACIv2T,GADAkxlB,GAAiB3pqB,KAAK2pqB,eAAe36R,GAGpC26R,KACD3pqB,KAAK2pqB,eAAe36R,GAAc26R,GAAiB,IAGnDnxP,KACA//V,GAAQz4E,KAAK+4E,YAAYjmE,EAAMowG,IAGnC,IAAIgyjB,GAAU12mB,GAASwwU,GAClBkmS,KACDA,GAAU,IAAIL,GAAc,CACxB7oqB,SAAU+S,GAAQorpB,WAClBhiS,IAAKppX,GAAQopX,IACbqB,QAASzqX,GAAQyqX,QACjB9kE,KAAM3lT,GAAQorpB,aAAenqqB,KAAKsgpB,cAAgB,IAAI57U,MAE1D1kU,KAAKkxB,OAAOgkpB,KAGZz8lB,KACAz4E,KAAKutb,YAAY5pb,GAAOu/G,GAExBgyjB,GAAQhkpB,OAAOunD,IAEfA,GAAMu2T,WAAaA,EACnBv2T,GAAM2oL,SAAWA,EACjB3oL,GAAM0oL,OAASA,EACf1oL,GAAMwxlB,SAAWA,GACjBxxlB,GAAM8hhB,MAAQv6lB,KACdy4E,GAAMnjB,SAAWA,GACjBmjB,GAAMwzlB,SAAWn5pB,EAAKowG,OAAO+ojB,UAGjCjsqB,KAAK8/E,OAAOr6E,KAAKgzE,IACjBkxlB,GAAelkqB,KAAKgzE,IAGxByxlB,YACI,OAAOwM,GAGX39lB,YAAYjmE,EAAMowG,GACd,MAAQ8rR,aAAY5tI,WAAUD,SAAQ8oa,aAAa/mjB,EAC7CgnjB,GAAYlqqB,KAAKkqqB,YACjBvmqB,GAAQmP,EAAKwvpB,YACnB,IAAI0H,GAAevvB,GAAW,GAAIt5Y,GAC9B5hH,GAAQzsI,EAAKowG,OAAOq8B,OAAS4hH,EAAO5hH,MAExCyqhB,GAAehqqB,KAAKksqB,iBAChBlC,GAAcrmqB,GAAOy9P,EAAU4tI,EAAY7tI,EAAQ8oa,IAGnD9oa,EAAOr5P,OAAS69pB,IACZhiqB,GAAMokB,KAAOpkB,GAAMqnB,QACnBu0H,GAAQzsI,EAAKowG,OAAOykR,WAAaxmI,EAAOwmI,WAAaxmI,EAAO5hH,OAIhEw6f,GAAW54Y,EAAO5hH,SAClBA,GAAQyqhB,GAAazqhB,OAGzByqhB,GAAah+pB,UAAYhM,KAAK+e,QAAQorpB,WAEtC,MAAM1xlB,GAAQ,IAAIyxlB,GAAUvmqB,GAAOqmqB,IACnCvxlB,UAAM8mE,MAAQA,GAEP9mE,GAGXm+lB,WAAWjzqB,GACP,MAAO,CAAEA,EAAMurY,IAAKvrY,EAAMokB,KAAMpkB,EAAMqnB,MAAOrnB,EAAMwrY,MAGvDo+C,YAAY5pb,EAAOu/G,GACf,MAAM0uR,EAAW1uR,EAAOi+I,OAAOglI,KACzBzpE,EAAQ18T,KAAK42qB,WAAWjzqB,GAC9B,IAAI0oqB,EAAYrsqB,KAAK0pqB,gBAAgB93R,GAErCy6R,EAAYrsqB,KAAK0pqB,gBAAgB93R,GAC7By6R,GAAa,CAAE55nB,IAAKummB,EAAWxqoB,IAAKyqoB,GAExCozB,EAAYrsqB,KAAK0pqB,gBAAgB93R,GAAY,CACzCn/V,IAAKvlC,KAAKulC,IAAI9e,MAAMzmB,KAAMwvT,EAAM/oR,OAAO,CAAE04nB,EAAU55nB,OACnDjkC,IAAKtB,KAAKsB,IAAImlB,MAAMzmB,KAAMwvT,EAAM/oR,OAAO,CAAE04nB,EAAU79pB,QAI3Dg/pB,iBAAiB/0lB,EAAOr9D,GACpB,MAAMzX,EAAQ80E,EAAM90E,MAEpB,OAAO3D,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EACjCzX,EAAMokB,KAAMpkB,EAAMwrY,KAClBxrY,EAAMurY,IAAKvrY,EAAMqnB,MAAOytD,EAAM2oL,UAItCiwa,kBACI,OAAOrxqB,KAAK8/E,QAIpB26jB,GAAWo8B,GAAiBx2pB,UAAWoxpB,IAEvC,SAAeoF,GC7Hf,iBAAsBH,GAClB52qB,YAAY6D,EAAOob,GACfS,MAAM7b,EAAOob,GAEb/e,KAAK2tqB,aAGTztB,OAAOjkhB,GACH,MAAQl9G,UAASpb,QAAO42lB,MAAOhxQ,GAAUvpV,KACnCqlY,EAAY97C,EAAM4/U,gBAAgBpqpB,GACxC,IAAI+3pB,GAAaC,GAEjB/2qB,KAAK+2qB,QAAUA,GAAU1xS,EAAUmnR,QAAQ7opB,EAAMkuV,GAAIluV,EAAMmuV,IAC3D9xV,KAAKg2qB,SAAWe,GAChB/2qB,KAAKg3qB,cAAc/6iB,GAEnBj8H,KAAK82qB,YAAcA,GAAczxS,EAAUmnR,QAAQ7opB,EAAMiuV,MAAOjuV,EAAM4iP,OACtEvmP,KAAKi3qB,kBAAkBh7iB,GAEvB,MAAMi7iB,GAAa7xS,EAAUmnR,QAAQ7opB,EAAMguV,QAE3C,GAAIhuV,EAAMomP,KAAM,CACZ,MAAMotb,GAAW9xS,EAAUmnR,QAAQ7opB,EAAMomP,MACzC/pP,KAAKo3qB,WAAap3qB,KAAKq3qB,eAAep7iB,EAAKk7iB,IAG/Cn3qB,KAAKs3qB,cAAgBt3qB,KAAKu3qB,kBAAkBR,GAASD,IACrD92qB,KAAKw3qB,aAAex3qB,KAAKy3qB,iBAAiBx7iB,EAAKi7iB,IAE/Cl3qB,KAAKi8H,IAAM66iB,GAAYtnjB,QAAQl1D,KAAKy8mB,IACpC/2qB,KAAKi2qB,aAGTe,cAAc/6iB,GACVj8H,KAAK+2qB,QAAQ5hmB,GAAK8mD,EAAI9mD,GACtBn1E,KAAK+2qB,QAAQthmB,GAAKwmD,EAAIxmD,GAG1BwhmB,kBAAkBh7iB,GACdj8H,KAAK82qB,YAAY3hmB,GAAK8mD,EAAI9mD,GAC1Bn1E,KAAK82qB,YAAYrhmB,GAAKwmD,EAAIxmD,GAG9B4hmB,eAAep7iB,EAAKk7iB,GAChB,MAAO,CACH,CAAE,CAAEl7iB,EAAI9mD,GAAIgimB,EAAStimB,IAAM,CAAEonD,EAAIxmD,GAAI0hmB,EAAStimB,MAItD0imB,kBAAkBR,EAASD,GACvB,MAAMh4lB,EAAMg4lB,EAAYznmB,SAAS1lE,EACjC,MAAO,CAAE,CACL,CAAEm1E,EAAM,EAAGg4lB,EAAYjimB,IAAM,CAAEiK,EAAM,EAAGg4lB,EAAYjimB,IACpD,CAAEiK,EAAKg4lB,EAAYjimB,IAAM,CAAEiK,EAAKi4lB,EAAQlimB,KACzC,CACC,CAAEiK,EAAM,EAAGg4lB,EAAYj6B,IAAM,CAAE/9jB,EAAM,EAAGg4lB,EAAYj6B,IACpD,CAAE/9jB,EAAKg4lB,EAAYj6B,IAAM,CAAE/9jB,EAAKi4lB,EAAQl6B,MAIhD46B,iBAAiBx7iB,EAAKi7iB,GAClB,MAAO,CACH,CAAE,CAAEj7iB,EAAI9mD,GAAI+hmB,EAAWrimB,IAAM,CAAEonD,EAAIxmD,GAAIyhmB,EAAWrimB,MAI1D6imB,eAAe34pB,GACX,MAAMpb,EAAQ3D,KAAK2D,MACb+mY,EAAW/mY,EAAM+mY,UAAY,GAC7BitS,EAA6C,EAAhCzqqB,KAAKiN,IAAIxW,EAAMmuV,GAAKnuV,EAAMkuV,IACvChpR,EAAW,GACjB,IAAIw9Q,GAAUtnU,EAAQsnU,SAAW,GAEjC,QAAS13U,GAAI,EAAGA,GAAI+7X,EAAS3kY,OAAQ4I,KAAK,CACtC,MAAMipqB,GAAeltS,EAAS/7X,IAE1B03U,GADAuxV,GAAej0qB,EAAMmuV,GAAK6lV,GAAcC,GAAej0qB,EAAMkuV,GAAK8lV,EACxD54pB,EAAQ2rX,SAER3rX,EAAQurX,SAEtB,IAAIutS,GAAgBp9B,GAAW,GAAIp0T,GAAQrpM,QAEtC4td,GAAQitE,GAAct4hB,SAEnBs4hB,GAAct4hB,MADdqrd,GAAQ5qmB,KAAKu/I,OACSv/I,KAAKu/I,MAGvB,IAAIlB,KAAMgoM,GAAQL,YAAY+nV,WjC1F5B,IiC0F0D71F,SAIxE,MAAMwmF,GAAQ,IAAIpb,GAAa,CAC3Bx7oB,KAAMu+U,GAAQv+U,KACd4O,MAAO2vU,GAAQr3R,KACfzkD,OAAQ87U,GAAQr3R,KAChBitG,SAAUoqL,GAAQpqL,SAClB+pL,WAAYK,GAAQL,WACpBhpM,OAAQ66hB,GACRztqB,QAASi8U,GAAQj8U,UAGrBs0pB,GAAM/6pB,MAAQi0qB,GAEd/umB,EAASpjE,KAAKi5pB,IAGlB,YAAKoZ,eAAejvmB,GACbA,EAGXivmB,eAAeptS,GACX,MAAMrF,EAAYrlY,KAAKu6lB,MAAM4uE,gBAAgBnpqB,KAAK+e,SAC5CswD,EAASrvE,KAAKi8H,IAAI5sD,SAExB,QAAS1gE,EAAI,EAAGA,EAAI+7X,EAAS3kY,OAAQ4I,IAAK,CACtC,MACMq/pB,GAAY3oS,EAAUmnR,QADP9hR,EAAS/7X,GAAGhL,OAG7B3D,KAAK+e,QAAQ/S,SACbgiqB,GAAU14iB,KAAKjmD,EAAO1lE,GAEtBqkqB,GAAU14iB,UAAKnwH,EAAWkqE,EAAOvb,GAGrC9zD,KAAKi8H,IAAMj8H,KAAKi8H,IAAI3hE,KAAK0zmB,IACzBtjS,EAAS/7X,GAAGuxoB,OAAO8tB,KAI3BmI,WAAWp3pB,GACP,MAAM2pB,EAAQlpB,MAAM22pB,WAAWp3pB,GACzB2rX,EAAW1qY,KAAK03qB,eAAe34pB,GAErC,QAASpQ,EAAI,EAAGA,EAAI+7X,EAAS3kY,OAAQ4I,IAAK,CACtC,MAAM+F,EAAUg2X,EAAS/7X,GAAG0rN,aACxB3lN,GACAg0B,EAAMxX,OAAOxc,GAIrB,OAAOg0B,EAGX4toB,YAAY74gB,EAAW1+I,GACnB/e,KAAKu2qB,UAAU94gB,EAAW1+I,EAAS/e,KAAKs3qB,cAAev4pB,EAAQ+qX,UAC/D9pY,KAAKu2qB,UAAU94gB,EAAW1+I,EAAS/e,KAAKw3qB,aAAcz4pB,EAAQ4yU,QAC9D3xV,KAAKu2qB,UAAU94gB,EAAW1+I,EAAS/e,KAAKo3qB,WAAYr4pB,EAAQgrO,MAGhEqqb,iBACI,OAAKp0qB,KAAK+e,QAAQi+H,QAAU,IAAIuC,MACrBv/I,KAAK+e,QAAQi+H,OAAOuC,MAG3Bv/I,KAAKu/I,MACEv/I,KAAKu/I,MAGT//H,MAAM40pB,kBAIrBtxB,GAAkBi1B,GAAS,CACvB/6hB,OAAQ,CACJw3hB,YAAa,IAEjB98lB,KAAM,CACFhhE,MAAO,GAEXi7U,OAAQ,CACJpyM,MAAO,WAEXwqG,KAAM,CACFrzO,MAAO,EACPsrP,SAAU,OACVziH,MAAO,WAEX4pP,QAAS,CACL4D,SAAU,SAEdh2V,QAAS,CACL37B,OAAQ,oRAUZmvX,UAAW,CACPngY,QAAS,EACT4yI,OAAQ,CACJtmI,MAAO,EACPtM,QAAS,GAEbstE,KAAM,CACFhhE,MAAO,EACPtM,QAAS,IAGjBqgY,MAAO,CACHx2D,SAAS,EACT7uU,MAAO,IAEXslY,SAAU,CACNz2D,SAAS,EACTjlR,KjC1MiB,EiC2MjBlnD,KAAM6woB,EACN3yT,WAAYuzT,GACZv8f,OAAQ,CACJtmI,MAAO,EACPtM,QAAS,GAEbA,QAAS,GAEbkgY,SAAU,CACNr2D,SAAS,EACTjlR,KjCrNiB,EiCsNjBlnD,KAAM4woB,EACN1yT,WAAYuzT,GACZv8f,OAAQ,CACJtmI,MAAO,EACPtM,QAAS,GAEbA,QAAS,KAIjBqwoB,GAAWs9B,GAAQ13pB,UAAWwupB,IAE9B,SAAekJ,GC9MfC,GAnCA,iBAA8BD,GAC1Bf,cAAc/6iB,GACVj8H,KAAK+2qB,QAAQlimB,GAAKonD,EAAIpnD,GACtB70E,KAAK+2qB,QAAQl6B,GAAK5ghB,EAAI4ghB,GAG1Bo6B,kBAAkBh7iB,GACdj8H,KAAK82qB,YAAYjimB,GAAKonD,EAAIpnD,GAC1B70E,KAAK82qB,YAAYj6B,GAAK5ghB,EAAI4ghB,GAG9Bw6B,eAAep7iB,EAAKk7iB,GAChB,MAAO,CACH,CAAE,CAAEA,EAAShimB,GAAI8mD,EAAIpnD,IAAM,CAAEsimB,EAAShimB,GAAI8mD,EAAI4ghB,MAItD06B,kBAAkBR,EAASD,GACvB,MAAMh4lB,EAAMg4lB,EAAYznmB,SAASvb,EACjC,MAAO,CAAE,CACL,CAAEgjnB,EAAY3hmB,GAAI2J,EAAM,GAAK,CAAEg4lB,EAAY3hmB,GAAI2J,EAAM,GACrD,CAAEg4lB,EAAY3hmB,GAAI2J,GAAO,CAAEi4lB,EAAQ5hmB,GAAI2J,IACxC,CACC,CAAEg4lB,EAAYrhmB,GAAIqJ,EAAM,GAAK,CAAEg4lB,EAAYrhmB,GAAIqJ,EAAM,GACrD,CAAEg4lB,EAAYrhmB,GAAIqJ,GAAO,CAAEi4lB,EAAQthmB,GAAIqJ,KAI/C24lB,iBAAiBx7iB,EAAKi7iB,GAClB,MAAO,CACH,CAAE,CAAEA,EAAW/hmB,GAAI8mD,EAAIpnD,IAAM,CAAEqimB,EAAW/hmB,GAAI8mD,EAAI4ghB,QCsF9Do7B,GA5GA,iBAA2BpB,GACvBziW,SAASthU,EAAMowG,GACX,MAAQ8rR,aAAY5tI,WAAUD,SAAQ8oa,aAAa/mjB,GAC3C1kD,YAAUz/C,YAAY/e,KACxB2D,GAAQmP,EAAKwvpB,YAEb9pP,GAAWm+P,GADE32qB,KAAK42qB,WAAWjzqB,KAE7B2xD,GAAW6rM,EAAOruP,KAAKk8X,GAC7B,IACIv2T,GADAkxlB,GAAiB3pqB,KAAK2pqB,eAAe36R,GAGpC26R,KACD3pqB,KAAK2pqB,eAAe36R,GAAc26R,GAAiB,IAGnDnxP,KACA//V,GAAQz4E,KAAK+4E,YAAYjmE,EAAMowG,IAGnC,IAAIgyjB,GAAU12mB,GAASwwU,GAClBkmS,KACDA,GAAU,IAAIL,GAAc,CACxB7oqB,SAAU+S,GAAQorpB,WAClBhiS,IAAKppX,GAAQopX,IACbqB,QAASzqX,GAAQyqX,QACjB9kE,KAAM3lT,GAAQorpB,aAAenqqB,KAAKsgpB,cAAgB,IAAI57U,MAE1D1kU,KAAKkxB,OAAOgkpB,KAGZz8lB,KACAz4E,KAAKutb,YAAY5pb,GAAOu/G,GAExBgyjB,GAAQhkpB,OAAOunD,IAEfA,GAAMu2T,WAAaA,EACnBv2T,GAAM2oL,SAAWA,EACjB3oL,GAAM0oL,OAASA,EACf1oL,GAAMwxlB,SAAWA,GACjBxxlB,GAAM8hhB,MAAQv6lB,KACdy4E,GAAMnjB,SAAWA,IAGrBt1D,KAAK8/E,OAAOr6E,KAAKgzE,IACjBkxlB,GAAelkqB,KAAKgzE,IAGxByxlB,YACI,OAAIlqqB,KAAK+e,QAAQorpB,WACN+N,GAGJH,GAGXnB,WAAWjzqB,GACP,MAAO,CACHA,EAAMiuV,MAAOjuV,EAAMkuV,GAAIluV,EAAMguV,OAC7BhuV,EAAMmuV,GAAInuV,EAAM4iP,OAIxBgnM,YAAY5pb,EAAOu/G,GACf,MAAM0uR,EAAW1uR,EAAOi+I,OAAOglI,KAC/B,IAAIkmS,EAAYrsqB,KAAK0pqB,gBAAgB93R,GACjCl1E,EAAQ18T,KAAK42qB,WAAWjzqB,GAAOgwC,OAAO3zC,KAAKm4qB,eAAex0qB,EAAM+mY,WAEhEkgO,GAAQjnmB,EAAMomP,QACd2yE,EAAQA,EAAM/oR,OAAOhwC,EAAMomP,OAG/Bsib,EAAYrsqB,KAAK0pqB,gBAAgB93R,GAC7By6R,GAAa,CAAE55nB,IAAKummB,EAAWxqoB,IAAKyqoB,GAExCozB,EAAYrsqB,KAAK0pqB,gBAAgB93R,GAAY,CACzCn/V,IAAKvlC,KAAKulC,IAAI9e,MAAMzmB,KAAMwvT,EAAM/oR,OAAO,CAAE04nB,EAAU55nB,OACnDjkC,IAAKtB,KAAKsB,IAAImlB,MAAMzmB,KAAMwvT,EAAM/oR,OAAO,CAAE04nB,EAAU79pB,QAI3Dg/pB,iBAAiB/0lB,EAAOr9D,GACpB,MAAMzX,EAAQ80E,EAAM90E,MAEpB,OAAO3D,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EACjCzX,EAAMiuV,MAAOjuV,EAAMkuV,GAAIluV,EAAMguV,OAC7BhuV,EAAMmuV,GAAInuV,EAAM4iP,MAAO5iP,EAAMomP,KAAMtxK,EAAM2oL,UAIjD+2a,eAAe3lnB,GACX,MAAMzsD,GAAUysD,GAAS,IAAIzsD,OACvBwM,EAAS,GAEf,QAAS5D,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMqE,EAAOw/C,EAAM7jD,GACfi8lB,GAAQ53lB,IAAkB,OAATA,GACjBT,EAAO9M,KAAKuN,GAIpB,OAAOT,EAGX2voB,+BACI,OAAO,ICvGfk2B,GATA,iBAA8BnP,GAC1BR,UACI,MAAMtla,EAAOnjQ,KAAKupV,MAAM8uV,WAAWr4qB,KAAKmhQ,QAGxC,OAFanhQ,KAAKg3mB,WAAa7zW,EAAKrvM,EAAIqvM,EAAKx5P,ICHtC,YAAkBhG,IAC7B,OAAOinmB,GAAQjnmB,KAAoB,OAAVA,GCY7B,iBAA2Bw+oB,GACvBripB,YAAYqlY,EAAUpmX,GAElBS,MAAMT,GAEN/e,KAAKmlY,SAAWA,EAChBnlY,KAAKsgpB,aAAen7Q,EAASm7Q,aAC7BtgpB,KAAKs4qB,cAELt4qB,KAAK28G,SAGT27jB,cAGIt4qB,KAAKu4qB,YAAc,GACnBv4qB,KAAKw4qB,YAAc,GAEnBx4qB,KAAK8/E,OAAS,GACd9/E,KAAK4pqB,aAAe,GACpB5pqB,KAAK6pqB,cAAgB,GACrB7pqB,KAAK8pqB,YAAc,GAGvBntjB,SACI38G,KAAK+pqB,mBAAmB/pqB,KAAKo0U,SAASvuT,KAAK7lB,OAG/CwrqB,YAAY/ylB,EAAO5tB,EAAOq4D,GACtB,MAAMv/G,EAAQ80E,EAAM90E,MAAMknD,GACpB4tnB,EAAkB5tnB,EAAQ,QAC1By9U,GAAWz9U,EAAQ,WACnBu9U,GAAYv9U,EAAQ,aAClBo/mB,YAAU9oa,WAAWj+I,EACvBmnR,GAAY5xT,EAAM15D,QAAQsrX,UAC1BohS,GAAWvojB,EAAOolR,IAClBojS,GAAYxojB,EAAOklR,IAEzB,GAAInzD,GAAStxU,GAAQ,CACjB,IAAIsgqB,GACAhvV,GAASw2V,KAAax2V,GAASy2V,MAC/BzH,GAAa,CAAE/0R,IAAKu8R,GAAUt8R,KAAMu8R,KAGpCrhS,IAAaugO,GAAQvgO,GAAUouS,MAC/Bz4qB,KAAK2rqB,kBAAoB3rqB,KAAK2rqB,mBAAqB,CAAEhiqB,EAAG,GAAImqD,EAAG,IAC/D9zD,KAAK2rqB,kBAAkB9gnB,GAAOo/mB,IAAYjqqB,KAAK2rqB,kBAAkB9gnB,GAAOo/mB,KACpE,IAAI2B,GAAqBvhS,GAAUouS,GAAkBt3a,GAAQt2M,GAEjEo5mB,GAAajkqB,KAAK2rqB,kBAAkB9gnB,GAAOo/mB,IAAU3F,cAAc3gqB,EAAO0mY,GAAUouS,KAGpFxU,IACAjkqB,KAAK6rqB,iBAAiB5H,GAAYxrlB,EAAO5tB,IAKrDghnB,iBAAiB5H,EAAYxrlB,EAAO5tB,GAChC,MAAQqkV,MAAKC,QAAS80R,GACd9ia,UAAQpiP,SAAWsrX,UAAWtrX,KAAc05D,EAC9Cu+hB,GAAansjB,IAAU/kD,GACvBkN,GAAO,GAEbylE,EAAM5tB,EAAQ,OAASqkV,EACvBz2T,EAAM5tB,EAAQ,QAAUskV,EAExB12T,EAAM4xT,UAAY5xT,EAAM4xT,WAAa,GACrC,MAAM0hS,GAAW,IAAI2M,GAAgBxpS,EAAKC,EAAM6nO,GAAYh3mB,KAAMmhQ,GAAQpiP,IAC1E05D,EAAM4xT,UAAU5kY,KAAKsmqB,IACrBtzlB,EAAMvnD,OAAO66oB,IAEb/4pB,GAAK63C,GAASqkV,EACdlvY,KAAKutb,YAAYv6a,GAAMmuP,IACvBnuP,GAAK63C,GAASskV,EACdnvY,KAAKutb,YAAYv6a,GAAMmuP,IAG3BizE,SAASzwU,EAAOu/G,GACZ,MAAQv5G,IAAGmqD,KAAMnwD,EACXsmqB,EAAW/mjB,EAAO+mjB,SAElBrhS,GAAgB5oY,KAAKqwqB,oBADZrwqB,KAAK+e,QAAQoiP,OAAO8oa,IAE7BL,GAAe5pqB,KAAK4pqB,aAAaK,GAEvC,IAKIxxlB,GALA8rlB,GAAa5gqB,EACX60a,GAAS7ua,IAAM6ua,GAAS1kX,KAC1BywmB,GAAavkqB,KAAK24qB,mBAAmBpU,GAAY37R,KAIjD27R,KACA9rlB,GAAQz4E,KAAK+4E,YAAYwrlB,GAAYrhjB,GACjCzqC,KACA5yE,OAAOw0D,OAAOoe,GAAOyqC,GACrBljH,KAAKwrqB,YAAY/ylB,GAAO1wE,GAAGm7G,GAC3BljH,KAAKwrqB,YAAY/ylB,GAAO3yE,GAAGo9G,IAE/BljH,KAAKutb,YAAYg3O,GAAYrhjB,EAAOi+I,SAGxCnhQ,KAAK8/E,OAAOr6E,KAAKgzE,IACjBmxlB,GAAankqB,KAAKgzE,IAGtB43lB,oBAAoBlva,GAChB,OAAOA,EAAOynI,cAGlB+vS,sBAEAprP,YAAY5pb,EAAOw9P,GACf,MAAM61I,EAAch3Y,KAAKsgpB,aAAa/8e,MAC9B+hO,MAAOszS,EAAWrzS,MAAOszS,GAAc13a,EAC/C,IAAMx3P,KAAGmqD,MAAMnwD,EACXm1qB,GAAa94qB,KAAKu4qB,YAAYK,GAC9BG,GAAa/4qB,KAAKw4qB,YAAYK,GAE9BrgQ,GAAS7ua,MACTmvqB,GAAa94qB,KAAKu4qB,YAAYK,GAC1BE,IAAc,CAAErmoB,IAAKummB,EAAWxqoB,IAAKyqoB,GAErCruf,GAASjhJ,MACTA,GAAI2wa,GAAUtjC,EAAartY,KAG/BmvqB,GAAWrmoB,IAAMvlC,KAAKulC,IAAIqmoB,GAAWrmoB,IAAK9oC,IAC1CmvqB,GAAWtqqB,IAAMtB,KAAKsB,IAAIsqqB,GAAWtqqB,IAAK7E,KAG1C6ua,GAAS1kX,MACTilnB,GAAa/4qB,KAAKw4qB,YAAYK,GAC1BE,IAAc,CAAEtmoB,IAAKummB,EAAWxqoB,IAAKyqoB,GAErCruf,GAAS92F,MACTA,GAAIwmX,GAAUtjC,EAAaljV,KAG/BilnB,GAAWtmoB,IAAMvlC,KAAKulC,IAAIsmoB,GAAWtmoB,IAAKqhB,IAC1CilnB,GAAWvqqB,IAAMtB,KAAKsB,IAAIuqqB,GAAWvqqB,IAAKslD,KAIlDo4mB,iBAAiBntpB,EAASpb,EAAOu/G,GAC7B,MAAQi+I,SAAQ8oa,YAAa/mjB,EACvBh5G,GAAQ,CAAEm4c,SAAUlhN,EAAOgra,UAAW7C,SAAU,CAAE,OAAQ,UAAW,UAAW,WAAY,SAAU,SAAU,sBAAuB,wBAE7I,IAAI8C,GAASpsqB,KAAK8pqB,YAAYG,GACzBr/D,GAAQwhE,MACTpsqB,KAAK8pqB,YAAYG,GAAYmC,GAAS7C,GAAYxqpB,EAAS,GAAI7U,IAAO,IAG1E,IAAI8/pB,GAAejrpB,EACnB,OAAIqtpB,KACApC,GAAevvB,GAAW,GAAI17nB,GAC9BwqpB,GAAYS,GAAc,CACtBrmqB,MAAOA,EACPw9P,OAAQA,EACR7rM,SAAU4tD,EAAO5tD,UAClBprD,KAGA8/pB,GAGXE,YACI,OAAO0E,GAGX5E,aAAa7oa,EAAQ8oa,GACjB,IAAIlrpB,EAAU/e,KAAK6pqB,cAAcI,GACjC,IAAKlrpB,EAAS,CACV,MAAMsjc,EAAWrid,KAAKkqqB,YAAY7ppB,UAAUgic,SAC5Crid,KAAK6pqB,cAAcI,GAAYlrpB,EAAU07nB,GAAW,GAAIp4L,EAAU,CAC9Dh8H,QAAS,CACLj8U,QAAS+2P,EAAO/2P,SAEpB2sC,QAAS,CACL37B,OAAQpb,KAAK+e,QAAQg4B,QAAQ37B,QAEjCovX,OAAQ,CACJpvX,OAAQpb,KAAK+e,QAAQyrX,OAAOpvX,SAEjC+lP,GAGP,OAAOpiP,EAGXg6D,YAAYp1E,EAAOu/G,GACf,MAAMi+I,EAASj+I,EAAOi+I,OACtB,IAAI6oa,EAAehqqB,KAAKgqqB,aAAa7oa,EAAQj+I,EAAO+mjB,UAChD1qhB,EAAQr8B,EAAOq8B,OAAS4hH,EAAO5hH,MAEnCyqhB,EAAehqqB,KAAKksqB,iBAAiBlC,EAAcrmqB,EAAOu/G,GAEtD62hB,GAAW54Y,EAAO5hH,SAClBA,EAAQyqhB,EAAazqhB,OAGzB,MAAM9mE,GAAQ,IAAIm2lB,GAAUjrqB,EAAOqmqB,GACnCvxlB,UAAM8mE,MAAQA,EAEdv/I,KAAKkxB,OAAOunD,IAELA,GAGX4/lB,WAAWl3a,GACP,MAAQmkI,MAAOszS,EAAWrzS,MAAOszS,GAAc13a,EACzCgkI,EAAWnlY,KAAKmlY,SAChBG,EAAQszS,EAAYzzS,EAAS6zS,WAAWJ,GAAazzS,EAAS6lR,MAC9DzlR,GAAQszS,EAAY1zS,EAAS8zS,WAAWJ,GAAa1zS,EAAS8lR,MAEpE,IAAK3lR,EACD,MAAM,IAAI7uX,MAAM,qCAAuCmiqB,GAG3D,IAAKrzS,GACD,MAAM,IAAI9uX,MAAM,qCAAuCoiqB,GAG3D,MAAO,CACHlvqB,EAAG27X,EACHxxU,EAAGyxU,IAIX26Q,OAAOpD,GACH,MAAM0vB,EAAcxsqB,KAAK8/E,OACnB7tB,GAASjyD,KAAK+e,QAAQ0+X,KAC5B,IAAIilR,EAAU,EAGd1iqB,KAAK+pqB,mBAAmB,CAACpmqB,EAAOu/G,MAC5B,MAAMzqC,GAAQ+zlB,EAAY9J,KACpB2V,GAAar4qB,KAAKq4qB,WAAWn1jB,GAAOi+I,QACpCmrZ,GAAQ+rB,GAAW1uqB,EAAE6ipB,QAAQ7opB,EAAMgG,EAAGhG,EAAMgG,EAAGsoD,GAC/Cs6lB,GAAQ8rB,GAAWvknB,EAAE04lB,QAAQ7opB,EAAMmwD,EAAGnwD,EAAMmwD,EAAG7B,GAErD,GAAIwmB,GACA,GAAI6zkB,IAASC,GAAO,CAChB,MAAMqgB,GAAY5sqB,KAAK4sqB,UAAUtgB,GAAOC,IACxC9zkB,GAAMynkB,OAAO0sB,SAEbn0lB,GAAMw7P,SAAU,IAK5Bj0U,KAAKi8H,IAAM6ghB,EAGf8vB,UAAUtgB,EAAOC,GACb,OAAO,IAAItP,GAAIqP,EAAMn3kB,GAAIo3kB,EAAM13kB,GAAIy3kB,EAAM72kB,GAAI82kB,EAAM1P,IAGvDktB,mBAAmBl6pB,GACf,MAAQkP,SAAWoiP,UAAUyoa,gBAAiB5pqB,KAE9C,QAASiqqB,EAAW,EAAGA,EAAW9oa,EAAOp7P,OAAQkkqB,IAAY,CACzD,MAAMwC,EAAgBtra,EAAO8oa,GAExBiP,EADoCjP,KAErCL,EAAaK,GAAY,IAG7B,QAASvH,GAAU,EAAGA,GAAU+J,EAAc35pB,KAAK/M,OAAQ28pB,KAAW,CAClE,MAAQJ,YAAa3+pB,GAAOu/G,WAAWljH,KAAKotqB,WAAWX,EAAexC,EAAUvH,IAEhF7ypB,EAASlM,GAAO82oB,GAAW,CACvBioB,QAASA,GACTvha,OAAQsra,EACRxC,SAAUA,EACV30mB,SAAUm3mB,EAAc35pB,KAAK4vpB,IAC7BnoE,MAAOv6lB,MACRkjH,OAKfsqjB,iBAAiB/0lB,EAAOr9D,GACpB,MAAMzX,EAAQ80E,EAAM90E,MACpB,OAAO3D,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAQzX,EAAMgG,EAAGhG,EAAMmwD,GAGhEu9mB,kBACI,MAAMvxlB,EAAS9/E,KAAK8/E,OACdvtE,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IACnC53B,EAAO9M,MAAMq6E,EAAO31C,IAAQ,IAAIu+mB,QAEpC,OAAOn2oB,GAGfuwoB,GAAkBq2B,GAAc,CAC5Bh4a,OAAQ,GACRpqN,QAAS,CACL37B,OAAQ,YAEZovX,OAAQ,CACJpvX,OAAQ,YAEZqiY,MAAM,IAEVg9P,GAAW0+B,GAAa94pB,UAAWoxpB,GAAoB,CACnDrE,WAAYK,0BAGhB,SAAe0L,GC5Tf,iBAAqBvK,GACjB9uqB,YAAY6D,EAAOob,GACfS,MAAM7b,EAAOob,GAEb/e,KAAKohQ,SAAWz9P,EAAMy9P,SAG1BsgZ,kBACI,MAAMn3Q,EAAYvqY,KAAK+e,QAAQwrX,UACzBvtP,EAASutP,EAAUvtP,OACnBqpM,EAAUrmV,KAAK+e,QAAQsnU,QACvBh3Q,EAASrvE,KAAKi8H,IAAI5sD,SAClBojB,GAAU4zP,EAAQr3R,KAAOq3R,EAAQrpM,OAAOtmI,MAAQsmI,EAAOtmI,OAAS,EAChE0iqB,GAAiB,IAAI/8hB,KACrBgyhB,GAAS,IAAIhyhB,KAAY,IAAI/oE,KAAY,CAAEjE,EAAO1lE,EAAG0lE,EAAOvb,EAAI2+B,EAAS,EAAIuqD,EAAOtmI,MAAQ,GAAK+7E,EAASuqD,EAAOtmI,MAAQ,GAAI,CAC/HmrI,OAAQ,CACJtC,MAAO,QAEX7wI,KAAM1O,KAAKiipB,eAAe,CACtBl1Q,SAAU,eACVxtP,MAAO8mM,EAAQL,WACfy9T,MAAO,CAAE,CACLrxnB,OAAQ,EACRmtH,MAAO8mM,EAAQL,WACf57U,QAAS,IACV,CACCgoB,OAAQ,EACRmtH,MAAO8mM,EAAQL,WACf57U,QAAS,QAIf++X,GAAU,IAAI9sP,KAAY,IAAI/oE,KAAY,CAAEjE,EAAO1lE,EAAG0lE,EAAOvb,GAAK2+B,GAAS,CAC7EovD,OAAQ,CACJtC,MAAOvC,EAAOuC,OACV,IAAIlB,KAAMgoM,EAAQL,YAAY+nV,WvCnCxB,IuCmCsD71F,QAChExhkB,MAAOsmI,EAAOtmI,MACdtM,QAAS4yI,EAAO5yI,SAEpBsE,KAAM,CACF6wI,MAAO8mM,EAAQL,WACf57U,QAASmgY,EAAUngY,WAI3BgvqB,UAAelopB,OAAOm9oB,GAAQllS,IAEvBiwS,IAIfC,GAAOh5pB,UAAUgic,SAAWo4L,GAAW,GAAI4+B,GAAOh5pB,UAAUgic,SAAU,CAClE73E,OAAQ,CACJtgW,SAAUuumB,GAEdluQ,UAAW,CACPngY,QAAS,EACT4yI,OAAQ,CACJuC,MAAO,OACP7oI,MAAO,EACPtM,QAAS,MAKrBivqB,GAAOh5pB,UAAUgic,SAAS93E,UAAUt5O,YAAS9rJ,EAE7C,SAAek0qB,GCnEf,iBAA0BF,GACtBb,cACIt4qB,KAAKs5qB,SAAWrgC,EAChBz5nB,MAAM84pB,cAGVlkW,SAASzwU,EAAOu/G,GACO,OAAfv/G,EAAMqrD,OAAkBrrD,EAAMqrD,KAAO,GAAMrrD,EAAMqrD,KAAO,GAAKk0D,EAAOi+I,OAAO4nI,eAAe90D,UAC1Fj0U,KAAKs5qB,SAAWpsqB,KAAKsB,IAAIxO,KAAKs5qB,SAAUpsqB,KAAKiN,IAAIxW,EAAMqrD,OACvDxvC,MAAM40T,SAASzwU,EAAOu/G,KAEtBljH,KAAK8/E,OAAOr6E,KAAK,MACjBzF,KAAK4pqB,aAAa1mjB,EAAO+mjB,UAAUxkqB,KAAK,OAIhDy6oB,OAAOjkhB,GACHj8H,KAAKu5qB,kBAAkBt9iB,GACvBz8G,MAAM0goB,OAAOjkhB,GAGjBiuiB,YACI,OAAOmP,GAGXtgmB,YAAYp1E,EAAOu/G,GACf,MAAMi+I,EAASj+I,EAAOi+I,OAEhB7vP,EAAQ4xG,EAAOw/iB,SAAWiC,EADZxja,EAAOruP,KAAK/M,QAE1BgwW,GAAmB,CACrBzkW,MAAOA,EACPpF,SAAUy4pB,EAA6BrzpB,EACvCxJ,KAAM29pB,IAGV,IAAIlmhB,GAAQr8B,EAAOq8B,OAAS4hH,EAAO5hH,MAC/B57I,EAAMqrD,KAAO,GAAKmyM,EAAO4nI,eAAe90D,UACxC10L,GAAQ87f,GACJl6Y,EAAO4nI,eAAexpP,MAAOA,KAIrC,IAAIyqhB,GAAevvB,GAAW,CAC1BjwQ,OAAQ,CACJrlE,UAAW,CACP7zT,MAAOA,EACPpF,SAAUy4pB,EAA6BrzpB,KAGhDtR,KAAKgqqB,aAAa7oa,EAAQj+I,EAAO+mjB,UAAW,CAC3C5jV,QAAS,CACLv+U,KAAM4woB,EACN17f,OAAQmkH,EAAOnkH,OACf5yI,QAAS+2P,EAAO/2P,QAChB+6T,UAAW4wC,MAInBi0T,GAAehqqB,KAAKksqB,iBAAiBlC,GAAcrmqB,EAAOu/G,GACtD62hB,GAAW54Y,EAAO5hH,SAClBA,GAAQyqhB,GAAazqhB,OAGzByqhB,GAAa3jV,QAAQL,WAAazmM,GAElC,MAAM9mE,GAAQ,IAAI4gmB,GAAO11qB,EAAOqmqB,IAChCvxlB,UAAM8mE,MAAQA,GAEdv/I,KAAKkxB,OAAOunD,IAELA,GAGX8gmB,kBAAkBt9iB,GACd,MAAQl9G,SAAWoiP,WAAanhQ,KAC1BmtpB,EAAUjgpB,KAAKulC,IAAIwpF,EAAIvlH,QAASulH,EAAI1xH,UAE1C,QAAS0/pB,EAAW,EAAGA,EAAW9oa,EAAOp7P,OAAQkkqB,IAAY,CACzD,MAAMwC,EAAgBtra,EAAO8oa,GACvBL,GAAe5pqB,KAAK4pqB,aAAaK,GAGjCuP,IAFU/M,EAAc9jS,SAAWz7X,KAAKsB,IAAc,IAAV2+oB,EAAgB,KAE3C,EACjBssB,IAFUhN,EAAcjkS,SAAqB,GAAV2kR,GAElB,EACjBusB,GAAUxsqB,KAAK45E,GAAK0ylB,GAAOA,GAG3BG,IAFUzsqB,KAAK45E,GAAK2ylB,GAAOA,GACLC,IACE15qB,KAAKs5qB,SAEnC,QAAS5W,GAAU,EAAGA,GAAUkH,GAAa7jqB,OAAQ28pB,KAAW,CAC5D,MAAMjqlB,GAAQmxlB,GAAalH,IAC3B,GAAIjqlB,GAAO,CACP,MAAMswE,GAAO77I,KAAKiN,IAAIs+D,GAAM90E,MAAMqrD,MAAQ2qnB,GACpClnlB,GAASvlF,KAAKqnF,MAAMmllB,GAAU3whB,IAAQ77I,KAAK45E,IAE3CmqE,GAAS2ohB,GADmBnhmB,GAAM15D,QAAQkyI,OAAQ,IAC3B,EAAIx+D,GAASgnlB,IAE1Ch/B,GAAWhikB,GAAM15D,QAAS,CACtBkyI,OAAQA,GACRo1L,QAAS,CACLr3R,KAAe,EAATyjC,GACNw+D,OAAQA,IAEZu5O,OAAQ,CACJv5O,OAAQA,GAAS,QAQzCu8gB,iBAAiB/0lB,EAAOr9D,GACpB,MAAMzX,EAAQ80E,EAAM90E,MACpB,OAAO3D,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAQzX,EAAMgG,EAAGhG,EAAMmwD,EAAGnwD,EAAMqrD,KAAMypB,EAAM2oL,UAGrFw/Y,mBACA3iU,iBAGJ6kU,GAAkB+2B,GAAa,CAC3B9ioB,QAAS,CACL37B,OAAQ,OAEZovX,OAAQ,CACJpvX,OAAQ,SAIhB,SAAey+pB,GCtIf,iBAAqBv2B,IAErB7I,GAAW//X,GAAOr6P,UAAWwupB,IAE7B,SAAen0Z,GCKf,iBAAqBynY,GACjBripB,YAAY6D,EAAOob,GACfS,MAAMT,GAEN/e,KAAK6sqB,UAAY7sqB,KAAK+e,QAAQ8tpB,UAC9B7sqB,KAAKu/I,MAAQxgI,EAAQwgI,OAASg6f,GAC9Bv5oB,KAAK2D,MAAQA,EAGjBg5G,SACI,MAAM59F,EAAU/e,KAAK+e,QAEhB/e,KAAK6tqB,YACN7tqB,KAAK6tqB,WAAY,EAEbjjE,GAAQ5qmB,KAAK2D,MAAM+E,UACnB1I,KAAK0I,OAAS,IAAIgyQ,GAAO,CACrB5yQ,KAAMiX,EAAQrW,OAAOg2pB,MACrB14U,WAAYjnU,EAAQrW,OAAO62I,OAASv/I,KAAKu/I,MACzCn1I,QAAS2U,EAAQ3U,QACjB6mJ,OAAQlyI,EAAQkyI,OAChBjU,OAAQj+H,EAAQrW,OAAOs0I,OACvBwlgB,OAAQnJ,GACRl8kB,MAAOm2iB,KAGXtzmB,KAAK0I,OAAO/E,MAAQ3D,KAAK2D,MACzB3D,KAAK0I,OAAO4sD,SAAWt1D,KAAKs1D,SAC5Bt1D,KAAK0I,OAAOy4P,OAASnhQ,KAAKmhQ,OAE1BnhQ,KAAKkxB,OAAOlxB,KAAK0I,SAGrB1I,KAAK2tqB,cAIbztB,OAAOjkhB,GACHj8H,KAAK28G,SAEL,MAAQ59F,UAASrW,SAAQ6xlB,MAAOhxQ,GAAUvpV,KACpCmqqB,EAAaprpB,EAAQorpB,WACrB9kS,GAAY97C,EAAM4/U,gBAAgBnpqB,KAAK+e,SACvC2tpB,GAAenjV,EAAMmjV,aAAanjV,EAAMw7C,aAAchmX,EAAQiwX,WAAY3J,IAC1Ey0S,GAAkBz0S,GAAUmnR,QAAQxspB,KAAK2D,MAAM+E,QAC/CqxqB,GAAc5P,EAAa2P,GAAkBpN,GAC7CsN,GAAc7P,EAAauC,GAAeoN,GAEhD,GAAIpxqB,EAAQ,CACR,MAAMuxqB,GAAa,IAAIh9B,GACnB88B,GAAY5kmB,GAAI6kmB,GAAYnlmB,GAC5BklmB,GAAYtkmB,GAAIukmB,GAAYn9B,IAEhCn0oB,EAAOqW,QAAQxU,OAAS4/pB,EAAa8P,GAAW1vqB,SAAWwU,EAAQrW,OAAOgvE,KAAKhhE,MAC/EhO,EAAOqW,QAAQrI,MAAQyzpB,EAAaprpB,EAAQrW,OAAOgvE,KAAKhhE,MAAQujqB,GAAWvjqB,QAC3EhO,EAAOw3oB,OAAO+5B,IAGdj6qB,KAAKk2K,MACLl2K,KAAKk2K,KAAKgqe,OAAOjkhB,GAGrBj8H,KAAKi8H,IAAMA,EAGfgiN,eACIz+T,MAAMy+T,eAEN,MAAMl/T,EAAU/e,KAAK+e,QACf4H,EAAO01H,cAAmBr8I,KAAKi8H,IAAIwhhB,SAAU,CAC/C/uoB,KAAM,CACF6wI,MAAOv/I,KAAKu/I,MACZn1I,QAAS2U,EAAQ3U,SAErBy3I,OAAQ,OAGR9iI,EAAQi+H,OAAOtmI,MAAQ,GACvBiQ,EAAK5H,QAAQsT,IAAI,SAAU,CACvBktH,MAAOxgI,EAAQi+H,OAAOuC,OAASv/I,KAAKu/I,MACpC7oI,MAAOqI,EAAQi+H,OAAOtmI,MACtBsrP,SAAUjjP,EAAQi+H,OAAOglH,SACzB53P,QAASixoB,GAAet8nB,EAAQi+H,OAAO5yI,QAAS2U,EAAQ3U,WAIhEpK,KAAKk6qB,WAAavzpB,EAElBsioB,GAAiBtioB,GACjB3mB,KAAK4jQ,OAAO1yO,OAAOvK,GAGvBi6nB,kBACQ5gpB,KAAKk6qB,aACLl6qB,KAAKmlU,UAAY9oL,UACbr8I,KAAKk6qB,WAAYl6qB,KAAK+e,QAAQomT,YAK1Cu8U,gBAAgBv3oB,GACZ,OAAOkyI,cAAmBr8I,KAAKi8H,IAAIwhhB,SAAUtzoB,GAGjDmkqB,kBACI,OAAOtuqB,KAAKk6qB,WAGhBp4B,sBACI,MAAO,CACH5jU,KAAMl+U,KAAKi8H,IAAIwhhB,SACf75Y,OAAQ5jQ,KAAKk6qB,WACbn7pB,QAAS/e,KAAK+e,SAItBywX,YAAYp0X,GACR,OAAOpb,KAAKu6lB,MAAMizE,iBAAiBxtqB,KAAMob,IAIjD++pB,GAAO95pB,UAAUmupB,cAAgBiG,2BAEjC3xB,GAAkBq3B,GAAQ,CACtBn9hB,OAAQ,CACJtmI,MAAO,GAEX1K,UAAU,EACV5B,QAAS,EACT1B,OAAQ,CACJg2pB,MAAO,GACP1hhB,OAAQ,CACJtmI,MAAO,EACP6oI,MAAO,SAEX7nE,KAAM,CACFhhE,MAAO,IAGfqgC,QAAS,CACL37B,OAAQ,mCAIhBq/nB,GAAW0/B,GAAO95pB,UAAWwupB,IAC7Bp0B,GAAW0/B,GAAO95pB,UAAWyupB,IAE7B,SAAeqL,GCtJf,iBAA0B1M,GACtB3tqB,YAAYqlY,EAAUpmX,IAiH1B,YAAkBA,IACd,MAAMoiP,EAASpiP,GAAQoiP,OAEvB,QAASxyP,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAAK,CACpC,MAAMyrqB,EAAaj5a,EAAOxyP,GACpBmE,EAAOsnqB,EAAWtnqB,KACpBA,IAAS6sB,GAAQ7sB,EAAK,MAAQo4J,GAASp4J,EAAK,MAC5CsnqB,EAAWtnqB,KAAO,CAAEA,KAtHxBunqB,CAASt7pB,GAETS,MAAM2lX,EAAUpmX,GAGpBgupB,iBAAiBR,GACb,MAAM/tmB,EAAWx+D,KAAKw+D,SAChBk3mB,EAAiBl3mB,EAASz4D,OAEhC,QAAS4I,EAAI,EAAGA,EAAI+mqB,EAAgB/mqB,IAChC6vD,EAAS7vD,GAAGuxoB,OAAOqsB,EAAc59pB,IAIzC87pB,UAAUhylB,GACN,MACM4sT,EAAYrlY,KAAKmpqB,gBADR1wlB,EAAM0oL,QAEf7R,EAAoBtvP,KAAK8qqB,0BAA0BzlS,GAEzD,MAAO,CAAE/1I,EAAmB72K,EAAM90E,MAAM0iC,SAAWipN,GAGvDv2K,YAAYjmE,EAAMowG,GACd,MAAQ8rR,aAAY5tI,WAAUD,SAAQ8oa,aAAa/mjB,GAC3CnkG,WAASy/C,aAAax+D,KACxB2D,GAAQmP,EAAKwvpB,YAEnB,IAAIgY,GAAgB7/B,GAAW,CAC3BzuoB,UAAW+S,GAAQorpB,WACnBhhS,QAAShoI,EAAOgoI,QAChB6F,WAAYA,EACZm7R,WAAYprpB,GAAQorpB,YACrBhpa,GAEC5hH,GAAQzsI,EAAKowG,OAAOq8B,OAAS4hH,EAAO5hH,MACxC+6hB,GAAgBt6qB,KAAKksqB,iBACjBoO,GAAe32qB,GAAOy9P,EAAU4tI,EAAY7tI,EAAQ8oa,IAGpDlwB,GAAW54Y,EAAO5hH,SAClBA,GAAQ+6hB,GAAc/6hB,OAG1B,MAAMqtP,GAAS,IAAIutS,GAAOx2qB,GAAO22qB,IACjC1tS,GAAOrtP,MAAQA,GAEf,IAAI21hB,GAAU12mB,GAASwwU,GACvB,OAAKkmS,KACDA,GAAU,IAAIL,GAAc,CACxB7oqB,SAAU+S,GAAQorpB,WAClBhiS,IAAKppX,GAAQopX,IACbqB,QAASzqX,GAAQyqX,QACjB9kE,KAAM3lT,GAAQorpB,aAAenqqB,KAAKsgpB,cAAgB,IAAI57U,MAE1D1kU,KAAKkxB,OAAOgkpB,KAGhBA,GAAQhkpB,OAAO07W,IAERA,GAGX2gD,YAAY5pb,EAAOu/G,GACf,MAAQ78E,UAAS39B,UAAW/E,EACtBiuY,EAAW1uR,EAAOi+I,OAAOglI,KAC/B,IAAIkmS,GAAYrsqB,KAAK0pqB,gBAAgB93R,GAEjCg5N,GAAQvkkB,KAAalvB,MAAMkvB,IAAYukkB,GAAQlimB,IAAWyO,MAAMzO,MAChE2jqB,GAAYrsqB,KAAK0pqB,gBAAgB93R,GAC7By6R,IAAa,CAAE55nB,IAAKummB,EAAWxqoB,IAAKyqoB,GAExCozB,GAAU55nB,IAAMvlC,KAAKulC,IAAI45nB,GAAU55nB,IAAKpM,EAAS39B,GACjD2jqB,GAAU79pB,IAAMtB,KAAKsB,IAAI69pB,GAAU79pB,IAAK63B,EAAS39B,IAIzD8kqB,iBAAiB/0lB,EAAOr9D,GACpB,OAAOpb,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAQq9D,EAAM90E,MAAM0iC,QAASoyC,EAAM90E,MAAM+E,QAGlF67pB,WAAWzxpB,GACP,OAAOA,EAAKwvpB,YAAYj8nB,QAG5BwmoB,UAAUp0lB,GAGN,OAFcA,EAAM90E,MAAM0iC,QAEX,EAGnBu6mB,kBACI,MAAM9gkB,EAAS9/E,KAAK8/E,OAEpB9/E,KAAK21qB,uBAEL,QAASxroB,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IAAO,CAC1C,MAAMsuC,EAAQqH,EAAO31C,GACrBsuC,EAAM15D,QAAQomT,UAAYnlU,KAAK+e,QAAQomT,UACvC1sP,EAAMmokB,oBAKlB25B,GAAYl6pB,UAAUs1pB,qBAAuBE,kCAE7C/yB,GAAkBy3B,GAAa,CAC3Bp1W,UAAW,CACPr9T,KAAMy9pB,MAgBd,SAAegV,GCnIf,iBAA0Bh+B,KACtBz8oB,YAAYwgpB,EAAcvhoB,GACtBS,QAEAxf,KAAKsgpB,aAAeA,EACpBtgpB,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASA,GAGhDisI,SAASjsI,EAAS05D,GACd,IAAMutQ,aAAYhpM,QAAUuC,MAAOvC,IAAaj+H,EAEhD,GAAI05D,EAAO,CACP,MAAM+hmB,GAAa/hmB,EAAM8mE,OAAS9mE,EAAM15D,QAAQwgI,MAChDymM,EAAaq1T,GAAer1T,EAAYw0V,IACxCx9hB,EAASq+f,GAAer+f,EAAQw9hB,IAGpC,MAAMh1hB,EAAU43f,GAAWr+nB,EAAQymI,SAAW,GAAI,QAElD,MAAO,CACHpmC,gBAAiB4mO,EACjBxuK,YAAax6B,EACbqI,KAAMtmI,EAAQsmI,KACd9F,MAAOxgI,EAAQwgI,MACfn1I,QAAS2U,EAAQ3U,QACjBk4oB,YAAajI,GAAWt7nB,EAAQi+H,OAAOtmI,OACvCmoD,WAAYw7kB,GAAW70f,EAAQr3B,KAC/BrvD,cAAeu7kB,GAAW70f,EAAQkkL,QAClCzzT,YAAaokoB,GAAW70f,EAAQp2E,MAChCj5D,aAAckkoB,GAAW70f,EAAQl2E,QAIzC9hE,KAAKuR,EAASqtG,EAAgB3zC,GAC1B15D,EAAQ3D,OAASgxG,EAAehxG,OAEhC,MAAMjR,EAAQnK,KAAKgrJ,SAAS5+B,EAAgB3zC,GAC5C15D,EAAQ5U,MAAQA,EAEhB,MAAM67U,EAAa,IAAI3nM,KAAMl0I,EAAMi1G,kBAC9Bwrf,GAAQx+e,EAAemzB,SAAWymM,EAAW+1T,WAC9Ch9nB,EAAQq+B,UAAY,2BAGxBp9C,KAAKsgpB,aAAavwU,OAAOk4V,GAAclppB,GAEvC/e,KAAKi0U,SAAU,EAGnBp2Q,OACQ79D,KAAKsgpB,cACLtgpB,KAAKsgpB,aAAavwU,OAAOm4V,IAG7BloqB,KAAKi0U,SAAU,EAGnBxO,iBACWzlU,KAAKsgpB,cAIpBwC,GAAkBpzQ,GAAa,CAC3B1yP,OAAQ,CACJtmI,MAAO,GAEXtM,QAAS,IAGb,SAAeslY,GCpEf,iBAA+BA,GAC3B5vY,YAAYwgpB,EAAc/zQ,EAAWxtX,GACjCS,MAAM8goB,EAAcvhoB,GAEpB/e,KAAKusY,UAAYA,EACjBvsY,KAAKy6qB,cAAgBn6B,EAAalloB,OAClCpb,KAAK06qB,eAGTA,eACI,MAAMv0S,EAAOnmY,KAAKusY,UAAUpG,KAE5B,IAAInhY,EAEAA,EAHamhY,EAAKhB,SAETJ,aACFoB,EAAK6tR,YAAc,eAAiB,YAEpC7tR,EAAKpnX,QAAQ/S,SAAW,QAAU,QAE7ChM,KAAK4xY,SAAW5sY,EAGpB21qB,OAAOlimB,GACH,MAAQ8zT,WAAapG,QAAQpnX,WAAY/e,KACzC,IAAI2D,EAAQwiY,EAAKpnX,EAAQ67pB,WAAa,cAAgB,YAAYnimB,GAC9DypT,EAAiBv+X,EAEjBob,EAAQ3D,OACR8mX,EAAiBliY,KAAKy6qB,cAAcrjG,KAAKr4jB,EAAQ3D,OAAQzX,GAClDwiY,EAAKpnX,QAAQjX,OAASkpE,IAC7BkxT,EAAiBliY,KAAKy6qB,cAAcrjG,KAAKjxM,EAAKpnX,QAAQyrX,OAAOqK,YAAY1O,EAAKpnX,QAAQq8X,UAAWz3Y,IAGrG3D,KAAKwN,KAAK,CACNirE,MAAOA,EACPxqE,OAAQjO,KAAK66qB,YACbtuS,UAAWvsY,KAAKusY,UAChB5oY,MAAOu+X,EACP0P,SAAU5xY,KAAK4xY,SACfC,UAAW7xY,KAAKusY,UAAUpG,KAAK0L,WAChC7xY,KAAK+e,SAGZ8+C,OACI79D,KAAKsgpB,aAAavwU,OAAOm4V,GAAc,CACnC37R,UAAWvsY,KAAKusY,UAChBqF,SAAU5xY,KAAK4xY,SACfC,UAAW7xY,KAAKusY,UAAUpG,KAAK0L,YAIvCgpS,YACI,MAAQtuS,YAAWxtX,SAAWmrB,WAAUs7G,YAAcxlJ,KAChDgM,GAAYugY,EAAUpG,KAAKpnX,QAAQ/S,SACnC++oB,EAAUx+Q,EAAU70T,KAAK44E,OAC/B,IAAIy0T,GAAiBg5C,GAAetlb,GAEpC,OAAIzsE,GACA+4c,GAAkB0zL,EAClBhhb,IAAiB+gb,GACbz6I,GAAgBs7I,GAChB5gkB,GAAQsykB,EAAQ76H,aAAa13e,UAAU,EAAGgtG,KAE1Cu4W,GAAgBy6I,EAChB//jB,GAAQsykB,EAAQzsJ,UAAU9ld,UAAU,GAAIgtG,MAG5Cu4W,GAAgB06I,EAChBhhb,IAAiB47Y,IACbtuJ,GAAkBuuJ,GAClB76hB,GAAQsykB,EAAQzsJ,UAAU9ld,WAAWgtG,EAAS,KAE9Cu/T,GAAkBsuJ,GAClB56hB,GAAQsykB,EAAQ96H,WAAWz3e,UAAUgtG,EAAS,KAI/C,CACH/sE,MAAOA,GACPtb,MAAO,CACHpxD,WAAYg5c,GACZ/4c,SAAU+xf,MAM1B+kJ,GAAkBg4B,GAAkB,CAChCt1hB,QAAS,KAGb,SAAes1hB,GCxFf,iBAAwB34B,GACpBripB,YAAYwgpB,EAAcn6Q,EAAMpnX,GAC5BS,MAAMT,GAEN/e,KAAKmmY,KAAOA,EACZnmY,KAAK46qB,WAAaz0S,aAAgBosR,GAElC,MAAMnmiB,EAAiBpsH,KAAK+e,QAAQg4B,QAEhCq1E,EAAe6nN,UACfj0U,KAAK+2C,QAAU,IAAI+joB,GAAiBx6B,EAActgpB,KAC9Cy6oB,GAAW,GAAIruhB,EAAgB,CAAEwujB,WAAY56qB,KAAK46qB,eAK9DD,OAAOlimB,GACHz4E,KAAKy4E,MAAQA,EACbz4E,KAAK+6qB,WACL/6qB,KAAK03E,KAAKu8P,SAAQ,GAEdj0U,KAAK+2C,SACL/2C,KAAK+2C,QAAQ4joB,OAAOlimB,GAI5B5a,OACI79D,KAAK03E,KAAKu8P,SAAQ,GAEdj0U,KAAK+2C,SACL/2C,KAAK+2C,QAAQ8mB,OAIrBk9mB,WACI,MAAQ50S,OAAM1tT,SAAUz4E,KAClBgM,EAAWm6X,EAAKpnX,QAAQ/S,SACxBiwH,EAAMj8H,KAAKg7qB,SACXjhmB,EAAM/tE,EAAWlG,GAAIiC,GACrB6gpB,GAAY,IAAIt1kB,KAAW2oD,EAAI9mD,GAAI8mD,EAAIpnD,IAC7C,IAAIg1kB,GAQJ,GALIA,GADJoE,EACc,IAAI36kB,KAAW2oD,EAAIxmD,GAAIwmD,EAAIpnD,IAE3B,IAAIvB,KAAW2oD,EAAI9mD,GAAI8mD,EAAI4ghB,IAGrCpkkB,EACA,GAAIz4E,KAAK46qB,WAAY,CACjB,MAAMlsB,GAAOvoR,EAAKqmR,QAAQrmR,EAAK4tR,mBAAmBt7kB,IAClDmwkB,GAAU7ukB,GAAO8vkB,GAAQ9vkB,GAAO20kB,GAAKr/kB,SAAS0K,QAE9C6ukB,GAAU7ukB,GAAO8vkB,GAAQ9vkB,GAAOtB,EAAMsB,GAI9C/5E,KAAKi8H,IAAMA,EAEXj8H,KAAK03E,KAAK+pK,OAAOmna,IAAWlna,OAAOmoa,IAGvCmxB,SACI,MAAM70S,EAAOnmY,KAAKmmY,KACZhjI,EAAOgjI,EAAK6T,KAAK72I,KACjBp9P,EAASo9P,EAAKp9P,OACdiG,EAAWm6X,EAAKpnX,QAAQ/S,SACxBiwH,EAAMkqQ,EAAK4kR,UAAUv7hB,QACrBz1C,GAAM/tE,EAAWjE,GAAIjC,GAC3B,IAAIm1qB,GAEJ,QAAStsqB,GAAI,EAAGA,GAAI5I,EAAQ4I,KAAK,CAC7B,MAAMusqB,GAAc/3a,EAAKx0P,IACrBusqB,GAAYn8pB,QAAQ/S,WAAaA,IAC5BivqB,GAGDA,GAAY3gnB,KAAK4gnB,GAAYnwB,WAF7BkwB,GAAcC,GAAYnwB,UAAUv7hB,SAOhDyM,SAAIliD,GAAM,GAAKkhmB,GAAYlhmB,GAAM,GACjCkiD,EAAIliD,GAAM,GAAKkhmB,GAAYlhmB,GAAM,GAE1BkiD,EAGXgiN,eACIz+T,MAAMy+T,eAEN,MAAMl/T,EAAU/e,KAAK+e,QACrB/e,KAAK03E,KAAO,IAAI2kE,KAAU,CACtBwF,OAAQ,CACJtC,MAAOxgI,EAAQwgI,MACf7oI,MAAOqI,EAAQrI,MACftM,QAAS2U,EAAQ3U,QACjB43P,SAAUjjP,EAAQijP,UAEtBiyE,SAAS,IAGbj0U,KAAK+6qB,WACL/6qB,KAAK4jQ,OAAO1yO,OAAOlxB,KAAK03E,MAG5B+tP,UACQzlU,KAAK+2C,SACL/2C,KAAK+2C,QAAQ0uR,UAGjBjmT,MAAMimT,WAIdq9U,GAAkBq4B,GAAW,CACzB57hB,MAAOg5f,EACP7hoB,MAAO,EACPu6I,QAAQ,EACRl6G,QAAS,CACLk9R,SAAS,KAIjB,SAAeknW,GC/Hf,iBAA6Bh5B,GACzBripB,YAAYif,EAASi7X,GACjBx6X,MAAMT,GACN/e,KAAKg6Y,KAAOA,EAGhBohS,aACI,MAAM58mB,EAAWx+D,KAAKw+D,SAChBz4D,EAASy4D,EAASz4D,OAExB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IACxB,IAAiC,IAA7B6vD,EAAS7vD,GAAGoQ,QAAQ0+X,KACpB,OAAO,EAGf,OAAO,EAGX49R,WACI,OAAOr7qB,KAAKg6Y,KAAKshS,YAGrBr9V,eAKI,GAJAj+U,KAAK4jQ,OAAS,IAAIvnH,KAAW,CACzB4U,OAAQ,IAGRjxJ,KAAKo7qB,aAAc,CAEnB,MAAMG,GADUv7qB,KAAKyuqB,QAAUzuqB,KAAKq7qB,YACX59B,SACnByzB,EAAW70hB,cAAmBk/hB,GACpCtyB,GAAiBioB,GAEjBlxqB,KAAK4jQ,OAAO65I,KAAKyzR,GACjBlxqB,KAAKw7qB,gBAIbt6B,YACI,OAAOlhpB,KAGXw7qB,eACI,MAAQh9mB,SAAUs6U,EAAQ21R,WAAYzuqB,KAEtC,QAAS2O,EAAI,EAAGA,EAAImqY,EAAO/yY,OAAQ4I,IAAK,CACpC,MAAMmxE,EAASg5T,EAAOnqY,GAAGmxE,QAAU,GAC7B/5E,EAAS+5E,EAAO/5E,OAEtB,QAASy7F,GAAI,EAAGA,GAAIz7F,EAAQy7F,KAAK,CAC7B,MAAM/oB,GAAQqH,EAAO0hB,IACrB,GAAI/oB,KAA2B,IAAlBA,GAAMw7P,SAAqBx7P,GAAMi2lB,aAAej2lB,GAAMi2lB,YAAYD,GAC3E,GAAIh2lB,GAAMk2lB,eACNl2lB,GAAMk2lB,qBACH,CACH,MAAQvpqB,SAAO8wK,SAASz9F,GAEpBrzE,IAASA,GAAM2Z,QAAQk1T,UACnB7uU,GAAM0uqB,gBACN1uqB,GAAM0uqB,eAAerF,GAEzBrpqB,GAAM2Z,QAAQiioB,QAAS,GAGvB9qe,IAAQA,GAAKn3J,QAAQk1T,UACrB/9J,GAAKn3J,QAAQiioB,QAAS,MAQ9Cv7U,UACIjmT,MAAMimT,iBAECzlU,KAAKq8W,QAIpBo/T,GAAep7pB,UAAU+goB,aAAc,EAEvC,SAAeq6B,GC/Ef,iBAAmB14B,GACfjjpB,YAAYif,GACRS,MAAMT,GAEN/e,KAAKkF,GAmMb,cACI,MAAO,OAASw2qB,KApMFC,GAEV37qB,KAAKsqpB,cAELtqpB,KAAK4e,QAAU,IAAIujoB,GAEnBnipB,KAAKyhqB,eAAiB,IAAIga,GAAe,GAAIz7qB,MAC7CA,KAAKkxB,OAAOlxB,KAAK4e,SAEjB5e,KAAKmjQ,KAAO,GACZnjQ,KAAK84Y,OAAS,GAGlBwxQ,cACI,IAAI5C,EAAe1npB,KAAK+e,QAAQ6tC,MAC5Bs+G,GAASw8e,KACTA,EAAejN,GAAW,GAAIiN,EAAc,CACxCvqlB,MAAOuqlB,EAAax9mB,SACpBA,SAAUmvmB,MAIlBr5oB,KAAK4sD,MAAQu1J,cAAiBulc,EAAc1npB,KAAM47qB,GAAKv7pB,UAAUtB,QAAQ6tC,OAG7EivnB,WAAW11S,GACPnmY,KAAK4e,QAAQsS,OAAOi1W,GACpBnmY,KAAKmjQ,KAAK19P,KAAK0gY,GACfA,EAAK6T,KAAOh6Y,KAGhB87qB,aAAa31S,EAAMt9S,GACf7oF,KAAK4e,QAAQsS,OAAOi1W,GACpBnmY,KAAKmjQ,KAAKr/O,OAAO+kE,EAAK,EAAGs9S,GACzBA,EAAK6T,KAAOh6Y,KAGhB+7qB,YAAYxyV,GACJvpV,KAAKyhqB,eAAeplT,SAAWr8W,KAAK4e,SACpC5e,KAAK4e,QAAQsS,OAAOlxB,KAAKyhqB,gBAG7BzhqB,KAAK84Y,OAAOrzY,KAAK8jV,GACjBvpV,KAAKyhqB,eAAevwoB,OAAOq4T,GAC3BA,EAAMywD,KAAOh6Y,KAGjBy/E,QACI,MAAM0lT,EAAWnlY,KAAKq8W,OAEtB,GAAI8oB,EAAU,CACV,QAASx2X,EAAI,EAAGA,EAAI3O,KAAKmjQ,KAAKp9P,OAAQ4I,IAClCw2X,EAAS62S,WAAWh8qB,KAAKmjQ,KAAKx0P,IAGlC,QAASA,EAAI,EAAGA,EAAI3O,KAAK84Y,OAAO/yY,OAAQ4I,IACpCw2X,EAAS82S,YAAYj8qB,KAAK84Y,OAAOnqY,IAIzC3O,KAAKmjQ,KAAO,GACZnjQ,KAAK84Y,OAAS,GAEd94Y,KAAK4e,QAAQ6mT,UACbzlU,KAAK4e,QAAQ4/C,SAAW,GACxBx+D,KAAKyhqB,eAAejjmB,SAAW,GAGnC0hlB,OAAOpD,GAEH,IAAIl+nB,EACA04G,GAAKt3H,KAAKw+D,YAAcx+D,KAAK4e,UAC7BA,EAAU5e,KAAKw+D,SAAS1rC,OAG5BtT,MAAM0goB,OAAOpD,GAETl+nB,GACA5e,KAAKw+D,SAAS/4D,KAAKmZ,GAGnB5e,KAAK4sD,QACL5sD,KAAK0ipB,WAAW7tkB,IAAM70E,KAAK4sD,MAAMqvE,IAAI1xH,UAI7Cs4oB,cACI,MAAM14oB,EAAQqV,MAAMqjoB,cACpB14oB,SAAM8mJ,QAAS,GAER9mJ,EAGX02oB,iBACQ7gpB,KAAK+e,QAAQk1T,SACbj0U,KAAK4spB,kBAIb1L,YACI,OAAOlhpB,KAGXihpB,WACI,OAAOjhpB,KAGX4spB,kBACI,MAAMzpZ,EAAOnjQ,KAAKmjQ,KACZ+4a,EAAU/4a,EAAKxvN,OAAO3zC,KAAKq8W,OAAOl5G,MAClCg5a,EAAa,GACbC,EAAa,GAInB,QAASztqB,EAAI,EAAGA,EAAIw0P,EAAKp9P,OAAQ4I,IAAK,CAClC,MAAMw3X,GAAOhjI,EAAKx0P,GACZ3C,GAAWm6X,GAAKpnX,QAAQ/S,SACxBs/oB,GAAYt/oB,GAAWmwqB,EAAaC,EAC1C,QAAS56kB,GAAI,EAAGA,GAAI06kB,EAAQn2qB,OAAQy7F,KAChC,GAAyB,IAArB8pjB,GAAUvlpB,OAAc,CACxB,MAAMsmpB,GAAU6vB,EAAQ16kB,IACpBx1F,KAAaqgpB,GAAQttoB,QAAQ/S,UAC7BklB,GAAOo6nB,GAAWnlR,GAAKymR,gBAAgBP,OAO3Dr4lB,UACIh0D,KAAK4jQ,OAAOtkN,QAEZt/C,KAAK4e,QAAQy9V,OAAS,KACtBr8W,KAAK4e,QAAQqjoB,eAAiBjipB,KAAKiipB,eAAep8nB,KAAK7lB,MACvDA,KAAK4e,QAAQ6hoB,eACbzgpB,KAAK4e,QAAQy9V,OAASr8W,KAElBA,KAAK4sD,OACL5sD,KAAK4jQ,OAAO1yO,OAAOlxB,KAAK4sD,MAAMg3M,QAGlC5jQ,KAAK4jQ,OAAO1yO,OAAOlxB,KAAK4e,QAAQglP,QAEhC5jQ,KAAK6gpB,iBACL7gpB,KAAKq8qB,eAGTf,YACI,MAAMn4a,EAAOnjQ,KAAKmjQ,KACZp9P,EAASo9P,EAAKp9P,OACdu1qB,EAAY,IAAIr+B,GAEtB,QAAS9ymB,EAAM,EAAGA,EAAMpkC,EAAQokC,IAAO,CACnC,MAAMg8V,EAAOhjI,EAAKh5N,GACZmyoB,GAAiBn2S,EAAKpnX,QAAQ/S,SAAWlG,GAAIiC,GAC7CgjpB,GAAU5kR,EAAK4kR,UACrBuwB,EAAUgB,GAAiB,GAAKvxB,GAAQuxB,GAAiB,GACzDhB,EAAUgB,GAAiB,GAAKvxB,GAAQuxB,GAAiB,GAG7D,GAAqB,IAAjBhB,EAAU7lmB,GAAU,CACpB,MAAMymmB,EAAUl8qB,KAAKq8W,OAAOl5G,KACtBp9P,EAASm2qB,EAAQn2qB,OAEvB,QAASokC,GAAM,EAAGA,GAAMpkC,EAAQokC,KAAO,CACnC,MAAMg8V,GAAO+1S,EAAQ/xoB,IACrB,IAAKg8V,GAAKpnX,QAAQ/S,SAAU,CACxB,MAAM++oB,GAAU5kR,GAAK4kR,UACrBuwB,EAAUnmmB,GAAK41kB,GAAQ51kB,GACvBmmmB,EAAU7lmB,GAAKs1kB,GAAQt1kB,KAInC,OAAO6lmB,EAGX7M,UACI,OAAOzuqB,KAAKyhqB,eAAegN,QAG/B4N,eACI,MAAM1jX,EAAU34T,KAAKqgpB,aACjB1nV,GACAA,EAAQoX,OhD/GA,agD+GoB,CACxBiqE,KAAM,IAAIuiS,GAAUv8qB,MACpB4jB,MAAO5jB,KAAK03lB,UACZ1ylB,KAAMhF,KAAK+e,QAAQ/Z,QAMnC,IAAI02qB,GAAK,EAMTE,GAAKv7pB,UAAU+goB,aAAc,EAE7B0B,GAAkB84B,GAAM,CACpB3qhB,QAAQ,EACRmxf,aAAa,EACbx1lB,MAAO,CACHuQ,MAAOk2iB,IAEXp/R,SAAS,IAGb,SAAe2nW,GC9NA,YAAyB3xoB,GAAOv1B,GAC3B,OAAZA,GACAu1B,GAAMxkC,KAAKiP,GCAJ,YAAwBysP,GAAQj+I,EAAQt/F,GACnD,MAAMqwT,EAAU/wN,EAAO+wN,QACvB,GAAI22R,GAAQ32R,GACR,OAAOA,EAGX,MAAMs3D,EAAkBpqI,GAAOoqI,gBAC/B,OAAIA,EACOA,EAAgB3nX,QAD3B,ECLW,YAAsBu9O,IACjC,MAAMruP,EAAOquP,GAAOruP,KACdgtE,EAAS,GACf,IAAI2qH,EAAM,EACN7yF,EAAQ,EAEZ,QAASztE,EAAM,EAAGA,EAAMr3B,EAAK/M,OAAQokC,IAAO,CACxC,MAAM64mB,GAAYqgB,qBAA+Blia,GAAQh3N,GACzD,IAAIxmC,GAAQq/oB,GAAUsf,YAAY3+pB,MAG9BinJ,GAASjnJ,MACTA,GAAQghC,WAAWhhC,KAGvBq9J,GAAar9J,KACTq/oB,GAAU/uU,SAA4D,IAAlDuoW,GAAer7a,GAAQ6hZ,GAAU9/hB,OAAQ/4E,GAE7D64mB,GAAUr/oB,MAAQuJ,KAAKiN,IAAIxW,IAC3Bm8E,EAAOr6E,KAAKu9oB,IAERA,GAAU/uU,UACVxpI,GAAOu4c,GAAUr/oB,OAGP,IAAVA,IACAi0G,KAGJ93B,EAAOr6E,KAAK,MAIpB,MAAO,CACHgJ,MAAOg8L,EACP3qH,OAAQA,EACR83B,MAAOA,GCxCA,YAA0BzlF,GAAGD,GACxC,OAAIC,IAAKD,EACEC,GAAEkJ,gBAAkBnJ,EAAEmJ,cAG1BlJ,KAAMD,ECHF,YAA4BivO,GAAQg2B,GAC/C,MAAM5kR,EAAS,GAETg7X,EAAc,GAAG55V,OAAOwjP,GAC9B,QAAShtP,EAAM,EAAGA,EAAMg3N,GAAOp7P,OAAQokC,IAAO,CAC1C,MAAMsioB,EAAgBtra,GAAOh3N,GACzB0zmB,GAAQ4uB,EAAc3kqB,KAAMylY,IAC5Bh7X,EAAO9M,KAAKgnqB,GAIpB,OAAOl6pB,ECVI,YAAsBs4C,GAAO3d,EAAK8pW,GAC7C,GAAY,OAAR9pW,EACA,OAAOA,EAGX,MAAMr6B,EAAM,SAAWg4C,GACvB,IAAIlnD,EAAQupC,EAAIr6B,GAEhB,OAAKlP,IACDA,EAAQ22a,GAAUtjC,EAAa8iD,GAAOjvY,GAAPivY,CAAoB5sZ,IACnDA,EAAIr6B,GAAOlP,GAGRA,ECZI,YAAoB82pB,GAAagiB,GAC5C,MAAM30qB,EAAO2ypB,GAAY3ypB,KACnB40qB,EAAeD,aAA0B1jqB,KAE/C,OAASjR,GAAQ40qB,GAAiBC,GAAiB70qB,EAAMkpE,GCR9C,YAA2B/mC,IACtC,OAAwB,IAAjBA,GAAMlkC,OAAekkC,GAAM,GAAKA,GCG3C,MAAM2yoB,GAAa,QAUnB,YAAkBz7a,GAAQnuP,GAEtB,MAAMsvpB,EAAcp/iB,GADLmgjB,kBAA+Blia,GAAQ,KAAMnuP,GACjCsvpB,YAE3B,QAASz3mB,KAASy3mB,EACd,GAAIyI,GAAoBzI,EAAYz3mB,IAChC,OAAO,EAKnB,aAAoB79B,SAAOqkC,MAAK5e,MAAKjkC,MAAKsrb,SAAQ82L,UAASzvX,YACvD,IAAI07a,GAAeC,GACf3yoB,GAAMnd,GACV,GACImd,IAAOknB,EAGHu/jB,EAAQzmlB,MACR2yoB,GAAWhjP,EAAO3vZ,IAClB0yoB,GAAgBrkQ,GAASr3K,GAAQ27a,GAAS9pqB,aAEzCy/B,GAAOtI,IAAOA,IAAO37B,IAAQquqB,IAEtC,GAAIA,GACA,OAAOC,GAIA,YAAgC37a,GAAQv5L,EAAOgwC,EAAOkiV,EAAQ82L,GACzE,MAAQn+kB,MAAKjkC,QAAQo5D,EACfm1mB,GAActqoB,EAAM,GAAKA,EAAMmlE,EAC/BolkB,GAAcxuqB,GAAM,EAAIopG,EAE9B,GAAImlkB,IAAeC,GAAa,CAC5B,MAAMp0S,GA3Cd,YAA6BznI,IACzB,OAAIA,GAAOynI,cACAznI,GAAOynI,cAGXg0S,GAAWphQ,KAAKr6K,GAAOr5P,OAASq5P,GAAO97O,MAAQ2/oB,GAAOC,GAsCnCoL,CAAoBlva,IAC1C,IAAI87a,GAAUC,GACd,GAAIt0S,KAAkBq8R,GACd8X,KACAE,GAAWnjP,EAAOrnZ,EAAM,IAGxBuqoB,KACAE,GAAWpjP,EAAOtrb,GAAM,QAEzB,CACH,IAAIsuqB,GAAUD,GACVE,KACAD,GAAWhjP,EAAOrnZ,EAAM,GACxBoqoB,GAAgBrkQ,GAASr3K,GAAQ27a,GAAS9pqB,MAYtCiqqB,GAXCJ,GAWUC,GAVAK,GAAS,CAChBnwpB,MAAOylB,EACP4e,KAAK,EACL5e,IAAK,EACLjkC,IAAKopG,EAAQ,EACbkiV,OAAQA,EACR82L,QAASA,EACTzvX,OAAQA,MAOhB67a,KACAF,GAAWhjP,EAAOtrb,GAAM,GACxBquqB,GAAgBrkQ,GAASr3K,GAAQ27a,GAAS9pqB,MAYtCkqqB,GAXCL,GAWUC,GAVAK,GAAS,CAChBnwpB,MAAOxe,GACP6iD,IAAK,EACL5e,IAAK,EACLjkC,IAAKopG,EAAQ,EACbkiV,OAAQA,EACR82L,QAASA,EACTzvX,OAAQA,MAQpB87a,KACA97a,GAAOiya,oBAAsB6J,IAG7BC,KACA/7a,GAAOi8a,oBAAsBF,KC7FzC,iBAA2B/6B,GACvBripB,YAAYqhQ,EAAQpiP,EAASuhoB,GACzB9goB,MAAMT,GAEN/e,KAAKmqpB,WAAWhpZ,EAAQpiP,GACxB/e,KAAKmhQ,OAASA,EACdnhQ,KAAKq9qB,aACLr9qB,KAAK84Y,OAAS,GACd94Y,KAAK+e,QAAQkuB,OAASjtC,KAAK+e,QAAQkuB,QAAU,GAC7CjtC,KAAK+e,QAAQkuB,OAAOulB,MAAQ,GAC5BxyD,KAAKmjQ,KAAO,GACZnjQ,KAAKs9qB,WAAa,GAClBt9qB,KAAKsgpB,aAAeA,EACpBtgpB,KAAKyxf,gBAAkB1ye,EAEvB/e,KAAKu9qB,cACLv9qB,KAAK28G,SACL38G,KAAKw9qB,mBAGTrzB,cAEAkzB,aACI,MAAMl8a,EAASnhQ,KAAKmhQ,OAEpB,QAASxyP,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAC/BwyP,EAAOxyP,GAAGiV,MAAQjV,EAI1B4uqB,cACI,MAAM71B,EAAe1npB,KAAK+e,QAAQ6tC,OAAS,GACrCs4U,EAAellY,KAAK+e,QAAQmmX,aAC5Bu4S,EAAcz9qB,KAAK+e,QAAQkmX,OAAS,GACpCy4S,EAAcxwqB,KAAKsB,IAAIivqB,EAAY13qB,OAAQ,GAC3Ck/X,EAAQ,GAERo9E,GAAWo4L,GAAW,CACxB7tlB,MAAO,CACH2yF,MAAOmogB,EAAanogB,QAEzB2lP,GAEH,QAASv2X,GAAI,EAAGA,GAAI+uqB,EAAa/uqB,KAAK,CAClC,MAAMoQ,GAAU07nB,GAAW,GAAIp4L,GAAUo7N,EAAY9uqB,KACjDi8I,GAAS7rI,GAAQ6tC,SACjB7tC,GAAQ6tC,MAAQ6tlB,GAAW,CAAE3voB,KAAMiU,GAAQ6tC,OAASy1Z,GAASz1Z,QAGjE,MAAM+wnB,GAAc,IAAI/B,GAAK78pB,IAC7B4+pB,GAAYjmF,UAAY/olB,GAExBs2X,EAAMx/X,KAAKk4qB,IACX39qB,KAAKkxB,OAAOyspB,IAGhB39qB,KAAKilY,MAAQA,EAGjB24S,iBAAiBz3S,GACb,OAAOA,EAAKpnX,QAAQwtX,UAGxBixS,iBAAiBv4S,EAAQjlY,KAAKilY,OAC1B,QAASt2X,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMqrY,EAAO/U,EAAMt2X,GACnB,QAAS6yF,EAAI,EAAGA,EAAIw4S,EAAK72I,KAAKp9P,OAAQy7F,IAAK,CACvC,MAAM2kS,EAAO6T,EAAK72I,KAAK3hK,GACjBziF,GAAU/e,KAAK49qB,iBAAiBz3S,GACtC,GAAIpnX,IAAWA,GAAQk1T,QAAS,CAC5B,MAAM4pW,GAAmB,IAAI1C,GAAUn7qB,KAAKsgpB,aAAcn6Q,EAAMpnX,IAEhE/e,KAAKs9qB,WAAW73qB,KAAKo4qB,IACrB7jS,EAAKp7X,QAAQsS,OAAO2spB,OAMpCC,iBAAiB9jS,GACb,MAAMsjS,EAAat9qB,KAAKs9qB,WAClBn6a,EAAO62I,EAAK72I,KAElB,QAASx0P,EAAI2uqB,EAAWv3qB,OAAS,EAAG4I,GAAK,EAAGA,IACxC,QAAS6yF,EAAI,EAAGA,EAAI2hK,EAAKp9P,OAAQy7F,IAC7B,GAAI87kB,EAAW3uqB,GAAGw3X,OAAShjI,EAAK3hK,GAAI,CAChC87kB,EAAWx5pB,OAAOnV,EAAG,GACrB,OAMhBovqB,iBACI,MAAMT,EAAat9qB,KAAKs9qB,WACxB,QAASnzoB,EAAM,EAAGA,EAAMmzoB,EAAWv3qB,OAAQokC,IACvCmzoB,EAAWnzoB,GAAK0zB,OAIxBmgnB,SAASh5qB,GACL,MAAMigY,EAAQjlY,KAAKilY,MACnB,IAAIg5S,EAEJ,QAAStvqB,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAC9B,GAAIs2X,EAAMt2X,GAAGoQ,QAAQ/Z,OAASA,EAAM,CAChCi5qB,EAAeh5S,EAAMt2X,GACrB,MAIR,OAAOsvqB,GAAgBh5S,EAAM,GAGjCi5S,cAAczlmB,GACV,MAAMwsT,EAAQjlY,KAAKilY,MACnB,IAAIg5S,EAEJ,QAAStvqB,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAC9B,GAAIs2X,EAAMt2X,GAAGstH,IAAIlrB,cAAct4B,GAAQ,CACnCwlmB,EAAeh5S,EAAMt2X,GACrB,MAIR,OAAOsvqB,EAGXpC,WAAW11S,GACMnmY,KAAKg+qB,SAAS73S,EAAKpnX,QAAQi7X,MAEnC6hS,WAAW11S,GAChBnmY,KAAKmjQ,KAAK19P,KAAK0gY,GACfA,EAAKhB,SAAWnlY,KAGpBg8qB,WAAWmC,GACP,MAAMC,EAAe,GAErB,QAASzvqB,EAAI,EAAGA,EAAI3O,KAAKmjQ,KAAKp9P,OAAQ4I,IAAK,CACvC,MAAMw3X,EAAOnmY,KAAKmjQ,KAAKx0P,GACnBwvqB,IAAiBh4S,EACjBi4S,EAAa34qB,KAAK0gY,GAElBA,EAAK1gE,UAIbzlU,KAAKmjQ,KAAOi7a,EAGhBrC,YAAYxyV,EAAOywD,GACfh6Y,KAAK84Y,OAAOrzY,KAAK8jV,GACjB9xH,EACIuiL,EAAK+hS,YAAYxyV,GAEjBvpV,KAAKkxB,OAAOq4T,GAIpB0yV,YAAYoC,GACR,MAAMC,EAAiB,GAEvB,QAAS3vqB,EAAI,EAAGA,EAAI3O,KAAK84Y,OAAO/yY,OAAQ4I,IAAK,CACzC,MAAM46U,EAAQvpV,KAAK84Y,OAAOnqY,GACtB46U,IAAU80V,EACVC,EAAe74qB,KAAK8jV,GAEpBA,EAAM9jB,UAIdzlU,KAAK84Y,OAASwlS,EAGlBC,YAAYp9a,GACR,MAAMvpJ,EAAQupJ,EAAOp7P,OACfknC,EAASjtC,KAAK+e,QAAQkuB,OACtBu9V,EAASv9V,EAAOu9V,QAAU,GAC1BkC,EAAgBz/V,EAAOy/V,eAAiB,GACxC8xS,GAAsB9xS,EAAclC,QAAU,GAC9C13X,GAAO,GAEb,QAASnE,GAAI,EAAGA,GAAIipG,EAAOjpG,KAAK,CAC5B,MAAM89pB,GAAgBtra,EAAOxyP,IACvB8vqB,IAA0C,IAA1BhS,GAAcx4V,QACpC,IAAsC,IAAlCw4V,GAAc7iS,gBACd,SAGJ,IAAI9+X,GAAO2hqB,GAAcznqB,KACzB,MAAMq1jB,GAAgBokH,GAAgBlwS,GAAY/D,GAAU+D,GAAYiwS,KAAwBjwS,GAAY/D,GACxG6vL,KACAvvjB,GAAOuvjB,GAAc,CACjBvvjB,KAAM0ta,GAAS1ta,IAAQA,GAAO,GAC9Bq2P,OAAQsra,MAIhB,MAAMpqN,GAAWoqN,GAAcN,UAC/B,IAKIuS,GAAkBC,GALlBp/hB,GAAQkthB,GAAclthB,MACtBw6f,GAAWx6f,KAAU8iU,KACrB9iU,GAAQ8iU,GAAS9iU,OAIjBk/hB,IACAC,GAAmB,GACnBC,GAAcp/hB,KAEdm/hB,GAAmB,CACfn/hB,MAAOi/hB,GAAoBj/hB,MAC3B8F,KAAMm5hB,GAAoBn5hB,MAE9Bs5hB,GAAcjyS,EAAcrmD,QAAQ9mM,OAGpCi5R,GAAS1ta,KAAkB,KAATA,IAClBgI,GAAKrN,KAAK,CACNqF,KAAMA,GACN0/X,OAAQk0S,GACRC,YAAaA,GACbx9a,OAAQsra,GACR98lB,OAAQ8umB,KAKpBvtpB,GAAO+b,EAAOulB,MAAO1/C,IAGzB8rqB,UAAU35S,GACN,MAAM45S,EAAQ,GACRC,EAAQ,GAEd,QAASC,EAAS,EAAGA,EAAS95S,EAAMl/X,OAAQg5qB,IAAU,CAClD,MAAMC,EAAW/5S,EAAM85S,GAAQ57a,KAC/B,QAAS87a,GAAS,EAAGA,GAASD,EAASj5qB,OAAQk5qB,KAAU,CACrD,MAAM94S,GAAO64S,EAASC,IAClB94S,GAAKpnX,QAAQ/S,SACb8yqB,EAAMr5qB,KAAK0gY,IAEX04S,EAAMp5qB,KAAK0gY,KAKvB,MAAO,CAAEx8X,EAAGk1qB,EAAO/qnB,EAAGgrnB,EAAOI,IAAKL,EAAMlroB,OAAOmroB,IAGnDK,oBACI,MAAMh+a,EAASnhQ,KAAKmhQ,OACdi+a,EAAe,GAErB,QAASzwqB,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAAK,CACpC,MAAM89pB,EAAgBtra,EAAOxyP,GACvBqrY,EAAOh6Y,KAAKq/qB,eAAe5S,GAE7B2S,EAAaplS,GACbolS,EAAaplS,GAAMv0Y,KAAKgnqB,GAExB2S,EAAaplS,GAAQ,CAAEyyR,GAI/B,OAAO2S,EAGXE,oBAAoBn+a,GAChB,MAAM5uP,EAAS,GAEf,QAAS5D,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAAK,CACpC,MAAM89pB,EAAgBtra,EAAOxyP,IACC,IAA1B89pB,EAAcx4V,SACd1hU,EAAO9M,KAAKgnqB,GAIpB,OAAOl6pB,EAGX2toB,OAAOpD,GACH,MACM73Q,EAAQjlY,KAAKilY,MACb12V,EAAS6umB,GAFCp9oB,KAAK+e,QAAQomX,SAEK52V,QAElCvuC,KAAKi8H,IAAM6ghB,EAAUtthB,QAAQ6thB,MAAM9umB,GACnCvuC,KAAKu/qB,cAELv/qB,KAAKw/qB,eACLx/qB,KAAKy/qB,WAAWx6S,GAChBjlY,KAAK0/qB,aAAaz6S,GAGtBtkP,OAAOskP,GACH,MAAM06S,EAAa,GAAGhsoB,OAAOsxV,GAC7BjlY,KAAKq9qB,aAGL,MAAMvrX,EAAO9xT,KAAK4kX,UACd9yD,GACAA,EAAK8yV,iBAGT,QAASj2oB,EAAI,EAAGA,EAAIgxqB,EAAW55qB,OAAQ4I,IACnC3O,KAAK89qB,iBAAiB6B,EAAWhxqB,IACjCgxqB,EAAWhxqB,GAAG8wE,QAGlBz/E,KAAK28G,OAAOgjkB,GACZ3/qB,KAAKw/qB,eACLx/qB,KAAKy/qB,WAAWz/qB,KAAKilY,OACrBjlY,KAAK0/qB,aAAaC,GAElB3/qB,KAAKw9qB,iBAAiBmC,GAEtB,QAAShxqB,EAAI,EAAGA,EAAIgxqB,EAAW55qB,OAAQ4I,IACnCgxqB,EAAWhxqB,GAAGqlD,UAItBgnmB,mBAAmB70R,EAAMy5S,GACrB,MAAM7gqB,EAAUonX,EAAKpnX,QACf8gqB,EAAiB,GAAGlsoB,OACtB50B,EAAQi8oB,oBAAsBj8oB,EAAQuwO,mBAEpCwwb,EAAcF,EAAa75qB,OAAS85qB,EAAe95qB,OACnDomC,GAAe0zoB,EAAe,IAAM,EAE1C,QAASlxqB,GAAI,EAAGA,GAAImxqB,EAAanxqB,KAC7BkxqB,EAAep6qB,KAAK0mC,IAGxB,OAAO0zoB,EAGXE,YAAY55S,EAAM65S,EAAYvN,EAAewN,GACzC,MAAMvxB,EAAOvoR,EAAKqmR,QAAQimB,EAAeA,GAAe,GAClDyN,GAAW/5S,EAAKpnX,QAAQgwE,QAAU,EAAI,EACtCkrlB,GAAa+F,EAAWxzB,QAAQyzB,EAAqBA,GAAqB,GAC1EE,GAAaH,EAAWjhqB,QAAQgwE,QAAU,EAAI,EAC9CqxlB,GAAUj6S,EAAKlqQ,IAAIzjF,UACrByhoB,GAAWlyqB,GAAIo4qB,IAAczxB,EAAK3mpB,GAAIm4qB,IACtCjG,GAAWn0qB,GAAIq6qB,IAAczxB,EAAK5opB,GAAIo6qB,KAGtC/5S,EAAK6T,OAASgmS,EAAWhmS,MACzBomS,GAAQ5noB,UAAU,EAAG2tV,EAAK6T,KAAK/9Q,IAAIpnD,GAAKmrmB,EAAWhmS,KAAK/9Q,IAAIpnD,IAGhEsxT,EAAK+5Q,OAAOkgC,IAGhBC,UAAUxB,EAAOC,GACb,MAAMwB,EAAUzB,EAAM,GAChB0B,EAAUzB,EAAM,GAChB0B,EAAmBxgrB,KAAKg7pB,mBAAmBslB,EAASxB,GACpD2B,GAAmBzgrB,KAAKg7pB,mBAAmBulB,EAAS1B,GACpD6B,GAAc,GACdC,GAAe,GACfC,GAAa,GACbC,GAAgB,GAEtB,QAASlyqB,GAAI,EAAGA,GAAImwqB,EAAM/4qB,OAAQ4I,KAAK,CACnC,MAAMw3X,GAAO24S,EAAMnwqB,IACbqrY,GAAO7T,GAAK6T,KACZ8mS,GAAS9mS,GAAK90Y,GACd+uU,IAAmC,IAAzBkyD,GAAKpnX,QAAQk1T,QAGvBhmU,GAAS8yqB,GAAWlC,EAAO7kS,KAASsmS,EAC1C,IAAIU,GAAkBR,EAElBvyqB,KAAWqyqB,IACXU,GAAkBhhrB,KAAKg7pB,mBAAmB/spB,GAAQ6wqB,IAGtD9+qB,KAAK+/qB,YAAY55S,GAAMl4X,GAAQwyqB,GAAiB9xqB,IAAIqyqB,GAAgBryqB,MAEhEw3X,GAAKpnX,QAAQkiqB,WAIbnglB,GAAMqlS,GAAK4kR,UAAU51kB,MAAQ2rB,GAAM7yF,GAAO88oB,UAAU51kB,MAEhDurmB,GAAYI,KACZ36S,GAAK+5Q,OAAO/5Q,GAAKlqQ,IACZihhB,QAAQwjC,GAAYI,IAAQ7kjB,IAAKo3e,IACjC76jB,WAAW2tV,GAAKpnX,QAAQwvB,OAAQ,IAIrC0lS,KACAysW,GAAYI,IAAU36S,KAI1BrlS,GAAMqlS,GAAK4kR,UAAUt1kB,MAAQqrB,GAAM7yF,GAAO88oB,UAAUt1kB,MAE/C0wT,GAAK+6S,YACN/6S,GAAKpnX,QAAQyrX,OAAOgQ,QAAUrU,GAAKpnX,QAAQyrX,OAAOgQ,OAClDrU,GAAK+6S,WAAY,GAGrBlhrB,KAAK+/qB,YAAY55S,GAAMl4X,GAAQwyqB,GAAiB9xqB,IAAIqyqB,GAAgBryqB,KAGhEgyqB,GAAaG,KACb36S,GAAK+5Q,OAAO/5Q,GAAKlqQ,IACZihhB,QAAQyjC,GAAaG,IAAQ7kjB,IAAKq3e,IAClC96jB,UAAU2tV,GAAKpnX,QAAQwvB,OAAQ,IAIpC0lS,KACA0sW,GAAaG,IAAU36S,KAIrB,IAANx3X,IAAW4xqB,EAAQvmS,OAAS7T,GAAK6T,OACjC7T,GAAK+2Q,QAAQqjC,GACbp6S,GAAK+5Q,OAAO/5Q,GAAKlqQ,OAIzB,QAASttH,GAAI,EAAGA,GAAIkwqB,EAAM94qB,OAAQ4I,KAAK,CACnC,MAAMw3X,GAAO04S,EAAMlwqB,IACbqrY,GAAO7T,GAAK6T,KACZ8mS,GAAS9mS,GAAK90Y,GACd+uU,IAAmC,IAAzBkyD,GAAKpnX,QAAQk1T,QAGvBhmU,GAAS8yqB,GAAWjC,EAAO9kS,KAASumS,EAC1C,IAAIS,GAAkBP,GAClBxyqB,KAAWsyqB,IACXS,GAAkBhhrB,KAAKg7pB,mBAAmB/spB,GAAQ4wqB,IAGtD7+qB,KAAK+/qB,YAAY55S,GAAMl4X,GAAQuyqB,EAAiB7xqB,IAAIqyqB,GAAgBryqB,MAEhEw3X,GAAKpnX,QAAQkiqB,WAIbnglB,GAAMqlS,GAAK4kR,UAAUl2kB,MAAQisB,GAAM7yF,GAAO88oB,UAAUl2kB,MAE/CsxT,GAAK+6S,YACN/6S,GAAKpnX,QAAQyrX,OAAOgQ,QAAUrU,GAAKpnX,QAAQyrX,OAAOgQ,OAClDrU,GAAK+6S,WAAY,GAErBlhrB,KAAK+/qB,YAAY55S,GAAMl4X,GAAQuyqB,EAAiB7xqB,IAAIqyqB,GAAgBryqB,KAGhEiyqB,GAAWE,KACX36S,GAAK+5Q,OAAO/5Q,GAAKlqQ,IACZihhB,QAAQ0jC,GAAWE,IAAQ7kjB,IAAKo9gB,IAChC7gmB,UAAU,GAAI2tV,GAAKpnX,QAAQwvB,SAIhC0lS,KACA2sW,GAAWE,IAAU36S,KAIzBrlS,GAAMqlS,GAAK4kR,UAAUlO,GtKrdN,KsKqd+B/7iB,GAAM7yF,GAAO88oB,UAAUlO,GtKrdtD,KsKudXgkC,GAAcC,KACd36S,GAAK+5Q,OAAO/5Q,GAAKlqQ,IACZihhB,QAAQ2jC,GAAcC,IAAQ7kjB,IAAKu8gB,GACnChgmB,UAAU,EAAG2tV,GAAKpnX,QAAQwvB,SAI/B0lS,KACA4sW,GAAcC,IAAU36S,KAItB,IAANx3X,KACAw3X,GAAK+2Q,QAAQojC,GACbn6S,GAAK+5Q,OAAO/5Q,GAAKlqQ,QAK7BkljB,gBAAgBl8S,GACZ,MAAM9hI,EAAOnjQ,KAAK4+qB,UAAU35S,GAAOi6S,IAC7BkB,EAAUgB,GAAaj+a,GAC7B,IAAIqsW,EAAY,EAEhB,QAAS7gmB,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMgvqB,GAAc14S,EAAMt2X,GAEtBgvqB,GAAYx6a,KAAKp9P,OAAS,IAC1BypmB,EAAYtimB,KAAKsB,IACbghmB,EACA4wE,EAAQ1pqB,QAAUinqB,GAAYj7B,WAAWhsoB,UAKrD,GAAkB,IAAd84lB,EACA,QAAS7gmB,EAAI,EAAGA,EAAIw0P,EAAKp9P,OAAQ4I,IAAK,CAClC,MAAMusqB,GAAc/3a,EAAKx0P,GAEpBusqB,GAAYn8pB,QAAQ/S,UACrBkvqB,GAAYh7B,OAAOg7B,GAAYj/iB,IAAIsuR,OAAOilN,EAAW,KAMrE6xE,iBAAiBp8S,GACb,IAAIq8S,EAEJ,QAAS3yqB,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMgvqB,EAAc14S,EAAMt2X,GACpBw0P,EAAOw6a,EAAYx6a,KACnBs9M,GAAYvzc,KAAKsB,IAAI,EAAG4yqB,GAAaj+a,GAAM54P,SAAWozqB,EAAYj7B,WAAWn4oB,UAEnF,GAAkB,IAAdk2c,GAAiB,CACjB,QAASj/W,GAAI,EAAGA,GAAI2hK,EAAKp9P,OAAQy7F,KAAK,CAClC,MAAM05kB,GAAc/3a,EAAK3hK,IAErB05kB,GAAYn8pB,QAAQ/S,UACpBkvqB,GAAYh7B,OACRg7B,GAAYj/iB,IAAIsuR,OAAO,EAAGk2D,KAItC6gO,GAAW,GAInB,OAAOA,EAGXC,QAAQt8S,GACJ,MAAM9hI,EAAOnjQ,KAAK4+qB,UAAU35S,GAAOi6S,IACnC,IAAI5/b,EAAU,EAEd,QAAS3wO,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMgvqB,EAAc14S,EAAMt2X,GACpBqwqB,GAAWrB,EAAYx6a,KACvBq+a,GAAU7D,EAAYj7B,WAE5B,GAAIs8B,GAASj5qB,OAAS,EAAG,CACrB,MAAMq6qB,GAAUgB,GAAapC,IAEvB55hB,GAAUl4I,KAAKsB,IAAIgzqB,GAAQ3smB,GAAKurmB,GAAQvrmB,GAAI2smB,GAAQ3kC,GAAKujC,GAAQvjC,IAGvEv9Z,EAAUpyO,KAAKsB,IAAI8wO,EAASkic,GAAQrsmB,GAAKirmB,GAAQjrmB,IAGjD,QAASqsB,GAAI,EAAGA,GAAIw9kB,GAASj5qB,OAAQy7F,KAAK,CACtC,MAAM05kB,GAAc8D,GAASx9kB,IAE7B05kB,GAAYh7B,OACRg7B,GAAYj/iB,IAAIzjF,UAAU,EAAG4sG,OAM7C,QAASz2I,EAAI,EAAGA,EAAIw0P,EAAKp9P,OAAQ4I,IAAK,CAClC,MAAMusqB,EAAc/3a,EAAKx0P,GAEzBusqB,EAAYh7B,OACRg7B,EAAYj/iB,IAAIzjF,UAAU8mM,EAAS,KAK/Cmgc,WAAWx6S,GACP,MAAM9hI,EAAOnjQ,KAAK4+qB,UAAU35S,GAE5B,QAASt2X,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAC9B3O,KAAKyhrB,eAAex8S,EAAMt2X,IAG1Bw0P,EAAKx5P,EAAE5D,OAAS,GAAKo9P,EAAKrvM,EAAE/tD,OAAS,IACrC/F,KAAKqgrB,UAAUl9a,EAAKx5P,EAAGw5P,EAAKrvM,GAC5B9zD,KAAKmhrB,gBAAgBl8S,GAErBjlY,KAAK0hrB,qBAAqBv+a,GAE1BnjQ,KAAKqgrB,UAAUl9a,EAAKx5P,EAAGw5P,EAAKrvM,GACxB9zD,KAAKmhrB,gBAAgBl8S,IACrBjlY,KAAKqgrB,UAAUl9a,EAAKx5P,EAAGw5P,EAAKrvM,GAGhC9zD,KAAKqhrB,iBAAiBp8S,GACtBjlY,KAAKqgrB,UAAUl9a,EAAKx5P,EAAGw5P,EAAKrvM,GAExB9zD,KAAKqhrB,iBAAiBp8S,IACtBjlY,KAAKqgrB,UAAUl9a,EAAKx5P,EAAGw5P,EAAKrvM,GAGhC9zD,KAAKuhrB,QAAQt8S,IAIrBy8S,qBAAqBC,GACjB,MAAQ18S,SAAUjlY,KACZmjQ,EAAOy+a,GAAY38S,GACzB,IAAI48S,EAEJ,QAAS13oB,EAAM,EAAGA,EAAMg5N,EAAKp9P,OAAQokC,IAE7Bg8V,EADch8V,GACT0gnB,qBACLg3B,GAAU,GAIlB,GAAIA,EAAS,CACT,QAAS13oB,EAAM,EAAGA,EAAM86V,EAAMl/X,OAAQokC,IAClCnqC,KAAKyhrB,eAAex8S,EAAM96V,IAG1Bw3oB,EAAYh4qB,EAAE5D,OAAS,GAAK47qB,EAAY7tnB,EAAE/tD,OAAS,IACnD/F,KAAKqgrB,UAAUsB,EAAYh4qB,EAAGg4qB,EAAY7tnB,GAC1C9zD,KAAKmhrB,gBAAgBl8S,KAKjCw8S,eAAeznS,GACX,MAAM72I,EAAO62I,EAAK72I,KACZp9P,EAASo9P,EAAKp9P,OAEpB,GAAIA,EAAS,EACT,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IACxBw0P,EAAKx0P,GAAGuxoB,OAAOlmQ,EAAK0oQ,YAKhCg9B,aAAaz6S,GACT,MAAM6T,EAAS94Y,KAAK84Y,OACdlhS,EAAQkhS,EAAO/yY,OACfk2H,EAAMj8H,KAAKi8H,IAEjB,QAASttH,EAAI,EAAGA,EAAIipG,EAAOjpG,IAAK,CAC5B,MAAMmzqB,GAAYhpS,EAAOnqY,GAAGqrY,OACvB8nS,IAAajkC,GAAQikC,GAAW78S,KACjC6T,EAAOnqY,GAAGuxoB,OAAOjkhB,IAK7BsjjB,cACI,MAAQtjjB,MAAKgpQ,SAAUjlY,KACjB09qB,EAAcz4S,EAAMl/X,OAC1B,IAAIg8qB,EAAkB9ljB,EAAI1xH,SAEtBy3qB,GAAkB,EAClB7zjB,GAAM8N,EAAIpnD,GAEd,QAASlmE,GAAI,EAAGA,GAAI+uqB,EAAa/uqB,KAAK,CAClC,MAAMgvqB,GAAc14S,EAAMt2X,IACpBpE,GAASozqB,GAAY5+pB,QAAQxU,OAInC,GAFAozqB,GAAY5+pB,QAAQrI,MAAQulH,EAAIvlH,QAE3BinqB,GAAY5+pB,QAAQxU,OAElB,CACH,GAAIA,GAAOuV,SAAWvV,GAAOuV,QAAQ,KAAM,CACvC,MAAMggP,GAAWl8P,SAAS2G,GAAQ,IAAM,IACxCozqB,GAAY5+pB,QAAQxU,OAASu1P,GAAW7jI,EAAI1xH,SAGhDozqB,GAAYz9B,OAAOjkhB,EAAIzM,SAEvBuyjB,GAAmBpE,GAAY5+pB,QAAQxU,YATvCy3qB,KAaR,QAASrzqB,GAAI,EAAGA,GAAI+uqB,EAAa/uqB,KAAK,CAClC,MAAMgvqB,GAAc14S,EAAMt2X,IAErBgvqB,GAAY5+pB,QAAQxU,SACrBozqB,GAAY5+pB,QAAQxU,OAASw3qB,EAAkBC,IAIvD,QAASrzqB,GAAI,EAAGA,GAAI+uqB,EAAa/uqB,KAAK,CAClC,MAAMgvqB,GAAc14S,EAAMt2X,IACpB6yqB,GAAUvljB,EACXzM,QACA8F,KAAK2G,EAAI9mD,GAAIg5C,IAElBwvjB,GAAYz9B,OAAOshC,IAGnBrzjB,IAAOwvjB,GAAY5+pB,QAAQxU,QAInC03qB,gBACI,MAAM9+a,EAAOnjQ,KAAKmjQ,KACZ++a,EAAY/+a,EAAKp9P,OACvB,IAAIk2H,EAEJ,QAASttH,EAAI,EAAGA,EAAIuzqB,EAAWvzqB,IAAK,CAChC,MAAMwzqB,EAAQh/a,EAAKx0P,GAEnB,QAAS6yF,GAAI,EAAGA,GAAI0glB,EAAW1glB,KAAK,CAChC,MAAM4glB,GAAQj/a,EAAK3hK,IAEnB,GAAI2glB,EAAMpjqB,QAAQ/S,WAAao2qB,GAAMrjqB,QAAQ/S,SAAU,CACnD,MAAM++oB,GAAUo3B,EAAMp3B,UAAUv7hB,QAAQl1D,KAAK8nnB,GAAMr3B,WAK/C9uhB,EAHCA,EAGKA,EAAI3hE,KAAKywlB,IAFTA,KAQtB,OAAO9uhB,GAAOj8H,KAAKi8H,IAGvBomjB,cACI,MAAMp9S,EAAQjlY,KAAKilY,MACbzjO,EAAQ,GAEd,QAASr3H,EAAM,EAAGA,EAAM86V,EAAMl/X,OAAQokC,IAClCq3H,EAAM/7J,KAAKw/X,EAAM96V,GAAKmxoB,aAG1B,OAAO95gB,EAGX8ghB,mBAAmBC,GACf,MAAM/ghB,EAAQxhK,KAAKqirB,cACnB,QAASl4oB,EAAM,EAAGA,EAAMq3H,EAAMz7J,OAAQokC,IAClCo4oB,EAAU7hhB,MAAMj7J,KAAK42I,cAAmBmlB,EAAMr3H,GAAKszmB,WAI3D+kC,wBAAwB/pmB,GACpB,MAAM+oF,EAAQxhK,KAAKqirB,cACnB,QAASl4oB,EAAM,EAAGA,EAAMq3H,EAAMz7J,OAAQokC,IAClC,GAAIq3H,EAAMr3H,GAAK4mE,cAAct4B,GACzB,OAAO,EAKnBwlQ,eACIz+T,MAAMy+T,eAEN,MAAMl/T,EAAU/e,KAAK+e,QAAQomX,SAC7B,IAAM/6X,UAAS47U,aAAYhpM,SAAS,IAAOj+H,GAiNnD,YAAuBwgI,IACnB,MAAiB,KAAVA,IAA0B,OAAVA,IAA4B,SAAVA,IAA8B,gBAAVA,KAA4Bqrd,GAAQrrd,KAjNzFkjiB,CAAcz8V,KACdA,EAAauzT,GACbnvoB,EAAU,GAGd,MAAMs4qB,EAAK1irB,KAAK6hqB,UAAY,IAAIxlhB,KAAe,CAC3C3tI,KAAM,CACF6wI,MAAOymM,EACP57U,QAASA,GAEby3I,OAAQ,CACJtC,MAAOvC,EAAOtmI,MAAQsmI,EAAOuC,MAAQ,GACrC7oI,MAAOsmI,EAAOtmI,MACdsrP,SAAUhlH,EAAOglH,UAErB/wG,QAAQ,IAGZjxJ,KAAKsirB,mBAAmBI,GAExB1irB,KAAK8gpB,aAAa4hC,GAGtBC,sBAAsB5zS,GAClB,MAAM+J,EAAS94Y,KAAK84Y,OACdvmY,EAAS,GAEf,GAAsB,OAAlBw8X,EACA,QAASpgY,EAAI,EAAGA,EAAImqY,EAAO/yY,OAAQ4I,IAAK,CAEpC,GAAgC,eAA5B46U,EADiB56U,GACXqrY,KAAKj7X,QAAQ/Z,KACnB,SAGJ,MAAM86E,GAASg5T,EAAOnqY,GAAGg7pB,eAAe56R,GACxC,GAAIjvT,IAAUA,GAAO/5E,OACjB,QAASy7F,GAAI,EAAGA,GAAI1hB,GAAO/5E,OAAQy7F,KAAK,CACpC,MAAM/oB,GAAQqH,GAAO0hB,IACjB/oB,IAASmyhB,GAAQnyhB,GAAM90E,QAA0B,OAAhB80E,GAAM90E,OACvC4O,EAAO9M,KAAKgzE,KAOhC,OAAOlmE,EAGXqwqB,oBAAoB98S,GAChB,OAAO9lY,KAAK6irB,aAAa,SAASpqmB,GAC9B,OAAOA,EAAM0oL,OAAOv9O,QAAUkiX,IAItCg9S,mBAAmB99qB,GACf,OAAOhF,KAAK6irB,aAAa,SAASpqmB,GAC9B,OAAOA,EAAM0oL,OAAOn8P,OAASA,IAIrC69qB,aAAahzqB,GACT,MAAMipY,EAAS94Y,KAAK84Y,OACdvmY,EAAS,GAEf,QAAS5D,EAAI,EAAGA,EAAImqY,EAAO/yY,OAAQ4I,IAAK,CAEpC,MAAMmxE,GADQg5T,EAAOnqY,GACAmxE,OACrB,QAAS0hB,GAAI,EAAGA,GAAI1hB,GAAO/5E,OAAQy7F,KAAK,CACpC,MAAM/oB,GAAQqH,GAAO0hB,IACjB/oB,KAA2B,IAAlBA,GAAMw7P,SAAqBpkU,EAAS4oE,KAC7ClmE,EAAO9M,KAAKgzE,KAKxB,OAAOlmE,EAGXwwqB,UAAUlzqB,GACN,MAAMipY,EAAS94Y,KAAK84Y,OAEpB,QAASnqY,EAAI,EAAGA,EAAImqY,EAAO/yY,OAAQ4I,IAAK,CAEpC,MAAMmxE,EADQg5T,EAAOnqY,GACAmxE,OACrB,QAAS0hB,GAAI,EAAGA,GAAI1hB,EAAO/5E,OAAQy7F,KAAK,CACpC,MAAM/oB,GAAQqH,EAAO0hB,IACrB,GAAI/oB,KAA2B,IAAlBA,GAAMw7P,SAAqBpkU,EAAS4oE,IAC7C,OAAOA,KAMvBuqmB,YAAYvqmB,GACR,MAAMwsT,EAAQjlY,KAAKilY,MAEnB,QAASt2X,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMqrY,EAAO/U,EAAMt2X,GACnB,GAAIqrY,EAAK/9Q,IAAIlrB,cAAct4B,GACvB,OAAOuhU,GAKnBwlS,eACI,MAAMr8a,EAAOnjQ,KAAK4+qB,UAAU5+qB,KAAKilY,OAC3B45S,EAAQ17a,EAAKx5P,EACbm1qB,EAAQ37a,EAAKrvM,EAEnB9zD,KAAKijrB,sBAAsBnE,EAAOD,GAClC7+qB,KAAKijrB,sBAAsBpE,EAAOC,GAGtCmE,sBAAsB9/a,EAAMy8a,GACxB,IAAIsD,EAAiB,EAErB,QAASv0qB,EAAI,EAAGA,EAAIw0P,EAAKp9P,OAAQ4I,IAAK,CAClC,MAAMw3X,EAAOhjI,EAAKx0P,GACZqrY,GAAO7T,EAAK6T,KACZ/rY,GAAS8yqB,GAAWnB,EAAc5lS,KAAS4lS,EAAa,GAExDuD,GAAYnjrB,KAAKojrB,gBAAgBj9S,EADrBx3X,EAAIu0qB,EACkCj1qB,IAExD,GAAIk1qB,GAAW,CACXD,IAEA,MAAMr6lB,GAAMmxT,GAAK72I,KAAKrjP,QAAQqmX,GAAQ+8S,EACtClpS,GAAK8hS,aAAaqH,GAAWt6lB,MAKzCu6lB,gBAAgBj9S,EAAM0L,EAAW5jY,GAC7B,MAAM08oB,EAAexkR,EAAKpnX,QAAQyrX,OAC5BtgW,EAAWygnB,EAAazgnB,SAI9B,GtK/3BW,QsK43BIA,GtK52BF,UsK42BsBA,IAGT,IAFVygnB,EAAa12U,QAGzB,OAAO,KAGX,MAAMioW,GAAUl8qB,KAAK4+qB,UAAU5+qB,KAAKilY,OAE9B+7S,GAAkBhhrB,KAAKg7pB,mBAAmB/spB,EAD3BA,EAAO8Q,QAAQ/S,SAAWkwqB,GAAQvyqB,EAAIuyqB,GAAQponB,GAE7DxpB,GtKt4BK,QsKs4BCJ,EACN09B,GAAQ35D,EAAO25D,QACfi4B,GAAOv1D,GAAMs9B,GAAMp5D,IAAMo5D,GAAMn1B,IAGrC,GAFsBkuhB,GAAWqgH,GAAgBnvS,GAAYjqU,GAAMn1B,IAAKm1B,GAAMp5D,KAE1DqxF,IAAS,EACzB,OAAO,KAGXmhlB,GAAgBl9pB,OAAO+tX,EAAY,EAAG,EAAGhyS,IACzC5xF,EAAO8Q,QAAQi8oB,mBAAqBgmB,GAEpC,MAAMmC,GAAYh9S,EAAK32Q,QACvB22Q,SAAK7mV,QAEL6joB,GAAUpkqB,QAAQ/Z,UAAOG,EACzBg+qB,GAAUpkqB,QAAQ24D,KAAKu8P,SAAU,EAEjCkvW,GAAUpkqB,QAAQwtX,eAAYpnY,EAC9Bg+qB,GAAUpkqB,QAAQ0rX,WAAQtlY,EAC1Bg+qB,GAAUpkqB,QAAQk7X,eAAY90Y,EAEvBg+qB,IAIf,WAAsBh9S,IAClB,OAAQA,GAAK6T,KAAK72I,KAAKp/M,KAAM5xB,GACzBA,EAAEpT,QAAQ/S,WAAam6X,GAAKpnX,QAAQ/S,UAAYmmB,IAAMg0W,KAA8B,IAAtBh0W,EAAEpT,QAAQk1T,SAIhF,YAAsB9wE,IAClB,MAAMp9P,EAASo9P,GAAKp9P,OACpB,IAAIk2H,EAEJ,QAASttH,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMw3X,EAAOhjI,GAAKx0P,GACZslU,GAAmC,IAAzBkyD,EAAKpnX,QAAQk1T,QAC7B,GAAIA,GAAWovW,EAAal9S,GAAO,CAC/B,MAAMi6S,GAAUnsW,EAAUkyD,EAAKu8Q,aAAev8Q,EAAK4kR,UAE9C9uhB,EAGDA,EAAI3hE,KAAK8lnB,IAFTnkjB,EAAMmkjB,GAAQ5wjB,SAO1B,OAAOyM,GAAO,IAAIghhB,GAGtB,YAAoB95Y,GAAM62I,GACtB,QAASrrY,EAAI,EAAGA,EAAIw0P,GAAKp9P,OAAQ4I,IAAK,CAClC,MAAMV,EAASk1P,GAAKx0P,GACpB,GAAIV,GAAUA,EAAO+rY,OAASA,EAC1B,OAAO/rY,GASnB,MAAM2zqB,GAAe38S,IAAUA,GAAMjrX,OAAO,CAAC0kD,EAAKs7U,IAASt7U,EAAI/qB,OAAOqmW,EAAK72I,MAAO,IAElF2/Y,GAAkBwgC,GAAc,CAC5Bnib,OAAQ,GACRgkI,SAAU,CACN52V,OAAQ,IAEZy3S,WAAY,GACZhpM,OAAQ,CACJuC,MAAOg5f,EACP7hoB,MAAO,GAEXwuX,aAAc,CACVt4U,MAAO,IAEX3f,OAAQ,CACJy/V,cAAe,CACXlC,OAAQ,CACJjrP,MAAO,WAEX8mM,QAAS,CACL9mM,MAAO,eAMvB,SAAe+jiB,GCp+BfC,GAV4B,CACxBn6E,MAAO,SAAS7/Q,GAAOtgV,GACnBjJ,KAAKwjrB,eAAej6V,GAAOtgV,EAAGs+pB,KAGlC97lB,MAAO,SAAS89Q,GAAOtgV,GACnBjJ,KAAKwjrB,eAAej6V,GAAOtgV,E3D8DX,mB4DwCxB,YAAkBsxD,GAAW7xD,EAAQ/E,GACjC,IAAI8/qB,EAAY/6qB,EACZmiD,EAAQ0P,GAEZ,GAAIA,GAAUz6C,QAAQ,MAAO,EAAI,CAC7B,MAAM48S,EAAQniQ,GAAUvjD,MAAM,KAE9B,KAAO0lT,EAAM32T,OAAS,GAClB8kD,EAAQ6xQ,EAAM/yO,QACTihhB,GAAQ64E,EAAU54nB,MACnB44nB,EAAU54nB,GAAS,IAEvB44nB,EAAYA,EAAU54nB,GAE1BA,EAAQ6xQ,EAAM/yO,QAGlB85lB,EAAU54nB,GAASlnD,EAGvB,SA9HA,iBAA+B44oB,KAC3Bz8oB,YAAYqhQ,EAAQkja,EAAQqf,GACxBlkqB,QAEA,MAAMgjpB,EAAkB6B,EAAO7B,gBAAgBrha,GACzCmha,EAAc+B,EAAO/B,YAAYnha,GACjC2ha,GAAeuB,EAAOvB,aAAa3ha,EAAQqha,GAC3CmhB,GAAe3jrB,KAAK4jrB,cAAgB,GACpCvhO,GAAWqhO,EAAkB7+kB,MAAMs8J,EAAOr5P,MAC1C+7qB,GAAgB1ib,EAAOimI,WAAai7E,GAE1Crid,KAAK8jrB,QAAU3ib,EACfnhQ,KAAK+jrB,QAAU1f,EAEf,QAAS11pB,GAAI,EAAGA,GAAI6zpB,EAAgBz8pB,OAAQ4I,KAAK,CAC7C,MAAMk8C,GAAQ23mB,EAAgB7zpB,IAC9B,IAAIq1qB,GAEJ,GAAI94gB,GAAS24gB,IACTG,GAAiBH,GAAch5nB,YAClB,IAANl8C,KAAWkvoB,GAAQhzlB,GAAOy3mB,GAGjC,MAFA0hB,GAAiBH,GAKjBG,IACAL,GAAal+qB,KAAK,CACdw+qB,cAAep5nB,GACf7lD,KAAM89pB,GAAan0pB,IACnBtE,UAAW0voB,GAAWiqC,IAAkBA,GAAiBliB,GAAWkiB,OAMpFE,gBAAgBC,EAAWz7oB,GACvB,MAAQo7oB,QAAS3ib,EAAQyib,cAAeD,GAAiB3jrB,KACnD8S,EAAO9S,KAAKokrB,YAAYD,GAAa,IACrCE,GAAgBvxqB,EAAK48c,UAAU,GACrC,IAAIn9c,GAAS,GAEb,GAAI8xqB,KAAkBpvW,GAASovW,MAAmB1kpB,GAAQ0kpB,IAAgB,CACtE,MAAMnrnB,GAAK,aACXA,GAAG74C,UAAYgkqB,GACf9xqB,GAAS,IAAI2mD,GAGjB,QAASvqD,GAAI,EAAGA,GAAIg1qB,EAAa59qB,OAAQ4I,KAAK,CAC1C,MAAMk8C,GAAQ84nB,EAAah1qB,IACrB21qB,GAAYtkrB,KAAKukrB,WAAWzxqB,EAAKzM,OAAQwkD,GAAMo5nB,eAC/CtgrB,GAAQknD,GAAMxgD,UAAUi6qB,GAAWnjb,EAAQruP,EAAK48c,UAAWhnb,GAEjE,KAAc,OAAV/kC,KAAkBunK,GAASvnK,KAAWinmB,GAAQjnmB,GAAMoC,SAAapC,cAAiBoV,MAAO,CACzFxG,GAAS5O,GACT,MAEIinmB,GAAQjnmB,KACR0tC,GAASwZ,GAAM7lD,KAAMuN,GAAQ5O,IAKzC,OAAO4O,GAGX6xqB,YAAYtkmB,GACR,MAAQikmB,QAAS1f,EAAQyf,QAAS3ib,GAAWnhQ,KACvCqG,EAAS,GACTqpd,EAAY,GAElB,QAAS/gd,GAAI,EAAGA,GAAImxE,EAAO/5E,OAAQ4I,KAAK,CACpC,MAAM+zpB,GAAU5ilB,EAAOnxE,IAEvBtI,EAAOZ,KAAK4+pB,EAAO5B,UAAUtha,EAAQuha,KACrChzM,EAAUjqd,KAAK07P,EAAOruP,KAAK4vpB,KAG/B,MAAO,CACHr8pB,OAAQA,EACRqpd,UAAWA,GAInB60N,WAAWzxqB,EAAM+3C,GACb,MAAMxkD,EAAS,GACTuxG,EAAQ9kG,EAAK/M,OAEnB,QAAS4I,EAAI,EAAGA,EAAIipG,EAAOjpG,IAAK,CAC5B,MAAMqE,GAAOF,EAAKnE,GACZ2zpB,GAActvpB,GAAKsvpB,YACzB,IAAI3+pB,GAGAA,GADAinmB,GAAQ03D,GAAYz3mB,IACZy3mB,GAAYz3mB,GAEZ73C,GAAKkwG,OAAOr4D,GAGxBxkD,EAAOZ,KAAK9B,IAGhB,OAAO0C,ICxGf,iBAAgCk2oB,KAC5Bz8oB,cACI0f,QAEAxf,KAAKmsqB,UAAY,GAGrBzznB,SAAS60V,EAAam0H,GAClB,QAAS/yf,EAAI,EAAGA,EAAI4+X,EAAYxnY,OAAQ4I,IACpC3O,KAAKmsqB,UAAU5+R,EAAY5+X,IAAM+yf,EAIzC78Z,MAAM2/kB,GACF,OAAOxkrB,KAAKmsqB,UAAUqY,IAI9BC,GAAkBp+oB,QAAU,IAAIo+oB,GAEhC,SAAeA,GCjBf,iBAAuBhQ,GACnBx1b,cACI,MAAMurJ,EAASxqY,KAAK+e,QAAQyrX,OACtBk6S,EAAcjqC,GAAW,GAAIjwQ,EAAQA,EAAOpiU,MAC5Cu8mB,EAAYlqC,GAAW,GAAIjwQ,EAAQA,EAAO/8P,IAE5Ci3iB,EAAYzwW,UACZj0U,KAAK4krB,UAAY5krB,KAAK6krB,aAAaH,GACnC1krB,KAAKkxB,OAAOlxB,KAAK4krB,YAGjBD,EAAU1wW,UACVj0U,KAAK8krB,QAAU9krB,KAAK6krB,aAAaF,GACjC3krB,KAAKkxB,OAAOlxB,KAAK8krB,UAIzBD,aAAa9lqB,GACT,MAAMs7iB,EAAgB9rL,GAAYxvX,GAC5BikoB,EAAYhjpB,KAAKgjpB,YAEvB,IAAIrka,EAEJ,OACIA,EADA07U,EACYA,EAAc2oF,GAEdhjpB,KAAKwvY,YAAYzwX,EAAQ3D,QAGlC,IAAI44pB,GAASr1b,EAChB87Z,GAAW,CACPzuoB,SAAUhM,KAAK+e,QAAQ/S,UAE3B+S,GACDikoB,GAGP9C,OAAOpD,GACH98oB,KAAK28G,SAEL,MAAQiokB,YAAWE,UAASnhrB,SAAU3D,KAEtCA,KAAKi8H,IAAM6ghB,EAEP8nC,IACAA,EAAU7lqB,QAAQ8tpB,UAAYlpqB,EAAMykE,KAAOzkE,EAAM8pI,GACjDm3iB,EAAU1kC,OAAOpD,IAGjBgoC,IACAA,EAAQ/lqB,QAAQ8tpB,UAAYlpqB,EAAM8pI,GAAK9pI,EAAMykE,KAC7C08mB,EAAQ5kC,OAAOpD,IAGf98oB,KAAKk2K,MACLl2K,KAAKk2K,KAAKgqe,OAAOpD,IAK7BioC,GAAS1kqB,UAAUgic,SAAWo4L,GAAW,GAAIsqC,GAAS1kqB,UAAUgic,SAAU,CACtE73E,OAAQ,CACJpvX,OAAQ,aAEZ27B,QAAS,CACL37B,OAAQ,SAIhB,SAAe2pqB,GCnEf,iBAA4BlP,GACxB3L,YACI,OAAO6a,GAGXxgB,WAAWzxpB,GACP,OAAOA,EAAKwvpB,YAGhBkL,iBAAiB/0lB,EAAOr9D,GACpB,OAAyB,OAArBq9D,EAAM90E,MAAMykE,MAAoC,OAAnBqQ,EAAM90E,MAAM8pI,GAClC,GAGJztI,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAQq9D,EAAM90E,MAAMykE,KAAMqQ,EAAM90E,MAAM8pI,IAG/Eg9hB,UAAUhylB,GACN,OAAKA,EAIE,CAAEA,EAAM90E,MAAMykE,KAAMqQ,EAAM90E,MAAM8pI,IAH5B,EAMf8/S,YAAY5pb,EAAOu/G,GACf,MAAM0uR,EAAW1uR,EAAOi+I,OAAOglI,MACvB/9T,OAAMqlE,MAAO9pI,EACrB,IAAI0oqB,GAAYrsqB,KAAK0pqB,gBAAgB93R,GAEvB,OAAVjuY,GAAkBsxU,GAAS7sQ,IAAS6sQ,GAASxnM,KAC7C4+hB,GAAYrsqB,KAAK0pqB,gBAAgB93R,GAAYy6R,IAAa,CAAE55nB,IAAKummB,EAAWxqoB,IAAKyqoB,GAEjFozB,GAAU55nB,IAAMvlC,KAAKulC,IAAI45nB,GAAU55nB,IAAK21B,GACxCikmB,GAAU79pB,IAAMtB,KAAKsB,IAAI69pB,GAAU79pB,IAAK45D,GAExCikmB,GAAU55nB,IAAMvlC,KAAKulC,IAAI45nB,GAAU55nB,IAAKg7F,GACxC4+hB,GAAU79pB,IAAMtB,KAAKsB,IAAI69pB,GAAU79pB,IAAKi/H,IAIhDo/hB,UAAUp0lB,GACN,MAAM90E,EAAQ80E,EAAM90E,MACpB,OAAOA,EAAMykE,KAAOzkE,EAAM8pI,IAIlCu3iB,GAAc3kqB,UAAU4kqB,WAAaxX,wBAErC,SAAeuX,GChDfE,GANA,iBAA6BtW,GACzBnmB,WACI,OAAOzopB,KAAKq8W,SCWpB,iBAA6B8lS,GACzBripB,YAAY6D,EAAOob,GACfS,QAEAxf,KAAK2D,MAAQA,EACb3D,KAAK+e,QAAUA,EACf/e,KAAK6sqB,UAAYxxB,GAAer7oB,KAAK+e,QAAQ8tpB,WAAW,GACxD7sqB,KAAK4tqB,iBAAkB,EACvB5tqB,KAAKmlrB,mBAGTxokB,SACI,GAAI38G,KAAK6tqB,UACL,OAGJ7tqB,KAAK6tqB,WAAY,EAEjB,MAAQxnV,UAASmkD,UAAWxqY,KAAK+e,QAC3Bpb,EAAQ3D,KAAK2D,MAEbyhrB,EAAYplrB,KAAKolrB,UAAY,IAAIC,GAAe1hrB,EAAO82oB,GAAW,GAAIz6oB,KAAK+e,QAAS,CACtFyrX,OAAQA,EAAOpiU,KACfi+Q,QAASA,EAAQj+Q,QAGfk9mB,EAAUtlrB,KAAKslrB,QAAU,IAAID,GAAe1hrB,EAAO82oB,GAAW,GAAIz6oB,KAAK+e,QAAS,CAClFyrX,OAAQA,EAAO/8P,GACf44M,QAASA,EAAQ54M,MAGrBztI,KAAKulrB,WAAWH,GAChBplrB,KAAKulrB,WAAWD,GAEhBtlrB,KAAKkxB,OAAOk0pB,GACZplrB,KAAKkxB,OAAOo0pB,GAGhBplC,OAAOpD,GACH98oB,KAAK28G,SAEL,MAAQv0C,KAAMo9mB,EAAS/3iB,GAAIg4iB,GAAU3oC,EAErC98oB,KAAK0lrB,eAAeF,EAASC,GAE7BzlrB,KAAKolrB,UAAUllC,OAAOslC,GACtBxlrB,KAAKslrB,QAAQplC,OAAOulC,GAEpBzlrB,KAAKi8H,IAAMj8H,KAAKolrB,UAAUpX,YAAYx+iB,QAAQl1D,KAAKt6D,KAAKslrB,QAAQtX,aAGpEtsB,kBACI,MAAMh5mB,EAAQ,IAAI2zG,KAClB3zG,SAAMxX,OAAOlxB,KAAKolrB,UAAU1jC,mBAC5Bh5mB,EAAMxX,OAAOlxB,KAAKslrB,QAAQ5jC,mBAEnBh5mB,EAGX4loB,kBACI,OAAOtuqB,KAAK4jQ,OAGhBk+Y,sBACI,MAAO,CACH/ioB,QAAS/e,KAAK+e,QACdqpD,KAAMpoE,KAAKolrB,UAAUtjC,sBACrBr0gB,GAAIztI,KAAKslrB,QAAQxjC,uBAIzB0sB,gBACI,MAAMC,EAAUzuqB,KAAKu6lB,MAAMvgN,KAAKy0R,UAGhC,IAFqBA,GAAWA,EAAQz5b,SAASh1O,KAAKi8H,KAErC,CACb,MAAMA,EAAMj8H,KAAKi8H,IACX5sD,EAAS4sD,EAAI5sD,SACb01Y,EAAkBsuJ,GACxB,IAAI1pmB,GAAGmqD,GAAGiqc,GAEV,OAAI/9f,KAAK+e,QAAQ/S,UACbrC,GAAI0lE,EAAO1lE,EACXmqD,GAAImoE,EAAIpnD,GjEzFD,EiE0FPkpb,GAAgBy6I,IAEhB7uoB,GAAIsyH,EAAIxmD,GjE5FD,EiE6FP3hB,GAAIub,EAAOvb,EACXiqc,GAAgB06I,GAGb,CACHhgkB,MAAO,IAAIyB,GAAMvwE,GAAGmqD,IACpBqJ,MAAO,CACHpxD,WAAYg5c,EACZ/4c,SAAU+xf,MAM1BvuH,YAAYp0X,GACR,OAAOpb,KAAKu6lB,MAAMizE,iBAAiBxtqB,KAAMob,GAG7CszpB,YAAYzyiB,GACR,OAAOj8H,KAAKi8H,IAAI+4G,SAAS/4G,GAG7B0yiB,iBACI3uqB,KAAKolrB,UAAUzW,iBACf3uqB,KAAKslrB,QAAQ3W,iBAGjBwW,mBACI,MAAM36S,EAASxqY,KAAK+e,QAAQyrX,OACvBA,EAAOpvX,WACHovX,EAAOpiU,OAASoiU,EAAOpiU,KAAKhtD,UAC7BovX,EAAOpiU,KAAOviE,OAAOw0D,OAAO,GAAImwU,EAAOpiU,KAAM,CACzChtD,OA1HQ,WA8HXovX,EAAO/8P,KAAO+8P,EAAO/8P,GAAGryH,UACzBovX,EAAO/8P,GAAK5nI,OAAOw0D,OAAO,GAAImwU,EAAO/8P,GAAI,CACrCryH,OA/HM,UAqItBsqqB,eAAeF,EAASC,GACpB,MAAQj7S,SAAQx+X,YAAahM,KAAK+e,QAElC,GA1IK,SA0IDyrX,EAAOtgW,SAAmB,CAC1B,IAAIy7oB,EAAmBC,GACnB55qB,EACIy5qB,EAAM5wmB,IAAM2wmB,EAAQ3wmB,IACpB+wmB,GAAkB1gB,GAClBygB,EAAoBxgB,KAEpBygB,GAAkBzgB,GAClBwgB,EAAoBzgB,IAGxBztc,EAAUtiJ,IAAMqwmB,EAAQrwmB,IACpBywmB,GAAkBvyE,GAClBsyE,EAAoBryE,KAEpBsyE,GAAkBtyE,GAClBqyE,EAAoBtyE,MAIvB7oO,EAAOpiU,OAASoiU,EAAOpiU,KAAKl+B,YAC7BlqC,KAAKolrB,UAAUrmqB,QAAQyrX,OAAOtgW,SAAWy7oB,KAGxCn7S,EAAO/8P,KAAO+8P,EAAO/8P,GAAGvjG,YACzBlqC,KAAKslrB,QAAQvmqB,QAAQyrX,OAAOtgW,SAAW07oB,KAKnDL,WAAW9smB,GACPA,EAAMnjB,SAAWt1D,KAAKs1D,SACtBmjB,EAAM2oL,SAAWphQ,KAAKohQ,SACtB3oL,EAAM0oL,OAASnhQ,KAAKmhQ,OACpB1oL,EAAM8mE,MAAQv/I,KAAKu/I,MACnB9mE,EAAM8hhB,MAAQv6lB,KAAKu6lB,OAI3BkgD,GAAWorC,GAAexlqB,UAAWwupB,IACrCp0B,GAAWorC,GAAexlqB,UAAWyupB,IAErC+W,GAAexlqB,UAAUgic,SAAW,CAChCh8H,QAAS,CACLpS,SAAS,EACT+R,WAAYuzT,GACZvqlB,KjElLiB,EiEmLjBlnD,KAAM4woB,EACN17f,OAAQ,CACJtmI,MAAO,GAEXtM,QAAS,GAEbogY,OAAQ,CACJv2D,SAAS,EACT1lS,OAAQ6umB,GAAW,GACnB53f,QAAS43f,GAAW,GACpBj4U,UAAW,CACPr9T,KAAM88pB,EACNtzpB,MAAOqzpB,GAEXz6nB,SAvMK,QAyMTugW,MAAO,CACHrlY,MAAO,IAEXmlY,UAAW,CACPlkD,QAAS,CACLrpM,OAAQ,CACJuC,MAAOg6f,GACP7ioB,MAAO,IAGfu6I,O7K9MwB,K6KgN5Bl6G,QAAS,CACL37B,OAAQ,cAIhB,SAAeyqqB,GC3LfC,GAvCA,iBAA+BnT,GAE3BX,uBACI,OAAOhyqB,KAAKiyqB,mBAAmBjyqB,KAAK+uqB,iBAAiB/uqB,KAAK+lrB,aAG9D7T,gBACI,IAAI8T,EAAehmrB,KAAKgmrB,aACxB,OAAKhmrB,KAAKgmrB,eACNA,EAAehmrB,KAAKgmrB,aAAehmrB,KAAKiyqB,mBAAmBjyqB,KAAK+uqB,iBAAiB/uqB,KAAKimrB,aAAal3lB,aAGhGi3lB,EAGXnU,aAAa1nqB,GACT,MAAM+7qB,EAAS,IAAI7piB,KAAUlyI,GACvBg8qB,EAAW,IAAI9piB,KAAUlyI,GAE/B+7qB,EAAO/pjB,SAAS12H,KAAKkuB,MAAMuypB,EAAO/pjB,SAAUn8H,KAAK8xqB,kBACjDqU,EAAShqjB,SAAS12H,KAAKkuB,MAAMwypB,EAAShqjB,SAAUn8H,KAAKkyqB,iBAErDlyqB,KAAK4jQ,OAAO1yO,OAAOg1pB,GACnBlmrB,KAAK4jQ,OAAO1yO,OAAOi1pB,GAGvB/T,kBACI,OAAO,EAGX6T,aACI,OAAOjmrB,KAAK8opB,WAAWnjpB,IAAI8yE,GAASA,EAAM2smB,WAG9CW,WACI,OAAO/lrB,KAAK8opB,WAAWnjpB,IAAI8yE,GAASA,EAAM6smB,WCVlDc,GAxBA,iBAAqCC,GAEjCrU,uBACI,OAAOhyqB,KAAKsmrB,oBAAoBtmrB,KAAK+lrB,YAGzC7T,gBACI,IAAI8T,EAAehmrB,KAAKgmrB,aACxB,OAAKhmrB,KAAKgmrB,eACNA,EAAehmrB,KAAKgmrB,aAAehmrB,KAAKsmrB,oBAAoBtmrB,KAAKimrB,aAAal3lB,YAG3Ei3lB,EAGXM,oBAAoBxmmB,GAGhB,OAAO8vlB,IAFoBC,IAEL9tpB,QAAQ/hB,KAAK+uqB,iBAAiBjvlB,MClB5D,iBAAmCummB,GAE/BrU,uBACI,OAAOhyqB,KAAKiyqB,mBAAmBjyqB,KAAKqvqB,oBAAoBrvqB,KAAK+lrB,aAGjE7T,gBACI,IAAI8T,EAAehmrB,KAAKgmrB,aACxB,OAAKhmrB,KAAKgmrB,eACNA,EAAehmrB,KAAKgmrB,aAAehmrB,KAAKiyqB,mBAAmBjyqB,KAAKqvqB,oBAAoBrvqB,KAAKimrB,eACzFD,EAAaj3lB,WAGVi3lB,GAIfvrC,GAAW8rC,GAAqBlmqB,UAAWqvpB,IAE3C,SAAe6W,GCRf,iBAA6B9Y,GAEzB9wjB,SACIn9F,MAAMm9F,SAEN38G,KAAK+vqB,iBAGT7F,YACI,OAAO2b,GAGX9smB,YAAYjmE,EAAMowG,GACd,MAAQ8rR,aAAY5tI,WAAUD,SAAQ8oa,aAAa/mjB,EACnD,IAAIv/G,GAAQmP,EAAKwvpB,YAEjB,IAAK9pP,GAAS70a,GAAMykE,QAAUowW,GAAS70a,GAAM8pI,IACzC,IAAIztI,KAAKqwqB,oBAAoBlva,KAAY6ja,GAMrC,OAAO,KALPrhqB,GAAQ,CACJykE,KAAM,EACNqlE,GAAI,GAOhB,IAAIu8hB,GAAehqqB,KAAKgqqB,aAAa7oa,EAAQ8oa,IAC7CD,GAAehqqB,KAAKksqB,iBAChBlC,GAAcrmqB,GAAOy9P,EAAU4tI,EAAY7tI,EAAQ8oa,IAGvD,IAAI1qhB,GAAQzsI,EAAKowG,OAAOq8B,OAAS4hH,EAAO5hH,MACpCw6f,GAAW54Y,EAAO5hH,SAClBA,GAAQyqhB,GAAazqhB,OAGzB,MAAM9mE,GAAQ,IAAIotmB,GAAelirB,GAAOqmqB,IACxCvxlB,UAAM8mE,MAAQA,GAEdv/I,KAAKkxB,OAAOunD,IAELA,GAGX63lB,cAAcxnB,EAAY2jB,EAAexC,GACrC,MAAM9/pB,GAASsiqB,EAAc/0lB,MAAQ,IAAIvtE,MACzC,IAAIq8qB,EACJ,OACIA,EADU,WAAVr8qB,EACcs8qB,GACG,SAAdrgG,EACWmgG,GAEAF,GAGX,IAAIG,EAAY19B,EAAY2jB,EAAexC,GAGtDQ,UAAUhylB,EAAOguf,GACb,OAAKhuf,EAIE,CAAEA,EAAM90E,MAAMykE,KAAMqQ,EAAM90E,MAAM8pI,IAH5B,CAAEg5b,EAAYA,GAM7BkmG,UAAUtnS,EAAWolS,GACjB,MAAMic,EAAWrhT,EAAUmnR,QAAQie,EAAU,GAAIA,EAAU,IAAKzqqB,KAAK+e,QAAQ0+X,MACvEkpS,EAASthT,EAAUmnR,QAAQie,EAAU,GAAIA,EAAU,IAAKzqqB,KAAK+e,QAAQ0+X,MAC3E,GAAIipS,GAAYC,EACZ,MAAO,CACHv+mB,KAAMs+mB,EACNj5iB,GAAIk5iB,GAKhB/Z,UAAUF,EAAcC,GACpB,MAAQvkmB,OAAMqlE,MAAOk/hB,EACrB,IAAI+Z,EAAUC,GAEd,OAAI3mrB,KAAK+e,QAAQorpB,YACbuc,EAAW,IAAIzpC,GAAI70kB,EAAK+M,GAAIu3lB,EAAa73lB,GAAIzM,EAAKqN,GAAIi3lB,EAAa7vB,IACnE8pC,GAAS,IAAI1pC,GAAIxvgB,EAAGt4D,GAAIu3lB,EAAa73lB,GAAI44D,EAAGh4D,GAAIi3lB,EAAa7vB,MAE7D6pC,EAAW,IAAIzpC,GAAIyvB,EAAav3lB,GAAI/M,EAAKyM,GAAI63lB,EAAaj3lB,GAAIrN,EAAKy0kB,IACnE8pC,GAAS,IAAI1pC,GAAIyvB,EAAav3lB,GAAIs4D,EAAG54D,GAAI63lB,EAAaj3lB,GAAIg4D,EAAGovgB,KAG1D,CACHz0kB,KAAMs+mB,EACNj5iB,GAAIk5iB,IAIZvyW,SAASthU,EAAMowG,GACX,MAAMo/iB,EAAcxvpB,EAAKwvpB,YACpBrtV,GAASqtV,EAAYl6lB,QACtBk6lB,EAAYl6lB,KAAOk6lB,EAAY70hB,IAG9BwnM,GAASqtV,EAAY70hB,MACtB60hB,EAAY70hB,GAAK60hB,EAAYl6lB,MAGjC5oD,MAAM40T,SAASthU,EAAMowG,GAGzBqqU,YAAY5pb,EAAOu/G,GACf,GAAc,OAAVv/G,GAAkBsxU,GAAStxU,EAAMykE,OAAS6sQ,GAAStxU,EAAM8pI,IAAK,CAC9D,MAAMmkQ,EAAW1uR,EAAOi+I,OAAOglI,KACzBkmS,EAAYrsqB,KAAK0pqB,gBAAgB93R,GAAY5xY,KAAK0pqB,gBAAgB93R,IAAa,CAAEn/V,IAAKummB,EAAWxqoB,IAAKyqoB,IACpG7wkB,OAAMqlE,OAAO9pI,EAErB0oqB,EAAU55nB,IAAMvlC,KAAKulC,IAAI45nB,EAAU55nB,IAAK21B,EAAMqlE,IAC9C4+hB,EAAU79pB,IAAMtB,KAAKsB,IAAI69pB,EAAU79pB,IAAK45D,EAAMqlE,KAItD+/hB,iBAAiB/0lB,EAAOr9D,GACpB,MAAMzX,EAAQ80E,EAAM90E,MAEpB,OAAO3D,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAQzX,EAAMykE,KAAMzkE,EAAM8pI,IAGnE4jiB,kBACI,MAAMvxlB,EAAS9/E,KAAK8/E,OACdvtE,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IAAO,CAC1C,MAAMsuC,EAAQqH,EAAO31C,GACjBsuC,IACAlmE,EAAO9M,MAAMgzE,EAAM2smB,WAAa,IAAI18B,QACpCn2oB,EAAO9M,MAAMgzE,EAAM6smB,SAAW,IAAI58B,SAI1C,OAAOn2oB,EAAOohC,OAAO3zC,KAAKiwqB,YAIlCx1B,GAAWmsC,GAAevmqB,UAAWmxpB,GAAgBC,IAErD,SAAemV,GCxHfC,GApCA,iBAAwBnQ,GACpBx2B,OAAOjkhB,GACH,MAAQl9G,UAASpb,QAAO42lB,MAAOhxQ,GAAUvpV,KACnCqlY,EAAY97C,EAAM4/U,gBAAgBpqpB,GAClC+nqB,GAAU,GACVC,GAAU,GACVC,GAAW,GAEXjR,GAAS1wS,EAAUmnR,QAAQ7opB,EAAMurY,IAAKvrY,EAAMwrY,MAC5C83S,GAAQ5hT,EAAUmnR,QAAQ7opB,EAAMokB,KAAMpkB,EAAMokB,MAC5Cm/pB,GAAQ7hT,EAAUmnR,QAAQ7opB,EAAMqnB,MAAOrnB,EAAMqnB,OAEnDi8pB,GAAM9xmB,GAAK+xmB,GAAM/xmB,GAAK4gmB,GAAO5gmB,GAAK8mD,EAAI9mD,GACtC8xmB,GAAMxxmB,GAAKyxmB,GAAMzxmB,GAAKsgmB,GAAOtgmB,GAAKwmD,EAAIxmD,GAEtC,MAAMqJ,GAAMi3lB,GAAO1mmB,SAAS1lE,EAE5Bm9qB,GAAQrhrB,KAAK,CAAEwhrB,GAAM9xmB,GAAI8xmB,GAAMpymB,KAC/BiymB,GAAQrhrB,KAAK,CAAEq5E,GAAKmomB,GAAMpymB,KAC1BkymB,GAAQthrB,KAAK,CAAEq5E,GAAKoomB,GAAMrymB,KAC1BkymB,GAAQthrB,KAAK,CAAEyhrB,GAAMzxmB,GAAIyxmB,GAAMrymB,KAC/BmymB,GAASvhrB,KAAK,CAAEq5E,GAAKi3lB,GAAOlhmB,KAC5BmymB,GAASvhrB,KAAK,CAAEq5E,GAAKi3lB,GAAOl5B,KAE5B78oB,KAAK+/E,MAAQ,CACT+mmB,GAASC,GAASC,IAGtBhnrB,KAAKi8H,IAAM85iB,GAAOvmjB,QAAQl1D,KAAK2snB,GAAMz3jB,QAAQl1D,KAAK4snB,KAElDlnrB,KAAKi2qB,aAGTI,gBC1BJ8Q,GANA,iBAAwBtQ,GACpB3M,YACI,OAAOkd,KCGf,iBAA+BjlC,GAC3BripB,YAAYsoE,EAAMqlE,EAAI0zH,GAClB3hP,QAEAxf,KAAKooE,KAAOA,EACZpoE,KAAKytI,GAAKA,EACVztI,KAAKmhQ,OAASA,EAGlB2nZ,aACI,MAAM1glB,EAAOpoE,KAAKooE,MACVA,MAAQ6zD,IAAKupjB,GAAW/3iB,IAAMxR,IAAKwpjB,IAAYzlrB,KACjD8/E,EAAS,GAEf,GAAI1X,EAAK4uiB,WAAY,CACjB,MAAMljjB,EAAIsU,EAAKykmB,UAAY2Y,EAAQ3wmB,GAAK2wmB,EAAQ3oC,GAChD/8jB,EAAOr6E,KACH,CAAE+/qB,EAAQrwmB,GAAIrhB,GACd,CAAE2xnB,EAAMhwmB,GAAI3hB,QAEb,CACH,MAAMnqD,EAAIy+D,EAAKykmB,UAAY2Y,EAAQ/vmB,GAAK+vmB,EAAQrwmB,GAChD2K,EAAOr6E,KACH,CAAEkE,EAAG67qB,EAAQ3wmB,IACb,CAAElrE,EAAG87qB,EAAM5oC,KAInB,OAAO/8jB,EAGXm+P,eACIz+T,MAAMy+T,eAEN,MAAMvmQ,EAAO13E,KAAKmhQ,OAAOzpL,MAAQ,GAE3BgyG,EAAOrtC,gBAAqBr8I,KAAK8opB,aAAc,CACjDjngB,OAAQ,CACJtC,MAAO7nE,EAAK6nE,MACZ7oI,MAAOghE,EAAKhhE,MACZtM,QAASstE,EAAKttE,QACd43P,SAAUtqL,EAAKsqL,YAIvBinZ,GAAiBv/d,GACjB1pL,KAAK4jQ,OAAO1yO,OAAOw4J,IAI3Bo5d,GAAkBukC,GAAkB,CAChCliX,UAAW,CACPr9T,KAAM88pB,EACNtzpB,MAAOqzpB,KAIf,SAAe0iB,GCoCfC,GA7FA,iBAA6BzR,GACzBl5jB,SACIn9F,MAAMm9F,SACN38G,KAAKunrB,iBAGTxd,mBAAmBl6pB,GACf,MAAMsxP,EAASnhQ,KAAK+e,QAAQoiP,OACtBqmb,EAAkBrzB,GAAgBhzZ,GAClC61W,GAAch3mB,KAAK+e,QAAQorpB,WAEjC,QAASF,EAAW,EAAGA,EAAW9oa,EAAOp7P,OAAQkkqB,IAAY,CACzD,MAAMwC,GAAgBtra,EAAO8oa,GAC7B,IAAIx7pB,GAAQ,EACRwgY,GAAe,EAEnB,QAASD,GAAa,EAAGA,GAAaw4S,EAAiBx4S,KAAc,CACjE,MAAMl8X,GAAOuwpB,qBAA+BoJ,GAAez9R,IACrDrrY,GAAQmP,GAAKwvpB,YAAY3+pB,MACzBu6M,GAAUprM,GAAKowG,OAAOg7F,QAC5B,IACIzwE,GADArlE,GAAO35D,GAGPyvM,GAC8B,UAA9Bupe,GAAYpspB,eACRvoB,GAAKwvpB,YAAY3+pB,MAAQ8K,GACzB25D,GAAO,EACPqlE,GAAKh/H,KAELqE,GAAKwvpB,YAAY3+pB,MAAQsrY,GACzBxhQ,GAAKrlE,GAAO6mU,GACZA,GAAe,GAEZh6D,GAAStxU,MAChBsrY,IAAgBtrY,GAChB8K,IAAS9K,GACT8pI,GAAKh/H,IAGToB,EAASiD,GAAM,CACXsuP,SAAUphQ,KAAK+kY,aAAamvR,WAAWllR,IACvCA,WAAYA,GACZ7tI,OAAQsra,GACRxC,SAAUA,EACVx7pB,MAAOA,GACPwgY,aAAcA,GACd7mU,KAAMA,GACNqlE,GAAIA,GACJupe,WAAYA,MAM5BzpL,YAAY5pb,EAAOu/G,GACf1jG,MAAM+ta,YAAY,CAAE5pb,MAAOu/G,EAAOuqB,IAAMvqB,GAG5C2pjB,UAAUp0lB,GACN,OAAOA,EAAM90E,OAAS,EAG1B8mqB,UAAUhylB,GACN,MAAO,CAAEA,EAAMrQ,KAAMqQ,EAAMg1D,IAG/B85iB,iBACI,MAAMpmb,EAASnhQ,KAAK+e,QAAQoiP,OACtByoa,EAAe5pqB,KAAK4pqB,aACpBztiB,EAAWn8H,KAAKm8H,SAAW,GAEjC,QAAS8tiB,EAAW,EAAGA,EAAW9oa,EAAOp7P,OAAQkkqB,IAAY,CACzD,MAAMwC,EAAgBtra,EAAO8oa,GACvBnqlB,GAAS8plB,EAAaK,GAE5B,GAAInqlB,GAAQ,CACR,IAAI4nmB,GACJ,QAAShlB,GAAU,EAAGA,GAAU5ilB,GAAO/5E,OAAQ28pB,KAAW,CACtD,MAAMjqlB,GAAQqH,GAAO4ilB,IAErB,GAAIjqlB,IAASivmB,GAAW,CACpB,MAAMrrjB,GAAU,IAAIgrjB,GAAiBK,GAAWjvmB,GAAOg0lB,GACvDtwiB,EAAS12H,KAAK42H,IACdr8H,KAAKkxB,OAAOmrG,IAGhBqrjB,GAAYjvmB,QCjE1BkvmB,GAAc,CAAEriB,GAAMyB,GAAeL,GAAYS,IACjDygB,GAAsB,CAAE3hB,GAAMiB,IAAgBvznB,OAAOg0oB,IAE3D,iBAAkCrE,GAE9Bn5B,WAAWhpZ,GAKP,GAJAnhQ,KAAK6nrB,kBAAoB,GACzB7nrB,KAAKssqB,eAAiB,GACtBtsqB,KAAK8nrB,sBAAwB,IAAIC,GAE7B5mb,EAAOp7P,OAAS,EAAG,CACnB/F,KAAKmqqB,WAAatsB,GACd18Y,EAAO,GAAGr5P,KAAM,CAAEy9pB,GAAKG,GAAQwB,GAAeH,GAAeI,GAC5CR,GAAWX,GAAsBgB,KAGtD,QAASr4pB,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAAK,CACpC,MAAM0W,EAAQ87O,EAAOxyP,GAAG0W,MACxB,GAAIA,GAAwB,SAAfA,EAAMvd,KAAiB,CAChC9H,KAAKgorB,UAAW,EAChB,SAOhBrrkB,OAAOsoR,EAAQjlY,KAAKilY,OAChBjlY,KAAKiorB,mBAAmBhjT,GACxBjlY,KAAKkorB,oBAAoBjjT,GACzBjlY,KAAKmorB,yBAAyBljT,GAC9BjlY,KAAKoorB,aAAanjT,GAClBjlY,KAAKqorB,gBAAgBpjT,GAGzB+2S,WAAW71S,GACP,MAAMyL,EAAWzL,EAAKpnX,QAAQ/Z,KAE9Bwa,MAAMw8pB,WAAW71S,GAEbA,aAAgBosR,UACTvypB,KAAK6nrB,kBAAkBj2S,IAE9B5xY,KAAK8nrB,sBAAsBxjhB,MAAMstO,UAC1B5xY,KAAKssqB,eAAe16R,IAG3BzL,IAASnmY,KAAK+kY,qBACP/kY,KAAK+kY,aAGZoB,IAASnmY,KAAKqlY,kBACPrlY,KAAKqlY,UAIpB+iT,aAAanjT,GACT,MAAMm6S,EAAep/qB,KAAKm/qB,oBAE1B,QAASxwqB,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMqrY,EAAO/U,EAAMt2X,GACb25qB,EAAalJ,EAAaplS,EAAKj7X,QAAQ/Z,MAAQ,YAAc,GACnEhF,KAAKu+qB,YAAY+J,GAEjB,MAAMC,GAAgBvorB,KAAKs/qB,oBAAoBgJ,GAC/C,IAAKC,GACD,SAGJ,MAAM/2nB,GAASxxD,KAAKworB,0BAA0BD,IAC9C,QAASE,GAAU,EAAGA,GAAUj3nB,GAAOzrD,OAAQ0irB,KAC3CzorB,KAAK0orB,iBAAiBl3nB,GAAOi3nB,IAAUzuS,IAKnD0uS,iBAAiBvnb,EAAQ64I,GACrBh6Y,KAAK2orB,gBACDC,GAAmBznb,EAAQ,CAAEmka,GAAMyB,KAAkB/sR,GAGzDh6Y,KAAK6orB,qBACDD,GAAmBznb,EAAQ,CAAEula,GAAYS,KAAwBntR,GAGrEh6Y,KAAK8orB,eACDF,GAAmBznb,EAAQ,CAAEyka,GAAQL,KAAQvrR,GAGjDh6Y,KAAK+orB,oBACDH,GAAmBznb,EAAQ,CAAEyla,GAAcD,KAAc3sR,GAG7Dh6Y,KAAKgprB,kBACDJ,GAAmBznb,EAAQ,CAAEuka,GAAQuB,KAAoBjtR,GAG7Dh6Y,KAAKiprB,uBACDL,GAAmBznb,EAAQwka,IAAc3rR,GAG7Ch6Y,KAAKkprB,mBACDN,GAAmBznb,EAAQ,CAAEqka,GAAUwB,KAAsBhtR,GAGjEh6Y,KAAKmprB,gBACDP,GAAmBznb,EAAQ+ka,IAAOlsR,GAGtCh6Y,KAAKoprB,qBACDR,GAAmBznb,EAAQ,CAAEima,GAAWpB,KAAyBhsR,GAGrEh6Y,KAAKqprB,gBACDT,GAAmBznb,EAAQ,CAAE8ka,GAAMiB,KAAkBltR,GAI7DkuS,oBAAoBjjT,GAChB,MAAM9jI,EAASnhQ,KAAKsprB,WAAatprB,KAAKmhQ,OAChCoob,EAAkB,GACxBvprB,KAAKwprB,oBAAsB,GAC3BxprB,KAAKyprB,mBAAqBzprB,KAAKyprB,oBAAsB,GAErD,QAAS96qB,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAAK,CACpC,IAAI89pB,EAAgBtra,EAAOxyP,GAC3B,MAAMo2X,GAAe/kY,KAAKypqB,mBAAmBgD,GACvCid,GAAW1prB,KAAKg+qB,SAASj5S,GAAahmX,QAAQi7X,MAIhDyyR,GAHakQ,GAAiB53S,GAAahmX,QAAQjX,KAAMkpE,IAE5Cy7lB,EAAcnlS,gBAAkBu2Q,GAAQ6rC,GAAUzkT,GAC/CjlY,KAAK2prB,gBAAgBld,EAAe1nS,IAEpC/kY,KAAK4prB,aAAand,EAAe1nS,IAGrDwkT,EAAgB9jrB,KAAKgnqB,GAGzBzsqB,KAAKyprB,mBAAqBzprB,KAAKwprB,oBAC/BxprB,KAAKwprB,oBAAsB,KAE3BxprB,KAAKsprB,UAAYnob,EACjBnhQ,KAAKmhQ,OAASoob,EAGlBK,aAAazob,EAAQ4jI,GACjB,MAAM4qD,GAAcxuL,EAAOruP,MAAQ,IAAI/M,OAGvC,GAFAg/X,EAAaguR,WAAa7lpB,KAAKsB,IAAIu2X,EAAaguR,YAAc,EAAGpjO,IAE3D16G,GAAS8vD,EAAahmX,QAAQ0zB,OAAQwiS,GAAS8vD,EAAahmX,QAAQvQ,KACtE,OAAO2yP,EAGX,MAAMv5L,EAAQm9T,EAAagwR,sBACrB80B,EAAmBhsC,GAAQ18Y,EAAOr5P,KAAM8/qB,IACxCnb,GAAgBhyB,GAAW,GAAIt5Y,GAErCsra,UAAc35pB,MAAQ25pB,GAAc35pB,MAAQ,IAAIlE,MAAMg5D,EAAMn1B,IAAKm1B,EAAMp5D,IAAM,GAEzEq7qB,GACAC,GAAuBrd,GAAe7kmB,EAAO+nX,EAAaxlZ,KAAS,CAC/Dn3B,KAAMmuP,EAAOruP,KAAKq3B,IAClBi3N,SAAU2jI,EAAamvR,WAAW/pnB,IAAK,GACvC6kW,WAAY7kW,GAAMy9B,EAAMn1B,MACvBtI,IAAQygkB,GAAQzpW,EAAOruP,KAAKq3B,MAG9BsioB,GAGXsd,yBACI/prB,KAAKyprB,mBAAqB,GAG9BO,mBAAmB7ob,EAAQ4jI,GACvB,MAAMlyX,EAAO,GAAGsuP,EAAOv9O,SAAWmhX,EAAautR,mBAC/C,GAAItypB,KAAKyprB,mBAAmB52qB,GACxB,YAAK22qB,oBAAoB32qB,GAAO7S,KAAKyprB,mBAAmB52qB,GACjD7S,KAAKyprB,mBAAmB52qB,GAGnC,MAAM4npB,EAAc11R,EAAahmX,QAC3ByzoB,EAAgBiI,EAAYjI,cAC5By3B,GAAWtN,GAAiBliB,EAAY3ypB,KAAMkpE,GAC9Ck5mB,GAAU/ob,EAAOruP,KACjBq3qB,GAAQF,GAAWG,GAAex3N,GAClCrgd,GAAS,GACV03qB,IACDllT,EAAaiwR,gBAGjB,QAAS7qnB,GAAM,EAAGA,GAAM+/oB,GAAQnkrB,OAAQokC,KAAO,CAC3C,IAAIi3N,GAOJ,GALIA,GADAD,EAAOmmI,cACI6iT,GAAMhpb,EAAOmmI,cAAe4iT,GAAQ//oB,IAAMnqC,KAAKsgpB,aAAa/8e,MAE5Divf,EAAcronB,IAGzBygkB,GAAQxpW,KAA0B,OAAbA,GAAmB,CACxC,MAAM4tI,GAAajK,EAAakvR,WAAW7yZ,IAC3C7uP,GAAOy8X,IAAcz8X,GAAOy8X,KAAe,CAAEx8U,MAAO,GAAI4uM,SAAUA,IAClE7uP,GAAOy8X,IAAYx8U,MAAM/sD,KAAK0kC,KAItC,YAAKq/oB,oBAAoB32qB,GAAON,GAEzBA,GAGXo3qB,gBAAgBxob,EAAQ4jI,GAEpB,IAAKmlT,EADkBp3qB,KACV/M,OACT,OAAOo7P,EAGX,MAAMgjb,EAAYnkrB,KAAKgqrB,mBAAmB7ob,EAAQ4jI,GAC5CxyX,EAASkooB,GAAW,GAAIt5Y,GACxBkpb,GAAa,IAAIC,GAAiB7vC,GAAW,GAAIt5Y,GAASkia,WAAsBohB,YAChF3xqB,GAAOP,EAAOO,KAAO,GACrB48c,GAAY3qF,EAAahmX,QAAQ2wc,WAAa,GAE9C9nZ,GAAQm9T,EAAagwR,sBACrBw1B,GAAgBpgpB,KAClB,MAAM4zS,GAAc5zS,GAAMy9B,GAAMn1B,IAChC,IAAIgmC,GAAQ0rmB,EAAUh6oB,IAOtB,GANKsuC,KACDA,GAAQ0rmB,EAAUh6oB,IAAO,IAG7BsuC,GAAMu2T,WAAajxD,IAEdtlQ,GAAMzlE,KAAM,CACb,MAAMouP,GAAW2jI,EAAamvR,WAAW/pnB,IAAK,GAC9CsuC,GAAM2oL,SAAWA,GACjB3oL,GAAMzlE,KAAOq3qB,GAAWnG,gBAAgBzrmB,GAAMjmB,MAAO4uM,IAGzD,OAAO3oL,IAGX,QAAStuC,GAAMy9B,GAAMn1B,IAAKtI,IAAOy9B,GAAMp5D,IAAK27B,KAAO,CAC/C,MAAMsuC,GAAQ8xmB,GAAapgpB,IAC3Br3B,GAAK2lE,GAAMu2T,YAAcv2T,GAAMzlE,KAE3BylE,GAAMjmB,OAASimB,GAAMjmB,MAAMzsD,SAC3B2pd,GAAUj3Y,GAAMu2T,YAAcv2T,GAAMzlE,MAI5C,OAAI6qoB,GAAQtroB,EAAOzK,KAAM8/qB,KACrBkC,GAAuBv3qB,EAAQq1D,GAAOm9T,EAAa+lI,aAAcy/K,GAAepgpB,IAAQg6oB,EAAUh6oB,KAGtG46V,EAAahmX,QAAQ2wc,UAAYA,GAE1Bn9c,EAGXwpqB,YAAYxyV,EAAOywD,GACf,MAAM74I,EAASooF,EAAMxqU,QAAQoiP,OACvB4jI,EAAe/kY,KAAKypqB,mBAAmBtoa,EAAO,IACpD,IAAI5R,EAAaw1I,EAAahmX,QAAQwwO,WAClCi7b,GAAkBt9qB,KAAKsB,IAAI,EAAG2lpB,GAAgBhzZ,GAAU5R,EAAWxpP,QAEvE,GAAIykrB,GAAkB,EAElB,IADAj7b,EAAaw1I,EAAahmX,QAAQwwO,WAAaw1I,EAAahmX,QAAQwwO,WAAW3gP,MAAM,GAC9E47qB,MACHj7b,EAAW9pP,KAAK,IAIxBzF,KAAK8nrB,sBAAsBphkB,OAAO6iO,EAAMmgV,iBAExClqpB,MAAMu8pB,YAAYxyV,EAAOywD,GAI7BqlS,eAAel+a,GACX,MAAMpiP,EAAU/e,KAAK+e,QACf6yX,EAAWzwI,EAAOglI,KAOxB,OALa69Q,GADO,GAAGrwmB,OAAO50B,EAAQsmX,WACP,SAASlzW,IAAK,OAAOA,GAAEntB,OAAS4sY,IAAa,IAGlD,IAAIoI,QAFhBj7X,EAAQkmX,OAAS,CAAE,KACF,IAAM,IAAIjgY,MAAQ,UAMrDykqB,mBAAmBtoa,GACf,MAAMywI,EAAWzwI,EAAO4jI,aAClBoB,EAAOyL,EAAW5xY,KAAK6nrB,kBAAkBj2S,GAAY5xY,KAAK+kY,aAEhE,IAAKoB,EACD,MAAM,IAAI1vX,MAAM,4CAA8Cm7X,GAGlE,OAAOzL,EAGXskT,sBAAsB5xS,EAAamB,GAC/B,MAAM30X,EAAQwzX,EAAYxzX,MAI1B,MAAO,CACHqlpB,UAAWrlpB,EACXglpB,aALiBhlpB,GAAwB,SAAfA,EAAMvd,KAMhC21Y,KALSzD,EAAKj7X,QAAQ0+X,MAS9B+qS,0BAA0Brnb,GACtB,MAAMupb,EAAe,GACfC,EAAS,GACf,QAASxgpB,EAAM,EAAGA,EAAMg3N,EAAOp7P,OAAQokC,IAAO,CAC1C,MAAMnlC,GAAOm8P,EAAOh3N,GAAK46V,cAAgB,cACpC4lT,EAAOt+oB,eAAernC,MACvB2lrB,EAAO3lrB,KAAQ,EACf0lrB,EAAajlrB,KAAKT,KAI1B,MAAMwsD,EAAS,GACf,QAASytnB,EAAS,EAAGA,EAASyL,EAAa3krB,OAAQk5qB,IAAU,CACzD,MACM2L,GAAaC,GAAY1pb,EADlBupb,EAAazL,GACmBA,GACnB,IAAtB2L,GAAW7krB,QAIfyrD,EAAO/rD,KAAKmlrB,IAGhB,OAAOp5nB,EAGXs3nB,eAAe3nb,EAAQ64I,GACnB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAM8yY,EAAc13I,EAAO,GACrB2pb,EAAW,IAAIjV,GAAS71qB,KAAM6F,OAAOw0D,OAAO,CAC9C8mM,OAAQA,EACRgpa,WAAYnqqB,KAAKmqqB,WACjBhiS,IAAK0Q,EAAY1Q,IACjBqB,QAASqP,EAAYrP,SACtBxpY,KAAKyqrB,sBAAsB5xS,EAAamB,KAE3Ch6Y,KAAK+7qB,YAAY+O,EAAU9wS,GAG/B+uS,oBAAoB5nb,EAAQ64I,GACxB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAM8yY,EAAc13I,EAAO,GACrB4pb,EAAmB,IAAI/F,GAAchlrB,KAAM,CAC7CmhQ,OAAQA,EACRgpa,WAAYnqqB,KAAKmqqB,WACjBhiS,IAAK0Q,EAAY1Q,IACjBqB,QAASqP,EAAYrP,UAGzBxpY,KAAK+7qB,YAAYgP,EAAkB/wS,GAGvCgvS,kBAAkB7nb,EAAQ64I,GACtB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAM8yY,EAAc13I,EAAO,GACrB6pb,EAAc,IAAIzQ,GAAYv6qB,KAAM,CACtCmhQ,OAAQA,EACRgpa,WAAYnqqB,KAAKmqqB,WACjBhiS,IAAK0Q,EAAY1Q,IACjBqB,QAASqP,EAAYrP,QACrBiU,KAAMzD,EAAKj7X,QAAQ0+X,OAGvBz9Y,KAAK+7qB,YAAYiP,EAAahxS,GAGlCqvS,gBAAgBlob,EAAQ64I,GACpB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MACMklrB,EAAY,IAAI1Z,GAAUvxqB,KAAM6F,OAAOw0D,OAAO,CAChD8vmB,WAAYnqqB,KAAKmqqB,WACjBhpa,OAAQA,GACTnhQ,KAAKyqrB,sBAJYtpb,EAAO,GAIgB64I,KAE3Ch6Y,KAAK+7qB,YAAYkP,EAAWjxS,GAGhC2uS,gBAAgBxnb,EAAQ64I,GACpB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MACMmlrB,EAAY,IAAIC,GAAUnrrB,KAAM6F,OAAOw0D,OAAO,CAChD8vmB,WAAYnqqB,KAAKmqqB,WACjBhpa,OAAQA,GACTnhQ,KAAKyqrB,sBAJYtpb,EAAO,GAIgB64I,KAE3Ch6Y,KAAK+7qB,YAAYmP,EAAWlxS,GAGhC6uS,qBAAqB1nb,EAAQ64I,GACzB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAMqlrB,EAAiB,IAAIxE,GAAe5mrB,KAAM,CAC5CmqqB,WAAYnqqB,KAAKmqqB,WACjBhpa,OAAQA,EACRs8I,KAAMzD,EAAKj7X,QAAQ0+X,OAGvBz9Y,KAAK+7qB,YAAYqP,EAAgBpxS,GAGrCmvS,gBAAgBhob,EAAQ64I,GACpB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAM8yY,EAAc13I,EAAO,GACrBooF,EAAQ,IAAI8hW,GAAUrrrB,KAAM,CAC9BmqqB,WAAYnqqB,KAAKmqqB,WACjBhiS,IAAK0Q,EAAY1Q,IACjBhnI,OAAQA,EACRqoI,QAASqP,EAAYrP,QACrBiU,KAAMzD,EAAKj7X,QAAQ0+X,OAGvBz9Y,KAAK+7qB,YAAYxyV,EAAOywD,GAG5BivS,uBAAuB9nb,EAAQ64I,GAC3B,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAM8yY,EAAc13I,EAAO,GACrBooF,EAAQ,IAAIstV,GAAiB72qB,KAAM,CACrCmqqB,WAAYnqqB,KAAKmqqB,WACjBhiS,IAAK0Q,EAAY1Q,IACjBhnI,OAAQA,EACRqoI,QAASqP,EAAYrP,QACrBiU,KAAMzD,EAAKj7X,QAAQ0+X,OAGvBz9Y,KAAK+7qB,YAAYxyV,EAAOywD,GAG5BkvS,mBAAmB/nb,EAAQ64I,GACvB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAM8yY,EAAc13I,EAAO,GACrBooF,EAAQ,IAAI+hW,GAAatrrB,KAAM,CACjCmqqB,WAAYnqqB,KAAKmqqB,WACjBhiS,IAAK0Q,EAAY1Q,IACjBhnI,OAAQA,EACRqoI,QAASqP,EAAYrP,QACrBiU,KAAMzD,EAAKj7X,QAAQ0+X,OAGvBz9Y,KAAK+7qB,YAAYxyV,EAAOywD,GAG5BovS,qBAAqBjob,EAAQ64I,GACzB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAM8yY,EAAc13I,EAAO,GACrBoqb,EAAiB,IAAIC,GAAexrrB,KAAM,CAC5CmhQ,OAAQA,EACRgpa,WAAYnqqB,KAAKmqqB,WACjBhiS,IAAK0Q,EAAY1Q,IACjBqB,QAASqP,EAAYrP,UAGzBxpY,KAAK+7qB,YAAYwP,EAAgBvxS,GAGrCyxS,qBAAqBC,EAAkBC,GACnC,MAAMC,EAAiBhD,GAAmB5orB,KAAKmhQ,OAAQkma,IAEvD,QAAS4C,EAAW,EAAGA,EAAWjqqB,KAAKmhQ,OAAOp7P,OAAQkkqB,IAAY,CAC9D,MAAMwC,EAAgBzsqB,KAAKmhQ,OAAO8oa,GAClC,GAAIpsB,GAAQ4uB,EAAc3kqB,KAAM6/qB,IAAc,CAC1C,MAAMjwmB,GAAO+0lB,EAAc/0lB,KACvBA,IAAQA,GAAKvtE,QAAUk7pB,IACvBumB,EAAenmrB,KAAKgnqB,IAKhC,QAASxC,EAAW,EAAGA,EAAW2hB,EAAe7lrB,OAAQkkqB,IAAY,CACjE,MAAM4hB,EAAaD,EAAe3hB,GAAUllS,cAAgB,GAC5D,GAAI8mT,IAAeH,IAAsBG,GAAoC,IAAtBF,EACnD,OAAO,GAKnBG,eAAeJ,EAAkBC,GAC7B,MAAMxqb,EAASnhQ,KAAKmhQ,OAEpB,QAAS8oa,EAAW,EAAGA,EAAW9oa,EAAOp7P,OAAQkkqB,IAAY,CACzD,MAAM4hB,EAAa1qb,EAAO8oa,GAAUllS,cAAgB,GACpD,IAAK8mT,IAAeH,IAAsBG,GAAoC,IAAtBF,IAA6Bxqb,EAAO8oa,GAAU3iS,cAClG,OAAO,GAKnB6gT,2BACI,MAAMhlb,EAAOnjQ,KAAKmjQ,KAClB,QAASx0P,EAAI,EAAGA,EAAIw0P,EAAKp9P,OAAQ4I,IACzBw0P,EAAKx0P,aAAc4jpB,IACnBpvZ,EAAKx0P,GAAG07oB,eAKpB49B,mBAAmBhjT,GACf,MAAMklS,EAAanqqB,KAAKmqqB,WAClB1gU,EAAc,GAAG91T,OAAO3zC,KAAK+e,QAAQgmX,cACrC5hI,EAAO,GAEb,QAASx0P,GAAI,EAAGA,GAAI86V,EAAY1jW,OAAQ4I,KAAK,CACzC,IAAI8rpB,GAAchxT,EAAY96V,IAG9B,GAAIkvoB,GAFa79oB,KAAKg+qB,SAASvjB,GAAYzgR,MAErB/U,GAAQ,CAC1B,MAAQjgY,QAAMuqP,cAAa,IAAOkra,GAelC,IAAI11R,GAUJ,GAxBA01R,GAAchgB,GAAW,CACrBzuoB,SAAUm+pB,EACVp7kB,SAAUo7kB,GAAcnqqB,KAAKsgpB,aAAa57U,IAC1Cp1E,kBAAmB66a,EAAanxB,EAAY,GAC7CyhB,IAEE7vD,GAAQ6vD,GAAYn/Q,aACrBm/Q,GAAYn/Q,UAAYt7Y,KAAK+rrB,eAG7B/rrB,KAAKyrrB,qBAAqBzmrB,GAAM2J,MAChC8rpB,GAAYn/Q,WAAY,GAMxBvW,GADJinT,GAAevxB,GAAalra,GAAW,IACpB,IAAI0lJ,GAAiBwlR,GAAaz6pB,KAAKsgpB,cAEvC,IAAIiS,GAAakI,GAAaz6pB,KAAKsgpB,cAGtD72S,EAAY96V,IAAG4gP,WAAaw1I,GAAahmX,QAAQyzoB,cAE7CxtpB,GAAM,CACN,GAAIhF,KAAK6nrB,kBAAkB7irB,IACvB,MAAM,IAAIyR,MAAO,2BAA2BzR,yBAEhDhF,KAAK6nrB,kBAAkB7irB,IAAQ+/X,GAGnCA,GAAa8M,UAAYljY,GACzBw0P,EAAK19P,KAAKs/X,IACV/kY,KAAK67qB,WAAW92S,KAIxB,MAAMknT,EAAcjsrB,KAAK+kY,cAAgB5hI,EAAK,GAC9CnjQ,KAAK+kY,aAAeknT,EAEpBx0d,EACIz3N,KAAKirpB,MAAQghC,EAEbjsrB,KAAKgrpB,MAAQihC,EAIrBF,cACI,MAAM5qb,EAASnhQ,KAAKmhQ,OAEpB,QAASxyP,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAE/B,IAAKkvoB,GADiB18Y,EAAOxyP,GACF7G,KAAM6/qB,IAC7B,OAAO,EAIf,OAAO,EAGXU,gBAAgBpjT,GACZ,MAAMinT,EAAUlsrB,KAAK8nrB,sBACfqE,EAAeD,EAAQrnlB,QACvB4kQ,EAAc,GAAG91T,OAAO3zC,KAAK+e,QAAQsmX,WACrC8kS,EAAanqqB,KAAKmqqB,WAClBjjhB,GAAc,CAAEl7I,UAAWm+pB,EAAYp7kB,QAASo7kB,GAAcnqqB,KAAKsgpB,aAAa57U,KAChFvhE,GAAO,GAETnjQ,KAAKgorB,WACL9giB,GAAY6ygB,kBAAmB,EAC/B7ygB,GAAYsjP,OAAS,CAAEpvX,OAAQ,OAGnC,QAASzM,GAAI,EAAGA,GAAI86V,EAAY1jW,OAAQ4I,KAAK,CACzC,MAAM8rpB,GAAchxT,EAAY96V,IAGhC,GAAIkvoB,GAFa79oB,KAAKg+qB,SAASvjB,GAAYzgR,MAErB/U,GAAQ,CAC1B,MAAMjgY,GAAOy1pB,GAAYz1pB,KACnBonrB,GAAmBzP,GAAiBliB,GAAY3ypB,KAAMqgqB,IAAe,CAAE11nB,IAAK,GAAKjkC,IAAK,GAAM,CAAEikC,IAAK,EAAGjkC,IAAK,GAC3Go5D,GAAQsknB,EAAQrnlB,MAAM7/F,KAASmnrB,GAAgBC,GAOrD,IAAI7sB,GALM,IAAN5wpB,IAAWi5D,IAASuknB,IACpBvknB,GAAMn1B,IAAMvlC,KAAKulC,IAAIm1B,GAAMn1B,IAAK05oB,EAAa15oB,KAC7Cm1B,GAAMp5D,IAAMtB,KAAKsB,IAAIo5D,GAAMp5D,IAAK29qB,EAAa39qB,MAK7C+wpB,GADAod,GAAiBliB,GAAY3ypB,KAAMqgqB,IACxBrM,GAEAnB,GAGf,MAAMt1R,GAAY,IAAIk6R,GAAS33lB,GAAMn1B,IAAKm1B,GAAMp5D,IAC5CisoB,GAAW,GAAIvzf,GAAauzgB,IAC5Bz6pB,KAAKsgpB,cAGT,GAAIt7oB,GAAM,CACN,GAAIhF,KAAKssqB,eAAetnqB,IACpB,MAAM,IAAIyR,MAAO,wBAAwBzR,yBAE7ChF,KAAKssqB,eAAetnqB,IAAQqgY,GAEhCA,GAAUwM,UAAYljY,GAEtBw0P,GAAK19P,KAAK4/X,IACVrlY,KAAK67qB,WAAWx2S,KAIxB,MAAM4mT,GAAcjsrB,KAAKqlY,WAAaliI,GAAK,GAC3CnjQ,KAAKqlY,UAAY4mT,GAEjBtpC,EACI3ipB,KAAKgrpB,MAAQihC,GAEbjsrB,KAAKirpB,MAAQghC,GAIrBzI,eAAej6V,EAAOtgV,EAAGojrB,GACrB,MAAMxzmB,EAAS0wQ,EAAM+iW,kBAAkBrjrB,GACjCwvE,EAAQ,IAAIyB,GAAMrB,EAAOlvE,EAAGkvE,EAAO/kB,GACnCkmV,GAAOh6Y,KAAKusrB,UAAU9zmB,GACtB82K,GAAa,GACblpP,GAAS,GAEf,IAAK2zY,GACD,OAGJ,MAAMkiS,GAAUliS,GAAK72I,KACrB,QAASx0P,GAAI,EAAGA,GAAIutqB,GAAQn2qB,OAAQ4I,KAAK,CACrC,MAAMw3X,GAAO+1S,GAAQvtqB,IACjBw3X,GAAK7+V,SACLklpB,GAAgBnmrB,GAAQ8/X,GAAK7+V,SAASmxC,IAEtC+zmB,GAAgBj9b,GAAY42I,GAAK6tR,YAAYv7kB,IAI3B,IAAtB82K,GAAWxpP,QACXymrB,GAAgBj9b,GAAYvvP,KAAK+kY,aAAaivR,YAAYv7kB,IAG1D82K,GAAWxpP,OAAS,GAAKM,GAAON,OAAS,GACzCwjV,EAAMt/U,QAAQoirB,EAAW,CACrB33qB,QAASsmoB,GAAa/xoB,GACtBosH,cAAepsH,EACfm4P,SAAUqrb,GAAkBl9b,IAC5B5rP,MAAO8orB,GAAkBpmrB,MAKrCkmrB,UAAU9zmB,GACN,MAAMwsT,EAAQjlY,KAAKilY,MAEnB,QAASt2X,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMgvqB,EAAc14S,EAAMt2X,GAC1B,GAAIgvqB,EAAYj7B,WAAW3xiB,cAAct4B,GACrC,OAAOklmB,GAKnB+O,kBAAkBvmT,EAAMpnX,GACpB2tqB,GAAkB1srB,KAAK+e,QAASonX,EAAMpnX,GACtC2tqB,GAAkB1srB,KAAKyxf,gBAAiBtrH,EAAMpnX,IAItD,YAA2B4tqB,GAAexmT,EAAMpnX,GAE5C07nB,GADmD,GAAG9mmB,OAAlCwyV,aAAgBosR,GAAyBo6B,GAAc5nT,aAA0B4nT,GAActnT,WAC5Fc,EAAK0L,WAAY9yX,GAG5C,YAAqBoiP,GAAQglI,EAAM84S,GAC/B,OAAOj7B,GAAK7iZ,GAAQ,SAASt6P,GACzB,OAAmB,IAAXo4qB,IAAiBp4qB,EAAEk+X,cAAkBl+X,EAAEk+X,eAAiBoB,IAIxE28Q,GAAkB8pC,GAAqB,CACnC7nT,aAAc,GACdM,UAAW,KAGfo1Q,GAAWmyC,GAAoBvsqB,UAAWwsqB,IAE1C,SAAeD,gHC5vBf,MAAME,GAAgB,CAClB,eAAgB,eAChB,eAAgB,SAChB,eAAgB,eAChB,iBAAkB,kBAuLtB7xL,GAnLA,iBAAuBprX,KAEnBk9iB,iBACI/srB,KAAK66d,KAAK,IAAK76d,KAAKgtrB,cACpBhtrB,KAAKitrB,aAGTC,cAAcjkrB,GACV,OAAQA,EAAE4hD,WACD,OACG5hD,EAAEtF,MACF3D,KAAKmtrB,QAAQntrB,KAAKotrB,QAAQnkrB,EAAEtF,QAE5B3D,KAAKqtrB,WAAW,QAEpB,UAEC,aACDrtrB,KAAKmtrB,QAAQntrB,KAAKotrB,QAAQ,CAAE7tiB,MAAOt2I,EAAEtF,SACrC,UAEC,SACGsF,EAAEtF,MACF3D,KAAKmtrB,QAAQntrB,KAAKstrB,UAAUrkrB,EAAEtF,QAE9B3D,KAAKqtrB,WAAW,UAEpB,UAEC,YACDrtrB,KAAKutrB,gBAAgBtkrB,EAAEtF,OACvB,cAGA,MAAMqB,EAAO8nrB,GAAc7jrB,EAAE4hD,OACzB7lD,GACAhF,KAAK66d,KAAK71d,EAAMiE,EAAEtF,OAK9B6b,MAAM0tqB,cAAcjkrB,GAGxB2V,UACQ5e,KAAK0U,UACL1U,KAAK0U,QAAQshX,YAAch2X,KAAKgthB,WAAWpugB,WAInDouqB,aACI,OAAOhtrB,KAAKwtrB,UAAUxtrB,KAAKgthB,YAG/BwgK,UAAU9jgB,GACN,MAAMvtD,EAAWutD,EAAKvtD,SAChBp2H,EAASo2H,EAASp2H,OACxB,GAAIA,EAAS,EAAG,CACZ,MAAM22T,EAAQ,GACd,IAAIjqS,EAAQg7pB,GAEZ,QAAS9+qB,GAAI,EAAGA,GAAI5I,EAAQ4I,KAAK,CAC7B,IAAI63qB,GAAcxmrB,KAAKwmrB,YAAYrqjB,EAASxtH,GAAI,GAAIwtH,EAASxtH,KACzD63qB,KAAgBiH,KAChBA,GAAcjH,GACd9pX,EAAMj3T,KAAK+grB,KAIX9pX,EAAMj3T,KADU,MAApBojpB,GACe7opB,KAAK0trB,YAAYvxjB,EAASxtH,IAAGV,UAE7BjO,KAAK0trB,YAAYvxjB,EAASxtH,GAAI,GAAGsxpB,aAAc9jiB,EAASxtH,IAAGmkqB,YAAa32iB,EAASxtH,IAAGV,WAIvGwkB,SAAS,IAAMzyB,KAAK0trB,YAAYvxjB,EAAS,GAAGluH,UA7E1C,IA6E8DyuT,EAAMj1S,KA7EpE,KA8EEiiK,EAAK3qK,QAAQi+Q,SACbvqQ,GAAU,KAGPA,GAIfi7pB,cACI,MAAM5tmB,EAAS/iD,UACTh3B,EAAS+5E,EAAO/5E,OAChBwM,EAAS,GAEf,QAAS5D,EAAI,EAAGA,EAAI5I,EAAQ4I,IACxB4D,EAAO9M,KAAKq6E,EAAOnxE,GAAG5D,SAAS,IAGnC,OAAOwH,EAAOkV,KAAK,KAGvB++pB,YAAYmH,EAAcC,GACtB,OAAOD,EAAa1tB,cAAgB2tB,EAAW9a,YAAc,IAAM,IAGvEwa,UAAUzriB,GACN,MAAMmrF,EAAQ,GAEd,OAAInrF,OAAW4giB,MAAc5giB,EAAOtC,QAChCytF,EAAMvnO,KAAK,CAAE,SAAUo8I,EAAOtC,QAC9BytF,EAAMvnO,KAAK,CAAE,eAAgBo8I,EAAOnrI,QACpCs2N,EAAMvnO,KAAK,CAAE,iBAAkBzF,KAAK6trB,cAAchsiB,KAClDmrF,EAAMvnO,KAAK,CAAE,kBAAmBo8I,EAAOwyhB,YAEnCzpE,QAAQ/od,EAAOz3I,UACf4iO,EAAMvnO,KAAK,CAAE,iBAAkBo8I,EAAOz3I,WAGtCwgmB,QAAQ/od,EAAOmgH,WACfh1B,EAAMvnO,KAAK,CAAE,mBAAoBzF,KAAK8trB,eAAejsiB,MAGzDmrF,EAAMvnO,KAAK,CAAE,SAAUirE,OAGpBs8J,EAGX+gd,eACI,SAAOC,MACHhurB,KAAKstrB,UAAUttrB,KAAKgthB,WAAWjugB,QAAQ8iI,SAI/CisiB,eAAejsiB,GACX,MAAQmgH,WAAUtrP,QAAQ,GAAMmrI,EAEhC,GAAImgH,GAAYA,IAAaisb,MAAO,CAChC,MAAMC,EAAYC,MAAYnsb,EAAS3mO,eACjC9oB,EAAS,GAEf,QAAS5D,GAAI,EAAGA,GAAIu/qB,EAAUnorB,OAAQ4I,KAClC4D,EAAO9M,KAAKyorB,EAAUv/qB,IAAK+H,GAG/B,OAAOnE,EAAOkV,KAAK,MAI3BomqB,cAAchsiB,GACV,MAAQmgH,WAAUjxG,WAAYlP,EAE9B,OAAQmgH,GAAyB,UAAbA,EAAwBosb,KAAOr9hB,EAGvDq8hB,QAAQ1+qB,GACJ,MAAMs+N,EAAQ,GACd,OAAMt+N,GAA0B,aAAlBA,EAAKw1W,WACXx1W,OAAS+zqB,MAAc/zqB,EAAK6wI,QAC5BytF,EAAMvnO,KAAK,CAAE,OAAQiJ,EAAK6wI,SAEtBqrd,QAAQl8lB,EAAKtE,UACb4iO,EAAMvnO,KAAK,CAAE,eAAgBiJ,EAAKtE,WAGtC4iO,EAAMvnO,KAAK,CAAE,OAAQirE,QAItBs8J,EAGXqhd,aACI,SAAOL,MACHhurB,KAAKotrB,QAAQptrB,KAAKgthB,WAAWjugB,QAAQrQ,OAI7CwjD,WACI,MAAQ,SAASlyD,KAAKsurB,cAAgBturB,KAAKuurB,iBAAmBvurB,KAAKwurB,oBAAqBC,QAAW,IAAKzurB,KAAKgtrB,gBAC7FhtrB,KAAK+trB,iBAAmB/trB,KAAKqurB,eAAiBrurB,KAAK0urB,sBAAwB1urB,KAAK2urB,8BCtLxGC,GANA,iBAAsBC,GAClB7B,aACI,OAAOhtrB,KAAKwtrB,UAAUxtrB,KAAKgthB,WAAWk5J,YCwB9C4I,GA1BA,iBAAyBD,GAErB9B,iBACI,MAAM19mB,EAASrvE,KAAKqvE,SACpBrvE,KAAK66d,KAAK,KAAMxrZ,EAAO1lE,GACvB3J,KAAK66d,KAAK,KAAMxrZ,EAAOvb,GACvB9zD,KAAK66d,KAAK,IAAK76d,KAAKyyF,UACpBzyF,KAAKitrB,aAGT59mB,SACI,OAAOrvE,KAAKgthB,WAAW9jb,WAAW75B,OAGtCojB,SACI,OAAOzyF,KAAKgthB,WAAW9jb,WAAWzW,OAGtCvgC,WACI,MAAQ,WAAWlyD,KAAKsurB,cAAgBturB,KAAKuurB,iBAAmBvurB,KAAKwurB,sBACjDxurB,KAAKqvE,SAAS1lE,UAAY3J,KAAKqvE,SAASvb,SAAW9zD,KAAKyyF,YAC5DzyF,KAAK+trB,kBAAoB/trB,KAAKqurB,gBAAkBrurB,KAAK0urB,sBACrD1urB,KAAK2urB,iCCR7BI,GAdA,iBAAwBl/iB,KACpB39E,WACI,MAAQ,KAAKlyD,KAAKsurB,WAAaturB,KAAK2urB,kBAAoB3urB,KAAKuurB,cAAgBvurB,KAAKwurB,gBAAkBxurB,KAAK0urB,uBAAyB1urB,KAAK2gpB,uBAG3IusC,cAAcjkrB,GACM,cAAZA,EAAE4hD,OACF7qD,KAAKutrB,gBAAgBtkrB,EAAEtF,OAG3B6b,MAAM0tqB,cAAcjkrB,KCZtB+lrB,GAAY,KACZC,GAAW,KACXC,GAAc,KACdC,GAAa,KACbC,GAAW,KAEF,YAAoBzrrB,IAC/B,OAAOqvB,OAAOrvB,IAAO4nB,QAAQyjqB,GAAW,SAASzjqB,QAAQ0jqB,GAAU,QAAQ1jqB,QAAQ6jqB,GAAU,QAAQ7jqB,QAAQ2jqB,GAAa,UAAU3jqB,QAAQ4jqB,GAAY,SCiD5J,SApDA,iBAAwBN,GAEpB9B,iBACI/srB,KAAKmtrB,QAAQntrB,KAAKqvrB,eAClBrvrB,KAAKitrB,aAGTC,cAAcjkrB,GACM,QAAZA,EAAE4hD,OACF7qD,KAAKmtrB,QAAQntrB,KAAKsvrB,aAGtB9vqB,MAAM0tqB,cAAcjkrB,GAGxBomrB,cACI,MAAMnxW,EAAOl+U,KAAKgthB,WAAW9uM,OACvBuyB,EAAKvyB,EAAKogL,UAEhB,MAAO,CACH,CAAE,IAAK7tJ,EAAG9mW,GACV,CAAE,IAAK8mW,EAAG38S,GACV,CAAE,QAASoqR,EAAKxnU,QAAU,MAC1B,CAAE,SAAUwnU,EAAK3zU,SAAW,OAIpCglrB,iBACI,OAAOvB,QAAchurB,KAAKqvrB,eAG9BC,UAAUh3gB,GACN,IAAIn+H,EAAMn6C,KAAKgthB,WAAW7ye,MAE1B,OAAIm+H,IACAn+H,EAAMq1oB,GAAWr1oB,IAGd,CAAE,CAAE,aAAcA,IAG7Bs1oB,eACI,OAAOzB,QAAchurB,KAAKsvrB,WAAU,IAGxCp9nB,WACI,MAAQ,qCAAqClyD,KAAKsurB,cAAgBturB,KAAKuurB,iBAAmBvurB,KAAK2urB,qBAAsB3urB,KAAKwurB,kBAC/GxurB,KAAKuvrB,oBAAsBvvrB,KAAKyvrB,kBAAoBzvrB,KAAK0urB,iCCjC5EgB,GAhBA,iBAA4Bb,GACxB7B,aACI,MAAMtshB,EAAQ1gK,KAAKgthB,WAAWtsX,MAE9B,GAAIA,EAAM36J,OAAS,EAAG,CAClB,MAAMwM,EAAS,GAEf,QAAS5D,EAAI,EAAGA,EAAI+xJ,EAAM36J,OAAQ4I,IAC9B4D,EAAO9M,KAAKzF,KAAKwtrB,UAAU9shB,EAAM/xJ,KAGrC,OAAO4D,EAAOkV,KAAK,QC0B/BqtC,GArCA,iBAAuB+5nB,GAEnB9B,iBACI,MAAM7jlB,EAAWlpG,KAAKgthB,WAAW9jb,WACjClpG,KAAK66d,KAAK,IAAK3xX,EAAS7kE,OAAO16B,GAC/B3J,KAAK66d,KAAK,IAAK3xX,EAAS7kE,OAAOyvB,GAC/B9zD,KAAK66d,KAAK,QAAS3xX,EAASl6C,KAAKt4C,OACjC1W,KAAK66d,KAAK,SAAU3xX,EAASl6C,KAAKzkD,QAClCvK,KAAK66d,KAAK,KAAM3xX,EAASymlB,aAAa,IACtC3vrB,KAAK66d,KAAK,KAAM3xX,EAASymlB,aAAa,IACtC3vrB,KAAKitrB,aAGTj+nB,OACI,OAAOhvD,KAAKgthB,WAAW9jb,WAAWl6C,KAGtC3qB,SACI,OAAOrkC,KAAKgthB,WAAW9jb,WAAW7kE,OAGtCurpB,KACI,OAAO5vrB,KAAKgthB,WAAW9jb,WAAWymlB,aAAa,GAGnDE,KACI,OAAO7vrB,KAAKgthB,WAAW9jb,WAAWymlB,aAAa,GAGnDz9nB,WACI,MAAQ,SAASlyD,KAAKsurB,cAAgBturB,KAAKuurB,iBAAmBvurB,KAAKwurB,sBAAwBxurB,KAAKqkC,SAAS16B,SAAW3J,KAAKqkC,SAASyvB,UAC9G9zD,KAAK4vrB,aAAe5vrB,KAAK6vrB,gBACtB7vrB,KAAKgvD,OAAOt4C,kBAAoB1W,KAAKgvD,OAAOzkD,WAAavK,KAAK+trB,kBACrE/trB,KAAKqurB,gBAAkBrurB,KAAK0urB,uBAAyB1urB,KAAK2urB,yCC7BlF,MAAMmB,GAAe,wBAErB,YAAwBhlrB,IACpB,IAAKA,IAAwB,iBAATA,KAAsBglrB,GAAat0Q,KAAK1wa,IACxD,OAAOA,GAGX,MAAM4J,EAAUq7qB,GAAerrV,SAC/BorV,UAAaximB,UAAY,EAElBxiF,GAAKygB,QAAQukqB,GAAevuqB,IAC/B7M,EAAQ2oC,UAAY97B,EAEb7M,EAAQshX,aAAethX,EAAQ2qX,YAItB,oBAAb19W,WACPouqB,GAAerrV,SAAW/iV,SAAS+O,cAAc,SAmErD,SAhEA,iBAAuBm+pB,GAEnB9B,iBACI,MAAMlkmB,EAAM7oF,KAAK6oF,MACjB7oF,KAAK66d,KAAK,IAAKhyY,EAAIl/E,GACnB3J,KAAK66d,KAAK,IAAKhyY,EAAI/0B,GACnB9zD,KAAKitrB,aAGTC,cAAcjkrB,GACM,SAAZA,EAAE4hD,OACF7qD,KAAK66d,KAAK,SAAS0zN,QAAYvurB,KAAKgwrB,aACpChwrB,KAAK+srB,kBACc,YAAZ9jrB,EAAE4hD,OACTrrC,MAAMZ,QAAQ5e,KAAKgthB,WAAWpugB,WAGlCY,MAAM0tqB,cAAcjkrB,GAGxB+mrB,SAAS13gB,GACL,MAAMnuK,EAAQqV,MAAMwwqB,SAAS13gB,GAC7B,IAAIjzB,EAAOrlJ,KAAKgthB,WAAWjugB,QAAQsmI,KAEnC,OAAIizB,IACAjzB,EAAOmqiB,GAAWnqiB,IAGtBl7I,EAAM1E,KAAK,CAAE,OAAQ4/I,GAAQ,CAAE,cAAe,QAEvCl7I,EAGX0+E,MACI,MAAMA,EAAM7oF,KAAKgthB,WAAW9if,WACtB8kB,EAAOhvD,KAAKgthB,WAAWrjI,UAC7B,OAAO9gU,EAAI2mC,QAAQygkB,KAAKpnmB,EAAI/0B,EAAI9E,EAAKw3lB,UAGzC0pC,gBACI,IAAItxqB,EAAU5e,KAAKgthB,WAAWpugB,UAC9BA,SAAUmxqB,GAAenxqB,GACzBA,EAAU4wqB,GAAW5wqB,MAEduxqB,OAAcvxqB,GAGzBwxqB,mBACI,IAAInirB,EAEJ,OAAKjO,KAAK+e,SAAW,IAAI2lT,OAASm6K,mBAAwBA,qBACtD5we,EAAS,QAGNwgrB,QAAW,cAAexgrB,GAGrCikD,WACI,MAAQ,SAASlyD,KAAKsurB,cAAgBturB,KAAKowrB,sBAAwBpwrB,KAAKuurB,iBAAmBvurB,KAAKwurB,qBAC7ExurB,KAAK6oF,MAAMl/E,SAAW3J,KAAK6oF,MAAM/0B,MAAQ9zD,KAAK+trB,kBAAoB/trB,KAAK2urB,qBAAuB3urB,KAAK0urB,sBACtG1urB,KAAKqurB,gBAAkBrurB,KAAKkwrB,2CCrEpDG,SAAeC,GACfD,YAAkBE,GAClBF,WAAiBG,GACjBH,WAAiBI,GACjBJ,eAAqBK,GACrBL,UAAgBxB,GAChBwB,UAAgBM,GAChBN,UAAgBO,GAsHhB,SA/FA,iBAAsBC,KACd/orB,WACA,MAAO,MAGXhI,YAAY4U,EAASqK,GACjBS,MAAM9K,EAASqK,GAEf/e,KAAK8wrB,MAAQ,IAAIC,KAASlrrB,OAAOw0D,OAAO,CACpCqqQ,IA9BA,SA8BKssX,QAAct8qB,EAAS,aAAazI,WAC1CjM,KAAK+e,aAERkyqB,MAAUjxrB,KAAK0U,QAAS1U,KAAKkvb,aAE7Blvb,KAAKkxrB,aAAelxrB,KAAK0U,QAAQy8qB,kBAjCzC,YAAuBz8qB,IACnB,IAAI08qB,EAEJ,IACIA,EAAM18qB,GAAQ28qB,aAAe38qB,GAAQ28qB,eAAiB,WACjDporB,IAET,GAAImorB,EAAK,CACL,MAAMhinB,GAASginB,EAAInorB,EAAI,EACjBklH,GAAQijkB,EAAIxrrB,EAAI,EAChBuE,EAAQuK,GAAQvK,OAET,IAATilE,GAAsB,IAAR++C,KACdhkH,EAAMilE,KAAOA,EAAO,KACpBjlE,EAAMgkH,IAAMA,EAAM,OAqBtBmjkB,CAActxrB,KAAKkxrB,cAEnBlxrB,KAAK8wrB,MAAMS,SAASvxrB,KAAKkxrB,eAEzB37Q,QAAWv1a,KAAK0U,QAAS,CACrB+2D,MAAOzrE,KAAKqmJ,OACZmriB,UAAWxxrB,KAAKyxrB,YAChBvsH,SAAUllkB,KAAK0xrB,YACfC,UAAW3xrB,KAAK4xrB,aAGpB5xrB,KAAK42Y,SAGTnxE,UACQzlU,KAAK8wrB,QACL9wrB,KAAK8wrB,MAAMrrX,UACXzlU,KAAK8wrB,MAAQ,KACb9wrB,KAAKkxrB,aAAe,MACpB91C,QAAap7oB,KAAK0U,QAAS,CACvB+2D,MAAOzrE,KAAKqmJ,OACZmriB,UAAWxxrB,KAAKyxrB,YAChBvsH,SAAUllkB,KAAK0xrB,YACfC,UAAW3xrB,KAAK4xrB,cAIxBpyqB,MAAMimT,UAGVjtR,UAAUpmB,GACN,MAAMy/pB,EAAW,GAAG3krB,KAAK4zF,MAAM1uE,EAAOzoB,MAAQuD,KAAK4zF,MAAM1uE,EAAO0hC,MAAQ9zD,KAAKm5jB,MAAMzijB,SAAW1W,KAAKm5jB,MAAM5ujB,SAEzGvK,KAAK8xrB,QAAU1/pB,EACfpyB,KAAKkxrB,aAAar3kB,aAAa,UAAWg4kB,GAG9Cx1iB,KAAK3nI,GACD8K,MAAM68H,KAAK3nI,GACX1U,KAAK8wrB,MAAM3yhB,KAAK,CAAEzpJ,IAGtB4qC,QACI9/B,MAAM8/B,QACNt/C,KAAK8wrB,MAAMxxoB,QAGf6wB,MACI,MAAO,yBAA2BnwE,KAAKkvb,YAG3Ch4C,eACI,IAAM66S,QAASnub,EAAQkub,QAAS1/pB,GAAWpyB,KAE3C,GAAIoyB,EAAQ,CACR,MAAMkoC,EAAO,IAAIkuF,KACjBluF,EAAKkE,SAAS/4D,KAAKm+P,GAEnBtpM,EAAKjwD,aACDA,QAAYmuC,WAAWpmB,EAAOzoB,GAAIyoB,EAAO0hC,IAG7C8vM,EAAStpM,EAGb,OAAOspM,EAGXoub,UACQhyrB,KAAK8xrB,SACL9xrB,KAAKw4C,UAAUx4C,KAAK8xrB,SAI5B5iQ,YACI,MAAQ,oEAAoE+iQ,kEAAsEjyrB,KAAK8wrB,MAAMn0kB,mCCvIrK,IAAIv7F,GACAy9d,GAEJ,MAAMqzM,GAAc,IAA0B,oBAAbvwqB,SAQjC,iBAA6B46nB,KACd19J,qBACP,OAAKA,KACDA,GAAU,CACNpjc,OAVay2oB,MACzBvwqB,SAAS+O,cAAc,UAAUgrB,WAUrBy0B,IARU+hnB,MACtBvwqB,SAASunoB,eAAeipC,WAAW,oDAAqD,SAW7EtzM,GAGAx4c,qBACP,OAAKjlB,KACDA,GAAW,IAAIgxqB,IAGZhxqB,GAGXthB,cACI0f,QAEAxf,KAAKm0lB,OAAS,CAAE,CACZnvlB,KAAM,MACN8C,KAAMuqrB,IACP,CACCrtrB,KAAM,SACN8C,KAAMwqrB,OAIdtwnB,OAAOttD,EAASqK,GACZ,MAAMyzC,EAAQxyD,KAAKm0lB,OACnB,IAAI5ykB,EAAQixC,EAAM,GAElB,GAAIzzC,GAAWA,EAAQjX,KAAM,CACzB,MAAMyqrB,EAAYxzqB,EAAQjX,KAAKuzB,cAC/B,QAAS1sB,GAAI,EAAGA,GAAI6jD,EAAMzsD,OAAQ4I,KAC9B,GAAI6jD,EAAM7jD,IAAG3J,OAASutrB,EAAW,CAC7BhxqB,EAAQixC,EAAM7jD,IACd,OAKZ,GAAI4S,EACA,OAAO,IAAIA,EAAMzZ,KAAK4M,EAASqK,GAGnCy8nB,GACI,oIAC+Dj3mB,UAAUvf,cAIrF,SAAeotqB,GC1DfI,GAVA,iBAAsB3B,KACPhyM,qBACP,OAAOuzM,yBAGG19qB,EAASqK,GACnB,OAAOqzqB,kBAA8B19qB,EAASqK,KC4DtD,cACI/e,KAAKyyrB,mBAAoB,EAG7B,SAvEA,iBAAwBl2C,KACpBz8oB,cACI0f,QAEAxf,KAAKs5E,QAAU,GAGnBmsP,UACIzlU,KAAKs5E,QAAU,GAGnB9rE,KAAKsyE,EAAQ11E,GACT,MAAMsorB,EAAc,GAAG/+oB,OAAOmsC,GAC9B9/E,KAAK69D,OAEL,QAASlvD,EAAI,EAAGA,EAAI+jrB,EAAY3srB,OAAQ4I,IAAK,CACzC,MAAM8pE,EAAQi6mB,EAAY/jrB,GACtB8pE,GAASA,EAAM++T,iBAAmB/+T,EAAMgpkB,iBACxCzhpB,KAAK2yrB,qBAAqBl6mB,GAAO,EAAMruE,GACvCpK,KAAKs5E,QAAQ7zE,KAAKgzE,KAK9Bk6mB,qBAAqBl6mB,EAAOjrE,EAAMpD,GAC9B,MAAMworB,GAAiBn6mB,EAAM15D,QAAQwrX,WAAa,IAAIzhJ,OACtD,GAAI8pc,EAAe,CACf,MAAMn8nB,EAAY,CACd2qM,SAAU3oL,EAAM2oL,SAChBD,OAAQ1oL,EAAM0oL,OACd7rM,SAAUmjB,EAAMnjB,SAChB3xD,MAAO80E,EAAM90E,MACbsiY,WAAYxtT,EAAMwtT,WAClB/jV,eAAgBA,GAChB0hN,OAAQnrL,EAAM61lB,kBACd9gqB,KAAMA,GAEVolrB,EAAcn8nB,GACTA,EAAUg8nB,mBACXh6mB,EAAM++T,gBAAgBhqY,EAAMpD,QAGhCquE,EAAM++T,gBAAgBhqY,EAAMpD,GAIpCyzD,OACI,MAAMiiB,EAAS9/E,KAAKs5E,QACpB,KAAOwG,EAAO/5E,QACV/F,KAAK2yrB,qBAAqB7ymB,EAAOhtD,OAAO,GAIhD+/pB,cAAcn+qB,GACV,MAAMorE,EAAS9/E,KAAKs5E,QAEpB,QAAS3qE,EAAI,EAAGA,EAAImxE,EAAO/5E,OAAQ4I,IAE/B,GAAI+F,IADUorE,EAAOnxE,GAEjB,OAAO,EAIf,OAAO,ICjEA,YAAmB1F,GAAG6prB,GACjC,MAAMjgrB,GAAOigrB,GAAY,IAAIz3pB,cACvB1tB,EAAQ1E,GAAE0E,MAGhB,MAFwB,SAARkF,KAAoBlF,EAAMi4D,SAAWj4D,EAAMgja,UAAYhja,EAAMkvX,SAAYlvX,EAAMkF,EAAM,OCH1F,YAA2BuzX,IACtC,MAAMg7F,EAAS,GACf,QAASj3b,EAAM,EAAGA,EAAMi8V,GAAWrgY,OAAQokC,IAAO,CAC9C,MAAMkioB,EAAYjmS,GAAWj8V,GACzBkioB,EAAUlmS,KAAKpnX,QAAQ/Z,OACvBo8d,EAAOirM,EAAUlmS,KAAKpnX,QAAQ/Z,MAAQ,CAClCytC,IAAK45nB,EAAUzkmB,MAAMn1B,IACrBjkC,IAAK69pB,EAAUzkmB,MAAMp5D,MAIjC,OAAO4yd,ECLX,iBAAuBm7K,KACnBz8oB,YAAYqlY,EAAUpmX,GAClBS,QAEAxf,KAAKmlY,SAAWA,EAChBnlY,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASA,GAGhDiO,MAAM/jB,GACF,YAAK6xX,QAAUi4T,GAAU9prB,EAAGjJ,KAAK+e,QAAQlM,KAClC7S,KAAK86X,QAGhBxlQ,KAAKrsH,GACD,GAAIjJ,KAAK86X,QAAS,CACd,MAAMsL,EAAapmY,KAAKomY,WAAapmY,KAAKgzrB,SAAS/prB,EAAGlB,IAAG4rC,OAAO3zC,KAAKgzrB,SAAS/prB,EAAGnD,KACjF,GAAIsgY,EAAWrgY,OACX,YAAKqgY,WAAaA,EACX6sT,GAAkB7sT,IAKrC97V,MACI,MAAMqlC,EAAS3vE,KAAK86X,QACpB,YAAKA,SAAU,EAERnrT,EAGX8klB,MACI,MAAQtvR,WAAUiB,cAAepmY,KACjC,GAAIomY,EAAWrgY,OAAQ,CACnB,QAASokC,EAAM,EAAGA,EAAMi8V,EAAWrgY,OAAQokC,IAAO,CAC9C,MAAMy9B,EAAQw+T,EAAWj8V,GACzBg7V,EAASunT,kBAAkB9knB,EAAMu+T,KAAMv+T,EAAMA,OAEjDu9T,EAASxkP,OAAOwkP,EAASF,QAIjCx/D,iBACWzlU,KAAKmlY,SAGhB6tT,SAAS/prB,EAAGihC,GACR,MAAMi7V,EAAWnlY,KAAKmlY,SAChBp1Q,GAAS9mH,EAAEihC,GAAU6lF,MACrBoyX,GAAQnif,KAAK+e,QAAQoje,MAAQ,IAAI9md,cACjC63pB,GAAc,GAEpB,GAAc,IAAVnjkB,IAAgBoyX,GAAQ,IAAI9md,gBAAkB6O,EAAU,CACxD,MAAMi5N,GAAOgiI,EAAShiI,KACtB,QAASh5N,GAAM,EAAGA,GAAMg5N,GAAKp9P,OAAQokC,KAAO,CACxC,MAAMg8V,GAAOhjI,GAAKh5N,IAElB,GAAID,IAAaniC,KAAMo+X,GAAKpnX,QAAQ/S,UAAYk+B,IAAapkC,IAAKqgY,GAAKpnX,QAAQ/S,SAAU,CACrF,MAAM47D,GAAQu+T,GAAKsuR,IAAI1kiB,GAEnBnoD,KACAA,GAAMutX,YAAa,EACnB+9P,GAAYztrB,KAAK,CACb0gY,KAAMA,GACNv+T,MAAOA,QAO3B,OAAOsrnB,IAIf5rW,GAASjnU,UAAUtB,QAAU,CACzBlM,IAAK,OACLsve,KAAM,QAGV,SAAe76J,GC/Ef,iBAA4Bi1T,KACxBz8oB,YAAYypV,EAAOxqU,GACfS,QAEAxf,KAAKupV,MAAQA,EACbvpV,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASA,GAC5C/e,KAAK0wB,gBAGTA,gBACI,MAAMuggB,EAAUjxhB,KAAKmzrB,SAAWxxqB,SAAS+O,cAAc,OACvDuggB,EAAQ7ze,UAAY,YACpB,MAAM8ze,EAAevvgB,SAAS+O,cAAc,OAC5CwggB,EAAa9ze,UAAY,kBACzB6ze,EAAQp2e,YAAYq2e,GAGxBolF,gBACQt2mB,KAAKmzrB,SAAS1liB,YACdztJ,KAAKmzrB,SAAS1liB,WAAW/vG,YAAY19C,KAAKmzrB,UAIlDhlV,UAAU11O,GACNu4jB,GAAchxrB,KAAKmzrB,SAAU16jB,GAGjCzrG,MAAM/jB,GACF,GAAI8prB,GAAU9prB,EAAGjJ,KAAK+e,QAAQlM,KAAM,CAChC,MAAM02U,EAAQvpV,KAAKupV,MACb9wQ,EAAQ8wQ,EAAM+iW,kBAAkBrjrB,GAChCmqrB,EAAWpzrB,KAAKqzrB,UAAY9pW,EAAMwvD,UAAUiqS,YAAYvqmB,GACxDg2lB,EAAU2kB,EAAWA,EAAS9X,YAAY9rjB,QAAU,KAE1D,GAAI4jkB,GAAY3kB,EAAS,CACrB,MAAMr8oB,GAASpyB,KAAKszrB,iBAEpB7kB,SAAQj2nB,UAAUpmB,GAAOg9C,KAAMh9C,GAAO+7F,KACtCnuH,KAAKuzrB,iBAAmB9kB,EAExB9spB,SAASgF,KAAKk0B,YAAY76C,KAAKmzrB,UAC/BnzrB,KAAKmuW,UAAU,CACX/+R,KAAMnmE,EAAEupY,MAAQ,EAChBrkR,IAAKllH,EAAEwpY,MAAQ,EACf/7X,MAAO,EACPnM,OAAQ,KAGL,GAGf,OAAO,EAGX+orB,iBACI,MAAMv6V,EAAe/4V,KAAKupV,MAAM70U,SACxBuB,cAAa4oD,cAAemynB,GAAcj4V,EAAc,CAAE,cAAe,eAC3E3mU,EAASk6gB,GAAcvzM,GAE7B,MAAO,CACH3pR,KAAMn5D,EAAcmc,EAAOg9C,KAC3B++C,IAAKtvD,EAAazsC,EAAO+7F,KAIjCmH,KAAKrsH,GAEGmqrB,KADkBC,WAElBrzrB,KAAKmuW,UAAUnuW,KAAKwzrB,mBAAmBvqrB,IAI/CqhC,IAAIrhC,GAEA,GADiBjJ,KAAKqzrB,UACR,CACV,MAAM/mJ,EAAgBtsiB,KAAKszrB,iBACrBG,EAAoBzzrB,KAAKwzrB,mBAAmBvqrB,GAMlD,OALAwqrB,EAAkBrknB,MAAQk9d,EAAcl9d,KACxCqknB,EAAkBtlkB,KAAOm+a,EAAcn+a,IAIvCnuH,KAAK0zrB,kBAFS,CAAE/prB,EAAG8prB,EAAkBrknB,KAAMtb,EAAG2/nB,EAAkBtlkB,KACpD,CAAExkH,EAAG8prB,EAAkBrknB,KAAOqknB,EAAkB/8qB,MAAOo9C,EAAG2/nB,EAAkBtlkB,IAAMslkB,EAAkBlprB,SAGhHvK,KAAKs2mB,uBACEt2mB,KAAKqzrB,UAELJ,GAAkBjzrB,KAAKomY,aAItC/kR,OACI,MAAM+kR,EAAapmY,KAAKomY,WACxB,GAAIA,GAAcA,EAAWrgY,OAAQ,CACjC,MAAMo/X,EAAWnlY,KAAKupV,MAAMwvD,UAC5B,QAAS5uW,EAAM,EAAGA,EAAMi8V,EAAWrgY,OAAQokC,IAAO,CAC9C,MAAMkioB,EAAYjmS,EAAWj8V,GAC7Bg7V,EAASunT,kBAAkBrgB,EAAUlmS,KAAMkmS,EAAUzkmB,OAEzDu9T,EAASxkP,OAAOwkP,EAASF,QAIjCx/D,UACIzlU,KAAKs2mB,uBACEt2mB,KAAKmzrB,gBACLnzrB,KAAKupV,MAGhBmqW,kBAAkB1mqB,EAAOsd,GACrB,MAAM63c,GAAQnif,KAAK+e,QAAQoje,MAAQ,IAAI9md,cACjC+qW,EAAa,GAEbjjI,EAAOnjQ,KAAKqzrB,UAAUlwb,KAC5B,QAASh5N,GAAM,EAAGA,GAAMg5N,EAAKp9P,OAAQokC,KAAO,CACxC,MAAMg8V,GAAOhjI,EAAKh5N,IACZn+B,GAAWm6X,GAAKpnX,QAAQ/S,SAC9B,IAAMm2e,IAASp6e,IAAMiE,MAAem2e,IAASr8e,KAAKkG,KAAa4+lB,GAAQzkO,GAAK0L,WAAY,CACpF,MAAMjqU,GAAQu+T,GAAKuuR,YAAY1noB,EAAOsd,GAClCs9B,IACAw+T,EAAW3gY,KAAK,CACZ0gY,KAAMA,GACNv+T,MAAOA,MAMvB5nE,KAAKomY,WAAaA,EAGtBotT,mBAAmBvqrB,GACf,MAAMwlqB,EAAUzuqB,KAAKuzrB,iBACfr/S,EAAgB,CAClBvqY,EAAGV,EAAEU,EAAEuqY,cACPpgV,EAAG7qD,EAAE6qD,EAAEogV,gBAEHvqY,GAAKy6B,SAAUouW,GAAS1+U,GAAK1vB,SAAUquW,IAAYxpY,EACrDk5e,IAAQnif,KAAK+e,QAAQoje,MAAQ,IAAI9md,cACvC,IAAI+zC,GAAOliE,KAAKulC,IAAIyhW,EAAcvqY,EAAG6oY,GACjCrkR,GAAMjhH,KAAKulC,IAAIyhW,EAAcpgV,EAAG2+U,GAChC/7X,GAAQxJ,KAAKiN,IAAI+5X,EAAcvqY,EAAI6oY,GACnCjoY,GAAS2C,KAAKiN,IAAI+5X,EAAcpgV,EAAI2+U,GAExC,OAAI0vG,KAASp6e,KACTqnE,GAAOq/lB,EAAQt5lB,GACfz+D,GAAQ+3pB,EAAQ/3pB,SAEhByre,KAASr8e,KACTqoH,GAAMsgjB,EAAQ55lB,GACdtqE,GAASkkqB,EAAQlkqB,UAGjBioY,EAAQi8R,EAAQh5lB,KAChB/+D,GAAQ+3pB,EAAQh5lB,GAAKy+T,EAAcvqY,GAGnC6oY,EAAQi8R,EAAQt5lB,KAChBz+D,GAAQw9X,EAAcvqY,EAAI8kqB,EAAQt5lB,IAGlCs9T,EAAQg8R,EAAQ5xB,KAChBtyoB,GAASkkqB,EAAQ5xB,GAAK3oQ,EAAcpgV,GAGpC2+U,EAAQg8R,EAAQ55lB,KAChBtqE,GAAS2pY,EAAcpgV,EAAI26mB,EAAQ55lB,IAGhC,CACHzF,KAAMliE,KAAKsB,IAAI4gE,GAAMq/lB,EAAQt5lB,IAC7Bg5C,IAAKjhH,KAAKsB,IAAI2/G,GAAKsgjB,EAAQ55lB,IAC3Bn+D,MAAOA,GACPnM,OAAQA,KAKpBoprB,GAActzqB,UAAUtB,QAAU,CAC9BlM,IAAK,QACLsve,KAAM,QAGV,SAAewxM,GC1HftwmB,GAtDA,iBAA6Bk5jB,KACzBz8oB,YAAYypV,EAAOxqU,GACfS,QAEAxf,KAAKupV,MAAQA,EACbvpV,KAAK+e,QAAU07nB,GAAW,CACtBxjZ,KARS,IASVj3P,KAAK+e,QAASA,GAGrB60qB,aAAa7jkB,EAAOl3C,GAChB,MAAMspa,GAAQnif,KAAK+e,QAAQoje,MAAQ,IAAI9md,cACjC+qW,EAAa,GACbjjI,EAAOnjQ,KAAKupV,MAAMwvD,UAAU51I,KAElC,QAASh5N,GAAM,EAAGA,GAAMg5N,EAAKp9P,OAAQokC,KAAO,CACxC,MAAMg8V,GAAOhjI,EAAKh5N,IACZn+B,GAAWm6X,GAAKpnX,QAAQ/S,SAE9B,IAAMm2e,IAASp6e,IAAMiE,MAAem2e,IAASr8e,KAAKkG,KAAam6X,GAAKmuR,UAAW,CAC3E,MAAMr9Z,GAAO0pU,GAAW3gkB,KAAK+e,QAAQk4O,KAxBpC,IACA,IAwBKrvL,GAAQu+T,GAAKmuR,WAAWvkiB,EAAQknI,GAAMp+K,GAExCjR,IACAw+T,EAAW3gY,KAAK,CACZ0gY,KAAMA,GACNv+T,MAAOA,MAMvB,YAAKw+T,WAAaA,EACX6sT,GAAkB7sT,GAG7B/kR,OACI,MAAM+kR,EAAapmY,KAAKomY,WAClBjB,EAAWnlY,KAAKupV,MAAMwvD,UAE5B,GAAI3S,GAAcA,EAAWrgY,QAAUo/X,EAASunT,kBAAmB,CAC/D,QAASvipB,EAAM,EAAGA,EAAMi8V,EAAWrgY,OAAQokC,IAAO,CAC9C,MAAMkioB,EAAYjmS,EAAWj8V,GAC7Bg7V,EAASunT,kBAAkBrgB,EAAUlmS,KAAMkmS,EAAUzkmB,OAEzDu9T,EAASxkP,OAAOwkP,EAASF,QAIjCx/D,iBACWzlU,KAAKupV,wBC7DL,YAA0B9wQ,GAAO63E,EAAM57I,GAClD,MAAMm/qB,EAAYn/qB,EAAQrK,cAAe4tO,UACnClzG,EAAS8ujB,EAAU9ujB,SACzBA,EAAO97H,GAAKwvE,GAAM9uE,EAAI2mJ,EAAKjsH,OAAO16B,EAClCo7H,EAAOn/H,GAAK6yE,GAAM3kB,EAAIw8F,EAAKjsH,OAAOyvB,EAElC+/nB,EAAU9ujB,OAAOA,GACjBrwH,EAAQrK,UAAUwprB,GCRP,YAAoB7koB,GAAMkvR,EAAM/gR,EAAOgpU,EAAMoD,GACxD,IAAIv8W,EACJ,OACIA,EADU,UAAVmwC,EACQ+gR,EAAK75S,OAAO8hW,GACH,QAAd1uK,EACKymH,EAAK75S,OAAO8hW,GAAQjoD,EAAKlvR,KAAKu6U,GAAav6U,GAE3CkvR,EAAK75S,OAAO8hW,IAASjoD,EAAKlvR,KAAKu6U,GAAav6U,IAAQ,EAGzDhiC,ECVI,YAA2BgiC,GAAMkvR,EAAM/gR,EAAOgpU,EAAMoD,GAC/D,IAAIv8W,EACJ,OACIA,EADU,UAAVmwC,EACQ+gR,EAAK75S,OAAO8hW,GAAQjoD,EAAKlvR,KAAKu6U,GAAav6U,GAClC,QAAVmO,EACC+gR,EAAK75S,OAAO8hW,GAEZjoD,EAAK75S,OAAO8hW,IAASjoD,EAAKlvR,KAAKu6U,GAAav6U,IAAQ,EAGzDhiC,ECFX,MAAM64a,GAAkB,CACpBiuP,aAAc,QACdC,eAAgB,QAChBtqX,WAAY,QACZ+/D,QAAS,EACT7gT,YAAa,aACbqrmB,YAAa,EACb15nB,MAAM,EACN25nB,QAAQ,GAGNrtrB,GAAU,CAACiiE,GAAUh5D,KACvBg5D,GAASjiE,QAAQiJ,IAGf6kqB,GAAiB,CAAC7rmB,GAAUh5D,KAG9B,QAASs6B,EAFM0+B,GAAS9iE,OAEA,EAAGokC,GAAO,EAAGA,IACjCt6B,EAASg5D,GAAS1+B,GAAMA,IAkKhCmqG,GA9JA,iBAAqBkU,KAEjB1oJ,YAAYo+U,EAAMn/T,GACdS,MAAM3Z,OAAOw0D,OAAO,GAAIwrY,GAAiB9mb,IACzC/e,KAAKk0rB,MAAQh2W,EACbl+U,KAAKm0rB,UAAY,GAGrBj2W,KAAKv6U,GACD,OAAIA,GACA3D,KAAKk0rB,MAAQvwrB,EACN3D,MAGJA,KAAKk0rB,MAGhBvzkB,WACI,MAAM5hG,EAAU/e,KAAK+e,QACfq1qB,EAAWp0rB,KAAKm0rB,UACM,eAAxBp1qB,EAAQ4pE,aACRyrmB,EAAS7qT,UAAY,QACrB6qT,EAASC,gBAAkB,SAC3BD,EAASpvC,UAAY,IACrBovC,EAASE,WAAa,MAEtBF,EAAS7qT,UAAY,SACrB6qT,EAASC,gBAAkB,QAC3BD,EAASpvC,UAAY,IACrBovC,EAASE,WAAa,KAG1BniqB,EAAY48D,SACR/uF,KAAK4G,QAAU8tqB,GACf10qB,KAAKu0rB,aAAeC,KAEpBx0rB,KAAK4G,QAAUA,GACf5G,KAAKu0rB,aAAe1uC,IAI5B3F,SACI,IAAKlgpB,KAAKk0rB,OAAkC,IAAzBl0rB,KAAKw+D,SAASz4D,OAC7B,OAEJ/F,KAAK2gH,WAED3gH,KAAK+e,QAAQ1U,WACbrK,KAAKqK,UAAU,MAGnB,MAAM0U,EAAU/e,KAAK+e,QACfm/T,EAAOl+U,KAAKk0rB,OACV1ioB,SAAQg0lB,cAAexlpB,KAAKy0rB,eAC5BlrT,YAAW8qT,mBAAiBrvC,aAAWsvC,eAAet0rB,KAAKm0rB,UAC7DO,GAAc,IAAIx6mB,KAClBy6mB,GAAgB,IAAIz6mB,KACpBlrB,GAAO,IAAIC,KACjB,IACIg3lB,GAAcv9mB,GAAOkspB,GADrB9uC,GAAaD,GAAWL,EAAYtnU,EAAMn/T,EAAQ+0qB,aAAcQ,GAAYD,IAGhF,MAAMQ,GAAkB,CAACvkiB,GAAMnmH,MAC3B,MAAMz1B,GAAUg0B,GAAMmgC,SAAS1+B,IAE/BwqpB,GAAc3vC,IAAaiB,GAC3B0uC,GAAcL,IAAczuC,GAAWv1f,GAAKthG,KAAKqloB,IAAkBO,GAAU71qB,EAAQ0qT,WAAY6qX,GAAYD,IAC7GS,GAAiBH,GAAerkiB,GAAM57I,IACtCuxoB,IAAgB31f,GAAKthG,KAAKu6U,GAAaxqX,EAAQyqX,SAGnD,QAASu8Q,GAAW,EAAGA,GAAWv0lB,EAAOzrD,OAAQggpB,KAC7Cr9mB,GAAQ8oB,EAAOu0lB,IACf2uC,GAAY1vC,IAAaiB,GAAejmpB,KAAKu0rB,aAAa7rpB,GAAMsmB,KAAMkvR,EAAMn/T,EAAQg1qB,eAAgB/uC,GAAWz7Q,GAC/GmrT,GAAYJ,IAAcxuC,GAC1B92lB,GAAKu6U,GAAa7gW,GAAMsmB,KACxBA,GAAKqloB,IAAmB3rpB,GAAMqnnB,SAC9B6kC,GAAW,IAAIl1N,KAAKg1N,GAAa1loB,IACjChvD,KAAK4G,QAAQ8hC,GAAMqspB,OAAQF,IAE3B/uC,IAAcp9mB,GAAMqnnB,SAAWhxoB,EAAQi1qB,YAG3C,IAAKj1qB,EAAQu7C,MAAQ5xB,GAAMsmB,KAAOkvR,EAAKlvR,KAAKu6U,GAAY,CACpD,MAAM7oS,GAAQw9O,EAAKlvR,KAAKu6U,GAAaqrT,GAAS5loB,KAAKu6U,GAC7CyrT,GAAcJ,GAASt2L,UAAU59Z,MAAMA,GAAOA,IAE9Cu0lB,GAAWpvC,GADE+uC,GAAS5loB,KAAKqloB,IAAmB3zlB,GACZw9O,EAAMn/T,EAAQ+0qB,aAAcQ,GAAYD,IAC1EhqrB,MAAY4tO,QACA,MAAd+sa,GACA36oB,GAAUmuC,UAAU0lS,EAAK75S,OAAO16B,EAAIqrrB,GAAYrrrB,EAAGsrrB,GAAWD,GAAYlhoB,GAE1EzpD,GAAUmuC,UAAUy8oB,GAAWD,GAAYrrrB,EAAGu0U,EAAK75S,OAAOyvB,EAAIkhoB,GAAYlhoB,GAE9EzpD,GAAUq2F,MAAMA,GAAOA,IAEvB1gG,KAAKqK,UAAUA,KAIvBoqrB,cACI,MAAQ11qB,UAASy/C,YAAax+D,MACtBg0rB,cAAa15nB,OAAMkvU,WAAYzqX,EACjCwqX,GAAYvpY,KAAKm0rB,UAAU5qT,UACjC,IAAI7gW,GAAQ1oC,KAAKk1rB,YACjB,MAAM1joB,GAAS,GACT2joB,GAAW,WACb3joB,GAAO/rD,KAAKijC,IACZ88mB,IAAc98mB,GAAMqnnB,SAAWikC,GAEnC,IAAIxuC,IAAcwuC,EAElB,QAAS7ppB,GAAM,EAAGA,GAAMq0B,EAASz4D,OAAQokC,KAAO,CAC5C,IAAIz1B,GAAU8pD,EAASr0B,IACnBmmH,GAAO9xF,EAASr0B,IAAKg9mB,cACrBzyoB,GAAQu/T,WAAa3jL,KACjBh2F,GAAQ5xB,GAAMsmB,KAAOshG,GAAKthG,KAAKu6U,IAAaC,EAAUxpY,KAAKk0rB,MAAMlloB,KAAKu6U,IAC1C,IAA5B6rT,GAAUL,OAAOhvrB,QACb/F,KAAKq1rB,YAAY3spB,GAAO4nH,GAAM57I,IAC9BygrB,KACAzspB,GAAQ1oC,KAAKk1rB,cAEbC,KACAzspB,GAAQ1oC,KAAKk1rB,YACbl1rB,KAAKq1rB,YAAY3spB,GAAO4nH,GAAM57I,KAGlC1U,KAAKq1rB,YAAY3spB,GAAO4nH,GAAM57I,KAK1C,OAAIg0B,GAAMqspB,OAAOhvrB,QACbovrB,KAGG,CACH3joB,OAAQA,GACRg0lB,WAAYA,IAIpB6vC,YAAY3spB,EAAO4nH,EAAM57I,GACrBg0B,EAAMsmB,MAAQshG,EAAKthG,KAAKhvD,KAAKm0rB,UAAU5qT,WAAavpY,KAAK+e,QAAQyqX,QACjE9gW,EAAMqnnB,SAAW7ipB,KAAKsB,IAAI8hJ,EAAKthG,KAAKhvD,KAAKm0rB,UAAUE,iBAAkB3rpB,EAAMqnnB,UAC3ErnnB,EAAMqspB,OAAOtvrB,KAAK6qJ,GAClB5nH,EAAMmgC,SAASpjE,KAAKiP,GAGxBwgrB,YACI,MAAO,CACHnlC,SAAU,EACV/gmB,MAAOhvD,KAAK+e,QAAQyqX,QACpBurT,OAAQ,GACRlsnB,SAAU,MCvItB+gN,GA9CA,iBAA2Bu4X,GAEvBripB,YAAYif,EAASuhoB,GACjB9goB,MAAMT,GAEN/e,KAAKsgpB,aAAeA,EAGxB3jiB,SACI,MAAQn+C,WAAUz/C,WAAY/e,KACxBgM,EAAW+S,EAAQ/S,SAEzBhM,KAAK4jQ,OAAS,IAAIvnH,GAAY,KAAM,CAChCmtP,QAASx9X,EAAW,EAAI+S,EAAQyqX,QAChCwqT,YAAahorB,EAAW+S,EAAQyqX,QAAU,EAC1C7gT,YAAa38E,EAAW,WAAa,aACrC+iF,QAAShwE,EAAQ2lT,IACjB+E,WAAYz9T,EAAW,QAAU,WAGrC,QAASm+B,EAAM,EAAGA,EAAMq0B,EAASz4D,OAAQokC,IAAO,CAC5C,IAAImrpB,EAAa92nB,EAASr0B,GAC1BmrpB,EAAWp1C,OAAO,IAAIjD,IACtBq4C,EAAW70C,gBAInBP,OAAOjkhB,GACHj8H,KAAK4jQ,OAAOs6E,KAAKjiN,EAAIwhhB,UACrBz9oB,KAAK4jQ,OAAOs8Y,SACZ,MAAM5vf,EAAOtwJ,KAAK4jQ,OAAOujZ,cAGrBnnpB,KAAKi8H,IADLq0B,EACW42f,GAAU52f,GAEV,IAAI2sf,GAIvBwD,eACIzgpB,KAAK0gpB,YAGTziU,kBCuFJs3W,GA/HA,iBAAyBxyC,GACrBjjpB,YAAYif,GACRS,MAAMT,GAEN/e,KAAKw1rB,kBACAz2qB,EAAQ2lT,KAIT1kU,KAAKi/O,cACLj/O,KAAKq/G,iBAJLr/G,KAAKq/G,eACLr/G,KAAKi/O,eAObu2c,kBACIx1rB,KAAKy9J,UAAY,IAAI6of,GAAa,CAAEt6oB,UAAU,EAAOsuD,MAAM,EAAO6C,MAAOs7kB,EAAQjvQ,QAASxpY,KAAK+e,QAAQyqX,UACvGxpY,KAAKkxB,OAAOlxB,KAAKy9J,WAGrBp+C,eACIr/G,KAAKy9J,UAAUvsI,OAAO,IAAIoynB,GAAatjpB,KAAKy1rB,kBAGhDA,gBACI,MAAM12qB,EAAU/e,KAAK+e,QACf4/pB,EAAc5/pB,EAAQ4/pB,YAC5B,OAAOlkC,GAAW,GAAI17nB,EAAQsnU,QAAS,CACnCL,WAAY24V,EACZ3hiB,OAAQ,CACJuC,MAAOo/hB,KAKnB1/b,cACI,MAAMlgO,EAAU/e,KAAK+e,QACf4roB,EAAelQ,GAAW,GAAI17nB,EAAQyrX,QAE5CxqY,KAAKy9J,UAAUvsI,OAAO,IAAIu2nB,GAAQ1ooB,EAAQjU,KAAM6/oB,IAGpD9J,iBACIrhoB,MAAMqhoB,iBAEN,MAAMvjQ,EAASt9Y,KAAK+e,QAAQu+X,QAAU,GAChCo4S,EAAY11rB,KAAK21rB,aAAet5iB,cAAmBr8I,KAAKy9J,UAAUxhC,IAAIwhhB,SAAU,CAClF/uoB,KAAM,CACF6wI,MAAOg6f,GACPnvoB,QAAS,GAEby3I,OAAQ,KACRy7P,OAAQA,EAAOnzY,OAASmzY,IAG5Bt9Y,KAAK8gpB,aAAa40C,GAGtBjqnB,MAAMk8kB,EAAQ1+oB,GACV,MAAMgxB,EAAOj6B,KAAKy2D,UAAUxtD,IAEvB0+oB,EAAO19oB,QlGJM,kBkGIqBgwB,IAAShxB,GAAgB,gBAAXA,EAAEnB,MACnDmB,EAAEi5C,iBAIVugL,KAAKklb,EAAQ1+oB,GACT,MAAMgxB,EAAOj6B,KAAKy2D,UAAUxtD,GAE5B,OAAK0+oB,EAAO19oB,QlGXM,kBkGWqBgwB,IACnC0tnB,EAAOiuC,iBAAiB37pB,EAAK6rW,YAAa7rW,EAAK8rW,aAI5C,EAGX5hX,IAAIwjoB,EAAQ1+oB,GACR0+oB,EAAOkuC,oBAEPluC,EAAO19oB,QlGrBW,kBkGqBgBjK,KAAKy2D,UAAUxtD,IAGrDwtD,UAAUxtD,GACN,MAAM8V,EAAU/e,KAAK+e,QAErB,MAAO,CACHrK,QAASsmoB,GAAa/xoB,GACtB6B,KAAMiU,EAAQjU,KACdq2P,OAAQpiP,EAAQoiP,OAChB2kI,YAAa/mX,EAAQoiP,OAAOv9O,MAC5BmiX,WAAYhnX,EAAQgnX,YAI5B06Q,eACI,MAAM1hoB,EAAU/e,KAAK+e,QACf4ioB,EAAe5ioB,EAAQ6kP,OAEzB+9Y,GACA3hpB,KAAK4jQ,OAAS+9Y,EAAa,CACvBhykB,OAAQ5wD,EAAQ4wD,OAChBwxL,OAAQpiP,EAAQoiP,OAChB23F,OAAQ94V,KAAKogpB,YACbr6Q,WAAYhnX,EAAQgnX,WACpBhnX,QAAS,CACLsnU,QAASrmV,KAAKy1rB,gBACdjrT,OAAQzrX,EAAQyrX,QAEpBvsD,aAAc,KACVj+U,KAAKi+U,eACLj+U,KAAK2gpB,iBACL3gpB,KAAK6gpB,iBAEL,MAAMmI,EAAgBhppB,KAAK4jQ,OAE3B,cAAO5jQ,KAAK4jQ,OAELolZ,KAGfhppB,KAAK0gpB,aAELlhoB,MAAMihoB,iBCzHZq1C,GAAa,aAEbC,GAAS,SAEf,iBAAqB5zC,GACjBripB,YAAYif,EAASuhoB,EAAe,IAChC9goB,MAAMT,GAEN/e,KAAKsgpB,aAAeA,EAEfzC,GAAQ79oB,KAAK+e,QAAQmrB,SAAU,CAAEmvmB,GAAK/lC,GAAOklC,EAAQnlC,GAAM0iF,OAC5D/1rB,KAAK+e,QAAQmrB,SAAWopkB,IAG5BtzmB,KAAKg2rB,mBAELh2rB,KAAKi2rB,kBAAkBl3qB,EAAQ6tC,OAE/B5sD,KAAKk2rB,cAGTF,mBACI,MAAMj3qB,EAAU/e,KAAK+e,SACbmrB,WAAUizB,MAAOg5nB,GAAcp3qB,EACvC,IAAIo+C,EAAQjzB,EACRs4mB,EAAS/J,EAETvumB,IAAa6rpB,GACb54nB,EAAQk2iB,GACL9pa,GAAYr/J,EAAU,CAAEmvmB,GAAKb,KAE5Br7kB,EADc,UAAdg5nB,EACQ9iF,GACa,QAAlB46C,EACK36C,GAEAmlC,EAEZ+J,EAASt4mB,GACFispB,IACW,UAAdA,EACA3zC,EAASnJ,GACY,QAAd88C,IACP3zC,EAAShK,IAIjBx4oB,KAAKy9J,UAAY,IAAIslf,GAAW,CAC5Bx0mB,OAAQxvB,EAAQwvB,OAChBi3G,QAASzmI,EAAQymI,QACjBwgM,WAAYjnU,EAAQinU,WACpBhpM,OAAQj+H,EAAQi+H,OAChBwlgB,OAAQA,EACRrllB,MAAOA,EACP8zF,OAAQlyI,EAAQkyI,OAChBmxf,aAAa,IAIbpipB,KAAKo2rB,eADLp2rB,KAAKq2rB,WACiB,IAAItzC,GAAW,CACjCP,OAAQA,EACRrllB,MAAOA,EACP8zF,OAAQlyI,EAAQkyI,OAChBmxf,aAAa,IAGKpipB,KAAKy9J,UAG/Bz9J,KAAKkxB,OAAOlxB,KAAKy9J,WAGrBy4hB,cACI,MAAM51C,EAAetgpB,KAAKqgpB,aACpBthoB,EAAU/e,KAAK+e,QACf/S,EAAWhM,KAAKg3mB,aAChBs/E,EAAe,IAAIC,GAAa,CAClCvqrB,SAAUA,EACVw9X,QAASzqX,EAAQyqX,QACjB9kE,IAAK47U,EAAa57U,KACnB47U,GACH,IAAI9tlB,EAAQzzC,EAAQyzC,MAEhBzzC,EAAQgwE,UACRv8B,EAAQA,EAAM5jD,MAAM,GAAGmgF,WAG3B,MAAM6oB,GAAQplD,EAAMzsD,OAEpB,QAAS4I,GAAI,EAAGA,GAAIipG,GAAOjpG,KAGvB2nrB,EAAaplqB,OAAO,IAAIslqB,GAAW/7C,GAAW,GAAI,CAC9Cp0T,QAAStnU,EAAQsnU,QACjBmkD,OAAQzrX,EAAQyrX,OAChB9lE,IAAK47U,EAAa57U,KACnB3lT,EAAQ/L,KANAw/C,EAAM7jD,OASrB2nrB,EAAa35kB,SACb38G,KAAKo2rB,eAAellqB,OAAOolqB,GAG/Bt/E,aACI,MAAQruhB,cAAaz+C,YAAalqC,KAAK+e,QAIvC,OAHkBmrB,IAAa6rpB,IAAUptmB,IAAgBmtmB,KACjDlrF,GAAQjihB,GAAeA,IAAgBmtmB,GAAaj4C,GAAQ3zmB,EAAU,CAAEmpkB,GAAMC,MAK1FzqD,WACI,OAAO7ojB,KAAKy9J,UAAUj/F,SAAS,GAAGA,SAASz4D,OAAS,EAGxDm6oB,OAAOpD,GACH,MAAM/9nB,EAAU/e,KAAK+e,QACf03qB,EAAY35C,EAAUtthB,QAEvBxvH,KAAK6ojB,YAKN9piB,EAAQmrB,WAAa6rpB,IACrB/1rB,KAAK02rB,sBAAsBD,GAC3Bz2rB,KAAKi8H,IAAMw6jB,GAEXz2rB,KAAK22rB,gBAAgBF,GAGrBz2rB,KAAKq2rB,YACLr2rB,KAAK4sD,MAAMszlB,OAAO,IAAIjD,GAAIj9oB,KAAKy9J,UAAUxhC,IAAI9mD,GAAIn1E,KAAK4sD,MAAMqvE,IAAIpnD,GAAI70E,KAAKy9J,UAAUxhC,IAAIxmD,GAAIz1E,KAAK4sD,MAAMqvE,IAAI4ghB,MAZ1G78oB,KAAKi8H,IAAMw6jB,EAgBnBE,gBAAgB75C,GACZ,MAAQ/9nB,UAAS0+I,aAAcz9J,MACvBkqC,WAAUxzB,QAAOnM,WAAWwU,EAC9B8pE,GAAM3+C,IAAamvmB,IAAOnvmB,IAAasumB,EAASzwoB,GAAIjC,GACpDkG,GAAWhM,KAAKg3mB,aAChB4/E,GAAc95C,EAAUtthB,QAC9B,IAAIqnkB,GAAe/5C,EAAUtthB,SAEzBtlF,IAAampkB,IAAQnpkB,IAAaopkB,MAClCujF,GAAahinB,GAAK+hnB,GAAY/hnB,GAAK,GAGvCg0kB,IAAgBt+oB,IACZssrB,GAAah6C,GAAKg6C,GAAahinB,GAAKtqE,GACpCssrB,GAAa15nB,MAAMy5nB,GAAa9wrB,GAAG23J,EAAU1+I,QAAQyjoB,UAC7Cx2oB,IAAY0K,IACpBmgrB,GAAaphnB,GAAKohnB,GAAa1hnB,GAAKz+D,EACpCmgrB,GAAa15nB,MAAMy5nB,GAAa7urB,GAAG01J,EAAU1+I,QAAQo+C,QAGzDsgG,EAAUyif,OAAO22C,IACjBA,GAAep5hB,EAAUxhC,IAEzB,MAAMA,GAAM46jB,GAAarnkB,SAErBzwG,EAAQugO,SAAWvgO,EAAQqmI,WAC3ByxiB,GAAar+oB,UAAUz5B,EAAQugO,QAASvgO,EAAQqmI,SAChDqY,EAAUyif,OAAO22C,KAGrB56jB,GAAIpzC,GAAM,GAAKi0jB,EAAUj0jB,GAAM,GAC/BozC,GAAIpzC,GAAM,GAAKi0jB,EAAUj0jB,GAAM,GAE/B7oF,KAAKi8H,IAAMA,GAGfy6jB,sBAAsB55C,GAClB,MAAQ/9nB,UAAS0+I,aAAcz9J,MACvBs/O,UAASl6F,UAAS1uI,SAAOnM,WAAWwU,EACtC/S,GAAWhM,KAAKg3mB,aACtB,IAAI6/E,GAAe/5C,EAAUtthB,QAEzBxjH,IAAYzB,GACZssrB,GAAah6C,GAAKg6C,GAAahinB,GAAKtqE,IAC5ByB,IAAY0K,KACpBmgrB,GAAaphnB,GAAKohnB,GAAa1hnB,GAAKz+D,IAExC+mJ,EAAUyif,OAAO22C,IACjBA,GAAep5hB,EAAUxhC,IAEzBwhC,EAAUyif,OAAO,IAAIjD,GACjB39Z,EAASl6F,EACTk6F,EAAUu3c,GAAangrB,QAAS0uI,EAAUyxiB,GAAatsrB,WAI/Dk2oB,eACQzgpB,KAAK6ojB,YACLrpiB,MAAMihoB,eAIdw1C,kBAAkBrpoB,GACd,IAAI86lB,EAAejN,GAAW,GAAI,CAC9Bl7f,MAAOg5f,EACPrumB,SAAUmvmB,GACVl8kB,MAAOs7kB,GACR7rlB,GACC9hD,EAAO48oB,EAAa58oB,KAExB,GAAK8hD,IAA2B,IAAlBA,EAAMqnR,QAIpB,IAAI22R,GAAQ88C,IAAiBA,EAAazzU,QAAS,CAC/C,MAAMomP,EAAgB9rL,GAAYm5Q,GAC9BrtF,EACAvvjB,EAAOuvjB,EAAc,CAAEvvjB,KAAMA,IACtB48oB,EAAatsoB,SACpBtQ,EAAO9K,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKswE,EAAatsoB,OAAQtQ,IAIlE9K,KAAK4sD,MAAQ,IAAI66lB,GAAQ38oB,EAAM48oB,GAE/B1npB,KAAK82rB,oBAEL92rB,KAAK+2rB,4BAGTD,oBACI92rB,KAAK0vH,OAAS,IAAI42hB,GAAa,CAC3Bt6oB,UAAU,EACVsuD,MAAM,IAGVt6D,KAAKy9J,UAAUvsI,OAAOlxB,KAAK0vH,QAG/B2mkB,WACI,OAAOruX,QAAQhoU,KAAK+e,QAAQ6tC,QAAwC,IAA/B5sD,KAAK+e,QAAQ6tC,MAAMqnR,SAG5D8iX,2BACoB/2rB,KAAK+e,QAET6tC,MAAM1iB,WAAasumB,GAC3Bx4oB,KAAK0vH,OAAOx+F,OAAOlxB,KAAKo2rB,gBACxBp2rB,KAAK0vH,OAAOx+F,OAAOlxB,KAAK4sD,SAExB5sD,KAAK0vH,OAAOx+F,OAAOlxB,KAAK4sD,OACxB5sD,KAAK0vH,OAAOx+F,OAAOlxB,KAAKo2rB,kBAKpCtzC,GAAkBxif,GAAQ,CACtBp2H,SAAUopkB,GACV9gjB,MAAO,GACP8sL,QAAS,EACTl6F,QAAS,EACT72G,OAAQ6umB,GAAW,GACnB53f,QAAS43f,GAAW,GACpBpggB,OAAQ,CACJuC,MAAOg5f,EACP7hoB,MAAO,GAEX1D,KAAM,CACFsqY,OAtQQ,UAuQR9T,QAAS,GAEbA,QAAS,EACTxjD,WAAY,GACZ/0L,OAAQ,EACRo1L,QAAS,CACLrpM,OAAQ,CACJtmI,MAAO,GAEXA,MAAO,GACPnM,OAAQ,EACRzC,KAAM,OACNq1D,MAAOk2iB,GACPmvC,OAAQ/J,KAIhB,SAAen4e,GC9Rf,iBAA8Bi8e,KAE1Bz8oB,cACI0f,QAEAxf,KAAKg3rB,UAAY,GAGrBt+oB,SAAS5wC,EAAMylY,GACXvtY,KAAKg3rB,UAAUvxrB,KAAK,CAChBqC,KAAMA,EACNylY,YAAaA,IAIrBvrU,OAAOsnnB,EAAWvqqB,EAASuhoB,GACvB,MAAM22C,EAAWj3rB,KAAKg3rB,UACtB,IACI71b,GADA5/O,EAAQ01qB,EAAS,GAGrB,QAAS9spB,GAAM,EAAGA,GAAM8spB,EAASlxrB,OAAQokC,KAAO,CAC5C,MAAMutE,GAAQu/kB,EAAS9spB,IAGvB,GAFAg3N,GAASynb,GAAmBU,EAAW5xkB,GAAM61R,aAEzCpsI,GAAOp7P,OAAS,EAAG,CACnBwb,EAAQm2F,GACR,OAIR,OAAO,IAAIn2F,EAAMzZ,KAAKq5P,GAAQpiP,EAASuhoB,IAI/C42C,GAAgB7wpB,QAAU,IAAI6wpB,GAE9B,SAAeA,GC1Bf,YAAmB95oB,IACf,MAAM1oC,EAAUiN,SAAS+O,cAAc,OACvC,OAAI0sB,KACA1oC,EAAQ0oC,UAAYA,IAGjB1oC,EAGX,YAAuBA,IACnB,IAAI2xB,EAAU3xB,GACd,KAAO2xB,IAAYi6Z,GAAWj6Z,EAAS,aACnCA,EAAUA,EAAQonH,WAGtB,OAAOpnH,EAGX,iBAAwBk2mB,KACpBz8oB,YAAYypV,EAAOw7C,EAAchmX,EAASyE,GACtChE,QAEA,MAAMu5U,EAAexP,EAAM70U,QAE3B1U,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASA,GAC5C/e,KAAKupV,MAAQA,EACbvpV,KAAKwjB,SAAWA,EAChBxjB,KAAK+4V,aAAeA,EACpB/4V,KAAK+kY,aAAeA,EACpB/kY,KAAKm3rB,UAAYn3rB,KAAK+kY,wBAAwBkQ,GAE9Cj1Y,KAAKo3rB,cAELp3rB,KAAKi0U,QAAUj0U,KAAK+e,QAAQk1T,SAAW8kB,EAAanyS,aAEhD5mD,KAAKi0U,UACLj0U,KAAKq3rB,iBAELr3rB,KAAKqyB,IAAIryB,KAAKqkG,OAAOrkG,KAAK+e,QAAQqpD,MAAOpoE,KAAKqkG,OAAOrkG,KAAK+e,QAAQ0uH,KAElEztI,KAAKu1a,cAIb+hR,OAAOt9S,GACH,OAAOh6Y,KAAK+kY,aAAaiV,OAASA,EAGtCq9S,iBACI,MAAMt4qB,EAAU/e,KAAK+e,QACfk8W,EAAUj7X,KAAKi7X,QAAU06L,GAAU,cACzCq7H,GAAc/1T,EAAS,CACnB9sQ,IAAKpvG,EAAQqT,OAAO+7F,IACpB/+C,KAAMrwD,EAAQqT,OAAOg9C,KACrB14D,MAAOqI,EAAQrI,MACfnM,OAAQwU,EAAQxU,OAChB0B,UAAW,QAEf,MAAM6zD,EAAY9/D,KAAK8/D,UAAY61f,GAAU,eAC7C31jB,KAAKu3rB,SAAW5hI,GAAU,UAC1B31jB,KAAKw3rB,UAAY7hI,GAAU,UAE3B16L,EAAQpgV,YAAY76C,KAAKu3rB,UACzBt8T,EAAQpgV,YAAY76C,KAAKw3rB,WACzBv8T,EAAQpgV,YAAYilB,GAEpBA,EAAUjlB,YAAY86gB,GAAU,mBAEhC,MAAM8hI,EAAaz3rB,KAAKy3rB,WAAa9hI,GAAU,0BACzC+hI,EAAc13rB,KAAK03rB,YAAc/hI,GAAU,2BACjD8hI,EAAW58oB,YAAY86gB,MACvB+hI,EAAY78oB,YAAY86gB,MAExB71f,EAAUjlB,YAAY48oB,GACtB33nB,EAAUjlB,YAAY68oB,GAEtB13rB,KAAK+4V,aAAal+S,YAAYogV,GAC9B,MAAM08T,GAAkB3G,GAAclxnB,EAAW,CAAE,kBAAmB,mBAAoB,WACpF83nB,GAAmB5G,GAAcyG,EAAY,UAAUltrB,OACvDstrB,GAAoB7G,GAAc0G,EAAa,UAAUntrB,OAE/DwU,EAAQ+gD,UAAY,CAChBk9E,OAAQ,CACJ5tE,KAAMuonB,GAAgB/1E,gBACtBtyiB,MAAOqonB,GAAgB91E,mBAI/BmvE,GAAcyG,EAAY,CACtBtpkB,KAAMwpkB,GAAgBptrB,OAASqtrB,IAAoB,IAGvD5G,GAAc0G,EAAa,CACvBvpkB,KAAMwpkB,GAAgBptrB,OAASstrB,IAAqB,IAGxD58T,EAAQ9wX,MAAMwyC,QAAUs+U,EAAQ9wX,MAAMwyC,QAG1C44X,cACoC,IAA5Bv1a,KAAK+e,QAAQ49X,aACb38Y,KAAK83rB,mBAAqB93rB,KAAK+3rB,YAAYlyqB,KAAK7lB,MAChDu1a,GAAWv1a,KAAKi7X,QAAS,EACnBstS,IAAcvoqB,KAAK83rB,sBAI7B93rB,KAAKg4rB,WAAa9iT,UAAwBl1Y,KAAKi7X,QAAS,CACpD5kQ,iBAAiB,EACjBrpG,MAAOhtB,KAAKi4rB,OAAOpyqB,KAAK7lB,MACxBs1H,KAAMt1H,KAAKk4rB,MAAMryqB,KAAK7lB,MACtBsqC,IAAKtqC,KAAKm4rB,KAAKtyqB,KAAK7lB,MACpB4wD,IAAK5wD,KAAKo4rB,KAAKvyqB,KAAK7lB,MACpB+yY,MAAO/yY,KAAKq4rB,OAAOxyqB,KAAK7lB,MACxB8yY,aAAc9yY,KAAKs4rB,cAAczyqB,KAAK7lB,MACtC4yY,cAAe5yY,KAAKu4rB,eAAe1yqB,KAAK7lB,MACxC6yY,WAAY7yY,KAAKw4rB,YAAY3yqB,KAAK7lB,QAI1Co3rB,cACI,MAAQr4qB,UAASgmX,gBAAiB/kY,KAC5Bi8H,EAAM8oQ,EAAaiV,KAAKshS,YACxBtkS,EAAch3Y,KAAKupV,MAAM+2T,aAAa/8e,KAExCvjK,KAAKm3rB,WACL18C,GAAW17nB,EAAS,CAChB0zB,IAAK6nY,GAAUtjC,EAAaj4X,EAAQ0zB,KACpCjkC,IAAK8ra,GAAUtjC,EAAaj4X,EAAQvQ,KACpC45D,KAAMkyW,GAAUtjC,EAAaj4X,EAAQqpD,MACrCqlE,GAAI6sS,GAAUtjC,EAAaj4X,EAAQ0uH,MAI3C,MAAQx3H,cAAa4oD,eAAemynB,GAAchxrB,KAAK+4V,aAAc,CAAE,cAAe,eAEtF/4V,KAAK+e,QAAU07nB,GAAW,GAAI,CAC1B/joB,MAAOulH,EAAIvlH,QACXnM,OAAQ0xH,EAAI1xH,SA5IO,GA6InBi7I,QAAS,CACLp2E,KAAMn5D,EACNk4G,IAAKtvD,IAETzsC,OAAQ,CACJg9C,KAAM6sD,EAAI9mD,GAAKl/D,EACfk4G,IAAK8N,EAAIpnD,GAAKhW,IAElBuJ,KAAMrpD,EAAQ0zB,IACdg7F,GAAI1uH,EAAQvQ,KACbuQ,GAGP0mT,UACQzlU,KAAKg4rB,aACLh4rB,KAAKg4rB,WAAWvyX,iBACTzlU,KAAKg4rB,YAGhB/wqB,aAAajnB,KAAKy4rB,YAClBz4rB,KAAKgmX,OAAS,KAEVhmX,KAAKi7X,UACDj7X,KAAK83rB,qBACL18C,GAAap7oB,KAAKi7X,QAAS,EACrBstS,IAAcvoqB,KAAK83rB,qBAEzB93rB,KAAK83rB,mBAAqB,MAE9B93rB,KAAK+4V,aAAar7S,YAAY19C,KAAKi7X,SACnCj7X,KAAKi7X,QAAU,MAIvBy9T,gBAAgB9wnB,GAEZ,MAAO,CACHu+T,KAAMnmY,KAAK+kY,aAAahmX,QACxBqpD,KAAMpoE,KAAKu0a,OAAO3sW,EAAMQ,MACxBqlE,GAAIztI,KAAKu0a,OAAO3sW,EAAM6lE,KAI9BwqjB,OAAOhvrB,GACH,MAAM8V,EAAU/e,KAAK+e,QACfrW,EAASsyoB,GAAa/xoB,GAE5B,GAAIjJ,KAAKgmX,SAAWt9W,EAChB,OAGJ1I,KAAKupV,MAAMssW,oBACX71rB,KAAKgmX,OAAS,CACV2yU,WAAYC,GAAclwrB,IAAWA,EACrCwrY,cAAejrY,EAAEU,EAAIV,EAAEU,EAAEy6B,SAAW,EACpCwjC,MAAO,CACHQ,KAAMpoE,KAAKqkG,OAAOtlF,EAAQqpD,MAC1BqlE,GAAIztI,KAAKqkG,OAAOtlF,EAAQ0uH,MAIhC,MAAMxzG,EAAOj6B,KAAK04rB,gBAAgB,CAC9BtwnB,KAAMpoE,KAAKqkG,OAAOtlF,EAAQqpD,MAC1BqlE,GAAIztI,KAAKqkG,OAAOtlF,EAAQ0uH,MAGxBztI,KAAKiK,QAAQ89pB,GAAc9toB,KAC3Bj6B,KAAKgmX,OAAS,MAItBqyU,OAAOpvrB,GACH,IAAIk+C,EAEAA,EADAnnD,KAAKgmX,OACIhmX,KAAKgmX,OAAO2yU,WAEZC,GAAc59C,GAAa/xoB,IAEpCk+C,GACAy+Q,GAASz+Q,EAAQ,mBAIzB+woB,MAAMjvrB,GACF,IAAKjJ,KAAKgmX,OACN,OAGJ,MAAQA,OAAQ97W,EAAO6U,UAASgmX,gBAAiB/kY,MACzC4nE,QAAO+wnB,WAAYjwrB,IAAWwB,EAChC6kF,GAAUg2S,EAAahmX,QAAQgwE,QAC/B3mB,GAAOpoE,KAAKqkG,OAAOtlF,EAAQqpD,MAC3BqlE,GAAKztI,KAAKqkG,OAAOtlF,EAAQ0uH,IACzBh7F,GAAMzyC,KAAKqkG,OAAOtlF,EAAQ0zB,KAC1BjkC,GAAMxO,KAAKqkG,OAAOtlF,EAAQvQ,KAC1BuhH,GAAQ7lH,EAAMgqY,cAAgBjrY,EAAEU,EAAEy6B,SAClCy0pB,QAAmBjxnB,EAAMQ,KAAzBywnB,MAAmCjxnB,EAAM6lE,GACzCkphB,GAAO/ulB,EAAM6lE,GAAK7lE,EAAMQ,KACxBs4B,GAAQswlB,GAAchxrB,KAAKi7X,QAAS,SAASvkX,OAASquX,EAAaovR,kBAAoB,GACvF/hoB,GAASllB,KAAK4zF,MAAMivB,GAAQrvB,KAAU3R,IAAU,EAAK,GAE3D,IAAKrmF,GACD,OAGJ,MAAM+urB,GAAan3P,GAAW53b,GAAQ,iBAChCgvrB,GAAcp3P,GAAW53b,GAAQ,kBAEnC43b,GAAW53b,GAAQ,+BACnBk/D,EAAMQ,KAAOl7D,KAAKulC,IACdvlC,KAAKsB,IAAIikC,GAAK21B,GAAOh2C,IACrB5jB,GAAMmopB,IAEV/ulB,EAAM6lE,GAAKvgI,KAAKulC,IACZm1B,EAAMQ,KAAOuulB,GACbnopB,KAEDsqrB,KAAoB/pmB,IAAa2omB,IAAe3omB,IACnDnnB,EAAMQ,KAAOl7D,KAAKulC,IACdvlC,KAAKsB,IAAIikC,GAAK21B,GAAOh2C,IACrB5jB,GAAM,GAEVo5D,EAAM6lE,GAAKvgI,KAAKsB,IAAIo5D,EAAMQ,KAAO,EAAGR,EAAM6lE,MAClCgqjB,IAAc1omB,IAAa2omB,KAAgB3omB,MACnDnnB,EAAM6lE,GAAKvgI,KAAKulC,IACZvlC,KAAKsB,IAAIikC,GAAM,EAAGg7F,GAAKr7G,IACvB5jB,IAEJo5D,EAAMQ,KAAOl7D,KAAKulC,IAAIm1B,EAAM6lE,GAAK,EAAG7lE,EAAMQ,QAG1CR,EAAMQ,OAASywnB,SAAiBjxnB,EAAM6lE,KAAOorjB,SAC7C74rB,KAAKs1H,KAAK1tD,EAAMQ,KAAMR,EAAM6lE,IAC5BztI,KAAKiK,QAAQ88I,GAAQ/mJ,KAAK04rB,gBAAgB9wnB,KAIlDuwnB,OACI,GAAIn4rB,KAAKgmX,OAAQ,CACb,MAAM2yU,EAAa34rB,KAAKgmX,OAAO2yU,WAC3BA,G9MlSD,YAAqBjkrB,GAAS0oC,GACrC1oC,IAAWA,GAAQ0oC,YACnB1oC,GAAQ0oC,UAAY1oC,GAAQ0oC,UAAU7xB,QAAQ6xB,EAAW,IAAI7xB,QAAQmunB,GAAa,M8MiS1E5zU,CAAY6yX,EAAY,mBAG5B,MAAM/wnB,EAAQ5nE,KAAKgmX,OAAOp+S,MAC1B5nE,KAAKqyB,IAAIu1C,EAAMQ,KAAMR,EAAM6lE,IAC3BztI,KAAKiK,QAAQ+9pB,GAAYhoqB,KAAK04rB,gBAAgB9wnB,WAEvC5nE,KAAKgmX,QAIpBoyU,KAAKnvrB,GACD,MAAQ8V,UAASgmX,gBAAiB/kY,KAC5B64E,EAAS74E,KAAKupV,MAAM+iW,kBAAkBrjrB,GACtC+lY,EAAajK,EAAagvR,mBAAmB,IAAI75kB,GAAMrB,EAAOlvE,EAAGo7X,EAAa9oQ,IAAIpnD,KAClFzM,GAAOpoE,KAAKqkG,OAAOtlF,EAAQqpD,MAC3BqlE,GAAKztI,KAAKqkG,OAAOtlF,EAAQ0uH,IACzBh7F,GAAMzyC,KAAKqkG,OAAOtlF,EAAQ0zB,KAC1BjkC,GAAMxO,KAAKqkG,OAAOtlF,EAAQvQ,KAC1BmopB,GAAOlphB,GAAKrlE,GAEZR,GAAQ,GACRmxnB,GAA+B,IAAlB9vrB,EAAE0E,MAAMw9c,MAC3B,IAAI/4b,GAASllB,KAAK4zF,MAHN14B,GAAOuulB,GAAO,EAGI3nR,GAE1BhvY,KAAKgmX,QAAU+yU,KAKnB/4rB,KAAKupV,MAAMssW,oBAEN9wT,EAAahmX,QAAQu8X,WACtBlpX,KAGJw1C,GAAMQ,KAAOl7D,KAAKulC,IACdvlC,KAAKsB,IAAIikC,GAAK21B,GAAOh2C,IACrB5jB,GAAMmopB,IAGV/ulB,GAAM6lE,GAAKvgI,KAAKulC,IAAIm1B,GAAMQ,KAAOuulB,GAAMnopB,IAEvCxO,KAAKi4rB,OAAOhvrB,GACRjJ,KAAKgmX,SACLhmX,KAAKgmX,OAAOp+S,MAAQA,GACpB5nE,KAAKiK,QAAQ88I,GAAQ/mJ,KAAK04rB,gBAAgB9wnB,KAC1C5nE,KAAKm4rB,SAIbJ,YAAY9urB,GACR,IAAI8mH,EAAQipkB,GAAgB/vrB,GAI5B,GAFAjJ,KAAKi4rB,OAAO,CAAEvvrB,OAAQ1I,KAAK8/D,YAEvB9/D,KAAKgmX,OAAQ,CACb,MAAMp+S,EAAQ5nE,KAAKgmX,OAAOp+S,MAE1B3+D,EAAEi5C,iBACFj5C,EAAEotH,kBAEEnpH,KAAKiN,IAAI41G,GAAS,IAClBA,GA1VU,GA6VV/vH,KAAK+e,QAAQ49X,WAAW5tT,UACxBghC,IAAS,GAGT/vH,KAAKsqZ,OAAOv6R,IACZ/vH,KAAKiK,QAAQ88I,GAAQ,CACjBo/O,KAAMnmY,KAAK+kY,aAAahmX,QACxBgxG,MAAOA,EACPsF,cAAepsH,EACfm/D,KAAMpoE,KAAKu0a,OAAO3sW,EAAMQ,MACxBqlE,GAAIztI,KAAKu0a,OAAO3sW,EAAM6lE,MAI1BztI,KAAKy4rB,YACLxxqB,aAAajnB,KAAKy4rB,YAGtBz4rB,KAAKy4rB,WAAavmrB,WAAW,KACzBlS,KAAKm4rB,QrG3RI,MqGgSrBG,cAAcrvrB,GACV,MAAM8V,EAAU/e,KAAK+e,QAErB/e,KAAKgmX,OAAS,CACVp+S,MAAO,CACHQ,KAAMpoE,KAAKqkG,OAAOtlF,EAAQqpD,MAC1BqlE,GAAIztI,KAAKqkG,OAAOtlF,EAAQ0uH,MAGhC,MAAMxzG,EAAOj6B,KAAK04rB,gBAAgB14rB,KAAKgmX,OAAOp+S,OAE1C5nE,KAAKiK,QAAQ89pB,GAAc9toB,GAC3Bj6B,KAAKgmX,OAAS,KAEd/8W,EAAEi5C,iBAIVs2oB,cACQx4rB,KAAKgmX,SACLhmX,KAAKiK,QAAQ+9pB,GAAYhoqB,KAAK04rB,gBAAgB14rB,KAAKgmX,OAAOp+S,eACnD5nE,KAAKgmX,QAIpBuyU,eAAetvrB,GACX,MAAQsgV,QAAOy8B,OAAQ97W,EAAO6U,UAASgmX,gBAAiB/kY,KAClD4nE,GAAQ19D,EAAM09D,MACd4M,GAAK+0Q,EAAM0vW,oBAAoBhwrB,EAAE+qY,QAAQ,GAAGrqY,EAAEy6B,UAAUz6B,EACxD8qE,GAAK80Q,EAAM0vW,oBAAoBhwrB,EAAE+qY,QAAQ,GAAGrqY,EAAEy6B,UAAUz6B,EACxDylE,GAAOliE,KAAKulC,IAAI+hC,GAAIC,IACpBnF,GAAQpiE,KAAKsB,IAAIgmE,GAAIC,IAE3BxrE,EAAEi5C,iBAEF0lB,GAAMQ,KAAO28T,EAAagvR,mBAAmB,IAAI75kB,GAAM9K,MAAUrwD,EAAQ0zB,IAEzEm1B,GAAM6lE,GAAKs3P,EAAagvR,mBAAmB,IAAI75kB,GAAM5K,MAAWvwD,EAAQvQ,IAExExO,KAAKs1H,KAAK1tD,GAAMQ,KAAMR,GAAM6lE,IAE5BztI,KAAKiK,QAAQ88I,GAAQ/mJ,KAAK04rB,gBAAgB9wnB,KAG9Cy8B,OAAO1gG,GACH,IAAIigB,EAAQjgB,EAEZ,OAAIA,aAAiBoV,OACjB6K,EAAQ5jB,KAAK+kY,aAAagK,cAAcprY,IAGrCigB,EAGX2wZ,OAAO3wZ,GACH,IAAIjgB,EAAQigB,EACZ,OAAI5jB,KAAKm3rB,YACLxzrB,EAAQ3D,KAAK+kY,aAAamvR,WAAWtwoB,GACjCjgB,EAAQ3D,KAAK+e,QAAQvQ,MACrB7K,EAAQ3D,KAAK+e,QAAQvQ,MAItB7K,EAGXu1rB,MAAMv1rB,GACF,MAAMohY,EAAe/kY,KAAK+kY,aACpBnhX,EAAQ5jB,KAAKqkG,OAAO1gG,GAE1B,OAAOohY,EAAaynR,QAAQ5ooB,EAAOA,GAAO,GAG9C0xG,KAAKltD,EAAMqlE,GACP,MAAM1uH,EAAU/e,KAAK+e,QACfgwE,EAAU/uF,KAAK+kY,aAAahmX,QAAQgwE,SAClC38D,SAAQozH,WAAS1lF,WAAak9E,YAAaj+H,EAE7CuwD,GAAQyf,EAAU3mB,EAAOqlE,EACzB5tC,GAAO,KAAO9Q,EAAU,EAAI,GAElC,IAAIktC,GAAMj8H,KAAKk5rB,MAJFnqmB,EAAU0+C,EAAKrlE,GAK5B,MAAM+wnB,GAAgBr4lB,GAAMm7B,GAAIp8B,IAAQztE,EAAOg9C,KAAOo2E,GAAQp2E,MAE9D4hnB,GAAchxrB,KAAKu3rB,SAAU,CACzB7grB,MAAOyirB,KAEXnI,GAAchxrB,KAAK8/D,UAAW,CAC1BsP,KAAM+pnB,KAGVl9jB,GAAMj8H,KAAKk5rB,MAAM5pnB,IAEjB,MAAM8pnB,GAAiBt4lB,GAAM/hF,EAAQrI,OAASulH,GAAIp8B,IAAQztE,EAAOg9C,KAAOo2E,GAAQp2E,OAChF4hnB,GAAchxrB,KAAKw3rB,UAAW,CAC1B9grB,MAAO0irB,KAGX,IAAI13mB,GAAW3iE,EAAQrI,MAAQ0irB,GAC3B13mB,KAAa3iE,EAAQrI,QACrBgrE,IAAYs7D,GAAO1tE,OAGvB0hnB,GAAchxrB,KAAKw3rB,UAAW,CAC1BponB,KAAMsS,KAEVsvmB,GAAchxrB,KAAK8/D,UAAW,CAC1BppD,MAAOxJ,KAAKsB,IAAIuQ,EAAQrI,OAASyirB,GAAgBC,IAAkBp8iB,GAAO1tE,MAAO,KAIzFj9C,IAAI+1C,EAAMqlE,GACN,MAAM1uH,EAAU/e,KAAK+e,QACf0zB,EAAMzyC,KAAKqkG,OAAOtlF,EAAQ0zB,KAC1BjkC,EAAMxO,KAAKqkG,OAAOtlF,EAAQvQ,KAC1B0vpB,GAAYv9F,GAAW3gkB,KAAKqkG,OAAOj8B,GAAO31B,EAAKjkC,GAC/C6qrB,GAAU14H,GAAW3gkB,KAAKqkG,OAAOopC,GAAKywhB,GAAY,EAAG1vpB,GAEvDuQ,EAAQk1T,SACRj0U,KAAKs1H,KAAK4oiB,GAAWm7B,IAGzBt6qB,EAAQqpD,KAAOpoE,KAAKu0a,OAAO2pP,IAC3Bn/oB,EAAQ0uH,GAAKztI,KAAKu0a,OAAO8kR,IAG7B/uS,OAAOv6R,GACH,MAAMhxG,EAAU/e,KAAK+e,QACf0zB,EAAMzyC,KAAKqkG,OAAOtlF,EAAQ0zB,KAC1BjkC,EAAMxO,KAAKqkG,OAAOtlF,EAAQvQ,KAC1B8qrB,EAAOv6qB,EAAQ49X,WAAWt7R,KAC1Bj5C,GAAOpoE,KAAKqkG,OAAOtlF,EAAQqpD,MAC3BqlE,GAAKztI,KAAKqkG,OAAOtlF,EAAQ0uH,IAC/B,IAAI7lE,GAAQ,CAAEQ,KAAMA,GAAMqlE,GAAIA,IAC9B,MAAMorjB,GAAWp+C,GAAW,GAAI7ykB,IAqBhC,GAnBI5nE,KAAKgmX,SACLp+S,GAAQ5nE,KAAKgmX,OAAOp+S,OAGpB0xnB,IAAShmF,KACT1riB,GAAMQ,KAAOu4f,GACTA,GAAWv4f,GAAO2nD,EAAO,EAAG0d,GAAK,GACjCh7F,EAAKjkC,IAIT8qrB,IAASjmF,KACTzriB,GAAM6lE,GAAKkzb,GACPA,GAAWlzb,GAAK1d,EAAOnoD,GAAMQ,KAAO,EAAG55D,GACvCikC,EACAjkC,IAIJo5D,GAAMQ,OAASywnB,GAASzwnB,MAAQR,GAAM6lE,KAAOorjB,GAASprjB,GACtD,YAAKp7G,IAAIu1C,GAAMQ,KAAMR,GAAM6lE,KACpB,EAIfpsB,KAAK0O,EAAOl3C,GACR,MAAM95D,EAAU/e,KAAK+e,QACf0zB,EAAMzyC,KAAKqkG,OAAOtlF,EAAQ0zB,KAC1BjkC,EAAMxO,KAAKqkG,OAAOtlF,EAAQvQ,KAC1B45D,GAAOpoE,KAAKqkG,OAAOtlF,EAAQqpD,MAC3BqlE,GAAKztI,KAAKqkG,OAAOtlF,EAAQ0uH,IAC/B,IAAI7lE,GAAQ,CAAEQ,KAAMA,GAAMqlE,GAAIA,IAC9B,MAAMorjB,GAAWp+C,GAAW,GAAI7ykB,KAExBmnB,YAAY/uF,KAAK+kY,aAAahmX,QAChCslB,GAASt8B,IAAKgnF,GAAU,IAAM,KAC9Bg8jB,GAAU/qpB,KAAK+kY,aAAagmR,UAC5BwuC,GAAWrsrB,KAAKiN,IAAI4woB,GAAQ1mnB,IAAUw0C,EAAO9wE,GAC7CinD,GAAO+7lB,GAAQr0oB,QACfwzB,GAAW42D,GAAMy4lB,GAAWvqoB,GAAM,GAClCupmB,GAAWz3jB,GAAM52D,GAAW6lF,GAC5ByoiB,GAAW13jB,IAAO,EAAI52D,IAAY6lF,GAiBxC,GAfI/vH,KAAKgmX,SACLp+S,GAAQ5nE,KAAKgmX,OAAOp+S,OAGxBA,GAAMQ,KAAOu4f,GACTA,GAAWv4f,GAAOmwlB,GAAU,EAAG9qhB,GAAK,GACpCh7F,EAAKjkC,GAGTo5D,GAAM6lE,GAAKkzb,GACPA,GAAWlzb,GAAK+qhB,GAAU5wlB,GAAMQ,KAAO,EAAG55D,GAC1CikC,EACAjkC,GAGAo5D,GAAMQ,OAASywnB,GAASzwnB,MAAQR,GAAM6lE,KAAOorjB,GAASprjB,GACtD,YAAKp7G,IAAIu1C,GAAMQ,KAAMR,GAAM6lE,KACpB,EAIfxjI,QAAQjF,EAAMi1B,GACV,OAAQj6B,KAAKwjB,UAAYxjB,KAAKupV,OAAOt/U,QAAQjF,EAAMi1B,IAI3D6onB,GAAkBniL,GAAW,CACzB1sJ,SAAS,EACT0oE,WAAY,CACRt7R,KAAM,QAEV5uE,IAAKwmmB,EACLzqoB,IAAKwqoB,IAGT,SAAer4K,GCvjBf64N,GA1BA,iBAAsB9pT,GAClBliY,KAAKirE,GACD,IAAKA,IAAUA,EAAM+1lB,eAAkBxuqB,KAAK83X,UAAY93X,KAAK83X,WAAar/S,EACtE,OAGJ,MAAM15D,EAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAAS05D,EAAM15D,QAAQg4B,SACrD9oC,EAASwqE,EAAM+1lB,gBAEjBvgqB,GACAjO,KAAK83X,SAAWr/S,EAChBj5D,MAAMhS,KAAK,CACPirE,MAAOA,EACPxqE,OAAQA,GACT8Q,EAAS05D,IAEZz4E,KAAK69D,OAIbA,cACW79D,KAAK83X,SACZt4W,MAAMq+C,SCrBd,iBAA4B6xU,GACxB5vY,YAAYqlY,EAAUpmX,GAClBS,MAAM2lX,EAASm7Q,aAAcvhoB,GAE7B/e,KAAKmlY,SAAWA,EAChBnlY,KAAKy6qB,cAAgBt1S,EAASm7Q,aAAalloB,OAG/Cu/pB,OAAO76lB,EAAQjH,GACX,MAAM4gnB,EAAgBz1C,GAAKlkkB,EAAQ,SAASrH,GACxC,MAAM1hC,EAAU0hC,EAAM0oL,OAAOpqN,QAG7B,QAFiBA,IAA+B,IAApBA,EAAQk9R,WAKxC,GAAIwlX,EAAc1zrB,OAAS,EAAG,CAC1B,MAAM0yE,EAAQghnB,EAAc,GACtB/qC,EAAO1upB,KAAKmlY,SAASJ,aAAaynR,QAAQ/zkB,EAAMu2T,YAEhD/gY,GAAS4qE,EAAS74E,KAAK05rB,YAAY7gnB,EAAQ61kB,GAAQ1upB,KAAK25rB,eAAelhnB,EAAOi2kB,GAEpF1upB,KAAKwN,KAAK,CACNS,OAAQA,GACRg0X,QAAQ,EACRniT,OAAQA,EACRshL,SAAU3oL,EAAM2oL,SAChB4hI,aAAchjY,KAAKy6qB,cAAcrjG,KAAKp3kB,KAAK+e,QAAQ66qB,eAAgBnhnB,EAAM2oL,UACzED,OAAQnhQ,KAAKmlY,SAAShkI,QACvBnhQ,KAAK+e,UAIhB26qB,YAAYjhnB,EAAOi2kB,GAOf,OANa1upB,KAAKmlY,SAASJ,aAMjBhmX,QAAQ/S,WACdysE,EAAM9uE,EAAI+kpB,EAAKr/kB,SAAS1lE,GAGrB,CACH8uE,MAAOA,EACPtb,MAXU,CACVpxD,WAAY,OACZC,SAAU,WAalB2trB,eAAelhnB,EAAOi2kB,GAClB,MAAMzyhB,EAAMxjD,EAAM8hhB,MAAMvgN,KAAKshS,YACvBtvqB,EAAWhM,KAAKmlY,SAASJ,aAAahmX,QAAQ/S,SAC9CqjE,EAAS4sD,EAAI5sD,SACbwqnB,GAAanrC,EAAKr/kB,SAMxB,IAAIyqnB,GACJ,OACIA,GADA9trB,EACc,IAAIkuE,GAAM7K,EAAO1lE,EAAGkwrB,GAAW/loB,GAE/B,IAAIomB,GAAM2/mB,GAAWlwrB,EAAG0lE,EAAOvb,GAG1C,CACH2kB,MAAOqhnB,GACP38nB,MAdU,CACVpxD,WAAY,SACZC,SAAU,YAiBtB82oB,GAAkBi3C,GAAe,CAC7BH,eAAgB,UAGpB,SAAeG,GC5Ef,iBAAgC19iB,GAE5Bk9L,QACI,MAAQ7kU,UAASqK,WAAY/e,KAG7B,GAFa0U,EAAQ47I,OAEX,CACNtwJ,KAAKqkC,OAAStlB,EAAQslB,OACtB,MAAM8hW,EAAOpnX,EAAQ/S,SAAWlG,GAAIiC,GAE9BiyrB,EAAYh6rB,KAAKg6rB,UAAY,IAAI1mnB,KAAW,EAAG,GACrD0mnB,EAAU7zT,GAAQ0+R,GAElBnwpB,EAAQrK,UAAUipE,OACbotB,MAAMs5lB,EAAUrwrB,EAAGqwrB,EAAUlmoB,SAGlC9zD,KAAKwmB,QAIbgmC,KAAKq8B,GACD,MAAMoxmB,EAASnpB,GAAiB9wqB,KAAKg6rB,UAAUrwrB,EAAG,EAAGk/E,GAC/CqxmB,EAASppB,GAAiB9wqB,KAAKg6rB,UAAUlmoB,EAAG,EAAG+0B,GAErD7oF,KAAK0U,QAAQrK,UAAUipE,OAClBotB,MAAMu5lB,EAAQC,EAAQl6rB,KAAKqkC,SAIpC7d,QACIhH,MAAMgH,QACNxmB,KAAK0U,QAAQrK,UAAU,OAI/By4oB,GAAkBq3C,GAAmB,CACjCjurB,SAAUy4pB,IAGdtohB,oBAAuCkphB,GAAK40B,ICzC5C,iBAA8B99iB,GAC1Bk9L,QACI,MAAMlqQ,EAASrvE,KAAKqvE,OAASrvE,KAAK0U,QAAQ47I,OAAOjhF,SACjDrvE,KAAK0U,QAAQrK,UAAUipE,OAClBotB,MAAMmkkB,GAAaA,GAAax1lB,IAIzC7iB,KAAKq8B,GACD7oF,KAAK0U,QAAQrK,UAAUipE,OAClBotB,MAAM7X,EAAKA,EAAK7oF,KAAKqvE,UAKlCyzkB,GAAkBs3C,GAAiB,CAC/Bv1V,OAAQ,mBAGZxoN,oBAAuCophB,GAAQ20B,ICnB/C,iBAA8B/9iB,GAC1Bk9L,QACIv5U,KAAKq6rB,OAASr6rB,KAAK0U,QAAQtK,UAC3BpK,KAAK0U,QAAQtK,QAAQ,GAGzBoiD,KAAKq8B,GACD7oF,KAAK0U,QAAQtK,QAAQy+E,EAAM7oF,KAAKq6rB,SAIxCv3C,GAAkBw3C,GAAiB,CAC/BpurB,SAAU,IACV24V,OAAQ,WAGZxoN,oBAAuCuohB,EAAQ01B,IChB/C,iBAA2Bj+iB,GACvBk9L,QACIv5U,KAAK0U,QAAQrK,UAAUipE,OAClBotB,MAAMmkkB,GAAaA,GAAa7kqB,KAAK+e,QAAQswD,SAItD7iB,KAAKq8B,GACD7oF,KAAK0U,QAAQrK,UAAUipE,OAClBotB,MAAM7X,EAAKA,EAAK7oF,KAAK+e,QAAQswD,UAK1CyzkB,GAAkBy3C,GAAc,CAC5B11V,OAAQ,iBACR34V,SAAUy4pB,IAGdtohB,oBAAuC8phB,GAAKo0B,ICd5C,iBAA+BphB,GAC3Bx8jB,SACIn9F,MAAMm9F,SAEN38G,KAAK+vqB,iBAGTO,cAAcxnB,EAAY2jB,EAAexC,GAErC,IAAIC,EAEJ,OACIA,EAJUuC,EAActiqB,QAGdi7pB,GACEkM,GAEAh2lB,GAGT,IAAI4ulB,EAAUphB,EAAY2jB,EAAexC,GAGpDoH,kBAEI,OAAOvxlB,MADcuxlB,kBACP19nB,OAAO3zC,KAAKiwqB,WAG9B0I,mBAAmBh1qB,EAAOilY,GACtB,GAAIA,IAAkBo8R,GAAM,CACxB,MAAMw1B,EAAe,CACjB7wrB,EAAGhG,EAAMgG,EACTmqD,EAAGnwD,EAAMmwD,GAEb,OAAK0kX,GAASgiR,EAAa7wrB,KACvB6wrB,EAAa7wrB,EAAI,GAEhB6ua,GAASgiR,EAAa1moB,KACvB0moB,EAAa1moB,EAAI,GAEd0moB,IAKnB//C,GAAWggD,GAAiBp6qB,UAAWmxpB,IAEvC,SAAeipB,GCpCf,iBAAyBnX,GACrBn5B,aACInqpB,KAAKg5qB,WAAa,GAClBh5qB,KAAKi5qB,WAAa,GAElBj5qB,KAAK06rB,kBAAoB,IAAI3S,GAC7B/nrB,KAAK26rB,kBAAoB,IAAI5S,GAGjCprkB,OAAOsoR,EAAQjlY,KAAKilY,OAChB,MAAMm6S,EAAep/qB,KAAKm/qB,oBAE1B,QAASxwqB,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMqrY,EAAO/U,EAAMt2X,GACb25qB,EAAalJ,EAAaplS,EAAKj7X,QAAQ/Z,MAAQ,YAAc,GACnEhF,KAAKu+qB,YAAY+J,GACjB,MAAMsS,GAAiB56rB,KAAKs/qB,oBAAoBgJ,IAE3CsS,KAIL56rB,KAAK66rB,mBACDjS,GAAmBgS,GAAgB/zB,IACnC7sR,GAGJh6Y,KAAK86rB,uBACDlS,GAAmBgS,GAAgB9zB,IACnC9sR,GAGJh6Y,KAAK+6rB,kBACDnS,GAAmBgS,GAAgBn1B,IACnCzrR,IAIRh6Y,KAAKg7rB,WAAW/1T,GAGpB82S,YAAYxyV,EAAOywD,GACfh6Y,KAAK06rB,kBAAkBh0kB,OAAO6iO,EAAMgvV,aACpCv4qB,KAAK26rB,kBAAkBj0kB,OAAO6iO,EAAMivV,aAEpCh5pB,MAAMu8pB,YAAYxyV,EAAOywD,GAG7BgiS,WAAW71S,GACP,MAAMyL,EAAWzL,EAAKpnX,QAAQ/Z,KAE9Bwa,MAAMw8pB,WAAW71S,GAEjBh0W,EAASpT,QAAQ/S,UACbhM,KAAK26rB,kBAAkBr2hB,MAAMstO,UACtB5xY,KAAKi5qB,WAAWrnS,KAEvB5xY,KAAK06rB,kBAAkBp2hB,MAAMstO,UACtB5xY,KAAKg5qB,WAAWpnS,IAGvBzL,IAASnmY,KAAKgrpB,cACPhrpB,KAAKgrpB,MAGZ7kR,IAASnmY,KAAKirpB,cACPjrpB,KAAKirpB,MAKpBo0B,eAAel+a,GACX,MAAMpiP,EAAU/e,KAAK+e,QACf65pB,EAAYz3a,EAAOmkI,MAEnBA,EAAQ0+Q,GADO,GAAGrwmB,OAAO50B,EAAQumX,OACN,SAASnzW,IAAK,OAAOA,GAAEntB,OAAS4zqB,IAAc,GACzEC,GAAY13a,EAAOokI,MAEnBA,GAAQy+Q,GADO,GAAGrwmB,OAAO50B,EAAQwmX,OACN,SAASpzW,IAAK,OAAOA,GAAEntB,OAAS6zqB,KAAc,GAK/E,OAFkBvzS,GAAS,IAAI0U,OAASzU,IAAS,IAAIyU,OAFvCj7X,EAAQkmX,OAAS,CAAE,KACH,GAAGjgY,MAAQ,UAM7C61rB,mBAAmB15b,EAAQ64I,GACnB74I,EAAOp7P,OAAS,GAChB/F,KAAK+7qB,YACD,IAAI5C,GAAan5qB,KAAM,CAAEmhQ,OAAQA,EAAQs8I,KAAMzD,EAAKj7X,QAAQ0+X,OAC5DzD,GAKZ8gT,uBAAuB35b,EAAQ64I,GACvB74I,EAAOp7P,OAAS,GAChB/F,KAAK+7qB,YACD,IAAI0e,GAAiBz6rB,KAAM,CAAEmhQ,OAAQA,EAAQs8I,KAAMzD,EAAKj7X,QAAQ0+X,OAChEzD,GAKZ+gT,kBAAkB55b,EAAQ64I,GAClB74I,EAAOp7P,OAAS,GAChB/F,KAAK+7qB,YACD,IAAIlC,GAAY75qB,KAAM,CAAEmhQ,OAAQA,EAAQs8I,KAAMzD,EAAKj7X,QAAQ0+X,OAC3DzD,GAKZihT,aAAal8qB,EAAS/S,EAAU6lY,GAC5B,MAAMD,EAAW7yX,EAAQ/Z,KACnBk2rB,EAAYlvrB,EAAWhM,KAAKi5qB,WAAaj5qB,KAAKg5qB,WAC9CkT,GAAUlgrB,EAAWhM,KAAK26rB,kBAAoB36rB,KAAK06rB,kBACnDjgC,GAAchgB,GAAW,CAAE1rjB,SAAU/iF,GAAYhM,KAAKsgpB,aAAa57U,KAAO3lT,EAAS,CAAE/S,SAAUA,IAC/FmvrB,GAAQxe,GAAiBliB,GAAY3ypB,KAAMqgqB,IAC3CgkB,GAAeD,GAAQrnlB,QACvBunlB,GAAmB+O,GAAQ,CAAE1opB,IAAK,GAAKjkC,IAAK,GAAM,CAAEikC,IAAK,EAAGjkC,IAAK,GACjEo5D,GAAQsknB,GAAQrnlB,MAAM+sS,IAAau6S,IAAgBC,GACnDgP,GAAc,CAAE3gC,GAAYhonB,IAAKgonB,GAAYjspB,KAC7C2yP,GAASnhQ,KAAKmhQ,OAEpB,QAAS8oa,GAAW,EAAGA,GAAW9oa,GAAOp7P,OAAQkkqB,KAAY,CACzD,MAAMwC,GAAgBtra,GAAO8oa,IACvBoxB,GAAiB5uB,GAAczgqB,EAAW,QAAU,SAC1D,GAAKqvrB,KAAmB5gC,GAAYz1pB,MAAwB,IAAd6sY,IAAoBwpT,GAAiB,CAC/E,MAAMC,GAAkBj4B,qBAA+BoJ,GAAe,GAAGnK,YACzE84B,GAAY31rB,KAAK61rB,GAAgBtvrB,EAAW,IAAM,MAElD,OASR,IAAIuvrB,GASAh8B,GAdc,IAAd1tR,GAAmBs6S,KACnBvknB,GAAMn1B,IAAMvlC,KAAKulC,IAAIm1B,GAAMn1B,IAAK05oB,GAAa15oB,KAC7Cm1B,GAAMp5D,IAAMtB,KAAKsB,IAAIo5D,GAAMp5D,IAAK29qB,GAAa39qB,MAKjD,QAASG,GAAI,EAAGA,GAAIysrB,GAAYr1rB,OAAQ4I,KACpC,GAAIysrB,GAAYzsrB,cAAcoK,KAAM,CAChCwirB,IAAe,EACf,MAMJh8B,GADAod,GAAiBliB,GAAY3ypB,KAAMkpE,KAAWyplB,GAAY3ypB,MAAQyzrB,GACvD3mT,GACRi0Q,GACQiT,GAEAnB,GAGf,MAAMx0R,GAAO,IAAIo5R,GAAS33lB,GAAMn1B,IAAKm1B,GAAMp5D,IAAKispB,GAAaz6pB,KAAKsgpB,cAGlE,GAFAn6Q,GAAK0L,UAAYA,EAEbD,EAAU,CACV,GAAIspT,EAAUtpT,GACV,MAAM,IAAIn7X,MAAO,GAAGzK,EAAW,IAAM,sBAAwB4lY,wBAEjEspT,EAAUtpT,GAAYzL,GAG1B,YAAK01S,WAAW11S,IAETA,GAGX60T,WAAW/1T,GACP,MAAMlmX,EAAU/e,KAAK+e,QACfy8qB,EAAe,GAAG7npB,OAAO50B,EAAQumX,OACjCu5S,EAAQ,GACR4c,EAAe,GAAG9npB,OAAO50B,EAAQwmX,OACjCu5S,GAAQ,GAEd,QAAS30oB,GAAM,EAAGA,GAAMqxpB,EAAaz1rB,OAAQokC,KAErC0zmB,GADa79oB,KAAKg+qB,SAASwd,EAAarxpB,IAAK6vW,MAC3B/U,IAClB45S,EAAMp5qB,KAAKzF,KAAKi7rB,aAAaO,EAAarxpB,KAAM,EAAOA,KAI/D,QAASA,GAAM,EAAGA,GAAMsxpB,EAAa11rB,OAAQokC,KAErC0zmB,GADa79oB,KAAKg+qB,SAASyd,EAAatxpB,IAAK6vW,MAC3B/U,IAClB65S,GAAMr5qB,KAAKzF,KAAKi7rB,aAAaQ,EAAatxpB,KAAM,EAAMA,KAI9DnqC,KAAKgrpB,MAAQhrpB,KAAKgrpB,OAAS6zB,EAAM,GACjC7+qB,KAAKirpB,MAAQjrpB,KAAKirpB,OAAS6zB,GAAM,GAGrC0E,eAAej6V,EAAOtgV,EAAGojrB,GACrB,MAAMxzmB,EAAS0wQ,EAAM+iW,kBAAkBrjrB,GACjCwvE,EAAQ,IAAIyB,GAAMrB,EAAOlvE,EAAGkvE,EAAO/kB,GACnCoonB,GAAUl8qB,KAAKmjQ,KACfp9P,GAASm2qB,GAAQn2qB,OACjByjV,GAAU,GACVC,GAAU,GAEhB,QAAS96U,GAAI,EAAGA,GAAI5I,GAAQ4I,KAAK,CAC7B,MAAMw3X,GAAO+1S,GAAQvtqB,IACftI,GAAS8/X,GAAKpnX,QAAQ/S,SAAWy9U,GAAUD,GAC3ChiV,GAAe2+X,GAAK7+V,SAASmxC,GACd,OAAjBjxE,IACAnB,GAAOZ,KAAK+B,IAIhBgiV,GAAQzjV,OAAS,GAAK0jV,GAAQ1jV,OAAS,GACvCwjV,EAAMt/U,QAAQoirB,EAAW,CACrB33qB,QAASsmoB,GAAa/xoB,GACtBosH,cAAepsH,EACfU,EAAG8irB,GAAkBjjW,IACrB11R,EAAG24nB,GAAkBhjW,MAKjCijW,kBAAkBvmT,EAAMpnX,GACpB,MAAM/S,EAAWm6X,EAAKpnX,QAAQ/S,SACxBm3P,EAAOnjQ,KAAK4+qB,UAAU5+qB,KAAKilY,OAC3BrhX,GAAS5X,EAAWm3P,EAAKrvM,EAAIqvM,EAAKx5P,GAAGmW,QAAQqmX,GAEnDumT,GAAkB1srB,KAAK+e,QAAS6E,EAAO5X,EAAU+S,GACjD2tqB,GAAkB1srB,KAAKyxf,gBAAiB7te,EAAO5X,EAAU+S,IAIjE,YAA2B4tqB,GAAe96S,EAAW7lY,EAAU+S,GAE3D07nB,GADqB,GAAG9mmB,OAAO3nC,EAAW2grB,GAAcpnT,MAAQonT,GAAcrnT,OAAQuM,GAC9D9yX,GAG5B+joB,GAAkB44C,GAAY,CAC1Bp2T,MAAO,GACPC,MAAO,KAGXk1Q,GAAWihD,GAAWr7qB,UAAWwsqB,IAEjC,SAAe6O,GC/Pf,iBAAyBv5C,GACrBripB,YAAY6D,EAAOs1Y,EAAQl6X,GACvBS,MAAMT,GAEN/e,KAAK2D,MAAQA,EACb3D,KAAKi5Y,OAASA,EAGlBt8R,SACI,MAAM6tR,EAASxqY,KAAK+e,QAAQyrX,OACtB81Q,EAAetgpB,KAAKu6lB,MAAM+lD,aAChC,IAAI3ha,EAAY3+O,KAAK2D,MAErB,GAAI3D,KAAK6tqB,YAA8B,IAAjB7tqB,KAAKi0U,QACvB,OAEJj0U,KAAK6tqB,WAAY,EAEjB,MAAMxzG,EAAgB9rL,GAAY/D,GAC5Bw4Q,EAAYhjpB,KAAKgjpB,YAQvB,GANA58D,EACIznW,EAAY07U,EAAc2oF,GACnBx4Q,EAAOpvX,SACdujO,EAAY2ha,EAAalloB,OAAOg8jB,KAAK5sM,EAAOpvX,OAAQujO,IAGpD6rJ,EAAOv2D,UAAYt1F,GAA2B,IAAdA,GAAkB,CAClD,GAAI6rJ,EAAOtgW,WAAauumB,GAAUjuQ,EAAOtgW,WAAam+nB,GAC7C79R,EAAOjrP,QACRirP,EAAOjrP,MAAQo8iB,GAAc37rB,KAAK+e,QAAQwgI,QAEzCirP,EAAOxkD,aACRwkD,EAAOxkD,WAAahmV,KAAK+e,QAAQwgI,WAElC,CACH,MAAMq8iB,GAAct7C,EAAatqQ,MAAM5Q,eAAeoF,OACtDA,EAAOjrP,MAAQirP,EAAOjrP,OAASq8iB,GAAYr8iB,MAC3CirP,EAAOxkD,WAAawkD,EAAOxkD,YAAc41W,GAAY51W,WAIzDhmV,KAAKoF,MAAQ,IAAIqipB,GAAQ9oa,EAAW87Z,GAAW,GAAIjwQ,EAAQ,CACvDrtU,MAAOs7kB,EACP+J,OAAQ,GACRr9U,UAAW,CACPr9T,KAAM88pB,EACNtzpB,MAAOtR,KAAK67rB,kBAEhB74C,GAEJhjpB,KAAKkxB,OAAOlxB,KAAKoF,QAIzB86oB,OAAOpD,GACH98oB,KAAK28G,SACL38G,KAAKi8H,IAAM6ghB,EACX98oB,KAAKmuqB,cAGTA,cACI,MAAQpvpB,SAAWyrX,OAAQsxT,GAAiB12rB,SAAUpF,KAChDi5Y,EAASj5Y,KAAKi5Y,OAAOzpR,QACrBuskB,EAAiBD,EAAcp6mB,SAC/B4P,EAAQ2nT,EAAOmhC,SAErB,GAAIh1a,EAAO,CACP,MAAM42rB,GAAc52rB,EAAM62H,IAAI1xH,SACxB0xrB,GAAa72rB,EAAM62H,IAAIvlH,QAC7B,IAAIwlrB,GAEJ,GAAIJ,EAAc5xpB,WAAauumB,EAC3Bx/P,EAAOxmT,OAASvlF,KAAKiN,KAAK8+X,EAAOxmT,OAASupmB,IAAe,GAAKA,GAC9DE,GAAKjjT,EAAOxgU,MAAM6Y,GAClBlsF,EAAM86oB,OAAO,IAAIjD,GAAIi/C,GAAGvyrB,EAAGuyrB,GAAGpooB,EAAIkooB,GAAc,EAAGE,GAAGvyrB,EAAGuyrB,GAAGpooB,YACrDgooB,EAAc5xpB,WAAam+nB,GAClCpvR,EAAOxmT,OAASwmT,EAAOxmT,OAASupmB,GAAc,EAC9CE,GAAKjjT,EAAOxgU,MAAM6Y,GAClBlsF,EAAM86oB,OAAO,IAAIjD,GAAIi/C,GAAGvyrB,EAAGuyrB,GAAGpooB,EAAIkooB,GAAc,EAAGE,GAAGvyrB,EAAGuyrB,GAAGpooB,QACzD,CACH,IAAIqhB,GACJ+mnB,GAAKjjT,EAAOzpR,QAAQ86R,OAAOyxS,GAAgBtjnB,MAAM6Y,GACjDu3jB,GAAOl/oB,GAAKsvY,EAAO5pU,OAAO1lE,GACtBwrE,GAAK+mnB,GAAGvyrB,EAAIsyrB,GACZ72rB,EAAMujF,YAAc2qhB,KAEpBn+hB,GAAK+mnB,GAAGvyrB,EAAIsyrB,GACZ72rB,EAAMujF,YAAc0qhB,IAExBjumB,EAAM86oB,OAAO,IAAIjD,GAAI9nkB,GAAI+mnB,GAAGpooB,EAAIkooB,GAAaE,GAAGvyrB,EAAGuyrB,GAAGpooB,MAKlEmqR,eACI,MAAQg7D,SAAQl6X,WAAY/e,KAI5B,GAFAwf,MAAMy+T,eAEFj+U,KAAK2D,MACL,GAAIob,EAAQ6kP,OAAQ,CAChB,MAAMlxK,GAAcumT,EAAOvmT,WAAa,KAAO,IACzCkxK,EAAS7kP,EAAQ6kP,OAAO,CAC1BxC,SAAUphQ,KAAKohQ,SACf9rM,SAAUt1D,KAAKs1D,SACf3xD,MAAO3D,KAAK2D,MACZw9P,OAAQnhQ,KAAKmhQ,OACbskF,WAAYzlV,KAAKylV,WACjBp2Q,OAAQ,IAAIiE,KAAW2lU,EAAO5pU,OAAO1lE,EAAGsvY,EAAO5pU,OAAOvb,GACtD2+B,OAAQwmT,EAAOxmT,OACfymT,YAAaD,EAAOC,YACpBxmT,WAAYA,EACZC,SAAUD,EAAaumT,EAAO3nT,MAC9BvyE,QAASA,EACT+5U,OAAQ94V,KAAKogpB,YACbniU,aAAc,KACV,MAAMv1S,EAAQ,IAAI2zG,KAClB,YAAK8/iB,oBAAoBzzpB,GAElBA,KAIXk7N,GACA5jQ,KAAK4jQ,OAAO1yO,OAAO0yO,QAGvB5jQ,KAAKm8rB,oBAAoBn8rB,KAAK4jQ,QAK1Cu4b,oBAAoBzzpB,GAChB,MAAQuwW,SAAQl6X,WAAY/e,KACtBo8rB,EAAgBr9qB,EAAQi+H,QAAU,GASlCuC,GAAQxgI,EAAQwgI,MAChB7wI,GAAO,CACT6wI,MAAOA,GACPn1I,QAAS2U,EAAQ3U,SAEfw5P,GAAS5jQ,KAAKswqB,cAAcr3R,EAAQwhQ,GAAW,CACjD/roB,KAAMA,GACNmzI,OAAQ,CACJz3I,QAAS2U,EAAQ3U,SAErB6mJ,OAAQlyI,EAAQkyI,QAlBLmriB,EAAc1lrB,MAAQ,EAAI,CACrCmrI,OAAQ,CACJtC,MAAO68iB,EAAc78iB,MACrB7oI,MAAO0lrB,EAAc1lrB,MACrBtM,QAASgyrB,EAAchyrB,QACvB43P,SAAUo6b,EAAcp6b,WAE5B,KAcJt5N,EAAMxX,OAAO0yO,IAET0wa,GAAmBv1pB,IACnB2pB,EAAMxX,OAAOlxB,KAAK+hpB,sBAAsBn+Y,GAAQ,CAC5C2wa,UAAWh1hB,GACX88iB,aAAc3trB,IACf+roB,GAAW,CACVprkB,OAAQ,CAAE4pU,EAAO5pU,OAAO1lE,EAAGsvY,EAAO5pU,OAAOvb,GACzColV,YAAaD,EAAOC,YACpBzmT,OAAQwmT,EAAOxmT,OACf6pmB,WAAW,GACZv9qB,EAAQoqX,WAInBmnS,cAAcr3R,EAAQl6X,GAClB,OAAIA,EAAQw9qB,cACD,IAAIlgjB,KAAY,IAAI/oE,KAAY,IAAIA,KAAW2lU,EAAO5pU,OAAO1lE,EAAGsvY,EAAO5pU,OAAOvb,GAAImlV,EAAOxmT,QAAS1zE,GAGtG0goB,sBAAgCxmQ,EAAQl6X,GAGnD6hoB,kBACI,MAAQ7hoB,UAASk6X,QAAU5pU,WAAarvE,KAExCy6oB,GAAW17nB,EAAS,CAChBomT,UAAW,CACP91P,OAAQ,CAAEA,EAAO1lE,EAAG0lE,EAAOvb,GAC3BxiD,MAAOtR,KAAK67rB,kBAIpBr8qB,MAAMohoB,kBAGVc,gBAAgB3ioB,GACZ,MAAMwrX,EAAYvqY,KAAK+e,QAAQwrX,WAAa,GACtCvtP,EAASutP,EAAUvtP,QAAU,GAEnC,OAAOh9I,KAAKswqB,cAActwqB,KAAKi5Y,OAAQwhQ,GAAW,GAAI17nB,EAAS,CAC3DrQ,KAAM,CACF6wI,MAAOgrP,EAAUhrP,MACjBn1I,QAASmgY,EAAUngY,SAEvBy3I,OAAQ,CACJz3I,QAAS4yI,EAAO5yI,QAChBsM,MAAOsmI,EAAOtmI,MACd6oI,MAAOvC,EAAOuC,UAK1B+uhB,kBACI,OAAOtuqB,KAAK4jQ,OAAOplM,SAAS,GAGhCsjlB,sBACI,MAAM7oQ,EAASj5Y,KAAKi5Y,OAEpB,MAAO,CACHl6X,QAAS/e,KAAK+e,QACd0zE,OAAQwmT,EAAOxmT,OACfymT,YAAaD,EAAOC,YACpB7pU,OAAQ,IAAIiE,KAAW2lU,EAAO5pU,OAAO1lE,EAAGsvY,EAAO5pU,OAAOvb,GACtD4+B,WAAYumT,EAAOvmT,WACnBC,SAAUsmT,EAAO3nT,MAAQ2nT,EAAOvmT,WAChCkxK,OAAQ5jQ,KAAK4jQ,QAIrB4qa,gBACI,MAAMv1R,EAASj5Y,KAAKi5Y,OAAOzpR,QAAQ86R,O9GxOpB,G8GyOT6zP,EAAWllQ,EAAOmhC,SAGxB,MAAO,CACH3hW,MAHawgU,EAAOxgU,MAAM0lkB,GAI1BhhlB,MAAOq/nB,GAAiBr+C,EAAW,MAI3C3uQ,YAAYp0X,GACR,OAAOpb,KAAKu6lB,MAAMizE,iBAAiBxtqB,KAAMob,GAG7C4noB,YACI,MAAO,CACH1tlB,SAAUt1D,KAAKs1D,SACf8rM,SAAUphQ,KAAKohQ,SACfz9P,MAAO3D,KAAK2D,MACZw9P,OAAQnhQ,KAAKmhQ,OACbskF,WAAYzlV,KAAKylV,aAK7B,MAAMg3W,GAAS37lB,GAAMq6iB,GAAI,IAAKtC,GACxB6jD,GAAS57lB,GAAMq6iB,GAAI,IAAKtC,GAE9B,YAA0BvnjB,IACtB,MAAMw5C,EAAUqwgB,GAAI7pjB,IACdqrmB,EAAO77lB,GAAM5zF,KAAKwkF,IAAIo5C,GAAU+tgB,GAChC+jD,EAAS97lB,GAAM5zF,KAAK65E,IAAI+jD,GAAU+tgB,GAGxC,IAAI9soB,EASAC,EACJ,OARID,EADAmB,KAAKiN,IAAIwirB,GAAQD,GACJjkD,EACVwV,EAAa,EACH36C,GAEAD,GAKbrnmB,EADAkB,KAAKiN,IAAIwirB,GAAQF,GACNhkD,EACRhhb,EAAW,EACH+gb,EAEAa,GAGR,CACHttoB,WAAYA,EACZC,SAAUA,GAIlB82oB,GAAkB+5C,GAAY,CAC1Bt9iB,MAAOg6f,GACPpwQ,QAAS,CACL4D,SAAU,gBAEd/vP,OAAQ,CACJtmI,MAAO,IAEX8zX,OAAQ,CACJv2D,SAAS,EACTvyP,SAAU,GACV2jE,KAAMuzf,EACNrqmB,OAAQ6umB,GAAW,IACnBjglB,MAAOu7kB,EACPznf,OAAQ,EACR/mH,SAAUo+nB,IAEdnjW,UAAW,CACPr9T,KAAMq+pB,IAEV57R,UAAW,CACPt2D,SAAS,EACTj3L,OAAQ,CACJtmI,MAAO,IAGfu9T,SAAS,IAGbwmU,GAAWoiD,GAAWx8qB,UAAWwupB,IAEjC,SAAeguB,GCtRfC,GAjDsB,CAClBC,iBAAkB,SAASp5rB,GAAO80E,EAAO15D,GACrC,MAAMi+qB,EAAgBh9rB,KAAK+e,QAAQkuB,QAAU,GACvC6upB,EAAgBkB,EAAcxyT,QAAU,GACxCkC,EAAgBswT,EAActwT,eAAiB,GAC/C8xS,GAAsB9xS,EAAclC,QAAU,GAEpD,GAAIzrX,IAAuC,IAA5BA,EAAQ6qX,gBAA2B,CAC9C,MAAMqzT,IAAmC,IAApBl+qB,EAAQk1T,QACvBomP,GAAgB4iI,GAAe1uT,GAAYutT,GAC7CvtT,GAAYiwS,KAAwBjwS,GAAYutT,GACpD,IAYIpd,GAAkBC,GAZlB7zqB,GAAOiU,EAAQqiP,SAEfi5T,KACAvvjB,GAAOuvjB,GAAc,CACjBvvjB,KAAMA,GACNq2P,OAAQpiP,EAAQoiP,OAChB7rM,SAAUv2C,EAAQu2C,SAClBmwR,WAAY1mU,EAAQ0mU,WACpB9hV,MAAOA,MAKXs5rB,IACAve,GAAmB,GACnBC,GAAclmmB,EAAM8mE,QAEpBm/hB,GAAmB,CACfn/hB,MAAOi/hB,GAAoBj/hB,MAC3B8F,KAAMm5hB,GAAoBn5hB,MAE9Bs5hB,IAAejyS,EAAcrmD,SAAW,IAAI9mM,OAG5Ci5R,GAAS1ta,KAAkB,KAATA,IAClB9K,KAAK0xP,YAAYjsP,KAAK,CAClBkqE,OAAQstnB,GACRl3T,WAAYhnX,EAAQ6E,MACpB9Y,KAAMA,GACNq2P,OAAQpiP,EAAQoiP,OAChBw9a,YAAaA,GACbn0S,OAAQk0S,QC/B5B,iBAAuBv8B,GACnBripB,YAAYqlY,EAAUpmX,GAClBS,MAAMT,GAEN/e,KAAKmlY,SAAWA,EAChBnlY,KAAKsgpB,aAAen7Q,EAASm7Q,aAC7BtgpB,KAAK8/E,OAAS,GACd9/E,KAAK0xP,YAAc,GACnB1xP,KAAK28G,SAGTA,SACI38G,KAAK+pqB,mBAAmB/pqB,KAAKo0U,SAASvuT,KAAK7lB,OAG/C+pqB,mBAAmBl6pB,GACf,MAAQkP,UAASomX,UAAYpmX,SAAW8lX,eAAe,MAAW7kY,KAC5Dk9rB,EAAcr4T,EAAa9+X,OAC3Bo7P,EAASpiP,EAAQoiP,OACjBqoa,GAAcroa,EAAOp7P,OAE3B,QAASkkqB,GAAW,EAAGA,GAAWT,GAAaS,KAAY,CACvD,MAAMwC,GAAgBtra,EAAO8oa,IACvBn3pB,GAAO25pB,GAAc35pB,MACnBrE,SAAOqxE,UAAQ83B,UAAUullB,GAAa1wB,IACxC2wB,GAAgB,IAAM3urB,GAC5B,IAAI4urB,GAIAC,GAHC/uoB,SAAS6uoB,MACVC,GAAgB,IAAMzllB,IAKtB0llB,GADA1yF,GAAQ6hE,GAAc/5kB,YACP+5kB,GAAc/5kB,WAEd3zE,EAAQ2zE,WAGvBu3kB,KAAaT,GAAc,GACvBiD,GAAcjiS,OAAOtgW,WAAao+nB,KAClCmE,GAAcjiS,OAAOtgW,SAAWuumB,GAIxC,QAAS9poB,GAAI,EAAGA,GAAImxE,GAAO/5E,OAAQ4I,KAAK,CACpC,MAAMq0oB,GAAYljkB,GAAOnxE,IACzB,IAAKq0oB,GACD,SAGJ,MAAQ9/hB,UAAQv/G,SAAOswU,YAAY+uU,GAC7B1xjB,GAAkB,IAAV3tF,GAAe05rB,IAAkB15rB,GAAQy5rB,GAAkB,EACnE7nY,GAA0B,IAAhBziT,GAAK/M,QAAgBiiU,QAAQ9kN,GAAOqyM,SAE/CwkV,GAAW0yB,GAAclthB,SAC1BkthB,GAAclthB,MAAQr8B,GAAOq8B,OAASslP,EAAal2X,GAAIuurB,IAG3DrtrB,EAASmzoB,GAAUsf,YAAY3+pB,MAAO,IAAIm6oB,GAAK,KAAM,EAAG,EAAGw/C,GAAchsmB,IAAQ,CAC7EipgB,MAAOv6lB,KACPohQ,SAAUwpW,GAAQ1nf,GAAOk+I,UAAYl+I,GAAOk+I,SAAW,GACvDx9O,MAAOjV,GACPwyP,OAAQsra,GACRxC,SAAUA,GACV30mB,SAAUxiD,GAAKnE,IACf82U,WAAsB,IAAVh3U,GAAc9K,GAAQ8K,GAAQ,EAC1C8mT,QAASA,GACTq0E,gBAAiB1mR,GAAO0mR,gBACxB31D,QAASA,GACThjL,OAAQu4gB,GAAcS,GACtB4xB,eAAgB77rB,KAAK67rB,eAAeltrB,GAAGs7pB,GAAUT,OAGrC,IAAZv1V,KACAqpX,IAAgBhsmB,MAMhCismB,mBAAmBx+qB,EAASpb,EAAOu/G,GAC/B,MAAMi+I,EAASj+I,EAAOi+I,OAEtBooa,GAAYxqpB,EAAS,CACjBpb,MAAOA,EACPw9P,OAAQA,EACR7rM,SAAU4tD,EAAO5tD,SACjB8rM,SAAUl+I,EAAOk+I,SACjBqkF,WAAYviO,EAAOuiO,YACpB,CAAE48H,SAAUlhN,EAAOgra,UAAW7C,SAAU,CAAE,OAAQ,UAAW,WAAY,SAAU,YAG1Fl1V,SAASzwU,EAAOs1Y,EAAQ/1R,GACpB,MAAMs6kB,EAAiB/iD,GAAW,GAAIv3hB,EAAOi+I,OAAQ,CAAEv9O,MAAOs/F,EAAOt/F,QAKrE,GAJA5jB,KAAKu9rB,mBAAmBC,EAAgB75rB,EAAOu/G,GAE/CljH,KAAK+8rB,iBAAiBp5rB,EAAO65rB,EAAgBt6kB,IAEtB,IAAnBA,EAAO+wN,QACP,OAGJ,MAAM53M,EAAU,IAAIwgkB,GAAWl5rB,EAAOs1Y,EAAQukT,GAC9C33rB,OAAOw0D,OAAOgiE,EAASnZ,GACvBljH,KAAKkxB,OAAOmrG,GACZr8H,KAAK8/E,OAAOr6E,KAAK42H,GAGrB6jhB,OAAOpD,GACH,MAAQ/9nB,UAAS+gE,SAAQ6wK,gBAAgB,IAAO3wP,KAC1C43G,EAAQ93B,EAAO/5E,OACfk2H,GAAM6ghB,EAAUtthB,QAEhBzS,GAAW7vG,KAAKulC,IAAIwpF,GAAIvlH,QAASulH,GAAI1xH,UACrCkzrB,GAAe1glB,GAAW,EAC1B2glB,GAAiB3glB,GAAsB,IAAXA,GAC5B4glB,GAAS,IAAI1gD,GAAIhhhB,GAAI9mD,GAAI8mD,GAAIpnD,GAAIonD,GAAI9mD,GAAK4nC,GAAUkf,GAAIpnD,GAAKkoC,IAC7D6glB,GAAeD,GAAOtunB,SACtBm4kB,GAAYvrhB,GAAI5sD,SAChBm6lB,GAAczqpB,EAAQoiP,OAAOp7P,OAC7B83rB,GAAiB,GACjBC,GAAkB,GACxB,IAAIt4iB,GAAU61f,GAAet8nB,EAAQymI,QAASk4iB,IAE9C19rB,KAAK88oB,UAAYA,EAEjBt3f,GAAUA,GAAUi4iB,GAdN,EAc6BA,GAd7B,EAcoDj4iB,GAClEm4iB,GAAOnlpB,UAAUgvmB,GAAU79oB,EAAIi0rB,GAAaj0rB,EAAG69oB,GAAU1zlB,EAAI8poB,GAAa9poB,GAE1E,MAAM2+B,GAASgrmB,GAAej4iB,GACxBn2E,GAAS,IAAI6K,GACfuY,GAASkrmB,GAAOxonB,GAAKqwE,GACrB/yD,GAASkrmB,GAAO9onB,GAAK2wE,IAGzB,QAAS72I,GAAI,EAAGA,GAAIipG,EAAOjpG,KAAK,CAC5B,MAAM0tH,GAAUv8C,EAAOnxE,IACjBsqY,GAAS58Q,GAAQ48Q,OACjBnT,GAAczpQ,GAAQ4tiB,SAI5B,GAHAhxR,GAAOxmT,OAASA,GAChBwmT,GAAO5pU,OAASA,GAEZshL,EAAc5qP,OAAQ,CACtB,MAAM2qP,GAAeC,EAAcm1I,IACnCmT,GAAOC,YAAcxoJ,GAAawoJ,YAClCD,GAAOxmT,OAASi+J,GAAaj+J,OAG7BqzS,KAAgB0jS,GAAc,GAAKntiB,GAAQk5L,UAC3C0jF,GAAO5pU,OAAS4pU,GAAOzpR,QAAQqB,UAA0B,IAAhBooR,GAAOxmT,QAAeha,MAAMwgU,GAAOmhC,WAGhF/9S,GAAQ6jhB,OAAOy9C,IAEf,MAAMv4rB,GAAQi3H,GAAQj3H,MAClBA,IACIA,GAAM2Z,QAAQmrB,WAAao+nB,IACvBxiS,KAAgB0jS,GAAc,IAC1BpkqB,GAAMujF,cAAgB2qhB,GACtBwqF,GAAgBr4rB,KAAKL,IAErBy4rB,GAAep4rB,KAAKL,KAOpCy4rB,GAAe93rB,OAAS,IACxB83rB,GAAe/jrB,KAAK9Z,KAAK+9rB,iBAAgB,IACzC/9rB,KAAKg+rB,iBAAiBH,KAGtBC,GAAgB/3rB,OAAS,IACzB+3rB,GAAgBhkrB,KAAK9Z,KAAK+9rB,iBAAgB,IAC1C/9rB,KAAKi+rB,kBAAkBH,KAG3B99rB,KAAKi8H,IAAM0hkB,GAGfK,iBAAiBxzT,GACb,MAAM0zT,EAAYl+rB,KAAKm+rB,sBAAsB3zT,GAE7CxqY,KAAKo+rB,iBAAiBF,EAAW1zT,GAGrCyzT,kBAAkBzzT,GACd,MAAM0zT,EAAYl+rB,KAAKm+rB,sBAAsB3zT,GAE7CxqY,KAAKo+rB,iBAAiBF,EAAW1zT,GAGrC2zT,sBAAsB3zT,GAClB,MAAMnuQ,EAAU/E,GAAKt3H,KAAK8/E,QACpBm5T,EAAS58Q,EAAQ48Q,OACjBrhS,EAAQ4yR,EAAOzkY,OAAS,EACxBy0I,EAAKy+P,EAAOxmT,OAAS4pC,EAAQt9G,QAAQyrX,OAAO9oT,SAC5Cw8mB,GAAY,GAClB,IAAIG,GAAW7zT,EAAO,GAAGvuQ,IACrBv6C,GAAWof,GAAMu9lB,GAASxpnB,IAAMokU,EAAO5pU,OAAOvb,EAAI0mF,EAAK6jjB,GAAS9zrB,SAAW8zrB,GAAS9zrB,SAAW,IAEnG2zrB,GAAUz4rB,KAAKi8E,IAEf,QAAS/yE,GAAI,EAAGA,GAAIipG,EAAOjpG,KAGvB0vrB,GAAW7zT,EAAO77X,IAAGstH,IACrBv6C,GAAWof,GAHO0pS,EAAO77X,GAAI,GAAGstH,IAGLpnD,GAAKwpnB,GAASxhD,IACzCqhD,GAAUz4rB,KAAKi8E,IAEnBA,UAAWof,GAAMm4S,EAAO5pU,OAAOvb,EAAI0mF,EAAKgwP,EAAO5yR,GAAOqkB,IAAI4ghB,GAAKryQ,EAAO5yR,GAAOqkB,IAAI1xH,SAAW,GAC5F2zrB,GAAUz4rB,KAAKi8E,IAERw8mB,GAGXE,iBAAiBF,EAAW1zT,GACxB,MAAM5yR,EAAQsmlB,EAAUn4rB,OACxB,IAAIqpE,EAAME,EAAOgvnB,GAEjB,QAAS3vrB,GAAI,EAAGA,GAAIipG,EAAOjpG,KAIvB,IAHA2vrB,IAAaJ,EAAUvvrB,IACvBygE,EAAOE,EAAQ3gE,GAER2vrB,GAAY,IAAMlvnB,GAAQ,GAAKE,EAAQsoC,IAC1C0mlB,GAAYt+rB,KAAKu+rB,cAAcL,EAAWvvrB,KAAKygE,EAAMkvnB,IACrDA,GAAYt+rB,KAAKu+rB,cAAcL,EAAWvvrB,KAAK2gE,EAAOgvnB,IAI9Dt+rB,KAAKq9pB,aAAa6gC,EAAW1zT,GAGjC+zT,cAAcL,EAAWjwrB,EAAQi8B,EAAU2gR,GACvC,IAAIt4S,EAASs4S,EACb,GAAIqzY,EAAUh0pB,GAAY,EAAG,CACzB,MAAM8hW,GAAY9+X,KAAKulC,IAAIyrpB,EAAUh0pB,GAAW33B,GAChDA,GAAUy5X,GACVkyT,EAAUh0pB,IAAa8hW,GACvBkyT,EAAUjwrB,IAAW+9X,GAGzB,OAAOz5X,EAGX8qpB,aAAa6gC,EAAW1zT,GACpB,MAAMnuQ,EAAU/E,GAAKt3H,KAAK8/E,QACpBm5T,EAAS58Q,EAAQ48Q,OACjB0xQ,EAAetuhB,EAAQt9G,QAAQyrX,OAC/BigR,GAAcjgR,EAAOzkY,OACrBy4rB,GAAgB7zC,EAAajpkB,SACnC,IACI+8mB,GADAC,GAAOzlT,EAAO5pU,OAAOvb,GAAKmlV,EAAOxmT,OAAS+rmB,IAAiBh0T,EAAO,GAAGvuQ,IAAI1xH,SAG7E2zrB,EAAU,IAAM,EAChB,QAASvvrB,GAAI,EAAGA,GAAI87oB,GAAa97oB,KAAK,CAClC,MAAMvJ,GAAQolY,EAAO77X,IACfstH,GAAM72H,GAAM62H,IAElByikB,IAAQR,EAAUvvrB,IAClB8vrB,GAAOz+rB,KAAK2+rB,YACR1ikB,GAAIxmD,GACJwjU,EAAOzpR,QAAQ86R,OAAOk0S,IACtBE,GACAA,GAAOzikB,GAAI1xH,SACXnF,GAAMujF,cAAgB2qhB,IAEtBlumB,GAAMujF,cAAgB2qhB,IAClBq3C,EAAaxtlB,QAAUu7kB,IACvB+lD,GAAOxlT,EAAOxmT,OAASwmT,EAAO5pU,OAAO1lE,EAAI60rB,IAE7Cp5rB,GAAM86oB,OAAO,IAAIjD,GAAIwhD,GAAOxikB,GAAIvlH,QAASgorB,GAAMD,GAAMC,OAEjD/zC,EAAaxtlB,QAAUu7kB,IACvB+lD,GAAOxlT,EAAO5pU,OAAO1lE,EAAIsvY,EAAOxmT,OAAS+rmB,IAE7Cp5rB,GAAM86oB,OAAO,IAAIjD,GAAIwhD,GAAOxikB,GAAIvlH,QAASgorB,GAAMD,GAAMC,MAGzDA,IAAQzikB,GAAI1xH,UAIpB0zU,eACI,MAAQl/T,SAAW0oX,cAAc3nT,UAAW9/E,KACtC43G,EAAQ93B,EAAO/5E,OAGrByZ,MAAMy+T,eAENj+U,KAAK4+rB,gBAAkB,GAEvB,QAASjwrB,EAAI,EAAGA,EAAIipG,EAAOjpG,IAAK,CAC5B,MAAM0tH,GAAUv8C,EAAOnxE,IACfsqY,UAAQ7zY,UAAUi3H,GACpB/qC,GAAQ2nT,GAAOmhC,SACfykR,IAAmBxikB,GAAQt9G,QAAQ0oX,YAAc,IAAIloP,OAASkoP,EAAWloP,MAE/E,GAAIn6I,GAAO,CACP,MAAM05rB,GAAgB,IAAIzijB,KAAU,CAChCwF,OAAQ,CACJtC,MAAOs/iB,GACPnorB,MAAO+wX,EAAW/wX,OAEtByuT,UAAW,CACPr9T,KAAM88pB,EACNtzpB,MAAO+qH,GAAQw/jB,kBAIvB,GAAIz2rB,GAAM2Z,QAAQmrB,WAAao+nB,GAAa,CACxC,MAAMrsiB,GAAM72H,GAAM62H,IACZ69jB,GAAc7gT,GAAO5pU,OAC3B,IAEI09gB,GAAIzijB,GAAKy0pB,GAFT/xqB,GAAQisX,GAAOxgU,MAAM6Y,IACrB8oV,GAAS,IAAIlgW,GAAM+hD,GAAI9mD,GAAI8mD,GAAI5sD,SAASvb,GAG5C9mC,GAAQisX,GAAOzpR,QAAQ86R,OAAO7iB,EAAWjiP,SAAS/sE,MAAM6Y,IACxDwtmB,GAAcr9c,OAAOz0N,GAAMrjB,EAAGqjB,GAAM8mC,GAEhC1uD,GAAMujF,cAAgB2qhB,IACtBhpkB,GAAM,IAAI4vC,GAAM+hD,GAAI9mD,GAAKsyT,EAAWjiP,QAASvpB,GAAI5sD,SAASvb,GAC1DiroB,GAAWlonB,GAAaijnB,GAAa9sqB,GAAOotZ,GAAQ9vY,IACpD8vY,GAAS,IAAIlgW,GAAM5vC,GAAI3gC,EArCzB,EAqCoC2gC,GAAIwpB,GACtCiroB,GAAWA,IAAY3kR,GACvB2kR,GAASp1rB,EAAIuD,KAAKulC,IAAIsspB,GAASp1rB,EAAGywa,GAAOzwa,GAEzC3J,KAASg/rB,cAAcD,GAAU9lT,GAAO5pU,OAAQ4pU,GAAOxmT,OAzCzD,IA0CMssmB,GAASp1rB,EAAIsvY,GAAO5pU,OAAO1lE,GAC3BojlB,GAAK9zM,GAAO5pU,OAAO1lE,EAAIsvY,GAAOxmT,OA3CpC,EA8CcqsmB,GAAcp9c,OAFlBrlH,GAAQt9G,QAAQyrX,OAAOrtU,QAAUyomB,GACjCq5B,GAAS7kR,GAAOzwa,EACSojlB,GAEA//jB,GAAMrjB,EAAIu2b,EAGd6sJ,GALQ//jB,GAAM8mC,GAOvCgroB,GAAcp9c,OAAO04L,GAAOzwa,EAAG2gC,GAAIwpB,KAEnCiroB,GAASjroB,EAAIxpB,GAAIwpB,EACjBgroB,GAAcp9c,OAAOq9c,GAASp1rB,EAAGo1rB,GAASjroB,MAG9CxpB,GAAM,IAAI4vC,GAAM+hD,GAAIxmD,GAAKgyT,EAAWjiP,QAASvpB,GAAI5sD,SAASvb,GAC1DiroB,GAAWlonB,GAAaijnB,GAAa9sqB,GAAOotZ,GAAQ9vY,IACpD8vY,GAAS,IAAIlgW,GAAM5vC,GAAI3gC,EA7DzB,EA6DoC2gC,GAAIwpB,GACtCiroB,GAAWA,IAAY3kR,GACvB2kR,GAASp1rB,EAAIuD,KAAKsB,IAAIuwrB,GAASp1rB,EAAGywa,GAAOzwa,GAEzC3J,KAASg/rB,cAAcD,GAAU9lT,GAAO5pU,OAAQ4pU,GAAOxmT,OAjEzD,IAkEMssmB,GAASp1rB,EAAIsvY,GAAO5pU,OAAO1lE,GAC3BojlB,GAAK9zM,GAAO5pU,OAAO1lE,EAAIsvY,GAAOxmT,OAnEpC,EAsEcqsmB,GAAcp9c,OAFtBg+Z,GAAY3goB,QAAQyrX,OAAOrtU,QAAUyomB,GAC7B74E,GAAK3yK,GAAOzwa,EACSojlB,GAEA//jB,GAAMrjB,EAAIu2b,EAGd6sJ,GALQ//jB,GAAM8mC,GAOvCgroB,GAAcp9c,OAAO04L,GAAOzwa,EAAG2gC,GAAIwpB,KAEnCiroB,GAASjroB,EAAIxpB,GAAIwpB,EACjBgroB,GAAcp9c,OAAOq9c,GAASp1rB,EAAGo1rB,GAASjroB,KAIlDgroB,GAAcp9c,OAAOp3M,GAAI3gC,EAAG2gC,GAAIwpB,GAEhC9zD,KAAK4+rB,gBAAgBn5rB,KAAKq5rB,IAC1B9+rB,KAAK4jQ,OAAO1yO,OAAO4tqB,OAMnCr+C,eAGI,GAFAjhoB,MAAMihoB,eAEFl6oB,GAAKvG,KAAK+e,QAAQoiP,OAAQpiP,GAAWA,EAAQsoX,SAAU,CACvD,MAAMy1Q,EAAY98oB,KAAK88oB,UACjBoiD,EAAYl/rB,KAAKi8H,IAAI5sD,SACrBihF,EAAOtwJ,KAAK4jQ,OAAOtzG,OACzB,IAAKA,EACD,OAGJ,MAAM6uiB,EAAa7uiB,EAAKiuW,cAElB79Z,EAAQxzF,KAAKulC,KACdyspB,EAAUproB,EAAIgplB,EAAUjokB,KAAOqqnB,EAAUproB,EAAIw8F,EAAKjsH,OAAOyvB,IACzDgplB,EAAUD,GAAKqiD,EAAUproB,IAAMqroB,EAAWrroB,EAAIoroB,EAAUproB,IACxDoroB,EAAUv1rB,EAAImzoB,EAAU3nkB,KAAO+pnB,EAAUv1rB,EAAI2mJ,EAAKjsH,OAAO16B,IACzDmzoB,EAAUrnkB,GAAKypnB,EAAUv1rB,IAAMw1rB,EAAWx1rB,EAAIu1rB,EAAUv1rB,IAGzD+2F,EAAQ,GACR1gG,KAAK4jQ,OAAOv5P,UAAU6+F,OAAqBxI,MAAMA,EAAOA,EAAO,CAAEw+lB,EAAUv1rB,EAAGu1rB,EAAUproB,MAKpGiqoB,gBAAgBhvmB,GACZ,MAAMqwmB,EAAerwmB,GAAU,EAAK,EAEpC,OAAO,SAAS58D,EAAGD,GAGf,QAFeC,EAAEkqV,OAAO48B,OAAOmhC,SAAW,KAAO,KACjCloZ,EAAEmqV,OAAO48B,OAAOmhC,SAAW,KAAO,KACxBglR,GAIlCT,YAAYx4P,EAAWltD,EAAQpkU,EAAIgokB,EAAI5woB,GACnC,MAAQwmF,UAAQpjB,QAAU1lE,EAAGgzoB,GAAI7olB,EAAGm8N,KAASgpH,EACvC7qW,GAAIlhC,KAAKulC,IAAIvlC,KAAKiN,IAAI81Q,GAAKp7M,GAAK3nE,KAAKiN,IAAI81Q,GAAK4sX,IAEpD,OAAIzumB,GAAIqkD,GACG0zW,EAGJw2M,GAAKzvoB,KAAKqnF,KAAM9B,GAASA,GAAWrkD,GAAIA,KAAOniC,EAAY,GAAI,GAG1E+yrB,cAAcvmnB,EAAOpJ,EAAQojB,GACzB,OAAOvlF,KAAK06F,IAAIv4B,EAAO1lE,EAAI8uE,EAAM9uE,EAAG,GAAKuD,KAAK06F,IAAIv4B,EAAOvb,EAAI2kB,EAAM3kB,EAAG,GAAK5mD,KAAK06F,IAAInV,EAAQ,GAGhG+6kB,iBAAiB/0lB,EAAOr9D,GACpB,OAAOpb,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAQq9D,EAAM90E,OAGvDk4rB,eAAe9sT,GACX,OAtbsB,GAsbfA,EAGXmyQ,YACI,OAAOlhpB,MAIf,YAAsBoxX,GAAI4gC,EAAIgnL,EAAIE,GAC9B,MACMmmH,GAAMnmH,EAAGplhB,EAAIklhB,EAAGllhB,IAAMk+V,EAAGroZ,EAAIynX,GAAGznX,IAAMuvkB,EAAGvvkB,EAAIqvkB,EAAGrvkB,IAAMqoZ,EAAGl+V,EAAIs9T,GAAGt9T,GAEtE,IAAIvhD,GACJ,GAAW,IAAP8srB,EAAU,CACV,MAAMvvN,KALGopG,EAAGvvkB,EAAIqvkB,EAAGrvkB,IAAMynX,GAAGt9T,EAAIklhB,EAAGllhB,IAAMolhB,EAAGplhB,EAAIklhB,EAAGllhB,IAAMs9T,GAAGznX,EAAIqvkB,EAAGrvkB,IAKjD01rB,EAElB9srB,GAAS,IAAI2nE,GACTk3S,GAAGznX,EAAImme,IAAM99E,EAAGroZ,EAAIynX,GAAGznX,GACvBynX,GAAGt9T,EAAIg8a,IAAM99E,EAAGl+V,EAAIs9T,GAAGt9T,IAI/B,OAAOvhD,GAGXuwoB,GAAkBw8C,GAAU,CACxB5smB,WAAY,GACZ+0S,WAAY,CACR/wX,MAAO,EACP6oI,MAAO,UACPiG,QAAS,GAEbknP,cAAe,CACXrmD,QAAS,GACTmkD,OAAQ,MAIhBiwQ,GAAW6kD,GAASj/qB,UAAWk/qB,IAE/BD,GAASj/qB,UAAU+goB,aAAc,EAEjC,SAAek+C,GC/cfE,GAxBA,iBAA0Blc,GACtB3mkB,SACI38G,KAAKy/rB,eAAez/rB,KAAKmhQ,QAG7Bs+b,eAAet+b,GACX,MAAM03I,EAAc13I,EAAO,GACrBu+b,EAAW,IAAIJ,GAASt/rB,KAAM,CAChCmhQ,OAAQA,EACR37G,QAASqzP,EAAYrzP,QACrB9yD,WAAYmmT,EAAYnmT,WACxB+0S,WAAYoR,EAAYpR,WACxBx6V,OAAQjtC,KAAK+e,QAAQkuB,SAGzBjtC,KAAK+7qB,YAAY2jB,GAGrB3jB,YAAYxyV,EAAOywD,GACfx6X,MAAMu8pB,YAAYxyV,EAAOywD,GACzB9oX,GAAOlxB,KAAK+e,QAAQkuB,OAAOulB,MAAO+2R,EAAM73F,eCfhD,iBAA2Bmrc,GACvB1uB,cACI,MAAQpvpB,SAAWyrX,OAAQsxT,GAAiB12rB,SAAUpF,KAChDi5Y,EAASj5Y,KAAKi5Y,OAAOzpR,QACrBl+B,EAAQ2nT,EAAOmhC,SAErB,GAAIh1a,EAAO,CACP,MAAM42rB,EAAc52rB,EAAM62H,IAAI1xH,SAC9B,GAAIuxrB,EAAc5xpB,WAAauumB,EAAQ,CACnCx/P,EAAOxmT,SAAWwmT,EAAOxmT,OAASwmT,EAAOC,aAAe,EAExD,MAAMgjT,GAAKjjT,EAAOxgU,MAAM6Y,GAExBlsF,EAAM86oB,OAAO,IAAIjD,GAAIi/C,GAAGvyrB,EAAGuyrB,GAAGpooB,EAAIkooB,EAAc,EAAGE,GAAGvyrB,EAAGuyrB,GAAGpooB,SAE5Dt0C,MAAM2upB,eAKlBmC,cAAcr3R,EAAQl6X,GAClB,OAAO0goB,sBAAgCxmQ,EAAQl6X,IAIvD+joB,GAAkB68C,GAAc,CAC5Bx2T,QAAS,CACL4D,SAAU,gBAEdvC,OAAQ,CACJtgW,SAAUuumB,GAEdtzU,UAAW,CACPr9T,KAAMq+pB,MAId1rB,GAAWklD,GAAat/qB,UAAWwupB,IAGnC,SAAe8wB,GCzCf,iBAAyBL,GACrBlrX,SAASzwU,EAAOs1Y,EAAQ/1R,GACpB,MAAMs6kB,EAAiB/iD,GAAW,GAAIv3hB,EAAOi+I,OAAQ,CAAEv9O,MAAOs/F,EAAOt/F,QAKrE,GAJA5jB,KAAKu9rB,mBAAmBC,EAAgB75rB,EAAOu/G,GAE/CljH,KAAK+8rB,iBAAiBp5rB,EAAO65rB,EAAgBt6kB,IAExCv/G,IAA4B,IAAnBu/G,EAAO+wN,QACjB,OAGJ,MAAM53M,EAAU,IAAIsjkB,GAAah8rB,EAAOs1Y,EAAQukT,GAEhD33rB,OAAOw0D,OAAOgiE,EAASnZ,GACvBljH,KAAKkxB,OAAOmrG,GACZr8H,KAAK8/E,OAAOr6E,KAAK42H,GAGrB6jhB,OAAOpD,GACH,MAAM/9nB,EAAU/e,KAAK+e,QACfk9G,EAAM6ghB,EAAUtthB,QAEhBzS,EAAW7vG,KAAKulC,IAAIwpF,EAAIvlH,QAASulH,EAAI1xH,UACrCkzrB,GAAe1glB,EAAW,EAE1BokJ,GAASpiP,EAAQoiP,OACjBqoa,GAAcroa,GAAOp7P,OAE3B,IAAIy/I,GAAU61f,GAAet8nB,EAAQymI,QAJdzoC,EAAsB,IAAXA,GAKlCyoC,GAAUA,GAAUi4iB,GARN,EAQ6BA,GAR7B,EAQoDj4iB,GAElE,IAEI6iP,GAFAuiC,GAAY6yR,GAAej4iB,GAC3Bo6iB,GAAoB,EAGxB,QAASjxrB,GAAI,EAAGA,GAAI66pB,GAAa76pB,KAAK,CAClC,MAAM89pB,GAAgBtra,GAAOxyP,IACnB,IAANA,IACIi8lB,GAAQ6hE,GAAcpkS,YACtBA,GAAWokS,GAAcpkS,SACzBuiC,IAAa6hQ,GAAcpkS,UAInCyyQ,GAAY2xB,GAAcz9mB,MACtB47W,IAAa6hQ,GAAcz9mB,KAE3B4woB,KAGAh1F,GAAQ6hE,GAAcl+nB,SAAW5/B,KAAM66pB,GAAc,IACrD5+P,IAAa6hQ,GAAcl+nB,QAI9Bq8jB,GAAQviO,MAETA,IADqBo1T,GAAej4iB,KAAYgkhB,GAAc,KACrC,IACzB5+P,IAAaviC,IAGjB,IAEIr5U,GAAMyjC,GAFNymT,GAAc7Q,GACd95V,GAAS,EAGbvuC,KAAK2wP,cAAgB,GAErB,QAAShiP,GAAI,EAAGA,GAAI66pB,GAAa76pB,KAAK,CAClC,MAAM89pB,GAAgBtra,GAAOxyP,IAC7BqgD,GAAOqslB,GAAeoxB,GAAcz9mB,KAAM47W,GAAYg1R,IACtD1mT,IAAe3qW,GACfkkD,GAASymT,GAAclqV,GACvBhvD,KAAK2wP,cAAclrP,KAAK,CAAEyzY,YAAaA,GAAazmT,OAAQA,KAC5DlkD,GAASk+nB,GAAcl+nB,QAAU,EACjC2qW,GAAczmT,GAGlBjzE,MAAM0goB,OAAOpD,GAGjB++C,eAAe9sT,EAAejJ,EAAa0jS,GACvC,OAnFwB,GAmFjBz6R,EACF41R,GAA8B7+R,EAAc,IAAM0jS,EAAc,IAK7E1mB,GAAkB+8C,GAAY,CAC1BntmB,WAAY,GACZ+0S,WAAY,CACR/wX,MAAO,EACP6oI,MAAO,UACPiG,QAAS,KAIjB,SAAeq6iB,GCNfC,GAxFA,iBAAgCxc,GAC5Bn5B,aACInqpB,KAAK8nrB,sBAAwB,IAAIC,GAGrCprkB,SACI38G,KAAKu+qB,YAAYv+qB,KAAKmhQ,QACtBnhQ,KAAK+/rB,kBACL//rB,KAAKoorB,eACLporB,KAAKggsB,kBAGT3f,YACI,MAAMl6S,EAAOnmY,KAAKqlY,UACZz9T,EAAQu+T,EAAKv+T,QAEb8mlB,EAAOvoR,EAAKqmR,QADIrmR,EAAKpnX,QAAQgwE,QAAUnnB,EAAMp5D,IAAMo5D,EAAMn1B,KAEzD48B,EAASrvE,KAAKw+pB,UAAUhS,QAAQ,GAAGn9kB,OACnC+wmB,GAAUj6S,EAAKlqQ,IAAIzjF,UACrB62B,EAAO1lE,EAAI+kpB,EAAKv5kB,GAChB9F,EAAOvb,EAAI46lB,EAAK75kB,IAGpBsxT,EAAK+5Q,OAAOkgC,IAGhB4f,kBACI,MAAM9T,EAAUlsrB,KAAK8nrB,sBACfqE,EAAeD,EAAQrnlB,QACvB41jB,EAAcz6pB,KAAKigsB,iBAAiB,CACtClmC,kBAAkB,EAClB9ogB,QAAQ,IAEZ,IAAIsugB,EAAU2gC,EAEVzlC,EAAY3ypB,OAASqgqB,IACrB5I,EAAWI,GACXugC,EAAmB,CAAEztpB,IAAK,GAAKjkC,IAAK,KAEpC+wpB,EAAWE,GACXygC,EAAmB,CAAEztpB,IAAK,EAAGjkC,IAAK,IAGtC,MAAMo5D,GAAQsknB,EAAQrnlB,MAAM7/F,OAASmnrB,GAAgB+T,EAEjDt4nB,IAASuknB,IACTvknB,GAAMn1B,IAAMvlC,KAAKulC,IAAIm1B,GAAMn1B,IAAK05oB,EAAa15oB,KAC7Cm1B,GAAMp5D,IAAMtB,KAAKsB,IAAIo5D,GAAMp5D,IAAK29qB,EAAa39qB,MAGjD,MAAM62X,GAAY,IAAIk6R,EAClB33lB,GAAMn1B,IAAKm1B,GAAMp5D,IACjBispB,EACAz6pB,KAAKsgpB,cAGTtgpB,KAAKqlY,UAAYA,GACjBrlY,KAAK67qB,WAAWx2S,IAGpBo6S,aACI,MAAQ1gqB,SAAWomX,SAAUpmX,GAAWsmX,YAAWm5R,YAAWviiB,OAAQj8H,KAChE09rB,EAhEU,IAgEOxwrB,KAAKulC,IAAIwpF,EAAIvlH,QAASulH,EAAI1xH,UAC3Ci7I,GAAU43f,GAAWr+nB,EAAQymI,SAAW,GAAIk4iB,GAC5Cj7C,GAAaxmhB,EAAIzM,QAAQ6thB,MAAM73f,IAC/B46hB,GAAU39B,GAAWjzhB,QAE3B4wjB,GAAQvjC,GAAKujC,GAAQvrmB,GAAK3nE,KAAKulC,IAAI2toB,GAAQ1pqB,QAAS0pqB,GAAQ71qB,UAC5D61qB,GAAQjjnB,MAAMsllB,GAAY38oB,GAAG2yoB,GAE7B,MAAM0nD,GAAe/f,GAAQ5wjB,QAAQ+6R,OAAO,EAAG61R,GAAQ71qB,SAAW,GAElEi0pB,EAAUte,OAAOkgC,IACjB/6S,EAAU66Q,OAAOigD,IACjB,MAAMC,GAAa/6T,EAAU0lR,UAAUxgpB,SAAW86X,EAAUppQ,IAAI1xH,SAChE86X,EAAU66Q,OAAO76Q,EAAUppQ,IAAIohhB,MAAM,CAAElvhB,IAAKiykB,MAE5CpgsB,KAAKogrB,QAAUA,GACfpgrB,KAAKqgrB,UAAUD,IAGnB6B,gBACI,OAAOjirB,KAAKi8H,IAGhBujjB,kBC1FJ,iBAAgCrG,GAC5BvM,UAAUtgB,EAAOC,GACb,MACMmC,EAAOx0kB,YAAeoykB,EAAMj9kB,OAAQi9kB,EAAM55jB,WAD5B45jB,EAAMj9kB,OAAOvb,EAAIy4lB,EAAM13kB,IAG3C,OAAO,IAAIookB,GAAIyR,EAAK/kpB,EAAG+kpB,EAAK56lB,EAAG46lB,EAAK/kpB,EAAG+kpB,EAAK56lB,IAIpDgvlB,GAAkBu9C,GAAmB,CACjC5iT,MAAM,IAGV,SAAe4iT,GCdf,iBAA6B5F,IAG7B6F,GAAejgrB,UAAUuspB,UAAYyzB,uBAErCv9C,GAAkBw9C,GAAgB,CAC9B7iT,MAAM,IAGV,SAAe6iT,GCkBfC,GA7BA,iBAAqCttB,GACjCV,WAAWC,GACP,MAAMnjmB,EAASrvE,KAAKwgsB,mBACpBhuB,EAAS9wb,OAAOryK,EAAO1lE,EAAG0lE,EAAOvb,GAGrC0soB,mBAGI,OADehiC,KADQniT,OAAO8oB,SAASq5R,UACdviiB,IAAI5sD,SAIjCyimB,iBACI,IAAI31iB,EAAWn8H,KAAK+xqB,gBAEpB,IAAK51iB,EAAU,CACX,MAAM9sD,EAASrvE,KAAKwgsB,mBACd5wB,EAAiB,IAAIC,IAAe,GACpC/mB,EAAa9opB,KAAK8/E,SAExBgpkB,EAAWrjpB,KAAK4pE,GAChB8sD,EAAWn8H,KAAK+xqB,gBAAkBnC,EAAe7tpB,QAAQ+moB,GACzD3shB,EAASrpG,MAGb,OAAOqpG,ICdfqnM,GAXA,iBAA+BmvW,GAC3BJ,WAAWC,GAEP,MAAMnjmB,EAASmvlB,KADQniT,OAAO8oB,SAASq5R,UACdviiB,IAAI5sD,SACvBoxnB,EAAgB,IAAIntnB,KAAa,CAAEjE,EAAO1lE,EAAG0lE,EAAOvb,IAE1D0+mB,EAASr2iB,SAASw5H,QAAQ8qc,GAC1BjuB,EAASr2iB,SAAS12H,KAAKg7rB,KC4D/B,YAAmBtuqB,GAAGD,GAClB,OAAOC,GAAExuB,MAAMgG,EAAIuoB,EAAEvuB,MAAMgG,EAG/B,SAlEA,iBAA6B22rB,GACzBhwB,cAAcxnB,EAAY2jB,EAAexC,GAErC,IAAI5tiB,EAEJ,OACIA,GAJWowiB,EAAc/0lB,MAAQ,IAAIvtE,QAG3Bi7pB,GACA,IAAIs7B,GAAuB53C,EAAY2jB,EAAexC,GAEtD,IAAI02B,GAAiB73C,EAAY2jB,EAAexC,GAEvD5tiB,EAGXs8iB,mBAAmBh1qB,EAAOilY,GACtB,IAAI4xT,EAEJ,OAAIhiR,GAAS70a,EAAMgG,IAAMi/X,IAAkBq8R,KACvCu1B,EAAe,CACX7wrB,EAAGhG,EAAMgG,EACTmqD,EAAGnwD,EAAMmwD,GAET80U,IAAkBo8R,KAClBw1B,EAAa1moB,EAAI,IAIlB0moB,EAGXnqB,oBAAoBlva,GAChB,OAAOA,EAAOynI,eAAiBo8R,GAGnC47B,uBACI,MAAMz/b,EAASnhQ,KAAK+e,QAAQoiP,OAE5B,QAASh3N,EAAM,EAAGA,EAAMg3N,EAAOp7P,OAAQokC,IACnC,GzHzBA,QyHyBInqC,KAAKqwqB,oBAAoBlva,EAAOh3N,IAChC,OAAO,EAKnBgmoB,WAAWrwlB,GAGP,GAFAA,EAAOhmE,KAAK+mrB,IAER7gsB,KAAK4gsB,uBACL,QAASz2pB,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IAAO,CAC1C,MAAMsuC,EAAQqH,EAAO31C,GACjBsuC,IAEK+/V,GADS//V,EAAM90E,MACAmwD,IzHvC5B,QyHuCkC9zD,KAAKqwqB,oBAAoB53lB,EAAM0oL,gBAC9CrhL,EAAO31C,GAM9B,OAAO21C,IClDf,iBAA4BghnB,GACxBf,kBACI,MAAMvhC,EAAY,IAAID,GAAUv+pB,KAAK+e,QAAQumX,MAAOtlY,KAAKsgpB,cAEzDtgpB,KAAKw+pB,UAAYA,EACjBx+pB,KAAKgrpB,MAAQwT,EACbx+pB,KAAK67qB,WAAWrd,GAGpByhC,iBAAiB59O,GACb,OAAOo4L,GAAWp4L,EAAU,CACxB71E,eAAgB,CAAE1kY,KAAMwwoB,GACxB7rQ,eAAgB,CAAE3kY,KAAMwwoB,IACzBt4oB,KAAK+e,QAAQwmX,OAGpBy6T,kBACIxgrB,MAAMwgrB,kBACNhgsB,KAAKirpB,MAAQjrpB,KAAKqlY,UAGtB02S,YAAYxyV,EAAOywD,GACfh6Y,KAAK8nrB,sBAAsBphkB,OAAO6iO,EAAMivV,aAExC8K,8BAAwCtjrB,KAAMupV,EAAOywD,GAGzDouS,eACI,MAAMjnb,EAASnhQ,KAAKs/qB,oBAAoBt/qB,KAAKmhQ,QACvC64I,EAAOh6Y,KAAKilY,MAAM,GAExBjlY,KAAKqprB,gBACDT,GAAmBznb,EAAQ,CAAEkla,KAC7BrsR,GAGJh6Y,KAAK66rB,mBACDjS,GAAmBznb,EAAQ,CAAEmla,KAC7BtsR,GAGJh6Y,KAAK2orB,gBACDC,GAAmBznb,EAAQ,CAAEila,KAC7BpsR,GAIRqvS,gBAAgBlob,EAAQ64I,GACpB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAMklrB,EAAY,IAAIqV,GAAetgsB,KAAM,CAAEmhQ,OAAQA,IAErDnhQ,KAAK+7qB,YAAYkP,EAAWjxS,GAGhC6gT,mBAAmB15b,EAAQ64I,GACvB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAMg7rB,EAAe,IAAIV,GAAkBrgsB,KAAM,CAAEmhQ,OAAQA,IAE3DnhQ,KAAK+7qB,YAAYglB,EAAc/mT,GAGnC2uS,gBAAgBxnb,EAAQ64I,GACpB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAMmlrB,EAAY,IAAI8V,GAAehhsB,KAAM,CAAEmhQ,OAAQA,IAErDnhQ,KAAK+7qB,YAAYmP,EAAWlxS,GAGhCwpS,eAAej6V,EAAOtgV,EAAGojrB,GACrB,MAAMxzmB,EAAS0wQ,EAAM+iW,kBAAkBrjrB,GACjCwvE,EAAQ,IAAIyB,GAAMrB,EAAOlvE,EAAGkvE,EAAO/kB,GACnCo9L,GAASlxP,KAAKgrpB,MAAM1jnB,SAASmxC,GAC7Bg3K,GAASzvP,KAAKirpB,MAAM3jnB,SAASmxC,GAEpB,OAAXy4K,IAA8B,OAAXzB,IACnB85F,EAAMt/U,QAAQoirB,EAAW,CACrB33qB,QAASsmoB,GAAa/xoB,GACtBU,EAAGunP,GACHp9L,EAAG27L,KAKf+tb,qBAGJ16B,GAAkBm+C,GAAe,CAC7B37T,MAAO,GACPC,MAAO,KAGXk1Q,GAAWwmD,GAAc5grB,UAAWwsqB,IAEpC,SAAeoU,GCjGf,iBAA6B1vB,GAEzB3E,UAAUF,EAAcC,GACpB,MAAMu0B,EAAcx0B,EAAar9lB,OAAOvb,EAAI64mB,EAAU93lB,GAChD65kB,EAAOx0kB,YAAewylB,EAAar9lB,OAAQq9lB,EAAatyP,SAAU8mR,GAExE,OAAO,IAAIjkD,GAAIyR,EAAK/kpB,EAAG+kpB,EAAK56lB,EAAG46lB,EAAK/kpB,EAAG+kpB,EAAK56lB,GAGhDi8mB,iBAGI,GAFAvwpB,MAAMuwpB,iBAEF/vqB,KAAKiwqB,WAAajwqB,KAAKiwqB,UAAUlqqB,OAAS,EAAG,CAC7C,MAAMo7rB,EAxBlB,YAAyBhlkB,IACrB,MAAMglkB,EAAiB,GACvB,QAASh3pB,EAAM,EAAGA,EAAMgyF,GAASp2H,OAAQokC,IAAO,CAC5C,MAAMkyF,EAAUF,GAAShyF,GACzBg3pB,EAAe9kkB,EAAQ4tiB,UAAYk3B,EAAe9kkB,EAAQ4tiB,WAAa,GACvEk3B,EAAe9kkB,EAAQ4tiB,UAAUxkqB,KAAK42H,GAG1C,OAAO8kkB,EAgBwBC,CAAgBphsB,KAAKiwqB,WAE5C,QAAS9loB,EAAM,EAAGA,EAAMg3pB,EAAep7rB,OAAQokC,IAAO,CAClD,MAAMgyF,EAAWglkB,EAAeh3pB,GAChC,GAAIgyF,GAAYA,EAASp2H,OAAS,EAAG,CACjC,MAAMizY,EAAa78Q,EAAS,GAAG2shB,WAAW,GACpCknB,EAAc14iB,GAAK6E,GACnBsrH,GAAYnwH,GAAK04iB,EAAYlnB,YAE7Bu4C,GAAkB55c,GAAUunJ,aAAevnJ,GAAU0sa,gBAAkB,EAD1B,IAA1Bn7Q,EAAWhK,YAEZqyT,IACpB/pkB,GAAK6E,GAAU2shB,WAAWrjpB,KAAKuzY,MAOnDs3R,cAAcxnB,EAAY2jB,EAAexC,GAErC,IAAIC,EAGAA,EAJUuC,EAActiqB,QAGdi7pB,GACEkM,GAEAh2lB,GAGhB,MAAM+gD,GAAU,IAAI6tiB,EAAUphB,EAAY2jB,EAAexC,GACnDrhS,GAAgB5oY,KAAKqwqB,oBAAoB5D,GAE/C,OAAI3jB,EAAW/ipB,SAAW0mqB,EAAc35pB,KAAK/M,QAAU6iY,KAAkBq8R,MACrE5oiB,GAAQt9G,QAAQi+Q,QAAS,GAGtB3gK,IAIfymhB,GAAkBw+C,GAAgB,CAC9B7jT,MAAM,EACNuvR,aAAa,IAGjB,SAAes0B,GCxEfC,GAJA,iBAAqCtuB,GACjCV,gBCGJivB,GAJA,iBAA+B7uB,GAC3BJ,gBCgCJkvB,GA7BA,iBAA6BH,GACzBhxB,cAAcxnB,EAAY2jB,EAAexC,EAAUyH,GAC/C,MACMvnqB,IAASsiqB,EAAc/0lB,MAAQ,IAAIvtE,MACzC,IAAI4oqB,GACApB,GACAt1iB,GAEJ,OANkBr8H,KAAK+e,QAAQ2rpB,WAMdT,EAAW,GAAKyH,IAC7BC,GAAcD,EAAY5oB,WAAWl6oB,MAAM,GAC3CmkqB,GAAkBrB,GAGlBvnqB,KAAUi7pB,IACV/oiB,GAAU,IAAIqlkB,GAAuB54C,EAAY2jB,EAAexC,EAAU8I,GAAiBpB,IAC3Ft1iB,GAAQt9G,QAAQi+Q,QAAS,IAEzB8rX,EAAWrjpB,KAAKqjpB,EAAW,IAC3BzshB,GAAU,IAAIslkB,GAAiB74C,EAAY2jB,EAAexC,EAAU8I,GAAiBpB,KAGlFt1iB,GAGXg0iB,oBAAoBlva,GAChB,OAAOA,EAAOynI,eAAiBo8R,KC3BvC,iBAA2B26B,GACvB7/rB,YAAY6D,EAAOob,GACfS,MAAM7b,EAAO,KAAMob,IAI3B+joB,GAAkB8+C,GAAc,CAC5Bz4T,QAAS,CACL4D,SAAU,QAEdvC,OAAQ,CACJ9oT,SAAU,MAIlB,SAAekgnB,GCbf,iBAAiCz/C,GAC7BripB,YAAYif,GACRS,MAAMT,GAEN/e,KAAK4G,QAAUmY,EAAQ2lT,IAAMgwW,GAAiB9tqB,GAGlDs5oB,OAAOjnQ,GACH,MAAQl6X,UAASy/C,YAAax+D,MACtBmoY,MAAKqB,WAAYzqX,EACnB64F,GAAQp5C,EAASz4D,OAEjBk4pB,GAAYhlR,EAAO3nT,OADXsmB,GAAQuwR,EAAOqB,GAAW5xR,GAAQ,IAEhD,IAAItmB,GAAQ2nT,EAAOvmT,WAAaurkB,IAAa91R,EAAM,GAEnDnoY,KAAK4G,QAAQ43D,EAAWC,KACpB,MAAMojoB,GAAa5oT,EAAOzpR,QAC1BqykB,GAAWnvmB,WAAapB,GACxBuwmB,GAAWvwmB,MAAQ2skB,GAEfx/lB,GAAMw6U,SACN4oT,GAAWpvmB,OAASh0B,GAAMw6U,OAAOxmT,QAGrCh0B,GAAMyhlB,OAAO2hD,IACbpjoB,GAAMw6U,OAAS4oT,GAEfvwmB,IAAS2skB,GAAaA,GAAYz0R,KAK9Cs5Q,GAAkBg/C,GAAoB,CAClC35T,IAAK,EACLqB,QAAS,IAGb,SAAes4T,GCxBfC,GAjBA,iBAA+B5/C,GAC3BjC,OAAOjnQ,GACH,MAAQl6X,SAAWgwE,WAAWvwB,YAAax+D,KACrCwgpB,EAAgBhilB,EAASz4D,OACzBmB,EAAQ6nF,EAAUyxjB,EAAgB,EAAI,EACtCh0lB,GAAOuiC,GAAU,EAAK,EAE5B/uF,KAAKi8H,IAAM,IAAIghhB,GAEf,QAAStuoB,GAAIzH,EAAOyH,IAAK,GAAKA,GAAI6xoB,EAAe7xoB,IAAK69C,GAAM,CACxD,MAAMw1oB,GAAcxjoB,EAAS7vD,IAAGsqY,OAChC+oT,GAAYtvmB,WAAaumT,EAAOvmT,WAChCsvmB,GAAY1wmB,MAAQ2nT,EAAO3nT,SCNvC,iBAA4BuklB,GACxB3L,YACI,OAAO03B,GAGX5sB,cACI,OAAO8sB,GAGX7sB,YACI,OAAOgtB,GAGXv1B,aAAa3nS,EAAciK,GACvB,OAAOjK,EAAaynR,QAAQx9Q,GAGhC49R,UAAUF,EAAcC,GACpB,MAAMje,EAAOge,EAAal9iB,QACpB17D,EAAI44mB,EAAar9lB,OAAOvb,EAE9B46lB,SAAKj8jB,OAAS3+B,EAAI64mB,EAAU93lB,GAC5B65kB,EAAKx1Q,YAAcplV,EAAI64mB,EAAU9vB,GAE1B6R,EAGXoe,YAAYr0lB,EAAOm0lB,GACfn0lB,EAAMwgU,OAAS2zR,EACfn0lB,EAAMynkB,SAGVU,kBACI5gpB,KAAK+e,QAAQomT,UAAU91P,OAASrvE,KAAKi8H,IAAIwhhB,SAASpukB,SAClD7vD,MAAMohoB,mBAIdshD,GAAc7hrB,UAAU6/nB,OAASutB,oBAEjC3qB,GAAkBo/C,GAAe,CAC7BzkT,MAAM,EACNuvR,aAAa,EACb7nW,UAAW,CACPr9T,KAAM,SAId,SAAeo6rB,GCxCf,iBAA4BpB,GACxBf,kBACI,MAAMh7T,EAAe,IAAIq5R,GAAkBp+pB,KAAK+e,QAAQgmX,aAAc/kY,KAAKsgpB,cAE3EtgpB,KAAKw+pB,UAAYz5R,EACjB/kY,KAAK+kY,aAAeA,EACpB/kY,KAAK67qB,WAAW92S,GAChB/kY,KAAKkorB,sBACLlorB,KAAKmorB,2BAGT8X,iBAAiB59O,GACb,OAAIrid,KAAKmisB,eACL1nD,GAAWp4L,EAAU,CACjB71E,eAAgB,CAAE1kY,KAAMwwoB,GACxB7rQ,eAAgB,CAAE3kY,KAAMwwoB,KAI5Bt4oB,KAAKoisB,eACL3nD,GAAWp4L,EAAU,CACjB03M,kBAAkB,EAClBvvR,OAAQ,CAAEpvX,OAAQ,QAInBq/nB,GAAWp4L,EAAUrid,KAAK+e,QAAQsmX,WAG7C6iT,sBAEI0E,sCAAuD5srB,KAAMA,KAAKilY,OAGtEkjT,2BACIyE,2CAA4D5srB,KAAMA,KAAKilY,OAG3E2kT,aAAand,GAET,OAAOA,EAGX2b,eACI,MAAMjnb,EAASnhQ,KAAKs/qB,oBAAoBt/qB,KAAKmhQ,QACvC64I,EAAOh6Y,KAAKilY,MAAM,GAExBjlY,KAAK2orB,gBACDC,GAAmBznb,EAAQ,CAAEola,KAC7BvsR,GAGJh6Y,KAAKqprB,gBACDT,GAAmBznb,EAAQ,CAAEsla,KAC7BzsR,GAGJh6Y,KAAK8orB,eACDF,GAAmBznb,EAAQ,CAAEqla,KAC7BxsR,GAIRqoT,aAAalhc,GACT,MAAMpiP,EAAU,CAAEoiP,OAAQA,GACpB03I,EAAc13I,EAAO,GAC3B,GAAI03I,EAAa,CACb,MAAM+hT,EAAiB56rB,KAAKs/qB,oBAAoBn+a,GAC1C97O,EAAQwzX,EAAYxzX,MAC1BtG,EAAQ2rpB,UAAYrlpB,GAASu1qB,EAAe70rB,OAAS,EACrDgZ,EAAQsrpB,aAAehlpB,GAAwB,SAAfA,EAAMvd,MAAmB8yrB,EAAe70rB,OAAS,EAE7EgZ,EAAQsrpB,eACRrqqB,KAAKoisB,eAAgB,GAI7B,OAAOrjrB,EAGX4pqB,gBAAgBxnb,EAAQ64I,GACpB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAMmlrB,EAAY,IAAIoX,GAAetisB,KAAMA,KAAKqisB,aAAalhc,IAC7DnhQ,KAAK+7qB,YAAYmP,EAAWlxS,GAGhCqvS,gBAAgBlob,EAAQ64I,GACpB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAMklrB,EAAY,IAAIqW,GAAethsB,KAAMA,KAAKqisB,aAAalhc,IAC7DnhQ,KAAK+7qB,YAAYkP,EAAWjxS,GAGhC8uS,eAAe3nb,EAAQ64I,GACnB,GAAsB,IAAlB74I,EAAOp7P,OACP,OAGJ,MAAM8yY,EAAc13I,EAAO,GACrBpiP,EAAU/e,KAAKqisB,aAAalhc,GAClCpiP,EAAQopX,IAAM0Q,EAAY1Q,IAC1BppX,EAAQyqX,QAAUqP,EAAYrP,QAE9B,MAAMshT,EAAW,IAAIoX,GAAclisB,KAAM+e,GACzC/e,KAAK+7qB,YAAY+O,EAAU9wS,GAE3Bh6Y,KAAKmisB,eAAgB,EAGzB14B,qBACI,OAAOzpqB,KAAK+kY,aAGhBy+S,eAAej6V,EAAOtgV,EAAGojrB,GACrB,MAAMxzmB,EAAS0wQ,EAAM+iW,kBAAkBrjrB,GACjCwvE,EAAQ,IAAIyB,GAAMrB,EAAOlvE,EAAGkvE,EAAO/kB,GACnCstM,GAAWphQ,KAAK+kY,aAAaivR,YAAYv7kB,GACzC90E,GAAQ3D,KAAKqlY,UAAU/9V,SAASmxC,GAErB,OAAb2oL,IAA+B,OAAVz9P,IACrB4lV,EAAMt/U,QAAQoirB,EAAW,CACrB33qB,QAASsmoB,GAAa/xoB,GACtBm4P,SAAUA,GACVz9P,MAAOA,KAKnB65qB,qBAGJ/iC,GAAW8nD,GAAclirB,UAAWwsqB,GAAqB,CACrD9Q,YAAa6Q,yBACbjD,gBAAiBiD,6BACjB5C,mBAAoB4C,kCAGxB9pC,GAAkBy/C,GAAe,CAC7Bx9T,aAAc,CACVx1I,WAAY,IAEhB81I,UAAW,KAGf,SAAek9T,GC7Jf,iBAA4BpgD,GACxBripB,YAAY6D,EAAOob,EAASy+qB,GACxBh+qB,MAAMT,GAEN/e,KAAK2D,MAAQA,EACb3D,KAAK+e,QAAQ6E,MAAQ45qB,EAAe55qB,MAGxCs8nB,OAAOsiD,GACH,MAAM1inB,EAAS9/E,KAAK8/E,OACd16E,EAAQpF,KAAKw+D,SAAS,GAE5Bx+D,KAAKi8H,IAAM,IAAIghhB,GAAIn9jB,EAAO,GAAGn2E,EAAGm2E,EAAO,GAAGhsB,EAAGgsB,EAAO,GAAGn2E,EAAGm2E,EAAO,GAAGhsB,GAEhE1uD,GACAA,EAAM86oB,OAAO,IAAIjD,GAAIulD,EAASrtnB,GAAI2K,EAAO,GAAGhsB,EAAG0uoB,EAAS/snB,GAAIqK,EAAO,GAAGhsB,IAI9EmqR,eACI,MAAMl/T,EAAU/e,KAAK+e,QACrB,IAAI6kP,EAEJpkP,MAAMy+T,eAGFr6E,EADJzxO,EAAYyxO,OACC7kP,EAAQ6kP,OAAO,CACpBxC,SAAUphQ,KAAKohQ,SACf9rM,SAAUt1D,KAAKs1D,SACf3xD,MAAO3D,KAAK2D,MACZw9P,OAAQnhQ,KAAKmhQ,OACbskF,WAAYzlV,KAAKylV,WACjB3lQ,OAAQ9/E,KAAK8/E,OACb/gE,QAASA,EACT+5U,OAAQ94V,KAAKogpB,YACbniU,aAAc,IAAMj+U,KAAKyisB,eAGpBzisB,KAAKyisB,aAGd7+b,GACA5jQ,KAAK4jQ,OAAO1yO,OAAO0yO,GAI3B6+b,aACI,MAAM1jrB,EAAU/e,KAAK+e,QACfi+H,EAASj+H,EAAQi+H,OAavB,OAZaX,gBAAqBr8I,KAAK8/E,OAAQ,CAC3CpxE,KAAM,CACF6wI,MAAOxgI,EAAQwgI,MACfn1I,QAAS2U,EAAQ3U,SAErBy3I,OAAQ,CACJtC,MAAOvC,EAAOuC,MACdn1I,QAAS4yI,EAAO5yI,QAChBsM,MAAOsmI,EAAOtmI,SAEnBsU,QAKP02nB,gBAAgBv3oB,GACZ,OAAOkyI,gBAAqBr8I,KAAK8/E,OAAQ31E,GAG7CmkqB,kBACI,OAAOtuqB,KAAK4jQ,OAAOplM,SAAS,GAGhCsjlB,sBACI,MAAMp4d,EAAOrtC,gBAAqBr8I,KAAK8/E,QAAQ90D,QAE/C,MAAO,CACHjM,QAAS/e,KAAK+e,QACd2qK,KAAMA,GAId8kf,gBACI,MAAMvyiB,EAAMj8H,KAAKi8H,IACjB,MAAO,CACHxjD,MAAO,IAAIyB,GAAM+hD,EAAI5sD,SAAS1lE,EAAGsyH,EAAIpnD,IACrC1X,MAAO,CACHpxD,WAAY,SACZC,SAAU,QAKtBwjY,YAAYp0X,GAER,OADcpb,KACDu6lB,MAAMizE,iBADLxtqB,KAC6Bob,IAInD0noB,GAAkB4/C,GAAe,CAC7BnjjB,MAAOg6f,GACPv8f,OAAQ,CACJtmI,MAAO,KAIf+joB,GAAWioD,GAAcrirB,UAAWwupB,IAEpC,SAAe6zB,GCxGf,iBAA0BvgD,GACtBripB,YAAYqlY,EAAUpmX,GAClBS,MAAMT,GAEN/e,KAAKmlY,SAAWA,EAChBnlY,KAAK8/E,OAAS,GACd9/E,KAAKwqY,OAAS,GACdxqY,KAAK0xP,YAAc,GACnB1xP,KAAK28G,SAGT6wjB,iBAAiB/0lB,EAAOr9D,GACpB,OAAOpb,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAOq9D,EAAM90E,OAGtDg5G,SACI,MAAQ59F,UAASomX,UAAYpmX,SAAW8lX,eAAe,MAAW7kY,KAC5DmhQ,EAASpiP,EAAQoiP,OAAO,GACxBruP,EAAOquP,EAAOruP,KAEpB,IAAKA,EACD,OAGJ,MAAQrE,QAAOqxE,WAAWq9mB,GAAah8b,GAEvC,QAASxyP,GAAI,EAAGA,GAAImxE,GAAO/5E,OAAQ4I,KAAK,CACpC,MAAMq0oB,GAAYljkB,GAAOnxE,IAEzB,IAAKq0oB,GACD,SAGJ,IAAI9/hB,GAAS8/hB,GAAU9/hB,OAElB62hB,GAAW54Y,EAAO5hH,SACnB4hH,EAAO5hH,MAAQr8B,GAAOq8B,OAASslP,EAAal2X,GAAIk2X,EAAa9+X,SAGjEm9G,GAASu3hB,GAAW,CAChB72nB,MAAOjV,GACP4rlB,MAAOv6lB,KACPmhQ,OAAQA,EACR7rM,SAAUxiD,EAAKnE,IACf82U,WAAYu9T,GAAUr/oB,MAAQ8K,GAC/By0G,GAAQ,CAAE+wN,QAAS+uU,GAAU/uU,UAEhC,MAAMtwU,GAAQq/oB,GAAUsf,YAAY3+pB,MAC9B04H,GAAUr8H,KAAKswqB,cAAc3sqB,GAAOu/G,IACpC99G,GAAQpF,KAAKi/O,YAAYt7O,GAAOu/G,IAElCmZ,IAAWj3H,IACXi3H,GAAQnrG,OAAO9rB,KAK3Bm4rB,mBAAmBx+qB,EAASpb,EAAOu/G,GAC/B,MAAMi+I,EAASj+I,EAAOi+I,OAEtBooa,GAAYxqpB,EAAS,CACjBpb,MAAOA,EACPw9P,OAAQA,EACR7rM,SAAU4tD,EAAO5tD,SACjB1xC,MAAOs/F,EAAOt/F,OACf,CAAEy+b,SAAUlhN,EAAOgra,UAAW7C,SAAU,CAAE,OAAQ,UAAW,WAAY,SAAU,YAG1FgH,cAAc3sqB,EAAOu/G,GACjB,MAAM2mjB,EAAgBpvB,GAAW,GAAIv3hB,EAAOi+I,QAK5C,GAJAnhQ,KAAKu9rB,mBAAmB1zB,EAAelmqB,EAAOu/G,GAE9CljH,KAAK+8rB,iBAAiBp5rB,EAAOkmqB,EAAe3mjB,IAErB,IAAnBA,EAAO+wN,QAAmB,CAE1B,MAAM53M,EAAU,IAAIqmkB,GAAc/+rB,EAAOkmqB,EAAe3mjB,GACxDr9G,cAAOw0D,OAAOgiE,EAASnZ,GAEvBljH,KAAKkxB,OAAOmrG,GACZr8H,KAAK8/E,OAAOr6E,KAAK42H,GAEVA,GAIf4iH,YAAYt7O,EAAOu/G,GACf,MAAQi+I,SAAQ7rM,YAAa4tD,EACvBsnR,EAASiwQ,GAAW,GAAIz6oB,KAAK+e,QAAQyrX,OAAQrpI,EAAOqpI,QAC1D,IAAI1/X,GAAOnH,EAEX,GAAI6mY,EAAOv2D,QAAS,CAChB,MAAMomP,GAAgB9rL,GAAY/D,GAC5B13X,GAAO,CACTwiD,SAAUA,EACV3xD,MAAOA,EACP8hV,WAAYviO,EAAOuiO,WACnBrkF,SAAUl+I,EAAOk+I,SACjBD,OAAQA,GAERk5T,GACAvvjB,GAAOuvjB,GAAcvnjB,IACd03X,EAAOpvX,SACdtQ,GAAO9K,KAAKmlY,SAASm7Q,aAAalloB,OAAOg8jB,KAAK5sM,EAAOpvX,OAAQtQ,KAG5D0/X,EAAOjrP,QACRirP,EAAOjrP,MAAQo8iB,GAAcx6b,EAAO5hH,OAC/BirP,EAAOxkD,aACRwkD,EAAOxkD,WAAa7kF,EAAO5hH,QAInCv/I,KAAKu9rB,mBAAmB/yT,EAAQ7mY,EAAOu/G,GACvC,MAAM2wjB,GAAU,IAAIpsB,GAAQ38oB,GAAM2voB,GAAW,CACzC+H,OAAQh4Q,EAAOtgW,UAChBsgW,GAAS13X,IAEZ,YAAK03X,OAAO/kY,KAAKouqB,IAEVA,IAIf8uB,eACI,MAAMn4T,EAASxqY,KAAKwqY,OACdhlP,EAAU,CAAEp2E,KAAM,EAAGE,MAAO,GAElC,QAAS3gE,EAAI,EAAGA,EAAI67X,EAAOzkY,OAAQ4I,IAAK,CAEpC,MAAMwuD,EADQqtU,EAAO77X,GACDoQ,QAAQo+C,MAC5B,GAAIA,IAAUs7kB,EAAQ,CAClB,MAAM/hoB,GAAQ8zX,EAAO77X,GAAGstH,IAAIvlH,QAExBymD,IAAUk2iB,GACV7td,EAAQp2E,KAAOliE,KAAKsB,IAAIg3I,EAAQp2E,KAAM14D,IAEtC8uI,EAAQl2E,MAAQpiE,KAAKsB,IAAIg3I,EAAQl2E,MAAO54D,KAKpD,OAAO8uI,EAGXo9iB,mBAAmB3mkB,EAAKvlH,EAAOuxZ,GAC3B,MAAQlpZ,UAAS+gE,OAAQq8C,GAAan8H,KAChC43G,GAAQukB,EAASp2H,OACjB88rB,GAAe1mkB,EAAS,GAC9B,IAAI2mkB,GAAaD,GAEjB,QAAS14pB,GAAM,EAAGA,GAAMgyF,EAASp2H,OAAQokC,KACjCgyF,EAAShyF,IAAKs7S,WAAaq9W,GAAWr9W,aACtCq9W,GAAa3mkB,EAAShyF,KAI9B,IAAI44pB,GAAiBF,GAAap9W,WAAaq9W,GAAWr9W,WAAc/uU,EACpE8rV,IAAkB9rV,EAAQqsrB,IAAiB,EAC3CC,GAAiB,EAErB,QAAS74pB,GAAM,EAAGA,GAAMytE,GAAOztE,KAAO,CAClC,MAAMs7S,GAAatpN,EAAShyF,IAAKs7S,WAC3Bw9W,GAAc9mkB,EAAShyF,GAAM,GAC7B+4pB,GAAkBD,GAAcA,GAAYx9W,WAAaA,GACzD3lQ,GAASq8C,EAAShyF,IAAK21C,OAAS,GAChCv1E,GAAUwU,EAAQ8oX,cAAkBogC,EAAcxiF,GAAewiF,EAAcrwT,GACrF,IAAIxlF,GAKAA,GAHCqzT,IAGS/uU,EAAQqsrB,IAAiBG,GAAiBz9W,KAAe,EAF1Dy9W,GAAiB,EAAIxsrB,EAAQ,EAK1C0b,GAASuuiB,GAAWvuiB,GAAQ,EAAG1b,GAE/BopE,GAAOr6E,KAAK,IAAI6tE,KAAW2oD,EAAI9mD,GAAKqtR,GAAgBvmO,EAAIpnD,GAAKmunB,KAC7DljnB,GAAOr6E,KAAK,IAAI6tE,KAAW2oD,EAAI9mD,GAAKz+D,EAAQ8rV,GAAgBvmO,EAAIpnD,GAAKmunB,KACrEljnB,GAAOr6E,KAAK,IAAI6tE,KAAW2oD,EAAI9mD,GAAKz+D,EAAQ0b,GAAQ6pG,EAAIpnD,GAAKtqE,GAASy4rB,KACtEljnB,GAAOr6E,KAAK,IAAI6tE,KAAW2oD,EAAI9mD,GAAK/iD,GAAQ6pG,EAAIpnD,GAAKtqE,GAASy4rB,KAE9DxgW,GAAiBpwU,GACjB4wqB,IAAkBz4rB,GAASwU,EAAQuqX,eACnCy5T,GAAgBpiI,GAAWjqjB,EAAQ,EAAI0b,GAAQ,EAAG1b,IAI1DysrB,oBAAoBlnkB,EAAKvlH,EAAOuxZ,GAC5B,MAAQlpZ,UAAS+gE,OAAQq8C,GAAan8H,KAChC43G,GAAQukB,EAASp2H,OACjBq9rB,GAAkBrkrB,EAAQ8pX,WAAa,EAE7C,IAAIrmC,GAAiB4gW,GAAkB,GAAK1srB,EAAQA,EAAQqI,EAAQ8pX,WAAa,EAEjF,MAAMw6T,KADeD,GAAkB1srB,EAAQA,EAAyB,EAAjB8rV,KAFrC4gW,GAAkBrkrB,EAAQ8pX,UAAYnyX,EAAQA,IAGf,EACjD,IAAIssrB,GAAiB,EAErB,QAAS74pB,GAAM,EAAGA,GAAMytE,GAAOztE,KAAO,CAClC,MAAM21C,GAASq8C,EAAShyF,IAAK21C,OAAS,GAChC2lQ,GAAatpN,EAAShyF,IAAKs7S,WAC3BrzT,GAAUrT,EAAQ8oX,cAAkBw7T,GAAc59W,GAAe49W,GAAczrlB,GAC/ErtG,GAAUwU,EAAQ8oX,cAAkBogC,EAAcxiF,GAAewiF,EAAcrwT,GAErF93B,GAAOr6E,KAAK,IAAI6tE,KAAW2oD,EAAI9mD,GAAKqtR,GAAgBvmO,EAAIpnD,GAAKmunB,KAC7DljnB,GAAOr6E,KAAK,IAAI6tE,KAAW2oD,EAAI9mD,GAAKz+D,EAAQ8rV,GAAgBvmO,EAAIpnD,GAAKmunB,KACrEljnB,GAAOr6E,KAAK,IAAI6tE,KAAW2oD,EAAI9mD,GAAKz+D,EAAQ8rV,GAAiBpwU,GAAQ6pG,EAAIpnD,GAAKtqE,GAASy4rB,KACvFljnB,GAAOr6E,KAAK,IAAI6tE,KAAW2oD,EAAI9mD,GAAKqtR,GAAiBpwU,GAAO6pG,EAAIpnD,GAAKtqE,GAASy4rB,KAC9ExgW,IAAkBpwU,GAClB4wqB,IAAkBz4rB,GAASwU,EAAQuqX,gBAI3C42Q,OAAOsiD,GACH,MAAM1inB,EAAS9/E,KAAK8/E,OACd83B,EAAQ93B,EAAO/5E,OAErB,IAAK6xG,EACD,OAGJ,MAAM74F,EAAU/e,KAAK+e,QACfk9G,EAAMumkB,EAAShzkB,QAAQ6thB,MAAMr9oB,KAAK2isB,gBAClC16R,GAAchsS,EAAI1xH,SAAWwU,EAAQuqX,gBAAkB1xR,EAAQ,GAC/DlhG,GAAQulH,EAAIvlH,QAEdqI,EAAQ+oX,aACR9nY,KAAK4isB,mBAAmB3mkB,EAAKvlH,GAAOuxZ,IAEpCjoa,KAAKmjsB,oBAAoBlnkB,EAAKvlH,GAAOuxZ,IAGzC,QAAS99X,GAAM,EAAGA,GAAMytE,EAAOztE,KAC3B21C,EAAO31C,IAAK+1mB,OAAOsiD,IAK/B1/C,GAAkBwgD,GAAa,CAC3Bz6T,UAAW,GACXnyX,MAAO,IACPoxX,cAAc,EACdD,eAAe,EACfyB,eAAgB,EAChBkB,OAAQ,CACJv2D,SAAS,EACT92Q,MAAOs7kB,EACPvumB,SAAUuumB,EACVxnf,OAAQ,KAIhBwpf,GAAW6oD,GAAYjjrB,UAAWk/qB,IAElC,SAAe+D,mBClQf,iBAA2BnhD,GACvBripB,YAAY6D,EAAOob,GACfS,QAEAxf,KAAK+e,QAAUA,EACf/e,KAAKu/I,MAAQxgI,EAAQwgI,OAASg6f,GAC9Bv5oB,KAAK2D,MAAQA,EAGjBg5G,SACQ38G,KAAK6tqB,YAIT7tqB,KAAK6tqB,WAAY,EAEjB7tqB,KAAKq/G,eACLr/G,KAAKi/O,cACLj/O,KAAK2tqB,cAGT1ub,cAEI,MAAMurJ,EADUxqY,KAAK+e,QACEyrX,OAEvB,GAAIA,EAAOv2D,QAAS,CAChB,MAAM+uU,EAAYhjpB,KAAKgjpB,YACvB,IACIrka,EADA07U,EAAgB9rL,GAAY/D,GAE5B+4T,GAAa/4T,EAAOjrP,MAGpBo/F,EADA07U,EACYA,EAAc2oF,GAEdhjpB,KAAKwvY,YAAYhF,EAAOpvX,QAGnCmorB,KACDA,GAAa5H,GAAc37rB,KAAKu/I,QAGpCv/I,KAAKoF,MAAQ,IAAIqipB,GAAQ9oa,EACrB87Z,GAAW,CACPt9kB,MAAOs7kB,EACP+J,OAAQ/J,EACRlqmB,OAAQ,CACJ6gC,KAAM,EACNE,MAAO,GAEX2hF,OAAQoqf,GAAe7wQ,EAAOv5O,OAAQjxJ,KAAKmhQ,OAAOlwG,SAEtDu5O,EAAQ,CACJjrP,MAAOgkjB,KAEXvgD,GAEJhjpB,KAAKkxB,OAAOlxB,KAAKoF,QAIzBoqY,YAAYp0X,GACR,OAAOpb,KAAKu6lB,MAAMizE,iBAAiBxtqB,KAAMob,GAG7C8koB,OAAOpD,GACH98oB,KAAK28G,SAEL,MAAMv3G,EAAQpF,KAAKoF,MAEnBpF,KAAKi8H,IAAM6ghB,EAEP13oB,GACAA,EAAM86oB,OAAOlgpB,KAAKguqB,aAGlBhuqB,KAAKk2K,MACLl2K,KAAKk2K,KAAKgqe,OAAOpD,GAGrB98oB,KAAK0opB,OAAOxI,OAAOlgpB,KAAKguqB,aAG5BA,YAEI,MAAM3nV,EAAUtnU,KADKA,QACGsnU,QAClBrpM,EAASqpM,EAAQrpM,OACjBkhM,EAAOl+U,KAAKi8H,IAAIwhhB,SAEhB+lD,GAAc17rB,GADQu+U,EAAQv+U,KAAM,UACbsxoB,GAC7B,IAAIkJ,GAAcjH,GAAer+f,EAAOtmI,MAAO8srB,GAAc,EAAI,GACjE,MAAMC,GAAkBv2rB,KAAK4zF,MAAMwhjB,GAAc,GAEjD,GAAIj8T,EAAQr3R,KAAM,CACd,MAAMqgB,GAAS6uQ,EAAK7uQ,SACpB6uQ,EAAKlvR,KAAKt4C,MAAQwnU,EAAKlvR,KAAKzkD,OAAS87U,EAAQr3R,KAC7CkvR,EAAK75S,OAAO16B,EAAIuD,KAAK4zF,MAAMzxB,GAAO1lE,EAAIu0U,EAAKlvR,KAAKt4C,MAAQ,GACxDwnU,EAAK75S,OAAOyvB,EAAI5mD,KAAK4zF,MAAMzxB,GAAOvb,EAAIoqR,EAAKlvR,KAAKzkD,OAAS,GAG7D2zU,SAAKlvR,KAAKt4C,OAAS4roB,GACnBpkU,EAAKlvR,KAAKzkD,QAAU+3oB,GACpBpkU,EAAK75S,OAAOyvB,GAAK2voB,GAAkB,GACnCvlX,EAAK75S,OAAO16B,GAAK85rB,GAAkB,GAE5Bv8C,GAAUhpU,GAGrB4vV,eACI,MAAM/upB,EAAU/e,KAAK+e,QAEfi+H,EADUj+H,EAAQsnU,QACDrpM,OACjB5yI,EAAUixoB,GAAer+f,EAAO5yI,QAAS2U,EAAQ3U,SAEvD,MAAO,CACHm1I,MAAOvC,EAAOuC,OAASv/I,KAAKu/I,MAC5B7oI,MAAOsmI,EAAOtmI,MACdtM,QAASA,EACT43P,SAAUhlH,EAAOglH,UAIzB3iJ,eACI,MAAMtgG,EAAU/e,KAAK+e,QACf02qB,EAAgB12qB,EAAQsnU,QACxBqiU,EAAS,IAAIpF,GAAa,CAC5Bx7oB,KAAMuzoB,GAAeo6C,EAAc3trB,KAAM,QACzC4O,MAAO++qB,EAAczmoB,KACrBzkD,OAAQkrrB,EAAczmoB,KACtBitG,SAAUw5hB,EAAcx5hB,SACxB+pL,WAAYhmV,KAAKu/I,MACjBvC,OAAQh9I,KAAK8tqB,eACb3qB,aAAcsyC,EAActyC,aAC5B/4oB,QAASpK,KAAKmhQ,OAAO/2P,SAAW2U,EAAQ3U,QACxC6mJ,OAAQoqf,GAAet8nB,EAAQkyI,OAAQjxJ,KAAKmhQ,OAAOlwG,QACnDk0K,UAAWpmT,EAAQomT,UACnBvhE,OAAQ7kP,EAAQ6kP,QACjB,CACCtuM,SAAUt1D,KAAKs1D,SACf3xD,MAAO3D,KAAK2D,MACZw9P,OAAQnhQ,KAAKmhQ,OACbC,SAAUphQ,KAAKohQ,WAGnBphQ,KAAK0opB,OAASA,EACd1opB,KAAKkxB,OAAOw3nB,GAGhBhH,gBAAgBv3oB,GACZ,MAAM4U,EAAU/e,KAAK+e,QACf02qB,EAAgBz1rB,KAAK+e,QAAQwrX,UAAUlkD,SAAWrmV,KAAK+e,QAAQsnU,QAE/DkkD,EAAY,IAAI+4Q,GAAa,CAC/Bx7oB,KAAMuzoB,GAAeo6C,EAAc3trB,KAAM,QACzC4O,MAAO++qB,EAAczmoB,KACrBzkD,OAAQkrrB,EAAczmoB,KACtBitG,SAAUw5hB,EAAcx5hB,SACxB+pL,WAAYyvW,EAAcl2iB,OAASv/I,KAAKu/I,MACxCvC,OAAQh9I,KAAK8tqB,eACb3qB,aAAcsyC,EAActyC,aAC5B/4oB,QAASpK,KAAKmhQ,OAAO/2P,SAAW2U,EAAQ3U,QACxC6mJ,OAAQoqf,GAAet8nB,EAAQkyI,OAAQjxJ,KAAKmhQ,OAAOlwG,UAGvDs5O,EAAU21Q,OAAOlgpB,KAAKguqB,aACtB,MAAMpqa,EAAS2mI,EAAUlwK,aAEzBupC,SAAO7kP,QAAQrQ,KAAOvE,EAAMuE,KAC5Bk1P,EAAO7kP,QAAQ8iI,OAAS13I,EAAM03I,OAEvB+hH,EAGX0qa,kBACI,OAAOtuqB,KAAKi0qB,WAGhBnyB,sBACI,MAAO,CACH/ioB,QAAS/e,KAAK+e,QACdm/T,KAAMl+U,KAAKi8H,IAAIwhhB,SACf75Y,OAAQ5jQ,KAAKi0qB,YAIrBzF,gBACI,MAAMp/lB,EAAOpvE,KAAKi8H,IAAI5sD,SAAS1lE,EAG/B,MAAO,CACH8uE,MAAO,IAAIyB,GAAM9K,EAHTpvE,KAAKi8H,IAAIpnD,GtIxLN,GsI4LX1X,MAAO,CACHpxD,WAAY0soB,EACZzsoB,SAAUwsoB,IAKtBk2B,YAAYzyiB,GACR,OAAOj8H,KAAKi8H,IAAI+4G,SAAS/4G,GAG7B0yiB,kBAIA3rB,YACI,MAAO,CACHr5oB,EAAG3J,KAAK2D,MAAMgG,EACdmqD,EAAG9zD,KAAK2D,MAAMmwD,EACdnwD,MAAO3D,KAAK2D,MAAMA,MAClB2xD,SAAUt1D,KAAKs1D,SACf6rM,OAAQnhQ,KAAKmhQ,SAKzBs5Y,GAAWipD,GAAarjrB,UAAWwupB,IACnCp0B,GAAWipD,GAAarjrB,UAAWyupB,IAEnC40B,GAAarjrB,UAAUgic,SAAW,CAC9Bh8H,QAAS,CACLv+U,KAAM,OACNq7oB,aAAc,EACdnmgB,OAAQ,CACJuC,MAAO,gBAGfiG,QAAS,CAAEr3B,IAAK,GAChBq8Q,OAAQ,CACJv2D,SAAS,EACTzuL,QAAS,GAEbp7I,QAAS,EACTqgY,MAAO,CACHrlY,MAAO,KAIf,SAAes+rB,GC7Of,iBAA2BvhD,GACvBripB,YAAYqlY,EAAUpmX,GAClBS,MAAMT,GAEN/e,KAAKmlY,SAAWA,EAChBnlY,KAAKsgpB,aAAen7Q,EAASm7Q,aAC7BtgpB,KAAKs4qB,cAELt4qB,KAAK28G,SAGT27jB,cACIt4qB,KAAK8/E,OAAS,GACd9/E,KAAK6pqB,cAAgB,GACrB7pqB,KAAK0vpB,WAAa,CAAEj9mB,IAAKummB,EAAWxqoB,IAAKyqoB,GACzCj5oB,KAAK8pqB,YAAc,GAGvBntjB,SACI38G,KAAK4rb,WACL5rb,KAAK+pqB,mBAAmB/pqB,KAAKo0U,SAASvuT,KAAK7lB,OAG/C4rb,WACI,MAAQ7sa,SAAWoiP,WAAanhQ,KAEhC,QAASiqqB,EAAW,EAAGA,EAAW9oa,EAAOp7P,OAAQkkqB,IAAY,CACzD,MAAMwC,EAAgBtra,EAAO8oa,GAE7B,QAASvH,EAAU,EAAGA,EAAU+J,EAAc35pB,KAAK/M,OAAQ28pB,IAAW,CAClE,MAAQJ,eAAgBtiqB,KAAKotqB,WAAWX,EAAexC,EAAUvH,GACjE1iqB,KAAK0vpB,WAAWj9mB,IAAMvlC,KAAKulC,IAAIzyC,KAAK0vpB,WAAWj9mB,IAAK6vnB,EAAY3+pB,OAChE3D,KAAK0vpB,WAAWlhpB,IAAMtB,KAAKsB,IAAIxO,KAAK0vpB,WAAWlhpB,IAAK8zpB,EAAY3+pB,SAK5EywU,SAASzwU,EAAOu/G,GACZ,IAAIzqC,EACA90E,IACA80E,EAAQz4E,KAAK+4E,YAAYp1E,EAAOu/G,GAC5BzqC,GACA5yE,OAAOw0D,OAAOoe,EAAOyqC,IAI7BljH,KAAK8/E,OAAOr6E,KAAKgzE,GAGrByzlB,iBAAiBntpB,EAASpb,EAAOu/G,GAC7B,MAAQi+I,SAAQ8oa,YAAa/mjB,EACvBh5G,GAAQ,CAAEm4c,SAAUlhN,EAAOgra,UAAW7C,SAAU,CAAE,OAAQ,UAAW,UAAW,WAAY,SAAU,WAE5G,IAAI8C,GAASpsqB,KAAK8pqB,YAAYG,GACzBr/D,GAAQwhE,MACTpsqB,KAAK8pqB,YAAYG,GAAYmC,GAAS7C,GAAYxqpB,EAAS,GAAI7U,IAAO,IAG1E,IAAI8/pB,GAAejrpB,EACnB,OAAIqtpB,KACApC,GAAevvB,GAAW,GAAI17nB,GAC9BwqpB,GAAYS,GAAc,CACtBrmqB,MAAOA,EACPw9P,OAAQA,EACR7rM,SAAU4tD,EAAO5tD,SACjB7iB,IAAKzyC,KAAK0vpB,WAAWj9mB,IACrBjkC,IAAKxO,KAAK0vpB,WAAWlhpB,KACtBtE,KAGA8/pB,GAGXE,YACI,OAAOw5B,GAGX15B,aAAa7oa,EAAQ8oa,GACjB,IAAIlrpB,EAAU/e,KAAK6pqB,cAAcI,GACjC,IAAKlrpB,EAAS,CACV,MAAMsjc,EAAWrid,KAAKkqqB,YAAY7ppB,UAAUgic,SAC5Crid,KAAK6pqB,cAAcI,GAAYlrpB,EAAU07nB,GAAW,GAAIp4L,EAAU,CAC9Dh8H,QAAS,CACLj8U,QAAS+2P,EAAO/2P,SAEpB2sC,QAAS,CACL37B,OAAQpb,KAAK+e,QAAQg4B,QAAQ37B,QAEjCovX,OAAQ,CACJpvX,OAAQpb,KAAK+e,QAAQyrX,OAAOpvX,SAEjC+lP,GAGP,OAAOpiP,EAGXg6D,YAAYp1E,EAAOu/G,GACf,MAAMi+I,EAASj+I,EAAOi+I,OACtB,IAAI6oa,EAAehqqB,KAAKgqqB,aAAa7oa,EAAQj+I,EAAO+mjB,UAChD1qhB,EAAQr8B,EAAOq8B,OAAS4hH,EAAO5hH,MAEnCyqhB,EAAehqqB,KAAKksqB,iBAAiBlC,EAAcrmqB,EAAOu/G,GAGtDq8B,EADJg/C,GAAe4iE,EAAO5hH,OACVyqhB,EAAazqhB,MC9Gd,EAACA,GAAOokjB,EAAqB,OAC5C,MAAMpvB,GAAYt8F,SAAW14b,IACvBntH,EAAS,EAAIuxqB,EAEnB,OAAQhgsB,IACJ,MAAMigsB,EAAMrvB,EAAWsvB,QACjBj8nB,GAAQ,IAAMg8nB,EAAI77pB,EAExB67pB,SAAI77pB,GAAK76B,KAAKulC,KADArgB,EAASzuB,GACGikE,GAAOA,IAE1Bg8nB,EAAIvrH,UDuGC33e,CADiB6+C,EACjB7+C,CAAM/8F,EAAMA,MAAQ3D,KAAK0vpB,WAAWlhpB,KAGhD,MAAMiqE,GAAQ,IAAIirnB,GAAa//rB,EAAOqmqB,GACtCvxlB,UAAM8mE,MAAQA,EAEdv/I,KAAKkxB,OAAOunD,IAELA,GAGX4/lB,WAAWl3a,GACP,MAAQmkI,MAAOszS,EAAWrzS,MAAOszS,GAAc13a,EACzCgkI,EAAWnlY,KAAKmlY,SAChBG,EAAQszS,EAAYzzS,EAAS6zS,WAAWJ,GAAazzS,EAAS6lR,MAC9DzlR,GAAQszS,EAAY1zS,EAAS8zS,WAAWJ,GAAa1zS,EAAS8lR,MAEpE,IAAK3lR,EACD,MAAM,IAAI7uX,MAAM,qCAAuCmiqB,GAG3D,IAAKrzS,GACD,MAAM,IAAI9uX,MAAM,qCAAuCoiqB,GAG3D,MAAO,CAAEvzS,QAAOC,UAGpB26Q,OAAOpD,GACH,MAAM0vB,EAAcxsqB,KAAK8/E,OACnB7tB,GAASjyD,KAAK+e,QAAQ0+X,KAC5B,IAAIilR,EAAU,EAGd1iqB,KAAK+pqB,mBAAmB,CAACpmqB,EAAOu/G,MAC5B,MAAMzqC,GAAQ+zlB,EAAY9J,MAClBp9R,SAAOC,UAAUvlY,KAAKq4qB,WAAWn1jB,GAAOi+I,QAC1C2ic,GAASx+T,GAAMyJ,cAAcprY,EAAMgG,GACnCo6rB,GAASx+T,GAAMwJ,cAAcprY,EAAMmwD,GACnCw4lB,GAAQhnR,GAAMknR,QAAQs3C,GAAQA,GAAQ7xoB,GACtCs6lB,GAAQhnR,GAAMinR,QAAQu3C,GAAQA,GAAQ9xoB,GAE5C,GAAIwmB,GACA,GAAI6zkB,IAASC,GAAO,CAChB,MAAMqgB,GAAY5sqB,KAAK4sqB,UAAUtgB,GAAOC,IACxC9zkB,GAAMynkB,OAAO0sB,SAEbn0lB,GAAMw7P,SAAU,IAK5Bj0U,KAAKi8H,IAAM6ghB,EAGf8vB,UAAUtgB,EAAOC,GACb,OAAO,IAAItP,GAAIqP,EAAMn3kB,GAAIo3kB,EAAM13kB,GAAIy3kB,EAAM72kB,GAAI82kB,EAAM1P,IAGvDktB,mBAAmBl6pB,GACf,MAAQkP,SAAWoiP,WAAanhQ,KAEhC,QAASiqqB,EAAW,EAAGA,EAAW9oa,EAAOp7P,OAAQkkqB,IAAY,CACzD,MAAMwC,EAAgBtra,EAAO8oa,IACrB3kS,QAAOC,UAAUvlY,KAAKq4qB,WAAW5L,GACnCu3B,GAAS1+T,EAAMyvR,sBACfkvC,GAAS1+T,GAAMwvR,sBAErB,QAAS2N,GAAU,EAAGA,GAAU+J,EAAc35pB,KAAK/M,OAAQ28pB,KAAW,CAClE,MAAQJ,YAAa3+pB,GAAOu/G,WAAWljH,KAAKotqB,WAAWX,EAAexC,EAAUvH,IAC1EwhC,GAAS5+T,EAAM2uR,WAAWtwpB,GAAMgG,GAChCw6rB,GAAS5+T,GAAM0uR,WAAWtwpB,GAAMmwD,GAEhCswoB,GAAMH,GAAOxxpB,KAAO0xpB,IAAUA,IAAUF,GAAOz1rB,IADzCw1rB,GAAOvxpB,KAAOyxpB,IAAUA,IAAUF,GAAOx1rB,KAG1C41rB,IACPv0rB,EAASlM,GAAO82oB,GAAW,CACvBioB,QAASA,GACTvha,OAAQsra,EACRxC,SAAUA,EACV30mB,SAAUm3mB,EAAc35pB,KAAK4vpB,IAC7BnoE,MAAOv6lB,MACRkjH,OAMnBsqjB,iBAAiB/0lB,EAAOr9D,GACpB,MAAMzX,EAAQ80E,EAAM90E,MACpB,OAAO3D,KAAKsgpB,aAAalloB,OAAOg8jB,KAAKh8jB,EAAQzX,EAAMgG,EAAGhG,EAAMmwD,EAAGnwD,EAAMA,OAGzE0tqB,kBACI,MAAMvxlB,EAAS9/E,KAAK8/E,OACdvtE,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IACnC53B,EAAO9M,MAAMq6E,EAAO31C,IAAQ,IAAIu+mB,QAEpC,OAAOn2oB,GAGfuwoB,GAAkBuhD,GAAc,CAC5Bljc,OAAQ,GACRpqN,QAAS,CACL37B,OAAQ,iBAEZovX,OAAQ,CACJpvX,OAAQ,OAEZqiY,MAAM,IAEVg9P,GAAW4pD,GAAahkrB,UAAW,CAC/B+spB,WAAYK,0BAGhB,SAAe42B,GE7Nf,iBAA8B/gB,GAC1Bn5B,aACInqpB,KAAKg5qB,WAAa,GAClBh5qB,KAAKi5qB,WAAa,GAGtBt8jB,OAAOsoR,EAAQjlY,KAAKilY,OAChBjlY,KAAK8lZ,iBACL9lZ,KAAKg7rB,WAAW/1T,GAChBjlY,KAAKoorB,aAAanjT,GAClBjlY,KAAKsksB,mBAGTx+S,iBACI,MAAM3kJ,EAASnhQ,KAAKsprB,WAAatprB,KAAKmhQ,OAEtC,QAASxyP,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAAK,CACpC,MAAM89pB,EAAgBtra,EAAOxyP,GACvBmE,EAAO25pB,EAAc35pB,MAAQ,IAC3BwyX,QAAOC,UAAUvlY,KAAKq4qB,WAAW5L,GAEnC83B,GAAcC,GAAcl/T,EAAM/1I,YAAc,IAChDk1c,GAAcD,GAAcj/T,GAAMh2I,YAAc,IAEtD,QAASw2I,GAAa,EAAGA,GAAajzX,EAAK/M,OAAQggY,KAAc,CAC7D,MAAQp8X,KAAGmqD,MAAMuvmB,qBAA+BoJ,EAAe1mS,IAAYu8R,YAEtEiiC,GAAYtzqB,IAAItnB,KACjB46rB,GAAY/7oB,IAAI7+C,IAGf86rB,GAAYxzqB,IAAI6iC,KACjB2woB,GAAYj8oB,IAAIsL,IAIxBwxU,EAAM/1I,WAAag1c,GAAYl+rB,SAC/Bk/X,GAAMh2I,WAAak1c,GAAYp+rB,UAIvC+hrB,aAAanjT,GACT,MAAMm6S,EAAep/qB,KAAKm/qB,oBAE1B,QAASxwqB,EAAI,EAAGA,EAAIs2X,EAAMl/X,OAAQ4I,IAAK,CACnC,MAAMqrY,EAAO/U,EAAMt2X,GACb25qB,EAAalJ,EAAaplS,EAAKj7X,QAAQ/Z,MAAQ,YAAc,GACnEhF,KAAKu+qB,YAAY+J,GACjB,MAAMsS,GAAiB56rB,KAAKs/qB,oBAAoBgJ,IAE3CsS,IAIL56rB,KAAK0ksB,mBACD9b,GAAmBgS,GAAgB,CAAE70B,KACrC/rR,IAKZ0qT,mBAAmBvjc,EAAQ64I,GACvB,MAAMzwD,EAAQ,IAAI86W,GAAarksB,KAAM,CACjCmhQ,OAAQA,IAGZnhQ,KAAK+7qB,YAAYxyV,EAAOywD,GAG5BqlS,eAAel+a,GACX,MAAMpiP,EAAU/e,KAAK+e,QACf65pB,EAAYz3a,EAAOmkI,MAEnBA,EAAQ0+Q,GADO,GAAGrwmB,OAAO50B,EAAQumX,OACN,SAASnzW,IAAK,OAAOA,GAAEntB,OAAS4zqB,IAAc,GACzEC,GAAY13a,EAAOokI,MAEnBA,GAAQy+Q,GADO,GAAGrwmB,OAAO50B,EAAQwmX,OACN,SAASpzW,IAAK,OAAOA,GAAEntB,OAAS6zqB,KAAc,GAK/E,OAFkBvzS,GAAS,IAAI0U,OAASzU,IAAS,IAAIyU,OAFvCj7X,EAAQkmX,OAAS,CAAE,KACH,GAAGjgY,MAAQ,UAM7CqzqB,WAAWl3a,GACP,IAAImkI,EACAC,EAEJ,MAAMxmX,EAAU/e,KAAK+e,QAEf4lrB,EAAe,GAAGhxpB,OAAO50B,EAAQumX,OACjCszS,GAAYz3a,EAAOmkI,MAErBA,EADAszS,GACQ+rB,EAAap+rB,KAAK4/X,IAAQA,GAAKnhY,OAAS4zqB,IAExC+rB,EAAa,GAGzB,MAAMC,GAAe,GAAGjxpB,OAAO50B,EAAQwmX,OACjCszS,GAAY13a,EAAOokI,MAOzB,GALIA,EADJsjR,GACY+7C,GAAar+rB,KAAK4/X,IAAQA,GAAKnhY,OAAS6zqB,IAExC+rB,GAAa,IAGpBt/T,EACD,MAAM,IAAI7uX,MAAM,qCAAuCmiqB,IAG3D,IAAKrzS,EACD,MAAM,IAAI9uX,MAAM,qCAAuCoiqB,IAG3D,MAAO,CAAEvzS,QAAOC,SAGpB++T,mBACI,MAAMnhc,EAAOnjQ,KAAKmjQ,KAClB,QAASx0P,EAAI,EAAGA,EAAIw0P,EAAKp9P,OAAQ4I,IAC7Bw0P,EAAKx0P,GAAG07oB,eAIhB4wC,aAAal8qB,EAAS/S,EAAU6lY,GAC5B,MAAMD,EAAW7yX,EAAQ/Z,KACnBk2rB,EAAYlvrB,EAAWhM,KAAKi5qB,WAAaj5qB,KAAKg5qB,WAC9Cve,GAAc50pB,OAAOw0D,OAAO,CAC9Bi1L,kBAAmB,GACpBvwO,EAAS,CACR/S,SAAUA,EACV+iF,QAAU/iF,GAAYhM,KAAKsgpB,aAAa57U,KAAQ3lT,EAAQgwE,QAAUhwE,EAAQgwE,QAC1EusT,WAAW,IAGT8/S,GAAc,CAAE3gC,GAAYhonB,IAAKgonB,GAAYjspB,IAD7BispB,GAAYlra,WAAakra,GAAYlra,WAAW,GAAK,MAErE4R,GAASnhQ,KAAKmhQ,OAEpB,QAAS8oa,GAAW,EAAGA,GAAW9oa,GAAOp7P,OAAQkkqB,KAAY,CACzD,MAAMwC,GAAgBtra,GAAO8oa,IACvBoxB,GAAiB5uB,GAAczgqB,EAAW,QAAU,SAC1D,GAAKqvrB,KAAmB5gC,GAAYz1pB,MAAwB,IAAd6sY,IAAoBwpT,GAAiB,CAC/E,MAAMC,GAAkBj4B,qBAA+BoJ,GAAe,GAAGnK,YACzE84B,GAAY31rB,KAAK61rB,GAAgBtvrB,EAAW,IAAM,MAElD,OAIR,IAAIuvrB,GASAh8B,GAPJ,QAAS5wpB,GAAI,EAAGA,GAAIysrB,GAAYr1rB,OAAQ4I,KACpC,GAAIysrB,GAAYzsrB,cAAcoK,KAAM,CAChCwirB,IAAe,EACf,MAMJh8B,GADAod,GAAiBliB,GAAY3ypB,KAAMkpE,KAAWyplB,GAAY3ypB,MAAQyzrB,GACvDtmT,GAEAs9Q,GAGf,MAAMpsR,GAAO,IAAIo5R,GAAS9E,GAAaz6pB,KAAKsgpB,cAG5C,GAFAn6Q,GAAK0L,UAAYA,EAEbD,EAAU,CACV,GAAIspT,EAAUtpT,GACV,MAAM,IAAIn7X,MAAO,GAAGzK,EAAW,IAAM,sBAAwB4lY,wBAEjEspT,EAAUtpT,GAAYzL,GAG1B,YAAK01S,WAAW11S,IAChBA,GAAK6uR,gBAEE7uR,GAGX60T,WAAW/1T,GACP,MAAMlmX,EAAU/e,KAAK+e,QACfy8qB,EAAe,GAAG7npB,OAAO50B,EAAQumX,OACjCu5S,EAAQ,GACR4c,EAAe,GAAG9npB,OAAO50B,EAAQwmX,OACjCu5S,GAAQ,GAEd,QAAS30oB,GAAM,EAAGA,GAAMqxpB,EAAaz1rB,OAAQokC,KAErC0zmB,GADa79oB,KAAKg+qB,SAASwd,EAAarxpB,IAAK6vW,MAC3B/U,IAClB45S,EAAMp5qB,KAAKzF,KAAKi7rB,aAAaO,EAAarxpB,KAAM,EAAOA,KAI/D,QAASA,GAAM,EAAGA,GAAMsxpB,EAAa11rB,OAAQokC,KAErC0zmB,GADa79oB,KAAKg+qB,SAASyd,EAAatxpB,IAAK6vW,MAC3B/U,IAClB65S,GAAMr5qB,KAAKzF,KAAKi7rB,aAAaQ,EAAatxpB,KAAM,EAAMA,KAI9DnqC,KAAKgrpB,MAAQhrpB,KAAKgrpB,OAAS6zB,EAAM,GACjC7+qB,KAAKirpB,MAAQjrpB,KAAKirpB,OAAS6zB,GAAM,GAGrC9C,WAAW71S,GACP,MAAMyL,EAAWzL,EAAKpnX,QAAQ/Z,KAE9Bwa,MAAMw8pB,WAAW71S,GAEbA,EAAKpnX,QAAQ/S,gBACNhM,KAAKi5qB,WAAWrnS,UAEhB5xY,KAAKg5qB,WAAWpnS,GAGvBzL,IAASnmY,KAAKgrpB,cACPhrpB,KAAKgrpB,MAGZ7kR,IAASnmY,KAAKirpB,cACPjrpB,KAAKirpB,MAIpBu4B,eAAej6V,EAAOtgV,EAAGojrB,GACrB,MAAMxzmB,EAAS0wQ,EAAM+iW,kBAAkBrjrB,GACjCwvE,EAAQ,IAAIyB,GAAMrB,EAAOlvE,EAAGkvE,EAAO/kB,GACnCoonB,GAAUl8qB,KAAKmjQ,KACfp9P,GAASm2qB,GAAQn2qB,OACjByjV,GAAU,GACVC,GAAU,GAEhB,QAAS96U,GAAI,EAAGA,GAAI5I,GAAQ4I,KAAK,CAC7B,MAAMw3X,GAAO+1S,GAAQvtqB,IAErB69qB,GADermT,GAAKpnX,QAAQ/S,SAAWy9U,GAAUD,GACzB28C,GAAK6tR,YAAYv7kB,IAGzC+wQ,GAAQzjV,OAAS,GAAK0jV,GAAQ1jV,OAAS,GACvCwjV,EAAMt/U,QAAQoirB,EAAW,CACrB33qB,QAASsmoB,GAAa/xoB,GACtBosH,cAAepsH,EACfU,EAAG8irB,GAAkBjjW,IACrB11R,EAAG24nB,GAAkBhjW,MAKjCijW,kBAAkBvmT,EAAMpnX,GACpB,MAAM/S,EAAWm6X,EAAKpnX,QAAQ/S,SACxBm3P,EAAOnjQ,KAAK4+qB,UAAU5+qB,KAAKilY,OAC3BrhX,GAAS5X,EAAWm3P,EAAKrvM,EAAIqvM,EAAKx5P,GAAGmW,QAAQqmX,GAEnDumT,GAAkB1srB,KAAK+e,QAAS6E,EAAO5X,EAAU+S,GACjD2tqB,GAAkB1srB,KAAKyxf,gBAAiB7te,EAAO5X,EAAU+S,GAG7D6+pB,iBAAiBz3S,GAEb,OAAOtgY,OAAOw0D,OAAO,GAAI8rU,EAAKpnX,QAAQwtX,UAAW,CAAEt7O,OAAQ,KAInE,YAA2B07hB,GAAe96S,EAAW7lY,EAAU+S,GAE3D07nB,GADqB,GAAG9mmB,OAAO3nC,EAAW2grB,GAAcpnT,MAAQonT,GAAcrnT,OAAQuM,GAC9D9yX,GAG5B+joB,GAAkB+hD,GAAiB,CAC/Bv/T,MAAO,GACPC,MAAO,KAGXk1Q,GAAWoqD,GAAgBxkrB,UAAWwsqB,IAEtC,SAAegY,GC5QTC,GAAQ,QACRC,GAAQ,QAERC,GAAM,MAENC,GAAY,WAIlB/N,oBAAiCtK,GAAqB,CAClDrnB,GAAKK,GAAQK,GAAMiB,GAAe5B,GAAMyB,GACxCpB,GAAaO,GAAMR,GAAQuB,GAAiBzB,GAAUwB,GACtDJ,GAAcD,GAAWS,GAAWpB,GAAsBU,GAAYS,KAG1E+vB,oBAAiCwE,GAAY,CACzC70B,GAASC,GAAcrB,KAG3ByxB,oBAAiCgO,GAAa,CAAE/+B,KAChD+wB,oBCrCA,iBAA4BgO,GACxBvolB,SACI38G,KAAKmlsB,iBAAiBnlsB,KAAKmhQ,QAG/Bgkc,iBAAiBhkc,GACb,MAAM03I,EAAc13I,EAAO,GACrBikc,EAAa,IAAIvF,GAAW7/rB,KAAM,CACpCmhQ,OAAQA,EACR37G,QAASqzP,EAAYrzP,QACrBiiP,WAAYoR,EAAYpR,WACxBx6V,OAAQjtC,KAAK+e,QAAQkuB,SAGzBjtC,KAAK+7qB,YAAYqpB,KDuBuB,CAAEv/B,KAClDqxB,oBEpCA,iBAA6B5T,GACzB3mkB,SACI38G,KAAKqlsB,kBAAkBrlsB,KAAKmhQ,QAGhCkkc,kBAAkBlkc,GACd,MAAM03I,EAAc13I,EAAO,GACrBmkc,EAAc,IAAIhC,GAAYtjsB,KAAM,CACtCmhQ,OAAQA,EACRl0N,OAAQjtC,KAAK+e,QAAQkuB,OACrB47V,UAAWgQ,EAAYhQ,UACvBhB,cAAegR,EAAYhR,cAC3BC,aAAc+Q,EAAY/Q,aAC1BwB,eAAgBuP,EAAYvP,eAC5BiB,UAAWsO,EAAYtO,YAG3BvqY,KAAK+7qB,YAAYupB,GAGrBvpB,YAAYxyV,EAAOywD,GACfx6X,MAAMu8pB,YAAYxyV,EAAOywD,GACzB9oX,GAAOlxB,KAAK+e,QAAQkuB,OAAOulB,MAAO+2R,EAAM73F,eFcC,CAAEo0a,KAEnDoxB,oBAAiC+J,GAAe,CAAE76B,GAAYC,GAAYC,KAC1E4wB,oBAAiCqL,GAAe,CAAEh8B,GAAYC,GAAcC,KAE5EywB,oBAAiC2N,GAAiB,CAAE9+B,KAEpD1C,oBACI,CAAEkC,GAAKK,GAAQK,GAAMiB,GAAe5B,GAAMyB,IAC1C,CAAEztB,IAAS,CAAE8uB,GAAU08B,GAAOG,GAAWngC,GAAiBC,KAG9D1B,oBACI,CAAEuD,GAAcD,GAAWD,GAAYS,IACvC,CAjCS,OAKF,MA4BO,CAAEiB,GAAU08B,GAAOG,KAGrC5hC,oBACI,CAAE+D,GAAWpB,IACb,CAAE1sB,IAAS,CAAE8uB,GAAU08B,GAAOG,GAlCZ,YAqCtB5hC,oBAA8B,CAAE+C,GAAYC,GAAYC,IAAiB,CAAEv+pB,GAAGjC,IAAK,CAAEg/rB,KACrFzhC,oBAA8B,CAAEkD,GAAYC,GAAcC,IAAc,CAAEntB,IAAS,CAAEwrD,KAErFzhC,oBACI,CAAEyC,IACF,CAAExsB,IAAS,CAAE8uB,GAAU08B,GAAO,kBAAmB,YAGrDrgB,oBACI,CAAElf,GAAKK,GAAQK,GAAMiB,GAAe5B,GAAMyB,GAAeK,GAAWpB,IACpE,CAAEriqB,MAAOqhsB,GAAKzljB,MAAOwljB,GAAO94B,SAAU84B,GAAOQ,SAjDrC,MAiDoDC,UAAWR,KAG3EvgB,oBACI,CAAE7d,GAAcD,GAAWD,GAAYS,IACvC,CAAE/+lB,KAtDM,MAsDKqlE,GAAIu3jB,GAAKzljB,MAAOwljB,GAAO94B,SAAU84B,KAGlDtgB,oBACI,CAAEle,GAAYC,GAAcC,IAC5B,CAAE9iqB,MAAOqhsB,GAAKzljB,MAAOwljB,KAGzB1hC,oBACI,CAAEwD,GAASC,GAAcrB,IACzB,CAAE19pB,GAAGjC,IAAK,CAAEg/rB,GAAOG,G1I3EG,YACC,aACD,YACC,e0I2E3B5hC,oBACI,CAAEoC,IAAU,CAAE19pB,GAAGjC,GAAG,QAAU,CAAEg/rB,GAAO18B,GAAU68B,KAGrD5hC,oBACI,CAAE0C,IACF,CAAEh+pB,GAAGjC,GAAGwzoB,IAAS,CAAEwrD,GAAOG,KAG9B5hC,oBACI,CAAEsC,GAAaO,IACf,CAAE,OAAQ,OAAQ,MAAO,SAAW,CAAEkC,GAAU08B,GAAO,YAAaG,KAGxExgB,oBACI,CAAE9e,GAAaO,IACf,CAAEn+oB,KAAMi9qB,GAAK71T,KAAM61T,GAAK91T,IAnFhB,MAmF0BlkX,MAAOg6qB,GACvCzljB,MAAOwljB,GAAOp9T,UAAWo9T,GAAO94B,SAAU84B,KAGhD1hC,oBACI,CAAEmC,GAAUwB,IACZ,CAAE,QAAS,KAAM,SAAU,KAAM,QAAS,OAAQ,YAAc,CAAEoB,GAAU08B,GAAOG,KAGvFxgB,oBACI,CAAEjf,GAAUwB,IACZ,CAAEp1U,MAAOozW,GAAKnzW,GAAImzW,GAAKrzW,OAAQqzW,GAAKlzW,GAAIkzW,GAAKz+c,MAAOy+c,GAAKj7c,KAAMi7c,GAAKt6T,SAAUq6T,GAC5ExljB,MAAOwljB,GAAO94B,SAAU84B,KAG9B1hC,oBACI,CAAEqC,GAAQuB,IACV,CAAE,UAAW,UAAY,CAAEmB,GAAU08B,GAAO,kBAAmBG,KAGnExgB,oBACI,CAAE/e,GAAQuB,IACV,CAAE5goB,QAAS2+pB,GAAKt8rB,OAAQs8rB,GAAKzljB,MAAOwljB,GAAO94B,SAAU84B,KAGzD1hC,oBACI,CAAE8C,GAAKN,IACP,CAAEvsB,IAAS,CAAE8uB,GAAU08B,GAAO,UAAW,kBAAmB,YGnGhE,MAAMW,GAAa,CAAEr9B,GAAU9uB,GAAOvxoB,GAAGjC,IAEnC4/rB,GAAY,YACZC,GAAc,cACdC,GAAa,aAGnB,iBAAoBrpD,KAChBz8oB,YAAY4U,EAAS0lpB,EAAayrC,EAAczioB,EAAU,IACtD5jD,QAEAxf,KAAK6jB,UAAY,GACjB7jB,KAAK8lsB,YAAY1ioB,EAAQ5/C,UACzBxjB,KAAKsgpB,aAAe,IAAIwJ,GAAa9ppB,KAAMojE,GAC3CpjE,KAAKsgpB,aAAatqQ,MAAQ6vT,EAE1B7lsB,KAAK+lsB,aAAarxrB,GAElB,MAAMqK,EAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASq7oB,GAC7Cp6pB,KAAKgmsB,iBAAmBvrD,GAAW,GAAI17nB,GACvC/e,KAAKimsB,OAASJ,EACd7lsB,KAAKkmsB,WAAWnnrB,EAAS8mrB,GAEzB7lsB,KAAKmmsB,gBACLnmsB,KAAKomsB,eAELpmsB,KAAK8lZ,iBACLw1P,gBAAwB8e,EAAa,KACjCp6pB,KAAKqmsB,YAAa,EACbrmsB,KAAK6mX,aACN7mX,KAAKiK,QAAQ,QACbjK,KAAKsmsB,UACLtmsB,KAAKumsB,mBAKjBR,aAAarxrB,GAGT,IAFA1U,KAAKwmsB,iBAAiB9xrB,GACtBA,EAAQvK,MAAM+/B,SAAW,WAClBx1B,EAAQq9S,YACXr9S,EAAQgpC,YAAYhpC,EAAQq9S,YAEhC/xT,KAAK0U,QAAUA,EAGnB8xrB,iBAAiB9xrB,GACbkxT,GAASlxT,EAAS,WAGtBwxrB,WAAWnnrB,EAAS8mrB,GAChB,MAAMY,EAAe,GACftlc,EAASpiP,EAAQoiP,QAAU,GAEjC,QAASxyP,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAC/B83rB,EAAahhsB,KAAKI,OAAOw0D,OAAO,GAAI8mM,EAAOxyP,KAE/CoQ,EAAQoiP,OAASslc,EA4/CzB,YAA4B1nrB,IACxB,MAAM2nrB,EAAUjB,GAEhB,QAASt7pB,EAAM,EAAGA,EAAMu8pB,EAAQ3gsB,OAAQokC,IAAO,CAC3C,MAAM69T,EAAQ0+V,EAAQv8pB,GAAO,OACzBprB,GAAQipV,KACRjpV,GAAQ2nrB,EAAQv8pB,GAAO,QAAUprB,GAAQipV,UAClCjpV,GAAQipV,KAjgDnB2+V,CAAmB5nrB,GACnB/e,KAAKu7pB,cAAcx8oB,EAAS8mrB,GAGC,OAAzB9mrB,EAAQ8lX,qBACD9lX,EAAQ8lX,aAGnB7kY,KAAK+e,QAAU07nB,GAAW,GAAIorD,EAAc9mrB,GAC5C/e,KAAK4msB,oBAGTC,UACI,MAAM7hU,EAAYhlY,KAAK+e,QAAQimX,WAAa,GAI5C,MAAO,CACHtuX,MAJUsuX,EAAUtuX,MAAQ9S,SAASohY,EAAUtuX,MAAO,IAAMxJ,KAAKC,MAAMnN,KAAK0U,QAAQ6wJ,aAKpFh7J,OAJWy6X,EAAUz6X,OAAS3G,SAASohY,EAAUz6X,OAAQ,IAAM2C,KAAKC,MAAMnN,KAAK0U,QAAQkyC,eAQ/FgwV,OAAO2sI,GACH,MAAMv0d,EAAOhvD,KAAK6msB,UACZC,EAAc9msB,KAAKm5jB,MACnBukF,EAAU1ulB,EAAKt4C,MAAQ,GAAKs4C,EAAKzkD,OAAS,EAE5Cg5gB,GAASm6H,KAAaopD,GAAe93oB,EAAKt4C,QAAUowrB,EAAYpwrB,OAASs4C,EAAKzkD,SAAWu8rB,EAAYv8rB,SACrGvK,KAAKm5jB,MAAQnqgB,EACbhvD,KAAKgyrB,QAAQhjoB,EAAMu0d,GACnBvjhB,KAAKiK,QAAQ,SAAU+kD,IAChB0ulB,GAAW19oB,KAAK+msB,aAAexgsB,GAAKvG,KAAK+msB,YAAalgsB,IAAMA,EAAEotU,WACrEj0U,KAAKgnsB,qBACLhnsB,KAAKslE,mBAIb0snB,UACIhyrB,KAAKinsB,uBAGTtmjB,OAAOumjB,GAIH,GAHAlnsB,KAAKu7pB,cAAcv7pB,KAAK+e,SACxB/e,KAAK4msB,oBAEDM,EAAU,CACV,MAAM/hU,EAAWnlY,KAAKmvnB,OAAOp2O,UACvBiB,EAAO7U,EAAS64S,SAASkpB,GAC/B/hU,EAASxkP,OAAOq5P,QAEhBh6Y,KAAKsmsB,UAIb79B,QAAQzjqB,GACJ,OAAOoyY,GAAepyY,EAAMhF,KAAK+4Y,UAAU51I,MAG/Ci0I,eAAepyY,GACX,OAAOhF,KAAKyoqB,QAAQzjqB,GAGxBsyY,eAAetyY,GACX,MAAMigY,EAAQjlY,KAAK+4Y,UAAU9T,MAE7B,QAAS96V,EAAM,EAAGA,EAAM86V,EAAMl/X,OAAQokC,IAClC,GAAI86V,EAAM96V,GAAKprB,QAAQ/Z,OAASA,EAC5B,OAAO,IAAIu3qB,GAAUt3S,EAAM96V,IAKvCktW,gBAAgBltW,GACZ,MAAM86V,EAAQjlY,KAAK+4Y,UAAU9T,MAC7B,GAAIA,EAAM96V,GACN,OAAO,IAAIoyoB,GAAUt3S,EAAM96V,IAInCg7V,WACI,OAAO,IAAIgiU,GAAcnnsB,KAAK+4Y,WAGlCvB,gBAAgBhqY,EAAMT,GAClB,MAAMo4X,EAAWnlY,KAAK+4Y,UAChBF,GAAe1T,EAASmkT,WAAankT,EAAShkI,QAAU,IAAI,GAClE,IAAIrhL,EAEJ,GAAIi6jB,GAAWhtoB,GACX+yE,EAASqlT,EAAS09S,aAAa91qB,OAC5B,CACH,IAAIq6rB,GAAYn4W,GACZ/jL,GAASn+J,IACTq6rB,GAAar6rB,EAAOo0P,OACpB8tF,GAAeliV,EAAOq0P,UAEtBgmc,GAAan4W,GAAeliV,EAI5B+yE,EADJsmgB,EAAgBt+kB,OAAS+9pB,GACZwhC,GAAoBliU,EAAS29S,mBAAmBskB,IAAan4W,IACnEm3P,EAAgBt+kB,OAASq+pB,IAAOttR,EAAY/wY,OAASg+pB,GAC/CuhC,IAAqBliU,EAAS2T,OAAO,IAAM,IAAIh5T,OAAQmvQ,IAEvDk2C,EAAS29S,mBAAmBskB,IAIzCtnnB,GACA9/E,KAAKsnsB,sBAAsB95rB,EAAMsyE,GAIzCwnnB,sBAAsB95rB,EAAMsyE,GACxB,MAAMyqT,EAAYvqY,KAAK4hpB,WACvB,QAASz3mB,EAAM,EAAGA,EAAM21C,EAAO/5E,OAAQokC,IACnCogW,EAAUooT,qBAAqB7ymB,EAAO31C,GAAM38B,GAIpD4gY,YAAYrhY,GACR,MAAMk1X,EAASjiY,KAAKunsB,kBACZC,SAAUzwpB,EAASgiW,UAAW5T,GAAanlY,KACnD,IAAIy4E,EAAOs2T,GAWX,GATAxwM,GAAexxL,IACX0rE,EAAQ0sT,EAAS49S,UAAUh2qB,GACvB0rE,GAASwpT,IACT8M,GAAgBt2T,EAAMu2T,aAEnB/M,GAAU2oO,GAAQ79lB,KACzBgiY,GAAgB5J,EAASJ,aAAagK,cAAchiY,IAGpDk1X,GACA,GAAI8M,IAAiB,EAAG,CACpB,MAAMjvT,GAAS9/E,KAAK+4Y,UAAU4pS,sBAAsB5zS,IACpDh4V,EAAQ4joB,OAAO76lB,UAEZrH,GACP1hC,EAAQvpC,KAAKirE,GAIrBmtF,cACI5lK,KAAKwnsB,SAAS3poB,OAGlBuooB,eACI,MAAMruT,EAAU/3Y,KAAK+3Y,QACfz9U,EAAOt6D,KAAKynsB,eAEZziU,EAAYhlY,KAAK+e,QAAQimX,WAAa,GACxCA,EAAUtuX,OACVyrjB,GAAY7ngB,EAAM,CAAE5jD,MAAOsuX,EAAUtuX,QAErCsuX,EAAUz6X,QACV43jB,GAAY7ngB,EAAM,CAAE/vD,OAAQy6X,EAAUz6X,SAGrCwtY,GAAWA,EAAQh5X,QAAQjX,OAAS9H,KAAK+e,QAAQ6lX,UAWlD5kY,KAAK+3Y,QAAQz4V,QACbt/C,KAAK+3Y,QAAQnB,WAXb52Y,KAAK0nsB,kBAEL1nsB,KAAK+3Y,QAAU17P,UAAoB/hF,EAAM,CACrCxyD,KAAM9H,KAAK+e,QAAQ6lX,WAGvB5kY,KAAK+3Y,QAAQlyX,KAAK,aAAc7lB,KAAK2nsB,2BACrC3nsB,KAAK+3Y,QAAQlyX,KAAK,aAAc7lB,KAAK4nsB,4BAQ7CH,eACI,OAAOznsB,KAAK0U,QAGhB4xrB,UACI,MAAM96b,EAAQxrQ,KAAK6nsB,YACnB7nsB,KAAKm5jB,MAAQ,CACTzijB,MAAO80P,EAAMzsP,QAAQrI,MACrBnM,OAAQihQ,EAAMzsP,QAAQxU,QAG1BvK,KAAK8nsB,eAEL9nsB,KAAKmvnB,OAAS3jX,EACdxrQ,KAAK+4Y,UAAYvtI,EAAMutI,UAEvBvtI,EAAMi1Y,gBAE2B,IAA7BzgpB,KAAK+e,QAAQi9T,aACbxwE,EAAM+1Y,SAAS,SAAS7soB,GAChBA,EAAQywT,WACRzwT,EAAQywT,UAAUoU,UAK9Bv5U,KAAKomsB,eACLpmsB,KAAK+3Y,QAAQ17P,KAAKmvH,EAAM5H,SAES,IAA7B5jQ,KAAK+e,QAAQi9T,aACbxwE,EAAM+1Y,SAAS,SAAS7soB,GAChBA,EAAQywT,WACRzwT,EAAQywT,UAAUO,SAK9B1lU,KAAKwnsB,SAAWxnsB,KAAKg5N,iBACrBh5N,KAAK4hpB,WAAa,IAAImmD,GACtB/nsB,KAAKslE,kBACLtlE,KAAKgosB,kBACLhosB,KAAKiosB,uBACLjosB,KAAKkosB,wBAELlosB,KAAKiK,Q7IzOE,U6I0OPk+rB,EAAkBnosB,KAAK+4Y,UAAU9T,OAE5BjlY,KAAKoosB,WACNposB,KAAKqosB,mBAIbnxT,aAAaoxT,GACT,IAAI1kc,EACJ,GAAI0kc,IAAkBA,EAAc5xrB,OAAS4xrB,EAAc/9rB,QAAU+9rB,EAAcvprB,SAAU,CACzF,MAAMs2V,EAAiBr1W,KAAK+e,QACtBA,EAAU07nB,GAAW,GAAI6tD,EAAcvprB,QAAS,CAClDimX,UAAW,CACPtuX,MAAO4xrB,EAAc5xrB,MACrBnM,OAAQ+9rB,EAAc/9rB,UAI9Bg+rB,EAAmBvosB,KAAKgmsB,iBAAkBjnrB,GAC1C/e,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAKgmsB,iBAAkBjnrB,GACrD/e,KAAKkmsB,WAAWlmsB,KAAK+e,QAAS/e,KAAKimsB,QACnCjmsB,KAAK8lZ,iBAEL,MAAMt6I,EAAQxrQ,KAAK6nsB,YAEnBr8b,EAAMi1Y,eACN0nD,EAAkB38b,EAAMutI,UAAU9T,OAElCrhI,EAAS4H,EAAM5H,OAEf5jQ,KAAK+e,QAAUs2V,OAEfzxG,EAAS5jQ,KAAK+3Y,QAAQb,eAG1B,OAAOtzI,EAGX2jc,iBACI,OAAOvnsB,KAAK+4Y,qBAAqB6zS,IAAuB5srB,KAAK+e,QAAQg4B,SAAW/2C,KAAK+e,QAAQg4B,QAAQkrV,OAGzG+lU,kBACI,MAAMjprB,EAAU/e,KAAK+e,SACI,IAArBA,EAAQowO,WACRnvP,KAAKwosB,UAAY,IAAIlhX,GAAStnV,KAAK+4Y,UAAWh6X,EAAQowO,WAI9D84c,uBACI,MAAM74c,EAAWpvP,KAAK+e,QAAQqwO,SACxBtvL,GAAasvL,GAAY,IAAItvL,WAClB,IAAbsvL,IAAoC,IAAdtvL,IACtB9/D,KAAKyosB,eAAiB,IAAI9U,GAAc3zrB,KAAM8/D,IAItDoooB,wBACI,MAAM94c,EAAWpvP,KAAK+e,QAAQqwO,SACxButJ,GAAcvtJ,GAAY,IAAIutJ,YACnB,IAAbvtJ,IAAqC,IAAfutJ,IACtB38Y,KAAK0osB,gBAAkB,IAAIC,GAAe3osB,KAAM28Y,IAIxDisT,wBACI,MACMx5c,EAAWpvP,KAAK+e,QAAQqwO,SAExButJ,GAAcvtJ,GAAY,IAAIutJ,WAC9BksT,IAJW7osB,KAAK+e,QAAQowO,WAIe,IAAbC,IAAoC,KAFjDA,GAAY,IAAItvL,WAE4C9/D,KAAKq4Y,iBAAiB,CAAEsvR,GAAYF,GAAMC,MACnHohC,KAA0B,IAAb15c,IAAqC,IAAfutJ,KAA0B38Y,KAAKq4Y,iBAAiB,CAAEuvR,GAAYC,GAAMC,KACvGpzpB,GAAU1U,KAAK0U,QAEjB1U,KAAK+osB,kBAAoBF,GAAaC,IACtCp0rB,GAAQvK,MAAM0/b,YAAc7pc,KAAKgpsB,cAAgB,GACjDhpsB,KAAK+osB,kBAAmB,IAChB/osB,KAAK+osB,oBAAsBF,GAAaC,MAChDp0rB,GAAQvK,MAAM0/b,YAAc,OAE5B7pc,KAAK+osB,kBAAmB,GAG5B/osB,KAAKipsB,kBAAkBJ,GAAYC,IAGvCG,iBAAiBxjoB,EAAM47C,GACnB,MAAMiyQ,EAAYtzX,KAAKszX,WAClBA,IAIDA,EAAUihB,YACVjhB,EAAUihB,WAAW9uU,GAGrB6tT,EAAUkhB,YACVlhB,EAAUkhB,WAAWnzR,IAI7B23G,iBACI,MAAQj6M,SAAWg4B,QAASq1E,IAAqBpsH,KACjD,IAAI+2C,EAEJ,OACIA,EADA/2C,KAAKunsB,iBACKvnsB,KAAKkpsB,qBAAqB98kB,GAE1B,IAAIm0C,GAAQvgK,KAAKsgpB,aAAcl0hB,GAGtCr1E,EAGXmypB,qBAAqBnqrB,GACjB,OAAO,IAAIg7qB,GAAc/5rB,KAAK+4Y,UAAWh6X,GAG7Cw8oB,cAAcx8oB,EAAS8mrB,IA4rC3B,YAA2B9mrB,GAAS8mrB,GAChC,MAAMsD,GAAsBtD,GAAgB,IAAI/gU,cAAiB,GACjE,IAAI8M,EAAU9M,EAAc3hI,EAE5B,YAAwBs3Z,IACpB,MAAM2uC,IAAa3uC,IAAe,IAAIl7gB,OAASulP,EAAavlP,MACtDhtI,GAASkooB,GAAW,GACtB0uD,EACAA,EAAkBv3T,GAClB9M,EACAA,EAAa8M,GAAW,CACpBl6T,KAAM,CAAE6nE,MAAO6pjB,IACf5+T,OAAQ,CAAEjrP,MAAO6pjB,IACjBx8oB,MAAO,CAAE2yF,MAAO6pjB,KAEpB3uC,IAGJ,cAAOlopB,GAAOq/X,GAEPr/X,GAGX,QAAS43B,GAAM,EAAGA,GAAMs7pB,GAAW1/rB,OAAQokC,KACvCynW,EAAW6zT,GAAWt7pB,IAAO,OAC7B26V,EAAe/lX,GAAQ+lX,cAAgB,GACvC3hI,EAAO,GAAGxvN,OAAO50B,GAAQ6yX,IAEzBzuI,EAAOA,EAAKx9P,IAAI0jsB,IAEhBtqrB,GAAQ6yX,GAAYzuI,EAAKp9P,OAAS,EAAIo9P,EAAOA,EAAK,IAztClDmmc,CAAkBvqrB,EAAS8mrB,GA6tCnC,YAA6B9mrB,GAAS8mrB,GAClC,MAAM1kc,EAASpiP,GAAQoiP,OACjBooc,EAAepoc,EAAOp7P,OACtBq/X,EAAiBrmX,GAAQqmX,eACzBokU,EAAiB/uD,GAAW,GAAI17nB,GAAQqmX,gBACxCqkU,GAAsB5D,EAAeprD,GAAW,GAAIorD,EAAazgU,gBAAkB,GACnFskU,GAAsBjvD,GAAW,GAAIgvD,IAE3CE,GAA4BH,GAC5BG,GAA4BD,IAE5B,QAAS/6rB,GAAI,EAAGA,GAAI46rB,EAAc56rB,KAAK,CACnC,MAAM61qB,GAAarjb,EAAOxyP,IAAG7G,MAAQiX,GAAQqmX,eAAet9X,KAEtDo/I,GAAcuzf,GAChB,CAAE3noB,KAAM,IACR42rB,GACAD,GAAoBjlB,IACpB,CAAEztoB,QAASh4B,GAAQg4B,SACnByypB,EACApkU,EAAeo/S,KAGnBrjb,EAAOxyP,IAAGw9pB,UAAYjlhB,GACtBi6G,EAAOxyP,IAAK8roB,GAAW,GAAIvzf,GAAai6G,EAAOxyP,KAC/CwyP,EAAOxyP,IAAGmE,KAAOquP,EAAOxyP,IAAGmE,MAAQ,IArvCnC82rB,CAAoB7qrB,EAAS8mrB,GAGjCe,oBACI,MAAM7nrB,EAAU/e,KAAK+e,QACfoiP,EAASpiP,EAAQoiP,OACjB9rG,EAASt2I,EAAQ8lX,cAAgB,GAEvC,QAASl2X,EAAI,EAAGA,EAAIwyP,EAAOp7P,OAAQ4I,IAAK,CACpC,MAAM89pB,EAAgBtra,EAAOxyP,GACvBk7rB,GAAcx0iB,EAAO1mJ,EAAI0mJ,EAAOtvJ,QAChCs8c,GAAWoqN,EAAcN,UAE/BM,EAAclthB,MAAQkthB,EAAclthB,OAASsqjB,GACzCxnP,KACAA,GAAS9iU,MAAQ8iU,GAAS9iU,OAASsqjB,KAK/ChC,YACI,MAAM9orB,EAAU/e,KAAK+e,QACfomX,EAAWnlY,KAAK8psB,kBAChBt+b,EAAQ,IAAIs5Y,GAAY9kpB,KAAK+psB,iBACnCv+b,SAAM+9E,MAAQvpV,KACdwrQ,EAAMutI,UAAY5T,EAElBhjL,cAAiBpjM,EAAQ6tC,MAAO4+M,GAE5BzsP,EAAQkuB,QAAUluB,EAAQkuB,OAAOgnS,SACjCzoE,EAAMt6O,OAAO,IAAIovI,GAAO6kO,EAASpmX,QAAQkuB,OAAQjtC,KAAKsgpB,eAE1D90Y,EAAMt6O,OAAOi0W,GACb35H,EAAM00Y,SAEC10Y,EAGXu+b,gBACI,MAAMhrrB,EAAU/e,KAAK+e,QACfiwC,EAAOhvD,KAAK6msB,UAElB,OAAOpsD,GAAW,CACdz+T,YAAaj9T,EAAQi9T,YACrBtlU,MAAOs4C,EAAKt4C,OzPpdK,IyPqdjBnM,OAAQykD,EAAKzkD,QzPvdK,KyPwdnBwU,EAAQimX,WAGf8kU,gBAAgBE,GACZ,MAAMjrrB,EAAU/e,KAAK+e,QAIrB,OAFiBm4qB,kBAA+B8S,EAAa,GAAKjrrB,EAAQoiP,OAAQpiP,EAAS/e,KAAKsgpB,cAKpGh7kB,kBACI,MAAQyzU,WAAa51I,SAAWnjQ,KAC1BiqsB,EAAajqsB,KAAK+msB,YAAc,GAEtC,QAASp4rB,EAAI,EAAGA,EAAIw0P,EAAKp9P,OAAQ4I,IAAK,CAClC,MAAMw3X,EAAOhjI,EAAKx0P,GACZoQ,EAAUonX,EAAKpnX,QACrB,GAAIonX,aAAgBosR,IAAgBxzoB,EAAQuuB,SAAWvuB,EAAQ/S,SAAU,CACrE,MAAM47D,GAAQu+T,EAAKv+T,QAEb9H,GAAY,IAAI6ga,GAAU3ge,KAAMmmY,EAClCs0Q,GAAW,CAAEhomB,IAAKm1B,GAAMn1B,IAAKjkC,IAAKo5D,GAAMp5D,KAAOuQ,EAAQuuB,SAG3D28pB,EAAWxksB,KAAKq6D,MAK5BoqoB,aAAajhsB,GACT,OAAOjJ,KAAKiK,QAAQ89pB,GAAc9+pB,GAGtCkhsB,QAAQlhsB,GACJ,OAAOjJ,KAAKiK,QAAQ88I,GAAQ99I,GAGhCmhsB,WAAWnhsB,GACP,OAAOjJ,KAAKiK,QAAQ+9pB,GAAY/+pB,GAGpCk9rB,gBACInmsB,KAAKqqsB,cAAgBrqsB,KAAKqmJ,OAAOxgI,KAAK7lB,MACtCA,KAAK83rB,mBAAqB93rB,KAAK+3rB,YAAYlyqB,KAAK7lB,MAChDA,KAAKsqsB,mBAAqBtqsB,KAAK0xrB,YAAY7rqB,KAAK7lB,MAChDA,KAAK2nsB,0BAA4B3nsB,KAAKuqsB,WAAW1krB,KAAK7lB,MACtDA,KAAK4nsB,0BAA4B5nsB,KAAKwqsB,UAAU3krB,KAAK7lB,MAErDA,KAAK4xrB,YAAa6Y,QACdzqsB,KAAK4xrB,WAAW/rqB,KAAK7lB,MA5eT,IAifpB8lsB,YAAYtirB,GACJA,GACAxjB,KAAK6jB,UAAUpe,KAAK+d,GAI5BknrB,eAAelnrB,GACX,MAAMI,EAAQ5jB,KAAK6jB,UAAU/D,QAAQ0D,GACjCI,GAAS,GACT5jB,KAAK6jB,UAAUC,OAAOF,EAAO,GAIrCy0X,iBAAiBsyT,GACb,MAAM9mrB,EAAY7jB,KAAK6jB,UACvB,QAASsmB,EAAM,EAAGA,EAAMtmB,EAAU9d,OAAQokC,IACtC,GAAItmB,EAAUsmB,GAAKkuW,iBAAiBsyT,GAChC,OAAO,EAKnB1gsB,QAAQjF,EAAMi1B,EAAO,IACbj1B,IAASijqB,KACThuoB,EAAKhsB,OAAOwqE,MAAQz4E,KAAK4qsB,uBAAuB3wqB,EAAKhsB,OAAOwqE,QAEhEx+C,EAAK6+T,OAAS94V,KAEd,MAAM6jB,EAAY7jB,KAAK6jB,UACvB,IAAIizW,GAAqB,EACzB,QAAS3sV,EAAM,EAAGA,EAAMtmB,EAAU9d,OAAQokC,IAClCtmB,EAAUsmB,GAAKlgC,QAAQjF,EAAMi1B,KAC7B68V,GAAqB,GAI7B,OAAOA,EAGXyvU,gBACI,MAAM7xrB,EAAU1U,KAAK0U,QAErB1U,KAAKgpsB,aAAet0rB,EAAQvK,MAAM0/b,YAElCt0B,GAAW7ga,EAAS,EACdixrB,IAAe3lsB,KAAKqqsB,eACpB9hC,IAAcvoqB,KAAK83rB,oBACnB8N,IAAc5lsB,KAAKsqsB,qBAGrBtqsB,KAAK6qsB,0BACLt1R,GAAW7ga,EAAS,EAAIgxrB,IAAa1lsB,KAAK4xrB,aAG9C5xrB,KAAKszX,UAAY4hB,UAAwBl1Y,KAAK0U,QAAS,CACnDsY,MAAOhtB,KAAKi4rB,OAAOpyqB,KAAK7lB,MACxBs1H,KAAMt1H,KAAKk4rB,MAAMryqB,KAAK7lB,MACtBsqC,IAAKtqC,KAAKm4rB,KAAKtyqB,KAAK7lB,MACpB4wD,IAAK5wD,KAAKo4rB,KAAKvyqB,KAAK7lB,MACpB8yY,aAAc9yY,KAAKs4rB,cAAczyqB,KAAK7lB,MACtC4yY,cAAe5yY,KAAKu4rB,eAAe1yqB,KAAK7lB,MACxC6yY,WAAY7yY,KAAKw4rB,YAAY3yqB,KAAK7lB,QAGtCA,KAAK4osB,wBAGTlX,YAAYzorB,GACJjJ,KAAK8qsB,gBACL9qsB,KAAK8qsB,cAAc3mrB,IAAInkB,KAAMiJ,GAC7BjJ,KAAK8qsB,cAAgB,MAGrB9qsB,KAAK+4Y,UAAU6uN,UACf5nmB,KAAKiK,QAAQu9pB,IACbxnqB,KAAK+4Y,UAAU6uN,SAAU,GAIjCygG,mBACQrosB,KAAKszX,WAAatzX,KAAKszX,UAAU/L,QACjCvnX,KAAKszX,UAAU/L,SAIvB+wU,cAAcrvrB,GACNjJ,KAAK0osB,kBAAoB1osB,KAAK+qsB,mBAAmB9hsB,KACjDjJ,KAAKgrsB,iBAAmB/hsB,EAAEy4E,SAC1B1hF,KAAK61rB,oBACL71rB,KAAK+3Y,QAAQkzT,mBAIrBzS,YAAYvvrB,GACJjJ,KAAKkrsB,WAAalrsB,KAAK+qsB,mBAAmB9hsB,KACtCjJ,KAAK+3Y,SACL/3Y,KAAK+3Y,QAAQozT,iBAEjBnrsB,KAAKkrsB,UAAW,EAChBlrsB,KAAKiK,QAAQ69pB,GAAU,KAI/BywB,eAAetvrB,GACX,MAAMmisB,EAAiBprsB,KAAK0osB,gBAE5B,GAAI0C,IAAmBprsB,KAAK+qsB,mBAAmB9hsB,GAAI,CAC/CA,EAAEi5C,iBAEF,IAAImppB,GAAcpisB,EAAEy4E,SADY1hF,KAAKgrsB,iBACoB,EAEzD,GAAI99rB,KAAKiN,IAAIkxrB,IAAe,GAAK,CAC7BA,EAAan+rB,KAAK4zF,MAAmB,GAAbuqmB,GAExBrrsB,KAAKgrsB,iBAAmB/hsB,EAAEy4E,SAC1B,MAAMznD,EAAO,CAAE81F,MAAOs7kB,EAAYjlU,WAAYA,GAAWpmY,KAAK+4Y,UAAU51I,MAAO9tI,cAAepsH,GAC9F,GAAIjJ,KAAKkrsB,WAAalrsB,KAAKiK,QAAQ29pB,GAAY3toB,GAAO,CAClD,MAAM4+C,GAAS74E,KAAKssrB,kBAAkBrjrB,GAEjCjJ,KAAKkrsB,WACNlrsB,KAAKkrsB,UAAW,IAGLjxqB,EAAKmsW,WAAaglU,EAAexX,aAAayX,EAAYxynB,OAC1D74E,KAAKiK,QAAQ49pB,GAAM5toB,IAC9BmxqB,EAAe/plB,UAOnCmplB,UAAUvhsB,GACN,GAAIA,EAAEyL,QAAS,CACX,MAAMA,EAAU1U,KAAKsrsB,qBAAqBrisB,EAAEyL,QAASzL,GAEjDyL,GAAWA,EAAQ47X,OACnB57X,EAAQ47X,MAAMtwY,KAAMiJ,EAAEosH,gBAKlC4ikB,OAAOhvrB,GACH,MAAM4vE,EAAS74E,KAAKssrB,kBAAkBrjrB,GAElCjJ,KAAK+qsB,mBAAmB9hsB,KAAOjJ,KAAK+4Y,UAAUypS,wBAAwB3pmB,KAKtE74E,KAAKq4Y,iBAAiB,CAAEsvR,GAAYF,GAAMC,MAC1C1nqB,KAAKursB,iBAAiBtisB,EAAG4vE,EAAQ8ulB,IAGjC3nqB,KAAKwosB,WAAaxosB,KAAKwosB,UAAUx7qB,MAAM/jB,KACvCjJ,KAAK+3Y,QAAQkzT,kBACbjrsB,KAAK61rB,oBACL71rB,KAAKwrsB,gBAAiB,EACtBxrsB,KAAKsgpB,aAAa8W,SAAU,GAG5Bp3pB,KAAKyosB,gBACDzosB,KAAKyosB,eAAez7qB,MAAM/jB,IAC1BjJ,KAAKiK,QAAQ29pB,GAAY,CAAExhS,WAAYA,GAAWpmY,KAAK+4Y,UAAU51I,MAAO9tI,cAAepsH,KAKnGivrB,MAAMjvrB,GACF,IAAMm/rB,UAAWl+rB,EAAOs+rB,UAAWr5c,GAAanvP,KAEhD,IAAIA,KAAK+qsB,mBAAmB9hsB,GAI5B,IAAIkmP,EAAU,CACV,MAAMiyO,EAASjyO,EAAS75H,KAAKrsH,GAEzBm4d,IAAWphe,KAAKiK,QAAQw9pB,GAAM,CAAErhS,WAAYg7F,EAAQ/rW,cAAepsH,KACnEkmP,EAASsla,cAENvqpB,EAAO,CACd,MAAMk3d,EAAS,GACTj+N,EAAOj5P,EAAMi5P,KAEnB,QAASx0P,GAAI,EAAGA,GAAIw0P,EAAKp9P,OAAQ4I,KAAK,CAClC,MAAMusqB,GAAc/3a,EAAKx0P,IAEzB,GADiBusqB,GAAYn8pB,QAAQ/Z,KACvB,CACV,MAAMmhY,GAAO+0S,GAAYn8pB,QAAQ/S,SAAW/C,EAAE6qD,EAAI7qD,EAAEU,EAC9ComH,GAAQo2Q,GAAK+N,cAAgB/N,GAAK/hW,SAE1B,IAAV2rF,KACAqxW,EAAO85M,GAAYn8pB,QAAQ/Z,MAAQk2qB,GAAY9mB,eAAerkiB,MAK1E7lH,EAAMk8X,WAAag7F,EACnBphe,KAAKiK,QAAQw9pB,GAAM,CACfrhS,WAAYg7F,EACZ/rW,cAAepsH,IAInBjJ,KAAKyosB,gBACLzosB,KAAKyosB,eAAenzkB,KAAKrsH,IAIjCkvrB,KAAKlvrB,GACD,GAAIjJ,KAAK+qsB,mBAAmB9hsB,GACxB,OAGJ,MAAMkmP,EAAWnvP,KAAKwosB,UAatB,GAZIr5c,GAAYA,EAAS7kN,IAAIrhC,IACzBjJ,KAAK+3Y,QAAQozT,iBACbnrsB,KAAKiK,QAAQy9pB,GAAU,CACnBthS,WAAYA,GAAWpmY,KAAK+4Y,UAAU51I,MACtC9tI,cAAepsH,IAEnBjJ,KAAKwrsB,gBAAiB,EACtBxrsB,KAAKsgpB,aAAa8W,SAAU,GAE5Bp3pB,KAAKyrsB,eAAexisB,EAAGy+pB,IAGvB1nqB,KAAKyosB,eAAgB,CACrB,MAAMrnO,EAASphe,KAAKyosB,eAAen+pB,IAAIrhC,GACnCm4d,IAAWphe,KAAKiK,QAAQ49pB,GAAM,CAAEzhS,WAAYg7F,EAAQ/rW,cAAepsH,MACnEjJ,KAAKyosB,eAAepnlB,OACpBrhH,KAAKiK,QAAQ69pB,GAAU,CAAE1hS,WAAYg7F,EAAQ/rW,cAAepsH,MAKxE8hsB,mBAAmB9hsB,GACf,MAAMghsB,EAAajqsB,KAAK+msB,aAAe,GACvC,IAAKkD,EAAWlksB,OACZ,OAAO,EAGX,MAAM8yE,EAAS74E,KAAKssrB,kBAAkBrjrB,GAChC+wY,EAAOh6Y,KAAK+4Y,UAAUiqS,YAAYnqmB,GACxC,GAAImhU,EACA,QAAS7vW,EAAM,EAAGA,EAAM8/pB,EAAWlksB,OAAQokC,IACvC,GAAI8/pB,EAAW9/pB,GAAKmtpB,OAAOt9S,GACvB,OAAO,EAMvB0xT,sBAGI,OAAOrwD,KAFUr7oB,KAAK+e,QAAQqwO,UACE,IAAIutJ,YAAc,IACjB1lJ,K7I1rBZ,I6I6rBzB8gc,YAAY9urB,GACR,MAAM8mH,EAAQipkB,GAAgB/vrB,GACxBmisB,EAAiBprsB,KAAK0osB,gBACtB7vnB,EAAS74E,KAAKssrB,kBAAkBrjrB,GAEtC,IAAIjJ,KAAK+qsB,mBAAmB9hsB,IAAOjJ,KAAK+4Y,UAAUypS,wBAAwB3pmB,GAI1E,GAAIuynB,EAAgB,CAChB,MAAMnxqB,EAAO,CAAE81F,MAAOA,EAAOq2Q,WAAYA,GAAWpmY,KAAK+4Y,UAAU51I,MAAO9tI,cAAepsH,IACrFjJ,KAAKkrsB,WAAalrsB,KAAKiK,QAAQ29pB,GAAY3toB,MAC3ChxB,EAAEi5C,iBAEGliD,KAAKkrsB,WACNlrsB,KAAK61rB,oBACL71rB,KAAK+3Y,QAAQkzT,kBACbjrsB,KAAKkrsB,UAAW,GAGhBlrsB,KAAKy4rB,YACLxxqB,aAAajnB,KAAKy4rB,YAGtBx+pB,EAAKmsW,WAAaglU,EAAexX,aAAa7jkB,EAAOl3C,GACjD5+C,EAAKmsW,aAAepmY,KAAKiK,QAAQ49pB,GAAM5toB,IACvCmxqB,EAAe/plB,OAGnBrhH,KAAKy4rB,WAAavmrB,WAAW,KACzBlS,KAAKiK,QAAQ69pB,GAAU7toB,GACvBj6B,KAAKkrsB,UAAW,EACZlrsB,KAAK+3Y,SACL/3Y,KAAK+3Y,QAAQozT,kB7I/tBZ,U6ImuBV,CACH,IAAIjhsB,EAAQlK,KAAKoosB,UAQjB,GAPKl+rB,GACiBlK,KAAKursB,iBAAiBtisB,EAAG4vE,EAAQ+ulB,MAE/C19pB,EAAQlK,KAAKoosB,WAIjBl+rB,EAAO,CACP,MAAMyhsB,GAAazhsB,EAAMyhsB,YAAc57kB,EACvC7lH,EAAMyhsB,WAAaA,GAAa57kB,EAEhC,MAAMozI,GAAOnjQ,KAAKoosB,UAAUjlc,KACtBi+N,GAAS,GAEf,QAASzyd,GAAI,EAAGA,GAAIw0P,GAAKp9P,OAAQ4I,KAAK,CAClC,MAAMusqB,GAAc/3a,GAAKx0P,IACnBijY,GAAWspS,GAAYn8pB,QAAQ/Z,KACjC4sY,KACAwvF,GAAOxvF,IAAYspS,GAAY7mB,YAAYs3C,GAAa3rsB,KAAK0rsB,sBAAuB7ynB,IAI5F74E,KAAKiK,QAAQ49pB,GAAM,CACf93iB,MAAOA,EACPq2Q,WAAYg7F,GACZ/rW,cAAepsH,IAGfjJ,KAAKy4rB,YACLxxqB,aAAajnB,KAAKy4rB,YAGtBz4rB,KAAKy4rB,WAAavmrB,WAAW,KACzBlS,KAAKyrsB,eAAexisB,EAAG6+pB,K7ItwBlB,O6I4wBrByjC,iBAAiBtisB,EAAG4vE,EAAQ+ynB,GACxB,MAAMzmU,EAAWnlY,KAAKmvnB,OAAOp2O,UACvBiB,EAAO7U,EAAS+4S,cAAcrlmB,GAC9BsqL,GAAOgiI,EAAShiI,KAAKv0P,MAAM,GAEjC,IAAKorY,EACD,OAGJ,MAAMonF,GAASh7F,GAAWjjI,IAERnjQ,KAAKiK,QAAQ2hsB,EAAY,CACvCxlU,WAAYg7F,GACZ/rW,cAAepsH,IAIfjJ,KAAKqosB,oBAELrosB,KAAKwrsB,gBAAiB,EACtBxrsB,KAAK61rB,oBACL71rB,KAAKoosB,UAAY,CACbhiU,WAAYg7F,GACZpnF,KAAMA,EACN72I,KAAMA,KAKlBsoc,eAAexisB,EAAG2isB,GACV5rsB,KAAKoosB,YACLposB,KAAKiK,QAAQ2hsB,EAAY,CACrBxlU,WAAYpmY,KAAKoosB,UAAUhiU,WAC3B/wQ,cAAepsH,IAEnBjJ,KAAKwrsB,gBAAiB,EACtBxrsB,KAAKoosB,UAAY,MAIzByD,iBAAiB5isB,EAAGsY,GAChB,MAAM7M,EAAU1U,KAAK+3Y,QAAQtxV,YAAYx9C,GACzC,GAAIyL,EACA,OAAO1U,KAAKsrsB,qBAAqB52rB,EAASzL,EAAGsY,GAIrD+prB,qBAAqB52rB,EAASzL,EAAGsY,GAC7B,IACIw3U,EADA1yT,EAAU3xB,EAEd,KAAO2xB,IAAY0yT,GACfA,EAAe1yT,EAAQ0yT,aACvB1yT,EAAUA,EAAQg2U,OAGtB,GAAItjB,EACA,OAAIA,EAAa0vT,WACb1vT,EAAeA,EAAa0vT,SAASx/oB,EAAGjJ,KAAKssrB,kBAAkBrjrB,KAG/DsY,IACAw3U,EAAeA,EAAa14S,QAAQ9+B,GAChCw3U,GAAgBA,EAAa0vT,WAC7B1vT,EAAeA,EAAa0vT,aAI7B1vT,EAIfuzV,kBAAkBrjrB,GACd,MAAM6/F,EAAcmyiB,GAAiBhyoB,GACrC,OAAOjJ,KAAKi5rB,oBAAoBnwlB,EAAYn/F,EAAGm/F,EAAYh1C,GAG/Dj/C,kBACI,IAAK7U,KAAK8rsB,SAAU,CAChB,MAAQ71rB,cAAa4oD,cAAemynB,GAAchxrB,KAAK0U,QAAS,CAAE,cAAe,eACjF1U,KAAK8rsB,SAAW,CACZ39kB,IAAKtvD,EACLuQ,KAAMn5D,GAId,OAAOjW,KAAK8rsB,SAGhBlB,uBAAuBnynB,GACnB,MAAM+sE,EAAUxlJ,KAAK6U,kBACfud,EAASk6gB,GAActsiB,KAAK0U,SAElC,MAAO,CACH06D,KAAM0xB,GAAMroB,EAAM9uE,EAAI67I,EAAQp2E,KAAOh9C,EAAOg9C,MAC5C++C,IAAKrtB,GAAMroB,EAAM3kB,EAAI0xF,EAAQr3B,IAAM/7F,EAAO+7F,MAMlD8qkB,oBAAoB9/V,EAASE,GACzB,MAAM3kV,EAAU1U,KAAK0U,QACf0d,EAASk6gB,GAAc53hB,GACvB8wI,EAAUxlJ,KAAK6U,kBACfk3rB,GzN17BC,YAAsBr3rB,IACjC,IAAKA,GACD,OAAOgnoB,GAAOj3mB,OAGlB,IAAIsgG,EAASinkB,GAAgBt3rB,IACzB2nW,EAAS3nW,GAAQu7X,cACrB,KAAO5zB,GAAQ,CACX,MAAM4vV,EAAeD,GAAgB3vV,GACrCt3O,EAASA,EAAOmnkB,aAAaD,GAC7B5vV,EAASA,EAAO4zB,cAGpBlrQ,SAAO7yG,EAAI6yG,EAAO9kH,EAAI8kH,EAAO97H,EAAI87H,EAAOn/H,EAAI,EACrCm/H,EyN46BsBonkB,CAAaz3rB,GAAS03rB,SACzC3znB,GAAQ,IAAIywB,KACdiwP,EAAU/mU,EAAOg9C,KAAOo2E,EAAQp2E,KAChCiqR,EAAUjnU,EAAO+7F,IAAMq3B,EAAQr3B,KACjC9jH,UAAU0hsB,IAEZ,OAAO,IAAI7xnB,GAAMzB,GAAM9uE,EAAG8uE,GAAM3kB,GAGpCskoB,KAAKnvrB,GACD,MAAMojsB,EAAiBrssB,KAAK+3Y,QAAQtxV,YAAYx9C,GAC1CyL,EAAU1U,KAAKsrsB,qBAAqBe,EAAgBpjsB,GACpDqjsB,EAAgBtssB,KAAKunsB,kBAEtBvnsB,KAAKussB,YAAYF,EAAgBpjsB,KAAOqjsB,GACzCtssB,KAAK61rB,oBAGLyW,GACAtssB,KAAKwssB,oBAAoBxssB,KAAKssrB,kBAAkBrjrB,GAAIA,GAAG,GAG3DjJ,KAAKyssB,gBAAgB/3rB,EAASzL,GAG9BjJ,KAAK44Y,aAAc,EACnB1mY,WAAW,KACPlS,KAAK44Y,aAAc,GACpB,GAGPvyP,OAAOp9I,GACH,MAAMyL,EAAU1U,KAAK6rsB,iBAAiB5isB,GACtCjJ,KAAKyssB,gBAAgB/3rB,EAASzL,GAGlCwjsB,gBAAgB/3rB,EAASzL,GACrB,IAAIo9B,EAAU3xB,EACd,KAAO2xB,GACCA,EAAQolC,OACRplC,EAAQolC,MAAMzrE,KAAMiJ,GAGxBo9B,EAAUA,EAAQg2U,OAI1BkwV,YAAY73rB,EAASzL,GACjB,GAAIjJ,KAAKwrsB,eACL,OAAO,EAGX,IAAI/ynB,EAAQz4E,KAAKsrsB,qBAAqB52rB,EAASzL,EAAG,SAASyL,IACvD,OAAQA,GAAQ00lB,OAAS10lB,GAAQ+tN,SAAW/tN,cAAmB4uqB,MAGnE,MAAMopB,EAAc1ssB,KAAK2ssB,aACnBC,EAAiB5ssB,KAAK+4Y,UAAU53I,OAAOp7P,OAAS,EAChD8msB,GAAqB7ssB,KAAK8ssB,sBAEhC,YAAKC,oBAAoBt0nB,EAAOxvE,GAE5BwvE,GAASi0nB,IAAgBj0nB,GAASA,EAAM2whB,OACxCppmB,KAAK2ssB,aAAel0nB,GAEfz4E,KAAKunsB,mBAAqB9unB,EAAM2whB,MAAMppmB,KAAMiJ,KAC7CjJ,KAAKgtsB,gBAAgBv0nB,GAErBinkB,GACI1/oB,KAAKitsB,wBAAwBx0nB,EAAOm0nB,GAEpC5ssB,KAAK4hpB,WAAWp0oB,KAAKirE,MAGrBA,GAASo0nB,KACbD,GAAkB5ssB,KAAKktsB,uBACvBltsB,KAAKmtsB,qBAAqB10nB,GAAO,GACjCz4E,KAAKotsB,oBAAoBptsB,KAAKktsB,qBAAqB1uoB,SAAU,MAAM,GACnEx+D,KAAKktsB,qBAAuB,MAEhCltsB,KAAK4hpB,YAAc5hpB,KAAK4hpB,WAAW/jlB,OACnC79D,KAAK2ssB,aAAe,MAGjBl0nB,EAGXu0nB,gBAAgBv0nB,GAER2zC,GAD8B,GAAIpsH,KAAK+e,QAAQg4B,QAAS0hC,EAAM15D,QAAQg4B,SACvDk9R,SACfj0U,KAAKwnsB,SAASh6rB,KAAKirE,GAI3Bw0nB,wBAAwBP,EAAaE,EAAgBS,GACjD,MAAMC,EAAgBttsB,KAAKktsB,qBAAuBltsB,KAAKutsB,wBAAwBb,GAC/E,GAAKY,EAIL,GAAIV,EACA5ssB,KAAKmtsB,qBAAqBT,GAC1B1ssB,KAAKotsB,oBAAoBE,EAAc9uoB,SAAU,MAAM,GACvDx+D,KAAKotsB,oBAAoBE,EAAc9uoB,SAAUkuoB,EAAYvrc,QAC7DnhQ,KAAK4hpB,WAAWp0oB,KAAK6/rB,GAAmBX,OACrC,CACH,IAAIc,EAEJ,IAAKF,EAAcprD,+BAEf,YADAlipB,KAAK4hpB,WAAWp0oB,KAAKk/rB,GAIzBc,EAAiBxtsB,KAAKytsB,mBAAmBf,EAAaY,GAElDE,GAAkBA,EAAeznsB,QACjC/F,KAAK4hpB,WAAWp0oB,KAAKggsB,EAAgB,EAAIxtsB,KAAK0tsB,6BAA6BhB,EAAYvrc,UAKnGssc,mBAAmBf,EAAaY,GAG5B,OAFgBttsB,KAAK2tsB,oBAAoBL,EAAeZ,EAAY5ssB,aAEnDiN,OAAO0rE,GAASA,IAAUi0nB,GAG/CiB,oBAAoBlwiB,EAAW31J,GAC3B,IAAIg4E,EAAS,GAEb,QAASnxE,EAAI,EAAGA,EAAI8uJ,EAAUj/F,SAASz4D,OAAQ4I,IAAK,CAChD,MAAM+F,EAAU+oJ,EAAUj/F,SAAS7vD,GAE/B+F,EAAQ5U,cAAgBgI,EACxBg4E,EAAOr6E,KAAKiP,GACLA,EAAQ8pD,UAAY9pD,EAAQ8pD,SAASz4D,SAC5C+5E,EAASA,EAAOnsC,OAAO3zC,KAAK2tsB,oBAAoBj5rB,EAAS5M,KAIjE,OAAOg4E,EAGXitnB,oBAAoBt0nB,EAAOxvE,GACvB,MAAM2ksB,EAAe5tsB,KAAK8qsB,cAEtB8C,GAAgBA,IAAiBn1nB,IACjCm1nB,EAAazprB,IAAInkB,KAAMiJ,GACvBjJ,KAAK8qsB,cAAgB,MAGrBrynB,GAASm1nB,IAAiBn1nB,GAASA,EAAMgqJ,OACzCziO,KAAK8qsB,cAAgBrynB,EACrBA,EAAMgqJ,KAAKziO,KAAMiJ,IAIzBkksB,qBAAqB10nB,EAAOo1nB,GACxB,MAAM1oU,EAAWnlY,KAAK+4Y,UAChBhzY,EAASo/X,EAAShkI,OAAOp7P,OAE/B,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMm/rB,GAAa3oU,EAAShkI,OAAOxyP,GAC7Bo/rB,GAAiB/tsB,KAAKgusB,4BAA4BF,IAClDtgU,GAAkBxtY,KAAK0tsB,6BAA6BI,IAErDD,GAAgBC,KAAer1nB,EAAM0oL,QAQtC2sc,GAAW1jsB,QAAU2jsB,GAEjBD,GAAWp2nB,OACXo2nB,GAAWp2nB,KAAKttE,QAAU2jsB,MAV9BD,GAAWC,eAAiBA,GAC5BD,GAAW1jsB,QAAUojY,GAEjBsgU,GAAWp2nB,OACXo2nB,GAAWp2nB,KAAKttE,QAAUojY,MAY1C4/T,oBAAoBvkoB,EAAUoloB,EAAc3piB,EAAO68F,GAC/C,QAASxyP,EAAI,EAAGA,EAAIk6D,EAAS9iE,OAAQ4I,IAAK,CACtC,MAAM+F,GAAUm0D,EAASl6D,GACnBm/rB,GAAap5rB,GAAQysP,QAAUA,EAGrC,GAAI+sc,KAFmCJ,GAAWvjU,WAAa,IAAIt2D,SAE5Cv/T,GAAQkvP,OAAQ,CACnC,MAAMx5P,GAAU+2P,EAASA,EAAO/2P,QAAUsK,GAAQysP,OAAO/2P,SACrD0jsB,KAAeG,GAAgB3piB,IAC/B5vJ,GAAQkvP,OAAOx5P,QAAQk6J,EAAQ,EAAIl6J,IAIvCsK,GAAQ8pD,UAAY9pD,GAAQ8pD,SAASz4D,QACrC/F,KAAKotsB,oBAAoB14rB,GAAQ8pD,SAAUyvoB,EAAc3piB,EAAO5vJ,GAAQysP,SAKpFosc,wBAAwB90nB,GACpB,IAAI60nB,EAAgB70nB,EAAM4jS,OAE1B,KAAOixV,IAAkBA,EAAcnoU,UACnCmoU,EAAgBA,EAAcjxV,OAGlC,OAAOixV,EAGXR,sBACI,IAAIqB,OAAsFhpsB,IAA1DnF,KAAK+e,QAAQqmX,eAAemF,UAAUiD,gBAClEq/T,EAAqB7ssB,KAAK+e,QAAQoiP,OAAOp0P,OAAOlG,QAAqC1B,IAAhC0B,EAAE0jY,UAAUiD,iBAAgCznY,OAAS,EAC9G,OAAOoosB,GAA6BtB,EAGxCa,6BAA6Bvsc,GAGzB,OAAOitc,EAD4B7jU,UAAUiD,iBADhBxtY,KAAK+e,QAAQqmX,eAAemF,UAAUiD,iBAETrsI,EAAO/2P,SzP1oCnC,EyP6oClC4jsB,4BAA4B7sc,GACxB,OAAOA,EAAO4sc,gBAAkB5sc,EAAO/2P,SzP9oCT,EyPipClCmgsB,WAAWthsB,GACP,MAAMwvE,EAAQz4E,KAAKussB,YAAYtjsB,EAAEyL,QAASzL,EAAEosH,eAExC58C,GAASA,EAAMm1lB,kBAAoB5tqB,KAAKqusB,yBAA2BrusB,KAAKunsB,mBACxEvnsB,KAAKqusB,uBAAyBrusB,KAAKsusB,mBAAmBzorB,KAAK7lB,MAC3Du1a,GAAW5zZ,SAAU,EACf+jrB,IAAa1lsB,KAAKqusB,0BAKhCC,mBAAmBrlsB,GACf,MAAQ8V,UAASyorB,SAAUzwpB,EAAS6qmB,WAAYr3Q,EAAWoiU,aAAcl0nB,GAAUz4E,KAC7E64E,GAAS74E,KAAKssrB,kBAAkBrjrB,GAEtC,GAAIjJ,KAAK+4Y,UAAU98Q,IAAIlrB,cAAcl4B,KACjC,GAAIJ,GAASA,EAAMm1lB,iBAAmBn1lB,EAAM0oL,QAAU1oL,EAAM4jS,OAAO4yT,gBAAiB,CAChF,MAAMs/B,GAAc91nB,EAAM4jS,OAAO4yT,gBAAgBp2lB,GAAOlvE,EAAGkvE,GAAO/kB,EAAG2kB,EAAMwxlB,UACvEskC,IAAeA,KAAgB91nB,IAC/Bz4E,KAAK2ssB,aAAe4B,GAEfA,GAAYnlG,MAAMppmB,KAAMiJ,KACFwxoB,GAAW,GAAI17nB,EAAQg4B,QAASw3pB,GAAYxvrB,QAAQg4B,SACxDk9R,SACfl9R,EAAQvpC,KAAK+gsB,IAGjBhkU,EAAU/8X,KAAK+gsB,YAK3BnzD,GAAaz5nB,SAAU,EACjB+jrB,IAAa1lsB,KAAKqusB,yBAExBrusB,KAAK61rB,oBACL71rB,KAAKqusB,uBAAyB,KAItCzc,WAAW3orB,GACP,MAAM4vE,EAAS74E,KAAKssrB,kBAAkBrjrB,GAChCk8X,EAAWnlY,KAAK+4Y,UAItB,GAFA/4Y,KAAKwusB,iBAAiB31nB,GAElBssT,EAASikO,MAAO,CAChB,MAAMqlG,EAAetpU,EAASq9S,wBAAwB3pmB,GAClD41nB,GACAtpU,EAASyiO,SAAU,EACnB5nmB,KAAK+4Y,UAAUqwN,MAAMppmB,KAAMiJ,IACpBk8X,EAASyiO,UAAY6mG,IAC5BzusB,KAAKiK,QAAQu9pB,IACbriS,EAASyiO,SAAU,GAIvB5nmB,KAAKunsB,kBACLvnsB,KAAKwssB,oBAAoB3znB,EAAQ5vE,GAIzCulsB,iBAAiB31nB,GACb,MAAMykmB,EAAat9qB,KAAK+4Y,UAAUukS,WAElC,QAAS3uqB,EAAI,EAAGA,EAAI2uqB,EAAWv3qB,OAAQ4I,IAAK,CACxC,MAAM03B,EAAUi3oB,EAAW3uqB,GAEvB03B,EAAQ41F,IAAIlrB,cAAcl4B,GAC1BxyC,EAAQs0oB,OAAO9hmB,GAEfxyC,EAAQw3B,QAKpB2uoB,oBAAoB3znB,EAAQ5vE,EAAG6/O,GAC3B,GAAI9oP,KAAKwrsB,eACL,OAGJ,MAAQzsrB,SAAWg4B,QAASq1E,GAAkB2sR,UAAW5T,EAAU4T,WAAahU,iBAAgByiU,SAAUzwpB,GAAS6qmB,WAAYr3Q,IAAcvqY,KAE7I,GAAImlY,EAASq9S,wBAAwB3pmB,GAAS,CAC1C,MAAMj1D,GAAQmhX,GAAagvR,mBAAmBl7kB,GAC9C,GAAIj1D,KAAU5jB,KAAK0usB,qBAAwB1usB,KAAK2usB,kBAAoB7ld,EAAS,CACzE,MAAMhpK,GAASqlT,EAASw9S,sBAAsB/+pB,IACxCgrrB,GAAY9unB,GAAOn6E,IAAI,SAAS8yE,IAClC,OAAOA,GAAMhiB,UAAUxtD,KAErB4lsB,GAAYD,GAAU,IAAM,GAClCC,GAAUllC,eAAiBilC,GAEvB9unB,GAAO/5E,OAAS,IAAM/F,KAAKiK,QAAQq9pB,GAAcunC,KAC7CzilB,EAAe6nN,SACfl9R,GAAQ4joB,OAAO76lB,GAAQjH,GAG3B0xT,GAAU/8X,KAAKsyE,IAEf9/E,KAAK2usB,kBAAmB,GAExB53pB,GAAQ8mB,OAGZ79D,KAAK0usB,mBAAqB9qrB,QACnBklO,GAAU9oP,KAAK2usB,mBACtBpkU,GAAU1sU,OACV9mB,GAAQ8mB,OACR79D,KAAK2usB,kBAAmB,QAErB3usB,KAAK2usB,mBACZpkU,GAAU1sU,OACV9mB,GAAQ8mB,OACR79D,KAAK0usB,mBAAqB,KAC1B1usB,KAAK2usB,kBAAmB,GAIhCh2T,aAAa55X,GACT,MAAMomX,EAAWnlY,KAAK+4Y,UACtB/4Y,KAAK4xrB,WAAWrqU,SAEhB4d,EAAS44S,iBAET/9qB,KAAK61rB,kBAAkB92qB,GAG3B82qB,kBAAkB92qB,GACd,MAAQyorB,SAAUzwpB,EAAS6qmB,WAAYr3Q,GAAcvqY,KAErDA,KAAK2ssB,aAAe,KACpB3ssB,KAAK8qsB,cAAgB,KAEjB/zpB,KAAah4B,GAAWA,EAAQ+vrB,kBAChC/3pB,EAAQ8mB,OAGZ79D,KAAK0usB,mBAAqB,KAC1B1usB,KAAK2usB,kBAAmB,EAEpBpkU,GACAA,EAAU1sU,OAIlBkxoB,eACI/usB,KAAKsmsB,UAGT0I,sBACQhvsB,KAAKivsB,iBACL5zhB,cAAcr7K,KAAKivsB,gBACnBjvsB,KAAKivsB,eAAiB,MAI9BnpT,iBACI,MACMr8C,EAAc,GAAG91T,OADP3zC,KAAK+e,QACiBgmX,cAEtC,QAASk6S,EAAS,EAAGA,EAASx1U,EAAY1jW,OAAQk5qB,IAAU,CACxD,MAAM94S,EAAO18B,EAAYw1U,IACH,IAAlB94S,EAAK+oU,UACLlvsB,KAAKmvsB,2BAA2BhpU,EAAM84S,IAKlDkwB,2BAA2BhpU,EAAM84S,GAC7B,MAAM99a,EAASnhQ,KAAK+e,QAAQoiP,OACtBooc,EAAepoc,EAAOp7P,OACtBqpsB,EAAmB,IAAIn6C,GAC7B,IAEIg1B,GAFAz3nB,GAAQ,GACR68oB,IAAW,EAGf,QAASplC,GAAW,EAAGA,GAAWs/B,EAAct/B,KAAY,CACxD,MAAMpjqB,GAAIs6P,EAAO8oa,IACXqlC,GAASzosB,GAAEk+X,eAAiBoB,EAAKnhY,OAAU6B,GAAEk+X,cAA2B,IAAXk6S,EAC7DnsqB,GAAOjM,GAAEiM,KACT68a,GAAa78a,GAAK/M,OAClB8f,GAAOhf,GAAEygY,eAAiBgoU,GAGhC,GAFAD,GAAWxprB,IAAQwprB,GAEfxprB,IAAQ8pa,GAAa,EAAG,CACxBs6P,GAAWslB,GAAWppU,EAAMysF,GAAS/rd,GAAEygY,cAAex0X,GAAK,KAE3D,MAAMq3qB,GAAQF,GAAWG,GAAex3N,GAExC,QAAS48O,GAAS,EAAGA,GAAS7/Q,GAAY6/Q,KAAU,CAChD,MAAMC,GAAU38rB,GAAK08rB,IACfpuc,GAAW+ob,GAAMtjrB,GAAEygY,cAAemoU,GAASzvsB,KAAKsgpB,aAAa/8e,OAE/D0mhB,KAAamlB,EAAiBvwrB,IAAIuiP,OAClC5uM,GAAM/sD,KAAK,CAAE27P,GAAUquc,KAElBxlB,IACDmlB,EAAiB/8qB,IAAI+uO,IAAU,MAOnD,GAAI5uM,GAAMzsD,OAAS,EAAG,CACdkkrB,KACAz3nB,GA0VhB,WAAqBk9oB,GAAU3qX,EAAWkzU,IACtC,MAAMp+oB,EAZV,YAAmBA,GAAOkrU,EAAWkzU,IACjC,QAAStppB,EAAI,EAAG5I,EAAS8T,GAAM9T,OAAQ4I,EAAI5I,EAAQ4I,IAC/C,GAAIo2U,EAASlrU,GAAMlL,GAAIkL,GAAMlL,EAAI,IAAM,EAAG,CACtCkL,GAAMC,KAAKirU,GACX,MAIR,OAAOlrU,GAIO+2Z,CAAU8+R,GAAU3qX,GAC5Bh/U,EAAS8T,EAAM9T,OACfwM,EAASxM,EAAS,EAAI,CAAE8T,EAAM,IAAO,GAE3C,QAASlL,EAAI,EAAGA,EAAI5I,EAAQ4I,IACiB,IAArCo2U,EAASlrU,EAAMlL,GAAI2oH,GAAK/kH,KACxBA,EAAO9M,KAAKoU,EAAMlL,IAI1B,OAAO4D,EArWa0H,CAAYu4C,GAAO,SAASrgC,GAAGD,IACnC,OAAO+loB,GAAa9loB,GAAE,GAAID,GAAE,OAIpC,MAAM3f,GAmWlB,WAAmBzG,IACf,MAAM6jsB,EAAW7jsB,GAAK/F,OAChBwM,EAAS,GAEf,QAASq9rB,EAAQ,EAAGA,EAAQD,EAAUC,IAAS,CAC3C,MAAM1iqB,EAAMphC,GAAK8jsB,GACXjwO,EAAWzyb,EAAInnC,OAErB,QAAS8psB,GAAQ,EAAGA,GAAQlwO,EAAUkwO,KAClCt9rB,EAAOs9rB,IAASt9rB,EAAOs9rB,KAAU,GACjCt9rB,EAAOs9rB,IAAOpqsB,KAAKynC,EAAI2iqB,KAI/B,OAAOt9rB,EAjXgBu9rB,CAAUt9oB,IACzB2zU,EAAK52I,WAAah9O,GAAO,QAClB88rB,KACPlpU,EAAK52I,WAAa,IAI1Bwgd,YAAY5uc,GACR,MAAMmha,EAAce,uBAAiClia,GACrD,IAAI5uP,GAAS,EAEb,QAAS5D,EAAI,EAAGA,EAAI2zpB,EAAYv8pB,OAAQ4I,IAAK,CACzC,IAAIk8C,EAAQy3mB,EAAY3zpB,GAOxB,GANIk8C,IAAUyulB,GACVzulB,EAAQ,QAERA,GAAgB,SAGf+/iB,GAAQzpW,EAAOt2M,IAAS,CACzBt4C,GAAS,EACT,OAIR,OAAOA,EAGX00rB,uBACI,MAAMlorB,EAAU/e,KAAK+e,QACrB,IAAIixrB,GAEwB,IAAxBjxrB,EAAQi9T,cACRj9T,EAAQi9T,aAAc,EACtBg0X,GAAmB,GAGvBhwsB,KAAKsmsB,UAED0J,IACAjxrB,EAAQi9T,aAAc,GAI9B45W,iBAAiB9vT,EAAaC,GAC1B,MAAQgT,UAAW5T,EAAUy8Q,WAAYr3Q,GAAcvqY,KACjDysqB,GAAiBtnS,EAASmkT,WAAankT,EAAShkI,QAAQ2kI,GAC9D,IAAItzU,GAGAA,GADJ+2I,GAAYkje,EAAc3kqB,KAAM,CAAEq+pB,GAAKN,GAAOC,KAClC3gS,EAAS49S,UAAU,SAAStqmB,IAChC,OAAOA,GAAM0oL,OAAOv9O,QAAUkiX,GAAertT,GAAM70D,QAAUmiX,IAGzDZ,EAASy9S,oBAAoB98S,GAGrC9lY,KAAK8ssB,uBAAyBrgC,EAAcx4V,SAAWzhR,GAIvDxyD,KAAKitsB,wBAFSz6oB,GAAMzsD,OAASysD,GAAM,GAAKA,GADjB2yU,EAAShkI,OAAOp7P,OAAS,EAGIysD,IAEpD+3U,EAAU/8X,KAAKglD,IAIvBq4oB,yBACI,OAAO7qsB,KAAK+4Y,UAAUukS,WAAWv3qB,QAAW/F,KAAKwnsB,UAAYxnsB,KAAKunsB,kBAAqBvnsB,KAAKq4Y,iBAAiB,CAAEkvR,GAAiBC,KAGpIyoC,yBACI70D,GAAap7oB,KAAK0U,QAAS,EACrBgxrB,IAAa1lsB,KAAK4xrB,aAGpB5xrB,KAAK6qsB,0BACLt1R,GAAWv1a,KAAK0U,QAAS,EACnBgxrB,IAAa1lsB,KAAK4xrB,aAKhC/rS,aAAa9mY,EAASi3X,GAClBuyT,EAAmBvosB,KAAKgmsB,iBAAkBjnrB,GAC1C/e,KAAKgmsB,iBAAmBvrD,GAAWz6oB,KAAKgmsB,iBAAkBjnrB,GAC1D/e,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAKgmsB,kBAE/BhwT,IACAh2Y,KAAKimsB,OAASjwT,EACdh2Y,KAAKsgpB,aAAatqQ,MAAQA,GAE9Bh2Y,KAAKkmsB,WAAWlmsB,KAAK+e,QAAS/e,KAAKimsB,QAEnCjmsB,KAAK4osB,wBAGTnwT,WAAW15X,EAASi3X,GAChBh2Y,KAAK6lZ,aAAa9mY,EAASi3X,GAC3Bh2Y,KAAK8lZ,iBACL9lZ,KAAK2gJ,SACL3gJ,KAAKiwsB,yBAGT15T,aAAa7xE,GACT1kU,KAAKsgpB,aAAa57U,IAAMsD,QAAQtD,GAC5B1kU,KAAK+3Y,SAAiC,QAAtB/3Y,KAAK+3Y,QAAQjwY,MAC7B9H,KAAK0nsB,kBAIbwI,eAAe3siB,GACXvjK,KAAKsgpB,aAAa/8e,KAAOA,EAG7B+1O,sBACIt5Y,KAAKinsB,uBAGTxhY,UACIzlU,KAAK6mX,YAAa,EAElBu0R,GAAap7oB,KAAK0U,QAAS,EACrBixrB,IAAe3lsB,KAAKqqsB,eACpB9hC,IAAcvoqB,KAAK83rB,oBACnB4N,IAAa1lsB,KAAK4xrB,YAClBgU,IAAc5lsB,KAAKsqsB,qBAGrBtqsB,KAAKszX,YACLtzX,KAAKszX,UAAU7tD,iBACRzlU,KAAKszX,WAGZtzX,KAAKqusB,wBACLjzD,GAAaz5nB,SAAU,EACjB+jrB,IAAa1lsB,KAAKqusB,yBAI5BrusB,KAAK8nsB,eAEL9nsB,KAAK0nsB,kBAEL1nsB,KAAKgvsB,sBAGTtH,kBACI,MAAM3vT,EAAU/3Y,KAAK+3Y,QACjBA,IACAA,EAAQ5D,OAAO,aAAcn0Y,KAAK2nsB,2BAClC5vT,EAAQ5D,OAAO,aAAcn0Y,KAAK4nsB,2BAClC7vT,EAAQtyE,UAERzlU,KAAK+3Y,QAAU,MAIvBivT,qBACI,MAAMiD,EAAajqsB,KAAK+msB,YAExB,GAAIkD,EACA,KAAOA,EAAWlksB,OAAS,GACvBkksB,EAAWtgnB,QAAQ87O,UAK/BqiY,eACI,MAAMt8b,EAAQxrQ,KAAKmvnB,OAEf3jX,IACAA,EAAMi6D,UACNzlU,KAAKmvnB,OAAS,MAGlBnvnB,KAAK61rB,oBAEL71rB,KAAKgnsB,qBAEDhnsB,KAAKwnsB,UACLxnsB,KAAKwnsB,SAAS/hY,UAGdzlU,KAAK4hpB,YACL5hpB,KAAK4hpB,WAAWn8U,UAGhBzlU,KAAKyosB,iBACLzosB,KAAKyosB,eAAehjY,iBACbzlU,KAAKyosB,gBAGZzosB,KAAKwosB,YACLxosB,KAAKwosB,UAAU/iY,iBACRzlU,KAAKwosB,WAGZxosB,KAAK0osB,kBACL1osB,KAAK0osB,gBAAgBjjY,iBACdzlU,KAAK0osB,kBAiBxB,YAA6B5onB,GAAQ96E,GACjC,GAAI86E,GACA,QAAS31C,EAAM,EAAGA,EAAM21C,GAAO/5E,OAAQokC,IACnC,GAAI21C,GAAO31C,GAAKi3N,WAAap8P,EACzB,MAAO,CAAE86E,GAAO31C,IAqEhC,YAAqCi7V,WAC1BA,GAAe1oR,WACf0oR,GAAe70X,cACf60X,GAAe+qU,mBACf/qU,GAAe1tT,YACf0tT,GAAegrU,oBACfhrU,GAAeirU,WACfjrU,GAAekrU,aACflrU,GAAer8O,YACfq8O,GAAemrU,oBACfnrU,GAAeorU,eACfprU,GAAeqrU,mBACfrrU,GAAeo9D,cACfp9D,GAAeyH,mBACfzH,GAAesrU,YACftrU,GAAeuH,eACfvH,GAAewH,cACfxH,GAAe6H,sBACf7H,GAAeurU,iBACfvrU,GAAewrU,iBACfxrU,GAAeyrU,iBACfzrU,GAAe0rU,iBACf1rU,GAAe8H,UAI1B,YAAoB/pI,IAChB,MAAMi+N,EAAS,GAEf,QAASzyd,EAAI,EAAGA,EAAIw0P,GAAKp9P,OAAQ4I,IAAK,CAClC,MAAMw3X,EAAOhjI,GAAKx0P,GACZijY,EAAWzL,EAAKpnX,QAAQ/Z,KAC1B4sY,IACAwvF,EAAOxvF,GAAYzL,EAAKv+T,SAIhC,OAAOw5Z,EA6CX,MAAM2vO,EAAc,CAAE,OAAQ,cAE9B,WAA4Bt/M,GAAiB1ye,GACzC,QAAS8rC,KAAS9rC,EACd,IAAK8+nB,GAAQhzlB,EAAOkmpB,IAAgBhyrB,EAAQstB,eAAewe,GAAQ,CAC/D,MAAMmmpB,EAAajyrB,EAAQ8rC,GACrBompB,EAAgBx/M,GAAgB5mc,GACtC,GAAI+/iB,GAAQqmG,GAAgB,CACxB,MAAMr+a,EAA2B,OAAfo+a,EACbp+a,IAAcg4U,GAAQomG,WAChBv/M,GAAgB5mc,GACnB+nO,UACO7zQ,EAAQ8rC,IAEZompB,GAAiB/liB,GAAS8liB,IAC7B9liB,GAAS+liB,IACT1I,EAAmB0I,EAAeD,KAQ1D,WAA2B/rU,IACvB,QAAS96V,EAAM,EAAGA,EAAM86V,GAAMl/X,OAAQokC,IAClC86V,GAAM96V,GAAKkyoB,eAInBv5B,GAAkB/rQ,GAAO,CACrBnS,SAAU,GACVI,UAAW,GACX/3V,OAAQ,CACJgnS,SAAS,EACTu2D,OAAQ,IAEZzF,aAAc,GACdK,eAAgB,CACZt9X,KAAM89pB,GACN9ypB,KAAM,GACNy3X,UAAW,CACPt2D,SAAS,GAEbu2D,OAAQ,GACRzB,eAAgB,CACZ90D,SAAS,IAGjB9yE,OAAQ,GACR0jI,aAAc,KACd9tV,QAAS,CACLk9R,SAAS,GAEb+H,aAAa,EACbqpD,UAAW,GACXF,SAAU,GACVv4U,MAAO,GACP04U,MAAO,GACPC,MAAO,GACPN,MAAO,CAAE,IACT91I,UAAU,EACVC,UAAU,IAGd,SAAe2nJ,GC7xDfm6T,GA/BA,iBAA4BC,GACxBzX,YAAY7gnB,EAAQ61kB,GAEhB,MAAM1ipB,EAAWm6X,KADChB,SAASJ,aACLhmX,QAAQ/S,SACxBmxD,EAAQnxD,EAAW,CACrBD,WAAY,OACZC,SAAU,UACV,CACAD,WAAY,SACZC,SAAU,UAGd,IAAIysE,GAEJ,OACIA,GADAzsE,EACQ,IAAIkuE,GAAMl6E,KAAKmlY,SAASlpQ,IAAIxmD,GAAIi5kB,EAAKr/kB,SAASvb,GAE9C,IAAIomB,GAAMw0kB,EAAKr/kB,SAAS1lE,GAnBzB,GAsBJ,CACH8uE,MAAOA,GACPtb,MAAOA,GAIfw8nB,eAAelhnB,EAAOi2kB,GAClB,OAAO1upB,KAAK05rB,YAAY,GAAIhrC,KCxB9B0iD,GAAe,CAAE7rC,GAAKG,IAE5B,YAAclnmB,IACV,MAAMt0D,EAAQ,GACd,QAASigC,EAAM,EAAGA,EAAMq0B,GAASz4D,OAAQokC,IAAO,CAC5C,MAAMs0B,EAAQD,GAASr0B,GACvBjgC,EAAMigC,GAAOs0B,EAAMt0D,MAAMkkC,QACzBowB,EAAMt0D,MAAMkkC,QAAU,OAG1B,OAAOnkC,EAGX,YAAcs0D,GAAUt0D,GACpB,QAASigC,EAAM,EAAGA,EAAMq0B,GAASz4D,OAAQokC,IACrCq0B,GAASr0B,GAAKhgC,MAAMkkC,QAAUnkC,EAAMigC,GAI5C,YAAoBxmC,IAChB,OAAOsxU,GAAStxU,IAAS,CAAEA,IAAUA,GAGzC,iBAAwBozY,GACpByvT,iBAAiB9xrB,GACbkxT,GAASlxT,EAAS,eAGtBqxrB,aAAarxrB,GACT8K,MAAMumrB,aAAarxrB,GAEnB1U,KAAKqxsB,cAAgBnksB,KAAKC,MAAMg1jB,GAAYztjB,GAASgC,OAGzDs7qB,UACI,MAAMt9qB,EAAU1U,KAAK0U,QACfxK,EAAQ2zD,GAAKnpD,EAAQuqkB,YAE3Bj/kB,KAAKqxsB,cAAgBnksB,KAAKC,MAAMg1jB,GAAYztjB,GAASgC,OAErDlJ,GAAKkH,EAAQuqkB,WAAY/0kB,GAEzBsV,MAAMwyqB,UAGV+X,gBACI,MAAM1H,EAAerisB,KAAK+e,QACpBuyrB,EAAQtxsB,KAAKynsB,eACb8J,EAAe1zoB,GAAKyzoB,EAAMryH,YAE1B/+I,EAAQv+a,SAAS+O,cAAc,QACrCwva,EAAM7iZ,UAAY,SAElBi0pB,EAAMz2pB,YAAYqlZ,GAElB,MAAMnhb,EAAU07nB,GAAW,CACvB/joB,MAAO1W,KAAKwxsB,WACZjnsB,OAAQ43jB,GAAYmvI,GAAO/msB,OAC3ByxU,YAAaqmX,EAAarmX,aAC3BqmX,EAAar9T,UAAW,CACvBysU,QAAQ,EACRt0oB,OAAO,IAGXglgB,UAAYmvI,EAAO,CACf56rB,MAAOqI,EAAQrI,MACfnM,OAAQwU,EAAQxU,SAGpB+msB,EAAM5zpB,YAAYwiZ,GAElB1yb,GAAK8jsB,EAAMryH,WAAYsyH,GAEnBvxsB,KAAK+3Y,SACL/3Y,KAAK+3Y,QAAQnB,SAGV73X,EAGX0orB,eACI,IAAKznsB,KAAKsxsB,MAAO,CACb,MAAMA,EAAQtxsB,KAAKsxsB,MAAQ3vrB,SAAS+O,cAAc,QAClD1wB,KAAK0U,QAAQmmC,YAAYy2pB,GAE7B,OAAOtxsB,KAAKsxsB,MAGhBxH,gBAAgBE,GACZ,MAAM7kU,EAAW3lX,MAAMsqrB,gBAAgBE,GACvC,YAAKwH,WAAaxxsB,KAAKqxsB,eAAiBrxsB,KAAK0xsB,gBAAgBvsU,GAEtDA,EAGXusU,gBAAgBvsU,GACZ,MAAMpmX,EAAU/e,KAAK+e,QACfwvB,EAAS6umB,GAAWr+nB,EAAQimX,UAAUz2V,QACtCuqW,EAAS3T,EAAS2T,OAClBw4T,EAAQtxsB,KAAKynsB,eACnB,IAAIh5rB,GAAQ,EAGZ,QAASE,GAAI,EAAGA,GAAImqY,EAAO/yY,OAAQ4I,KAAK,CACpC,MAAMgjsB,GAAe74T,EAAOnqY,IACtBkqY,IAAe84T,GAAa5yrB,QAAQoiP,QAAU,IAAI,GACxD,IAAK03I,GACD,SAGJ,GAAIA,GAAY/wY,OAASy9pB,GACrB,OAjHS,IAoHb,GAAI1sR,GAAY/wY,OAAS49pB,GACrB,OApHY,IAuHhB,GAAI7sR,GAAY/wY,OAASq+pB,GACrB,OAAOhkG,GAAYmvI,GAAO/msB,OAG9B,MAAMw6X,GAAe4sU,GAAa5sU,aAClC,GAAIA,GAAc,CACd,MAAM6sU,GAAc7sU,GAAaovR,oBAC3Bw9C,GAAa5yrB,QAAQ2rpB,WAAa7sB,GAAQhlQ,GAAY/wY,KAAM,CAAE89pB,GAAQqB,KAAqB0qC,GAAa9nC,cAAc9jqB,OAAS,GAErI0I,GAAQvB,KAAKsB,IAAIC,GAAOmjsB,KAIhC,IAAI5ipB,GAAOvgD,GAAQsQ,EAAQ8yrB,WAC3B,OAAI7ipB,GAAO,IACPA,IAAQzgB,EAAO6gC,KAAO7gC,EAAO+gC,OAG1BtgB,GAGXk6oB,qBAAqBnqrB,GACjB,OAAO,IAAIg7qB,GAAc/5rB,KAAK+4Y,UAAWh6X,2BAGrBq7oB,GACpB,IAAIr7oB,EAAU+yrB,GAAW13C,GAEzB,OACIr7oB,EADA4gB,GAAQ5gB,GACE,CAAEqmX,eAAgB,CAAEtyX,KAAMiM,IAE1B07nB,GAAW,GAAI17nB,GAGxBA,EAAQoiP,SACTpiP,EAAQoiP,OAAS,CAAE,CAAEruP,KAAMg/rB,GAAW/yrB,EAAQjM,SAGlD2noB,GAAW17nB,EAAS,CAChBqmX,eAAgB,CACZt9X,KAAMiX,EAAQjX,SAIlB+1oB,GAAQ9+nB,EAAQoiP,OAAO,GAAGr5P,KAAMspsB,KAChCvzD,GAAQ9+nB,EAAQqmX,eAAet9X,KAAMspsB,OACrCryrB,EAAU07nB,GAAW,GAAI,CACrB11Q,aAAc,CACVwH,UAAW,CACPt4D,SAAS,KAGlBl1T,IAGAA,GAIf+joB,GAAkB56P,GAAW,CACzBljB,UAAW,CACPz2V,OAAQ,GAEZu2V,aAAc,CACV7wD,SAAS,EACTu4D,eAAgB,CACZv4D,SAAS,GAEboxD,UAAW,CACP0U,aAAa,IAGrB3U,eAAgB,CACZt9X,KAAM,OACNihJ,KAAM,CACFrxE,KAAM,CACFhhE,MAAO,KAGfgmG,IAAK,CACDr3F,OAAO,GAEXmgI,QAAS,EACT9uI,MAAO,GACPyyX,QAAS,CACL4D,SAAU,MAEdxC,UAAW,CACPt2D,SAAS,GAEbj3L,OAAQ,CACJtmI,MAAO,GAEX2vU,QAAS,CACLr3R,KAAM,EACNilR,SAAS,IAGjBl9R,QAAS,CACLk9R,SAAS,EACTguD,QAAQ,GAEZ8C,aAAc,CACVwH,UAAW,CACPt4D,SAAS,EACTl9R,QAAS,CACLk9R,SAAS,KAIrBhnS,OAAQ,CACJgnS,SAAS,GAEb+H,aAAa,EAEb61X,WAAY,EAEZ5sU,MAAO,CAAE,CAAEwY,MAAM,MAGrB,SAAeyK,GCrNf6pT,GA5BA,iBAA+B11jB,GAE3Bk9L,QACIv5U,KAAKgysB,gBAAkBrtqB,WAAWqspB,GAAchxrB,KAAK0U,QAAS,WAAWtK,SAG7EoiD,KAAKq8B,GACDmomB,GAAchxrB,KAAK0U,QAAS,CACxBtK,QAAS4oB,OAAO89oB,GAAiB9wqB,KAAKgysB,gBAAiB,EAAGnpnB,MAIlEriE,QACIhH,MAAMgH,QACNwqqB,GAAchxrB,KAAK0U,QAAS,CACxB25B,QAAS,OACTjkC,QAAS4oB,OAAOhzB,KAAKgysB,mBAI7BzqV,SACI/nW,MAAMgH,QACNwqqB,GAAchxrB,KAAK0U,QAAS,CACxBtK,QAAS4oB,OAAOhzB,KAAKgysB,qBCvBjC,YAAmB50pB,GAAWjzC,GAC1B,MAAM+/Y,EAAMvoY,SAAS+O,cAAc,OACnCw5X,SAAI9sW,UAAYA,GACZjzC,IACA+/Y,EAAI//Y,MAAMwyC,QAAUxyC,GAGjB+/Y,EAGX,iBAA4BqyP,KACxBz8oB,YAAY29J,EAAW6if,EAAcvhoB,GACjCS,QAEAxf,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASA,GAC5C/e,KAAKy9J,UAAYA,EACjBz9J,KAAKsgpB,aAAeA,EAEpB,MAAM96f,EAAUwriB,GAAcvzhB,EAAW,CAAE,cAAe,eAC1Dz9J,KAAKiysB,aAAe,CAChB9jlB,IAAKq3B,EAAQ3mF,WACbuQ,KAAMo2E,EAAQvvI,aAGlBjW,KAAKq3rB,iBACL55hB,EAAU5iH,YAAY76C,KAAK0U,SAG/B2irB,iBACI,MAAM3irB,EAAU1U,KAAK0U,QAAUihjB,GAAU,mBAAoB,2DACvD5+gB,EAAU/2C,KAAK+2C,QAAU4+gB,GAAU,6BACnCltH,EAASzoc,KAAKyoc,OAASktH,GAAU,YAEvC5+gB,EAAQsG,UAAY,SAEpB3oC,EAAQmmC,YAAY9D,GACpBriC,EAAQmmC,YAAY4tZ,GAGxBj7b,KAAK46D,EAAMqlE,EAAI6iB,GACX,MAAQ57I,UAASqK,UAAS0pb,UAAQ1xZ,YAAY/2C,KACxCo6a,GAASvha,GAAOk5oB,GAAO3plB,GAAQ2plB,GAAOtkhB,EAAKrlE,GAAQ,GACnDo9F,GAA6B,GAAflV,EAAK55I,QACnBw7rB,GAAS5hjB,EAAKjhF,SAAS1lE,EAAI67J,GAI3B9kE,IAHS4vD,EAAKjhF,SAAS1lE,EACHuosB,KACZnzrB,EAAQvQ,IAAMuQ,EAAQ0zB,KAE9BrgB,GAASgoZ,GAASr7Z,EAAQ0zB,IAChC,IAAI3nC,GAAO9K,KAAKsgpB,aAAa/8e,KAAKnoJ,OAAO2D,EAAQ3D,OAAQgtD,EAAMqlE,GAC/D,MAAMv7E,GAAWq8U,GAAYxvX,GAE7B/e,KAAKmysB,mBAEAnysB,KAAKoysB,WACNphB,GAAct8qB,EAAS,CACnBwtN,WAAY,SACZ7zL,QAAS,UAEbruC,KAAKoysB,UAAW,GAGhBlgpB,KACApnD,GAAOonD,GAAS,CACZkW,KAAMA,EACNqlE,GAAIA,KAIZ12F,GAAQsG,UAAYvyC,GACpBkmrB,GAAcj6oB,GAAS,CACnBq4B,KAAMkhF,EAAKjhF,SAAS1lE,EAAIotC,GAAQwuH,YAAc,EAC9Cp3C,IAAKmiC,EAAKz7E,KAGd,MAAMw9nB,GAAerhB,GAAcj6oB,GAAS,CAAE,YAAa,iBAAkB,WAE7Ei6oB,GAAcvoP,GAAQ,CAClB/xb,MAAO8uJ,GACPp2F,KAAM8ioB,GAAS9/qB,GAASsuE,GACxBytB,IAAKmiC,EAAKz7E,GAAKw9nB,GAAapzoB,UAAYozoB,GAAaC,eAAiBD,GAAa9nsB,OAAS,IAGhGymrB,GAAct8qB,EAAS,CACnBwtN,WAAY,YAIpBiwe,mBACQnysB,KAAKuysB,cACLtrrB,aAAajnB,KAAKuysB,cAGlBvysB,KAAKwysB,gBACLxysB,KAAKwysB,eAAejrV,SAI5B1pT,OACI79D,KAAKmysB,mBAELnysB,KAAKuysB,aAAergsB,WAAW,KAC3BlS,KAAKoysB,UAAW,EAChBpysB,KAAKwysB,eAAiB,IAAIC,GAAiBzysB,KAAK0U,SAChD1U,KAAKwysB,eAAej5X,QACpBv5U,KAAKwysB,eAAe9sY,QACrB1lU,KAAK+e,QAAQ2zrB,WAGpBjtY,UACIzlU,KAAKmysB,mBACDnysB,KAAKy9J,WACLz9J,KAAKy9J,UAAU//G,YAAY19C,KAAK0U,gBAE7B1U,KAAKy9J,iBACLz9J,KAAKsgpB,oBACLtgpB,KAAK0U,eACL1U,KAAK+2C,eACL/2C,KAAKyoc,QAIpBq6M,GAAkB6vD,GAAe,CAC7Bv3rB,OAAQ,gBACRs3rB,UAAW,MAGf,SAAeC,GCnITC,GAAiB,aACjBC,GAAiBD,GCSvB,iBAAwBr2D,KACpBz8oB,YAAYypV,GACR/pU,QAEAxf,KAAKupV,MAAQA,EACb,MAAMxqU,EAAU/e,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASwqU,EAAMxqU,QAAQwlB,WACpE+I,EAASvuB,EAAQuuB,OACnBA,IACAA,EAAO86B,KAAOpoE,KAAKs6a,UAAUhtY,EAAO86B,MACpC96B,EAAOmgG,GAAKztI,KAAKs6a,UAAUhtY,EAAOmgG,KAGjCm9d,GAAQ7rlB,EAAQonY,KAAKlyE,WACtBl1T,EAAQonY,KAAKlyE,QAAUl1T,EAAQk1T,SAGnCj0U,KAAK8ysB,cAAgB,IAAI7kU,GAAiBjuY,KAAM,EAC3CynqB,IAAO,SACPC,IAAW,YACXG,IAAO,SACPC,IAAW,aAEhBv+U,EAAMu8W,YAAY9lsB,KAAK8ysB,eAG3Bx4R,UAAU32a,GACN,OAAO22a,GAAUt6a,KAAKupV,MAAM+2T,aAAa/8e,KAAM5/J,GAGnDuve,QACQlze,KAAK8/D,YACL9/D,KAAK8/D,UAAU2lQ,UACfzlU,KAAK8/D,UAAY,MAGjB9/D,KAAKmmZ,OACLnmZ,KAAKmmZ,KAAK1gF,UACVzlU,KAAKmmZ,KAAO,MAIpB1gF,UACQzlU,KAAKupV,QACLvpV,KAAKupV,MAAMmhX,eAAe1qsB,KAAK8ysB,sBACxB9ysB,KAAKupV,OAGhBvpV,KAAKkze,QAGTvyV,SACI3gJ,KAAK+ysB,cACL/ysB,KAAKgzsB,gBAGTA,gBACI,MAAQzpX,QAAOxqU,WAAY/e,KACrBmmY,EAAOnmY,KAAKizsB,YACVxgqB,MAAKjkC,OAAQ23X,EAAK2sR,gBAClB1qlB,QAAMqlE,MAAIkvQ,eAAe59X,EAAQuuB,OACnC4lqB,GAgZd,YAAexzoB,IACXyzoB,UAAa9yrB,UAAYq/C,GAClB,IAAIyzoB,GAlZW3jlB,CAAM22Q,GAEO,IAA3BA,EAAKguR,oBAITn0pB,KAAKkze,QAGLggO,GAAUj3kB,IAAMkqQ,EAAKlqQ,IAErBj8H,KAAK8/D,UAAY,IAAI6ga,GAAUp3I,EAAO2pX,GAAW,CAC7CzgqB,IAAKA,EACLjkC,IAAKA,EACL45D,KAAMA,IAAQ31B,EACdg7F,GAAIA,IAAMj/H,EACVmuY,WAAY0+P,GAAe1+P,GAAY,CAAEt7R,KAAM,SAC/C4yN,QAASl1T,EAAQk1T,SAClB,IAAIg6D,GAAiBjuY,KAAM,CAC1BokY,YAAa,eACb92V,OAAQ,UACR62V,UAAW,gBAGXplX,EAAQonY,KAAKlyE,UACbj0U,KAAKmmZ,KAAO,IAAIwsT,GAAcppX,EAAM70U,QAAS60U,EAAM+2T,aAAc,CAC7D7tmB,IAAKA,EACLjkC,IAAKA,EACL0jD,SAAUq8U,GAAYxvX,EAAQonY,MAC9B/qY,OAAQ2D,EAAQonY,KAAK/qY,WAKjCwwa,WAEI,MAAMzlD,EAAOhB,KADS57C,MAAMugX,iBAAgB,GACtBjiB,kBAAkBgrB,KAEhCpgqB,MAAKjkC,OAAQ23X,EAAK2sR,eAEpBxlnB,EAASttC,KAAK+e,QAAQuuB,QAAU,GACtC,IAAI86B,GAAO96B,EAAO86B,MAAQ31B,EACtB21B,GAAO31B,IACP21B,GAAO31B,GAGX,IAAIg7F,GAAKngG,EAAOmgG,IAAMj/H,EAClBi/H,GAAKj/H,IACLi/H,GAAKj/H,GAGTxO,KAAK+e,QAAQuuB,OAASmtmB,GAAW,GAAIntmB,EAAQ,CACzC86B,KAAMA,GACNqlE,GAAIA,KAGRztI,KAAKozsB,aAGTL,YAAYM,GACR,MAAMluU,EAAWnlY,KAAKupV,MAAMwvD,UAExB5T,GACAA,EAASxkP,OAAOrpB,GAAK6tQ,EAASF,OAAQouU,GAI9C5tT,eACI,MAAMl8D,EAAQvpV,KAAKupV,MACb47C,EAAW57C,EAAMwvD,UACjBu6T,EAAanuU,EAASF,MAAMr2X,MAAM,GAAG,GAG3Cu2X,EAASmkT,UAAY//V,EAAMxqU,QAAQoiP,OACnCgkI,EAASpmX,QAAQgmX,aAAex7C,EAAMxqU,QAAQgmX,aAC9CI,EAAS4kT,yBAET5kT,EAASxkP,OAAO2yjB,GAGpBC,MAAMtqsB,GACF,MAAQsgV,QAAOzpR,aAAc9/D,KACvB64E,EAAS0wQ,EAAM+iW,kBAAkBrjrB,EAAEosH,eACnCm+kB,EAAgBxzsB,KAAKizsB,WACrBQ,GAAYD,EAAc1gD,eAC1B4gD,GAAcF,EAAcx5T,KAAK/9Q,IAAIlrB,cAAcl4B,GAEnDjR,GAAQ3+D,EAAEm9X,WADH78C,EAAMwvD,UAAUhU,aACGhmX,QAAQ/Z,MAClCsoC,GAASttC,KAAK+e,QAAQuuB,OAC5B,IAAIphC,GAEJ,IAAK07D,IAAS8roB,KAAgB5zoB,EAC1B,OAIA5zD,GADAohC,GAAO86B,MAAQ96B,GAAOmgG,GACXskhB,GAAOzknB,GAAOmgG,IAAMskhB,GAAOzknB,GAAO86B,MAElC2plB,GAAOjylB,EAAU/gD,QAAQ0uH,IAAMskhB,GAAOjylB,EAAU/gD,QAAQqpD,MAGvE,MAAMA,GAAOvvD,GAAO8njB,GAChBoxF,GAAOnqlB,GAAMn1B,KACbghqB,GAAUhhqB,IAAKs/mB,GAAO0hD,GAAUjlsB,KAAOtC,KAGrCuhI,GAAK50H,GAAO8njB,GACdoxF,GAAO3plB,IAAQl8D,GACf6lpB,GAAO0hD,GAAUhhqB,KAAOvmC,GAAUunsB,GAAUjlsB,MAGhDxO,KAAK+e,QAAQuuB,OAAS,CAAE86B,KAAMA,GAAMqlE,GAAIA,IAEpCztI,KAAK+e,QAAQumY,WACbtlZ,KAAKozsB,aACLpzsB,KAAKylZ,gBAGT3lV,EAAUztC,IAAI+1C,GAAMqlE,IAEpBztI,KAAK2zsB,SAASvroB,GAAMqlE,IAGxBmmkB,WACI5zsB,KAAKozsB,aACLpzsB,KAAK+M,SACL/M,KAAKylZ,eAEDzlZ,KAAKmmZ,MACLnmZ,KAAKmmZ,KAAKtoV,OAIlBg2oB,gBACI,MAAQ/zoB,WAAa/gD,SAAWqpD,OAAMqlE,OAAQ1uH,SAAWuuB,WAAattC,KAEtEstC,EAAO86B,KAAOA,EACd96B,EAAOmgG,GAAKA,EAGhB2lkB,aACI,MAAQr0rB,SAAWuuB,SAAS,IAAOi8S,SAAUvpV,KACvCk8qB,EAAU3yV,EAAMxqU,QAAQgmX,cACtB38T,OAAMqlE,MAAOngG,EAErB,QAASnD,GAAM,EAAGA,GAAM+xoB,EAAQn2qB,OAAQokC,KAAO,CAC3C,MAAMg8V,GAAO+1S,EAAQ/xoB,IACjBg8V,GAAK6T,OAAS44T,KACdzsU,GAAK1zV,IAAM21B,EACX+9T,GAAK33X,IAAMi/H,IAKvB1gI,SACI,MAAQw8U,QAAOxqU,SAAWuuB,WAAattC,KAEvC,IAAKupV,EAAM8uD,iBAAiB,CAAE,oBAC1B,OAGJ,MAAM46T,EAAWjzsB,KAAKizsB,WAChBh5qB,EAAO,CACTmuC,KAAM96B,EAAO86B,KACbqlE,GAAIngG,EAAOmgG,IAGf,GAA8B,aAA1BwlkB,EAASl0rB,QAAQjX,KAAqB,CACtC,MAAM2ypB,EAAc,IAAIxlR,GAAiBwlQ,GAAW,CAChDr/P,SAAU,OACX7xD,EAAMxqU,QAAQgmX,aAAa,GAAI,CAC9Bx1I,WAAY,CAAEjiN,EAAO86B,KAAM96B,EAAOmgG,MAClC87M,EAAM+2T,cAAcvhoB,QAExBkb,EAAKmuC,KAAOmplB,GAAYkJ,EAAYhonB,KAAMgonB,EAAYp/Q,aAAco/Q,EAAYr/Q,UAChFnhX,EAAKwzG,GAAK8jhB,GAAYkJ,EAAYjspB,IAAKispB,EAAYp/Q,aAAco/Q,EAAYr/Q,UAGjFp7Y,KAAKupV,MAAMt/U,QAAQ,kBAAmBgwB,GAG1C65qB,MAAM7qsB,GACF,MAAQsgV,OAASwvD,WAAahU,aAAcoB,IAAUrmU,YAAW/gD,SAAWuuB,SAAQg4W,aAAetlZ,KAC7FizsB,GAAWjzsB,KAAKizsB,WACtB,IAAIljlB,GAAQ9mH,EAAE8mH,MAEd,IAAKjwD,EACD,OAGJ,MAAMi0oB,GAASd,GAASlkU,cAAcjvU,EAAU/gD,QAAQqpD,MAClD4roB,GAAOf,GAASlkU,cAAcjvU,EAAU/gD,QAAQ0uH,IAChD50D,GAAS74E,KAAKupV,MAAM+iW,kBAAkBrjrB,EAAEosH,eAE9CpsH,EAAEosH,cAAcnzE,iBAEZh1C,KAAKiN,IAAI41G,IAAS,IAClBA,IAnQc,GAsQlBkklB,GAAWF,GAAS,GAChBj0oB,EAAUuhD,KAAK0O,GAAOl3C,IACtB74E,KAAK6zsB,kBAEL1tU,EAAKpnX,QAAQ0zB,IAAMnF,EAAO86B,KAC1B96B,EAAO86B,KAAO+9T,EAAKkuR,YAAYprpB,EAAE8mH,MAAQ/vH,KAAKupV,MAAMmiX,sBAAuB7ynB,IAAQpmC,KAGnF6yW,IACAtlZ,KAAKozsB,aACLpzsB,KAAKylZ,gBAGT3lV,EAAUztC,IAAIib,EAAO86B,KAAM96B,EAAOmgG,IAElCztI,KAAK2zsB,SAAS3zsB,KAAK+e,QAAQuuB,OAAO86B,KAAMpoE,KAAK+e,QAAQuuB,OAAOmgG,IAGhEymkB,SAASjrsB,GACLjJ,KAAK4zsB,SAAS3qsB,GAGlB0qsB,SAASvroB,EAAMqlE,GAGPztI,KAAKmmZ,MACLnmZ,KAAKmmZ,KAAK34Y,KAAK46D,EAAMqlE,EAHRztI,KAAKupV,MAAMwvD,UAGUkpS,iBAI1CioB,aAAajhsB,GACT,OAAOjJ,KAAKupV,MAAM2gX,aAAajhsB,GAGnCkhsB,QAAQlhsB,GACJ,YAAK0qsB,SAAS1qsB,EAAEm/D,KAAMn/D,EAAEwkI,IAEjBztI,KAAKupV,MAAM4gX,QAAQlhsB,GAG9BmhsB,WAAWnhsB,GACP,OAAIjJ,KAAKmmZ,MACLnmZ,KAAKmmZ,KAAKtoV,OAGd79D,KAAK6zsB,gBACL7zsB,KAAKozsB,aACLpzsB,KAAK+M,SACL/M,KAAKylZ,eAEEzlZ,KAAKupV,MAAM6gX,WAAWnhsB,GAGjCgqsB,WACI,MAAM9tU,EAAWnlY,KAAKupV,MAAMwvD,UAE5B,GAAI5T,EACA,OAAOA,EAAS0iT,kBAAkBgrB,IAI1CvlqB,OAAO86B,EAAMqlE,GACT,MAAMngG,EAASttC,KAAK+e,QAAQuuB,OAE5B,OAAI86B,GAAQqlE,IACRngG,EAAO86B,KAAOpoE,KAAKs6a,UAAUlyW,GAC7B96B,EAAOmgG,GAAKztI,KAAKs6a,UAAU7sS,GAE3BztI,KAAKozsB,aACLpzsB,KAAK+M,SACL/M,KAAKylZ,eAELzlZ,KAAK8/D,UAAUztC,IAAI+1C,EAAMqlE,IAGtB,CACHrlE,KAAM96B,EAAO86B,KACbqlE,GAAIngG,EAAOmgG,iBAIN1uH,EAAU,GAAI8mrB,EAAe,IACtC,GAAI9mrB,EAAQo1rB,OACR,OAEJp1rB,EAAQo1rB,QAAS,EAEjB,MAAMC,EAAc35D,GAAW,GAAIorD,EAAathqB,UAAWxlB,EAAQwlB,WAC7D0gW,EAAQlmX,EAAQkmX,MAAQ,GAAGtxV,OAAO50B,EAAQkmX,OAC1Cw4S,EAAchjC,GAAW,GAAI25D,EAAYp6T,KAAM,CAAEh1Y,KAAM4tsB,KAExDwB,EAAYngY,UACbwpW,EAAYxpW,SAAU,EACtBwpW,EAAYlzqB,OAAS,IAGzB06X,EAAMx/X,KAAKg4qB,GAEX42B,GAAUC,WAAWv1rB,EAASq1rB,GAC9BC,GAAUE,aAAax1rB,EAASq1rB,EAAavO,qBAG/B9mrB,EAASq1rB,GACvB,MAAMjzc,EAASizc,EAAYjzc,QAAU,GAC/Bupb,EAAe3rqB,EAAQgmX,aAAe,GAAGpxV,OAAO50B,EAAQgmX,cACxDyvU,EAAYz1rB,EAAQsmX,UAAY,GAAG1xV,OAAO50B,EAAQsmX,WAGlDovU,GAA6C,IAA/BC,GAD2Bvzc,EAAQkma,IACfthqB,OAElCkR,GAAOwjoB,GAAW,CACpB3yoB,KAAM,OACNkyY,KAAM44T,GACNn3T,iBAAkBg5T,GAClBn5T,UAAWm5T,GACXE,WAAW,EACX96T,WAAY,CAAE5lE,SAAS,GACvBl9R,QAAS,CAAEk9R,SAAS,GACpBu2D,OAAQ,CAAEh+U,KAAM,GAChB0ipB,SAAUkF,EAAY/uT,iBACtBlK,kBAAmB,CACft/X,QAAS,CAAE,GACX2lK,MAAO,CAAE,EAAG,GACZnC,KAAM,CAAE,EAAG,GACX01N,MAAO,GACPC,OAAQ,CAAE,GACVtuL,MAAO,CAAE,MAGX1sD,GAAOo6iB,EAAYrvU,aAEzB2lT,EAAajlrB,KACTg1oB,GAAW,GAAIxjoB,GAAM,CACjBskY,cAAe,KAChBvhP,GAAM,CACLh1J,KAAM6tsB,GACNjmpB,MAAO,KACPwuV,SAAU,MACVC,aAAc,OACd7Q,OAAQ,CAAEv2D,SAAS,GACnB4lE,WAAY,CAAE5lE,SAAS,KACvBwmU,GAAW,GAAIxjoB,GAAM+iJ,GAAM,CAC3Bh1J,KAAM6tsB,GAAiB,UACvBt3T,cAAe,GACfF,aAAc,OACd7Q,OAAQ,CAAEtgW,SAAU,IACpB+vW,UAAW,GACXkB,kBAAmB,CACft/X,QAAS,IAEbolqB,UAAU,IACVxmC,GAAW,GAAIxjoB,GAAM+iJ,GAAM,CAC3Bh1J,KAAM6tsB,GAAiB,SACvBt3T,cAAe,IACf1B,WAAY,CACRnjY,MAAO,IAEXujY,UAAW,GACXrtV,MAAO,KACP49U,OAAQ,CAAEv2D,SAAS,EAAOumE,QAAQ,GAClCymS,UAAU,KAIlBuzB,EAAU/usB,KAAKg1oB,GAAW,CACtBz1oB,KAAM6tsB,GACN74T,KAAM44T,GACNpmU,eAAgB,CACZv4D,SAAS,GAEbA,SAAS,GACVmgY,EAAY/uU,gCAGCtmX,EAASq1rB,EAAavO,GACtC,MAAM1kc,EAASpiP,EAAQoiP,OAASpiP,EAAQoiP,QAAU,GAC5Cyzc,EAAkB,GAAGjhqB,OAAOygqB,EAAYjzc,QAAU,IAClD0jI,GAAeghU,EAAahhU,aAC5Bw9E,GAAW+xP,EAAYhvU,eAE7B,QAASj7V,GAAM,EAAGA,GAAMyqqB,EAAgB7usB,OAAQokC,KAC5Cg3N,EAAO17P,KACHg1oB,GAAW,CACPl7f,MAAOslP,GAAa16V,GAAM06V,GAAa9+X,QACvCuhY,cAAe8sU,EAAYS,UAC3BjrU,iBAAiB,EACjB7yV,QAAS,CACLk9R,SAAS,IAEdouI,GAAUuyP,EAAgBzqqB,IAAM,CAC/Bg8V,KAAM0sU,GACN9tU,aAAc8tU,GACd3D,SAAUkF,EAAY/uT,qBAO1C,eAMA,SAAegvT,GCldf,iBAAyBt9T,GAErBwkR,cAAcx8oB,EAAS8mrB,GACnB,MAAMnvrB,EAAQyrjB,GAAYnikB,KAAK0U,SAASgC,OhQAnB,IgQCrB,IAAIs/X,EAAQ6vT,EAEZ,MAAMiP,EAAgB,CAClB1vU,eAAgB,CACZkC,cAAevoX,EAAQ81rB,WAE3B/vU,aAAc,CACVC,aAAc,CACV//X,KAAM,UACNwnY,eAAgB,CACZv4D,SAAS,GAEbu2D,OAAQ,CACJh+U,KAAM,GAEVqtV,WAAY,CACR5lE,SAAS,GAEbsnE,cAAeruY,KAAKC,MAAMuJ,EAxBlB,OA6BhBs/X,IACAA,EAAQykQ,GAAW,GAAIzkQ,EAAO8+T,IAGlCT,SAAgBt1rB,EAASi3X,GAEzBx2X,MAAM+7oB,cAAcx8oB,EAASi3X,GAGjCwwT,iBAAiB9xrB,GACbkxT,GAASlxT,EAAS,wBAGtB+jY,WAAW15X,GACP/e,KAAK+0sB,mBACLv1rB,MAAMi5X,WAAW15X,GAGrBu6X,sBACI,MAAMt9D,EAAch8U,KAAK+e,QAAQi9T,YAEjCh8U,KAAK+e,QAAQi9T,aAAc,EAC3Bh8U,KAAKg1sB,cACLh1sB,KAAK+e,QAAQi9T,YAAcA,EAG/Bg2W,UACIhyrB,KAAKs5Y,sBAGTgtT,UACI,MAAM/hqB,EAAYvkC,KAAKukC,WAElBvkC,KAAK4rC,UAAYrH,GAAaA,EAAUxlB,QAAQwmY,cACjDhhX,EAAUkhX,eAEVzlZ,KAAKg1sB,cAIbppqB,SACI,MAAM7sB,EAAU/e,KAAK+e,QAEfyqpB,EAAcxlB,GADL,GAAGrwmB,OAAO50B,EAAQoiP,OAAQpiP,EAAQwlB,UAAU48N,QAC1B,SAASt6P,GAAK,OAAOA,GAAKA,EAAEotU,UAAYluU,OACnEymC,EAAQxsC,KAAKi1sB,eAAiBzrC,EACpC,YAAKyrC,aAAezrC,EAEbh9nB,EAGXwoqB,cACI,IAAIzwqB,EAAYvkC,KAAKukC,UAEhBA,IACDA,EAAYvkC,KAAKukC,UAAY,IAAI8vqB,GAAUr0sB,MAC3CA,KAAKiK,QAAQ,mBAAoB,CAAEs6B,UAAWA,KAGlDA,EAAU2uc,QACV3uc,EAAUqnZ,WAEVpsa,MAAM8mrB,UAEN/hqB,EAAUyuqB,gBAGdxG,oBAAoB3znB,GAEhB,MAAMmhU,EADWh6Y,KAAK+4Y,UACAiqS,YAAYnqmB,GAE9BmhU,GAAQA,EAAKj7X,QAAQ/Z,OAAS4tsB,GAC9B5ysB,KAAK61rB,oBAELr2qB,MAAMgtrB,oBAAoB3znB,GAIlCitU,iBACItmY,MAAMsmY,iBACN9lZ,KAAKk1sB,0BAGTA,0BACI,MAAMzrW,EAAc,GAAG91T,OAAO3zC,KAAK+e,QAAQgmX,cAC3C,IAAIx1I,EAEJ,QAAS0vb,EAAS,EAAGA,EAASx1U,EAAY1jW,OAAQk5qB,IAAU,CACxD,MAAM94S,EAAO18B,EAAYw1U,GACrB94S,EAAKnhY,OAAS6tsB,GACdtjd,EAAa42I,EAAK52I,WACXA,GAAc42I,EAAK6T,OAAS44T,KACnCzsU,EAAK52I,WAAaA,IAK9Bwld,mBACQ/0sB,KAAKukC,YACLvkC,KAAKukC,UAAUkhS,UACfzlU,KAAKukC,UAAY,MAIzBkhS,UACIzlU,KAAK+0sB,mBACLv1rB,MAAMimT,UAGVslY,mBAAmB9hsB,GACf,MAAM4vE,EAAS74E,KAAKssrB,kBAAkBrjrB,GAChC+wY,EAAOh6Y,KAAK+4Y,UAAUiqS,YAAYnqmB,GAExC,OAAOr5D,MAAMurrB,mBAAmB9hsB,IAAO+wY,GAAQA,EAAKj7X,QAAQ/Z,OAAS4tsB,GAGzEhK,wBACS5osB,KAAK+osB,mBACN/osB,KAAK0U,QAAQvK,MAAM0/b,YAAc,OAEjC7pc,KAAK+osB,kBAAmB,IAKpCjmD,GAAkBl9P,GAAY,CAC1BivT,UAAW,OACX/vU,aAAc,CACVC,aAAc,CACVj9X,KAAM,OACNszY,SAAU,MACVE,WAAW,GAEfjW,UAAW,CACP0U,aAAa,EACbvP,OAAQ,CACJpvX,OAAQ,OAIpBmpB,UAAW,CACP+I,OAAQ,GACR83V,eAAgB,CACZ/+C,QAAS,CACLpS,SAAS,GAEbl9R,QAAS,CACLk9R,SAAS,GAEbv8P,KAAM,CACFhhE,MAAO,IAGfyvY,KAAM,GACNlyE,SAAS,GAEbl9R,QAAS,CACLk9R,SAAS,GAEbhnS,OAAQ,CACJgnS,SAAS,KAIjB,SAAe2xE,iEC5Lf,kBAAkBuvT,WAAUC,OAAWt2jB,QAAa47D,SAC5CwpK,eACA,MAAO,MAGXpkX,YAAYopG,EAAW,IAAImsmB,KAAet2rB,EAAU,IAChDS,MAAMT,GAEN/e,KAAKkpG,SAASA,MAET0hgB,MAAQ5qmB,KAAK+e,QAAQ8iI,SACtB7hJ,KAAK6hJ,OAbM,QAiBnByzjB,MAAMvwkB,GACF,OAAO/kI,KAAKu1sB,UAAUjljB,KAAKvrB,GAG/BywkB,UACI,OAAOx1sB,KAAKkpG,WAAWonD,OAG3B41hB,SACI,MAAMx8f,EAAO,IAAI+rhB,KACXC,EAAc11sB,KAAKkpG,WAAWwsmB,cAEpC,GAAIA,EAAY3vsB,OAAS,EAAG,CACxB2jL,EAAK+3D,OAAOi0d,EAAY,GAAG/rsB,EAAG+rsB,EAAY,GAAG5hpB,GAE7C,QAASnlD,EAAI,EAAGA,EAAI+msB,EAAY3vsB,OAAQ4I,GAAK,EACzC+6K,EAAKishB,QAAQD,EAAY/msB,GAAI+msB,EAAY/msB,EAAI,GAAI+msB,EAAY/msB,EAAI,IAIzE,OAAO+6K,EAGXn4E,eAAe94B,GACX,OAAOz4E,KAAKkpG,WAAW6H,cAAct4B,GAGzCm9nB,UAAUn9nB,GACN,OAAOz4E,KAAKkpG,WAAW0smB,UAAUn9nB,EAAOz4E,KAAK+e,QAAQ8iI,OAAOnrI,MAAQ,IAI5E,SAAem/rB,mBClDf,kBAAmBV,WAAUC,OAAWt2jB,QAAa47D,SAC7CwpK,eACA,MAAO,OAGXpkX,YAAYopG,EAAW,IAAI4smB,KAAgB/2rB,EAAU,IACjDS,MAAMT,GAEN/e,KAAKkpG,SAASA,MAET0hgB,MAAQ5qmB,KAAK+e,QAAQ8iI,SACtB7hJ,KAAK6hJ,OAAO,QAIpByzjB,MAAMvwkB,GACF,OAAO/kI,KAAKu1sB,UAAUjljB,KAAKvrB,GAG/BywkB,UACI,OAAOx1sB,KAAKu1sB,UAAUjljB,OAG1B/+C,eAAe94B,GACX,OAAOz4E,KAAKu1sB,UAAUxkmB,cAAct4B,GAGxCm9nB,UAAUn9nB,GACN,OAAOz4E,KAAKkpG,WAAW0smB,UAAUn9nB,EAAOz4E,KAAK+e,QAAQ8iI,OAAOnrI,MAAQ,IAI5E,SAAegpd,GCrCA,YAAuB72Z,GAAUq1Q,EAAMy/T,EAAWx3Q,EAAMoD,GACnE,QAASp/V,EAAM,EAAGA,EAAM0+B,GAAS9iE,OAAQokC,IAAO,CAC5C,MAAMmmH,GAAOznF,GAAS1+B,GAAKg9mB,cAC3B,GAAI72f,GAAM,CACN,MAAM73E,GAAQ63E,GAAKjsH,OAAOmrF,QAC1B/2C,GAAM0tT,GAAQ0/Q,GAAWv1f,GAAKthG,KAAKu6U,GAAYrrD,EAAMy/T,GAAa,QAASx3Q,EAAMoD,GACjFurT,GAAiBr8mB,GAAO63E,GAAMznF,GAAS1+B,MCNpC,YAAe0+B,GAAUq1Q,EAAMy/T,GAC1Co4D,GAAcltoB,GAAUq1Q,EAAMy/T,EAAW,IAAK,SCFnC,YAAgB90kB,GAAUq1Q,EAAMy/T,GAC3Co4D,GAAcltoB,GAAUq1Q,EAAMy/T,EAAW,IAAK,UCAnC,YAAuB90kB,GAAU4smB,EAAWugC,EAAWzsU,GAClE,GAAI1gU,GAAS9iE,OAAS,EAAG,CACrB,MAAMs+B,EAAS,IAAI61C,KACnB,IAAI+7nB,EAAeptoB,GAAS,GAAGynF,KAE/B,QAASnmH,GAAM,EAAGA,GAAM0+B,GAAS9iE,OAAQokC,KAAO,CAC5C,IAAIz1B,GAAUm0D,GAAS1+B,IAAKz1B,QACxB47I,GAAOznF,GAAS1+B,IAAKmmH,KACzBjsH,EAAOoxoB,GAAawgC,EAAa5xqB,OAAOoxoB,GAAawgC,EAAajnpB,KAAKu6U,GACvEllW,EAAO2xqB,GAAa1ljB,GAAKjsH,OAAO2xqB,GAChClhB,GAAiBzwpB,EAAQisH,GAAM57I,IAC/B47I,GAAKjsH,OAAOoxoB,GAAapxoB,EAAOoxoB,GAChCwgC,EAAe3ljB,KCfZ,YAA6BznF,IACxC,MAAMqtoB,EAAgB,GAEtB,QAAS/rqB,EAAM,EAAGA,EAAM0+B,GAAS9iE,OAAQokC,IAAO,CAC5C,IAAIz1B,EAAUm0D,GAAS1+B,GACnBmmH,EAAO57I,EAAQyyoB,cACf72f,GACA4ljB,EAAczwsB,KAAK,CACfiP,QAASA,EACT47I,KAAMA,IAKlB,OAAO4ljB,ECXI,YAAertoB,IAC1BqtoB,GAAcC,GAAoBttoB,IAAW,IAAK,IAAK,SCD5C,YAAgBA,IAC3BqtoB,GAAcC,GAAoBttoB,IAAW,IAAK,IAAK,UC6C5C,YAAsBA,GAAUq1Q,EAAMioD,EAAM6vU,EAAWzsU,GAClE,MAAM6sU,EA/CV,YAAmBvtoB,GAAUq1Q,EAAMqrD,GAC/B,MAAMf,EAAUtqD,EAAKlvR,KAAKu6U,GACpB6sU,EAAS,GACf,IAEI1hsB,GAAS47I,GAFTjrI,EAAQ,GACRgxrB,GAAY,EAGhB,MAAMC,GAAoB,WACtBjxrB,EAAM5f,KAAK,CACPiP,QAASA,GACT47I,KAAMA,MAId,QAASnmH,GAAM,EAAGA,GAAM0+B,GAAS9iE,OAAQokC,KAIrC,GAHAz1B,GAAUm0D,GAAS1+B,IAEnBmmH,GAAO57I,GAAQyyoB,cACX72f,GAAM,CACN,IAAIthG,GAAOshG,GAAKthG,KAAKu6U,GACjB8sU,GAAYrnpB,GAAOw5U,EACfnjX,EAAMtf,QACNqwsB,EAAO3wsB,KAAK4f,GACZA,EAAQ,GACRixrB,KACAD,GAAYrnpB,KAEZsnpB,KACAF,EAAO3wsB,KAAK4f,GACZA,EAAQ,GACRgxrB,GAAY,IAGhBC,KACAD,IAAarnpB,IAKzB,OAAI3pC,EAAMtf,QACNqwsB,EAAO3wsB,KAAK4f,GAGT+wrB,EAIQG,CAAU1toB,GAAUq1Q,EAAMqrD,GACnCllW,GAAS65S,EAAK75S,OAAOmrF,QACrBj9G,GAAS,GAEf,QAAS43B,GAAM,EAAGA,GAAMisqB,EAAOrwsB,OAAQokC,KAAO,CAC1C,IAAI9kB,GAAQ+wrB,EAAOjsqB,IACfqsqB,GAAenxrB,GAAM,GACzBgf,GAAO2xqB,GAAaQ,GAAalmjB,KAAKjsH,OAAO2xqB,GAC7ClhB,GAAiBzwpB,GAAQmyqB,GAAalmjB,KAAMkmjB,GAAa9hsB,SACzD8hsB,GAAalmjB,KAAKjsH,OAAO8hW,GAAQ9hW,GAAO8hW,GACxC+vU,GAAc7wrB,GAAO8gX,EAAM6vU,EAAWzsU,GACtCh3X,GAAO9M,KAAK,IACZ,QAAS8miB,GAAa,EAAGA,GAAalnhB,GAAMtf,OAAQwmiB,KAChDh6hB,GAAO43B,IAAK1kC,KAAK4f,GAAMknhB,IAAY73hB,SAG3C,OAAOnC,GChEI,YAAcs2D,GAAUq1Q,GACnC,OAAOu4X,GAAa5toB,GAAUq1Q,EAAM,IAAK,IAAK,SCDnC,YAAer1Q,GAAUq1Q,GACpC,OAAOu4X,GAAa5toB,GAAUq1Q,EAAM,IAAK,IAAK,UCDnC,YAAaxpU,GAASwpU,GACjC,MAAM5tL,EAAO57I,GAAQyyoB,cACrB,GAAI72f,EAAM,CACN,MAAM6xa,EAAc7xa,EAAKthG,KACnB0npB,EAAWx4X,EAAKlvR,KACtB,GAAI0npB,EAAShgsB,MAAQyrjB,EAAYzrjB,OAASggsB,EAASnssB,OAAS43jB,EAAY53jB,OAAQ,CAC5E,MAAMm2F,EAAQxzF,KAAKulC,IAAIikqB,EAAShgsB,MAAQyrjB,EAAYzrjB,MAAOggsB,EAASnssB,OAAS43jB,EAAY53jB,QACnFF,GAAYqK,GAAQrK,gBAAe4tO,QACzC5tO,GAAUq2F,MAAMA,EAAOA,GACvBhsF,GAAQrK,UAAUA,8CCP9B,IAAI+W,GAEJ,iBAAyBm7nB,KACVl2mB,qBACP,OAAKjlB,KACDA,GAAW,IAAIu1rB,IAGZv1rB,GAGXkN,MAAM/L,EAAKxD,GACP,MAAM63rB,EAAY,IAAIC,KAAU93rB,GAChC,OAAO+3rB,QAAUF,EAAWr0rB,IAIpC,SAAeo0rB,4QCrBf,MAGMI,GAAgB,eAChBC,GAAc,aAIdC,GAAS/psB,KAAK45E,GAAK,IACnBiyjB,GAAS,SACTm+D,GAAS,SACT/9D,GAAU,UACVg+D,GAAiB,gBACjBC,GAAuB,qBCXd,YAAa9mjB,GAAM3sJ,GAC9B,MAAM0gC,EAASisH,GAAK+mjB,YACdropB,EAAOshG,GAAKu2iB,UACZr9T,EAAU4zQ,GAAWz5oB,GAE3B2sJ,UAAKgnjB,UAAU,CAAEjzqB,EAAO16B,EAAI6/X,EAAQp6T,KAAM/qC,EAAOyvB,EAAI01U,EAAQr7Q,MAC7DmiC,GAAKhkB,QAAQ,CAAEt9E,EAAKt4C,OAAS8yX,EAAQp6T,KAAOo6T,EAAQl6T,OAAQtgB,EAAKzkD,QAAUi/X,EAAQr7Q,IAAMq7Q,EAAQ9/D,UAE1Fp5K,GCPX,MAAQ9H,SAAOitjB,QAAM3srB,KAAIA,IAAKkue,EAEf,YAA2B5xf,GAAO2Z,GAC7C,MAAMqvoB,EAAWhppB,GAAM62H,IACjB43iB,EAAUzuqB,GAAMo5D,SAAS,GAAGy9D,IAC5B+gB,EAASj+H,EAAQi+H,QAAU,GAC3BgpM,EAAajnU,EAAQinU,YAAc,GAEnCi1C,GAAUw6U,GAAK8B,SAAS,IAAIC,KAAS,CAAEppD,EAASj5kB,GAAIi5kB,EAASv5kB,IAAM,CAAEu5kB,EAAS13oB,QAAS03oB,EAAS7jpB,WAAa,CAC/Gs3I,OAAQ,KAGN/2I,GAAO,IAAIge,GAAK1jB,GAAM0F,KAAM,IAAI0ssB,KAAU3jC,EAAQ1+lB,GAAI0+lB,EAAQh/lB,IAAK,CACrEwwE,KAAMtmI,EAAQsmI,KACd32I,KAAM,CAAE6wI,MAAOxgI,EAAQwgI,SAGrBk4jB,GAAgBvsmB,GAAIpgG,GAAKwlJ,OAAO9gC,QAASzwG,EAAQymI,SAEjDkyjB,GAAWjC,GAAK8B,SAASE,GAAe,CAC1C51jB,OAAQ,CACJtC,MAAOvC,EAAOtmI,MAAQsmI,EAAOuC,MAAQ,GACrC7oI,MAAOsmI,EAAOtmI,MACdtM,QAAS4yI,EAAO5yI,QAChB43P,SAAUhlH,EAAOglH,SACjBqya,SAAU,QACVtjhB,QAAS,SAEbriJ,KAAM,CACF6wI,MAAOymM,KAITn9Q,GAAW,IAAI2/E,GACrB3/E,UAAS33C,OAAO+pW,IAChBpyT,GAAS33C,OAAOwmrB,IAChB7uoB,GAAS33C,OAAOpmB,IAET+9D,GCtCI,YAAkBjB,GAAOn1B,EAAKjkC,GACzC,MAAM45D,EAAOwiiB,GAAQhjiB,GAAMQ,MAAQR,GAAMQ,KAAO6wkB,EAC1CxrgB,EAAKm9d,GAAQhjiB,GAAM6lE,IAAM7lE,GAAM6lE,GAAKurgB,EAE1CpxkB,UAAMQ,KAAOl7D,KAAKsB,IAAItB,KAAKulC,IAAIg7F,EAAIrlE,GAAO31B,GAC1Cm1B,GAAM6lE,GAAKvgI,KAAKulC,IAAIvlC,KAAKsB,IAAIi/H,EAAIrlE,GAAO55D,GAEjCo5D,GCPI,YAAe0oF,GAAM3sJ,GAChC,MAAM6lY,EAAU4zQ,GAAWz5oB,GAE3B6lY,SAAQp6T,MAAQo6T,EAAQp6T,KAAMo6T,EAAQr7Q,KAAOq7Q,EAAQr7Q,IACrDq7Q,EAAQl6T,OAASk6T,EAAQl6T,MAAOk6T,EAAQ9/D,QAAU8/D,EAAQ9/D,OAEnDx+N,GAAIolD,GAAMk5O,GCHrB,MACQisU,KAAFkC,GAAQC,QAAOA,IAAK5gN,EAE1B,gBAAoBulJ,KAEhBz8oB,YAAY4U,EAAS0lpB,EAAapkR,EAAO5yU,EAAU,IAC/C5jD,QAEAxf,KAAK0U,QAAUA,EACf1U,KAAKg2Y,MAAQA,EACbh2Y,KAAKwmmB,eAAiB,IAAIsjD,GAAa9ppB,KAAMojE,GAC7CpjE,KAAKgmsB,iBAAmBvrD,GAAW,GAAIz6oB,KAAK+e,QAASq7oB,GACrDp6pB,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAKgmsB,kBACnChmsB,KAAKkmsB,WAAWlwT,GAEhBh2Y,KAAK2gJ,SAGT8kL,UACQzlU,KAAK+3Y,UACL/3Y,KAAK+3Y,QAAQtyE,UACbzlU,KAAK+3Y,QAAU,aAGZ/3Y,KAAK0U,eACL1U,KAAKg5V,eAGhBr1V,MAAMk0sB,GACF,MAAMnkU,EAAU1zY,KAAKyzY,SAAS,GAE9B,GAAyB,IAArB12W,UAAUh3B,OACV,OAAO2tY,EAAQ/vY,QAGnB+vY,EAAQ/vY,MAAMk0sB,GACd73sB,KAAK83sB,iBAAiBD,GAG1BE,QACI,MAAMhgU,EAAU/3Y,KAAK+3Y,QAErBA,EAAQz4V,QACRy4V,EAAQ17P,KAAKr8I,KAAKg4sB,UAGtB9gU,eACI,OAAOl3Y,KAAKg4sB,SAGhBv0c,UAAUp9P,GACN,MAAMotY,EAAWzzY,KAAKyzY,SAChBhwI,EAAY,GAElB,GAAyB,IAArB1mO,UAAUh3B,OAAc,CACxB,QAAS4I,EAAI,EAAGA,EAAI8kY,EAAS1tY,OAAQ4I,IACjC80P,EAAUh+P,KAAKguY,EAAS9kY,GAAGhL,SAG/B,OAAO8/P,EAGX,GAAI9jO,GAAQt5B,GACR,QAASsI,EAAI,EAAGA,EAAItI,EAAON,OAAQ4I,IAC3BsmU,GAAS5uU,EAAOsI,KAChB8kY,EAAS9kY,GAAGhL,MAAM0C,EAAOsI,IAKrC3O,KAAK83sB,iBAAiBzxsB,GAG1ByxsB,iBAAiBzxsB,GACb,MAAMotY,EAAW,GAAG9/V,OAAO3zC,KAAK+e,QAAQ20X,SAClCukU,EAAc,GAAGtkqB,OAAOttC,GAE9B,QAASsI,EAAI,EAAGA,EAAIspsB,EAAYlysB,OAAQ4I,IACpC8kY,EAAS9kY,GAAGhL,MAAQs0sB,EAAYtpsB,GAIxCioY,SACI52Y,KAAKs5Y,sBAGTA,sBACI,MAAMt9D,EAAch8U,KAAK+e,QAAQi9T,YAEjCh8U,KAAKk4sB,oBAAmB,GAExBl4sB,KAAK2gJ,SAEL3gJ,KAAKk4sB,mBAAmBl8X,GAG5Br7L,SACI,MAAM3xF,EAAOhvD,KAAKm4sB,eACZl9U,EAAU,IAAIu8U,KAAS,CAAE,EAAG,GAAK,CAAExopB,EAAKt4C,MAAOs4C,EAAKzkD,SAE1DvK,KAAKomsB,eAELpmsB,KAAKo4sB,UAAYp4sB,KAAKq4sB,mBAEtBr4sB,KAAKs4sB,eAEL,MAAMhojB,EAAO+sf,GAAMpiR,EAAQ3qO,OAAQtwJ,KAAKu4sB,kBACxCv4sB,KAAKkgpB,OAAO5vf,GAGhBmoP,WAAW15X,EAASi3X,GAChBh2Y,KAAKgmsB,iBAAmBvrD,GAAWz6oB,KAAKgmsB,iBAAkBjnrB,GAC1D/e,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAKgmsB,kBAEnChmsB,KAAKkmsB,WAAWlwT,GAEhBh2Y,KAAK2gJ,SAGT41P,aAAa7xE,GACT1kU,KAAKwmmB,eAAe9hS,IAAMsD,QAAQtD,GAC9B1kU,KAAK+3Y,SAAiC,QAAtB/3Y,KAAK+3Y,QAAQjwY,OAC7B9H,KAAK+3Y,QAAQtyE,UACbzlU,KAAK+3Y,QAAU,MAIvBm4T,eAAe3siB,GACXvjK,KAAKwmmB,eAAejjc,KAAOA,EAG/B2iiB,WAAWlwT,GACP,IAAIwiU,EAAexiU,GAASh2Y,KAAKg2Y,OAAS,GAC1Ch2Y,KAAKg2Y,MAAQwiU,EAEbx4sB,KAAK+e,QAAU07nB,GAAW,GAAI+9D,EAAcx4sB,KAAK+e,SACjD,MAAMA,EAAU/e,KAAK+e,QACf20X,EAAU30X,EAAQ20X,QAExB,GAAI/zW,GAAQ+zW,GAAU,CAClB,MAAMD,EAAW,GACjB,QAAS9kY,GAAI,EAAGA,GAAI+kY,EAAQ3tY,OAAQ4I,KAChC8kY,EAAShuY,KAAKg1oB,GAAW,GAAI+9D,EAAa9kU,QAASA,EAAQ/kY,MAE/DoQ,EAAQ20X,QAAUD,GAI1B4kU,mBACI,MAAMt5rB,EAAU/e,KAAK+e,QAAQq5rB,UACvBpppB,EAAOhvD,KAAK+3Y,QAAQ/oV,OACpBguF,EAASj+H,EAAQi+H,QAAU,GACjC,IAAIy7jB,EAAe,IAAIjB,KAAS,CAAE,EAAG,GAAK,CAAExopB,EAAKt4C,MAAOs4C,EAAKzkD,SAE7D,YAAKgusB,iBAAmBx5rB,EAAQwvB,QA1JjB,EA4JXyuG,EAAOtmI,MAAQ,IACf+hsB,EAAep7D,GAAMo7D,EAAcz7jB,EAAOtmI,QAG5B++rB,GAAK8B,SAASkB,EAAc,CAC1C52jB,OAAQ,CACJtC,MAAOvC,EAAOtmI,MAAQsmI,EAAOuC,MAAQ,GACrC7oI,MAAOsmI,EAAOtmI,MACdsrP,SAAUhlH,EAAOglH,SACjBqya,SAAU,QACVtjhB,QAAS,SAEbriJ,KAAM,CACF6wI,MAAOxgI,EAAQinU,cAO3BogX,eACI,MAAQrnrB,UAASg5X,WAAY/3Y,KACvB0U,EAAU1U,KAAK04sB,kBACf1ppB,EAAOhvD,KAAKm4sB,eAElBh2I,GAAYztjB,EAASs6C,GAEhB+oV,GAAWA,EAAQh5X,QAAQjX,OAASiX,EAAQ6lX,UAS7C5kY,KAAK+3Y,QAAQz4V,QACbt/C,KAAK+3Y,QAAQnB,WATTmB,GACAA,EAAQtyE,UAGZzlU,KAAK+3Y,QAAU6/T,GAAQ51oB,OAAOttD,EAAS,CACnC5M,KAAMiX,EAAQ6lX,YAQ1BuzU,eACI,MAAMp5rB,EAAU/e,KAAK+e,QACfiwC,EAAOhvD,KAAK24sB,WAElB,OAAI55rB,EAAQq5rB,WACR39D,GAAWzrlB,EAAMjwC,EAAQq5rB,WAGtBpppB,EAGX0ppB,kBACI,OAAK14sB,KAAKg5V,iBACNh5V,KAAKg5V,eAAiBr3U,SAAS+O,cAAc,OAC7C1wB,KAAK0U,QAAQmmC,YAAY76C,KAAKg5V,iBAG3Bh5V,KAAKg5V,eAGhB6tW,UACI,OAAO7msB,KAAK24sB,WAGhBA,WACI,MAAMjksB,EAAU1U,KAAK0U,QACfkksB,EAAc54sB,KAAK64sB,eACzB,IAAInisB,EAAQhC,EAAQ6wJ,YAChBh7J,EAASmK,EAAQkyC,aAErB,OAAKlwC,IACDA,EAAQkisB,EAAYlisB,OAGnBnM,IACDA,EAASqusB,EAAYrusB,QAGlB,CAAEmM,MAAOA,EAAOnM,OAAQA,GAGnCsusB,eACI,MAAO,CACHnisB,ML/OU,IKgPVnM,OLlPW,KKsPnB2tsB,mBAAmBv0sB,GACf3D,KAAK+e,QAAQi9T,YAAcr4U,EAC3B,QAASgL,EAAI,EAAGA,EAAI3O,KAAKyzY,SAAS1tY,OAAQ4I,IACtC3O,KAAKyzY,SAAS9kY,GAAGoQ,QAAQomT,UAAU6W,YAAcr4U,GAK7Dm/oB,GAAkBg2D,EAAO,CACrB3zU,SAAU,GACV6Q,MAAO,UACPpR,SAAU,GACV8O,QAAS,GACThzS,MAAO,GACP03mB,UAAW,KAGf,QAAeU,GCpQPrD,KAAFvzY,GAAQ15K,MAAKA,IAAKwuW,EAClB98a,GAAQs9nB,KAEd,YAAwBuB,GAAmBtvD,GACvC,MAAQv/mB,WAAUw/mB,QAAOC,SAAUovD,GACnC,IAAI/rrB,EAAOsd,GAEX,OAAIyuqB,GAAkB/ssB,UAClBghB,EAAQ,IAAIktD,GAAMwvkB,EAAOx/mB,GACzBI,GAAM,IAAI4vC,GAAMwvkB,EAAQD,EAAYz6lB,KAAM9kB,KAE1Cld,EAAQ,IAAIktD,GAAMhwC,EAAUy/mB,GAC5Br/mB,GAAM,IAAI4vC,GAAMhwC,EAAUy/mB,EAAQF,EAAYz6lB,OAGjC,IAAIympB,GAAK,CACtB5zjB,OAAQ,CACJtC,MAAOkqgB,EAAYlqgB,MACnB7oI,MAAO+yoB,EAAY/yoB,SAExB+qO,OAAOz0N,GAAO00N,OAAOp3M,IAK5B,YAAqB0uqB,GAAWttD,EAAeqtD,EAAmBtvD,GAC9D,MAAM7xiB,EAAQ8ziB,EAAc3lpB,OAE5B,GAAI0jpB,EAAYx1U,QAAS,CACrB,MAAQumE,SAAQuwQ,YAAYguD,EAC5B,QAASpqsB,GAAI86oB,EAAYn9oB,KAAMqC,GAAIipG,EAAOjpG,IAAK86oB,EAAYj9lB,KACnD79C,GAAI86oB,EAAYkC,UAAa,IAIjCotD,EAAkBrvD,MAAQlvQ,EAASuwQ,GAAQt1kB,GAAKs1kB,GAAQt1kB,GAAKg0kB,EAAYz6lB,KACzE+ppB,EAAkBpvD,MAAQnvQ,EAASuwQ,GAAQl2kB,GAAK40kB,EAAYz6lB,KAAO+7lB,GAAQl2kB,GAC3EkkoB,EAAkB7uqB,SAAWwhnB,EAAc/8oB,IAE3CqqsB,GAAU9nrB,OAAO+nrB,GAAeF,EAAmBtvD,MAK/D,iBAA0BkR,GACtB76pB,YAAYif,EAAS45S,GACjB,IAAIq6V,EAAej0oB,GAAW,IACzB6rlB,GAAQooD,EAAajkkB,WAAsC,IAA1BikkB,EAAahnpB,WAAuB2sT,GAAW,IAAI+L,MACrFsuV,EAAentpB,OAAOw0D,OAAO,GAAI24lB,EAAc,CAC3CjkkB,SAAS,KAIjBvvE,MAAM,EAAG,EAAGwzoB,EAAcr6V,GAE1B34T,KAAK+e,QAAQuiY,UAAYthZ,KAAK+e,QAAQuiY,WAAathZ,KAAK+e,QAAQsiY,UAAY,GAGhF4+P,gBAAgBlhoB,GACZ,IAAIi0oB,EAAevY,GAAW,GAAIz6oB,KAAK+e,QAASA,GAChDi0oB,SAAevY,GAAW,GAAIuY,EAAe,CAAExoR,OAAQ,CAAEgQ,OAAQw4Q,EAAax4Q,UAC9Ew4Q,EAAa3xQ,UAAY2xQ,EAAa3xQ,WAAay4Q,GAAc9G,EAAavgnB,IAAKugnB,EAAaxkpB,KAEzFwkpB,EAGX7I,cAGAxtiB,SACI,MAAM9zC,EAAW7oE,KAAK6oE,SAAW,IAAI2/E,GAC/BgiP,EAASxqY,KAAKk5sB,eACdC,EAAYn5sB,KAAKo5sB,aACjBC,EAAar5sB,KAAKs5sB,cAClBl4O,EAASphe,KAAKu5sB,eAEpB1woB,SAAS33C,OAAOiorB,EAAW3uU,EAAQ6uU,EAAYj4O,GAExCv4Z,EAGX0woB,eACI,MAAMx6rB,EAAU/e,KAAK+e,SACb0zB,MAAKjkC,MAAKxC,WAAUw+X,QAAUgQ,WAAaz7X,EAC7Cqid,GAASrid,EAAQqid,QAAU,GAC3Bv4Z,GAAW,IAAI2/E,GACf5wC,GAAQwpX,GAAOr7d,OACf0ppB,GAAY1woB,EAAQ0woB,WAAa1woB,EAAQ+6X,WAAW9qV,KAAO,EAEjE,QAASrgD,GAAI,EAAGA,GAAIipG,GAAOjpG,KAAK,CAC5B,MAAMi5D,GAAQ0lX,GAAS8zC,GAAOzyd,IAAI8jC,EAAKjkC,GACjCkgpB,GAAO1upB,KAAKwspB,QAAQ5klB,GAAMQ,KAAMR,GAAM6lE,IACtC6+gB,GAAQtgpB,EAAWhM,KAAK+qpB,UAAY2D,GACpCnC,GAAQvgpB,EAAW0ipB,GAAO1upB,KAAK+qpB,UACjC/+oB,EACAsgpB,GAAMn3kB,IAAMs6kB,IAAaj1Q,GAAS,EAAK,GAEvC+xQ,GAAM1P,IAAM4S,IAAaj1Q,GAAS,EAAK,GAG3C3xU,GAAS33C,OAAOukrB,GAAK8B,SAAS,IAAIC,KAAS,CAAElrD,GAAMn3kB,GAAIo3kB,GAAM13kB,IAAM,CAAEy3kB,GAAM72kB,GAAK62kB,GAAMn3kB,GAAIo3kB,GAAM1P,GAAK0P,GAAM13kB,KAAO,CAC9GnmE,KAAM,CAAE6wI,MAAO33E,GAAM23E,MAAOn1I,QAASw9D,GAAMx9D,SAC3Cy3I,OAAQ,MAIhB,OAAOh5E,GAGXqwoB,eACI,MAAQ1uU,SAAQzrX,WAAY/e,KACtB6oE,EAAW,IAAI2/E,GAErB,QAAS75I,EAAI,EAAGA,EAAI67X,EAAOzkY,OAAQ4I,IAC/Bk6D,EAAS33C,OAAOsorB,GAAkBhvU,EAAO77X,GAAIoQ,EAAQyrX,SAGzD,OAAO3hU,EAGXuwoB,aACI,MAAM1hoB,EAAO13E,KAAK+e,QAAQ24D,KACpBqzkB,EAAU/qpB,KAAK+qpB,UACflilB,EAAW,IAAI2/E,GAErB,GAAI9wE,EAAKhhE,MAAQ,GAAKghE,EAAKu8P,QAAS,CAChC,MAAMwlY,EAAW,IAAIhE,GAAK,CACtB5zjB,OAAQ,CACJtC,MAAO7nE,EAAK6nE,MACZyiH,SAAUtqL,EAAKsqL,SACftrP,MAAOghE,EAAKhhE,SAIpB+isB,EAASh4d,OAAOspa,EAAQ51kB,GAAI41kB,EAAQl2kB,IAAI6sK,OAAOqpa,EAAQt1kB,GAAIs1kB,EAAQlO,IACnEh0kB,EAAS33C,OAAOuorB,GAGpB,OAAO5woB,EAGXywoB,cACI,MAAMv3I,EAAQ,IAAIv5a,GACZzpI,EAAU/e,KAAK+e,QACfsiY,EAAYtiY,EAAQ86X,WAAW5lE,QAAUl1T,EAAQsiY,UAAY,EAC7D03T,EAAoB,CACtB/ssB,SAAU+S,EAAQ/S,SAClBwuY,OAAQz7X,EAAQyrX,OAAOgQ,OACvBuwQ,QAAS/qpB,KAAK+qpB,WAGlBuuD,UAAYv3I,EAAO/hkB,KAAK6rpB,wBAAyBktD,EAAmBh6rB,EAAQ86X,YAC5Ey/T,GAAYv3I,EAAO/hkB,KAAK8rpB,wBAAyBitD,EAAmBt+D,GAAW,GAAI,CAC/EkR,SAAUtqQ,EAAYtiY,EAAQuiY,WAC/BviY,EAAQ+6X,aAEJioL,GAIf+gF,GAAkB42D,GAAa,CAC3BjnqB,IAAK,EACLjkC,IAAK,GAELqrY,WAAY,CACR7qV,KAAM,GACNmO,MAAO47kB,GACPx5f,MAAOg5f,EACP7hoB,MN1KmB,GM2KnBu9T,SAAS,GAGb6lE,WAAY,CACR9qV,KAAM,GACNmO,MAAO47kB,GACPx5f,MAAOg5f,EACP7hoB,MNlLmB,GMmLnBu9T,SAAS,GAGbv8P,KAAM,CACFhhE,MNvLmB,IM0LvB8zX,OAAQ,CACJtgW,SAAU6umB,GACVvzf,QAAS,GAEbg1P,QAAQ,EACRuxQ,aAAa,IAGjB,SAAe2tD,GCrMf,iBAAsBn9D,KAClBz8oB,YAAY4gG,EAAO05jB,GACf56oB,QAEA,MAAQizB,MAAKjkC,OAAQkyF,EAAM3hF,QACrBA,EAAU/e,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASq7oB,GAE5Dr7oB,EAAQrQ,KAAOqQ,EAAQwgI,MAEvBv/I,KAAK0gG,MAAQA,EAGT3hF,EAAQpb,MADZm3oB,GAAY/7nB,EAAQpb,OACAg9jB,GAAW5hjB,EAAQpb,MAAO8uC,EAAKjkC,GAE/BikC,EAIxB9uC,MAAMs0N,GACF,MAAMl5M,EAAU/e,KAAK+e,QAGrB,GAAyB,IAArBge,UAAUh3B,OACV,OAHUgZ,EAAQpb,MAMtB,MAAQ8uC,MAAKjkC,OAAQxO,KAAK0gG,MAAM3hF,QAEhCA,EAAQ46rB,UAAY/uG,GAAQ7rlB,EAAQ46rB,WAAa56rB,EAAQpb,MAAQ8uC,EACjE1zB,EAAQpb,MAAQg9jB,GAAW1oW,EAAUxlL,EAAKjkC,GAEtCxO,KAAK6oE,UACL7oE,KAAK45sB,WAKjB92D,GAAkB+2D,GAAS,CACvBt6jB,MAAOg5f,IAGX,QAAeshE,GCtCf,iBAA4BA,EACxB/5sB,YAAY4gG,EAAO3hF,GACfS,MAAMkhF,EAAO3hF,GAEb/e,KAAK+e,QAAU07nB,GAAW,CACtBh5E,MAAO,CACHxtP,QAAS22R,GAAQ7rlB,EAAQ0ijB,SAE9BzhkB,KAAK+e,SAGZmhoB,SACI,MAAQnhoB,UAAS2hF,SAAU1gG,MACnBw6Y,SAAQxuY,YAAa00F,EAAM3hF,QAC7Bo6rB,EAAYz4mB,EAAMqqjB,UAClB1oF,GAAYtjjB,EAAQ0ijB,MAAMzygB,MAAQjwC,EAAQiwC,KAC1C8qpB,GAAkB/6rB,EAAQiwC,KAAO,EACjCzgB,GAAS6umB,GAAWr+nB,EAAQwvB,QAClC,IAGIwrqB,GAAYC,GAAiBC,GAH7B/5Q,GAAQl0b,EACHuiC,GAAOisW,EAAS,OAAS,SACzBjsW,GAAOisW,EAAS,SAAW,OAGpC0lD,GAAQ1lD,GAAU0lD,GAAQA,GAEtBl0b,GACAiusB,GAAW,IAAIh9D,GACXk8D,EAAUhkoB,GAAK+qX,GAAOi5Q,EAAUtkoB,GAChCskoB,EAAUhkoB,GAAK+qX,GAAOi5Q,EAAUt8D,IAEpCoR,EACIgsD,GAAS9koB,IAAMktf,GAEf43I,GAASxkoB,IAAM4sf,GAGftjjB,EAAQ2/oB,QAAUs4C,KAClBgD,GAAkB,IAAI/8D,GAClBk8D,EAAU1joB,GAAKyqX,GAAOi5Q,EAAUtkoB,GAAKiloB,GACrCX,EAAU1joB,GAAKyqX,GAAOi5Q,EAAUt8D,GAAKi9D,IAEzCC,GAAaC,MAGjBC,GAAW,IAAIh9D,GACXk8D,EAAUhkoB,GAAIgkoB,EAAUtkoB,GAAKqrX,GAC7Bi5Q,EAAU1joB,GAAI0joB,EAAUtkoB,GAAKqrX,IAEjC+tN,EACIgsD,GAASp9D,IAAMx6E,GAEf43I,GAASploB,IAAMwtf,GAGftjjB,EAAQ2/oB,QAAUs4C,KAClBgD,GAAkB,IAAI/8D,GAClBk8D,EAAUhkoB,GAAK2koB,GAAiBX,EAAUtkoB,GAAKqrX,GAC/Ci5Q,EAAU1joB,GAAKqkoB,GAAiBX,EAAUtkoB,GAAKqrX,IAEnD65Q,GAAaC,KAIrBh6sB,KAAKi6sB,SAAWA,GAChBj6sB,KAAKg6sB,gBAAkBA,GACvBh6sB,KAAKi8H,IAAM89kB,IAAcE,GAASzqlB,QAAQtkB,IAAInsF,EAAQi+H,OAAOtmI,OAGjEwjsB,oBACI,MAAMn7rB,EAAU/e,KAAK+e,QAErB,MAAO,CACHrQ,KAAM,CACF6wI,MAAOxgI,EAAQwgI,MACfn1I,QAAS2U,EAAQ3U,SAErBy3I,OAAQ+od,GAAQ7rlB,EAAQi+H,QAAU,CAC9BuC,MAAOxgI,EAAQi+H,OAAOtmI,MAAQqI,EAAQi+H,OAAOuC,OAASxgI,EAAQwgI,MAAQ,GACtE7oI,MAAOqI,EAAQi+H,OAAOtmI,MACtBsrP,SAAUjjP,EAAQi+H,OAAOglH,SACzB53P,QAAS2U,EAAQ3U,SACjB,MAIZ+vsB,UACI,MAAQz5mB,QAAO3hF,WAAY/e,MACnBw6Y,SAAQxuY,YAAa00F,EAAM3hF,QAC7BwvB,EAAS6umB,GAAWr+nB,EAAQwvB,QAMlC,OAJcviC,EACVuiC,EAAOisW,EAAS,OAAS,SACzBjsW,EAAOisW,EAAS,SAAW,QAMvCsoQ,GAAkBs3D,GAAe,CAC7B17C,MAAOs4C,GAEPv1I,MAAO,CACHzkb,OAAQ,CACJtmI,MAAO,IAIf6oI,MAAOg5f,EACPv7f,OAAQ,CACJtmI,MAAO,GAEXtM,QAAS,EAETmkC,OAAQ6umB,GAAW,GACnBj4U,UAAW,CACPr9T,KAAMkvsB,IAEV/iY,SAAS,IAGb,QAAemmY,GC1Hf,gBAA0CpjN,GAEtCz9K,QACI,MAAMx6T,EAAU/e,KAAK+e,SACbwvB,SAAQ65B,OAAMqlE,KAAIzhI,YAAa+S,EACjConX,GAAOn6X,EAAW,KAAO,KAE3B+S,EAAQy7X,SAAWxuY,GACnBo8D,EAAK+9T,KAAS53V,EAAQk/F,EAAG04P,KAAS53V,IAElC65B,EAAK+9T,KAAS53V,EAAQk/F,EAAG04P,KAAS53V,GAGtC,MAAMyrpB,GAAYh6rB,KAAKg6rB,UAAY,IAAI9wlB,KAAe9gC,EAAK+M,GAAI/M,EAAKyM,IAC9DwloB,GAAUr6sB,KAAKq6sB,QAAU,IAAInxmB,KAAeukC,EAAGt4D,GAAIs4D,EAAG54D,IAEnC,IAArB91D,EAAQ7S,WACR6S,EAAQ7S,SAAWgB,KAAKsB,IAAKwrrB,GAAUp9C,WAAWy9D,IAAWt7rB,EAAQ7S,SAAY,IAAM,IAI/FsgD,KAAKq8B,GACD,MAAMyxnB,EAAaxpC,GAAiB9wqB,KAAKg6rB,UAAUrwrB,EAAG3J,KAAKq6sB,QAAQ1wsB,EAAGk/E,GAChEgmd,EAAaiiI,GAAiB9wqB,KAAKg6rB,UAAUlmoB,EAAG9zD,KAAKq6sB,QAAQvmpB,EAAG+0B,GAEtE7oF,KAAK0U,QAAQrK,UAAU6+F,OAAqB1wD,UAAU8hqB,EAAYzrK,KAI1Ei0G,GAAkBy3D,EAA6B,CAC3C11W,OAAQqyW,GACRhrsB,STlCiB,MSqCrB8qf,oBAA0C+/M,GAAewD,GAEzD,SAAeA,EClCTrgoB,GAAQs9nB,KACR/B,GAAOz+M,KAqEb91K,GAnEA,iBAAiCk5X,EAC7Bt6sB,YAAY4gG,EAAO3hF,GACfS,MAAMkhF,EAAO3hF,GAER6rlB,GAAQ5qmB,KAAK+e,QAAQiwC,QACtBhvD,KAAK+e,QAAQiwC,KAA4C,GAArChvD,KAAK0gG,MAAM3hF,QAAQ86X,WAAW7qV,MAI1DwrpB,eACI,MAAQ95mB,QAAO3hF,SAAWiwC,SAAWhvD,KAC/BuuqB,EAAWv/mB,EAAO,EAClBizB,EAAQye,EAAM3hF,QAAQy7X,QAAS,EAAK,EAC1C,IAAIkkR,EAEJ,OACIA,EADAh+jB,EAAM3hF,QAAQ/S,SACN,CACJ,IAAIkuE,GAAM,EAAG,EAAIq0lB,GAAW,IAAIr0lB,GAAM,EAAI+H,EAAOjzB,EAAM,GAAI,IAAIkrB,GAAM,EAAG,EAAIq0lB,IAGxE,CACJ,IAAIr0lB,GAAM,EAAIq0lB,EAAU,GAAI,IAAIr0lB,GAAM,EAAG,EAAI+H,EAAOjzB,GAAO,IAAIkrB,GAAM,EAAIq0lB,EAAU,IAIpF7P,EAGXk7C,UACI,MAAQl5mB,QAAO3hF,WAAY/e,KACrBmlU,EAAY,IAAIo1Y,GAA4Bv6sB,KAAK6oE,SAAU4xkB,GAAW17nB,EAAQomT,UAAW,CAC3Fn5T,SAAU00F,EAAM3hF,QAAQ/S,SACxBwuY,OAAQ95S,EAAM3hF,QAAQy7X,OACtBjsW,OAAQvuC,KAAKm6sB,QAAQp7rB,EAAQwvB,QAC7B65B,KAAMs4B,EAAM8rjB,QAAQztoB,EAAQ46rB,WAC5BlskB,GAAI/sC,EAAM8rjB,QAAQztoB,EAAQpb,WAGQ,IAAlCob,EAAQomT,UAAU6W,cAClB7W,EAAUpmT,QAAQ7S,SAAW,GAGjCi5T,EAAUoU,QACVpU,EAAUO,OAGd/oN,SACI,MAAQjc,QAAO3hF,WAAY/e,KACrBy6sB,EAAiBz6sB,KAAKk6sB,oBACtBx7C,EAAQ1+pB,KAAKw6sB,aAAaz7rB,EAAQpb,OAExCob,EAAQomT,UAAUr9T,KAAOivsB,GAEzB,MAAMluoB,EAAW,IAAI4soB,GAAK,CACtB5zjB,OAAQ44jB,EAAe54jB,OACvBnzI,KAAM+rsB,EAAe/rsB,OACtB+yO,OAAOi9a,EAAM,IAAIh9a,OAAOg9a,EAAM,IAAIh9a,OAAOg9a,EAAM,IAAI1zoB,QAEhD0joB,GAAOhujB,EAAM8rjB,QAAQztoB,EAAQpb,OACnCklE,SAASx+D,UAAUmtsB,OAAgBh/pB,UAAUk2mB,GAAKv5kB,GAAIu5kB,GAAK75kB,KAE3D70E,KAAK6oE,SAAWA,EAETA,ICnEf,iBAAwCmub,GAEpCz9K,QACI,MAAMx6T,EAAU/e,KAAK+e,QACfonX,EAAOnmY,KAAKmmY,KAAOpnX,EAAQ/S,SAAWlG,GAAIiC,GAC1C0lI,EAAKztI,KAAKytI,GAAK1uH,EAAQ27rB,UAAU,GAAGv0U,GACpC/9T,EAAOpoE,KAAKooE,KAAOrpD,EAAQ47rB,UAAU,GAAGx0U,GAErB,IAArBpnX,EAAQ7S,WACR6S,EAAQ7S,SAAWgB,KAAKsB,IAAKtB,KAAKiN,IAAIszH,EAAKrlE,GAAQrpD,EAAQ0lI,MAAS,IAAM,IAG9EzkJ,KAAKi8oB,KAAK7zkB,GAGd5b,KAAKq8B,GACD,MAAMllF,EAAQmtqB,GAAiB9wqB,KAAKooE,KAAMpoE,KAAKytI,GAAI5kD,GACnD7oF,KAAKi8oB,KAAKt4oB,GAGds4oB,KAAKt4oB,GACD,MAAM87R,EAAS,MAAQz/R,KAAKmmY,KAAKhuO,cAC3Br4E,EAAS9/E,KAAK+e,QAAQ27rB,UAE5B56nB,EAAO,GAAG2/M,GAAQ97R,GAClBm8E,EAAO,GAAG2/M,GAAQ97R,IAI1Bm/oB,GAAkB83D,GAA2B,CACzC/1W,OAAQqyW,GACRzyjB,MXnCiB,MWsCrBuyW,oBAA0CggN,GAAa4D,IAEvD,SAAeA,ICnCPpyjB,MAAFk/L,GAAS+tX,KAAIA,IAAKz+M,EAkHxBrvK,GAhHA,iBAA+ByyX,EAC3Bt6sB,YAAY4gG,EAAO3hF,GACfS,MAAMkhF,EAAO3hF,GAER6rlB,GAAQ5qmB,KAAK+e,QAAQiwC,QACtBhvD,KAAK+e,QAAQiwC,KAA4C,GAArChvD,KAAK0gG,MAAM3hF,QAAQ86X,WAAW7qV,MAI1DwrpB,aAAa72sB,GACT,MAAQ+8F,QAAO3hF,WAAY/e,MACnBw6Y,SAAQxuY,YAAa00F,EAAM3hF,QAC7BsyC,GAAMmpV,IAAWxuY,GAAW,EAAK,EACjCgjD,GAAOjwC,EAAQiwC,KAAOqC,GACtBwppB,GAAUn6mB,EAAM8rjB,QAAQ9rjB,EAAM3hF,QAAQ0zB,KACtCi8mB,GAAOhujB,EAAM8rjB,QAAQ7opB,GACrBwiY,GAAOn6X,EAAWlG,GAAIiC,GACtB+ysB,GAAW9usB,EAAWjE,GAAIjC,GAC1ByoC,GAASvuC,KAAKm6sB,UAAY9opB,GAE1BojB,GAAK,IAAI+ioB,KACf/ioB,GAAG0xT,IAAQ00U,GAAQ10U,GAAO,KAC1B1xT,GAAGqmoB,IAAYD,GAAQC,GAAW,KAElC,MAAM95nB,GAAK,IAAIw2nB,KACfx2nB,GAAGmlT,IAAQuoR,GAAKvoR,GAAO,KACvBnlT,GAAG85nB,IAAYpsD,GAAKosD,GAAW,KAE/Bn4D,GACIlukB,GAAGj8B,UAAUjK,GAAQ,GACrByyC,GAAGxoC,UAAUjK,GAAQ,KAErBkmC,GAAGj8B,UAAU,EAAGjK,IAChByyC,GAAGxoC,UAAU,EAAGjK,KAGpB,MAAM0yC,GAAKD,GAAGwuC,QACRurlB,GAAKtmoB,GAAG+6C,QAEd,OAAIxjH,GACAi1E,GAAGzoC,UAAUwW,GAAM,GACnB+rpB,GAAGviqB,UAAUwW,GAAM,KAEnBiyB,GAAGzoC,UAAU,EAAGwW,IAChB+rpB,GAAGviqB,UAAU,EAAGwW,KAGb,CAAEylB,GAAIuM,GAAIC,GAAI85nB,IAGzBnB,UACI,MAAQl5mB,QAAO3hF,WAAY/e,KACrB0+pB,EAAQ1+pB,KAAKw6sB,aAAaz7rB,EAAQpb,OAClCq3sB,EAAch7sB,KAAKg7sB,YACnBC,EAAWj7sB,KAAKw6sB,aAAaz7rB,EAAQ46rB,WAE3CqB,EAAYv5d,OAAOi9a,EAAM,IAAIh9a,OAAOg9a,EAAM,IAAIh9a,OAAOg9a,EAAM,IAAIh9a,OAAOg9a,EAAM,IAAI1zoB,QAEhF,MAAMm6S,GAAY,IAAIy1Y,GAA0BI,EAAavgE,GAAW17nB,EAAQomT,UAAW,CACvFp2O,QAAS2R,EAAM3hF,QAAQgwE,QACvB/iF,SAAU00F,EAAM3hF,QAAQ/S,SACxB2usB,UAAW,CAAEM,EAAS,GAAIA,EAAS,IACnCP,UAAW,CAAEh8C,EAAM,GAAIA,EAAM,QAGK,IAAlC3/oB,EAAQomT,UAAU6W,cAClB7W,GAAUpmT,QAAQ7S,SAAW,GAGjCi5T,GAAUoU,QACVpU,GAAUO,OAGd/oN,SACI,MAAMj0E,EAAQ,IAAI8/G,GACZiyjB,EAAiBz6sB,KAAKk6sB,oBAExBl6sB,KAAK+e,QAAQ0ijB,MAAMxtP,SACnBvrS,EAAMxX,OAAOlxB,KAAKk7sB,eAGtB,MAAMxnU,EAAU1zY,KAAKg7sB,YAAc,IAAIvF,GAAK,CACxC5zjB,OAAQ44jB,EAAe54jB,OACvBnzI,KAAM+rsB,EAAe/rsB,OAGzBg6B,SAAMxX,OAAOwiX,GAEb1zY,KAAK6oE,SAAWngC,EAETA,EAGXwyqB,cACI,MAAMC,EAAen7sB,KAAK+e,QAAQ0ijB,MAC5Bzkb,EAASm+jB,EAAan+jB,QAAU,GAChCi9jB,EAAWj6sB,KAAKi6sB,SAASzqlB,QAAQtkB,IAAI8xC,EAAOtmI,OAAS,GAE3D,OAAO,IAAI++rB,GAAK8B,SAAS0C,EAASx8D,SAAU,CACxC/uoB,KAAM,CACF6wI,MAAO47jB,EAAa57jB,MACpBn1I,QAAS+wsB,EAAa/wsB,SAE1By3I,OAAQ,CACJtC,MAAOvC,EAAOtmI,MAAQsmI,EAAOuC,OAAS47jB,EAAa57jB,MAAQ,GAC3D7oI,MAAOsmI,EAAOtmI,MACdsrP,SAAUhlH,EAAOglH,cCtG3Bx5G,GAAQwuW,KAEd,iBAA0B8hN,EAEtB54D,OAAO5vf,GACH,MAAMmjP,EAAWzzY,KAAKyzY,SAChB2nU,EAAQ9qjB,EAAKjsH,OAAO16B,EACpB0xsB,EAAQ/qjB,EAAKjsH,OAAOyvB,EAEpBmoE,EAAM,IAAIghhB,GAAIm+D,EAAOC,EAAOD,EAAQ9qjB,EAAK55I,QAAS2ksB,EAAQ/qjB,EAAK/lJ,UAErEvK,KAAK0gG,MAAMw/iB,OAAOjkhB,GAClBj8H,KAAKs7sB,kBAAkBr/kB,GAEvB,QAASttH,GAAI,EAAGA,GAAI8kY,EAAS1tY,OAAQ4I,KACjC8kY,EAAS9kY,IAAGuxoB,SAGhBlgpB,KAAKswJ,KAAOtwJ,KAAKu7sB,QAAQt/kB,GACzBj8H,KAAKw7sB,iBACLx7sB,KAAKy7sB,kBACLz7sB,KAAK07sB,eACL17sB,KAAK+3sB,QAGT2D,eACI,MAAMr6D,EAAU,IAAI74f,GACdmzjB,EAAgB37sB,KAAK0gG,MAAMic,SAC3B82R,EAAWzzY,KAAKyzY,SAEtB4tQ,EAAQnwnB,OAAOlxB,KAAKo4sB,WACpB/2D,EAAQnwnB,OAAOyqrB,GAEf,QAAShtsB,EAAI,EAAGA,EAAI8kY,EAAS1tY,OAAQ4I,IAAK,CACtC,MAAM03B,EAAUotW,EAAS9kY,GACzB0yoB,EAAQnwnB,OAAOmV,EAAQs2E,UACvBt2E,EAAQ1iC,MAAM0iC,EAAQtnB,QAAQpb,OAGlC3D,KAAKg4sB,SAAW32D,EAGpBi3D,eACI,MAAMv5rB,EAAU/e,KAAK+e,QACf2hF,EAAQ1gG,KAAK0gG,MAAQ,IAAIg5mB,GAAY36rB,EAAQ2hF,MAAO1gG,KAAKwmmB,gBAE/DxmmB,KAAKyzY,SAAW,GAEhB,IAAIA,EAAW10X,EAAQ20X,QACvBD,EAAW9zW,GAAQ8zW,GAAYA,EAAW,CAAEA,GAE5C,QAAS9kY,EAAI,EAAGA,EAAI8kY,EAAS1tY,OAAQ4I,IAAK,CACtC,MAAM0mW,EAAiBolS,GAAW,GAAIhnQ,EAAS9kY,GAAI,CAC/Cw2T,UAAW,CACP6W,YAAaj9T,EAAQi9T,eAK7Bh8U,KAAKyzY,SAAShuY,KAAK,IbrEjB,UamEkB4vW,EAAeqpT,MAAkBk9C,GAAqBC,IAEvCn7mB,EAAO20Q,KAIlDwjW,eACI,MAAM7ssB,EAAWhM,KAAK+e,QAAQ2hF,MAAM10F,SAEpC,MAAO,CACH0K,MAAO1K,EAtEO,GbFJ,IayEVzB,OAAQyB,Eb3EG,IaKI,IA0EvBuvsB,QAAQt/kB,GACJ,MAAQv7B,QAAO+yS,YAAazzY,KACtBwnpB,EAAYvrhB,EAAI5sD,SACtB,IAMIrgB,GANA8spB,EAAcroU,EAAS,GAAGx3Q,IAAIzM,QAAQl1D,KAAKomC,EAAMu7B,KAErD,QAASttH,GAAI,EAAGA,GAAI8kY,EAAS1tY,OAAQ4I,KACjCmtsB,EAAYxhpB,KAAKm5U,EAAS9kY,IAAGstH,IAAIzM,SAIrC,OAAI9uB,EAAM3hF,QAAQ/S,UACdgjD,GAAO8spB,EAAYplsB,QAAU,EAC7BolsB,EAAc,IAAI7+D,GACduK,EAAU79oB,EAAIqlD,GAAMitE,EAAIpnD,GACxB2ykB,EAAU79oB,EAAIqlD,GAAMitE,EAAI4ghB,MAG5B7tlB,GAAO8spB,EAAYvxsB,SAAW,EAC9BuxsB,EAAc,IAAI7+D,GACdhhhB,EAAI9mD,GAAIqykB,EAAU1zlB,EAAI9E,GACtBitE,EAAIxmD,GAAI+xkB,EAAU1zlB,EAAI9E,KAIvB8spB,EAGXN,iBACI,MAAQ96mB,QAAO+yS,YAAazzY,KACtB+7sB,EAAWr7mB,EAAMu7B,IACjBA,EAAMw3Q,EAAS,GAAGx3Q,IAAIzM,QAAQl1D,KAAKomC,EAAMu7B,KACzC6/kB,EAAc97sB,KAAKswJ,KAEzB,QAAS3hJ,GAAI,EAAGA,GAAI8kY,EAAS1tY,OAAQ4I,KACjCstH,EAAI3hE,KAAKm5U,EAAS9kY,IAAGstH,IAAIzM,SAG7B,IAAI/1G,GACAinF,EAAM3hF,QAAQ/S,UACdyN,GAAOqisB,EAAYzsoB,SAAS1lE,EAAIsyH,EAAI5sD,SAAS1lE,EAC7C+2F,EAAMw/iB,OAAO,IAAIjD,GACb8+D,EAAS5moB,GAAK17D,GAAMqisB,EAAYjnoB,GAChCknoB,EAAStmoB,GAAKh8D,GAAMqisB,EAAYj/D,OAGpCpjoB,GAAOqisB,EAAYzsoB,SAASvb,EAAImoE,EAAI5sD,SAASvb,EAC7C4sC,EAAMw/iB,OAAO,IAAIjD,GACb8+D,EAAS5moB,GAAI4moB,EAASlnoB,GAAKp7D,GAC3BsisB,EAAStmoB,GAAIsmoB,EAASl/D,GAAKpjoB,MAInC,QAAS9K,GAAI,EAAGA,GAAI8kY,EAAS1tY,OAAQ4I,KACjC8kY,EAAS9kY,IAAGuxoB,OAAOlgpB,KAAKswJ,MAIhCgrjB,kBAAkBhrjB,GACd,MAAQ5vD,SAAU1gG,KAClB,IAAK0gG,EAAM3hF,QAAQ/S,SAAU,CACzB,MAAMklJ,EAAWxwD,EAAMgijB,aAAahsoB,QAAU45I,EAAK55I,QAC/Cw6I,EAAW,IACXxwD,EAAMu7B,IAAIsuR,OAAOr5P,EAAU,GAC3BxwD,EAAMu7B,IAAIihhB,QAAQ5sf,EAAM,UACxB5vD,EAAMw/iB,OAAOx/iB,EAAMu7B,OAK/Bw/kB,kBACI,MAAQ/6mB,QAAO+yS,YAAazzY,KACtB+7sB,EAAWr7mB,EAAMu7B,IAAIzM,QACrB3mC,EAAM6X,EAAM3hF,QAAQ/S,SAAW,IAAM,IACrC+tsB,EAAatmU,EAAS,GAAGx3Q,IAE/B,QAASttH,GAAI,EAAGA,GAAI8kY,EAAS1tY,OAAQ4I,KACjCorsB,EAAWz/oB,KAAKm5U,EAAS9kY,IAAGstH,IAAIzM,SAGpCuslB,EAASlznB,EAAM,IAAM37E,KAAKsB,IAAIutsB,EAASlznB,EAAM,GAAKkxnB,EAAWlxnB,EAAM,GAAI,GACvEkznB,EAASlznB,EAAM,IAAM37E,KAAKsB,IAAIursB,EAAWlxnB,EAAM,GAAKkznB,EAASlznB,EAAM,GAAI,GAEvE6X,EAAMw/iB,OAAO67D,GAEb,QAASptsB,GAAI,EAAGA,GAAI8kY,EAAS1tY,OAAQ4I,KACjC8kY,EAAS9kY,IAAGuxoB,OAAOlgpB,KAAKswJ,OAKpCwyf,GAAkBk5D,GAAa,CAC3BhgY,aAAa,EACbo8X,UAAW,CACPpyX,WAAY,IAEhBtlP,MAAO,CACH10F,UAAU,KAIlB,SAAegwsB,IC9KPnG,IAAF7/rB,GAAOy/rB,KAAPv1V,GAAa13N,MAAKA,IAAKwuW,EAE7B,YAAmBooJ,GAAK68D,EAAYx3qB,EAAMglnB,GACtC,MAAM1nF,EAAQ,IAAIv5a,GACZn5E,EAAS+vkB,GAAI/vkB,OACbojB,GAAS2sjB,GAAI88D,aAEnB,GAAIzyD,EAAYx1U,QACZ,QAAStlU,GAAI,EAAGA,GAAIstsB,EAAWl2sB,OAAQ4I,KAAK,CACxC,MAAMwtsB,GAAY/8D,GAAII,QAAQy8D,EAAWttsB,KACnCytsB,GAAU,IAAI5E,KAAUnooB,EAAO1lE,EAAI8oF,GAASg3jB,EAAYz6lB,KAAMqgB,EAAOvb,GAAGg9D,OAAOmrlB,EAAWttsB,IAAI0gE,GAEpG0yf,EAAM7wiB,OAAO,IAAIukrB,GAAK,CAClB5zjB,OAAQ,CACJtC,MAAOkqgB,EAAYlqgB,MACnB7oI,MAAO+yoB,EAAY/yoB,SAExB+qO,OAAO06d,IAAWz6d,OAAO06d,KAIpC,OAAOr6I,EAGX,YAAsB35f,GAAMqlE,EAAI8R,EAAOn1I,GACnC,MAAO,CAAEg+D,KAAMA,GAAMqlE,GAAIA,EAAI8R,MAAOA,EAAOn1I,QAASA,GAGxD,iBAA0BuwpB,GACtB76pB,YAAYif,EAAS45S,GACjBn5S,MAAM,EAAG,EAAGT,EAAS45S,GAGzBsnV,gBAAgBlhoB,GACZ,MAAMi0oB,EAAevY,GAAW,GAAIz6oB,KAAK+e,QAASA,GAClDi0oB,SAAa3xQ,UAAY2xQ,EAAa3xQ,WAAay4Q,GAAc9G,EAAavgnB,IAAKugnB,EAAaxkpB,KAChGwkpB,EAAa1xQ,UAAY0xQ,EAAa1xQ,WAAa0xQ,EAAa3xQ,UAAY,GAErE2xQ,EAGX7I,cAGAxtiB,OAAOttC,EAAQojB,GACX,MAAM2sjB,EAAMp/oB,KAAKq8sB,UAAUhtoB,EAAQojB,GAEnCzyF,KAAKswJ,KAAO8uf,EAAI9uf,OAChBtwJ,KAAKs8sB,cAAgBt8sB,KAAKk5sB,eAC1Bl5sB,KAAK+hkB,MAAQ/hkB,KAAKs5sB,cAClBt5sB,KAAKohe,OAASphe,KAAKu5sB,eAGvBr5D,OAAO5vf,GACH,MAAMjhF,EAASihF,EAAKjhF,SACdojB,EAASvlF,KAAKulC,IAAI69G,EAAK/lJ,SAAU+lJ,EAAK55I,SAAW,EAEvD,IAAIk0lB,GAAQ5qmB,KAAKswJ,MAMb,OAAOtwJ,KAAK28G,OAAOttC,EAAQojB,GAL3BzyF,KAAKswJ,KAAOtwJ,KAAKo/oB,IAAI9uf,OACrBtwJ,KAAKyyF,OAAOzyF,KAAKo/oB,IAAI88D,cACrBl8sB,KAAKu8sB,mBACLv8sB,KAAKk5sB,eAMbj7C,UAAUt6pB,GACN,MAAQ8uC,MAAKjkC,MAAKugF,UAAS2D,aAAYC,aAAa3yF,KAAK+e,QACnDuyE,GAAQqB,GAAWD,EACzB,IAAIngF,GAEJ,OACIA,GADAw8E,EACS4D,IAAYhvF,EAAQ8uC,IAAQjkC,EAAMikC,GAAO6+C,IAEvC3tF,EAAQ8uC,IAAQjkC,EAAMikC,GAAO6+C,GAASoB,EAG9CngF,GAhFc,IAmFzBiqsB,YACI,MAAMp7O,EAASphe,KAAK+e,QAAQqid,OAE5B,OAAOA,GAAUA,EAAOr7d,OAG5B02sB,YACI,MAAQ5iU,aAAYC,cAAe95Y,KAAK+e,QACxC,IAAIiwC,EAAO,EACX,OAAI6qV,EAAW5lE,UACXjlR,EAAO6qV,EAAW7qV,MAGlB8qV,EAAW7lE,UACXjlR,EAAO9hD,KAAKsB,IAAIsrY,EAAW9qV,KAAMA,IAG9BA,EAGXy7lB,cACI,IAAI7yiB,EAAQp4F,MAAMiroB,cAClB,MAAM1roB,EAAU/e,KAAK+e,QAGrB,OAAIuyE,EAFkBqB,SAAW5zE,EAAQ2zE,YAE5B,KAAQ3zE,EAAQvQ,IAAMuQ,EAAQsiY,WAAc,IACrDzpS,GAAS,GAGNA,EAGXshmB,eACI,MAAMn6rB,EAAU/e,KAAK+e,QACfqgoB,EAAMp/oB,KAAKo/oB,IAAI5vhB,QACrB,IAAI/8B,EAAS2sjB,EAAI88D,aACjB,MAAMD,EAAaj8sB,KAAKi8sB,WAAW78D,EAAKrgoB,EAAQsiY,WAC1CouQ,EAAY1woB,EAAQ0woB,UAAY1woB,EAAQ0woB,WAAsB,GAATh9jB,EACrDiqnB,GAAc,IAAIl0jB,GAExB,IAAIm0jB,GAAyB,IAATlqnB,EAChBm4gB,GAAQ7rlB,EAAQ49rB,eAChBA,GAAgB59rB,EAAQ49rB,cAExB59rB,EAAQ49rB,cAAgBA,GAG5B,MAAM7gB,GAAgB/8qB,EAAQyrX,OACxBoyU,GAAW9gB,GAAc5xpB,WAAa6umB,GACtC8jE,GAAmBjyG,GAAQ5qmB,KAAKs8sB,eAElCM,KACAnqnB,GAAUzyF,KAAKy8sB,YAEXz8sB,KAAKw8sB,cAAgBK,KACrBpqnB,GAAUg9jB,EAAYktD,IAE1Bv9D,EAAI09D,WAAWrqnB,GAAQsqnB,WAAWtqnB,IAGtC,MAAM+3S,GAASxqY,KAAKwqY,OACd5yR,GAAQ4yR,GAAOzkY,OACfy/I,GAAU43f,GAAW0+C,GAAct2iB,SACnCw3jB,IAAgBx3jB,GAAQp2E,KAAOo2E,GAAQl2E,OAAS,EAChD2toB,IAAiBz3jB,GAAQr3B,IAAMq3B,GAAQkkL,QAAU,EAEvD,QAAS/6T,GAAI,EAAGA,GAAIipG,GAAOjpG,KAAK,CAC5B,MAAMvJ,GAAQolY,GAAO77X,IACfs0oB,GAAY79oB,GAAM62H,IAAIvlH,QAAU,EAChCwsoB,GAAa99oB,GAAM62H,IAAI1xH,SAAW,EAClC+mF,GAAQ2qnB,EAAWttsB,IACnB8/oB,IAAcn9jB,GA1JH,KA0JmC2lnB,GAE9C/a,GAAK98C,EAAII,QAAQlujB,IACjBqrjB,GAAKu/C,GAAGvyrB,EAAKuD,KAAK65E,IAAI0nkB,KAAexL,GAAY+5D,KAAiBJ,GAAW,GAAI,GACjF3sb,GAAKisa,GAAGpooB,EAAK5mD,KAAKwkF,IAAI+8jB,KAAevL,GAAa+5D,KAAkBL,GAAW,GAAI,GAEzFx3sB,GAAM86oB,OAAO,IAAIjD,GAAIN,GAAKsG,GAAWhzX,GAAKizX,GAAYvG,GAAKsG,GAAWhzX,GAAKizX,KAC3E,MAAMg6D,GAAW,IAAI1F,KAAUpysB,GAAM62H,IAAI9mD,GAAI/vE,GAAM62H,IAAIpnD,IAEvD,IAAIwzb,GACJ,GAAKw0M,GAGE,CACHx0M,GAAerogB,KAAKs8sB,cAAc99oB,SAAS7vD,IAC3C,MAAMwusB,GAAe90M,GAAa/3W,OAAOjsH,OAEnC+4qB,GAAiB/0M,GAAah+f,aAAemtsB,OACnD4F,GAAe5kqB,UAAU0kqB,GAASvzsB,EAAIwzsB,GAAaxzsB,EAAGuzsB,GAASpppB,EAAIqppB,GAAarppB,GAChFu0c,GAAah+f,UAAU+ysB,SARvB/0M,GAAemxM,GAAkBp0sB,GAAO2Z,EAAQyrX,QAChDkyU,GAAYxrrB,OAAOm3e,IAUvBrogB,KAAKswJ,KAAOknjB,WAAex3sB,KAAKswJ,KAAM+3W,GAAa/3W,QAGvD,OAAOosjB,GAGXH,mBACI,MAAMn7O,EAASphe,KAAKohe,OAAO5ia,SAE3B,GAAI4ia,EAAOr7d,OAAS,EAAG,CACnB,MAAQ42sB,gBAAeltD,aAAczvpB,KAAK+e,QAC1C,IAAIs+rB,EAAcr9sB,KAAKs9sB,iBAEnBt9sB,KAAK+e,QAAQyrX,OAAOtgW,WAAa6umB,KACjCskE,GAAe5tD,EAAYktD,GAG/B,MAAM5+D,EAAYs/D,EAAe5tD,EAAY,EAE7C,QAAS9gpB,GAAI,EAAGA,GAAIyyd,EAAOr7d,OAAQ4I,KAC/Byyd,EAAOzyd,IAAG4msB,UAAUuH,WAAW/+D,GAAWg/D,WAAWh/D,GAGzD/9oB,KAAKswJ,KAAOknjB,WAAex3sB,KAAKswJ,KAAMtwJ,KAAKohe,OAAO9wU,SAI1DipjB,eACI,MAAMp9kB,EAAWn8H,KAAKu9sB,gBAChBC,EAAgBrhlB,EAASp2H,OACzBwM,EAAS,IAAIi2I,GAEnB,GAAIg1jB,EAAe,CACf,MAAQ/tD,YAAW1gkB,UAAS4tnB,kBAAkB38sB,KAAK+e,QAC7Cs+rB,GAAcr9sB,KAAKs9sB,iBAGzBt9sB,KAAKyyF,OAAOzyF,KAAKyyF,SAAWg9jB,EAAYktD,IAExC,QAAShusB,GAAI,EAAGA,GAAI6usB,EAAe7usB,KAAK,CACpC,MAAM0tH,GAAUF,EAASxtH,IACnBy5D,GAAOpoE,KAAKi+pB,UAAU5hiB,GAAQttC,EAAU,KAAO,SAC/C0+C,GAAKztI,KAAKi+pB,UAAU5hiB,GAASttC,EAAiB,OAAP,OAEzC0+C,GAAKrlE,IAAS,GACd71D,EAAO2e,OAAOlxB,KAAKy9sB,YAAYr1oB,GAAMqlE,GAAI4vkB,GAAahhlB,MAKlE,OAAO9pH,EAGXkrsB,YAAY/qnB,EAAYC,EAAU0qnB,EAAat+rB,GAC3C,MAAM0woB,EAAYzvpB,KAAK+e,QAAQ0woB,UACzBiuD,GAAY,IAAIlG,KAAQx3sB,KAAKo/oB,IAAI/vkB,OAAQ,CAC3CgwkB,QAASg+D,EAAe5tD,EAAY,EACpCnQ,QAAS+9D,EAAe5tD,EAAY,EACpC/8jB,WAAYA,EACZC,SAAUA,IAGd,OAAO,IAAIkjnB,GAAI6H,GAAW,CACtB77jB,OAAQ,CACJnrI,MAAO+4oB,EACPlwgB,MAAOxgI,EAAQwgI,MACfn1I,QAAS2U,EAAQ3U,QACjB2mJ,QAAShyI,EAAQgyI,WAK7BwsjB,gBACI,MAAMx+rB,EAAU/e,KAAK+e,QACfqid,EAASrid,EAAQqid,QAAU,GAC3BxpX,EAAQwpX,EAAOr7d,OACfo2H,EAAW,GAEjB,GAAIvkB,EAAO,CACP,MAAQnlE,MAAKjkC,OAAK44f,sBAAuB7vV,IAAiBx4J,EAC1Do9G,EAAS12H,KAAKk4sB,GAAalrqB,EAAKjkC,GAAK+oK,KAErC,QAAS5oK,GAAI,EAAGA,GAAIipG,EAAOjpG,KAAK,CAC5B,MAAMi5D,GAAQ0lX,GAAS8zC,EAAOzyd,IAAI8jC,EAAKjkC,IACjCgvsB,GAAgBrhlB,EAASp2H,OAE/B,QAASy7F,GAAI,EAAGA,GAAIg8mB,GAAeh8mB,KAAK,CACpC,MAAM66B,GAAUF,EAAS36B,IAEzB,GAAI66B,GAAQj0D,MAAQR,GAAMQ,MAAQR,GAAMQ,MAAQi0D,GAAQoR,GAAI,CACxDtR,EAAS12H,KAAKk4sB,GAAa/1oB,GAAMQ,KAAMR,GAAM6lE,GAAI7lE,GAAM23E,MAAO33E,GAAMx9D,UAEhEiyH,GAAQj0D,MAAQR,GAAM6lE,IAAM7lE,GAAM6lE,IAAMpR,GAAQoR,IAChDtR,EAAS12H,KAAKk4sB,GAAa/1oB,GAAM6lE,GAAIpR,GAAQoR,GAAI8pC,GAAc3vG,GAAMx9D,UAGzEiyH,GAAQoR,GAAK7lE,GAAMQ,KAEnB,SAMhB,OAAO+zD,EAGXmhlB,iBACI,MAAQl+D,MAAKrgoB,WAAY/e,MACjByvpB,YAAWktD,gBAAe9iU,YAAc7qV,KAAM+6lB,IAAoBhroB,EAC1E,IAAI0zE,GAEJ,OACIA,GADA1zE,EAAQyrX,OAAOtgW,WAAaivmB,GACnBiG,EAAI88D,aAAenyD,EAAgB4yD,EAAgBltD,EAEnDrQ,EAAI88D,aAAezsD,EAGzBh9jB,GAGX4pnB,UAAUhtoB,EAAQojB,GACd,MAAM1zE,EAAU/e,KAAK+e,QASrB,OAPY/e,KAAKo/oB,IAAM,IAAIo4D,KAAQnooB,EAAQ,CACvCgwkB,QAAS5sjB,EACT6sjB,QAAS7sjB,EACTC,WAAY3zE,EAAQ2zE,WA/SH,IAgTjBC,SAAU5zE,EAAQ4zE,SAhTD,MAsTzB2mnB,cACI,MAAQl6D,MAAKrgoB,WAAY/e,KACnB49sB,EAAUx+D,EAAI5vhB,QAEpBxvH,KAAK69sB,gBAAkB79sB,KAAKi8sB,WAAW78D,EAAKrgoB,EAAQsiY,WACpDrhZ,KAAK65Y,WAAaikU,GAAUF,EAAS59sB,KAAK69sB,gBAAiB9+rB,EAAmBA,EAAQ86X,YAEtF,MAAMkkU,EAAW,IAAIv1jB,GACrBu1jB,EAAS7srB,OAAOlxB,KAAK65Y,YAErB,MAAMkwQ,EAAgBhroB,EAAQ86X,WAAW7qV,KACnCg7lB,GAAgBjroB,EAAQ+6X,WAAW9qV,KAIzC,GAFAhvD,KAAKg+sB,gBAAkBj0D,EAAgBC,GAEnCjroB,EAAQyrX,OAAOtgW,WAAaivmB,GAAS,CACrC,MAAM1mjB,GAASmrnB,EAAQ1B,aACvB0B,EAAQd,WAAWrqnB,GAASs3jB,EAAgBC,IACpC+yD,WAAWtqnB,GAASs3jB,EAAgBC,IAGhD,YAAKi0D,gBAAkBj+sB,KAAKk+sB,oBAAoBl+sB,KAAKi8sB,WAAW78D,EAAKrgoB,EAAQuiY,YAC7EthZ,KAAK85Y,WAAagkU,GAAUF,EAAS59sB,KAAKi+sB,gBAAiBl/rB,EAAmBA,EAAQ+6X,YACtFikU,EAAS7srB,OAAOlxB,KAAK85Y,YAEdikU,EAGXG,oBAAoBh/D,GAChB,MAAMngoB,EAAU/e,KAAK+e,QACfzS,EAAOyS,EAAQsiY,UAAYtiY,EAAQuiY,UAEzC,QAAS3yY,EAAIuwoB,EAAOn5oB,OAAS,EAAG4I,GAAK,EAAGA,IAChCA,EAAIrC,GAAS,GACb4yoB,EAAOp7nB,OAAOnV,EAAG,GAIzB,OAAOuwoB,EAGX+8D,WAAW9loB,EAAMsqf,GACb,MAAM1hjB,EAAU/e,KAAK+e,QAGfuyE,GAAQnb,EAAKwc,SAAWxc,EAAKuc,WACnC,IAAIyrnB,IAFUp/rB,EAAQvQ,IAAMuQ,EAAQ0zB,KAEZguhB,EACpB53e,GAAM1S,EAAKuc,WACXlmC,GAAO8kC,GAAQ6snB,GALHp/rB,EAAQgwE,UAQpBlG,IAAOyI,GACP9kC,IAAQA,IAGR8kC,IAAS,KAAQvyE,EAAQvQ,IAAMiyjB,GAAc,IAC7C09I,IAAa,GAGjB,MAAM5qD,GAAY,GAClB,QAAS5kpB,GAAI,EAAGA,GAAIwvsB,GAAWxvsB,KAC3B4kpB,GAAU9tpB,KAAKq7F,GAAMjY,G7RrXF,I6RsXnBA,IAAOr8B,GAGX,OAAIs0C,GAAMjY,KAAQ1S,EAAKwc,UACnB4gkB,GAAU9tpB,KAAKojF,IAGZ0qkB,GAGX9gkB,OAAO9uF,GACH,IAAIA,EAKA,OAAO3D,KAAKo/oB,IAAI88D,aAJhBl8sB,KAAKo/oB,IAAI09D,WAAWn5sB,GAAOo5sB,WAAWp5sB,GACtC3D,KAAKo+sB,gBAAgBp+sB,KAAK65Y,WAAWr7U,SAAUx+D,KAAK69sB,iBACpD79sB,KAAKo+sB,gBAAgBp+sB,KAAK85Y,WAAWt7U,SAAUx+D,KAAKi+sB,iBAAiB,GAM7EG,gBAAgBr8I,EAAOk6I,EAAYoC,GAC/B,MAAM5ksB,EAAO4ksB,GAASr+sB,KAAKg+sB,iBAAmB,EAC9C,IAAIJ,EAAU59sB,KAAKo/oB,IACnB,MAAM3sjB,GAASmrnB,EAAQ1B,aAEnBmC,GAASr+sB,KAAK+e,QAAQyrX,OAAOtgW,WAAaivmB,IAAoB,IAAT1/nB,IACrDmksB,EAAU59sB,KAAKo/oB,IAAI5vhB,QACnBoulB,EAAQd,WAAWrqnB,GAASh5E,GAAMsjsB,WAAWtqnB,GAASh5E,IAG1D,QAAS9K,GAAI,EAAGA,GAAIozjB,EAAMh8jB,OAAQ4I,KAAK,CACnC,MAAM2vsB,GAAWV,EAAQp+D,QAAQy8D,EAAWttsB,KACtCwtH,GAAW4lc,EAAMpzjB,IAAGwtH,SACpBoilB,GAAQD,GAAS30sB,EAAIwyH,GAAS,GAAGluH,SAAStE,EAC1C60sB,GAAQF,GAASxqpB,EAAIqoE,GAAS,GAAGluH,SAAS6lD,EAEhDiugB,EAAMpzjB,IAAGtE,WAAU,IAAImtsB,MAAgBh/pB,UAAU+lqB,GAAOC,OAKpE17D,GAAkB27D,GAAa,CAC3BhsqB,IAAK,EACLjkC,IAAK,IAELqrY,WAAY,CACR7qV,KAAM,GACNmO,MAAO47kB,GACPx5f,MAAOg5f,EACP7hoB,MdvamB,GcwanBu9T,SAAS,GAGb6lE,WAAY,CACR9qV,KAAM,GACNmO,MAAO47kB,GACPx5f,MAAOg5f,EACP7hoB,Md/amB,GcgbnBu9T,SAAS,GAGbvhP,YAAY,GACZC,SAAU,IAEV63S,OAAQ,CACJtgW,SAAU6umB,GACVvzf,QAAS,KAIjB,SAAei5jB,GC9bf,iBAAqCznN,GACjCl3f,YAAY4U,EAASqK,GACjBS,MAAM9K,EAASqK,GAEf,MAAMg3V,EAAmB/1W,KAAK+e,QAE9Bg3V,EAAiB7pW,SAAWgB,KAAKsB,IAAKtB,KAAKiN,IAAI47V,EAAiB2oW,SAAW3oW,EAAiB4oW,UAAY5oW,EAAiB7pW,SAAY,IAAM,GAG/IsgD,KAAKq8B,GACD,MAAM9pE,EAAU/e,KAAK+e,QACfuyE,EAAQw/kB,GAAiB/xpB,EAAQ4/rB,SAAU5/rB,EAAQ2/rB,SAAU71nB,GAEnE7oF,KAAK0U,QAAQrK,UAAU6+F,OAAqB4nB,OAAOx/B,EAAOvyE,EAAQswD,UAI1EyzkB,GAAkB87D,GAAwB,CACtC/5W,OAAQqyW,GACRhrsB,SfvBkB,Me0BtB8qf,oBAA0CmgN,GAAgByH,IAE1D,SAAeA,ICpBPzvlB,UAAQq5B,MAAVq2jB,GAAiBpJ,KAAIA,IAAKz+M,EAEhC,iBAA4B6iN,EAExBiF,SAASxtnB,GACLtxF,KAAK6oE,SAASx+D,UAAUmtsB,OAAgB1mlB,OAAOx/B,EAAOtxF,KAAKqvE,SAG/DuqoB,UACI,MAAQl5mB,QAAO3hF,WAAY/e,KACrB2+sB,EAAWj+mB,EAAMu9jB,UAAUl/oB,EAAQ46rB,WACnC+E,EAAWh+mB,EAAMu9jB,UAAUl/oB,EAAQpb,QAEH,IAAlCob,EAAQomT,UAAU6W,YAClBh8U,KAAK8+sB,SAASJ,GAEd,IAAIE,GAAuB5+sB,KAAK6oE,SAAU4xkB,GAAW17nB,EAAQomT,UAAW,CACpEw5Y,SAAUA,EACVD,SAAUA,KACVh5Y,OAIZ/oN,SACI,MAAQjc,QAAO3hF,WAAY/e,KACrB6oE,EAAW,IAAI2/E,GAErB,OAA0B,IAAtBzpI,EAAQomT,WACRs1U,GAAW17nB,EAAQomT,UAAW,CAC1BzyO,WAAY,EACZrjB,OAAQqxB,EAAM0+iB,IAAI/vkB,OAClB0f,QAAS2R,EAAM3hF,QAAQgwE,UAI/BlmB,EAAS33C,OAAOlxB,KAAK++sB,gBAAiB/+sB,KAAKg/sB,cAE3Ch/sB,KAAK6oE,SAAWA,EAChB7oE,KAAK8+sB,SAAS7H,IAEPpuoB,EAGXq3kB,OAAOd,GACH,MAAM/vkB,EAASrvE,KAAKqvE,OAAS+vkB,EAAI/vkB,OAC3BtpE,EAAS46jB,GAAW3gkB,KAAK+e,QAAQhZ,QAAU,EAAG,GAAK,KACnD0sF,EAASzyF,KAAKyyF,OAAS2sjB,EAAI88D,aAAen2sB,EAC1Ck5sB,EAAUj/sB,KAAKi/sB,QAAU/xsB,KAAK4zF,MAAMrO,EAASzyF,KAAK+e,QAAQmgsB,IAAIlwpB,MAEpEhvD,KAAKswJ,KAAOknjB,gBAAoB,IAAIA,KAAUnooB,EAAO1lE,EAAIs1sB,EAAS5voB,EAAOvb,EAAImrpB,GACjD,IAAIzH,KAAUnooB,EAAO1lE,EAAIs1sB,EAAS5voB,EAAOvb,EAAImrpB,IAG7EF,gBACI,MAAM/0D,EAAgBhqpB,KAAK0gG,MAAM3hF,QAAQ+6X,WAAW9qV,KAC9CqgB,EAASrvE,KAAKqvE,OACd8voB,EAAcn/sB,KAAK+e,QAAQwgI,MAE3B6/jB,EAAa,IAAI3J,GAAK,CACxB/msB,KAAM,CAAE6wI,MAAO4/jB,GACft9jB,OAAQ,CAAEtC,MAAO4/jB,EAAazosB,MhB9Df,MgBiEnB0osB,SAAW39d,OAAOpyK,EAAO1lE,EAAI3J,KAAKyyF,OAASu3jB,EAAe36kB,EAAOvb,GACtD4tL,OAAOryK,EAAO1lE,EAAG0lE,EAAOvb,EAAK9zD,KAAKi/sB,QAAU,GAC5Cv9d,OAAOryK,EAAO1lE,EAAG0lE,EAAOvb,EAAK9zD,KAAKi/sB,QAAU,GAC5Cj0rB,QAEJo0rB,EAGXJ,aACI,MAAMjgsB,EAAU/e,KAAK+e,QACfsgsB,EAAWtgsB,EAAQmgsB,IAAI3/jB,OAASxgI,EAAQwgI,MACxC1sB,EAAS,IAAI2klB,KAAWx3sB,KAAKqvE,OAAQrvE,KAAKi/sB,SAOhD,OALY,IAAI9vlB,GAAO0D,EAAQ,CAC3BnkH,KAAM,CAAE6wI,MAAO8/jB,GACfx9jB,OAAQ,CAAEtC,MAAO8/jB,MAO7Bv8D,GAAkBw8D,GAAe,CAC7BJ,IAAK,CACDlwpB,KAxFS,KA0Fb4lW,MAAO,CACHl+Y,MAAO,GACPnM,OAAQ,IAEZ46T,UAAW,CACPr9T,KAAMqvsB,GACNjrsB,ShBvGc,OgB2GtB,SAAeozsB,GCpGT92jB,GAAQwuW,KAEd,iBAA0B8hN,EAEtB54D,OAAO5vf,GACH,MAAMmjP,EAAWzzY,KAAKyzY,SACtBzzY,KAAK0gG,MAAMw/iB,OAAO5vf,GAClBtwJ,KAAKu/sB,iBAAmBv/sB,KAAK0gG,MAAM4vD,KAEnC,QAAS3hJ,EAAI,EAAGA,EAAI8kY,EAAS1tY,OAAQ4I,IACjC8kY,EAAS9kY,GAAGuxoB,OAAOlgpB,KAAK0gG,MAAM0+iB,KAC9Bp/oB,KAAKu/sB,iBAAmB/H,WAAex3sB,KAAKu/sB,iBAAkB9rU,EAAS9kY,GAAG2hJ,MAG9EtwJ,KAAKw/sB,SAASlvjB,GACdtwJ,KAAKy/sB,WAAWnvjB,GAChBtwJ,KAAK07sB,aAAa17sB,KAAKo4sB,UAAW3kU,EAAUzzY,KAAK0gG,OACjD1gG,KAAK+3sB,QAGT2D,aAAatD,EAAW3kU,EAAU/yS,GAC9B,MAAM2gjB,EAAUrhpB,KAAKg4sB,SAAW,IAAIxvjB,GAEpC64f,EAAQnwnB,OAAOknrB,GACf/2D,EAAQnwnB,OAAOwvE,EAAMqhe,OACrBs/E,EAAQnwnB,OAAOwvE,EAAM0gY,QACrBphe,KAAK0/sB,eAAejsU,GACpB4tQ,EAAQnwnB,OAAOwvE,EAAM47mB,eAGzBoD,eAAejsU,GACX,QAAS9kY,EAAI,EAAGA,EAAI8kY,EAAS1tY,OAAQ4I,IAAK,CACtC,MAAM03B,EAAUotW,EAAS9kY,GACzB03B,EAAQs2E,SACR38G,KAAKg4sB,SAAS9mrB,OAAOmV,EAAQwiC,UAE7BxiC,EAAQ1iC,MAAM0iC,EAAQtnB,QAAQpb,QAItC67sB,SAASlvjB,GACL,MAAM8uf,EAAMp/oB,KAAK0gG,MAAM0+iB,IAEjB5ylB,EAAOt/C,KAAKiN,IAAIna,KAAK2/sB,QADP3/sB,KAAKu/sB,iBACuBjvjB,IAChD,IAEImngB,GAASmoD,GAASnnD,GAAS35kB,GAAK+goB,GAFhCptqB,EAAMquD,GAAMt0C,EhS7CO,GgS8CnBh+C,GAAMsyF,IAAOt0C,EhS9CM,GgSgDnBszpB,GAAY,EACZnxsB,GAAI,EAER,KAAOA,KAAM,MACTmxsB,GAAaD,KAAYpnD,GAAYqnD,GAAY,EAAK,IAElDA,GAAY,GAIZrtqB,IAAQqsC,KACR24kB,GAAUz3pB,KAAK+/sB,WAAWttqB,EAAK69G,EAAM8uf,GACjC,GAAKqY,IAAWA,IAAW,IAK/BjppB,KAAQswE,KACR25kB,GAAUz4pB,KAAK+/sB,WAAWvxsB,GAAK8hJ,EAAM8uf,GACjC,GAAKqZ,IAAWA,IAAW,KAM/B35kB,GADA24kB,GAAU,GAAKgB,GAAU,EACb,EAANhmnB,EACH2ipB,GAAc,GAAK38B,GAAU,EACpB,EAANjqpB,GAEAsyF,IAAQruD,EAAMjkC,IAAO,GAAM,EhS7ElB,GgSgFnBoxsB,GAAU5/sB,KAAK+/sB,WAAWjhoB,GAAKwxE,EAAM8uf,GACjC,GAAKwgE,IAAWA,IAAW,MAI/BC,GAAUpnD,GAENmnD,GAAU,GACVpxsB,GAAMswE,GACN25kB,GAAUmnD,KAEVntqB,EAAMqsC,GACN24kB,GAAUmoD,IAKtBG,WAAWvzpB,EAAM8jG,EAAM8uf,GACnB,MAAM1+iB,EAAQ1gG,KAAK0gG,MACb+yS,EAAWzzY,KAAKyzY,SAChBhhT,GAAS2sjB,EAAI88D,aACb8D,GAAW5gE,EAAI5vhB,QAErBwwlB,GAASlD,WAAWrqnB,GAASjmC,GAAMuwpB,WAAWtqnB,GAASjmC,GAEvDk0C,EAAM0+iB,IAAM4gE,GACZt/mB,EAAMw/iB,OAAO5vf,GACbtwJ,KAAKigtB,SAAWv/mB,EAAM4vD,KAEtB,QAAS3hJ,GAAI,EAAGA,GAAI8kY,EAAS1tY,OAAQ4I,KACjC8kY,EAAS9kY,IAAGuxoB,OAAO8/D,IACnBhgtB,KAAKigtB,SAAWzI,WAAex3sB,KAAKigtB,SAAUxsU,EAAS9kY,IAAG2hJ,MAG9D,OAAOtwJ,KAAK2/sB,QAAQ3/sB,KAAKigtB,SAAU3vjB,GAGvCqvjB,QAAQO,EAASjklB,GACb,OAAO/uH,KAAKulC,IAAIwpF,EAAIvlH,QAAUwpsB,EAAQxpsB,QAASulH,EAAI1xH,SAAW21sB,EAAQ31sB,UAG1Ek1sB,WAAWnvjB,GACP,MAAM6vjB,EAAgBngtB,KAAKigtB,SAAS5woB,SAC9Bm4kB,EAAYl3f,EAAKjhF,SACjB+woB,EAAWD,EAAcx2sB,EAAI69oB,EAAU79oB,EACvC02sB,EAAWF,EAAcrspB,EAAI0zlB,EAAU1zlB,GACrC4sC,SAAO+yS,aAAazzY,KAE5B0gG,GAAM0+iB,IAAI/vkB,OAAO1lE,GAAKy2sB,EACtB1/mB,GAAM0+iB,IAAI/vkB,OAAOvb,GAAKuspB,EAEtB3/mB,GAAMw/iB,OAAO5vf,GAEb,QAAS3hJ,GAAI,EAAGA,GAAI8kY,GAAS1tY,OAAQ4I,KACjC8kY,GAAS9kY,IAAGuxoB,OAAOx/iB,GAAM0+iB,KACzBp/oB,KAAKigtB,SAAWzI,WAAe92mB,GAAM4vD,KAAMmjP,GAAS9kY,IAAG2hJ,MAI/DgojB,eACI,MAAMv5rB,EAAU/e,KAAK+e,QACf00X,EAAW10X,EAAQ20X,QACnBhzS,EAAQ1gG,KAAK0gG,MAAQ,IAAI+9mB,GAAY1/rB,EAAQ2hF,MAAO1gG,KAAKwmmB,gBAE/DxmmB,KAAKyzY,SAAW,GAEhB,MAAM6sU,EAAc3grB,GAAQ8zW,GAAYA,EAAW,CAAEA,GACrD,QAAS9kY,EAAI,EAAGA,EAAI2xsB,EAAYv6sB,OAAQ4I,IAAK,CACzC,MAAM03B,GAAU,IAAIi5qB,GAAc5+mB,EAAO+5iB,GAAW,GAAI6lE,EAAY3xsB,GAAI,CACpEw2T,UAAW,CACP6W,YAAaj9T,EAAQi9T,gBAI7Bh8U,KAAKyzY,SAAShuY,KAAK4gC,MAK/By8mB,GAAkBy9D,GAAa,CAC3BvkY,aAAa,EACbo8X,UAAW,CACPpyX,WAAY,MAIpB,SAAeu6X,GCzKf,iBAAuB9B,GAEnBlB,gBACI,MAAQ9qqB,MAAKjkC,MAAK44f,wBAAuBo5M,gBAAiBxgtB,KAAK+e,QAE/D,MAAO,CAAE,CAAEqpD,KAAM31B,EAAKg7F,GAAIj/H,EAAK+wI,MAAO6nX,EAAuBr2W,QAASyvjB,IAG1EhE,YACI,OAAO,EAGXiE,sBAAsBnvnB,GAClB,MAAM4X,EAAWlpG,KAAKohe,OAAO5ia,SAAS,GAAG0qC,WAErClpG,KAAK+e,QAAQgwE,QACbma,EAASw3mB,YAAYpvnB,GAErB4X,EAASy3mB,cAAcrvnB,GAI/BsvnB,SAASx4oB,EAAMqlE,EAAI1uH,GACf,MAAMgwE,EAAU/uF,KAAK+e,QAAQgwE,QAEvB2D,EAAa1yF,KAAKi+pB,UAAUlvkB,EAAU0+C,EAAKrlE,GAC3CuqB,GAAW3yF,KAAKi+pB,UAAUlvkB,EAAU3mB,EAAOqlE,GAE3C7lE,GAAQ5nE,KAAKy9sB,YAAY/qnB,EAAYC,GAAU3yF,KAAKs9sB,iBAAkBv+rB,GAE5E,YAAKqid,OAAOlwc,OAAO02C,IAEZA,IAIfk7kB,GAAkB+9D,GAAU,CACxBpuqB,IAAK,EACLjkC,IAAK,IAELqrY,WAAY,CACR5lE,SAAS,GAGb6lE,WAAY,CACR7lE,SAAS,GAGbu2D,OAAQ,CACJv2D,SAAS,GAGbvhP,WAAY,EACZC,SAAU,IACV6tnB,aAAc,UAGlB,SAAeK,GCtDf,iBAAoC7pN,GAChCl3f,YAAY4U,EAASqK,GACjBS,MAAM9K,EAASqK,GAEf,MAAMg3V,EAAmB/1W,KAAK+e,QACxB7S,EAAYgB,KAAKiN,IAAI47V,EAAiB2oW,SAAW3oW,EAAiB4oW,UAAY5oW,EAAiB7pW,SAAY,IACjH6pW,EAAiB7pW,SAAWy0jB,GAAWz0jB,EnBZzB,ImBID,KAUb,MAAM40sB,EAAapssB,EAAQm0D,SAAS9pD,QAAQF,IAAI,gBAC1C0gI,GAAQ7qI,EAAQqssB,eAClBD,IAAevhkB,KACfv/I,KAAK8gtB,WAAa,IAAIzikB,KAAMyikB,GAC5B9gtB,KAAKu/I,MAAQ,IAAIlB,KAAMkB,KAI/B/yF,KAAKq8B,GACD,MAAQ9pE,UAAS+hsB,aAAYvhkB,SAAUv/I,KACjCsxF,EAAQw/kB,GAAiB/xpB,EAAQ4/rB,SAAU5/rB,EAAQ2/rB,SAAU71nB,GAGnE,GAFA7oF,KAAK0U,QAAQ48E,MAAMA,GAEfiuD,EAAO,CACP,MAAM1uF,GAAIiwC,GAAMgwkB,GAAiBgwC,EAAWjwpB,EAAG0uF,EAAM1uF,EAAGg4B,IAClDr5B,GAAIsxC,GAAMgwkB,GAAiBgwC,EAAWtxpB,EAAG+vF,EAAM/vF,EAAGq5B,IAClD32D,GAAI4uE,GAAMgwkB,GAAiBgwC,EAAW5urB,EAAGqtH,EAAMrtH,EAAG22D,IAExD7oF,KAAK0U,QAAQmtI,OAAO,IAAIxD,KAAMxtF,GAAGrB,GAAGt9B,IAAGgmjB,WAKnD4qE,GAAkBk+D,GAAuB,CACrCn8W,OAAQqyW,GACRhrsB,SnBvCkB,MmB0CtB8qf,oBAA0CogN,GAAsB4J,IAEhE,SAAeA,GCvCf,iBAA2BnH,EAEvBD,UACI,MAAQl5mB,QAAO3hF,WAAY/e,KACrB2+sB,EAAWj+mB,EAAMu9jB,UAAUl/oB,EAAQ46rB,WACnC+E,EAAWh+mB,EAAMu9jB,UAAUl/oB,EAAQpb,OAErC3D,KAAKmlU,WACLnlU,KAAKmlU,UAAU3+S,SAGmB,IAAtCixM,EAAY0tG,UAAU6W,aAClBh8U,KAAKsxF,MAAMotnB,GACX1+sB,KAAK6hJ,OAAO7hJ,KAAK+gtB,kBAEjB/gtB,KAAKmlU,UAAY,IAAI67Y,GAAsBhhtB,KAAMy6oB,GAAW17nB,EAAQomT,UAAW,CAC3Ew5Y,SAAUA,EACVD,SAAUA,KAGd1+sB,KAAKmlU,UAAUO,QAIvBp0O,MAAM3tF,GACF,MAAMulG,EAAWlpG,KAAK6oE,SAASqgC,WAC3BlpG,KAAK0gG,MAAM3hF,QAAQgwE,QACnBma,EAASy3mB,cAAch9sB,GAEvBulG,EAASw3mB,YAAY/8sB,GAEzB3D,KAAK0gG,MAAM+/mB,sBAAsB98sB,GAGrCk+I,OAAOl+I,GACH3D,KAAK6oE,SAASg5E,OAAOl+I,GAGzBg5G,SACI,GAAI38G,KAAK6oE,SACL,OAGJ,MAAQ63B,QAAO3hF,WAAY/e,MAED,IAAtB+e,EAAQomT,WACRs1U,GAAW17nB,EAAQomT,UAAW,CAC1BzyO,WAAY,EACZrjB,OAAQqxB,EAAM0+iB,IAAI/vkB,OAClB0f,QAAS2R,EAAM3hF,QAAQgwE,UAI/B/uF,KAAK6oE,SAAW63B,EAAMkgnB,SAASlgnB,EAAM3hF,QAAQ0zB,IAAKzyC,KAAK+e,QAAQpb,MAAO,CAClE47I,MAAOv/I,KAAK+gtB,eACZ32sB,QAAS2U,EAAQ3U,QACjB2mJ,QAASrwD,EAAM3hF,QAAQyhsB,eAI/BO,eACI,MAAQtuqB,MAAKjkC,OAAQxO,KAAK0gG,MAAM3hF,SACxBs2I,SAAQ9V,QAAO57I,SAAU3D,KAAK+e,QAChCvX,GAAeytU,GAAStxU,GAASA,EAAQ8uC,EAE/C,GAAI4iH,EACA,QAASlrH,GAAM,EAAGA,GAAMkrH,EAAOtvJ,OAAQokC,KAAO,CAC1C,MAAQo1G,MAAO0hkB,GAAY74oB,QAAO31B,EAAKg7F,MAAKj/H,GAAQ6mJ,EAAOlrH,IAE3D,GAAIi+B,IAAQ5gE,IAAgBA,IAAgBimI,GACxC,OAAOwzkB,GAKnB,OAAO1hkB,EAGX2ggB,SACIlgpB,KAAK28G,SAEL38G,KAAKswJ,KAAOtwJ,KAAK6oE,SAASynF,QAIlCwyf,GAAkBo+D,GAAc,CAC5B/7Y,UAAW,CACPr9T,KAAMsvsB,GACNlrsB,SpB7Fc,OoBiGtB,SAAeg1sB,GCTfC,GAjFA,iBAAuBZ,GAEnBra,WAAWlwT,GACPx2X,MAAM0mrB,WAAWlwT,GAEjBh2Y,KAAK+e,QAAQwgI,MAAQv/I,KAAK+e,QAAQwgI,QAAUv/I,KAAKg2Y,MAAMtC,SAAW,IAAIn0P,MAG1E+4jB,eACI,MAAMv5rB,EAAU/e,KAAK+e,QACf2hF,EAAQ1gG,KAAK0gG,MAAQ,IAAImgnB,GAAS9hsB,EAAQ2hF,MAAO1gG,KAAKwmmB,gBAEtD9yN,EAAU,IAAIwtU,GAAaxgnB,EAAO+5iB,GAAW,GAAI,CACnDplf,OAAQt2I,EAAQs2I,OAChB9V,MAAOxgI,EAAQwgI,MACf57I,MAAOob,EAAQpb,MACfyG,QAAS2U,EAAQ3U,QACjB+6T,UAAW,CACP6W,YAAaj9T,EAAQi9T,gBAI7Bh8U,KAAKyzY,SAAW,CAAEC,GAGtBgsU,eAAejsU,GACX,QAAS9kY,EAAI,EAAGA,EAAI8kY,EAAS1tY,OAAQ4I,IAAK,CACtC,MAAM03B,EAAUotW,EAAS9kY,GACzB03B,EAAQs2E,SAERt2E,EAAQ1iC,MAAM0iC,EAAQtnB,QAAQpb,QAItCm0sB,iBAAiBn0sB,GACb3D,KAAK+e,QAAQpb,MAAQA,EAGzBo9sB,eACI,MAAMrtU,EAAU1zY,KAAKyzY,SAAS,GAC9B,GAAIC,EACA,OAAOA,EAAQqtU,eAIvBK,oBAAoB1qsB,EAAOnM,GACvB,MAAMykD,EAAOhvD,KAAK6msB,UACZx3nB,EAASrvE,KAAK0gG,MAAM0+iB,IAAI/vkB,OAE9B,IAAID,EAAOC,EAAO1lE,EAAI+M,EAAQ,EAC1By3G,GAAM9+C,EAAOvb,EAAIvpD,EAAS,EAE9B,GAAImM,EAAQs4C,EAAKt4C,MAAO,CACpB,MAAM44D,GAAQF,EAAO14D,EAErB04D,EAAOliE,KAAKsB,IAAI4gE,EAAM,GAElBE,GAAQtgB,EAAKt4C,QACb04D,GAAQE,GAAQtgB,EAAKt4C,OAI7B,GAAInM,EAASykD,EAAKzkD,OAAQ,CACtB,MAAM+lJ,GAAOtwJ,KAAK0gG,MAAM4vD,KAClB+wjB,GAAS/wjB,GAAKiuW,cAAczqc,EAC5B41Q,GAASv7M,GAAM5jH,EAErB4jH,GAAMjhH,KAAKsB,IAAI2/G,GAAKmiC,GAAKjsH,OAAOyvB,GAE5B41Q,GAAS23Y,KACTlzlB,IAAOu7M,GAAS23Y,IAIxB,MAAO,CACHjyoB,KAAMA,EACN++C,IAAKA,MClEjBmzlB,GAbA,iBAA4BC,GACxBjJ,eACI,MAAMtlD,EAAehzpB,KAAK+e,QAAQ2hF,MACK,iBAA5BsyjB,EAAatgkB,aACpBsgkB,EAAatgkB,WANC,IASlBsgkB,EAAargkB,SAAWqgkB,EAAatgkB,WAAa,IAElDlzE,MAAM84rB,iBCLP,iBAAuB/7D,KAC1Bz8oB,YAAYif,GACRS,QACAxf,KAAKy4Y,WAAW15X,GAChB/e,KAAKwhtB,iBAGTA,kBAEA/oU,WAAW15X,GACP/e,KAAK+e,QAAUlZ,OAAOw0D,OAAO,GAAIr6D,KAAK+e,QAASA,GAC/C/e,KAAKyhtB,gBAAkBzhtB,KAAK+e,QAAQ2isB,aAAe,EAAI1htB,KAAK+e,QAAQ0isB,gBAAkB,EAG1FnpiB,OAAO30K,EAAO+S,EAAOnM,GACjB,MAAMo3sB,EAAiB/2G,GAAQjnmB,GAASqvB,OAAOrvB,GAASA,EAExD,YAAKi+sB,UAAUD,EAAgBjrsB,EAAOnM,GAElCvK,KAAK+e,QAAQ2isB,cACb1htB,KAAK0htB,eAGT1htB,KAAK6htB,UAED7htB,KAAK+e,QAAQ2isB,cACb1htB,KAAK0htB,eAGF,CACHtmU,SAAUp7Y,KAAKo7Y,SACfshB,QAAS18Z,KAAK08Z,SAItBklT,aAEAF,eACI1htB,KAAK08Z,QAAQj3Z,KAAKzF,KAAK+e,QAAQ0isB,iBAxCL,IA2C9BI,WAEAC,sBAAsB12P,GAClB,MAAM,IAAI30c,MAAO,cAAa20c,iCAAyCprd,KAAKgF,UAIpF89oB,GAAkBi/D,GAAU,CACxBN,gBAnD8B,GAoD9BC,cAAc,EACdM,aAAa,ICxDjB,MAAM9plB,GAASryH,OAAOw0D,OAEf,iBAAqB0npB,GACxBP,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,UACNi9sB,aAAc,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UACnHC,eAAgB,GAChBC,eAAgB,EAChBC,mBAAoB,GACpBC,YAAa,GACbC,WAAY,GACZC,KAAM,IACNC,MAAO,SACPC,KAAM,UAIdb,UAAUj+sB,EAAO+S,GACb1W,KAAK08Z,QAAU,GACf18Z,KAAK2D,MAAQA,EACb3D,KAAK0W,MAAQA,EACb1W,KAAKg3pB,WAAa,EAGtB6qD,UACI,MAAMl+sB,EAAQ3D,KAAK2D,MAEnB3D,KAAK0itB,WAAW1itB,KAAKwitB,OAErB,QAAS7zsB,EAAI,EAAGA,EAAIhL,EAAMoC,OAAQ4I,IAC9B3O,KAAK2itB,aAAah/sB,EAAMywC,OAAOzlC,IAG/B3O,KAAK+e,QAAQijsB,aACbhitB,KAAKgitB,cAGThitB,KAAK0itB,WAAW1itB,KAAKyitB,MACrBzitB,KAAK4itB,cAGTA,cACI5itB,KAAKo7Y,SAAWp7Y,KAAK0W,OAAS1W,KAAKg3pB,WAAah3pB,KAAKyhtB,iBAGzDO,cACI,MAAMr+sB,EAAQ3D,KAAK2D,MACnB,IAAIoC,EAASpC,EAAMoC,OACnB,MAAM88sB,EAAS7itB,KAAK8itB,eAAen/sB,EAAOoC,EAAQ/F,KAAKkitB,gBAAkBlitB,KAAKqitB,YAO9E,GALAritB,KAAK+itB,SAAW/vrB,OAAO6vrB,GACvB7itB,KAAK0itB,WAAW1itB,KAAKiitB,aAAaY,IAElC98sB,IAEIA,GAAU/F,KAAKoitB,mBAAoB,CACnC,IAAIz1a,GAAUk2a,EAAS7itB,KAAK8itB,eAAen/sB,EAAOoC,EAAQ/F,KAAKmitB,iBAAmBnitB,KAAKqitB,YACvFritB,KAAK+itB,UAAYp2a,EACjB3sS,KAAK0itB,WAAW1itB,KAAKiitB,aAAat1a,KAI1Cm2a,eAAen/sB,EAAOoC,EAAQ0I,GAC1B,IAAIu0sB,EAAc,EAElB,QAASr0sB,EAAI,EAAGA,EAAIhL,EAAMoC,OAAQ4I,IAC9Bq0sB,GAAehjtB,KAAKijtB,cAAcjjtB,KAAKsnC,SAAS3jC,EAAMywC,OAAOzlC,IAAK5I,EAAQ4I,EAAGF,GAGjF,OAAOu0sB,EAGXC,cAAct/sB,EAAOoC,EAAQ6d,EAAOnV,GAEhC,QADgB1I,EAAS6d,GAASnV,GAASA,GAC3B9K,EAGpB2jC,SAAS8jb,GACL,OAAKj0c,MAAMi0c,IAEAA,IAAcprd,KAAKuitB,MAC1BvitB,KAAK8htB,sBAAsB12P,GAGxBprd,KAAKsitB,YALD1+sB,SAASwnd,EAAW,IAQnCu3P,aAAav3P,GACT,MAAMznd,EAAQ3D,KAAKsnC,SAAS8jb,GAG5Bprd,KAAK0itB,WAFW1itB,KAAKiitB,aAAat+sB,IAKtC++sB,WAAWhmT,GACP,IAAI/4Z,EAEJ,QAASgL,EAAI,EAAGA,EAAI+tZ,EAAQ32Z,OAAQ4I,IAChChL,EAAQC,SAAS84Z,EAAQtoX,OAAOzlC,GAAI,IACpC3O,KAAK08Z,QAAQj3Z,KAAK9B,GAClB3D,KAAKg3pB,YAAcrzpB,GAK/Bm/oB,GAAkBogE,GAAQ,CACtBlB,aAAa,IC7GjB,MAAM9plB,GAASryH,OAAOw0D,OAEf,iBAAyB0npB,GAC5BP,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTmjtB,kBAAmB,KAI3BtB,UACI,MAAMl+sB,EAAQ3D,KAAK2D,MAEnB3D,KAAKojtB,WAEL,QAASj5qB,EAAM,EAAGA,EAAMxmC,EAAMoC,OAAQokC,IAClCnqC,KAAK2itB,aAAah/sB,EAAMywC,OAAOjK,IAG/BnqC,KAAK+e,QAAQijsB,aACbhitB,KAAKqjtB,eAGTrjtB,KAAKsjtB,UACLtjtB,KAAKujtB,gBAGTZ,aAAav3P,GACT,MAAMo4P,EAAgBxjtB,KAAKiitB,aAAa72P,GAEnCo4P,GACDxjtB,KAAK8htB,sBAAsB12P,GAG/Bprd,KAAKyjtB,QAAQD,GAGjBC,YAGG,iBAAqBC,GACxBlC,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,UACNq9sB,YAAa,GACbsB,SAAU,IACVC,SAAU,EACVC,SAAU,EACVC,eAAgB,IAChBC,gBAAiB,CACb7xrB,EAAK,KACLiwJ,EAAK,KACLzyK,EAAK,SACLiwc,EAAK,UAETsiQ,aAAc,CACV,EAAK,CAAEvlT,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC,EAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,GACxC49T,EAAK,CAAEm7F,QAAW,YAAa/4Z,MAAS,IACxC+L,EAAK,CAAEgtZ,QAAW,YAAa/4Z,MAAS,IACxC0ukB,EAAK,CAAE31K,QAAW,YAAa/4Z,MAAS,IACxCwilB,EAAK,CAAEzpL,QAAW,YAAa/4Z,MAAS,IACxCs0a,EAAK,CAAEvb,QAAW,YAAa/4Z,MAAS,IACxCyilB,EAAK,CAAE1pL,QAAW,YAAa/4Z,MAAS,IACxCylJ,EAAK,CAAEszQ,QAAW,YAAa/4Z,MAAS,IACxC2yB,EAAK,CAAEomY,QAAW,YAAa/4Z,MAAS,IACxC8iE,EAAK,CAAEi2V,QAAW,YAAa/4Z,MAAS,IACxCsE,EAAK,CAAEy0Z,QAAW,YAAa/4Z,MAAS,IACxCwlN,EAAK,CAAEuzM,QAAW,YAAa/4Z,MAAS,IACxC2ukB,EAAK,CAAE51K,QAAW,YAAa/4Z,MAAS,IACxCwxP,EAAK,CAAEunK,QAAW,YAAa/4Z,MAAS,IACxC+yJ,EAAK,CAAEgmQ,QAAW,YAAa/4Z,MAAS,IACxCsqpB,EAAK,CAAEvxP,QAAW,YAAa/4Z,MAAS,IACxCulN,EAAK,CAAEwzM,QAAW,YAAa/4Z,MAAS,IACxCs+T,EAAK,CAAEy6F,QAAW,YAAa/4Z,MAAS,IACxCgM,EAAK,CAAE+sZ,QAAW,YAAa/4Z,MAAS,IACxC4iE,EAAK,CAAEm2V,QAAW,YAAa/4Z,MAAS,IACxC0ilB,EAAK,CAAE3pL,QAAW,YAAa/4Z,MAAS,IACxC4/a,EAAK,CAAE7mB,QAAW,YAAa/4Z,MAAS,IACxCmO,EAAK,CAAE4qZ,QAAW,YAAa/4Z,MAAS,IACxCg8c,EAAK,CAAEjjD,QAAW,YAAa/4Z,MAAS,IACxCoE,EAAK,CAAE20Z,QAAW,YAAa/4Z,MAAS,IACxCmC,EAAK,CAAE42Z,QAAW,YAAa/4Z,MAAS,IACxCg/oB,EAAK,CAAEjmP,QAAW,YAAa/4Z,MAAS,IACxC,IAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,IACxC,IAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,IACxC,IAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,IACxCkO,EAAK,CAAE6qZ,QAAW,YAAa/4Z,MAAS,IACxC,IAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,IACxC,IAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,IACxC,IAAK,CAAE+4Z,QAAW,YAAa/4Z,MAAS,IACxC6+sB,MAAO,CAAE9lT,QAAS,gBAK9BklT,UAAUj+sB,EAAO+S,EAAOnM,GACpBvK,KAAK0W,MAAQA,EACb1W,KAAKuK,OAASA,EACdvK,KAAK2D,MAAQA,EACb3D,KAAK2vb,WAAahsb,EAAMoC,OACxB/F,KAAK08Z,QAAU,GACf18Z,KAAKgktB,cAAgB,GAGzBT,gBACI,MAAMU,EAAcjktB,KAAKmjtB,kBACnBQ,EAAW3jtB,KAAK2jtB,SAChBlgR,EAAYv2b,KAAKqB,KAAKrB,KAAKsB,IAAI,IAAOxO,KAAK0W,MAAO,KACxD,IAAI0kY,EACAqnM,EAAQzilB,KAAK4jtB,SAEjB,GAAI5jtB,KAAKuK,OAASk5b,EACd,MAAM,IAAIhtb,MAAO,kEAAiEzW,KAAKuK,sCAAsCk5b,QAKjI,IAFAroD,EAAWp7Y,KAAKkktB,YAAYzhI,GAErBrnM,EAAW6oU,GAAexhI,EAAQkhI,GACrClhI,EAAQ99iB,YAAY89iB,EAAQ,IAAK3je,QAAQ,IACzCs8R,EAAWp7Y,KAAKkktB,YAAYzhI,GAGhC,GAAIrnM,EAAW6oU,EAAa,CACxB,IAAIlnmB,GAAW7vG,KAAKqB,KAAKvO,KAAKmktB,aAAaR,GAAYM,GACvD,MAAM,IAAIxtsB,MAAO,gEAA+DzW,KAAK0W,4CAA4C1W,KAAK2D,aAAao5G,SAGvJ/8G,KAAKyilB,MAAQA,EACbzilB,KAAKo7Y,SAAWA,EAChBp7Y,KAAKgktB,cAAgBhktB,KAAKgktB,cAAclwrB,UAAU,EAAG9zB,KAAKgktB,cAAcj+sB,OAAS,GACjF/F,KAAK08Z,QAAU18Z,KAAK08Z,QAAQ/oX,OAAO3zC,KAAKgktB,cAAcz4rB,QAAQ,SAAUk3jB,GAAOzrkB,MAAMhX,KAAK8jtB,iBAG9FI,YAAYzhI,GACR,OAAOzilB,KAAK0W,MAAQ1W,KAAKmktB,aAAa1hI,GAG1C0hI,aAAa1hI,GAET,OAAOzilB,KAAKyhtB,gBADY,GAAKh/H,EAAQ,IACYzilB,KAAK2vb,WAAa,GAAK3vb,KAAK6jtB,UAAY7jtB,KAAK2vb,WAAa,GAG/GyzR,WACIpjtB,KAAK0itB,WAAW1itB,KAAKiitB,aAAaO,MAAM9lT,SACxC18Z,KAAKoktB,kBAGTX,QAAQr4P,GACJprd,KAAK0itB,WAAWt3P,EAAU1uD,SAC1B18Z,KAAKoktB,kBAGTd,UACItjtB,KAAK0itB,WAAW1itB,KAAKiitB,aAAaO,MAAM9lT,SAG5CgmT,WAAWhmT,GACP,QAAS/tZ,EAAI,EAAGA,EAAI+tZ,EAAQ32Z,OAAQ4I,IAChC3O,KAAKgktB,eAAiBhktB,KAAK+jtB,gBAAgBrnT,EAAQtoX,OAAOzlC,IAIlEy1sB,kBACIpktB,KAAKgktB,eAAiBhktB,KAAK6jtB,SAAW7jtB,KAAK8jtB,gBAInDhhE,GAAkBuhE,GAAQ,CACtBrC,aAAa,ICpLV,MAAMsC,GAAqB,CAC9B3B,aAAav3P,IACLprd,KAAKiitB,aAAa72P,IAClBprd,KAAKyjtB,QAAQzjtB,KAAKiitB,aAAa72P,KACxBA,GAAUx5O,WAAW,GAAK,IACjC5xO,KAAK8htB,sBAAsB12P,IAE3Bprd,KAAKuktB,YAAYn5P,GAAUx5O,WAAW,KAI9C2ye,YAAYv4rB,IACR,IAAIk6jB,EAEJ,QAASv3kB,EAAI,EAAGA,EAAI3O,KAAKwktB,iBAAiBz+sB,OAAQ4I,IAG9C,GAFAu3kB,EAAWlmlB,KAAKwktB,iBAAiB71sB,GAAGilB,KAAK5zB,KAAMgsB,IAE3Ck6jB,EAAU,CACV,QAASu+H,EAAe,EAAGA,EAAev+H,EAASnglB,OAAQ0+sB,IAEvDzktB,KAAKyjtB,QADWv9H,EAASu+H,IAK7B,YADAzktB,KAAK2vb,YAAcu2J,EAASnglB,OAAS,KAMjDy+sB,iBAAkB,CACd,SAASx4rB,IACL,GAAI,IAAMA,IAAQA,IAAQ,IACtB,MAAO,CAAChsB,KAAKiitB,aAAajitB,KAAK0ktB,gBAAgB,IAAK1ktB,KAAKiitB,aAAajvrB,OAAOC,aAAajH,GAAO,OAGzG,SAASA,IACL,GAAI,IAAMA,IAAQA,IAAQ,GACtB,MAAO,CAAChsB,KAAKiitB,aAAajitB,KAAK0ktB,gBAAgB,IAAK1ktB,KAAKiitB,aAAajvrB,OAAOC,aAAajH,GAAO,OAGzG,SAASA,IACL,GAAI,GAAKA,IAAQA,IAAQ,GACrB,MAAO,CAAChsB,KAAKiitB,aAAajitB,KAAK0ktB,gBAAgB,IAAK1ktB,KAAKiitB,aAAajvrB,OAAOC,aAAajH,GAAO,OAGzG,SAASA,IACL,IAAIzZ,EACAoysB,EAEJ,GAAK3ktB,KAAK4ktB,kBAAkB54rB,IAGrB,CACHzZ,EAAS,GAET,QAAS5D,EAAI,EAAGA,EAAI3O,KAAK4ktB,kBAAkB54rB,IAAMjmB,OAAQ4I,IACrD4D,EAAO9M,KAAKzF,KAAKiitB,aAAajitB,KAAK0ktB,gBAAgB,KACnDnysB,EAAO9M,KAAKzF,KAAKiitB,aAAajitB,KAAK4ktB,kBAAkB54rB,IAAMrd,UAP/Dg2sB,EAAwC,EAAxBz3sB,KAAKC,MAAM6e,GAAO,KAAWA,GAAO,IAAM,GAAK,GAC/DzZ,EAAS,CAACvS,KAAKiitB,aAAajitB,KAAK0ktB,gBAAgB,IAAK1ktB,KAAKiitB,aAAajvrB,OAAOC,aAAa0xrB,KAUhG,OAAOpysB,IAGfqysB,kBAAmB,CACf,EAAK,CAAC,KACN,GAAM,CAAC,KACP,GAAM,CAAC,KACP,IAAO,CAAC,IAAK,IAAK,IAAK,MAE3BC,sBAAuB,CACnB,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IAEV5C,aAAc,CACV,KAAK,EACL,KAAK,EACLpwsB,GAAK,EACL,KAAK,GAET6ysB,gBAAiB,CAAC,SAAU,SAAU,SAAU,WCnF9CxslB,GAASryH,OAAOw0D,OAEf,iBAAqBqppB,GACxBlC,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,UACNk9sB,eAAgB,GAChBC,eAAgB,GAChBE,YAAa,GACbJ,aAAc,CACV,EAAK,CAAEvlT,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC,EAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,GACrC49T,EAAK,CAAEm7F,QAAW,SAAU/4Z,MAAS,IACrC+L,EAAK,CAAEgtZ,QAAW,SAAU/4Z,MAAS,IACrC0ukB,EAAK,CAAE31K,QAAW,SAAU/4Z,MAAS,IACrCwilB,EAAK,CAAEzpL,QAAW,SAAU/4Z,MAAS,IACrCs0a,EAAK,CAAEvb,QAAW,SAAU/4Z,MAAS,IACrCyilB,EAAK,CAAE1pL,QAAW,SAAU/4Z,MAAS,IACrCylJ,EAAK,CAAEszQ,QAAW,SAAU/4Z,MAAS,IACrC2yB,EAAK,CAAEomY,QAAW,SAAU/4Z,MAAS,IACrC8iE,EAAK,CAAEi2V,QAAW,SAAU/4Z,MAAS,IACrCsE,EAAK,CAAEy0Z,QAAW,SAAU/4Z,MAAS,IACrCwlN,EAAK,CAAEuzM,QAAW,SAAU/4Z,MAAS,IACrC2ukB,EAAK,CAAE51K,QAAW,SAAU/4Z,MAAS,IACrCwxP,EAAK,CAAEunK,QAAW,SAAU/4Z,MAAS,IACrC+yJ,EAAK,CAAEgmQ,QAAW,SAAU/4Z,MAAS,IACrCsqpB,EAAK,CAAEvxP,QAAW,SAAU/4Z,MAAS,IACrCulN,EAAK,CAAEwzM,QAAW,SAAU/4Z,MAAS,IACrCs+T,EAAK,CAAEy6F,QAAW,SAAU/4Z,MAAS,IACrCgM,EAAK,CAAE+sZ,QAAW,SAAU/4Z,MAAS,IACrC4iE,EAAK,CAAEm2V,QAAW,SAAU/4Z,MAAS,IACrC0ilB,EAAK,CAAE3pL,QAAW,SAAU/4Z,MAAS,IACrC4/a,EAAK,CAAE7mB,QAAW,SAAU/4Z,MAAS,IACrCmO,EAAK,CAAE4qZ,QAAW,SAAU/4Z,MAAS,IACrCg8c,EAAK,CAAEjjD,QAAW,SAAU/4Z,MAAS,IACrCoE,EAAK,CAAE20Z,QAAW,SAAU/4Z,MAAS,IACrCmC,EAAK,CAAE42Z,QAAW,SAAU/4Z,MAAS,IACrCg/oB,EAAK,CAAEjmP,QAAW,SAAU/4Z,MAAS,IACrC,IAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,IACrC,IAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,IACrC,IAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,IACrCkO,EAAK,CAAE6qZ,QAAW,SAAU/4Z,MAAS,IACrC,IAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,IACrC,IAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,IACrC,IAAK,CAAE+4Z,QAAW,SAAU/4Z,MAAS,IACrCmhtB,OAAQ,CAAEpoT,QAAW,SAAU/4Z,MAAS,IACxCohtB,OAAQ,CAAEroT,QAAW,SAAU/4Z,MAAS,IACxCqhtB,OAAQ,CAAEtoT,QAAW,SAAU/4Z,MAAS,IACxCshtB,OAAQ,CAAEvoT,QAAW,SAAU/4Z,MAAS,IACxC6+sB,MAAO,CAAE9lT,QAAW,UACpBwoT,gBAAiB,OAK7BtD,UAAUj+sB,EAAO+S,EAAOnM,GACpBvK,KAAK2D,MAAQA,EACb3D,KAAK0W,MAAQA,EACb1W,KAAKuK,OAASA,EACdvK,KAAK08Z,QAAU,GACf18Z,KAAKqG,OAAS,GACdrG,KAAK2vb,WAAahsb,EAAMoC,OAG5Bw9sB,gBACI,IAAI9/Q,EAAYv2b,KAAKqB,KAAKrB,KAAKsB,IAAI,IAAOxO,KAAK0W,MAAO,KAEtD,GAAI1W,KAAKuK,OAASk5b,EACd,MAAM,IAAIhtb,MAAO,kEAAiEzW,KAAKuK,4CAA4Ck5b,QAKvI,GAFAzjc,KAAK4itB,cAED5itB,KAAKo7Y,SAAWp7Y,KAAKmjtB,kBAAmB,CACxC,MAAMpmmB,EAAW7vG,KAAKqB,KAAKvO,KAAKmjtB,mBAAqBnjtB,KAAK0W,MAAQ1W,KAAKo7Y,WACvE,MAAM,IAAI3kY,MAAO,gEAA+DzW,KAAK0W,qDAAqD1W,KAAK2D,aAAao5G,SAIpK6lmB,cAGI5itB,KAAKo7Y,SAAWp7Y,KAAK0W,OAAS,GAAK1W,KAAK2vb,WAAa,EAF9B,GAEoD3vb,KAAKyhtB,gBAAkB,GAGtG2B,WAEIpjtB,KAAK0itB,WADS1itB,KAAKiitB,aAAaO,MAAM9lT,SAI1C4mT,UACItjtB,KAAKojtB,WACLpjtB,KAAK08Z,QAAQj3Z,KAAKzF,KAAKiitB,aAAaiD,iBAGxCzB,QAAQ/8X,GACJ1mV,KAAK0itB,WAAWh8X,EAASg2E,SACzB18Z,KAAKqG,OAAOZ,KAAKihV,EAAS/iV,OAG9B0/sB,eACI,MAAM8B,EAAcnltB,KAAKoltB,kBACzB,IAAI1+X,EAEJ1mV,KAAK+itB,SAAWoC,EAAY19rB,KAAK,IAEjC,QAAS9Y,EAAI,EAAGA,EAAIw2sB,EAAYp/sB,OAAQ4I,IACpC+3U,EAAW1mV,KAAKiitB,aAAajitB,KAAKqltB,sBAAsBF,EAAYx2sB,KACpE3O,KAAK0itB,WAAWh8X,EAASg2E,SAIjC0oT,kBACI,MAAM/+sB,EAASrG,KAAKqG,OACdN,EAASM,EAAON,OACtB,IACI88sB,EACAl2a,EACAxiQ,GAHAm7qB,EAAa,EAKjB,IAAKn7qB,GAAMpkC,EAAS,EAAGokC,IAAO,EAAGA,KAC7Bm7qB,GAActltB,KAAKijtB,cAAc58sB,EAAO8jC,IAAMpkC,EAASokC,GAAKnqC,KAAKkitB,gBAOrE,IAJAW,EAASyC,EAAatltB,KAAKqitB,YAE3BiD,EAAatltB,KAAKijtB,cAAcJ,EAAQ,EAAG7itB,KAAKmitB,gBAE3Ch4qB,GAAMpkC,EAAS,EAAGokC,IAAO,EAAGA,KAC7Bm7qB,GAActltB,KAAKijtB,cAAc58sB,EAAO8jC,IAAMpkC,EAASokC,GAAM,EAAGnqC,KAAKmitB,gBAGzEx1a,SAAS24a,EAAatltB,KAAKqitB,YACpB,CAACQ,EAAQl2a,GAGpB04a,sBAAsB1htB,GAClB,QAASynd,KAAaprd,KAAKiitB,aACvB,GAAIjitB,KAAKiitB,aAAa72P,GAAWznd,QAAUA,EACvC,OAAOynd,EAKnB63P,cAAct/sB,EAAOigB,EAAOnV,GACxB,OAAQmV,EAAQnV,GAASA,GAAS9K,EAGtC++sB,WAAWhmT,GACP,IAAI/4Z,EAEJ,QAASgL,EAAI,EAAGA,EAAI+tZ,EAAQ32Z,OAAQ4I,IAChChL,EAAQC,SAAS84Z,EAAQtoX,OAAOzlC,GAAI,IACpC3O,KAAK08Z,QAAQj3Z,KAAK9B,IClK9B,MAAM4htB,GAAc,QACdrtlB,GAASryH,OAAOw0D,OCChBkrpB,GAAc,QACdC,GAAoB,eACpBttlB,GAASryH,OAAOw0D,OAEf,iBAAuBkilB,KAC1Bz8oB,YAAY2ltB,GACRjmsB,QACAxf,KAAKyltB,SAAWA,EAChBzltB,KAAKwhtB,iBAGTA,kBAEA4B,YAEAsC,MAEAC,SACI,OAAO,EAGXrwlB,QAEAswlB,cAGG,iBAAyBC,GAC5B/ltB,YAAY2ltB,EAAUnpb,GAClB98Q,MAAMimsB,GACNzltB,KAAKs8R,OAASA,EACdt8R,KAAK8ltB,WAAWxpb,GAGpBklb,iBACIhisB,MAAMgisB,iBAEN/mE,GAAWz6oB,KAAM,CACb+ltB,KAAM,OACNC,MAAO,KAIf5C,WACIpjtB,KAAKyltB,SAAS/C,WAAW1itB,KAAKwitB,OAGlCkD,GAAG/htB,EAAOigB,GACN,IAAIoI,EAAOroB,EAAMiuO,WAAWhuN,GAC5B,OAAO5jB,KAAK2ltB,OAAO35rB,GAGvBspG,KAAK2wlB,GACD,IAAI97qB,EAAM,EAEV,MAAQnqC,KAAKkmtB,OAAO/7qB,GAAKvW,KAAK5zB,KAAMimtB,IAAkB97qB,EAAMnqC,KAAKkmtB,OAAOngtB,QACpEokC,IAIRy7qB,UAAUK,GACN,IAGIj6rB,EAFAroB,EAAQsitB,EAActitB,MACtBwitB,EAAYxitB,EAAMoC,OAGtB,GAAI83oB,GAAQ,IALC79oB,KAAKs8R,QAKQ,CACtB,IAAI8pb,GAAczitB,EAAM8e,OAAOwjsB,EAAcrisB,OAAOrC,MAAM,WAEtD6ksB,KACAD,EAAYxitB,EAAMmc,QAAQsmsB,GAAY,GAAIH,EAAcrisB,QAIhE,MAAQoI,EAAOi6rB,EAActitB,MAAMiuO,WAAWq0e,EAAcrisB,SAAW,GACnE5jB,KAAK2ltB,OAAO35rB,IACZi6rB,EAAcrisB,MAAQuisB,GACtBnmtB,KAAKyltB,SAAS/C,WAAW1itB,KAAKsnC,SAAStb,IACvCi6rB,EAAcrisB,QAItBkisB,WAAWxpb,GACPt8R,KAAKkmtB,OAAS,GAEVroE,GAAQ79oB,KAAK+ltB,KAAMzpb,IACnBt8R,KAAKkmtB,OAAOzgtB,KAAKzF,KAAKqmtB,UAGtBxoE,GAAQ79oB,KAAK2wa,SAAUr0I,IACvBt8R,KAAKkmtB,OAAOzgtB,KAAKzF,KAAKsmtB,aAG1BtmtB,KAAKkmtB,OAAOzgtB,KAAKzF,KAAKumtB,YAG1BF,SAASJ,GACL,GAAIA,EAAcO,IACdP,SAAcO,KAAM,EACbP,EAAcQ,gBAAkBzmtB,KAAK6S,IAIpDyzsB,YAAYL,GACR,GAAIA,EAAcQ,gBAAkBzmtB,KAAK2wa,WACpCs1S,EAAcrisB,MAAQ,GAAKqisB,EAActitB,MAAMoC,QAC5C/F,KAAKyltB,SAASzltB,KAAK2wa,UAAU+0S,GAAGO,EAActitB,MAAOsitB,EAAcrisB,MAAQ,IAC/E,YAAK6hsB,SAAS/C,WAAW1itB,KAAKgmtB,OAC9BC,EAAcz3E,SAAU,GACjB,EAIf+3E,aACI,YAAKd,SAAS/C,WAAW1itB,KAAK0mtB,OACvB,GAIf,MAAMC,GAAY,GAElBA,GAAUplZ,EAAI,cAAwBqlZ,GAClCpF,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACT6S,IAAK,IACL89Z,SAAU,IACV+1S,KAAM,IACNlE,MAAO,MAIfmD,OAAO35rB,GACH,OAAO,GAAKA,GAAQA,EAAO,GAG/Bsb,SAAStb,GACL,OAAIA,EAAO,GACAA,EAAO,GAGXA,EAAO,KAItB26rB,GAAUj3sB,EAAI,cAAwBk3sB,GAClCpF,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACT6S,IAAK,IACL89Z,SAAU,IACV+1S,KAAM,IACNlE,MAAO,MAIfmD,OAAO35rB,GACH,OAAO,IAAMA,GAAQA,EAAO,IAGhCsb,SAAStb,GACL,OAAOA,EAAO,KAItB26rB,GAAUt0I,EAAI,cAAwBwzI,GAClCrE,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACT6S,IAAK,IACL6zsB,KAAM,GACNlE,MAAO,MAIfY,WACIpjtB,KAAKyltB,SAAS/C,WAAW1itB,KAAKwitB,OAGlCkD,GAAG/htB,EAAOigB,GACN,IAAIijsB,EAAQC,GAAanjtB,EAAOigB,EAAO,GACvC,OAAQA,EAAQ,GAAKjgB,EAAMoC,QAA2B,IAAjBpC,EAAMoC,SAAiBw/sB,GAAY/pS,KAAKqrS,GAGjFvxlB,OACIt1H,KAAKyltB,SAAS/C,WAAW1itB,KAAK0mtB,MAGlCd,UAAUK,GACN,IAAIj6rB,EAEJ,MAAQA,EAAO86rB,GAAab,EAActitB,MAAOsitB,EAAcrisB,MAAO,KAClE2hsB,GAAY/pS,KAAKxvZ,IAAyB,IAAhBA,EAAKjmB,QAC/B/F,KAAKyltB,SAAS/C,WAAW9+sB,SAASooB,EAAM,KACxCi6rB,EAAcrisB,OAAS,EAI/B0jB,SAAStb,GACL,OAAOA,IAIf26rB,GAAUZ,KAAO,cAA2BF,GACxC/ltB,YAAY2ltB,EAAUnpb,GAClB98Q,MAAMimsB,GACNzltB,KAAK+mtB,eAAezqb,GAGxBklb,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACT6S,IAAK,OACLm0sB,gBAAiB,CAAC,IAAK,OAI/B5D,SAAS6C,GACL,IAAIj6rB,EAAOi6rB,EAActitB,MAAMiuO,WAAW,GAAK,IAC3Cq1e,EAAWjntB,KAAKkntB,aAAal7rB,GAEjChsB,KAAKyltB,SAASwB,GAAU7D,WAG5BsC,GAAG/htB,EAAOigB,GACN,IAAIoI,EAAOroB,EAAMiuO,WAAWhuN,GAC5B,OAAO5jB,KAAK2ltB,OAAO35rB,GAGvB25rB,OAAO35rB,GACH,OAAO,KAAOA,GAAQA,EAAO,IAGjC45rB,UAAUK,GACN,IAGIj6rB,EAHAi7rB,EAAWjntB,KAAKmntB,cAAclB,GAC9BR,EAAWzltB,KAAKyltB,SAChB1/sB,EAASkhtB,EAAStjtB,MAAMoC,OAK5B,GAFAkgtB,EAAcrisB,OAAS7d,EAEnBA,EAAS,EACT,KAAOkhtB,EAASrjsB,MAAQ7d,EAAQkhtB,EAASrjsB,QACrCoI,EAAOi7rB,EAAStjtB,MAAMiuO,WAAWq1e,EAASrjsB,OAC1CqjsB,EAAS/8sB,MAAQlK,KAAKkntB,aAAal7rB,GAE/Bi7rB,EAASR,gBAAkBQ,EAAS/8sB,QACpC+8sB,EAASR,cAAgBQ,EAAS/8sB,MAClCu7sB,EAASwB,EAAS/8sB,OAAOorH,KAAK2xlB,IAGlCxB,EAAS/C,WAAW+C,EAASwB,EAAS/8sB,OAAOw8sB,MAC7CjB,EAAS/C,WAAW+C,EAASwB,EAAS/8sB,OAAOo9B,SAAStb,SAGtDi7rB,EAAS/8sB,QAAU+8sB,EAASR,eAC5BhB,EAASwB,EAAS/8sB,OAAOorH,KAAK2xlB,GAGlCjntB,KAAKontB,WAAWH,GAChBxB,EAAS4B,SAASJ,EAAUjntB,KAAKsntB,WAE7BrB,EAAcrisB,MAAQqisB,EAActitB,MAAMoC,QAC1C/F,KAAKontB,WAAWH,GAIxBhB,EAAcO,KAAM,EACpBP,EAAc/7sB,MAAQ+8sB,EAAS/8sB,MAGnCk9sB,WAAWH,GACPjntB,KAAKyltB,SAAS/C,WAAW1itB,KAAKyltB,SAASwB,EAAS/8sB,OAAOw8sB,MACvD1mtB,KAAKyltB,SAAS/C,WAAW1itB,KAAKyltB,SAASwB,EAAS/8sB,OAAOw8sB,MAG3DS,cAAclB,GACV,MAAMgB,EAAW,CACbtjtB,MAAO3D,KAAKuntB,QAAQtB,EAActitB,MAAOsitB,EAAcrisB,OACvDA,MAAO,GAGXqjsB,SAAS/8sB,MAAQlK,KAAKkntB,aAAaD,EAAStjtB,MAAMiuO,WAAW,IAC7Dq1e,EAASR,cAAgBR,EAAcQ,gBAAkBzmtB,KAAK6S,IAC1Do0sB,EAAS/8sB,MACT+7sB,EAAcQ,cAEXQ,EAGXF,eAAezqb,GACXt8R,KAAKsntB,UAAY,GAEjB,QAAS34sB,EAAI,EAAGA,EAAI2tR,EAAOv2R,OAAQ4I,IAC3BkvoB,GAAQvhX,EAAO3tR,GAAI3O,KAAKgntB,kBACxBhntB,KAAKsntB,UAAU7htB,KAAK62R,EAAO3tR,IAKvCu4sB,aAAal7rB,GACT,QAASrd,EAAI,EAAGA,EAAI3O,KAAKsntB,UAAUvhtB,OAAQ4I,IACvC,GAAI3O,KAAKyltB,SAASzltB,KAAKsntB,UAAU34sB,IAAIg3sB,OAAO35rB,GACxC,OAAOhsB,KAAKsntB,UAAU34sB,GAKlC44sB,QAAQ5jtB,EAAOigB,GACX,IAAIoI,EACAzZ,EAAS,GACT5D,EAAIiV,EAER,MAAQoI,EAAOroB,EAAMiuO,WAAWjjO,OAAS3O,KAAK2ltB,OAAO35rB,IACjDzZ,GAAUygB,OAAOC,aAAajH,EAAO,KAGzC,OAAOzZ,IAIfo0sB,GAAUa,KAAO,cAA4B3B,GACzC/ltB,YAAY2ltB,EAAUnpb,GAClB98Q,MAAMimsB,GACNzltB,KAAKs8R,OAASA,EAGlBklb,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACT6S,IAAK,OACL40sB,WAAY,IACZC,QAAS,IACTC,MAAO,IACPX,gBAAiB,CAAC,IAAK,KACvBY,uBAAwB,CACpB,GAAM,CAAEp5sB,IAAK,GAAI1G,KAAM,gBACvB,IAAO,CAAE/B,OAAQ,IACjB,KAAQ,CAAEyI,IAAK,EAAG1G,KAAM,gBACxB,IAAO,CAAE0G,IAAK,EAAG1G,KAAM,gBACvB,KAAQ,CAAE0G,IAAK,GAAI1G,KAAM,gBACzB,IAAO,CAAE2qC,IAAK,EAAGjkC,IAAK,GAAI1G,KAAM,gBAChC,KAAQ,CAAE2qC,IAAK,EAAGjkC,IAAK,GAAI1G,KAAM,gBACjC,IAAO,CAAE2qC,IAAK,GAAIjkC,IAAK,GAAI1G,KAAM,gBACjC,KAAQ,CAAE2qC,IAAK,GAAIjkC,IAAK,GAAI1G,KAAM,gBAClC+/sB,SAAU,CAAC,CACPtlpB,IAAK,CAAC,KAAM,KAAM,OAAQ,QAC1B6+Z,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAEVt5d,KAAM,CAAE/B,OAAQ,IACjB,CACCw8D,IAAK,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,QAC/E6+Z,OAAQ,CAAC,EAAC,IACVt5d,KAAM,CAAE0G,IAAK,GAAI1G,KAAM,iBACxB,CACCy6D,IAAK,CAAC,QACN6+Z,OAAQ,CAAC,CAAC,IAAK,MACft5d,KAAM,CAAE/B,OAAQ,KACjB,CACCw8D,IAAK,CAAC,KAAM,KAAM,MAAO,MAAO,QAChCz6D,KAAM,CAAE0G,IAAK,GAAI1G,KAAM,iBACxB,CACCy6D,IAAK,CAAC,KAAM,OAAQ,OAAQ,QAC5Bz6D,KAAM,CAAE/B,OAAQ,KACjB,CACCw8D,IAAK,CAAC,KAAM,KAAM,QAClBz6D,KAAM,CAAE/B,OAAQ,KACjB,CACCw8D,IAAK,CAAC,OACN6+Z,OAAQ,CACJ,CAAC,IAAK,MAEVt5d,KAAM,CAAE/B,OAAQ,IACjB,CACCw8D,IAAK,CAAC,KAAM,QACZz6D,KAAM,CAAE/B,OAAQ,IACjB,CACCw8D,IAAK,CAAC,KAAM,MACZz6D,KAAM,CAAE0G,IAAK,EAAG1G,KAAM,iBACvB,CACCy6D,IAAK,CAAC,MAAO,OACbz6D,KAAM,CAAE0G,IAAK,GAAI1G,KAAM,iBACxB,CACCy6D,IAAK,CAAC,MAAO,OACbz6D,KAAM,CAAE2qC,IAAK,EAAGjkC,IAAK,GAAI1G,KAAM,iBAChC,CACCy6D,IAAK,CAAC,MAAO,OACbz6D,KAAM,CAAE2qC,IAAK,EAAGjkC,IAAK,GAAI1G,KAAM,iBAChC,CACCy6D,IAAK,CAAC,OAAQ,QACdz6D,KAAM,CAAE/B,OAAQ,OAGxBy8sB,MAAO,MAKfY,WACIpjtB,KAAKyltB,SAASzltB,KAAKyntB,YAAYrE,WAGnCsC,KACI,OAAO7nE,GAAQ79oB,KAAK6S,IAAK7S,KAAKs8R,QAGlCspb,UAAUK,GACN,IAOI5/qB,GACAyhrB,GACAC,GATAtC,EAAWzltB,KAAKyltB,SAChB9htB,EAAQsitB,EAActitB,MAAM4nB,QAAQ,MAAO,IAC3Cy8rB,EAAkB,IAAIrhX,OAAO,IAAM3mW,KAAK0ntB,QAAU1ntB,KAAK2ntB,MAAQ,IAAK,KACpE/jsB,EAAQqisB,EAAcrisB,MACtBqjsB,GAAW,CACP/8sB,MAAOlK,KAAKyntB,YAUpB,IAJAhC,EAAS/C,WAAW1itB,KAAKwitB,SAIH,CAMlB,GALAyE,GAASrjsB,MAAQ,EAEjBmksB,GAAkBpktB,EAAMywC,OAAOxwB,KAAW5jB,KAAK0ntB,QAAU,EAAI,EAC7DrhrB,GAAU0hrB,GAAkB,EAAI/ntB,KAAKiotB,eAAetktB,EAAOigB,GAAS5jB,KAAKkotB,YAAYvktB,EAAOigB,GAExFyiB,GAAQg7nB,GAAGt7pB,OACX+htB,GAAYlksB,EAAQmksB,GAAkB1hrB,GAAQnhC,GAAGa,OAASsgC,GAAQg7nB,GAAGt7pB,eAErE+htB,GAAYnktB,EAAMmc,QAAQ9f,KAAK0ntB,QAAS9jsB,EAAQ,GAE5CkksB,GAAY,EAAG,CACf,GAAIlksB,EAAQyiB,GAAQg7nB,GAAG7ypB,IAAM63B,GAAQnhC,GAAGa,OAASgitB,GAAkBpktB,EAAMoC,OACrE,MAAM,IAAI0Q,MAAM,6DAGpBqxsB,GAAYnktB,EAAMoC,OAQ1B,GAJAkhtB,GAAStjtB,MAAQA,EAAMmwB,UAAUlQ,EAAOkksB,IAAWv8rB,QAAQy8rB,EAAiB,IAC5EhotB,KAAKwyC,SAASnM,GAAS4grB,GAAStjtB,OAChC8htB,EAAS4B,SAASJ,GAAUjntB,KAAKgntB,iBAE7Bc,IAAanktB,EAAMoC,OACnB,MAGJ6d,EAAQkksB,GAEJb,GAAS/8sB,QAAUlK,KAAKyntB,aACxBhC,EAASzltB,KAAKyntB,YAAYnylB,KAAK2xlB,IAC/BA,GAAS/8sB,MAAQlK,KAAKyntB,YAGrBphrB,GAAQg7nB,GAAGt7pB,QACZ0/sB,EAAS/C,WAAW1itB,KAAKwitB,OAIjCyD,EAAcrisB,MAAQqisB,EAActitB,MAAMoC,OAG9CysC,SAASnM,EAAS1iC,GACd,IAAIqoB,EAAOroB,EAAM8e,OAAO4jB,EAAQnhC,GAAGa,QAC/Bs7pB,EAAKh7nB,EAAQg7nB,GAEjB,IAAKA,EAAGv5pB,OAASy9sB,GAAY/pS,KAAKxvZ,GAC9B,MAAM,IAAIvV,MAAM,0BAA4B4vB,EAAQnhC,GAAK,2DAG7D,GAAgB,iBAAZm8pB,EAAGv5pB,OAA4B09sB,GAAkBhqS,KAAKxvZ,GACtD,MAAM,IAAIvV,MAAM,0BAA4B4vB,EAAQnhC,GAAK,qEAG7D,GAAIm8pB,EAAGt7pB,QAAUs7pB,EAAGt7pB,SAAWimB,EAAKjmB,OAChC,MAAM,IAAI0Q,MAAM,0BAA4B4vB,EAAQnhC,GAAK,YAAcm8pB,EAAGt7pB,OAAS,qBAGvF,GAAIs7pB,EAAG5unB,KAAO4unB,EAAG5unB,IAAMzmB,EAAKjmB,OACxB,MAAM,IAAI0Q,MAAM,0BAA4B4vB,EAAQnhC,GAAK,qBAAuBm8pB,EAAG5unB,IAAM,qBAG7F,GAAI4unB,EAAG7ypB,KAAO6ypB,EAAG7ypB,IAAMwd,EAAKjmB,OACxB,MAAM,IAAI0Q,MAAM,0BAA4B4vB,EAAQnhC,GAAK,oBAAsBm8pB,EAAG7ypB,IAAM,qBAIhG05sB,YAAYvktB,EAAOigB,GACf,IAAI1e,EACAijtB,EAEJ,QAASx5sB,EAAI,EAAGA,GAAK,EAAGA,IAGpB,GAFAzJ,EAAK4htB,GAAanjtB,EAAOigB,EAAOjV,GAChCw5sB,EAAwBnotB,KAAKootB,yBAAyBljtB,IAAOlF,KAAKootB,yBAAyBljtB,EAAG4uB,UAAU,EAAG5uB,EAAGa,OAAS,IACnHoitB,EACA,MAAO,CACHjjtB,GAAIA,EACJm8pB,GAAI8mD,GAIhBnotB,KAAKqotB,mBAAmBnjtB,GAG5BmjtB,mBAAmBnjtB,GACf,MAAM,IAAIuR,MAAM,IAAMvR,EAAK,+CAG/B+itB,eAAetktB,EAAOigB,GAClB,IAAIoJ,EAAQrpB,EAAMmc,QAAQ9f,KAAK0ntB,QAAS9jsB,GACpC0mB,EAAM3mC,EAAMmc,QAAQ9f,KAAK2ntB,MAAO36rB,GAChC9nB,EAAKvB,EAAMmwB,UAAU9G,EAAQ,EAAGsd,GAChC+2nB,GAAKrhqB,KAAKootB,yBAAyBljtB,IAAOlF,KAAKootB,yBAAyBljtB,EAAGud,OAAOvd,EAAGa,OAAS,IAElG,OAAKs7pB,IACDrhqB,KAAKqotB,mBAAmBnjtB,GAGrB,CACHm8pB,GAAIA,GACJn8pB,GAAIA,GAIZkjtB,yBAAyBljtB,GACrB,IAAIijtB,EAAwBnotB,KAAK4ntB,uBAC7BC,EAAWM,EAAsBN,SAErC,GAAIM,EAAsBjjtB,GACtB,OAAOijtB,EAAsBjjtB,GAGjC,QAASyJ,EAAI,EAAGA,EAAIk5sB,EAAS9htB,OAAQ4I,IAAK,CACtC,GAAIk5sB,EAASl5sB,GAAG4zD,KAAOs7kB,GAAQ34oB,EAAI2itB,EAASl5sB,GAAG4zD,KAC3C,OAAOslpB,EAASl5sB,GAAG7G,KAChB,GAAI+/sB,EAASl5sB,GAAGyyd,OAAQ,CAC3B,IAAIA,EAASymP,EAASl5sB,GAAGyyd,OAEzB,QAAS5/X,GAAI,EAAGA,GAAI4/X,EAAOr7d,OAAQy7F,KAC/B,GAAI4/X,EAAO5/X,IAAG,IAAMt8F,GAAMA,GAAMk8d,EAAO5/X,IAAG,GACtC,OAAOqmnB,EAASl5sB,GAAG7G,SAQpC,iBAA0Bi6sB,GAC7BjitB,YAAYif,GACRS,MAAMT,GACN/e,KAAKsotB,cAGT9G,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTiitB,aAAc,CACV,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,SAEpDQ,KAAM,MAId6F,cACI,QAAS35sB,EAAI,EAAGA,EAAI3O,KAAKs8R,OAAOv2R,OAAQ4I,IACpC3O,KAAKA,KAAKs8R,OAAO3tR,IAAM,IAAIg4sB,GAAU3mtB,KAAKs8R,OAAO3tR,IAAI3O,KAAMA,KAAKs8R,QAIxEslb,UAAUj+sB,EAAO+S,EAAOnM,GACpBvK,KAAK08Z,QAAU,GACf18Z,KAAK2D,MAAQA,EACb3D,KAAK0W,MAAQA,EACb1W,KAAKuK,OAASA,EACdvK,KAAKuotB,SAAW,EAChBvotB,KAAKg3pB,WAAa,EAClBh3pB,KAAK4jB,MAAQ,EACb5jB,KAAKkqC,SAAW,EAGpB23qB,UACI,IAAIoE,EAAgB,CAChBtitB,MAAO3D,KAAK2D,MACZigB,MAAO,EACP1Z,MAAO,IAGe,IAAtBlK,KAAK2D,MAAMoC,SAIfkgtB,EAAc/7sB,MACV+7sB,EAAcQ,cAAgBzmtB,KAAKwotB,aAAavC,EAAejmtB,KAAKs8R,QAExEt8R,KAAKojtB,SAAS6C,GAEdjmtB,KAAKqntB,SAASpB,EAAejmtB,KAAKs8R,QAElCt8R,KAAKgitB,cACLhitB,KAAKsjtB,UACLtjtB,KAAK4itB,eAGTyE,SAASpB,EAAe3pb,GAGpB,KACIt8R,KAAKimtB,EAAc/7sB,OAAO07sB,UAAUK,KAEhCA,EAAcrisB,OAASqisB,EAActitB,MAAMoC,SAI/C,GAAKkgtB,EAAcz3E,QAIZ,CACH,IAAI9yL,EAAOuqQ,EAAc/7sB,MACzB+7sB,EAAc/7sB,MAAQ+7sB,EAAcQ,cACpCR,EAAcQ,cAAgB/qQ,EAC9BuqQ,EAAcz3E,SAAU,OAPxBy3E,EAAcQ,cAAgBR,EAAc/7sB,MAC5C+7sB,EAAc/7sB,MAAQlK,KAAKwotB,aAAavC,EAAe3pb,GACvDt8R,KAAKimtB,EAAc/7sB,OAAOorH,KAAK2wlB,GAU3C7C,SAAS6C,GACLjmtB,KAAKimtB,EAAc/7sB,OAAOk5sB,SAAS6C,GACnCjmtB,KAAKkqC,SAAW,EAGpB83qB,cACIhitB,KAAK+itB,SAAW/itB,KAAKuotB,SAAW,IAChCvotB,KAAK0itB,WAAW1itB,KAAK+itB,UAGzBO,UACItjtB,KAAK0itB,WAAW1itB,KAAKyitB,MAGzBG,cACI5itB,KAAKo7Y,SAAWp7Y,KAAK0W,OAAS1W,KAAKg3pB,WAAah3pB,KAAKyhtB,iBAGzDiB,WAAW12rB,GACP,MAAM0wY,EAAU18Z,KAAKiitB,aAAaj2rB,GAAMjhB,WACxC,IAAIpH,EAEJ,QAASgL,EAAI,EAAGA,EAAI+tZ,EAAQ32Z,OAAQ4I,IAChChL,EAAQC,SAAS84Z,EAAQtoX,OAAOzlC,GAAI,IACpC3O,KAAK08Z,QAAQj3Z,KAAK9B,GAClB3D,KAAKg3pB,YAAcrzpB,EAEvB3D,KAAKuotB,UAAYv8rB,EAAOhsB,KAAKkqC,WAGjCs+qB,aAAavC,EAAe3pb,GACxB,QAAS3tR,EAAI,EAAGA,EAAI2tR,EAAOv2R,OAAQ4I,IAC/B,GAAI3O,KAAKs8R,EAAO3tR,IAAI+2sB,GAAGO,EAActitB,MAAOsitB,EAAcrisB,OACtD,OAAO04Q,EAAO3tR,GAItB3O,KAAK8htB,sBAAsBmE,EAActitB,MAAMywC,OAAO6xqB,EAAcrisB,SA2D5E,YAAsBjgB,GAAOigB,EAAOg0F,GAChC,OAAOj0G,GAAMmwB,UAAUlQ,EAAOA,EAAQg0F,GC7uB1C,MAAMsgB,GAASryH,OAAOw0D,OAEf,iBAAsB0npB,GACzBP,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTiitB,aAAc,CACV,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEJO,MAAO,KACPC,KAAM,MACNgG,aAAc,GACdC,UAAWA,KAInB9G,UAAUj+sB,EAAO+S,GACb1W,KAAK08Z,QAAU,GACf18Z,KAAK2D,MAAQA,EACb3D,KAAK2otB,eAAiB,EACtB3otB,KAAK0W,MAAQA,EAGjBkssB,cAGI5itB,KAAKo7Y,SAAWp7Y,KAAK0W,OAChB,IAAM1W,KAAK2D,MAAMoC,OAAS/F,KAAK2otB,gBAAkB3otB,KAAKyhtB,gBAHnC,GAM5BI,UACI,MAAMl+sB,EAAQ3D,KAAK2D,MAEnB3D,KAAK0itB,WAAW1itB,KAAKwitB,OAErB,QAAS7zsB,EAAI,EAAGA,EAAIhL,EAAMoC,OAAQ4I,IAC9B3O,KAAK2itB,aAAah/sB,EAAMywC,OAAOzlC,IAG/B3O,KAAK+e,QAAQijsB,aACbhitB,KAAKgitB,cAGThitB,KAAK0itB,WAAW1itB,KAAKyitB,MACrBzitB,KAAK4itB,cAGTD,aAAav3P,GACT,MAAM1uD,EAAU18Z,KAAKiitB,aAAa72P,GAE7B1uD,GACD18Z,KAAK8htB,sBAAsB12P,GAG/Bprd,KAAK0itB,WAAWhmT,GAGpBgmT,WAAWhmT,GACP,QAAS/tZ,EAAI,EAAGA,EAAI+tZ,EAAQ32Z,OAAQ4I,IAChC3O,KAAK08Z,QAAQj3Z,KAAK7B,SAAS84Z,EAAQtoX,OAAOzlC,GAAI,KAItDqzsB,cAEI,MAAMmD,EADmBnltB,KAAK0otB,UAAU1otB,KAAKyotB,cACR70rB,KAAK5zB,KAAK0otB,UAAW1otB,KAAK2D,OAE/D3D,KAAK+itB,SAAWoC,EAAY19rB,KAAK,IAEjC,QAAS9Y,EAAI,EAAGA,EAAIw2sB,EAAYp/sB,OAAQ4I,IACpC3O,KAAK2otB,iBACL3otB,KAAK0itB,WAAW1itB,KAAKiitB,aAAakD,EAAYx2sB,MAiD1D,MAAM+5sB,GAAY,CACdE,SAASjltB,IACL,IAEIwmC,EACA0+qB,EACAC,EAJA3D,EAAc,CAAC,EAAG,IAClBl2R,EAAMtrb,GAAMoC,OAAS,EAKzB,IAAKokC,EAAM,EAAGA,EAAMxmC,GAAMoC,OAAQokC,IAC9Bg7qB,GAAah7qB,EAAM8kZ,GAAO,IAAMrrb,SAASD,GAAMywC,OAAOjK,GAAM,IAMhE,IAHA2+qB,EAAS3D,EAAY,GACrB0D,GAA4B,EAAjB1D,EAAY,IAAQp6sB,WAE1Bo/B,EAAM,EAAGA,EAAM0+qB,EAAQ9itB,OAAQokC,IAChC2+qB,GAAUlltB,SAASiltB,EAAQz0qB,OAAOjK,GAAM,IAG5C,MAAO,EAAE,GAAM2+qB,EAAS,IAAO,KAEnCC,SAASpltB,IACL,IAGIqltB,EACAC,EAJAjG,EAAc,EAEdj9sB,EAASpC,GAAMoC,OAInB,QAAS4I,GAAI,EAAGA,GAAI5I,EAAQ4I,KACxBq6sB,IAAWjjtB,EAAS4I,IAAK,GAAK,GAAK,EACnCq0sB,GAAegG,EAASrltB,GAAMywC,OAAOzlC,IAKzC,OAFAs6sB,GAVU,GAUUjG,EAVV,OAYS,KAAfiG,EACO,CAACA,GAGL,CAAC,EAAG,IAEfC,iBAAiBvltB,IACb,IACIwltB,EADAhE,EAAcnltB,KAAK+otB,SAASpltB,IAEhCwltB,SAAaxltB,GAAQwhtB,EAAY,GAE1BA,EAAYxxqB,OAAO3zC,KAAK4otB,SAASO,KAE5CC,iBAAiBzltB,IACb,IACI0ltB,EADAlE,EAAcnltB,KAAK4otB,SAASjltB,IAEhC0ltB,SAAa1ltB,GAAQwhtB,EAAY,GAE1BA,EAAYxxqB,OAAO3zC,KAAK4otB,SAASS,MCvL1CnxlB,GAASryH,OAAOw0D,OAEf,iBAAoB0npB,GACvBP,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,SACNsktB,SAAU,CACN,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJrH,aAAc,CACV3yjB,OAAQ,CACJ,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,IAEdtiI,MAAO,CAAC,EAAG,EAAG,GACdotZ,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,MAKjCwnS,UAAUj+sB,EAAO+S,EAAOnM,GACpB,MAAMu9J,EAAgB90I,OAAOrvB,GAE7B,GAA6B,KAAzBmkK,EAAc/hK,QAAiB,KAAKy1a,KAAK1zQ,GACzC,MAAM,IAAIrxJ,MAAM,0DAGpBzW,KAAK08Z,QAAU,GACf18Z,KAAK+e,QAAQxU,OAASA,EACtBvK,KAAKo7Y,SAAW1kY,GAAS,GAAK1W,KAAKyhtB,iBACnCzhtB,KAAK2D,MAAQmkK,EACb9nK,KAAK+itB,SAAW/itB,KAAKuptB,oBACrBvptB,KAAKwptB,QAAU1hjB,EAAc,GAC7B9nK,KAAKyptB,SAAW3hjB,EAAcrlJ,OAAO,EAAG,GACxCziB,KAAK0ptB,UAAY5hjB,EAAcrlJ,OAAO,GAAKziB,KAAK+itB,SAGpDlB,UACI7htB,KAAK2ptB,UAAU3ptB,KAAKiitB,aAAaj1rB,OACjChtB,KAAK4ptB,QAAQ5ptB,KAAKyptB,SAAUzptB,KAAKwptB,SACjCxptB,KAAK2ptB,UAAU3ptB,KAAKiitB,aAAa7nS,QACjCp6a,KAAK4ptB,QAAQ5ptB,KAAK0ptB,WAClB1ptB,KAAK2ptB,UAAU3ptB,KAAKiitB,aAAaj1rB,OAGrC48rB,QAAQH,EAAU52sB,GACd,QAASlE,EAAI,EAAGA,EAAI86sB,EAAS1jtB,OAAQ4I,IAC7BkE,GAAOjP,SAAS5D,KAAKsptB,SAASz2sB,GAAKuhC,OAAOzlC,GAAI,IAC9C3O,KAAK2ptB,UAAUr7sB,MAAM+R,UAAUzR,MAAMglB,KAAK5zB,KAAKiitB,aAAa3yjB,OAAOm6jB,EAASr1qB,OAAOzlC,KAAKogF,WAAW,GAEnG/uF,KAAK2ptB,UAAU3ptB,KAAKiitB,aAAa3yjB,OAAOm6jB,EAASr1qB,OAAOzlC,KAAK,GAKzEg7sB,UAAUE,EAAUC,GAChB,QAASn7sB,EAAI,EAAGA,EAAIk7sB,EAAS9jtB,OAAQ4I,IAE7B3O,KAAK08Z,QAAQj3Z,KADbqktB,EACkB,CACdj1oB,GAAI,EACJgokB,GAA0B,IAAtB78oB,KAAK+e,QAAQxU,OACjBmM,MAAOmzsB,EAASl7sB,IAGFk7sB,EAASl7sB,IAKvC46sB,oBACI,IAAIt6R,EAAM,EACND,EAAO,EACPrrb,EAAQ3D,KAAK2D,MAAMqT,MAAM,IAAI+3E,UAAUtnE,KAAK,IAEhD,QAAS9Y,EAAI,EAAGA,EAAIhL,EAAMoC,OAAQ4I,IAC1BA,EAAI,EACJqgb,GAAQprb,SAASD,EAAMywC,OAAOzlC,GAAI,IAElCsgb,GAAOrrb,SAASD,EAAMywC,OAAOzlC,GAAI,IAMzC,OAFgB,IAAO,EAAIsgb,EAAMD,GAAQ,IAAO,ICrGxD,MAAM92T,GAASryH,OAAOw0D,OCuBT0vpB,GAAY,CACrBC,OAAQ9G,GAER+G,OAAQ5F,GACR6F,eP2DG,iBAA6B7F,GAChC7C,iBACIhisB,MAAMgisB,iBAEN/mE,GAAWz6oB,KAAMsktB,GAAoB,CACjCt/sB,KAAM,mBACNi9sB,aAAc,CACV6C,OAAQ,CAAEpoT,QAAW,YAAa/4Z,MAAS,IAC3CohtB,OAAQ,CAAEroT,QAAW,YAAa/4Z,MAAS,IAC3CqhtB,OAAQ,CAAEtoT,QAAW,YAAa/4Z,MAAS,IAC3CshtB,OAAQ,CAAEvoT,QAAW,YAAa/4Z,MAAS,SOnEvDwmtB,OAAQC,GACRC,eC5BG,iBAA6BD,GAChC5I,iBACIhisB,MAAMgisB,iBAEN/mE,GAAWz6oB,KAAMsktB,GAAoB,CACjCt/sB,KAAM,mBACNq+sB,aAAc,WACV,MAAM8B,EAAcnltB,KAAKoltB,kBACzB,IAAIzhtB,EAEJ3D,KAAK+itB,SAAWoC,EAAY19rB,KAAK,IAEjC,QAAS9Y,EAAI,EAAGA,EAAIw2sB,EAAYp/sB,OAAQ4I,IAGpC,GAFAhL,EAAQwhtB,EAAYx2sB,GAEhB3O,KAAK6ktB,sBAAsBlhtB,GAC3B3D,KAAKuktB,YAAYvktB,KAAK6ktB,sBAAsBlhtB,QACzC,CACH,MAAM2mtB,EAAmBtqtB,KAAKqltB,sBAAsB1htB,GACpD3D,KAAK0itB,WAAW1itB,KAAKiitB,aAAaqI,GAAkB5tT,eDWxE6tT,QJsrBG,iBAAsBC,GACzBhJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,WACNs3R,OAAQ,CAAC,IAAK,IAAK,IAAK,YI3rBhCmub,SJopBG,iBAAuBD,GAC1BhJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,aACNs3R,OAAQ,CAAC,SIzpBjBoub,SJ8pBG,iBAAuBF,GAC1BhJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,aACNs3R,OAAQ,CAAC,SInqBjBqub,SJwqBG,iBAAuBH,GAC1BhJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,aACNs3R,OAAQ,CAAC,SI9qBPsub,UJ8rBP,iBAAyBJ,GAC5BhJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,eACNs3R,OAAQ,CAAC,OAAQ,IAAK,SIjsB9Buub,SHgDG,iBAAuBC,GAC1BtJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,eACNyjtB,aAAc,eGrDtBsC,SH0DG,iBAAuBD,GAC1BtJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,eACNyjtB,aAAc,eG/DtBuC,WHoEG,iBAAyBF,GAC5BtJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,wBACNyjtB,aAAc,uBGzEtBwC,WH8EG,iBAAyBH,GAC5BtJ,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,wBACNyjtB,aAAc,uBGlFtByC,QLvCG,iBAAsBnJ,GACzBP,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,UACNw9sB,MAAO,IACP2I,mBAAoB,CAAC,EAAG,EAAG,IAC3BC,gBAAiB,IACjBnJ,aAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,WAIxGL,UAAUj+sB,EAAO+S,EAAOnM,GACpBvK,KAAKuK,OAASA,EACdvK,KAAK0W,MAAQA,EACb1W,KAAKqrtB,WAAa9gtB,EAAS,EAC3BvK,KAAK2D,MAAQA,EAAM4nB,QAAQ,IAAIo7U,OAAO3mW,KAAKortB,gBAAiB,KAAM,IAClEprtB,KAAK08Z,QAAU,GACf18Z,KAAKwyC,SAASxyC,KAAK2D,OACnB3D,KAAKuotB,SAAW,EAChBvotB,KAAK4itB,cAGTf,UACI,MAAMl+sB,EAAQ3D,KAAK2D,MAEnB3D,KAAK0itB,WAAW1itB,KAAKwitB,OAErB,QAAS7zsB,EAAI,EAAGA,EAAIhL,EAAMoC,OAAQ4I,IAC9B3O,KAAK2itB,aAAah/sB,EAAMywC,OAAOzlC,IAG/B3O,KAAK+e,QAAQijsB,aACbhitB,KAAKgitB,cAGThitB,KAAK0itB,WAAW1itB,KAAKwitB,OACrBxitB,KAAK08Z,QAAQ5pY,MAGjB6vrB,aAAav3P,GACT,MAAM1uD,EAAU18Z,KAAKiitB,aAAa72P,GAClCprd,KAAKuotB,UAAY3ktB,SAASwnd,EAAW,IACrCprd,KAAK0itB,WAAWhmT,GAGpBslT,cACIhitB,KAAK+itB,UAAY,GAAM/itB,KAAKuotB,SAAW,IAAO,GAC9CvotB,KAAK2itB,aAAa3itB,KAAK+itB,UAG3BH,cAGI5itB,KAAKo7Y,SAAWp7Y,KAAK0W,OAAmC,IAAzB1W,KAAK2D,MAAMoC,OAAS,GAF3B,EAEuD/F,KAAKyhtB,iBAGxFjvqB,SAAS7uC,GAKL,GAJK4htB,GAAY/pS,KAAK73a,IAClB3D,KAAK8htB,sBAAsBn+sB,EAAM4d,MAAM,UAAU,KAGhDs8nB,GAAQl6oB,EAAMoC,OAAQ/F,KAAKmrtB,oBAC5B,MAAM,IAAI10sB,MAAM,qEAAuEzW,KAAKmrtB,mBAAmB1jsB,KAAK,KAAO,KAInIi7rB,WAAWhmT,GACP,IAAI7nV,EAEJ,QAASlmE,EAAI,EAAGA,EAAI+tZ,EAAQ32Z,OAAQ4I,IAChCkmE,EAAK70E,KAAKuK,OAASvK,KAAKqrtB,WAAa3uT,EAAQtoX,OAAOzlC,GACpD3O,KAAK08Z,QAAQj3Z,KAAK,CAAEiR,MAAO,EAAGm+D,GAAIA,EAAIgokB,GAAI78oB,KAAKuK,SAC/CvK,KAAK08Z,QAAQj3Z,KAAK,KKjC1B6ltB,KD3CG,iBAAmBC,GACtB/J,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTgF,KAAM,UAId48sB,UAAUj+sB,EAAO+S,EAAOnM,GACpB,GAAqB,IAAjB5G,EAAMoC,QAAgB,KAAKy1a,KAAK73a,GAChC,MAAM,IAAI8S,MAAM,0BAGpBzW,KAAK2D,MAAQA,EACb3D,KAAK+e,QAAQxU,OAASA,EACtBvK,KAAK+itB,SAAW/itB,KAAKuptB,kBAAkBvptB,KAAK2D,OAC5C3D,KAAKyptB,SAAWzptB,KAAK2D,MAAM8e,OAAO,EAAG,GACrCziB,KAAK0ptB,UAAY1ptB,KAAK2D,MAAM8e,OAAO,GAAKziB,KAAK+itB,SAC7C/itB,KAAK08Z,QAAU,GACf18Z,KAAKo7Y,SAAW1kY,GAAS,GAAK1W,KAAKyhtB,mBCwBvC+J,MAAOD,IEiQXzoE,GAvRA,iBAAsBvG,KAClBz8oB,YAAY4U,EAASqK,EAAS0ssB,EAAeC,IACzClssB,QAEAxf,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASA,GAC5C/e,KAAK0U,QAAUA,EACf1U,KAAK2yO,QAAU84e,EAEfzrtB,KAAK+lsB,eACL/lsB,KAAKomsB,eACLpmsB,KAAK2rtB,YAAY5ssB,GAEbA,GAAW6rlB,GAAQ7rlB,EAAQpb,QAC3B3D,KAAK2gJ,SAIb8kL,UACIzlU,KAAK0nsB,kBAGT3B,eACIngY,GAAS5lU,KAAK0U,QAAS,aAG3B0xrB,eACI,MAAQrnrB,UAASg5X,WAAY/3Y,OAExB+3Y,GAAWA,EAAQh5X,QAAQjX,OAASiX,EAAQ6lX,YAC7C5kY,KAAK0nsB,kBACL1nsB,KAAK4rtB,sBACL5rtB,KAAK+3Y,QAAU/3Y,KAAK6rtB,kBAI5BA,iBACI,OAAOxvkB,UAAoBr8I,KAAKg5V,eAAgB,CAC5ClxV,KAAM9H,KAAK+e,QAAQ6lX,WAI3B8iU,kBACQ1nsB,KAAK+3Y,UACL/3Y,KAAK+3Y,QAAQtyE,UACbzlU,KAAK+3Y,QAAU,KACf/3Y,KAAK8rtB,0BAIbF,sBACS5rtB,KAAKg5V,iBACNh5V,KAAKg5V,eAAiBr3U,SAAS+O,cAAc,OAC7C1wB,KAAKg5V,eAAe7uV,MAAM+/B,SAAW,WACrClqC,KAAK0U,QAAQmmC,YAAY76C,KAAKg5V,iBAItC8yX,yBACQ9rtB,KAAKg5V,gBAAkBh5V,KAAKg5V,eAAevrM,aAC3CztJ,KAAKg5V,eAAevrM,WAAW/vG,YAAY19C,KAAKg5V,gBAChDh5V,KAAKg5V,eAAiB,MAI9By/C,WAAW15X,GACP/e,KAAK2rtB,YAAY5ssB,GACjB/e,KAAK2gJ,SAGTA,SACI,IAAI3xF,EAAOhvD,KAAK24sB,WAEhB34sB,KAAK+3Y,QAAQz4V,QAEbt/C,KAAK+3Y,QAAQzrQ,QAAQ,CACjB51H,MAAOs4C,EAAKt4C,MACZnM,OAAQykD,EAAKzkD,SAGjBvK,KAAKi+U,eAELj+U,KAAK+3Y,QAAQ17P,KAAKr8I,KAAK4jQ,QAG3Bijc,UACI,MAAO,CACHnwrB,MAAO1W,KAAK0U,QAAQ6wJ,YACpBh7J,OAAQvK,KAAK0U,QAAQkyC,cAI7BoroB,UACIhyrB,KAAK2gJ,SAGTs9L,eACIj+U,KAAK4jQ,OAAS5jQ,KAAK+rtB,UAGvBA,UACI,MAAMhtsB,EAAU/e,KAAK+e,QACfpb,EAAQob,EAAQpb,MAChBkjpB,EAAc9noB,EAAQjU,KACtBkhtB,EAAa5uE,GAAWyJ,EAAYt4mB,QACpCygB,EAAOhvD,KAAK24sB,WACZ37jB,GAASj+H,EAAQi+H,QAAU,GAC3ByokB,GAAWzltB,KAAKyltB,SAChB/iE,GAAa,IAAIzF,GAAI,EAAG,EAAGjulB,EAAKt4C,MAAOs4C,EAAKzkD,QAAQ8yoB,MAAMrggB,GAAOtmI,OAAO2moB,MAAMt+nB,EAAQymI,SAC5F,IACIymkB,GACAC,GACAC,GAHAC,GAAY1pE,GAAWn4oB,SAI3B,MAAMq5P,GAAS,IAAIvnH,KAEnBr8I,KAAK0ipB,WAAaA,GAClB9+Y,GAAO1yO,OAAOlxB,KAAKqstB,eAAer9pB,IAE9B63lB,EAAY5yU,UACZk4Y,GAAa9vkB,KAAsB14I,EAAO,CAAE0hJ,KAAMwhgB,EAAYxhgB,OAAQ96I,OACtE6htB,IAAaD,GAAaH,EAAW79lB,IAAM69lB,EAAWtiZ,QAG1D,IACIuiZ,GAAexG,GAASntiB,OAAO30K,EAAO++oB,GAAWhsoB,QAAS01sB,UACrD9nsB,IACL,YAAKquN,QAAQruN,IACNs/O,GAGX,OAAIijZ,EAAY5yU,UACZi4Y,GAAgBvotB,EAEZob,EAAQgksB,UAAYn4G,GAAQ66G,GAAS1C,YACrCmJ,IAAiB,IAAMzG,GAAS1C,UAGpCn/c,GAAO1yO,OAAOlxB,KAAKsstB,SAASJ,MAGhClstB,KAAKostB,UAAYA,GACjBpstB,KAAKustB,YAAcvstB,KAAKwstB,UAAUP,GAAavvT,QAASuvT,GAAa7wU,UACrEx3I,GAAO1yO,OAAOlxB,KAAKustB,aAEZ3od,GAGXszI,eACI,OAAOl3Y,KAAK+rtB,UAGhBpT,WACI,MAAMjksB,EAAU1U,KAAK0U,QACf+3sB,EAAe/3sB,EAAQmlV,YACvBv0B,EAAgB5wT,EAAQm0O,aACxB75L,EAAO,IAAIskB,KA7JK,IACC,KA8JvB,OAAIm5oB,EAAe,IACfz9pB,EAAKt4C,MAAQ+1sB,GAGbnnZ,IACAt2Q,EAAKzkD,OAAS+6T,GAGdtlU,KAAK+e,QAAQrI,QACbs4C,EAAKt4C,MAAQ1W,KAAK+e,QAAQrI,OAG1B1W,KAAK+e,QAAQxU,SACbykD,EAAKzkD,OAASvK,KAAK+e,QAAQxU,QAGxBykD,EAGXrrD,MAAMA,GACF,IAAKinmB,GAAQjnmB,GACT,OAAO3D,KAAK+e,QAAQpb,MAGxB3D,KAAK+e,QAAQpb,MAAQqvB,OAAOrvB,GAC5B3D,KAAK2gJ,SAGT6rkB,UAAU9vT,EAASthB,GACf,MAAMsnQ,EAAa1ipB,KAAK0ipB,WACxB,IACIgqE,EACAC,GAFArte,EAAUoja,EAAWvtkB,GAGzB,MAAMzsC,GAAQ,IAAI2zG,KAElB,QAAS1tI,GAAI,EAAGA,GAAI+tZ,EAAQ32Z,OAAQ4I,KAAK,CASrC,GARAg+sB,GAAczhjB,GAASwxP,EAAQ/tZ,KAAM+tZ,EAAQ/tZ,IAAK,CAC9C+H,MAAOgmZ,EAAQ/tZ,IACfkmE,GAAI,EACJgokB,GAAI78oB,KAAKostB,WAGbM,EAAQC,GAAYj2sB,MAAQ0kY,EAExBzsY,GAAI,EAAG,CACP,MAAMuvU,GAAO5qQ,gBACT,IAAIA,KAAWgsK,EAASqte,GAAY93oB,GAAK6tkB,EAAW7tkB,IACpD,IAAIvB,KAAWgsK,EAAUote,EAAOC,GAAY9vE,GAAK6F,EAAW7tkB,KAG1D60G,GAAOrtC,cAAmB6hM,GAAM,CAClCxvU,KAAM,CACF6wI,MAAOv/I,KAAK+e,QAAQwgI,OAExBsC,OAAQ,OAGZn5G,GAAMxX,OAAOw4J,IAGjB41D,GAAWote,EAGf,OAAOhkrB,GAGX2jrB,eAAer9pB,GACX,MAAMjwC,EAAU/e,KAAK+e,QACfi+H,EAASj+H,EAAQi+H,QAAU,GAC3B/gB,EAAM,IAAIghhB,GAAI,EAAG,EAAGjulB,EAAKt4C,MAAOs4C,EAAKzkD,QAAQ8yoB,MAAMrggB,EAAOtmI,MAAQ,GAYxE,OAXa2lI,cAAmBpgB,EAAIwhhB,SAAU,CAC1C/uoB,KAAM,CACF6wI,MAAOxgI,EAAQinU,YAEnBnkM,OAAQ,CACJtC,MAAOvC,EAAOtmI,MAAQsmI,EAAOuC,MAAQ,GACrC7oI,MAAOsmI,EAAOtmI,MACdsrP,SAAUhlH,EAAOglH,YAO7Bsqd,SAAS3otB,GACL,MAAMkjpB,EAAc7mpB,KAAK+e,QAAQjU,KAC3BA,EAAO9K,KAAK4stB,SAAW,IAAInlE,GAAQ9jpB,EAAO,CAC5C0hJ,KAAMwhgB,EAAYxhgB,KAClB9F,MAAOsngB,EAAYtngB,MACnBpiF,MAAO,SACPqllB,OAAQ,SACRj0mB,OAAQs4mB,EAAYt4mB,SAGxBzjC,SAAKo1oB,OAAOlgpB,KAAK0ipB,YACjB53oB,EAAK21oB,eAEE31oB,EAAK84P,OAGhB+nd,YAAY5ssB,GAaR,GAZA/e,KAAK8H,MAAQiX,EAAQjX,MAAQ9H,KAAK+e,QAAQjX,MAAMuzB,cAE9B,SAAdr7B,KAAK8H,OACL9H,KAAK8H,KAAO,QACZiX,EAAQpb,MAAQ,IAAMob,EAAQpb,OAGhB,SAAd3D,KAAK8H,OACL9H,KAAK8H,KAAO,OACZiX,EAAQpb,MAAQ,IAAMob,EAAQpb,QAG7BomtB,GAAU/ptB,KAAK8H,MAChB,MAAM,IAAI2O,MAAO,aAAYzW,KAAK8H,2BAGtC9H,KAAKyltB,SAAW,IAAIsE,GAAU/ptB,KAAK8H,MAEnC9H,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASA,KAIzB,CACvB/Z,KAAM,UACN4/X,SAAU,MACVjhY,MAAO,GACPmE,KAAM,SACNi7sB,UAAU,EACVrssB,MAAO,EACPnM,OAAQ,EACRg1I,MAAO,QACPymM,WAAY,QACZl7U,KAAM,CACFmpU,SAAS,EACT5uL,KAAM,0DACN9F,MAAO,QACPhxG,OAAQ,CACJ4/E,IAAK,EACLu7M,OAAQ,EACRt6P,KAAM,EACNE,MAAO,IAGf0tE,OAAQ,CACJtmI,MAAO,EACPsrP,SAAU,QACVziH,MAAO,SAEXiG,QAAS,CACLr3B,IAAK,EACLu7M,OAAQ,EACRt6P,KAAM,EACNE,MAAO,KChSf,MC/Ca4oD,GAASryH,OAAOw0D,OAEtB,YAAmB93C,GAAKsqsB,GAC3B,IAAIt6sB,EAAS,GACT43B,EAAM,EAEV,KAAOA,EAAM5nB,GAAIxc,QACbwM,EAAO9M,KAAK8c,GAAIuR,UAAUqW,EAAKA,EAAM0irB,IACrC1irB,GAAO0irB,EAGX,OAAOt6sB,EAGJ,YAAsB5O,GAAOoC,GAChC,IAAI+mtB,EAAYx+pB,OAAO3qD,IAAOoH,SAAS,GAEvC,OAAI+htB,EAAU/mtB,OAASA,IACnB+mtB,EAAY,IAAIx+sB,MAAMvI,EAAS+mtB,EAAU/mtB,OAAS,GAAG0hB,KAAK,GAAKqlsB,GAG5DA,EAGJ,YAAmBnptB,IACtB,OAAOC,SAASD,GAAO,GCvBpB,iBAA8B44oB,KACjCz8oB,YAAYilI,GACRvlH,QAEAxf,KAAK+kI,OAASA,EACd/kI,KAAKktC,IAAM63F,EAAOh/H,OAAS,EAC3B/F,KAAKuQ,OAASw0H,EAAOh/H,OAAS,EAC9B/F,KAAK0uiB,YAAc1uiB,KAAKuQ,OACxBvQ,KAAKqxD,KAAM,EACXrxD,KAAKigB,EAAI,EAGbq1G,OACIt1H,KAAKktC,KAAOltC,KAAKqxD,IAAMrxD,KAAKigB,EAC5BjgB,KAAKigB,GAAK,EACVjgB,KAAKuQ,OAASvQ,KAAK0uiB,YAAc1uiB,KAAKigB,EAG1CogkB,cACI,UAA8Cl7kB,IAAvCnF,KAAK+kI,OAAO/kI,KAAKktC,KAAKltC,KAAKuQ,SAC9BvQ,KAAKs1H,QAEDt1H,KAAKktC,IAAM,GAAKltC,KAAKktC,KAAOltC,KAAK+kI,OAAOh/H,UACxC/F,KAAKqxD,KAAOrxD,KAAKqxD,IACjBrxD,KAAK0uiB,aAAoC,IAArB1uiB,KAAK0uiB,YAAoB,EAAI,EACjD1uiB,KAAKuQ,OAASvQ,KAAK0uiB,YACnB1uiB,KAAKktC,IAAMltC,KAAKqxD,IAAM,EAAIrxD,KAAK+kI,OAAOh/H,OAAS,EAAI,GAI3D,MAAO,CACHmnC,IAAKltC,KAAKktC,IACV38B,OAAQvQ,KAAKuQ,QAIrBw8sB,uBAGI,GAFA/stB,KAAKs1H,YAEsCnwH,IAAvCnF,KAAK+kI,OAAO/kI,KAAKktC,KAAKltC,KAAKuQ,QAC3B,MAAO,CACH28B,IAAKltC,KAAKktC,IACV38B,OAAQvQ,KAAKuQ,SC1CtB,iBAA6BgsoB,KAChCz8oB,YAAYkttB,EAAYposB,GACpBpF,QAEAxf,KAAKgttB,WAAaA,EAClBhttB,KAAK4kB,QAAUA,GCEhB,iBAAyB23nB,KAC5B0wE,kBAAkBC,EAAaC,GAC3B,IAAIC,ECoRL,YAAkBF,IACrB,IACIG,EADAD,EAAQ,GAERjjrB,EAAM,EACN5nB,EAAM2qsB,GAMV,IAJAE,EAAM3ntB,KAAK6ntB,GAAW/qsB,EAtPM,EACD,EACF,EAoP+E8qsB,IACxGA,EAAeD,EAAM,GAAGtmsB,KACxBvE,EAAMA,EAAIE,OAAO2qsB,EAAM,GAAGG,WAAWxntB,QAE9Bwc,EAAIxc,OAAS,GAAG,CACnB,IAAIyntB,EAAWF,GAAW/qsB,EAxPN,GACD,EACF,GAsP+E8qsB,GAE5FG,EAAS1msB,OAASumsB,GAClBA,EAAeG,EAAS1msB,KACxBsmsB,EAAM3ntB,KAAK+ntB,GACXrjrB,KAEAijrB,EAAMjjrB,GAAKojrB,YAAcC,EAASD,WAGtChrsB,EAAMA,EAAIE,OAAO+qsB,EAASD,WAAWxntB,QAGzC,OAAOqntB,ED5SSK,CAASP,GACjBQ,EC8SL,YAA+BN,IAClC,IACItmsB,EADA/gB,EAAS,EAGb,QAAS4I,EAAI,EAAGA,EAAIy+sB,GAAMrntB,OAAQ4I,IAC9BmY,EAAO6msB,GAAkBP,GAAMz+sB,GAAGmY,MAClC/gB,GAAU+gB,EAAK8msB,oBAAoBR,GAAMz+sB,GAAG4+sB,WAAWxntB,QAG3D,OAAOmH,KAAKqB,KAAKxI,EAAS,GDvTG8ntB,CAAsBT,GAC3CxosB,EAAU4qR,GAAWk+a,EAAoBP,GACzCH,GC8UL,YAAuBI,GAAOxosB,GACjC,IACIkC,EADAkmsB,EAAa,GAGjB,QAASr+sB,EAAI,EAAGA,EAAIy+sB,GAAMrntB,OAAQ4I,IAC9BmY,EAAO6msB,GAAkBP,GAAMz+sB,GAAGmY,MAClCkmsB,GAAclmsB,EAAKwxJ,OAAO80iB,GAAMz+sB,GAAG4+sB,WAAY3osB,GAGnD,OAAOoosB,EDvVcc,CAAcV,EAAOxosB,GAEtC,OAAO,IAAImpsB,GAAef,GAAYposB,IEVvC,iBAAyB23nB,KAC5Bz8oB,cACI0f,QAEAxf,KAAKwhtB,iBAGTA,iBACItplB,GAAOl4H,KAAM,CACTgutB,cAAe,GACfC,qBAAsB,KAI9BC,gBAAgBtpsB,GACZ,OAAIA,EAAU,GACH,EACAA,EAAU,GACV,EAGJ,EAGXupsB,sBAAsBvpsB,GAClB,OAAO5kB,KAAKiutB,qBAAqBjutB,KAAKkutB,gBAAgBtpsB,GAAW,KAGrEwpsB,mBAAmBrotB,EAAQ6e,GACvB,OAAO5kB,KAAKgutB,cAAgBK,GAAatotB,EAAQ/F,KAAKmutB,sBAAsBvpsB,IAGhF0zJ,UAEAs1iB,uBAEAtmrB,aClCG,IAAIqmrB,GAAoB,SAChB,ICFR,iBAAgCW,GACnC9M,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTiutB,qBAAsB,CAAC,GAAI,GAAI,IAC/BD,cAAe,SAIvB1mrB,SAAS8jb,GACL,OAAOxnd,SAASwnd,EAAW,IAG/B9yS,OAAO/1J,EAAKqC,GACR,IAGIjW,GAFA+tT,EAAQ6xZ,GAAUhssB,EAAK,GACvBhQ,EAFOvS,KAEOoutB,mBAAmB7rsB,EAAIxc,OAAQ6e,GAGjD,IAAKjW,GAAI,EAAGA,GAAI+tT,EAAM32T,OAAS,EAAG4I,KAC9B4D,GAAU87sB,GAAa3xZ,EAAM/tT,IAAI,IAGrC,OAAO4D,EAAS87sB,GAAa3xZ,EAAM/tT,IAAI,EAAI,EAAI+tT,EAAM/tT,IAAG5I,QAG5D6ntB,oBAAoBY,EAAa5psB,GAC7B,IAAI6psB,EAAOD,EAAc,EACzB,OAAO,EAAIxutB,KAAKmutB,sBAAsBvpsB,GAAW,GAAK1X,KAAKC,MAAMqhtB,EAAc,GAAK,EAAIC,GAAiB,IAATA,EAAa,EAAI,KD3BtGC,aACE,IEHd,iBAAqCJ,GACxC9M,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACT2utB,WAAY,CACR,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACLptZ,EAAK,GACL7xT,EAAK,GACL2ikB,EAAK,GACL8T,EAAK,GACLluK,EAAK,GACLmuK,EAAK,GACLh9b,EAAK,GACL9yH,EAAK,GACLmwC,EAAK,GACLx+D,EAAK,GACLkhN,EAAK,GACLmpX,EAAK,GACLn9U,EAAK,GACLz+F,EAAK,GACLu3f,EAAK,GACL/kc,EAAK,GACL+4G,EAAK,GACLtyT,EAAK,GACL42D,EAAK,GACL8/gB,EAAK,GACL9iK,EAAK,GACLzxa,EAAK,GACL6tc,EAAK,GACL53c,EAAK,GACLjC,EAAK,GACL68oB,EAAK,GACL,IAAK,GACL9woB,EAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,IAETo8sB,qBAAsB,CAAC,EAAG,GAAI,IAC9BD,cAAe,SAIvB1mrB,SAAS8jb,GACL,OAAOprd,KAAK2utB,WAAWvjQ,GAG3B9yS,OAAO/1J,EAAKqC,GACR,IAGIjhB,EACAgL,GAHA+tT,EAAQ6xZ,GAAUhssB,EAAK,GACvBhQ,EAASvS,KAAKoutB,mBAAmB7rsB,EAAIxc,OAAQ6e,GAIjD,IAAKjW,GAAI,EAAGA,GAAI+tT,EAAM32T,OAAS,EAAG4I,KAC9BhL,EAAQ,GAAK3D,KAAKsnC,SAASo1R,EAAM/tT,IAAGylC,OAAO,IAAMp0C,KAAKsnC,SAASo1R,EAAM/tT,IAAGylC,OAAO,IAC/E7hC,GAAU87sB,GAAa1qtB,EAAO,IAGlCA,SAA4B,IAApB+4T,EAAM/tT,IAAG5I,OACb,GAAK/F,KAAKsnC,SAASo1R,EAAM/tT,IAAGylC,OAAO,IAAMp0C,KAAKsnC,SAASo1R,EAAM/tT,IAAGylC,OAAO,IACvEp0C,KAAKsnC,SAASo1R,EAAM/tT,IAAGylC,OAAO,IAE3B7hC,EAAS87sB,GAAa1qtB,EAAO,EAAI,EAAI+4T,EAAM/tT,IAAG5I,QAGzD6ntB,oBAAoBY,EAAa5psB,GAC7B,OAAO,EAAI5kB,KAAKmutB,sBAAsBvpsB,GAAW,GAAK1X,KAAKC,MAAMqhtB,EAAc,GAAUA,EAAc,EAAnB,IF9EnEI,KACb,IGLL,iBAA6BN,GAChC9M,iBACIhisB,MAAMgisB,iBAENtplB,GAAOl4H,KAAM,CACTiutB,qBAAsB,CAAC,EAAG,GAAI,IAC9BD,cAAe,SAIvB1mrB,SAAS8jb,GACL,IAAIp/b,EAAOo/b,EAAUx5O,WAAW,GAEhC,GAAI5lN,GAAQ,KAAQ,KAAOA,GAAQA,GAAQ,IACvC,OAAOA,EAGX,MAAM,IAAIvV,MAAO,sCAAqC20c,OAG1D9yS,OAAO/1J,EAAKqC,GACR,IAAIkC,EAAO9mB,KACPuS,EAASuU,EAAKsnsB,mBAAmB7rsB,EAAIxc,OAAQ6e,GAEjD,QAASjW,EAAI,EAAGA,EAAI4T,EAAIxc,OAAQ4I,IAC5B4D,GAAU87sB,GAAavnsB,EAAKwgB,SAAS/kB,EAAI6xB,OAAOzlC,IAAK,GAGzD,OAAO4D,EAGXq7sB,oBAAoBY,EAAa5psB,GAC7B,OAAO,EAAI5kB,KAAKmutB,sBAAsBvpsB,GAAW,EAAI4psB,KC7BtD,iBAA0BjyE,KAC7Bz8oB,cACI0f,QAEAxf,KAAKwhtB,iBAELxhtB,KAAK8mB,KAAO6msB,GAAkB3ttB,KAAK6utB,cAGvCrN,iBACItplB,GAAOl4H,KAAM,CACT6utB,aAbC,OAcDC,OAAQ,2BACRC,6BAA8B,GAC9B3tP,OAAQ,CAAC,IAAK,KAAM,MAAO,QAAS,YAI5C6rP,kBAAkBC,EAAaC,GAC3B,IAAIr6sB,EAAO9S,KAAKs4K,OAAO40iB,GAEnBtosB,EAAU4qR,GADWxvS,KAAK6ttB,sBAAsB/6sB,GACPq6sB,GACzCH,GAAahttB,KAAK8mB,KAAKsnsB,mBAAmBt7sB,EAAK/M,OAAS,EAAG6e,GAAW9R,EAE1E,OAAO,IAAIi7sB,GAAef,GAAYposB,GAG1CipsB,sBAAsB/6sB,GAIlB,OAFyB5F,KAAKqB,MAAMvO,KAAK+utB,6BADxBj8sB,EAAK/M,QACgE,GAK1FuyK,OAAO/1J,GACH,IAAIhQ,EAASvS,KAAK8utB,OAElB,QAASngtB,EAAI,EAAGA,EAAI4T,EAAIxc,OAAQ4I,IAC5B4D,GAAUvS,KAAKgvtB,gBAAgBzssB,EAAIqvN,WAAWjjO,IAGlD,OAAO4D,EAGXy8sB,gBAAgBhjsB,GACZ,IAAIijsB,EAAajvtB,KAAKkvtB,cAAcljsB,GAChCmjsB,EAAKF,EAAa,EAClB18sB,EAAS,GAEb,GAAmB,IAAf08sB,EACA18sB,EAAS87sB,GAAarisB,EAAM,OACzB,CACH,IAAIojsB,EAAkB,EAAIH,EAE1B,QAAStgtB,GAAI,EAAGA,GAAIwgtB,EAAIxgtB,KACpB4D,EAAS87sB,GAAarisB,GAAa,EAAJrd,GAAS,GAAK,IAAK,GAAK4D,EAG3DA,GAAWyZ,GAAa,EAALmjsB,EAAY,KAAOC,GAAoBA,GAAkBrktB,SAAS,GAAKwH,EAG9F,OAAOA,EAGX28sB,cAAcljsB,GACV,IAAIo1c,EAASphe,KAAKohe,OAElB,QAASzyd,EAAI,EAAGA,EAAIyyd,EAAOr7d,OAAQ4I,IAC/B,GAAIqd,EAAOo1c,EAAOzyd,GACd,OAAOA,EAAI,GC9EpB,MAAM0gtB,GAA+B,CAAC,CACzC/8I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,GAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IAER89pB,mBAAoB,EACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IAER89pB,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,GAAI,MAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,GAAI,MAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,MAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,GAAI,MAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,GAAI,MAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,KAE7B,CACCj9I,EAAG,CACC9ghB,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAER89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bp6d,EAAG,CACC3jM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5BttZ,EAAG,CACCzwQ,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,IAE5Bj5rB,EAAG,CACCk7B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAET89pB,mBAAoB,KACpBC,uBAAwB,MP5vChC,IAEIC,GAAgB,eAEhBC,GAAc,CAAE,EAAK,GACrBC,GAAoB,CAAE,EAAK,GAC3BC,GAA0C,CACtC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEhDC,GAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,GAC7BC,GAAmB,CAAC,EAAG,EAAG,GAC1BC,GAA0B,CAAEx9I,EAAG,KAAMn9U,EAAG,KAAM8sE,EAAG,KAAM3rS,EAAG,MAI1Dy5rB,GAAmB,CAAC,WAAY,YAGhCC,GAAwB,CACpB,CAAC9irB,GAAK38B,KAAqB28B,GAAM38B,GAAU,GAAM,EAChD28B,IAAiBA,GAAM,GAAM,EAC7B38B,IAAoBA,GAAS,GAAM,EACpC,CAAC28B,GAAK38B,KAAqB28B,GAAM38B,GAAU,GAAM,EACjD,CAAC28B,GAAK38B,KAAqBrD,KAAKC,MAAM+/B,GAAM,GAAKhgC,KAAKC,MAAMoD,EAAS,IAAM,GAAM,EACjF,CAAC28B,GAAK38B,IAAsB28B,GAAM38B,EAAU,EAAO28B,GAAM38B,EAAU,GAAO,EAC1E,CAAC28B,GAAK38B,KAAuB28B,GAAM38B,EAAU,EAAO28B,GAAM38B,EAAU,GAAM,GAAM,EAChF,CAAC28B,GAAK38B,MAAuB28B,GAAM38B,GAAU,EAAO28B,GAAM38B,EAAU,GAAM,GAAM,GAGpFg1sB,GAAc,OACd0K,GAAe,kBAEfC,GAAa,IAAIvpX,OAAO,oBACxBwpX,GAAoB,IAAIxpX,OAAO,KAAOspX,GAAe,MACrDG,GAAY,IAAIzpX,OAAO,MAAQspX,GAAe,MAQ3C,MAAMI,GAAuB,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,IAE9C,YAA0BC,GAAUC,EAAK5mtB,EAAGmqD,GAC/C,QAASnlD,EAAI,EAAGA,EAAI2htB,GAASvqtB,OAAQ4I,IACjC2htB,GAAS3htB,GAAGhF,GAAGmqD,GAAKy8pB,EAIrB,YAAsBD,GAAUC,EAAK5mtB,EAAGmqD,GAC3C,QAASnlD,EAAI,EAAGA,EAAIqhtB,GAAsBjqtB,OAAQ4I,IAC9C2htB,GAAS3htB,GAAGhF,GAAGmqD,GAAKk8pB,GAAsBrhtB,GAAGhF,EAAGmqD,GAAW,EAANy8pB,EAAU3stB,SAAS2stB,EAAK,IA4E9E,YAAwB5mtB,GAAGmqD,GAC9B,IAAIvhD,EAAS,GAGb,QAAS5D,EAFChF,GAAE5D,OAAS,EAEH4I,GAAK,EAAGA,IACtB4D,EAAO5D,GAAKhF,GAAEgF,GAAKmlD,EAAEnlD,GAGzB,OAAO4D,EAGJ,YAA6B5I,GAAGmqD,GACnC,IAAIvhD,EAAS,GAEb,QAAS5D,EAAI,EAAGA,EAAIhF,GAAE5D,OAAQ4I,IAC1B,QAAS6yF,EAAI,EAAGA,EAAI1tC,EAAE/tD,OAAQy7F,IAEtBjvF,EAAO5D,EAAI6yF,QADOr8F,IAAlBoN,EAAO5D,EAAI6yF,IACM73F,GAAEgF,IAAMmlD,EAAE0tC,IAAM,EAAI1tC,EAAE0tC,GAAK,IAAM,IAElCiunB,GAAYC,GAAkBn9sB,EAAO5D,EAAI6yF,IAAMkunB,IAAmB/ltB,GAAEgF,GAAKmlD,EAAE0tC,IAAM,MAK7G,OAAOjvF,EAkBJ,YAA4Bi+sB,GAAYzmlB,GAC3C,IAAIx3H,EAAS,GACT43B,EAAMqmrB,GAAWzqtB,OAAS,EAE9B,GACIwM,EAAO43B,GAAOulrB,IAAmBc,GAAWrmrB,GAAO4/F,GAAS,KAC5D5/F,eAEuBhlC,IAApBqrtB,GAAWrmrB,IAElB,OAAO53B,EAGJ,YAAgCO,GAAM29sB,GACzC,IAKIjxJ,GACAr1hB,GANAumrB,EAAYL,GAAqBI,EAAsB,GACvDl+sB,EAAS,IAAIjE,MAAMmitB,GAAqB98qB,OAAO7gC,IAC/C69sB,EAAsB,IAAIritB,MAAMiE,EAAOxM,OAAS2qtB,EAAU3qtB,QAAQ4tC,OAAO+8qB,GACzEzjqB,EAAQn6C,GAAK/M,OACb6qtB,GAAiB,GAIrB,IAAKzmrB,GAAM,EAAGA,GAAM8iB,EAAO9iB,KACvBq1hB,GAAUqxJ,GAAmBF,EAAqBlB,GAAYl9sB,EAAOA,EAAOxM,OAAS,KACrF4qtB,EAAoB7ssB,OAAO,EAAG,GAE9BvR,EAASu+sB,GAAetxJ,GAASjtjB,GAGrC,IAAK43B,GAAM53B,EAAOxM,OAAS,EAAGokC,IAAO,EAAGA,KACpCymrB,GAAeH,EAAsB,EAAItmrB,IAAOkkrB,GAAa97sB,EAAO43B,IAAM,GAG9E,OAAOymrB,GAqCJ,YAAoBrusB,GAAKwusB,EAAuBC,EAAsBC,EAAoB5D,GAC7F,IAMIvmsB,GACAymsB,GAPAruK,EAAUqmK,GAAY3+W,KAAKrkV,IAC3B2usB,GAAehyK,EAAUA,EAAQ,GAAK,GACtCj6gB,GAAQirrB,GAAWtpX,KAAKrkV,IACxB4usB,GAAalsrB,GAAQA,GAAM,GAAK,GAChCmsrB,GAAejB,GAAkBvpX,KAAKrkV,IACtC8usB,GAAoBD,GAAeA,GAAa,GAAK,GAIzD,OAAIF,KACCA,GAAanrtB,QAAUgrtB,GAAyBxusB,GAAIxc,SAAWmrtB,GAAanrtB,QAC5EmrtB,GAAanrtB,QAAUirtB,IAAyBb,GAAkB30S,KAAKj5Z,GAAI6xB,OAAO88qB,GAAanrtB,WAChG+gB,GA9PM,UA+PNymsB,GAAa2D,IACVI,KAA0B/usB,GAAIxc,SAAWsrtB,GAAkBtrtB,QAC9DsrtB,GAAkBtrtB,QAAUkrtB,GAAsB5D,IAAiBmC,KACnE1osB,GAAO0osB,GACPjC,GAAa2D,IAAgBC,KAE7BrqsB,GAnQG,OAsQCymsB,GADJ+D,GACiBD,GAAoBjB,GAAUxpX,KAAKrkV,GAAIuR,UAAUu9rB,GAAkBtrtB,SAAS,GAE5EqqtB,GAAUxpX,KAAKrkV,IAAK,IAIlC,CACHuE,KAAMA,GACNymsB,WAAYA,IA2Cb,YAAoBG,GAAoBP,GAC3C,IAAIxjtB,EAAI,EACJmqD,EAAIu7pB,UAAsC,EAC1CzqsB,EAAU1X,KAAKC,MAAMkitB,UAAsC,GAE/D,GACQ3B,GAAqB2B,GAA6BzqsB,GAASuosB,GAAsBmC,mBACjFx7pB,EAAIlvC,EAEJjb,EAAIib,EAGRA,EAAUjb,EAAIuD,KAAKC,OAAO2mD,EAAInqD,GAAK,SAC9BmqD,EAAInqD,EAAI,GAEjB,OAAI+jtB,IAAsB2B,GAA6B1ltB,GAAGwjtB,GAAsBmC,mBACrE1qsB,EAAU,EAGdkvC,EAAI,EAkCR,YAAmBnwD,GAAOgttB,EAAqBY,GAClD,IAAIC,EAAkBC,GAAUd,GAC5Be,EAAmBf,EAAoB5qtB,OAAS,EAChDi0a,EAAcr2a,IAAS+ttB,EAEvBC,GAActD,GAAa1qtB,GADlB4ttB,EAAaG,GAEtBn/sB,GAOD,YAA2Bq/sB,GAASC,GACvC,IAAIC,EAAUD,EAAQ9mtB,SAAS,GAAGhF,OAC9BgstB,EAAUH,GAAQ7mtB,SAAS,GAAGhF,OAC9B4D,EAAIiotB,GAER,GACIjotB,GAAKkotB,GAAWE,EAAUD,EAC1BC,EAAUpotB,EAAEoB,SAAS,GAAGhF,aAErBgstB,GAAWD,GAElB,OAAOnotB,EAlBMqotB,CAAkBh4S,EAAaw3S,GAE5Cj/sB,UAASo/sB,GAActD,GAAa97sB,GAAQm/sB,GAErCn/sB,GAiBJ,YAAqBgQ,GAAK4nB,GAC7B,OAAOvmC,SAAS2e,GAAI6xB,OAAOjK,GAAM,IAkB9B,YAA8BmmrB,GAAUjnE,GAC3C,IACI1/oB,EACAmqD,EAFAixE,EAASurlB,GAAS,GAGlBnmrB,EAAM,EACNpkC,GAASsjpB,EAAatjpB,OAE1B,IAAK4D,EAAI,EAAGmqD,EAAI,EAAGnqD,GAAK,EAAGA,IACb,IAANA,GACAsotB,GAAiB3B,GAAU4B,GAAY7oE,EAActjpB,GAAS,EAAIokC,KAAQxgC,EAAGmqD,GAIrF,IAAKnqD,EAAI,EAAGmqD,EAAI,EAAGA,GAAK,EAAGA,IACb,IAANA,GACAm+pB,GAAiB3B,GAAU4B,GAAY7oE,EAActjpB,GAAS,EAAIokC,KAAQxgC,EAAGmqD,GAMrF,IAFA3pB,EAAM,EAED2pB,EAAIixE,EAAOh/H,OAAS,EAAG4D,EAAI,EAAGmqD,GAAKixE,EAAOh/H,OAAS,EAAG+tD,IACvDm+pB,GAAiB3B,GAAU4B,GAAY7oE,EAActjpB,GAAS,EAAIokC,KAAQxgC,EAAGmqD,GAKjF,IAFAm+pB,GAAiB3B,GAAU,EAAGvrlB,EAAOh/H,OAAS,EAAG,GAE5C4D,EAAIo7H,EAAOh/H,OAAS,EAAG+tD,EAAI,EAAGnqD,EAAIo7H,EAAOh/H,OAAQ4D,IAClDsotB,GAAiB3B,GAAU4B,GAAY7oE,EAActjpB,GAAS,EAAIokC,KAAQxgC,EAAGmqD,GAQ9E,YAA+Bw8pB,GAAUtD,GAC5C,IAMImF,GACA93R,GACA12b,GAPAyutB,EADS9B,GAAS,GACDvqtB,OAEjB8uE,EAAKu9oB,EAAU,GACf38oB,GAAK28oB,EAAU,GAMnB,QAASjorB,GAAM,EAAGA,GAAM6irB,EAAWjntB,OAAQokC,KACvCgorB,GAAWjltB,KAAKC,MAAMg9B,GAAM,GAC5BkwZ,GAAMlwZ,GAAM,EACZxmC,GAAQuutB,GAAYlF,EAAYA,EAAWjntB,OAASokC,GAAM,GAE1D8nrB,GAAiB3B,GAAU3stB,GAbtB,EAakCwutB,GAAUt9oB,EAAKwlX,IACtD43R,GAAiB3B,GAAU3stB,GAAO8xE,GAAK4kX,GAXlC,EAW4C83R,IAIlD,YAA2B7B,GAAU5zT,EAAS/yZ,EAAGmqD,GACpD,IAEInwD,GAFAqrD,EAAO0tW,EAAQ32Z,OAAS,EACxBA,EAAS22Z,EAAQ32Z,OAAS,EAG9B,QAAS4I,GAAI,EAAGA,GAAI+tZ,EAAQ32Z,OAAQ4I,KAChC,QAAS6yF,GAAI7yF,GAAG6yF,GAAIxyC,EAAOrgD,GAAG6yF,KAC1B79F,GAAQ+4Z,EAAQ/tZ,IAEhBsjtB,GAAiB3B,GAAU3stB,GAAOgG,EAAI63F,GAAG1tC,EAAInlD,IAC7CsjtB,GAAiB3B,GAAU3stB,GAAOgG,EAAIgF,GAAGmlD,EAAI0tC,IAC7CywnB,GAAiB3B,GAAU3stB,GAAOgG,EAAI5D,EAASy7F,GAAG1tC,EAAI/tD,EAAS4I,IAC/DsjtB,GAAiB3B,GAAU3stB,GAAOgG,EAAI5D,EAAS4I,GAAGmlD,EAAI/tD,EAASy7F,IAKpE,YAA4B8unB,GAAUrktB,EAAWtC,EAAGmqD,GACvD,IAAIu+pB,EAAQ1otB,EACR2otB,EAAQx+pB,EACRixE,GAASurlB,GAAS,GAEtB,GACI2B,GAAiB3B,GAAU,EAAG+B,EAAOv+pB,GACrCm+pB,GAAiB3B,GAAU,EAAG3mtB,EAAG2otB,GACjCD,GAASpmtB,EAAU,GACnBqmtB,GAASrmtB,EAAU,SAEhBomtB,GAAS,GAAKA,EAAQttlB,GAAOh/H,QAuHjC,YAAqCokC,GAAK+7iB,EAAUqsI,EAAQC,EAAWjC,GAC1ErqI,EAAS/7iB,IAAKqorB,IAAetsI,EAAS/7iB,IAAKqorB,IAAc,EAAKjC,GAAO,IA1lBhD,KA4lBjBrqI,EAAS/7iB,IAAKqorB,KACdD,EAAOporB,KAAQ,IAIhB,YAA+BA,GAAKoorB,EAAQE,EAAclC,EAAKmC,EAAcF,GAC5EC,EAAatorB,IAAKqorB,KAAejC,EACjCmC,EAAavorB,IAAKqorB,MAElBC,EAAatorB,IAAKqorB,GAAajC,EAE3BmC,EAAavorB,IAAKqorB,IAAc,IAChCD,EAAOporB,KAAQ,EAAIuorB,EAAavorB,IAAKqorB,GAAa,GAGtDE,EAAavorB,IAAKqorB,GAAa,GAIhC,YAAwCG,GAAalktB,GACxD,IAAI4lC,EAAUnnC,KAAKC,MAAOwltB,GAAclktB,EAAS,KAC7CmktB,EAAOv+qB,EAAU,EACjBjO,EAAWl5B,KAAKiN,IAAIk6B,EAAUu+qB,EAAO,IACrCvntB,EAAO6B,KAAKiN,IAAIk6B,EAAU,EAAIu+qB,EAAO,IAGzC,OAFY,GAAK1ltB,KAAKulC,IAAIrM,EAAW,EAAG/6B,EAAO,IAvhB5C,cACH,IAAIkH,GACAw3H,EAEJ,IAAKA,EAAQ,EAAGA,EAAQ,IAAKA,IACzBx3H,GAAwC,EAA/Bm9sB,GAAkB3llB,EAAQ,GAC/Bx3H,GAAS,MACTA,IAAkB,KAGtBm9sB,GAAkB3llB,GAASx3H,GAC3Bk9sB,GAAYl9sB,IAAUw3H,EAG1Bx3H,GAAyC,EAA/Bm9sB,GAAkB3llB,EAAQ,GAAU,IAC9C2llB,GAAkB3llB,GAASx3H,GAC3Bm9sB,IAAkB,GAAM,GA0C5BmD,GAZO,cAGH,QAAS1orB,EAAM,EAAGA,GAFqB,GAEoBA,IAIvDkmrB,GAAqBlmrB,GAAO2orB,GAHNzC,GAAqBlmrB,EAAM,GAC1B,CAACA,EAAK,IAQrC4orB,GQnKA,MAAMjynB,GAAQ5zF,KAAK4zF,MACbkynB,GAAe,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,GAAG,GAAK,CAAC,GAAG,GAAK,CAAC,EAAG,IACtGC,GAAgB,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAuW3CnwE,GA3VA,iBAAqBvG,KACjBz8oB,YAAY4U,EAASqK,EAAS0ssB,EAAeC,IACzClssB,QAEAxf,KAAK+e,QAAU07nB,GAAW,GAAIz6oB,KAAK+e,QAASA,GAC5C/e,KAAK0U,QAAUA,EACf1U,KAAKi7X,QAAUj7X,KAAK0U,QACpB1U,KAAK2yO,QAAU84e,EAEfzrtB,KAAK+lsB,eACL/lsB,KAAKomsB,eAELpmsB,KAAKy4Y,WAAW15X,GAGpB0mT,UACIzlU,KAAK0nsB,kBAGT3B,eACIngY,GAAS5lU,KAAK0U,QAAS,YAG3B0xrB,eACI,MAAQrnrB,UAASg5X,WAAY/3Y,OAExB+3Y,GAAWA,EAAQh5X,QAAQjX,OAASiX,EAAQ6lX,YAC7C5kY,KAAK0nsB,kBACL1nsB,KAAK4rtB,sBACL5rtB,KAAK+3Y,QAAU/3Y,KAAK6rtB,kBAI5BA,iBACI,OAAOxvkB,UAAoBr8I,KAAKg5V,eAAgB,CAC5ClxV,KAAM9H,KAAK+e,QAAQ6lX,WAI3B8iU,kBACQ1nsB,KAAK+3Y,UACL/3Y,KAAK+3Y,QAAQtyE,UACbzlU,KAAK+3Y,QAAU,KACf/3Y,KAAK8rtB,0BAIbF,sBACS5rtB,KAAKg5V,iBACNh5V,KAAKg5V,eAAiBr3U,SAAS+O,cAAc,OAC7C1wB,KAAKg5V,eAAe7uV,MAAM+/B,SAAW,WACrClqC,KAAK0U,QAAQmmC,YAAY76C,KAAKg5V,iBAItC8yX,yBACQ9rtB,KAAKg5V,gBAAkBh5V,KAAKg5V,eAAevrM,aAC3CztJ,KAAKg5V,eAAevrM,WAAW/vG,YAAY19C,KAAKg5V,gBAChDh5V,KAAKg5V,eAAiB,MAI9Br4M,SACI,IAAI3xF,EAAOhvD,KAAK24sB,WAEhB34sB,KAAK+3Y,QAAQz4V,QAEbt/C,KAAK+3Y,QAAQzrQ,QAAQ,CACjB51H,MAAOs4C,EACPzkD,OAAQykD,IAGZhvD,KAAKi+U,eAELj+U,KAAK+3Y,QAAQ17P,KAAKr8I,KAAK4jQ,QAG3Bijc,UACI,MAAMnyrB,EAAU1U,KAAK0U,QACf+3sB,EAAe/3sB,EAAQmlV,YACvBv0B,EAAgB5wT,EAAQm0O,aACxB75L,EAAO,CAAEt4C,MAAO,EAAGnM,OAAQ,GAEjC,OAAIkitB,EAAe,IACfz9pB,EAAKt4C,MAAQ+1sB,GAGbnnZ,IACAt2Q,EAAKzkD,OAAS+6T,GAGXt2Q,EAGXgjoB,UACIhyrB,KAAK2gJ,SAGTs9L,eACIj+U,KAAK4jQ,OAAS5jQ,KAAK+rtB,UAGvB70U,eACI,OAAOl3Y,KAAK+rtB,UAGhBA,UACI,IACI3wU,EAIA83U,GACAnulB,GACA/1E,GACAmkqB,GACAC,GATAzvtB,EAAQ3D,KAAKu0a,OAEbv3R,EAASh9I,KAAK+e,QAAQi+H,QAAU,GAChCwI,EAAUxlJ,KAAK+e,QAAQymI,SAAW,EAClC88f,EAActlgB,EAAOtmI,OAAS,EAOlCsmI,EAAOtmI,MAAQ4roB,EAEf,IAAI1+Y,GAAS,IAAIvnH,KAEjB,IACQ14I,IACAohI,GRkgBT,YAAoBmolB,GAAaC,EAAsB1H,GAC1D,IAAI4N,EATD,YAAiC5N,IACpC,OAAIA,IAAYA,GAASpqrB,cAAcvb,QAAQ,UAAY,EAChD,IAAIwzsB,GAGR,IAAIC,GAIGC,CAAwB/N,GAClCgO,EAAiBJ,EAAQpG,kBAAkBC,GAAaC,GACxDvosB,EAAU6usB,EAAe7usB,QACzB8usB,GAAqBrE,GAA6BzqsB,EAAU,GAAGuosB,GAC/DH,GA/jBD,YAAuB2G,GAAmBrE,GAC7C,IAAIsE,EAAqC,EAArBtE,EAChBuE,EAAkB,EAClBC,EAAuB,EACvB9G,EAAa2G,GAEjB,KAAO3G,EAAWjntB,OAAS6ttB,GAAiBC,EA/F/B,OA+F4D9ttB,QACrEintB,GAhGS,OAgGgB54qB,OAAOy/qB,KAOpC,IAJI7G,EAAWjntB,OAAS,GAAM,IAC1BintB,GAAc,IAAI1+sB,MAAM,EAAI0+sB,EAAWjntB,OAAS,GAAG0hB,KAAK,MAGrDulsB,EAAWjntB,OAAS6ttB,GACvB5G,GAAc+C,GAAiB+D,GAC/BA,GAAwB,EAG5B,OAAO9G,EA4iBU+G,CAAcN,EAAezG,WAAY0G,GAAmBpE,oBACzE0E,GAzcD,YAAmBC,GAAYC,GAClC,IAGIC,EAEAC,GACAC,GACAC,GACAC,GARAC,EAAgB,EAChBC,EAAa,GACbC,EAAc,GAEdC,GAAgBT,EAA4B1iqB,OAMhD,QAASu0lB,GAAW,EAAGA,GAAW4uE,GAAc5utB,OAAQggpB,KAAY,CAChEsuE,GAAmBM,GAAc5uE,IAAU,GAE3C,QAAS6uE,GAAW,EAAGA,GAAWP,GAAkBO,KAAY,CAC5DR,GAAsBO,GAAc5uE,IAAU,GAC9CouE,EAAY,GACZG,GAAoB,GAEpB,QAASO,GAAc,EAAGA,IAAeT,GAAqBS,KAC1DN,GAAWN,GAAWngsB,UAAU0gsB,EAAeA,EAAgB,GAC/DL,EAAU1utB,KAAK8utB,IACfD,GAAkBF,GAAsBS,IAAepD,GAAU8C,IACjEC,GAAiB,EAGrBC,EAAWhvtB,KAAK0utB,GAChBO,EAAYjvtB,KAAKqvtB,GAAuBR,GACpCJ,EAA4B3E,0BAGxC,MAAO,CAACkF,EAAYC,GA0aPK,CAAU/H,GAAY0G,IAC/BpD,GA1QD,YAAsB1rsB,IACzB,IAAI0rsB,EAAW,GACX8B,EAAU,GAAK,EAAIxtsB,GAEvB,QAASjW,EAAI,EAAGA,EAAIqhtB,GAAsBjqtB,OAAQ4I,IAAK,CACnD2htB,EAAS3htB,GAAK,IAAIL,MAAM8jtB,GAExB,QAAS5wnB,EAAI,EAAGA,EAAI4wnB,EAAS5wnB,IACzB8unB,EAAS3htB,GAAG6yF,GAAK,IAAIlzF,MAAM8jtB,GAInC,OAAO9B,EA8PQ0E,CAAapwsB,IAnKzB,YAA2B0rsB,IAC9B,IAAI8B,EAAU9B,GAAS,GAAGvqtB,OAE1BkvtB,GAAkB3E,GAAUV,GAAe,EAAG,GAC9CsF,GAAmB5E,GAAU,EAAC,GAAI,GAAK,EAAG,GAC1C2E,GAAkB3E,GAAUV,GAAewC,EAAU,EAAG,GACxD8C,GAAmB5E,GAAU,CAAC,GAAG,GAAK8B,EAAU,EAAG,GACnD6C,GAAkB3E,GAAUV,GAAe,EAAGwC,EAAU,GACxD8C,GAAmB5E,GAAU,EAAC,EAAI,GAAI,EAAG8B,EAAU,IA6JnD+C,CAAkB7E,IA1Jf,YAA8BA,GAAU1rsB,GAC3C,GAAIA,EAAU,EACV,OAGJ,IAIIwwsB,GACA1zoB,GALAqjD,EAASurlB,GAAS,GAClB8B,EAAUrtlB,EAAOh/H,OACjB6rsB,EAAc1ksB,KAAKC,MAAMyX,EAAU,GACnCk7D,EAAS,CAAC,GAGV31C,GAAM,EAUV,KARKirrB,GAAgBzF,GAAwC/qsB,IACzD88D,IAAY0woB,EAAU,GAAKgD,IAAiBxjB,EAE5CwjB,GAAgB1zoB,IAAY0woB,EAAU,KAAOxgB,EAAc,GAG/D9xnB,EAAOr6E,KAAKq6E,EAAO31C,MAASirrB,IAEpBt1oB,EAAO31C,IAAOu3C,GAAY0woB,GAC9BtyoB,EAAOr6E,KAAKq6E,EAAO31C,MAASu3C,IAGhC,QAAS/yE,GAAI,EAAGA,GAAImxE,EAAO/5E,OAAQ4I,KAC/B,QAAS6yF,GAAI,EAAGA,GAAI1hB,EAAO/5E,OAAQy7F,UACMr8F,IAAjC4/H,EAAOjlD,EAAOnxE,KAAImxE,EAAO0hB,MACzByznB,GAAkB3E,GAAUT,GAAkB/voB,EAAOnxE,IAAK,EAAGmxE,EAAO0hB,IAAK,GA+HrF6znB,CAAqB/E,GAAU1rsB,GAzH5B,YAA4B0rsB,IAC/B,IAEI3stB,EAAQ,EACRyutB,EAAU9B,GAAS,GAAGvqtB,OAE1B,QAAS4I,EAAI,EAAGA,EAAIyjtB,EAAU,EAAGzjtB,IAC7BsjtB,GAAiB3B,GAAU3stB,EANrB,EAMiCgL,GACvCsjtB,GAAiB3B,GAAU3stB,EAAOgL,EANzB,GAOThL,GAAS,EAiHb2xtB,CAAmBhF,IAEf1rsB,GAAW,GACX2wsB,GAAsBjF,GAAUjC,GAAa,EAAG,KAGpDmH,GAAqBlF,GAAUjC,GAAa,EAAG,KA1mB5C,YAAkBiC,GAAU0D,GAC/B,IACIyB,EACAZ,EACA9qc,EAHA2rc,EAAc,IAAIC,GAAgBrF,GAAS,IAK/C,QAASsE,GAAW,EAAGA,GAAWZ,EAAOjutB,OAAQ6utB,KAI7C,IAHAa,EAAQzB,EAAOY,IACfC,EAAc,EAEPY,EAAM1vtB,OAAS,GAAG,CACrB,QAAS4I,GAAI,EAAGA,GAAI8mtB,EAAM1vtB,OAAQ4I,KAC9B,QAAS6yF,GAAI,EAAGA,GAAI,EAAGA,KACnBuoL,EAAO2rc,EAAYr1I,cACnBu1I,GAAatF,GAAUmF,EAAM9mtB,IAAGkmtB,GAAazgrB,OAAOotD,IAAIuoL,EAAK78O,IAAK68O,EAAKx5Q,QAM/E,IAFAsktB,IAEOY,EAAM,IAAMZ,IAAgBY,EAAM,GAAG1vtB,QACxC0vtB,EAAM3xsB,OAAO,EAAG,GAK5B,KAAQimQ,EAAO2rc,EAAY3I,wBACvB6I,GAAatF,GAAU,EAAGvmc,EAAK78O,IAAK68O,EAAKx5Q,QAglB7CsltB,CAASvF,GAAU0D,IAEnB,IAAI59D,GAtHD,YAA2Bk6D,IAC9B,IAKIvrlB,GACAp2H,GANA4jtB,EAAS,GACTE,EAAe,GACfE,EAAc,GACdzsI,EAAW,GACX4vI,EAAmB,GAKnBC,GAAgBzF,GAAS,GAAGvqtB,OAEhC,IAAK4I,GAAI,EAAGA,GAAI2htB,GAASvqtB,OAAQ4I,KAC7B4jtB,EAAO5jtB,IAAK,EACZgktB,EAAYhktB,IAAK,EACjBmntB,EAAiBnntB,IAAK,CAAC,EAAG,GAC1Bu3kB,EAASv3kB,IAAK,CAAC,EAAG,GAClB8jtB,EAAa9jtB,IAAK,GAGtB,QAASk5Z,GAAW,EAAGA,GAAWkuT,GAAeluT,KAC7C,QAASwvF,GAAc,EAAGA,GAAc0+N,GAAe1+N,KACnD,QAAS2+N,GAAc,EAAGA,GAAc1F,GAASvqtB,OAAQiwtB,KACrDjxlB,GAASurlB,GAAS0F,IAClBrD,EAAYqD,KAAgBpytB,SAASmhI,GAAO8iS,IAAUwvF,IAAc,IAEhEo7N,EAAauD,IAlBnB,KAkByCjxlB,GAAO8iS,IAAUwvF,KACpDxvF,GAAW,EAAIkuT,IACf1+N,GAAc,GAAK,GACnBtyX,GAAO8iS,GAAW,GAAGwvF,MAAiBo7N,EAAauD,IArBzD,IAsBMjxlB,GAAO8iS,GAAW,GAAGwvF,GAAc,KAAOo7N,EAAauD,IAtB7D,KAuBMzD,EAAOyD,KAAgB,GAG3BC,GAA4BD,GAAa9vI,EAAUqsI,EA1BrD,EA0BkExtlB,GAAO8iS,IAAUwvF,KACjF4+N,GAA4BD,GAAa9vI,EAAUqsI,EA1BlD,EA0BkExtlB,GAAOsyX,IAAaxvF,KACvFquT,GAAsBF,GAAazD,EAAQE,EAAc1tlB,GAAO8iS,IAAUwvF,IAAcy+N,EA5B1F,GA6BEI,GAAsBF,GAAazD,EAAQE,EAAc1tlB,GAAOsyX,IAAaxvF,IAAWiuT,EA5BvF,GAiCb,IACI1/D,GADA3npB,GAAQsntB,GAAgBA,GAExBtjrB,GAAM6b,OAAO0qlB,UAEjB,IAAKrqoB,GAAI,EAAGA,GAAI4jtB,EAAOxstB,OAAQ4I,KAC3B4jtB,EAAO5jtB,KAAMwntB,GAA+BxD,EAAYhktB,IAAIF,IAExD8jtB,EAAO5jtB,IAAK8jC,KACZA,GAAM8/qB,EAAO5jtB,IACbynpB,GAASznpB,IAIjB,OAAOynpB,GA+DMggE,CAAkB9F,IAC3B+F,GAAgB/F,GAASl6D,IAO7Bo/D,OALI5wsB,GAAW,GACX2wsB,GAAsB,CAACc,IA5OxB,YAAkCzxsB,IACrC,OAAO0xsB,GAAU1xsB,GAhbY,gBAgbyB,IA2OX2xsB,CAAyB3xsB,IAIpE4wsB,GAAqB,CAACa,IAhVnB,YAAiCj7sB,IACpC,IACIo7sB,EACAjktB,EAAS,GAEb,GAAqB,IAJFk/sB,GAAUr2sB,IAKzB,MAAO,kBAGXo7sB,EAAgBF,GAAU7E,GAAUr2sB,IAzVR,cAyV4C,IAExE,QAASzM,EAAI,EAAGA,EAAI6ntB,EAAczwtB,OAAQ4I,IACtC4D,GAAUiktB,EAAcpirB,OAAOzlC,GA7Vf,kBA6VsCylC,OAAOzlC,GAGjE,OAAO4D,EAiU+BkktB,CADnB3G,GAAwB3C,GAAwBkB,GAAaj4D,GAAQ,KAGjFigE,GQhiBcK,CAAW/ytB,EAAO3D,KAAK+e,QAAQ43sB,gBAAiB32tB,KAAK+e,QAAQ0msB,UACtEz2pB,GAAOhvD,KAAK24sB,WACZya,GAAcpkqB,GAAO,GAAKszlB,EAAc98f,GACxC41P,EAAWp7Y,KAAK42tB,mBAAmBxD,GAAarulB,GAAOh/H,QACvDottB,GAAWpulB,GAAOh/H,OAASq1Y,EAC3B83U,GAAgB5wE,EAAc98f,GAAW4tkB,GAAcD,IAAY,EAEnEvvd,GAAO1yO,OAAOlxB,KAAK62tB,kBAAkB7nqB,GAAMguF,IAC3C4mH,GAAO1yO,OAAOlxB,KAAK82tB,cAAc/xlB,GAAQq2Q,EAAU83U,KAEnDlztB,KAAS+2tB,iBACLnzd,GAAO1yO,OAAOlxB,KAAKg3tB,YAAYhoqB,GAAMosV,IAC9Bp7Y,KAAKi3tB,YACZrzd,GAAO1yO,OAAOlxB,KAAKk3tB,iBAAiBloqB,GAAMosV,WAG7C92X,IACLtkB,KAAK2yO,QAAQruN,IAGjB,OAAOs/O,GAGXozd,YAAYG,EAAQ/7U,GAChB,IAAIz5P,EACAy1kB,EACA/npB,EAASyxB,GAAMq2nB,EAAS,GACxBE,GAAWr3tB,KAAKs3tB,aA1JL,EA0JkBl8U,GAC7Bm8U,GAAUv3tB,KAAK+e,QAAQoqX,QAAQn7T,SAC/B9jC,GAAW,CACXvgC,EAAG0lE,EAASgopB,GAAS3gtB,MAAQ,EAC7Bo9C,EAAGub,EAASgopB,GAAS9stB,OAAS,GAGlC6stB,SAAY,IAAI9jpB,KACZ,IAAIA,KAAWppC,GAASvgC,EAAGugC,GAAS4pB,GACpC,IAAIwf,KAAU+jpB,GAAS3gtB,MAAO2gtB,GAAS9stB,SAG3Co3I,EAAQ,IAAItF,KAAWk7kB,GAASH,GAEzBz1kB,EAGXu1kB,iBAAiBC,EAAQ/7U,GACrB,IAAIi8U,EAAWr3tB,KAAKs3tB,aA5KL,EA4KkBl8U,GACjCi8U,EAAWnqtB,KAAKsB,IAAI6otB,EAAS3gtB,MAAO2gtB,EAAS9stB,QAC7C,IAAIittB,EAAYH,EAAW,EACvBI,EAAcD,EAAY,EAC1BnopB,GAAS8npB,EAAS,EAClBnqsB,GAAQ,GACR42O,GAAS,IAAIvnH,KAEjBrvH,UAAMrjB,EAAIqjB,GAAM8mC,EAAI5mD,KAAKqB,KAAK8gE,GAAS+rU,EAAWi8U,EAAW,GAC7Dzzd,GAAO1yO,OAAOlxB,KAAK03tB,aAAa1qsB,GAAO9f,KAAKqB,KAAK8otB,EAAsB,EAAXj8U,GAAe63U,GAAe,SAE1FjmsB,GAAMrjB,EAAIqjB,GAAM8mC,EAAIub,GAASgopB,EAAW,EACxCzzd,GAAO1yO,OAAOlxB,KAAK03tB,aAAa1qsB,GAAOqqsB,EAAUpE,GAAejztB,KAAK+e,QAAQwgI,QAE7EvyH,GAAMrjB,EAAI0lE,GAASoopB,EAAcJ,EAAW,EAC5CrqsB,GAAM8mC,EAAIub,GAASoopB,EAAcD,EAAYH,EAAW,EACxDzzd,GAAO1yO,OAAOlxB,KAAK03tB,aAAa1qsB,GAAOwqsB,EAAWxE,GAAc,SAEzDpvd,GAGX8zd,aAAa1qsB,EAAOw/B,EAAMkwW,EAASn9Q,GAC/B,IAAImqC,EAAO,IAAIrtC,KAAe,CAC1B3tI,KAAM,CACF6wI,MAAOA,GAEXsC,OAAQ,OAGZ6nC,EAAK+3D,OAAOz0N,EAAMrjB,EAAGqjB,EAAM8mC,GAE3B,QAASnlD,GAAI,EAAGA,GAAI+tZ,EAAQ32Z,OAAQ4I,KAChC+6K,EAAKg4D,OAAO10N,EAAMrjB,EAAI6iD,EAAOkwW,EAAQ/tZ,IAAG,GAAIqe,EAAM8mC,EAAItH,EAAOkwW,EAAQ/tZ,IAAG,IAG5E+6K,SAAK1+J,QAEE0+J,EAGXivhB,WACI,IAAI3ppB,EAEJ,GAAIhvD,KAAK+e,QAAQiwC,KACbA,EAAOprD,SAAS5D,KAAK+e,QAAQiwC,KAAM,QAChC,CACH,MAAMt6C,EAAU1U,KAAK0U,QACf+9B,EAAMvlC,KAAKulC,IAAI/9B,EAAQmlV,YAAanlV,EAAQm0O,cAG9C75L,EADAvc,EAAM,EACCA,EApOL,IA0OV,OAAOuc,EAGX4nqB,mBAAmB5nqB,EAAM2oqB,GACrB,IAAIv8U,EAAWluY,KAAKC,MAAM6hD,EAAO2oqB,GAEjC,GAAIv8U,EA3OY,EA2OkC,CAC9C,MAAMzS,EAAUz7X,KAAKqB,KA5OT,EA4OcoptB,GAC1B33tB,KAAK2yO,QAAQ,IAAIl8N,MACZ,sDAAqDu4C,+BAAkC25U,cAErFyS,EAAWu8U,GAAc3oqB,GAChCosV,EAAW,GAjPC,GAkPZA,IAGJ,OAAOA,EAGX07U,cAAc/xlB,EAAQq2Q,EAAU83U,GAC5B,IAAIxpiB,EAAO,IAAIrtC,KAAe,CAC1B3tI,KAAM,CACF6wI,MAAOv/I,KAAK+e,QAAQwgI,OAExBsC,OAAQ,OAGZ,QAAS30G,EAAM,EAAGA,EAAM63F,EAAOh/H,OAAQmnC,IAAO,CAC1C,IAAI4mB,GAAIo/pB,EAAgBhmrB,EAAMkuW,EAC1B7qY,GAAS,EAEb,KAAOA,GAASw0H,EAAOh/H,QAAQ,CAC3B,KAA+B,IAAxBg/H,EAAO73F,GAAK38B,KAAiBA,GAASw0H,EAAOh/H,QAChDwK,KAGJ,GAAIA,GAASw0H,EAAOh/H,OAAQ,CACxB,IAAI4D,GAAI4G,GACR,KAA+B,IAAxBw0H,EAAO73F,GAAK38B,KACfA,KAGJ,IAAI4kE,GAAK2rB,GAAMoynB,EAAgBvptB,GAAIyxY,GAC/BvmU,GAAKisB,GAAMhtC,IACX2hB,GAAKqrB,GAAMoynB,EAAgB3itB,GAAS6qY,GACpCyhQ,GAAK/7iB,GAAMhtC,GAAIsnV,GAEnB1xN,EAAK+3D,OAAOtsK,GAAIN,IACX6sK,OAAOvsK,GAAI0nkB,IACXn7Z,OAAOjsK,GAAIonkB,IACXn7Z,OAAOjsK,GAAIZ,IACX7pD,UAKjB,OAAO0+J,EAGXmtiB,kBAAkB7nqB,EAAMguF,GACpB,MAAM/gB,EAAM,IAAIghhB,GAAI,EAAG,EAAGjulB,EAAMA,GAAMqulB,MAAMrggB,EAAOtmI,MAAQ,GAW3D,OAVmB2lI,cAAmBpgB,EAAIwhhB,SAAU,CAChD/uoB,KAAM,CACF6wI,MAAOv/I,KAAK+e,QAAQinU,YAExBnkM,OAAQ,CACJtC,MAAOvC,EAAOuC,MACd7oI,MAAOsmI,EAAOtmI,SAO1B+hY,WAAW15X,GAEP/e,KAAK+e,QAAUm5G,GAAOl4H,KAAK+e,QADVA,GAAW,SAGN5Z,IAAlB4Z,EAAQpb,QACR3D,KAAKu0a,OAASvhZ,OAAOhzB,KAAK+e,QAAQpb,QAGtC3D,KAAK2gJ,SAGTh9I,MAAMA,GACF,QAAcwB,IAAVxB,EACA,OAAO3D,KAAKu0a,OAGhBv0a,KAAKu0a,OAASvhZ,OAAOrvB,GAErB3D,KAAK2gJ,SAGTo2kB,iBACI,OAAO/uZ,QAAQhoU,KAAK+e,QAAQoqX,QAAQn7T,UAGxCippB,WACI,MAAqC,UAA9Bj3tB,KAAK+e,QAAQoqX,QAAQrhY,KAGhCwvtB,aAAaM,GACT,IAAIlhtB,EAAQ1W,KAAK+e,QAAQoqX,QAAQzyX,MAC7BnM,EAASvK,KAAK+e,QAAQoqX,QAAQ5+X,OAElC,OAAKmM,GAAUnM,EAEJmM,IAAUnM,EACjBA,EAASmM,GACDA,GAASnM,IACjBmM,EAAQnM,GAJRmM,EAAQnM,EAASqttB,EAOd,CACHlhtB,MAAOA,EACPnM,OAAQA,KAKM,CACtBvF,KAAM,SACN4/X,SAAU,MACV6gV,SAAU,aACV9htB,MAAO,GACPgztB,gBAvWgC,IAwWhC3wY,WAvWoB,OAwWpBzmM,MAvW2B,OAwW3BvwF,KAAM,GACNw2F,QAAS,EACTxI,OAAQ,CACJuC,MAAO,GACP7oI,MAAO,GAEXyyX,QAAS,CACLrhY,KAAM,QACNkmE,SAAU,GACVt3D,MAAO,EACPnM,OAAQ,KCvXhB,MClBMsttB,GAAO,+BAEPC,GAAS,QAAUD,GACnBE,GAAS,QAAUF,GACnBG,GAAc,cAGdvtV,GAAQ,KAAO,CACjB36X,KAAM,CACFktI,OAAQ,CACJtmI,MAAO,IAGftR,MAAO,CACHigJ,KAAMyykB,GACNtykB,QAAS,GAEb9tE,KAAM,CACF3xE,OAAQ,GACR2Q,MAAO,GAEXu9T,SAAS,IA8OPmxD,GAAkBrmX,KAAa,CACjCk1T,SAAS,EACTu2D,OAAQ,CACJnlP,KArQO,qCAuQX8jP,QAASpqX,GAAQmloB,UAAY,GAAK,CAC9Bn3Q,SAAU,QAEdhkP,KAxOsB,CACtBwhP,UAAW,CACPlkD,QAAS,CACLrpM,OAAQ,KAGhBtlE,KAAM,CACFttE,QAAS,EACTsM,MAAO,GAEX2vU,QAAS,CACLr3R,KAAM,EACNilR,SAAS,GAEb7pU,QAAS,IA2NT6ttB,UAxN2B,CAC3B1tV,UAAW,CACPlkD,QAAS,CACLrpM,OAAQ,KAGhBtlE,KAAM,CACFttE,QAAS,EACTsM,MAAO,GAEX2vU,QAAS,CACLr3R,KAAM,EACNilR,SAAS,GAEb7pU,QAAS,IA2MT8ttB,kBAzN2B,CAC3B3tV,UAAW,CACPlkD,QAAS,CACLrpM,OAAQ,KAGhBtlE,KAAM,CACFttE,QAAS,EACTsM,MAAO,GAEX2vU,QAAS,CACLr3R,KAAM,EACNilR,SAAS,GAEb7pU,QAAS,IA4MTsyG,IAzMqB,CACrByrR,IAzEY,IA0EZqB,QAzEgB,IAiRhBmD,QArMyB,CACzBzD,cAAe,GACfT,UAAW,GACXzrP,OAAQ,CACJw3hB,YAAa,GACb99pB,MAAO,GAEXixX,UA5EU,OA6EVQ,IAAK,EACLoC,UAAW,CACPvtP,OAAQ,CACJ5yI,QAAS,EACTsM,MAAO,GAEXozX,SAAU,CACNpzX,MAAO,GAEXqzO,KAAM,CACFrzO,MAAO,GAEXi7U,OAAQ,CACJj7U,MAAO,IAGfqzO,KAAM,CACFrzO,MAAO,GAEXi7U,OAAQ,CACJj7U,MAAO,GAEX8yX,QAAS,GACTM,SAAU,CACNpzX,MAAO,IAsKX8rb,OAlKwB,CACxBxlT,OAAQ,CACJtmI,MAAO,GAEX8zX,OAAQ,CACJxkD,WAAYgyY,IAEhB5ttB,QAAS,IA4JTwiY,OAzJwB,CACxBzE,IA5HY,IA6HZqB,QA5HgB,GA6HhB9gY,OAAQ,CACJ62I,MAAO,YAsJXstP,YAlJ6B,CAC7B7vP,OAAQ,CACJw3hB,YAAa,GACb99pB,MAAO,GAEXixX,UAhIU,OAiIVQ,IAAK,EACLoC,UAAW,CACPvtP,OAAQ,CACJ5yI,QAAS,EACTsM,MAAO,GAEXghE,KAAM,CACFhhE,MAAO,IAGfghE,KAAM,CACF6nE,MAlJM,OAmJN7oI,MAAO,GAEX8yX,QAAS,IA+HTj5X,OA5HwB,CACxB43X,IA3JY,IA4JZqB,QA3JgB,IAsRhB2uV,QA9ByB,CACzB3tV,OAAQ,CACJjrP,MAAO,GACPymM,WAAYgyY,GACZ/jZ,SAAS,GAEbs2D,UAAW,CACPvtP,OAAQ,CACJtmI,MAAO,KAuBf25rB,IAzDqB,CACrB7lU,OAAQ,CACJxkD,WAAY,GACZzmM,MAAO,GACPiG,QAAS,CACLr3B,IAAK,EACLu7M,OAAQ,EACRt6P,KAAM,EACNE,MAAO,KAkDfghoB,MA1HuB,CACvB/hqB,OAAQ,GA0HR6prB,OA9CwB,CACxB5tV,OAAQ,CACJxkD,WAAY,GACZzmM,MAAO,GACPiG,QAAS,CACLr3B,IAAK,EACLu7M,OAAQ,EACRt6P,KAAM,EACNE,MAAO,KAuCfw9T,oBArE2B,CAC3B3E,IAAK,GACLzwT,KAAM,CACF6nE,MAvNM,OAwNN7oI,MAAO,GAEX8yX,QA3NgB,IA2RhB9xT,KAzHsB,CACtBhhE,MAAO,GAyHP+zX,MAAOA,KACPimU,KAvHsB,CACtBvoU,IAAK,EACLoC,UAAW,CACP7yT,KAAM,CACFttE,QAAS,EACTsM,MAAO,IAGfghE,KAAM,CACFhhE,MAAO,GAEX8yX,QAAS,IA6GTqnU,UA1G2B,CAC3Bn5nB,KAAM,CACFttE,QAAS,EACTsM,MAAO,GAEX2vU,QAAS,CACLr3R,KAAM,EACNilR,SAAS,GAEb7pU,QAAS,IAkGT0msB,UA/F2B,CAC3BzqX,QAAS,CACLpS,SAAS,GAEbv9T,MAAO,GA4FPi6rB,UA5G2B,CAC3Bj5nB,KAAM,CACFttE,QAAS,EACTsM,MAAO,GAEX2vU,QAAS,CACLr3R,KAAM,EACNilR,SAAS,GAEb7pU,QAAS,IAoGTwmsB,UAjG2B,CAC3BvqX,QAAS,CACLpS,SAAS,GAEbv9T,MAAO,GA8FP2htB,SA3F0B,CAC1BlwV,IAzMY,IA0MZqB,QAzMgB,IAmShB2mU,YAvF6B,CAC7BhoU,IA9MY,IA+MZqB,QA9MgB,IAoShBinU,YAnF6B,CAC7B/5rB,MAAO,GAmFP65rB,aAhQsB,CACtBhmU,UAAW,CACPlkD,QAAS,CACLrpM,OAAQ,KAGhBtlE,KAAM,CACFttE,QAAS,EACTsM,MAAO,GAEX2vU,QAAS,CACLr3R,KAAM,EACNilR,SAAS,GAEb7pU,QAAS,IAmPT4iY,gBA1NyB,CACzB9D,cAAe,GACfT,UAAW,GACXzrP,OAAQ,CACJw3hB,YAAa,GACb99pB,MAAO,GAEXixX,UA5EU,OA6EVQ,IAAK,EACLoC,UAAW,CACPvtP,OAAQ,CACJ5yI,QAAS,EACTsM,MAAO,GAEXozX,SAAU,CACNpzX,MAAO,GAEXqzO,KAAM,CACFrzO,MAAO,GAEXi7U,OAAQ,CACJj7U,MAAO,IAGfqzO,KAAM,CACFrzO,MAAO,GAEXi7U,OAAQ,CACJj7U,MAAO,GAEX8yX,QAAS,GACTM,SAAU,CACNpzX,MAAO,IA2LXu2X,eA7KwB,CACxB9E,IA5HY,IA6HZqB,QA5HgB,GA6HhB9gY,OAAQ,CACJ62I,MAAO,YA0KX6wjB,aAtIsB,CACtB15rB,MAAO,GAsIPw2X,UApF2B,CAC3B/E,IAAK,GACLzwT,KAAM,CACF6nE,MAvNM,OAwNN7oI,MAAO,GAEX8yX,QA3NgB,MAsTP8uV,GAAY,CAACv5sB,GAAU,MAAQ,CACxC+lX,aA7RwB,CACxB0F,OAAQ,CACJnlP,KAAMyykB,IAEVrtV,MAAOA,KACP79U,MAAO,CACHy4F,KAAM0ykB,GACNxprB,OAAQ,IAuRZw2V,aAAc,CACVyH,eAAgB,CACZv4D,SAAS,IAGjB1vS,UAAW,CACPy1W,KAAM,CACFzvY,OAAQ,GACRgkC,OAAQ,CACJ4/E,IAAK,MAIjBi3Q,eAAgBA,GAAermX,IAC/B6tC,MA1BiB,CACjBy4F,KAAM0ykB,IA0BN9qrB,OAvBkB,CAClBu9V,OAAQ,CACJnlP,KAAMyykB,oGChTP,MAAMh5T,EAAoB,IACJ,oBAAX3pZ,OCFZojtB,EAAW,CACbC,GAAI,gDACJC,KAAM,+BACNC,QAAS,sEACTC,OAAQ,2CACRC,KAAM,kCACNC,MAAO,2CACPC,MAAO,gCACPC,WAAY,oDACZC,SAAU,kDACVC,QAAS,gCACTC,MAAO,2CACPC,SAAU,gDACVC,KAAM,8CAEJC,EAAQ,CACVC,IAAK,sBACLZ,QAAS,kBACTK,WAAY,wBACZE,QAAS,UACTT,GAAI,KACJnvpB,KAAM,uBACNwvpB,MAAO,SAELU,EAAoB,CACtB15nB,KAAM,uBACN+6iB,OAAQ,yBACR4+E,OAAQ,yBACRC,MAAO,sCACP1pP,KAAM,mCACN2pP,QAAS,kCAEPC,EAAmB,CACrBC,MAAO,eACPC,QAAS,eACTC,QAAS,kBACTC,aAAc,qBACdt4B,GAAI,uBACJu4B,OAAQ,gBACRp/E,OAAQ,WAENq/E,EAAS,CAACthe,EAAOuhe,GAAKC,KACxB,QAASvqC,KAAMsqC,GACX,GAAIA,GAAI7trB,eAAeujpB,IAAOsqC,GAAItqC,GAAIp0Q,KAAK7iL,GACvC,OAAOi3b,EAGf,YAAgBzqrB,IAATg1tB,EAAqBA,EAAOxhe,GA2EjC3zO,EAAY85Y,KAAuB3pZ,OAAOovB,UAAYpvB,OAAOovB,UAAUvf,UAAY,KAK5EmjjB,EAAUnjjB,EAtBc8qd,KACjC,IAAIsqP,GAAc,KACd74sB,EAAQ,GACZ,QAASo3O,KAAS4ge,EACd,GAAIA,EAAkBltrB,eAAessN,KACjCp3O,EAAQuud,EAAGvud,MAAMg4sB,EAAkB5ge,IAC/Bp3O,GAAO,CACP64sB,GAAc,GACdA,GAAYzhe,IAAS,EACrByhe,GAAY74sB,EAAM,GAAG8Z,cAAcrkB,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAM,EAClEojtB,GAAYx1sB,QAAUhhB,SAAS+d,SAAS04sB,cAAgB94sB,EAAM,GAAI,IAClE,MAIZ,OAAO64sB,IAOwBE,CAAqBt1sB,GAAa,KAKxD6mjB,EAAW7mjB,EAvEO8qd,KAC3B,IAAIyqP,GACAh5sB,EAAQ,GACZ,QAASo3O,KAAS4/d,EACd,GAAIA,EAASlsrB,eAAessN,GAAQ,CAEhC,GADAp3O,EAAQuud,EAAGvud,MAAMg3sB,EAAS5/d,KACrBp3O,EACD,SAEJ,GAAc,YAAVo3O,GAAuB,YAAaxjP,OAAOovB,UAC3C,OAAO,KAEX,MAAM1f,EAAK,GACXA,SAAG21sB,OAAS7he,EACZ9zO,EAAGsjjB,QAAU8xJ,EAAOnqP,EAAI6pP,EAAkB,WAC1C90sB,EAAG7f,KAAOi1tB,EAAOthe,EAAO0ge,GACxBx0sB,EAAGA,EAAG7f,OAAQ,EACd6f,EAAG41sB,aAAel5sB,EAAM,GACxBsD,EAAG01sB,aAAeh5sB,EAAM,GAAKA,EAAM,GAAGgK,QAAQ,IAAK,KAAO,KAC1DgvsB,GAAe11sB,EAAG01sB,aAAahvsB,QAAQ,IAAK,IAAI9I,OAAO,EAAG,GAC1DoC,EAAG61sB,YAAc71sB,EAAG41sB,aAAeF,GAC9B,IAAIjstB,MAAM,GAAKistB,GAAax0tB,OAAS,EAAIw0tB,GAAax0tB,OAAS,IAAI0hB,KAAK,KAC7E5C,EAAG81sB,aAAqCx1tB,WAApBgQ,OAAOyltB,eACMz1tB,WAAnBgQ,OAAOwltB,QACrB91sB,EAAGg2sB,QAAU1ltB,OAAOovB,UAAUuihB,YACtB,mBAAoBtrI,KAAKrma,OAAOivB,SAASzP,WAC1C9P,EAAG81sB,QACH91sB,EAGf,OAAO,MAyCyBi2sB,CAAe91sB,GAAa,KAInDotiB,EAAQtzJ,KAAuB,iBAAkB3pZ,OAKjD4ltB,EAAa5yJ,IAAYA,EAAQ6xJ,QAAU7ktB,OAAO6ltB,eAIlDvnV,EAAW00L,IAAYA,EAAQ6xJ,QAAU7ktB,OAAO8ltB,aAIhDr6S,EAAeirJ,IAAazZ,GAAS2oK,GAActnV,GCvJ1D+qG,EAAc,sDAIb,WAAmB3zb,GACtB,MAAMq4D,GAAS,GACfr4D,SAAMt/B,QAAQizd,EAAa,SAAU08O,EAAQt3sB,EAAO+6d,EAAepkb,GAC/D2oD,GAAOz9G,UAAeN,IAAVye,EAAsBA,EAAS+6d,GAAiBpkb,KAEzD2oD,GCRX,MAAMu7X,EAAc,GAMb,WAAgB5zb,GACnB,GAAI4zb,EAAY5zb,GACZ,OAAO4zb,EAAY5zb,GAEvB,MAAMq4D,GAASi4mB,EAAUtwqB,GACzB4zb,SAAY5zb,GAAS,SAAU6U,GAC3B,IAAIntD,EAASmtD,EACb,QAASv1B,EAAM,EAAGA,EAAM+4E,GAAOn9G,QAAUwM,EAAQ43B,IAC7C53B,EAASA,EAAO2wG,GAAO/4E,IAE3B,OAAO53B,GAEJkse,EAAY5zb,GAhBvB4zb,EAAYt5e,UAAeu6D,GAAOA,ECFlC,MAAM07pB,EAAc,CAEpBA,UAA2B17pB,GAAOA,GAC5BvzB,EAAe,CAACkvrB,EAAWt8sB,KAAYA,IAAWA,GAAQu8sB,SAAWnktB,MAAMm3C,OAAO+sqB,IAAc,GAAK,GAIpG,WAAgBxwqB,GACnB,GAAIuwqB,EAAYvwqB,GACZ,OAAOuwqB,EAAYvwqB,GAEvB,MAAMq4D,GAASi4mB,EAAUtwqB,GACzBuwqB,SAAYvwqB,GAAS,CAAC6U,EAAK/7D,EAAOob,KAC9B,IAAI+yS,EAAOpyP,EACX,MAAM83B,EAAQ0rB,GAAOn9G,OAAS,EAC9B,QAASokC,EAAM,EAAGA,EAAMqtD,GAASs6N,EAAM3nR,IACnC2nR,EAAOA,EAAK5uM,GAAO/4E,IAAQ2nR,EAAK5uM,GAAO/4E,KAASgC,EAAa+2E,GAAO/4E,EAAM,GAAIprB,GAElF+yS,EAAK5uM,GAAO1rB,IAAU7zF,GAEnBy3tB,EAAYvwqB,4FClBhB,MAAM8rU,EAAahzX,IAAoB,MAAVA,GAIvBs8gB,EAAWt8gB,IAAoB,MAAVA,GAIrBg8B,EAAWh8B,IAAU2K,MAAMqxB,QAAQh8B,IAInCo2oB,EAAcp2oB,IAA2B,mBAAVA,GAI/BinJ,EAAYjnJ,IAA2B,iBAAVA,GAgB7B43tB,EAAa53tB,KAAWwT,MAAMxT,GAAQghC,WAAWhhC,KAIjD88K,EAAU98K,IAAUA,IAASA,GAAM2W,QCjCnCw6hB,EAA+Bn6f,IACjCg8U,EAAUh8U,GAAOiY,SCJf4oqB,EAAS,CAACpuT,GAAW99V,GAAOF,KAASzrE,IAASypa,GAAUzpa,IAAS2rE,GAAM3rE,IAASyrE,GAAKzrE,IAKrF0iI,EAAU,IAAIpsG,KAAUnnB,IAASmnB,GAAKmnmB,YAAY,CAAC1ikB,GAAKwkR,KAASA,GAAKxkR,IAAM5rD,ICPnF2re,GCWuB,GDXT,IACdD,EAAc,sDAEpBC,EAAYt5e,UAAeu6D,IAAOA,GAI3B,MAAMo6X,GAAS,CAACjvY,GAAOithB,MAC1B,MAAMjlkB,GAAMg4C,GAAQithB,GACpB,GAAIr5F,EAAY5re,IACZ,OAAO4re,EAAY5re,IAEvB,MAAMqwG,GAAS,GACfr4D,UAAMt/B,QAAQizd,EAAa,CAACtze,GAAG0Y,GAAO+6d,GAAe9zb,MACjDq4D,GAAOz9G,KAAKkxX,EAAU/yW,IAASA,GAAS+6d,IAAiB9zb,MAG7D4zb,EAAY5re,IAAO6sD,KACf,IAAIntD,GAASmtD,GACb,QAASv1B,GAAM,EAAGA,GAAM+4E,GAAOn9G,OAAQokC,KAEnC,GADA53B,GAASA,GAAO2wG,GAAO/4E,MAClBwsV,EAAUpkX,KAAWulkB,GACtB,OAAOvlkB,GAGf,OAAOA,IAEJkse,EAAY5re,KErBjB4otB,GAAW5otB,IAAOlP,IAAS,CAACkP,GAAKlP,IACjC87E,GAAQ,IAAM,KAEdxuD,GAAMw9f,IAAY9qhB,IAASgzX,EAAU83J,GAAS9qhB,KAC9C+3tB,GAAajtM,IAAY9qhB,IAFPA,KAASgzX,EAAUhzX,KAAUg8B,EAAQh8B,KAAUA,GAAMoC,OAAS,EAE9C41tB,CAAgBltM,GAAS9qhB,KAC3Di4tB,GAAa,CAACxuT,GAAWl0W,KAAOsiqB,EAAOpuT,GAAWl0W,GAAIumB,IAEtDo8oB,GAAoB,CAACptM,GAAUqtM,KAAc5xtB,IAAUukhB,GAASvkhB,IAAOvE,IAAIm2tB,IAAWr0sB,KAAK,KAG3Fs0sB,GADwB11lB,KACO,CAAC,CAAC,IAAM,IAAK,CAAC,IAAK,MADN1gI,IAAI,EAAEypE,GAAME,MAAYzoE,IAAMA,GAAE0kB,QAAQ,IAAIo7U,OAAOv3R,GAAM,KAAME,MAE3G0spB,GAHyBz5sB,IAAQA,GAAI3T,MAAM,EAAG2T,GAAIzC,QAGrB,MAC7Bm8sB,GAAqB,EAAGpxqB,SAAOwG,OAAM,SAAa,GAAExG,MAASwG,KAE7DE,GAAOuoY,GAAO,QACd4nE,GAAa5nE,GAAO,cACpBxtb,GAAOwtb,GAAO,QACdpxZ,GAAQoxZ,GAAO,SACfhgb,GAAOggb,GAAO,QAAQ,GACtBoiS,GAAaL,GAAkB/htB,GAAMmitB,IACrCE,GAAcN,GAAkBnzrB,GAAOuzrB,IACvCG,GAAmBP,GAAkBn6N,GARhB,EAAG72c,SAAOu8U,gBAAiB,GAAEv8U,MAASu8U,MAU3Di1V,GAAkBh2lB,EADA1iI,IAAU,YAAWA,MACIq4tB,GAAgBD,GAAsB1tsB,KAAK+E,UCftEla,IAAS,IAAIH,KAAKA,KAAKojL,IAAIjjL,GAAKyB,cAAezB,GAAK0B,WAAY1B,GAAKwB,UAAWxB,GAAKomL,WAAYpmL,GAAKqmL,aAAcrmL,GAAK8zK,aAAc9zK,GAAKg2Y,qBDyB5JotU,GAAgBj2lB,EAAQo1lB,GAAS,QA3BtB,EAAGnvtB,QAAMilD,WAAWrkD,KAAKC,OAAOb,IAAQ,GAAKilD,IAAQ,GA4BhEgrqB,GAAgBl2lB,EAAQo1lB,GAAS,YAAalqqB,IAC9CirqB,GAAiBn2lB,EAAQo1lB,GAAS,SAAUU,IAC5CM,GAAgBp2lB,EAAQo1lB,GAAS,QAASS,IAC1CQ,GAAsBr2lB,EAAQo1lB,GAAS,aAAcW,IAOrDO,IANgBf,GAAW3qsB,GAAI3kB,IAAOgwtB,IAClBV,GAAW3qsB,GAAIsgC,IAAOgrqB,IACzBX,GAAWF,GAAWhzrB,IAAQ8zrB,IACzBZ,GAAW3qsB,GAAIywe,IAAag7N,IAClCr2lB,EAAQu1lB,GAAWF,GAAW5htB,IAAO2itB,IAZpCvytB,IAAUrE,OAAOw0D,OAAO,GAAInwD,GAAO,CACtD4P,MAAOA,GAAK5P,KAAU,IAAI6C,OAAO,EAAGskD,ULPD1tD,MAJHA,KAAUs8gB,EAAQt8gB,KAAkC,IAAxBA,GAAM+gC,OAAO3+B,OAI3Bm6gB,CAAoBv8gB,IKOpBi5tB,CAAuBvrqB,QAajD,EAAGxG,SAAOmI,YAAUrvD,YAAa,GAAEknD,MAASmI,MAAYrvD,MEhD1E0uB,IFiDgBmpsB,ECOK7xtB,IAAK82K,EAAO92K,GAAEhG,ODPC0iI,EAAQs2lB,GArB/B,EAAG9xqB,SAAOlnD,SAAO83c,cAAYzoZ,gBAAgB,CAC5DrvD,MAAO04tB,GAAgB14tB,IACvBknD,SACA4wZ,cACAzoZ,eAiB4E2pqB,IEjDpE,CAAC9xqB,GAAOniD,GAAQ/E,MACxB+E,GAAOmiD,IAASlnD,GACT+E,KAGLgnD,GAAQ6K,IAAemF,KACzB,MAAM/7D,GAAQ+7D,GAAInF,IAClB,OAAIo8T,EAAUhzX,IACHA,GAEJ+7D,GANSn9C,KAAOA,GAAIgJ,QAAQ,YAAa,CAACrgB,GAAGyvE,KAAOA,GAAGt/C,eAMnDwhsB,CAAYtiqB,MAKrBuiqB,IAHSptqB,GAAK,UACQA,GAAK,uBACnBA,GAAK,SACHu1W,IAAU5+Z,IAAUR,OAAOrC,KAAK6C,IAAQ2T,OAAOirZ,GAAOp/Y,KAAK,KAAMxf,IAAS,KACpF02tB,GAAqBD,GAAQ,CAACnirB,GAAQ+jB,GAAK7T,KAAUx4B,GAAIw4B,GAAMxvB,cAAeqjC,GAAK/jB,GAAOkQ,MAC1FmyqB,GAAsBF,GAAQ,CAACnirB,GAAQ+jB,GAAK7T,KAAUx4B,GAAIw4B,GAAO6T,GAAKq+pB,GAAmBpirB,GAAOkQ,OAChGwwlB,GAAiB,CAAC13oB,GAAOwoC,KAAiBwqV,EAAUhzX,IAASA,GAAQwoC,GAQrE8wrB,GAAiB52lB,EAAQ,EAAGx7E,SAAOqyqB,gBAAcv5tB,SAAO+9f,cAAYlvc,aAAa,CACnFkvc,WAAYs7N,GAAoBt7N,IAChC72c,SACA2H,MAAO0qqB,GAAe1qqB,GAAM7sD,IAAIs3tB,IAAkBzqqB,GAClD7uD,WAXmB+kC,KAAU,CAC7Bg5d,WAAYh5d,GAAMo5nB,YAAcp5nB,GAAMg5d,WACtC72c,MAAOniB,GAAMy0rB,QAAUz0rB,GAAM00rB,QAAU10rB,GAAMmiB,MAC7CqyqB,aAAcx0rB,GAAM20rB,cAAgB30rB,GAAMw0rB,eAAgB,EAC1D1qqB,MAAO9pB,GAAM40rB,OAAS50rB,GAAM8pB,MAC5B7uD,MAAO03oB,GAAe3ymB,GAAMgH,IAAK2rmB,GAAe3ymB,GAAM71B,IAAK61B,GAAM/kC,WCzB/DmzE,GAAU,CAAC3kD,GAAGD,KACZ+tf,EAAQ9tf,IACDA,KAAMD,GAAI,GAAI,EAErB+tf,EAAQ/tf,IACD,EAEPC,GAAEq7L,cACKr7L,GAAEq7L,cAAct7L,IAEpBC,GAAID,GAAI,EAAKC,GAAID,IAAI,EAAK,EAE/BqrsB,GAAc,CAACprsB,GAAGD,KAAM4kD,GAAQ5kD,GAAGC,IACnCqrsB,GAAoB7tqB,KACtB,MAAMD,GAAOoqY,GAAOnqY,GAAW9E,OAAO,GACtC,MAAO,CAAC14B,GAAGD,MAA0B,QAAnBy9B,GAAW0B,IAAgBylB,GAAUympB,IAAa7tqB,GAAKv9B,IAAIu9B,GAAKx9B,MAEhFutY,GAAU,CAACz3Z,GAAIE,KAAO,ECoGfyrC,GAAS,CAACtlC,GAAK1K,MACxB0K,GAAI5I,KAAK9B,IACF0K,IAME1I,GAAO0E,IAAgB2P,IAAY,CAAC0kD,GAAKwkR,GAAMt/T,KAAU5J,GAAO0kD,GAAKr0D,GAAU64U,GAAMt/T,KAKrF7W,GAAUqga,IAAgBpzZ,IAAY,CAAC0kD,GAAKwkR,KAASkqF,GAAUlqF,IAAQlpU,GAAO0kD,GAAKwkR,IAAQxkR,GAI3F++pB,GAAuB9irB,IACzBg8U,EAAUh8U,GAAO+irB,SA8Bf92X,GAAO,CAACv8V,GAAW44pB,GAAcnwpB,MAC1C,IAAIP,GAAS0wpB,GACb,QAAS94nB,GAAM,EAAGpkC,GAAS+M,GAAK/M,OAAQokC,GAAMpkC,GAAQokC,KAElD,GADA53B,GAASlI,GAAUkI,GAAQO,GAAKq3B,IAAMA,IAClCszrB,GAAoBlrtB,IAAS,CAC7BA,GAASA,GAAOmrtB,QAChB,MAGR,OAAOnrtB,IC/KLyte,GAAWr6e,GAAIgE,IAAKA,IA+Bbg0tB,GAAc,CAAC7qtB,GAAMygD,GAAc,GAAIqqqB,GAAe59O,MAC/D,MAAMijL,GAAe,GACrB,OAAK1vmB,GAAYxtD,ODTW,EAACwM,GAAS,MACtC1M,OAAOrC,KAAK+O,IAAQ3L,QAAQikD,KACxB,MAAM62c,GAAanvf,GAAOs4C,IAC1BhlD,OAAOrC,KAAKk+f,IAAY96f,QAAQwgY,KAC5Bs6H,GAAWt6H,IAAas6H,GAAWt6H,IAAW70X,aAG/CA,ICMAsrtB,CADQj3X,GAAKg3X,GD2DarqqB,MACjC,MAAMuqqB,GAAYvqqB,GAAY5tD,IAAIgqD,KAC9B,MAAMouqB,GAAgBjkS,GAAOnqY,GAAW9E,OAAO,GACzCmzqB,IAAiBruqB,GAAWy3U,WAAa,IAAI/rW,cAC7C4isB,GAAoBnkS,GAAOkkS,IAAe,GAChD,MAAO,CAAC9ztB,GAAOvG,MACX,MAAMu6tB,GAAkBh0tB,GAAMylD,GAAW9E,QAAU,GAC7CszqB,GAAoBF,GAAkBC,KArE/Bl5tB,MAAU,CAC/B23P,QAAS,KACL,IAAIh5P,GAAQ,EACRi0G,GAAQ,EACZ,MAAO,CACHwmnB,KAAOl7Y,KACCq4Y,EAAUr4Y,KACVv/U,IAASu/U,GACTtrO,MAGAj0G,GAAQu/U,IAGhB3wU,OAAQ,IAAMgptB,EAAU53tB,IAASA,GAAQi0G,GAAQj0G,KAGzDi0G,MAAO,KACH,IAAI1tG,GAAQ,EACZ,MAAO,CACHk0tB,KAAM,IAAMl0tB,KACZqI,OAAQ,IAAMrI,KAGtBsE,IAAK,KACD,IAAItE,GAAQokD,OAAO+vqB,kBACnB,MAAO,CACHD,KAAOz6tB,KACHuG,GAAQqxtB,EAAUrxtB,KAAUu2K,EAAOv2K,IAASA,GAAQvG,GAChDuG,GAAQvG,KAAU43tB,EAAU53tB,KAAU88K,EAAO98K,OAC7CuG,GAAQvG,KAGhB4O,OAAQ,IAAMrI,KAGtBuoC,IAAK,KACD,IAAIvoC,GAAQokD,OAAOizO,kBACnB,MAAO,CACH68b,KAAOz6tB,KACHuG,GAAQqxtB,EAAUrxtB,KAAUu2K,EAAOv2K,IAASA,GAAQvG,GAChDuG,GAAQvG,KAAU43tB,EAAU53tB,KAAU88K,EAAO98K,OAC7CuG,GAAQvG,KAGhB4O,OAAQ,IAAMrI,KAGtBugM,IAAK,KACD,IAAIvgM,GAAQ,EACZ,MAAO,CACHk0tB,KAAOz6tB,KACHA,GAAQgzX,EAAUhzX,IAASA,GAAQ,EACnCuG,IAASvG,IAEb4O,OAAQ,IAAMrI,MAGxBlF,OAYiBs5tB,CAAgBN,IACvBG,UAAkBC,KAAKL,GAAcp6tB,KACrCu6tB,GAAgBvuqB,GAAWy3U,WAAa+2V,GACxCj0tB,GAAMylD,GAAW9E,OAASqzqB,GACnBh0tB,MAGf,MAAO,CAACA,GAAOvG,KAAUm6tB,GAAU9jtB,OAAO,CAAC43C,GAAKwsqB,KAASA,GAAKxsqB,GAAKjuD,IAAQuG,KC1E1Cq0tB,CAAqBhrqB,KAAe0vmB,GAAcnwpB,KAFxEmwpB,ICATu7D,GAAqB7uqB,KACnBA,GAAWiD,UACXjD,GAAWiD,QAAUjD,GAAWiD,QAAQjtD,IAAIoH,KACxC,MAAMwF,GAAS1M,OAAOw0D,OAAO,GAAIttD,IACjC,OAAK+niB,EAA4B/niB,KAAW69I,EAAS79I,GAAOimD,YACxDzgD,GAAOygD,SAtCFngD,MAAS,CAC1B,KAAM,MACN,IAAK,KACL,KAAM,MACN,KAAM,KACN,IAAK,KACL,KAAM,MACNq1O,MAAO,KACPjqL,OAAQ,KACRwgqB,QAAS,KACTj9V,GAAI,MACJk9V,QAAS,KACTC,YAAa,KACbC,iBAAkB,MAClBC,QAAS,UACTC,UAAW,KACXC,cAAe,KACfC,uBAAwB,MACxBC,WAAY,KACZC,oBAAqB,MACrBC,WAAY,aACZC,aAAc,MACdC,OAAQ,SACRx1tB,GAAI,MACJy1tB,KAAM,KACNC,SAAU,KACVC,cAAe,MACfz/N,GAAI,MACJ0/N,SAAU,MACVC,UAAW,MACXC,WAAY,MACZC,eAAgB,kBAClB/stB,GAAIwoB,gBAAkBxoB,IAMUgttB,CAAY9ytB,GAAOimD,WAErC8hf,EAA4B/niB,KAC5ByxtB,GAAkBjstB,IAEfA,OAqBNuttB,GAAoBnwqB,KACzBgnU,EAAUhnU,MACVA,GAnBqBA,KACpBmlf,EAA4Bnlf,IAM1B9pD,OAAOw0D,OAAO,GAAI1K,IALd,CACHiD,QAASjzB,EAAQgwB,IAAcA,GAAa,CAACA,IAC7CsD,MAAO,OAeE8sqB,CAAoBpwqB,IACjC6uqB,GAAkB7uqB,KAEfA,ICpELsD,GAAQ,CACVotd,GAAM,CACF1se,OAAQ,CAAC+qB,GAAKxF,KAAO/mC,IAAKusC,GAAIvsC,KAAM+mC,GAAG/mC,IACvC6td,SAAU,KAAM,GAEpBugC,IAAO,CACH5se,OAAQ,CAAC+qB,GAAKxF,KAAO/mC,IAAKusC,GAAIvsC,KAAM+mC,GAAG/mC,IACvC6td,SAAU,KAAM,IAGlBggP,GAAe,CACjB7xtB,SAAU,CAACgkB,GAAGD,MAAOC,IAAK,IAAIrS,QAAQoS,KAAM,EAC5Cgue,eAAgB,CAAC/te,GAAGD,MAA+B,KAAxBC,IAAK,IAAIrS,QAAQoS,IAC5C+te,eAAgB,CAAC9te,GAAGD,MAAOC,IAAK,IAAIrS,QAAQoS,IAAIC,IAAK,IAAIpsB,QAAUmsB,IAAK,IAAInsB,QAAU,EACtFi6f,iBAAkB,CAAC7te,GAAGD,MAAsC,KAA/BC,IAAK,IAAI3B,YAAY0B,GAAG,GACrD86lB,SAAU,CAAC76lB,GAAGD,MAAOC,IAAK,IAAIrS,QAAQoS,IAAIC,IAAK,IAAIpsB,QAAUmsB,IAAK,IAAInsB,SAAW,EACjFq9d,GAAI,CAACjxc,GAAGD,KAAMC,KAAMD,GACpB8uI,GAAI,CAAC7uI,GAAGD,KAAMC,GAAID,GAClB2te,IAAK,CAAC1te,GAAGD,KAAMC,IAAKD,GACpB2ssB,QAAU1ssB,IAAY,KAANA,GAChBgtsB,WAAahtsB,IAAY,KAANA,GACnB8tsB,UAAY9tsB,IAAMwkW,EAAUxkW,IAC5BktsB,OAASltsB,IAAM8tf,EAAQ9tf,IACvB+kC,GAAI,CAAC/kC,GAAGD,KAAMC,GAAID,GAClB4te,IAAK,CAAC3te,GAAGD,KAAMC,IAAKD,GACpBgusB,IAAK,CAAC/tsB,GAAGD,KAAMC,IAAKD,GACpB66lB,WAAY,CAAC56lB,GAAGD,KAAsC,KAA/BC,IAAK,IAAI3B,YAAY0B,GAAG,IAE7CiusB,GAAa,sBAyDNC,GAA4BrztB,KACrC,MAAMsztB,GAAWptqB,GAAMlmD,GAAOkmD,OAC9B,OAAOlmD,GAAO6lD,QACT7lD,OAAO4pX,GACPhxX,IAAIgE,IAAKmriB,EAA4BnriB,IAAKy2tB,GAAyBz2tB,IAfpD,GAAGkhD,SAAO4wZ,cAAY93c,SAAOqvD,gBACjDnI,GAAS8rU,EAAU9rU,IAAkBA,GAAT14B,IAAKA,GACjCspb,IAAa9kF,EAAU8kF,KAAcA,GACrC,MAAM6kR,GAjCU,EAAC5wqB,GAAM/rD,GAAO83c,MAC9B,IAAK9kF,EAAUhzX,IACX,OAAO+rD,GAEX,IAAIgP,GAAMhP,GACV,GAAIk7F,EAASjnJ,IAAQ,CACjB,MAAMuV,GAAOintB,GAAWv5X,KAAKjjW,IACzBuV,GACAvV,GAAQ,IAAIoV,MAAMG,GAAK,IAGvBwlD,GAAMvsC,KACF,MAAMxoB,GAAI+lD,GAAKv9B,IACf,MAAiB,iBAANxoB,IAAkB8xc,GAClB9xc,GAAE0xB,cAGFkgsB,EAAU5xtB,IAAKA,GAAI,GAAKA,IAK/C,OAAI82K,EAAO98K,IACAwuB,KACH,MAAMxoB,GAAI+0D,GAAIvsC,IACd,OAAOsuJ,EAAO92K,IAAKA,GAAE2Q,UAAY3Q,IAGlC+0D,IAKU6hqB,CAAYxmF,EAAWlvlB,IAASA,GAAQivY,GAAOjvY,IAAO,GAAOlnD,GAAO83c,IACrF93c,GAjDiB,EAACA,GAAO83c,MACzB,GAAa,MAAT93c,IAAiBinJ,EAASjnJ,IAAQ,CAClC,MAAMuV,GAAOintB,GAAWv5X,KAAKjjW,IAC7B,GAAIuV,GACA,OAAO,IAAIH,MAAMG,GAAK,IAAIoB,UAEzB,GAAImhc,GACL,OAAO93c,GAAM03B,sBAGH,MAAT13B,IAAiB88K,EAAO98K,IAC7B,OAAOA,GAAM2W,UAEjB,OAAO3W,IAoCC68tB,CAAa78tB,GAAO83c,IAC5B,MAAMl8X,GAAKw6jB,EAAW/mlB,IAAYA,GAAWgtqB,GAAahtqB,IAC1D,OAAO7gC,IAAKotD,GAAG+gpB,GAASnusB,IAAIxuB,GAAO83c,KAS0CglR,CAAgB92tB,KACxFqQ,OAAOqmtB,GAAS1srB,OAAQ0srB,GAASrgP,WCvE7B0gP,GAAiB/wqB,IACrBA,IAA4C,IAA9BA,GAAWiD,QAAQ7sD,OAG/Bq6tB,GAAyBzwqB,IAFrB,KAAM,EAmCRwF,GAAW,CAACriD,GAAM68C,MACtBgnU,EAAUhnU,KAAgBmlf,EAA4Bnlf,KAA6C,IAA9BA,GAAWiD,QAAQ7sD,OAClF+M,GAEJA,GAAK/F,OAAO2ztB,GAAcZ,GAAiBnwqB,MCxDzCgxqB,GAAmBptqB,KAC5BA,GAAc5zB,EAAQ4zB,IAAeA,GAAc,CAACA,KACjC5tD,IAAIgE,IAAK9D,OAAOw0D,OAAO,CAAEhJ,IAAK,OAAS1nD,KAExDq2e,GAAWr6e,GAAIgE,IAAKA,IAwBbihD,GAAU,CAAC93C,GAAMygD,GAAc,GAAIqqqB,GAAe59O,GAAU0/I,GAAe5snB,MAEpF,KADAygD,GAAcotqB,GAAgBptqB,KACbxtD,OACb,OAAO+M,GAEX,MAAM68C,GAAa4D,GAAY,GAEzBlxC,GAAOukV,GAAKg3X,GLjCU/yqB,MAC5B,MAAM6E,GAAOoqY,GAAOjvY,IAAO,GAC3B,IAAI3gB,GAAW,EACf,MAAO,CAAC0nB,GAAKjuD,MACTiuD,GAAI/G,IAAS+G,GAAI/G,KAAU,GAC3B,MAAM+1qB,GAAalxqB,GAAK/rD,IAClBkP,GAbSlP,MACnBA,GAAQgzX,EAAUhzX,KAAUA,GAAM2W,QAAU3W,GAAM2W,UAAY3W,IAC/C,GAWCk9tB,CAAcD,IACpBv6tB,GAASurD,GAAI/G,IAAOh4C,KAAQ,CAAEiutB,WAAY52rB,KAAYw3d,WAAY,GAAIlvc,MAAO,GAAI7uD,MAAOi9tB,IAC9Fv6tB,UAAOmsD,MAAM/sD,KAAK9B,IAClBiuD,GAAI/G,IAAOh4C,IAAOxM,GACXurD,KKuBoBmvqB,CAAgBpxqB,GAAW9E,QADrC,GAC4D/3C,IAC3EP,GAAS,GACf1M,cAAOrC,KAAK6e,IAAMzb,QAAQikD,KACtBhlD,OAAOrC,KAAK6e,GAAKwoC,KAAQjkD,QAAQjD,KAC7B,MAAM+kC,GAAQrmB,GAAKwoC,IAAOlnD,IAC1B,IAAIq9tB,GAAkB,GAClBC,GAAevhG,GACf/oQ,EAAUhnU,GAAW+xc,cACrBu/N,GAAe9rqB,GAASuqkB,GAAc,CAClC70kB,MAAO8E,GAAW9E,MAClB4wZ,YAAY,EACZzoZ,SAAU,KACVrvD,MAAO+kC,GAAM/kC,QAEjBq9tB,GAAkBrD,GAAYsD,GAActxqB,GAAW+xc,aAE3Dnvf,GAAOm2B,GAAMo4rB,YAAc,CACvBp/N,WAAYs/N,GACZn2qB,MAAOA,GACP2H,MAAOe,GAAYxtD,OAAS,EACxB6kD,GAAQliB,GAAM8pB,MAAOe,GAAY3kD,MAAM,GAAIoxe,GAAUihP,IACnDv4rB,GAAM8pB,MACZ7uD,MAAO+kC,GAAM/kC,WAIlB4O,ICpCEuH,GAAO,CAAChH,GAAMka,GAAOsd,GAAKwsC,MACnC,GAAIxsC,GAAMtd,GAAQ,EACd,OAEJ,MAAM8xD,GAAO9xD,GAAQsd,KAAS,EAC9BxwB,GAAKhH,GAAMka,GAAO8xD,GAAKhI,IACvBh9D,GAAKhH,GAAMgsE,GAAKx0C,GAAKwsC,IAtCX,EAAChkE,GAAMs8D,GAAMgrW,GAAQ9qW,GAAOwH,MACtC,IAAIoqpB,GAAa9mT,GAAShrW,GACtB+xpB,GAAc7xpB,GAAQ8qW,GAC1B,MAAMshC,GAAO,GACb,QAASvxa,GAAM,EAAGA,GAAM+2rB,GAAY/2rB,KAChCuxa,GAAKj2c,KAAKqN,GAAKs8D,GAAOjlC,KAE1B,IAAIi3rB,GAAU,EACVC,GAAUjnT,GACV7yS,GAAOn4D,GACX,GACQ0H,GAAQhkE,GAAKuutB,IAAU3lR,GAAK0lR,KAAY,GACxCtutB,GAAKy0H,MAAUz0H,GAAKuutB,MACpBF,OAGArutB,GAAKy0H,MAAUm0U,GAAK0lR,MACpBF,YAECC,GAAc,GAAKD,GAAa,GACzC,KAAOA,IACHputB,GAAKy0H,MAAUm0U,GAAK0lR,MACpBF,KAEJ,KAAOC,IACHrutB,GAAKy0H,MAAUz0H,GAAKuutB,MACpBF,MAaJ5wrB,CAAMz9B,GAAMka,GAAO8xD,GAAKx0C,GAAKwsC,KCVpBre,GAAU,CAAC3lD,GAAMygD,MAC1B,GAAIA,GAAYxP,KAAKp6C,IAAKgtX,EAAUhtX,GAAE0nD,MAAO,CACzCv+C,GAAOA,GAAKlE,MAAM,GAClB,MAAMm2U,GRKyBxxR,KAAiBA,GACnDxmD,OAAOpD,IAAKgtX,EAAUhtX,GAAE0nD,MACxB1rD,IAAKgqD,IAAe6tqB,GAAiB7tqB,KACrC31C,OAAO,CAAC0kD,GAAKwkR,KAAS,CAAC/wT,GAAGD,KAAMwsC,GAAIvsC,GAAGD,KAAMgxT,GAAK/wT,GAAGD,IAAIutY,IQRrC6hU,CAAuB/tqB,IACxCz5C,GAAKhH,GAAM,EAAGA,GAAK/M,OAAQg/U,IAE/B,OAAOjyU,IAqDEm/C,GAAQ,CAACn/C,GAAMs6Z,KACpBA,GACOt6Z,GAAK/F,OAAOqga,IAEhBt6Z,GAkCEiP,GAAU,CAACjP,GAAM5I,MAC1B,MAAQoC,KAAMi1tB,GAAWhwqB,KAAMiwqB,GAAWz0tB,OAAQ00tB,GAAkB3ntB,QAAM4uB,UAAUx+B,GAC9Ew3tB,GAAkB,IAAIf,GAAgBj4rB,IAAS,OAAQ5uB,IAAQ,IACjE4ntB,GAAgB37tB,SAChB+M,GAAO2lD,GAAQ3lD,GAAM4utB,KAEzB,MAAMl7K,GAAa7vL,EAAU8qW,KAAqB10tB,UAC5Cm2f,GAAYvsI,EAAUjuV,KAAUA,GAAM3iC,OAC5C,IAAKygjB,KAAetjD,GAChB,MAAO,CACHpwf,KAAM0utB,GAAY1utB,GAAKlE,MAAM2ytB,GAAWA,GAAYC,IAAa1utB,GACjErE,MAAOqE,GAAK/M,QAGpB,IAAI0I,GACJ,MAAMmvtB,GAAe,GACrB,IAAIxwT,GAaJ,GAZAllX,IACIklX,GAAYszT,GAAcZ,GAAiB2B,KAC3ChztB,GArEa,EAACqE,GAAMs6Z,MACxB,IAAIt1T,GAAU,EACd,QAAS3tE,GAAM,EAAGpkC,GAAS+M,GAAK/M,OAAQokC,GAAMpkC,GAAQokC,KAC9CijY,GAAUt6Z,GAAKq3B,MACf2tE,KAGR,OAAOA,IA8DKF,CAAM9kG,GAAMs6Z,IACpBwwT,GAAan4tB,KAAKsH,GAAOqga,MAGzB3+Z,GAAQqE,GAAK/M,OAEb4wX,EAAU4qW,KAAc5qW,EAAU6qW,MAClC5D,GAAan4tB,KPUAmyG,KAAY59F,IAAY,CAAC0kD,GAAKwkR,KAAStrO,MAAW,EAAI59F,GAAO0kD,GAAKwkR,IAAQxkR,GOVrEpyD,CAAKi1tB,KACvB3D,GAAan4tB,KPDAmyG,KAAY59F,IAAY,CAAC0kD,GAAKwkR,KAAStrO,MAAU,EAAI59F,GAAO0kD,GAAKwkR,IAbrEv5U,KACT8ztB,GAAoB9ztB,IACbA,GAEJ,CACH+ztB,QAAS/ztB,GACTg4tB,SAAS,GAO6EA,CAAQjjqB,IOC5EnN,CAAKiwqB,MAEvB5D,GAAa73tB,OAAQ,CACrB,MAAMsE,GAAYg8H,KAAWu3lB,IAI7B,MAAO,CAAE9qtB,KAHMowf,GACXt4c,GAAQ93C,GAAM41B,GAAOr+B,GAAW4nD,GAAMn/C,GAAMs6Z,KAC5CxmE,GAAKv8V,GAAUspC,IAAS,GAAI7gC,IACTrE,MAAOA,IAElC,MAAO,CACHqE,KAAMowf,GAAYt4c,GAAQ93C,GAAM41B,IAAS51B,GACzCrE,MAAOA,qDCxJR,MAAMixR,EAAaxmR,GAASA,EAAO,IAAIH,KAAKG,EAAKoB,WAAa,+ECFrE,QAPA,gBAAsBu0qB,IAClB+yC,aAAan2tB,GACT,MAAMi+K,EAAO1pL,KAAKgthB,WAAWk5J,UAC7B27C,OAAWp2tB,EAAKi+K,oECIxB,QARA,gBAAyBmlgB,IACrB+yC,aAAan2tB,GACT,MAAQ4jE,SAAQojB,UAAWzyF,KAAKgthB,WAAW9jb,WAE3Cz9F,EAAI2zoB,IAAI/vkB,EAAO1lE,EAAG0lE,EAAOvb,EAAG2+B,EAAQ,EAAa,EAAVvlF,KAAK45E,2FCFrC,WAAqBp+C,EAAO3pB,GACvC,MAAMsjc,EAAW,CACb3rc,MAAO,QAASnM,OAAQ,QACxBu3tB,KAAM,aAGV,IAAIC,EAAar5rB,EACjB,MAAM4nH,EAAO5nH,EAAMy+mB,cAGnB,GAAI72f,EAAM,CACN,MAAMjsH,EAASisH,EAAK+mjB,YACpB0qB,EAAa,IAAIv5kB,IACjBu5kB,EAAW13tB,WAAUA,SAAYmuC,WAAWnU,EAAO16B,GAAI06B,EAAOyvB,IAC9DiuqB,EAAWvjqB,SAAS/4D,KAAKijC,GAEzB,MAAMsmB,EAAOshG,EAAKu2iB,UAClBxkP,EAAS3rc,MAAQs4C,EAAKt4C,MAAQ,KAC9B2rc,EAAS93c,OAASykD,EAAKzkD,OAAS,KAGpC,MAAMy3tB,EAAiBn8tB,OAAOw0D,OAAOgoZ,EAAUtjc,GAEzC0+I,EAAY97I,SAAS+O,cAAc,OACnCvmB,EAAQszJ,EAAUtzJ,MAExBA,EAAMkkC,QAAU,OAChBlkC,EAAMuM,MAAQsrtB,EAAetrtB,MAC7BvM,EAAMI,OAASy3tB,EAAez3tB,OAC9BoX,SAASgF,KAAKk0B,YAAY4iH,GAE1B,MAAMs6O,EAAU,IAAI6/T,IAAQn6iB,EAAWukkB,GACvCjqV,EAAQkzT,kBACRlzT,EAAQ17P,KAAK0llB,GAEb,MAAMlwsB,EAAUkmX,EAAQp2P,QAClB8jL,EAAU,KACZsyE,EAAQtyE,UACR9jT,SAASgF,KAAK+2B,YAAY+/G,IAE9B5rI,SAAQ+I,KAAK6qS,EAASA,GAEf5zS,4EC1CX,iBAAwBowsB,OAAYpylB,IAAM,eACtCqylB,SAASz2tB,GACL,IAAKzL,KAAKi0U,UACN,OAGJxoU,EAAIy6f,OAEJlmgB,KAAKmiuB,aAAa12tB,GAClBzL,KAAKoiuB,QAAQ32tB,GACbzL,KAAKqiuB,WAAW52tB,GAEhB,MAAMwzkB,EAAaj/kB,KAAKi/kB,WACxB,QAAStwkB,EAAI,EAAGA,EAAIswkB,EAAWl5kB,OAAQ4I,IAAK,CACxC,IAAI8vD,EAAQwghB,EAAWtwkB,GACnB8vD,EAAMw1Q,WACNx1Q,EAAMyjqB,SAASz2tB,GAIvBA,EAAI+xJ,WAIZ,QAAegzhB,4EC4Cf,QArEA,gBAAwB3B,IACpB/urB,YAAYkthB,EAAY80M,GACpBtitB,MAAMwtgB,GAENhthB,KAAKyyO,OAASzyO,KAAKyyO,OAAO5sN,KAAK7lB,MAC/BA,KAAK2yO,QAAU3yO,KAAK2yO,QAAQ9sN,KAAK7lB,MAEjCA,KAAKkrD,WAAU+7e,OAEf,MAAMjtf,EAAMh6C,KAAKg6C,IAAM,IAAIC,MAEvB6nrB,IAAU,UAAUtmT,KAAKwxG,EAAW7ye,SACpCH,EAAIwyG,YAAcs1kB,GAGtB9nrB,EAAIG,IAAM6ye,EAAW7ye,MAEjBH,EAAIvlB,SACJz0B,KAAKyyO,UAELz4L,EAAI9xB,OAASloB,KAAKyyO,OAClBz4L,EAAI5xB,QAAUpoB,KAAK2yO,SAI3Buvf,SAASz2tB,GACwB,aAAzBzL,KAAKkrD,QAAQhhD,UACbuB,EAAIy6f,OAEJlmgB,KAAKmiuB,aAAa12tB,GAClBzL,KAAKoiuB,QAAQ32tB,GAEbzL,KAAK27C,UAAUlwC,GAEfA,EAAI+xJ,WAIZ0vhB,cAAcjkrB,GACM,QAAZA,EAAE4hD,OACF7qD,KAAKkrD,WAAU+7e,OACfjniB,KAAKg6C,IAAIG,IAAMn6C,KAAKgthB,WAAW7ye,OAE/B36B,MAAM0tqB,cAAcjkrB,GAI5BwpO,SACIzyO,KAAKkrD,QAAQtjC,UACb5nB,KAAKitrB,aAGTt6c,UACI3yO,KAAKkrD,QAAQvjC,OAAO,IAAIlR,MACpB,yBAA2BzW,KAAKg6C,IAAIG,IACpC,uDAIRwB,UAAUlwC,GACN,MAAMyyU,EAAOl+U,KAAKgthB,WAAW9uM,OACvBogL,EAAUpgL,EAAKogL,UAErB7yf,EAAIkwC,UACA37C,KAAKg6C,IAAKskd,EAAQ30f,EAAG20f,EAAQxqc,EAAGoqR,EAAKxnU,QAASwnU,EAAK3zU,sFCvD/D,QATA,gBAA4BskrB,IACxB+yC,aAAan2tB,GACT,MAAMi1J,EAAQ1gK,KAAKgthB,WAAWtsX,MAC9B,QAAS/xJ,EAAI,EAAGA,EAAI+xJ,EAAM36J,OAAQ4I,KAC9BkztB,OAAWp2tB,EAAKi1J,EAAM/xJ,sDCLlC,QAFiB,mGCgHjB,QA3GA,gBAAmB2ztB,IACfxiuB,YAAYkthB,GACRxtgB,MAAMwtgB,GACFA,GACAhthB,KAAKuiuB,WAIbA,WACI,MAAM9kV,EAAOz9Y,KAAKgthB,WAAWvvI,OACzBA,IACAz9Y,KAAKy9Y,KAAOA,EACZA,EAAKqoT,YAAY9lsB,OAIzBs/C,QACQt/C,KAAKgthB,YACLhthB,KAAKgthB,WAAW09K,eAAe1qsB,MAGnCA,KAAKwiuB,YAELhjtB,MAAM8/B,QAGVkjrB,YACQxiuB,KAAKy9Y,OACLz9Y,KAAKy9Y,KAAKitT,eAAe1qsB,aAClBA,KAAKy9Y,MAIpB2kV,QAAQ32tB,GACAzL,KAAKy9Y,OACLhyY,EAAI41O,aACJwgf,OAAWp2tB,EAAKzL,KAAKy9Y,MACrBhyY,EAAIgyY,QAIZyvS,cAAcjkrB,GACM,SAAZA,EAAE4hD,QACF7qD,KAAKwiuB,YACLxiuB,KAAKuiuB,YAGT/itB,MAAM0tqB,cAAcjkrB,GAGxBk5tB,aAAa12tB,GACT,GAAIzL,KAAKgthB,WAAY,CACjB,MAAM3ihB,EAAYrK,KAAKgthB,WAAW3ihB,YAC9BA,GACAoB,EAAIpB,UAAUspB,MAAMloB,EAAKpB,EAAU06H,SAASv2C,QAAQ,KAKhEirL,aAAa5wM,EAAUggB,EAAKi5oB,GACxB,QAASnztB,EAAI,EAAGA,EAAIk6D,EAAS9iE,OAAQ4I,IAAK,CACtC,IAAIq+gB,EAAankd,EAASl6D,GACtB6vD,EAAWwud,EAAWxud,SAEtByma,EAAY,IAAIorN,IAASrjK,EAAW9oK,UAAU8oK,EAAY80M,GAE1DtjqB,GAAYA,EAASz4D,OAAS,GAC9Bk/d,EAAU9mU,KAAK3/F,EAAUqqB,EAAKi5oB,IAG9Bl3H,OAAQ/hhB,GACR7oF,KAAKyiuB,SAASx9P,EAAWp8Y,GAEzB7oF,KAAKkxB,OAAO+zc,IAKxB9mU,KAAKt1F,EAAUggB,EAAKi5oB,GAChB9huB,KAAKy5Q,aAAa5wM,EAAUggB,EAAKi5oB,GAEjC9huB,KAAKitrB,aAGTo1C,WAAW52tB,GACP,GAAIzL,KAAKgthB,WAAY,CACjB,MAAM5ihB,EAAUpK,KAAKgthB,WAAW5ihB,WAC5BwgmB,OAAQxgmB,IACRpK,KAAKs9J,YAAY7xJ,EAAKrB,IAKlCkzJ,YAAY7xJ,EAAK9H,GACb,IAAI++tB,EAAW/+tB,EACX++tB,GAAYj3tB,EAAI6xJ,cAChBolkB,GAAYj3tB,EAAI6xJ,aAEpB7xJ,EAAI6xJ,YAAcolkB,EAGtBzuZ,UACI,MAAM95R,EAAMn6C,KAAKgthB,WACjB,OAAQ7ye,GAAQA,IAA+B,IAAxBA,EAAIp7B,QAAQk1T,sJCwC3C,QAjIA,gBAAuBpkM,IAEnBqylB,SAASz2tB,GACLA,EAAIy6f,OAEJlmgB,KAAKmiuB,aAAa12tB,GAClBzL,KAAKoiuB,QAAQ32tB,GACbzL,KAAKqiuB,WAAW52tB,GAEhBA,EAAI41O,YAEJrhP,KAAK4huB,aAAan2tB,EAAKzL,KAAKgthB,YAE5BhthB,KAAK2iuB,YAAYl3tB,GACjBzL,KAAK4iuB,WAAWn3tB,GAChBzL,KAAK6iuB,YAAYp3tB,GAEjBzL,KAAK8iuB,QAAQr3tB,GACbzL,KAAK+iuB,UAAUt3tB,GAEfA,EAAI+xJ,UAGRslkB,QAAQr3tB,GACJ,MAAMiD,EAAO1O,KAAKgthB,WAAWjugB,QAAQrQ,KACrC,IAAIs0tB,GAAU,EAEd,OAAIt0tB,IACsB,aAAlBA,EAAKw1W,UACLlkX,KAAKijuB,gBAAgBx3tB,EAAKiD,GAC1Bs0tB,GAAU,MACFvgD,KAAc/zqB,EAAK6wI,SAC3B9zI,EAAIy3tB,UAAYx0tB,EAAK6wI,MAErB9zI,EAAIy6f,OACJlmgB,KAAKs9J,YAAY7xJ,EAAKiD,EAAKtE,SAC3BqB,EAAIiD,OACJjD,EAAI+xJ,UAEJwlkB,GAAU,IAIXA,EAGXC,gBAAgBx3tB,EAAKiD,GACjB,MAAM4hJ,EAAOtwJ,KAAKgthB,WAAWwoL,UAC7B,IAAIzoU,EAEJ,GAAIr+X,aAAgBy0tB,IAAgB,CAChC,IAAIn2sB,EAAQte,EAAKse,QACbsd,EAAM57B,EAAK47B,MACfyiW,EAAWthY,EAAI23tB,qBAAqBp2sB,EAAMrjB,EAAGqjB,EAAM8mC,EAAGxpB,EAAI3gC,EAAG2gC,EAAIwpB,WAC1DplD,aAAgB20tB,IAAgB,CACvC,IAAIh0pB,EAAS3gE,EAAK2gE,SAClB09T,EAAWthY,EAAI63tB,qBAAqBj0pB,EAAO1lE,EAAG0lE,EAAOvb,EAAG,EAAGub,EAAO1lE,EAAG0lE,EAAOvb,EAAGplD,EAAK+jF,WAnEhG,WAA0Bs6S,EAAU02Q,GAChC,QAASt5mB,EAAM,EAAGA,EAAMs5mB,EAAM19oB,OAAQokC,IAAO,CACzC,IAAIhgB,EAAOs5nB,EAAMt5mB,GACbo1G,GAAQ04b,QAAW9tjB,EAAKo1H,SAE5BA,EAAMptH,GAAKhI,EAAK/f,UAEhB2iY,EAASw2V,aAAap5sB,EAAKiI,SAAUmtH,EAAM+4b,eA+D3CkrJ,CAAiBz2V,EAAUr+X,EAAK+0oB,OAEhCh4oB,EAAIy6f,OAECx3f,EAAK4trB,aACN7wrB,EAAIpB,UAAUimJ,EAAK55I,QAAS,EAAG,EAAG45I,EAAK/lJ,SAAU+lJ,EAAKjsH,OAAO16B,EAAG2mJ,EAAKjsH,OAAOyvB,GAEhFroD,EAAIy3tB,UAAYn2V,EAChBthY,EAAIiD,OAEJjD,EAAI+xJ,UAGRulkB,UAAUt3tB,GACN,MAAMo2I,EAAS7hJ,KAAKgthB,WAAWjugB,QAAQ8iI,OACvC,GAAIA,KAAW4giB,OAAc5giB,EAAOtC,QAAUsC,EAAOnrI,MAAQ,EACzDjL,SAAI21O,YAAcv/F,EAAOtC,MACzB9zI,EAAI61O,WAAY+5Z,OAAex5f,EAAOnrI,MAAO,GAE7CjL,EAAIy6f,OACJlmgB,KAAKs9J,YAAY7xJ,EAAKo2I,EAAOz3I,SAC7BqB,EAAIo2I,SACJp2I,EAAI+xJ,WAEG,EAIfwkG,WACI,MAAMngH,EAAS7hJ,KAAKgthB,WAAWjugB,QAAQ8iI,OACvC,GAAIA,GAAUA,EAAOmgH,SACjB,OAAOngH,EAAOmgH,SAAS3mO,cAI/BsnsB,YAAYl3tB,GACR,MAAMu2P,EAAWhiQ,KAAKgiQ,WACtB,GAAIA,GAAYA,IAAaisb,KAAO,CAChC,MAAMC,EAAYC,KAAYnsb,GAC1Bv2P,EAAIk3tB,YACJl3tB,EAAIk3tB,YAAYz0C,IAEhBzirB,EAAIg4tB,QAAUv1C,EACdzirB,EAAIi4tB,eAAiBx1C,IAKjC00C,WAAWn3tB,GACP,MAAMu2P,EAAWhiQ,KAAKgiQ,WAChBngH,EAAS7hJ,KAAKgthB,WAAWjugB,QAAQ8iI,OACnCmgH,GAAYA,IAAaisb,KACzBxirB,EAAIslJ,QAAUq9hB,IACPvsiB,GAAUA,EAAOkP,UACxBtlJ,EAAIslJ,QAAUlP,EAAOkP,SAI7B8xkB,YAAYp3tB,GACR,MAAMo2I,EAAS7hJ,KAAKgthB,WAAWjugB,QAAQ8iI,OACnCA,GAAUA,EAAOwyhB,WACjB5oqB,EAAI4oqB,SAAWxyhB,EAAOwyhB,UAI9ButD,aAAan2tB,EAAKi+K,IACdm4iB,OAAWp2tB,EAAKi+K,+EC/HxB,QAdA,gBAAuBmlgB,IACnB+yC,aAAan2tB,GACT,MAAMy9F,EAAWlpG,KAAKgthB,WAAW9jb,YACzB0mlB,EAAIC,GAAO3mlB,EAASymlB,aAE5B,GAAW,IAAPC,GAAmB,IAAPC,EAAU,CACtB,MAAQxrpB,SAAQ2qB,QAASk6C,EACzBz9F,EAAIyyU,KAAK75S,EAAO16B,EAAG06B,EAAOyvB,EAAG9E,EAAKt4C,MAAOs4C,EAAKzkD,aAE9CiV,MAAMoitB,aAAan2tB,EAAKgqsB,aAAcvsmB,oGCLlD,iBAAuB+4nB,OAAYzxC,IAAW,eAC1C1wrB,YAAY27C,EAAQuT,GAChBxvC,QAEAxf,KAAKy7C,OAASA,EACdz7C,KAAKgvD,KAAOA,EACZhvD,KAAKyL,IAAMgwC,EAAOC,WAAW,MAE7B,MAAMiorB,EAAoB3juB,KAAK4juB,YAAY/9sB,KAAK7lB,MAChDA,KAAKitrB,YAAawd,OAAS,QACvB3xF,KAAe6qH,IAZP,oBAgBhBl+Z,UACIjmT,MAAMimT,UACNzlU,KAAKy7C,OAAS,KACdz7C,KAAKyL,IAAM,KAGf0yJ,KAAKt1F,EAAUggB,EAAKi5oB,GAChB9huB,KAAKy5Q,aAAa5wM,EAAUggB,EAAKi5oB,GACjC9huB,KAAK4juB,cAGTC,SAASnjoB,GACL,MAAQjlD,SAAQuT,QAAShvD,KACzBy7C,EAAO/kC,MAAQs4C,EAAKt4C,MAAQgqF,EAC5BjlD,EAAOlxC,OAASykD,EAAKzkD,OAASm2F,EAC9B1gG,KAAKyL,IAAIi1F,MAAMA,EAAOA,GAG1BojoB,oBACI,MAAuC,iBAA5B3utB,OAAOq/gB,iBACPr/gB,OAAOq/gB,iBAGX,EAGXovM,YAAY7ktB,GACR,IAAK/e,KAAKyL,IACN,OAIJ,MAAMi1F,EAAQqjoB,GADgBhltB,EAAQgltB,WACX,EAAI/juB,KAAK8juB,oBACpC9juB,KAAK6juB,SAASnjoB,GAEd1gG,KAAKyL,IAAIkxJ,UAAU,EAAG,EAAG38J,KAAKy7C,OAAO/kC,MAAO1W,KAAKy7C,OAAOlxC,QACxDvK,KAAKkiuB,SAASliuB,KAAKyL,MAI3B,QAAeslrB,6PC7CfV,QAAeC,IACfD,WAAkBE,IAClBF,UAAiBG,IACjBH,UAAiBI,IACjBJ,cAAqBK,IACrBL,SAAgBxB,IAChBwB,SAAgBM,IAChBN,SAAgBO,IAmMhB,QAhMA,gBAAsBC,IACd/orB,WACA,MAAO,SAGXhI,YAAY4U,GAASqK,GACjBS,MAAM9K,GAASqK,GAEf/e,KAAK0U,QAAQ2oC,UAAYr9C,KAAKkvb,UAAUlvb,MAExC,MAAMy7C,EAASz7C,KAAK0U,QAAQy8qB,kBACtBnioB,KAAOmzgB,KAAYztjB,IAEzB+mC,EAAO/kC,MAAQs4C,EAAKt4C,MACpB+kC,EAAOlxC,OAASykD,EAAKzkD,OAErBvK,KAAKkxrB,aAAez1oB,EAEpBz7C,KAAK8wrB,MAAQ,IAAIC,IAASt1oB,EAAQuT,GAElChvD,KAAKgkuB,mBAAqBhkuB,KAAKikuB,YAAYp+sB,KAAK7lB,OAEhDu1a,OAAWv1a,KAAK0U,QAAS,CACrB+2D,MAAOzrE,KAAKgkuB,mBACZryC,UAAW3xrB,KAAKgkuB,qBAIxBv+Z,UACIjmT,MAAMimT,UAEFzlU,KAAK8wrB,QACL9wrB,KAAK8wrB,MAAMrrX,UACXzlU,KAAK8wrB,MAAQ,MAGb9wrB,KAAKkkuB,cACLlkuB,KAAKkkuB,YAAY5krB,eACVt/C,KAAKkkuB,aAGZlkuB,KAAKmkuB,UACLnkuB,KAAKmkuB,QAAQ1+Z,iBACNzlU,KAAKmkuB,UAGhB/oF,OAAap7oB,KAAK0U,QAAS,CACvB+2D,MAAOzrE,KAAKgkuB,mBACZryC,UAAW3xrB,KAAKgkuB,qBAIxB3nlB,KAAK3nI,IACD8K,MAAM68H,KAAK3nI,IACX1U,KAAK8wrB,MAAM3yhB,KAAK,CAAEzpJ,SAAWvP,EAAWnF,KAAK+e,QAAQ+itB,MAEjD9huB,KAAKkkuB,aACLlkuB,KAAKkkuB,YAAY17qB,IAAI,CAAE9zC,KAI/B4qC,QACI9/B,MAAM8/B,QACNt/C,KAAK8wrB,MAAMxxoB,QAEPt/C,KAAKkkuB,aACLlkuB,KAAKkkuB,YAAY5krB,QAGjBt/C,KAAKmkuB,SACLnkuB,KAAKmkuB,QAAQ7krB,QAIrBmH,YAAYx9C,IACR,GAAIjJ,KAAKkkuB,YAAa,CAClB,MAAMzrpB,EAAQz4E,KAAKokuB,cAAcn7tB,IAEjC,OADcjJ,KAAKkkuB,YAAYG,WAAW5rpB,IAKlDkpE,QACI,MAAQmviB,MAAOh/X,GAAMo/X,aAAc1jV,GAAgBxtW,KAC7CskuB,EAAgB,GAEtBxya,GAAKyvV,SAAUt8K,IACPA,EAAU/5a,SACVo5qB,EAAc7+tB,KAAKw/d,EAAU/5a,WAIrC,MAAMr5B,GAAUo1gB,SACVs9L,EAAiB,KACnBzya,GAAK8xa,YAAY,CAAEG,YAAY,IAE/B,IACI,MAAMjxtB,EAAO06V,EAAY7yS,YACzB9oC,EAAQjK,QAAQ9U,SACX7J,GACL4oB,EAAQlK,OAAO1e,KAIvBu7tB,cAAWF,GAAe1psB,KAAK2psB,EAAgBA,GAExC1ysB,EAGXo5qB,kBACIzrrB,MAAMyrrB,kBACFjrsB,KAAKkkuB,cACLlkuB,KAAKkkuB,YAAY5krB,eACVt/C,KAAKkkuB,aAIpB/4B,iBAEI,GADA3rrB,MAAM2rrB,kBACDnrsB,KAAKkkuB,YAAa,CACnBlkuB,KAAKkkuB,YAAc,IAAIO,IAEvB,MAAMxlJ,GAAaj/kB,KAAK8wrB,MAAM7xG,WACxBylJ,EAAe,GACrB,QAASv6rB,EAAM,EAAGA,EAAM80iB,GAAWl5kB,OAAQokC,IACvCu6rB,EAAaj/tB,KAAKw5kB,GAAW90iB,GAAK6if,YAEtChthB,KAAKkkuB,YAAY17qB,IAAIk8qB,IAI7B1yC,UACIhyrB,KAAKkxrB,aAAax6qB,MAAQ1W,KAAKm5jB,MAAMzijB,MACrC1W,KAAKkxrB,aAAa3mrB,OAASvK,KAAKm5jB,MAAM5ujB,OAEtCvK,KAAK8wrB,MAAM9hoB,KAAOhvD,KAAKm5jB,MACvBn5jB,KAAK8wrB,MAAM7D,aAGf/9P,YACI,MAAO,uDAGXy1S,kBACI3kuB,KAAKkkuB,YAAc,IAAIO,IACvBzkuB,KAAKmkuB,QAAU,ICzKvB,QAEIrkuB,YAAYi4Y,IACRA,GAAQlyX,KAAK,aAAc7lB,KAAKyxrB,YAAY5rqB,KAAK7lB,OACjD+3Y,GAAQlyX,KAAK,aAAc7lB,KAAK0xrB,YAAY7rqB,KAAK7lB,OAEjDA,KAAK0U,QAAUqjY,GAAQrjY,QAG3B4qC,QACIt/C,KAAK4kuB,eAGTn/Z,UACIzlU,KAAK4kuB,sBACE5kuB,KAAK0U,QAGhB+8qB,YAAYxorB,IACR,MAAMq0Y,EAASt9Y,KAAK6kuB,aAAa57tB,IAE5Bq0Y,GAGIt9Y,KAAK83X,WACN93X,KAAK8kuB,eAAiB9kuB,KAAK+kuB,cAG/B/kuB,KAAKgluB,WAAW1nV,IANhBt9Y,KAAK4kuB,eAUblzC,cACI1xrB,KAAK4kuB,eAGTC,aAAa57tB,IACT,IAAIy1pB,EAAQz1pB,GAAEyL,QAEd,KAAOgqpB,KAAU9zD,OAAQ8zD,EAAM3/oB,QAAQu+X,SACnCohR,EAAQA,EAAMriT,OAGlB,GAAIqiT,EACA,OAAOA,EAAM3/oB,QAAQu+X,OAI7BynV,aACI,GAAI/kuB,KAAK0U,QACL,OAAO1U,KAAK0U,QAAQvK,MAAMmzY,OAIlC0nV,WAAW1nV,IACHt9Y,KAAK0U,UACL1U,KAAK0U,QAAQvK,MAAMmzY,OAASA,GAC5Bt9Y,KAAK83X,SAAWwlB,IAIxBsnV,eACQ5kuB,KAAK83X,WACL93X,KAAKgluB,WAAWhluB,KAAK8kuB,gBAAkB,WAChC9kuB,KAAK83X,YDyGiB93X,MAEjCwf,MAAMmltB,kBAGVV,YAAYh7tB,IACR,GAAIjJ,KAAKiluB,mBACL,OAGJ,MAAMvmE,EAAQ1+pB,KAAKymD,YAAYx9C,IAE/B,GAAe,UAAXA,GAAEnB,KAAkB,CACpB,MAAMo9tB,EAAelluB,KAAKmluB,cACtBD,GAAgBA,IAAiBxmE,GACjC1+pB,KAAKiK,QAAQ,aAAc,CACvByK,QAASwwtB,EACT7vmB,cAAepsH,GACfnB,KAAM,eAIV42pB,GAASwmE,IAAiBxmE,GAC1B1+pB,KAAKiK,QAAQ,aAAc,CACvByK,QAASgqpB,EACTrpiB,cAAepsH,GACfnB,KAAM,eAId9H,KAAKiK,QAAQ,YAAa,CACtByK,QAASgqpB,EACTrpiB,cAAepsH,GACfnB,KAAM,cAGV9H,KAAKmluB,cAAgBzmE,OACdA,GACP1+pB,KAAKiK,QAAQ,QAAS,CAClByK,QAASgqpB,EACTrpiB,cAAepsH,GACfnB,KAAM,2EEnLtB,QA/BA,gBAAuB+mrB,IACnBqzC,SAASz2tB,GACL,MAAMX,EAAO9K,KAAKgthB,WACZnkc,EAAM/9E,EAAKo/B,WACX8kB,EAAOlkD,EAAK6+Y,UAElBl+Y,EAAIy6f,OAEJlmgB,KAAKmiuB,aAAa12tB,GAClBzL,KAAKoiuB,QAAQ32tB,GACbzL,KAAKqiuB,WAAW52tB,GAEhBA,EAAI41O,YAEJ51O,EAAI45I,KAAOv6I,EAAKiU,QAAQsmI,KACxB55I,EAAIyzO,UAAY,OAEZl/O,KAAK8iuB,QAAQr3tB,IACbA,EAAI25tB,SAASt6tB,EAAK8T,UAAWiqE,EAAIl/E,EAAGk/E,EAAI/0B,EAAI9E,EAAKw3lB,UAGjDxmpB,KAAK+iuB,UAAUt3tB,KACfzL,KAAK2iuB,YAAYl3tB,GACjBA,EAAI45tB,WAAWv6tB,EAAK8T,UAAWiqE,EAAIl/E,EAAGk/E,EAAI/0B,EAAI9E,EAAKw3lB,WAGvD/6oB,EAAI+xJ,2CC3BG,WAAoB/xJ,EAAKi+K,GACpC,MAAMvtD,EAAWutD,EAAKvtD,SAEtB,GAAwB,IAApBA,EAASp2H,OACT,OAGJ,IAAIs2H,EAAUF,EAAS,GACnBluH,EAASouH,EAAQpuH,SACrBxC,EAAIg2O,OAAOxzO,EAAOtE,EAAGsE,EAAO6lD,GAE5B,QAASnlD,EAAI,EAAGA,EAAIwtH,EAASp2H,OAAQ4I,IAAK,CACtC0tH,EAAUF,EAASxtH,GACnBV,EAASouH,EAAQpuH,SAGjB,IAAIq3tB,EAAUC,EADS52tB,EAAI,GACLsxpB,aAClB6S,EAAYz2iB,EAAQy2iB,YAEpBwyD,GAAWxyD,EACXrnqB,EAAI+5tB,cAAcF,EAAQ37tB,EAAG27tB,EAAQxxqB,EACnBg/mB,EAAUnpqB,EAAGmpqB,EAAUh/mB,EACvB7lD,EAAOtE,EAAGsE,EAAO6lD,GAEnCroD,EAAIi2O,OAAOzzO,EAAOtE,EAAGsE,EAAO6lD,GAIhC41H,EAAK3qK,QAAQi+Q,QACbvxR,EAAIg6tB,6EC9BZ,IAAIC,EAAuB71tB,IACvB,MAAMo4b,EAAwB,oBAAX9yb,OAAyBA,OAAS,GAC/C2jmB,EAAiB7wK,EAAI04E,uBACP14E,EAAI09R,6BACJ19R,EAAI29R,0BACJ39R,EAAI49R,wBACJ59R,EAAI24E,yBACJ,SAAS/wgB,GAAYqC,WAAWrC,EAAU,IAAO,KAErE61tB,EAAsB71tB,GAAYipmB,EAAelllB,KAAKq0a,EAAKp4b,GAC3D61tB,EAAoB71tB,IAGxB,QAAe61tB,kDCbA,+FCIf,MAkIAzltB,EAhIMo+H,MAAN,gBAAoBk+f,IAChBz8oB,YAAY6D,GAGR,GAFA6b,QAEyB,IAArBud,UAAUh3B,OAAc,CACxB,MAAMy3f,EAAUn/W,EAAMm/W,QAChBsoO,EAAgB9luB,KAAK+luB,aAAapiuB,GAExC,QAASwmC,EAAM,EAAGA,EAAMqzd,EAAQz3f,OAAQokC,IAAO,CAC3C,MACM67rB,EAAYxoO,EAAQrzd,GAAKpoB,QACzB26S,EAFc8gM,EAAQrzd,GAAK87rB,GAEPr/X,KAAKk/X,GAE/B,GAAIppa,EAAO,CACP,MAAMwpa,EAAWF,EAAUtpa,GAC3B18T,KAAK6wD,EAAIq1qB,EAAS,GAClBlmuB,KAAKwvD,EAAI02qB,EAAS,GAClBlmuB,KAAKkyB,EAAIg0sB,EAAS,UAI1BlmuB,KAAK6wD,EAAI9zB,UAAU,GACnB/8B,KAAKwvD,EAAIzyB,UAAU,GACnB/8B,KAAKkyB,EAAI6K,UAAU,GAGvB/8B,KAAK6wD,EAAI7wD,KAAKmmuB,cAAcnmuB,KAAK6wD,GACjC7wD,KAAKwvD,EAAIxvD,KAAKmmuB,cAAcnmuB,KAAKwvD,GACjCxvD,KAAKkyB,EAAIlyB,KAAKmmuB,cAAcnmuB,KAAKkyB,GAGrCgmjB,QACI,MAAMhte,EAAMlrG,KAAKomuB,SACXv1qB,EAAI7wD,KAAK6wD,EAAE9lD,SAAS,IACpBykD,EAAIxvD,KAAKwvD,EAAEzkD,SAAS,IACpBmnB,EAAIlyB,KAAKkyB,EAAEnnB,SAAS,IAE1B,MAAO,IAAMmgG,EAAIr6C,GAAKq6C,EAAI17C,GAAK07C,EAAIh5E,GAGvC6zsB,aAAapiuB,GACT,IAAI47I,EAAQ57I,GAAS,QAErB,MAAwB,MAApB47I,EAAMnrG,OAAO,KACbmrG,EAAQA,EAAM98H,OAAO,EAAG,IAG5B88H,EAAQA,EAAMh0H,QAAQ,KAAM,IAC5Bg0H,EAAQA,EAAMlkH,cACdkkH,EAAQlB,EAAM25b,YAAYz4b,IAAUA,EAE7BA,EAGX4mlB,cAAcxiuB,GACV,OAAIA,EAAQ,GAAKwT,MAAMxT,GACZ,EAGJA,EAAQ,IAAM,IAAMA,EAG/ByiuB,SAASziuB,GACL,OAAyB,IAAjBA,EAAMoC,OAAgB,IAAMpC,EAAQA,EAGhDoqqB,WAAWpqqB,GACP,MAAMm9F,EAAQ5zF,KAAK4zF,MAEnB,YAAKjwC,EAAIiwC,EAAM9gG,KAAKmmuB,cAAcnmuB,KAAK6wD,EAAIltD,IAC3C3D,KAAKwvD,EAAIsxC,EAAM9gG,KAAKmmuB,cAAcnmuB,KAAKwvD,EAAI7rD,IAC3C3D,KAAKkyB,EAAI4uE,EAAM9gG,KAAKmmuB,cAAcnmuB,KAAKkyB,EAAIvuB,IAEpC3D,KAGXqmuB,iBACI,OAAOn5tB,KAAKqnF,KAAK,KAAQv0F,KAAK6wD,EAAI7wD,KAAK6wD,EAAI,KAAQ7wD,KAAKwvD,EAAIxvD,KAAKwvD,EAAI,KAAQxvD,KAAKkyB,EAAIlyB,KAAKkyB,GAG/F6pnB,SACI,OAAO/7oB,KAAKqmuB,iBAnFE,IAmFiBC,iBAGlBz1qB,EAAGrB,EAAGt9B,EAAGC,GACtB,OAAO,IAAIo0sB,KAAM11qB,EAAGrB,EAAGt9B,EAAQ,MAALC,EAAYA,EAAI,kBAG/B0+B,EAAGrB,EAAGt9B,EAAGC,GACpB,OAAO,IAAIq0sB,KAAI31qB,EAAGrB,EAAGt9B,EAAQ,MAALC,EAAYA,EAAI,kBAG7BslM,EAAG5wN,EAAGL,EAAG2rB,GACpB,OAAO,IAAIs0sB,KAAIhvgB,EAAG5wN,EAAGL,EAAQ,MAAL2rB,EAAYA,EAAI,kBAG7BslM,EAAG5wN,EAAGkhC,EAAG5V,GACpB,OAAO,IAAIu0sB,KAAIjvgB,EAAG5wN,EAAGkhC,EAAQ,MAAL5V,EAAYA,EAAI,IAIhDksH,SAAMm/W,QAAU,CAAE,CACdyoO,GAAI,+CACJlktB,QAAS,SAAS26S,GACd,MAAO,CACH94T,SAAS84T,EAAM,GAAI,IAAK94T,SAAS84T,EAAM,GAAI,IAAK94T,SAAS84T,EAAM,GAAI,OAG5E,CACCupa,GAAI,0BACJlktB,QAAS,SAAS26S,GACd,MAAO,CACH94T,SAAS84T,EAAM,GAAI,IAAK94T,SAAS84T,EAAM,GAAI,IAAK94T,SAAS84T,EAAM,GAAI,OAG5E,CACCupa,GAAI,0BACJlktB,QAAS,SAAS26S,GACd,MAAO,CACH94T,SAAS84T,EAAM,GAAKA,EAAM,GAAI,IAC9B94T,SAAS84T,EAAM,GAAKA,EAAM,GAAI,IAC9B94T,SAAS84T,EAAM,GAAKA,EAAM,GAAI,QAK1Cr+K,EAAM25b,YAAcA,IA9Hd35b,sDC8CN,QApDoB,CAChBsolB,UAAW,SAAUC,aAAc,SAAUC,KAAM,SACnDC,WAAY,SAAUC,MAAO,SAAUC,MAAO,SAC9CC,OAAQ,SAAUC,MAAO,SAAUC,eAAgB,SACnDxsJ,KAAM,SAAUysJ,WAAY,SAAUC,MAAO,SAC7CC,UAAW,SAAUC,UAAW,SAAUC,WAAY,SACtDC,UAAW,SAAUC,MAAO,SAAUC,eAAgB,SACtDC,SAAU,SAAUC,QAAS,SAAUC,KAAM,SAC7CC,SAAU,SAAUC,SAAU,SAAUC,cAAe,SACvDC,SAAU,SAAUC,SAAU,SAAUC,UAAW,SACnDC,UAAW,SAAUC,YAAa,SAAUC,eAAgB,SAC5DC,WAAY,SAAUC,WAAY,SAAUC,QAAS,SACrDC,WAAY,SAAUC,aAAc,SAAUC,cAAe,SAC7DC,cAAe,SAAUC,cAAe,SAAUC,cAAe,SACjEC,WAAY,SAAUC,SAAU,SAAUC,YAAa,SACvDC,QAAS,SAAUC,QAAS,SAAUC,WAAY,SAClDC,UAAW,SAAUC,YAAa,SAAUC,YAAa,SACzDC,QAAS,SAAUC,UAAW,SAAUC,WAAY,SACpDC,KAAM,SAAUC,UAAW,SAAUC,KAAM,SAC3CC,KAAM,SAAUtvJ,MAAO,SAAUuvJ,YAAa,SAC9CC,SAAU,SAAUC,QAAS,SAAUC,UAAW,SAClDC,OAAQ,SAAUC,MAAO,SAAUC,MAAO,SAC1CC,SAAU,SAAUC,cAAe,SAAUC,UAAW,SACxDC,aAAc,SAAUC,UAAW,SAAUC,WAAY,SACzDC,UAAW,SAAUC,qBAAsB,SAAUC,UAAW,SAChEC,UAAW,SAAUC,WAAY,SAAUC,UAAW,SACtDC,YAAa,SAAUC,cAAe,SAAUC,aAAc,SAC9DC,eAAgB,SAAUC,eAAgB,SAAUC,eAAgB,SACpEC,YAAa,SAAUC,KAAM,SAAUC,UAAW,SAClDC,MAAO,SAAUC,QAAS,SAAUC,OAAQ,SAC5CC,iBAAkB,SAAUC,WAAY,SAAUC,aAAc,SAChEC,aAAc,SAAUC,eAAgB,SAAUC,gBAAiB,SACnEC,kBAAmB,SAAUC,gBAAiB,SAAUC,gBAAiB,SACzEC,aAAc,SAAUC,UAAW,SAAUC,UAAW,SACxDC,SAAU,SAAUC,YAAa,SAAUC,KAAM,SACjDC,QAAS,SAAUC,MAAO,SAAUC,UAAW,SAC/CC,OAAQ,SAAUC,UAAW,SAAUC,OAAQ,SAC/CC,cAAe,SAAUC,UAAW,SAAUC,cAAe,SAC7DC,cAAe,SAAUC,WAAY,SAAUC,UAAW,SAC1DC,KAAM,SAAUC,KAAM,SAAUC,KAAM,SACtCC,WAAY,SAAUC,OAAQ,SAAUtzJ,IAAK,SAC7CuzJ,UAAW,SAAUC,UAAW,SAAUC,YAAa,SACvDC,OAAQ,SAAUC,WAAY,SAAUC,SAAU,SAClDC,SAAU,SAAUC,OAAQ,SAAUC,OAAQ,SAC9CC,QAAS,SAAUC,UAAW,SAAUC,UAAW,SACnDC,UAAW,SAAUC,KAAM,SAAUC,YAAa,SAClDC,UAAW,SAAUC,IAAK,SAAUC,KAAM,SAC1CC,QAAS,SAAUC,OAAQ,SAAUC,UAAW,SAChDC,OAAQ,SAAUC,MAAO,SAAUC,MAAO,SAC1CC,WAAY,SAAUC,OAAQ,SAAUC,YAAa,oIC7CzD,MAAMvnK,EAAUtpF,YAEhB,IAAI8wP,EAAmBpwlB,IACnB,MAAMqwlB,EAAa/puB,OAAOrC,KAAKw0kB,KAC/B43J,EAAWnquB,KAAK,eAEhB,MAAM4sf,EAAS,IAAI1rJ,OAAO,KAAOipY,EAAWnotB,KAAK,KAAO,WAAY,KACpEkotB,SAAmBpwlB,GAAU8yW,EAAOzrJ,KAAKrnN,GAElC8yW,EAAOzrJ,KAAKrnN,IAGvB,gBAAwBg9f,IACpBz8oB,cAAgB0f,QAChB09jB,QAAU,OAAOl9kB,KAEjB6vuB,QAAU,OAAO7vuB,KAEjBk4kB,QAAU,OAAOl4kB,KAAKw4kB,UAAUN,QAEhCM,UAAY,OAAOx4kB,KAEnBq4kB,QAAU,MAAO,IAAMr4kB,KAAKk4kB,QAE5BI,YACI,MAAMc,EAAMp5kB,KAAKw4kB,UACjB,MAAQ,QAAQY,EAAIvohB,MAAQuohB,EAAI5phB,MAAQ4phB,EAAIlnjB,MAAQyS,WAAY2pB,OAAOtuD,KAAKmyB,GAAI2sF,QAAQ,OAG5FgxnB,YACI,OAAI3nK,EAAQp4F,MAAQo4F,EAAQvjjB,QAAU,EAC3B5kB,KAAKq4kB,QAETr4kB,KAAKs4kB,YAGhBr6gB,OAAOh+C,GACH,OAAOA,IAAMjgB,MAAc,OAANigB,GAAcjgB,KAAKs4kB,cAAgBL,EAAWh4jB,GAAGq4jB,YAG1E7+jB,KAAK4lD,GACD,GAAc,OAAVA,EACA,OAAOyzD,IAGX,MAAMzoB,EAAKrqG,KAAKw4kB,UACVlue,EAAKjrC,EAAMm5gB,UAEjB,OAAOtrkB,KAAKqnF,KAAKrnF,KAAK06F,IAAoB,IAAfyC,EAAGx5C,EAAIy5C,EAAGz5C,GAAW,GAC/B3jD,KAAK06F,IAAoB,KAAfyC,EAAG76C,EAAI86C,EAAG96C,GAAW,GAC/BtiD,KAAK06F,IAAoB,KAAfyC,EAAGn4E,EAAIo4E,EAAGp4E,GAAW,IAGpDs9F,QACI,IAAIvvG,EAAIjgB,KAAKw4kB,UACb,OAAIv4jB,IAAMjgB,OACNigB,EAAI,IAAIsmtB,EAAMtmtB,EAAE4wC,EAAG5wC,EAAEuvC,EAAGvvC,EAAEiS,EAAGjS,EAAEkS,IAG5BlS,GAIf,gBAAkB8vtB,EACdjwuB,YAAY+wD,EAAGrB,EAAGt9B,EAAGC,GACjB3S,QAEAxf,KAAK6wD,EAAIA,EACT7wD,KAAKwvD,EAAIA,EACTxvD,KAAKkyB,EAAIA,EACTlyB,KAAKmyB,EAAIA,EAGb+qjB,QACI,MAAQrshB,IAAGrB,IAAGt9B,KAAMlyB,KACdyyC,EAAMvlC,KAAKulC,IAAIoe,EAAGrB,EAAGt9B,GACrB1jB,EAAMtB,KAAKsB,IAAIqiD,EAAGrB,EAAGt9B,GACrB69F,EAAQvhH,EAAMikC,EACdjsC,EAAIgI,EACV,IAAIipN,EAAG5wN,EAEP,OAAc,IAAVkpH,EACO,IAAI02mB,EAAI,EAAG,EAAGjguB,EAAGxG,KAAKmyB,IAGrB,IAAR3jB,GACA3H,EAAIkpH,EAAQvhH,EAERipN,EADA5mK,IAAMriD,GACDghD,EAAIt9B,GAAK69F,EACXxpD,IAAU/3D,EACT,GAAK0jB,EAAI2+B,GAAKk/D,EAEd,GAAKl/D,EAAIrB,GAAKugE,EAGtB0nG,GAAK,GACDA,EAAI,IACJA,GAAK,OAGT5wN,EAAI,EACJ4wN,GAAI,GAGD,IAAIgvgB,EAAIhvgB,EAAG5wN,EAAGL,EAAGxG,KAAKmyB,IAGjC0xqB,QACI,MAAQhzoB,IAAGrB,IAAGt9B,KAAMlyB,KACdwO,EAAMtB,KAAKsB,IAAIqiD,EAAGrB,EAAGt9B,GACrBugB,EAAMvlC,KAAKulC,IAAIoe,EAAGrB,EAAGt9B,GAC3B,IAAIulM,EAAG5wN,EAAGkhC,GAAKv5B,EAAMikC,GAAO,EAE5B,GAAIjkC,IAAQikC,EACRglL,EAAI5wN,EAAI,MACL,CACH,MAAM2E,EAAIgD,EAAMikC,EAEhB,OADA5rC,EAAIkhC,EAAI,GAAMv8B,GAAK,EAAIgD,EAAMikC,GAAOjnC,GAAKgD,EAAMikC,GACvCjkC,QACCqiD,EAAG4mK,GAAKjoK,EAAIt9B,GAAK1mB,GAAKgkD,EAAIt9B,EAAI,EAAI,GAAI,WACtCs9B,EAAGioK,GAAKvlM,EAAI2+B,GAAKrlD,EAAI,EAAG,WACxB0mB,EAAGulM,GAAK5mK,EAAIrB,GAAKhkD,EAAI,GAKlC,OAAO,IAAIk7tB,EAAQ,GAAJjvgB,EAAY,IAAJ5wN,EAAa,IAAJkhC,EAAS/nC,KAAKmyB,GAGlDqmjB,UACI,OAAO,IAAI+tJ,EAAe,IAATvmuB,KAAK6wD,EAAkB,IAAT7wD,KAAKwvD,EAAkB,IAATxvD,KAAKkyB,EAASlyB,KAAKmyB,IAIxE,gBAAoBq0sB,EAChB1muB,YAAY+wD,EAAGrB,EAAGt9B,EAAGC,GACjB3S,MAAMtS,KAAK4zF,MAAMjwC,GAAI3jD,KAAK4zF,MAAMtxC,GAAItiD,KAAK4zF,MAAM5uE,GAAIC,GAGvD09sB,QACI,OAAO,IAAIrJ,EAAIxmuB,KAAK6wD,EAAI,IAAK7wD,KAAKwvD,EAAI,IAAKxvD,KAAKkyB,EAAI,IAAKlyB,KAAKmyB,GAGlE+qjB,QACI,OAAOl9kB,KAAK6vuB,QAAQ3yJ,QAGxB2mH,QACI,OAAO7jsB,KAAK6vuB,QAAQhsC,QAGxB3rH,QACI,OAAOlziB,EAAIhlC,KAAK6wD,EAAG,GAAK7rB,EAAIhlC,KAAKwvD,EAAG,GAAKxqB,EAAIhlC,KAAKkyB,EAAG,GAGzDsmjB,UACI,OAAOx4kB,MAIf,WAAa8N,EAAG4I,EAAOw0F,EAAM,KACzB,IAAI34F,EAASzE,EAAE/C,SAAS,IACxB,KAAO2L,EAAQnE,EAAOxM,QAClBwM,EAAS24F,EAAM34F,EAGnB,OAAOA,EAGX,gBAAkBw9tB,EACdjwuB,YAAY23N,EAAG5wN,EAAGL,EAAG2rB,GACjB3S,QAEAxf,KAAKy3N,EAAIA,EACTz3N,KAAK6G,EAAIA,EACT7G,KAAKwG,EAAIA,EACTxG,KAAKmyB,EAAIA,EAGb09sB,QACI,IACIh/qB,EAAGrB,EAAGt9B,GADJulM,IAAG5wN,IAAGL,KAAMxG,KAGlB,GAAU,IAAN6G,EACAgqD,EAAIrB,EAAIt9B,EAAI1rB,MACT,CACHixN,GAAK,GAEL,MAAM9oN,EAAIzB,KAAKC,MAAMsqN,GACf7xN,EAAI6xN,EAAI9oN,EACR81D,EAAIj+D,GAAK,EAAIK,GACb2L,GAAIhM,GAAK,EAAIK,EAAIjB,GACjBwoC,EAAI5nC,GAAK,EAAIK,GAAK,EAAIjB,IAE5B,OAAQ+I,QACC,EAAGkiD,EAAIrqD,EAAGgpD,EAAIphB,EAAGlc,EAAIuyC,EAAG,WACxB,EAAG5T,EAAIr+C,GAAGg9C,EAAIhpD,EAAG0rB,EAAIuyC,EAAG,WACxB,EAAG5T,EAAI4T,EAAGjV,EAAIhpD,EAAG0rB,EAAIkc,EAAG,WACxB,EAAGyiB,EAAI4T,EAAGjV,EAAIh9C,GAAG0f,EAAI1rB,EAAG,WACxB,EAAGqqD,EAAIziB,EAAGohB,EAAIiV,EAAGvyC,EAAI1rB,EAAG,cACpBqqD,EAAIrqD,EAAGgpD,EAAIiV,EAAGvyC,EAAI1f,IAInC,OAAO,IAAIg0tB,EAAI31qB,EAAGrB,EAAGt9B,EAAGlyB,KAAKmyB,GAGjC0xqB,QACI,OAAO7jsB,KAAK6vuB,QAAQhsC,QAGxBrrH,UACI,OAAOx4kB,KAAK6vuB,QAAQr3J,WAI5B,gBAAkBu3J,EACdjwuB,YAAY23N,EAAG5wN,EAAGkhC,EAAG5V,GACjB3S,QAEAxf,KAAKy3N,EAAIA,EACTz3N,KAAK6G,EAAIA,EACT7G,KAAK+nC,EAAIA,EACT/nC,KAAKmyB,EAAIA,EAGb09sB,QACI,IAGIh/qB,EAAGrB,EAAGt9B,EAHNulM,EAAIz3N,KAAKy3N,EAAI,IACb5wN,EAAI7G,KAAK6G,EAAI,IACbkhC,EAAI/nC,KAAK+nC,EAAI,IAGjB,GAAU,IAANlhC,EACAgqD,EAAIrB,EAAIt9B,EAAI6V,MACT,CACH,MAAMv1B,EAAIu1B,EAAI,GAAMA,GAAK,EAAIlhC,GAAKkhC,EAAIlhC,EAAIkhC,EAAIlhC,EACxC49D,EAAI,EAAI18B,EAAIv1B,EAClBq+C,EAAIm/qB,EAAQvrqB,EAAGjyD,EAAGilN,EAAI,EAAI,GAC1BjoK,EAAIwgrB,EAAQvrqB,EAAGjyD,EAAGilN,GAClBvlM,EAAI89sB,EAAQvrqB,EAAGjyD,EAAGilN,EAAI,EAAI,GAG9B,OAAO,IAAI+ugB,EAAI31qB,EAAGrB,EAAGt9B,EAAGlyB,KAAKmyB,GAGjC+qjB,QACI,OAAOl9kB,KAAK6vuB,QAAQ3yJ,QAGxB1E,UACI,OAAOx4kB,KAAK6vuB,QAAQr3J,WAI5B,WAAiB/zgB,EAAGjyD,EAAG3L,GACnB,IAAIunC,EAAIvnC,EAUR,OARIunC,EAAI,IACJA,GAAK,GAGLA,EAAI,IACJA,GAAK,GAGLA,EAAI,EAAI,EACDq2B,EAAc,GAATjyD,EAAIiyD,GAASr2B,EAGzBA,EAAI,GACG57B,EAGP47B,EAAI,EAAI,EACDq2B,GAAKjyD,EAAIiyD,IAAM,EAAI,EAAIr2B,GAAK,EAGhCq2B,EAKI,WAAoB9gE,EAAOm0kB,GACtC,IAAIj7iB,EAAG21d,EAEP,GAAa,MAAT7uf,GAA2B,SAAVA,EACjB,OAAO,KAGX,GAAIA,aAAiBosuB,EACjB,OAAOpsuB,EAGX,IAAI47I,EAAQ57I,EAAM03B,cAClB,GAAKwB,EAAI8ysB,EAAgBpwlB,GACrB,OACIA,EADS,gBAAT1iH,EAAE,GACM,IAAI2psB,EAAI,EAAG,EAAG,EAAG,GAEjBvuJ,EAAWD,IAAYn7iB,EAAE,IAAKi7iB,GAE1Cv4b,EAAMh+H,MAAQ,CAAEsb,EAAE,IACX0iH,EA4BX,IA1BK1iH,EAAI,gDAAgD+pU,KAAKrnN,IAC1DizW,EAAM,IAAI+zO,EAAM3iuB,SAASi5B,EAAE,GAAI,IACfj5B,SAASi5B,EAAE,GAAI,IACfj5B,SAASi5B,EAAE,GAAI,IAAK,IAC5BA,EAAI,uCAAuC+pU,KAAKrnN,IACxDizW,EAAM,IAAI+zO,EAAM3iuB,SAASi5B,EAAE,GAAKA,EAAE,GAAI,IACtBj5B,SAASi5B,EAAE,GAAKA,EAAE,GAAI,IACtBj5B,SAASi5B,EAAE,GAAKA,EAAE,GAAI,IAAK,IACnCA,EAAI,uDAAuD+pU,KAAKrnN,IACxEizW,EAAM,IAAI+zO,EAAM3iuB,SAASi5B,EAAE,GAAI,IACfj5B,SAASi5B,EAAE,GAAI,IACfj5B,SAASi5B,EAAE,GAAI,IAAK,IAC5BA,EAAI,wEAAwE+pU,KAAKrnN,IACzFizW,EAAM,IAAI+zO,EAAM3iuB,SAASi5B,EAAE,GAAI,IACfj5B,SAASi5B,EAAE,GAAI,IACfj5B,SAASi5B,EAAE,GAAI,IAAK8H,WAAW9H,EAAE,MACzCA,EAAI,qFAAqF+pU,KAAKrnN,IACtGizW,EAAM,IAAIg0O,EAAI7hsB,WAAW9H,EAAE,IAAM,IACnB8H,WAAW9H,EAAE,IAAM,IACnB8H,WAAW9H,EAAE,IAAM,IAAK,IAC9BA,EAAI,sGAAsG+pU,KAAKrnN,MACvHizW,EAAM,IAAIg0O,EAAI7hsB,WAAW9H,EAAE,IAAM,IACnB8H,WAAW9H,EAAE,IAAM,IACnB8H,WAAW9H,EAAE,IAAM,IAAK8H,WAAW9H,EAAE,MAGnD21d,EACAA,EAAIjxe,MAAQsb,WACJi7iB,EACR,MAAM,IAAIrhkB,MAAM,uBAAyB8oI,GAG7C,OAAOizW,mDCtTX,IAAI21E,EAAU,GAad,QAXgB,CACRA,cACA,MAAsB,oBAAXhzjB,QAA0BgzjB,IAIrCA,EArCR,WAAwBnjjB,GACpB,MAAMirtB,EAAa,CACfpwoB,KAAM,uBACN+6iB,OAAQ,yBACR4+E,OAAQ,yBACRC,MAAO,sCACP1pP,KAAM,mCACN2pP,QAAS,kCAGb,IAAIvxJ,EAEJ,QAASxvU,KAASs3e,EACd,GAAIA,EAAW5jsB,eAAessN,GAAQ,CAClC,MAAMp3O,EAAQyD,EAAUzD,MAAM0utB,EAAWt3e,IACzC,GAAIp3O,EAAO,CACP4mjB,EAAU,GACVA,EAAQxvU,IAAS,EACjBwvU,EAAQ5mjB,EAAM,GAAG8Z,cAAcrkB,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAM,EAC9DmxjB,EAAQvjjB,QAAUhhB,SAAS+d,SAAS04sB,cAAgB94sB,EAAM,GAAI,IAE9D,OAKZ,OAAO4mjB,EAWO+nK,CAAe/6tB,OAAOovB,UAAUvf,YACnCmjjB,mECpCA,WAAkBjvgB,EAAI5nD,GACjC,IACI+R,EADA8stB,EAAe,EAGnB,IAAK7+tB,GAASA,GAAS,EACnB,OAAO4nD,EAGX,MAAMk3qB,EAAY,WACd,MAAM1klB,KAAU1yI,OAAQm3tB,EAClBl2sB,EAAO8C,UAEP6pU,EAAO,WACT1tS,EAAGvlC,MAAM,KAAMsG,GACfk2sB,KAAen3tB,QAInB,IAAKm3tB,EACD,OAAOvpY,IAGPvjV,GACA4D,aAAa5D,GAGjB0kB,EAAcz2B,EACVs1V,IAEAvjV,EAAUnR,WAAW00V,EAAMt1V,EAAQo6I,IAI3C0klB,SAAU7oX,OAAS,WACftgW,aAAa5D,IAGV+stB,kECiDX,QAtFA,gBAAuB7zF,IACnBz8oB,YAAYkthB,GACRxtgB,QAEAxf,KAAKi/kB,WAAa,GAClBj/kB,KAAKq8W,OAAS,KAEV2wK,IACAhthB,KAAKgthB,WAAaA,EAClBhthB,KAAK6gE,WAIb4kQ,UACQzlU,KAAKgthB,YACLhthB,KAAKgthB,WAAW09K,eAAe1qsB,MAGnC,MAAMw+D,EAAWx+D,KAAKi/kB,WACtB,QAAStwkB,EAAI,EAAGA,EAAI6vD,EAASz4D,OAAQ4I,IACjC3O,KAAKi/kB,WAAWtwkB,GAAG82T,UAGvBzlU,KAAKq8W,OAAS,KAGlBl+M,QAEAt9F,UACQ7gE,KAAKgthB,YACLhthB,KAAKgthB,WAAW84K,YAAY9lsB,MAIpCkxB,OAAO9L,GACHplB,KAAKi/kB,WAAWx5kB,KAAK2f,GACrBA,EAAKi3V,OAASr8W,KAGlByiuB,SAASr9sB,EAAMyjE,GACX7oF,KAAKi/kB,WAAWn7jB,OAAO+kE,EAAK,EAAGzjE,GAC/BA,EAAKi3V,OAASr8W,KAGlBy+C,OAAO76B,EAAOg0F,GACV,MAAMttE,EAAM1mB,EAAQg0F,EACpB,QAASjpG,EAAIiV,EAAOjV,EAAI27B,EAAK37B,IACzB3O,KAAKi/kB,WAAWtwkB,GAAG0huB,aAEvBrwuB,KAAKi/kB,WAAWn7jB,OAAOF,EAAOg0F,GAGlCy4nB,aACIrwuB,KAAKs/C,QACLt/C,KAAKylU,UAGTnmR,QACIt/C,KAAKy+C,OAAO,EAAGz+C,KAAKi/kB,WAAWl5kB,QAGnCknrB,aACQjtrB,KAAKq8W,QACLr8W,KAAKq8W,OAAO4wU,aAIpBF,iBACI/srB,KAAKitrB,aAGTC,gBACIltrB,KAAKitrB,aAGTqjD,eAAernuB,GACM,QAAbA,EAAE+3B,OACFhhC,KAAKm+J,KAAKl1J,EAAEupD,MAAOvpD,EAAE2a,OACD,WAAb3a,EAAE+3B,QACThhC,KAAKy+C,OAAOx1C,EAAE2a,MAAO3a,EAAEupD,MAAMzsD,QAGjC/F,KAAKitrB,iFCpFb,MAAMkB,EAAc,CAChBoiD,IAAK,CAAE,IAAK,KACZC,KAAM,CAAE,EAAG,KACXC,SAAU,CAAE,EAAG,KACfC,QAAS,CAAE,IAAK,IAAK,IAAK,KAC1BC,YAAa,CAAE,EAAG,IAAK,IAAK,KAC5BC,eAAgB,CAAE,EAAG,IAAK,IAAK,IAAK,IAAK,MAGvC3iD,EAAQ,QACRG,EAAO,sEC4Db,QApEA,gBAA2B7xC,IACvB14nB,YACI,YAAKghoB,WAAa7kpB,KAAK6kpB,YAAc,GAC9B7kpB,KAAK6kpB,WAGhBihD,YAAYpxrB,GACR,OAAK1U,KAAK6kpB,WAGN7kpB,KAAK6kpB,WAAWp/oB,KAAKiP,GAFrB1U,KAAK6kpB,WAAa,CAAEnwoB,GAIjB1U,KAGX0qsB,eAAeh2rB,GACX,MAAMmP,EAAY7jB,KAAK6jB,YACjBD,EAAQC,EAAU/D,QAAQpL,GAChC,OAAc,IAAVkP,GACAC,EAAUC,OAAOF,EAAO,GAErB5jB,KAGXiK,QAAQ+vB,EAAYrsB,GAChB,MAAMkW,EAAY7jB,KAAK6kpB,WAEvB,GAAIhhoB,IAAc7jB,KAAK6wuB,WACnB,QAAS1msB,EAAM,EAAGA,EAAMtmB,EAAU9d,OAAQokC,IAAO,CAC7C,IAAI3mB,EAAWK,EAAUsmB,GACrB3mB,EAASwW,IACTxW,EAASwW,GAAYrsB,GAIjC,OAAO3N,KAGXktrB,cAAcjkrB,EAAI,IACdA,EAAEyL,QAAU1U,KACZA,KAAKiK,QAAQ,gBAAiBhB,GAGlC8jrB,iBACI/srB,KAAKiK,QAAQ,iBAAkB,CAC3ByK,QAAS1U,OAIjB+wqB,UACI,YAAK8/D,YAAc7wuB,KAAK6wuB,YAAc,GAAK,EACpC7wuB,KAGXgif,SACI,YAAK6uP,WAAa3juB,KAAKsB,KAAKxO,KAAK6wuB,YAAc,GAAK,EAAG,GAChD7wuB,KAGX8wuB,eAAejmrB,EAAOlnD,GACd3D,KAAK6qD,IACL7qD,KAAK6qD,GAAO6/oB,eAAe1qsB,MAE/BA,KAAK6qD,GAASlnD,EACdA,EAAMmisB,YAAY9lsB,6FC7D1B,MAAM+K,EAAW,GAAGA,SAEpB,gBAA2BgmuB,IACvBjxuB,YAAYif,EAAS20B,EAAS,IAC1Bl0B,QAEAxf,KAAK0zC,OAASA,EAEd,QAASmX,KAAS9rC,EAAS,CACvB,IAAIq+sB,EAASr+sB,EAAQ8rC,GACrBuyqB,EAASp9tB,KAAKgxuB,MAAM5T,EAAQvyqB,GAC5B7qD,KAAK6qD,GAASuyqB,GAItBv+sB,IAAIgsC,GACA,MAAM6xQ,EAAQ7xQ,EAAM7zC,MAAM,KAC1B,IAAIzE,EAASvS,KAEb,KAAO08T,EAAM32T,QAAUwM,GAEnBA,EAASA,EADEmqT,EAAM/yO,SAIrB,OAAOp3E,EAGX8f,IAAIw4B,EAAOlnD,GAGH0iC,KAFiBxnB,IAAIgsC,KAETlnD,IACZ3D,KAAKi8oB,KAAKpxlB,EAAO7qD,KAAKgxuB,MAAMrtuB,EAAOknD,IACnC7qD,KAAKktrB,cAAc,CACfrioB,MAAO7qD,KAAK0zC,OAASmX,EACrBlnD,MAAOA,KAKnBs4oB,KAAKpxlB,EAAOlnD,GACR,MAAMstuB,EAAYpmrB,EAAM/qC,QAAQ,MAAQ,EACxC,IAAI2jqB,EAAYzjrB,KACZu6D,EAAY1P,EAEhB,GAAIomrB,EAAW,CACX,MAAMv0a,EAAQniQ,EAAUvjD,MAAM,KAC9B,IAAI08B,EAAS1zC,KAAK0zC,OAElB,KAAOgpR,EAAM32T,OAAS,GAAG,CACrBw0D,EAAYmiQ,EAAM/yO,QAClBj2C,GAAU6mB,EAAY,IAEtB,IAAImF,EAAM+jnB,EAAUlpnB,GAEfmF,IACDA,EAAM,IAAIwxqB,EAAa,GAAIx9rB,GAC3BgsB,EAAIomoB,YAAY9lsB,MAChByjrB,EAAUlpnB,GAAamF,GAE3B+jnB,EAAY/jnB,EAEhBnF,EAAYmiQ,EAAM,GAGtB+mX,EAAU0tD,OAAO52qB,GACjBkpnB,EAAUlpnB,GAAa52D,EAG3BwtuB,OAAOtmrB,GACH,MAAMxkB,EAAUrmC,KAAK6qD,GACjBxkB,GAAWA,EAAQqkqB,gBACnBrkqB,EAAQqkqB,eAAe1qsB,MAI/BgxuB,MAAMnouB,EAAQgiD,GACV,MAAM/iD,EAAOiD,EAAS6oB,KAAK/qB,GAC3B,IAAIuouB,EAAUvouB,EAEd,OAAgB,OAAZuouB,IAAoBxmI,OAAQwmI,IAAqB,oBAATtpuB,MAClCe,aAAkBqouB,MAAmBrouB,aAAkB0zoB,OACzD60F,EAAU,IAAIF,EAAaE,EAASpxuB,KAAK0zC,OAASmX,EAAQ,MAG9DumrB,EAAQtrC,YAAY9lsB,OAGjBoxuB,GAIf,QAAeF,uFCaf,WAAoBvtuB,GAChB,MAAwB,mBAAVA,EAGlB,WAAkBA,GACd,MAAwB,iBAAVA,EAAqB,CAAEA,GAAUA,EAGnD,aACI3D,KAAKyyrB,mBAAoB,EAG7B,aACI,OAAkC,IAA3BzyrB,KAAKyyrB,kBAGhB,QA3HA,gBAAyBl2C,IACrBz8oB,cACI0f,QAEAxf,KAAKqxuB,QAAU,GAGnBxrtB,KAAKu9U,EAAW7nU,EAAU+1sB,GACtB,MAAM3mC,EAAa5nlB,EAASqgP,GACtBmuY,GAAqBx3F,EAAWx+mB,GAChCx1B,EAAS4ksB,EAAW5ksB,OAE1B,QAAiBZ,IAAbo2B,EAAwB,CACxB,QAASsvB,KAASu4S,EACdpjW,KAAK6lB,KAAKglC,EAAOu4S,EAAUv4S,IAE/B,OAAO7qD,KAGX,QAASmqC,EAAM,EAAGA,EAAMpkC,EAAQokC,IAAO,CACnC,MAAMi5T,EAAYunW,EAAWxgqB,GAE7B,IAAI65hB,EAAUutK,GAAqBh2sB,EAAWA,EAAS6nU,GAEvD,GAAI4gO,EAAS,CACT,GAAIstK,EAAK,CACL,MAAMl/qB,EAAW4xgB,EACjBA,EAAU,KACNhkkB,KAAKm0Y,OAAO/wC,EAAW4gO,GACvB5xgB,EAASz+B,MAAM3zB,KAAM+8B,YAEzBiniB,EAAQ5xgB,SAAWA,GAEVpyD,KAAKqxuB,QAAQjuY,GAAapjW,KAAKqxuB,QAAQjuY,IAAc,IAC3D39V,KAAKu+jB,IAIpB,OAAOhkkB,KAGXsxuB,IAAI3mC,EAAYpvqB,GACZ,OAAOv7B,KAAK6lB,KAAK8krB,EAAYpvqB,GAAU,GAG3Cr0B,MAAMk8V,EAAW7nU,GACb,MAAMovqB,EAAa5nlB,EAASqgP,GACtBmuY,EAAqBx3F,EAAWx+mB,GAEtC,QAAS4O,GAAM,EAAGpkC,EAAS4ksB,EAAW5ksB,OAAQokC,GAAMpkC,EAAQokC,KAAO,CAC/D,MAAMi5T,EAAYunW,EAAWxgqB,IAEvB65hB,EAAUutK,EAAqBh2sB,EAAWA,EAAS6nU,GAErD4gO,IACehkkB,KAAKqxuB,QAAQjuY,GAAapjW,KAAKqxuB,QAAQjuY,IAAc,IAC7DztG,QAAQquU,GAIvB,OAAOhkkB,KAGXiK,QAAQm5V,EAAWn6V,EAAI,IACnB,IAAI8vG,EAAS/4G,KAAKqxuB,QAAQjuY,GAE1B,GAAIrqP,EAAQ,CACR,MAAMhzG,EAASgzG,EAAOhzG,OAEtBkD,EAAE6vV,OAAS94V,KACXiJ,EAAEwprB,mBAAoB,EACtBxprB,EAAEi5C,eAAiBA,EACnBj5C,EAAE6tX,mBAAqBA,EAEvB/9Q,EAASA,EAAOnqG,QAEhB,QAASu7B,GAAM,EAAGA,GAAMpkC,EAAQokC,KAC5B4uE,EAAO5uE,IAAKvW,KAAK5zB,KAAMiJ,GAG3B,OAA+B,IAAxBA,EAAEwprB,kBAGb,OAAO,EAGXt+S,OAAO/wC,EAAW4gO,GACd,MAAMjrd,EAAS/4G,KAAKqxuB,QAAQjuY,GAE5B,QAAkBj+V,IAAdi+V,EACApjW,KAAKqxuB,QAAU,WACRt4nB,EACP,GAAIird,EACA,QAAS75hB,EAAM4uE,EAAOhzG,OAAS,EAAGokC,GAAO,EAAGA,KACpC4uE,EAAO5uE,KAAS65hB,GAAWjrd,EAAO5uE,GAAKioB,WAAa4xgB,IACpDjrd,EAAOj1F,OAAOqmB,EAAK,QAI3BnqC,KAAKqxuB,QAAQjuY,GAAa,GAIlC,OAAOpjW,0ECpGf,MAAM+4G,EAAS,CACX,QACA,aACA,aACA,YACA,UAuJJpvG,EApJA,gBAAsBgnD,EAClB7wD,YAAY4U,EAASqK,GACjBS,QAEAxf,KAAK+e,QAAUlZ,OAAOw0D,OAAO,GAAIt7C,GACjC/e,KAAK0U,QAAUA,EACf1U,KAAK0U,QAAQwgjB,mBAAqBl1jB,KAAKk3Y,aAAarxX,KAAK7lB,MAEzDA,KAAKqmJ,OAASrmJ,KAAKwxuB,SAAS,SAC5BxxuB,KAAKyxrB,YAAczxrB,KAAKwxuB,SAAS,cACjCxxuB,KAAK0xrB,YAAc1xrB,KAAKwxuB,SAAS,cACjCxxuB,KAAK4xrB,WAAa5xrB,KAAKwxuB,SAAS,aAEhCxxuB,KAAK+xrB,QAAU,IAAIvpiB,KAEnB25a,OAAYztjB,EAAS1U,KAAK+e,SAE1B/e,KAAK6lB,KAAKkzF,EAAQ/4G,KAAK+e,SAEvB/e,KAAK2kuB,kBAGTtolB,KAAK3nI,GACD1U,KAAK+xrB,QAAQvznB,SAAS/4D,KAAKiP,GAG/B4qC,QACIt/C,KAAK+xrB,QAAQvznB,SAAW,GAG5BinQ,UACIzlU,KAAK+xrB,QAAU,KACf/xrB,KAAK0U,QAAQwgjB,mBAAqB,KAClCl1jB,KAAKm0Y,SAGT1tV,YAAYx9C,GACR,IACImc,EADAqstB,GAAUz2F,OAAa/xoB,GAG3B,MAAQmc,GAAQqstB,IACZrstB,EAAOqstB,EAAQC,WACXD,IAAYzxuB,KAAK0U,UAIrB+8tB,EAAUA,EAAQxhW,cAGtB,GAAI7qX,EACA,OAAOA,EAAK4ngB,WAIpB91I,eACI,OAAOl3Y,KAAK+xrB,QAGhB8U,UACI,OAAO1kI,OAAYnikB,KAAK0U,SAG5BoyrB,YAAY93oB,GACR,IAAIA,EAGA,OAAOhvD,KAAKm5jB,MAFZn5jB,KAAKm5jB,MAAQnqgB,EAMrBs9E,QAAQt9E,MACJmzgB,KAAYnikB,KAAK0U,QAASs6C,GAE1BhvD,KAAK8msB,YAAY93oB,GACjBhvD,KAAKgyrB,UAGTp7S,OAAO2sI,GACH,MAAMv0d,EAAOhvD,KAAK6msB,UACZC,EAAc9msB,KAAK8msB,eAErBvjL,IAAUv0d,EAAKt4C,MAAQ,GAAKs4C,EAAKzkD,OAAS,MAAQu8rB,GAAe93oB,EAAKt4C,QAAUowrB,EAAYpwrB,OAASs4C,EAAKzkD,SAAWu8rB,EAAYv8rB,WACjIvK,KAAK8msB,YAAY93oB,GACjBhvD,KAAKgyrB,QAAQhjoB,EAAMu0d,GACnBvjhB,KAAKiK,QAAQ,SAAU+kD,IAI/BA,KAAKrrD,GACD,IAAKA,EACD,OAAO3D,KAAK6msB,UAGhB7msB,KAAKssI,QAAQ3oI,GAGjBsnsB,kBACIjrsB,KAAKiluB,oBAAqB,EAG9B95B,iBACInrsB,KAAKiluB,oBAAqB,EAG9BN,mBAEA3yC,WAEAw/C,SAASpuY,GACL,OAAQn6V,IACJ,MAAMmc,EAAOplB,KAAKymD,YAAYx9C,GAC1Bmc,IAASplB,KAAKiluB,oBACdjluB,KAAKiK,QAAQm5V,EAAW,CACpB1uV,QAAS0Q,EACTiwG,cAAepsH,EACfnB,KAAMs7V,KAMtBkwV,iBACI,MAAM5+qB,EAAU1U,KAAK0U,QACf8wI,GAAUmslB,OAAej9tB,IACvB06D,OAAM++C,UAAQm+a,KAAc53hB,GAEpC,MAAO,CACH06D,KAAMA,EAAOo2E,EAAQp2E,KACrB++C,IAAKA,EAAMq3B,EAAQr3B,KAI3Bi2mB,cAAcn7tB,GACV,MAAMmpB,EAASpyB,KAAKszrB,iBACd96mB,KAAQyikB,KAAiBhyoB,GACzBU,EAAI6uE,EAAM7uE,EAAIyoB,EAAOg9C,KACrBtb,GAAI0kB,EAAM1kB,EAAI1hC,EAAO+7F,IAErB49kB,GAAmBI,OAAanssB,KAAK0U,SAAS03rB,SAMpD,OALc,IAAIlynB,IACdvwE,EACAmqD,IACFzpD,UAAU0hsB,2HCzJL,WAAqB55qB,EAAGD,EAAGkyG,IACtC,OAAOjyG,EAAID,IAAKlH,OAAMmH,EAAGD,EAAGkyG,+DCWhC,MACMx8B,EAAM16F,KAAK06F,IACXgqoB,EAAY,CAAE,UAAW,UAAW,aAAc,WAAY,iBAEpE,iBAAkBC,OAAcd,IAAca,IAC1C9xuB,YAAYuvE,EAAS,IAAI6K,IAASn7D,GAAU,IACxCS,QAEAxf,KAAKuiH,UAAUlzC,GAEfrvE,KAAKq/oB,QAAUtgoB,GAAQsgoB,QACvBr/oB,KAAKs/oB,QAAUvgoB,GAAQugoB,SAAWvgoB,GAAQsgoB,QAC1Cr/oB,KAAK0yF,WAAa3zE,GAAQ2zE,WAC1B1yF,KAAK2yF,SAAW5zE,GAAQ4zE,SACxB3yF,KAAK8xuB,cAAgB/ytB,GAAQ+ytB,gBAAiB,EAC9C9xuB,KAAK+xuB,UAAYhztB,GAAQgztB,UAG7BvinB,QACI,OAAO,IAAIqmlB,EAAI71sB,KAAKqvE,OAAQ,CACxBgwkB,QAASr/oB,KAAKq/oB,QACdC,QAASt/oB,KAAKs/oB,QACd5sjB,WAAY1yF,KAAK0yF,WACjBC,SAAU3yF,KAAK2yF,SACfm/oB,cAAe9xuB,KAAK8xuB,gBAI5BvvnB,UAAU5+G,GACN,YAAKmtuB,eAAe,SAAU52pB,WAAav2E,IAC3C3D,KAAK+srB,iBACE/srB,KAGXqiH,YACI,OAAOriH,KAAKqvE,OAGhBmwkB,QAAQlujB,GACJ,MAAMjiB,GAASrvE,KAAKqvE,OACd2iqB,KAAS72F,KAAI7pjB,GAEnB,OAAO,IAAIpX,IACP7K,GAAO1lE,EAAI3J,KAAKq/oB,QAAUnyoB,KAAK65E,IAAIirpB,GACnC3iqB,GAAOvb,EAAI9zD,KAAKs/oB,QAAUpyoB,KAAKwkF,IAAIsgpB,IAI3Ct8B,cACI,MAAMhjnB,EAAa1yF,KAAK0yF,WAClBrhC,GAAMrxD,KAAK8xuB,eAAgB,EAAK,EAChCp8B,EAAc,CAAE11sB,KAAKw/oB,QAAQ9sjB,IAC7B1vD,EAAWhjC,KAAKiyuB,eAChB70E,EAAgBp6nB,EAAS2vD,SAAW3vD,EAAS0vD,WAC7Cw/oB,EAAoBhluB,KAAKqB,KAAK6upB,EAtDvB,IAuDP+0E,EAAmB/0E,EAAgB80E,EACzC,IACIE,GADA90C,EAAe5qmB,EAEf1yF,KAAK+xuB,YACLK,IAAiB/nuB,SAAYymH,OAAO9wH,KAAK+xuB,UAAW/xuB,KAAKqvE,SAG7D,QAAS1gE,GAAI,EAAGA,IAAKujuB,EAAmBvjuB,KAAK,CACzC,MAAM0juB,GAAY/0C,EAAejsoB,GAAM8grB,EACjCrypB,GAAS9/E,KAAKsyuB,qBAAqBh1C,EAAc+0C,GAAWD,IAElE18B,EAAYjwsB,KAAKq6E,GAAOyypB,IAAKzypB,GAAO0ypB,IAAK1ypB,GAAOkB,IAChDs8mB,EAAe+0C,GAGnB,OAAO38B,EAGXpljB,KAAKvrB,GACD,MAAM/hG,GAAWhjC,KAAKiyuB,eAChBv/oB,EAAa1vD,GAAS0vD,WACtBC,EAAW3vD,GAAS2vD,SACpB8/oB,GAAgBC,OAAqB1yuB,KAAKqvE,OAAQrvE,KAAKq/oB,QAASr/oB,KAAKs/oB,QAASv6gB,GAC9E4tmB,GAAW53F,OAAI03F,EAAc9ouB,GAC7BipuB,KAAW73F,KAAI03F,EAAc3+qB,GAC7B0ugB,EAAWxikB,KAAKw/oB,QAAQ7sjB,GAAUu1jB,cAAcnjhB,GACtD,IAAI8tmB,GAAgBC,EAAeH,EAAUjgpB,GACzCqgpB,GAAgBD,EAAeF,EAAUlgpB,GACzCsgpB,GAAehzuB,KAAKw/oB,QAAQ9sjB,GAAYw1jB,cAAcnjhB,GACtDk4iB,GAAW/imB,QAAU84pB,GAAcxwK,GACnC06G,GAAWhjmB,QAAU84pB,GAAcxwK,GAEvC,KAAOqwK,GAAgBlgpB,GAAYogpB,GAAgBpgpB,GAAU,CACzD,IAAIsgpB,GAMAC,GALAL,GAAgBlgpB,IAChBsgpB,GAAgBjzuB,KAAKw/oB,QAAQqzF,IAAe3qF,cAAcnjhB,GAC1D8tmB,IAAiB,IAIjBE,GAAgBpgpB,IAChBugpB,GAAgBlzuB,KAAKw/oB,QAAQuzF,IAAe7qF,cAAcnjhB,GAC1DgumB,IAAiB,IAGrBC,GAAe,IAAI94pB,IAAM+4pB,GAActpuB,EAAGupuB,GAAcp/qB,GACxDmpnB,GAAW/imB,QAAU+imB,GAAU+1D,IAC/B91D,GAAWhjmB,QAAUgjmB,GAAU81D,IAGnC,OAAOtzQ,eAAgBu9M,GAAUC,IAGrC+0D,eACI,IAAMv/oB,aAAYC,YAAUm/oB,iBAAkB9xuB,KAE9C,GAAI8xuB,EAAe,CACf,IAAIqB,EAAWzgpB,EACfA,EAAaC,GACbA,GAAWwgpB,EAGf,OAAIzgpB,EAAaC,IAAam/oB,GAAiBp/oB,IAAeC,MAC1DA,IAAY,KAGT,CACHD,WAAYA,EACZC,SAAUA,IAIlB2/oB,qBAAqB5/oB,EAAYC,GAAUy/oB,GACvC,MAAM39pB,EAAKz0E,KAAKw/oB,QAAQ9sjB,GAClB1R,EAAKhhF,KAAKw/oB,QAAQ7sjB,IAClBygpB,EAAepzuB,KAAKqzuB,cAAc3gpB,GAClC4gpB,EAAetzuB,KAAKqzuB,cAAc1gpB,IAClCvkD,MAAK+smB,KAAIxojB,KAAYwojB,OAAIzojB,IAAe,EACxC6/oB,GAAM,IAAIr4pB,IAAMzF,EAAG9qE,EAAIykC,EAAIglsB,EAAazpuB,EAAG8qE,EAAG3gB,EAAI1lB,EAAIglsB,EAAat/qB,GACnE0+qB,GAAM,IAAIt4pB,IAAM8G,EAAGr3E,EAAIykC,EAAIklsB,EAAa3puB,EAAGq3E,EAAGltB,EAAI1lB,EAAIklsB,EAAax/qB,GACzE,OAAIs+qB,IACA39pB,EAAGpqE,UAAU+nuB,GACbpxpB,EAAG32E,UAAU+nuB,GACbG,GAAIlouB,UAAU+nuB,GACdI,GAAInouB,UAAU+nuB,IAGX,CACH39pB,GAAIA,EACJ89pB,IAAKA,GACLC,IAAKA,GACLxxpB,GAAIA,GAIZqypB,cAAc/hpB,GACV,MAAM0gpB,MAAS72F,KAAI7pjB,GAEnB,OAAO,IAAIpX,KAAOl6E,KAAKq/oB,QAAUnyoB,KAAKwkF,IAAIsgpB,IAAShyuB,KAAKs/oB,QAAUpyoB,KAAK65E,IAAIirpB,KAG/EjhoB,cAAct4B,GACV,MAAMz1C,GAAWhjC,KAAKiyuB,eAChB70E,EAAgBp6nB,GAAS2vD,SAAW3vD,GAAS0vD,YAC3CrjB,SAAQgwkB,UAASC,WAAYt/oB,KAC/B0hF,EAAWrS,EAAOutkB,WAAWnkkB,GAC7B86pB,EAAWrmuB,KAAKqkF,MAAM9Y,EAAM3kB,EAAIub,EAAOvb,EAAG2kB,EAAM9uE,EAAI0lE,EAAO1lE,GAC3D6puB,GAAen0F,EAAUC,EAC3BpyoB,KAAKqnF,KAAKqT,EAAIy3iB,EAAS,GAAKz3iB,EAAI16F,KAAKwkF,IAAI6hpB,GAAW,GAAK3roB,EAAI03iB,EAAS,GAAK13iB,EAAI16F,KAAK65E,IAAIwspB,GAAW,IACjG90F,GAAaz+oB,KAAKw/oB,QAAQx/oB,KAAK0yF,YAAYoO,MAAM2yoB,KACjDjxK,GAAWxikB,KAAKw/oB,QAAQx/oB,KAAK2yF,UAAUmO,MAAM2yoB,KAC7C58pB,GClLC,WAA0BrC,EAAIC,EAAIuM,GAAIC,GACjD,MAAMyypB,EAAMj/pB,EAAG9qE,EAAI6qE,EAAG7qE,EAChBgquB,EAAM1ypB,EAAGt3E,EAAIq3E,GAAGr3E,EAChBiquB,EAAMn/pB,EAAG3gB,EAAI0gB,EAAG1gB,EAChB+/qB,EAAM5ypB,EAAGntB,EAAIktB,GAAGltB,EAChBggrB,EAAKt/pB,EAAG7qE,EAAIq3E,GAAGr3E,EACfoquB,GAAKv/pB,EAAG1gB,EAAIktB,GAAGltB,EACftoD,GAAIkouB,EAAMG,EAAMF,EAAMC,EACtB/suB,IAAK6suB,EAAMK,GAAKH,EAAME,GAAMtouB,GAC5B4iC,IAAKulsB,EAAMI,GAAKF,EAAMC,GAAMtouB,GAElC,GAAI3E,IAAK,GAAKA,IAAK,GAAKunC,IAAK,GAAKA,IAAK,EACnC,OAAO,IAAI8rC,IAAM1F,EAAG7qE,EAAIykC,GAAIslsB,EAAKl/pB,EAAG1gB,EAAI1lB,GAAIwlsB,GDsKvBI,CAAiB3kqB,EAAQoJ,EAAMqoB,MAAM2yoB,KAAYh1F,GAAYj8E,IAClF,IAAIzxd,GAEJ,GAAIqsjB,EAAgB,IAChBrsjB,GAAgBl6B,IAAgBo9pB,EAAY5kqB,EAAOutkB,WAAW/lkB,IAAe6K,IAAauypB,EAAYvypB,EAAU8xpB,QAC7G,CACH,IAAIlipB,GAAQ4ipB,EAAe7kqB,EAAO1lE,EAAG0lE,EAAOvb,EAAGurlB,EAASC,EAAS7mkB,EAAM9uE,EAAG8uE,EAAM3kB,GAClE,MAAVw9B,KACAA,IAAS,IAAMA,IAAS,KAG5B,IAAI6ipB,GAAenxsB,GAAS0vD,YAAcpB,IAASA,IAAStuD,GAAS2vD,SACrEoe,GAAiBojoB,IAAgBF,EAAYvypB,EAAU8xpB,MAAmBW,MAAkBt9pB,IAAgBA,GAAa5Y,OAAOwa,IAEpI,OAAOs4B,GAGX6kmB,UAAUn9nB,EAAO/hE,IACb,MAAMssB,EAAWhjC,KAAKiyuB,eAChB5iqB,EAASrvE,KAAKqvE,OACpB,IAAIiiB,EAAQ4ipB,EAAe7kqB,EAAO1lE,EAAG0lE,EAAOvb,EAAG9zD,KAAKq/oB,QAASr/oB,KAAKs/oB,QAAS7mkB,EAAM9uE,EAAG8uE,EAAM3kB,GAC1F,OAAc,MAAVw9B,IACAA,GAAS,IAAMA,GAAS,KAGPtuD,EAAS0vD,YAAcpB,GAASA,GAAStuD,EAAS2vD,UAEhD3yF,KAAKw/oB,QAAQlujB,GAAOsrjB,WAAWnkkB,IAAU/hE,qBAGlDsW,EAAOsd,GAAKslpB,EAAIC,EAAIukD,EAAUC,EAAOp4kB,GACnD,MAAMq4kB,EA8Bd,WAAgC/4e,GAC5B,IAAMpmL,KAAIN,MAAIY,KAAIonkB,KAAI+yC,KAAIC,KAAIukD,WAAUC,QAAOp4kB,YAAW,GAAMs/F,EAEhE,MAAMzwH,MAAUqwgB,KAAIl/e,IACd2giB,GAAS1vrB,KAAK65E,IAAI+jD,IAClB6xjB,GAAOzvrB,KAAKwkF,IAAIo5C,IAEhBypmB,GAAK33C,IAAUznnB,EAAKM,GAAM,EAAIknnB,IAAQ9nnB,GAAKgokB,GAAM,EACjD23F,IAAM73C,IAAQxnnB,EAAKM,GAAM,EAAImnnB,IAAU/nnB,GAAKgokB,GAAM,EAElD56jB,GAAOmypB,IAAaC,EAAQ,GAAI,EAEhCI,GAAMvnuB,KAAK06F,IAAI2soB,GAAI,GACnBG,GAAMxnuB,KAAK06F,IAAI4soB,GAAI,GACzB,IAAIG,GAAMznuB,KAAK06F,IAAIgolB,EAAI,GACnBglD,GAAM1nuB,KAAK06F,IAAIiolB,EAAI,GAEnB9/jB,GAAQ0knB,GAAME,GAAMD,GAAME,GAE1B7knB,GAAQ,IACRA,GAAQ7iH,KAAKqnF,KAAKkgpB,GAAME,GAAMD,GAAME,IACpChlD,GAAK7/jB,GACL4knB,GAAMznuB,KAAK06F,IAAIgolB,EAAI,GAEnBC,GAAK9/jB,GACL6knB,GAAM1nuB,KAAK06F,IAAIiolB,EAAI,IAGvB,IAAIglD,GAAS5ypB,GAAO/0E,KAAKqnF,MAAMogpB,GAAMC,GAAMD,GAAMD,GAAME,GAAMH,KAAQE,GAAMD,GAAME,GAAMH,KAEnFt9tB,MAAM09tB,MACNA,GAAS,GAGb,MAAMC,GAAMD,IAAUjlD,EAAK4kD,IAAM3kD,EAC3BklD,GAAkBllD,EAAK0kD,IAAfM,GAAqBjlD,EAE7BjzC,GAAKigD,GAASk4C,GAAMn4C,GAAOo4C,IAAO5/pB,EAAKM,GAAM,EAC7Cw6M,GAAK0sa,GAAOm4C,GAAMl4C,GAASm4C,IAAOlgqB,GAAKgokB,GAAM,EAG7Cm4F,IAAMT,GAAKO,IAAOllD,EAClBqlD,IAAMT,GAAKO,IAAOllD,EAClBqlD,KAAOX,GAAKO,IAAOllD,EACnBulD,KAAOX,GAAKO,IAAOllD,EAEnBn9lB,IAAcuipB,IAAM,EAAI,GAAI,IAAMl6F,OAAI7toB,KAAKkouB,KAAKJ,GAAK9nuB,KAAKqnF,KAAKygpB,GAAKA,GAAKC,GAAKA,MAE9EI,IAAcv0oB,QAAOk0oB,GAAKE,GAAKD,GAAKE,KAAOjouB,KAAKqnF,KAAKygpB,GAAKA,GAAKC,GAAKA,IAAM/nuB,KAAKqnF,KAAK2gpB,GAAKA,GAAKC,GAAKA,KAAM,IAC/G,IAAI7jpB,IAAS0jpB,GAAKG,GAAKF,GAAKC,IAAM,EAAI,GAAI,IAAMn6F,OAAI7toB,KAAKkouB,KAAKC,MAEzDhB,GAAS/ipB,GAAQ,IAClBA,IAAS,KAGT+ipB,GAAS/ipB,GAAQ,IACjBA,IAAS,KAEb,IAAIqB,GAAWD,GAAapB,GAC5B,MAAMgkpB,GAAe3ipB,IAAY,EAAI,GAAI,EACzCA,UAAYzlF,KAAKiN,IAAIw4E,IAAY,IAAO2ipB,GAEjC,CACHjmqB,OAAQ,IAAI6K,IAAMyikB,GAAI1sX,IACtBv9L,WAAYA,GACZC,SAAUA,GACV0sjB,QAASuwC,EACTtwC,QAASuwC,EACTkiD,UAAW91kB,IAlGWs5kB,CAAuB,CACzCpgqB,GAAInoD,EAAMrjB,EACVkrE,GAAI7nD,EAAM8mC,EACV2hB,GAAInrC,GAAI3gC,EACRkzoB,GAAIvymB,GAAIwpB,EACR87nB,GAAIA,EACJC,GAAIA,EACJukD,SAAUA,EACVC,MAAOA,EACPp4kB,SAAUA,IAGd,OAAO,IAAI45iB,EAAIy+B,EAAcjlqB,OAAQ,CACjCqjB,WAAY4hpB,EAAc5hpB,WAC1BC,SAAU2hpB,EAAc3hpB,SACxB0sjB,QAASi1F,EAAcj1F,QACvBC,QAASg1F,EAAch1F,QACvByyF,UAAWuC,EAAcvC,UACzBD,cAAyB,IAAVuC,KAK3B,WAAwB13F,EAAI1sX,EAAI2/Z,GAAIC,EAAIlmrB,EAAGmqD,GACvC,MAAMizB,GAAM+Z,QAAOn3F,EAAIgzoB,GAAMizC,GAAI,GAC3Bl+lB,GAAMoP,QAAOhtC,EAAIm8N,GAAM4/Z,EAAI,GAEjC,SAAO/ulB,MAAMi6iB,OAAI7toB,KAAKqkF,MAAMG,EAAK3K,KA2ErC,WAAwBuK,EAAOtkE,GAC3B,IAAI0lE,GAAapB,EAEjB,KAAOoB,GAAa1lE,GAChB0lE,IAAc,GAGlB,OAAOA,GAGX,QAAemjnB,wHE3Tf,MAAM2/B,EAAWtouB,KAAK45E,GAAK,EAE3B,iBAAqB+qpB,OAAcd,IAAc,CAAE,YAC/CjxuB,YAAYuvE,EAAS,IAAI6K,IAASuY,EAAS,GACvCjzE,QAEAxf,KAAKuiH,UAAUlzC,GACfrvE,KAAK6wH,UAAUp+B,GAGnB8vB,UAAU5+G,GACN,YAAKmtuB,eAAe,SAAU52pB,WAAav2E,IAC3C3D,KAAK+srB,iBACE/srB,KAGXqiH,YACI,OAAOriH,KAAKqvE,OAGhBpR,OAAOoB,GACH,OAAOA,GACAA,EAAMgQ,OAAOpR,OAAOj+D,KAAKqvE,SACzBhQ,EAAMozB,SAAWzyF,KAAKyyF,OAGjC+8B,QACI,OAAO,IAAIL,EAAOnvH,KAAKqvE,OAAOmgD,QAASxvH,KAAKyyF,QAGhD+sjB,QAAQlujB,GACJ,OAAOtxF,KAAKy1uB,YAASt6F,KAAI7pjB,IAG7Bg/D,KAAKvrB,GACD,MAAM0tmB,KAAgBC,KAAqB1yuB,KAAKqvE,OAAQrvE,KAAKyyF,OAAQzyF,KAAKyyF,OAAQsyC,GAClF,IAAIk4iB,EAAW/imB,eACXgjmB,EAAWhjmB,eAEf,QAASvrE,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIskuB,EAAgBjzuB,KAAKy1uB,SAAShD,EAAc9ouB,EAAIgF,EAAI6muB,GAAUttF,cAAcnjhB,GAC5EmumB,EAAgBlzuB,KAAKy1uB,SAAShD,EAAc3+qB,EAAInlD,EAAI6muB,GAAUttF,cAAcnjhB,GAC5EiumB,EAAe,IAAI94pB,IAAM+4pB,EAActpuB,EAAGupuB,EAAcp/qB,GAE5DmpnB,EAAW/imB,QAAU+imB,EAAU+1D,GAC/B91D,EAAWhjmB,QAAUgjmB,EAAU81D,GAGnC,OAAOtzQ,eAAgBu9M,EAAUC,GAGrCu4D,SAASnkpB,GACL,MAAQjiB,SAAQojB,UAAWzyF,KAE3B,OAAO,IAAIk6E,IACP7K,EAAO1lE,EAAI8oF,EAASvlF,KAAK65E,IAAIuK,GAC7BjiB,EAAOvb,EAAI2+B,EAASvlF,KAAKwkF,IAAIJ,IAIrCyf,cAAct4B,GACV,MAAQpJ,SAAQojB,UAAWzyF,KAG3B,OAFiBkN,KAAK06F,IAAInvB,EAAM9uE,EAAI0lE,EAAO1lE,EAAG,GAC1CuD,KAAK06F,IAAInvB,EAAM3kB,EAAIub,EAAOvb,EAAG,IAAM5mD,KAAK06F,IAAInV,EAAQ,GAI5DmjnB,UAAUn9nB,EAAO/hE,GACb,MAAQ24D,SAAQojB,UAAWzyF,KACrB2wqB,EAAgBthmB,EAAOutkB,WAAWnkkB,GAExC,OAAOga,EAAS/7E,GAASi6pB,GAAiBA,GAAiBl+kB,EAAS/7E,GAI5E,QAAey4G,kDCnFf,MAAMsknB,EAAY,6ECIH,WAAethtB,EAAGD,EAAGkyG,EAAYqvmB,KAC5C,OAA6C,OAAtC3yoB,KAAM5zF,KAAKiN,IAAIgY,EAAID,GAAIkyG,mCCLnB,WAA8B/0D,EAAQugnB,EAAIC,EAAI9qjB,GACzD,IAAI4tmB,EAAW,EACXC,EAAW,EAEf,OAAI7tmB,IACA4tmB,EAAWzluB,KAAKqkF,MAAMwzC,EAAO9kH,EAAI4vqB,EAAI9qjB,EAAO5yG,EAAIy9pB,GAC/B,IAAb7qjB,EAAO7yG,IACP0gtB,EAAW1luB,KAAKqkF,MAAMwzC,EAAOv5H,EAAIqkrB,EAAI9qjB,EAAO7yG,EAAI09pB,KAIjD,CACHjmrB,EAAGgpuB,EACH7+qB,EAAG8+qB,mDCbI,WAAgCzgtB,EAAGD,EAAGumD,GACjD,IAAIuC,EACJ,GAAI7oD,EAAExoB,IAAMuoB,EAAEvoB,EAAG,CACb,MAAMmuF,EAAO5qF,KAAKulC,IAAItgB,EAAExoB,EAAGuoB,EAAEvoB,GACvBouF,EAAO7qF,KAAKsB,IAAI2jB,EAAExoB,EAAGuoB,EAAEvoB,GACvB+ruB,EAAOxouB,KAAKulC,IAAItgB,EAAE2hC,EAAG5hC,EAAE4hC,GACvB6hrB,EAAOzouB,KAAKsB,IAAI2jB,EAAE2hC,EAAG5hC,EAAE4hC,GACvB+jY,EAAU//V,GAAQrf,EAAM9uE,GAAK8uE,EAAM9uE,EAAIouF,EAGzC/c,EADA06pB,IAASC,EACIl9pB,EAAM3kB,GAAK4hrB,GAAQ79S,EAEnBA,IAAc89S,EAAOD,KAAUvjtB,EAAExoB,EAAIuoB,EAAEvoB,IAAMwoB,EAAE2hC,EAAI5hC,EAAE4hC,GAAK,EAAI2kB,EAAM9uE,EAAImuF,EAAOC,EAAOtf,EAAM9uE,IAAOouF,EAAOD,GAAQ49oB,EAAOj9pB,EAAM3kB,GAAM,EAI1J,OAAOknB,EAAa,EAAI,mHCX5B,gBAAqBuhkB,IAEjBz8oB,YAAYqyB,EAAI,EAAGD,EAAI,EAAGjS,EAAI,EAAGzU,EAAI,EAAGvC,EAAI,EAAGrD,EAAI,GAC/C4Z,QAEAxf,KAAKmyB,EAAIA,EACTnyB,KAAKkyB,EAAIA,EACTlyB,KAAKigB,EAAIA,EACTjgB,KAAKwL,EAAIA,EACTxL,KAAKiJ,EAAIA,EACTjJ,KAAK4F,EAAIA,EAGbsmsB,aAAannkB,GACT,OAAO,IAAI22gB,EACP17oB,KAAKmyB,EAAI4yG,EAAO5yG,EAAInyB,KAAKigB,EAAI8kH,EAAO7yG,EACpClyB,KAAKkyB,EAAI6yG,EAAO5yG,EAAInyB,KAAKwL,EAAIu5H,EAAO7yG,EACpClyB,KAAKmyB,EAAI4yG,EAAO9kH,EAAIjgB,KAAKigB,EAAI8kH,EAAOv5H,EACpCxL,KAAKkyB,EAAI6yG,EAAO9kH,EAAIjgB,KAAKwL,EAAIu5H,EAAOv5H,EACpCxL,KAAKmyB,EAAI4yG,EAAO97H,EAAIjJ,KAAKigB,EAAI8kH,EAAOn/H,EAAI5F,KAAKiJ,EAC7CjJ,KAAKkyB,EAAI6yG,EAAO97H,EAAIjJ,KAAKwL,EAAIu5H,EAAOn/H,EAAI5F,KAAK4F,GAIrDwmsB,SACI,MAAQj6qB,IAAGD,IAAGjS,EAAGzU,EAAGA,EAAGvC,EAAGA,EAAGumD,EAAG5pD,EAAG6xN,GAAMz3N,KACnCmmI,EAAMh0G,EAAIlpB,EAAIipB,EAAI1mB,EAExB,OAAY,IAAR26H,EACO,KAGJ,IAAIu1gB,EAAOzyoB,EAAIk9H,GAAMj0G,EAAIi0G,GAAM36H,EAAI26H,EAAKh0G,EAAIg0G,GAChC36H,EAAIisN,EAAIxuN,EAAIumD,GAAK22E,GAAMj0G,EAAIs9B,EAAIr9B,EAAIslM,GAAKtxF,GAG/D3W,QACI,OAAO,IAAIkshB,EAAO17oB,KAAKmyB,EAAGnyB,KAAKkyB,EAAGlyB,KAAKigB,EAAGjgB,KAAKwL,EAAGxL,KAAKiJ,EAAGjJ,KAAK4F,GAGnEq4D,OAAOoB,GACH,QAAKA,GAIEr/D,KAAKmyB,IAAMktC,EAAMltC,GAAKnyB,KAAKkyB,IAAMmtC,EAAMntC,GACvClyB,KAAKigB,IAAMo/C,EAAMp/C,GAAKjgB,KAAKwL,IAAM6zD,EAAM7zD,GACvCxL,KAAKiJ,IAAMo2D,EAAMp2D,GAAKjJ,KAAK4F,IAAMy5D,EAAMz5D,EAGlDk7F,MAAMikJ,GACF,YAAK5yN,KAAI2uE,KAAM9gG,KAAKmyB,EAAG4yN,GACvB/kP,KAAKkyB,GAAI4uE,OAAM9gG,KAAKkyB,EAAG6yN,GACvB/kP,KAAKigB,GAAI6gF,OAAM9gG,KAAKigB,EAAG8kO,GACvB/kP,KAAKwL,KAAIs1F,KAAM9gG,KAAKwL,EAAGu5O,GACvB/kP,KAAKiJ,GAAI63F,OAAM9gG,KAAKiJ,EAAG87O,GACvB/kP,KAAK4F,GAAIk7F,OAAM9gG,KAAK4F,EAAGm/O,GAEhB/kP,KAGXwuF,QAAQu2J,GACJ,MAAMxyO,EAAS,CAAEvS,KAAKmyB,EAAGnyB,KAAKkyB,EAAGlyB,KAAKigB,EAAGjgB,KAAKwL,EAAGxL,KAAKiJ,EAAGjJ,KAAK4F,GAE9D,MAAIglmB,KAAQ7lX,GACR,QAASp2O,EAAI,EAAGA,EAAI4D,EAAOxM,OAAQ4I,IAC/B4D,EAAO5D,IAAKmyF,OAAMvuF,EAAO5D,GAAIo2O,GAIrC,OAAOxyO,EAGXxH,SAASg6O,EAAWmjH,EAAY,KAC5B,OAAOloW,KAAKwuF,QAAQu2J,GAAWt9N,KAAKygV,oBAGvBv+V,EAAGmqD,GAChB,OAAO,IAAI4nlB,EAAO,EAAG,EAAG,EAAG,EAAG/xoB,EAAGmqD,iBAIjC,OAAO,IAAI4nlB,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,iBAGvBpqjB,EAAO3nF,EAAGmqD,GACpB,MAAMixE,EAAS,IAAI22gB,EACnB32gB,SAAO5yG,EAAIjlB,KAAK65E,KAAIo0jB,OAAI7pjB,IACxByzC,EAAO7yG,EAAIhlB,KAAKwkF,KAAIypjB,OAAI7pjB,IACxByzC,EAAO9kH,GAAK8kH,EAAO7yG,EACnB6yG,EAAOv5H,EAAIu5H,EAAO5yG,EAClB4yG,EAAO97H,EAAKU,EAAIA,EAAIo7H,EAAO5yG,EAAI2hC,EAAIixE,EAAO7yG,GAAM,EAChD6yG,EAAOn/H,EAAKkuD,EAAIA,EAAIixE,EAAO5yG,EAAIxoB,EAAIo7H,EAAO7yG,GAAM,EAEzC6yG,eAGEk1jB,EAAQC,GACjB,OAAO,IAAIx+C,EAAOu+C,EAAQ,EAAG,EAAGC,EAAQ,EAAG,IAInDx+C,EAAOk6F,SAAWl6F,EAAOj3mB,OAEzB,QAAei3mB,mICtGf,mBAAoBm2F,KAAcd,IAAc,CAAE,IAAK,OACnDjxuB,YAAY6J,EAAGmqD,GACXt0C,QAEAxf,KAAK2J,EAAIA,GAAK,EACd3J,KAAK8zD,EAAIA,GAAK,EAGlBmK,OAAOoB,GACH,OAAOA,GAASA,EAAM11D,IAAM3J,KAAK2J,GAAK01D,EAAMvL,IAAM9zD,KAAK8zD,EAG3D07D,QACI,OAAO,IAAIt1C,EAAMl6E,KAAK2J,EAAG3J,KAAK8zD,GAGlCg9D,OAAOx/B,EAAOjtD,GACV,MAAMwxsB,EAAc37pB,EAAMlY,OAAO39B,IAAW61C,EAAM8qlB,KAElD,OAAOhlqB,KAAKqK,UAAUqxoB,WAAcpqjB,EAAOukpB,EAAYlsuB,EAAGksuB,EAAY/hrB,IAG1Etb,UAAU7uC,EAAGmqD,GACT,YAAKnqD,GAAKA,EACV3J,KAAK8zD,GAAKA,EAEV9zD,KAAK+srB,iBAEE/srB,KAGX81uB,cAAcr9pB,GACV,OAAOz4E,KAAKw4C,UAAUigC,EAAM9uE,EAAG8uE,EAAM3kB,GAGzCwhE,KAAK3rH,EAAGmqD,GACJ,YAAKnqD,EAAI3J,KAAK8zD,EAAI,EACX9zD,KAAKw4C,UAAU7uC,EAAGmqD,GAG7B4sC,MAAMu5lB,EAAQC,EAASD,GACnB,YAAKtwrB,GAAKswrB,EACVj6rB,KAAK8zD,GAAKomoB,EAEVl6rB,KAAK+srB,iBAEE/srB,KAGX+1uB,UAAU97C,EAAQC,GACd,OAAOl6rB,KAAKwvH,QAAQ9uB,MAAMu5lB,EAAQC,GAGtC7vrB,UAAU+nuB,GACN,MAAMrtmB,GAASixmB,OAAS5D,IAChBzouB,IAAGmqD,KAAM9zD,KAEjB,YAAK2J,EAAIo7H,EAAO5yG,EAAIxoB,EAAIo7H,EAAO9kH,EAAI6zC,EAAIixE,EAAO97H,EAC9CjJ,KAAK8zD,EAAIixE,EAAO7yG,EAAIvoB,EAAIo7H,EAAOv5H,EAAIsoD,EAAIixE,EAAOn/H,EAE9C5F,KAAK+srB,iBAEE/srB,KAGXkopB,cAAckqF,GACV,MAAM35pB,EAAQz4E,KAAKwvH,QAEnB,OAAI4inB,GACA35pB,EAAMpuE,UAAU+nuB,GAGb35pB,EAGXmkkB,WAAWnkkB,GACP,MAAM2b,EAAKp0F,KAAK2J,EAAI8uE,EAAM9uE,EACpB0qF,EAAKr0F,KAAK8zD,EAAI2kB,EAAM3kB,EAE1B,OAAO5mD,KAAKqnF,KAAKH,EAAKA,EAAKC,EAAKA,GAGpCyM,MAAMwuD,GACF,YAAK3lJ,GAAIm3F,OAAM9gG,KAAK2J,EAAG2lJ,GACvBtvJ,KAAK8zD,KAAIgtC,KAAM9gG,KAAK8zD,EAAGw7F,GAEvBtvJ,KAAK+srB,iBAEE/srB,KAGXwuF,QAAQ8gE,GACJ,MAAM2mlB,KAAUrrI,KAAQt7c,GAIxB,MAAO,CAHG2mlB,GAAUn1oB,OAAM9gG,KAAK2J,EAAG2lJ,GAAUtvJ,KAAK2J,EACvCssuB,GAAUn1oB,OAAM9gG,KAAK8zD,EAAGw7F,GAAUtvJ,KAAK8zD,GAKrD/oD,SAASukJ,EAAQ44M,EAAY,KACzB,IAAMv+V,IAAGmqD,KAAM9zD,KAEf,SAAI4qmB,KAAQt7c,KACR3lJ,GAAIm3F,OAAMn3F,EAAG2lJ,GACbx7F,GAAIgtC,OAAMhtC,EAAGw7F,IAGV3lJ,EAAIu+V,EAAYp0S,gBAGboirB,EAAMC,GAChB,MAAIvrI,KAAQsrI,GACR,OAAIA,aAAgBh8pB,EACTg8pB,EACqB,IAArBn5sB,UAAUh3B,QAAgC,IAAhBmwuB,EAAKnwuB,OAC/B,IAAIm0E,EAAMg8pB,EAAK,GAAIA,EAAK,IAG5B,IAAIh8pB,EAAMg8pB,EAAMC,gBAK3B,IAAIr+oB,EAAOs+oB,KACPV,EAAOU,KAEX,QAASznuB,EAAI,EAAGA,EAAIouB,UAAUh3B,OAAQ4I,IAAK,CACvC,IAAI8pE,EAAQ17C,UAAUpuB,GACtBmpF,EAAO5qF,KAAKulC,IAAIgmC,EAAM9uE,EAAGmuF,GACzB49oB,EAAOxouB,KAAKulC,IAAIgmC,EAAM3kB,EAAG4hrB,GAG7B,OAAO,IAAIx7pB,EAAM4d,EAAM49oB,gBAIvB,IAAI39oB,EAAOs+oB,KACPV,EAAOU,KAEX,QAAS1nuB,EAAI,EAAGA,EAAIouB,UAAUh3B,OAAQ4I,IAAK,CACvC,MAAM8pE,EAAQ17C,UAAUpuB,GACxBopF,EAAO7qF,KAAKsB,IAAIiqE,EAAM9uE,EAAGouF,GACzB49oB,EAAOzouB,KAAKsB,IAAIiqE,EAAM3kB,EAAG6hrB,GAG7B,OAAO,IAAIz7pB,EAAM6d,EAAM49oB,qBAIvB,OAAO,IAAIz7pB,EAAMm8pB,KAASA,wBAI1B,OAAO,IAAIn8pB,EAAMk8pB,KAASA,MAGnBpxE,kBACP,OAAO,IAAI9qlB,EAAM,EAAG,IAI5B,QAAeA,uFCpKf,gBAAmB62pB,IACfjxuB,YAAYukC,EAAS,IAAI61C,IAASlrB,EAAO,IAAIC,IAAQ0goB,EAAe,GAChEnwqB,QAEAxf,KAAKs3sB,UAAUjzqB,GACfrkC,KAAKssI,QAAQt9E,GACbhvD,KAAKojpB,gBAAgBusC,GAGzBngkB,QACI,OAAO,IAAIkwW,EACP1/d,KAAKqkC,OAAOmrF,QACZxvH,KAAKgvD,KAAKwgE,SAIlBvxD,OAAOoB,GACH,OAAOA,GACAA,EAAMh7B,OAAO45B,OAAOj+D,KAAKqkC,SACzBg7B,EAAMrQ,KAAKiP,OAAOj+D,KAAKgvD,MAGlCsopB,UAAU3zsB,GACN,YAAKmtuB,eAAe,SAAU52pB,WAAav2E,IAC3C3D,KAAK+srB,iBACE/srB,KAGXq3sB,YACI,OAAOr3sB,KAAKqkC,OAGhB++mB,gBAAgB3wjB,GACZ,YAAKk9lB,aAAerhrB,MAAMqxB,QAAQ8yD,GAAUA,EAAS,CAAEA,EAAQA,GAE/DzyF,KAAK+srB,iBACE/srB,KAGXs2uB,kBACI,OAAOt2uB,KAAK2vrB,aAGhBrjjB,QAAQ3oI,GACJ,YAAKmtuB,eAAe,OAAQ7hrB,WAAYtrD,IACxC3D,KAAK+srB,iBACE/srB,KAGX6msB,UACI,OAAO7msB,KAAKgvD,KAGhBt4C,QACI,OAAO1W,KAAKgvD,KAAKt4C,MAGrBnM,SACI,OAAOvK,KAAKgvD,KAAKzkD,OAGrB+zf,UACI,OAAOt+f,KAAKqkC,OAAOmrF,QAGvB+uY,cACI,OAAOv+f,KAAKqkC,OAAOmrF,QAAQh3E,UAAUx4C,KAAK0W,QAAS1W,KAAKuK,UAG5D0lhB,WACI,OAAOjwhB,KAAKqkC,OAAOmrF,QAAQh3E,UAAUx4C,KAAK0W,QAAS,GAGvDw5gB,aACI,OAAOlwhB,KAAKqkC,OAAOmrF,QAAQh3E,UAAU,EAAGx4C,KAAKuK,UAGjD8kE,SACI,OAAOrvE,KAAKqkC,OAAOmrF,QAAQh3E,UAAUx4C,KAAK0W,QAAU,EAAG1W,KAAKuK,SAAW,GAG3E+lJ,KAAKvrB,GACD,MAAM0rO,EAAKzwW,KAAKs+f,UAAU4pJ,cAAcnjhB,GAClC+sD,EAAK9xL,KAAKiwhB,WAAWi4H,cAAcnjhB,GACnCnvH,EAAK5V,KAAKu+f,cAAc2pJ,cAAcnjhB,GACtCtvH,EAAKzV,KAAKkwhB,aAAag4H,cAAcnjhB,GAE3C,OAAO26V,EAAKumN,WAAWx1U,EAAI3+K,EAAIl8K,EAAIH,GAGvCyyoB,cAAcrrnB,GACV,OAAO6ic,EAAKumN,WACRjmrB,KAAKs+f,UAAUj0f,UAAUwyB,GACzB78B,KAAKu+f,cAAcl0f,UAAUwyB,IAIrCytX,OAAO3gZ,EAAGmqD,EAAInqD,GAEV,YAAKqlD,KAAKt4C,OAAS,EAAI/M,EACvB3J,KAAKgvD,KAAKzkD,QAAU,EAAIupD,EAExB9zD,KAAKqkC,OAAOmU,WAAW7uC,GAAImqD,GAEpB9zD,KAGXu2uB,WAAW5suB,EAAGmqD,GACV,OAAO9zD,KAAKwvH,QAAQ86R,OAAO3gZ,EAAGmqD,GAGlCi9C,cAAct4B,GACV,MAAMp0C,EAASrkC,KAAKqkC,OACdk6d,EAAcv+f,KAAKu+f,cACzB,QAAS9lb,EAAM9uE,EAAI06B,EAAO16B,GAAK8uE,EAAM3kB,EAAIzvB,EAAOyvB,GAAKyqc,EAAY50f,EAAI8uE,EAAM9uE,GAAK40f,EAAYzqc,EAAI2kB,EAAM3kB,GAG1G8hpB,UAAUn9nB,EAAO/hE,GACb,MAAM8/tB,EAAYx2uB,KAAKu2uB,WAAW7/tB,EAAOA,GACnC+/tB,EAAYz2uB,KAAKu2uB,YAAY7/tB,GAAQA,GAE3C,OAAO8/tB,EAAUzloB,cAAct4B,KAAWg+pB,EAAU1loB,cAAct4B,uBAIlE,MAAM6lb,EAAUpkb,cAAgB,KAAMn9C,WAChCwhe,EAAcrkb,cAAgB,KAAMn9C,WACpCiyB,EAAO,IAAIC,IACbsvc,EAAY50f,EAAI20f,EAAQ30f,EACxB40f,EAAYzqc,EAAIwqc,EAAQxqc,GAG5B,OAAO,IAAI4ra,EAAK4+B,EAAStvc,gBAGhB78B,EAAGD,GACZ,OAAOwtc,EAAKumN,WACR/rmB,QAAU/nD,EAAEmse,UAAWpse,EAAEose,WACzBpkb,QAAU/nD,EAAEose,cAAerse,EAAEqse,iCAIpBpse,EAAGD,GAChB,MAAMwktB,EAAQ,CACVtnqB,KAAMj9C,EAAEmse,UAAU30f,EAClBwkH,IAAKh8F,EAAEmse,UAAUxqc,EACjBwb,MAAOn9C,EAAEose,cAAc50f,EACvB+/T,OAAQv3S,EAAEose,cAAczqc,GAGtB6irB,EAAQ,CACVvnqB,KAAMl9C,EAAEose,UAAU30f,EAClBwkH,IAAKj8F,EAAEose,UAAUxqc,EACjBwb,MAAOp9C,EAAEqse,cAAc50f,EACvB+/T,OAAQx3S,EAAEqse,cAAczqc,GAG5B,GAAI4irB,EAAMtnqB,MAAQunqB,EAAMrnqB,OACpBqnqB,EAAMvnqB,MAAQsnqB,EAAMpnqB,OACpBonqB,EAAMvonB,KAAOwonB,EAAMjta,QACnBita,EAAMxonB,KAAOuonB,EAAMhta,OACnB,OAAOg2J,EAAKumN,WACR,IAAI/rmB,IAAMhtE,KAAKsB,IAAIkouB,EAAMtnqB,KAAMunqB,EAAMvnqB,MAAOliE,KAAKsB,IAAIkouB,EAAMvonB,IAAKwonB,EAAMxonB,MACtE,IAAIj0C,IAAMhtE,KAAKulC,IAAIiksB,EAAMpnqB,MAAOqnqB,EAAMrnqB,OAAQpiE,KAAKulC,IAAIiksB,EAAMhta,OAAQita,EAAMjta,WAM3F,QAAeg2J,wHC1KA,WAAyB8iG,EAAU4+F,EAAc3olB,GAC5D,MAAM6Y,GAAQypjB,OAAI7toB,KAAKqkF,MAAM6vkB,EAAattmB,EAAI0ugB,EAAS1ugB,EAAGstmB,EAAaz3pB,EAAI64jB,EAAS74jB,IAGpF,OAAOituB,EAFoB1uF,iBAAc79oB,OAAYymH,QAAQx/B,EAAOkxe,IAEhD74jB,EAAI64jB,EAAS74jB,ECPtB,WAA0BykC,EAAGyc,EAAOi1B,GAC/C,MAAMohlB,EAAK,EAAI9ynB,EACf,OAAOlhC,KAAK06F,IAAIs5jB,EAAI,GAAKphlB,EAAO,GAAGj1B,GAC/B,EAAI39C,KAAK06F,IAAIs5jB,EAAI,GAAK9ynB,EAAI0xC,EAAO,GAAGj1B,GACpC,EAAI39C,KAAK06F,IAAIx5D,EAAG,GAAK8ynB,EAAKphlB,EAAO,GAAGj1B,GACpC39C,KAAK06F,IAAIx5D,EAAG,GAAK0xC,EAAO,GAAGj1B,GCLpB,WAA2Bi1B,EAAQj1B,GAC9C,MAAO,CAAsB,EAAIi1B,EAAO,GAAGj1B,GAAjCi1B,EAAO,GAAGj1B,GAAgC,EAAIi1B,EAAO,GAAGj1B,GAASi1B,EAAO,GAAGj1B,GACjF,GAAKi1B,EAAO,GAAGj1B,GAAS,EAAIi1B,EAAO,GAAGj1B,GAASi1B,EAAO,GAAGj1B,IACzD,IAAMi1B,EAAO,GAAGj1B,GAASi1B,EAAO,GAAGj1B,IACnCi1B,EAAO,GAAGj1B,yCCAlB,gBAA4B0xlB,IAExBz8oB,YAAY+2uB,EAAO,EAAG78rB,EAAM,GACxBx6B,QAEAxf,KAAK62uB,KAAOA,EACZ72uB,KAAKg6C,IAAMA,EAGfwO,IAAIsurB,GACA,OAAO,IAAIC,GAAcj2oB,OAAM9gG,KAAK62uB,KAAOC,EAAQD,KAAMpD,QAAY3yoB,KAAM9gG,KAAKg6C,IAAM88rB,EAAQ98rB,IAAKy5rB,MAGvGuD,YAAYrzuB,GACR,OAAO,IAAIozuB,EAAc/2uB,KAAK62uB,KAAOlzuB,EAAO3D,KAAKg6C,KAGrDi9rB,SACI,OAAO,IAAIF,GAAe/2uB,KAAK62uB,MAAO72uB,KAAKg6C,KAG/CqlhB,SAASy3K,GACL,OAAO,IAAIC,EAAc/2uB,KAAK62uB,KAAOC,EAAQD,KAAO72uB,KAAKg6C,IAAM88rB,EAAQ98rB,IACnEh6C,KAAK62uB,KAAOC,EAAQ98rB,IAAMh6C,KAAKg6C,IAAM88rB,EAAQD,MAGrDK,iBAAiBvzuB,GACb,OAAO,IAAIozuB,EAAc/2uB,KAAK62uB,KAAOlzuB,EAAO3D,KAAKg6C,IAAMr2C,GAG3DwzuB,QAAQrpuB,GACJ,MAAMqtoB,EAAMjuoB,KAAKqkF,MAAMvxF,KAAKg6C,IAAKh6C,KAAK62uB,MAChChmrB,EAAI3jD,KAAKqnF,KAAKrnF,KAAK06F,IAAI5nG,KAAKg6C,IAAK,GAAK9sC,KAAK06F,IAAI5nG,KAAK62uB,KAAM,IAC1DO,GAAOlquB,KAAK06F,IAAI/2C,EAAG,EAAI/iD,GAE7B,OAAO,IAAIipuB,EAAcK,GAAOlquB,KAAK65E,IAAIo0jB,EAAMrtoB,GAAIspuB,GAAOlquB,KAAKwkF,IAAIypjB,EAAMrtoB,IAG7EmwD,OAAO64qB,GACH,OAAO92uB,KAAK62uB,OAASC,EAAQD,MAAQ72uB,KAAKg6C,MAAQ88rB,EAAQ98rB,IAG9Dq9rB,SACI,OAAoB,IAAbr3uB,KAAKg6C,KAIpB,QAAe+8rB,EC/Cf,WAAoBptuB,GAChB,OAAOA,EAAI,GAAI,EAAK,EAYT,WAA4BwoB,EAAGD,EAAGjS,EAAGzU,GAChD,GAAU,IAAN2mB,EACA,OAXR,WAAgCA,EAAGD,EAAGjS,GAClC,MAAMq3tB,EAAapquB,KAAKqnF,KAAKrnF,KAAK06F,IAAI11E,EAAG,GAAK,EAAIC,EAAIlS,GACtD,MAAO,GACDiS,EAAIoltB,IAAe,EAAInltB,KACvBD,EAAIoltB,IAAe,EAAInltB,IAOlBoltB,CAAuBrltB,EAAGjS,EAAGzU,GAGxC,MAAMi5D,IAAK,EAAItyC,EAAIlS,EAAI/S,KAAK06F,IAAI11E,EAAG,KAAO,EAAIhlB,KAAK06F,IAAIz1E,EAAG,IACpD3f,IAAK,EAAItF,KAAK06F,IAAI11E,EAAG,GAAK,EAAIC,EAAID,EAAIjS,EAAI,GAAK/S,KAAK06F,IAAIz1E,EAAG,GAAK3mB,IAAM,GAAK0B,KAAK06F,IAAIz1E,EAAG,IACvF8vS,GAAI/0T,KAAK06F,IAAInjC,GAAI,EAAG,GAAKv3D,KAAK06F,IAAIp1F,GAAI,EAAG,GACzC7D,GAAI,IAAIoouB,EAAc,EAAE,GACxBS,IAAOtltB,GAAK,EAAIC,GACtB,IAAIgjD,GAAIM,GAAIZ,GAAIgokB,GAAI46F,GAAIC,GAAIC,GAExB11a,GAAI,GACJ9sP,GAAK,IAAI4hqB,GAAevkuB,GAAI,EAAGtF,KAAKqnF,MAAM0tO,KAAIk1a,QAAQ,GACtD1hqB,GAAK,IAAIshqB,GAAevkuB,GAAI,GAAKtF,KAAKqnF,MAAM0tO,KAAIk1a,QAAQ,KAExDhiqB,IAAM3iE,GAAI,EAAItF,KAAKqnF,KAAK0tO,IACxB9sP,GAAK,IAAI4hqB,EAAcj2E,EAAW3rlB,IAAMjoE,KAAK06F,IAAI16F,KAAKiN,IAAIg7D,IAAK,EAAI,IACnEM,IAAMjjE,GAAI,EAAItF,KAAKqnF,KAAK0tO,IACxBxsP,GAAK,IAAIshqB,EAAcj2E,EAAWrrlB,IAAMvoE,KAAK06F,IAAI16F,KAAKiN,IAAIs7D,IAAK,EAAI,KAGvEZ,GAAKM,GAAG3sB,IAAIitB,IAEZiiqB,GAAKviqB,GAAG3sB,IAAIitB,IAAIyhqB,kBAAiB,IACjCS,GAAKxiqB,GAAG3sB,IAAIitB,GAAGwhqB,UAAUC,iBAAiBhquB,KAAKqnF,KAAK,GAAK,GAEzDsojB,GAAK66F,GAAGlvrB,IAAI75C,GAAE0wjB,SAASs4K,KACvBF,GAAKC,GAAGlvrB,IAAI75C,GAAEsouB,SAAS53K,SAASs4K,KAEhC,MAAMpluB,GAAS,GAEf,OAAIsiE,GAAGwiqB,UACH9kuB,GAAO9M,MAAKq7F,OAAMjsB,GAAGgiqB,KAAOW,GAAK/D,MAEjC52F,GAAGw6F,UACH9kuB,GAAO9M,QAAKq7F,KAAM+7iB,GAAGg6F,KAAOW,GAAK/D,MAEjCgE,GAAGJ,UACH9kuB,GAAO9M,QAAKq7F,KAAM22oB,GAAGZ,KAAOW,GAAK/D,MAG9BlhuB,GCvDI,WAAyButE,EAAQrH,EAAO5tB,EAAO+srB,EAAWhwqB,IACrE,MAAM4opB,GAAaqnB,EAAkB/3pB,EAAQ83pB,GACvCpzX,GAAQszX,EAAmBtnB,GAAW,GAAIA,GAAW,GAAIA,GAAW,GAAIA,GAAW,GAAK/3oB,EAAMm/pB,IACpG,IAAI/gqB,GAEJ,QAAS1sC,GAAM,EAAGA,GAAMq6U,GAAMz+W,OAAQokC,KAClC,GAAI,GAAKq6U,GAAMr6U,KAAQq6U,GAAMr6U,KAAQ,IACjC0sC,GAAekhqB,EAAiBvzX,GAAMr6U,IAAM0gB,EAAOi1B,GAC/C5yE,KAAKiN,IAAI08D,GAAe4B,EAAM5tB,KAAW+c,IACzC,OAAO,uCCAvB,MAAMkY,EAAS,CAAE,SAAU,YAAa,cAExC,kBAAsBk4pB,OAAWjH,IAAcjxpB,IAC3ChgF,YAAYmO,EAAQ6kqB,EAAW7S,GAC3BzgpB,QAEAxf,KAAKiO,OAAOA,GAAU,IAAIisE,KAC1Bl6E,KAAK8yqB,UAAUA,GACf9yqB,KAAKigqB,WAAWA,GAGpBg4E,OAAOC,EAAWnzmB,GACd,MAAMozmB,EAAgBn4uB,KAAKiO,SAASi6oB,cAAcnjhB,GAC5CqzmB,GAAkBF,EAAUjquB,SAASi6oB,cAAcnjhB,GACzD,IAAIm5M,GAEJ,OACIA,GADAl+U,KAAKigqB,cAAgBi4E,EAAUplE,YACxB9yqB,KAAKq4uB,kBACRF,EAAen4uB,KAAKigqB,aAAa/X,cAAcnjhB,GAC/CmzmB,EAAUplE,YAAY5qB,cAAcnjhB,GAASqzmB,IAG1Cp4uB,KAAKs4uB,iBAAiBH,EAAeC,IAGzCl6Z,GAGXo6Z,iBAAiB7jqB,EAAIuM,GACjB,OAAO0+Y,eAAgBjrZ,EAAIuM,GAG/Bq3pB,kBAAkB5jqB,EAAI89pB,EAAKC,EAAKxxpB,IAC5B,MAAMlB,GAAS,CAAErL,EAAI89pB,EAAKC,EAAKxxpB,IACzBu3pB,GAAYv4uB,KAAKw4uB,kBAAkB14pB,GAAQ,KAC3C24pB,GAAYz4uB,KAAKw4uB,kBAAkB14pB,GAAQ,KAC3C44pB,GAAUC,EAAY,CAAEJ,GAAU9lsB,IAAK8lsB,GAAU/puB,IAAKimE,EAAG9qE,EAAGq3E,GAAGr3E,IAC/DivuB,GAAUD,EAAY,CAAEF,GAAUhmsB,IAAKgmsB,GAAUjquB,IAAKimE,EAAG3gB,EAAGktB,GAAGltB,IAErE,OAAO4ra,eAAgB,IAAIxlZ,IAAMw+pB,GAAQjmsB,IAAKmmsB,GAAQnmsB,KAAM,IAAIynC,IAAMw+pB,GAAQlquB,IAAKoquB,GAAQpquB,MAG/FgquB,kBAAkB14pB,EAAQj1B,GACtB,MAAMy/U,EAAWtqY,KAAK64uB,eAClB/4pB,EAAO,GAAGj1B,GAAQi1B,EAAO,GAAGj1B,GAC5Bi1B,EAAO,GAAGj1B,GAAQi1B,EAAO,GAAGj1B,IAGhC,MAAO,CACHpY,IAAKslsB,EAAiBztW,EAAS73V,IAAKoY,EAAOi1B,GAC3CtxE,IAAKupuB,EAAiBztW,EAAS97X,IAAKq8C,EAAOi1B,IAInD+4pB,eAAe1jqB,EAAIM,EAAIqjqB,EAAItumB,IACvB,MAAMr4G,GAAIgjD,EAAK,EAAIM,EAAK,EAAIqjqB,EAAKtumB,GAC3Bt4G,IAAI,GAAOijD,EAAK,EAAIM,EAAKqjqB,GACzB74tB,GAAIk1D,EAAKM,EACT8e,GAAOrnF,KAAKqnF,KAAKriE,GAAIA,GAAI,EAAIC,GAAIlS,IACvC,IAAIihpB,GAAK,EACLC,GAAK,EAEC,IAANhvoB,GACU,IAAND,KACAgvoB,GAAKC,IAAMlhpB,GAAIiS,IAEX/a,MAAMo9E,MACd2skB,KAAQhvoB,GAAIqiE,KAAS,EAAIpiE,IACzBgvoB,KAAQjvoB,GAAIqiE,KAAS,EAAIpiE,KAG7B,IAAIsgB,GAAMvlC,KAAKsB,IAAItB,KAAKulC,IAAIyunB,GAAIC,IAAK,IACjC1unB,GAAM,GAAKA,GAAM,KACjBA,GAAM,GAGV,IAAIjkC,GAAMtB,KAAKulC,IAAIvlC,KAAKsB,IAAI0ypB,GAAIC,IAAK,GACrC,OAAI3ypB,GAAM,GAAKA,GAAM,KACjBA,GAAM,GAGH,CACHikC,IAAKA,GACLjkC,IAAKA,IAIbuquB,iBAAiB18mB,EAAS5jD,GACtB,IAAIugqB,EACJ,OACIA,EADAh5uB,KAAKigqB,cAAgB5jiB,EAAQy2iB,YCjG1B,WAAiChzlB,EAAQrH,EAAO63E,GAC3D,MAAMkgkB,EAAaqnB,EAAkB/3pB,EAAQ,KACvC0kS,GAAQszX,EAAmBtnB,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAK/3oB,EAAM9uE,GACpG,IAAIsvuB,GAAiBC,GACjBthoB,GAAQ,EACZ,QAASjpG,GAAI,EAAGA,GAAI61W,GAAMz+W,OAAQ4I,KAC9BsquB,GAAkBlB,EAAiBvzX,GAAM71W,IAAI,IAAKmxE,GAClDo5pB,MAAgBlutB,KAAMiutB,GAAiBxgqB,EAAM3kB,IAAMmlrB,GAAkBxgqB,EAAM3kB,EACvEolrB,MAAiC,IAAb10X,GAAM71W,KAAyB,IAAb61W,GAAM71W,MAAa2hJ,EAAKiuW,cAAc50f,EAAI8uE,EAAM9uE,GAAO,EAAI66W,GAAM71W,KAAM61W,GAAM71W,IAAK,IACxHipG,KAIR,OAAOA,GDqFsBuhoB,CAAwB,CAAEn5uB,KAAKiO,SAAUjO,KAAKigqB,aAAc5jiB,EAAQy2iB,YAAaz2iB,EAAQpuH,UAAYwqE,EAAOz4E,KAAKi4uB,OAAO57mB,KAExH+8mB,OAAuBp5uB,KAAKiO,SAAUouH,EAAQpuH,SAAUwqE,GAE1EugqB,EAGXK,aAAah9mB,EAAS5jD,EAAO/hE,EAAO4iuB,IAEhC,GADat5uB,KAAKi4uB,OAAO57mB,GAASiuR,OAAO5zY,EAAOA,GACvCq6F,cAAct4B,GAAQ,CAC3B,MAAMhE,GAAKz0E,KAAKiO,SACV+yE,GAAKhhF,KAAKigqB,aACVh/kB,GAAKo7C,EAAQy2iB,YACbioC,GAAK1+kB,EAAQpuH,SAEnB,GAAmB,UAAfqruB,IAA0B7kqB,GAAGmokB,WAAWnkkB,IAAU/hE,EAClD,OAAQ6iuB,EAAgB9kqB,GAAIuM,GAAIvI,GAC7B,GAAmB,QAAf6gqB,IAAwBv+B,GAAGn+D,WAAWnkkB,IAAU/hE,EACvD,OAAQ6iuB,EAAgBx+B,GAAI95nB,GAAIxI,GAIpC,MAAMqH,GAAS,CAAErL,GAAIuM,GAAIC,GAAI85nB,IAC7B,GAAIy+B,EAAgB15pB,GAAQrH,EAAO,IAAK,IAAK/hE,IAAU8iuB,EAAgB15pB,GAAQrH,EAAO,IAAK,IAAK/hE,GAC5F,OAAO,EAEX,MAAMulJ,IAAW5xJ,SAAYymH,OAAO,GAAIr4C,GAClCghqB,GAAgB,CAAEhlqB,GAAGyzkB,cAAcjsf,IAAWj7E,GAAGknkB,cAAcjsf,IAAWh7E,GAAGinkB,cAAcjsf,IAAW8+iB,GAAG7yD,cAAcjsf,KAC7H,OAAOu9kB,EAAgBC,GAAehhqB,EAAO,IAAK,IAAK/hE,IAAU8iuB,EAAgBC,GAAehhqB,EAAO,IAAK,IAAK/hE,IAIzHgjuB,YAAYr9mB,EAAS5jD,EAAO/hE,GACxB,MAAM+9D,GAAKz0E,KAAKiO,SACV+yE,GAAKq7C,EAAQpuH,SACbqjF,IAAQypjB,OAAI7toB,KAAKqkF,MAAMvQ,GAAGltB,EAAI2gB,GAAG3gB,EAAGktB,GAAGr3E,EAAI8qE,GAAG9qE,IAEpD,OADa,IAAI+1d,IAAK,CAAEjrZ,GAAG9qE,EAAG8qE,GAAG3gB,EAAIp9C,EAAQ,GAAK,CAAE+9D,GAAGmokB,WAAW57jB,IAAKtqE,IAC3Dq6F,cAAct4B,EAAMyvkB,eAAc79oB,SAAYymH,QAAQx/B,GAAO7c,MAG7EklqB,YAAYt9mB,EAAS5jD,EAAO/hE,EAAO4iuB,IAC/B,IAAIM,GACJ,OACIA,GADA55uB,KAAKigqB,cAAgB5jiB,EAAQy2iB,YAClB9yqB,KAAKq5uB,aAAah9mB,EAAS5jD,EAAO/hE,EAAQ,EAAG4iuB,IAE7Ct5uB,KAAK05uB,YAAYr9mB,EAAS5jD,EAAO/hE,GAEzCkjuB,IAIf,WAAqBvruB,GACjB,IAAItI,EAASsI,EAAItI,OACb0sC,EAAM2jsB,KACN5nuB,EAAM6nuB,KAEV,QAAS1nuB,GAAI,EAAGA,GAAI5I,EAAQ4I,KACxBH,EAAMtB,KAAKsB,IAAIA,EAAKH,EAAIM,KACxB8jC,EAAMvlC,KAAKulC,IAAIA,EAAKpkC,EAAIM,KAG5B,MAAO,CACH8jC,IAAKA,EACLjkC,IAAKA,GAIb,QAAeqruB,mGErKf,mBAAmBhI,KAAcd,IAAc,CAAE,QAAS,YACtDjxuB,YAAY4W,EAAOnM,GACfiV,QAEAxf,KAAK0W,MAAQA,GAAS,EACtB1W,KAAKuK,OAASA,GAAU,EAG5B0zD,OAAOoB,GACH,OAAOA,GAASA,EAAM3oD,QAAU1W,KAAK0W,OAAS2oD,EAAM90D,SAAWvK,KAAKuK,OAGxEilH,QACI,OAAO,IAAIvgE,EAAKjvD,KAAK0W,MAAO1W,KAAKuK,QAGrCikF,QAAQ8gE,GACJ,MAAM2mlB,KAAUrrI,KAAQt7c,GAIxB,MAAO,CAHO2mlB,GAAUn1oB,OAAM9gG,KAAK0W,MAAO44I,GAAUtvJ,KAAK0W,MAC1Cu/tB,GAAUn1oB,OAAM9gG,KAAKuK,OAAQ+kJ,GAAUtvJ,KAAKuK,QAE3CA,cAGN2ruB,EAAMC,GAChB,MAAIvrI,KAAQsrI,GACR,OAAIA,aAAgBjnrB,EACTinrB,EACqB,IAArBn5sB,UAAUh3B,QAAgC,IAAhBmwuB,EAAKnwuB,OAC/B,IAAIkpD,EAAKinrB,EAAK,GAAIA,EAAK,IAG3B,IAAIjnrB,EAAKinrB,EAAMC,GAInBnxE,kBACP,OAAO,IAAI/1mB,EAAK,EAAG,IAI3B,QAAeA,iCC9CA,WAAkBmjrB,GAC7B,OAAIA,GAAmD,mBAA1BA,EAAertmB,OACjCqtmB,EAAertmB,SAGnBqtmB,mHCAX,gBAA6BrB,IACzBjxuB,YAAYilI,EAAS22gB,YACjBl8nB,QAEAxf,KAAK85uB,QAAU/0mB,EAGnBvV,QACI,OAAO,IAAIuqnB,EACP/5uB,KAAK85uB,QAAQtqnB,SAIrBvxD,OAAOoB,GACH,OAAOA,GACAA,EAAMy6qB,QAAQ77qB,OAAOj+D,KAAK85uB,SAGrCthsB,UAAU7uC,EAAGmqD,GACT,YAAKgmrB,QAAU95uB,KAAK85uB,QAAQ5tC,aAAaxwD,cAAiB/xoB,EAAGmqD,IAE7D9zD,KAAKg6uB,iBACEh6uB,KAGX0gG,MAAMu5lB,EAAQC,EAASD,EAAQ51pB,EAAS,MACpC,IAAIwxsB,EAAcxxsB,EAElB,OAAIwxsB,IACAA,EAAc37pB,WAAa27pB,GAC3B71uB,KAAK85uB,QAAU95uB,KAAK85uB,QAAQ5tC,aAAaxwD,cAAiBm6F,EAAYlsuB,EAAGksuB,EAAY/hrB,KAGzF9zD,KAAK85uB,QAAU95uB,KAAK85uB,QAAQ5tC,aAAaxwD,UAAau+C,EAAQC,IAE1D27C,IACA71uB,KAAK85uB,QAAU95uB,KAAK85uB,QAAQ5tC,aAAaxwD,eAAkBm6F,EAAYlsuB,GAAIksuB,EAAY/hrB,KAG3F9zD,KAAKg6uB,iBACEh6uB,KAGX8wH,OAAOx/B,EAAOjtD,GACV,MAAMwxsB,EAAc37pB,WAAa71C,IAAW61C,SAE5C,YAAK4/pB,QAAU95uB,KAAK85uB,QAAQ5tC,aAAaxwD,WAAcpqjB,EAAOukpB,EAAYlsuB,EAAGksuB,EAAY/hrB,IAEzF9zD,KAAKg6uB,iBACEh6uB,KAGXq/jB,SAAS+yK,GACL,MAAMrtmB,KAASixmB,KAAS5D,GAExB,YAAK0H,QAAU95uB,KAAK85uB,QAAQ5tC,aAAannkB,GAEzC/kI,KAAKg6uB,iBACEh6uB,KAGX+kI,OAAOphI,GACH,OAAIA,GACA3D,KAAK85uB,QAAUn2uB,EACf3D,KAAKg6uB,iBACEh6uB,MAGJA,KAAK85uB,QAGhBE,iBACIh6uB,KAAKktrB,cAAc,CACfrioB,MAAO,YACPlnD,MAAO3D,QAKnB,QAAe+5uB,EClFA,WAAmBh1mB,GAC9B,OAAe,OAAXA,EACO,KAGPA,aAAkBg1mB,EACXh1mB,EAGJ,IAAIg1mB,EAAeh1mB,8ECT9B,WAAyB//H,GACrB,OAAO,SAASrB,GACZ,OAAIinmB,OAAQjnmB,IACR3D,KAAK+e,QAAQsT,IAAIrtB,EAAMrB,GAChB3D,MAGJA,KAAK+e,QAAQF,IAAI7Z,mBCHhC,MAAM+Z,EAAU,CAAE,SAAU,QAAS,WAErC,gBDWoB,EAACk7tB,EAAO3hW,KACxB,MAAM/lY,EAAS,cAAc0nuB,IAC7BC,OARJ,WAAgChhrB,EAAIo/U,GAChC,QAAS3pY,EAAI,EAAGA,EAAI2pY,EAAMvyY,OAAQ4I,IAC9BuqD,EAAGo/U,EAAM3pY,IAAMwruB,EAAgB7hW,EAAM3pY,IAMzCuruB,CAAuB3nuB,EAAO8N,UAAWi4X,GAElC/lY,GCfgB6nuB,CAAYrJ,IAAchytB,IACjDjf,YAAYsyB,EAAQmtH,EAAOn1I,GACvBoV,QAEAxf,KAAK+e,QAAU,IAAImytB,IAAa,CAC5B9+sB,OAAQA,EACRmtH,MAAOA,EACPn1I,SAASwgmB,OAAQxgmB,GAAWA,EAAU,IAG1CpK,KAAK+e,QAAQ+mrB,YAAY9lsB,oBAGfi+B,GACV,IAAI2skB,OAAQ3skB,GAAM,CACd,IAAI9T,EACJ,OACIA,EADA8T,aAAeo8sB,EACRp8sB,EACAA,EAAIl4B,OAAS,EACb,IAAIs0uB,EAAap8sB,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAErC,IAAIo8sB,EAAap8sB,EAAI7L,OAAQ6L,EAAIshH,MAAOthH,EAAI7zB,SAGhD+f,IAKnB,QAAekwtB,gEC3Bf,QARA,gBAAyBC,IACrBC,UACIv6uB,KAAKktrB,cAAc,CACfrioB,MAAO,4DCwDnB,QAxDA,gBAAuBkmrB,IACf7sX,eACA,MAAO,WAGXpkX,YAAYif,EAAU,IAClBS,QAEAxf,KAAKyjpB,MAAQ,IAAI+2F,EAAWx6uB,KAAKy6uB,aAAa17tB,EAAQ0koB,QACtDzjpB,KAAKyjpB,MAAMqiD,YAAY9lsB,MACvBA,KAAK06uB,WAAa37tB,EAAQu9qB,UAC1Bt8rB,KAAKkF,MAAK+2N,OAGdqge,UAAU34rB,GACN,SAAIinmB,KAAQjnmB,IACR3D,KAAK06uB,WAAa/2uB,EAClB3D,KAAKktrB,gBACEltrB,MAGJA,KAAK06uB,WAGhBD,aAAah3F,EAAQ,IACjB,MAAMlxoB,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAMs5mB,EAAM19oB,OAAQokC,IAClC53B,EAAO9M,KAAK40uB,WAAoB52F,EAAMt5mB,KAG1C,OAAO53B,EAGX+wsB,QAAQlxrB,EAAQmtH,EAAOn1I,GACnBpK,KAAKyjpB,MAAMh+oB,KAAK,IAAI40uB,IAAajotB,EAAQmtH,EAAOn1I,IAGpDuwuB,WAAWxwtB,GACP,MAAMvG,EAAQ5jB,KAAKyjpB,MAAM3joB,QAAQqK,GAC7BvG,GAAS,GACT5jB,KAAKyjpB,MAAM3/nB,OAAOF,EAAO,GAIjCspqB,cAAcjkrB,GACVjJ,KAAKiK,QAAQ,gBAAiB,CAC1B4gD,MAAO,YAAc5hD,EAAI,IAAMA,EAAE4hD,MAAQ,IACzClnD,MAAO3D,OAIf+srB,iBACI/srB,KAAKktrB,uGCpDb,MAAMptmB,EAAS,CAAE,QAAS,OAE1B,iBAA6Bk4pB,OAAW4C,IAAU96pB,IAC9ChgF,YAAYif,EAAU,IAClBS,MAAMT,GAEN/e,KAAKgtB,MAAMjO,EAAQiO,OAAS,IAAIktD,KAChCl6E,KAAKsqC,IAAIvrB,EAAQurB,KAAO,IAAI4vC,IAAM,EAAG,KAI7C,QAAeippB,kGCVf,iBAA6B6U,OAAW4C,IAAU,CAAE,YAChD96uB,YAAYif,EAAU,IAClBS,MAAMT,GAEN/e,KAAKqvE,OAAOtwD,EAAQswD,QAAU,IAAI6K,KAClCl6E,KAAK66uB,WAAUjwI,KAAQ7rlB,EAAQ0zE,QAAU1zE,EAAQ0zE,OAAS,EAC1DzyF,KAAK86uB,cAAgB/7tB,EAAQs9qB,aAGjC5pmB,OAAO9uF,GACH,SAAIinmB,KAAQjnmB,IACR3D,KAAK66uB,QAAUl3uB,EACf3D,KAAK+srB,iBACE/srB,MAGJA,KAAK66uB,QAGhBx+C,aAAa14rB,GACT,SAAIinmB,KAAQjnmB,IACR3D,KAAK86uB,cAAgBn3uB,EACrB3D,KAAKktrB,gBACEltrB,MAGJA,KAAK86uB,eAIpB,QAAezX,yQCxBf,MAAMl7J,EAAUtpF,aAAmB,GAoBnC,WAAe+U,IACX,OAAOtlf,MAAM+R,UAAUzR,MAAMglB,KAAKgge,IAGtC,IAAImnP,EAAuB,uBAEvBC,GAAc,GAEdC,EAAW,GACfA,EAASnqD,MAAQmqD,EAKjB,MAAMC,EAD8B,oBAAX/luB,SACKgzjB,EAAQp4F,MAAQo4F,EAAQtoe,MAEtD,gBAAuB/2E,IACnBhpB,YAAYyiB,GAAK27T,GAAMn/T,IACnBS,MAAM+C,GAAK27T,GAAKm5X,YAAat4rB,IAC7B/e,KAAKm7uB,SAAWj9Z,GAEpBA,OAII,OAAOl+U,KAAKm7uB,SAEhB3lC,UAEI,OAAOx1sB,KAAKm7uB,UAyBpB,YAAgB9zrB,GAAIoxE,IAChB5yH,OAAOrC,KAAKi1H,IAAQ7xH,QAAQ,SAASiM,IACjCw0C,GAAGl9C,MAAM0I,IAAO4lH,GAAO5lH,MAI/B,IAA+E4xD,GAA3EyzC,GAA6B,oBAAZwiG,SAA2BA,QAAQr6L,aAAuBokD,GAgB5Ei2I,QAAQr6L,WAfD63F,QACK,SAAS7wD,GAAImyO,IAAY,OAAOnyO,GAAG6wD,QAAQshL,KAElD/0N,GAAEs3Y,sBACK,SAAS10Z,GAAImyO,IAAY,OAAOnyO,GAAG00Z,sBAAsBviL,KAEhE/0N,GAAE22qB,mBACK,SAAS/zrB,GAAImyO,IAAY,OAAOnyO,GAAG+zrB,mBAAmB5hd,KAE7D/0N,GAAEq3Y,kBACK,SAASz0Z,GAAImyO,IAAY,OAAOnyO,GAAGy0Z,kBAAkBtiL,KAEzD,SAAS3yR,IACnB,OAA+D,IAAxD,GAAGiZ,QAAQ8T,KAAKjS,SAAS48B,iBAAiB13C,IAAI7G,QAItD,YAAiBqnD,GAAImyO,IACjB,GAAInyO,GAAGhH,QACH,OAAOgH,GAAGhH,QAAQm5O,IAKtB,KAAOnyO,KAAO,iCAAiCm0X,KAAKxoZ,OAAOq0B,MAAM,CAC7D,GAAmB,GAAfA,GAAG68T,UAA+BhsQ,GAAQ7wD,GAAImyO,IAC9C,OAAOnyO,GAEXA,GAAKA,GAAGomG,YAMhB,IAAI4tlB,GAAc,SAASxpuB,IACvB,OAAIA,GAMO,YAAoBw1C,IACvB,IAAImoE,GAAQnoE,GAAGmgX,WAAU,GACzB,GAAmB,GAAfngX,GAAG68T,SAA6B,CAChC,IAAoCv1W,GAAhC2suB,GAAMzpuB,GAAEw1C,IAAKk0rB,GAAS1puB,GAAE29G,IACxB18G,GAAOwouB,GAAIxouB,OACf,IAAKnE,MAAKmE,GACNyouB,GAAOzouB,KAAKnE,GAAGmE,GAAKnE,KAgBxB,IAdA,YAAgB6sa,KAAKn0X,GAAGytU,SACpBtlQ,GAAM9zE,WAAW,MAAMC,UAAU0L,GAAI,EAAG,GACjC,sCAAsCm0X,KAAKn0X,GAAGytU,WAIrDtlQ,GAAMs3C,gBAAgB,MACtBt3C,GAAMs3C,gBAAgB,QACjB,cAAc00Q,KAAKn0X,GAAGytU,WACvBtlQ,GAAM7rH,MAAQ0jD,GAAG1jD,OAErB6rH,GAAMuxV,QAAU15Z,GAAG05Z,QACnBvxV,GAAMzhF,SAAWsZ,GAAGtZ,UAEnBp/B,GAAI04C,GAAG0qQ,WAAYpjT,GAAGA,GAAIA,GAAEm8W,YAC7Bt7P,GAAM30E,YAAYwgsB,GAAW1suB,KAGrC,OAAO6gH,IAIJ,SAAoBnoE,IACvB,MAAMmoE,GAAS,YAAcpqG,IACzB,MAAMoqG,GAAQpqG,GAAKoiZ,WAAU,GACzBpiZ,GAAK8viB,qBACL1lc,GAAM0lc,mBAAqB9viB,GAAK8viB,oBAEpC,QAASvmjB,GAAIyW,GAAK2sS,WAAYpjT,GAAGA,GAAIA,GAAEm8W,YACnCt7P,GAAM30E,YAAY2gsB,GAAK7suB,KAE3B,OAAO6gH,GARI,CASZnoE,IAGGo0rB,GAAWp0rB,GAAG9I,iBAAiB,UACjCk9rB,GAAS11uB,QACT6I,EAAM4gH,GAAMjxE,iBAAiB,WAAW33C,QAAQ,CAAC60C,GAAQ9sC,MACrD8sC,GAAOC,WAAW,MAAMC,UAAU8/rB,GAAS9suB,IAAI,EAAG,KAM1D,MAAM+suB,GAAOr0rB,GAAG9I,iBAAiB,mCACjC3vC,SAAM4gH,GAAMjxE,iBAAiB,oCAAoC33C,QAAQ,CAACygD,GAAI14C,MAC1E04C,GAAGy/G,gBAAgB,MACnBz/G,GAAGy/G,gBAAgB,QACd,cAAc00Q,KAAKn0X,GAAGytU,WACvBztU,GAAG1jD,MAAQ+3uB,GAAK/suB,IAAGhL,OAEvB0jD,GAAG05Z,QAAU26R,GAAK/suB,IAAGoyc,QACrB15Z,GAAGtZ,SAAW2tsB,GAAK/suB,IAAGo/B,WAGnByhF,IAtED,CAyEG,oBAAXr6G,QAA0BA,OAAOwmuB,OAASxmuB,OAAOwmuB,MAAMC,QAYjE,YAAiBlnuB,GAASqK,IACjBA,KACDA,GAAU,IAEd,IAAI8S,MAAUo1gB,OAEd,IAAKvyhB,GACD,OAAOmd,GAAQlK,OAAO,wBAG1B,GAAsC,mBAA3BxS,OAAO0vB,iBACd,MAAM,IAAIpuB,MAAM,oLAGpBoluB,KA8vBJ,YAAsBrzX,IACP,MAAPA,KACAA,GAAM7mW,UAGV,QADIpP,GAAS,GACJ5D,GAAI,EAAGA,GAAI65W,GAAIszX,YAAY/1uB,SAAU4I,GAC1CotuB,GAAavzX,GAAIszX,YAAYntuB,KAEjC,OAAO4D,GACP,YAAsB4qF,IAClB,GAAIA,GAAI,CACJ,IAAI2qd,GAAQ,KACZ,IACIA,GAAQ3qd,GAAG6+oB,eACNtstB,KACLo4hB,IAsBZ,YAAkBm0L,GAAYn0L,IAC1B,QAASn5iB,GAAI,EAAGA,GAAIm5iB,GAAM/hjB,SAAU4I,GAAG,CACnC,IAAIkiD,GAAIi3f,GAAMn5iB,IACd,OAAQkiD,GAAE/oD,WACH,EACHi0uB,GAAalrrB,GAAEorrB,YACf,WACG,EACH,IAAI9xuB,GAAS0mD,GAAE1mD,MACX+xuB,GAASC,GAAcp3sB,GAAiB56B,GAAO,gBAC/C69d,GAAS,sBAAsBxsD,KAAKz2Y,GAAiB56B,GAAO,gBAC5Dw+d,GAAS,aAA6Bx+d,GAAO,cAC7CgwC,GAASiisB,GAAUvrrB,IACnB1W,GAAIp0C,OAAS,GACbs2uB,GAAQJ,GAAYC,GAAQl0Q,GAAMW,GAAQxub,GAAI,MAnClDmisB,CAASn/oB,GAAI2qd,KAIzB,YAAmB0nB,IACf,IAAIr1hB,GAAMpV,GAAiByqiB,GAAKrlkB,MAAO,OACvC,GAAIgwC,GACA,OAAOgisB,GAAchisB,IAAKngC,OAAO,SAASmY,GAAGk1B,IACzC,IAAIg+F,GAAOk3lB,GAAWl1rB,IACtB,OAAIg+F,IACAlzH,GAAE1sB,KAAK4/I,IAEJlzH,IACR,IAIH,IAAIkzH,GAAOk3lB,GAAW/sK,GAAK7yhB,SAC3B,OAAO0oG,GAAO,CAAEA,IAAS,GAsBjC,YAAiB42lB,GAAY3jW,GAAO0vF,GAAMW,GAAQ7pd,IAGxC,UAAU08Z,KAAK18Z,KACX,gBAAgB08Z,KAAK18Z,KAAQ,MAAM08Z,KAAK18Z,MAC1CA,GAAMkU,OAAOiptB,GAAWtrtB,MAAMpF,QAAQ,UAAW,IAAMzM,IAG/Dw5X,GAAM1xY,QAAQ,SAAS5B,IACnBA,GAAOA,GAAKumB,QAAQ,mBAAoB,MACpCy8c,KACAhje,IAAQ,SAER2je,KACA3je,IAAQ,WAEZuN,GAAOvN,IAAQ8Z,MAt0BR09tB,CAAa9nuB,GAAQ2nhB,gBAEpC,IAAI37b,GA1BR,YAAekzZ,IACX,MAAoB,iBAATA,GACA,CAAEjqf,EAAGiqf,GAAO9/b,EAAG8/b,IAEtBtlf,MAAMqxB,QAAQi0d,IACP,CAAEjqf,EAAGiqf,GAAM,GAAI9/b,EAAG8/b,GAAM,IAE5B,CAAEjqf,EAAGiqf,GAAMjqf,EAAGmqD,EAAG8/b,GAAM9/b,GAmBlB2orB,CAAM19tB,GAAQ2hF,OAAS,GAEnC,YAAehsF,IACX,IAAIg0B,GAAQ,IAAI8/G,IAGZ3/D,GAAMn0E,GAAQy0T,wBAClBg5Z,UAAaz5rB,GAAO,CAChBg4D,GAAM/2F,EACN,EACA,EACA+2F,GAAM5sC,GACJ+0B,GAAIzZ,KAAOsxB,GAAM/2F,GACjBk/E,GAAIslC,IAAMztB,GAAM5sC,IAGtBmnrB,EAASyB,UAAW,EACpBzB,EAASnB,QAAUtiC,WACnByjC,EAAS0B,iBAAmB,CACxBjouB,QAASA,GACTg0B,MAAOA,IAIPuysB,EAAS2B,aADc,IAAvB79tB,GAAQqvlB,WACe,IAEArvlB,GAAQqvlB,WA7L3C,WAAkB/mjB,GAAIgqY,IACdhqY,GAAGO,UACHP,GAAGO,UAAUY,IAAI6oY,IAEjBhqY,GAAGjK,WAAa,IAAMi0Y,GA4LtBzrH,CAASlxT,GAAS,gBAClBmouB,GAAcnouB,GAASg0B,IAzL/B,WAAqB2e,GAAIgqY,IACjBhqY,GAAGO,UACHP,GAAGO,UAAUnJ,OAAO4yY,IAEpBhqY,GAAGjK,UAAYiK,GAAGjK,UAAUpmC,MAAM,OAAOgD,OAAO,SAASmY,GAAGqpb,IACxD,OAAIA,IAAQnqB,IACRl/Z,GAAE1sB,KAAK+1c,IAEJrpb,IACR,IAAI1K,KAAK,KAiLZq+S,CAAYpxT,GAAS,gBAEdg0B,GA6cX,OA1cAo0sB,GAAY,CAAEpouB,IAAW,WACrB,IAAIqouB,GAAah+tB,IAAWA,GAAQsvlB,eAChC2uI,GAAej+tB,IAAWA,GAAQwvlB,WAAkC,QAArBxvlB,GAAQwvlB,UACvD0uI,GAAepB,IAAoB,SAAShpuB,GAAKu2D,IACjD,MAAW,aAAPv2D,GAGOmquB,GAAej+tB,GAAQlM,IAAO,KAElCA,MAAOkM,GAAUA,GAAQlM,IAAOu2D,KAEvC8zqB,GAAYF,IAAgBC,GAAa1uI,UAAU,GACnD4uI,GAAaH,IAAgBC,GAAa1uI,UAAU,GACpDhgkB,GAASxvB,GAAQwvB,QAAU0usB,GAAa1usB,OACxC6usB,GAAYp1a,QAAQz5R,IACxB,GAAIwusB,IAAcI,GAAY,CACrB5usB,KACDA,GAAS,CAAE6gC,KAAM,EAAG++C,IAAK,EAAG7+C,MAAO,EAAGo6P,OAAQ,IAM9Cwza,KAAcA,IAAcx8oB,GAAM/2F,GAClCwzuB,KAAcA,IAAcz8oB,GAAM5sC,GACtCvlB,GAAO6gC,MAAUsxB,GAAM/2F,EACvB4kC,GAAO+gC,OAAUoxB,GAAM/2F,EACvB4kC,GAAO4/E,KAAUztB,GAAM5sC,EACvBvlB,GAAOm7R,QAAUhpO,GAAM5sC,EAEvB,IAAIprB,GAAQ,IAAI8/G,IAAM,CAClB34E,IAAK,CACDi/hB,WAAgB,EAChBP,UAAgByuI,GAAeC,GAAa1uI,UAAY,OACxD8uI,cAAgBD,OAyEhC,YAA0BvtuB,GAAU6E,GAASqouB,GAAYG,GAAWC,GAAY5usB,GAAQxvB,IACpF,IAAImzC,GAxBR,YAAsBA,IAClB,GAAgB,MAAZA,GAIA,MAHuB,iBAAZA,KACPA,GC/VD,aACX,MAAM,IAAIz7C,MAAM,oCD8VO2qf,CAAgBlvc,GAAS3mC,QAAQ,aAAc,MAEvC,mBAAZ2mC,GACA,SAASp/C,IACZ,IAAIu0C,GAAK6K,GAASp/C,IAClB,GAAIu0C,IAAmB,iBAANA,GAAgB,CAC7B,IAAI6iW,GAAMvoY,SAAS+O,cAAc,OACjCw5X,GAAI7sW,UAAYgK,GAChBA,GAAK6iW,GAAIinS,kBAEb,OAAO9poB,IAIR,WACH,OAAO6K,GAASs1W,WAAU,IAMnB81U,CAAav+tB,GAAQmzC,UAChCs2T,GAAM9zW,GAAQ2nhB,cACdkhN,GAAQ,GACRx4qB,GAAOhmD,GAAQu4iB,aAAe5ijB,GAAU2muB,GAAW3muB,IACnD+oJ,GAAY+qN,GAAI93V,cAAc,sBAC9B8stB,GAAS,EAqEb,eACsB,KAAdT,IAAqBI,KACrBM,GAAa14qB,IAGjB,CACI,IAAIt4D,GAAOixuB,KACX34qB,GAAK0oF,WAAW4wN,aAAa5xW,GAAMs4D,IACnCt4D,GAAKouC,YAAYkqB,IAGjB7S,IACAqrrB,GAAM32uB,QAAQ,SAAS6F,GAAMkC,IACzB,MAAM04C,GAAK6K,GAAS,CAChBx9C,QAAajI,GACbkxuB,QAAahvuB,GAAI,EACjBwxiB,WAAao9L,GAAMx3uB,SAEnBshD,IACA56C,GAAKouC,YAAYwM,MAK7By1rB,GAAYS,GAAO1tuB,GAASgW,KAAK,KAAM,CAAE03tB,MAAOA,GAAO9/kB,UAAWA,MAGtE,YAAsBp2G,IAClB,SAAItoC,GAAQuvlB,cAAgBp2f,GAAQ7wD,GAAItoC,GAAQuvlB,eAAiBjnjB,GAAGT,cAAgBu2rB,GAAaK,OAK7F,YAAYhiU,KADNn0X,GAAGytU,UACgBztU,GAAGT,cAAgBu2rB,GAAaK,MAIrDn2rB,GAAGS,aAAa,qBAChB,0FAA0F0zX,KAAKn0X,GAAGytU,UAG9G,YAAsBpgX,IAIlB,GAHuB,SAAnBA,GAAQogX,SACR8oX,GAAOlpuB,GAAS,CAAEmpuB,YAAa,WAE/BvvI,GAAa55lB,IAGjB,KAAIvK,GAAQ06B,GAAiBnwB,IACzBopuB,GAAgBn5sB,WAAWI,GAAiB56B,GAAO,mBACnD4zuB,GAAep5sB,WAAWI,GAAiB56B,GAAO,wBAClD6zuB,GAAaR,GACjBA,IAAUM,GAAgBC,GAE1B,QADI/tL,IAAU,EACL3ogB,GAAK3yC,GAAQq9S,WAAY1qQ,GAAIA,GAAKA,GAAGyjU,YAC1C,GAAmB,GAAfzjU,GAAG68T,SAA6B,CAEhC,GADA8rM,IAAU,EACN93c,GAAQ7wD,GAAI01rB,IAAa,CACzBkB,GAAe52rB,IACf,SAEJ,IAAK81rB,GAAY,CAEbM,GAAap2rB,IACb,SAEJ,IAAK,wBAAwBm0X,KAAKz2Y,GAAiBF,GAAiBwiB,IAAK,aACrE,SAEJ,IAAI62rB,GAAOC,GAAc92rB,IACb,GAAR62rB,IAIKA,IAID5vI,GAAajnjB,IANjB42rB,GAAe52rB,IAafo2rB,GAAap2rB,SAGG,GAAfA,GAAG68T,UAA4Bi5X,KACpCiB,GAAU/2rB,GAAI2ogB,IACdA,IAAU,GAGlBwtL,GAASQ,IAqBb,YAAwB32rB,IACpB,GAAmB,GAAfA,GAAG68T,UAAiB78T,KAAO0d,IAnBnC,YAAuB1d,IACnB,IAAIod,GAAIpd,GAAGomG,WAAYvmJ,GAAQu9D,GAAEstP,WACjC,GAAI1qQ,KAAOngD,GACP,OAAO,EAEX,GAAImgD,KAAOod,GAAEjG,SAAS,GAAI,CACtB,GAAsB,GAAlBt3D,GAAMg9W,UACY,GAAlBh9W,GAAMg9W,SACN,OAAO,EAEX,GAAsB,GAAlBh9W,GAAMg9W,SAEN,OAAQ,KAAKs3D,KAAKt0a,GAAM4L,MAGhC,OAAO,EAIgCuruB,CAAch3rB,IACjD,OAAO42rB,GAAe52rB,GAAGomG,YAE7B,IAAIs3Q,GAAOu5U,GAAUx5U,GAAOh/X,GAAMy4sB,GAElCD,IADAv5U,GAAQ1kX,GAAQgH,GAAI,WACA09W,GAAMxoX,cAAc,YACpCx9B,GAAQ0vlB,gBACR3pM,GAAQC,IAASA,GAAMxoX,cAAc,UAOrCzW,GAAOua,GAAQgH,GAAI,sBACPvhB,GAAKyW,cAAc,wBAC3BgisB,GAAWz4sB,GAAKyW,cAAc,oBAGtC,IAAI9vC,GAAOixuB,KACP91qB,GAAQ4gT,GAAIi1V,cAChB71oB,GAAM42qB,eAAez5qB,IACrB6C,GAAM62qB,aAAap3rB,IACnB56C,GAAKouC,YAAY+sB,GAAM82qB,mBACvB35qB,GAAK0oF,WAAW4wN,aAAa5xW,GAAMs4D,IACnC45qB,GAAwBt3rB,GAAGomG,YACvBs3Q,KACAA,GAAQ1kX,GAAQgH,GAAI,SAChBtoC,GAAQ0vlB,eAAiB3pM,IACzBC,GAAM1mD,aAAaymD,GAAM0C,WAAU,GAAOzC,GAAMhzG,YAEhDusb,IACAv5U,GAAM1mD,aAAaigY,GAAS92U,WAAU,GAAOzC,GAAMhzG,aAGvDhzS,GAAQ0vlB,eAAiB8vI,KACzBz4sB,GAAOua,GAAQgH,GAAI,qBACdg3T,aAAakgY,GAAS/2U,WAAU,GAAO1hY,GAAKisR,YAIzD,cACI,IAAItlT,GAAO+7W,GAAI93V,cAAc,kBAC7BkttB,UAAOnxuB,GAAM,CACT4hC,QAAW,QACX2/Z,UAAW,cACXt3b,MAAWwmuB,GAAaA,GAAY,KAAQ,OAC5C13lB,QAAYj3G,GAAO4/E,IAAM,MACb5/E,GAAO+gC,MAAQ,MACf/gC,GAAOm7R,OAAS,MAChBn7R,GAAO6gC,KAAO,KAG1BllC,SAAW,WAGX3/B,OAAW4yuB,GAAcA,GAAa,KAAQ,OAC9CjslB,SAAWislB,IAAcD,GAAY,SAAW,UAChD59rB,MAAW,SAeXvgC,IAAWA,GAAQ6/tB,gBACnBnyuB,GAAK2wC,UAAYr+B,GAAQ6/tB,eAE7BrB,GAAM93uB,KAAKgH,IACJA,GAGX,YAAuBmnf,IACnB,IAAI33X,GAAM23X,GAAMzqL,wBAChB,GAAkB,IAAdltM,GAAIvlH,OAA8B,IAAfulH,GAAI1xH,OAEvB,OAAO,EAEX,IAAI4jH,GAAMppD,GAAKokQ,wBAAwBh7M,IACnC69Q,GAAYmxW,GAAaK,GAC7B,OAAQvhnB,GAAI1xH,OAASyhY,GAAa,EAC3B/vQ,GAAI9N,IAAMA,GAAM69Q,GAAa,EAC7B/vQ,GAAIytM,OAASv7M,GAAM69Q,GAAa,EACjC,EAGV,YAAmB5mX,GAAM4qiB,IACrB,GAAK,KAAKx0I,KAAKp2Z,GAAKtS,MAIpB,KAAIwhF,GAAMlvE,GAAKtS,KAAK/M,OAChB6hE,GAAQ4gT,GAAIi1V,cAChB71oB,GAAMi3qB,mBAAmBz5tB,IACzB,IAAI84tB,GAAOC,GAAcv2qB,IACzB,GAAKs2qB,GAIL,KAAIY,GAAW15tB,GACf,GAAY,GAAR84tB,GAIID,GAFAjuL,GAEe5qiB,GAAKqoI,WAELroI,YAIlB,YAAiBqtB,GAAKo2C,GAAKr6E,IAExB,OADAo5D,GAAMm3qB,OAAO35tB,GAAMyjE,IACfp2C,IAAOo2C,IAAOA,IAAOr6E,GACdq6E,GAEPs1pB,GAAcv2qB,IACPo3qB,GAAQvssB,GAAMA,GAAMo2C,IAAQ,EAAGA,IAE/Bm2pB,GAAQn2pB,GAAMA,GAAMr6E,IAAQ,EAAGA,IAR7C,CAUE,EAAG8lF,IAAO,EAAGA,KAEX,KAAKknV,KAAK5zW,GAAM78D,aAAeiljB,GAEhCiuL,GAAe74tB,GAAKqoI,gBACjB,CAGHqxlB,GAAW15tB,GAAKg5tB,UAAUx2qB,GAAMq3qB,WAEhC,IAAIxyuB,GAAOixuB,KACX91qB,GAAM42qB,eAAez5qB,IACrBt4D,GAAKouC,YAAY+sB,GAAM82qB,mBACvB35qB,GAAK0oF,WAAW4wN,aAAa5xW,GAAMs4D,IACnC45qB,GAAwBG,GAASrxlB,YAIzC2wlB,GAAUU,MAGd,YAAiCz3rB,IAI7B,IAAIg9B,GAAKhkC,GAAQgH,GAAI,MACjBg9B,KACAA,GAAGw1B,aAAa,kBAAmB,KACnC8koB,GAAwBt6pB,GAAGopE,aA9UnC7+I,EAAMm2D,GAAKxmB,iBAAiB,UAAU33C,QAAQ,SAASs4uB,IACnDA,GAAMzxlB,WAAW5yG,YAAYqksB,MAKjCtwuB,EAAMm2D,GAAKxmB,iBAAiB,OAAO33C,QAAQ,SAASu4uB,IAChDvwuB,EAAMuwuB,GAAG3grB,UAAU53D,QAAQ,SAASy9E,GAAIzgE,IACpCygE,GAAGw1B,aAAa,oBAAqBj2F,QAI7Cg6tB,GAAOnglB,GAAW,CACdpvH,QAAY,QACZnE,SAAY,WACZ8ja,UAAY,cACZ5+X,KAAY,WACZ++C,IAAY,aAGZ+unB,KAIAU,GAAOnglB,GAAW,CACd/mJ,MAAewmuB,GAAY,KAC3BjnuB,YAAes4B,GAAO6gC,KAAO,KAC7Bj5D,aAAeo4B,GAAO+gC,MAAQ,OAoBlCsuqB,GAAO74qB,GAAM,CAAEmsF,SAAU,YAG7Bx8I,GAAQ+4I,WAAW4wN,aAAa5gN,GAAW/oJ,IAC3C+oJ,GAAU5iH,YAAYkqB,IAKlBq6qB,GAA4B,CAAE3hlB,IADlC8f,GAAY8hkB,gBACmC,WACvCtguB,GAAQsguB,gBAAgB5hlB,GAAW6hlB,KAGIA,IA9I3CC,CACI,SAAS51uB,IACL,GAAIoV,GAAQkgC,SAAU,CAClB,IAAIugsB,IAAW,EAAO7B,GAAU,GAC/B,cACG,GAAIA,GAAUh0uB,GAAE4zuB,MAAMx3uB,OAAQ,CAC1B,IAAI0G,GAAOgzuB,GAAM91uB,GAAE4zuB,MAAMI,KACzBj1sB,GAAMxX,OAAOzkB,IACbsS,GAAQkgC,SAAS,CACbxyC,KAAMA,GACNkxuB,UAAWA,GACXx9L,WAAYx2iB,GAAE4zuB,MAAMx3uB,OACpBwhX,OAAQ,WACJi4X,IAAW,KAGdA,GAID71uB,GAAE8zJ,UAAUhQ,WAAW/vG,YAAY/zC,GAAE8zJ,WAHrCvrJ,WAAW7G,SAMf1B,GAAE8zJ,UAAUhQ,WAAW/vG,YAAY/zC,GAAE8zJ,WACrC5rI,GAAQjK,QAAQ8gB,IApBvB,QAwBD/+B,GAAE4zuB,MAAM32uB,QAAQ,SAAS6F,IACrBi8B,GAAMxX,OAAOuutB,GAAMhzuB,OAEvB9C,GAAE8zJ,UAAUhQ,WAAW/vG,YAAY/zC,GAAE8zJ,WACrC5rI,GAAQjK,QAAQ8gB,KAGxBh0B,GACAqouB,GACAG,GAAYA,GAAY3usB,GAAO6gC,KAAO7gC,GAAO+gC,MAAQ,KACrD6tqB,GAAaA,GAAa5usB,GAAO4/E,IAAM5/E,GAAOm7R,OAAS,KACvDn7R,GACAxvB,SAGJ8S,GAAQjK,QAAQ63tB,GAAM/quB,OA0XvBmd,GAyBX,IAAI6ttB,GAAwB,WACxB,IAAIC,GAAuB,oDAEvBC,GAAuB,eACvBC,GAAuB,gBACvBC,GAAuB,uCACvBC,GAAuB,mCACvBC,GAAuB,SACvBC,GAAuB,QACvBC,GAAuB,QACvBC,GAAuB,OACvBC,GAAuB,WACvBC,GAAuB,WAEvBC,GAAS,GAAIC,GAAS,GAE1B,YAAe3ttB,IACX,IA4GI4ttB,GA5GA9E,GAAO9otB,GACX,GAAIyZ,GAAei0sB,GAAQ5E,IACvB,OAAO4E,GAAO5E,IAQlB,YAAcrwtB,KANd,cACI,IAAIwR,GAAImjtB,GAAep5Y,KAAKh0U,IACxBiK,KACAjK,GAAQA,GAAMnQ,OAAOoa,GAAE,GAAG92B,SAI9B06uB,GACA,IAAI5jtB,GAAIxR,GAAMu7U,KAAKh0U,IACnB,GAAIiK,GACAjK,UAAQA,GAAMnQ,OAAOoa,GAAE,GAAG92B,QACnB82B,GAAE,GAIjB,cACI,IACI92B,GAAQsuC,GADRkrG,IAAQmhmB,QAAiB9ttB,IAAO,GAEpC,GAAI2sH,GAAO,CACP,IAAIh+H,GACA,eAAeqlV,KAAKh0U,KACpB,iBAAiBg0U,KAAKh0U,KACtB,UAAUg0U,KAAKh0U,IACnBA,UAAQA,GAAMnQ,OAAOlB,GAAM,GAAGxb,QAC9Bw5I,GAAQA,GAAMswlB,SACR9puB,GAASmpH,GAAK2wnB,OAChBxrsB,GAAU66E,GAAK0wnB,KAEZ,CAAErgmB,MAAOA,GAAOx5I,OAAQA,GAAQsuC,QAASA,KA8ExD,OAAKmssB,GAAMtxnB,GAAKywnB,KACZa,GA3EJ,YAA8Bl7P,IAC1B,IAAIh0Z,GACAqvpB,GAAKC,GACLn9F,GAAQ,GACR10jB,IAAU,EAEd,GAAImgC,GAAK+wnB,IAAY,CAqBjB,GAlBa,MADb3upB,GAAQ49B,GAAK6wnB,OAETzupB,GAAQ,QAEZwpjB,IACIxpjB,GAolBpB,YAAoBA,IAChB,IAAI9uE,GAAMmiB,WAAW2sD,IACrB,MAAI,QAAQkqV,KAAKlqV,IACNpkF,KAAK45E,GAAKtkE,GAAM,IAElB,OAAOg5Z,KAAKlqV,IACV9uE,GAEF,QAAQg5Z,KAAKlqV,IACXpkF,KAAK45E,GAAKtkE,GAAM,EAElB,OAAOg5Z,KAAKlqV,IACVpkF,KAAK45E,GAAKtkE,GAAM,SADtB,EA/lBmBq+tB,CAAWvvpB,IACnB49B,GAAKixnB,MAIM,OADXQ,GAAMzxnB,GAAK4wnB,KAEPa,GAAMzxnB,GAAK4wnB,IACJa,IAAO,KAAKnlU,KAAK8pE,MACxBv2Z,IAAU,GAEd6xpB,GAAM1xnB,GAAK4wnB,IACX5wnB,GAAKixnB,KAGL,QAAQ3kU,KAAK8pE,KAAsB,MAATh0Z,IAAwB,MAAPqvpB,GAAa,CACxD,IAAIh3uB,GAAIulH,GAAK0wnB,IAAc9rrB,GAAIo7D,GAAK0wnB,IACpC7wpB,IAAU,EACD,MAATm5M,GACIy4c,GAAM,OACM,QAALh3uB,KACPg3uB,GAAM,SAED,MAAL7srB,GACA8srB,GAAM,MACM,QAAL9srB,KACP8srB,GAAM,UAEV1xnB,GAAKixnB,IAIT,KAAOvttB,KAAUs8F,GAAKgxnB,KAAa,CAC/B,IAAI/1tB,GAAO22tB,KACX,IAAK32tB,GACD,MAEJs5nB,GAAMh+oB,KAAK0kB,IACX+kG,GAAKixnB,IAGT,MAAO,CACHr4uB,KAAU,SACVwpF,MAAUA,GACVm8C,GAAUkzmB,IAAOC,GAAMD,GAAM,IAAMC,GAAMD,IAAYC,IAAY,KACjEn9F,MAAUA,GACV10jB,QAAUA,KAiBZgypB,CAAqBP,KAErBA,GAAMtxnB,GAAKkxnB,OACjBI,GAfJ,cACI,GAAItxnB,GAAK+wnB,IAAY,CACjB,IAAInhuB,GAAMowG,GAAKmxnB,IACfvhuB,UAAMA,GAAIyM,QAAQ,iBAAkB,IACpC2jG,GAAKgxnB,IACE,CAAEp4uB,KAAM,MAAOgX,IAAKA,KAUzBkiuB,IAGFV,GAAO5E,IAAQ8E,IAAO,CAAE14uB,KAAM,QAG1C,OAAO,SAAS8qB,IACZ,OAAIyZ,GAAek0sB,GAAQ3ttB,IAChB2ttB,GAAO3ttB,IAEV2ttB,GAAO3ttB,IAASuptB,GAAcvptB,IAAOjtB,IAAI2oB,KA7I7B,GAiJxB6ttB,GAAiB,WACjB,IAAIv1tB,GAAQ,GACZ,OAAO,SAASgM,GAAOs1U,IACdA,KACDA,GAAY,YAGhB,IAAImd,GAAWzyV,GAAQs1U,GAEvB,GAAI77T,GAAezlB,GAAOy+V,IACtB,OAAOz+V,GAAMy+V,IAGjB,IAIIxoV,GAJA21d,GAAM,GACNl7X,GAAO,EAAGzuC,GAAM,EAChBo4pB,GAAW,EACXC,IAAY,EAGhB,YAAoBtxD,IAChB,OAAQ/ypB,GAAI+ypB,GAAGhpV,KAAKh0U,GAAMnQ,OAAOomE,KAGrC,YAActmE,IACV,OAAOA,GAAIgJ,QAAQ,aAAc,IAGrC,KAAOs9D,GAAMj2D,GAAM7sB,SACVm7uB,IAAaC,GAAW,cACzBF,KACAp4pB,OAEMq4pB,IAAaC,GAAW,cAC9BF,KACAp4pB,OAEMq4pB,IAAaC,GAAW,YAC9BD,GAAYrktB,GAAE,GACdgsD,MAEkB,KAAbq4pB,IAAoBC,GAAW,UAGlB,KAAbD,IAAoBC,GAAW,SAFpCt4pB,IAAO,EAKW,KAAjBw3H,IAAwB8giB,GAAW,QAIlB,KAAbD,IAAoBC,GAAW,QAHpCD,IAAY,EACZr4pB,MAMKs4pB,GAAWj5Y,MACXg5Y,KAAcD,IAAYp4pB,GAAMyuC,KACjCk7X,GAAI/sf,KAAKi/B,GAAK9R,GAAMkB,UAAUwjG,GAAMzuC,MACpCyuC,GAAOzuC,GAAMhsD,GAAE,GAAG92B,QAEtB8iF,IAAOhsD,GAAE,GAAG92B,QAGZ8iF,KAGR,OAAIyuC,GAAOzuC,IACP2pa,GAAI/sf,KAAKi/B,GAAK9R,GAAMkB,UAAUwjG,GAAMzuC,MAEhCjiE,GAAMy+V,IAAYmtI,IApEb,GAwEjB+pP,GAAc,SAAS31tB,IACvB,OAAO,SAASygC,IAIZ,IAEQxqB,GAFJ/d,GAAM8H,GAAMygC,IAShB,OARKvoC,MAEI+d,GAAI,2DAA2D+pU,KAAKv/S,OAE7DxqB,GAAI,kCAAkC+pU,KAAKv/S,QACnDvoC,GAAM8H,GAAMygC,IAAMxqB,GAAE,IAGrB/d,IAdG,CAgBfjZ,OAAOm8D,OAAO,OAEbo/qB,GAAiB,SAASx6tB,IAC1B,OAAO,SAASy+H,IACZ,IAAI96I,GAASqc,GAAMy+H,IACnB,OAAc,MAAV96I,KACAA,GAASqc,GAAMy+H,KAAQg8lB,OAAY,OAAQ,CAAEh8lB,KAAMA,KAAQ96I,QAExDA,IANM,CAQlB1E,OAAOm8D,OAAO,OA+EjB,YAAwBtC,GAAK7sD,IACzB,OAAOhN,OAAOwa,UAAUgsB,eAAezY,KAAK8rC,GAAK7sD,IAoBrD,YAAoB7N,GAAM4oF,IACtB,IAAInpB,GAAIw2qB,EAER,IADAj2uB,GAAO,YAAcA,GACdy/D,KAAMp4B,GAAeo4B,GAAGz/D,KAC3By/D,GAAI5+D,OAAOy7uB,eAAe78qB,IAEzBA,KACDA,GAAIw2qB,EAASnqD,OAEjBrsnB,GAAEz/D,KAASy/D,GAAEz/D,KAAS,IAAa,MAAP4oF,GAAc,EAAIA,IAGlD,YAAsB5oF,GAAMsc,IAExB25tB,EADAj2uB,GAAO,YAAcA,IACG,MAAPsc,GAAc,EAAIA,GAGvC,YAAoB6Q,GAAGvsB,GAAGwjE,IACtB,QAASz6D,GAAI,EAAGA,GAAIwjB,GAAEpsB,QAAS,CAC3B,IAAIf,GAAOmtB,GAAExjB,MACT2S,GAAMqjB,WAAWxS,GAAExjB,KACnBwI,MAAMmK,IACN1b,GAAEZ,GAAMokE,KAERxjE,GAAEZ,GAAMsc,MACN3S,KAKd,YAAwBxE,IACpB,IAAIo3uB,GAAex8sB,GAAiB56B,GAAO,iBACvCo3uB,IACAC,GAAWrF,GAAcoF,GAAc,QAASE,GAAc,GAElE,IAAIC,GAAmB38sB,GAAiB56B,GAAO,qBAC3Cu3uB,IACAF,GAAWrF,GAAcuF,GAAkB,QAASC,GAAY,GAIxE,YAAoBp/tB,GAAKq/tB,IACrB,IAAIrimB,IAAQmhmB,QAAiBn+tB,IAAK,GAClC,OAAIg9H,KACAA,GAAQA,GAAMswlB,QACV+R,GACArimB,GAAQA,GAAM+4b,YACK,IAAZ/4b,GAAMptH,IACbotH,GAAQ,OAGTA,GAGX,YAAqC12E,GAAUh5D,IAC3C,IAAIshE,GAAU,EAcd,gBACUA,IAAW,GACbthE,KAfRg5D,GAASjiE,QAAQ,SAASygD,IAEtB,QADIixc,GAASjxc,GAAG9I,iBAAiB,OACxB5vC,GAAI,EAAGA,GAAI2pf,GAAOvyf,SAAU4I,GAAG,CACpC,IAAIqrC,GAAMs+c,GAAO3pf,IACZqrC,GAAIvlB,WACL08C,KACAn3B,GAAI9xB,OAAS8xB,GAAI5xB,QAAU/c,OAIlC8lE,IACD9lE,KASR,YAAqBw9D,GAAUh5D,IAC3B,IAAI4kO,GAAO,GACX,YAAa31N,IACJk8tB,GAAYl8tB,MACbk8tB,GAAYl8tB,KAAO,EACnB21N,GAAKhvO,KAAKqZ,KAIlB+pD,GAASjiE,QAAQ,YAAc8N,IACvB,SAAS8ma,KAAK9ma,GAAQogX,UACtBtsU,GAAI9zC,GAAQylC,KAEhBulsB,GACI36sB,GACIF,GAAiBnwB,IAAU,qBAEjC9N,QAAQ,SAAS87qB,IACA,OAAXA,GAAG56qB,MACH0gD,GAAIk6nB,GAAG5jqB,OAIXpK,GAAQ8pD,UACR5vD,EAAM8F,GAAQ8pD,UAAU53D,QAAQ40uB,MAIxC,IAAI5joB,GAAQ68H,GAAK1uO,OACjB,gBACU6xG,IAAS,GAKXwnoB,GAA4Bv2qB,GAAUh5D,IAGhC,IAAV+nG,IACAvsG,KAEJopO,GAAK7tO,QAAQ,SAASkY,IAClB,IAAIk7B,GAAMghsB,GAAYl8tB,IAAO,IAAI3J,OAAO8kC,MAClC,UAAUuhY,KAAK18Z,MACjBk7B,GAAIwyG,YAAc,aAEtBxyG,GAAIG,IAAMr7B,GACNk7B,GAAIvlB,SACJppB,MAEA2uC,GAAI9xB,OAAS7c,GACb2uC,GAAI5xB,QAAU,WACV4ytB,GAAYl8tB,IAAO,KACnBzT,SAMhB,YAAsByC,IAClB,IAAIyE,GAAS,GACb,GAEIA,GAASygB,OAAOC,aAAa,GADrBnlB,GAAI,IAC2ByE,GACvCzE,GAAIZ,KAAKC,MAAMW,GAAI,UACdA,GAAI,GACb,OAAOyE,GA+BX,YAAuBm3K,IACnB,GAAyB,MAArBuxjB,EAASyB,SAAkB,CAC3B,IAAIzgnB,GAAMytD,GAAKp5B,KAAK2qlB,EAASnB,SAEzBmB,EAASyB,SADTzB,EAASyB,SACWllC,cAAmByjC,EAASyB,SAAUzgnB,IAEtCA,IAyBhC,YAA0BvnH,GAASmtuB,IAC/B,OAAO1suB,OAAO0vB,iBAAiBnwB,GAASmtuB,IAAa,MAGzD,YAA0B13uB,GAAOulD,GAAMoyrB,IACnC,IAAIxguB,GAAMnX,GAAM46B,iBAAiB2qB,IAYjC,OAXW,MAAPpuC,IAAuB,KAARA,MACX6mjB,EAAQyyE,OACRt5nB,GAAMnX,GAAM46B,iBAAiB,WAAa2qB,IACvCl9C,EAAYkntB,QACfp4sB,GAAMnX,GAAM46B,iBAAiB,QAAU2qB,IAChCy4gB,EAAQsxJ,MACfn4sB,GAAMnX,GAAM46B,iBAAiB,MAAQ2qB,IAC9BwrrB,IACP55tB,GAAMnX,GAAM46B,iBAAiB,OAAS2qB,MAG1C3yB,UAAUh3B,OAAS,IAAa,MAAPub,IAAuB,KAARA,IACjCwguB,GAEAxguB,GAIf,YAAgCnX,GAAOulD,GAAM/rD,GAAOo+uB,IAChD53uB,GAAMg/W,YAAYz5T,GAAM/rD,GAAOo+uB,IAC/BvvuB,EAAYoooB,OACRzwoB,GAAMg/W,YAAY,WAAaz5T,GAAM/rD,GAAOo+uB,IACzCvvuB,EAAYkntB,QACfvvtB,GAAMg/W,YAAY,QAAUz5T,GAAM/rD,GAAOo+uB,IAClC55K,EAAQsxJ,MACftvtB,GAAMg/W,YAAY,MAAQz5T,GAAM/rD,GAAOo+uB,IAChC7G,IACP/wuB,GAAMg/W,YAAY,OAASz5T,GAAM/rD,GAAOo+uB,IAIxC53uB,GAHAulD,GAAO,KAAOA,GAAKnkC,QAAQ,gBAAiB,SAAS1kB,GAAG4tE,GAAIuM,IACxD,OAAOvM,GAAKuM,GAAGm3E,iBAELx0J,IAItB,YAAmBwG,GAAOi+E,IACtBA,UAAO,UAAYA,GACZ,CACH1xE,MAAOiuB,WAAWI,GAAiB56B,GAAOi+E,GAAO,WACjDj+E,MAAO46B,GAAiB56B,GAAOi+E,GAAO,UACtCm3D,MAAO04b,GAAWlziB,GAAiB56B,GAAOi+E,GAAO,WAAW,IAIpE,YAAmB1zE,GAASg6D,IACxB,IAAIu6K,GAAOv0O,GAAQvK,MAAMwyC,QACrBpqC,GAASm8D,KACbh6D,UAAQvK,MAAMwyC,QAAUssM,GACjB12O,GAGX,YAAyBpI,GAAOi+E,IAC5B,IAAIv3B,GAAI9rB,GAAiB56B,GAAO,UAAYi+E,GAAO,WAAWpxE,MAAM,QAAQrR,IAAIg/B,YAChF,OAAgB,GAAZksB,GAAE9qD,QACF8qD,GAAEprD,KAAKorD,GAAE,IAENmxrB,GAAe,CAAEr4uB,EAAGknD,GAAE,GAAIiD,EAAGjD,GAAE,KAU1C,YAAkBorE,GAAKvsE,GAAMh7C,IACzB,IAAIvK,GAAO+9C,GAAI+5rB,GAAIC,GAAIh9D,GACvB,MAAmB,iBAARx1nB,IACPvlD,GAAQ06B,GAAiBnwB,IACzBwzC,GAAKvjB,WAAWI,GAAiB56B,GAAOulD,GAAKnkC,QAAQ,IAAK,SAC1D02tB,GAAKt9sB,WAAWI,GAAiB56B,GAAOulD,GAAKnkC,QAAQ,IAAK,WAC1D22tB,GAAKv9sB,WAAWI,GAAiB56B,GAAOulD,GAAKnkC,QAAQ,IAAK,YAC1D25pB,GAAKvgpB,WAAWI,GAAiB56B,GAAOulD,GAAKnkC,QAAQ,IAAK,WAEtC,iBAARmkC,KACZxH,GAAK+5rB,GAAKC,GAAKh9D,GAAKx1nB,IAEjB,CACHy+D,IAAS8N,GAAI9N,IAAMjmE,GACnBonB,MAAS2sD,GAAI3sD,MAAQ2yqB,GACrBv4a,OAASztM,GAAIytM,OAASw4a,GACtB9yqB,KAAS6sD,GAAI7sD,KAAO81mB,GACpBxuqB,MAASulH,GAAI3sD,MAAQ2sD,GAAI7sD,KAAO6yqB,GAAK/8D,GACrC36qB,OAAS0xH,GAAIytM,OAASztM,GAAI9N,IAAM+znB,GAAKh6rB,IAqB7C,YAA0B4iF,IACtB,OAAS,IAAMA,GAAW59H,KAAK45E,GAAM,IAmBzC,YAAsB43kB,GAAO7hoB,IACzBA,UAAI,IAAI26qB,IAAW36qB,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,GAAIA,GAAE,IACnD6hoB,GAAMr0pB,UAAUwyB,IACTA,GAGX,YAAqB6hoB,GAAOwS,IACxBxS,GAAMjhR,KAAKyzR,IAGf,YAAsBxnf,GAAM//K,GAAGmqD,GAAG/0C,IAE9B,QADI+gE,GAAS,IAAI03nB,IAAQ,CAAE7tsB,GAAGmqD,IAAK/0C,IAAS22rB,cAAe/msB,GAAI,EACxDA,GAAImxE,GAAO/5E,QACd2jL,GAAKishB,QAAQ71nB,GAAOnxE,MAAMmxE,GAAOnxE,MAAMmxE,GAAOnxE,OAItD,YAAwBkiD,IACpB,OAAIA,GAAElnD,GAAK,GAAKknD,GAAEiD,GAAK,KACnBjD,GAAElnD,EAAIknD,GAAEiD,EAAI,GAETjD,GAGX,YAAkCorE,GAAKkmnB,GAAKC,GAAKC,GAAKC,IAKlD,IAAIC,GAAOr1uB,KAAKsB,IAAI,EAAG2zuB,GAAIx4uB,GAAI64uB,GAAOt1uB,KAAKsB,IAAI,EAAG2zuB,GAAIrurB,GAClD2urB,GAAOv1uB,KAAKsB,IAAI,EAAG4zuB,GAAIz4uB,GAAI+4uB,GAAOx1uB,KAAKsB,IAAI,EAAG4zuB,GAAIturB,GAClD6urB,GAAOz1uB,KAAKsB,IAAI,EAAG6zuB,GAAI14uB,GAAIi5uB,GAAO11uB,KAAKsB,IAAI,EAAG6zuB,GAAIvurB,GAClD+urB,GAAO31uB,KAAKsB,IAAI,EAAG8zuB,GAAI34uB,GAAIm5uB,GAAO51uB,KAAKsB,IAAI,EAAG8zuB,GAAIxurB,GAElDluD,GAAIsH,KAAKulC,IACTwpF,GAAIvlH,OAAS6ruB,GAAOE,IACpBxmnB,GAAI1xH,QAAUm4uB,GAAOE,IACrB3mnB,GAAIvlH,OAASisuB,GAAOE,IACpB5mnB,GAAI1xH,QAAUu4uB,GAAON,KAGzB,OAAI58uB,GAAI,IACJ28uB,IAAQ38uB,GAAG48uB,IAAQ58uB,GACnB68uB,IAAQ78uB,GAAG88uB,IAAQ98uB,GACnB+8uB,IAAQ/8uB,GAAGg9uB,IAAQh9uB,GACnBi9uB,IAAQj9uB,GAAGk9uB,IAAQl9uB,IAGhB,CACH6qW,GAAI,CAAE9mW,EAAG44uB,GAAMzurB,EAAG0urB,IAClB1wjB,GAAI,CAAEnoL,EAAG84uB,GAAM3urB,EAAG4urB,IAClB9suB,GAAI,CAAEjM,EAAGg5uB,GAAM7urB,EAAG8urB,IAClBntuB,GAAI,CAAE9L,EAAGk5uB,GAAM/urB,EAAGgvrB,KAI1B,YAAyBpuuB,GAASunH,GAAKn0H,IACnC,IAAIqC,GAAQ06B,GAAiBnwB,IAEzBytuB,GAAMY,GAAgB54uB,GAAO,YAC7Bi4uB,GAAMW,GAAgB54uB,GAAO,aAC7Bm4uB,GAAMS,GAAgB54uB,GAAO,eAC7Bk4uB,GAAMU,GAAgB54uB,GAAO,gBAEjC,GAAY,WAARrC,IAA6B,WAARA,GAAmB,CACxC,IAAIm5J,GAAK+hlB,GAAU74uB,GAAO,OACtByL,GAAKotuB,GAAU74uB,GAAO,SACtB84uB,GAAKD,GAAU74uB,GAAO,UACtBsL,GAAKutuB,GAAU74uB,GAAO,QAK1B,GAJAg4uB,GAAIx4uB,GAAK8L,GAAGiB,MAAOyruB,GAAIrurB,GAAKmtG,GAAGvqJ,MAC/B0ruB,GAAIz4uB,GAAKiM,GAAGc,MAAO0ruB,GAAIturB,GAAKmtG,GAAGvqJ,MAC/B2ruB,GAAI14uB,GAAKiM,GAAGc,MAAO2ruB,GAAIvurB,GAAKmvrB,GAAGvsuB,MAC/B4ruB,GAAI34uB,GAAK8L,GAAGiB,MAAO4ruB,GAAIxurB,GAAKmvrB,GAAGvsuB,MACnB,WAAR5O,GAAmB,CACnB,IAAI2uE,GAAK9xC,WAAWI,GAAiB56B,GAAO,gBACxC+L,GAAKyuB,WAAWI,GAAiB56B,GAAO,kBACxCyuP,GAAKj0N,WAAWI,GAAiB56B,GAAO,mBACxC6L,GAAK2uB,WAAWI,GAAiB56B,GAAO,iBAC5Cg4uB,GAAIx4uB,GAAKqM,GAAImsuB,GAAIrurB,GAAK2iB,GACtB2rqB,GAAIz4uB,GAAKuM,GAAIksuB,GAAIturB,GAAK2iB,GACtB4rqB,GAAI14uB,GAAKuM,GAAImsuB,GAAIvurB,GAAK8kM,GACtB0pf,GAAI34uB,GAAKqM,GAAIssuB,GAAIxurB,GAAK8kM,IAI9B,MAAmB,iBAAR9wP,KACPq6uB,GAAIx4uB,GAAK7B,GAAMq6uB,GAAIrurB,GAAKhsD,GACxBs6uB,GAAIz4uB,GAAK7B,GAAMs6uB,GAAIturB,GAAKhsD,GACxBu6uB,GAAI14uB,GAAK7B,GAAMu6uB,GAAIvurB,GAAKhsD,GACxBw6uB,GAAI34uB,GAAK7B,GAAMw6uB,GAAIxurB,GAAKhsD,IAGrBo7uB,GAASjnnB,GAAKkmnB,GAAKC,GAAKC,GAAKC,IAOxC,YAAkBrmnB,GAAKknnB,GAAMC,GAAMC,GAAMC,IACrC,IAAI1yuB,GAAM2yuB,GAAyBtnnB,GAAKknnB,GAAMC,GAAMC,GAAMC,IACtDnB,GAAMvxuB,GAAI6/V,GACV2xY,GAAMxxuB,GAAIkhL,GACVuwjB,GAAMzxuB,GAAIgF,GACV0suB,GAAM1xuB,GAAI6E,GACVi0K,GAAO,IAAI+rhB,IAAK,CAAE/msB,KAAM,KAAMmzI,OAAQ,OAC1C6nC,UAAK+3D,OAAOxlH,GAAI7sD,KAAM6sD,GAAI9N,IAAMg0nB,GAAIrurB,GAChCqurB,GAAIx4uB,GACJ65uB,GAAa95jB,GAAMztD,GAAI7sD,KAAO+yqB,GAAIx4uB,EAAGsyH,GAAI9N,IAAMg0nB,GAAIrurB,EAAG,CAClD4+B,YAAY,IACZC,UAAU,GACV0sjB,QAAS8iG,GAAIx4uB,EACb21oB,QAAS6iG,GAAIrurB,IAGrB41H,GAAKg4D,OAAOzlH,GAAI3sD,MAAQ8yqB,GAAIz4uB,EAAGsyH,GAAI9N,KAC/Bi0nB,GAAIz4uB,GACJ65uB,GAAa95jB,GAAMztD,GAAI3sD,MAAQ8yqB,GAAIz4uB,EAAGsyH,GAAI9N,IAAMi0nB,GAAIturB,EAAG,CACnD4+B,YAAY,GACZC,SAAU,EACV0sjB,QAAS+iG,GAAIz4uB,EACb21oB,QAAS8iG,GAAIturB,IAGrB41H,GAAKg4D,OAAOzlH,GAAI3sD,MAAO2sD,GAAIytM,OAAS24a,GAAIvurB,GACpCuurB,GAAI14uB,GACJ65uB,GAAa95jB,GAAMztD,GAAI3sD,MAAQ+yqB,GAAI14uB,EAAGsyH,GAAIytM,OAAS24a,GAAIvurB,EAAG,CACtD4+B,WAAY,EACZC,SAAU,GACV0sjB,QAASgjG,GAAI14uB,EACb21oB,QAAS+iG,GAAIvurB,IAGrB41H,GAAKg4D,OAAOzlH,GAAI7sD,KAAOkzqB,GAAI34uB,EAAGsyH,GAAIytM,QAC9B44a,GAAI34uB,GACJ65uB,GAAa95jB,GAAMztD,GAAI7sD,KAAOkzqB,GAAI34uB,EAAGsyH,GAAIytM,OAAS44a,GAAIxurB,EAAG,CACrD4+B,WAAY,GACZC,SAAU,IACV0sjB,QAASijG,GAAI34uB,EACb21oB,QAASgjG,GAAIxurB,IAGd41H,GAAK1+J,QAGhB,YAAuB1J,GAAKnX,IACxB,IAAIoY,GAAMyQ,OAAO2R,WAAWrjB,KAC5B,OAAQnX,QACD,uBACH,OAAIoY,GAAIxc,OAAS,IACbwc,GAAM,IAAMA,IAETA,OACJ,cACH,OAAOkhuB,OAAcniuB,IAAK+Z,kBACvB,cACH,OAAOootB,OAAcniuB,IAAK62I,kBACvB,kBACA,cACH,OAAOurlB,GAAapiuB,GAAM,OACvB,kBACA,cACH,OAAOoiuB,GAAapiuB,GAAM,GAAG62I,sBAE7B,OAAO51I,IAyCf,YAAoBpY,IAChB,GAAIA,GAAMwyC,QACN,OAAOxyC,GAAMwyC,QAMjB,QADIpqC,GAAS,GACJ5D,GAAI,EAAGA,GAAIxE,GAAMpE,SAAU4I,GAChC4D,GAAO9M,KAAK0E,GAAMwE,IAAK,KAAOo2B,GAAiB56B,GAAOA,GAAMwE,MAEhE,OAAO4D,GAAOkV,KAAK,OAGvB,YAAmC/S,GAASg0B,IACxC,GAAIh0B,GAAQogX,SAAWimX,EAEnB,YADA4I,GAAejvuB,GAASg0B,IAG5B,IAAIk7sB,GAAO,GACX,YAAgBl2sB,GAAMm2sB,IAClB,IAAI15uB,GAAQ06B,GAAiBnwB,GAASg5B,IAAO9uB,GAAUzU,GAAMyU,QAE7D,GADAkluB,GAAe35uB,IACXyU,IAAsB,UAAXA,IAAkC,QAAXA,IAAoC,OAAfzU,GAAMuM,MAAgB,CAC7E,IAAIqtuB,GAAOrvuB,GAAQ2nhB,cAAc3rgB,cAAcqqtB,GAC/CgJ,GAAK55uB,MAAMwyC,QAAUqnsB,GAAW75uB,IAChC45uB,GAAK/tX,YA/DjB,YAAkCthX,GAASkK,IACvC,YAAwB5Z,GAAMmF,GAAO+9V,IACjC,OAAKA,IAGLA,GAAYA,GAAU38U,QAAQ,uBAAwB,MAxgB9D,YAAwBvmB,IACpB,IAAIqB,GAAS,GAAIo+D,GAAIw2qB,EAErB,IADAj2uB,GAAO,YAAcA,GACdy/D,IACCp4B,GAAeo4B,GAAGz/D,KAClBqB,GAAOZ,KAAKg/D,GAAEz/D,KAElBy/D,GAAI5+D,OAAOy7uB,eAAe78qB,IAE9B,OAAOp+D,GAAO0oF,UAggBHk1pB,CAAej/uB,IAAMW,IAAI,SAAS2b,IACrC,OAAO4iuB,GAAc5iuB,GAAKnX,MAC3Bsd,KAAKygV,KALGg8Y,GA3gBnB,YAAoBl/uB,IAChBA,OACOi2uB,EADPj2uB,GAAO,YAAcA,IA0gBQm/uB,CAAWn/uB,KAAS,EAAGmF,IAOpD,IACiB0yB,GADb1K,GAAIgqtB,GAAcv9tB,GAAS,QAC3BrM,GAAS,GACb4f,UAAEvrB,QAAQ,SAASygD,IACf,IAAIz2C,IACCisB,GAAI,uBAAuB+pU,KAAKv/S,KACjC90C,GAAO9M,KAAKo3B,GAAE,GAAGtR,QAAQ,oBAAqB,SAAS1kB,GAAG49D,IACtD,OAAOzxC,OAAOC,aAAarvB,SAAS6gE,GAAG,SAGrC5nC,GAAI,2BAA2B+pU,KAAKv/S,MAC1Cz2C,GAAMuruB,GAAct/sB,GAAE,IACtBtqB,GAAO9M,KAAK2+uB,GAAexzuB,GAAI,GAAIA,GAAI,OAEjCisB,GAAI,4BAA4B+pU,KAAKv/S,MAC3Cz2C,GAAMuruB,GAAct/sB,GAAE,IACtBtqB,GAAO9M,KAAK2+uB,GAAexzuB,GAAI,GAAIA,GAAI,GAAIA,GAAI,OAEzCisB,GAAI,wBAAwB+pU,KAAKv/S,KACvC90C,GAAO9M,KAAKiP,GAAQozC,aAAajrB,GAAE,KAAO,IAG1CtqB,GAAO9M,KAAK4hD,MAGb90C,GAAOkV,KAAK,IA6BQ48tB,CAAyB3vuB,GAASkK,IACrDlK,GAAQ2pW,aAAa0lY,GAAMF,IAC3BD,GAAKn+uB,KAAKs+uB,KAKlB,GAFAO,GAAO,UAAW5vuB,GAAQq9S,YAC1Buyb,GAAO,SAAU,MACbV,GAAK79uB,OAAS,EAAG,CACjB,IAAIw+uB,GAAY7vuB,GAAQ0oC,UACxB1oC,GAAQ0oC,WAAa,kCACrBumsB,GAAejvuB,GAASg0B,IACxBh0B,GAAQ0oC,UAAYmnsB,GACpBX,GAAKh9uB,QAAQ,SAASygD,IAAK3yC,GAAQgpC,YAAY2J,WAE/Cs8rB,GAAejvuB,GAASg0B,IAIhC,YAAwBh0B,GAASg0B,IAC7B,IAAIv+B,GAAQ06B,GAAiBnwB,IAEzBy5G,GAAM60nB,GAAU74uB,GAAO,OACvBmlE,GAAQ0zqB,GAAU74uB,GAAO,SACzBu/T,GAASs5a,GAAU74uB,GAAO,UAC1BilE,GAAO4zqB,GAAU74uB,GAAO,QAExBg5uB,GAAOJ,GAAgB54uB,GAAO,YAC9Bi5uB,GAAOL,GAAgB54uB,GAAO,aAC9Bm5uB,GAAOP,GAAgB54uB,GAAO,eAC9Bk5uB,GAAON,GAAgB54uB,GAAO,gBAE9BknD,GAAMtsB,GAAiB56B,GAAO,aAE9Bi1G,GAAkBr6E,GAAiB56B,GAAO,oBAC9Ci1G,GAAkB64d,GAAW74d,IAE7B,IAmBIoloB,GAAcC,GAnBdC,GAAkBhF,GAAsB36sB,GAAiB56B,GAAO,qBAChEw6uB,GAAmBxI,GAAep3sB,GAAiB56B,GAAO,sBAC1Dy6uB,GAAqBzI,GAAep3sB,GAAiB56B,GAAO,wBAC5D06uB,GAAmB1I,GAAep3sB,GAAiB56B,GAAO,sBAC1D26uB,GAAiB3I,GAAep3sB,GAAiB56B,GAAO,oBAgBxD+wuB,GAEoB,aADpBsJ,GAAer6uB,GAAMq6uB,gBAEjBC,GAAmB/vuB,GAAQvK,MAAMq6uB,aACjC9vuB,GAAQvK,MAAMq6uB,aAAe,QAIjCr8K,EAAQp4F,MAAQo4F,EAAQvjjB,QAAU,KAKlCgguB,GAAqBzI,GAAcznuB,GAAQqwuB,aAAaH,qBAG5D,IAAII,GAAWC,GAASvwuB,GAAQy0T,wBAAyB,iBAAkBz0T,KAK1E,WACG,IAAI+oY,GAAO14W,GAAiB56B,GAAO,QAC/B0yB,GAAI,uBAAuB+pU,KAAK62C,IACpC,GAAI5gX,GAAG,CACH,IAAI1K,GAAI0K,GAAE,GAAG7lB,MAAM,UACfm3G,GAAc,QAARh8F,GAAE,GAAe6ytB,GAAS72nB,IAAMxpF,WAAWxS,GAAE,IAAM6ytB,GAAS72nB,IAClE7+C,GAAgB,QAARn9C,GAAE,GAAe6ytB,GAAS11qB,MAAQ3qC,WAAWxS,GAAE,IAAM6ytB,GAAS51qB,KACtEs6P,GAAiB,QAARv3S,GAAE,GAAe6ytB,GAASt7a,OAAS/kS,WAAWxS,GAAE,IAAM6ytB,GAAS72nB,IACxE/+C,GAAe,QAARj9C,GAAE,GAAe6ytB,GAAS51qB,KAAOzqC,WAAWxS,GAAE,IAAM6ytB,GAAS51qB,KACpEx+D,GAAM,IAAI43I,IACV0ohB,IAAW,IAAIukC,KACdh0d,OAAOryK,GAAM++C,IACbuzH,OAAOpyK,GAAO6+C,IACduzH,OAAOpyK,GAAOo6P,IACdhoF,OAAOtyK,GAAMs6P,IACb1+S,QACLk6tB,GAAYt0uB,GAAKsgqB,IACjBxooB,GAAMxX,OAAOtgB,IACb83B,GAAQ93B,GACRu0uB,GAAcj0E,KAnBrB,GAuBD,IAAI1vgB,GAAO7yJ,GAAG4oD,GACVlpB,GAAUtJ,GAAiB56B,GAAO,WAEtC,GAAe,aAAXkkC,GAKA,IADAmzH,GAAQ,GACH7yJ,GAAI,EAAG4oD,GAAQ7iD,GAAQ8pD,SAAU7vD,GAAI4oD,GAAMxxD,SAAU4I,GACtD6yJ,GAAM/7J,KAAK8xD,GAAM5oD,IAAGw6T,8BAIJ,IADpB3nK,GAAQ9sJ,GAAQ0wuB,kBACNr/uB,SAKNy7J,GAAQ,CAAE9sJ,GAAQy0T,0BAS1B,IAFA3nK,GA+DA,YAAqBA,IACjB,GAAI,QAAQg6Q,KAAK9ma,GAAQogX,SAAU,CAC/B,IAAIiwC,GAAQk2U,EAASl2U,MACrB,GAAIA,IAA6D,YAApDhgY,GAAiBggY,GAAM56Z,MAAO,mBAAkC,CACzE,IAAIk7uB,GAAkBrC,GAAUj+U,GAAM56Z,MAAO,QAAQuM,MACjD4uuB,GAAiBtC,GAAUj+U,GAAM56Z,MAAO,OAAOuM,MAEnD,GAAwB,IAApB2uuB,IAA4C,IAAnBC,GACzB,OAAO9jlB,GAEX,IAAI+jlB,GAAWxgV,GAAMrwZ,QAAQy0T,wBAEzBq8a,GADYzgV,GAAMrwZ,QAAQ5I,KAAK,GAAGyrD,MAAM,GACf4xQ,wBAC7B,GAAIq8a,GAAar3nB,KAAOo3nB,GAASp3nB,KAAOq3nB,GAAap2qB,MAAQm2qB,GAASn2qB,KAClE,OAAOxgE,EAAM4yJ,IAAO77J,IAAI,SAASs2H,IAC7B,MAAO,CACH7sD,KAAS6sD,GAAI7sD,KAAOi2qB,GACpBl3nB,IAAS8N,GAAI9N,IAAMm3nB,GACnBh2qB,MAAS2sD,GAAI3sD,MAAQ+1qB,GACrB37a,OAASztM,GAAIytM,OAAS47a,GACtB/6uB,OAAS0xH,GAAI1xH,OACbmM,MAASulH,GAAIvlH,UAMjC,OAAO8qJ,GA1FHiklB,CAAYjklB,IAEf7yJ,GAAI,EAAGA,GAAI6yJ,GAAMz7J,SAAU4I,GAC5B+2uB,GAAWlklB,GAAM7yJ,IAAU,IAANA,GAASA,IAAK6yJ,GAAMz7J,OAAS,GAMtD,GAAuB,KAAnB2O,GAAQogX,SAAkBpgX,GAAQic,OAAS,OAAO6qZ,KAAK9ma,GAAQozC,aAAa,YACvEmzrB,EAAS2B,cAAgB1koB,GAAQxjG,GAASumuB,EAAS2B,cAAc,CAClE,MAAM/rrB,GAAIlvC,SAAS87rB,cACnB5spB,GAAEgurB,mBAAmBnquB,IACrB9F,EAAMiiD,GAAEu0rB,kBAAkBx+uB,QAAQ,SAASq1H,IACvC,MAAMzsE,GAAI,IAAIg5F,IACdh5F,GAAEm2rB,SAAW,CACT7muB,IAASpK,GAAQic,KACjBw9F,IAAS8N,GAAI9N,IACb7+C,MAAS2sD,GAAI3sD,MACbo6P,OAASztM,GAAIytM,OACbt6P,KAAS6sD,GAAI7sD,MAEjB1mC,GAAMxX,OAAOs+B,MAKzB,OAAIgyG,GAAMz7J,OAAS,GAAgB,aAAXsoC,KAA2B35B,GAAQozC,aAAa,oBAmVxE,cACI,IAAI89rB,GAAgB7gtB,GAAiB56B,GAAO,mBAC5C,GAAqB,QAAjBy7uB,GAAJ,CAGA,IAAIC,GAAoB9gtB,GAAiB56B,GAAO,uBAmChD,OAAQy7uB,QACD,aACA,WACA,SACHE,GAAY,SAASl5W,IAEjBA,GAAOziY,MAAMshY,SAAW,MACxBmB,GAAOziY,MAAM47uB,WAAa,OAC1Bn5W,GAAOziY,MAAMgM,aAAe,QAC5By2X,GAAOziY,MAAMuhY,WAAa,eAC1BkB,GAAOvvV,UAAY,CACf2osB,KAAW,SACXnznB,OAAW,SACXoznB,OAAW,UACbL,MAEN,UAEG,cACA,uBACHE,GAAY,SAASl5W,IACjBn6K,GAAa,SAAStoL,MAChBA,GACmB,wBAAjBy7sB,IAA2Cz7sB,GAAM,KACjDA,GAAM,IAAMA,IAEhByiW,GAAOvvV,UAAYlT,GAAM,QAGjC,UAEG,kBACA,cACH27sB,GAAY,SAASl5W,IACjBn6K,GAAa,SAAStoL,IAClBA,IAAMs5sB,OAAct5sB,GAAM,GACL,eAAjBy7sB,KACAz7sB,GAAMA,GAAIguH,eAEdy0O,GAAOvvV,UAAYlT,GAAM,QAGjC,UAEG,kBACA,kBACA,kBACA,cACH27sB,GAAY,SAASl5W,IACjBn6K,GAAa,SAAStoL,IAClBA,GAAMu5sB,GAAav5sB,IACf,UAAUqxY,KAAKoqU,MACfz7sB,GAAMA,GAAIguH,eAEdy0O,GAAOvvV,UAAYlT,GAAM,SAvFrC,YAAqBvkC,IACjBsgvB,GAAUxxuB,GAAS,WACfA,GAAQvK,MAAM+/B,SAAW,WACzB,IAAI0iW,GAASl4X,GAAQ2nhB,cAAc3rgB,cAAcqqtB,GACjDnuW,GAAOziY,MAAM+/B,SAAW,WACxB0iW,GAAOziY,MAAM6jc,UAAY,aACA,WAAzB7jX,IACIyiT,GAAOziY,MAAMuM,MAAQ,MACrBk2X,GAAOziY,MAAMilE,KAAO,SACpBw9T,GAAOziY,MAAM+0O,UAAY,SAEzB0tJ,GAAOziY,MAAMilE,KAAO,MAExBxpE,GAAEgnY,IACFl4X,GAAQ2pW,aAAauuB,GAAQl4X,GAAQq9S,YACrC8qb,GAAcjwW,GAAQlkW,IACtBh0B,GAAQgpC,YAAYkvV,MAI5B,YAAsBhnY,IAClB,IAAIusB,GAAIzd,GAAQ+4I,WAAWjvF,SACvBprB,GAAI1+B,GAAQozC,aAAa,qBAC7B,GAAS,MAAL1U,GACA,OAAOxtC,GAAI,EAAFwtC,GAAKjhB,GAAEpsB,QAEpB,QAAS4I,GAAI,EAAGA,GAAIwjB,GAAEpsB,SAAU4I,GAC5B,GAAIwjB,GAAExjB,MAAO+F,GACT,OAAO9O,GAAE+I,GAAGwjB,GAAEpsB,SArX1BogvB,IAqyBR,YAAqBzxuB,IACjB,MAAO,+BAA+B8ma,KAAK9ma,GAAQogX,SAxxB3CsxX,CAAY1xuB,KAEL,wBAAwB8ma,KAAKz2Y,GAAiB56B,GAAO,cAErD,wBAAwBqxa,KAAKz2Y,GAAiB56B,GAAO,gBAErD,wBAAwBqxa,KAAKz2Y,GAAiB56B,GAAO,iBAdhE,cACI,IAAI+mqB,GAAWm1E,GAAgB3xuB,GAASswuB,GAAU,WAC9Cp0uB,GAAM,IAAI43I,IACd08lB,GAAYt0uB,GAAKsgqB,IACjBxooB,GAAMxX,OAAOtgB,IACb83B,GAAQ93B,GACRu0uB,GAAcj0E,IASdo1E,GA6sBZ,YAA2B5xuB,GAASg0B,IAChC,IAAIk7N,GAEJ,GAAIlvP,GAAQwgjB,mBACRtxT,GAASlvP,GAAQwgjB,6BACV//iB,OAAOwmuB,OAASxmuB,OAAOwmuB,MAAMC,QAAUlnuB,GAAQozC,aAAa3yC,OAAOwmuB,MAAM9gR,KAAK,SAAU,CAC/F,IAAI8sL,GAASxyoB,OAAOwmuB,MAAM4K,eAAepxuB,OAAOwmuB,MAAMC,OAAOlnuB,KACzDizoB,KAAWA,GAAO6+F,iBAAmB7+F,GAAOzwQ,gBAExCtzI,GADA+jZ,GAAO6+F,gBACE7+F,GAAO6+F,kBAEP7+F,GAAOzwQ,gBAK5B,IAAKtzI,GACD,OAAO,EAGX,IAAItpM,GAAO,IAAIkuF,IACfluF,GAAKkE,SAAS/4D,KAAKm+P,IAEnB,IAAItzG,GAAO57I,GAAQy0T,wBACnB7uQ,UAAKjwD,UAAUmtsB,MAAgBh/pB,UAAU83G,GAAKlhF,KAAMkhF,GAAKniC,MAEzDzlF,GAAMxX,OAAOopC,KAEN,EAruBFmsrB,CAAkB/xuB,GAASg0B,KAC5Bg+sB,GAAehyuB,GAASg0B,IAGxBwysB,GAA6B,YAAhBsJ,KACb9vuB,GAAQvK,MAAMq6uB,aAAeC,IAG1B/7sB,GA8CP,YAAkB62G,GAAOjrD,GAAKqypB,GAAMC,GAAOC,GAAQC,GAAIC,GAAI18uB,IACvD,KAAIs8uB,IAAQ,GAAZ,CAIA,IAAIj9jB,GAAM7pF,GAAO,IAAI2oD,IACrB25kB,GAAatioB,GAAMx1F,IACnBq+B,GAAMxX,OAAO2uE,IAEbmipB,GAAe8E,IACf9E,GAAe+E,IAGfr9jB,GAAO,IAAI+rhB,IAAK,CACZ/msB,KAAM,CAAE6wI,MAAOA,IACfsC,OAAQ,OAEZhiD,GAAK3uE,OAAOw4J,IACZA,GAAK+3D,OAAOqlgB,GAAGn9uB,EAAIuD,KAAKsB,IAAIs4uB,GAAGn9uB,EAAGi9uB,IAAS,EAAG,GACzCllgB,OAAOptJ,IAAOyypB,GAAGp9uB,EAAIuD,KAAKsB,IAAIu4uB,GAAGp9uB,EAAGk9uB,IAAU,GAAI,GAClDnlgB,OAAOptJ,GAAMpnF,KAAKsB,IAAIu4uB,GAAGp9uB,EAAGk9uB,IAASF,IACrCjlgB,OAAOx0O,KAAKsB,IAAIs4uB,GAAGn9uB,EAAGi9uB,IAAQD,IAC9B37tB,QAED87tB,GAAGn9uB,GACHq9uB,GAAgBJ,GAAOE,GAAI,EAAE,EAAI,EAAG,EAAG,EAAGA,GAAGn9uB,EAAG,IAGhDo9uB,GAAGp9uB,GACHq9uB,GAAgBH,GAAQE,GAAI,CAAE,EAAG,EAAG,EAAG,EAAGzypB,GAAMyypB,GAAGp9uB,EAAG,IAK1D,YAAyBk9uB,GAAQh2rB,GAAGxmD,IAChC,IAAIinF,GAAQpkF,KAAK45E,GAAG,EAAI+/pB,IAAUA,GAASF,IAIvC75a,GAAK,CACLnjU,EAAGknD,GAAElnD,EAAIk9uB,GACT/yrB,EAAGjD,GAAEiD,EAAI6yrB,IAGTj9jB,GAAO,IAAI+rhB,IAAK,CAChB/msB,KAAM,CAAE6wI,MAAOA,IACfsC,OAAQ,OACT4/F,OAAO,EAAG,GAEb0gf,GAAaz4iB,GAAMr/K,IAEnBm5uB,GAAa95jB,GAAM,EAAG74H,GAAEiD,EAAG,CACvB4+B,YAAY,GACZC,UAAWs0pB,GAAiB31pB,IAC5B+tjB,QAASxulB,GAAElnD,EACX21oB,QAASzulB,GAAEiD,IAGXg5Q,GAAGnjU,EAAI,GAAKmjU,GAAGh5Q,EAAI,GACnB41H,GAAKg4D,OAAOorF,GAAGnjU,EAAIuD,KAAK65E,IAAIuK,IAAQzgC,GAAEiD,EAAIg5Q,GAAGh5Q,EAAI5mD,KAAKwkF,IAAIJ,KAC1DkypB,GAAa95jB,GAAM,EAAG74H,GAAEiD,EAAG,CACvB4+B,YAAau0pB,GAAiB31pB,IAC9BqB,UAAU,GACV0sjB,QAASvyU,GAAGnjU,EACZ21oB,QAASxyU,GAAGh5Q,EACZg+qB,eAAe,KAGdhla,GAAGnjU,EAAI,EACZ+/K,GAAKg4D,OAAOorF,GAAGnjU,EAAGg9uB,IACbjlgB,OAAO,EAAGilgB,IAGfj9jB,GAAKg4D,OAAOorF,GAAGnjU,EAAGg9uB,IACbjlgB,OAAOorF,GAAGnjU,EAAG,GAGtBk2F,GAAK3uE,OAAOw4J,GAAK1+J,UAkCzB,YAA2B0d,GAAOuzF,GAAK+pN,GAAY2+Z,GAAkBC,GAAoBC,GAAkBC,IACvG,GAAK9+Z,IAA6B,QAAdA,GAIpB,GAAuB,OAAnBA,GAAWl+U,KAAe,CAC1B,IAAIkyC,GAAMghsB,GAAYh1Z,GAAWlnU,KAC7Bk7B,IAAOA,GAAItjC,MAAQ,GAAKsjC,GAAIzvC,OAAS,GACrC28uB,GAAoBx+sB,GAAOuzF,GAAKjiF,GAAItjC,MAAOsjC,GAAIzvC,OAAQ,SAASm+B,GAAOw1S,IACnEx1S,GAAMxX,OAAO,IAAI+oB,IAAM+rS,GAAWlnU,IAAKo/T,eAGrB,UAAnB8H,GAAWl+U,KAGlB,OAFAo/uB,GAAoBx+sB,GAAOuzF,GAAKA,GAAIvlH,MAAOulH,GAAI1xH,OA2X3D,YAA0BwiY,IACtB,OAAO,SAASrkW,GAAOw1S,IACnB,IAAIxnU,GAAQwnU,GAAKxnU,QAASnM,GAAS2zU,GAAK3zU,SAExC,OAAQwiY,GAASjlY,UACV,SAGH,IAAIwpF,GAA0B,MAAlBy7S,GAASz7S,MAAgBy7S,GAASz7S,MAAQpkF,KAAK45E,GAC3D,OAAQimT,GAASt/P,QACV,MACHn8C,GAAQ,EACR,UACG,OACHA,IAASpkF,KAAK45E,GAAK,EACnB,UACG,SACHwK,GAAQpkF,KAAK45E,GACb,UACG,QACHwK,GAAQpkF,KAAK45E,GAAK,EAClB,UACG,eAAiB,WACpBwK,IAASpkF,KAAKqkF,MAAMhnF,GAAQmM,IAC5B,UACG,gBAAkB,YACrB46E,GAAQpkF,KAAKqkF,MAAMhnF,GAAQmM,IAC3B,UACG,kBAAoB,cACvB46E,GAAQpkF,KAAK45E,GAAK55E,KAAKqkF,MAAMhnF,GAAQmM,IACrC,UACG,mBAAqB,eACxB46E,GAAQpkF,KAAK45E,GAAK55E,KAAKqkF,MAAMhnF,GAAQmM,IAIrCq2X,GAASh+S,UACTuC,IAASpkF,KAAK45E,KAIlBwK,IAAS,EAAIpkF,KAAK45E,IACN,IACRwK,IAAS,EAAIpkF,KAAK45E,IAUtB,IAAIqgqB,GAAQj6uB,KAAKiN,IAAIzD,GAAQxJ,KAAKwkF,IAAIJ,KAAUpkF,KAAKiN,IAAI5P,GAAS2C,KAAK65E,IAAIuK,KAkCvE81pB,GAAcl6uB,KAAKm6uB,KAAK3wuB,GAAQxJ,KAAK8huB,IAAI19oB,IAAS/mF,IAClDmnF,GAAMxkF,KAAKwkF,IAAI01pB,IAAcrgqB,GAAM75E,KAAK65E,IAAIqgqB,IAC5C9ypB,GAAMpnF,KAAKiN,IAAIu3E,IAAOxkF,KAAKiN,IAAI4sE,IAC/Bp9E,GAAI2qF,GAAI,EAAI5C,GACZ59B,GAAIwgC,GAAI,EAAIvN,GAIZuK,GAAQpkF,KAAK45E,GAAG,GAAKwK,IAAS,EAAEpkF,KAAK45E,GAAG,IACxCn9E,IAAKA,GACLmqD,IAAKA,IAIT,IAAIwzrB,GAAW,GAAIh4qB,GAAQ,EACvBm0kB,GAAQ12Q,GAAS02Q,MAAM99oB,IAAI,SAASkB,GAAG8H,IACvC,IAAIyjB,GAASvrB,GAAEwtC,QACXjiB,GACAA,GAASuS,WAAWvS,IAAU,IAC3B+rJ,GAAMp4K,OACTqsB,GAASuS,WAAW99B,GAAEd,QAAUohvB,GACnB,IAAVxgkB,GACHv0J,GAAS,EACFzjB,IAAKo+X,GAAS02Q,MAAM19oB,OAAS,IACpCqsB,GAAS,GAEb,IAAIjI,GAAO,CACPo1H,MAAO14I,GAAE04I,MAAM+4b,YACflmjB,OAAQA,IAEZ,OAAc,MAAVA,IACAk9C,GAAQl9C,GAERk1tB,GAAS1gvB,QAAQ,SAASC,GAAG8H,IACd9H,GAAEsjB,KACRiI,OAASvrB,GAAEuoE,MAAQE,GAAQzoE,GAAEuoE,OAASzgE,GAAI,IAAM24uB,GAASvhvB,OAAS,KAE3EuhvB,GAAW,IAEXA,GAAS7hvB,KAAK,CAAE2pE,KAAME,GAAOnlD,KAAMA,KAEhCA,KAGP6C,GAAQ,CAAE,GAAMrjB,GAAG,GAAMmqD,IACzBxpB,GAAM,CAAE,GAAM3gC,GAAG,GAAMmqD,IAG3BprB,GAAMxX,OACFukrB,aAAcv3X,IACTr8L,OAAO,MACPnzI,KAAK,IAAIy0tB,IAAe,CACrBn2sB,MAAYA,GACZsd,IAAYA,GACZm5mB,MAAYA,GACZ64C,WAAY,MAGxB,UACG,SAECnnrB,OAAOW,SAAWX,OAAOW,QAAQkL,KACjC7L,OAAOW,QAAQkL,IAAI,6DAhhBgCumuB,CAAiBvha,KAK5E,YAA6Bt9S,GAAOuzF,GAAKurnB,GAAWC,GAAYC,IAC5D,IAA2C9hvB,GAAvC+hvB,GAAeH,GAAYC,GAG3BG,GAAS3rnB,GAQb,GAPwB,eAAxB4rnB,IACID,GAAS3C,GAAS2C,GAAQ,iBAAkBlzuB,IAC5CkzuB,GAAS3C,GAAS2C,GAAQ,YAAalzuB,KACZ,eAApBmwuB,KACP+C,GAAS3C,GAAS2C,GAAQ,iBAAkBlzuB,MAG3C,yBAAyB8ma,KAAKspU,IAC/B,GAAsB,WAAlBA,GACAl/uB,GAAIsH,KAAKulC,IAAIm1sB,GAAOlxuB,MAAQ8wuB,GACfI,GAAOr9uB,OAASk9uB,IAC7BD,IAAa5hvB,GACb6hvB,IAAc7hvB,WAES,SAAlBk/uB,GACLl/uB,GAAIsH,KAAKsB,IAAIo5uB,GAAOlxuB,MAAQ8wuB,GACfI,GAAOr9uB,OAASk9uB,IAC7BD,IAAa5hvB,GACb6hvB,IAAc7hvB,OAEb,CACD,IAAIopD,GAAO81rB,GAAe9tuB,MAAM,QAG5BwwuB,GADA,KAAKhsU,KAAKxsX,GAAK,IACH44rB,GAAOlxuB,MAAQiuB,WAAWqqB,GAAK,IAAM,IAErCrqB,WAAWqqB,GAAK,IAI5By4rB,GADe,GAAfz4rB,GAAKjpD,QAA0B,QAAXipD,GAAK,GACZw4rB,GAAYG,GACtB,KAASnsU,KAAKxsX,GAAK,IACT44rB,GAAOr9uB,OAASo6B,WAAWqqB,GAAK,IAAM,IAEtCrqB,WAAWqqB,GAAK,IAKzC,IAAI65B,GAAM71D,OAAO4xtB,IAUjB,OAAQ/7pB,QACD,SAAWA,GAAM,WAAY,UAC7B,MAAWA,GAAM,QAAS,UAC1B,OAAWA,GAAM,QAAS,UAC1B,QAAWA,GAAM,WAAY,UAC7B,SAAWA,GAAM,UAIN,IADlBA,GAAMA,GAAI7xE,MAAM,QACRjR,SACJ8iF,GAAI,GAAK,OAITA,GAAI,GADR,KAAS2yV,KAAK3yV,GAAI,IACLlkD,WAAWkkD,GAAI,IAAM,KAAO++pB,GAAOlxuB,MAAQ8wuB,IAE3C7itB,WAAWkkD,GAAI,IAGxBA,GAAI,GADR,KAAS2yV,KAAK3yV,GAAI,IACLlkD,WAAWkkD,GAAI,IAAM,KAAO++pB,GAAOr9uB,OAASk9uB,IAE5C9itB,WAAWkkD,GAAI,IAG5B,IAAIq1P,GAAO,IAAIs5X,IAAS,CAAEowC,GAAOx4qB,KAAOyZ,GAAI,GAAI++pB,GAAOz5nB,IAAMtlC,GAAI,IAAM,CAAE2+pB,GAAWC,KAMpF,cACI,KAAOvpa,GAAK75S,OAAO16B,EAAIsyH,GAAI7sD,MACvB8uQ,GAAK75S,OAAO16B,GAAK69uB,GAIzB,cACI,KAAOtpa,GAAK75S,OAAOyvB,EAAImoE,GAAI9N,KACvB+vN,GAAK75S,OAAOyvB,GAAK2zrB,GAIzB,cACI,KAAOvpa,GAAK75S,OAAO16B,EAAIsyH,GAAI3sD,OACvBo4qB,GAASh/sB,GAAOw1S,GAAK1uN,SACrB0uN,GAAK75S,OAAO16B,GAAK69uB,GAIzB,GAAwB,aAApB7C,GACA+C,GAASh/sB,GAAOw1S,YAES,YAApByma,GACLmD,KACAC,aAEyB,YAApBpD,GAEL,IADAqD,KACO9pa,GAAK75S,OAAOyvB,EAAImoE,GAAIytM,QACvBg+a,GAASh/sB,GAAOw1S,GAAK1uN,SACrB0uN,GAAK75S,OAAOyvB,GAAK2zrB,WAGI,UAApB9C,GAA8B,CACnCmD,KACAE,KAEA,QADI3jtB,GAAS65S,GAAK75S,OAAOmrF,QAClB0uN,GAAK75S,OAAOyvB,EAAImoE,GAAIytM,QACvBwU,GAAK75S,OAAO16B,EAAI06B,GAAO16B,EACvBo+uB,KACA7pa,GAAK75S,OAAOyvB,GAAK2zrB,KA4GjC,YAAoBxrnB,GAAK+zb,GAASzwc,IAC9B,GAAkB,IAAd0c,GAAIvlH,OAA8B,IAAfulH,GAAI1xH,OAA3B,EAzRJ,YAAwB0xH,IACpB,IAAI+pN,GAAa,IAAIx9L,IAIrB,GAHA08lB,GAAYl/Z,GAAYk9Z,GAASjnnB,GAAKknnB,GAAMC,GAAMC,GAAMC,KACxD56sB,GAAMxX,OAAO80T,IAET5mO,GAAiB,CACjB,IAAIsqE,GAAO,IAAI+rhB,IAAK,CAChB/msB,KAAM,CAAE6wI,MAAOngC,GAAgBk5d,aAC/Bz2b,OAAQ,OAEZ6nC,GAAK+3D,OAAOxlH,GAAI7sD,KAAM6sD,GAAI9N,KACrBuzH,OAAOzlH,GAAI3sD,MAAO2sD,GAAI9N,KACtBuzH,OAAOzlH,GAAI3sD,MAAO2sD,GAAIytM,QACtBhoF,OAAOzlH,GAAI7sD,KAAM6sD,GAAIytM,QACrB1+S,QACLg7T,GAAW90T,OAAOw4J,IAGtB,QAAS/6K,GAAI+1uB,GAAgB3+uB,SAAU4I,IAAK,GACxCs5uB,GACIjia,GAAY/pN,GACZyonB,GAAgB/1uB,IAChBg2uB,GAAiBh2uB,GAAIg2uB,GAAiB5+uB,QACtC6+uB,GAAmBj2uB,GAAIi2uB,GAAmB7+uB,QAC1C8+uB,GAAiBl2uB,GAAIk2uB,GAAiB9+uB,QACtC++uB,GAAen2uB,GAAIm2uB,GAAe/+uB,SAoQ1CmivB,CAAejsnB,IAEf,IAAIksnB,GAAkB/4qB,GAAK14D,MAAQ,IAAOs5iB,IAAkB,OAAP3+f,IAAkBkuD,IAAiB,OAAPluD,IAC7E+2rB,GAAmB94qB,GAAM54D,MAAQ,IAAO6oG,IAAiB,OAAPluD,IAAkB2+f,IAAkB,OAAP3+f,IAenF,GAAkB,IAAd88D,GAAIz3G,OAA8B,IAAf04D,GAAK14D,OAA+B,IAAhB44D,GAAM54D,OAAgC,IAAjBgzT,GAAOhzT,MAAvE,CAMA,GAAIy3G,GAAIoxB,OAASjwE,GAAMiwE,OAASpxB,GAAIoxB,OAASmqL,GAAOnqL,OAASpxB,GAAIoxB,OAASnwE,GAAKmwE,OAGvEpxB,GAAIz3G,OAAS44D,GAAM54D,OAASy3G,GAAIz3G,OAASgzT,GAAOhzT,OAASy3G,GAAIz3G,OAAS04D,GAAK14D,OAEvEyxuB,IAAkBC,GAAiB,CAEnCnsnB,GAAMgpnB,GAAShpnB,GAAK9N,GAAIz3G,MAAM,GAG9B,IAAIgzK,GAAO28jB,GAAgB3xuB,GAASunH,GAAK9N,GAAIz3G,MAAM,GAMnD,OALAgzK,GAAK3qK,QAAQ8iI,OAAS,CAClBtC,MAAOpxB,GAAIoxB,MACX7oI,MAAOy3G,GAAIz3G,YAEfgyB,GAAMxX,OAAOw4J,IAQzB,GAAe,IAAXy5jB,GAAKx5uB,GAAsB,IAAXy5uB,GAAKz5uB,GAAsB,IAAX05uB,GAAK15uB,GAAsB,IAAX25uB,GAAK35uB,GAGjDwkH,GAAIz3G,MAAQ,GAAK04D,GAAK14D,MAAQ,GAAK44D,GAAM54D,MAAQ,GAAKgzT,GAAOhzT,MAAQ,EA6CrE,OA3CIy3G,GAAIz3G,MAAQ,GACZgyB,GAAMxX,OACF,IAAIukrB,IAAK,CACL5zjB,OAAQ,CAAEnrI,MAAOy3G,GAAIz3G,MAAO6oI,MAAOpxB,GAAIoxB,SAEtCkiG,OAAOxlH,GAAI7sD,KAAM6sD,GAAI9N,IAAMA,GAAIz3G,MAAM,GACrCgrO,OAAOzlH,GAAI3sD,MAAO2sD,GAAI9N,IAAMA,GAAIz3G,MAAM,IAK/CgzT,GAAOhzT,MAAQ,GACfgyB,GAAMxX,OACF,IAAIukrB,IAAK,CACL5zjB,OAAQ,CAAEnrI,MAAOgzT,GAAOhzT,MAAO6oI,MAAOmqL,GAAOnqL,SAE5CkiG,OAAOxlH,GAAI7sD,KAAM6sD,GAAIytM,OAASA,GAAOhzT,MAAM,GAC3CgrO,OAAOzlH,GAAI3sD,MAAO2sD,GAAIytM,OAASA,GAAOhzT,MAAM,IAKrDyxuB,IACAz/sB,GAAMxX,OACF,IAAIukrB,IAAK,CACL5zjB,OAAQ,CAAEnrI,MAAO04D,GAAK14D,MAAO6oI,MAAOnwE,GAAKmwE,SAExCkiG,OAAOxlH,GAAI7sD,KAAOA,GAAK14D,MAAM,EAAGulH,GAAI9N,KACpCuzH,OAAOzlH,GAAI7sD,KAAOA,GAAK14D,MAAM,EAAGulH,GAAIytM,cAK7C0+a,IACA1/sB,GAAMxX,OACF,IAAIukrB,IAAK,CACL5zjB,OAAQ,CAAEnrI,MAAO44D,GAAM54D,MAAO6oI,MAAOjwE,GAAMiwE,SAE1CkiG,OAAOxlH,GAAI3sD,MAAQA,GAAM54D,MAAM,EAAGulH,GAAI9N,KACtCuzH,OAAOzlH,GAAI3sD,MAAQA,GAAM54D,MAAM,EAAGulH,GAAIytM,UAS3D,IAAI94T,GAAM2yuB,GAAyBtnnB,GAAKknnB,GAAMC,GAAMC,GAAMC,IACtDnB,GAAMvxuB,GAAI6/V,GACV2xY,GAAMxxuB,GAAIkhL,GACVuwjB,GAAMzxuB,GAAIgF,GACV0suB,GAAM1xuB,GAAI6E,GAGd4yuB,GAASl6nB,GAAIoxB,MACJtjB,GAAIvlH,MAAOy3G,GAAIz3G,MAAO04D,GAAK14D,MAAO44D,GAAM54D,MACxCyruB,GAAKC,GACL,CAAE,EAAG,EAAG,EAAG,EAAGnmnB,GAAI7sD,KAAM6sD,GAAI9N,MAGrCk6nB,GAAS3+a,GAAOnqL,MACPtjB,GAAIvlH,MAAOgzT,GAAOhzT,MAAO44D,GAAM54D,MAAO04D,GAAK14D,MAC3C2ruB,GAAKC,GACL,EAAE,EAAI,EAAG,GAAG,EAAIrmnB,GAAI3sD,MAAO2sD,GAAIytM,SAQxC2+a,GAASj5qB,GAAKmwE,MACLtjB,GAAI1xH,OAAQ6kE,GAAK14D,MAAOgzT,GAAOhzT,MAAOy3G,GAAIz3G,MAC1C2kL,GAAIinjB,IAAMjnjB,GAAI8mjB,IACd,CAAE,GAAG,EAAI,EAAG,EAAGlmnB,GAAI7sD,KAAM6sD,GAAIytM,SAGtC2+a,GAAS/4qB,GAAMiwE,MACNtjB,GAAI1xH,OAAQ+kE,GAAM54D,MAAOy3G,GAAIz3G,MAAOgzT,GAAOhzT,MAC3C2kL,GAAI+mjB,IAAM/mjB,GAAIgnjB,IACd,CAAE,EAAG,GAAG,EAAI,EAAGpmnB,GAAI3sD,MAAO2sD,GAAI9N,OAdvC,YAAa1pD,IACT,MAAO,CAAE96D,EAAG86D,GAAE3Q,EAAGA,EAAG2Q,GAAE96D,KA4MlC,YAAqB+K,GAASoK,GAAK4pB,IAC/B,IAAIuzF,GApsCR,YAAuBvnH,IACnB,IAAIunH,GAAMvnH,GAAQy0T,wBAClBltM,UAAMgpnB,GAAShpnB,GAAK,iBAAkBvnH,IAChCuwuB,GAAShpnB,GAAK,YAAavnH,IAisCvB4zuB,CAAc5zuB,IACpBwpU,GAAO,IAAIs5X,IAAS,CAAEv7kB,GAAI7sD,KAAM6sD,GAAI9N,KAAO,CAAE8N,GAAIvlH,MAAOulH,GAAI1xH,SAC5Do3I,GAAQ,IAAI1nG,IAAMn7B,GAAKo/T,IAC3Bgna,GAAYvjmB,GAAO0kmB,GAAgB3xuB,GAASunH,GAAK,YACjDvzF,GAAMxX,OAAOywH,IAGjB,YAAoBxvH,GAAGD,IACnB,IAAIosnB,GAAKz5mB,GAAiB1S,IACtBo2tB,GAAK1jtB,GAAiB3S,IACtBs2tB,GAAK7jtB,WAAWI,GAAiBu5mB,GAAI,YACrCmqG,GAAK9jtB,WAAWI,GAAiBwjtB,GAAI,YACrCG,GAAK3jtB,GAAiBu5mB,GAAI,YAC1B1lZ,GAAK7zN,GAAiBwjtB,GAAI,YAC9B,OAAIpxuB,MAAMqxuB,KAAOrxuB,MAAMsxuB,IACd,kBAAkBjtU,KAAKktU,KAAS,kBAAkBltU,KAAK5iL,IACjD,EAED,UAAN8vf,IACO,EAED,UAAN9vf,GACO,EAEJ,EAEPzhP,MAAMqxuB,IACQ,IAAPC,GAAW,EAAIA,GAAK,GAAI,EAAK,EAEpCtxuB,MAAMsxuB,IACQ,IAAPD,GAAW,EAAIA,GAAK,EAAI,GAAI,EAEhC7jtB,WAAW6jtB,IAAM7jtB,WAAW8jtB,IAmHvC,YAAwB/zuB,GAASg0B,IAM7B,OALIuysB,EAAS0B,iBAAiBjouB,UAAYA,KAGtCumuB,EAAS0B,iBAAiBj0sB,MAAQA,IAE9Bh0B,GAAQogX,QAAQz5V,mBACjB,MACHsttB,GAAYj0uB,GAASA,GAAQylC,IAAKzR,IAClC,UAEG,MACH,IAAIkgtB,IAAM,IAAIzzuB,OAAO0zuB,eAAgBC,kBAAkBp0uB,IAEvDi0uB,GAAYj0uB,GADG,gCAA4Bq0uB,KAAaH,MAC1BlgtB,IAC9B,UAEG,SACH,IACIigtB,GAAYj0uB,GAASA,GAAQimD,UAAU,aAAcjyB,UAChDhZ,KAGT,UAEG,eACA,YACA,UA1EX,YAAyBhb,GAASg0B,IAC9B,IAAIykM,GAAMz4N,GAAQogX,QAAQz5V,cAC1B,GAAW,SAAP8xM,KAAmC,YAAhBz4N,GAAQ5M,MAAsC,SAAhB4M,GAAQ5M,MACzD,OAzDR,YAAwB4M,GAASg0B,IAC7B,IACI62G,GAAQx6G,GADAF,GAAiBnwB,IACO,SAChCunH,GAAMvnH,GAAQy0T,wBACE,YAAhBz0T,GAAQ5M,MACR4gC,GAAMxX,OACFukrB,aACI,IAAI+B,IAAS,CAAEv7kB,GAAI7sD,KAAK,EAAG6sD,GAAI9N,IAAI,GACtB,CAAE8N,GAAIvlH,MAAM,EAAGulH,GAAI1xH,OAAO,KACzCs3I,OAAOtC,GAAO,IAEhB7qI,GAAQqsc,SAURr4a,GAAMxX,QACF,IAAIukrB,KACC5zjB,OAAOtC,GAAO,KACdkiG,OAAOxlH,GAAI7sD,KAAO,IAAO6sD,GAAIvlH,MACtBulH,GAAI9N,IAAM,IAAO8N,GAAI1xH,QAC5Bm3O,OAAOzlH,GAAI7sD,KAAO,IAAO6sD,GAAIvlH,MACtBulH,GAAI9N,IAAM,IAAO8N,GAAI1xH,QAC5Bm3O,OAAOzlH,GAAI7sD,KAAO,IAAO6sD,GAAIvlH,MACtBulH,GAAI9N,IAAM,IAAO8N,GAAIvlH,UAIzCgyB,GAAMxX,OACF,IAAIi+F,IACA,IAAIqolB,IAAW,EACVv7kB,GAAI7sD,KAAO6sD,GAAI3sD,OAAS,GACxB2sD,GAAI9N,IAAM8N,GAAIytM,QAAU,GAC1Bx8T,KAAKulC,IAAIwpF,GAAIvlH,MAAM,EAAGulH,GAAI1xH,OAAO,GAAK,IAC3Cs3I,OAAOtC,GAAO,IAEhB7qI,GAAQqsc,SACRr4a,GAAMxX,OACF,IAAIi+F,IACA,IAAIqolB,IAAW,EACVv7kB,GAAI7sD,KAAO6sD,GAAI3sD,OAAS,GACxB2sD,GAAI9N,IAAM8N,GAAIytM,QAAU,GAC1Bx8T,KAAKulC,IAAIwpF,GAAIvlH,MAAM,EAAGulH,GAAI1xH,OAAO,GAAK,IAC3CmE,KAAK6wI,IAAOsC,OAAO,QAStBmnmB,CAAet0uB,GAASg0B,IAEnC,IAGIyiiB,GAHA1mgB,GAAI/vD,GAAQ+4I,WACZ+6N,GAAM9zW,GAAQ2nhB,cACdh1e,GAAKmhU,GAAI93V,cAAcqqtB,GAS3B,GAPA1zrB,GAAGl9C,MAAMwyC,QAAUqnsB,GAAWn/sB,GAAiBnwB,KACpC,SAAPy4N,KACA9lL,GAAGl9C,MAAM8+uB,WAAa,QAEf,UAAP97gB,IAA0B,YAAPA,MACnB9lL,GAAGl9C,MAAM+mJ,SAAW,QAEb,UAAPi8E,GACA,GAAIz4N,GAAQk5C,SACR,QAASj/C,GAAI,EAAGA,GAAI+F,GAAQqK,QAAQhZ,SAAU4I,IAC1Cw8jB,GAAS3iN,GAAI93V,cAAcqqtB,IACpB5wuB,MAAMwyC,QAAUqnsB,GAAWn/sB,GAAiBnwB,GAAQqK,QAAQpQ,MACnEw8jB,GAAOhhkB,MAAMkkC,QAAU,QACvB88hB,GAAOn1M,YAActhX,GAAQqK,QAAQpQ,IAAGqnX,YACxC3uU,GAAGxM,YAAYswhB,SAGnBA,GAvFZ,YAA2Bz2jB,IACvB,OAAIA,GAAQw0uB,iBAAmBx0uB,GAAQw0uB,gBAAgBnjvB,OAAS,EACrD2O,GAAQw0uB,gBAAgB,GAE5Bx0uB,GAAQqK,QAAQrK,GAAQ8gb,eAmFd2zT,CAAkBz0uB,IACvBy2jB,KACA9jhB,GAAG2uU,YAAcm1M,GAAOn1M,kBAIhC3uU,GAAG2uU,YAActhX,GAAQ/Q,MAE7B8gE,GAAE45S,aAAah3T,GAAI3yC,IACnB2yC,GAAGyoV,WAAap7X,GAAQo7X,WACxBzoV,GAAG0oV,UAAYr7X,GAAQq7X,UAIvBr7X,GAAQvK,MAAMkkC,QAAU,OAExBq4sB,GAAer/rB,GAAI3e,IACnBh0B,GAAQvK,MAAMkkC,QAAU,GACxBo2B,GAAE/mB,YAAY2J,IA+BV+hsB,CAAgB10uB,GAASg0B,IACzB,cAIA,QADI81B,GAAW,GAAI6qrB,GAAS,GAAIC,GAAa,GACpC36uB,GAAI+F,GAAQq9S,WAAYpjT,GAAGA,GAAIA,GAAEm8W,YACtC,OAAQn8W,GAAEu1W,eACH,EACC,KAAKs3D,KAAK7sa,GAAEmE,OACZy2uB,GAAW70uB,GAAS/F,GAAG+5B,IAE3B,WACG,EACH,IAAIv+B,GAAQ06B,GAAiBl2B,IACzB66uB,GAAWzktB,GAAiB56B,GAAO,SAEvB,UADD46B,GAAiB56B,GAAO,YAEnCm/uB,GAAW7jvB,KAAKkJ,IAEC,QAAhB2xM,GACD+oiB,GAAO5jvB,KAAKkJ,IAEZ6vD,GAAS/4D,KAAKkJ,OAM1B86uB,KAAUjrrB,GAAUkrrB,IAAY9ivB,QAAQ,SAASygD,IAAKw1rB,GAAcx1rB,GAAI3e,SACxE+gtB,KAAUJ,GAAQK,IAAY9ivB,QAAQ,SAASygD,IAAKw1rB,GAAcx1rB,GAAI3e,SACtE+gtB,KAAUH,GAAYI,IAAY9ivB,QAAQ,SAASygD,IAAKw1rB,GAAcx1rB,GAAI3e,OAIlF,YAAoBh0B,GAAS0Q,GAAMsjB,IAC/B,IA3+CJ,cACI,IAAIzF,GAAKg4sB,EAASyB,SAClB,OAAU,MAANz5sB,KAGAA,GACsB,IAAfA,GAAGvsB,SAAiC,IAAhBusB,GAAG14B,cADlC,GAs+CIo/uB,GAAJ,CAGA,IAAIx/uB,GAAQ06B,GAAiBnwB,IAE7B,KAAIiwB,WAAWI,GAAiB56B,GAAO,iBAAkB,KAAzD,CAOA,IAAIW,GAAOsa,GAAKtS,KACZka,GAAQ,EACRsd,GAAMx/B,GAAKqmB,OAAO,UAAY,EAElC,GAAKmZ,GAAL,CAIA,IAAImhW,GAAW1mW,GAAiB56B,GAAO,aACnC47uB,GAAahhtB,GAAiB56B,GAAO,eAGrCk7I,GAAO,CACPtgH,GAAiB56B,GAAO,cACxB46B,GAAiB56B,GAAO,gBACxB46B,GAAiB56B,GAAO,eACxBshY,GACA1mW,GAAiB56B,GAAO,gBAC1Bsd,KAAK,KAKP,GAHAgkX,GAAW9mW,WAAW8mW,IACtBs6W,GAAaphtB,WAAWohtB,IAEP,IAAbt6W,GAAJ,CAIA,IAAIlsP,GAAQx6G,GAAiB56B,GAAO,SAChCy9D,GAAQlzD,GAAQ2nhB,cAAcohL,cAE9B1xB,GAAuB,WADfhnpB,GAAiB56B,GAAO,cAEhCo5iB,GAAcx+gB,GAAiB56B,GAAO,eAAgB,GACtD8+uB,GAAalktB,GAAiB56B,GAAO,eACrCy/uB,GAAgB7ktB,GAAiB56B,GAAO,kBAKxC0/uB,GAAqBn1uB,GAAQy0T,wBAAwBzyT,MAAQ+0X,GAAW,EACjD,IAAvBo+W,KACAA,GAAqB,KAazB,QARIC,GAAiB,KAEjB/gR,GAAYkyQ,EAASlyQ,UACrBghR,GAAc9O,EAAS,gBACvB+O,GAAW/O,EAAS+O,SACpBC,GAAgBlhR,IAAaghR,IAAeC,IAGxCE,OAOR,YALID,KACArirB,GAAMuirB,WAAW/kuB,IACjBxW,EAAMg5D,GAAMw9qB,kBAAkBx+uB,QAsOlC,YAAkBq1H,IAId,YAAcsjB,GAAO6qmB,IACjB,GAAI7qmB,GAAO,CACP,IAAI7oI,GAAQ+0X,GAAW,GACnB/hN,GAAO,IAAI+rhB,IAAK,CAAE5zjB,OAAQ,CAC1BnrI,MAAOA,GACP6oI,MAAOA,MAIXmqC,GAAK+3D,OAAOxlH,GAAI7sD,KADhBg7qB,IAAQ1zuB,IAEHgrO,OAAOzlH,GAAI3sD,MAAO86qB,IACvB1htB,GAAMxX,OAAOw4J,KAdrBhyG,GAAKqxZ,GAAW9sW,GAAIytM,QACpBhyP,GAAKqyqB,GAAa9tnB,GAAIytM,OAASztM,GAAI1xH,OAAS,KAC5CmtE,GAAKsyqB,GAAU/tnB,GAAI9N,YApOvB,YAAsCvmD,IAGlC,GAAIszqB,GAAa/yK,EAAQ6xJ,OAAQ,CAe7B,QANIqwB,GAAazirB,GAAMw9qB,iBAAkBnpnB,GAAM,CAC3C9N,IAAUoE,IACVjjD,OAAS,IACTo6P,QAAS,IACTt6P,KAAUmjD,KACXoF,IAAO,EACDhpH,GAAI,EAAGA,GAAI07uB,GAAWtkvB,SAAU4I,GAAG,CACxC,IAAIujB,GAAIm4tB,GAAW17uB,IACfujB,GAAExb,OAAS,GAAKwb,GAAEw3S,SAAWogb,KAGjC7tnB,GAAI7sD,KAASliE,KAAKulC,IAAIvgB,GAAEk9C,KAAS6sD,GAAI7sD,MACrC6sD,GAAI9N,IAASjhH,KAAKulC,IAAIvgB,GAAEi8F,IAAS8N,GAAI9N,KACrC8N,GAAI3sD,MAASpiE,KAAKsB,IAAI0jB,GAAEo9C,MAAS2sD,GAAI3sD,OACrC2sD,GAAIytM,OAASx8T,KAAKsB,IAAI0jB,GAAEw3S,OAASztM,GAAIytM,QACrC/xM,IAAO,GAEX,OAAKA,IAGLsE,GAAIvlH,MAAQulH,GAAI3sD,MAAQ2sD,GAAI7sD,KAC5B6sD,GAAI1xH,OAAS0xH,GAAIytM,OAASztM,GAAI9N,IACvB8N,IAJIr0D,GAAMuhQ,wBAMrB,OAAOvhQ,GAAMuhQ,wBAOjB,cACI,IACIltM,GADAqunB,GAAYt9tB,GACP67D,GAAM/9E,GAAK2X,OAAOuK,IAAOmE,OAAO,MAEzC,GADAnE,IAAS67D,GACLA,GAAM,GAAK77D,IAASsd,GACpB,OAAO,EAKXs9B,GAAM2irB,SAASnluB,GAAM4H,IACrB46C,GAAMm3qB,OAAO35tB,GAAM4H,GAAQ,GAC3BivG,GAAMuunB,GAA6B5irB,IAGnC,IAAIoB,IAAQ,EACZ,IAAI+inB,IAAexoI,GAAc,KAC7B16d,GAAM/9E,GAAK2X,OAAOuK,IAAOmE,OAAO,QACrB,EAAG,CAGVy2C,GAAMm3qB,OAAO35tB,GAAM4H,GAAQ67D,IAC3B,IAAIh4B,GAAI25rB,GAA6B5irB,IACjC/W,GAAE64Q,QAAUztM,GAAIytM,SAChBztM,GAAMprE,GACNmY,IAAQ,EACRh8C,IAAS67D,IAKrB,IAAK7f,GAAO,CAkCR,IAjBA6f,GAAO,YAAiBp2C,GAAKg4sB,GAAKj8uB,IAC9Bo5D,GAAMm3qB,OAAO35tB,GAAMqluB,IACnB,IAAI55rB,GAAI25rB,GAA6B5irB,IACrC,OAAI/W,GAAE64Q,QAAUztM,GAAIytM,QAAUj3R,GAAMg4sB,GACzBC,GAAQj4sB,GAAMA,GAAMg4sB,IAAQ,EAAGA,IAC/B55rB,GAAEye,OAAS2sD,GAAI3sD,OACtB2sD,GAAMprE,GACF45rB,GAAMj8uB,GACCk8uB,GAAQD,GAAMA,GAAMj8uB,IAAQ,EAAGA,IAE/Bi8uB,IAGJA,GAbR,CAeJz9tB,GAAO9f,KAAKulC,IAAInI,GAAKtd,GAAQ68tB,IAAqBv/sB,MAE1Ctd,GAGP,OAAO,EAKX,GAHAA,GAAQ67D,GAGI,KADZA,GAAMjhB,GAAM78D,WAAWomB,OAAO,SAE1B,OAAO,EAEP03D,GAAM,IAENjhB,GAAMm3qB,OAAO35tB,GAAMwiD,GAAMsne,YAAcrmd,IACvCozC,GAAMuunB,GAA6B5irB,KAOvCszqB,IACAj/mB,GAAMr0D,GAAMw9qB,iBAAiB,IAGjC,IAAI7iuB,GAAMqlD,GAAM78D,WAChB,GAAK,sBAAsBywa,KAAKytU,KAEF,GAErB,KAAKztU,KAAKj5Z,IAAM,CAOrB,IAAIoouB,GAAK,EACT,IAAK9hqB,GAAMyhqB,GAAWzhqB,GAAMjhB,GAAMsne,cAAermd,GAAK,CAClD,IAAI78D,GAAOlhB,GAAK8mO,WAAW/oJ,IACf,GAAR78D,GAGA2+tB,IAAM,EAAIA,GAAK,EACA,IAAZv/jB,IAA0B,IAARp/J,GAErB2+tB,GAAK,EAGLA,KAMR,MAAQ9hqB,GAAMtmE,GAAI4O,OAAO,QAAU,GAAG,CAClC,IAAI84c,GAAS,WAAWxnd,OAAO,EAAG,GAAKkouB,GAAK9hqB,IAAO,GACnDtmE,GAAMA,GAAIE,OAAO,EAAGomE,IAAOohZ,GAAS1nd,GAAIE,OAAOomE,GAAM,UA7BzDtmE,GAAMA,GAAIgJ,QAAQ,OAAQ,KAiCzBy9C,KACD8grB,GAAiB7tnB,GAAIytM,QAK7B,YAAkBnnT,GAAK05G,IAMnB,GAAIi/mB,IAAc/juB,MAAM4uuB,IAAa,CACjC,IAAIx7uB,GAAS62uB,GAAc/7lB,IACvBl3B,IAAO8N,GAAI9N,IAAM8N,GAAIytM,OAASn/T,IAAU,EAC5C0xH,GAAM,CACF9N,IAASA,GACT7+C,MAAS2sD,GAAI3sD,MACbo6P,OAASv7M,GAAM5jH,GACf6kE,KAAS6sD,GAAI7sD,KACb7kE,OAASA,GACTmM,MAASulH,GAAI3sD,MAAQ2sD,GAAI7sD,MAYjC,OAAQw6qB,QACD,YACHrnuB,GAAMA,GAAI41I,cACV,UACG,YACH51I,GAAMA,GAAI8Y,cACV,UACG,aACH9Y,GAAMA,GAAIgJ,QAAQ,cAAewc,IAAKA,GAAEowH,eAI5C,IAAIrtJ,GAAO,IAAI8/uB,EACXrouB,GAAK,IAAIi1rB,IAAS,CAAEv7kB,GAAI7sD,KAAM6sD,GAAI9N,KAChB,CAAE8N,GAAIvlH,MAAOulH,GAAI1xH,SACnC,CACI86I,KAAMA,GACN32I,KAAM,CAAE6wI,MAAOA,MAGvB72G,GAAMxX,OAAOpmB,IAlDb+/uB,CAAStouB,GAAK05G,KAuHtB,YAAuBvnH,GAAS+oJ,IAC5B,IAAItzJ,GAAQ06B,GAAiBnwB,IAI7B,GAFAovuB,GAAe35uB,KAEX,kDAAkDqxa,KAAK9ma,GAAQogX,UAI1C,MAArBmmX,EAASyB,SAIb,KAAItyuB,GAAUu6B,WAAWI,GAAiB56B,GAAO,YAC7C+3N,GAAan9L,GAAiB56B,GAAO,cACrCkkC,GAAUtJ,GAAiB56B,GAAO,WAEtC,GAAgB,IAAZC,IAA+B,UAAd83N,IAAqC,QAAX7zL,GAI/C,KACI3F,GADAopJ,GA3vDR,YAAsB3nL,IAClB,IAAIE,GAAY06B,GAAiB56B,GAAO,aACxC,GAAiB,QAAbE,GACA,OAAO,KAEX,IAAI06H,GAAS,gCAAgC6hO,KAAKv8V,IAClD,GAAI06H,GAAQ,CACR,IAAI1gG,GAASU,GAAiB56B,GAAO,oBACrC46H,MAEO,CACHA,OAHJA,GAASA,GAAO,GAAG/tH,MAAM,YAAYrR,IAAIg/B,YAIrCN,OAHJA,GAASA,GAAOrtB,MAAM,QAAQrR,IAAIg/B,cAkvD7BmmtB,CAAa3gvB,IAGlB8mJ,GAASlsH,GAAiB56B,GAAO,YAChC2nL,IAAM1nL,GAAU,IAAgB,QAAV6mJ,KACvBA,GAAS,GAEbvoH,GAzEJ,YAAgCh0B,GAASg0B,GAAOuoH,IAC5C,IAAIqgF,GACU,QAAVrgF,IAEAqgF,GAAO2pgB,EAAS0B,iBAAiBj0sB,MACjCuoH,GAAStsH,WAAWssH,MAMpBqgF,GAAO5oM,GACPuoH,GAAS,GAGb,QADI9+H,GAAIm/M,GAAK9yK,SACJ7vD,GAAI,EAAGA,GAAIwjB,GAAEpsB,UACM,MAApBosB,GAAExjB,IAAGo8uB,aAAuB54tB,GAAExjB,IAAGo8uB,YAAc95lB,MADvBtiJ,IAMhC,IAAIiC,GAAM,IAAI43I,IAId,GAHA8oF,GAAK9yJ,OAAO7vE,GAAGiC,IACfA,GAAIm6uB,YAAc95lB,GAEdqgF,KAAS5oM,IAOLuysB,EAASyB,SAAU,CACnB,IAAI7/sB,GAAIo+sB,EAASnB,QAAQ1tC,SACrBv7oB,GAAIoqrB,EAASyB,SAASx0F,cAAcrrnB,IACxCqotB,GAAYt0uB,GAAK6ksB,aAAc5kpB,KAOvC,OAAOjgD,GA+BCo6uB,CAAuBt2uB,EAAS+oJ,GAAWxM,IAY/C7mJ,GAAU,GACVs+B,GAAMt+B,QAAQA,GAAUs+B,GAAMt+B,WAx6DtC,YAAsBsK,GAASvK,GAAOu+B,KAClCuysB,EAAWp1uB,OAAOm8D,OAAOi5qB,IAChBvmuB,GAAQogX,QAAQz5V,eAAiB,CACtC3mB,QAASA,GACTvK,MAAOA,IAEX,IAAI8gvB,GAAalmtB,GAAiB56B,GAAO,mBACzC,GAAI8gvB,IAA4B,QAAdA,GAAsB,CACpC,IAAI1rmB,GAAQx6G,GAAiB56B,GAAO,SACpC8gvB,GAAWj0uB,MAAM,QAAQpQ,QAAQ,SAAS5B,IACjCi2uB,EAASj2uB,MACVi2uB,EAASj2uB,IAAQu6I,OAsCjC,YAAgCp1I,IAC5B,YAAcnF,IAAQ,OAAO+/B,GAAiB56B,GAAOnF,IACrD,GAAyB,QAArB0qD,GAAK,cACe,UAApBA,GAAK,aACc,QAAnBA,GAAK,YACLA,GAAK,WAAa,EAClB,OAAO,GAvCPw7rB,CAAuB/gvB,MACvB8wuB,EAAS0B,iBAAmB,CACxBjouB,QAASA,GACTg0B,MAAOA,KAw5DfyitB,CAAaz2uB,GAASvK,GAAOu+B,IAE7B03K,GAII8liB,GAAUxxuB,GAAS,WAEf02uB,GAAuB12uB,GAAQvK,MAAO,YAAa,OAAQ,aAG3DihvB,GAAuB12uB,GAAQvK,MAAO,aAAc,OAAQ,aAKjB,UAAvC46B,GAAiB56B,GAAO,aAExBihvB,GAAuB12uB,GAAQvK,MAAO,WAAY,WAAY,aAKlE,IAAImmJ,GAAO57I,GAAQy0T,wBACfx/T,GAAI2mJ,GAAKlhF,KAAO0iH,GAAGztJ,OAAO,GAC1ByvB,GAAIw8F,GAAKniC,IAAM2jE,GAAGztJ,OAAO,GACzBxH,GAAI,CAAE,EAAG,EAAG,EAAG,GAAIlzB,IAAImqD,IAC3Bj3B,GAAIwutB,GAAKxutB,GAAGi1J,GAAG/sD,QACfloG,GAAIwutB,GAAKxutB,GAAG,CAAE,EAAG,EAAG,EAAG,EAAGlzB,GAAGmqD,KAC7Bj3B,GAAIslsB,GAAaz5rB,GAAO7L,IAExBo+sB,EAASnB,QAAUmB,EAASnB,QAAQ5tC,aAAarvqB,IAEjDyutB,GAA0B52uB,GAASg0B,MA9BvC4itB,GAA0B52uB,GAASg0B,IAt5D3C,cACIuysB,EAAWp1uB,OAAOy7uB,eAAerG,GAu7DjCsQ,KAsBJ,YAAcp5tB,GAAGD,IACb,IAAIk/V,GAAKj/V,GAAE,GAAI6mjB,GAAK7mjB,GAAE,GAAIk4E,GAAKl4E,GAAE,GAAI4qV,GAAK5qV,GAAE,GAAIspE,GAAKtpE,GAAE,GAAIq5tB,GAAKr5tB,GAAE,GAC9D6/X,GAAK9/X,GAAE,GAAIgnjB,GAAKhnjB,GAAE,GAAIo4E,GAAKp4E,GAAE,GAAIu5tB,GAAKv5tB,GAAE,GAC5C,MAAO,CACHk/V,GAAG4gC,GAAKgnL,GAAG1ue,GAAa8mR,GAAG8nN,GAAKF,GAAGyyK,GACnCphpB,GAAG2nT,GAAKj1C,GAAGzyQ,GAAaD,GAAG6ue,GAAKn8N,GAAG0uY,GACnChwpB,GAAGu2T,GAAKw5V,GAAGlhpB,GAJsCp4E,GAAE,GAI3BupE,GAAGy9e,GAAKsyK,GAAGC,GAJyBv5tB,GAAE,+EExrGtE,MAAMw5tB,EAAuBhwG,wBAkC7B/soB,EAhCmBsruB,GACf,cAAcA,EACV3plB,KAAK8hlB,GACD,MAAMuZ,KAAiB3V,KAASh2uB,KAAK4rvB,iBAAiBxZ,IAChDyZ,EAAaF,EAAiBA,EAAe5gvB,WAAa2gvB,EAChE,IAAIp7lB,EAEAtwJ,KAAK8rvB,YAAc9rvB,KAAK+rvB,cAAgBF,EACxCv7lB,EAAOtwJ,KAAK8rvB,WAAWt8nB,SAEvB8gC,EAAOtwJ,KAAKs1sB,MAAMq2C,GAClB3rvB,KAAK8rvB,WAAax7lB,EAAOA,EAAK9gC,QAAU,KACxCxvH,KAAK+rvB,YAAcF,GAGvB,MAAMnomB,EAAc1jJ,KAAK+e,QAAQF,IAAI,gBACrC,OAAI6kI,GAAe4M,GACfA,EAAKg6P,OAAO5mQ,EAAc,GAGvB4M,EAGXy8hB,wBACW/srB,KAAK8rvB,WACZ9rvB,KAAKiK,QAAQ,iBAAkB,CAC3ByK,QAAS1U,wEC7BzB,MA8CA6sD,EA5CkBotrB,GACd,cAAcA,EACVvruB,KAAK6wI,EAAOn1I,GACR,MAAM2U,EAAU/e,KAAK+e,QAErB,IAAI6rlB,OAAQrrd,GAAQ,CAChB,GAAIA,GARH,aAQYA,EAAM2kO,SAAuB,CACtC,MAAM8nY,EAAU,CACZzsmB,MAAOA,MAEPqrd,KAAQxgmB,KACR4hvB,EAAQ5hvB,QAAUA,GAEtB2U,EAAQsT,IAAI,OAAQ25tB,QAEpBjtuB,EAAQsT,IAAI,OAAQktH,GAGxB,OAAOv/I,KAGX,OAAO+e,EAAQF,IAAI,QAGvBgjI,OAAOtC,EAAO7oI,EAAOtM,GACjB,OAAIwgmB,OAAQrrd,IACRv/I,KAAK+e,QAAQsT,IAAI,eAAgBktH,MAE7Bqrd,KAAQl0lB,IACR1W,KAAK+e,QAAQsT,IAAI,eAAgB3b,IAGjCk0lB,OAAQxgmB,IACRpK,KAAK+e,QAAQsT,IAAI,iBAAkBjoB,GAGhCpK,MAGJA,KAAK+e,QAAQF,IAAI,4DCvBpC,QApBoB,CAACo7tB,EAAOjgH,IACxB,cAAcigH,EACV14F,SAAS1xoB,GACL,MAAM2uD,EAAWx+D,KAAKg6nB,GAEtB,QAASrrnB,EAAI,EAAGA,EAAI6vD,EAASz4D,OAAQ4I,IAAK,CACtC,IAAI8vD,EAAQD,EAAS7vD,GAEjB8vD,EAAM8ilB,SACN9ilB,EAAM8ilB,SAAS1xoB,GAEfA,EAAS4uD,GAIjB,OAAOz+D,sCCfnB,WAAqB6qD,GACjB,OAAO,SAASlnD,GACZ,OAAI3D,KAAK6qD,KAAWlnD,IAChB3D,KAAK6qD,GAASlnD,EACd3D,KAAK+srB,kBAGF/srB,MAIf,WAAqB6qD,GACjB,OAAO,WACH,OAAO7qD,KAAK6qD,qBAsBpB,QAPsB,CAACovrB,EAAO3hW,KAC1B,MAAM/lY,EAAS,cAAc0nuB,IAC7BgS,OAbJ,WAAyB/yrB,EAAIgqD,GACzB,QAASv0G,EAAI,EAAGA,EAAIu0G,EAAOn9G,OAAQ4I,IAAK,CACpC,IAAI3J,EAAOk+G,EAAOv0G,GACdu9uB,EAAclnvB,EAAKovC,OAAO,GAAG+jH,cACfnzJ,EAAK8uB,UAAU,EAAG9uB,EAAKe,QAEzCmzD,EAAG,MAAQgzrB,GAAeC,EAAYnnvB,GACtCk0D,EAAG,MAAQgzrB,GAAeE,EAAYpnvB,IAM1CinvB,CAAgB15uB,EAAO8N,UAAWi4X,GAE3B/lY,kEC9BX,WAA0BvN,GACtB,MAAMu1D,EAAY,IAAMv1D,EACxB,OAAO,SAASrB,GACZ,OAAIinmB,OAAQjnmB,IACR3D,KAAK8wuB,eAAev2qB,EAAW52D,GAC/B3D,KAAK+srB,iBACE/srB,MAGJA,KAAKu6D,IAiBpB,QAPqB,CAAC0/qB,EAAO3hW,EAAQ,CAAE,eACnC,MAAM/lY,EAAS,cAAc0nuB,IAC7BoS,OARJ,WAAiCnzrB,EAAIo/U,GACjC,QAAS3pY,EAAI,EAAGA,EAAI2pY,EAAMvyY,OAAQ4I,IAC9BuqD,EAAGo/U,EAAM3pY,IAAM29uB,EAAiBh0W,EAAM3pY,IAM1C09uB,CAAwB95uB,EAAO8N,UAAWi4X,GAEnC/lY,6ECtBX,WAAuBvN,GACnB,MAAMu1D,EAAY,IAAMv1D,EACxB,OAAO,SAASrB,GACZ,OAAIinmB,OAAQjnmB,IACR3D,KAAK8wuB,eAAev2qB,EAAW2f,WAAav2E,IAC5C3D,KAAK+srB,iBACE/srB,MAGJA,KAAKu6D,IAiBpB,QAPmB,CAAC0/qB,EAAO3hW,KACvB,MAAM/lY,EAAS,cAAc0nuB,IAC7BsS,OARJ,WAA8BrzrB,EAAIo/U,GAC9B,QAAS3pY,EAAI,EAAGA,EAAI2pY,EAAMvyY,OAAQ4I,IAC9BuqD,EAAGo/U,EAAM3pY,IAAM69uB,EAAcl0W,EAAM3pY,IAMvC49uB,CAAqBh6uB,EAAO8N,UAAWi4X,GAEhC/lY,6EC2IX,WAA0BgpP,EAAYy7W,EAAYrzmB,GAC9C,MAAM8ovB,EAAiBz1I,EAAa,EAAI,EAExC,QAASromB,EAAI,EAAGA,EAAI4sP,EAAWx1P,OAAQ4I,GAAK,EACxC4sP,EAAWz3O,OAAOnV,EAAI89uB,EAAgB,EAAG9ovB,GAIjD,WAAyB80E,EAAOpJ,GAC5B,GAAIoJ,GAASpJ,EACT,OAAOA,EAAO0mqB,UAAU,GAAGv9rB,WAAWigC,EAAM9uE,GAAI8uE,EAAM3kB,GAI9D,MAAM44rB,EAAQ,EAAI,EAElB,WAAuCxitB,EAAUk3nB,EAAc5+F,GAC3D,MAAMmqL,EAAcvrF,EAAa5xiB,QAAQ9uB,MAAM,EAAI,GACnD,MAAO,CACHu/jB,WAAY0sF,EAAYn9nB,QAAQsmnB,cAAc5rsB,EAAS6rsB,UAAU2W,IACjE55E,UAAW65E,EAAY7W,cAActzK,EAASuzK,UAAU2W,KAIhE,QA1LiB,CACb3ktB,EAAG,SAAS2hJ,EAAM3qK,GACd,MAAQw8O,aAAYrxN,YAAanrB,EAEjC,QAASpQ,EAAI,EAAGA,EAAI4sP,EAAWx1P,OAAQ4I,GAAK,EAAG,CAC3C,IAAI8pE,EAAQ,IAAIyB,IAAMqhL,EAAW5sP,GAAI4sP,EAAW5sP,EAAI,IAEhDoQ,EAAQ6tuB,YACRn0qB,EAAMq9pB,cAAc5rsB,GAGxBw/I,EAAKg4D,OAAOjpK,EAAM9uE,EAAG8uE,EAAM3kB,GAE3B5pB,EAASvgC,EAAI8uE,EAAM9uE,EACnBugC,EAAS4pB,EAAI2kB,EAAM3kB,IAI3B7zC,EAAG,SAASypK,EAAM3qK,GACd,MAAQw8O,aAAYrxN,YAAanrB,EAEjC,QAASpQ,EAAI,EAAGA,EAAI4sP,EAAWx1P,OAAQ4I,GAAK,EAAG,CAC3C,IAAIsxpB,EAAa,IAAI/llB,IAAMqhL,EAAW5sP,GAAI4sP,EAAW5sP,EAAI,IACrDmkqB,EAAY,IAAI54lB,IAAMqhL,EAAW5sP,EAAI,GAAI4sP,EAAW5sP,EAAI,IACxD8pE,EAAQ,IAAIyB,IAAMqhL,EAAW5sP,EAAI,GAAI4sP,EAAW5sP,EAAI,IACpDoQ,EAAQ6tuB,aACR95E,EAAUgjE,cAAc5rsB,GACxB+1nB,EAAW61E,cAAc5rsB,GACzBuuC,EAAMq9pB,cAAc5rsB,IAGxBw/I,EAAKishB,QAAQ11C,EAAY6S,EAAWr6lB,GAEpCvuC,EAASvgC,EAAI8uE,EAAM9uE,EACnBugC,EAAS4pB,EAAI2kB,EAAM3kB,IAI3BttD,EAAG,SAASkjL,EAAM3qK,GAGd8tuB,EAAiB9tuB,EAAQw8O,YAAY,EAFvBx8O,EAAQ6tuB,WAAa,EAAI7tuB,EAAQmrB,SAASvgC,GAGxD3J,KAAK+nC,EAAE2hJ,EAAM3qK,IAGjB04M,EAAG,SAAS/tC,EAAM3qK,GAGd8tuB,EAAiB9tuB,EAAQw8O,YAAY,EAFvBx8O,EAAQ6tuB,WAAa,EAAI7tuB,EAAQmrB,SAAS4pB,GAGxD9zD,KAAK+nC,EAAE2hJ,EAAM3qK,IAGjBoT,EAAG,SAASu3J,EAAM3qK,GACd,MAAQw8O,aAAYrxN,YAAanrB,EAEjC,QAASpQ,EAAI,EAAGA,EAAI4sP,EAAWx1P,OAAQ4I,GAAK,EAAG,CAC3C,MAAM0woB,EAAU9jZ,EAAW5sP,GACrB2woB,EAAU/jZ,EAAW5sP,EAAI,GACzBstJ,EAAWs/F,EAAW5sP,EAAI,GAC1ByluB,GAAW74e,EAAW5sP,EAAI,GAC1B0luB,EAAQ94e,EAAW5sP,EAAI,GACvB6zjB,EAAW,IAAItof,IAAMqhL,EAAW5sP,EAAI,GAAI4sP,EAAW5sP,EAAI,IAEzDoQ,EAAQ6tuB,YACRpqL,EAASszK,cAAc5rsB,IAEvBA,EAASvgC,IAAM64jB,EAAS74jB,GAAKugC,EAAS4pB,IAAM0ugB,EAAS1ugB,KACrD41H,EAAKojkB,MAAMtqL,EAAU68E,EAASC,EAAS80F,GAAUC,EAAOp4kB,GAExD/xH,EAASvgC,EAAI64jB,EAAS74jB,EACtBugC,EAAS4pB,EAAI0ugB,EAAS1ugB,KAKlCjtD,EAAG,SAAS6iL,EAAM3qK,GACd,MAAQw8O,aAAYrxN,WAAU6itB,mBAAoBhuuB,EAClD,IAAIiuuB,GAEoB,MAApBD,GAA+C,MAApBA,KAC3BC,KAAgB11nB,MAAKA,OAAKoyD,EAAKhpB,OAAOvkC,UAAU22iB,aAGpD,QAASnkqB,EAAI,EAAGA,EAAI4sP,EAAWx1P,OAAQ4I,GAAK,EAAG,CAC3C,IAEIsxpB,EAFA6S,EAAY,IAAI54lB,IAAMqhL,EAAW5sP,GAAI4sP,EAAW5sP,EAAI,IACpD6zjB,GAAW,IAAItof,IAAMqhL,EAAW5sP,EAAI,GAAI4sP,EAAW5sP,EAAI,IAGvDoQ,EAAQ6tuB,aACR95E,EAAUgjE,cAAc5rsB,GACxBs4hB,GAASszK,cAAc5rsB,IAIvB+1nB,EADA+sF,EACaC,EAAgBD,EAAe9itB,GAE/BA,EAASslF,QAG1Bw9nB,EAAgBl6E,EAEhBppf,EAAKishB,QAAQ11C,EAAY6S,EAAWtwG,IAEpCt4hB,EAASvgC,EAAI64jB,GAAS74jB,EACtBugC,EAAS4pB,EAAI0ugB,GAAS1ugB,IAI9BthD,EAAG,SAASk3K,EAAM3qK,GACd,MAAQw8O,aAAYrxN,YAAanrB,EAEjC,QAASpQ,EAAI,EAAGA,EAAI4sP,EAAWx1P,OAAQ4I,GAAK,EAAG,CAC3C,IAAIyypB,EAAe,IAAIlnlB,IAAMqhL,EAAW5sP,GAAI4sP,EAAW5sP,EAAI,IACvD6zjB,EAAW,IAAItof,IAAMqhL,EAAW5sP,EAAI,GAAI4sP,EAAW5sP,EAAI,IAEvDoQ,EAAQ6tuB,aACRxrF,EAAa00E,cAAc5rsB,GAC3Bs4hB,EAASszK,cAAc5rsB,IAG3B,IAAIgjtB,EAAqBC,EAA8BjjtB,EAAUk3nB,EAAc5+F,GAE/E94Y,EAAKishB,QAAQu3C,EAAmBjtF,WAAYitF,EAAmBp6E,UAAWtwG,GAE1Et4hB,EAASvgC,EAAI64jB,EAAS74jB,EACtBugC,EAAS4pB,EAAI0ugB,EAAS1ugB,IAI9B1lB,EAAG,SAASs7I,EAAM3qK,GACd,MAAQw8O,aAAYrxN,WAAU6itB,mBAAoBhuuB,EAClD,IAAIqipB,GAEoB,MAApB2rF,GAA+C,MAApBA,KAE3B3rF,GADkB9piB,QAAKA,OAAKoyD,EAAKhpB,OAAOvkC,UACb22iB,YAAYtjjB,QAClCsmnB,cAAc5rsB,EAAS6rsB,WAAU,EAAK,IACtCr1oB,MAAM,MAGf,QAAS/xF,EAAI,EAAGA,EAAI4sP,EAAWx1P,OAAQ4I,GAAK,EAAG,CAC3C,IAAI6zjB,EAAW,IAAItof,IAAMqhL,EAAW5sP,GAAI4sP,EAAW5sP,EAAI,IACnDoQ,EAAQ6tuB,YACRpqL,EAASszK,cAAc5rsB,GAIvBk3nB,EADJ5upB,EACmBy6uB,EAAgB7rF,EAAcl3nB,GAE9BA,EAASslF,QAG5B,IAAI09nB,GAAqBC,EAA8BjjtB,EAAUk3nB,EAAc5+F,GAE/E94Y,EAAKishB,QAAQu3C,GAAmBjtF,WAAYitF,GAAmBp6E,UAAWtwG,GAE1Et4hB,EAASvgC,EAAI64jB,EAAS74jB,EACtBugC,EAAS4pB,EAAI0ugB,EAAS1ugB,KC7J5Bs5rB,EAAgB,kCAChBC,EAAc,oDA6DpBv5rB,EAjDA,WAAmBw5rB,EAAc/quB,GAC7B,MAAM2nB,EAAW,IAAIgwC,IACrB,IAAI6yqB,EAEJxquB,SAAIgJ,QAAQ6huB,EAAe,CAAC7ruB,EAAO7M,EAAS45B,EAAQm3rB,KAChD,IAAI7hY,GAAUlvV,EAAQ2mB,cACtB,MAAMuxtB,EAAahpZ,KAAYlvV,EACzB6mP,EAfd,WAAyBh5O,GACrB,MAAMg5O,EAAa,GACnBh5O,SAAIgJ,QAAQ8huB,EAAa,SAAS9ruB,EAAOs5e,GACrCt/P,EAAW91P,KAAKk/B,WAAWk2d,MAExBt/P,EAUgBgyf,CAAgBj/sB,EAAO5J,QAmB1C,GArCK,MAoBDk/T,KACIgpZ,GACA1itB,EAASvgC,GAAK4xP,EAAW,GACzBrxN,EAAS4pB,GAAKynM,EAAW,KAEzBrxN,EAASvgC,EAAI4xP,EAAW,GACxBrxN,EAAS4pB,EAAIynM,EAAW,IAG5B+xf,EAAa7rgB,OAAOv3M,EAASvgC,EAAGugC,EAAS4pB,GAErCynM,EAAWx1P,OAAS,IACpB69V,GAAU,IACVroG,EAAWz3O,OAAO,EAAG,KAIzB0puB,EAAS5pZ,IACT4pZ,EAAS5pZ,IACL0pZ,EAAc,CACV/xf,WAAYA,EACZrxN,SAAUA,EACV0itB,WAAYA,EACZG,gBAAiBA,IAIrBtnB,GA9CF,MA8CeA,EAAUpqsB,eACvBiytB,EAAatiuB,gBAhDhB,MAkDM44U,GACP,MAAM,IAAIntV,MAAM,sDAAwDmtV,IAG5EmpZ,EAAkBnpZ,KAGf0pZ,mJCrDX,MAAMG,EAAyC,oBAAfnruB,YAA8Bu8d,eAAqBA,kBAAwBA,oBAA0B,GAE/H6uQ,GACEC,GAAS,oEACN,CACHhslB,OAAQ,SAASp/I,IAGb,QAFIqQ,GAAQrQ,GAAIgJ,QAAQ,sBAAuB,IAAK5c,GAAI,EAAGb,GAAI8kB,GAAM7sB,OAAQ0sB,GAAS,GAE/E9jB,GAAIb,IAAG,CACV,IAAIkze,GAAO2sQ,GAAO7tuB,QAAQ8S,GAAMwhB,OAAOzlC,OACnCsye,GAAO0sQ,GAAO7tuB,QAAQ8S,GAAMwhB,OAAOzlC,OACnCuye,GAAOysQ,GAAO7tuB,QAAQ8S,GAAMwhB,OAAOzlC,OACnCwye,GAAOwsQ,GAAO7tuB,QAAQ8S,GAAMwhB,OAAOzlC,OAGnCmye,IAAgB,GAAPG,KAAc,EAAMC,KAAS,EACtCH,IAAgB,EAAPG,KAAa,EAAKC,GAE/B1ud,GAAOhtB,KAJKu7e,IAAQ,EAAMC,KAAS,GAKvB,IAARC,IACAzud,GAAOhtB,KAAKq7e,IAEJ,IAARK,IACA1ud,GAAOhtB,KAAKs7e,IAIpB,OAAOtud,IAEX6lJ,OAAQ,SAASC,IAIb,QAHI5pK,GAAI,EAAGb,GAAIyqK,GAAMxyK,OACjB0sB,GAAS,GAEN9jB,GAAIb,IAAG,CACV,IAAI+ye,GAAOtoU,GAAM5pK,MACbmye,GAAOvoU,GAAM5pK,MACboye,GAAOxoU,GAAM5pK,MAGbsye,IAAgB,EAAPJ,KAAa,EAAMC,KAAS,EACrCI,IAAgB,GAAPJ,KAAc,EAAMC,KAAS,EACtCI,GAAc,GAAPJ,GAEPpye,GAAIb,IAAK,EACToze,GAAOC,GAAO,GACPxye,GAAIb,IAAK,IAChBqze,GAAO,IAGX1ud,IAAUk7tB,GAAOv5sB,OAXNysc,KAAS,GAWY8sQ,GAAOv5sB,OAAO6sc,IAAQ0sQ,GAAOv5sB,OAAO8sc,IAAQysQ,GAAOv5sB,OAAO+sc,IAE9F,OAAO1ud,MAjDH,IACRk7tB,GAqDR,WAAsB76uB,IAClB,IAAIsf,GAAS,EAAGrsB,GAAS,EACb,MAAR+M,GACAA,GAAO26uB,EAAmB,IAAInruB,WAAW,KAAO,GAEhDvc,GAAS+M,GAAK/M,OAGlB,IAAI6nvB,GAASH,EAAmB,SAASn5pB,IACrC,GAAIA,IAAOxhF,GAAK/M,OAAQ,CACpB,IAAI6K,GAAM,IAAI0R,WAAWpV,KAAKsB,IAAI8lF,GAAM,IAAmB,EAAdxhF,GAAK/M,SAClD6K,GAAIyhB,IAAIvf,GAAM,GACdA,GAAOlC,KAEX,aAEAiO,GAAM4uuB,EAAmB,WACzB,OAAO,IAAInruB,WAAWxP,GAAKwf,OAAQ,EAAGvsB,KACtC,WACA,OAAO+M,IAGP2lG,GAAQg1oB,EAAmB,SAASl1kB,IACpC,GAAoB,iBAATA,GACP,OAAOs1kB,GAAYt1kB,IAEvB,IAAIjkF,GAAMikF,GAAMxyK,OAChB6nvB,GAAOx7tB,GAASkiE,IAChBxhF,GAAKuf,IAAIkmJ,GAAOnmJ,KAChBA,IAAUkiE,IACGvuF,KACTA,GAASqsB,KAEb,SAASmmJ,IACT,GAAoB,iBAATA,GACP,OAAOs1kB,GAAYt1kB,IAEvB,QAAS5pK,GAAI,EAAGA,GAAI4pK,GAAMxyK,SAAU4I,GAChCm/uB,GAAUv1kB,GAAM5pK,MAoBxB,cACI,OAAOyjB,GAASrsB,GAAS+M,GAAKsf,MAAY,EAE9C,YAAmBF,IACf07tB,GAAOx7tB,IACPtf,GAAKsf,MAAgB,IAAJF,GACbE,GAASrsB,KACTA,GAASqsB,IAGjB,cACI,OAAQ27tB,MAAc,EAAKA,KAE/B,YAAoB5rkB,IAChB2rkB,GAAU3rkB,IAAK,GACf2rkB,GAAU3rkB,IASd,cACI,OAAsB,MAAd6rkB,KAAyBA,KAErC,YAAmB7rkB,IACf8rkB,GAAY9rkB,KAAM,GAAM,OACxB8rkB,GAAe,MAAJ9rkB,IAEf,cACI,IAAIA,GAAI+rkB,KACR,OAAO/rkB,IAAK,WAAaA,GAAI,WAAcA,GAE/C,YAAoBA,IAChBgskB,GAAUhskB,GAAI,EAAIA,GAAI,WAAcA,IAcxC,YAAc7tF,IACV,OAAOvxD,GAAMuxD,GAAKy5pB,IAKtB,YAAqBxruB,IACjB,QAAS5T,GAAI,EAAGA,GAAI4T,GAAIxc,SAAU4I,GAC9Bm/uB,GAAUvruB,GAAIqvN,WAAWjjO,KAGjC,YAAeb,GAAGigO,IACd,QAASykR,GAAM,IAAIlkf,MAAMR,IAAIa,GAAI,EAAGA,GAAIb,KAAKa,GACzC6jf,GAAI7jf,IAAKo/N,KAEb,OAAOykR,GAGX,IAAIz4d,GAAS,CACTi1iB,IAxEJ,cACI,OAAO58iB,IAAUrsB,IAwEjBgovB,SAAcA,GACdD,UAAcA,GACdE,UAAcA,GACdC,WAAcA,GACdC,SAAcA,GACdC,UAAcA,GACdC,UAtCJ,cACI,OAAOF,KAAa,OAsCpBG,WApCJ,YAAoBzovB,IAChBuovB,GAAUjhvB,KAAK4zF,MAAU,MAAJl7F,MAsCrB0ovB,WA/DJ,cACI,IAAInskB,GAAI6rkB,KACR,OAAO7rkB,IAAK,MAASA,GAAI,MAAUA,IA8DnCoskB,YA5DJ,YAAqBpskB,IACjB8rkB,GAAW9rkB,GAAI,EAAIA,GAAI,MAAUA,KA4DjCqskB,UAAcA,GACdC,WAAcA,GACdC,WAxCJ,cACI,OAAOF,KAAc,OAwCrBG,YAtCJ,YAAqB/ovB,IACjB6ovB,GAAWvhvB,KAAK4zF,MAAU,MAAJl7F,MAuCtBspH,KAAcA,GACdzW,MAAcA,GACdqkI,WApCJ,YAAoBxoJ,IAChB,OAAOthE,OAAOC,aAAaU,MAAMX,OAAQk8F,GAAK56B,MAoC9Cu5pB,YAAcA,GAEd9qtB,MAAcA,GACdlkB,IAAcA,GACdjQ,MA9GQ6+uB,EAAmB,SAASzguB,GAAOjnB,IAC3C,GAAI+M,GAAKwf,OAAO1jB,MACZ,OAAO,IAAI0T,WAAWxP,GAAKwf,OAAO1jB,MAAMoe,GAAOA,GAAQjnB,KAGvD,IAAI4D,GAAI,IAAI2Y,WAAWvc,IACvB4D,UAAE0oB,IAAI,IAAI/P,WAAWxP,GAAKwf,OAAQtF,GAAOjnB,KAClC4D,IAEX,SAASqjB,GAAOjnB,IAChB,OAAO+M,GAAKlE,MAAMoe,GAAOA,GAAQjnB,KAsGjCqsB,OAAQ,SAASy2D,IACb,OAAW,MAAPA,IACAz2D,GAASy2D,GACF9uD,IAEJ3H,IAGX9lB,KAAM,SAASsivB,IACXx8tB,IAAUw8tB,IAGd7jvB,SAAU,WACN,MAAM,IAAI0L,MAAM,kEAGpB1Q,OAAQ,WAAa,OAAOA,IAE5B8ovB,cAAe,SAASjpvB,IACpB,IAAIijF,GAAMz2D,GACV,IACI,OAAOxsB,aAEPwsB,GAASy2D,KAIjBimqB,YAAa,SAAShwQ,IACd3pe,OAAO4rB,KACP8stB,GAAY14uB,OAAO4rB,KAAK+9c,KAExBrmY,GAAMi1oB,EAAO/rlB,OAAOm9U,MAG5BA,OAAQ,WACJ,OAAO4uQ,EAAOp1kB,OAAOz5J,QAI7B,OAAOkb,GA6BX,WAAoBkQ,IAChB,OAAOA,GAAMtkC,IAAI,SAAShC,IACtB,IAAI8uB,GAAS,GACb,OAAI9uB,GAAQ,QACRA,IAAS,MACT8uB,IAAUO,OAAOC,aAAatvB,KAAU,GAAK,KAAQ,OACrDA,GAAQ,MAAiB,KAARA,IAErB8uB,GAAUO,OAAOC,aAAatvB,MAE/B8jB,KAAK,ICxRZ,WAAwBi4C,GAAK7sD,IACzB,OAAOhN,OAAOwa,UAAUgsB,eAAezY,KAAK8rC,GAAK7sD,IAGrD,WAAoB6sD,IAChB,OAAO75D,OAAOrC,KAAKk8D,IAAK5lD,KAAK,SAASqY,GAAGD,IAAI,OAAOC,GAAID,KAAMvsB,IAAIg/B,YAItE,QACI7kC,YAAYgT,IACR9S,KAAK8hC,IAAMhvB,GACX9S,KAAK+uvB,WAAaj8uB,GAAKo7uB,WACvBluvB,KAAKgvvB,WAAal8uB,GAAKk7uB,YACvBhuvB,KAAKivvB,YAAcn8uB,GAAKk7uB,YACxBhuvB,KAAKkvvB,cAAgBp8uB,GAAKk7uB,YAC1BhuvB,KAAKmvvB,WAAar8uB,GAAKk7uB,YAGvB,QADIrzN,GAAS36hB,KAAK26hB,OAAS,GAClBhshB,GAAI,EAAGA,GAAI3O,KAAKgvvB,aAAcrgvB,GAAG,CACtC,IAAI+oG,GAAQ,CACRy1H,IAAWr6N,GAAKgqO,WAAW,GAC3Bime,SAAWjwsB,GAAKo7uB,WAChB97tB,OAAWtf,GAAKo7uB,WAChBnovB,OAAW+M,GAAKo7uB,YAEpBvzN,GAAOjjb,GAAMy1H,KAAOz1H,IAI5B03oB,UAAUpqvB,GAAMqqvB,IACZ,IAAIjmrB,GAAMppE,KAAK26hB,OAAO31hB,IACtB,IAAKokE,GACD,MAAM,IAAI3yD,MAAM,SAAWzR,GAAO,2BAEtC,OAAQhF,KAAKgF,IAAQokE,GAAI27V,MAAQ,IAAIsqV,GAAKrvvB,KAAMopE,IAGpDuzC,OAAOg+a,IACH,IAAIq0N,GAAanpvB,OAAOrC,KAAKm3hB,IAAQ50hB,OAEjCupvB,GAAUpivB,KAAK06F,IAAI,EAAG16F,KAAKC,MAAMD,KAAK8T,IAAIguuB,IAAc9hvB,KAAKqivB,MAC7DN,GAAwB,GAAVK,GACdJ,GAAgBhivB,KAAKC,MAAMD,KAAK8T,IAAIsuuB,IAAWpivB,KAAKqivB,KACpDJ,GAA0B,GAAbH,GAAkBC,GAE/B9quB,GAAMqruB,IACVrruB,GAAIgquB,UAAUnuvB,KAAK+uvB,YACnB5quB,GAAI8puB,WAAWe,IACf7quB,GAAI8puB,WAAWgB,IACf9quB,GAAI8puB,WAAWiB,IACf/quB,GAAI8puB,WAAWkB,IAEf,IAAIM,GAA+B,GAAbT,GAClB58tB,GAASjO,GAAIiO,SAAWq9tB,GACxBC,GAAa,KACbC,GAAYH,IAEhB,QAASrihB,MAAOwtT,GACZ,GAAItuf,EAAesuf,GAAQxtT,IAAM,CAC7B,IAAI43L,GAAQ41H,GAAOxtT,IAanB,IAXAhpN,GAAI0puB,YAAY1ghB,IAChBhpN,GAAIgquB,UAAUnuvB,KAAK+itB,SAASh+S,KAC5B5gZ,GAAIgquB,UAAU/7tB,IACdjO,GAAIgquB,UAAUppV,GAAMh/Z,QAEpB4pvB,GAAUl3oB,MAAMssT,IACL,QAAP53L,KACAuihB,GAAat9tB,IAEjBA,IAAU2yY,GAAMh/Z,OAETqsB,GAAS,GACZu9tB,GAAU7B,UAAU,GACpB17tB,KAKZjO,GAAIs0F,MAAMk3oB,GAAU9wuB,OACpB,IACI+wuB,GAAa,WADP5vvB,KAAK+itB,SAAS5+rB,GAAItF,OAG5BsF,UAAIiO,OAAOs9tB,GAAa,GACxBvruB,GAAIgquB,UAAUyB,IACPzruB,GAAItF,MAGfkksB,SAASjwsB,IACLA,GAAO08uB,EAAa18uB,IAEpB,QADI23L,GAAM,GACF33L,GAAKk8jB,OACTvkY,IAAO33L,GAAKo7uB,WAEhB,OAAa,WAANzjjB,IAIf,QACI3qM,YAAYq5C,GAAMiwB,IACdppE,KAAKi5N,WAAa7vJ,GAClBppE,KAAK+F,OAASqjE,GAAIrjE,OAClB/F,KAAKoyB,OAASg3C,GAAIh3C,OAClBpyB,KAAKm5C,KAAOA,GACZn5C,KAAK6vvB,QAAU12sB,GAAKrX,IACpB9hC,KAAKsuB,MAAM6qB,GAAKrX,KAGpBA,MACI,OAAO9hC,KAAK6vvB,QAAQjhvB,MAAM5O,KAAKoyB,OAAQpyB,KAAK+F,QAGhDuoB,UAGJ,gBAAwBwhuB,EACpBxhuB,MAAMxb,IACFA,GAAKsf,OAAOpyB,KAAKoyB,QACjBpyB,KAAK4kB,QAAsB9R,GAAKo7uB,WAChCluvB,KAAK+vvB,SAAsBj9uB,GAAKo7uB,WAChCluvB,KAAKgwvB,mBAAsBl9uB,GAAKo7uB,WAChCluvB,KAAKiwvB,YAAsBn9uB,GAAKo7uB,WAChCluvB,KAAK+qX,MAAsBj4W,GAAKk7uB,YAChChuvB,KAAKkwvB,WAAsBp9uB,GAAKk7uB,YAChChuvB,KAAK27f,QAAsB7of,GAAKo8G,KAAK,GACrClvH,KAAKsiR,SAAsBxvQ,GAAKo8G,KAAK,GAErClvH,KAAKmwvB,KAAOr9uB,GAAKw7uB,aACjBtuvB,KAAKowvB,KAAOt9uB,GAAKw7uB,aACjBtuvB,KAAKqwvB,KAAOv9uB,GAAKw7uB,aACjBtuvB,KAAKswvB,KAAOx9uB,GAAKw7uB,aAEjBtuvB,KAAKuwvB,SAAqBz9uB,GAAKk7uB,YAC/BhuvB,KAAKwwvB,cAAqB19uB,GAAKk7uB,YAC/BhuvB,KAAKywvB,kBAAqB39uB,GAAKw7uB,aAC/BtuvB,KAAK0wvB,iBAAqB59uB,GAAKw7uB,aAC/BtuvB,KAAK2wvB,gBAAqB79uB,GAAKw7uB,aAGnC3xoB,OAAO+zoB,IACH,IAAIvsuB,GAAMqruB,IACVrruB,UAAIgquB,UAAUnuvB,KAAK4kB,SACnBT,GAAIgquB,UAAUnuvB,KAAK+vvB,UACnB5ruB,GAAIgquB,UAAU,GACdhquB,GAAIgquB,UAAUnuvB,KAAKiwvB,aACnB9ruB,GAAI8puB,WAAWjuvB,KAAK+qX,OACpB5mW,GAAI8puB,WAAWjuvB,KAAKkwvB,YACpB/ruB,GAAIs0F,MAAMz4G,KAAK27f,SACfx3e,GAAIs0F,MAAMz4G,KAAKsiR,UACfn+P,GAAIoquB,YAAYvuvB,KAAKmwvB,MACrBhsuB,GAAIoquB,YAAYvuvB,KAAKowvB,MACrBjsuB,GAAIoquB,YAAYvuvB,KAAKqwvB,MACrBlsuB,GAAIoquB,YAAYvuvB,KAAKswvB,MACrBnsuB,GAAI8puB,WAAWjuvB,KAAKuwvB,UACpBpsuB,GAAI8puB,WAAWjuvB,KAAKwwvB,eACpBrsuB,GAAIoquB,YAAYvuvB,KAAKywvB,mBACrBtsuB,GAAIoquB,YAAYmC,IAChBvsuB,GAAIoquB,YAAYvuvB,KAAK2wvB,iBACdxsuB,GAAItF,OAInB,gBAAwBixuB,EACpBxhuB,MAAMxb,IACFA,GAAKsf,OAAOpyB,KAAKoyB,QAGbpyB,KAAK+rW,QADM,IADF/rW,KAAKm5C,KAAKikT,KAAKszZ,iBAET59uB,GAAKiwB,MAAM/iC,KAAK+F,OAAS,EAAG,WACvC,OAAO,EAAI+M,GAAKk7uB,cAGLl7uB,GAAKiwB,MAAM/iC,KAAK+F,OAAS,EAAG+M,GAAKo7uB,UAIxD0C,SAAS1rvB,IACL,OAAOlF,KAAK+rW,QAAQ7mW,IAGxBu4c,SAASv4c,IACL,OAAOlF,KAAK+rW,QAAQ7mW,GAAK,GAAKlF,KAAK+rW,QAAQ7mW,IAG/Cy3G,OAAOovP,IAGH,QAFI5nV,GAAMqruB,IACNqB,GAAkB9kZ,GAAQA,GAAQhmW,OAAS,GAAK,MAC3C4I,GAAI,EAAGA,GAAIo9V,GAAQhmW,SAAU4I,GAC9BkivB,GACA1suB,GAAIgquB,UAAUpiZ,GAAQp9V,KAEtBwV,GAAI8puB,WAAWliZ,GAAQp9V,IAAK,GAGpC,MAAO,CACHyM,OAAQy1uB,GAAkB,EAAI,EAC9B9rV,MAAO5gZ,GAAItF,QAKvB,gBAAwBixuB,EACpBxhuB,MAAMxb,IACFA,GAAKsf,OAAOpyB,KAAKoyB,QAEjBpyB,KAAK4kB,QAAuB9R,GAAKo7uB,WACjCluvB,KAAK8wvB,OAAuBh+uB,GAAKw7uB,aACjCtuvB,KAAK+wvB,QAAuBj+uB,GAAKw7uB,aACjCtuvB,KAAKgxvB,QAAuBl+uB,GAAKw7uB,aACjCtuvB,KAAKixvB,gBAAuBn+uB,GAAKk7uB,YACjChuvB,KAAKkxvB,mBAAuBp+uB,GAAKw7uB,aACjCtuvB,KAAKmxvB,oBAAuBr+uB,GAAKw7uB,aACjCtuvB,KAAKoxvB,WAAuBt+uB,GAAKw7uB,aACjCtuvB,KAAKqxvB,eAAuBv+uB,GAAKw7uB,aACjCtuvB,KAAKsxvB,cAAuBx+uB,GAAKw7uB,aACjCtuvB,KAAKuxvB,YAAuBz+uB,GAAKw7uB,aAEjCx7uB,GAAKxG,KAAK,GAEVtM,KAAKwxvB,iBAAuB1+uB,GAAKw7uB,aACjCtuvB,KAAKyxvB,oBAAuB3+uB,GAAKk7uB,YAGrCrxoB,OAAOp6C,IACH,IAAIp+C,GAAMqruB,IACVrruB,UAAIgquB,UAAUnuvB,KAAK4kB,SACnBT,GAAIoquB,YAAYvuvB,KAAK8wvB,QACrB3suB,GAAIoquB,YAAYvuvB,KAAK+wvB,SACrB5suB,GAAIoquB,YAAYvuvB,KAAKgxvB,SACrB7suB,GAAI8puB,WAAWjuvB,KAAKixvB,iBACpB9suB,GAAIoquB,YAAYvuvB,KAAKkxvB,oBACrB/suB,GAAIoquB,YAAYvuvB,KAAKmxvB,qBACrBhtuB,GAAIoquB,YAAYvuvB,KAAKoxvB,YACrBjtuB,GAAIoquB,YAAYvuvB,KAAKqxvB,gBACrBltuB,GAAIoquB,YAAYvuvB,KAAKsxvB,eACrBntuB,GAAIoquB,YAAYvuvB,KAAKuxvB,aAErBptuB,GAAIs0F,MAAM,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEjCt0F,GAAIoquB,YAAYvuvB,KAAKwxvB,kBACrBrtuB,GAAI8puB,WAAW1rrB,GAAIx8D,QACZoe,GAAItF,OAInB,gBAAwBixuB,EACpBxhuB,MAAMxb,IACFA,GAAKsf,OAAOpyB,KAAKoyB,QACjBpyB,KAAK4kB,QAAU9R,GAAKo7uB,WACpBluvB,KAAK0xvB,UAAY5+uB,GAAKk7uB,YACtBhuvB,KAAKsyH,UAAYx/G,GAAKk7uB,YACtBhuvB,KAAK2xvB,YAAc7+uB,GAAKk7uB,YACxBhuvB,KAAK4xvB,mBAAqB9+uB,GAAKk7uB,YAC/BhuvB,KAAK6xvB,qBAAuB/+uB,GAAKk7uB,YACjChuvB,KAAK8xvB,SAAWh/uB,GAAKk7uB,YACrBhuvB,KAAK+xvB,kBAAoBj/uB,GAAKk7uB,YAC9BhuvB,KAAKgyvB,WAAal/uB,GAAKk7uB,YACvBhuvB,KAAKiyvB,gBAAkBn/uB,GAAKk7uB,YAC5BhuvB,KAAKkyvB,mBAAqBp/uB,GAAKk7uB,YAC/BhuvB,KAAKmyvB,iBAAmBr/uB,GAAKk7uB,YAC7BhuvB,KAAKoyvB,sBAAwBt/uB,GAAKk7uB,YAClChuvB,KAAKqyvB,qBAAuBv/uB,GAAKk7uB,YACjChuvB,KAAKsyvB,kBAAoBx/uB,GAAKk7uB,YAGlCrxoB,OAAO41oB,IACH,IAAIpuuB,GAAMqruB,IACVrruB,UAAIgquB,UAAUnuvB,KAAK4kB,SACnBT,GAAI8puB,WAAWsE,GAASxsvB,QACxBoe,GAAI8puB,WAAWjuvB,KAAKsyH,WACpBnuG,GAAI8puB,WAAWjuvB,KAAK2xvB,aACpBxtuB,GAAI8puB,WAAWjuvB,KAAK4xvB,oBACpBztuB,GAAI8puB,WAAWjuvB,KAAK6xvB,sBACpB1tuB,GAAI8puB,WAAWjuvB,KAAK8xvB,UACpB3tuB,GAAI8puB,WAAWjuvB,KAAK+xvB,mBACpB5tuB,GAAI8puB,WAAWjuvB,KAAKgyvB,YACpB7tuB,GAAI8puB,WAAWjuvB,KAAKiyvB,iBACpB9tuB,GAAI8puB,WAAWjuvB,KAAKkyvB,oBACpB/tuB,GAAI8puB,WAAWjuvB,KAAKmyvB,kBACpBhuuB,GAAI8puB,WAAWjuvB,KAAKoyvB,uBACpBjuuB,GAAI8puB,WAAWjuvB,KAAKqyvB,sBACpBluuB,GAAI8puB,WAAWjuvB,KAAKsyvB,mBACbnuuB,GAAItF,OAInB,gBAAwBixuB,EACpBxhuB,MAAMxb,IACFA,GAAKsf,OAAOpyB,KAAKoyB,QACjB,IAAIi/B,GAAMrxD,KAAKm5C,KACfn5C,KAAKwyvB,QAAU1/uB,GAAKiwB,MADQsuB,GAAIohsB,KACDhB,oBAAqB,WAChD,MAAO,CACHiB,QAAS5/uB,GAAKk7uB,YACd2E,IAAK7/uB,GAAKw7uB,gBAIlBtuvB,KAAK4yvB,iBAAmB9/uB,GAAKiwB,MADdsuB,GAAIwhsB,KAAKnB,UAAYrgsB,GAAIohsB,KAAKhB,oBACA3+uB,GAAKw7uB,YAGtDwE,SAAS5tvB,IACL,IAAIstvB,GAAUxyvB,KAAKwyvB,QACf1kvB,GAAI0kvB,GAAQzsvB,OAChB,OAAIb,GAAK4I,GACE0kvB,GAAQttvB,IAEZ,CACHwtvB,QAASF,GAAQ1kvB,GAAI,GAAG4kvB,QACxBC,IAAK3yvB,KAAK4yvB,iBAAiB1tvB,GAAK4I,KAIxC6uG,OAAO41oB,IAEH,QADIpuuB,GAAMqruB,IACD7gvB,GAAI,EAAGA,GAAI4jvB,GAASxsvB,SAAU4I,GAAG,CACtC,IAAIkuB,GAAI78B,KAAK8yvB,SAASP,GAAS5jvB,KAC/BwV,GAAI8puB,WAAWpxtB,GAAE61tB,SACjBvuuB,GAAIoquB,YAAY1xtB,GAAE81tB,KAEtB,OAAOxuuB,GAAItF,OAInB,IAAIk0uB,EAAa,WACb,SACQC,eACA,OAAO,EAGXlzvB,YAAYgiC,IACR9hC,KAAK8hC,IAAMA,GAGf66E,SACI,OAAO38G,KAAK8hC,IAAIjjB,OAWxB,SACQm0uB,eACA,OAAO,EAGXlzvB,YAAYgT,IACR9S,KAAK8hC,IAAMhvB,GAGX,QAFIyvD,GAAMviE,KAAKuyvB,SAAW,GACtBxmZ,GAAU/rW,KAAKizvB,UAAY,KAClB,CACT,IAAIloY,GAAQj4W,GAAKk7uB,YAIjB,GAHAjiZ,GAAQtmW,KAAKqN,GAAKsf,UAClBmwC,GAAI98D,KAAKqN,GAAKk7uB,eAjBM,GAmBdjjY,IACF,MAGJj4W,GAAKxG,KAzBe,EAyBVy+W,GAAgC,EAAI,GArB1B,IAuBpBxqK,GACIztM,GAAKxG,KAAK,GAzBM,GA0Bbi0M,GACHztM,GAAKxG,KAAK,GA7BM,EA8BTy+W,IACPj4W,GAAKxG,KAAK,IAKtBqwG,OAAOu2oB,IAEH,QADI/uuB,GAAMqruB,EAAaxvvB,KAAK8hC,IAAIjjB,OACvBlQ,GAAI,EAAGA,GAAI3O,KAAKuyvB,SAASxsvB,SAAU4I,GAAG,CAC3C,IAAIzJ,GAAKlF,KAAKuyvB,SAAS5jvB,IACvBwV,GAAIiO,OAAOpyB,KAAKizvB,UAAUtkvB,KAC1BwV,GAAI8puB,WAAWiF,GAAQhuvB,KAE3B,OAAOif,GAAItF,OAInB,OAAO,cAAcixuB,EACjBxhuB,QACItuB,KAAK4mB,MAAQ,GAGjBusuB,SAASjuvB,IACL,IAAI0hB,GAAQ5mB,KAAK4mB,MACjB,GAAIylB,EAAezlB,GAAO1hB,IACtB,OAAO0hB,GAAM1hB,IAGjB,IAAIkuvB,GAAOpzvB,KAAKm5C,KAAKi6sB,KACjBrtvB,GAASqtvB,GAAK31S,SAASv4c,IAE3B,GAAe,IAAXa,GACA,OAAQ6gB,GAAM1hB,IAAM,KAGxB,IAAI4N,GAAO9S,KAAK6vvB,QACZz9tB,GAASpyB,KAAKoyB,OAASghuB,GAAKxC,SAAS1rvB,IACrC48B,GAAM0ttB,EAAa18uB,GAAKlE,MAAMwjB,GAAQrsB,KAEtCstvB,GAAmBvxtB,GAAIwstB,aACvB6B,GAAOrutB,GAAIwstB,aACX8B,GAAOtutB,GAAIwstB,aACX+B,GAAOvutB,GAAIwstB,aACXgC,GAAOxutB,GAAIwstB,aAEXgF,GAAQ1suB,GAAM1hB,IAAMmuvB,GAAmB,EAAI,IAAIE,GAAczxtB,IAAO,IAAI0xtB,GAAY1xtB,IAExFwxtB,UAAMD,iBAAmBA,GACzBC,GAAMnD,KAAOA,GACbmD,GAAMlD,KAAOA,GACbkD,GAAMjD,KAAOA,GACbiD,GAAMhD,KAAOA,GAENgD,GAGX32oB,OAAO82oB,GAAQC,GAAQR,IAEnB,QADI/uuB,GAAMqruB,IAAgBzjZ,GAAU,GAC3Bp9V,GAAI,EAAGA,GAAI+kvB,GAAO3tvB,SAAU4I,GAAG,CACpC,IACI2kvB,GAAQG,GADHC,GAAO/kvB,KAEZwV,GAAIiO,SAAW,GACfjO,GAAI2puB,UAAU,GAElB/hZ,GAAQtmW,KAAK0e,GAAIiO,UACbkhuB,IACAnvuB,GAAIs0F,MAAM66oB,GAAM32oB,OAAOu2oB,KAG/B,OAAI/uuB,GAAIiO,SAAW,GACfjO,GAAI2puB,UAAU,GAElB/hZ,GAAQtmW,KAAK0e,GAAIiO,UACV,CACH2yY,MAAO5gZ,GAAItF,MACXktV,QAASA,MAzHR,GA+Hb4nZ,EAAa,WACb,SACI7zvB,YAAYgL,GAAM4sG,IACd13G,KAAK8K,KAAOA,GACZ9K,KAAK+F,OAAS+E,GAAK/E,OACnB/F,KAAK4zvB,WAAal8oB,GAAMk8oB,WACxB5zvB,KAAK6zvB,mBAAqBn8oB,GAAMm8oB,mBAChC7zvB,KAAK8zvB,WAAap8oB,GAAMo8oB,WACxB9zvB,KAAK+zvB,OAASr8oB,GAAMq8oB,QAI5B,OAAO,cAAcjE,EACjBxhuB,MAAMxb,IACFA,GAAKsf,OAAOpyB,KAAKoyB,QACjBtf,GAAKk7uB,YAcL,QAbIp2oB,GAAQ9kG,GAAKk7uB,YACbgG,GAAeh0vB,KAAKoyB,OAAStf,GAAKk7uB,YAClCiG,GAAcnhvB,GAAKiwB,MAAM60E,GAAO,WAChC,MAAO,CACHg8oB,WAAqB9gvB,GAAKk7uB,YAC1B6F,mBAAqB/gvB,GAAKk7uB,YAC1B8F,WAAqBhhvB,GAAKk7uB,YAC1B+F,OAAqBjhvB,GAAKk7uB,YAC1BjovB,OAAqB+M,GAAKk7uB,YAC1B57tB,OAAqBtf,GAAKk7uB,YAAcgG,MAG5CE,GAAUl0vB,KAAKk0vB,QAAU,GACpBvlvB,GAAI,EAAGA,GAAIslvB,GAAYluvB,SAAU4I,GAAG,CACzC,IAAIwlvB,GAAMF,GAAYtlvB,IACtBmE,GAAKsf,OAAO+huB,GAAI/huB,QAChB,IAAItnB,GAAOgI,GAAKgqO,WAAWq3gB,GAAIpuvB,QAC1BmuvB,GAAQC,GAAIJ,UACbG,GAAQC,GAAIJ,QAAU,IAE1BG,GAAQC,GAAIJ,QAAQtuvB,KAAK,IAAI2uvB,GAAUtpvB,GAAMqpvB,KAEjDn0vB,KAAKq0vB,gBAAkBH,GAAQ,GAAG,GAClCl0vB,KAAKs0vB,eAAiBt0vB,KAAKq0vB,gBAAgBvpvB,KAAKygB,QAAQ,gBAAiB,IAG7EoxF,OAAO43oB,IACH,IAAIL,GAAUl0vB,KAAKk0vB,QACfM,GAAW,EACf,QAAS7lvB,MAAKulvB,GACN7ntB,EAAe6ntB,GAASvlvB,MACxB6lvB,IAAYN,GAAQvlvB,IAAG5I,QAG/B,IAAIoe,GAAMqruB,IACNiF,GAAWjF,IAMf,IAAK7gvB,MAJLwV,GAAI8puB,WAAW,GACf9puB,GAAI8puB,WAAWuG,IACfrwuB,GAAI8puB,WAAW,EAAI,GAAKuG,IAEdN,GACN,GAAI7ntB,EAAe6ntB,GAASvlvB,IAIxB,QAHIm5B,GAAY,GAALn5B,GAAS,CAChB,IAAIylvB,GAAUG,GAAQv0vB,KAAKq0vB,kBAC3BH,GAAQvlvB,IACH6yF,GAAI,EAAGA,GAAI15D,GAAK/hC,SAAUy7F,GAAG,CAClC,IAAIj/E,GAAMulB,GAAK05D,IACfr9E,GAAI8puB,WAAW1ruB,GAAIqxuB,YACnBzvuB,GAAI8puB,WAAW1ruB,GAAIsxuB,oBACnB1vuB,GAAI8puB,WAAW1ruB,GAAIuxuB,YACnB3vuB,GAAI8puB,WAAW1ruB,GAAIwxuB,QACnB5vuB,GAAI8puB,WAAW1ruB,GAAIxc,QACnBoe,GAAI8puB,WAAWwG,GAASriuB,UAExBqiuB,GAAS5G,YAAYtruB,GAAIzX,MAKrCqZ,UAAIs0F,MAAMg8oB,GAAS51uB,OAEZsF,GAAItF,QA9EN,GAmFb61uB,EAAa,WACb,IAAIC,GAAoB,4zDAA4zD39uB,MAAM,QAE11D,OAAO,cAAc84uB,EACjBxhuB,MAAMxb,IAaF,IAAI8hvB,GAEJ,OAdA9hvB,GAAKsf,OAAOpyB,KAAKoyB,QAEjBpyB,KAAKob,OAAStI,GAAKo7uB,WACnBluvB,KAAK60vB,YAAc/hvB,GAAK47uB,aACxB1uvB,KAAK80vB,kBAAoBhivB,GAAKw7uB,aAC9BtuvB,KAAK+0vB,mBAAqBjivB,GAAKw7uB,aAC/BtuvB,KAAKg1vB,aAAelivB,GAAKo7uB,WACzBluvB,KAAKi1vB,aAAenivB,GAAKo7uB,WACzBluvB,KAAKk1vB,aAAepivB,GAAKo7uB,WACzBluvB,KAAKm1vB,YAAcrivB,GAAKo7uB,WACxBluvB,KAAKo1vB,YAActivB,GAAKo7uB,WAIhBluvB,KAAKob,aACN,WACA,OACH,WAEG,OACHw5uB,GAAiB9hvB,GAAKk7uB,YACtBhuvB,KAAKq1vB,eAAiBvivB,GAAKiwB,MAAM6xtB,GAAgB9hvB,GAAKk7uB,WACtDhuvB,KAAKs4Y,MAAQ,GAEb,QADIrmV,GAAQjyD,KAAKoyB,OAASpyB,KAAK+F,OACxB+M,GAAKsf,SAAW6/B,IACnBjyD,KAAKs4Y,MAAM7yY,KAAKqN,GAAKgqO,WAAWhqO,GAAKi7uB,aAEzC,WAEG,OACH6G,GAAiB9hvB,GAAKk7uB,YACtBhuvB,KAAK+rW,QAAUj5V,GAAKo8G,KAAK0loB,IACzB,WAEG,OACH50vB,KAAK2F,IAAMmN,GAAKiwB,MAAM/iC,KAAKm5C,KAAK05sB,KAAKnB,UAAW5+uB,GAAKk7uB,YAK7DmF,SAASnnuB,IACL,OAAQhsB,KAAKob,aACN,MACH,OAAOu5uB,GAAkB3ouB,KAAS,eAE/B,OACH,IAAIpI,GAAQ5jB,KAAKq1vB,eAAerpuB,IAChC,OAAIpI,GAAQ+wuB,GAAkB5uvB,OACnB4uvB,GAAkB/wuB,IAEtB5jB,KAAKs4Y,MAAM10X,GAAQ+wuB,GAAkB5uvB,SAAW,eAEpD,YAEA,OACH,MAAO,eAEJ,OACH,OAAO/F,KAAK2F,IAAIqmB,KAAS,OAIjC2wF,OAAOx9E,IACH,GAAmB,QAAfn/B,KAAKob,OACL,OAAOpb,KAAK8hC,MAIhB,IAAI3d,GAAMqruB,EAAaxvvB,KAAK6vvB,QAAQjhvB,MAAM5O,KAAKoyB,OAAQ,KACvDjO,GAAIgquB,UAAU,QACdhquB,GAAIiO,OAAO,IAKX,QAHI2me,GAAU,GACVm7P,GAAU,GAELvlvB,GAAI,EAAGA,GAAIwwB,GAAQp5B,SAAU4I,GAAG,CACrC,IACIuQ,GAAOlf,KAAKmzvB,SADPh0tB,GAAQxwB,KAEbiV,GAAQ+wuB,GAAkB70uB,QAAQZ,IAClC0E,IAAS,EACTm1e,GAAQtzf,KAAKme,KAEbm1e,GAAQtzf,KAAKkvvB,GAAkB5uvB,OAASmuvB,GAAQnuvB,QAChDmuvB,GAAQzuvB,KAAKyZ,KAMrB,IAFAiF,GAAI8puB,WAAW9utB,GAAQp5B,QAElB4I,GAAI,EAAGA,GAAIoqf,GAAQhzf,SAAU4I,GAC9BwV,GAAI8puB,WAAWl1P,GAAQpqf,KAG3B,IAAKA,GAAI,EAAGA,GAAIulvB,GAAQnuvB,SAAU4I,GAC9BwV,GAAI2puB,UAAUoG,GAAQvlvB,IAAG5I,QACzBoe,GAAI0puB,YAAYqG,GAAQvlvB,KAG5B,OAAOwV,GAAItF,QAvGN,GA4Gby2uB,EAAa,WACb,SACIx1vB,YAAYgT,GAAMsf,GAAQmjuB,IACtB,IAAI1zuB,GAAO7hB,KACX6hB,GAAK+xuB,WAAa9gvB,GAAKk7uB,YACvBnsuB,GAAKgyuB,mBAAqB/gvB,GAAKk7uB,YAC/BnsuB,GAAKuQ,OAASA,GAAStf,GAAKo7uB,WAE5Bp7uB,GAAK+7uB,cAAc,WACf,IAAI7iuB,GAIJ,OAHAlZ,GAAKsf,OAAOvQ,GAAKuQ,QACjBvQ,GAAKzG,OAAStI,GAAKk7uB,YAEXnsuB,GAAKzG,aACR,EACDyG,GAAK9b,OAAS+M,GAAKk7uB,YACnBnsuB,GAAKmuB,SAAWl9B,GAAKk7uB,YACrB,QAASr/uB,GAAI,EAAGA,GAAI,MAAOA,GACvB4mvB,GAAQ5mvB,IAAKmE,GAAKi7uB,WAEtB,WAEC,EACDlsuB,GAAK9b,OAAS+M,GAAKk7uB,YACnBnsuB,GAAKmuB,SAAWl9B,GAAKk7uB,YACrB,IAAIwH,GAAW1ivB,GAAKk7uB,YAAc,EAElCl7uB,GAAKxG,KAAK,GACV,IAAImpvB,GAAU3ivB,GAAKiwB,MAAMyytB,GAAU1ivB,GAAKk7uB,WACxCl7uB,GAAKxG,KAAK,GACV,IAAIopvB,GAAY5ivB,GAAKiwB,MAAMyytB,GAAU1ivB,GAAKk7uB,WACtC2H,GAAU7ivB,GAAKiwB,MAAMyytB,GAAU1ivB,GAAKw7uB,YACpCsH,GAAgB9ivB,GAAKiwB,MAAMyytB,GAAU1ivB,GAAKk7uB,WAE1Cp2oB,IAAS/1F,GAAK9b,OAAS8b,GAAKuQ,OAAStf,GAAKsf,UAAY,EACtDmguB,GAAWz/uB,GAAKiwB,MAAM60E,GAAO9kG,GAAKk7uB,WAEtC,IAAKr/uB,GAAI,EAAGA,GAAI6mvB,KAAY7mvB,GAAG,CAC3B,IAAIqe,GAAQ0ouB,GAAU/mvB,IAAI27B,GAAMmrtB,GAAQ9mvB,IACxC,IAAKqd,GAAOgB,GAAOhB,IAAQse,KAAOte,GAAM,CACpC,IAAI6puB,GACqB,IAArBD,GAAcjnvB,IACdknvB,GAAU7puB,GAAO2puB,GAAQhnvB,IAsBT,KADhBknvB,GAAUtD,GADEqD,GAAcjnvB,IAAK,GAAK6mvB,GAAW7mvB,KAAMqd,GAAOgB,MAC/B,KAEzB6ouB,IAAWF,GAAQhnvB,KAG3B4mvB,GAAQvpuB,IAAkB,MAAV6puB,IAGxB,WAEC,EACDh0uB,GAAK9b,OAAS+M,GAAKk7uB,YACnBnsuB,GAAKmuB,SAAWl9B,GAAKk7uB,YACrBhiuB,GAAOlZ,GAAKk7uB,YAEZ,QADIjovB,GAAS+M,GAAKk7uB,YACXjovB,MAAW,GACdwvvB,GAAQvpuB,MAAUlZ,GAAKk7uB,YAE3B,WAEC,GACDl7uB,GAAKk7uB,YACLnsuB,GAAK9b,OAAS+M,GAAKo7uB,WACnBrsuB,GAAKmuB,SAAWl9B,GAAKo7uB,WAErB,QADI4H,GAAUhjvB,GAAKo7uB,WACZ4H,MAAY,GAAG,CAClB9puB,GAAOlZ,GAAKo7uB,WAGZ,QAFI6H,GAAcjjvB,GAAKo7uB,WACnB8H,GAAYljvB,GAAKo7uB,WACdliuB,IAAQ+puB,IACXR,GAAQvpuB,MAAUgquB,KAG1B,cAGI7gvB,OAAOW,SACPX,OAAOW,QAAQwO,MAAM,0BAA4BzC,GAAKzG,YA4F1E,OAAO,cAAc00uB,EACjBxhuB,MAAMxb,IACF,IAAI+O,GAAO7hB,KACPoyB,GAASvQ,GAAKuQ,OAClBtf,GAAKsf,OAAOA,IACZvQ,GAAK0zuB,QAAU,GACf1zuB,GAAK+C,QAAU9R,GAAKk7uB,YACpB,IAAIgB,GAAal8uB,GAAKk7uB,YACtBnsuB,GAAK84gB,OAAS7nhB,GAAKiwB,MAAMistB,GAAY,WACjC,OAAO,IAAIiH,GAAUnjvB,GAAMsf,GAAQvQ,GAAK0zuB,yBAIlCW,GAAWC,IACrB,IAAIhyuB,GAAMqruB,IACVrruB,UAAI8puB,WAAW,GACf9puB,GAAI8puB,WAAW,GACf9puB,GAAIs0F,MAtGZ,YAAuBy9oB,GAAWC,IAC9B,IAAIC,GAAQC,EAAWH,IACnBI,GAAa,GACbC,GAAW,GACXj/nB,GAAO,KACP79G,GAAO,KAEX,YAAiB+8uB,IACb,OAAOL,GAAUD,GAAUM,KAG/B,QAAS7nvB,GAAI,EAAGA,GAAIynvB,GAAMrwvB,SAAU4I,GAAG,CACnC,IAAIqd,GAAOoquB,GAAMznvB,IAEbohH,GADM0moB,GAAQzquB,IACAA,IACN,MAARsrG,IAAgBvH,KAAUt2G,MACtB69G,IACAi/nB,GAAS9wvB,KAAK6xH,IAElBg/nB,GAAW7wvB,KAAKumB,IAChBvS,GAAOs2G,IAEXuH,GAAOtrG,GAGPsrG,IACAi/nB,GAAS9wvB,KAAK6xH,IAElBi/nB,GAAS9wvB,KAAK,OACd6wvB,GAAW7wvB,KAAK,OAEhB,IAAI+vvB,GAAWc,GAAWvwvB,OACtB2wvB,GAAwB,EAAXlB,GACbvG,GAAc,EAAI/hvB,KAAK06F,IAAI,EAAG16F,KAAKC,MAAMD,KAAK8T,IAAIw0uB,IAAYtovB,KAAKqivB,MACnEL,GAAgBhivB,KAAK8T,IAAIiuuB,GAAc,GAAK/hvB,KAAKqivB,IACjDJ,GAAauH,GAAazH,GAE1B/yM,GAAS,GACTy6M,GAAe,GACfpE,GAAW,GAEf,IAAK5jvB,GAAI,EAAGA,GAAI6mvB,KAAY7mvB,GAAG,CAC3B,IAAI+mvB,GAAYY,GAAW3nvB,IACvB8mvB,GAAUc,GAAS5nvB,IACvB,GAAiB,OAAb+mvB,GAAqB,CACrBx5M,GAAOz2iB,KAAK,GACZkxvB,GAAalxvB,KAAK,GAClB,MAEJ,IAAImxvB,GAAaH,GAAQf,IACzB,GAAIA,GAAYkB,IAAc,MAAQ,CAClC16M,GAAOz2iB,KAAK,GACZkxvB,GAAalxvB,KAAK,GAAK8svB,GAASxsvB,OAASyvvB,GAAW7mvB,KACpD,QAAS6yF,GAAIk0pB,GAAWl0pB,IAAKi0pB,KAAWj0pB,GACpC+wpB,GAAS9svB,KAAKgxvB,GAAQj1pB,UAG1B06c,GAAOz2iB,KAAKmxvB,GAAalB,IACzBiB,GAAalxvB,KAAK,GAI1B,IAAI0e,GAAMqruB,IAEVrruB,UAAI8puB,WAAW,GACf9puB,GAAI8puB,WAAW,GACf9puB,GAAIgquB,UAAU,IACdhquB,GAAI8puB,WAAW,GACf9puB,GAAI8puB,WAAW,GAAgB,EAAXuH,GAAiC,EAAlBjD,GAASxsvB,QAC5Coe,GAAI8puB,WAAW,GACf9puB,GAAI8puB,WAAWyI,IACfvyuB,GAAI8puB,WAAWgB,IACf9quB,GAAI8puB,WAAWiB,IACf/quB,GAAI8puB,WAAWkB,IAEfoH,GAAS3vvB,QAAQud,GAAI8puB,YACrB9puB,GAAI8puB,WAAW,GACfqI,GAAW1vvB,QAAQud,GAAI8puB,YACvB/xM,GAAOt1iB,QAAQud,GAAIoquB,aACnBoI,GAAa/vvB,QAAQud,GAAI8puB,YACzBsE,GAAS3rvB,QAAQud,GAAI8puB,YAEd9puB,GAAItF,MAoBGg4uB,CAAcX,GAAWC,KAC5BhyuB,GAAItF,QAlNN,GAwNjB,gBAAuBixuB,EACnBxhuB,MAAMxb,IACFA,GAAKsf,OAAOpyB,KAAKoyB,QACjBpyB,KAAK4kB,QAAU9R,GAAKk7uB,YACpBhuvB,KAAK82vB,iBAAmBhkvB,GAAKw7uB,aAC7BtuvB,KAAK+2vB,YAAcjkvB,GAAKk7uB,YACxBhuvB,KAAKg3vB,WAAalkvB,GAAKk7uB,YACvBhuvB,KAAK8H,KAAOgL,GAAKk7uB,YACjBhuvB,KAAKi3vB,gBAAkBnkvB,GAAKw7uB,aAC5BtuvB,KAAKk3vB,gBAAkBpkvB,GAAKw7uB,aAC5BtuvB,KAAKm3vB,kBAAoBrkvB,GAAKw7uB,aAC9BtuvB,KAAKo3vB,kBAAoBtkvB,GAAKw7uB,aAC9BtuvB,KAAKq3vB,kBAAoBvkvB,GAAKw7uB,aAC9BtuvB,KAAKs3vB,kBAAoBxkvB,GAAKw7uB,aAC9BtuvB,KAAKu3vB,oBAAsBzkvB,GAAKw7uB,aAChCtuvB,KAAKw3vB,oBAAsB1kvB,GAAKw7uB,aAChCtuvB,KAAKy3vB,eAAiB3kvB,GAAKw7uB,aAC3BtuvB,KAAK03vB,mBAAqB5kvB,GAAKw7uB,aAC/BtuvB,KAAK23vB,YAAc7kvB,GAAKw7uB,aAExBtuvB,KAAK43vB,OAAS9kvB,GAAKiwB,MAAM,GAAIjwB,GAAKi7uB,UAClC/tvB,KAAK63vB,UAAY/kvB,GAAKiwB,MAAM,EAAGjwB,GAAKo7uB,UAEpCluvB,KAAK83vB,SAAWhlvB,GAAKgqO,WAAW,GAChC98O,KAAK8/D,UAAYhtD,GAAKk7uB,YACtBhuvB,KAAK+3vB,eAAiBjlvB,GAAKk7uB,YAC3BhuvB,KAAKg4vB,cAAgBllvB,GAAKk7uB,YAEtBhuvB,KAAK4kB,QAAU,IACf5kB,KAAK8wvB,OAASh+uB,GAAKw7uB,aACnBtuvB,KAAK+wvB,QAAUj+uB,GAAKw7uB,aACpBtuvB,KAAKgxvB,QAAUl+uB,GAAKw7uB,aACpBtuvB,KAAKi4vB,UAAYnlvB,GAAKk7uB,YACtBhuvB,KAAKk4vB,WAAaplvB,GAAKk7uB,YACvBhuvB,KAAKm4vB,cAAgBrlvB,GAAKiwB,MAAM,EAAGjwB,GAAKo7uB,UAEpCluvB,KAAK4kB,QAAU,IACf5kB,KAAKo4vB,QAAUtlvB,GAAKk7uB,YACpBhuvB,KAAKq4vB,UAAYvlvB,GAAKk7uB,YACtBhuvB,KAAKs4vB,YAAcxlvB,GAAKk7uB,YACxBhuvB,KAAKu4vB,UAAYzlvB,GAAKk7uB,YACtBhuvB,KAAKw4vB,WAAa1lvB,GAAKk7uB,cAKnCrxoB,SACI,OAAO38G,KAAK8hC,OAIpB,IAAI22tB,GAAY,IAWhB,QACI34vB,YAAYulJ,IACRrlJ,KAAKqlJ,KAAOA,GACZrlJ,KAAK04vB,OAAS,GACd14vB,KAAK24vB,SAAW,GAChB34vB,KAAKm2vB,UAAY,CAAE,EAAG,GACtBn2vB,KAAK44vB,UAAY,CAAE,EAAG,GACtB54vB,KAAKk2vB,UAAY,GACjBl2vB,KAAKqL,KAAOrL,KAAK64vB,UAAY,EAC7B74vB,KAAK84vB,QAAU,EACf94vB,KAAKu0vB,OAnBb,aAEI,QADI/hQ,GAAM,GAAI1kf,GAAIklB,OAAOyluB,IAChB9pvB,GAAI,EAAGA,GAAIb,GAAE/H,SAAU4I,GAC5B6jf,IAAOx/d,OAAOC,aAAanlB,GAAE8jO,WAAWjjO,IAAK,GAAK,IAEtD,QAAE8pvB,GACKjmQ,GAaWumQ,GAAkB,IAAM/4vB,KAAKqlJ,KAAKkvmB,OAGpDyE,IAAIpxf,IACA,IAAI/lP,GAAO7hB,KACX,GAAiB,iBAAN4nQ,GACP,ODnrBZ,WAAoBm3O,IAMhB,QAFIp7e,GACA82hB,GAJAhogB,GAAS,GACTqlF,GAAU,EACV/xG,GAASg5e,GAAOh5e,OAGb+xG,GAAU/xG,KACbpC,GAAQo7e,GAAOntQ,WAAW95H,QACb,OAAUn0G,IAAS,OAAUm0G,GAAU/xG,GAGxB,QAAX,OADb00hB,GAAQ17C,GAAOntQ,WAAW95H,QAEtBrlF,GAAOhtB,OAAe,KAAR9B,KAAkB,KAAe,KAAR82hB,IAAiB,QAIxDhogB,GAAOhtB,KAAK9B,IACZm0G,MAGJrlF,GAAOhtB,KAAK9B,IAGpB,OAAO8uB,GC4pBQwmuB,CAAWrxf,IAAI5tP,OAAO,SAASw4e,GAAKxme,IACvC,OAAOwme,GAAMx/d,OAAOC,aAAapR,GAAKm3uB,IAAIhtuB,MAC3C,IAEP,IAAIA,GAAOnK,GAAK82uB,SAAS/wf,IACzB,IAAK57O,GAAM,CACPA,GAAOnK,GAAKxW,OACZwW,GAAK62uB,OAAO1suB,IAAQ47O,GACpB/lP,GAAK82uB,SAAS/wf,IAAM57O,GAIpB,IAAIktuB,GAAUr3uB,GAAKwjI,KAAK8zmB,KAAK5D,QAAQ3tf,IACrC,GAAIsxf,KACAr3uB,GAAKq0uB,UAAUlquB,IAAQktuB,GACQ,MAA3Br3uB,GAAKs0uB,UAAU+C,KAAkB,CACjC,IAAIzC,GAAU50uB,GAAKi3uB,UACnBj3uB,GAAKs0uB,UAAU+C,IAAWzC,GAC1B50uB,GAAK+2uB,UAAUnC,IAAWyC,IAItC,OAAOltuB,GAGXotuB,WAAWtuvB,IACP,OAAO9K,KAAKg5vB,IAAIluvB,IAGpBynvB,WACI,OAAO8D,EAAWr2vB,KAAKm2vB,WAG3BkD,UAAU9G,GAAUhgvB,IACXA,KACDA,GAAS,IAEb,QAAS5D,GAAI,EAAGA,GAAI4jvB,GAASxsvB,SAAU4I,GAAG,CACtC,IAAIzJ,GAAKqtvB,GAAS5jvB,IAClB,IAAK4D,GAAOrN,IAAK,CACb,IAAIouvB,GAAQ/gvB,GAAOrN,IAAMlF,KAAKqlJ,KAAKi0mB,KAAKnG,SAASjuvB,IAC7CouvB,IAASA,GAAMN,UACfhzvB,KAAKq5vB,UAAU/F,GAAMf,SAAUhgvB,KAI3C,OAAOA,GAGXoqG,SACI,IAAI82oB,GAASzzvB,KAAKq5vB,UAAUr5vB,KAAKuyvB,YAGjC,QAAS2G,MAAWzF,GAChB,GAAIpntB,EAAeontB,GAAQyF,MACvBA,GAAUt1vB,SAASs1vB,GAAS,IACG,MAA3Bl5vB,KAAKm2vB,UAAU+C,KAAkB,CACjC,IAAIzC,GAAUz2vB,KAAK84vB,UACnB94vB,KAAKm2vB,UAAU+C,IAAWzC,GAC1Bz2vB,KAAK44vB,UAAUnC,IAAWyC,GAOtC,IACIK,GADclD,EAAWr2vB,KAAK44vB,WACJjzvB,IAAI,SAAST,IACvC,OAAOlF,KAAK44vB,UAAU1zvB,KACvBlF,MAECqlJ,GAAOrlJ,KAAKqlJ,KACZi0mB,GAAOj0mB,GAAKi0mB,KAAK38oB,OAAO82oB,GAAQ8F,GAAav5vB,KAAKm2vB,WAClD/C,GAAO/tmB,GAAK+tmB,KAAKz2oB,OAAO28oB,GAAKvtZ,SAEjC/rW,KAAKw5vB,SAAWx5vB,KAAKqL,KAAO,EAE5B,IAAIsvhB,GAAS,CACTw+N,KAAS7D,EAAU34oB,OAAO38G,KAAKk2vB,UAAWl2vB,KAAKm2vB,WAC/CmD,KAASA,GAAKv0V,MACdquV,KAASA,GAAKruV,MACd00V,KAASp0mB,GAAKo0mB,KAAK98oB,OAAO48oB,IAC1B9G,KAASptmB,GAAKotmB,KAAK91oB,OAAO48oB,IAC1B1G,KAASxtmB,GAAKwtmB,KAAKl2oB,OAAO48oB,IAC1Br6uB,KAASmmI,GAAKnmI,KAAKy9F,OAAO48oB,IAC1Bv0vB,KAASqgJ,GAAKrgJ,KAAK23G,OAAO38G,KAAKu0vB,QAC/Bn3Z,KAAS/3M,GAAK+3M,KAAKzgP,OAAOy2oB,GAAKh4uB,QAC/B,OAASiqI,GAAKq0mB,IAAI/8oB,UAGtB,OAAO38G,KAAKqlJ,KAAKs0mB,UAAUh9oB,OAAOg+a,IAGtCi/N,cAEI,QADIz1uB,GAAMqruB,IAAgBl7pB,GAAM,EACvBulqB,GAAM75vB,KAAK64vB,UAAWgB,GAAM75vB,KAAKqL,OAAQwuvB,GAAK,CACnD,KAAOvlqB,GAAMulqB,IACT11uB,GAAI8puB,WAAW,GACf35pB,KAEJ,IAAI4kqB,GAAUl5vB,KAAKk2vB,UAAU2D,IAGzB11uB,GAAI8puB,WAFJiL,GACcl5vB,KAAKm2vB,UAAU+C,IAGd,GAEnB5kqB,KAEJ,OAAOnwE,GAAItF,OAInB,QACI/e,YAAY+vvB,GAAS7qvB,IACjB,IAAI6c,GAAO7hB,KACP8S,GAAO+O,GAAKi4uB,SAAWtK,EAAaK,IACxC,GAA0B,QAAtB/8uB,GAAKgqO,WAAW,GAAc,CAC9B,IAAI1qN,GACJ,MAAM9D,GAAQ,WACVxb,GAAKsf,OAAOA,IACZvQ,GAAKyM,SAET,IAAKtpB,GACD,MAAM,IAAIyR,MAAM,qCAEpB3D,GAAKo7uB,WAEL,QADI6L,GAAWjnvB,GAAKo7uB,WACXv/uB,GAAI,EAAGA,GAAIorvB,KAAYprvB,GAG5B,GAFAyjB,GAAStf,GAAKo7uB,WACdp7uB,GAAK+7uB,cAAcvguB,IACfzM,GAAK0yuB,QAAUvvvB,GACf,OAGR,MAAM,IAAIyR,MAAM,QAAUzR,GAAO,4BAEjC8N,GAAKsf,OAAO,GACZvQ,GAAKyM,QAIbA,QACI,IAAI+iC,GAAMrxD,KAAK25vB,UAAY,IAAIK,EAAUh6vB,KAAK85vB,UAE9C95vB,KAAKo9V,KAAO/rS,GAAI+9rB,UAAU,OAAQ6K,GAClCj6vB,KAAKozvB,KAAO/hsB,GAAI+9rB,UAAU,OAAQ8K,GAClCl6vB,KAAKyyvB,KAAOphsB,GAAI+9rB,UAAU,OAAQ+K,GAClCn6vB,KAAK6yvB,KAAOxhsB,GAAI+9rB,UAAU,OAAQgL,GAClCp6vB,KAAKy5vB,KAAOposB,GAAI+9rB,UAAU,OAAQiL,GAClCr6vB,KAAKs5vB,KAAOjosB,GAAI+9rB,UAAU,OAAQ2D,GAClC/yvB,KAAKgF,KAAOqsD,GAAI+9rB,UAAU,OAAQuE,GAClC3zvB,KAAKkf,KAAOmyC,GAAI+9rB,UAAU,OAAQsF,GAClC10vB,KAAKm5vB,KAAO9nsB,GAAI+9rB,UAAU,OAAQkG,GAClCt1vB,KAAK05vB,IAAOrosB,GAAI+9rB,UAAU,OAAQkL,GAElCt6vB,KAAKu0vB,OAASv0vB,KAAKgF,KAAKsvvB,eACxBt0vB,KAAK8wvB,OAAS9wvB,KAAK05vB,IAAI5I,QAAU9wvB,KAAKyyvB,KAAK3B,OAC3C9wvB,KAAK+wvB,QAAU/wvB,KAAK05vB,IAAI3I,SAAW/wvB,KAAKyyvB,KAAK1B,QAC7C/wvB,KAAKgxvB,QAAUhxvB,KAAK05vB,IAAI1I,SAAWhxvB,KAAKyyvB,KAAKzB,QAC7ChxvB,KAAK0gG,MAAQ,IAAO1gG,KAAKo9V,KAAK8yZ,WAGlCqK,aAAajH,IACT,OAAOtzvB,KAAKy5vB,KAAK3G,SAASQ,IAAOZ,QAAU1yvB,KAAK0gG,MAGpD85pB,aACI,OAAO,IAAIC,EAAQz6vB,OC9lCpB,MAAM06vB,WAAUC,mBCSvB,MAAMxyL,GAAUtpF,YACV+7Q,GAAK,KAEX,IAAIC,GAAmB,EAEvB,MAAMC,GAAa,CACf3pY,GAAY,CAAE,QAAU,SACxBC,GAAY,CAAE,QAAU,SACxB4gC,GAAY,CAAE,QAAU,SACxBiD,GAAY,CAAE,OAAU,SACxBC,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxB86G,GAAY,CAAE,OAAU,QACxB6qP,GAAY,CAAE,MAAU,QACxBC,GAAY,CAAE,OAAU,OACxBC,IAAY,CAAE,KAAU,QACxBtrF,GAAY,CAAE,QAAU,SACxB32F,GAAY,CAAE,QAAU,SACxBE,GAAY,CAAE,QAAU,SACxBgiL,GAAY,CAAE,QAAU,SACxBC,GAAY,CAAE,OAAU,SACxBC,GAAY,CAAE,MAAU,QACxBC,GAAY,CAAE,OAAU,OACxBC,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxBC,IAAY,CAAE,MAAU,QACxBC,GAAY,CAAE,QAAU,SACxBrxpB,GAAY,CAAE,QAAU,SACxBC,GAAY,CAAE,QAAU,SACxBC,GAAY,CAAE,OAAU,SACxBoxpB,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxBC,GAAY,CAAE,OAAU,QACxBC,IAAY,CAAE,MAAU,QACxBC,UAAY,CAAE,OAAU,KACxBC,MAAY,CAAE,IAAU,KACxB5qb,MAAY,CAAE,IAAU,MACxBu8D,OAAY,CAAE,IAAU,KACxBsuX,QAAY,CAAE,IAAU,OAG5B,cACI,IAAIC,GAAc,EAAG5puB,GAAS+8tB,IAC9B,cACI,QAAS7gvB,GAAI,EAAGA,GAAIouB,UAAUh3B,SAAU4I,GAAG,CACvC,IAAIhF,GAAIozB,UAAUpuB,IAClB,QAAUxJ,IAANwE,GACA,MAAM,IAAI8M,MAAM,kCAEf,GAAI9M,cAAa2yvB,GAClB3yvB,GAAE4yvB,aAAap4uB,IACfxa,GAAEgzG,OAAOx4F,YAEJwb,GAAQh2B,IACb6yvB,GAAY7yvB,GAAGwa,YAEVs8J,GAAO92K,IACZ8yvB,GAAW9yvB,GAAGwa,YAEG,iBAALxa,GAAe,CAC3B,GAAIwN,MAAMxN,IACN,MAAM,IAAI8M,MAAM,4BAGpB,IAAI+L,GAAM7Y,GAAEm1G,QAAQ,GAChBt8F,GAAI1C,QAAQ,MAAQ,IACpB0C,GAAMA,GAAI+I,QAAQ,SAAU,KAErB,MAAP/I,KACAA,GAAM,KAEViQ,GAAOo7tB,YAAYrruB,QAEd,iBAAiBg5Z,YAAY7xa,IAClC8oB,GAAOo7tB,YAAY76tB,OAAOrpB,KAEL,mBAATA,GAAEkV,IACd4T,GAAOgmF,MAAM9uG,GAAEkV,OAEE,iBAALlV,KACPA,GAGDwa,GAAI,IAAIu4uB,GAAc/yvB,KAFtB8oB,GAAOo7tB,YAAY,UAOnC1puB,UAAIw4uB,UAAY,SAAS7pvB,IACrB2f,GAAOgmF,MAAM3lG,KAEjBqR,GAAIy4uB,WAAa,SAASh3vB,MACpBy2vB,GACFz2vB,GAAEue,MACAk4uB,IAENl4uB,GAAI8ld,OAAS,WACT9ld,GAAIy2uB,GAAI1vpB,GAAI,GAAkB,EAAdmxpB,GAAiB,OACjCl4uB,GAAIwP,MAAM,KAAMoJ,YAEpB5Y,GAAIiO,OAAS,WACT,OAAOK,GAAOL,UAElBjO,GAAIpZ,SAAW,WACX,MAAM,IAAI0L,MAAM,eAEpB0N,GAAItF,IAAM,WACN,OAAO4T,GAAO5T,OAElBsF,GAAI4V,OAAS,WACT,OAAOtH,IAEJtO,GAsBX,YAAyB04uB,IACrB,GAAwB,mBAAbA,GAAyB,CAChC,IAAI99uB,GAAU89uB,GACdA,GAAY,SAAShqvB,GAAKu2D,IACtB,OAAOv2D,MAAOkM,GAAUA,GAAQlM,IAAOu2D,IAG/C,IAAImliB,GAAYsuJ,GAAU,YAAa/B,GAAW5lW,IAClD,IAAKq5M,GACD,MAAO,GAEX,GAAwB,iBAAbA,IAEU,OADjBA,GAAYusJ,GAAWvsJ,GAAUlzkB,gBAE7B,MAAM,IAAI5kB,MAAM,sBAIxB83lB,GAAU,GAAKuuJ,GAAcvuJ,GAAU,IACvCA,GAAU,GAAKuuJ,GAAcvuJ,GAAU,IAEnCsuJ,GAAU,aAAa,KACvBtuJ,GAAY,CACRrhmB,KAAKsB,IAAI+/lB,GAAU,GAAIA,GAAU,IACjCrhmB,KAAKulC,IAAI87jB,GAAU,GAAIA,GAAU,MAIzC,IAAIhgkB,GAASsutB,GAAU,UACvB,OAAItutB,KAGIA,GAFiB,iBAAVA,IAAuC,iBAAVA,GAE3B,CAAE6gC,KADX7gC,GAASuutB,GAAcvutB,GAAQ,GACN4/E,IAAK5/E,GAAQ+gC,MAAO/gC,GAAQm7R,OAAQn7R,IAEpD,CACL6gC,KAAS0trB,GAAcvutB,GAAO6gC,KAAM,GACpC++C,IAAS2uoB,GAAcvutB,GAAO4/E,IAAK,GACnC7+C,MAASwtrB,GAAcvutB,GAAO+gC,MAAO,GACrCo6P,OAASozb,GAAcvutB,GAAOm7R,OAAQ,IAG1Cmzb,GAAU,eACVtuJ,GAAU,IAAMhgkB,GAAO6gC,KAAO7gC,GAAO+gC,MACrCi/hB,GAAU,IAAMhgkB,GAAO4/E,IAAM5/E,GAAOm7R,SAGrC,CAAE6kS,UAAWA,GAAWhgkB,OAAQA,IAG3C,IAAIwutB,GAAa,CACb,eAA0B,EAC1B,cAA0B,EAC1B,gBAA0B,EAC1B,oBAA0B,EAC1BC,WAA0B,EAC1B,kBAA0B,EAC1B,qBAA0B,EAC1B,yBAA0B,EAC1BC,SAA0B,EAC1B,gBAA0B,EAC1B,mBAA0B,EAC1B,uBAA0B,EAC1Bz8O,QAA0B,EAC1B08O,cAA0B,GA0D1BliB,GAAc,GAElB,cACIA,GAAc,GA8KlB,IAAIv/F,GAjBJ,YAAoB0hH,IAChB,OAAO,SAAS1ohB,GAAM5kO,IAClB,IAAI/B,GAAI2mO,GAAK1uO,OAAQ4I,GAAIb,GACzB,GAAU,IAANA,GACA,OAAO+B,KAEX,cACgB,KAAN/B,IACF+B,KAGR,KAAOlB,MAAM,GACTwuvB,GAAQ1ohB,GAAK9lO,IAAItD,KAKb+xvB,CAlMhB,YAAkBt+uB,GAAKiniB,IACnB,IAAI1ga,GAAO03mB,GAAWj+uB,IAClBumI,GACA0ga,GAAK1ga,IAzCb,YAAoBvmI,GAAKiniB,IAErB,IAAIlphB,GACJ,GAAIsriB,GAAQp4F,OAASlzc,GAAI,qBAAqB+pU,KAAK9nV,KAC/CiniB,GHqGR,WAA4BjnE,IACxB,OAAI3pe,OAAO4rB,KAtBf,WAAwB+9c,IACpB,MAAMhse,GAAOqC,OAAO4rB,KAAK+9c,IACnBvse,GAAS,IAAI+P,WAAWxP,GAAK/M,QAEnC,QAASokC,GAAM,EAAGA,GAAMr3B,GAAK/M,OAAQokC,KACjC53B,GAAO43B,IAAOr3B,GAAK8+N,WAAWznM,IAGlC,OAAO53B,GAeI8qvB,CAAev+Q,IAZ9B,WAA0Bhse,IACtB,MAAMP,GAAS,IAAI+P,WAAWxP,GAAK/M,QAEnC,QAASokC,GAAM,EAAGA,GAAMr3B,GAAK/M,OAAQokC,KACjC53B,GAAO43B,IAAOr3B,GAAKq3B,IAGvB,OAAO53B,GAQA+qvB,CAAiB5P,EAAO/rlB,OAAOm9U,KG1G7By+Q,CAAmBz+uB,GAAI2D,OAAOoa,GAAE,GAAG92B,cAD5C,CAeA,IAAImhD,GAAM,IAAIp/B,eACdo/B,GAAIn/B,KAAK,MAAOjJ,IAAK,GACjB2uuB,IACAvmsB,GAAI/jC,aAAe,eAEvB+jC,GAAIh/B,OAAS,WACS,KAAdg/B,GAAI7/B,QAA+B,KAAd6/B,GAAI7/B,OAErB0+hB,GADA0nM,EACK,IAAInruB,WAAW4kC,GAAIlnC,UAEnB,IAAI7K,OAAOqovB,QAAQt2sB,GAAIu2sB,cAAcjvqB,WAG9ClqE,MAGR4iC,GAAI9+B,QAAU9D,GACd4iC,GAAIrvC,KAAK,MA3BT,cACQ1C,OAAOW,UACHX,OAAOW,QAAQwO,MACfnP,OAAOW,QAAQwO,MAAM,sBAAuBxF,IAE5C3J,OAAOW,QAAQkL,IAAI,sBAAuBlC,KAGlDiniB,GAAK,OA2BL23M,CAAW5+uB,GAAK,SAAShM,IACrB,GAAY,MAARA,GACA,MAAM,IAAI2D,MAAM,yBAA2BqI,IAE3C,IAAIumI,GAAO,IAAIs4mB,EAAQ7qvB,IACvBiqvB,GAAWj+uB,IAAOumI,GAClB0ga,GAAK1ga,QAwLjBu4mB,GAAa,SAAStlQ,GAAQzof,GAAUkP,IACxCA,GAAUlZ,OAAOw0D,OAAO,CACpBwjsB,YAAc,IACdC,SAAc,GACf/+uB,IACH,IAAI01N,GAAO5uO,OAAOrC,KAAK80f,IAASxqf,GAAI2mO,GAAK1uO,OACzC,GAAU,IAAN+H,GACA,OAAO+B,KAEX,cACgB,KAAN/B,IACF+B,KAGR4kO,GAAK7tO,QAAQ,SAASkY,KA1L1B,YAAmBA,GAAKkwC,GAAM+2f,GAAMhniB,IAChC,IAA4Bg/uB,GAAS5itB,GAAjCnB,GAAMghsB,GAAYl8tB,IACtB,GAAIk7B,GACA+rgB,GAAK/rgB,YAELA,GAAM,IAAIC,MACJ,UAAUuhY,KAAK18Z,MACjBk7B,GAAIwyG,YAAc,aAElBihmB,IAAsB,UAAUjyU,KAAK18Z,IAAO,CAS5C,IAAI+I,GAAM,IAAIC,eACdD,GAAIK,OAAS,WACTizB,GAAOtzB,GAAI7H,SAEXg+uB,GADAD,GAAUntuB,IAAI4oB,gBAAgB2B,MAGlCtzB,GAAIO,QAAU61uB,GACdp2uB,GAAIE,KAAK,MAAOjJ,IAAK,GACrB+I,GAAI1E,aAAe,OACnB0E,GAAIhQ,YAEJmmvB,GAAMl/uB,IAId,YAAeA,IACXk7B,GAAIG,IAAMr7B,GACVo/uB,GAAQzpuB,WAAa0ziB,GAAQp4F,KAGzBouR,GAAQvquB,KAAKomB,KAEbA,GAAI9xB,OAASi2uB,GACbnktB,GAAI5xB,QAAU61uB,IAItB,cACSjvsB,KACDA,GAAO,CAAEt4C,MAAOsjC,GAAItjC,MAAOnM,OAAQyvC,GAAIzvC,SAG3C,IAAIkxC,GAAS95B,SAAS+O,cAAc,UACpC+qB,GAAO/kC,MAAQs4C,GAAKt4C,MACpB+kC,GAAOlxC,OAASykD,GAAKzkD,OAErB,IAGI6zvB,GAHA3yvB,GAAMgwC,GAAOC,WAAW,MAC5BjwC,GAAIkwC,UAAU3B,GAAK,EAAG,EAAGgV,GAAKt4C,MAAOs4C,GAAKzkD,QAG1C,IACI6zvB,GAAU3yvB,GAAI4yvB,aAAa,EAAG,EAAGrvsB,GAAKt4C,MAAOs4C,GAAKzkD,cAC7CmlB,IAGL,YADAuuuB,KACA,QAEIF,IACAntuB,IAAIgpB,gBAAgBmktB,IAc5B,QAHIO,IAAW,EAAOllL,GAAMo2K,IAAgBvqtB,GAAQuqtB,IAChD+O,GAAWH,GAAQtrvB,KACnBnE,GAAI,EACDA,GAAI4vvB,GAASx4vB,QAAQ,CACxBqzkB,GAAI00K,UAAUyQ,GAAS5vvB,OACvByqkB,GAAI00K,UAAUyQ,GAAS5vvB,OACvByqkB,GAAI00K,UAAUyQ,GAAS5vvB,OACvB,IAAIwjB,GAAIosuB,GAAS5vvB,MACbwjB,GAAI,MACJmsuB,IAAW,GAEfr5tB,GAAM6otB,UAAU37tB,IAGpB,GAAImsuB,IAAYv/uB,GAAQ++uB,QACpB9jtB,GAAM,IAAIwktB,GAAYxvsB,GAAKt4C,MAAOs4C,GAAKzkD,OAAQ6ukB,GAAKn0iB,QACjD,CAEH,IAAInyB,GAAO2oC,GAAOkf,UAAU,aAAc57C,GAAQ8+uB,aAClD/qvB,GAAOA,GAAK2P,OAAO3P,GAAKgN,QAAQ,YAAc,GAE9C,IAAIia,GAASy1tB,IACbz1tB,GAAO+0tB,YAAYh8uB,IACnBknC,GAAM,IAAIyktB,GAAa1kuB,IAG3BgshB,GAAKi1L,GAAYl8tB,IAAOk7B,IAG5B,cACI+rgB,GAAKi1L,GAAYl8tB,IAAO,SAG5B,cACI,GAAIkwC,GAAM,CACN,MAAMmhB,GAAOh1B,IAAsB,kBAAdA,GAAKrzC,MACxB,0BAA0B0za,KAAKx7a,KAAKm6C,IAAIrmB,UAAU,EAAG,KAGjD4quB,GAAU1vsB,GAAKt4C,OAASsjC,GAAItjC,OAASs4C,GAAKzkD,QAAUyvC,GAAIzvC,QAIzD4lE,IAAOuurB,KACR1vsB,GAAO,MAGf,IAAKA,IAAQ7T,IAAQ,kBAAkBqgY,KAAKrgY,GAAKrzC,MAAO,CASpD,IAAIimO,GAAS,IAAIz0L,WACjBy0L,GAAO7lN,OAAS,WACZ,IACI,IAAI8xB,GAAM,IAAIyktB,GAAajP,EAAa,IAAIltuB,WAAWtiB,KAAKuS,UAC5Dqe,IAAIgpB,gBAAgBmktB,IACpBh4M,GAAKi1L,GAAYl8tB,IAAOk7B,UACnBtqB,IAKLivuB,OAGR5whB,GAAOj0L,kBAAkBqB,SAEzBwjtB,MAsCJjjmB,CAAU58I,GAAKw5e,GAAOx5e,IAAMzT,GAAM0T,OAI1C,SACIjf,YAAaif,IACT,IAAI8C,GAAO7hB,KACPmkB,GAAMy6uB,KACNC,GAAW,EACXv5vB,GAAU,GAEd,YAAmBN,GAAM85vB,IACrB,OAAQ//uB,IAA4B,MAAjBA,GAAQ/Z,IAAiB+Z,GAAQ/Z,IAAQ85vB,GAGhEj9uB,GAAKg7uB,UAAYA,GAEjBh7uB,GAAK67gB,OAAS,SAAS/5hB,IACnB,OAAI2B,GAAQwa,QAAQnc,IAAS,IA/VzC,YAAoBA,GAAOuB,IACvB,IAAIq3vB,GAAe54vB,GAAM44vB,aACrBwC,GAAcp7vB,GAAMg5G,OAExBh5G,GAAM44vB,aAAe,aAErB54vB,GAAMg5G,OAAS,SAASx4F,IACpBA,GAAIjf,GAAI,SAGZvB,GAAMq7vB,WAAa,SAAS76uB,IACxBxgB,GAAMmurB,QAAU3tqB,GAAIiO,SACpBjO,GAAIjf,GAAI,WACRq3vB,GAAa3ouB,KAAKjwB,GAAOwgB,IACzB46uB,GAAYnruB,KAAKjwB,GAAOwgB,IACxBA,GAAI,YAiVI86uB,CAAWt7vB,KAASk7vB,IACpBv5vB,GAAQG,KAAK9B,KAEVA,IAGXke,GAAK07tB,MAAQ,GAEb17tB,GAAKq9uB,MAAQ,GACbr9uB,GAAKs9uB,OAAS,GACdt9uB,GAAKu9uB,mBAAqB,GAC1Bv9uB,GAAKw9uB,mBAAqB,GAC1Bx9uB,GAAKy9uB,SAAW,GAChBz9uB,GAAK09uB,SAAW,GAEhB,IAAIC,GAAU39uB,GAAK67gB,OAAO,IAAI+hO,IAC1BC,GAAW79uB,GAAK67gB,OAAO,IAAIiiO,IAE/B,GAAI9C,GAAU,aAAc,CACxB,IAAI+C,GAAW,GACfA,GAASC,WAAa,IAAInD,GAAc,CAAEoD,MAAO,CAC7C,IAAIC,GAAU,MAAOl+uB,GAAK67gB,OAAO,IAAIg/N,GAAc,CAC/Cn2rB,EAAGr7D,GAAE,cACL80vB,GAAI,IAAID,GAAU,sBAG1BP,GAAQp8mB,MAAM08mB,MAAQ,IAAIpD,GAAckD,IAG5CJ,GAAQS,SAASP,IAEjB,IAAIn7uB,GAAO1C,GAAK67gB,OAAO,IAAIg/N,GAAc,CACrCwD,SAAe,IAAIH,GAAUlD,GAAU,WAAY,2BAA2B,GAC9E16iB,MAAe,IAAI49iB,GAAUlD,GAAU,QAAS,KAAK,GACrDsD,OAAe,IAAIJ,GAAUlD,GAAU,SAAU,KAAK,GACtDriuB,QAAe,IAAIuluB,GAAUlD,GAAU,UAAW,KAAK,GACvDuD,SAAe,IAAIL,GAAUlD,GAAU,WAAY,KAAK,GACxDwD,QAAe,IAAIN,GAAUlD,GAAU,UAAW,2BAA2B,GAC7EyD,aAAezD,GAAU,OAAQ,IAAI9jvB,SAGzC8I,GAAK0+uB,QAAU,SAASxhvB,IACpB,IAAIk+tB,GAAgBujB,GAAgB,SAASx7vB,GAAM85vB,IAC/C,OAAQ//uB,IAA4B,MAAjBA,GAAQ/Z,IAAiB+Z,GAAQ/Z,IAAQ85vB,KAE5DvwJ,GAAgB0uI,GAAa1uI,UAC7BhgkB,GAAgB0usB,GAAa1usB,OAC7BkytB,GAAgBlyJ,GAAU,GAC1B/gB,GAAgB+gB,GAAU,GAC1BhgkB,KACAkytB,IAAgBlytB,GAAO6gC,KAAO7gC,GAAO+gC,MACrCk+gB,IAAiBj/iB,GAAO4/E,IAAM5/E,GAAOm7R,QAEzC,IAAI9qT,GAAU,IAAI8hvB,GAAU9B,KAAc,MAAM,GAC5Cx7mB,GAAQ,CACRu9mB,SAAW9+uB,GAAK67gB,OAAO9+gB,IACvBgivB,OAAWlB,GACXmB,SAAW,CAAE,EAAG,EAAGtyJ,GAAU,GAAIA,GAAU,KAE3C9hmB,GAAO,IAAIq0vB,GAAQj/uB,GAAMuhI,IAC7B32I,UAAKs0vB,SAAWnivB,GAChB8gvB,GAASa,QAAQ1+uB,GAAK67gB,OAAOjxhB,KAI7BA,GAAKpC,UAAU,EAAG,EAAG,GAAG,EAAI,EAAGkkmB,GAAU,IAErChgkB,KACA9hC,GAAK+rC,UAAUjK,GAAO6gC,KAAM7gC,GAAO4/E,KAEnC1hH,GAAKyxU,KAAK,EAAG,EAAGuib,GAAcjzK,IAC9B/glB,GAAKgxY,QAGT57X,GAAK07tB,MAAM93uB,KAAKgH,IACTA,IAGXoV,GAAK86F,OAAS,WACV,IAAIhuG,GAKJ,IAHAwV,GAAI,WAAYy2uB,GAAI,wBAAyBA,GAAIA,IAG5CjsvB,GAAI,EAAGA,GAAIrJ,GAAQS,SAAU4I,GAC9BrJ,GAAQqJ,IAAGqwvB,WAAW76uB,IACtBA,GAAIy2uB,GAAIA,IAIZ,IAAIoG,GAAa78uB,GAAIiO,SAGrB,IAFAjO,GAAI,OAAQy2uB,GAAI,EAAG,IAAKt1vB,GAAQS,OAAS,EAAG60vB,IAC5Cz2uB,GAAI,sBAAuBy2uB,IACtBjsvB,GAAI,EAAGA,GAAIrJ,GAAQS,SAAU4I,GAC9BwV,GAAI88uB,GAAQ37vB,GAAQqJ,IAAGmjrB,QAAS,IAAK,YAAa8oE,IAEtDz2uB,UAAIy2uB,IAGJz2uB,GAAI,UAAWy2uB,IACfz2uB,GAAI,IAAIu4uB,GAAc,CAClBztsB,KAAM3pD,GAAQS,OAAS,EACvBm7vB,KAAM1B,GACN1miB,KAAMv0M,KACNq2uB,GAAIA,IAGRz2uB,GAAI,YAAay2uB,GAAIoG,GAAYpG,IACjCz2uB,GAAI,QAASy2uB,IAENz2uB,GAAI4V,SAAS3H,OAAO,IAG/BvQ,GAAK45nB,UAAYA,GACjB55nB,GAAK+7uB,WAAaA,GAGtBuD,QAAQrivB,IACJ,IAAIumI,GAAOrlJ,KAAKk/vB,MAAMpgvB,IACtB,IAAKumI,GAAM,CAEP,KADAA,GAAO03mB,GAAWj+uB,KAEd,MAAM,IAAIrI,MAAM,QAAUqI,GAAM,wBAGhCumI,GAAOrlJ,KAAK09hB,QADH,IAATr4Y,GACmB,IAAI+7mB,GAAgBtivB,IAEpB,IAAIuivB,GAAQrhwB,KAAMqlJ,KAEzCrlJ,KAAKk/vB,MAAMpgvB,IAAOumI,GAEtB,OAAOA,GAGXyV,SAASh8I,IACL,IAAIk7B,GAAMh6C,KAAKm/vB,OAAOrgvB,IACtB,IAAKk7B,GAAK,CAEN,KADAA,GAAMghsB,GAAYl8tB,KAEd,MAAM,IAAIrI,MAAM,SAAWqI,GAAM,wBAErC,GAAY,UAARk7B,GACA,OAAO,KAEXA,GAAMh6C,KAAKm/vB,OAAOrgvB,IAAO9e,KAAK09hB,OAAO1jf,GAAIsntB,SAASthwB,OAEtD,OAAOg6C,GAGXuntB,aAAan3vB,GAASo3vB,IAClB,IAAIt8vB,GAAKy/B,WAAWv6B,IAAS00G,QAAQ,GACrC10G,GAAUu6B,WAAWz/B,IACrBA,IAAMs8vB,GAAY,IAAM,IACxB,IAAI56uB,GAAQ5mB,KAAKyhwB,kBAAoBzhwB,KAAKyhwB,gBAAkB,IACxDC,GAAK96uB,GAAM1hB,IACf,IAAKw8vB,GAAI,CACL,IAAIt+mB,GAAQ,CACRrrI,KAAM7M,GAAE,cAERs2vB,GACAp+mB,GAAMu+mB,GAAKv3vB,GAEXg5I,GAAMm7f,GAAKn0oB,IAEfs3vB,GAAK1hwB,KAAK09hB,OAAO,IAAIg/N,GAAct5mB,MAChCw+mB,cAAgB12vB,GAAE,QAAU2vvB,IAC/Bj0uB,GAAM1hB,IAAMw8vB,GAEhB,OAAOA,GAGXG,KAAKz+mB,IACD,OAAO,IAAIs5mB,GAAct5mB,IAG7Bp+I,KAAKud,IACD,OAAOrX,GAAEqX,IAGbwX,OAAOqpH,GAAOxkI,IACV,OAAO,IAAI8hvB,GAAU9hvB,GAASwkI,KAMtC,YAAa7gI,GAAK+xE,GAAKszK,IACnB,KAAOrlP,GAAIxc,OAASuuF,IAChB/xE,GAAMqlP,GAAKrlP,GAEf,OAAOA,GAGX,YAAiBzU,GAAGwmF,IAChB,OAAO4W,GAAIl4E,OAAOllB,IAAIwmF,GAAK,KAG/B,YAAwB50B,GAAK7sD,IACzB,OAAOhN,OAAOwa,UAAUgsB,eAAezY,KAAK8rC,GAAK7sD,IAGrD,IAAI8sB,GAAUrxB,MAAMqxB,SAAW,SAAS+/B,IACpC,OAAOA,cAAepxD,OAG1B,YAAgBoxD,IACZ,OAAOA,cAAe3mD,KAG1B,YAAqBoZ,GAAGhO,IACpBA,GAAI,KACAgO,GAAEpsB,OAAS,GACXoe,GAAIy4uB,WAAW,WACX,QAASjuvB,GAAI,EAAGA,GAAIwjB,GAAEpsB,SAAU4I,GACxBA,GAAI,GAAKA,GAAI,GAAM,EACnBwV,GAAI8ld,OAAO93c,GAAExjB,KAEbwV,GAAI,IAAKgO,GAAExjB,OAM3BwV,GAAI,MAGR,YAAoBjL,GAAMiL,IACtBA,GAAI,MACA88uB,GAAQ/nvB,GAAKyzK,iBAAkB,GAC/Bs0kB,GAAQ/nvB,GAAK0zK,cAAgB,EAAG,GAChCq0kB,GAAQ/nvB,GAAK2zK,aAAc,GAC3Bo0kB,GAAQ/nvB,GAAK4zK,cAAe,GAC5Bm0kB,GAAQ/nvB,GAAK6zK,gBAAiB,GAC9Bk0kB,GAAQ/nvB,GAAK8we,gBAAiB,GAC9B,MAGR,YAAe2P,IACX,OAAOA,IAAM,GAAG,MAGpB,YAAe6uD,IACX,OAAOs5M,GAAW,GAALt5M,IAGjB,YAAeu5M,IACX,OAAc,GAAPA,GAIX,YAAuBp4vB,GAAGy/D,IACtB,GAAgB,iBAALz/D,GACP,OAAOA,GAGP,IAAIkzB,GADR,GAAgB,iBAALlzB,KAEPkzB,GAAI,oCAAoC+pU,KAAKj9V,KACtC,CACH,IAAI6Y,GAAMmiB,WAAW9H,GAAE,IACvB,IAAK1lB,MAAMqL,IACP,MAAY,MAARqa,GAAE,GACKra,GAEJ,CACHm3e,GAAMmoQ,GACNt5M,GAAMw5M,GACNC,GAAMC,IACRrluB,GAAE,IAAIra,IAIpB,GAAW,MAAP4mD,GACA,OAAOA,GAEX,MAAM,IAAI3yD,MAAM,qBAAuB9M,IAK3C,SACI4yvB,iBAGJ,iBAAwBD,GACpBx8vB,YAAY6D,GAAOw+vB,IACf3ivB,QACAxf,KAAK2D,MAAQA,GACb3D,KAAKmiwB,QAAUn6b,QAAQm6b,IAG3BxlpB,OAAOx4F,IACH,IAAI+hnB,GAAMlmoB,KAAK2D,MACf,GAAI3D,KAAKmiwB,QACLj8H,GAAMk8H,OAAMC,SAAcn8H,IAC1BA,GAAMA,GAAI36mB,QAAQ,cAAe,QACjCpH,GAAI,IAAK+hnB,GAAK,SACX,CAKH,IAAIpznB,GAAO,CAAE,IACb,QAASnE,GAAI,EAAGA,GAAIu3nB,GAAIngoB,SAAU4I,GAAG,CACjC,IAAIqd,GAA2B,IAApBk6mB,GAAIt0Z,WAAWjjO,KACd,IAARqd,IAAsB,IAARA,IAAsB,IAARA,KAE5BlZ,GAAKrN,KAAK,IAEdqN,GAAKrN,KAAKumB,IAEdlZ,GAAKrN,KAAK,IACV0e,GAAIw4uB,UAAU7pvB,KAItB/H,WACI,OAAO/K,KAAK2D,OAIpB,iBAA2Bo8vB,GACvBjgwB,YAAY6D,IACR6b,MAAM7b,IACN3D,KAAK2D,MAAQA,GAGjBg5G,OAAOx4F,IACHA,GAAI,KACJ,QAASxV,GAAI,EAAGA,GAAI3O,KAAK2D,MAAMoC,SAAU4I,GACrCwV,GAAI88uB,GAAQjhwB,KAAK2D,MAAMiuO,WAAWjjO,IAAG5D,SAAS,IAAK,IAEvDoZ,GAAI,MAKZ,iBAAsBm4uB,GAASj7uB,WAChBrc,IACP,OAAOkG,GAAElG,IAGblF,YAAYkF,IACRwa,QACAxf,KAAKgF,KAAOA,GAGhB23G,OAAOx4F,IACHA,GAAI,IAAMnkB,KAAKg1U,UAGnBA,SACI,OAAOh1U,KAAKgF,KAAKumB,QAAQ,gBAAiB,SAAStL,IAC/C,MAAO,IAAMghvB,GAAQhhvB,GAAE2xN,WAAW,GAAG7mO,SAAS,IAAK,KAI3DA,WACI,OAAO/K,KAAKgF,MAIpB,IAAIs9vB,GAAgB,GAEpB,YAAWt9vB,IACP,OAAIqnC,GAAei2tB,GAAet9vB,IACvBs9vB,GAAct9vB,IAEjBs9vB,GAAct9vB,IAAQ,IAAIu9vB,GAAQv9vB,IAK9C,iBAA4Bs3vB,GACxBx8vB,YAAYsjJ,IACR5jI,QACAxf,KAAKojJ,MAAQA,GAGjBzmC,OAAOx4F,IACH,IAAIi/H,GAAQpjJ,KAAKojJ,MAAO3jE,IAAQ,EAChCt7D,GAAI,MACJA,GAAIy4uB,WAAW,WACX,QAASjuvB,MAAKy0I,GACN/2G,GAAe+2G,GAAOz0I,MAAO,KAAK6sa,KAAK7sa,MACvC8wE,IAAQ,EACRt7D,GAAI8ld,OAAO/+d,GAAEyD,IAAI,IAAKy0I,GAAMz0I,QAInC8wE,IACDt7D,GAAI8ld,SAER9ld,GAAI,OAMZ,iBAAwBm4uB,GACpBx8vB,YAAYgT,GAAMswI,GAAOo/mB,IAErB,GADAhjvB,QACmB,iBAAR1M,GAAkB,CACzB,IAAIlC,GAAM4+uB,IACV5+uB,GAAI6nG,MAAM3lG,IACVA,GAAOlC,GAEX5Q,KAAK8S,KAAOA,GACZ9S,KAAKojJ,MAAQA,IAAS,GACtBpjJ,KAAKwiwB,SAAWA,GAGpB7lpB,OAAOx4F,IACH,IAAIrR,GAAO9S,KAAK8S,KAAK+L,MAAOukI,GAAQpjJ,KAAKojJ,MACrCpjJ,KAAKwiwB,WACAp/mB,GAAMq/mB,OAEEr/mB,GAAMq/mB,kBAAkBn0vB,QACjC80I,GAAMq/mB,OAAS,CAAEr/mB,GAAMq/mB,SAFvBr/mB,GAAMq/mB,OAAS,GAInBr/mB,GAAMq/mB,OAAO9sgB,QAAQzqP,GAAE,gBACvB4H,GAAO4nvB,EAAQ5nvB,KAEnBswI,GAAMs/mB,OAAS5vvB,GAAK/M,OACpBoe,GAAI,IAAIu4uB,GAAct5mB,IAAQ,UAAWw3mB,IACzCz2uB,GAAIw4uB,UAAU7pvB,IACdqR,GAAIy2uB,GAAI,cAMhB,iBAAyB8B,GACrB58vB,cACI0f,MAAM,CACFzH,KAAM7M,GAAE,aAIhB+0vB,SAAS0C,IACL3iwB,KAAKojJ,MAAMw/mB,MAAQD,IAM3B,iBAA0BjG,GACtB58vB,cACI0f,MAAM,CACFzH,KAAQ7M,GAAE,SACV23vB,KAAQ,GACR3isB,MAAQ,IAIhBqgsB,QAAQuC,IACJ9iwB,KAAKojJ,MAAMy/mB,KAAKp9vB,KAAKq9vB,IACrB9iwB,KAAKojJ,MAAMljF,SAQnB,IAAI6isB,GAAY,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAEzF,SACIjjwB,YAAYgT,IAMR,IAAI4D,GAAOnM,GAAQy4vB,GAAYC,GAE/B,GAHAnwvB,GAAKsf,OAAO,GAGD,OADDtf,GAAKk7uB,YAGX,MAAM,IAAIv3uB,MAAM,sBAEpB,MAAQ3D,GAAKk8jB,OAAO,CAEhB,GAAU,KADDl8jB,GAAKi7uB,WAEV,MAAM,IAAIt3uB,MAAM,sBAEpB,IAAIiyoB,GAAS51oB,GAAKi7uB,WACdhovB,GAAS+M,GAAKk7uB,YAClB,GAAI+U,GAAUjjvB,QAAQ4ooB,KAAW,EAAG,CAEhCu6G,GAAmBnwvB,GAAKi7uB,WACxBxjvB,GAASuI,GAAKk7uB,YACdt3uB,GAAQ5D,GAAKk7uB,YACbgV,GAAalwvB,GAAKi7uB,WAClB,MAEJj7uB,GAAKxG,KAAKvG,GAAS,GAGvB,GAAkB,MAAdi9vB,GACA,MAAM,IAAIvsvB,MAAM,sBAGpB,IAAI2sI,GAAQ,CACRrrI,KAAmB7M,GAAE,WACrBg4vB,QAAmBh4vB,GAAE,SACrB8vC,MAAmBtkC,GACnBukC,OAAmB1wC,GACnB44vB,iBAAmBF,GACnBR,OAAmBv3vB,GAAE,cAGzB,OAAQ83vB,SACH,EACD5/mB,GAAMggnB,WAAal4vB,GAAE,cACrB,WACC,EACDk4I,GAAMggnB,WAAal4vB,GAAE,aACrB,WACC,EACDk4I,GAAMggnB,WAAal4vB,GAAE,cACrBk4I,GAAMignB,OAAS,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAI1CrjwB,KAAKshwB,SAAW,WACZxuvB,GAAKsf,OAAO,GACZ,IAAI2H,GAAS,IAAI2muB,GAAU5tvB,GAAMswI,IACjCrpH,UAAO6nuB,cAAgB12vB,GAAE,OAAS2vvB,IAC3B9guB,KAOnB,SACIj6B,YAAY4W,GAAOnM,GAAQ6ukB,GAAKn0iB,IAC5BjlC,KAAKshwB,SAAW,SAASzxrB,IACrB,IAAI0/E,GAAO,IAAImxmB,GAAUz7tB,GAAO,CAC5BltB,KAAmB7M,GAAE,WACrBg4vB,QAAmBh4vB,GAAE,SACrB8vC,MAAmBtkC,GACnBukC,OAAmB1wC,GACnB44vB,iBAAmB,EACnBC,WAAmBl4vB,GAAE,gBACtB,GACC6uB,GAAS,IAAI2muB,GAAUtnL,GAAK,CAC5BrhkB,KAAmB7M,GAAE,WACrBg4vB,QAAmBh4vB,GAAE,SACrB8vC,MAAmBtkC,GACnBukC,OAAmB1wC,GACnB44vB,iBAAmB,EACnBC,WAAmBl4vB,GAAE,aACrBo4vB,MAAmBzzrB,GAAI6td,OAAOnuY,MAC/B,GACHx1H,UAAO6nuB,cAAgB12vB,GAAE,OAAS2vvB,IAC3B9guB,KAOnB,iBAA8B2iuB,GAC1B58vB,YAAYkF,IACRwa,MAAM,CACFzH,KAAW7M,GAAE,QACbg4vB,QAAWh4vB,GAAE,SACbq4vB,SAAWr4vB,GAAElG,MAGjBhF,KAAK4hwB,cAAgB12vB,GAAE,OAAS2vvB,IAGpCzB,WAAW72uB,IACP,OAAO,IAAIw9uB,GAAU/suB,OAAOzQ,MAMpC,iBAAsBm6uB,GAClB58vB,YAAY+vE,GAAKw1E,GAAMjC,IACnB5jI,MAAM,KAEN4jI,GAAQpjJ,KAAKojJ,OACPrrI,KAAO7M,GAAE,QACfk4I,GAAM8/mB,QAAUh4vB,GAAE,SAClBk4I,GAAM2+jB,SAAW72sB,GAAE,cAEnBlL,KAAKwjwB,KAAO3zrB,GACZ7vE,KAAKyjwB,MAAQp+mB,GACbrlJ,KAAK0jwB,KAAOr+mB,GAAKm1mB,aACjBx6vB,KAAK4hwB,cAAgB12vB,GAAE,OAAS2vvB,IAEhC,IAAIz9Z,GAAO/3M,GAAK+3M,KAEhBp9V,KAAKgF,KAAOqgJ,GAAKkvmB,OACjB,IAAI7zpB,GAAQ1gG,KAAK0gG,MAAQ2kD,GAAK3kD,MAC9B1gG,KAAKswJ,KAAO,CACR8sM,GAAK+yZ,KAAOzvpB,GACZ08P,GAAKgzZ,KAAO1vpB,GACZ08P,GAAKizZ,KAAO3vpB,GACZ08P,GAAKkzZ,KAAO5vpB,IAGhB1gG,KAAK60vB,YAAcxvmB,GAAKnmI,KAAK21uB,YAC7B70vB,KAAK8wvB,OAASzrmB,GAAKyrmB,OAASpwpB,GAC5B1gG,KAAK+wvB,QAAU1rmB,GAAK0rmB,QAAUrwpB,GAC9B1gG,KAAKgxvB,QAAU3rmB,GAAK2rmB,QAAUtwpB,GAC9B1gG,KAAKq4vB,UAAYhzmB,GAAKq0mB,IAAIrB,WAAar4vB,KAAK8wvB,OAC5C9wvB,KAAKo4vB,QAAU/ymB,GAAKq0mB,IAAItB,SAAW,EACnCp4vB,KAAK2jwB,MAAQ,EAEb3jwB,KAAK23vB,aAAetymB,GAAKq0mB,IAAI/B,aAAe,IAAM,EAClD33vB,KAAK4jwB,QAAU5jwB,KAAK23vB,aAAe,GAAK33vB,KAAK23vB,aAAe,EAC5D33vB,KAAK6jwB,SAA+B,IAApB7jwB,KAAK23vB,YAErB33vB,KAAK+qX,OAAU1lO,GAAKnmI,KAAK81uB,aAAe,EAAI,IAC/Bh1vB,KAAK4jwB,QAAU,EAAS,IACxB5jwB,KAAK6jwB,SAAW,EAAS,IACJ,IAArB7jwB,KAAK60vB,YAAoB,GAAS,GAClC,GAGbuE,WAAWtuvB,IACP,OAAO,IAAIg5vB,GAAa9jwB,KAAK0jwB,KAAKtK,WAAWpmuB,OAAOloB,MAGxDi5vB,aAAat4X,GAAU3gY,IAEnB,QADI4L,GAAQ,EAAG6+uB,GAAUv1vB,KAAKyjwB,MAAMtK,KAAK5D,QAChC5mvB,GAAI,EAAGA,GAAI7D,GAAK/E,SAAU4I,GAAG,CAClC,IAAIknvB,GAAUN,GAAQzqvB,GAAK8mO,WAAWjjO,KACtC+H,IAAS1W,KAAKyjwB,MAAMlJ,aAAa1E,IAAW,GAEhD,OAAOn/uB,GAAQ+0X,GAAW,IAG9B8wX,eACI,IAAI16uB,GAAO7hB,KACP86U,GAAMj5T,GAAK6hvB,KAGX5wvB,GAAOgoU,GAAIn+N,SACXqnpB,GAAa,IAAItD,GAAUlR,EAAa18uB,IAAO,CAC/CmxvB,QAASnxvB,GAAK/M,SACf,GAEC4pD,GAAa9tC,GAAK2hvB,KAAK9lO,OAAO,IAAIg/N,GAAc,CAChD3kvB,KAAe7M,GAAE,kBACjBg5vB,SAAeh5vB,GAAE2W,GAAK6hvB,KAAKnP,QAC3B4P,SAAetivB,GAAKyuI,KACpB8zmB,MAAevivB,GAAKkpW,MACpBs5Y,MAAexivB,GAAK8hvB,MACpBW,YAAezivB,GAAKgzuB,YACpB0P,OAAe1ivB,GAAKivuB,OACpB0T,QAAe3ivB,GAAKkvuB,QACpB0T,UAAe5ivB,GAAKw2uB,UACpBqM,QAAe7ivB,GAAKu2uB,QACpBuM,UAAe9ivB,GAAK2hvB,KAAK9lO,OAAOsmO,OAGhC7K,GAAOr+a,GAAIo7a,UACX2C,GAAY/9a,GAAI+9a,UAChBW,GAAW1+a,GAAI0+a,SACfoL,GAAa,IAChB,YAAcj2vB,GAAG60K,IACd,GAAI70K,IAAK6qvB,GAAU,CACf,IAAIqL,GAAM1L,GAAKxqvB,IACJ,MAAPk2vB,GACAhlH,GAAKlxoB,GAAI,IAEJ60K,IACDohlB,GAAWn/vB,KAAKkJ,GAAG60K,GAAQ,IAE/BA,GAAM/9K,KAAKoc,GAAK4hvB,MAAMlJ,aAAasK,KACnChlH,GAAKlxoB,GAAI,EAAG60K,MAVvB,CAaEq1kB,IAQH,IAAIiM,GAAa,IAAIpI,GAAc,CAC/B3kvB,KAAM7M,GAAE,QACRg4vB,QAASh4vB,GAAE,gBACXq4vB,SAAUr4vB,GAAE2W,GAAK6hvB,KAAKnP,QACtBwQ,cAAe,IAAIrI,GAAc,CAC7BsI,SAAa,IAAIjF,GAAU,SAC3BkF,SAAa,IAAIlF,GAAU,YAC3BmF,WAAa,IAEjBC,eAAgBx1sB,GAChBy1sB,UAAWvM,GACXwM,SAAU7L,GACV8L,GAAIp4vB,KAAK4zF,MAAMj/E,GAAK4hvB,MAAMlJ,aAAa,IACvC56S,EAAGilT,GACHW,YAAa1jvB,GAAK2hvB,KAAK9lO,OAAO77gB,GAAK2jvB,sBAGnC3D,GAAOhgvB,GAAKuhI,MAChBy+mB,GAAK0B,SAAWr4vB,GAAE2W,GAAK6hvB,KAAKnP,QAC5BsN,GAAK4D,gBAAkB,CAAE5jvB,GAAK2hvB,KAAK9lO,OAAOonO,KAI1C,IAAIY,GAAS,IAAIC,GAAiB9M,GAAWW,GAAU1+a,GAAI49a,QACvDkN,GAAe,IAAIlF,GAAU9B,KAAc,MAAM,GACrDgH,GAAa9yvB,KAAK4yvB,IAClB7D,GAAKgE,UAAYhkvB,GAAK2hvB,KAAK9lO,OAAOkoO,IAGtCJ,mBACI,OAAO,IAAI9E,GAAUlR,EAAaxvvB,KAAK0jwB,KAAK9J,eAAgB,MAAM,IAI9E,iBAA+B0C,GAC3Bx8vB,YAAY+4vB,GAAWW,GAAU7zvB,IAC7B6Z,QACAxf,KAAK64vB,UAAYA,GACjB74vB,KAAKw5vB,SAAWA,GAChBx5vB,KAAK2F,IAAMA,GAGfg3G,OAAOx4F,IACHA,GAAI8ld,OAAO,wCACX9ld,GAAI8ld,OAAO,iBACX9ld,GAAI8ld,OAAO,aACX9ld,GAAI8ld,OAAO,qBACX9ld,GAAI8ld,OAAO,uBACX9ld,GAAI8ld,OAAO,qBACX9ld,GAAI8ld,OAAO,mBACX9ld,GAAI8ld,OAAO,UACX9ld,GAAI8ld,OAAO,qCACX9ld,GAAI8ld,OAAO,mBACX9ld,GAAI8ld,OAAO,yBACX9ld,GAAI8ld,OAAO,kBACX9ld,GAAI8ld,OAAO,qBAEX,IAAIpod,GAAO7hB,KACXmkB,GAAI8ld,OAAOpod,GAAK23uB,SAAW33uB,GAAKg3uB,UAAY,EAAG,gBAC/C10uB,GAAIy4uB,WAAW,WACX,QAAS5wuB,GAAOnK,GAAKg3uB,UAAW7suB,IAAQnK,GAAK23uB,WAAYxtuB,GAAM,CAC3D,IACIzJ,GAAMujvB,EAAW,CADPjkvB,GAAKlc,IAAIqmB,MAEvB7H,GAAI8ld,OAAO,IAAKg3R,GAAQj1uB,GAAKjhB,SAAS,IAAK,GAAI,IAAK,KACpD,QAAS4D,GAAI,EAAGA,GAAI4T,GAAIxc,SAAU4I,GAC9BwV,GAAI88uB,GAAQ1+uB,GAAIqvN,WAAWjjO,IAAG5D,SAAS,IAAK,IAEhDoZ,GAAI,QAGZA,GAAI8ld,OAAO,aAEX9ld,GAAI8ld,OAAO,WACX9ld,GAAI8ld,OAAO,iDACX9ld,GAAI8ld,OAAO,OACX9ld,GAAI8ld,OAAO,QAMnB,YAAkB93c,IACd,OAAOA,GAAExsB,IAAI,SAASgE,IAClB,OAAOg2B,GAAQh2B,IAAKo8vB,GAASp8vB,IACX,iBAALA,IAAiBuD,KAAK4zF,MAAU,IAAJn3F,IAAY,KAAMm1G,QAAQ,GAC7Dn1G,KACP8d,KAAK,KAGZ,YAAoCooD,GAAKykE,GAAI35D,GAAIq+f,GAAIC,GAAI7me,GAAI8me,IACzD,IAAIj5S,GAAO8le,GAAS,CAAEzxnB,GAAI35D,GAAIq+f,GAAIC,GAAI7me,GAAI8me,KACtCxqgB,GAAOmB,GAAIuvrB,mBAAmBn/d,IAClC,OAAKvxN,KACDA,GAAOmB,GAAIuvrB,mBAAmBn/d,IAAQpwN,GAAI6td,OAAO,IAAIg/N,GAAc,CAC/DsJ,aAAc,EACdC,OAAQ,CAAE,EAAG,GACbC,MAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GACxBxvmB,EAAG,EACHyvmB,GAAI,CAAE7xnB,GAAK35D,GAAKq+f,IAChBotL,GAAI,CAAEntL,GAAK7me,GAAK8me,QAGjBxqgB,GAGX,YAAsCmB,GAAKuhT,GAAI4gC,IAC3C,IAAI/xH,GAAO8le,GAAS,CAAE30Y,GAAI4gC,KACtBtjV,GAAOmB,GAAIwvrB,mBAAmBp/d,IAClC,OAAKvxN,KACDA,GAAOmB,GAAIwvrB,mBAAmBp/d,IAAQpwN,GAAI6td,OAAO,IAAIg/N,GAAc,CAC/DsJ,aAAc,EACdC,OAAQ,CAAE,EAAG,GACbC,MAAO,CAAE,EAAG,GACZxvmB,EAAG,EACHyvmB,GAAI,CAAE/0Y,IACNg1Y,GAAI,CAAEp0W,QAGPtjV,GAgLX,iBAAsBgurB,GAClB58vB,YAAY+vE,GAAKuzE,IACb5jI,MAAM4jI,IAENpjJ,KAAKwjwB,KAAO3zrB,GACZ7vE,KAAKqmwB,QAAU,EACfrmwB,KAAKsmwB,WAAY,EACjBtmwB,KAAKumwB,eAAiB,GACtBvmwB,KAAKwmwB,aAAe,GACpBxmwB,KAAKymwB,YAAc,GACnBzmwB,KAAK0mwB,cAAgB,GACrB1mwB,KAAK2mwB,aAAe,GACpB3mwB,KAAK4mwB,SAAW,EAChB5mwB,KAAK85uB,QAAU,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAChC95uB,KAAK6mwB,aAAe,GAEpB7mwB,KAAKyjwB,MAAQ,KACbzjwB,KAAK8mwB,UAAY,KAEjB9mwB,KAAK+mwB,cAAgB,IAErB3jnB,GAAQpjJ,KAAKojJ,OACPrrI,KAAO7M,GAAE,QACfk4I,GAAM4jnB,QAAU,CACZ97vB,GAAE,OACFA,GAAE,QACFA,GAAE,UACFA,GAAE,UACFA,GAAE,WAENk4I,GAAM6jnB,UAAY,IAAIvK,GAAc,CAChCwK,KAAY,IAAIxK,GAAc18vB,KAAKumwB,gBACnCY,UAAY,IAAIzK,GAAc18vB,KAAKwmwB,cACnCY,QAAY,IAAI1K,GAAc18vB,KAAKymwB,aACnCY,QAAY,IAAI3K,GAAc18vB,KAAK0mwB,eACnCY,QAAY,IAAI5K,GAAc18vB,KAAK2mwB,gBAEvCvjnB,GAAMmknB,OAASvnwB,KAAK6mwB,aAGxBW,OACIxnwB,KAAK+gwB,SAASjuvB,KAAK6gB,MAAM,KAAMoJ,WAGnC1yB,UAAU8nB,GAAGD,GAAGjS,GAAGzU,GAAGvC,GAAGrD,KAwc7B,YAA0Bi3B,IACtB,OAAgB,IAATA,GAAE,IAAqB,IAATA,GAAE,IAAqB,IAATA,GAAE,IAAqB,IAATA,GAAE,IAAqB,IAATA,GAAE,IAAqB,IAATA,GAAE,IAxctE4quB,CAAiB1quB,aAClB/8B,KAAK85uB,QA4bjB,YAAc3ntB,GAAGD,IACb,IAAIk/V,GAAKj/V,GAAE,GAAI6mjB,GAAK7mjB,GAAE,GAAIk4E,GAAKl4E,GAAE,GAAI4qV,GAAK5qV,GAAE,GAAIspE,GAAKtpE,GAAE,GAAIq5tB,GAAKr5tB,GAAE,GAC9D6/X,GAAK9/X,GAAE,GAAIgnjB,GAAKhnjB,GAAE,GAAIo4E,GAAKp4E,GAAE,GAAIu5tB,GAAKv5tB,GAAE,GAC5C,MAAO,CACHk/V,GAAG4gC,GAAKgnL,GAAG1ue,GAAa8mR,GAAG8nN,GAAKF,GAAGyyK,GACnCphpB,GAAG2nT,GAAKj1C,GAAGzyQ,GAAaD,GAAG6ue,GAAKn8N,GAAG0uY,GACnChwpB,GAAGu2T,GAAKw5V,GAAGlhpB,GAJsCp4E,GAAE,GAI3BupE,GAAGy9e,GAAKsyK,GAAGC,GAJyBv5tB,GAAE,IA9b3Cm5tB,CAAKtutB,UAAW/8B,KAAK85uB,SACpC95uB,KAAKwnwB,KAAKr1uB,GAAG,IAAKD,GAAG,IAAKjS,GAAG,IAAKzU,GAAG,IAAKvC,GAAG,IAAKrD,GAAG,OAGrD5F,KAAKwnwB,KAAK5M,KAIlBpitB,UAAU47C,GAAIC,IACVr0F,KAAKqK,UAAU,EAAG,EAAG,EAAG,EAAG+pF,GAAIC,IAGnCqM,MAAMgnqB,GAAIC,IACN3nwB,KAAKqK,UAAUq9vB,GAAI,EAAG,EAAGC,GAAI,EAAG,GAGpC72oB,OAAOx/B,IACH,IAAIvK,GAAM75E,KAAK65E,IAAIuK,IAAQI,GAAMxkF,KAAKwkF,IAAIJ,IAC1CtxF,KAAKqK,UAAU08E,GAAK2K,IAAMA,GAAK3K,GAAK,EAAG,GAG3C6grB,YACI5nwB,KAAKsmwB,WAAY,EACjBtmwB,KAAKwnwB,KAAK,KAAM5M,IAGpBiN,UACI7nwB,KAAKsmwB,WAAY,EACjBtmwB,KAAKwnwB,KAAK,KAAM5M,IAGpBkN,mBACI,IAAK9nwB,KAAKsmwB,UACN,MAAM,IAAI7vvB,MAAM,mDAIxBsxvB,eACI,IAAK/nwB,KAAKyjwB,MACN,MAAM,IAAIhtvB,MAAM,+CAIxBuxvB,QAAQ3inB,GAAMr2F,IACVhvD,KAAK8nwB,mBACO,MAAZG,GACI5inB,GAAOrlJ,KAAKyjwB,MACHp+mB,cAAgBg8mB,KACzBh8mB,GAAOrlJ,KAAKwjwB,KAAKrC,QAAQ97mB,KAEjB,MAARr2F,KACAA,GAAOhvD,KAAK8mwB,WAEhB9mwB,KAAKumwB,eAAelhnB,GAAKu8mB,eAAiBv8mB,GAC1CrlJ,KAAKyjwB,MAAQp+mB,GACbrlJ,KAAK8mwB,UAAY93sB,GACjBhvD,KAAKwnwB,KAAKninB,GAAKu8mB,cAAe,IAAK5ysB,GAAM,MAAO4rsB,IAGpDsN,eAAel5sB,IACXhvD,KAAK8nwB,mBACL9nwB,KAAKwnwB,KAAKx4sB,GAAM,MAAO4rsB,IAG3BuN,qBAAqBrhvB,IACjB9mB,KAAK8nwB,mBACL9nwB,KAAKwnwB,KAAK1gvB,GAAM,MAAO8zuB,IAG3Bl/Q,SAAS5we,GAAMs9vB,IAEX,GADApowB,KAAK+nwB,eACDj9vB,GAAK/E,OAAS,GAAKqiwB,IAAkBpowB,KAAKyjwB,iBAAiBpC,GAAS,CACpE,IAAIgH,GAAcrowB,KAAKyjwB,MAAMM,aAAa/jwB,KAAK8mwB,UAAWh8vB,IAE1D9K,KAAKwnwB,KADOY,GAAiBC,GAAc,IAC1B,QAErBrowB,KAAKwnwB,KAAKxnwB,KAAKyjwB,MAAMrK,WAAWtuvB,IAAO,MAAO8vvB,IAGlD0N,WAAWx9vB,IACP9K,KAAK+nwB,eACL/nwB,KAAKwnwB,KAAKxnwB,KAAKyjwB,MAAMrK,WAAWtuvB,IAAO,KAAM8vvB,IAGjD2N,QAAQn6d,GAAKnyK,IACT,IAAIuniB,GAAKxjqB,KAAKwowB,QAAQ,CAAE7+vB,EAAGsyH,GAAI7sD,KAAMtb,EAAGmoE,GAAIytM,SACxC++b,GAAKzowB,KAAKwowB,QAAQ,CAAE7+vB,EAAGsyH,GAAI3sD,MAAOxb,EAAGmoE,GAAI9N,MAC7CnuH,KAAK6mwB,aAAaphwB,KAAK,IAAIi3vB,GAAc,CACrC3kvB,KAAU7M,GAAE,SACZg4vB,QAAUh4vB,GAAE,QACZw0d,KAAU,CAAE8jM,GAAG75pB,EAAG65pB,GAAG1vmB,EAAG20sB,GAAG9+vB,EAAG8+vB,GAAG30sB,GACjC40sB,OAAU,CAAE,EAAG,EAAG,GAClBnnc,EAAU,IAAIm7b,GAAc,CACxB3kvB,KAAO7M,GAAE,UACTq7D,EAAOr7D,GAAE,OACTy9vB,IAAO,IAAI5I,GAAU3xd,SAKjCw6d,eAAe/3sB,GAAGrB,GAAGt9B,IACjBlyB,KAAKwnwB,KAAK32sB,GAAG,IAAKrB,GAAG,IAAKt9B,GAAG,MAAO0ouB,IAGxCv4B,WAAWj4tB,IACPpK,KAAK6owB,eAAez+vB,IACpBpK,KAAK8owB,iBAAiB1+vB,IACtBpK,KAAK4mwB,UAAYx8vB,GAGrB0+vB,iBAAiB1+vB,IACb,GAAIA,GAAU,EAAG,CACb,IAAIs3vB,GAAK1hwB,KAAKwjwB,KAAKjC,aAAavhwB,KAAK4mwB,SAAWx8vB,IAAS,GACzDpK,KAAKwmwB,aAAa9E,GAAGE,eAAiBF,GACtC1hwB,KAAKwnwB,KAAK9F,GAAGE,cAAe,MAAOhH,KAI3CmO,aAAal4sB,GAAGrB,GAAGt9B,IACflyB,KAAKwnwB,KAAK32sB,GAAG,IAAKrB,GAAG,IAAKt9B,GAAG,MAAO0ouB,IAGxCiO,eAAez+vB,IACX,GAAIA,GAAU,EAAG,CACb,IAAIs3vB,GAAK1hwB,KAAKwjwB,KAAKjC,aAAavhwB,KAAK4mwB,SAAWx8vB,IAAS,GACzDpK,KAAKwmwB,aAAa9E,GAAGE,eAAiBF,GACtC1hwB,KAAKwnwB,KAAK9F,GAAGE,cAAe,MAAOhH,KAI3C7tX,SAASA,GAAU9wQ,IACfj8H,KAAKkmgB,OACLlmgB,KAAKk+U,KAAKjiN,GAAI7sD,KAAM6sD,GAAI9N,IAAK8N,GAAIvlH,MAAOulH,GAAI1xH,QAC5CvK,KAAKy9Y,OACA1Q,GAASuvT,WACVt8rB,KAAKqK,UAAU4xH,GAAIvlH,MAAO,EAAG,EAAGulH,GAAI1xH,OAAQ0xH,GAAI7sD,KAAM6sD,GAAI9N,KAE9D,IACqC66oB,GADjCx5sB,GAhNZ,YAAuBqgB,GAAKk9T,GAAU9wQ,IAClC,IAAIgtoB,GAA4B,UAAjBl8X,GAASjlY,KACpBohwB,GAtJR,YAA+Br5rB,GAAK4zkB,IAChC,IAKI90oB,GAASw6vB,GAAKC,GAAWC,GALzB/K,IAAW,EACXgL,GAAY,GACZj0mB,GAAS,GACT02M,GAAU,GACVzzL,GAAS,GAEb,IAAK3pK,GAAI,EAAGA,GAAI80oB,GAAM19oB,SAAU4I,GAK5B0mJ,GAAO5vJ,KAAK8jwB,GACR15rB,IAHJu5rB,GAFO3lH,GAAM90oB,GAAI,GAEA4wI,OAIH1uF,EAAGu4sB,GAAU55sB,EAAG45sB,GAAUl3uB,GAHxCm3uB,IAFAF,GAAM1lH,GAAM90oB,KAEG4wI,OAIF1uF,EAAIw4sB,GAAS75sB,EAAI65sB,GAASn3uB,KAEnCk3uB,GAAUj3uB,EAAI,GAAKk3uB,GAASl3uB,EAAI,KAChCmsuB,IAAW,GAEfvyZ,GAAQtmW,KAAK0jwB,GAAI/2uB,QACjBkmJ,GAAO7yK,KAAK,EAAG,GAEnB,GAAI64vB,GACA,IAAK3vvB,GAAI,EAAGA,GAAI80oB,GAAM19oB,SAAU4I,GAK5B26vB,GAAU7jwB,KAAK+jwB,GACX35rB,IAHJu5rB,GAFO3lH,GAAM90oB,GAAI,GAEA4wI,OAGEptH,GAFnBk3uB,IAFAF,GAAM1lH,GAAM90oB,KAEG4wI,OAEgBptH,IAIvC45U,UAAQj5U,MACD,CACHwruB,SAAYA,GACZjpmB,OAAYo0mB,GAASp0mB,IACrBi0mB,UAAYhL,GAAWmL,GAASH,IAAa,MAEjD,YAAkBJ,IACd,OAAoB,GAAhBA,GAAMnjwB,OACCmjwB,GAAM,GAEV,CACHlD,aAAc,EACd0D,UAAWR,GACXjD,OAAQ,CAAE,EAAG,GACb0D,OAAQ59Z,GACR69Z,OAAQtxlB,KAqGJuxlB,CAAsBh6rB,GAAKk9T,GAAS02Q,OAC5C5qkB,GAASowrB,GAAW,CACpBl8X,GAAS//W,MAAMrjB,EAAIojY,GAAS//W,MAAM8mC,EAAIi5U,GAAS//W,MAAM6jC,EACrDk8U,GAASziW,IAAI3gC,EAAMojY,GAASziW,IAAIwpB,EAAMi5U,GAASziW,IAAIumB,GACnD,CACAk8U,GAAS//W,MAAMrjB,EAAIojY,GAAS//W,MAAM8mC,EAClCi5U,GAASziW,IAAI3gC,EAAMojY,GAASziW,IAAIwpB,GAEhCg2sB,GAxGR,YAA4Bj6rB,GAAKo5rB,GAAUxlH,GAAO5qkB,GAAQqwrB,GAAOjtoB,IAC7D,IAAI6toB,GAAS7pe,GAIb,IAAKhkK,GAAK,CACN,IAAI9pG,GAAI,CAAE82uB,IAAWt1tB,OAAOklC,IAC5B4qkB,GAAM78oB,QAAQ,SAAS+C,IACnBwoB,GAAE1sB,KAAKkE,GAAEyoB,OAAQzoB,GAAE41I,MAAM1uF,EAAGlnD,GAAE41I,MAAM/vF,EAAG7lD,GAAE41I,MAAMrtH,KAEnD+tQ,GAAO8le,GAAS5zuB,IAChB23uB,GAAUj6rB,GAAIyvrB,SAASr/d,IAE3B,OAAK6pe,KACDA,GAAU,IAAIpN,GAAc,CACxB3kvB,KAAM7M,GAAE,WACR6+vB,YAAad,GAAW,EAAI,EAC5B7F,WAAYl4vB,GAAE,aACd8+vB,OAAQnxrB,GACRotrB,OAAQ,CAAE,EAAG,GACbn5sB,SAAUo8sB,GACVe,OAAQ,EAAE,GAAM,KAEpBp6rB,GAAI6td,OAAOosO,IACXA,GAAQlI,cAAgB,OAAS/G,GAC7B56d,KACApwN,GAAIyvrB,SAASr/d,IAAQ6pe,KAGtBA,GA2EOI,CACVr6rB,GAAKo5rB,GAAUl8X,GAAS02Q,MAAO5qkB,GAAQqwrB,GAAM7zmB,OAAQ03O,GAASuvT,WAAargkB,IAE3E7xH,GAAU8+vB,GAAM5K,SA3ExB,YAA8BzurB,GAAKo5rB,GAAUxlH,GAAO5qkB,GAAQqwrB,GAAOjtoB,IAC/D,IAAI7xH,GAAS61R,GAIb,IAAKhkK,GAAK,CACN,IAAI9pG,GAAI,CAAE82uB,IAAWt1tB,OAAOklC,IAC5B4qkB,GAAM78oB,QAAQ,SAAS+C,IACnBwoB,GAAE1sB,KAAKkE,GAAEyoB,OAAQzoB,GAAE41I,MAAMptH,KAE7B8tQ,GAAO8le,GAAS5zuB,IAChB/nB,GAAUylE,GAAI0vrB,SAASt/d,IAE3B,OAAK71R,KACDA,GAAU,IAAIsyvB,GAAc,CACxB3kvB,KAAM7M,GAAE,aACRi/vB,KAAK,EACLxI,GAAI,EACJpjH,GAAI,EACJ+kH,MAAO,CACHvrvB,KAAM7M,GAAE,QACRq7D,EAAGr7D,GAAE,cACLk+I,EAAGv5E,GAAI6td,OAAO,IAAIgjO,GAAU,gBAAiB,CACzC3ovB,KAAM7M,GAAE,WACRg4vB,QAASh4vB,GAAE,QACXk/vB,SAAU,EACVC,KAAOpuoB,GAAM,CACTA,GAAI7sD,KAAM6sD,GAAI9N,IAAM8N,GAAI1xH,OAAQ0xH,GAAI7sD,KAAO6sD,GAAIvlH,MAAOulH,GAAI9N,KAC1D,CAAE,EAAG,EAAG,EAAG,GACfq6B,MAAO,CACHzwI,KAAM7M,GAAE,SACRq7D,EAAGr7D,GAAE,gBACLo/vB,GAAIp/vB,GAAE,cACNu7D,GAAG,GAEPwgsB,UAAW,CACPE,UAAW,CACPh2Y,GAAI,CAAEwwY,GAAI,EAAGpjH,GAAI,IAErB+oH,QAAS,CACLiD,GAAI,CACAnH,WAAYl4vB,GAAE,cACd8+vB,OAAQnxrB,GACRotrB,OAAQ,CAAE,EAAG,GACb8D,YAAad,GAAW,EAAI,EAC5Bn8sB,SAAUo8sB,GACVe,OAAQ,EAAE,GAAM,YAOxCp6rB,GAAI6td,OAAOtzhB,IACXA,GAAQw3vB,cAAgB,OAAS/G,GAC7B56d,KACApwN,GAAI0vrB,SAASt/d,IAAQ71R,KAGtBA,GAgBwBogwB,CAC3B36rB,GAAKo5rB,GAAUl8X,GAAS02Q,MAAO5qkB,GAAQqwrB,GAAMI,UAAWv8X,GAASuvT,WAAargkB,IAC9E,KACJ,MAAO,CACHqioB,SAAU4K,GAAM5K,SAChBwL,QAASA,GACT1/vB,QAASA,IA6LDqgwB,CAAczqwB,KAAKwjwB,KAAMz2X,GAAU9wQ,IACvCyuoB,GAAQl7sB,GAAEs6sB,QAAQlI,cACtB5hwB,KAAK2mwB,aAAa+D,IAASl7sB,GAAEs6sB,QACzBt6sB,GAAE8usB,WAEFt+vB,KAAKwmwB,aADLwC,GAAQx5sB,GAAEplD,QAAQw3vB,eACSpysB,GAAEplD,QAC7BpK,KAAKwnwB,KAAK,IAAMwB,GAAQ,SAE5BhpwB,KAAKwnwB,KAAK,IAAMkD,GAAQ,MAAO9P,IAC/B56vB,KAAKw9J,UAGTmtmB,eAAez8E,GAAW08E,IACtB5qwB,KAAKwnwB,KAAKt5E,GAAW,IAAK08E,GAAW,KAAMhQ,IAG/CiQ,aAAan0vB,IACT1W,KAAKwnwB,KAAK9wvB,GAAO,KAAMkkvB,IAG3Bh4B,WAAW7xkB,IACP/wJ,KAAKwnwB,KAAKz2mB,GAAS,KAAM6pmB,IAG7B/3B,YAAYxuD,IACRr0qB,KAAKwnwB,KAAKnzF,GAAU,KAAMumF,IAG9BkQ,eAAeC,IACX/qwB,KAAKwnwB,KAAKuD,GAAa,KAAMnQ,IAGjC10P,OACIlmgB,KAAK+mwB,cAActhwB,KAAKzF,KAAKgrwB,YAC7BhrwB,KAAKwnwB,KAAK,IAAK5M,IAGnBp9lB,UACIx9J,KAAKwnwB,KAAK,IAAK5M,IACf56vB,KAAKgrwB,SAAShrwB,KAAK+mwB,cAAcj0uB,OAKrC2uN,OAAO93O,GAAGmqD,IACN9zD,KAAKwnwB,KAAK79vB,GAAG,IAAKmqD,GAAG,KAAM8msB,IAG/Bl5gB,OAAO/3O,GAAGmqD,IACN9zD,KAAKwnwB,KAAK79vB,GAAG,IAAKmqD,GAAG,KAAM8msB,IAG/BqQ,OAAO91rB,GAAIN,GAAIY,GAAIonkB,GAAIi8F,GAAIrB,IACvBz3uB,KAAKwnwB,KAAKryrB,GAAI,IAAKN,GAAI,IAAKY,GAAI,IAAKonkB,GAAI,IAAKi8F,GAAI,IAAKrB,GAAI,KAAMmjB,IAGrEsQ,QAAQ/1rB,GAAIN,GAAIikqB,GAAIrB,IAChBz3uB,KAAKwnwB,KAAKryrB,GAAI,IAAKN,GAAI,IAAKikqB,GAAI,IAAKrB,GAAI,KAAMmjB,IAGnDuQ,QAAQ11rB,GAAIonkB,GAAIi8F,GAAIrB,IAChBz3uB,KAAKwnwB,KAAK/xrB,GAAI,IAAKonkB,GAAI,IAAKi8F,GAAI,IAAKrB,GAAI,KAAMmjB,IAGnD5vuB,QACIhrB,KAAKwnwB,KAAK,IAAK5M,IAGnB18a,KAAKv0U,GAAGmqD,GAAGquH,GAAGs1C,IACVz3N,KAAKwnwB,KAAK79vB,GAAG,IAAKmqD,GAAG,IAAKquH,GAAG,IAAKs1C,GAAG,MAAOmjiB,IAGhDwQ,QAAQzhwB,GAAGmqD,GAAG87nB,GAAIC,IACd,YAAYrprB,IAAK,OAAOmD,GAAInD,GAC5B,YAAYA,IAAK,OAAOstD,GAAIttD,GAI5B,IAAI4sC,GAAI,kBAERpzC,KAAKyhP,OAAO4phB,GAAG,GAAIC,GAAGz7E,KACtB7vrB,KAAKirwB,OACDI,GAAGz7E,GAAKx8oB,IAAKk4tB,GAAGz7E,IAChBw7E,GAAGz7E,IAAU07E,GAAGz7E,GAAKz8oB,IACrBi4tB,GAAGz7E,IAAU07E,GAAG,IAEpBtrwB,KAAKirwB,OACDI,GAAGz7E,IAAU07E,IAAIz7E,GAAKz8oB,IACtBi4tB,GAAGz7E,GAAKx8oB,IAAKk4tB,IAAIz7E,IACjBw7E,GAAG,GAAUC,IAAIz7E,KAErB7vrB,KAAKirwB,OACDI,IAAIz7E,GAAKx8oB,IAAKk4tB,IAAIz7E,IAClBw7E,IAAIz7E,IAAU07E,IAAIz7E,GAAKz8oB,IACvBi4tB,IAAIz7E,IAAU07E,GAAG,IAErBtrwB,KAAKirwB,OACDI,IAAIz7E,IAAU07E,GAAGz7E,GAAKz8oB,IACtBi4tB,IAAIz7E,GAAKx8oB,IAAKk4tB,GAAGz7E,IACjBw7E,GAAG,GAAWC,GAAGz7E,KAIzBh9jB,OAAOlpH,GAAGmqD,GAAGjD,IACT7wD,KAAKorwB,QAAQzhwB,GAAGmqD,GAAGjD,GAAGA,IAG1BgxF,SACI7hJ,KAAKwnwB,KAAK,IAAK5M,IAGnB2Q,MACIvrwB,KAAKwnwB,KAAK,IAAK5M,IAGnBn9W,OACIz9Y,KAAKwnwB,KAAK,MAAO5M,IAGrB4Q,aACIxrwB,KAAKwnwB,KAAK,MAAO5M,IAGrB6Q,cACIzrwB,KAAKwnwB,KAAK,IAAK5M,IAGnBlsvB,OACI1O,KAAKwnwB,KAAK,IAAK5M,IAGnB8Q,aACI1rwB,KAAKwnwB,KAAK,IAAK5M,IAGnBj/sB,UAAU78B,IACN,IAAIk7B,GAAMh6C,KAAKwjwB,KAAK1omB,SAASh8I,IACzBk7B,KACAh6C,KAAKymwB,YAAYzstB,GAAI4ntB,eAAiB5ntB,GACtCh6C,KAAKwnwB,KAAKxttB,GAAI4ntB,cAAe,MAAOhH,KAI5C13kB,QAAQgjd,IACJ,IAAIrknB,GAAO7hB,KACXkmoB,GAAIlvnB,MAAM,UAAUpQ,QAAQ,SAAS8wE,IACjC71D,GAAK2lvB,KAAK,KAAM9vrB,GAAMkjrB,MAK9BoQ,SAAS1pvB,IACL,GAAW,MAAPA,GAIA,MAAO,CACHlX,QAASpK,KAAK4mwB,SACd7hoB,OAAQ/kI,KAAK85uB,SALjB95uB,KAAK4mwB,SAAWtlvB,GAAIlX,QACpBpK,KAAK85uB,QAAUx4tB,GAAIyjH,OAS3ByjoB,QAAQ/jsB,IACJ,IAAI5nC,GAAI78B,KAAK85uB,QAEb,MAAO,CACHnwuB,EAFIkzB,GAAE,GAED4nC,GAAE96D,EAFiBkzB,GAAE,GAEb4nC,GAAE3Q,EAF6Bj3B,GAAE,GAG9Ci3B,EAHcj3B,GAAE,GAGX4nC,GAAE96D,EAH2BkzB,GAAE,GAGvB4nC,GAAE3Q,EAHuCj3B,GAAE,KAQpE,YAAiBta,IACb,OAAOA,GAAIgJ,QAAQ,uBAAwB,MAG/C,YAAsBogvB,IAElB,IACI9uuB,GADK,yIACE+pU,KAAK+ka,IAChB,IAAK9uuB,GACD,MAAO,CAAE4uW,SAAU,GAAIC,WAAY,cAEvC,IAAID,GAAW5uW,GAAE,GAAKj5B,SAASi5B,GAAE,GAAI,IAAM,GAC3C,MAAO,CACH8rc,OAAa9rc,GAAE,IAA4B,UAAtBA,GAAE,GAAGxB,cAC1BuwuB,QAAa/uuB,GAAE,GACfmrc,KAAanrc,GAAE,IAAM,YAAY2+Y,KAAK3+Y,GAAE,IACxC4uW,SAAaA,GACbs6W,WAAalptB,GAAE,IAAe,UAATA,GAAE,IAAkB4uW,GAAW7nY,SAASi5B,GAAE,IAAK,IAAM,KAC1E6uW,WAAa7uW,GAAE,IAAI7lB,MAAM,YAAYrR,IAAIkmwB,KAIjD,YAAoB1hwB,IAUhB,IACInF,GAAM8Z,GAVQ9Z,GASd0mY,GAAavhY,GAAMuhY,WAEvB,GAAIA,cAAsBp9X,MACtB,QAASK,GAAI,EAAGA,GAAI+8X,GAAW3lY,SAZjBf,GAaM0mY,GAAW/8X,IAZ3BxE,GAAM69d,OACNhje,IAAQ,SAERmF,GAAMw+d,SACN3je,IAAQ,WAQRA,GANGA,GAAKq2B,gBAORvc,GAAMgtvB,GAAc9mwB,QAFiB2J,SAQzCmQ,GAAMgtvB,GAAcpgY,GAAWrwW,eAEnC,KAAqB,mBAAPvc,IACVA,GAAMA,KAEV,OAAKA,KACDA,GAAM,eAEHA,GAGX,IAAIgtvB,GAAgB,CAChBC,MAA6B,cAC7B,aAA6B,aAC7B,eAA6B,eAC7B,oBAA6B,mBAC7B,aAA6B,YAC7B,kBAA6B,iBAC7B,oBAA6B,oBAC7B,yBAA6B,wBAC7BC,UAA6B,UAC7B,iBAA6B,eAC7B,mBAA6B,kBAC7B,wBAA6B,sBAC7BC,aAA6B,eAC7B,oBAA6B,eAC7B,sBAA6B,eAC7B,2BAA6B,gBAGjC,YAAmBjka,GAAOhjW,IACtBgjW,GAAQA,GAAM3sU,cACdywuB,GAAc9ja,IAAS,WACnB,OAAO8ja,GAAc9mwB,KAEzB8mwB,GAAc9ja,GAAQ,SAAW,WAC7B,OAAO8ja,GAAc9mwB,GAAO,UAEhC8mwB,GAAc9ja,GAAQ,WAAa,WAC/B,OAAO8ja,GAAc9mwB,GAAO,YAEhC8mwB,GAAc9ja,GAAQ,gBAAkB,WACpC,OAAO8ja,GAAc9mwB,GAAO,iBAkBpC,YAAoBA,GAAM8Z,IACtB,GAAwB,GAApBie,UAAUh3B,OACV,QAAS4I,MAAK3J,GACNqnC,GAAernC,GAAM2J,KACrBu9vB,GAAWv9vB,GAAG3J,GAAK2J,UAU3B,OANA3J,GAAOA,GAAKq2B,cACZywuB,GAAc9mwB,IAAQ8Z,GAKd9Z,QACD,cAA8B8mwB,GAAc,cAA6BhtvB,GAAK,UAC9E,mBAA8BgtvB,GAAc,mBAA6BhtvB,GAAK,UAC9E,qBAA8BgtvB,GAAc,qBAA6BhtvB,GAAK,UAC9E,0BAA8BgtvB,GAAc,0BAA6BhtvB,GAAK,UAC9E,eAA8BgtvB,GAAcC,MAA6BjtvB,GAAK,UAC9E,oBAA8BgtvB,GAAc,cAA6BhtvB,GAAK,UAC9E,sBAA8BgtvB,GAAc,gBAA6BhtvB,GAAK,UAC9E,2BAA8BgtvB,GAAc,qBAA6BhtvB,GAAK,UAC9E,cAA8BgtvB,GAAcE,UAA6BltvB,GAAK,UAC9E,mBAA8BgtvB,GAAc,kBAA6BhtvB,GAAK,UAC9E,qBAA8BgtvB,GAAc,oBAA6BhtvB,GAAK,UAC9E,0BAA8BgtvB,GAAc,yBAA6BhtvB,IApCxFqtvB,GAAU,kBAAoB,SAC9BA,GAAU,cAAoB,aAC9BA,GAAU,QAAoB,cAC9BA,GAAU,YAAoB,cAC9BA,GAAU,UAAoB,cAC9BA,GAAU,SAAoB,cAC9BA,GAAU,UAAoB,cAC9BA,GAAU,SAAoB,aAC9BA,GAAU,cAAoB,aA+C9B,MAAMC,GAAsB,CACxB19vB,KAAiB,EACjBmzI,OAAiB,EACjBwqnB,cAAiB,EACjBC,UAAiB,EACjBC,YAAiB,EACjBC,cAAiB,EACjBC,eAAiB,EACjBhvX,KAAiB,4JC56DjB2uX,EAAsBvwB,KAEtB6wB,EAAgB,CAChBl8B,KAAiB,CAAE,GACnBm8B,QAAiB,CAAE,EAAG,EAAG,EAAG,GAC5Bp8B,IAAiB,CAAE,EAAG,GACtBq8B,SAAiB,CAAE,EAAG,GACtBC,YAAiB,CAAE,EAAG,EAAG,EAAG,GAC5BC,eAAiB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAClCC,MAAiB,IAGjBC,EAAW,CACXC,KAAS,EACTnsqB,MAAS,EACTmlpB,OAAS,GAGTinB,EAAY,CACZC,MAAQ,EACRrsqB,MAAQ,EACRssqB,MAAQ,GAGZ,WAAgB1kuB,GAAO74B,IACnB,IAAIiqe,GAAQ,GAAIwe,GAAS,GAAIv5e,GAAU2pB,GAAM3pB,QAE7C,YAAmB/Z,GAAM85vB,GAAQ7+d,IAI7B,OAHKA,KACDA,GAAOlhR,IAEPkhR,GAAKpwN,KAAyB,MAAlBowN,GAAKpwN,IAAI7qE,IACdi7R,GAAKpwN,IAAI7qE,IAEb85vB,GAGX,IAAIhwJ,GAAY+tJ,GAAU,aACtBjuJ,GAASiuJ,GAAU,UAkCvB,cACI,OAAMjlpB,GAAQ,GAAd,CAIA,IAAI/nC,GAAM,IAAKgsqB,KAAc,CACzB9sI,SAAY8tJ,GAAU,YACtBjwsB,MAAYiwsB,GAAU,SACtBluJ,OAAYkuJ,GAAU,UACtBt5uB,QAAYs5uB,GAAU,WACtBhuJ,SAAYguJ,GAAU,YACtBzlsB,QAAYylsB,GAAU,WACtB3jvB,KAAY2jvB,GAAU,QAEtBnuJ,UAAYmuJ,GAAU,eAsCtB/tJ,GACApmkB,GAAM81B,SAAS53D,QAAQymwB,IAEvBA,GAAS3kuB,IAGb74B,GAASggE,GAAI8sC,SAAU9sC,IAzCvB,YAAkBnnC,IACd,IAAI3pB,GAAU2pB,GAAM3pB,QAEhBnO,GAschB,YAAkBkhT,IACd,IAGIphM,GAHA48oB,IAAU,EACVvooB,GAASyykB,WACTrzD,GAAa,KAEjB,GACIzzhB,IAAU,EACVohM,GAAO1wR,GAAI0wR,UACNA,IAAQphM,IACjB,MAAO,CAAEohM,KAAMA,GAAMxhK,KAAM6zf,IAE3B,YAAgBopH,IACZ78oB,WAAU,EACH68oB,GAGX,YAAiB7uG,IACb,OAAQA,GAAMzqV,WAAayqV,GAAMt0pB,UAAY,IACnCojwB,EAAW9uG,GAAMhwpB,SACjB8+vB,EAAW9uG,GAAM78gB,WAG/B,YAAkB1vH,IAEd,QADID,GAAI,GACCvjB,GAAI,EAAGA,GAAIwjB,GAAEpsB,SAAU4I,GAAG,CAC/B,IAAI04C,GAAKjmB,GAAIjP,GAAExjB,KACL,MAAN04C,IACAn1B,GAAEzsB,KAAK4hD,IAGf,OAAOn1B,GAwCX,YAAawsoB,IACT,OAtCJ,YAAsBA,GAAO94pB,IACzB,IAAI6nwB,GAAcH,GACdI,GAAa3ooB,GAEb25hB,GAAMr0pB,cACN06H,GAASA,GAAOmnkB,aAAaxtC,GAAMr0pB,YAAY06H,WAGnD,IAAI04Q,GAAOihR,GAAMjhR,OACbA,KACAA,GAAOA,GAAKntP,UAERmtP,GAAOA,GAAKntP,KAAKvrB,IACjBuooB,GAAUA,GAAU91D,cAAmB81D,GAAS7vX,IAAQA,IAIhE,IACI,OAAO73Y,aAGP0nwB,GAAUG,GACV1ooB,GAAS2ooB,IAgBNC,CAAajvG,GAAO,WACvB,KAAMA,cAAiBl2gB,KAASk2gB,cAAiBm4C,KAAY,CACzD,IAAI56kB,GAdhB,YAAmByiiB,IACf,GAAe,MAAX4uG,GACA,OAAO,EAEX,IAAIrxoB,GAAMyiiB,GAAM82C,UAAUlljB,KAAKvrB,IAC/B,OAAIuooB,IAAWrxoB,KACXA,GAAMu7kB,cAAmBv7kB,GAAKqxoB,KAE3BrxoB,GAMW2xoB,CAAUlvG,IACpB,IAAKziiB,GACD,OAAOl0D,GAAO,MAElBo8kB,GAAaA,GAAaqzD,UAAerzD,GAAYlohB,IAAOA,GAEhE,OAAOmyG,EAAS,CACZqne,KAAM,SAAS/2C,IACX,OAA8B,IAA1BA,GAAMviiB,SAASp2H,QAAiBkuU,GAAQyqV,IAGrCA,GAFI32lB,GAAO,OAItB8uoB,UAAW,SAASn4C,IAChB,IAAKzqV,GAAQyqV,IACT,OAAO32lB,GAAO,MAElB,IAAI1gB,GAAK,IAAIwvpB,IAAUn4C,GAAM3/oB,SAE7B,OADAsoC,GAAGq5G,MAAQmtmB,GAASnvG,GAAMh+f,OACF,IAApBr5G,GAAGq5G,MAAM36J,OACFgiE,GAAO,MAEX1gB,IAEX8nE,OAAQ,SAASuviB,IACb,OAAKzqV,GAAQyqV,IAGNA,GAFI32lB,GAAO,OAItB8toB,IAAK,SAASn3C,IACV,OAAKzqV,GAAQyqV,IAGNA,GAFI32lB,GAAO,OAItBj/C,KAAM,SAAS41oB,IACX,MAAK,KAAKljP,KAAKkjP,GAAM9/oB,YAAeq1T,GAAQyqV,IAGrCA,GAFI32lB,GAAO,OAItB9tB,MAAO,SAASyknB,IACZ,OAAMA,GAAMzqV,WAAayqV,GAAMt0pB,UAAY,EAGpCs0pB,GAFI32lB,GAAO,OAItBygF,MAAO,SAASk2gB,IACZ,KAAMA,GAAMzqV,WAAayqV,GAAMt0pB,UAAY,GACvC,OAAO29D,GAAO,MAElB,IAAI1gB,GAAK,IAAImhG,IAAMk2gB,GAAM3/oB,SAGzB,OAFAsoC,GAAGmX,SAAWqvsB,GAASnvG,GAAMlgmB,UAC7BnX,GAAGs+rB,SAAWjnF,GAAMinF,SAChBjnF,KAAU5sW,IAA+B,IAAvBzqQ,GAAGmX,SAASz4D,QAAiB24pB,GAAMinF,SAGlDt+rB,GAFI0gB,GAAO,OAItB23Z,KAAM,SAASg/L,IACX,OAAKzqV,GAAQyqV,IAGNA,GAFI32lB,GAAO,QAIvB22lB,OAjlBOovG,CAASpluB,IACf4nH,GAAO1/I,GAAI0/I,KACf5nH,GAAQ93B,GAAIkhT,KAGZ,IAAIy8S,GAAYsuJ,GAAU,YAAaA,GAAU,YAAa,QAAS99uB,IAAUgvvB,IAAY,EAC7F,GAAiB,QAAbx/J,GACA,GAAIj+c,GAAM,CACN,IAAIthG,GAAOshG,GAAKu2iB,UAChBt4F,GAAY,CAAEv/iB,GAAKt4C,MAAOs4C,GAAKzkD,QAC/BwjwB,IAAY,EACZ,IAAI1puB,GAASisH,GAAK+mjB,aAClBzmsB,GAAM,IAAI43I,KACNn+I,UAAU,IAAImtsB,IAAW,EAAG,EAAG,EAAG,GAAInzqB,GAAO16B,GAAI06B,GAAOyvB,IAC5DljD,GAAIsgB,OAAOwX,IACXA,GAAQ93B,QAGR29lB,GAAY,KAWpBN,EAAYvlkB,GANLmnC,GAAI0wrB,QAAQ,CACfhyJ,UAAYA,GACZhgkB,OAAYsutB,GAAU,SAAUA,GAAU,UAAW99uB,IACrDgvvB,UAAYA,GACZv/J,UAAYquJ,GAAU,YAAaA,GAAU,aAAa,GAAQ99uB,MAE7C8wD,KAjFjCgsqB,OAEAnzsB,GAAM64mB,SAAS,SAAS7soB,IACpB05N,EAAS,CACLn0L,MAAO,SAASvlC,IACZ,IAAIoK,GAAMpK,GAAQylC,MAClB,GAAIy0jB,GAAQ,CACR,IAAI3ye,GAAMvnH,GAAQ47I,OAAOthG,KACrBi6L,GAAOqvQ,GAAOx5e,IAClBm9G,GAAM,CACFvlH,MAAOxJ,KAAKqB,KAAK0tH,GAAIvlH,MAAQk4lB,GAAS,IACtCrkmB,OAAQ2C,KAAKqB,KAAK0tH,GAAI1xH,OAASqkmB,GAAS,KAExC3lX,KACAhtH,GAAIvlH,MAAQxJ,KAAKsB,IAAIy6O,GAAKvyO,MAAOulH,GAAIvlH,OACrCulH,GAAI1xH,OAAS2C,KAAKsB,IAAIy6O,GAAK1+O,OAAQ0xH,GAAI1xH,SAE3C+tf,GAAOx5e,IAAOm9G,QAEdq8X,GAAOx5e,IAAO,MAGtBgK,KAAM,SAASpU,IACX,IAAIvK,GAAQ0xuB,KAAiBnnuB,GAAQqK,QAAQsmI,MACzCvmI,GAAM+8tB,KAAe1xuB,IACrB2ve,GAAMh6d,QAAQhB,IAAO,GACrBg7d,GAAMr0e,KAAKqZ,MAGpBpK,MAgEP,IAAIkjG,GAAQ,EACZikoB,KAAc/hQ,GAAOk0R,IACrBnyB,KAAevjP,GAAQ01Q,GAAM,CACzBnQ,YAAchB,GAAU,cAAe,KACvCiB,QAAcjB,GAAU,WAAW,KAoC3C,WAAkBthuB,GAAU7mB,IACxB,IAAIsvjB,GAAUzoiB,GAAS7mB,GAAQwvW,UAC/B,OAAI8/M,GACOA,GAAQpwiB,KAAKD,MAAMqwiB,GAASjniB,WAEhCroB,GAGX,WAAqBA,GAASjI,GAAMojE,IAC5Bn7D,GAAQqK,QAAQkvvB,WAChBxhwB,GAAKy2K,QAAQ,UAAYxuK,GAAQqK,QAAQkvvB,WAG7C,IAAI5jwB,GAAYqK,GAAQrK,YACpBD,GAAUsK,GAAQtK,UAWtB,GATAqC,GAAKy5f,OAEU,MAAX97f,IAAmBA,GAAU,GAC7BqC,GAAK41tB,WAAWj4tB,IA+BxB,WAA0BsK,GAASjI,IAC/B,IAAIo1I,GAASntI,GAAQmtI,QAAUntI,GAAQmtI,SACvC,GAAKA,GAIL,KAAItC,GAAQsC,GAAOtC,MACnB,GAAIA,GAAO,CAEP,GAAa,OADbA,GAAQ04b,GAAW14b,KAEf,OAEJ9yI,GAAKm8vB,eAAerpnB,GAAM1uF,EAAG0uF,GAAM/vF,EAAG+vF,GAAMrtH,GAC7B,GAAXqtH,GAAMptH,GACN1lB,GAAKq8vB,iBAAiBvpnB,GAAMptH,GAIpC,IAAIzb,GAAQmrI,GAAOnrI,MACnB,GAAa,MAATA,GAAe,CACf,GAAc,IAAVA,GACA,OAEJjK,GAAKo+vB,aAAan0vB,IAGtB,IAAIsrP,GAAWngH,GAAOmgH,SAClBA,IACAv1P,GAAKk+vB,eAAe+B,EAAc1qgB,IAAW,GAGjD,IAAIjxG,GAAUlP,GAAOkP,QACjBA,IACAtkJ,GAAKm2tB,WAAWoqC,EAASj8mB,KAG7B,IAAIsjhB,GAAWxyhB,GAAOwyhB,SAClBA,IACA5nqB,GAAKo2tB,YAAYqqC,EAAU74F,KAG/B,IAAIjqqB,GAAUy3I,GAAOz3I,QACN,MAAXA,IACAqC,GAAKq8vB,iBAAiB1+vB,KAvE1B8jwB,CAAiBx5vB,GAASjI,IA2E9B,WAAwBiI,GAASjI,IAC7B,IAAIiC,GAAOgG,GAAQhG,MAAQgG,GAAQhG,OACnC,GAAKA,MAIDA,cAAgBksuB,KAIpB,KAAIr7lB,GAAQ7wI,GAAK6wI,MACjB,GAAIA,GAAO,CAEP,GAAa,OADbA,GAAQ04b,GAAW14b,KAEf,OAEJ9yI,GAAKs8vB,aAAaxpnB,GAAM1uF,EAAG0uF,GAAM/vF,EAAG+vF,GAAMrtH,GAC3B,GAAXqtH,GAAMptH,GACN1lB,GAAKo8vB,eAAetpnB,GAAMptH,GAIlC,IAAI/nB,GAAUsE,GAAKtE,QACJ,MAAXA,IACAqC,GAAKo8vB,eAAez+vB,KAlGxB+jwB,CAAez5vB,GAASjI,IAEpBpC,GAAW,CACX,IAAIwyB,GAAIxyB,GAAU06H,SAClBt4H,GAAKpC,UAAUwyB,GAAE1K,EAAG0K,GAAE3K,EAAG2K,GAAE5c,EAAG4c,GAAErxB,EAAGqxB,GAAE5zB,EAAG4zB,GAAEj3B,IAkGlD,WAAqB8O,GAASjI,GAAMojE,IAEhC,IAAI4tU,GAAO/oY,GAAQ+oY,OACfA,KACA2wX,EAAU3wX,GAAMhxY,IAChBA,GAAKgxY,SApGTynW,CAAYxwuB,GAASjI,IAErB2hO,EAAS,CACLqne,KAAY44D,EACZx3D,UAAYy3D,EACZn/oB,OAAYo/oB,EACZ14D,IAAY24D,GACZ1lvB,KAAY+huB,GACZ5wsB,MAAY0B,GACZ6sG,MAAYimnB,GACZ/uS,KAAYgvS,IACbh6vB,GAASjI,GAAMojE,IAElBpjE,GAAK+wJ,UAED9oJ,GAAQqK,QAAQkvvB,WAChBxhwB,GAAKy2K,QAAQ,QAAUxuK,GAAQqK,QAAQkvvB,WA2F/C,WAAoBr6Q,IAChB,OAAQA,KACCA,cAAiBgnP,KAChBhnP,GAAMr0W,QAAU,wBAAwBi8R,KAAKo4E,GAAMr0W,SACnC,MAAfq0W,GAAMl9e,OAAiBk9e,GAAMl9e,MAAQ,KACpB,MAAjBk9e,GAAMxpf,SAAmBwpf,GAAMxpf,QAAU,IAGxD,YAAuBsK,GAASjI,GAAMojE,GAAKgyE,IACvC,IAAInzI,GAAOgG,GAAQhG,OACnB,GAAIA,cAAgBksuB,IAAU,CACtB/4lB,GACAp1I,GAAK++vB,aAEL/+vB,GAAKgxY,OAET,IACIzwX,GAAOsd,GADP2+tB,GAAWv6vB,cAAgB20tB,IAE3B4lC,IACAj8uB,GAAQ,CAAErjB,EAAG+E,GAAK2gE,SAAS1lE,EAAImqD,EAAGplD,GAAK2gE,SAASvb,EAAIjD,EAAG,GACvDvmB,GAAQ,CAAE3gC,EAAG+E,GAAK2gE,SAAS1lE,EAAImqD,EAAGplD,GAAK2gE,SAASvb,EAAIjD,EAAGniD,GAAK+jF,YAE5DzlE,GAAQ,CAAErjB,EAAG+E,GAAKse,QAAQrjB,EAAImqD,EAAGplD,GAAKse,QAAQ8mC,GAC9CxpB,GAAQ,CAAE3gC,EAAG+E,GAAK47B,MAAM3gC,EAAMmqD,EAAGplD,GAAK47B,MAAMwpB,IAGhD,IAAI2vlB,GAAQ/0oB,GAAK+0oB,MAAM56kB,WAAWljE,IAAI,SAASwkB,IAC3C,IAAIiI,GAASjI,GAAKiI,SAEdA,GADA,KAAKopZ,KAAKppZ,IACDuS,WAAWvS,IAAU,IAErBuS,WAAWvS,IAExB,IAAImtH,GAAQ04b,GAAW9tjB,GAAKo1H,SAC5BA,UAAMptH,GAAKhI,GAAK/f,UACT,CACHgoB,OAAQA,GACRmtH,MAAOA,MAMfkkgB,GAAM9tZ,QAAQ8tZ,GAAM,IACpBA,GAAMh+oB,KAAKg+oB,GAAMA,GAAM19oB,OAAS,IAEhC,IAAIgnY,GAAW,CACXuvT,UAAY5trB,GAAK4trB,YACjBx0rB,KAAYmhwB,GAAW,SAAW,SAClCj8uB,MAAYA,GACZsd,IAAYA,GACZm5mB,MAAYA,IAEZxnhB,GAAMvnH,GAAQ8gsB,UACd/kW,GAAKx0O,GAAIqiY,UAAWtvc,GAAOitE,GAAI4qkB,UACnC5qkB,OAMAxvH,GAAKsgY,SAASA,GANd9wQ,GAAM,CACF7sD,KAASqhS,GAAG9mW,EACZwkH,IAASsiP,GAAG38S,EACZp9C,MAASs4C,GAAKt4C,MACdnM,OAASykD,GAAKzkD,UAGX,GAIf,WAAyBmK,GAASjI,GAAMojE,IAChC29rB,EAAW94vB,GAAQhG,SAAW8+vB,EAAW94vB,GAAQmtI,UAC5C8snB,GAAcj6vB,GAASjI,GAAMojE,GAAK,IACnCpjE,GAAKi/vB,aAEN75vB,EAAe6C,GAAQhG,QACrBigwB,GAAcj6vB,GAASjI,GAAMojE,GAAK,IACnCpjE,GAAKiC,OAENmD,EAAe6C,GAAQmtI,UAC1Bp1I,GAAKo1I,SAILp1I,GAAK8+vB,MAiCb,WAAmB72vB,GAASjI,GAAMojE,IAC9B,IAAIssD,GAAWznH,GAAQynH,SACvB,GAAwB,IAApBA,GAASp2H,SA/BjB,WAAuB2jL,GAAMj9K,IACzB,IAAI0vH,GAAWutD,GAAKvtD,SACpB,GAAuB,GAAnBA,GAASp2H,QAAe2jL,GAAK3qK,QAAQi+Q,OAAQ,CAG7C,QADI7qQ,GAAI,GACCxjB,GAAI,EAAGA,GAAIwtH,GAASp2H,SAAU4I,GAAG,CACtC,GAAIwtH,GAASxtH,IAAGmkqB,YACZ,OAAO,EAEX3gpB,GAAExjB,IAAKwtH,GAASxtH,IAAGV,SASvB,GAJIkkB,GAAE,GAAG2hC,GAAK3hC,GAAE,GAAG2hC,GAAK3hC,GAAE,GAAGxoB,GAAKwoB,GAAE,GAAGxoB,GAAKwoB,GAAE,GAAG2hC,GAAK3hC,GAAE,GAAG2hC,GAAK3hC,GAAE,GAAGxoB,GAAKwoB,GAAE,GAAGxoB,GAE3EwoB,GAAE,GAAGxoB,GAAKwoB,GAAE,GAAGxoB,GAAKwoB,GAAE,GAAG2hC,GAAK3hC,GAAE,GAAG2hC,GAAK3hC,GAAE,GAAGxoB,GAAKwoB,GAAE,GAAGxoB,GAAKwoB,GAAE,GAAG2hC,GAAK3hC,GAAE,GAAG2hC,EAK3ErnD,UAAKyxU,KAAK/rT,GAAE,GAAGxoB,EAAGwoB,GAAE,GAAG2hC,EACb3hC,GAAE,GAAGxoB,EAAIwoB,GAAE,GAAGxoB,EACdwoB,GAAE,GAAG2hC,EAAI3hC,GAAE,GAAG2hC,IACjB,GAUV86sB,CAAcl6vB,GAASjI,IAAY,CACpC,QAASw8O,GAAMt6O,GAAI,EAAGA,GAAIwtH,GAASp2H,SAAU4I,GAAG,CAC5C,IAAI0sE,GAAM8gD,GAASxtH,IACfV,GAASotE,GAAIptE,SACjB,GAAKg7O,GAEE,CACH,IAAIq8e,GAAUr8e,GAAKg3a,aACf6S,GAAYz3lB,GAAIy3lB,YAChBwyD,IAAWxyD,GACXrmqB,GAAKw+vB,OACD3lC,GAAQ37tB,EAAM27tB,GAAQxxqB,EACtBg/mB,GAAUnpqB,EAAImpqB,GAAUh/mB,EACxB7lD,GAAOtE,EAAOsE,GAAO6lD,GAGzBrnD,GAAKi1O,OAAOzzO,GAAOtE,EAAGsE,GAAO6lD,QAXjCrnD,GAAKg1O,OAAOxzO,GAAOtE,EAAGsE,GAAO6lD,GAcjCm1L,GAAO5tK,GAEP3mE,GAAQqK,QAAQi+Q,QAChBvwR,GAAKue,SAKjB,WAAkBtW,GAASjI,GAAMojE,IAC7Bu+rB,EAAU15vB,GAASjI,IACnBoiwB,EAAgBn6vB,GAASjI,IAG7B,WAAuBiI,GAASjI,GAAMojE,IAElC,QADI6wF,GAAQhsJ,GAAQgsJ,MACX/xJ,GAAI,EAAGA,GAAI+xJ,GAAM36J,SAAU4I,GAChCy/vB,EAAU1tmB,GAAM/xJ,IAAIlC,IAExBoiwB,EAAgBn6vB,GAASjI,IAG7B,WAAoBiI,GAASjI,GAAMojE,IAC/B,IAAIrgB,GAAI96C,GAAQw0F,WAChBz8F,GAAKomH,OAAOrjE,GAAE6f,OAAO1lE,EAAG6lD,GAAE6f,OAAOvb,EAAGtE,GAAEijC,QACtCo8qB,EAAgBn6vB,GAASjI,IAG7B,YAAiBiI,GAASjI,GAAMojE,IAC5B,IAAIiQ,GAASprE,GAAQw0F,WAAWwsmB,cAChCjpsB,GAAKg1O,OAAO3hK,GAAO,GAAGn2E,EAAGm2E,GAAO,GAAGhsB,GACnC,QAASnlD,GAAI,EAAGA,GAAImxE,GAAO/5E,QACvB0G,GAAKw+vB,OACDnrrB,GAAOnxE,IAAGhF,EAAGm2E,GAAOnxE,MAAKmlD,EACzBgsB,GAAOnxE,IAAGhF,EAAGm2E,GAAOnxE,MAAKmlD,EACzBgsB,GAAOnxE,IAAGhF,EAAGm2E,GAAOnxE,MAAKmlD,GAGjC+6sB,EAAgBn6vB,GAASjI,IAG7B,YAAkBiI,GAASjI,IACvB,IAEIqa,GAFA3c,GAAQ0xuB,KAAiBnnuB,GAAQqK,QAAQsmI,MACzCx8D,GAAMn0E,GAAQulhB,UAEdvlhB,GAAQhG,QAAUgG,GAAQmtI,SAC1B/6H,GAAOslvB,EAAoBC,cACpB33vB,GAAQhG,OACfoY,GAAOslvB,EAAoB19vB,KACpBgG,GAAQmtI,WACf/6H,GAAOslvB,EAAoBvqnB,QAG/Bp1I,GAAKpC,UAAU,EAAG,EAAG,GAAG,EAAIw+E,GAAIl/E,EAAGk/E,GAAI/0B,EAAI3pD,GAAMshY,UACjDh/X,GAAKm7vB,YACLn7vB,GAAKu7vB,QAAQnsB,KAAe1xuB,IAAQA,GAAMshY,UAC1Ch/X,GAAK07vB,qBAAqBrhvB,IAC1Bra,GAAKive,SAAShne,GAAQkK,UAAWlK,GAAQymuB,SAAWzmuB,GAAQymuB,SAASzkuB,QAAU,MAC/EjK,GAAKo7vB,UAGT,YAAmBnzvB,GAASjI,GAAMojE,IAC1Bn7D,GAAQixuB,UACRl5uB,GAAK87vB,QAAQ7zvB,GAAQixuB,SAAS7muB,IAAKpK,GAAQixuB,UAG/C,QADInnrB,GAAW9pD,GAAQ8pD,SACd7vD,GAAI,EAAGA,GAAI6vD,GAASz4D,SAAU4I,GACnCs/lB,EAAYzviB,GAAS7vD,IAAIlC,GAAMojE,IAIvC,YAAmBn7D,GAASjI,IACxB,IAAIqS,GAAMpK,GAAQylC,MAClB,GAAKr7B,GAIL,KAAIo/T,GAAOxpU,GAAQwpU,OACfuyB,GAAKvyB,GAAKm5X,YACVy3D,GAAK5wb,GAAK2oX,UACdp6rB,GAAKpC,UAAUykwB,GAAGp4vB,MAAO,EAAG,GAAIo4vB,GAAGvkwB,OAAQkmW,GAAG9mW,EAAG8mW,GAAG38S,EAAIg7sB,GAAGvkwB,QAC3DkC,GAAKkvC,UAAU78B,KAGnB,YAAkBpK,GAASjI,GAAMojE,IAC7B,IAAIq5B,GAAWx0F,GAAQw0F,WACvB,MAAQ0mlB,GAAIC,IAAO3mlB,GAASymlB,aACjB,IAAPC,IAAmB,IAAPC,IACZpjrB,GAAKyxU,KAAKh1O,GAAS7kE,OAAO16B,EAAGu/F,GAAS7kE,OAAOyvB,EAAGo1C,GAASl6C,KAAKt4C,MAAOwyF,GAASl6C,KAAKzkD,QACnFskwB,EAAgBn6vB,GAASjI,KAEzB4hwB,EAAS54D,aAAcvsmB,GAAUx0F,GAAQqK,SAAUtS,IAI3D,YAAoB9I,IAChB,IAAI47I,IAAQmhmB,QAAiB/8uB,IAAO,GACpC,OAAO47I,GAAQA,GAAMswlB,QAAU,KAmJnC,YAAmBnnsB,GAAO3pB,IACtB,IAAI8S,MAAUo1gB,OAEd,QAASt4hB,MAAKoQ,GACD,UAALpQ,IAAiB+5B,GAAM3pB,QAAQ8wD,KAAOnnC,GAAM3pB,QAAQ8wD,IAAIwtqB,eAO5D30sB,GAAM3pB,QAAQsT,IAAI,OAAS1jB,GAAGoQ,GAAQpQ,KAG1CgsD,OAnjBJ,WAAmBjyB,GAAO74B,IACtB8sG,EAAOj0E,GAAO,SAAS51B,IACnBjD,GAAS,+BAAiCiD,GAAKgse,YAijBnDnkb,CAAUjyB,GAAO7W,GAAQjK,SAElBiK,yFCzsBX,gBAAuBk9uB,IACnBjvwB,YAAYo+U,GACR1+T,QACAxf,KAAKw+D,SAAW,GAChBx+D,KAAKk+U,KAAOA,EAGhB8wb,SAAS9wb,GACL,MAAM+wb,EAAWjvwB,KAAKk+U,KAChBgxb,EAAkBD,EAAS1wQ,cAC3BA,EAAcrgL,EAAKqgL,cAGzB,OAFiB0wQ,EAAS5quB,OAAO16B,GAAKu0U,EAAK75S,OAAO16B,GAAKslwB,EAAS5quB,OAAOyvB,GAAKoqR,EAAK75S,OAAOyvB,GAAKyqc,EAAY50f,GAAKulwB,EAAgBvlwB,GAC1H40f,EAAYzqc,GAAKo7sB,EAAgBp7sB,EAIzCq7sB,YAAY12rB,GACR,MAAMja,EAAWx+D,KAAKw+D,SAChBz4D,EAASy4D,EAASz4D,OAClBwM,EAASiN,MAAM2vvB,YAAY12rB,GACjC,QAAStuC,EAAM,EAAGA,EAAMpkC,EAAQokC,KAC5BjZ,OAAO3e,EAAQisD,EAASr0B,GAAKgluB,YAAY12rB,IAE7C,OAAOlmE,EAGXisE,OAAOkglB,EAAOpugB,GACV,MAAM9xF,EAAWx+D,KAAKw+D,SACtB,IAAI4wsB,GAAW,EAEf,GAAIpvwB,KAAKgvwB,SAAS1+mB,GAAO,CACrB,GAAItwJ,KAAKqvwB,OAAOtpwB,OAAS,EACrB/F,KAAKsvwB,KAAK5wG,EAAOpugB,OACd,CACE9xF,EAASz4D,QACV/F,KAAKuvwB,gBAGT,QAASpluB,EAAM,EAAGA,EAAMq0B,EAASz4D,OAAQokC,IACrC,GAAIq0B,EAASr0B,GAAKq0C,OAAOkglB,EAAOpugB,GAAO,CACnC8+mB,GAAW,EACX,MAIHA,GACDpvwB,KAAKsvwB,KAAK5wG,EAAOpugB,GAGzB8+mB,GAAW,EAGf,OAAOA,EAGXG,gBACI,MAAQrxb,OAAM1/Q,YAAax+D,KACrBqvE,EAAS6uQ,EAAK7uQ,SACd4zkB,EAAY/kU,EAAKxnU,QAAU,EAC3BwsoB,EAAahlU,EAAK3zU,SAAW,EAEnCi0D,EAAS/4D,KACL,IAAI+pwB,EAAS,IAAI9vS,IAAK,CAAExhJ,EAAK75S,OAAO16B,EAAGu0U,EAAK75S,OAAOyvB,GAAK,CAAEmvlB,EAAWC,KACrE,IAAIssH,EAAS,IAAI9vS,IAAK,CAAErwZ,EAAO1lE,EAAGu0U,EAAK75S,OAAOyvB,GAAK,CAAEmvlB,EAAWC,KAChE,IAAIssH,EAAS,IAAI9vS,IAAK,CAAExhJ,EAAK75S,OAAO16B,EAAG0lE,EAAOvb,GAAK,CAAEmvlB,EAAWC,KAChE,IAAIssH,EAAS,IAAI9vS,IAAK,CAAErwZ,EAAO1lE,EAAG0lE,EAAOvb,GAAK,CAAEmvlB,EAAWC,OAKvE,QAAessH,iEC5Bf,QA5CA,gBAAuBjzH,IACnBz8oB,cACI0f,QAEAxf,KAAKqvwB,OAAS,GAGlBC,KAAK5wG,EAAOpugB,GACRtwJ,KAAKqvwB,OAAO5pwB,KAAK,CACb6qJ,KAAMA,EACNougB,MAAOA,IAEXA,EAAM+wG,UAAYzvwB,KAGtBmvwB,YAAY12rB,GACR,MAAM42rB,EAASrvwB,KAAKqvwB,OACdtpwB,EAASspwB,EAAOtpwB,OAChBwM,EAAS,GACf,QAAS43B,EAAM,EAAGA,EAAMpkC,EAAQokC,IACxBkluB,EAAOlluB,GAAKmmH,KAAKv/C,cAAct4B,IAC/BlmE,EAAO9M,KAAK4pwB,EAAOlluB,GAAKu0nB,OAGhC,OAAOnspB,EAGXisE,OAAOkglB,EAAOpugB,GACVtwJ,KAAKsvwB,KAAK5wG,EAAOpugB,GAGrB7xG,OAAOignB,GACH,MAAM2wG,EAASrvwB,KAAKqvwB,OACdtpwB,EAASspwB,EAAOtpwB,OAEtB,QAASokC,EAAM,EAAGA,EAAMpkC,EAAQokC,IAC5B,GAAIkluB,EAAOlluB,GAAKu0nB,QAAUA,EAAO,CAC7B2wG,EAAOvrvB,OAAOqmB,EAAK,GACnB,oHClChB,MAAMuluB,EAAY,IAmLlB,WAAwBv6rB,EAAIM,GACxB,OAAIN,EAAGw6rB,QAAUl6rB,EAAGk6rB,QACT,EAEPx6rB,EAAGw6rB,QAAUl6rB,EAAGk6rB,SACT,EAGJ,EAGX,QA1LA,gBAA6BpzH,IAEzBz8oB,cACI0f,QAEAxf,KAAK4vwB,YAGTA,YACI5vwB,KAAKykX,QAAU,GACfzkX,KAAK8xT,KAAO,IAAIi9c,IAChB/uwB,KAAK0kuB,aAAe,GAGxBplrB,QACI,MAAMolrB,EAAe1kuB,KAAK0kuB,aAC1B,QAASv6rB,EAAM,EAAGA,EAAMu6rB,EAAa3+tB,OAAQokC,IACzCnqC,KAAKy+C,OAAOimrB,EAAav6rB,IAE7BnqC,KAAK4vwB,YAGTvrC,WAAW5rpB,GACP,MAAMo3rB,GAAe7vwB,KAAKykX,QAASv3W,KAAKC,MAAOsrE,EAAM9uE,EAAI+lwB,KAAiB,IAAMxiwB,KAAKC,MAAOsrE,EAAM3kB,EAAI47sB,IACtG,IAAIn9vB,EAASvS,KAAK8xT,KAAKq9c,YAAY12rB,GAE/Bo3rB,IACAt9vB,EAASA,EAAOohC,OAAOk8tB,EAAWV,YAAY12rB,KAGlDz4E,KAAK8vwB,aAAav9vB,GAElBA,EAAOuH,KAAKi2vB,GACZ,QAAS5luB,EAAM,EAAGA,EAAM53B,EAAOxM,OAAQokC,IACnC,GAAI53B,EAAO43B,GAAK4mE,cAAct4B,GAC1B,OAAOlmE,EAAO43B,GAK1B2luB,aAAajnsB,GACT,QAAS1+B,EAAM,EAAGA,EAAM0+B,EAAS9iE,OAAQokC,IAAO,CAC5C,IAAIz1B,EAAUm0D,EAAS1+B,GACnB8mH,EAAS,EACT++mB,EAAc9iwB,KAAK06F,IA/ChB,IACD,IA+CF68Z,EAAU,GAEd,KAAO/vf,GACH+vf,EAAQh/f,KAAKiP,GACbA,EAAUA,EAAQ2nW,OAGtB,KAAOooJ,EAAQ1+f,QACX2O,EAAU+vf,EAAQ3xe,MAClBm+H,KAAYv8I,EAAQ2nW,OAAS3nW,EAAQ2nW,OAAO79S,SAAWx+D,KAAK0kuB,cAAc5ktB,QAAQpL,GAAW,GAAKs7vB,EAClGA,GA1DG,IA6DPnnsB,EAAS1+B,GAAKwluB,QAAU1+mB,GAIhCi8hB,cAAcjkrB,IACM,cAAZA,EAAE4hD,OAAqC,iBAAZ5hD,EAAE4hD,QAC7B7qD,KAAKiwwB,WAAWhnwB,EAAEyL,SAI1Bq4qB,eAAe9jrB,GACXjJ,KAAKiwwB,WAAWhnwB,EAAEyL,SAGtBu7vB,WAAWv7vB,GACP,GAAyB,UAArBA,EAAQwvW,SACR,QAAS/5U,EAAM,EAAGA,EAAMz1B,EAAQ8pD,SAASz4D,OAAQokC,IAC7CnqC,KAAKiwwB,WAAWv7vB,EAAQ8pD,SAASr0B,SAGjCz1B,EAAQ+6vB,WACR/6vB,EAAQ+6vB,UAAUhxtB,OAAO/pC,GAE7B1U,KAAKkwwB,aAAax7vB,GAI1B8zC,IAAIqgB,GACA,MAAMsnsB,EAAgB7hwB,MAAMqxB,QAAQkpC,GAAYA,EAASj6D,MAAM,GAAK,CAAEi6D,MAEtE33C,KAAOlxB,KAAK0kuB,aAAcyrC,GAC1BnwwB,KAAKowwB,QAAQD,GAGjB7/B,eAAernuB,GACX,GAAiB,WAAbA,EAAE+3B,OACF,QAASmJ,EAAM,EAAGA,EAAMlhC,EAAEupD,MAAMzsD,OAAQokC,IACpCnqC,KAAKy+C,OAAOx1C,EAAEupD,MAAMroB,SAGxBnqC,KAAKowwB,QAAQ9hwB,MAAM+R,UAAUzR,MAAMglB,KAAK3qB,EAAEupD,MAAO,IAIzD49sB,QAAQvnsB,GACJ,IAAIn0D,EAEJ,KAAOm0D,EAAS9iE,OAAS,GACrB2O,EAAUm0D,EAAS/1C,MACnBpe,EAAQoxrB,YAAY9lsB,MACK,UAArB0U,EAAQwvW,UACRhzV,OAAO23C,EAAUn0D,EAAQ8pD,UAEzBx+D,KAAKkwwB,aAAax7vB,GAK9Bw7vB,aAAaxxG,GACT,MAAMpugB,EAAOougB,EAAMpugB,OACnB,GAAIA,EAAM,CACN,MAAM+/mB,EAAUrwwB,KAAKswwB,WAAWhgnB,GAC1B3mJ,EAAI0mwB,EAAQ,GAAG,GACfv8sB,EAAIu8sB,EAAQ,GAAG,GAErB,GAAIrwwB,KAAKuwwB,OAAOF,GACZrwwB,KAAK8xT,KAAKtzO,OAAOkglB,EAAOpugB,OACrB,CACH,MAAMm0N,EAAUzkX,KAAKykX,QAChBA,EAAQ96W,KACT86W,EAAQ96W,GAAK,IAGZ86W,EAAQ96W,GAAGmqD,KACZ2wT,EAAQ96W,GAAGmqD,GAAK,IAAI07sB,IAChB,IAAI9vS,IAAK,CAAE/1d,EAAI+lwB,EAAW57sB,EAAI47sB,GAAa,CAAEA,EAAWA,MAIhEjrZ,EAAQ96W,GAAGmqD,GAAG0qB,OAAOkglB,EAAOpugB,KAKxC7xG,OAAO/pC,GAGH,GAFAA,EAAQg2rB,eAAe1qsB,MAEE,UAArB0U,EAAQwvW,SAAsB,CAC9B,MAAM1lT,EAAW9pD,EAAQ8pD,SACzB,QAASr0B,EAAM,EAAGA,EAAMq0B,EAASz4D,OAAQokC,IACrCnqC,KAAKy+C,OAAO+f,EAASr0B,SAElBz1B,EAAQ+6vB,YACf/6vB,EAAQ+6vB,UAAUhxtB,OAAO/pC,UAClBA,EAAQ+6vB,WAIvBc,OAAOF,GACH,OAAOA,EAAQ,GAAGtqwB,OAAS,GAAKsqwB,EAAQ,GAAGtqwB,OAAS,EAGxDuqwB,WAAWpyb,GACP,MAAMqgL,EAAcrgL,EAAKqgL,cACnBiyQ,EAAUtjwB,KAAKC,MAAMoxf,EAAY50f,EAAI+lwB,GACrCe,EAAUvjwB,KAAKC,MAAMoxf,EAAYzqc,EAAI47sB,GACrCW,EAAU,CAAE,GAAI,IACtB,QAAS1mwB,EAAIuD,KAAKC,MAAM+wU,EAAK75S,OAAO16B,EAAI+lwB,GAAY/lwB,GAAK6mwB,EAAS7mwB,IAC9D0mwB,EAAQ,GAAG5qwB,KAAKkE,GAEpB,QAASmqD,EAAI5mD,KAAKC,MAAM+wU,EAAK75S,OAAOyvB,EAAI47sB,GAAY57sB,GAAK28sB,EAAS38sB,IAC9Du8sB,EAAQ,GAAG5qwB,KAAKquD,GAEpB,OAAOu8sB,wHC5Kf,iBAAqBl7D,UAAUC,MAAWt2jB,OAAa47D,QAC/CwpK,eACA,MAAO,SAGXpkX,YAAYopG,EAAW,IAAIwnqB,IAAkB3xvB,EAAU,IACnDS,MAAMT,GAEN/e,KAAKkpG,SAASA,MAET0hgB,KAAQ5qmB,KAAK+e,QAAQ8iI,SACtB7hJ,KAAK6hJ,OAbM,QAiBnB2zjB,UACI,OAAOx1sB,KAAKu1sB,UAAUjljB,OAG1BgljB,MAAMvwkB,GACF,OAAO/kI,KAAKu1sB,UAAUjljB,KAAKvrB,GAG/BxzB,eAAe94B,GACX,OAAOz4E,KAAKkpG,WAAW6H,cAAct4B,GAGzCm9nB,UAAUn9nB,GACN,OAAOz4E,KAAKkpG,WAAW0smB,UAAUn9nB,EAAOz4E,KAAK+e,QAAQ8iI,OAAOnrI,MAAQ,IAI5E,QAAey4G,kKCsGf,QAvIA,gBAAsB4hnB,IACd7sX,eACA,MAAO,OAGXpkX,YAAYif,GACRS,QAEAxf,KAAK2wwB,aAAa5xvB,GAGtB4xvB,aAAa5xvB,EAAU,IACnB,MAAQ0+X,OAAMpzY,aAAc0U,EAExB1U,IACA0U,EAAQ1U,aAAY4tO,KAAgB5tO,IAGpCozY,IAASA,EAAKv4Y,KACdu4Y,EAAKv4Y,IAAK+2N,UAGdj8N,KAAK+e,QAAU,IAAImytB,IAAanytB,GAChC/e,KAAK+e,QAAQ+mrB,YAAY9lsB,MAG7BqK,UAAU1G,GACN,OAAIinmB,KAAQjnmB,GAGR,OAAO3D,KAAK+e,QAAQF,IAAI,aAFxB7e,KAAK+e,QAAQsT,IAAI,eAAa4lN,KAAgBt0O,IAMtDitwB,kBACI,IACI3kE,EADAv3rB,EAAU1U,KAGd,KAAO0U,EAAQ2nW,QAAQ,CACnB3nW,EAAUA,EAAQ2nW,OAClB,IAAI+1X,EAAiB19tB,EAAQrK,YACzB+nuB,IACAnmC,EAAemmC,EAAertmB,SAASmnkB,aAAaD,GAAgBvwD,aAI5E,GAAIuwD,EACA,SAAOh0d,KAAgBg0d,GAI/B2/C,iBAAiBglB,EAAkB5wwB,KAAK4wwB,mBACpC,MAAMC,EAAmB7wwB,KAAKqK,YACxBymwB,KAAgB96B,KAAS66B,GAE/B,IACIllB,EADA1/C,GAAe+pC,OAAS46B,GAS5B,GALIjlB,EADAmlB,GAAiB7kE,EACAA,EAAaC,aAAa4kE,GAE1BA,GAAiB7kE,EAGlC0/C,EACA,SAAO1zgB,KAAgB0zgB,GAI/B13a,QAAQtwU,GACJ,OAAIinmB,OAAQjnmB,IACR3D,KAAK+e,QAAQsT,IAAI,UAAW1uB,GACrB3D,OAG4B,IAAhCA,KAAK+e,QAAQF,IAAI,WAG5B4+X,KAAK95Y,GACD,MAAMob,EAAU/e,KAAK+e,QACrB,SAAI6rlB,KAAQjnmB,IACJA,IAAUA,EAAMuB,KAChBvB,EAAMuB,MAAK+2N,QAEfl9M,EAAQsT,IAAI,OAAQ1uB,GACb3D,MAGJ+e,EAAQF,IAAI,QAGvBzU,QAAQzG,GACJ,OAAIinmB,OAAQjnmB,IACR3D,KAAK+e,QAAQsT,IAAI,UAAW1uB,GACrB3D,OAGJq7oB,OAAer7oB,KAAK+e,QAAQF,IAAI,WAAY,GAGvDsooB,YAAYirF,GACR,MAAM9hlB,EAAOtwJ,KAAK+wwB,aAAa3+B,GAC/B,GAAI9hlB,EAAM,CACN,MAAMmtP,EAAOz9Y,KAAKy9Y,OAClB,OAAOA,EAAOiiF,cAAepvU,EAAMmtP,EAAKntP,KAAK8hlB,IAAmB9hlB,GAIxEv/C,cAAct4B,EAAOm4rB,GACjB,GAAI5wwB,KAAKi0U,UAAW,CAChB,MAAM5pU,EAAYrK,KAAK4rvB,iBAAiBglB,GACxC,IAAII,EAAmBv4rB,EACvB,OAAIpuE,IACA2mwB,EAAmBv4rB,EAAMyvkB,cAAc79oB,EAAU06H,SAASqnkB,WAEtDpssB,KAAKixwB,YAAcjxwB,KAAKuxG,eAAey/pB,IAAuBhxwB,KAAK41sB,WAAa51sB,KAAKkxwB,cAAgBlxwB,KAAK41sB,UAAUo7D,GAEhI,OAAO,EAGXC,WACI,MAAMviwB,EAAO1O,KAAK+e,QAAQrQ,KAC1B,OAAOA,OAAS+zqB,KAAc/zqB,EAAK6wI,OAGvC2xnB,aACI,MAAMrvnB,EAAS7hJ,KAAK+e,QAAQ8iI,OAC5B,OAAOA,GAAUA,EAAOnrI,MAAQ,OAAM+rqB,KAAc5giB,EAAOtC,OAG/DwxnB,aAAa3+B,GACT,OAAOpyuB,KAAKswJ,KAAK8hlB,mECzIzB,MAAM3suB,EAAO,GAAGA,KACVqtB,EAAM,GAAGA,IACThP,EAAS,GAAGA,OACZ6lE,EAAQ,GAAGA,MACX/6E,EAAQ,GAAGA,MACX+mP,EAAU,GAAGA,QAuHnBnqP,EArHA,gBAA4BuluB,IACxBjxuB,YAAYmqC,EAAQ,IAChBzqB,QAEAxf,KAAK+F,OAAS,EACd/F,KAAKmxwB,QAAQ,EAAGlnuB,EAAMlkC,OAAQkkC,GAGlC4+B,SAASllE,GACL,OAAIA,GACA3D,KAAKmxwB,QAAQ,EAAGnxwB,KAAK+F,OAAQpC,GAE7B3D,KAAKu6uB,UACEv6uB,MAGJA,KAAK4O,MAAM,GAGtBnJ,OACI,MAAMojE,EAAW9rC,UACXxqB,EAAS9M,EAAKkuB,MAAM3zB,KAAM6oE,GAEhC,YAAKymsB,KAAKzmsB,GAEHt2D,EAGX3D,QACI,OAAOA,EAAMglB,KAAK5zB,MAGtB8yB,MACI,MAAM/sB,EAAS/F,KAAK+F,OACdwM,EAASugB,EAAIa,MAAM3zB,MAEzB,OAAI+F,GACA/F,KAAKoxwB,QAAQ,CAAE7+vB,IAGZA,EAGXuR,OAAOF,EAAOytvB,GACV,MAAMxosB,EAAWj6D,EAAMglB,KAAKmJ,UAAW,GACjCxqB,EAASvS,KAAKmxwB,QAAQvtvB,EAAOytvB,EAASxosB,GAE5C,YAAK0xqB,UAEEhouB,EAGXo3E,QACI,MAAM5jF,EAAS/F,KAAK+F,OACdwM,EAASo3E,EAAMh2D,MAAM3zB,MAE3B,OAAI+F,GACA/F,KAAKoxwB,QAAQ,CAAE7+vB,IAGZA,EAGXojP,UACI,MAAM9sL,EAAW9rC,UACXxqB,EAASojP,EAAQhiO,MAAM3zB,KAAM6oE,GAEnC,YAAKymsB,KAAKzmsB,GAEHt2D,EAGXuN,QAAQpL,GACJ,MAAM3O,EAAS/F,KAAK+F,OAEpB,QAASokC,EAAM,EAAGA,EAAMpkC,EAAQokC,IAC5B,GAAInqC,KAAKmqC,KAASz1B,EACd,OAAOy1B,EAGf,OAAO,EAGXgnuB,QAAQvtvB,EAAOytvB,EAASxosB,GACpB,MAAMt2D,EAASuR,EAAO6P,MAAM3zB,KAAM,CAAE4jB,EAAOytvB,GAAU19tB,OAAOk1B,IAE5D,YAAKyosB,eAAe/+vB,GACpBvS,KAAKuxwB,aAAa1osB,GAEXt2D,EAGX+8vB,KAAKzmsB,GACD7oE,KAAKuxwB,aAAa1osB,GAClB7oE,KAAKu6uB,UAGT62B,QAAQvosB,GACJ7oE,KAAKsxwB,eAAezosB,GACpB7oE,KAAKu6uB,UAGTg3B,aAAa1osB,GACT,QAAS1+B,EAAM,EAAGA,EAAM0+B,EAAS9iE,OAAQokC,IACrC0+B,EAAS1+B,GAAK27pB,YAAY9lsB,MAIlCsxwB,eAAezosB,GACX,QAAS1+B,EAAM,EAAGA,EAAM0+B,EAAS9iE,OAAQokC,IACrC0+B,EAAS1+B,GAAKugqB,eAAe1qsB,MAIrCu6uB,sHCpHJ,iBAAoBtY,OAAYvnhB,IAAS,aACjCwpK,eACA,MAAO,QAGXpkX,YAAYif,GACRS,MAAMT,GACN/e,KAAKw+D,SAAW,GAGpB8xqB,eAAetvsB,EAAQwxB,EAAO5uC,GAC1B5jB,KAAKiK,QAAQ,iBAAiB,CAC1B+2B,OAAQA,EACRwxB,MAAOA,EACP5uC,MAAOA,IAIfsN,SACIA,cAAOlxB,KAAKw+D,SAAUzhC,WACtB/8B,KAAKwxwB,UAAUz0uB,UAAW/8B,MAE1BA,KAAKswuB,eAAe,MAAOvzsB,WAEpB/8B,KAGXw+E,OAAO56D,EAAOlP,GACV,YAAK8pD,SAAS16C,OAAOF,EAAO,EAAGlP,GAC/BA,EAAQ2nW,OAASr8W,KAEjBA,KAAKswuB,eAAe,MAAO,CAAE57tB,GAAWkP,GAEjC5jB,KAGXyiuB,SAAS/ttB,EAASkP,GACd,OAAO5jB,KAAKw+E,OAAO56D,EAAOlP,GAG9B+pC,OAAO/pC,GACH,MAAMkP,EAAQ5jB,KAAKw+D,SAAS1+C,QAAQpL,GACpC,OAAIkP,GAAS,IACT5jB,KAAKw+D,SAAS16C,OAAOF,EAAO,GAC5BlP,EAAQ2nW,OAAS,KACjBr8W,KAAKswuB,eAAe,SAAU,CAAE57tB,GAAWkP,IAGxC5jB,KAGX67L,SAASj4K,GACL,GAAI,GAAKA,GAASA,EAAQ5jB,KAAKw+D,SAASz4D,OAAQ,CAC5C,IAAI2O,EAAU1U,KAAKw+D,SAAS56C,GAC5B5jB,KAAKw+D,SAAS16C,OAAOF,EAAO,GAC5BlP,EAAQ2nW,OAAS,KACjBr8W,KAAKswuB,eAAe,SAAU,CAAE57tB,GAAWkP,GAG/C,OAAO5jB,KAGXs/C,QACI,MAAMkT,EAAQxyD,KAAKw+D,SACnB,YAAKA,SAAW,GAChBx+D,KAAKwxwB,UAAUh/sB,EAAO,MAEtBxyD,KAAKswuB,eAAe,SAAU99qB,EAAO,GAE9BxyD,KAGXswJ,KAAK8hlB,GACD,SAAOq/B,KAAoBzxwB,KAAKw+D,UAAU,EAAMx+D,KAAK4rvB,iBAAiBxZ,IAG1E58B,UACI,OAAOi8D,OAAoBzxwB,KAAKw+D,UAAU,GAG9CuysB,aAAa3+B,GACT,OAAOs/B,OAA2B1xwB,KAAKw+D,SAAUx+D,KAAK4rvB,iBAAiBxZ,IAG3EwZ,iBAAiBxZ,GACb,OAAO13hB,oCAAwC16M,KAAMoyuB,IAAmB,KAG5ErhoB,cAAct4B,EAAOm4rB,GACjB,GAAI5wwB,KAAKi0U,UAAW,CAChB,MAAMz1Q,EAAWx+D,KAAKw+D,SAChBn0D,EAAYrK,KAAK4rvB,iBAAiBglB,GACxC,QAASzmuB,EAAM,EAAGA,EAAMq0B,EAASz4D,OAAQokC,IACrC,GAAIq0B,EAASr0B,GAAK4mE,cAAct4B,EAAOpuE,GACnC,OAAO,EAInB,OAAO,EAGXmnwB,UAAU3osB,EAAU8osB,GAChB,QAAShjwB,EAAI,EAAGA,EAAIk6D,EAAS9iE,OAAQ4I,IAAK,CACtC,MAAM8vD,EAAQoK,EAASl6D,GACjB0tW,EAAS59S,EAAM49S,OACjBA,GAAUA,IAAWr8W,MAAQq8W,EAAO59T,QACpC49T,EAAO59T,OAAOggB,GAGlBA,EAAM49S,OAASs1Z,IAK3B,QAAenpnB,2GClHf,iBAAoB1J,OAAa47D,IAAS,CAAE,UACpCwpK,eACA,MAAO,QAGXpkX,YAAYq6C,EAAK+jS,EAAO,IAAIwhJ,IAAQ3gd,EAAU,IAC1CS,MAAMT,GAEN/e,KAAKm6C,IAAIA,GACTn6C,KAAKk+U,KAAKA,GAGd/jS,IAAIx2C,GACA,OAAIinmB,OAAQjnmB,IACR3D,KAAK+e,QAAQsT,IAAI,MAAO1uB,GACjB3D,MAGJA,KAAK+e,QAAQF,IAAI,OAG5ByxI,KAAK8hlB,GACD,MAAMuZ,GAAiB3V,OAASh2uB,KAAK4rvB,iBAAiBxZ,IACtD,OAAOpyuB,KAAKk0rB,MAAM5jiB,KAAKq7lB,GAG3Bn2C,UACI,OAAOx1sB,KAAKk0rB,MAAM5jiB,OAGtB/+C,eAAe94B,GACX,OAAOz4E,KAAKk0rB,MAAMnjlB,cAAct4B,GAGpCw4rB,WACI,OAAOjxwB,KAAKm6C,OAIpB,QAAeF,wECtCf,QANA,gBAAoCqgsB,IAChCC,UACIv6uB,KAAK+srB,qMCaN,mBAAmBooB,MAAUC,OAAW16f,OAAUr5L,aACxCkB,EAAKxD,IACd,OAAO83rB,EAAUvorB,MAAM/L,EAAKxD,IAG5BmlW,eACA,MAAO,OAGXpkX,YAAYif,GACRS,MAAMT,GACN/e,KAAKm8H,SAAW,IAAIy1oB,EACpB5xwB,KAAKm8H,SAAS2pkB,YAAY9lsB,SAErB4qmB,KAAQ5qmB,KAAK+e,QAAQ8iI,UACtB7hJ,KAAK6hJ,OAAO,WAEP+od,KAAQ5qmB,KAAK+e,QAAQ8iI,OAAOwyhB,WAC7Br0qB,KAAK+e,QAAQsT,IAAI,kBAAmB,UAKhDovN,OAAO93O,EAAGmqD,IACN,YAAKi9mB,UACL/wqB,KAAKm8H,SAAStzD,SAAS,IACvB7oE,KAAKgif,SAELhif,KAAK0hP,OAAO/3O,EAAGmqD,IAER9zD,KAGX0hP,OAAO/3O,EAAGmqD,IACN,MAAM2kB,GAAQmyhB,OAAQ92iB,IAAK,IAAIomB,IAAMvwE,EAAGmqD,IAAKnqD,EACvC0yH,EAAU,IAAIw9mB,IAAQphqB,GAE5B,YAAK0jD,SAAS12H,KAAK42H,GAEZr8H,KAGX21sB,QAAQ11C,EAAY6S,GAAWr6lB,GAC3B,GAAIz4E,KAAKm8H,SAASp2H,OAAS,EAAG,CAC1B,MAAMiqqB,KAAc14iB,KAAKt3H,KAAKm8H,UACxBE,EAAU,IAAIw9mB,IAAQphqB,EAAOq6lB,IACnC9yqB,KAAK+wqB,UACLf,EAAY/P,WAAWA,GACvBjgqB,KAAKgif,SAELhif,KAAKm8H,SAAS12H,KAAK42H,GAGvB,OAAOr8H,KAGXo/oB,IAAI1sjB,EAAYC,GAAU0sjB,EAASC,EAASwyF,GACxC,GAAI9xuB,KAAKm8H,SAASp2H,OAAS,EAAG,CAE1B,MAAMkI,KADcqpH,KAAKt3H,KAAKm8H,UACHluH,SACrB+e,KAAQmunB,KAAIzojB,GACZrjB,GAAS,IAAI6K,IAAMjsE,EAAOtE,EAAI01oB,EAAUnyoB,KAAK65E,IAAI/5D,GACnD/e,EAAO6lD,EAAIwrlB,EAAUpyoB,KAAKwkF,IAAI1kE,IAC5BoynB,GAAM,IAAIy2D,IAAIxmoB,GAAQ,CACxBqjB,WAAYA,EACZC,SAAUA,GACV0sjB,QAASA,EACTC,QAASA,EACTwyF,cAAeA,IAGnB9xuB,KAAK6xwB,gBAAgBzyH,IAGzB,OAAOp/oB,KAGX8svB,MAAMxitB,EAAKslpB,GAAIC,EAAIukD,EAAUC,EAAOp4kB,GAChC,GAAIj8J,KAAKm8H,SAASp2H,OAAS,EAAG,CAE1B,MAAMkI,GADcqpH,OAAKt3H,KAAKm8H,UACHluH,SACrBmxoB,GAAMy2D,eAAe5nsB,EAAQisE,WAAa5vC,GAAMslpB,GAAIC,EAAIukD,EAAUC,EAAOp4kB,GAE/Ej8J,KAAK6xwB,gBAAgBzyH,IAEzB,OAAOp/oB,KAGX6xwB,gBAAgBzyH,GACZp/oB,KAAK+wqB,UAEL,MAAM2kC,GAAct2D,EAAIs2D,cAExB,QAAS/msB,EAAI,EAAGA,EAAI+msB,GAAY3vsB,OAAQ4I,GAAK,EACzC3O,KAAK21sB,QAAQD,GAAY/msB,GAAI+msB,GAAY/msB,EAAI,GAAI+msB,GAAY/msB,EAAI,IAGrE3O,KAAKgif,SACLhif,KAAK+srB,iBAGT/hqB,QACI,YAAKjM,QAAQi+Q,QAAS,EACtBh9R,KAAK+srB,iBAEE/srB,KAGXw1sB,UACI,OAAOx1sB,KAAKs1sB,QAGhB/jmB,eAAe94B,GACX,MAAM0jD,GAAWn8H,KAAKm8H,SAChBp2H,EAASo2H,GAASp2H,OACxB,IACIqgC,EAAUC,EADV2ysB,EAAqB,EAGzB,QAAS7usB,EAAM,EAAGA,EAAMpkC,EAAQokC,IAC5B/D,EAAW+1F,GAAShyF,EAAM,GAC1B9D,EAAU81F,GAAShyF,GACnB6usB,GAAsB5ysB,EAAS2ysB,iBAAiB1ysB,EAASoyC,GAG7D,OAAIz4E,KAAK+e,QAAQi+Q,SAAW7gK,GAAS,GAAGluH,SAASgwD,OAAOk+D,GAASp2H,EAAS,GAAGkI,aACzE+quB,IAAsBI,OAAuBj9mB,GAAS,GAAGluH,SAAUkuH,GAASp2H,EAAS,GAAGkI,SAAUwqE,IAG/FugqB,EAAqB,GAAM,EAGtCpjC,UAAUn9nB,EAAO/hE,IACb,MAAMylH,EAAWn8H,KAAKm8H,SAChBp2H,EAASo2H,EAASp2H,OAClB+rwB,EAAYp7vB,IAAS1W,KAAK+e,QAAQ8iI,OAAOnrI,MAE/C,GAAI3Q,EAAS,EAAG,CACZ,GAAIo2H,EAAS,GAAGw9mB,YAAYx9mB,EAAS,GAAI1jD,EAAOq5rB,EAAW,SACvD,OAAO,EAGX,QAAS3nuB,EAAM,EAAGA,GAAOpkC,EAAS,EAAGokC,IACjC,GAAIgyF,EAAShyF,EAAM,GAAGwvsB,YAAYx9mB,EAAShyF,GAAMsuC,EAAOq5rB,GACpD,OAAO,EAIf,GAAI31oB,EAASp2H,EAAS,GAAG4zuB,YAAYx9mB,EAASp2H,EAAS,GAAI0yE,EAAOq5rB,EAAW,OACzE,OAAO,EAGf,OAAO,EAGXx8D,MAAMvwkB,GACF,MAAM5I,GAAWn8H,KAAKm8H,SAChBp2H,EAASo2H,GAASp2H,OACxB,IAAIgswB,EAEJ,GAAe,IAAXhswB,EAAc,CACd,IAAIkI,EAASkuH,GAAS,GAAGluH,SAASi6oB,cAAcnjhB,GAChDgtoB,EAAc,IAAIryS,IAAKzxd,EAAQghD,kBACxBlpD,EAAS,EAChB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,IAAIqjwB,EAAa71oB,GAASxtH,EAAI,GAAGspuB,OAAO97mB,GAASxtH,GAAIo2H,GAEjDgtoB,EADAA,EACcryS,UAAWqyS,EAAaC,GAExBA,EAK1B,OAAOD,kBAGK7zb,EAAMn/T,IAClB,MAAM2qK,EAAO,IAAI+rhB,EAAK12rB,IACtB,IAAM6wqB,EAAIC,GAAO3xW,EAAKyxW,aAEtB,GAAW,IAAPC,GAAmB,IAAPC,EACZnmgB,EAAK+3D,OAAOy8F,EAAKogL,WACZ58Q,OAAOw8F,EAAK+xM,YACZvuS,OAAOw8F,EAAKqgL,eACZ78Q,OAAOw8F,EAAKgyM,cACZllgB,YACF,CACH,MAAMqZ,EAAS65S,EAAK75S,QACZ16B,IAAGmqD,KAAMzvB,EACX3tB,GAAQwnU,EAAKxnU,QACbnM,GAAS2zU,EAAK3zU,SACpBqlrB,GAAKjvH,OAAWivH,EAAI,EAAGl5qB,GAAQ,GAC/Bm5qB,GAAKlvH,OAAWkvH,EAAI,EAAGtlrB,GAAS,GAEhCm/K,EAAK+3D,OAAO93O,EAAIimrB,EAAI97nB,GACf4tL,OAAO/3O,EAAI+M,GAAQk5qB,EAAI97nB,GACvBg5rB,MAAM,CAAEnjvB,EAAI+M,GAAOo9C,EAAI+7nB,GAAMD,EAAIC,GAAI,GACrCnuc,OAAO/3O,EAAI+M,GAAOo9C,EAAIvpD,GAASslrB,GAC/Bi9D,MAAM,CAAEnjvB,EAAI+M,GAAQk5qB,EAAI97nB,EAAIvpD,IAAUqlrB,EAAIC,GAAI,GAC9Cnuc,OAAO/3O,EAAIimrB,EAAI97nB,EAAIvpD,IACnBuivB,MAAM,CAAEnjvB,EAAGmqD,EAAIvpD,GAASslrB,GAAMD,EAAIC,GAAI,GACtCnuc,OAAO/3O,EAAGmqD,EAAI+7nB,GACdi9D,MAAM,CAAEnjvB,EAAIimrB,EAAI97nB,GAAK87nB,EAAIC,GAAI,GAGtC,OAAOnmgB,oBAGO5pG,EAAQ/gE,IACtB,GAAI+gE,EAAQ,CACR,MAAM4pG,EAAO,IAAI+rhB,EAAK12rB,IAEtB,QAASpQ,EAAI,EAAGA,EAAImxE,EAAO/5E,OAAQ4I,IAAK,CACpC,IAAI8pE,EAAQyB,WAAa4F,EAAOnxE,IAC5B8pE,IACU,IAAN9pE,EACA+6K,EAAK+3D,OAAOhpK,GAEZixG,EAAKg4D,OAAOjpK,IAKxB,OAAOixG,kBAIA01d,EAAKrgoB,IAChB,MAAM2qK,EAAO,IAAI+rhB,EAAK12rB,IAChB2zE,EAAa0sjB,EAAI1sjB,WACjB1lE,EAAQoynB,EAAII,QAAQ9sjB,GAC1Bg3F,SAAK+3D,OAAOz0N,EAAMrjB,EAAGqjB,EAAM8mC,GAC3B41H,EAAK01d,IAAI1sjB,EAAY0sjB,EAAIzsjB,SAAUysjB,EAAIC,QAASD,EAAIE,QAASF,EAAI0yF,eAC1DpojB,GAIR,mBAAwByrhB,MAAUC,OAAW16f,OAAUr5L,aAC7CkB,EAAKxD,IACd,MAAMqC,EAAW,IAAIy1rB,EAAU93rB,IAC/B,OAAO+3rB,OAAU11rB,EAAUmB,GAG3B2hW,eACA,MAAO,YAGXpkX,YAAYif,GACRS,MAAMT,GACN/e,KAAK0gK,MAAQ,IAAIkxmB,EACjB5xwB,KAAK0gK,MAAMoliB,YAAY9lsB,SAElB4qmB,KAAQ5qmB,KAAK+e,QAAQ8iI,SACtB7hJ,KAAK6hJ,OAAO,QAIpB4/F,OAAO93O,EAAGmqD,IACN,MAAM41H,EAAO,IAAI+rhB,EACjB/rhB,SAAK+3D,OAAO93O,EAAGmqD,IAEf9zD,KAAK0gK,MAAMj7J,KAAKikL,GAET1pL,KAGX0hP,OAAO/3O,EAAGmqD,IACN,OAAI9zD,KAAK0gK,MAAM36J,OAAS,MACpBuxH,KAAKt3H,KAAK0gK,OAAOghF,OAAO/3O,EAAGmqD,IAGxB9zD,KAGX21sB,QAAQ11C,EAAY6S,GAAWr6lB,GAC3B,OAAIz4E,KAAK0gK,MAAM36J,OAAS,MACpBuxH,KAAKt3H,KAAK0gK,OAAOi1iB,QAAQ11C,EAAY6S,GAAWr6lB,GAG7Cz4E,KAGXo/oB,IAAI1sjB,EAAYC,GAAU0sjB,EAASC,EAASwyF,GACxC,OAAI9xuB,KAAK0gK,MAAM36J,OAAS,MACpBuxH,KAAKt3H,KAAK0gK,OAAO0+e,IAAI1sjB,EAAYC,GAAU0sjB,EAASC,EAASwyF,GAG1D9xuB,KAGX8svB,MAAMxitB,EAAKslpB,GAAIC,EAAIukD,EAAUC,EAAOp4kB,GAChC,OAAIj8J,KAAK0gK,MAAM36J,OAAS,IACpBuxH,OAAKt3H,KAAK0gK,OAAOoslB,MAAMxitB,EAAKslpB,GAAIC,EAAIukD,EAAUC,EAAOp4kB,GAGlDj8J,KAGXgrB,QACI,OAAIhrB,KAAK0gK,MAAM36J,OAAS,IACpBuxH,OAAKt3H,KAAK0gK,OAAO11I,QAGdhrB,KAGXs1sB,MAAMvwkB,GACF,OAAO0soB,OAAoBzxwB,KAAK0gK,OAAO,EAAM37B,GAGjDywkB,UACI,OAAOi8D,OAAoBzxwB,KAAK0gK,OAAO,GAG3CnvD,eAAe94B,GACX,MAAMioF,GAAQ1gK,KAAK0gK,MAEnB,QAASv2H,EAAM,EAAGA,EAAMu2H,GAAM36J,OAAQokC,IAClC,GAAIu2H,GAAMv2H,GAAKonE,eAAe94B,GAC1B,OAAO,EAGf,OAAO,EAGXm9nB,UAAUn9nB,GACN,MAAMioF,GAAQ1gK,KAAK0gK,MACbhqJ,EAAQ1W,KAAK+e,QAAQ8iI,OAAOnrI,MAElC,QAASyzB,EAAM,EAAGA,EAAMu2H,GAAM36J,OAAQokC,IAClC,GAAIu2H,GAAMv2H,GAAKyrqB,UAAUn9nB,EAAO/hE,GAC5B,OAAO,EAGf,OAAO,EAGXq6vB,aAAa3+B,GACT,OAAOs/B,OAA2B1xwB,KAAK0gK,MAAO1gK,KAAK4rvB,iBAAiBxZ,gJCvV5E,mBAAmBj9B,MAAU6iC,OAAWt9hB,IAAS,CAAE,eAC3CwpK,eACA,MAAO,OAGXpkX,YAAY8e,EAASsrB,EAAW,IAAIgwC,IAASn7D,EAAU,IACnDS,MAAMT,GAEN/e,KAAK4e,QAAQA,GACb5e,KAAKkqC,SAASA,GAETlqC,KAAK+e,QAAQsmI,OACdrlJ,KAAK+e,QAAQsmI,KAfJ,sBAkBRuld,KAAQ5qmB,KAAK+e,QAAQrQ,OACtB1O,KAAK0O,KAlBI,QAsBjBkQ,QAAQjb,GACJ,OAAIinmB,OAAQjnmB,IACR3D,KAAK+e,QAAQsT,IAAI,UAAW1uB,GACrB3D,MAGJA,KAAK+e,QAAQF,IAAI,WAG5B8qY,UAKI,OAJgB03V,OAAYrhvB,KAAK4e,UAAW,CACxCymI,KAAMrlJ,KAAK+e,QAAQF,IAAI,UAM/Bq/T,OACI,MAAMlvR,EAAOhvD,KAAK2pZ,UACZ9gU,EAAM7oF,KAAKkqC,WAAWslF,QAC5B,OAAO,IAAIkwW,IAAK72Y,EAAK,CAAE75B,EAAKt4C,MAAOs4C,EAAKzkD,SAG5C+lJ,KAAK8hlB,GACD,MAAMuZ,GAAiB3V,OAASh2uB,KAAK4rvB,iBAAiBxZ,IACtD,OAAOpyuB,KAAKk+U,OAAO5tL,KAAKq7lB,GAG5Bn2C,UACI,OAAOx1sB,KAAKk+U,OAAO5tL,OAGvB/+C,eAAe94B,GACX,OAAOz4E,KAAKk+U,OAAOntO,cAAct4B,IAIzC,QAAe3vD,iECnEA,WAA6B+/C,EAAU2nF,EAAgB4hlB,GAClE,IAAI2/B,EAEJ,QAASpjwB,EAAI,EAAGA,EAAIk6D,EAAS9iE,OAAQ4I,IAAK,CACtC,IAAI+F,EAAUm0D,EAASl6D,GACvB,GAAI+F,EAAQu/T,UAAW,CACnB,IAAIg+b,EAAqBzhnB,EAAiB97I,EAAQ47I,KAAK8hlB,GAAkB19tB,EAAQ8gsB,UAC7Ey8D,IAEIF,EADAA,EACcryS,UAAWqyS,EAAaE,GAExBA,IAM9B,OAAOF,kECjBI,WAAoClpsB,EAAUupqB,GACzD,IAAI2/B,EAEJ,QAASpjwB,EAAI,EAAGA,EAAIk6D,EAAS9iE,OAAQ4I,IAAK,CACtC,IAAI+F,EAAUm0D,EAASl6D,GACvB,GAAI+F,EAAQu/T,UAAW,CACnB,IAAIg+b,EAAqBv9vB,EAAQyyoB,YAAYirF,GACzC6/B,IAEIF,EADAA,EACcryS,UAAWqyS,EAAaE,GAExBA,IAM9B,OAAOF,kECFX,QAfA,gBAAuBlioB,IACnB/vI,YAAYkthB,GACRxtgB,QAEAxf,KAAKgthB,WAAaA,EAClBhthB,KAAKkF,GAAK8nhB,EAAW9nhB,GAErBlF,KAAKm+J,KAAK,CAAE6uX,IAGhB96d,WACI,MAAQ,iBAAiBlyD,KAAKkF,OAASlF,KAAK2gpB,wFCbpD,MAAMsxC,EAAS,6BACTvhnB,EAAO,6HC0Fb,QApFA,gBAA6Bm/D,IACzB/vI,cACI0f,QACAxf,KAAKkywB,cAAgB,GAGzB3gF,SAAS4gF,GACLnywB,KAAK0U,QAAUy9vB,EAGnBjgtB,WACI,MAAQ,SAASlyD,KAAK2gpB,0BAG1ByxH,iBAAiBnpwB,GACb,MAAQwgW,cAAazoU,UAAW/3B,EAEjB,QAAX+3B,EACAhhC,KAAKqywB,eAAe5oa,GACF,WAAXzoU,GACPhhC,KAAKsywB,kBAAkB7oa,GAI/B8oa,iBAAiBzqwB,EAAMkL,GACnB,IAAIkxW,EACJ,MAAa,SAATp8W,EACAo8W,EAAWsuZ,IACK,SAAT1qwB,IACHkL,aAAgBmwtB,IAChBj/W,EAAWuuZ,IACJz/vB,aAAgBqwtB,MACvBn/W,EAAWwuZ,MAGZ,IAAIxuZ,EAASlxW,GAGxBq/vB,eAAe5oa,GACX,QAAS5+S,KAAS4+S,EACdzpW,KAAK2ywB,cAAc9ntB,EAAO4+S,EAAY5+S,IAI9C8ntB,cAAc7qwB,EAAMklhB,GAChB,MAAQt4gB,UAASw9vB,iBAAkBlywB,KAC7BkF,EAAK8nhB,EAAW9nhB,GAChB0twB,EAAUV,EAAchtwB,GAC9B,GAAK0twB,EAWDA,EAAQh7pB,YAXE,CACV,MAAMxyF,EAAOplB,KAAKuywB,iBAAiBzqwB,EAAMklhB,GACzCklP,EAAchtwB,GAAM,CAChBwP,QAAS0Q,EACTwyF,MAAO,GAEX53G,KAAKkxB,OAAO9L,GACR1Q,GACA0Q,EAAKmsqB,SAASvxrB,KAAK0U,UAO/B49vB,kBAAkB7oa,GACd,QAAS5+S,KAAS4+S,EACdzpW,KAAK6ywB,iBAAiBppa,EAAY5+S,IAI1CgotB,iBAAiB7lP,GACb,MAAMklP,EAAgBlywB,KAAKkywB,cACrBhtwB,EAAK8nhB,EAAW9nhB,GAChB0twB,EAAUV,EAAchtwB,GAE1B0twB,IACAA,EAAQh7pB,QACc,IAAlBg7pB,EAAQh7pB,QACR53G,KAAKy+C,OAAOz+C,KAAKi/kB,WAAWn/jB,QAAQ8yvB,EAAQl+vB,SAAU,UAC/Cw9vB,EAAchtwB,uGChFtB,WAAqBwjC,GAChC,MAAMopR,EAAO,IAAIi/X,IAAS,CACtB+hF,cAAc,IAEZxinB,EAAO5nH,EAAMy+mB,cACnB,IAAI4rH,EAAYrquB,EAEhB,GAAI4nH,EAAM,CACN,MAAMjsH,EAASisH,EAAK+mjB,YACd0qB,EAAa,IAAIv5kB,IACvBu5kB,EAAW13tB,WAAUA,SAAYmuC,WAAWnU,EAAO16B,GAAI06B,EAAOyvB,IAC9DiuqB,EAAWvjqB,SAAS/4D,KAAKijC,GACzBqquB,EAAYhxC,EAGhBjwa,EAAK3zJ,KAAK,CAAE40mB,IAEZ,MAAM5isB,EAAO,qCAAqC8hnB,iEAAsEngY,EAAKn1M,iBAE7Hm1M,SAAK2T,UAEEt1P,uFCvBI,WAAmBznC,EAAO3pB,GACrC,IAAIoxD,KAAMy9hB,KAAYllkB,GAEtB,QAAK3pB,IAAYA,EAAQ+iB,OACrBquC,EAAM,gCAA+B44qB,KAAa54qB,KAG/C82d,SAAgBr/gB,QAAQuoD,kGCmCnC,QAxCA,gBAA2B0/D,IACvB/vI,YAAYkthB,GACRxtgB,MAAMwtgB,GAENhthB,KAAKkF,GAAK8nhB,EAAW9nhB,GAErBlF,KAAKgzwB,YAGTA,YACI,MAAMvvH,EAAQzjpB,KAAKgthB,WAAWy2H,MACxB/uoB,EAAU1U,KAAK0U,QAErB,QAASy1B,EAAM,EAAGA,EAAMs5mB,EAAM19oB,OAAQokC,IAAO,CACzC,IAAI8ouB,EAAW,IAAIC,IAAiBzvH,EAAMt5mB,IAC1CnqC,KAAKkxB,OAAO+hvB,GACRv+vB,GACAu+vB,EAAS1hF,SAAS78qB,IAK9Bw4qB,cAAcjkrB,GACM,mBAAZA,EAAE4hD,OACFy3qB,yBAA8BtiuB,MAC9BA,KAAKgzwB,aACc,aAAZ/pwB,EAAE4hD,OACT7qD,KAAKmtrB,QAAQntrB,KAAKmzwB,kBAI1BC,oBACI,OAAOplF,OAAchurB,KAAKmzwB,kBAG9BE,WACI,MAAO,CAAE,gBAAiBrzwB,KAAKgthB,WAAWsvK,YAAc,iBAAmB,iGCZnF,QA1BA,gBAA+BzsjB,IAC3B39E,WACI,MAAQ,SAAQlyD,KAAKszwB,kBAAkBtzwB,KAAKuurB,mBAGhD+kF,eACI,OAAO7kF,OAAW,SAAUzurB,KAAKgthB,WAAW56f,UAGhD49pB,WACI,MAAMhjK,EAAahthB,KAAKgthB,WACxB,MAAO,CACH,CAAE,aAAcA,EAAWztY,SAC3B,CAAE,eAAgBytY,EAAW5ihB,YAIrC8irB,cAAcjkrB,GACM,WAAZA,EAAE4hD,MACF7qD,KAAK66d,KAAK5xd,EAAE4hD,MAAO5hD,EAAEtF,QACF,UAAZsF,EAAE4hD,OAAiC,YAAZ5hD,EAAE4hD,QAChC7qD,KAAK4hvB,IAAI,QAAU34uB,EAAE4hD,MAAO5hD,EAAEtF,uECD1C,QArBA,gBAAiC4vwB,IAC7BrhtB,WACI,MAAQ,uBAAuBlyD,KAAKkF,OAASlF,KAAKozwB,uBAAyBpzwB,KAAK2gpB,oCAGpFwyH,iBACI,MAAMnmP,EAAahthB,KAAKgthB,WAClBhggB,EAAQgggB,EAAWhggB,QACnBsd,EAAM0if,EAAW1if,MASvB,MARc,CACV,CAAE,KAAMtd,EAAMrjB,GACd,CAAE,KAAMqjB,EAAM8mC,GACd,CAAE,KAAMxpB,EAAI3gC,GACZ,CAAE,KAAM2gC,EAAIwpB,GACZ9zD,KAAKqzwB,8DCdjB,QAFiB,uJCUjB,MAAMG,EAAY,YACZC,EAAgB,CAClBh2X,KAAM,YACN/uY,KAAM,QAGV,WAAsB5G,EAAMnE,GACxB,MAAgB,SAATmE,GAA6B,SAATA,KAAqBnE,GAA4B,aAAnBA,EAAMugX,UA+VnE,QA3UA,gBAAmBo+W,IAEfxiuB,YAAYkthB,EAAYjugB,GACpBS,MAAMwtgB,GACNhthB,KAAKypW,YAAc,GAEnBzpW,KAAK+e,QAAUA,EAGnB0mT,UACQzlU,KAAK0U,UACL1U,KAAK0U,QAAQg9tB,WAAa,KAC1B1xuB,KAAK0U,QAAU,MAGnB1U,KAAK0zwB,mBACLl0vB,MAAMimT,UAGVtnK,KAAKt1F,EAAUggB,GACX,QAASl6E,EAAI,EAAGA,EAAIk6D,EAAS9iE,OAAQ4I,IAAK,CACtC,MAAMq+gB,EAAankd,EAASl6D,GACtB6vD,EAAWwud,EAAWxud,SAEtByma,EAAY,IAAIorN,IAASrjK,EAAW9oK,UAAU8oK,EAAYhthB,KAAK+e,UAEjE6rlB,OAAQ/hhB,GACR7oF,KAAKyiuB,SAASx9P,EAAWp8Y,GAEzB7oF,KAAKkxB,OAAO+zc,GAGhBA,EAAU0uS,oBAENn1sB,GAAYA,EAASz4D,OAAS,GAC9Bk/d,EAAU9mU,KAAK3/F,GAGnB,MAAM9pD,EAAU1U,KAAK0U,QACjBA,GACAuwd,EAAUssN,SAAS78qB,EAASm0E,IAKxCipO,OACI,IAAIA,EAAO9xT,KAEX,KAAO8xT,EAAKuqD,QACRvqD,EAAOA,EAAKuqD,OAGhB,OAAOvqD,EAGXy/X,SAAS4gF,EAAYtprB,GACjB,MAAM40E,EAAY97I,SAAS+O,cAAc,UACzCugqB,KAAUxzhB,EACN,eAAiBw0hB,IAAS,mBACtBjyrB,KAAK28G,SACT,UAGJ,MAAMjoG,EAAU+oJ,EAAUs0J,WAAWA,WACjCr9S,KACIk2lB,OAAQ/hhB,GACRsprB,EAAW9zZ,aAAa3pW,EAASy9vB,EAAWlzL,WAAWp2f,IAAQ,MAE/DsprB,EAAWt3tB,YAAYnmC,GAE3B1U,KAAKkjJ,WAAWxuI,IAIxBwuI,WAAWxuI,GACH1U,KAAK0U,UACL1U,KAAK0U,QAAQg9tB,WAAa,MAG9B1xuB,KAAK0U,QAAUA,EACf1U,KAAK0U,QAAQg9tB,WAAa1xuB,KAE1B,MAAMyhI,EAAQzhI,KAAKi/kB,WACnB,QAAStwkB,EAAI,EAAGA,EAAI8yH,EAAM17H,OAAQ4I,IAE9B8yH,EAAM9yH,GAAGu0I,WADUxuI,EAAQuqkB,WAAWtwkB,IAK9C2wC,QACIt/C,KAAK0zwB,mBAED1zwB,KAAK0U,UACL1U,KAAK0U,QAAQ2oC,UAAY,IAG7B,MAAMmhB,EAAWx+D,KAAKi/kB,WACtB,QAAStwkB,EAAI,EAAGA,EAAI6vD,EAASz4D,OAAQ4I,IACjC6vD,EAAS7vD,GAAG82T,UAGhBzlU,KAAKi/kB,WAAa,GAGtBoxJ,aACI,GAAIrwuB,KAAK0U,QAAS,CACd,MAAM+4I,EAAaztJ,KAAK0U,QAAQ+4I,WAC5BA,GACAA,EAAW/vG,YAAY19C,KAAK0U,SAEhC1U,KAAK0U,QAAU,KAGnB8K,MAAM6wtB,aAGVn+qB,WACI,OAAOlyD,KAAK2gpB,iBAGhBhkiB,SACI,OAAO38G,KAAKkyD,WAGhByulB,iBACI,MAAMl/gB,EAAQzhI,KAAKi/kB,WACnB,IAAIxsjB,EAAS,GAEb,QAAS9jB,EAAI,EAAGA,EAAI8yH,EAAM17H,OAAQ4I,IAC9B8jB,GAAUgvG,EAAM9yH,GAAGguG,SAGvB,OAAOlqF,EAGXy6pB,cAAcjkrB,GACV,MAAQ4hD,QAAOlnD,SAAUsF,EAEX,YAAV4hD,EACA7qD,KAAK4hvB,IAAI,UAAWj+uB,EAAQ,GAAK+sE,KAC9BlhB,EAAkB3E,IAAU+otB,EAAa/otB,EAAOlnD,GACnD3D,KAAK6zwB,iBAAiBhptB,EAAOlnD,GACZ,YAAdgG,EACH3J,KAAK66d,KAAK,UAAWl3d,GACJ,WAAVknD,EACP7qD,KAAK4hvB,IAAI,SAAUj+uB,GACF,OAAVknD,IACHlnD,EACA3D,KAAK66d,KAAK,KAAMl3d,GAEhB3D,KAAKqtrB,WAAW,OAIxB7tqB,MAAM0tqB,cAAcjkrB,GAGxB4xd,KAAK71d,EAAMrB,GACH3D,KAAK0U,SACL1U,KAAK0U,QAAQmlG,aAAa70G,EAAMrB,GAIxCwprB,QAAQngd,GACJ,QAASr+N,EAAI,EAAGA,EAAIq+N,EAAMjnO,OAAQ4I,IAC9B3O,KAAK66d,KAAK7tP,EAAMr+N,GAAG,GAAIq+N,EAAMr+N,GAAG,IAIxCizuB,IAAI58uB,EAAMrB,GACF3D,KAAK0U,UACL1U,KAAK0U,QAAQvK,MAAMnF,GAAQrB,GAInCmwwB,OAAOr7oB,GACH,QAAS9pH,EAAI,EAAGA,EAAI8pH,EAAO1yH,OAAQ4I,IAC/B3O,KAAK4hvB,IAAInpnB,EAAO9pH,GAAG,GAAI8pH,EAAO9pH,GAAG,IAIzC0+qB,WAAWrorB,GACHhF,KAAK0U,SACL1U,KAAK0U,QAAQoyJ,gBAAgB9hK,GAIrC+uwB,aAAa1pwB,GACT,MAAM2iO,EAAQ,GACd,OAAI3iO,GACA2iO,EAAMvnO,KAAK,CACP+twB,EACA,UAAYnpwB,EAAU06H,SAASh6H,SAAS,GAAK,MAI9CiiO,EAGX2hd,kBACI,OAAOX,OACHhurB,KAAK+zwB,aAAa/zwB,KAAKgthB,WAAW3ihB,cAI1CkjrB,gBAAgB5prB,GACRA,EACA3D,KAAKmtrB,QAAQntrB,KAAK+zwB,aAAapwwB,IAE/B3D,KAAKqtrB,WAAWmmF,GAIxBxjF,WACI,MAAMjxqB,EAAU/e,KAAKgthB,WAAWjugB,QAC1B5U,EAAQ,CAAE,CAAE,SAAU4U,EAAQu+X,SAEpC,OAAwB,IAApBv+X,EAAQk1T,SACR9pU,EAAM1E,KAAK,CAAE,UAAWirE,MAGrBvmE,EAGXokrB,cACI,SAAOE,KAAW,SAASF,OAAYvurB,KAAKgwrB,UAAS,KAGzDxB,gBACI,OAAOC,OAAW,UAAWzurB,KAAKgthB,WAAWjugB,QAAQ3U,SAGzDkkrB,WACI,OAAOG,OAAW,KAAMzurB,KAAKgthB,WAAWjugB,QAAQ7Z,IAGpDyuwB,oBACI,MAAM3mP,EAAahthB,KAAKgthB,WAClBvjL,EAAczpW,KAAKypW,YACzB,GAAIujL,EAAY,CACZ,MAAMjugB,EAAUiugB,EAAWjugB,QAC3B,IAAIi1vB,EAEJ,QAASnptB,KAAS4otB,EAAe,CAC7B,IAAIx6iB,EAAal6M,EAAQF,IAAIgsC,GACzBouK,GAAc26iB,EAAa/otB,EAAOouK,KAClCwwI,EAAY5+S,GAASouK,EACrB+6iB,GAAiB,GAGrBA,GACAh0wB,KAAKoywB,iBAAiB,CAClBpxuB,OAAQ,MACRyoU,YAAaA,KAM7B2oa,iBAAiBnpwB,GACTjJ,KAAKq8W,QACLr8W,KAAKq8W,OAAO+1Z,iBAAiBnpwB,GAIrC4qwB,iBAAiB/rwB,EAAMnE,GACnB,MAAM8lW,EAAczpW,KAAKypW,YACnBpjU,EAAUojU,EAAY3hW,GACtB+yd,EAAO44S,EAAc3rwB,GACrBmxN,EAAa,GACf5yL,IACA4yL,EAAWnxN,GAAQu+B,EACnBrmC,KAAKoywB,iBAAiB,CAClBpxuB,OAAQ,SACRyoU,YAAaxwI,WAEVwwI,EAAY3hW,IAGvB6B,GAKIsvN,EAAWnxN,GAAQnE,EACnB3D,KAAKoywB,iBAAiB,CAClBpxuB,OAAQ,MACRyoU,YAAaxwI,IAEjBwwI,EAAY3hW,GAAQnE,EACpB3D,KAAK66d,KAAKA,EAAM76d,KAAKi0wB,OAAOtwwB,EAAMuB,MAV9BmhC,GACArmC,KAAKqtrB,WAAWxyN,GAa5B64S,mBAGI1zwB,KAAKoywB,iBAAiB,CAClBpxuB,OAAQ,SACRyoU,YAJgBzpW,KAAKypW,cAMzBzpW,KAAKypW,YAAc,GAGvBilV,oBACI,OAAOV,OAAchurB,KAAKk0wB,kBAG9BA,iBACI,MAAMzqa,EAAczpW,KAAKypW,YACnBz8H,EAAQ,GAEd,QAASniL,KAAS4+S,EACdz8H,EAAMvnO,KAAK,CAAEguwB,EAAc5otB,GAAQ7qD,KAAKi0wB,OAAOxqa,EAAY5+S,GAAO3lD,MAGtE,OAAO8nO,EAGXiniB,OAAO/uwB,GACH,MAAM4twB,GAAgB9ywB,KAAK+e,SAAW,IAAI+zvB,aACpCqB,EAAWn0wB,KAAKusB,UAAUhB,QAAQ,KAAM,OAE9C,MAAQ,OADKunvB,EAAe,GAAKqB,KACRjvwB,KAG7BqnB,UACI,OAxVR,aACI,MAAMtV,EAAO0K,SAASksI,qBAAqB,QAAQ,GACnD,IAAIl9H,EAAOhP,SAASyiB,SAASzT,KACzB7R,EAAM,GAEV,GAAI7H,KAAU4ne,aAAmB,IAAI9O,KAAM,CACvC,MAAMqkS,EAAYzjvB,EAAK7Q,QAAQ,MACb,IAAds0vB,IACAzjvB,EAAOA,EAAKmD,UAAU,EAAGsgvB,IAG7Bt1vB,EAAM6R,EAGV,OAAO7R,EA0UIyN,mECvVf,QAnBA,gBAAiCgnvB,IAC7BrhtB,WACI,MAAQ,uBAAuBlyD,KAAKkF,OAASlF,KAAKozwB,uBAAwBpzwB,KAAK2gpB,oCAGnFwyH,iBACI,MAAMnmP,EAAahthB,KAAKgthB,WAClB39c,EAAS29c,EAAW39c,SACpBojB,EAASu6b,EAAWv6b,SAO1B,MANc,CACV,CAAE,KAAMpjB,EAAO1lE,GACf,CAAE,KAAM0lE,EAAOvb,GACf,CAAE,IAAK2+B,GACPzyF,KAAKqzwB,mGCcjB,QAzBA,gBAAuBxjoB,IACnB/vI,YAAYif,GACRS,QACAxf,KAAK+e,QAAUA,EACf/e,KAAK06N,KAAO,IAAI25iB,IAGpB9iF,SAAS4gF,GACLnywB,KAAK0U,QAAUy9vB,EACfnywB,KAAK06N,KAAK62d,SAAS4gF,EAAWhhF,mBAGlC7xoB,QACIgjrB,yBAA8BtiuB,MAGlCkyD,WACI,OAAOlyD,KAAK06N,KAAK/9G,SAAW38G,KAAK2gpB,iBAGrCyxH,iBAAiBnpwB,GACbjJ,KAAK06N,KAAK03iB,iBAAiBnpwB,mECvBpB,WAAuB+jO,GAClC,IAAIv6M,EAAS,GACb,QAAS9jB,EAAI,EAAGA,EAAIq+N,EAAMjnO,OAAQ4I,IAC9B8jB,MAAUg8pB,KAAWzhd,EAAMr+N,GAAG,GAAIq+N,EAAMr+N,GAAG,IAG/C,OAAO8jB,kECNI,WAAoBztB,EAAMrB,GACrC,SAAQinmB,KAAQjnmB,IAAoB,OAAVA,EAAmB,IAAIqB,MAAWrB,MAAa,mECD9D,WAAqBqpO,GAChC,IAAIv6M,EAAS,GACb,QAAS9jB,EAAI,EAAGA,EAAIq+N,EAAMjnO,OAAQ4I,IAAK,CACnC,IAAIhL,EAAQqpO,EAAMr+N,GAAG,MACjBi8lB,KAAQjnmB,KACR8uB,GAAUu6M,EAAMr+N,GAAG,GAAK,IAAMhL,EAAQ,KAI9C,GAAe,KAAX8uB,EACA,OAAOA,gECVf,IAAIw+pB,EAAY,SAASxzhB,EAAWttF,GAChCstF,EAAUpgH,UAAY8yB,GAG1B,GAAwB,oBAAbxuD,SAA0B,CACjC,MAAM2yvB,EAAe,eAAiBriF,IAAS,WACzCsiF,EAAgB5yvB,SAAS+O,cAAc,OACvC8jvB,EAAiC,oBAAdC,UAEzBF,EAAcl3tB,UAAYi3tB,EAEtBE,GAAaD,EAAcxid,WAAW2id,eAAiBziF,MACvDhB,EAAY,SAASxzhB,EAAWttF,GAE5B,MAAMwksB,GADS,IAAIF,WACKG,gBAAgBzksB,EAAK,YACvC0ksB,EAAclzvB,SAASmzvB,UAAUH,EAAS7vuB,iBAEhD24H,EAAUpgH,UAAY,GACtBogH,EAAU5iH,YAAYg6tB,KAKlC,QAAe5jF,iECoCf,QA3DA,gBAAuB10C,IACnBz8oB,YAAYkvD,GACRxvC,QAEAxf,KAAKm5jB,MAAQnqgB,EACbhvD,KAAK+0wB,QAAU,EACf/0wB,KAAKmtW,KAAO,GAGhBhoR,IAAItyE,EAAKlP,GACL,MAAMgC,EAAM3F,KAAKmtW,KACXz1P,EAAQ,CAAE7kG,IAAKA,EAAKlP,MAAOA,GAEjCgC,EAAIkN,GAAO6kG,EAEX13G,KAAUg1wB,OAGNh1wB,KAAKi1wB,MAAMC,MAAQx9pB,EACnBA,EAAMy9pB,MAAQn1wB,KAAKi1wB,MACnBj1wB,KAAKi1wB,MAAQv9pB,GAJb13G,KAAKg1wB,MAAQh1wB,KAAKi1wB,MAAQv9pB,EAO9B13G,KAAS+0wB,SAAW/0wB,KAAKm5jB,OACrBxzjB,EAAI3F,KAAKg1wB,MAAMniwB,KAAO,KACtB7S,KAAKg1wB,MAAQh1wB,KAAKg1wB,MAAME,MACxBl1wB,KAAKg1wB,MAAMG,MAAQ,MAEnBn1wB,KAAK+0wB,UAIbl2vB,IAAIhM,GACA,MAAM6kG,EAAQ13G,KAAKmtW,KAAKt6V,GAExB,GAAI6kG,EACA,OAAIA,IAAU13G,KAAKg1wB,OAASt9pB,IAAU13G,KAAKi1wB,QACvCj1wB,KAAKg1wB,MAAQt9pB,EAAMw9pB,MACnBl1wB,KAAKg1wB,MAAMG,MAAQ,MAGnBz9pB,IAAU13G,KAAKi1wB,QACXv9pB,EAAMy9pB,QACNz9pB,EAAMy9pB,MAAMD,MAAQx9pB,EAAMw9pB,MAC1Bx9pB,EAAMw9pB,MAAMC,MAAQz9pB,EAAMy9pB,OAG9Bz9pB,EAAMy9pB,MAAQn1wB,KAAKi1wB,MACnBv9pB,EAAMw9pB,MAAQ,KAEdl1wB,KAAKi1wB,MAAMC,MAAQx9pB,EACnB13G,KAAKi1wB,MAAQv9pB,GAGVA,EAAM/zG,uECtDV,WAAqBmH,EAAMX,EAAOmzpB,GAC7C,OAAO83G,oBAA4BtqwB,EAAMX,EAAOmzpB,yFCKpD,MAAMz3N,EAAkB,CACpBwvU,mBAAoB,GAGxB,IAAIC,EAEoB,oBAAb3zvB,WACP2zvB,EAAoB3zvB,SAAS+O,cAAc,OAC3C4kvB,EAAkBnrwB,MAAMwyC,QAAU,wQAKtC,gBAA0B4/lB,IACtBz8oB,YAAYif,GACRS,QAEAxf,KAAKu1wB,OAAS,IAAIC,IAAS,KAC3Bx1wB,KAAK+e,QAAUlZ,OAAOw0D,OAAO,GAAIwrY,EAAiB9mb,GAGtD4qY,QAAQ7+Y,EAAMX,EAAO4U,EAAU,IAC3B,GAAI,MAAOjU,EACP,MA1BD,CAAE4L,MAAO,EAAGnM,OAAQ,EAAGi8oB,SAAU,GA6BpC,MAAMivH,GAAWv6H,QAAU/woB,GACrBk7W,KAAWqwZ,MAAQ5qwB,EAAO2qwB,GAC1BE,EAAe31wB,KAAKu1wB,OAAO12vB,IAAIwmW,GAErC,GAAIswZ,EACA,OAAOA,EAGX,MAAM3mtB,EArCH,CAAEt4C,MAAO,EAAGnM,OAAQ,EAAGi8oB,SAAU,GAsC9B8W,EAAav+oB,EAAQk9G,KAAOq5oB,EAC5BM,EAAiB51wB,KAAK61wB,kBAAkBruW,WAAU,GAExD,QAAS30Z,KAAO1I,EAAO,CACnB,IAAIxG,EAAQwG,EAAM0I,QACG,IAAVlP,IACP25pB,EAAWnzpB,MAAM0I,GAAOlP,GAIhC,MAAMmywB,GAAoC,IAA1B/2vB,EAAQoxqB,eAA0BA,QAAcrlrB,GAAQkoB,OAAOloB,GAE/EwypB,SAAWtnS,YAAc8/Y,EACzBx4G,EAAWzinB,YAAY+6tB,GACvBj0vB,SAASgF,KAAKk0B,YAAYyinB,GAEtBw4G,EAAQ/vwB,SACRipD,EAAKt4C,MAAQ4mpB,EAAW/3f,YAAcvlK,KAAK+e,QAAQs2vB,mBACnDrmtB,EAAKzkD,OAAS+ypB,EAAW12mB,aACzBoI,EAAKw3lB,SAAWovH,EAAexnpB,UAAYpuH,KAAK+e,QAAQs2vB,oBAGxDrmtB,EAAKt4C,MAAQ,GAAKs4C,EAAKzkD,OAAS,GAChCvK,KAAKu1wB,OAAOpwrB,IAAIkgS,EAAUr2T,GAG9BsumB,EAAW7vgB,WAAW/vG,YAAY4/mB,GAE3BtumB,EAGX6mtB,kBACI,MAAMntH,EAAS/moB,SAAS+O,cAAc,OACtCg4nB,SAAOv+oB,MAAMwyC,QAAU,0DACnB38C,KAAK+e,QAAQs2vB,mBAAqB,eAAiBr1wB,KAAK+e,QAAQs2vB,mBAAqB,uBAElF3sH,GAIf0sH,EAAY/uuB,QAAU,IAAI+uuB,EAE1B,QAAeA,qECrFf,MAAMW,EAAgB,eAGtB,WAAuBjrwB,GACnB,OAAOkoB,OAAOloB,GAAMygB,QAAQwqvB,EAHlB,KAMd,WAAmBltwB,GACf,MAAM6zT,EAAQ,GACd,QAAS7pT,KAAOhK,EACZ6zT,EAAMj3T,KAAKoN,EAAMhK,EAAOgK,IAG5B,OAAO6pT,EAAM5iT,OAAO2N,KAAK,IAK7B,WAAiBlF,GAGb,IAAI09Q,EAAO,WAEX,QAAStxR,EAAI,EAAGA,EAAI4T,EAAIxc,SAAU4I,EAC9BsxR,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IACzEA,GAAQ19Q,EAAIqvN,WAAWjjO,GAG3B,OAAOsxR,IAAS,kCC5BL,WAAgB/4R,EAAO4U,GAClC5U,SAAMzB,KAAKkuB,MAAMzsB,EAAO4U,GACjB5U,mECAX,MAAM8uwB,EAAW,CACb,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,OAAW,GAAO,OAAW,IAAO,OAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,IAAO,KAGI,WAAuBlowB,GAClC,MAAMzH,EAAS,CAAE,IACF,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACzC,GAAM,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACzC,EAAM,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GAExD,IAAI4vwB,EAAQ,GACZ,KAAOnowB,EAAI,GACHA,EAAIzH,EAAO,GACXA,EAAOsjF,SAEPssrB,GAASD,EAAS3vwB,EAAO,IACzByH,GAAKzH,EAAO,IAGpB,OAAO4vwB,kCC9BI,WAAoBvhwB,EAASqkG,GACxC,QAASqqP,KAAarqP,EAAQ,CAC1B,MAAM4xlB,EAAavnW,EAAU1+T,OAAO1tB,MAAM,KAC1C,QAASmzB,EAAM,EAAGA,EAAMwgqB,EAAW5ksB,OAAQokC,IACvCz1B,EAAQc,iBAAiBm1rB,EAAWxgqB,GAAM4uE,EAAOqqP,IAAY,wFCJzE,MAAM8ya,EAAahpwB,KAAK45E,GAAK,IACvBsvpB,EAAU9nrB,OAAO0qlB,UACjBq9F,GAAW/nrB,OAAO0qlB,yCCFT,aACX,IAAIjyG,EAAWC,EACf,MAAMn1gB,EAAU,IAAIxT,QAAQ,CAACuJ,EAASD,KAClCo/gB,EAAaj0hB,IACT+e,EAAQm0V,OAAS,WACjBp+V,EAAQ9U,GACD+e,GAEXm1gB,EAAYl0hB,IACR+e,EAAQm0V,OAAS,WACjBr+V,EAAO7U,GAEA+e,KAGfA,SAAQm0V,OAAS,UACjBn0V,EAAQjK,QAAUm/gB,EAClBl1gB,EAAQlK,OAASq/gB,EACjBn1gB,EAAQ3nB,MAAQ,IAAM2nB,EAAQm0V,OAEvBn0V,kDClBI,WAAiBluB,GAC5B,YAHc,IAGAA,mECHlB,IAAIwywB,EAAQ,EAEG,aACX,MAAO,OAASA,oECDL,WAAarroB,GACxB,OAAOA,EAAUoroB,qCCHN,WAAuBxhwB,GAClC,MAAMunH,EAAMvnH,EAAQy0T,wBAEdrkS,EAAkBnjB,SAASmjB,gBAEjC,MAAO,CACHqpF,IAAK8N,EAAI9N,KAAOh5G,OAAOonhB,aAAez3f,EAAgBirW,YAAcjrW,EAAgBq3f,WAAa,GACjG/sd,KAAM6sD,EAAI7sD,MAAQj6D,OAAOqnhB,aAAe13f,EAAgBgrW,aAAehrW,EAAgBs3f,YAAc,mFCL9F,WAAwB1nhB,GACnC,MAAQuB,cAAa4oD,eAAemynB,OAAct8qB,EAAS,CAAE,cAAe,eAC5E,MAAO,CACHy5G,IAAKxpF,WAAWk6B,GAChBuQ,KAAMzqC,WAAW1uB,oECJzB,MAAM0loB,EAAe,iBAYrB,WAAyBjnoB,GACrB,MAAMrK,EAAYw6B,iBAAiBnwB,GAASrK,UAE5C,MAAkB,SAAdA,EACOqxoB,WAdf,WAAqBE,GACjB,MAAMr6nB,EAAQq6nB,EAAar6nB,MAAMo6nB,GACjC,GAAc,OAAVp6nB,GAAmC,IAAjBA,EAAMxb,OACxB,OAAO21oB,WAGX,MAAMG,EAAUt6nB,EAAM,GAAGvK,MAAM,KAAKrR,IAAIgE,GAAKg7B,WAAWh7B,IACxD,OAAO,IAAI+xoB,OAAUG,GAUdC,CAAYzxoB,GAGR,WAAsBqK,GACjC,IAAKA,EACD,OAAOgnoB,WAGX,IAAI32gB,EAASinkB,EAAgBt3rB,GACzB2nW,EAAS3nW,EAAQu7X,cACrB,KAAO5zB,GAAQ,CACX,MAAM4vV,EAAeD,EAAgB3vV,GACrCt3O,EAASA,EAAOmnkB,aAAaD,GAC7B5vV,EAASA,EAAO4zB,cAGpBlrQ,SAAO7yG,EAAI6yG,EAAO9kH,EAAI8kH,EAAO97H,EAAI87H,EAAOn/H,EAAI,EACrCm/H,6ECnCX,WAAmBphI,GACf,OAAIwT,MAAMxT,GACCA,EAEJA,EAAQ,KAGJ,WAAqB+Q,EAASs6C,GACzC,IAAIA,EAWG,CACH,MAAMA,GAAOgioB,OAAct8qB,EAAS,CAAE,QAAS,WAE/C,MAAO,CACHgC,MAAO9S,SAASorD,EAAKt4C,MAAO,IAC5BnM,OAAQ3G,SAASorD,EAAKzkD,OAAQ,KAhB5B,CACN,MAAQmM,QAAOnM,UAAWykD,GAEtB47iB,OAAQl0lB,KACRhC,EAAQvK,MAAMuM,MAAQ0/vB,EAAU1/vB,OAGhCk0lB,KAAQrgmB,KACRmK,EAAQvK,MAAMI,OAAS6rwB,EAAU7rwB,qCCnB9B,WAAuBmK,EAAS+jH,GAC3C,MAAMlmH,EAAS,GACTpI,EAAQgL,OAAO0vB,iBAAiBnwB,IAAY,GAC5CyloB,EAAc7roB,MAAMqxB,QAAQ84F,GAAUA,EAAS,CAAEA,GAEvD,QAAStuF,EAAM,EAAGA,EAAMgwmB,EAAYp0oB,OAAQokC,IAAO,CAC/C,IAAI0gB,EAAQsvlB,EAAYhwmB,GACxB53B,EAAOs4C,GAAS1gD,EAAM0gD,GAG1B,OAAOt4C,kFCRX,MAAM8jwB,EAAU,oEAED,WAAsBzjvB,GACjC,IAAIH,EAAS,GACT9jB,EAAI,EAER,MAAM2nwB,KAAWC,MAAW3jvB,GAE5B,KAAOjkB,EAAI2nwB,EAASvwwB,QAAQ,CACxB,IAAI86e,EAAOy1R,EAAS1kiB,WAAWjjO,KAC3Bmye,EAAOw1R,EAAS1kiB,WAAWjjO,KAC3Boye,EAAOu1R,EAAS1kiB,WAAWjjO,KAE3Bqye,EAAOH,GAAQ,EACfI,GAAgB,EAAPJ,IAAa,EAAMC,GAAQ,EACpCI,GAAgB,GAAPJ,IAAc,EAAMC,GAAQ,EACrCI,EAAc,GAAPJ,EAEP5pe,MAAM2pe,GACNI,EAAOC,EAAO,GACPhqe,MAAM4pe,KACbI,EAAO,IAGX1ud,EAASA,EACL4jvB,EAAQjiuB,OAAO4sc,GAAQq1R,EAAQjiuB,OAAO6sc,GACtCo1R,EAAQjiuB,OAAO8sc,GAAQm1R,EAAQjiuB,OAAO+sc,GAG9C,OAAO1ud,sEC/BX,MAAMQ,EAAeD,OAAOC,aAEfmvuB,EAAM,WAGZ,WAAoBxvuB,GACvB,IAAIH,EAAS,GAEb,QAAS9jB,EAAI,EAAGA,EAAIikB,EAAM7sB,OAAQ4I,IAAK,CACnC,IAAIqd,EAAO4G,EAAMg/M,WAAWjjO,GAE5B,GAAI,OAAUqd,GAAQA,GAAQ,MAAQ,CAClC,MAAMwqvB,EAAKxqvB,EACLkjX,EAAMt8W,EAAMg/M,aAAajjO,GAE1BwI,MAAM+3X,KAGPljX,EAAuB,MAAfwqvB,EAAK,QACLtnY,EAAM,OAAU,OAI5BljX,EAAO,IAEPyG,GAAUQ,EAAajH,GAChBA,EAAO,MAEdyG,GAAUQ,EAAa,IAAQjH,IAAS,GACxCyG,GAAUQ,EAAa,IAAe,GAAPjH,IAC5BxgB,EAAW,OAEdinB,GAAUQ,EAAa,IAAQjH,IAAS,IACxCyG,GAAUQ,EAAa,IAAQjH,IAAS,EAAI,IAC5CyG,GAAUQ,EAAa,IAAe,GAAPjH,IACxBA,EAAO,UAEdyG,GAAUQ,EAAa,IAAQjH,IAAS,IACxCyG,GAAUQ,EAAa,IAAQjH,IAAS,GAAK,IAC7CyG,GAAUQ,EAAa,IAAQjH,IAAS,EAAI,IAC5CyG,GAAUQ,EAAa,IAAe,GAAPjH,IAIvC,OAAOyG,EAGX,WAAoBgkvB,GAChB,OAAOxjvB,EAAawjvB,GAAY,GAAKxjvB,EAAwB,IAAXwjvB,GAI/C,WAAuB7jvB,GAC1B,IAAIH,EAAS,GAEb,QAAS9jB,EAAI,EAAGA,EAAIikB,EAAM7sB,OAAQ4I,IAAK,CACnC,MAAMsR,EAAI2S,EAAMg/M,WAAWjjO,GAE3B,GAAIsR,EAAI,MACJwS,GAAUikvB,EAAWz2vB,OAClB,CACH,MACM02vB,EAAkC,OAAxB12vB,EAAI,MAAW,MAC/BwS,GAAUikvB,EAF2B,OAAtBz2vB,EAAI,OAAY,KAG/BwS,GAAUikvB,EAAWC,IAI7B,OAAOlkvB,iEClEI,WAA0BxpB,GACrC,OAAI2hmB,QAAS3hmB,EAAEU,GAAK,IAAIy6B,UACb,CACHz6B,EAAGV,EAAEU,EAAEy6B,SACP0vB,EAAG7qD,EAAE6qD,EAAE1vB,UAIR,CACHz6B,EAAGV,EAAEupY,OAASvpY,EAAEkwV,SAAW,EAC3BrlS,EAAG7qD,EAAEwpY,OAASxpY,EAAEowV,SAAW,kCCZpB,WAAsBpwV,EAAI,IACrC,OAAOA,EAAEmpjB,MAAQnpjB,EAAEmpjB,MAAMwkN,aAAe3twB,EAAEP,uFCC/B,WAAuB62I,GAClC,MAAiB,KAAVA,GAA0B,OAAVA,GAA4B,SAAVA,GAA8B,gBAAVA,KAA4Bqrd,OAAQrrd,mCCHtF,WAAct1G,GACzB,GAAIA,EACA,OAAOA,EAAMA,EAAMlkC,OAAS,mDCFrB,WAAoBpC,EAAO8uC,EAAKjkC,GAC3C,OAAOtB,KAAKsB,IAAItB,KAAKulC,IAAI9uC,EAAO6K,GAAMikC,mDCK3B,WAAmBtgB,EAAGg4Z,GACjC,OAAIh4Z,EAAEpsB,OAAS,EACJosB,EAAEvjB,QAmBL,WAAcujB,GAClB,GAAIA,EAAEpsB,QAAU,EACZ,OAAOosB,EAEX,IAAI0K,EAAI3vB,KAAKC,MAAMglB,EAAEpsB,OAAS,GAC1BqpE,EAAOj9C,EAAEvjB,MAAM,EAAGiuB,GAClByyC,EAAQn9C,EAAEvjB,MAAMiuB,GACpBuyC,OAxBJ,WAAej9C,EAAGD,GAEd,QADI2+B,EAAI,GAAIwwmB,EAAK,EAAGvmB,EAAK,EAAGnsoB,EAAI,EACzB0ypB,EAAKlvoB,EAAEpsB,QAAU+0oB,EAAK5onB,EAAEnsB,QACvBokb,EAAIh4Z,EAAEkvoB,GAAKnvoB,EAAE4onB,KAAQ,EACrBjqlB,EAAEliD,KAAOwjB,EAAEkvoB,KAEXxwmB,EAAEliD,KAAOujB,EAAE4onB,KAGnB,OAAIumB,EAAKlvoB,EAAEpsB,QACP8qD,EAAEprD,KAAKkuB,MAAMk9B,EAAG1+B,EAAEvjB,MAAMyypB,IAExBvmB,EAAK5onB,EAAEnsB,QACP8qD,EAAEprD,KAAKkuB,MAAMk9B,EAAG3+B,EAAEtjB,MAAMksoB,IAErBjqlB,EAWAtgB,CAFP6+B,EAAOt1D,EAAKs1D,GACZE,EAAQx1D,EAAKw1D,IART,CAULn9C,oECjCP,QAJYpZ,KAAKC,KAAO,WACpB,OAAO,IAAID,MAAOuB,yCCDP,WAAoBg3e,GAC/B,OAAOjze,QAAQq8a,IAAI42D,mFCCR,WAAakrJ,GACxB,OAAOA,EAAU05H,qCCKN,WAAevywB,EAAOohP,GACjC,MAAMh7G,EATV,WAAatlE,GACT,OAAIA,EACOv3D,KAAK06F,IAAI,GAAInjC,GAGjB,EAIOmjC,CAAIm9I,GAClB,OAAO73O,KAAK4zF,MAAMn9F,EAAQomI,GAASA,kDCVxB,WAAsBr1H,EAASqkG,EAAS,IACnD,QAAS/zG,KAAQ+zG,EAAQ,CACrB,MAAM4xlB,EAAa3lsB,EAAK0/B,OAAO1tB,MAAM,KACrC,QAASmzB,EAAM,EAAGA,EAAMwgqB,EAAW5ksB,OAAQokC,IACvCz1B,EAAQwoB,oBAAoBytqB,EAAWxgqB,GAAM4uE,EAAO/zG,IAAO,oFCFxD,WAAwBrB,EAAOwoC,GAC1C,OAAOy+jB,OAAQjnmB,GAASA,EAAQwoC,kCCDpC,WAAoBvtB,GAClB5e,KAAK4e,QAAUA,q6BAGjBi4vB,EAAWx2vB,UAAY,CACrBvgB,YAAa+2wB,EAEbtwwB,KAAM,SAASsM,GACb,QAASlE,EAAI,EAAGA,EAAI3O,KAAK4e,QAAQ7Y,OAAQ4I,GAAK,EAC5C,GAAI3O,KAAK4e,QAAQjQ,KAAOkE,EAAK,OAAOlE,EACtC,OAAO,GAMTkQ,IAAK,SAAShM,GACZ,IAAIm2D,EAAQhpE,KAAKuG,KAAKsM,GACtB,OAAgB,GAATm2D,OAAc7jE,EAAYnF,KAAK4e,QAAQoqD,EAAQ,IAOxD09C,OAAQ,SAAS7zG,EAAKlP,EAAOmzwB,GAC3B,IAAIj1vB,EAAOi1vB,GAAUA,GAAUjkwB,EAAM7S,KAAKy+C,OAAOq4tB,GAAU92wB,KACvDgpE,EAAQnnD,EAAKtb,KAAKsM,GAAM+L,GAAUiD,EAAKjD,QAAQhQ,QACnD,OAAa,GAATo6D,EACFpqD,GAAQnZ,KAAKqxwB,GAAUjkwB,EAAKlP,IAE5Bib,GAAQoqD,EAAQ,GAAKrlE,EACjBmzwB,IAAQl4vB,GAAQoqD,GAAS8tsB,IAExB,IAAID,EAAWj4vB,KAKxB6/B,OAAQ,SAAS5rC,GACf,IAAIm2D,EAAQhpE,KAAKuG,KAAKsM,GACtB,IAAa,GAATm2D,EAAa,OAAOhpE,KACxB,IAAI4e,EAAU5e,KAAK4e,QAAQhQ,QAC3BgQ,SAAQkF,OAAOklD,EAAO,GACf,IAAI6tsB,EAAWj4vB,IAKxBm4vB,WAAY,SAASlkwB,EAAKlP,GACxB,OAAO,IAAIkzwB,EAAW,CAAChkwB,EAAKlP,GAAOgwC,OAAO3zC,KAAKy+C,OAAO5rC,GAAK+L,WAK7DmuN,SAAU,SAASl6N,EAAKlP,GACtB,IAAIib,EAAU5e,KAAKy+C,OAAO5rC,GAAK+L,QAAQhQ,QACvCgQ,SAAQnZ,KAAKoN,EAAKlP,GACX,IAAIkzwB,EAAWj4vB,IAMxBo4vB,UAAW,SAASnzB,EAAOhxuB,EAAKlP,GAC9B,IAAIszwB,EAAUj3wB,KAAKy+C,OAAO5rC,GAAM+L,EAAUq4vB,EAAQr4vB,QAAQhQ,QACtDo6D,GAAQiusB,EAAQ1wwB,KAAKs9uB,GACzBjluB,SAAQkF,QAAgB,GAATklD,GAAcpqD,EAAQ7Y,OAASijE,GAAO,EAAGn2D,EAAKlP,GACtD,IAAIkzwB,EAAWj4vB,IAMxBhY,QAAS,SAAShB,GAChB,QAAS+I,EAAI,EAAGA,EAAI3O,KAAK4e,QAAQ7Y,OAAQ4I,GAAK,EAC5C/I,EAAE5F,KAAK4e,QAAQjQ,GAAI3O,KAAK4e,QAAQjQ,EAAI,KAMxCuowB,QAAS,SAASvxwB,GAEhB,OADAA,EAAMkxwB,EAAWzusB,KAAKziE,IACbqpD,KACF,IAAI6ntB,EAAWlxwB,EAAIiZ,QAAQ+0B,OAAO3zC,KAAKo/jB,SAASz5jB,GAAKiZ,UADtC5e,MAOxBkxB,OAAQ,SAASvrB,GAEf,OADAA,EAAMkxwB,EAAWzusB,KAAKziE,IACbqpD,KACF,IAAI6ntB,EAAW72wB,KAAKo/jB,SAASz5jB,GAAKiZ,QAAQ+0B,OAAOhuC,EAAIiZ,UADtC5e,MAOxBo/jB,SAAU,SAASz5jB,GACjB,IAAI4M,EAASvS,KACb2F,EAAMkxwB,EAAWzusB,KAAKziE,GACtB,QAASgJ,EAAI,EAAGA,EAAIhJ,EAAIiZ,QAAQ7Y,OAAQ4I,GAAK,EAC3C4D,EAASA,EAAOksC,OAAO94C,EAAIiZ,QAAQjQ,IACrC,OAAO4D,GAKLy8C,WACF,OAAOhvD,KAAK4e,QAAQ7Y,QAAU,IAQlC8wwB,EAAWzusB,KAAO,SAASzkE,GACzB,GAAIA,aAAiBkzwB,EAAY,OAAOlzwB,EACxC,IAAIib,EAAU,GACd,GAAIjb,EAAO,QAAS+rD,KAAQ/rD,EAAOib,EAAQnZ,KAAKiqD,EAAM/rD,EAAM+rD,IAC5D,OAAO,IAAImntB,EAAWj4vB,IAKxB,QAFiBi4vB,EC9HjB,WAAuB1kvB,EAAGD,EAAG22D,GAC3B,QAASl6E,EAAI,GAAIA,IAAK,CACpB,GAAIA,GAAKwjB,EAAEisc,YAAczvd,GAAKujB,EAAEksc,WAC5B,OAAOjsc,EAAEisc,YAAclsc,EAAEksc,WAAa,KAAOv1Y,EAEjD,IAAIsurB,EAAShlvB,EAAEssC,MAAM9vD,GAAIyowB,GAASllvB,EAAEusC,MAAM9vD,GAC1C,GAAIwowB,GAAUC,GAAd,CAEA,IAAKD,EAAOE,WAAWD,IAAW,OAAOvurB,EAEzC,GAAIsurB,EAAOG,QAAUH,EAAOrswB,MAAQsswB,GAAOtswB,KAAM,CAC/C,QAAS02F,GAAI,EAAG21qB,EAAOrswB,KAAK02F,KAAM41qB,GAAOtswB,KAAK02F,IAAIA,KAC9C3Y,IACJ,OAAOA,EAET,GAAIsurB,EAAOv4vB,QAAQowC,MAAQootB,GAAOx4vB,QAAQowC,KAAM,CAC9C,IAAIttB,GAAQ61uB,EAAcJ,EAAOv4vB,QAASw4vB,GAAOx4vB,QAASiqE,EAAM,GAChE,GAAa,MAATnnD,GAAiB,OAAOA,GAE9BmnD,GAAOsurB,EAAOp4S,cAbUl2Y,GAAOsurB,EAAOp4S,UAiB1C,WAAqB5sc,EAAGD,EAAGslvB,EAAMC,GAC/B,QAASC,EAAKvlvB,EAAEisc,WAAYu5S,GAAKzlvB,EAAEksc,aAAc,CAC/C,GAAU,GAANs5S,GAAiB,GAANC,GACX,OAAOD,GAAMC,GAAK,KAAO,CAACxlvB,EAAGqlvB,EAAMtlvB,EAAGulvB,GAE1C,IAAIN,GAAShlvB,EAAEssC,QAAQi5sB,GAAKN,GAASllvB,EAAEusC,QAAQk5sB,IAAK3otB,GAAOmotB,GAAOp4S,SAClE,GAAIo4S,IAAUC,GAAd,CAKA,IAAKD,GAAOE,WAAWD,IAAW,MAAO,CAACjlvB,EAAGqlvB,EAAMtlvB,EAAGulvB,GAEtD,GAAIN,GAAOG,QAAUH,GAAOrswB,MAAQsswB,GAAOtswB,KAAM,CAE/C,QADI8swB,GAAO,EAAGjvY,GAAUz7X,KAAKulC,IAAI0kuB,GAAOrswB,KAAK/E,OAAQqxwB,GAAOtswB,KAAK/E,QAC1D6xwB,GAAOjvY,IAAWwuY,GAAOrswB,KAAKqswB,GAAOrswB,KAAK/E,OAAS6xwB,GAAO,IAAMR,GAAOtswB,KAAKsswB,GAAOtswB,KAAK/E,OAAS6xwB,GAAO,IAC7GA,KAAQJ,IAAQC,IAElB,MAAO,CAACtlvB,EAAGqlvB,EAAMtlvB,EAAGulvB,GAEtB,GAAIN,GAAOv4vB,QAAQowC,MAAQootB,GAAOx4vB,QAAQowC,KAAM,CAC9C,IAAIttB,GAAQm2uB,EAAYV,GAAOv4vB,QAASw4vB,GAAOx4vB,QAAS44vB,EAAO,EAAGC,EAAO,GACzE,GAAI/1uB,GAAS,OAAOA,GAEtB81uB,GAAQxotB,GAAMyotB,GAAQzotB,QAjBpBwotB,GAAQxotB,GAAMyotB,GAAQzotB,IA0B5B,IAAIwza,EAAW,SAAkB5jd,EAASowC,GAMxC,GALAhvD,KAAK4e,QAAUA,EAIf5e,KAAKgvD,KAAOA,GAAQ,EACR,MAARA,EAAgB,QAASrgD,EAAI,EAAGA,EAAIiQ,EAAQ7Y,OAAQ4I,IACpD3O,KAAKgvD,MAAQpwC,EAAQjQ,GAAGowd,UAG1B+4S,EAAqB,CAAE/ld,WAAY,CAAEgmd,cAAc,GAAO9zS,UAAW,CAAE8zS,cAAc,GAAO35S,WAAY,CAAE25S,cAAc,IAM5Hv1S,EAASnid,UAAU23vB,aAAe,SAAuB5vsB,EAAMqlE,EAAI7nI,EAAGqywB,EAAW57Z,SAC1D,IAAd47Z,IAAuBA,EAAY,GAE1C,QAAStpwB,GAAI,EAAGk6E,GAAM,EAAGA,GAAM4kD,EAAI9+H,KAAK,CACtC,IAAI8vD,GAAQz+D,KAAK4e,QAAQjQ,IAAI27B,GAAMu+C,GAAMpqB,GAAMsga,SAC/C,GAAIz0b,GAAM89B,IAAiD,IAAzCxiE,EAAE64D,GAAOw5sB,EAAYpvrB,GAAKwzR,GAAQ1tW,KAAgB8vD,GAAM7/C,QAAQowC,KAAM,CACtF,IAAIhiC,GAAQ67D,GAAM,EAClBpqB,GAAMu5sB,aAAa9qwB,KAAKsB,IAAI,EAAG45D,EAAOp7C,IACnB9f,KAAKulC,IAAIgsB,GAAM7/C,QAAQowC,KAAMy+E,EAAKzgH,IAClCpnB,EAAGqywB,EAAYjrvB,IAEpC67D,GAAMv+C,KAOVk4b,EAASnid,UAAUq5X,YAAc,SAAsB9zY,GACrD5F,KAAKg4wB,aAAa,EAAGh4wB,KAAKgvD,KAAMppD,IAMlC48d,EAASnid,UAAU63vB,YAAc,SAAsB9vsB,EAAMqlE,EAAI0qoB,EAAgBC,GAC/E,IAAIttwB,GAAO,GAAIutwB,IAAY,EAC3B,YAAKL,aAAa5vsB,EAAMqlE,EAAI,SAAUroH,GAAMyjE,IACtCzjE,GAAKkyvB,QACPxswB,IAAQsa,GAAKta,KAAK8D,MAAM1B,KAAKsB,IAAI45D,EAAMygB,IAAOA,GAAK4kD,EAAK5kD,IACxDwvrB,IAAaF,GACJ/yvB,GAAKqpmB,QAAU2pJ,GACxBttwB,IAA4B,mBAAbstwB,EAA0BA,EAAShzvB,IAAOgzvB,EACzDC,IAAaF,IACHE,IAAajzvB,GAAKkzvB,UAC5BxtwB,IAAQqtwB,EACRE,IAAY,IAEb,GACIvtwB,IAMT03d,EAASnid,UAAU6Q,OAAS,SAAiBmuC,GAC3C,IAAKA,EAAMrQ,KAAQ,OAAOhvD,KAC1B,IAAKA,KAAKgvD,KAAQ,OAAOqQ,EACzB,IAAIi4D,EAAOt3H,KAAKike,UAAW/8d,EAAQm4D,EAAM0yP,WAAYnzS,EAAU5e,KAAK4e,QAAQhQ,QAASD,GAAI,EAKzF,IAJI2oH,EAAKggpB,QAAUhgpB,EAAK+/oB,WAAWnwwB,KACjC0X,EAAQA,EAAQ7Y,OAAS,GAAKuxH,EAAKihpB,SAASjhpB,EAAKxsH,KAAO5D,EAAM4D,MAC9D6D,GAAI,GAECA,GAAI0wD,EAAMzgD,QAAQ7Y,OAAQ4I,KAAOiQ,EAAQnZ,KAAK45D,EAAMzgD,QAAQjQ,KACnE,OAAO,IAAI6zd,EAAS5jd,EAAS5e,KAAKgvD,KAAOqQ,EAAMrQ,OAKjDwza,EAASnid,UAAUm4vB,IAAM,SAAcpwsB,EAAMqlE,GAE3C,GADU,MAANA,IAAcA,EAAKztI,KAAKgvD,MAChB,GAARoZ,GAAaqlE,GAAMztI,KAAKgvD,KAAQ,OAAOhvD,KAC3C,IAAIuS,EAAS,GAAIy8C,EAAO,EACxB,GAAIy+E,EAAKrlE,EAAQ,QAASz5D,GAAI,EAAGk6E,GAAM,EAAGA,GAAM4kD,EAAI9+H,KAAK,CACvD,IAAI8vD,GAAQz+D,KAAK4e,QAAQjQ,IAAI27B,GAAMu+C,GAAMpqB,GAAMsga,SAC3Cz0b,GAAM89B,KACJygB,GAAMzgB,GAAQ99B,GAAMmjG,KAElBhvE,GADAA,GAAM64sB,OACE74sB,GAAM+5sB,IAAItrwB,KAAKsB,IAAI,EAAG45D,EAAOygB,IAAM37E,KAAKulC,IAAIgsB,GAAM3zD,KAAK/E,OAAQ0nI,EAAK5kD,KAEpEpqB,GAAM+5sB,IAAItrwB,KAAKsB,IAAI,EAAG45D,EAAOygB,GAAM,GAAI37E,KAAKulC,IAAIgsB,GAAM7/C,QAAQowC,KAAMy+E,EAAK5kD,GAAM,KAE7Ft2E,EAAO9M,KAAKg5D,IACZzP,GAAQyP,GAAMsga,UAEhBl2Y,GAAMv+C,GAER,OAAO,IAAIk4b,EAASjwd,EAAQy8C,IAG9Bwza,EAASnid,UAAUo4vB,WAAa,SAAqBrwsB,EAAMqlE,GACzD,OAAIrlE,GAAQqlE,EAAa+0V,EAAS/iZ,MACtB,GAARrX,GAAaqlE,GAAMztI,KAAK4e,QAAQ7Y,OAAiB/F,KAC9C,IAAIwie,EAASxie,KAAK4e,QAAQhQ,MAAMw5D,EAAMqlE,KAM/C+0V,EAASnid,UAAUq4vB,aAAe,SAAuB90vB,EAAOwB,GAC9D,IAAIihB,EAAUrmC,KAAK4e,QAAQgF,GAC3B,GAAIyiB,GAAWjhB,EAAQ,OAAOplB,KAC9B,IAAI+kE,EAAO/kE,KAAK4e,QAAQhQ,QACpBogD,GAAOhvD,KAAKgvD,KAAO5pC,EAAK25c,SAAW14b,EAAQ04b,SAC/Ch6Z,SAAKnhD,GAASwB,EACP,IAAIo9c,EAASz9Z,EAAM/V,KAM5Bwza,EAASnid,UAAU02vB,WAAa,SAAqB3xvB,GACnD,OAAO,IAAIo9c,EAAS,CAACp9c,GAAMuuB,OAAO3zC,KAAK4e,SAAU5e,KAAKgvD,KAAO5pC,EAAK25c,WAMpEyD,EAASnid,UAAU0sN,SAAW,SAAmB3nN,GAC/C,OAAO,IAAIo9c,EAASxie,KAAK4e,QAAQ+0B,OAAOvuB,GAAOplB,KAAKgvD,KAAO5pC,EAAK25c,WAKlEyD,EAASnid,UAAU+id,GAAK,SAAa/ja,GACnC,GAAIr/D,KAAK4e,QAAQ7Y,QAAUs5D,EAAMzgD,QAAQ7Y,OAAU,OAAO,EAC1D,QAAS4I,EAAI,EAAGA,EAAI3O,KAAK4e,QAAQ7Y,OAAQ4I,IACrC,IAAK3O,KAAK4e,QAAQjQ,GAAGy0d,GAAG/ja,EAAMzgD,QAAQjQ,IAAO,OAAO,EACxD,OAAO,GAKTmpwB,EAAmB/ld,WAAWlzS,IAAM,WAAc,OAAO7e,KAAK4e,QAAQ7Y,OAAS/F,KAAK4e,QAAQ,GAAK,MAIjGk5vB,EAAmB7zS,UAAUpld,IAAM,WAAc,OAAO7e,KAAK4e,QAAQ7Y,OAAS/F,KAAK4e,QAAQ5e,KAAK4e,QAAQ7Y,OAAS,GAAK,MAItH+xwB,EAAmB15S,WAAWv/c,IAAM,WAAc,OAAO7e,KAAK4e,QAAQ7Y,QAKtEy8d,EAASnid,UAAUo+C,MAAQ,SAAgB76C,GACzC,IAAIolD,EAAQhpE,KAAK4e,QAAQgF,GACzB,IAAKolD,EAAS,MAAM,IAAIk1Z,WAAW,SAAWt6c,EAAQ,qBAAuB5jB,MAC7E,OAAOgpE,GAKTw5Z,EAASnid,UAAUs4vB,WAAa,SAAqB/0vB,GACnD,OAAO5jB,KAAK4e,QAAQgF,IAMtB4+c,EAASnid,UAAUzZ,QAAU,SAAkBhB,GAC7C,QAAS+I,EAAI,EAAG81D,EAAI,EAAG91D,EAAI3O,KAAK4e,QAAQ7Y,OAAQ4I,IAAK,CACnD,IAAI8vD,EAAQz+D,KAAK4e,QAAQjQ,GACzB/I,EAAE64D,EAAOgG,EAAG91D,GACZ81D,GAAKhG,EAAMsga,WAOfyD,EAASnid,UAAUk3vB,cAAgB,SAA0Bl4sB,EAAOwpB,GAChE,YAAa,IAARA,IAAiBA,EAAM,GAEvB0urB,EAAcv3wB,KAAMq/D,EAAOwpB,IAQpC25Y,EAASnid,UAAUw3vB,YAAc,SAAwBx4sB,EAAOwpB,EAAK+vrB,GACjE,YAAa,IAAR/vrB,IAAiBA,EAAM7oF,KAAKgvD,WACf,IAAb4ptB,IAAsBA,EAAWv5sB,EAAMrQ,MAEvC6otB,EAAY73wB,KAAMq/D,EAAOwpB,EAAK+vrB,IAOvCp2S,EAASnid,UAAUytB,UAAY,SAAoB+6C,EAAKiY,GAGtD,QAFiB,IAAVA,IAAmBA,GAAQ,GAEvB,GAAPjY,EAAY,OAAOgwrB,EAAS,EAAGhwrB,GACnC,GAAIA,GAAO7oF,KAAKgvD,KAAQ,OAAO6ptB,EAAS74wB,KAAK4e,QAAQ7Y,OAAQ8iF,GAC7D,GAAIA,EAAM7oF,KAAKgvD,MAAQ65B,EAAM,EAAK,MAAM,IAAIq1Y,WAAY,YAAcr1Y,EAAM,yBAA4B7oF,KAAQ,KAChH,QAAS2O,EAAI,EAAG8wd,EAAS,GAAI9wd,IAAK,CAChC,IAAyB27B,GAAMm1b,EAArBz/d,KAAKy+D,MAAM9vD,GAAuBowd,SAC5C,GAAIz0b,IAAOu+C,EACT,OAAIv+C,IAAOu+C,GAAOiY,EAAQ,EAAY+3qB,EAASlqwB,EAAI,EAAG27B,IAC/CuuuB,EAASlqwB,EAAG8wd,GAErBA,EAASn1b,KAMbk4b,EAASnid,UAAUtV,SAAW,WAAuB,MAAO,IAAM/K,KAAK84wB,gBAAkB,KAEzFt2S,EAASnid,UAAUy4vB,cAAgB,WAA4B,OAAO94wB,KAAK4e,QAAQ6I,KAAK,OAIxF+6c,EAASnid,UAAU6pR,OAAS,WAC1B,OAAOlqS,KAAK4e,QAAQ7Y,OAAS/F,KAAK4e,QAAQjZ,IAAI,SAAUmI,GAAK,OAAOA,EAAEo8R,WAAe,MAKvFs4L,EAASu2S,SAAW,SAAmBjsiB,EAAQnpO,GAC7C,IAAKA,EAAS,OAAO6+d,EAAS/iZ,MAC9B,IAAKnxE,MAAMqxB,QAAQh8B,GAAU,MAAM,IAAIu6d,WAAW,uCAClD,OAAO,IAAIsE,EAAS7+d,EAAMgC,IAAImnO,EAAOksiB,gBAMvCx2S,EAASy2S,UAAY,SAAoBhvuB,GACvC,IAAKA,EAAMlkC,OAAU,OAAOy8d,EAAS/iZ,MAErC,QADIy5rB,EAAQlqtB,EAAO,EACVrgD,EAAI,EAAGA,EAAIs7B,EAAMlkC,OAAQ4I,IAAK,CACrC,IAAIyW,GAAO6kB,EAAMt7B,GACjBqgD,GAAQ5pC,GAAK25c,SACbroU,GAAStxI,GAAKkyvB,QAAUrtuB,EAAMt7B,EAAI,GAAG0owB,WAAWjyvB,KACzC8zvB,IAAUA,EAASjvuB,EAAMr7B,MAAM,EAAGD,IACvCuqwB,EAAOA,EAAOnzwB,OAAS,GAAKqf,GAAKmzvB,SAASW,EAAOA,EAAOnzwB,OAAS,GAAG+E,KAAOsa,GAAKta,OACvEouwB,GACTA,EAAOzzwB,KAAK2f,IAGhB,OAAO,IAAIo9c,EAAS02S,GAAUjvuB,EAAO+kB,IAQvCwza,EAASp6Z,KAAO,SAAeq5D,GAC7B,IAAKA,EAAS,OAAO+gW,EAAS/iZ,MAC9B,GAAIgiD,aAAiB+gW,EAAY,OAAO/gW,EACxC,GAAInzH,MAAMqxB,QAAQ8hG,GAAU,OAAOzhI,KAAKi5wB,UAAUx3oB,GAClD,GAAIA,EAAMurG,MAAS,OAAO,IAAIw1P,EAAS,CAAC/gW,GAAQA,EAAMs9V,UACtD,MAAM,IAAIb,WAAW,mBAAqBz8V,EAAQ,kBAC5BA,EAAMu2oB,aAAe,mEAAqE,MAGlHnywB,OAAOszwB,iBAAkB32S,EAASnid,UAAWy3vB,GAE7C,IAAI9usB,EAAQ,CAACplD,MAAO,EAAGwO,OAAQ,GAC/B,WAAkBxO,EAAOwO,GACvB42C,SAAMplD,MAAQA,EACdolD,EAAM52C,OAASA,EACR42C,EAST,WAAqB72C,EAAGD,GACtB,GAAIC,IAAMD,EAAK,OAAO,EACtB,IAAMC,GAAiB,iBAALA,IACZD,GAAiB,iBAALA,EAAkB,OAAO,EAC3C,IAAI+X,EAAQ37B,MAAMqxB,QAAQxN,GAC1B,GAAI7jB,MAAMqxB,QAAQzN,IAAM+X,EAAS,OAAO,EACxC,GAAIA,EAAO,CACT,GAAI9X,EAAEpsB,QAAUmsB,EAAEnsB,OAAU,OAAO,EACnC,QAAS4I,EAAI,EAAGA,EAAIwjB,EAAEpsB,OAAQ4I,IAAO,IAAKyqwB,EAAYjnvB,EAAExjB,GAAIujB,EAAEvjB,IAAO,OAAO,MACvE,CACL,QAAS81D,KAAKtyC,EAAK,KAAMsyC,KAAKvyC,KAAOknvB,EAAYjnvB,EAAEsyC,GAAIvyC,EAAEuyC,IAAO,OAAO,EACvE,QAAS40sB,MAAOnnvB,EAAK,KAAMmnvB,MAAOlnvB,GAAM,OAAO,EAEjD,OAAO,EAfTqwc,EAAS/iZ,MAAQ,IAAI+iZ,EAAS,GAAI,GAwBlC,IAAI82S,EAAO,SAAcxxwB,EAAMklO,GAG7BhtO,KAAK8H,KAAOA,EAGZ9H,KAAKgtO,MAAQA,GAyGf,WAAsBx1N,GACpB,IAAI6S,EAAM5T,MAAMmd,KAAK5zB,KAAMwX,GAC3B6S,SAAI/J,UAAYi5vB,EAAal5vB,UACtBgK,EAnGTivvB,EAAKj5vB,UAAUm5vB,SAAW,SAAmBnnvB,GAE3C,QADI0yC,EAAM00sB,GAAS,EACV9qwB,EAAI,EAAGA,EAAI0jB,EAAItsB,OAAQ4I,IAAK,CACnC,IAAI0wD,GAAQhtC,EAAI1jB,GAChB,GAAI3O,KAAKoje,GAAG/ja,IAAU,OAAOhtC,EAC7B,GAAIryB,KAAK8H,KAAK4xwB,SAASr6sB,GAAMv3D,MACtBi9D,IAAQA,EAAO1yC,EAAIzjB,MAAM,EAAGD,QAC5B,IAAI0wD,GAAMv3D,KAAK4xwB,SAAS15wB,KAAK8H,MAClC,OAAOuqB,GAEFonvB,GAAUp6sB,GAAMv3D,KAAK6xwB,KAAO35wB,KAAK8H,KAAK6xwB,OACpC50sB,IAAQA,EAAO1yC,EAAIzjB,MAAM,EAAGD,IACjCo2D,EAAKt/D,KAAKzF,MACVy5wB,GAAS,GAEP10sB,GAAQA,EAAKt/D,KAAK45D,KAG1B,OAAK0F,IAAQA,EAAO1yC,EAAIzjB,SACnB6qwB,GAAU10sB,EAAKt/D,KAAKzF,MAClB+kE,GAMTu0sB,EAAKj5vB,UAAUu5vB,cAAgB,SAAwBvnvB,GACrD,QAAS1jB,EAAI,EAAGA,EAAI0jB,EAAItsB,OAAQ4I,IAC5B,GAAI3O,KAAKoje,GAAG/wc,EAAI1jB,IACd,OAAO0jB,EAAIzjB,MAAM,EAAGD,GAAGglC,OAAOthB,EAAIzjB,MAAMD,EAAI,IAClD,OAAO0jB,GAKTinvB,EAAKj5vB,UAAUw5vB,QAAU,SAAkBxnvB,GACzC,QAAS1jB,EAAI,EAAGA,EAAI0jB,EAAItsB,OAAQ4I,IAC5B,GAAI3O,KAAKoje,GAAG/wc,EAAI1jB,IAAO,OAAO,EAClC,OAAO,GAMT2qwB,EAAKj5vB,UAAU+id,GAAK,SAAa/ja,GAC/B,OAAOr/D,MAAQq/D,GACZr/D,KAAK8H,MAAQu3D,EAAMv3D,MAAQsxwB,EAAYp5wB,KAAKgtO,MAAO3tK,EAAM2tK,QAK9DssiB,EAAKj5vB,UAAU6pR,OAAS,WACtB,IAAIxqO,EAAM,CAAC53D,KAAM9H,KAAK8H,KAAK9C,MAC3B,QAASkG,KAAKlL,KAAKgtO,MAAO,CACxBttK,EAAIstK,MAAQhtO,KAAKgtO,MACjB,MAEF,OAAOttK,GAIT45sB,EAAKP,SAAW,SAAmBjsiB,EAAQm0P,GACzC,IAAKA,EAAQ,MAAM,IAAI/C,WAAW,mCAClC,IAAIp2d,EAAOglO,EAAOa,MAAMszP,EAAKn5d,MAC7B,IAAKA,EAAQ,MAAM,IAAIo2d,WAAY,yBAA4B+C,EAAKn5d,KAAQ,mBAC5E,OAAOA,EAAKk6D,OAAOi/Z,EAAKj0P,QAK1BssiB,EAAKQ,QAAU,SAAkB3nvB,EAAGD,GAClC,GAAIC,GAAKD,EAAK,OAAO,EACrB,GAAIC,EAAEpsB,QAAUmsB,EAAEnsB,OAAU,OAAO,EACnC,QAAS4I,EAAI,EAAGA,EAAIwjB,EAAEpsB,OAAQ4I,IAC1B,IAAKwjB,EAAExjB,GAAGy0d,GAAGlxc,EAAEvjB,IAAO,OAAO,EACjC,OAAO,GAMT2qwB,EAAKS,QAAU,SAAkBpsiB,GAC/B,IAAKA,GAAyB,GAAhBA,EAAM5nO,OAAe,OAAOuzwB,EAAKv6uB,KAC/C,GAAI4uM,aAAiB2riB,EAAQ,MAAO,CAAC3riB,GACrC,IAAI5oK,EAAO4oK,EAAM/+N,QACjBm2D,SAAKjrD,KAAK,SAAUqY,EAAGD,GAAK,OAAOC,EAAErqB,KAAK6xwB,KAAOznvB,EAAEpqB,KAAK6xwB,OACjD50sB,GAITu0sB,EAAKv6uB,KAAO,IAYZw6uB,EAAal5vB,UAAYxa,OAAOm8D,OAAOvrD,MAAM4J,YACtBvgB,YAAcy5wB,EACrCA,EAAal5vB,UAAUrb,KAAO,eAK9B,IAAI09d,EAAQ,SAAe9jd,EAASo7vB,EAAWC,GAE7Cj6wB,KAAK4e,QAAUA,EAEf5e,KAAKg6wB,UAAYA,EAEjBh6wB,KAAKi6wB,QAAUA,GAGbC,EAAuB,CAAElrtB,KAAM,CAAE+otB,cAAc,IA6DnD,WAAqBn5vB,EAASwpD,EAAMqlE,GAClC,IAAIhtB,EAAM7hG,EAAQkvB,UAAUs6B,GACxBxkD,EAAQ68F,EAAI78F,MACZwO,GAASquF,EAAIruF,OACbqsC,GAAQ7/C,EAAQ+5vB,WAAW/0vB,GAC3Bu2vB,GAAQv7vB,EAAQkvB,UAAU2/F,GAC1B2soB,GAAUD,GAAMv2vB,MAEpB,GAAIwO,IAAUg2C,GAAQ3J,GAAM64sB,OAAQ,CAClC,GAFa6C,GAAM/nvB,QAEHq7G,IAAO7uH,EAAQ6/C,MAAM27sB,IAAS9C,OAAU,MAAM,IAAIp5S,WAAW,2BAC7E,OAAOt/c,EAAQ45vB,IAAI,EAAGpwsB,GAAMl3C,OAAOtS,EAAQ45vB,IAAI/qoB,IAEjD,GAAI7pH,GAASw2vB,GAAW,MAAM,IAAIl8S,WAAW,2BAC7C,OAAOt/c,EAAQ85vB,aAAa90vB,EAAO66C,GAAMsG,KAAKs1sB,EAAY57sB,GAAM7/C,QAASwpD,EAAOh2C,GAAS,EAAGq7G,EAAKr7G,GAAS,KAG5G,WAAoBxT,EAASgkE,EAAMpE,EAAQ69R,GACzC,IAAI57P,EAAM7hG,EAAQkvB,UAAU80C,GACxBh/D,GAAQ68F,EAAI78F,MACZwO,GAASquF,EAAIruF,OACbqsC,GAAQ7/C,EAAQ+5vB,WAAW/0vB,IAC/B,GAAIwO,IAAUwwD,GAAQnkB,GAAM64sB,OAC1B,OAAIj7Z,IAAWA,EAAOi+Z,WAAW12vB,GAAOA,GAAO46D,GAAkB,KAC1D5/D,EAAQ45vB,IAAI,EAAG51rB,GAAM1xD,OAAOstD,GAAQttD,OAAOtS,EAAQ45vB,IAAI51rB,IAEhE,IAAIlhD,GAAQ64uB,EAAW97sB,GAAM7/C,QAASgkE,EAAOxwD,GAAS,EAAGosD,GACzD,OAAO98C,IAAS9iB,EAAQ85vB,aAAa90vB,GAAO66C,GAAMsG,KAAKrjC,KAOzD,WAAiB4/b,EAAOC,EAAK3yd,GAC3B,GAAIA,EAAMorwB,UAAY14S,EAAM9pY,MACxB,MAAM,IAAI+hrB,EAAa,mDAC3B,GAAIj4S,EAAM9pY,MAAQ5oF,EAAMorwB,WAAaz4S,EAAI/pY,MAAQ5oF,EAAMqrwB,QACnD,MAAM,IAAIV,EAAa,4BAC3B,OAAOiB,EAAal5S,EAAOC,EAAK3yd,EAAO,GAGzC,WAAsB0yd,EAAOC,EAAK3yd,EAAO4oF,GACvC,IAAI5zE,EAAQ09c,EAAM19c,MAAM4zE,GAAQpyE,GAAOk8c,EAAMl8c,KAAKoyE,GAClD,GAAI5zE,GAAS29c,EAAI39c,MAAM4zE,IAAUA,EAAQ8pY,EAAM9pY,MAAQ5oF,EAAMorwB,UAAW,CACtE,IAAIt4uB,GAAQ84uB,EAAal5S,EAAOC,EAAK3yd,EAAO4oF,EAAQ,GACpD,OAAOpyE,GAAK2/C,KAAK3/C,GAAKxG,QAAQ85vB,aAAa90vB,EAAO8d,QACxC9yB,EAAMgQ,QAAQowC,KAEnB,IAAKpgD,EAAMorwB,WAAcprwB,EAAMqrwB,SAAW34S,EAAM9pY,OAASA,GAAS+pY,EAAI/pY,OAASA,EAG/E,CACL,IAAIipB,GAgFR,WAAgC7xG,EAAO6rwB,GAGrC,QAFIhgP,EAAQggP,EAAOjjrB,MAAQ5oF,EAAMorwB,UAC7B50vB,EADiDq1vB,EAAOr1vB,KAAKq1gB,GAC/C11d,KAAKn2D,EAAMgQ,SACpBjQ,GAAI8rhB,EAAQ,EAAG9rhB,IAAK,EAAGA,KAC5ByW,EAAOq1vB,EAAOr1vB,KAAKzW,IAAGo2D,KAAKy9Z,EAASp6Z,KAAKhjD,IAC7C,MAAO,CAAC4H,MAAO5H,EAAKs1vB,eAAe9rwB,EAAMorwB,UAAYv/O,GAC7Cnwf,IAAKllB,EAAKs1vB,eAAet1vB,EAAKxG,QAAQowC,KAAOpgD,EAAMqrwB,QAAUx/O,IAtFzDkgP,CAAuB/rwB,EAAO0yd,GAGxC,OAAOt2c,EAAM5F,GAAMw1vB,GAAgBt5S,EAFvB7gX,GAAIzzF,MACNyzF,GAAIn2E,IACwCi3b,EAAK/pY,IAN3D,IAAI6kR,GAASilH,EAAMjlH,OAAQz9V,GAAUy9V,GAAOz9V,QAC5C,OAAOoM,EAAMqxV,GAAQz9V,GAAQ45vB,IAAI,EAAGl3S,EAAMu5S,cAAc3pvB,OAAOtiB,EAAMgQ,SAASsS,OAAOtS,GAAQ45vB,IAAIj3S,EAAIs5S,gBAHrG,OAAO7vvB,EAAM5F,GAAM01vB,EAAcx5S,EAAOC,EAAK/pY,IAYjD,WAAmB85I,EAAMwpG,GACvB,IAAKA,EAAIhzU,KAAKizwB,kBAAkBzpiB,EAAKxpO,MACjC,MAAM,IAAIyxwB,EAAa,eAAiBz+b,EAAIhzU,KAAK9C,KAAO,SAAWssO,EAAKxpO,KAAK9C,MAGnF,WAAkBg2wB,EAASC,EAAQzjrB,GACjC,IAAIpyE,EAAO41vB,EAAQ51vB,KAAKoyE,GACxB0jrB,SAAU91vB,EAAM61vB,EAAO71vB,KAAKoyE,IACrBpyE,EAGT,WAAiBq5C,EAAO/1D,GACtB,IAAI4uH,EAAO5uH,EAAO3C,OAAS,EACvBuxH,GAAQ,GAAK74D,EAAM64sB,QAAU74sB,EAAM44sB,WAAW3uwB,EAAO4uH,IACrD5uH,EAAO4uH,GAAQ74D,EAAM85sB,SAAS7vwB,EAAO4uH,GAAMxsH,KAAO2zD,EAAM3zD,MAExDpC,EAAOjD,KAAKg5D,GAGlB,WAAkB08sB,EAAQC,EAAM5jrB,EAAO9uF,GACrC,IAAI0c,GAAQg2vB,GAAQD,GAAQ/1vB,KAAKoyE,GAC7B+N,GAAa,EAAG0ob,GAAWmtP,EAAOA,EAAKx3vB,MAAM4zE,GAASpyE,EAAKg5c,WAC3D+8S,IACF51qB,GAAa41qB,EAAOv3vB,MAAM4zE,GACtB2jrB,EAAO3jrB,MAAQA,EACjB+N,KACS41qB,EAAOE,aAChBzsqB,EAAQusqB,EAAOl4S,UAAWv6d,GAC1B68F,OAGJ,QAAS52F,GAAI42F,GAAY52F,GAAIs/gB,GAAUt/gB,KAAOigG,EAAQxpF,EAAKq5C,MAAM9vD,IAAIjG,GACjE0ywB,GAAQA,EAAK5jrB,OAASA,GAAS4jrB,EAAKC,YACpCzsqB,EAAQwsqB,EAAKp3S,WAAYt7d,GAG/B,WAAe0c,EAAMxG,GACnB,IAAKwG,EAAKtd,KAAKwzwB,aAAa18vB,GACxB,MAAM,IAAI26vB,EAAa,4BAA8Bn0vB,EAAKtd,KAAK9C,MACnE,OAAOogB,EAAK2/C,KAAKnmD,GAGnB,YAAyB0id,EAAO65S,EAAQC,EAAM75S,EAAK/pY,GACjD,IAAIwirB,GAAY14S,EAAM9pY,MAAQA,GAAS+jrB,EAASj6S,EAAO65S,EAAQ3jrB,EAAQ,GACnEyirB,GAAU14S,EAAI/pY,MAAQA,GAAS+jrB,EAASH,EAAM75S,EAAK/pY,EAAQ,GAE3D54E,GAAU,GACdgisB,SAAS,KAAMt/O,EAAO9pY,EAAO54E,IACzBo7vB,IAAaC,IAAWkB,EAAOv3vB,MAAM4zE,IAAU4jrB,EAAKx3vB,MAAM4zE,IAC5D0jrB,EAAUlB,GAAWC,IACrBrrqB,EAAQ5jF,EAAMgvvB,GAAWY,GAAgBt5S,EAAO65S,EAAQC,EAAM75S,EAAK/pY,EAAQ,IAAK54E,MAE5Eo7vB,IACAprqB,EAAQ5jF,EAAMgvvB,GAAWc,EAAcx5S,EAAO65S,EAAQ3jrB,EAAQ,IAAK54E,IACvEgisB,EAASu6D,EAAQC,EAAM5jrB,EAAO54E,IAC1Bq7vB,IACArrqB,EAAQ5jF,EAAMivvB,GAASa,EAAcM,EAAM75S,EAAK/pY,EAAQ,IAAK54E,KAEnEgisB,EAASr/O,EAAK,KAAM/pY,EAAO54E,IACpB,IAAI4jd,EAAS5jd,IAGtB,WAAuB0id,EAAOC,EAAK/pY,GACjC,IAAI54E,EAAU,GAMdgisB,OALAA,EAAS,KAAMt/O,EAAO9pY,EAAO54E,GACzB0id,EAAM9pY,MAAQA,GAEhBoX,EAAQ5jF,EADGuwvB,EAASj6S,EAAOC,EAAK/pY,EAAQ,GACpBsjrB,EAAcx5S,EAAOC,EAAK/pY,EAAQ,IAAK54E,GAE7DgisB,EAASr/O,EAAK,KAAM/pY,EAAO54E,GACpB,IAAI4jd,EAAS5jd,GA1LtBs7vB,EAAqBlrtB,KAAKnwC,IAAM,WAC9B,OAAO7e,KAAK4e,QAAQowC,KAAOhvD,KAAKg6wB,UAAYh6wB,KAAKi6wB,SAGnDv3S,EAAMrid,UAAUoitB,SAAW,SAAmB55oB,EAAK45Y,GACjD,IAAI7jd,EAAU27vB,EAAWv6wB,KAAK4e,QAASiqE,EAAM7oF,KAAKg6wB,UAAWv3S,EAAU,MACvE,OAAO7jd,GAAW,IAAI8jd,EAAM9jd,EAAS5e,KAAKg6wB,UAAWh6wB,KAAKi6wB,UAG5Dv3S,EAAMrid,UAAUm7vB,cAAgB,SAAwBpzsB,EAAMqlE,GAC5D,OAAO,IAAIi1V,EAAM23S,EAAYr6wB,KAAK4e,QAASwpD,EAAOpoE,KAAKg6wB,UAAWvsoB,EAAKztI,KAAKg6wB,WAAYh6wB,KAAKg6wB,UAAWh6wB,KAAKi6wB,UAK/Gv3S,EAAMrid,UAAU+id,GAAK,SAAa/ja,GAChC,OAAOr/D,KAAK4e,QAAQwkd,GAAG/ja,EAAMzgD,UAAY5e,KAAKg6wB,WAAa36sB,EAAM26sB,WAAah6wB,KAAKi6wB,SAAW56sB,EAAM46sB,SAGtGv3S,EAAMrid,UAAUtV,SAAW,WACzB,OAAO/K,KAAK4e,QAAU,IAAM5e,KAAKg6wB,UAAY,IAAMh6wB,KAAKi6wB,QAAU,KAKpEv3S,EAAMrid,UAAU6pR,OAAS,WACvB,IAAKlqS,KAAK4e,QAAQowC,KAAQ,OAAO,KACjC,IAAIiya,EAAO,CAACrid,QAAS5e,KAAK4e,QAAQsrR,UAClC,OAAIlqS,KAAKg6wB,UAAY,IAAK/4S,EAAK+4S,UAAYh6wB,KAAKg6wB,WAC5Ch6wB,KAAKi6wB,QAAU,IAAKh5S,EAAKg5S,QAAUj6wB,KAAKi6wB,SACrCh5S,GAKTyB,EAAMq2S,SAAW,SAAmBjsiB,EAAQm0P,GAC1C,IAAKA,EAAQ,OAAOyB,EAAMjjZ,MAC1B,IAAIu6rB,EAAY/4S,EAAK+4S,WAAa,EAAGC,EAAUh5S,EAAKg5S,SAAW,EAC/D,GAAwB,iBAAbD,GAA2C,iBAAXC,EACvC,MAAM,IAAI/7S,WAAW,oCACzB,OAAO,IAAIwE,EAAMF,EAASu2S,SAASjsiB,EAAQm0P,EAAKrid,SAAUo7vB,EAAWC,IAMvEv3S,EAAM+4S,QAAU,SAAkBh5S,EAAUi5S,QACjB,IAAlBA,IAA2BA,GAAc,GAGhD,QADI1B,EAAY,EAAGC,EAAU,EACpBnswB,GAAI20d,EAAS1wK,WAAYjkT,KAAMA,GAAE2gnB,SAAWitJ,IAAkB5twB,GAAEhG,KAAKy7d,KAAKxG,WAAYjvd,GAAIA,GAAEikT,WAAciod,IACnH,QAAS2B,GAAMl5S,EAASwB,UAAW03S,KAAQA,GAAIltJ,SAAWitJ,IAAkBC,GAAI7zwB,KAAKy7d,KAAKxG,WAAY4+S,GAAMA,GAAI13S,UAAag2S,IAC7H,OAAO,IAAIv3S,EAAMD,EAAUu3S,EAAWC,IAGxCp0wB,OAAOszwB,iBAAkBz2S,EAAMrid,UAAW65vB,GAiC1Cx3S,EAAMjjZ,MAAQ,IAAIijZ,EAAMF,EAAS/iZ,MAAO,EAAG,GAsH3C,IAAIm8rB,EAAc,SAAqB/yrB,EAAK6gG,EAAMmxlB,GAEhD76wB,KAAK6oF,IAAMA,EACX7oF,KAAK0pL,KAAOA,EAKZ1pL,KAAKw3F,MAAQkyF,EAAK3jL,OAAS,EAAI,EAE/B/F,KAAK66wB,aAAeA,GAGlBgB,EAAuB,CAAEx/Z,OAAQ,CAAE07Z,cAAc,GAAOvvZ,IAAK,CAAEuvZ,cAAc,GAAOsD,WAAY,CAAEtD,cAAc,GAAO90S,UAAW,CAAE80S,cAAc,GAAO/zS,WAAY,CAAE+zS,cAAc,IAEzL6D,EAAYv7vB,UAAUy7vB,aAAe,SAAuBx6vB,GAC1D,OAAW,MAAPA,EAAsBthB,KAAKw3F,MAC3Bl2E,EAAM,EAAYthB,KAAKw3F,MAAQl2E,EAC5BA,GAOTu6vB,EAAqBx/Z,OAAOx9V,IAAM,WAAc,OAAO7e,KAAKolB,KAAKplB,KAAKw3F,QAItEqkrB,EAAqBrzZ,IAAI3pW,IAAM,WAAc,OAAO7e,KAAKolB,KAAK,IAK9Dw2vB,EAAYv7vB,UAAU+E,KAAO,SAAeoyE,GAAS,OAAOx3F,KAAK0pL,KAAgC,EAA3B1pL,KAAK87wB,aAAatkrB,KAMxFokrB,EAAYv7vB,UAAUuD,MAAQ,SAAgB4zE,GAAS,OAAOx3F,KAAK0pL,KAAgC,EAA3B1pL,KAAK87wB,aAAatkrB,GAAa,IAKvGokrB,EAAYv7vB,UAAU07vB,WAAa,SAAqBvkrB,GACtDA,SAAQx3F,KAAK87wB,aAAatkrB,GACnBx3F,KAAK4jB,MAAM4zE,IAAUA,GAASx3F,KAAKw3F,OAAUx3F,KAAKq7wB,WAAiB,EAAJ,IAMxEO,EAAYv7vB,UAAU2M,MAAQ,SAAgBwqE,GAC5CA,OACgB,IADhBA,EAAQx3F,KAAK87wB,aAAatkrB,IACN,EAAIx3F,KAAK0pL,KAAa,EAARlyF,EAAY,GAAK,GAMrDokrB,EAAYv7vB,UAAUiqB,IAAM,SAAcktD,GACxCA,SAAQx3F,KAAK87wB,aAAatkrB,GACnBx3F,KAAKgtB,MAAMwqE,GAASx3F,KAAKolB,KAAKoyE,GAAO54E,QAAQowC,MAOtD4stB,EAAYv7vB,UAAU2rC,OAAS,SAAiBwrC,GAE9C,KADAA,EAAQx3F,KAAK87wB,aAAatkrB,IACZ,MAAM,IAAI0mY,WAAW,kDACnC,OAAO1mY,GAASx3F,KAAKw3F,MAAQ,EAAIx3F,KAAK6oF,IAAM7oF,KAAK0pL,KAAa,EAARlyF,EAAY,IAMpEokrB,EAAYv7vB,UAAUy9B,MAAQ,SAAgB05C,GAE5C,KADAA,EAAQx3F,KAAK87wB,aAAatkrB,IACZ,MAAM,IAAI0mY,WAAW,iDACnC,OAAO1mY,GAASx3F,KAAKw3F,MAAQ,EAAIx3F,KAAK6oF,IAAM7oF,KAAK0pL,KAAa,EAARlyF,EAAY,GAAKx3F,KAAK0pL,KAAa,EAARlyF,GAAWunY,UAO9F88S,EAAqBR,WAAWx8vB,IAAM,WAAc,OAAO7e,KAAK6oF,IAAM7oF,KAAK0pL,KAAK1pL,KAAK0pL,KAAK3jL,OAAS,IAMnG81wB,EAAqB54S,UAAUpkd,IAAM,WACnC,IAAIw9V,EAASr8W,KAAKq8W,OAAQz4V,EAAQ5jB,KAAK4jB,MAAM5jB,KAAKw3F,OAClD,GAAI5zE,GAASy4V,EAAO+hH,WAAc,OAAO,KACzC,IAAI49S,EAAOh8wB,KAAK6oF,IAAM7oF,KAAK0pL,KAAK1pL,KAAK0pL,KAAK3jL,OAAS,GAAI04D,EAAQ49S,EAAO59S,MAAM76C,GAC5E,OAAOo4vB,EAAO3/Z,EAAO59S,MAAM76C,GAAO40vB,IAAIwD,GAAQv9sB,GAOhDo9sB,EAAqB73S,WAAWnld,IAAM,WACpC,IAAI+E,EAAQ5jB,KAAK4jB,MAAM5jB,KAAKw3F,OACxBwkrB,EAAOh8wB,KAAK6oF,IAAM7oF,KAAK0pL,KAAK1pL,KAAK0pL,KAAK3jL,OAAS,GACnD,OAAIi2wB,EAAeh8wB,KAAKq8W,OAAO59S,MAAM76C,GAAO40vB,IAAI,EAAGwD,GACnC,GAATp4vB,EAAa,KAAO5jB,KAAKq8W,OAAO59S,MAAM76C,EAAQ,IAMvDg4vB,EAAYv7vB,UAAU47vB,WAAa,SAAqBr4vB,EAAO4zE,GAC7DA,EAAQx3F,KAAK87wB,aAAatkrB,GAE1B,QADIpyE,EAAOplB,KAAK0pL,KAAa,EAARlyF,GAAY3O,EAAe,GAAT2O,EAAa,EAAIx3F,KAAK0pL,KAAa,EAARlyF,EAAY,GAAK,EAC1E7oF,GAAI,EAAGA,GAAIiV,EAAOjV,KAAOk6E,GAAOzjE,EAAKq5C,MAAM9vD,IAAGowd,SACvD,OAAOl2Y,GAQT+yrB,EAAYv7vB,UAAUstN,MAAQ,WAC5B,IAAI0uI,EAASr8W,KAAKq8W,OAAQz4V,EAAQ5jB,KAAK4jB,QAGvC,GAA2B,GAAvBy4V,EAAOz9V,QAAQowC,KAAa,OAAOsqtB,EAAKv6uB,KAG5C,GAAI/+B,KAAKq7wB,WAAc,OAAOh/Z,EAAO59S,MAAM76C,GAAO+pN,MAElD,IAAI2D,EAAO+qI,EAAOs8Z,WAAW/0vB,EAAQ,GAAIy7C,EAAQg9S,EAAOs8Z,WAAW/0vB,GAGnE,IAAK0tN,EAAM,CAAE,IAAI1gO,GAAM0gO,EAAMA,EAAOjyK,EAAOA,EAAQzuD,GAKnD,QADI+8N,GAAQ2D,EAAK3D,MACRh/N,GAAI,EAAGA,GAAIg/N,GAAM5nO,OAAQ4I,MACO,IAAjCg/N,GAAMh/N,IAAG7G,KAAKy7d,KAAK24S,aAAyB78sB,IAAUsuK,GAAMh/N,IAAGkrwB,QAAQx6sB,EAAMsuK,UAC/EA,GAAQA,GAAMh/N,MAAKirwB,cAAcjsiB,KAEvC,OAAOA,IAUTiuiB,EAAYv7vB,UAAU87vB,YAAc,SAAsBf,GACxD,IAAIt9tB,EAAQ99C,KAAKq8W,OAAOs8Z,WAAW34wB,KAAK4jB,SACxC,IAAKk6B,IAAUA,EAAMs+tB,SAAY,OAAO,KAGxC,QADIzuiB,EAAQ7vL,EAAM6vL,MAAOtiO,EAAO+vwB,EAAK/+Z,OAAOs8Z,WAAWyC,EAAKx3vB,SACnDjV,GAAI,EAAGA,GAAIg/N,EAAM5nO,OAAQ4I,MACO,IAAjCg/N,EAAMh/N,IAAG7G,KAAKy7d,KAAK24S,aAAyB7wwB,IAASsiO,EAAMh/N,IAAGkrwB,QAAQxuwB,EAAKsiO,UAC7EA,EAAQA,EAAMh/N,MAAKirwB,cAAcjsiB,IACvC,OAAOA,GAMTiuiB,EAAYv7vB,UAAUg8vB,YAAc,SAAsBxzrB,GACxD,QAAS2O,EAAQx3F,KAAKw3F,MAAOA,EAAQ,EAAGA,IACpC,GAAIx3F,KAAKgtB,MAAMwqE,IAAU3O,GAAO7oF,KAAKsqC,IAAIktD,IAAU3O,EAAO,OAAO2O,EACrE,OAAO,GAWTokrB,EAAYv7vB,UAAUi8vB,WAAa,SAAqBj9sB,EAAOk9sB,GAG7D,QAFiB,IAAVl9sB,IAAmBA,EAAQr/D,MAE9Bq/D,EAAMwpB,IAAM7oF,KAAK6oF,IAAO,OAAOxpB,EAAMi9sB,WAAWt8wB,MACpD,QAASwL,EAAIxL,KAAKw3F,OAASx3F,KAAKq8W,OAAOmga,eAAiBx8wB,KAAK6oF,KAAOxpB,EAAMwpB,IAAM,EAAI,GAAIr9E,GAAK,EAAGA,IAC5F,GAAI6zD,EAAMwpB,KAAO7oF,KAAKsqC,IAAI9+B,MAAQ+wwB,GAAQA,EAAKv8wB,KAAKolB,KAAK5Z,KACvD,OAAO,IAAIixwB,GAAUz8wB,KAAMq/D,EAAO7zD,IAK1CowwB,EAAYv7vB,UAAUq8vB,WAAa,SAAqBr9sB,GACtD,OAAOr/D,KAAK6oF,IAAM7oF,KAAK66wB,cAAgBx7sB,EAAMwpB,IAAMxpB,EAAMw7sB,cAK3De,EAAYv7vB,UAAU7R,IAAM,SAAc6wD,GACxC,OAAOA,EAAMwpB,IAAM7oF,KAAK6oF,IAAMxpB,EAAQr/D,MAKxC47wB,EAAYv7vB,UAAUoyB,IAAM,SAAc4sB,GACxC,OAAOA,EAAMwpB,IAAM7oF,KAAK6oF,IAAMxpB,EAAQr/D,MAGxC47wB,EAAYv7vB,UAAUtV,SAAW,WAE/B,QADIwX,EAAM,GACD5T,EAAI,EAAGA,GAAK3O,KAAKw3F,MAAO7oF,IAC7B4T,IAAQA,EAAM,IAAM,IAAMviB,KAAKolB,KAAKzW,GAAG7G,KAAK9C,KAAO,IAAMhF,KAAK4jB,MAAMjV,EAAI,GAC5E,OAAO4T,EAAM,IAAMviB,KAAK66wB,cAG1Be,EAAYh0vB,QAAU,SAAkB4gW,EAAK3/R,GAC3C,KAAMA,GAAO,GAAKA,GAAO2/R,EAAI5pW,QAAQowC,MAAS,MAAM,IAAIkva,WAAW,YAAcr1Y,EAAM,iBAGvF,QAFI6gG,EAAO,GACP18J,EAAQ,EAAG6tvB,GAAehyrB,EACrBzjE,GAAOojW,IAAO,CACrB,IAAI/nQ,GAAMr7F,GAAKxG,QAAQkvB,UAAU+suB,IAC3Bj3vB,GAAQ68F,GAAI78F,MACZwO,GAASquF,GAAIruF,OACfuqvB,GAAM9B,GAAezovB,GAIzB,GAHAs3J,EAAKjkL,KAAK2f,GAAMxB,GAAOoJ,EAAQoF,KAC1BuqvB,KACLv3vB,GAAOA,GAAKq5C,MAAM76C,KACT0zvB,OAAU,MACnBuD,GAAe8B,GAAM,EACrB3vvB,GAASoF,GAAS,EAEpB,OAAO,IAAIwpvB,EAAY/yrB,EAAK6gG,EAAMmxlB,KAGpCe,EAAYgB,cAAgB,SAAwBp0Z,EAAK3/R,GACvD,QAASl6E,EAAI,EAAGA,EAAIkuwB,EAAa92wB,OAAQ4I,IAAK,CAC5C,IAAI21d,EAASu4S,EAAaluwB,GAC1B,GAAI21d,EAAOz7Y,KAAOA,GAAOy7Y,EAAO97G,KAAOA,EAAO,OAAO87G,EAEvD,IAAI/xd,GAASsqwB,EAAaC,GAAmBlB,EAAYh0vB,QAAQ4gW,EAAK3/R,GACtEi0rB,UAAmBA,EAAkB,GAAKC,GACnCxqwB,IAGT1M,OAAOszwB,iBAAkByC,EAAYv7vB,UAAWw7vB,GAEhD,IAAIgB,EAAe,GAAIC,EAAkB,EAAGC,GAAmB,GAI3DN,GAAY,SAAmBn7S,EAAOC,EAAK/pY,GAM7Cx3F,KAAKshe,MAAQA,EAGbthe,KAAKuhe,IAAMA,EAEXvhe,KAAKw3F,MAAQA,GAGXwlrB,GAAyB,CAAEhwvB,MAAO,CAAE+qvB,cAAc,GAAOztuB,IAAK,CAAEytuB,cAAc,GAAO17Z,OAAQ,CAAE07Z,cAAc,GAAOxyqB,WAAY,CAAEwyqB,cAAc,GAAO9pP,SAAU,CAAE8pP,cAAc,IAGrLiF,GAAuBhwvB,MAAMnO,IAAM,WAAc,OAAO7e,KAAKshe,MAAMt1a,OAAOhsD,KAAKw3F,MAAQ,IAEvFwlrB,GAAuB1yuB,IAAIzrB,IAAM,WAAc,OAAO7e,KAAKuhe,IAAIzjb,MAAM99C,KAAKw3F,MAAQ,IAGlFwlrB,GAAuB3ga,OAAOx9V,IAAM,WAAc,OAAO7e,KAAKshe,MAAMl8c,KAAKplB,KAAKw3F,QAE9EwlrB,GAAuBz3qB,WAAW1mF,IAAM,WAAc,OAAO7e,KAAKshe,MAAM19c,MAAM5jB,KAAKw3F,QAEnFwlrB,GAAuB/uP,SAASpvgB,IAAM,WAAc,OAAO7e,KAAKuhe,IAAIw6S,WAAW/7wB,KAAKw3F,QAEpF3xF,OAAOszwB,iBAAkBsD,GAAUp8vB,UAAW28vB,IAE9C,IAAIC,GAAap3wB,OAAOm8D,OAAO,MAc3B6tE,GAAO,SAAc/nI,EAAMklO,EAAOpuN,EAAS+uN,GAG7C3tO,KAAK8H,KAAOA,EAMZ9H,KAAKgtO,MAAQA,EAIbhtO,KAAK4e,QAAUA,GAAW4jd,EAAS/iZ,MAKnCz/E,KAAK2tO,MAAQA,GAAS2riB,EAAKv6uB,MAGzBm+uB,GAAuB,CAAEn+S,SAAU,CAAEg5S,cAAc,GAAO35S,WAAY,CAAE25S,cAAc,GAAO/hZ,YAAa,CAAE+hZ,cAAc,GAAOhmd,WAAY,CAAEgmd,cAAc,GAAO9zS,UAAW,CAAE8zS,cAAc,GAAOO,QAAS,CAAEP,cAAc,GAAOtzS,YAAa,CAAEszS,cAAc,GAAOyE,cAAe,CAAEzE,cAAc,GAAOqE,SAAU,CAAErE,cAAc,GAAOT,OAAQ,CAAES,cAAc,GAAOtpJ,OAAQ,CAAEspJ,cAAc,GAAOoF,OAAQ,CAAEpF,cAAc,IAW3amF,GAAqBn+S,SAASlgd,IAAM,WAAc,OAAO7e,KAAKyunB,OAAS,EAAI,EAAIzunB,KAAK4e,QAAQowC,MAI5FkutB,GAAqB9+S,WAAWv/c,IAAM,WAAc,OAAO7e,KAAK4e,QAAQw/c,YAKxEvuV,GAAKxvH,UAAUo+C,MAAQ,SAAgB76C,GAAS,OAAO5jB,KAAK4e,QAAQ6/C,MAAM76C,IAI1EisH,GAAKxvH,UAAUs4vB,WAAa,SAAqB/0vB,GAAS,OAAO5jB,KAAK4e,QAAQ+5vB,WAAW/0vB,IAKzFisH,GAAKxvH,UAAUzZ,QAAU,SAAkBhB,GAAK5F,KAAK4e,QAAQhY,QAAQhB,IAUrEiqI,GAAKxvH,UAAU23vB,aAAe,SAAuB5vsB,EAAMqlE,EAAI7nI,EAAGw3wB,QAC5C,IAAbA,IAAsBA,EAAW,GAExCp9wB,KAAK4e,QAAQo5vB,aAAa5vsB,EAAMqlE,EAAI7nI,EAAGw3wB,EAAUp9wB,OAMnD6vI,GAAKxvH,UAAUq5X,YAAc,SAAsB9zY,GACjD5F,KAAKg4wB,aAAa,EAAGh4wB,KAAK4e,QAAQowC,KAAMppD,IAM1Cs3wB,GAAqBlnZ,YAAYn3W,IAAM,WAAc,OAAO7e,KAAKk4wB,YAAY,EAAGl4wB,KAAK4e,QAAQowC,KAAM,KAOnG6gF,GAAKxvH,UAAU63vB,YAAc,SAAsB9vsB,EAAMqlE,EAAI0qoB,EAAgBC,GAC3E,OAAOp4wB,KAAK4e,QAAQs5vB,YAAY9vsB,EAAMqlE,EAAI0qoB,EAAgBC,IAM5D8E,GAAqBnrd,WAAWlzS,IAAM,WAAc,OAAO7e,KAAK4e,QAAQmzS,YAKxEmrd,GAAqBj5S,UAAUpld,IAAM,WAAc,OAAO7e,KAAK4e,QAAQqld,WAIvEp0V,GAAKxvH,UAAU+id,GAAK,SAAa/ja,GAC/B,OAAOr/D,MAAQq/D,GAAUr/D,KAAKq3wB,WAAWh4sB,IAAUr/D,KAAK4e,QAAQwkd,GAAG/ja,EAAMzgD,UAM3EixH,GAAKxvH,UAAUg3vB,WAAa,SAAqBh4sB,GAC/C,OAAOr/D,KAAKq9wB,UAAUh+sB,EAAMv3D,KAAMu3D,EAAM2tK,MAAO3tK,EAAMsuK,QAMvD99F,GAAKxvH,UAAUg9vB,UAAY,SAAoBv1wB,EAAMklO,EAAOW,GAC1D,OAAO3tO,KAAK8H,MAAQA,GAClBsxwB,EAAYp5wB,KAAKgtO,MAAOA,GAASllO,EAAKw1wB,cAAgBL,KACtD3D,EAAKQ,QAAQ95wB,KAAK2tO,MAAOA,GAAS2riB,EAAKv6uB,OAM3C8wG,GAAKxvH,UAAU0kD,KAAO,SAAenmD,GAGnC,YAFmB,IAAZA,IAAqBA,EAAU,MAElCA,GAAW5e,KAAK4e,QAAkB5e,KAC/B,IAAIA,KAAKF,YAAYE,KAAK8H,KAAM9H,KAAKgtO,MAAOpuN,EAAS5e,KAAK2tO,QAMnE99F,GAAKxvH,UAAUkod,KAAO,SAAe56P,GACnC,OAAOA,GAAS3tO,KAAK2tO,MAAQ3tO,KAAO,IAAIA,KAAKF,YAAYE,KAAK8H,KAAM9H,KAAKgtO,MAAOhtO,KAAK4e,QAAS+uN,IAOhG99F,GAAKxvH,UAAUm4vB,IAAM,SAAcpwsB,EAAMqlE,GACvC,OAAY,GAARrlE,GAAaqlE,GAAMztI,KAAK4e,QAAQowC,KAAehvD,KAC5CA,KAAK+kE,KAAK/kE,KAAK4e,QAAQ45vB,IAAIpwsB,EAAMqlE,KAM1CoC,GAAKxvH,UAAUzR,MAAQ,SAAgBw5D,EAAMqlE,EAAI8voB,GAI/C,QAHc,IAAP9voB,IAAgBA,EAAKztI,KAAK4e,QAAQowC,WACf,IAAnBuutB,IAA4BA,GAAiB,GAEhDn1sB,GAAQqlE,EAAM,OAAOi1V,EAAMjjZ,MAE/B,IAAI6hZ,EAAQthe,KAAK4nB,QAAQwgD,GAAOm5Z,GAAMvhe,KAAK4nB,QAAQ6lH,GAC/Cj2C,GAAQ+lrB,EAAiB,EAAIj8S,EAAM+6S,YAAY5uoB,GAC/CzgH,GAAQs0c,EAAMt0c,MAAMwqE,IACpB54E,GADmC0id,EAAMl8c,KAAKoyE,IAC/B54E,QAAQ45vB,IAAIl3S,EAAMz4Y,IAAM77D,GAAOu0c,GAAI14Y,IAAM77D,IAC5D,OAAO,IAAI01c,EAAM9jd,GAAS0id,EAAM9pY,MAAQA,GAAO+pY,GAAI/pY,MAAQA,KAU7Dq4C,GAAKxvH,UAAUkL,QAAU,SAAoB68C,EAAMqlE,EAAI7+H,GACrD,OAAO2c,EAAQvrB,KAAK4nB,QAAQwgD,GAAOpoE,KAAK4nB,QAAQ6lH,GAAK7+H,IAKvDihI,GAAKxvH,UAAUg/c,OAAS,SAAiBx2Y,GACvC,QAASzjE,EAAOplB,OAAQ,CACtB,IAAIygH,EAAMr7F,EAAKxG,QAAQkvB,UAAU+6C,GAE3Bz2D,GAASquF,EAAIruF,OAEnB,KADAhN,EAAOA,EAAKuzvB,WAFEl4pB,EAAI78F,QAGL,OAAO,KACpB,GAAIwO,IAAUy2D,GAAOzjE,EAAKkyvB,OAAU,OAAOlyvB,EAC3CyjE,GAAOz2D,GAAS,IAQpBy9G,GAAKxvH,UAAUm9vB,WAAa,SAAqB30rB,GAC/C,IAAI43B,EAAMzgH,KAAK4e,QAAQkvB,UAAU+6C,GAC3BjlE,EAAQ68F,EAAI78F,MACZwO,EAASquF,EAAIruF,OACnB,MAAO,CAAChN,KAAMplB,KAAK4e,QAAQ+5vB,WAAW/0vB,GAAQA,MAAOA,EAAOwO,OAAQA,IAOtEy9G,GAAKxvH,UAAUo9vB,YAAc,SAAsB50rB,GACjD,GAAW,GAAPA,EAAY,MAAO,CAACzjE,KAAM,KAAMxB,MAAO,EAAGwO,OAAQ,GACtD,IAAIquF,EAAMzgH,KAAK4e,QAAQkvB,UAAU+6C,GAC3BjlE,EAAQ68F,EAAI78F,MACZwO,EAASquF,EAAIruF,OACnB,GAAIA,EAASy2D,EAAO,MAAO,CAACzjE,KAAMplB,KAAK4e,QAAQ6/C,MAAM76C,GAAQA,MAAOA,EAAOwO,OAAQA,GACnF,IAAIhN,GAAOplB,KAAK4e,QAAQ6/C,MAAM76C,EAAQ,GACtC,MAAO,CAACwB,KAAMA,GAAMxB,MAAOA,EAAQ,EAAGwO,OAAQA,EAAShN,GAAK25c,WAM9DlvV,GAAKxvH,UAAUuH,QAAU,SAAkBihE,GAAO,OAAO+yrB,EAAYgB,cAAc58wB,KAAM6oF,IAEzFgnD,GAAKxvH,UAAUq6vB,eAAiB,SAAyB7xrB,GAAO,OAAO+yrB,EAAYh0vB,QAAQ5nB,KAAM6oF,IAKjGgnD,GAAKxvH,UAAUq9vB,aAAe,SAAuBt1sB,EAAMqlE,EAAI3lI,GAC7D,IAAIkhE,GAAQ,EACZ,OAAIykE,EAAKrlE,GAAQpoE,KAAKg4wB,aAAa5vsB,EAAMqlE,EAAI,SAAUroH,IACrD,OAAItd,EAAK+xwB,QAAQz0vB,GAAKuoN,SAAU3kK,GAAQ,IAChCA,IAEHA,GAKTk0sB,GAAqB5E,QAAQz5vB,IAAM,WAAc,OAAO7e,KAAK8H,KAAKwwwB,SAKlE4E,GAAqBz4S,YAAY5ld,IAAM,WAAc,OAAO7e,KAAK8H,KAAK28d,aAItEy4S,GAAqBV,cAAc39vB,IAAM,WAAc,OAAO7e,KAAK8H,KAAK00wB,eAKxEU,GAAqBd,SAASv9vB,IAAM,WAAc,OAAO7e,KAAK8H,KAAKs0wB,UAInEc,GAAqB5F,OAAOz4vB,IAAM,WAAc,OAAO7e,KAAK8H,KAAKwvwB,QAIjE4F,GAAqBzuJ,OAAO5vmB,IAAM,WAAc,OAAO7e,KAAK8H,KAAK2mnB,QAQjEyuJ,GAAqBC,OAAOt+vB,IAAM,WAAc,OAAO7e,KAAK8H,KAAKq1wB,QAKjEttoB,GAAKxvH,UAAUtV,SAAW,WACxB,GAAI/K,KAAK8H,KAAKy7d,KAAKo6S,cAAiB,OAAO39wB,KAAK8H,KAAKy7d,KAAKo6S,cAAc39wB,MACxE,IAAIgF,EAAOhF,KAAK8H,KAAK9C,KACrB,OAAIhF,KAAK4e,QAAQowC,OACbhqD,GAAQ,IAAMhF,KAAK4e,QAAQk6vB,gBAAkB,KAC1C8E,GAAU59wB,KAAK2tO,MAAO3oO,IAK/B6qI,GAAKxvH,UAAUw9vB,eAAiB,SAAyBj6vB,GACvD,IAAIrC,EAAQvhB,KAAK8H,KAAKg2wB,aAAaC,cAAc/9wB,KAAK4e,QAAS,EAAGgF,GAClE,IAAKrC,EAAS,MAAM,IAAI9K,MAAM,wDAC9B,OAAO8K,GASTsuH,GAAKxvH,UAAUi6vB,WAAa,SAAqBlysB,EAAMqlE,EAAIuwoB,EAAahxvB,EAAOsd,SACtD,IAAhB0zuB,IAAyBA,EAAcx7S,EAAS/iZ,YACtC,IAAVzyD,IAAmBA,EAAQ,QACnB,IAARsd,KAAiBA,GAAM0zuB,EAAY5/S,YAE1C,IAAIkzQ,GAAMtxuB,KAAK69wB,eAAez1sB,GAAM21sB,cAAcC,EAAahxvB,EAAOsd,IAClE2zuB,GAAM3sC,IAAOA,GAAIysC,cAAc/9wB,KAAK4e,QAAS6uH,GACjD,IAAKwwoB,KAAQA,GAAIC,SAAY,OAAO,EACpC,QAASvvwB,GAAIqe,EAAOre,GAAI27B,GAAK37B,KAAO,IAAK3O,KAAK8H,KAAKq2wB,YAAYH,EAAYv/sB,MAAM9vD,IAAGg/N,OAAU,OAAO,EACrG,OAAO,GAMT99F,GAAKxvH,UAAU+9vB,eAAiB,SAAyBh2sB,EAAMqlE,EAAI3lI,EAAM6lO,GACvE,GAAIA,IAAU3tO,KAAK8H,KAAKq2wB,YAAYxwiB,GAAU,OAAO,EACrD,IAAI3gN,GAAQhtB,KAAK69wB,eAAez1sB,GAAMi2sB,UAAUv2wB,GAC5CwiC,GAAMtd,IAASA,GAAM+wvB,cAAc/9wB,KAAK4e,QAAS6uH,GACrD,QAAOnjG,IAAMA,GAAI4zuB,UAQnBruoB,GAAKxvH,UAAUi+vB,UAAY,SAAoBj/sB,GAC7C,OAAIA,EAAMzgD,QAAQowC,KAAehvD,KAAKs6wB,WAAWt6wB,KAAKo+d,WAAYp+d,KAAKo+d,WAAY/+Z,EAAMzgD,SAC3E5e,KAAK8H,KAAKizwB,kBAAkB17sB,EAAMv3D,OAMlD+nI,GAAKxvH,UAAU2iJ,MAAQ,WACrB,IAAKhjK,KAAK8H,KAAKwzwB,aAAat7wB,KAAK4e,SAC7B,MAAM,IAAIs/c,WAAY,4BAA+Bl+d,KAAK8H,KAAK9C,KAAQ,KAAQhF,KAAK4e,QAAQ7T,WAAW6D,MAAM,EAAG,KAEpH,QADIm2D,EAAOu0sB,EAAKv6uB,KACPpwB,EAAI,EAAGA,EAAI3O,KAAK2tO,MAAM5nO,OAAQ4I,IAAOo2D,EAAO/kE,KAAK2tO,MAAMh/N,GAAG6qwB,SAASz0sB,GAC5E,IAAKu0sB,EAAKQ,QAAQ/0sB,EAAM/kE,KAAK2tO,OACzB,MAAM,IAAIuwP,WAAY,wCAA2Cl+d,KAAK8H,KAAK9C,KAAQ,KAAQhF,KAAK2tO,MAAMhoO,IAAI,SAAUk3B,GAAK,OAAOA,EAAE/0B,KAAK9C,QAC3IhF,KAAK4e,QAAQhY,QAAQ,SAAUwe,GAAQ,OAAOA,EAAK49I,WAKrDnzB,GAAKxvH,UAAU6pR,OAAS,WACtB,IAAIxqO,EAAM,CAAC53D,KAAM9H,KAAK8H,KAAK9C,MAC3B,QAASkG,KAAKlL,KAAKgtO,MAAO,CACxBttK,EAAIstK,MAAQhtO,KAAKgtO,MACjB,MAEF,OAAIhtO,KAAK4e,QAAQowC,OACb0Q,EAAI9gD,QAAU5e,KAAK4e,QAAQsrR,UAC3BlqS,KAAK2tO,MAAM5nO,SACX25D,EAAIiuK,MAAQ3tO,KAAK2tO,MAAMhoO,IAAI,SAAUmI,GAAK,OAAOA,EAAEo8R,YAChDxqO,GAKTmwE,GAAKkpoB,SAAW,SAAmBjsiB,EAAQm0P,GACzC,IAAKA,EAAQ,MAAM,IAAI/C,WAAW,mCAClC,IAAIvwP,EAAQ,KACZ,GAAIszP,EAAKtzP,MAAO,CACd,IAAKr/N,MAAMqxB,QAAQshc,EAAKtzP,OAAU,MAAM,IAAIuwP,WAAW,uCACvDvwP,EAAQszP,EAAKtzP,MAAMhoO,IAAImnO,EAAOyxiB,cAEhC,GAAiB,QAAbt9S,EAAKn5d,KAAgB,CACvB,GAAwB,iBAAbm5d,EAAKn2d,KAAoB,MAAM,IAAIozd,WAAW,6BACzD,OAAOpxP,EAAOhiO,KAAKm2d,EAAKn2d,KAAM6iO,GAEhC,IAAI/uN,EAAU4jd,EAASu2S,SAASjsiB,EAAQm0P,EAAKrid,SAC7C,OAAOkuN,EAAOo3I,SAAS+8G,EAAKn5d,MAAMk6D,OAAOi/Z,EAAKj0P,MAAOpuN,EAAS+uN,IAGhE9nO,OAAOszwB,iBAAkBtpoB,GAAKxvH,UAAW68vB,IAEzC,IAAItsF,GAAyB,SAAU/gjB,GACrC,WAAkB/nI,EAAMklO,EAAOpuN,GAAS+uN,IAGtC,GAFA99F,EAAKj8G,KAAK5zB,KAAM8H,EAAMklO,EAAO,KAAMW,KAE9B/uN,GAAW,MAAM,IAAIs/c,WAAW,oCAErCl+d,KAAK8K,KAAO8T,GAGTixH,IAAO+gjB,EAAStwqB,UAAYuvH,IACjC+gjB,EAASvwqB,UAAYxa,OAAOm8D,OAAQ6tE,GAAQA,EAAKxvH,YAC9BvgB,YAAc8wrB,EAEjC,IAAIspF,EAAuB,CAAElkZ,YAAa,CAAE+hZ,cAAc,GAAOh5S,SAAU,CAAEg5S,cAAc,IAE3FnnF,SAASvwqB,UAAUtV,SAAW,WAC5B,OAAI/K,KAAK8H,KAAKy7d,KAAKo6S,cAAwB39wB,KAAK8H,KAAKy7d,KAAKo6S,cAAc39wB,MACjE49wB,GAAU59wB,KAAK2tO,MAAOt/M,KAAK+E,UAAUpzB,KAAK8K,QAGnDovwB,EAAqBlkZ,YAAYn3W,IAAM,WAAc,OAAO7e,KAAK8K,MAEjE8lrB,EAASvwqB,UAAU63vB,YAAc,SAAsB9vsB,EAAMqlE,IAAM,OAAOztI,KAAK8K,KAAK8D,MAAMw5D,EAAMqlE,KAEhGysoB,EAAqBn7S,SAASlgd,IAAM,WAAc,OAAO7e,KAAK8K,KAAK/E,QAEnE6qrB,EAASvwqB,UAAUkod,KAAO,SAAe56P,GACvC,OAAOA,GAAS3tO,KAAK2tO,MAAQ3tO,KAAO,IAAI4wrB,EAAS5wrB,KAAK8H,KAAM9H,KAAKgtO,MAAOhtO,KAAK8K,KAAM6iO,IAGrFijd,EAASvwqB,UAAUk4vB,SAAW,SAAmBztwB,GAC/C,OAAIA,GAAQ9K,KAAK8K,KAAe9K,KACzB,IAAI4wrB,EAAS5wrB,KAAK8H,KAAM9H,KAAKgtO,MAAOliO,EAAM9K,KAAK2tO,QAGxDijd,EAASvwqB,UAAUm4vB,IAAM,SAAcpwsB,EAAMqlE,IAI3C,YAHc,IAATrlE,IAAkBA,EAAO,QAClB,IAAPqlE,KAAgBA,GAAKztI,KAAK8K,KAAK/E,QAExB,GAARqiE,GAAaqlE,IAAMztI,KAAK8K,KAAK/E,OAAiB/F,KAC3CA,KAAKu4wB,SAASv4wB,KAAK8K,KAAK8D,MAAMw5D,EAAMqlE,MAG7CmjjB,EAASvwqB,UAAU+id,GAAK,SAAa/ja,GACnC,OAAOr/D,KAAKq3wB,WAAWh4sB,IAAUr/D,KAAK8K,MAAQu0D,EAAMv0D,MAGtD8lrB,EAASvwqB,UAAU6pR,OAAS,WAC1B,IAAIjzR,EAAO44H,EAAKxvH,UAAU6pR,OAAOt2Q,KAAK5zB,MACtCiX,SAAKnM,KAAO9K,KAAK8K,KACVmM,GAGTpR,OAAOszwB,iBAAkBvoF,EAASvwqB,UAAW65vB,GAEtCtpF,EAvDoB,CAwD3B/gjB,IAEF,YAAmB89F,EAAOprN,GACxB,QAAS5T,EAAIg/N,EAAM5nO,OAAS,EAAG4I,GAAK,EAAGA,IACnC4T,EAAMorN,EAAMh/N,GAAG7G,KAAK9C,KAAO,IAAMud,EAAM,IAC3C,OAAOA,EAOT,IAAIi8vB,GAAe,SAAsBN,GAGvCl+wB,KAAKk+wB,SAAWA,EAChBl+wB,KAAKqL,KAAO,GACZrL,KAAKy+wB,UAAY,IAGfC,GAAuB,CAAElC,cAAe,CAAEzE,cAAc,GAAO4G,YAAa,CAAE5G,cAAc,GAAO6G,UAAW,CAAE7G,cAAc,IAElIyG,GAAalwvB,MAAQ,SAAgBywd,EAAQ1X,GAC3C,IAAIttc,EAAS,IAAI8kvB,GAAY9/R,EAAQ1X,GACrC,GAAmB,MAAfttc,EAAO1uB,KAAgB,OAAOmzwB,GAAa/+rB,MAC/C,IAAI4qR,EAAOy0a,GAAU/kvB,GACjBA,EAAO1uB,MAAQ0uB,EAAO1P,IAAI,4BAC9B,IAAI9I,GAuVN,YAAaw9vB,GACX,IAAIC,EAAUn5wB,OAAOm8D,OAAO,MAC5B,OAEA,WAAiBs6N,GACf,IAAIn4Q,EAAM,GACVm4Q,EAAO11R,QAAQ,SAAUwe,IACvB25vB,EAAI35vB,IAAMxe,QAAQ,SAAU65G,IAC1B,IAAIqyW,GAAOryW,GAAIqyW,KACXrlV,GAAKhtB,GAAIgtB,GAEb,GAAKqlV,GACL,KAAImsT,GAAQ96vB,EAAIrE,QAAQgzc,IAAOzgc,GAAM4svB,IAAQ,GAAM96vB,EAAI86vB,GAAQ,GAC/DC,GAASH,EAAKtxoB,IAAI7mI,QAAQ,SAAUwe,IAC7BiN,IAAOlO,EAAI1e,KAAKqtd,GAAMzgc,GAAM,KACR,GAArBA,GAAIvS,QAAQsF,KAAeiN,GAAI5sB,KAAK2f,WAK9C,QADIlb,GAAQ80wB,EAAQ1if,EAAO70Q,KAAK,MAAQ,IAAI+2vB,GAAalif,EAAOx8Q,QAAQi/vB,EAAIh5wB,OAAS,IAAK,GACjF4I,GAAI,EAAGA,GAAIwV,EAAIpe,OAAQ4I,IAAK,EAAG,CACtC,IAAIwwwB,GAAWh7vB,EAAIxV,GAAI,GAAGmL,KAAKqwa,IAC/Bjgb,GAAMmB,KAAK5F,KAAK0e,EAAIxV,IAAIqwwB,EAAQG,GAAS13vB,KAAK,OAAS23vB,EAAQD,KAEjE,OAAOj1wB,GAtBFk1wB,CAAQF,GAASH,EAAK,IAzVjBM,CAkQd,YAAah1a,GACX,IAAI00a,EAAM,CAAC,IACXx1vB,SAWA,YAAiB8gV,GAAMjiS,IACrB,GAAiB,UAAbiiS,GAAKviW,KACP,OAAOuiW,GAAKi1a,MAAMtlwB,OAAO,SAAUmK,GAAKkmV,IAAQ,OAAOlmV,GAAIwvB,OAAO4qc,GAAQl0I,GAAMjiS,MAAW,IACtF,GAAiB,OAAbiiS,GAAKviW,KACd,QAAS6G,GAAI,GAAIA,KAAK,CACpB,IAAItD,GAAOkze,GAAQl0I,GAAKi1a,MAAM3wwB,IAAIy5D,IAClC,GAAIz5D,IAAK07V,GAAKi1a,MAAMv5wB,OAAS,EAAK,OAAOsF,GACzCke,EAAQle,GAAM+8D,GAAOhjD,aAED,QAAbilV,GAAKviW,KAAgB,CAC9B,IAAI+3oB,GAAOz6nB,IACXy6E,SAAKz3B,GAAMy3kB,IACXt2nB,EAAQg1d,GAAQl0I,GAAKA,KAAMw1S,IAAOA,IAC3B,CAAChgjB,EAAKggjB,QACS,QAAbx1S,GAAKviW,KAAgB,CAC9B,IAAIy3wB,GAASn6vB,IACbmE,SAAQg1d,GAAQl0I,GAAKA,KAAMjiS,IAAOm3sB,IAClCh2vB,EAAQg1d,GAAQl0I,GAAKA,KAAMk1a,IAASA,IAC7B,CAAC1/qB,EAAK0/qB,KACR,GAAiB,OAAbl1a,GAAKviW,KACd,MAAO,CAAC+3F,EAAKz3B,KAAOz0B,OAAO4qc,GAAQl0I,GAAKA,KAAMjiS,KACzC,GAAiB,SAAbiiS,GAAKviW,KAAiB,CAE/B,QADIqhwB,GAAM/gsB,GACDo3sB,GAAM,EAAGA,GAAMn1a,GAAK53T,IAAK+suB,KAAO,CACvC,IAAIC,GAASr6vB,IACbmE,EAAQg1d,GAAQl0I,GAAKA,KAAM8+Z,IAAMsW,IACjCtW,GAAMsW,GAER,IAAgB,GAAZp1a,GAAK77V,IACP+a,EAAQg1d,GAAQl0I,GAAKA,KAAM8+Z,IAAMA,SAEjC,QAASuW,GAAMr1a,GAAK53T,IAAKituB,GAAMr1a,GAAK77V,IAAKkxwB,KAAO,CAC9C,IAAIC,GAASv6vB,IACby6E,EAAKspqB,GAAKwW,IACVp2vB,EAAQg1d,GAAQl0I,GAAKA,KAAM8+Z,IAAMwW,IACjCxW,GAAMwW,GAGV,MAAO,CAAC9/qB,EAAKspqB,QACS,QAAb9+Z,GAAKviW,KACd,MAAO,CAAC+3F,EAAKz3B,GAAM,KAAMiiS,GAAK1mW,SAnD1B46e,CAAQl0I,EAAM,GAAIjlV,KACnB25vB,EAEP,aAAkB,OAAOA,EAAIt5wB,KAAK,IAAM,EACxC,WAAc2iE,GAAMqlE,GAAIqlV,IACtB,IAAIjzX,GAAO,CAACizX,KAAMA,GAAMrlV,GAAIA,IAC5BsxoB,SAAI32sB,IAAM3iE,KAAKo6F,IACRA,GAET,WAAiBiuC,GAAOL,IAAMK,GAAMlnI,QAAQ,SAAUi5F,IAAQ,OAAOA,GAAK4tC,GAAKA,MA7Q/DsxoB,CAAI10a,IACpBu1a,OAkXF,YAA0Br+vB,EAAOwY,GAC/B,QAASprB,EAAI,EAAGkxwB,EAAO,CAACt+vB,GAAQ5S,EAAIkxwB,EAAK95wB,OAAQ4I,IAAK,CAEpD,QADIzE,EAAQ21wB,EAAKlxwB,GAAImxwB,IAAQ51wB,EAAMg0wB,SAAUz8oB,GAAQ,GAC5CjgC,GAAI,EAAGA,GAAIt3F,EAAMmB,KAAKtF,OAAQy7F,IAAK,EAAG,CAC7C,IAAIp8E,GAAOlb,EAAMmB,KAAKm2F,IAAIn2F,GAAOnB,EAAMmB,KAAKm2F,GAAI,GAChDigC,GAAMh8H,KAAK2f,GAAKpgB,MACZ86wB,MAAU16vB,GAAKkyvB,QAAUlyvB,GAAK26vB,sBAAuBD,IAAO,IACtC,GAAtBD,EAAK//vB,QAAQzU,KAAew0wB,EAAKp6wB,KAAK4F,IAExCy0wB,IAAQ/lvB,EAAO1P,IAAI,+BAAiCo3G,GAAMh6G,KAAK,MAAQ,mFA3X7Em4vB,CAAiBr+vB,GAAOwY,GACjBxY,IAMTi9vB,GAAan+vB,UAAUg+vB,UAAY,SAAoBv2wB,GACrD,QAAS6G,EAAI,EAAGA,EAAI3O,KAAKqL,KAAKtF,OAAQ4I,GAAK,EACvC,GAAI3O,KAAKqL,KAAKsD,IAAM7G,EAAQ,OAAO9H,KAAKqL,KAAKsD,EAAI,GACrD,OAAO,MAMT6vwB,GAAan+vB,UAAU09vB,cAAgB,SAAwBiC,EAAMhzvB,EAAOsd,QACzD,IAAVtd,IAAmBA,EAAQ,QACnB,IAARsd,IAAiBA,EAAM01uB,EAAK5hT,YAGnC,QADI+qS,EAAMnpwB,KACD2O,GAAIqe,EAAOm8uB,GAAOx6vB,GAAI27B,EAAK37B,KAChCw6vB,EAAMA,EAAIkV,UAAU2B,EAAKvhtB,MAAM9vD,IAAG7G,MACtC,OAAOqhwB,GAGTuV,GAAqBlC,cAAc39vB,IAAM,WACvC,IAAI3X,EAAQlH,KAAKqL,KAAK,GACtB,QAAOnE,GAAQA,EAAMk1wB,UAMvBsC,GAAqBC,YAAY9/vB,IAAM,WACrC,QAASlQ,EAAI,EAAGA,EAAI3O,KAAKqL,KAAKtF,OAAQ4I,GAAK,EAAG,CAC5C,IAAI7G,EAAO9H,KAAKqL,KAAKsD,GACrB,IAAM7G,EAAKwvwB,SAAUxvwB,EAAKi4wB,mBAAuB,OAAOj4wB,IAI5D02wB,GAAan+vB,UAAU4/vB,WAAa,SAAqB5gtB,GACvD,QAAS1wD,EAAI,EAAGA,EAAI3O,KAAKqL,KAAKtF,OAAQ4I,GAAK,EACvC,QAAS6yF,EAAI,EAAGA,EAAIniC,EAAMh0D,KAAKtF,OAAQy7F,GAAK,EAC1C,GAAIxhG,KAAKqL,KAAKsD,IAAM0wD,EAAMh0D,KAAKm2F,GAAM,OAAO,EAClD,OAAO,GAUTg9qB,GAAan+vB,UAAU6/vB,WAAa,SAAqBpiuB,EAAOqiuB,EAAO56qB,QACpD,IAAV46qB,IAAmBA,GAAQ,QACZ,IAAf56qB,IAAwBA,EAAa,GAE5C,IAAI65X,EAAO,CAACp/d,MAgBZ,OAfA,YAAgBuhB,GAAO41Q,IACrB,IAAI2uU,GAAWvklB,GAAMw8vB,cAAcjguB,EAAOynD,GAC1C,GAAIuggB,MAAcq6K,GAASr6K,GAASo4K,UAChC,OAAO17S,EAASp6Z,KAAK+uN,GAAMxxR,IAAI,SAAUy6wB,IAAM,OAAOA,GAAG99S,mBAE7D,QAAS3zd,GAAI,EAAGA,GAAI4S,GAAMlW,KAAKtF,OAAQ4I,IAAK,EAAG,CAC7C,IAAI7G,GAAOyZ,GAAMlW,KAAKsD,IAAItD,GAAOkW,GAAMlW,KAAKsD,GAAI,GAChD,IAAM7G,GAAKwvwB,SAAUxvwB,GAAKi4wB,qBAA6C,GAAtB3gT,EAAKt/c,QAAQzU,IAAa,CACzE+zd,EAAK35d,KAAK4F,IACV,IAAI29D,GAAQ73C,GAAO9lB,GAAM8rR,GAAMxjP,OAAO7rC,KACtC,GAAIkhE,GAAS,OAAOA,KAKnB73C,CAAOnxB,KAAM,KAQtBw+wB,GAAan+vB,UAAUggwB,aAAe,SAAuB33wB,GAC3D,QAASiG,EAAI,EAAGA,EAAI3O,KAAKy+wB,UAAU14wB,OAAQ4I,GAAK,EAC5C,GAAI3O,KAAKy+wB,UAAU9vwB,IAAMjG,EAAU,OAAO1I,KAAKy+wB,UAAU9vwB,EAAI,GACjE,IAAI2xwB,EAAWtgxB,KAAKugxB,gBAAgB73wB,GACpC,YAAK+1wB,UAAUh5wB,KAAKiD,EAAQ43wB,GACrBA,GAGT9B,GAAan+vB,UAAUkgwB,gBAAkB,SAA0B73wB,GAEjE,QADI02d,EAAOv5d,OAAOm8D,OAAO,MAAO2N,EAAS,CAAC,CAACpuD,MAAOvhB,KAAM8H,KAAM,KAAM04wB,IAAK,OAClE7wsB,EAAO5pE,QAAQ,CACpB,IAAIsgC,EAAUspC,EAAOga,QAASpoE,GAAQ8kB,EAAQ9kB,MAC9C,GAAIA,GAAM88vB,UAAU31wB,GAAS,CAE3B,QADI6J,GAAS,GACJmtD,GAAMr5B,EAASq5B,GAAI53D,KAAM43D,GAAMA,GAAI8gtB,IACxCjuwB,GAAO9M,KAAKi6D,GAAI53D,MACpB,OAAOyK,GAAOw8E,UAEhB,QAASpgF,GAAI,EAAGA,GAAI4S,GAAMlW,KAAKtF,OAAQ4I,IAAK,EAAG,CAC7C,IAAI7G,GAAOyZ,GAAMlW,KAAKsD,KACjB7G,GAAK2mnB,SAAW3mnB,GAAKi4wB,sBAAwBj4wB,GAAK9C,QAAQo6d,MAAW/4b,EAAQv+B,MAAQyZ,GAAMlW,KAAKsD,GAAI,GAAGuvwB,YAC1GvusB,EAAOlqE,KAAK,CAAC8b,MAAOzZ,GAAKg2wB,aAAch2wB,KAAMA,GAAM04wB,IAAKn6uB,IACxD+4b,EAAKt3d,GAAK9C,OAAQ,MAS1B05wB,GAAqBE,UAAU//vB,IAAM,WACnC,OAAO7e,KAAKqL,KAAKtF,QAAU,GAM7By4wB,GAAan+vB,UAAUw/E,KAAO,SAAe/xF,GAC3C,IAAIa,EAAIb,GAAK,EACb,GAAIa,GAAK3O,KAAKqL,KAAKtF,OAAU,MAAM,IAAIm4d,WAAY,cAAgBpwd,EAAI,iCACvE,MAAO,CAAChG,KAAM9H,KAAKqL,KAAKsD,GAAItD,KAAMrL,KAAKqL,KAAKsD,EAAI,KAGlD6vwB,GAAan+vB,UAAUtV,SAAW,WAChC,IAAIq0d,EAAO,GAMX5yD,OALA,WAAc3vY,GACZuic,EAAK35d,KAAKo3B,GACV,QAASluB,EAAI,EAAGA,EAAIkuB,EAAExxB,KAAKtF,OAAQ4I,GAAK,GACL,GAA3Bywd,EAAKt/c,QAAQ+c,EAAExxB,KAAKsD,KAAa69Z,EAAK3vY,EAAExxB,KAAKsD,IAEvD69Z,CAAKxsa,MACEo/d,EAAKz5d,IAAI,SAAUk3B,EAAGluB,GAE3B,QADIwV,GAAMxV,GAAKkuB,EAAEqhvB,SAAW,IAAM,KAAO,IAChCsB,GAAM,EAAGA,GAAM3ivB,EAAExxB,KAAKtF,OAAQy5wB,IAAO,EAC1Cr7vB,KAAQq7vB,GAAM,KAAO,IAAM3ivB,EAAExxB,KAAKm0wB,IAAKx6wB,KAAO,KAAOo6d,EAAKt/c,QAAQ+c,EAAExxB,KAAKm0wB,GAAM,IACnF,OAAOr7vB,KACNsD,KAAK,OAGV5hB,OAAOszwB,iBAAkBqF,GAAan+vB,UAAWq+vB,IAEjDF,GAAa/+rB,MAAQ,IAAI++rB,IAAa,GAEtC,IAAIK,GAAc,SAAqB9/R,EAAQ1X,GAC7Crne,KAAK++e,OAASA,EACd/+e,KAAKqne,UAAYA,EACjBrne,KAAKyxsB,OAAS,KACdzxsB,KAAK6oF,IAAM,EACX7oF,KAAK8yC,OAASisc,EAAO/ne,MAAM,kBACgB,IAAvChX,KAAK8yC,OAAO9yC,KAAK8yC,OAAO/sC,OAAS,IAAY/F,KAAK8yC,OAAOhgB,MACvC,IAAlB9yB,KAAK8yC,OAAO,IAAY9yC,KAAK8yC,OAAO62C,SAGtC82rB,GAAyB,CAAEp1wB,KAAM,CAAE0swB,cAAc,IAUrD,YAAmBh+uB,GACjB,IAAIulvB,EAAQ,GACZ,GAAKA,EAAM75wB,KAAKi7wB,GAAa3mvB,UACtBA,EAAOq1iB,IAAI,MAClB,OAAuB,GAAhBkwM,EAAMv5wB,OAAcu5wB,EAAM,GAAK,CAACx3wB,KAAM,SAAUw3wB,MAAOA,GAGhE,YAAsBvlvB,GACpB,IAAIulvB,EAAQ,GACZ,GAAKA,EAAM75wB,KAAKk7wB,GAAmB5mvB,UAC5BA,EAAO1uB,MAAuB,KAAf0uB,EAAO1uB,MAA8B,KAAf0uB,EAAO1uB,MACnD,OAAuB,GAAhBi0wB,EAAMv5wB,OAAcu5wB,EAAM,GAAK,CAACx3wB,KAAM,MAAOw3wB,MAAOA,GAG7D,YAA4BvlvB,GAE1B,QADIswU,EA4CN,YAAuBtwU,GACrB,GAAIA,EAAOq1iB,IAAI,KAAM,CACnB,IAAI/kO,EAAOy0a,GAAU/kvB,GACrB,OAAKA,EAAOq1iB,IAAI,MAAQr1iB,EAAO1P,IAAI,yBAC5BggV,MACG,KAAKmxE,KAAKzhZ,EAAO1uB,MAAO,CAClC,IAAIi0wB,EAlBR,YAAqBvlvB,EAAQ/0B,GAC3B,IAAImyR,EAAQp9P,EAAOstc,UAAWv/d,EAAOqvR,EAAMnyR,GAC3C,GAAI8C,EAAQ,MAAO,CAACA,GACpB,IAAIyK,EAAS,GACb,QAASquwB,MAAYzpf,EAAO,CAC1B,IAAI0pf,GAAS1pf,EAAMypf,IACfC,GAAOrvtB,OAAO1xC,QAAQ9a,IAAQ,GAAMuN,EAAO9M,KAAKo7wB,IAEtD,OAAqB,GAAjBtuwB,EAAOxM,QAAeg0B,EAAO1P,IAAI,0BAA4BrlB,EAAO,WACjEuN,EASOuuwB,CAAY/mvB,EAAQA,EAAO1uB,MAAM1F,IAAI,SAAUmC,GACzD,OAAqB,MAAjBiyB,EAAO03qB,OAAkB13qB,EAAO03qB,OAAS3psB,EAAKs0wB,SACzCrivB,EAAO03qB,QAAU3psB,EAAKs0wB,UAAYrivB,EAAO1P,IAAI,mCAC/C,CAACviB,KAAM,OAAQnE,MAAOmE,KAE/BiyB,SAAO8uD,MACgB,GAAhBy2rB,EAAMv5wB,OAAcu5wB,EAAM,GAAK,CAACx3wB,KAAM,SAAUw3wB,MAAOA,GAE9DvlvB,EAAO1P,IAAI,qBAAuB0P,EAAO1uB,KAAO,KA1DvC01wB,CAAchnvB,KAEvB,GAAIA,EAAOq1iB,IAAI,KACX/kO,EAAO,CAACviW,KAAM,OAAQuiW,KAAMA,WACvBtwU,EAAOq1iB,IAAI,KAChB/kO,EAAO,CAACviW,KAAM,OAAQuiW,KAAMA,WACvBtwU,EAAOq1iB,IAAI,KAChB/kO,EAAO,CAACviW,KAAM,MAAOuiW,KAAMA,YACtBtwU,EAAOq1iB,IAAI,KAEb,MADH/kO,EAAO22a,GAAejnvB,EAAQswU,GAGpC,OAAOA,EAGT,YAAkBtwU,GACZ,KAAKyhZ,KAAKzhZ,EAAO1uB,OAAS0uB,EAAO1P,IAAI,yBAA2B0P,EAAO1uB,KAAO,KAClF,IAAIkH,EAAS+7C,OAAOv0B,EAAO1uB,MAC3B0uB,SAAO8uD,MACAt2E,EAGT,YAAwBwnB,EAAQswU,GAC9B,IAAI53T,EAAMwuuB,GAASlnvB,GAASvrB,EAAMikC,EAClC,OAAI1Y,EAAOq1iB,IAAI,OACa5gkB,EAAP,KAAfurB,EAAO1uB,KAAqB41wB,GAASlnvB,IAC5B,GAEVA,EAAOq1iB,IAAI,MAAQr1iB,EAAO1P,IAAI,yBAC5B,CAACviB,KAAM,QAAS2qC,IAAKA,EAAKjkC,IAAKA,EAAK67V,KAAMA,GAwGnD,YAAal4U,EAAGD,GAAK,OAAOA,EAAIC,EAKhC,YAAkB4svB,EAAK35vB,GACrB,IAAI7S,EAAS,GACbi6Z,OAGA,WAAcpnZ,GACZ,IAAI0oH,GAAQixoB,EAAI35vB,GAChB,GAAoB,GAAhB0oH,GAAM/nI,SAAgB+nI,GAAM,GAAGglV,KAAQ,OAAOtmD,EAAK1+R,GAAM,GAAGL,IAChEl7H,EAAO9M,KAAK2f,GACZ,QAASzW,GAAI,EAAGA,GAAIm/H,GAAM/nI,OAAQ4I,KAAK,CACrC,IAAI8xG,GAAMqtB,GAAMn/H,IAEZ8+H,GAAKhtB,GAAIgtB,IADFhtB,GAAIqyW,OAEoB,GAAtBvgd,EAAOuN,QAAQ2tH,KAAa++R,EAAK/+R,KAXlD++R,CAAKpnZ,GACE7S,EAAOuH,KAAKqwa,IAgErB,YAAsBn9M,GACpB,IAAIq1O,EAAWx8c,OAAOm8D,OAAO,MAC7B,QAASk/sB,KAAYl0iB,EAAO,CAC1B,IAAI6tP,EAAO7tP,EAAMk0iB,GACjB,IAAKrmT,EAAKsmT,WAAc,OAAO,KAC/B9+T,EAAS6+T,GAAYrmT,EAAK5tP,QAE5B,OAAOo1O,EAGT,YAAsBr1O,EAAOrpO,GAC3B,IAAIy9wB,EAAQv7wB,OAAOm8D,OAAO,MAC1B,QAASh9D,KAAQgoO,EAAO,CACtB,IAAIq0iB,EAAQ19wB,GAASA,EAAMqB,GAC3B,QAAcG,IAAVk8wB,EAAqB,CACvB,IAAIxmT,GAAO7tP,EAAMhoO,GACjB,IAAI61d,GAAKsmT,WACF,MAAM,IAAIjjT,WAAW,mCAAqCl5d,GAD1Cq8wB,EAAQxmT,GAAK5tP,QAGtCm0iB,EAAMp8wB,GAAQq8wB,EAEhB,OAAOD,EAGT,YAAmBp0iB,GACjB,IAAIz6N,EAAS1M,OAAOm8D,OAAO,MAC3B,GAAIgrK,EAAS,QAAShoO,KAAQgoO,EAASz6N,EAAOvN,GAAQ,IAAIs8wB,GAAUt0iB,EAAMhoO,IAC1E,OAAOuN,EA/PTkuwB,GAAuBp1wB,KAAKwT,IAAM,WAAc,OAAO7e,KAAK8yC,OAAO9yC,KAAK6oF,MAExEg2rB,GAAYx+vB,UAAU+ujB,IAAM,SAAcoxK,GAAO,OAAOxgvB,KAAKqL,MAAQm1uB,IAAQxgvB,KAAK6oF,QAAS,IAE3Fg2rB,GAAYx+vB,UAAUgK,IAAM,SAAc9H,GAAO,MAAM,IAAIg/vB,YAAYh/vB,EAAM,4BAA8BviB,KAAK++e,OAAS,OAEzHl5e,OAAOszwB,iBAAkB0F,GAAYx+vB,UAAWogwB,IAgQhD,IAAIe,GAAW,SAAkBx8wB,EAAM8nO,EAAQy2P,GAG7Cvje,KAAKgF,KAAOA,EAIZhF,KAAK8sO,OAASA,EAId9sO,KAAKuje,KAAOA,EAEZvje,KAAKwxD,OAAS+xa,EAAK76b,MAAQ66b,EAAK76b,MAAM1xB,MAAM,KAAO,GACnDhX,KAAKgtO,MAAQy0iB,GAAUl+S,EAAKv2P,OAE5BhtO,KAAKs9wB,aAAeA,GAAat9wB,KAAKgtO,OAItChtO,KAAK89wB,aAAe,KAKpB99wB,KAAK0hxB,QAAU,KAIf1hxB,KAAKw8wB,cAAgB,KAIrBx8wB,KAAKs4wB,UAAY/0S,EAAKkuO,QAAkB,QAARzssB,GAIhChF,KAAKs3wB,OAAiB,QAARtywB,GAGZ28wB,GAAuB,CAAEvF,SAAU,CAAErE,cAAc,GAAOtzS,YAAa,CAAEszS,cAAc,GAAOtpJ,OAAQ,CAAEspJ,cAAc,GAAOoF,OAAQ,CAAEpF,cAAc,IAIzJ4J,GAAqBvF,SAASv9vB,IAAM,WAAc,OAAQ7e,KAAKs4wB,SAK/DqJ,GAAqBl9S,YAAY5ld,IAAM,WAAc,OAAO7e,KAAKs4wB,SAAWt4wB,KAAKw8wB,eAIjFmF,GAAqBlzJ,OAAO5vmB,IAAM,WAAc,OAAO7e,KAAK89wB,cAAgBU,GAAa/+rB,OAKzFkisB,GAAqBxE,OAAOt+vB,IAAM,WAAc,OAAO7e,KAAKyunB,QAAUzunB,KAAKuje,KAAKhG,MAIhFikT,GAASnhwB,UAAU0/vB,iBAAmB,WACpC,QAASjywB,KAAK9N,KAAKgtO,MAAS,GAAIhtO,KAAKgtO,MAAMl/N,GAAG8zwB,WAAc,OAAO,EACnE,OAAO,GAGTJ,GAASnhwB,UAAU06vB,kBAAoB,SAA4B17sB,GACjE,OAAOr/D,MAAQq/D,GAASr/D,KAAK89wB,aAAamC,WAAW5gtB,EAAMy+sB,eAG7D0D,GAASnhwB,UAAUwhwB,aAAe,SAAyB70iB,GACzD,OAAKA,GAAShtO,KAAKs9wB,aAAuBt9wB,KAAKs9wB,aACjCuE,GAAa7hxB,KAAKgtO,MAAOA,IAUzCw0iB,GAASnhwB,UAAU2hD,OAAS,SAAiBgrK,EAAOpuN,EAAS+uN,GAC3D,GAAI3tO,KAAKs3wB,OAAU,MAAM,IAAI7gwB,MAAM,8CACnC,OAAO,IAAIo5H,GAAK7vI,KAAMA,KAAK6hxB,aAAa70iB,GAAQw1P,EAASp6Z,KAAKxpD,GAAU06vB,EAAKS,QAAQpsiB,KAOvF6ziB,GAASnhwB,UAAUyhwB,cAAgB,SAAwB90iB,EAAOpuN,EAAS+uN,GAEzE,GADA/uN,EAAU4jd,EAASp6Z,KAAKxpD,IACnB5e,KAAKs7wB,aAAa18vB,GACnB,MAAM,IAAIs/c,WAAW,4BAA8Bl+d,KAAKgF,MAC5D,OAAO,IAAI6qI,GAAK7vI,KAAMA,KAAK6hxB,aAAa70iB,GAAQpuN,EAAS06vB,EAAKS,QAAQpsiB,KAUxE6ziB,GAASnhwB,UAAUiid,cAAgB,SAAwBt1P,EAAOpuN,EAAS+uN,GAGzE,GAFAX,EAAQhtO,KAAK6hxB,aAAa70iB,IAC1BpuN,EAAU4jd,EAASp6Z,KAAKxpD,IACZowC,KAAM,CAChB,IAAIhD,EAAShsD,KAAK89wB,aAAaoC,WAAWthwB,GAC1C,IAAKotC,EAAU,OAAO,KACtBptC,EAAUotC,EAAO96B,OAAOtS,GAE1B,IAAIk/B,GAAQ99C,KAAK89wB,aAAaC,cAAcn/vB,GAASshwB,WAAW19S,EAAS/iZ,OAAO,GAChF,OAAK3hC,GACE,IAAI+xF,GAAK7vI,KAAMgtO,EAAOpuN,EAAQsS,OAAO4sB,IAAQw7tB,EAAKS,QAAQpsiB,IAD5C,MAOvB6ziB,GAASnhwB,UAAUi7vB,aAAe,SAAuB18vB,GACvD,IAAIrM,EAASvS,KAAK89wB,aAAaC,cAAcn/vB,GAC7C,IAAKrM,IAAWA,EAAO2rwB,SAAY,OAAO,EAC1C,QAASvvwB,EAAI,EAAGA,EAAIiQ,EAAQw/c,WAAYzvd,IACpC,IAAK3O,KAAKm+wB,YAAYv/vB,EAAQ6/C,MAAM9vD,GAAGg/N,OAAU,OAAO,EAC5D,OAAO,GAKT6ziB,GAASnhwB,UAAU0hwB,eAAiB,SAAyBC,GAC3D,OAAuB,MAAhBhixB,KAAK0hxB,SAAmB1hxB,KAAK0hxB,QAAQ5hwB,QAAQkiwB,IAAY,GAKlER,GAASnhwB,UAAU89vB,YAAc,SAAsBxwiB,GACrD,GAAoB,MAAhB3tO,KAAK0hxB,QAAmB,OAAO,EACnC,QAAS/ywB,EAAI,EAAGA,EAAIg/N,EAAM5nO,OAAQ4I,IAAO,IAAK3O,KAAK+hxB,eAAep0iB,EAAMh/N,GAAG7G,MAAS,OAAO,EAC3F,OAAO,GAKT05wB,GAASnhwB,UAAU4hwB,aAAe,SAAuBt0iB,GACvD,GAAoB,MAAhB3tO,KAAK0hxB,QAAmB,OAAO/ziB,EAEnC,QADI5oK,EACKp2D,EAAI,EAAGA,EAAIg/N,EAAM5nO,OAAQ4I,IAC3B3O,KAAK+hxB,eAAep0iB,EAAMh/N,GAAG7G,MAEvBi9D,GACTA,EAAKt/D,KAAKkoO,EAAMh/N,IAFXo2D,IAAQA,EAAO4oK,EAAM/+N,MAAM,EAAGD,IAKvC,OAAOw3kB,EAAgBphhB,EAAKh/D,OAASg/D,EAAOu0sB,EAAK75rB,MAAlCkuJ,GAGjB6ziB,GAASjjS,QAAU,SAAkB98W,EAAOqrG,GAC1C,IAAIv6N,EAAS1M,OAAOm8D,OAAO,MAC3By/D,EAAM76H,QAAQ,SAAU5B,GAAMu+d,IAAQ,OAAOhxd,EAAOvN,IAAQ,IAAIw8wB,GAASx8wB,GAAM8nO,EAAQy2P,MAEvF,IAAI2+S,EAAUp1iB,EAAOy2P,KAAK4+S,SAAW,MACrC,IAAK5vwB,EAAO2vwB,GAAY,MAAM,IAAIhkT,WAAW,yCAA2CgkT,EAAU,MAClG,IAAK3vwB,EAAOzH,KAAQ,MAAM,IAAIozd,WAAW,oCACzC,QAAShzd,MAAKqH,EAAOzH,KAAKkiO,MAAS,MAAM,IAAIkxP,WAAW,iDAExD,OAAO3rd,GAGT1M,OAAOszwB,iBAAkBqI,GAASnhwB,UAAWshwB,IAI7C,IAAIL,GAAY,SAAmBviwB,GACjC/e,KAAKmhxB,WAAat7wB,OAAOwa,UAAUgsB,eAAezY,KAAK7U,EAAS,WAChE/e,KAAKitO,QAAUluN,EAAQkuN,SAGrBm1iB,GAAyB,CAAER,WAAY,CAAE7J,cAAc,IAE3DqK,GAAuBR,WAAW/iwB,IAAM,WACtC,OAAQ7e,KAAKmhxB,YAGft7wB,OAAOszwB,iBAAkBmI,GAAUjhwB,UAAW+hwB,IAQ9C,IAAIC,GAAW,SAAkBr9wB,EAAM20wB,EAAM7siB,EAAQy2P,GAGnDvje,KAAKgF,KAAOA,EAIZhF,KAAK8sO,OAASA,EAId9sO,KAAKuje,KAAOA,EAEZvje,KAAKgtO,MAAQy0iB,GAAUl+S,EAAKv2P,OAE5BhtO,KAAK25wB,KAAOA,EACZ35wB,KAAKspqB,SAAW,KAChB,IAAIjnN,GAAWi7T,GAAat9wB,KAAKgtO,OACjChtO,KAAKohB,SAAWihc,IAAY,IAAIi3T,EAAKt5wB,KAAMqid,KAO7CggU,GAAShiwB,UAAU2hD,OAAS,SAAiBgrK,GAC3C,OAAKA,GAAShtO,KAAKohB,SAAmBphB,KAAKohB,SACpC,IAAIk4vB,EAAKt5wB,KAAM6hxB,GAAa7hxB,KAAKgtO,MAAOA,KAGjDq1iB,GAAS9jS,QAAU,SAAkB5wQ,EAAOb,GAC1C,IAAIv6N,EAAS1M,OAAOm8D,OAAO,MAAO23sB,EAAO,EACzChsiB,SAAM/mO,QAAQ,SAAU5B,GAAMu+d,IAAQ,OAAOhxd,EAAOvN,IAAQ,IAAIq9wB,GAASr9wB,GAAM20wB,IAAQ7siB,EAAQy2P,MACxFhxd,GAMT8vwB,GAAShiwB,UAAUu5vB,cAAgB,SAAwBvnvB,GACzD,QAAS1jB,EAAI,EAAGA,EAAI0jB,EAAItsB,OAAQ4I,IAAW0jB,EAAI1jB,GAAG7G,MAAQ9H,OACxDqyB,EAAMA,EAAIzjB,MAAM,EAAGD,GAAGglC,OAAOthB,EAAIzjB,MAAMD,EAAI,IAC3CA,KAEF,OAAO0jB,GAKTgwvB,GAAShiwB,UAAUw5vB,QAAU,SAAkBxnvB,GAC7C,QAAS1jB,EAAI,EAAGA,EAAI0jB,EAAItsB,OAAQ4I,IAC5B,GAAI0jB,EAAI1jB,GAAG7G,MAAQ9H,KAAQ,OAAOqyB,EAAI1jB,IAM5C0zwB,GAAShiwB,UAAUq5vB,SAAW,SAAmBr6sB,GAC/C,OAAOr/D,KAAKspqB,SAASxppB,QAAQu/C,IAAS,GAwKxC,IAAIquK,GAAS,SAAgB61P,GAQ3B,QAAS7za,KADT1vD,KAAKuje,KAAO,GACKA,EAAQvje,KAAKuje,KAAK7za,GAAQ6za,EAAK7za,GAChD1vD,KAAKuje,KAAK9hW,MAAQo1oB,OAAgBtzS,EAAK9hW,OACvCzhI,KAAKuje,KAAK51P,MAAQkpiB,OAAgBtzS,EAAK51P,OAIvC3tO,KAAKyhI,MAAQ+/oB,GAASjjS,QAAQv+e,KAAKuje,KAAK9hW,MAAOzhI,MAI/CA,KAAK2tO,MAAQ00iB,GAAS9jS,QAAQv+e,KAAKuje,KAAK51P,MAAO3tO,MAE/C,IAAIsixB,EAAmBz8wB,OAAOm8D,OAAO,MACrC,QAASugtB,KAAUvixB,KAAKyhI,MAAO,CAC7B,GAAI8gpB,KAAUvixB,KAAK2tO,MACf,MAAM,IAAIuwP,WAAWqkT,EAAS,sCAClC,IAAIz6wB,GAAO9H,KAAKyhI,MAAM8gpB,GAASC,GAAc16wB,GAAKy7d,KAAK3kd,SAAW,GAAI6jwB,GAAW36wB,GAAKy7d,KAAK51P,MAC3F7lO,GAAKg2wB,aAAewE,EAAiBE,MAClCF,EAAiBE,IAAehE,GAAalwvB,MAAMk0vB,GAAaxixB,KAAKyhI,QACxE35H,GAAK00wB,cAAgB10wB,GAAKg2wB,aAAatB,cACvC10wB,GAAK45wB,QAAsB,KAAZe,GAAkB,KAC/BA,GAAWC,GAAY1ixB,KAAMyixB,GAASzrwB,MAAM,MAChC,IAAZyrwB,IAAmB36wB,GAAK00wB,cAAqB,KAAL,GAE5C,QAASmG,MAAU3ixB,KAAK2tO,MAAO,CAC7B,IAAIkziB,GAAS7gxB,KAAK2tO,MAAMg1iB,IAASC,GAAO/B,GAAOt9S,KAAKm2S,SACpDmH,GAAOv3G,SAAmB,MAARs5G,GAAe,CAAC/B,IAAkB,IAAR+B,GAAa,GAAKF,GAAY1ixB,KAAM4ixB,GAAK5rwB,MAAM,MAG7FhX,KAAKg5wB,aAAeh5wB,KAAKg5wB,aAAanzvB,KAAK7lB,MAC3CA,KAAKu+wB,aAAev+wB,KAAKu+wB,aAAa14vB,KAAK7lB,MAK3CA,KAAK6ixB,YAAc7ixB,KAAKyhI,MAAMzhI,KAAKuje,KAAK4+S,SAAW,OAMnDnixB,KAAKske,OAASz+d,OAAOm8D,OAAO,MAC5BhiE,KAAKske,OAAOw+S,UAAYj9wB,OAAOm8D,OAAO,OAsDxC,YAAqB8qK,EAAQa,GAE3B,QADI3kK,EAAQ,GACHr6D,EAAI,EAAGA,EAAIg/N,EAAM5nO,OAAQ4I,IAAK,CACrC,IAAI3J,EAAO2oO,EAAMh/N,GAAI45d,GAAOz7P,EAAOa,MAAM3oO,GAAOkiB,GAAKqhd,GACrD,GAAIA,GACFv/Z,EAAMvjE,KAAK8ie,SAEX,QAAS74a,MAAQo9K,EAAOa,MAAO,CAC7B,IAAIo1iB,GAASj2iB,EAAOa,MAAMj+K,KACd,KAAR1qD,GAAgB+9wB,GAAOx/S,KAAK76b,OAASq6uB,GAAOx/S,KAAK76b,MAAM1xB,MAAM,KAAK8I,QAAQ9a,IAAQ,IAClFgkE,EAAMvjE,KAAKyhB,GAAK67vB,IAGxB,IAAK77vB,GAAM,MAAM,IAAIq6vB,YAAY,uBAAyB5ziB,EAAMh/N,GAAK,KAEvE,OAAOq6D,EA7DT0kK,GAAOrtN,UAAU+E,KAAO,SAAetd,EAAMklO,EAAOpuN,EAAS+uN,GAC3D,GAAmB,iBAAR7lO,EACPA,EAAO9H,KAAKkkX,SAASp8W,aACdA,aAAgB05wB,IACvB,MAAM,IAAItjT,WAAW,sBAAwBp2d,GAC5C,GAAIA,EAAKglO,QAAU9sO,KACpB,MAAM,IAAIk+d,WAAW,yCAA2Cp2d,EAAK9C,KAAO,KAEhF,OAAO8C,EAAKg6wB,cAAc90iB,EAAOpuN,EAAS+uN,IAM5CD,GAAOrtN,UAAUvV,KAAO,SAAek4wB,EAAQr1iB,GAC7C,IAAI7lO,EAAO9H,KAAKyhI,MAAM32H,KACtB,OAAO,IAAI8lrB,GAAS9orB,EAAMA,EAAKw1wB,aAAc0F,EAAQ1J,EAAKS,QAAQpsiB,KAKpED,GAAOrtN,UAAUkod,KAAO,SAAezge,EAAMklO,GAC3C,MAAmB,iBAARllO,IAAoBA,EAAO9H,KAAK2tO,MAAM7lO,IAC1CA,EAAKk6D,OAAOgrK,IAMrBU,GAAOrtN,UAAU24vB,aAAe,SAAuB/3S,GACrD,OAAOpxV,GAAKkpoB,SAAS/4wB,KAAMihe,IAM7BvzP,GAAOrtN,UAAUk+vB,aAAe,SAAuBt9S,GACrD,OAAOq4S,EAAKP,SAAS/4wB,KAAMihe,IAG7BvzP,GAAOrtN,UAAU6jW,SAAW,SAAmBl/W,GAC7C,IAAIgkE,EAAQhpE,KAAKyhI,MAAMz8H,GACvB,IAAKgkE,EAAS,MAAM,IAAIk1Z,WAAW,sBAAwBl5d,GAC3D,OAAOgkE,GAuKT,IAAIyrsB,GAAY,SAAmB3niB,EAAQg7U,GACzC,IAAIm7N,EAASjjxB,KAIbA,KAAK8sO,OAASA,EAId9sO,KAAK8njB,MAAQA,EACb9njB,KAAK86c,KAAO,GACZ96c,KAAKy4H,OAAS,GAEdqvb,EAAMlhjB,QAAQ,SAAU4okB,GAClBA,EAAKriW,IAAO81iB,EAAOnoU,KAAKr1c,KAAK+pkB,GACxBA,EAAKrlkB,OAAS84wB,EAAOxqpB,OAAOhzH,KAAK+pkB,KAI5CxvkB,KAAKkjxB,gBAAkBljxB,KAAK86c,KAAK/2Z,KAAK,SAAU8M,GAC9C,IAAK,aAAa2qX,KAAK3qX,EAAEs8K,OAASt8K,EAAEzrC,KAAQ,OAAO,EACnD,IAAIA,GAAO0nN,EAAOrrG,MAAM5wE,EAAEzrC,MAC1B,OAAOA,GAAK04vB,aAAaO,UAAUj5vB,OAMvCqvvB,GAAUp0vB,UAAUiO,MAAQ,SAAgB++M,EAAKtuN,QAC5B,IAAZA,IAAqBA,EAAU,IAEtC,IAAIqkD,EAAU,IAAI+/sB,GAAanjxB,KAAM+e,GAAS,GAC9CqkD,SAAQggtB,OAAO/1iB,EAAK,KAAMtuN,EAAQqpD,KAAMrpD,EAAQ0uH,IACzCrqE,EAAQ60S,UAUjBw8Z,GAAUp0vB,UAAUgjwB,WAAa,SAAqBh2iB,EAAKtuN,QACtC,IAAZA,IAAqBA,EAAU,IAEtC,IAAIqkD,EAAU,IAAI+/sB,GAAanjxB,KAAM+e,GAAS,GAC9CqkD,SAAQggtB,OAAO/1iB,EAAK,KAAMtuN,EAAQqpD,KAAMrpD,EAAQ0uH,IACzCi1V,EAAM+4S,QAAQr4sB,EAAQ60S,WAG/Bw8Z,GAAUp0vB,UAAUijwB,SAAW,SAAmBj2iB,EAAKjqK,EAAStlB,GAC9D,QAASnvC,EAAImvC,EAAQ99C,KAAK86c,KAAKh7b,QAAQg+B,GAAS,EAAI,EAAGnvC,EAAI3O,KAAK86c,KAAK/0c,OAAQ4I,IAAK,CAChF,IAAI6gkB,GAAOxvkB,KAAK86c,KAAKnsc,GACrB,GAAIupG,GAAQm1H,EAAKmiW,GAAKriW,YACEhoO,IAAnBqqkB,GAAKplN,WAA2B/8I,EAAIqniB,cAAgBllM,GAAKplN,cACxDolN,GAAKpsgB,SAAWA,EAAQmgtB,eAAe/zM,GAAKpsgB,UAAW,CAC3D,GAAIosgB,GAAKpiW,SAAU,CACjB,IAAI76N,GAASi9jB,GAAKpiW,SAASC,GAC3B,IAAe,IAAX96N,GAAoB,SACxBi9jB,GAAKxiW,MAAQz6N,GAEf,OAAOi9jB,MAKbilM,GAAUp0vB,UAAUmjwB,WAAa,SAAqB9ztB,EAAM/rD,EAAOy/D,EAAStlB,GAC1E,QAASnvC,GAAImvC,EAAQ99C,KAAKy4H,OAAO34G,QAAQg+B,GAAS,EAAI,EAAGnvC,GAAI3O,KAAKy4H,OAAO1yH,OAAQ4I,KAAK,CACpF,IAAI6gkB,GAAOxvkB,KAAKy4H,OAAO9pH,IACvB,KAAgC,GAA5B6gkB,GAAKrlkB,MAAM2V,QAAQ4vC,IACnB8/gB,GAAKpsgB,UAAYA,EAAQmgtB,eAAe/zM,GAAKpsgB,UAI7CosgB,GAAKrlkB,MAAMpE,OAAS2pD,EAAK3pD,SACc,IAAtCypkB,GAAKrlkB,MAAMynO,WAAWliL,EAAK3pD,SAAiBypkB,GAAKrlkB,MAAMyE,MAAM8gD,EAAK3pD,OAAS,IAAMpC,IAEtF,IAAI6rkB,GAAKpiW,SAAU,CACjB,IAAI76N,GAASi9jB,GAAKpiW,SAASzpO,GAC3B,IAAe,IAAX4O,GAAoB,SACxBi9jB,GAAKxiW,MAAQz6N,GAEf,OAAOi9jB,MAKXilM,GAAUgP,YAAc,SAAsB32iB,GAC5C,IAAIv6N,EAAS,GACb,WAAgBi9jB,IAEd,QADIk0M,GAA4B,MAAjBl0M,GAAKk0M,SAAmB,GAAKl0M,GAAKk0M,SAAU/0wB,GAAI,EACxDA,GAAI4D,EAAOxM,OAAQ4I,KAAK,CAC7B,IAAItD,GAAOkH,EAAO5D,IAClB,IADsD,MAAjBtD,GAAKq4wB,SAAmB,GAAKr4wB,GAAKq4wB,UACpDA,GAAY,MAEjCnxwB,EAAOuR,OAAOnV,GAAG,EAAG6gkB,IAGtB,IAUMm0M,GAVF9jI,EAAO,SAAW76oB,IACpB,IAAI8ijB,GAAQh7U,EAAOa,MAAM3oO,IAAMu+d,KAAKr2P,SAChC46U,IAASA,GAAMlhjB,QAAQ,SAAU4okB,IACnChxf,EAAOgxf,GAAOzqgB,GAAKyqgB,KACnBA,GAAKjnG,KAAOvje,MAId,QAASA,MAAQ8nO,EAAOa,MAAOkya,EAAM76oB,IASrC,QAAS4+wB,MAAU92iB,EAAOrrG,MAPtBkipB,cAAU72iB,EAAOrrG,MAAMmipB,IAAQrgT,KAAKr2P,WACzBy2iB,GAAQ/8wB,QAAQ,SAAU4okB,IACvChxf,EAAOgxf,GAAOzqgB,GAAKyqgB,KACnBA,GAAKpqjB,KAAOw+vB,KAKhB,OAAOrxwB,GAOTkiwB,GAAUoP,WAAa,SAAqB/2iB,GAC1C,OAAOA,EAAOw3P,OAAOw/S,YAClBh3iB,EAAOw3P,OAAOw/S,UAAY,IAAIrP,GAAU3niB,EAAQ2niB,GAAUgP,YAAY32iB,MAI3E,IAAIi3iB,GAAY,CACd9gqB,SAAS,EAAM+gqB,SAAS,EAAMC,OAAO,EAAMtmT,YAAY,EAAMlib,QAAQ,EACrEyouB,IAAI,EAAMh6X,KAAK,EAAMi6X,IAAI,EAAMp6uB,UAAU,EAAMq6uB,YAAY,EAAMC,QAAQ,EACzEp/Q,QAAQ,EAAM18f,MAAM,EAAM+7wB,IAAI,EAAMC,IAAI,EAAMC,IAAI,EAAMC,IAAI,EAAMC,IAAI,EACtEC,IAAI,EAAM18vB,QAAQ,EAAM28vB,QAAQ,EAAMv4L,IAAI,EAAMhogB,IAAI,EAAMwgsB,UAAU,EAAM1lC,IAAI,EAC9E1stB,QAAQ,EAAMgyC,GAAG,EAAM28S,KAAK,EAAM0ja,SAAS,EAAM//W,OAAO,EAAMm6U,OAAO,EAAMt3Z,IAAI,GAI7Em9b,GAAa,CACf3nb,MAAM,EAAMynb,UAAU,EAAMh8wB,QAAQ,EAAM2kJ,QAAQ,EAAMrjJ,OAAO,EAAMyiD,OAAO,GAI1Eo4tB,GAAW,CAAC7lC,IAAI,EAAMv3Z,IAAI,GAK9B,YAAsB8mJ,GACpB,OAAQA,EAHY,EAG2B,IAA6B,SAAvBA,EAHP,EAG8D,GAG9G,IAAIu2S,GAAc,SAAqBn9wB,EAAMklO,EAAOW,EAAOu3iB,EAAcnY,GAAOxrvB,GAAOxC,IACrF/e,KAAK8H,KAAOA,EACZ9H,KAAKgtO,MAAQA,EACbhtO,KAAK+swB,MAAQA,GACb/swB,KAAKuhB,MAAQA,KAVoD,EAU1CxC,GAA0B,KAAOjX,EAAKg2wB,cAC7D99wB,KAAK+e,QAAUA,GACf/e,KAAK4e,QAAU,GAEf5e,KAAK2tO,MAAQA,EAEb3tO,KAAKmlxB,YAAc7L,EAAKv6uB,KAExB/+B,KAAKklxB,aAAeA,EAEpBllxB,KAAKolxB,WAAa,IAGpBH,GAAY5kwB,UAAUggwB,aAAe,SAAuBj7vB,GAC1D,IAAKplB,KAAKuhB,MAAO,CACf,IAAKvhB,KAAK8H,KAAQ,MAAO,GACzB,IAAI4G,EAAO1O,KAAK8H,KAAKg2wB,aAAaoC,WAAW19S,EAASp6Z,KAAKhjD,IAC3D,IAAI1W,EAEG,CACL,IAAoC4rD,EAAhCttC,EAAQhtB,KAAK8H,KAAKg2wB,aACtB,OAAIxjtB,EAAOttC,EAAMqzvB,aAAaj7vB,EAAKtd,QACjC9H,KAAKuhB,MAAQyL,EACNstC,GAEA,KAPTt6D,KAAKuhB,MAAQvhB,KAAK8H,KAAKg2wB,aAAaC,cAAcrvwB,GAWtD,OAAO1O,KAAKuhB,MAAM8+vB,aAAaj7vB,EAAKtd,OAGtCm9wB,GAAY5kwB,UAAU43V,OAAS,SAAiBgia,GAC9C,KA3CoB,EA2Cdj6wB,KAAK+e,SAA4B,CACrC,IAAkD8d,EAA9Cy6F,EAAOt3H,KAAK4e,QAAQ5e,KAAK4e,QAAQ7Y,OAAS,GAC1CuxH,GAAQA,EAAKggpB,SAAWz6uB,EAAI,oBAAoB+pU,KAAKtvO,EAAKxsH,SACxDwsH,EAAKxsH,KAAK/E,QAAU82B,EAAE,GAAG92B,OAAU/F,KAAK4e,QAAQkU,MAC7C9yB,KAAK4e,QAAQ5e,KAAK4e,QAAQ7Y,OAAS,GAAKuxH,EAAKihpB,SAASjhpB,EAAKxsH,KAAK8D,MAAM,EAAG0oH,EAAKxsH,KAAK/E,OAAS82B,EAAE,GAAG92B,UAG5G,IAAI6Y,EAAU4jd,EAASp6Z,KAAKpoE,KAAK4e,SACjC,OAAKq7vB,GAAWj6wB,KAAKuhB,QACjB3C,EAAUA,EAAQsS,OAAOlxB,KAAKuhB,MAAM2+vB,WAAW19S,EAAS/iZ,OAAO,KAC5Dz/E,KAAK8H,KAAO9H,KAAK8H,KAAKk6D,OAAOhiE,KAAKgtO,MAAOpuN,EAAS5e,KAAK2tO,OAAS/uN,GAGzEqmwB,GAAY5kwB,UAAUglwB,iBAAmB,SAA2B98S,GAClE,QAAS55d,EAAI3O,KAAKolxB,WAAWr/wB,OAAS,EAAG4I,GAAK,EAAGA,IAC7C,GAAI45d,EAAKnF,GAAGpje,KAAKolxB,WAAWz2wB,IAAO,OAAO3O,KAAKolxB,WAAWthwB,OAAOnV,EAAG,GAAG,IAG7Es2wB,GAAY5kwB,UAAUilwB,aAAe,SAAuBC,GAC1D,QAAS52wB,EAAI,EAAGwiE,EAAUnxE,KAAKklxB,aAAcv2wB,EAAIwiE,EAAQprE,OAAQ4I,IAAK,CACpE,IAAI45d,EAAOp3Z,EAAQxiE,IACd3O,KAAK8H,KAAO9H,KAAK8H,KAAKi6wB,eAAex5S,EAAKzge,MAAQ09wB,GAAaj9S,EAAKzge,KAAMy9wB,MAC1Eh9S,EAAKsxS,QAAQ75wB,KAAKmlxB,eACrBnlxB,KAAKmlxB,YAAc58S,EAAKixS,SAASx5wB,KAAKmlxB,aACtCnlxB,KAAKklxB,aAAe38S,EAAKqxS,cAAc55wB,KAAKklxB,iBAKlDD,GAAY5kwB,UAAUolwB,cAAgB,SAAwBrgwB,GAC5D,OAAIplB,KAAK8H,KAAe9H,KAAK8H,KAAK00wB,cAC9Bx8wB,KAAK4e,QAAQ7Y,OAAiB/F,KAAK4e,QAAQ,GAAGw9vB,SAC3Ch3vB,EAAKqoI,aAAes2nB,GAAU13uB,eAAejnB,EAAKqoI,WAAWhzF,SAASp/B,gBAG/E,IAAI8nvB,GAAe,SAAsBv0pB,EAAQ7vG,EAASgJ,GAExD/nB,KAAK4uH,OAASA,EAEd5uH,KAAK+e,QAAUA,EACf/e,KAAKk+X,OAASn2W,EACd,IAA+B29vB,GAA3BvD,EAAUpjwB,EAAQojwB,QAClBwD,GAAaC,GAAa7mwB,EAAQ2vd,qBAAuB3md,EArFI,EAqFmB,GAEhF29vB,GADAvD,EACa,IAAI8C,GAAY9C,EAAQr6wB,KAAMq6wB,EAAQn1iB,MAAOssiB,EAAKv6uB,KAAMu6uB,EAAKv6uB,MAAM,EACrDhgB,EAAQ8mwB,UAAY1D,EAAQr6wB,KAAKg2wB,aAAc6H,IAE7D,IAAIV,GADZl9vB,EACwB,KAEA6mG,EAAOk+G,OAAO+1iB,YAFR,KAAMvJ,EAAKv6uB,KAAMu6uB,EAAKv6uB,MAAM,EAAM,KAAM4mvB,IAG/E3lxB,KAAKyhI,MAAQ,CAACikpB,IAEd1lxB,KAAK+nB,KAAO,EACZ/nB,KAAKuG,KAAOwY,EAAQ+mwB,cACpB9lxB,KAAK+lxB,YAAa,GAGhBC,GAAuB,CAAE73pB,IAAK,CAAE4ppB,cAAc,GAAOkO,WAAY,CAAElO,cAAc,IAwYrF,YAAiB1qiB,EAAKmsD,GACpB,OAAQnsD,EAAIn1H,SAAWm1H,EAAIyuO,mBAAqBzuO,EAAI0uO,uBAAyB1uO,EAAI+tgB,oBAAoBxntB,KAAKy5M,EAAKmsD,GAWjH,YAAc95N,GACZ,IAAIqF,EAAO,GACX,QAASrV,KAAQgQ,EAAOqF,EAAKrV,GAAQgQ,EAAIhQ,GACzC,OAAOqV,EAMT,YAAsBi9sB,EAAU99Z,GAC9B,IAAIziP,EAAQyiP,EAASp3I,OAAOrrG,MACxBo+gB,EAAO,SAAW76oB,IACpB,IAAIq3W,GAAS56O,EAAMz8H,IACnB,GAAKq3W,GAAO0la,eAAeC,GAC3B,KAAI5iT,GAAO,GAAI5yD,GAAO,SAAUjrZ,IAC9B69c,GAAK35d,KAAK8b,IACV,QAAS5S,GAAI,EAAGA,GAAI4S,GAAMq9vB,UAAWjwwB,KAAK,CACxC,IAAI8xG,GAAMl/F,GAAMs+E,KAAKlxF,IAEjBtD,GAAOo1G,GAAIp1G,KAEf,GAHWo1G,GAAI34G,MAEHo8W,GACRk7G,GAAKt/c,QAAQzU,IAAQ,GAAKmha,GAAKnha,IAAS,OAAO,IAGvD,GAAImha,GAAKnwD,GAAOyha,cAAiB,MAAO,CAAEt3wB,GAAG,KAG/C,QAASxB,KAAQy8H,EAAO,CACtB,IAAIykpB,GAAWrmI,EAAM76oB,GAErB,GAAKkhxB,GAAW,OAAOA,GAAS1/wB,GAhbpCw/wB,GAAqB73pB,IAAItvG,IAAM,WAC7B,OAAO7e,KAAKyhI,MAAMzhI,KAAK+nB,OAOzBo7vB,GAAa9iwB,UAAU8lwB,OAAS,SAAiB94iB,GAC/C,GAAoB,GAAhBA,EAAI62I,SACNlkX,KAAKomxB,YAAY/4iB,WACQ,GAAhBA,EAAI62I,SAAe,CAC5B,IAAI/5W,EAAQkjO,EAAIvlL,aAAa,SACzB6lL,EAAQxjO,EAAQnK,KAAKqmxB,WA+X7B,YAAqBl8wB,GAEnB,QADuC0yB,EAAnCopsB,EAAK,6BAAiC1ztB,EAAS,GAC5CsqB,EAAIopsB,EAAGr/X,KAAKz8V,IAAUoI,EAAO9M,KAAKo3B,EAAE,GAAIA,EAAE,GAAG6H,QACpD,OAAOnyB,EAlY+B+zwB,CAAYn8wB,IAAU,KAAMgkH,EAAMnuH,KAAKmuH,IAC3E,GAAa,MAATw/G,EAAiB,QAASh/N,GAAI,EAAGA,GAAIg/N,EAAM5nO,OAAQ4I,KAAO3O,KAAKumxB,eAAe54iB,EAAMh/N,KAExF,GADA3O,KAAKwmxB,WAAWn5iB,GACH,MAATM,EAAiB,QAAS6xiB,GAAM,EAAGA,GAAM7xiB,EAAM5nO,OAAQy5wB,KAASx/wB,KAAKymxB,kBAAkB94iB,EAAM6xiB,IAAMrxpB,KAI3Gg1pB,GAAa9iwB,UAAU+lwB,YAAc,SAAsB/4iB,GACzD,IAAI1pO,EAAQ0pO,EAAIq5iB,UACZv4pB,EAAMnuH,KAAKmuH,IACf,GA7H8C,EA6H1CA,EAAIpvG,SACJovG,EAAIs3pB,cAAcp4iB,IAClB,mBAAmBmuM,KAAK73a,GAAQ,CAClC,GAhIkB,EAgIZwqH,EAAIpvG,QAgBRpb,EAhJ0C,EA6I/BwqH,EAAIpvG,QAGPpb,EAAM4nB,QAAQ,SAAU,MAFxB5nB,EAAM4nB,QAAQ,YAAa,aAbnC5nB,EAAQA,EAAM4nB,QAAQ,oBAAqB,KAIvC,mBAAmBiwZ,KAAK73a,IAAU3D,KAAK+nB,MAAQ/nB,KAAKyhI,MAAM17H,OAAS,EAAG,CACxE,IAAIi+d,EAAa71W,EAAIvvG,QAAQuvG,EAAIvvG,QAAQ7Y,OAAS,GAC9C4gxB,GAAgBt5iB,EAAIu5iB,kBACnB5iT,GACA2iT,IAA2C,MAA1BA,GAAclstB,UAC/Bupa,EAAWszS,QAAU,mBAAmB97V,KAAKwoD,EAAWl5d,SACzDnH,EAAQA,EAAMiL,MAAM,IAOxBjL,GAAS3D,KAAKy8W,WAAWz8W,KAAK4uH,OAAOk+G,OAAOhiO,KAAKnH,IACrD3D,KAAK6mxB,WAAWx5iB,QAEhBrtO,KAAK8mxB,WAAWz5iB,IAOpB81iB,GAAa9iwB,UAAUmmwB,WAAa,SAAqBn5iB,EAAK05iB,GAC5D,IAAuCC,EAAnChixB,EAAOqoO,EAAI5yK,SAASp/B,cACpB2pvB,GAAS34uB,eAAernC,IAAShF,KAAK4uH,OAAOs0pB,gBA+TnD,YAAuB71iB,GACrB,QAAS5uK,EAAQ4uK,EAAI0kF,WAAYk1d,EAAW,KAAMxotB,EAAOA,EAAQA,EAAMqsT,YAAa,CAClF,IAAI9lX,EAAyB,GAAlBy5D,EAAMylT,SAAgBzlT,EAAMhE,SAASp/B,cAAgB,KAC5Dr2B,GAAQggxB,GAAS34uB,eAAernC,IAASiixB,GAC3CA,EAASpsuB,YAAY4jB,GACrBA,EAAQwotB,GACS,MAARjixB,EACTiixB,EAAWxotB,EACFz5D,IACTiixB,EAAW,OAxUoDC,CAAc75iB,GACjF,IAAImiW,GAAQxvkB,KAAK+e,QAAQoowB,cAAgBnnxB,KAAK+e,QAAQoowB,aAAa95iB,KAC9D25iB,EAAShnxB,KAAK4uH,OAAO00pB,SAASj2iB,EAAKrtO,KAAM+mxB,IAC9C,GAAIv3M,GAAOA,GAAKtlB,OAAS66N,GAAW14uB,eAAernC,GACjDhF,KAAK8mxB,WAAWz5iB,GAChBrtO,KAAKonxB,eAAe/5iB,YACVmiW,IAAQA,GAAKljkB,MAAQkjkB,GAAK63M,YAAa,CAC7C73M,IAAQA,GAAK63M,YAAernxB,KAAK+nB,KAAO7a,KAAKsB,IAAI,EAAGxO,KAAK+nB,KAAO,GAC3DynjB,IAAQA,GAAKljkB,KAAK43W,WAAY72I,EAAMmiW,GAAKljkB,MAClD,IAAI2ka,GAAM9iT,GAAMnuH,KAAKmuH,IAAKm5pB,GAAgBtnxB,KAAK+lxB,WAC/C,GAAIhC,GAAU13uB,eAAernC,GAC3Bisa,IAAO,EACF9iT,GAAIrmH,OAAQ9H,KAAK+lxB,YAAa,YACzB14iB,EAAI0kF,WAEd,YADA/xT,KAAKunxB,aAAal6iB,GAGpBrtO,KAAKojxB,OAAO/1iB,GACR4jM,IAAQjxa,KAAKixa,KAAK9iT,IACtBnuH,KAAK+lxB,WAAauB,QAElBtnxB,KAAKwnxB,iBAAiBn6iB,EAAKmiW,IAAyB,IAAnBA,GAAKi4M,UAAsBT,EAAS,OAKzE7D,GAAa9iwB,UAAUknwB,aAAe,SAAuBl6iB,GACvC,MAAhBA,EAAI5yK,UAAoBz6D,KAAKmuH,IAAIrmH,MAAQ9H,KAAKmuH,IAAIrmH,KAAK00wB,eACvDx8wB,KAAKomxB,YAAY/4iB,EAAIgvT,cAAc/ib,eAAe,QAIxD6pqB,GAAa9iwB,UAAU+mwB,eAAiB,SAAyB/5iB,GAE3C,MAAhBA,EAAI5yK,YAAsBz6D,KAAKmuH,IAAIrmH,OAAS9H,KAAKmuH,IAAIrmH,KAAK00wB,gBAC1Dx8wB,KAAK0nxB,UAAU1nxB,KAAK4uH,OAAOk+G,OAAOhiO,KAAK,OAM7Cq4wB,GAAa9iwB,UAAUgmwB,WAAa,SAAqB5tpB,GACvD,IAAIk1G,EAAQ2riB,EAAKv6uB,KACjB50B,EAAO,QAASwE,EAAI,EAAGA,EAAI8pH,EAAO1yH,OAAQ4I,GAAK,EAC7C,QAASmvC,EAAQ,OAAQ,CACvB,IAAI0xhB,GAAOxvkB,KAAK4uH,OAAO40pB,WAAW/qpB,EAAO9pH,GAAI8pH,EAAO9pH,EAAI,GAAI3O,KAAM89C,GAClE,IAAK0xhB,GAAQ,WACb,GAAIA,GAAKtlB,OAAU,OAAO,KAE1B,GADAv8U,EAAQ3tO,KAAK4uH,OAAOk+G,OAAOa,MAAM6hW,GAAKjnG,MAAMvma,OAAOwtgB,GAAKxiW,OAAOwsiB,SAAS7riB,IACjD,IAAnB6hW,GAAKi4M,UACF,MADyB3puB,EAAQ0xhB,GAI5C,OAAO7hW,GAOTw1iB,GAAa9iwB,UAAUmnwB,iBAAmB,SAA2Bn6iB,EAAKmiW,EAAMm4M,GAC5E,IAEE12W,GAAM/sD,GAAoBqkH,GAFxB06S,EAASjjxB,KAGXwvkB,EAAKpqjB,MACP8+V,GAAWlkX,KAAK4uH,OAAOk+G,OAAOrrG,MAAM+tc,EAAKpqjB,OAC3BqpmB,OAEFzunB,KAAKy8W,WAAWyH,GAASliT,OAAOwtgB,EAAKxiW,SAC/ChtO,KAAKunxB,aAAal6iB,GAFlB4jM,GAAOjxa,KAAKo9X,MAAMlZ,GAAUsrN,EAAKxiW,MAAOwiW,EAAK9gG,qBAM/CnG,GADWvoe,KAAK4uH,OAAOk+G,OAAOa,MAAM6hW,EAAKjnG,MACzBvma,OAAOwtgB,EAAKxiW,OAC5BhtO,KAAKumxB,eAAeh+S,KAEtB,IAAIq/S,GAAU5nxB,KAAKmuH,IAEnB,GAAI+1P,IAAYA,GAASuqQ,OACvBzunB,KAAK8mxB,WAAWz5iB,WACPs6iB,EACT3nxB,KAAKwmxB,WAAWn5iB,EAAKs6iB,WACZn4M,EAAKq4M,WACd7nxB,KAAK8mxB,WAAWz5iB,GAChBmiW,EAAKq4M,WAAWx6iB,EAAKrtO,KAAK4uH,OAAOk+G,QAAQlmO,QAAQ,SAAUwe,IAAQ,OAAO69vB,EAAOxma,WAAWr3V,UACvF,CACL,IAAI0iwB,GAAat4M,EAAKr4U,eACG,iBAAd2whB,GAA0BA,GAAaz6iB,EAAI9wL,cAAcuruB,IACtC,mBAAdA,KAA4BA,GAAaA,GAAWz6iB,IAC/Dy6iB,KAAcA,GAAaz6iB,GAChCrtO,KAAK+nxB,WAAW16iB,EAAKy6iB,IAAY,GACjC9nxB,KAAKojxB,OAAO0E,GAAY72W,IAEtBA,KAAQjxa,KAAKixa,KAAK22W,IAAU5nxB,KAAK+nB,QACjCwgd,IAAQvoe,KAAKymxB,kBAAkBl+S,GAAMq/S,KAO3CzE,GAAa9iwB,UAAU+iwB,OAAS,SAAiB/ma,EAAQ40D,EAAM1rU,EAAY0ob,GAEzE,QADIrqgB,GAAQ2hF,GAAc,EACjB8nI,GAAM9nI,EAAa82Q,EAAO4iO,WAAW15e,GAAc82Q,EAAOtqD,WAC1DznR,GAAkB,MAAZ2jf,EAAmB,KAAO5xK,EAAO4iO,WAAWhxD,GACtD5gT,IAAO/iM,GAAK+iM,GAAMA,GAAIy9I,cAAelnW,GACxC5jB,KAAKgoxB,YAAY3ra,EAAQz4V,IACzB5jB,KAAKmmxB,OAAO94iB,IACR4jM,GAAQ8yW,GAAU13uB,eAAeghM,GAAI5yK,SAASp/B,gBAC9Cr7B,KAAKixa,KAAKA,GAEhBjxa,KAAKgoxB,YAAY3ra,EAAQz4V,KAM3Bu/vB,GAAa9iwB,UAAUqnwB,UAAY,SAAoBtiwB,GAErD,QADI0mN,EAAOmlM,EACFz5U,EAAQx3F,KAAK+nB,KAAMyvE,GAAS,EAAGA,IAAS,CAC/C,IAAImljB,GAAK38oB,KAAKyhI,MAAMjqC,GAChBxuB,GAAQ2zkB,GAAG0jI,aAAaj7vB,GAM5B,GALI4jD,MAAW8iK,GAASA,EAAM/lO,OAASijE,GAAMjjE,UAC3C+lO,EAAQ9iK,GACRioW,EAAO0rO,IACF3zkB,GAAMjjE,SAET42oB,GAAGowH,MAAS,MAElB,IAAKjhiB,EAAS,OAAO,EACrB9rO,KAAKixa,KAAKA,GACV,QAAStia,GAAI,EAAGA,GAAIm9N,EAAM/lO,OAAQ4I,KAC9B3O,KAAKioxB,WAAWn8iB,EAAMn9N,IAAI,MAAM,GACpC,OAAO,GAKTw0wB,GAAa9iwB,UAAUo8V,WAAa,SAAqBr3V,GACvD,GAAIA,EAAKg3vB,UAAYp8wB,KAAK+lxB,aAAe/lxB,KAAKmuH,IAAIrmH,KAAM,CACtD,IAAI2ttB,EAAQz1tB,KAAKkoxB,uBACbzyD,GAASz1tB,KAAKioxB,WAAWxyD,GAE/B,GAAIz1tB,KAAK0nxB,UAAUtiwB,GAAO,CACxBplB,KAAKmoxB,aACL,IAAIh6pB,EAAMnuH,KAAKmuH,IACfA,EAAIm3pB,aAAalgwB,EAAKtd,MAClBqmH,EAAI5sG,QAAS4sG,EAAI5sG,MAAQ4sG,EAAI5sG,MAAM88vB,UAAUj5vB,EAAKtd,OAEtD,QADI6lO,EAAQx/G,EAAIg3pB,YACPx2wB,GAAI,EAAGA,GAAIyW,EAAKuoN,MAAM5nO,OAAQ4I,OAC9Bw/G,EAAIrmH,MAAQqmH,EAAIrmH,KAAKi6wB,eAAe38vB,EAAKuoN,MAAMh/N,IAAG7G,SACrD6lO,EAAQvoN,EAAKuoN,MAAMh/N,IAAG6qwB,SAAS7riB,IACrCx/G,SAAIvvG,QAAQnZ,KAAK2f,EAAKmjd,KAAK56P,KACpB,EAET,OAAO,GAMTw1iB,GAAa9iwB,UAAU+8W,MAAQ,SAAgBt1X,EAAMklO,EAAOo7iB,GAC1D,IAAIlhwB,EAAKlnB,KAAK0nxB,UAAU5/wB,EAAKk6D,OAAOgrK,IACpC,OAAI9lN,GAAMlnB,KAAKioxB,WAAWngxB,EAAMklO,GAAO,EAAMo7iB,GACtClhwB,GAITi8vB,GAAa9iwB,UAAU4nwB,WAAa,SAAqBngxB,EAAMklO,EAAO+/hB,EAAOqb,GAC3EpoxB,KAAKmoxB,aACL,IAAIh6pB,GAAMnuH,KAAKmuH,IACfA,GAAIm3pB,aAAax9wB,GACjBqmH,GAAI5sG,MAAQ4sG,GAAI5sG,OAAS4sG,GAAI5sG,MAAM88vB,UAAUv2wB,EAAMklO,GACnD,IAAIjuN,GAAwB,MAAdqpwB,GAAmC,EAAdj6pB,GAAIpvG,QAA2B6mwB,GAAawC,GA3Ud,EA4U5Dj6pB,GAAIpvG,SAAkD,GAAtBovG,GAAIvvG,QAAQ7Y,SAAegZ,IA5UC,GA6UjE/e,KAAKyhI,MAAMh8H,KAAK,IAAIw/wB,GAAYn9wB,EAAMklO,EAAO7+G,GAAIg3pB,YAAah3pB,GAAI+2pB,aAAcnY,EAAO,KAAMhuvB,KAC7F/e,KAAK+nB,QAKPo7vB,GAAa9iwB,UAAU8nwB,WAAa,SAAqBlO,GACvD,IAAItrwB,EAAI3O,KAAKyhI,MAAM17H,OAAS,EAC5B,GAAI4I,EAAI3O,KAAK+nB,KAAM,CACjB,KAAOpZ,EAAI3O,KAAK+nB,KAAMpZ,IAAO3O,KAAKyhI,MAAM9yH,EAAI,GAAGiQ,QAAQnZ,KAAKzF,KAAKyhI,MAAM9yH,GAAGspW,OAAOgia,IACjFj6wB,KAAKyhI,MAAM17H,OAAS/F,KAAK+nB,KAAO,IAIpCo7vB,GAAa9iwB,UAAU43V,OAAS,WAC9B,YAAKlwV,KAAO,EACZ/nB,KAAKmoxB,WAAWnoxB,KAAKk+X,QACdl+X,KAAKyhI,MAAM,GAAGw2O,OAAOj4W,KAAKk+X,QAAUl+X,KAAK+e,QAAQspwB,UAG1DlF,GAAa9iwB,UAAU4wZ,KAAO,SAAexjS,GAC3C,QAAS9+H,EAAI3O,KAAK+nB,KAAMpZ,GAAK,EAAGA,IAAO,GAAI3O,KAAKyhI,MAAM9yH,IAAM8+H,EAE1D,YADAztI,KAAK+nB,KAAOpZ,IAKhBq3wB,GAAqBC,WAAWpnwB,IAAM,WACpC7e,KAAKmoxB,aAEL,QADIt/rB,EAAM,EACDl6E,EAAI3O,KAAK+nB,KAAMpZ,GAAK,EAAGA,IAAK,CAEnC,QADIiQ,EAAU5e,KAAKyhI,MAAM9yH,GAAGiQ,QACnB4iF,EAAI5iF,EAAQ7Y,OAAS,EAAGy7F,GAAK,EAAGA,IACrC3Y,GAAOjqE,EAAQ4iF,GAAGu9X,SAClBpwd,GAAKk6E,IAEX,OAAOA,GAGTs6rB,GAAa9iwB,UAAU2nwB,YAAc,SAAsB3ra,EAAQjqV,GACjE,GAAIpyB,KAAKuG,KAAQ,QAASoI,EAAI,EAAGA,EAAI3O,KAAKuG,KAAKR,OAAQ4I,IACjD3O,KAAKuG,KAAKoI,GAAGyW,MAAQi3V,GAAUr8W,KAAKuG,KAAKoI,GAAGyjB,QAAUA,IACtDpyB,KAAKuG,KAAKoI,GAAGk6E,IAAM7oF,KAAKimxB,aAIhC9C,GAAa9iwB,UAAUymwB,WAAa,SAAqBzqa,GACvD,GAAIr8W,KAAKuG,KAAQ,QAASoI,EAAI,EAAGA,EAAI3O,KAAKuG,KAAKR,OAAQ4I,IAC7B,MAApB3O,KAAKuG,KAAKoI,GAAGk6E,KAAkC,GAAnBwzR,EAAO6H,UAAiB7H,EAAOluW,SAASnO,KAAKuG,KAAKoI,GAAGyW,QACjFplB,KAAKuG,KAAKoI,GAAGk6E,IAAM7oF,KAAKimxB,aAIhC9C,GAAa9iwB,UAAU0nwB,WAAa,SAAqB1ra,EAAQz9V,EAASotC,GACxE,GAAIqwT,GAAUz9V,GAAW5e,KAAKuG,KAAQ,QAASoI,EAAI,EAAGA,EAAI3O,KAAKuG,KAAKR,OAAQ4I,IAClD,MAApB3O,KAAKuG,KAAKoI,GAAGk6E,KAAkC,GAAnBwzR,EAAO6H,UAAiB7H,EAAOluW,SAASnO,KAAKuG,KAAKoI,GAAGyW,OACzExG,EAAQg+gB,wBAAwB58hB,KAAKuG,KAAKoI,GAAGyW,OAC5C4mC,EAAS,EAAI,KACpBhsD,KAAKuG,KAAKoI,GAAGk6E,IAAM7oF,KAAKimxB,aAKlC9C,GAAa9iwB,UAAUwmwB,WAAa,SAAqByB,GACvD,GAAItoxB,KAAKuG,KAAQ,QAASoI,EAAI,EAAGA,EAAI3O,KAAKuG,KAAKR,OAAQ4I,IACjD3O,KAAKuG,KAAKoI,GAAGyW,MAAQkjwB,IACrBtoxB,KAAKuG,KAAKoI,GAAGk6E,IAAM7oF,KAAKimxB,YAAcqC,EAAS5B,UAAU3gxB,OAAS/F,KAAKuG,KAAKoI,GAAGyjB,UAOvF+wvB,GAAa9iwB,UAAUkjwB,eAAiB,SAAyBngtB,GAC7D,IAAI6/sB,EAASjjxB,KAEf,GAAIojE,EAAQtjD,QAAQ,MAAO,EACvB,OAAOsjD,EAAQpsD,MAAM,YAAY+sC,KAAK/jD,KAAKujxB,eAAgBvjxB,MAE/D,IAAI08T,EAAQt5P,EAAQpsD,MAAM,KACtBm0jB,EAASnrkB,KAAK+e,QAAQqkD,QACtBmltB,KAAWvoxB,KAAKk+X,QAAYitM,GAAUA,EAAO9uN,OAAOv0W,MAAQ9H,KAAKyhI,MAAM,GAAG35H,MAC1E0gxB,IAA+CD,GAAU,EAAI,IAAhDp9M,EAASA,EAAO3ze,MAAQ,EAAI,GACzCj2E,GAAQ,SAAU5S,GAAG6oF,IACvB,KAAO7oF,IAAK,EAAGA,KAAK,CAClB,IAAIiqa,GAAOl8G,EAAM/tT,IACjB,GAAY,IAARiqa,GAAY,CACd,GAAIjqa,IAAK+tT,EAAM32T,OAAS,GAAU,GAAL4I,GAAU,SACvC,KAAO6oF,IAASgxrB,GAAUhxrB,KACtB,GAAIj2E,GAAM5S,GAAI,EAAG6oF,IAAU,OAAO,EACtC,OAAO,EAEP,IAAInsF,GAAOmsF,GAAQ,GAAe,GAATA,IAAc+wrB,GAAWtF,EAAOxhpB,MAAMjqC,IAAO1vF,KAChEqjkB,GAAU3ze,IAASgxrB,GAAWr9M,EAAO/ljB,KAAKoyE,GAAQgxrB,IAAU1gxB,KAC5D,KACN,IAAKuD,IAASA,GAAKrG,MAAQ4za,KAAqC,GAA7Bvta,GAAKmmD,OAAO1xC,QAAQ84Z,IACnD,OAAO,EACXphV,KAGJ,OAAO,GAET,OAAOj2E,GAAMm7S,EAAM32T,OAAS,EAAG/F,KAAK+nB,OAGtCo7vB,GAAa9iwB,UAAU6nwB,qBAAuB,WAC5C,IAAIO,EAAWzoxB,KAAK+e,QAAQqkD,QAC5B,GAAIqltB,EAAY,QAASj9wB,EAAIi9wB,EAASjxrB,MAAOhsF,GAAK,EAAGA,IAAK,CACxD,IAAIk9wB,EAAQD,EAASrjwB,KAAK5Z,GAAGqywB,eAAe4K,EAAS1M,WAAWvwwB,IAAImzwB,YACpE,GAAI+J,GAASA,EAAMjkT,aAAeikT,EAAMpL,aAAgB,OAAOoL,EAEjE,QAAS1jxB,KAAQhF,KAAK4uH,OAAOk+G,OAAOrrG,MAAO,CACzC,IAAI35H,GAAO9H,KAAK4uH,OAAOk+G,OAAOrrG,MAAMz8H,GACpC,GAAI8C,GAAK28d,aAAe38d,GAAKw1wB,aAAgB,OAAOx1wB,KAIxDq7wB,GAAa9iwB,UAAUkmwB,eAAiB,SAAyBh+S,GAC/D,IAAIv/Z,EAuFN,YAA2Bu/Z,EAAMl2c,GAC/B,QAAS1jB,EAAI,EAAGA,EAAI0jB,EAAItsB,OAAQ4I,IAC9B,GAAI45d,EAAKnF,GAAG/wc,EAAI1jB,IAAO,OAAO0jB,EAAI1jB,GAzFxBg6wB,CAAkBpgT,EAAMvoe,KAAKmuH,IAAI+2pB,cACzCl8sB,GAAShpE,KAAKmuH,IAAIi3pB,WAAW3/wB,KAAKujE,GACtChpE,KAAKmuH,IAAI+2pB,aAAe38S,EAAKixS,SAASx5wB,KAAKmuH,IAAI+2pB,eAGjD/B,GAAa9iwB,UAAUomwB,kBAAoB,SAA4Bl+S,EAAMqgT,GAC3E,QAASpxrB,EAAQx3F,KAAK+nB,KAAMyvE,GAAS,EAAGA,IAAS,CAC/C,IAAI0qB,EAAQliH,KAAKyhI,MAAMjqC,GAEvB,GADY0qB,EAAMgjqB,aAAa10vB,YAAY+3c,IAC/B,EACVrmX,EAAMgjqB,aAAe38S,EAAKqxS,cAAc13pB,EAAMgjqB,kBACzC,CACLhjqB,EAAMijqB,YAAc58S,EAAKqxS,cAAc13pB,EAAMijqB,aAC7C,IAAI0D,GAAY3mqB,EAAMmjqB,iBAAiB98S,GACnCsgT,IAAa3mqB,EAAMp6G,MAAQo6G,EAAMp6G,KAAKi6wB,eAAe8G,GAAU/gxB,QAC/Do6G,EAAMijqB,YAAc0D,GAAUrP,SAASt3pB,EAAMijqB,cAEnD,GAAIjjqB,GAAS0mqB,EAAQ,QAIzB/ixB,OAAOszwB,iBAAkBgK,GAAa9iwB,UAAW2lwB,IA4FjD,IAAI8C,GAAgB,SAAuBrnpB,EAAOksG,GAGhD3tO,KAAKyhI,MAAQA,GAAS,GAGtBzhI,KAAK2tO,MAAQA,GAAS,IAiKxB,YAAqBjuK,GACnB,IAAIntD,EAAS,GACb,QAASvN,KAAQ06D,EAAK,CACpB,IAAI4tK,EAAQ5tK,EAAI16D,GAAMu+d,KAAKj2P,MACvBA,IAAS/6N,EAAOvN,GAAQsoO,GAE9B,OAAO/6N,EAGT,YAAawM,GAEX,OAAOA,EAAQ4C,UAAYxM,OAAOwM,SApKpCmnwB,GAAczowB,UAAU0owB,kBAAoB,SAA4BtmT,EAAU1jd,EAASrW,GACvF,IAAIu6wB,EAASjjxB,UACI,IAAZ+e,IAAqBA,EAAU,IAEjCrW,IAAUA,EAAS8/W,GAAIzpW,GAASiqwB,0BAErC,IAAI76pB,GAAMzlH,EAAQinE,GAAS,KAC3B8yZ,SAAS77d,QAAQ,SAAUwe,IACzB,GAAIuqD,IAAUvqD,GAAKuoN,MAAM5nO,OAAQ,CAC1B4pE,KAAUA,GAAS,IAExB,QADIs5sB,GAAO,EAAGC,GAAW,EAClBD,GAAOt5sB,GAAO5pE,QAAUmjxB,GAAW9jwB,GAAKuoN,MAAM5nO,QAAQ,CAC3D,IAAIsF,GAAO+Z,GAAKuoN,MAAMu7iB,IACtB,GAAKjG,EAAOt1iB,MAAMtiO,GAAKvD,KAAK9C,MAA5B,CACA,IAAKqG,GAAK+3d,GAAGzzZ,GAAOs5sB,OAAsC,IAA5B59wB,GAAKvD,KAAKy7d,KAAK4lT,SAAsB,MACnEF,IAAQ,EAAGC,UAF0BA,KAIvC,KAAOD,GAAOt5sB,GAAO5pE,QACnBooH,GAAMx+C,GAAO78C,MACb68C,GAAO78C,MAET,KAAOo2vB,GAAW9jwB,GAAKuoN,MAAM5nO,QAAQ,CACnC,IAAIyiD,GAAMpjC,GAAKuoN,MAAMu7iB,MACjBE,GAAUnG,EAAOoG,cAAc7guB,GAAKpjC,GAAKg3vB,SAAUr9vB,GACnDqqwB,KACFz5sB,GAAOlqE,KAAK+iD,GAAK2lE,IACjBA,GAAItzE,YAAYuuuB,GAAQ/7iB,KACxBl/G,GAAMi7pB,GAAQtB,YAAcsB,GAAQ/7iB,MAI1Cl/G,GAAItzE,YAAYoouB,EAAOqG,mBAAmBlkwB,GAAMrG,MAG3CrW,GAGTogxB,GAAczowB,UAAUipwB,mBAAqB,SAA6BlkwB,EAAMrG,QAC3D,IAAZA,IAAqBA,EAAU,IAEtC,IAAI0hG,EACAqoqB,GAAcS,WAAW/ga,GAAIzpW,GAAU/e,KAAKyhI,MAAMr8G,EAAKtd,KAAK9C,MAAMogB,IAChEioN,EAAM5sH,EAAI4sH,IACVy6iB,GAAarnqB,EAAIqnqB,WACvB,GAAIA,GAAY,CACd,GAAI1iwB,EAAKqpmB,OACL,MAAM,IAAIvwJ,WAAW,gDACrBn/c,EAAQyqwB,UACRzqwB,EAAQyqwB,UAAUpkwB,EAAM0iwB,GAAY/owB,GAEpC/e,KAAK+oxB,kBAAkB3jwB,EAAKxG,QAASG,EAAS+owB,IAEpD,OAAOz6iB,GASTy7iB,GAAczowB,UAAUopwB,cAAgB,SAAwBrkwB,EAAMrG,QACjD,IAAZA,IAAqBA,EAAU,IAGtC,QADIsuN,EAAMrtO,KAAKspxB,mBAAmBlkwB,EAAMrG,GAC/BpQ,EAAIyW,EAAKuoN,MAAM5nO,OAAS,EAAG4I,GAAK,EAAGA,IAAK,CAC/C,IAAI2rD,GAAOt6D,KAAKqpxB,cAAcjkwB,EAAKuoN,MAAMh/N,GAAIyW,EAAKg3vB,SAAUr9vB,GACxDu7C,MACPA,GAAKwttB,YAAcxttB,GAAK+yK,KAAKxyL,YAAYwyL,GACpCA,EAAM/yK,GAAK+yK,KAGf,OAAOA,GAGTy7iB,GAAczowB,UAAUgpwB,cAAgB,SAAwB9gT,EAAMkpO,EAAQ1yrB,QACzD,IAAZA,IAAqBA,EAAU,IAEtC,IAAIuuN,EAAQttO,KAAK2tO,MAAM46P,EAAKzge,KAAK9C,MACjC,OAAOsoO,GAASw7iB,GAAcS,WAAW/ga,GAAIzpW,GAAUuuN,EAAMi7P,EAAMkpO,KAOrEq3E,GAAcS,WAAa,SAAqB/ga,EAAKkha,EAAWC,GAG9D,QAFiB,IAAVA,IAAmBA,EAAQ,MAEV,iBAAbD,EACP,MAAO,CAACr8iB,IAAKm7I,EAAIlvQ,eAAeowqB,IACpC,GAA0B,MAAtBA,EAAUxla,SACV,MAAO,CAAC72I,IAAKq8iB,GACjB,GAAIA,EAAUr8iB,KAAiC,MAA1Bq8iB,EAAUr8iB,IAAI62I,SAC/B,OAAOwla,EACX,IAAI50Z,EAAU40Z,EAAU,GAAIxpV,GAAQprE,EAAQh1W,QAAQ,KAChDogb,GAAQ,IACVypV,EAAQ70Z,EAAQlmX,MAAM,EAAGsxb,IACzBprE,EAAUA,EAAQlmX,MAAMsxb,GAAQ,IAElC,IAAI4nV,GAAa,KAAMz6iB,GAAMs8iB,EAAQnha,EAAIoha,gBAAgBD,EAAO70Z,GAAWtM,EAAI93V,cAAcokW,GACzF9nJ,GAAQ08iB,EAAU,GAAI18vB,GAAQ,EAClC,GAAIggN,IAAyB,iBAATA,IAAuC,MAAlBA,GAAMk3I,WAAqB51W,MAAMqxB,QAAQqtM,IAEhF,QAAShoO,MADTgoB,GAAQ,EACSggN,GAAS,GAAmB,MAAfA,GAAMhoO,IAAe,CACjD,IAAI6kxB,GAAU7kxB,GAAK8a,QAAQ,KACvB+pwB,GAAU,EAAKx8iB,GAAIy8iB,eAAe9kxB,GAAK4J,MAAM,EAAGi7wB,IAAU7kxB,GAAK4J,MAAMi7wB,GAAU,GAAI78iB,GAAMhoO,KACtFqoO,GAAIxzH,aAAa70G,GAAMgoO,GAAMhoO,KAGxC,QAAS2J,GAAIqe,GAAOre,GAAI+6wB,EAAU3jxB,OAAQ4I,KAAK,CAC7C,IAAI8vD,GAAQirtB,EAAU/6wB,IACtB,GAAc,IAAV8vD,GAAa,CACf,GAAI9vD,GAAI+6wB,EAAU3jxB,OAAS,GAAK4I,GAAIqe,GAChC,MAAM,IAAIkxc,WAAW,0DACzB,MAAO,CAAC7wP,IAAKA,GAAKy6iB,WAAYz6iB,IAE9B,IAAI5sH,GAAMqoqB,GAAcS,WAAW/ga,EAAK/pT,GAAOkrtB,GAEzCI,GAAetpqB,GAAIqnqB,WAEzB,GADAz6iB,GAAIxyL,YAFU4lE,GAAI4sH,KAGd08iB,GAAc,CAChB,GAAIjC,GAAc,MAAM,IAAI5pT,WAAW,0BACvC4pT,GAAaiC,IAInB,MAAO,CAAC18iB,IAAKA,GAAKy6iB,WAAYA,KAMhCgB,GAAcjF,WAAa,SAAqB/2iB,GAC9C,OAAOA,EAAOw3P,OAAO0lT,gBAClBl9iB,EAAOw3P,OAAO0lT,cAAgB,IAAIlB,GAAc9oxB,KAAKiqxB,gBAAgBn9iB,GAAS9sO,KAAKkqxB,gBAAgBp9iB,MAMxGg8iB,GAAcmB,gBAAkB,SAA0Bn9iB,GACxD,IAAIv6N,EAAS43wB,GAAYr9iB,EAAOrrG,OAChC,OAAKlvH,EAAOzH,OAAQyH,EAAOzH,KAAO,SAAUsa,GAAQ,OAAOA,EAAKta,OACzDyH,GAKTu2wB,GAAcoB,gBAAkB,SAA0Bp9iB,GACxD,OAAOq9iB,GAAYr9iB,EAAOa,QCr1G5B,IACIy8iB,GAAWl9wB,KAAK06F,IAAI,EAAG,IAE3B,YAAqBhkF,EAAOwO,GAAU,OAAOxO,EAAQwO,EAASg4vB,GAC9D,YAAsBzmxB,GAAS,OAJjB,MAIwBA,EAKtC,IAAI0mxB,GAAY,SAAmBxhsB,EAAKy5C,EAASgopB,QAC9B,IAAZhopB,IAAqBA,GAAU,QACnB,IAAZgopB,IAAqBA,EAAU,MAGpCtqxB,KAAK6oF,IAAMA,EAGX7oF,KAAKsiI,QAAUA,EACftiI,KAAKsqxB,QAAUA,GAQbC,GAAU,SAAiBnpT,EAAQkzH,QACnB,IAAbA,IAAsBA,GAAW,GAEtCt0lB,KAAKohe,OAASA,EACdphe,KAAKs0lB,SAAWA,GAGlBi2L,GAAQlqwB,UAAUiqwB,QAAU,SAAkB3mxB,GAC5C,IAAI8V,EAAO,EAAGmK,EAAQ4mwB,GAAa7mxB,GACnC,IAAK3D,KAAKs0lB,SAAY,QAAS3llB,EAAI,EAAGA,EAAIiV,EAAOjV,IAC7C8K,GAAQzZ,KAAKohe,OAAW,EAAJzyd,EAAQ,GAAK3O,KAAKohe,OAAW,EAAJzyd,EAAQ,GACzD,OAAO3O,KAAKohe,OAAe,EAARx9c,GAAanK,EAhClC,YAAuB9V,GAAS,OAAQA,GAL1B,MAKmCA,IAAoBymxB,GAgC5BK,CAAc9mxB,IAIvD4mxB,GAAQlqwB,UAAUqqwB,UAAY,SAAoB7hsB,EAAK8hsB,GACrD,YAAe,IAAVA,IAAmBA,EAAQ,GAC1B3qxB,KAAKmtW,KAAKtkR,EAAK8hsB,GAAO,IAG9BJ,GAAQlqwB,UAAU1a,IAAM,SAAckjF,EAAK8hsB,GACzC,YAAe,IAAVA,IAAmBA,EAAQ,GAC1B3qxB,KAAKmtW,KAAKtkR,EAAK8hsB,GAAO,IAE9BJ,GAAQlqwB,UAAU8sV,KAAO,SAAetkR,EAAK8hsB,EAAOC,GAElD,QADInxwB,EAAO,EAAGima,GAAW1/a,KAAKs0lB,SAAW,EAAI,EAAGnyd,GAAWniI,KAAKs0lB,SAAW,EAAI,EACtE3llB,GAAI,EAAGA,GAAI3O,KAAKohe,OAAOr7d,OAAQ4I,IAAK,EAAG,CAC9C,IAAIqe,GAAQhtB,KAAKohe,OAAOzyd,KAAM3O,KAAKs0lB,SAAW76kB,EAAO,GACrD,GAAIuT,GAAQ67D,EAAO,MACnB,IAAIgisB,GAAU7qxB,KAAKohe,OAAOzyd,GAAI+wa,IAAWk3K,GAAU52lB,KAAKohe,OAAOzyd,GAAIwzH,IAAW73F,GAAMtd,GAAQ69vB,GAC5F,GAAIhisB,GAAOv+C,GAAK,CACd,IACI/3B,GAASya,GAAQvT,IADToxwB,GAAkBhisB,GAAO77D,IAAQ,EAAK67D,GAAOv+C,GAAM,EAAIqgvB,EAA7CA,GACc,EAAI,EAAI/zL,IAC5C,GAAIg0L,EAAU,OAAOr4wB,GACrB,IAAI+3wB,GAAUzhsB,IAAQ8hsB,EAAQ,EAAI39vB,GAAQsd,IAAO,KAAOwgvB,GAAYn8wB,GAAI,EAAGk6E,EAAM77D,IACjF,OAAO,IAAIq9vB,GAAU93wB,GAAQo4wB,EAAQ,EAAI9hsB,GAAO77D,GAAQ67D,GAAOv+C,GAAKggvB,IAEtE7wwB,GAAQm9kB,GAAUi0L,GAEpB,OAAOD,EAAS/hsB,EAAMpvE,EAAO,IAAI4wwB,GAAUxhsB,EAAMpvE,IAGnD8wwB,GAAQlqwB,UAAU2zX,QAAU,SAAkBnrT,EAAKyhsB,GAGjD,QAFI7wwB,EAAO,EAAGmK,EAAQ4mwB,GAAaF,GAC/B5qW,GAAW1/a,KAAKs0lB,SAAW,EAAI,EAAGnyd,GAAWniI,KAAKs0lB,SAAW,EAAI,EAC5D3llB,GAAI,EAAGA,GAAI3O,KAAKohe,OAAOr7d,OAAQ4I,IAAK,EAAG,CAC9C,IAAIqe,GAAQhtB,KAAKohe,OAAOzyd,KAAM3O,KAAKs0lB,SAAW76kB,EAAO,GACrD,GAAIuT,GAAQ67D,EAAO,MACnB,IAAIgisB,GAAU7qxB,KAAKohe,OAAOzyd,GAAI+wa,IAC9B,GAAI72V,GAD2C77D,GAAQ69vB,IACrCl8wB,IAAa,EAARiV,EAAa,OAAO,EAC3CnK,GAAQzZ,KAAKohe,OAAOzyd,GAAIwzH,IAAY0opB,GAEtC,OAAO,GAMTN,GAAQlqwB,UAAUzZ,QAAU,SAAkBhB,GAE5C,QADI85a,EAAW1/a,KAAKs0lB,SAAW,EAAI,EAAGnyd,EAAWniI,KAAKs0lB,SAAW,EAAI,EAC5D3llB,EAAI,EAAG8K,GAAO,EAAG9K,EAAI3O,KAAKohe,OAAOr7d,OAAQ4I,GAAK,EAAG,CACxD,IAAIqe,GAAQhtB,KAAKohe,OAAOzyd,GAAIwkuB,GAAWnmtB,IAAShtB,KAAKs0lB,SAAW76kB,GAAO,GAAIw7qB,GAAWjoqB,IAAShtB,KAAKs0lB,SAAW,EAAI76kB,IAC/GoxwB,GAAU7qxB,KAAKohe,OAAOzyd,EAAI+wa,GAAWk3K,GAAU52lB,KAAKohe,OAAOzyd,EAAIwzH,GACnEv8H,EAAEutuB,GAAUA,GAAW03C,GAAS51F,GAAUA,GAAWr+F,IACrDn9kB,IAAQm9kB,GAAUi0L,KAOtBN,GAAQlqwB,UAAU+rrB,OAAS,WACzB,OAAO,IAAIm+E,GAAQvqxB,KAAKohe,QAASphe,KAAKs0lB,WAGxCi2L,GAAQlqwB,UAAUtV,SAAW,WAC3B,OAAQ/K,KAAKs0lB,SAAW,IAAM,IAAMjmkB,KAAK+E,UAAUpzB,KAAKohe,SAO1DmpT,GAAQn4vB,OAAS,SAAiBtkB,GAChC,OAAY,GAALA,EAASy8wB,GAAQ9qsB,MAAQ,IAAI8qsB,GAAQz8wB,EAAI,EAAI,CAAC,GAAIA,EAAG,GAAK,CAAC,EAAG,EAAGA,KAG1Ey8wB,GAAQ9qsB,MAAQ,IAAI8qsB,GAAQ,IAS5B,IAAIr+lB,GAAU,SAAiBo/G,EAAMkvG,EAAQpyU,EAAMqlE,GAGjDztI,KAAKsrS,KAAOA,GAAQ,GAIpBtrS,KAAKooE,KAAOA,GAAQ,EAGpBpoE,KAAKytI,GAAW,MAANA,EAAaztI,KAAKsrS,KAAKvlS,OAAS0nI,EAC1CztI,KAAKw6Y,OAASA,GAyGhB,YAAwBhjY,GACtB,IAAI6S,EAAM5T,MAAMmd,KAAK5zB,KAAMwX,GAC3B6S,SAAI/J,UAAYyqwB,GAAe1qwB,UACxBgK,EAvGT6hK,GAAQ7rK,UAAUzR,MAAQ,SAAgBw5D,EAAMqlE,GAC5C,YAAc,IAATrlE,IAAkBA,EAAO,QAClB,IAAPqlE,IAAgBA,EAAKztI,KAAKsrS,KAAKvlS,QAE/B,IAAImmL,GAAQlsL,KAAKsrS,KAAMtrS,KAAKw6Y,OAAQpyU,EAAMqlE,IAGnDy+C,GAAQ7rK,UAAU0kD,KAAO,WACvB,OAAO,IAAImnH,GAAQlsL,KAAKsrS,KAAK18R,QAAS5O,KAAKw6Y,QAAUx6Y,KAAKw6Y,OAAO5rY,QAAS5O,KAAKooE,KAAMpoE,KAAKytI,KAO5Fy+C,GAAQ7rK,UAAU2qwB,UAAY,SAAoBrlxB,EAAKslxB,GACrDjrxB,KAAKytI,GAAKztI,KAAKsrS,KAAK7lS,KAAKE,GACV,MAAXslxB,GAAmBjrxB,KAAKkrxB,UAAUlrxB,KAAKsrS,KAAKvlS,OAAS,EAAGklxB,IAM9D/+lB,GAAQ7rK,UAAU8qwB,cAAgB,SAAwBhsvB,GACxD,QAASxwB,EAAI,EAAGuqmB,EAAYl5mB,KAAKsrS,KAAKvlS,OAAQ4I,EAAIwwB,EAAQmsQ,KAAKvlS,OAAQ4I,IAAK,CAC1E,IAAIy8wB,EAAOjsvB,EAAQksvB,UAAU18wB,GAC7B3O,KAAKgrxB,UAAU7rvB,EAAQmsQ,KAAK38R,GAAY,MAARy8wB,GAAgBA,EAAOz8wB,EAAIuqmB,EAAYkyK,EAAO,QAQlFl/lB,GAAQ7rK,UAAUgrwB,UAAY,SAAoBv9wB,GAChD,GAAI9N,KAAKw6Y,OAAU,QAAS7rY,EAAI,EAAGA,EAAI3O,KAAKw6Y,OAAOz0Y,OAAQ4I,IACvD,GAAI3O,KAAKw6Y,OAAO7rY,IAAMb,EAAK,OAAO9N,KAAKw6Y,OAAO7rY,GAAKA,EAAI,GAAI,EAAK,KAGtEu9K,GAAQ7rK,UAAU6qwB,UAAY,SAAoBp9wB,EAAG+uB,GAC9C78B,KAAKw6Y,SAAUx6Y,KAAKw6Y,OAAS,IAClCx6Y,KAAKw6Y,OAAO/0Y,KAAKqI,EAAG+uB,IAKtBqvJ,GAAQ7rK,UAAUirwB,sBAAwB,SAAgCnsvB,GACxE,QAASxwB,EAAIwwB,EAAQmsQ,KAAKvlS,OAAS,EAAG6ka,EAAY5qa,KAAKsrS,KAAKvlS,OAASo5B,EAAQmsQ,KAAKvlS,OAAQ4I,GAAK,EAAGA,IAAK,CACrG,IAAIy8wB,EAAOjsvB,EAAQksvB,UAAU18wB,GAC7B3O,KAAKgrxB,UAAU7rvB,EAAQmsQ,KAAK38R,GAAGy9rB,SAAkB,MAARg/E,GAAgBA,EAAOz8wB,EAAIi8Z,EAAYwgX,EAAO,EAAI,QAM/Fl/lB,GAAQ7rK,UAAU+rrB,OAAS,WACzB,IAAIm/E,EAAU,IAAIr/lB,GAClBq/lB,SAAQD,sBAAsBtrxB,MACvBurxB,GAKTr/lB,GAAQ7rK,UAAU1a,IAAM,SAAckjF,EAAK8hsB,GAGzC,QAFiB,IAAVA,IAAmBA,EAAQ,GAE9B3qxB,KAAKw6Y,OAAU,OAAOx6Y,KAAKmtW,KAAKtkR,EAAK8hsB,GAAO,GAChD,QAASh8wB,EAAI3O,KAAKooE,KAAMz5D,EAAI3O,KAAKytI,GAAI9+H,IACjCk6E,EAAM7oF,KAAKsrS,KAAK38R,GAAGhJ,IAAIkjF,EAAK8hsB,GAChC,OAAO9hsB,GAMTqjG,GAAQ7rK,UAAUqqwB,UAAY,SAAoB7hsB,EAAK8hsB,GACrD,YAAe,IAAVA,IAAmBA,EAAQ,GAC1B3qxB,KAAKmtW,KAAKtkR,EAAK8hsB,GAAO,IAE9Bz+lB,GAAQ7rK,UAAU8sV,KAAO,SAAetkR,EAAK8hsB,EAAOC,GAGlD,QAFItopB,GAAU,EAEL3zH,GAAI3O,KAAKooE,KAAMz5D,GAAI3O,KAAKytI,GAAI9+H,KAAK,CACxC,IAAwB4D,GAAdvS,KAAKsrS,KAAK38R,IAAiB+7wB,UAAU7hsB,EAAK8hsB,GACpD,GAAsB,MAAlBp4wB,GAAO+3wB,QAAiB,CAC1B,IAAIkB,GAAOxrxB,KAAKqrxB,UAAU18wB,IAC1B,GAAY,MAAR68wB,IAAgBA,GAAO78wB,IAAK68wB,GAAOxrxB,KAAKytI,GAAI,CAC9C9+H,GAAI68wB,GACJ3isB,EAAM7oF,KAAKsrS,KAAKkgf,IAAMlB,QAAQ/3wB,GAAO+3wB,SACrC,UAIA/3wB,GAAO+vH,UAAWA,GAAU,GAChCz5C,EAAMt2E,GAAOs2E,IAGf,OAAO+hsB,EAAS/hsB,EAAM,IAAIwhsB,GAAUxhsB,EAAKy5C,KAS3CyopB,GAAe1qwB,UAAYxa,OAAOm8D,OAAOvrD,MAAM4J,YACtBvgB,YAAcirxB,GACvCA,GAAe1qwB,UAAUrb,KAAO,iBAOhC,IAAIymxB,GAAY,SAAmBjja,GAIjCxoX,KAAKwoX,IAAMA,EAGXxoX,KAAKitD,MAAQ,GAGbjtD,KAAK0rxB,KAAO,GAGZ1rxB,KAAKm/B,QAAU,IAAI+sJ,IAGjB4rlB,GAAqB,CAAE9rtB,OAAQ,CAAE+rtB,cAAc,GAAO4T,WAAY,CAAE5T,cAAc,IAuCtF,cAA0B,MAAM,IAAIthwB,MAAM,eApC1CqhwB,GAAmB9rtB,OAAOntC,IAAM,WAAc,OAAO7e,KAAK0rxB,KAAK3lxB,OAAS/F,KAAK0rxB,KAAK,GAAK1rxB,KAAKwoX,KAK5Fija,GAAUprwB,UAAUmsC,KAAO,SAAe3jD,GACxC,IAAI0J,EAASvS,KAAK4rxB,UAAU/ixB,GAC5B,GAAI0J,EAAO01L,OAAU,MAAM,IAAI8ilB,GAAex4wB,EAAO01L,QACrD,OAAOjoM,MAMTyrxB,GAAUprwB,UAAUurwB,UAAY,SAAoBp/tB,GAClD,IAAIj6C,EAASi6C,EAAK74B,MAAM3zB,KAAKwoX,KAC7B,OAAKj2W,EAAO01L,QAAUjoM,KAAKgrkB,QAAQx+gB,EAAMj6C,EAAOi2W,KACzCj2W,GAMTulwB,GAAmB6T,WAAW9swB,IAAM,WAClC,OAAO7e,KAAKitD,MAAMlnD,OAAS,GAG7B0lxB,GAAUprwB,UAAU2qjB,QAAU,SAAkBx+gB,EAAMg8T,GACpDxoX,KAAK0rxB,KAAKjmxB,KAAKzF,KAAKwoX,KACpBxoX,KAAKitD,MAAMxnD,KAAK+mD,GAChBxsD,KAAKm/B,QAAQ6rvB,UAAUx+tB,EAAKguD,UAC5Bx6G,KAAKwoX,IAAMA,GAGb3iX,OAAOszwB,iBAAkBsS,GAAUprwB,UAAWy3vB,IAI9C,IAAI+T,GAAYhmxB,OAAOm8D,OAAO,MAW1B8ptB,GAAO,aAEXA,GAAKzrwB,UAAUsT,MAAQ,SAAgBo4vB,GAAQ,OAAOC,MAMtDF,GAAKzrwB,UAAUm6F,OAAS,WAAqB,OAAO+vqB,GAAQ9qsB,OAK5DqssB,GAAKzrwB,UAAU+rrB,OAAS,SAAiB2/E,GAAQ,OAAOC,MAMxDF,GAAKzrwB,UAAU1a,IAAM,SAAcsmxB,GAAY,OAAOD,MAMtDF,GAAKzrwB,UAAUkwB,MAAQ,SAAgB27uB,GAAU,OAAO,MAOxDJ,GAAKzrwB,UAAU6pR,OAAS,WAAqB,OAAO8hf,MAKpDF,GAAK/S,SAAW,SAAmBjsiB,EAAQm0P,GACzC,IAAKA,IAASA,EAAKkrT,SAAY,MAAM,IAAIjuT,WAAW,mCACpD,IAAIp2d,EAAO+jxB,GAAU5qT,EAAKkrT,UAC1B,IAAKrkxB,EAAQ,MAAM,IAAIo2d,WAAY,gBAAmB+C,EAAKkrT,SAAY,YACvE,OAAOrkxB,EAAKixwB,SAASjsiB,EAAQm0P,IAQ/B6qT,GAAKM,OAAS,SAAiBlnxB,EAAImnxB,GACjC,GAAInnxB,KAAM2mxB,GAAa,MAAM,IAAI3tT,WAAW,iCAAmCh5d,GAC/E2mxB,UAAU3mxB,GAAMmnxB,EAChBA,EAAUhswB,UAAU+rwB,OAASlnxB,EACtBmnxB,GAKT,IAAIC,GAAa,SAAoB9ja,EAAKvgL,GAExCjoM,KAAKwoX,IAAMA,EAEXxoX,KAAKioM,OAASA,GAKhBqklB,GAAWplwB,GAAK,SAAashW,GAAO,OAAO,IAAI8ja,GAAW9ja,EAAK,OAI/D8ja,GAAWC,KAAO,SAAe/0wB,GAAW,OAAO,IAAI80wB,GAAW,KAAM90wB,IAMxE80wB,GAAWE,YAAc,SAAsBhka,EAAKpgT,EAAMqlE,EAAI7+H,GAC5D,IACE,OAAO09wB,GAAWplwB,GAAGshW,EAAIj9V,QAAQ68C,EAAMqlE,EAAI7+H,UACpC3F,IACP,GAAIA,cAAaswwB,EAAgB,OAAO+S,GAAWC,KAAKtjxB,GAAEuO,SAC1D,MAAMvO,KAKV,IAAIwjxB,GAA4B,SAAUX,GACxC,WAAqB1jtB,EAAMqlE,EAAI7+H,EAAO86wB,IACpCoC,EAAKl4vB,KAAK5zB,MAGVA,KAAKooE,KAAOA,EAGZpoE,KAAKytI,GAAKA,EAGVztI,KAAK4O,MAAQA,EACb5O,KAAK0pxB,YAAcA,GAGrB,OAAKoC,IAAOW,EAAYnswB,UAAYwrwB,IACpCW,EAAYpswB,UAAYxa,OAAOm8D,OAAQ8ptB,GAAQA,EAAKzrwB,YAC9BvgB,YAAc2sxB,EAEpCA,EAAYpswB,UAAUsT,MAAQ,SAAgB60V,GAC5C,OAAIxoX,KAAK0pxB,WAAagD,GAAelka,EAAKxoX,KAAKooE,KAAMpoE,KAAKytI,IAC/C6+oB,GAAWC,KAAK,6CACpBD,GAAWE,YAAYhka,EAAKxoX,KAAKooE,KAAMpoE,KAAKytI,GAAIztI,KAAK4O,QAG9D69wB,EAAYpswB,UAAUm6F,OAAS,WAC7B,OAAO,IAAI+vqB,GAAQ,CAACvqxB,KAAKooE,KAAMpoE,KAAKytI,GAAKztI,KAAKooE,KAAMpoE,KAAK4O,MAAMogD,QAGjEy9tB,EAAYpswB,UAAU+rrB,OAAS,SAAiB5jV,GAC9C,OAAO,IAAIika,EAAYzsxB,KAAKooE,KAAMpoE,KAAKooE,KAAOpoE,KAAK4O,MAAMogD,KAAMw5T,EAAI55W,MAAM5O,KAAKooE,KAAMpoE,KAAKytI,MAG3Fg/oB,EAAYpswB,UAAU1a,IAAM,SAAcw5B,GACxC,IAAIipC,EAAOjpC,EAAQurvB,UAAU1qxB,KAAKooE,KAAM,GAAIqlE,GAAKtuG,EAAQurvB,UAAU1qxB,KAAKytI,IAAI,GAC5E,OAAIrlE,EAAKk6D,SAAWmL,GAAGnL,QAAkB,KAClC,IAAImqpB,EAAYrktB,EAAKygB,IAAK37E,KAAKsB,IAAI45D,EAAKygB,IAAK4kD,GAAG5kD,KAAM7oF,KAAK4O,QAGpE69wB,EAAYpswB,UAAUkwB,MAAQ,SAAgB8uB,GAC5C,KAAMA,aAAiBottB,IAAgBpttB,EAAMqqtB,WAAa1pxB,KAAK0pxB,UAAa,OAAO,KAEnF,GAAI1pxB,KAAKooE,KAAOpoE,KAAK4O,MAAMogD,MAAQqQ,EAAM+I,MAASpoE,KAAK4O,MAAMqrwB,SAAY56sB,EAAMzwD,MAAMorwB,UAGF0P,IACxErqtB,EAAMouE,IAAMztI,KAAKooE,MAASpoE,KAAK4O,MAAMorwB,WAAc36sB,EAAMzwD,MAAMqrwB,QAKxE,OAAO,KAJP,IAAI0S,GAAU3sxB,KAAK4O,MAAMogD,KAAOqQ,EAAMzwD,MAAMogD,MAAQ,EAAI0za,QAClD,IAAIA,EAAMrja,EAAMzwD,MAAMgQ,QAAQsS,OAAOlxB,KAAK4O,MAAMgQ,SAAUygD,EAAMzwD,MAAMorwB,UAAWh6wB,KAAK4O,MAAMqrwB,SAClG,OAAO,IAAIwS,EAAYpttB,EAAM+I,KAAMpoE,KAAKytI,GAAIk/oB,GAAS3sxB,KAAK0pxB,WAN1D,IAAI96wB,EAAQ5O,KAAK4O,MAAMogD,KAAOqQ,EAAMzwD,MAAMogD,MAAQ,EAAI0za,QAChD,IAAIA,EAAM1ie,KAAK4O,MAAMgQ,QAAQsS,OAAOmuC,EAAMzwD,MAAMgQ,SAAU5e,KAAK4O,MAAMorwB,UAAW36sB,EAAMzwD,MAAMqrwB,SAClG,OAAO,IAAIwS,EAAYzsxB,KAAKooE,KAAMpoE,KAAKytI,IAAMpuE,EAAMouE,GAAKpuE,EAAM+I,MAAOx5D,EAAO5O,KAAK0pxB,YAUrF+C,EAAYpswB,UAAU6pR,OAAS,WAC7B,IAAI+2L,EAAO,CAACkrT,SAAU,UAAW/jtB,KAAMpoE,KAAKooE,KAAMqlE,GAAIztI,KAAKytI,IAC3D,OAAIztI,KAAK4O,MAAMogD,OAAQiya,EAAKryd,MAAQ5O,KAAK4O,MAAMs7R,UAC3ClqS,KAAK0pxB,YAAazoT,EAAKyoT,WAAY,GAChCzoT,GAGTwrT,EAAY1T,SAAW,SAAmBjsiB,EAAQm0P,GAChD,GAAwB,iBAAbA,EAAK74Z,MAAsC,iBAAX64Z,EAAKxzV,GAC5C,MAAM,IAAIywV,WAAW,0CACzB,OAAO,IAAIuuT,EAAYxrT,EAAK74Z,KAAM64Z,EAAKxzV,GAAIi1V,WAAe51P,EAAQm0P,EAAKryd,SAAUqyd,EAAKyoT,YAGjF+C,EApEuB,CAqE9BX,IAEFA,GAAKM,OAAO,UAAWK,IAKvB,IAAIG,GAAkC,SAAUd,GAC9C,WAA2B1jtB,EAAMqlE,EAAIo/oB,EAASC,GAAOl+wB,GAAO4vE,GAAQkrsB,IAClEoC,EAAKl4vB,KAAK5zB,MAGVA,KAAKooE,KAAOA,EAGZpoE,KAAKytI,GAAKA,EAGVztI,KAAK6sxB,QAAUA,EAGf7sxB,KAAK8sxB,MAAQA,GAGb9sxB,KAAK4O,MAAQA,GAIb5O,KAAKw+E,OAASA,GACdx+E,KAAK0pxB,YAAcA,GAGrB,OAAKoC,IAAOc,EAAkBtswB,UAAYwrwB,IAC1Cc,EAAkBvswB,UAAYxa,OAAOm8D,OAAQ8ptB,GAAQA,EAAKzrwB,YAC9BvgB,YAAc8sxB,EAE1CA,EAAkBvswB,UAAUsT,MAAQ,SAAgB60V,GAClD,GAAIxoX,KAAK0pxB,YAAcgD,GAAelka,EAAKxoX,KAAKooE,KAAMpoE,KAAK6sxB,UACpCH,GAAelka,EAAKxoX,KAAK8sxB,MAAO9sxB,KAAKytI,KACxD,OAAO6+oB,GAAWC,KAAK,iDAE3B,IAAIpkZ,EAAM3f,EAAI55W,MAAM5O,KAAK6sxB,QAAS7sxB,KAAK8sxB,OACvC,GAAI3kZ,EAAI6xY,WAAa7xY,EAAI8xY,QACrB,OAAOqS,GAAWC,KAAK,2BAC3B,IAAInd,GAAWpvwB,KAAK4O,MAAM6ztB,SAASziuB,KAAKw+E,OAAQ2pT,EAAIvpX,SACpD,OAAKwwvB,GACEkd,GAAWE,YAAYhka,EAAKxoX,KAAKooE,KAAMpoE,KAAKytI,GAAI2hoB,IAD/Bkd,GAAWC,KAAK,gCAI1CK,EAAkBvswB,UAAUm6F,OAAS,WACnC,OAAO,IAAI+vqB,GAAQ,CAACvqxB,KAAKooE,KAAMpoE,KAAK6sxB,QAAU7sxB,KAAKooE,KAAMpoE,KAAKw+E,OAC1Cx+E,KAAK8sxB,MAAO9sxB,KAAKytI,GAAKztI,KAAK8sxB,MAAO9sxB,KAAK4O,MAAMogD,KAAOhvD,KAAKw+E,UAG/EousB,EAAkBvswB,UAAU+rrB,OAAS,SAAiB5jV,GACpD,IAAI2f,EAAMnoY,KAAK8sxB,MAAQ9sxB,KAAK6sxB,QAC5B,OAAO,IAAID,EAAkB5sxB,KAAKooE,KAAMpoE,KAAKooE,KAAOpoE,KAAK4O,MAAMogD,KAAOm5U,EACzCnoY,KAAKooE,KAAOpoE,KAAKw+E,OAAQx+E,KAAKooE,KAAOpoE,KAAKw+E,OAAS2pT,EACnD3f,EAAI55W,MAAM5O,KAAKooE,KAAMpoE,KAAKytI,IAAI+toB,cAAcx7wB,KAAK6sxB,QAAU7sxB,KAAKooE,KAAMpoE,KAAK8sxB,MAAQ9sxB,KAAKooE,MACxFpoE,KAAK6sxB,QAAU7sxB,KAAKooE,KAAMpoE,KAAK0pxB,YAG9DkD,EAAkBvswB,UAAU1a,IAAM,SAAcw5B,GAC9C,IAAIipC,EAAOjpC,EAAQurvB,UAAU1qxB,KAAKooE,KAAM,GAAIqlE,GAAKtuG,EAAQurvB,UAAU1qxB,KAAKytI,IAAI,GACxEo/oB,GAAU1tvB,EAAQx5B,IAAI3F,KAAK6sxB,SAAS,GAAKC,GAAQ3tvB,EAAQx5B,IAAI3F,KAAK8sxB,MAAO,GAC7E,OAAK1ktB,EAAKk6D,SAAWmL,GAAGnL,SAAYuqpB,GAAUzktB,EAAKygB,KAAOiksB,GAAQr/oB,GAAG5kD,IAAc,KAC5E,IAAI+jsB,EAAkBxktB,EAAKygB,IAAK4kD,GAAG5kD,IAAKgksB,GAASC,GAAO9sxB,KAAK4O,MAAO5O,KAAKw+E,OAAQx+E,KAAK0pxB,YAG/FkD,EAAkBvswB,UAAU6pR,OAAS,WACnC,IAAI+2L,EAAO,CAACkrT,SAAU,gBAAiB/jtB,KAAMpoE,KAAKooE,KAAMqlE,GAAIztI,KAAKytI,GACrDo/oB,QAAS7sxB,KAAK6sxB,QAASC,MAAO9sxB,KAAK8sxB,MAAOtusB,OAAQx+E,KAAKw+E,QACnE,OAAIx+E,KAAK4O,MAAMogD,OAAQiya,EAAKryd,MAAQ5O,KAAK4O,MAAMs7R,UAC3ClqS,KAAK0pxB,YAAazoT,EAAKyoT,WAAY,GAChCzoT,GAGT2rT,EAAkB7T,SAAW,SAAmBjsiB,EAAQm0P,GACtD,GAAwB,iBAAbA,EAAK74Z,MAAsC,iBAAX64Z,EAAKxzV,IACrB,iBAAhBwzV,EAAK4rT,SAA4C,iBAAd5rT,EAAK6rT,OAA2C,iBAAf7rT,EAAKziZ,OAChF,MAAM,IAAI0/Y,WAAW,gDACzB,OAAO,IAAI0uT,EAAkB3rT,EAAK74Z,KAAM64Z,EAAKxzV,GAAIwzV,EAAK4rT,QAAS5rT,EAAK6rT,MACvCpqT,WAAe51P,EAAQm0P,EAAKryd,OAAQqyd,EAAKziZ,SAAUyiZ,EAAKyoT,YAGhFkD,EA9E6B,CA+EpCd,IAIF,YAAwBtja,EAAKpgT,EAAMqlE,GAEjC,QADI6zV,EAAQ94G,EAAI5gW,QAAQwgD,GAAOwa,EAAO6qD,EAAKrlE,EAAMovB,GAAQ8pY,EAAM9pY,MACxD5U,EAAO,GAAK4U,GAAQ,GAAK8pY,EAAMy6S,WAAWvkrB,KAAU8pY,EAAMl8c,KAAKoyE,IAAO4mY,YAC3E5mY,KACA5U,IAEF,GAAIA,EAAO,EAET,QADIv3E,GAAOi2d,EAAMl8c,KAAKoyE,IAAOmhrB,WAAWr3S,EAAMy6S,WAAWvkrB,KAClD5U,EAAO,GAAG,CACf,IAAKv3E,IAAQA,GAAKojnB,OAAU,OAAO,EACnCpjnB,GAAOA,GAAK0mT,WACZnvO,IAGJ,OAAO,EAGT,YAAgBx9D,EAAM4H,EAAOsd,GAC3B,OAAiB,GAATtd,GAAc5H,EAAKk1vB,WAAWttvB,EAAO5H,EAAKg5c,eAC/C9zb,GAAOllB,EAAKg5c,YAAch5c,EAAKk1vB,WAAW,EAAGhwuB,IAOlD,YAAoBs9B,GAGlB,QADIhpD,EADSgpD,EAAMy0S,OACEz9V,QAAQ65vB,WAAW7wsB,EAAM29B,WAAY39B,EAAMqmd,UACvDz2b,EAAQ5vB,EAAM4vB,SAAUA,EAAO,CACtC,IAAIpyE,EAAOwiD,EAAM05Z,MAAMl8c,KAAKoyE,GACxB5zE,GAAQgkD,EAAM05Z,MAAM19c,MAAM4zE,GAAQy2b,GAAWrmd,EAAM25Z,IAAIw6S,WAAWvkrB,GACtE,GAAIA,EAAQ5vB,EAAM4vB,OAASpyE,EAAKk1vB,WAAW12vB,GAAOqqgB,GAAUrvgB,GACxD,OAAO44E,EACX,GAAa,GAATA,GAAcpyE,EAAKtd,KAAKy7d,KAAKxG,YAAcgwT,GAAO3nwB,EAAMxB,GAAOqqgB,IAAa,OA0DpF,YAAmBnmhB,GAAQ,MAAO,CAACA,KAAMA,EAAMklO,MAAO,MAwFtD,YAAkBw7I,EAAK3/R,EAAK2O,EAAOw1rB,QAClB,IAAVx1rB,IAAmBA,EAAQ,GAEhC,IAAIisY,EAAOj7G,EAAI5gW,QAAQihE,GAAM5xE,GAAOwsd,EAAKjsY,MAAQA,EAC7Cy1rB,GAAaD,GAAcA,EAAWA,EAAWjnxB,OAAS,IAAO09d,EAAKpnH,OAC1E,GAAIplW,GAAO,GAAKwsd,EAAKpnH,OAAOv0W,KAAKy7d,KAAKxG,YACjC0G,EAAKpnH,OAAOi+Z,WAAW72S,EAAK7/c,QAAS6/c,EAAKpnH,OAAO+hH,cACjD6uT,GAAUnlxB,KAAKwzwB,aAAa73S,EAAKpnH,OAAOz9V,QAAQ65vB,WAAWh1S,EAAK7/c,QAAS6/c,EAAKpnH,OAAO+hH,aACtF,OAAO,EACX,QAAS5yd,GAAIi4d,EAAKjsY,MAAQ,EAAG7oF,GAAI6oF,EAAQ,EAAGhsF,GAAIyL,GAAMzL,KAAKmD,KAAK,CAC9D,IAAIyW,GAAOq+c,EAAKr+c,KAAK5Z,IAAI0hxB,GAAUzpT,EAAK7/c,MAAMpY,IAC9C,GAAI4Z,GAAKtd,KAAKy7d,KAAKxG,UAAa,OAAO,EACvC,IAAIvmI,GAAOpxU,GAAKxG,QAAQ65vB,WAAWyU,GAAS9nwB,GAAKg5c,YAC7Ctgb,GAASkvuB,GAAcA,EAAWr+wB,KAAOyW,GAE7C,GADI04B,IAAS14B,KAAQoxU,GAAOA,GAAKkib,aAAa,EAAG56tB,GAAMh2C,KAAKk6D,OAAOlkB,GAAMkvL,UACpE5nN,GAAKk1vB,WAAW4S,GAAU,EAAG9nwB,GAAKg5c,cAAgBtgb,GAAMh2C,KAAKwzwB,aAAa9kb,IAC3E,OAAO,EAEb,IAAI5yU,GAAQ6/c,EAAKs4S,WAAW9kwB,IACxBk2wB,GAAWH,GAAcA,EAAW,GACxC,OAAOvpT,EAAKr+c,KAAKnO,IAAMmnwB,eAAex6vB,GAAOA,GAAOupwB,GAAWA,GAASrlxB,KAAO27d,EAAKr+c,KAAKnO,GAAO,GAAGnP,MAwBrG,YAAiB0gX,EAAK3/R,GACpB,IAAI46Y,EAAOj7G,EAAI5gW,QAAQihE,GAAMjlE,EAAQ6/c,EAAK7/c,QAC1C,OAIF,YAAkBuO,EAAGD,GACnB,OAAOC,GAAKD,IAAMC,EAAEs8lB,QAAUt8lB,EAAEmsvB,UAAUpsvB,GALnCqpvB,CAAS93S,EAAKO,WAAYP,EAAKR,YACpCQ,EAAKpnH,OAAOi+Z,WAAW12vB,EAAOA,EAAQ,GAyE1C,YAAmB4kW,EAAK3/R,EAAKj6E,GAC3B,IAAI60d,EAAOj7G,EAAI5gW,QAAQihE,GACvB,IAAKj6E,EAAMgQ,QAAQowC,KAAQ,OAAO65B,EAElC,QADIjqE,EAAUhQ,EAAMgQ,QACXjQ,GAAI,EAAGA,GAAIC,EAAMorwB,UAAWrrwB,KAAOiQ,EAAUA,EAAQmzS,WAAWnzS,QACzE,QAAS42G,GAAO,EAAGA,KAA4B,GAAnB5mH,EAAMorwB,WAAkBprwB,EAAMogD,KAAO,EAAI,GAAIwmE,KACvE,QAAShqH,GAAIi4d,EAAKjsY,MAAOhsF,IAAK,EAAGA,KAAK,CACpC,IAAI4hxB,GAAO5hxB,IAAKi4d,EAAKjsY,MAAQ,EAAIisY,EAAK56Y,MAAQ46Y,EAAKz2c,MAAMxhB,GAAI,GAAKi4d,EAAKn5b,IAAI9+B,GAAI,IAAM,GAAI,EAAK,EAC1F6hxB,GAAY5pT,EAAK7/c,MAAMpY,KAAM4hxB,GAAO,EAAI,EAAI,GAC5C/wa,GAASonH,EAAKr+c,KAAK5Z,IAAI8hxB,IAAO,EAClC,GAAY,GAAR93pB,GACF83pB,GAAOjxa,GAAOi+Z,WAAW+S,GAAWA,GAAWzuwB,OAC1C,CACL,IAAI2uwB,GAAWlxa,GAAOwha,eAAewP,IAAWhN,aAAazhwB,EAAQmzS,WAAWjqT,MAChFwlxB,GAAOC,IAAYlxa,GAAO+ha,eAAeiP,GAAWA,GAAWE,GAAS,IAE1E,GAAID,GACA,OAAe,GAARF,GAAY3pT,EAAK56Y,IAAMuksB,GAAO,EAAI3pT,EAAKz3a,OAAOxgD,GAAI,GAAKi4d,EAAK3lb,MAAMtyC,GAAI,GAGrF,OAAO,KAGT,YAAqBi3d,EAAU78d,EAAGy2W,GAEhC,QADI8qH,EAAS,GACJx4d,EAAI,EAAGA,EAAI8zd,EAASrE,WAAYzvd,IAAK,CAC5C,IAAI8vD,GAAQgka,EAAShka,MAAM9vD,GACvB8vD,GAAM7/C,QAAQowC,OAAQyP,GAAQA,GAAMsG,KAAKyotB,GAAY/utB,GAAM7/C,QAAShZ,EAAG64D,MACvEA,GAAM29sB,WAAY39sB,GAAQ74D,EAAE64D,GAAO49S,EAAQ1tW,IAC/Cw4d,EAAO1he,KAAKg5D,IAEd,OAAO+ja,YAAmB2E,GA7U5B2kT,GAAKM,OAAO,gBAAiBQ,IA8C7BnB,GAAUprwB,UAAUotwB,KAAO,SAAS7ltB,EAAOl/D,GASzC,QARI44d,EAAQ15Z,EAAM05Z,MACdC,EAAM35Z,EAAM25Z,IACZ/pY,EAAQ5vB,EAAM4vB,MAEdk2rB,GAAWpsT,EAAMt1a,OAAOwrC,EAAQ,GAAIm2rB,GAASpsT,EAAIzjb,MAAM05C,EAAQ,GAC/DxqE,GAAQ0gwB,GAAUpjvB,GAAMqjvB,GAExB3huB,GAASw2a,QAAgBw3S,GAAY,EAChCxuwB,GAAIgsF,EAAOo2rB,IAAY,EAAOpixB,GAAI9C,EAAQ8C,KAC3CoixB,IAAatsT,EAAM19c,MAAMpY,IAAK,GAClCoixB,IAAY,EACZ5huB,GAASw2a,OAAclB,EAAMl8c,KAAK5Z,IAAGu5D,KAAK/Y,KAC1CgutB,MAEAhtvB,KAGJ,QADI8wB,GAAQ0kb,QAAgBy3S,GAAU,EAC7B4T,GAAMr2rB,EAAOs2rB,IAAc,EAAOD,GAAMnlxB,EAAQmlxB,KACjDC,IAAevsT,EAAIzjb,MAAM+vuB,GAAM,GAAKtsT,EAAIj3b,IAAIujvB,KAChDC,IAAc,EACdhwuB,GAAQ0kb,OAAcjB,EAAIn8c,KAAKyowB,IAAK9otB,KAAKjnB,KACzCm8tB,MAEA3vuB,KAGJ,OAAOtqC,KAAKwsD,KAAK,IAAIoguB,GAAkB5/vB,GAAOsd,GAAKojvB,GAAUC,GACtB,IAAIjrT,EAAM12a,GAAO96B,OAAO4sB,IAAQk8tB,GAAWC,IAC3CjutB,GAAOgD,KAAOgrtB,IAAW,KAkDlEyR,GAAUprwB,UAAUi6C,KAAO,SAASsN,EAAOmmtB,GAEzC,QADInvwB,EAAU4jd,QACL7zd,EAAIo/wB,EAAShoxB,OAAS,EAAG4I,GAAK,EAAGA,IACtCiQ,EAAU4jd,OAAcurT,EAASp/wB,GAAG7G,KAAKk6D,OAAO+rtB,EAASp/wB,GAAGq+N,MAAOpuN,IAEvE,IAAIoO,EAAQ46C,EAAM56C,MAAOsd,GAAMs9B,EAAMt9B,IACrC,OAAOtqC,KAAKwsD,KAAK,IAAIoguB,GAAkB5/vB,EAAOsd,GAAKtd,EAAOsd,GAAK,IAAIo4b,EAAM9jd,EAAS,EAAG,GAAImvwB,EAAShoxB,QAAQ,KAM5G0lxB,GAAUprwB,UAAU2twB,aAAe,SAAS5ltB,EAAMqlE,EAAI3lI,EAAMklO,GAC1D,IAAIi2iB,EAASjjxB,KAGb,QAFY,IAAPytI,IAAgBA,EAAKrlE,IAErBtgE,EAAK28d,YAAe,MAAM,IAAIvG,WAAW,oDAC9C,IAAIyE,GAAU3ie,KAAKitD,MAAMlnD,OACzB,YAAKyiX,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAI,SAAUroH,GAAMyjE,IAC9C,GAAIzjE,GAAKq/c,cAAgBr/c,GAAKi4vB,UAAUv1wB,EAAMklO,IAalD,YAAuBw7I,EAAK3/R,EAAK/gF,GAC/B,IAAI27d,EAAOj7G,EAAI5gW,QAAQihE,GAAMjlE,EAAQ6/c,EAAK7/c,QAC1C,OAAO6/c,EAAKpnH,OAAO+ha,eAAex6vB,EAAOA,EAAQ,EAAG9b,GAfMmmxB,CAAchL,EAAOz6Z,IAAKy6Z,EAAO9jvB,QAAQvwB,MAAM+zd,IAASh9d,IAAIkjF,IAAM/gF,GAAO,CAE/Hm7wB,EAAOiL,kBAAkBjL,EAAO9jvB,QAAQvwB,MAAM+zd,IAASh9d,IAAIkjF,GAAK,GAAI/gF,GACpE,IAAIq3B,GAAU8jvB,EAAO9jvB,QAAQvwB,MAAM+zd,IAC/BwrT,GAAShvvB,GAAQx5B,IAAIkjF,GAAK,GAAIulsB,GAAOjvvB,GAAQx5B,IAAIkjF,GAAMzjE,GAAK25c,SAAU,GAC1EkkT,SAAOz2tB,KAAK,IAAIoguB,GAAkBuB,GAAQC,GAAMD,GAAS,EAAGC,GAAO,EACnC,IAAI1rT,EAAMF,OAAc16d,EAAKk6D,OAAOgrK,EAAO,KAAM5nN,GAAKuoN,QAAS,EAAG,GAAI,GAAG,KAClG,KAGJ3tO,MAWTyrxB,GAAUprwB,UAAU6kd,cAAgB,SAASr8Y,EAAK/gF,EAAMklO,EAAOW,GAC7D,IAAIvoN,EAAOplB,KAAKwoX,IAAI62G,OAAOx2Y,GAC3B,IAAKzjE,EAAQ,MAAM,IAAI84c,WAAW,6BAC7Bp2d,IAAQA,EAAOsd,EAAKtd,MACzB,IAAIumxB,GAAUvmxB,EAAKk6D,OAAOgrK,EAAO,KAAMW,GAASvoN,EAAKuoN,OACrD,GAAIvoN,EAAKqpmB,OACL,OAAOzunB,KAAK68C,YAAYgsC,EAAKA,EAAMzjE,EAAK25c,SAAUsvT,IAEtD,IAAKvmxB,EAAKwzwB,aAAal2vB,EAAKxG,SACxB,MAAM,IAAIs/c,WAAW,iCAAmCp2d,EAAK9C,MAEjE,OAAOhF,KAAKwsD,KAAK,IAAIoguB,GAAkB/jsB,EAAKA,EAAMzjE,EAAK25c,SAAUl2Y,EAAM,EAAGA,EAAMzjE,EAAK25c,SAAW,EACzD,IAAI2D,EAAMF,OAAc6rT,IAAU,EAAG,GAAI,GAAG,KAkCrF5C,GAAUprwB,UAAUrJ,MAAQ,SAAS6xE,EAAK2O,EAAOw1rB,QAChC,IAAVx1rB,IAAmBA,EAAQ,GAGhC,QADIisY,EAAOzje,KAAKwoX,IAAI5gW,QAAQihE,GAAM78B,EAASw2a,QAAgB1kb,GAAQ0kb,QAC1Dh3d,GAAIi4d,EAAKjsY,MAAOvuF,GAAIw6d,EAAKjsY,MAAQA,EAAO7oF,GAAI6oF,EAAQ,EAAGhsF,GAAIvC,GAAGuC,KAAKmD,KAAK,CAC/Eq9C,EAASw2a,OAAciB,EAAKr+c,KAAK5Z,IAAGu5D,KAAK/Y,IACzC,IAAIsiuB,GAAYtB,GAAcA,EAAWr+wB,IACzCmvC,GAAQ0kb,OAAc8rT,GAAYA,GAAUxmxB,KAAKk6D,OAAOsstB,GAAUthjB,MAAOlvL,IAAS2lb,EAAKr+c,KAAK5Z,IAAGu5D,KAAKjnB,KAEtG,OAAO99C,KAAKwsD,KAAK,IAAIiguB,GAAY5jsB,EAAKA,EAAK,IAAI65Y,EAAM12a,EAAO96B,OAAO4sB,IAAQ05C,EAAOA,IAAQ,KA+C5Fi0rB,GAAUprwB,UAAUoH,KAAO,SAASohE,EAAK2O,QACxB,IAAVA,IAAmBA,EAAQ,GAEhC,IAAIhrC,EAAO,IAAIiguB,GAAY5jsB,EAAM2O,EAAO3O,EAAM2O,EAAOkrY,SAAa,GAClE,OAAO1ie,KAAKwsD,KAAKA,IAkEnB,IAAI+huB,GAA4B,SAAUzC,GACxC,WAAqB1jtB,EAAMqlE,EAAI86V,GAC7BujT,EAAKl4vB,KAAK5zB,MAGVA,KAAKooE,KAAOA,EAGZpoE,KAAKytI,GAAKA,EAGVztI,KAAKuoe,KAAOA,EAGd,OAAKujT,IAAOyC,EAAYjuwB,UAAYwrwB,IACpCyC,EAAYluwB,UAAYxa,OAAOm8D,OAAQ8ptB,GAAQA,EAAKzrwB,YAC9BvgB,YAAcyuxB,EAEpCA,EAAYluwB,UAAUsT,MAAQ,SAAgB60V,GAC5C,IAAIy6Z,EAASjjxB,KAETwuxB,GAAWhma,EAAI55W,MAAM5O,KAAKooE,KAAMpoE,KAAKytI,IAAK6zV,GAAQ94G,EAAI5gW,QAAQ5nB,KAAKooE,MACnEi0S,GAASilH,GAAMl8c,KAAKk8c,GAAM+6S,YAAYr8wB,KAAKytI,KAC3C7+H,GAAQ,IAAI8zd,EAAM8qT,GAAYgB,GAAS5vwB,QAAS,SAAUwG,GAAMi3V,IAClE,OAAKj3V,GAAK+3vB,QAAW9ga,GAAOv0W,KAAKi6wB,eAAekB,EAAO16S,KAAKzge,MACrDsd,GAAKmjd,KAAK06S,EAAO16S,KAAKixS,SAASp0vB,GAAKuoN,QADiCvoN,IAE3Ei3V,IAASmya,GAASxU,UAAWwU,GAASvU,SACzC,OAAOqS,GAAWE,YAAYhka,EAAKxoX,KAAKooE,KAAMpoE,KAAKytI,GAAI7+H,KAGzD2/wB,EAAYluwB,UAAU+rrB,OAAS,WAC7B,OAAO,IAAIqiF,GAAezuxB,KAAKooE,KAAMpoE,KAAKytI,GAAIztI,KAAKuoe,OAGrDgmT,EAAYluwB,UAAU1a,IAAM,SAAcw5B,GACxC,IAAIipC,EAAOjpC,EAAQurvB,UAAU1qxB,KAAKooE,KAAM,GAAIqlE,GAAKtuG,EAAQurvB,UAAU1qxB,KAAKytI,IAAI,GAC5E,OAAIrlE,EAAKk6D,SAAWmL,GAAGnL,SAAWl6D,EAAKygB,KAAO4kD,GAAG5kD,IAAc,KACxD,IAAI0lsB,EAAYnmtB,EAAKygB,IAAK4kD,GAAG5kD,IAAK7oF,KAAKuoe,OAGhDgmT,EAAYluwB,UAAUkwB,MAAQ,SAAgB8uB,GAC5C,GAAIA,aAAiBkvtB,GACjBlvtB,EAAMkpa,KAAKnF,GAAGpje,KAAKuoe,OACnBvoe,KAAKooE,MAAQ/I,EAAMouE,IAAMztI,KAAKytI,IAAMpuE,EAAM+I,KAC1C,OAAO,IAAImmtB,EAAYrhxB,KAAKulC,IAAIzyC,KAAKooE,KAAM/I,EAAM+I,MAC5Bl7D,KAAKsB,IAAIxO,KAAKytI,GAAIpuE,EAAMouE,IAAKztI,KAAKuoe,OAG7DgmT,EAAYluwB,UAAU6pR,OAAS,WAC7B,MAAO,CAACiif,SAAU,UAAW5jT,KAAMvoe,KAAKuoe,KAAKr+L,SACrC9hO,KAAMpoE,KAAKooE,KAAMqlE,GAAIztI,KAAKytI,KAGpC8gpB,EAAYxV,SAAW,SAAmBjsiB,EAAQm0P,GAChD,GAAwB,iBAAbA,EAAK74Z,MAAsC,iBAAX64Z,EAAKxzV,GAC5C,MAAM,IAAIywV,WAAW,0CACzB,OAAO,IAAIqwT,EAAYttT,EAAK74Z,KAAM64Z,EAAKxzV,GAAIq/F,EAAOyxiB,aAAat9S,EAAKsH,QAG/DgmT,EA3DuB,CA4D9BzC,IAEFA,GAAKM,OAAO,UAAWmC,IAGvB,IAAIE,GAA+B,SAAU3C,GAC3C,WAAwB1jtB,EAAMqlE,EAAI86V,GAChCujT,EAAKl4vB,KAAK5zB,MAGVA,KAAKooE,KAAOA,EAGZpoE,KAAKytI,GAAKA,EAGVztI,KAAKuoe,KAAOA,EAGd,OAAKujT,IAAO2C,EAAenuwB,UAAYwrwB,IACvC2C,EAAepuwB,UAAYxa,OAAOm8D,OAAQ8ptB,GAAQA,EAAKzrwB,YAC9BvgB,YAAc2uxB,EAEvCA,EAAepuwB,UAAUsT,MAAQ,SAAgB60V,GAC/C,IAAIy6Z,EAASjjxB,KAETwuxB,GAAWhma,EAAI55W,MAAM5O,KAAKooE,KAAMpoE,KAAKytI,IACrC7+H,GAAQ,IAAI8zd,EAAM8qT,GAAYgB,GAAS5vwB,QAAS,SAAUwG,IAC5D,OAAOA,GAAKmjd,KAAK06S,EAAO16S,KAAKqxS,cAAcx0vB,GAAKuoN,UAC9C6gjB,GAASxU,UAAWwU,GAASvU,SACjC,OAAOqS,GAAWE,YAAYhka,EAAKxoX,KAAKooE,KAAMpoE,KAAKytI,GAAI7+H,KAGzD6/wB,EAAepuwB,UAAU+rrB,OAAS,WAChC,OAAO,IAAImiF,GAAYvuxB,KAAKooE,KAAMpoE,KAAKytI,GAAIztI,KAAKuoe,OAGlDkmT,EAAepuwB,UAAU1a,IAAM,SAAcw5B,GAC3C,IAAIipC,EAAOjpC,EAAQurvB,UAAU1qxB,KAAKooE,KAAM,GAAIqlE,GAAKtuG,EAAQurvB,UAAU1qxB,KAAKytI,IAAI,GAC5E,OAAIrlE,EAAKk6D,SAAWmL,GAAGnL,SAAWl6D,EAAKygB,KAAO4kD,GAAG5kD,IAAc,KACxD,IAAI4lsB,EAAermtB,EAAKygB,IAAK4kD,GAAG5kD,IAAK7oF,KAAKuoe,OAGnDkmT,EAAepuwB,UAAUkwB,MAAQ,SAAgB8uB,GAC/C,GAAIA,aAAiBovtB,GACjBpvtB,EAAMkpa,KAAKnF,GAAGpje,KAAKuoe,OACnBvoe,KAAKooE,MAAQ/I,EAAMouE,IAAMztI,KAAKytI,IAAMpuE,EAAM+I,KAC1C,OAAO,IAAIqmtB,EAAevhxB,KAAKulC,IAAIzyC,KAAKooE,KAAM/I,EAAM+I,MAC5Bl7D,KAAKsB,IAAIxO,KAAKytI,GAAIpuE,EAAMouE,IAAKztI,KAAKuoe,OAGhEkmT,EAAepuwB,UAAU6pR,OAAS,WAChC,MAAO,CAACiif,SAAU,aAAc5jT,KAAMvoe,KAAKuoe,KAAKr+L,SACxC9hO,KAAMpoE,KAAKooE,KAAMqlE,GAAIztI,KAAKytI,KAGpCghpB,EAAe1V,SAAW,SAAmBjsiB,EAAQm0P,GACnD,GAAwB,iBAAbA,EAAK74Z,MAAsC,iBAAX64Z,EAAKxzV,GAC5C,MAAM,IAAIywV,WAAW,6CACzB,OAAO,IAAIuwT,EAAextT,EAAK74Z,KAAM64Z,EAAKxzV,GAAIq/F,EAAOyxiB,aAAat9S,EAAKsH,QAGlEkmT,EAzD0B,CA0DjC3C,IAkKF,YAAuBxqT,EAAOC,EAAK3yd,GACjC,OAAQA,EAAMorwB,YAAcprwB,EAAMqrwB,SAAW34S,EAAMt0c,SAAWu0c,EAAIv0c,SAChEs0c,EAAMjlH,OAAOi+Z,WAAWh5S,EAAM19c,QAAS29c,EAAI39c,QAAShV,EAAMgQ,SAlK9DktwB,GAAKM,OAAO,aAAcqC,IAI1BhD,GAAUprwB,UAAUquwB,QAAU,SAAStmtB,EAAMqlE,EAAI86V,GAC/C,IAAI06S,EAASjjxB,KAETgiI,EAAU,GAAIq8U,GAAQ,GAAIswU,GAAW,KAAMC,GAAS,KACxD,YAAKpma,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAI,SAAUroH,GAAMyjE,GAAKwzR,IACnD,GAAKj3V,GAAKg3vB,SACV,KAAIzuiB,GAAQvoN,GAAKuoN,MACjB,IAAK46P,EAAKsxS,QAAQlsiB,KAAU0uI,GAAOv0W,KAAKi6wB,eAAex5S,EAAKzge,MAAO,CAIjE,QAHIklB,GAAQ9f,KAAKsB,IAAIq6E,GAAKzgB,GAAO99B,GAAMp9B,KAAKulC,IAAIo2C,GAAMzjE,GAAK25c,SAAUtxV,GACjEohpB,GAAStmT,EAAKixS,SAAS7riB,IAElBh/N,GAAI,EAAGA,GAAIg/N,GAAM5nO,OAAQ4I,KAC3Bg/N,GAAMh/N,IAAGkrwB,QAAQgV,MAChBF,IAAYA,GAASlhpB,IAAMzgH,IAAS2hwB,GAASpmT,KAAKnF,GAAGz1P,GAAMh/N,KAC3DggxB,GAASlhpB,GAAKnjG,GAEd03F,EAAQv8H,KAAKkpxB,GAAW,IAAIF,GAAezhwB,GAAOsd,GAAKqjM,GAAMh/N,OAIjEigxB,IAAUA,GAAOnhpB,IAAMzgH,GACvB4hwB,GAAOnhpB,GAAKnjG,GAEZ+za,GAAM54c,KAAKmpxB,GAAS,IAAIL,GAAYvhwB,GAAOsd,GAAKi+b,QAIxDvmW,EAAQp7H,QAAQ,SAAUC,IAAK,OAAOo8wB,EAAOz2tB,KAAK3lD,MAClDw3c,GAAMz3c,QAAQ,SAAUC,IAAK,OAAOo8wB,EAAOz2tB,KAAK3lD,MACzC7G,MAQTyrxB,GAAUprwB,UAAUyuwB,WAAa,SAAS1mtB,EAAMqlE,EAAI86V,GAClD,IAAI06S,EAASjjxB,UACC,IAATuoe,IAAkBA,EAAO,MAE9B,IAAIi5K,EAAU,GAAIh1lB,GAAO,EACzB,YAAKg8T,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAI,SAAUroH,GAAMyjE,IAC9C,GAAKzjE,GAAKg3vB,SACV5vtB,MACA,IAAIuiuB,GAAW,KACf,GAAIxmT,aAAgB85S,GAElB,QADsBr5sB,GAAlB32C,GAAMjN,GAAKuoN,MACR3kK,GAAQu/Z,EAAKsxS,QAAQxnvB,MACjC08vB,KAAaA,GAAW,KAAKtpxB,KAAKujE,IAC3B32C,GAAM22C,GAAM4wsB,cAAcvnvB,SAEnBk2c,EACLA,EAAKsxS,QAAQz0vB,GAAKuoN,SAAUohjB,GAAW,CAACxmT,IAE5CwmT,GAAW3pwB,GAAKuoN,MAElB,GAAIohjB,IAAYA,GAAShpxB,OAEvB,QADIukC,GAAMp9B,KAAKulC,IAAIo2C,GAAMzjE,GAAK25c,SAAUtxV,GAC/B9+H,GAAI,EAAGA,GAAIogxB,GAAShpxB,OAAQ4I,KAAK,CAExC,QADIxE,GAAQ4kxB,GAASpgxB,IAAIqgxB,QAAW,EAC3BxtrB,GAAI,EAAGA,GAAIggjB,EAAQz7oB,OAAQy7F,KAAK,CACvC,IAAI3kE,GAAI2knB,EAAQhgjB,IACZ3kE,GAAE2vB,MAAQA,GAAO,GAAKriD,GAAMi5d,GAAGo+K,EAAQhgjB,IAAGr3F,SAAU6kxB,GAAUnyvB,IAEhEmyvB,IACFA,GAAQvhpB,GAAKnjG,GACb0kvB,GAAQxiuB,KAAOA,IAEfg1lB,EAAQ/7oB,KAAK,CAAC0E,MAAOA,GAAOi+D,KAAMl7D,KAAKsB,IAAIq6E,GAAKzgB,GAAOqlE,GAAInjG,GAAKkiB,KAAMA,SAK9Eg1lB,EAAQ56oB,QAAQ,SAAUi2B,IAAK,OAAOomvB,EAAOz2tB,KAAK,IAAIiiuB,GAAe5xvB,GAAEurC,KAAMvrC,GAAE4wG,GAAI5wG,GAAE1yB,UAC9EnK,MAQTyrxB,GAAUprwB,UAAU6twB,kBAAoB,SAASrlsB,EAAKomsB,EAAY1twB,QACjD,IAAVA,IAAmBA,EAAQ0twB,EAAWnR,cAI3C,QAFI14vB,EAAOplB,KAAKwoX,IAAI62G,OAAOx2Y,GACvBqmsB,EAAW,GAAI/lB,GAAMtgrB,EAAM,EACtBl6E,GAAI,EAAGA,GAAIyW,EAAKg5c,WAAYzvd,KAAK,CACxC,IAAI8vD,GAAQr5C,EAAKq5C,MAAM9vD,IAAI27B,GAAM6+tB,GAAM1qsB,GAAMsga,SACzCowT,GAAU5twB,EAAM88vB,UAAU5/sB,GAAM32D,KAAM22D,GAAMuuK,OAChD,GAAKmijB,GAEE,CACL5twB,EAAQ4twB,GACR,QAAS3trB,GAAI,EAAGA,GAAI/iC,GAAMkvK,MAAM5nO,OAAQy7F,KAAYytrB,EAAWlN,eAAetjtB,GAAMkvK,MAAMnsI,IAAG15F,OACzF9H,KAAKwsD,KAAK,IAAIiiuB,GAAetlB,GAAK7+tB,GAAKm0B,GAAMkvK,MAAMnsI,WAJvD0trB,EAASzpxB,KAAK,IAAIgnxB,GAAYtjB,GAAK7+tB,GAAKo4b,UAM1CymS,GAAM7+tB,GAER,IAAK/oB,EAAM28vB,SAAU,CACnB,IAAIxvwB,GAAO6S,EAAM2+vB,WAAW19S,SAAgB,GAC5Cxie,KAAKurB,QAAQ49uB,GAAKA,GAAK,IAAIzmS,EAAMh0d,GAAM,EAAG,IAE5C,QAAS8wwB,GAAM0P,EAASnpxB,OAAS,EAAGy5wB,IAAO,EAAGA,KAASx/wB,KAAKwsD,KAAK0iuB,EAAS1P,KAC1E,OAAOx/wB,MAuBTyrxB,GAAUprwB,UAAUkL,QAAU,SAAS68C,EAAMqlE,EAAI7+H,QACnC,IAAP6+H,IAAgBA,EAAKrlE,QACX,IAAVx5D,IAAmBA,EAAQ8zd,SAEhC,IAAIl2a,EAnBN,YAAqBg8T,EAAKpgT,EAAMqlE,EAAI7+H,GAIlC,QAHY,IAAP6+H,IAAgBA,EAAKrlE,QACX,IAAVx5D,IAAmBA,EAAQ8zd,SAE5Bt6Z,GAAQqlE,IAAO7+H,EAAMogD,KAAQ,OAAO,KAExC,IAAIsya,EAAQ94G,EAAI5gW,QAAQwgD,GAAOm5Z,GAAM/4G,EAAI5gW,QAAQ6lH,GAEjD,OAAI2hpB,GAAc9tT,EAAOC,GAAK3yd,GAAiB,IAAI69wB,GAAYrktB,EAAMqlE,EAAI7+H,GAClE,IAAIygxB,GAAO/tT,EAAOC,GAAK3yd,GAAO0ppB,MAU1Bg3H,CAAYtvxB,KAAKwoX,IAAKpgT,EAAMqlE,EAAI7+H,GAC3C,OAAI49C,GAAQxsD,KAAKwsD,KAAKA,GACfxsD,MAMTyrxB,GAAUprwB,UAAUw8B,YAAc,SAASurB,EAAMqlE,EAAI7uH,GACnD,OAAO5e,KAAKurB,QAAQ68C,EAAMqlE,EAAI,IAAIi1V,EAAMF,OAAc5jd,GAAU,EAAG,KAKrE6swB,GAAUprwB,UAAUlB,OAAS,SAASipD,EAAMqlE,GAC1C,OAAOztI,KAAKurB,QAAQ68C,EAAMqlE,EAAIi1V,UAKhC+oT,GAAUprwB,UAAUm+D,OAAS,SAASqK,EAAKjqE,GACzC,OAAO5e,KAAK68C,YAAYgsC,EAAKA,EAAKjqE,IA4BpC,IAAIywwB,GAAS,SAAgB/tT,EAAOC,EAAK3yd,GACvC5O,KAAKuhe,IAAMA,EACXvhe,KAAKshe,MAAQA,EACbthe,KAAKuvxB,SAAW3gxB,EAEhB5O,KAAKwvxB,SAAW,GAChB,QAAS7gxB,EAAI,EAAGA,GAAK2yd,EAAM9pY,MAAO7oF,IAAK,CACrC,IAAIyW,GAAOk8c,EAAMl8c,KAAKzW,GACtB3O,KAAKwvxB,SAAS/pxB,KAAK,CACjBqC,KAAMsd,GAAKtd,KACXyZ,MAAO6D,GAAKy4vB,eAAev8S,EAAMy6S,WAAWptwB,MAIhD3O,KAAKy5wB,OAASj3S,QACd,QAASg9S,GAAMl+S,EAAM9pY,MAAOgorB,GAAM,EAAGA,KACjCx/wB,KAAKy5wB,OAASj3S,OAAclB,EAAMl8c,KAAKo6vB,IAAKz6sB,KAAK/kE,KAAKy5wB,UAGxDS,GAAuB,CAAE1irB,MAAO,CAAEugrB,cAAc,IAqOpD,YAA0Bt1S,EAAUjrY,EAAOogB,GACzC,OAAa,GAATpgB,EAAqBirY,EAASg2S,WAAW7gqB,GACtC6qX,EAASi2S,aAAa,EAAGj2S,EAAS1wK,WAAWhtP,KAAK0qtB,GAAiBhtT,EAAS1wK,WAAWnzS,QAAS44E,EAAQ,EAAGogB,KAGpH,YAAuB6qX,EAAUjrY,EAAO54E,GACtC,OAAa,GAAT44E,EAAqBirY,EAASvxc,OAAOtS,GAClC6jd,EAASi2S,aAAaj2S,EAASrE,WAAa,EACtBqE,EAASwB,UAAUl/Z,KAAK2qtB,GAAcjtT,EAASwB,UAAUrld,QAAS44E,EAAQ,EAAG54E,KAG5G,YAAmB6jd,EAAUjrY,GAC3B,QAAS7oF,EAAI,EAAGA,EAAI6oF,EAAO7oF,IAAO8zd,EAAWA,EAAS1wK,WAAWnzS,QACjE,OAAO6jd,EAGT,YAAwBr9c,EAAM40vB,EAAWC,GACvC,GAAID,GAAa,EAAK,OAAO50vB,EAC7B,IAAI46vB,EAAO56vB,EAAKxG,QAChB,OAAIo7vB,EAAY,IACZgG,EAAOA,EAAKtH,aAAa,EAAGiX,GAAe3P,EAAKjud,WAAYiod,EAAY,EAAsB,GAAnBgG,EAAK5hT,WAAkB67S,EAAU,EAAI,KAChHD,EAAY,IACdgG,EAAO56vB,EAAKtd,KAAKg2wB,aAAaoC,WAAWF,GAAM9uvB,OAAO8uvB,GAClD/F,GAAW,IAAK+F,EAAOA,EAAK9uvB,OAAO9L,EAAKtd,KAAKg2wB,aAAaC,cAAciC,GAAME,WAAW19S,SAAgB,MAExGp9c,EAAK2/C,KAAKi7sB,GAGnB,YAA0Bz+S,EAAK/pY,EAAO1vF,EAAMyZ,EAAOwG,GACjD,IAAI3C,GAAOm8c,EAAIn8c,KAAKoyE,GAAQ5zE,GAAQmE,EAAOw5c,EAAIw6S,WAAWvkrB,GAAS+pY,EAAI39c,MAAM4zE,GAC7E,GAAI5zE,IAASwB,GAAKg5c,aAAet2d,EAAKizwB,kBAAkB31vB,GAAKtd,MAAS,OAAO,KAC7E,IAAIwwpB,GAAM/2oB,EAAM2+vB,WAAW96vB,GAAKxG,SAAS,EAAMgF,IAC/C,OAAO00oB,KAGT,YAAsBxwpB,EAAM26d,EAAUz1c,GACpC,QAASre,EAAIqe,EAAOre,EAAI8zd,EAASrE,WAAYzvd,IACzC,IAAK7G,EAAKq2wB,YAAY17S,EAAShka,MAAM9vD,GAAGg/N,OAAU,OAAO,EAC7D,OAAO,EANQiijB,CAAa9nxB,EAAMsd,GAAKxG,QAASgF,IAAS00oB,GAAM,KAiGjE,YAAuB71L,EAAUjrY,EAAOq4rB,EAASC,EAASzza,GACxD,GAAI7kR,EAAQq4rB,EAAS,CACnB,IAAI3oxB,GAAQu7d,EAAS1wK,WACrB0wK,EAAWA,EAASi2S,aAAa,EAAGxxwB,GAAM69D,KAAKgrtB,GAAc7oxB,GAAM0X,QAAS44E,EAAQ,EAAGq4rB,EAASC,EAAS5oxB,MAE3G,GAAIswF,EAAQs4rB,EAAS,CACnB,IAAIvuwB,GAAQ86V,EAAOwha,eAAe,GAC9B7wvB,GAAQzL,GAAM2+vB,WAAWz9S,GAAUvxc,OAAOuxc,GAC9CA,EAAWz1c,GAAMkE,OAAO3P,GAAMw8vB,cAAc/wvB,IAAOkzvB,WAAW19S,SAAgB,IAEhF,OAAOC,EA0CT,YAAuBnB,EAAOC,GAE5B,QADIhvd,EAAS,GACJ/G,EADmB0B,KAAKulC,IAAI6ub,EAAM9pY,MAAO+pY,EAAI/pY,OAC/BhsF,GAAK,EAAGA,IAAK,CAClC,IAAIwhB,GAAQs0c,EAAMt0c,MAAMxhB,GACxB,GAAIwhB,GAAQs0c,EAAMz4Y,KAAOy4Y,EAAM9pY,MAAQhsF,IACnC+1d,EAAIj3b,IAAI9+B,GAAK+1d,EAAI14Y,KAAO04Y,EAAI/pY,MAAQhsF,IACpC81d,EAAMl8c,KAAK5Z,GAAG1D,KAAKy7d,KAAKxG,WACxBwE,EAAIn8c,KAAK5Z,GAAG1D,KAAKy7d,KAAKxG,UAAa,OACnC/vc,IAASu0c,EAAIv0c,MAAMxhB,IAClBA,GAAK81d,EAAM9pY,OAAShsF,GAAK+1d,EAAI/pY,OAAS8pY,EAAMjlH,OAAOmga,eAAiBj7S,EAAIllH,OAAOmga,eAC/EhxwB,GAAK+1d,EAAIv0c,MAAMxhB,EAAI,IAAMwhB,GAAQ,IAClCza,EAAO9M,KAAK+F,GAElB,OAAO+G,EAraT2nwB,GAAqB1irB,MAAM34E,IAAM,WAAc,OAAO7e,KAAKwvxB,SAASzpxB,OAAS,GAE7EspxB,GAAOhvwB,UAAUi4oB,IAAM,WAIrB,KAAOt4pB,KAAKuvxB,SAASvguB,MAAM,CACzB,IAAIspmB,EAAMt4pB,KAAKgwxB,eACX13H,EAAOt4pB,KAAKiwxB,WAAW33H,GACpBt4pB,KAAKkwxB,YAAclwxB,KAAKmwxB,WAOjC,IAAIC,EAAapwxB,KAAKqwxB,iBAAkBC,EAAatwxB,KAAKy5wB,OAAOzqtB,KAAOhvD,KAAKw3F,MAAQx3F,KAAKshe,MAAM9pY,MAC5F8pY,EAAQthe,KAAKshe,MAAOC,GAAMvhe,KAAKgrB,MAAMolwB,EAAa,EAAIpwxB,KAAKuhe,IAAMD,EAAM94G,IAAI5gW,QAAQwowB,IACvF,IAAK7uT,GAAO,OAAO,KAInB,QADI3id,GAAU5e,KAAKy5wB,OAAQO,GAAY14S,EAAM9pY,MAAOyirB,GAAU14S,GAAI/pY,MAC3DwirB,IAAaC,IAAiC,GAAtBr7vB,GAAQw/c,YACrCx/c,GAAUA,GAAQmzS,WAAWnzS,QAC7Bo7vB,KAAaC,KAEf,IAAIrrwB,GAAQ,IAAI8zd,EAAM9jd,GAASo7vB,GAAWC,IAC1C,OAAImW,GAAa,EACN,IAAIxD,GAAkBtrT,EAAMz4Y,IAAKunsB,EAAYpwxB,KAAKuhe,IAAI14Y,IAAK7oF,KAAKuhe,IAAIj3b,MAAO17B,GAAO0hxB,GACzF1hxB,GAAMogD,MAAQsya,EAAMz4Y,KAAO7oF,KAAKuhe,IAAI14Y,IAC7B,IAAI4jsB,GAAYnrT,EAAMz4Y,IAAK04Y,GAAI14Y,IAAKj6E,SAD/C,GAOFygxB,GAAOhvwB,UAAU2vwB,aAAe,WAG9B,QAASx6pB,EAAO,EAAGA,GAAQ,EAAGA,IAC5B,QAAS+6pB,EAAavwxB,KAAKuvxB,SAASvV,UAAWuW,GAAc,EAAGA,IAS9D,IARA,IAAyBl0a,OAAU,EAO/Bn1W,IANAqpxB,GACFl0a,EAASm0a,GAAUxwxB,KAAKuvxB,SAAS3wwB,QAAS2xwB,EAAa,GAAGx+d,YACxCnzS,QAEP5e,KAAKuvxB,SAAS3wwB,SAENmzS,WACZ0+d,GAAgBzwxB,KAAKw3F,MAAOi5rB,IAAiB,EAAGA,KAAiB,CACxE,IAAIhwqB,GAAMzgH,KAAKwvxB,SAASiB,IAClB3oxB,GAAO24G,GAAI34G,KACXyZ,GAAQk/F,GAAIl/F,MACZ+4C,QAAQ,EAASo0D,QAAU,EAIjC,GAAY,GAAR8G,IAActuH,GAAQqa,GAAM88vB,UAAUn3wB,GAAMY,QAAU4mH,GAASntG,GAAM2+vB,WAAW19S,OAAct7d,KAAQ,IACtFY,GAAKizwB,kBAAkB1+Z,EAAOv0W,OAC9C,MAAO,CAACyoxB,WAAYA,EAAYE,cAAeA,GAAep0a,OAAQA,EAAQ3tP,OAAQA,IAGrF,GAAY,GAAR8G,GAAatuH,KAAUozD,GAAO/4C,GAAM8+vB,aAAan5wB,GAAMY,OAC5D,MAAO,CAACyoxB,WAAYA,EAAYE,cAAeA,GAAep0a,OAAQA,EAAQ/hT,KAAMA,IAGxF,GAAI+hT,GAAU96V,GAAM88vB,UAAUhia,EAAOv0W,MAAS,QAMtDunxB,GAAOhvwB,UAAU6vwB,SAAW,WAC1B,IAAIzvqB,EAAMzgH,KAAKuvxB,SACT3wwB,EAAU6hG,EAAI7hG,QACdo7vB,EAAYv5pB,EAAIu5pB,UAChBC,EAAUx5pB,EAAIw5pB,QAChBv4uB,GAAQ8uvB,GAAU5xwB,EAASo7vB,GAC/B,SAAKt4uB,GAAM08b,YAAc18b,GAAMqwR,WAAW08T,SAC1CzunB,KAAKuvxB,SAAW,IAAI7sT,EAAM9jd,EAASo7vB,EAAY,EACrB9swB,KAAKsB,IAAIyrwB,EAASv4uB,GAAMstB,KAAOgrtB,GAAap7vB,EAAQowC,KAAOirtB,EAAUD,EAAY,EAAI,IACxG,KAGTqV,GAAOhvwB,UAAU8vwB,SAAW,WAC1B,IAAI1vqB,EAAMzgH,KAAKuvxB,SACT3wwB,EAAU6hG,EAAI7hG,QACdo7vB,EAAYv5pB,EAAIu5pB,UAChBC,EAAUx5pB,EAAIw5pB,QAChBv4uB,GAAQ8uvB,GAAU5xwB,EAASo7vB,GAC/B,GAAIt4uB,GAAM08b,YAAc,GAAK47S,EAAY,EAAG,CAC1C,IAAI0W,GAAY9xwB,EAAQowC,KAAOgrtB,GAAaA,EAAYt4uB,GAAMstB,KAC9DhvD,KAAKuvxB,SAAW,IAAI7sT,EAAM+sT,GAAiB7wwB,EAASo7vB,EAAY,EAAG,GAAIA,EAAY,EACzD0W,GAAY1W,EAAY,EAAIC,QAEtDj6wB,KAAKuvxB,SAAW,IAAI7sT,EAAM+sT,GAAiB7wwB,EAASo7vB,EAAW,GAAIA,EAAWC,IAQlFoV,GAAOhvwB,UAAU4vwB,WAAa,SAAqBxvqB,GAOjD,QANM8vqB,EAAa9vqB,EAAI8vqB,WACjBE,EAAgBhwqB,EAAIgwqB,cACpBp0a,EAAS57P,EAAI47P,OACb3tP,GAASjO,EAAIiO,OACbp0D,GAAOmmD,EAAInmD,KAEVt6D,KAAKw3F,MAAQi5rB,GAAiBzwxB,KAAK2wxB,oBAC1C,GAAIr2tB,GAAQ,QAAS3rD,GAAI,EAAGA,GAAI2rD,GAAKv0D,OAAQ4I,KAAO3O,KAAK4wxB,iBAAiBt2tB,GAAK3rD,KAE/E,IAAIC,GAAQ5O,KAAKuvxB,SAAU9sT,GAAWpmH,EAASA,EAAOz9V,QAAUhQ,GAAMgQ,QAClEo7vB,GAAYprwB,GAAMorwB,UAAYuW,EAC9BM,GAAQ,EAAGrouB,GAAM,GACjB2xtB,GAAQn6wB,KAAKwvxB,SAASiB,GACpBlvwB,GAAQ44vB,GAAM54vB,MACdzZ,GAAOqywB,GAAMrywB,KACnB,GAAI4mH,GAAQ,CACV,QAAS8wpB,GAAM,EAAGA,GAAM9wpB,GAAO0vW,WAAYohT,KAASh3tB,GAAI/iD,KAAKipH,GAAOjwD,MAAM+gtB,KAC1Ej+vB,GAAQA,GAAMw8vB,cAAcrvpB,IAQ9B,QAHIoiqB,GAAgBruT,GAASzza,KAAOuhuB,GAAe3hxB,GAAMgQ,QAAQowC,KAAOpgD,GAAMqrwB,SAGvE4W,GAAQpuT,GAASrE,YAAY,CAClC,IAAI/yd,GAAOo3d,GAAShka,MAAMoytB,IAAQ34qB,GAAU32F,GAAM88vB,UAAUhzwB,GAAKvD,MACjE,IAAKowG,GAAW,SAChB24qB,GACY,GAAkB,GAAb7W,IAAkB3uwB,GAAKuT,QAAQowC,QAC9CztC,GAAQ22F,GACR1vD,GAAI/iD,KAAKkqxB,GAAetkxB,GAAKk9d,KAAKzge,GAAKm6wB,aAAa52wB,GAAKsiO,QAAkB,GAATkjjB,GAAa7W,GAAY,EACnE6W,IAASpuT,GAASrE,WAAa0yT,IAAe,KAG1E,IAAI3Q,GAAQ0Q,IAASpuT,GAASrE,WACzB+hT,KAAS2Q,IAAe,GAE7B9wxB,KAAKy5wB,OAASiW,GAAc1vxB,KAAKy5wB,OAAQgX,EAAejuT,OAAch6a,KACtExoD,KAAKwvxB,SAASiB,GAAelvwB,MAAQA,GAIjC4+vB,IAAS2Q,GAAe,GAAKz0a,GAAUA,EAAOv0W,MAAQ9H,KAAKwvxB,SAASxvxB,KAAKw3F,OAAO1vF,MAAQ9H,KAAKwvxB,SAASzpxB,OAAS,GAC/G/F,KAAK2wxB,oBAGT,QAASjR,GAAM,EAAGvW,GAAM1mS,GAAUi9S,GAAMoR,GAAcpR,KAAO,CAC3D,IAAIt6vB,GAAO+jvB,GAAIllS,UACfjke,KAAKwvxB,SAAS/pxB,KAAK,CAACqC,KAAMsd,GAAKtd,KAAMyZ,MAAO6D,GAAKy4vB,eAAez4vB,GAAKg5c,cACrE+qS,GAAM/jvB,GAAKxG,QAMb5e,KAAKuvxB,SAAWwB,GACE,GAAdR,EAAkB7tT,QAClB,IAAIA,EAAM+sT,GAAiB7gxB,GAAMgQ,QAAS2xwB,EAAa,EAAG,GAChDA,EAAa,EAAGO,GAAe,EAAIlixB,GAAMqrwB,QAAUsW,EAAa,GAHrD,IAAI7tT,EAAM+sT,GAAiB7gxB,GAAMgQ,QAAS2xwB,EAAYM,IAAQjixB,GAAMorwB,UAAWprwB,GAAMqrwB,UAMhHoV,GAAOhvwB,UAAUgwwB,eAAiB,WAChC,IAAKrwxB,KAAKuhe,IAAIllH,OAAOooH,aAAezke,KAAKuhe,IAAIj3b,OAAStqC,KAAKuhe,IAAI14Y,IAAO,OAAO,EAC7E,IAAqCq5B,EAAjCiM,EAAMnuH,KAAKwvxB,SAASxvxB,KAAKw3F,OAC7B,IAAK22B,EAAIrmH,KAAK28d,cAAgBusT,GAAiBhxxB,KAAKuhe,IAAKvhe,KAAKuhe,IAAI/pY,MAAO22B,EAAIrmH,KAAMqmH,EAAI5sG,OAAO,IACzFvhB,KAAKuhe,IAAI/pY,OAASx3F,KAAKw3F,QAAU0qB,EAAQliH,KAAKixxB,eAAejxxB,KAAKuhe,OAASr/W,EAAM1qB,OAASx3F,KAAKw3F,MAAU,OAAO,EAKrH,QAFMA,EADIx3F,KAAKuhe,IACG/pY,MACZ15C,GAAQ99C,KAAKuhe,IAAIzjb,MAAM05C,GACtBA,EAAQ,GAAK15C,IAAS99C,KAAKuhe,IAAIj3b,MAAMktD,MAAY15C,GACxD,OAAOA,IAGTuxuB,GAAOhvwB,UAAU4wwB,eAAiB,SAAyB1vT,GACzD/0D,EAAM,QAAS79Z,EAAIzB,KAAKulC,IAAIzyC,KAAKw3F,MAAO+pY,EAAI/pY,OAAQ7oF,GAAK,EAAGA,IAAK,CAC/D,IAAI8xG,EAAMzgH,KAAKwvxB,SAAS7gxB,GAClB4S,EAAQk/F,EAAIl/F,MACZzZ,GAAO24G,EAAI34G,KACbopxB,GAAYvixB,EAAI4yd,EAAI/pY,OAAS+pY,EAAIj3b,IAAI37B,EAAI,IAAM4yd,EAAI14Y,KAAO04Y,EAAI/pY,OAAS7oF,EAAI,IAC3E2ppB,GAAM04H,GAAiBzvT,EAAK5yd,EAAG7G,GAAMyZ,EAAO2vwB,IAChD,GAAK54H,GACL,SAAS9spB,GAAImD,EAAI,EAAGnD,IAAK,EAAGA,KAAK,CAC/B,IAAI2uwB,GAAQn6wB,KAAKwvxB,SAAShkxB,IAGtB0sG,GAAU84qB,GAAiBzvT,EAAK/1d,GADrB2uwB,GAAMrywB,KADLqywB,GAAM54vB,OAEkC,GACxD,IAAK22F,IAAWA,GAAQkmX,WAAc,WAExC,MAAO,CAAC5mY,MAAO7oF,EAAG2ppB,IAAKA,GAAKhjiB,KAAM47pB,GAAY3vT,EAAI/4G,IAAI5gW,QAAQ25c,EAAIzjb,MAAMnvC,EAAI,IAAM4yd,MAItF8tT,GAAOhvwB,UAAU2K,MAAQ,SAAgBu2c,GACvC,IAAIv2c,EAAQhrB,KAAKixxB,eAAe1vT,GAChC,IAAKv2c,EAAS,OAAO,KAErB,KAAOhrB,KAAKw3F,MAAQxsE,EAAMwsE,OAASx3F,KAAK2wxB,oBACpC3lwB,EAAMstoB,IAAIl6L,aAAcp+d,KAAKy5wB,OAASiW,GAAc1vxB,KAAKy5wB,OAAQzuvB,EAAMwsE,MAAOxsE,EAAMstoB,MACxF/2L,EAAMv2c,EAAMsqG,KACZ,QAAS9pH,EAAIwf,EAAMwsE,MAAQ,EAAGhsF,GAAK+1d,EAAI/pY,MAAOhsF,IAAK,CACjD,IAAI4Z,EAAOm8c,EAAIn8c,KAAK5Z,GAAIg9C,GAAMpjC,EAAKtd,KAAKg2wB,aAAaoC,WAAW96vB,EAAKxG,SAAS,EAAM2id,EAAI39c,MAAMpY,IAC9FxL,KAAK4wxB,iBAAiBxrwB,EAAKtd,KAAMsd,EAAK4nN,MAAOxkL,IAE/C,OAAO+4a,GAGT8tT,GAAOhvwB,UAAUuwwB,iBAAmB,SAA2B9oxB,EAAMklO,EAAOpuN,GAC1E,IAAIuvG,EAAMnuH,KAAKwvxB,SAASxvxB,KAAKw3F,OAC7B22B,EAAI5sG,MAAQ4sG,EAAI5sG,MAAM88vB,UAAUv2wB,GAChC9H,KAAKy5wB,OAASiW,GAAc1vxB,KAAKy5wB,OAAQz5wB,KAAKw3F,MAAOgrY,OAAc16d,EAAKk6D,OAAOgrK,EAAOpuN,KACtF5e,KAAKwvxB,SAAS/pxB,KAAK,CAACqC,KAAMA,EAAMyZ,MAAOzZ,EAAKg2wB,gBAG9CuR,GAAOhvwB,UAAUswwB,kBAAoB,WACnC,IACInouB,EADOxoD,KAAKwvxB,SAAS18vB,MACVvR,MAAM2+vB,WAAW19S,SAAgB,GAC5Ch6a,EAAI41a,aAAcp+d,KAAKy5wB,OAASiW,GAAc1vxB,KAAKy5wB,OAAQz5wB,KAAKwvxB,SAASzpxB,OAAQyiD,KAGvF3iD,OAAOszwB,iBAAkBkW,GAAOhvwB,UAAW65vB,IA2D3CuR,GAAUprwB,UAAU8wwB,aAAe,SAAS/otB,EAAMqlE,EAAI7+H,GACpD,IAAKA,EAAMogD,KAAQ,OAAOhvD,KAAKoxxB,YAAYhptB,EAAMqlE,GAEjD,IAAI6zV,EAAQthe,KAAKwoX,IAAI5gW,QAAQwgD,GAAOm5Z,EAAMvhe,KAAKwoX,IAAI5gW,QAAQ6lH,GAC3D,GAAI2hpB,GAAc9tT,EAAOC,EAAK3yd,GAC1B,OAAO5O,KAAKwsD,KAAK,IAAIiguB,GAAYrktB,EAAMqlE,EAAI7+H,IAE/C,IAAIyixB,GAAeC,GAAchwT,EAAOthe,KAAKwoX,IAAI5gW,QAAQ6lH,IAEZ,GAAzC4jpB,GAAaA,GAAatrxB,OAAS,IAAWsrxB,GAAav+vB,MAG/D,IAAIy+vB,KAAoBjwT,EAAM9pY,MAAQ,GACtC65rB,GAAa17hB,QAAQ47hB,IAKrB,QAAS/lxB,GAAI81d,EAAM9pY,MAAO3O,GAAMy4Y,EAAMz4Y,IAAM,EAAGr9E,GAAI,EAAGA,KAAKq9E,KAAO,CAChE,IAAI06Y,GAAOjC,EAAMl8c,KAAK5Z,IAAG1D,KAAKy7d,KAC9B,GAAIA,GAAKiuT,UAAYjuT,GAAKxG,UAAa,MACnCs0T,GAAavxwB,QAAQtU,KAAK,EAAM+lxB,GAAkB/lxB,GAC7C81d,EAAMt1a,OAAOxgD,KAAMq9E,IAAOwosB,GAAavtwB,OAAO,EAAG,GAAItY,IAOhE,QAHIimxB,GAAuBJ,GAAavxwB,QAAQyxwB,IAE5CG,GAAY,GAAIC,GAAiB/ixB,EAAMorwB,UAClCp7vB,GAAUhQ,EAAMgQ,QAASjQ,GAAI,GAAIA,KAAK,CAC7C,IAAIyW,GAAOxG,GAAQmzS,WAEnB,GADA2/d,GAAUjsxB,KAAK2f,IACXzW,IAAKC,EAAMorwB,UAAa,MAC5Bp7vB,GAAUwG,GAAKxG,QAIb+ywB,GAAiB,GAAKD,GAAUC,GAAiB,GAAG7pxB,KAAKy7d,KAAKiuT,UAC9DlwT,EAAMl8c,KAAKqswB,IAAsB3pxB,MAAQ4pxB,GAAUC,GAAiB,GAAG7pxB,KACvE6pxB,IAAkB,EACbA,IAAkB,GAAKD,GAAUC,GAAiB,GAAGltT,aAAeitT,GAAUC,GAAiB,GAAG7pxB,KAAKy7d,KAAKiuT,UAC5GlwT,EAAMl8c,KAAKqswB,IAAsB3pxB,MAAQ4pxB,GAAUC,GAAiB,GAAG7pxB,OAC5E6pxB,IAAkB,GAEtB,QAASnwrB,GAAI5yF,EAAMorwB,UAAWx4qB,IAAK,EAAGA,KAAK,CACzC,IAAIowrB,IAAapwrB,GAAImwrB,GAAiB,IAAM/ixB,EAAMorwB,UAAY,GAC1Dx7rB,GAASkzsB,GAAUE,IACvB,GAAKpzsB,GACL,QAASghsB,GAAM,EAAGA,GAAM6R,GAAatrxB,OAAQy5wB,KAAO,CAGlD,IAAIqS,GAAcR,IAAc7R,GAAMiS,IAAwBJ,GAAatrxB,QAASukZ,IAAS,EACzFunY,GAAc,IAAKvnY,IAAS,EAAOunY,IAAeA,IACtD,IAAIx1a,GAASilH,EAAMl8c,KAAKyswB,GAAc,GAAIjuwB,GAAQ09c,EAAM19c,MAAMiuwB,GAAc,GAC5E,GAAIx1a,GAAO+ha,eAAex6vB,GAAOA,GAAO46D,GAAO12E,KAAM02E,GAAOmvJ,OACxD,OAAO3tO,KAAKurB,QAAQ+1c,EAAMt1a,OAAO6luB,IAAcvnY,GAASi3E,EAAIzjb,MAAM+zuB,IAAepkpB,EAC/D,IAAIi1V,EAAMqtT,GAAcnhxB,EAAMgQ,QAAS,EAAGhQ,EAAMorwB,UAAW4X,IACjDA,GAAWhjxB,EAAMqrwB,WAKrD,QADI6X,GAAa9xxB,KAAKitD,MAAMlnD,OACnB25wB,GAAM2R,GAAatrxB,OAAS,EAAG25wB,IAAO,IAC7C1/wB,KAAKurB,QAAQ68C,EAAMqlE,EAAI7+H,KACnB5O,KAAKitD,MAAMlnD,OAAS+rxB,KAFwBpS,KAAO,CAGvD,IAAIlorB,GAAQ65rB,GAAa3R,IACrBlorB,GAAQ,IACZpvB,EAAOk5Z,EAAMt1a,OAAOwrC,IAAQi2C,EAAK8zV,EAAIzjb,MAAM05C,KAE7C,OAAOx3F,MAwBTyrxB,GAAUprwB,UAAU0xwB,iBAAmB,SAAS3ptB,EAAMqlE,EAAIroH,GACxD,IAAKA,EAAKg3vB,UAAYh0sB,GAAQqlE,GAAMztI,KAAKwoX,IAAI5gW,QAAQwgD,GAAMi0S,OAAOz9V,QAAQowC,KAAM,CAC9E,IAAIypB,EAhwBR,YAAqB+vS,EAAK3/R,EAAKq7R,GAC7B,IAAIu/G,EAAOj7G,EAAI5gW,QAAQihE,GACvB,GAAI46Y,EAAKpnH,OAAO+ha,eAAe36S,EAAK7/c,QAAS6/c,EAAK7/c,QAASsgW,GAAa,OAAOr7R,EAE/E,GAAyB,GAArB46Y,EAAKo3S,aACL,QAASrvwB,EAAIi4d,EAAKjsY,MAAQ,EAAGhsF,GAAK,EAAGA,IAAK,CAC1C,IAAIoY,GAAQ6/c,EAAK7/c,MAAMpY,GACvB,GAAIi4d,EAAKr+c,KAAK5Z,GAAG4ywB,eAAex6vB,GAAOA,GAAOsgW,GAAa,OAAOu/G,EAAKz3a,OAAOxgD,EAAI,GAClF,GAAIoY,GAAQ,EAAK,OAAO,KAE5B,GAAI6/c,EAAKo3S,cAAgBp3S,EAAKpnH,OAAOz9V,QAAQowC,KACzC,QAAS6+tB,GAAMpqT,EAAKjsY,MAAQ,EAAGq2rB,IAAO,EAAGA,KAAO,CAChD,IAAIX,GAAUzpT,EAAKs4S,WAAW8R,IAC9B,GAAIpqT,EAAKr+c,KAAKyowB,IAAKzP,eAAe8O,GAASA,GAAShpa,GAAa,OAAOu/G,EAAK3lb,MAAM+vuB,GAAM,GACzF,GAAIX,GAAUzpT,EAAKr+c,KAAKyowB,IAAKzvT,WAAc,OAAO,MAkvBxC4zT,CAAYhyxB,KAAKwoX,IAAKpgT,EAAMhjD,EAAKtd,MAChC,MAAT2wE,IAAiBrQ,EAAOqlE,EAAKh1D,GAEnC,OAAOz4E,KAAKmxxB,aAAa/otB,EAAMqlE,EAAI,IAAIi1V,EAAMF,OAAcp9c,GAAO,EAAG,KAMvEqmwB,GAAUprwB,UAAU+wwB,YAAc,SAAShptB,EAAMqlE,GAG/C,QAFI6zV,EAAQthe,KAAKwoX,IAAI5gW,QAAQwgD,GAAOm5Z,EAAMvhe,KAAKwoX,IAAI5gW,QAAQ6lH,GACvDwoG,EAAUq7iB,GAAchwT,EAAOC,GAC1B5yd,GAAI,EAAGA,GAAIsnO,EAAQlwO,OAAQ4I,KAAK,CACvC,IAAI6oF,GAAQy+I,EAAQtnO,IAAI2oH,GAAO3oH,IAAKsnO,EAAQlwO,OAAS,EACrD,GAAKuxH,IAAiB,GAAT9/B,IAAe8pY,EAAMl8c,KAAKoyE,IAAO1vF,KAAKg2wB,aAAaI,SAC5D,OAAOl+wB,KAAKmf,OAAOmid,EAAMt0c,MAAMwqE,IAAQ+pY,EAAIj3b,IAAIktD,KACnD,GAAIA,GAAQ,IAAM8/B,IAAQgqW,EAAMl8c,KAAKoyE,GAAQ,GAAG8irB,WAAWh5S,EAAM19c,MAAM4zE,GAAQ,GAAI+pY,EAAIw6S,WAAWvkrB,GAAQ,KACtG,OAAOx3F,KAAKmf,OAAOmid,EAAMt1a,OAAOwrC,IAAQ+pY,EAAIzjb,MAAM05C,KAExD,QAAShsF,GAAI,EAAGA,IAAK81d,EAAM9pY,OAAShsF,IAAK+1d,EAAI/pY,MAAOhsF,KAClD,GAAI48D,EAAOk5Z,EAAMt0c,MAAMxhB,KAAM81d,EAAM9pY,MAAQhsF,IAAKiiI,EAAK6zV,EAAMh3b,IAAI9+B,KAAM+1d,EAAIj3b,IAAI9+B,IAAKiiI,GAAM8zV,EAAI/pY,MAAQhsF,GAChG,OAAOxL,KAAKmf,OAAOmid,EAAMt1a,OAAOxgD,IAAIiiI,GAE1C,OAAOztI,KAAKmf,OAAOipD,EAAMqlE,IC9nD3B,IAAIwkpB,GAAcpsxB,OAAOm8D,OAAO,MAI5B2+Z,GAAY,SAAmBoD,EAASJ,EAAOvC,GAGjDphe,KAAKohe,OAASA,GAAU,CAAC,IAAIC,GAAe0C,EAAQtxb,IAAIkxb,GAAQI,EAAQv1d,IAAIm1d,KAI5E3je,KAAK+je,QAAUA,EAIf/je,KAAK2je,MAAQA,GAGXm0S,GAAqB,CAAE7pwB,OAAQ,CAAE8pwB,cAAc,GAAO36a,KAAM,CAAE26a,cAAc,GAAO3vsB,KAAM,CAAE2vsB,cAAc,GAAOtqoB,GAAI,CAAEsqoB,cAAc,GAAOz2S,MAAO,CAAEy2S,cAAc,GAAOx2S,IAAK,CAAEw2S,cAAc,GAAOt4rB,MAAO,CAAEs4rB,cAAc,IAIhOD,GAAmB7pwB,OAAO4Q,IAAM,WAAc,OAAO7e,KAAK+je,QAAQl7Y,KAIlEivrB,GAAmB16a,KAAKv+U,IAAM,WAAc,OAAO7e,KAAK2je,MAAM96Y,KAI9DivrB,GAAmB1vsB,KAAKvpD,IAAM,WAAc,OAAO7e,KAAKshe,MAAMz4Y,KAI9DivrB,GAAmBrqoB,GAAG5uH,IAAM,WAAc,OAAO7e,KAAKuhe,IAAI14Y,KAI1DivrB,GAAmBx2S,MAAMzid,IAAM,WAC7B,OAAO7e,KAAKohe,OAAO,GAAGE,OAKxBw2S,GAAmBv2S,IAAI1id,IAAM,WAC3B,OAAO7e,KAAKohe,OAAO,GAAGG,KAKxBu2S,GAAmBr4rB,MAAM5gE,IAAM,WAE7B,QADIuid,EAASphe,KAAKohe,OACTzyd,EAAI,EAAGA,EAAIyyd,EAAOr7d,OAAQ4I,IAC/B,GAAIyyd,EAAOzyd,GAAG2yd,MAAMz4Y,KAAOu4Y,EAAOzyd,GAAG4yd,IAAI14Y,IAAO,OAAO,EAC3D,OAAO,GAYT83Y,GAAUtgd,UAAUzB,QAAU,WAC5B,OAAO5e,KAAKshe,MAAMl8c,KAAK,GAAGxW,MAAM5O,KAAKooE,KAAMpoE,KAAKytI,IAAI,IAMtDkzV,GAAUtgd,UAAUkL,QAAU,SAAkBumK,EAAIlzK,QAC/B,IAAZA,IAAqBA,EAAU8jd,SAMtC,QADIwvT,EAAWtzwB,EAAQA,QAAQqld,UAAWkuT,EAAa,KAC9CxjxB,GAAI,EAAGA,GAAIiQ,EAAQq7vB,QAAStrwB,KACnCwjxB,EAAaD,EACbA,EAAWA,EAASjuT,UAItB,QADItB,GAAU7wS,EAAG7kI,MAAMlnD,OAAQq7d,GAASphe,KAAKohe,OACpCo+S,GAAM,EAAGA,GAAMp+S,GAAOr7d,OAAQy5wB,KAAO,CAC5C,IAAI/+pB,GAAM2gX,GAAOo+S,IACXl+S,GAAQ7gX,GAAI6gX,MACZC,GAAM9gX,GAAI8gX,IACVpic,GAAU2yJ,EAAG3yJ,QAAQvwB,MAAM+zd,IACjC7wS,EAAGq/lB,aAAahyvB,GAAQx5B,IAAI27d,GAAMz4Y,KAAM1pD,GAAQx5B,IAAI47d,GAAI14Y,KAAM22rB,GAAM98S,QAAc9jd,GACvE,GAAP4gwB,IACA4S,GAAwBtgmB,EAAI6wS,IAAUuvT,EAAWA,EAAS9V,SAAW+V,GAAcA,EAAW1tT,cAAe,EAAK,KAO1H9D,GAAUtgd,UAAUw8B,YAAc,SAAsBi1I,EAAI1sK,GAE1D,QADIu9c,EAAU7wS,EAAG7kI,MAAMlnD,OAAQq7d,EAASphe,KAAKohe,OACpCzyd,GAAI,EAAGA,GAAIyyd,EAAOr7d,OAAQ4I,KAAK,CACtC,IAAI8xG,GAAM2gX,EAAOzyd,IACX2yd,GAAQ7gX,GAAI6gX,MACZC,GAAM9gX,GAAI8gX,IACVpic,GAAU2yJ,EAAG3yJ,QAAQvwB,MAAM+zd,GAC7Bv6Z,GAAOjpC,GAAQx5B,IAAI27d,GAAMz4Y,KAAM4kD,GAAKtuG,GAAQx5B,IAAI47d,GAAI14Y,KACpDl6E,GACFmjL,EAAGs/lB,YAAYhptB,GAAMqlE,KAErBqkD,EAAGigmB,iBAAiB3ptB,GAAMqlE,GAAIroH,GAC9BgtwB,GAAwBtgmB,EAAI6wS,EAASv9c,EAAKg3vB,UAAW,EAAK,MAiBhEz7S,GAAU0xT,SAAW,SAAmB5uT,EAAMpya,EAAKihuB,GACjD,IAAI5wvB,EAAQ+hc,EAAKpnH,OAAOmga,cAAgB,IAAIz6S,GAAc0B,GACpD8uT,GAAgB9uT,EAAKr+c,KAAK,GAAIq+c,EAAKpnH,OAAQonH,EAAK56Y,IAAK46Y,EAAK7/c,QAASytC,EAAKihuB,GAC9E,GAAI5wvB,EAAS,OAAOA,EAEpB,QAAS81D,GAAQisY,EAAKjsY,MAAQ,EAAGA,IAAS,EAAGA,KAAS,CACpD,IAAIxuB,GAAQ3X,EAAM,EACZkhuB,GAAgB9uT,EAAKr+c,KAAK,GAAIq+c,EAAKr+c,KAAKoyE,IAAQisY,EAAKz3a,OAAOwrC,GAAQ,GAAIisY,EAAK7/c,MAAM4zE,IAAQnmC,EAAKihuB,GAChGC,GAAgB9uT,EAAKr+c,KAAK,GAAIq+c,EAAKr+c,KAAKoyE,IAAQisY,EAAK3lb,MAAM05C,GAAQ,GAAIisY,EAAK7/c,MAAM4zE,IAAS,EAAGnmC,EAAKihuB,GACzG,GAAItptB,GAAS,OAAOA,KAQxB23Z,GAAU6xT,KAAO,SAAe/uT,EAAM2pT,GAClC,YAAc,IAATA,IAAkBA,EAAO,GAEzBptxB,KAAKqyxB,SAAS5uT,EAAM2pT,IAASptxB,KAAKqyxB,SAAS5uT,GAAO2pT,IAAS,IAAIqF,GAAahvT,EAAKr+c,KAAK,KAQ/Fu7c,GAAU+xT,QAAU,SAAkBlqa,GACpC,OAAO+pa,GAAgB/pa,EAAKA,EAAK,EAAG,EAAG,IAAM,IAAIiqa,GAAajqa,IAMhEm4G,GAAUgyT,MAAQ,SAAgBnqa,GAChC,OAAO+pa,GAAgB/pa,EAAKA,EAAKA,EAAI5pW,QAAQowC,KAAMw5T,EAAI41G,YAAY,IAAO,IAAIq0T,GAAajqa,IAM7Fm4G,GAAUo4S,SAAW,SAAmBvwZ,EAAKy4G,GAC3C,IAAKA,IAASA,EAAKn5d,KAAQ,MAAM,IAAIo2d,WAAW,wCAChD,IAAI7sC,EAAM4gW,GAAYhxT,EAAKn5d,MAC3B,IAAKupb,EAAO,MAAM,IAAI6sC,WAAY,qBAAwB+C,EAAKn5d,KAAQ,YACvE,OAAOupb,EAAI0nV,SAASvwZ,EAAKy4G,IAQ3BN,GAAUyrT,OAAS,SAAiBlnxB,EAAI0txB,GACtC,GAAI1txB,KAAM+sxB,GAAe,MAAM,IAAI/zT,WAAW,sCAAwCh5d,GACtF+sxB,UAAY/sxB,GAAM0txB,EAClBA,EAAevywB,UAAU+rwB,OAASlnxB,EAC3B0txB,GAWTjyT,GAAUtgd,UAAUgjd,YAAc,WAChC,OAAOtB,GAAcxrJ,QAAQv2U,KAAK+je,QAAS/je,KAAK2je,OAAON,eAGzDx9d,OAAOszwB,iBAAkBx4S,GAAUtgd,UAAWy3vB,IAM9Cn3S,GAAUtgd,UAAU4zT,SAAU,EAiB9B,IAAIotJ,GAAiB,SAAwBC,EAAOC,GAGlDvhe,KAAKshe,MAAQA,EAGbthe,KAAKuhe,IAAMA,GAOTQ,GAA8B,SAAUpB,GAC1C,WAAuBoD,EAASJ,QACf,IAAVA,IAAmBA,EAAQI,GAEhCpD,EAAU/sc,KAAK5zB,KAAM+je,EAASJ,GAG3BhD,IAAYoB,EAAczhd,UAAYqgd,IAC3CoB,EAAc1hd,UAAYxa,OAAOm8D,OAAQ2+Z,GAAaA,EAAUtgd,YACxCvgB,YAAciie,EAEtC,IAAIm4S,EAAuB,CAAE5sS,QAAS,CAAEyqS,cAAc,IAKtDmC,SAAqB5sS,QAAQzud,IAAM,WAAc,OAAO7e,KAAK+je,QAAQl7Y,KAAO7oF,KAAK2je,MAAM96Y,IAAM7oF,KAAK2je,MAAQ,MAE1G5B,EAAc1hd,UAAU1a,IAAM,SAAc6iX,EAAKrpV,IAC/C,IAAIwkc,GAAQn7G,EAAI5gW,QAAQuX,GAAQx5B,IAAI3F,KAAKo9V,OACzC,IAAKumI,GAAMtnH,OAAOmga,cAAiB,OAAO77S,EAAU6xT,KAAK7uT,IACzD,IAAII,GAAUv7G,EAAI5gW,QAAQuX,GAAQx5B,IAAI3F,KAAKiO,SAC3C,OAAO,IAAI8zd,EAAcgC,GAAQ1nH,OAAOmga,cAAgBz4S,GAAUJ,GAAOA,KAG3E5B,EAAc1hd,UAAUkL,QAAU,SAAkBumK,EAAIlzK,IAItD,QAHiB,IAAZA,KAAqBA,GAAU8jd,SAEpC/B,EAAUtgd,UAAUkL,QAAQqI,KAAK5zB,KAAM8xL,EAAIlzK,IACvCA,IAAW8jd,QAAa,CAC1B,IAAI/0P,GAAQ3tO,KAAKshe,MAAM66S,YAAYn8wB,KAAKuhe,KACpC5zP,IAAS77C,EAAG+gmB,YAAYlljB,MAIhCo0P,EAAc1hd,UAAU+id,GAAK,SAAa/ja,GACxC,OAAOA,aAAiB0ia,GAAiB1ia,EAAMpxD,QAAUjO,KAAKiO,QAAUoxD,EAAM+9R,MAAQp9V,KAAKo9V,MAG7F2kI,EAAc1hd,UAAUgjd,YAAc,WACpC,OAAO,IAAIyvT,GAAa9yxB,KAAKiO,OAAQjO,KAAKo9V,OAG5C2kI,EAAc1hd,UAAU6pR,OAAS,WAC/B,MAAO,CAACpiS,KAAM,OAAQmG,OAAQjO,KAAKiO,OAAQmvV,KAAMp9V,KAAKo9V,OAGxD2kI,EAAcg3S,SAAW,SAAmBvwZ,EAAKy4G,IAC/C,GAA0B,iBAAfA,GAAKhzd,QAA0C,iBAAbgzd,GAAK7jI,KAC9C,MAAM,IAAI8gI,WAAW,4CACzB,OAAO,IAAI6D,EAAcv5G,EAAI5gW,QAAQq5c,GAAKhzd,QAASu6W,EAAI5gW,QAAQq5c,GAAK7jI,QAKtE2kI,EAAc//Z,OAAS,SAAiBwmT,EAAKv6W,GAAQmvV,SACrC,IAATA,KAAkBA,GAAOnvV,IAE9B,IAAI81d,GAAUv7G,EAAI5gW,QAAQ3Z,IAC1B,OAAO,IAAIjO,KAAK+je,GAAS3mI,IAAQnvV,GAAS81d,GAAUv7G,EAAI5gW,QAAQw1U,MAUlE2kI,EAAcxrJ,QAAU,SAAkBwtJ,EAASJ,GAAOypT,IACxD,IAAI2F,GAAOhvT,EAAQl7Y,IAAM86Y,GAAM96Y,IAE/B,KADKuksB,IAAQ2F,MAAQ3F,GAAO2F,IAAQ,EAAI,GAAI,IACvCpvT,GAAMtnH,OAAOmga,cAAe,CAC/B,IAAIxzsB,GAAQ23Z,EAAU0xT,SAAS1uT,GAAOypT,IAAM,IAASzsT,EAAU0xT,SAAS1uT,IAAQypT,IAAM,GACtF,IAAIpktB,GACG,OAAO23Z,EAAU6xT,KAAK7uT,GAAOypT,IADvBzpT,GAAQ36Z,GAAM26Z,MAG7B,OAAKI,EAAQ1nH,OAAOmga,gBACN,GAARuW,KAGFhvT,GAAWpD,EAAU0xT,SAAStuT,GAAUqpT,IAAM,IAASzsT,EAAU0xT,SAAStuT,EAASqpT,IAAM,IAAOrpT,SACnFl7Y,IAAM86Y,GAAM96Y,KAASkqsB,GAAO,KAHzChvT,EAAUJ,IAMP,IAAI5B,EAAcgC,EAASJ,KAGpC99d,OAAOszwB,iBAAkBp3S,EAAc1hd,UAAW65vB,GAE3Cn4S,EA1FyB,CA2FhCpB,IAEFA,GAAUyrT,OAAO,OAAQrqT,IAEzB,IAAI+wT,GAAe,SAAsB7kxB,EAAQmvV,GAC/Cp9V,KAAKiO,OAASA,EACdjO,KAAKo9V,KAAOA,GAEd01b,GAAazywB,UAAU1a,IAAM,SAAcw5B,GACzC,OAAO,IAAI2zvB,GAAa3zvB,EAAQx5B,IAAI3F,KAAKiO,QAASkxB,EAAQx5B,IAAI3F,KAAKo9V,QAErE01b,GAAazywB,UAAUuH,QAAU,SAAkB4gW,GACjD,OAAOu5G,GAAcxrJ,QAAQiyC,EAAI5gW,QAAQ5nB,KAAKiO,QAASu6W,EAAI5gW,QAAQ5nB,KAAKo9V,QAQ1E,IAAI0mI,GAA8B,SAAUnD,GAC1C,WAAuB8C,GACrB,IAAIr+c,EAAOq+c,EAAKR,UACZm4S,EAAO33S,EAAKr+c,KAAK,GAAGwC,QAAQ67c,EAAK56Y,IAAMzjE,EAAK25c,UAChD4B,EAAU/sc,KAAK5zB,KAAMyje,EAAM23S,GAE3Bp7wB,KAAKolB,KAAOA,EAGd,OAAKu7c,IAAYmD,EAAcxjd,UAAYqgd,IAC3CmD,EAAczjd,UAAYxa,OAAOm8D,OAAQ2+Z,GAAaA,EAAUtgd,YACxCvgB,YAAcgke,EAEtCA,EAAczjd,UAAU1a,IAAM,SAAc6iX,EAAKrpV,GAC/C,IAAIshF,GAAMthF,EAAQurvB,UAAU1qxB,KAAKiO,QAC7Bq0H,GAAU7hB,GAAI6hB,QAEdmhW,GAAOj7G,EAAI5gW,QADL64F,GAAI53B,KAEd,OAAIy5C,GAAkBq+V,EAAU6xT,KAAK/uT,IAC9B,IAAIK,EAAcL,KAG3BK,EAAczjd,UAAUzB,QAAU,WAChC,OAAO,IAAI8jd,EAAMF,OAAcxie,KAAKolB,MAAO,EAAG,IAGhD0+c,EAAczjd,UAAU+id,GAAK,SAAa/ja,GACxC,OAAOA,aAAiByka,GAAiBzka,EAAMpxD,QAAUjO,KAAKiO,QAGhE61d,EAAczjd,UAAU6pR,OAAS,WAC/B,MAAO,CAACpiS,KAAM,OAAQmG,OAAQjO,KAAKiO,SAGrC61d,EAAczjd,UAAUgjd,YAAc,WAA0B,OAAO,IAAI2vT,GAAahzxB,KAAKiO,SAE7F61d,EAAci1S,SAAW,SAAmBvwZ,EAAKy4G,GAC/C,GAA0B,iBAAfA,EAAKhzd,OACZ,MAAM,IAAIiwd,WAAW,4CACzB,OAAO,IAAI4F,EAAct7G,EAAI5gW,QAAQq5c,EAAKhzd,UAK5C61d,EAAc9ha,OAAS,SAAiBwmT,EAAKpgT,GAC3C,OAAO,IAAIpoE,KAAKwoX,EAAI5gW,QAAQwgD,KAM9B07Z,EAAck3C,aAAe,SAAuB51f,GAClD,OAAQA,EAAKkyvB,SAAwC,IAA9BlyvB,EAAKtd,KAAKy7d,KAAKlma,YAGjCyma,EAvDyB,CAwDhCnD,IAEFmD,GAAczjd,UAAU4zT,SAAU,EAElC0sJ,GAAUyrT,OAAO,OAAQtoT,IAEzB,IAAIkvT,GAAe,SAAsB/kxB,GACvCjO,KAAKiO,OAASA,GAEhB+kxB,GAAa3ywB,UAAU1a,IAAM,SAAcw5B,GACzC,IAAIshF,EAAMthF,EAAQurvB,UAAU1qxB,KAAKiO,QAE3B46E,EAAM43B,EAAI53B,IAChB,OAFgB43B,EAAI6hB,QAEH,IAAIwwpB,GAAajqsB,EAAKA,GAAO,IAAImqsB,GAAanqsB,IAEjEmqsB,GAAa3ywB,UAAUuH,QAAU,SAAkB4gW,GACjD,IAAIi7G,EAAOj7G,EAAI5gW,QAAQ5nB,KAAKiO,QAASmX,EAAOq+c,EAAKR,UACjD,OAAI79c,GAAQ0+c,GAAck3C,aAAa51f,GAAgB,IAAI0+c,GAAcL,GAClE9C,GAAU6xT,KAAK/uT,IAOxB,IAAIgvT,GAA6B,SAAU9xT,GACzC,WAAsBn4G,GACpBm4G,EAAU/sc,KAAK5zB,KAAMwoX,EAAI5gW,QAAQ,GAAI4gW,EAAI5gW,QAAQ4gW,EAAI5pW,QAAQowC,OAG/D,OAAK2xa,IAAY8xT,EAAanywB,UAAYqgd,IAC1C8xT,EAAapywB,UAAYxa,OAAOm8D,OAAQ2+Z,GAAaA,EAAUtgd,YACxCvgB,YAAc2yxB,EAErCA,EAAapywB,UAAUkL,QAAU,SAAkBumK,EAAIlzK,GAGrD,QAFiB,IAAZA,IAAqBA,EAAU8jd,SAEhC9jd,GAAW8jd,QAAa,CAC1B5wS,EAAG3yK,OAAO,EAAG2yK,EAAG02L,IAAI5pW,QAAQowC,MAC5B,IAAI4za,GAAMjC,EAAU+xT,QAAQ5gmB,EAAG02L,KAC1Bo6G,GAAIQ,GAAGtxS,EAAGhyH,YAAcgyH,EAAG+wS,aAAaD,SAE7CjC,EAAUtgd,UAAUkL,QAAQqI,KAAK5zB,KAAM8xL,EAAIlzK,IAI/C6zwB,EAAapywB,UAAU6pR,OAAS,WAAqB,MAAO,CAACpiS,KAAM,QAEnE2qxB,EAAa1Z,SAAW,SAAmBvwZ,GAAO,OAAO,IAAIiqa,EAAajqa,IAE1Eiqa,EAAapywB,UAAU1a,IAAM,SAAc6iX,GAAO,OAAO,IAAIiqa,EAAajqa,IAE1Eiqa,EAAapywB,UAAU+id,GAAK,SAAa/ja,GAAS,OAAOA,aAAiBoztB,GAE1EA,EAAapywB,UAAUgjd,YAAc,WAA0B,OAAO4vT,IAE/DR,EA/BwB,CAgC/B9xT,IAEFA,GAAUyrT,OAAO,MAAOqG,IAExB,IAAIQ,GAAc,CAChBttxB,IAAK,WAAiB,OAAO3F,MAC7B4nB,QAAS,SAAiB4gW,GAAO,OAAO,IAAIiqa,GAAajqa,KAQ3D,YAAyBA,EAAKpjW,EAAMyjE,EAAKjlE,EAAOytC,EAAKvmD,IACnD,GAAIsa,EAAKo3vB,cAAiB,OAAOz6S,GAAc//Z,OAAOwmT,EAAK3/R,GAC3D,QAASl6E,GAAIiV,GAASytC,EAAM,EAAI,EAAI,GAAIA,EAAM,EAAI1iD,GAAIyW,EAAKg5c,WAAazvd,IAAK,EAAGA,IAAK0iD,EAAK,CACxF,IAAIoN,GAAQr5C,EAAKq5C,MAAM9vD,IACvB,GAAK8vD,GAAM0+sB,QAGJ,IAAKrywB,IAAQg5d,GAAck3C,aAAav8c,IAC7C,OAAOqla,GAAc9ha,OAAOwmT,EAAK3/R,GAAOx3B,EAAM,EAAIoN,GAAMsga,SAAW,QAJlD,CACjB,IAAIr9b,GAAQ6wvB,GAAgB/pa,EAAK/pT,GAAOoqB,EAAMx3B,EAAKA,EAAM,EAAIoN,GAAM2/Z,WAAa,EAAG/sa,EAAKvmD,IACxF,GAAI42B,GAAS,OAAOA,GAItBmnD,GAAOpqB,GAAMsga,SAAW1ta,GAI5B,YAAiCygI,EAAIohmB,EAAU9F,GAC7C,IAAI91pB,EAAOw6D,EAAG7kI,MAAMlnD,OAAS,EAC7B,KAAIuxH,EAAO47pB,GACX,KAEiC5ovB,GAF7BkiB,EAAOslI,EAAG7kI,MAAMqqE,IACd9qE,aAAgBiguB,IAAejguB,aAAgBoguB,MAC3C96lB,EAAG3yJ,QAAQmsQ,KAAKh0K,GACtB1wH,QAAQ,SAAUumI,GAAOC,GAAK+lpB,GAAUC,IAAoB,MAAP9ovB,KAAeA,GAAM8ovB,MAC9EthmB,EAAG+wS,aAAalC,GAAU6xT,KAAK1gmB,EAAG02L,IAAI5gW,QAAQ0iB,IAAM8ivB,MAGtD,IAmBIiG,GAA4B,SAAU5H,GACxC,WAAqBvhxB,GACnBuhxB,EAAU73vB,KAAK5zB,KAAMkK,EAAMs+W,KAI3BxoX,KAAK2rJ,KAAO5yI,KAAKC,MACjBhZ,KAAKszxB,aAAeppxB,EAAM41D,UAE1B9/D,KAAKuzxB,gBAAkB,EAGvBvzxB,KAAKwzxB,YAActpxB,EAAMspxB,YAGzBxzxB,KAAK0/Z,QAAU,EAEf1/Z,KAAK4X,KAAO/R,OAAOm8D,OAAO,MAGvByptB,IAAY4H,EAAY/ywB,UAAYmrwB,IACzC4H,EAAYhzwB,UAAYxa,OAAOm8D,OAAQyptB,GAAaA,EAAUprwB,YACxCvgB,YAAcuzxB,EAEpC,IAAIvb,EAAqB,CAAEh4sB,UAAW,CAAEi4sB,cAAc,GAAO0b,aAAc,CAAE1b,cAAc,GAAO2b,eAAgB,CAAE3b,cAAc,GAAO4b,UAAW,CAAE5b,cAAc,GAAO6b,iBAAkB,CAAE7b,cAAc,IAO7MD,SAAmBh4sB,UAAUjhD,IAAM,WACjC,OAAI7e,KAAKuzxB,gBAAkBvzxB,KAAKitD,MAAMlnD,SACpC/F,KAAKszxB,aAAetzxB,KAAKszxB,aAAa3txB,IAAI3F,KAAKwoX,IAAKxoX,KAAKm/B,QAAQvwB,MAAM5O,KAAKuzxB,kBAC5EvzxB,KAAKuzxB,gBAAkBvzxB,KAAKitD,MAAMlnD,QAE7B/F,KAAKszxB,cAMdD,EAAYhzwB,UAAUwid,aAAe,SAAuB/ia,GAC1D,GAAIA,EAAUwha,MAAM94G,KAAOxoX,KAAKwoX,IAC5B,MAAM,IAAI01G,WAAW,uEACzB,YAAKo1T,aAAexztB,EACpB9/D,KAAKuzxB,gBAAkBvzxB,KAAKitD,MAAMlnD,OAClC/F,KAAK0/Z,SAAyC,GAlEhC,EAkEE1/Z,KAAK0/Z,SACrB1/Z,KAAKwzxB,YAAc,KACZxzxB,MAKT83wB,EAAmB2b,aAAa50wB,IAAM,WACpC,OA1Ec,EA0EN7e,KAAK0/Z,SAAyB,GAKxC2zX,EAAYhzwB,UAAUwzwB,eAAiB,SAAyBlmjB,GAC9D,YAAK6ljB,YAAc7ljB,EACnB3tO,KAAK0/Z,SAjF4B,EAkF1B1/Z,MAOTqzxB,EAAYhzwB,UAAUwywB,YAAc,SAAsBlljB,GACxD,OAAK2riB,UAAat5wB,KAAKwzxB,aAAexzxB,KAAK8/D,UAAUwha,MAAM3zP,QAASA,IAChE3tO,KAAK6zxB,eAAelmjB,GACjB3tO,MAKTqzxB,EAAYhzwB,UAAUyzwB,cAAgB,SAAwBvrT,GAC5D,OAAOvoe,KAAK6yxB,YAAYtqT,EAAKixS,SAASx5wB,KAAKwzxB,aAAexzxB,KAAK8/D,UAAU6ja,MAAMh2P,WAKjF0ljB,EAAYhzwB,UAAU0zwB,iBAAmB,SAA2BxrT,GAClE,OAAOvoe,KAAK6yxB,YAAYtqT,EAAKqxS,cAAc55wB,KAAKwzxB,aAAexzxB,KAAK8/D,UAAU6ja,MAAMh2P,WAKtFmqiB,EAAmB4b,eAAe70wB,IAAM,WACtC,OA9GiC,EA8GzB7e,KAAK0/Z,SAA2B,GAG1C2zX,EAAYhzwB,UAAU2qjB,QAAU,SAAkBx+gB,EAAMg8T,IACtDija,EAAUprwB,UAAU2qjB,QAAQp3iB,KAAK5zB,KAAMwsD,EAAMg8T,IAC7CxoX,KAAK0/Z,SAAyB,EAAf1/Z,KAAK0/Z,QACpB1/Z,KAAKwzxB,YAAc,MAKrBH,EAAYhzwB,UAAU+9Y,QAAU,SAAkBzyQ,GAChD,YAAKA,KAAOA,EACL3rJ,MAKTqzxB,EAAYhzwB,UAAU2zwB,iBAAmB,SAA2BplxB,GAClE,YAAKkxD,UAAUv0C,QAAQvrB,KAAM4O,GACtB5O,MAOTqzxB,EAAYhzwB,UAAU4zwB,qBAAuB,SAA+B7uwB,EAAM8uwB,IAChF,IAAIp0tB,GAAY9/D,KAAK8/D,UACrB,OAAqB,IAAjBo0tB,KACA9uwB,EAAOA,EAAKmjd,KAAKvoe,KAAKwzxB,cAAgB1ztB,GAAU2f,MAAQ3f,GAAUwha,MAAM3zP,QAAW7tK,GAAUwha,MAAM66S,YAAYr8sB,GAAUyha,MAAQ+3S,UACrIx5sB,GAAUjjB,YAAY78C,KAAMolB,GACrBplB,MAKTqzxB,EAAYhzwB,UAAU8zwB,gBAAkB,WACtC,YAAKr0tB,UAAUv0C,QAAQvrB,MAChBA,MAMTqzxB,EAAYhzwB,UAAUqod,WAAa,SAAqB59d,EAAMs9D,GAAMqlE,SACtD,IAAPA,KAAgBA,GAAKrlE,IAE1B,IAAI0kK,GAAS9sO,KAAKwoX,IAAI1gX,KAAKglO,OAC3B,GAAY,MAAR1kK,GACF,OAAKt9D,EACE9K,KAAKi0xB,qBAAqBnnjB,GAAOhiO,KAAKA,IAAO,GADhC9K,KAAKm0xB,kBAGzB,IAAKrpxB,EAAQ,OAAO9K,KAAKoxxB,YAAYhptB,GAAMqlE,IAC3C,IAAIkgG,GAAQ3tO,KAAKwzxB,YACjB,IAAK7ljB,GAAO,CACV,IAAI2zP,GAAQthe,KAAKwoX,IAAI5gW,QAAQwgD,IAC7BulK,GAAQlgG,IAAMrlE,GAAOk5Z,GAAM3zP,QAAU2zP,GAAM66S,YAAYn8wB,KAAKwoX,IAAI5gW,QAAQ6lH,KAE1E,YAAKskpB,iBAAiB3ptB,GAAMqlE,GAAIq/F,GAAOhiO,KAAKA,EAAM6iO,KAC7C3tO,KAAK8/D,UAAU2f,OAASz/E,KAAK6ie,aAAalC,GAAU6xT,KAAKxyxB,KAAK8/D,UAAUyha,MACtEvhe,MAOXqzxB,EAAYhzwB,UAAU+zwB,QAAU,SAAkBvhxB,EAAKlP,IACrD,YAAKiU,KAAmB,iBAAP/E,EAAkBA,EAAMA,EAAIA,KAAOlP,GAC7C3D,MAKTqzxB,EAAYhzwB,UAAUg0wB,QAAU,SAAkBxhxB,GAChD,OAAO7S,KAAK4X,KAAmB,iBAAP/E,EAAkBA,EAAMA,EAAIA,MAMtDilwB,EAAmB6b,UAAU90wB,IAAM,WACjC,QAAS3T,KAAKlL,KAAK4X,KAAQ,OAAO,EAClC,OAAO,GAMTy7wB,EAAYhzwB,UAAUsnd,eAAiB,WACrC,YAAKjoE,SAzMgD,EA0M9C1/Z,MAGT83wB,EAAmB8b,iBAAiB/0wB,IAAM,WACxC,OA9MqD,EA8M7C7e,KAAK0/Z,SAA4B,GAG3C75Z,OAAOszwB,iBAAkBka,EAAYhzwB,UAAWy3vB,GAEzCub,EAhMuB,CAiM9B5H,IAEF,YAAc7lxB,EAAGic,GACf,OAAQA,GAASjc,EAAQA,EAAEigB,KAAKhE,GAAXjc,EAGvB,IAAI0uxB,GAAY,SAAmBtvxB,EAAM0jjB,EAAM7miB,GAC7C7hB,KAAKgF,KAAOA,EACZhF,KAAKgyD,KAAOnsC,GAAK6iiB,EAAK12f,KAAMnwC,GAC5B7hB,KAAK2zB,MAAQ9N,GAAK6iiB,EAAK/0hB,MAAO9R,IAG5B0ywB,GAAa,CACf,IAAID,GAAU,MAAO,CACnBtiuB,KAAM,SAAcv/C,GAAU,OAAOA,EAAO+1W,KAAO/1W,EAAOq6N,OAAO+1iB,YAAYvgT,iBAC7E3uc,MAAO,SAAem+J,GAAM,OAAOA,EAAG02L,OAGxC,IAAI8ra,GAAU,YAAa,CACzBtiuB,KAAM,SAAcv/C,EAAQ2O,GAAY,OAAO3O,EAAOqtD,WAAa6ga,GAAU+xT,QAAQtxwB,EAASonW,MAC9F70V,MAAO,SAAem+J,GAAM,OAAOA,EAAGhyH,aAGxC,IAAIw0tB,GAAU,cAAe,CAC3BtiuB,KAAM,SAAcv/C,GAAU,OAAOA,EAAO+gxB,aAAe,MAC3D7/vB,MAAO,SAAem+J,EAAI0imB,EAAQC,EAAMvqxB,GAAS,OAAOA,EAAM41D,UAAUwta,QAAUx7S,EAAG0hmB,YAAc,QAGrG,IAAIc,GAAU,oBAAqB,CACjCtiuB,KAAM,WAAkB,OAAO,GAC/Br+B,MAAO,SAAem+J,EAAIm3D,GAAQ,OAAOn3D,EAAG8hmB,iBAAmB3qiB,EAAO,EAAIA,MAM1EyriB,GAAgB,SAAuB5njB,EAAQ2iQ,GACjD,IAAIwzS,EAASjjxB,KAEbA,KAAK8sO,OAASA,EACd9sO,KAAKkjH,OAASqxqB,GAAW5gvB,SACzB3zC,KAAKyve,QAAU,GACfzve,KAAK20xB,aAAe9uxB,OAAOm8D,OAAO,MAC9Byta,GAAWA,EAAQ7oe,QAAQ,SAAUguxB,GACvC,GAAI3R,EAAO0R,aAAaC,EAAO/hxB,KAC3B,MAAM,IAAIqrd,WAAW,iDAAmD02T,EAAO/hxB,IAAM,KACzFowwB,EAAOxzS,QAAQhqe,KAAKmvxB,GACpB3R,EAAO0R,aAAaC,EAAO/hxB,KAAO+hxB,EAC9BA,EAAOrxT,KAAKr5d,OACZ+4wB,EAAO//pB,OAAOz9G,KAAK,IAAI6uxB,GAAUM,EAAO/hxB,IAAK+hxB,EAAOrxT,KAAKr5d,MAAO0qxB,OAWpEniT,GAAc,SAAqBhge,GACrCzS,KAAKyS,OAASA,GAGZynwB,GAAuB,CAAEptiB,OAAQ,CAAEiriB,cAAc,GAAOtoS,QAAS,CAAEsoS,cAAc,GAAOjmlB,GAAI,CAAEimlB,cAAc,IAchHmC,GAAqBptiB,OAAOjuN,IAAM,WAChC,OAAO7e,KAAKyS,OAAOq6N,QAKrBotiB,GAAqBzqS,QAAQ5wd,IAAM,WACjC,OAAO7e,KAAKyS,OAAOg9d,SAKrBgD,GAAYpyd,UAAUsT,MAAQ,SAAgBm+J,GAC5C,OAAO9xL,KAAK60xB,iBAAiB/imB,GAAI5nL,OAInCuoe,GAAYpyd,UAAU6xd,kBAAoB,SAA4BpgT,EAAIo4X,QACtD,IAAXA,IAAoBA,GAAS,GAEpC,QAASv7iB,EAAI,EAAGA,EAAI3O,KAAKyS,OAAOg9d,QAAQ1pe,OAAQ4I,IAAO,GAAIA,GAAKu7iB,EAAQ,CACtE,IAAI0qO,EAAS50xB,KAAKyS,OAAOg9d,QAAQ9ge,GACjC,GAAIimxB,EAAOrxT,KAAK2O,oBAAsB0iT,EAAOrxT,KAAK2O,kBAAkBt+c,KAAKghwB,EAAQ9imB,EAAI9xL,MACjF,OAAO,EAEb,OAAO,GASTyye,GAAYpyd,UAAUw0wB,iBAAmB,SAA2BC,GAClE,IAAK90xB,KAAKkye,kBAAkB4iT,GAAW,MAAO,CAAC5qxB,MAAOlK,KAAM+0xB,aAAc,IAMzE,QAJGC,EAAM,CAACF,GAASG,EAAWj1xB,KAAKk1xB,WAAWJ,GAAS11T,EAAO,OAIrD,CAER,QADI+1T,IAAU,EACLxmxB,GAAI,EAAGA,GAAI3O,KAAKyS,OAAOg9d,QAAQ1pe,OAAQ4I,KAAK,CACnD,IAAIimxB,GAAS50xB,KAAKyS,OAAOg9d,QAAQ9ge,IACjC,GAAIimxB,GAAOrxT,KAAK6xT,kBAAmB,CACjC,IAAItnxB,GAAIsxd,EAAOA,EAAKzwd,IAAGb,EAAI,EAAGunxB,GAAWj2T,EAAOA,EAAKzwd,IAAGzE,MAAQlK,KAC5D8xL,GAAKhkL,GAAIknxB,EAAIjvxB,QACb6uxB,GAAOrxT,KAAK6xT,kBAAkBxhwB,KAAKghwB,GAAQ9mxB,GAAIknxB,EAAIpmxB,MAAMd,IAAKknxB,EAAKK,GAAUJ,GACjF,GAAInjmB,IAAMmjmB,EAAS/iT,kBAAkBpgT,GAAInjL,IAAI,CAE3C,GADAmjL,GAAGsimB,QAAQ,sBAAuBU,IAC7B11T,EAAM,CACTA,EAAO,GACP,QAAS59X,GAAI,EAAGA,GAAIxhG,KAAKyS,OAAOg9d,QAAQ1pe,OAAQy7F,KAC5C49X,EAAK35d,KAAK+7F,GAAI7yF,GAAI,CAACzE,MAAO+qxB,EAAUnnxB,EAAGknxB,EAAIjvxB,QAAU,CAACmE,MAAOlK,KAAM8N,EAAG,IAE5EknxB,EAAIvvxB,KAAKqsL,IACTmjmB,EAAWA,EAASC,WAAWpjmB,IAC/BqjmB,IAAU,EAER/1T,IAAQA,EAAKzwd,IAAK,CAACzE,MAAO+qxB,EAAUnnxB,EAAGknxB,EAAIjvxB,UAGnD,IAAKovxB,GAAW,MAAO,CAACjrxB,MAAO+qxB,EAAUF,aAAcC,KAK3DviT,GAAYpyd,UAAU60wB,WAAa,SAAqBpjmB,GACtD,IAAKA,EAAG9lI,OAAOo3a,GAAGpje,KAAKwoX,KAAQ,MAAM,IAAI01G,WAAW,qCAEpD,QADIo3T,EAAc,IAAI7iT,GAAYzye,KAAKyS,QAASywG,EAASljH,KAAKyS,OAAOywG,OAC5Dv0G,EAAI,EAAGA,EAAIu0G,EAAOn9G,OAAQ4I,IAAK,CACtC,IAAIk8C,GAAQq4D,EAAOv0G,GACnB2mxB,EAAYzquB,GAAM7lD,MAAQ6lD,GAAMl3B,MAAMm+J,EAAI9xL,KAAK6qD,GAAM7lD,MAAOhF,KAAMs1xB,GAEpE,QAAS9V,GAAM,EAAGA,GAAM+V,GAAexvxB,OAAQy5wB,KAAS+V,GAAe/V,IAAKx/wB,KAAM8xL,EAAIwjmB,GACtF,OAAOA,GAKTpb,GAAqBpolB,GAAGjzK,IAAM,WAAc,OAAO,IAAIw0wB,GAAYrzxB,OAqBnEyye,GAAYzwa,OAAS,SAAiBvvD,GAGpC,QAFI+ixB,EAAU,IAAId,GAAcjixB,EAAO+1W,IAAM/1W,EAAO+1W,IAAI1gX,KAAKglO,OAASr6N,EAAOq6N,OAAQr6N,EAAOg9d,SACxFrud,EAAW,IAAIqxd,GAAY+iT,GACtB7mxB,EAAI,EAAGA,EAAI6mxB,EAAQtyqB,OAAOn9G,OAAQ4I,IACvCyS,EAASo0wB,EAAQtyqB,OAAOv0G,GAAG3J,MAAQwwxB,EAAQtyqB,OAAOv0G,GAAGqjD,KAAKv/C,EAAQ2O,GACtE,OAAOA,GAeTqxd,GAAYpyd,UAAUw4kB,YAAc,SAAsBpmlB,GAGxD,QAFI+ixB,EAAU,IAAId,GAAc10xB,KAAK8sO,OAAQr6N,EAAOg9d,SAChDvsX,EAASsyqB,EAAQtyqB,OAAQ9hG,EAAW,IAAIqxd,GAAY+iT,GAC/C7mxB,GAAI,EAAGA,GAAIu0G,EAAOn9G,OAAQ4I,KAAK,CACtC,IAAI3J,GAAOk+G,EAAOv0G,IAAG3J,KACrBoc,EAASpc,IAAQhF,KAAKqsC,eAAernC,IAAQhF,KAAKgF,IAAQk+G,EAAOv0G,IAAGqjD,KAAKv/C,EAAQ2O,GAEnF,OAAOA,GASTqxd,GAAYpyd,UAAU6pR,OAAS,SAAiBurf,GAC9C,IAAIljxB,EAAS,CAACi2W,IAAKxoX,KAAKwoX,IAAIt+E,SAAUpqO,UAAW9/D,KAAK8/D,UAAUoqO,UAEhE,GADIlqS,KAAKwzxB,cAAejhxB,EAAOihxB,YAAcxzxB,KAAKwzxB,YAAY7txB,IAAI,SAAUk3B,IAAK,OAAOA,GAAEqtQ,YACtFurf,GAAuC,iBAAhBA,EAA4B,QAAS/luB,KAAQ+luB,EAAc,CACpF,GAAY,OAAR/luB,GAAyB,aAARA,EACjB,MAAM,IAAIwua,WAAW,sDACzB,IAAI02T,EAASa,EAAa/luB,GAAOxlD,GAAQ0qxB,EAAOrxT,KAAKr5d,MACjDA,IAASA,GAAMggS,SAAU33R,EAAOm9C,GAAQxlD,GAAMggS,OAAOt2Q,KAAKghwB,EAAQ50xB,KAAK40xB,EAAO/hxB,OAEpF,OAAON,GAiBTkge,GAAYsmS,SAAW,SAAmBtmwB,EAAQwud,EAAMw0T,GACtD,IAAKx0T,EAAQ,MAAM,IAAI/C,WAAW,0CAClC,IAAKzrd,EAAOq6N,OAAU,MAAM,IAAIoxP,WAAW,0CAC3C,IAAIs3T,EAAU,IAAId,GAAcjixB,EAAOq6N,OAAQr6N,EAAOg9d,SAClDrud,GAAW,IAAIqxd,GAAY+iT,GAC/BA,SAAQtyqB,OAAOt8G,QAAQ,SAAUikD,IAC/B,GAAkB,OAAdA,GAAM7lD,KACRoc,GAASonW,IAAM34O,YAAcp9H,EAAOq6N,OAAQm0P,EAAKz4G,aAC1B,aAAd39T,GAAM7lD,KACfoc,GAAS0+C,UAAY6ga,GAAUo4S,SAAS33vB,GAASonW,IAAKy4G,EAAKnha,mBACpC,eAAdjV,GAAM7lD,KACXi8d,EAAKuyT,cAAepywB,GAASoywB,YAAcvyT,EAAKuyT,YAAY7txB,IAAI8M,EAAOq6N,OAAOyxiB,mBAC7E,CACL,GAAIkX,EAAgB,QAAS/luB,MAAQ+luB,EAAc,CACjD,IAAIb,GAASa,EAAa/luB,IAAOxlD,GAAQ0qxB,GAAOrxT,KAAKr5d,MACrD,GAAI0qxB,GAAO/hxB,KAAOg4C,GAAM7lD,MAAQkF,IAASA,GAAM6uwB,UAC3ClzwB,OAAOwa,UAAUgsB,eAAezY,KAAKqtc,EAAMvxa,IAG7C,YADAtuC,GAASypC,GAAM7lD,MAAQkF,GAAM6uwB,SAASnlvB,KAAKghwB,GAAQnixB,EAAQwud,EAAKvxa,IAAOtuC,KAI3EA,GAASypC,GAAM7lD,MAAQ6lD,GAAMmH,KAAKv/C,EAAQ2O,OAGvCA,IASTqxd,GAAYijT,iBAAmB,SAA2B9vxB,GACxD2vxB,GAAe9vxB,KAAKG,IAEtB6se,GAAYkjT,oBAAsB,SAA8B/vxB,GAC9D,IAAIojE,EAAQustB,GAAez1wB,QAAQla,GAC/BojE,GAAQ,GAAMustB,GAAezxwB,OAAOklD,EAAO,IAGjDnjE,OAAOszwB,iBAAkB1mS,GAAYpyd,UAAW65vB,IAEhD,IAAIqb,GAAiB,GAoDrB,YAAmB71tB,EAAK79C,EAAMnZ,GAC5B,QAASgnD,KAAQgQ,EAAK,CACpB,IAAIp+C,EAAMo+C,EAAIhQ,GACVpuC,aAAewrC,SAAYxrC,EAAMA,EAAIuE,KAAKhE,GAC7B,mBAAR6tC,IAA6BpuC,EAAMs0wB,GAAUt0wB,EAAKO,EAAM,KACjEnZ,EAAOgnD,GAAQpuC,EAEjB,OAAO5Y,EAMT,IAAI2lO,GAAS,SAAgBk1P,GAG3Bvje,KAAKojJ,MAAQ,GACTmgV,EAAKngV,OAASwyoB,GAAUryT,EAAKngV,MAAOpjJ,KAAMA,KAAKojJ,OAGnDpjJ,KAAKuje,KAAOA,EACZvje,KAAK6S,IAAM0wd,EAAK1wd,IAAM0wd,EAAK1wd,IAAIA,IAAMgjxB,GAAU,WAKjDxnjB,GAAOhuN,UAAUk/I,SAAW,SAAmBr1J,GAAS,OAAOA,EAAMlK,KAAK6S,MA4B1E,IAAIrP,GAAOqC,OAAOm8D,OAAO,MAEzB,YAAmBh9D,GACjB,OAAIA,KAAQxB,GAAewB,EAAO,OAAQxB,GAAKwB,IAC/CxB,GAAKwB,GAAQ,EACNA,EAAO,KAOhB,IAAImse,GAAY,SAAmBnse,QACrB,IAATA,IAAkBA,EAAO,OAC7BhF,KAAK6S,IAAMgjxB,GAAU7wxB,IAKtBmse,GAAU9wd,UAAUxB,IAAM,SAAc3U,GAAS,OAAOA,EAAMuI,OAAOkixB,aAAa30xB,KAAK6S,MAIvFs+d,GAAU9wd,UAAUk/I,SAAW,SAAmBr1J,GAAS,OAAOA,EAAMlK,KAAK6S,MCxmC7E,MAwEao+d,GAAe,CAACryd,EAASkuN,EAAQ29P,KAC1C,MAAMp9P,EA9CqBrvH,KAC3B,MAAM9rD,EAAWvwC,SAAS+O,cAAc,YACxC,IAAI+xc,EACJ,GAAI,YAAavwa,EACbA,EAAS7U,UAAY2gE,EACrBykX,EAAWvwa,EAAStzC,YAEnB,CAED,MAAMk3wB,GAAiB,IAAIrhB,WAAYG,gBAAgB52pB,EAAM,aAC7DykX,EAAW9gd,SAASqnwB,yBACpB,MAAM37iB,EAAMyojB,EAAenvwB,KAC3B,KAAO0mN,GAAOA,EAAI0kF,YACd0wK,EAAS5nb,YAAYwyL,EAAI0kF,YAGjC,OAAO0wK,GA8BKszT,CAAen3wB,GAC3B,MAbsB,EAACyuN,EAAKP,EAAQ29P,IAC7BurT,cAAgClpjB,GAAQx+M,MAAM++M,EAAKo9P,GAYnDwrT,CAAW5ojB,EAAKP,EAAQ29P,IAQtBxnK,GAAW/4T,IACpB,MAAMu4d,EAjCsBj6G,IACrBsga,cAAyBtga,EAAI1gX,KAAKglO,QAAQi8iB,kBAAkBvga,EAAI5pW,SAgCtDs3wB,CAAgBhsxB,EAAMs+W,KACjC/qN,EAAY97I,SAAS+O,cAAc,OACzC+sI,SAAU5iH,YAAY4nb,GACfhlU,EAAUpgH,WAURqtb,GAAU,CAAC9rd,EAASglV,EAAU,UAAW6mI,EAAe,CAAEiE,mBAAoB,UAAa,CAACxke,EAAOkkO,IAAaA,EAASlkO,EAAM4nL,GACvI+wS,aAAa,IAAI4vT,GAAavoxB,EAAMs+W,MACpCyra,qBAAqBhjT,GAAaryd,EAAS1U,EAAM4iO,OAAQ29P,IACzD2pT,QAAQ,cAAexwb,IClGfuyb,GAAqB,CAACC,EAAWC,KAC1C,MAAMC,EAAgBD,EAASlsxB,MACzBosxB,EAASF,EAAS1yxB,MAClBs0N,EAAWo+jB,EAASp+jB,SAC1B,IAAKm+jB,EACD,MAAO,CAAE1lqB,SAAS,EAAOvmH,MAAO,MAEpC,MAAMsuH,GAAS29pB,EAAUp/wB,MAAM,WAAWjK,OAAOlG,IAAKmhU,QAAQnhU,KACxD+ylB,GAAWnhe,GAAO1rH,OAAOlG,KAC3B,MAAM2vxB,GAAY3vxB,GAAEmQ,MAAM,WAC1B,QAASw/wB,GAAU,GAAGn7vB,gBAAkBi7vB,GAAiBC,EAAO/6W,KAAKg7W,GAAU,OAEnF,OAAIv+jB,GACA2hY,GAASn0lB,KAAM,GAAE6wxB,MAAkBr+jB,KAEhC,CACH9tN,MAAOyvlB,GAASnykB,KAAK,OAASmykB,GAAS7zlB,OAAS,IAAM,IACtD2qH,QAASs3M,QAAQ/vG,IAAa2hY,GAAS7zlB,SAAW0yH,GAAO1yH,SAgB3D0wxB,GAAe3oxB,GACVA,aAAa+hI,GAAO/hI,EAAEhG,KAAK9C,KAAO8I,EAAE9I,KAgBlC0xxB,GAA0B,CAACxya,EAAU1sR,EAAQ,IAC9C13B,GAfc,EAACstW,EAAW51U,EAAQ,IAClC13B,IACJ,MAAQwha,SAAUxha,EAClB,QAASnxD,EAAI2yd,EAAM9pY,MAAO7oF,EAAI,EAAGA,IAAK,CAClC,MAAMyW,GAAOk8c,EAAMl8c,KAAKzW,GACxB,GAAIy+Z,EAAUhoZ,KAEI,IADdoyE,GAAgB,GAEZ,MAAO,CAAEA,MAAO7oF,EAAGyW,WAQxBuxwB,CAAmBvxwB,GAASqxwB,GAAYrxwB,KAAUqxwB,GAAYvya,GAAW1sR,EAAzEm/rB,CAAgF72tB,GAMlF28S,GAAa,CAACr3V,EAAMuid,IAAmB,CAACz9d,EAAOkkO,KACxD,MAAMt8C,EAAK5nL,EAAM4nL,GAAGmimB,qBAAqB7uwB,GACrCuid,GACA71S,EAAG61S,iBAEPv5P,EAASt8C,IAEAihT,GAAgB,CAAC6jT,EAAMC,EAAM/pjB,EAAQ29P,KAC9C,MAAMqsT,EAAYt0T,OAAcyO,GAAa2lT,EAAM9pjB,EAAQ29P,IACrDssT,GAAYv0T,OAAcyO,GAAa4lT,EAAM/pjB,EAAQ29P,IAC3D,OAAOqsT,EAAU1zT,GAAG2zT,KAEX1pT,GAAoBnje,IAC7B,MAAM04d,EAAM14d,EAAM41D,UAClB,GAAI8ia,aAAeb,IAAiBa,aAAe6vT,GAAc,CAC7D,MAAMhwT,EAAWG,EAAIhkd,UAAUA,QAC/B,OAAO6jd,EAASy1S,YAAY,EAAGz1S,EAASzza,MAE5C,MAAO,IAEE09a,GAAwBxie,IACjC,GAAIA,EAAM41D,qBAAqBgka,GAC3B,OAAO55d,EAAM41D,UAAU16C,MAwCzB4xwB,GAAqB,CAAEhruB,OAAQ,sBAAuBlO,MAAO,uBAKtDsvb,GAAkB,CAAClje,EAAOkkO,EAAUrvN,KAC7C,IAAKA,EAAQkpd,cAAgB/9d,EAAM41D,UAAU2f,MACzC,MAAO,CAAEv1E,QAAOkkO,YAEpB,MAAM6ojB,GAA6C,IAAxBl4wB,EAAQkpd,YAAuB+uT,GAAqBj4wB,EAAQkpd,YACvF,IAAIivT,EAAkB,KACtB,MAAMplmB,GAAK5nL,EAAM4nL,GACXhyH,GAAY51D,EAAM41D,UAClB9T,GAAS8T,GAAU6ja,MAAMK,WACzBlmb,GAAQgiB,GAAU6ja,MAAMV,UAC9B,GAAIj3a,IAA+B,SAArBA,GAAOlkD,KAAK9C,MAAmBgnD,GAAOlhD,MAAQgzC,IAA6B,SAApBA,GAAMh2C,KAAK9C,MAAmB84C,GAAMhzC,KAAM,CAC3G,MAAM0zD,GAAW,GACjBsB,GAAU6ja,MAAMtnH,OAAOq9B,YAAY,CAACt0X,GAAMyjE,MACtCrqB,GAAS/4D,KAAK,CAAE2f,QAAMyjE,UACf,IAEX,IAAIy0T,GAASx9U,GAAU6ja,MAAMk3S,aAC7B,MAAMxyK,GAAY7piB,GAAS1wB,UAAU,EAAG1oB,QAAMyjE,UAAUA,IAAOy0T,IAAUz0T,GAAMzjE,GAAK25c,UAAYzhF,IAChG,IAAIxyY,GAAO0zD,GAAS6piB,IAAWjjlB,KAAKta,KAChCwB,IAAO,EACX,QAASqC,GAAI05lB,GAAY,EAAG15lB,IAAK,EAAGA,KAAK,CACrC,MAAM+F,GAAU8pD,GAAS7vD,KACpBrC,IAAQoI,IAAsC,SAA3BA,GAAQ0Q,KAAKtd,KAAK9C,KACtC8F,GAAO4J,GAAQ0Q,KAAKta,KAAOA,IAG3BwB,IAAO,EACPgxY,IAAU5oY,GAAQ0Q,KAAK25c,UAG/B,QAASpwd,GAAI05lB,GAAY,EAAG15lB,GAAI6vD,GAASz4D,OAAQ4I,KAAK,CAClD,MAAM+F,GAAU8pD,GAAS7vD,IACzB,IAAI+F,IAAsC,SAA3BA,GAAQ0Q,KAAKtd,KAAK9C,KAI7B,MAHA8F,IAAc4J,GAAQ0Q,KAAKta,KAMnC,MAAMqsxB,GAAarsxB,GAAKgpB,UAAU,EAAGwpX,IAC/B85Y,GAAYtsxB,GAAKgpB,UAAUwpX,IAC3B+5Y,GAAcJ,EAAmBjruB,OAAO46S,KAAKuwb,IAC7CpQ,GAAakQ,EAAmBn5uB,MAAM8oT,KAAKwwb,IACjD,GAAIC,IAAetQ,GAAY,CAC3B,MAEMl+rB,GAAMqusB,EAAkBp3tB,GAAUsI,KACxC0pH,UAAG+wS,aAAad,UAAqB73d,EAAMs+W,IAAK3/R,GAH7BwusB,GAAY,GAAGtxxB,OAGgC8iF,GAF9Ck+rB,GAAW,GAAGhhxB,SAc3B,CAAEmE,MAXQ,CACb4nL,MACAhyH,UAAWgyH,GAAGhyH,UACd0oT,IAAK12L,GAAG02L,IACRgra,YAAa,KACb1mjB,OAAQh7C,GAAG02L,IAAI1gX,KAAKglO,QAMEsB,SAJNkpjB,KAChBA,GAAKz0T,aAAad,UAAqBu1T,GAAK9ua,IAAK0ua,IACjD9ojB,EAASkpjB,OAKrB,MAAO,CAAEptxB,QAAOkkO,aAcP85P,GAAmB,CAACtkI,EAAS7kV,IAC/B,CAAC7U,EAAOkkO,EAAU4gQ,KACrB,MAAQ9ke,MAAOqtxB,GAAUnpjB,SAAUopjB,IAAgBpqT,GAAgBlje,EAAOkkO,EAAUrvN,GACpF,OAAO6kV,EAAQ7kV,EAAR6kV,CAAiB2zb,GAAUC,KC7M7BC,GAAc,CAACjva,EAAK44G,EAAQt5d,KACrC,IAAI+3oB,EAAOlxoB,IACP,IAAI8xG,GAAM2gX,EAAOzyd,GACb2yd,GAAQ7gX,GAAI6gX,MACZC,GAAM9gX,GAAI8gX,IACVm2T,GAAsB,IAAhBp2T,GAAM9pY,OAAcgxR,EAAI1gX,KAAKi6wB,eAAej6wB,GAOtD,GANA0gX,EAAIwvZ,aAAa12S,GAAMz4Y,IAAK04Y,GAAI14Y,IAAKzjE,KACjC,GAAIsywB,GACA,OAAO,EAEXA,GAAMtywB,GAAKo3vB,eAAiBp3vB,GAAKtd,KAAKi6wB,eAAej6wB,KAErD4vxB,GACA,MAAO,CAAElxxB,GAAG,IAGpB,QAASmI,EAAI,EAAGA,EAAIyyd,EAAOr7d,OAAQ4I,IAAK,CACpC,IAAIu3wB,GAAWrmI,EAAKlxoB,GACpB,GAAIu3wB,GACA,OAAOA,GAAS1/wB,EAGxB,OAAO,GAEEmxxB,GAAa,CAAC3V,EAAUh1iB,EAAOl7C,IAAO,CAAC5nL,EAAOkkO,KACvD,IAAM3uJ,SAAO6tZ,WAASlM,WAAWl3d,EAAM41D,UACvC,GAAK2f,KAAU6tZ,KAAamqT,GAAYvtxB,EAAMs+W,IAAK44G,GAAQ4gT,GACvD,OAAO,EAEX,GAAI5ziB,EACA,GAAIk/P,GACI00S,EAASnI,QAAQ3vwB,EAAMspxB,aAAelmT,GAAQ3/P,SAC9CS,EAASt8C,EAAGiimB,iBAAiB/R,IAG7B5ziB,EAASt8C,EAAGgimB,cAAc9R,EAAShgtB,OAAOgrK,SAG7C,CACD,IAAI/7M,IAAM,EACV,QAAStiB,GAAI,GAAIsiB,IAAOtiB,GAAIyyd,GAAOr7d,OAAQ4I,KAAK,CAC5C,IAAM2yd,SAAOC,QAAQH,GAAOzyd,IAC5BsiB,GAAM/mB,EAAMs+W,IAAIk1Z,aAAap8S,GAAMz4Y,IAAK04Y,GAAI14Y,IAAKm5rB,GAErD,QAASrzwB,GAAI,EAAGA,GAAIyyd,GAAOr7d,OAAQ4I,KAAK,CACpC,IAAM2yd,SAAOC,QAAQH,GAAOzyd,IACxBsiB,GACA6gK,EAAGg9lB,WAAWxtT,GAAMz4Y,IAAK04Y,GAAI14Y,IAAKm5rB,GAGlClwlB,EAAG48lB,QAAQptT,GAAMz4Y,IAAK04Y,GAAI14Y,IAAKm5rB,EAAShgtB,OAAOgrK,IAGvDoB,EAASt8C,EAAG61S,kBAGpB,OAAO,GAEEmnT,GAAa,CAACh9lB,EAAI1pH,EAAMqlE,EAAI86V,UACxB,IAATA,IACAA,EAAO,MAEX,IAAIi5K,EAAU,GAAIh1lB,GAAO,EACzBslI,SAAG02L,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAI,CAACroH,GAAMyjE,MACjC,IAAKzjE,GAAKg3vB,SACN,OAEJ5vtB,KACA,IAAIuiuB,GAAW,KACf,GAAIxmT,aAAgB85S,GAAU,CAC1B,IAAIr5sB,GAAQu/Z,EAAKsxS,QAAQz0vB,GAAKuoN,OAC1B3kK,KACA+ltB,GAAW,CAAC/ltB,UAGXu/Z,EACDA,EAAKsxS,QAAQz0vB,GAAKuoN,SAClBohjB,GAAW,CAACxmT,IAIhBwmT,GAAW3pwB,GAAKuoN,MAEpB,GAAIohjB,IAAYA,GAAShpxB,OAAQ,CAC7B,IAAIukC,GAAMp9B,KAAKulC,IAAIo2C,GAAMzjE,GAAK25c,SAAUtxV,GACxC,QAAS9+H,GAAI,EAAGA,GAAIogxB,GAAShpxB,OAAQ4I,KAAK,CACtC,IAAyBqgxB,GAArB7kxB,GAAQ4kxB,GAASpgxB,IACrB,QAAS6yF,GAAI,EAAGA,GAAIggjB,EAAQz7oB,OAAQy7F,KAAK,CACrC,IAAI3kE,GAAI2knB,EAAQhgjB,IACZ3kE,GAAE2vB,OAASA,GAAO,GAAKriD,GAAMi5d,GAAGvmc,GAAE1yB,SAClC6kxB,GAAUnyvB,IAGdmyvB,IACAA,GAAQvhpB,GAAKnjG,GACb0kvB,GAAQxiuB,KAAOA,IAGfg1lB,EAAQ/7oB,KAAK,CAAE0E,MAAOA,GAAOi+D,KAAMl7D,KAAKsB,IAAIq6E,GAAKzgB,GAAOqlE,GAAInjG,GAAKkiB,KAAMA,SAKvFg1lB,EAAQ56oB,QAASi2B,IAAei1J,EAAGtlI,KAAK,IAAIiiuB,GAAe5xvB,GAAEurC,KAAMvrC,GAAE4wG,GAAI5wG,GAAE1yB,SACpE2nL,GAwDEs/S,GAAU,CAAClne,EAAO6U,KAC3B,MAAM4uN,EAAQzjO,EAAM4iO,OAAOa,MACrBiqjB,GAAY74wB,EAAQ64wB,UAAY,IAAI7qxB,OAAO8vB,IAAK8wM,EAAM9wM,KACtDg7vB,EAAW94wB,EAAQ84wB,SACzB,IAAMzvtB,QAAMk5Z,SAAO7zV,MAAIhuD,UAAUv1E,EAAM41D,UACvC,MAAMh4D,GAAO6lO,EAAM5uN,EAAQwpd,MACrB//G,GAAMt+W,EAAMs+W,IAClB,IACIsva,GADAvlxB,IAAS,EASb,OAPIktE,IACAq4sB,GAAY5txB,EAAMspxB,aAAelyT,GAAM3zP,QACvCp7N,GAAUzK,IAAQA,GAAK+xwB,QAAQie,KAAeF,EAAS7zuB,KAAKlnB,IAAK8wM,EAAM9wM,IAAGg9uB,QAAQie,MAGlFvlxB,GAAUzK,IAAQ0gX,GAAIk1Z,aAAat1sB,GAAMqlE,GAAI3lI,KAAU8vxB,EAAS7zuB,KAAKlnB,IAAK2rV,GAAIk1Z,aAAat1sB,GAAMqlE,GAAIkgG,EAAM9wM,OAE1GtqB,IAAUslxB,GAAYlqjB,EAAMxjO,MACtB4txB,GAAe7txB,EAAOyjO,EAAMxjO,OAC9B45C,KAAKwkb,IAAuC,OAA/B8xK,GAAW9xK,GAAMsvT,IAEhC7vd,QAAQz1T,KAEN8noB,GAAa,CAAC9xK,EAAMp+d,KAE7B,MAAMsuH,GADa8vW,GAAQA,EAAKv7P,MAAM7iO,OAAU,IACvB6M,MAAM,WAAWjK,OAAOlG,GAAKmhU,QAAQnhU,IAC9D,QAAS8H,EAAI,EAAGA,EAAI8pH,EAAO1yH,OAAQ4I,IAAK,CACpC,MAAM6nxB,GAAY/9pB,EAAO9pH,GAAGqI,MAAM,WAClC,GAAIw/wB,GAAU,GAAGn7vB,gBAAkBlxB,EAAMnF,MAAQmF,EAAMxG,MAAM63a,KAAKg7W,GAAU,IACxE,OAAOA,GAAU,GAGzB,OAAO,MAKEuB,GAAiB,CAAC7txB,EAAO83wB,KAClC,IAAM55sB,OAAMk5Z,QAAO7zV,KAAIhuD,UAAUv1E,EAAM41D,UACnC6tK,GAAQ,GACZ,OAAIluJ,GACAkuJ,GAAMloO,KAAKu8wB,EAASnI,QAAQ3vwB,EAAMspxB,aAAelyT,EAAM3zP,UAGvDzjO,EAAMs+W,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAIroH,KACzBA,GAAKg3vB,UACLzuiB,GAAMloO,KAAKu8wB,EAASnI,QAAQz0vB,GAAKuoN,UAItCA,IAMEu/P,GAAU,CAAChje,EAAO83wB,KAC3B,MAAMr0iB,EAAQoqjB,GAAe7txB,EAAO83wB,GAC9BpoL,EAAWjsX,EAAM5gO,OAAO8vB,GAAKmrS,QAAQnrS,IAC3C,OAAO8wM,EAAM5nO,SAAW6zlB,EAAS7zlB,OAAS4nO,EAAM,QAAKxoO,GAK5C4se,GAAiB,CAAC7ne,EAAO83wB,KAClC,MAAMr0iB,EAAQoqjB,GAAe7txB,EAAO83wB,GAC9BpoL,EAAWjsX,EAAM5gO,OAAO8vB,IAAKmrS,QAAQnrS,KAE3C,MAAO,CACHu/b,qBAFuBzuP,EAAM5nO,SAAW6zlB,EAAS7zlB,OAGjD4nO,MAAOisX,ICpOTo+L,GAAsB,CAACrqjB,EAAOsqjB,KAChC,MAAMC,EAAYvqjB,EAAMpnO,KAAKs2B,GAAqB,UAAhBA,EAAE/0B,KAAK9C,MAEzC,OAAOmxxB,GADc+B,GAAaA,EAAUlrjB,MAAM7iO,MACV8txB,IAEtCE,GAAkB,CAACrmmB,EAAI1pH,EAAMqlE,EAAIu/F,EAAOg1iB,KAC1C,MAAMz5S,GAAOy5S,EAAShgtB,OAAO,CAAE73D,MAAO6iO,EAAM7iO,QAC5C,IAAI63H,GAAU,GAAIq8U,GAAQ,GAAIswU,GAAW,KAAMC,GAAS,KACxD98lB,SAAG02L,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAI,CAACroH,GAAMyjE,GAAKwzR,MACtC,IAAKj3V,GAAKg3vB,SACN,OAEJ,IAAIzuiB,GAAQvoN,GAAKuoN,MACjB,IAAK46P,GAAKsxS,QAAQlsiB,KAAU0uI,GAAOv0W,KAAKi6wB,eAAex5S,GAAKzge,MAAO,CAC/D,IAAIklB,GAAQ9f,KAAKsB,IAAIq6E,GAAKzgB,GAAO99B,GAAMp9B,KAAKulC,IAAIo2C,GAAMzjE,GAAK25c,SAAUtxV,GACrE,MAAM4opB,GAAW2B,GAAoBrqjB,GAAOX,GAC5C,GAAIqpjB,GAAS3lqB,SAAWs8G,EAAM/U,SAAU,CACpC,MAAM9tN,GAAQksxB,GAAS3lqB,QACnB,CAAEvmH,MAAOksxB,GAASlsxB,OAAS,MAAS,CAAEA,MAAQ,GAAE,CAAC6iO,EAAM7iO,WAAW6iO,EAAM/U,aACtEmgkB,GAAcpW,EAASnI,QAAQlsiB,IAASA,GAAMpnO,KAAKs2B,IAAqB,UAAhBA,GAAE/0B,KAAK9C,MAAoB,KACnFqzxB,GAAeD,GAAcvyxB,OAAOw0D,OAAO,GAAI+9tB,GAAYprjB,MAAO7iO,IAASA,GAC3EmuxB,GAAetW,EAAShgtB,OAAOq2tB,IACrC,IAAIxJ,GAASyJ,GAAa9e,SAAS7riB,IACnC,QAASh/N,GAAI,EAAGA,GAAIg/N,GAAM5nO,OAAQ4I,KACzBg/N,GAAMh/N,IAAGkrwB,QAAQgV,MACdF,IAAYA,GAASlhpB,KAAOzgH,IAAS2hwB,GAASpmT,KAAKnF,GAAGz1P,GAAMh/N,KAC5DggxB,GAASlhpB,GAAKnjG,IAGdqkvB,GAAW,IAAIF,GAAezhwB,GAAOsd,GAAKqjM,GAAMh/N,KAChDqzH,GAAQv8H,KAAKkpxB,MAIzB,MAAM4J,GAAgB3J,IAAUA,GAAOnhpB,KAAOzgH,GACxCwrwB,GAAaD,IAAiBD,GAAatrjB,MAAM7iO,QAAUykxB,GAAOrmT,KAAKv7P,MAAM7iO,MAC/EouxB,IAAiBC,GACjB5J,GAAOnhpB,GAAKnjG,GAEPzkC,OAAOrC,KAAK60xB,IAAct0uB,KAAKm9tB,IAAuC,OAA3BmX,GAAanX,OAC7D0N,GAAS,IAAIL,GAAYvhwB,GAAOsd,GAAKguvB,IACrCj6U,GAAM54c,KAAKmpxB,SAK3B5spB,GAAQp7H,QAAQC,IAAKirL,EAAGtlI,KAAK3lD,KAC7Bw3c,GAAMz3c,QAAQC,IAAKirL,EAAGtlI,KAAK3lD,KACpBm7H,GAAQj8H,OAASs4c,GAAMt4c,OAAS,GAUrC0yxB,GAAc,CAACzW,EAAUh1iB,IACpB,SAAU9iO,EAAOkkO,EAAUt8C,GAC9B,IAAMryG,SAAO6tZ,WAASlM,WAAWl3d,EAAM41D,UACvC,GAAK2f,KAAU6tZ,KAAamqT,GAAYvtxB,EAAMs+W,IAAK44G,GAAQ4gT,GACvD,OAAO,EAEX,IAAIzvwB,IAAS,EACb,GAAI67N,EAAU,CACV,MAAMsqjB,GAAc5mmB,GAAM5nL,EAAM4nL,GAChC,GAAIw7S,GAAS,CACT,MAAMqrT,GAAezuxB,EAAMspxB,aAAelmT,GAAQ3/P,QAClD,GAAIq0iB,EAASnI,QAAQ8e,IAAe,CAChC,MAAMtC,GAAW2B,GAAoBW,GAAc3rjB,GAC7CkrjB,GAAYS,GAAapyxB,KAAKs2B,IAAqB,UAAhBA,GAAE/0B,KAAK9C,MAC1C4zxB,GAAW/yxB,OAAOw0D,OAAO,GAAK69tB,GAAYA,GAAUlrjB,MAAQ,GAAK,CAAE7iO,MAAOksxB,GAASlsxB,OAAS,OAClG,GFyCQ,EAAC0uxB,EAASC,KAClC,MAAMC,EAAQlzxB,OAAOrC,KAAKq1xB,GACpBG,EAAQnzxB,OAAOrC,KAAKs1xB,GAC1B,OAAOC,EAAMhzxB,SAAWizxB,EAAMjzxB,QAC1BgzxB,EAAMhmxB,MAAMqgC,GAAKylvB,EAAQzlvB,KAAO0lvB,EAAQ1lvB,KE7CxB6lvB,CAAaf,GAAUlrjB,MAAO4rjB,IAC9B,OAAO,EAEXxqjB,EAASsqjB,GAAY3E,iBAAiB/R,IAClCn8wB,OAAOrC,KAAKo1xB,IAAU70uB,KAAKm9tB,IAAmC,OAAvB0X,GAAS1X,MAChD9yiB,EAASsqjB,GAAY5E,cAAc9R,EAAShgtB,OAAO42tB,MAEvDrmxB,IAAS,OAGZ,CACD,QAAS5D,GAAI,EAAGA,GAAIyyd,GAAOr7d,OAAQ4I,KAAK,CACpC,IAAM2yd,SAAOC,QAAQH,GAAOzyd,IAC5B4D,GAAS4lxB,GAAgBO,GAAap3T,GAAMz4Y,IAAK04Y,GAAI14Y,IAAKmkJ,EAAOg1iB,GAEjEzvwB,KACAmmxB,GAAY/wT,iBACZv5P,EAASsqjB,MAIrB,OAAOnmxB,IAMF41d,GAAqB,CAACppd,EAAS+yK,EAAIonmB,IAAc,CAAChvxB,EAAOkkO,KAClE,MAAMT,GAAQzjO,EAAM4iO,OAAOa,OACnBkqjB,YAAUD,YAAW,GAAIrvT,SAASxpd,EACpC25wB,GAAc5mmB,GAAM5nL,EAAM4nL,GAChC,IAAIqnmB,IAAe,EACfC,IAAa,EACjB,MAAMC,GAAiB,IAAMD,IAAa,EACtCvB,IAAYlqjB,GAAMxjO,QAElBgvxB,GADYV,GAAY9qjB,GAAMxjO,MAAO,CAAEA,MAAO0txB,GAAS7yxB,KAAMrB,MAAOk0xB,GAASl0xB,OAC9Dq3O,CAAI9wO,EAAOmvxB,GAAgBX,KAG9C,MAAM3J,GAAWuK,CADC/wT,MAASqvT,IAAU7qxB,OAAO8vB,IAAK8wM,GAAM9wM,KAC7Bl3B,IAAIk3B,IAAKu0c,GAAQlne,EAAO,CAAEq+d,KAAM1rc,MAAQ8wM,GAAM9wM,KAAI9vB,OAAO8vB,IAAKA,IACxF,OAAIkyvB,GAAShpxB,ODRU,EAAC4nO,EAAOzjO,EAAOkkO,EAAUt8C,KAChD,IAAMw7S,UAASlM,WAAWl3d,EAAM41D,UAEhC,GADAgyH,EAAKA,GAAM5nL,EAAM4nL,GACbw7S,EACA3/P,EAAM/mO,QAAQi2B,KACNA,GAAEg9uB,QAAQ3vwB,EAAMspxB,aAAelmT,EAAQ3/P,UACvCS,EAASt8C,EAAGiimB,iBAAiBl3vB,WAIpC,CACD,QAASluB,GAAI,EAAGA,GAAIyyd,GAAOr7d,OAAQ4I,KAAK,CACpC,IAAM2yd,SAAOC,QAAQH,GAAOzyd,IAC5Bg/N,EAAM/mO,QAAQi2B,KACViyvB,GAAWh9lB,EAAIwvS,GAAMz4Y,IAAK04Y,GAAI14Y,IAAKhsD,MAG3CuxM,EAASt8C,EAAG61S,oBCRZ4xT,CAAYxK,GAAU7kxB,EAAOmvxB,GAAgBX,IAGxCS,IACDxB,GAAWhqjB,GAAM46P,IAAO2wT,EAAWR,GAAnCf,CAAgDztxB,EAAOmvxB,IAG3DD,IACAhrjB,EAASsqjB,IAENU,IAKE5wT,GAAmB,CAACzpd,EAAS6kV,IAAY,CAAC15V,EAAOkkO,KAE1D,MAAM4ziB,GAAWr0iB,EADGb,OAAOa,MACJxjO,MACjB6iO,GAAQ,CACV7iO,MAAO4U,EAAQ5U,MAAOxG,MAAO,OAAQs0N,SAAUl5M,EAAQpb,OAErDmuL,GAAK5nL,EAAM4nL,GACb8xK,GACA9xK,GAAGsimB,QAAQ,cAAexwb,GAE9B9xK,GAAGsimB,QAAQ,OAAQr1wB,GACnB,IAAM0gE,SAAO6tZ,WAASlM,WAAWl3d,EAAM41D,UACvC,GAAK2f,KAAU6tZ,KAAa00S,KAAayV,GAAYvtxB,EAAMs+W,IAAK44G,GAAQ4gT,IACpE,OAAO,EAGX,GAAI10S,GAAS,CACT,MAAMksT,GAAqBtvxB,EAAMspxB,aAAelmT,GAAQ3/P,QAClDyqjB,GAAcpW,GAASnI,QAAQ2f,IAAsBA,GAAmBjzxB,KAAKs2B,IAAqB,UAAhBA,GAAE/0B,KAAK9C,MAAoB,KAC7Gy0xB,GAAY,CAAEtvxB,MAAO,MAC3B,GAAIiuxB,IAAeA,GAAYprjB,MAAM7iO,MAAO,CACxC,MAAMuvxB,GAAevD,GAAmBiC,GAAYprjB,MAAM7iO,MAAO6iO,IAC7D0sjB,GAAahpqB,SAAWgpqB,GAAavvxB,QACrCsvxB,GAAUtvxB,MAAQuvxB,GAAavvxB,YAG9B6iO,GAAM/U,WACXwhkB,GAAUtvxB,MAAS,GAAE,CAAC6iO,GAAM7iO,WAAW6iO,GAAM/U,aAEjD,MAAMogkB,GAAeD,GAAcvyxB,OAAOw0D,OAAO,GAAI+9tB,GAAYprjB,MAAOysjB,IAAaA,GACrF,OAAI5zxB,OAAOrC,KAAK60xB,IAAct0uB,KAAKm9tB,IAAuC,OAA3BmX,GAAanX,KACxD9yiB,EAASt8C,GAAGgimB,cAAc9R,GAAShgtB,OAAOq2tB,MAG1CjqjB,EAASt8C,GAAGiimB,iBAAiB/R,MAE1B,EAEX,OAAOyW,GAAYzW,GAAUh1iB,GAAtByrjB,CAA6BvuxB,EAAOkkO,EAAUt8C,KCpI5Cm3S,GAAa,CAAClqd,EAAS+yK,IAAO,CAAC5nL,EAAOkkO,KAC/C,MAAQk/P,WAAYpje,EAAM41D,UAC1B,GAAKwta,EAGA,CACD,MAAM7/U,GAAa6/U,EAAQjxH,OACrBkxH,GAAkBD,EAAQ1pd,QAC1B+1wB,GAAWzvxB,EAAM4iO,OAAOa,MAAM5uN,EAAQwpd,MACtCA,GAAO96U,GAAWhvF,MAAM8ua,IAAiB5/P,MAAMpnO,KAAKs2B,IAAKA,GAAE/0B,OAAS6xxB,IACpEv7T,GAAa3wU,GAAW2wU,WAC9B,IAAyGx6c,GAAOm7c,GAA5G66T,GAAYtsT,EAAQzkZ,IAAMykZ,EAAQ+tS,WAAYwe,GAAWpsoB,GAAWhvF,MAAM8ua,IAAiBxO,SAE/F,IADAn7c,GAAQ2pd,GAAkB,EACnB3pd,IAAS,GAAK2kd,GAAKsxS,QAAQpsnB,GAAWhvF,MAAM76C,IAAO+pN,QACtDoxP,GAAWtxU,GAAWhvF,MAAM76C,IAAOm7c,SACnC86T,IAAY96T,GACZ66T,IAAa76T,GACbn7c,IAAS,EAGb,IADAA,GAAQ2pd,GAAkB,EACnB3pd,GAAQw6c,IAAcmK,GAAKsxS,QAAQpsnB,GAAWhvF,MAAM76C,IAAO+pN,QAC9DksjB,IAAYpsoB,GAAWhvF,MAAM76C,IAAOm7c,SACpCn7c,IAAS,EAEbwqN,EAAS0gjB,GAAWh9lB,GAAM5nL,EAAM4nL,GAAI8nmB,GAAWA,GAAYC,GAAUtxT,UArBrEJ,GAAmBppd,EAAS+yK,EAA5Bq2S,CAAgCj+d,EAAOkkO,IA+BlCk6P,GAAY,EAAGC,OAAMv7P,SAASujQ,EAAc,SAAW,CAACrme,EAAOkkO,KACxE,MAAMT,GAAQzjO,EAAM4iO,OAAOa,MACrB77C,GAAK5nL,EAAM4nL,GACby+S,IACAz+S,GAAGsimB,QAAQ,cAAe7jT,GAC1Bz+S,GAAGsimB,QAAQ,OAAQpnjB,IAEvB,IAAIosjB,IAAa,EACjB,MAAMC,GAAiB,IAAMD,IAAa,EAC1C,GAbkB,EAAClvxB,EAAO83wB,KAC1B,MAAMr0iB,EAAQoqjB,GAAe7txB,EAAO83wB,GACpC,OAAwB,IAAjBr0iB,EAAM5nO,QAAgB4nO,EAAM,GAAKA,EAAM,GAAK,MAW/CmsjB,CAAc5vxB,EAAOyjO,GAAM46P,IA9EhB,EAACxpd,EAAS+yK,IAAO,CAAC5nL,EAAOkkO,KACxC,MAAQk/P,UAASlla,QAAMqlE,OAAOvjI,EAAM41D,UAC9BkitB,GAAW93wB,EAAM4iO,OAAOa,MAAM5uN,EAAQwpd,MAC5C,GAAK+E,EASA,CACD,MAAM7/U,GAAa6/U,EAAQjxH,OACrBkxH,GAAkBD,EAAQ1pd,QAC1B2kd,GAAO96U,GAAWhvF,MAAM8ua,IAAiB5/P,MAAMpnO,KAAKs2B,IAAKA,GAAE/0B,OAASk6wB,IACpE5jT,GAAa3wU,GAAW2wU,WAC9B,IAAyGx6c,GAAOm7c,GAA5G66T,GAAYtsT,EAAQzkZ,IAAMykZ,EAAQ+tS,WAAYwe,GAAWpsoB,GAAWhvF,MAAM8ua,IAAiBxO,SAE/F,IADAn7c,GAAQ2pd,GAAkB,EACnB3pd,IAAS,GAAK2kd,GAAKsxS,QAAQpsnB,GAAWhvF,MAAM76C,IAAO+pN,QACtDoxP,GAAWtxU,GAAWhvF,MAAM76C,IAAOm7c,SACnC86T,IAAY96T,GACZ66T,IAAa76T,GACbn7c,IAAS,EAGb,IADAA,GAAQ2pd,GAAkB,EACnB3pd,GAAQw6c,IAAcmK,GAAKsxS,QAAQpsnB,GAAWhvF,MAAM76C,IAAO+pN,QAC9DksjB,IAAYpsoB,GAAWhvF,MAAM76C,IAAOm7c,SACpCn7c,IAAS,EAEbkuK,EAAGg9lB,WAAW8K,GAAWA,GAAYC,GAAU7X,IAC/ClwlB,EAAG48lB,QAAQkL,GAAWA,GAAYC,GAAU7X,GAAShgtB,OAAOjjD,EAAQiuN,QACpEoB,EAASt8C,QA5BTA,EAAG02L,IAAIwvZ,aAAa5vsB,GAAMqlE,GAAI,CAACroH,GAAMyjE,MAC7BzjE,GAAKg3vB,UAAY4F,GAASnI,QAAQz0vB,GAAKuoN,SACvC77C,EAAGg9lB,WAAWjmsB,GAAKA,GAAMzjE,GAAK25c,SAAUijT,IACxClwlB,EAAG48lB,QAAQ7lsB,GAAKA,GAAMzjE,GAAK25c,SAAUijT,GAAShgtB,OAAOjjD,EAAQiuN,QAC7DoB,EAASt8C,OAuEjBiomB,CAAW,CAAExxT,OAAMv7P,SAASl7C,GAA5BiomB,CAAgC7vxB,EAAOmvxB,QAEtC,CACD,IAAI3tjB,GAAYxhO,EACZkne,GAAQlne,EAAO,CAAEq+d,WACjBU,GAAW,CAAEV,OAAMv7P,SAASl7C,GAA5Bm3S,CAAgC/+d,EAAOmvxB,IACvC3tjB,GAAY+mQ,UAAmB,CAAEjqH,IAAK12L,GAAG02L,IAAK1oT,UAAWgyH,GAAGhyH,aAE5Ds5tB,GACAzB,GAAWhqjB,GAAM46P,GAAOv7P,EAAOl7C,GAA/B6lmB,CAAmCjsjB,GAAW2tjB,IAG9ClxT,GAAmB,CAAEI,KAAMA,GAAQz2S,GAAIk7C,EAAvCm7P,CAA8Cz8P,GAAW2tjB,IAGjE,OAAID,IACAhrjB,EAASt8C,IAENsnmB,ICpGE1wT,GAAc17P,GAAU,CAAC9iO,EAAOkkO,KACzCA,EAASlkO,EAAM4nL,GAAG42S,WAAW17P,EAAMliO,KAAMkiO,EAAM5kK,KAAM4kK,EAAMv/F,MCAlDghG,GAAezB,GAAU,CAAC9iO,EAAOkkO,KAC1C,MAAQzsF,SAAUz3I,EAAM4iO,OAAOrrG,MAEzBu4pB,GAAWr4oB,EAAM2gV,cAAct1P,GACrCyvI,GAAWu9a,GAAXv9a,CAAqBvyW,EAAO4nL,IAAMs8C,EAASt8C,GAAGsimB,QAAQ,cAFlC,eAE8DA,QAAQ,OAAQpnjB,MCmC/F,iBACP,SACA,2EACAm5W,WACA,4DACA,+CAA6Dzvb,WAAcA,IAC3ElwJ,wEACA2/kB,iBAEA,SCzCA,MAUa8zM,GAAkB,CAACnomB,EAAI1sK,EAAM8+V,EAAUl3I,KAChD,IAAKk3I,EAASugH,YACV,OAAO,EAEX,MAAQrD,UAAWtvS,EAAGhyH,UACtBsha,EAAOx6d,QAAQghE,KACX,MAAM+6Z,GAAU7wS,EAAG7kI,MAAMlnD,OAGzB+rL,EAAG02L,IAAIwvZ,aAFMpwsB,GAAM05Z,MAAMz4Y,IACdjhB,GAAM25Z,IAAI14Y,IACS,CAACqxsB,GAAUrxsB,MACrC,GAAIqxsB,GAAS92T,GAAGh+c,IACZ80wB,GAASz1T,cACRy1T,GAAS7c,UAAUn5Z,EAAUl3I,IAtBxB,EAACmtjB,EAAUtxsB,EAAK/gF,KAClC,IAAI27d,EAAO02T,EAASvywB,QAAQihE,GAAMjlE,EAAQ6/c,EAAK7/c,QAC/C,OAAO6/c,EAAKpnH,OAAO+ha,eAAex6vB,EAAOA,EAAQ,EAAG9b,IAqBxCmmxB,CAAcn8lB,EAAG02L,IAAK12L,EAAG3yJ,QAAQvwB,MAAM+zd,IAASh9d,IAAIkjF,IAAMq7R,GAAW,CAErEpyL,EAAGo8lB,kBAAkBp8lB,EAAG3yJ,QAAQvwB,MAAM+zd,IAASh9d,IAAIkjF,GAAK,GAAIq7R,GAC5D,IAAI/kV,GAAU2yJ,EAAG3yJ,QAAQvwB,MAAM+zd,IAC3BwrT,GAAShvvB,GAAQx5B,IAAIkjF,GAAK,GAAIulsB,GAAOjvvB,GAAQx5B,IAAIkjF,GAAMqxsB,GAASn7T,SAAU,GAC1Enwd,GAAQ,IAAI8zd,EAAMF,OAAct+G,EAASliT,OAAOgrK,EAAO,KAAMktjB,GAASvsjB,QAAS,EAAG,GACtF77C,SAAGtlI,KAAK,IAAIoguB,GAAkBuB,GAAQC,GAAMD,GAAS,EAAGC,GAAO,EAAGx/wB,GAAO,GAAG,KACrE,QAWVwrxB,GAAa,CAAClwxB,EAAO6U,EAAU,CAAEs7wB,mBAAmB,MAC7D,MAAQ7xa,MAAK1oT,aAAc51D,EAC3B,IAAMo3d,QAAOF,WAAWtha,EACxB,MAAQu6tB,sBAAsBt7wB,EACxBxM,GAAS,GACT+nxB,GAAUx6tB,aAAqBgka,GAAgBhka,EAAU16C,UAAOjgB,EACtE,OAAIm1xB,GACAppF,GAAYonE,SACR/lwB,GAAO9M,KAAK60xB,IACZA,GAAQtiB,aAAa,EAAGsiB,GAAQ17wB,QAAQowC,KAAM5pC,KACtCA,GAAKkzvB,SACL/lwB,GAAO9M,KAAK2f,QAIdi1wB,IAAqB/4T,EAAMjlH,QAAUilH,EAAMjlH,OAAOi8Z,SACxD/lwB,GAAO9M,KAAK67d,EAAMjlH,QAItB+kH,GAAOx6d,QAAQghE,KACX,MAAMQ,GAAOR,GAAM05Z,MAAMz4Y,IACnB4kD,GAAK7lE,GAAM25Z,IAAI14Y,IACrB2/R,EAAIwvZ,aAAa5vsB,GAAMqlE,GAAI,CAACroH,GAAMyjE,GAAK0xsB,GAASl2rB,MACxCj/E,GAAKkzvB,WAAa+hB,IAAsBxxsB,IAAOzgB,IAAQygB,GAAMzjE,GAAKxG,QAAQowC,KAAO,GAAKy+E,KACtFl7H,GAAO9M,KAAK2f,QAKrB7S,IAEEw3d,GAAsB,CAACpme,EAAO4se,IAAgB,CAACrme,EAAOkkO,KAC/D,MAAM4lf,EAASomE,GAAWlwxB,GACpBu3H,GAAQv3H,EAAM4iO,OAAOrrG,MACrBqwD,GAAK5nL,EAAM4nL,GACjBA,GAAGsimB,QAAQ,cAAe7jT,GAC1Bz+S,GAAGsimB,QAAQ,OAAQ,CAAEzwxB,UACrBqwtB,EAAOpttB,QAAQwe,KACX,GAAIA,GAAKtd,KAAK28d,YACV,GAAc,MAAV9ge,EAAe,CACf,MAAuCqpO,GAAQwtjB,GAApCp1wB,GAAK4nN,MAAkD,CAAC,UACnEitjB,GAAgBnomB,GAAI1sK,GAAMq8G,GAAMg5pB,UAAWztjB,YAEtC,YAAYwuM,KAAK73a,GAAQ,CAC9B,MAAMu+G,GAAQt+G,SAASD,EAAM8e,OAAO,GAAI,IACxCw3wB,GAAgBnomB,GAAI1sK,GAAMq8G,GAAM2xK,QAASvtS,OAAOw0D,OAAO,GAAIj1C,GAAK4nN,MAAO,CAAE9qH,oBAE1D,eAAVv+G,EAAwB,CAC7B,MAAuCqpO,GAAQwtjB,GAApCp1wB,GAAK4nN,MAAkD,CAAC,UACnEitjB,GAAgBnomB,GAAI1sK,GAAMq8G,GAAMk8V,WAAY3wP,OAIxD,MAAMz6N,GAASu/K,GAAG65lB,WAClB,OAAIp5wB,IACA67N,EAASt8C,GAAG61S,kBAETp1d,IAyCEmoxB,GAAY,CAACt1wB,EAAMu1wB,KAC5B,IAAsCC,EAAoB3C,EAAtD4C,EAAgBz1wB,EAAK4nN,MAAM7iO,MAS/B0wxB,OARIA,GACAF,EAAc/zxB,QAAQuD,KAClB8txB,EAAW,CAAE9txB,MAAOA,GAAMnF,KAAMrB,MAAO,OAAQs0N,SAAU9tN,GAAMxG,OAC/Di3xB,EAAqBzE,GAAmB0E,EAAe5C,GACvD4C,EAAgBD,EAAmBlqqB,QAAUkqqB,EAAmBzwxB,MAAQ0wxB,IAIhFA,EAAgBA,GAAiBF,EAAc3gxB,OAD/B,CAAC0kD,GAAKwkR,MAAWxkR,IAAOwkR,GAAKv/U,MAAQ+6D,GAAM,IAAM,IAAMwkR,GAAKv/U,MAAS,GAAEu/U,GAAKl+U,SAASk+U,GAAKv/U,SAAW,GACtD,IACxDkC,OAAOw0D,OAAO,GAAIj1C,EAAK4nN,MAAO,CAAE7iO,MAAO0wxB,GAAiB,QAEtDnpT,GAAU,CAACxne,EAAOg6W,KAC3B,IAAM97S,OAAMqlE,MAAOvjI,EAAM41D,UACrBvtD,GAAS,EACbrI,SAAMs+W,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAIroH,KAC7B7S,EAASA,GAAU6S,GAAKtd,OAASo8W,GACzB3xW,IAELA,GAEEuoxB,GAAqB5wxB,IAC9B,MAAMszf,EA1CsBtzf,KAC5B,MAAM8ptB,EAASomE,GAAWlwxB,GACpBu3H,EAAQv3H,EAAM4iO,OAAOrrG,MACrBlvH,EAAS,GACfyhtB,SAAOpttB,QAASwe,IACRA,EAAKtd,OAAS25H,EAAMg5pB,UACpBloxB,EAAO9M,KAAK,KAEXixJ,EAAS5uJ,OAAS25H,EAAM2xK,QACzB7gS,EAAO9M,KAAM,IAAG2f,EAAK4nN,MAAM9qH,SAEtB98F,EAAKtd,OAAS25H,EAAMk8V,YAGzBprd,EAAO9M,KAAK,gBAGb8M,GAyBSwoxB,CAAgB7wxB,GAChC,OAAiC,IAA1B,IAAIm+D,IAAIm1b,GAASxuc,KAAawuc,EAAQ,GAAK,MAKzCnsB,GAAcnne,IAChB,CAAEijO,IAAK2tjB,GAAkB5wxB,IAAU,KC5KjC29d,GAAc,CAAC1pC,EAASoyC,IAAgB,CAACrme,EAAOkkO,KACzD,MAAM4lf,EAASomE,GAAWlwxB,GACpB4nL,GAAK5nL,EAAM4nL,GACjBA,GAAGsimB,QAAQ,cAAe7jT,GAC1ByjP,EAAOpttB,QAAQwe,KACX,GAAIA,GAAKtd,KAAK28d,YAAa,CACvB,IAAIm0T,GAAW,GACf,MAAM53vB,GAASm9Z,EAAQ53b,KAAKuH,IAAKA,GAAEsX,OAASA,GAAKtd,KAAK9C,MAClDg8B,KACA43vB,GAAW8B,GAAUt1wB,GAAM4b,GAAO72B,QAEtC8vxB,GAAgBnomB,GAAI1sK,GAAMA,GAAKtd,KAAM8wxB,OAG7C,MAAMrmxB,GAASu/K,GAAG65lB,WAClB,OAAIp5wB,IACA67N,EAASt8C,GAAG61S,kBAETp1d,IAEE+2d,GAAY,CAACp/d,EAAOi0b,KAC7B,MAAM61R,EAASomE,GAAWlwxB,GAC1B,IAAIqI,GAAS,EACbyhtB,SAAOpttB,QAAQwe,IACX,IAAK7S,GAAU6S,EAAKtd,KAAK28d,aAAer/c,EAAK4nN,MAAM7iO,MAAO,CACtD,MAAM62B,GAASm9Z,EAAQ53b,KAAK4rB,IAAKA,GAAE/M,OAASA,EAAKtd,KAAK9C,MAClDg8B,KACAzuB,EAASyuB,GAAO72B,MAAM4I,MAAM5I,MACfA,GAAMxG,OAAS,IAAIgjW,OAAQ,GAAEx8V,GAAMnF,YAAYmF,GAAMxG,QAAS,KAAK63a,KAAKp2Z,EAAK4nN,MAAM7iO,YAKrGoI,GClCE61d,GAAkB,CAACrpd,EAAU,CAAEs7wB,mBAAmB,KAAW,CAACnwxB,EAAOkkO,KAC9E,MAAMt8C,EAAK5nL,EAAM4nL,IACTuomB,oBAAmBW,iBAAeC,gBAAgBl8wB,ERyIpC,EAAC+yK,GAAMopmB,aAC7B,MAAQ1ya,MAAK1oT,aAAcgyH,EACrBg7C,EAAS07I,EAAI1gX,KAAKglO,QAChBrtJ,SAAO2hZ,WAAWtha,EACpBq7tB,IAAqBD,GAAU,IAAIv1xB,IAAIursB,IAAMA,GAAGlssB,MACtD,IAAKy6E,GAAO,CACR,MAAMkuJ,GAAQ9nO,OAAOrC,KAAKspO,EAAOa,OAC5BhoO,IAAIk3B,IAAKiwM,EAAOa,MAAM9wM,KACtB9vB,OAAOmksB,KAA6C,IAAvCiqF,GAAkBr7wB,QAAQoxrB,GAAGlssB,OAC/Co8d,GAAOx6d,QAAQ,EAAG06d,SAAOC,WACrB5zP,GAAM/mO,QAAQ2he,IAAQz2S,EAAGg9lB,WAAWxtT,GAAMz4Y,IAAK04Y,GAAI14Y,IAAK0/Y,SQjJhE6yT,CAAWtpmB,EAAI,CAAEopmB,QADDD,IAAe,CAAC/wxB,EAAM4iO,OAAOa,MAAM8P,OAAO1wO,OAAOi7T,WF4G7B,EAACl2I,EAAI/yK,EAAU,CAAEs7wB,mBAAmB,MACxE,MAAQ7xa,MAAK1oT,aAAcgyH,GACnBuomB,oBAAmBW,kBAAkBj8wB,EAE1B0iH,GADM,CAAE+mP,MAAK1oT,aAAa,CAAEu6tB,sBACtBttxB,OAAOqY,IAAQA,GAAKq/c,aAClC79d,QAAQwe,KACf,MAAMpd,GAAKod,GAAK4nN,OAAS,IAAM7iO,SAAQ,GAAIgiD,MAAO/O,GAAY,IAAOp1C,GAAIglO,GAAQwtjB,GAAexyxB,GAAI,CAAC,QAAS,UACxGk8W,GAAW82a,IAAiB51wB,GAAKtd,MACnCqC,IAASizC,IAAa8mU,KAAa9+V,GAAKtd,OACxCmyxB,GAAgBnomB,EAAI1sK,GAAM8+V,GAAUl3I,OEnH5CqujB,CAAyBvpmB,EAAI,CAAEuomB,oBAAmBW,mBAClD,MAAMzoxB,GAASu/K,EAAG65lB,WAClB,OAAIp5wB,IAAU67N,GACVA,EAASt8C,GAENv/K,ICyJX,YAAsB+oxB,GACpB,OAAO,SAASpxxB,EAAOkkO,GACrB,IAAI3tH,EAAMv2G,EAAM41D,UACZwha,EAAQ7gX,EAAI6gX,MAEZ15Z,GAAQ05Z,EAAMg7S,WADR77pB,EAAI8gX,IACoB,SAAUn8c,IAAQ,OAAOA,GAAKg5c,YAAch5c,GAAK2sS,WAAWjqT,MAAQwzxB,IACtG,QAAK1ztB,MACAwmK,IACDkzP,EAAMl8c,KAAKwiD,GAAM4vB,MAAQ,GAAG1vF,MAAQwzxB,EAO5C,YAAyBpxxB,EAAOkkO,EAAUktjB,EAAU1ztB,GAClD,IAAIkqH,EAAK5nL,EAAM4nL,GAAIxnJ,GAAMs9B,EAAMt9B,IAAKixvB,GAAY3ztB,EAAM25Z,IAAIj3b,IAAIs9B,EAAM4vB,OACpE,OAAIltD,GAAMixvB,KAGRzpmB,EAAGtlI,KAAK,IAAIoguB,GAAkBtivB,GAAM,EAAGixvB,GAAWjxvB,GAAKixvB,GACzB,IAAI74T,EAAMF,OAAc84T,EAASt5tB,OAAO,KAAM4F,EAAMy0S,OAAOt3S,SAAU,EAAG,GAAI,GAAG,IAC7G6C,EAAQ,IAAI60sB,GAAU3qlB,EAAG02L,IAAI5gW,QAAQggD,EAAM05Z,MAAMz4Y,KAAMipG,EAAG02L,IAAI5gW,QAAQ2zwB,IAAY3ztB,EAAM4vB,QAE1F42I,EAASt8C,EAAG27lB,KAAK7ltB,EAAO4ztB,GAAW5ztB,IAAQ+/Z,mBACpC,EAhBM8zT,CAAgBvxxB,EAAOkkO,EAAUktjB,EAAU1ztB,IAmB1D,YAAuB19D,EAAOkkO,EAAUxmK,GAGtC,QAFIkqH,EAAK5nL,EAAM4nL,GAAIhqJ,EAAO8/B,EAAMy0S,OAEvBxzR,GAAMjhB,EAAMt9B,IAAK37B,GAAIi5D,EAAMqmd,SAAW,EAAGhlhB,GAAI2+D,EAAM29B,WAAY52F,GAAI1F,GAAG0F,KAC7Ek6E,IAAO/gD,EAAK22B,MAAM9vD,IAAGowd,SACrBjtS,EAAG3yK,OAAO0pE,GAAM,EAAGA,GAAM,GAE3B,IAAIsyrB,GAASrplB,EAAG02L,IAAI5gW,QAAQggD,EAAM56C,OAAQha,GAAOmowB,GAAOl4S,UACxD,GAAInxS,EAAG3yJ,QAAQx5B,IAAIiiE,EAAMt9B,MAAQs9B,EAAM56C,MAAQmuvB,GAAOl4S,UAAUlE,SAAY,OAAO,EACnF,IAAI2zT,GAA8B,GAApB9qtB,EAAM29B,WAAiBotrB,GAAQ/qtB,EAAMqmd,UAAYnmf,EAAKs2b,WAChE/hH,GAAS8+Z,GAAO/1vB,MAAK,GAAKs2wB,GAAcvgB,GAAOv3vB,OAAM,GACzD,IAAKy4V,GAAOi+Z,WAAWohB,IAAehJ,GAAU,EAAI,GAAIgJ,GAAc,EAC/C1oxB,GAAK4L,QAAQsS,OAAOyhwB,GAAQnwT,QAAiBA,OAAc16b,KAC9E,OAAO,EACX,IAAI9a,GAAQmuvB,GAAOtyrB,IAAKv+C,GAAMtd,GAAQha,GAAK+rd,SAI3CjtS,SAAGtlI,KAAK,IAAIoguB,GAAkB5/vB,IAAS0lwB,GAAU,EAAI,GAAIpovB,IAAOqovB,GAAQ,EAAI,GAAI3lwB,GAAQ,EAAGsd,GAAM,EACnE,IAAIo4b,GAAOgwT,GAAUlwT,QAAiBA,OAAc16b,EAAKi9B,KAAKy9Z,WACnDtxc,OAAOyhwB,GAAQnwT,QAAiBA,OAAc16b,EAAKi9B,KAAKy9Z,WACzDkwT,GAAU,EAAI,EAAGC,GAAQ,EAAI,GAAID,GAAU,EAAI,IACvFtkjB,EAASt8C,EAAG61S,mBACL,EAxCMg0T,CAAczxxB,EAAOkkO,EAAUxmK,OA8C9C,YAAsB0ztB,GACpB,OAAO,SAASpxxB,EAAOkkO,GACrB,IAAI3tH,EAAMv2G,EAAM41D,UAGZ8H,GAFQ64C,EAAI6gX,MAEEg7S,WADR77pB,EAAI8gX,IACoB,SAAUn8c,IAAQ,OAAOA,GAAKg5c,YAAch5c,GAAK2sS,WAAWjqT,MAAQwzxB,IACtG,IAAK1ztB,GAAS,OAAO,EACrB,IAAI29B,GAAa39B,GAAM29B,WACvB,GAAkB,GAAdA,GAAmB,OAAO,EAC9B,IAAI82Q,GAASz0S,GAAMy0S,OAAQ2nH,GAAa3nH,GAAO59S,MAAM8mC,GAAa,GAClE,GAAIy+X,GAAWl8d,MAAQwzxB,EAAY,OAAO,EAE1C,GAAIltjB,EAAU,CACZ,IAAIwtjB,GAAe53T,GAAWC,WAAaD,GAAWC,UAAUn8d,MAAQu0W,GAAOv0W,KAC3E45B,GAAQ8gc,OAAco5T,GAAeN,EAASt5tB,SAAW,MACzDpzD,GAAQ,IAAI8zd,EAAMF,OAAc84T,EAASt5tB,OAAO,KAAMwga,OAAcnmH,GAAOv0W,KAAKk6D,OAAO,KAAMtgC,OAC3Ek6vB,GAAe,EAAI,EAAG,GACxC5vuB,GAAS4b,GAAM56C,MAAO8wB,GAAQ8pB,GAAMt9B,IACxC8jM,EAASlkO,EAAM4nL,GAAGtlI,KAAK,IAAIoguB,GAAkB5guB,IAAU4vuB,GAAe,EAAI,GAAI99uB,GACjCkO,GAAQlO,GAAOlvC,GAAO,GAAG,IAC5D+4d,kBAEZ,OAAO,GCvPJ,MAAMk0T,GAAa,CACtBC,YAAa,eACbC,WAAY,cACZC,SAAU,aAKDF,GAAc,CACvBG,SAAUJ,GAAWC,YACrB3kgB,MAAOtxR,OAAOw0D,OAAO,GAAIwhuB,KAKhBE,GAAa,CACtBE,SAAUJ,GAAWE,WACrB5kgB,MAAOtxR,OAAOw0D,OAAO,GAAIwhuB,KCbhBpqT,GAAc,CACvBhwW,MAAO,CAAC,CACAr8G,KAAM,YACNjb,MAAO,cACP+xxB,SAAU,eACV1vuB,KAAM,GACN/nB,KAAM,MACP,CACCrf,KAAM,UACNjb,MAAO,cACP+xxB,SAAU,eACV1vuB,KAAM,GACN/nB,KAAM,OAEdo3vB,WAAYh2xB,OAAOw0D,OAAO,GAAIwhuB,KAKrB/pT,GAAe,CACxBrwW,MAAO,CAAC,CACAr8G,KAAM,YACNjb,MAAO,cACP+xxB,SAAU,eACV1vuB,MAAM,GACN/nB,KAAM,MACP,CACCrf,KAAM,UACNjb,MAAO,cACP+xxB,SAAU,eACV1vuB,MAAM,GACN/nB,KAAM,OAEdo3vB,WAAYh2xB,OAAOw0D,OAAO,GAAIwhuB,KC/BlC,YAAyB3xxB,EAAOkkO,GAC9B,OAAIlkO,EAAM41D,UAAU2f,QAChB2uJ,GAAYA,EAASlkO,EAAM4nL,GAAGqimB,kBAAkBxsT,mBAC7C,GAWT,YAAsBz9d,EAAOkkO,EAAU/rN,GACrC,IACIird,EADMpje,EAAM41D,UACEwta,QAClB,IAAKA,IAAYjrd,GAAQA,EAAK85wB,eAAe,WAAYjyxB,GACjCoje,EAAQutS,aAAe,GAC3C,OAAO,EAEX,IAAIuhB,GAAOC,GAAc/uT,GAGzB,IAAK8uT,GAAM,CACT,IAAIx0tB,GAAQ0la,EAAQgvS,aAAc5zwB,GAASk/D,IAAS4ztB,GAAW5ztB,IAC/D,OAAc,MAAVl/D,KACA0lO,GAAYA,EAASlkO,EAAM4nL,GAAG27lB,KAAK7ltB,GAAOl/D,IAAQi/d,mBAC/C,GAGT,IAAI37a,GAASowuB,GAAKp4T,WAElB,IAAKh4a,GAAOlkD,KAAKy7d,KAAKxG,WAAau/T,GAAcpyxB,EAAOkyxB,GAAMhujB,GAC1D,OAAO,EAIX,GAAmC,GAA/Bk/P,EAAQjxH,OAAOz9V,QAAQowC,OACtButuB,GAAYvwuB,GAAQ,QAAU83a,gBAA2B93a,KAAU,CACtE,GAAIoiL,EAAU,CACZ,IAAIt8C,GAAK5nL,EAAM4nL,GAAGs/lB,YAAY9jT,EAAQthb,SAAUshb,EAAQxvb,SACxDg0I,GAAG+wS,aAAa05T,GAAYvwuB,GAAQ,OAAS20a,YAAmB7uS,GAAG02L,IAAI5gW,QAAQkqK,GAAG3yJ,QAAQx5B,IAAIy2xB,GAAKvzsB,KAAK,KAAM,GAC5Fi7Y,UAAqBhyS,GAAG02L,IAAK4za,GAAKvzsB,IAAM78B,GAAO+ya,WACjE3wP,EAASt8C,GAAG61S,kBAEd,OAAO,EAIT,SAAI37a,GAAOmxtB,QAAUif,GAAK5ksB,OAAS81Y,EAAQ91Y,MAAQ,IAC7C42I,GAAYA,EAASlkO,EAAM4nL,GAAG3yK,OAAOi9wB,GAAKvzsB,IAAM78B,GAAO+ya,SAAUq9T,GAAKvzsB,KAAK8+Y,kBACxE,IAMX,YAAqBvid,EAAMgjE,EAAMo0sB,GAC/B,KAAOp3wB,EAAMA,EAAgB,SAARgjE,EAAkBhjE,EAAK2sS,WAAa3sS,EAAK6+c,UAAY,CACxE,GAAI7+c,EAAKq/c,YAAe,OAAO,EAC/B,GAAI+3T,GAA2B,GAAnBp3wB,EAAKg5c,WAAmB,OAAO,EAE7C,OAAO,EAUT,YAA4Bl0d,EAAOkkO,EAAU/rN,GAC3C,IAAIo+F,EAAMv2G,EAAM41D,UACZ6ja,EAAQljX,EAAIkjX,MAEZy4T,GAAOz4T,EACX,IAFYljX,EAAIhhC,MAEF,OAAO,EAErB,GAAIkkZ,EAAMtnH,OAAOooH,YAAa,CAC5B,GAAIpid,GAAQA,EAAK85wB,eAAe,WAAYjyxB,GAASy5d,EAAMk3S,aAAe,EAAK,OAAO,EACtFuhB,GAAOC,GAAc14T,GAEvB,IAAIv+c,GAAOg3wB,IAAQA,GAAKp4T,WACxB,SAAK5+c,KAAS0+c,gBAA2B1+c,MACrCgpN,GACAA,EAASlkO,EAAM4nL,GAAG+wS,aAAaiB,UAAqB55d,EAAMs+W,IAAK4za,GAAKvzsB,IAAMzjE,GAAK25c,WAAW4I,kBACvF,IAGT,YAAuBlE,GACrB,IAAKA,EAAKpnH,OAAOv0W,KAAKy7d,KAAKxG,UAAa,QAASpud,EAAI80d,EAAKjsY,MAAQ,EAAG7oF,GAAK,EAAGA,IAAK,CAChF,GAAI80d,EAAK7/c,MAAMjV,GAAK,EAAK,OAAO80d,EAAKj7G,IAAI5gW,QAAQ67c,EAAKz3a,OAAOr9C,EAAI,IACjE,GAAI80d,EAAKr+c,KAAKzW,GAAG7G,KAAKy7d,KAAKxG,UAAa,MAE1C,OAAO,KAwET,YAAsB0G,GACpB,IAAKA,EAAKpnH,OAAOv0W,KAAKy7d,KAAKxG,UAAa,QAASpud,EAAI80d,EAAKjsY,MAAQ,EAAG7oF,GAAK,EAAGA,IAAK,CAChF,IAAI0tW,EAASonH,EAAKr+c,KAAKzW,GACvB,GAAI80d,EAAK7/c,MAAMjV,GAAK,EAAI0tW,EAAO+hH,WAAc,OAAOqF,EAAKj7G,IAAI5gW,QAAQ67c,EAAK3lb,MAAMnvC,EAAI,IACpF,GAAI0tW,EAAOv0W,KAAKy7d,KAAKxG,UAAa,MAEpC,OAAO,KA0DT,YAAuB7yd,EAAOkkO,GAC5B,IAAI3tH,EAAMv2G,EAAM41D,UACZ6ja,EAAQljX,EAAIkjX,MAEhB,SAAKA,EAAMtnH,OAAOv0W,KAAKy7d,KAAKv3c,OAAS23c,EAAM+4S,WAD7Bj8pB,EAAIsjX,WAEd31P,GAAYA,EAASlkO,EAAM4nL,GAAG42S,WAAW,MAAMf,kBAC5C,IAGT,YAAwBpmd,GACtB,QAAS5S,EAAI,EAAGA,EAAI4S,EAAMq9vB,UAAWjwwB,IAAK,CACxC,IACI7G,EADMyZ,EAAMs+E,KAAKlxF,GACN7G,KACf,GAAIA,EAAK28d,cAAgB38d,EAAKi4wB,mBAAsB,OAAOj4wB,EAE7D,OAAO,KAOT,YAAkBoC,EAAOkkO,GACvB,IAAI3tH,EAAMv2G,EAAM41D,UACZ6ja,EAAQljX,EAAIkjX,MAEhB,IAAKA,EAAMtnH,OAAOv0W,KAAKy7d,KAAKv3c,OAAS23c,EAAM+4S,WAD7Bj8pB,EAAIsjX,SACgD,OAAO,EACzE,IAAI04T,GAAQ94T,EAAMv+c,MAAK,GAAK04B,GAAQ6lb,EAAMo4S,YAAW,GAAKj0wB,GAAO40xB,GAAeD,GAAM5e,eAAe//tB,KACrG,IAAK2+uB,GAAMre,eAAetguB,GAAOA,GAAOh2C,IAAS,OAAO,EACxD,GAAIsmO,EAAU,CACZ,IAAIvlJ,GAAM86Y,EAAM7lb,QAASg0I,GAAK5nL,EAAM4nL,GAAGj1I,YAAYgsC,GAAKA,GAAK/gF,GAAKw6d,iBAClExwS,GAAG+wS,aAAalC,QAAe7uS,GAAG02L,IAAI5gW,QAAQihE,IAAM,IACpDulJ,EAASt8C,GAAG61S,kBAEd,OAAO,EAMT,YAA6Bz9d,EAAOkkO,GAClC,IAAIw0P,EAAM14d,EAAM41D,UACZwha,EAAQsB,EAAItB,MACZC,EAAMqB,EAAIrB,IACd,GAAIqB,aAAe6vT,IAAgBnxT,EAAMjlH,OAAOmga,eAAiBj7S,EAAIllH,OAAOmga,cAAiB,OAAO,EACpG,IAAI10wB,GAAO40xB,GAAen7T,EAAIllH,OAAOwha,eAAet8S,EAAIw6S,eACxD,IAAKj0wB,KAASA,GAAK28d,YAAe,OAAO,EACzC,GAAIr2P,EAAU,CACZ,IAAIhmJ,KAASk5Y,EAAMu5S,cAAgBt5S,EAAI39c,QAAU29c,EAAIllH,OAAO+hH,WAAakD,EAAQC,GAAK14Y,IAClFipG,GAAK5nL,EAAM4nL,GAAGtzG,OAAO4J,GAAMtgF,GAAKw6d,iBACpCxwS,GAAG+wS,aAAad,UAAqBjwS,GAAG02L,IAAKpgS,GAAO,IACpDgmJ,EAASt8C,GAAG61S,kBAEd,OAAO,EAMT,YAAwBz9d,EAAOkkO,GAC7B,IACIk/P,EADMpje,EAAM41D,UACEwta,QAClB,IAAKA,GAAWA,EAAQjxH,OAAOz9V,QAAQowC,KAAQ,OAAO,EACtD,GAAIs+a,EAAQ91Y,MAAQ,GAAK81Y,EAAQxvb,SAAWwvb,EAAQhjc,KAAI,GAAK,CAC3D,IAAI0hB,EAASshb,EAAQthb,SACrB,GAAI2wuB,GAASzyxB,EAAMs+W,IAAKx8T,GACtB,OAAIoiL,GAAYA,EAASlkO,EAAM4nL,GAAG96K,MAAMg1C,GAAQ27a,mBACzC,EAGX,IAAI//Z,GAAQ0la,EAAQgvS,aAAc5zwB,GAASk/D,IAAS4ztB,GAAW5ztB,IAC/D,OAAc,MAAVl/D,KACA0lO,GAAYA,EAASlkO,EAAM4nL,GAAG27lB,KAAK7ltB,GAAOl/D,IAAQi/d,mBAC/C,GAMT,YAAoBz9d,EAAOkkO,GACzB,IAAI3tH,EAAMv2G,EAAM41D,UACZwha,EAAQ7gX,EAAI6gX,MACZC,EAAM9gX,EAAI8gX,IACd,GAAIr3d,EAAM41D,qBAAqBgka,IAAiB55d,EAAM41D,UAAU16C,KAAKkzvB,QACnE,SAAKh3S,EAAMu5S,eAAiB8hB,GAASzyxB,EAAMs+W,IAAK84G,EAAMz4Y,OAClDulJ,GAAYA,EAASlkO,EAAM4nL,GAAG96K,MAAMsqd,EAAMz4Y,KAAK8+Y,kBAC5C,IAGT,IAAKrG,EAAMjlH,OAAOi8Z,QAAW,OAAO,EAEpC,GAAIlqiB,EAAU,CACZ,IAAIukjB,GAAQpxT,EAAIs5S,cAAgBt5S,EAAIllH,OAAOz9V,QAAQowC,KAC/C8iI,GAAK5nL,EAAM4nL,IACX5nL,EAAM41D,qBAAqBiia,IAAiB73d,EAAM41D,qBAAqB2ytB,KAAgB3gmB,GAAGqimB,kBAC9F,IAAIzL,GAAuB,GAAfpnT,EAAM9pY,MAAa,KAAOklsB,GAAep7T,EAAMl8c,MAAK,GAAIy4vB,eAAev8S,EAAMy6S,YAAW,KAChG5kf,GAAQw7f,IAASjK,GAAQ,CAAC,CAAC5gxB,KAAM4gxB,KAAU,KAC3CgP,GAAMiF,GAAS7qmB,GAAG02L,IAAK12L,GAAG3yJ,QAAQx5B,IAAI27d,EAAMz4Y,KAAM,EAAGsuM,IAKzD,IAJKA,KAAUuggB,IAAOiF,GAAS7qmB,GAAG02L,IAAK12L,GAAG3yJ,QAAQx5B,IAAI27d,EAAMz4Y,KAAM,EAAG6/rB,IAAS,CAAC,CAAC5gxB,KAAM4gxB,QACpFvxf,GAAQ,CAAC,CAACrvR,KAAM4gxB,KAChBgP,IAAM,GAEJA,KACF5lmB,GAAG96K,MAAM86K,GAAG3yJ,QAAQx5B,IAAI27d,EAAMz4Y,KAAM,EAAGsuM,KAClCw7f,KAAUrxT,EAAMu5S,cAAgBv5S,EAAMjlH,OAAOv0W,MAAQ4gxB,IAAO,CAC/D,IAAIxhxB,GAAQ4qL,GAAG3yJ,QAAQx5B,IAAI27d,EAAMt1a,UAAW4wuB,GAAS9qmB,GAAG02L,IAAI5gW,QAAQ1gB,IAChEo6d,EAAMl8c,MAAK,GAAIg5vB,eAAewe,GAAOh5wB,QAASg5wB,GAAOh5wB,QAAU,EAAG8kwB,KAClE52lB,GAAGozS,cAAcpzS,GAAG3yJ,QAAQx5B,IAAI27d,EAAMt1a,UAAW08tB,IAGzDt6iB,EAASt8C,GAAG61S,kBAEd,OAAO,EAMT,YAA6Bz9d,EAAOkkO,GAClC,OAAOyujB,GAAW3yxB,EAAOkkO,GAAa,SAAUt8C,GAC9C,IAAI67C,EAAQzjO,EAAMspxB,aAAgBtpxB,EAAM41D,UAAUyha,IAAIs5S,cAAgB3wwB,EAAM41D,UAAUwha,MAAM3zP,QACxFA,GAAS77C,EAAG+gmB,YAAYlljB,GAC5BS,EAASt8C,KAqBb,YAAmB5nL,EAAOkkO,GACxB,OAAIA,GAAYA,EAASlkO,EAAM4nL,GAAG+wS,aAAa,IAAI4vT,GAAavoxB,EAAMs+W,QAC/D,EAoBT,YAAuBt+W,EAAOkyxB,EAAMhujB,GAClC,IAAsD0ujB,GAAMv7wB,GAAxDyqC,EAASowuB,EAAKp4T,WAAYlmb,EAAQs+uB,EAAKn5T,UAC3C,GAAIj3a,EAAOlkD,KAAKy7d,KAAKxG,WAAaj/a,EAAMh2C,KAAKy7d,KAAKxG,UAAa,OAAO,EACtE,GApBF,YAAwB7yd,EAAOu5d,EAAMr1P,GACnC,IAAIpiL,EAASy3a,EAAKO,WAAYlmb,EAAQ2lb,EAAKR,UAAWr/c,GAAQ6/c,EAAK7/c,QACnE,UAAKooC,GAAWlO,GAAUkO,EAAOlkD,KAAKizwB,kBAAkBj9tB,EAAMh2C,UACzDkkD,EAAOptC,QAAQowC,MAAQy0a,EAAKpnH,OAAOi+Z,WAAW12vB,GAAQ,EAAGA,KACxDwqN,GAAYA,EAASlkO,EAAM4nL,GAAG3yK,OAAOskd,EAAK56Y,IAAM78B,EAAO+ya,SAAU0E,EAAK56Y,KAAK8+Y,kBACxE,IAEJlE,EAAKpnH,OAAOi+Z,WAAW12vB,GAAOA,GAAQ,KAAQk6B,EAAM2mb,cAAes4T,GAAQ7yxB,EAAMs+W,IAAKi7G,EAAK56Y,OAE5FulJ,GACAA,EAASlkO,EAAM4nL,GACPo8lB,kBAAkBzqT,EAAK56Y,IAAK78B,EAAOlkD,KAAMkkD,EAAO6xtB,eAAe7xtB,EAAOoya,aACtE32c,KAAKg8c,EAAK56Y,KACV8+Y,kBACL,KAMHq1T,CAAe9yxB,EAAOkyxB,EAAMhujB,GAAa,OAAO,EAEpD,IAAI6ujB,GAAcb,EAAK//a,OAAOi+Z,WAAW8hB,EAAKx4wB,QAASw4wB,EAAKx4wB,QAAU,GACtE,GAAIq5wB,KACCH,IAAQv7wB,GAAQyqC,EAAO6xtB,eAAe7xtB,EAAOoya,aAAaiiT,aAAaviuB,EAAMh2C,QAC9EyZ,GAAM88vB,UAAUye,GAAK,IAAMh/uB,EAAMh2C,MAAMo2wB,SAAU,CACnD,GAAI9viB,EAAU,CAEZ,QADI9jM,GAAM8xvB,EAAKvzsB,IAAM/qC,EAAMihb,SAAUzka,GAAOkoa,QACnC7zd,GAAImuxB,GAAK/2xB,OAAS,EAAG4I,IAAK,EAAGA,KAClC2rD,GAAOkoa,OAAcs6T,GAAKnuxB,IAAGqzD,OAAO,KAAM1H,KAC9CA,GAAOkoa,OAAcx2a,EAAO+Y,KAAKzK,KACjC,IAAIw3H,GAAK5nL,EAAM4nL,GAAGtlI,KAAK,IAAIoguB,GAAkBwP,EAAKvzsB,IAAM,EAAGv+C,GAAK8xvB,EAAKvzsB,IAAKv+C,GAAK,IAAIo4b,EAAMpoa,GAAM,EAAG,GAAIwiuB,GAAK/2xB,QAAQ,IAC/Gm3xB,GAAS5yvB,GAAM,EAAIwyvB,GAAK/2xB,OACxBg3xB,GAAQjrmB,GAAG02L,IAAK00a,KAAWprmB,GAAGrqK,KAAKy1wB,IACvC9ujB,EAASt8C,GAAG61S,kBAEd,OAAO,EAGT,IAAIw1T,GAAWx8T,YAAmBy7T,EAAM,GACpCx0tB,GAAQu1tB,IAAYA,GAAS77T,MAAMg7S,WAAW6gB,GAAS57T,KAAM74d,GAASk/D,IAAS4ztB,GAAW5ztB,IAC9F,GAAc,MAAVl/D,IAAkBA,IAAU0zxB,EAAK5ksB,MACnC,OAAI42I,GAAYA,EAASlkO,EAAM4nL,GAAG27lB,KAAK7ltB,GAAOl/D,IAAQi/d,mBAC/C,EAGT,GAAIs1T,IAAeV,GAAYz+uB,EAAO,SAAS,IAASy+uB,GAAYvwuB,EAAQ,OAAQ,CAElF,QADI0qE,GAAK1qE,EAAQoxuB,GAAS,GAExBA,GAAO33xB,KAAKixH,KACRA,GAAG+tW,aACP/tW,GAAKA,GAAGutW,UAGV,QADIo5T,GAAYv/uB,EAAOw/uB,GAAa,GAC5BD,GAAU54T,YAAa44T,GAAYA,GAAUtre,WAAcure,KACnE,GAAI5mqB,GAAG4jpB,WAAW5jpB,GAAG0nW,WAAY1nW,GAAG0nW,WAAYi/T,GAAUz+wB,SAAU,CAClE,GAAIwvN,EAAU,CAEZ,QADImvjB,GAAQ/6T,QACHg9S,GAAM4d,GAAOr3xB,OAAS,EAAGy5wB,IAAO,EAAGA,KAAS+d,GAAQ/6T,OAAc46T,GAAO5d,IAAKz6sB,KAAKw4tB,KAI5FnvjB,EAHWlkO,EAAM4nL,GAAGtlI,KAAK,IAAIoguB,GAAkBwP,EAAKvzsB,IAAMu0sB,GAAOr3xB,OAAQq2xB,EAAKvzsB,IAAM/qC,EAAMihb,SAC7Cq9T,EAAKvzsB,IAAMy0sB,GAAYlB,EAAKvzsB,IAAM/qC,EAAMihb,SAAWu+T,GACnD,IAAI56T,EAAM66T,GAAOH,GAAOr3xB,OAAQ,GAAI,GAAG,IACtE4he,kBAEhB,OAAO,GAIX,OAAO,EA4KT,cAEE,QADI61T,EAAW,GAAIlpsB,EAAMv3D,UAAUh3B,OAC3BuuF,KAAQkpsB,EAAUlpsB,GAAQv3D,UAAWu3D,GAE7C,OAAO,SAASpqF,EAAOkkO,EAAU/rN,GAC/B,QAAS1T,GAAI,EAAGA,GAAI6uxB,EAASz3xB,OAAQ4I,KACjC,GAAI6uxB,EAAS7uxB,IAAGzE,EAAOkkO,EAAU/rN,GAAS,OAAO,EACrD,OAAO,GAIX,IAAIo6Z,GAAYghX,GAActJ,GAAiBuJ,GAAcC,IACzDC,GAAMH,GAActJ,GA/gBxB,YAAqBjqxB,EAAOkkO,EAAU/rN,GACpC,IACIird,EADMpje,EAAM41D,UACEwta,QAClB,IAAKA,IAAYjrd,GAAQA,EAAK85wB,eAAe,UAAWjyxB,GAChCoje,EAAQutS,aAAevtS,EAAQjxH,OAAOz9V,QAAQowC,MAClE,OAAO,EAEX,IAAIotuB,GAAOyB,GAAavwT,GAGxB,IAAK8uT,GAAQ,OAAO,EAEpB,IAAIt+uB,GAAQs+uB,GAAKn5T,UAEjB,GAAIq5T,GAAcpyxB,EAAOkyxB,GAAMhujB,GAAa,OAAO,EAInD,GAAmC,GAA/Bk/P,EAAQjxH,OAAOz9V,QAAQowC,OACtButuB,GAAYz+uB,GAAO,UAAYgmb,gBAA2Bhmb,KAAS,CACtE,GAAIswL,EAAU,CACZ,IAAIt8C,GAAK5nL,EAAM4nL,GAAGs/lB,YAAY9jT,EAAQthb,SAAUshb,EAAQxvb,SACxDg0I,GAAG+wS,aAAa05T,GAAYz+uB,GAAO,SAAW6ib,YAAmB7uS,GAAG02L,IAAI5gW,QAAQkqK,GAAG3yJ,QAAQx5B,IAAIy2xB,GAAKvzsB,MAAO,GACzFi7Y,UAAqBhyS,GAAG02L,IAAK12L,GAAG3yJ,QAAQx5B,IAAIy2xB,GAAKvzsB,OACnEulJ,EAASt8C,GAAG61S,kBAEd,OAAO,EAIT,SAAI7pb,GAAMq/tB,QAAUif,GAAK5ksB,OAAS81Y,EAAQ91Y,MAAQ,IAC5C42I,GAAYA,EAASlkO,EAAM4nL,GAAG3yK,OAAOi9wB,GAAKvzsB,IAAKuzsB,GAAKvzsB,IAAM/qC,GAAMihb,UAAU4I,kBACvE,KAaX,YAA2Bz9d,EAAOkkO,EAAU/rN,GAC1C,IAAIo+F,EAAMv2G,EAAM41D,UACZ6ja,EAAQljX,EAAIkjX,MAEZy4T,GAAOz4T,EACX,IAFYljX,EAAIhhC,MAEF,OAAO,EACrB,GAAIkkZ,EAAMtnH,OAAOooH,YAAa,CAC5B,GAAIpid,GAAQA,EAAK85wB,eAAe,UAAWjyxB,GAASy5d,EAAMk3S,aAAel3S,EAAMtnH,OAAOz9V,QAAQowC,KAC1F,OAAO,EACXotuB,GAAOyB,GAAal6T,GAEtB,IAAIv+c,GAAOg3wB,IAAQA,GAAKn5T,UACxB,SAAK79c,KAAS0+c,gBAA2B1+c,MACrCgpN,GACAA,EAASlkO,EAAM4nL,GAAG+wS,aAAaiB,UAAqB55d,EAAMs+W,IAAK4za,GAAKvzsB,MAAM8+Y,kBACvE,MAgeLm2T,GAAe,CACjB3ja,MAASsja,GAAcM,GAAeC,GAAqBC,GAAgBpB,IAC3E,YAAaqB,GACbvyY,UAAa8wB,GACb,gBAAiBA,GACjB,kBAAmBA,GACnB7+J,OAAUgghB,GACV,aAAcA,GACd,QAASx0T,IAQP+0T,GAAgB,CAClB,SAAUL,GAAanyY,UACvB,gBAAiBmyY,GAAa,iBAC9B,SAAUA,GAAalghB,OACvB,qBAAsBkghB,GAAa,cACnC,aAAcA,GAAa,cAC3B,QAASA,GAAa,eAExB,QAASjrxB,MAAOirxB,GAAgBK,GAActrxB,IAAOirxB,GAAajrxB,IAGlE,IAOIy/d,IAP0B,oBAAb/tc,UAA2B,MAAMi3Y,KAAKj3Y,UAAUrf,UACxC,oBAANL,IAAqC,UAAjBA,GAAGK,YAMnBi5wB,GAAgBL,GC5qBhC,MCSMM,GAAe,CAACjgW,EAASv6F,EAASvyS,IAAQ,CAACnnD,EAAOkkO,KAC3D,MAAM4lf,GAASomE,GAAWlwxB,GACpB4nL,GAAK5nL,EAAM4nL,GACjBA,GAAGsimB,QAAQ,cAAexwb,GAC1BowX,GAAOpttB,QAAQwe,KACX,GAAIA,GAAKtd,KAAK28d,YAAa,CACvB,IAAIm0T,GACJ,MAAM53vB,GAASm9Z,EAAQ53b,KAAK4rB,IAAKA,GAAE/M,OAASA,GAAKtd,KAAK9C,MACtD,GAAIg8B,GAAQ,CACR,MAAM72B,GAAgB,QAARknD,EAAgBrwB,GAAOk7vB,SAAWl7vB,GAAO72B,MACjDksxB,GAAW,CACbrxxB,KAAMmF,GACNxG,MAAOq9B,GAAOwrB,KAAO,EAAK,GAAExrB,GAAOwrB,OAAOxrB,GAAOyD,OAAS,IAE9D,GAAIrf,GAAK4nN,MAAM7iO,MAAO,CAClB,MAAM87tB,GAAK,IAAIt/X,OAAQ,GAAEx8V,gBAAmB62B,GAAOyD,OAAQ,KACrDljB,GAAQ6D,GAAK4nN,MAAM7iO,MAAMoX,MAAM0ktB,IACrC,GAAI1ktB,GAAO,CACP,IAAI88wB,GAAY15vB,WAAWpjB,GAAM,IAAMyf,GAAOwrB,KAC9C6xuB,GAAYA,IAAa,EAAI,GAAKA,GAClChI,GAAS1yxB,MAAS,GAAE06xB,KAAYA,GAAYr9vB,GAAOyD,KAAO,MAGlEm0vB,GAAW8B,GAAUt1wB,GAAM,CAACixwB,KAE5BuC,IACAqB,GAAgBnomB,GAAI1sK,GAAMA,GAAKtd,KAAM8wxB,OAIjD,MAAMrmxB,GAASu/K,GAAG65lB,WAClB,OAAIp5wB,IACA67N,EAASt8C,GAAG61S,kBAETp1d,IAiBE++d,GAAsB,CAACpne,EAAOg6W,IAChCo6a,GAAap6a,EAAbo6a,CAAuBp0xB,GAErB2ne,GAAuB,CAAC3ne,EAAO49iB,KACxC,MAAMk0O,EAAW9xxB,EAAM4iO,OAAOrrG,MAAMqmb,EAAM+zO,WAAWG,UAE/CD,EAAa7xxB,EAAM4iO,OAAOrrG,MAAMqmb,EAAM+zO,WAAWE,YACjDwC,KAAiB7H,GAFHxsxB,EAAM4iO,OAAOrrG,MAAMqmb,EAAM+zO,WAAWC,aAEI,EAArCpF,CAAwCxsxB,EAAM41D,WAC/D0+tB,KAAiB9H,GAAwBqF,EAAY,EAApCrF,CAAuCxsxB,EAAM41D,WACpE,OAAQy+tB,IAAgBC,KAAiBC,GAAazC,EAAbyC,CAAuBv0xB,IAEvDsne,GAAgB,CAACtne,EAAO49iB,KACjC,MAAMrmb,EAAQv3H,EAAM4iO,OAAOrrG,MACrBu6pB,EAAWv6pB,EAAMgwW,wBACvB,OA7BsB,EAACvne,EAAO49iB,EAAOz2f,KACrC,MAAM2iqB,EAASomE,GAAWlwxB,GAC1B,IAAIqI,GAAS,EACbyhtB,SAAOpttB,QAAQwe,KACX,IAAK7S,GAAU6S,GAAKtd,KAAK28d,aAAer/c,GAAK4nN,MAAM7iO,MAAO,CACtD,MAAM62B,GAAS8mhB,EAAMvhjB,KAAK4rB,IAAKA,GAAE/M,OAASA,GAAKtd,KAAK9C,MAChDg8B,KAGAzuB,EADiB,IAAIo0V,OAAQ,GADmB3lU,GAAO72B,iBACP62B,GAAOyD,OAAQ,KAC7C+2Y,KAAKp2Z,GAAK4nN,MAAM7iO,WAIvCoI,GAgBEmsxB,CAAWx0xB,EAAO49iB,EAAMrmb,QAAUgwW,cAAuB+9F,GAAQ/tc,EAAM+tc,EAAKpqjB,OAASssd,GAAQxne,EAAOu3H,EAAM+tc,EAAKpqjB,WACnHssd,GAAQxne,EAAO8xxB,IAEX/xT,GAAS,CAAC//d,EAAOkkO,KAC1B,MAAM4tjB,EAAW9xxB,EAAM4iO,OAAOrrG,MAAMgwW,wBAC9BktT,EAAoBntT,GAActne,EAAOune,IAC3CH,GAAoBpne,EAAO8xxB,GAC3BsC,GAAatC,EAAbsC,CAAuBp0xB,EAAOkkO,GAEzBuwjB,GACLP,GAAa3sT,SAAb2sT,CAAgCl0xB,EAAOkkO,IAGlCk8P,GAAU,CAACpge,EAAOkkO,KAC3B,MAAM3sG,EAAQv3H,EAAM4iO,OAAOrrG,MACrBu6pB,EAAWv6pB,EAAMqwW,wBACjB6sT,EAAoBntT,GAActne,EAAO4ne,IAC3CJ,GAAQxne,EAAOu3H,EAAMk8V,YDxFC,EAACzzd,EAAOkkO,KAClC,MAAQkzP,QAAOC,OAAQr3d,EAAM41D,UACvBokT,EAAWh6W,EAAM4iO,OAAOrrG,MAAMk8V,WAC9Bn1G,GAAMt+W,EAAMs+W,IAClB,IAAI9/W,IAAS,EACb,MAAMk/D,GAAQ05Z,EAAMg7S,WAAW/6S,GAC3B35Z,IACA4gT,GAAIwvZ,aAAapwsB,GAAM56C,MAAO46C,GAAMt9B,IAAK,CAACllB,GAAMyjE,GAAK0xsB,GAASl2rB,MACtDj/E,GAAKtd,OAASo8W,IACdx7W,GAASmgF,MAKjBulJ,IADsB,IAAX1lO,IAEX0lO,EAASlkO,EAAM4nL,GAAG27lB,KAAK7ltB,GAAO4gT,GAAI5gW,QAAQlf,IAAQ8uF,SC0ElDonsB,CAAe10xB,EAAOkkO,GAErBywjB,GAAyB30xB,EAAO4ne,IACjC2sT,GAAazC,EAAbyC,CAAuBv0xB,EAAOkkO,GAEzBuwjB,GACLP,GAAatsT,SAAbssT,CAAiCl0xB,EAAOkkO,IC9E1C0wjB,GAAoB,CAAChyjB,EAAQiyjB,EAAQC,KAEvC,IAAIt2xB,EAASq2xB,EAAOvnsB,MACpB,MAAMuksB,EAAajvjB,EAAOrrG,MAAMu9pB,EAAcjD,YACxCD,GAAchvjB,EAAOrrG,MAAMu9pB,EAAclD,aACzCE,GAAWlvjB,EAAOrrG,MAAMu9pB,EAAchD,UAC5C,QAASrtxB,GAAIowxB,EAAOvnsB,MAAO7oF,GAAI,EAAGA,KAAK,CACnC,MAAMyW,GAAO25wB,EAAO35wB,KAAKzW,IAIzB,IAHIyW,GAAKtd,OAASi0xB,GAAc32wB,GAAKtd,OAASg0xB,MAC1CpzxB,EAASiG,IAETyW,GAAKtd,OAASi0xB,GAAc32wB,GAAKtd,OAASg0xB,IAAe12wB,GAAKtd,OAASk0xB,GACvE,MAGR,OAAOtzxB,EAAS,GA+BpB,YAA2Bs2xB,GACvB,OAAO,SAAU90xB,EAAOkkO,EAAU/rN,GAC9B,IAAKA,EACD,OAAO,EAGX,MAAM48wB,GADN/0xB,EAAQmY,EAAKnY,OACU4iO,OAAOrrG,MAAMu9pB,EAAc/C,WAC1C36T,SAAOC,QAAQr3d,EAAM41D,UACvBu8S,GAASilH,GAAMl8c,MAAK,GACpB85wB,GAAmB59T,GAAMl8c,MAAK,GAC9B+5wB,GAuDd,YAAuB32a,EAAK84G,EAAOC,EAAKr9G,GAGpC,OAAoG,IAExG,YAAiCsE,EAAK84G,EAAOC,GAEzC,MAAM9/V,EAAQnzH,QACR8wxB,EA2BV,YAA8B52a,EAAK3/R,GAE/B,MAAMw2sB,EAAiB,CAAC,aAAc,aAAc,eACpD,GAAkB,IAAdx2sB,EAAI2O,MACJ,OAAO3O,EAEX,IAAIzjE,EAAOyjE,EAAIzjE,KAAKyjE,EAAI2O,OACpB+uY,EAAS19Y,EACb,KAAOA,EAAI2O,OAAS,GAEhBpyE,GADAyjE,EAAM2/R,EAAI5gW,QAAQihE,EAAI78B,OAAO68B,EAAI2O,SACtBpyE,KAAKyjE,EAAI2O,OAChBpyE,IAAmD,IAA3Ci6wB,EAAev/wB,QAAQsF,EAAKtd,KAAK9C,QACzCuhe,EAAS19Y,GAGjB,OAAO09Y,EA1CU+4T,CAAqB92a,EAAK84G,GAAO9pY,MAClD,IAAInxD,GAAUmiV,EAAI5gW,QAAQ05c,EAAMt0c,MAAMoywB,IACtC,KAAO/4vB,GAAQwiD,KAAO04Y,EAAIv0c,MAAMu0c,EAAI/pY,QAAQ,CACxC,MAAMA,GAAQtqF,KAAKulC,IAAIpM,GAAQmxD,MAAO4nsB,GAChCh6wB,GAAOihB,GAAQjhB,KAAKoyE,IAI1B,GAHIpyE,IACAq8G,EAAMh8H,KAAK2f,IAED,IAAVoyE,GACA,MAEJ,IAAInsF,GAAOm9W,EAAI5gW,QAAQye,GAAQyX,MAAM05C,KACrC,GAAInsF,GAAK2hB,MAAMwqE,KAAUgxR,EAAIu2G,SAAW,EACpC,MAEA1zd,GAAKmsF,QAAUnxD,GAAQmxD,QACvBnsF,GAAOm9W,EAAI5gW,QAAQvc,GAAKw9E,IAAM,IAG9BxiD,GAAUmiV,EAAI5gW,QADdvc,GAAKmsF,MACiBnsF,GAAK2hB,MAAM3hB,GAAKmsF,OAGhBnsF,GAAKi/B,IAAIj/B,GAAKmsF,QAG5C,OAAOiqC,EA9BA89pB,CAAwB/2a,EAAK84G,EAAOC,GAAKx0d,OAAQqY,GAASA,EAAKtd,OAASo8W,GAAUn+W,OA1DzDy5xB,CAAct1xB,EAAMs+W,IAAK84G,GAAOC,GAAK09T,GACjE,OAAM5ib,IAAUA,GAAOv0W,OAASm3xB,GAC3BC,IAAoBA,GAAiBp3xB,OAASm3xB,IAC/CE,GAEOM,GAAcT,EAAdS,CAA6Bv1xB,EAAOkkO,IAItC+wjB,KACDM,GAAcT,EAAdS,CAA6Bv1xB,EAAOkkO,GACpClkO,EAAQmY,EAAKnY,OA0H7B,YAAoBg6W,GAChB,OHoZJ,YAAkBtgB,EAAS87b,GACzB,GAAIpxxB,MAAMqxB,QAAQ+/vB,GAAa,CAC7B,IAAIvogB,EAAQuogB,EACZA,EAAa,SAAUt6wB,GAAQ,OAAO+xQ,EAAMr3Q,QAAQsF,EAAKtd,KAAK9C,OAAQ,GAExE,OAAO,SAAUkF,EAAOkkO,EAAU/rN,IAAQ,OAAOuhV,EAAQ15V,EAAOkkO,GAlDlE,YAA6BA,EAAUsxjB,GACrC,OAAO,SAAU5tmB,GACf,IAAKA,EAAG6hmB,UAAa,OAAOvljB,EAASt8C,GAGrC,QADIsvS,EAAS,GACJzyd,EAAI,EAAGA,EAAImjL,EAAG3yJ,QAAQmsQ,KAAKvlS,OAAQ4I,IAAK,CAE/C,QADIhJ,GAAMmsL,EAAG3yJ,QAAQmsQ,KAAK38R,GACjB6yF,GAAI,EAAGA,GAAI4/X,EAAOr7d,OAAQy7F,KAC/B4/X,EAAO5/X,IAAK77F,GAAIA,IAAIy7d,EAAO5/X,KAC/B77F,GAAIiB,QAAQ,SAAU6jH,GAAI7gH,GAAIw+D,GAAMqlE,IAAM,OAAO2zV,EAAO37d,KAAK2iE,GAAMqlE,MAMrE,QADI8toB,GAAW,GACNiE,GAAM,EAAGA,GAAMp+S,EAAOr7d,OAAQy5wB,IAAO,EAG5C,QAFwB/xoB,GAAK2zV,EAAOo+S,GAAM,GACtCl+S,GAAQxvS,EAAG02L,IAAI5gW,QADRw5c,EAAOo+S,KACgBhorB,GAAQ8pY,GAAM+6S,YAAY5uoB,IAAK4uO,GAASilH,GAAMl8c,KAAKoyE,IAC5E5zE,GAAQ09c,GAAMy6S,WAAWvkrB,IAAQ3O,GAAMy4Y,GAAMxjb,MAAM05C,GAAQ,GAAI3O,IAAO4kD,KAAM7pH,GAAO,CAC1F,IAAIk6B,GAAQu+T,GAAOs8Z,WAAW/0vB,IAC9B,IAAKk6B,GAAS,MACd,GAAIl6B,KAAkC,GAAzB23vB,GAASz7vB,QAAQ+oE,IAAY,CACxC,IAAI78B,GAASqwT,GAAO59S,MAAM76C,GAAQ,GAC9BooC,GAAOlkD,MAAQg2C,GAAMh2C,MAAQ43xB,EAAW1zuB,GAAQlO,KAChDy9tB,GAAS91wB,KAAKojF,IAEpBA,IAAO/qC,GAAMihb,SAIjBw8S,GAASzhwB,KAAK,SAAUqY,GAAGD,IAAK,OAAOC,GAAID,KAC3C,QAASwtvB,GAAMnE,GAASx1wB,OAAS,EAAG25wB,IAAO,EAAGA,KACxCqd,GAAQjrmB,EAAG02L,IAAK+yZ,GAASmE,MAAS5tlB,EAAGrqK,KAAK8zvB,GAASmE,KAEzDtxiB,EAASt8C,IAgBiE6tmB,CAAoBvxjB,EAAUsxjB,GAAar9wB,KGzZ9Gu9wB,CN/IX,YAAoB3D,EAAUjvjB,GAC5B,OAAO,SAAS9iO,EAAOkkO,GACrB,IAAI3tH,EAAMv2G,EAAM41D,UACZwha,GAAQ7gX,EAAI6gX,MACZC,GAAM9gX,EAAI8gX,IACV35Z,GAAQ05Z,GAAMg7S,WAAW/6S,IAAMs+T,IAAS,EAAOC,GAAal4tB,GAChE,IAAKA,GAAS,OAAO,EAErB,GAAIA,GAAM4vB,OAAS,GAAK8pY,GAAMl8c,KAAKwiD,GAAM4vB,MAAQ,GAAG1vF,KAAKizwB,kBAAkBkhB,IAAiC,GAApBr0tB,GAAM29B,WAAiB,CAE7G,GAAoC,GAAhC+7X,GAAM19c,MAAMgkD,GAAM4vB,MAAQ,GAAW,OAAO,EAChD,IAAIuosB,GAAU71xB,EAAMs+W,IAAI5gW,QAAQggD,GAAM56C,MAAQ,GAC9C8ywB,GAAa,IAAIrjB,GAAUsjB,GAASA,GAASn4tB,GAAM4vB,OAC/C5vB,GAAMqmd,SAAWrmd,GAAMy0S,OAAO+hH,aAC9Bx2Z,GAAQ,IAAI60sB,GAAUn7S,GAAOp3d,EAAMs+W,IAAI5gW,QAAQ25c,GAAIj3b,IAAIs9B,GAAM4vB,QAAS5vB,GAAM4vB,QAChFqosB,IAAS,EAEX,IAAIvluB,GbmlBR,YAAsBsN,EAAOs8S,EAAUl3I,EAAOgzjB,QACxB,IAAfA,IAAwBA,EAAap4tB,GAE1C,IAAIq4tB,EAQN,YAA6Br4tB,EAAO9/D,GAClC,IAAIu0W,EAASz0S,EAAMy0S,OACf92Q,EAAa39B,EAAM29B,WACnB0ob,EAAWrmd,EAAMqmd,SACjBgyQ,GAAS5jb,EAAOwha,eAAet4qB,GAAY86qB,aAAav4wB,GAC5D,OAAKm4xB,IAEE5jb,EAAO+ha,eAAe74qB,EAAY0ob,EAD7BgyQ,GAAOl6xB,OAASk6xB,GAAO,GAAKn4xB,GACoBm4xB,GAFtC,KAbTC,CAAoBt4tB,EAAOs8S,GACpCxiV,GAAQu+vB,GAiBd,YAA4Br4tB,EAAO9/D,GACjC,IAAIu0W,EAASz0S,EAAMy0S,OACf92Q,EAAa39B,EAAM29B,WACnB0ob,EAAWrmd,EAAMqmd,SACjBvsf,GAAQ26U,EAAO59S,MAAM8mC,GACrB46rB,GAASr4xB,EAAKg2wB,aAAauC,aAAa3+uB,GAAM55B,MAClD,IAAKq4xB,GAAU,OAAO,KAGtB,QADIC,IADWD,GAAOp6xB,OAASo6xB,GAAOA,GAAOp6xB,OAAS,GAAK+B,GACjCg2wB,aACjBnvwB,GAAI42F,EAAY66rB,IAAczxxB,GAAIs/gB,EAAUt/gB,KACjDyxxB,GAAaA,GAAW/hB,UAAUhia,EAAO59S,MAAM9vD,IAAG7G,MACtD,OAAKs4xB,IAAeA,GAAWliB,SACxBiiB,GAD2C,KA5B5BE,CAAmBL,EAAY97a,GACrD,OAAKxiV,GACEu+vB,EAAOt6xB,IAAI26xB,IAAW3svB,OAAO,CAAC7rC,KAAMo8W,EAAUl3I,MAAOA,IAAQr5L,OAAOjS,GAAM/7B,IAAI26xB,KADhE,KaxlBRjgB,CAAayf,GAAY7D,EAAUjvjB,EAAOplK,IACrD,QAAKtN,KACD8zK,GAAYA,EAKpB,YAAsBt8C,EAAIlqH,EAAOmmtB,EAAUwS,EAAYtE,GAErD,QADIr9wB,GAAU4jd,QACL7zd,GAAIo/wB,EAAShoxB,OAAS,EAAG4I,IAAK,EAAGA,KACtCiQ,GAAU4jd,OAAcurT,EAASp/wB,IAAG7G,KAAKk6D,OAAO+rtB,EAASp/wB,IAAGq+N,MAAOpuN,KAEvEkzK,EAAGtlI,KAAK,IAAIoguB,GAAkBhltB,EAAM56C,OAASuzwB,EAAa,EAAI,GAAI34tB,EAAMt9B,IAAKs9B,EAAM56C,MAAO46C,EAAMt9B,IAClE,IAAIo4b,EAAM9jd,GAAS,EAAG,GAAImvwB,EAAShoxB,QAAQ,IAGzE,QADIijE,GAAQ,EACHw2sB,GAAM,EAAGA,GAAMuO,EAAShoxB,OAAQy5wB,KAAauO,EAASvO,IAAK13wB,MAAQm0xB,IAAYjztB,GAAQw2sB,GAAM,GAItG,QAHIghB,GAAazS,EAAShoxB,OAASijE,GAE/By3tB,GAAW74tB,EAAM56C,MAAQ+gwB,EAAShoxB,QAAUw6xB,EAAa,EAAI,GAAIlkb,GAASz0S,EAAMy0S,OAC3Eqja,GAAM93sB,EAAM29B,WAAYt8F,GAAI2+D,EAAMqmd,SAAU/mhB,IAAQ,EAAMw4wB,GAAMz2wB,GAAGy2wB,KAAOx4wB,IAAQ,GACpFA,IAASy1xB,GAAS7qmB,EAAG02L,IAAKi4a,GAAUD,MACvC1umB,EAAG96K,MAAMypxB,GAAUD,IACnBC,IAAY,EAAID,IAElBC,IAAYpkb,GAAO59S,MAAMihtB,IAAK3gT,SAEhC,OAAOjtS,EAzBoB4umB,CAAax2xB,EAAM4nL,GAAIlqH,GAAOtN,GAAMuluB,GAAQ5D,GAAUt0T,mBACxE,IM2HSg5T,CAAaz8a,GAAW,CAACl4T,EAAQlO,IAAUkO,EAAOlkD,OAASg2C,EAAMh2C,MAAQkkD,EAAOlkD,OAASo8W,GAzH1F08a,CAAW3B,EAAX2B,CAAqB12xB,EAAOkkO,KAI/C,YAAsBlkO,EAAO41D,EAAWgyH,EAAIoyL,GACnCA,IACDA,EAAWh6W,EAAM4iO,OAAOrrG,MAAMu6pB,UAElC,IAAM16T,QAAOC,QAAQzha,EACjB8H,GAAQ05Z,EAAMg7S,WAAW/6S,GAAKn8c,IAAQA,GAAKg5c,YAAch5c,GAAK2sS,WAAWjqT,OAASo8W,GACtF,IAAKt8S,IAASA,GAAM4vB,MAAQ,GAAK8pY,EAAMl8c,KAAKwiD,GAAM4vB,MAAQ,GAAG1vF,OAASo8W,EAClE,OAAOpyL,EAEX,IAAIxnJ,GAAMs9B,GAAMt9B,IACZixvB,GAAYh6T,GAAIj3b,IAAIs9B,GAAM4vB,OAC9B,OAAIltD,GAAMixvB,KACNzpmB,EAAGtlI,KAAK,IAAIoguB,GAAkBtivB,GAAM,EAAGixvB,GAAWjxvB,GAAKixvB,GAAW,IAAI74T,EAAMF,OAAct+G,EAASliT,YAAO78D,EAAWyiE,GAAMy0S,OAAOt3S,SAAU,EAAG,GAAI,GAAG,IACtJ6C,GAAQ,IAAI60sB,GAAU3qlB,EAAG02L,IAAI5gW,QAAQ05c,EAAMz4Y,KAAMipG,EAAG02L,IAAI5gW,QAAQ2zwB,IAAY3ztB,GAAM4vB,QAE/Es6F,EAAG27lB,KAAK7ltB,GAAO4ztB,GAAW5ztB,KAAQ+/Z,iBA2E7C,YAAuBq3T,GACnB,OAAO,SAAU90xB,EAAOkkO,GACpB,MAAQt8C,MAAO5nL,GACPo3d,QAAOC,QAAQr3d,EAAM41D,UAC7BgyH,SAAG02L,IAAIwvZ,aAAa12S,EAAMz4Y,IAAK04Y,GAAI14Y,IAAK,CAACzjE,GAAMyjE,MAG3C,GAAIzjE,GAAKq/c,aAAkC,eAAnBr/c,GAAKtd,KAAK9C,MAA4C,QAAnBogB,GAAKtd,KAAK9C,KAAgB,CACjF,MAAM49d,GAAM,IAAIkB,GAAchyS,EAAG02L,IAAI5gW,QAAQkqK,EAAG3yJ,QAAQx5B,IAAIkjF,MACtDjhB,GAAQg7Z,GAAItB,MAAMg7S,WAAW15S,GAAIrB,KACvC,IAAK35Z,IAASg7Z,GAAItB,MAAMjlH,OAAOv0W,OAASoC,EAAM4iO,OAAOrrG,MAAMu9pB,EAAchD,UACrE,OAAO,EAEX,MAAMtzxB,GAASk/D,IAAS4ztB,GAAW5ztB,IACnC,GAAuC,MAAnCl/D,GACA,OAAO,EAEXopL,EAAG27lB,KAAK7ltB,GAAOl/D,OAGnB0lO,GACAA,EAASt8C,IAEN,GAMR,MAAM+umB,GAAa,CAAC32xB,EAAOkkO,EAAU/rN,EAAM28wB,EAAep7b,KAC7D,MAAQq4b,aAAa+C,GACbl/tB,cAAc51D,EAChB4lI,GAAWhwE,GAAUwha,MAAMl8c,KAAK06C,GAAUwha,MAAM9pY,MAAQ,GACxDspsB,GAAUhhuB,GAAUyha,IAAIn8c,KAAK06C,GAAUyha,IAAI/pY,MAAQ,GACzD,IAAKs4C,IAAYA,GAAShoI,KAAK9C,OAASi3xB,KAAc6E,IAAWA,GAAQh5xB,KAAK9C,OAASi3xB,GACnF,OAAO8E,GAAkB/B,EAAlB+B,CAAiC72xB,EAAOkkO,EAAU/rN,GAExD,CACD,MAAMo/G,GAAQp/G,EAAKnY,MAAM4iO,OAAOrrG,MAC1Bu/pB,GAAY,CACdjF,WAAYt6pB,GAAMu9pB,EAAcjD,YAChCD,YAAar6pB,GAAMu9pB,EAAclD,aACjCE,SAAUv6pB,GAAMu9pB,EAAchD,WAE5BxksB,GA9NQ,EAAC3O,EAAK44C,KAExB,MAAQs6pB,aAAYD,cAAaE,YAAav6pB,EAC9C,IAAIjqC,GACJ,QAAS7oF,GAAIk6E,EAAI2O,MAAQ,EAAG7oF,GAAI,EAAGA,KAAK,CACpC,MAAMyW,GAAOyjE,EAAIzjE,KAAKzW,IAItB,IAHIyW,GAAKtd,OAASi0xB,GAAc32wB,GAAKtd,OAASg0xB,KAC1CtksB,GAAQ7oF,IAERyW,GAAKtd,OAASi0xB,GAAc32wB,GAAKtd,OAASg0xB,GAAe12wB,GAAKtd,OAASk0xB,EACvE,MAGR,OAAOxksB,IAiNWypsB,CAAcnhuB,GAAUyha,IAAKy/T,IAC3C,IAAIlvmB,GAtHZ,YAA2B5nL,EAAOk+D,EAAMqlE,EAAIyzpB,EAAkBpvmB,EAAIkqmB,IAEzDA,KACDA,GAAW9xxB,EAAM4iO,OAAOrrG,MAAMu6pB,UAElC,IAAImF,IAAS,EACbrvmB,SAAG02L,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAI,CAACroH,GAAMyjE,MACjC,IAAKs4sB,IAAU/7wB,GAAKtd,OAASk0xB,IAAYnzsB,GAAMzgB,EAAM,CACjD+4tB,IAAS,EACT,IAAIC,GAAYF,EAAmB,EACnC,KAAOE,GAAYF,EAAmB,GAAG,CACrC,MAAMl0wB,GAAQ8kK,EAAG02L,IAAI5gW,QAAQkqK,EAAG3yJ,QAAQx5B,IAAIkjF,KAC5Cu4sB,GAAYp0wB,GAAMwqE,MAClB,MAAMltD,GAAMwnJ,EAAG02L,IAAI5gW,QAAQkqK,EAAG3yJ,QAAQx5B,IAAIkjF,GAAMzjE,GAAK4wW,YAAYjwX,SAC3D68d,GAAM,IAAIb,GAAc/0c,GAAOsd,IACrCwnJ,EAAK2smB,GAAav0xB,EAAO04d,GAAK9wS,EAAIkqmB,QAIvClqmB,EAmGMuvmB,CAAkBn3xB,EAAO41D,GAAUyha,IAAI14Y,IAAK/oB,GAAUyha,IAAIj3b,IAAIktD,IAAQA,GAAOn1E,EAAKnY,MAAM4nL,GAAIkvmB,GAAUhF,UAC/GlqmB,UAhMR,YAA2B5nL,EAAO4nL,EAAIktmB,GAElC,MAAQ52tB,OAAMqlE,MAAOvjI,EAAM41D,WACnB26tB,aAAWrnf,YAAYlpS,EAAM4iO,OAAOrrG,MACtC6/pB,GAAU,GAChBxvmB,EAAG02L,IAAIwvZ,aAAa5vsB,EAAMqlE,EAAI,CAACroH,GAAMyjE,OAC7BzjE,GAAKtd,OAAS2yxB,IAAar1wB,GAAKtd,OAASsrS,KACzCkuf,GAAQ77xB,KAAK,CAAE2f,QAAMyjE,WAG7B,QAASl6E,GAAI2yxB,GAAQv7xB,OAAS,EAAG4I,IAAK,EAAGA,KAAK,CAC1C,MAAM8mtB,GAAQ6rE,GAAQ3yxB,IAChBqe,GAAQ8kK,EAAG02L,IAAI5gW,QAAQkqK,EAAG3yJ,QAAQx5B,IAAI8vtB,GAAM5soB,MAClD,GAAI77D,GAAMwqE,MAAQ,EAAG,CACjB,IAAIltD,GAEAA,GAAMwnJ,EAAG02L,IAAI5gW,QAAQkqK,EAAG3yJ,QAAQx5B,IADhC8vtB,GAAMrwsB,KAAK4wW,aAAey/V,GAAMrwsB,KAAK4wW,YAAYjwX,OAAS,EACtB0vtB,GAAM5soB,IAAM4soB,GAAMrwsB,KAAK4wW,YAAYjwX,OAGnC0vtB,GAAM5soB,IAAM,IAEpD,MAAMjhB,GAAQ56C,GAAMsvvB,WAAWhyuB,IAC3Bs9B,IACAkqH,EAAG27lB,KAAK7ltB,GAAOk3tB,GAAkB50xB,EAAM4iO,OAAQ9/M,GAAOgywB,KAIlE,OAAOltmB,EAqKEyvmB,CAAkBr3xB,EAAO4nL,GAAIktmB,GAClCltmB,GAAGsimB,QAAQ,cAAexwb,GAC1Bx1H,EAASt8C,KACF,IAGR,YAA6B5nL,EAAOkkO,EAAU/rN,GACjD,OAAOw+wB,GAAW32xB,EAAOkkO,EAAU/rN,EAAMxc,OAAOw0D,OAAO,CAAE4huB,SAAUuF,aAA+BA,WAE/F,YAA2Bt3xB,EAAOkkO,EAAU/rN,GAC/C,OAAOw+wB,GAAW32xB,EAAOkkO,EAAU/rN,EAAMxc,OAAOw0D,OAAO,CAAE4huB,SAAUwF,aAAgCA,WAEhG,MClPDt3xB,GAAQ,CAACnF,EAAMrB,KACV,CAAEqB,KAAMA,EAAMrB,MAAOA,IAEnBgme,GAAiB,CAC1B,CAAEvkd,KAAM,YAAajb,MAAO,CAACA,GAAM,aAAc,UACjD,CAAEib,KAAM,UAAWjb,MAAO,CAACA,GAAM,aAAc,WAEtC0/d,GAAkB,CAC3B,CAAEzkd,KAAM,YAAajb,MAAO,CAACA,GAAM,aAAc,WACjD,CAAEib,KAAM,UAAWjb,MAAO,CAACA,GAAM,aAAc,YAEtCo/d,GAAmB,CAC5B,CAAEnkd,KAAM,YAAajb,MAAO,CAACA,GAAM,aAAc,YACjD,CAAEib,KAAM,UAAWjb,MAAO,CAACA,GAAM,aAAc,aAEtCs/d,GAAoB,CAC7B,CAAErkd,KAAM,YAAajb,MAAO,CAACA,GAAM,aAAc,aACjD,CAAEib,KAAM,UAAWjb,MAAO,CAACA,GAAM,aAAc,cAEtC29d,GAAmB,CAC5B,CAAE1id,KAAM,YAAajb,MAAO,CAACA,GAAM,aAAc,MACjD,CAAEib,KAAM,UAAWjb,MAAO,CAACA,GAAM,aAAc,OCuEnD,QA5FW8M,GAAO,CAChB,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,UACJ,GAAI,QACJ,GAAI,QACJ,GAAI,UACJ,GAAI,MACJ,GAAI,WACJ,GAAI,SACJ,GAAI,IACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,YACJ,GAAI,UACJ,GAAI,aACJ,GAAI,YACJ,GAAI,cACJ,GAAI,SACJ,GAAI,SACJ,GAAI,IACJ,GAAI,IACJ,GAAI,OACJ,GAAI,OACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,UACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,MACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,KAGI0yE,GAAQ,CACjB,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGHqwoB,GAA6B,oBAAbz1rB,WAA4B,gBAAgBqiU,KAAKriU,UAAUvf,WAC3Ew0sB,GAA6B,oBAAbj1rB,WAA4B,iBAAiBi3Y,KAAKj3Y,UAAUm9vB,QAC5EC,GAA4B,oBAAbp9vB,WAA4B,aAAai3Y,KAAKj3Y,UAAUvf,WACvE48wB,GAA0B,oBAAbr9vB,WAA4B,MAAMi3Y,KAAKj3Y,UAAUrf,UAC9Du8qB,GAAyB,oBAAbl9pB,WAA4B,gDAAgDqiU,KAAKriU,UAAUvf,WACvG68wB,GAAsB7nE,KAAW4nE,KAAQ5nE,GAAO,GAAK,KAAO2nE,IAASC,GAGhEjzxB,GAAI,EAAGA,GAAI,GAAIA,KAAKsI,GAAK,GAAKtI,IAAKsI,GAAK,GAAKtI,IAAKqkB,OAAOrkB,IAGlE,IAASA,GAAI,EAAGA,IAAK,GAAIA,KAAKsI,GAAKtI,GAAI,KAAO,IAAMA,GAGpD,IAASA,GAAI,GAAIA,IAAK,GAAIA,KACxBsI,GAAKtI,IAAKqkB,OAAOC,aAAatkB,GAAI,IAClCg7E,GAAMh7E,IAAKqkB,OAAOC,aAAatkB,IAIjC,QAASqd,MAAQ/U,GAAW0yE,GAAMt9C,eAAergB,MAAO29D,GAAM39D,IAAQ/U,GAAK+U,KCnG3E,IAAI41wB,GAA0B,oBAAbr9vB,WAA2B,MAAMi3Y,KAAKj3Y,UAAUrf,UAEjE,YAA0BlgB,GACxB,IAAI03T,EAAQ13T,EAAKgS,MAAM,UAAWzE,EAASmqT,EAAMA,EAAM32T,OAAS,GAClD,SAAVwM,IAAqBA,EAAS,KAElC,QADIkqC,EAAK0jZ,EAAMx2W,GAAO/xE,GACbjJ,GAAI,EAAGA,GAAI+tT,EAAM32T,OAAS,EAAG4I,KAAK,CACzC,IAAI0rb,GAAM39H,EAAM/tT,IAChB,GAAI,kBAAkB6sa,KAAK6e,IAAQzib,IAAO,UACjC,YAAY4ja,KAAK6e,IAAQ59Y,GAAM,UAC/B,sBAAsB++X,KAAK6e,IAAQ8F,GAAO,UAC1C,cAAc3kB,KAAK6e,IAAQ1wW,IAAQ,WACnC,SAAS6xV,KAAK6e,IAChB,MAAM,IAAI5jb,MAAM,+BAAiC4jb,IADrBunW,GAAOhqxB,IAAO,EAAeuob,GAAO,GAGzE,OAAI1jZ,IAAOlqC,EAAS,OAASA,GACzB4tb,IAAQ5tb,EAAS,QAAUA,GAC3BqF,KAAQrF,EAAS,QAAUA,GAC3Bo3E,KAASp3E,EAAS,SAAWA,GAC1BA,EAST,YAAmBvN,EAAM2I,EAAOg8E,GAC9B,OAAIh8E,EAAMkvX,SAAU73X,EAAO,OAASA,GAChC2I,EAAMi4D,UAAW5gE,EAAO,QAAUA,GAClC2I,EAAMgia,UAAW3qa,EAAO,QAAUA,IACxB,IAAV2kF,GAAmBh8E,EAAMgja,WAAY3ra,EAAO,SAAWA,GACpDA,EAiCT,YAAgB88xB,GACd,OAAO,IAAIzzjB,GAAO,CAACjrF,MAAO,CAACi0Q,cAAeooJ,GAAeqiP,MAO3D,YAAwBA,GACtB,IAAIn8xB,EArDN,YAAmBA,GACjB,IAAIo/D,EAAOl/D,OAAOm8D,OAAO,MACzB,QAAStS,KAAQ/pD,EAAOo/D,EAAKg9tB,GAAiBryuB,IAAS/pD,EAAI+pD,GAC3D,OAAOqV,EAkDGuqV,CAAUwyY,GACpB,OAAO,SAASz/wB,EAAM1U,GACpB,IAAqEq0xB,GAAjEh9xB,EDwBD,YAAiB2I,GAGtB,IAEI3I,IAFY68xB,KAAwBl0xB,EAAMi4D,SAAWj4D,EAAMkvX,QAAUlvX,EAAMgia,WAC5E6pT,IAAU/3B,KAAO9zrB,EAAMgja,UAAYhja,EAAMkF,KAA2B,GAApBlF,EAAMkF,IAAI9M,SACnC4H,EAAMkF,MAC7BlF,EAAMgja,SAAWhnV,GAAQ1yE,IAAMtJ,EAAMwnX,UACtCxnX,EAAMkF,KAAO,eAEf,MAAY,OAAR7N,IAAeA,EAAO,UACd,OAARA,IAAeA,EAAO,UAEd,QAARA,IAAgBA,EAAO,aACf,MAARA,IAAcA,EAAO,WACb,SAARA,IAAiBA,EAAO,cAChB,QAARA,IAAgBA,EAAO,aACpBA,ECxCMi9xB,CAAQt0xB,GAAQu0xB,GAAwB,GAAfl9xB,EAAKe,QAAuB,KAARf,EACpDm9xB,GAASx8xB,EAAI4qa,GAAUvra,EAAM2I,GAAQu0xB,KACzC,GAAIC,IAAUA,GAAO9/wB,EAAKnY,MAAOmY,EAAK+rN,SAAU/rN,GAAS,OAAO,EAChE,GAAI6/wB,KAAWv0xB,EAAMgja,UAAYhja,EAAMkvX,QAAUlvX,EAAMgia,SAAW3qa,EAAK4sO,WAAW,GAAK,OAClFowjB,GAAW/qxB,GAAKtJ,EAAMwnX,WAAa6sa,IAAYh9xB,EAAM,CAKxD,IAAIo9xB,GAAWz8xB,EAAI4qa,GAAUyxX,GAAUr0xB,GAAO,IAC9C,GAAIy0xB,IAAYA,GAAS//wB,EAAKnY,MAAOmY,EAAK+rN,SAAU/rN,GAAS,OAAO,UAC3D6/wB,IAAUv0xB,EAAMgja,SAAU,CAGnC,IAAI0xX,GAAY18xB,EAAI4qa,GAAUvra,EAAM2I,GAAO,IAC3C,GAAI00xB,IAAaA,GAAUhgxB,EAAKnY,MAAOmY,EAAK+rN,SAAU/rN,GAAS,OAAO,EAExE,OAAO,GC/FX,IAAI9P,GAAS,GAEb,GAAwB,oBAAbgyB,WAA+C,oBAAZ5iB,SAAyB,CACrE,IAAI2gxB,GAAU,cAAc17b,KAAKriU,UAAUvf,WACvCu9wB,GAAY,UAAU/mX,KAAKj3Y,UAAUvf,WACrCw9wB,GAAU,wCAAwC57b,KAAKriU,UAAUvf,WAErEzS,GAAOqvxB,IAAM,MAAMpmX,KAAKj3Y,UAAUrf,UAClC,IAAIu8qB,GAAKlvrB,GAAOkvrB,MAAQ8gG,IAAaC,IAAWF,IAChD/vxB,GAAOkwxB,WAAaF,GAAY5gxB,SAAS04sB,cAAgB,EAAImoE,IAAWA,GAAQ,GAAKF,IAAWA,GAAQ,GAAK,KAC7G/vxB,GAAOovxB,OAASlgG,IAAM,gBAAgBjmR,KAAKj3Y,UAAUvf,WACrDzS,GAAOmwxB,cAAgBnwxB,GAAOovxB,SAAW,iBAAiB/6b,KAAKriU,UAAUvf,YAAc,CAAC,EAAG,IAAI,GAC/F,IAAIg1sB,IAAUv4B,IAAM,gBAAgB76V,KAAKriU,UAAUvf,WACnDzS,GAAOyntB,SAAWA,GAClBzntB,GAAOowxB,eAAiB3oE,KAAWA,GAAO,GAE1CzntB,GAAOintB,QAAU/3B,IAAM,iBAAiBjmR,KAAKj3Y,UAAUm9vB,QACvDnvxB,GAAO+mtB,IAAM/mtB,GAAOintB,SAAW,cAAch+S,KAAKj3Y,UAAUvf,YAAcuf,UAAUC,eAAiB,GACrGjyB,GAAOmmtB,QAAU,aAAal9S,KAAKj3Y,UAAUvf,WAC7CzS,GAAOqooB,OAAS,wBAAyBj5nB,SAASmjB,gBAAgB36B,MAClEoI,GAAOqwxB,eAAiBrwxB,GAAOqooB,UAAY,uBAAuBh0S,KAAKriU,UAAUvf,YAAc,CAAC,EAAG,IAAI,GAGzG,IAAI69wB,GAAW,SAASz9wB,GACtB,QAASxB,EAAQ,GAAIA,IAEnB,KADAwB,EAAOA,EAAKwhwB,iBACC,OAAOhjwB,GAIpB6pI,GAAa,SAASroI,GACxB,IAAIi3V,EAASj3V,EAAK09wB,cAAgB19wB,EAAKqoI,WACvC,OAAO4uN,GAA6B,IAAnBA,EAAO6H,SAAiB7H,EAAOv7K,KAAOu7K,GAGrD0mb,EAAc,KAKdC,EAAY,SAAS59wB,EAAMgjD,EAAMqlE,GACnC,IAAI7lE,EAAQm7tB,IAAgBA,EAAcphxB,SAAS87rB,eACnD71oB,SAAMm3qB,OAAO35tB,EAAY,MAANqoH,EAAaroH,EAAKshwB,UAAU3gxB,OAAS0nI,GACxD7lE,EAAM2irB,SAASnluB,EAAMgjD,GAAQ,GACtBR,GAMLq7tB,EAAuB,SAAS79wB,EAAMkW,EAAK4nwB,EAAYC,GACzD,OAAOD,IAAeE,EAAQh+wB,EAAMkW,EAAK4nwB,EAAYC,GAAW,IAC1CC,EAAQh+wB,EAAMkW,EAAK4nwB,EAAYC,EAAW,KAG9DE,GAAe,gCAEnB,WAAiBj+wB,EAAMkW,EAAK4nwB,EAAYC,EAAW9xuB,GACjD,OAAS,CACP,GAAIjsC,GAAQ89wB,GAAc5nwB,GAAO6nwB,EAAa,OAAO,EACrD,GAAI7nwB,IAAQ+1B,EAAM,EAAI,EAAI0ta,GAAS35c,IAAQ,CACzC,IAAIi3V,GAASj3V,EAAKqoI,WAClB,GAAuB,GAAnB4uN,GAAO6H,UAAiBo/a,GAAal+wB,IAASi+wB,GAAa7nX,KAAKp2Z,EAAKq1C,WAAqC,SAAxBr1C,EAAKm+wB,gBACvF,OAAO,EACXjowB,EAAMunwB,GAASz9wB,IAASisC,EAAM,EAAI,EAAI,GACtCjsC,EAAOi3V,WACmB,GAAjBj3V,EAAK8+V,SAKd,OAAO,EAHP,GAA4B,UAD5B9+V,EAAOA,EAAK65jB,WAAW3jjB,GAAO+1B,EAAM,GAAI,EAAK,KACpCkyuB,gBAA8B,OAAO,EAC9CjowB,EAAM+1B,EAAM,EAAI0ta,GAAS35c,GAAQ,IAOvC,YAAkBA,GAChB,OAAwB,GAAjBA,EAAK8+V,SAAgB9+V,EAAKshwB,UAAU3gxB,OAASqf,EAAK65jB,WAAWl5kB,OActE,YAAsBsnO,GAEpB,QADIq7U,EACKygN,EAAM97hB,EAAK87hB,KAAiCzgN,EAAOygN,EAAIq6B,YAAvCr6B,EAAMA,EAAI17mB,YACnC,OAAOi7Z,GAAQA,EAAKtjiB,MAAQsjiB,EAAKtjiB,KAAKkzvB,UAAY5vN,EAAKr7U,KAAOA,GAAOq7U,EAAKo/N,YAAcz6iB,GAK1F,IAAIo2jB,GAAqB,SAASC,GAChC,IAAIttM,EAAYstM,EAAO3gM,YACvB,OAAI3M,GAAa7jlB,GAAOyntB,QAAU0pE,EAAOC,aAAeD,EAAOE,WAAW,GAAGxtM,YACzEA,GAAY,GACTA,GAGT,YAAkBjhO,EAAStiX,GACzB,IAAIlF,EAAQgU,SAASkixB,YAAY,SACjCl2xB,SAAMm2xB,UAAU,WAAW,GAAM,GACjCn2xB,EAAMwnX,QAAUA,EAChBxnX,EAAMkF,IAAMlF,EAAMqe,KAAOnZ,EAClBlF,EAGT,YAAoB66W,GAClB,MAAO,CAACp5S,KAAM,EAAGE,MAAOk5S,EAAI1jV,gBAAgB+0T,YACpC1rO,IAAK,EAAGu7M,OAAQ8+C,EAAI1jV,gBAAgB+jN,cAG9C,YAAiBllP,EAAOykF,GACtB,MAAuB,iBAATzkF,EAAoBA,EAAQA,EAAMykF,GAGlD,YAAoBhjE,GAClB,IAAI84T,EAAO94T,EAAK+jT,wBAKhB,MAAO,CAAC/5P,KAAM8uQ,EAAK9uQ,KAAME,MAAO4uQ,EAAK9uQ,KAAOhqD,EAAKy0U,aAHnC3b,EAAKxnU,MAAQ0O,EAAKmgJ,aAAgB,GAIxCp3C,IAAK+vN,EAAK/vN,IAAKu7M,OAAQwU,EAAK/vN,IAAM/oG,EAAKyjO,cAHjCq1F,EAAK3zU,OAAS6a,EAAKwhC,cAAiB,IA2DpD,YAAqBymL,GAEnB,QADIhoN,EAAQ,GAAImjW,EAAMn7I,EAAIgvT,cACnBhvT,IACLhoN,EAAM5f,KAAK,CAAC4nO,IAAKA,EAAKl/G,IAAKk/G,EAAI0iK,UAAW3gU,KAAMi+J,EAAIyiK,aAChDziK,GAAOm7I,GAFDn7I,EAAM5/E,GAAW4/E,IAI7B,OAAOhoN,EAcT,YAA4BA,EAAO0+wB,GACjC,QAASp1xB,EAAI,EAAGA,EAAI0W,EAAMtf,OAAQ4I,IAAK,CACrC,IAAI8xG,EAAMp7F,EAAM1W,GACZ0+N,EAAM5sH,EAAI4sH,IACVl/G,GAAM1N,EAAI0N,IACV/+C,GAAOqxC,EAAIrxC,KACXi+J,EAAI0iK,WAAa5hR,GAAM41qB,IAAQ12jB,EAAI0iK,UAAY5hR,GAAM41qB,GACrD12jB,EAAIyiK,YAAc1gU,KAAQi+J,EAAIyiK,WAAa1gU,KAInD,IAAI40tB,GAAyB,KAoB7B,YAA0B5+wB,EAAMyzD,GAG9B,QAFIx4B,EAA0B4jvB,EAAjBC,EAAY,IAAoB9xwB,GAAS,EAClD+xwB,GAAStrtB,EAAOs1C,IAAKi2qB,GAASvrtB,EAAOs1C,IAChC1vD,GAAQr5C,EAAK2sS,WAAYsye,GAAa,EAAG5luB,GAAOA,GAAQA,GAAMqsT,YAAau5a,KAAc,CAChG,IAAIC,QAAS,EACb,GAAsB,GAAlB7luB,GAAMylT,SAAiBogb,GAAQ7luB,GAAM2mrB,yBACd,GAAlB3mrB,GAAMylT,SACR,SADyBogb,GAAQtB,EAAUvkuB,IAAO2mrB,iBAGzD,QAASz2uB,GAAI,EAAGA,GAAI21xB,GAAMv+xB,OAAQ4I,KAAK,CACrC,IAAIuvU,GAAOomd,GAAM31xB,IACjB,GAAIuvU,GAAK/vN,KAAOg2qB,IAAUjmd,GAAKxU,QAAU06d,GAAQ,CAC/CD,GAASj3xB,KAAKsB,IAAI0vU,GAAKxU,OAAQy6d,IAC/BC,GAASl3xB,KAAKulC,IAAIyrS,GAAK/vN,IAAKi2qB,IAC5B,IAAIhwsB,GAAK8pP,GAAK9uQ,KAAOyJ,EAAOzJ,KAAO8uQ,GAAK9uQ,KAAOyJ,EAAOzJ,KAChD8uQ,GAAK5uQ,MAAQuJ,EAAOzJ,KAAOyJ,EAAOzJ,KAAO8uQ,GAAK5uQ,MAAQ,EAC5D,GAAI8kB,GAAK8vsB,EAAW,CAClB7jvB,EAAUoe,GACVyluB,EAAY9vsB,GACZ6vsB,EAAgB7vsB,IAA0B,GAApB/zC,EAAQ6jU,SAAgB,CAAC90S,KAAM8uQ,GAAK5uQ,MAAQuJ,EAAOzJ,KAAO8uQ,GAAK5uQ,MAAQ4uQ,GAAK9uQ,KAAM++C,IAAKt1C,EAAOs1C,KAAOt1C,EACrG,GAAlBpa,GAAMylT,UAAiB9vR,KACvBhiE,GAASiywB,IAAcxrtB,EAAOzJ,OAAS8uQ,GAAK9uQ,KAAO8uQ,GAAK5uQ,OAAS,EAAI,EAAI,IAC7E,WAGCjvB,IAAYw4B,EAAOzJ,MAAQ8uQ,GAAK5uQ,OAASuJ,EAAOs1C,KAAO+vN,GAAK/vN,KAChDt1C,EAAOzJ,MAAQ8uQ,GAAK9uQ,MAAQyJ,EAAOs1C,KAAO+vN,GAAKxU,UAC5Dt3S,GAASiywB,GAAa,IAG9B,OAAIhkvB,GAA+B,GAApBA,EAAQ6jU,SAKzB,YAA0B9+V,EAAMyzD,GAG9B,QAFIyb,EAAMlvE,EAAKshwB,UAAU3gxB,OACrB6hE,EAAQjmD,SAAS87rB,cACZ9usB,EAAI,EAAGA,EAAI2lF,EAAK3lF,IAAK,CAC5Bi5D,EAAMm3qB,OAAO35tB,EAAMzW,EAAI,GACvBi5D,EAAM2irB,SAASnluB,EAAMzW,GACrB,IAAIuvU,GAAOqmd,GAAW38tB,EAAO,GAC7B,GAAIs2Q,GAAK/vN,KAAO+vN,GAAKxU,QACjB86d,GAAO3rtB,EAAQqlQ,IACf,MAAO,CAAC94T,KAAMA,EAAMgN,OAAQzjB,GAAKkqE,EAAOzJ,OAAS8uQ,GAAK9uQ,KAAO8uQ,GAAK5uQ,OAAS,EAAI,EAAI,IAEzF,MAAO,CAAClqD,KAAMA,EAAMgN,OAAQ,GAhBmBqywB,CAAiBpkvB,EAAS4jvB,IACpE5jvB,GAAY6jvB,GAAiC,GAApB7jvB,EAAQ6jU,SAAyB,CAAC9+V,KAAMA,EAAMgN,OAAQA,IAC7EsywB,GAAiBrkvB,EAAS4jvB,GAiBnC,YAAgBprtB,EAAQqlQ,GACtB,OAAOrlQ,EAAOzJ,MAAQ8uQ,EAAK9uQ,KAAO,GAAKyJ,EAAOzJ,MAAQ8uQ,EAAK5uQ,MAAQ,GACjEuJ,EAAOs1C,KAAO+vN,EAAK/vN,IAAM,GAAKt1C,EAAOs1C,KAAO+vN,EAAKxU,OAAS,EA6C9D,YAA0Bh1T,EAASmkE,EAAQojD,GACzC,IAAI3nC,EAAM5/E,EAAQuqkB,WAAWl5kB,OAC7B,GAAIuuF,GAAO2nC,EAAI9N,IAAM8N,EAAIytM,OACvB,QAASi7d,EAASz3xB,KAAKsB,IAAI,EAAGtB,KAAKulC,IAAI6hD,EAAM,EAAGpnF,KAAKC,MAAMmnF,GAAOzb,EAAOs1C,IAAM8N,EAAI9N,MAAQ8N,EAAIytM,OAASztM,EAAI9N,MAAQ,IAAKx/G,GAAIg2xB,IAAU,CACrI,IAAIlmuB,GAAQ/pD,EAAQuqkB,WAAWtwkB,IAC/B,GAAsB,GAAlB8vD,GAAMylT,SAER,QADIogb,GAAQ7luB,GAAM2mrB,iBACT5jpB,GAAI,EAAGA,GAAI8isB,GAAMv+xB,OAAQy7F,KAAK,CACrC,IAAI08O,GAAOomd,GAAM9isB,IACjB,GAAIgjsB,GAAO3rtB,EAAQqlQ,IAAS,OAAO+iI,GAAiBxiZ,GAAOoa,EAAQqlQ,IAGvE,IAAKvvU,IAAKA,GAAI,GAAK2lF,IAAQqwsB,EAAU,MAGzC,OAAOjwxB,EAIT,YAAqB2N,EAAMw2D,GACzB,IAAIxe,EAAQuquB,EAEsBx/wB,GAAMgN,GAApCo2V,EAAMnmW,EAAKgrN,IAAIgvT,cACnB,GAAI7zK,EAAIq8a,uBACN,IACE,IAAIC,GAAQt8a,EAAIq8a,uBAAuBhstB,EAAOzJ,KAAMyJ,EAAOs1C,KACvD22qB,KAA2B1/wB,IAAhBi1C,EAASyquB,IAAqBC,WAAY3ywB,GAASioC,EAAOjoC,cAClElnB,KAEX,IAAKka,IAAQojW,EAAIw8a,oBAAqB,CACpC,IAAIp9tB,GAAQ4gT,EAAIw8a,oBAAoBnstB,EAAOzJ,KAAMyJ,EAAOs1C,KACpDvmD,KAA6BxiD,IAAlBw/wB,EAAWh9tB,IAAuBq9tB,eAAgB7ywB,GAASwywB,EAAS11P,aAGrF,IAAwGrmd,GAApGq8sB,IAAO7ixB,EAAKyvS,KAAKmvJ,iBAAmB5+b,EAAKyvS,KAAO02D,GAAKy4F,iBAAiBpoY,EAAOzJ,KAAMyJ,EAAOs1C,IAAM,GACpG,IAAK+2qB,KAAQ7ixB,EAAKgrN,IAAIl/N,SAAyB,GAAhB+2xB,GAAIhhb,SAAgBghb,GAAIz3oB,WAAay3oB,IAAM,CACxE,IAAIjpqB,GAAM55G,EAAKgrN,IAAI87F,wBAGnB,IAFKq7d,GAAO3rtB,EAAQojD,OACpBipqB,GAAMjkV,GAAiB5+b,EAAKgrN,IAAKx0J,EAAQojD,KAC7B,OAAO,KAGrB,GAAI1pH,GAAOintB,OACT,QAAS/0pB,GAAIyguB,GAAK9/wB,IAAQq/C,GAAGA,GAAIgpF,GAAWhpF,IACpCA,GAAEykV,YAAa9jY,GAAOgN,GAAS,MAGzC,GADA8ywB,GAxFF,YAAsB73jB,EAAKx0J,GACzB,IAAIwjS,EAAShvI,EAAI5/E,WACjB,OAAI4uN,GAAU,QAAQm/D,KAAKn/D,EAAO5hT,WAAaoe,EAAOzJ,KAAOi+J,EAAI87F,wBAAwB/5P,KAC9EitS,EACJhvI,EAoFD83jB,CAAaD,GAAKrstB,GACpBzzD,GAAM,CACR,GAAI7S,GAAOovxB,OAA0B,GAAjBv8wB,GAAK8+V,WAGvB9xV,GAASllB,KAAKulC,IAAIrgB,GAAQhN,GAAK65jB,WAAWl5kB,SAG7Bqf,GAAK65jB,WAAWl5kB,OAAQ,CACnC,IAAoCq/xB,GAAhC/5xB,GAAO+Z,GAAK65jB,WAAW7sjB,IACN,OAAjB/mB,GAAKovD,WAAsB2quB,GAAQ/5xB,GAAK89T,yBAAyB75P,OAASuJ,EAAOzJ,MACjFg2tB,GAAM17d,OAAS7wP,EAAOs1C,KACtB/7F,KAKJhN,IAAQ/C,EAAKgrN,KAAOj7M,IAAUhN,GAAK65jB,WAAWl5kB,OAAS,GAAgC,GAA3Bqf,GAAK6+c,UAAU//G,UAC3ErrS,EAAOs1C,IAAM/oG,GAAK6+c,UAAU96J,wBAAwBO,OACpD7gP,GAAMxmE,EAAKnY,MAAMs+W,IAAI5pW,QAAQowC,MAId,GAAV58B,IAAgC,GAAjBhN,GAAK8+V,UAAyD,MAAxC9+V,GAAK65jB,WAAW7sjB,GAAS,GAAGqoC,YACtEouB,GA7FR,YAAsBxmE,EAAM+C,EAAMgN,EAAQymD,GAQxC,QADIwstB,GAAU,EACLl8B,GAAM/jvB,EACT+jvB,IAAO9mvB,EAAKgrN,KADK,CAErB,IAAIq7U,GAAOrmiB,EAAKijxB,QAAQC,YAAYp8B,IAAK,GACzC,IAAKzgN,GAAQ,OAAO,KACpB,GAAIA,GAAKtjiB,KAAKkzvB,SAAW5vN,GAAKrsM,OAAQ,CACpC,IAAIn+B,GAAOwqO,GAAKr7U,IAAI87F,wBACpB,GAAI+U,GAAK9uQ,KAAOyJ,EAAOzJ,MAAQ8uQ,GAAK/vN,IAAMt1C,EAAOs1C,IAAOk3qB,EAAU38O,GAAK88O,oBAC9Dtnd,GAAK5uQ,MAAQuJ,EAAOzJ,MAAQ8uQ,GAAKxU,OAAS7wP,EAAOs1C,KACnD,MAD0Dk3qB,EAAU38O,GAAK+8O,UAGlFt8B,GAAMzgN,GAAKr7U,IAAI5/E,WAEjB,OAAO43oB,GAAU,EAAKA,EAAUhjxB,EAAKijxB,QAAQI,WAAWtgxB,EAAMgN,GAyElDuzwB,CAAatjxB,EAAM+C,GAAMgN,GAAQymD,IAElC,MAAPgQ,KAAeA,GA3GrB,YAAwBxmE,EAAM6ixB,EAAKrstB,GACjC,IAAI4nC,EAAMikrB,GAAiBQ,EAAKrstB,GAC5BzzD,EAAOq7F,EAAIr7F,KACXgN,GAASquF,EAAIruF,OACbg7vB,IAAO,EACX,GAAqB,GAAjBhowB,EAAK8+V,WAAkB9+V,EAAK2sS,WAAY,CAC1C,IAAImsB,GAAO94T,EAAK+jT,wBAChBikd,GAAOlvc,GAAK9uQ,MAAQ8uQ,GAAK5uQ,OAASuJ,EAAOzJ,MAAQ8uQ,GAAK9uQ,KAAO8uQ,GAAK5uQ,OAAS,EAAI,GAAI,EAErF,OAAOjtD,EAAKijxB,QAAQI,WAAWtgxB,EAAMgN,GAAQg7vB,IAkGpBwY,CAAevjxB,EAAM6ixB,GAAKrstB,IAEnD,IAAI6ve,GAAOrmiB,EAAKijxB,QAAQC,YAAYL,IAAK,GACzC,MAAO,CAACr8sB,IAAKA,GAAKs3sB,OAAQz3O,GAAOA,GAAKm9O,WAAan9O,GAAK1ra,QAAS,GAGnE,YAAoBn0I,EAAQukxB,GAC1B,IAAIkX,EAAQz7xB,EAAOu8uB,iBACnB,OAAQk/C,EAAMv+xB,OAA0Cu+xB,EAAMlX,EAAO,EAAI,EAAIkX,EAAMv+xB,OAAS,GAArE8C,EAAOsgU,wBAGhC,IAAI28d,GAAO,4CAKX,YAAqBzjxB,EAAMwmE,EAAKT,GAC9B,IAAIq4B,EAAMp+F,EAAKijxB,QAAQS,WAAWl9sB,EAAKT,EAAO,GAAI,EAAK,GACnDhjE,EAAOq7F,EAAIr7F,KACXgN,GAASquF,EAAIruF,OAEb4zwB,GAAoBzzxB,GAAOqooB,QAAUrooB,GAAOovxB,MAChD,GAAqB,GAAjBv8wB,EAAK8+V,SAGP,KAAI8hb,KAAsBF,GAAKtqX,KAAKp2Z,EAAKshwB,aAAet+rB,EAAO,EAAKh2D,GAASA,IAAUhN,EAAKshwB,UAAU3gxB,QAc/F,CACL,IAAIqiE,GAAOh2C,GAAQq7G,GAAKr7G,GAAQ6zwB,GAAW79sB,EAAO,EAAI,GAAI,EAC1D,OAAIA,EAAO,IAAMh2D,IAAUq7G,KAAMw4pB,IAAW,GACnC79sB,GAAQ,GAAKh2D,IAAUhN,EAAKshwB,UAAU3gxB,QAAUqiE,KAAQ69tB,GAAW,GACvE9/M,EAAW,EAAK/9gB,KACdqlE,KACAy4pB,GAAS3B,GAAWvB,EAAU59wB,EAAMgjD,GAAMqlE,IAAKw4pB,IAAWA,GAAW,GAnB5E,IAAI/nd,GAAOqmd,GAAWvB,EAAU59wB,EAAMgN,GAAQA,IAASg2D,GAIvD,GAAI71E,GAAOovxB,OAASvvwB,IAAU,KAAKopZ,KAAKp2Z,EAAKshwB,UAAUt0vB,GAAS,KAAOA,GAAShN,EAAKshwB,UAAU3gxB,OAAQ,CACrG,IAAIogyB,GAAa5B,GAAWvB,EAAU59wB,EAAMgN,GAAS,EAAGA,GAAS,IAAI,GACrE,GAAI+zwB,GAAWh4qB,KAAO+vN,GAAK/vN,IAAK,CAC9B,IAAIi4qB,GAAY7B,GAAWvB,EAAU59wB,EAAMgN,GAAQA,GAAS,IAAI,GAChE,GAAIg0wB,GAAUj4qB,KAAO+vN,GAAK/vN,IACtB,OAAO+3qB,GAASE,GAAWA,GAAUh3tB,KAAO+2tB,GAAW/2tB,OAG/D,OAAO8uQ,GAYX,IAAK77T,EAAKnY,MAAMs+W,IAAI5gW,QAAQihE,GAAKwzR,OAAOmga,cAAe,CACrD,GAAIpqvB,KAAWg2D,EAAO,GAAKh2D,IAAU2sc,GAAS35c,IAAQ,CACpD,IAAI4mC,GAAS5mC,EAAK65jB,WAAW7sjB,GAAS,GACtC,GAAuB,GAAnB45B,GAAOk4T,SAAiB,OAAOmib,GAASr6uB,GAAOm9Q,yBAAyB,GAE9E,GAAI/2S,GAAS2sc,GAAS35c,GAAO,CAC3B,IAAI04B,GAAQ14B,EAAK65jB,WAAW7sjB,IAC5B,GAAsB,GAAlB0rB,GAAMomU,SAAiB,OAAOmib,GAASvovB,GAAMqrR,yBAAyB,GAE5E,OAAOk9d,GAASjhxB,EAAK+jT,wBAAyB/gP,GAAQ,GAIxD,GAAIh2D,KAAWg2D,EAAO,GAAKh2D,IAAU2sc,GAAS35c,IAAQ,CACpD,IAAIkhxB,GAAWlhxB,EAAK65jB,WAAW7sjB,GAAS,GACpC1pB,GAA8B,GAArB49xB,GAASpib,SAAgB8+a,EAAUsD,GAAUvnU,GAASunU,KAAaN,GAAoB,EAAI,IAG7E,GAArBM,GAASpib,UAAuC,MAArBoib,GAAS7ruB,UAAqB6ruB,GAASx7a,YAA0B,KAAXw7a,GACvF,GAAI59xB,GAAU,OAAOw9xB,GAAS3B,GAAW77xB,GAAQ,IAAI,GAEvD,GAAI0pB,GAAS2sc,GAAS35c,GAAO,CAE3B,QADImhxB,GAAUnhxB,EAAK65jB,WAAW7sjB,IACvBm0wB,GAAQ/C,YAAc+C,GAAQ/C,WAAWgD,iBAAmBD,GAAUA,GAAQz7a,YACrF,IAAI27a,GAAWC,GAAsC,GAApBH,GAAQrib,SAAgB8+a,EAAUuD,GAAS,EAAIP,GAAoB,EAAI,GAC9E,GAApBO,GAAQrib,SAAgBqib,GAAU,KADd,KAE1B,GAAIE,GAAY,OAAOP,GAAS3B,GAAWkC,IAAU,IAAK,GAG5D,OAAOP,GAAS3B,GAA4B,GAAjBn/wB,EAAK8+V,SAAgB8+a,EAAU59wB,GAAQA,GAAOgjE,GAAOA,GAAQ,GAG1F,YAAkB81P,EAAM9uQ,GACtB,GAAkB,GAAd8uQ,EAAKxnU,MAAc,OAAOwnU,EAC9B,IAAIv0U,EAAIylE,EAAO8uQ,EAAK9uQ,KAAO8uQ,EAAK5uQ,MAChC,MAAO,CAAC6+C,IAAK+vN,EAAK/vN,IAAKu7M,OAAQwU,EAAKxU,OAAQt6P,KAAMzlE,EAAG2lE,MAAO3lE,GAG9D,YAAkBu0U,EAAM/vN,GACtB,GAAmB,GAAf+vN,EAAK3zU,OAAe,OAAO2zU,EAC/B,IAAIpqR,EAAIq6D,EAAM+vN,EAAK/vN,IAAM+vN,EAAKxU,OAC9B,MAAO,CAACv7M,IAAKr6D,EAAG41Q,OAAQ51Q,EAAGsb,KAAM8uQ,EAAK9uQ,KAAME,MAAO4uQ,EAAK5uQ,OAG1D,YAA0BjtD,EAAMnY,EAAOtE,GACrC,IAAIm4G,EAAY17F,EAAKnY,MAAOylE,EAASttD,EAAKyvS,KAAK9tB,cAC3CjmL,GAAa7zG,GAASmY,EAAKgoD,YAAYngE,GACvCylE,GAAUttD,EAAKgrN,KAAOhrN,EAAKgrT,QAC/B,IACE,OAAOznU,YAEHm4G,GAAa7zG,GAASmY,EAAKgoD,YAAY0zC,GACvCpuC,GAAUttD,EAAKgrN,KAAO19J,GAAUA,EAAO09P,SAqC/C,IAAIs5d,GAAW,kBAiCXC,GAAc,KAAMC,GAAY,KAAMlxB,IAAe,EA8FzD,IAIImxB,GAAW,SAAkBzqb,EAAQ79S,EAAU6uK,EAAKy6iB,GACtD9nxB,KAAKq8W,OAASA,EACdr8W,KAAKw+D,SAAWA,EAChBx+D,KAAKqtO,IAAMA,EAGXA,EAAIm2jB,WAAaxjyB,KAGjBA,KAAK8nxB,WAAaA,EAClB9nxB,KAAKwsC,MAdS,GAiBZsruB,GAAqB,CAAE9otB,KAAM,CAAE+otB,cAAc,GAAO/6nB,OAAQ,CAAE+6nB,cAAc,GAAOytB,UAAW,CAAEztB,cAAc,GAAO8tB,WAAY,CAAE9tB,cAAc,GAAO0tB,SAAU,CAAE1tB,cAAc,GAAOgvB,SAAU,CAAEhvB,cAAc,GAAOivB,YAAa,CAAEjvB,cAAc,GAAOkvB,QAAS,CAAElvB,cAAc,GAAOyuB,gBAAiB,CAAEzuB,cAAc,IAInU+uB,GAASzmxB,UAAU6mxB,cAAgB,WAA4B,OAAO,GACtEJ,GAASzmxB,UAAU8mxB,YAAc,WAA0B,OAAO,GAClEL,GAASzmxB,UAAU+mxB,YAAc,WAA0B,OAAO,GAClEN,GAASzmxB,UAAUgnxB,YAAc,SAAsBC,GAAa,OAAO,GAM3ER,GAASzmxB,UAAUknxB,UAAY,WAAwB,OAAO,MAK9DT,GAASzmxB,UAAUwiI,UAAY,WAAwB,OAAO,GAG9Di1nB,GAAmB9otB,KAAKnwC,IAAM,WAE5B,QADImwC,EAAO,EACFrgD,EAAI,EAAGA,EAAI3O,KAAKw+D,SAASz4D,OAAQ4I,IAAOqgD,GAAQhvD,KAAKw+D,SAAS7vD,GAAGqgD,KAC1E,OAAOA,GAKT8otB,GAAmB96nB,OAAOn+H,IAAM,WAAc,OAAO,GAErDioxB,GAASzmxB,UAAUolT,QAAU,WAC3BzlU,KAAKq8W,OAAS,KACVr8W,KAAKqtO,IAAIm2jB,YAAcxjyB,OAAQA,KAAKqtO,IAAIm2jB,WAAa,MACzD,QAAS70xB,EAAI,EAAGA,EAAI3O,KAAKw+D,SAASz4D,OAAQ4I,IACtC3O,KAAKw+D,SAAS7vD,GAAG82T,WAGvBqhe,GAASzmxB,UAAUmnxB,eAAiB,SAAyB/ouB,GAC3D,QAAS9vD,EAAI,EAAGk6E,EAAM7oF,KAAK6lyB,WAAYl3xB,EAAI3O,KAAKw+D,SAASz4D,OAAQ4I,IAAK,CACpE,IAAIw6vB,EAAMnpwB,KAAKw+D,SAAS7vD,GACxB,GAAIw6vB,GAAO1qsB,EAAS,OAAOoqB,EAC3BA,GAAOsgrB,EAAIn6sB,OAIf8otB,GAAmB0tB,UAAU3mxB,IAAM,WACjC,OAAO7e,KAAKq8W,OAAOmrb,eAAexnyB,OAGpC83wB,GAAmB+tB,WAAWhnxB,IAAM,WAClC,OAAO7e,KAAKq8W,OAASr8W,KAAKq8W,OAAOmrb,eAAexnyB,MAAQA,KAAKg9I,OAAS,GAGxE86nB,GAAmB2tB,SAAS5mxB,IAAM,WAChC,OAAO7e,KAAKwlyB,UAAYxlyB,KAAKgvD,MAG/B8otB,GAAmBivB,SAASloxB,IAAM,WAChC,OAAO7e,KAAK6lyB,WAAa7lyB,KAAKgvD,KAAO,EAAIhvD,KAAKg9I,QAIhD8ppB,GAASzmxB,UAAUonxB,gBAAkB,SAA0Bp6jB,EAAKj7M,EAAQg7vB,GAG1E,GAAIptxB,KAAK8nxB,YAAc9nxB,KAAK8nxB,WAAW35wB,SAAyB,GAAhBk/N,EAAI62I,SAAgB72I,EAAMA,EAAI5/E,YAC5E,IAAI2/nB,EAAO,EAAG,CACZ,IAAIsa,EAAWh/O,GACf,GAAIr7U,GAAOrtO,KAAK8nxB,WACd4f,EAAYr6jB,EAAI4xW,WAAW7sjB,EAAS,OAC/B,CACL,KAAOi7M,EAAI5/E,YAAcztJ,KAAK8nxB,YAAcz6iB,EAAMA,EAAI5/E,WACtDi6oB,EAAYr6jB,EAAIu5iB,gBAElB,KAAO8gB,MAAgBh/O,GAAOg/O,EAAUlE,aAAe96O,GAAKrsM,QAAUr8W,OAAS0nyB,EAAYA,EAAU9gB,gBACrG,OAAO8gB,EAAY1nyB,KAAKwnyB,eAAe9+O,IAAQA,GAAK15f,KAAOhvD,KAAK6lyB,WAEhE,IAAI8B,GAAUC,GACd,GAAIv6jB,GAAOrtO,KAAK8nxB,WACd6f,GAAWt6jB,EAAI4xW,WAAW7sjB,OACrB,CACL,KAAOi7M,EAAI5/E,YAAcztJ,KAAK8nxB,YAAcz6iB,EAAMA,EAAI5/E,WACtDk6oB,GAAWt6jB,EAAIy9I,YAEjB,KAAO68a,OAAeC,GAASD,GAASnE,aAAeoE,GAAOvrb,QAAUr8W,OAAS2nyB,GAAWA,GAAS78a,YACrG,OAAO68a,GAAW3nyB,KAAKwnyB,eAAeI,IAAU5nyB,KAAK+myB,SAMzD,IAAIpU,GACJ,GAAItljB,GAAOrtO,KAAKqtO,KAAOrtO,KAAK8nxB,WAC1B6K,GAAQvgwB,EAASywwB,GAAS7iyB,KAAK8nxB,oBACtB9nxB,KAAK8nxB,YAAc9nxB,KAAK8nxB,YAAc9nxB,KAAKqtO,KAAOrtO,KAAKqtO,IAAIl/N,SAASnO,KAAK8nxB,YAClF6K,GAAuD,EAA/CtljB,EAAIuvT,wBAAwB58hB,KAAK8nxB,iBAAc,GAC9C9nxB,KAAKqtO,IAAI0kF,WAAY,CAC9B,GAAc,GAAV3/R,EAAe,QAASjB,GAASk8M,GAAMl8M,GAASA,GAAOs8H,WAAY,CACrE,GAAIt8H,IAAUnxB,KAAKqtO,IAAK,CAAEsljB,IAAQ,EAAO,MACzC,GAAIxhwB,GAAOs8H,WAAWskK,YAAc5gS,GAAU,MAEhD,GAAa,MAATwhwB,IAAiBvgwB,GAAUi7M,EAAI4xW,WAAWl5kB,OAAU,QAAS8hyB,GAAWx6jB,GAAMw6jB,GAAWA,GAASp6oB,WAAY,CAChH,GAAIo6oB,IAAY7nyB,KAAKqtO,IAAK,CAAEsljB,IAAQ,EAAM,MAC1C,GAAIkV,GAASp6oB,WAAWw2U,WAAa4jU,GAAY,OAGrD,OAAiB,MAATlV,GAAgBvF,EAAO,EAAIuF,IAAS3yxB,KAAK+myB,SAAW/myB,KAAK6lyB,YAKnEiB,GAASzmxB,UAAUklxB,YAAc,SAAsBl4jB,EAAKy6jB,GAC1D,QAAS5gyB,GAAQ,EAAMiiwB,EAAM97hB,EAAK87hB,EAAKA,EAAMA,EAAI17mB,WAAY,CAC3D,IAAIi7Z,GAAO1ojB,KAAK+nyB,QAAQ5+B,GACxB,GAAIzgN,MAAUo/O,GAAap/O,GAAKtjiB,MAE9B,KAAIle,IAASwhjB,GAAKs/O,UACa,GAAzBt/O,GAAKs/O,QAAQ9jb,SAAgBwkM,GAAKs/O,QAAQ75xB,SAAyB,GAAhBk/N,EAAI62I,SAAgB72I,EAAMA,EAAI5/E,YAAci7Z,GAAKs/O,SAAW36jB,GAGjH,OAAOq7U,GAFPxhjB,GAAQ,KAOlB4/xB,GAASzmxB,UAAU0nxB,QAAU,SAAkB16jB,GAE7C,QADIq7U,EAAOr7U,EAAIm2jB,WACNr6B,EAAMzgN,EAAMygN,EAAKA,EAAMA,EAAI9sZ,OAAU,GAAI8sZ,GAAOnpwB,KAAQ,OAAO0ojB,GAG1Eo+O,GAASzmxB,UAAUqlxB,WAAa,SAAqBr4jB,EAAKj7M,EAAQg7vB,GAChE,QAAS5gX,EAAOn/L,EAAKm/L,EAAMA,EAAOA,EAAK/+Q,WAAY,CACjD,IAAIi7Z,GAAO1ojB,KAAK+nyB,QAAQv7X,GACxB,GAAIk8I,GAAQ,OAAOA,GAAK++O,gBAAgBp6jB,EAAKj7M,EAAQg7vB,GAEvD,OAAO,GAMT0Z,GAASzmxB,UAAU4nxB,OAAS,SAAiBp/sB,GAC3C,QAASl6E,EAAI,EAAGyjB,EAAS,EAAGzjB,EAAI3O,KAAKw+D,SAASz4D,OAAQ4I,IAAK,CACzD,IAAI8vD,EAAQz+D,KAAKw+D,SAAS7vD,GAAI27B,GAAMlY,EAASqsC,EAAMzP,KACnD,GAAI58B,GAAUy2D,GAAOv+C,IAAOlY,EAAQ,CAClC,MAAQqsC,EAAMu+E,QAAUv+E,EAAMD,SAASz4D,QAAU04D,EAAQA,EAAMD,SAAS,GACxE,OAAOC,EAET,GAAIoqB,EAAMv+C,GAAO,OAAOm0B,EAAMwpuB,OAAOp/sB,EAAMz2D,EAASqsC,EAAMu+E,QAC1D5qH,EAASkY,KAKbw8vB,GAASzmxB,UAAU0lxB,WAAa,SAAqBl9sB,EAAKT,GACxD,IAAKpoF,KAAK8nxB,WAAc,MAAO,CAAC1iwB,KAAMplB,KAAKqtO,IAAKj7M,OAAQ,GAGxD,QADIzjB,EAAI,EAAGyjB,EAAS,EACXqtc,GAAS,EAAG9wd,EAAI3O,KAAKw+D,SAASz4D,OAAQ4I,IAAK,CAClD,IAAI8vD,GAAQz+D,KAAKw+D,SAAS7vD,GAAI27B,GAAMm1b,GAAShha,GAAMzP,KACnD,GAAI1kB,GAAMu+C,GAAOpqB,cAAiBypuB,GAAsB,CAAE91wB,EAASy2D,EAAM42Y,GAAQ,MACjFA,GAASn1b,GAGX,GAAIlY,EAAU,OAAOpyB,KAAKw+D,SAAS7vD,GAAGo3xB,WAAW3zwB,EAASpyB,KAAKw+D,SAAS7vD,GAAGquI,OAAQ50D,GAEnF,QAAS6gK,QAAQ,EAASt6O,KAAOs6O,GAAOjpP,KAAKw+D,SAAS7vD,EAAI,IAAIqgD,MAAQi6L,cAAgBk/iB,IAAkBl/iB,GAAK0+Z,OAAO7/oB,KAAKsgF,MAAQ,EAAGz5E,KAEpI,GAAIy5E,GAAQ,EAAG,CAEb,QADIggtB,GAAQhra,IAAQ,GAElBgra,GAASz5xB,EAAI3O,KAAKw+D,SAAS7vD,EAAI,GAAK,OACrBy5xB,GAAO/6jB,IAAI5/E,YAAcztJ,KAAK8nxB,WAFvCn5wB,IAAKyuX,IAAQ,GAIrB,OAAIgra,IAAUhgtB,GAAQg1S,KAAUgra,GAAOprpB,SAAWorpB,GAAOnB,QAAkBmB,GAAOrC,WAAWqC,GAAOp5uB,KAAMo5B,GACnG,CAAChjE,KAAMplB,KAAK8nxB,WAAY11vB,OAAQg2wB,GAASvF,GAASuF,GAAO/6jB,KAAO,EAAI,GAG3E,QADIhiO,GAAMg9xB,IAAU,GAElBh9xB,GAAOsD,EAAI3O,KAAKw+D,SAASz4D,OAAS/F,KAAKw+D,SAAS7vD,GAAK,OACxCtD,GAAKgiO,IAAI5/E,YAAcztJ,KAAK8nxB,WAFnCn5wB,IAAK05xB,IAAU,GAIvB,OAAIh9xB,IAAQg9xB,KAAYh9xB,GAAK2xI,SAAW3xI,GAAK47xB,QAAkB57xB,GAAK06xB,WAAW,EAAG39sB,GAC3E,CAAChjE,KAAMplB,KAAK8nxB,WAAY11vB,OAAQ/mB,GAAOw3xB,GAASx3xB,GAAKgiO,KAAOrtO,KAAK8nxB,WAAW7oM,WAAWl5kB,SAMlG+gyB,GAASzmxB,UAAUioxB,WAAa,SAAqBlguB,EAAMqlE,EAAIx2H,GAG7D,QAFgB,IAATA,IAAkBA,EAAO,GAEJ,GAAxBjX,KAAKw+D,SAASz4D,OACd,MAAO,CAACqf,KAAMplB,KAAK8nxB,WAAY1/sB,KAAMA,EAAMqlE,GAAIA,EAAI86pB,WAAY,EAAGC,SAAUxoyB,KAAK8nxB,WAAW7oM,WAAWl5kB,QAG3G,QADIwiyB,GAAa,EAAIC,IAAW,EACvBp2wB,GAASnb,EAAMtI,GAAI,GAAIA,KAAK,CACnC,IAAI8vD,GAAQz+D,KAAKw+D,SAAS7vD,IAAI27B,GAAMlY,GAASqsC,GAAMzP,KACnD,IAAkB,GAAdu5uB,GAAoBnguB,GAAQ99B,GAAK,CACnC,IAAIm+vB,GAAYr2wB,GAASqsC,GAAMu+E,OAE/B,GAAI50E,GAAQqguB,IAAah7pB,GAAMnjG,GAAMm0B,GAAMu+E,QAAUv+E,GAAMr5C,MACvDq5C,GAAMqptB,YAAc9nxB,KAAK8nxB,WAAW35wB,SAASswD,GAAMqptB,YACnD,OAAOrptB,GAAM6puB,WAAWlguB,EAAMqlE,EAAIg7pB,IAEtCrguB,EAAOh2C,GACP,QAASovE,GAAI7yF,GAAG6yF,GAAI,EAAGA,KAAK,CAC1B,IAAIynJ,GAAOjpP,KAAKw+D,SAASgjC,GAAI,GAC7B,GAAIynJ,GAAKj6L,MAAQi6L,GAAK5b,IAAI5/E,YAAcztJ,KAAK8nxB,aAAe7+hB,GAAKy/iB,aAAa,GAAI,CAChFH,EAAa1F,GAAS55iB,GAAK5b,KAAO,EAClC,MAEFjlK,GAAQ6gL,GAAKj6L,MAEG,GAAdu5uB,IAAoBA,EAAa,GAEvC,GAAIA,GAAa,IAAOj+vB,GAAMmjG,GAAM9+H,IAAK3O,KAAKw+D,SAASz4D,OAAS,GAAI,CAClE0nI,EAAKnjG,GACL,QAASq+vB,GAAMh6xB,GAAI,EAAGg6xB,GAAM3oyB,KAAKw+D,SAASz4D,OAAQ4iyB,KAAO,CACvD,IAAIt9xB,GAAOrL,KAAKw+D,SAASmquB,IACzB,GAAIt9xB,GAAK2jD,MAAQ3jD,GAAKgiO,IAAI5/E,YAAcztJ,KAAK8nxB,aAAez8wB,GAAKq9xB,cAAa,GAAK,CACjFF,GAAW3F,GAASx3xB,GAAKgiO,KACzB,MAEF5/F,GAAMpiI,GAAK2jD,MAEG,GAAZw5uB,KAAkBA,GAAWxoyB,KAAK8nxB,WAAW7oM,WAAWl5kB,QAC5D,MAEFqsB,GAASkY,GAEX,MAAO,CAACllB,KAAMplB,KAAK8nxB,WAAY1/sB,KAAMA,EAAMqlE,GAAIA,EAAI86pB,WAAYA,EAAYC,SAAUA,KAGvF1B,GAASzmxB,UAAUqoxB,aAAe,SAAuBtgtB,GACvD,GAAIpoF,KAAKg9I,SAAWh9I,KAAK8nxB,aAAe9nxB,KAAKw+D,SAASz4D,OAAU,OAAO,EACvE,IAAI04D,EAAQz+D,KAAKw+D,SAAS4pB,EAAO,EAAI,EAAIpoF,KAAKw+D,SAASz4D,OAAS,GAChE,OAAqB,GAAd04D,EAAMzP,MAAayP,EAAMiquB,aAAatgtB,IAI/C0+sB,GAASzmxB,UAAUuoxB,YAAc,SAAsB//sB,GACrD,IAAI43B,EAAMzgH,KAAK+lyB,WAAWl9sB,EAAK,GACzBzjE,EAAOq7F,EAAIr7F,KACXgN,EAASquF,EAAIruF,OACnB,GAAqB,GAAjBhN,EAAK8+V,UAAiB9xV,GAAUhN,EAAK65jB,WAAWl5kB,OAChD,MAAM,IAAIm4d,WAAW,qBAAuBr1Y,GAChD,OAAOzjE,EAAK65jB,WAAW7sjB,IASzB00wB,GAASzmxB,UAAUwid,aAAe,SAAuB50d,EAAQmvV,EAAMtrC,EAAMyxN,GAG3E,QADIn7c,GAAOl7D,KAAKulC,IAAIxkC,EAAQmvV,GAAO3vN,GAAKvgI,KAAKsB,IAAIP,EAAQmvV,GAChDzuV,GAAI,EAAGyjB,GAAS,EAAGzjB,GAAI3O,KAAKw+D,SAASz4D,OAAQ4I,KAAK,CACzD,IAAI8vD,GAAQz+D,KAAKw+D,SAAS7vD,IAAI27B,GAAMlY,GAASqsC,GAAMzP,KACnD,GAAIoZ,GAAOh2C,IAAUq7G,GAAKnjG,GACtB,OAAOm0B,GAAMoka,aAAa50d,EAASmkB,GAASqsC,GAAMu+E,OAAQogN,EAAOhrU,GAASqsC,GAAMu+E,OAAQ80K,EAAMyxN,GAClGnxf,GAASkY,GAGX,IAAIu+vB,GAAY7oyB,KAAK+lyB,WAAW93xB,EAAQA,GAAS,EAAK,GAClD66xB,GAAU1rc,GAAQnvV,EAAS46xB,GAAY7oyB,KAAK+lyB,WAAW3oc,EAAMA,GAAO,EAAK,GACzEsmc,GAAS5xe,EAAKs9K,eAEd25T,IAAW,EAKf,IAAKx2xB,GAAOovxB,OAASpvxB,GAAOintB,SAAWvrtB,GAAUmvV,EAAM,CACrD,IAAIh4U,GAAOyjxB,GAAUzjxB,KACf4jxB,GAAWH,GAAUz2wB,OAC3B,GAAqB,GAAjBhN,GAAK8+V,UAGP,IAFA6kb,GAAWC,IAA4C,MAAhC5jxB,GAAKshwB,UAAUsiB,GAAW,KAEjCA,IAAY5jxB,GAAKshwB,UAAU3gxB,OACzC,QAASyma,GAAOpnZ,GAAM04B,QAAS,EAAS0uX,GAAMA,GAAOA,GAAK/+Q,WAAY,CACpE,GAAI3vG,GAAQ0uX,GAAK1hD,YAAa,CACN,MAAlBhtU,GAAM2c,WACNouuB,GAAYC,GAAU,CAAC1jxB,KAAM04B,GAAM2vG,WAAYr7H,OAAQywwB,GAAS/kvB,IAAS,IAC7E,MAEF,IAAI4qgB,GAAOl8I,GAAKg3X,WAChB,GAAI96O,IAAQA,GAAKtjiB,MAAQsjiB,GAAKtjiB,KAAKkzvB,QAAW,WAG7C,CACL,IAAIrvhB,GAAO7jO,GAAK65jB,WAAW+pN,GAAW,GACtCD,GAAW9/iB,KAA0B,MAAjBA,GAAKxuL,UAA4C,SAAxBwuL,GAAKs6iB,kBAKtD,GAAIhxxB,GAAOovxB,OAAS+B,GAAOr0T,WAAaq0T,GAAOr0T,WAAay5T,GAAQ1jxB,MAAqC,GAA7Bs+wB,GAAOr0T,UAAUnrH,SAAe,CAC1G,IAAIqib,GAAU7C,GAAOr0T,UAAU4vG,WAAWykN,GAAOuF,aAC7C1C,IAAsC,SAA3BA,GAAQhD,kBAA8BhgR,GAAQ,GAG/D,GAAMA,GAASwlR,IAAYx2xB,GAAOintB,SAC9BypE,EAAqB4F,GAAUzjxB,KAAMyjxB,GAAUz2wB,OAAQsxwB,GAAOwF,WAAYxF,GAAO7wL,gBACjFowL,EAAqB6F,GAAQ1jxB,KAAM0jxB,GAAQ12wB,OAAQsxwB,GAAOr0T,UAAWq0T,GAAOuF,aAMhF,KAAIE,IAAiB,EACrB,IAAKzF,GAAOxrqB,QAAUjqH,GAAUmvV,KAAU2rc,GAAU,CAClDrF,GAAOnxU,SAASs2U,GAAUzjxB,KAAMyjxB,GAAUz2wB,QAC1C,IACMnkB,GAAUmvV,GAAQsmc,GAAOxrqB,OAAO4wqB,GAAQ1jxB,KAAM0jxB,GAAQ12wB,QAC1D+2wB,IAAiB,QACV9+wB,IAKP,KAAMA,cAAe++wB,cAAiB,MAAM/+wB,IAIhD,IAAK8+wB,GAAgB,CACnB,GAAIl7xB,EAASmvV,EAAM,CAAE,IAAIxsV,GAAMi4xB,GAAWA,GAAYC,GAASA,GAAUl4xB,GACzE,IAAIg3D,GAAQjmD,SAAS87rB,cACrB71oB,GAAMm3qB,OAAO+pD,GAAQ1jxB,KAAM0jxB,GAAQ12wB,QACnCw1C,GAAM2irB,SAASs+C,GAAUzjxB,KAAMyjxB,GAAUz2wB,QACzCsxwB,GAAOp0T,kBACPo0T,GAAO9iF,SAASh5oB,OAKpBk/tB,GAASzmxB,UAAUgpxB,eAAiB,SAAyB5vgB,GAC3D,OAAQz5R,KAAK8nxB,YAA+B,aAAjBruf,EAAS3xR,MAGtCgwwB,GAAmBkvB,YAAYnoxB,IAAM,WACnC,OAAO7e,KAAK8nxB,YAAc9nxB,KAAK8nxB,YAAc9nxB,KAAKqtO,MAAQrtO,KAAKqtO,IAAIl/N,SAASnO,KAAK8nxB,aAKnFgf,GAASzmxB,UAAUipxB,UAAY,SAAoBlhuB,EAAMqlE,GACvD,QAASr7G,EAAS,EAAGzjB,EAAI,EAAGA,EAAI3O,KAAKw+D,SAASz4D,OAAQ4I,IAAK,CACzD,IAAI8vD,GAAQz+D,KAAKw+D,SAAS7vD,GAAI27B,GAAMlY,EAASqsC,GAAMzP,KACnD,GAAI58B,GAAUkY,GAAM89B,GAAQ99B,IAAOmjG,GAAMr7G,EAASg2C,EAAO99B,IAAOmjG,EAAKr7G,EAAQ,CAC3E,IAAIm3wB,GAAcn3wB,EAASqsC,GAAMu+E,OAAQwspB,GAAYl/vB,GAAMm0B,GAAMu+E,OACjE,GAAI50E,GAAQmhuB,IAAe97pB,GAAM+7pB,GAK/B,OAJAxpyB,KAAKwsC,MAAQ47B,GAAQh2C,GAAUq7G,GAAMnjG,GApXO,EAAnB,OAqXzB9jC,GAAY+iyB,IAAe97pB,GAAM+7pB,KAC5B/quB,GAAMuouB,aAAevouB,GAAM4uK,IAAI5/E,YAAcztJ,KAAK8nxB,WAChDrptB,GAAM6quB,UAAUlhuB,EAAOmhuB,GAAa97pB,EAAK87pB,IADsB9quB,GAAMjyB,MAtXhB,GA0X5DiyB,GAAMjyB,MAAQiyB,GAAM4uK,KAAO5uK,GAAMqptB,YAAcrptB,GAAM4uK,IAAI5/E,YAAcztJ,KAAK8nxB,WA1XhC,EAAgB,EA6XhE11vB,EAASkY,GAEXtqC,KAAKwsC,MA/X6C,GAkYpDs6vB,GAASzmxB,UAAUopxB,iBAAmB,WAEpC,QADIvnrB,EAAQ,EACH98F,EAAOplB,KAAKq8W,OAAQj3V,EAAMA,EAAOA,EAAKi3V,OAAQn6P,IAAS,CAC9D,IAAI11E,EAAiB,GAAT01E,EArYoC,EAAnB,EAsYzB98F,EAAKonB,MAAQA,IAASpnB,EAAKonB,MAAQA,KAI3CsruB,GAAmBmvB,QAAQpoxB,IAAM,WAAc,OAAO,GAEtDi5vB,GAAmB0uB,gBAAgB3nxB,IAAM,WAAc,OAAO,GAE9DhZ,OAAOszwB,iBAAkB2tB,GAASzmxB,UAAWy3vB,IAI7C,IAAI4xB,GAAU,GAIVvB,GAA+B,SAAUrB,GAC3C,WAAwBzqb,EAAQsrS,EAAQtloB,GAAMwmE,IAC5C,IAAIhnE,GAAMwrN,GAAMs6a,EAAO7/oB,KAAKwlO,MAK5B,GAJkB,mBAAPD,KAAqBA,GAAMA,GAAIhrN,GAAM,WAC9C,OAAKR,GACDA,GAAKw6V,OAAiBx6V,GAAKw6V,OAAOmrb,eAAe3lxB,SAArD,EADoBgnE,OAGjB8+jB,EAAO7/oB,KAAKy7d,KAAKzhc,IAAK,CACzB,GAAoB,GAAhBurM,GAAI62I,SAAe,CACrB,IAAI5pT,GAAO34C,SAAS+O,cAAc,QAClC4pC,GAAKzf,YAAYwyL,IACjBA,GAAM/yK,GAER+yK,GAAIk2jB,iBAAkB,EACtBl2jB,GAAIzlL,UAAUY,IAAI,sBAEpBs+uB,EAASlzwB,KAAK5zB,KAAMq8W,EAAQqtb,GAASr8jB,GAAK,MAC1CrtO,KAAK2npB,OAASA,EACd9loB,GAAO7hB,KAGJ8myB,IAAWqB,EAAe7nxB,UAAYwmxB,IAC3CqB,EAAe9nxB,UAAYxa,OAAOm8D,OAAQ8kuB,GAAYA,EAASzmxB,YACtCvgB,YAAcqoyB,EAEvC,IAAIjuB,EAAuB,CAAE+sB,QAAS,CAAElvB,cAAc,IAEtDowB,SAAe9nxB,UAAU6mxB,cAAgB,SAAwBv/I,GAC/D,OAlbY,GAkbL3npB,KAAKwsC,OAAsBm7mB,EAAO7/oB,KAAKs7d,GAAGpje,KAAK2npB,OAAO7/oB,OAG/DqgyB,EAAe9nxB,UAAUknxB,UAAY,WAAwB,MAAO,CAACr9O,QAAQ,IAE7Ei+O,EAAe9nxB,UAAUwiI,UAAY,SAAoBl1I,GACvD,IAAIwc,GAAOnqB,KAAK2npB,OAAOpkL,KAAK1gV,UAC5B,QAAO14H,IAAOA,GAAKxc,IAGrBw6xB,EAAe9nxB,UAAUgpxB,eAAiB,SAAyB5vgB,GACjE,MAAwB,aAAjBA,EAAS3xR,MAAuB9H,KAAK2npB,OAAOpkL,KAAKomU,iBAG1DzvB,EAAqB+sB,QAAQpoxB,IAAM,WAAc,OAAO,GAExDhZ,OAAOszwB,iBAAkBgvB,EAAe9nxB,UAAW65vB,GAE5CiuB,EA9C0B,CA+CjCrB,IAEE8C,GAAoC,SAAU9C,GAChD,WAA6Bzqb,EAAQhvI,EAAKw8jB,GAAS/+xB,IACjDg8xB,EAASlzwB,KAAK5zB,KAAMq8W,EAAQqtb,GAASr8jB,EAAK,MAC1CrtO,KAAK6pyB,QAAUA,GACf7pyB,KAAK8K,KAAOA,GAGTg8xB,IAAW8C,EAAoBtpxB,UAAYwmxB,IAChD8C,EAAoBvpxB,UAAYxa,OAAOm8D,OAAQ8kuB,GAAYA,EAASzmxB,YACtCvgB,YAAc8pyB,EAE5C,IAAI/tB,EAAuB,CAAE7stB,KAAM,CAAE+otB,cAAc,IAEnD8D,SAAqB7stB,KAAKnwC,IAAM,WAAc,OAAO7e,KAAK8K,KAAK/E,QAE/D6jyB,EAAoBvpxB,UAAUonxB,gBAAkB,SAA0Bp6jB,EAAKj7M,IAC7E,OAAIi7M,GAAOrtO,KAAK6pyB,QAAkB7pyB,KAAK6lyB,YAAczzwB,GAASpyB,KAAKgvD,KAAO,GACnEhvD,KAAK6lyB,WAAazzwB,IAG3Bw3wB,EAAoBvpxB,UAAU0lxB,WAAa,SAAqBl9sB,GAC9D,MAAO,CAACzjE,KAAMplB,KAAK6pyB,QAASz3wB,OAAQy2D,IAGtC+gtB,EAAoBvpxB,UAAUgpxB,eAAiB,SAAyBS,GACtE,MAAoB,kBAAbA,EAAIhiyB,MAA4BgiyB,EAAIphyB,OAAOg+wB,WAAaojB,EAAI9xkB,UAGrEnyN,OAAOszwB,iBAAkBywB,EAAoBvpxB,UAAWw7vB,GAEjD+tB,EA9B+B,CA+BtC9C,IAOEiD,GAA6B,SAAUjD,GACzC,WAAsBzqb,EAAQksH,EAAMl7P,EAAKy6iB,IACvCgf,EAASlzwB,KAAK5zB,KAAMq8W,EAAQ,GAAIhvI,EAAKy6iB,IACrC9nxB,KAAKuoe,KAAOA,EAGd,OAAKu+T,IAAWiD,EAAazpxB,UAAYwmxB,IACzCiD,EAAa1pxB,UAAYxa,OAAOm8D,OAAQ8kuB,GAAYA,EAASzmxB,YACtCvgB,YAAciqyB,EAErCA,EAAa/nuB,OAAS,SAAiBq6S,EAAQksH,EAAMkpO,GAAQpvrB,IAC3D,IAAIilc,GAASjlc,GAAK2nxB,UAAUzhU,EAAKzge,KAAK9C,MAClCu+d,GAAOjc,IAAUA,GAAOihB,EAAMlmd,GAAMovrB,IACxC,QAAKluO,KAASA,GAAKl2P,OACfk2P,GAAOulT,cAAyBnnwB,SAAU4md,EAAKzge,KAAKy7d,KAAKj2P,MAAMi7P,EAAMkpO,MAClE,IAAIs4F,EAAa1tb,EAAQksH,EAAMhF,GAAKl2P,IAAKk2P,GAAKukT,YAAcvkT,GAAKl2P,MAG1E08jB,EAAa1pxB,UAAUknxB,UAAY,WAAwB,MAAO,CAACh/T,KAAMvoe,KAAKuoe,KAAKzge,KAAK9C,KAAMgoO,MAAOhtO,KAAKuoe,KAAKv7P,MAAOmqB,eAAgBn3P,KAAK8nxB,aAE3IiiB,EAAa1pxB,UAAU8mxB,YAAc,SAAsB5+T,GAAQ,OAjgBD,GAigBQvoe,KAAKwsC,OAAuBxsC,KAAKuoe,KAAKnF,GAAGmF,IAEnHwhU,EAAa1pxB,UAAUipxB,UAAY,SAAoBlhuB,EAAMqlE,GAG3D,GAFAq5pB,EAASzmxB,UAAUipxB,UAAU11wB,KAAK5zB,KAAMooE,EAAMqlE,GApgBlC,GAsgBRztI,KAAKwsC,MAAoB,CAE3B,QADI6vU,GAASr8W,KAAKq8W,QACVA,GAAOj3V,MAAQi3V,GAASA,GAAOA,OACnCA,GAAO7vU,MAAQxsC,KAAKwsC,QAAS6vU,GAAO7vU,MAAQxsC,KAAKwsC,OACrDxsC,KAAKwsC,MA1gBK,IA8gBdu9vB,EAAa1pxB,UAAUzR,MAAQ,SAAgBw5D,EAAMqlE,EAAIprH,IACvD,IAAI0iD,GAAOgluB,EAAa/nuB,OAAOhiE,KAAKq8W,OAAQr8W,KAAKuoe,MAAM,EAAMlmd,IACzDo/G,GAAQzhI,KAAKw+D,SAAUxP,GAAOhvD,KAAKgvD,KACnCy+E,EAAKz+E,KAAQyyE,GAAQs/O,GAAat/O,GAAOgM,EAAIz+E,GAAM3sC,KACnD+lD,EAAO,IAAKq5D,GAAQs/O,GAAat/O,GAAO,EAAGr5D,EAAM/lD,KACrD,QAAS1T,GAAI,EAAGA,GAAI8yH,GAAM17H,OAAQ4I,KAAO8yH,GAAM9yH,IAAG0tW,OAASt3S,GAC3DA,UAAKvG,SAAWijE,GACT18D,IAGFgluB,EA3CwB,CA4C/BjD,IAKEmD,GAA6B,SAAUnD,GACzC,WAAsBzqb,EAAQj3V,EAAM8kxB,GAAWC,GAAW98jB,GAAKy6iB,GAAYkgB,GAAS3lxB,GAAMwmE,IACxFi+sB,EAASlzwB,KAAK5zB,KAAMq8W,EAAQj3V,EAAKqpmB,OAASi7K,GAAU,GAAIr8jB,GAAKy6iB,IAC7D9nxB,KAAKgoyB,QAAUA,GACfhoyB,KAAKolB,KAAOA,EACZplB,KAAKkqyB,UAAYA,GACjBlqyB,KAAKmqyB,UAAYA,GACbriB,IAAc9nxB,KAAKoqyB,eAAe/nxB,GAAMwmE,IAGzCi+sB,IAAWmD,EAAa3pxB,UAAYwmxB,IACzCmD,EAAa5pxB,UAAYxa,OAAOm8D,OAAQ8kuB,GAAYA,EAASzmxB,YACtCvgB,YAAcmqyB,EAErC,IAAI/sB,EAAuB,CAAElutB,KAAM,CAAE+otB,cAAc,GAAO/6nB,OAAQ,CAAE+6nB,cAAc,GAAOkvB,QAAS,CAAElvB,cAAc,IAWlHkyB,SAAajouB,OAAS,SAAiBq6S,EAAQj3V,GAAM8kxB,GAAWC,GAAW9nxB,GAAMwmE,IAC/E,IAAIxuB,GAEyCgwuB,GAAzC/iV,GAASjlc,GAAK2nxB,UAAU5kxB,GAAKtd,KAAK9C,MAClCu+d,GAAOjc,IAAUA,GAAOlic,GAAM/C,GAAM,WAGtC,OAAKgoxB,GACDA,GAAQhub,OAAiBgub,GAAQhub,OAAOmrb,eAAe6C,SAA3D,EADuBxhtB,IAEtBqhtB,GAAWC,IAEV98jB,GAAMk2P,IAAQA,GAAKl2P,IAAKy6iB,GAAavkT,IAAQA,GAAKukT,WACtD,GAAI1iwB,GAAKkyvB,OACP,GAAKjqiB,IAA0CviO,GACtB,GAAhBuiO,GAAI62I,SAAiB,MAAM,IAAIg6G,WAAW,iDADvC7wP,GAAM1rN,SAAS23F,eAAel0F,GAAKta,WAErCuiO,KAC2DA,IAAzEhzK,GAASyutB,cAAyBnnwB,SAAUyD,GAAKtd,KAAKy7d,KAAKj2P,MAAMloN,MAAqBioN,IAAKy6iB,GAAazttB,GAAOyttB,aAExGA,KAAe1iwB,GAAKkyvB,QAA0B,MAAhBjqiB,GAAI5yK,WAChC4yK,GAAI2nJ,aAAa,qBAAsB3nJ,GAAIk2jB,iBAAkB,GAC9Dn+wB,GAAKtd,KAAKy7d,KAAKr6E,YAAa77K,GAAI67K,WAAY,IAGlD,IAAI8+Y,GAAU36jB,GAGd,OAFAA,GAAMi9jB,GAAej9jB,GAAK68jB,GAAW9kxB,IAEjCm+c,GACO8mU,GAAU,IAAIE,GAAmBlub,EAAQj3V,GAAM8kxB,GAAWC,GAAW98jB,GAAKy6iB,GAAYkgB,GACvDzkU,GAAMlhd,GAAMwmE,GAAM,GACnDzjE,GAAKkyvB,OACH,IAAIkzB,GAAanub,EAAQj3V,GAAM8kxB,GAAWC,GAAW98jB,GAAK26jB,GAAS3lxB,IAEnE,IAAI4nxB,EAAa5tb,EAAQj3V,GAAM8kxB,GAAWC,GAAW98jB,GAAKy6iB,GAAYkgB,GAAS3lxB,GAAMwmE,GAAM,IAGxGohtB,EAAa5pxB,UAAUknxB,UAAY,WACjC,IAAItkB,EAASjjxB,KAGb,GAAIA,KAAKolB,KAAKtd,KAAKy7d,KAAKknU,cAAiB,OAAO,KAKhD,IAAIj7N,GAAO,CAACpqjB,KAAMplB,KAAKolB,KAAKtd,KAAK9C,KAAMgoO,MAAOhtO,KAAKolB,KAAK4nN,OACxD,OAAIhtO,KAAKolB,KAAKtd,KAAKy7d,KAAKv3c,OAAQwjjB,GAAK9gG,mBAAqB,QAC1D1ue,KAAS8nxB,aAAe9nxB,KAAKgnyB,YAAex3N,GAAKr4U,eAAiBn3P,KAAK8nxB,WAChEt4M,GAAKq4M,WAAa,WAAc,OAAO5E,EAAO6E,WAAatlT,QAAiBygT,EAAO79vB,KAAKxG,SACxF4wjB,IAGTy6N,EAAa5pxB,UAAU+mxB,YAAc,SAAsBhixB,EAAM8kxB,GAAWC,IAC1E,OA3mBY,GA2mBLnqyB,KAAKwsC,OAAsBpnB,EAAKg+c,GAAGpje,KAAKolB,OAC7CslxB,GAAcR,GAAWlqyB,KAAKkqyB,YAAcC,GAAU/mU,GAAGpje,KAAKmqyB,YAGlEjtB,EAAqBlutB,KAAKnwC,IAAM,WAAc,OAAO7e,KAAKolB,KAAK25c,UAE/Dm+S,EAAqBlgoB,OAAOn+H,IAAM,WAAc,OAAO7e,KAAKolB,KAAKqpmB,OAAS,EAAI,GAM9Ew7K,EAAa5pxB,UAAU+pxB,eAAiB,SAAyB/nxB,EAAMwmE,IACrE,IAAIo6rB,GAASjjxB,KAETyxsB,GAASzxsB,KAAKolB,KAAKo3vB,cAAelhvB,GAAMutD,GACxC8htB,GAActoxB,EAAK60hB,WAAal3iB,KAAK4qyB,qBAAqBvoxB,EAAMwmE,IAChEgitB,GAAmBF,IAAeA,GAAY9htB,KAAM,EAAK8htB,GAAc,KACvEG,GAAqBH,IAAeA,GAAY9htB,IAAM,EACtDkitB,GAAU,IAAIC,GAAgBhryB,KAAM6qyB,IAAoBA,GAAiBzlxB,OA0nBjF,YAAkBi3V,EAAQ4ub,EAAMC,EAAUC,GACxC,IAAIC,EAASH,EAAKG,OAAO/ub,GAASjqV,GAAS,EAE3C,GAAqB,GAAjBg5wB,EAAOrlyB,OAUX,QADIslyB,GAAY,EAAG17tB,GAAS,GAAI27tB,GAAW,KAClC73vB,GAAc,IAAK,CAC1B,GAAI43vB,GAAYD,EAAOrlyB,QAAUqlyB,EAAOC,IAAW59pB,IAAMr7G,GAAQ,CAE/D,QADIu1nB,GAASyjJ,EAAOC,MAAcE,QAAW,EACtCF,GAAYD,EAAOrlyB,QAAUqlyB,EAAOC,IAAW59pB,IAAMr7G,KACvDm5wB,KAAYA,GAAU,CAAC5jJ,MAAUlipB,KAAK2lyB,EAAOC,OAClD,GAAIE,GAAS,CACXA,GAAQzxxB,KAAK0xxB,IACb,QAAShsB,GAAM,EAAGA,GAAM+rB,GAAQxlyB,OAAQy5wB,KAAS0rB,EAASK,GAAQ/rB,IAAM/ruB,KAAe63vB,SAEvFJ,EAASvjJ,GAAQl0mB,KAAe63vB,IAIpC,IAAIG,QAAW,EAAS7nxB,QAAS,EACjC,GAAI0nxB,GACF1nxB,IAAQ,EACR6nxB,GAAUH,GACVA,GAAW,eACF73vB,GAAc4oU,EAAO+hH,YAI9B,MAHAx6c,GAAQ6vB,GACRg4vB,GAAUpvb,EAAO59S,MAAMhrB,MAKzB,QAASisuB,GAAM,EAAGA,GAAM/vsB,GAAO5pE,OAAQ25wB,KAAa/vsB,GAAO+vsB,IAAKjyoB,IAAMr7G,IAAUu9C,GAAO7rD,OAAO47vB,KAAO,GACrG,KAAO2rB,GAAYD,EAAOrlyB,QAAUqlyB,EAAOC,IAAWjjuB,MAAQh2C,IAAUg5wB,EAAOC,IAAW59pB,GAAKr7G,IAC3Fu9C,GAAOlqE,KAAK2lyB,EAAOC,OAEvB,IAAI/gwB,GAAMlY,GAASq5wB,GAAQ1sU,SAC3B,GAAI0sU,GAAQn0B,OAAQ,CAClB,IAAIo0B,GAAQphwB,GACR+gwB,GAAYD,EAAOrlyB,QAAUqlyB,EAAOC,IAAWjjuB,KAAOsjuB,KAASA,GAAQN,EAAOC,IAAWjjuB,MAC7F,QAASujuB,GAAM,EAAGA,GAAMh8tB,GAAO5pE,OAAQ4lyB,KAAah8tB,GAAOg8tB,IAAKl+pB,GAAKi+pB,KAASA,GAAQ/7tB,GAAOg8tB,IAAKl+pB,IAC9Fi+pB,GAAQphwB,KACVghwB,GAAWG,GAAQjzB,IAAIkzB,GAAQt5wB,IAC/Bq5wB,GAAUA,GAAQjzB,IAAI,EAAGkzB,GAAQt5wB,IACjCkY,GAAMohwB,GACN9nxB,IAAQ,GAOZunxB,EAAOM,GAHU97tB,GAAO5pE,OAClB0lyB,GAAQrvB,WAAaqvB,GAAQh9K,OAAS9+iB,GAAO5iE,OAAO,SAAUvB,IAAK,OAAQA,GAAEimsB,SAC7E9hoB,GAAO/gE,QAFoB86xB,GAGNuB,EAAKW,SAASx5wB,GAAQq5wB,IAAU7nxB,IAC3DwO,GAASkY,QAvDT,QAAS37B,GAAI,EAAGA,GAAI0tW,EAAO+hH,WAAYzvd,KAAK,CAC1C,IAAI8vD,GAAQ49S,EAAO59S,MAAM9vD,IACzBw8xB,EAAO1suB,GAAO2suB,EAAQH,EAAKW,SAASx5wB,GAAQqsC,IAAQ9vD,IACpDyjB,IAAUqsC,GAAMsga,WAhoBlB8sU,CAAS7ryB,KAAKolB,KAAMplB,KAAKmqyB,UAAW,SAAUxiJ,GAAQh5oB,GAAGm9xB,IACnDnkJ,GAAOpkL,KAAK51P,MACZo9jB,GAAQgB,YAAYpkJ,GAAOpkL,KAAK51P,MAAO8je,GAAQpvrB,GAC1CsloB,GAAO7/oB,KAAKsgF,MAAQ,IAAM0jtB,IAC/Bf,GAAQgB,YAAYp9xB,IAAKs0wB,GAAO79vB,KAAKg5c,WAAak7S,OAAY2J,GAAO79vB,KAAKq5C,MAAM9vD,IAAGg/N,MAAO8je,GAAQpvrB,GAGtG0oxB,GAAQiB,YAAYrkJ,GAAQtloB,EAAMiZ,KACjC,SAAUmjC,GAAOyruB,GAAWC,GAAWx7xB,IAIxC,IAAIs9xB,GAFJlB,GAAQgB,YAAYttuB,GAAMkvK,MAAO8je,GAAQpvrB,GAGrC0oxB,GAAQmB,cAAcztuB,GAAOyruB,GAAWC,GAAWx7xB,KAAem8xB,IAAsBzoxB,EAAKnY,MAAM41D,UAAUsI,KAAO9sC,IAC7GjZ,EAAKnY,MAAM41D,UAAU2tE,GAAKnyG,GAAMmjC,GAAMsga,WACrCktU,GAAYlB,GAAQoB,mBAAmBxB,GAAYvlxB,QAAS,GAC7D2lxB,GAAQqB,aAAa3tuB,GAAOyruB,GAAWC,GAAW8B,GAAW5pxB,IAAkB0oxB,GAAQsB,eAAe5tuB,GAAOyruB,GAAWC,GAAW9nxB,EAAM1T,KAElJo8xB,GAAQn8rB,QAAQnwC,GAAOyruB,GAAWC,GAAW9nxB,EAAMiZ,IAErDA,IAAOmjC,GAAMsga,WAGfgsU,GAAQgB,YAAYrC,GAASj4F,GAAQpvrB,GACjCriB,KAAKolB,KAAKq/c,aAAesmU,GAAQuB,oBACrCvB,GAAQwB,eAGJxB,GAAQr6qB,SA3pBoC,GA2pBzB1wH,KAAKwsC,SAEtBq+vB,IAAoB7qyB,KAAKwsyB,wBAAwBnqxB,EAAMwoxB,IAC3D4B,GAAYzsyB,KAAK8nxB,WAAY9nxB,KAAKw+D,SAAUn8C,GACxC9P,GAAO+mtB,KA0pBjB,YAAkBjsf,GAChB,GAAoB,MAAhBA,EAAI5yK,UAAoC,MAAhB4yK,EAAI5yK,SAAkB,CAChD,IAAIiyuB,EAASr/jB,EAAIljO,MAAMwyC,QACvB0wL,EAAIljO,MAAMwyC,QAAU+vvB,EAAS,kCAC7Bv3xB,OAAO0vB,iBAAiBwoM,GACxBA,EAAIljO,MAAMwyC,QAAU+vvB,GA/pBAC,CAAS3syB,KAAKqtO,OAIpC48jB,EAAa5pxB,UAAUuqxB,qBAAuB,SAA+BvoxB,EAAMwmE,IAGjF,IAAI43B,GAAMp+F,EAAKnY,MAAM41D,UACjBsI,GAAOq4C,GAAIr4C,KACXqlE,GAAKhtB,GAAIgtB,GACb,OAAMprH,EAAKnY,MAAM41D,qBAAqBiia,KAAkB35Z,GAAOygB,IAAO4kD,GAAK5kD,GAAM7oF,KAAKolB,KAAKxG,QAAQowC,MACnG,KAAI4za,GAAMvgd,EAAKyvS,KAAKs9K,eAChBk5S,GAupBR,YAAwBljwB,EAAMgN,GAC5B,OAAS,CACP,GAAqB,GAAjBhN,EAAK8+V,SAAiB,OAAO9+V,EACjC,GAAqB,GAAjBA,EAAK8+V,UAAiB9xV,EAAS,EAAG,CACpC,GAAIhN,EAAK65jB,WAAWl5kB,OAASqsB,GAA8C,GAApChN,EAAK65jB,WAAW7sjB,GAAQ8xV,SAC3D,OAAO9+V,EAAK65jB,WAAW7sjB,GAE3BA,EAAS2sc,GADT35c,EAAOA,EAAK65jB,WAAW7sjB,EAAS,QACdhN,MACQ,GAAjBA,EAAK8+V,UAAiB9xV,EAAShN,EAAK65jB,WAAWl5kB,QAIxD,OAAO,KAHPqf,EAAOA,EAAK65jB,WAAW7sjB,GACvBA,EAAS,IAjqBIw6wB,CAAehqU,GAAIyM,UAAWzM,GAAIqmU,aACjD,GAAK3gB,IAAatoxB,KAAKqtO,IAAIl/N,SAASm6wB,GAAS76nB,YAE7C,IAAIztJ,KAAKolB,KAAKo3vB,cAAe,CAI3B,IAAI1xwB,GAAOw9wB,GAAS5B,UAChBmmB,GAiqBV,YAA4B7sB,EAAMl1wB,EAAMs9D,EAAMqlE,GAC5C,QAAS9+H,EAAI,EAAGk6E,GAAM,EAAGl6E,EAAIqxwB,EAAK5hT,YAAcv1Y,IAAO4kD,GAAK,CAC1D,IAAIhvE,GAAQuhtB,EAAKvhtB,MAAM9vD,KAAMm+xB,GAAajktB,GAE1C,GADAA,IAAOpqB,GAAMsga,SACRtga,GAAM64sB,OAEX,SADI/0vB,GAAMk8C,GAAM3zD,KACT6D,EAAIqxwB,EAAK5hT,YAAY,CAC1B,IAAI/yd,GAAO20wB,EAAKvhtB,MAAM9vD,KAEtB,GADAk6E,IAAOx9E,GAAK0zd,UACP1zd,GAAKiswB,OAAU,MACpB/0vB,IAAOlX,GAAKP,KAEd,GAAI+9E,IAAOzgB,EAAM,CACf,IAAIY,GAAQzmD,GAAIiO,YAAY1lB,EAAM2iI,EAAKq/pB,IACvC,GAAI9juB,IAAS,GAAKA,GAAQl+D,EAAK/E,OAAS+myB,IAAc1kuB,EAClD,OAAO0kuB,GAAa9juB,KAG5B,OAAO,EAnrBW+juB,CAAmB/syB,KAAKolB,KAAKxG,QAAS9T,GAAMs9D,GAAOygB,GAAK4kD,GAAK5kD,IAC3E,OAAOgktB,GAAU,EAAI,KAAO,CAACznxB,KAAMkjwB,GAAUz/rB,IAAKgktB,GAAS/hyB,KAAMA,IAEjE,MAAO,CAACsa,KAAMkjwB,GAAUz/rB,KAAK,MAIjCohtB,EAAa5pxB,UAAUmsxB,wBAA0B,SAAkCnqxB,EAAMo+F,IACvF,IAAIr7F,GAAOq7F,GAAIr7F,KACXyjE,GAAM43B,GAAI53B,IACV/9E,GAAO21G,GAAI31G,KAGf,IAAI9K,KAAK+nyB,QAAQ3ixB,IAIjB,SADI+8vB,GAAU/8vB,GAER+8vB,GAAQ10nB,YAAcztJ,KAAK8nxB,WADzB3F,GAAUA,GAAQ10nB,WAAY,CAEpC,KAAO00nB,GAAQyE,iBAAmBzE,GAAQ10nB,WAAW/vG,YAAYykuB,GAAQyE,iBACzE,KAAOzE,GAAQr3Z,aAAeq3Z,GAAQ10nB,WAAW/vG,YAAYykuB,GAAQr3Z,aACjEq3Z,GAAQqhB,aAAcrhB,GAAQqhB,WAAa,MAEjD,IAAI96O,GAAO,IAAIkhP,GAAoB5pyB,KAAMmixB,GAAS/8vB,GAAMta,IACxDuX,EAAK2qxB,iBAAiBvnyB,KAAKijjB,IAG3B1ojB,KAAKw+D,SAAWuiT,GAAa/gX,KAAKw+D,SAAUqqB,GAAKA,GAAM/9E,GAAK/E,OAAQsc,EAAMqmiB,MAM5EuhP,EAAa5pxB,UAAUqmG,OAAS,SAAiBthG,EAAM8kxB,GAAWC,GAAW9nxB,IAC3E,QArtBgE,GAqtB5DriB,KAAKwsC,QACJpnB,EAAKiyvB,WAAWr3wB,KAAKolB,QAC1BplB,KAAKityB,YAAY7nxB,EAAM8kxB,GAAWC,GAAW9nxB,IACtC,KAGT4nxB,EAAa5pxB,UAAU4sxB,YAAc,SAAsB7nxB,EAAM8kxB,GAAWC,GAAW9nxB,IACrFriB,KAAKktyB,gBAAgBhD,IACrBlqyB,KAAKolB,KAAOA,EACZplB,KAAKmqyB,UAAYA,GACbnqyB,KAAK8nxB,YAAc9nxB,KAAKoqyB,eAAe/nxB,GAAMriB,KAAK6lyB,YACtD7lyB,KAAKwsC,MAhuBO,GAmuBdy9vB,EAAa5pxB,UAAU6sxB,gBAAkB,SAA0BhD,GACjE,IAAIQ,GAAcR,EAAWlqyB,KAAKkqyB,WAClC,KAAIiD,GAAqC,GAAzBntyB,KAAKgoyB,QAAQ9jb,SACzBkpb,GAASptyB,KAAKqtO,IAClBrtO,KAAKqtO,IAAMggkB,GAAertyB,KAAKqtO,IAAKrtO,KAAKgoyB,QACfsF,GAAiBttyB,KAAKkqyB,UAAWlqyB,KAAKolB,KAAM+nxB,IAC5CG,GAAiBpD,EAAWlqyB,KAAKolB,KAAM+nxB,KAC7DntyB,KAAKqtO,KAAO+/jB,KACdA,GAAO5J,WAAa,KACpBxjyB,KAAKqtO,IAAIm2jB,WAAaxjyB,MAExBA,KAAKkqyB,UAAYA,IAInBD,EAAa5pxB,UAAU8puB,WAAa,WAClCnqvB,KAAKgoyB,QAAQpgvB,UAAUY,IAAI,6BACvBxoD,KAAK8nxB,aAAe9nxB,KAAKolB,KAAKtd,KAAKy7d,KAAKr6E,aAAalpZ,KAAKqtO,IAAI67K,WAAY,IAIhF+gZ,EAAa5pxB,UAAUktxB,aAAe,WACpCvtyB,KAAKgoyB,QAAQpgvB,UAAUnJ,OAAO,6BAC1Bz+C,KAAK8nxB,aAAe9nxB,KAAKolB,KAAKtd,KAAKy7d,KAAKr6E,YAAalpZ,KAAKqtO,IAAIvmE,gBAAgB,cAGpFo2mB,EAAqB+pB,QAAQpoxB,IAAM,WAAc,OAAO7e,KAAKolB,KAAK+3vB,QAElEt3wB,OAAOszwB,iBAAkB8wB,EAAa5pxB,UAAW68vB,GAE1C+sB,EAnOwB,CAoO/BnD,IAIF,YAAqBt+a,EAAK0hb,EAAWC,EAAW98jB,EAAKhrN,GACnDioxB,UAAej9jB,EAAK68jB,EAAW1hb,GACxB,IAAIyhb,GAAa,KAAMzhb,EAAK0hb,EAAWC,EAAW98jB,EAAKA,EAAKA,EAAKhrN,EAAM,GAGhF,IAAImoxB,GAA6B,SAAUP,GACzC,WAAsB5tb,EAAQj3V,EAAM8kxB,GAAWC,GAAW98jB,GAAK26jB,GAAS3lxB,IACtE4nxB,EAAar2wB,KAAK5zB,KAAMq8W,EAAQj3V,EAAM8kxB,GAAWC,GAAW98jB,GAAK,KAAM26jB,GAAS3lxB,IAG7E4nxB,IAAeO,EAAalqxB,UAAY2pxB,IAC7CO,EAAanqxB,UAAYxa,OAAOm8D,OAAQiouB,GAAgBA,EAAa5pxB,YAC9CvgB,YAAc0qyB,EAErC,IAAI9rB,EAAuB,CAAEuoB,QAAS,CAAElvB,cAAc,IAEtDyyB,SAAanqxB,UAAUknxB,UAAY,WAEjC,QADIj7xB,EAAOtM,KAAKgoyB,QAAQv6oB,WACjBnhJ,GAAQA,GAAQtM,KAAKqtO,MAAQ/gO,EAAKkhyB,UAAYlhyB,EAAOA,EAAKmhJ,WACjE,MAAO,CAACnhJ,KAAMA,IAAQ,IAGxBk+xB,EAAanqxB,UAAUqmG,OAAS,SAAiBthG,EAAM8kxB,GAAWh/xB,GAAGmX,IACnE,QA7xBgE,GA6xB5DriB,KAAKwsC,OA7xBG,GA6xBqBxsC,KAAKwsC,QAAuBxsC,KAAKytyB,aAC7DroxB,EAAKiyvB,WAAWr3wB,KAAKolB,QAC1BplB,KAAKktyB,gBAAgBhD,KA/xBT,GAgyBPlqyB,KAAKwsC,OAAsBpnB,EAAKta,MAAQ9K,KAAKolB,KAAKta,OAASsa,EAAKta,MAAQ9K,KAAKgoyB,QAAQthB,YACxF1mxB,KAAKgoyB,QAAQthB,UAAYthwB,EAAKta,KAC1BuX,GAAKqrxB,aAAe1tyB,KAAKgoyB,UAAW3lxB,GAAKqrxB,YAAc,OAE7D1tyB,KAAKolB,KAAOA,EACZplB,KAAKwsC,MAryBO,EAsyBL,KAGTg+vB,EAAanqxB,UAAUotxB,SAAW,WAEhC,QADIE,EAAY3tyB,KAAKq8W,OAAOyra,WACnBh6wB,GAAI9N,KAAKgoyB,QAASl6xB,GAAGA,GAAIA,GAAE2/I,WAAc,GAAI3/I,IAAK6/xB,EAAa,OAAO,EAC/E,OAAO,GAGTnD,EAAanqxB,UAAU0lxB,WAAa,SAAqBl9sB,GACvD,MAAO,CAACzjE,KAAMplB,KAAKgoyB,QAAS51wB,OAAQy2D,IAGtC2htB,EAAanqxB,UAAUonxB,gBAAkB,SAA0Bp6jB,EAAKj7M,GAAQg7vB,IAC9E,OAAI//iB,GAAOrtO,KAAKgoyB,QAAkBhoyB,KAAK6lyB,WAAa34xB,KAAKulC,IAAIrgB,GAAQpyB,KAAKolB,KAAKta,KAAK/E,QAC7EkkyB,EAAa5pxB,UAAUonxB,gBAAgB7zwB,KAAK5zB,KAAMqtO,EAAKj7M,GAAQg7vB,KAGxEod,EAAanqxB,UAAUgpxB,eAAiB,SAAyB5vgB,GAC/D,MAAwB,iBAAjBA,EAAS3xR,MAA4C,aAAjB2xR,EAAS3xR,MAGtD0iyB,EAAanqxB,UAAUzR,MAAQ,SAAgBw5D,EAAMqlE,GAAIprH,IACvD,IAAI+C,GAAOplB,KAAKolB,KAAKozvB,IAAIpwsB,EAAMqlE,IAAK4/F,GAAM1rN,SAAS23F,eAAel0F,GAAKta,MACvE,OAAO,IAAI0/xB,EAAaxqyB,KAAKq8W,OAAQj3V,GAAMplB,KAAKkqyB,UAAWlqyB,KAAKmqyB,UAAW98jB,GAAKA,GAAKhrN,KAGvFmoxB,EAAanqxB,UAAUipxB,UAAY,SAAoBlhuB,EAAMqlE,IAC3Dw8pB,EAAa5pxB,UAAUipxB,UAAU11wB,KAAK5zB,KAAMooE,EAAMqlE,IAC9CztI,KAAKqtO,KAAOrtO,KAAKgoyB,UAAoB,GAAR5/tB,GAAaqlE,IAAMztI,KAAKgoyB,QAAQthB,UAAU3gxB,UACvE/F,KAAKwsC,MAp0BuD,IAu0BlEkyuB,EAAqBuoB,QAAQpoxB,IAAM,WAAc,OAAO,GAExDhZ,OAAOszwB,iBAAkBqxB,EAAanqxB,UAAWq+vB,GAE1C8rB,EAhEwB,CAiE/BP,IAIE/B,GAAqC,SAAUpB,GACjD,aACEA,EAASnzwB,MAAM3zB,KAAM+8B,WAGlB+pwB,IAAWoB,EAAqB5nxB,UAAYwmxB,IACjDoB,EAAqB7nxB,UAAYxa,OAAOm8D,OAAQ8kuB,GAAYA,EAASzmxB,YACtCvgB,YAAcooyB,EAE7C,IAAIvmB,EAAuB,CAAEslB,QAAS,CAAElvB,cAAc,GAAOyuB,gBAAiB,CAAEzuB,cAAc,IAE9FmwB,SAAqB7nxB,UAAUknxB,UAAY,WAAwB,MAAO,CAACr9O,QAAQ,IACnFg+O,EAAqB7nxB,UAAUgnxB,YAAc,SAAsB5suB,GAAY,OA51BjE,GA41BwEz6D,KAAKwsC,OAAsBxsC,KAAKqtO,IAAI5yK,UAAYA,GACtIkntB,EAAqBslB,QAAQpoxB,IAAM,WAAc,OAAO,GACxD8iwB,EAAqB6kB,gBAAgB3nxB,IAAM,WAAc,MAA4B,OAArB7e,KAAKqtO,IAAI5yK,UAEzE50D,OAAOszwB,iBAAkB+uB,EAAqB7nxB,UAAWshwB,GAElDumB,EAlBgC,CAmBvCpB,IAKEyD,GAAmC,SAAUN,GAC/C,WAA4B5tb,EAAQj3V,EAAM8kxB,EAAWC,GAAW98jB,GAAKy6iB,GAAYkgB,GAASzkU,GAAMlhd,GAAMwmE,IACpGohtB,EAAar2wB,KAAK5zB,KAAMq8W,EAAQj3V,EAAM8kxB,EAAWC,GAAW98jB,GAAKy6iB,GAAYkgB,GAAS3lxB,GAAMwmE,IAC5F7oF,KAAKuje,KAAOA,GAGd,OAAK0mU,IAAeM,EAAmBjqxB,UAAY2pxB,IACnDM,EAAmBlqxB,UAAYxa,OAAOm8D,OAAQiouB,GAAgBA,EAAa5pxB,YAC9CvgB,YAAcyqyB,EAK3CA,EAAmBlqxB,UAAUqmG,OAAS,SAAiBthG,EAAM8kxB,EAAWC,GAAW9nxB,IACjF,GAt3BgE,GAs3B5DriB,KAAKwsC,MAAuB,OAAO,EACvC,GAAIxsC,KAAKuje,KAAK78W,OAAQ,CACpB,IAAIn0G,GAASvS,KAAKuje,KAAK78W,OAAOthG,EAAM8kxB,EAAWC,IAC/C,OAAI53xB,IAAUvS,KAAKityB,YAAY7nxB,EAAM8kxB,EAAWC,GAAW9nxB,IACpD9P,GACF,SAAKvS,KAAK8nxB,aAAe1iwB,EAAKqpmB,SAG5Bw7K,EAAa5pxB,UAAUqmG,OAAO9yF,KAAK5zB,KAAMolB,EAAM8kxB,EAAWC,GAAW9nxB,KAIhFkoxB,EAAmBlqxB,UAAU8puB,WAAa,WACxCnqvB,KAAKuje,KAAK4mR,WAAanqvB,KAAKuje,KAAK4mR,aAAe8/C,EAAa5pxB,UAAU8puB,WAAWv2tB,KAAK5zB,OAGzFuqyB,EAAmBlqxB,UAAUktxB,aAAe,WAC1CvtyB,KAAKuje,KAAKgqU,aAAevtyB,KAAKuje,KAAKgqU,eAAiBtD,EAAa5pxB,UAAUktxB,aAAa35wB,KAAK5zB,OAG/FuqyB,EAAmBlqxB,UAAUwid,aAAe,SAAuB50d,EAAQmvV,EAAMtrC,GAAMyxN,IACrFvjhB,KAAKuje,KAAKV,aAAe7ie,KAAKuje,KAAKV,aAAa50d,EAAQmvV,EAAMtrC,IAC1Dm4e,EAAa5pxB,UAAUwid,aAAajvc,KAAK5zB,KAAMiO,EAAQmvV,EAAMtrC,GAAMyxN,KAGzEgnR,EAAmBlqxB,UAAUolT,QAAU,WACjCzlU,KAAKuje,KAAK99J,SAAWzlU,KAAKuje,KAAK99J,UACnCwke,EAAa5pxB,UAAUolT,QAAQ7xS,KAAK5zB,OAGtCuqyB,EAAmBlqxB,UAAUwiI,UAAY,SAAoBl1I,GAC3D,QAAO3N,KAAKuje,KAAK1gV,WAAY7iJ,KAAKuje,KAAK1gV,UAAUl1I,IAGnD48xB,EAAmBlqxB,UAAUgpxB,eAAiB,SAAyB5vgB,GACrE,OAAOz5R,KAAKuje,KAAK8lU,eAAiBrpyB,KAAKuje,KAAK8lU,eAAe5vgB,GAAYwwgB,EAAa5pxB,UAAUgpxB,eAAez1wB,KAAK5zB,KAAMy5R,IAGnH8wgB,EApD8B,CAqDrCN,IAMF,YAAqB0D,EAAWC,EAAOvrxB,GAErC,QADIgrN,EAAMsgkB,EAAU57e,WAAY87e,GAAU,EACjCl/xB,GAAI,EAAGA,GAAIi/xB,EAAM7nyB,OAAQ4I,KAAK,CACrC,IAAI+5iB,GAAOklP,EAAMj/xB,IAAIm/xB,GAAWplP,GAAKr7U,IACrC,GAAIygkB,GAASrgpB,YAAckgpB,EAAW,CACpC,KAAOG,IAAYzgkB,GAAOA,EAAM0gkB,GAAG1gkB,GAAMwgkB,GAAU,EACnDxgkB,EAAMA,EAAIy9I,iBAEV+ib,GAAU,EACVF,EAAUtvb,aAAayvb,GAAUzgkB,GAEnC,GAAIq7U,cAAgBqhP,GAAc,CAChC,IAAIlhtB,GAAMwkJ,EAAMA,EAAIu5iB,gBAAkB+mB,EAAU1pU,UAChDwoU,GAAY/jP,GAAKo/N,WAAYp/N,GAAKlqf,SAAUn8C,GAC5CgrN,EAAMxkJ,GAAMA,GAAIiiS,YAAc6ib,EAAU57e,YAG5C,KAAO1kF,GAAOA,EAAM0gkB,GAAG1gkB,GAAMwgkB,GAAU,EACnCA,GAAWxrxB,EAAKqrxB,aAAeC,IAAatrxB,EAAKqrxB,YAAc,MAGrE,YAAwBjzuB,GAClBA,IAAYz6D,KAAKy6D,SAAWA,GAElCuzuB,GAAe3txB,UAAYxa,OAAOm8D,OAAO,MAEzC,IAAIisuB,GAAS,CAAC,IAAID,IAElB,YAA0B9D,EAAW9kxB,EAAM+nxB,GACzC,GAAwB,GAApBjD,EAAUnkyB,OAAe,OAAOkoyB,GAIpC,QAFI9/qB,EAAMg/qB,EAAYc,GAAO,GAAK,IAAID,GAAgBz7xB,EAAS,CAAC47G,GAEvDx/G,GAAI,EAAGA,GAAIu7xB,EAAUnkyB,OAAQ4I,KAAK,CACzC,IAAIq+N,GAAQk9jB,EAAUv7xB,IAAG7G,KAAKklO,MAC9B,GAAKA,GAIL,QAAShoO,MAHLgoO,GAAMvyK,UACNloD,EAAO9M,KAAK0oH,EAAM,IAAI6/qB,GAAehhkB,GAAMvyK,WAE9BuyK,GAAO,CACtB,IAAI1rN,GAAM0rN,GAAMhoO,IACL,MAAPsc,KACA6rxB,GAA8B,GAAjB56xB,EAAOxM,QACpBwM,EAAO9M,KAAK0oH,EAAM,IAAI6/qB,GAAe5oxB,EAAKg3vB,SAAW,OAAS,QACtD,SAAZ8xB,GAAuB//qB,EAAIhiE,OAASgiE,EAAIhiE,MAAQgiE,EAAIhiE,MAAQ,IAAM,IAAM7qC,GACvD,SAARtc,GAAmBmpH,EAAIhkH,OAASgkH,EAAIhkH,MAAQgkH,EAAIhkH,MAAQ,IAAM,IAAMmX,GAC5D,YAARtc,KAAsBmpH,EAAInpH,IAAQsc,MAI/C,OAAO/O,EAGT,YAAwB47xB,EAAUnG,EAASoG,EAAcC,GAEvD,GAAID,GAAgBH,IAAUI,GAAeJ,GAAU,OAAOjG,EAG9D,QADIsG,EAAStG,EACJr5xB,GAAI,EAAGA,GAAI0/xB,EAAYtoyB,OAAQ4I,KAAK,CAC3C,IAAIs8xB,GAAOoD,EAAY1/xB,IAAIs6O,GAAOmljB,EAAaz/xB,IAC/C,GAAIA,GAAG,CACL,IAAI0tW,QAAU,EACVpzH,IAAQA,GAAKxuL,UAAYwwuB,GAAKxwuB,UAAY6zuB,GAAUH,IACnD9xb,GAASiyb,EAAO7gpB,aAAe4uN,GAAOyY,QAAQz5V,eAAiB4vwB,GAAKxwuB,YAGvE4hT,GAAS16V,SAAS+O,cAAcu6wB,GAAKxwuB,WAC9B+yuB,UAAW,EAClBnxb,GAAOxhU,YAAYyzvB,GACnBrljB,GAAOgljB,GAAO,IACdK,EAASjyb,GAGbkyb,GAAgBD,EAAQrljB,IAAQgljB,GAAO,GAAIhD,IAE7C,OAAOqD,EAGT,YAAyBjhkB,EAAK4b,EAAMkghB,GAClC,QAASnkwB,KAAQikP,EACD,SAARjkP,GAA2B,SAARA,GAA2B,YAARA,KAAwBA,KAAQmkwB,IACxE97hB,EAAIvmE,gBAAgB9hK,GAC1B,QAAS4+wB,KAAUza,EACD,SAAVya,GAA+B,SAAVA,GAA+B,YAAVA,GAAwBza,EAAIya,IAAW36hB,EAAK26hB,IACxFv2iB,EAAIxzH,aAAa+pqB,EAAQza,EAAIya,IACnC,GAAI36hB,EAAK98L,OAASg9sB,EAAIh9sB,MAAO,CAG3B,QAFIqivB,GAAWvljB,EAAK98L,MAAQ88L,EAAK98L,MAAMn1C,MAAM,KAAKjK,OAAOi7T,SAAW0he,GAChE+E,GAAUtlC,EAAIh9sB,MAAQg9sB,EAAIh9sB,MAAMn1C,MAAM,KAAKjK,OAAOi7T,SAAW0he,GACxD/6xB,GAAI,EAAGA,GAAI6/xB,GAASzoyB,OAAQ4I,MAA2C,GAAhC8/xB,GAAQ3uxB,QAAQ0uxB,GAAS7/xB,MACrE0+N,EAAIzlL,UAAUnJ,OAAO+vvB,GAAS7/xB,KAClC,QAAS6wwB,GAAM,EAAGA,GAAMivB,GAAQ1oyB,OAAQy5wB,MAA+C,GAAlCgvB,GAAS1uxB,QAAQ2uxB,GAAQjvB,MAC1EnyiB,EAAIzlL,UAAUY,IAAIimvB,GAAQjvB,KAEhC,GAAIv2hB,EAAK9+O,OAASg/vB,EAAIh/vB,MAAO,CAC3B,GAAI8+O,EAAK9+O,MAEP,QAD4F0yB,GAAxF6yB,GAAO,gFACJ7yB,GAAI6yB,GAAKk3S,KAAK39G,EAAK9+O,QACtBkjO,EAAIljO,MAAMukyB,eAAe7xwB,GAAE,IAE7BssuB,EAAIh/vB,QACJkjO,EAAIljO,MAAMwyC,SAAWwstB,EAAIh/vB,QAIjC,YAAwBkjO,EAAK49jB,EAAM7lxB,GACjC,OAAOioxB,GAAehgkB,EAAKA,EAAK4gkB,GAAQX,GAAiBrC,EAAM7lxB,EAAsB,GAAhBioN,EAAI62I,WAI3E,YAAuB/xV,EAAGD,GACxB,GAAIC,EAAEpsB,QAAUmsB,EAAEnsB,OAAU,OAAO,EACnC,QAAS4I,EAAI,EAAGA,EAAIwjB,EAAEpsB,OAAQ4I,IAAO,IAAKwjB,EAAExjB,GAAG7G,KAAKs7d,GAAGlxc,EAAEvjB,GAAG7G,MAAS,OAAO,EAC5E,OAAO,EAIT,YAAYulO,GACV,IAAIhiO,EAAOgiO,EAAIy9I,YACfz9I,SAAI5/E,WAAW/vG,YAAY2vL,GACpBhiO,EAKT,IAAI2/xB,GAAkB,SAAyB78qB,EAAKwgrB,GAClD3uyB,KAAKmuH,IAAMA,EACXnuH,KAAKmif,KAAOwsT,EAGZ3uyB,KAAK4jB,MAAQ,EAGb5jB,KAAKqlB,MAAQ,GAEbrlB,KAAK0wH,SAAU,EAEf1wH,KAAK4uyB,SA0LP,YAAkB5uB,EAAM4tB,GAEtB,QADIiB,EAAK7uB,EAAK5hT,WAAY0wU,EAAKlB,EAAM7nyB,OAAQy7oB,EAAU,IAAI7imB,IACpDkwvB,EAAK,GAAKC,EAAK,EAAGA,IAAM,CAC7B,IAAIpmP,GAAOklP,EAAMkB,EAAK,GAAI1pxB,GAAOsjiB,GAAKtjiB,KACtC,GAAKA,GACL,IAAIA,IAAQ46vB,EAAKvhtB,MAAMowuB,EAAK,GAAM,QAChCA,EACFrtJ,EAAQnvnB,IAAIq2hB,GAAMmmP,IAEpB,MAAO,CAACjrxB,MAAOirxB,EAAIrtJ,QAASA,GAnMZotJ,CAASzgrB,EAAI/oG,KAAKxG,QAASuvG,EAAI3vD,WAsMjD,YAAqBrsC,EAAGD,GAAK,OAAOC,EAAErqB,KAAKsgF,KAAOl2D,EAAEpqB,KAAKsgF,KA6HzD,YAAsBq5C,EAAOr5D,EAAMqlE,EAAIprH,EAAM27vB,GAE3C,QADIzrwB,GAAS,GACJ5D,GAAI,EAAG2sB,GAAM,EAAG3sB,GAAI8yH,EAAM17H,OAAQ4I,KAAK,CAC9C,IAAI8vD,GAAQgjE,EAAM9yH,IAAIqe,GAAQsO,GAAKgP,GAAMhP,IAAOmjC,GAAMzP,KAClDhiC,IAASygH,GAAMnjG,IAAO89B,EACxB71D,GAAO9M,KAAKg5D,KAERzxC,GAAQo7C,GAAQ71D,GAAO9M,KAAKg5D,GAAM7vD,MAAM,EAAGw5D,EAAOp7C,GAAO3K,IACzD27vB,IACFzrwB,GAAO9M,KAAKu4wB,GACZA,EAAc,MAEZ1zuB,GAAMmjG,GAAMl7H,GAAO9M,KAAKg5D,GAAM7vD,MAAM6+H,EAAKzgH,GAAOyxC,GAAMzP,KAAM3sC,KAGpE,OAAO9P,GAGT,YAA0B8P,EAAMgiB,GAC9B,IAAIq/vB,EAASrhxB,EAAKyvS,KAAKs9K,eAAgB5mH,EAAMnmW,EAAKnY,MAAMs+W,IACxD,IAAKk7a,EAAOr0T,UAAa,OAAO,KAChC,IAAIk2T,EAAcljxB,EAAKijxB,QAAQC,YAAY7B,EAAOr0T,WAAY0/T,GAAWxJ,GAAmC,GAApBA,EAAYv2uB,KAChGouS,GAAO/6U,EAAKijxB,QAAQI,WAAWhC,EAAOr0T,UAAWq0T,EAAOuF,aAC5D,GAAI7rc,GAAO,EAAK,OAAO,KACvB,IAA+B2mI,GAASjka,GAApC6ja,GAAQn7G,EAAI5gW,QAAQw1U,IACxB,GAAIqmc,GAAmBC,GAAS,CAE9B,IADA3/T,GAAUJ,GACH4hU,IAAgBA,EAAYngxB,MAAQmgxB,EAAcA,EAAYlpb,OACrE,GAAIkpb,GAAeA,EAAYngxB,KAAK+3vB,QAAUr5S,gBAA2ByhU,EAAYngxB,OAASmgxB,EAAYlpb,UACjGkpb,EAAYngxB,KAAKg3vB,WA19D9B,YAAkBh3vB,EAAMgN,EAAQiqV,GAC9B,QAASq2a,EAAoB,GAAVtgwB,EAAaugwB,EAAQvgwB,GAAU2sc,GAAS35c,GAAOstwB,GAAWC,GAAQ,CACnF,GAAIvtwB,GAAQi3V,EAAU,OAAO,EAC7B,IAAIz4V,GAAQi/wB,GAASz9wB,GAErB,KADAA,EAAOA,EAAKqoI,YACC,OAAO,EACpBiloB,EAAUA,GAAoB,GAAT9uwB,GACrB+uwB,EAAQA,GAAS/uwB,IAASm7c,GAAS35c,IAm9DG4pxB,CAAStL,EAAOr0T,UAAWq0T,EAAOuF,YAAa1D,EAAYl4jB,MAAO,CACtG,IAAIxkJ,GAAM08sB,EAAYC,UACtB1luB,GAAY,IAAIgka,GAAc1mI,IAAQv0Q,GAAM86Y,GAAQn7G,EAAI5gW,QAAQihE,UAE7D,CACL,IAAI56E,GAASoU,EAAKijxB,QAAQI,WAAWhC,EAAOwF,WAAYxF,EAAO7wL,cAC/D,GAAI5kmB,GAAS,EAAK,OAAO,KACzB81d,GAAUv7G,EAAI5gW,QAAQ3Z,IAOxB,OAJK6xD,KAEHA,GAAYmvuB,GAAiB5sxB,EAAM0hd,GAASJ,GADvB,WAAVt/b,GAAwBhiB,EAAKnY,MAAM41D,UAAUs9R,KAAOumI,GAAM96Y,MAAQkmtB,GAAY,GAAI,IAGxFjvuB,GAGT,YAA6Bz9C,GAC3B,OAAOA,EAAKwwd,SAAWxwd,EAAKoggB,WAC1BysR,GAAa7sxB,IAASV,SAASqiR,eAAiBriR,SAASqiR,cAAc71R,SAASkU,EAAKgrN,KAGzF,YAAwBhrN,EAAMkhgB,GAC5B,IAAI3gD,EAAMvgd,EAAKnY,MAAM41D,UAGrB,GAFAqvuB,GAAkB9sxB,EAAMugd,GAEnBwsU,GAAoB/sxB,GAEzB,KAAKkhgB,GAASlhgB,EAAK4jb,WAAa5jb,EAAK4jb,UAAUopW,aAG7C,OAFAhtxB,EAAK4jb,UAAUqpW,sBAAuB,OACtCjtxB,EAAKktxB,YAAYC,kBAMnB,GAFAntxB,EAAKktxB,YAAYE,sBAEbptxB,EAAKqtxB,eA2EX,YAA6BrtxB,GAC3B,IAAIqhxB,EAASrhxB,EAAKyvS,KAAKs9K,eAAgBxna,EAAQjmD,SAAS87rB,cACpDr4rB,EAAO/C,EAAKqtxB,cAAcrikB,IAAKrzL,EAAuB,OAAjB50B,EAAKq1C,SAC1CzgB,EAAO4tB,EAAMm3qB,OAAO35tB,EAAKqoI,WAAYo1oB,GAASz9wB,GAAQ,GACnDwiD,EAAMm3qB,OAAO35tB,EAAM,GAC1BwiD,EAAM2qZ,UAAS,GACfmxU,EAAOp0T,kBACPo0T,EAAO9iF,SAASh5oB,IAMX5tB,IAAQ33B,EAAKnY,MAAM41D,UAAUm0Q,SAAW1hU,GAAOkvrB,IAAMlvrB,GAAOkwxB,YAAc,KAC7Er9wB,EAAK/c,UAAW,EAChB+c,EAAK/c,UAAW,GAzFhBsnyB,CAAoBttxB,OACf,CACL,IAEIutxB,GAAmBC,GAFnB5hyB,EAAS20d,EAAI30d,OACbmvV,EAAOwlI,EAAIxlI,KAEX0yc,MAAmCltU,aAAeb,MAC/Ca,EAAItB,MAAMjlH,OAAOmga,gBAClBozB,GAAoBG,GAAwB1txB,EAAMugd,EAAIx6Z,QACrDw6Z,EAAInjZ,QAAUmjZ,EAAItB,MAAMjlH,OAAOmga,gBAChCqzB,GAAkBE,GAAwB1txB,EAAMugd,EAAIn1V,MAE1DprH,EAAKijxB,QAAQziU,aAAa50d,EAAQmvV,EAAM/6U,EAAKyvS,KAAMyxN,GAC/CusR,KACEF,IAAqBI,GAAcJ,IACnCC,IAAmBG,GAAcH,KAEvC1pN,EAAQlyQ,QACN5xT,EAAKgrN,IAAIzlL,UAAUnJ,OAAO,8BAE1Bp8B,EAAKgrN,IAAIzlL,UAAUY,IAAI,6BACnB,sBAAuB7mC,UAsCjC,YAAsCU,GACpC,IAAImmW,EAAMnmW,EAAKgrN,IAAIgvT,cACnB7zK,EAAItrV,oBAAoB,kBAAmB7a,EAAK4txB,oBAChD,IAAIvM,EAASrhxB,EAAKyvS,KAAKs9K,eACnBhqd,EAAOs+wB,EAAOwF,WAAY92wB,EAASsxwB,EAAO7wL,aAC9CrqP,EAAIhzW,iBAAiB,kBAAmB6M,EAAK4txB,mBAAqB,YAC5DvM,EAAOwF,YAAc9jxB,GAAQs+wB,EAAO7wL,cAAgBzglB,KACtDo2V,EAAItrV,oBAAoB,kBAAmB7a,EAAK4txB,oBAChD/9xB,WAAW,aACJk9xB,GAAoB/sxB,IAASA,EAAKnY,MAAM41D,UAAUm0Q,UACnD5xT,EAAKgrN,IAAIzlL,UAAUnJ,OAAO,8BAC7B,OAjDoCyxvB,CAA6B7txB,IAIxEA,EAAKktxB,YAAYC,kBACjBntxB,EAAKktxB,YAAYY,oBAzZnBnF,GAAgB3qxB,UAAU+vxB,eAAiB,SAAyBpjxB,EAAOsd,GACzE,GAAItd,GAASsd,EACb,SAAS37B,EAAIqe,EAAOre,EAAI27B,EAAK37B,IAAO3O,KAAKmuH,IAAI3vD,SAAS7vD,GAAG82T,UACzDzlU,KAAKmuH,IAAI3vD,SAAS16C,OAAOkJ,EAAOsd,EAAMtd,GACtChtB,KAAK0wH,SAAU,IAIjBs6qB,GAAgB3qxB,UAAUksxB,YAAc,WACtCvsyB,KAAKowyB,eAAepwyB,KAAK4jB,MAAO5jB,KAAKmuH,IAAI3vD,SAASz4D,SAMpDilyB,GAAgB3qxB,UAAU0rxB,YAAc,SAAsBp+jB,EAAO8je,EAAQpvrB,GAG3E,QAFI4mwB,EAAO,EAAGzxrB,GAAQx3F,KAAKqlB,MAAMtf,QAAU,EACvCsqyB,GAAUnjyB,KAAKulC,IAAI+kD,GAAOm2I,EAAM5nO,QAC7BkjxB,EAAOonB,KACNpnB,GAAQzxrB,GAAQ,EAAIx3F,KAAKmuH,IAAMnuH,KAAKqlB,MAAO4jwB,EAAO,GAAM,IAAIke,YAAYx5jB,EAAMs7iB,MAA6C,IAAnCt7iB,EAAMs7iB,GAAMnhxB,KAAKy7d,KAAK4lT,UAClHF,IAEJ,KAAOA,EAAOzxrB,IACZx3F,KAAKusyB,cACLvsyB,KAAKmuH,IAAI3hF,MAxkCG,EAykCZxsC,KAAK4jB,MAAQ5jB,KAAKqlB,MAAMyN,MACxB9yB,KAAKmuH,IAAMnuH,KAAKqlB,MAAMyN,MACtB0kE,KAEF,KAAOA,GAAQm2I,EAAM5nO,QAAQ,CAC3B/F,KAAKqlB,MAAM5f,KAAKzF,KAAKmuH,IAAKnuH,KAAK4jB,MAAQ,GAEvC,QADIolD,IAAQ,EACHr6D,GAAI3O,KAAK4jB,MAAOjV,GAAIzB,KAAKulC,IAAIzyC,KAAK4jB,MAAQ,EAAG5jB,KAAKmuH,IAAI3vD,SAASz4D,QAAS4I,KAC/E,GAAI3O,KAAKmuH,IAAI3vD,SAAS7vD,IAAGw4xB,YAAYx5jB,EAAMn2I,KAAS,CAAExuB,GAAQr6D,GAAG,MAEnE,GAAIq6D,IAAQ,EACNA,GAAQhpE,KAAK4jB,QACf5jB,KAAK0wH,SAAU,EACf1wH,KAAKowyB,eAAepwyB,KAAK4jB,MAAOolD,KAElChpE,KAAKmuH,IAAMnuH,KAAKmuH,IAAI3vD,SAASx+D,KAAK4jB,WAC7B,CACL,IAAI0sxB,GAAWvG,GAAa/nuB,OAAOhiE,KAAKmuH,IAAKw/G,EAAMn2I,IAAQi6mB,EAAQpvrB,GACnEriB,KAAKmuH,IAAI3vD,SAAS16C,OAAO9jB,KAAK4jB,MAAO,EAAG0sxB,IACxCtwyB,KAAKmuH,IAAMmirB,GACXtwyB,KAAK0wH,SAAU,EAEjB1wH,KAAK4jB,MAAQ,EACb4zE,OAOJwzsB,GAAgB3qxB,UAAU6rxB,cAAgB,SAAwB9mxB,EAAM8kxB,EAAWC,EAAWvmxB,GAC5F,IAAI46C,GAAWx+D,KAAKmuH,IAAI3vD,SAAUwK,IAAQ,EAC1C,GAAIplD,GAAS5jB,KAAK4uyB,SAAShrxB,OACzB,QAASjV,GAAI3O,KAAK4jB,MAAOjV,GAAI6vD,GAASz4D,OAAQ4I,KAAO,GAAI6vD,GAAS7vD,IAAGy4xB,YAAYhixB,EAAM8kxB,EAAWC,GAAY,CAC5GnhuB,GAAQr6D,GACR,YAGF,QAAS6wwB,GAAMx/wB,KAAK4jB,MAAO3a,GAAIiE,KAAKulC,IAAI+rB,GAASz4D,OAAQy5wB,GAAM,GAAIA,GAAMv2wB,GAAGu2wB,KAAO,CACjF,IAAI/gtB,GAAQD,GAASghtB,IACrB,GAAI/gtB,GAAM2ouB,YAAYhixB,EAAM8kxB,EAAWC,KAAenqyB,KAAK4uyB,SAASptJ,QAAQvwnB,IAAIwtC,IAAQ,CACtFuK,GAAQw2sB,GACR,OAIN,QAAIx2sB,GAAQ,IACZhpE,KAAKowyB,eAAepwyB,KAAK4jB,MAAOolD,IAChChpE,KAAK4jB,QACE,KAGTonxB,GAAgB3qxB,UAAU+rxB,aAAe,SAAuBhnxB,EAAM8kxB,EAAWC,EAAWvmxB,EAAOvB,IAEjG,QADYriB,KAAKmuH,IAAI3vD,SAAS56C,GACnB8iG,OAAOthG,EAAM8kxB,EAAWC,EAAW9nxB,MAC9CriB,KAAKowyB,eAAepwyB,KAAK4jB,MAAOA,GAChC5jB,KAAK4jB,MAAQA,EAAQ,GACd,IAGTonxB,GAAgB3qxB,UAAU8rxB,mBAAqB,SAA6B16D,GAC1E,OAAS,CACP,IAAIp1X,EAASo1X,EAAQhklB,WACrB,IAAK4uN,EAAU,OAAO,EACtB,GAAIA,GAAUr8W,KAAKmuH,IAAI25pB,WAAY,CACjC,IAAIp/N,EAAO+oL,EAAQ+xD,WACnB,GAAI96O,EAAQ,QAAS/5iB,EAAI3O,KAAK4jB,MAAOjV,EAAI3O,KAAKmuH,IAAI3vD,SAASz4D,OAAQ4I,IACjE,GAAI3O,KAAKmuH,IAAI3vD,SAAS7vD,IAAM+5iB,EAAQ,OAAO/5iB,EAE7C,OAAO,EAET8iuB,EAAUp1X,IAOd2ub,GAAgB3qxB,UAAUgsxB,eAAiB,SAAyBjnxB,EAAM8kxB,EAAWC,EAAW9nxB,EAAMuB,IACpG,QAASjV,GAAI3O,KAAK4jB,MAAOjV,GAAI3O,KAAKmuH,IAAI3vD,SAASz4D,OAAQ4I,KAAK,CAC1D,IAAItD,GAAOrL,KAAKmuH,IAAI3vD,SAAS7vD,IAC7B,GAAItD,cAAgB4+xB,GAAc,CAChC,IAAI2E,GAAW5uyB,KAAK4uyB,SAASptJ,QAAQ3ioB,IAAIxT,IACzC,GAAgB,MAAZujyB,IAAoBA,IAAYhrxB,GAAS,OAAO,EACpD,IAAI2sxB,GAAUllyB,GAAKgiO,IAQnB,KAHartO,KAAKmif,QAASouT,IAAWvwyB,KAAKmif,MAA4B,GAApBouT,GAAQrsb,UAAiBqsb,GAAQpiyB,SAASnO,KAAKmif,KAAK10V,cACjGroI,EAAKkyvB,QAAUjswB,GAAK+Z,MAAQ/Z,GAAK+Z,KAAKkyvB,QAAUjswB,GAAK28xB,QAAQthB,WAAathwB,EAAKta,MAnqCvB,GAoqCxDO,GAAKmhC,OAAuBk+vB,GAAcR,EAAW7+xB,GAAK6+xB,aACjD7+xB,GAAKq7G,OAAOthG,EAAM8kxB,EAAWC,EAAW9nxB,GACrD,YAAK+txB,eAAepwyB,KAAK4jB,MAAOjV,IAC5BtD,GAAKgiO,KAAOkjkB,KAAWvwyB,KAAK0wH,SAAU,GAC1C1wH,KAAK4jB,SACE,EAET,OAGJ,OAAO,GAKTonxB,GAAgB3qxB,UAAUuuF,QAAU,SAAkBxpF,EAAM8kxB,EAAWC,EAAW9nxB,EAAMwmE,IACtF7oF,KAAKmuH,IAAI3vD,SAAS16C,OAAO9jB,KAAK4jB,QAAS,EAAGqmxB,GAAajouB,OAAOhiE,KAAKmuH,IAAK/oG,EAAM8kxB,EAAWC,EAAW9nxB,EAAMwmE,KAC1G7oF,KAAK0wH,SAAU,GAGjBs6qB,GAAgB3qxB,UAAU2rxB,YAAc,SAAsBrkJ,EAAQtloB,EAAMwmE,GAC1E,IAAIx9E,EAAOrL,KAAK4jB,MAAQ5jB,KAAKmuH,IAAI3vD,SAASz4D,OAAS/F,KAAKmuH,IAAI3vD,SAASx+D,KAAK4jB,OAAS,KACnF,IAAIvY,IAAQA,EAAK67xB,cAAcv/I,IAAYA,GAAUt8oB,EAAKs8oB,QAAWt8oB,EAAKs8oB,OAAO7/oB,KAAKwlO,MAAM7/E,WAErF,CACL,IAAIi7Z,GAAO,IAAIy/O,GAAenoyB,KAAKmuH,IAAKw5hB,EAAQtloB,EAAMwmE,GACtD7oF,KAAKmuH,IAAI3vD,SAAS16C,OAAO9jB,KAAK4jB,QAAS,EAAG8kiB,IAC1C1ojB,KAAK0wH,SAAU,OAJf1wH,KAAK4jB,SAUTonxB,GAAgB3qxB,UAAUisxB,kBAAoB,WAE5C,QADIroU,EAAYjke,KAAKmuH,IAAI3vD,SAASx+D,KAAK4jB,MAAQ,GACxCqgd,aAAqB8lU,IAAgB9lU,EAAYA,EAAUzla,SAASyla,EAAUzla,SAASz4D,OAAS,KAElGk+d,KACCA,aAAqBumU,KACvB,MAAMhvX,KAAKyoD,EAAU7+c,KAAKta,UAEvByH,GAAOintB,QAAUjntB,GAAOyntB,SAAW/1P,GAA8C,SAAjCA,EAAU52P,IAAIk2jB,iBAC/DvjyB,KAAKwwyB,YAAY,OACrBxwyB,KAAKwwyB,YAAY,QAIrBxF,GAAgB3qxB,UAAUmwxB,YAAc,SAAsB/1uB,GAC5D,GAAIz6D,KAAK4jB,MAAQ5jB,KAAKmuH,IAAI3vD,SAASz4D,QAAU/F,KAAKmuH,IAAI3vD,SAASx+D,KAAK4jB,OAAOyjxB,YAAY5suB,GACrFz6D,KAAK4jB,YACA,CACL,IAAIypN,EAAM1rN,SAAS+O,cAAc+pC,GACjB,OAAZA,IAAqB4yK,EAAIjwL,UAAY,yBACzB,MAAZqd,IAAoB4yK,EAAIjwL,UAAY,6BACxCp9C,KAAKmuH,IAAI3vD,SAAS16C,OAAO9jB,KAAK4jB,QAAS,EAAG,IAAIskxB,GAAqBloyB,KAAKmuH,IAAKu7qB,GAASr8jB,EAAK,OAC3FrtO,KAAK0wH,SAAU,IAqPnB,IAAIo/qB,GAAgCv9xB,GAAOintB,QAAUjntB,GAAOyntB,QAAUzntB,GAAOowxB,eAAiB,GAE9F,YAAiCtgxB,EAAMwmE,GACrC,IAAI43B,EAAMp+F,EAAKijxB,QAAQS,WAAWl9sB,EAAK,GACnCzjE,EAAOq7F,EAAIr7F,KACXgN,EAASquF,EAAIruF,OACb0rB,GAAQ1rB,EAAShN,EAAK65jB,WAAWl5kB,OAASqf,EAAK65jB,WAAW7sjB,GAAU,KACpE45B,GAAS55B,EAAShN,EAAK65jB,WAAW7sjB,EAAS,GAAK,KACpD,GAAI7f,GAAOintB,QAAU17qB,IAAkC,SAAzBA,GAAMylvB,gBAA8B,OAAOkN,GAAY3yvB,IACrF,KAAMA,IAAkC,SAAzBA,GAAMylvB,iBAAiCv3uB,IAAoC,SAA1BA,GAAOu3uB,iBAA6B,CAClG,GAAIzlvB,GAAS,OAAO2yvB,GAAY3yvB,IAC3B,GAAIkO,GAAU,OAAOykvB,GAAYzkvB,KAI1C,YAAqBt3C,GACnBA,SAAQ6uxB,gBAAkB,OACtBhxxB,GAAOintB,QAAU9ktB,EAAQw0Y,YAAax0Y,EAAQw0Y,WAAY,EAAOx0Y,EAAQg8xB,cAAe,GACrFh8xB,EAGT,YAAuBA,GACrBA,EAAQ6uxB,gBAAkB,QACtB7uxB,EAAQg8xB,eAAgBh8xB,EAAQw0Y,WAAY,EAAMx0Y,EAAQg8xB,aAAe,MAsC/E,YAA2BruxB,EAAMugd,GAC/B,GAAIA,aAAekB,GAAe,CAChC,IAAI4kF,EAAOrmiB,EAAKijxB,QAAQ2C,OAAOrlU,EAAIx6Z,MAC/Bsgf,GAAQrmiB,EAAKsuxB,uBACfC,GAAmBvuxB,GACfqmiB,GAAQA,EAAKyhM,aACjB9nuB,EAAKsuxB,qBAAuBjoP,QAG9BkoP,GAAmBvuxB,GAKvB,YAA4BA,GACtBA,EAAKsuxB,uBACHtuxB,EAAKsuxB,qBAAqBt0b,QAC1Bh6V,EAAKsuxB,qBAAqBpD,eAC9BlrxB,EAAKsuxB,qBAAuB,MAIhC,YAA0BtuxB,EAAM0hd,EAASJ,EAAOypT,GAC9C,OAAO/qwB,EAAKwuxB,SAAS,yBAA0B,SAAUjryB,GAAK,OAAOA,EAAEyc,EAAM0hd,EAASJ,MACjF5B,WAAsBgC,EAASJ,EAAOypT,GAQ7C,YAAsB/qwB,GACpB,IAAIugd,EAAMvgd,EAAKyvS,KAAKs9K,eACpB,IAAKxM,EAAIsmU,WAAc,OAAO,EAC9B,IAIE,OAAO7mxB,EAAKgrN,IAAIl/N,SAAoC,GAA3By0d,EAAIsmU,WAAWhlb,SAAgB0+G,EAAIsmU,WAAWz7oB,WAAam1U,EAAIsmU,cACrF7mxB,EAAKwwd,UAAYxwd,EAAKgrN,IAAIl/N,SAAmC,GAA1By0d,EAAIyM,UAAUnrH,SAAgB0+G,EAAIyM,UAAU5hV,WAAam1U,EAAIyM,kBAC7Fnke,GACN,OAAO,GAUX,YAA4BhB,EAAOmnD,GACjC,IAAIovD,EAAMv2G,EAAM41D,UACZika,EAAUtjX,EAAIsjX,QACdJ,EAAQljX,EAAIkjX,MACZmtU,GAAQz/uB,EAAM,EAAI0ya,EAAQv1d,IAAIm1d,GAASI,EAAQtxb,IAAIkxb,GACnDw3S,GAAS1uqB,GAAO4vQ,OAAOmga,cAAwBs0B,GAAMt5sB,MAAQttF,EAAMs+W,IAAI5gW,QAAQypC,EAAM,EAAIy/uB,GAAMhzvB,QAAUgzvB,GAAM9kvB,UAAY,KAApF8kvB,GAC3C,OAAO31B,IAAUx6S,YAAmBw6S,GAAQ9ptB,GAG9C,YAAehvC,EAAMugd,GACnBvgd,SAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAG+wS,aAAaD,GAAK+E,mBACvC,EAGT,YAA4Btld,EAAMgvC,EAAK0/uB,GACrC,IAAInuU,EAAMvgd,EAAKnY,MAAM41D,UACrB,KAAI8ia,aAAeb,IAuBZ,IAAIa,aAAekB,IAAiBlB,EAAIx9c,KAAKg3vB,SAClD,OAAOzovB,GAAMtR,EAAM,IAAI0/c,GAAc1wa,EAAM,EAAIuxa,EAAIrB,IAAMqB,EAAItB,QAE7D,IAAIm+S,GAASuxB,GAAmB3uxB,EAAKnY,MAAOmnD,GAC5C,QAAIoutB,IAAiB9rvB,GAAMtR,EAAMo9vB,IA1BjC,IAAK78S,EAAInjZ,OAASsxtB,EAAKjxxB,QAAQ,MAAO,EACpC,OAAO,EACF,GAAIuC,EAAK85wB,eAAe9quB,EAAM,EAAI,QAAU,QAAS,CAC1D,IAAIhmD,EAAO2lyB,GAAmB3uxB,EAAKnY,MAAOmnD,GAC1C,SAAIhmD,GAASA,aAAgBy4d,KAAyBnwc,GAAMtR,EAAMhX,GAC3D,KACIkH,GAAOqvxB,KAAOmP,EAAKjxxB,QAAQ,MAAO,GAAK,CAClD,IAAsG4oiB,GAAlG/kF,GAAQf,EAAIe,MAAOv+c,GAAOu+c,GAAM03S,WAAa,KAAOhqtB,EAAM,EAAIsya,GAAMK,WAAaL,GAAMV,UAC3F,IAAK79c,IAAQA,GAAKkyvB,OAAU,OAAO,EACnC,IAAI25B,GAAU5/uB,EAAM,EAAIsya,GAAM96Y,IAAMzjE,GAAK25c,SAAW4E,GAAM96Y,IAC1D,SAAMzjE,GAAK+3vB,SAAWz0N,GAAOrmiB,EAAKijxB,QAAQ2C,OAAOgJ,OAAcvoP,GAAKo/N,cAChEhkT,gBAA2B1+c,IACtBuO,GAAMtR,EAAM,IAAIyhd,GAAczya,EAAM,EAAIhvC,EAAKnY,MAAMs+W,IAAI5gW,QAAQ+7c,GAAM96Y,IAAMzjE,GAAK25c,UAAY4E,OAC1Fpxd,GAAOqooB,QAITjnnB,GAAMtR,EAAM,IAAI0/c,GAAc1/c,EAAKnY,MAAMs+W,IAAI5gW,QAAQypC,EAAM,EAAI4/uB,GAAUA,GAAU7rxB,GAAK25c,cAcvG,YAAiB35c,GACf,OAAwB,GAAjBA,EAAK8+V,SAAgB9+V,EAAKshwB,UAAU3gxB,OAASqf,EAAK65jB,WAAWl5kB,OAGtE,YAAqBsnO,GACnB,IAAIq7U,EAAOr7U,EAAIm2jB,WACf,OAAO96O,GAAqB,GAAbA,EAAK15f,OAAcq+K,EAAIy9I,aAA+B,MAAhBz9I,EAAI5yK,UAK3D,YAA8Bp4C,GAC5B,IAAIugd,EAAMvgd,EAAKyvS,KAAKs9K,eAChBhqd,EAAOw9c,EAAIyM,UAAWj9c,EAASwwc,EAAIqmU,YACvC,GAAK7jxB,EACL,KAAI8rxB,EAAUC,GAAY5tR,IAAQ,EAKlC,IADIhxgB,GAAOovxB,OAA0B,GAAjBv8wB,EAAK8+V,UAAiB9xV,EAASg/wB,GAAQhsxB,IAASisxB,GAAYjsxB,EAAK65jB,WAAW7sjB,MAAYmxf,IAAQ,KAElH,GAAInxf,EAAS,EAAG,CACd,GAAqB,GAAjBhN,EAAK8+V,SACP,MAEA,IAAIl4T,GAAS5mC,EAAK65jB,WAAW7sjB,EAAS,GACtC,GAAIi/wB,GAAYrlvB,IACdklvB,EAAW9rxB,EACX+rxB,KAAe/+wB,UACa,GAAnB45B,GAAOk4T,SAGT,MADP9xV,GADAhN,EAAO4mC,IACO06tB,UAAU3gxB,YAGvB,IAAIuryB,GAAYlsxB,GACrB,MAGA,QADI6jO,GAAO7jO,EAAKwhwB,gBACT39hB,IAAQoojB,GAAYpojB,KACzBiojB,EAAW9rxB,EAAKqoI,WAChB0jpB,GAAatO,GAAS55iB,IACtBA,GAAOA,GAAK29hB,gBAEd,GAAK39hB,GAMH72N,EAASg/wB,GADThsxB,EAAO6jO,QALE,CAET,IADA7jO,EAAOA,EAAKqoI,aACAprI,EAAKgrN,IAAO,MACxBj7M,EAAS,GAOXmxf,GAASguR,GAAYlvxB,EAAMugd,EAAKx9c,EAAMgN,GACjC8+wB,GAAYK,GAAYlvxB,EAAMugd,EAAKsuU,EAAUC,KAKxD,YAA+B9uxB,GAC7B,IAAIugd,EAAMvgd,EAAKyvS,KAAKs9K,eAChBhqd,EAAOw9c,EAAIyM,UAAWj9c,EAASwwc,EAAIqmU,YACvC,GAAK7jxB,EAGL,SADI8rxB,GAAUC,GADV78sB,EAAM88sB,GAAQhsxB,KAGhB,GAAIgN,EAASkiE,EAAK,CAChB,GAAqB,GAAjBlvE,EAAK8+V,SAAiB,MAE1B,IAAImtb,GADQjsxB,EAAK65jB,WAAW7sjB,IAKrB,MAHL8+wB,GAAW9rxB,EACX+rxB,KAAe/+wB,MAGZ,IAAIk/wB,GAAYlsxB,GACrB,MAGA,QADI/Z,GAAO+Z,EAAK0lW,YACTz/W,IAAQgmyB,GAAYhmyB,KACzB6lyB,GAAW7lyB,GAAKoiJ,WAChB0jpB,GAAatO,GAASx3xB,IAAQ,EAC9BA,GAAOA,GAAKy/W,YAEd,GAAKz/W,GAMH+mB,EAAS,EACTkiE,EAAM88sB,GAFNhsxB,EAAO/Z,QALE,CAET,IADA+Z,EAAOA,EAAKqoI,aACAprI,EAAKgrN,IAAO,MACxBj7M,EAASkiE,EAAM,GAQjB48sB,IAAYK,GAAYlvxB,EAAMugd,EAAKsuU,GAAUC,KAGnD,YAAqB9jkB,GACnB,IAAIq7U,EAAOr7U,EAAIm2jB,WACf,OAAO96O,GAAQA,EAAKtjiB,MAAQsjiB,EAAKtjiB,KAAKkzvB,QAGxC,YAAqBj2vB,EAAMugd,EAAKx9c,EAAMgN,GACpC,GAAIqxwB,GAAmB7gU,GAAM,CAC3B,IAAIh7Z,EAAQjmD,SAAS87rB,cACrB71oB,EAAMm3qB,OAAO35tB,EAAMgN,GACnBw1C,EAAM2irB,SAASnluB,EAAMgN,GACrBwwc,EAAI0M,kBACJ1M,EAAIg+O,SAASh5oB,QACJg7Z,EAAI1qW,QACb0qW,EAAI1qW,OAAO9yG,EAAMgN,GAEnB/P,EAAKktxB,YAAYC,kBACjB,IAAItlyB,GAAQmY,EAAKnY,MAEjBgI,WAAW,WACLmQ,EAAKnY,OAASA,IAASsnyB,GAAenvxB,IACzC,IAOL,YAA0BA,EAAMgvC,EAAK0/uB,GACnC,IAAInuU,EAAMvgd,EAAKnY,MAAM41D,UAErB,GADI8ia,aAAeb,KAAkBa,EAAInjZ,OAASsxtB,EAAKjxxB,QAAQ,MAAO,GAClEvN,GAAOqvxB,KAAOmP,EAAKjxxB,QAAQ,MAAO,EAAM,OAAO,EACnD,IAAIwhd,EAAQsB,EAAItB,MACZC,GAAMqB,EAAIrB,IAEd,IAAKD,EAAMjlH,OAAOmga,eAAiBn6vB,EAAK85wB,eAAe9quB,EAAM,EAAI,KAAO,QAAS,CAC/E,IAAIhmD,GAAO2lyB,GAAmB3uxB,EAAKnY,MAAOmnD,GAC1C,GAAIhmD,IAASA,cAAgBy4d,GACzB,OAAOnwc,GAAMtR,EAAMhX,IAEzB,IAAKi2d,EAAMjlH,OAAOmga,cAAe,CAC/B,IAAIp0rB,GAAO/2B,EAAM,EAAIiwa,EAAQC,GACzBkwU,GAAS7uU,aAAe6vT,GAAe9xT,QAAev4Y,GAAM/2B,GAAOsva,YAAmBv4Y,GAAM/2B,GAChG,QAAOogvB,IAAS99wB,GAAMtR,EAAMovxB,IAE9B,OAAO,EAGT,YAAoCpvxB,EAAMgvC,GACxC,KAAMhvC,EAAKnY,MAAM41D,qBAAqBiia,IAAkB,OAAO,EAC/D,IAAIthX,EAAMp+F,EAAKnY,MAAM41D,UACjB6ja,EAAQljX,EAAIkjX,MAEZlkZ,GAAQghC,EAAIhhC,MAChB,IAAKkkZ,EAAM+4S,WAFGj8pB,EAAIsjX,SAEgB,OAAO,EACzC,IAAKtkZ,GAAS,OAAO,EACrB,GAAIp9D,EAAK85wB,eAAe9quB,EAAM,EAAI,UAAY,YAAe,OAAO,EACpE,IAAIqgvB,IAAY/tU,EAAM03S,aAAehqtB,EAAM,EAAIsya,EAAMK,WAAaL,EAAMV,WACxE,GAAIyuU,KAAaA,GAASp6B,OAAQ,CAChC,IAAIxllB,GAAKzvK,EAAKnY,MAAM4nL,GACpB,OAAIzgI,EAAM,EAAKygI,GAAG3yK,OAAOwkd,EAAM96Y,IAAM6otB,GAAS3yU,SAAU4E,EAAM96Y,KACvDipG,GAAG3yK,OAAOwkd,EAAM96Y,IAAK86Y,EAAM96Y,IAAM6otB,GAAS3yU,UACjD18c,EAAK+rN,SAASt8C,KACP,EAET,OAAO,EAGT,YAAwBzvK,EAAM+C,EAAMlb,GAClCmY,EAAKktxB,YAAYplxB,OACjB/E,EAAKm+wB,gBAAkBr5xB,EACvBmY,EAAKktxB,YAAYvixB,QAiHnB,YAAsBqgN,GACpB,IAAIq7U,EAAOr7U,EAAIm2jB,WACf,GAAI96O,EACF,OAAOA,EAAK6+O,YACP,GAAoB,MAAhBl6jB,EAAI5yK,UAAoB4yK,EAAI5/E,YAIrC,GAAIl7I,GAAOintB,QAAU,aAAah+S,KAAKnuM,EAAI5/E,WAAWhzF,UAAW,CAC/D,IAAInuD,EAAOqV,SAAS+O,cAAc,OAClCpkB,SAAKuuC,YAAYl5B,SAAS+O,cAAc,OACjC,CAACpkB,KAAMA,MACL+gO,EAAI5/E,WAAWw2U,WAAa52P,GAAO96N,GAAOintB,QAAU,gBAAgBh+S,KAAKnuM,EAAI5/E,WAAWhzF,UACjG,MAAO,CAACyvf,QAAQ,WAEO,OAAhB78U,EAAI5yK,UAAqB4yK,EAAIvlL,aAAa,oBACnD,MAAO,CAACoigB,QAAQ,GAsLpB,YAA0B7niB,EAAMmmW,EAAKmpb,GACnC,OAAIzkyB,KAAKsB,IAAImjyB,EAAU1jyB,OAAQ0jyB,EAAUv0c,MAAQorB,EAAI5pW,QAAQowC,KAAe,KACrEigvB,GAAiB5sxB,EAAMmmW,EAAI5gW,QAAQ+pxB,EAAU1jyB,QAASu6W,EAAI5gW,QAAQ+pxB,EAAUv0c,OAkDrF,YAA+BqmI,EAAMmuU,EAASC,GAE5C,QADIr6sB,EAAQisY,EAAKjsY,MAAOltD,EAAMsnwB,EAAUnuU,EAAKn5b,MAAQm5b,EAAK56Y,IACnD2O,EAAQ,IAAMo6sB,GAAWnuU,EAAKs4S,WAAWvkrB,IAAUisY,EAAKr+c,KAAKoyE,GAAO4mY,aACzE5mY,IACAltD,IACAsnwB,GAAU,EAEZ,GAAIC,EAEF,QADIxmyB,GAAOo4d,EAAKr+c,KAAKoyE,GAAOmhrB,WAAWl1S,EAAKs4S,WAAWvkrB,IAChDnsF,KAASA,GAAKojnB,QACnBpjnB,GAAOA,GAAK0mT,WACZznR,IAGJ,OAAOA,EA2BT,YAA+BjoB,EAAMzT,GAKnC,QAJIw0D,EAAU,GACVxkD,EAAUhQ,EAAMgQ,QAChBo7vB,EAAYprwB,EAAMorwB,UAClBC,GAAUrrwB,EAAMqrwB,QACbD,EAAY,GAAKC,GAAU,GAA2B,GAAtBr7vB,EAAQw/c,YAAoD,GAAjCx/c,EAAQmzS,WAAWqsK,YAAiB,CACpG47S,IACAC,KACA,IAAI70vB,GAAOxG,EAAQmzS,WACnB3uP,EAAQ39D,KAAK2f,GAAKtd,KAAK9C,KAAMogB,GAAK4nN,OAAS5nN,GAAKtd,KAAKw1wB,aAAel4vB,GAAK4nN,MAAQ,MACjFpuN,EAAUwG,GAAKxG,QAGjB,IAAIkzxB,GAAazvxB,EAAKwuxB,SAAS,wBAA0B/nB,cAAyBzmwB,EAAKnY,MAAM4iO,QACzF07I,GAAMupb,KAAez3uB,GAAOkuT,GAAI93V,cAAc,OAClD4pC,GAAKzf,YAAYi3vB,GAAW/oB,kBAAkBnqwB,EAAS,CAAC+C,SAAU6mW,MAGlE,QADkC2kb,GAA9Bp7e,GAAaz3P,GAAKy3P,WACfA,IAAqC,GAAvBA,GAAWmyD,WAAkBipb,GAAY6E,GAAQjgf,GAAWt3P,SAASp/B,iBAAiB,CACzG,QAAS1sB,GAAIw+xB,GAAUpnyB,OAAS,EAAG4I,IAAK,EAAGA,KAAK,CAE9C,QADIssX,GAAUzS,GAAI93V,cAAcy8wB,GAAUx+xB,KACnC2rD,GAAKy3P,YAAckpE,GAAQpgV,YAAYyf,GAAKy3P,YACnDz3P,GAAKzf,YAAYogV,IACG,SAAhBkya,GAAUx+xB,MACZqrwB,IACAC,MAGJlod,GAAaz3P,GAAKy3P,WASpB,OANIA,IAAqC,GAAvBA,GAAWmyD,UACzBnyD,GAAWl4M,aAAa,gBAAkBmgqB,EAAY,IAAMC,GAAU,IAAO5rvB,KAAK+E,UAAUgwC,IAKzF,CAACiqK,IAAK/yK,GAAMxvD,KAHRuX,EAAKwuxB,SAAS,0BAA2B,SAAUjryB,IAAK,OAAOA,GAAEgJ,MACxEA,EAAMgQ,QAAQs5vB,YAAY,EAAGtpwB,EAAMgQ,QAAQowC,KAAM,SAOvD,YAA4B3sC,EAAMvX,EAAMkzG,EAAMi0rB,EAAWxpB,GACvD,IAAIp7iB,GAA8Cz+N,GAAzCsjyB,GAASzpB,EAASpsa,OAAOv0W,KAAKy7d,KAAKv3c,KAC5C,IAAKgyF,IAASlzG,EAAQ,OAAO,KAC7B,IAAIqnyB,GAASrnyB,IAASmnyB,GAAaC,KAAWl0rB,GAC9C,GAAIm0rB,GAAQ,CAEV,GADA9vxB,EAAKwuxB,SAAS,sBAAuB,SAAUjryB,IAAKkF,EAAOlF,GAAEkF,EAAMonyB,IAAUD,KACzEC,GAAU,OAAOpnyB,EAAO,IAAI43d,EAAMF,OAAcngd,EAAKnY,MAAM4iO,OAAOhiO,KAAKA,EAAKygB,QAAQ,SAAU,QAAS,EAAG,GAAKm3c,QACnH,IAAIwqG,GAAS7qjB,EAAKwuxB,SAAS,sBAAuB,SAAUjryB,IAAK,OAAOA,GAAEkF,EAAM29wB,EAAUwpB,KAC1F,GAAI/kO,GACFt+jB,GAAQs+jB,OACH,CACL,IAAIv/V,GAAQ86iB,EAAS96iB,QAEjBb,GADMzqN,EAAKnY,MACE4iO,OACbglkB,GAAahpB,cAAyBh8iB,IAC1CO,GAAM1rN,SAAS+O,cAAc,OAC7B5lB,EAAKkM,MAAM,iBAAiBpQ,QAAQ,SAAU6utB,IAC5C,IAAIhxpB,GAAI4oK,GAAIxyL,YAAYl5B,SAAS+O,cAAc,MAC3C+ksB,IAAShxpB,GAAE5pB,YAAYi3vB,GAAWroB,cAAc38iB,GAAOhiO,KAAK2qtB,GAAO9nf,cAI3EtrN,EAAKwuxB,SAAS,sBAAuB,SAAUjryB,IAAKo4G,EAAOp4G,GAAEo4G,KAC7DqvH,GAmIJ,YAAkBrvH,GAChB,IAAIo0rB,EAAQ,sBAAsBxrc,KAAK5oP,GACnCo0rB,IAASp0rB,EAAOA,EAAKpvG,MAAMwjyB,EAAM,GAAGrsyB,SACxC,IAC8Cu0D,EAD1C4quB,EAAM6M,KAAcrhxB,cAAc,OAClC2hxB,EAAW,mBAAmBzrc,KAAK5oP,GAIvC,IAHI1jD,EAAO+3uB,GAAYL,GAAQK,EAAS,GAAGh3wB,kBACvC2iF,EAAO1jD,EAAK30D,IAAI,SAAUmI,IAAK,MAAO,IAAMA,GAAI,MAAQ2Z,KAAK,IAAMu2F,EAAO1jD,EAAK30D,IAAI,SAAUmI,IAAK,MAAO,KAAOA,GAAI,MAAQihF,UAAUtnE,KAAK,KAC/Iy9wB,EAAI7nvB,UAAY2gE,EACZ1jD,EAAQ,QAAS3rD,GAAI,EAAGA,GAAI2rD,EAAKv0D,OAAQ4I,KAAOu2xB,EAAMA,EAAI3ovB,cAAc+d,EAAK3rD,MAAOu2xB,EACxF,OAAOA,EA5ICoN,CAASt0rB,GACXzrG,GAAOqooB,QAmJf,YAA+Bvta,GAE7B,QADI5rG,EAAQ4rG,EAAI9uL,iBAAiBhsC,GAAOyntB,OAAS,iCAAmC,8BAC3ErrtB,EAAI,EAAGA,EAAI8yH,EAAM17H,OAAQ4I,IAAK,CACrC,IAAIyW,EAAOq8G,EAAM9yH,GACa,GAA1ByW,EAAK65jB,WAAWl5kB,QAAmC,QAApBqf,EAAK4wW,aAA2B5wW,EAAKqoI,YACpEroI,EAAKqoI,WAAWirnB,aAAarriB,EAAIgvT,cAAc/ib,eAAe,KAAMl0F,IAxJnDmtxB,CAAsBllkB,IAG7C,IAAImlkB,GAAcnlkB,IAAOA,GAAI9wL,cAAc,mBACvCk2vB,GAAYD,IAAe,oBAAoB5rc,KAAK4rc,GAAY1qvB,aAAa,kBACjF,IAAKl5C,GAAO,CACV,IAAIggH,GAASvsG,EAAKwuxB,SAAS,oBAAsBxuxB,EAAKwuxB,SAAS,cAAgBp8B,cAAqBpyvB,EAAKnY,MAAM4iO,QAC/Gl+N,GAAQggH,GAAOy0pB,WAAWh2iB,GAAK,CAACqhQ,sBAAuByjU,KAAUM,IAAYrvuB,QAASqltB,IAExF,GAAIgqB,GACF7jyB,GAkJJ,YAAoBA,EAAOw0D,GACzB,IAAKx0D,EAAMogD,KAAQ,OAAOpgD,EAC1B,IAAmDq7B,EAA/C6iM,EAASl+N,EAAMgQ,QAAQmzS,WAAWjqT,KAAKglO,OAC3C,IAAM7iM,EAAQ5b,KAAKC,MAAM80C,SACnBn6D,IAAK,OAAO2F,EAIlB,QAHIgQ,EAAUhQ,EAAMgQ,QAChBo7vB,GAAYprwB,EAAMorwB,UAClBC,GAAUrrwB,EAAMqrwB,QACXtrwB,GAAIs7B,EAAMlkC,OAAS,EAAG4I,IAAK,EAAGA,IAAK,EAAG,CAC7C,IAAI7G,GAAOglO,EAAOrrG,MAAMx3F,EAAMt7B,KAC9B,IAAK7G,IAAQA,GAAKi4wB,mBAAsB,MACxCnhwB,EAAU4jd,OAAc16d,GAAKk6D,OAAO/3B,EAAMt7B,GAAI,GAAIiQ,IAClDo7vB,KAAaC,KAEf,OAAO,IAAIv3S,EAAM9jd,EAASo7vB,GAAWC,IAhK3By4B,CAAWC,GAAW/jyB,IAAQ6jyB,GAAU,IAAKA,GAAU,IAAKA,GAAU,YAE9E7jyB,GAAQ8zd,UAuBZ,YAA2BD,EAAUgmT,GACnC,GAAIhmT,EAASrE,WAAa,EAAK,OAAOqE,EAsBtC,QArBIo9K,EAAO,SAAWr0oB,IACpB,IACI+V,GADSknwB,EAASrjwB,KAAK5Z,IACRqywB,eAAe4K,EAAS7kwB,MAAMpY,KAC7ConyB,QAAY,EAASrgyB,GAAS,GAelC,GAdAkwd,EAAS77d,QAAQ,SAAUwe,IACzB,GAAK7S,GACL,KAA0CsgyB,GAAtCv4uB,GAAO/4C,GAAM8+vB,aAAaj7vB,GAAKtd,MACnC,IAAKwyD,GAAQ,OAAO/nD,GAAS,KAC7B,GAAIsgyB,GAAStgyB,GAAOxM,QAAU6syB,GAAS7syB,QAAU+syB,GAAax4uB,GAAMs4uB,GAAUxtxB,GAAM7S,GAAOA,GAAOxM,OAAS,GAAI,GAC7GwM,GAAOA,GAAOxM,OAAS,GAAK8syB,OACvB,CACDtgyB,GAAOxM,SAAUwM,GAAOA,GAAOxM,OAAS,GAAKgtyB,GAAWxgyB,GAAOA,GAAOxM,OAAS,GAAI6syB,GAAS7syB,SAChG,IAAIqruB,GAAU4hE,GAAa5txB,GAAMk1C,IACjC/nD,GAAO9M,KAAK2ruB,IACZ7vtB,GAAQA,GAAM88vB,UAAUjtC,GAAQtpuB,KAAMspuB,GAAQpkgB,OAC9C4lkB,GAAWt4uB,OAGX/nD,GAAU,MAAO,CAAE/L,EAAGg8d,OAAcjwd,MAGjC/G,EAAIi9wB,EAASjxrB,MAAOhsF,GAAK,EAAGA,IAAK,CACxC,IAAI06wB,EAAWrmI,EAAMr0oB,GAErB,GAAK06wB,EAAW,OAAOA,EAAS1/wB,EAElC,OAAOi8d,EAnDiBwwU,CAAkBrkyB,GAAMgQ,QAAS6pwB,IAAW,GAC9D75wB,GAAMorwB,WAAaprwB,GAAMqrwB,QAAS,CAEpC,QADID,GAAY,EAAGC,GAAU,EACpB70vB,GAAOxW,GAAMgQ,QAAQmzS,WAAYiod,GAAYprwB,GAAMorwB,YAAc50vB,GAAKtd,KAAKy7d,KAAKxG,UACpFi9S,KAAa50vB,GAAOA,GAAK2sS,YAC9B,QAASmhf,GAAStkyB,GAAMgQ,QAAQqld,UAAWg2S,GAAUrrwB,GAAMqrwB,UAAYi5B,GAAOpryB,KAAKy7d,KAAKxG,UACnFk9S,KAAWi5B,GAASA,GAAOjvU,WAChCr1d,GAAQ+jyB,GAAW/jyB,GAAOorwB,GAAWC,IAIzC53vB,SAAKwuxB,SAAS,kBAAmB,SAAUjryB,IAAKgJ,GAAQhJ,GAAEgJ,MACnDA,GA0CT,YAAsBwW,EAAMk1C,EAAM8N,QAClB,IAATA,IAAkBA,EAAO,GAE9B,QAASz5D,EAAI2rD,EAAKv0D,OAAS,EAAG4I,GAAKy5D,EAAMz5D,IACrCyW,EAAOk1C,EAAK3rD,GAAGqzD,OAAO,KAAMwga,OAAcp9c,IAC9C,OAAOA,EAKT,YAAsBk1C,EAAMs4uB,EAAUxtxB,EAAMmilB,EAAS/vgB,GACnD,GAAIA,EAAQl9B,EAAKv0D,QAAUyxF,EAAQo7sB,EAAS7syB,QAAUu0D,EAAKk9B,IAAUo7sB,EAASp7sB,GAAQ,CACpF,IAAI91D,GAAQoxwB,GAAax4uB,EAAMs4uB,EAAUxtxB,EAAMmilB,EAAQtjI,UAAWzsY,EAAQ,GAC1E,GAAI91D,GAAS,OAAO6lkB,EAAQxiiB,KAAKwiiB,EAAQ3olB,QAAQ85vB,aAAanxK,EAAQnpI,WAAa,EAAG18b,KAEtF,GADY6lkB,EAAQs2K,eAAet2K,EAAQnpI,YACjCigT,UAAU7mrB,GAASl9B,EAAKv0D,OAAS,EAAIqf,EAAKtd,KAAOwyD,EAAKk9B,EAAQ,IACpE,OAAO+vgB,EAAQxiiB,KAAKwiiB,EAAQ3olB,QAAQsS,OAAOsxc,OAAcwwU,GAAa5txB,EAAMk1C,EAAMk9B,EAAQ,OAIlG,YAAoBpyE,EAAMoyE,GACxB,GAAa,GAATA,EAAc,OAAOpyE,EACzB,IAAIq9c,EAAWr9c,EAAKxG,QAAQ85vB,aAAatzvB,EAAKg5c,WAAa,EAAG20U,GAAW3txB,EAAK6+c,UAAWzsY,EAAQ,IAC7F9oF,EAAO0W,EAAKy4vB,eAAez4vB,EAAKg5c,YAAY8hT,WAAW19S,SAAgB,GAC3E,OAAOp9c,EAAK2/C,KAAK09Z,EAASvxc,OAAOxiB,IAGnC,YAAoB+zd,EAAUr6Y,EAAMhgB,EAAMqlE,EAAIj2C,EAAOyirB,IACnD,IAAI70vB,GAAOgjE,EAAO,EAAIq6Y,EAAS1wK,WAAa0wK,EAASwB,UAAWvic,GAAQtc,GAAKxG,QAC7E,OAAI44E,EAAQi2C,EAAK,IAAK/rG,GAAQyxwB,GAAWzxwB,GAAO0mD,EAAMhgB,EAAMqlE,EAAIj2C,EAAQ,EAAGyirB,KACvEzirB,GAASpvB,IACT1mC,GAAQ0mD,EAAO,EAAIhjE,GAAKy4vB,eAAe,GAAGqC,WAAWx+uB,GAAO+gc,EAASrE,WAAa,GAAK67S,IAAWzirB,GAAOtmE,OAAOwQ,IAC9GA,GAAMxQ,OAAO9L,GAAKy4vB,eAAez4vB,GAAKg5c,YAAY8hT,WAAW19S,SAAgB,KAC5EC,EAASi2S,aAAatwrB,EAAO,EAAI,EAAIq6Y,EAASrE,WAAa,EAAGh5c,GAAK2/C,KAAKrjC,KAGjF,YAAoB9yB,EAAOorwB,EAAWC,GACpC,OAAID,EAAYprwB,EAAMorwB,YAClBprwB,EAAQ,IAAI8zd,EAAMywU,GAAWvkyB,EAAMgQ,SAAS,EAAIo7vB,EAAWprwB,EAAMorwB,UAAW,EAAGprwB,EAAMqrwB,SAAUD,EAAWprwB,EAAMqrwB,UAChHA,EAAUrrwB,EAAMqrwB,UAChBrrwB,EAAQ,IAAI8zd,EAAMywU,GAAWvkyB,EAAMgQ,QAAS,EAAGq7vB,EAASrrwB,EAAMqrwB,QAAS,EAAG,GAAIrrwB,EAAMorwB,UAAWC,IAC5FrrwB,EAMT,IAAIojyB,GAAU,CACZltY,MAAO,CAAC,SACRD,MAAO,CAAC,SACRq6U,MAAO,CAAC,SACRr0sB,QAAS,CAAC,SACVyzsB,SAAU,CAAC,SACX3/qB,IAAK,CAAC,QAAS,YACfmzH,GAAI,CAAC,QAAS,SACd6yO,GAAI,CAAC,QAAS,QAAS,MACvBC,GAAI,CAAC,QAAS,QAAS,OAGrBwuY,GAAe,KACnB,cACE,OAAOA,KAAiBA,GAAezxxB,SAASunoB,eAAemqJ,mBAAmB,UA8CpF,IAAIC,GAAiB,CACnBC,WAAW,EACX/vF,eAAe,EACfgwF,uBAAuB,EACvB1yW,YAAY,EACZ2yW,mBAAmB,EACnBC,SAAS,GAGPC,GAAcphyB,GAAOkvrB,IAAMlvrB,GAAOkwxB,YAAc,GAEhDmR,GAAiB,WACnB5zyB,KAAKkpyB,WAAalpyB,KAAK6ymB,aAAe7ymB,KAAKqve,UAAYrve,KAAKipyB,YAAc,MAG5E2K,GAAevzxB,UAAUgS,IAAM,SAAcuwc,GAC3C5ie,KAAKkpyB,WAAatmU,EAAIsmU,WAAYlpyB,KAAK6ymB,aAAejwI,EAAIiwI,aAC1D7ymB,KAAKqve,UAAYzM,EAAIyM,UAAWrve,KAAKipyB,YAAcrmU,EAAIqmU,aAGzD2K,GAAevzxB,UAAU+id,GAAK,SAAaR,GACzC,OAAOA,EAAIsmU,YAAclpyB,KAAKkpyB,YAActmU,EAAIiwI,cAAgB7ymB,KAAK6ymB,cACnEjwI,EAAIyM,WAAarve,KAAKqve,WAAazM,EAAIqmU,aAAejpyB,KAAKipyB,aAG/D,IAAI4K,GAAc,SAAqBxxxB,EAAMyxxB,GAC3C,IAAI7wB,EAASjjxB,KAEbA,KAAKqiB,KAAOA,EACZriB,KAAK8zyB,gBAAkBA,EACvB9zyB,KAAK+zyB,MAAQ,GACb/zyB,KAAKg0yB,cAAe,EACpBh0yB,KAAKwjB,SAAWrO,OAAOy+d,kBACrB,IAAIz+d,OAAOy+d,iBAAiB,SAAUqgU,GACpC,QAAStlyB,GAAI,EAAGA,GAAIslyB,EAAUluyB,OAAQ4I,KAAOs0wB,EAAO8wB,MAAMtuyB,KAAKwuyB,EAAUtlyB,KAKrE4D,GAAOkvrB,IAAMlvrB,GAAOkwxB,YAAc,IAAMwR,EAAUlwvB,KACpD,SAAUlnB,IAAK,MAAiB,aAAVA,GAAE/0B,MAAuB+0B,GAAEq3wB,aAAanuyB,QAC/C,iBAAV82B,GAAE/0B,MAA2B+0B,GAAEm7L,SAASjyN,OAAS82B,GAAEn0B,OAAOg+wB,UAAU3gxB,SACvEk9wB,EAAOkxB,YAEPlxB,EAAOjka,UAEfh/W,KAAKuiP,iBAAmB,IAAIqxjB,GACxBD,KACF3zyB,KAAKo0yB,WAAa,SAAUnryB,GAC1Bg6wB,EAAO8wB,MAAMtuyB,KAAK,CAACiD,OAAQO,EAAEP,OAAQZ,KAAM,gBAAiBkwN,SAAU/uN,EAAE45b,YACxEogV,EAAOkxB,cAGXn0yB,KAAKkuP,kBAAoBluP,KAAKkuP,kBAAkBroO,KAAK7lB,MACrDA,KAAKq0yB,6BAA8B,GAGrCR,GAAYxzxB,UAAU8zxB,UAAY,WAC9B,IAAIlxB,EAASjjxB,KAEXA,KAAKg0yB,aAAe,IACpBh0yB,KAAKg0yB,aAAe7+xB,OAAOjD,WAAW,WAAc+wwB,EAAO+wB,cAAe,EAAI/wB,EAAOjka,SAAY,MAGvG60b,GAAYxzxB,UAAUi0xB,WAAa,WAC7Bt0yB,KAAKg0yB,cAAe,IACtB7+xB,OAAO8R,aAAajnB,KAAKg0yB,cACzBh0yB,KAAKg0yB,cAAe,EACpBh0yB,KAAKg/W,UAIT60b,GAAYxzxB,UAAU2M,MAAQ,WACxBhtB,KAAKwjB,UACLxjB,KAAKwjB,SAASq9C,QAAQ7gE,KAAKqiB,KAAKgrN,IAAKimkB,IACrCK,IACA3zyB,KAAKqiB,KAAKgrN,IAAI73N,iBAAiB,2BAA4BxV,KAAKo0yB,YACpEp0yB,KAAKmwyB,oBAGP0D,GAAYxzxB,UAAU8J,KAAO,WACzB,IAAI84vB,EAASjjxB,KAEf,GAAIA,KAAKwjB,SAAU,CACjB,IAAI+tC,EAAOvxD,KAAKwjB,SAAS+wxB,cACzB,GAAIhjvB,EAAKxrD,OAAQ,CACf,QAAS4I,EAAI,EAAGA,EAAI4iD,EAAKxrD,OAAQ4I,IAAO3O,KAAK+zyB,MAAMtuyB,KAAK8rD,EAAK5iD,IAC7DwG,OAAOjD,WAAW,WAAc,OAAO+wwB,EAAOjka,SAAY,IAE5Dh/W,KAAKwjB,SAAS8e,aAEZqxwB,IAAe3zyB,KAAKqiB,KAAKgrN,IAAInwM,oBAAoB,2BAA4Bl9B,KAAKo0yB,YACtFp0yB,KAAKyvyB,uBAGPoE,GAAYxzxB,UAAU8vxB,iBAAmB,WACvCnwyB,KAAKqiB,KAAKgrN,IAAIgvT,cAAc7mhB,iBAAiB,kBAAmBxV,KAAKkuP,oBAGvE2ljB,GAAYxzxB,UAAUovxB,oBAAsB,WAC1CzvyB,KAAKqiB,KAAKgrN,IAAIgvT,cAAcn/f,oBAAoB,kBAAmBl9B,KAAKkuP,oBAG1E2ljB,GAAYxzxB,UAAUm0xB,yBAA2B,WAC7C,IAAIvxB,EAASjjxB,KAEfA,KAAKq0yB,6BAA8B,EACnCniyB,WAAW,WAAc,OAAO+wwB,EAAOoxB,6BAA8B,GAAU,KAGjFR,GAAYxzxB,UAAU6tO,kBAAoB,WACxC,GAl+BF,YAA8B7rO,GAC5B,QAAIA,EAAKwwd,UAAYxwd,EAAKyvS,KAAK9tB,eAAiB3hR,EAAKgrN,MAC9C6hkB,GAAa7sxB,GAg+BfoyxB,CAAqBz0yB,KAAKqiB,MAC/B,IAAIriB,KAAKq0yB,4BAA+B,OAAO7C,GAAexxyB,KAAKqiB,MAInE,GAAI9P,GAAOkvrB,IAAMlvrB,GAAOkwxB,YAAc,KAAOziyB,KAAKqiB,KAAKnY,MAAM41D,UAAU2f,MAAO,CAC5E,IAAImjZ,EAAM5ie,KAAKqiB,KAAKyvS,KAAKs9K,eAEzB,GAAIxM,EAAIyM,WAAa4zT,EAAqBrgU,EAAIyM,UAAWzM,EAAIqmU,YAAarmU,EAAIsmU,WAAYtmU,EAAIiwI,cAC1F,OAAO7ymB,KAAKm0yB,YAElBn0yB,KAAKg/W,UAGP60b,GAAYxzxB,UAAUmvxB,gBAAkB,WACtCxvyB,KAAKuiP,iBAAiBlwN,IAAIryB,KAAKqiB,KAAKyvS,KAAKs9K,iBAG3CykU,GAAYxzxB,UAAUq0xB,sBAAwB,SAAgC9xU,GAC5E,GAAsB,GAAlBA,EAAI+gU,WAAmB,OAAO,EAClC,IAAIlmoB,EAAYmlU,EAAIghU,WAAW,GAAG+Q,wBAC9BjsP,EAAO1ojB,KAAKqiB,KAAKijxB,QAAQC,YAAY9noB,GACzC,OAAIirZ,GAAQA,EAAK2gP,eAAe,CAACvhyB,KAAM,YAAaY,OAA8B,GAAtB+0J,EAAUymN,SAAgBzmN,EAAUhQ,WAAagQ,KAC3Gz9J,KAAKwvyB,mBACE,QAFT,GAMFqE,GAAYxzxB,UAAU2+V,MAAQ,WAC5B,GAAKh/W,KAAKqiB,KAAKijxB,WAAWtlyB,KAAKg0yB,cAAe,GAC9C,KAAIC,EAAYj0yB,KAAKwjB,SAAWxjB,KAAKwjB,SAAS+wxB,cAAgB,GAC1Dv0yB,KAAK+zyB,MAAMhuyB,SACbkuyB,EAAYj0yB,KAAK+zyB,MAAMpgwB,OAAOsgwB,GAC9Bj0yB,KAAK+zyB,MAAMhuyB,OAAS,GAGtB,IAAI68d,EAAM5ie,KAAKqiB,KAAKyvS,KAAKs9K,eACrBwlU,GAAU50yB,KAAKq0yB,8BAAgCr0yB,KAAKuiP,iBAAiB6gP,GAAGR,IAAQssU,GAAalvyB,KAAKqiB,QAAUriB,KAAK00yB,sBAAsB9xU,GAEvIx6Z,GAAO,EAAIqlE,IAAK,EAAIonqB,IAAW,EAAOx2V,GAAQ,GAClD,GAAIr+c,KAAKqiB,KAAKwwd,SACZ,QAASlke,GAAI,EAAGA,GAAIslyB,EAAUluyB,OAAQ4I,KAAK,CACzC,IAAImmyB,GAAW90yB,KAAK+0yB,iBAAiBd,EAAUtlyB,IAAI0vc,IAC/Cy2V,KACF1suB,EAAOA,EAAO,EAAI0suB,GAAS1suB,KAAOl7D,KAAKulC,IAAIqiwB,GAAS1suB,KAAMA,GAC1DqlE,GAAKA,GAAK,EAAIqnqB,GAASrnqB,GAAKvgI,KAAKsB,IAAIsmyB,GAASrnqB,GAAIA,IAC9CqnqB,GAASD,WAAYA,IAAW,IAK1C,GAAItiyB,GAAOovxB,OAAStjV,GAAMt4c,OAAS,EAAG,CACpC,IAAIivyB,GAAM32V,GAAMtxc,OAAO,SAAUe,IAAK,MAAqB,MAAdA,GAAE2sD,WAC/C,GAAkB,GAAdu6uB,GAAIjvyB,OAAa,CACnB,IAAIosB,GAAI6ixB,GAAI,GACN9ixB,GAAI8ixB,GAAI,GACV7ixB,GAAEs7H,YAAct7H,GAAEs7H,WAAWA,YAAcv7H,GAAEu7H,WAAcv7H,GAAEusB,SAC1DtsB,GAAEssB,WAIT2pB,GAAO,GAAMwsuB,KACXxsuB,GAAO,IACTpoE,KAAKqiB,KAAKijxB,QAAQgE,UAAUlhuB,EAAMqlE,IA6DxC,YAAkBprH,GACZ4yxB,KACJA,IAAa,EACgC,UAAzCpwwB,iBAAiBxiB,EAAKgrN,KAAK47gB,YAC3BnzuB,QAAQC,KAAQ,6KAhEhBm/xB,CAASl1yB,KAAKqiB,OAEhBriB,KAAK8zyB,gBAAgB1ruB,EAAMqlE,GAAIonqB,GAAUx2V,IACrCr+c,KAAKqiB,KAAKijxB,QAAQ94vB,MAASxsC,KAAKqiB,KAAKgoD,YAAYrqE,KAAKqiB,KAAKnY,OACrDlK,KAAKuiP,iBAAiB6gP,GAAGR,IAAQ4uU,GAAexxyB,KAAKqiB,MAC/DriB,KAAKuiP,iBAAiBlwN,IAAIuwc,MAI9BixU,GAAYxzxB,UAAU00xB,iBAAmB,SAA2BjL,EAAKzrV,GAEvE,GAAIA,EAAMv+b,QAAQgqxB,EAAIphyB,SAAU,EAAM,OAAO,KAC7C,IAAIggjB,EAAO1ojB,KAAKqiB,KAAKijxB,QAAQC,YAAYuE,EAAIphyB,QAM7C,GALgB,cAAZohyB,EAAIhiyB,OACH4gjB,GAAQ1ojB,KAAKqiB,KAAKijxB,SAAgC,mBAArBwE,EAAIqL,eAEX,SAArBrL,EAAIqL,gBAA6BrL,EAAI9xkB,WAAa8xkB,EAAIphyB,OAAOo/C,aAAa,YAE3E4ggB,GAAQA,EAAK2gP,eAAeS,GAAQ,OAAO,KAEhD,GAAgB,aAAZA,EAAIhiyB,KAAqB,CAC3B,QAAS6G,EAAI,EAAGA,EAAIm7xB,EAAIsL,WAAWrvyB,OAAQ4I,IAAO0vc,EAAM54c,KAAKqkyB,EAAIsL,WAAWzmyB,IAC5E,GAAI+5iB,EAAKo/N,YAAcp/N,EAAKo/N,YAAcp/N,EAAKr7U,MAAQq7U,EAAKo/N,WAAW35wB,SAAS27xB,EAAIphyB,QAChF,MAAO,CAAC0/D,KAAMsgf,EAAK88O,UAAW/3pB,GAAIi7a,EAAK+8O,UAC3C,IAAIx8iB,GAAO6gjB,EAAIljB,gBAAiBv7wB,GAAOy+xB,EAAIh/a,YAC3C,GAAIv4W,GAAOkvrB,IAAMlvrB,GAAOkwxB,YAAc,IAAMqH,EAAIsL,WAAWrvyB,OAGzD,QAASy5wB,GAAM,EAAGA,GAAMsqB,EAAIsL,WAAWrvyB,OAAQy5wB,KAAO,CACpD,IAAI/+pB,GAAMqprB,EAAIsL,WAAW51B,IACnBoH,GAAkBnmqB,GAAImmqB,gBACtB97Z,GAAcrqQ,GAAIqqQ,cACnB87Z,IAAmBt4wB,MAAM+R,UAAUP,QAAQ8T,KAAKk2wB,EAAIsL,WAAYxuB,IAAmB,KAAK39hB,GAAO29hB,MAC/F97Z,IAAex8W,MAAM+R,UAAUP,QAAQ8T,KAAKk2wB,EAAIsL,WAAYtqb,IAAe,KAAKz/W,GAAOy/W,IAGhG,IAAIy9a,GAAat/iB,IAAQA,GAAKx7F,YAAcq8oB,EAAIphyB,OAC1Cm6xB,GAAS55iB,IAAQ,EAAI,EACvB7gL,GAAOsgf,EAAK++O,gBAAgBqC,EAAIphyB,OAAQ6/xB,IAAY,GACpDC,GAAWn9xB,IAAQA,GAAKoiJ,YAAcq8oB,EAAIphyB,OACxCm6xB,GAASx3xB,IAAQy+xB,EAAIphyB,OAAOu2kB,WAAWl5kB,OAE7C,MAAO,CAACqiE,KAAMA,GAAMqlE,GADXi7a,EAAK++O,gBAAgBqC,EAAIphyB,OAAQ8/xB,GAAU,IAE/C,MAAgB,cAAZsB,EAAIhiyB,KACN,CAACsgE,KAAMsgf,EAAKm9O,WAAan9O,EAAK1ra,OAAQvP,GAAIi7a,EAAKq+O,SAAWr+O,EAAK1ra,QAE/D,CACL50E,KAAMsgf,EAAKm9O,WACXp4pB,GAAIi7a,EAAKq+O,SAKT8N,SAAU/K,EAAIphyB,OAAOg+wB,WAAaojB,EAAI9xkB,WAK5C,IAAIi9kB,IAAa,EAWb15wB,GAAW,GAAI85wB,GAAe,GA4ClC,YAA4BhzxB,EAAMgiB,GAChChiB,EAAKizxB,oBAAsBjxwB,EAC3BhiB,EAAKkzxB,kBAAoBx8xB,KAAKC,MAWhC,YAAyBqJ,GACvBA,EAAKwuxB,SAAS,kBAAmB,SAAU2E,GACzC,QAAS1tyB,KAAQ0tyB,EAAwBnzxB,EAAK4wX,cAAcnrY,IACxDua,EAAKgrN,IAAI73N,iBAAiB1N,EAAMua,EAAK4wX,cAAcnrY,GAAQ,SAAU6F,GAAS,OAAO8nyB,GAAiBpzxB,EAAM1U,OAIpH,YAA0B0U,EAAM1U,GAC9B,OAAO0U,EAAKwuxB,SAAS,kBAAmB,SAAUt1wB,GAChD,IAAIyoiB,EAAUzoiB,EAAS5tB,EAAM7F,MAC7B,QAAOk8jB,IAAUA,EAAQ3hjB,EAAM1U,IAAUA,EAAMm/gB,oBAoEnD,YAAqBn/gB,GAAS,MAAO,CAACyhE,KAAMzhE,EAAMwrV,QAAShrO,IAAKxgH,EAAM0rV,SAOtE,YAA6Bh3U,EAAMije,EAAUz8Z,EAAKs3sB,EAAQxyxB,GACxD,IAAc,GAAVwyxB,EAAgB,OAAO,EAQ3B,QAPI18T,GAAOphd,EAAKnY,MAAMs+W,IAAI5gW,QAAQu4wB,GAC9BtgJ,GAAO,SAAWlxoB,IACpB,GAAI0T,EAAKwuxB,SAASvrT,EAAU,SAAU1/e,IAAK,OAAO+I,GAAI80d,GAAKjsY,MAAQ5xF,GAAEyc,EAAMwmE,EAAK46Y,GAAKR,UAAWQ,GAAKz3a,OAAOr9C,IAAIhB,GAAO,GACrE/H,GAAEyc,EAAMwmE,EAAK46Y,GAAKr+c,KAAKzW,IAAI80d,GAAKz3a,OAAOr9C,IAAIhB,GAAO,KAChG,MAAO,CAAEnH,GAAG,IAGTmI,GAAI80d,GAAKjsY,MAAQ,EAAG7oF,GAAI,EAAGA,KAAK,CACvC,IAAIu3wB,GAAWrmI,GAAMlxoB,IAErB,GAAKu3wB,GAAW,OAAOA,GAAS1/wB,EAElC,OAAO,EAGT,YAAyB6b,EAAMy9C,EAAWz7B,GACnChiB,EAAKwwT,SAAWxwT,EAAKgrT,QAC1B,IAAIv7I,EAAKzvK,EAAKnY,MAAM4nL,GAAG+wS,aAAa/ia,GACtB,WAAVz7B,GAAuBytJ,EAAGsimB,QAAQ,WAAW,GACjD/xwB,EAAK+rN,SAASt8C,GA6ChB,YAA2BzvK,EAAMwmE,EAAKs3sB,EAAQxyxB,GAC5C,OAAO+nyB,GAAoBrzxB,EAAM,sBAAuBwmE,EAAKs3sB,EAAQxyxB,IACnE0U,EAAKwuxB,SAAS,oBAAqB,SAAUjryB,GAAK,OAAOA,EAAEyc,EAAMwmE,EAAKl7E,KAG1E,YAA2B0U,EAAMwmE,EAAKs3sB,EAAQxyxB,GAC5C,OAAO+nyB,GAAoBrzxB,EAAM,sBAAuBwmE,EAAKs3sB,EAAQxyxB,IACnE0U,EAAKwuxB,SAAS,oBAAqB,SAAUjryB,GAAK,OAAOA,EAAEyc,EAAMwmE,EAAKl7E,MAI1E,YAA4B0U,EAAM89wB,EAAQxyxB,GACxC,GAAoB,GAAhBA,EAAMklX,OAAe,OAAO,EAChC,IAAIrK,EAAMnmW,EAAKnY,MAAMs+W,IACrB,IAAc,GAAV23a,EACF,QAAI33a,EAAIg0Z,gBACN74sB,GAAgBthD,EAAM0/c,UAAqBv5G,EAAK,EAAGA,EAAI5pW,QAAQowC,MAAO,YAC/D,GAMX,QADIy0a,EAAOj7G,EAAI5gW,QAAQu4wB,GACdxxxB,GAAI80d,EAAKjsY,MAAQ,EAAG7oF,GAAI,EAAGA,KAAK,CACvC,IAAIyW,GAAOzW,GAAI80d,EAAKjsY,MAAQisY,EAAKR,UAAYQ,EAAKr+c,KAAKzW,IACnDsiyB,GAAUxtU,EAAKz3a,OAAOr9C,IAC1B,GAAIyW,GAAKo3vB,cACL74sB,GAAgBthD,EAAM0/c,UAAqBv5G,EAAKyob,GAAU,EAAGA,GAAU,EAAI7rxB,GAAKxG,QAAQowC,MAAO,oBAC1F80a,gBAA2B1+c,IAGhC,SAFAu+C,GAAgBthD,EAAMyhd,UAAqBt7G,EAAKyob,IAAU,WAG9D,OAAO,GAxBP0E,CAAmBtzxB,EAAM89wB,EAAQxyxB,GA4BrC,YAAuB0U,GACrB,OAAOuzxB,GAAevzxB,GA9JxBgzxB,GAAa19a,QAAU,SAAUt1W,EAAM1U,GAErC,GADA0U,EAAKsuZ,SAA4B,IAAjBhja,EAAMwnX,SAAiBxnX,EAAMgja,UACzCklY,GAAoBxzxB,EAAM1U,GAQ9B,GAPqB,KAAjBA,EAAMwnX,SAAkB9yW,EAAKktxB,YAAY+E,aAC7CjyxB,EAAKyzxB,YAAcnoyB,EAAMwnX,QACzB9yW,EAAK0zxB,gBAAkBh9xB,KAAKC,OAKxBzG,GAAO+mtB,KAAwB,IAAjB3rtB,EAAMwnX,SAAkBxnX,EAAMi4D,SAAYj4D,EAAMkvX,QAAWlvX,EAAMgia,QASxEttZ,EAAKwuxB,SAAS,gBAAiB,SAAUjryB,GAAK,OAAOA,EAAEyc,EAAM1U,MA57B1E,YAAwB0U,EAAM1U,GAC5B,IAAIqe,EAAOre,EAAMwnX,QAAS47a,EAV5B,YAAiBpjyB,GACf,IAAI4E,EAAS,GACb,OAAI5E,EAAMi4D,UAAWrzD,GAAU,KAC3B5E,EAAMgia,UAAWp9Z,GAAU,KAC3B5E,EAAMkvX,SAAUtqX,GAAU,KAC1B5E,EAAMgja,WAAYp+Z,GAAU,KACzBA,EAI0ByjyB,CAAQroyB,GACzC,OAAY,GAARqe,GAAczZ,GAAOqvxB,KAAe,IAAR51wB,GAAsB,KAAR+kxB,EACrCkF,GAA2B5zxB,GAAM,IAAO6zxB,GAAqB7zxB,GACnD,IAAR2J,GAAezZ,GAAOqvxB,KAAe,IAAR51wB,GAAsB,KAAR+kxB,EAC7CkF,GAA2B5zxB,EAAM,IAAM8zxB,GAAsB9zxB,GACnD,IAAR2J,GAAsB,IAARA,IAEN,IAARA,EACFoqxB,GAAmB/zxB,GAAM,EAAI0uxB,IAASmF,GAAqB7zxB,GACjD,IAAR2J,EACFoqxB,GAAmB/zxB,EAAM,EAAG0uxB,IAASoF,GAAsB9zxB,GACjD,IAAR2J,EACFqqxB,GAAiBh0xB,GAAM,EAAI0uxB,IAASmF,GAAqB7zxB,GAC/C,IAAR2J,EA3Cb,YAA4B3J,GAC1B,GAAK9P,GAAOintB,UAAUn3sB,EAAKnY,MAAM41D,UAAU6ja,MAAMk3S,aAAe,GAChE,KAAIp6pB,EAAMp+F,EAAKyvS,KAAKs9K,eAChBC,EAAY5uX,EAAI4uX,UAEpB,GAAIA,GAAmC,GAAtBA,EAAUnrH,UAAgC,GADzCzjQ,EAAIworB,aAElB55T,EAAUt9K,YAAsD,SAAxCs9K,EAAUt9K,WAAWwxe,gBAA4B,CAC3E,IAAI9kuB,EAAQ4wa,EAAUt9K,WACtBukf,GAAej0xB,EAAMo8C,GAAO,GAC5BvsD,WAAW,WAAc,OAAOokyB,GAAej0xB,EAAMo8C,GAAO,IAAW,MAmChE83uB,CAAmBl0xB,IAASg0xB,GAAiBh0xB,EAAM,EAAG0uxB,IAASoF,GAAsB9zxB,GACnF0uxB,IAASx+xB,GAAOqvxB,IAAM,IAAM,OACnB,IAAR51wB,GAAsB,IAARA,GAAsB,IAARA,GAAsB,IAARA,IA26BgCwqxB,CAAen0xB,EAAM1U,GACzGA,EAAMu0C,iBAENu0vB,GAAmBp0xB,EAAM,WAZiE,CAC1F,IAAIrJ,EAAMD,KAAKC,MACfqJ,EAAKq0xB,aAAe19xB,EACpBqJ,EAAKs0xB,4BAA8BzkyB,WAAW,WACxCmQ,EAAKq0xB,cAAgB19xB,IACvBqJ,EAAKwuxB,SAAS,gBAAiB,SAAUjryB,GAAK,OAAOA,EAAEyc,EAAMs6W,GAAS,GAAI,YAC1Et6W,EAAKq0xB,aAAe,IAErB,OAQPrB,GAAat7a,MAAQ,SAAU13W,EAAMpZ,GAClB,IAAbA,EAAEksX,UAAiB9yW,EAAKsuZ,UAAW,IAGzC0kY,GAAav7a,SAAW,SAAUz3W,EAAM1U,GACtC,KAAIkoyB,GAAoBxzxB,EAAM1U,KAAWA,EAAMyhJ,UAC3CzhJ,EAAMi4D,UAAYj4D,EAAMkvX,QAAUtqX,GAAOqvxB,KAAOj0xB,EAAMgia,SAE1D,IAAIttZ,EAAKwuxB,SAAS,iBAAkB,SAAUjryB,GAAK,OAAOA,EAAEyc,EAAM1U,KAEhE,YADAA,EAAMu0C,iBAIR,IAAI0gb,EAAMvgd,EAAKnY,MAAM41D,UACrB,KAAM8ia,aAAeb,IAAmBa,EAAItB,MAAMo7S,WAAW95S,EAAIrB,MAAM,CACrE,IAAIz2d,EAAOkoB,OAAOC,aAAatlB,EAAMyhJ,UAChC/sI,EAAKwuxB,SAAS,kBAAmB,SAAUjryB,GAAK,OAAOA,EAAEyc,EAAMugd,EAAItB,MAAMz4Y,IAAK+5Y,EAAIrB,IAAI14Y,IAAK/9E,MAC5FuX,EAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAG42S,WAAW59d,GAAM68d,kBACjDh6d,EAAMu0C,oBAqHV,IAAI00vB,GAAqBrkyB,GAAOqvxB,IAAM,UAAY,UAElDrmwB,GAASmlW,UAAY,SAAUr+W,EAAM1U,GACnC0U,EAAKsuZ,SAAWhja,EAAMgja,SACtB,IAAIkmY,EAAUC,GAAcz0xB,GACxBrJ,EAAMD,KAAKC,MAAOlR,EAAO,cACzBkR,EAAMqJ,EAAK00xB,UAAUprpB,KAAO,KArHlC,YAAgBh+I,EAAO89D,GACrB,IAAI2oB,EAAK3oB,EAAM9hE,EAAIgE,EAAMwrV,QAAS9kQ,EAAK5oB,EAAM3X,EAAInmD,EAAM0rV,QACvD,OAAOjlQ,EAAKA,EAAKC,EAAKA,EAAK,IAmHY2itB,CAAOrpyB,EAAO0U,EAAK00xB,aAAeppyB,EAAMipyB,MAClD,eAAvBv0xB,EAAK00xB,UAAUjvyB,KAAyBA,EAAO,cACnB,eAAvBua,EAAK00xB,UAAUjvyB,OAAyBA,EAAO,gBAE1Dua,EAAK00xB,UAAY,CAACprpB,KAAM3yI,EAAKrP,EAAGgE,EAAMwrV,QAASrlS,EAAGnmD,EAAM0rV,QAASvxV,KAAMA,GAEvE,IAAI+gF,GAAMxmE,EAAK40xB,YAAYC,GAAYvpyB,KAClCk7E,KAEO,eAAR/gF,GACEua,EAAK4jb,WAAa5jb,EAAK4jb,UAAUtuU,OACrCt1G,EAAK4jb,UAAY,IAAIkxW,GAAU90xB,EAAMwmE,GAAKl7E,EAAOkpyB,KAC/B,eAAR/uyB,EAAwBsvyB,GAAoBC,IAAmBh1xB,EAAMwmE,GAAIA,IAAKA,GAAIs3sB,OAAQxyxB,GACpGA,EAAMu0C,iBAENu0vB,GAAmBp0xB,EAAM,aAI7B,IAAI80xB,GAAY,SAAmB90xB,EAAMwmE,EAAKl7E,EAAOkpyB,GACnD,IAWI3T,GAAYoU,GAXZr0B,GAASjjxB,KAYb,GAVAA,KAAKqiB,KAAOA,EACZriB,KAAKu3yB,SAAWl1xB,EAAKnY,MAAMs+W,IAC3BxoX,KAAK6oF,IAAMA,EACX7oF,KAAK2N,MAAQA,EACb3N,KAAK62yB,QAAUA,EACf72yB,KAAKmqvB,WAAax8uB,EAAMipyB,IACxB52yB,KAAKqvyB,aAAe1hyB,EAAMgja,SAC1B3wa,KAAKsvyB,sBAAuB,EAGxBzmtB,EAAIs3sB,QAAS,EACf+C,GAAa7gxB,EAAKnY,MAAMs+W,IAAI62G,OAAOx2Y,EAAIs3sB,QACvCmX,GAAYzutB,EAAIs3sB,WACX,CACL,IAAI18T,GAAOphd,EAAKnY,MAAMs+W,IAAI5gW,QAAQihE,EAAIA,KACtCq6sB,GAAaz/T,GAAKpnH,OAClBi7b,GAAY7zU,GAAKjsY,MAAQisY,GAAKz3a,SAAW,EAG3ChsD,KAAKw3yB,UAAY,KAEjB,IAAI9uyB,GAASmuyB,EAAU,KAAOlpyB,EAAMjF,OAChC+uyB,GAAa/uyB,GAAS2Z,EAAKijxB,QAAQC,YAAY78xB,IAAQ,GAAQ,KACnE1I,KAAK0I,OAAS+uyB,GAAaA,GAAWpqkB,IAAM,KAE5C,IACIvtK,GADMz9C,EAAKnY,MACK41D,WACA,GAAhBnyD,EAAMklX,QACNqwa,GAAWp7xB,KAAKy7d,KAAKr6E,YAAiD,IAApCg6Y,GAAWp7xB,KAAKy7d,KAAKlma,YACvDyC,cAAqBgka,IAAiBhka,GAAUsI,MAAQkvuB,IAAax3uB,GAAU2tE,GAAK6pqB,MACpFt3yB,KAAKw3yB,UAAY,CAACpyxB,KAAM89wB,GACRr6sB,IAAKyutB,GACLI,QAAS13yB,KAAK0I,SAAW1I,KAAK0I,OAAOwgZ,UACrCyuZ,cAAe33yB,KAAK0I,QAAU6J,GAAOovxB,QAAU3hyB,KAAK0I,OAAOssX,aAAa,qBAExFh1X,KAAK0I,QAAU1I,KAAKw3yB,YAAcx3yB,KAAKw3yB,UAAUE,SAAW13yB,KAAKw3yB,UAAUG,iBAC7E33yB,KAAKqiB,KAAKktxB,YAAYplxB,OAClBnqB,KAAKw3yB,UAAUE,UAAW13yB,KAAK0I,OAAOwgZ,WAAY,GAClDlpZ,KAAKw3yB,UAAUG,eACfzlyB,WAAW,WACP+wwB,GAAO5gwB,KAAK4jb,WAAag9U,IAAUA,GAAOv6wB,OAAOmxG,aAAa,kBAAmB,UACpF,IACL75G,KAAKqiB,KAAKktxB,YAAYvixB,SAGxB3K,EAAKyvS,KAAKt8S,iBAAiB,UAAWxV,KAAKmpa,GAAKnpa,KAAKmpa,GAAGtjZ,KAAK7lB,OAC7DqiB,EAAKyvS,KAAKt8S,iBAAiB,YAAaxV,KAAKs1H,KAAOt1H,KAAKs1H,KAAKzvG,KAAK7lB,OACnEy2yB,GAAmBp0xB,EAAM,YAmE3B,YAA6BA,EAAM1U,GACjC,QAAI0U,EAAK60hB,cAWL3kiB,GAAOintB,QAAUtstB,KAAKiN,IAAIxM,EAAMiqyB,UAAYv1xB,EAAKw1xB,oBAAsB,OACzEx1xB,EAAKw1xB,oBAAqB,KACnB,GA9EXV,GAAU92xB,UAAUs3G,KAAO,WACvB,IAAIsrpB,EAASjjxB,KAEfA,KAAKqiB,KAAKyvS,KAAK50R,oBAAoB,UAAWl9B,KAAKmpa,IACnDnpa,KAAKqiB,KAAKyvS,KAAK50R,oBAAoB,YAAal9B,KAAKs1H,MACjDt1H,KAAKw3yB,WAAax3yB,KAAK0I,SACzB1I,KAAKqiB,KAAKktxB,YAAYplxB,OAClBnqB,KAAKw3yB,UAAUE,SAAW13yB,KAAK0I,OAAOo+J,gBAAgB,aACtD9mK,KAAKw3yB,UAAUG,eAAiB33yB,KAAK0I,OAAOo+J,gBAAgB,mBAChE9mK,KAAKqiB,KAAKktxB,YAAYvixB,SAEpBhtB,KAAKsvyB,sBAAwBp9xB,WAAW,WAAc,OAAOs/xB,GAAevuB,EAAO5gwB,QACvFriB,KAAKqiB,KAAK4jb,UAAY,MAGxBkxW,GAAU92xB,UAAU8oZ,GAAK,SAAax7Z,GAGpC,GAFA3N,KAAK23H,OAEA33H,KAAKqiB,KAAKgrN,IAAIl/N,SAAkC,GAAzBR,EAAMjF,OAAOw7W,SAAgBv2W,EAAMjF,OAAO+kJ,WAAa9/I,EAAMjF,QAGzF,KAAImgF,EAAM7oF,KAAK6oF,IACX7oF,KAAKqiB,KAAKnY,MAAMs+W,KAAOxoX,KAAKu3yB,WAAY1utB,EAAM7oF,KAAKqiB,KAAK40xB,YAAYC,GAAYvpyB,KAEpF3N,KAASqvyB,eAAiBxmtB,EACxB4ttB,GAAmBz2yB,KAAKqiB,KAAM,WArJlC,YAA2BA,EAAMwmE,EAAKs3sB,EAAQxyxB,EAAOw8uB,GACnD,OAAOurD,GAAoBrzxB,EAAM,gBAAiBwmE,EAAKs3sB,EAAQxyxB,IAC7D0U,EAAKwuxB,SAAS,cAAe,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMwmE,EAAKl7E,OAC/Dw8uB,EA7BL,YAA2B9nuB,EAAM89wB,GAC/B,IAAc,GAAVA,EAAgB,OAAO,EAC3B,IAAgC2X,EAAcC,EAA1Cn1U,EAAMvgd,EAAKnY,MAAM41D,UACjB8ia,aAAekB,KAAiBg0U,EAAel1U,EAAIx9c,MAGvD,QADIq+c,GAAOphd,EAAKnY,MAAMs+W,IAAI5gW,QAAQu4wB,GACzBxxxB,GAAI80d,GAAKjsY,MAAQ,EAAG7oF,GAAI,EAAGA,KAAK,CACvC,IAAIyW,GAAOzW,GAAI80d,GAAKjsY,MAAQisY,GAAKR,UAAYQ,GAAKr+c,KAAKzW,IACvD,GAAIm1d,gBAA2B1+c,IAAO,CAGhC2yxB,EAFAD,GAAgBl1U,EAAItB,MAAM9pY,MAAQ,GAClC7oF,IAAKi0d,EAAItB,MAAM9pY,OAASisY,GAAKz3a,OAAO42a,EAAItB,MAAM9pY,MAAQ,IAAMorY,EAAItB,MAAMz4Y,IAC3D46Y,GAAKz3a,OAAO42a,EAAItB,MAAM9pY,OAEtBisY,GAAKz3a,OAAOr9C,IAC3B,OAIJ,OAAgB,MAAZopyB,IACFp0uB,GAAgBthD,EAAMyhd,UAAqBzhd,EAAKnY,MAAMs+W,IAAKuvb,GAAW,YAC/D,GASOC,CAAkB31xB,EAAM89wB,GAvC1C,YAA2B99wB,EAAM89wB,GAC/B,IAAc,GAAVA,EAAgB,OAAO,EAC3B,IAAI18T,EAAOphd,EAAKnY,MAAMs+W,IAAI5gW,QAAQu4wB,GAAS/6wB,EAAOq+c,EAAKR,UACvD,SAAI79c,GAAQA,EAAK+3vB,QAAUr5S,gBAA2B1+c,MACpDu+C,GAAgBthD,EAAM,IAAIyhd,GAAcL,GAAO,YACxC,GAkCyCw0U,CAAkB51xB,EAAM89wB,IAmJ/D+X,CAAkBl4yB,KAAKqiB,KAAMwmE,EAAIA,IAAKA,EAAIs3sB,OAAQxyxB,EAAO3N,KAAKmqvB,YACvEx8uB,EAAMu0C,iBACmB,GAAhBv0C,EAAMklX,SACL7yX,KAAK62yB,SAEJtkyB,GAAOintB,QAAUx5tB,KAAKw3yB,YAAcx3yB,KAAKw3yB,UAAUpyxB,KAAK+3vB,QAQxD5qwB,GAAOyntB,UAAYh6tB,KAAKqiB,KAAKnY,MAAM41D,qBAAqBiia,KACxD70d,KAAKulC,IAAIvlC,KAAKiN,IAAI0uE,EAAIA,IAAM7oF,KAAKqiB,KAAKnY,MAAM41D,UAAUsI,MAC7Cl7D,KAAKiN,IAAI0uE,EAAIA,IAAM7oF,KAAKqiB,KAAKnY,MAAM41D,UAAU2tE,MAAQ,IACzE9pE,GAAgB3jE,KAAKqiB,KAAMs+c,QAAe3ge,KAAKqiB,KAAKnY,MAAMs+W,IAAI5gW,QAAQihE,EAAIA,MAAO,WACjFl7E,EAAMu0C,kBAENu0vB,GAAmBz2yB,KAAKqiB,KAAM,aAIlC80xB,GAAU92xB,UAAUi1G,KAAO,SAAe3nH,IACnC3N,KAAKqvyB,eAAiBniyB,KAAKiN,IAAIna,KAAK2N,MAAMhE,EAAIgE,EAAMwrV,SAAW,GACzCjsV,KAAKiN,IAAIna,KAAK2N,MAAMmmD,EAAInmD,EAAM0rV,SAAW,KAChEr5V,KAAKqvyB,cAAe,GACxBoH,GAAmBz2yB,KAAKqiB,KAAM,WACT,GAAjB1U,EAAMqjL,SAAgBhxL,KAAK23H,QAGjCp8F,GAAS48wB,UAAY,SAAU91xB,GAC7By0xB,GAAcz0xB,GACdo0xB,GAAmBp0xB,EAAM,YAG3BkZ,GAAS8+S,YAAc,SAAUh4T,GAAQ,OAAOy0xB,GAAcz0xB,IAsB9D,IAAI+1xB,GAAqB7lyB,GAAOmmtB,QAAU,KAAO,EA+CjD,YAA4Br2sB,EAAM/Q,GAChC2V,aAAa5E,EAAKg2xB,kBACd/myB,GAAQ,IAAM+Q,EAAKg2xB,iBAAmBnmyB,WAAW,WAAc,OAAO0jyB,GAAevzxB,IAAU/Q,IAGrG,YAA0B+Q,GAKxB,IAJIA,EAAK60hB,YACP70hB,EAAK60hB,WAAY,EACjB70hB,EAAKw1xB,mBAKT,cACE,IAAIlqyB,EAAQgU,SAASkixB,YAAY,SACjCl2xB,SAAMm2xB,UAAU,SAAS,GAAM,GACxBn2xB,EAAMiqyB,UAReU,IAErBj2xB,EAAK2qxB,iBAAiBjnyB,OAAS,GAAKsc,EAAK2qxB,iBAAiBl6wB,MAAM22wB,mBASzE,YAAwBpnxB,EAAMg+I,GAG5B,GAFAh+I,EAAKktxB,YAAY+E,aACjBiE,GAAiBl2xB,GACbg+I,GAAeh+I,EAAKijxB,QAAQ94vB,MAAO,CACrC,IAAIo2b,EAAM41U,GAAiBn2xB,GAC3B,OAAIugd,IAAQA,EAAIQ,GAAG/gd,EAAKnY,MAAM41D,WAAcz9C,EAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAG+wS,aAAaD,IAC9Evgd,EAAKgoD,YAAYhoD,EAAKnY,QACtB,EAET,OAAO,EAzETmryB,GAAaoD,iBAAmBpD,GAAaqD,kBAAoB,SAAUr2xB,GACzE,IAAKA,EAAK60hB,UAAW,CACnB70hB,EAAKktxB,YAAYvwb,QACjB,IAAI90W,EAAQmY,EAAKnY,MACbu5d,EAAOv5d,EAAM41D,UAAUwha,MAC3B,GAAIp3d,EAAM41D,UAAU2f,QACfv1E,EAAMspxB,cACJ/vT,EAAK43S,YAAc53S,EAAKo3S,cAAgBp3S,EAAKO,WAAWr2P,MAAM5pL,KAAK,SAAUlnB,IAAK,OAAiC,IAA1BA,GAAE/0B,KAAKy7d,KAAK24S,aAE1G75vB,EAAKs2xB,WAAat2xB,EAAKnY,MAAMspxB,aAAe/vT,EAAK91P,QACjDiokB,GAAevzxB,GAAM,GACrBA,EAAKs2xB,WAAa,aAElB/C,GAAevzxB,GAIX9P,GAAOovxB,OAASz3xB,EAAM41D,UAAU2f,OAASgkZ,EAAKo3S,eAAiBp3S,EAAK43S,YAAc53S,EAAKO,WAAWr2P,MAAM5nO,OAE1G,QADI68d,EAAMvgd,EAAKyvS,KAAKs9K,eACXhqd,EAAOw9c,EAAIyM,UAAWj9c,GAASwwc,EAAIqmU,YAAa7jxB,GAAyB,GAAjBA,EAAK8+V,UAA2B,GAAV9xV,IAAc,CACnG,IAAI45B,GAAS55B,GAAS,EAAIhN,EAAK6+c,UAAY7+c,EAAK65jB,WAAW7sjB,GAAS,GACpE,IAAK45B,GAAU,MACf,GAAuB,GAAnBA,GAAOk4T,SAAe,CACxB0+G,EAAIrQ,SAASvma,GAAQA,GAAO06tB,UAAU3gxB,QACtC,MAEAqf,EAAO4mC,GACP55B,IAAS,EAKjB/P,EAAK60hB,WAAY,EAEnB0hQ,GAAmBv2xB,EAAM+1xB,KAG3B/C,GAAawD,eAAiB,SAAUx2xB,EAAM1U,GACxC0U,EAAK60hB,YACP70hB,EAAK60hB,WAAY,EACjB70hB,EAAKw1xB,mBAAqBlqyB,EAAMiqyB,UAChCgB,GAAmBv2xB,EAAM,MA2D7B,IAAIy2xB,GAAsBvmyB,GAAOkvrB,IAAMlvrB,GAAOkwxB,WAAa,IACpDlwxB,GAAO+mtB,KAAO/mtB,GAAOqwxB,eAAiB,IA0C7C,YAAiBvgxB,EAAMvX,EAAMkzG,EAAM/0G,GACjC,IAAI2F,EAAQmqyB,GAAmB12xB,EAAMvX,EAAMkzG,EAAM37F,EAAKsuZ,SAAUtuZ,EAAKnY,MAAM41D,UAAUwha,OACrF,GAAIj/c,EAAKwuxB,SAAS,cAAe,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMpZ,EAAG2F,GAAS8zd,WAAoB,OAAO,EACtG,IAAK9zd,EAAS,OAAO,EAErB,IAAIoqyB,GAxBN,YAAyBpqyB,GACvB,OAA0B,GAAnBA,EAAMorwB,WAAmC,GAAjBprwB,EAAMqrwB,SAA4C,GAA5BrrwB,EAAMgQ,QAAQw/c,WAAkBxvd,EAAMgQ,QAAQmzS,WAAa,KAuB/Fknf,CAAgBrqyB,GAC7BkjL,GAAKknnB,GAAa32xB,EAAKnY,MAAM4nL,GAAGmimB,qBAAqB+kB,GAAY32xB,EAAKsuZ,UAAYtuZ,EAAKnY,MAAM4nL,GAAGkimB,iBAAiBplxB,GACrHyT,SAAK+rN,SAASt8C,GAAG61S,iBAAiBysT,QAAQ,SAAS,GAAMA,QAAQ,UAAW,WACrE,EAhDT74vB,GAASwpC,KAAOswuB,GAAa78B,IAAM,SAAUn2vB,EAAMpZ,GACjD,IAAI25d,EAAMvgd,EAAKnY,MAAM41D,UAAW04sB,EAAgB,OAAVvvwB,EAAEnB,KACxC,IAAI86d,EAAInjZ,MAGR,KAAI3sE,EAAOgmyB,GAAqB,KAAO7vyB,EAAEslO,cAErC9tH,GAAMy4rB,GAAsB72xB,EADpBugd,EAAIhkd,WAEZyuN,GAAM5sH,GAAI4sH,IACVviO,GAAO21G,GAAI31G,KACXgI,GACF7J,EAAEi5C,iBACFpvC,EAAKqqM,YACLrqM,EAAKm6H,QAAQ,YAAaogG,GAAIhwL,WAC9BvqC,EAAKm6H,QAAQ,aAAcniI,KAzC/B,YAAqBuX,EAAMgrN,GAGzB,GAAKhrN,EAAKgrN,IAAI5/E,WACd,KAAInzF,EAAOj4C,EAAKgrN,IAAI5/E,WAAW5yG,YAAYl5B,SAAS+O,cAAc,QAClE4pC,EAAKzf,YAAYwyL,GACjB/yK,EAAKnwD,MAAMwyC,QAAU,6CACrB,IAAIimb,EAAMwM,eAAgBxna,EAAQjmD,SAAS87rB,cAC3C71oB,EAAMi3qB,mBAAmBxxgB,GAIzBhrN,EAAKgrN,IAAI42D,OACT2+L,EAAI0M,kBACJ1M,EAAIg+O,SAASh5oB,GACb11D,WAAW,WACLooD,EAAKmzF,YAAcnzF,EAAKmzF,WAAW/vG,YAAY4c,GACnDj4C,EAAKgrT,SACJ,KAyBD8re,CAAY92xB,EAAMgrN,IAEhBmriB,GAAOn2vB,EAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAGqimB,kBAAkBxsT,iBAAiBysT,QAAQ,UAAW,UAiC/FihB,GAAaz4X,MAAQ,SAAUv6Z,EAAMpZ,GACnC,IAAI6J,EAAOgmyB,GAAqB,KAAO7vyB,EAAEslO,cACrCz7N,GAAQsmyB,GAAQ/2xB,EAAMvP,EAAK8sF,QAAQ,cAAe9sF,EAAK8sF,QAAQ,aAAc32F,GAAMA,EAAEi5C,iBA5B3F,YAAsB7/B,EAAMpZ,GAC1B,GAAKoZ,EAAKgrN,IAAI5/E,WACd,KAAIwkpB,EAAY5vxB,EAAKsuZ,UAAYtuZ,EAAKnY,MAAM41D,UAAUwha,MAAMjlH,OAAOv0W,KAAKy7d,KAAKv3c,KACzEtjB,EAAS2Z,EAAKgrN,IAAI5/E,WAAW5yG,YAAYl5B,SAAS+O,cAAcuhxB,EAAY,WAAa,QACxFA,IAAavpyB,EAAO66xB,gBAAkB,QAC3C76xB,EAAOyB,MAAMwyC,QAAU,6CACvBj0C,EAAO2kU,QACPn7T,WAAW,WACTmQ,EAAKgrT,QACD3kU,EAAO+kJ,YAAc/kJ,EAAO+kJ,WAAW/vG,YAAYh1C,GACvDy9kB,EAAiBizN,GAAQ/2xB,EAAM3Z,EAAO/E,MAAO,KAAMsF,GAC5CmwyB,GAAQ/2xB,EAAM3Z,EAAOstX,YAAattX,EAAO20C,UAAWp0C,IAC1D,KAiBIowyB,CAAah3xB,EAAMpZ,IAG5B,IAAIqwyB,GAAW,SAAkB1qyB,EAAO0mH,GACtCt1H,KAAK4O,MAAQA,EACb5O,KAAKs1H,KAAOA,GAGVikrB,GAAmBhnyB,GAAOqvxB,IAAM,SAAW,UAyI/C,QAASlyuB,MAvITn0B,GAAS+5X,UAAY,SAAUjzY,EAAMpZ,GACnC,IAAIg9b,EAAY5jb,EAAK4jb,UAErB,GADIA,GAAaA,EAAUtuU,OACtB1uH,EAAEqqoB,aAEP,KAAI1wK,EAAMvgd,EAAKnY,MAAM41D,UACjB+oB,EAAM+5Y,EAAInjZ,MAAQ,KAAOp9D,EAAK40xB,YAAYC,GAAYjuyB,IAC1D,KAAI4/E,GAAOA,EAAIA,KAAO+5Y,EAAIx6Z,MAAQygB,EAAIA,MAAQ+5Y,aAAekB,GAAgBlB,EAAIn1V,GAAK,EAAGm1V,EAAIn1V,KAAY,GAAIw4T,GAAaA,EAAUuxW,UAClIn1xB,EAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAG+wS,aAAaiB,UAAqBzhd,EAAKnY,MAAMs+W,IAAKy9E,EAAUuxW,UAAU3utB,eACzF5/E,EAAEP,QAA+B,GAArBO,EAAEP,OAAOw7W,SAAe,CAC7C,IAAIwkM,GAAOrmiB,EAAKijxB,QAAQC,YAAYt8xB,EAAEP,QAAQ,GAC1CggjB,IAAQA,GAAKtjiB,KAAKtd,KAAKy7d,KAAKr6E,WAAaw/J,IAAQrmiB,EAAKijxB,SACtDjjxB,EAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAG+wS,aAAaiB,UAAqBzhd,EAAKnY,MAAMs+W,IAAKkgM,GAAK88O,aAEzF,IAAI52xB,GAAQyT,EAAKnY,MAAM41D,UAAUlhD,UAC7B6hG,GAAMy4rB,GAAsB72xB,EAAMzT,IAClCy+N,GAAM5sH,GAAI4sH,IACVviO,GAAO21G,GAAI31G,KACf7B,EAAEqqoB,aAAan2b,YACfl0M,EAAEqqoB,aAAarmgB,QAAQ6rqB,GAAqB,OAAS,YAAazrkB,GAAIhwL,WAEtEp0C,EAAEqqoB,aAAakmK,cAAgB,WAC1BV,IAAsB7vyB,EAAEqqoB,aAAarmgB,QAAQ,aAAcniI,IAChEuX,EAAKorG,SAAW,IAAI6rrB,GAAS1qyB,IAAQ3F,EAAEswyB,OAGzCh+wB,GAASk+wB,QAAU,SAAUp3xB,GAC3B,IAAIorG,EAAWprG,EAAKorG,SACpBt4G,OAAOjD,WAAW,WACZmQ,EAAKorG,UAAYA,IAAaprG,EAAKorG,SAAW,OACjD,KAGL4nrB,GAAaqE,SAAWrE,GAAal6O,UAAY,SAAUjwjB,EAAGjC,GAAK,OAAOA,EAAEi5C,kBAE5EmzvB,GAAajqoB,KAAO,SAAU/oJ,EAAMpZ,GAClC,IAAIwkH,EAAWprG,EAAKorG,SAGpB,GAFAprG,EAAKorG,SAAW,KAEXxkH,EAAEqqoB,aAEP,KAAIqmK,EAAWt3xB,EAAK40xB,YAAYC,GAAYjuyB,IAC5C,GAAK0wyB,EACL,KAAIC,EAASv3xB,EAAKnY,MAAMs+W,IAAI5gW,QAAQ+xxB,EAAS9wtB,KAC7C,GAAK+wtB,EACL,KAAIhryB,GAAQ6+G,GAAYA,EAAS7+G,MAC7BA,GACFyT,EAAKwuxB,SAAS,kBAAmB,SAAUjryB,IAAKgJ,GAAQhJ,GAAEgJ,MAE1DA,GAAQmqyB,GAAmB12xB,EAAMpZ,EAAEqqoB,aAAa1ziB,QAAQk5sB,GAAqB,OAAS,cAC3DA,GAAqB,KAAO7vyB,EAAEqqoB,aAAa1ziB,QAAQ,cAAc,EAAOg6sB,GAErG,IAAItkrB,GAAO7H,IAAaxkH,EAAEswyB,IAC1B,GAAIl3xB,EAAKwuxB,SAAS,aAAc,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMpZ,EAAG2F,IAAS8zd,QAAaptW,MAErF,YADArsH,EAAEi5C,iBAGJ,GAAKtzC,GAEL3F,GAAEi5C,iBACF,IAAImruB,GAAYz+wB,GAAQiryB,GAAUx3xB,EAAKnY,MAAMs+W,IAAKoxb,EAAO/wtB,IAAKj6E,IAASgryB,EAAO/wtB,IAC7D,MAAbwksB,KAAqBA,GAAYusB,EAAO/wtB,KAE5C,IAAIipG,GAAKzvK,EAAKnY,MAAM4nL,GAChBx8D,IAAQw8D,GAAGqimB,kBAEf,IAAItrsB,GAAMipG,GAAG3yJ,QAAQx5B,IAAI0nxB,IACrB3rwB,GAA4B,GAAnB9S,GAAMorwB,WAAmC,GAAjBprwB,GAAMqrwB,SAA4C,GAA5BrrwB,GAAMgQ,QAAQw/c,WACrE07U,GAAehonB,GAAG02L,IAKtB,GAJAuxb,GACIjonB,GAAGigmB,iBAAiBlpsB,GAAKA,GAAKj6E,GAAMgQ,QAAQmzS,YAE5CjgI,GAAGq/lB,aAAatosB,GAAKA,GAAKj6E,KAC1BkjL,GAAG02L,IAAI46G,GAAG02U,IAEd,KAAIr2U,GAAO3xS,GAAG02L,IAAI5gW,QAAQihE,IAC1B,GAAInnE,IAAUoid,gBAA2Bl1d,GAAMgQ,QAAQmzS,aACnD0xK,GAAKR,WAAaQ,GAAKR,UAAUo0S,WAAWzowB,GAAMgQ,QAAQmzS,YAC5DjgI,GAAG+wS,aAAa,IAAIiB,GAAcL,SAC7B,CACL,IAAIn5b,GAAMwnJ,GAAG3yJ,QAAQx5B,IAAI0nxB,IACzBv7lB,GAAG3yJ,QAAQmsQ,KAAKx5G,GAAG3yJ,QAAQmsQ,KAAKvlS,OAAS,GAAGa,QAAQ,SAAUumI,GAAOC,GAAK+lpB,GAAUC,IAAS,OAAO9ovB,GAAM8ovB,KAC1GthmB,GAAG+wS,aAAaosU,GAAiB5sxB,EAAMohd,GAAM3xS,GAAG02L,IAAI5gW,QAAQ0iB,MAE9DjoB,EAAKgrT,QACLhrT,EAAK+rN,SAASt8C,GAAGsimB,QAAQ,UAAW,eAGtC74vB,GAAS8xS,MAAQ,SAAUhrT,GACpBA,EAAKwwT,UACRxwT,EAAKktxB,YAAYplxB,OACjB9H,EAAKgrN,IAAIzlL,UAAUY,IAAI,uBACvBnmC,EAAKktxB,YAAYvixB,QACjB3K,EAAKwwT,SAAU,EACf3gU,WAAW,WACLmQ,EAAKijxB,SAAWjjxB,EAAKoggB,aAAepggB,EAAKktxB,YAAYhtjB,iBAAiB6gP,GAAG/gd,EAAKyvS,KAAKs9K,iBACnFoiU,GAAenvxB,IAClB,MAIPkZ,GAAS0oQ,KAAO,SAAU5hR,EAAMpZ,GAC1BoZ,EAAKwwT,UACPxwT,EAAKktxB,YAAYplxB,OACjB9H,EAAKgrN,IAAIzlL,UAAUnJ,OAAO,uBAC1Bp8B,EAAKktxB,YAAYvixB,QACb/jB,EAAE+uX,eAAiB31W,EAAKgrN,IAAIl/N,SAASlF,EAAE+uX,gBACvC31W,EAAKktxB,YAAYhtjB,iBAAiBlwN,IAAI,IAC1ChQ,EAAKwwT,SAAU,IAInBt3S,GAASy+wB,YAAc,SAAU33xB,EAAM1U,GAMrC,GAAI4E,GAAOyntB,QAAUzntB,GAAOmmtB,SAA8B,yBAAnB/qtB,EAAM2ye,UAAsC,CACjF,IAAI25T,EAAiB53xB,EAAK43xB,eAC1B/nyB,WAAW,WACT,GAAImQ,EAAK43xB,gBAAkBA,IAE3B53xB,EAAKgrN,IAAI42D,OACT5hR,EAAKgrT,SACDhrT,EAAKwuxB,SAAS,gBAAiB,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMs6W,GAAS,EAAG,iBAC7E,KACI2wG,EADMjrd,EAAKnY,MAAM41D,UACHwta,QAEdA,GAAWA,EAAQzkZ,IAAM,GAAKxmE,EAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAG3yK,OAAOmud,EAAQzkZ,IAAM,EAAGykZ,EAAQzkZ,KAAK8+Y,oBAClG,MAKU0tU,GAAgB95wB,GAASm0B,IAAQ2lvB,GAAa3lvB,IAE/D,YAAqBv9B,EAAGD,GACtB,GAAIC,GAAKD,EAAK,OAAO,EACrB,QAASuyC,KAAKtyC,EAAK,GAAIA,EAAEsyC,KAAOvyC,EAAEuyC,GAAM,OAAO,EAC/C,QAAS40sB,KAAOnnvB,EAAK,KAAMmnvB,KAAOlnvB,GAAM,OAAO,EAC/C,OAAO,EAGT,IAAI+nxB,GAAa,SAAoB5skB,EAAOi2P,GAC1Cvje,KAAKuje,KAAOA,GAAQ42U,GACpBn6yB,KAAKooF,KAAOpoF,KAAKuje,KAAKn7Y,MAAQ,EAC9BpoF,KAAKstO,MAAQA,GAGf4skB,GAAW75xB,UAAU1a,IAAM,SAAcw5B,EAASw3nB,EAAMvkoB,EAAQ+ilB,GAC9D,IAAI10f,GAAMthF,EAAQurvB,UAAU/zH,EAAKvulB,KAAO+siB,EAAWn1mB,KAAKooF,KAAO,GAAI,EAAK,GAClES,GAAM43B,GAAI53B,IAEhB,OADgB43B,GAAI6hB,QACH,KAAO,IAAI83qB,GAAWvxtB,GAAMz2D,EAAQy2D,GAAMz2D,EAAQpyB,OAGrEk6yB,GAAW75xB,UAAU7X,MAAQ,WAAoB,OAAO,GAExD0xyB,GAAW75xB,UAAU+id,GAAK,SAAa/ja,GACrC,OAAOr/D,MAAQq/D,GACZA,aAAiB66uB,KAChBl6yB,KAAKuje,KAAK1wd,KAAO7S,KAAKuje,KAAK1wd,KAAOwsD,EAAMkka,KAAK1wd,KAC7C7S,KAAKstO,OAASjuK,EAAMiuK,OAAS+skB,GAAYr6yB,KAAKuje,KAAMlka,EAAMkka,QAGhE,IAAI+2U,GAAa,SAAoBttkB,EAAOu2P,GAC1Cvje,KAAKuje,KAAOA,GAAQ42U,GACpBn6yB,KAAKgtO,MAAQA,GAGfstkB,GAAWj6xB,UAAU1a,IAAM,SAAcw5B,EAASw3nB,EAAMvkoB,EAAQ+ilB,GAC9D,IAAI/siB,GAAOjpC,EAAQx5B,IAAIgxpB,EAAKvulB,KAAO+siB,EAAWn1mB,KAAKuje,KAAKg3U,gBAAiB,EAAK,GAAKnoxB,EAC/Eq7G,GAAKtuG,EAAQx5B,IAAIgxpB,EAAKlphB,GAAK0ne,EAAWn1mB,KAAKuje,KAAKi3U,aAAe,GAAI,GAAMpoxB,EAC7E,OAAOg2C,IAAQqlE,GAAK,KAAO,IAAI2sqB,GAAWhyuB,GAAMqlE,GAAIztI,OAGtDs6yB,GAAWj6xB,UAAU7X,MAAQ,SAAgB0C,EAAGyrpB,GAAQ,OAAOA,EAAKvulB,KAAOuulB,EAAKlphB,IAEhF6sqB,GAAWj6xB,UAAU+id,GAAK,SAAa/ja,GACrC,OAAOr/D,MAAQq/D,GACZA,aAAiBi7uB,IAAcD,GAAYr6yB,KAAKgtO,MAAO3tK,EAAM2tK,QAC7DqtkB,GAAYr6yB,KAAKuje,KAAMlka,EAAMkka,OAGlC+2U,GAAW50F,GAAK,SAAa/uD,GAAQ,OAAOA,EAAK7upB,gBAAgBwyyB,IAEjE,IAAI94B,GAAW,SAAkBx0iB,EAAOu2P,GACtCvje,KAAKuje,KAAOA,GAAQ42U,GACpBn6yB,KAAKgtO,MAAQA,GAGfw0iB,GAASnhwB,UAAU1a,IAAM,SAAcw5B,EAASw3nB,EAAMvkoB,EAAQ+ilB,GAC5D,IAAI/siB,GAAOjpC,EAAQurvB,UAAU/zH,EAAKvulB,KAAO+siB,EAAW,GACpD,GAAI/siB,GAAKk6D,QAAW,OAAO,KAC3B,IAAImL,GAAKtuG,EAAQurvB,UAAU/zH,EAAKlphB,GAAK0ne,GAAW,GAChD,OAAI1ne,GAAGnL,SAAWmL,GAAG5kD,KAAOzgB,GAAKygB,IAAc,KACxC,IAAIuxtB,GAAWhyuB,GAAKygB,IAAMz2D,EAAQq7G,GAAG5kD,IAAMz2D,EAAQpyB,OAG5DwhxB,GAASnhwB,UAAU7X,MAAQ,SAAgB4c,EAAMuxoB,GAC/C,IAGMl4lB,GAHFgiD,EAAMr7F,EAAKxG,QAAQkvB,UAAU6onB,EAAKvulB,MAEhCh2C,GAASquF,EAAIruF,OAEnB,OAAOA,IAAUukoB,EAAKvulB,QAAU3J,GAAQr5C,EAAKq5C,MAH/BgiD,EAAI78F,QAGyC0zvB,QAAUllvB,GAASqsC,GAAMsga,UAAY43L,EAAKlphB,IAGvG+zoB,GAASnhwB,UAAU+id,GAAK,SAAa/ja,GACnC,OAAOr/D,MAAQq/D,GACZA,aAAiBmitB,IAAY64B,GAAYr6yB,KAAKgtO,MAAO3tK,EAAM2tK,QAC3DqtkB,GAAYr6yB,KAAKuje,KAAMlka,EAAMkka,OAMlC,IAAI62U,GAAa,SAAoBhyuB,EAAMqlE,EAAI3lI,GAG7C9H,KAAKooE,KAAOA,EAIZpoE,KAAKytI,GAAKA,EACVztI,KAAK8H,KAAOA,GAGVoywB,GAAuB,CAAE32S,KAAM,CAAEw0S,cAAc,GAAOtmE,OAAQ,CAAEsmE,cAAc,IAElFqiC,GAAW/5xB,UAAU0kD,KAAO,SAAeqD,EAAMqlE,GAC/C,OAAO,IAAI2sqB,GAAWhyuB,EAAMqlE,EAAIztI,KAAK8H,OAGvCsyyB,GAAW/5xB,UAAU+id,GAAK,SAAa/ja,EAAOjtC,GAC1C,YAAgB,IAAXA,IAAoBA,EAAS,GAE7BpyB,KAAK8H,KAAKs7d,GAAG/ja,EAAMv3D,OAAS9H,KAAKooE,KAAOh2C,GAAUitC,EAAM+I,MAAQpoE,KAAKytI,GAAKr7G,GAAUitC,EAAMouE,IAGnG2sqB,GAAW/5xB,UAAU1a,IAAM,SAAcw5B,EAAS/M,EAAQ+ilB,GACxD,OAAOn1mB,KAAK8H,KAAKnC,IAAIw5B,EAASn/B,KAAMoyB,EAAQ+ilB,IAoD9CilM,GAAWzyJ,OAAS,SAAiB9+jB,EAAKykJ,EAAOi2P,GAC/C,OAAO,IAAI62U,GAAWvxtB,EAAKA,EAAK,IAAIqxtB,GAAW5skB,EAAOi2P,KAoBxD62U,GAAW3oG,OAAS,SAAiBrpoB,EAAMqlE,EAAIu/F,EAAOu2P,GACpD,OAAO,IAAI62U,GAAWhyuB,EAAMqlE,EAAI,IAAI6sqB,GAAWttkB,EAAOu2P,KAYxD62U,GAAWh1xB,KAAO,SAAegjD,EAAMqlE,EAAIu/F,EAAOu2P,GAChD,OAAO,IAAI62U,GAAWhyuB,EAAMqlE,EAAI,IAAI+zoB,GAASx0iB,EAAOu2P,KAMtD22S,GAAqB32S,KAAK1kd,IAAM,WAAc,OAAO7e,KAAK8H,KAAKy7d,MAE/D22S,GAAqBzoE,OAAO5yrB,IAAM,WAAc,OAAO7e,KAAK8H,gBAAgBwyyB,IAE5Ez0yB,OAAOszwB,iBAAkBihC,GAAW/5xB,UAAW65vB,IAkB/C,IAAIn7uB,GAAO,GAAIo7wB,GAAS,GAOpBM,GAAgB,SAAuBC,EAAOl8uB,GAChDx+D,KAAK06yB,MAAQA,GAASA,EAAM30yB,OAAS20yB,EAAQ37wB,GAC7C/+B,KAAKw+D,SAAWA,GAAYA,EAASz4D,OAASy4D,EAAWz/B,IAM3D07wB,GAAcz4uB,OAAS,SAAiBwmT,EAAKmyb,GAC3C,OAAOA,EAAY50yB,OAAS60yB,GAAUD,EAAanyb,EAAK,EAAG2xb,IAAU16tB,IAUvEg7tB,GAAcp6xB,UAAU9Z,KAAO,SAAeymB,EAAOsd,EAAK8iY,GACxD,IAAI76Z,EAAS,GACb,YAAKsoyB,UAAmB,MAAT7txB,EAAgB,EAAIA,EAAc,MAAPsd,EAAc,IAAMA,EAAK/3B,EAAQ,EAAG66Z,GACvE76Z,GAGTkoyB,GAAcp6xB,UAAUw6xB,UAAY,SAAoB7txB,EAAOsd,EAAK/3B,EAAQ6f,EAAQg7Y,IAClF,QAASz+Z,GAAI,EAAGA,GAAI3O,KAAK06yB,MAAM30yB,OAAQ4I,KAAK,CAC1C,IAAIgopB,GAAO32pB,KAAK06yB,MAAM/ryB,IAClBgopB,GAAKvulB,MAAQ99B,GAAOqsnB,GAAKlphB,IAAMzgH,KAAWogZ,IAAaA,GAAUupP,GAAKpzL,QACtEhxd,EAAO9M,KAAKkxpB,GAAK5xlB,KAAK4xlB,GAAKvulB,KAAOh2C,EAAQukoB,GAAKlphB,GAAKr7G,IAE1D,QAASotvB,GAAM,EAAGA,GAAMx/wB,KAAKw+D,SAASz4D,OAAQy5wB,IAAO,EACnD,GAAIx/wB,KAAKw+D,SAASghtB,IAAOl1uB,GAAOtqC,KAAKw+D,SAASghtB,GAAM,GAAKxyvB,EAAO,CAC9D,IAAI8txB,GAAW96yB,KAAKw+D,SAASghtB,IAAO,EACpCx/wB,KAAKw+D,SAASghtB,GAAM,GAAGq7B,UAAU7txB,EAAQ8txB,GAAUxwwB,EAAMwwwB,GAAUvoyB,EAAQ6f,EAAS0oxB,GAAU1tY,MAepGqtY,GAAcp6xB,UAAU1a,IAAM,SAAcw5B,EAASqpV,EAAKzpW,GACxD,OAAI/e,MAAQy/E,IAAgC,GAAvBtgD,EAAQmsQ,KAAKvlS,OAAsB/F,KACjDA,KAAK+6yB,SAAS57wB,EAASqpV,EAAK,EAAG,EAAGzpW,GAAWo7xB,KAGtDM,GAAcp6xB,UAAU06xB,SAAW,SAAmB57wB,EAAS/Z,EAAMgN,EAAQ+ilB,EAAWp2lB,IAEtF,QADIi8xB,GACKrsyB,GAAI,EAAGA,GAAI3O,KAAK06yB,MAAM30yB,OAAQ4I,KAAK,CAC1C,IAAIw4d,GAASnne,KAAK06yB,MAAM/ryB,IAAGhJ,IAAIw5B,EAAS/M,EAAQ+ilB,GAC5ChuI,IAAUA,GAAOr/d,KAAKU,MAAM4c,EAAM+hd,KAAY6zU,KAAaA,GAAW,KAAKv1yB,KAAK0he,IAC3Epod,GAAQ0mW,UAAY1mW,GAAQ0mW,SAASzlX,KAAK06yB,MAAM/ryB,IAAG40d,MAG9D,OAAIvje,KAAKw+D,SAASz4D,OAmNpB,YAAqBk1yB,EAAaD,EAAU77wB,EAAS/Z,EAAMgN,EAAQ+ilB,GAAWp2lB,IAiB5E,QAhBIy/C,GAAWy8uB,EAAYrsyB,QAIvB+6E,GAAQ,SAAUwppB,GAAU+nE,GAAQjmH,GAAUkmH,IAChD,QAASxsyB,GAAI,EAAGA,GAAI6vD,GAASz4D,OAAQ4I,IAAK,EAAG,CAC3C,IAAI27B,GAAMk0B,GAAS7vD,GAAI,GAAIysyB,QAAS,GACzB,GAAP9wwB,IAAa6osB,GAAW7osB,GAAM6qkB,KAC9B+lM,IAAU18uB,GAAS7vD,IAAKwmmB,GAC1B32iB,GAAS7vD,GAAI,IAAK,EACTsmrB,IAAY7iqB,IAAWgpxB,GAASD,GAASlmH,IAAaimH,GAAS/nE,OACxE30qB,GAAS7vD,KAAMysyB,GACf58uB,GAAS7vD,GAAI,IAAMysyB,OAIhBzsyB,GAAI,EAAGA,GAAIwwB,EAAQmsQ,KAAKvlS,OAAQ4I,KAAOwwB,EAAQmsQ,KAAK38R,IAAG/H,QAAQ+iF,IAKxE,QADI0xtB,IAAc,EACT77B,GAAM,EAAGA,GAAMhhtB,GAASz4D,OAAQy5wB,IAAO,EAAK,IAAyB,GAArBhhtB,GAASghtB,GAAM,GAAU,CAChF,IAAIp3sB,GAAOjpC,EAAQx5B,IAAIs1yB,EAAYz7B,IAAOrqK,IAAYmmM,GAAYlzuB,GAAOh2C,EACzE,GAAIkpxB,GAAY,GAAKA,IAAal2xB,EAAKxG,QAAQowC,KAAM,CACnDqsvB,IAAc,EACd,SAGF,IAA4DE,GAAnDp8wB,EAAQx5B,IAAIs1yB,EAAYz7B,GAAM,GAAKrqK,IAAW,GAAoB/ilB,EACvEquF,GAAMr7F,EAAKxG,QAAQkvB,UAAUwtwB,IAE7BE,GAAc/6rB,GAAIruF,OAClB6yc,GAAY7/c,EAAKuzvB,WAFTl4pB,GAAI78F,OAGhB,GAAIqhd,IAAau2U,IAAeF,IAAaE,GAAcv2U,GAAUlG,UAAYw8U,GAAS,CACxF,IAAIp0U,GAAS3oa,GAASghtB,GAAM,GAAGu7B,SAAS57wB,EAAS8lc,GAAW78Z,GAAO,EAAG6yuB,EAAYz7B,IAAOrqK,GAAY,EAAGp2lB,IACpGood,IAAU1nZ,IACZjhB,GAASghtB,IAAO87B,GAChB98uB,GAASghtB,GAAM,GAAK+7B,GACpB/8uB,GAASghtB,GAAM,GAAKr4S,KAEpB3oa,GAASghtB,GAAM,IAAK,EACpB67B,IAAc,QAGhBA,IAAc,EAKlB,GAAIA,GAAa,CACf,IAAIV,GA4BR,YAA0Cn8uB,EAAUy8uB,EAAaN,EAAax7wB,EAAS/M,EAAQ+ilB,GAAWp2lB,IAExG,YAAgBsT,GAAK8ilB,IACnB,QAASxmmB,GAAI,EAAGA,GAAI0jB,GAAIqoxB,MAAM30yB,OAAQ4I,KAAK,CACzC,IAAIw4d,GAAS90c,GAAIqoxB,MAAM/ryB,IAAGhJ,IAAIw5B,EAAS/M,EAAQ+ilB,IAC3ChuI,GAAUwzU,EAAYl1yB,KAAK0he,IACtBpod,GAAQ0mW,UAAY1mW,GAAQ0mW,SAASpzV,GAAIqoxB,MAAM/ryB,IAAG40d,MAE7D,QAASi8S,GAAM,EAAGA,GAAMntvB,GAAImsC,SAASz4D,OAAQy5wB,IAAO,EAChDi8B,GAAOppxB,GAAImsC,SAASghtB,GAAM,GAAIntvB,GAAImsC,SAASghtB,IAAOrqK,GAAY,GAEpE,QAASxmmB,GAAI,EAAGA,GAAI6vD,EAASz4D,OAAQ4I,IAAK,GAA4B,GAAnB6vD,EAAS7vD,GAAI,IAC5D8syB,GAAOj9uB,EAAS7vD,GAAI,GAAIssyB,EAAYtsyB,IAAKwmmB,GAAY,GAEzD,OAAOwlM,EA1Cae,CAAiCl9uB,GAAUy8uB,EAAaD,GAAY,GAAI77wB,EACvC/M,EAAQ+ilB,GAAWp2lB,IAClEqiwB,GAAQw5B,GAAUD,GAAav1xB,EAAM,EAAGrG,IAC5Ci8xB,EAAW55B,GAAMs5B,MACjB,QAASh7B,GAAM,EAAGA,GAAMlhtB,GAASz4D,OAAQ25wB,IAAO,EAASlhtB,GAASkhtB,GAAM,GAAK,IAC3ElhtB,GAAS16C,OAAO47vB,GAAK,GACrBA,IAAO,GAET,QAASisB,GAAM,EAAGnqsB,GAAI,EAAGmqsB,GAAMvqB,GAAM5itB,SAASz4D,OAAQ4lyB,IAAO,EAAG,CAE9D,QADIgQ,GAASv6B,GAAM5itB,SAASmtuB,IACrBnqsB,GAAIhjC,GAASz4D,QAAUy4D,GAASgjC,IAAKm6sB,IAAUn6sB,IAAK,EAC3DhjC,GAAS16C,OAAO09E,GAAG,EAAG4/qB,GAAM5itB,SAASmtuB,IAAMvqB,GAAM5itB,SAASmtuB,GAAM,GAAIvqB,GAAM5itB,SAASmtuB,GAAM,KAI7F,OAAO,IAAI8O,GAAcO,GAAYA,EAASlhyB,KAAK8hyB,IAAQp9uB,IApRhDmyjB,CAAY3wnB,KAAKw+D,SAAUw8uB,GAAU77wB,EAAS/Z,EAAMgN,EAAQ+ilB,EAAWp2lB,IAEvEi8xB,GAAW,IAAIP,GAAcO,GAASlhyB,KAAK8hyB,KAAUn8tB,IAOlEg7tB,GAAcp6xB,UAAUmoC,IAAM,SAAcggU,EAAKmyb,GAC/C,OAAKA,EAAY50yB,OACb/F,MAAQy/E,GAAgBg7tB,GAAcz4uB,OAAOwmT,EAAKmyb,GAC/C36yB,KAAK67yB,SAASrzb,EAAKmyb,EAAa,GAFL36yB,MAKpCy6yB,GAAcp6xB,UAAUw7xB,SAAW,SAAmBrzb,EAAKmyb,EAAavoxB,GACpE,IAEEosC,GAFEyktB,EAASjjxB,KAEDqkyB,GAAa,EAC3B77a,EAAI5hX,QAAQ,SAAUq+d,GAAWu2U,IAC/B,IAAuCxyuB,GAAnC8yuB,GAAaN,GAAcppxB,EAC/B,GAAM42C,GAAQ+yuB,GAAiBpB,EAAa11U,GAAW62U,IAGvD,KADKt9uB,KAAYA,GAAWyktB,EAAOzktB,SAAS5vD,SACrCy1xB,GAAa7luB,GAASz4D,QAAUy4D,GAAS6luB,IAAcmX,IAAenX,IAAc,EACvF7luB,GAAS6luB,KAAemX,GACxBh9uB,GAAS6luB,GAAa,GAAK7luB,GAAS6luB,GAAa,GAAGwX,SAAS52U,GAAWj8Z,GAAO8yuB,GAAa,GAE5Ft9uB,GAAS16C,OAAOugxB,GAAY,EAAGmX,GAAaA,GAAcv2U,GAAUlG,SAAU67U,GAAU5xuB,GAAOi8Z,GAAW62U,GAAa,EAAG3B,KAC9H9V,IAAc,KAIhB,QADIqW,GAAQsB,GAAU3X,GAAa4X,GAAatB,GAAeA,GAAcvoxB,GACpEzjB,GAAI,EAAGA,GAAI+ryB,GAAM30yB,OAAQ4I,KAAY+ryB,GAAM/ryB,IAAG7G,KAAKU,MAAMggX,EAAKkyb,GAAM/ryB,MAAO+ryB,GAAM52xB,OAAOnV,KAAK,GAEtG,OAAO,IAAI8ryB,GAAcC,GAAM30yB,OAAS/F,KAAK06yB,MAAM/mwB,OAAO+mwB,IAAO5gyB,KAAK8hyB,IAAS57yB,KAAK06yB,MAC3Dl8uB,IAAYx+D,KAAKw+D,WAM5Ci8uB,GAAcp6xB,UAAUo+B,OAAS,SAAiBk8vB,GAChD,OAA0B,GAAtBA,EAAY50yB,QAAe/F,MAAQy/E,GAAgBz/E,KAChDA,KAAKk8yB,YAAYvB,EAAa,IAGvCF,GAAcp6xB,UAAU67xB,YAAc,SAAsBvB,EAAavoxB,GAEvE,QADIosC,EAAWx+D,KAAKw+D,SAAUk8uB,EAAQ16yB,KAAK06yB,MAClC/ryB,GAAI,EAAGA,GAAI6vD,EAASz4D,OAAQ4I,IAAK,EAAG,CAE3C,QADIq6D,QAAS,EAASZ,GAAO5J,EAAS7vD,IAAKyjB,EAAQq7G,GAAKjvE,EAAS7vD,GAAI,GAAKyjB,EACjEovE,GAAI,EAAGm1jB,QAAQ,EAASn1jB,GAAIm5sB,EAAY50yB,OAAQy7F,MAAWm1jB,GAAOgkJ,EAAYn5sB,MACjFm1jB,GAAKvulB,KAAOA,IAAQuulB,GAAKlphB,GAAKA,KAChCktqB,EAAYn5sB,IAAK,MACfx4B,KAAUA,GAAQ,KAAKvjE,KAAKkxpB,KAGlC,GAAK3tlB,GACL,CAAIxK,GAAYx+D,KAAKw+D,WAAYA,EAAWx+D,KAAKw+D,SAAS5vD,SAC1D,IAAIozH,GAAUxjE,EAAS7vD,GAAI,GAAGutyB,YAAYlzuB,GAAOZ,GAAO,GACpD45D,IAAWviD,GACbjhB,EAAS7vD,GAAI,GAAKqzH,IAElBxjE,EAAS16C,OAAOnV,GAAG,GACnBA,IAAK,IAGT,GAAI+ryB,EAAM30yB,OAAU,QAASy5wB,GAAM,EAAG28B,QAAU,EAAS38B,GAAMm7B,EAAY50yB,OAAQy5wB,KAAS,GAAI28B,GAASxB,EAAYn7B,IACnH,QAASmpB,GAAM,EAAGA,GAAM+R,EAAM30yB,OAAQ4iyB,KAAa+R,EAAM/R,IAAKvlU,GAAG+4U,GAAQ/pxB,KACnEsoxB,GAAS16yB,KAAK06yB,QAASA,EAAQ16yB,KAAK06yB,MAAM9ryB,SAC9C8ryB,EAAM52xB,OAAO6kxB,KAAO,IAGxB,OAAInquB,GAAYx+D,KAAKw+D,UAAYk8uB,GAAS16yB,KAAK06yB,MAAgB16yB,KACxD06yB,EAAM30yB,QAAUy4D,EAASz4D,OAAS,IAAI00yB,GAAcC,EAAOl8uB,GAAYihB,IAGhFg7tB,GAAcp6xB,UAAUurxB,SAAW,SAAmBx5wB,EAAQhN,GAC5D,GAAIplB,MAAQy/E,GAAS,OAAOz/E,KAC5B,GAAIolB,EAAKqpmB,OAAU,OAAOgsL,GAAch7tB,MAGxC,QADIhhB,EAAOi8uB,EACF/ryB,GAAI,EAAGA,GAAI3O,KAAKw+D,SAASz4D,OAAQ4I,IAAK,EAAK,GAAI3O,KAAKw+D,SAAS7vD,KAAMyjB,EAAQ,CAC9EpyB,KAAKw+D,SAAS7vD,KAAMyjB,IAAUqsC,EAAQz+D,KAAKw+D,SAAS7vD,GAAI,IAC5D,MAGF,QADIqe,GAAQoF,EAAS,EAAGkY,GAAMtd,GAAQ5H,EAAKxG,QAAQowC,KAC1CwwtB,GAAM,EAAGA,GAAMx/wB,KAAK06yB,MAAM30yB,OAAQy5wB,KAAO,CAChD,IAAIh3R,GAAMxof,KAAK06yB,MAAMl7B,IACrB,GAAIh3R,GAAIpgb,KAAO99B,IAAOk+c,GAAI/6W,GAAKzgH,IAAUw7d,GAAI1gf,gBAAgBwyyB,GAAa,CACxE,IAAIlyuB,GAAOl7D,KAAKsB,IAAIwe,GAAOw7d,GAAIpgb,MAAQp7C,GAAOygH,GAAKvgI,KAAKulC,IAAInI,GAAKk+c,GAAI/6W,IAAMzgH,GACvEo7C,GAAOqlE,KAAOitqB,IAAUA,EAAQ,KAAKj1yB,KAAK+if,GAAIzjb,KAAKqD,GAAMqlE,MAGjE,GAAIitqB,EAAO,CACT,IAAI0B,GAAW,IAAI3B,GAAcC,EAAM5gyB,KAAK8hyB,KAC5C,OAAOn9uB,EAAQ,IAAI49uB,GAAgB,CAACD,GAAU39uB,IAAU29uB,GAE1D,OAAO39uB,GAASghB,IAGlBg7tB,GAAcp6xB,UAAU+id,GAAK,SAAa/ja,GACxC,GAAIr/D,MAAQq/D,EAAS,OAAO,EAC5B,KAAMA,aAAiBo7uB,KACnBz6yB,KAAK06yB,MAAM30yB,QAAUs5D,EAAMq7uB,MAAM30yB,QACjC/F,KAAKw+D,SAASz4D,QAAUs5D,EAAMb,SAASz4D,OAAU,OAAO,EAC5D,QAAS4I,EAAI,EAAGA,EAAI3O,KAAK06yB,MAAM30yB,OAAQ4I,IACnC,IAAK3O,KAAK06yB,MAAM/ryB,GAAGy0d,GAAG/ja,EAAMq7uB,MAAM/ryB,IAAO,OAAO,EACpD,QAAS6wwB,EAAM,EAAGA,EAAMx/wB,KAAKw+D,SAASz4D,OAAQy5wB,GAAO,EACjD,GAAIx/wB,KAAKw+D,SAASghtB,IAAQngtB,EAAMb,SAASghtB,IACvCx/wB,KAAKw+D,SAASghtB,EAAM,IAAMngtB,EAAMb,SAASghtB,EAAM,KAC9Cx/wB,KAAKw+D,SAASghtB,EAAM,GAAGp8S,GAAG/ja,EAAMb,SAASghtB,EAAM,IAAO,OAAO,EACpE,OAAO,GAGTi7B,GAAcp6xB,UAAU+qxB,OAAS,SAAiBhmxB,GAChD,OAAOk3xB,GAAct8yB,KAAKu8yB,YAAYn3xB,KAGxCq1xB,GAAcp6xB,UAAUk8xB,YAAc,SAAsBn3xB,GAC1D,GAAIplB,MAAQy/E,GAAS,OAAO1gD,GAC5B,GAAI3Z,EAAKo3vB,gBAAkBx8wB,KAAK06yB,MAAM32vB,KAAKu2vB,GAAW50F,IAAO,OAAO1ltB,KAAK06yB,MAEzE,QADInoyB,EAAS,GACJ5D,EAAI,EAAGA,EAAI3O,KAAK06yB,MAAM30yB,OAAQ4I,IAC/B3O,KAAK06yB,MAAM/ryB,GAAG7G,gBAAgBwyyB,IAChC/nyB,EAAO9M,KAAKzF,KAAK06yB,MAAM/ryB,IAE7B,OAAO4D,GAYT,IAAIktE,GAAQ,IAAIg7tB,GAIhBA,GAAch7tB,MAAQA,GAEtBg7tB,GAAc6B,cAAgBA,GAK9B,IAAID,GAAkB,SAAyBxgK,GAC7C77oB,KAAK67oB,QAAUA,GAgIjB,YAAmB2gK,EAAOpqxB,GACxB,IAAKA,IAAWoqxB,EAAMz2yB,OAAU,OAAOy2yB,EAEvC,QADIjqyB,EAAS,GACJ5D,EAAI,EAAGA,EAAI6tyB,EAAMz2yB,OAAQ4I,IAAK,CACrC,IAAIgopB,EAAO6lJ,EAAM7tyB,GACjB4D,EAAO9M,KAAK,IAAI20yB,GAAWzjJ,EAAKvulB,KAAOh2C,EAAQukoB,EAAKlphB,GAAKr7G,EAAQukoB,EAAK7upB,OAExE,OAAOyK,EAoBT,YAA0BiqyB,EAAOp3xB,EAAMgN,GACrC,GAAIhN,EAAKqpmB,OAAU,OAAO,KAE1B,QADInklB,EAAMlY,EAAShN,EAAK25c,SAAU/1Z,EAAQ,KACjCr6D,GAAI,EAAGgopB,QAAQ,EAAShopB,GAAI6tyB,EAAMz2yB,OAAQ4I,MAC5CgopB,GAAO6lJ,EAAM7tyB,MAAOgopB,GAAKvulB,KAAOh2C,GAAUukoB,GAAKlphB,GAAKnjG,KAC5D0+B,IAAUA,EAAQ,KAAKvjE,KAAKkxpB,IACvB6lJ,EAAM7tyB,IAAK,MAGf,OAAOq6D,EAGT,YAAsB/+B,GAEpB,QADI13B,EAAS,GACJ5D,EAAI,EAAGA,EAAIs7B,EAAMlkC,OAAQ4I,IACd,MAAZs7B,EAAMt7B,IAAc4D,EAAO9M,KAAKwkC,EAAMt7B,IAC9C,OAAO4D,EAQT,YAAmBiqyB,EAAOp3xB,EAAMgN,EAAQrT,GACtC,IAAIy/C,EAAW,GAAIi+uB,IAAW,EAC9Br3xB,EAAKxe,QAAQ,SAAUq+d,GAAWy3U,IAChC,IAAI1zuB,GAAQ+yuB,GAAiBS,EAAOv3U,GAAWy3U,GAAatqxB,GAC5D,GAAI42C,GAAO,CACTyzuB,IAAW,EACX,IAAI/I,GAAUkH,GAAU5xuB,GAAOi8Z,GAAW7yc,EAASsqxB,GAAa,EAAG39xB,GAC/D20xB,IAAWj0tB,IACXjhB,EAAS/4D,KAAKi3yB,GAAYA,GAAaz3U,GAAUlG,SAAU20U,OAInE,QADItI,GAAS4Q,GAAUS,GAAWR,GAAaO,GAASA,GAAQpqxB,GAAQtY,KAAK8hyB,IACpEjtyB,GAAI,EAAGA,GAAIy8xB,GAAOrlyB,OAAQ4I,KAAYy8xB,GAAOz8xB,IAAG7G,KAAKU,MAAM4c,EAAMgmxB,GAAOz8xB,OAC3EoQ,EAAQ0mW,UAAY1mW,EAAQ0mW,SAAS2lb,GAAOz8xB,IAAG40d,MACnD6nU,GAAOtnxB,OAAOnV,KAAK,IAErB,OAAOy8xB,GAAOrlyB,QAAUy4D,EAASz4D,OAAS,IAAI00yB,GAAcrP,GAAQ5suB,GAAYihB,GAOlF,YAAettD,EAAGD,GAChB,OAAOC,EAAEi2C,KAAOl2C,EAAEk2C,MAAQj2C,EAAEs7G,GAAKv7G,EAAEu7G,GAQrC,YAAuB+uqB,GAErB,QADIG,EAAUH,EACL7tyB,EAAI,EAAGA,EAAIguyB,EAAQ52yB,OAAS,EAAG4I,IAAK,CAC3C,IAAIgopB,EAAOgmJ,EAAQhuyB,GACnB,GAAIgopB,EAAKvulB,MAAQuulB,EAAKlphB,GAAM,QAASjsC,EAAI7yF,EAAI,EAAG6yF,EAAIm7sB,EAAQ52yB,OAAQy7F,IAAK,CACvE,IAAIn2F,GAAOsxyB,EAAQn7sB,GACnB,GAAIn2F,GAAK+8D,MAAQuulB,EAAKvulB,KAAtB,CAUM/8D,GAAK+8D,KAAOuulB,EAAKlphB,KACfkvqB,GAAWH,IAASG,EAAUH,EAAM5tyB,SAGxC+tyB,EAAQhuyB,GAAKgopB,EAAK5xlB,KAAK4xlB,EAAKvulB,KAAM/8D,GAAK+8D,MACvCw0uB,GAAYD,EAASn7sB,EAAGm1jB,EAAK5xlB,KAAK15D,GAAK+8D,KAAMuulB,EAAKlphB,MAEpD,MAhBIpiI,GAAKoiI,IAAMkphB,EAAKlphB,KACdkvqB,GAAWH,IAASG,EAAUH,EAAM5tyB,SAGxC+tyB,EAAQn7sB,GAAKn2F,GAAK05D,KAAK15D,GAAK+8D,KAAMuulB,EAAKlphB,IACvCmvqB,GAAYD,EAASn7sB,EAAI,EAAGn2F,GAAK05D,KAAK4xlB,EAAKlphB,GAAIpiI,GAAKoiI,OAe5D,OAAOkvqB,EAGT,YAAqB1ywB,EAAOt7B,EAAGs8xB,GAC7B,KAAOt8xB,EAAIs7B,EAAMlkC,QAAU61yB,GAAM3Q,EAAMhhwB,EAAMt7B,IAAM,GAAKA,IACxDs7B,EAAMnmB,OAAOnV,EAAG,EAAGs8xB,GAKrB,YAAyB5oxB,GACvB,IAAI2mD,EAAQ,GACZ3mD,SAAKwuxB,SAAS,cAAe,SAAUjryB,GACrC,IAAI2M,EAAS3M,EAAEyc,EAAKnY,OAChBqI,GAAUA,GAAUktE,IAASzW,EAAMvjE,KAAK8M,KAE1C8P,EAAKqtxB,eACL1muB,EAAMvjE,KAAKg1yB,GAAcz4uB,OAAO3/C,EAAKnY,MAAMs+W,IAAK,CAACnmW,EAAKqtxB,cAAczE,QACjEoR,GAAgBj0uB,KAAKY,GA7P9BqzuB,GAAgBh8xB,UAAU1a,IAAM,SAAcw5B,EAASqpV,GACrD,IAAIq0b,EAAc78yB,KAAK67oB,QAAQl2oB,IAC7B,SAAUy3tB,GAAU,OAAOA,EAAOz3tB,IAAIw5B,EAASqpV,EAAK2xb,MAEtD,OAAOkC,GAAgBj0uB,KAAKy0uB,IAG9BR,GAAgBh8xB,UAAUurxB,SAAW,SAAmBx5wB,EAAQqsC,GAC9D,GAAIA,EAAMgwjB,OAAU,OAAOgsL,GAAch7tB,MAEzC,QADIzW,EAAQ,GACHr6D,EAAI,EAAGA,EAAI3O,KAAK67oB,QAAQ91oB,OAAQ4I,IAAK,CAC5C,IAAI4D,GAASvS,KAAK67oB,QAAQltoB,GAAGi9xB,SAASx5wB,EAAQqsC,GAC1ClsD,IAAUktE,KACVltE,cAAkB8pyB,GAAmBrzuB,EAAQA,EAAMr1B,OAAOphC,GAAOspoB,SAC9D7ykB,EAAMvjE,KAAK8M,KAEpB,OAAO8pyB,GAAgBj0uB,KAAKY,IAG9BqzuB,GAAgBh8xB,UAAU+id,GAAK,SAAa/ja,GAC1C,KAAMA,aAAiBg9uB,KACnBh9uB,EAAMw8kB,QAAQ91oB,QAAU/F,KAAK67oB,QAAQ91oB,OAAU,OAAO,EAC1D,QAAS4I,EAAI,EAAGA,EAAI3O,KAAK67oB,QAAQ91oB,OAAQ4I,IACrC,IAAK3O,KAAK67oB,QAAQltoB,GAAGy0d,GAAG/ja,EAAMw8kB,QAAQltoB,IAAO,OAAO,EACxD,OAAO,GAGT0tyB,GAAgBh8xB,UAAU+qxB,OAAS,SAAiBhmxB,GAElD,QADI7S,EAAQunK,GAAS,EACZnrK,EAAI,EAAGA,EAAI3O,KAAK67oB,QAAQ91oB,OAAQ4I,IAAK,CAC5C,IAAIy8xB,GAASpryB,KAAK67oB,QAAQltoB,GAAG4tyB,YAAYn3xB,GACzC,GAAKgmxB,GAAOrlyB,OACZ,GAAKwM,EAEE,CACDunK,IACFvnK,EAASA,EAAO3D,QAChBkrK,GAAS,GAEX,QAASt4E,GAAI,EAAGA,GAAI4psB,GAAOrlyB,OAAQy7F,KAAOjvF,EAAO9M,KAAK2lyB,GAAO5psB,UAN7DjvF,EAAS64xB,GASb,OAAO74xB,EAAS+pyB,GAAcxioB,EAASvnK,EAASA,EAAOuH,KAAK8hyB,KAAU78wB,IAMxEs9wB,GAAgBj0uB,KAAO,SAAeyzkB,GACpC,OAAQA,EAAQ91oB,aACT,EAAG,OAAO05E,QACV,EAAG,OAAOo8jB,EAAQ,WACd,OAAO,IAAIwgK,GAAgBxgK,KA+MxC,IC3qJIj+K,GAAeC,GD2qJf8U,GAAa,SAAoBkxQ,EAAOzgmB,GAC1CpjJ,KAAK88yB,OAAS15pB,EAGdpjJ,KAAKkK,MAAQk5I,EAAMl5I,MAEnBlK,KAAK+8yB,cAAgB35pB,EAAMqsV,SAAW,GACtCzve,KAAK+8yB,cAAcn2yB,QAAQo2yB,IAE3Bh9yB,KAAKouO,SAAWpuO,KAAKouO,SAASvoN,KAAK7lB,MAEnCA,KAAK8wrB,MAAQ,KACb9wrB,KAAK6yU,SAAU,EAEf7yU,KAAK0tyB,YAAc,KAKnB1tyB,KAAKqtO,IAAOw2gB,GAASA,EAAMjxQ,OAAUjxd,SAAS+O,cAAc,OACxDmztB,IACEA,EAAMhpsB,YAAegpsB,EAAMhpsB,YAAY76C,KAAKqtO,KACvCw2gB,EAAMlwtB,MAASkwtB,EAAM7jvB,KAAKqtO,KAC1Bw2gB,EAAMjxQ,QAAS5ye,KAAKi9yB,SAAU,IAKzCj9yB,KAAK6ye,SAAWqqU,GAAYl9yB,MAC5BA,KAAK24yB,WAAa,KAClB34yB,KAAK0vyB,cAAgB,KACrByN,GAAoBn9yB,MACpBA,KAAKgqyB,UAAYoT,EAAep9yB,MAChCA,KAAKslyB,QAAU+X,GAAYr9yB,KAAKkK,MAAMs+W,IAAK80b,GAAet9yB,MAAOu9yB,GAAgBv9yB,MAAOA,KAAKqtO,IAAKrtO,MAElGA,KAAK2wyB,qBAAuB,KAK5B3wyB,KAAKytH,SAAW,KAh7ClB,YAAmBprG,GACjBA,EAAKsuZ,UAAW,EAChBtuZ,EAAK4jb,UAAY,KACjB5jb,EAAKyzxB,YAAc,KACnBzzxB,EAAK0zxB,gBAAkB,EACvB1zxB,EAAK00xB,UAAY,CAACprpB,KAAM,EAAGhiJ,EAAG,EAAGmqD,EAAG,EAAGhsD,KAAM,IAC7Cua,EAAKizxB,oBAAsB,KAC3BjzxB,EAAKkzxB,kBAAoB,EAEzBlzxB,EAAKq0xB,aAAe,EACpBr0xB,EAAKs0xB,4BAA8B,KACnCt0xB,EAAKm7xB,kBAAoB,EAEzBn7xB,EAAK60hB,WAAY,EACjB70hB,EAAKg2xB,iBAAmB,KACxBh2xB,EAAK2qxB,iBAAmB,GACxB3qxB,EAAKw1xB,oBAAqB,IAE1Bx1xB,EAAKktxB,YAAc,IAAIsE,GAAYxxxB,EAAM,SAAU+lD,EAAMqlE,EAAIonqB,GAAUx2V,IAAS,OAtwBlF,YAAuBh8b,EAAM+lD,EAAMqlE,EAAIonqB,EAAUO,GAC/C,GAAIhtuB,EAAO,EAAX,CACE,IAAI/jC,GAAShiB,EAAKkzxB,kBAAoBx8xB,KAAKC,MAAQ,GAAKqJ,EAAKizxB,oBAAsB,KAC/EV,GAAS4D,GAAiBn2xB,EAAMgiB,IACpC,GAAIuwwB,KAAWvyxB,EAAKnY,MAAM41D,UAAUsja,GAAGwxU,IAAS,CAC9C,IAAI6I,GAAOp7xB,EAAKnY,MAAM4nL,GAAG+wS,aAAa+xU,IACxB,WAAVvwwB,GAAuBo5wB,GAAKrpB,QAAQ,WAAW,GAChC,OAAV/vvB,IAAmBo5wB,GAAK91U,iBACjCtld,EAAK+rN,SAASqvkB,SAPlB,CAYA,IAAIziC,GAAU34vB,EAAKnY,MAAMs+W,IAAI5gW,QAAQwgD,GACjC65T,GAAS+4Y,GAAQqB,YAAY5uoB,GACjCrlE,EAAO4ysB,GAAQhvtB,OAAOi2U,GAAS,GAC/Bx0P,EAAKprH,EAAKnY,MAAMs+W,IAAI5gW,QAAQ6lH,GAAI3vF,MAAMmkV,GAAS,GAE/C,IAAI2gG,GAAMvgd,EAAKnY,MAAM41D,UACjBxxC,GAtFN,YAAsBjM,EAAMq7xB,EAAOC,GACjC,IAAIl9rB,EAAMp+F,EAAKijxB,QAAQgD,WAAWoV,EAAOC,GACrCthc,EAAS57P,EAAIr7F,KACbmjxB,GAAa9nrB,EAAI8nrB,WACjBC,GAAW/nrB,EAAI+nrB,SACfpguB,GAAOq4C,EAAIr4C,KACXqlE,GAAKhtB,EAAIgtB,GAETi2pB,GAASrhxB,EAAKyvS,KAAKs9K,eAAgB7oe,GAAO,KAAM0H,GAASy1xB,GAAOwF,WAQpE,GAPIj7xB,IAAUoU,EAAKgrN,IAAIl/N,SAA4B,GAAnBF,GAAOi2W,SAAgBj2W,GAASA,GAAOw/I,cACrElnJ,GAAO,CAAC,CAAC6e,KAAMnX,GAAQmkB,OAAQsxwB,GAAO7wL,eACjC4wL,GAAmBC,KACpBn9xB,GAAKd,KAAK,CAAC2f,KAAMs+wB,GAAOr0T,UAAWj9c,OAAQsxwB,GAAOuF,eAIpD12xB,GAAOyntB,QAA+B,IAArB33sB,EAAKyzxB,YACxB,QAASx6wB,GAAMktwB,GAAUltwB,GAAMitwB,GAAYjtwB,KAAO,CAChD,IAAIlW,GAAOi3V,EAAO4iO,WAAW3jjB,GAAM,GAAIothB,GAAOtjiB,GAAKo+wB,WACnD,GAAqB,MAAjBp+wB,GAAKq1C,WAAqBiuf,GAAM,CAAE8/O,GAAWltwB,GAAK,MACtD,IAAKothB,IAAQA,GAAK15f,KAAQ,MAG9B,IAAIuovB,GAAWl1xB,EAAKnY,MAAMs+W,IACtB55P,GAASvsG,EAAKwuxB,SAAS,cAAgBp8B,cAAqBpyvB,EAAKnY,MAAM4iO,QACvEw0P,GAAQi2U,GAAS3vxB,QAAQwgD,IAEzBw6Z,GAAM,KAAMp6G,GAAM55P,GAAOtgG,MAAM+tV,EAAQ,CACzC8la,QAAS7gT,GAAMjlH,OACfwpa,SAAUvkT,GAAMjlH,OAAOwha,eAAev8S,GAAM19c,SAC5CykwB,SAAS,EACTjgtB,KAAMmguB,GACN96pB,GAAI+6pB,GACJ95T,oBAAoBpN,GAAMjlH,OAAOv0W,KAAKy7d,KAAKv3c,MAAO,OAClD4xxB,iBAAiB,EACjB93B,cAAev/wB,GACf4gxB,aAAcA,GACd/jtB,QAASk+Z,KAEX,GAAI/6d,IAAuB,MAAfA,GAAK,GAAGsiF,IAAa,CAC/B,IAAIg1tB,GAAWt3yB,GAAK,GAAGsiF,IAAKu0Q,GAAO72V,GAAK,IAAMA,GAAK,GAAGsiF,IAC1C,MAARu0Q,KAAgBA,GAAOygd,IAC3Bj7U,GAAM,CAAC30d,OAAQ4vyB,GAAWz1uB,GAAMg1R,KAAMA,GAAOh1R,IAE/C,MAAO,CAACogT,IAAKA,GAAKo6G,IAAKA,GAAKx6Z,KAAMA,GAAMqlE,GAAIA,IA0ChCqwqB,CAAaz7xB,EAAM+lD,EAAMqlE,GAGrC,GAAIl7H,GAAOyntB,QAAU33sB,EAAKqtxB,eAAiBphxB,GAAMs0c,KAAOt0c,GAAMs0c,IAAI30d,QAAUoU,EAAKqtxB,cAAczE,KAAK7iuB,KAAM,CACxG,IAAIt9D,GAAOuX,EAAKqtxB,cAAczE,KAAKnjyB,KAAKwlO,MAAMw9I,YAC1C97T,GAAOlkD,IAAQA,GAAK47wB,UAAY57wB,GAAK47wB,UAAU3gxB,OAAS,EAC5DuoB,GAAMs0c,IAAM,CAAC30d,OAAQqgB,GAAMs0c,IAAI30d,OAAS+gD,GAAMouS,KAAM9uU,GAAMs0c,IAAI30d,OAAS+gD,IAGzE,IACI+uvB,GAAcC,GADdx1b,GAAMnmW,EAAKnY,MAAMs+W,IAAK1xS,GAAU0xS,GAAI55W,MAAM0f,GAAM85C,KAAM95C,GAAMm/G,IAGvC,IAArBprH,EAAKyzxB,aAAqB/8xB,KAAKC,MAAQ,IAAMqJ,EAAK0zxB,iBACpDgI,GAAe17xB,EAAKnY,MAAM41D,UAAU2tE,GACpCuwqB,GAAgB,QAEhBD,GAAe17xB,EAAKnY,MAAM41D,UAAUsI,KACpC41uB,GAAgB,SAElB37xB,EAAKyzxB,YAAc,KAEnB,IAAI/tuB,GA+MN,YAAkB51C,EAAGD,EAAG22D,EAAKk1tB,EAAcC,GACzC,IAAIhxxB,GAAQmF,EAAEolvB,cAAcrlvB,EAAG22D,GAC/B,GAAa,MAAT77D,GAAiB,OAAO,KAC5B,IAAIyzF,GAAMtuF,EAAE0lvB,YAAY3lvB,EAAG22D,EAAM12D,EAAE68B,KAAM65B,EAAM32D,EAAE88B,MAC7CynQ,GAAOh2M,GAAItuF,EACXwkS,GAAOl2M,GAAIvuF,EAgBf,MAfqB,OAAjB8rxB,IAEFD,GAAgBtnf,GADHvpT,KAAKsB,IAAI,EAAGwe,GAAQ9f,KAAKulC,IAAIgkR,GAAME,KAChB3pS,IAE9BypS,GAAOzpS,IAASmF,EAAE68B,KAAO98B,EAAE88B,MAG7B2nQ,IADA3pS,IADW+wxB,GAAgB/wxB,IAAS+wxB,GAAgBtnf,GAAOzpS,GAAQ+wxB,EAAe,IAElEpnf,GAAOF,IACvBA,GAAOzpS,IACE2pS,GAAO3pS,KAGhBypS,IADAzpS,IADa+wxB,GAAgB/wxB,IAAS+wxB,GAAgBpnf,GAAO3pS,GAAQ+wxB,EAAe,IAEpEtnf,GAAOE,IACvBA,GAAO3pS,IAEF,CAACA,MAAOA,GAAOypS,KAAMA,GAAME,KAAMA,IApO3Bsnf,CAASnnuB,GAAQl4D,QAAS0P,GAAMk6V,IAAI5pW,QAAS0P,GAAM85C,KAAM21uB,GAAcC,IACpF,IAAKj2uB,GACH,MAAI8suB,GAAYjyU,cAAeb,KAAkBa,GAAInjZ,OAASmjZ,GAAIe,MAAM+4S,WAAW95S,GAAImB,WAClF1hd,EAAK60hB,WAAe5ohB,GAAMs0c,KAAOt0c,GAAMs0c,IAAI30d,QAAUqgB,GAAMs0c,IAAIxlI,KACf3vN,KACzCl7H,GAAO+mtB,KAAOj3sB,EAAKq0xB,aAAe39xB,KAAKC,MAAQ,KAAOzG,GAAOmmtB,UAC9D08E,EAAWrxvB,KAAK,SAAUj2C,IAAK,MAAqB,OAAdA,GAAE2sD,UAAmC,KAAd3sD,GAAE2sD,YAC/Dp4C,EAAKwuxB,SAAS,gBAAiB,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMs6W,GAAS,GAAI,YAEnF,YADAt6W,EAAKq0xB,aAAe,GAGpB,GAAIpoxB,GAAMs0c,IAAK,CACb,IAAIs7U,GAAQC,GAAiB97xB,EAAMA,EAAKnY,MAAMs+W,IAAKl6V,GAAMs0c,KACrDs7U,KAAUA,GAAM96U,GAAG/gd,EAAKnY,MAAM41D,YAAcz9C,EAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAG+wS,aAAaq7U,KAE3F,OAXAn2uB,GAAS,CAAC/6C,MAAO41c,GAAIx6Z,KAAMquP,KAAMmsK,GAAIn1V,GAAIkpL,KAAMisK,GAAIn1V,IAcvDprH,EAAK43xB,iBAID53xB,EAAKnY,MAAM41D,UAAUsI,KAAO/lD,EAAKnY,MAAM41D,UAAU2tE,IACjD1lE,GAAO/6C,OAAS+6C,GAAO4uP,MACvBt0S,EAAKnY,MAAM41D,qBAAqBiia,KAC9Bh6Z,GAAO/6C,MAAQ3K,EAAKnY,MAAM41D,UAAUsI,MAAQL,GAAO/6C,OAAS3K,EAAKnY,MAAM41D,UAAUsI,KAAO,EAC1FL,GAAO/6C,MAAQ3K,EAAKnY,MAAM41D,UAAUsI,KAC3BL,GAAO0uP,KAAOp0S,EAAKnY,MAAM41D,UAAU2tE,IAAM1lE,GAAO0uP,MAAQp0S,EAAKnY,MAAM41D,UAAU2tE,GAAK,IAC3F1lE,GAAO4uP,MAASt0S,EAAKnY,MAAM41D,UAAU2tE,GAAK1lE,GAAO0uP,KACjD1uP,GAAO0uP,KAAOp0S,EAAKnY,MAAM41D,UAAU2tE,KAOnCl7H,GAAOkvrB,IAAMlvrB,GAAOkwxB,YAAc,IAAM16tB,GAAO4uP,MAAQ5uP,GAAO/6C,MAAQ,GACtE+6C,GAAO0uP,MAAQ1uP,GAAO/6C,OAAS+6C,GAAO/6C,MAAQsB,GAAM85C,MACmC,SAAvF95C,GAAMk6V,IAAI0vZ,YAAYnwsB,GAAO/6C,MAAQsB,GAAM85C,KAAO,EAAGL,GAAO/6C,MAAQsB,GAAM85C,KAAO,KACnFL,GAAO/6C,QACP+6C,GAAO0uP,OACP1uP,GAAO4uP,QAGT,IAGIynf,GAHA98U,GAAQhzc,GAAMk6V,IAAIkyZ,eAAe3ysB,GAAO/6C,MAAQsB,GAAM85C,MACtDm5Z,GAAMjzc,GAAMk6V,IAAIkyZ,eAAe3ysB,GAAO4uP,KAAOroS,GAAM85C,MACnDi2uB,GAAe/8U,GAAMo7S,WAAWn7S,KAAQD,GAAMjlH,OAAOmga,cAIzD,IAAMjqwB,GAAO+mtB,KAAOj3sB,EAAKq0xB,aAAe39xB,KAAKC,MAAQ,OAC7CqlyB,IAAgBjJ,EAAWrxvB,KAAK,SAAUj2C,IAAK,MAAqB,OAAdA,GAAE2sD,UAAmC,KAAd3sD,GAAE2sD,cAChF4jvB,IAAgB/8U,GAAMz4Y,IAAMv6D,GAAMk6V,IAAI5pW,QAAQowC,OAC9CovvB,GAAUz9U,YAAmBryc,GAAMk6V,IAAI5gW,QAAQ05c,GAAMz4Y,IAAM,GAAI,GAAG,KACnEu1tB,GAAQhhd,MAAQmkI,GAAI14Y,MACtBxmE,EAAKwuxB,SAAS,gBAAiB,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMs6W,GAAS,GAAI,YAC5Et6W,EAAKq0xB,aAAe,OAItB,GAAIr0xB,EAAKnY,MAAM41D,UAAU7xD,OAAS85D,GAAO/6C,OA4G3C,YAAuBu6a,EAAKv6a,EAAOsd,EAAKg0wB,EAAWC,GACjD,IAAKD,EAAUjic,OAAOooH,aAElBn6b,EAAMtd,GAASuxxB,EAAQ11tB,IAAMy1tB,EAAUz1tB,KAEvC21tB,GAAsBF,GAAW,GAAM,GAASC,EAAQ11tB,IACxD,OAAO,EAEX,IAAIsyrB,GAAS5zU,EAAI3/a,QAAQoF,GAEzB,GAAImuvB,GAAON,aAAeM,GAAO9+Z,OAAOz9V,QAAQowC,OAASmstB,GAAO9+Z,OAAOooH,YACnE,OAAO,EACX,IAAIg6U,GAAQl3W,EAAI3/a,QAAQ42xB,GAAsBrjC,IAAQ,GAAM,IAE5D,SAAKsjC,GAAMpic,OAAOooH,aAAeg6U,GAAM51tB,IAAMv+C,GACzCk0wB,GAAsBC,IAAO,GAAM,GAASn0wB,IAIzCg0wB,EAAUjic,OAAOz9V,QAAQ45vB,IAAI8lC,EAAUzjC,cAAcz3S,GAAGq7U,GAAMpic,OAAOz9V,SA9HxE8/xB,CAAcl2b,GAAKzgT,GAAO/6C,MAAO+6C,GAAO0uP,KAAM6qK,GAAOC,KACrDl/c,EAAKwuxB,SAAS,gBAAiB,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMs6W,GAAS,EAAG,gBACvEpqX,GAAOmmtB,SAAWnmtB,GAAOyntB,QAAU33sB,EAAKktxB,YAAYiF,+BAH1D,CAUIjiyB,GAAOyntB,QAAUzntB,GAAOmmtB,SAAW3wpB,GAAO42uB,KAAO52uB,GAAOK,OACxD/lD,EAAKm7xB,kBAAoBzkyB,KAAKC,OAU9BzG,GAAOmmtB,UAAY2lF,IAAgB/8U,GAAMt0c,SAAWu0c,GAAIv0c,SAA+B,GAApBu0c,GAAIs5S,cAAqBv5S,GAAM9pY,OAAS+pY,GAAI/pY,OAC/GlpE,GAAMs0c,KAAOt0c,GAAMs0c,IAAI30d,QAAUqgB,GAAMs0c,IAAIxlI,MAAQ9uU,GAAMs0c,IAAIxlI,MAAQr1R,GAAO0uP,OAC9E1uP,GAAO4uP,MAAQ,EACf4qK,GAAMjzc,GAAMk6V,IAAIkyZ,eAAe3ysB,GAAO4uP,KAAOroS,GAAM85C,MACnDl2D,WAAW,WACTmQ,EAAKwuxB,SAAS,gBAAiB,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMs6W,GAAS,GAAI,aACzE,KAGL,IAEI7qM,GAAI0hmB,GAAaorB,GAAYC,GAF7BC,GAAS/2uB,GAAO/6C,MAAO+xxB,GAAOh3uB,GAAO0uP,KAGzC,GAAI4nf,GACF,GAAI/8U,GAAMz4Y,KAAO04Y,GAAI14Y,IAGft2E,GAAOkvrB,IAAMlvrB,GAAOkwxB,YAAc,IAA4B,GAAtBnhU,GAAMu5S,eAChDx4vB,EAAKktxB,YAAYiF,2BACjBtiyB,WAAW,WAAc,OAAOs/xB,GAAenvxB,IAAU,KAE3DyvK,GAAKzvK,EAAKnY,MAAM4nL,GAAG3yK,OAAO2/xB,GAAQC,IAClCvrB,GAAchra,GAAI5gW,QAAQmgD,GAAO/6C,OAAOmvvB,YAAY3zZ,GAAI5gW,QAAQmgD,GAAO0uP,eAEvE1uP,GAAO0uP,MAAQ1uP,GAAO4uP,OAASkof,GAASr2b,GAAI5gW,QAAQmgD,GAAO/6C,UAC1D4xxB,GA0CP,YAAsBz1C,EAAKlghB,GAGzB,QAD2CnhP,GAAMyge,GAAM7hX,GADnDs4rB,EAAW71C,EAAIp3c,WAAWpkF,MAAOsxkB,EAAYh2jB,EAAK8oE,WAAWpkF,MAC7D0wO,EAAQ2gW,EAAUh9qB,GAAUi9qB,EACvBtwyB,GAAI,EAAGA,GAAIswyB,EAAUl5yB,OAAQ4I,KAAO0vc,EAAQ4gW,EAAUtwyB,IAAGirwB,cAAcv7T,GAChF,QAASmhU,GAAM,EAAGA,GAAMw/B,EAASj5yB,OAAQy5wB,KAASx9oB,GAAUg9qB,EAASx/B,IAAK5F,cAAc53oB,IACxF,GAAoB,GAAhBq8U,EAAMt4c,QAAiC,GAAlBi8H,GAAQj8H,OAC/Bwie,GAAOlqB,EAAM,GACbv2c,GAAO,MACP4+G,GAAS,SAAUthG,IAAQ,OAAOA,GAAKmjd,KAAKA,GAAKixS,SAASp0vB,GAAKuoN,iBACtC,GAAhB0wO,EAAMt4c,QAAiC,GAAlBi8H,GAAQj8H,OAKtC,OAAO,KAJPwie,GAAOvmW,GAAQ,GACfl6H,GAAO,SACP4+G,GAAS,SAAUthG,IAAQ,OAAOA,GAAKmjd,KAAKA,GAAKqxS,cAAcx0vB,GAAKuoN,SAKtE,QADI+xL,GAAU,GACLggX,GAAM,EAAGA,GAAMz2hB,EAAKm1O,WAAYshT,KAAShgX,GAAQj6Z,KAAKihH,GAAOuiI,EAAKxqL,MAAMihtB,MACjF,GAAIl9S,OAAc9iE,IAAS0jE,GAAG+lS,GAAQ,MAAO,CAAC5gS,KAAMA,GAAMzge,KAAMA,IA5D9Co3yB,CAAa59U,GAAMjlH,OAAOz9V,QAAQ45vB,IAAIl3S,GAAMu5S,aAAct5S,GAAIs5S,cACjDgkC,GAAOxic,OAAOz9V,QAAQ45vB,IAAIqmC,GAAOhkC,aAAc9ysB,GAAO0uP,KAAOoof,GAAO7xxB,WAE/F8kK,GAAKzvK,EAAKnY,MAAM4nL,GACO,OAAnB8snB,GAAW92yB,KAAiBgqL,GAAG48lB,QAAQowB,GAAQC,GAAMH,GAAWr2U,MAC7Dz2S,GAAGg9lB,WAAWgwB,GAAQC,GAAMH,GAAWr2U,cACrCjH,GAAMjlH,OAAO59S,MAAM6ia,GAAM19c,SAAS0zvB,QAAUh2S,GAAM19c,SAAW29c,GAAI39c,SAAW29c,GAAI85S,WAAa,EAAI,GAAI,CAE9G,IAAI2H,GAAS1hT,GAAMjlH,OAAO67Z,YAAY52S,GAAMu5S,aAAct5S,GAAIs5S,cAC9D,GAAIx4vB,EAAKwuxB,SAAS,kBAAmB,SAAUjryB,IAAK,OAAOA,GAAEyc,EAAMy8xB,GAAQC,GAAM/7B,MAAe,OAChGlxlB,GAAKzvK,EAAKnY,MAAM4nL,GAAG42S,WAAWs6S,GAAQ87B,GAAQC,IAMlD,GAFKjtnB,KACDA,GAAKzvK,EAAKnY,MAAM4nL,GAAGvmK,QAAQuzxB,GAAQC,GAAMzwxB,GAAMk6V,IAAI55W,MAAMm5D,GAAO/6C,MAAQsB,GAAM85C,KAAML,GAAO4uP,KAAOroS,GAAM85C,QACxG95C,GAAMs0c,IAAK,CACb,IAAIu8U,GAAQhB,GAAiB97xB,EAAMyvK,GAAG02L,IAAKl6V,GAAMs0c,KAM7Cu8U,MAAW5syB,GAAOyntB,QAAUzntB,GAAOmmtB,SAAWr2sB,EAAK60hB,WAAaioQ,GAAM1/tB,QAC5D1X,GAAO/6C,OAAS+6C,GAAO4uP,MAAQt0S,EAAKm7xB,kBAAoBzkyB,KAAKC,MAAQ,OACrEmmyB,GAAM/hd,MAAQ0hd,IAAUK,GAAM/hd,MAAQtrK,GAAG3yJ,QAAQx5B,IAAIo5yB,IAAQ,IAC9DxsyB,GAAOkvrB,IAAM09G,GAAM1/tB,OAAS0/tB,GAAM/hd,MAAQ0hd,KACnDhtnB,GAAG+wS,aAAas8U,IAElB3rB,IAAe1hmB,GAAG+gmB,YAAYW,IAClCnxwB,EAAK+rN,SAASt8C,GAAG61S,oBAulBsEy3U,CAAc/8xB,EAAM+lD,EAAMqlE,EAAIonqB,GAAUx2V,MAC/Hh8b,EAAKktxB,YAAYvixB,QAEjB3K,EAAK43xB,eAAiB,EAEtB53xB,EAAK4wX,cAAgBptY,OAAOm8D,OAAO,MACnC,IAAI69kB,EAAO,SAAWlyoB,GACpB,IAAIq2jB,EAAUzoiB,GAAS5tB,GACvB0U,EAAKgrN,IAAI73N,iBAAiB7H,EAAO0U,EAAK4wX,cAActlY,GAAS,SAAUA,KA2C3E,YAA4B0U,EAAM1U,GAChC,IAAKA,EAAM0xyB,QAAW,OAAO,EAC7B,GAAI1xyB,EAAMm/gB,iBAAoB,OAAO,EACrC,QAAS1ngB,EAAOzX,EAAMjF,OAAQ0c,GAAQ/C,EAAKgrN,IAAKjoN,EAAOA,EAAKqoI,WACxD,IAAKroI,GAAyB,IAAjBA,EAAK8+V,UACf9+V,EAAKo+wB,YAAcp+wB,EAAKo+wB,WAAW3gpB,UAAUl1I,GAC9C,OAAO,EACb,OAAO,GAjDC2xyB,CAAmBj9xB,EAAM1U,MAAW8nyB,GAAiBpzxB,EAAM1U,MAC1D0U,EAAKwwd,YAAclle,GAAM7F,QAAQutyB,MAClCrxO,EAAQ3hjB,EAAM1U,OAItB,QAASA,KAAS4tB,GAAUsknB,EAAMlyoB,GAI9B4E,GAAOintB,QAAUn3sB,EAAKgrN,IAAI73N,iBAAiB,QAAS,WAAc,OAAO,OAE7E+pyB,GAAgBl9xB,GA24ChBm9xB,CAAUx/yB,MAEVA,KAAKy/yB,kBAAoB,GACzBz/yB,KAAK0/yB,YAAc,GACnB1/yB,KAAK2/yB,qBAGH9jC,GAAuB,CAAEz4nB,MAAO,CAAE20nB,cAAc,GAAOjmd,KAAM,CAAEimd,cAAc,IA2UjF,YAAwB11vB,GACtB,IAAI2qN,EAAQnnO,OAAOm8D,OAAO,MAC1BgrK,SAAM7gL,MAAQ,cACd6gL,EAAM4ykB,gBAAkB5sxB,OAAO3Q,EAAKwwd,UACpC7lQ,EAAMx0L,UAAY,KAElBn2B,EAAKwuxB,SAAS,aAAc,SAAUltyB,GAEpC,GADoB,mBAATA,IAAuBA,EAAQA,EAAM0e,EAAKnY,QACjDvG,EAAS,QAASk3d,KAAQl3d,EAChB,SAARk3d,EACA7tP,EAAM7gL,OAAS,IAAMxoD,EAAMk3d,IACrB7tP,EAAM6tP,IAAiB,mBAARA,GAAqC,YAARA,IAClD7tP,EAAM6tP,GAAQ7nc,OAAOrvB,EAAMk3d,OAI5B,CAACu/U,GAAWh1xB,KAAK,EAAG/C,EAAKnY,MAAMs+W,IAAI5pW,QAAQowC,KAAMg+K,IAG1D,YAA6B3qN,GAC3B,GAAIA,EAAKs2xB,WAAY,CACnB,IAAItrkB,EAAM1rN,SAAS+O,cAAc,OACjC28M,EAAIjwL,UAAY,wBAChBiwL,EAAIxzH,aAAa,mBAAoB,QACrCx3F,EAAKqtxB,cAAgB,CAACrikB,IAAKA,EAAK49jB,KAAMmP,GAAWzyJ,OAAOtloB,EAAKnY,MAAM41D,UAAUs9R,KAAM/vH,EAAK,CAACvrM,KAAK,EAAM6rM,MAAOtrN,EAAKs2xB,mBAEhHt2xB,EAAKqtxB,cAAgB,KAIzB,YAAqBrtxB,GACnB,OAAQA,EAAKwuxB,SAAS,WAAY,SAAUltyB,GAAS,OAA6B,IAAtBA,EAAM0e,EAAKnY,SAQzE,WAAwBmY,GACtB,IAAI9P,EAAS,GACb8P,SAAKwuxB,SAAS,YAAa,SAAUnxuB,GACnC,QAAShQ,KAAQgQ,EAAY75D,OAAOwa,UAAUgsB,eAAezY,KAAKrhB,EAAQm9C,KACtEn9C,EAAOm9C,GAAQgQ,EAAIhQ,MAElBn9C,EAaT,YAA6BqixB,GAC3B,GAAIA,EAAOrxT,KAAKr5d,OAAS0qxB,EAAOrxT,KAAK2O,mBAAqB0iT,EAAOrxT,KAAK6xT,kBAClE,MAAM,IAAIl3T,WAAW,uEChmK3B,GDkuJA29S,GAAqBz4nB,MAAMvkI,IAAM,WAC/B,GAAI7e,KAAK88yB,OAAO5yyB,OAASlK,KAAKkK,MAAO,CACnC,IAAI++O,EAAOjpP,KAAK88yB,OAEhB,QAAS93yB,KADThF,KAAK88yB,OAAS,GACG7zjB,EAAQjpP,KAAK88yB,OAAO93yB,GAAQikP,EAAKjkP,GAClDhF,KAAK88yB,OAAO5yyB,MAAQlK,KAAKkK,MAE3B,OAAOlK,KAAK88yB,QAMdnqU,GAAWtyd,UAAUqmG,OAAS,SAAiB08B,GACzCA,EAAMy8pB,iBAAmB7/yB,KAAK88yB,OAAO+C,iBAAmBN,GAAgBv/yB,MAC5EA,KAAK88yB,OAAS15pB,EACVA,EAAMqsV,UACRrsV,EAAMqsV,QAAQ7oe,QAAQo2yB,IACtBh9yB,KAAK+8yB,cAAgB35pB,EAAMqsV,SAE7Bzve,KAAK8/yB,iBAAiB18pB,EAAMl5I,OAAO,IAOrCyoe,GAAWtyd,UAAU0/xB,SAAW,SAAmB38pB,GACjD,IAAIs8Q,EAAU,GACd,QAAS16Z,KAAQhF,KAAK88yB,OAAUp9Y,EAAQ16Z,GAAQhF,KAAK88yB,OAAO93yB,GAE5D,QAAS4+wB,KADTlkX,EAAQx1Z,MAAQlK,KAAKkK,MACFk5I,EAASs8Q,EAAQkkX,GAAUxgoB,EAAMwgoB,GACpD5jxB,KAAK0mH,OAAOg5S,IAMdizE,GAAWtyd,UAAUgqD,YAAc,SAAsBngE,GACvDlK,KAAK8/yB,iBAAiB51yB,EAAOlK,KAAKkK,MAAMule,SAAWvle,EAAMule,UAG3DkD,GAAWtyd,UAAUy/xB,iBAAmB,SAA2B51yB,EAAO81yB,GACtE,IAAI/8B,EAASjjxB,KAEXipP,EAAOjpP,KAAKkK,MAAOy2I,IAAS,EAAOs/pB,IAAY,EAQnD,GALI/1yB,EAAMspxB,aAAexzxB,KAAKk3iB,YAC5BqhQ,GAAiBv4yB,MACjBigzB,IAAY,GAEdjgzB,KAAKkK,MAAQA,EACT81yB,EAAc,CAChB,IAAIhW,GAAYoT,EAAep9yB,OA4TnC,YAA0BmyB,EAAGD,GAC3B,IAAI0oK,EAAK,EAAGslnB,EAAK,EACjB,QAASxwvB,KAAQv9B,EAAG,CAClB,GAAIA,EAAEu9B,IAASx9B,EAAEw9B,GAAS,OAAO,EACjCkrI,IAEF,QAAS1vL,MAAKgnB,EAAKguxB,IACnB,OAAOtlnB,GAAMslnB,GAlUPC,CAAiBnW,GAAWhqyB,KAAKgqyB,aACnChqyB,KAAKgqyB,UAAYA,GACjBrppB,IAAS,GAEX4+pB,GAAgBv/yB,MAGlBA,KAAK6ye,SAAWqqU,GAAYl9yB,MAC5Bm9yB,GAAoBn9yB,MACpB,IAAImqyB,GAAYoT,GAAgBv9yB,MAAOkqyB,GAAYoT,GAAet9yB,MAE9Dyoc,GAASu3W,EAAe,QACtB91yB,EAAMk2yB,kBAAoBn3jB,EAAKm3jB,kBAAoB,eAAiB,WACtEC,GAAY1/pB,KAAW3gJ,KAAKslyB,QAAQ8B,YAAYl9xB,EAAMs+W,IAAK0hb,GAAWC,KACtEkW,KAAcn2yB,EAAM41D,UAAUsja,GAAGn6O,EAAKnpL,cAAcmgvB,IAAY,GACpE,IAAIK,GAAyB,YAAV73W,IAAwBw3W,IAA8C,MAAjCjgzB,KAAKqtO,IAAIljO,MAAMo2yB,gBA/oJzE,YAAwBl+xB,GAGtB,QADIm+xB,EAAQC,EADRvie,EAAO77T,EAAKgrN,IAAI87F,wBAAyBmoN,EAASpkhB,KAAKsB,IAAI,EAAG0vU,EAAK/vN,KAE9DxkH,IAAKu0U,EAAK9uQ,KAAO8uQ,EAAK5uQ,OAAS,EAAGxb,GAAIw9d,EAAS,EACnDx9d,GAAI5mD,KAAKulC,IAAIn9B,YAAa4oU,EAAKxU,QAAS51Q,IAAK,EAAG,CACnD,IAAIu5K,GAAMhrN,EAAKyvS,KAAKmvJ,iBAAiBt3c,GAAGmqD,IACxC,GAAIu5K,IAAOhrN,EAAKgrN,KAAQhrN,EAAKgrN,IAAIl/N,SAASk/N,IAC1C,KAAIqzkB,GAAYrzkB,GAAI87F,wBACpB,GAAIu3e,GAAUvyrB,KAAOmja,EAAS,GAAI,CAChCkvR,EAASnzkB,GACTozkB,EAASC,GAAUvyrB,IACnB,QAGJ,MAAO,CAACqyrB,OAAQA,EAAQC,OAAQA,EAAQp7xB,MAAOs7xB,GAAYt+xB,EAAKgrN,MAioJiCuzkB,CAAe5gzB,MAEhH,GAAIigzB,GAAW,CACbjgzB,KAAKuvyB,YAAYplxB,OAMjB,IAAI02xB,GAAiBR,KAAc9tyB,GAAOkvrB,IAAMlvrB,GAAOyntB,UAAYh6tB,KAAKk3iB,YACnEjuT,EAAKnpL,UAAU2f,QAAUv1E,EAAM41D,UAAU2f,OAoRlD,YAAiCqhuB,EAAMC,GACrC,IAAIvptB,EAAQtqF,KAAKulC,IAAIquwB,EAAK/8U,QAAQs4S,YAAYykC,EAAK1jd,MAAO2jd,EAAKh9U,QAAQs4S,YAAY0kC,EAAK3jd,OACxF,OAAO0jd,EAAK/8U,QAAQ/2c,MAAMwqE,IAAUuptB,EAAKh9U,QAAQ/2c,MAAMwqE,GAtREwptB,CAAwB/3jB,EAAKnpL,UAAW51D,EAAM41D,WACrG,GAAIugvB,GAAW,CAKb,IAAIY,GAAe1uyB,GAAOyntB,OAAUh6tB,KAAK0tyB,YAAc1tyB,KAAK8xT,KAAKs9K,eAAeC,UAAa,MACzF1uV,KAAW3gJ,KAAKslyB,QAAQ5+qB,OAAOx8G,EAAMs+W,IAAK0hb,GAAWC,GAAWnqyB,SAClEA,KAAKslyB,QAAQ4H,gBAAgB,IAC7BltyB,KAAKslyB,QAAQ7/d,UACbzlU,KAAKslyB,QAAU+X,GAAYnzyB,EAAMs+W,IAAK0hb,GAAWC,GAAWnqyB,KAAKqtO,IAAKrtO,OAEpEihzB,KAAiBjhzB,KAAK0tyB,cAAemT,IAAiB,GAMxDA,MACE7gzB,KAAKimc,WAAajmc,KAAKuvyB,YAAYhtjB,iBAAiB6gP,GAAGpje,KAAK8xT,KAAKs9K,iBA3nF3E,YAA4B/sd,GAC1B,IAAIwmxB,EAAYxmxB,EAAKijxB,QAAQS,WAAW1jxB,EAAKnY,MAAM41D,UAAU7xD,OAAQ,GACjEy1xB,EAASrhxB,EAAKyvS,KAAKs9K,eACvB,OAAO6zT,EAAqB4F,EAAUzjxB,KAAMyjxB,EAAUz2wB,OAAQsxwB,EAAOwF,WAAYxF,EAAO7wL,cAwnFIquM,CAAmBlhzB,OAC3GwxyB,GAAexxyB,KAAM6gzB,KAErB1R,GAAkBnvyB,KAAMkK,EAAM41D,WAC9B9/D,KAAKuvyB,YAAYC,mBAEnBxvyB,KAAKuvyB,YAAYvixB,QAKnB,GAFAhtB,KAAK2/yB,kBAAkB12jB,GAET,SAAVw/M,GACFzoc,KAAKqtO,IAAI0iK,UAAY,UACF,gBAAV04D,GAA0B,CACnC,IAAI04W,GAAWnhzB,KAAK8xT,KAAKs9K,eAAeC,UACpCrve,KAAK6wyB,SAAS,0BAA2B,SAAUjryB,IAAK,OAAOA,GAAEq9wB,MA/tJzE,YAA4B5gwB,EAAM67T,EAAMije,GAGtC,QAFIC,EAAkB/+xB,EAAKwuxB,SAAS,oBAAsB,EAAGwQ,EAAeh/xB,EAAKwuxB,SAAS,iBAAmB,EACzGrob,GAAMnmW,EAAKgrN,IAAIgvT,cACVhgL,GAAS8kc,GAAY9+xB,EAAKgrN,IAC5BgvI,GADkCA,GAAS5uN,GAAW4uN,IAE3D,GAAuB,GAAnBA,GAAO6H,SACX,KAAIo9b,GAAQjlc,IAAUmM,GAAI7hW,MAA2B,GAAnB01V,GAAO6H,SACrCq9b,GAAWD,GAAQE,GAAWh5b,IAAOi5b,GAAWplc,IAChDqlc,GAAQ,EAAGC,GAAQ,EASvB,GARAn7yB,EAAS2nH,IAAMozrB,GAASpzrB,IAAMyzrB,GAAQR,EAAiB,OACnDO,KAAUJ,GAASpzrB,IAAM+vN,EAAK/vN,IAAMyzrB,GAAQP,EAAc,QACrDnje,EAAKxU,OAAS63e,GAAS73e,OAASk4e,GAAQR,EAAiB,YAC9DO,GAAQzje,EAAKxU,OAAS63e,GAAS73e,OAASk4e,GAAQP,EAAc,WAClE76yB,EAAS4oE,KAAOmyuB,GAASnyuB,KAAOwyuB,GAAQR,EAAiB,QACrDM,KAAUH,GAASnyuB,KAAO8uQ,EAAK9uQ,KAAOwyuB,GAAQP,EAAc,SACvDnje,EAAK5uQ,MAAQiyuB,GAASjyuB,MAAQsyuB,GAAQR,EAAiB,WAC5DM,GAAQxje,EAAK5uQ,MAAQiyuB,GAASjyuB,MAAQsyuB,GAAQP,EAAc,UAC5DK,IAASC,GACX,GAAIL,GACF94b,GAAIi0K,YAAYolR,SAASH,GAAOC,QAC3B,CACL,IAAItwR,GAASh1K,GAAOyzB,WAAYwhJ,GAASj1K,GAAO0zB,UAC5C4xa,KAAStlc,GAAO0zB,WAAa4xa,IAC7BD,KAASrlc,GAAOyzB,YAAc4xa,IAClC,IAAII,GAAKzlc,GAAOyzB,WAAauhJ,GAAQ0wR,GAAK1lc,GAAO0zB,UAAYuhJ,GAC7DpzM,EAAO,CAAC9uQ,KAAM8uQ,EAAK9uQ,KAAO0yuB,GAAI3zrB,IAAK+vN,EAAK/vN,IAAM4zrB,GAAIzyuB,MAAO4uQ,EAAK5uQ,MAAQwyuB,GAAIp4e,OAAQwU,EAAKxU,OAASq4e,IAGpG,GAAIT,GAAS,OAssJTU,CAAmBhizB,KADdkK,EAAM41D,qBAAqBgka,GACP9je,KAAKslyB,QAAQsD,YAAY1+xB,EAAM41D,UAAUsI,MAAM+gQ,wBAE/CnpU,KAAKiizB,YAAY/3yB,EAAM41D,UAAUs9R,KAAM,GAFiC+jd,SAG5Fb,IArqJb,YAAwB7/rB,GACtB,IAAI+/rB,EAAS//rB,EAAI+/rB,OACbC,EAAShgsB,EAAIggsB,OACbp7xB,EAAQo7F,EAAIp7F,MAEZ68xB,EAAY1B,EAASA,EAAOr3e,wBAAwBh7M,IAAM,EAC9Dg0rB,GAAmB98xB,EAAoB,GAAb68xB,EAAiB,EAAIA,EAAYzB,GAgqJzD2B,CAAe9B,KAInB3tU,GAAWtyd,UAAUgiyB,mBAAqB,WAExC,QADIhgyB,EACGA,EAAOriB,KAAK0/yB,YAAY5sxB,OAAazQ,EAAKojT,SAAWpjT,EAAKojT,WAGnEktK,GAAWtyd,UAAUs/xB,kBAAoB,SAA4B2C,GACnE,GAAKA,GAAaA,EAAU7yU,SAAWzve,KAAKkK,MAAMule,SAAWzve,KAAK+8yB,eAAiB/8yB,KAAKy/yB,kBAYtF,QAAS//B,GAAM,EAAGA,GAAM1/wB,KAAK0/yB,YAAY35yB,OAAQ25wB,KAAO,CACtD,IAAI6iC,GAAavizB,KAAK0/yB,YAAYhgC,IAC9B6iC,GAAW77rB,QAAU67rB,GAAW77rB,OAAO1mH,KAAMsizB,OAdsD,CACzGtizB,KAAKy/yB,kBAAoBz/yB,KAAK+8yB,cAC9B/8yB,KAAKqizB,qBACL,QAAS1zyB,EAAI,EAAGA,EAAI3O,KAAK+8yB,cAAch3yB,OAAQ4I,IAAK,CAClD,IAAIimxB,EAAS50xB,KAAK+8yB,cAAcpuyB,GAC5BimxB,EAAOrxT,KAAKlhd,MAAQriB,KAAK0/yB,YAAYj6yB,KAAKmvxB,EAAOrxT,KAAKlhd,KAAKriB,OAEjE,QAASw/wB,EAAM,EAAGA,EAAMx/wB,KAAKkK,MAAMule,QAAQ1pe,OAAQy5wB,IAAO,CACxD,IAAIgjC,GAAWxizB,KAAKkK,MAAMule,QAAQ+vS,GAC9BgjC,GAASj/U,KAAKlhd,MAAQriB,KAAK0/yB,YAAYj6yB,KAAK+8yB,GAASj/U,KAAKlhd,KAAKriB,UAiBzE2ye,GAAWtyd,UAAUwwxB,SAAW,SAAmBvrT,EAAU1/e,GAC3D,IAAiDjC,EAA7C+rD,EAAO1vD,KAAK88yB,QAAU98yB,KAAK88yB,OAAOx3T,GACtC,GAAY,MAAR51b,IAAiB/rD,EAAQiC,EAAIA,EAAE8pD,GAAQA,GAAS,OAAO/rD,EAC3D,QAASgL,GAAI,EAAGA,GAAI3O,KAAK+8yB,cAAch3yB,OAAQ4I,KAAK,CAClD,IAAI4zwB,GAASvixB,KAAK+8yB,cAAcpuyB,IAAGy0I,MAAMkiW,GACzC,GAAc,MAAVi9R,KAAmB5+wB,EAAQiC,EAAIA,EAAE28wB,IAAUA,IAAW,OAAO5+wB,EAEnE,IAAI8re,GAAUzve,KAAKkK,MAAMule,QACzB,GAAIA,GAAW,QAAS+vS,GAAM,EAAGA,GAAM/vS,GAAQ1pe,OAAQy5wB,KAAO,CAC5D,IAAImD,GAASlzS,GAAQ+vS,IAAKp8nB,MAAMkiW,GAChC,GAAc,MAAVq9R,KAAmBh/wB,EAAQiC,EAAIA,EAAE+8wB,IAAUA,IAAW,OAAOh/wB,IAMrEgve,GAAWtyd,UAAUoigB,SAAW,WAC9B,OAAOzihB,KAAK8xT,KAAK9tB,eAAiBhkS,KAAKqtO,KAKzCslQ,GAAWtyd,UAAUgtT,MAAQ,WAC3BrtU,KAAKuvyB,YAAYplxB,OACbnqB,KAAK6ye,UA3sJX,YAA4BxlQ,GAC1B,GAAIA,EAAIztG,UAAa,OAAOytG,EAAIztG,YAChC,GAAIokqB,GAA0B,OAAO32jB,EAAIggG,MAAM22d,IAE/C,IAAIye,EAAS9B,GAAYtzkB,GACzBA,EAAIggG,MAAgC,MAA1B22d,GAAiC,CACrC9kN,oBACF8kN,UAAyB,CAAC9kN,eAAe,IAClC,SAEP/5kB,GACC6+xB,KACHA,IAAyB,EACzBme,GAAmBM,EAAQ,IA8rJRC,CAAmB1izB,KAAKqtO,KAC7CmkkB,GAAexxyB,MACfA,KAAKuvyB,YAAYvixB,SAQnB6uvB,GAAqB/pd,KAAKjzS,IAAM,WAC9B,IAAIyld,EAAStke,KAAK8wrB,MAClB,GAAc,MAAVxsN,EAAkB,QAASnzc,EAASnxB,KAAKqtO,IAAI5/E,WAAYt8H,EAAQA,EAASA,EAAOs8H,WACnF,GAAuB,GAAnBt8H,EAAO+yV,UAAqC,IAAnB/yV,EAAO+yV,UAAkB/yV,EAAO2vK,KAC3D,OAAK3vK,EAAOi+c,eAAgBvpe,OAAOy7uB,eAAenwtB,GAAQi+c,aAAe,WAAc,OAAOztd,SAASytd,iBAChGpve,KAAK8wrB,MAAQ3/pB,EAGxB,OAAOmzc,GAAU3id,UAWnBgxd,GAAWtyd,UAAU42xB,YAAc,SAAwBp+tB,GACzD,OAAOo+tB,GAAYj3yB,KAAM64E,IAU3B85Z,GAAWtyd,UAAU4hyB,YAAc,SAAwBp5tB,EAAKT,GAC5D,YAAc,IAATA,IAAkBA,EAAO,GAEzB65tB,GAAYjizB,KAAM6oF,EAAKT,IAYhCuqZ,GAAWtyd,UAAUsiyB,SAAW,SAAmB95tB,EAAKT,GACpD,YAAc,IAATA,IAAkBA,EAAO,GAEzBpoF,KAAKslyB,QAAQS,WAAWl9sB,EAAKT,IAYtCuqZ,GAAWtyd,UAAU2nxB,QAAU,SAAkBn/sB,GAC/C,IAAI6/d,EAAO1ojB,KAAKslyB,QAAQ2C,OAAOp/sB,GAC/B,OAAO6/d,EAAOA,EAAKs/O,QAAU,MAY/Br1T,GAAWtyd,UAAUuiyB,SAAW,SAAmBx9xB,EAAMgN,EAAQg7vB,QAC/C,IAATA,IAAkBA,GAAO,GAEhC,IAAIvksB,EAAM7oF,KAAKslyB,QAAQI,WAAWtgxB,EAAMgN,EAAQg7vB,GAChD,GAAW,MAAPvksB,EAAe,MAAM,IAAIq1Y,WAAW,sCACxC,OAAOr1Y,GAUT8pZ,GAAWtyd,UAAU87wB,eAAiB,SAA2B9quB,EAAKnnD,GACpE,OAz8IF,YAAwBmY,EAAMnY,EAAOmnD,GACnC,OAAIu1uB,IAAe18xB,GAAS28xB,IAAax1uB,EAAcsktB,IACvDixB,GAAc18xB,EAAO28xB,GAAYx1uB,EAC1BsktB,GAAsB,MAAPtktB,GAAsB,QAAPA,EAnEvC,YAAgChvC,EAAMnY,EAAOmnD,GAC3C,IAAIuxa,EAAM14d,EAAM41D,UACZ2ja,EAAc,MAAPpya,EAAcuxa,EAAItB,MAAQsB,EAAIrB,IACzC,OAAOshV,GAAiBxgyB,EAAMnY,EAAO,WAGnC,QADImjO,GADMhrN,EAAKijxB,QAAQS,WAAWtiU,EAAK56Y,IAAY,MAAPx3B,GAAc,EAAK,GACjDjsC,OACL,CACP,IAAI09xB,GAAUzgyB,EAAKijxB,QAAQC,YAAYl4jB,IAAK,GAC5C,IAAKy1kB,GAAW,MAChB,GAAIA,GAAQ19xB,KAAKkzvB,QAAS,CAAEjriB,GAAMy1kB,GAAQz1kB,IAAK,MAC/CA,GAAMy1kB,GAAQz1kB,IAAI5/E,WAGpB,QADI50E,GAASopuB,GAAY5/xB,EAAMohd,EAAK56Y,IAAK,GAChCpqB,GAAQ4uK,GAAI0kF,WAAYtzP,GAAOA,GAAQA,GAAMqsT,YAAa,CACjE,IAAItpN,QAAS,EACb,GAAsB,GAAlB/iG,GAAMylT,SAAiB1iN,GAAQ/iG,GAAM2mrB,yBACd,GAAlB3mrB,GAAMylT,SACR,SADyB1iN,GAAQwhoB,EAAUvkuB,GAAO,EAAGA,GAAMiotB,UAAU3gxB,QAAQq/uB,iBAEpF,QAASz2uB,GAAI,EAAGA,GAAI6yJ,GAAMz7J,OAAQ4I,KAAK,CACrC,IAAIstH,GAAMulC,GAAM7yJ,IAChB,GAAIstH,GAAIytM,OAASztM,GAAI9N,IAAM,IACf,MAAP98D,EAAcwnB,GAAOs1C,IAAM8N,GAAI9N,IAAkC,GAA3B8N,GAAIytM,OAAS7wP,GAAOs1C,KACxD8N,GAAIytM,OAAS7wP,GAAO6wP,OAAqC,GAA3B7wP,GAAO6wP,OAASztM,GAAI9N,MACrD,OAAO,GAGf,OAAO,IA0CL40rB,CAAuB1gyB,EAAMnY,EAAOmnD,GApC1C,YAAkChvC,EAAMnY,EAAOmnD,GAC7C,IACIsya,EADMz5d,EAAM41D,UACA6ja,MAChB,IAAKA,EAAMtnH,OAAOooH,YAAe,OAAO,EACxC,IAAIryc,GAASuxc,EAAMk3S,aAAc6X,IAAWtgwB,GAAQugwB,GAAQvgwB,IAAUuxc,EAAMtnH,OAAOz9V,QAAQowC,KACvF4za,GAAMvgd,EAAKyvS,KAAKs9K,eAGpB,OAAKu3T,GAASnrX,KAAKmoD,EAAMtnH,OAAO2Z,cAAiB4sG,GAAIv+V,OAG9Cw+qB,GAAiBxgyB,EAAMnY,EAAO,WAMnC,IAAI2urB,GAAWj2N,GAAIghU,WAAW,GAAIof,GAAUpgV,GAAIyM,UAAW4zU,GAASrgV,GAAIqmU,YACpEia,GAAetgV,GAAIugV,eACvBvgV,GAAIv+V,OAAO,OAAQhzE,EAAK,aACxB,IACI9+C,KADYoxd,EAAMnsY,MAAQn1E,EAAKijxB,QAAQsD,YAAYjlU,EAAM33a,UAAY3pC,EAAKgrN,KACtDl/N,SAAmC,GAA1By0d,GAAIyM,UAAUnrH,SAAgB0+G,GAAIyM,UAAYzM,GAAIyM,UAAU5hV,aACxFu1pB,IAAWpgV,GAAIyM,WAAa4zU,IAAUrgV,GAAIqmU,YAE/CrmU,UAAI0M,kBACJ1M,GAAIg+O,SAAS/nB,IACO,MAAhBqqH,KAAwBtgV,GAAIugV,eAAiBD,IAC1C3wyB,KAlBS,QAAP8+C,GAAwB,YAAPA,EAAoBqhuB,GAAUC,GA4BtDywB,CAAyB/gyB,EAAMnY,EAAOmnD,IAo8InC8quB,CAAen8xB,KAAMkK,GAASlK,KAAKkK,MAAOmnD,IAMnDshb,GAAWtyd,UAAUolT,QAAU,YACxBzlU,KAAKslyB,UAnrDZ,YAAsBjjxB,GAEpB,QAASva,KADTua,EAAKktxB,YAAYplxB,OACA9H,EAAK4wX,cAClB5wX,EAAKgrN,IAAInwM,oBAAoBp1B,EAAMua,EAAK4wX,cAAcnrY,IAC1Dmf,aAAa5E,EAAKg2xB,kBAClBpxxB,aAAa5E,EAAKs0xB,6BA+qDlB0M,CAAarjzB,MACbA,KAAKqizB,qBACLrizB,KAASi9yB,SACPj9yB,KAAKslyB,QAAQ5+qB,OAAO1mH,KAAKkK,MAAMs+W,IAAK,GAAI+0b,GAAgBv9yB,MAAOA,MAC/DA,KAAKqtO,IAAI2oJ,YAAc,IACdh2X,KAAKqtO,IAAI5/E,YAClBztJ,KAAKqtO,IAAI5/E,WAAW/vG,YAAY19C,KAAKqtO,KAEvCrtO,KAAKslyB,QAAQ7/d,UACbzlU,KAAKslyB,QAAU,OAIjB3yT,GAAWtyd,UAAU+6F,cAAgB,SAA0BztG,GAC7D,OAlqDF,YAAuB0U,EAAM1U,IACtB8nyB,GAAiBpzxB,EAAM1U,IAAU4tB,GAAS5tB,EAAM7F,QAChDua,EAAKwwd,YAAclle,EAAM7F,QAAQutyB,MAClC95wB,GAAS5tB,EAAM7F,MAAMua,EAAM1U,GA+pDxBytG,CAAcp7G,KAAM2N,IAW7Bgle,GAAWtyd,UAAU+tN,SAAW,SAAmBt8C,GACjD,IAAIghT,EAAsB9ye,KAAK88yB,OAAOhqU,oBAClCA,EAAuBA,EAAoBl/c,KAAK5zB,KAAM8xL,GACnD9xL,KAAKqqE,YAAYrqE,KAAKkK,MAAMypB,MAAMm+J,KAG3CjsL,OAAOszwB,iBAAkBxmS,GAAWtyd,UAAWw7vB,ICliKzB,oBAAXz1Z,QAAwB,CACjC,IAAIx/V,GAAQ,IAAIw/V,QAChBw3G,GAAgB,SAAU/qd,GAAO,OAAO+T,GAAM/H,IAAIhM,IAClDgrd,GAAa,SAAUhrd,EAAKlP,GAC1BijB,UAAMyL,IAAIxf,EAAKlP,GACRA,OAEJ,CACL,IAAI2/yB,GAAU,GAAoBxlV,GAAW,EAC7CF,GAAgB,SAAU/qd,GACxB,QAASlE,EAAI,EAAGA,EAAI20yB,GAAQv9yB,OAAQ4I,GAAK,EACrC,GAAI20yB,GAAQ30yB,IAAMkE,EAAO,OAAOywyB,GAAQ30yB,EAAI,IAElDkvd,GAAa,SAAUhrd,EAAKlP,GAC1B,OAN4B,IAMxBm6d,KAAyBA,GAAW,GACxCwlV,GAAQxlV,MAAcjrd,EACfywyB,GAAQxlV,MAAcn6d,GAIjC,IAAI+7d,GAAO,SAActwZ,EAAM++C,EAAK7+C,EAAOo6P,GACzC1pU,KAAKovE,KAAOA,EAAMpvE,KAAKmuH,IAAMA,EAAKnuH,KAAKsvE,MAAQA,EAAOtvE,KAAK0pU,OAASA,GAOlEw1J,GAAW,SAAkBxod,EAAOnM,EAAQ5E,EAAK+4d,GAEnD1+d,KAAK0W,MAAQA,EAEb1W,KAAKuK,OAASA,EAGdvK,KAAK2F,IAAMA,EAGX3F,KAAK0+d,SAAWA,GA2MlB,YAAuB1xP,GACrB,GAAIA,EAAMgxP,SAAY,OAAOhxP,EAAMgxP,SAASpvd,QAE5C,QADI2D,EAAS,GACJ5D,EAAI,EAAGA,EAAIq+N,EAAMk2J,QAASv0X,IAAO4D,EAAO9M,KAAK,GACtD,OAAO8M,EAKT,YAAsB86N,EAAKk2kB,GACzB,IAAIC,EAAYn2kB,EAAIvlL,aAAa,iBAC7B2ze,EAAS+nR,GAAa,eAAehoY,KAAKgoY,GAAaA,EAAUxsyB,MAAM,KAAKrR,IAAI,SAAUkB,IAAK,OAAOynD,OAAOznD,MAAS,KACtHq8X,EAAU50U,OAAO++K,EAAIvlL,aAAa,YAAc,GAChDv1C,GAAS,CACX2wX,QAASA,EACTy5F,QAASrua,OAAO++K,EAAIvlL,aAAa,YAAc,GAC/Ck2a,SAAUy9D,GAAUA,EAAO11hB,QAAUm9X,EAAUu4J,EAAS,MAE1D,QAAS/re,MAAQ6zvB,EAAY,CAC3B,IAAIzpX,GAASypX,EAAW7zvB,IAAM+zvB,WAC1B9/yB,GAAQm2b,IAAUA,GAAOzsN,GAChB,MAAT1pO,KAAiB4O,GAAOm9C,IAAQ/rD,IAEtC,OAAO4O,GAGT,YAAsB6S,EAAMm+xB,GAC1B,IAAIv2kB,EAAQ,GAKZ,QAASt9K,KAJiB,GAAtBtqC,EAAK4nN,MAAMk2J,UAAgBl2J,EAAMk2J,QAAU99W,EAAK4nN,MAAMk2J,SAChC,GAAtB99W,EAAK4nN,MAAM2vP,UAAgB3vP,EAAM2vP,QAAUv3c,EAAK4nN,MAAM2vP,SACtDv3c,EAAK4nN,MAAMgxP,WACXhxP,EAAM,iBAAmB5nN,EAAK4nN,MAAMgxP,SAASv2c,KAAK,MACrC87xB,EAAY,CAC3B,IAAI9jhB,EAAS8jhB,EAAW7zvB,GAAMg0vB,WAC1BjkhB,GAAUA,EAAOr6Q,EAAK4nN,MAAMt9K,GAAOs9K,GAEzC,OAAOA,EA6ET,YAAwBF,GACtB,IAAIv6N,EAASu6N,EAAOw3P,OAAOD,eAC3B,IAAK9xd,EAEH,QAASvN,KADTuN,EAASu6N,EAAOw3P,OAAOD,eAAiB,GACvBv3P,EAAOrrG,MAAO,CAC7B,IAAI35H,EAAOglO,EAAOrrG,MAAMz8H,GAAOiuP,EAAOnrP,EAAKy7d,KAAKzG,UAC5C7pO,IAAQ1gP,EAAO0gP,GAAQnrP,GAG/B,OAAOyK,EAOT,YAAoBkxd,GAClB,QAASj4d,EAAIi4d,EAAKjsY,MAAQ,EAAGhsF,EAAI,EAAGA,IAChC,GAAwC,OAApCi4d,EAAKr+c,KAAK5Z,GAAG1D,KAAKy7d,KAAKzG,UAAsB,OAAO2G,EAAKr+c,KAAK,GAAGwC,QAAQ67c,EAAKz3a,OAAOxgD,EAAI,IACjG,OAAO,KAWT,YAAmBtB,GAEjB,QADIy5d,EAAQz5d,EAAM41D,UAAU6ja,MACnBn4d,EAAIm4d,EAAMnsY,MAAOhsF,EAAI,EAAGA,IAAO,GAAyC,OAArCm4d,EAAMv+c,KAAK5Z,GAAG1D,KAAKy7d,KAAKzG,UAAsB,OAAO,EACjG,OAAO,EAwBT,YAAsB2G,GACpB,MAA0C,OAAnCA,EAAKpnH,OAAOv0W,KAAKy7d,KAAKzG,WAAsB2G,EAAKR,UAO1D,YAAqByB,EAAIC,GACvB,OAAOD,EAAGltY,OAASmtY,EAAGntY,OAASktY,EAAG77Y,KAAO87Y,EAAG33c,OAAM,IAAO03c,EAAG77Y,KAAO87Y,EAAGr6b,KAAI,GAW5E,YAAkBm5b,EAAMt9F,EAAM90U,GAC5B,IAAIrkC,EAAQy2c,EAAKz2c,OAAM,GACnBsyZ,GAD8B4/C,GAASrgd,IAAI4kd,EAAKr+c,MAAK,IACzCw6c,SAAS6D,EAAK56Y,IAAM77D,EAAOm5W,EAAM90U,GACjD,OAAgB,MAATiuX,GAAgB,KAAOmkD,EAAKr+c,KAAK,GAAGwC,QAAQoF,EAAQsyZ,IAG7D,YAAiBtyM,EAAOhoO,EAAMrB,GAC5B,IAAI4O,EAAS,GACb,QAASm9C,KAAQs9K,EAASz6N,EAAOm9C,GAAQs9K,EAAMt9K,GAC/Cn9C,SAAOvN,GAAQrB,EACR4O,EAGT,YAAuBy6N,EAAOnkJ,EAAK/6E,QACtB,IAANA,IAAeA,EAAE,GAEtB,IAAIyE,EAASgwd,GAAQv1P,EAAO,UAAWA,EAAMk2J,QAAUp1X,GACvD,OAAIyE,EAAOyrd,WACTzrd,EAAOyrd,SAAWzrd,EAAOyrd,SAASpvd,QAClC2D,EAAOyrd,SAASl6c,OAAO+kE,EAAK/6E,GACvByE,EAAOyrd,SAASj6a,KAAK,SAAUo+H,GAAK,OAAOA,EAAI,MAAS5vK,EAAOyrd,SAAW,OAE1Ezrd,EAGT,YAAoBy6N,EAAOnkJ,EAAK/6E,QACnB,IAANA,IAAeA,EAAE,GAEtB,IAAIyE,EAASgwd,GAAQv1P,EAAO,UAAWA,EAAMk2J,QAAUp1X,GACvD,GAAIyE,EAAOyrd,SAAU,CACnBzrd,EAAOyrd,SAAWzrd,EAAOyrd,SAASpvd,QAClC,QAASD,EAAI,EAAGA,EAAIb,EAAGa,IAAO4D,EAAOyrd,SAASl6c,OAAO+kE,EAAK,EAAG,GAE/D,OAAOt2E,EAraT2sd,GAAS7+c,UAAUm/c,SAAW,SAAmB32Y,GAC/C,QAASl6E,EAAI,EAAGA,EAAI3O,KAAK2F,IAAII,OAAQ4I,IAAK,CACxC,IAAI8wd,EAASz/d,KAAK2F,IAAIgJ,GACtB,GAAI8wd,GAAU52Y,EAGd,SAFIzZ,EAAOzgE,EAAI3O,KAAK0W,MAAOy3G,GAAOx/G,EAAI3O,KAAK0W,MAAS,EAChD44D,GAAQF,EAAO,EAAGs6P,GAASv7M,GAAM,EAC5B3sB,GAAI,EAAGlyB,GAAQtvE,KAAK0W,OAAS1W,KAAK2F,IAAIgJ,EAAI6yF,KAAMi+X,EAAQj+X,KAAOlyB,KACxE,QAASq5tB,GAAM,EAAGj/d,GAAS1pU,KAAKuK,QAAUvK,KAAK2F,IAAIgJ,EAAK3O,KAAK0W,MAAQiyxB,KAASlpU,EAAQkpU,KAASj/d,KAC/F,OAAO,IAAIg2J,GAAKtwZ,EAAM++C,GAAK7+C,GAAOo6P,KAEpC,MAAM,IAAIw0J,WAAW,uBAAyBr1Y,EAAM,WAKtDq2Y,GAAS7+c,UAAUs/c,SAAW,SAAmB92Y,GAC/C,QAASl6E,EAAI,EAAGA,EAAI3O,KAAK2F,IAAII,OAAQ4I,IACjC,GAAI3O,KAAK2F,IAAIgJ,IAAMk6E,EAAO,OAAOl6E,EAAI3O,KAAK0W,MAC9C,MAAM,IAAIwnd,WAAW,uBAAyBr1Y,EAAM,WAMtDq2Y,GAAS7+c,UAAUu/c,SAAW,SAAmB/2Y,EAAKs9S,EAAM90U,GAC1D,IAAIovD,EAAMzgH,KAAKw/d,SAAS32Y,GAClBzZ,GAAOqxC,EAAIrxC,KACXE,GAAQmxC,EAAInxC,MACZ6+C,GAAM1N,EAAI0N,IACVu7M,GAASjpN,EAAIipN,OACnB,MAAY,SAARy8D,GACE90U,EAAM,EAAY,GAAR+d,GAAYE,IAAStvE,KAAK0W,OAAgB,KACjD1W,KAAK2F,IAAIwoH,GAAMnuH,KAAK0W,OAAS26C,EAAM,EAAI+d,GAAO,EAAIE,MAErDje,EAAM,EAAW,GAAP88D,GAAWu7M,IAAU1pU,KAAKuK,QAAiB,KAClDvK,KAAK2F,IAAIypE,GAAOpvE,KAAK0W,OAAS26C,EAAM,EAAI88D,GAAM,EAAIu7M,MAM7Dw1J,GAAS7+c,UAAUw/c,YAAc,SAAsB1tc,EAAGD,GACxD,IAAIuuF,EAAMzgH,KAAKw/d,SAASrtc,GAClB2tc,EAAQr/W,EAAIrxC,KACZ2wZ,GAASt/W,EAAInxC,MACb0wZ,GAAOv/W,EAAI0N,IACX8xW,GAAUx/W,EAAIipN,OAChBywc,GAAQn6wB,KAAKw/d,SAASttc,GAEpBiuc,GAASg6S,GAAM7qsB,MACf8wZ,GAAO+5S,GAAMhspB,IACbkyW,GAAU85S,GAAMzwc,OACtB,OAAO,IAAIg2J,GAAKxyd,KAAKulC,IAAIqtb,EAJXq6S,GAAM/qsB,MAIoBliE,KAAKulC,IAAIutb,GAAMI,IACvClzd,KAAKsB,IAAIuxd,GAAQI,IAASjzd,KAAKsB,IAAIyxd,GAASI,MAM9DnB,GAAS7+c,UAAUigd,YAAc,SAAsBpiJ,GAErD,QADI3rU,EAAS,GAAI6sd,EAAO,GACflyb,EAAMgxS,EAAK/vN,IAAKjhF,EAAMgxS,EAAKxU,OAAQx8R,IAC1C,QAASyxB,GAAMu/Q,EAAK9uQ,KAAMzQ,GAAMu/Q,EAAK5uQ,MAAO3Q,KAAO,CACjD,IAAI/6C,GAAQspB,EAAMltC,KAAK0W,MAAQioD,GAAKkqB,GAAM7oF,KAAK2F,IAAIie,IAC/Cw7c,EAAKv2Y,MACTu2Y,EAAKv2Y,KAAO,GACPlqB,IAAOu/Q,EAAK9uQ,OAASzQ,IAAO3+D,KAAK2F,IAAIie,GAAQ,IAAMilE,MACnD37C,GAAOgxS,EAAK/vN,MAAQjhF,GAAOltC,KAAK2F,IAAIie,GAAQ5jB,KAAK0W,QAAUmyE,KAC5Dt2E,EAAO9M,KAAKojF,KAGpB,OAAOt2E,GAMT2sd,GAAS7+c,UAAUkgd,WAAa,SAAqBrzb,EAAKyxB,EAAKomW,GAC7D,QAASp2Z,EAAI,EAAG6xd,GAAW,GAAI7xd,IAAK,CAClC,IAAI8xd,GAASD,GAAWz7D,EAAMtmW,MAAM9vD,GAAGowd,SACvC,GAAIpwd,GAAKu+B,EAAK,CAGZ,QAFItpB,GAAQ+6C,EAAMzxB,EAAMltC,KAAK0W,MAAOgqd,IAAexzb,EAAM,GAAKltC,KAAK0W,MAE5DkN,GAAQ88c,IAAe1ge,KAAK2F,IAAIie,IAAS48c,IAAY58c,KAC5D,OAAOA,IAAS88c,GAAcD,GAAS,EAAIzge,KAAK2F,IAAIie,IAEtD48c,GAAWC,KAMfvB,GAASrgd,IAAM,SAAckmZ,GAC3B,OAAO64D,GAAc74D,IAAU84D,GAAW94D,EAI5C,YAAoBA,GAClB,GAAiC,SAA7BA,EAAMj9Z,KAAKy7d,KAAKzG,UAAwB,MAAM,IAAIoB,WAAW,qBAAuBn5D,EAAMj9Z,KAAK9C,MAGnG,QAFI0R,EA2DN,YAAmBquZ,GAEjB,QADIruZ,GAAQ,EAAIynd,GAAa,EACpBjxb,EAAM,EAAGA,EAAM63X,EAAMq5D,WAAYlxb,IAAO,CAC/C,IAAImxb,EAAUt5D,EAAMtmW,MAAMvxB,GAAMoxb,GAAW,EAC3C,GAAIH,EAAc,QAAS38X,GAAI,EAAGA,GAAIt0D,EAAKs0D,KAEzC,QADI+8X,GAAUx5D,EAAMtmW,MAAM+iC,IACjB7yF,GAAI,EAAGA,GAAI4vd,GAAQH,WAAYzvd,KAAK,CAC3C,IAAIo7Q,GAAOw0M,GAAQ9/Z,MAAM9vD,IACrB6yF,GAAIuoL,GAAK/8C,MAAM2vP,QAAUzvb,IAAOoxb,IAAYv0M,GAAK/8C,MAAMk2J,SAG/D,QAASs8Y,GAAM,EAAGA,GAAMnhT,EAAQD,WAAYohT,KAAO,CACjD,IAAImkC,GAAStlV,EAAQ5/Z,MAAM+gtB,IAC3BlhT,IAAYqlV,GAAO32kB,MAAMk2J,QACrBygb,GAAO32kB,MAAM2vP,QAAU,IAAKwB,GAAa,IAElC,GAATznd,EACAA,EAAQ4nd,GACH5nd,GAAS4nd,KACd5nd,EAAQxJ,KAAKsB,IAAIkI,EAAO4nd,KAE9B,OAAO5nd,EAhFK8nd,CAAUz5D,GAAQx6Z,EAASw6Z,EAAMq5D,WACzCz4d,EAAM,GAAI84d,EAAS,EAAGC,GAAW,KAAMC,GAAY,GAC9Chwd,GAAI,EAAG1F,GAAIyN,EAAQnM,EAAQoE,GAAI1F,GAAG0F,KAAOhJ,EAAIgJ,IAAK,EAE3D,QAASu+B,GAAM,EAAG27C,GAAM,EAAG37C,GAAM3iC,EAAQ2iC,KAAO,CAC9C,IAAImxb,GAAUt5D,EAAMtmW,MAAMvxB,IAC1B27C,KACA,QAAS22rB,GAAM,GAAIA,KAAO,CACxB,KAAO/gT,EAAS94d,EAAII,QAAyB,GAAfJ,EAAI84d,IAAgBA,IAClD,GAAI+gT,IAAOnhT,GAAQD,WAAc,MAMjC,QALIQ,GAAWP,GAAQ5/Z,MAAM+gtB,IACzB/+pB,GAAMm+W,GAAS5xP,MACfk2J,GAAUziR,GAAIyiR,QACdy5F,GAAUl8W,GAAIk8W,QACdqB,GAAWv9W,GAAIu9W,SACVvmQ,GAAI,EAAGA,GAAIklQ,GAASllQ,KAAK,CAChC,GAAIA,GAAIvqL,IAAO3iC,EAAQ,EACpBm0d,KAAaA,GAAW,KAAKj5d,KAAK,CAACqC,KAAM,mBAAoB+gF,IAAKA,GAAK/6E,EAAG6ud,GAAUllQ,KACrF,MAGF,QADIzqM,GAAQyxc,EAAUhnQ,GAAI/gN,EACjByrK,GAAI,EAAGA,GAAI+gN,GAAS/gN,KAAK,CACV,GAAlBx8K,EAAIqnB,GAAQm1J,IACZx8K,EAAIqnB,GAAQm1J,IAAKt5F,IAEhB61Y,KAAaA,GAAW,KAAKj5d,KAAK,CAACqC,KAAM,YAAaolC,IAAKA,GAAK27C,IAAKA,GAAK/6E,EAAGo1X,GAAU/gN,KAC5F,IAAI08S,GAAOb,IAAYA,GAAS77S,IAChC,GAAI08S,GAAM,CACR,IAAIC,IAAe9xc,GAAQm1J,IAAKzrK,EAAS,EAAGuyO,GAAO01O,GAAUG,IACjD,MAAR71O,IAAiBA,IAAQ41O,IAAqC,GAA7BF,GAAUG,GAAa,IAC1DH,GAAUG,IAAcD,GACxBF,GAAUG,GAAa,GAAK,GACnB71O,IAAQ41O,IACjBF,GAAUG,GAAa,OAK/BL,GAAUv7F,GACVr6S,IAAO+1Y,GAASG,SAGlB,QADIC,IAAe9xb,GAAM,GAAKx2B,EAAO4+a,GAAU,EACxCmpC,EAASO,IAAoC,GAAjBr5d,EAAI84d,MAAkBnpC,KACrDA,KAAYopC,KAAaA,GAAW,KAAKj5d,KAAK,CAACqC,KAAM,UAAWolC,IAAKA,GAAKp/B,EAAGwnb,KACjFzsW,KAQF,QALIo2Y,GAAW,IAAIC,GAASxod,EAAOnM,EAAQ5E,EAAK+4d,IAAWS,IAAY,EAK9DugT,GAAM,GAAIvgT,IAAaugT,GAAM/gT,GAAU54d,OAAQ25wB,IAAO,EACrC,MAAlB/gT,GAAU+gT,KAAgB/gT,GAAU+gT,GAAM,GAAKn1wB,IAAU40d,IAAY,GAC7E,OAAIA,IA6BN,YAA0Bx5d,EAAKg5d,EAAW55D,GACnCp/Z,EAAI+4d,WAAY/4d,EAAI+4d,SAAW,IACpC,QAAS/vd,EAAI,EAAGywd,EAAO,GAAIzwd,EAAIhJ,EAAIA,IAAII,OAAQ4I,IAAK,CAClD,IAAIk6E,GAAMljF,EAAIA,IAAIgJ,GAClB,IAAIywd,EAAKv2Y,IACTu2Y,GAAKv2Y,KAAO,EAEZ,QADIzjE,GAAO2/Y,EAAMs6D,OAAOx2Y,IAAM62U,GAAU,KAC/Bl+T,GAAI,EAAGA,GAAIp8E,GAAK4nN,MAAMk2J,QAAS1hS,KAAK,CAC3C,IAA+B+wT,GAAWosE,GAA/Bhwd,EAAI6yF,IAAK77F,EAAI+Q,MAAkC,GAC1C,MAAZ67Y,MAAsBntY,GAAK4nN,MAAMgxP,UAAY54c,GAAK4nN,MAAMgxP,SAASx8X,KAAM+wT,OACtEmN,KAAYA,GAAUq+D,GAAc34c,GAAK4nN,SAASxrI,IAAK+wT,IAE1DmN,IAAW/5Z,EAAI+4d,SAAS/oO,QAAQ,CAAC7tP,KAAM,oBAAqB+gF,IAAKA,GAAKm1Y,SAAUt+D,OAzCrE4/D,CAAiBL,GAAUN,GAAW55D,GAEhDk6D,GA9D0CM,CAAWx6D,KAwOpD,IAAIosE,GAAU,kBAkHxB,IAAInQ,GAA8B,SAAUL,GAC1C,WAAuBC,EAAaC,QACf,IAAdA,IAAuBA,EAAYD,GAExC,IAAI77D,EAAQ67D,EAAYx7c,MAAK,GAAKzf,GAAMu5d,GAASrgd,IAAIkmZ,GAAQ/3Y,GAAQ4zc,EAAY5zc,OAAM,GACnFkxT,GAAOv4U,GAAIk6d,YAAYe,EAAY/3Y,IAAM77D,GAAO6zc,EAAUh4Y,IAAM77D,IAChEw7V,GAAMo4G,EAAYx7c,KAAK,GACvBmyC,GAAQ5xD,GAAI26d,YAAYpiJ,IAAMnxU,OAAO,SAAU03D,IAAK,OAAOA,IAAKo8Z,EAAUh4Y,IAAM77D,KAGpFuqC,GAAMo+L,QAAQkrO,EAAUh4Y,IAAM77D,IAC9B,IAAIo0c,GAAS7pa,GAAM5xD,IAAI,SAAUkjF,IAC/B,IAAIkhM,GAAOg7I,EAAMs6D,OAAOx2Y,IAAMzgB,GAAOygB,GAAM77D,GAAQ,EACnD,OAAO,IAAIq0c,GAAe74G,GAAI5gW,QAAQwgD,IAAOogT,GAAI5gW,QAAQwgD,GAAO2hN,GAAKnrQ,QAAQowC,SAE/E2xa,EAAU/sc,KAAK5zB,KAAMohe,GAAO,GAAGE,MAAOF,GAAO,GAAGG,IAAKH,IAIrDphe,KAAK4ge,YAAcA,EAInB5ge,KAAK6ge,UAAYA,EAGnB,OAAKF,IAAYK,EAAc1gd,UAAYqgd,IAC3CK,EAAc3gd,UAAYxa,OAAOm8D,OAAQ2+Z,GAAaA,EAAUtgd,YACxCvgB,YAAckhe,EAEtCA,EAAc3gd,UAAU1a,IAAM,SAAc6iX,EAAKrpV,GAC/C,IAAIyhc,GAAcp4G,EAAI5gW,QAAQuX,EAAQx5B,IAAI3F,KAAK4ge,YAAY/3Y,MACvDg4Y,GAAYr4G,EAAI5gW,QAAQuX,EAAQx5B,IAAI3F,KAAK6ge,UAAUh4Y,MACvD,GAAI24Y,GAAaZ,KAAgBY,GAAaX,KAAcY,GAAYb,GAAaC,IAAY,CAC/F,IAAIa,GAAe1he,KAAK4ge,YAAYx7c,MAAK,IAAOw7c,GAAYx7c,MAAK,GACjE,OAAIs8c,IAAgB1he,KAAK2he,iBACdX,EAAcY,aAAahB,GAAaC,IAC1Ca,IAAgB1he,KAAK6he,iBACnBb,EAAcc,aAAalB,GAAaC,IAExC,IAAIG,EAAcJ,GAAaC,IAE5C,OAAOkB,WAAsBnB,GAAaC,KAM5CG,EAAc3gd,UAAUzB,QAAU,WAIhC,QAHImmZ,EAAQ/ka,KAAK4ge,YAAYx7c,MAAK,GAAKzf,EAAMu5d,GAASrgd,IAAIkmZ,GAAQ/3Y,GAAQhtB,KAAK4ge,YAAY5zc,OAAM,GAC7FkxT,GAAOv4U,EAAIk6d,YAAY7/d,KAAK4ge,YAAY/3Y,IAAM77D,GAAOhtB,KAAK6ge,UAAUh4Y,IAAM77D,IAC1Eoyc,GAAO,GAAItzd,GAAO,GACbohC,GAAMgxS,GAAK/vN,IAAKjhF,GAAMgxS,GAAKxU,OAAQx8R,KAAO,CAEjD,QADI80b,GAAa,GACRp+c,GAAQspB,GAAMvnC,EAAI+Q,MAAQwnU,GAAK9uQ,KAAMzQ,GAAMu/Q,GAAK9uQ,KAAMzQ,GAAMu/Q,GAAK5uQ,MAAO3Q,KAAO/6C,KAAS,CAC/F,IAAIilE,GAAMljF,EAAIA,IAAIie,IAClB,IAAKw7c,GAAKv2Y,IAAM,CACdu2Y,GAAKv2Y,KAAO,EACZ,IAAIo5Y,GAAWt8d,EAAI65d,SAAS32Y,IAAMkhM,GAAOg7I,EAAMs6D,OAAOx2Y,IAClDq5Y,GAAYhkJ,GAAK9uQ,KAAO6yZ,GAAS7yZ,KAAM+yZ,GAAaF,GAAS3yZ,MAAQ4uQ,GAAK5uQ,MAC9E,GAAI4yZ,GAAY,GAAKC,GAAa,EAAG,CACnC,IAAIn1P,GAAQ+8C,GAAK/8C,MACbk1P,GAAY,IAAKl1P,GAAQo1P,GAAcp1P,GAAO,EAAGk1P,KACjDC,GAAa,IAAKn1P,GAAQo1P,GAAcp1P,GAAOA,GAAMk2J,QAAUi/F,GAAYA,KAC9Cp4M,GAAjC65hB,GAAax0uB,KAAO8uQ,GAAK9uQ,KAAe26M,GAAKjiR,KAAKw6d,cAAct1P,IAClD+8C,GAAKjiR,KAAKk6D,OAAOgrK,GAAO+8C,GAAKnrQ,SAE7C,GAAIqjd,GAAS9zW,IAAM+vN,GAAK/vN,KAAO8zW,GAASv4J,OAASwU,GAAKxU,OAAQ,CAC5D,IAAIm6e,GAAUthV,GAAQx4M,GAAK/8C,MAAO,UAAW9/N,KAAKulC,IAAIwvb,GAASv4J,OAAQwU,GAAKxU,QAAUx8T,KAAKsB,IAAIyzd,GAAS9zW,IAAK+vN,GAAK/vN,MACnF47J,GAA3Bk4M,GAAS9zW,IAAM+vN,GAAK/vN,IAAc47J,GAAKjiR,KAAKw6d,cAAcuhV,IAChD95hB,GAAKjiR,KAAKk6D,OAAO6hvB,GAAS95hB,GAAKnrQ,SAE/Cojd,GAAWv8d,KAAKskR,KAGpBj+Q,GAAKrG,KAAKs/Z,EAAMtmW,MAAMvxB,IAAK63B,KAAKy9Z,OAAcR,MAGhD,IAAIS,GAAWzie,KAAK6he,kBAAoB7he,KAAK2he,iBAAmB58D,EAAQj5Z,GACxE,OAAO,IAAI42d,EAAMF,OAAcC,IAAW,EAAG,IAG/CzB,EAAc3gd,UAAUkL,QAAU,SAAkBumK,EAAIlzK,QACrC,IAAZA,IAAqBA,EAAU8jd,SAGpC,QADIC,GAAU7wS,EAAG7kI,MAAMlnD,OAAQq7d,GAASphe,KAAKohe,OACpCzyd,GAAI,EAAGA,GAAIyyd,GAAOr7d,OAAQ4I,KAAK,CACtC,IAAI8xG,GAAM2gX,GAAOzyd,IACb2yd,GAAQ7gX,GAAI6gX,MACZC,GAAM9gX,GAAI8gX,IACVpic,GAAU2yJ,EAAG3yJ,QAAQvwB,MAAM+zd,IAC/B7wS,EAAGvmK,QAAQ4T,GAAQx5B,IAAI27d,GAAMz4Y,KAAM1pD,GAAQx5B,IAAI47d,GAAI14Y,KAAMl6E,GAAI+zd,QAAc9jd,GAE7E,IAAIgkd,GAAMjC,EAAU0xT,SAASvgmB,EAAG02L,IAAI5gW,QAAQkqK,EAAG3yJ,QAAQvwB,MAAM+zd,IAASh9d,IAAI3F,KAAKytI,MAAM,GACjFm1V,IAAO9wS,EAAG+wS,aAAaD,KAG7B5B,EAAc3gd,UAAUw8B,YAAc,SAAsBi1I,EAAI1sK,GAC9DplB,KAAKurB,QAAQumK,EAAI,IAAI4wS,EAAMF,OAAcp9c,GAAO,EAAG,KAGrD47c,EAAc3gd,UAAUyid,YAAc,SAAsBl9d,GAG1D,QAFIm/Z,EAAQ/ka,KAAK4ge,YAAYx7c,MAAK,GAAKzf,GAAMu5d,GAASrgd,IAAIkmZ,GAAQ/3Y,GAAQhtB,KAAK4ge,YAAY5zc,OAAM,GAC7FuqC,GAAQ5xD,GAAI26d,YAAY36d,GAAIk6d,YAAY7/d,KAAK4ge,YAAY/3Y,IAAM77D,GAAOhtB,KAAK6ge,UAAUh4Y,IAAM77D,KACtFre,GAAI,EAAGA,GAAI4oD,GAAMxxD,OAAQ4I,KAC9B/I,EAAEm/Z,EAAMs6D,OAAO9na,GAAM5oD,KAAKqe,GAAQuqC,GAAM5oD,MAM9Cqyd,EAAc3gd,UAAUwhd,eAAiB,WACvC,IAAIkB,EAAY/ie,KAAK4ge,YAAYh9c,OAAM,GAAKo/c,EAAUhje,KAAK6ge,UAAUj9c,OAAM,GAC3E,QAAI1W,KAAKulC,IAAIswb,EAAWC,GAAW,IAG5B91d,KAAKsB,IAFIu0d,EAAY/ie,KAAK4ge,YAAYqC,UAAUj2P,MAAM2vP,QAC/CqG,EAAUhje,KAAK6ge,UAAUoC,UAAUj2P,MAAM2vP,UAChB38d,KAAK6ge,UAAUz7c,MAAK,GAAIg5c,YAMjE4C,EAAcc,aAAe,SAAuBlB,EAAaC,QAC5C,IAAdA,IAAuBA,EAAYD,GAExC,IAAIj7d,GAAMu5d,GAASrgd,IAAI+hd,EAAYx7c,MAAK,IAAM4H,GAAQ4zc,EAAY5zc,OAAM,GACpE8zc,GAAan7d,GAAI65d,SAASoB,EAAY/3Y,IAAM77D,IAAQ+zc,GAAWp7d,GAAI65d,SAASqB,EAAUh4Y,IAAM77D,IAC5Fw7V,GAAMo4G,EAAYx7c,KAAK,GAC3B,OAAI07c,GAAW3yW,KAAO4yW,GAAS5yW,KACzB2yW,GAAW3yW,IAAM,IACjByyW,EAAcp4G,GAAI5gW,QAAQoF,GAAQrnB,GAAIA,IAAIm7d,GAAW1xZ,QACrD2xZ,GAASr3J,OAAS/jU,GAAI4E,SACtBs2d,EAAYr4G,GAAI5gW,QAAQoF,GAAQrnB,GAAIA,IAAIA,GAAI+Q,OAAS/Q,GAAI4E,OAAS,GAAKw2d,GAASzxZ,MAAQ,OAExFyxZ,GAAS5yW,IAAM,IACf0yW,EAAYr4G,GAAI5gW,QAAQoF,GAAQrnB,GAAIA,IAAIo7d,GAAS3xZ,QACjD0xZ,GAAWp3J,OAAS/jU,GAAI4E,SACxBq2d,EAAcp4G,GAAI5gW,QAAQoF,GAAQrnB,GAAIA,IAAIA,GAAI+Q,OAAS/Q,GAAI4E,OAAS,GAAKu2d,GAAWxxZ,MAAQ,MAE3F,IAAI0xZ,EAAcJ,EAAaC,IAMxCG,EAAc3gd,UAAUshd,eAAiB,WACvC,IAAIh8d,EAAMu5d,GAASrgd,IAAI7e,KAAK4ge,YAAYx7c,MAAK,IAAM4H,EAAQhtB,KAAK4ge,YAAY5zc,OAAM,GAC9Ek2c,GAAav9d,EAAIg6d,SAAS3/d,KAAK4ge,YAAY/3Y,IAAM77D,GACjDm2c,GAAWx9d,EAAIg6d,SAAS3/d,KAAK6ge,UAAUh4Y,IAAM77D,GACjD,QAAI9f,KAAKulC,IAAIywb,GAAYC,IAAY,IAG9Bj2d,KAAKsB,IAFM00d,GAAalje,KAAK4ge,YAAYqC,UAAUj2P,MAAMk2J,QAChDigG,GAAWnje,KAAK6ge,UAAUoC,UAAUj2P,MAAMk2J,UACfv9X,EAAI+Q,OAGjDsqd,EAAc3gd,UAAU+id,GAAK,SAAa/ja,GACxC,OAAOA,aAAiB2ha,GAAiB3ha,EAAMuha,YAAY/3Y,KAAO7oF,KAAK4ge,YAAY/3Y,KACjFxpB,EAAMwha,UAAUh4Y,KAAO7oF,KAAK6ge,UAAUh4Y,KAM1Cm4Y,EAAcY,aAAe,SAAuBhB,EAAaC,QAC5C,IAAdA,IAAuBA,EAAYD,GAExC,IAAIj7d,GAAMu5d,GAASrgd,IAAI+hd,EAAYx7c,MAAK,IAAM4H,GAAQ4zc,EAAY5zc,OAAM,GACpE8zc,GAAan7d,GAAI65d,SAASoB,EAAY/3Y,IAAM77D,IAAQ+zc,GAAWp7d,GAAI65d,SAASqB,EAAUh4Y,IAAM77D,IAC5Fw7V,GAAMo4G,EAAYx7c,KAAK,GAC3B,OAAI07c,GAAW1xZ,MAAQ2xZ,GAAS3xZ,MAC1B0xZ,GAAW1xZ,KAAO,IAClBwxZ,EAAcp4G,GAAI5gW,QAAQoF,GAAQrnB,GAAIA,IAAIm7d,GAAW3yW,IAAMxoH,GAAI+Q,SAC/Dqqd,GAASzxZ,MAAQ3pE,GAAI+Q,QACrBmqd,EAAYr4G,GAAI5gW,QAAQoF,GAAQrnB,GAAIA,IAAIA,GAAI+Q,OAASqqd,GAAS5yW,IAAM,GAAK,OAEzE4yW,GAAS3xZ,KAAO,IAChByxZ,EAAYr4G,GAAI5gW,QAAQoF,GAAQrnB,GAAIA,IAAIo7d,GAAS5yW,IAAMxoH,GAAI+Q,SAC3Doqd,GAAWxxZ,MAAQ3pE,GAAI+Q,QACvBkqd,EAAcp4G,GAAI5gW,QAAQoF,GAAQrnB,GAAIA,IAAIA,GAAI+Q,OAASoqd,GAAW3yW,IAAM,GAAK,MAE5E,IAAI6yW,EAAcJ,EAAaC,IAGxCG,EAAc3gd,UAAU6pR,OAAS,WAC/B,MAAO,CAACpiS,KAAM,OAAQmG,OAAQjO,KAAK4ge,YAAY/3Y,IAAKu0Q,KAAMp9V,KAAK6ge,UAAUh4Y,MAG3Em4Y,EAAc+3S,SAAW,SAAmBvwZ,EAAKy4G,GAC/C,OAAO,IAAID,EAAcx4G,EAAI5gW,QAAQq5c,EAAKhzd,QAASu6W,EAAI5gW,QAAQq5c,EAAK7jI,QAItE4jI,EAAch/Z,OAAS,SAAiBwmT,EAAK04G,EAAYC,IACvD,YAAkB,IAAbA,KAAsBA,GAAWD,GAE/B,IAAIF,EAAcx4G,EAAI5gW,QAAQs5c,GAAa14G,EAAI5gW,QAAQu5c,MAGhEH,EAAc3gd,UAAUgjd,YAAc,WAA0B,OAAO,IAAIC,GAAatje,KAAK4ge,YAAY/3Y,IAAK7oF,KAAK6ge,UAAUh4Y,MAEtHm4Y,EAxMyB,CAyMhCL,IAEFK,GAAc3gd,UAAU4zT,SAAU,EAElC0sJ,UAAiB,OAAQK,IAEzB,IAAIsC,GAAe,SAAsBr1d,EAAQmvV,GAC/Cp9V,KAAKiO,OAASA,EACdjO,KAAKo9V,KAAOA,GA8Ud,YAA2BlzV,EAAOkkO,EAAUtuK,GAC1C,OAAIA,EAAUsja,GAAGl5d,EAAM41D,aACnBsuK,GAAYA,EAASlkO,EAAM4nL,GAAG+wS,aAAa/ia,GAAW6na,mBACnD,GAGT,YAAexhG,EAAM90U,GACnB,OAAO,SAAUnnD,EAAOkkO,EAAU/rN,GAChC,IAAIugd,GAAM14d,EAAM41D,UAChB,GAAI8ia,cAAe5B,GACjB,OAAO8iV,GAAkB55yB,EAAOkkO,EAAUuyP,QAAeiC,GAAI/B,UAAWxva,IAE1E,GAAY,SAAR80U,IAAoBy8F,GAAInjZ,MAAS,OAAO,EAC5C,IAAIn1C,GAAMy5wB,GAAY1hyB,EAAM8jX,EAAM90U,GAClC,GAAW,MAAP/mB,GAAe,OAAO,EAC1B,GAAY,SAAR67V,EACF,OAAO29a,GAAkB55yB,EAAOkkO,EAAUuyP,QAAez2d,EAAMs+W,IAAI5gW,QAAQg7c,GAAIxlI,KAAO/rS,GAAMA,IAE5F,IAAwEujvB,GAApEoP,GAAQ95yB,EAAMs+W,IAAI5gW,QAAQ0iB,IAAMm0wB,GAAQ7+U,GAASokV,GAAO79a,EAAM90U,GAClE,OAAaujvB,GAAT6J,GAAkB99U,QAAe89U,GAAO,GACnCptvB,EAAM,EAAcsva,QAAez2d,EAAMs+W,IAAI5gW,QAAQo8xB,GAAMh4vB,QAAO,KAAM,GACjE20a,QAAez2d,EAAMs+W,IAAI5gW,QAAQo8xB,GAAMlmwB,OAAM,IAAM,GAC5DgmwB,GAAkB55yB,EAAOkkO,EAAUwmkB,KAKhD,YAAoBzua,EAAM90U,GACxB,OAAO,SAAUnnD,EAAOkkO,EAAU/rN,GAChC,IAAIugd,GAAM14d,EAAM41D,UAChB,KAAM8ia,cAAe5B,IAAgB,CACnC,IAAI12b,GAAMy5wB,GAAY1hyB,EAAM8jX,EAAM90U,GAClC,GAAW,MAAP/mB,GAAe,OAAO,EAC1Bs4b,GAAM,IAAI5B,GAAc92d,EAAMs+W,IAAI5gW,QAAQ0iB,KAE5C,IAAIq5b,GAAQ/D,GAASgD,GAAI/B,UAAW16F,EAAM90U,GAC1C,QAAKsya,IACEmgV,GAAkB55yB,EAAOkkO,EAAU,IAAI4yP,GAAc4B,GAAIhC,YAAa+C,MAIjF,YAA6Bz5d,EAAOkkO,GAClC,IAAIw0P,EAAM14d,EAAM41D,UAChB,KAAM8ia,aAAe5B,IAAkB,OAAO,EAC9C,GAAI5yP,EAAU,CACZ,IAAIt8C,EAAK5nL,EAAM4nL,GAAImynB,EAAc5/U,GAAen6d,EAAM4iO,QAAQi9C,KAAKu4M,gBAAgB1jd,QACnFgkd,EAAIE,YAAY,SAAU/4M,GAAMlhM,IACzBkhM,GAAKnrQ,QAAQwkd,GAAG6gV,IACjBnynB,EAAGvmK,QAAQumK,EAAG3yJ,QAAQx5B,IAAIkjF,GAAM,GAAIipG,EAAG3yJ,QAAQx5B,IAAIkjF,GAAMkhM,GAAKg1M,SAAW,GAChE,IAAI2D,EAAMuhV,EAAa,EAAG,MAErCnynB,EAAG65lB,YAAcv9iB,EAASt8C,GAEhC,OAAO,EA6FT,YAAqBzvK,EAAM8jX,EAAM90U,GAC/B,KAAMhvC,EAAKnY,MAAM41D,qBAAqBiia,IAAkB,OAAO,KAG/D,QADI4B,EADMthd,EAAKnY,MAAM41D,UACL6ja,MACPn4d,GAAIm4d,EAAMnsY,MAAQ,EAAGhsF,IAAK,EAAGA,KAAK,CACzC,IAAI6wW,GAASsnH,EAAMv+c,KAAK5Z,IACxB,IADoC6lD,EAAM,EAAIsya,EAAM//c,MAAMpY,IAAKm4d,EAAMo4S,WAAWvwwB,OAClE6lD,EAAM,EAAI,EAAIgrT,GAAO+hH,YAAe,OAAO,KACzD,GAAkC,QAA9B/hH,GAAOv0W,KAAKy7d,KAAKzG,WAAqD,eAA9BzgH,GAAOv0W,KAAKy7d,KAAKzG,UAA4B,CACvF,IAAIoK,GAAUvD,EAAM33a,OAAOxgD,IAE3B,OAAO6W,EAAK85wB,eADS,QAARh2Z,EAAkB90U,EAAM,EAAI,OAAS,KAASA,EAAM,EAAI,QAAU,QAC1C61a,GAAU,MAGnD,OAAO,KAsHT,YAAsBh9d,GACpB,IAEIg0U,GAFA0kJ,EAAM14d,EAAM41D,UAAW2ja,EAj5B7B,YAAuBv5d,GACrB,IAAI04d,EAAM14d,EAAM41D,UAChB,OAAI8ia,EAAIhC,YACCgC,EAAIhC,YAAY/3Y,IAAM+5Y,EAAI/B,UAAUh4Y,IAAM+5Y,EAAIhC,YAAcgC,EAAI/B,UAC9D+B,EAAIx9c,MAAwC,QAAhCw9c,EAAIx9c,KAAKtd,KAAKy7d,KAAKzG,UACjC8F,EAAImB,QAENH,GAAWhB,EAAIe,QAGxB,YAAkBF,GAChB,QAAS3lb,EAAQ2lb,EAAKR,UAAWp6Y,EAAM46Y,EAAK56Y,IAAK/qC,EAAOA,EAAQA,EAAMi0Q,WAAYlpO,IAAO,CACvF,IAAIoqK,EAAOn1M,EAAMh2C,KAAKy7d,KAAKzG,UAC3B,GAAY,QAAR7pO,GAA0B,eAARA,EAAyB,OAAOwwO,EAAKj7G,IAAI5gW,QAAQihE,GAEzE,QAAS78B,EAASy3a,EAAKO,WAAY8gU,GAAQrhU,EAAK56Y,IAAK78B,EAAQA,EAASA,EAAOi4a,UAAW6gU,KAAS,CAC/F,IAAIof,GAASl4vB,EAAOlkD,KAAKy7d,KAAKzG,UAC9B,GAAc,QAAVonV,IAA8B,eAAVA,GAA2B,OAAOzgV,EAAKj7G,IAAI5gW,QAAQk9wB,GAAQ94uB,EAAO+ya,WAV5DmF,CAAStB,EAAIe,OA04BXQ,CAAcj6d,GAC5C66Z,EAAQ0+D,EAAKr+c,MAAK,GAAKg/c,EAAaX,EAAKz2c,OAAM,GAAKrnB,GAAMu5d,GAASrgd,IAAIkmZ,GAE3E,OACI7mF,GADA0kJ,aAAe5B,GACRr7d,GAAIk6d,YAAY+C,EAAIhC,YAAY/3Y,IAAMu7Y,EAAYxB,EAAI/B,UAAUh4Y,IAAMu7Y,GAEtEz+d,GAAI65d,SAASiE,EAAK56Y,IAAMu7Y,IAC9BA,WAAaA,EAClBlmJ,GAAKv4U,IAAMA,GACXu4U,GAAK6mF,MAAQA,EACN7mF,GAIT,YAAmBpsJ,EAAIrxE,EAAK9hD,GAC1B,IAAIh5D,EAAM86G,EAAI96G,IACVy+d,EAAa3jX,EAAI2jX,WACjBr/D,GAAQtkT,EAAIskT,MAEZggE,GAAYpma,EAAM,GAAI,EAAK,GAv1BjC,YAAwBh5D,EAAKo/Z,EAAOpmW,GAElC,QADImna,EAAazB,GAAet/D,EAAMj9Z,KAAKglO,QAAQi5P,YAC1C74b,EAAM,EAAGA,EAAMvnC,EAAI4E,OAAQ2iC,IAChC,GAAI63X,EAAMs6D,OAAO15d,EAAIA,IAAIg5D,EAAMzxB,EAAMvnC,EAAI+Q,QAAQ5O,MAAQg+d,EACvD,OAAO,EACb,OAAO,GAm1BHq+U,CAAex+yB,EAAKo/Z,GAAOpmW,EAAMoma,MACjCA,GAAmB,GAAPpma,GAAYA,GAAOh5D,EAAI+Q,MAAQ,KAAO,GAEtD,QAASw2B,GAAM,EAAGA,GAAMvnC,EAAI4E,OAAQ2iC,KAAO,CACzC,IAAItpB,GAAQspB,GAAMvnC,EAAI+Q,MAAQioD,EAE9B,GAAIA,EAAM,GAAKA,EAAMh5D,EAAI+Q,OAAS/Q,EAAIA,IAAIie,GAAQ,IAAMje,EAAIA,IAAIie,IAAQ,CACtE,IAAIilE,GAAMljF,EAAIA,IAAIie,IAAQmmQ,GAAOg7I,GAAMs6D,OAAOx2Y,IAC9CipG,EAAGozS,cAAcpzS,EAAG3yJ,QAAQx5B,IAAIy+d,EAAav7Y,IAAM,KAClC07Y,GAAWx6M,GAAK/8C,MAAOruK,EAAMh5D,EAAIg6d,SAAS92Y,MAE3D37C,IAAO68O,GAAK/8C,MAAM2vP,QAAU,MACvB,CACL,IAAI70d,GAAoB,MAAbi9d,GAAoBV,GAAet/D,GAAMj9Z,KAAKglO,QAAQi9C,KAC3Dg7I,GAAMs6D,OAAO15d,EAAIA,IAAIie,GAAQmhd,KAAYj9d,KAC3Cg9xB,GAAQn/xB,EAAI46d,WAAWrzb,GAAKyxB,EAAKomW,IACrCjzO,EAAGtzG,OAAOszG,EAAG3yJ,QAAQx5B,IAAIy+d,EAAa0gU,IAAQh9xB,GAAKw6d,kBAGvD,OAAOxwS,EAKT,YAAyB5nL,EAAOkkO,GAC9B,IAAKs1P,GAAUx5d,GAAU,OAAO,EAChC,GAAIkkO,EAAU,CACZ,IAAI8vG,EAAO2lJ,GAAa35d,GACxBkkO,EAASg2kB,GAAUl6yB,EAAM4nL,GAAIosJ,EAAMA,EAAK9uQ,OAE1C,OAAO,EAKT,YAAwBllE,EAAOkkO,GAC7B,IAAKs1P,GAAUx5d,GAAU,OAAO,EAChC,GAAIkkO,EAAU,CACZ,IAAI8vG,EAAO2lJ,GAAa35d,GACxBkkO,EAASg2kB,GAAUl6yB,EAAM4nL,GAAIosJ,EAAMA,EAAK5uQ,QAE1C,OAAO,EAGT,YAAsBwiH,EAAIrxE,EAAK9hD,GAM7B,QALIh5D,EAAM86G,EAAI96G,IACVo/Z,EAAQtkT,EAAIskT,MACZq/D,GAAa3jX,EAAI2jX,WAEjBigV,GAAWvynB,EAAG3yJ,QAAQmsQ,KAAKvlS,OACtBmnC,GAAM,EAAGA,GAAMvnC,EAAI4E,QAAS,CACnC,IAAIqZ,GAAQspB,GAAMvnC,EAAI+Q,MAAQioD,EAAKkqB,GAAMljF,EAAIA,IAAIie,IAAQmmQ,GAAOg7I,EAAMs6D,OAAOx2Y,IAE7E,GAAKlqB,EAAM,GAAKh5D,EAAIA,IAAIie,GAAQ,IAAMilE,IAASlqB,EAAMh5D,EAAI+Q,MAAQ,GAAK/Q,EAAIA,IAAIie,GAAQ,IAAMilE,GAC1FipG,EAAGozS,cAAcpzS,EAAG3yJ,QAAQvwB,MAAMy1yB,IAAU1+yB,IAAIy+d,GAAav7Y,IAAM,KAClDu5Y,GAAcr4M,GAAK/8C,MAAOruK,EAAMh5D,EAAIg6d,SAAS92Y,UACzD,CACL,IAAI77D,GAAQ8kK,EAAG3yJ,QAAQvwB,MAAMy1yB,IAAU1+yB,IAAIy+d,GAAav7Y,IACxDipG,EAAG3yK,OAAO6N,GAAOA,GAAQ+8P,GAAKg1M,UAEhC7xb,IAAO68O,GAAK/8C,MAAM2vP,SAMtB,YAAsBzyd,EAAOkkO,GAC3B,IAAKs1P,GAAUx5d,GAAU,OAAO,EAChC,GAAIkkO,EAAU,CACZ,IAAI8vG,EAAO2lJ,GAAa35d,GAAQ4nL,EAAK5nL,EAAM4nL,GAC3C,GAAiB,GAAbosJ,EAAK9uQ,MAAa8uQ,EAAK5uQ,OAAS4uQ,EAAKv4U,IAAI+Q,MAAS,OAAO,EAC7D,QAAS/H,EAAIuvU,EAAK5uQ,MAAQ,EACxB+1Z,GAAavzS,EAAIosJ,EAAMvvU,GACnBA,GAAKuvU,EAAK9uQ,KAFczgE,IAG5BuvU,EAAK6mF,MAAQ7mF,EAAKkmJ,WAAatyS,EAAG02L,IAAI62G,OAAOnhJ,EAAKkmJ,WAAa,GAAKtyS,EAAG02L,IACvEtqC,EAAKv4U,IAAMu5d,GAASrgd,IAAIq/T,EAAK6mF,OAE/B32L,EAASt8C,GAEX,OAAO,EAWT,YAAgBA,EAAIrxE,EAAKvzE,GAMvB,QALIvnC,EAAM86G,EAAI96G,IACVy+d,EAAa3jX,EAAI2jX,WACjBr/D,GAAQtkT,EAAIskT,MAEZ6gE,GAASxB,EACJz1d,GAAI,EAAGA,GAAIu+B,EAAKv+B,KAAOi3d,IAAU7gE,GAAMtmW,MAAM9vD,IAAGowd,SACzD,IAAIxna,GAAQ,GAAIsua,GAAS34b,EAAM,GAAI,EAAK,GAf1C,YAAqBvnC,EAAKo/Z,EAAO73X,GAE/B,QADI44b,EAAazB,GAAet/D,EAAMj9Z,KAAKglO,QAAQi5P,YAC1Cpna,EAAM,EAAGA,EAAMh5D,EAAI+Q,MAAOioD,IAC/B,GAAIomW,EAAMs6D,OAAO15d,EAAIA,IAAIg5D,EAAMzxB,EAAMvnC,EAAI+Q,QAAQ5O,MAAQg+d,EACvD,OAAO,EACb,OAAO,GAWHE,CAAYrge,EAAKo/Z,GAAO73X,EAAM24b,MAC9BA,GAAgB,GAAP34b,GAAYA,GAAOvnC,EAAI4E,OAAS,KAAO,GACpD,QAASo0D,GAAM,EAAG/6C,GAAQje,EAAI+Q,MAAQw2B,EAAKyxB,GAAMh5D,EAAI+Q,MAAOioD,KAAO/6C,KAEjE,GAAIspB,EAAM,GAAKA,EAAMvnC,EAAI4E,QAAU5E,EAAIA,IAAIie,KAAUje,EAAIA,IAAIie,GAAQje,EAAI+Q,OAAQ,CAC/E,IAAImyE,GAAMljF,EAAIA,IAAIie,IAAQopN,GAAQ+3L,GAAMs6D,OAAOx2Y,IAAKmkJ,MACpDl7C,EAAGozS,cAAcd,EAAav7Y,GAAK,KAAM05Y,GAAQv1P,GAAO,UAAWA,GAAM2vP,QAAU,IACnFh+Z,IAAOquK,GAAMk2J,QAAU,MAClB,CACL,IAAIp7X,GAAiB,MAAV+9d,GAAiBxB,GAAet/D,GAAMj9Z,KAAKglO,QAAQi9C,KACxDg7I,GAAMs6D,OAAO15d,EAAIA,IAAIie,GAAQiid,GAASlge,EAAI+Q,QAAQ5O,KACxDyvD,GAAM9xD,KAAKqC,GAAKw6d,iBAGpBxwS,SAAGtzG,OAAOonZ,GAAQvB,GAAet/D,GAAMj9Z,KAAKglO,QAAQ5/L,IAAI80B,OAAO,KAAMzK,KAC9Du6H,EAKT,YAAsB5nL,EAAOkkO,GAC3B,IAAKs1P,GAAUx5d,GAAU,OAAO,EAChC,GAAIkkO,EAAU,CACZ,IAAI8vG,EAAO2lJ,GAAa35d,GACxBkkO,EAASu3P,GAAOz7d,EAAM4nL,GAAIosJ,EAAMA,EAAK/vN,MAEvC,OAAO,EAKT,YAAqBjkH,EAAOkkO,GAC1B,IAAKs1P,GAAUx5d,GAAU,OAAO,EAChC,GAAIkkO,EAAU,CACZ,IAAI8vG,EAAO2lJ,GAAa35d,GACxBkkO,EAASu3P,GAAOz7d,EAAM4nL,GAAIosJ,EAAMA,EAAKxU,SAEvC,OAAO,EAGT,YAAmB53I,EAAIrxE,EAAKvzE,GAM1B,QALIvnC,EAAM86G,EAAI96G,IACVo/Z,EAAQtkT,EAAIskT,MACZq/D,GAAa3jX,EAAI2jX,WAEjBwB,GAAS,EACJj3d,GAAI,EAAGA,GAAIu+B,EAAKv+B,KAAOi3d,IAAU7gE,EAAMtmW,MAAM9vD,IAAGowd,SACzD,IAAIuH,GAAUV,GAAS7gE,EAAMtmW,MAAMvxB,GAAK6xb,SAEpC4D,GAAU7wS,EAAG3yJ,QAAQmsQ,KAAKvlS,OAC9B+rL,EAAG3yK,OAAOymd,GAASxB,GAAYkC,GAAUlC,IAEzC,QAASzla,GAAM,EAAG/6C,GAAQspB,EAAMvnC,EAAI+Q,MAAOioD,GAAMh5D,EAAI+Q,MAAOioD,KAAO/6C,KAAS,CAC1E,IAAIilE,GAAMljF,EAAIA,IAAIie,IAClB,GAAIspB,EAAM,GAAK27C,IAAOljF,EAAIA,IAAIie,GAAQje,EAAI+Q,OAAQ,CAEhD,IAAIs2N,GAAQ+3L,EAAMs6D,OAAOx2Y,IAAKmkJ,MAC9Bl7C,EAAGozS,cAAcpzS,EAAG3yJ,QAAQvwB,MAAM+zd,IAASh9d,IAAIkjF,GAAMu7Y,IAAa,KAAM7B,GAAQv1P,GAAO,UAAWA,GAAM2vP,QAAU,IAClHh+Z,IAAOquK,GAAMk2J,QAAU,UACdh2V,EAAMvnC,EAAI+Q,OAASmyE,IAAOljF,EAAIA,IAAIie,GAAQje,EAAI+Q,OAAQ,CAE/D,IAAIqzQ,GAAOg7I,EAAMs6D,OAAOx2Y,IACpB9jB,GAAOglN,GAAKjiR,KAAKk6D,OAAOuga,GAAQx4M,GAAK/8C,MAAO,UAAW+8C,GAAK/8C,MAAM2vP,QAAU,GAAI5yM,GAAKnrQ,SACrF2nd,GAAS5ge,EAAI46d,WAAWrzb,EAAM,EAAGyxB,GAAKomW,GAC1CjzO,EAAGtzG,OAAOszG,EAAG3yJ,QAAQvwB,MAAM+zd,IAASh9d,IAAIy+d,GAAamC,IAASxha,IAC9DpG,IAAOorN,GAAK/8C,MAAMk2J,QAAU,IAOlC,YAAmBh5X,EAAOkkO,GACxB,IAAKs1P,GAAUx5d,GAAU,OAAO,EAChC,GAAIkkO,EAAU,CACZ,IAAI8vG,EAAO2lJ,GAAa35d,GAAQ4nL,EAAK5nL,EAAM4nL,GAC3C,GAAgB,GAAZosJ,EAAK/vN,KAAY+vN,EAAKxU,QAAUwU,EAAKv4U,IAAI4E,OAAU,OAAO,EAC9D,QAASoE,EAAIuvU,EAAKxU,OAAS,EACzB28J,GAAUv0S,EAAIosJ,EAAMvvU,GAChBA,GAAKuvU,EAAK/vN,IAFex/G,IAG7BuvU,EAAK6mF,MAAQ7mF,EAAKkmJ,WAAatyS,EAAG02L,IAAI62G,OAAOnhJ,EAAKkmJ,WAAa,GAAKtyS,EAAG02L,IACvEtqC,EAAKv4U,IAAMu5d,GAASrgd,IAAIq/T,EAAK6mF,OAE/B32L,EAASt8C,GAEX,OAAO,EAGT,YAAiBi4F,GACf,IAAI9pQ,EAAI8pQ,EAAKnrQ,QACb,OAAuB,GAAhBqB,EAAEm+c,YAAmBn+c,EAAE8xS,WAAW0yK,aAA0C,GAA3Bxkd,EAAE8xS,WAAWqsK,WA0BvE,YAAoBl0d,EAAOkkO,GACzB,IAAIw0P,EAAM14d,EAAM41D,UAChB,KAAM8ia,aAAe5B,KAAkB4B,EAAIhC,YAAY/3Y,KAAO+5Y,EAAI/B,UAAUh4Y,IAAO,OAAO,EAC1F,IAAIq1P,EAAO2lJ,GAAa35d,GACpBvE,EAAMu4U,EAAKv4U,IACf,GA5BF,YAA+B86G,EAAKy9N,GAOlC,QANIxnU,EAAQ+pG,EAAI/pG,MACZnM,EAASk2G,EAAIl2G,OACb5E,EAAM86G,EAAI96G,IAEVghe,GAAWzoJ,EAAK/vN,IAAMz3G,EAAQwnU,EAAK9uQ,KAAMw3Z,GAAYD,GACrDE,IAAe3oJ,EAAKxU,OAAS,GAAKhzT,EAAQwnU,EAAK9uQ,KAAM03Z,GAAaH,IAAYzoJ,EAAK5uQ,MAAQ4uQ,EAAK9uQ,KAAO,GAClGzgE,GAAIuvU,EAAK/vN,IAAKx/G,GAAIuvU,EAAKxU,OAAQ/6T,KAAK,CAC3C,GAAIuvU,EAAK9uQ,KAAO,GAAKzpE,EAAIihe,KAAcjhe,EAAIihe,GAAY,IACnD1oJ,EAAK5uQ,MAAQ54D,GAAS/Q,EAAImhe,KAAenhe,EAAImhe,GAAa,GAAM,OAAO,EAC3EF,IAAalwd,EAAOowd,IAAcpwd,EAEpC,QAAS8owB,GAAMthc,EAAK9uQ,KAAMowsB,GAAMthc,EAAK5uQ,MAAOkwsB,KAAO,CACjD,GAAIthc,EAAK/vN,IAAM,GAAKxoH,EAAIghe,KAAahhe,EAAIghe,GAAWjwd,IAChDwnU,EAAKxU,OAASn/T,GAAU5E,EAAIkhe,KAAgBlhe,EAAIkhe,GAAcnwd,GAAU,OAAO,EACnFiwd,KAAYE,KAEd,OAAO,EAWHE,CAAsBphe,EAAKu4U,GAAS,OAAO,EAC/C,GAAI9vG,EAAU,CAEZ,QADwD44P,GAAWC,GAA/Dn1S,GAAK5nL,EAAM4nL,GAAIstS,GAAO,GAAIxgd,GAAU4jd,QAC/Bt1b,GAAMgxS,EAAK/vN,IAAKjhF,GAAMgxS,EAAKxU,OAAQx8R,KAC1C,QAASyxB,GAAMu/Q,EAAK9uQ,KAAMzQ,GAAMu/Q,EAAK5uQ,MAAO3Q,KAAO,CACjD,IAAIuoa,GAAUvhe,EAAIA,IAAIunC,GAAMvnC,EAAI+Q,MAAQioD,IAAMorN,GAAOm0D,EAAK6mF,MAAMs6D,OAAO6H,IACvE,IAAI9H,GAAK8H,IAET,GADA9H,GAAK8H,KAAW,EACC,MAAbF,GACFA,GAAYE,GACZD,GAAal9M,OACR,CACAv2M,GAAQu2M,MAASnrQ,GAAUA,GAAQsS,OAAO64P,GAAKnrQ,UACpD,IAAIuod,GAASr1S,GAAG3yJ,QAAQx5B,IAAIuhe,GAAUhpJ,EAAKkmJ,YAC3CtyS,GAAG3yK,OAAOgod,GAAQA,GAASp9M,GAAKg1M,WAOtC,GAHAjtS,GAAGozS,cAAc8B,GAAY9oJ,EAAKkmJ,WAAY,KAC7B7B,GAAQgC,GAAW0C,GAAWj6P,MAAOi6P,GAAWj6P,MAAMk2J,QAAUhlD,EAAK5uQ,MAAQ4uQ,EAAK9uQ,KAAQ63Z,GAAWj6P,MAAMk2J,SACnG,UAAWhlD,EAAKxU,OAASwU,EAAK/vN,MACnDvvG,GAAQowC,KAAM,CAChB,IAAI1kB,GAAM08b,GAAY,EAAIC,GAAWrod,QAAQowC,KACzChiC,GAAQwmD,GAAQyzZ,IAAcD,GAAY,EAAI18b,GAClDwnJ,GAAGj1I,YAAY7vB,GAAQkxT,EAAKkmJ,WAAY95b,GAAM4zS,EAAKkmJ,WAAYxld,IAEjEkzK,GAAG+wS,aAAa,IAAI7B,GAAclvS,GAAG02L,IAAI5gW,QAAQo/c,GAAY9oJ,EAAKkmJ,cAClEh2P,EAASt8C,IAEX,OAAO,EAKT,YAAmB5nL,EAAOkkO,GACxB,IAAIi5P,EAAYhD,GAAen6d,EAAM4iO,QACrC,OAUF,YAA2Bw6P,GACzB,OAAO,SAAUp9d,EAAOkkO,GACtB,IACIwwP,EAAUsI,GADVtE,EAAM14d,EAAM41D,UAEhB,GAAM8ia,aAAe5B,GAId,CACL,GAAI4B,EAAIhC,YAAY/3Y,KAAO+5Y,EAAI/B,UAAUh4Y,IAAO,OAAO,EACvD+1Y,EAAWgE,EAAIhC,YAAYqC,UAC3BiE,GAAUtE,EAAIhC,YAAY/3Y,QAPS,CAEnC,GADA+1Y,EAjsCN,YAAsB6E,GACpB,QAASj4d,EAAIi4d,EAAKjsY,MAAOhsF,EAAI,EAAGA,IAAK,CACnC,IAAIynP,EAAOwwO,EAAKr+c,KAAK5Z,GAAG1D,KAAKy7d,KAAKzG,UAClC,GAAa,SAAT7pO,GAA4B,gBAATA,EAA0B,OAAOwwO,EAAKr+c,KAAK5Z,GAEpE,OAAO,KA4rCQ+7d,CAAa3E,EAAItB,QACvB1C,EAAY,OAAO,EACxBsI,GAAUtD,GAAWhB,EAAItB,OAAOz4Y,IAMlC,GAA8B,GAA1B+1Y,EAAS5xP,MAAMk2J,SAA0C,GAA1B07F,EAAS5xP,MAAM2vP,QAAe,OAAO,EACxE,GAAIvuP,EAAU,CACZ,IAAIo5P,GAAY5I,EAAS5xP,MAAOA,GAAQ,GAAIgxP,GAAWwJ,GAAUxJ,SAC7DwJ,GAAU7K,QAAU,IAAK6K,GAAYjF,GAAQiF,GAAW,UAAW,IACnEA,GAAUtkG,QAAU,IAAKskG,GAAYjF,GAAQiF,GAAW,UAAW,IAEvE,QADItpJ,GAAO2lJ,GAAa35d,GAAQ4nL,GAAK5nL,EAAM4nL,GAClCnjL,GAAI,EAAGA,GAAIuvU,GAAK5uQ,MAAQ4uQ,GAAK9uQ,KAAMzgE,KACxCq+N,GAAMvnO,KAAKu4d,GAAWuE,GAAQiF,GAAW,WAAYxJ,IAAYA,GAASrvd,IAAK,CAACqvd,GAASrvd,KAAM,MAAQ64d,IAE3G,QADIC,GACKv6b,GAAMgxS,GAAK/vN,IAAKjhF,GAAMgxS,GAAKxU,OAAQx8R,KAAO,CACjD,IAAI27C,GAAMq1P,GAAKv4U,IAAI46d,WAAWrzb,GAAKgxS,GAAK9uQ,KAAM8uQ,GAAK6mF,OAC/C73X,IAAOgxS,GAAK/vN,MAAOtlC,IAAO+1Y,EAASG,UACvC,QAASpga,GAAMu/Q,GAAK9uQ,KAAMowsB,GAAM,EAAG7gtB,GAAMu/Q,GAAK5uQ,MAAO3Q,KAAO6gtB,KACtD7gtB,IAAOu/Q,GAAK9uQ,MAAQliC,IAAOgxS,GAAK/vN,KACpC2jE,GAAGtzG,OAAOipZ,GAAW31S,GAAG3yJ,QAAQx5B,IAAIkjF,GAAMq1P,GAAKkmJ,WAAY,GAAIkD,EAAY,CAAElid,KAAMw5c,EAAU1xb,IAAKA,GAAKyxB,IAAKA,KAAM2ja,cAAct1P,GAAMwyiB,MAG1I1tlB,GAAGozS,cAAcgC,GAASI,EAAY,CAAElid,KAAMw5c,EAAU1xb,IAAKgxS,GAAK/vN,IAAKxvD,IAAKu/Q,GAAK9uQ,OAAQ49J,GAAM,IAC3F41P,aAAe5B,IACflvS,GAAG+wS,aAAa,IAAI7B,GAAclvS,GAAG02L,IAAI5gW,QAAQg7c,EAAIhC,YAAY/3Y,KACjC4+Y,IAAY31S,GAAG02L,IAAI5gW,QAAQ6/c,MAC/Dr5P,EAASt8C,IAEX,OAAO,GA9CF41S,CAAkB,SAAUjnX,GAGjC,OAAO4mX,EAFI5mX,EAAIr7F,KAEOtd,KAAKy7d,KAAKzG,YAH3B4K,CAIJx9d,EAAOkkO,GA0FZ,YAA+BtmO,EAAMo2U,EAAM/mD,GASzC,QAPImthB,EAAgBpme,EAAKv4U,IAAI26d,YAAY,CACvClxZ,KAAM,EACN++C,IAAK,EACL7+C,MAAe,OAARxnE,EAAgBo2U,EAAKv4U,IAAI+Q,MAAQ,EACxCgzT,OAAgB,UAAR5hU,EAAmBo2U,EAAKv4U,IAAI4E,OAAS,IAGtCoE,EAAI,EAAGA,EAAI21yB,EAAcv+yB,OAAQ4I,IAAK,CAC7C,IAAIo7Q,GAAOm0D,EAAK6mF,MAAMs6D,OAAOilV,EAAc31yB,IAC3C,GAAIo7Q,IAAQA,GAAKjiR,OAASqvR,EAAM4uM,YAC9B,OAAO,EAIX,OAAO,EAMT,YAAsBj+d,EAAMiX,GAG1B,OAFAA,EAAUA,GAAW,CAAEwlyB,oBAAoB,IAE/BA,mBA7Cd,YAAiCz8yB,GAC/B,OAAO,SAASoC,EAAOkkO,GACrB,IAAKs1P,GAAUx5d,GAAU,OAAO,EAChC,GAAIkkO,EAAU,CAMZ,QALI+oD,EAAQktM,GAAen6d,EAAM4iO,QAC7BoxG,EAAO2lJ,GAAa35d,GAAQ4nL,GAAK5nL,EAAM4nL,GACvCv6H,GAAQ2mR,EAAKv4U,IAAI26d,YAAoB,UAARx4d,EAAmB,IAAI43d,GAAKxhJ,EAAK9uQ,KAAM,EAAG8uQ,EAAK5uQ,MAAO4uQ,EAAKv4U,IAAI4E,QACvD,OAARzC,EAAgB,IAAI43d,GAAK,EAAGxhJ,EAAK/vN,IAAK+vN,EAAKv4U,IAAI+Q,MAAOwnU,EAAKxU,QAAUwU,GAClGz8M,GAAQlqE,GAAM5xD,IAAI,SAAUkjF,IAAO,OAAOq1P,EAAK6mF,MAAMs6D,OAAOx2Y,MACvDl6E,GAAI,EAAGA,GAAI4oD,GAAMxxD,OAAQ4I,KAC1B8yH,GAAM9yH,IAAG7G,MAAQqvR,EAAM4uM,aACzBj0S,GAAGozS,cAAchnJ,EAAKkmJ,WAAa7sa,GAAM5oD,IAAIwoR,EAAMpN,KAAMtoJ,GAAM9yH,IAAGq+N,OACxE,GAAuB,GAAnBl7C,GAAG7kI,MAAMlnD,OAAe,QAASy5wB,GAAM,EAAGA,GAAMjotB,GAAMxxD,OAAQy5wB,KAC9D1tlB,GAAGozS,cAAchnJ,EAAKkmJ,WAAa7sa,GAAMiotB,IAAMrof,EAAM4uM,YAAatkW,GAAM+9oB,IAAKxyiB,OACjFoB,EAASt8C,IAEX,OAAO,GA8BE0ynB,CAAwB18yB,GAE5B,SAASoC,EAAOkkO,GACrB,IAAKs1P,GAAUx5d,GAAU,OAAO,EAChC,GAAIkkO,EAAU,CACZ,IAAI+oD,EAAQktM,GAAen6d,EAAM4iO,QAC7BoxG,GAAO2lJ,GAAa35d,GAAQ4nL,GAAK5nL,EAAM4nL,GAEvC2ynB,GAAqBC,GAAsB,MAAOxme,GAAM/mD,GACxDwthB,GAAwBD,GAAsB,SAAUxme,GAAM/mD,GAK9DythB,IAH2B,WAAT98yB,EAAoB28yB,GACX,QAAT38yB,GAAoB68yB,IAEA,EAAI,EAE1CE,GAAoB,UAAR/8yB,EAAmB,IAAI43d,GAAK,EAAGklV,GAAmB,EAAG1me,GAAKv4U,IAAI4E,QACtD,OAARzC,EAAgB,IAAI43d,GAAKklV,GAAmB,EAAG1me,GAAKv4U,IAAI+Q,MAAO,GAAKwnU,GAEhF4me,GAAkB,UAARh9yB,EAAmB68yB,GAAwBxthB,EAAMpN,KAAOoN,EAAM4uM,YACtD,OAARj+d,EAAgB28yB,GAAqBtthB,EAAMpN,KAAOoN,EAAM4uM,YAAc5uM,EAAMpN,KAE1Fm0D,GAAKv4U,IAAI26d,YAAYukV,IAAWj+yB,QAAQ,SAAUm+yB,IAChD,IAAI79U,GAAU69U,GAAkB7me,GAAKkmJ,WACjCr6M,GAAOj4F,GAAG02L,IAAI62G,OAAO6H,IAErBn9M,IACFj4F,GAAGozS,cAAcgC,GAAS49U,GAAS/6hB,GAAK/8C,SAI5CoB,EAASt8C,IAEX,OAAO,GAsDX,YAAqB5nL,EAAOkkO,GAE1B,QADIq1P,EAAOv5d,EAAM41D,UAAUika,QAClBv4d,EAAIi4d,EAAKjsY,MAAOhsF,EAAI,EAAGA,IAE9B,GAAgC,SADrBi4d,EAAKr+c,KAAK5Z,GACZ1D,KAAKy7d,KAAKzG,UACjB,OAAI1uP,GAAYA,EAASlkO,EAAM4nL,GAAG3yK,OAAOskd,EAAKz3a,OAAOxgD,GAAIi4d,EAAK3lb,MAAMtyC,IAAIm8d,mBACjE,EAGX,OAAO,EA7kCTrE,GAAajjd,UAAU1a,IAAM,SAAcw5B,GACzC,OAAO,IAAImkc,GAAankc,EAAQx5B,IAAI3F,KAAKiO,QAASkxB,EAAQx5B,IAAI3F,KAAKo9V,QAErEkmI,GAAajjd,UAAUuH,QAAU,SAAkB4gW,GACjD,IAAIo4G,EAAcp4G,EAAI5gW,QAAQ5nB,KAAKiO,QAAS4yd,EAAYr4G,EAAI5gW,QAAQ5nB,KAAKo9V,MACzE,MAA8C,OAA1CwjI,EAAYvkH,OAAOv0W,KAAKy7d,KAAKzG,WACW,OAAxC+D,EAAUxkH,OAAOv0W,KAAKy7d,KAAKzG,WAC3B8D,EAAYh9c,QAAUg9c,EAAYvkH,OAAO+hH,YACzCyC,EAAUj9c,QAAUi9c,EAAUxkH,OAAO+hH,YACrCqD,GAAYb,EAAaC,GAClB,IAAIG,GAAcJ,EAAaC,GAE/BF,QAAeE,EAAW,IA+SnB4+E,GAAe,CACjCj0J,UAAaoJ,GAAM,SAAS,GAC5BnJ,WAAcmJ,GAAM,QAAS,GAC7BlJ,QAAWkJ,GAAM,QAAQ,GACzBrJ,UAAaqJ,GAAM,OAAQ,GAE3B,kBAAmBowZ,GAAW,SAAS,GACvC,mBAAoBA,GAAW,QAAS,GACxC,gBAAiBA,GAAW,QAAQ,GACpC,kBAAmBA,GAAW,OAAQ,GAEtCr5Z,UAAas5Z,GACb,gBAAiBA,GACjBrniB,OAAUqniB,GACV,aAAcA,KAkLG,IAAI9zU,GAAU,cAyhBX+zU,GAAa,MAAO,CAAEX,oBAAoB,IAIvCW,GAAa,SAAU,CAAEX,oBAAoB,IAI/CW,GAAa,OAAQ,CAAEX,oBAAoB,IAoDlE,IAAIY,GAAY,SAAmB//xB,EAAMggyB,GACvCplzB,KAAKolB,KAAOA,EACZplB,KAAKolzB,aAAeA,EACpBplzB,KAAKqtO,IAAM1rN,SAAS+O,cAAc,OAClC1wB,KAAKqtO,IAAIjwL,UAAY,eACrBp9C,KAAK+ka,MAAQ/ka,KAAKqtO,IAAIxyL,YAAYl5B,SAAS+O,cAAc,UACzD1wB,KAAKs+uB,SAAWt+uB,KAAK+ka,MAAMlqX,YAAYl5B,SAAS+O,cAAc,aAC9D20xB,GAAcjgyB,EAAMplB,KAAKs+uB,SAAUt+uB,KAAK+ka,MAAOqgZ,GAC/CplzB,KAAK8nxB,WAAa9nxB,KAAK+ka,MAAMlqX,YAAYl5B,SAAS+O,cAAc,WAclE,YAAuBtL,EAAMk5tB,EAAUv5U,EAAOqgZ,EAAcE,EAAaC,IAGvE,QAFIp0V,GAAa,EAAGq0V,IAAa,EAC7BjV,GAAUjyD,EAASvsb,WAAY7kR,GAAM9nB,EAAK2sS,WACrCpjT,GAAI,EAAGgwD,GAAM,EAAGhwD,GAAIu+B,GAAIkxb,WAAYzvd,KAI3C,QAHI8xG,GAAMvzE,GAAIuxB,MAAM9vD,IAAGq+N,MACnBk2J,GAAUziR,GAAIyiR,QACd86F,GAAWv9W,GAAIu9W,SACVx8X,GAAI,EAAGA,GAAI0hS,GAAS1hS,KAAK7iC,KAAO,CACvC,IAAI8mvB,GAAWH,GAAe3mvB,GAAM4mvB,GAAgBvnV,IAAYA,GAASx8X,IACrEkktB,GAAWD,GAAWA,GAAW,KAAO,GAC5Ct0V,IAAcs0V,IAAYL,EACrBK,KAAYD,IAAa,GAC9Bt0G,IAGMq/F,GAAQpmyB,MAAMuM,OAASgvyB,KAAYnV,GAAQpmyB,MAAMuM,MAAQgvyB,IAC7DnV,GAAUA,GAAQzlb,aAHlBwzX,EAASzjsB,YAAYl5B,SAAS+O,cAAc,QAAQvmB,MAAMuM,MAAQgvyB,GAQxE,KAAOnV,IAAS,CACd,IAAIzyvB,GAAQyyvB,GAAQzlb,YACpBylb,GAAQ9ipB,WAAW/vG,YAAY6yvB,IAC/BA,GAAUzyvB,GAGR0nwB,IACFzgZ,EAAM56Z,MAAMuM,MAAQy6c,GAAa,KACjCpsD,EAAM56Z,MAAM4yG,SAAW,KAEvBgoT,EAAM56Z,MAAMuM,MAAQ,GACpBquZ,EAAM56Z,MAAM4yG,SAAWo0W,GAAa,MA3CxCg0V,GAAU9kyB,UAAUqmG,OAAS,SAAiBthG,GAC5C,OAAIA,EAAKtd,MAAQ9H,KAAKolB,KAAKtd,OAC3B9H,KAAKolB,KAAOA,EACZigyB,GAAcjgyB,EAAMplB,KAAKs+uB,SAAUt+uB,KAAK+ka,MAAO/ka,KAAKolzB,eAC7C,IAGTD,GAAU9kyB,UAAUgpxB,eAAiB,SAAyBv5W,GAC5D,MAAsB,cAAfA,EAAOhob,OAAyBgob,EAAOpnb,QAAU1I,KAAK+ka,OAAS/ka,KAAKs+uB,SAASnwuB,SAAS2hb,EAAOpnb,UAuCtG,IAAIi9yB,GAAQ,IAAIx0U,GAAU,uBA4CtBy0U,GAAc,SAAqBt/O,EAAc74c,GACnDztH,KAAKsmkB,aAAeA,EACpBtmkB,KAAKytH,SAAWA,GAGlBm4rB,GAAYvlyB,UAAUsT,MAAQ,SAAgBm+J,GAC5C,IAAI5nL,EAAQlK,KAAMghC,EAAS8wJ,EAAGuimB,QAAQsxB,IACtC,GAAI3kxB,GAA8B,MAApBA,EAAO6kxB,UACjB,OAAO,IAAID,GAAY5kxB,EAAO6kxB,UAAW,MAC7C,GAAI7kxB,QAAiC77B,IAAvB67B,EAAO8kxB,YACjB,OAAO,IAAIF,GAAY17yB,EAAMo8jB,aAActliB,EAAO8kxB,aACtD,GAAI57yB,EAAMo8jB,cAAe,GAAMx0Y,EAAG65lB,WAAY,CAC5C,IAAIxkuB,EAAS2qI,EAAG3yJ,QAAQx5B,IAAIuE,EAAMo8jB,cAAc,GAC3C9kG,GAAa1vS,EAAG02L,IAAI5gW,QAAQu/B,MAAYA,EAAS,MACtDj9C,EAAQ,IAAI07yB,GAAYz+vB,EAAQj9C,EAAMujH,UAExC,OAAOvjH,GC94DT,MACM67yB,GAAgB,CAAC,aADV,GAC+BC,GAAQ,CAAC,MAAOC,GAAS,CAAC,MAAO,CAAC,OADjE,IAEPC,GAAQ,CAAC,KAAM,GAAIC,GAAQ,CAAC,KAAM,GAAIC,GAAQ,CAAC,KAAM,GACrDtrV,GAAiBztP,IACnB,MAAM96N,EAAS,GACf,IAAiCsod,EAA7B/5B,EAAazzN,EAAIyzN,WACrB,QAASnyb,EAAI,EAAGA,EAAImyb,EAAW/6b,OAAQ4I,IACnCksd,EAAO/5B,EAAWnyb,GAClB4D,EAAOsod,EAAK71d,MAAQ61d,EAAKl3d,MAE7B,OAAO4O,GASLqpd,GAAW,CAAC5uP,EAAO4tP,KACrB,QAASC,KAAQ7tP,EACb,GAAI6tP,GAAwB,OAAhB7tP,EAAM6tP,IAAkBA,IAASD,EACzC,OAAO,EAGf,OAAO,GAELxtP,GAAW,CAACJ,EAAO4tP,KACrB,MAAMrod,EAAS,GACf,QAASsod,KAAQ7tP,EACT6tP,GAAwB,OAAhB7tP,EAAM6tP,IAAkBA,IAASD,IACzCrod,EAAOsod,GAAQ7tP,EAAM6tP,IAG7B,OAAOtod,GAEL8zyB,GAAUl5kB,IACL,EACFA,GAAM,CACHnoO,KAAMmoO,EACN+uiB,WAAW,EACXhviB,SAAU,CAAC,CAAEC,IAAKA,IAClBG,MAAO,IAAM,CAACH,EA1Cb,MA8CPQ,GAAQ9nO,OAAOw0D,OAAO,CAIxBojL,KAAM,CACFzQ,MAAOnnO,OAAOw0D,OAAO,GAtClB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,OAmC8B,CAAEt8M,KAAM,CAAEs8M,QAAS,MAAQvkO,OAAQ,CAAEukO,QAAS,MAAQrgL,MAAO,CAAEqgL,QAAS,QACrHiviB,WAAW,EACXhviB,SAAU,CAAC,CAAEC,IAAK,IAAKC,SAAU0tP,KACjCxtP,MAAQloN,GAAS,CAAC,IAAKgoN,GAAShoN,EAAK4nN,OAtDhC,KAuDJq5kB,GAAQ,UAAWA,GAAQ,KAAMA,GAAQ,MAAOA,GAAQ,KAAMA,GAAQ,KAAMA,GAAQ,OAAQA,GAAQ,OAAQA,GAAQ,OAAQA,GAAQ,QAAS,CAAEl8yB,MAAO,CACvJ6iO,MAAOnnO,OAAOw0D,OAAO,GA3ClB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,QAyCfC,SAAU,CAAC,CACHC,IAAK,OACLC,SAAU0tP,KAElBxtP,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,OACzB,CAAC,OAAQI,GAAShoN,EAAK4nN,OA9DtB,GA8DsC,CAAC,OA9DvC,MAgEPvrG,GAAQ57H,OAAOw0D,OAAO,CAExBmuT,IAAK,CACD5pW,QAAS,UAIb67wB,UAAW,CACP77wB,QAAS,UACT8pB,MAAO,QACPskM,MAAOnnO,OAAOw0D,OAAO,GA7DlB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,QA2DfC,SAAU,CAAC,CACHC,IAAK,IACLC,SAAU0tP,KAElBxtP,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,OAAS,CAAC,IAAKI,GAAShoN,EAAK4nN,OA/ErD,GA+EqE,CAAC,IA/EtE,IAgFNk9K,IAAK,CAGJtrY,QAAS,SACT8pB,MAAO,QACPskM,MAAOnnO,OAAOw0D,OAAO,GAxElB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,QAsEfC,SAAU,CAAC,CACHC,IAAK,MACLC,SAAU0tP,KAElBxtP,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,OAAS,CAAC,MAAOI,GAAShoN,EAAK4nN,OA1FvD,GA0FuE,CAAC,MA1FxE,IA6FT2wP,WAAY,CACR3wP,MAAOnnO,OAAOw0D,OAAO,GAjFlB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,QA+EfruN,QAAS,SACT8pB,MAAO,QACP8ovB,UAAU,EACVtkjB,SAAU,CAAC,CACHC,IAAK,aACLC,SAAU0tP,KAElBxtP,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,OAAS,CAAC,aAAcI,GAAShoN,EAAK4nN,OAtG9D,GAsG8E+4kB,IAGvFO,gBAAiB,CACb59wB,MAAO,QACPwkM,SAAU,CAAC,CAAEC,IAAK,OAClBG,MAAO,IAAM04kB,IAKjB5ygB,QAAS,CACLpmE,MAAOnnO,OAAOw0D,OAAO,GArGlB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,OAkG8B,CAAE/qH,MAAO,CAAE+qH,QAAS,KACjEruN,QAAS,UACT8pB,MAAO,QACP8ovB,UAAU,EACVtkjB,SAAU,CACN,CAAEC,IAAK,KAAMC,SAAUhoN,GAASvf,OAAOw0D,OAAO,GAAIyga,GAAc11c,GAAO,CAAE88F,MAAO,KAChF,CAAEirH,IAAK,KAAMC,SAAUhoN,GAASvf,OAAOw0D,OAAO,GAAIyga,GAAc11c,GAAO,CAAE88F,MAAO,KAChF,CAAEirH,IAAK,KAAMC,SAAUhoN,GAASvf,OAAOw0D,OAAO,GAAIyga,GAAc11c,GAAO,CAAE88F,MAAO,KAChF,CAAEirH,IAAK,KAAMC,SAAUhoN,GAASvf,OAAOw0D,OAAO,GAAIyga,GAAc11c,GAAO,CAAE88F,MAAO,KAChF,CAAEirH,IAAK,KAAMC,SAAUhoN,GAASvf,OAAOw0D,OAAO,GAAIyga,GAAc11c,GAAO,CAAE88F,MAAO,KAChF,CAAEirH,IAAK,KAAMC,SAAUhoN,GAASvf,OAAOw0D,OAAO,GAAIyga,GAAc11c,GAAO,CAAE88F,MAAO,MAEpForH,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,MAAO,SAChC,CAAC,IAAM5nN,EAAK4nN,MAAM9qH,MAAOkrH,GAAShoN,EAAK4nN,MAAO,SA/H7C,GAgID,CAAC,IAAM5nN,EAAK4nN,MAAM9qH,MAhIjB,IAqITqksB,WAAY,CACR3nyB,QAAS,QACT+uN,MAAO,GACPjlM,MAAO,QACP1c,MAAM,EACNwlwB,UAAU,EACVtkjB,SAAU,CAAC,CAAEC,IAAK,MAAOuhQ,mBAAoB,SAC7CphQ,MAAO,IAAM24kB,IAGjBn7yB,KAAM,CACF2msB,QAAQ,EACR/oqB,MAAO,UAKXi5G,MAAO,CACH8vjB,QAAQ,EACRzke,MAAOnnO,OAAOw0D,OAAO,CAAElgB,IAAK,CAAE8yL,QAAS,MAAQxwL,IAAK,CAAEwwL,QAAS,MAAQrgL,MAAO,CAAEqgL,QAAS,MAAQv2N,MAAO,CAAEu2N,QAAS,MAAQ1iO,OAAQ,CAAE0iO,QAAS,OA3I3I,CACH9iO,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,QAyIfvkM,MAAO,SACPwgX,WAAW,EACXh8K,SAAU,CAAC,CAAEC,IAAK,MAAOC,SAAU0tP,KACnCxtP,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,OAAS,CAAC,MAAOI,GAAShoN,EAAK4nN,QAAU,CAAC,QAG3Ew5kB,WAAY,CACR/0G,QAAQ,EACRzke,MAAOnnO,OAAOw0D,OAAO,GApJlB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,QAkJfvkM,MAAO,SACP20B,YAAY,EACZ6vK,SAAU,CAAC,CACHC,IAAK,KACLC,SAAU0tP,KAElBxtP,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,OAAS,CAAC,KAAMI,GAAShoN,EAAK4nN,QAAU,CAAC,OAO1E2kQ,aAAc,CACV/yd,QAAS,aACT8pB,MAAO,QACPskM,MAAOnnO,OAAOw0D,OAAO,GArKlB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,OAkK8B,CAAEnlO,KAAM,CAAEmlO,QAAS,MAAQ++D,MAAO,CAAE/+D,QAAS,KAC1FC,SAAU,CAAC,CAAEC,IAAK,KAAMC,SAAWC,GAChBxnO,OAAOw0D,OAAO,GAAIyga,GAAcztP,GAAM,CAAE2+D,MAAO3+D,EAAI2nJ,aAAa,SAAWpxX,SAASypO,EAAIvlL,aAAa,UAAY,IAAK,IAAM,MAE/IwlL,MAAOloN,GACyB,IAArBA,EAAK4nN,MAAMg/D,MACb4vL,GAASx2c,EAAK4nN,MAAO,SAAW,CAAC,KAAMI,GAAShoN,EAAK4nN,MAAO,SAxLhE,GAwLkFk5kB,GAC/E,CAAC,KAAMrgzB,OAAOw0D,OAAO,GAAI+yK,GAAShoN,EAAK4nN,MAAO,SAAU,CAAEhgN,MAAO5H,EAAK4nN,MAAMg/D,QAzL/E,IA8LT4lM,YAAa,CACThzd,QAAS,aACT8pB,MAAO,QACPskM,MAAOnnO,OAAOw0D,OAAO,GApLlB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,QAkLfC,SAAU,CAAC,CAAEC,IAAK,KAAMC,SAAU0tP,KAClCxtP,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,OAAS,CAAC,KAAMI,GAAShoN,EAAK4nN,OAnMtD,GAmMsEm5kB,IAI/E50U,UAAW,CACP3yd,QAAS,+BACTouN,MAAOnnO,OAAOw0D,OAAO,GA5LlB,CACHlwD,MAAO,CAAE8iO,QAAS,MAClB9gL,MAAO,CAAE8gL,QAAS,MAClB/nO,GAAI,CAAE+nO,QAAS,QA0LfC,SAAU,CAAC,CAAEC,IAAK,KAAMC,SAAU0tP,KAClCxtP,MAAOloN,GAAQw2c,GAASx2c,EAAK4nN,OAAS,CAAC,KAAMI,GAAShoN,EAAK4nN,OA3MtD,GA2MsEo5kB,GAC3E50B,UAAU,ID6HlB,YAAoBzywB,GAClB,IAAIwkyB,EAAaxkyB,EAAQ0nyB,gBAAkB,GACvCC,EAAY,CACdxjb,QAAS,CAACj2J,QAAS,GACnB0vP,QAAS,CAAC1vP,QAAS,GACnB+wP,SAAU,CAAC/wP,QAAS,OAEtB,QAASv9K,KAAQ6zvB,EACbmD,EAAUh3vB,GAAQ,CAACu9K,QAASs2kB,EAAW7zvB,GAAMu9K,SAEjD,MAAO,CACL83L,MAAO,CACLnmZ,QAAS,aACTk+c,UAAW,QACXC,WAAW,EACXr0b,MAAO3pB,EAAQ4nyB,WACfz5kB,SAAU,CAAC,CAACC,IAAK,UACjBG,MAAO,WAAmB,MAAO,CAAC,QAAS,CAAC,QAAS,MAEvD0vP,UAAW,CACTp+c,QAAS,+BACTk+c,UAAW,MACX5vP,SAAU,CAAC,CAACC,IAAK,OACjBG,MAAO,WAAmB,MAAO,CAAC,KAAM,KAE1C2vP,WAAY,CACVr+c,QAASG,EAAQ6nyB,YACjB55kB,MAAO05kB,EACP5pV,UAAW,OACXC,WAAW,EACX7vP,SAAU,CAAC,CAACC,IAAK,KAAMC,SAAU,SAAUC,GAAO,OAAOw5kB,GAAax5kB,EAAKk2kB,MAC3Ej2kB,MAAO,SAAeloN,IAAQ,MAAO,CAAC,KAAMq3c,GAAar3c,GAAMm+xB,GAAa,KAE9ErmV,aAAc,CACZt+c,QAASG,EAAQ6nyB,YACjB55kB,MAAO05kB,EACP5pV,UAAW,cACXC,WAAW,EACX7vP,SAAU,CAAC,CAACC,IAAK,KAAMC,SAAU,SAAUC,GAAO,OAAOw5kB,GAAax5kB,EAAKk2kB,MAC3Ej2kB,MAAO,SAAeloN,IAAQ,MAAO,CAAC,KAAMq3c,GAAar3c,GAAMm+xB,GAAa,MCnKzE1mV,CAAW,CAAE8pV,WAAY,QAASC,YAAa,SAAUH,eAAgB,MC9MlF,IAKIK,GAAe,aAEnBA,GAAazmyB,UAAU6Q,OAAS,SAAiBmuC,GAC/C,OAAKA,EAAMt5D,QACXs5D,EAAQynvB,GAAa1+uB,KAAK/I,IAEjBr/D,KAAK+F,QAAUs5D,GACrBA,EAAMt5D,OAZU,KAYiB/F,KAAK+mzB,WAAW1nvB,IACjDr/D,KAAK+F,OAbW,KAagBs5D,EAAM2nvB,YAAYhnzB,OACnDA,KAAKinzB,YAAY5nvB,IANSr/D,MAW9B8mzB,GAAazmyB,UAAU62vB,QAAU,SAAkB73sB,GACjD,OAAKA,EAAMt5D,OACJ+gzB,GAAa1+uB,KAAK/I,GAAOnuC,OAAOlxB,MADXA,MAI9B8mzB,GAAazmyB,UAAU4myB,YAAc,SAAsB5nvB,GACzD,OAAO,IAAI6nvB,GAAOlnzB,KAAMq/D,IAK1BynvB,GAAazmyB,UAAUzR,MAAQ,SAAgBw5D,EAAMqlE,GAInD,YAHgB,IAATrlE,IAAkBA,EAAO,QAClB,IAAPqlE,IAAgBA,EAAKztI,KAAK+F,QAE7BqiE,GAAQqlE,EAAaq5qB,GAAarnuB,MAC/Bz/E,KAAKmnzB,WAAWj6yB,KAAKsB,IAAI,EAAG45D,GAAOl7D,KAAKulC,IAAIzyC,KAAK+F,OAAQ0nI,KAKlEq5qB,GAAazmyB,UAAUxB,IAAM,SAAclQ,GACzC,KAAIA,EAAI,GAAKA,GAAK3O,KAAK+F,QACvB,OAAO/F,KAAKonzB,SAASz4yB,IAQvBm4yB,GAAazmyB,UAAUzZ,QAAU,SAAkBhB,EAAGwiE,EAAMqlE,QAC1C,IAATrlE,IAAkBA,EAAO,QAClB,IAAPqlE,IAAgBA,EAAKztI,KAAK+F,QAEjCoglB,GAAY14c,EACRztI,KAAKqnzB,aAAazhzB,EAAGwiE,EAAMqlE,EAAI,GAE/BztI,KAAKsnzB,qBAAqB1hzB,EAAGwiE,EAAMqlE,EAAI,IAM7Cq5qB,GAAazmyB,UAAU1a,IAAM,SAAcC,EAAGwiE,EAAMqlE,QAClC,IAATrlE,IAAkBA,EAAO,QAClB,IAAPqlE,IAAgBA,EAAKztI,KAAK+F,QAEjC,IAAIwM,EAAS,GACb,YAAK3L,QAAQ,SAAUs+xB,GAAKv2xB,IAAK,OAAO4D,EAAO9M,KAAKG,EAAEs/xB,GAAKv2xB,MAAQy5D,EAAMqlE,GAClEl7H,GAMTu0yB,GAAa1+uB,KAAO,SAAe/hE,GACjC,OAAIA,aAAkBygzB,GAAuBzgzB,EACtCA,GAAUA,EAAON,OAAS,IAAIwhzB,GAAKlhzB,GAAUygzB,GAAarnuB,OAGnE,IAAI8nuB,GAAqB,SAAUT,GACjC,WAAczgzB,GACZygzB,EAAalzxB,KAAK5zB,MAClBA,KAAKqG,OAASA,EAGXygzB,IAAeS,EAAKjnyB,UAAYwmyB,IACrCS,EAAKlnyB,UAAYxa,OAAOm8D,OAAQ8kvB,GAAgBA,EAAazmyB,YAC9CvgB,YAAcynzB,EAE7B,IAAIzvC,EAAqB,CAAE/xwB,OAAQ,CAAEgywB,cAAc,GAAOvgrB,MAAO,CAAEugrB,cAAc,IAEjFwvC,SAAKlnyB,UAAUw+b,QAAU,WACvB,OAAO7+c,KAAKqG,QAGdkhzB,EAAKlnyB,UAAU8myB,WAAa,SAAqB/+uB,EAAMqlE,IACrD,OAAY,GAARrlE,GAAaqlE,IAAMztI,KAAK+F,OAAiB/F,KACtC,IAAIunzB,EAAKvnzB,KAAKqG,OAAOuI,MAAMw5D,EAAMqlE,MAG1C85qB,EAAKlnyB,UAAU+myB,SAAW,SAAmBz4yB,GAC3C,OAAO3O,KAAKqG,OAAOsI,IAGrB44yB,EAAKlnyB,UAAUgnyB,aAAe,SAAuBzhzB,EAAGwiE,GAAMqlE,GAAIzgH,IAChE,QAASre,GAAIy5D,GAAMz5D,GAAI8+H,GAAI9+H,KACvB,IAAqC,IAAjC/I,EAAE5F,KAAKqG,OAAOsI,IAAIqe,GAAQre,IAAgB,OAAO,GAG3D44yB,EAAKlnyB,UAAUinyB,qBAAuB,SAA+B1hzB,EAAGwiE,GAAMqlE,GAAIzgH,IAChF,QAASre,GAAIy5D,GAAO,EAAGz5D,IAAK8+H,GAAI9+H,KAC5B,IAAqC,IAAjC/I,EAAE5F,KAAKqG,OAAOsI,IAAIqe,GAAQre,IAAgB,OAAO,GAG3D44yB,EAAKlnyB,UAAU0myB,WAAa,SAAqB1nvB,GAC/C,GAAIr/D,KAAK+F,OAASs5D,EAAMt5D,QApHP,IAqHb,OAAO,IAAIwhzB,EAAKvnzB,KAAKqG,OAAOstC,OAAO0rB,EAAMw/Y,aAG/C0oW,EAAKlnyB,UAAU2myB,YAAc,SAAsB3nvB,GACjD,GAAIr/D,KAAK+F,OAASs5D,EAAMt5D,QAzHP,IA0Hb,OAAO,IAAIwhzB,EAAKlovB,EAAMw/Y,UAAUlra,OAAO3zC,KAAKqG,UAGlDyxwB,EAAmB/xwB,OAAO8Y,IAAM,WAAc,OAAO7e,KAAKqG,OAAON,QAEjE+xwB,EAAmBtgrB,MAAM34E,IAAM,WAAc,OAAO,GAEpDhZ,OAAOszwB,iBAAkBouC,EAAKlnyB,UAAWy3vB,GAElCyvC,EAnDgB,CAoDvBT,IAIFA,GAAarnuB,MAAQ,IAAI8nuB,GAAK,IAE9B,IAAIL,GAAuB,SAAUJ,GACnC,WAAgB13uB,EAAME,GACpBw3uB,EAAalzxB,KAAK5zB,MAClBA,KAAKovE,KAAOA,EACZpvE,KAAKsvE,MAAQA,EACbtvE,KAAK+F,OAASqpE,EAAKrpE,OAASupE,EAAMvpE,OAClC/F,KAAKw3F,MAAQtqF,KAAKsB,IAAI4gE,EAAKooB,MAAOloB,EAAMkoB,OAAS,EAGnD,OAAKsvtB,IAAeI,EAAO5myB,UAAYwmyB,IACvCI,EAAO7myB,UAAYxa,OAAOm8D,OAAQ8kvB,GAAgBA,EAAazmyB,YAC9CvgB,YAAconzB,EAE/BA,EAAO7myB,UAAUw+b,QAAU,WACzB,OAAO7+c,KAAKovE,KAAKyvY,UAAUlra,OAAO3zC,KAAKsvE,MAAMuvY,YAG/CqoW,EAAO7myB,UAAU+myB,SAAW,SAAmBz4yB,GAC7C,OAAOA,EAAI3O,KAAKovE,KAAKrpE,OAAS/F,KAAKovE,KAAKvwD,IAAIlQ,GAAK3O,KAAKsvE,MAAMzwD,IAAIlQ,EAAI3O,KAAKovE,KAAKrpE,SAGhFmhzB,EAAO7myB,UAAUgnyB,aAAe,SAAuBzhzB,EAAGwiE,EAAMqlE,GAAIzgH,IAClE,IAAIw6xB,GAAUxnzB,KAAKovE,KAAKrpE,OAIxB,GAHIqiE,EAAOo/uB,KAC2D,IAAlExnzB,KAAKovE,KAAKi4uB,aAAazhzB,EAAGwiE,EAAMl7D,KAAKulC,IAAIg7F,GAAI+5qB,IAAUx6xB,KAEvDygH,GAAK+5qB,KAC6G,IAAlHxnzB,KAAKsvE,MAAM+3uB,aAAazhzB,EAAGsH,KAAKsB,IAAI45D,EAAOo/uB,GAAS,GAAIt6yB,KAAKulC,IAAIzyC,KAAK+F,OAAQ0nI,IAAM+5qB,GAASx6xB,GAAQw6xB,IACrG,OAAO,GAGbN,EAAO7myB,UAAUinyB,qBAAuB,SAA+B1hzB,EAAGwiE,EAAMqlE,GAAIzgH,IAClF,IAAIw6xB,GAAUxnzB,KAAKovE,KAAKrpE,OAIxB,GAHIqiE,EAAOo/uB,KACkG,IAAzGxnzB,KAAKsvE,MAAMg4uB,qBAAqB1hzB,EAAGwiE,EAAOo/uB,GAASt6yB,KAAKsB,IAAIi/H,GAAI+5qB,IAAWA,GAASx6xB,GAAQw6xB,KAE5F/5qB,GAAK+5qB,KACqE,IAA1ExnzB,KAAKovE,KAAKk4uB,qBAAqB1hzB,EAAGsH,KAAKulC,IAAI21B,EAAMo/uB,IAAU/5qB,GAAIzgH,IAC/D,OAAO,GAGbk6xB,EAAO7myB,UAAU8myB,WAAa,SAAqB/+uB,EAAMqlE,GACvD,GAAY,GAARrlE,GAAaqlE,GAAMztI,KAAK+F,OAAU,OAAO/F,KAC7C,IAAIwnzB,GAAUxnzB,KAAKovE,KAAKrpE,OACxB,OAAI0nI,GAAM+5qB,GAAkBxnzB,KAAKovE,KAAKxgE,MAAMw5D,EAAMqlE,GAC9CrlE,GAAQo/uB,GAAkBxnzB,KAAKsvE,MAAM1gE,MAAMw5D,EAAOo/uB,GAAS/5qB,EAAK+5qB,IAC7DxnzB,KAAKovE,KAAKxgE,MAAMw5D,EAAMo/uB,IAASt2xB,OAAOlxB,KAAKsvE,MAAM1gE,MAAM,EAAG6+H,EAAK+5qB,MAGxEN,EAAO7myB,UAAU0myB,WAAa,SAAqB1nvB,GACjD,IAAI39B,EAAQ1hC,KAAKsvE,MAAMy3uB,WAAW1nvB,GAClC,GAAI39B,EAAS,OAAO,IAAIwlxB,EAAOlnzB,KAAKovE,KAAM1tC,IAG5CwlxB,EAAO7myB,UAAU2myB,YAAc,SAAsB3nvB,GACnD,IAAI39B,EAAQ1hC,KAAKovE,KAAK43uB,YAAY3nvB,GAClC,GAAI39B,EAAS,OAAO,IAAIwlxB,EAAOxlxB,EAAO1hC,KAAKsvE,QAG7C43uB,EAAO7myB,UAAU4myB,YAAc,SAAsB5nvB,GACnD,OAAIr/D,KAAKovE,KAAKooB,OAAStqF,KAAKsB,IAAIxO,KAAKsvE,MAAMkoB,MAAOn4B,EAAMm4B,OAAS,EACtD,IAAI0vtB,EAAOlnzB,KAAKovE,KAAM,IAAI83uB,EAAOlnzB,KAAKsvE,MAAOjQ,IACjD,IAAI6nvB,EAAOlnzB,KAAMq/D,IAGnB6nvB,EAjEkB,CAkEzBJ,IAIF,SAFmBA,GCzLnB,IAEIW,GAAS,SAAgBj1vB,EAAOk1vB,GAClC1nzB,KAAKwyD,MAAQA,EACbxyD,KAAK0nzB,WAAaA,GAMpBD,GAAOpnyB,UAAUsnyB,SAAW,SAAmBz9yB,EAAO09yB,GAClD,IAUEC,GAAOllV,GAVLsgT,EAASjjxB,KAEf,GAAuB,GAAnBA,KAAK0nzB,WAAmB,OAAO,KAGnC,QADIp9wB,EAAMtqC,KAAKwyD,MAAMzsD,QACbukC,IAEN,GADWtqC,KAAKwyD,MAAM3zC,IAAIyrB,EAAM,GACvBw1B,UAAW,GAAIx1B,EAAK,MAI3Bs9wB,IACFC,GAAQ7nzB,KAAK8nzB,UAAUx9wB,EAAKtqC,KAAKwyD,MAAMzsD,QACvC48d,GAAUklV,GAAMv8gB,KAAKvlS,QAEvB,IACI+5D,GAAWw+nB,GADXj0rB,GAAYH,EAAM4nL,GAElBi2nB,GAAW,GAAI/wC,GAAY,GAE/B,YAAKxktB,MAAM5rD,QAAQ,SAAUoM,GAAMrE,IACjC,IAAKqE,GAAKw5C,KAOR,OANKq7vB,KACHA,GAAQ5kC,EAAO6kC,UAAUx9wB,EAAK37B,GAAI,GAClCg0d,GAAUklV,GAAMv8gB,KAAKvlS,QAEvB48d,UACAq0S,GAAUvxwB,KAAKuN,IAIjB,GAAI60yB,GAAO,CACT7wC,GAAUvxwB,KAAK,IAAIyqX,GAAKl9W,GAAKrN,MAC7B,IAAgDA,GAA5C6mD,GAAOx5C,GAAKw5C,KAAK7mD,IAAIkizB,GAAMj5yB,MAAM+zd,KAEjCn2a,IAAQniD,GAAUuhxB,UAAUp/tB,IAAMg8T,KAEpCu/b,GAAStizB,KAAK,IAAIyqX,GADlBvqX,GAAM0E,GAAU80B,QAAQmsQ,KAAKjhS,GAAU80B,QAAQmsQ,KAAKvlS,OAAS,GACjC,KAAM,KAAMgizB,GAAShizB,OAASixwB,GAAUjxwB,SAEtE48d,KACIh9d,IAAOkizB,GAAM78B,UAAUrlxB,GAAKg9d,SAEhCt4d,GAAUuhxB,UAAU54wB,GAAKw5C,MAG3B,OAAIx5C,GAAK8sD,WACPA,GAAY+nvB,GAAQ70yB,GAAK8sD,UAAUn6D,IAAIkizB,GAAMj5yB,MAAM+zd,KAAY3vd,GAAK8sD,UACpEw+nB,GAAY,IAAImpH,GAAOxkC,EAAOzwtB,MAAM5jD,MAAM,EAAG07B,GAAKpZ,OAAO8lvB,GAAUjorB,UAAUp7C,OAAOo0wB,KAAY9kC,EAAOykC,WAAa,IAC7G,QAHT,GAKC1nzB,KAAKwyD,MAAMzsD,OAAQ,GAEf,CAACu4rB,UAAWA,GAAWj0rB,UAAWA,GAAWy1D,UAAWA,KAKjE2nvB,GAAOpnyB,UAAU2nyB,aAAe,SAAuB39yB,EAAWy1D,EAAWmovB,EAAaL,GAIxF,QAHIM,GAAW,GAAIR,GAAa1nzB,KAAK0nzB,WACjCS,GAAWnozB,KAAKwyD,MAAO41vB,IAAYR,GAAiBO,GAASpizB,OAASoizB,GAAStpyB,IAAIspyB,GAASpizB,OAAS,GAAK,KAErG4I,GAAI,EAAGA,GAAItE,EAAU4iD,MAAMlnD,OAAQ4I,KAAK,CAC/C,IACiE+4c,GAD7Dl7Z,GAAOniD,EAAU4iD,MAAMt+C,IAAGy9rB,OAAO/hsB,EAAUqhxB,KAAK/8wB,KAChDqE,GAAO,IAAIk9W,GAAK7lX,EAAU80B,QAAQmsQ,KAAK38R,IAAI69C,GAAMsT,IACjD4nZ,GAAS0gW,IAAYA,GAAS73wB,MAAMv9B,OACtCA,GAAO00c,GACP2gW,GAASH,GAASp1xB,MACXq1xB,GAAWA,GAASv5yB,MAAM,EAAGu5yB,GAASpizB,OAAS,IAExDmizB,GAASzizB,KAAKuN,IACV8sD,IACF4nvB,KACA5nvB,EAAY,MAET8nvB,IAAiBQ,GAAWp1yB,IAEnC,IAAIk+I,GAAWw2pB,GAAaO,EAAYzwtB,MACxC,OAAI05D,GAAWo3pB,KACbH,GA0GJ,YAAsB31vB,EAAO1kD,GAC3B,IAAIy6yB,EACJ/1vB,SAAM5rD,QAAQ,SAAUoM,EAAMrE,GAC5B,GAAIqE,EAAK8sD,WAAqB,GAAPhyD,IACrBy6yB,SAAW55yB,GACJ,IAGJ6jD,EAAM5jD,MAAM25yB,GAlHNC,CAAaL,GAAUj3pB,IAClCw2pB,IAAcx2pB,IAET,IAAIu2pB,GAAOU,GAASj3xB,OAAOg3xB,IAAWR,KAG/CD,GAAOpnyB,UAAUynyB,UAAY,SAAoB1/uB,EAAMqlE,GACrD,IAAI69J,EAAO,IAAIp/G,GACf,YAAK15H,MAAM5rD,QAAQ,SAAUoM,EAAMrE,IAGjC28R,EAAK0/e,UAAUh4wB,EAAKrN,IAFiB,MAArBqN,EAAKy1yB,cAAwB95yB,GAAIqE,EAAKy1yB,cAAgBrgvB,EAChEkjO,EAAKA,KAAKvlS,OAASiN,EAAKy1yB,aAAe,OAE5CrgvB,EAAMqlE,GACF69J,GAGTm8gB,GAAOpnyB,UAAUqoyB,QAAU,SAAkBz+wB,GAC3C,OAAuB,GAAnBjqC,KAAK0nzB,WAA0B1nzB,KAC5B,IAAIynzB,GAAOznzB,KAAKwyD,MAAMthC,OAAO+Y,EAAMtkC,IAAI,SAAUA,GAAO,OAAO,IAAIuqX,GAAKvqX,MAAW3F,KAAK0nzB,aAQjGD,GAAOpnyB,UAAUsoyB,QAAU,SAAkBC,EAAkBC,GAC7D,IAAK7ozB,KAAK0nzB,WAAc,OAAO1nzB,KAE/B,IAAI8ozB,EAAe,GAAI97xB,EAAQ9f,KAAKsB,IAAI,EAAGxO,KAAKwyD,MAAMzsD,OAAS8izB,GAE3D1pxB,GAAUypxB,EAAiBzpxB,QAC3B4pxB,GAAWH,EAAiB37vB,MAAMlnD,OAClC2hzB,GAAa1nzB,KAAK0nzB,WACtB1nzB,KAAKwyD,MAAM5rD,QAAQ,SAAUoM,IAAYA,GAAK8sD,WAAa4nvB,MAAmB16xB,GAE9E,IAAIg8xB,GAAWH,EACf7ozB,KAAKwyD,MAAM5rD,QAAQ,SAAUoM,IAC3B,IAAI61E,GAAM1pD,GAAQksvB,YAAY29B,IAC9B,GAAW,MAAPnguB,GACJkguB,IAAW77yB,KAAKulC,IAAIs2wB,GAAUlguB,IAC9B,IAAIljF,GAAMw5B,GAAQmsQ,KAAKziN,IACvB,GAAI71E,GAAKw5C,KAAM,CACb,IAAIA,GAAOo8vB,EAAiB37vB,MAAM47B,IAAKujnB,OAAOw8G,EAAiBl9B,KAAK7isB,KAChE/oB,GAAY9sD,GAAK8sD,WAAa9sD,GAAK8sD,UAAUn6D,IAAIw5B,GAAQvwB,MAAMo6yB,GAAW,EAAGnguB,KAC7E/oB,IAAa4nvB,KACjBoB,EAAarjzB,KAAK,IAAIyqX,GAAKvqX,GAAK6mD,GAAMsT,UAEtCgpvB,EAAarjzB,KAAK,IAAIyqX,GAAKvqX,OAE5BqnB,GAGH,QADIi8xB,GAAU,GACLt6yB,GAAIk6yB,EAAcl6yB,GAAIo6yB,GAAUp6yB,KACrCs6yB,GAAQxjzB,KAAK,IAAIyqX,GAAK/wV,GAAQmsQ,KAAK38R,MACvC,IAAI6jD,GAAQxyD,KAAKwyD,MAAM5jD,MAAM,EAAGoe,GAAOkE,OAAO+3xB,IAAS/3xB,OAAO43xB,GAC1DI,GAAS,IAAIzB,GAAOj1vB,GAAOk1vB,IAE/B,OAAIwB,GAAOC,iBAlJS,MAmJhBD,GAASA,GAAO1mD,SAASxiwB,KAAKwyD,MAAMzsD,OAAS+izB,EAAa/izB,SACvDmjzB,IAGTzB,GAAOpnyB,UAAU8oyB,eAAiB,WAChC,IAAIvxsB,EAAQ,EACZ,YAAKplD,MAAM5rD,QAAQ,SAAUoM,GAAaA,EAAKw5C,MAAQorD,MAChDA,GAST6vsB,GAAOpnyB,UAAUmivB,SAAW,SAAmBomB,QAC7B,IAATA,IAAkBA,EAAO5oxB,KAAKwyD,MAAMzsD,QAE3C,IAAI8hzB,EAAQ7nzB,KAAK8nzB,UAAU,EAAGl/B,GAAOjmT,EAAUklV,EAAMv8gB,KAAKvlS,OACtDysD,EAAQ,GAAIumD,GAAS,EACzB,YAAKvmD,MAAM5rD,QAAQ,SAAUoM,GAAMrE,IACjC,GAAIA,IAAKi6wB,EACPp2tB,EAAM/sD,KAAKuN,IACPA,GAAK8sD,WAAai5C,aACb/lG,GAAKw5C,KAAM,CACpB,IAAIA,GAAOx5C,GAAKw5C,KAAK7mD,IAAIkizB,EAAMj5yB,MAAM+zd,IAAWh9d,GAAM6mD,IAAQA,GAAKguD,SAGnE,GAFAmoX,IACIh9d,IAAOkizB,EAAM78B,UAAUrlxB,GAAKg9d,GAC5Bn2a,GAAM,CACR,IAAIsT,GAAY9sD,GAAK8sD,WAAa9sD,GAAK8sD,UAAUn6D,IAAIkizB,EAAMj5yB,MAAM+zd,IAC7D7ia,IAAai5C,KACjB,IAAuD2uW,GAAnDt3R,GAAU,IAAI8/L,GAAKvqX,GAAIymsB,SAAU5/oB,GAAMsT,IAAoBw3D,GAAO9kE,EAAMzsD,OAAS,GACjF2hd,GAASl1Z,EAAMzsD,QAAUysD,EAAM8kE,IAAM/mF,MAAM6/I,KAC3C59H,EAAM8kE,IAAQowV,GAEdl1Z,EAAM/sD,KAAK2qL,UAERp9K,GAAKrN,KACdg9d,KAED3ie,KAAKwyD,MAAMzsD,OAAQ,GACf,IAAI0hzB,GAAOX,QAAkBt0vB,EAAMu8B,WAAYgqB,KAGxD0usB,GAAOhouB,MAAQ,IAAIgouB,GAAOX,SAAoB,GAa9C,IAAI52b,GAAO,SAAcvqX,EAAK6mD,EAAMsT,EAAW2ovB,GAE7CzozB,KAAK2F,IAAMA,EAEX3F,KAAKwsD,KAAOA,EAIZxsD,KAAK8/D,UAAYA,EAGjB9/D,KAAKyozB,aAAeA,GAGtBv4b,GAAK7vW,UAAUkwB,MAAQ,SAAgB8uB,GACrC,GAAIr/D,KAAKwsD,MAAQ6S,EAAM7S,OAAS6S,EAAMS,UAAW,CAC/C,IAAItT,EAAO6S,EAAM7S,KAAKjc,MAAMvwC,KAAKwsD,MACjC,GAAIA,EAAQ,OAAO,IAAI0jU,GAAK1jU,EAAKguD,SAAS4xlB,SAAU5/oB,EAAMxsD,KAAK8/D,aAOnE,IAAIspvB,GAAe,SAAsBzxrB,EAAM0xrB,EAAQC,EAAYC,GACjEvpzB,KAAK23H,KAAOA,EACZ33H,KAAKqpzB,OAASA,EACdrpzB,KAAKspzB,WAAaA,EAClBtpzB,KAAKupzB,SAAWA,GAGdjB,GAAiB,GAsDrB,YAAmB3izB,GACjB,IAAI4M,EAAS,GACb5M,SAAIiB,QAAQ,SAAUumI,EAAOC,EAAKhlE,EAAMqlE,IAAM,OAAOl7H,EAAO9M,KAAK2iE,EAAMqlE,MAChEl7H,EAGT,YAAmB6ud,EAAQjic,GACzB,IAAKiic,EAAU,OAAO,KAEtB,QADI7ud,EAAS,GACJ5D,EAAI,EAAGA,EAAIyyd,EAAOr7d,OAAQ4I,GAAK,EAAG,CACzC,IAAIy5D,EAAOjpC,EAAQx5B,IAAIy7d,EAAOzyd,GAAI,GAAI8+H,GAAKtuG,EAAQx5B,IAAIy7d,EAAOzyd,EAAI,IAAI,GAClEy5D,GAAQqlE,IAAMl7H,EAAO9M,KAAK2iE,EAAMqlE,IAEtC,OAAOl7H,EAMT,YAAyBk0M,EAASv8M,EAAOkkO,EAAUm8P,GACjD,IAAIq9U,EAAgB4B,GAAkBt/yB,GAAQ+9yB,GAAcwB,GAAW5qyB,IAAI3U,GAAOq5d,KAAK9wd,OACnFqgB,IAAOy3c,EAAO9jR,EAAQ4imB,OAAS5imB,EAAQ9uF,MAAMgwrB,SAASz9yB,EAAO09yB,GACjE,GAAK90xB,GAEL,KAAIgtC,GAAYhtC,GAAIgtC,UAAUl4C,QAAQkL,GAAIzoB,UAAUm+W,KAChD61F,IAASksB,EAAO9jR,EAAQ9uF,KAAO8uF,EAAQ4imB,QAAQrB,aAAal1xB,GAAIzoB,UAAWH,EAAM41D,UAAUuja,cAC/B4kV,GAAaL,GAEzE8B,GAAU,IAAIN,GAAa7+U,EAAOlsB,GAAQvrb,GAAIwrqB,UAAW/zN,EAAOz3c,GAAIwrqB,UAAYjgP,GAAO,KAAM,GACjGjwO,EAASt7M,GAAIzoB,UAAUw4d,aAAa/ia,IAAWs0tB,QAAQq1B,GAAY,CAACl/U,KAAMA,EAAMo/U,aAAcD,KAAU/hV,mBAG1G,IAAIiiV,IAAsB,EAAOC,GAA6B,KAK9D,YAA2B3/yB,GACzB,IAAIule,EAAUvle,EAAMule,QACpB,GAAIo6U,IAA8Bp6U,EAAS,CACzCm6U,IAAsB,EACtBC,GAA6Bp6U,EAC7B,QAAS9ge,EAAI,EAAGA,EAAI8ge,EAAQ1pe,OAAQ4I,IAAO,GAAI8ge,EAAQ9ge,GAAG40d,KAAKumV,qBAAsB,CACnFF,IAAsB,EACtB,OAGJ,OAAOA,GAWT,IAAIH,GAAa,IAAIt4U,GAAU,WAC3B44U,GAAkB,IAAI54U,GAAU,gBAsBpC,YAAiB1+d,GACfA,OAEO,IAAI47N,GAAO,CAChBx7N,IAAK42yB,GAELv/yB,MAAO,CACL8nD,KAAM,WACJ,OAAO,IAAIo3vB,GAAa3B,GAAOhouB,MAAOgouB,GAAOhouB,MAAO,KAAM,IAE5D9rD,MAAO,SAAem+J,EAAI0lC,EAAMttN,GAC9B,OA9IR,YAA0Bu8M,EAASv8M,EAAO4nL,EAAI/yK,GAC5C,IAAwC4pyB,GAApCqB,EAAYl4nB,EAAGuimB,QAAQo1B,IAC3B,GAAIO,EAAa,OAAOA,EAAUL,aAE9B73nB,EAAGuimB,QAAQ01B,MAAoBtjmB,EAAU,IAAI2imB,GAAa3imB,EAAQ9uF,KAAM8uF,EAAQ4imB,OAAQ,KAAM,IAElG,IAAIntR,GAAWpqW,EAAGuimB,QAAQ,uBAE1B,GAAuB,GAAnBvimB,EAAG7kI,MAAMlnD,OACX,OAAO0gN,EACF,GAAIy1U,IAAYA,GAASm4P,QAAQo1B,IACtC,OAAIvtR,GAASm4P,QAAQo1B,IAAYl/U,KACtB,IAAI6+U,GAAa3imB,EAAQ9uF,KAAKqwrB,aAAal2nB,EAAI,KAAM/yK,EAASyqyB,GAAkBt/yB,IACjEu8M,EAAQ4imB,OAAQY,GAAUn4nB,EAAG3yJ,QAAQmsQ,KAAKx5G,EAAG7kI,MAAMlnD,OAAS,IAAK0gN,EAAQ8imB,UAExF,IAAIH,GAAa3imB,EAAQ9uF,KAAM8uF,EAAQ4imB,OAAOrB,aAAal2nB,EAAI,KAAM/yK,EAASyqyB,GAAkBt/yB,IACjF,KAAMu8M,EAAQ8imB,UACnC,IAAmC,IAA/Bz3nB,EAAGuimB,QAAQ,iBAA+Bn4P,KAAiD,IAArCA,GAASm4P,QAAQ,gBAQ3E,OAAIs0B,GAAU72nB,EAAGuimB,QAAQ,YAGvB,IAAI+0B,GAAa3imB,EAAQ9uF,KAAKgxrB,QAAQ72nB,EAAI62nB,IACzBlimB,EAAQ4imB,OAAOV,QAAQ72nB,EAAI62nB,IAC3BuB,GAAUzjmB,EAAQ6imB,WAAYx3nB,EAAG3yJ,SAAUsnL,EAAQ8imB,UAEpE,IAAIH,GAAa3imB,EAAQ9uF,KAAK+wrB,QAAQ52nB,EAAG3yJ,QAAQmsQ,MAChC7kF,EAAQ4imB,OAAOX,QAAQ52nB,EAAG3yJ,QAAQmsQ,MAClC4+gB,GAAUzjmB,EAAQ6imB,WAAYx3nB,EAAG3yJ,SAAUsnL,EAAQ8imB,UAf3E,IAAIY,GAA+B,GAApB1jmB,EAAQ8imB,WAAkBrtR,KAAaz1U,EAAQ8imB,UAAYz3nB,EAAGnmC,MAAQ,GAAK5sI,EAAQqryB,gBAmBtG,YAAsB//yB,EAAWi/yB,GAC/B,IAAKA,EAAc,OAAO,EAC1B,IAAKj/yB,EAAUshxB,WAAc,OAAO,EACpC,IAAI0+B,GAAW,EACfhgzB,SAAU80B,QAAQmsQ,KAAK,GAAG1kS,QAAQ,SAAUomB,EAAOsd,GACjD,QAAS37B,GAAI,EAAGA,GAAI26yB,EAAWvjzB,OAAQ4I,IAAK,EACpCqe,GAASs8xB,EAAW36yB,GAAI,IAAM27B,GAAOg/wB,EAAW36yB,MAClD07yB,GAAW,KAEZA,EA3BkDC,CAAax4nB,EAAI20B,EAAQ6imB,aAC5EA,GAAaptR,GAAWguR,GAAUzjmB,EAAQ6imB,WAAYx3nB,EAAG3yJ,SAAW8qxB,GAAUn4nB,EAAG3yJ,QAAQmsQ,KAAKx5G,EAAG7kI,MAAMlnD,OAAS,IACpH,OAAO,IAAIqjzB,GAAa3imB,EAAQ9uF,KAAKqwrB,aAAal2nB,EAAIq4nB,GAAWjgzB,EAAM41D,UAAUuja,cAAgB,KAC/Ctkd,EAASyqyB,GAAkBt/yB,IACrDu9yB,GAAOhouB,MAAO6puB,GAAYx3nB,EAAGnmC,MAsH1CkpoB,CAAiBr9jB,EAAMttN,EAAO4nL,EAAIr/K,KAI7CA,OAdFA,EAAS,CAAC+kF,MAAO/kF,GAAUA,EAAO+kF,OAAS,IACjC4ytB,cAAe33yB,GAAUA,EAAO23yB,eAAiB,KAezDhnqB,MAAO,CACLy8pB,gBAAiB,CACf7F,YAAa,SAAqB33xB,EAAMpZ,GACtC,IAAIo3H,EAAyB,eAAfp3H,EAAEq3e,UAA6B3V,GAAKtod,EAAKnY,MAAOmY,EAAK+rN,UAChD,eAAfnlO,EAAEq3e,WAA6B/V,GAAKlod,EAAKnY,MAAOmY,EAAK+rN,UACzD,OAAI/tG,GAAWp3H,EAAEi5C,iBACVm+E,OASjB,YAAcn2H,EAAOkkO,GACnB,IAAI5W,EAAOiylB,GAAWlqpB,SAASr1J,GAC/B,SAAKstN,GAAgC,GAAxBA,EAAK7/F,KAAK+vrB,aACnBt5kB,GAAYm8kB,GAAgB/ylB,EAAMttN,EAAOkkO,GAAU,GAChD,IAKT,YAAclkO,EAAOkkO,GACnB,IAAI5W,EAAOiylB,GAAWlqpB,SAASr1J,GAC/B,SAAKstN,GAAkC,GAA1BA,EAAK6xlB,OAAO3B,aACrBt5kB,GAAYm8kB,GAAgB/ylB,EAAMttN,EAAOkkO,GAAU,GAChD,IC9aT,IAAIo8kB,GAAY,SAAmBjpyB,EAAOyijB,GACxChkkB,KAAKuhB,MAAQA,EACbvhB,KAAKgkkB,QAA4B,iBAAXA,EAGxB,YAAuBjlF,GACrB,OAAO,SAAS70e,EAAOqX,EAAOyL,EAAOsd,GACnC,IAAIk0C,GAASuga,EACb,GAAIx9d,EAAM,GAAI,CACZ,IAAI6Q,GAAS7Q,EAAM,GAAGiP,YAAYjP,EAAM,IACxCi9D,IAAUj9D,EAAM,GAAG3S,MAAMwjB,GAAS7Q,EAAM,GAAGxb,QAE3C,IAAI0kzB,IADJz9xB,GAASoF,IACYkY,EACjBmgxB,GAAS,IACXjsuB,GAASj9D,EAAM,GAAG3S,MAAMwjB,GAASq4xB,GAAQr4xB,IAAUosD,GACnDxxD,EAAQsd,GAGZ,OAAOpgC,EAAM4nL,GAAG42S,WAAWlqZ,GAAQxxD,EAAOsd,IAhBAogxB,CAAc1mP,GAAWA,GA8EvE,YAAuB95jB,EAAOkkO,GAE5B,QADIqhQ,EAAUvle,EAAMule,QACX9ge,EAAI,EAAGA,EAAI8ge,EAAQ1pe,OAAQ4I,IAAK,CACvC,IAAIimxB,EAASnlT,EAAQ9ge,GAAIg8yB,QAAY,EACrC,GAAI/1B,EAAOrxT,KAAKqnV,eAAiBD,GAAW/1B,EAAOr1nB,SAASr1J,IAAS,CACnE,GAAIkkO,EAAU,CAEZ,QADIt8C,GAAK5nL,EAAM4nL,GAAI+4nB,GAASF,GAAStgzB,UAC5Bm3F,GAAIqptB,GAAO59vB,MAAMlnD,OAAS,EAAGy7F,IAAK,EAAGA,KAC1CswF,GAAGtlI,KAAKq+vB,GAAO59vB,MAAMu0C,IAAG4qmB,OAAOy+G,GAAOn/B,KAAKlqrB,MAC/C,GAAImptB,GAAS7/yB,KAAM,CACjB,IAAI6iO,GAAQ77C,GAAG02L,IAAI5gW,QAAQ+iyB,GAASvivB,MAAMulK,QAC1C77C,GAAGj1I,YAAY8twB,GAASvivB,KAAMuivB,GAASl9qB,GAAIvjI,EAAM4iO,OAAOhiO,KAAK6/yB,GAAS7/yB,KAAM6iO,UAE5E77C,GAAG3yK,OAAOwryB,GAASvivB,KAAMuivB,GAASl9qB,IAEpC2gG,EAASt8C,IAEX,OAAO,GAGX,OAAO,EAII,IAAI04nB,GAAU,MAAO,UAEnB,IAAIA,GAAU,UAAW,UAElB,IAAIA,GAAU,uCAAwC,UAErD,IAAIA,GAAU,KAAM,UAErB,IAAIA,GAAU,uCAAwC,UAErD,IAAIA,GAAU,KAAM,UCtHpC,MAAMxiV,GAAO,CAChBO,KAAM,SACNqvT,SAAU,CAAC,KACXC,SAAU,CAAE7yxB,KAAM,cAAerB,MAAO,8BAK/Bgle,GAAS,CAClBJ,KAAM,KACNqvT,SAAU,CAAC,KACXC,SAAU,CAAE7yxB,KAAM,aAAcrB,MAAO,cAK9Bole,GAAY,CACrBR,KAAM,IACNsvT,SAAU,CAAE7yxB,KAAM,kBAAmBrB,MAAO,iBAKnCile,GAAgB,CACzBL,KAAM,MACNsvT,SAAU,CAAE7yxB,KAAM,kBAAmBrB,MAAO,oBAKnCkle,GAAY,CACrBN,KAAM,OAKGO,GAAc,CACvBP,KAAM,OAKG9qP,GAAO,CAChB8qP,KAAM,QCvCJq5T,GAA2B,oBAAdr9vB,WAA4B,MAAMi3Y,KAAKj3Y,UAAUrf,UAEvDmtd,GAAc,CAACvlQ,EAAQ/tN,KAChC,MAAMvb,EAAO,GACPyke,EAAelpd,GAAWA,EAAQkpd,cAAgB,EAmBxD,GAlBAzke,EAAK,SAAWmne,GAChBnne,EAAK,eAAiB+me,GAEtB/me,EAAKmoZ,UAAe8xY,GAAcqtB,GAAe32B,GAAiBuJ,GAAcC,IAEhFn6xB,EAAK22X,MAAWsja,GAAcM,GAAeC,GAAqBC,GAAgB8sB,IAC7EnpB,KACDp+xB,EAAK,SAAW+me,IAEhBz9P,EAAOa,MAAMq9kB,SACbxnzB,EAAK,SAAW0ke,GAAiBC,GAAoBtie,OAAOw0D,OAAO,GAAI2ta,GAAM,CAAEC,kBAE/En7P,EAAOa,MAAMs9kB,KACbznzB,EAAK,SAAW0ke,GAAiBC,GAAoBtie,OAAOw0D,OAAO,GAAIsua,GAAQ,CAAEV,kBAEjFn7P,EAAOa,MAAM9gL,IACbrpD,EAAK,SAAW0ke,GAAiBC,GAAoBtie,OAAOw0D,OAAO,GAAI0ua,GAAW,CAAEd,kBAEpFn7P,EAAOrrG,MAAM+krB,WAAY,CACzB,MAAM5wyB,EAAKk3N,EAAOrrG,MAAM+krB,WAClBxrkB,GAAMyijB,GAAcS,GAAU,CAACh0xB,GAAOkkO,MACxCA,GAASlkO,GAAM4nL,GAAGmimB,qBAAqBr+wB,EAAGosD,UAAU2la,mBAC7C,IAEXnke,EAAK,eAAiBw3O,GAE1B,OAAOx3O,GAEE4ue,GAAmBtlQ,IAC5B,MAAMtpO,EAAO,GACb,OAAIspO,EAAOrrG,MAAM8vW,YAEb/te,EAAK22X,MXsM0Bmha,IAAa,CAACpxxB,EAAOkkO,IN5H5D,YAAuBktjB,GACrB,OAAO,SAASpxxB,EAAOkkO,GACrB,IAAI3tH,EAAMv2G,EAAM41D,UACZwha,EAAQ7gX,EAAI6gX,MACZC,GAAM9gX,EAAI8gX,IACVn8c,GAAOq7F,EAAIr7F,KACf,GAAKA,IAAQA,GAAKkzvB,SAAYh3S,EAAM9pY,MAAQ,IAAM8pY,EAAMo7S,WAAWn7S,IAAQ,OAAO,EAClF,IAAI2pV,GAAc5pV,EAAMl8c,MAAK,GAC7B,GAAI8lyB,GAAYpjzB,MAAQwzxB,EAAY,OAAO,EAC3C,GAAiC,GAA7Bh6T,EAAMjlH,OAAOz9V,QAAQowC,MAAasya,EAAMl8c,MAAK,GAAIg5c,YAAckD,EAAMy6S,YAAW,GAAK,CAIvF,GAAmB,GAAfz6S,EAAM9pY,OAAc8pY,EAAMl8c,MAAK,GAAItd,MAAQwzxB,GAC3Ch6T,EAAM19c,OAAM,IAAO09c,EAAMl8c,MAAK,GAAIg5c,WAAa,EAAK,OAAO,EAC/D,GAAIhwP,EAAU,CAKZ,QAJI9zK,GAAOkoa,QACP2oV,GAAc7pV,EAAM19c,OAAM,GAAM,EAAI09c,EAAM19c,OAAM,GAAM,EAAI,EAGrDpY,GAAI81d,EAAM9pY,MAAQ2ztB,GAAa3/yB,IAAK81d,EAAM9pY,MAAQ,EAAGhsF,KAC1D8uD,GAAOkoa,OAAclB,EAAMl8c,KAAK5Z,IAAGu5D,KAAKzK,KAC5C,IAAI8wvB,GAAa9pV,EAAMy6S,YAAW,GAAMz6S,EAAMl8c,MAAK,GAAIg5c,WAAa,EAC9DkD,EAAMy6S,YAAW,GAAMz6S,EAAMl8c,MAAK,GAAIg5c,WAAa,EAAI,EAE7D9ja,GAAOA,GAAKppC,OAAOsxc,OAAc84T,EAASh5T,kBAC1C,IAAIt1c,GAAQs0c,EAAMt1a,OAAOs1a,EAAM9pY,OAAS2ztB,GAAc,IAClD1N,GAAOvzyB,EAAM4nL,GAAGvmK,QAAQyB,GAAOs0c,EAAMxjb,OAAOstwB,IAAa,IAAI1oV,EAAMpoa,GAAM,EAAI6wvB,GAAa,IAC1FvoV,IAAM,EACV66U,GAAKj1b,IAAIwvZ,aAAahrvB,GAAOywxB,GAAKj1b,IAAI5pW,QAAQowC,KAAM,SAAU5pC,GAAMyjE,IAClE,GAAI+5Y,IAAM,EAAM,OAAO,EACnBx9c,GAAKq/c,aAAoC,GAArBr/c,GAAKxG,QAAQowC,OAAa4za,GAAM/5Y,GAAM,KAE5D+5Y,IAAM,GAAM66U,GAAK56U,aAAa34d,EAAM41D,UAAUhgE,YAAY0yxB,KAAKirB,GAAKj1b,IAAI5gW,QAAQg7c,MACpFx0P,EAASqvkB,GAAK91U,kBAEhB,OAAO,EAET,IAAI49S,GAAWhkT,GAAI14Y,KAAOy4Y,EAAMh3b,MAAQ4gxB,GAAYrtC,eAAe,GAAGc,YAAc,KAChF7slB,GAAK5nL,EAAM4nL,GAAG3yK,OAAOmid,EAAMz4Y,IAAK04Y,GAAI14Y,KACpCsuM,GAAQouf,IAAY,CAAC,KAAM,CAACz9wB,KAAMy9wB,KACtC,QAAKoX,GAAS7qmB,GAAG02L,IAAK84G,EAAMz4Y,IAAK,EAAGsuM,MAChC/oD,GAAYA,EAASt8C,GAAG96K,MAAMsqd,EAAMz4Y,IAAK,EAAGsuM,IAAOwwM,mBAChD,IMmFA0jV,CAAc/vB,EAAd+vB,CAAwBnhzB,EAAO4nL,IAClC,IAAI67C,EAAQzjO,EAAMspxB,aAAgBtpxB,EAAM41D,UAAUyha,IAAIs5S,cAAgB3wwB,EAAM41D,UAAUwha,MAAM3zP,QACxFA,GACA77C,EAAG+gmB,YAAYlljB,GAEnBS,EAASt8C,KW7MOw5nB,CAAuBx+kB,EAAOrrG,MAAM8vW,YAEjD/te,GC9CL+nzB,GAAgB,wEAOhBC,GAAoB92yB,GACf,oBAAoB8ma,KAAK9ma,EAAQ0oC,WAEtCiiV,GAAaj6W,IACf,IAAIta,EAAOsa,EAAKi4B,UAChBvyC,SAAOA,EAAKygB,QAAQ,oBAAqB,IACzCzgB,EAAOA,EAAKygB,QAAQ,mBAAoB,IACjCzgB,GAEL4jL,GAAa,CAAC5mL,EAAM2jzB,KACtB,MAAM3jxB,EAAOnmB,SAAS+O,cAAc5oB,GACpCggC,SAAK39B,MAAMy7uB,cAAgB6lE,EACpB3jxB,GAEL4jxB,GAA2B3yY,GACzB,sCAAsCyC,KAAKzC,GACpC,KAEF,KAAKyC,KAAKzC,GACR,SAGA,SAGT4yY,GAAyB5yY,IAC3B,IAAIjxa,EAAO,KACX,MAAK,MAAM0za,KAAKzC,KACZjxa,GAAQ,SAAS0za,KAAKzC,GAAU,SAAW,WACtC,cAAcyC,KAAKzC,GAAU,QAAU,UAEzCjxa,GAEL8jzB,GAAqB,CAACnqrB,EAAOjwE,KAC/B,IAAI9oB,EAAQ,GACZp6B,MAAM85D,KAAKq5D,GAAO76H,QAAQwe,IACtB,GAAIA,EAAK8+V,WAAar0O,KAAKg8qB,aACvB,OAEJ,IAAIn3yB,EAAU0Q,EACV1Q,EAAQozC,aAAa,aACrBpf,EAAMjjC,KAAK2f,GACXosC,EAAOhJ,IAAI9f,IAEN8ixB,GAAiB92yB,IAAYg0B,EAAM3iC,OACxC2iC,EAAMjjC,KAAK2f,IAGXsjB,EAAQ,GACiB,QAAzBguH,EAAYj8F,SACRmxvB,GAAmBl3yB,EAAQ8pD,SAAUhN,GAEX,UAArB98C,EAAQ+lD,UACbnsD,MAAM85D,KAAK1zD,EAAQ6pC,iBAAiB,UAAU33C,QAAQmjR,KAClD6hiB,GAAmB7hiB,GAAKvrN,SAAUhN,SAMhDk+H,GAAajrH,IACf,IAAIu5C,EAAOv5C,EAAEpnB,UACTyuwB,EAAiB19wB,GACVA,EAAE7iB,QAAQ,8BAA+B,IAGpD,OADAyyF,EAAOA,EAAKzyF,QAAQ,iBAAkB,IAAIA,QAAQ,UAAW,QACxD,mDAA6CiwZ,KAAKx9T,GAC5C,CACHmvH,IAAK,KACLhjO,MAAOuhzB,GAAwBI,EAAczsb,GAAU56T,MAG3D,6BAA6B+2W,KAAKx9T,GAC3B,CACHmvH,IAAK,KACLhjO,MAAOwhzB,GAAsBG,EAAczsb,GAAU56T,WAH7D,GAOEsnvB,GAAetnvB,IACjB,IAAI7lD,EAAS5Z,EAAOy/D,EAAEhK,SAASp/B,cAC3BopC,EAAEstP,YAActtP,EAAEstP,WAAWmyD,WAAar0O,KAAKm8qB,cAC/CvnvB,EAAE/mB,YAAY+mB,EAAEstP,YAEQ,IAA5BsgR,EAAM4M,WAAWl5kB,OACb6Y,EAAU6lD,EAAEstP,WAAWmyD,WAAar0O,KAAKo8qB,UACrC5sb,GAAU56T,GAAKA,EAAEstP,WAAW10Q,UAAU9xB,QAAQ,uBAAwB,KAG1Ek5C,EAAE/mB,YAAY+mB,EAAEstP,YAEc,IAA1BttP,EAAEstP,WAAWmyD,UACT,kBAAkBs3D,KAAK/2W,EAAEstP,WAAW20d,YACpCjitB,EAAE/mB,YAAY+mB,EAAEstP,YAGpB,kBAAkBypH,KAAK/2W,EAAEstP,WAAW10Q,YACpConB,EAAE/mB,YAAY+mB,EAAEstP,YAGhBnzS,EADS,MAAT5Z,EACU,IAAMA,EAAO,IAAMy/D,EAAEpnB,UAAY,KAAOr4C,EAAO,IAG/Cy/D,EAAEpnB,WAGpBonB,EAAEgpF,WAAW/vG,YAAY+mB,GACzB,MAAM4f,EAAK1iE,SAAS+O,cAAc,MAClC2zD,SAAGhnC,UAAYz+B,EACRylE,GChHEinF,GAAYttD,IASrBA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,EAAOA,EAAKzyF,QAAQ,0EAA2E,OACnFA,QAAQ,sBAAuB,KAC/BA,QAAQ,qBAAsB,KAC9BA,QAAQ,2BAA4B,KACpCA,QAAQ,8BAA+B,KACvCA,QAAQ,iBAAkB,KAC1BA,QAAQ,8BAA+B,KACvCA,QAAQ,sBAAuB,KAC/BA,QAAQ,4BAA6B,KACrCA,QAAQ,iBAAkB,IAM7B+id,GAAkBtwX,GACpBA,EAAKzyF,QAAQ,mBAAoB,IAW/Bu7I,GAAmB+zT,IACxBA,EAAKqxV,cACLrxV,EAAKqxV,aAAaplpB,gBAAgB+zT,EAAK71d,OAMlCque,GAAqBxY,IAC1B,OAAOr/C,KAAKq/C,EAAKl3d,QACjBmjK,GAAgB+zT,IAGlBsxV,GAAc,UACdC,GAAkB,UAIXh5U,GAAqBvY,IAC9B,MAAMpiW,EAASoiW,EAAKl3d,MAAMqT,MAAMm1yB,IAAap/yB,OAAOu8B,IAAM0+R,QAAQ1+R,KAE5D+ixB,EADUxxV,EAAKqxV,aACW/hzB,MAChC,IAAiBnF,GAAMrB,GAAnB4O,EAAS,GACbkmH,EAAO7xH,QAAQuD,MACVnF,GAAMrB,IAASwG,GAAM6M,MAAMo1yB,SACEjnzB,IAA1BknzB,EAAgBrnzB,MAChBuN,GAAW,GAAEvN,OAASrB,UAG9B4O,EAASA,EAAOmyB,OAChBgyH,EACImkU,EAAKl3d,MAAQ4O,EAGbu0J,GAAgB+zT,IAgCX0Y,GAAe,CAACv1X,EAAM3iG,KAC/B,IAAI9I,EAASyrG,EAOb,GANI3iG,EAASyyd,iBACTv7d,ED4EuByrG,KAC3B,MAAMy/C,EAAY97I,SAAS+O,cAAc,OACzC+sI,EAAUpgH,UAlLa2gE,IAChBA,EAAKzyF,QAAQggyB,GAAe,CAAChqyB,EAAOumB,EAAMo6E,IACrC,aAAYp6E,iBAAoBo6E,MAAU3gG,KAgLhC+qyB,CAAkBtusB,GACxC,MAAMxsD,EAAS,IAAI6W,IACnBujvB,UAAmBnupB,EAAUj/F,SAAUhN,GACvCA,EAAO5qD,QAAQ2lzB,GAhEHnyB,KACZ,IAAkC/1sB,EAAImouB,EAAYC,GAAWC,GAAYC,GAAcC,GAAUp6vB,GAAO7jD,GAAG81D,GAAG38D,GAAMymC,GAAQzG,GAAM+kxB,GAA9HC,GAAa,EAAIC,EAAS,GAC9B,IAAKp+yB,GAAI,EAAGA,GAAIyrxB,EAAWr0xB,OAAQ4I,KAAK,CACpC81D,GAAI21tB,EAAWzrxB,IACfk+yB,GAAW,CACPG,SAAUvovB,GAAE3c,aAAa,YACzBmlwB,UAAWxovB,GAAE3c,aAAa,cAE9B,IAAIqzY,GAAY0xX,GAASG,SACrB/wB,GAAWvsmB,GAAUjrH,IAEzB,GADA38D,GAAOm0xB,IAAYA,GAAS9ujB,KACvBrlO,GAAM,CACHu8E,KAAQsouB,IAAgBnB,GAAiB/mvB,OACrCA,GAAEt6D,MAAMkM,aACRouD,GAAEt6D,MAAMkM,WAAa,IAErBouD,GAAEt6D,MAAMkM,aAERouD,GAAEt6D,MAAMokC,OAAS,IAErB81C,EAAGxpC,YAAY4pB,KAEnB,SAGJ,GADAl2B,GAASs+wB,GAASI,WAAatoxB,WAAW8/B,GAAEt6D,MAAMkM,YAAc,IAC3Dw2yB,GAASI,YAAcxovB,GAAEt6D,MAAMkM,WAChC,SAEJ,IAAI62yB,GAAYplzB,GAAOqzb,GAClB4xX,EAAOx+wB,MACRw+wB,EAAOx+wB,IAAU,MAEhBi+wB,GAAcA,EAAa,KAC5BA,EAAaj+wB,GACbk+wB,GAAYtxX,GACZ3oY,GAAQ4nuB,EAAWrtxB,OAAO9D,IAAKA,GAAE6+C,aAAa,cAAgB90B,OAAOy5xB,KACrEC,GAAal6vB,GAAMA,GAAMzsD,OAAS,GAClC6mzB,GAAWl+nB,GAAW5mL,GAAMm0xB,IAAYA,GAAS9xxB,OACjDs6D,GAAEgpF,WAAW4wN,aAAauuc,GAAUnovB,IACpCqovB,EAAav+wB,GACbw+wB,EAAOx+wB,IAAQ2+wB,IAAaN,IAEhCD,GAAeD,KAAejovB,GAC9B38B,GAAOilxB,EAAOx+wB,IAAQ2+wB,KAClB3+wB,GAASu+wB,IAAehlxB,MACxBA,GAAO4mJ,GAAW5mL,GAAMm0xB,IAAYA,GAAS9xxB,OAC7C4izB,EAAOx+wB,IAAQ2+wB,IAAaplxB,GAC5Bu8C,EAAGxpC,YAAY/S,KAEnBu8C,EAAK0nuB,GAAYtnvB,IACjB38B,GAAK+S,YAAYwpC,GACjB6ptB,GACIse,EAAaM,GAAa,EAG1BA,EAAav+wB,KASa4+wB,CAAOZ,IAClC9upB,EAAUpgH,WClFJywb,CAAev7d,IAExB8I,EAAS+yd,YACT77d,EA9EiB,EAACyrG,EAAMovsB,IACrBpvsB,EAAKzyF,QAAQ,IAAIo7U,OAAO,SAAWymd,EAAa,mBAAoB,MAAO,IA6ErEjgW,CAAU56c,EAAQ8I,EAAS+yd,YAEpC/yd,EAASylb,WAAY,CACrB,MAAM52C,EAAMvoY,SAAS+O,cAAc,OACnCw5X,EAAI7sW,UAAY9qC,EAChBjE,MAAM85D,KAAK8hV,EAAI3rW,iBAAiB,MAAM33C,QAAQwe,GA/BjC,EAACA,EAAM07a,KACxB,GAAI17a,EAAK8+V,WAAar0O,KAAKg8qB,aAAc,CACrC,QAASl9yB,EAAIyW,EAAK07a,WAAW/6b,OAAS,EAAG4I,GAAK,EAAGA,IAAK,CAClD,MAAMksd,EAAOz1c,EAAK07a,WAAWnyb,GACzBmyb,EAAW+5B,EAAK71d,MAChB87b,EAAW+5B,EAAK71d,MAAM61d,GAEjB/5B,EAAW,MAChBA,EAAW,KAAK+5B,GAGF,SAAlBz1c,EAAKq1C,UAAkD,IAA3Br1C,EAAK07a,WAAW/6b,QApBpCqf,KAChB,MAAMqoI,EAAaroI,EAAKqoI,WACxB,GAAIA,EAAY,CACZ,KAAOroI,EAAK2sS,YACRtkK,EAAW4wN,aAAaj5V,EAAK2sS,WAAY3sS,GAE7CqoI,EAAW/vG,YAAYt4B,KAenB02V,CAAW12V,KAmBuCioyB,CAAajoyB,EAAM/J,EAASylb,aAClFvub,EAAS23Y,EAAI7sW,UAEjB,OAAO9qC,GC9GJ,YAAqBiF,GACxB,MAAM81yB,EAAW,CAAEnhwB,MAAO,gBAAiB,mBAAoB30C,GAC/D,OAAO,IAAI62N,GAAO,CACdx7N,IAAK,IAAIs+d,GAAU,eACnB/tV,MAAO,CACHu3pB,YAAczwyB,IACV,MAAQs+W,OAAQt+W,EACV6nT,EAAay2D,EAAI5pW,QAAQmzS,WAG/B,KAFiC,IAAnBy2D,EAAI41G,YACM,IAAnB51G,EAAI41G,YAAoBrsK,EAAWyqd,eAA2C,IAA1Bzqd,EAAWqsK,YAEhE,OAAOq8U,SAEX,MAAME,GAAc,GACpBnyb,SAAIkxB,YAAY,CAACt0X,GAAMyjE,MACnB8xtB,GAAYl1yB,KAAK20yB,QAAgBvxtB,GAAKA,GAAMzjE,GAAK25c,SAAUuuV,MAExD7S,UAAqBjyb,EAAKmyb,QDyGhC,IAAIh0c,OAAO,OADL,uFAC6BhsT,OAAS,yBAA0B,KEzHvD,IAAIw2b,GAAU,aCAvC,MAAMo8U,GAAiB,IAAIp8U,GAAU,gBACtC63E,GAAa,CACfwkQ,UAAa,CAAE7jzB,EAAG,EAAGmqD,EAAG,GACxB25vB,KAAQ,CAAE9jzB,EAAG,EAAGmqD,EAAG,GACnB45vB,MAAS,CAAE/jzB,EAAG,EAAGmqD,EAAG,GACpB65vB,MAAS,CAAEhkzB,EAAG,EAAGmqD,GAAG,GACpB85vB,KAAQ,CAAEjkzB,GAAG,EAAImqD,EAAG,GACpB+5vB,UAAa,CAAElkzB,GAAG,EAAImqD,EAAG,GACzBg6vB,UAAa,CAAEnkzB,GAAG,EAAImqD,GAAG,GACzBi6vB,UAAa,CAAEpkzB,EAAG,EAAGmqD,GAAG,IAEtBk6vB,GAAUnozB,OAAOrC,KAAKwljB,IACtB18a,GAAU,CAACmlmB,EAASw8E,EAAUtqzB,KAChC8tuB,EAAQtnuB,MAAM8jzB,GAAYtqzB,EAAQ,MAEhCuqzB,GAAS,2BACTC,GAAa,OACnB,SACIruzB,YAAYwmkB,EAAc74c,EAAUywN,EAAMkwe,GACtCpuzB,KAAKsmkB,aAAeA,EACpBtmkB,KAAKytH,SAAWA,EAChBztH,KAAKk+U,KAAOA,EACZl+U,KAAKouzB,aAAeA,EAExBz6xB,MAAMm+J,GACF,IAAkBzmL,EAAOymL,EAAGuimB,QAAQk5B,IACpC,OAAIlizB,EACO,IAAIu6yB,GAAYv6yB,EAAKi7jB,aAAcj7jB,EAAKy6yB,YAAaz6yB,EAAK6yU,KAAM7yU,EAAK+izB,cAFpEpuzB,MAOpB,MAqGawye,GAAgB,CAACzzd,EAAU,CAAEqG,KAAM,QAASipyB,WAAW,KACzD,IAAIhglB,GAAO,CACdx7N,IAAK06yB,GACLlryB,KAAOisyB,IAAa,CAChB13a,SACQ22a,GAAehupB,SAAS+upB,EAAQpkzB,OAAOg0U,MACvCowe,EAAQlglB,SAASkglB,EAAQpkzB,MAAM4nL,GAAGsimB,QAAQ,UAAU,KAGxDj/wB,aACA,OAAOm5yB,EAAQjhlB,IAAIgvT,eAAiBiyR,EAAQjhlB,IAAIgvT,cAAcI,aAElEmd,eACI,MAAM1qE,EAAMlve,KAAKmV,OACb+5d,IACAA,EAAIhyc,oBAAoB,SAAUl9B,KAAK42Y,QACvCs4F,EAAI15d,iBAAiB,SAAUxV,KAAK42Y,UAG5C23a,eACI,MAAMr/U,EAAMlve,KAAKmV,OACb+5d,GACAA,EAAIhyc,oBAAoB,SAAUl9B,KAAK42Y,SAG/ClwR,OAAOrkG,EAAMigyB,GACT,MAAMp4yB,EAAQmY,EAAKnY,MACb41D,GAAY51D,EAAM41D,UAClBokT,GAAWh6W,EAAM4iO,OAAOrrG,MAAM1iH,EAAQqG,MACtCopyB,GAAcjB,GAAehupB,SAASr1J,GACtC2ylB,GAAW2xN,GAAYtwe,KAC7B,GAAIp+Q,cAAqBgka,IAAiB5/G,KAAapkT,GAAU16C,KAAKtd,KAAM,CACxE,MAAMkyC,GAAM33B,EAAK2lxB,QAAQlouB,GAAUsI,MAC7B81Q,GAAO,CACT/vN,IAAKn0E,GAAIo0E,UACTh/C,KAAMp1B,GAAIk0E,WACVx3G,MAAOsjC,GAAIurH,YACXh7J,OAAQyvC,GAAI4M,cAEhB,IAAK07vB,EAAUxivB,UAAUsja,GAAGtja,KACvB+8hB,KAAaA,GAASnmlB,QAAUwnU,GAAKxnU,OAASmmlB,GAAStylB,SAAW2zU,GAAK3zU,QACpEsylB,GAAS1ue,MAAQ+vN,GAAK/vN,KAAO0ue,GAASzthB,OAAS8uQ,GAAK9uQ,MAAQ,CAChE,MAAM0iH,GAAK5nL,EAAM4nL,GACjBA,GAAGsimB,QAAQm5B,GAAgB,CAAErve,QAAMkwe,aAActuvB,GAAUsI,OAC3D/lD,EAAK+rN,SAASt8C,IACd9xL,KAAK45iB,qBAGJijD,KACL2xN,GAAYtwe,KAAO,KACnBswe,GAAYJ,cAAe,IAGnC3of,UACIzlU,KAAKuuzB,kBAGbrkzB,MAAO,CACH8nD,SACW,IAAI4zvB,GAAY,GAAI,KAAM,MAAM,GAE3CjyxB,OAAMm+J,EAAIm3D,IACCA,EAAKt1N,MAAMm+J,IAG1B1uC,MAAO,CACHy8pB,gBAAiB,CACbn/a,WAAUr+W,EAAM1U,IAhGR,EAAC0U,EAAM1U,EAAOoR,KAElC,MAAMunjB,EADS34jB,EAAMjF,OACOo/C,aAAa,kBACzC,IAAKw+gB,EACD,OAAO,EAEX,MAAMmoP,GAAclB,GAAehupB,SAASl9I,EAAKnY,OACjDyD,EAAMu0C,iBACN,MAAMw2uB,GAAcr2wB,EAAKnY,MAAM4nL,GAS/B,YAAc7oL,IAzFM,EAACoZ,EAAM1U,EAAOoR,KAClC,MAAM7U,EAAQqjzB,GAAehupB,SAASl9I,EAAKnY,QACnCg0U,OAAMzwN,YAAU2gsB,aAAcA,GAAc9nP,iBAAiBp8jB,EACrE,IAAKujH,KAAaywN,EACd,OAEJ,MAAMlkS,GAAM33B,EAAK2lxB,QAAQomB,IACnB/8vB,GAAM23f,GAAWsd,IAGvB,IAAI5vjB,GAAQ26C,GAAI1nD,GAFDgE,EAAMwrV,QAAU1rO,GAAS4ja,QAAUhge,GAAI1nD,EAE1BqwC,GAAItjC,MAAQwnU,EAAKxnU,MACzCnM,GAAS8mD,GAAIyC,GAFFnmD,EAAM0rV,QAAU5rO,GAAS6ja,QAAUjge,GAAIyC,EAEzB9Z,GAAIzvC,OAAS2zU,EAAK3zU,OAC/C,GAAIwU,EAAQsvyB,WAAah9vB,GAAI1nD,GAAK0nD,GAAIyC,EAAG,CACrC,IAAI2uhB,GAAQv1kB,KAAKulC,IAAI/7B,GAAQsjC,GAAItjC,MAAOnM,GAASyvC,GAAIzvC,QACjDmkzB,GAAY10wB,GAAItjC,MAAQ+rkB,GACxBksO,GAAa30wB,GAAIzvC,OAASk4kB,GAC9Bh1d,GAAS4ja,OAAS1jhB,EAAMwrV,SAAWziV,GAAQg4yB,IAAar9vB,GAAI1nD,EAC5D8jH,GAAS6ja,OAAS3jhB,EAAM0rV,SAAW9uV,GAASokzB,IAAct9vB,GAAIyC,EAC9Dp9C,GAAQg4yB,GACRnkzB,GAASokzB,QAGTlhsB,GAAS4ja,OAAShge,GAAI1nD,EAAIgE,EAAMwrV,QAAU1rO,GAAS4ja,OACnD5ja,GAAS6ja,OAASjge,GAAIyC,EAAInmD,EAAM0rV,QAAU5rO,GAAS6ja,OAEvDhlZ,GAAQtyF,GAAK,QAAStjC,IACtB41H,GAAQtyF,GAAK,SAAUzvC,IACvB2zU,EAAK/vN,IAAMn0E,GAAIo0E,UACf8vN,EAAK9uQ,KAAOp1B,GAAIk0E,WAChBgwN,EAAKxnU,MAAQsjC,GAAIurH,YACjB24K,EAAK3zU,OAASyvC,GAAI4M,aAClB,MAAMgowB,GAAiB50wB,GAAIqrY,mBAC3BupY,GAAezkzB,MAAMuM,MAAQwnU,EAAKxnU,MAAQ,KAC1Ck4yB,GAAezkzB,MAAMI,OAAS2zU,EAAK3zU,OAAS,KAC5CqkzB,GAAezkzB,MAAMgkH,IAAM+vN,EAAK/vN,IAAM,KACtCygsB,GAAezkzB,MAAMilE,KAAO8uQ,EAAK9uQ,KAAO,MAuDpCy/uB,CAAgBxsyB,EAAMpZ,GAAG8V,GAO7BpR,OAhBA+qxB,GAAYtE,QAAQm5B,GAAgB,CAChCzH,YAAa,CAAEz0R,OAAQ1jhB,EAAMwrV,QAASm4L,OAAQ3jhB,EAAM0rV,SACpDitO,eACApoP,KAAMuwe,GAAYvwe,KAClBkwe,aAAcK,GAAYL,eAE9B11B,GAAYtE,QAAQ,gBAAgB,GACpC/xwB,EAAK+rN,SAASsqjB,IASd/qxB,EAAM0U,KAAK7M,iBAAiB,UAL5B,YAAgBvM,IACZA,GAAEoZ,KAAK6a,oBAAoB,UAAW+6U,IACtChvW,GAAEoZ,KAAK6a,oBAAoB,YAAao4F,IAzDzBjzG,KACnB,MAAQ67T,OAAMzwN,WAAU2gsB,gBAAiBb,GAAehupB,SAASl9I,EAAKnY,OACtE,GAAIujH,GAAYywN,EAAM,CAClB,MAAMp+Q,EAAYz9C,EAAKnY,MAAM41D,UAC7B,GAAIA,aAAqBgka,GAAe,CACpC,MAAMgrV,GAAYhvvB,EAAU16C,KAAK4nN,MAC3Bt2N,GAAQwnU,EAAKxnU,MACbnM,GAAS2zU,EAAK3zU,OACpB,IAAIyiO,GACJ,GAAIkhlB,GAAO1yY,KAAKszY,GAAU3kzB,OAAS,IAAK,CACpC,MAAM4kzB,GAAe54B,GAAmB24B,GAAU3kzB,MAAO,CAAEA,MAAO,QAASxG,MAAOwqzB,GAAYl2lB,SAAUvhN,GAAQ,QACxGvM,UAAUgsxB,GAAmB44B,GAAa5kzB,OAAS,GAAI,CAAEA,MAAO,SAAUxG,MAAOwqzB,GAAYl2lB,SAAU1tN,GAAS,OACxHyiO,GAAQnnO,OAAOw0D,OAAO,GAAIy0vB,GAAW,CAAE3kzB,gBAGvC6iO,GAAQnnO,OAAOw0D,OAAO,GAAIy0vB,GAAW,CAAEp4yB,SAAOnM,YAElD,MAAMyvxB,GAAWl6tB,EAAU16C,KAAKtd,KAAKw6d,cAAct1P,IACnD,GAAIgtjB,GAAU,CACV,MAAMlomB,GAAKzvK,EAAKnY,MAAM4nL,GACtBA,GAAGj1I,YAAYuxwB,EAAcA,EAAe,EAAGp0B,IAC/ClomB,GAAG+wS,aAAaiB,UAAqBhyS,GAAG02L,IAAK4lc,IAC7Ct8nB,GAAGsimB,QAAQ,cAAe,gBAC1BtimB,GAAGsimB,QAAQ,OAAQpnjB,IACnBl7C,GAAGsimB,QAAQm5B,GAAgB,CACvBzH,YAAa,KACbx/O,aAAc,KACdpoP,OACAkwe,iBAEJ/ryB,EAAK+rN,SAASt8C,QA4BtBk9nB,CAAc3syB,KAGlB1U,EAAM0U,KAAK7M,iBAAiB,YAAa8/G,KAClC,GAsEgBu1c,CAAgBxojB,EAAM1U,EAAOoR,IAG5C47xB,YAAYzwyB,GACR,MAAM41D,EAAY51D,EAAM41D,UAClBokT,EAAWh6W,EAAM4iO,OAAOrrG,MAAM1iH,EAAQqG,MACtC84T,EAAOqve,GAAehupB,SAASr1J,GAAOg0U,KAC5C,GAAIA,GAAQp+Q,aAAqBgka,IAAiB5/G,IAAapkT,EAAU16C,KAAKtd,KAAM,CAChF,MAAMmzX,GAAUt5W,SAAS+O,cAAc,OACvCuqW,GAAQ79U,UAAY,kCACpB69U,GAAQ9wX,MAAMuM,MAAQwnU,EAAKxnU,MAAQ,KACnCukX,GAAQ9wX,MAAMI,OAAS2zU,EAAK3zU,OAAS,KACrC0wX,GAAQ9wX,MAAMgkH,IAAM+vN,EAAK/vN,IAAM,KAC/B8sQ,GAAQ9wX,MAAMilE,KAAO8uQ,EAAK9uQ,KAAO,KACjC,QAASzgE,GAAI,EAAGA,GAAIq/yB,GAAQjozB,OAAQ4I,KAAK,CACrC,IAAI0+N,GAAM1rN,SAAS+O,cAAc,OACjC28M,GAAIjwL,UAAY,0BAA4B4wwB,GAAQr/yB,IACpD0+N,GAAIxzH,aAAa,iBAAkBm0sB,GAAQr/yB,KAC3CssX,GAAQpgV,YAAYwyL,IAExB,OAAOotkB,UAAqBvwyB,EAAMs+W,IAAK,CAAC4xb,UAAkBlwyB,EAAM41D,UAAUsI,KAAO,EAAG6yT,MAExF,OAAOw/a,aCxMvB,IAAIwU,GAAiB,SAAwBhhlB,EAAYlvN,GACvD,IAAIkkwB,EAASjjxB,KAEbA,KAAKiuO,WAAaA,EAClBjuO,KAAK0W,MAAQqI,EAAQrI,OAAS,EAC9B1W,KAAKu/I,MAAQxgI,EAAQwgI,OAAS,QAC9Bv/I,KAAKmsD,MAAQptC,EAAQotC,MACrBnsD,KAAKkvzB,UAAY,KACjBlvzB,KAAK0U,QAAU,KACf1U,KAAKqjB,QAAU,KAEfrjB,KAAKu7B,SAAW,CAAC,WAAY,UAAW,OAAQ,aAAa51B,IAAI,SAAUX,GACzE,IAAIg/jB,GAAU,SAAU/6jB,IAAK,OAAOg6wB,EAAOj+wB,GAAMiE,KACjDglO,SAAWZ,IAAI73N,iBAAiBxQ,EAAMg/jB,IAC/B,CAACh/jB,KAAMA,EAAMg/jB,QAASA,OAIjCirP,GAAe5uyB,UAAUolT,QAAU,WAC/B,IAAIw9c,EAASjjxB,KAEfA,KAAKu7B,SAAS30B,QAAQ,SAAU65G,GAI5B,OAAOwiqB,EAAOh1iB,WAAWZ,IAAInwM,oBAHlBujF,EAAIz7G,KACDy7G,EAAIujd,YAMxBirP,GAAe5uyB,UAAUqmG,OAAS,SAAiBunH,EAAYq0kB,GACvC,MAAlBtizB,KAAKkvzB,WAAqB5M,EAAU95b,KAAOv6I,EAAW/jO,MAAMs+W,MAC1DxoX,KAAKkvzB,UAAYjhlB,EAAW/jO,MAAMs+W,IAAI5pW,QAAQowC,KAAQhvD,KAAKmvzB,UAAU,MAClEnvzB,KAAKovzB,kBAIhBH,GAAe5uyB,UAAU8uyB,UAAY,SAAoBtmuB,GACnDA,GAAO7oF,KAAKkvzB,YAChBlvzB,KAAKkvzB,UAAYrmuB,EACN,MAAXriF,GACExG,KAAK0U,QAAQ+4I,WAAW/vG,YAAY19C,KAAK0U,SACzC1U,KAAK0U,QAAU,MAEf1U,KAAKovzB,kBAITH,GAAe5uyB,UAAU+uyB,cAAgB,WACvC,IAA8Dlxe,EAA1DulJ,EAAOzje,KAAKiuO,WAAW/jO,MAAMs+W,IAAI5gW,QAAQ5nB,KAAKkvzB,WAClD,IAAKzrV,EAAKpnH,OAAOmga,cAAe,CAC9B,IAAIxwtB,EAASy3a,EAAKO,WAAYlmb,EAAQ2lb,EAAKR,UAC3C,GAAIj3a,GAAUlO,EAAO,CACnB,IAAImxtB,GAAWjvwB,KAAKiuO,WAAW+5jB,QAAQhoyB,KAAKkvzB,WAAaljwB,EAAQA,EAAO+ya,SAAW,IAAI51J,wBACnFh7M,GAAMniE,EAASijtB,GAASvlc,OAASulc,GAAS9gpB,IAC1CniE,GAAUlO,IACVqwE,IAAOA,GAAMnuH,KAAKiuO,WAAW+5jB,QAAQhoyB,KAAKkvzB,WAAW/lf,wBAAwBh7M,KAAO,GACxF+vN,EAAO,CAAC9uQ,KAAM6/rB,GAAS7/rB,KAAME,MAAO2/rB,GAAS3/rB,MAAO6+C,IAAKA,GAAMnuH,KAAK0W,MAAQ,EAAGgzT,OAAQv7M,GAAMnuH,KAAK0W,MAAQ,IAG9G,IAAKwnU,EAAM,CACT,IAAIrlQ,GAAS74E,KAAKiuO,WAAWg0kB,YAAYjizB,KAAKkvzB,WAC9Chxe,EAAO,CAAC9uQ,KAAMyJ,GAAOzJ,KAAOpvE,KAAK0W,MAAQ,EAAG44D,MAAOuJ,GAAOzJ,KAAOpvE,KAAK0W,MAAQ,EAAGy3G,IAAKt1C,GAAOs1C,IAAKu7M,OAAQ7wP,GAAO6wP,QAGnH,IAMI2lf,GAAYC,GANZjzc,GAASr8W,KAAKiuO,WAAWZ,IAAIp/G,aAOjC,GANKjuH,KAAK0U,UACR1U,KAAK0U,QAAU2nW,GAAOxhU,YAAYl5B,SAAS+O,cAAc,QACrD1wB,KAAKmsD,QAASnsD,KAAK0U,QAAQ0oC,UAAYp9C,KAAKmsD,OAChDnsD,KAAK0U,QAAQvK,MAAMwyC,QAAU,4EAA8E38C,KAAKu/I,QAG7G88N,IAAUA,IAAU16V,SAASgF,MAA6C,UAArCke,iBAAiBw3U,IAAQnyU,SACjEmlxB,IAAc7yR,YACd8yR,IAAa/yR,gBACR,CACL,IAAIgzR,GAASlzc,GAAOlzC,wBACpBkmf,GAAaE,GAAOngvB,KAAOitS,GAAOyzB,WAClCw/a,GAAYC,GAAOphsB,IAAMkuP,GAAO0zB,UAElC/vY,KAAK0U,QAAQvK,MAAMilE,KAAQ8uQ,EAAK9uQ,KAAOigvB,GAAc,KACrDrvzB,KAAK0U,QAAQvK,MAAMgkH,IAAO+vN,EAAK/vN,IAAMmhsB,GAAa,KAClDtvzB,KAAK0U,QAAQvK,MAAMuM,MAASwnU,EAAK5uQ,MAAQ4uQ,EAAK9uQ,KAAQ,KACtDpvE,KAAK0U,QAAQvK,MAAMI,OAAU2zU,EAAKxU,OAASwU,EAAK/vN,IAAO,MAGzD8gsB,GAAe5uyB,UAAUmvyB,gBAAkB,SAA0BnsyB,GACjE,IAAI4/vB,EAASjjxB,KAEfinB,aAAajnB,KAAKqjB,SAClBrjB,KAAKqjB,QAAUnR,WAAW,WAAc,OAAO+wwB,EAAOksC,UAAU,OAAU9ryB,IAG5E4ryB,GAAe5uyB,UAAUq5xB,SAAW,SAAmB/ryB,GACrD,GAAK3N,KAAKiuO,WAAW4kQ,SACrB,KAAIhqZ,EAAM7oF,KAAKiuO,WAAWgpkB,YAAY,CAAC7nuB,KAAMzhE,EAAMwrV,QAAShrO,IAAKxgH,EAAM0rV,UACvE,GAAIxwQ,EAAK,CACP,IAAIngF,EAASmgF,EAAIA,IACjB,GAAI7oF,KAAKiuO,WAAWxgH,UAAYztH,KAAKiuO,WAAWxgH,SAAS7+G,OAEzC,OADdlG,EAASmxyB,GAAU75yB,KAAKiuO,WAAW/jO,MAAMs+W,IAAK9/W,EAAQ1I,KAAKiuO,WAAWxgH,SAAS7+G,QACzD,OAAO5O,KAAKmvzB,UAAU,MAE9CnvzB,KAAKmvzB,UAAUzmzB,GACf1I,KAAKwvzB,gBAAgB,QAIzBP,GAAe5uyB,UAAUo5xB,QAAU,WACjCz5yB,KAAKwvzB,gBAAgB,KAGvBP,GAAe5uyB,UAAU+qJ,KAAO,WAC9BprK,KAAKwvzB,gBAAgB,KAGvBP,GAAe5uyB,UAAUovyB,UAAY,SAAoB9hzB,IACnDA,EAAMjF,QAAU1I,KAAKiuO,WAAWZ,MAAQrtO,KAAKiuO,WAAWZ,IAAIl/N,SAASR,EAAMqqX,iBAC3Eh4X,KAAKmvzB,UAAU,OCvIrB,IAAIO,GAA0B,SAAU/uV,GACtC,WAAmB8C,GACjB9C,EAAU/sc,KAAK5zB,KAAMyje,EAAMA,GAG7B,OAAK9C,IAAY+uV,EAAUpvyB,UAAYqgd,IACvC+uV,EAAUrvyB,UAAYxa,OAAOm8D,OAAQ2+Z,GAAaA,EAAUtgd,YACxCvgB,YAAc4vzB,EAElCA,EAAUrvyB,UAAU1a,IAAM,SAAc6iX,EAAKrpV,GAC3C,IAAIskc,GAAOj7G,EAAI5gW,QAAQuX,EAAQx5B,IAAI3F,KAAKo9V,OACxC,OAAOsyd,EAAUlnzB,MAAMi7d,IAAQ,IAAIisV,EAAUjsV,IAAQ9C,EAAU6xT,KAAK/uT,KAGtEisV,EAAUrvyB,UAAUzB,QAAU,WAAsB,OAAO8jd,SAE3DgtV,EAAUrvyB,UAAU+id,GAAK,SAAa/ja,GACpC,OAAOA,aAAiBqwvB,GAAarwvB,EAAM+9R,MAAQp9V,KAAKo9V,MAG1Dsyd,EAAUrvyB,UAAU6pR,OAAS,WAC3B,MAAO,CAACpiS,KAAM,YAAa+gF,IAAK7oF,KAAKo9V,OAGvCsyd,EAAU32C,SAAW,SAAmBvwZ,EAAKy4G,GAC3C,GAAuB,iBAAZA,EAAKp4Y,IAAmB,MAAM,IAAIq1Y,WAAW,wCACxD,OAAO,IAAIwxV,EAAUlnc,EAAI5gW,QAAQq5c,EAAKp4Y,OAGxC6muB,EAAUrvyB,UAAUgjd,YAAc,WAA0B,OAAO,IAAIssV,GAAY3vzB,KAAKiO,SAExFyhzB,EAAUlnzB,MAAQ,SAAgBi7d,GAChC,IAAIpnH,EAASonH,EAAKpnH,OAClB,GAAIA,EAAOooH,cAgEf,YAAsBhB,GACpB,QAASj4d,EAAIi4d,EAAKjsY,MAAOhsF,GAAK,EAAGA,IAAK,CACpC,IAAIoY,EAAQ6/c,EAAK7/c,MAAMpY,GAEvB,GAAa,GAAToY,EAEJ,QAASooC,EAASy3a,EAAKr+c,KAAK5Z,GAAGizD,MAAM76C,EAAQ,IAAKooC,EAASA,EAAOi4a,UAAW,CAC3E,GAA0B,GAArBj4a,EAAOoya,aAAoBpya,EAAOwwtB,eAAkBxwtB,EAAOmxtB,QAAUnxtB,EAAOlkD,KAAKy7d,KAAKxG,UAAa,OAAO,EAC/G,GAAI/wa,EAAOwwtB,cAAiB,OAAO,GAIvC,OAAO,EA5EsBozC,CAAansV,KA+E5C,YAAqBA,GACnB,QAASj4d,EAAIi4d,EAAKjsY,MAAOhsF,GAAK,EAAGA,IAAK,CACpC,IAAIoY,EAAQ6/c,EAAKs4S,WAAWvwwB,GAAI6wW,EAASonH,EAAKr+c,KAAK5Z,GACnD,GAAIoY,GAASy4V,EAAO+hH,WACpB,QAAStgb,EAAQu+T,EAAO59S,MAAM76C,IAASk6B,EAAQA,EAAMi0Q,WAAY,CAC/D,GAAyB,GAApBj0Q,EAAMsgb,aAAoBtgb,EAAM0+tB,eAAkB1+tB,EAAMq/tB,QAAUr/tB,EAAMh2C,KAAKy7d,KAAKxG,UAAa,OAAO,EAC3G,GAAIj/a,EAAM0+tB,cAAiB,OAAO,GAGtC,OAAO,EAxF6CqzC,CAAYpsV,GAAS,OAAO,EAC9E,IAAIljG,GAAWlkB,EAAOv0W,KAAKy7d,KAAKusV,eAChC,GAAgB,MAAZvvb,GAAoB,OAAOA,GAC/B,IAAImoZ,GAAQrsa,EAAOwha,eAAep6S,EAAK7/c,SAAS+6vB,YAChD,OAAO+J,IAASA,GAAMjkT,aAGxBirV,EAAUr9B,SAAW,SAAmB5uT,EAAMpya,EAAK0+vB,IACjD5+xB,EAAQ,OAAS,CACf,IAAK4+xB,IAAYL,EAAUlnzB,MAAMi7d,GAAS,OAAOA,EAGjD,QAFI56Y,GAAM46Y,EAAK56Y,IAAKx9E,GAAO,KAElBG,GAAIi4d,EAAKjsY,OAAQhsF,KAAK,CAC7B,IAAI6wW,GAASonH,EAAKr+c,KAAK5Z,IACvB,GAAI6lD,EAAM,EAAIoya,EAAKs4S,WAAWvwwB,IAAK6wW,GAAO+hH,WAAaqF,EAAK7/c,MAAMpY,IAAK,EAAG,CACxEH,GAAOgxW,GAAO59S,MAAMpN,EAAM,EAAIoya,EAAKs4S,WAAWvwwB,IAAKi4d,EAAK7/c,MAAMpY,IAAK,GACnE,SACc,GAALA,GACT,OAAO,KAGT,IAAIwkzB,GAAOvsV,EAAKj7G,IAAI5gW,QADpBihE,IAAOx3B,GAEP,GAAIq+vB,EAAUlnzB,MAAMwnzB,IAAS,OAAOA,GAItC,OAAS,CACP,IAAI7vB,GAAS9uuB,EAAM,EAAIhmD,GAAK0mT,WAAa1mT,GAAK44d,UAC9C,IAAKk8T,GAAQ,CACX,GAAI90xB,GAAK8xwB,SAAW9xwB,GAAKiswB,SAAWxzS,gBAA2Bz4d,IAAO,CACpEo4d,EAAOA,EAAKj7G,IAAI5gW,QAAQihE,GAAMx9E,GAAK0zd,SAAW1ta,GAC9C0+vB,IAAW,EACX,WAEF,MAEF1kzB,GAAO80xB,GAEP,IAAI8vB,GAASxsV,EAAKj7G,IAAI5gW,QADtBihE,IAAOx3B,GAEP,GAAIq+vB,EAAUlnzB,MAAMynzB,IAAW,OAAOA,GAGxC,OAAO,OAIJP,EA/EqB,CAgF5B/uV,IAEF+uV,GAAUrvyB,UAAU4zT,SAAU,EAE9B0sJ,UAAiB,YAAa+uV,IAE9B,IAAIC,GAAc,SAAqB9muB,GACrC7oF,KAAK6oF,IAAMA,GAEb8muB,GAAYtvyB,UAAU1a,IAAM,SAAcw5B,GACxC,OAAO,IAAIwwxB,GAAYxwxB,EAAQx5B,IAAI3F,KAAK6oF,OAE1C8muB,GAAYtvyB,UAAUuH,QAAU,SAAkB4gW,GAChD,IAAIi7G,EAAOj7G,EAAI5gW,QAAQ5nB,KAAK6oF,KAC5B,OAAO6muB,GAAUlnzB,MAAMi7d,GAAQ,IAAIisV,GAAUjsV,GAAQ9C,QAAe8C,IAsCtE,IAAI8O,GAAY,WACd,OAAO,IAAIlkQ,GAAO,CAChBjrF,MAAO,CACLu3pB,YAAauV,GAEbC,uBAAwB,SAAgCnhV,EAAOjL,EAASJ,GACtE,GAAII,EAAQl7Y,KAAO86Y,EAAM96Y,KAAO6muB,GAAUlnzB,MAAMm7d,GAAU,OAAO,IAAI+rV,GAAU/rV,IAGjFtlD,YAAaA,GACbhnB,cAAeA,OAKjBA,GAAgBooJ,GAAe,CACjCj0J,UAAaoJ,GAAM,SAAS,GAC5BnJ,WAAcmJ,GAAM,QAAS,GAC7BlJ,QAAWkJ,GAAM,QAAQ,GACzBrJ,UAAaqJ,GAAM,OAAQ,KAG7B,YAAezuB,EAAM90U,GACnB,IAAI++vB,EAAiB,QAARjqb,EAAkB90U,EAAM,EAAI,OAAS,KAASA,EAAM,EAAI,QAAU,OAC/E,OAAO,SAASnnD,EAAOkkO,EAAU/rN,IAC/B,IAAIugd,GAAM14d,EAAM41D,UACZq7sB,GAAS9ptB,EAAM,EAAIuxa,GAAIrB,IAAMqB,GAAItB,MAAOyuV,GAAWntV,GAAInjZ,MAC3D,GAAImjZ,cAAeb,GAAe,CAChC,IAAK1/c,GAAK85wB,eAAei0B,IAA2B,GAAhBj1C,GAAO3jrB,MAAc,OAAO,EAChEu4tB,IAAW,EACX50C,GAASjxwB,EAAMs+W,IAAI5gW,QAAQypC,EAAM,EAAI8ptB,GAAOr9tB,QAAUq9tB,GAAOnvtB,UAE/D,IAAIqkwB,GAASX,GAAUr9B,SAASlX,GAAQ9ptB,EAAK0+vB,IAC7C,QAAKM,KACDjilB,GAAYA,EAASlkO,EAAM4nL,GAAG+wS,aAAa,IAAI6sV,GAAUW,OACtD,IAIX,YAAqBhuyB,EAAMwmE,EAAKl7E,GAC9B,IAAK0U,EAAKwwd,SAAY,OAAO,EAC7B,IAAIpP,EAAOphd,EAAKnY,MAAMs+W,IAAI5gW,QAAQihE,GAClC,IAAK6muB,GAAUlnzB,MAAMi7d,GAAS,OAAO,EACrC,IACI08T,GADM99wB,EAAK40xB,YAAY,CAAC7nuB,KAAMzhE,EAAMwrV,QAAShrO,IAAKxgH,EAAM0rV,UAC3C8mc,OACjB,QAAIA,IAAS,GAAMr8T,gBAA2Bzhd,EAAKnY,MAAMs+W,IAAI62G,OAAO8gU,OACpE99wB,EAAK+rN,SAAS/rN,EAAKnY,MAAM4nL,GAAG+wS,aAAa,IAAI6sV,GAAUjsV,KAChD,IAGT,YAAuBv5d,GACrB,KAAMA,EAAM41D,qBAAqB4vvB,IAAc,OAAO,KACtD,IAAItqyB,EAAOzD,SAAS+O,cAAc,OAClCtL,SAAKg4B,UAAY,wBACVq9vB,UAAqBvwyB,EAAMs+W,IAAK,CAAC4xb,UAAkBlwyB,EAAM41D,UAAUs9R,KAAMh4U,EAAM,CAACvS,IAAK,gDCjMvF,WAAgBC,EAAMqgP,EAAUp0O,EAAU,IAC/C,IAAImnf,EAAOoqT,EAEX,GAAIvxyB,EAAQwnf,aAAexnf,EAAQynf,SACjC,MAAM,IAAI/vf,MAAM,8CAGbsI,EAAQwnf,aACPgqT,MACFrqT,EAAOsqT,GAGLjsxB,UAAUksxB,aACZvqT,EAAOwqT,IAIXxqT,EAAKpzf,EAAMqgP,EAAUp0O,oBAGvB,MAAM9Q,EAAS,IAAM0T,SAAS+O,cAAc,KACtC6/xB,EAAc,IAAM,aAActizB,IAExC,WAAoB6E,EAAMqgP,GACxB,IAAIh4M,EAAOroC,EAEX,GAAoB,iBAATA,EAAmB,CAC5B,MAAM4pT,EAAQ5pT,EAAKkE,MAAM,YACnB42nB,EAAclxU,EAAM,GACpBoiL,EAAS/9c,KAAK27R,EAAM,IACpBzyR,EAAQ,IAAI3nB,WAAWw8d,EAAO/4e,QAEpC,QAASokC,EAAM,EAAGA,EAAM20c,EAAO/4e,OAAQokC,IACrCF,EAAME,GAAO20c,EAAOltQ,WAAWznM,GAGjCgR,EAAO,IAAIm4M,KAAK,CAAErpN,EAAM3X,QAAU,CAAExqB,KAAM8loB,IAG5CrpmB,UAAUksxB,WAAWt1wB,EAAMg4M,GAG7B,WAAuBrgP,EAAMqgP,GAC3B,IAAIw9jB,EAAU79yB,EACVqC,OAAOm+O,MAAQxgP,aAAgBwgP,OACjCq9jB,EAAU//xB,IAAI4oB,gBAAgB1mC,IAGhC,MAAM89yB,EAAY3izB,IAClB2izB,EAAU9oiB,SAAW30B,EACrBy9jB,EAAUjgyB,KAAOggyB,EAEjB,MAAM1nzB,EAAI0Y,SAASkixB,YAAY,eAC/B56xB,EAAE4nzB,eAAe,SAAS,GAAM,EAAO17yB,OACvC,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAE9Cy7yB,EAAUx1sB,cAAcnyG,GACxBiJ,WAAW,IAAM0e,IAAIgpB,gBAAgB+2wB,IAGvC,WAAqBA,EAASx9jB,EAAUp0O,GACtC,IAAKA,EAAQynf,SACX,OAGF,MAAMj+f,EAAOoZ,SAAS+O,cAAc,QACpCnoB,EAAKsxG,aAAa,SAAU96F,EAAQynf,UACpCj+f,EAAKsxG,aAAa,SAAU,QAC5BtxG,EAAKsxG,aAAa,SAAU96F,EAAQkwlB,aAAe,SAEnD,MAAMjia,EAAWjuL,EAAQiwlB,WAAa,GACtChia,EAASmmD,SAAWA,EAEpB,MAAMupE,EAAQi0f,EAAQ35yB,MAAM,YAC5Bg2L,EAAS4gc,YAAclxU,EAAM,GAAGnxS,QAAQ,QAAS,IACjDyhL,EAAS8xS,OAASpiL,EAAM,GAExB,QAAS13T,KAAQgoM,EACf,GAAIA,EAAS3gK,eAAernC,GAAO,CACjC,MAAM4tB,EAAQjR,SAAS+O,cAAc,SACrCkC,EAAMinF,aAAa,OAAQ,UAC3BjnF,EAAMinF,aAAa,OAAQ70G,GAC3B4tB,EAAMinF,aAAa,QAASmzF,EAAShoM,IAErCuD,EAAKsyC,YAAYjoB,GAIrBjR,SAASgF,KAAKk0B,YAAYtyC,GAC1BA,EAAKmjjB,SACL/piB,SAASgF,KAAK+2B,YAAYn1C,oDC1F5B,IAA+9BuozB,EAAUC,EAAr+BC,EAAQ,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,eAAe,WAAW,WAAW,eAAe,eAAe,WAAW,WAAW,WAAW,WAAW,WAAW,mCAAmC,WAAW,eAAe,OAAO,WAAW,WAAW,eAAe,WAAW,eAAe,WAAW,eAAe,mCAAmC,mBAAmB,WAAW,+DAA+D,WAAW,OAAO,WAAW,WAAW,WAAW,+CAA+C,WAAW,WAAW,WAAW,WAAW,WAAW,mBAAmB,2BAA2B,mBAAmB,WAAW,WAAW,2BAA2B,mBAAmB,mBAAmB,WAAW,WAAW,eAAe,eAAe,2CAA2C,WAAW,OAAO,+BAA+B,WAAW,uBAAuB,WAAW,YAAsBF,EAA8IE,EAApID,EAA4I,IAAnH,SAASE,GAAW,OAAQA,GAAWH,EAAUrrzB,KAAQqrzB,EAAUnnuB,SAAeunuB,GAAYH,GAA6B,IAAII,EAAQ,SAASL,EAAUC,GAAmC,IAAIG,EAAUF,EAAtCF,GAAoB,QAA4D3rzB,IAApBgszB,EAAQC,SAAohBD,EAAQE,OAAU,SAASC,GAA+D,QAAhDC,EAAzhB,SAASC,GAA+J,QAAsBC,EAAUC,EAAlGC,EAAU3+xB,OAAOw+xB,GAAWjmyB,QAAW,MAAM,IAAQqmyB,EAAU,GAAWC,EAAU,EAAwBC,EAAU,EAAIJ,EAAUC,EAAUv9wB,OAAU09wB,MAAcJ,IAAYD,EAAUI,EAAU,EAAc,GAAVJ,EAAeC,EAAUA,EAAUG,IAAY,GAAKD,GAAW5+xB,OAAOC,aAAgB,IAAKw+xB,KAAY,EAAKI,EAAU,IAAM,EAAKH,EAA/Y,oEAAma5xyB,QAAW4xyB,GAAY,OAAOE,EAAgEX,CAAUK,GAAeS,EAAU,GAAWC,EAAU,EAAIC,EAAUV,EAAUxrzB,OAAUiszB,EAAUC,EAAUD,IAAaD,GAAW,KAAK,KAAKR,EAAU3/kB,WAAcoglB,GAAWjnzB,SAAY,KAAO6D,OAAS,GAAO,OAAO+iO,mBAAmBoglB,IAAaZ,EAAQe,OAAU,GAAGf,EAAQC,QAAU,GAAM,IAAIe,EAAUhB,EAAQe,OAAUpB,GAAW,YAAmB3rzB,IAAZgtzB,GAAuBjB,EAAUC,EAAQE,OAAUH,GAAWC,EAAQe,OAAUpB,GAAWI,GAAWA,EAAUiB,EAAUjB,GAAgB9tvB,EAAQ,CAACtwD,KAAK,+XAAua8T,EAAM,IAAI+3B,IAAwC,WAAyByzwB,GAAW,GAAGxryB,EAAMuqyB,EAAQ,QAAQiB,EAAUjB,EAAQ,WAAcA,EAAQ,SAASA,EAAQ,OAA0E,OAAOvqyB,EAAMuqyB,EAAQ,SAASiB,EAAUjB,EAAQ,UAAW,IAAmYkB,EAA/XC,EAAUF,EAAUjB,EAAQ,QAAQ,KAAQiB,EAAUjB,EAAQ,QAAQ,GAAGoB,EAAUH,EAAUjB,EAAQ,SAASmB,EAAUE,EAAUnkyB,KAAK8iyB,EAAQ,SAAS/tvB,EAAQ+tvB,EAAQ,UAAUsB,GAAWD,EAAUrB,EAAQ,WAAWqB,EAAUrB,EAAQ,SAASuB,EAAUF,EAAUrB,EAAQ,iBAAiBwB,iBAAiBxB,EAAQ,OAAOyB,EAA8iH,WAAsBC,EAAUC,GAAW,IAAIC,EAAUF,EAAU1B,EAAQ,SAAS,KAAI4B,GAAYA,EAAU5B,EAAQ,UAAaA,EAAQ,SAAUA,EAAQ,SAAyH,OAAO,KAAM,IAAI6B,EAAU,IAAI3qvB,IAAIyqvB,GAAW,OAAOC,EAAU5B,EAAQ,SAAS,SAAS8B,GAAW,GAAG9B,EAAQ,UAAUA,EAAQ,QAAQ,OAAO6B,EAAU7B,EAAQ,QAAQ8B,EAAU9B,EAAQ,YAAt/H+B,CAAaV,EAAUJ,EAAUjB,EAAQ,UAA20D,GAApzDsB,GAAWC,EAAcvB,EAAQ,UAAUA,EAAQ,UAAQkB,EAAU,CAACvqzB,KAAO,EAAIqrzB,YAAcZ,EAAUa,QAAUhB,EAAUjB,EAAQ,WAAyOA,EAAQ,UAAUA,EAAQ,SAAYyB,EAAqLzB,EAAQ,UAAUA,EAAQ,SAAYyB,EAAUzB,EAAQ,QAAQiB,EAAUjB,EAAQ,UAAaA,EAAQ,SAAUA,EAAQ,UAAQkB,EAAU,CAACvqzB,KAAO,EAAIqrzB,YAAcZ,EAAUpuf,YAAcm2G,EAAU83Y,EAAUjB,EAAQ,UAAUkC,WAAa/4Y,EAAUs4Y,EAAUzB,EAAQ,SAASiC,QAAUhB,EAAUjB,EAAQ,WAAxdA,EAAQ,SAAUA,EAAQ,UAAQkB,EAAU,CAACvqzB,KAAO,EAAIqrzB,YAAcZ,EAAUa,QAAUhB,EAAUjB,EAAQ,YAAyyCkB,UAAkBv8yB,UAAUq7yB,EAAQ,SAAYA,EAAQ,SAASA,EAAQ,OAAO,CAAC,IAAImC,EAAUnC,EAAQ,QAAQiB,EAAUjB,EAAQ,SAASoC,SAAiBz9yB,QAAQq7yB,EAAQ,WAAWA,EAAQ,QAAWoC,EAAcpC,EAAQ,QAASA,EAAQ,QAA+Dr7yB,QAAQq7yB,EAAQ,SAASmC,GAAoBnC,EAAQ,SAAUA,EAAQ,SAAQr7yB,QAAQq7yB,EAAQ,SAASmC,GAAsGx9yB,QAAQq7yB,EAAQ,SAAiY,WAAqBqC,GAAW,IAAIC,EAAUtC,EAAQ,OAAOqC,EAAUrC,EAAQ,SAAS,KAA+mB,OAAzkB,IAA5BqC,EAAUrC,EAAQ,QAAkBA,EAAQ,UAAUA,EAAQ,UAAQsC,GAAWtC,EAAQ,QAAQqC,EAAUrC,EAAQ,SAASA,EAAQ,UAAUA,EAAQ,QAAQqC,EAAUrC,EAAQ,SAASA,EAAQ,UAAU,OAAsG,IAA5BqC,EAAUrC,EAAQ,QAAkBA,EAAQ,SAAUA,EAAQ,UAAQsC,GAAWtC,EAAQ,SAA8G,IAA5BqC,EAAUrC,EAAQ,UAAkBA,EAAQ,SAASA,EAAQ,SAA0EsC,GAAWtC,EAAQ,UAAkBsC,GAAWtC,EAAQ,QAAQqC,EAAUrC,EAAQ,SAASA,EAAQ,SAApoCuC,CAAYrB,IAAekB,IAAcpC,EAAQ,SAASA,EAAQ,SAAyHr7yB,QAAQq7yB,EAAQ,YAAqE,IAAIwC,GAAWtB,EAAU,OAAOzryB,EAAMuqyB,EAAQ,SAASiB,EAAUjB,EAAQ,SAASwC,GAAWA,EAAwhD,WAAmBC,GAAW,OAAO,IAAI76yB,KAAe,IAAV66yB,0JCA3oP,MCyDA/szB,EAvDekY,KACX,MAAQ+hd,cAAY3hG,eAAa+yO,eAAaJ,gBAAcvjkB,UAAS,IAAOxvB,GACtE80yB,GAAmB10b,GAAYpzX,WAC/B+nzB,GAAiB30b,GAAYnzX,SAC7B+nzB,GAAoBjiN,GAAa/lmB,WACjCiozB,GAAkBliN,GAAa9lmB,SAErC,IAAIiozB,GAAmB1lxB,GAAOxiC,YAAc,EACxCmozB,GAAiB3lxB,GAAOviC,UAAY,EAEpCmiH,GAAM2yW,GAAW3yW,IACjB/+C,GAAO0xZ,GAAW1xZ,KAEtB,MDdU,WCcN0kvB,KACA3lsB,IAAO2yW,GAAWv2d,SDdZ,WCiBNupzB,IDhBM,WCgB6BA,MACnC3lsB,IAAOjhH,KAAK4zF,MAAMggY,GAAWv2d,OAAS,IDnBhC,WCsBNypzB,KACA7lsB,IAAO+jf,GAAY3nmB,OACnB2pzB,KAAkB,IDvBZ,WC0BNF,IDzBM,WCyB8BA,MACpC7lsB,IAAOjhH,KAAK4zF,MAAMoxgB,GAAY3nmB,OAAS,GACvC2pzB,KAAkB,GDzBb,UC4BLL,KACAzkvB,IAAQ0xZ,GAAWpqd,QDhCb,WCmCNm9yB,IDlCM,WCkC+BA,MACrCzkvB,IAAQliE,KAAK4zF,MAAMggY,GAAWpqd,MAAQ,IDjCjC,UCoCLq9yB,KACA3kvB,IAAQ8iiB,GAAYx7lB,MACpBu9yB,KAAoB,IDzCd,WC4CNF,ID3CM,WC2CgCA,MACtC3kvB,IAAQliE,KAAK4zF,MAAMoxgB,GAAYx7lB,MAAQ,GACvCu9yB,KAAoB,GAGjB,CACH9lsB,IAAKA,GAAM+lsB,GACX9kvB,KAAMA,GAAO6kvB,KCrDN,WAAmB/1e,GAAMuqH,IACpC,MAAO,CACHt6U,IAAK+vN,GAAK/vN,IAAMs6U,GAAO30Y,EACvBsb,KAAM8uQ,GAAK9uQ,KAAOq5X,GAAO9+b,EACzBY,OAAQ2zU,GAAK3zU,OACbmM,MAAOwnU,GAAKxnU,OCLL,WAAuBhC,IAClC,OAAOA,GAAQ2nhB,eAAiB3nhB,GAAQiN,UAAYjN,GCGxD,QAFmBA,IAAY2nhB,EAAc3nhB,IAAS+nhB,YCEtDjxhB,EAFqBkJ,IAAY2nhB,EAAc3nhB,IAASowB,gBCFxD,IAAIqvxB,EAAc,ECIH,WAAwBz/yB,IACnC,MAAMw6d,GAAMjnC,EAAIvzb,IACViN,GAAW26gB,EAAY5nhB,IACvBnC,GAAS,CACXhI,OAAQ2ke,GAAI55d,YACZoB,MAAOw4d,GAAI95d,YAGf,OAAIuM,GAASwub,aAAexub,GAASknO,aAAe,IAChDt2O,GAAOmE,ODXA,aACX,IAAKy9yB,GAAmC,oBAAbxyyB,SAA0B,CACjD,MAAMuoY,GAAMvoY,SAAS+O,cAAc,OAEnCw5X,GAAI//Y,MAAMwyC,QAAU,oEACpButW,GAAI7sW,UAAY,SAChB17B,SAASgF,KAAKk0B,YAAYqvW,IAE1Biqa,EAAcjqa,GAAI3kP,YAAc2kP,GAAI1kP,YAEpC7jJ,SAASgF,KAAK+2B,YAAYwsW,IAG9B,OAAOiqa,ECFatjW,IAGbt+c,GCOX,QArBwBmC,KACpB,IAAKA,GAAQy0T,sBAAuB,CAChC,MAAM0hN,GAAWupS,EAAe1/yB,IAChC,MAAO,CACHg1T,OAAQmhN,GAAStghB,OACjB6kE,KAAM,EACNE,MAAOu7c,GAASn0gB,MAChBy3G,IAAK,GAIb,MAAQu7M,UAAQt6P,QAAME,SAAO6+C,QAAQz5G,GAAQy0T,wBAE7C,MAAO,CACHO,UACAt6P,QACAE,SACA6+C,SCaR1nD,EAhBgB/xD,KACZ,IAAIwpU,GAAOxpU,GAAQy0T,yBACb/5P,QAAM++C,QAAQ+vN,GAEpB,OAAKA,GAAK3zU,SAAW2zU,GAAKxnU,QACtBwnU,GArBqBxpU,MACzB,MAAQ25B,WAAS+gC,QAAMllC,aAAax1B,GAAQvK,MAE5CuK,GAAQvK,MAAMkkC,QAAU,GACxB35B,GAAQvK,MAAMilE,KAAO,WACrB16D,GAAQvK,MAAM+/B,SAAW,WAEzB,MAAMg0S,GAAOxpU,GAAQy0T,wBAErBz0T,UAAQvK,MAAMkkC,QAAUA,GACxB35B,GAAQvK,MAAMilE,KAAOA,GACrB16D,GAAQvK,MAAM+/B,SAAWA,GAElBg0S,IAQIm2e,CAAoB3/yB,KAGxB,CACHy5G,IAAKA,GACL/+C,KAAMA,GACN7kE,OAAQ2zU,GAAK3zU,OACbmM,MAAOwnU,GAAKxnU,QC5BpB/M,EAAe,CAAC+K,GAAS4/yB,MACrB,MAAM/hzB,GAAS,GACf,IAAIlH,GAAOqJ,GAAQ+4I,WAEnB,KAAOpiJ,KACHkH,GAAO9M,KAAK4F,IAERA,KAASipzB,KAEbjpzB,GAAOA,GAAKoiJ,WAGhB,OAAOl7I,ICTI,WAAwBmC,IACnC,MAAMowB,GAAkByvxB,EAAW7/yB,IAC7Bw6d,GAAMjnC,EAAIvzb,IAEhB,MAAO,CACH/K,EAAGule,GAAIstD,aAAe13f,GAAgBgrW,YAAc,EACpDh8U,EAAGo7a,GAAIqtD,aAAez3f,GAAgBirW,WAAa,GCP3D,QAAgBr7X,IACRA,MAAaA,GAAQ2nhB,eAAiB,IAAI11gB,KACnCsiZ,EAAev0Z,IAGnB,CACH/K,EAAG+K,GAAQo7X,WACXh8U,EAAGp/C,GAAQq7X,WCGnBj+X,EAVsB4C,KAClB,IAAIu5G,GAAev5G,GAAQu5G,aAE3B,KAAOA,IAAgD,WAAhCA,GAAa9jH,MAAM+/B,UACtC+jF,GAAeA,GAAaA,aAGhC,OAAOA,IAAgBnpF,EAAgBpwB,KCL3C00I,EAAe,CAAC10I,GAAS2nW,GAAQ37Q,GAAQ,KACrC,MAAM8ztB,GAAsBn4c,GAASpuP,EAAaouP,IAAU,MACpDluP,OAAK/+C,QAAM7kE,UAAQmM,UCFd,EAAChC,GAAS2nW,MACvB,MAAM6yH,GAAMjnC,EAAIvzb,IACVs8qB,GAAgB9hN,GAAIrqc,iBAAiBnwB,IACrC0d,GAASqiyB,EAAW//yB,IACpBu7X,GAAgB5zB,IAAUpuP,EAAav5G,IAEvC2nhB,GAAgB3nhB,GAAQ2nhB,cAG9B,IAAIw+O,GAAe,CAAE1spB,IAAK,EAAG/+C,KAAM,GAEnC,GAA+B,UAA3B4hnB,GAAc9mpB,UAJE+lW,KAAkBosJ,GAAc11gB,MAAQspX,KAAkBosJ,GAAcv3f,gBAIrC,CACnD,MAAM4vxB,GAAexlV,GAAIrqc,iBAAiBorW,IAE1C4qY,GAAe45C,EAAWxkb,IAC1B4qY,GAAa1spB,KAAOvqH,SAAS8wzB,GAAapiH,eAAgB,IAC1DuoE,GAAazrsB,MAAQxrE,SAAS8wzB,GAAa9yM,gBAAiB,IAGhE,MAAO,CACHzzf,IAAK/7F,GAAO+7F,IAAM0spB,GAAa1spB,IAC/B/+C,KAAMh9C,GAAOg9C,KAAOyrsB,GAAazrsB,KACjC7kE,OAAQ6nB,GAAO7nB,OACfmM,MAAO0b,GAAO1b,QDrBmBwzB,CAASx1B,GAAS8/yB,KAC/C7qzB,KAAGmqD,MEJA,EAAC0gwB,GAAqB9/yB,KACjC8/yB,GAAsBpiN,EAAsBoiN,ICDjC,WAA8B9/yB,IACzC,MAAM2nW,GAASpuP,EAAav5G,IAE5B,OAAO2nW,GAAS+1P,EAAsB/1P,IAAU,CAAE1yW,EAAG,EAAGmqD,EAAG,GDFQ6gwB,CAAqBjgzB,IFGvEkgzB,CAA2BJ,GAAqB9/yB,IAC3D2nhB,GAAgB3nhB,GAAQ2nhB,cACxBw4R,GAAgBL,KAAwBn4R,GAAc11gB,MAAQ6tyB,KAAwBn4R,GAAcv3f,gBAAkB,EAAI47D,GAEhI,MAAO,CACHytB,IAAKA,GAAMr6D,GAAI+gwB,GACfzlvB,KAAMA,GAAOzlE,GAAIkrzB,GACjBtqzB,OAAQA,GACRmM,MAAOA,KIfA,WAAsBwnU,GAAMuqH,IACvC,MAAO,CACHt6U,IAAK+vN,GAAK/vN,IAAMs6U,GAAO30Y,EACvBsb,KAAM8uQ,GAAK9uQ,KAAOq5X,GAAO9+b,EACzBY,OAAQ2zU,GAAK3zU,OACbmM,MAAOwnU,GAAKxnU,OCLpB,MCGM4hpB,EAAM,SAASpunB,GAAU8kB,GAAM8lwB,IACjC,IAAIriyB,GAAS,EAEb,OAAIyX,GAAW8kB,GAAO8lwB,KAClBriyB,GAASqiyB,IAAgB5qxB,GAAW8kB,KAGpC9kB,GAAW,IACXzX,IAAUyX,IAGPzX,IAGLmrE,GAAO,UAAWxrE,UAAQ48B,QAAM+lwB,cAAYD,gBAAcE,oBAAkBC,qBAAmB1mxB,YACjG,IAAI9b,GAAS,EAEb,MAEMyiyB,GAAc,EAAI3mxB,GAExB,GAAI0mxB,KAAsBD,IpBtBhB,WoBkBiBC,IpBjBjB,WoBiB4DA,IpBlB5D,WoBmBeD,IpBlBf,WoBkByDA,GAGqB,CACpF,MAAMG,GpBnBH,QoBmBoBH,IpBrBnB,SoBqB0DA,GAC1D5iyB,GAAS,GAAK+iyB,IACd1iyB,GAASu8B,GAAO+lwB,GAAaG,GACzB9iyB,GAASK,GAASu8B,GAAO8lwB,KACzBriyB,GAAS,IAENL,IAAU,IAAM+iyB,KACnB/iyB,GAAS48B,GAAO8lwB,KAChBriyB,MAAYsiyB,GAAa/lwB,GAAOkmwB,KAGhC9iyB,GAASK,GAAS,IAClBA,GAAS,IAKrB,OAAOA,IAyEXzoB,GAtEwB+U,KACpB,MAAQ+hd,cAAY3hG,eAAa+yO,eAAaJ,gBAAcc,cAAY1mK,YAAU39Z,UAAS,IAAOxvB,IAC1FovG,IAAKinsB,GAAYhmvB,KAAMimvB,GAAa9qzB,OAAQ+6T,GAAe5uT,MAAO+1sB,IAAiBv6G,IACnF3nmB,OAAQ+qzB,GAAgB5+yB,MAAO6+yB,IAAkBrpX,GACnD+nX,GAAmB1lxB,GAAOxiC,YAAc,EACxCmozB,GAAiB3lxB,GAAOviC,UAAY,EAE1C,IAAIojE,GAAO,EACP++C,GAAM,EAEV,MAAMqnsB,GDtDC,QCsDe5iN,GAAW5mmB,SAC3BypzB,GDvDC,QCuDiB7iN,GAAW7mmB,WAC7B2pzB,GDvDE,SCuDe9iN,GAAW5mmB,SAC5B2pzB,GDxDE,SCwDiB/iN,GAAW7mmB,WAEhCypzB,KACArnsB,IAAOmqiB,EAAI88J,GAAY9vf,GAAegwf,KAGtCG,KACArmvB,IAAQkplB,EAAI+8J,GAAa5oG,GAAc8oG,KAGvCG,KACAvnsB,IAAOvwB,GAAK,CACRrvD,OAAQ2lxB,GACR9hyB,OAAQgjyB,GACRpmwB,KAAMs2Q,GACNyvf,WAAYj0V,GAAWv2d,OACvBuqzB,aAAcQ,GACdN,iBAAkB71b,GAAYnzX,SAC9BipzB,kBAAmBnjN,GAAa9lmB,YAIpC2pzB,KACAvmvB,IAAQwuB,GAAK,CACTrvD,OAAQ0lxB,GACR7hyB,OAAQijyB,GACRrmwB,KAAMy9pB,GACNsoG,WAAYj0V,GAAWpqd,MACvBo+yB,aAAcS,GACdP,iBAAkB71b,GAAYpzX,WAC9BkpzB,kBAAmBnjN,GAAa/lmB,cAIxC,MAAM6pzB,GAAkBF,IAA0B,IAARvnsB,GACpC0nsB,GAAoBF,IAA6B,IAATvmvB,GACxC0mvB,GAAiBN,IAAyB,IAARrnsB,GAClC4nsB,GAAmBN,IAA4B,IAATrmvB,GAE5C,MAAO,CACH0jiB,QAAS+iN,IAAqBD,GAC9BI,OAAQF,IAAkBC,GAC1Bn4tB,KAAM,CACF7xF,WAAY8pzB,GACZ7pzB,SAAU4pzB,IAEdt9J,IAAK,CACDvspB,WAAYgqzB,GACZ/pzB,SAAU8pzB,IAEd1jyB,OAAQ,CACJg9C,KAAMA,GACN++C,IAAKA,MC9GjB1gD,GAAgB/4D,KACZ,MAAMnC,GAAS,GAEf,IAAIg1lB,GAAU7ylB,GAAQ+4I,WAAW0jiB,kBAEjC,KAAO5pF,IACCA,KAAY7ylB,IACZnC,GAAO9M,KAAK8hmB,IAGhBA,GAAUA,GAAQliL,mBAEtB,OAAO9ya,ICPXuxN,GAAe,CAAC71N,GAAQwvJ,MACpB,MAAMuzc,GAAiBvsG,EAAQx2f,IAC/B,IACIgozB,GACA1jzB,GAFAqsW,GAAmBnhN,GAIvB,KAAOmhN,KACHq3c,GAAkB3gO,GAAS12O,IAE3BrsW,GAASy+lB,GAAeh3lB,OACpB,CAAC8tB,GAAM28B,KAAM38B,GAAK6L,OAAOsixB,GAAgBlpzB,OAAOlG,IAAKA,KAAM49D,KAC3D,IACF,IAEElyD,KAEJqsW,GAAmBA,GAAiBqxB,cAGxC,OAAO19X,KCWX,YAAiBs9lB,IACb,IAAIt9lB,GACAu9lB,IAAS,EAakBC,CAASmmN,KACxC,IAAKC,KAAe,OAAO,EAI3B,MAAMC,GAAkBF,GAAgBA,GAAc75R,cAAgB16gB,SAEtE,IAAKy0yB,KAAoBA,GAAgBzvyB,KAAQ,OAAO,EAExD,MACM01V,GAAS+5c,GAAgB1lyB,cAAc,OAC7C2rV,GAAOlyW,MAAME,UAAY,6BACzBgyW,GAAOh/T,UAAa,uDAEpB+4wB,GAAgBzvyB,KAAKk0B,YAAYwhU,IAEjC,MAAM2zP,GAPM,KAOQ3zP,GAAO79S,SAAS,GAAG2qQ,wBAAwBh7M,IAE/DiosB,UAAgBzvyB,KAAK+2B,YAAY2+T,IAE1B2zP,KApBX,MAuBMmmN,GAAY,IAAMnuf,QAEF,oBAAX7yT,QACPA,OAAOwM,UACPxM,OAAOwM,SAAS+O,qFCvDpB,IAeI2lyB,GAAqB,EA+BzB,WAAc32vB,GAAK7sD,IACjB,OAAOhN,OAAOwa,UAAUgsB,eAAezY,KAAK8rC,GAAK7sD,IAGnD,WAAgB6sD,IAEd,QADI4rb,GAAUh9e,MAAM+R,UAAUzR,MAAMglB,KAAKmJ,UAAW,GAC7Cuud,GAAQvlf,QAAQ,CACrB,IAAI40C,GAAS2wc,GAAQ3ha,QACrB,GAAKhvC,GAEL,IAAsB,iBAAXA,GACT,MAAM,IAAI27wB,UAAU37wB,GAAS,sBAG/B,QAAS8pB,MAAK9pB,GACR47wB,EAAK57wB,GAAQ8pB,MACf/E,GAAI+E,IAAK9pB,GAAO8pB,MAKtB,OAAO/E,GAKT,WAAmB8ib,GAAKxzb,IACtB,OAAIwzb,GAAIz8e,SAAWipD,GAAewzb,GAC9BA,GAAInD,SAAmBmD,GAAInD,SAAS,EAAGrwb,KAC3Cwzb,GAAIz8e,OAASipD,GACNwzb,IAGT,IAAIg0U,GAAU,CACZC,SAAU,SAAUlvrB,GAAMptF,GAAKu8wB,GAAUpiuB,GAAKqiuB,IAC5C,GAAIx8wB,GAAIklc,UAAY93W,GAAK83W,SACvB93W,GAAKl1G,IAAI8nB,GAAIklc,SAASq3U,GAAUA,GAAWpiuB,IAAMqiuB,SAInD,QAAShozB,GAAI,EAAGA,GAAI2lF,GAAK3lF,KACvB44H,GAAKovrB,GAAYhozB,IAAKwrC,GAAIu8wB,GAAW/nzB,KAIzCiozB,cAAe,SAAUlqzB,IACvB,IAAIiC,GAAGo5B,GAAGusD,GAAKzL,GAAK26F,GAAOjxK,GAI3B,IADA+hF,GAAM,EACD3lF,GAAI,EAAGo5B,GAAIr7B,GAAO3G,OAAQ4I,GAAIo5B,GAAGp5B,KACpC2lF,IAAO5nF,GAAOiC,IAAG5I,OAMnB,IAFAwM,GAAS,IAAI+P,WAAWgyE,IACxBzL,GAAM,EACDl6E,GAAI,EAAGo5B,GAAIr7B,GAAO3G,OAAQ4I,GAAIo5B,GAAGp5B,KAEpC4D,GAAO8f,IADPmxJ,GAAQ92K,GAAOiC,IACGk6E,IAClBA,IAAO26F,GAAMz9K,OAGf,OAAOwM,IAETskzB,KAAM,SAAS7nwB,IACb,OAAO,IAAI1sC,WAAW0sC,KAExB8nwB,MAAO,SAAS9nwB,IACd,OAAO,IAAIs4b,YAAYt4b,KAEzB+nwB,MAAO,SAAS/nwB,IACd,OAAO,IAAIgowB,WAAWhowB,MAItBiowB,GAAY,CACdR,SAAU,SAAUlvrB,GAAMptF,GAAKu8wB,GAAUpiuB,GAAKqiuB,IAC5C,QAAShozB,GAAI,EAAGA,GAAI2lF,GAAK3lF,KACvB44H,GAAKovrB,GAAYhozB,IAAKwrC,GAAIu8wB,GAAW/nzB,KAIzCiozB,cAAe,SAAUlqzB,IACvB,MAAO,GAAGinC,OAAOhgB,MAAM,GAAIjnB,KAE7BmqzB,KAAM,SAAS7nwB,IACb,OAAO,IAAI1gD,MAAM0gD,KAEnB8nwB,MAAO,SAAS9nwB,IACd,OAAO,IAAI1gD,MAAM0gD,KAEnB+nwB,MAAO,SAAS/nwB,IACd,OAAO,IAAI1gD,MAAM0gD,MAIrB,IAAIkowB,GAAU,KACZ,MAAM/ra,GACmB,oBAAf7oY,YACgB,oBAAhBgle,aACe,oBAAf0vU,WAEVE,UAAU,IAAM/ra,GACTA,IAGLsra,GAAW,CAAClvrB,GAAMptF,GAAKu8wB,GAAUpiuB,GAAKqiuB,MACxCF,GAAWS,KACTV,GAAQC,SAAWQ,GAAUR,SAExBA,GAASlvrB,GAAMptF,GAAKu8wB,GAAUpiuB,GAAKqiuB,KAGxCC,GAAiBlqzB,KACnBkqzB,GAAgBM,KACdV,GAAQI,cAAgBK,GAAUL,cAE7BA,GAAclqzB,KAGnBmqzB,GAAQ7nwB,KACV6nwB,GAAOK,KAAYV,GAAQK,KAAOI,GAAUJ,KACrCA,GAAK7nwB,KAGV8nwB,GAAS9nwB,KACX8nwB,GAAQI,KAAYV,GAAQM,MAAQG,GAAUH,MACvCA,GAAM9nwB,KAGX+nwB,GAAS/nwB,KACX+nwB,GAAQG,KAAYV,GAAQO,MAAQE,GAAUF,MACvCA,GAAM/nwB,KAUXmowB,GAAa,WACb,IAAI5kzB,IAAS,EACb,IACIygB,OAAOC,aAAaU,MAAM,KAAM,CAAE,UAC7BzoB,IACLqH,IAAS,EAGb4kzB,UAAa,IAAM5kzB,GACZA,IAGP6kzB,GAAiB,WACjB,IAAI7kzB,IAAS,EACb,IACIygB,OAAOC,aAAaU,MAAM,KAAM,IAAIrR,WAAW,UAC1CpX,IACLqH,IAAS,EAGb6kzB,UAAiB,IAAM7kzB,GAChBA,IAGP8ve,GAAU,SAASpie,IAKnB,QADI8kZ,GAAQ8xZ,GAAK,KACRrkzB,GAAI,EAAGA,GAAI,IAAKA,KACvBuyZ,GAAMvyZ,IAAMA,IAAK,IAAM,EAAIA,IAAK,IAAM,EAAIA,IAAK,IAAM,EAAIA,IAAK,IAAM,EAAIA,IAAK,IAAM,EAAI,EAEzFuyZ,UAAM,KAAOA,GAAM,KAAO,EAE1Bs9E,GAAUpkd,IAAO8mY,GAAM9mY,IAChB8mY,GAAM9kZ,KAIjB,YAAoBsC,IAClB,IAAIige,GAAKvie,GAAGqqF,GAAIm4Y,GAAO9ze,GAAG+ze,GAAUnge,GAAIxc,OAAQ48e,GAAU,EAG1D,IAAKF,GAAQ,EAAGA,GAAQC,GAASD,KAEV,QAAZ,OADTxie,GAAIsC,GAAIqvN,WAAW6wQ,OACaA,GAAQ,EAAIC,IAEpB,QAAZ,OADVp4Y,GAAK/nF,GAAIqvN,WAAW6wQ,GAAQ,OAE1Bxie,GAAI,OAAYA,GAAI,OAAW,KAAOqqF,GAAK,OAC3Cm4Y,MAGJE,IAAW1ie,GAAI,IAAO,EAAIA,GAAI,KAAQ,EAAIA,GAAI,MAAU,EAAI,EAO9D,IAHAuie,GAAM,IAAIlge,WAAWqge,IAGhBh0e,GAAI,EAAG8ze,GAAQ,EAAG9ze,GAAIg0e,GAASF,KAEb,QAAZ,OADTxie,GAAIsC,GAAIqvN,WAAW6wQ,OACaA,GAAQ,EAAIC,IAEpB,QAAZ,OADVp4Y,GAAK/nF,GAAIqvN,WAAW6wQ,GAAQ,OAE1Bxie,GAAI,OAAYA,GAAI,OAAW,KAAOqqF,GAAK,OAC3Cm4Y,MAGAxie,GAAI,IAENuie,GAAI7ze,MAAOsR,GACFA,GAAI,MAEbuie,GAAI7ze,MAAO,IAAQsR,KAAM,EACzBuie,GAAI7ze,MAAO,IAAY,GAAJsR,IACdo3yB,GAAQ,OAEb70U,GAAI7ze,MAAO,IAAQsR,KAAM,GACzBuie,GAAI7ze,MAAO,IAAQsR,KAAM,EAAI,GAC7Buie,GAAI7ze,MAAO,IAAY,GAAJsR,KAGnBuie,GAAI7ze,MAAO,IAAQsR,KAAM,GACzBuie,GAAI7ze,MAAO,IAAQsR,KAAM,GAAK,GAC9Buie,GAAI7ze,MAAO,IAAQsR,KAAM,EAAI,GAC7Buie,GAAI7ze,MAAO,IAAY,GAAJsR,IAIvB,OAAOuie,GAIT,YAAwBA,GAAKluZ,IAI3B,GAAIA,GAAM,QACHkuZ,GAAInD,UAAY+3U,OAAuB50U,GAAInD,UAAY83U,MAC1D,OAAOnkyB,OAAOC,aAAaU,MAAM,KAAM2jyB,EAAU90U,GAAKluZ,KAK1D,QADI/hF,GAAS,GACJ5D,GAAI,EAAGA,GAAI2lF,GAAK3lF,KACvB4D,IAAUygB,OAAOC,aAAauvd,GAAI7ze,KAEpC,OAAO4D,GAqBT,YAAoBiwe,GAAKh0e,IACvB,IAAIG,GAAGwV,GAAKlE,GAAG8ie,GACXzuZ,GAAM9lF,IAAOg0e,GAAIz8e,OAKjBi9e,GAAW,IAAI10e,MAAY,EAANgmF,IAEzB,IAAKnwE,GAAM,EAAGxV,GAAI,EAAGA,GAAI2lF,IAGvB,IAFAr0E,GAAIuie,GAAI7ze,OAEA,IAAQq0e,GAAS7+d,MAASlE,QAIlC,IAFA8ie,GAAQV,GAAQpie,KAEJ,EAAK+ie,GAAS7+d,MAAS,MAAQxV,IAAKo0e,GAAQ,MAAxD,CAKA,IAFA9ie,IAAe,IAAV8ie,GAAc,GAAiB,IAAVA,GAAc,GAAO,EAExCA,GAAQ,GAAKp0e,GAAI2lF,IACtBr0E,GAAKA,IAAK,EAAiB,GAAXuie,GAAI7ze,MACpBo0e,KAIEA,GAAQ,EAAKC,GAAS7+d,MAAS,MAE/BlE,GAAI,MACN+ie,GAAS7+d,MAASlE,IAGlB+ie,GAAS7+d,MAAS,OADlBlE,IAAK,QAC6B,GAAM,KACxC+ie,GAAS7+d,MAAS,MAAc,KAAJlE,IAIhC,OAAOs3yB,GAAev0U,GAAU7+d,IAUlC,YAAoBq+d,GAAKh0e,IACvB,IAAIq6E,GAOJ,KALAr6E,GAAMA,IAAOg0e,GAAIz8e,QACPy8e,GAAIz8e,SAAUyI,GAAMg0e,GAAIz8e,QAGlC8iF,GAAMr6E,GAAM,EACLq6E,IAAO,GAA2B,MAAV,IAAX25Z,GAAI35Z,MAAyBA,KAQjD,OAJIA,GAAM,GAIE,IAARA,GAAoBr6E,GAEhBq6E,GAAMw5Z,GAAQG,GAAI35Z,KAAQr6E,GAAOq6E,GAAMr6E,GA4BjD,YAAiBgpzB,GAAOh1U,GAAKluZ,GAAKzL,IAKhC,QAJIiK,GAAc,MAAR0kuB,GAAiB,EACvBzkuB,GAAOykuB,KAAU,GAAM,MAAS,EAChC1pzB,GAAI,EAEO,IAARwmF,IAAW,CAKhBA,IADAxmF,GAAIwmF,GAAM,IAAO,IAAOA,GAGxB,GAEEvB,GAAMA,IADND,GAAMA,GAAK0vZ,GAAI35Z,MAAS,GACR,UACP/6E,IAEXglF,IAAM,MACNC,IAAM,MAGR,OAAQD,GAAMC,IAAM,GAAM,EA2C5B,IAAI0kuB,GAAW,WACX,MAAM1yZ,GAfV,cAGE,QAFI9kZ,GAAG8kZ,GAAQ,GAENj3Z,GAAI,EAAGA,GAAI,IAAKA,KAAK,CAC5BmS,GAAInS,GACJ,QAASslC,GAAI,EAAGA,GAAI,EAAGA,KACrBnzB,GAAU,EAAJA,GAAU,WAAcA,KAAM,EAAOA,KAAM,EAEnD8kZ,GAAMj3Z,IAAKmS,GAGb,OAAO8kZ,GAISwgF,GACdkyU,UAAW,IAAM1yZ,GACVA,IAGX,YAAeygF,GAAKhD,GAAKluZ,GAAKzL,IAC5B,IAAIz6C,GAAIqpxB,KACJntxB,GAAMu+C,GAAMyL,GAEhBkxZ,KAAO,EAEP,QAAS72e,GAAIk6E,GAAKl6E,GAAI27B,GAAK37B,KACzB62e,GAAOA,KAAQ,EAAKp3c,GAAmB,KAAhBo3c,GAAMhD,GAAI7ze,MAGnC,OAAe,EAAP62e,GA+DV,YAAsBkyU,GAAM1qyB,IAC1B,IAAI9iB,GACAytzB,GACArgsB,GACAkwoB,GACAowD,GACAttxB,GAEAutxB,GAEAC,GACAC,GACAC,GAEAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAj3K,GACA/hkB,GAEA+U,GACA1R,GACAxa,GACAowvB,GAGA5lyB,GAAOH,GAMXG,GAAQ8kyB,GAAK9kyB,MACb0kG,IAFAqgsB,GAAMD,GAAKe,UAEGf,GAAKgB,SAAW,GAE9BjmyB,GAASilyB,GAAKjlyB,OACdmlyB,IAFApwD,GAAOkwD,GAAKiB,WAEE3ryB,GAAQ0qyB,GAAKkB,WAC3BtuxB,GAAMk9tB,IAAQkwD,GAAKkB,UAAY,KAE/Bf,IAVA3tzB,GAAQwtzB,GAAKxtzB,OAUA2tzB,KAEbC,GAAQ5tzB,GAAM4tzB,MACdC,GAAQ7tzB,GAAM6tzB,MACdC,GAAQ9tzB,GAAM8tzB,MACdC,GAAW/tzB,GAAMiL,OACjB+izB,GAAOhuzB,GAAMguzB,KACbC,GAAOjuzB,GAAMiuzB,KACbC,GAAQluzB,GAAM2uzB,QACdR,GAAQnuzB,GAAM4uzB,SACdR,IAAS,GAAKpuzB,GAAM6uzB,SAAW,EAC/BR,IAAS,GAAKruzB,GAAM8uzB,UAAY,EAMhC7qsB,EACA,EAAG,CACGgqsB,GAAO,KACTD,IAAQtlyB,GAAM+kyB,OAAUQ,GAExBD,IAAQtlyB,GAAM+kyB,QADdQ,IAAQ,GAERA,IAAQ,GAGV72K,GAAO82K,GAAMF,GAAOI,IAEpBW,EACA,OAAS,CAKP,GAHAf,MADA34uB,GAAK+hkB,KAAS,GAEd62K,IAAQ54uB,GAEG,IADXA,GAAM+hkB,KAAS,GAAM,KAKnB7unB,GAAO+0uB,MAAiB,MAAPlmH,OAAO,MAEZ,GAAL/hkB,IAqKL,IAGmB,IAAR,GAALA,IAAgB,CACxB+hkB,GAAO82K,IAAc,MAAP92K,KAA8B42K,IAAS,GAAK34uB,IAAM,IAChE,cAEY,GAALA,GAAS,CAEhBr1E,GAAM4c,KAtSH,GAuSH,QAGA4wyB,GAAKrzyB,IAAM,8BACXna,GAAM4c,KA5SJ,GA6SF,QAnLAwtE,GAAa,MAAPgtjB,IACN/hkB,IAAM,MAEA44uB,GAAO54uB,KACT24uB,IAAQtlyB,GAAM+kyB,OAAUQ,GACxBA,IAAQ,GAEV7juB,IAAO4juB,IAAS,GAAK34uB,IAAM,EAC3B24uB,MAAU34uB,GACV44uB,IAAQ54uB,IAGN44uB,GAAO,KACTD,IAAQtlyB,GAAM+kyB,OAAUQ,GAExBD,IAAQtlyB,GAAM+kyB,QADdQ,IAAQ,GAERA,IAAQ,GAEV72K,GAAO+2K,GAAMH,GAAOK,IAEpBW,EACA,OAAS,CAMP,GAJAhB,MADA34uB,GAAK+hkB,KAAS,GAEd62K,IAAQ54uB,KAGC,IAFTA,GAAM+hkB,KAAS,GAAM,MA4HWl5kB,IAKT,IAAR,GAALmX,IAAgB,CACxB+hkB,GAAO+2K,IAAc,MAAP/2K,KAA8B42K,IAAS,GAAK34uB,IAAM,IAChE,WAGAm4uB,GAAKrzyB,IAAM,wBACXna,GAAM4c,KA1RR,GA2RE,QAzHA,GAZA87D,GAAc,MAAP0+jB,GAEH62K,IADJ54uB,IAAM,MAEJ24uB,IAAQtlyB,GAAM+kyB,OAAUQ,IACxBA,IAAQ,GACG54uB,KACT24uB,IAAQtlyB,GAAM+kyB,OAAUQ,GACxBA,IAAQ,KAGZv1uB,IAAQs1uB,IAAS,GAAK34uB,IAAM,GAEjBs4uB,GAAM,CACfH,GAAKrzyB,IAAM,gCACXna,GAAM4c,KApKV,GAqKI,QAOF,GAJAoxyB,MAAU34uB,GACV44uB,IAAQ54uB,GAGJqD,IADJrD,GAAKiorB,GAAOowD,IACG,CAEb,IADAr4uB,GAAKqD,GAAOrD,IACHw4uB,IACH7tzB,GAAMivzB,KAAM,CACdzB,GAAKrzyB,IAAM,gCACXna,GAAM4c,KAjLd,GAkLQ,QA2BJ,GAFAshD,GAAO,EACPowvB,GAAcP,GACA,IAAVD,IAEF,GADA5vvB,IAAQ0vvB,GAAQv4uB,GACZA,GAAK+U,GAAK,CACZA,IAAO/U,GACP,GACE9sD,GAAO+0uB,MAAUywD,GAAS7vvB,cACjBmX,IACXnX,GAAOo/rB,GAAO5krB,GACd41uB,GAAc/lyB,YAGTulyB,GAAQz4uB,IAGf,GAFAnX,IAAQ0vvB,GAAQE,GAAQz4uB,IACxBA,IAAMy4uB,IACG1juB,GAAK,CACZA,IAAO/U,GACP,GACE9sD,GAAO+0uB,MAAUywD,GAAS7vvB,cACjBmX,IAEX,GADAnX,GAAO,EACH4vvB,GAAQ1juB,GAAK,CAEfA,IADA/U,GAAKy4uB,GAEL,GACEvlyB,GAAO+0uB,MAAUywD,GAAS7vvB,cACjBmX,IACXnX,GAAOo/rB,GAAO5krB,GACd41uB,GAAc/lyB,aAKlB21C,IAAQ4vvB,GAAQz4uB,GACZA,GAAK+U,GAAK,CACZA,IAAO/U,GACP,GACE9sD,GAAO+0uB,MAAUywD,GAAS7vvB,cACjBmX,IACXnX,GAAOo/rB,GAAO5krB,GACd41uB,GAAc/lyB,GAGlB,KAAO6hE,GAAM,GACX7hE,GAAO+0uB,MAAUgxD,GAAYpwvB,MAC7B31C,GAAO+0uB,MAAUgxD,GAAYpwvB,MAC7B31C,GAAO+0uB,MAAUgxD,GAAYpwvB,MAC7BksB,IAAO,EAELA,KACF7hE,GAAO+0uB,MAAUgxD,GAAYpwvB,MACzBksB,GAAM,IACR7hE,GAAO+0uB,MAAUgxD,GAAYpwvB,YAI9B,CACHA,GAAOo/rB,GAAO5krB,GACd,GACEnwD,GAAO+0uB,MAAU/0uB,GAAO21C,MACxB31C,GAAO+0uB,MAAU/0uB,GAAO21C,MACxB31C,GAAO+0uB,MAAU/0uB,GAAO21C,MACxBksB,IAAO,QACAA,GAAM,GACXA,KACF7hE,GAAO+0uB,MAAU/0uB,GAAO21C,MACpBksB,GAAM,IACR7hE,GAAO+0uB,MAAU/0uB,GAAO21C,QAehC,OAkBJ,aAEKuvvB,GAAMrgsB,IAAQkwoB,GAAOl9tB,IAM9B4txB,KAAS,IADTC,KAFA7juB,GAAM6juB,IAAQ,IAEC,IACO,EAGtBT,GAAKe,QALLd,IAAOrjuB,GAMPojuB,GAAKiB,SAAWnxD,GAChBkwD,GAAKgB,SAAYf,GAAMrgsB,GAAYA,GAAOqgsB,GAAZ,EAAmB,GAAKA,GAAMrgsB,IAC5DogsB,GAAKkB,UAAapxD,GAAOl9tB,GAAaA,GAAMk9tB,GAAb,IAAqB,KAAOA,GAAOl9tB,IAClEpgC,GAAMguzB,KAAOA,GACbhuzB,GAAMiuzB,KAAOA,GAMf,IASIiB,GAAQ,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAG3DC,GAAO,CACT,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGtDC,GAAQ,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IACtD,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAClD,KAAM,MAAO,MAAO,MAAO,EAAG,GAG5BC,GAAO,CACT,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGtB,YAAuBzxzB,GAAM0xzB,GAAMC,GAAYrjE,GAAOrxV,GAAO20Z,GAAa75C,GAAMt0nB,IAC9E,IAYIouqB,GACAjrzB,GACAwgY,GACA3/O,GACAlkJ,GAIAi/B,GAMAsvxB,GAAWC,GAASC,GA1BpB3B,GAAO5sqB,GAAK4sqB,KAGZ7juB,GAAM,EACN9I,GAAM,EACN/4C,GAAM,EAAGjkC,GAAM,EACfsjT,GAAO,EACPoxB,GAAO,EACP93K,GAAO,EACPh8F,GAAO,EACP2qvB,GAAO,EACPC,GAAO,EAMP/izB,GAAO,KACPgjzB,GAAa,EAGbritB,GAAQk/sB,GAAMoD,IACdC,GAAOrD,GAAMoD,IACbz/R,GAAQ,KACR2/R,GAAc,EAoClB,IAAK9luB,GAAM,EAAGA,IA5FF,GA4FkBA,KAC5BsjB,GAAMtjB,IAAO,EAEf,IAAK9I,GAAM,EAAGA,GAAM4qqB,GAAO5qqB,KACzBosB,GAAM4htB,GAAKC,GAAajuuB,OAK1B,IADAsmO,GAAOqmgB,GACF3pzB,GArGO,GAqGQA,IAAO,GACN,IAAfopG,GAAMppG,IADkBA,MAM9B,GAHIsjT,GAAOtjT,KACTsjT,GAAOtjT,IAEG,IAARA,GAIFu2Z,UAAM20Z,MAAkB,SAMxB30Z,GAAM20Z,MAAkB,SAExBnuqB,GAAK4sqB,KAAO,EACL,EAET,IAAK1lxB,GAAM,EAAGA,GAAMjkC,IACC,IAAfopG,GAAMnlE,IADaA,MASzB,IANIq/Q,GAAOr/Q,KACTq/Q,GAAOr/Q,IAIT28B,GAAO,EACFklB,GAAM,EAAGA,IAnIF,GAmIkBA,KAG5B,GAFAllB,KAAS,GACTA,IAAQwoC,GAAMtjB,KACH,EACT,OAAO,EAGX,GAAIllB,GAAO,IArID,IAqIOtnE,IAA0B,IAAR0G,IACjC,OAAO,EAKT,IADA2rzB,GAAK,GAAK,EACL7luB,GAAM,EAAGA,GAhJF,GAgJiBA,KAC3B6luB,GAAK7luB,GAAM,GAAK6luB,GAAK7luB,IAAOsjB,GAAMtjB,IAIpC,IAAK9I,GAAM,EAAGA,GAAM4qqB,GAAO5qqB,KACM,IAA3BguuB,GAAKC,GAAajuuB,MACpBq0rB,GAAKs6C,GAAKX,GAAKC,GAAajuuB,QAAWA,IAmE3C,GArNU,IAwLN1jF,IACFmP,GAAOwjhB,GAAQolP,GACfv1uB,GAAM,IAzLC,IA2LF+vxB,IACLpjzB,GAAOmizB,GACPa,IAAc,IACdx/R,GAAQ4+R,GACRe,IAAe,IACf9vxB,GAAM,MAGNrzB,GAAOqizB,GACP7+R,GAAQ8+R,GACRjvxB,IAAM,GAIR0vxB,GAAO,EACPxuuB,GAAM,EACN8I,GAAM7hD,GACNpnC,GAAOquzB,GACPx2e,GAAOpxB,GACP1mJ,GAAO,EACP8jO,IAAM,EAEN3/O,IADAwqqB,GAAO,GAAKjogB,IACE,EAjNL,IAoNJhqT,IAAiBiyzB,GAzNN,KAMN,IAoNPjyzB,IAAkBiyzB,GAzNJ,IA0Nf,OAAO,EAIT,OAAS,CAEPH,GAAYtluB,GAAM82E,GAClBkvpB,GAAS9uuB,IAAOlhD,IACduvxB,GAAU,EACVC,GAAWj6C,GAAKr0rB,KAETq0rB,GAAKr0rB,IAAOlhD,IACnBuvxB,GAAUp/R,GAAM2/R,GAAcv6C,GAAKr0rB,KACnCsuuB,GAAW7izB,GAAKgjzB,GAAap6C,GAAKr0rB,OAGlCquuB,GAAU,GACVC,GAAW,GAIbH,GAAO,GAAMrluB,GAAM82E,GAEnB34H,GADA/jC,GAAO,GAAKw0U,GAEZ,GAEE6hF,GAAM15Z,IAAQ2uzB,IAAQ5upB,KADtB18J,IAAQirzB,KAC+BC,IAAa,GAAOC,IAAW,GAAMC,GAAU,QACtE,IAATprzB,IAIT,IADAirzB,GAAO,GAAMrluB,GAAM,EACZ0luB,GAAOL,IACZA,KAAS,EAWX,GATa,IAAbY,IACEP,IAAQL,GAAO,EACfK,IAAQL,IAERK,GAAO,EAITxuuB,KACqB,KAAfosB,GAAMtjB,IAAY,CACtB,GAAIA,KAAQ9lF,GAAO,MACnB8lF,GAAMkluB,GAAKC,GAAa55C,GAAKr0rB,KAI/B,GAAI8I,GAAMw9N,KAASkogB,GAAOzqqB,MAAU2/O,GAAK,CAYvC,IAVa,IAAT9jO,KACFA,GAAO0mJ,IAITzmT,IAAQonC,GAIR28B,GAAO,IADP8zQ,GAAO5uP,GAAM82E,IAEN83K,GAAO93K,GAAO58J,OACnB4gE,IAAQwoC,GAAMsrO,GAAO93K,MACT,IACZ83K,KACA9zQ,KAAS,EAKX,GADA2qvB,IAAQ,GAAK72e,GA3RR,IA4RAp7U,IAAiBiyzB,GAjSV,KAMN,IA4RHjyzB,IAAkBiyzB,GAjSR,IAkSX,OAAO,EAQTh1Z,GAJA71B,GAAM8qb,GAAOzqqB,IAICuiK,IAAQ,GAAOoxB,IAAQ,GAAO73U,GAAOquzB,GAAc,GAOrE,OAAa,IAATM,KAIFj1Z,GAAM15Z,GAAO2uzB,IAAU1luB,GAAM82E,IAAS,GAAO,IAAM,GAAK,GAK1D7f,GAAK4sqB,KAAOrmgB,GACL,EAqFT,YAAiBt/S,IACf,OAAWA,KAAM,GAAM,MACbA,KAAM,EAAK,SACP,MAAJA,KAAe,KACX,IAAJA,KAAa,IAIzB,cACExS,KAAK8mB,KAAO,EACZ9mB,KAAKs3H,MAAO,EACZt3H,KAAKs6D,KAAO,EACZt6D,KAAKw6zB,UAAW,EAChBx6zB,KAAK+qX,MAAQ,EACb/qX,KAAK63zB,KAAO,EACZ73zB,KAAKgjK,MAAQ,EACbhjK,KAAKyO,MAAQ,EAEbzO,KAAKo9V,KAAO,KAGZp9V,KAAKy6zB,MAAQ,EACbz6zB,KAAK83zB,MAAQ,EACb93zB,KAAK+3zB,MAAQ,EACb/3zB,KAAKg4zB,MAAQ,EACbh4zB,KAAKmV,OAAS,KAGdnV,KAAKk4zB,KAAO,EACZl4zB,KAAKm4zB,KAAO,EAGZn4zB,KAAK+F,OAAS,EACd/F,KAAKoyB,OAAS,EAGdpyB,KAAKy6hB,MAAQ,EAGbz6hB,KAAK64zB,QAAU,KACf74zB,KAAK84zB,SAAW,KAChB94zB,KAAK+4zB,QAAU,EACf/4zB,KAAKg5zB,SAAW,EAGhBh5zB,KAAK06zB,MAAQ,EACb16zB,KAAK26zB,KAAO,EACZ36zB,KAAK46zB,MAAQ,EACb56zB,KAAK66zB,KAAO,EACZ76zB,KAAKqL,KAAO,KAEZrL,KAAKw5zB,KAAO1C,GAAM,KAClB92zB,KAAK6/wB,KAAOi3C,GAAM,KAOlB92zB,KAAK86zB,OAAS,KACd96zB,KAAK+6zB,QAAU,KACf/6zB,KAAKm5zB,KAAO,EACZn5zB,KAAKg7zB,KAAO,EACZh7zB,KAAKi7zB,IAAM,EA4Eb,YAAsBvD,GAAMwD,IAC1B,IAAI1oU,GACAtof,GAEJ,OAAKwtzB,IAGLxtzB,GAAQ,IAAIixzB,GAIZzD,GAAKxtzB,MAAQA,GACbA,GAAMiL,OAAS,KACfq9e,GA/CF,YAAuBklU,GAAMwD,IAC3B,IAAI5gwB,GACApwD,GAmBJ,OAhBKwtzB,KAASA,GAAKxtzB,QACnBA,GAAQwtzB,GAAKxtzB,MAGbkxzB,GAAiB,GACf9gwB,GAAO,EACP4gwB,IAAcA,KAGd5gwB,GAA2B,GAAnB4gwB,IAAc,GAClBA,GAAa,KACfA,IAAc,KAKdA,KAAeA,GAAa,GAAKA,GAAa,MArL5B,GAwLD,OAAjBhxzB,GAAMiL,QAAmBjL,GAAMuwzB,QAAUS,KAC3ChxzB,GAAMiL,OAAS,MAIjBjL,GAAMowD,KAAOA,GACbpwD,GAAMuwzB,MAAQS,GA1ChB,YAAsBxD,IACpB,IAAIxtzB,GAEJ,OAAKwtzB,IAASA,GAAKxtzB,QACnBA,GAAQwtzB,GAAKxtzB,OACP4tzB,MAAQ,EACd5tzB,GAAM6tzB,MAAQ,EACd7tzB,GAAM8tzB,MAAQ,EAlChB,YAA0BN,IACxB,IAAIxtzB,GAEJ,OAAKwtzB,IAASA,GAAKxtzB,OAEnBwtzB,GAAK2D,SAAW3D,GAAK4D,WADrBpxzB,GAAQwtzB,GAAKxtzB,OAC0BuE,MAAQ,EAC/CipzB,GAAKrzyB,IAAM,GACPna,GAAMowD,OACRo9vB,GAAKF,MAAqB,EAAbttzB,GAAMowD,MAErBpwD,GAAM4c,KArHM,EAsHZ5c,GAAMotH,KAAO,EACbptH,GAAMswzB,SAAW,EACjBtwzB,GAAM2tzB,KAAO,MACb3tzB,GAAMkzV,KAAO,KACblzV,GAAMguzB,KAAO,EACbhuzB,GAAMiuzB,KAAO,EAEbjuzB,GAAM2uzB,QAAU3uzB,GAAM4wzB,OAAS/D,GAxFb,KAyFlB7szB,GAAM4uzB,SAAW5uzB,GAAM6wzB,QAAUhE,GAxFd,KA0FnB7szB,GAAMivzB,KAAO,EACbjvzB,GAAM8wzB,MAAO,EAnJS,IAIA,EA4JfO,CAAiB7D,MA5JF,EA+Lf8D,CAAa9D,KAgBd+D,CAAc/D,GAAMwD,IAnNJ,IAoNlB1oU,KACFklU,GAAKxtzB,MAAQ,MAERsof,KAnNe,EAiOxB,IAEIkpU,GAAQC,GAFRC,IAAS,EAIb,YAAqB1xzB,IAEnB,GAAI0xzB,GAAQ,CACV,IAAIpwuB,GAOJ,IALAkwuB,GAAS3E,GAAM,KACf4E,GAAU5E,GAAM,IAGhBvruB,GAAM,EACCA,GAAM,KAAOthF,GAAMsvzB,KAAKhuuB,MAAS,EACxC,KAAOA,GAAM,KAAOthF,GAAMsvzB,KAAKhuuB,MAAS,EACxC,KAAOA,GAAM,KAAOthF,GAAMsvzB,KAAKhuuB,MAAS,EACxC,KAAOA,GAAM,KAAOthF,GAAMsvzB,KAAKhuuB,MAAS,EAMxC,IAJAqwuB,GA5QS,EA4Qc3xzB,GAAMsvzB,KAAM,EAAG,IAAKkC,GAAU,EAAGxxzB,GAAM21wB,KAAM,CAAEs4C,KAAM,IAG5E3suB,GAAM,EACCA,GAAM,IAAMthF,GAAMsvzB,KAAKhuuB,MAAS,EAEvCqwuB,GAjRU,EAiRa3xzB,GAAMsvzB,KAAM,EAAG,GAAMmC,GAAS,EAAGzxzB,GAAM21wB,KAAM,CAAEs4C,KAAM,IAG5EyD,IAAS,EAGX1xzB,GAAM2uzB,QAAU6C,GAChBxxzB,GAAM6uzB,QAAU,EAChB7uzB,GAAM4uzB,SAAW6C,GACjBzxzB,GAAM8uzB,SAAW,EAkBnB,YAAsBtB,GAAMv9wB,GAAK7P,GAAKy6B,IACpC,IAAI6d,GACA14E,GAAQwtzB,GAAKxtzB,MAGjB,OAAqB,OAAjBA,GAAMiL,SACRjL,GAAM4tzB,MAAQ,GAAK5tzB,GAAMuwzB,MACzBvwzB,GAAM8tzB,MAAQ,EACd9tzB,GAAM6tzB,MAAQ,EAEd7tzB,GAAMiL,OAAS0hzB,GAAK3szB,GAAM4tzB,QAI5BvptB,IAAYrkG,GAAM4tzB,OAChBrB,GAASvszB,GAAMiL,OAAQglC,GAAK7P,GAAMpgC,GAAM4tzB,MAAO5tzB,GAAM4tzB,MAAO,GAC5D5tzB,GAAM8tzB,MAAQ,EACd9tzB,GAAM6tzB,MAAQ7tzB,GAAM4tzB,SAGpBl1uB,GAAO14E,GAAM4tzB,MAAQ5tzB,GAAM8tzB,OAChBjzvB,KACT6d,GAAO7d,IAGT0xvB,GAASvszB,GAAMiL,OAAQglC,GAAK7P,GAAMy6B,GAAM6d,GAAM14E,GAAM8tzB,QACpDjzvB,IAAQ6d,KAGN6zuB,GAASvszB,GAAMiL,OAAQglC,GAAK7P,GAAMy6B,GAAMA,GAAM,GAC9C76D,GAAM8tzB,MAAQjzvB,GACd76D,GAAM6tzB,MAAQ7tzB,GAAM4tzB,QAGpB5tzB,GAAM8tzB,OAASp1uB,GACX14E,GAAM8tzB,QAAU9tzB,GAAM4tzB,QAAS5tzB,GAAM8tzB,MAAQ,GAC7C9tzB,GAAM6tzB,MAAQ7tzB,GAAM4tzB,QAAS5tzB,GAAM6tzB,OAASn1uB,MAG7C,EAGT,YAAiB80uB,GAAM14c,IACrB,IAAI90W,GACA0oB,GAAOH,GACPpnB,GACA85E,GACA01uB,GAAMzrvB,GACN8ovB,GACAC,GACAR,GAAKnwD,GACLzisB,GACAqD,GACAowvB,GAEAoB,GAAWC,GAASC,GAEpBgC,GAAWC,GAASC,GACpB1nuB,GACAk+Z,GAEAjnW,GAEAz9I,GATAwzoB,GAAO,EAMP26K,GAAOpF,GAAK,GAKZ7qhB,GACF,CAAE,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IAGlE,IAAK0rhB,KAASA,GAAKxtzB,QAAUwtzB,GAAKjlyB,SAC5BilyB,GAAK9kyB,OAA2B,IAAlB8kyB,GAAKgB,SACvB,OA5VoB,EAyBJ,MAsUlBxuzB,GAAQwtzB,GAAKxtzB,OACH4c,OAAmB5c,GAAM4c,KAtUjB,IA0UlBq+D,GAAMuyuB,GAAKiB,SACXlmyB,GAASilyB,GAAKjlyB,OAEdpnB,GAAOqszB,GAAKe,QACZ7lyB,GAAQ8kyB,GAAK9kyB,MAEbslyB,GAAOhuzB,GAAMguzB,KACbC,GAAOjuzB,GAAMiuzB,KAGbR,GALAkD,GAAOnD,GAAKgB,SAMZlxD,GATAp4rB,GAAOsovB,GAAKkB,UAUZpmU,GApXsB,EAsXtB0pU,EACA,OACE,OAAQhyzB,GAAM4c,WAtWJ,EAwWN,GAAmB,IAAf5c,GAAMowD,KAAY,CACpBpwD,GAAM4c,KA7VI,GA8VV,MAGF,KAAOqxyB,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGV,GAAkB,EAAbjuzB,GAAMowD,MAAsB,QAAT49vB,GAAiB,CACvChuzB,GAAM84J,MAAQ,EAEdi5pB,GAAK,GAAY,IAAP/D,GACV+D,GAAK,GAAM/D,KAAS,EAAK,IACzBhuzB,GAAM84J,MAAQyiV,GAAMv7e,GAAM84J,MAAOi5pB,GAAM,EAAG,GAI1C/D,GAAO,EACPC,GAAO,EAEPjuzB,GAAM4c,KA/XD,EAgYL,MAMF,GAJA5c,GAAM6gX,MAAQ,EACV7gX,GAAMkzV,OACRlzV,GAAMkzV,KAAKzlO,MAAO,KAED,EAAbztH,GAAMowD,UACA,IAAP49vB,KAA2B,IAAMA,IAAQ,IAAM,GAAI,CACtDR,GAAKrzyB,IAAM,yBACXna,GAAM4c,KA7WD,GA8WL,MAEF,GApZY,IAoZA,GAAPoxyB,IAA0C,CAC7CR,GAAKrzyB,IAAM,6BACXna,GAAM4c,KAlXD,GAmXL,MAOF,GAHAqxyB,IAAQ,EAER7juB,GAAiC,GAAnB,IAHd4juB,MAAU,IAIU,IAAhBhuzB,GAAMuwzB,MACRvwzB,GAAMuwzB,MAAQnmuB,WAEPA,GAAMpqF,GAAMuwzB,MAAO,CAC1B/C,GAAKrzyB,IAAM,sBACXna,GAAM4c,KA/XD,GAgYL,MAEF5c,GAAM2tzB,KAAO,GAAKvjuB,GAElBojuB,GAAKF,MAAQttzB,GAAM84J,MAAQ,EAC3B94J,GAAM4c,KAAc,IAAPoxyB,GAzZL,GAEI,GAyZZA,GAAO,EACPC,GAAO,EAEP,WAtaO,EAyaP,KAAOA,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAIV,GADAjuzB,GAAM6gX,MAAQmtc,GAxbF,IAybO,IAAdhuzB,GAAM6gX,OAAgC,CACzC2sc,GAAKrzyB,IAAM,6BACXna,GAAM4c,KAvZD,GAwZL,MAEF,GAAkB,MAAd5c,GAAM6gX,MAAgB,CACxB2sc,GAAKrzyB,IAAM,2BACXna,GAAM4c,KA5ZD,GA6ZL,MAEE5c,GAAMkzV,OACRlzV,GAAMkzV,KAAKtyV,KAASotzB,IAAQ,EAAK,GAEjB,IAAdhuzB,GAAM6gX,QAERkxc,GAAK,GAAY,IAAP/D,GACV+D,GAAK,GAAM/D,KAAS,EAAK,IACzBhuzB,GAAM84J,MAAQyiV,GAAMv7e,GAAM84J,MAAOi5pB,GAAM,EAAG,IAI5C/D,GAAO,EACPC,GAAO,EAEPjuzB,GAAM4c,KAxcA,EAwcOq1yB,KAxcP,EA4cN,KAAOhE,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGNjuzB,GAAMkzV,OACRlzV,GAAMkzV,KAAKzxM,KAAOusqB,IAEF,IAAdhuzB,GAAM6gX,QAERkxc,GAAK,GAAY,IAAP/D,GACV+D,GAAK,GAAM/D,KAAS,EAAK,IACzB+D,GAAK,GAAM/D,KAAS,GAAM,IAC1B+D,GAAK,GAAM/D,KAAS,GAAM,IAC1BhuzB,GAAM84J,MAAQyiV,GAAMv7e,GAAM84J,MAAOi5pB,GAAM,EAAG,IAI5C/D,GAAO,EACPC,GAAO,EAEPjuzB,GAAM4c,KAleF,EAkeSs1yB,KAleT,EAseJ,KAAOjE,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGNjuzB,GAAMkzV,OACRlzV,GAAMkzV,KAAKi/d,OAAiB,IAAPnE,GACrBhuzB,GAAMkzV,KAAKv4U,GAAMqzyB,IAAQ,GAET,IAAdhuzB,GAAM6gX,QAERkxc,GAAK,GAAY,IAAP/D,GACV+D,GAAK,GAAM/D,KAAS,EAAK,IACzBhuzB,GAAM84J,MAAQyiV,GAAMv7e,GAAM84J,MAAOi5pB,GAAM,EAAG,IAI5C/D,GAAO,EACPC,GAAO,EAEPjuzB,GAAM4c,KA3fC,EA2fMw1yB,KA3fN,EA8fP,GAAkB,KAAdpyzB,GAAM6gX,MAAgB,CAExB,KAAOotc,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGVjuzB,GAAMnE,OAASmyzB,GACXhuzB,GAAMkzV,OACRlzV,GAAMkzV,KAAKm/d,UAAYrE,IAEP,IAAdhuzB,GAAM6gX,QAERkxc,GAAK,GAAY,IAAP/D,GACV+D,GAAK,GAAM/D,KAAS,EAAK,IACzBhuzB,GAAM84J,MAAQyiV,GAAMv7e,GAAM84J,MAAOi5pB,GAAM,EAAG,IAI5C/D,GAAO,EACPC,GAAO,OAGAjuzB,GAAMkzV,OACblzV,GAAMkzV,KAAKq9L,MAAQ,MAErBvwhB,GAAM4c,KAzhBC,EAyhBM01yB,KAzhBN,EA4hBP,GAAkB,KAAdtyzB,GAAM6gX,SACRhmT,GAAO76D,GAAMnE,QACF80zB,KAAQ91vB,GAAO81vB,IACtB91vB,KACE76D,GAAMkzV,OACR9oQ,GAAMpqF,GAAMkzV,KAAKm/d,UAAYryzB,GAAMnE,OAC9BmE,GAAMkzV,KAAKq9L,QAEdvwhB,GAAMkzV,KAAKq9L,MAAQ,IAAInshB,MAAMpE,GAAMkzV,KAAKm/d,YAE1C9F,GACEvszB,GAAMkzV,KAAKq9L,MACX7ngB,GACAvnB,GAGA05D,GAEAuvB,KAMc,IAAdpqF,GAAM6gX,QACR7gX,GAAM84J,MAAQyiV,GAAMv7e,GAAM84J,MAAOpwI,GAAOmyC,GAAM15D,KAEhDwvzB,IAAQ91vB,GACR15D,IAAQ05D,GACR76D,GAAMnE,QAAUg/D,IAEd76D,GAAMnE,QAAU,QAEtBmE,GAAMnE,OAAS,EACfmE,GAAM4c,KA7jBA,EA6jBO8/H,KA7jBP,EAgkBN,GAAkB,KAAd18I,GAAM6gX,MAAgB,CACxB,GAAa,IAAT8vc,GAAc,QAClB91vB,GAAO,EACP,GAEEuvB,GAAM1hE,GAAMvnB,GAAO05D,MAEf76D,GAAMkzV,MAAQ9oQ,IACbpqF,GAAMnE,OAAS,QAClBmE,GAAMkzV,KAAKp4V,MAAQguB,OAAOC,aAAaqhE,WAElCA,IAAOvvB,GAAO81vB,IAOvB,GALkB,IAAd3wzB,GAAM6gX,QACR7gX,GAAM84J,MAAQyiV,GAAMv7e,GAAM84J,MAAOpwI,GAAOmyC,GAAM15D,KAEhDwvzB,IAAQ91vB,GACR15D,IAAQ05D,GACJuvB,GAAO,aAEJpqF,GAAMkzV,OACblzV,GAAMkzV,KAAKp4V,KAAO,MAEpBkF,GAAMnE,OAAS,EACfmE,GAAM4c,KAvlBG,EAulBI21yB,KAvlBJ,EA0lBT,GAAkB,KAAdvyzB,GAAM6gX,MAAgB,CACxB,GAAa,IAAT8vc,GAAc,QAClB91vB,GAAO,EACP,GACEuvB,GAAM1hE,GAAMvnB,GAAO05D,MAEf76D,GAAMkzV,MAAQ9oQ,IACbpqF,GAAMnE,OAAS,QAClBmE,GAAMkzV,KAAKl6K,SAAWlwJ,OAAOC,aAAaqhE,WAErCA,IAAOvvB,GAAO81vB,IAMvB,GALkB,IAAd3wzB,GAAM6gX,QACR7gX,GAAM84J,MAAQyiV,GAAMv7e,GAAM84J,MAAOpwI,GAAOmyC,GAAM15D,KAEhDwvzB,IAAQ91vB,GACR15D,IAAQ05D,GACJuvB,GAAO,aAEJpqF,GAAMkzV,OACblzV,GAAMkzV,KAAKl6K,QAAU,MAEvBh5K,GAAM4c,KA9mBA,EA8mBO41yB,KA9mBP,EAinBN,GAAkB,IAAdxyzB,GAAM6gX,MAAgB,CAExB,KAAOotc,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGV,GAAID,MAAwB,MAAdhuzB,GAAM84J,OAAiB,CACnC00pB,GAAKrzyB,IAAM,sBACXna,GAAM4c,KAvmBH,GAwmBH,MAGFoxyB,GAAO,EACPC,GAAO,EAGLjuzB,GAAMkzV,OACRlzV,GAAMkzV,KAAKu/d,KAASzyzB,GAAM6gX,OAAS,EAAK,EACxC7gX,GAAMkzV,KAAKzlO,MAAO,GAEpB+/rB,GAAKF,MAAQttzB,GAAM84J,MAAQ,EAC3B94J,GAAM4c,KAtoBM,GAuoBZ,WAzoBQ,GA4oBR,KAAOqxyB,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGVT,GAAKF,MAAQttzB,GAAM84J,MAAQ45pB,GAAQ1E,IAEnCA,GAAO,EACPC,GAAO,EAEPjuzB,GAAM4c,KAvpBA,GAupBO+1yB,KAvpBP,GA0pBN,GAAuB,IAAnB3yzB,GAAMswzB,SAER9C,UAAKiB,SAAWxzuB,GAChBuyuB,GAAKkB,UAAYxpvB,GACjBsovB,GAAKe,QAAUptzB,GACfqszB,GAAKgB,SAAWmC,GAChB3wzB,GAAMguzB,KAAOA,GACbhuzB,GAAMiuzB,KAAOA,GA3rBC,EA+rBhBT,GAAKF,MAAQttzB,GAAM84J,MAAQ,EAC3B94J,GAAM4c,KArqBM,GAqqBCg2yB,KArqBD,GAwqBZ,GA5sBgB,IA4sBZ99c,IA3sBY,IA2sBWA,GAAuB,aAvqBtC,GA0qBZ,GAAI90W,GAAMotH,KAAM,CAEd4gsB,MAAiB,EAAPC,GACVA,IAAe,EAAPA,GAERjuzB,GAAM4c,KAjqBD,GAkqBL,MAGF,KAAOqxyB,GAAO,GAAG,CACf,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EASV,OANAjuzB,GAAMotH,KAAe,EAAP4gsB,GAGdC,IAAQ,EAGQ,GAJhBD,MAAU,IAIM,KACT,EAGHhuzB,GAAM4c,KAnsBE,GAosBR,WACG,EAKH,GAJAi2yB,GAAY7yzB,IAGZA,GAAM4c,KAnsBI,GA3CE,IA+uBRk4V,GAAqB,CAEvBk5c,MAAU,EACVC,IAAQ,EAER,QAEF,WACG,EAGHjuzB,GAAM4c,KAltBC,GAmtBP,WACG,EACH4wyB,GAAKrzyB,IAAM,qBACXna,GAAM4c,KAzsBH,GA4sBPoxyB,MAAU,EACVC,IAAQ,EAER,WA/tBY,GAsuBZ,IAJAD,MAAiB,EAAPC,GACVA,IAAe,EAAPA,GAGDA,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGV,IAAY,MAAPD,MAAqBA,KAAS,GAAM,OAAS,CAChDR,GAAKrzyB,IAAM,+BACXna,GAAM4c,KA/tBD,GAguBL,MAUF,GARA5c,GAAMnE,OAAgB,MAAPmyzB,GAIfA,GAAO,EACPC,GAAO,EAEPjuzB,GAAM4c,KAxvBK,GAtCK,IA+xBZk4V,GAAuB,aAzvBhB,GA4vBX90W,GAAM4c,KA3vBI,GA2vBGk2yB,KA3vBH,GA+vBV,GADAj4vB,GAAO76D,GAAMnE,OACH,CAGR,GAFIg/D,GAAO81vB,KAAQ91vB,GAAO81vB,IACtB91vB,GAAOqK,KAAQrK,GAAOqK,IACb,IAATrK,GAAc,QAElB0xvB,GAAShkyB,GAAQG,GAAOvnB,GAAM05D,GAAMogB,IAEpC01uB,IAAQ91vB,GACR15D,IAAQ05D,GACRqK,IAAQrK,GACRogB,IAAOpgB,GACP76D,GAAMnE,QAAUg/D,GAChB,MAGF76D,GAAM4c,KAlxBM,GAmxBZ,WA9wBW,GAixBX,KAAOqxyB,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAmBV,GAhBAjuzB,GAAMywzB,KAAkC,KAAnB,GAAPzC,IAGdC,IAAQ,EAERjuzB,GAAM0wzB,MAAmC,GAAnB,IAHtB1C,MAAU,IAMVC,IAAQ,EAERjuzB,GAAMwwzB,MAAmC,GAAnB,IAHtBxC,MAAU,IAKVA,MAAU,EACVC,IAAQ,EAGJjuzB,GAAMywzB,KAAO,KAAOzwzB,GAAM0wzB,MAAQ,GAAI,CACxClD,GAAKrzyB,IAAM,sCACXna,GAAM4c,KA7xBD,GA8xBL,MAIF5c,GAAM2wzB,KAAO,EACb3wzB,GAAM4c,KA/yBO,GA+yBAm2yB,KA/yBA,GAkzBb,KAAO/yzB,GAAM2wzB,KAAO3wzB,GAAMwwzB,OAAO,CAE/B,KAAOvC,GAAO,GAAG,CACf,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGVjuzB,GAAMsvzB,KAAKxthB,GAAM9hS,GAAM2wzB,SAAmB,EAAP3C,GAEnCA,MAAU,EACVC,IAAQ,EAGV,KAAOjuzB,GAAM2wzB,KAAO,IAClB3wzB,GAAMsvzB,KAAKxthB,GAAM9hS,GAAM2wzB,SAAW,EAapC,GAPA3wzB,GAAM2uzB,QAAU3uzB,GAAM4wzB,OACtB5wzB,GAAM6uzB,QAAU,EAGhBvmU,GAAMqpU,GAp4BA,EAo4BuB3xzB,GAAMsvzB,KAAM,EAAG,GAAItvzB,GAAM2uzB,QAAS,EAAG3uzB,GAAM21wB,KADxEt0nB,GAAO,CAAE4sqB,KAAMjuzB,GAAM6uzB,UAErB7uzB,GAAM6uzB,QAAUxtqB,GAAK4sqB,KAEjB3lU,GAAK,CACPklU,GAAKrzyB,IAAM,2BACXna,GAAM4c,KAr0BD,GAs0BL,MAGF5c,GAAM2wzB,KAAO,EACb3wzB,GAAM4c,KAr1BQ,GAq1BDo2yB,KAr1BC,GAw1Bd,KAAOhzzB,GAAM2wzB,KAAO3wzB,GAAMywzB,KAAOzwzB,GAAM0wzB,OAAO,CAC5C,KAGEf,IAFAv4K,GAAOp3oB,GAAM2uzB,QAAQX,IAAS,GAAKhuzB,GAAM6uzB,SAAW,MAEhC,GAAM,IAC1Be,GAAkB,MAAPx4K,MAFXs4K,GAAYt4K,KAAS,KAIF62K,KANZ,CAQP,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGV,GAAI2B,GAAW,GAEb5B,MAAU0B,GACVzB,IAAQyB,GAER1vzB,GAAMsvzB,KAAKtvzB,GAAM2wzB,QAAUf,OAExB,CACH,GAAiB,KAAbA,GAAiB,CAGnB,IADAhszB,GAAI8rzB,GAAY,EACTzB,GAAOrqzB,IAAG,CACf,GAAa,IAAT+szB,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAOV,GAHAD,MAAU0B,GACVzB,IAAQyB,GAEW,IAAf1vzB,GAAM2wzB,KAAY,CACpBnD,GAAKrzyB,IAAM,4BACXna,GAAM4c,KAp3BP,GAq3BC,MAEFwtE,GAAMpqF,GAAMsvzB,KAAKtvzB,GAAM2wzB,KAAO,GAC9B91vB,GAAO,GAAY,EAAPmzvB,IAEZA,MAAU,EACVC,IAAQ,UAGY,KAAb2B,GAAiB,CAGxB,IADAhszB,GAAI8rzB,GAAY,EACTzB,GAAOrqzB,IAAG,CACf,GAAa,IAAT+szB,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAKVA,IAAQyB,GAERtluB,GAAM,EACNvvB,GAAO,GAAY,GAJnBmzvB,MAAU0B,KAMV1B,MAAU,EACVC,IAAQ,MAGL,CAGH,IADArqzB,GAAI8rzB,GAAY,EACTzB,GAAOrqzB,IAAG,CACf,GAAa,IAAT+szB,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAKVA,IAAQyB,GAERtluB,GAAM,EACNvvB,GAAO,IAAa,KAJpBmzvB,MAAU0B,KAMV1B,MAAU,EACVC,IAAQ,EAGV,GAAIjuzB,GAAM2wzB,KAAO91vB,GAAO76D,GAAMywzB,KAAOzwzB,GAAM0wzB,MAAO,CAChDlD,GAAKrzyB,IAAM,4BACXna,GAAM4c,KA16BL,GA26BD,MAEF,KAAOi+C,MACL76D,GAAMsvzB,KAAKtvzB,GAAM2wzB,QAAUvmuB,IAMjC,GAp7BO,KAo7BHpqF,GAAM4c,KAAkB,MAG5B,GAAwB,IAApB5c,GAAMsvzB,KAAK,KAAY,CACzB9B,GAAKrzyB,IAAM,uCACXna,GAAM4c,KAz7BD,GA07BL,MAeF,GATA5c,GAAM6uzB,QAAU,EAGhBvmU,GAAMqpU,GAtgCD,EAsgCuB3xzB,GAAMsvzB,KAAM,EAAGtvzB,GAAMywzB,KAAMzwzB,GAAM2uzB,QAAS,EAAG3uzB,GAAM21wB,KAD/Et0nB,GAAO,CAAE4sqB,KAAMjuzB,GAAM6uzB,UAIrB7uzB,GAAM6uzB,QAAUxtqB,GAAK4sqB,KAGjB3lU,GAAK,CACPklU,GAAKrzyB,IAAM,8BACXna,GAAM4c,KA38BD,GA48BL,MAcF,GAXA5c,GAAM8uzB,SAAW,EAGjB9uzB,GAAM4uzB,SAAW5uzB,GAAM6wzB,QAEvBvoU,GAAMqpU,GAthCA,EAshCuB3xzB,GAAMsvzB,KAAMtvzB,GAAMywzB,KAAMzwzB,GAAM0wzB,MAAO1wzB,GAAM4uzB,SAAU,EAAG5uzB,GAAM21wB,KAD3Ft0nB,GAAO,CAAE4sqB,KAAMjuzB,GAAM8uzB,WAIrB9uzB,GAAM8uzB,SAAWztqB,GAAK4sqB,KAGlB3lU,GAAK,CACPklU,GAAKrzyB,IAAM,wBACXna,GAAM4c,KA59BD,GA69BL,MAIF,GADA5c,GAAM4c,KA1+BQ,GA3CE,IAshCZk4V,GAAuB,aA3+Bb,GA8+Bd90W,GAAM4c,KA7+BO,GA6+BAq2yB,KA7+BA,GAg/Bb,GAAItC,IAAQ,GAAKzrvB,IAAQ,IAAK,CAE5BsovB,GAAKiB,SAAWxzuB,GAChBuyuB,GAAKkB,UAAYxpvB,GACjBsovB,GAAKe,QAAUptzB,GACfqszB,GAAKgB,SAAWmC,GAChB3wzB,GAAMguzB,KAAOA,GACbhuzB,GAAMiuzB,KAAOA,GAEbiF,GAAa1F,GAAMlwD,IAEnBrirB,GAAMuyuB,GAAKiB,SACXlmyB,GAASilyB,GAAKjlyB,OACd28C,GAAOsovB,GAAKkB,UACZvtzB,GAAOqszB,GAAKe,QACZ7lyB,GAAQ8kyB,GAAK9kyB,MACbioyB,GAAOnD,GAAKgB,SACZR,GAAOhuzB,GAAMguzB,KACbC,GAAOjuzB,GAAMiuzB,KA3gCH,KA8gCNjuzB,GAAM4c,OACR5c,GAAM8wzB,MAAO,GAEf,MAGF,IADA9wzB,GAAM8wzB,KAAO,EAIXnB,IAFAv4K,GAAOp3oB,GAAM2uzB,QAAQX,IAAS,GAAKhuzB,GAAM6uzB,SAAW,MAEhC,GAAM,IAC1Be,GAAkB,MAAPx4K,MAFXs4K,GAAYt4K,KAAS,KAIJ62K,KANV,CAQP,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGV,GAAI0B,IAAgC,IAAV,IAAVA,IAAuB,CAIrC,IAHAiC,GAAYlC,GACZmC,GAAUlC,GACVmC,GAAWlC,GAKTD,IAHAv4K,GAAOp3oB,GAAM2uzB,QAAQmD,KACX9D,IAAS,GAAM4D,GAAYC,IAAY,IAAoCD,QAEjE,GAAM,IAC1BhC,GAAkB,MAAPx4K,KAENw6K,IAJLlC,GAAYt4K,KAAS,KAIU62K,KAPxB,CASP,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAIVD,MAAU4D,GACV3D,IAAQ2D,GAER5xzB,GAAM8wzB,MAAQc,GAQhB,GALA5D,MAAU0B,GACVzB,IAAQyB,GAER1vzB,GAAM8wzB,MAAQpB,GACd1vzB,GAAMnE,OAAS+zzB,GACC,IAAZD,GAAe,CAIjB3vzB,GAAM4c,KAvjCK,GAwjCX,MAEF,GAAc,GAAV+yyB,GAAc,CAEhB3vzB,GAAM8wzB,MAAO,EACb9wzB,GAAM4c,KA3kCI,GA4kCV,MAEF,GAAc,GAAV+yyB,GAAc,CAChBnC,GAAKrzyB,IAAM,8BACXna,GAAM4c,KA9jCD,GA+jCL,MAEF5c,GAAMuwhB,MAAkB,GAAVo/R,GACd3vzB,GAAM4c,KA1kCU,GA0kCHu2yB,KA1kCG,GA6kChB,GAAInzzB,GAAMuwhB,MAAO,CAGf,IADA3shB,GAAI5D,GAAMuwhB,MACH09R,GAAOrqzB,IAAG,CACf,GAAa,IAAT+szB,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGVjuzB,GAAMnE,QAAUmyzB,IAAS,GAAKhuzB,GAAMuwhB,OAAS,EAE7Cy9R,MAAUhuzB,GAAMuwhB,MAChB09R,IAAQjuzB,GAAMuwhB,MAEdvwhB,GAAM8wzB,MAAQ9wzB,GAAMuwhB,MAGtBvwhB,GAAM+wzB,IAAM/wzB,GAAMnE,OAClBmE,GAAM4c,KA/lCQ,GA+lCDw2yB,KA/lCC,GAkmCd,KAGEzD,IAFAv4K,GAAOp3oB,GAAM4uzB,SAASZ,IAAS,GAAKhuzB,GAAM8uzB,UAAY,MAElC,GAAM,IAC1Bc,GAAkB,MAAPx4K,MAFXs4K,GAAYt4K,KAAS,KAIF62K,KANZ,CAQP,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGV,GAAyB,IAAV,IAAV0B,IAAuB,CAI1B,IAHAiC,GAAYlC,GACZmC,GAAUlC,GACVmC,GAAWlC,GAKTD,IAHAv4K,GAAOp3oB,GAAM4uzB,SAASkD,KACZ9D,IAAS,GAAM4D,GAAYC,IAAY,IAAoCD,QAEjE,GAAM,IAC1BhC,GAAkB,MAAPx4K,KAENw6K,IAJLlC,GAAYt4K,KAAS,KAIU62K,KAPxB,CASP,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAIVD,MAAU4D,GACV3D,IAAQ2D,GAER5xzB,GAAM8wzB,MAAQc,GAOhB,GAJA5D,MAAU0B,GACVzB,IAAQyB,GAER1vzB,GAAM8wzB,MAAQpB,GACA,GAAVC,GAAc,CAChBnC,GAAKrzyB,IAAM,wBACXna,GAAM4c,KAzoCD,GA0oCL,MAEF5c,GAAMkoB,OAAS0nyB,GACf5vzB,GAAMuwhB,MAAoB,GAAXo/R,GACf3vzB,GAAM4c,KAppCW,GAopCJy2yB,KAppCI,GAupCjB,GAAIrzzB,GAAMuwhB,MAAO,CAGf,IADA3shB,GAAI5D,GAAMuwhB,MACH09R,GAAOrqzB,IAAG,CACf,GAAa,IAAT+szB,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGVjuzB,GAAMkoB,QAAU8lyB,IAAS,GAAKhuzB,GAAMuwhB,OAAS,EAE7Cy9R,MAAUhuzB,GAAMuwhB,MAChB09R,IAAQjuzB,GAAMuwhB,MAEdvwhB,GAAM8wzB,MAAQ9wzB,GAAMuwhB,MAGtB,GAAIvwhB,GAAMkoB,OAASloB,GAAM2tzB,KAAM,CAC7BH,GAAKrzyB,IAAM,gCACXna,GAAM4c,KArqCD,GAsqCL,MAIF5c,GAAM4c,KA/qCS,GA+qCF02yB,KA/qCE,GAkrCf,GAAa,IAATpuvB,GAAc,QAElB,GAAIllE,GAAMkoB,QADV2yC,GAAOyisB,GAAOp4rB,IACW,CAEvB,IADArK,GAAO76D,GAAMkoB,OAAS2yC,IACX76D,GAAM6tzB,OACX7tzB,GAAMivzB,KAAM,CACdzB,GAAKrzyB,IAAM,gCACXna,GAAM4c,KAprCL,GAqrCD,MAoBFshD,GAFErD,GAAO76D,GAAM8tzB,MAER9tzB,GAAM4tzB,OADb/yvB,IAAQ76D,GAAM8tzB,OAIP9tzB,GAAM8tzB,MAAQjzvB,GAEnBA,GAAO76D,GAAMnE,SAAUg/D,GAAO76D,GAAMnE,QACxCyyzB,GAActuzB,GAAMiL,YAGpBqjzB,GAAc/lyB,GACd21C,GAAO+c,GAAMj7E,GAAMkoB,OACnB2yC,GAAO76D,GAAMnE,OAEXg/D,GAAOqK,KAAQrK,GAAOqK,IAC1BA,IAAQrK,GACR76D,GAAMnE,QAAUg/D,GAChB,GACEtyC,GAAO0yD,MAASqzuB,GAAYpwvB,cACnBrD,IACU,IAAjB76D,GAAMnE,SAAgBmE,GAAM4c,KAruCnB,IAsuCb,WAjuCa,GAmuCb,GAAa,IAATsoD,GAAc,QAClB38C,GAAO0yD,MAASj7E,GAAMnE,OACtBqpE,KACAllE,GAAM4c,KA3uCO,GA4uCb,WAtuCO,GAwuCP,GAAI5c,GAAMowD,KAAM,CAEd,KAAO69vB,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KAEA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAcV,GAVAT,GAAK4D,WADL9zD,IAAQp4rB,GAERllE,GAAMuE,OAAS+4vB,GACXA,KACFkwD,GAAKF,MAAQttzB,GAAM84J,MAEd94J,GAAM6gX,MAAQ06H,GAAMv7e,GAAM84J,MAAOvwI,GAAQ+0uB,GAAMrirB,GAAMqirB,IAAQi2D,GAAQvzzB,GAAM84J,MAAOvwI,GAAQ+0uB,GAAMrirB,GAAMqirB,KAG7GA,GAAOp4rB,IAEFllE,GAAM6gX,MAAQmtc,GAAO0E,GAAQ1E,OAAWhuzB,GAAM84J,MAAO,CACxD00pB,GAAKrzyB,IAAM,uBACXna,GAAM4c,KA5vCH,GA6vCH,MAGFoxyB,GAAO,EACPC,GAAO,EAITjuzB,GAAM4c,KAvwCE,GAuwCK42yB,KAvwCL,GA0wCR,GAAIxzzB,GAAMowD,MAAQpwD,GAAM6gX,MAAO,CAE7B,KAAOotc,GAAO,IAAI,CAChB,GAAa,IAAT0C,GAAc,QAClBA,KACA3C,IAAQtlyB,GAAMvnB,OAAW8szB,GACzBA,IAAQ,EAGV,GAAID,MAAwB,WAAdhuzB,GAAMuE,OAAqB,CACvCipzB,GAAKrzyB,IAAM,yBACXna,GAAM4c,KAnxCH,GAoxCH,MAGFoxyB,GAAO,EACPC,GAAO,EAITjuzB,GAAM4c,KA7xCA,GA6xCO62yB,KA7xCP,GAgyCNnrU,GA70CgB,EA80ChB,aAhyCO,GAkyCPA,IA50CgB,EA60ChB,aAlyCK,GAoyCL,OA90Cc,EA+0CXorU,QAGH,OAp1CgB,EAk2CtBlG,UAAKiB,SAAWxzuB,GAChBuyuB,GAAKkB,UAAYxpvB,GACjBsovB,GAAKe,QAAUptzB,GACfqszB,GAAKgB,SAAWmC,GAChB3wzB,GAAMguzB,KAAOA,GACbhuzB,GAAMiuzB,KAAOA,IAGTjuzB,GAAM4tzB,OAAUtwD,KAASkwD,GAAKkB,WAAa1uzB,GAAM4c,KA/zCxC,KAg0CQ5c,GAAM4c,KAn0Cd,IApDS,IAu3CqBk4V,MACrC6+c,GAAanG,GAAMA,GAAKjlyB,OAAQilyB,GAAKiB,SAAUnxD,GAAOkwD,GAAKkB,WAGjEpxD,IAAQkwD,GAAKkB,UACblB,GAAK2D,UAFL1D,IAAOD,GAAKgB,SAGZhB,GAAK4D,WAAa9zD,GAClBt9vB,GAAMuE,OAAS+4vB,GACXt9vB,GAAMowD,MAAQktsB,KAChBkwD,GAAKF,MAAQttzB,GAAM84J,MAChB94J,GAAM6gX,MAAQ06H,GAAMv7e,GAAM84J,MAAOvwI,GAAQ+0uB,GAAMkwD,GAAKiB,SAAWnxD,IAAQi2D,GAAQvzzB,GAAM84J,MAAOvwI,GAAQ+0uB,GAAMkwD,GAAKiB,SAAWnxD,KAE/HkwD,GAAKoG,UAAY5zzB,GAAMiuzB,MAAQjuzB,GAAMotH,KAAO,GAAK,IA91C/B,KA+1CCptH,GAAM4c,KAAkB,IAAM,IAv1C7B,KAw1CD5c,GAAM4c,MA71CR,KA61CyB5c,GAAM4c,KAAiB,IAAM,IACzD,IAAR6wyB,IAAsB,IAATnwD,IAt4CG,IAs4CYxoZ,KA93CZ,IA83CqCwzI,KACzDA,IAx3CoB,GA03CfA,GA+BT,YAA8BklU,GAAMvqO,IAClC,IAEIjjlB,GAFA6zzB,GAAa5wO,GAAWpnlB,OAU5B,OAHK2xzB,IAAyBA,GAAKxtzB,QAGhB,KAFnBA,GAAQwtzB,GAAKxtzB,OAEHowD,MA/4CE,KA+4CYpwD,GAAM4c,MA/4ClB,KAo5CR5c,GAAM4c,MAGC22yB,GAFA,EAEgBtwO,GAAY4wO,GAAY,KAClC7zzB,GAAM84J,OA/6CD,EAq7ChB66pB,GAAanG,GAAMvqO,GAAY4wO,GAAYA,KAE/C7zzB,GAAM4c,KA54CG,IA1CS,IAy7CpB5c,GAAMswzB,SAAW,EA/7CK,IAIA,EA+9CxB,IAAIn2yB,GAAM,CACR,EAAQ,kBACR,EAAQ,aACR,EAAQ,GACR,KAAQ,aACR,KAAQ,eACR,KAAQ,aACR,KAAQ,sBACR,KAAQ,eACR,KAAQ,wBAwBV,cAEErkB,KAAK4yB,MAAQ,KACb5yB,KAAKy4zB,QAAU,EAEfz4zB,KAAK04zB,SAAW,EAEhB14zB,KAAKq7zB,SAAW,EAEhBr7zB,KAAKyyB,OAAS,KACdzyB,KAAK24zB,SAAW,EAEhB34zB,KAAK44zB,UAAY,EAEjB54zB,KAAKs7zB,UAAY,EAEjBt7zB,KAAKqkB,IAAM,GAEXrkB,KAAKkK,MAAQ,KAEblK,KAAK89zB,UAAY,EAEjB99zB,KAAKw3zB,MAAQ,EAwBf,cAEEx3zB,KAAK8K,KAAa,EAElB9K,KAAK2rJ,KAAa,EAElB3rJ,KAAKq8zB,OAAa,EAElBr8zB,KAAK6kB,GAAa,EAElB7kB,KAAKy6hB,MAAa,KAElBz6hB,KAAKu8zB,UAAa,EAWlBv8zB,KAAKgF,KAAa,GAIlBhF,KAAKkjL,QAAa,GAIlBljL,KAAK28zB,KAAa,EAElB38zB,KAAK23H,MAAa,EAKpB,IAAI5sH,GAAWlF,OAAOwa,UAAUtV,SAiFhC,SACEjL,YAAYif,IACV,KAAM/e,gBAAgB6nf,IAAU,OAAO,IAAIA,GAAQ9oe,IAEnD/e,KAAK+e,QAAUs7C,EAAO,CACpB2jwB,UAAW,MACX9C,WAAY,EACZztrB,GAAI,IACH1uH,IAAW,IAEd,IAAIqiB,GAAMphC,KAAK+e,QAIXqiB,GAAIU,KAAQV,GAAI85xB,YAAc,GAAO95xB,GAAI85xB,WAAa,KACxD95xB,GAAI85xB,YAAc95xB,GAAI85xB,WACC,IAAnB95xB,GAAI85xB,aAAoB95xB,GAAI85xB,YAAa,KAI1C95xB,GAAI85xB,YAAc,GAAO95xB,GAAI85xB,WAAa,MACzCn8yB,IAAWA,GAAQm8yB,cACvB95xB,GAAI85xB,YAAc,IAKf95xB,GAAI85xB,WAAa,IAAQ95xB,GAAI85xB,WAAa,IAGf,IAAR,GAAjB95xB,GAAI85xB,cACP95xB,GAAI85xB,YAAc,IAItBl7zB,KAAKqqB,IAAS,EACdrqB,KAAKqkB,IAAS,GACdrkB,KAAKi+zB,OAAS,EACdj+zB,KAAK0M,OAAS,GAEd1M,KAAK03zB,KAAS,IAAIwG,GAClBl+zB,KAAK03zB,KAAKkB,UAAY,EAEtB,IAAIvxyB,GAAU82yB,GACZn+zB,KAAK03zB,KACLt2xB,GAAI85xB,YAGN,GA/2FsB,IA+2FlB7zyB,GACF,MAAM,IAAI5Q,MAAM4N,GAAIgD,KAQtB,GALArnB,KAAKioB,OAAS,IAAIm2yB,GA3UtB,YAA0B1G,GAAMt6d,IAC9B,IAAIlzV,GAGCwtzB,IAASA,GAAKxtzB,OAEM,IAAP,GADlBA,GAAQwtzB,GAAKxtzB,OACFowD,QAGXpwD,GAAMkzV,KAAOA,GACbA,GAAKzlO,MAAO,GAmUV0msB,CAAiBr+zB,KAAK03zB,KAAM13zB,KAAKioB,QAG7BmZ,GAAI+rjB,aAEwB,iBAAnB/rjB,GAAI+rjB,WACb/rjB,GAAI+rjB,WAAatqG,GAAWzhd,GAAI+rjB,YACW,yBAAlCpilB,GAAS6oB,KAAKwN,GAAI+rjB,cAC3B/rjB,GAAI+rjB,WAAa,IAAI7qkB,WAAW8e,GAAI+rjB,aAElC/rjB,GAAIU,KA/3FY,KAg4FlBza,GAASi3yB,GAAqBt+zB,KAAK03zB,KAAMt2xB,GAAI+rjB,cAE3C,MAAM,IAAI12kB,MAAM4N,GAAIgD,KAkC5B5hB,KAAKqN,GAAMgU,IACT,IAGIO,GAAQk3yB,GACRC,GAAeljK,GAAMmjK,GACrB58D,GALA61D,GAAO13zB,KAAK03zB,KACZsG,GAAYh+zB,KAAK+e,QAAQi/yB,UACzB7wO,GAAantlB,KAAK+e,QAAQoukB,WAO1BuxO,IAAgB,EAEpB,GAAI1+zB,KAAKi+zB,MAAS,OAAO,EACzBM,GAASz3yB,OAAWA,GAAQA,IAAkB,IAATA,GAx7Ff,EAJA,EAi8FpB4wyB,GAAK9kyB,MAFa,iBAAT9f,GA5oFf,YAAuByP,IAErB,QADIige,GAAM,IAAIlge,WAAWC,GAAIxc,QACpB4I,GAAI,EAAG2lF,GAAMkuZ,GAAIz8e,OAAQ4I,GAAI2lF,GAAK3lF,KACzC6ze,GAAI7ze,IAAK4T,GAAIqvN,WAAWjjO,IAE1B,OAAO6ze,GAyoFUm8U,CAAc7rzB,IACM,yBAA5ByqmB,GAAa3plB,KAAK9gB,IACV,IAAIwP,WAAWxP,IAEfA,GAGf4kzB,GAAKe,QAAU,EACff,GAAKgB,SAAWhB,GAAK9kyB,MAAM7sB,OAE3B,EAAG,CA4BD,GA3BuB,IAAnB2xzB,GAAKkB,YACPlB,GAAKjlyB,OAASokyB,GAAKmH,IACnBtG,GAAKiB,SAAW,EAChBjB,GAAKkB,UAAYoF,IAl8FC,KAq8FpB32yB,GAAS4ue,GAAQyhU,GAl9FG,KAo9FUvqO,KAG1B00K,GADwB,iBAAf10K,GACFtqG,GAAWsqG,IACqB,yBAAlCowB,GAAa3plB,KAAKu5jB,IAChB,IAAI7qkB,WAAW6qkB,IAEfA,GAGT9lkB,GAASi3yB,GAAqBt+zB,KAAK03zB,KAAM71D,MA58FxB,IAg9Ffx6uB,KAA4C,IAAlBq3yB,KAC5Br3yB,GAx9FkB,EAy9FlBq3yB,IAAgB,GAx9FE,IA29FhBr3yB,IA59FgB,IA49FWA,GAC7B,YAAKu3yB,MAAMv3yB,IACXrnB,KAAKi+zB,OAAQ,GACN,EAGLvG,GAAKiB,WACgB,IAAnBjB,GAAKkB,WAl+FS,IAk+FUvxyB,IAA8C,IAAlBqwyB,GAAKgB,WA1+F3C,IA0+F8D6F,IA5+F9D,IA4+FoFA,OAE5E,WAApBv+zB,KAAK+e,QAAQ0uH,IAEf+wrB,GAAgBl7U,GAAWo0U,GAAKjlyB,OAAQilyB,GAAKiB,UAE7Cr9J,GAAOo8J,GAAKiB,SAAW6F,GACvBC,GAAUx7U,GAAWy0U,GAAKjlyB,OAAQ+ryB,IAGlC9G,GAAKiB,SAAWr9J,GAChBo8J,GAAKkB,UAAYoF,GAAY1iK,GACzBA,IAAQm7J,GAASiB,GAAKjlyB,OAAQilyB,GAAKjlyB,OAAQ+ryB,GAAeljK,GAAM,GAEpEt7pB,KAAK8nf,OAAO22U,KAGZz+zB,KAAK8nf,OAAOwvU,EAAUI,GAAKjlyB,OAAQilyB,GAAKiB,YAYxB,IAAlBjB,GAAKgB,UAAqC,IAAnBhB,GAAKkB,YAC9B8F,IAAgB,UAGVhH,GAAKgB,SAAW,GAAwB,IAAnBhB,GAAKkB,YAngGd,IAmgGkCvxyB,IAOxD,OA1gGsB,IAqgGlBA,KACFk3yB,GA9gGoB,OAkhGlBA,IACFl3yB,GAlfN,YAAoBqwyB,IAElB,IAAKA,KAASA,GAAKxtzB,MACjB,OAn4CoB,EAs4CtB,IAAIA,GAAQwtzB,GAAKxtzB,MACjB,OAAIA,GAAMiL,SACRjL,GAAMiL,OAAS,MAEjBuizB,GAAKxtzB,MAAQ,KA94CS,EAs3DT20zB,CAAW7+zB,KAAK03zB,MACzB13zB,KAAK4+zB,MAAMv3yB,IACXrnB,KAAKi+zB,OAAQ,EA9gGO,IA+gGb52yB,KAxhGa,IA4hGlBk3yB,KACFv+zB,KAAK4+zB,MAphGe,GAqhGpBlH,GAAKkB,UAAY,IACV,GAgBX9wU,OAAOtkU,IACLxjL,KAAK0M,OAAOjH,KAAK+9K,IAcnBo7oB,MAAMv3yB,IArjGkB,IAujGlBA,KAIArnB,KAAKuS,OAHiB,WAApBvS,KAAK+e,QAAQ0uH,GAGDztI,KAAK0M,OAAO+a,KAAK,IAEjBmvyB,GAAc52zB,KAAK0M,SAGrC1M,KAAK0M,OAAS,GACd1M,KAAKqqB,IAAMhD,GACXrnB,KAAKqkB,IAAMrkB,KAAK03zB,KAAKrzyB,KAiFzB,YAAcm+d,IAA6B,QAAlBluZ,GAAMkuZ,GAAIz8e,SAAiBuuF,IAAO,GAAKkuZ,GAAIluZ,IAAO,EAI3E,IAqFIwquB,GAOAC,GAKAC,GAMAC,GAGAC,GAGAC,GAiBAC,GACAC,GACAC,GArEAC,GACF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAEvDC,GACF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAEhEC,GACF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAEnCC,GACF,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IA4C/C,YAAwBC,GAAaC,GAAYC,GAAYC,GAAOC,IAElE//zB,KAAK2/zB,YAAeA,GACpB3/zB,KAAK4/zB,WAAeA,GACpB5/zB,KAAK6/zB,WAAeA,GACpB7/zB,KAAK8/zB,MAAeA,GACpB9/zB,KAAK+/zB,WAAeA,GAGpB//zB,KAAKgg0B,UAAeL,IAAeA,GAAY55zB,OASjD,YAAkBk6zB,GAAUC,IAC1Blg0B,KAAKig0B,SAAWA,GAChBjg0B,KAAKmg0B,SAAW,EAChBng0B,KAAKkg0B,UAAYA,GAKnB,YAAgBt9uB,IACd,OAAOA,GAAO,IAAMo8uB,GAAWp8uB,IAAQo8uB,GAAW,KAAOp8uB,KAAS,IAQpE,YAAmB/7E,GAAGs7K,IAGpBt7K,GAAEu5zB,YAAYv5zB,GAAEsqE,WAAmB,IAALgxG,GAC9Bt7K,GAAEu5zB,YAAYv5zB,GAAEsqE,WAAcgxG,KAAM,EAAK,IAQ3C,YAAmBt7K,GAAGlD,GAAOoC,IACvBc,GAAEw5zB,SA9HY,GA8HWt6zB,IAC3Bc,GAAEy5zB,QAAW38zB,IAASkD,GAAEw5zB,SAAY,MACpCE,GAAU15zB,GAAGA,GAAEy5zB,QACfz5zB,GAAEy5zB,OAAS38zB,IAjIK,GAiIgBkD,GAAEw5zB,SAClCx5zB,GAAEw5zB,UAAYt6zB,GAlIE,KAoIhBc,GAAEy5zB,QAAW38zB,IAASkD,GAAEw5zB,SAAY,MACpCx5zB,GAAEw5zB,UAAYt6zB,IAKlB,YAAmBc,GAAGoZ,GAAGugzB,IACvBC,GAAU55zB,GAAG25zB,GAAS,EAAJvgzB,IAAiBugzB,GAAS,EAAJvgzB,GAAQ,IASlD,YAAoB+L,GAAMsoE,IACxB,IAAI53D,GAAM,EACV,GACEA,IAAc,EAAP1Q,GACPA,MAAU,EACV0Q,KAAQ,UACC43D,GAAM,GACjB,OAAO53D,KAAQ,EAgIjB,YAAmB8jyB,GAAML,GAAUO,IAKjC,IAEIvI,GACArqzB,GAHA6yzB,GAAY,IAAIryzB,MAAMsyzB,IACtB50yB,GAAO,EAOX,IAAKmsyB,GAAO,EAAGA,IA3SG,GA2SeA,KAC/BwI,GAAUxI,IAAQnsyB,GAAQA,GAAO00yB,GAASvI,GAAO,IAAO,EAS1D,IAAKrqzB,GAAI,EAAIA,IAAKqyzB,GAAUryzB,KAAK,CAC/B,IAAIwmF,GAAMksuB,GAAS,EAAJ1yzB,GAAQ,GACX,IAARwmF,KAEJksuB,GAAS,EAAJ1yzB,IAAkB+yzB,GAAWF,GAAUrsuB,MAAQA,MAqIxD,YAAoBztF,IAClB,IAAIiH,GAGJ,IAAKA,GAAI,EAAGA,GA9cMgzzB,IA8cQhzzB,KAAOjH,GAAEk6zB,UAAc,EAAJjzzB,IAAkB,EAC/D,IAAKA,GAAI,EAAGA,GA5cM,GA4cQA,KAAOjH,GAAEm6zB,UAAc,EAAJlzzB,IAAkB,EAC/D,IAAKA,GAAI,EAAGA,GA1cM,GA0cQA,KAAOjH,GAAEo6zB,QAAY,EAAJnzzB,IAAkB,EAE7DjH,GAAEk6zB,UAAUG,KAA0B,EACtCr6zB,GAAEs6zB,QAAUt6zB,GAAEu6zB,WAAa,EAC3Bv6zB,GAAEw6zB,SAAWx6zB,GAAEqxG,QAAU,EAO3B,YAAmBrxG,IAEbA,GAAEw5zB,SAAW,EACfE,GAAU15zB,GAAGA,GAAEy5zB,QACNz5zB,GAAEw5zB,SAAW,IAEtBx5zB,GAAEu5zB,YAAYv5zB,GAAEsqE,WAAatqE,GAAEy5zB,QAEjCz5zB,GAAEy5zB,OAAS,EACXz5zB,GAAEw5zB,SAAW,EA8Bf,YAAiBG,GAAM1yzB,GAAG+uB,GAAG26D,IAC3B,IAAI8puB,GAAU,EAAJxzzB,GACNyzzB,GAAU,EAAJ1kyB,GACV,OAAQ2jyB,GAAKc,IAAgBd,GAAKe,KAC1Bf,GAAKc,MAAkBd,GAAKe,KAAiB/puB,GAAM1pF,KAAM0pF,GAAM36D,IASzE,YAAoBh2B,GAAG25zB,GAAMptxB,IAO3B,QAFI5sC,GAAIK,GAAE26zB,KAAKpuxB,IACXouD,GAAIpuD,IAAK,EACNouD,IAAK36F,GAAE46zB,WAERjguB,GAAI36F,GAAE46zB,UACRC,GAAQlB,GAAM35zB,GAAE26zB,KAAKhguB,GAAI,GAAI36F,GAAE26zB,KAAKhguB,IAAI36F,GAAE2wF,QAC1CgK,MAGEkguB,GAAQlB,GAAMh6zB,GAAGK,GAAE26zB,KAAKhguB,IAAI36F,GAAE2wF,SAGlC3wF,GAAE26zB,KAAKpuxB,IAAKvsC,GAAE26zB,KAAKhguB,IACnBpuD,GAAIouD,GAGJA,KAAM,EAER36F,GAAE26zB,KAAKpuxB,IAAK5sC,GAUd,YAAwBK,GAAG86zB,GAAOC,IAKhC,IAAIh/uB,GACAi/uB,GAEA71yB,GACAyugB,GAFAqnS,GAAK,EAIT,GAAmB,IAAfj7zB,GAAEw6zB,SACJ,GACEz+uB,GAAQ/7E,GAAEu5zB,YAAYv5zB,GAAEk7zB,MAAa,EAALD,KAAW,EAAMj7zB,GAAEu5zB,YAAYv5zB,GAAEk7zB,MAAa,EAALD,GAAS,GAClFD,GAAKh7zB,GAAEu5zB,YAAYv5zB,GAAEm7zB,MAAQF,IAC7BA,KAEa,IAATl/uB,GACFq/uB,GAAUp7zB,GAAGg7zB,GAAIF,KAKjBM,GAAUp7zB,IADVmlB,GAAOizyB,GAAa4C,KAzkBR,IA0kBmB,EAAGF,IAEpB,KADdlnS,GAAQ8kS,GAAYvzyB,MAGlBy0yB,GAAU55zB,GADVg7zB,IAAM3C,GAAYlzyB,IACDyugB,IAMnBwnS,GAAUp7zB,GAHVmlB,GAAOk2yB,KADPt/uB,IAImBg/uB,IAEL,KADdnnS,GAAQ+kS,GAAYxzyB,MAGlBy0yB,GAAU55zB,GADV+7E,IAAQu8uB,GAAUnzyB,IACCyugB,WAQhBqnS,GAAKj7zB,GAAEw6zB,UAGlBY,GAAUp7zB,GAtkBM,IAskBQ86zB,IAY1B,YAAoB96zB,GAAG6hjB,IAIrB,IAII56iB,GAAG+uB,GAEHzX,GANAo7yB,GAAW93Q,GAAKu3Q,SAChBkC,GAAWz5Q,GAAKw3Q,UAAUP,YAC1BK,GAAYt3Q,GAAKw3Q,UAAUF,UAC3BF,GAAWp3Q,GAAKw3Q,UAAUJ,MAE1BK,IAAW,EAUf,IAHAt5zB,GAAE46zB,SAAW,EACb56zB,GAAEu7zB,SApnBgB,IAsnBbt0zB,GAAI,EAAGA,GAAIgyzB,GAAOhyzB,KACQ,IAAzB0yzB,GAAS,EAAJ1yzB,KACPjH,GAAE26zB,OAAO36zB,GAAE46zB,UAAYtB,GAAWryzB,GAClCjH,GAAE2wF,MAAM1pF,IAAK,GAGb0yzB,GAAS,EAAJ1yzB,GAAQ,GAAa,EAS9B,KAAOjH,GAAE46zB,SAAW,GAElBjB,GAAY,GADZp7yB,GAAOve,GAAE26zB,OAAO36zB,GAAE46zB,UAAatB,GAAW,IAAMA,GAAW,IACjC,EAC1Bt5zB,GAAE2wF,MAAMpyE,IAAQ,EAChBve,GAAEs6zB,UAEEnB,KACFn5zB,GAAEu6zB,YAAce,GAAa,EAAP/8yB,GAAW,IASrC,IALAsjiB,GAAKy3Q,SAAWA,GAKXryzB,GAAKjH,GAAE46zB,UAAY,EAAc3zzB,IAAK,EAAGA,KAAOu0zB,GAAWx7zB,GAAG25zB,GAAM1yzB,IAKzEsX,GAAO06yB,GACP,GAGEhyzB,GAAIjH,GAAE26zB,KAAK,GACX36zB,GAAE26zB,KAAK,GAAiB36zB,GAAE26zB,KAAK36zB,GAAE46zB,YACjCY,GAAWx7zB,GAAG25zB,GAAM,GAGpB3jyB,GAAIh2B,GAAE26zB,KAAK,GAEX36zB,GAAE26zB,OAAO36zB,GAAEu7zB,UAAYt0zB,GACvBjH,GAAE26zB,OAAO36zB,GAAEu7zB,UAAYvlyB,GAGvB2jyB,GAAY,EAAPp7yB,IAAqBo7yB,GAAS,EAAJ1yzB,IAAkB0yzB,GAAS,EAAJ3jyB,IACtDh2B,GAAE2wF,MAAMpyE,KAASve,GAAE2wF,MAAM1pF,KAAMjH,GAAE2wF,MAAM36D,IAAKh2B,GAAE2wF,MAAM1pF,IAAKjH,GAAE2wF,MAAM36D,KAAM,EACvE2jyB,GAAS,EAAJ1yzB,GAAQ,GAAa0yzB,GAAS,EAAJ3jyB,GAAQ,GAAazX,GAGpDve,GAAE26zB,KAAK,GAAiBp8yB,KACxBi9yB,GAAWx7zB,GAAG25zB,GAAM,SAEb35zB,GAAE46zB,UAAY,GAEvB56zB,GAAE26zB,OAAO36zB,GAAEu7zB,UAAYv7zB,GAAE26zB,KAAK,GAnfhC,YAAoB36zB,GAAG6hjB,IAIrB,IAOIjxV,GACA3pN,GAAG+uB,GACHs7xB,GACAmK,GACA18zB,GAXA46zB,GAAkB93Q,GAAKu3Q,SACvBE,GAAkBz3Q,GAAKy3Q,SACvBgC,GAAkBz5Q,GAAKw3Q,UAAUP,YACjCK,GAAkBt3Q,GAAKw3Q,UAAUF,UACjCvlS,GAAkBiuB,GAAKw3Q,UAAUN,WACjC3ozB,GAAkByxiB,GAAKw3Q,UAAUL,WACjCE,GAAkBr3Q,GAAKw3Q,UAAUH,WAMjC7uqB,GAAW,EAEf,IAAKinqB,GAAO,EAAGA,IA/MG,GA+MeA,KAC/BtxzB,GAAE65zB,SAASvI,IAAQ,EAQrB,IAFAqI,GAA0B,EAArB35zB,GAAE26zB,KAAK36zB,GAAEu7zB,UAAgB,GAAa,EAEtC3qmB,GAAI5wN,GAAEu7zB,SAAW,EAAG3qmB,GA3NP,IA2NsBA,MAEtC0gmB,GAAOqI,GAA+B,EAA1BA,GAAS,GADrB1yzB,GAAIjH,GAAE26zB,KAAK/pmB,KACc,GAAiB,GAAa,GAC5CsomB,KACT5H,GAAO4H,GACP7uqB,MAEFsvqB,GAAS,EAAJ1yzB,GAAQ,GAAaqqzB,KAGtBrqzB,GAAIqyzB,MAERt5zB,GAAE65zB,SAASvI,MACXmK,GAAQ,EACJx0zB,IAAKmJ,KACPqrzB,GAAQ7nS,GAAM3shB,GAAImJ,KAGpBpQ,GAAEs6zB,UADFv7zB,GAAI46zB,GAAS,EAAJ1yzB,MACSqqzB,GAAOmK,IACrBtC,KACFn5zB,GAAEu6zB,YAAcx7zB,IAAKu8zB,GAAU,EAAJr0zB,GAAQ,GAAaw0zB,MAGpD,GAAiB,IAAbpxqB,GAMJ,GAAG,CAED,IADAinqB,GAAO4H,GAAa,EACQ,IAArBl5zB,GAAE65zB,SAASvI,KAAeA,KACjCtxzB,GAAE65zB,SAASvI,MACXtxzB,GAAE65zB,SAASvI,GAAO,IAAM,EACxBtxzB,GAAE65zB,SAASX,MAIX7uqB,IAAY,QACLA,GAAW,GAOpB,IAAKinqB,GAAO4H,GAAqB,IAAT5H,GAAYA,KAElC,IADArqzB,GAAIjH,GAAE65zB,SAASvI,IACF,IAANrqzB,OACL+uB,GAAIh2B,GAAE26zB,OAAO/pmB,KACL0omB,MACJK,GAAS,EAAJ3jyB,GAAQ,KAAes7xB,KAE9BtxzB,GAAEs6zB,UAAYhJ,GAAOqI,GAAS,EAAJ3jyB,GAAQ,IAAc2jyB,GAAS,EAAJ3jyB,IACrD2jyB,GAAS,EAAJ3jyB,GAAQ,GAAas7xB,IAE5BrqzB,OAqaJy0zB,CAAW17zB,GAAG6hjB,IAGd85Q,GAAUhC,GAAML,GAAUt5zB,GAAE65zB,UAQ9B,YAAmB75zB,GAAG25zB,GAAML,IAK1B,IAAIryzB,GAEA20zB,GADAC,IAAU,EAGVC,GAAUnC,GAAK,GAEf5otB,GAAQ,EACRgrtB,GAAY,EACZC,GAAY,EAQhB,IANgB,IAAZF,KACFC,GAAY,IACZC,GAAY,GAEdrC,GAAsB,GAAhBL,GAAW,GAAS,GAAa,MAElCryzB,GAAI,EAAGA,IAAKqyzB,GAAUryzB,KACzB20zB,GAASE,GACTA,GAAUnC,GAAe,GAAT1yzB,GAAI,GAAS,OAEvB8pG,GAAQgrtB,IAAaH,KAAWE,MAG3B/qtB,GAAQirtB,GACjBh8zB,GAAEo6zB,QAAiB,EAATwB,KAAwB7qtB,GAEd,IAAX6qtB,IAELA,KAAWC,IAAW77zB,GAAEo6zB,QAAiB,EAATwB,MACpC57zB,GAAEo6zB,QAAQ6B,OAEDlrtB,IAAS,GAClB/wG,GAAEo6zB,QAAQ8B,MAGVl8zB,GAAEo6zB,QAAQ+B,MAGZprtB,GAAQ,EACR8qtB,GAAUD,GAEM,IAAZE,IACFC,GAAY,IACZC,GAAY,GAEHJ,KAAWE,IACpBC,GAAY,EACZC,GAAY,IAGZD,GAAY,EACZC,GAAY,IAUlB,YAAmBh8zB,GAAG25zB,GAAML,IAK1B,IAAIryzB,GAEA20zB,GADAC,IAAU,EAGVC,GAAUnC,GAAK,GAEf5otB,GAAQ,EACRgrtB,GAAY,EACZC,GAAY,EAQhB,IALgB,IAAZF,KACFC,GAAY,IACZC,GAAY,GAGT/0zB,GAAI,EAAGA,IAAKqyzB,GAAUryzB,KAIzB,GAHA20zB,GAASE,GACTA,GAAUnC,GAAe,GAAT1yzB,GAAI,GAAS,OAEvB8pG,GAAQgrtB,IAAaH,KAAWE,IAG/B,IAAI/qtB,GAAQirtB,GACjB,GAAKZ,GAAUp7zB,GAAG47zB,GAAQ57zB,GAAEo6zB,eAA+B,KAAVrptB,SAE7B,IAAX6qtB,IACLA,KAAWC,KACbT,GAAUp7zB,GAAG47zB,GAAQ57zB,GAAEo6zB,SACvBrptB,MAGFqqtB,GAAUp7zB,GAtxBE,GAsxBUA,GAAEo6zB,SACxBR,GAAU55zB,GAAG+wG,GAAQ,EAAG,IAEfA,IAAS,IAClBqqtB,GAAUp7zB,GAvxBE,GAuxBYA,GAAEo6zB,SAC1BR,GAAU55zB,GAAG+wG,GAAQ,EAAG,KAGxBqqtB,GAAUp7zB,GAxxBE,GAwxBcA,GAAEo6zB,SAC5BR,GAAU55zB,GAAG+wG,GAAQ,GAAI,IAG3BA,GAAQ,EACR8qtB,GAAUD,GACM,IAAZE,IACFC,GAAY,IACZC,GAAY,GAEHJ,KAAWE,IACpBC,GAAY,EACZC,GAAY,IAGZD,GAAY,EACZC,GAAY,IAuHlB,IAAII,IAAmB,EA2BvB,YAA0Bp8zB,GAAG27e,GAAK0gV,GAAY5rsB,IAK5CmpsB,GAAU55zB,GAAIs8zB,GAAsB7rsB,GAAO,EAAI,GAAI,GAvfrD,YAAoBzwH,GAAG27e,GAAKluZ,GAAKrsE,IAM/Bm7yB,GAAUv8zB,IAENohB,KACFs4yB,GAAU15zB,GAAGytF,IACbisuB,GAAU15zB,IAAIytF,KAKhBmiuB,GAAS5vzB,GAAEu5zB,YAAav5zB,GAAEsO,OAAQqte,GAAKluZ,GAAKztF,GAAEsqE,SAC9CtqE,GAAEsqE,SAAWmjB,GAweb+uuB,CAAWx8zB,GAAG27e,GAAK0gV,IAAY,GAyGjC,YAAmBr8zB,GAAG+7E,GAAMi/uB,IAM1Bh7zB,UAAEu5zB,YAAYv5zB,GAAEk7zB,MAAqB,EAAbl7zB,GAAEw6zB,UAAqBz+uB,KAAS,EAAK,IAC7D/7E,GAAEu5zB,YAAYv5zB,GAAEk7zB,MAAqB,EAAbl7zB,GAAEw6zB,SAAe,GAAY,IAAPz+uB,GAE9C/7E,GAAEu5zB,YAAYv5zB,GAAEm7zB,MAAQn7zB,GAAEw6zB,UAAiB,IAALQ,GACtCh7zB,GAAEw6zB,WAEW,IAAbjG,GAEEv0zB,GAAEk6zB,UAAe,EAALc,OAEZh7zB,GAAEqxG,UAEFt1B,KAKA/7E,GAAEk6zB,UAA8C,GAAnC9B,GAAa4C,IAtmCV,IAsmC2B,MAC3Ch7zB,GAAEm6zB,UAAyB,EAAfkB,GAAOt/uB,QA0Bb/7E,GAAEw6zB,WAAax6zB,GAAEy8zB,YAAc,EASzC,IAoBIC,GAAiBC,IAmBrB,YAAa9L,GAAM+L,IACjB/L,UAAKrzyB,IAAMA,GAAIo/yB,IACRA,GAGT,YAAc79zB,IACZ,OAASA,IAAM,IAAOA,GAAK,EAAI,EAAI,GAGrC,YAAgB48e,IAA6B,QAAlBluZ,GAAMkuZ,GAAIz8e,SAAiBuuF,IAAO,GAAKkuZ,GAAIluZ,IAAO,EAS7E,YAAuBojuB,IACrB,IAAI7wzB,GAAI6wzB,GAAKxtzB,MAGToqF,GAAMztF,GAAEsqE,QACRmjB,GAAMojuB,GAAKkB,YACbtkuB,GAAMojuB,GAAKkB,WAED,IAARtkuB,KAEJmiuB,GAASiB,GAAKjlyB,OAAQ5rB,GAAEu5zB,YAAav5zB,GAAE68zB,YAAapvuB,GAAKojuB,GAAKiB,UAC9DjB,GAAKiB,UAAYrkuB,GACjBztF,GAAE68zB,aAAepvuB,GACjBojuB,GAAK4D,WAAahnuB,GAClBojuB,GAAKkB,WAAatkuB,GAClBztF,GAAEsqE,SAAWmjB,GACK,IAAdztF,GAAEsqE,UACJtqE,GAAE68zB,YAAc,IAKpB,YAA0B78zB,GAAGywH,KAhO7B,YAAyBzwH,GAAG27e,GAAK0gV,GAAY5rsB,IAK3C,IAAIqssB,GAAUC,GACVC,GAAc,EAGdh9zB,GAAEq7G,MAAQ,GA/oIgB,IAkpIxBr7G,GAAE6wzB,KAAKoG,YACTj3zB,GAAE6wzB,KAAKoG,UAlGb,YAA0Bj3zB,IAKxB,IACIiH,GADAg2zB,GAAa,WAIjB,IAAKh2zB,GAAI,EAAGA,IAAK,GAAIA,KAAKg2zB,MAAgB,EACxC,GAAkB,EAAbA,IAAoD,IAAhCj9zB,GAAEk6zB,UAAc,EAAJjzzB,IACnC,OA/jI0B,EAokI9B,GAAoC,IAAhCjH,GAAEk6zB,UAAU,KAA0D,IAAjCl6zB,GAAEk6zB,UAAU,KAChB,IAAjCl6zB,GAAEk6zB,UAAU,IACd,OArkI4B,EAukI9B,IAAKjzzB,GAAI,GAAIA,GAx7BK,IAw7BSA,KACzB,GAAoC,IAAhCjH,GAAEk6zB,UAAc,EAAJjzzB,IACd,OAzkI0B,EAglI9B,OAjlI8B,EAspIPi2zB,CAAiBl9zB,KAItCm9zB,GAAWn9zB,GAAGA,GAAEo9zB,QAIhBD,GAAWn9zB,GAAGA,GAAEq9zB,QAUhBL,GAhMJ,YAAuBh9zB,IACrB,IAAIg9zB,GAgBJ,IAbAM,GAAUt9zB,GAAGA,GAAEk6zB,UAAWl6zB,GAAEo9zB,OAAO9D,UACnCgE,GAAUt9zB,GAAGA,GAAEm6zB,UAAWn6zB,GAAEq9zB,OAAO/D,UAGnC6D,GAAWn9zB,GAAGA,GAAEu9zB,SASXP,GAAcQ,GAAcR,IAAe,GACW,IAArDh9zB,GAAEo6zB,QAAgC,EAAxBvB,GAASmE,IAAmB,GADOA,MAMnDh9zB,UAAEs6zB,SAAW,GAAK0C,GAAc,GAAK,EAAI,EAAI,EAItCA,GAqKSS,CAAcz9zB,KAI5B+8zB,GAAe/8zB,GAAEu6zB,WAAa,EAAI,IAAO,KADzCuC,GAAY98zB,GAAEs6zB,QAAU,EAAI,IAAO,KAOJwC,GAAWC,KAI1CD,GAAWC,GAAcV,GAAa,EAGnCA,GAAa,GAAKS,KAAsB,IAARnhV,GASnC+hV,GAAiB19zB,GAAG27e,GAAK0gV,GAAY5rsB,IAtsIT,IAwsIvB+isB,GAAM95qB,UAAwBqjrB,KAAgBD,IAEnDlD,GAAU55zB,GAAI29zB,GAAsBltsB,GAAO,EAAI,GAAI,GACnDmtsB,GAAe59zB,GAAGi4zB,GAAcC,MAGhC0B,GAAU55zB,GAAI69zB,GAAmBptsB,GAAO,EAAI,GAAI,GA9LpD,YAAwBzwH,GAAG89zB,GAAQC,GAAQC,IAIzC,IAAIlrD,GASJ,IAHA8mD,GAAU55zB,GAAG89zB,GAAS,IAAK,GAC3BlE,GAAU55zB,GAAG+9zB,GAAS,EAAK,GAC3BnE,GAAU55zB,GAAGg+zB,GAAU,EAAI,GACtBlrD,GAAO,EAAGA,GAAOkrD,GAASlrD,KAE7B8mD,GAAU55zB,GAAGA,GAAEo6zB,QAAyB,EAAjBvB,GAAS/lD,IAAY,GAAY,GAI1DmrD,GAAUj+zB,GAAGA,GAAEk6zB,UAAW4D,GAAS,GAGnCG,GAAUj+zB,GAAGA,GAAEm6zB,UAAW4D,GAAS,GAyKjCG,CAAel+zB,GAAGA,GAAEo9zB,OAAO9D,SAAW,EAAGt5zB,GAAEq9zB,OAAO/D,SAAW,EAAG0D,GAAc,GAC9EY,GAAe59zB,GAAGA,GAAEk6zB,UAAWl6zB,GAAEm6zB,YAMnCgE,GAAWn+zB,IAEPywH,IACF8rsB,GAAUv8zB,KAqJZo+zB,CAAgBp+zB,GAAIA,GAAEq+zB,aAAe,EAAIr+zB,GAAEq+zB,aAAc,EAAKr+zB,GAAEs+zB,SAAWt+zB,GAAEq+zB,YAAa5tsB,IAC1FzwH,GAAEq+zB,YAAcr+zB,GAAEs+zB,SAClBC,GAAcv+zB,GAAE6wzB,MAIlB,YAAkB7wzB,GAAGqrB,IACnBrrB,GAAEu5zB,YAAYv5zB,GAAEsqE,WAAaj/C,GAS/B,YAAqBrrB,GAAGqrB,IAGtBrrB,GAAEu5zB,YAAYv5zB,GAAEsqE,WAAcj/C,KAAM,EAAK,IACzCrrB,GAAEu5zB,YAAYv5zB,GAAEsqE,WAAiB,IAAJj/C,GAW/B,YAAkBwlyB,GAAMl1U,GAAKx1d,GAAOgiC,IAClC,IAAIslC,GAAMojuB,GAAKgB,SAGf,OADIpkuB,GAAMtlC,KAAQslC,GAAMtlC,IACZ,IAARslC,GAAoB,GAExBojuB,GAAKgB,UAAYpkuB,GAGjBmiuB,GAASj0U,GAAKk1U,GAAK9kyB,MAAO8kyB,GAAKe,QAASnkuB,GAAKtnE,IACrB,IAApB0qyB,GAAKxtzB,MAAMowD,KACbo9vB,GAAKF,MAAQiG,GAAQ/F,GAAKF,MAAOh1U,GAAKluZ,GAAKtnE,IAGhB,IAApB0qyB,GAAKxtzB,MAAMowD,OAClBo9vB,GAAKF,MAAQ/xU,GAAMiyU,GAAKF,MAAOh1U,GAAKluZ,GAAKtnE,KAG3C0qyB,GAAKe,SAAWnkuB,GAChBojuB,GAAK2D,UAAY/muB,GAEVA,IAaT,YAAuBztF,GAAGw+zB,IACxB,IAEI9jzB,GACA+yE,GAHAgxuB,GAAez+zB,GAAE0+zB,iBACjB/4Z,GAAO3la,GAAEs+zB,SAGTK,GAAW3+zB,GAAE4+zB,YACbC,GAAa7+zB,GAAE6+zB,WACfzzwB,GAASprD,GAAEs+zB,SAAYt+zB,GAAE8+zB,OAASpC,GAClC18zB,GAAEs+zB,UAAYt+zB,GAAE8+zB,OAASpC,IAAiB,EAE1CqC,GAAO/+zB,GAAEsO,OAET0wzB,GAAQh/zB,GAAEi/zB,OACV78kB,GAAQpiP,GAAEoiP,KAMV88kB,GAASl/zB,GAAEs+zB,SAjJC,IAkJZa,GAAaJ,GAAKp5Z,GAAOg5Z,GAAW,GACpCS,GAAaL,GAAKp5Z,GAAOg5Z,IAQzB3+zB,GAAE4+zB,aAAe5+zB,GAAEq/zB,aACrBZ,KAAiB,GAKfI,GAAa7+zB,GAAEs/zB,YAAaT,GAAa7+zB,GAAEs/zB,WAI/C,MAaMP,IAXJrkzB,GAAQ8jzB,IAWSG,MAAkBS,IAC/BL,GAAKrkzB,GAAQikzB,GAAW,KAAOQ,IAC/BJ,GAAKrkzB,MAA0BqkzB,GAAKp5Z,KACpCo5Z,KAAOrkzB,MAAwBqkzB,GAAKp5Z,GAAO,GAU/CA,KAAQ,EACRjrZ,KAMA,UAESqkzB,KAAOp5Z,MAAUo5Z,KAAOrkzB,KAAUqkzB,KAAOp5Z,MAAUo5Z,KAAOrkzB,KAC1DqkzB,KAAOp5Z,MAAUo5Z,KAAOrkzB,KAAUqkzB,KAAOp5Z,MAAUo5Z,KAAOrkzB,KAC1DqkzB,KAAOp5Z,MAAUo5Z,KAAOrkzB,KAAUqkzB,KAAOp5Z,MAAUo5Z,KAAOrkzB,KAC1DqkzB,KAAOp5Z,MAAUo5Z,KAAOrkzB,KAAUqkzB,KAAOp5Z,MAAUo5Z,KAAOrkzB,KAC1DirZ,GAAOu5Z,IAOhB,GAHAzxuB,GAhNc,KAgNOyxuB,GAASv5Z,IAC9BA,GAAOu5Z,GAjNO,IAmNVzxuB,GAAMkxuB,GAAU,CAGlB,GAFA3+zB,GAAEu/zB,YAAcf,GAChBG,GAAWlxuB,GACPA,IAAOoxuB,GACT,MAEFM,GAAaJ,GAAKp5Z,GAAOg5Z,GAAW,GACpCS,GAAaL,GAAKp5Z,GAAOg5Z,aAEnBH,GAAYp8kB,GAAKo8kB,GAAYQ,KAAU5zwB,IAA4B,KAAjBqzwB,IAE5D,OAAIE,IAAY3+zB,GAAEs/zB,UACTX,GAEF3+zB,GAAEs/zB,UAcX,YAAqBt/zB,IACnB,IACI49D,GAAG32D,GAAG+uB,GAAGwpyB,GAAM9jzB,GADf+jzB,GAAUz/zB,GAAE8+zB,OAKhB,EAAG,CAqBD,GApBAU,GAAOx/zB,GAAE0/zB,YAAc1/zB,GAAEs/zB,UAAYt/zB,GAAEs+zB,SAoBnCt+zB,GAAEs+zB,UAAYmB,IAAWA,GAAU/C,IAAgB,CAErD9M,GAAS5vzB,GAAEsO,OAAQtO,GAAEsO,OAAQmxzB,GAASA,GAAS,GAC/Cz/zB,GAAEu/zB,aAAeE,GACjBz/zB,GAAEs+zB,UAAYmB,GAEdz/zB,GAAEq+zB,aAAeoB,GAUjB7hwB,GADA32D,GAAIjH,GAAE2/zB,UAEN,GACE3pyB,GAAIh2B,GAAEu2V,OAAO34R,IACb59D,GAAEu2V,KAAK34R,IAAM5nC,IAAKypyB,GAAUzpyB,GAAIypyB,GAAU,UACjCx4zB,IAGX22D,GADA32D,GAAIw4zB,GAEJ,GACEzpyB,GAAIh2B,GAAEoiP,OAAOxkL,IACb59D,GAAEoiP,KAAKxkL,IAAM5nC,IAAKypyB,GAAUzpyB,GAAIypyB,GAAU,UAIjCx4zB,IAEXu4zB,IAAQC,GAEV,GAAwB,IAApBz/zB,GAAE6wzB,KAAKgB,SACT,MAmBF,GAJA5qzB,GAAI24zB,GAAS5/zB,GAAE6wzB,KAAM7wzB,GAAEsO,OAAQtO,GAAEs+zB,SAAWt+zB,GAAEs/zB,UAAWE,IACzDx/zB,GAAEs/zB,WAAar4zB,GAGXjH,GAAEs/zB,UAAYt/zB,GAAE23E,QAjUN,EA0UZ,IAPA33E,GAAE6/zB,MAAQ7/zB,GAAEsO,OADZoN,GAAM1b,GAAEs+zB,SAAWt+zB,GAAE23E,QAIrB33E,GAAE6/zB,OAAU7/zB,GAAE6/zB,OAAS7/zB,GAAE8/zB,WAAc9/zB,GAAEsO,OAAOoN,GAAM,IAAM1b,GAAE+/zB,UAIvD//zB,GAAE23E,SAEP33E,GAAE6/zB,OAAU7/zB,GAAE6/zB,OAAS7/zB,GAAE8/zB,WAAc9/zB,GAAEsO,OAAOoN,GA5UtC,EA4U0D,IAAM1b,GAAE+/zB,UAE5E//zB,GAAEoiP,KAAK1mO,GAAM1b,GAAEi/zB,QAAUj/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OAClC7/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OAASnkzB,GAClBA,KACA1b,GAAE23E,WACE33E,GAAEs/zB,UAAYt/zB,GAAE23E,OAlVV,aA2VP33E,GAAEs/zB,UAAY5C,IAAqC,IAApB18zB,GAAE6wzB,KAAKgB,UAiDjD,YAAwB7xzB,GAAGm4W,IAIzB,IAAI6nd,GAAiB,MAOrB,IALIA,GAAiBhg0B,GAAEig0B,iBAAmB,IACxCD,GAAiBhg0B,GAAEig0B,iBAAmB,KAI/B,CAEP,GAAIjg0B,GAAEs/zB,WAAa,EAAG,CAUpB,GADAY,GAAYlg0B,IACQ,IAAhBA,GAAEs/zB,WAlvJc,IAkvJKnnd,GACvB,OAtZgB,EAyZlB,GAAoB,IAAhBn4W,GAAEs/zB,UACJ,MAOJt/zB,GAAEs+zB,UAAYt+zB,GAAEs/zB,UAChBt/zB,GAAEs/zB,UAAY,EAGd,IAAIa,GAAYng0B,GAAEq+zB,YAAc2B,GAkBhC,IAhBmB,IAAfhg0B,GAAEs+zB,UAAkBt+zB,GAAEs+zB,UAAY6B,MAEpCng0B,GAAEs/zB,UAAYt/zB,GAAEs+zB,SAAW6B,GAC3Bng0B,GAAEs+zB,SAAW6B,GAEbC,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,YAUT/xzB,GAAEs+zB,SAAWt+zB,GAAEq+zB,aAAgBr+zB,GAAE8+zB,OAASpC,KAE5C0D,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WACT,OA3bgB,EAmctB,OAFA/xzB,GAAE23E,OAAS,EA1xJa,IA4xJpBwgS,IAEFiod,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,UApcS,EACA,IA0clB/xzB,GAAEs+zB,SAAWt+zB,GAAEq+zB,aAEjB+B,GAAiBpg0B,IAAG,GA/cA,GAgexB,YAAsBA,GAAGm4W,IAIvB,QAHIkod,GACAC,KAEK,CAMP,GAAItg0B,GAAEs/zB,UAAY5C,GAAe,CAE/B,GADAwD,GAAYlg0B,IACRA,GAAEs/zB,UAAY5C,IAz0JE,IAy0Jevkd,GACjC,OA7egB,EA+elB,GAAoB,IAAhBn4W,GAAEs/zB,UACJ,MA2BJ,GApBAe,GAAY,EACRrg0B,GAAEs/zB,WAtgBQ,IAwgBZt/zB,GAAE6/zB,OAAU7/zB,GAAE6/zB,OAAS7/zB,GAAE8/zB,WAAc9/zB,GAAEsO,OAAOtO,GAAEs+zB,SAxgBtC,EAwgB+D,IAAMt+zB,GAAE+/zB,UACnFM,GAAYrg0B,GAAEoiP,KAAKpiP,GAAEs+zB,SAAWt+zB,GAAEi/zB,QAAUj/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OACrD7/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OAAS7/zB,GAAEs+zB,UAOJ,IAAd+B,IAA4Brg0B,GAAEs+zB,SAAW+B,IAAerg0B,GAAE8+zB,OAASpC,KAKrE18zB,GAAEug0B,aAAeC,GAAcxg0B,GAAGqg0B,KAGhCrg0B,GAAEug0B,cAzhBQ,EAqiBZ,GAPAD,GAASG,GAAUzg0B,GAAGA,GAAEs+zB,SAAWt+zB,GAAEu/zB,YAAav/zB,GAAEug0B,aA9hBxC,GAgiBZvg0B,GAAEs/zB,WAAat/zB,GAAEug0B,aAKbvg0B,GAAEug0B,cAAgBvg0B,GAAE0g0B,gBAAuC1g0B,GAAEs/zB,WAriBrD,EAqiB+E,CACzFt/zB,GAAEug0B,eACF,GACEvg0B,GAAEs+zB,WAEFt+zB,GAAE6/zB,OAAU7/zB,GAAE6/zB,OAAS7/zB,GAAE8/zB,WAAc9/zB,GAAEsO,OAAOtO,GAAEs+zB,SA1iB1C,EA0iBmE,IAAMt+zB,GAAE+/zB,UACnFM,GAAYrg0B,GAAEoiP,KAAKpiP,GAAEs+zB,SAAWt+zB,GAAEi/zB,QAAUj/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OACrD7/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OAAS7/zB,GAAEs+zB,eAKQ,KAAnBt+zB,GAAEug0B,cACbvg0B,GAAEs+zB,gBAGFt+zB,GAAEs+zB,UAAYt+zB,GAAEug0B,aAChBvg0B,GAAEug0B,aAAe,EACjBvg0B,GAAE6/zB,MAAQ7/zB,GAAEsO,OAAOtO,GAAEs+zB,UAErBt+zB,GAAE6/zB,OAAU7/zB,GAAE6/zB,OAAS7/zB,GAAE8/zB,WAAc9/zB,GAAEsO,OAAOtO,GAAEs+zB,SAAW,IAAMt+zB,GAAE+/zB,eAavEO,GAASG,GAAUzg0B,GAAG,EAAGA,GAAEsO,OAAOtO,GAAEs+zB,WAEpCt+zB,GAAEs/zB,YACFt/zB,GAAEs+zB,WAEJ,GAAIgC,KAEFF,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WACT,OAjkBgB,EAukBtB,OADA/xzB,GAAE23E,OAAW33E,GAAEs+zB,SAAYqC,EAAoB3g0B,GAAEs+zB,SAAWqC,EA/5JpC,IAg6JpBxod,IAEFiod,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,UAxkBS,EACA,GA6kBlB/xzB,GAAEw6zB,WAEJ4F,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WAnlBS,EACA,EA+lBxB,YAAsB/xzB,GAAGm4W,IAOvB,QANIkod,GACAC,GAEAM,KAGK,CAMP,GAAI5g0B,GAAEs/zB,UAAY5C,GAAe,CAE/B,GADAwD,GAAYlg0B,IACRA,GAAEs/zB,UAAY5C,IA58JE,IA48Jevkd,GACjC,OAhnBgB,EAknBlB,GAAoB,IAAhBn4W,GAAEs/zB,UAAmB,MA0C3B,GApCAe,GAAY,EACRrg0B,GAAEs/zB,WAvoBQ,IAyoBZt/zB,GAAE6/zB,OAAU7/zB,GAAE6/zB,OAAS7/zB,GAAE8/zB,WAAc9/zB,GAAEsO,OAAOtO,GAAEs+zB,SAzoBtC,EAyoB+D,IAAMt+zB,GAAE+/zB,UACnFM,GAAYrg0B,GAAEoiP,KAAKpiP,GAAEs+zB,SAAWt+zB,GAAEi/zB,QAAUj/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OACrD7/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OAAS7/zB,GAAEs+zB,UAMtBt+zB,GAAE4+zB,YAAc5+zB,GAAEug0B,aAClBvg0B,GAAE6g0B,WAAa7g0B,GAAEu/zB,YACjBv/zB,GAAEug0B,aAAeI,EAEC,IAAdN,IAA0Brg0B,GAAE4+zB,YAAc5+zB,GAAE0g0B,gBAC5C1g0B,GAAEs+zB,SAAW+B,IAAcrg0B,GAAE8+zB,OAASpC,KAKxC18zB,GAAEug0B,aAAeC,GAAcxg0B,GAAGqg0B,IAG9Brg0B,GAAEug0B,cAAgB,IAj9JI,IAk9JtBvg0B,GAAE05I,UA/pBM,IA+pBsB15I,GAAEug0B,cAAgCvg0B,GAAEs+zB,SAAWt+zB,GAAEu/zB,YAAc,QAK/Fv/zB,GAAEug0B,aAAeI,IAMjB3g0B,GAAE4+zB,aA1qBQ,GA0qBsB5+zB,GAAEug0B,cAAgBvg0B,GAAE4+zB,YAAa,CACnEgC,GAAa5g0B,GAAEs+zB,SAAWt+zB,GAAEs/zB,UA3qBhB,EAkrBZgB,GAASG,GAAUzg0B,GAAGA,GAAEs+zB,SAAW,EAAIt+zB,GAAE6g0B,WAAY7g0B,GAAE4+zB,YAlrB3C,GAwrBZ5+zB,GAAEs/zB,WAAat/zB,GAAE4+zB,YAAc,EAC/B5+zB,GAAE4+zB,aAAe,EACjB,KACQ5+zB,GAAEs+zB,UAAYsC,KAElB5g0B,GAAE6/zB,OAAU7/zB,GAAE6/zB,OAAS7/zB,GAAE8/zB,WAAc9/zB,GAAEsO,OAAOtO,GAAEs+zB,SA7rB1C,EA6rBmE,IAAMt+zB,GAAE+/zB,UACnFM,GAAYrg0B,GAAEoiP,KAAKpiP,GAAEs+zB,SAAWt+zB,GAAEi/zB,QAAUj/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OACrD7/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OAAS7/zB,GAAEs+zB,gBAGK,KAAlBt+zB,GAAE4+zB,aAKb,GAJA5+zB,GAAE8g0B,gBAAkB,EACpB9g0B,GAAEug0B,aAAeI,EACjB3g0B,GAAEs+zB,WAEEgC,KAEFF,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WACT,OA7rBc,OA6rBPgP,GAKF/g0B,GAAE8g0B,iBAgBX,IATAR,GAASG,GAAUzg0B,GAAG,EAAGA,GAAEsO,OAAOtO,GAAEs+zB,SAAW,MAI7C8B,GAAiBpg0B,IAAG,GAGtBA,GAAEs+zB,WACFt+zB,GAAEs/zB,YACuB,IAArBt/zB,GAAE6wzB,KAAKkB,UACT,OAntBgB,OAytBlB/xzB,GAAE8g0B,gBAAkB,EACpB9g0B,GAAEs+zB,WACFt+zB,GAAEs/zB,YAYN,OARIt/zB,GAAE8g0B,kBAGJR,GAASG,GAAUzg0B,GAAG,EAAGA,GAAEsO,OAAOtO,GAAEs+zB,SAAW,IAE/Ct+zB,GAAE8g0B,gBAAkB,GAEtB9g0B,GAAE23E,OAAS33E,GAAEs+zB,SAAWqC,EAAkB3g0B,GAAEs+zB,SAAWqC,EA/jK/B,IAgkKpBxod,IAEFiod,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,UAxuBS,EACA,GA6uBlB/xzB,GAAEw6zB,WAEJ4F,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WAnvBS,EACA,EAy5BxB,YAAgBiP,GAAaC,GAAUC,GAAaC,GAAWt5vB,IAC7D1uE,KAAK6n0B,YAAcA,GACnB7n0B,KAAK8n0B,SAAWA,GAChB9n0B,KAAK+n0B,YAAcA,GACnB/n0B,KAAKgo0B,UAAYA,GACjBho0B,KAAK0uE,KAAOA,GAGd,IAAIu5vB,GAAqB,WACvB,MAAMlja,GAAQ,CAEZ,IAAItkI,GAAO,EAAG,EAAG,EAAG,EAAGyniB,IACvB,IAAIzniB,GAAO,EAAG,EAAG,EAAG,EAAG0niB,IACvB,IAAI1niB,GAAO,EAAG,EAAG,GAAI,EAAG0niB,IACxB,IAAI1niB,GAAO,EAAG,EAAG,GAAI,GAAI0niB,IAEzB,IAAI1niB,GAAO,EAAG,EAAG,GAAI,GAAI2niB,IACzB,IAAI3niB,GAAO,EAAG,GAAI,GAAI,GAAI2niB,IAC1B,IAAI3niB,GAAO,EAAG,GAAI,IAAK,IAAK2niB,IAC5B,IAAI3niB,GAAO,EAAG,GAAI,IAAK,IAAK2niB,IAC5B,IAAI3niB,GAAO,GAAI,IAAK,IAAK,KAAM2niB,IAC/B,IAAI3niB,GAAO,GAAI,IAAK,IAAK,KAAM2niB,KAGjCH,UAAqB,IAAMlja,GACpBA,IA8BT,cACE/ka,KAAK03zB,KAAO,KACZ13zB,KAAKqnB,OAAS,EACdrnB,KAAKog0B,YAAc,KACnBpg0B,KAAK8m0B,iBAAmB,EACxB9m0B,KAAK0j0B,YAAc,EACnB1j0B,KAAKmxE,QAAU,EACfnxE,KAAKs6D,KAAO,EACZt6D,KAAKqo0B,OAAS,KACdro0B,KAAKso0B,QAAU,EACfto0B,KAAKif,OA/wKyB,EAgxK9Bjf,KAAKuo0B,YAAa,EAElBvo0B,KAAK2l0B,OAAS,EACd3l0B,KAAKwo0B,OAAS,EACdxo0B,KAAK8l0B,OAAS,EAEd9l0B,KAAKmV,OAAS,KAQdnV,KAAKum0B,YAAc,EAKnBvm0B,KAAKipP,KAAO,KAMZjpP,KAAKo9V,KAAO,KAEZp9V,KAAK0m0B,MAAQ,EACb1m0B,KAAKwm0B,UAAY,EACjBxm0B,KAAKyo0B,UAAY,EACjBzo0B,KAAK4m0B,UAAY,EAEjB5m0B,KAAK2m0B,WAAa,EAOlB3m0B,KAAKkl0B,YAAc,EAKnBll0B,KAAKon0B,aAAe,EACpBpn0B,KAAK0n0B,WAAa,EAClB1n0B,KAAK2n0B,gBAAkB,EACvB3n0B,KAAKml0B,SAAW,EAChBnl0B,KAAKom0B,YAAc,EACnBpm0B,KAAKmm0B,UAAY,EAEjBnm0B,KAAKyl0B,YAAc,EAKnBzl0B,KAAKul0B,iBAAmB,EAMxBvl0B,KAAKun0B,eAAiB,EAYtBvn0B,KAAKkiH,MAAQ,EACbliH,KAAKugJ,SAAW,EAEhBvgJ,KAAKkm0B,WAAa,EAGlBlm0B,KAAK0l0B,WAAa,EAYlB1l0B,KAAK+g0B,UAAajK,GAAM4R,MACxB1o0B,KAAKgh0B,UAAalK,GAAO,KACzB92zB,KAAKih0B,QAAanK,GAAO,IACzB6R,GAAO3o0B,KAAK+g0B,WACZ4H,GAAO3o0B,KAAKgh0B,WACZ2H,GAAO3o0B,KAAKih0B,SAEZjh0B,KAAKik0B,OAAW,KAChBjk0B,KAAKkk0B,OAAW,KAChBlk0B,KAAKok0B,QAAW,KAGhBpk0B,KAAK0g0B,SAAW5J,GAAM8R,IAItB5o0B,KAAKwh0B,KAAO1K,GAAM,KAClB6R,GAAO3o0B,KAAKwh0B,MAEZxh0B,KAAKyh0B,SAAW,EAChBzh0B,KAAKoi0B,SAAW,EAKhBpi0B,KAAKw3F,MAAQs/tB,GAAM,KACnB6R,GAAO3o0B,KAAKw3F,OAIZx3F,KAAKgi0B,MAAQ,EAEbhi0B,KAAKsj0B,YAAc,EAoBnBtj0B,KAAKqh0B,SAAW,EAEhBrh0B,KAAK+h0B,MAAQ,EAMb/h0B,KAAKmh0B,QAAU,EACfnh0B,KAAKoh0B,WAAa,EAClBph0B,KAAKk4G,QAAU,EACfl4G,KAAKw+E,OAAS,EAGdx+E,KAAKsg0B,OAAS,EAIdtg0B,KAAKqg0B,SAAW,EA6ClB,YAAsB3I,IACpB,IAAIllU,GA9BN,YAA0BklU,IACxB,IAAI7wzB,GAEJ,OAAK6wzB,IAASA,GAAKxtzB,OAInBwtzB,GAAK2D,SAAW3D,GAAK4D,UAAY,EACjC5D,GAAKoG,UA78KyB,GA+8K9Bj3zB,GAAI6wzB,GAAKxtzB,OACPinE,QAAU,EACZtqE,GAAE68zB,YAAc,EAEZ78zB,GAAEyzD,KAAO,IACXzzD,GAAEyzD,MAAQzzD,GAAEyzD,MAGdzzD,GAAEwgB,OAAUxgB,GAAEyzD,KAxqCC,GAKA,IAoqCfo9vB,GAAKF,MAAoB,IAAX3wzB,GAAEyzD,KACd,EAEA,EACFzzD,GAAE0h0B,WAlgLsB,EA6nI1B,YAAkB1h0B,IAEXo8zB,KAznBP,cACE,IAAIn1zB,GACAqqzB,GACApyzB,GACAimB,GACA42D,GACA89uB,GAAW,IAAIpyzB,MAAMsyzB,IAmCzB,IA/BAr1U,GADAuzU,GAAgB,IAAIxwzB,MAAOu6zB,MAI3Bt9U,GADAwzU,GAAgB,IAAIzwzB,MAAMw6zB,KAI1Bv9U,GADAyzU,GAAgB,IAAI1wzB,MAjSF,MAqSlBi9e,GADA0zU,GAAgB,IAAI3wzB,MAAMy6zB,MAI1Bx9U,GADA2zU,GAAgB,IAAI5wzB,MA3WF,KA+WlBi9e,GADA4zU,GAAgB,IAAI7wzB,MArWF,KAqXlBvI,GAAS,EACJimB,GAAO,EAAGA,GAAOg9yB,GAAkBh9yB,KAEtC,IADAkzyB,GAAYlzyB,IAAQjmB,GACf+H,GAAI,EAAGA,GAAK,GAAKyxzB,GAAYvzyB,IAAQle,KACxCmxzB,GAAal5zB,MAAYimB,GAY7B,IAJAizyB,GAAal5zB,GAAS,GAAKimB,GAG3B42D,GAAO,EACF52D,GAAO,EAAGA,GAAO,GAAIA,KAExB,IADAmzyB,GAAUnzyB,IAAQ42D,GACb90E,GAAI,EAAGA,GAAK,GAAK0xzB,GAAYxzyB,IAAQle,KACxCkxzB,GAAWp8uB,MAAU52D,GAKzB,IADA42D,KAAS,EACF52D,GA7YW,GA6YKA,KAErB,IADAmzyB,GAAUnzyB,IAAQ42D,IAAQ,EACrB90E,GAAI,EAAGA,GAAK,GAAM0xzB,GAAYxzyB,IAAQ,EAAKle,KAC9CkxzB,GAAW,IAAMp8uB,MAAU52D,GAM/B,IAAKmsyB,GAAO,EAAGA,IA7YG,GA6YeA,KAC/BuI,GAASvI,IAAQ,EAInB,IADArqzB,GAAI,EACGA,IAAK,KACVgxzB,GAAiB,EAAJhxzB,GAAQ,GAAa,EAClCA,KACA4yzB,GAAS,KAEX,KAAO5yzB,IAAK,KACVgxzB,GAAiB,EAAJhxzB,GAAQ,GAAa,EAClCA,KACA4yzB,GAAS,KAEX,KAAO5yzB,IAAK,KACVgxzB,GAAiB,EAAJhxzB,GAAQ,GAAa,EAClCA,KACA4yzB,GAAS,KAEX,KAAO5yzB,IAAK,KACVgxzB,GAAiB,EAAJhxzB,GAAQ,GAAa,EAClCA,KACA4yzB,GAAS,KASX,IAHA8B,GAAU1D,GAAc+J,IAAanI,IAGhC5yzB,GAAI,EAAGA,GAtbM,GAsbOA,KACvBixzB,GAAiB,EAAJjxzB,GAAQ,GAAa,EAClCixzB,GAAiB,EAAJjxzB,IAAkB+yzB,GAAW/yzB,GAAG,GAI/CsxzB,GAAgB,IAAI6J,GAAenK,GAAcS,GAAauB,IA/b5CA,IAYA,IAoblBzB,GAAgB,IAAI4J,GAAelK,GAAcS,GAAa,EA7b5C,GASA,IAqblBF,GAAiB,IAAI2J,GAAe,IAAI36zB,MAAM,GAAImxzB,GAAc,EA3b9C,GAiBF,GAm7BdyJ,GACAjG,IAAmB,GAGrBp8zB,GAAEo9zB,OAAU,IAAIkF,GAASti0B,GAAEk6zB,UAAW3B,IACtCv4zB,GAAEq9zB,OAAU,IAAIiF,GAASti0B,GAAEm6zB,UAAW3B,IACtCx4zB,GAAEu9zB,QAAU,IAAI+E,GAASti0B,GAAEo6zB,QAAS3B,IAEpCz4zB,GAAEy5zB,OAAS,EACXz5zB,GAAEw5zB,SAAW,EAGb2E,GAAWn+zB,IAu3CXui0B,CAASvi0B,IAx/Ke,GAo+KfwjB,GAAIqtyB,GAAMrB,GA0BTgT,CAAiB3R,IAC3B,OA//KwB,IA+/KpBllU,IApPN,YAAiB3rf,IACfA,GAAE0/zB,YAAc,EAAI1/zB,GAAE8+zB,OAGtBgD,GAAO9h0B,GAAEu2V,MAET,MAAM2nE,GAAQkja,KAGdph0B,GAAE0g0B,eAAiBxia,GAAMl+Z,GAAEq7G,OAAO4ltB,SAClCjh0B,GAAEq/zB,WAAanha,GAAMl+Z,GAAEq7G,OAAO2ltB,YAC9Bhh0B,GAAE6+zB,WAAa3ga,GAAMl+Z,GAAEq7G,OAAO6ltB,YAC9Blh0B,GAAE0+zB,iBAAmBxga,GAAMl+Z,GAAEq7G,OAAO8ltB,UAEpCnh0B,GAAEs+zB,SAAW,EACbt+zB,GAAEq+zB,YAAc,EAChBr+zB,GAAEs/zB,UAAY,EACdt/zB,GAAE23E,OAAS,EACX33E,GAAEug0B,aAAevg0B,GAAE4+zB,YAAc+B,EACjC3g0B,GAAE8g0B,gBAAkB,EACpB9g0B,GAAE6/zB,MAAQ,EAiOR4C,CAAQ5R,GAAKxtzB,OAERsof,GA2FT,YAAiBklU,GAAM14c,IACrB,IAAIuqd,GAAW1i0B,GACX+wzB,GAAKt2yB,GAET,IAAKo2yB,KAASA,GAAKxtzB,OACjB80W,GAxmLsB,GAwmLHA,GAAQ,EAC3B,OAAO04c,GAAOrtyB,GAAIqtyB,GAAMrB,GAAkBA,EAK5C,GAFAxvzB,GAAI6wzB,GAAKxtzB,OAEJwtzB,GAAKjlyB,SACJilyB,GAAK9kyB,OAA2B,IAAlB8kyB,GAAKgB,UAzxCR,MA0xCZ7xzB,GAAEwgB,QAjnLiB,IAinLU23V,GAChC,OAAO30V,GAAIqtyB,GAA0B,IAAnBA,GAAKkB,WApmLF,EAomLmCvC,GAQ1D,GALAxvzB,GAAE6wzB,KAAOA,GACT6R,GAAY1i0B,GAAE0h0B,WACd1h0B,GAAE0h0B,WAAavpd,GAtyCA,KAyyCXn4W,GAAEwgB,OAEJ,GAAe,IAAXxgB,GAAEyzD,KACJo9vB,GAAKF,MAAQ,EACbgS,GAAS3i0B,GAAG,IACZ2i0B,GAAS3i0B,GAAG,KACZ2i0B,GAAS3i0B,GAAG,GACZ0nG,GAAO85tB,QAaLmB,GAAS3i0B,IAAIA,GAAEwh0B,OAAOv9zB,KAAO,EAAI,IACpBjE,GAAEwh0B,OAAO1L,KAAO,EAAI,IACnB91zB,GAAEwh0B,OAAO5tS,MAAY,EAAJ,IACjB5zhB,GAAEwh0B,OAAOrj0B,KAAW,EAAJ,IAChB6B,GAAEwh0B,OAAOnlpB,QAAc,GAAJ,IAEjCsmpB,GAAS3i0B,GAAmB,IAAhBA,GAAEwh0B,OAAO18qB,MACrB69qB,GAAS3i0B,GAAIA,GAAEwh0B,OAAO18qB,MAAQ,EAAK,KACnC69qB,GAAS3i0B,GAAIA,GAAEwh0B,OAAO18qB,MAAQ,GAAM,KACpC69qB,GAAS3i0B,GAAIA,GAAEwh0B,OAAO18qB,MAAQ,GAAM,KACpC69qB,GAAS3i0B,GAAe,IAAZA,GAAEq7G,MAAc,EACfr7G,GAAE05I,UAhoLS,GAgoLqB15I,GAAEq7G,MAAQ,EAC1C,EAAI,GACjBsntB,GAAS3i0B,GAAiB,IAAdA,GAAEwh0B,OAAOxjzB,IACjBhe,GAAEwh0B,OAAO5tS,OAAS5zhB,GAAEwh0B,OAAO5tS,MAAM10hB,SACnCyj0B,GAAS3i0B,GAA2B,IAAxBA,GAAEwh0B,OAAO5tS,MAAM10hB,QAC3Byj0B,GAAS3i0B,GAAIA,GAAEwh0B,OAAO5tS,MAAM10hB,QAAU,EAAK,MAEzCc,GAAEwh0B,OAAO1L,OACXjF,GAAKF,MAAQ/xU,GAAMiyU,GAAKF,MAAO3wzB,GAAEu5zB,YAAav5zB,GAAEsqE,QAAS,IAE3DtqE,GAAEyh0B,QAAU,EACZzh0B,GAAEwgB,OAl1CQ,KAgzCVmizB,GAAS3i0B,GAAG,GACZ2i0B,GAAS3i0B,GAAG,GACZ2i0B,GAAS3i0B,GAAG,GACZ2i0B,GAAS3i0B,GAAG,GACZ2i0B,GAAS3i0B,GAAG,GACZ2i0B,GAAS3i0B,GAAe,IAAZA,GAAEq7G,MAAc,EACfr7G,GAAE05I,UA/mLS,GA+mLqB15I,GAAEq7G,MAAQ,EAC1C,EAAI,GACjBsntB,GAAS3i0B,GA5yCH,GA6yCNA,GAAEwgB,OArzCO,SAk1Cb,CACE,IAAIY,GApoLsB,GAooLGphB,GAAE2h0B,OAAS,GAAM,IAAO,EAYrDvgzB,KATIphB,GAAE05I,UAnpLoB,GAmpLU15I,GAAEq7G,MAAQ,EAC9B,EACLr7G,GAAEq7G,MAAQ,EACL,EACO,IAAZr7G,GAAEq7G,MACG,EAEA,IAEU,EACP,IAAfr7G,GAAEs+zB,WAAkBl9yB,IAv2CZ,IAw2CZA,IAAU,GAAMA,GAAS,GAEzBphB,GAAEwgB,OAn2CS,IAo2CXoizB,GAAY5i0B,GAAGohB,IAGI,IAAfphB,GAAEs+zB,WACJsE,GAAY5i0B,GAAG6wzB,GAAKF,QAAU,IAC9BiS,GAAY5i0B,GAAgB,MAAb6wzB,GAAKF,QAEtBE,GAAKF,MAAQ,EAKjB,GAp3CgB,KAo3CZ3wzB,GAAEwgB,OACJ,GAAIxgB,GAAEwh0B,OAAO5tS,MAAqB,CAGhC,IAFAm9R,GAAM/wzB,GAAEsqE,QAEDtqE,GAAEyh0B,SAAmC,MAAxBzh0B,GAAEwh0B,OAAO5tS,MAAM10hB,UAC7Bc,GAAEsqE,UAAYtqE,GAAEig0B,mBACdjg0B,GAAEwh0B,OAAO1L,MAAQ91zB,GAAEsqE,QAAUymvB,KAC/BF,GAAKF,MAAQ/xU,GAAMiyU,GAAKF,MAAO3wzB,GAAEu5zB,YAAav5zB,GAAEsqE,QAAUymvB,GAAKA,KAEjEwN,GAAc1N,IACdE,GAAM/wzB,GAAEsqE,QACJtqE,GAAEsqE,UAAYtqE,GAAEig0B,oBAItB0C,GAAS3i0B,GAA+B,IAA5BA,GAAEwh0B,OAAO5tS,MAAM5zhB,GAAEyh0B,UAC7Bzh0B,GAAEyh0B,UAEAzh0B,GAAEwh0B,OAAO1L,MAAQ91zB,GAAEsqE,QAAUymvB,KAC/BF,GAAKF,MAAQ/xU,GAAMiyU,GAAKF,MAAO3wzB,GAAEu5zB,YAAav5zB,GAAEsqE,QAAUymvB,GAAKA,KAE7D/wzB,GAAEyh0B,UAAYzh0B,GAAEwh0B,OAAO5tS,MAAM10hB,SAC/Bc,GAAEyh0B,QAAU,EACZzh0B,GAAEwgB,OA14CO,SA84CXxgB,GAAEwgB,OA94CS,GAi5Cf,GAj5Ce,KAi5CXxgB,GAAEwgB,OACJ,GAAIxgB,GAAEwh0B,OAAOrj0B,KAAoB,CAC/B4yzB,GAAM/wzB,GAAEsqE,QAGR,EAAG,CACD,GAAItqE,GAAEsqE,UAAYtqE,GAAEig0B,mBACdjg0B,GAAEwh0B,OAAO1L,MAAQ91zB,GAAEsqE,QAAUymvB,KAC/BF,GAAKF,MAAQ/xU,GAAMiyU,GAAKF,MAAO3wzB,GAAEu5zB,YAAav5zB,GAAEsqE,QAAUymvB,GAAKA,KAEjEwN,GAAc1N,IACdE,GAAM/wzB,GAAEsqE,QACJtqE,GAAEsqE,UAAYtqE,GAAEig0B,kBAAkB,CACpCxlzB,GAAM,EACN,MAKFA,GADEza,GAAEyh0B,QAAUzh0B,GAAEwh0B,OAAOrj0B,KAAKe,OACkB,IAAxCc,GAAEwh0B,OAAOrj0B,KAAK4sO,WAAW/qO,GAAEyh0B,WAE3B,EAERkB,GAAS3i0B,GAAGya,UACG,IAARA,IAELza,GAAEwh0B,OAAO1L,MAAQ91zB,GAAEsqE,QAAUymvB,KAC/BF,GAAKF,MAAQ/xU,GAAMiyU,GAAKF,MAAO3wzB,GAAEu5zB,YAAav5zB,GAAEsqE,QAAUymvB,GAAKA,KAErD,IAARt2yB,KACFza,GAAEyh0B,QAAU,EACZzh0B,GAAEwgB,OA/6CU,SAm7CdxgB,GAAEwgB,OAn7CY,GAs7ClB,GAt7CkB,KAs7CdxgB,GAAEwgB,OACJ,GAAIxgB,GAAEwh0B,OAAOnlpB,QAAuB,CAClC00oB,GAAM/wzB,GAAEsqE,QAGR,EAAG,CACD,GAAItqE,GAAEsqE,UAAYtqE,GAAEig0B,mBACdjg0B,GAAEwh0B,OAAO1L,MAAQ91zB,GAAEsqE,QAAUymvB,KAC/BF,GAAKF,MAAQ/xU,GAAMiyU,GAAKF,MAAO3wzB,GAAEu5zB,YAAav5zB,GAAEsqE,QAAUymvB,GAAKA,KAEjEwN,GAAc1N,IACdE,GAAM/wzB,GAAEsqE,QACJtqE,GAAEsqE,UAAYtqE,GAAEig0B,kBAAkB,CACpCxlzB,GAAM,EACN,MAKFA,GADEza,GAAEyh0B,QAAUzh0B,GAAEwh0B,OAAOnlpB,QAAQn9K,OACkB,IAA3Cc,GAAEwh0B,OAAOnlpB,QAAQ0uD,WAAW/qO,GAAEyh0B,WAE9B,EAERkB,GAAS3i0B,GAAGya,UACG,IAARA,IAELza,GAAEwh0B,OAAO1L,MAAQ91zB,GAAEsqE,QAAUymvB,KAC/BF,GAAKF,MAAQ/xU,GAAMiyU,GAAKF,MAAO3wzB,GAAEu5zB,YAAav5zB,GAAEsqE,QAAUymvB,GAAKA,KAErD,IAARt2yB,KACFza,GAAEwgB,OAn9CO,UAu9CXxgB,GAAEwgB,OAv9CS,IA6+Cf,GA7+Ce,MA09CXxgB,GAAEwgB,SACAxgB,GAAEwh0B,OAAO1L,MACP91zB,GAAEsqE,QAAU,EAAItqE,GAAEig0B,kBACpB1B,GAAc1N,IAEZ7wzB,GAAEsqE,QAAU,GAAKtqE,GAAEig0B,mBACrB0C,GAAS3i0B,GAAgB,IAAb6wzB,GAAKF,OACjBgS,GAAS3i0B,GAAI6wzB,GAAKF,OAAS,EAAK,KAChCE,GAAKF,MAAQ,EACb3wzB,GAAEwgB,OAl+CO,MAs+CXxgB,GAAEwgB,OAt+CS,KA4+CG,IAAdxgB,GAAEsqE,SAEJ,GADAi0vB,GAAc1N,IACS,IAAnBA,GAAKkB,UAOP/xzB,UAAE0h0B,YAAa,EAp0LK,OAq0LbmB,GAOkB,IAAlBhS,GAAKgB,UAAkB/+C,GAAK36Z,KAAU26Z,GAAK4vD,KAn1L9B,IAo1LtBvqd,GACA,OAAO30V,GAAIqtyB,IAv0LU,GA20LvB,GAlgDiB,MAkgDb7wzB,GAAEwgB,QAA6C,IAAlBqwyB,GAAKgB,SACpC,OAAOruyB,GAAIqtyB,IA50LU,GAi1LvB,GAAsB,IAAlBA,GAAKgB,UAAkC,IAAhB7xzB,GAAEs/zB,WAn2LL,IAo2LrBnnd,IAzgDc,MAygDUn4W,GAAEwgB,OAA0B,CACrD,IAAIsizB,GAx0LwB,IAw0Ld9i0B,GAAE05I,SAvqBpB,YAAsB15I,GAAGm4W,IAGvB,QAFImod,KAEK,CAEP,GAAoB,IAAhBtg0B,GAAEs/zB,YACJY,GAAYlg0B,IACQ,IAAhBA,GAAEs/zB,WAAiB,CACrB,GAtsKkB,IAssKdnnd,GACF,OA12Bc,EA42BhB,MAWJ,GANAn4W,GAAEug0B,aAAe,EAGjBD,GAASG,GAAUzg0B,GAAG,EAAGA,GAAEsO,OAAOtO,GAAEs+zB,WACpCt+zB,GAAEs/zB,YACFt/zB,GAAEs+zB,WACEgC,KAEFF,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WACT,OA33BgB,EAi4BtB,OADA/xzB,GAAE23E,OAAS,EAztKa,IA0tKpBwgS,IAEFiod,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,UAl4BS,EACA,GAu4BlB/xzB,GAAEw6zB,WAEJ4F,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WA74BS,EACA,EAugD2BgR,CAAa/i0B,GAAGm4W,IAv0LnC,IAw0LzBn4W,GAAE05I,SAvwBT,YAAqB15I,GAAGm4W,IAOtB,QANImod,GACAl+kB,GACAujL,GAAMu5Z,GAENH,GAAO/+zB,GAAEsO,SAEJ,CAKP,GAAItO,GAAEs/zB,WA3xBQ,IA2xBkB,CAE9B,GADAY,GAAYlg0B,IACRA,GAAEs/zB,WA7xBM,KAh1IQ,IA6mKcnnd,GAChC,OAjxBgB,EAmxBlB,GAAoB,IAAhBn4W,GAAEs/zB,UAAmB,MAK3B,GADAt/zB,GAAEug0B,aAAe,EACbvg0B,GAAEs/zB,WAtyBQ,GAsyBoBt/zB,GAAEs+zB,SAAW,IAE7Cl8kB,GAAO28kB,GADPp5Z,GAAO3la,GAAEs+zB,SAAW,MAEPS,KAAOp5Z,KAASvjL,KAAS28kB,KAAOp5Z,KAASvjL,KAAS28kB,KAAOp5Z,IAAO,CAC3Eu5Z,GAASl/zB,GAAEs+zB,SAzyBD,IA0yBV,UAESl8kB,KAAS28kB,KAAOp5Z,KAASvjL,KAAS28kB,KAAOp5Z,KACzCvjL,KAAS28kB,KAAOp5Z,KAASvjL,KAAS28kB,KAAOp5Z,KACzCvjL,KAAS28kB,KAAOp5Z,KAASvjL,KAAS28kB,KAAOp5Z,KACzCvjL,KAAS28kB,KAAOp5Z,KAASvjL,KAAS28kB,KAAOp5Z,KACzCA,GAAOu5Z,IAChBl/zB,GAAEug0B,aAjzBQ,KAizBsBrB,GAASv5Z,IACrC3la,GAAEug0B,aAAevg0B,GAAEs/zB,YACrBt/zB,GAAEug0B,aAAevg0B,GAAEs/zB,WAyBzB,GAlBA9L,GAAM+M,cA3zBQ,GA+zBZD,GAASG,GAAUzg0B,GAAG,EAAGA,GAAEug0B,aA/zBf,GAi0BZvg0B,GAAEs/zB,WAAat/zB,GAAEug0B,aACjBvg0B,GAAEs+zB,UAAYt+zB,GAAEug0B,aAChBvg0B,GAAEug0B,aAAe,IAKjBD,GAASG,GAAUzg0B,GAAG,EAAGA,GAAEsO,OAAOtO,GAAEs+zB,WAEpCt+zB,GAAEs/zB,YACFt/zB,GAAEs+zB,YAEAgC,KAEFF,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WACT,OAn0BgB,EAy0BtB,OADA/xzB,GAAE23E,OAAS,EAjqKa,IAkqKpBwgS,IAEFiod,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,UA10BS,EACA,GA+0BlB/xzB,GAAEw6zB,WAEJ4F,GAAiBpg0B,IAAG,GACK,IAArBA,GAAE6wzB,KAAKkB,WAr1BS,EACA,EAwgDMiR,CAAYhj0B,GAAGm4W,IACrCipd,KAAqBph0B,GAAEq7G,OAAOxzC,KAAK7nE,GAAGm4W,IAK1C,IA7gDoB,IA0gDhB2qd,IAzgDgB,IAygDgBA,MAClC9i0B,GAAEwgB,OA/gDW,KAEK,IA+gDhBsizB,IA7gDgB,IA6gDWA,GAC7B,OAAuB,IAAnBjS,GAAKkB,YACP/xzB,GAAE0h0B,YAAa,GAn2LG,EA+2LtB,GA5hDoB,IA4hDhBoB,KAz3LkB,IA03LhB3qd,GA1tDV,YAAmBn4W,IACjB45zB,GAAU55zB,GAAG29zB,EAAmB,GAChCvC,GAAUp7zB,GAn9BM,IAm9BQi4zB,IA5zB1B,YAAkBj4zB,IACG,KAAfA,GAAEw5zB,UACJE,GAAU15zB,GAAGA,GAAEy5zB,QACfz5zB,GAAEy5zB,OAAS,EACXz5zB,GAAEw5zB,SAAW,GAEJx5zB,GAAEw5zB,UAAY,IACvBx5zB,GAAEu5zB,YAAYv5zB,GAAEsqE,WAAwB,IAAXtqE,GAAEy5zB,OAC/Bz5zB,GAAEy5zB,SAAW,EACbz5zB,GAAEw5zB,UAAY,GAozBhByJ,CAASjj0B,IAwtDHkj0B,CAAUlj0B,IAv3LQ,IAy3LXm4W,KAEPuld,GAAiB19zB,GAAG,EAAG,GAAG,GA73LR,IAi4Ldm4W,KAEF2pd,GAAO9h0B,GAAEu2V,MAEW,IAAhBv2V,GAAEs/zB,YACJt/zB,GAAEs+zB,SAAW,EACbt+zB,GAAEq+zB,YAAc,EAChBr+zB,GAAE23E,OAAS,KAIjB4mvB,GAAc1N,IACS,IAAnBA,GAAKkB,WACP/xzB,UAAE0h0B,YAAa,EAt4LG,EA84LxB,OAr5LwB,IAq5LpBvpd,GA94LoB,EA+4LpBn4W,GAAEyzD,MAAQ,EA94LU,GAi5LT,IAAXzzD,GAAEyzD,MACJkvwB,GAAS3i0B,GAAgB,IAAb6wzB,GAAKF,OACjBgS,GAAS3i0B,GAAI6wzB,GAAKF,OAAS,EAAK,KAChCgS,GAAS3i0B,GAAI6wzB,GAAKF,OAAS,GAAM,KACjCgS,GAAS3i0B,GAAI6wzB,GAAKF,OAAS,GAAM,KACjCgS,GAAS3i0B,GAAmB,IAAhB6wzB,GAAK2D,UACjBmO,GAAS3i0B,GAAI6wzB,GAAK2D,UAAY,EAAK,KACnCmO,GAAS3i0B,GAAI6wzB,GAAK2D,UAAY,GAAM,KACpCmO,GAAS3i0B,GAAI6wzB,GAAK2D,UAAY,GAAM,OAIpCoO,GAAY5i0B,GAAG6wzB,GAAKF,QAAU,IAC9BiS,GAAY5i0B,GAAgB,MAAb6wzB,GAAKF,QAGtB4N,GAAc1N,IAIV7wzB,GAAEyzD,KAAO,IAAKzzD,GAAEyzD,MAAQzzD,GAAEyzD,MAET,IAAdzzD,GAAEsqE,QAx6Le,EACA,GAqiM1B,IAAIg0gB,GAAat/kB,OAAOwa,UAAUtV,SA0FlC,SACEjL,YAAYif,IACV/e,KAAK+e,QAAUs7C,EAAO,CACpB6nD,OArnMyB,EAsnMzBjjG,OAtmM0B,EAumM1B++yB,UAAW,MACX9C,WAAY,GACZ8O,SAAU,EACVzprB,SAnnM0B,EAonM1B9S,GAAI,IACH1uH,IAAW,IAEd,IAAIqiB,GAAMphC,KAAK+e,QAEXqiB,GAAIU,KAAQV,GAAI85xB,WAAa,EAC/B95xB,GAAI85xB,YAAc95xB,GAAI85xB,WAGf95xB,GAAI6oyB,MAAS7oyB,GAAI85xB,WAAa,GAAO95xB,GAAI85xB,WAAa,KAC7D95xB,GAAI85xB,YAAc,IAGpBl7zB,KAAKqqB,IAAS,EACdrqB,KAAKqkB,IAAS,GACdrkB,KAAKi+zB,OAAS,EACdj+zB,KAAK0M,OAAS,GAEd1M,KAAK03zB,KAAO,IAAIwG,GAChBl+zB,KAAK03zB,KAAKkB,UAAY,EAEtB,IAAIvxyB,GAhpBR,YAAsBqwyB,GAAMx1sB,GAAOjjG,GAAQi8yB,GAAY8O,GAAUzprB,IAC/D,IAAKm3qB,GACH,OAAOrB,EAET,IAAI/7vB,GAAO,EAiBX,IArhL6B,IAsgLzB4nD,KACFA,GAAQ,GAGV3T,GAAiB,GACfj0C,GAAO,EACP4gwB,IAAcA,IAGPA,GAAa,KACpB5gwB,GAAO,EACP4gwB,IAAc,IAIZ8O,GAAW,GAAKA,GAjvCF,GApxIY,IAqgLkB/qzB,IAC9Ci8yB,GAAa,GAAKA,GAAa,IAAMh5sB,GAAQ,GAAKA,GAAQ,GAC1Dq+B,GAAW,GAAKA,GAjhLY,EAkhL5B,OAAOl2H,GAAIqtyB,GAAMrB,GAIA,IAAf6E,KACFA,GAAa,GAIf,IAAIr0zB,GAAI,IAAIqj0B,GAEZxS,UAAKxtzB,MAAQrD,GACbA,GAAE6wzB,KAAOA,GAET7wzB,GAAEyzD,KAAOA,GACTzzD,GAAEwh0B,OAAS,KACXxh0B,GAAE2h0B,OAAStN,GACXr0zB,GAAE8+zB,OAAS,GAAK9+zB,GAAE2h0B,OAClB3h0B,GAAEi/zB,OAASj/zB,GAAE8+zB,OAAS,EAEtB9+zB,GAAE4h0B,UAAYuB,GAAW,EACzBnj0B,GAAE2/zB,UAAY,GAAK3/zB,GAAE4h0B,UACrB5h0B,GAAE+/zB,UAAY//zB,GAAE2/zB,UAAY,EAC5B3/zB,GAAE8/zB,eAAiB9/zB,GAAE4h0B,UAzvCL,EAyvC+B,GAzvC/B,GA2vChB5h0B,GAAEsO,OAAS0hzB,GAAgB,EAAXhwzB,GAAE8+zB,QAClB9+zB,GAAEu2V,KAAO05d,GAAMjwzB,GAAE2/zB,WACjB3/zB,GAAEoiP,KAAO6tkB,GAAMjwzB,GAAE8+zB,QAKjB9+zB,GAAEy8zB,YAAc,GAAM0G,GAAW,EAEjCnj0B,GAAEig0B,iBAAmC,EAAhBjg0B,GAAEy8zB,YAIvBz8zB,GAAEu5zB,YAAcvJ,GAAKhwzB,GAAEig0B,kBAIvBjg0B,GAAEk7zB,MAAQ,EAAIl7zB,GAAEy8zB,YAGhBz8zB,GAAEm7zB,MAAS,EAASn7zB,GAAEy8zB,YAEtBz8zB,GAAEq7G,MAAQA,GACVr7G,GAAE05I,SAAWA,GACb15I,GAAEoY,OAASA,GAEJkrzB,GAAazS,IAqkBL0S,CACXpq0B,KAAK03zB,KACLt2xB,GAAI8gF,MACJ9gF,GAAIniB,OACJmiB,GAAI85xB,WACJ95xB,GAAI4oyB,SACJ5oyB,GAAIm/G,UAGN,GAvqMsB,IAuqMlBl5H,GACF,MAAM,IAAI5Q,MAAM4N,GAAIgD,KAOtB,GAJI+Z,GAAInZ,QArqBZ,YAA0ByvyB,GAAMt6d,IACzBs6d,IAASA,GAAKxtzB,OACK,IAApBwtzB,GAAKxtzB,MAAMowD,OACfo9vB,GAAKxtzB,MAAMm+zB,OAASjre,IAmqBhBite,CAAiBrq0B,KAAK03zB,KAAMt2xB,GAAInZ,QAG9BmZ,GAAI+rjB,WAAY,CAClB,IAAI00K,GAaJ,GATEA,GAF4B,iBAAnBzguB,GAAI+rjB,WAENtqG,GAAWzhd,GAAI+rjB,YACuB,yBAApChI,GAAWvxjB,KAAKwN,GAAI+rjB,YACtB,IAAI7qkB,WAAW8e,GAAI+rjB,YAEnB/rjB,GAAI+rjB,WAGb9lkB,GAnPN,YAA8BqwyB,GAAMvqO,IAClC,IAEItmlB,GACA0b,GAAKzU,GACLwsD,GACAgwwB,GACAj/zB,GACAunB,GACA23yB,GARAxM,GAAa5wO,GAAWpnlB,OAiB5B,IAPK2xzB,KAAsBA,GAAKxtzB,OAOnB,KAFbowD,IADAzzD,GAAI6wzB,GAAKxtzB,OACAowD,OAEmB,IAATA,IAhpDJ,KAgpDkBzzD,GAAEwgB,QAA0BxgB,GAAEs/zB,UAC7D,OAAO9P,EAmCT,IA/Ba,IAAT/7vB,KAEFo9vB,GAAKF,MAAQiG,GAAQ/F,GAAKF,MAAOrqO,GAAY4wO,GAAY,IAG3Dl3zB,GAAEyzD,KAAO,EAGLyjwB,IAAcl3zB,GAAE8+zB,SACL,IAATrrwB,KAEFquwB,GAAO9h0B,GAAEu2V,MACTv2V,GAAEs+zB,SAAW,EACbt+zB,GAAEq+zB,YAAc,EAChBr+zB,GAAE23E,OAAS,GAIb+rvB,GAAU1T,GAAKhwzB,GAAE8+zB,QACjBlP,GAAS8T,GAASp9O,GAAY4wO,GAAal3zB,GAAE8+zB,OAAQ9+zB,GAAE8+zB,OAAQ,GAC/Dx4O,GAAao9O,GACbxM,GAAal3zB,GAAE8+zB,QAGjB2E,GAAQ5S,GAAKgB,SACbrtzB,GAAOqszB,GAAKe,QACZ7lyB,GAAQ8kyB,GAAK9kyB,MACb8kyB,GAAKgB,SAAWqF,GAChBrG,GAAKe,QAAU,EACff,GAAK9kyB,MAAQu6jB,GACb45O,GAAYlg0B,IACLA,GAAEs/zB,WA1rDO,GA0rDmB,CACjC5jzB,GAAM1b,GAAEs+zB,SACRr3zB,GAAIjH,GAAEs/zB,UAAaqB,EACnB,GAEE3g0B,GAAE6/zB,OAAU7/zB,GAAE6/zB,OAAS7/zB,GAAE8/zB,WAAc9/zB,GAAEsO,OAAOoN,GA/rDpC,EA+rDwD,IAAM1b,GAAE+/zB,UAE5E//zB,GAAEoiP,KAAK1mO,GAAM1b,GAAEi/zB,QAAUj/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OAElC7/zB,GAAEu2V,KAAKv2V,GAAE6/zB,OAASnkzB,GAClBA,aACSzU,IACXjH,GAAEs+zB,SAAW5izB,GACb1b,GAAEs/zB,UAAYqB,EACdT,GAAYlg0B,IAEdA,UAAEs+zB,UAAYt+zB,GAAEs/zB,UAChBt/zB,GAAEq+zB,YAAcr+zB,GAAEs+zB,SAClBt+zB,GAAE23E,OAAS33E,GAAEs/zB,UACbt/zB,GAAEs/zB,UAAY,EACdt/zB,GAAEug0B,aAAevg0B,GAAE4+zB,YAAc+B,EACjC3g0B,GAAE8g0B,gBAAkB,EACpBjQ,GAAKe,QAAUptzB,GACfqszB,GAAK9kyB,MAAQA,GACb8kyB,GAAKgB,SAAW4R,GAChBzj0B,GAAEyzD,KAAOA,GAvhMe,EA2rMXkwwB,CAAqBxq0B,KAAK03zB,KAAM71D,IA3rMrB,IA6rMhBx6uB,GACF,MAAM,IAAI5Q,MAAM4N,GAAIgD,KAGtBrnB,KAAKyq0B,WAAY,GAiCrBhl0B,KAAKqN,GAAMgU,IACT,IAEIO,GAAQk3yB,GAn8LO/7U,GAi8Lfk1U,GAAO13zB,KAAK03zB,KACZsG,GAAYh+zB,KAAK+e,QAAQi/yB,UAG7B,GAAIh+zB,KAAKi+zB,MAAS,OAAO,EAEzBM,GAASz3yB,OAAWA,GAAQA,IAAkB,IAATA,GAhvMf,EAJA,EAyvMpB4wyB,GAAK9kyB,MAFa,iBAAT9f,GAEI+ve,GAAW/ve,IACW,yBAA9B2mf,GAAe7le,KAAK9gB,IACZ,IAAIwP,WAAWxP,IAEfA,GAGf4kzB,GAAKe,QAAU,EACff,GAAKgB,SAAWhB,GAAK9kyB,MAAM7sB,OAE3B,EAAG,CAQD,GAPuB,IAAnB2xzB,GAAKkB,YACPlB,GAAKjlyB,OAASokyB,GAAKmH,IACnBtG,GAAKiB,SAAW,EAChBjB,GAAKkB,UAAYoF,IA3vMC,KA6vMpB32yB,GAASqzuB,GAAQg9D,GAAM6G,MA9vMH,IAgwMWl3yB,GAC7B,YAAKu3yB,MAAMv3yB,IACXrnB,KAAKi+zB,OAAQ,GACN,GAEc,IAAnBvG,GAAKkB,WAAsC,IAAlBlB,GAAKgB,WA5wMd,IA4wMiC6F,IA9wMjC,IA8wMuDA,MAEvEv+zB,KAAK8nf,OADiB,WAApB9nf,KAAK+e,QAAQ0uH,GAn+LhB8prB,GADc/0U,GAq+La80U,EAAUI,GAAKjlyB,OAAQilyB,GAAKiB,UAp+LnCn2U,GAAIz8e,QAs+LXuxzB,EAAUI,GAAKjlyB,OAAQilyB,GAAKiB,kBAGpCjB,GAAKgB,SAAW,GAAwB,IAAnBhB,GAAKkB,YA3wMd,IA2wMkCvxyB,IAGxD,OAtxMsB,IAsxMlBk3yB,IACFl3yB,GArWN,YAAoBqwyB,IAClB,IAAIrwyB,GAEJ,OAAKqwyB,IAAsBA,GAAKxtzB,MApmDjB,MAwmDfmd,GAASqwyB,GAAKxtzB,MAAMmd,SAvmDJ,KAymDdA,IAxmDa,KAymDbA,IAxmDgB,KAymDhBA,IAxmDa,MAymDbA,IAxmDa,MAymDbA,IAxmDe,MAymDfA,GAEOgD,GAAIqtyB,GAAMrB,IAGnBqB,GAAKxtzB,MAAQ,KA/mDE,MAinDRmd,GAAwBgD,GAAIqtyB,IA37LZ,GALC,GA+6LfrB,EAiWIqU,CAAW1q0B,KAAK03zB,MACzB13zB,KAAK4+zB,MAAMv3yB,IACXrnB,KAAKi+zB,OAAQ,EAlxMO,IAmxMb52yB,KA5xMa,IAgyMlBk3yB,KACFv+zB,KAAK4+zB,MAxxMe,GAyxMpBlH,GAAKkB,UAAY,IACV,GAgBX9wU,OAAOtkU,IACLxjL,KAAK0M,OAAOjH,KAAK+9K,IAcnBo7oB,MAAMv3yB,IAzzMkB,IA2zMlBA,KAEArnB,KAAKuS,OADiB,WAApBvS,KAAK+e,QAAQ0uH,GACDztI,KAAK0M,OAAO+a,KAAK,IAEjBmvyB,GAAc52zB,KAAK0M,SAGrC1M,KAAK0M,OAAS,GACd1M,KAAKqqB,IAAMhD,GACXrnB,KAAKqkB,IAAMrkB,KAAK03zB,KAAKrzyB,KAuCzB,YAAmBuO,GAAO7T,IACxB,IAAI4rzB,GAAW,IAAI/iV,GAAQ7oe,IAK3B,GAHA4rzB,GAASll0B,KAAKmtB,IAAO,GAGjB+3yB,GAAStgzB,IAAO,MAAMsgzB,GAAStmzB,KAAOA,GAAIsmzB,GAAStgzB,KAEvD,OAAOsgzB,GAASp4zB,wDCp5MlB,MAAMq4zB,EAAQ,CAACz4yB,EAAGD,IAAOjpB,GAAMipB,EAAEC,EAAElpB,IAE7B4c,EAAO,CAACwhC,EAAI15C,EAAOkC,IACrBw3C,EAAG7xC,kBAAoB6xC,EAAG7xC,iBAAiB7H,EAAOkC,GAEhDskY,EAAS,CAAC9sV,EAAI15C,EAAOkC,IACvBw3C,GAAMA,EAAGnqB,qBAAuBmqB,EAAGnqB,oBAAoBvvB,EAAOkC,GAE5DgvZ,EAAO,OAEP38W,EAAiBj5C,GAAKA,EAAEi5C,iBAExB2oxB,EAAc,QAMpB,WAAwB5h0B,GACpB,OAAIA,EAAEnB,KAAKyZ,MAAMspzB,GACN,CACHr4b,MAAOvpY,EAAEopjB,eAAe,GAAG7/K,MAC3BC,MAAOxpY,EAAEopjB,eAAe,GAAG5/K,MAC3Bt5C,QAASlwV,EAAEopjB,eAAe,GAAGl5N,QAC7BE,QAASpwV,EAAEopjB,eAAe,GAAGh5N,QAC7BvxV,KAAMmB,EAAEnB,KACRutH,cAAepsH,EACf89b,SAAS,GAIV,CACHv0D,MAAOvpY,EAAEupY,MACTC,MAAOxpY,EAAEwpY,MACTt5C,QAASlwV,EAAEkwV,QACXE,QAASpwV,EAAEowV,QACX/5G,QAASr2O,EAAEq2O,QACXl6F,QAASn8I,EAAEm8I,QACXt9I,KAAMmB,EAAEnB,KACR89D,QAAS38D,EAAE28D,QACX+qW,SAAU1na,EAAE0na,SACZ9zC,OAAQ5zX,EAAE4zX,OACVxnQ,cAAepsH,GA8KvB,QA1KA,MAAO,QAAgBoY,6BAEf,MAA0B,oBAAXlM,QAA2BA,OAAO8ltB,aAGjDt5sB,eACA,OAAO3hB,KAAK0kW,SACV1kW,KAAK0kW,SAAS23L,cACd16gB,SAGN7hB,aAAcizY,QAAQ8rB,EAAMp5V,OAAOo5V,EAAM78Y,UAAU68Y,EAAMisa,aAAY,IACjE9q0B,KAAK+q0B,cAAgBH,EAAMI,EAAgBj4b,GAC3C/yY,KAAKir0B,aAAeL,EAAMI,EAAgBvlwB,GAC1CzlE,KAAKkr0B,gBAAkBN,EAAMI,EAAgBhpzB,GAC7ChiB,KAAKmr0B,cAAe,EACpBnr0B,KAAKor0B,WAAaN,EAElB9q0B,KAAKqr0B,YAAepi0B,IACS,IAArBA,EAAE+qY,QAAQjuY,QACV/F,KAAK+q0B,cAAc9h0B,IAI3BjJ,KAAKsr0B,WAAcri0B,IACU,IAArBA,EAAE+qY,QAAQjuY,QACV/F,KAAKir0B,aAAahi0B,IAI1BjJ,KAAKur0B,UAAati0B,IAGW,IAArBA,EAAE+qY,QAAQjuY,QAA4C,IAA5BkD,EAAEopjB,eAAetsjB,SAC3C/F,KAAKkr0B,gBAAgBji0B,GACrBjJ,KAAKmr0B,cAAe,EACpBj5zB,WAAWlS,KAAKwr0B,cAlEH,OAsErBxr0B,KAAKwr0B,cAAgB,KACjBxr0B,KAAKmr0B,cAAe,GAGxBnr0B,KAAKyr0B,WAAcxi0B,IACf,MAAQkid,SAAUlid,EAEbkid,GAASA,EAAQ,GAAMnrd,KAAKmr0B,eAIjCtlzB,EAAK7lB,KAAK2hB,SAAU,YAAa3hB,KAAK4xrB,YACtC/rqB,EAAK7lB,KAAK2hB,SAAU,UAAW3hB,KAAK0r0B,UACpC1r0B,KAAK+q0B,cAAc9h0B,KAGvBjJ,KAAK4xrB,WAAc3orB,IACfjJ,KAAKir0B,aAAahi0B,IAGtBjJ,KAAK0r0B,SAAYzi0B,IACbkrY,EAAOn0Y,KAAK2hB,SAAU,YAAa3hB,KAAK4xrB,YACxCz9S,EAAOn0Y,KAAK2hB,SAAU,UAAW3hB,KAAK0r0B,UACtC1r0B,KAAKkr0B,gBAAgBji0B,IAGzBjJ,KAAK2r0B,aAAgB1i0B,IACbA,EAAE2i0B,WAA0B,IAAb3i0B,EAAE4pX,SACjBhtW,EAAK7lB,KAAK2hB,SAAU,cAAe3hB,KAAKsmJ,cACxCzgI,EAAK7lB,KAAK2hB,SAAU,YAAa3hB,KAAK6r0B,YACtChmzB,EAAK7lB,KAAK2hB,SAAU,gBAAiB3hB,KAAK6r0B,YAC1ChmzB,EAAK7lB,KAAK2hB,SAAU,cAAeugC,GAEnCliD,KAAK+q0B,cAAc9h0B,KAI3BjJ,KAAKsmJ,aAAgBr9I,IACbA,EAAE2i0B,WACF5r0B,KAAKir0B,aAAahi0B,IAI1BjJ,KAAK6r0B,WAAc5i0B,IACXA,EAAE2i0B,YACFz3b,EAAOn0Y,KAAK2hB,SAAU,cAAe3hB,KAAKsmJ,cAC1C6tP,EAAOn0Y,KAAK2hB,SAAU,YAAa3hB,KAAK6r0B,YACxC13b,EAAOn0Y,KAAK2hB,SAAU,gBAAiB3hB,KAAK6r0B,YAC5C13b,EAAOn0Y,KAAK2hB,SAAU,cAAeugC,GAErCliD,KAAKkr0B,gBAAgBji0B,KAKjCmgZ,OAAO10Y,GACCA,IAAY1U,KAAK0kW,WAIjB1kW,KAAK0kW,UACL1kW,KAAK8r0B,qBAGT9r0B,KAAK0kW,SAAWhwV,EAChB1U,KAAK+r0B,kBAGTA,iBACI,MAAMr3zB,EAAU1U,KAAK0kW,SAEjB1kW,KAAKgs0B,eACLnmzB,EAAKnR,EAAS,cAAe1U,KAAK2r0B,eAItC9lzB,EAAKnR,EAAS,YAAa1U,KAAKyr0B,YAE3Bzr0B,KAAKor0B,aACNvlzB,EAAKnR,EAAS,aAAc1U,KAAKqr0B,aACjCxlzB,EAAKnR,EAAS,YAAa1U,KAAKsr0B,YAChCzlzB,EAAKnR,EAAS,WAAY1U,KAAKur0B,aAIvCO,qBACI,MAAMp3zB,EAAU1U,KAAK0kW,SAErB,GAAI1kW,KAAKgs0B,eAML,OALA73b,EAAOz/X,EAAS,cAAe1U,KAAK2r0B,cACpCx3b,EAAOn0Y,KAAK2hB,SAAU,cAAe3hB,KAAKsmJ,cAC1C6tP,EAAOn0Y,KAAK2hB,SAAU,YAAa3hB,KAAK6r0B,YACxC13b,EAAOn0Y,KAAK2hB,SAAU,cAAeugC,QACrCiyV,EAAOn0Y,KAAK2hB,SAAU,gBAAiB3hB,KAAK6r0B,YAIhD13b,EAAOz/X,EAAS,YAAa1U,KAAKyr0B,YAE7Bzr0B,KAAKor0B,aACNj3b,EAAOz/X,EAAS,aAAc1U,KAAKqr0B,aACnCl3b,EAAOz/X,EAAS,YAAa1U,KAAKsr0B,YAClCn3b,EAAOz/X,EAAS,WAAY1U,KAAKur0B,YAIzCS,eACI,OAAQhs0B,KAAKor0B,YAAcjib,EAAU8ib,sBAGzCvltB,QAASqsR,QAAQ8rB,EAAMp5V,OAAOo5V,EAAM78Y,UAAU68Y,EAAMisa,aAAY,IAC5D9q0B,KAAK+q0B,cAAgBH,EAAMI,EAAgBj4b,GAC3C/yY,KAAKir0B,aAAeL,EAAMI,EAAgBvlwB,GAC1CzlE,KAAKkr0B,gBAAkBN,EAAMI,EAAgBhpzB,GAC7ChiB,KAAKor0B,WAAaN,EAGtBrlgB,UACIzlU,KAAK8r0B,qBACL9r0B,KAAK0kW,SAAW,MAQxBykD,SAAUl8K,QAAUk8K,EAvKPA,GAAb,iCC9Ce,WAAkBxlZ,IAC7B,MAAwB,iBAAVA,wJCElB,MCDM0+a,EAAe,eAErB,QACIvib,aAAckF,QAAMwS,aAChB,IAAKxS,KAASwS,GACV,MAAM,IAAIf,MAAM,yDAGpBzW,KAAKgF,KAAOA,GACZhF,KAAKwX,QAAUA,GAGnB+skB,iBAAiBl+kB,IACb,MAAM6l0B,GAAgBrtX,EAAQx4c,IAExB8l0B,GAAmBns0B,KAAKwX,QAAQ+T,QAAQ82Z,EAAc,SAAS9ga,GAAOqC,IACxE,OAAOsozB,GAActo0B,SAASggB,GAAO,OAGzC,MAAQ,GAAE5jB,KAAKgF,SAASmn0B,KAG5B7nzB,SAASje,IACL,OAAO,IAAIoQ,MAAMzW,KAAKuklB,cAAcl+kB,MAI5C,MAAMw4c,EAAU,SAASxwc,IACrB,OAAOA,GAAI2L,OAAO,CAACmY,GAAGD,KAAMC,GAAEwhB,OAAOzhB,IAAI,KAYvC8Y,GATwBA,GD9Bf,CACXm5iB,SAAY,gCACZN,WAAc,iFACduoP,uBAA0B,wEAC1BroP,iBAAoB,oCACpBD,kBAAqB,uJACrBI,UAAa,iFACbG,WAAc,oFACdJ,WAAc,kJACdG,gBAAmB,0HACnBJ,iBAAoB,yFC0Bbn+kB,OAAOrC,KAAKwnC,IAAQhxB,OALT,SAASivO,GAAMjkP,IAC7BikP,UAAKjkP,IAAQ,IAAIqn0B,EAAU,CAAErn0B,QAAMwS,QAASwzB,GAAOhmC,MAC5CikP,IAGkC,KAGlCqjlB,IATethyB,GCLvB,MAAMuhyB,EC5BO,CAChB9upB,GAAI,CACAz4K,KAAM,KACNg7e,SAAU,CACNp7d,QAAS,CACL4nzB,QAAS,qBACTC,aAAc,MAElBz8xB,SAAU,MAEdi2iB,UAAW,KACX0E,QAAS,CACLjzK,QAAS,CACL94T,QAAS,IACTl2E,MAAO,IACPZ,KAAM,IACN8ijB,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbC,uBAAwB,OACxBC,SAAU,SACVC,SAAU,SACVC,IAAK,MACLC,cAAe,KAEnBxse,QAAS,CACLsne,SAAU,CACN,KAEJmF,UAAW,CACP,IAGRC,WAAY,CACRpF,SAAU,CACN,OAEJmF,UAAW,IAEfh3iB,QAAS,CACL6xiB,SAAU,CACN,MAEJmF,UAAW,CACP,IAGRE,SAAU,CACNrF,SAAU,CACN,MAEJmF,UAAW,CACP,GAEJ,wBAAyB,MACzB,0BAA2B,OAE/BqhP,WAAY,CACRC,IAAK,CACDC,YAAa,gBACb,wBAAyB,gBACzB,0BAA2B,iBAC3B7zZ,OAAQ,OAEZ8zZ,IAAK,CACDD,YAAa,OACb,wBAAyB,OACzB,0BAA2B,QAC3B7zZ,OAAQ,SACR,oBAAqB,UAEzB+zZ,IAAK,CACDF,YAAa,YACb,wBAAyB,YACzB,0BAA2B,aAC3B7zZ,OAAQ,IACR,oBAAqB,MAG7Bg0Z,eAAgB,MAChBvhP,WAAY,CACRtF,SAAU,CACN,KACA,QAEJmF,UAAW,CACP,KAIZh7iB,SAAU,CACN45iB,UAAW,SACXC,cAAe,MACfhE,SAAU,CACN16kB,EAAG,QACH26kB,EAAG,kBACHtpjB,EAAG,QACHs4N,EAAG,SACHrhM,EAAG,QACHhuD,EAAG,SACHsglB,EAAG,4BACH52hB,EAAG,eACH45F,EAAG,kBACHh7G,EAAG,SACHi4iB,EAAG,YACHx/kB,EAAG,gCACHgmD,EAAG,kCAEPy5hB,gBAAiB,CACbpvkB,KAAM,eACNqvkB,KAAM,eACN5tB,OAAQ,WACR6tB,MAAO,WACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACNp7kB,EAAG,IACHysa,EAAG,MACH4uK,KAAM,WACNC,MAAO,cACPC,GAAI,MACJC,IAAK,WACLC,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,MACJC,MAAO,UACPC,OAAQ,aACRC,QAAS,gBACT9vX,EAAG,MACHnhM,EAAG,KACHoxjB,GAAI,SACJC,GAAI,QACJC,IAAK,YACLC,IAAK,WACLC,KAAM,cACNC,KAAM,aACNC,IAAK,WACLC,IAAK,UACL9yV,EAAG,IACH+yV,GAAI,MACJC,IAAK,SACLC,IAAK,MACLC,KAAM,QACNC,MAAO,WACPC,MAAO,SACP,kBAAmB,qBACnB,oBAAqB,qBACrB1rkB,GAAI,QACJi3C,EAAG,IACH20hB,GAAI,MACJC,IAAK,QACLC,KAAM,WACNC,KAAM,QACNC,MAAO,WACPC,OAAQ,cACRC,MAAO,SACPG,KAAM,QACNC,MAAO,SACP,eAAgB,kBAChB,iBAAkB,oBAG1BC,YAAa,CACTlykB,KAAM,iBACNqvkB,KAAM,cACN5tB,OAAQ,YACR6tB,MAAO,UAEX3xM,YAAa,CACT39X,KAAM,kBACNqvkB,KAAM,YACN5tB,OAAQ,WACR6tB,MAAO,UAEXnna,KAAM,CACFjkK,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ+C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ9C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ+C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZv0M,OAAQ,CACJ55X,OAAQ,CACJiukB,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OAC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R,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAC1B,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACtF,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACtF,OAAU,IAAM,OAAU,IAC1B,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAA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KAAK7lB,MAC1CmV,OAAOK,iBAAiBskG,WAAkB95G,KAAKk+6B,eAAe,SA/B9Dl+6B,KAAKs76B,YACLr05B,aAAajnB,KAAKm+6B,0BAClBn+6B,KAAKu76B,qBAAqBx16B,OAAS,EACnC/F,KAAKs76B,UAAU335B,UACf3jB,KAAKs76B,UAAY,MAEjBt76B,KAAKo66B,qBACLv5Z,qBAAqB7ghB,KAAKo66B,oBAC1Bp66B,KAAKo66B,wBAAqBj16B,GA0BlCnF,KAAKq7G,cAOTm+zB,GAAan55B,UAAUq75B,kBAAoB,WACvC176B,KAAK28G,UAKT68zB,GAAan55B,UAAU+95B,2BAA6B,WAChDp+6B,KAAK28G,UAKT68zB,GAAan55B,UAAUu75B,mBAAqB,WACpC576B,KAAK266B,8BACLj/yB,MAAc17H,KAAK266B,0BACnB366B,KAAK266B,yBAA2B,MAEhC366B,KAAK466B,4BACLl/yB,MAAc17H,KAAK466B,wBACnB566B,KAAK466B,uBAAyB,MAElC,IAAIv45B,GAAOriB,KAAK6gH,UACZx+F,KACAriB,KAAKq+6B,sBACLr+6B,KAAK266B,4BAA2B9+zB,MAAOx5F,GAAMwx5B,mBAAgC7z6B,KAAKo+6B,2BAA4Bp+6B,MAC9GA,KAAK466B,wBAAyB/+zB,QAAOx5F,GAAMy3F,WAAkB95G,KAAKo+6B,2BAA4Bp+6B,MAC9FqiB,GAAK475B,mBAAmB,IAE5Bj+6B,KAAK28G,UAKT68zB,GAAan55B,UAAUs75B,yBAA2B,WAC1C376B,KAAK666B,kCACL766B,KAAK666B,gCAAgCj06B,QAAQ80H,MAC7C17H,KAAK666B,gCAAkC,MAE3C,IAAI3yxB,GAAaloJ,KAAKo86B,gBAClBl0xB,KACAloJ,KAAK666B,gCAAkC,IACnCh/zB,MAAOqsC,GAAY2rxB,mBAAgC7z6B,KAAK28G,OAAQ38G,SAChE67G,MAAOqsC,GAAYpuC,WAAkB95G,KAAK28G,OAAQ38G,QAG1DA,KAAK28G,UAKT68zB,GAAan55B,UAAUg/G,WAAa,WAChC,QAASr/H,KAAKy66B,aAMlBjB,GAAan55B,UAAUgpG,WAAa,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GAAcC,GAAiBC,GAAgBC,IAK1Fz79B,KAAK079B,YAAcl5B,GAKnBxi8B,KAAK279B,YAAcN,GAEnB,IAAIO,GAAoB,GACpBC,IAAe/wO,QAAa9qvB,KAAK279B,YAAa379B,KAAK079B,aAMvD179B,KAAK879B,cAAgB,SAAU778B,IAC3B,IAAIpN,GAAMoN,GAAE,GAAK,IAAMA,GAAE,GACzB,OAAK278B,GAAkB/o9B,MACnB+o9B,GAAkB/o9B,IAAOgp9B,GAAa578B,KAEnC278B,GAAkB/o9B,KAM7B7S,KAAK+79B,iBAAmBR,GAKxBv79B,KAAKg89B,uBAAyBR,GAAiBA,GAK/Cx79B,KAAKi89B,WAAa,GAMlBj89B,KAAKk89B,iBAAkB,EAKvBl89B,KAAKm89B,kBACDn89B,KAAK079B,YAAYhpD,cACX6oD,MACAv79B,KAAK079B,YAAYz62B,cACnB/sC,QAASqn5B,MAAoBrn5B,QAASl0E,KAAK079B,YAAYz62B,aAK/DjhH,KAAKo89B,kBAAoBp89B,KAAK079B,YAAYz62B,aACpC/sC,QAASl0E,KAAK079B,YAAYz62B,aAC1B,KAKNjhH,KAAKq89B,kBAAoBr89B,KAAK279B,YAAY162B,aACpC/sC,QAASl0E,KAAK279B,YAAY162B,aAC1B,KACN,IAAIq72B,MAAqBxrrB,MAAWwqrB,IAChCiB,MAAsBl3C,MAAYi2C,IAClCkB,MAAyBt/B,MAAeo+B,IACxCmB,IAAwBr3C,QAAck2C,IACtCoB,GAAgB189B,KAAK879B,cAAcQ,IACnCK,GAAiB389B,KAAK879B,cAAcS,IACpCK,GAAoB589B,KAAK879B,cAAcU,IACvCK,GAAmB789B,KAAK879B,cAAcW,IAWtCK,GAhHU,IAiHTrB,GACKvu9B,KAAKsB,IAAI,EAAGtB,KAAKqB,MAAKom8B,WAAK9vtB,MAAQy2uB,KAChCG,GACGA,GACA,IACA,QACN,GAEV,GADAz79B,KAAK+89B,SAAST,GAAoBC,GAAqBC,GAAwBC,GAAuBC,GAAeC,GAAgBC,GAAmBC,GAAkBC,IACtK989B,KAAKk89B,gBAAiB,CACtB,IAAIc,GAAczq2B,IAClBvyH,KAAKi89B,WAAWr19B,QAAQ,SAAUq29B,GAAUtu9B,GAAGN,IAC3C2u9B,GAAc9v9B,KAAKulC,IAAIuq7B,GAAaC,GAASti7B,OAAO,GAAG,GAAIsi7B,GAASti7B,OAAO,GAAG,GAAIsi7B,GAASti7B,OAAO,GAAG,MAIzG36C,KAAKi89B,WAAWr19B,QAAQ,SAAUq29B,IAC9B,GAAI/v9B,KAAKsB,IAAIyu9B,GAASti7B,OAAO,GAAG,GAAIsi7B,GAASti7B,OAAO,GAAG,GAAIsi7B,GAASti7B,OAAO,GAAG,IAC1Eqi7B,GACAh99B,KAAKo89B,kBAAoB,EAAG,CAC5B,IAAIc,GAAc,CACd,CAACD,GAASti7B,OAAO,GAAG,GAAIsi7B,GAASti7B,OAAO,GAAG,IAC3C,CAACsi7B,GAASti7B,OAAO,GAAG,GAAIsi7B,GAASti7B,OAAO,GAAG,IAC3C,CAACsi7B,GAASti7B,OAAO,GAAG,GAAIsi7B,GAASti7B,OAAO,GAAG,KAE3Cui7B,GAAY,GAAG,GAAKF,GAAch99B,KAAKo89B,kBAAoB,IAC3Dc,GAAY,GAAG,IAAMl99B,KAAKo89B,mBAE1Bc,GAAY,GAAG,GAAKF,GAAch99B,KAAKo89B,kBAAoB,IAC3Dc,GAAY,GAAG,IAAMl99B,KAAKo89B,mBAE1Bc,GAAY,GAAG,GAAKF,GAAch99B,KAAKo89B,kBAAoB,IAC3Dc,GAAY,GAAG,IAAMl99B,KAAKo89B,mBAK9B,IAAItk4B,GAAO5qF,KAAKulC,IAAIyq7B,GAAY,GAAG,GAAIA,GAAY,GAAG,GAAIA,GAAY,GAAG,IAC9Dhw9B,KAAKsB,IAAI0u9B,GAAY,GAAG,GAAIA,GAAY,GAAG,GAAIA,GAAY,GAAG,IAC9Dpl4B,GAAO93F,KAAKo89B,kBAAoB,IACvCa,GAASti7B,OAASui7B,MAG5Br38B,KAAK7lB,OAEX479B,GAAoB,GAYxBR,UAAc/68B,UAAU888B,aAAe,SAAUhr8B,GAAGD,GAAGjS,GAAGm98B,GAAMC,GAAMC,IAClEt99B,KAAKi89B,WAAWx29B,KAAK,CACjBk1C,OAAQ,CAACyi7B,GAAMC,GAAMC,IACrB509B,OAAQ,CAACypB,GAAGD,GAAGjS,OAmBvBm78B,GAAc/68B,UAAU088B,SAAW,SAAU5q8B,GAAGD,GAAGjS,GAAGzU,GAAG4x9B,GAAMC,GAAMC,GAAMC,GAAMT,IAC7E,IAAIU,IAAmBth2B,QAAe,CAACkh2B,GAAMC,GAAMC,GAAMC,KACrDE,GAAkBz99B,KAAKo89B,mBACrBlo5B,QAASsp5B,IAAoBx99B,KAAKo89B,kBAClC,KACFsB,GAA0C199B,KAAKo89B,kBAG/CuB,GAAS399B,KAAK079B,YAAYhpD,YAC1B+qD,GAAkB,IAClBA,GAAkB,EAClBG,IAAmB,EACvB,GAAId,GAAiB,EAAG,CACpB,GAAI989B,KAAK279B,YAAYpqC,YAAcvx7B,KAAKq89B,kBAAmB,CACvD,IAAIwB,IAAmB3h2B,QAAe,CAAC/pG,GAAGD,GAAGjS,GAAGzU,KAEhDoy9B,IADsB1p5B,QAAS2p5B,IAAoB799B,KAAKq89B,kBArM/C,KAuMmCuB,IAE3CD,IAAU399B,KAAK079B,YAAYnqC,YAAcksC,KAC1CG,GACIH,GA3MK,KA2MmCG,IAGpD,MAAKA,IAAoB599B,KAAK+79B,kBACtBxt6B,SAASiv6B,GAAiB,KAC1Bjv6B,SAASiv6B,GAAiB,KAC1Bjv6B,SAASiv6B,GAAiB,KAC1Bjv6B,SAASiv6B,GAAiB,OACrBxi5B,QAAWwi5B,GAAkBx99B,KAAK+79B,kBAM/C,KAAI+B,GAAc,EAClB,KAAKF,IACIrv6B,SAAS6u6B,GAAK,KACd7u6B,SAAS6u6B,GAAK,KACd7u6B,SAAS8u6B,GAAK,KACd9u6B,SAAS8u6B,GAAK,KACd9u6B,SAAS+u6B,GAAK,KACd/u6B,SAAS+u6B,GAAK,KACd/u6B,SAASgv6B,GAAK,KACdhv6B,SAASgv6B,GAAK,KACf,GAAIT,GAAiB,EACjBc,IAAmB,UAUA,IALnBE,IACMvv6B,SAAS6u6B,GAAK,KAAQ7u6B,SAAS6u6B,GAAK,IAAU,EAAJ,IACtC7u6B,SAAS8u6B,GAAK,KAAQ9u6B,SAAS8u6B,GAAK,IAAU,EAAJ,IAC1C9u6B,SAAS+u6B,GAAK,KAAQ/u6B,SAAS+u6B,GAAK,IAAU,EAAJ,IAC1C/u6B,SAASgv6B,GAAK,KAAQhv6B,SAASgv6B,GAAK,IAAU,EAAJ,KAEjC,GAAfO,IACe,GAAfA,IACe,GAAfA,GACA,OAKhB,GAAIhB,GAAiB,EAAG,CACpB,IAAKc,GAAkB,CACnB,IACIG,GAAY/99B,KAAK879B,cADR,EAAE3p8B,GAAE,GAAKlS,GAAE,IAAM,GAAIkS,GAAE,GAAKlS,GAAE,IAAM,IAE7Cm0E,QAAK,EAKLA,GAJAup4B,OACuBppC,MAAO6oC,GAAK,GAAIM,KACnCnpC,QAAO+oC,GAAK,GAAII,KAChB,GACmBnpC,QAAOwpC,GAAU,GAAIL,KAGtCN,GAAK,GAAKE,GAAK,IAAM,EAAIS,GAAU,GAE7C,IAAI1p4B,IAAM+o4B,GAAK,GAAKE,GAAK,IAAM,EAAIS,GAAU,GAE7CH,GAD4Bxp4B,GAAKA,GAAKC,GAAKA,GACAr0F,KAAKg89B,uBAEpD,GAAI4B,GAAkB,CAClB,GAAI1w9B,KAAKiN,IAAIgY,GAAE,GAAKlS,GAAE,KAAO/S,KAAKiN,IAAIgY,GAAE,GAAKlS,GAAE,IAAK,CAEhD,IAAIkvsB,GAAK,EAAEj9rB,GAAE,GAAKjS,GAAE,IAAM,GAAIiS,GAAE,GAAKjS,GAAE,IAAM,GACzC+98B,GAAQh+9B,KAAK879B,cAAc3sQ,IAC3B8uQ,GAAK,EAAEzy9B,GAAE,GAAK2mB,GAAE,IAAM,GAAI3mB,GAAE,GAAK2mB,GAAE,IAAM,GACzC+r8B,GAAQl+9B,KAAK879B,cAAcmC,IAC/Bj+9B,KAAK+89B,SAAS5q8B,GAAGD,GAAGi9rB,GAAI8uQ,GAAIb,GAAMC,GAAMW,GAAOE,GAAOpB,GAAiB,GACvE989B,KAAK+89B,SAASkB,GAAI9uQ,GAAIlvsB,GAAGzU,GAAG0y9B,GAAOF,GAAOV,GAAMC,GAAMT,GAAiB,OAEtE,CAED,IAAIqB,GAAK,EAAEhs8B,GAAE,GAAKD,GAAE,IAAM,GAAIC,GAAE,GAAKD,GAAE,IAAM,GACzCks8B,GAAQp+9B,KAAK879B,cAAcqC,IAC3B/0c,GAAK,EAAEnpgB,GAAE,GAAKzU,GAAE,IAAM,GAAIyU,GAAE,GAAKzU,GAAE,IAAM,GACzC6y9B,GAAQr+9B,KAAK879B,cAAc1yc,IAC/BpphB,KAAK+89B,SAAS5q8B,GAAGgs8B,GAAI/0c,GAAI59gB,GAAG4x9B,GAAMgB,GAAOC,GAAOd,GAAMT,GAAiB,GACvE989B,KAAK+89B,SAASoB,GAAIjs8B,GAAGjS,GAAGmpgB,GAAIg1c,GAAOf,GAAMC,GAAMe,GAAOvB,GAAiB,GAE3E,QAGR,GAAIa,GAAQ,CACR,IAAK399B,KAAKm89B,kBACN,OAEJn89B,KAAKk89B,iBAAkB,EAMA,IAAR,GAAd4B,KACD999B,KAAKm99B,aAAahr8B,GAAGlS,GAAGzU,GAAG4x9B,GAAME,GAAMC,IAEhB,IAAR,GAAdO,KACD999B,KAAKm99B,aAAahr8B,GAAGlS,GAAGiS,GAAGkr8B,GAAME,GAAMD,IAEvCS,KAE2B,IAAR,GAAdA,KACD999B,KAAKm99B,aAAajr8B,GAAG1mB,GAAG2mB,GAAGkr8B,GAAME,GAAMH,IAEhB,IAAR,EAAdU,KACD999B,KAAKm99B,aAAajr8B,GAAG1mB,GAAGyU,GAAGo98B,GAAME,GAAMD,OASnDlC,GAAc/68B,UAAUi+8B,sBAAwB,WAC5C,IAAIlu2B,MAASvwC,QACb,YAAKo84B,WAAWr19B,QAAQ,SAAUq29B,GAAUtu9B,GAAGN,IAC3C,IAAI8rC,GAAM8i7B,GAASti7B,QACnB8h5B,QAAiBrs0B,GAAQj2E,GAAI,KAC7Bsi5B,QAAiBrs0B,GAAQj2E,GAAI,KAC7Bsi5B,QAAiBrs0B,GAAQj2E,GAAI,MAE1Bi2E,IAKXgr2B,GAAc/68B,UAAUk+8B,aAAe,WACnC,OAAOv+9B,KAAKi89B,YAETb,GAxUwB,GA0UnC,QAAeA,ECrWR,ICEHoD,EDGOC,EAA2B,CAClC9L,uBAAuB,EACvB+L,yBAAyB,cCM7B,WAA0Bjz9B,GAAKkz9B,GAAI5n5B,GAAI6n5B,GAAI5n5B,IACvCvrE,GAAI41O,YACJ51O,GAAIg2O,OAAO,EAAG,GACdh2O,GAAIi2O,OAAOi9uB,GAAI5n5B,IACftrE,GAAIi2O,OAAOk9uB,GAAI5n5B,IACfvrE,GAAIg6tB,YACJh6tB,GAAIy6f,OACJz6f,GAAIgyY,OACJhyY,GAAI4n9B,SAAS,EAAG,EAAGnm9B,KAAKsB,IAAImw9B,GAAIC,IAAM,EAAG1x9B,KAAKsB,IAAIuoE,GAAIC,KACtDvrE,GAAI+xJ,UAUR,WAAuC1qJ,GAAMsf,IAEzC,OAAQllB,KAAKiN,IAAIrH,GAAc,EAATsf,IAAc,KAAO,GACvCllB,KAAKiN,IAAIrH,GAAc,EAATsf,GAAa,GAAK,QAAc,EAuC/C,WAAmCow6B,GAAY64B,GAAYl+U,GAAci3S,IAC5E,IAAIF,IAAe7p7B,QAAU8yoB,GAAck+U,GAAY74B,IAEnDrO,MAAmBh20B,MAAmBk92B,GAAYjnC,GAAkBj3S,IACpE0hV,GAAsBxD,GAAW572B,wBACTt6G,IAAxB059B,KACA1qC,IAAoB0qC,IAExB,IAAIC,GAAsBt8B,GAAW/i1B,wBACTt6G,IAAxB259B,KACA3qC,IAAoB2qC,IAKxB,IAAI9ovB,GAAewstB,GAAWvh1B,YAC9B,IAAK+0H,KAAgB08tB,QAAmB18tB,GAAck+sB,IAAe,CACjE,IAAI6qC,IAAqB5g3B,QAAmBqk1B,GAAYrO,GAAkBD,IACtEC,GACA5l4B,SAASww6B,KAAuBA,GAAqB,IACrD5qC,IAAoB4qC,IAG5B,OAAO5qC,kBCxGPv70B,EAAyC,WACzC,IAAID,GAAgB,SAAUntG,GAAG0mB,IAC7BymF,UAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,GAAG0mB,IAAK1mB,GAAE8U,UAAY4R,KACvE,SAAU1mB,GAAG0mB,IAAK,QAASuyC,MAAKvyC,GAAOA,GAAEma,eAAeo4B,MAAIj5D,GAAEi5D,IAAKvyC,GAAEuyC,OACpDj5D,GAAG0mB,KAE5B,OAAO,SAAU1mB,GAAG0mB,IAEhB,cAAgBlyB,KAAKF,YAAc0L,GADnCmtG,GAAcntG,GAAG0mB,IAEjB1mB,GAAE6U,UAAkB,OAAN6R,GAAarsB,OAAOm8D,OAAO9vC,KAAM4mF,GAAGz4F,UAAY6R,GAAE7R,UAAW,IAAIy4F,KAV1C,GAkCzCkm3B,EAA4B,SAAU/l3B,IAiBtC,YAAoBup1B,GAAYzstB,GAAgBslvB,GAAY4D,GAAgB/v0B,GAAW0kF,GAAkBzkF,GAAYyn0B,GAAQsI,GAAiBC,GAAoBC,GAAiBC,IAC/K,IAAIlm3B,GAAQF,GAAOrlF,KAAK5zB,KAAMkvJ,GAAWsjF,WAAmBxyO,KAK5Dm5G,GAAMmm3B,kBAAmCn69B,IAApBi69B,IAAgCA,GAKrDjm3B,GAAMom3B,gBAAkBF,GAKxBlm3B,GAAMs4zB,YAActixB,GAKpBh2C,GAAMqm3B,QAAU5I,GAKhBz92B,GAAM4kD,QAAU,KAKhB5kD,GAAMsm3B,gBAAkB1pvB,GAKxB58H,GAAMum3B,gBAAkBT,GAKxB9l3B,GAAMwm3B,kBAAoB/rvB,IAAsC1kF,GAKhE/1C,GAAMym3B,aAAe,GAKrBzm3B,GAAM0m3B,qBAAuB,KAK7B1m3B,GAAM2m3B,SAAW,EACjB,IAAIxE,GAAe2D,GAAezpvB,mBAAmBr8H,GAAMwm3B,mBACvDI,GAAkB5m3B,GAAMum3B,gBAAgBz+2B,YACxCs62B,GAAkBpi3B,GAAMsm3B,gBAAgBx+2B,YACxC++2B,GAAsBD,IACpBpr4B,QAAgB2m4B,GAAcyE,IAC9BzE,GACN,GAAqC,KAAjCz2uB,QAAQm7uB,IAGR7m3B,UAAMjvG,MAAQsoO,UACPr5H,GAEX,IAAI8m3B,GAAmBz9B,GAAWvh1B,YAC9Bg/2B,KAKI1E,GAJCA,IAIiB5m4B,QAAgB4m4B,GAAiB0E,IAHjCA,IAM1B,IAAI7rC,GAAmB6qC,GAAe391B,cAAcnoB,GAAMwm3B,kBAAkB,IACxExrC,GDZL,WAAyCqO,GAAY64B,GAAYC,GAAclnC,IAClF,IAAIj3S,MAAe96hB,MAAUi52B,IACzBnnC,GAAmB+rC,EAA0B19B,GAAY64B,GAAYl+U,GAAci3S,IACvF,QAAK7l4B,SAAS4l4B,KAAqBA,IAAoB,KACnD1j0B,QAAc6q2B,GAAc,SAAUn+B,IAClChJ,UAAmB+rC,EAA0B19B,GAAY64B,GAAYl+B,GAAQ/I,IACtE7l4B,SAAS4l4B,KAAqBA,GAAmB,IAGzDA,GCGoBgsC,CAAgC39B,GAAY64B,GAAY2E,GAAqB5rC,IACpG,IAAK7l4B,SAAS4l4B,KAAqBA,IAAoB,EAGnDh70B,UAAMjvG,MAAQsoO,UACPr5H,GAQX,GADAA,GAAMin3B,eAAiB,IAAIhF,EAAc54B,GAAY64B,GAAY2E,GAAqBzE,GAAiBpnC,SALnDhv7B,IAAvBg69B,GAAmCA,GAAqBpF,KAK6D3lC,IAC/F,IAA/Cj70B,GAAMin3B,eAAe7B,eAAex49B,OAEpCozG,UAAMjvG,MAAQsoO,UACPr5H,GAEXA,GAAM2m3B,SAAW/pvB,GAAehmF,kBAAkBokyB,IAClD,IAAIn+sB,GAAe78H,GAAMin3B,eAAe9B,wBAUxC,GATI/C,KACI/4B,GAAW9vB,YACX18rB,GAAa,IAAKyuL,QAAMzuL,GAAa,GAAIulvB,GAAgB,GAAIA,GAAgB,IAC7EvlvB,GAAa,MAAKyuL,MAAMzuL,GAAa,GAAIulvB,GAAgB,GAAIA,GAAgB,KAG7EvlvB,MAAerhJ,MAAgBqhJ,GAAculvB,QAGhD12uB,MAAQ7O,IAGR,CAED,QADIqqvB,GAActqvB,GAAem/uB,0BAA0Bl/uB,GAAc78H,GAAM2m3B,UACtEQ,GAAOD,GAAYvo4B,KAAMwo4B,IAAQD,GAAYto4B,KAAMuo4B,KACxD,QAASC,GAAOF,GAAY3qP,KAAM6qP,IAAQF,GAAY1qP,KAAM4qP,KAAQ,CAChE,IAAIjrvB,GAAO4pvB,GAAgB/l3B,GAAM2m3B,SAAUQ,GAAMC,GAAMpx0B,IACnDmmF,IACAn8H,GAAMym3B,aAAan69B,KAAK6vO,IAIF,IAA9Bn8H,GAAMym3B,aAAa759B,SACnBozG,GAAMjvG,MAAQsoO,gBAblBr5H,GAAMjvG,MAAQsoO,UAgBlB,OAAOr5H,GAMX6l3B,OAnJApm3B,EAAUom3B,GAAY/l3B,IAmJtB+l3B,GAAW3+8B,UAAUy6I,SAAW,WAC5B,OAAO96J,KAAK+9J,SAKhBih0B,GAAW3+8B,UAAUmg9B,WAAa,WAC9B,IAAIl1e,GAAU,GAUd,GATAtrf,KAAK4/9B,aAAah59B,QAAQ,SAAU0uO,GAAM3mO,GAAGN,IACrCinO,IAAQA,GAAK/1E,YAAcizE,YAC3B84Q,GAAQ7lf,KAAK,CACT2qH,OAAQpwH,KAAKy/9B,gBAAgBjqvB,mBAAmBF,GAAKpmF,WACrDvN,MAAO2zF,GAAKx6E,cAGtBj1I,KAAK7lB,OACPA,KAAK4/9B,aAAa759B,OAAS,EACJ,IAAnBulf,GAAQvlf,OACR/F,KAAKkK,MAAQsoO,cAEZ,CACD,IAAInjF,GAAIrvJ,KAAK2/9B,kBAAkB,GAC3B3w6B,GAAOhvD,KAAK0/9B,gBAAgBnovB,YAAYloF,IACxC34I,GAAwB,iBAATs4C,GAAoBA,GAAOA,GAAK,GAC/CzkD,GAAyB,iBAATykD,GAAoBA,GAAOA,GAAK,GAChDol4B,GAAmBp07B,KAAK0/9B,gBAAgBp+1B,cAAc+tB,IACtD8kyB,GAAmBn07B,KAAKy/9B,gBAAgBn+1B,cAActhI,KAAK8/9B,UAC3DxE,GAAet79B,KAAK0/9B,gBAAgBlqvB,mBAAmBx1O,KAAK2/9B,mBAChE3/9B,KAAK+9J,QD7DV,WAAgBrnJ,GAAOnM,GAAQ4kJ,GAAYglyB,GAAkBn+sB,GAAco+sB,GAAkBknC,GAAcmF,GAAen1e,GAASsre,GAAQwI,GAAiBC,IAC/J,IAAIj85B,MAAUywK,MAAsB3mO,KAAK4zF,MAAMquD,GAAaz4I,IAAQxJ,KAAK4zF,MAAMquD,GAAa5kJ,KAE5F,IADA8vD,QAAO+I,GAASi85B,IACO,IAAnB/ze,GAAQvlf,OACR,OAAOq9D,GAAQ3nB,OAGnB,YAAoB93C,IAChB,OAAOuJ,KAAK4zF,MAAMn9F,GAAQwrJ,IAAcA,GAF5C/rF,GAAQs9B,MAAMyuD,GAAYA,IAI1B/rF,GAAQs95B,yBAA2B,UACnC,IAAIC,MAAmB9g5B,QACvByra,GAAQ1kf,QAAQ,SAAUuzC,GAAKxrC,GAAGN,KAC9B6pH,QAAOyo2B,GAAkBxm7B,GAAIi2E,UAEjC,IAAIww2B,MAAqB1s5B,MAASys5B,IAC9BE,IAAsBnm4B,QAAUim4B,IAChCG,IAAgBjtvB,QAAsB3mO,KAAK4zF,MAAOquD,GAAayx0B,GAAsBzsC,IAAmBjn7B,KAAK4zF,MAAOquD,GAAa0x0B,GAAuB1sC,MAC5J953B,QAAOym6B,GAAezB,IACtB,IAAI0B,GAAc5x0B,GAAaglyB,GAC/B7oc,GAAQ1kf,QAAQ,SAAUuzC,GAAKxrC,GAAGN,IAC9B,IAAI2y9B,GAAO7m7B,GAAIi2E,OAAO,GAAKuw2B,GAAiB,GACxCM,KAAS9m7B,GAAIi2E,OAAO,GAAKuw2B,GAAiB,IAC1CO,MAAWht5B,MAAS/5B,GAAIi2E,QACxB+w2B,IAAYzm4B,QAAUvgD,GAAIi2E,QAE1Bj2E,GAAIwnG,MAAMjrI,MAAQ,GAAKyjC,GAAIwnG,MAAMp3I,OAAS,GAC1Cu29B,GAAcnl7B,UAAUxB,GAAIwnG,MAAOi10B,GAAQA,GAAQz86B,GAAIwnG,MAAMjrI,MAAQ,EAAIkg9B,GAAQz86B,GAAIwnG,MAAMp3I,OAAS,EAAIqs9B,GAAQoK,GAAOD,GAAaE,GAAOF,GAAaG,GAAWH,GAAaI,GAAYJ,MAGpM,IAAIK,MAAgBtwrB,MAAWwqrB,IAC/BmF,UAAclC,eAAe339B,QAAQ,SAAUq29B,GAAUtu9B,GAAGN,IAqBxD,IAAIssC,GAASsi7B,GAASti7B,OAClBjyC,GAASu09B,GAASv09B,OAClBusE,GAAKt6B,GAAO,GAAG,GAAIg6B,GAAKh6B,GAAO,GAAG,GAClCw6B,GAAKx6B,GAAO,GAAG,GAAIk6B,GAAKl6B,GAAO,GAAG,GAClC86B,GAAK96B,GAAO,GAAG,GAAIkimB,GAAKlimB,GAAO,GAAG,GAElC0m7B,GAAKC,IAAY549B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,IACpDmtC,GAAKD,KAAa549B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,IACrDuqC,GAAK2C,IAAY549B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,IACpDr92B,GAAKuq5B,KAAa549B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,IACrDwqC,GAAK0C,IAAY549B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,IACpDp92B,GAAKsq5B,KAAa549B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,IAIrDotC,GAAwBvs5B,GACxBws5B,GAAwB9s5B,GAC5BM,GAAK,EACLN,GAAK,EAKL,IAMI+s5B,MAAcC,MANI,CAClB,CALJxs5B,IAAMqs5B,GACN3s5B,IAAM4s5B,GAIO,EAAG,EAAG9C,GAAK0C,IACpB,CAJJ5r5B,IAAM+r5B,GACN3kV,IAAM4kV,GAGO,EAAG,EAAG7C,GAAKyC,IACpB,CAAC,EAAG,EAAGls5B,GAAIN,GAAIkC,GAAKwq5B,IACpB,CAAC,EAAG,EAAG9r5B,GAAIonkB,GAAI7lkB,GAAKuq5B,MAGxB,GAAKG,GAKL,IAFAt+5B,GAAQ8ic,OACR9ic,GAAQi+K,YArLhB,cACI,QAAiCl8O,IAA7Bq59B,EAAwC,CACxC,IAAI/y9B,GAAMkW,SAAS+O,cAAc,UAAUgrB,WAAW,MACtDjwC,GAAIi19B,yBAA2B,UAC/Bj19B,GAAIy3tB,UAAY,wBAChB0+P,EAAiBn29B,GAAK,EAAG,EAAG,EAAG,GAC/Bm29B,EAAiBn29B,GAAK,EAAG,EAAG,EAAG,GAC/B,IAAIqH,GAAOrH,GAAI4yvB,aAAa,EAAG,EAAG,EAAG,GAAGvrvB,KACxC0r9B,EACIqD,EAA8B/u9B,GAAM,IAChC+u9B,EAA8B/u9B,GAAM,IACpC+u9B,EAA8B/u9B,GAAM,GAEhD,OAAO0r9B,EAyKCsD,IACAzC,KAAuBZ,EAA0B,CAEjDr75B,GAAQq+K,OAAOk9uB,GAAI5n5B,IAKnB,QAFIgr5B,GAAKV,GAAK1C,GACVqD,GAAKT,GAAKxq5B,GACLvqB,GAAO,EAAGA,GAHP,EAGqBA,KAE7B4W,GAAQs+K,OAAOi9uB,GAAK2C,IAAa906B,GAAO,GAAKu16B,GALrC,GAKmDhr5B,GAAKuq5B,GAAY906B,GAAOw16B,GAAO/06B,IAE9EA,GAART,IACA4W,GAAQs+K,OAAOi9uB,GAAK2C,IAAa906B,GAAO,GAAKu16B,GARzC,GAQuDhr5B,GAAKuq5B,IAAa906B,GAAO,GAAKw16B,GAAO/06B,IAIxGmW,GAAQs+K,OAAOk9uB,GAAI5n5B,SAGnB5T,GAAQq+K,OAAOk9uB,GAAI5n5B,IACnB3T,GAAQs+K,OAAO2/uB,GAAIE,IACnBn+5B,GAAQs+K,OAAOk9uB,GAAI5n5B,IAEvB5T,GAAQq6U,OACRr6U,GAAQ/4D,UAAUq39B,GAAY,GAAIA,GAAY,GAAIA,GAAY,GAAIA,GAAY,GAAIL,GAAIE,IACtFn+5B,GAAQ5qB,UAAUmo7B,GAAiB,GAAKa,GAAuBb,GAAiB,GAAKc,IACrFr+5B,GAAQs9B,MAAMyz1B,GAAmBhlyB,IAAaglyB,GAAmBhlyB,IACjE/rF,GAAQznB,UAAUml7B,GAAcrl7B,OAAQ,EAAG,GAC3C2nB,GAAQo6F,aAER4h0B,KACAh85B,GAAQ8ic,OACR9ic,GAAQs95B,yBAA2B,cACnCt95B,GAAQg+K,YAAc,QACtBh+K,GAAQk+K,UAAY,EACpBm/uB,GAAclC,eAAe339B,QAAQ,SAAUq29B,GAAUtu9B,GAAGN,IACxD,IAAI3F,GAASu09B,GAASv09B,OAClB249B,IAAM349B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,GACzCmtC,KAAO749B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,GAC1CuqC,IAAMj29B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,GACzCr92B,KAAOruE,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,GAC1CwqC,IAAMl29B,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,GACzCp92B,KAAOtuE,GAAO,GAAG,GAAK049B,GAAc,IAAMhtC,GAC9Chx3B,GAAQi+K,YACRj+K,GAAQq+K,OAAOk9uB,GAAI5n5B,IACnB3T,GAAQs+K,OAAO2/uB,GAAIE,IACnBn+5B,GAAQs+K,OAAOk9uB,GAAI5n5B,IACnB5T,GAAQqiqB,YACRriqB,GAAQy+E,WAEZz+E,GAAQo6F,WAELp6F,GAAQ3nB,OC/EQwm7B,CAAkBvr9B,GAAOnM,GAAQvK,KAAKyx6B,YAAa0iB,GAAkBn07B,KAAKy/9B,gBAAgBx+2B,YAAamz0B,GAAkBknC,GAAct79B,KAAKog+B,eAAgB90e,GAAStrf,KAAKw/9B,QAASx/9B,KAAKs/9B,aAAct/9B,KAAKu/9B,iBAC1Nv/9B,KAAKkK,MAAQsoO,WAEjBxyO,KAAK0wH,WAKTsu2B,GAAW3+8B,UAAU89I,KAAO,WACxB,GAAIn+J,KAAKkK,OAASsoO,SAAgB,CAC9BxyO,KAAKkK,MAAQsoO,YACbxyO,KAAK0wH,UACL,IAAIwx2B,GAAe,EACnBli+B,KAAK6/9B,qBAAuB,GAC5B7/9B,KAAK4/9B,aAAah59B,QAAQ,SAAU0uO,GAAM3mO,GAAGN,IACzC,IAAInE,GAAQorO,GAAK/1E,WACjB,GAAIr1J,IAASsoO,UAAkBtoO,IAASsoO,YAAmB,CACvD0vvB,KACA,IAAIC,MAAoBtm3B,MAAOy5H,GAAMx7H,WAAkB,SAAU7wG,IAC7D,IAAIiB,GAAQorO,GAAK/1E,YACbr1J,IAASsoO,YACTtoO,IAASsoO,WACTtoO,IAASsoO,gBACT92G,MAAcym2B,IAEO,KADrBD,KAEIli+B,KAAKoi+B,mBACLpi+B,KAAKwg+B,gBAGdxg+B,MACHA,KAAK6/9B,qBAAqBp69B,KAAK089B,MAErCt88B,KAAK7lB,OACPA,KAAK4/9B,aAAah59B,QAAQ,SAAU0uO,GAAM3mO,GAAGN,IAC7BinO,GAAK/1E,YACJizE,UACT8C,GAAKn3E,SAGQ,IAAjB+j0B,IACAhw9B,WAAWlS,KAAKwg+B,WAAW368B,KAAK7lB,MAAO,KAOnDg/9B,GAAW3+8B,UAAU+h9B,iBAAmB,WACpCpi+B,KAAK6/9B,qBAAqBj59B,QAAQ80H,MAClC17H,KAAK6/9B,qBAAuB,MAEzBb,GApOqB,CAqO9BlsvB,KACF,SAAeksvB,iECxQXpm3B,GAAyC,WACzC,IAAID,GAAgB,SAAUntG,GAAG0mB,IAC7BymF,UAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,GAAG0mB,IAAK1mB,GAAE8U,UAAY4R,KACvE,SAAU1mB,GAAG0mB,IAAK,QAASuyC,MAAKvyC,GAAOA,GAAEma,eAAeo4B,MAAIj5D,GAAEi5D,IAAKvyC,GAAEuyC,OACpDj5D,GAAG0mB,KAE5B,OAAO,SAAU1mB,GAAG0mB,IAEhB,cAAgBlyB,KAAKF,YAAc0L,GADnCmtG,GAAcntG,GAAG0mB,IAEjB1mB,GAAE6U,UAAkB,OAAN6R,GAAarsB,OAAOm8D,OAAO9vC,KAAM4mF,GAAGz4F,UAAY6R,GAAE7R,UAAW,IAAIy4F,KAV1C,GA+EzC43C,GAA2B,SAAUz3C,IAKrC,YAAmBl6F,IACf,IAAIo6F,GAAQF,GAAOrlF,KAAK5zB,KAAM,CAC1B6vJ,aAAc9wI,GAAQ8wI,aACtBtD,UAAWxtI,GAAQwtI,UACnBG,OAAQ3tI,GAAQ2tI,OAChBzuC,WAAYl/F,GAAQk/F,WACpB/zG,MAAO6U,GAAQ7U,MACfukJ,SAAU1vI,GAAQ0vI,SAClB5B,iBAAkB9tI,GAAQ8tI,iBACpB9tI,GAAQ8tI,iBACRw10B,GACNv10B,eAAgB/tI,GAAQ+tI,eACxB+B,gBAAiB9vI,GAAQ8vI,gBACzB/vI,IAAKC,GAAQD,IACb21N,KAAM11N,GAAQ01N,KACdpgH,MAAOt1G,GAAQs1G,MACf/pH,WAAYyU,GAAQzU,WACpBuI,IAAKkM,GAAQlM,IACb0hO,wBAAyBx1N,GAAQw1N,wBACjCvkF,WAAYjxI,GAAQixI,cAClBhwJ,KAKNm5G,UAAMqzC,iBACsBrnJ,IAAxB4Z,GAAQytI,YAA4BztI,GAAQytI,YAAc,KAK9DrzC,GAAM87H,eACoB9vO,IAAtB4Z,GAAQk2N,UAA0Bl2N,GAAQk2N,UAAY8lvB,EAK1D5h3B,GAAMmp3B,uBAAyB,GAK/Bnp3B,GAAMop3B,sBAAwB,GAK9Bpp3B,GAAMqp3B,4BAA8Bzj9B,GAAQ4tI,2BAK5CxzC,GAAMom3B,iBACyB,IAA3Bxg9B,GAAQ0tI,eAA2Bgy0B,OAA2Bt59B,EAKlEg0G,GAAMsp3B,0BAA2B,EAC1Btp3B,GAKXu3C,OApEA93C,GAAU83C,GAAWz3C,IAoErBy3C,GAAUrwI,UAAU4u6B,eAAiB,WACjC,IAAKxzxB,IACD,OAAOxiD,GAAO54F,UAAU4u6B,eAAer75B,KAAK5zB,MAEhD,GAAIA,KAAK60O,UAAUo6sB,iBACf,OAAO,EAGP,QAASp86B,MAAO7S,KAAKsi+B,uBACjB,GAAIti+B,KAAKsi+B,uBAAuBzv9B,IAAKo86B,iBACjC,OAAO,EAInB,OAAO,GAMXv+xB,GAAUrwI,UAAUu1N,YAAc,SAAU33H,GAAY43H,IACpD,GAAKp6E,IAAL,CAIA,IAAIin0B,GAAgB1i+B,KAAK2i+B,0BAA0B1k3B,IAEnD,QAAS/4G,MADTlF,KAAK60O,UAAUe,YAAY51O,KAAK60O,WAAa6tvB,GAAgB7svB,GAAY,IAC1D71O,KAAKsi+B,uBAAwB,CACxC,IAAIztvB,GAAY70O,KAAKsi+B,uBAAuBp99B,IAC5C2vO,GAAUe,YAAYf,IAAa6tvB,GAAgB7svB,GAAY,UAP/D58H,GAAO54F,UAAUu1N,YAAYhiN,KAAK5zB,KAAMi+G,GAAY43H,KAa5DnlF,GAAUrwI,UAAU88I,kBAAoB,WACpC,OAAOn9J,KAAKu/9B,iBAMhB7u0B,GAAUrwI,UAAU618B,uBAAyB,SAAUj42B,IACnD,OAAIw9C,KACAz7J,KAAKm3H,iBACLlZ,MACC2k3B,QAAW5i+B,KAAKm3H,gBAAiBlZ,IAC3B,EAGAj+G,KAAK6i+B,aAMpBny0B,GAAUrwI,UAAUwi9B,UAAY,WAC5B,OAAO,GAOXny0B,GAAUrwI,UAAUw3F,OAAS,WACzB,OAAQoB,GAAO54F,UAAUw3F,OAAOjkF,KAAK5zB,OAChCA,KAAKu/9B,gBAAkB,KAAOlx8B,KAAK+E,UAAUpzB,KAAKu/9B,iBAAmB,KAM9E7u0B,GAAUrwI,UAAUq18B,UAAY,SAAUz32B,IACtC,QAAIw9C,KACAz7J,KAAKm3H,iBACLlZ,QACC2k3B,MAAW5i+B,KAAKm3H,gBAAiBlZ,MAI3BhF,GAAO54F,UAAUq18B,UAAU9h8B,KAAK5zB,KAAMi+G,KAOrDyyC,GAAUrwI,UAAUy1N,yBAA2B,SAAU73H,IACrD,IAAKw9C,IACD,OAAOxiD,GAAO54F,UAAUy1N,yBAAyBliN,KAAK5zB,KAAMi+G,IAEhE,IAAI6k3B,GAAW9i+B,KAAKm3H,gBACpB,GAAIn3H,KAAKyuJ,YAAcq00B,KAAYF,QAAWE,GAAU7k3B,KACpD,OAAOj+G,KAAKyuJ,SAGZ,IAAIs00B,MAAU3o2B,OAAOnc,IACrB,OAAM8k3B,MAAW/i+B,KAAKui+B,wBAClBvi+B,KAAKui+B,sBAAsBQ,KAAWjtvB,SAAyB73H,KAE5Dj+G,KAAKui+B,sBAAsBQ,KAO1Cry0B,GAAUrwI,UAAUsi9B,0BAA4B,SAAU1k3B,IACtD,IAAKw9C,IACD,OAAOxiD,GAAO54F,UAAUsi9B,0BAA0B/u8B,KAAK5zB,KAAMi+G,IAEjE,IAAI6k3B,GAAW9i+B,KAAKm3H,gBACpB,IAAK2r2B,KAAYF,QAAWE,GAAU7k3B,IAClC,OAAOj+G,KAAK60O,UAGZ,IAAIkuvB,MAAU3o2B,OAAOnc,IACrB,OAAM8k3B,MAAW/i+B,KAAKsi+B,yBAClBti+B,KAAKsi+B,uBAAuBS,IAAW,IAAInuvB,KAAU50O,KAAK60O,UAAUC,gBAEjE90O,KAAKsi+B,uBAAuBS,KAa3Cry0B,GAAUrwI,UAAU2i9B,YAAc,SAAU3z0B,GAAG1lJ,GAAGmqD,GAAGq7F,GAAYlxC,GAAYprG,IACzE,IAAIq8I,GAAY,CAACG,GAAG1lJ,GAAGmqD,IACnBm/K,GAAejzO,KAAKg3O,+BAA+B9nF,GAAWjxC,IAC9Ds4H,GAAUtD,GACRjzO,KAAK6uJ,gBAAgBokF,GAAc9jF,GAAYlxC,SAC/C94G,EACFmwO,GAAO,IAAIt1O,KAAKi1O,UAAU/lF,QAAuB/pJ,IAAZoxO,GAAwB/D,SAAiBA,eAA6BrtO,IAAZoxO,GAAwBA,GAAU,GAAIv2O,KAAKwsJ,YAAaxsJ,KAAK6sJ,iBAAkB7sJ,KAAKij+B,aACvL3tvB,UAAKziO,IAAMA,GACXyiO,GAAK9/N,iBAAiBskG,WAAkB95G,KAAKy2O,iBAAiB5wN,KAAK7lB,OAC5Ds1O,IAUX5kF,GAAUrwI,UAAUw2N,QAAU,SAAUxnF,GAAG1lJ,GAAGmqD,GAAGq7F,GAAYlxC,IACzD,IAAIswC,GAAmBvuJ,KAAKm3H,gBAC5B,IAAKskC,MACAlN,KACAtwC,KACD2k3B,QAAWr00B,GAAkBtwC,IAC7B,OAAOj+G,KAAKkj+B,gBAAgB7z0B,GAAG1lJ,GAAGmqD,GAAGq7F,GAAYZ,IAAoBtwC,IAGrE,IAAIr3F,GAAQ5mB,KAAK2i+B,0BAA0B1k3B,IACvCixC,GAAY,CAACG,GAAG1lJ,GAAGmqD,IACnBwhL,QAAO,EACP8gvB,MAAev+2B,OAAOq3C,IACtBtoI,GAAM4vN,YAAY4/uB,MAClB9gvB,GAAO1uN,GAAM/H,IAAIu38B,KAErB,IAAIvj9B,GAAM7S,KAAK63G,SACf,GAAIy9H,IAAQA,GAAKziO,KAAOA,GACpB,OAAOyiO,GAGP,IAAIS,GAAiB/1O,KAAK81O,yBAAyBvnF,IAC/C0w0B,GAAiBj/9B,KAAK81O,yBAAyB73H,IAC/C21H,GAAmB5zO,KAAKg3O,+BAA+B9nF,GAAWjxC,IAClEi5H,GAAU,IAAI8nvB,GAAWzw0B,GAAkBwnF,GAAgB93H,GAAYgh3B,GAAgB/v0B,GAAW0kF,GAAkB5zO,KAAKw3O,kBAAkBroF,IAAanvJ,KAAK6i+B,YAAa,SAAUxz0B,GAAG1lJ,GAAGmqD,GAAGq7F,IAC7L,OAAOnvJ,KAAKkj+B,gBAAgB7z0B,GAAG1lJ,GAAGmqD,GAAGq7F,GAAYZ,KACnD1oI,KAAK7lB,MAAOA,KAAKwi+B,4BAA6Bxi+B,KAAKyi+B,yBAA0Bzi+B,KAAKu/9B,iBACpFrovB,UAAQrkO,IAAMA,GACdouJ,IACIi2E,GAAQC,YAAc7B,GACtB4B,GAAQE,sBACRxwN,GAAM2E,QAAQ6q8B,GAAcl/uB,KAG5BtwN,GAAMyL,IAAI+j8B,GAAcl/uB,IAErBA,IAanBxmF,GAAUrwI,UAAU6i9B,gBAAkB,SAAU7z0B,GAAG1lJ,GAAGmqD,GAAGq7F,GAAYlxC,IACjE,IAAIq3H,GAAO,KACP8gvB,MAAer/uB,OAAU1nF,GAAG1lJ,GAAGmqD,IAC/BjhD,GAAM7S,KAAK63G,SACf,GAAK73G,KAAK60O,UAAU2B,YAAY4/uB,KAEK9gvB,IAGjCA,GAAOt1O,KAAK60O,UAAUh2N,IAAIu38B,KACjBvj9B,KAAOA,GAAK,CAIjB,IAAIskO,GAAc7B,IAClBA,GAAOt1O,KAAKgj+B,YAAY3z0B,GAAG1lJ,GAAGmqD,GAAGq7F,GAAYlxC,GAAYprG,KAIhDskO,YAFLA,GAAY53E,YAAcizE,SAEP2E,GAAYA,YAGZA,GAEvB7B,GAAK8B,sBACLp3O,KAAK60O,UAAUtpN,QAAQ6q8B,GAAc9gvB,UApBzCA,GAAOt1O,KAAKgj+B,YAAY3z0B,GAAG1lJ,GAAGmqD,GAAGq7F,GAAYlxC,GAAYprG,IACzD7S,KAAK60O,UAAUxiN,IAAI+j8B,GAAc9gvB,IAsBrC,OAAOA,IAOX5kF,GAAUrwI,UAAU8i9B,2BAA6B,SAAUxm3B,IACvD,GAAK8+C,KACDz7J,KAAKyi+B,0BAA4B9l3B,GAGrC,CACA,QAASz3G,MADTlF,KAAKyi+B,yBAA2B9l3B,GACjB38G,KAAKsi+B,uBAChBti+B,KAAKsi+B,uBAAuBp99B,IAAIo6C,QAEpCt/C,KAAK0wH,YAcTggC,GAAUrwI,UAAU+i9B,yBAA2B,SAAUnl3B,GAAYol3B,IACjE,GAAI5n0B,IAA4B,CAC5B,IAAI6n0B,MAAOns2B,MAAclZ,IACzB,GAAIql3B,GAAM,CACN,IAAIP,MAAU3o2B,OAAOkp2B,IACfP,MAAW/i+B,KAAKui+B,wBAClBvi+B,KAAKui+B,sBAAsBQ,IAAWM,OAK/C3y0B,GAnVoB,CAoV7BonF,MAKF,YAAiCyrvB,GAAWpp7B,IACUop7B,GAAUzo0B,WAAY3gH,IAAMA,GAElF,SAAeu2G,uDC1aP/3C,oGADJC,GACID,EAAgB,SAAUntG,EAAG0mB,GAC7BymF,SAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,EAAG0mB,GAAK1mB,EAAE8U,UAAY4R,IACvE,SAAU1mB,EAAG0mB,GAAK,QAASuyC,MAAKvyC,EAAOA,EAAEma,eAAeo4B,MAAIj5D,EAAEi5D,IAAKvyC,EAAEuyC,OACpDj5D,EAAG0mB,IAErB,SAAU1mB,EAAG0mB,GAEhB,aAAgBlyB,KAAKF,YAAc0L,EADnCmtG,EAAcntG,EAAG0mB,GAEjB1mB,EAAE6U,UAAkB,OAAN6R,EAAarsB,OAAOm8D,OAAO9vC,IAAM4mF,EAAGz4F,UAAY6R,EAAE7R,UAAW,IAAIy4F,KAsCnF0q3B,EAA4B,SAAUvq3B,GAKtC,WAAoBl6F,GAChB,IAAIo6F,EAAQF,EAAOrlF,KAAK5zB,KAAM,CAC1B6vJ,aAAc9wI,EAAQ8wI,aACtB0kF,wBAAyBx1N,EAAQw1N,wBACjCt2H,WAAYl/F,EAAQk/F,WACpB/zG,MAAO6U,EAAQ7U,MACfmqH,MAAOt1G,EAAQs1G,SACbr0H,KAKNm5G,EAAMsq3B,aAA6Bt+9B,IAAnB4Z,EAAQ2tI,QAAuB3tI,EAAQ2tI,OAKvDvzC,EAAMuq3B,qBACyBv+9B,IAA3B4Z,EAAQ+tI,eAA+B/tI,EAAQ+tI,eAAiB,EAKpE3zC,EAAMs1C,cAAgCtpJ,IAArB4Z,EAAQ0vI,SAAyB1vI,EAAQ0vI,SAAW,KACrE,IACIA,GAAW1vI,EAAQ0vI,SACvB,OAAIA,KACAipF,QAAOjpF,GAAS8oF,YAAY9oF,GAAS0nF,cAH1B,CAAC,IAAK,MASrBh9H,EAAM07H,UAAY,IAAID,IAAU71N,EAAQwtI,WAAa,GAKrDpzC,EAAMw+H,QAAU,CAAC,EAAG,GAKpBx+H,EAAMg20B,KAAOpw6B,EAAQlM,KAAO,GAK5BsmG,EAAM8p3B,YAAc,CAAE349B,WAAYyU,EAAQzU,YAQ1C6uG,EAAM62C,WAAajxI,EAAQixI,WAAajxI,EAAQixI,WAAa,EACtD72C,EAKXqq3B,OAlEA5q3B,EAAU4q3B,EAAYvq3B,GAkEtBuq3B,EAAWnj9B,UAAU4u6B,eAAiB,WAClC,OAAOjv7B,KAAK60O,UAAUo6sB,kBAM1Bu0C,EAAWnj9B,UAAUu1N,YAAc,SAAU33H,EAAY43H,GACrD,IAAIhB,EAAY70O,KAAK2i+B,0BAA0B1k3B,GAC3C42H,GACAA,EAAUe,YAAYC,IAY9B2tvB,EAAWnj9B,UAAU2z8B,kBAAoB,SAAU/12B,EAAYoxC,EAAGogyB,EAAW5/6B,IACzE,IAAIglO,EAAY70O,KAAK2i+B,0BAA0B1k3B,GAC/C,IAAK42H,EACD,OAAO,EAIX,QADIS,EAAM8gvB,EAAcx/6B,EADpBq/L,GAAU,EAELtsO,EAAI8l7B,EAAU331B,KAAMnuF,GAAK8l7B,EAAU131B,OAAQpuF,EAChD,QAASmqD,GAAI273B,EAAU/5M,KAAM5hrB,IAAK273B,EAAU95M,OAAQ7hrB,GAChDsi6B,GAAer/uB,QAAU1nF,EAAG1lJ,EAAGmqD,IAC/Bld,GAAS,EACLi+L,EAAU2B,YAAY4/uB,KAEtBx/6B,GADA0+L,EAAqDT,EAAUh2N,IAAIu38B,IACrD72zB,aAAeizE,cAEzB57L,GAA4B,IAAnB/mC,GAASylO,IAGrB1+L,IACDq/L,GAAU,GAItB,OAAOA,GAMXutvB,EAAWnj9B,UAAU618B,uBAAyB,SAAUj42B,GACpD,OAAO,GAOXul3B,EAAWnj9B,UAAUw3F,OAAS,WAC1B,OAAO73G,KAAKmv7B,MAOhBq0C,EAAWnj9B,UAAU4uR,OAAS,SAAUp8R,GAChC7S,KAAKmv7B,OAASt86B,IACd7S,KAAKmv7B,KAAOt86B,EACZ7S,KAAK0wH,YAOb8y2B,EAAWnj9B,UAAUq18B,UAAY,SAAUz32B,GACvC,OAAOj+G,KAAKyj+B,SAKhBD,EAAWnj9B,UAAU416B,eAAiB,WAClC,OAAOj27B,KAAKyuJ,SAASwnyB,kBAWzButC,EAAWnj9B,UAAUw2N,QAAU,SAAUxnF,EAAG1lJ,EAAGmqD,EAAGq7F,GAAYlxC,GAC1D,SAAOyzzB,SAOX8xD,EAAWnj9B,UAAUyvI,YAAc,WAC/B,OAAO9vJ,KAAKyuJ,UAMhB+00B,EAAWnj9B,UAAUy1N,yBAA2B,SAAU73H,GACtD,OAAKj+G,KAAKyuJ,SAICzuJ,KAAKyuJ,YAHLqnF,MAAyB73H,IAWxCul3B,EAAWnj9B,UAAUsi9B,0BAA4B,SAAU1k3B,GACvD,IAAI6k3B,EAAW9i+B,KAAKm3H,gBACpB,OAAI2r2B,KAAaF,QAAWE,EAAU7k3B,GAC3B,KAGAj+G,KAAK60O,WAUpB2uvB,EAAWnj9B,UAAUm3N,kBAAoB,SAAUroF,GAC/C,OAAOnvJ,KAAK0j+B,iBAQhBF,EAAWnj9B,UAAUo3N,iBAAmB,SAAUpoF,EAAGF,EAAYlxC,GAC7D,IAAIwwC,GAAWzuJ,KAAK81O,yBAAyB73H,GACzC6uC,EAAiB9sJ,KAAKw3O,kBAAkBroF,GACxCP,GAAW8oF,QAAOjpF,GAAS8oF,YAAYloF,GAAIrvJ,KAAK23O,SACpD,OAAsB,GAAlB7qF,EACO8B,GAGA+00B,QAAU/00B,EAAU9B,EAAgB9sJ,KAAK23O,UAYxD6rvB,EAAWnj9B,UAAU22N,+BAAiC,SAAU9nF,EAAW6nzB,GACvE,IAAI941B,OAAgC94G,IAAnB4x8B,EAA+BA,EAAiB/28B,KAAKm3H,gBAClEs3B,GAAWzuJ,KAAK81O,yBAAyB73H,GAC7C,OAAIj+G,KAAKmz6B,YAAcl1zB,EAAWsz0B,aAC9BriyB,GAAY76B,QAAMo6B,GAAUS,EAAWjxC,KAEpC2l3B,QAAiB100B,EAAWT,IAAYS,EAAY,MAM/Ds00B,EAAWnj9B,UAAUi/B,MAAQ,WACzBt/C,KAAK60O,UAAUv1L,SAEnBkk7B,EAAWnj9B,UAAU2zC,QAAU,WAC3Bh0D,KAAKs/C,QACL25D,EAAO54F,UAAU2zC,QAAQpgC,KAAK5zB,OAOlCwj+B,EAAWnj9B,UAAUu3N,gBAAkB,SAAUC,EAAW55H,GACxD,IAAI42H,EAAY70O,KAAK2i+B,0BAA0B1k3B,GAC3C45H,EAAYhD,EAAUC,gBACtBD,EAAUC,cAAgB+C,IAWlC2rvB,EAAWnj9B,UAAU428B,QAAU,SAAU5n0B,EAAG1lJ,EAAGmqD,EAAGmqD,MAC3Cul3B,EAlRqB,CAmR9B160B,KAME+60B,EAAiC,SAAU5q3B,GAM3C,WAAyBnxG,EAAMwtO,GAC3B,IAAIn8H,EAAQF,EAAOrlF,KAAK5zB,KAAM8H,IAAS9H,KAMvCm5G,SAAMm8H,KAAOA,EACNn8H,EAEX,OAfAP,EAAUir3B,EAAiB5q3B,GAepB4q3B,EAhB0B,CAiBnC1y2B,MAEF,QAAeqy2B,gBC5VX5q3B,EAAyC,WACzC,IAAID,EAAgB,SAAUntG,EAAG0mB,GAC7BymF,SAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,EAAG0mB,GAAK1mB,EAAE8U,UAAY4R,IACvE,SAAU1mB,EAAG0mB,GAAK,QAASuyC,MAAKvyC,EAAOA,EAAEma,eAAeo4B,MAAIj5D,EAAEi5D,IAAKvyC,EAAEuyC,OACpDj5D,EAAG0mB,IAE5B,OAAO,SAAU1mB,EAAG0mB,GAEhB,aAAgBlyB,KAAKF,YAAc0L,EADnCmtG,EAAcntG,EAAG0mB,GAEjB1mB,EAAE6U,UAAkB,OAAN6R,EAAarsB,OAAOm8D,OAAO9vC,IAAM4mF,EAAGz4F,UAAY6R,EAAE7R,UAAW,IAAIy4F,IAV1C,GA+CzCg/H,EAAyB,SAAU7+H,GAKnC,WAAiBl6F,GACb,IAAIo6F,EAAQF,EAAOrlF,KAAK5zB,KAAM,CAC1B6vJ,aAAc9wI,EAAQ8wI,aACtBtD,UAAWxtI,EAAQwtI,UACnBG,OAAQ3tI,EAAQ2tI,OAChBzuC,WAAYl/F,EAAQk/F,WACpB/zG,MAAO6U,EAAQ7U,MACfukJ,SAAU1vI,EAAQ0vI,SAClB3B,eAAgB/tI,EAAQ+tI,eACxBz4B,MAAOt1G,EAAQs1G,MACf/pH,WAAYyU,EAAQzU,WACpBuI,IAAKkM,EAAQlM,IACb0hO,wBAAyBx1N,EAAQw1N,wBACjCvkF,WAAYjxI,EAAQixI,cAClBhwJ,KAKNm5G,SAAM2q3B,yBACF3q3B,EAAM01C,kBAAoBipF,EAAQz3N,UAAUwuI,gBAKhD11C,EAAM0zC,iBAAmB9tI,EAAQ8tI,iBAC7B9tI,EAAQ8vI,kBACR11C,EAAM01C,gBAAkB9vI,EAAQ8vI,gBAAgBhpI,KAAKszF,IAMzDA,EAAMs7H,KAAO,KACbjiO,EAAYiiO,KACRt7H,EAAMi2L,QAAQrwR,EAAQ01N,MAEjB11N,EAAQD,KACbq6F,EAAMqnD,OAAOzhJ,EAAQD,KAMzBq6F,EAAM4q3B,iBAAmB,GAClB5q3B,EAOX2+H,OAxDAl/H,EAAUk/H,EAAS7+H,GAwDnB6+H,EAAQz3N,UAAU2j9B,oBAAsB,WACpC,OAAOhk+B,KAAK6sJ,kBAOhBirF,EAAQz3N,UAAU4j9B,mBAAqB,WACnC,OAAOjk+B,KAAK6uJ,iBAShBipF,EAAQz3N,UAAU+gJ,QAAU,WACxB,OAAOphK,KAAKy0O,MAOhBqD,EAAQz3N,UAAUo2N,iBAAmB,SAAU9oO,GAC3C,IAGI7F,EAHAwtO,EAAoD3nO,EAAMjF,OAC1D0zC,GAAMg+E,QAAOk7G,GACbw/uB,GAAYx/uB,EAAK/1E,WAEjBu1zB,IAAativB,aACbxyO,KAAK+j+B,iBAAiB3n7B,IAAO,EAC7Bt0C,EC7HO,iBD+HFs0C,KAAOp8C,KAAK+j+B,0BACV/j+B,KAAK+j+B,iBAAiB3n7B,GAC7Bt0C,EACIgt9B,IAAativB,UCrHV,gBDuHGsivB,IAAativB,WC7HlB,mBD+HSrtO,GAENA,MAAR2C,GACA9H,KAAKo7G,cAAc,IAAIyo3B,EAAgB/79B,EAAMwtO,KAQrDwC,EAAQz3N,UAAU6j9B,oBAAsB,SAAUr30B,GAC9C7sJ,KAAK60O,UAAUv1L,QACft/C,KAAK6sJ,iBAAmBA,EACxB7sJ,KAAK0wH,WAQTonH,EAAQz3N,UAAUgvR,mBAAqB,SAAUxgJ,EAAiBh8I,GAC9D7S,KAAK6uJ,gBAAkBA,EACvB7uJ,KAAK60O,UAAUy6sB,0BACI,IAARz86B,EACP7S,KAAKivS,OAAOp8R,GAGZ7S,KAAK0wH,WAQbonH,EAAQz3N,UAAUmgJ,OAAS,SAAU1hJ,GACjC,IAAI21N,KAAOg6D,MAAU3vR,GACrB9e,KAAKy0O,KAAOA,EACZz0O,KAAKovS,QAAQ36D,IAOjBqD,EAAQz3N,UAAU+uR,QAAU,SAAU36D,GAClCz0O,KAAKy0O,KAAOA,EACZ,IAAI5hO,EAAM4hO,EAAKhtN,KAAK,MAChBznB,KAAK8j+B,yBACL9j+B,KAAKqvS,sBAAmB80rB,MAAoB1vvB,EAAMz0O,KAAKyuJ,UAAW57I,GAGlE7S,KAAKivS,OAAOp8R,IASpBilO,EAAQz3N,UAAUwuI,gBAAkB,SAAUK,EAAWC,EAAYlxC,KASrE65H,EAAQz3N,UAAU428B,QAAU,SAAU5n0B,EAAG1lJ,EAAGmqD,GACxC,IAAIsi6B,IAAer/uB,QAAU1nF,EAAG1lJ,EAAGmqD,GAC/B9zD,KAAK60O,UAAU2B,YAAY4/uB,KAC3Bp29B,KAAK60O,UAAUh2N,IAAIu38B,KAGpBt+uB,EAjLkB,CAkL3B0rvB,GACF,QAAe1rvB,mKExNR,WAAa1nH,EAAQhS,GACxB,MAAO,CAAC,EAAC,KAAW,IAAWmU,IAAUA,UCPrC5Z,+EADJC,GACID,EAAgB,SAAUntG,EAAG0mB,GAC7BymF,SAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,EAAG0mB,GAAK1mB,EAAE8U,UAAY4R,IACvE,SAAU1mB,EAAG0mB,GAAK,QAASuyC,KAAKvyC,EAAOA,EAAEma,eAAeo4B,KAAIj5D,EAAEi5D,GAAKvyC,EAAEuyC,MACpDj5D,EAAG0mB,IAErB,SAAU1mB,EAAG0mB,GAEhB,aAAgBlyB,KAAKF,YAAc0L,EADnCmtG,EAAcntG,EAAG0mB,GAEjB1mB,EAAE6U,UAAkB,OAAN6R,EAAarsB,OAAOm8D,OAAO9vC,IAAM4mF,EAAGz4F,UAAY6R,EAAE7R,UAAW,IAAIy4F,KAmCnFsr3B,EAAmC,SAAUnr3B,GAM7C,WAA2BnxG,EAAMu89B,GAC7B,IAAIlr3B,EAAQF,EAAOrlF,KAAK5zB,KAAM8H,IAAS9H,KAMvCm5G,SAAMyH,QAAUyj3B,EACTlr3B,EAEX,OAfAP,EAAUwr3B,EAAmBnr3B,GAetBmr3B,EAhB4B,CAiBrCjz2B,MAoGEgD,EAA8B,SAAUlb,GAKxC,WAAsBC,GAClB,IAAIC,EAAQn5G,KACR+e,EAAUm6F,GAAe,IAC7BC,EAAQF,EAAOrlF,KAAK5zB,KAAM,CACtB6vJ,aAAc9wI,EAAQ8wI,aACtB5xC,gBAAY94G,EACZ+E,MAAO0iJ,UACPv4B,WAAyBlvH,IAAlB4Z,EAAQs1G,OAAsBt1G,EAAQs1G,SAC3Cr0H,MAKA89J,QAAUu5xB,KAKhBl+0B,EAAMi5H,QAAUrzN,EAAQ3D,OAKxB+9F,EAAM47H,eAAiC5vO,IAArB4Z,EAAQi2N,UAAgCj2N,EAAQi2N,SAKlE77H,EAAMm5H,KAAOvzN,EAAQD,SACE3Z,IAAvB4C,EAAY8qO,OACR15H,EAAM2kD,QAAU/+I,EAAQ8zN,YAEJ1tO,IAAfg0G,EAAMm5H,UACX5zH,KAAOvF,EAAMi5H,QAAS,GAEtBj5H,EAAM2kD,SAAUj2I,QAAIsxF,EAAMm5H,KAC6Bn5H,EAAMi5H,UAMjEj5H,EAAMmr3B,eACmBn/9B,IAArB4Z,EAAQwhI,SAAyBxhI,EAAQwhI,SAAWgk1B,EACxD,IAsCI771B,GAAYv8G,GAtCZioG,OAA8CjvH,IAA5B4Z,EAAQq1G,iBAAgCr1G,EAAQq1G,gBAuCtE,OAlCAjb,EAAMqr3B,eAAiBpw2B,EAAkB,IAAIoF,IAAU,KAKvDrgB,EAAMsr3B,oBAAsB,IAAIjr2B,IAKhCrgB,EAAMur3B,sBAAwB,GAM9Bvr3B,EAAMwr3B,SAAW,GAMjBxr3B,EAAMyr3B,UAAY,GAKlBzr3B,EAAM0r3B,mBAAqB,GAK3B1r3B,EAAM2r3B,oBAAsB,KAExBx29B,MAAMqxB,QAAQ5gB,EAAQoN,UACtBA,GAAWpN,EAAQoN,SAEdpN,EAAQoN,WAEbA,IADAu8G,GAAa3pH,EAAQoN,UACC42F,aAErBqR,QAAkCjvH,IAAfujI,KACpBA,GAAa,IAAIhvD,IAAWvtD,UAEfhnB,IAAbgnB,IACAgtF,EAAM4r3B,oBAAoB548B,SAEXhnB,IAAfujI,IACAvvB,EAAM6r3B,wBAAwBt81B,IAE3BvvB,EAcXgb,OArHAvb,EAAUub,EAAclb,GAqHxBkb,EAAa9zG,UAAU03G,WAAa,SAAUnX,GAC1C5gH,KAAKil+B,mBAAmBrk3B,GACxB5gH,KAAK0wH,WAOTyD,EAAa9zG,UAAU4k9B,mBAAqB,SAAUrk3B,GAClD,IAAIsk3B,KAAa9q2B,MAAOxZ,GACxB,GAAK5gH,KAAKml+B,YAAYD,EAAYtk3B,GAAlC,CAMA5gH,KAAKol+B,mBAAmBF,EAAYtk3B,GACpC,IAAI1X,EAAW0X,EAAQhiC,cACvB,GAAIsqB,EAAU,CACV,IAAIknB,EAASlnB,EAAS+X,YAClBjhH,KAAKwk+B,gBACLxk+B,KAAKwk+B,eAAehm5B,OAAO4xC,EAAQxP,QAIvC5gH,KAAK0k+B,sBAAsBQ,GAActk3B,EAE7C5gH,KAAKo7G,cAAc,IAAIgp3B,EAAkBvo2B,eAA4Bjb,SAhB7D5gH,KAAK8k+B,qBACL9k+B,KAAK8k+B,oBAAoBrm7B,OAAOmiE,IAsB5CuT,EAAa9zG,UAAU+k9B,mBAAqB,SAAUF,EAAYtk3B,GAC9D5gH,KAAK6k+B,mBAAmBK,GAAc,IAClCrp3B,MAAO+E,EAAS9G,WAAkB95G,KAAKs6H,qBAAsBt6H,SAC7D67G,MAAO+E,EAASizzB,mBAAgC7z6B,KAAKs6H,qBAAsBt6H,QAUnFm0H,EAAa9zG,UAAU8k9B,YAAc,SAAUD,EAAYtk3B,GACvD,IAAIp4G,GAAQ,EACRtD,EAAK07G,EAAQqL,QACjB,YAAW9mH,IAAPD,IACMA,EAAG6F,aAAc/K,KAAK2k+B,SAIxBn89B,GAAQ,EAHRxI,KAAK2k+B,SAASz/9B,EAAG6F,YAAc61G,GAMnCp4G,OACAk2G,OAASwm3B,KAAcll+B,KAAK4k+B,WAAY,IACxC5k+B,KAAK4k+B,UAAUM,GAActk3B,GAE1Bp4G,GAOX2rH,EAAa9zG,UAAUi4G,YAAc,SAAUnsG,GAC3CnsB,KAAK+k+B,oBAAoB548B,GACzBnsB,KAAK0wH,WAOTyD,EAAa9zG,UAAU0k9B,oBAAsB,SAAU548B,GAInD,QAHIk58B,EAAU,GACVC,EAAc,GACdC,EAAmB,GACd529B,GAAI,EAAGm77B,GAAW396B,EAASpmB,OAAQ4I,GAAIm77B,GAAUn77B,KAAK,CAC3D,IACIu29B,MAAa9q2B,MADbxZ,GAAUz0F,EAASxd,KAEnB3O,KAAKml+B,YAAYD,GAAYtk3B,KAC7B0k3B,EAAY7/9B,KAAKm7G,IAGhBjyG,GAAI,EAAb,QAAgB629B,GAAWF,EAAYv/9B,OAAQ4I,GAAI629B,GAAU729B,KAAK,CAC9D,IAAIiyG,GACAsk3B,MAAa9q2B,MADbxZ,GAAU0k3B,EAAY329B,KAE1B3O,KAAKol+B,mBAAmBF,GAAYtk3B,IACpC,IAAI1X,GAAW0X,GAAQhiC,cACvB,GAAIsqB,GAAU,CACV,IAAIknB,GAASlnB,GAAS+X,YACtBok3B,EAAQ5/9B,KAAK2qH,IACbm12B,EAAiB9/9B,KAAKm7G,SAGtB5gH,KAAK0k+B,sBAAsBQ,IAActk3B,GAG7C5gH,KAAKwk+B,gBACLxk+B,KAAKwk+B,eAAerm0B,KAAKkn0B,EAASE,GAE7B529B,GAAI,EAAb,QAAgB829B,GAAWH,EAAYv/9B,OAAQ4I,GAAI829B,GAAU929B,KACzD3O,KAAKo7G,cAAc,IAAIgp3B,EAAkBvo2B,eAA4Byp2B,EAAY329B,OAOzFwlH,EAAa9zG,UAAU2k9B,wBAA0B,SAAUt81B,GACvD,IAAIg91B,GAAsB,EAC1B1l+B,KAAKwV,iBAAiBqmH,eAItB,SAAUlD,GACD+s2B,IACDA,GAAsB,EACtBh91B,EAAWjjI,KAAKkzH,EAAI/X,SACpB8k3B,GAAsB,KAG9B1l+B,KAAKwV,iBAAiBqmH,kBAItB,SAAUlD,GACD+s2B,IACDA,GAAsB,EACtBh91B,EAAWjqF,OAAOk6E,EAAI/X,SACtB8k3B,GAAsB,KAG9Bh91B,EAAWlzH,iBAAiBomH,QAI5B,SAAUjD,GACD+s2B,IACDA,GAAsB,EACtB1l+B,KAAK+3H,WACqDY,EAAIjkH,SAC9Dgx9B,GAAsB,IAE5B7/8B,KAAK7lB,OACP0oI,EAAWlzH,iBAAiBomH,WAI5B,SAAUjD,GACD+s2B,IACDA,GAAsB,EACtB1l+B,KAAKy6H,cACqD9B,EAAIjkH,SAC9Dgx9B,GAAsB,IAE5B7/8B,KAAK7lB,OACPA,KAAK8k+B,oBAAsBp81B,GAO/BvU,EAAa9zG,UAAUi/B,MAAQ,SAAU466B,GACrC,GAAIA,EAAU,CACV,QAAS7v0B,KAAarqJ,KAAK6k+B,mBACZ7k+B,KAAK6k+B,mBAAmBx60B,GAC9BzjJ,QAAQ80H,MAEZ17H,KAAK8k+B,sBACN9k+B,KAAK6k+B,mBAAqB,GAC1B7k+B,KAAK2k+B,SAAW,GAChB3k+B,KAAK4k+B,UAAY,YAIjB5k+B,KAAKwk+B,eAEL,QAASt/9B,KADTlF,KAAKwk+B,eAAe599B,QAAQ5G,KAAK2l+B,sBAAsB9/8B,KAAK7lB,OAC7CA,KAAK0k+B,sBAChB1k+B,KAAK2l+B,sBAAsB3l+B,KAAK0k+B,sBAAsBx/9B,IAI9DlF,KAAK8k+B,qBACL9k+B,KAAK8k+B,oBAAoBxl7B,QAEzBt/C,KAAKwk+B,gBACLxk+B,KAAKwk+B,eAAell7B,QAExBt/C,KAAK0k+B,sBAAwB,GAC7B,IAAI78V,GAAa,IAAIu8V,EAAkBvo2B,WACvC77H,KAAKo7G,cAAcyshB,IACnB7noB,KAAK0wH,WAcTyD,EAAa9zG,UAAUul9B,eAAiB,SAAU/19B,GAC9C,GAAI7P,KAAKwk+B,eACL,OAAOxk+B,KAAKwk+B,eAAe599B,QAAQiJ,GAE9B7P,KAAK8k+B,qBACV9k+B,KAAK8k+B,oBAAoBl+9B,QAAQiJ,IAezCskH,EAAa9zG,UAAUwl9B,iCAAmC,SAAU163B,EAAYt7F,GAE5E,OAAO7P,KAAK8l+B,uBADC,CAAC363B,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,IAC3B,SAAUyV,GAEjD,GADeA,EAAQhiC,cACV4uC,qBAAqBriB,GAC9B,OAAOt7F,EAAS+wG,MA0B5BuT,EAAa9zG,UAAUyl9B,uBAAyB,SAAU112B,EAAQvgH,GAC9D,GAAI7P,KAAKwk+B,eACL,OAAOxk+B,KAAKwk+B,eAAe/o2B,gBAAgBrL,EAAQvgH,GAE9C7P,KAAK8k+B,qBACV9k+B,KAAK8k+B,oBAAoBl+9B,QAAQiJ,IAkBzCskH,EAAa9zG,UAAU0l9B,iCAAmC,SAAU312B,EAAQvgH,GACxE,OAAO7P,KAAK8l+B,uBAAuB112B,EAKnC,SAAUxP,GAEN,GADeA,EAAQhiC,cACV2xC,iBAAiBH,GAAS,CACnC,IAAI79G,GAAS1C,EAAS+wG,GACtB,GAAIruG,GACA,OAAOA,OAYvB4hH,EAAa9zG,UAAU2l9B,sBAAwB,WAC3C,OAAOhm+B,KAAK8k+B,qBAOhB3w2B,EAAa9zG,UAAUooG,YAAc,WACjC,IAAIt8F,EACJ,OAAInsB,KAAK8k+B,oBACL348B,EAAWnsB,KAAK8k+B,oBAAoB/h3B,WAE/B/iH,KAAKwk+B,iBACVr48B,EAAWnsB,KAAKwk+B,eAAeyB,UAC1Bzy5B,QAAQxzE,KAAK0k+B,2BACdxs2B,MAAO/rG,GAAUivG,QAAUp7H,KAAK0k+B,yBAGgCv48B,GAQ5EgoG,EAAa9zG,UAAU6l9B,wBAA0B,SAAU/63B,GACvD,IAAIh/E,EAAW,GACf,YAAK058B,iCAAiC163B,EAAY,SAAUyV,GACxDz0F,EAAS1mB,KAAKm7G,KAEXz0F,GAcXgoG,EAAa9zG,UAAUyoG,oBAAsB,SAAUsH,GACnD,OAAIpwH,KAAKwk+B,eACExk+B,KAAKwk+B,eAAepo2B,YAAYhM,GAElCpwH,KAAK8k+B,oBACH9k+B,KAAK8k+B,oBAAoB/h3B,WAGzB,IAefoR,EAAa9zG,UAAU8l9B,8BAAgC,SAAUh73B,EAAYi73B,GAQzE,IAAIz89B,EAAIwhG,EAAW,GACfr3C,EAAIq3C,EAAW,GACfk73B,GAAiB,KACjBzw3B,GAAe,CAACkd,IAAKA,KACrBlD,GAAqB2C,IACrBnC,GAAS,EAAC,KAAW,IAAWmC,IAAUA,KAC1CxlH,GAASq59B,GAA0B1z2B,KACvC,YAAK8x2B,eAAe/o2B,gBAAgBrL,GAIpC,SAAUxP,IACN,GAAI7zG,GAAO6zG,IAAU,CACjB,IAAI1X,GAAW0X,GAAQhiC,cACnB0n5B,GAA6B122B,GAEjC,IADAA,GAAqB1mB,GAASymB,eAAehmH,EAAGmqD,EAAG8hD,GAAcga,KACxC022B,GAA4B,CACjDD,GAAiBzl3B,GAKjB,IAAI87B,GAAcxvI,KAAKqnF,KAAKq7B,IAC5BQ,GAAO,GAAKzmH,EAAI+yI,GAChBtsB,GAAO,GAAKt8D,EAAI4oF,GAChBtsB,GAAO,GAAKzmH,EAAI+yI,GAChBtsB,GAAO,GAAKt8D,EAAI4oF,OAIrB2p1B,IAYXly2B,EAAa9zG,UAAU4gG,UAAY,SAAUy70B,GACzC,OAAO187B,KAAKwk+B,eAAevj3B,UAAUy70B,IAWzCvo0B,EAAa9zG,UAAU4pI,eAAiB,SAAU/kJ,GAC9C,IAAI07G,EAAU5gH,KAAK2k+B,SAASz/9B,EAAG6F,YAC/B,YAAmB5F,IAAZy7G,EAAwBA,EAAU,MAQ7CuT,EAAa9zG,UAAU09H,gBAAkB,SAAU3hG,GAC/C,IAAIwkE,EAAU5gH,KAAK4k+B,UAAUxo7B,GAC7B,YAAmBj3C,IAAZy7G,EAAwBA,EAAU,MAQ7CuT,EAAa9zG,UAAUkyN,UAAY,WAC/B,OAAOvyO,KAAKoyO,SAKhBj+G,EAAa9zG,UAAUs1N,YAAc,WACjC,OAAO31O,KAAK+0O,WAQhB5gH,EAAa9zG,UAAUkm9B,OAAS,WAC5B,OAAOvm+B,KAAKsyO,MAMhBn+G,EAAa9zG,UAAUi6G,qBAAuB,SAAU3sH,GACpD,IAAIizG,EAAoEjzG,EAAMjF,OAC1Ew89B,GAAa9q2B,QAAOxZ,GACpB1X,EAAW0X,EAAQhiC,cACvB,GAAKsqB,EAQA,CACD,IAAIknB,GAASlnB,EAAS+X,YAClBik3B,KAAcll+B,KAAK0k+B,8BACZ1k+B,KAAK0k+B,sBAAsBQ,GAC9Bll+B,KAAKwk+B,gBACLxk+B,KAAKwk+B,eAAehm5B,OAAO4xC,GAAQxP,IAInC5gH,KAAKwk+B,gBACLxk+B,KAAKwk+B,eAAe992B,OAAO0J,GAAQxP,QAjBrCsk3B,KAAcll+B,KAAK0k+B,wBACjB1k+B,KAAKwk+B,gBACLxk+B,KAAKwk+B,eAAe/l7B,OAAOmiE,GAE/B5gH,KAAK0k+B,sBAAsBQ,GAActk3B,GAiBjD,IAAI17G,GAAK07G,EAAQqL,QACjB,QAAW9mH,IAAPD,GAAkB,CAClB,IAAIsh+B,GAAMth+B,GAAG6F,WACT/K,KAAK2k+B,SAAS6B,MAAS5l3B,IACvB5gH,KAAKym+B,mBAAmB7l3B,GACxB5gH,KAAK2k+B,SAAS6B,IAAO5l3B,QAIzB5gH,KAAKym+B,mBAAmB7l3B,GACxB5gH,KAAK4k+B,UAAUM,GAActk3B,EAEjC5gH,KAAK0wH,UACL1wH,KAAKo7G,cAAc,IAAIgp3B,EAAkBvo2B,kBAA+Bjb,KAQ5EuT,EAAa9zG,UAAU8xqB,WAAa,SAAUvxkB,GAC1C,IAAI17G,EAAK07G,EAAQqL,QACjB,YAAW9mH,IAAPD,EACOA,KAAMlF,KAAK2k+B,UAGXvq2B,QAAOxZ,KAAY5gH,KAAK4k+B,WAMvCzw2B,EAAa9zG,UAAUmzD,QAAU,WAC7B,OAAOxzE,KAAKwk+B,eAAehx5B,YAAaA,QAAQxzE,KAAK0k+B,wBAOzDvw2B,EAAa9zG,UAAUinG,aAAe,SAAU8I,EAAQhS,EAAYH,GAChE,IAAIyo3B,EAAqB1m+B,KAAKyk+B,oBAC1BkC,GAAgB3m+B,KAAKsk+B,UAAUl02B,EAAQhS,GAC3Cp+G,KAAKkrD,SAAU,EAkBf,QAjBIwm5B,GAAU,SAAU/i8B,GAAGgtG,IACvB,IAAIir3B,GAAeD,GAAch49B,IACb+39B,EAAmBjr2B,gBAAgBmr2B,GAKvD,SAAU/99B,IACN,OAAOq4G,QAAer4G,GAAOunH,OAAQw22B,QAGrC90B,GAAOh0yB,QAAQlqI,KAAKk+6B,GAAQ80B,GAAcxo3B,EAAYH,GACtDyo3B,EAAmBlo5B,OAAOoo5B,GAAc,CAAEx22B,OAAQw22B,GAAah49B,UAC/Dkj8B,GAAO5m5B,QAAU4m5B,GAAOh0yB,UAAYu5xB,OAGxCya,GAAS9x8B,KACJ2O,GAAI,EAAGgtG,GAAKgr3B,GAAc5g+B,OAAQ4I,GAAIgtG,KAAMhtG,GACjD+i8B,GAAQ/i8B,KAGhBwlH,EAAa9zG,UAAU2zC,QAAU,WAC7Bh0D,KAAKs/C,OAAM,GACXt/C,KAAKyk+B,oBAAoBnl7B,QACzB25D,EAAO54F,UAAU2zC,QAAQpgC,KAAK5zB,OAOlCm0H,EAAa9zG,UAAUwm9B,mBAAqB,SAAUz22B,GAClD,IACI1wD,EADAgn6B,EAAqB1m+B,KAAKyk+B,oBAE9BiC,EAAmBjr2B,gBAAgBrL,EAAQ,SAAUvnH,GACjD,IAAIo1D,QAAOp1D,EAAOunH,OAAQA,GACtB1wD,SAAM72D,GACC,IAGX62D,GACAgn6B,EAAmBjo7B,OAAOihB,IAUlCy0D,EAAa9zG,UAAUo6G,cAAgB,SAAU7Z,GAC7C,IAAIsk3B,KAAa9q2B,MAAOxZ,GACpBsk3B,KAAcll+B,KAAK0k+B,6BACZ1k+B,KAAK0k+B,sBAAsBQ,GAG9Bll+B,KAAKwk+B,gBACLxk+B,KAAKwk+B,eAAe/l7B,OAAOmiE,GAGnC5gH,KAAK2l+B,sBAAsB/k3B,GAC3B5gH,KAAK0wH,WAOTyD,EAAa9zG,UAAUsl9B,sBAAwB,SAAU/k3B,GACrD,IAAIsk3B,KAAa9q2B,MAAOxZ,GACxB5gH,KAAK6k+B,mBAAmBK,GAAYt+9B,QAAQ80H,aACrC17H,KAAK6k+B,mBAAmBK,GAC/B,IAAIhg+B,EAAK07G,EAAQqL,aACN9mH,IAAPD,UACOlF,KAAK2k+B,SAASz/9B,EAAG6F,mBAErB/K,KAAK4k+B,UAAUM,GACtBll+B,KAAKo7G,cAAc,IAAIgp3B,EAAkBvo2B,kBAA+Bjb,KAS5EuT,EAAa9zG,UAAUom9B,mBAAqB,SAAU7l3B,GAClD,IAAIohB,GAAU,EACd,QAAS98H,KAAMlF,KAAK2k+B,SAChB,GAAI3k+B,KAAK2k+B,SAASz/9B,KAAQ07G,EAAS,QACxB5gH,KAAK2k+B,SAASz/9B,GACrB88H,GAAU,EACV,MAGR,OAAOA,GAQX7N,EAAa9zG,UAAUuyN,UAAY,SAAUC,GACzC7yO,KAAK89J,QAAU+0E,GAOnB1+G,EAAa9zG,UAAUmgJ,OAAS,SAAU1hJ,IACtC4/F,OAAO1+G,KAAKoyO,QAAS,GACrBpyO,KAAK4yO,WAAU/qN,QAAI/I,EAAK9e,KAAKoyO,WAE1Bj+G,EApxBuB,CAqxBhC20B,KACF,SAAe30B,kDCr7Bf,QAAe,CAMX2y2B,WAAY,aAMZC,cAAe,gBAMf7rC,MAAO,QAOP8rC,cAAe,uHCVRC,EAAiB,UAUrB,WAAqB583B,EAAIC,EAAI8kB,GAChC,IAAI38B,EAAS28B,GAAc632B,EACvBC,KAAO7zrB,MAAUhpM,EAAG,IACpB883B,GAAO9zrB,QAAU/oM,EAAG,IACpB883B,GAAeD,EAAOD,GAAQ,EAC9BG,KAAch0rB,MAAU/oM,EAAG,GAAKD,EAAG,IAAM,EACzCl4E,EAAIjlB,KAAKwkF,IAAI014B,GAAel69B,KAAKwkF,IAAI014B,GACrCl69B,KAAKwkF,IAAI214B,GACLn69B,KAAKwkF,IAAI214B,GACTn69B,KAAK65E,IAAImg5B,GACTh69B,KAAK65E,IAAIog5B,GACjB,OAAO,EAAI104B,EAASvlF,KAAKqkF,MAAMrkF,KAAKqnF,KAAKpiE,GAAIjlB,KAAKqnF,KAAK,EAAIpiE,IAQ/D,WAA2B22E,EAAarW,GAEpC,QADI1sF,EAAS,EACJ4I,EAAI,EAAGgtG,EAAK7S,EAAY/iG,OAAQ4I,EAAIgtG,EAAK,IAAKhtG,EACnD5I,GAAUmm1B,EAAYpjvB,EAAYn6F,GAAIm6F,EAAYn6F,EAAI,GAAI8jF,GAE9D,OAAO1sF,EAcJ,WAAmBmjG,EAAUgQ,GAChC,IAAIn6F,EAAUm6F,GAAe,GACzBzmB,EAAS1zE,EAAQ0zE,QAAUw04B,EAC3Bhp3B,EAAal/F,EAAQk/F,YAAc,YACnCn2G,EAAOohG,EAAST,UAChB3gG,IAASwoH,0BACTpnB,EAAWA,EAASsmB,QAAQnlH,UAAU4zG,EAAY,cAEtD,IACInV,EAAajwB,EAAQlqE,EAAGgtG,EAAIna,EAAGg8B,EAD/Bz3H,EAAS,EAEb,OAAQ+B,QACCwoH,eACAA,gBACD,WAECA,qBACAA,gBAEDvqH,EAASuh+B,EADTx+3B,EAAyEI,EAAU9mB,iBAC3CqQ,GACxC,WAEC69B,2BACAA,YAED,IAAK3hH,EAAI,EAAGgtG,GADZ7S,EAAyEI,EAAU9mB,kBACtDr8E,OAAQ4I,EAAIgtG,IAAMhtG,EAC3C5I,GAAUuh+B,EAAkBx+3B,EAAYn6F,GAAI8jF,GAEhD,WAEC69B,kBAED,IAAK3hH,EAAI,EAAGgtG,GADZ7S,EAAyEI,EAAU9mB,kBACtDr8E,OAAQ4I,EAAIgtG,IAAMhtG,EAE3C,IAAK6yF,EAAI,EAAGg8B,GADZ3kD,EAASiwB,EAAYn6F,IACG5I,OAAQy7F,EAAIg8B,IAAMh8B,EACtCz7F,GAAUuh+B,EAAkBzu5B,EAAO2oB,GAAI/O,GAG/C,WAEC69B,wBACD,IAAIgN,EAA4Ep0B,EAAUm21B,gBAC1F,IAAK1w7B,EAAI,EAAGgtG,EAAK2hB,EAAWv3H,OAAQ4I,EAAIgtG,IAAMhtG,EAC1C5I,GAAUssG,EAAUirB,EAAW3uH,GAAIuqG,GAEvC,cAGA,MAAM,IAAIziG,MAAM,8BAAgC3O,GAGxD,OAAO/B,EAgBX,WAAyB+iG,EAAarW,GAKlC,QAJIs2D,EAAO,EACPz0D,EAAMwU,EAAY/iG,OAClBovE,EAAK2zB,EAAYxU,EAAM,GAAG,GAC1Bzf,EAAKi0B,EAAYxU,EAAM,GAAG,GACrB3lF,EAAI,EAAGA,EAAI2lF,EAAK3lF,IAAK,CAC1B,IAAI8mE,EAAKqzB,EAAYn6F,GAAG,GACpBkuoB,EAAK/ziB,EAAYn6F,GAAG,GACxBo6I,MACIsqJ,MAAU59N,EAAKN,IACV,EAAIjoE,KAAKwkF,KAAI2hN,QAAUx+N,IAAO3nE,KAAKwkF,KAAI2hN,QAAUwpW,KAC1D1nkB,EAAKM,EACLZ,EAAKgokB,EAET,OAAQ9zf,EAAOt2D,EAASA,EAAU,EAY/B,WAAiByW,EAAUgQ,GAC9B,IAAIn6F,EAAUm6F,GAAe,GACzBzmB,EAAS1zE,EAAQ0zE,QAAUw04B,EAC3Bhp3B,EAAal/F,EAAQk/F,YAAc,YACnCn2G,EAAOohG,EAAST,UAChB3gG,IAASwoH,0BACTpnB,EAAWA,EAASsmB,QAAQnlH,UAAU4zG,EAAY,cAEtD,IACInV,EAAajwB,EAAQlqE,EAAGgtG,EAAIna,EAAGg8B,EAD/BurB,EAAO,EAEX,OAAQjhJ,QACCwoH,eACAA,qBACAA,qBACAA,2BACAA,gBACD,WAECA,YAGD,IAFAxnB,EAAkEI,EAAU9mB,iBAC5E2mE,EAAO77I,KAAKiN,IAAIot9B,EAAgBz+3B,EAAY,GAAIrW,IAC3C9jF,EAAI,EAAGgtG,EAAK7S,EAAY/iG,OAAQ4I,EAAIgtG,IAAMhtG,EAC3Co6I,GAAQ77I,KAAKiN,IAAIot9B,EAAgBz+3B,EAAYn6F,GAAI8jF,IAErD,WAEC69B,kBAED,IAAK3hH,EAAI,EAAGgtG,GADZ7S,EAAyEI,EAAU9mB,kBACtDr8E,OAAQ4I,EAAIgtG,IAAMhtG,EAG3C,IAFAkqE,EAASiwB,EAAYn6F,GACrBo6I,GAAQ77I,KAAKiN,IAAIot9B,EAAgB1u5B,EAAO,GAAI4Z,IACvC+O,EAAI,EAAGg8B,EAAK3kD,EAAO9yE,OAAQy7F,EAAIg8B,IAAMh8B,EACtCunD,GAAQ77I,KAAKiN,IAAIot9B,EAAgB1u5B,EAAO2oB,GAAI/O,IAGpD,WAEC69B,wBACD,IAAIgN,EAA4Ep0B,EAAUm21B,gBAC1F,IAAK1w7B,EAAI,EAAGgtG,EAAK2hB,EAAWv3H,OAAQ4I,EAAIgtG,IAAMhtG,EAC1Co6I,GAAQ87F,EAAQvnH,EAAW3uH,GAAIuqG,GAEnC,cAGA,MAAM,IAAIziG,MAAM,8BAAgC3O,GAGxD,OAAOihJ,EAaJ,WAAgB1+C,EAAI3oB,EAAU8l5B,EAASp42B,GAC1C,IAAI38B,EAAS28B,GAAc632B,EACvBC,KAAO7zrB,MAAUhpM,EAAG,IACpBo93B,KAAOp0rB,MAAUhpM,EAAG,IACpBq93B,EAAOhm5B,EAAW+Q,EAClBk14B,EAAMz69B,KAAKyyoB,KAAKzyoB,KAAKwkF,IAAIw14B,GAAQh69B,KAAK65E,IAAI2g5B,GAC1Cx69B,KAAK65E,IAAImg5B,GAAQh69B,KAAKwkF,IAAIg24B,GAAQx69B,KAAK65E,IAAIyg5B,IAC3CxwB,EAAMywB,EACNv69B,KAAKqkF,MAAMrkF,KAAKwkF,IAAI814B,GAAWt69B,KAAKwkF,IAAIg24B,GAAQx69B,KAAK65E,IAAImg5B,GAAOh69B,KAAK65E,IAAI2g5B,GAAQx69B,KAAKwkF,IAAIw14B,GAAQh69B,KAAKwkF,IAAIi24B,IAC/G,MAAO,IAACC,MAAU5wB,MAAM4wB,MAAUD,6GC/BtC,QAlL2B,WAIvB,WAAeE,GAIX7n+B,KAAK8n+B,OAAS,IAAIC,IAAJ,CAAWF,GAOzB7n+B,KAAKgo+B,OAAS,GAOlBxu2B,SAAMn5G,UAAUm+D,OAAS,SAAU4xC,EAAQzsH,GAEvC,IAAIqP,EAAO,CACP8kF,KAAMs4B,EAAO,GACbslnB,KAAMtlnB,EAAO,GACbr4B,KAAMq4B,EAAO,GACbulnB,KAAMvlnB,EAAO,GACbzsH,MAAOA,GAEX3D,KAAK8n+B,OAAOtp5B,OAAOxrE,GACnBhT,KAAKgo+B,QAAO5t2B,QAAOz2H,IAAUqP,GAOjCwmH,EAAMn5G,UAAU89I,KAAO,SAAUkn0B,EAASh/9B,GAEtC,QADImsD,EAAQ,IAAIlkD,MAAMjI,EAAON,QACpB4I,EAAI,EAAGo5B,EAAI1hC,EAAON,OAAQ4I,EAAIo5B,EAAGp5B,IAAK,CAC3C,IAAIyhH,EAASi12B,EAAQ129B,GACjBhL,EAAQ0C,EAAOsI,GAEfqE,EAAO,CACP8kF,KAAMs4B,EAAO,GACbslnB,KAAMtlnB,EAAO,GACbr4B,KAAMq4B,EAAO,GACbulnB,KAAMvlnB,EAAO,GACbzsH,MAAOA,GAEX6uD,EAAM7jD,GAAKqE,EACXhT,KAAKgo+B,QAAO5t2B,QAAOz2H,IAAUqP,EAEjChT,KAAK8n+B,OAAO3p0B,KAAK3rG,IAOrBgnE,EAAMn5G,UAAUo+B,OAAS,SAAU96C,GAC/B,IAAIy4C,GAAMg+E,QAAOz2H,GAGbqP,EAAOhT,KAAKgo+B,OAAO5r7B,GACvB,cAAOp8C,KAAKgo+B,OAAO5r7B,GACiB,OAA7Bp8C,KAAK8n+B,OAAOrp7B,OAAOzrC,IAO9BwmH,EAAMn5G,UAAUqmG,OAAS,SAAU0J,EAAQzsH,GACvC,IAAIqP,EAAOhT,KAAKgo+B,QAAO5t2B,QAAOz2H,OAEzBs6D,MADM,CAACjrD,EAAK8kF,KAAM9kF,EAAK0iuB,KAAM1iuB,EAAK+kF,KAAM/kF,EAAK2iuB,MAChCvlnB,KACdpwH,KAAKy+C,OAAO96C,GACZ3D,KAAKw+E,OAAO4xC,EAAQzsH,KAO5B61H,EAAMn5G,UAAU4l9B,OAAS,WAErB,OADYjm+B,KAAK8n+B,OAAOptiB,MACX/0b,IAAI,SAAUqN,GACvB,OAAOA,EAAKrP,SAQpB61H,EAAMn5G,UAAU+7G,YAAc,SAAUhM,GASpC,OADYpwH,KAAK8n+B,OAAO328B,OANb,CACP2mE,KAAMs4B,EAAO,GACbslnB,KAAMtlnB,EAAO,GACbr4B,KAAMq4B,EAAO,GACbulnB,KAAMvlnB,EAAO,KAGJzqH,IAAI,SAAUqN,GACvB,OAAOA,EAAKrP,SAUpB61H,EAAMn5G,UAAUzZ,QAAU,SAAUiJ,GAChC,OAAO7P,KAAKio+B,SAASjo+B,KAAKim+B,SAAUp29B,IAQxC2pH,EAAMn5G,UAAUo7G,gBAAkB,SAAUrL,EAAQvgH,GAChD,OAAO7P,KAAKio+B,SAASjo+B,KAAKo8H,YAAYhM,GAASvgH,IAQnD2pH,EAAMn5G,UAAU4n9B,SAAW,SAAU5h+B,EAAQwJ,GAEzC,QADI0C,EACK5D,EAAI,EAAGo5B,EAAI1hC,EAAON,OAAQ4I,EAAIo5B,EAAGp5B,IAEtC,GADA4D,EAAS1C,EAASxJ,EAAOsI,IAErB,OAAO4D,EAGf,OAAOA,GAKXinH,EAAMn5G,UAAUmzD,QAAU,WACtB,OAAOA,QAAQxzE,KAAKgo+B,SAKxBxu2B,EAAMn5G,UAAUi/B,MAAQ,WACpBt/C,KAAK8n+B,OAAOxo7B,QACZt/C,KAAKgo+B,OAAS,IAMlBxu2B,EAAMn5G,UAAU4gG,UAAY,SAAUy70B,GAClC,IAAI5p7B,EAAO9S,KAAK8n+B,OAAO59rB,SACvB,SAAO75K,MAAev9G,EAAKglF,KAAMhlF,EAAK4iuB,KAAM5iuB,EAAKilF,KAAMjlF,EAAK6iuB,KAAM+mN,IAKtElj0B,EAAMn5G,UAAUszB,OAAS,SAAUu07B,GAE/B,QAASv59B,KADT3O,KAAK8n+B,OAAO3p0B,KAAK+p0B,EAAMJ,OAAOptiB,OAChBwtiB,EAAMF,OAChBho+B,KAAKgo+B,OAAOr59B,GAAKu59B,EAAMF,OAAOr59B,IAG/B6qH,EAhLgB,uDClBnB7gB,mEADJC,GACID,EAAgB,SAAUntG,EAAG0mB,GAC7BymF,SAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,EAAG0mB,GAAK1mB,EAAE8U,UAAY4R,IACvE,SAAU1mB,EAAG0mB,GAAK,QAASuyC,KAAKvyC,EAAOA,EAAEma,eAAeo4B,KAAIj5D,EAAEi5D,GAAKvyC,EAAEuyC,MACpDj5D,EAAG0mB,IAErB,SAAU1mB,EAAG0mB,GAEhB,aAAgBlyB,KAAKF,YAAc0L,EADnCmtG,EAAcntG,EAAG0mB,GAEjB1mB,EAAE6U,UAAkB,OAAN6R,EAAarsB,OAAOm8D,OAAO9vC,IAAM4mF,EAAGz4F,UAAY6R,EAAE7R,UAAW,IAAIy4F,KA0CnFqv3B,EAA8B,SAAUlv3B,GAKxC,WAAsBl6F,GAClB,IAAIo6F,EAAQn5G,KAKZm5G,SAAQF,EAAOrlF,KAAK5zB,KAAM,CACtBoK,QAAS,EACTi1O,oBAH4Cl6O,IAA3B4Z,EAAQsgO,gBAA+BtgO,EAAQsgO,eAIhEpjF,cAA+B92J,IAArB4Z,EAAQk9I,SAAyBl9I,EAAQk9I,SAAW,EAC9Dv7D,MAAO,EACP0n4B,kBAAuCjj+B,IAAzB4Z,EAAQqp9B,aAA6Brp9B,EAAQqp9B,aAAe,CAAC,EAAG,MAC5Epo+B,MAKA+9J,QAAU,GAKhB5kD,EAAMkv3B,oBAAsB,KAK5Blv3B,EAAMwt2B,WAAyBxh9B,IAAjB4Z,EAAQrQ,KAAqBqQ,EAAQrQ,KAAO,KAK1DyqG,EAAMmv3B,QAAU,CAAC,EAAG,GAKpBnv3B,EAAMkt0B,QAAUtn6B,EAAQ+gE,OAKxBq5B,EAAMov3B,aACiBpj+B,IAAnB4Z,EAAQ0zE,OAAuB1zE,EAAQ0zE,OAAS1zE,EAAQyp9B,QAK5Drv3B,EAAMsv3B,SAAW1p9B,EAAQ2p9B,QAKzBvv3B,EAAMmt0B,YAA2Bnh7B,IAAlB4Z,EAAQuyE,MAAsBvyE,EAAQuyE,MAAQ,EAK7D6nB,EAAMwv3B,aAA6Bxj+B,IAAnB4Z,EAAQ8iI,OAAuB9iI,EAAQ8iI,OAAS,KAKhE1oC,EAAMgv0B,QAAU,KAKhBhv0B,EAAMyv3B,MAAQ,KAKdzv3B,EAAM0v3B,WAAa,KAKnB1v3B,EAAM2v3B,uBAAyB,KAC/B3v3B,EAAMwD,SACCxD,EAOXgv3B,OA3FAvv3B,EAAUuv3B,EAAclv3B,GA2FxBkv3B,EAAa9n9B,UAAUmvG,MAAQ,WAC3B,IAAIrlH,EAAQ,IAAIg+9B,EAAa,CACzBz59B,KAAM1O,KAAK2/O,UAAY3/O,KAAK2/O,UAAUnwH,aAAUrqH,EAChD26E,OAAQ9/E,KAAK0l8B,YACbjz2B,OAAQzyF,KAAKgwH,YACb042B,QAAS1o+B,KAAK+o+B,aACdz34B,MAAOtxF,KAAKsuI,WACZuT,OAAQ7hJ,KAAK8t9B,YAAc9t9B,KAAK8t9B,YAAYt+1B,aAAUrqH,EACtD82J,SAAUj8J,KAAK4s1B,cACfvtmB,eAAgBr/O,KAAKqi9B,oBACrB+lB,aAAcpo+B,KAAKgp+B,kBAAkBp69B,UAEzCzE,SAAMk4tB,WAAWriuB,KAAK8t8B,cACtB3j8B,EAAM8+9B,SAASjp+B,KAAKgmG,YACb77F,GAQXg+9B,EAAa9n9B,UAAUw6pB,UAAY,WAC/B,OAAO76qB,KAAKmo7B,SAOhBggD,EAAa9n9B,UAAUiuH,SAAW,WAC9B,OAAOtuI,KAAKsm7B,QAOhB6hD,EAAa9n9B,UAAUs/N,QAAU,WAC7B,OAAO3/O,KAAK2m9B,OAKhBwhB,EAAa9n9B,UAAU+h8B,qBAAuB,WAC1C,IAAKpi9B,KAAKqo+B,oBAAqB,CAC3B,IAAIa,EAAgBlp+B,KAAKmp+B,sBACzBnp+B,KAAKop+B,0BAA0BF,GAEnC,OAAOlp+B,KAAKqo+B,qBAQhBF,EAAa9n9B,UAAUy6I,SAAW,SAAU3L,GACxC,IAAKnvJ,KAAK+9J,QAAQ5O,GAAc,GAAI,CAChC,IAAI+50B,EAAgBlp+B,KAAKmp+B,sBACrB/l6B,KAAUywK,MAAsBq1vB,EAAcl66B,KAAOmgG,GAAc,EAAG+50B,EAAcl66B,KAAOmgG,GAAc,GAC7GnvJ,KAAKqp+B,MAAMH,EAAe9l6B,EAAS,EAAG,EAAG+rF,GAAc,GACvDnvJ,KAAK+9J,QAAQ5O,GAAc,GAAK/rF,EAAQ3nB,OAE5C,OAAOz7C,KAAK+9J,QAAQ5O,GAAc,IAMtCg50B,EAAa9n9B,UAAU07I,cAAgB,SAAU5M,GAC7C,OAAOA,GAKXg50B,EAAa9n9B,UAAU6y8B,aAAe,WAClC,OAAOlz9B,KAAK6o+B,YAKhBV,EAAa9n9B,UAAUip9B,yBAA2B,WAC9C,OAAOtp+B,KAAK8o+B,wBAKhBX,EAAa9n9B,UAAU448B,cAAgB,WACnC,OAAOp7zB,YAOXsq0B,EAAa9n9B,UAAUg3rB,UAAY,WAC/B,OAAOr3sB,KAAKso+B,SAOhBH,EAAa9n9B,UAAUql7B,UAAY,WAC/B,OAAO1l8B,KAAKqm7B,SAOhB8hD,EAAa9n9B,UAAU2vG,UAAY,WAC/B,OAAOhwH,KAAKuo+B,SAOhBJ,EAAa9n9B,UAAU0o9B,WAAa,WAChC,OAAO/o+B,KAAKyo+B,UAOhBN,EAAa9n9B,UAAUwmrB,QAAU,WAC7B,OAAO7msB,KAAK4o+B,OAOhBT,EAAa9n9B,UAAUyt8B,UAAY,WAC/B,OAAO9t9B,KAAK2o+B,SAKhBR,EAAa9n9B,UAAUu58B,kBAAoB,SAAUn37B,KAIrD0l8B,EAAa9n9B,UAAU89I,KAAO,aAI9Bgq0B,EAAa9n9B,UAAUs58B,oBAAsB,SAAUl37B,KAKvD0l8B,EAAa9n9B,UAAU8o9B,oBAAsB,WACzC,IAKI/nvB,EALArwF,EAAU6qzB,KACVvnS,EAAW0nS,KACXsE,EAAa,EACbT,EAAW,KACXG,EAAiB,EAEjBr8zB,EAAc,EA2BlB,OA1BI1jJ,KAAK2o+B,UAEe,QADpBvnvB,EAAcphP,KAAK2o+B,QAAQtxzB,cAEvB+pE,EAAc66tB,MAElB76tB,KAAck+tB,KAAYl+tB,QAENj8O,KADpBu+I,EAAc1jJ,KAAK2o+B,QAAQz05B,cAEvBwvE,EAAc04zB,MAElBwD,EAAW5/8B,KAAK2o+B,QAAQhpB,cACxBI,EAAiB//8B,KAAK2o+B,QAAQ7oB,yBAEb368B,KADjBkvqB,EAAWr0qB,KAAK2o+B,QAAQ1oB,iBAEpB5rS,EAAW0nS,WAGC528B,KADhB4rJ,EAAU/wJ,KAAK2o+B,QAAQlpB,gBAEnB1uzB,EAAU6qzB,WAGKz28B,KADnBk78B,EAAarg9B,KAAK2o+B,QAAQvoB,mBAEtBC,EAAarE,OAId,CACH56tB,YAAaA,EACb19F,YAAaA,EACb10F,KAJO,GAAKhvD,KAAKuo+B,QAAU7k1B,GAAe,EAK1CqN,QAASA,EACT6uzB,SAAUA,EACVG,eAAgBA,EAChB1rS,SAAUA,EACVgsS,WAAYA,IAMpB8nB,EAAa9n9B,UAAUs8F,OAAS,WAC5B,IAAIus3B,EAAgBlp+B,KAAKmp+B,sBACrB/l6B,GAAUywK,QAAsBq1vB,EAAcl66B,KAAMk66B,EAAcl66B,MACtEhvD,KAAKqp+B,MAAMH,EAAe9l6B,EAAS,EAAG,EAAG,GACzCpjE,KAAK+9J,QAAQ,GAAK36F,EAAQ3nB,OAE1B,IAAIuT,EAAOoU,EAAQ3nB,OAAO/kC,MACtB838B,EAAYx/5B,EACZo56B,EAAepo+B,KAAKgp+B,kBACxBhp+B,KAAK8o+B,uBAAyB,CAACI,EAAcl66B,KAAMk66B,EAAcl66B,MACjEhvD,KAAKop+B,0BAA0BF,GAC/Blp+B,KAAKmo7B,QAAU,CAACn53B,EAAO,EAAIo56B,EAAa,GAAIp56B,EAAO,EAAIo56B,EAAa,IACpEpo+B,KAAK4o+B,MAAQ,CAAC556B,EAAMA,GACpBhvD,KAAK6o+B,WAAa,CAACra,EAAWA,IAUlC2Z,EAAa9n9B,UAAUgp9B,MAAQ,SAAUH,EAAe9l6B,EAASz5D,EAAGmqD,EAAGq7F,GACnE,IAAIxgJ,EAAG469B,EAAQC,EAEfpm6B,EAAQ++pB,aAAahzkB,EAAY,EAAG,EAAGA,EAAY,EAAG,GAEtD/rF,EAAQ5qB,UAAU7uC,EAAGmqD,GACrBsP,EAAQi+K,YACR,IAAIvhK,EAAS9/E,KAAKqm7B,QAClB,GAAIvm2B,IAAWyyC,IACXnvD,EAAQg8kB,IAAI8pV,EAAcl66B,KAAO,EAAGk66B,EAAcl66B,KAAO,EAAGhvD,KAAKuo+B,QAAS,EAAG,EAAIr79B,KAAK45E,IAAI,OAEzF,CACD,IAAI4h5B,QAA4Bvj+B,IAAlBnF,KAAKyo+B,SAAyBzo+B,KAAKyo+B,SAAWzo+B,KAAKuo+B,QAIjE,IAHIG,KAAY1o+B,KAAKuo+B,UACjBzo5B,GAAS,GAERnxE,EAAI,EAAGA,GAAKmxE,EAAQnxE,IACrB469B,EAAc,EAAJ569B,EAAQzB,KAAK45E,GAAMhH,EAAS5yE,KAAK45E,GAAK,EAAI9mF,KAAKsm7B,OAEzDlj3B,EAAQs+K,OAAOwnvB,EAAcl66B,KAAO,GADpCw66B,EAAU769B,EAAI,GAAM,EAAI3O,KAAKuo+B,QAAUG,IACWx79B,KAAK65E,IAAIwi5B,GAASL,EAAcl66B,KAAO,EAAIw66B,EAAUt89B,KAAKwkF,IAAI634B,IAGxH,GAAIvp+B,KAAK2m9B,MAAO,CACZ,IAAIpn0B,EAAQv/I,KAAK2m9B,MAAMtvyB,WACT,OAAV93B,IACAA,EAAQo8zB,MAEZv44B,EAAQ8/pB,WAAYo8O,OAAY//zB,GAChCn8E,EAAQ10D,OAER1O,KAAK2o+B,UACLvl6B,EAAQg+K,YAAc8nvB,EAAc9nvB,YACpCh+K,EAAQk+K,UAAY4nvB,EAAcxl1B,YAC9BtgF,EAAQu/pB,aAAeumQ,EAActpB,WACrCx84B,EAAQu/pB,YAAYumQ,EAActpB,UAClCx84B,EAAQ284B,eAAiBmpB,EAAcnpB,gBAE3C384B,EAAQ2tF,QAAUm40B,EAAcn40B,QAChC3tF,EAAQixmB,SAAW60T,EAAc70T,SACjCjxmB,EAAQi94B,WAAa6oB,EAAc7oB,WACnCj94B,EAAQy+E,UAEZz+E,EAAQqiqB,aAMZ0iQ,EAAa9n9B,UAAU+o9B,0BAA4B,SAAUF,GAEzD,GADAlp+B,KAAKqo+B,oBAAsBro+B,KAAK86J,SAAS,GACrC96J,KAAK2m9B,MAAO,CACZ,IAAIpn0B,EAAQv/I,KAAK2m9B,MAAMtvyB,WAEnBjtK,EAAU,EAUd,GATqB,iBAAVm1I,IACPA,KAAQkq1B,MAAQlq1B,IAEN,OAAVA,EACAn1I,EAAU,EAELkE,MAAMqxB,QAAQ4/G,KACnBn1I,EAA2B,IAAjBm1I,EAAMx5I,OAAew5I,EAAM,GAAK,GAE9B,IAAZn1I,EAAe,CAGf,IAAIg5D,GAAUywK,QAAsBq1vB,EAAcl66B,KAAMk66B,EAAcl66B,MACtEhvD,KAAKqo+B,oBAAsBjl6B,EAAQ3nB,OACnCz7C,KAAK0p+B,wBAAwBR,EAAe9l6B,EAAS,EAAG,MAWpE+k6B,EAAa9n9B,UAAUqp9B,wBAA0B,SAAUR,EAAe9l6B,EAASz5D,EAAGmqD,GAElFsP,EAAQ5qB,UAAU7uC,EAAGmqD,GACrBsP,EAAQi+K,YACR,IAAIvhK,EAAS9/E,KAAKqm7B,QAClB,GAAIvm2B,IAAWyyC,IACXnvD,EAAQg8kB,IAAI8pV,EAAcl66B,KAAO,EAAGk66B,EAAcl66B,KAAO,EAAGhvD,KAAKuo+B,QAAS,EAAG,EAAIr79B,KAAK45E,IAAI,OAEzF,CACD,IAAI4h5B,OAA4Bvj+B,IAAlBnF,KAAKyo+B,SAAyBzo+B,KAAKyo+B,SAAWzo+B,KAAKuo+B,QAC7DG,IAAY1o+B,KAAKuo+B,UACjBzo5B,GAAS,GAEb,IAAInxE,OAAI,EAAQ669B,OAAU,EAAQD,OAAS,EAC3C,IAAK569B,EAAI,EAAGA,GAAKmxE,EAAQnxE,IACrB469B,EAAc,EAAJ569B,EAAQzB,KAAK45E,GAAMhH,EAAS5yE,KAAK45E,GAAK,EAAI9mF,KAAKsm7B,OAEzDlj3B,EAAQs+K,OAAOwnvB,EAAcl66B,KAAO,GADpCw66B,EAAU769B,EAAI,GAAM,EAAI3O,KAAKuo+B,QAAUG,GACWx79B,KAAK65E,IAAIwi5B,GAASL,EAAcl66B,KAAO,EAAIw66B,EAAUt89B,KAAKwkF,IAAI634B,IAGxHnm6B,EAAQ8/pB,UAAYy4O,KACpBv44B,EAAQ10D,OACJ1O,KAAK2o+B,UACLvl6B,EAAQg+K,YAAc8nvB,EAAc9nvB,YACpCh+K,EAAQk+K,UAAY4nvB,EAAcxl1B,YAC9Bwl1B,EAActpB,WACdx84B,EAAQu/pB,YAAYumQ,EAActpB,UAClCx84B,EAAQ284B,eAAiBmpB,EAAcnpB,gBAE3C384B,EAAQy+E,UAEZz+E,EAAQqiqB,aAEL0iQ,EA9auB,CA+ahCwB,KACF,QAAexB,ECpef,IAAIvv3B,EAAyC,WACzC,IAAID,EAAgB,SAAUntG,EAAG0mB,GAC7BymF,SAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,EAAG0mB,GAAK1mB,EAAE8U,UAAY4R,IACvE,SAAU1mB,EAAG0mB,GAAK,QAASuyC,KAAKvyC,EAAOA,EAAEma,eAAeo4B,KAAIj5D,EAAEi5D,GAAKvyC,EAAEuyC,MACpDj5D,EAAG0mB,IAE5B,OAAO,SAAU1mB,EAAG0mB,GAEhB,aAAgBlyB,KAAKF,YAAc0L,EADnCmtG,EAAcntG,EAAG0mB,GAEjB1mB,EAAE6U,UAAkB,OAAN6R,EAAarsB,OAAOm8D,OAAO9vC,IAAM4mF,EAAGz4F,UAAY6R,EAAE7R,UAAW,IAAIy4F,IAV1C,GA0BzC4mI,EAA6B,SAAUzmI,GAKvC,WAAqBC,GACjB,IACIn6F,EAAUm6F,GAA4B,GAC1CC,OAAQF,EAAOrlF,KAAK5zB,KAAM,CACtB8/E,OAAQyyC,IACR7jH,KAAMqQ,EAAQrQ,KACd+jF,OAAQ1zE,EAAQ0zE,OAChBovD,OAAQ9iI,EAAQ8iI,OAChBum1B,kBAAuCjj+B,IAAzB4Z,EAAQqp9B,aAA6Brp9B,EAAQqp9B,aAAe,CAAC,EAAG,MAC5Epo+B,KAQV0/O,OArBA9mI,EAAU8mI,EAAazmI,GAqBvBymI,EAAYr/N,UAAUmvG,MAAQ,WAC1B,IAAIrlH,EAAQ,IAAIu1O,EAAY,CACxBhxO,KAAM1O,KAAK2/O,UAAY3/O,KAAK2/O,UAAUnwH,aAAUrqH,EAChD08I,OAAQ7hJ,KAAK8t9B,YAAc9t9B,KAAK8t9B,YAAYt+1B,aAAUrqH,EACtDstF,OAAQzyF,KAAKgwH,YACbo42B,aAAcpo+B,KAAKgp+B,kBAAkBp69B,UAEzCzE,SAAMk4tB,WAAWriuB,KAAK8t8B,cACtB3j8B,EAAM8+9B,SAASjp+B,KAAKgmG,YACb77F,GAQXu1O,EAAYr/N,UAAUwwG,UAAY,SAAUp+B,GACxCzyF,KAAKuo+B,QAAU914B,EACfzyF,KAAK28G,UAEF+iI,EA3CsB,CA4C/ByovB,GACF,QAAezovB,kDClBf,QA1C0B,WAItB,WAAcxmI,GACV,IAAIn6F,EAAUm6F,GAAe,GAK7Bl5G,KAAK4p+B,YAA2Bzk+B,IAAlB4Z,EAAQwgI,MAAsBxgI,EAAQwgI,MAAQ,KAOhEggG,SAAKl/N,UAAUmvG,MAAQ,WACnB,IAAI+vB,EAAQv/I,KAAKq3K,WACjB,OAAO,IAAIkoE,EAAK,CACZhgG,MAAOjxI,MAAMqxB,QAAQ4/G,GAASA,EAAM3wI,QAAU2wI,QAASp6I,KAQ/Do6O,EAAKl/N,UAAUg3J,SAAW,WACtB,OAAOr3K,KAAK4p+B,QAQhBrqvB,EAAKl/N,UAAUshO,SAAW,SAAUpiG,GAChCv/I,KAAK4p+B,OAASrq1B,GAEXggG,EAxCe,gFCVlB5mI,wFADJC,GACID,EAAgB,SAAUntG,EAAG0mB,GAC7BymF,SAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,GAAG0mB,GAAK1mB,GAAE8U,UAAY4R,IACvE,SAAU1mB,GAAG0mB,GAAK,QAASuyC,KAAKvyC,EAAOA,EAAEma,eAAeo4B,KAAIj5D,GAAEi5D,GAAKvyC,EAAEuyC,MACpDj5D,EAAG0mB,IAErB,SAAU1mB,EAAG0mB,GAEhB,cAAgBlyB,KAAKF,YAAc0L,EADnCmtG,EAAcntG,EAAG0mB,GAEjB1mB,EAAE6U,UAAkB,OAAN6R,EAAarsB,OAAOm8D,OAAO9vC,IAAM4mF,GAAGz4F,UAAY6R,EAAE7R,UAAW,IAAIy4F,MAYnF+w3B,EAAqB,KACrBC,EAA2B,SAAU7w3B,GAUrC,WAAmB0oC,EAAOxnG,GAAK6U,EAAMw9F,EAAayn0B,EAAY100B,GAC1D,IAAIpmC,EAAQF,EAAOrlF,KAAK5zB,OAASA,KAKjCm5G,SAAMko2B,mBAAqB,KAK3Blo2B,EAAM0hD,OAAUlZ,GAAQ,IAAI1nG,MACR,OAAhBuyG,IACiCrzC,EAAM0hD,OAAQrO,YAAcA,GAMjErzC,EAAM4kD,QAAU,GAKhB5kD,EAAMyw3B,OAASrq1B,EAKfpmC,EAAM83zB,UAAY,KAKlB93zB,EAAM4w3B,YAAc9V,EAKpB962B,EAAMyv3B,MAAQ556B,EAKdmqD,EAAM63zB,KAAO723B,GAKNg/D,EAMX2w3B,OAhEAlx3B,EAAUkx3B,EAAW7w3B,GAgErB6w3B,EAAUzp9B,UAAU2p9B,WAAa,WAC7B,QAAsB7k+B,IAAlBnF,KAAKiq+B,UAA0Bjq+B,KAAK+p+B,cAAgBls0B,WAAmB,CAClEgs0B,IACDA,KAAqBh2vB,MAAsB,EAAG,IAElDg2vB,EAAmBlu7B,UAAU37C,KAAK66J,OAAQ,EAAG,GAC7C,IACIgv0B,EAAmBxrO,aAAa,EAAG,EAAG,EAAG,GACzCr+vB,KAAKiq+B,UAAW,QAEbhh+B,GACH4g+B,EAAqB,KACrB7p+B,KAAKiq+B,UAAW,GAGxB,OAAyB,IAAlBjq+B,KAAKiq+B,UAKhBH,EAAUzp9B,UAAU6p9B,qBAAuB,WACvClq+B,KAAKo7G,cAActB,aAKvBgw3B,EAAUzp9B,UAAU+w5B,kBAAoB,WACpCpx6B,KAAK+p+B,YAAcls0B,UACnB79J,KAAKqx6B,iBACLrx6B,KAAKkq+B,wBAKTJ,EAAUzp9B,UAAUix5B,iBAAmB,WACnCtx6B,KAAK+p+B,YAAcls0B,WACf79J,KAAK4o+B,OACL5o+B,KAAK66J,OAAOnkJ,MAAQ1W,KAAK4o+B,MAAM,GAC/B5o+B,KAAK66J,OAAOtwJ,OAASvK,KAAK4o+B,MAAM,IAGhC5o+B,KAAK4o+B,MAAQ,CAAC5o+B,KAAK66J,OAAOnkJ,MAAO1W,KAAK66J,OAAOtwJ,QAEjDvK,KAAKqx6B,iBACLrx6B,KAAKkq+B,wBAMTJ,EAAUzp9B,UAAUy6I,SAAW,SAAU3L,GACrC,YAAKg70B,cAAch70B,GACZnvJ,KAAK+9J,QAAQ5O,GAAcnvJ,KAAK+9J,QAAQ5O,GAAcnvJ,KAAK66J,QAMtEiv0B,EAAUzp9B,UAAU07I,cAAgB,SAAU5M,GAC1C,YAAKg70B,cAAch70B,GACZnvJ,KAAK+9J,QAAQ5O,GAAcA,EAAa,GAKnD260B,EAAUzp9B,UAAU448B,cAAgB,WAChC,OAAOj59B,KAAK+p+B,aAKhBD,EAAUzp9B,UAAU+h8B,qBAAuB,WACvC,IAAKpi9B,KAAKqh9B,mBACN,GAAIrh9B,KAAKgq+B,aAAc,CACnB,IAAItz9B,EAAQ1W,KAAK4o+B,MAAM,GACnBr+9B,GAASvK,KAAK4o+B,MAAM,GACpBxl6B,GAAUywK,QAAsBn9N,EAAOnM,IAC3C64D,EAAQiw5B,SAAS,EAAG,EAAG388B,EAAOnM,IAC9BvK,KAAKqh9B,mBAAqBj+4B,EAAQ3nB,YAGlCz7C,KAAKqh9B,mBAAqBrh9B,KAAK66J,OAGvC,OAAO76J,KAAKqh9B,oBAMhByoB,EAAUzp9B,UAAUwmrB,QAAU,WAC1B,OAAO7msB,KAAK4o+B,OAKhBkB,EAAUzp9B,UAAU+p9B,OAAS,WACzB,OAAOpq+B,KAAKgx6B,MAKhB84D,EAAUzp9B,UAAU89I,KAAO,WACvB,GAAIn+J,KAAK+p+B,aAAels0B,SAAiB,CACrC79J,KAAK+p+B,YAAcls0B,YACnB,IACqC79J,KAAK66J,OAAQ1gH,IAAMn6C,KAAKgx6B,WAEtD/n6B,GACHjJ,KAAKox6B,oBAETpx6B,KAAKix6B,WAAYM,OAAYvx6B,KAAK66J,OAAQ76J,KAAKsx6B,iBAAiBzr5B,KAAK7lB,MAAOA,KAAKox6B,kBAAkBvr5B,KAAK7lB,SAOhH8p+B,EAAUzp9B,UAAU8p9B,cAAgB,SAAUh70B,GAC1C,GAAKnvJ,KAAK4p+B,SAAU5p+B,KAAK+9J,QAAQ5O,GAGjC,KAAI1zG,GAAS95B,SAAS+O,cAAc,UACpC1wB,KAAK+9J,QAAQ5O,GAAc1zG,GAC3BA,GAAO/kC,MAAQxJ,KAAKqB,KAAKvO,KAAK66J,OAAOnkJ,MAAQy4I,GAC7C1zG,GAAOlxC,OAAS2C,KAAKqB,KAAKvO,KAAK66J,OAAOtwJ,OAAS4kJ,GAC/C,IAAI1jJ,EAAMgwC,GAAOC,WAAW,MAG5B,GAFAjwC,EAAIi1F,MAAMyuD,EAAYA,GACtB1jJ,EAAIkwC,UAAU37C,KAAK66J,OAAQ,EAAG,GAC1B76J,KAAKgq+B,aAAc,CASnB,IAAI/p9B,EAAIjgB,KAAK4p+B,OAMb,OALAn+9B,EAAIi19B,yBAA2B,WAC/Bj19B,EAAIy3tB,UAAY,OAASjjtB,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAMA,EAAE,GAAK,IAC1DxU,EAAI4n9B,SAAS,EAAG,EAAG536B,GAAO/kC,MAAO+kC,GAAOlxC,QACxCkB,EAAIi19B,yBAA2B,sBAC/Bj19B,EAAIkwC,UAAU37C,KAAK66J,OAAQ,EAAG,GAQlC,QALIwv0B,EAAU5+9B,EAAI4yvB,aAAa,EAAG,EAAG5itB,GAAO/kC,MAAO+kC,GAAOlxC,QACtDuI,EAAOu39B,EAAQv39B,KACf+9C,EAAI7wD,KAAK4p+B,OAAO,GAAK,IACrBp66B,EAAIxvD,KAAK4p+B,OAAO,GAAK,IACrB138B,GAAIlyB,KAAK4p+B,OAAO,GAAK,IAChBj79B,GAAI,EAAGgtG,GAAK7oG,EAAK/M,OAAQ4I,GAAIgtG,GAAIhtG,IAAK,EAC3CmE,EAAKnE,KAAMkiD,EACX/9C,EAAKnE,GAAI,IAAM6gD,EACf18C,EAAKnE,GAAI,IAAMujB,GAEnBzmB,EAAI6+9B,aAAaD,EAAS,EAAG,KAOjCP,EAAUzp9B,UAAUgx5B,eAAiB,WAC7Brx6B,KAAKix6B,YACLjx6B,KAAKix6B,YACLjx6B,KAAKix6B,UAAY,OAGlB64D,EA1OoB,CA2O7Bn4D,gBCrQE/4zB,EAAyC,WACzC,IAAID,EAAgB,SAAUntG,EAAG0mB,GAC7BymF,SAAgB9yG,OAAOgzG,gBAClB,CAAEv4F,UAAW,cAAgBhS,OAAS,SAAU9C,GAAG0mB,GAAK1mB,GAAE8U,UAAY4R,IACvE,SAAU1mB,GAAG0mB,GAAK,QAASuyC,KAAKvyC,EAAOA,EAAEma,eAAeo4B,KAAIj5D,GAAEi5D,GAAKvyC,EAAEuyC,MACpDj5D,EAAG0mB,IAE5B,OAAO,SAAU1mB,EAAG0mB,GAEhB,cAAgBlyB,KAAKF,YAAc0L,EADnCmtG,EAAcntG,EAAG0mB,GAEjB1mB,EAAE6U,UAAkB,OAAN6R,EAAarsB,OAAOm8D,OAAO9vC,IAAM4mF,GAAGz4F,UAAY6R,EAAE7R,UAAW,IAAIy4F,KAV1C,GAgEzCw62B,EAAsB,SAAUr62B,GAKhC,WAAcC,GACV,IAAIC,GAAQn5G,KACR+e,EAAUm6F,GAAe,IAiB7BC,GAAQF,EAAOrlF,KAAK5zB,KAAM,CACtBoK,aAd8BjF,IAApB4Z,EAAQ3U,QAAwB2U,EAAQ3U,QAAU,EAe5D6xJ,cAXgC92J,IAArB4Z,EAAQk9I,SAAyBl9I,EAAQk9I,SAAW,EAY/Dv7D,WAR0Bv7F,IAAlB4Z,EAAQ2hF,MAAsB3hF,EAAQ2hF,MAAQ,EAStD0n4B,kBAAuCjj+B,IAAzB4Z,EAAQqp9B,aAA6Brp9B,EAAQqp9B,aAAe,CAAC,EAAG,GAC9E/ovB,oBAN4Cl6O,IAA3B4Z,EAAQsgO,gBAA+BtgO,EAAQsgO,kBAO9Dr/O,MAKAmo7B,aAA6Bhj7B,IAAnB4Z,EAAQ9Q,OAAuB8Q,EAAQ9Q,OAAS,CAAC,GAAK,IAKtEkrG,GAAMox3B,kBAAoB,KAK1Bpx3B,GAAMqx3B,mBACuBrl+B,IAAzB4Z,EAAQ0r9B,aACF1r9B,EAAQ0r9B,aCzFZ,WD+FNtx3B,GAAMux3B,mBACuBvl+B,IAAzB4Z,EAAQ2mI,aACF3mI,EAAQ2mI,aACRC,aAKVxsC,GAAMwx3B,mBACuBxl+B,IAAzB4Z,EAAQ6mI,aACF7mI,EAAQ6mI,aACRD,aAKVxsC,GAAM6h3B,kBACsB719B,IAAxB4Z,EAAQytI,YAA4BztI,EAAQytI,YAAc,KAI9D,IAAI7K,OAAwBx8I,IAAhB4Z,EAAQi7B,IAAoBj7B,EAAQi7B,IAAM,KAIlDi56B,QAA8B9t9B,IAApB4Z,EAAQk08B,QAAwBl08B,EAAQk08B,QAAU,KAI5D946B,GAAMp7B,EAAQo7B,KAClBukE,cAAiBv5G,IAARg1C,IAAqBwnG,GAAQ,IACtCjjC,QAAQijC,GAAUA,GAASsx0B,GAAU,SACxB9t9B,IAARg1C,IAAoC,IAAfA,GAAIp0C,SAAiB47I,IAC3CxnG,GAAuCwnG,EAAOxnG,MAAOigF,QAAOunB,OAEhEjjC,UAAev5G,IAARg1C,IAAqBA,GAAIp0C,OAAS,EAAG,GAI5C,IAAIku9B,QAA6B9u9B,IAAhB4Z,EAAQo7B,IAAoB0jH,SAAkBA,WAK/D1kD,UAAMyw3B,YAA2Bzk+B,IAAlB4Z,EAAQwgI,OAAsBkq1B,QAAQ1q9B,EAAQwgI,OAAS,KAKtEpmC,GAAMyx3B,WDyGP,WAAajp1B,EAAOxnG,EAAK6U,EAAMw9F,GAAayn0B,EAAY100B,GAC3D,IAAIsr1B,EAAYt3D,QAAmBp53B,EAAKqyG,GAAajN,GACrD,OAAKsr1B,IACDA,EAAY,IAAIf,EAAUno1B,EAAOxnG,EAAK6U,EAAMw9F,GAAayn0B,EAAY100B,GACrEg0xB,QAAmBp53B,EAAKqyG,GAAajN,EAAOsr1B,IAEzCA,EC/GgBC,CAAanp1B,EACTxnG,GAAM846B,GAAS952B,GAAM6h3B,aAAc/G,GAAY962B,GAAMyw3B,QAK5Ezw3B,GAAM4x3B,aAA6B5l+B,IAAnB4Z,EAAQqT,OAAuBrT,EAAQqT,OAAS,CAAC,EAAG,GAKpE+mF,GAAM6x3B,mBACuB7l+B,IAAzB4Z,EAAQks9B,aACFls9B,EAAQks9B,aC7JZ,WDmKN9x3B,GAAMmv3B,QAAU,KAKhBnv3B,GAAMyv3B,WAAyBzj+B,IAAjB4Z,EAAQiwC,KAAqBjwC,EAAQiwC,KAAO,KACnDmqD,GAOXm62B,OArIA162B,EAAU062B,EAAMr62B,GAqIhBq62B,EAAKjz8B,UAAUmvG,MAAQ,WACnB,IAAI9uB,EAAQ1gG,KAAKgmG,WACjB,OAAO,IAAIst3B,EAAK,CACZrl9B,OAAQjO,KAAKmo7B,QAAQv56B,QACrB679B,aAAczq+B,KAAKwq+B,cACnB9k1B,aAAc1lJ,KAAK0q+B,cACnB9k1B,aAAc5lJ,KAAK2q+B,cACnBn+0B,YAAaxsJ,KAAKg79B,aAClBz70B,MAAOv/I,KAAK4p+B,QAAU5p+B,KAAK4p+B,OAAOh79B,MAC5B5O,KAAK4p+B,OAAOh79B,QACZ5O,KAAK4p+B,aAAUzk+B,EACrBg1C,IAAKn6C,KAAKoq+B,SACVh48B,OAAQpyB,KAAK+q+B,QAAQn89B,QACrBq89B,aAAcjr+B,KAAKgr+B,cACnBh86B,KAAqB,OAAfhvD,KAAK4o+B,MAAiB5o+B,KAAK4o+B,MAAMh69B,aAAUzJ,EACjDiF,QAASpK,KAAK8t8B,aACdpt2B,MAAOpyF,MAAMqxB,QAAQ+gE,GAASA,EAAM9xF,QAAU8xF,EAC9Cu7D,SAAUj8J,KAAK4s1B,cACfvtmB,eAAgBr/O,KAAKqi9B,uBAS7BiR,EAAKjz8B,UAAUw6pB,UAAY,WACvB,GAAI76qB,KAAKuq+B,kBACL,OAAOvq+B,KAAKuq+B,kBAEhB,IAAIt89B,EAASjO,KAAKmo7B,QACdn53B,GAAOhvD,KAAK6msB,UAChB,GAAI7msB,KAAK0q+B,eAAiB/k1B,cACtB3lJ,KAAK2q+B,eAAiBhl1B,aAA0B,CAChD,IAAK32F,GACD,OAAO,KAEX/gD,EAASjO,KAAKmo7B,QAAQv56B,QAClB5O,KAAK0q+B,eAAiB/k1B,eACtB13I,EAAO,IAAM+gD,GAAK,IAElBhvD,KAAK2q+B,eAAiBhl1B,eACtB13I,EAAO,IAAM+gD,GAAK,IAG1B,GC9NM,YD8NFhvD,KAAKwq+B,cAAsC,CAC3C,IAAKx76B,GACD,OAAO,KAEP/gD,IAAWjO,KAAKmo7B,UAChBl66B,EAASjO,KAAKmo7B,QAAQv56B,UC9NvB,aDgOC5O,KAAKwq+B,eC1OH,gBD2OFxq+B,KAAKwq+B,iBACLv89B,EAAO,IAAMA,EAAO,GAAK+gD,GAAK,KCjP7B,eDmPDhvD,KAAKwq+B,eC9OH,gBD+OFxq+B,KAAKwq+B,iBACLv89B,EAAO,IAAMA,EAAO,GAAK+gD,GAAK,IAGtC,YAAKu76B,kBAAoBt89B,EAClBjO,KAAKuq+B,mBAShBjX,EAAKjz8B,UAAU6q9B,UAAY,SAAUj99B,GACjCjO,KAAKmo7B,QAAUl66B,EACfjO,KAAKuq+B,kBAAoB,MAO7BjX,EAAKjz8B,UAAUg3J,SAAW,WACtB,OAAOr3K,KAAK4p+B,QAQhBtW,EAAKjz8B,UAAUy6I,SAAW,SAAU3L,GAChC,OAAOnvJ,KAAK4q+B,WAAW9v0B,SAAS3L,IAQpCmk0B,EAAKjz8B,UAAU07I,cAAgB,SAAU5M,GACrC,OAAOnvJ,KAAK4q+B,WAAW7u0B,cAAc5M,IAKzCmk0B,EAAKjz8B,UAAU6y8B,aAAe,WAC1B,OAAOlz9B,KAAK4q+B,WAAW/jS,WAK3BysR,EAAKjz8B,UAAUip9B,yBAA2B,WACtC,OAAOtp+B,KAAKkz9B,gBAKhBI,EAAKjz8B,UAAU448B,cAAgB,WAC3B,OAAOj59B,KAAK4q+B,WAAW3R,iBAK3B3F,EAAKjz8B,UAAU+h8B,qBAAuB,WAClC,OAAOpi9B,KAAK4q+B,WAAWxoB,wBAO3BkR,EAAKjz8B,UAAUg3rB,UAAY,WACvB,GAAIr3sB,KAAKso+B,QACL,OAAOto+B,KAAKso+B,QAEhB,IAAIl28B,EAASpyB,KAAK+q+B,QACd3C,GAAepo+B,KAAKgp+B,kBACxB,GCzTM,YDyTFhp+B,KAAKgr+B,cAAsC,CAC3C,IAAIh86B,EAAOhvD,KAAK6msB,UACZskS,EAAgBnr+B,KAAK4q+B,WAAW/jS,UACpC,IAAK73oB,IAASm86B,EACV,OAAO,KAEX/48B,EAASA,EAAOxjB,SC1Tb,aD2TC5O,KAAKgr+B,eCrUH,gBDsUFhr+B,KAAKgr+B,iBACL548B,EAAO,GAAK+48B,EAAc,GAAKn86B,EAAK,GAAK58B,EAAO,KC5U/C,eD8UDpyB,KAAKgr+B,eCzUH,gBD0UFhr+B,KAAKgr+B,iBACL548B,EAAO,GAAK+48B,EAAc,GAAKn86B,EAAK,GAAK58B,EAAO,IAGxDA,SAAO,IAAMg28B,GAAa,GAC1Bh28B,EAAO,IAAMg28B,GAAa,GAC1Bpo+B,KAAKso+B,QAAUl28B,EACRpyB,KAAKso+B,SAOhBhV,EAAKjz8B,UAAU+p9B,OAAS,WACpB,OAAOpq+B,KAAK4q+B,WAAWR,UAO3B9W,EAAKjz8B,UAAUwmrB,QAAU,WACrB,OAAO7msB,KAAM4o+B,MAAoC5o+B,KAAK4o+B,MAAjC5o+B,KAAK4q+B,WAAW/jS,WAKzCysR,EAAKjz8B,UAAUu58B,kBAAoB,SAAUn37B,GACzCziC,KAAK4q+B,WAAWp19B,iBAAiBskG,WAAkBr3E,IASvD6w7B,EAAKjz8B,UAAU89I,KAAO,WAClBn+J,KAAK4q+B,WAAWzs0B,QAKpBm1zB,EAAKjz8B,UAAUs58B,oBAAsB,SAAUl37B,GAC3CziC,KAAK4q+B,WAAW1t8B,oBAAoB48E,WAAkBr3E,IAEnD6w7B,EA1Ue,CA2UxBqW,KACF,QAAerW,kDErYf,QAAe,CAKX8X,SAAU,WAKVjyB,OAAQ,yEC6EZ,WAAgBh/5B,EAAKqyG,EAAajN,GAE9B,OAAOiN,EAAc,IAAMryG,EAAM,KADfolG,GAAQyM,QAASzM,GAAS,QAGhD,IAMW0iP,EAAS,IAhGgB,WAChC,aAKIjiY,KAAKqr+B,OAAS,GAKdrr+B,KAAKsr+B,WAAa,EAKlBtr+B,KAAKur+B,cAAgB,GAKzBC,SAAenr9B,UAAUi/B,MAAQ,WAC7Bt/C,KAAKqr+B,OAAS,GACdrr+B,KAAKsr+B,WAAa,GAKtBE,EAAenr9B,UAAU4u6B,eAAiB,WACtC,OAAOjv7B,KAAKsr+B,WAAatr+B,KAAKur+B,eAKlCC,EAAenr9B,UAAUor9B,OAAS,WAC9B,GAAIzr+B,KAAKiv7B,iBAAkB,CACvB,IAAItg7B,EAAI,EACR,QAASkE,KAAO7S,KAAKqr+B,OAEC,IAAP,EAAN189B,OADW3O,KAAKqr+B,OAAOx49B,GACMoh6B,uBACvBj06B,KAAKqr+B,OAAOx49B,KACjB7S,KAAKsr+B,cAWvBE,EAAenr9B,UAAUxB,IAAM,SAAUs7B,EAAKqyG,EAAajN,GACvD,IAAI1sI,EAAMglG,EAAO19D,EAAKqyG,EAAajN,GACnC,OAAO1sI,KAAO7S,KAAKqr+B,OAASrr+B,KAAKqr+B,OAAOx49B,GAAO,MAQnD249B,EAAenr9B,UAAUgS,IAAM,SAAU8nB,EAAKqyG,EAAajN,EAAOsr1B,GAC9D,IAAIh49B,EAAMglG,EAAO19D,EAAKqyG,EAAajN,GACnCv/I,KAAKqr+B,OAAOx49B,GAAOg49B,IACjB7q+B,KAAKsr+B,YASXE,EAAenr9B,UAAUisH,QAAU,SAAUo/1B,GACzC1r+B,KAAKur+B,cAAgBG,EACrB1r+B,KAAKyr+B,UAEFD,EA9EyB,8ECgPpC,QAnOgC,WAI5B,WAAoBzs9B,GAKhB/e,KAAK0h9B,SAAW3i8B,EAAQ3U,QAKxBpK,KAAK6h9B,gBAAkB9i8B,EAAQsgO,eAK/Br/O,KAAK+g7B,UAAYhi6B,EAAQk9I,SAKzBj8J,KAAK8h9B,OAAS/i8B,EAAQ2hF,MAKtB1gG,KAAK2r+B,eAAcj0vB,MAAO34N,EAAQ2hF,OAKlC1gG,KAAK4r+B,cAAgB7s9B,EAAQqp9B,aAOjCuB,SAAWtp9B,UAAUmvG,MAAQ,WACzB,IAAI9uB,EAAQ1gG,KAAKgmG,WACjB,OAAO,IAAI2j4B,EAAW,CAClBv/9B,QAASpK,KAAK8t8B,aACdpt2B,MAAOpyF,MAAMqxB,QAAQ+gE,GAASA,EAAM9xF,QAAU8xF,EAC9Cu7D,SAAUj8J,KAAK4s1B,cACfvtmB,eAAgBr/O,KAAKqi9B,oBACrB+lB,aAAcpo+B,KAAKgp+B,kBAAkBp69B,WAQ7C+69B,EAAWtp9B,UAAUyt7B,WAAa,WAC9B,OAAO9t8B,KAAK0h9B,UAOhBioB,EAAWtp9B,UAAUgi8B,kBAAoB,WACrC,OAAOri9B,KAAK6h9B,iBAOhB8nB,EAAWtp9B,UAAUus0B,YAAc,WAC/B,OAAO5s1B,KAAK+g7B,WAOhB4oD,EAAWtp9B,UAAU2lF,SAAW,WAC5B,OAAOhmG,KAAK8h9B,QAMhB6nB,EAAWtp9B,UAAUii8B,cAAgB,WACjC,OAAOti9B,KAAK2r+B,aAOhBhC,EAAWtp9B,UAAU2o9B,gBAAkB,WACnC,OAAOhp+B,KAAK4r+B,eAQhBjC,EAAWtp9B,UAAUw6pB,UAAY,WAC7B,SAAO62P,SAQXi4D,EAAWtp9B,UAAUy6I,SAAW,SAAU3L,GACtC,SAAOuixB,SAMXi4D,EAAWtp9B,UAAU+h8B,qBAAuB,WACxC,SAAO1wC,SAMXi4D,EAAWtp9B,UAAU07I,cAAgB,SAAU5M,GAC3C,OAAO,GAMXw60B,EAAWtp9B,UAAU448B,cAAgB,WACjC,SAAOvnD,SAMXi4D,EAAWtp9B,UAAU6y8B,aAAe,WAChC,SAAOxhD,SAMXi4D,EAAWtp9B,UAAUip9B,yBAA2B,WAC5C,SAAO53D,SAOXi4D,EAAWtp9B,UAAUg3rB,UAAY,WAC7B,SAAOq6N,SAOXi4D,EAAWtp9B,UAAUwmrB,QAAU,WAC3B,SAAO6qO,SAQXi4D,EAAWtp9B,UAAUgitB,WAAa,SAAUj4tB,GACxCpK,KAAK0h9B,SAAWt38B,GAQpBu/9B,EAAWtp9B,UAAUwr9B,kBAAoB,SAAUxsvB,GAC/Cr/O,KAAK6h9B,gBAAkBxiuB,GAQ3BsqvB,EAAWtp9B,UAAUwqH,YAAc,SAAUoxB,GACzCj8J,KAAK+g7B,UAAY9kxB,GAQrB0t0B,EAAWtp9B,UAAU4o9B,SAAW,SAAUvo4B,GACtC1gG,KAAK8h9B,OAASph3B,EACd1gG,KAAK2r+B,eAAcj0vB,MAAOh3I,IAM9Bip4B,EAAWtp9B,UAAUu58B,kBAAoB,SAAUn37B,MAC/Civ4B,SAMJi4D,EAAWtp9B,UAAU89I,KAAO,cACxBuzwB,SAMJi4D,EAAWtp9B,UAAUs58B,oBAAsB,SAAUl37B,MACjDiv4B,SAEGi4D,EAjOqB,mDC8LhC,QA1L4B,WAIxB,WAAgBzw3B,GACZ,IAAIn6F,EAAUm6F,GAAe,GAK7Bl5G,KAAK4p+B,YAA2Bzk+B,IAAlB4Z,EAAQwgI,MAAsBxgI,EAAQwgI,MAAQ,KAK5Dv/I,KAAK8r+B,SAAW/s9B,EAAQgyI,QAKxB/wJ,KAAK+r+B,eAAiC5m+B,IAArB4Z,EAAQ6g8B,SAAyB7g8B,EAAQ6g8B,SAAW,KAKrE5/8B,KAAKgs+B,gBAAkBjt9B,EAAQgh8B,eAK/B//8B,KAAKis+B,UAAYlt9B,EAAQs1pB,SAKzBr0qB,KAAKks+B,YAAcnt9B,EAAQsh8B,WAK3Brg9B,KAAK+h9B,OAAShj8B,EAAQrI,MAO1B8oO,SAAOn/N,UAAUmvG,MAAQ,WACrB,IAAI+vB,EAAQv/I,KAAKq3K,WACjB,OAAO,IAAImoE,EAAO,CACdjgG,MAAOjxI,MAAMqxB,QAAQ4/G,GAASA,EAAM3wI,QAAU2wI,QAASp6I,EACvD4rJ,QAAS/wJ,KAAKy/8B,aACdG,SAAU5/8B,KAAK2/8B,cAAgB3/8B,KAAK2/8B,cAAc/w8B,aAAUzJ,EAC5D468B,eAAgB//8B,KAAK8/8B,oBACrBzrS,SAAUr0qB,KAAKig9B,cACfI,WAAYrg9B,KAAKog9B,gBACjB1p8B,MAAO1W,KAAKk0E,cAQpBsrK,EAAOn/N,UAAUg3J,SAAW,WACxB,OAAOr3K,KAAK4p+B,QAOhBpqvB,EAAOn/N,UAAUo/7B,WAAa,WAC1B,OAAOz/8B,KAAK8r+B,UAOhBtsvB,EAAOn/N,UAAUs/7B,YAAc,WAC3B,OAAO3/8B,KAAK+r+B,WAOhBvsvB,EAAOn/N,UAAUy/7B,kBAAoB,WACjC,OAAO9/8B,KAAKgs+B,iBAOhBxsvB,EAAOn/N,UAAU4/7B,YAAc,WAC3B,OAAOjg9B,KAAKis+B,WAOhBzsvB,EAAOn/N,UAAU+/7B,cAAgB,WAC7B,OAAOpg9B,KAAKks+B,aAOhB1svB,EAAOn/N,UAAU6zD,SAAW,WACxB,OAAOl0E,KAAK+h9B,QAQhBviuB,EAAOn/N,UAAUshO,SAAW,SAAUpiG,GAClCv/I,KAAK4p+B,OAASrq1B,GAQlBigG,EAAOn/N,UAAUuitB,WAAa,SAAU7xkB,GACpC/wJ,KAAK8r+B,SAAW/60B,GAcpByuF,EAAOn/N,UAAUsitB,YAAc,SAAUi9O,GACrC5/8B,KAAK+r+B,UAAYnsB,GAQrBpguB,EAAOn/N,UAAU8r9B,kBAAoB,SAAUpsB,GAC3C//8B,KAAKgs+B,gBAAkBjsB,GAQ3BvguB,EAAOn/N,UAAUwitB,YAAc,SAAUxuD,GACrCr0qB,KAAKis+B,UAAY53T,GAQrB70b,EAAOn/N,UAAU+r9B,cAAgB,SAAU/rB,GACvCrg9B,KAAKks+B,YAAc7rB,GAQvB7guB,EAAOn/N,UAAU0qH,SAAW,SAAUr0H,GAClC1W,KAAK+h9B,OAASrr8B,GAEX8oO,EAxLiB,0ICmHxBluF,EAAuB,WAIvB,WAAep4C,GACX,IAAIn6F,EAAUm6F,GAAe,GAK7Bl5G,KAAK8j7B,UAAY,KAKjB9j7B,KAAKszH,kBAAoB+42B,OACAln+B,IAArB4Z,EAAQmqF,UACRlpG,KAAKq3H,YAAYt4G,EAAQmqF,UAM7BlpG,KAAK2m9B,WAAyBxh9B,IAAjB4Z,EAAQrQ,KAAqBqQ,EAAQrQ,KAAO,KAKzD1O,KAAK66J,YAA2B11J,IAAlB4Z,EAAQ4iI,MAAsB5iI,EAAQ4iI,MAAQ,KAK5D3hJ,KAAKs76B,eAAiCn26B,IAArB4Z,EAAQmmJ,SAAyBnmJ,EAAQmmJ,SAAW,KAKrEllK,KAAK2o+B,aAA6Bxj+B,IAAnB4Z,EAAQ8iI,OAAuB9iI,EAAQ8iI,OAAS,KAK/D7hJ,KAAK2s9B,WAAyBxn9B,IAAjB4Z,EAAQjU,KAAqBiU,EAAQjU,KAAO,KAKzD9K,KAAKss+B,QAAUvt9B,EAAQkyI,OAO3BK,SAAMjxI,UAAUmvG,MAAQ,WACpB,IAAItmB,EAAWlpG,KAAK4+E,cACpB,OAAIsqB,GAAgC,iBAAbA,IACnBA,EAAiEA,EAAUsmB,SAExE,IAAI8hC,EAAM,CACbpoD,SAAUA,EACVx6F,KAAM1O,KAAK2/O,UAAY3/O,KAAK2/O,UAAUnwH,aAAUrqH,EAChDw8I,MAAO3hJ,KAAK86J,WAAa96J,KAAK86J,WAAWtrC,aAAUrqH,EACnD08I,OAAQ7hJ,KAAK8t9B,YAAc9t9B,KAAK8t9B,YAAYt+1B,aAAUrqH,EACtD2F,KAAM9K,KAAK2rE,UAAY3rE,KAAK2rE,UAAU6jD,aAAUrqH,EAChD8rJ,OAAQjxJ,KAAK6oJ,eASrByI,EAAMjxI,UAAU6y5B,YAAc,WAC1B,OAAOlz6B,KAAKs76B,WAQhBhqxB,EAAMjxI,UAAUks9B,YAAc,SAAUrn0B,GACpCllK,KAAKs76B,UAAYp2wB,GASrB5T,EAAMjxI,UAAUu+D,YAAc,WAC1B,OAAO5+E,KAAK8j7B,WAQhBxyxB,EAAMjxI,UAAU0t8B,oBAAsB,WAClC,OAAO/t9B,KAAKszH,mBAOhBg+B,EAAMjxI,UAAUs/N,QAAU,WACtB,OAAO3/O,KAAK2m9B,OAOhBr1zB,EAAMjxI,UAAUyitB,QAAU,SAAUp0tB,GAChC1O,KAAK2m9B,MAAQj48B,GAOjB4iJ,EAAMjxI,UAAUy6I,SAAW,WACvB,OAAO96J,KAAK66J,QAOhBvJ,EAAMjxI,UAAUmx5B,SAAW,SAAU7vxB,GACjC3hJ,KAAK66J,OAASlZ,GAOlB2P,EAAMjxI,UAAUyt8B,UAAY,WACxB,OAAO9t9B,KAAK2o+B,SAOhBr30B,EAAMjxI,UAAU0itB,UAAY,SAAUlhlB,GAClC7hJ,KAAK2o+B,QAAU9m1B,GAOnByP,EAAMjxI,UAAUsrD,QAAU,WACtB,OAAO3rE,KAAK2s9B,OAOhBr7zB,EAAMjxI,UAAUi+N,QAAU,SAAUxzO,GAChC9K,KAAK2s9B,MAAQ7h9B,GAOjBwmJ,EAAMjxI,UAAUwoI,UAAY,WACxB,OAAO7oJ,KAAKss+B,SAUhBh70B,EAAMjxI,UAAUg3G,YAAc,SAAUnuB,GACZ,mBAAbA,EACPlpG,KAAKszH,kBAAoBpqB,EAEA,iBAAbA,EACZlpG,KAAKszH,kBAAoB,SAAU1S,GAC/B,OAA6DA,EAAQ/hG,IAAIqqF,IAG5EtjG,OAGiBT,IAAb+jG,IACLlpG,KAAKszH,kBAAoB,WACrB,OAA6DpqB,IAJjElpG,KAAKszH,kBAAoB+42B,EAO7Brs+B,KAAK8j7B,UAAY560B,GAQrBooD,EAAMjxI,UAAU2nI,UAAY,SAAUiJ,GAClCjxJ,KAAKss+B,QAAUr70B,GAEZK,EAtNgB,GAgOpB,WAAoB5xF,GACvB,IAAI69K,EAQIkzrB,EAPW,mBAAR/w2B,EACP69K,EAAgB79K,GAOZpxD,MAAMqxB,QAAQ+/B,GACd+w2B,EAAW/w2B,IAGXg/C,OAAqD,mBAApBh/C,EAAKmpF,UAA2B,IAEjE4nxB,EAAW,CADuB/w2B,IAGtC69K,EAAgB,WACZ,OAAOkzrB,IAGf,OAAOlzrB,EAKX,IAAIivvB,EAAgB,KAMb,WAA4B5r3B,EAASxC,GAMxC,IAAKou3B,EAAe,CAChB,IAAI999B,EAAO,IAAI6wO,IAAK,CAChBhgG,MAAO,0BAEPsC,EAAS,IAAI29F,IAAO,CACpBjgG,MAAO,UACP7oI,MAAO,OAEX819B,EAAgB,CACZ,IAAIl70B,EAAM,CACN3P,MAAO,IAAI+9F,IAAY,CACnBhxO,KAAMA,EACNmzI,OAAQA,EACRpvD,OAAQ,IAEZ/jF,KAAMA,EACNmzI,OAAQA,KAIpB,OAAO2q1B,EAMJ,aAEH,IAAI/z2B,EAAS,GACT82mB,EAAQ,CAAC,IAAK,IAAK,IAAK,GACxB50J,EAAO,CAAC,EAAG,IAAK,IAAK,GAEzBlid,SAAOnI,aAAwB,CAC3B,IAAIghC,EAAM,CACN5iJ,KAAM,IAAI6wO,IAAK,CACXhgG,MAAO,CAAC,IAAK,IAAK,IAAK,SAInC9mB,EAAOnI,mBAA8BmI,EAAOnI,aAC5CmI,EAAOnI,iBAA4B,CAC/B,IAAIghC,EAAM,CACNzP,OAAQ,IAAI29F,IAAO,CACfjgG,MAAOgwlB,EACP74tB,MAAOA,MAGf,IAAI46I,EAAM,CACNzP,OAAQ,IAAI29F,IAAO,CACfjgG,MAAOo7b,EACPjkkB,MAnBA,OAuBZ+hH,EAAOnI,uBAAkCmI,EAAOnI,iBAChDmI,EAAOnI,YAAuBmI,EAAOnI,aAAsB38E,OAAO8kF,EAAOnI,kBACzEmI,EAAOnI,WAAsB,CACzB,IAAIghC,EAAM,CACN3P,MAAO,IAAI+9F,IAAY,CACnBjtJ,OAAQ/7E,EACRhI,KAAM,IAAI6wO,IAAK,CACXhgG,MAAOo7b,IAEX94b,OAAQ,IAAI29F,IAAO,CACfjgG,MAAOgwlB,EACP74tB,MAAOA,QAGfu6I,OAAQ1+B,OAGhBkG,EAAOnI,iBAA4BmI,EAAOnI,WAC1CmI,EAAOnI,yBAAoCmI,EAAOnI,aAAsB38E,OAAO8kF,EAAOnI,iBAA2BmI,EAAOnI,YACjHmI,EAOX,WAAiC7X,GAC7B,OAAOA,EAAQhiC,cAEnB,QAAe0yE,uFCHf,QApb0B,WAItB,WAAcp4C,GACV,IAAIn6F,EAAUm6F,GAAe,GAK7Bl5G,KAAKys+B,MAAQ1t9B,EAAQsmI,KAKrBrlJ,KAAK+g7B,UAAYhi6B,EAAQk9I,SAKzBj8J,KAAK6h9B,gBAAkB9i8B,EAAQsgO,eAK/Br/O,KAAK8h9B,OAAS/i8B,EAAQ2hF,MAKtB1gG,KAAK2r+B,aAAcj0vB,aAAyBvyO,IAAlB4Z,EAAQ2hF,MAAsB3hF,EAAQ2hF,MAAQ,GAKxE1gG,KAAK2s9B,MAAQ5t8B,EAAQjU,KAKrB9K,KAAK0s+B,WAAa3t9B,EAAQmgO,UAK1Bl/O,KAAK2s+B,cAAgB5t9B,EAAQogO,aAK7Bn/O,KAAK2m9B,WACgBxh9B,IAAjB4Z,EAAQrQ,KACFqQ,EAAQrQ,KACR,IAAI6wO,IAAK,CAAEhgG,MAxFJ,SA6FjBv/I,KAAK4s+B,eACoBzn+B,IAArB4Z,EAAQ0l8B,SAAyB1l8B,EAAQ0l8B,SAAWv38B,KAAK45E,GAAK,EAKlE9mF,KAAK6s+B,gBACqB1n+B,IAAtB4Z,EAAQqgO,UAA0BrgO,EAAQqgO,UAAY0yuB,UAK1D9x9B,KAAK8s+B,YAAc/t9B,EAAQmyI,SAK3BlxJ,KAAK2o+B,aAA6Bxj+B,IAAnB4Z,EAAQ8iI,OAAuB9iI,EAAQ8iI,OAAS,KAK/D7hJ,KAAK+s+B,cAA+B5n+B,IAApB4Z,EAAQugO,QAAwBvgO,EAAQugO,QAAU,EAKlEt/O,KAAKgt+B,cAA+B7n+B,IAApB4Z,EAAQqmI,QAAwBrmI,EAAQqmI,QAAU,EAKlEplJ,KAAKit+B,gBAAkBlu9B,EAAQumI,eACzBvmI,EAAQumI,eACR,KAKNtlJ,KAAKkt+B,kBAAoBnu9B,EAAQwmI,iBAC3BxmI,EAAQwmI,iBACR,KAKNvlJ,KAAKmt+B,cAA+Bho+B,IAApB4Z,EAAQymI,QAAwB,KAAOzmI,EAAQymI,QAOnE18H,SAAKzI,UAAUmvG,MAAQ,WACnB,IAAI9uB,EAAQ1gG,KAAKgmG,WACjB,OAAO,IAAIl9E,EAAK,CACZu8H,KAAMrlJ,KAAKmhwB,UACX/hhB,UAAWp/O,KAAKuy9B,eAChB9N,SAAUzk9B,KAAKsy9B,cACfph0B,SAAUlxJ,KAAKqy9B,cACfp2zB,SAAUj8J,KAAK4s1B,cACfvtmB,eAAgBr/O,KAAKqi9B,oBACrB3h3B,MAAOpyF,MAAMqxB,QAAQ+gE,GAASA,EAAM9xF,QAAU8xF,EAC9C51F,KAAM9K,KAAK2rE,UACXuzK,UAAWl/O,KAAKgw9B,eAChB7wuB,aAAcn/O,KAAKkw9B,kBACnBxh9B,KAAM1O,KAAK2/O,UAAY3/O,KAAK2/O,UAAUnwH,aAAUrqH,EAChD08I,OAAQ7hJ,KAAK8t9B,YAAc9t9B,KAAK8t9B,YAAYt+1B,aAAUrqH,EACtDm6O,QAASt/O,KAAKyv9B,aACdrq0B,QAASplJ,KAAK2v9B,aACdrq0B,eAAgBtlJ,KAAKwy9B,oBACfxy9B,KAAKwy9B,oBAAoBhj2B,aACzBrqH,EACNogJ,iBAAkBvlJ,KAAKyy9B,sBACjBzy9B,KAAKyy9B,sBAAsBjj2B,aAC3BrqH,EACNqgJ,QAASxlJ,KAAK0y9B,gBAQtB5p8B,EAAKzI,UAAUgy8B,YAAc,WACzB,OAAOry9B,KAAK8s+B,WAOhBhk9B,EAAKzI,UAAU8gvB,QAAU,WACrB,OAAOnhwB,KAAKys+B,OAOhB3j9B,EAAKzI,UAAUiy8B,YAAc,WACzB,OAAOty9B,KAAK4s+B,WAOhB9j9B,EAAKzI,UAAUky8B,aAAe,WAC1B,OAAOvy9B,KAAK6s+B,YAOhB/j9B,EAAKzI,UAAUov8B,WAAa,WACxB,OAAOzv9B,KAAK+s+B,UAOhBjk9B,EAAKzI,UAAUsv8B,WAAa,WACxB,OAAO3v9B,KAAKgt+B,UAOhBlk9B,EAAKzI,UAAUs/N,QAAU,WACrB,OAAO3/O,KAAK2m9B,OAOhB797B,EAAKzI,UAAUgi8B,kBAAoB,WAC/B,OAAOri9B,KAAK6h9B,iBAOhB/47B,EAAKzI,UAAUus0B,YAAc,WACzB,OAAO5s1B,KAAK+g7B,WAOhBj45B,EAAKzI,UAAU2lF,SAAW,WACtB,OAAOhmG,KAAK8h9B,QAMhBh57B,EAAKzI,UAAUii8B,cAAgB,WAC3B,OAAOti9B,KAAK2r+B,aAOhB7i9B,EAAKzI,UAAUyt8B,UAAY,WACvB,OAAO9t9B,KAAK2o+B,SAOhB7/8B,EAAKzI,UAAUsrD,QAAU,WACrB,OAAO3rE,KAAK2s9B,OAOhB7j8B,EAAKzI,UAAU2v8B,aAAe,WAC1B,OAAOhw9B,KAAK0s+B,YAOhB5j9B,EAAKzI,UAAU6v8B,gBAAkB,WAC7B,OAAOlw9B,KAAK2s+B,eAOhB7j9B,EAAKzI,UAAUmy8B,kBAAoB,WAC/B,OAAOxy9B,KAAKit+B,iBAOhBnk9B,EAAKzI,UAAUoy8B,oBAAsB,WACjC,OAAOzy9B,KAAKkt+B,mBAOhBpk9B,EAAKzI,UAAUqy8B,WAAa,WACxB,OAAO1y9B,KAAKmt+B,UAQhBrk9B,EAAKzI,UAAUsgc,YAAc,SAAUzvT,GACnClxJ,KAAK8s+B,UAAY570B,GAQrBpoI,EAAKzI,UAAU2nvB,QAAU,SAAU3inB,GAC/BrlJ,KAAKys+B,MAAQpn1B,GAQjBv8H,EAAKzI,UAAU+s9B,YAAc,SAAU3oB,GACnCzk9B,KAAK4s+B,UAAYnoB,GAQrB377B,EAAKzI,UAAUgt9B,WAAa,SAAU/tvB,GAClCt/O,KAAK+s+B,SAAWztvB,GAQpBx2N,EAAKzI,UAAUit9B,WAAa,SAAUlo1B,GAClCplJ,KAAKgt+B,SAAW5n1B,GAQpBt8H,EAAKzI,UAAUkt9B,aAAe,SAAUnuvB,GACpCp/O,KAAK6s+B,WAAaztvB,GAQtBt2N,EAAKzI,UAAUwr9B,kBAAoB,SAAUxsvB,GACzCr/O,KAAK6h9B,gBAAkBxiuB,GAQ3Bv2N,EAAKzI,UAAUyitB,QAAU,SAAUp0tB,GAC/B1O,KAAK2m9B,MAAQj48B,GAQjBoa,EAAKzI,UAAUwqH,YAAc,SAAUoxB,GACnCj8J,KAAK+g7B,UAAY9kxB,GAQrBnzI,EAAKzI,UAAU4o9B,SAAW,SAAUvo4B,GAChC1gG,KAAK8h9B,OAASph3B,EACd1gG,KAAK2r+B,aAAcj0vB,aAAiBvyO,IAAVu7F,EAAsBA,EAAQ,IAQ5D53E,EAAKzI,UAAU0itB,UAAY,SAAUlhlB,GACjC7hJ,KAAK2o+B,QAAU9m1B,GAQnB/4H,EAAKzI,UAAUi+N,QAAU,SAAUxzO,GAC/B9K,KAAK2s9B,MAAQ7h9B,GAQjBge,EAAKzI,UAAUmt9B,aAAe,SAAUtuvB,GACpCl/O,KAAK0s+B,WAAaxtvB,GAQtBp2N,EAAKzI,UAAUot9B,gBAAkB,SAAUtuvB,GACvCn/O,KAAK2s+B,cAAgBxtvB,GAQzBr2N,EAAKzI,UAAUqt9B,kBAAoB,SAAUh/9B,GACzC1O,KAAKit+B,gBAAkBv+9B,GAQ3Boa,EAAKzI,UAAUst9B,oBAAsB,SAAU9r1B,GAC3C7hJ,KAAKkt+B,kBAAoBrr1B,GAQ7B/4H,EAAKzI,UAAUut9B,WAAa,SAAUpo1B,GAClCxlJ,KAAKmt+B,SAAW3n1B,GAEb18H,EAlbe,mDCrC1B,QAAe,CACXmlzB,MAAO,QACPhoK,KAAM,sCCIH,WAAwB52gB,EAAG1lJ,EAAGmqD,EAAG+56B,GACpC,YAAsB1o+B,IAAlB0o+B,GACAA,EAAc,GAAKx+0B,EACnBw+0B,EAAc,GAAKlk+B,EACnBkk+B,EAAc,GAAK/56B,EACZ+56B,GAGA,CAACx+0B,EAAG1lJ,EAAGmqD,GASf,WAAmBu7F,EAAG1lJ,EAAGmqD,GAC5B,OAAOu7F,EAAI,IAAM1lJ,EAAI,IAAMmqD,EAOxB,WAAgBo7F,GACnB,OAAO6nF,EAAU7nF,EAAU,GAAIA,EAAU,GAAIA,EAAU,IAOpD,WAAiBr8I,GACpB,OAAOA,EAAImE,MAAM,KAAKrR,IAAI2oD,QAMvB,WAAc4gG,GACjB,OAAQA,EAAU,IAAMA,EAAU,IAAMA,EAAU,GAO/C,WAA0BA,EAAWT,GACxC,IAAIY,EAAIH,EAAU,GACdvlJ,EAAIulJ,EAAU,GACdp7F,EAAIo7F,EAAU,GAClB,GAAIT,EAAS0nF,aAAe9mF,GAAKA,EAAIZ,EAASmnyB,aAC1C,OAAO,EAEX,IACInG,EADAr/zB,EAASq+B,EAASxtC,YAQtB,QAFIwu0B,EAJJt6rB,EAIgB1mG,EAASym0B,0BAA0B9k2B,EAAQi/B,GAH3CZ,EAASq/0B,iBAAiBz+0B,KAS/BogyB,EAAUx/zB,WAAWtmH,EAAGmqD,uOCpEhC,WAA0BmqD,GAC7B,IAAIwwC,EAAWxwC,EAAW461B,qBAC1B,OAAKpqzB,IACDA,EAAW6oF,EAAoBr5H,GAC/BA,EAAW661B,mBAAmBrqzB,IAE3BA,EAQJ,WAAeA,EAAUS,EAAWjxC,GACvC,IAAIoxC,EAAIH,EAAU,GACd7/E,EAASo/E,EAASwkzB,mBAAmB/jzB,GACrC2hJ,EAAmBriJ,EAAqBvwC,GAC5C,IAAKy01B,QAAmB7hqB,EAAkBxhO,GAOtC,OAAO6/E,EANP,IAAIyjxB,KAAaz+1B,MAAS28N,GACtBippB,EAAa5s7B,KAAKqB,MAAMsiS,EAAiB,GAAKxhO,EAAO,IAAMsj2B,GAC/Dtj2B,SAAO,IAAMsj2B,EAAamnB,EACnBrryB,EAASwB,yBAAyB5gF,EAAQggF,GA0ClD,WAAmBn2C,GACtB,IAAI603B,EAAa703B,GAAe,GAC5BkX,EAAS292B,EAAW392B,SAAU+G,QAAc,aAAalW,YACzD+s3B,EAAc,CACd592B,OAAQA,EACRkwB,QAASyt1B,EAAWzt1B,QACpBsO,SAAUm/0B,EAAWn/0B,SACrB0hJ,YAAa29rB,EAAsB792B,EAAQ292B,EAAWzl1B,QAASyl1B,EAAWn/0B,SAAUm/0B,EAAWz5vB,gBAEnG,OAAO,IAAIs8D,IAASo9rB,GAYxB,WAA+B592B,EAAQ892B,EAAaC,EAAcC,GAU9D,QATI9l1B,OAA0BnjJ,IAAhB+o+B,EAA4BA,EAAcG,IACpD9j+B,KAASmwF,MAAU01B,GACnB15G,GAAQw9D,QAASk8C,GACjBw+B,GAAW8oF,aAAwBvyO,IAAjBgp+B,EAA6BA,EAAet8C,KAC9Dv9sB,EAAgB85vB,EAAoB,EAClCA,EACAlh+B,KAAKsB,IAAIkI,EAAQk4I,EAAS,GAAIrkJ,EAASqkJ,EAAS,IAClD7oJ,GAASuiJ,EAAU,EACnBgoJ,EAAc,IAAIhiS,MAAMvI,IACnBspJ,EAAI,EAAGA,EAAItpJ,KAAUspJ,EAC1BihJ,EAAYjhJ,GAAKilF,EAAgBpnO,KAAK06F,IAAI,EAAGynD,GAEjD,OAAOihJ,EAWJ,WAA6BryL,EAAYiw3B,EAAaC,EAAcG,GAEvE,OA1EG,WAAyBl+2B,EAAQ892B,EAAaC,EAAcG,GAC/D,IAAInxC,OAAwBh47B,IAAfmp+B,EAA2BA,EAAalxC,aACjD9spB,EAAc29rB,EAAsB792B,EAAQ892B,EAAaC,GAC7D,OAAO,IAAIv9rB,IAAS,CAChBxgL,OAAQA,EACR/rF,QAAQkq8B,QAAUn+2B,EAAQ+s0B,GAC1B7spB,YAAaA,EACb1hJ,SAAUu/0B,IAmEPK,CADMhg1B,EAAqBvwC,GACHiw3B,EAAaC,EAAcG,GAQvD,WAA8Brw3B,GAEjC,IAAImS,GADJnS,KAAakZ,MAAclZ,IACHgD,YACxB,IAAKmP,EAAQ,CACT,IAAIuzC,EAAQ,IAAMllD,KAAgB67H,aAAkBr8H,EAAWwB,mBAC/D2Q,KAASC,OAAgBszC,GAAOA,EAAMA,EAAMA,GAEhD,OAAOvzC,8IC9HPq+2B,EAAe,CAAC,EAAG,EAAG,GAse1B,QAjc8B,WAI1B,WAAkB1v9B,GAed,IAAImy6B,EACJ,GAXAlx7B,KAAKsgJ,aAA8Bn7I,IAApB4Z,EAAQuhI,QAAwBvhI,EAAQuhI,QAAU,EAKjEtgJ,KAAK0y7B,aAAe3z6B,EAAQuxR,aAC5B5xL,UAAOgw3B,MAAS1u+B,KAAK0y7B,aAAc,SAAUvg6B,EAAGD,GAC5C,OAAOA,EAAIC,IACZ,GAAO,KAGLpT,EAAQsxR,QACT,QAAS1hS,EAAI,EAAGgtG,EAAK37G,KAAK0y7B,aAAa3s7B,OAAS,EAAG4I,EAAIgtG,IAAMhtG,EACzD,GAAKui7B,GACyD,GAGtDlx7B,KAAK0y7B,aAAa/j7B,GAAK3O,KAAK0y7B,aAAa/j7B,EAAI,KAAOui7B,EAAY,CAChEA,OAAa/r7B,EACb,YALJ+r7B,EAAalx7B,KAAK0y7B,aAAa/j7B,GAAK3O,KAAK0y7B,aAAa/j7B,EAAI,GActE3O,KAAKyy7B,YAAcvB,EAKnBlx7B,KAAKsoJ,QAAUtoJ,KAAK0y7B,aAAa3s7B,OAAS,EAK1C/F,KAAKso+B,aAA6Bnj+B,IAAnB4Z,EAAQslB,OAAuBtlB,EAAQslB,OAAS,KAK/DrkC,KAAK2u+B,SAAW,UACQxp+B,IAApB4Z,EAAQsxR,UACRrwS,KAAK2u+B,SAAW5v9B,EAAQsxR,WACxB3xL,KAAO1+G,KAAK2u+B,SAAS5o+B,QAAU/F,KAAK0y7B,aAAa3s7B,OAAQ,KAE7D,IAAIqqH,EAASrxG,EAAQqxG,YACNjrH,IAAXirH,IAAyBpwH,KAAKso+B,UAAYto+B,KAAK2u+B,WAC/C3u+B,KAAKso+B,WAAUx3rB,MAAW1gL,KAE9B1R,QAAS1+G,KAAKso+B,SAAWto+B,KAAK2u+B,UAAc3u+B,KAAKso+B,UAAYto+B,KAAK2u+B,SAAW,IAK7E3u+B,KAAK4u+B,WAAa,UACQzp+B,IAAtB4Z,EAAQwxR,YACRvwS,KAAK4u+B,WAAa7v9B,EAAQwxR,WAC1B7xL,OAAO1+G,KAAK4u+B,WAAW7o+B,QAAU/F,KAAK0y7B,aAAa3s7B,OAAQ,KAM/D/F,KAAK6u+B,eACoB1p+B,IAArB4Z,EAAQ6vI,SACF7vI,EAAQ6vI,SACP5uJ,KAAK4u+B,WAEF,KADA/8C,KAEdnz0B,QAAS1+G,KAAK6u+B,WAAa7u+B,KAAK4u+B,YAC3B5u+B,KAAK6u+B,YAAc7u+B,KAAK4u+B,WAAa,IAK1C5u+B,KAAKy4O,aAAqBtzO,IAAXirH,EAAuBA,EAAS,KAK/CpwH,KAAK8u+B,gBAAkB,KAKvB9u+B,KAAK+u+B,SAAW,CAAC,EAAG,QACE5p+B,IAAtB+F,EAAYslS,MACRxwS,KAAK8u+B,gBAAkB/v9B,EAAQyxR,MAAM7qS,IAAI,SAAUqpD,EAAMqgG,GAErD,OADgB,IAAIkgyB,IAAUri7B,KAAKulC,IAAI,EAAGuc,EAAK,IAAK9hD,KAAKsB,IAAIwgD,EAAK,GAAK,GAAG,GAAK9hD,KAAKulC,IAAI,EAAGuc,EAAK,IAAK9hD,KAAKsB,IAAIwgD,EAAK,GAAK,GAAG,KAE5HhvD,MAEEowH,GACLpwH,KAAKgv+B,qBAAqB5+2B,GAWlCwgL,SAASvwR,UAAUg2N,iBAAmB,SAAUjmH,EAAQ/O,EAAMxxG,GAE1D,QADI4/6B,EAAYzv7B,KAAKk19B,0BAA0B9k2B,EAAQ/O,GAC9C1yG,EAAI8g7B,EAAU331B,KAAM6jB,EAAK8z0B,EAAU131B,KAAMppF,GAAKgtG,IAAMhtG,EACzD,QAAS6yF,EAAIiu1B,EAAU/5M,KAAMl4mB,EAAKiyzB,EAAU95M,KAAMn0oB,GAAKg8B,IAAMh8B,EACzD3xF,EAAS,CAACwxG,EAAM1yG,EAAG6yF,KAW/BovM,EAASvwR,UAAUm18B,gCAAkC,SAAUtm0B,EAAWr/I,EAAUo/9B,EAAevyC,GAC/F,IAAIjN,EAAW9l7B,EAAGmqD,EACdo76B,EAAkB,KAClB7/0B,EAAIH,EAAU,GAAK,EAQvB,IAPyB,IAArBlvJ,KAAKyy7B,aACL9o7B,EAAIulJ,EAAU,GACdp7F,EAAIo7F,EAAU,IAGdgg1B,EAAkBlv+B,KAAKw1O,mBAAmBtmF,EAAWwtyB,GAElDrtyB,GAAKrvJ,KAAKsgJ,SAAS,CAStB,GARyB,IAArBtgJ,KAAKyy7B,aACL9o7B,EAAIuD,KAAKC,MAAMxD,EAAI,GACnBmqD,EAAI5mD,KAAKC,MAAM2mD,EAAI,GACnB273B,GAAY0/C,OAAwBxl+B,EAAGA,EAAGmqD,EAAGA,EAAGm76B,IAGhDx/C,EAAYzv7B,KAAKk19B,0BAA0Bga,EAAiB7/0B,EAAG4/0B,GAE/Dp/9B,EAASw/I,EAAGogyB,GACZ,OAAO,IAETpgyB,EAEN,OAAO,GAOXuhJ,EAASvwR,UAAU4gG,UAAY,WAC3B,OAAOjhH,KAAKy4O,SAOhBm4D,EAASvwR,UAAUu16B,WAAa,WAC5B,OAAO517B,KAAKsoJ,SAOhBsoJ,EAASvwR,UAAU81N,WAAa,WAC5B,OAAOn2O,KAAKsgJ,SAQhBswJ,EAASvwR,UAAUg3rB,UAAY,SAAUhojB,GACrC,OAAIrvJ,KAAKso+B,QACEto+B,KAAKso+B,QAGLto+B,KAAK2u+B,SAASt/0B,IAS7BuhJ,EAASvwR,UAAUihH,cAAgB,SAAU+tB,GACzC,OAAOrvJ,KAAK0y7B,aAAarjyB,IAO7BuhJ,EAASvwR,UAAU416B,eAAiB,WAChC,OAAOj27B,KAAK0y7B,cAQhB9hpB,EAASvwR,UAAUk18B,2BAA6B,SAAUrm0B,EAAW+/0B,EAAevyC,GAChF,GAAIxtyB,EAAU,GAAKlvJ,KAAKsoJ,QAAS,CAC7B,GAAyB,IAArBtoJ,KAAKyy7B,YAAmB,CACxB,IAAI361B,EAAsB,EAAfo3D,EAAU,GACjBwmlB,EAAsB,EAAfxmlB,EAAU,GACrB,SAAOig1B,KAAwBr34B,EAAMA,EAAO,EAAG49oB,EAAMA,EAAO,EAAGu5P,GAEnE,IAAIC,EAAkBlv+B,KAAKw1O,mBAAmBtmF,EAAWwtyB,GACzD,OAAO187B,KAAKk19B,0BAA0Bga,EAAiBhg1B,EAAU,GAAK,EAAG+/0B,GAE7E,OAAO,MASXr+rB,EAASvwR,UAAU+u9B,mBAAqB,SAAU//0B,EAAGogyB,EAAWiN,GAC5D,IAAIr45B,EAASrkC,KAAKq3sB,UAAUhojB,GACxBjxC,EAAap+G,KAAKshI,cAAc+tB,GAChCT,GAAW8oF,QAAO13O,KAAKu3O,YAAYloF,GAAIrvJ,KAAK+u+B,UAKhD,OAAO1+2B,QAJIhsF,EAAO,GAAKor5B,EAAU331B,KAAO82D,EAAS,GAAKxwC,EAE3C/5E,EAAO,GAAKor5B,EAAU/5M,KAAO9mlB,EAAS,GAAKxwC,EAD3C/5E,EAAO,IAAMor5B,EAAU131B,KAAO,GAAK62D,EAAS,GAAKxwC,EAEjD/5E,EAAO,IAAMor5B,EAAU95M,KAAO,GAAK/mlB,EAAS,GAAKxwC,EACds+0B,IASlD9rpB,EAASvwR,UAAU608B,0BAA4B,SAAU9k2B,EAAQi/B,EAAG4/0B,GAChE,IAAI//0B,EAAYu/0B,EAChBzu+B,KAAKqv+B,uBAAuBj/2B,EAAO,GAAIA,EAAO,GAAIi/B,GAAG,EAAOH,GAC5D,IAAIp3D,EAAOo3D,EAAU,GACjBwmlB,EAAOxmlB,EAAU,GACrB,YAAKmg1B,uBAAuBj/2B,EAAO,GAAIA,EAAO,GAAIi/B,GAAG,EAAMH,MACpDig1B,KAAwBr34B,EAAMo3D,EAAU,GAAIwmlB,EAAMxmlB,EAAU,GAAI+/0B,IAM3Er+rB,EAASvwR,UAAU4y7B,mBAAqB,SAAU/jzB,GAC9C,IAAI7qH,EAASrkC,KAAKq3sB,UAAUnojB,EAAU,IAClC9wC,EAAap+G,KAAKshI,cAAc4tB,EAAU,IAC1CN,KAAW8oF,MAAO13O,KAAKu3O,YAAYroF,EAAU,IAAKlvJ,KAAK+u+B,UAC3D,MAAO,CACH1q8B,EAAO,IAAM6qH,EAAU,GAAK,IAAON,EAAS,GAAKxwC,EACjD/5E,EAAO,IAAM6qH,EAAU,GAAK,IAAON,EAAS,GAAKxwC,IAWzDwyL,EAASvwR,UAAUm1N,mBAAqB,SAAUtmF,EAAWwtyB,GACzD,IAAIr45B,EAASrkC,KAAKq3sB,UAAUnojB,EAAU,IAClC9wC,EAAap+G,KAAKshI,cAAc4tB,EAAU,IAC1CN,GAAW8oF,QAAO13O,KAAKu3O,YAAYroF,EAAU,IAAKlvJ,KAAK+u+B,UACvDj34B,EAAOzzD,EAAO,GAAK6qH,EAAU,GAAKN,EAAS,GAAKxwC,EAChDs3nB,EAAOrxsB,EAAO,IAAM6qH,EAAU,GAAK,GAAKN,EAAS,GAAKxwC,EAG1D,OAAOiS,QAAev4B,EAAM49oB,EAFjB59oB,EAAO82D,EAAS,GAAKxwC,EACrBs3nB,EAAO9mlB,EAAS,GAAKxwC,EACcs+0B,IAalD9rpB,EAASvwR,UAAUuy7B,kCAAoC,SAAUzn2B,EAAYiT,EAAYyv3B,GACrF,OAAO7t+B,KAAKsv+B,gCAAgCnk4B,EAAW,GAAIA,EAAW,GAAIiT,GAAY,EAAOyv3B,IAejGj9rB,EAASvwR,UAAUiv9B,gCAAkC,SAAU3l+B,EAAGmqD,EAAGsqD,EAAYmx3B,EAA2B1B,GACxG,IAAIx+0B,EAAIrvJ,KAAK+vJ,kBAAkB3xC,GAC3B1d,EAAQ0d,EAAap+G,KAAKshI,cAAc+tB,GACxChrH,EAASrkC,KAAKq3sB,UAAUhojB,GACxBT,GAAW8oF,QAAO13O,KAAKu3O,YAAYloF,GAAIrvJ,KAAK+u+B,UAE5CS,EAAUD,EAA4B,GAAM,EAC5CE,GAAcvi+B,KAAKC,OAAOxD,EAAI06B,EAAO,IAAM+5E,GAFjCmx3B,EAA4B,GAAM,IAG5CG,EAAcxi+B,KAAKC,OAAOk3B,EAAO,GAAKyvB,GAAKsqD,EAAaox3B,GACxDG,EAAcjv4B,EAAQ+u4B,GAAe7g1B,EAAS,GAC9Cgh1B,EAAclv4B,EAAQgv4B,EAAe9g1B,EAAS,GAClD,OAAI2g1B,GACAI,EAAazi+B,KAAKqB,KAAKoh+B,GAAc,EACrCC,EAAa1i+B,KAAKqB,KAAKqh+B,GAAc,IAGrCD,EAAazi+B,KAAKC,MAAMwi+B,GACxBC,EAAa1i+B,KAAKC,MAAMyi+B,KAErBC,QAAwBxg1B,EAAGsg1B,EAAYC,EAAY/B,IAiB9Dj9rB,EAASvwR,UAAUgv9B,uBAAyB,SAAU1l+B,EAAGmqD,EAAGu7F,EAAGkg1B,EAA2B1B,GACtF,IAAIxp8B,EAASrkC,KAAKq3sB,UAAUhojB,GACxBjxC,EAAap+G,KAAKshI,cAAc+tB,GAChCT,GAAW8oF,QAAO13O,KAAKu3O,YAAYloF,GAAIrvJ,KAAK+u+B,UAE5CS,EAAUD,EAA4B,GAAM,EAC5CE,EAAcvi+B,KAAKC,OAAOxD,EAAI06B,EAAO,IAAM+5E,GAFjCmx3B,EAA4B,GAAM,IAG5CG,GAAcxi+B,KAAKC,OAAOk3B,EAAO,GAAKyvB,GAAKsqD,EAAaox3B,GACxDG,EAAaF,EAAc7g1B,EAAS,GACpCgh1B,EAAaF,GAAc9g1B,EAAS,GACxC,OAAI2g1B,GACAI,EAAazi+B,KAAKqB,KAAKoh+B,GAAc,EACrCC,EAAa1i+B,KAAKqB,KAAKqh+B,GAAc,IAGrCD,EAAazi+B,KAAKC,MAAMwi+B,GACxBC,EAAa1i+B,KAAKC,MAAMyi+B,KAErBC,QAAwBxg1B,EAAGsg1B,EAAYC,EAAY/B,IAU9Dj9rB,EAASvwR,UAAU4vI,yBAA2B,SAAU9kD,EAAYkkD,EAAGw+0B,GACnE,OAAO7t+B,KAAKqv+B,uBAAuBlk4B,EAAW,GAAIA,EAAW,GAAIkkD,GAAG,EAAOw+0B,IAM/Ej9rB,EAASvwR,UAAUyv9B,uBAAyB,SAAU5g1B,GAClD,OAAOlvJ,KAAK0y7B,aAAaxjyB,EAAU,KAUvC0hJ,EAASvwR,UAAUk3N,YAAc,SAAUloF,GACvC,OAAIrvJ,KAAK6u+B,UACE7u+B,KAAK6u+B,UAGL7u+B,KAAK4u+B,WAAWv/0B,IAO/BuhJ,EAASvwR,UAAUyt9B,iBAAmB,SAAUz+0B,GAC5C,OAAKrvJ,KAAK8u+B,gBAIC9u+B,KAAK8u+B,gBAAgBz/0B,GAHrB,MAcfuhJ,EAASvwR,UAAU0vI,kBAAoB,SAAU3xC,EAAYm60B,GACzD,IAAIlpyB,GAAIoiyB,QAAkBzx7B,KAAK0y7B,aAAct00B,EAAYm60B,GAAiB,GAC1E,OAAO9zhB,QAAMp1Q,EAAGrvJ,KAAKsgJ,QAAStgJ,KAAKsoJ,UAMvCsoJ,EAASvwR,UAAU2u9B,qBAAuB,SAAU5+2B,GAGhD,QAFIrqH,EAAS/F,KAAK0y7B,aAAa3s7B,OAC3Bgq+B,EAAiB,IAAIzh+B,MAAMvI,GACtBspJ,EAAIrvJ,KAAKsgJ,QAAS+O,EAAItpJ,IAAUspJ,EACrC0g1B,EAAe1g1B,GAAKrvJ,KAAKk19B,0BAA0B9k2B,EAAQi/B,GAE/DrvJ,KAAK8u+B,gBAAkBiB,GAEpBn/rB,EA/bmB,2DC7CvB,IAAIy9rB,EAAmB,GAKnBx8C,EAAoB,0GCDxB,WAA4B3/3B,EAAUu8F,GACzC,IAAIuh1B,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAa,UACjB,OAOA,SAAUjh1B,EAAWC,EAAYlxC,GAC7B,GAAKixC,EAID,OAAOh9F,EACF3mC,QAAQyk9B,EAAQ9g1B,EAAU,GAAGnkJ,YAC7BwgB,QAAQ0k9B,EAAQ/g1B,EAAU,GAAGnkJ,YAC7BwgB,QAAQ2k9B,EAAQhh1B,EAAU,GAAGnkJ,YAC7BwgB,QAAQ4k9B,EAAY,WACrB,IACIvo6B,EAAQ6mF,EAASq/0B,iBADb5+0B,EAAU,IAIlB,OAFAxwC,OAAO92C,EAAO,KACNA,EAAM8yB,YAAcw0D,EAAU,GAAK,GAClCnkJ,cAUlB,WAA6BwzY,EAAW9vP,GAG3C,QAFIn6D,EAAMiqT,EAAUx4Y,OAChBqq+B,EAAmB,IAAI9h+B,MAAMgmF,GACxB3lF,EAAI,EAAGA,EAAI2lF,IAAO3lF,EACvByh+B,EAAiBzh+B,GAAK0h+B,EAAmB9xlB,EAAU5vY,GAAI8/I,GAE3D,OAAOK,EAA2Bsh1B,GAM/B,WAAoCA,GACvC,OAAgC,IAA5BA,EAAiBrq+B,OACVqq+B,EAAiB,GAS5B,SAAUlh1B,EAAWC,EAAYlxC,GAC7B,GAAKixC,EAGA,CACD,IAAIuoE,KAAI64wB,MAAcph1B,GAClBtrI,GAAQ2w6B,QAAO98tB,EAAG24wB,EAAiBrq+B,QACvC,OAAOqq+B,EAAiBxs9B,GAAOsrI,EAAWC,EAAYlxC,KAiB3D,WAAmBn/F,GACtB,IAAI21N,EAAO,GACPlzN,EAAQ,sBAAsBqlV,KAAK9nV,GACvC,GAAIyC,EAAO,CAEP,IAAIgv9B,EAAgBhv9B,EAAM,GAAGqwN,WAAW,GACpC4+vB,EAAejv9B,EAAM,GAAGqwN,WAAW,GACnCxiF,OAAW,EACf,IAAKA,EAAWmh1B,EAAenh1B,GAAYoh1B,IAAgBph1B,EACvDqlF,EAAKhvO,KAAKqZ,EAAIyM,QAAQhK,EAAM,GAAIyR,OAAOC,aAAam8H,KAExD,OAAOqlF,EAGX,GADAlzN,EAAQ,kBAAkBqlV,KAAK9nV,GACpB,CAGP,QADI2x9B,EAAS7s+B,SAAS2d,EAAM,GAAI,IACvB5S,EAAI/K,SAAS2d,EAAM,GAAI,IAAK5S,GAAK8h+B,EAAQ9h+B,IAC9C8lO,EAAKhvO,KAAKqZ,EAAIyM,QAAQhK,EAAM,GAAI5S,EAAE5D,aAEtC,OAAO0pO,EAEXA,SAAKhvO,KAAKqZ,GACH21N,6JC5FPi8vB,EAAO,IAAIpi+B,MAAM,GAKd,aACH,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAOpB,WAAejE,GAClB,OAAOgoB,EAAIhoB,EAAW,EAAG,EAAG,EAAG,EAAG,EAAG,GASlC,WAAkBsm+B,EAAYC,GACjC,IAAIx/mB,EAAKu/mB,EAAW,GAChB33Z,EAAK23Z,EAAW,GAChBtm4B,EAAKsm4B,EAAW,GAChB5znB,GAAK4znB,EAAW,GAChBl14B,EAAKk14B,EAAW,GAChBnlP,EAAKmlP,EAAW,GAChB3+kB,EAAK4+kB,EAAW,GAChB13Z,EAAK03Z,EAAW,GAChBtm4B,EAAKsm4B,EAAW,GAChBnlP,EAAKmlP,EAAW,GAChBC,GAAKD,EAAW,GAChBE,GAAKF,EAAW,GACpBD,SAAW,GAAKv/mB,EAAK4gC,EAAK3nT,EAAK6ue,EAC/By3Z,EAAW,GAAK33Z,EAAKhnL,EAAKj1C,GAAKm8N,EAC/By3Z,EAAW,GAAKv/mB,EAAK9mR,EAAKD,EAAKohpB,EAC/BklP,EAAW,GAAK33Z,EAAK1ue,EAAKyyQ,GAAK0uY,EAC/BklP,EAAW,GAAKv/mB,EAAKy/mB,GAAKxm4B,EAAKym4B,GAAKr14B,EACpCk14B,EAAW,GAAK33Z,EAAK63Z,GAAK9znB,GAAK+znB,GAAKtlP,EAC7BmlP,EAaJ,WAAatm+B,EAAW8nB,EAAGD,EAAGjS,EAAGzU,EAAGvC,GAAGrD,GAC1CyE,SAAU,GAAK8nB,EACf9nB,EAAU,GAAK6nB,EACf7nB,EAAU,GAAK4V,EACf5V,EAAU,GAAKmB,EACfnB,EAAU,GAAKpB,GACfoB,EAAU,GAAKzE,EACRyE,EAQJ,WAAsBsm+B,EAAYC,GACrCD,SAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GACpBD,EAWJ,WAAetm+B,EAAW8gG,GAC7B,IAAIxhG,EAAIwhG,EAAW,GACfr3C,EAAIq3C,EAAW,GACnBA,SAAW,GAAK9gG,EAAU,GAAKV,EAAIU,EAAU,GAAKypD,EAAIzpD,EAAU,GAChE8gG,EAAW,GAAK9gG,EAAU,GAAKV,EAAIU,EAAU,GAAKypD,EAAIzpD,EAAU,GACzD8gG,EAoBJ,WAAe9gG,EAAWV,EAAGmqD,GAChC,OAAOurgB,EAASh1jB,EAAWgoB,EAAIq+8B,EAAM/m+B,EAAG,EAAG,EAAGmqD,EAAG,EAAG,IASjD,WAAmBprD,EAAQiB,EAAGmqD,GACjC,OAAOzhC,EAAI3pB,EAAQiB,EAAG,EAAG,EAAGmqD,EAAG,EAAG,GAS/B,WAAmBzpD,EAAW+pF,EAAIC,GACrC,OAAOgre,EAASh1jB,EAAWgoB,EAAIq+8B,EAAM,EAAG,EAAG,EAAG,EAAGt84B,EAAIC,IAelD,WAAiBhqF,EAAWqh8B,EAAKC,EAAKjkM,EAAIC,EAAIr2qB,GAAOs62B,EAAKC,GAC7D,IAAIn62B,EAAMxkF,KAAKwkF,IAAIJ,IACfvK,EAAM75E,KAAK65E,IAAIuK,IACnBjnF,SAAU,GAAKq9vB,EAAK3grB,EACpB18E,EAAU,GAAKs9vB,EAAKj2qB,EACpBrnF,EAAU,IAAMq9vB,EAAKh2qB,EACrBrnF,EAAU,GAAKs9vB,EAAK5grB,EACpB18E,EAAU,GAAKuh8B,EAAMlkM,EAAK3grB,EAAM8k3B,EAAMnkM,EAAKh2qB,EAAMg62B,EACjDrh8B,EAAU,GAAKuh8B,EAAMjkM,EAAKj2qB,EAAMm62B,EAAMlkM,EAAK5grB,EAAM4k3B,EAC1Cth8B,EAkCJ,WAAqB3B,EAAQiyC,GAChC,IAAIwrF,EAqBD,WAAqB0u0B,GACxB,OAAOA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAtB5Bk8B,CAAYp27B,IACtB+jE,OAAe,IAARynB,EAAW,IAClB,IAAIh0G,EAAIwoB,EAAO,GACXzoB,EAAIyoB,EAAO,GACX16B,GAAI06B,EAAO,GACXnvC,EAAImvC,EAAO,GACX1xC,EAAI0xC,EAAO,GACX/0C,EAAI+0C,EAAO,GACfjyC,SAAO,GAAK8C,EAAI26H,EAChBz9H,EAAO,IAAMwpB,EAAIi0G,EACjBz9H,EAAO,IAAMuX,GAAIkmH,EACjBz9H,EAAO,GAAKypB,EAAIg0G,EAChBz9H,EAAO,IAAMuX,GAAIra,EAAI4F,EAAIvC,GAAKk9H,EAC9Bz9H,EAAO,KAAOypB,EAAIvsB,EAAIssB,EAAIjpB,GAAKk9H,EACxBz9H,EAgBJ,WAAkBms8B,GACrB,MAAO,UAAYA,EAAIpt7B,KAAK,MAAQ,oCCnPjC,aACH,OAA0B,WACtB,MAAM,IAAIhR,MAAM,kCADM,uCAS9B,IAAIu69B,EAAc,EAUX,WAAgBtx6B,GACnB,OAAOA,EAAIux6B,SAAWvx6B,EAAIux6B,OAASj+8B,SAASg+8B,IAMzC,IAAI56I,EAAU,uCC/BrBxZ,GAAOx9R,QAAU8xb,EAEjB,IAAI5rE,EAAUx/U,EAAQ,OAEtB,WAAatjG,GACTxif,KAAKwif,IAAM7/d,YAAYgi0B,QAAUhi0B,YAAYgi0B,OAAOniW,GAAOA,EAAM,IAAIlge,WAAWkge,GAAO,GACvFxif,KAAK6oF,IAAM,EACX7oF,KAAK8H,KAAO,EACZ9H,KAAK+F,OAAS/F,KAAKwif,IAAIz8e,OAG3Bmr+B,EAAIC,OAAU,EACdD,EAAIE,QAAU,EACdF,EAAI3qQ,MAAU,EACd2qQ,EAAIG,QAAU,EAEd,IAAIC,EAAiB,WACjBC,EAAiB,EAAID,EAKrBE,EAAyC,oBAAhB9v0B,YAA8B,KAAO,IAAIA,YAAY,QAwYlF,WAAuBo5E,GACnB,OAAOA,EAAIhzO,OAASop+B,EAAI3qQ,MACpBzrf,EAAIC,aAAeD,EAAIjyJ,IAAMiyJ,EAAIjyJ,IAAM,EA0D/C,WAAgCu0rB,EAAU9orB,EAAKwmJ,IAC3C,IAAI22vB,GACAn94B,GAAO,MAAS,EAChBA,GAAO,QAAW,EAClBA,GAAO,UAAY,EAAIpnF,KAAKC,MAAMD,KAAK8T,IAAIszE,IAAmB,EAAXpnF,KAAKqivB,MAG5Dz0gB,GAAI42vB,QAAQD,IACZ,QAAS9i+B,GAAImsO,GAAIjyJ,IAAM,EAAGl6E,IAAKyuwB,EAAUzuwB,KAAKmsO,GAAI0nQ,IAAI7ze,GAAI8i+B,IAAY32vB,GAAI0nQ,IAAI7ze,IAGlF,WAA2BN,EAAKysO,GAAS,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAI62vB,YAAYtj+B,EAAIM,KAClG,WAA4BN,EAAKysO,GAAQ,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAI82vB,aAAavj+B,EAAIM,KACnG,WAA0BN,EAAKysO,GAAU,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAIgzrB,WAAWz/5B,EAAIM,KACjG,WAA2BN,EAAKysO,GAAS,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAImzrB,YAAY5/5B,EAAIM,KAClG,WAA4BN,EAAKysO,GAAQ,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAI+2vB,aAAaxj+B,EAAIM,KACnG,WAA4BN,EAAKysO,GAAQ,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAIg3vB,aAAazj+B,EAAIM,KACnG,WAA6BN,EAAKysO,GAAO,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAIi3vB,cAAc1j+B,EAAIM,KACpG,WAA4BN,EAAKysO,GAAQ,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAIk3vB,aAAa3j+B,EAAIM,KACnG,WAA6BN,EAAKysO,GAAO,QAASnsO,GAAI,EAAGA,GAAIN,EAAItI,OAAQ4I,KAAKmsO,EAAIm3vB,cAAc5j+B,EAAIM,KAIpG,WAAoB6ze,EAAK35Z,GACrB,OAAS25Z,EAAI35Z,GACR25Z,EAAI35Z,EAAM,IAAM,EAChB25Z,EAAI35Z,EAAM,IAAM,IACD,SAAf25Z,EAAI35Z,EAAM,GAGnB,YAAoB25Z,EAAKlhe,EAAKunE,IAC1B25Z,EAAI35Z,IAAOvnE,EACXkhe,EAAI35Z,GAAM,GAAMvnE,IAAQ,EACxBkhe,EAAI35Z,GAAM,GAAMvnE,IAAQ,GACxBkhe,EAAI35Z,GAAM,GAAMvnE,IAAQ,GAG5B,WAAmBkhe,EAAK35Z,GACpB,OAAS25Z,EAAI35Z,GACR25Z,EAAI35Z,EAAM,IAAM,EAChB25Z,EAAI35Z,EAAM,IAAM,KAChB25Z,EAAI35Z,EAAM,IAAM,IA3ezBqo5B,EAAI7w9B,UAAY,CAEZolT,QAAS,WACLzlU,KAAKwif,IAAM,MAKfpmQ,WAAY,SAAS81vB,EAAW3/9B,EAAQ+3B,IAGpC,IAFAA,GAAMA,IAAOtqC,KAAK+F,OAEX/F,KAAK6oF,IAAMv+C,IAAK,CACnB,IAAIhpB,GAAMthB,KAAK+6O,aACX5N,GAAM7rN,IAAO,EACb87vB,GAAWp9wB,KAAK6oF,IAEpB7oF,KAAK8H,KAAa,EAANwZ,GACZ4w9B,EAAU/kwB,GAAK56N,EAAQvS,MAEnBA,KAAK6oF,MAAQu0rB,IAAUp9wB,KAAKsM,KAAKgV,IAEzC,OAAO/O,GAGX4/9B,YAAa,SAASD,EAAW3/9B,GAC7B,OAAOvS,KAAKo8O,WAAW81vB,EAAW3/9B,EAAQvS,KAAK+6O,aAAe/6O,KAAK6oF,MAGvEup5B,YAAa,WACT,IAAI9w9B,EAAM+w9B,EAAWry+B,KAAKwif,IAAKxif,KAAK6oF,KACpC,YAAKA,KAAO,EACLvnE,GAGXgx9B,aAAc,WACV,IAAIhx9B,EAAMix9B,EAAUvy+B,KAAKwif,IAAKxif,KAAK6oF,KACnC,YAAKA,KAAO,EACLvnE,GAKXkx9B,YAAa,WACT,IAAIlx9B,EAAM+w9B,EAAWry+B,KAAKwif,IAAKxif,KAAK6oF,KAAOwp5B,EAAWry+B,KAAKwif,IAAKxif,KAAK6oF,IAAM,GAAKyo5B,EAChF,YAAKzo5B,KAAO,EACLvnE,GAGXmx9B,aAAc,WACV,IAAInx9B,EAAM+w9B,EAAWry+B,KAAKwif,IAAKxif,KAAK6oF,KAAO0p5B,EAAUvy+B,KAAKwif,IAAKxif,KAAK6oF,IAAM,GAAKyo5B,EAC/E,YAAKzo5B,KAAO,EACLvnE,GAGXy7N,UAAW,WACP,IAAIz7N,EAAMgk5B,EAAQp2yB,KAAKlvH,KAAKwif,IAAKxif,KAAK6oF,KAAK,EAAM,GAAI,GACrD,YAAKA,KAAO,EACLvnE,GAGX07N,WAAY,WACR,IAAI17N,EAAMgk5B,EAAQp2yB,KAAKlvH,KAAKwif,IAAKxif,KAAK6oF,KAAK,EAAM,GAAI,GACrD,YAAKA,KAAO,EACLvnE,GAGXy5N,WAAY,SAAS23vB,GACjB,IACIpx9B,GAAK4Q,GADLswd,EAAMxif,KAAKwif,IAM+B,OAHzBlhe,GAAY,KAAjC4Q,GAAIswd,EAAIxif,KAAK6oF,QAAqC32D,GAAI,MACjC5Q,KAAY,KAAjC4Q,GAAIswd,EAAIxif,KAAK6oF,UAA6B,EAAQ32D,GAAI,OACjC5Q,KAAY,KAAjC4Q,GAAIswd,EAAIxif,KAAK6oF,UAA6B,GAAQ32D,GAAI,OACjC5Q,KAAY,KAAjC4Q,GAAIswd,EAAIxif,KAAK6oF,UAA6B,GAAQ32D,GAAI,KAAa5Q,GA+S3E,WAA6BymB,EAAGlhC,EAAG49D,IAC/B,IACIgzJ,GAAGvlM,GADHswd,GAAM/9a,GAAE+9a,IAQ6B,GALvB/qR,IAAU,KAA5BvlM,GAAIswd,GAAI/9a,GAAEokB,UAA2B,EAAQ32D,GAAI,MAC/BulM,KAAU,KAA5BvlM,GAAIswd,GAAI/9a,GAAEokB,UAA2B,EAAQ32D,GAAI,OAC/BulM,KAAU,KAA5BvlM,GAAIswd,GAAI/9a,GAAEokB,UAA2B,GAAQ32D,GAAI,OAC/BulM,KAAU,KAA5BvlM,GAAIswd,GAAI/9a,GAAEokB,UAA2B,GAAQ32D,GAAI,OAC/BulM,KAAU,KAA5BvlM,GAAIswd,GAAI/9a,GAAEokB,UAA2B,GAAQ32D,GAAI,OAC/BulM,KAAU,GAA5BvlM,GAAIswd,GAAI/9a,GAAEokB,UAA2B,GAAQ32D,GAAI,KAAM,OAU3D,WAAeg9W,EAAKC,EAAMujmB,IACtB,OAAIA,GACc,WAAPvjmB,GAAsBD,IAAQ,GAGlB,YAAdC,IAAS,IAAqBD,IAAQ,GAfeyjmB,CAAM5q8B,EAAG0vL,GAAG5wN,GAE1E,MAAM,IAAI4P,MAAM,0CAvTLm89B,CAFctx9B,KAAY,IAAjC4Q,GAAIswd,EAAIxif,KAAK6oF,QAA6B,GAEV6p5B,EAAU1y+B,OAG9Ci9O,aAAc,WACV,OAAOj9O,KAAK+6O,YAAW,IAG3BK,YAAa,WACT,IAAI54N,EAAMxiB,KAAK+6O,aACf,OAAOv4N,EAAM,GAAM,GAAKA,EAAM,IAAK,EAAKA,EAAM,GAGlD06N,YAAa,WACT,OAAO8qF,QAAQhoU,KAAK+6O,eAGxB+B,WAAY,WACR,IAAIxyM,EAAMtqC,KAAK+6O,aAAe/6O,KAAK6oF,IAC/BA,EAAM7oF,KAAK6oF,IAGf,OAFA7oF,KAAK6oF,IAAMv+C,EAEPA,EAAMu+C,GApGY,IAoGsB2o5B,EA+cpD,WAA6Bhvf,EAAK35Z,EAAKv+C,IACnC,OAAOkn8B,EAAgB7v0B,OAAO6gV,EAAInD,SAASx2Z,EAAKv+C,KA9cjCuo8B,CAAoB7y+B,KAAKwif,IAAK35Z,EAAKv+C,GA2YtD,WAAkBk4c,EAAK35Z,EAAKv+C,IAIxB,QAHI/nB,GAAM,GACN5T,GAAIk6E,EAEDl6E,GAAI27B,IAAK,CACZ,IASI0uiB,GAAIE,GAAIgiL,GATRvrF,GAAKntL,EAAI7ze,IACTsR,GAAI,KACJ2n5B,GACAj4P,GAAK,IAAO,EACZA,GAAK,IAAO,EACZA,GAAK,IAAO,EAAI,EAEpB,GAAIhhqB,GAAIi55B,GAAmBt93B,GAAK,MAIP,IAArBs93B,GACIj4P,GAAK,MACL1vpB,GAAI0vpB,IAEoB,IAAzB7ge,GAEiB,MAAV,KADVkqY,GAAKx2F,EAAI7ze,GAAI,OAETsR,IAAU,GAAL0vpB,KAAc,EAAY,GAAL32F,KACjB,MACL/4jB,GAAI,MAGgB,IAArB2n5B,IAEP1uV,GAAK12F,EAAI7ze,GAAI,GACO,MAAV,KAFVqqkB,GAAKx2F,EAAI7ze,GAAI,MAE+B,MAAV,IAALuqkB,OACzBj5jB,IAAU,GAAL0vpB,KAAa,IAAY,GAAL32F,KAAc,EAAY,GAALE,KACrC,MAAUj5jB,IAAK,OAAUA,IAAK,SACnCA,GAAI,OAGgB,IAArB2n5B,KAEP1uV,GAAK12F,EAAI7ze,GAAI,GACbusvB,GAAK14Q,EAAI7ze,GAAI,GACO,MAAV,KAHVqqkB,GAAKx2F,EAAI7ze,GAAI,MAG+B,MAAV,IAALuqkB,KAAuC,MAAV,IAALgiL,OACjDj7uB,IAAU,GAAL0vpB,KAAa,IAAa,GAAL32F,KAAc,IAAY,GAALE,KAAc,EAAY,GAALgiL,KAC3D,OAAUj7uB,IAAK,WACpBA,GAAI,OAKN,OAANA,IACAA,GAAI,MACJ2n5B,GAAmB,GAEZ3n5B,GAAI,QACXA,IAAK,MACLsC,IAAOyQ,OAAOC,aAAahT,KAAM,GAAK,KAAQ,OAC9CA,GAAI,MAAa,KAAJA,IAGjBsC,IAAOyQ,OAAOC,aAAahT,IAC3BtR,IAAKi55B,GAGT,OAAOrl5B,GAvcIuw9B,CAAS9y+B,KAAKwif,IAAK35Z,EAAKv+C,IAGnCyo8B,UAAW,WACP,IAAIzo8B,EAAMtqC,KAAK+6O,aAAe/6O,KAAK6oF,IAC/Bv2D,EAAStyB,KAAKwif,IAAInD,SAASr/e,KAAK6oF,IAAKv+C,GACzC,YAAKu+C,IAAMv+C,EACJhY,GAKX0g9B,iBAAkB,SAAS3k+B,EAAKqk+B,GAC5B,GAAI1y+B,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAK+6O,WAAW23vB,IAC7D,IAAIpo8B,GAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,IAAKj8B,EAAI5I,KAAKzF,KAAK+6O,WAAW23vB,IAChD,OAAOrk+B,GAEX6k+B,kBAAmB,SAAS7k+B,GACxB,GAAIrO,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAKo7O,eAClD,IAAI9wM,EAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,GAAKj8B,EAAI5I,KAAKzF,KAAKo7O,eACrC,OAAO/sO,GAEX8k+B,kBAAmB,SAAS9k+B,GACxB,GAAIrO,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAKk9O,eAClD,IAAI5yM,EAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,GAAKj8B,EAAI5I,KAAKzF,KAAKk9O,eACrC,OAAO7uO,GAEX+k+B,gBAAiB,SAAS/k+B,GACtB,GAAIrO,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAK+8O,aAClD,IAAIzyM,EAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,GAAKj8B,EAAI5I,KAAKzF,KAAK+8O,aACrC,OAAO1uO,GAEXgl+B,iBAAkB,SAAShl+B,GACvB,GAAIrO,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAKg9O,cAClD,IAAI1yM,EAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,GAAKj8B,EAAI5I,KAAKzF,KAAKg9O,cACrC,OAAO3uO,GAEXil+B,kBAAmB,SAASjl+B,GACxB,GAAIrO,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAKoy+B,eAClD,IAAI9n8B,EAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,GAAKj8B,EAAI5I,KAAKzF,KAAKoy+B,eACrC,OAAO/j+B,GAEXkl+B,mBAAoB,SAASll+B,GACzB,GAAIrO,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAKsy+B,gBAClD,IAAIho8B,EAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,GAAKj8B,EAAI5I,KAAKzF,KAAKsy+B,gBACrC,OAAOjk+B,GAEXml+B,kBAAmB,SAASnl+B,GACxB,GAAIrO,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAKwy+B,eAClD,IAAIlo8B,EAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,GAAKj8B,EAAI5I,KAAKzF,KAAKwy+B,eACrC,OAAOnk+B,GAEXol+B,mBAAoB,SAASpl+B,GACzB,GAAIrO,KAAK8H,OAASop+B,EAAI3qQ,MAAO,OAAOl4tB,EAAI5I,KAAKzF,KAAKyy+B,gBAClD,IAAIno8B,EAAM2o8B,EAAcjz+B,MAExB,IADAqO,EAAMA,GAAO,GACNrO,KAAK6oF,IAAMv+C,GAAKj8B,EAAI5I,KAAKzF,KAAKyy+B,gBACrC,OAAOpk+B,GAGX/B,KAAM,SAASgV,GACX,IAAIxZ,EAAa,EAANwZ,EACX,GAAIxZ,IAASop+B,EAAIC,OAAQ,KAAOnx+B,KAAKwif,IAAIxif,KAAK6oF,OAAS,WAAM,GACpD/gF,IAASop+B,EAAI3qQ,MAAOvmuB,KAAK6oF,IAAM7oF,KAAK+6O,aAAe/6O,KAAK6oF,YACxD/gF,IAASop+B,EAAIG,QAASrx+B,KAAK6oF,KAAO,UAClC/gF,IAASop+B,EAAIE,QACjB,MAAM,IAAI369B,MAAM,uBAAyB3O,GADf9H,KAAK6oF,KAAO,IAM/C6q5B,SAAU,SAASvmwB,EAAKrlO,GACpB9H,KAAK2x+B,YAAaxkwB,GAAO,EAAKrlO,IAGlC4p+B,QAAS,SAASj/7B,GAGd,QAFI1sC,EAAS/F,KAAK+F,QAAU,GAErBA,EAAS/F,KAAK6oF,IAAMp2C,GAAK1sC,GAAU,EAE1C,GAAIA,IAAW/F,KAAK+F,OAAQ,CACxB,IAAIy8e,GAAM,IAAIlge,WAAWvc,GACzBy8e,GAAInwd,IAAIryB,KAAKwif,KACbxif,KAAKwif,IAAMA,GACXxif,KAAK+F,OAASA,IAItBkyW,OAAQ,WACJ,YAAKlyW,OAAS/F,KAAK6oF,IACnB7oF,KAAK6oF,IAAM,EACJ7oF,KAAKwif,IAAInD,SAAS,EAAGr/e,KAAK+F,SAGrC+r+B,aAAc,SAASxw9B,GACnBthB,KAAK0x+B,QAAQ,GACbiC,GAAW3z+B,KAAKwif,IAAKlhe,EAAKthB,KAAK6oF,KAC/B7oF,KAAK6oF,KAAO,GAGhBkp5B,cAAe,SAASzw9B,GACpBthB,KAAK0x+B,QAAQ,GACbiC,GAAW3z+B,KAAKwif,IAAKlhe,EAAKthB,KAAK6oF,KAC/B7oF,KAAK6oF,KAAO,GAGhBmp5B,aAAc,SAAS1w9B,GACnBthB,KAAK0x+B,QAAQ,GACbiC,GAAW3z+B,KAAKwif,KAAW,EAANlhe,EAAUthB,KAAK6oF,KACpC8q5B,GAAW3z+B,KAAKwif,IAAKt1e,KAAKC,MAAMmU,EAAMiw9B,GAAiBvx+B,KAAK6oF,IAAM,GAClE7oF,KAAK6oF,KAAO,GAGhBop5B,cAAe,SAAS3w9B,GACpBthB,KAAK0x+B,QAAQ,GACbiC,GAAW3z+B,KAAKwif,KAAW,EAANlhe,EAAUthB,KAAK6oF,KACpC8q5B,GAAW3z+B,KAAKwif,IAAKt1e,KAAKC,MAAMmU,EAAMiw9B,GAAiBvx+B,KAAK6oF,IAAM,GAClE7oF,KAAK6oF,KAAO,GAGhB8o5B,YAAa,SAASrw9B,IAClBA,GAAOA,GAAO,GAEJ,WAAaA,EAAM,EAkKrC,WAAwBA,EAAKw5N,GACzB,IAAIo0J,GAAKC,GAiBT,GAfApnY,GAAW,GACPmnY,GAAQ5tX,EAAM,WAAe,EAC7B6tX,GAAQ7tX,EAAM,WAAe,IAG7B6tX,MAAU7tX,EAAM,YAEN,YAHV4tX,MAAU5tX,EAAM,aAIZ4tX,GAAOA,GAAM,EAAK,GAElBA,GAAM,EACNC,GAAQA,GAAO,EAAK,IAIxB7tX,GAAO,qBAAuBA,GAAM,oBACpC,MAAM,IAAI7K,MAAM,0CAGpBqkO,EAAI42vB,QAAQ,IAMhB,WAA2BximB,EAAKC,EAAMr0J,IAClCA,GAAI0nQ,IAAI1nQ,GAAIjyJ,OAAe,IAANqmT,EAAa,IAAMA,KAAS,EACjDp0J,GAAI0nQ,IAAI1nQ,GAAIjyJ,OAAe,IAANqmT,EAAa,IAAMA,KAAS,EACjDp0J,GAAI0nQ,IAAI1nQ,GAAIjyJ,OAAe,IAANqmT,EAAa,IAAMA,KAAS,EACjDp0J,GAAI0nQ,IAAI1nQ,GAAIjyJ,OAAe,IAANqmT,EAAa,IAClCp0J,GAAI0nQ,IAAI1nQ,GAAIjyJ,KAAe,KADaqmT,KAAS,GARjD0kmB,CAAkB1kmB,GAAKC,EAAMr0J,GAYjC,WAA4Bq0J,EAAMr0J,GAC9B,IAAI63gB,IAAc,EAAPxjX,IAAgB,EAE3Br0J,EAAI0nQ,IAAI1nQ,EAAIjyJ,QAAU8pqB,KAAgBxjX,KAAU,GAAK,IAAO,GAASA,IACrEr0J,EAAI0nQ,IAAI1nQ,EAAIjyJ,OAAiB,IAAPsmT,IAAgBA,KAAU,GAAK,IAAO,GAASA,IACrEr0J,EAAI0nQ,IAAI1nQ,EAAIjyJ,OAAiB,IAAPsmT,IAAgBA,KAAU,GAAK,IAAO,GAASA,IACrEr0J,EAAI0nQ,IAAI1nQ,EAAIjyJ,OAAiB,IAAPsmT,IAAgBA,KAAU,GAAK,IAAO,GAASA,IACrEr0J,EAAI0nQ,IAAI1nQ,EAAIjyJ,OAAiB,IAAPsmT,IAAgBA,KAAU,GAAK,IAAO,GAASA,IACrEr0J,EAAI0nQ,IAAI1nQ,EAAIjyJ,OAAiB,IAAPsmT,OAnBtB0kmB,CAAmB1kmB,GAAMr0J,GA1LjBg5vB,CAAexy9B,EAAKthB,OAIxBA,KAAK0x+B,QAAQ,GAEb1x+B,KAAKwif,IAAIxif,KAAK6oF,OAAyB,IAANvnE,GAAeA,EAAM,IAAO,IAAO,KAAQA,GAAO,OACnFthB,KAAKwif,IAAIxif,KAAK6oF,OAAyB,KAAdvnE,KAAS,IAAcA,EAAM,IAAO,IAAO,KAAQA,GAAO,OACnFthB,KAAKwif,IAAIxif,KAAK6oF,OAAyB,KAAdvnE,KAAS,IAAcA,EAAM,IAAO,IAAO,KAAQA,GAAO,OACnFthB,KAAKwif,IAAIxif,KAAK6oF,OAAYvnE,IAAQ,EAAK,SAG3Csw9B,aAAc,SAAStw9B,GACnBthB,KAAK2x+B,YAAYrw9B,EAAM,EAAW,GAANA,EAAU,EAAU,EAANA,IAG9Cuw9B,aAAc,SAASvw9B,GACnBthB,KAAK2x+B,YAAY3pqB,QAAQ1mT,KAG7BusuB,YAAa,SAAStruB,GAClBA,EAAMyQ,OAAOzQ,GACbviB,KAAK0x+B,QAAqB,EAAbnv9B,EAAIxc,QAEjB/F,KAAK6oF,MAEL,IAAIu0rB,EAAWp9wB,KAAK6oF,IAEpB7oF,KAAK6oF,IAsSb,WAAmB25Z,EAAKjge,EAAKsmE,IACzB,QAAgB5oE,GAAG8z9B,GAAVpl+B,GAAI,EAAYA,GAAI4T,EAAIxc,OAAQ4I,KAAK,CAG1C,IAFAsR,GAAIsC,EAAIqvN,WAAWjjO,KAEX,OAAUsR,GAAI,MAClB,KAAI8z9B,GAWG,CACC9z9B,GAAI,OAAWtR,GAAI,IAAM4T,EAAIxc,QAC7By8e,EAAI35Z,MAAS,IACb25Z,EAAI35Z,MAAS,IACb25Z,EAAI35Z,MAAS,KAEbkr5B,GAAO9z9B,GAEX,SAlBA,GAAIA,GAAI,MAAQ,CACZuie,EAAI35Z,MAAS,IACb25Z,EAAI35Z,MAAS,IACb25Z,EAAI35Z,MAAS,IACbkr5B,GAAO9z9B,GACP,SAEAA,GAAI8z9B,GAAO,OAAU,GAAK9z9B,GAAI,MAAS,MACvC8z9B,GAAO,UAYRA,KACPvxf,EAAI35Z,MAAS,IACb25Z,EAAI35Z,MAAS,IACb25Z,EAAI35Z,MAAS,IACbkr5B,GAAO,MAGP9z9B,GAAI,IACJuie,EAAI35Z,MAAS5oE,IAETA,GAAI,KACJuie,EAAI35Z,MAAS5oE,IAAK,EAAM,KAEpBA,GAAI,MACJuie,EAAI35Z,MAAS5oE,IAAK,GAAM,KAExBuie,EAAI35Z,MAAS5oE,IAAK,GAAO,IACzBuie,EAAI35Z,MAAS5oE,IAAK,GAAM,GAAO,KAEnCuie,EAAI35Z,MAAS5oE,IAAK,EAAM,GAAO,KAEnCuie,EAAI35Z,MAAa,GAAJ5oE,GAAW,KAGhC,OAAO4oE,GAxVQmr5B,CAAUh0+B,KAAKwif,IAAKjge,EAAKviB,KAAK6oF,KACzC,IAAIyL,GAAMt0F,KAAK6oF,IAAMu0rB,EAEjB9orB,IAAO,KAAM2/4B,EAAuB72N,EAAU9orB,GAAKt0F,MAGvDA,KAAK6oF,IAAMu0rB,EAAW,EACtBp9wB,KAAK2x+B,YAAYr94B,IACjBt0F,KAAK6oF,KAAOyL,IAGhBw50B,WAAY,SAASxs5B,GACjBthB,KAAK0x+B,QAAQ,GACbpsE,EAAQ7szB,MAAMz4G,KAAKwif,IAAKlhe,EAAKthB,KAAK6oF,KAAK,EAAM,GAAI,GACjD7oF,KAAK6oF,KAAO,GAGhBol1B,YAAa,SAAS3s5B,GAClBthB,KAAK0x+B,QAAQ,GACbpsE,EAAQ7szB,MAAMz4G,KAAKwif,IAAKlhe,EAAKthB,KAAK6oF,KAAK,EAAM,GAAI,GACjD7oF,KAAK6oF,KAAO,GAGhBqr5B,WAAY,SAAS5h9B,GACjB,IAAIgiE,EAAMhiE,EAAOvsB,OACjB/F,KAAK2x+B,YAAYr94B,GACjBt0F,KAAK0x+B,QAAQp94B,GACb,QAAS3lF,GAAI,EAAGA,GAAI2lF,EAAK3lF,KAAK3O,KAAKwif,IAAIxif,KAAK6oF,OAASv2D,EAAO3jB,KAGhEwl+B,gBAAiB,SAASj76B,EAAIwG,GAC1B1/D,KAAK6oF,MAGL,IAAIu0rB,GAAWp9wB,KAAK6oF,IACpB3vB,EAAGwG,EAAK1/D,MACR,IAAIs0F,GAAMt0F,KAAK6oF,IAAMu0rB,GAEjB9orB,IAAO,KAAM2/4B,EAAuB72N,GAAU9orB,GAAKt0F,MAGvDA,KAAK6oF,IAAMu0rB,GAAW,EACtBp9wB,KAAK2x+B,YAAYr94B,IACjBt0F,KAAK6oF,KAAOyL,IAGhB5+D,aAAc,SAASy3M,EAAKj0K,EAAIwG,IAC5B1/D,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAI3qQ,OACvBvmuB,KAAKm0+B,gBAAgBj76B,EAAIwG,KAG7B006B,kBAAqB,SAASjnwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKinwB,EAAmB/l+B,IACpGgm+B,mBAAqB,SAASlnwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKknwB,EAAoBhm+B,IACrGim+B,mBAAqB,SAASnnwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKmnwB,EAAoBjm+B,IACrGkm+B,iBAAqB,SAASpnwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKonwB,EAAkBlm+B,IACnGmm+B,kBAAqB,SAASrnwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKqnwB,EAAmBnm+B,IACpGom+B,mBAAqB,SAAStnwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKsnwB,EAAoBpm+B,IACrGqm+B,oBAAqB,SAASvnwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKunwB,EAAqBrm+B,IACtGsm+B,mBAAqB,SAASxnwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKwnwB,EAAoBtm+B,IACrGum+B,oBAAqB,SAASznwB,EAAK9+N,GAAWA,EAAItI,QAAQ/F,KAAK01B,aAAay3M,EAAKynwB,EAAqBvm+B,IAEtGwm+B,gBAAiB,SAAS1nwB,EAAK76M,GAC3BtyB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAI3qQ,OACvBvmuB,KAAKk0+B,WAAW5h9B,IAEpBwi9B,kBAAmB,SAAS3nwB,EAAK7rN,GAC7BthB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAIG,SACvBrx+B,KAAK8x+B,aAAaxw9B,IAEtByz9B,mBAAoB,SAAS5nwB,EAAK7rN,GAC9BthB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAIG,SACvBrx+B,KAAK+x+B,cAAczw9B,IAEvB0z9B,kBAAmB,SAAS7nwB,EAAK7rN,GAC7BthB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAIE,SACvBpx+B,KAAKgy+B,aAAa1w9B,IAEtB2z9B,mBAAoB,SAAS9nwB,EAAK7rN,GAC9BthB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAIE,SACvBpx+B,KAAKiy+B,cAAc3w9B,IAEvB4z9B,iBAAkB,SAAS/nwB,EAAK7rN,GAC5BthB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAIC,QACvBnx+B,KAAK2x+B,YAAYrw9B,IAErB6z9B,kBAAmB,SAAShowB,EAAK7rN,GAC7BthB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAIC,QACvBnx+B,KAAK4x+B,aAAatw9B,IAEtB8z9B,iBAAkB,SAASjowB,EAAK5qN,GAC5BviB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAI3qQ,OACvBvmuB,KAAK6tvB,YAAYtruB,IAErB8y9B,gBAAiB,SAASlowB,EAAK7rN,GAC3BthB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAIG,SACvBrx+B,KAAK8t6B,WAAWxs5B,IAEpBg09B,iBAAkB,SAASnowB,EAAK7rN,GAC5BthB,KAAK0z+B,SAASvmwB,EAAK+jwB,EAAIE,SACvBpx+B,KAAKiu6B,YAAY3s5B,IAErBi09B,kBAAmB,SAASpowB,EAAK7rN,GAC7BthB,KAAKk1+B,iBAAiB/nwB,EAAK66F,QAAQ1mT,mEC9YpC,IAKIk09B,EAAsB,QAEtBC,EAAqB,qBACrBC,EAAa,oBACbC,EAAUzo+B,KAAK45E,GAAG,EAOlB8u5B,EAAQ,MAIRC,EAAM,oBACNC,EAAM,kBACNC,EAAS7o+B,KAAK45E,GAAG,EACjBkv5B,EAAmB,EAAV9o+B,KAAK45E,GAKdmv5B,EAAM,cC5Bb72b,EAAU,CAGdA,UAAoB,EACpBA,QAAiB,eACjBA,MAAgB,eAChBA,QAAiB,gBACjBA,QAAiB,eACjBA,KAAe,gBACfA,KAAe,eACfA,QAAkB,iBAClBA,OAAgB,gBAChBA,SAAmB,SACnBA,UAAoB,gBACpBA,OAAiB,WACjBA,KAAe,iBCff,QAAe,CACb/gE,GAAI,CAAC63f,SAAU,OACf,QAAS,CAACA,SAAU,KAAO,OCF7B,IAAIC,EAAc,iBACH,YAAez26B,GAAK7sD,IACjC,GAAI6sD,GAAI7sD,IACN,OAAO6sD,GAAI7sD,IAMb,QADIuj+B,GAHA5y+B,GAAOqC,OAAOrC,KAAKk8D,IACnB226B,GAAOxj+B,GAAIwoB,cAAc9P,QAAQ4q9B,EAAa,IAC9Cxn+B,IAAI,IAECA,GAAInL,GAAKuC,QAGhB,IAFAqw+B,GAAU5y+B,GAAKmL,KACQ0sB,cAAc9P,QAAQ4q9B,EAAa,MACrCE,GACnB,OAAO326B,GAAI026B,ICRF,WAASE,IACtB,IAWIC,GAAWC,GAAUC,GAXrB509B,GAAO,GACP609B,GAAWJ,GAAQt/9B,MAAM,KAAKrR,IAAI,SAASa,IAC7C,OAAOA,GAAEk+B,SACR33B,OAAO,SAASolB,IACjB,OAAOA,KACNnY,OAAO,SAASyqD,GAAGtyC,IACpB,IAAInb,GAAQmb,GAAEnb,MAAM,KACpBA,UAAMvR,MAAK,GACXg/D,GAAEztD,GAAM,GAAGqkB,eAAiBrkB,GAAM,GAC3BytD,IACN,IAECn2B,GAAS,CACXg17B,KAAM,WACNqT,MAAO,YACPnzqB,GAAI,SAASh9T,IACXqb,GAAK2hT,GAAK7+R,WAAWn+B,KAEvBow+B,MAAO,SAASpw+B,IACdqb,GAAKg19B,KAAOrw+B,GAAIqv+B,GAElBiB,MAAO,SAAStw+B,IACdqb,GAAKql9B,KAAO1g+B,GAAIqv+B,GAElBkB,MAAO,SAASvw+B,IACdqb,GAAKsl9B,KAAO3g+B,GAAIqv+B,GAElBmB,OAAQ,SAASxw+B,IACfqb,GAAKm19B,OAASxw+B,GAAIqv+B,GAEpBoB,MAAO,SAASzw+B,IACdqb,GAAKq19B,MAAQ1w+B,GAAIqv+B,GAEnBsB,MAAO,SAAS3w+B,IACdqb,GAAKu19B,MAAQ5w+B,GAAIqv+B,GAEnBwB,MAAO,SAAS7w+B,IACdqb,GAAKy19B,MAAQ9w+B,GAAIqv+B,GAEnB5w8B,MAAO,SAASz+B,IACdqb,GAAKojB,MAAQN,WAAWn+B,IAAKqv+B,GAE/Bv2U,MAAO,SAAS94pB,IACdqb,GAAK019B,qBAAuB5y8B,WAAWn+B,KAEzCgx+B,KAAM,SAAShx+B,IACbqb,GAAK419B,MAAQjx+B,GAAIqv+B,GAEnB6B,IAAK,SAASlx+B,IACZqb,GAAKozD,GAAKtwC,WAAWn+B,KAEvBmx+B,IAAK,SAASnx+B,IACZqb,GAAK8yD,GAAKhwC,WAAWn+B,KAEvBox+B,IAAK,SAASpx+B,IACZqb,GAAKg29B,GAAKlz8B,WAAWn+B,KAEvB4sC,EAAG,SAAS5sC,IACVqb,GAAKg29B,GAAKlz8B,WAAWn+B,KAEvB2rB,EAAG,SAAS3rB,IACVqb,GAAKsQ,EAAIwS,WAAWn+B,KAEtB0rB,EAAG,SAAS1rB,IACVqb,GAAKqQ,EAAIyS,WAAWn+B,KAEtBsx+B,IAAK,WACHj29B,GAAKk29B,KAAM,GAEbnsnB,KAAM,SAASplX,IACbqb,GAAK+pW,KAAOhoX,SAAS4C,GAAG,KAE1BknzB,MAAO,WACL7ryB,GAAKm29B,UAAW,GAElBC,QAAS,SAASzx+B,IAChBqb,GAAKq29B,aAAe1x+B,GAAEwQ,MAAM,KAAKrR,IAAI,SAASwsB,IAC5C,OAAOwS,WAAWxS,OAGtB+j9B,SAAU,SAAS1v+B,IACjBqb,GAAKq09B,SAAWvx8B,WAAWn+B,KAE7B82G,MAAO,SAAS92G,IACdqb,GAAKy7F,MAAQ92G,GACb,IAAIi+B,GAAOljB,GAAM+7F,EAAO92G,IACpBi+B,KACF5iB,GAAKq09B,SAAWzx8B,GAAKyx8B,WAGzBiC,eAAgB,SAAS3x+B,IACvBqb,GAAKs29B,eAAiB3x+B,GAAIqv+B,GAE5Bx44B,GAAI,SAAS72F,IACX,IAAI62F,GAAK97E,GAAM629B,EAAe5x+B,IAC9Bqb,GAAKs29B,gBAAkB964B,IAAU14D,WAAWn+B,KAAMqv+B,GAEpDwC,SAAU,SAAS7x+B,IACP,UAANA,GACFqb,GAAKy29B,UAAY,OAGjBz29B,GAAKw29B,SAAW7x+B,IAGpB2/X,KAAM,SAAS3/X,IACb,IAAI+x+B,GAAY,SACC,IAAb/x+B,GAAET,SAAsD,IAAtCwy+B,GAAUz49B,QAAQtZ,GAAEic,OAAO,EAAG,MAAoD,IAAtC819B,GAAUz49B,QAAQtZ,GAAEic,OAAO,EAAG,MAAoD,IAAtC819B,GAAUz49B,QAAQtZ,GAAEic,OAAO,EAAG,MAC1IZ,GAAKskX,KAAO3/X,KAGhBgy+B,OAAQ,WACN329B,GAAK229B,QAAS,IAGlB,IAAKjC,MAAaG,GAChBF,GAAWE,GAASH,IACpBkC,MAAiBnq8B,GAEa,mBAD5Bmo8B,GAAeno8B,GAAOio8B,KAEpBE,GAAaD,IAGb309B,GAAK409B,IAAgBD,GAIvB309B,GAAK009B,IAAaC,GAGtB,MAA6B,iBAAnB309B,GAAKy29B,WAA6C,UAAnBz29B,GAAKy29B,YAC5Cz29B,GAAKy29B,UAAYz29B,GAAKy29B,UAAUj98B,eAE3BxZ,GCzIT,IAMI629B,GAAa,KACbC,GAAQ,WACRC,GAAU,cACVC,GAAY,QACZC,GAAS,cAEb,YAAgBhu+B,IACd,GAAoB,iBAATA,GACT,MAAM,IAAI2L,MAAM,gBAElBzW,KAAK8K,KAAOA,GAAK45B,OACjB1kC,KAAKkiH,MAAQ,EACbliH,KAAK6jvB,MAAQ,EACb7jvB,KAAK8xT,KAAO,KACZ9xT,KAAKqlB,MAAQ,GACbrlB,KAAK+4+B,cAAgB,KACrB/4+B,KAAKkK,MAtBO,ECAd,YAAew1D,GAAK7sD,GAAKlP,IACnB2K,MAAMqxB,QAAQ9sB,MAChBlP,GAAMgyP,QAAQ9iP,IACdA,GAAM,MAER,IAEIsR,GAAMxgB,GAAMqW,OAAO,SAASi4e,GAAQj/e,IACtCgm+B,UAAMhm+B,GAAMi/e,IACLA,IAJGp/e,GAAM,GAAK6sD,IAMnB7sD,KACF6sD,GAAI7sD,IAAOsR,IAIR,YAAe3d,GAAGk5D,IACvB,GAAKpxD,MAAMqxB,QAAQn5B,IAAnB,CAIA,IAAIqM,GAAMrM,GAAEmjF,QAIZ,GAHY,cAAR92E,KACFA,GAAMrM,GAAEmjF,SAEO,IAAbnjF,GAAET,OACJ,OAAIuI,MAAMqxB,QAAQn5B,GAAE,KAClBk5D,GAAI7sD,IAAO,QACXmm+B,GAAMxy+B,GAAE,GAAIk5D,GAAI7sD,WAGlB6sD,GAAI7sD,IAAOrM,GAAE,IAGf,GAAKA,GAAET,OAIP,GAAY,YAAR8M,GAAJ,CAIA,GAAY,SAARA,GAKF,OAJMA,MAAO6sD,KACXA,GAAI7sD,IAAO,SAEb6sD,GAAI7sD,IAAKpN,KAAKe,IAOhB,IAAImI,GACJ,OALKL,MAAMqxB,QAAQ9sB,MACjB6sD,GAAI7sD,IAAO,IAILA,QACD,WACA,aACA,aAQH,OAPA6sD,GAAI7sD,IAAO,CACT7N,KAAMwB,GAAE,GAAG60B,cACXyhsB,QAASt2tB,GAAE,SAEI,IAAbA,GAAET,QACJiz+B,GAAMxy+B,GAAE,GAAIk5D,GAAI7sD,MAElB,IACG,eACA,YASH,OARA6sD,GAAI7sD,IAAO,CACT7N,KAAMwB,GAAE,GACR2rB,EAAG3rB,GAAE,GACLg9T,GAAIh9T,GAAE,SAES,IAAbA,GAAET,QACJiz+B,GAAMxy+B,GAAE,GAAIk5D,GAAI7sD,MAElB,IACG,mBACA,cACA,aACA,aACA,aACA,eACA,cACA,kBACA,oBACA,aACA,uBACA,cACA,cACA,kBACA,eACA,kBACA,qBACA,aACA,gBACA,kBACA,QAGH,OAFArM,GAAE,GAAK,CAAC,OAAQA,GAAE,SAClByy+B,GAAMv56B,GAAK7sD,GAAKrM,IAChB,QAGA,IADAmI,IAAI,IACKA,GAAInI,GAAET,QACb,IAAKuI,MAAMqxB,QAAQn5B,GAAEmI,KACnB,OAAOqq+B,GAAMxy+B,GAAGk5D,GAAI7sD,KAGxB,OAAOom+B,GAAMv56B,GAAK7sD,GAAKrM,UArEzBk5D,GAAI7sD,IAAOrM,QAJXk5D,GAAI7sD,KAAO,OAjBX6sD,GAAIl5D,KAAK,ECHb,YAAaosB,IACX,MAlBQ,oBAkBDA,GA6KM,YAASsm9B,IACtB,IAAIC,GF3BN,YAAqBjzW,IAEnB,OADa,IAAI52D,GAAO42D,IACVzzmB,SEyBHm8F,CAAOsq3B,IACdpx+B,GAAOqx+B,GAAKxv5B,QACZ3kF,GAAOm0+B,GAAKxv5B,QAChBwv5B,GAAKxjvB,QAAQ,CAAC,OAAQ3wP,KACtBm0+B,GAAKxjvB,QAAQ,CAAC,OAAQ7tP,KACtB,IAAI43D,GAAM,GACVs56B,UAAMG,GAAMz56B,IAjLd,YAAkBw56B,IAahB,GAZiB,WAAbA,GAAIpx+B,KACNox+B,GAAIE,SAAW,UACO,aAAjBC,GAAQvx+B,MACbox+B,GAAIE,SAAW,WACfF,GAAIx+L,OAAQ,GAGVw+L,GAAIE,SADwB,iBAAnBF,GAAII,WACEzz+B,OAAOrC,KAAK01+B,GAAII,YAAY,GAE5BJ,GAAII,WAGnBJ,GAAIK,KAAM,CAEZ,QADIC,GAAY,GACP7q+B,GAAI,EAAGgtG,GAAKu93B,GAAIK,KAAKxz+B,OAAQ4I,GAAIgtG,KAAMhtG,GAAG,CACjD,IAAIw3X,GAAO,CAAC+ymB,GAAIK,KAAK5q+B,IAAG,GAAG0sB,cAAe698B,GAAIK,KAAK5q+B,IAAG,GAAG0sB,gBACxB,IAA7B8qW,GAAK,GAAGrmX,QAAQ,WAAiC,MAAZqmX,GAAK,IAA0B,QAAZA,GAAK,KAA6B,UAAZA,GAAK,GACrFqzmB,IAAa,KACyB,IAAjCC,GAAS,GAAG359B,QAAQ,WAAiC,MAAZqmX,GAAK,IAA0B,QAAZA,GAAK,KAA6B,UAAZA,GAAK,GAC5FqzmB,IAAa,KACwB,IAAhCC,GAAS,GAAG359B,QAAQ,UAAgC,MAAZqmX,GAAK,IAA0B,QAAZA,GAAK,KAA6B,SAAZA,GAAK,GAC3FqzmB,IAAa,MACwB,IAA5BrzmB,GAAK,GAAGrmX,QAAQ,UAAgC,MAAZqmX,GAAK,IAA0B,QAAZA,GAAK,KAA6B,SAAZA,GAAK,MAC3FqzmB,IAAa,KAGQ,IAArBA,GAAUzz+B,SACZyz+B,IAAa,KAEU,IAArBA,GAAUzz+B,SACZmz+B,GAAI/ymB,KAAOqzmB,IAGXN,GAAIQ,OACNR,GAAI573B,MAAQ473B,GAAIQ,KAAK10+B,KAAKq2B,cACR,UAAd698B,GAAI573B,QACN473B,GAAI573B,MAAQ,SAEV473B,GAAIQ,KAAK58Q,UACM,WAAbo8Q,GAAIpx+B,KACFox+B,GAAIS,OAAST,GAAIS,MAAMC,WACzBV,GAAIhD,SAAWgD,GAAIQ,KAAK58Q,QAAQo8Q,GAAIS,MAAMC,SAASzn9B,GAGrD+m9B,GAAIhD,SAAWgD,GAAIQ,KAAK58Q,UAI9B,IAAI+8Q,GAASX,GAAIY,OAoEjB,YAAiBln9B,IAEf,OAAOA,IADKsm9B,GAAIhD,UAAY,GApEb,WAAbgD,GAAIpx+B,OACN+x+B,GAASX,IAEPW,KAKAX,GAAIZ,UADFuB,GAAOF,MACOE,GAAOF,MAAM30+B,KAAKq2B,cAElBw+8B,GAAO70+B,KAAKq2B,cAEI,OAA9B698B,GAAIZ,UAAU1p+B,MAAM,EAAG,KACzBsq+B,GAAIZ,UAAYY,GAAIZ,UAAU1p+B,MAAM,KAEhB,oCAAlBsq+B,GAAIZ,WAAqE,qBAAlBY,GAAIZ,aAC7DY,GAAIZ,UAAY,WAEI,aAAlBY,GAAIZ,WAA8C,+BAAlBY,GAAIZ,aACf,8BAAnBY,GAAII,aACNJ,GAAIa,QAAS,GAEfb,GAAIZ,UAAY,SAEc,WAA5BY,GAAIZ,UAAU1p+B,OAAM,KACtBsq+B,GAAIZ,UAAYY,GAAIZ,UAAU1p+B,MAAM,GAAG,IAET,aAA5Bsq+B,GAAIZ,UAAU1p+B,OAAM,KACtBsq+B,GAAIZ,UAAYY,GAAIZ,UAAU1p+B,MAAM,GAAG,KAEpCsq+B,GAAIZ,UAAUx49B,QAAQ,WACzBo59B,GAAIZ,UAAY,SAEduB,GAAOF,OAASE,GAAOF,MAAMC,WAC/BV,GAAIc,MAAQH,GAAOF,MAAMC,SAAS50+B,KAAKumB,QAAQ,MAAO,IAAIA,QAAQ,gBAAiB,QACtC,kBAAzC2t9B,GAAIc,MAAM3+8B,cAAczsB,MAAM,EAAG,MACnCsq+B,GAAIc,MAAQ,QAGdd,GAAI/m9B,EAAI0n9B,GAAOF,MAAMC,SAASzn9B,EAC9B+m9B,GAAI11qB,GAAK7+R,WAAWk18B,GAAOF,MAAMC,SAASp2qB,GAAI,KAG5Cq2qB,GAAOF,OAASE,GAAOF,MAAMM,UAC/Bf,GAAIhB,aAAe2B,GAAOF,MAAMM,UAE7Bf,GAAIZ,UAAUx49B,QAAQ,eACzBo59B,GAAIZ,UAAY,WAEbY,GAAIZ,UAAUx49B,QAAQ,eACzBo59B,GAAIZ,UAAY,YAEbY,GAAIZ,UAAUx49B,QAAQ,UACrBo59B,GAAIZ,UAAUx49B,QAAQ,6BAC1Bo59B,GAAIZ,UAAY,SAEI,YAAlBY,GAAIZ,YACNY,GAAIZ,UAAY,WAEbY,GAAIZ,UAAUx49B,QAAQ,YACzBo59B,GAAIZ,UAAY,UAGhBY,GAAIhn9B,IAAMq8B,SAAS2q7B,GAAIhn9B,KACzBgn9B,GAAIhn9B,EAAIgn9B,GAAI/m9B,GAUH,CACT,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,qCACxB,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,qCACxB,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,2BAClB,CAAC,iBAAkB,kBACnB,CAAC,iBAAkB,kBACnB,CAAC,iBAAkB,4BACnB,CAAC,mBAAoB,oBACrB,CAAC,mBAAoB,+BACrB,CAAC,mBAAoB,6BACrB,CAAC,qBAAsB,sBACvB,CAAC,qBAAsB,oBACvB,CAAC,qBAAsB,8BACvB,CAAC,qBAAsB,4BACvB,CAAC,eAAgB,gBACjB,CAAC,KAAM,gBACP,CAAC,qBAAsB,sBACvB,CAAC,qBAAsB,sBACvB,CAAC,OAAQ,qBAAsB+n9B,IAC/B,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,uBACxB,CAAC,QAAS,sBAAuBA,IACjC,CAAC,KAAM,gBAAiBC,IACxB,CAAC,KAAM,iBAAkBA,IACzB,CAAC,QAAS,mBAAoBD,IAC9B,CAAC,OAAQ,qBAAsBA,IAC/B,CAAC,OAAQ,sBAAuBA,IAChC,CAAC,OAAQ,sBAAuBA,IAChC,CAAC,OAAQ,sBAAuBA,IAChC,CAAC,UAAW,WACZ,CAAC,QAAS,UAAWA,IACrB,CAAC,UAAW,SAETtz+B,QAxCS,SAASurB,IACrB,OAzIJ,YAAgButC,GAAKpxB,IACnB,IAAI8r8B,GAAU9r8B,GAAO,GACjB+r8B,GAAS/r8B,GAAO,KACd8r8B,MAAW166B,KAAS266B,MAAU366B,KAClCA,GAAI066B,IAAW166B,GAAI266B,IACG,IAAlB/r8B,GAAOvoC,SACT25D,GAAI066B,IAAW9r8B,GAAO,GAAGoxB,GAAI066B,OAmIxBE,CAAOpB,GAAK/m9B,OAwChB+m9B,GAAIhC,OAASgC,GAAIzB,QAA2B,4BAAjByB,GAAIE,UAA2D,iCAAjBF,GAAIE,YAChFF,GAAIhC,MAAQgC,GAAIzB,QAEbyB,GAAIlC,QAAUkC,GAAIhS,OAA0B,6BAAjBgS,GAAIE,UAA4D,oCAAjBF,GAAIE,YACjFF,GAAIrC,KAAOqD,GAAIhB,GAAIhS,KAAO,EAAI,IAAK,IACnCgS,GAAIlC,OAASkC,GAAIhS,MAWnBqT,CAAS766B,IACFA,GCpMT,YAAc16D,IAEZ,IAAI8re,GAAO9we,KACX,GAAyB,IAArB+8B,UAAUh3B,OAAc,CAC1B,IAAIqjE,GAAMrsC,UAAU,GAGhB29L,GAAK11N,IAFU,iBAARokE,GACa,MAAtBox6B,GAAQpm8B,OAAO,GACAqm8B,EAAU198B,UAAU,IAGpBm88B,GAAIn88B,UAAU,IAGhBqsC,WAGa,IAArBrsC,UAAUh3B,OAAc,CAC/B,GAAIuI,MAAMqxB,QAAQ36B,IAChB,OAAOA,GAAKW,IAAI,SAASa,IACnB8H,MAAMqxB,QAAQn5B,IAChBk0N,GAAK/mM,MAAMm9c,GAAMtqe,IAGjBk0N,GAAKl0N,MAIN,GAAoB,iBAATxB,IACd,GAAIA,MAAQ01N,GACV,OAAOA,GAAK11N,QAGP,SAAUA,GACjB01N,GAAK,QAAU11N,GAAK01+B,MAAQ11+B,GAEzB,SAAcA,GACjB01N,GAAK,QAAU11N,GAAK21+B,MAAQ31+B,GAErB,YAAaA,GACpB01N,GAAK,WAAa11N,GAAK41+B,SAAW51+B,GAGlC8Q,QAAQkL,IAAIhc,IAEd,QHtBJsqkB,GAAOjvjB,UAAUw69B,cAAgB,WAC/B,IAAI5ra,GAAOjvkB,KAAK8K,KAAK9K,KAAK6jvB,SAC1B,GAvBW,IAuBP7jvB,KAAKkK,MACP,KAAOwu+B,GAAWl9jB,KAAKyzJ,KAAO,CAC5B,GAAIjvkB,KAAK6jvB,OAAS7jvB,KAAK8K,KAAK/E,OAC1B,OAEFkpkB,GAAOjvkB,KAAK8K,KAAK9K,KAAK6jvB,SAG1B,OAAQ7jvB,KAAKkK,YAlCD,EAoCR,OAAOlK,KAAK86+B,QAAQ7ra,SAnCZ,EAqCR,OAAOjvkB,KAAK44+B,QAAQ3pa,SAnCb,EAqCP,OAAOjvkB,KAAK+6+B,OAAO9ra,SApCR,EAsCX,OAAOjvkB,KAAKg7+B,WAAW/ra,SAxChB,EA0CP,OAAOjvkB,KAAK66f,OAAOo0E,SAvCb,EAyCN,SAGNK,GAAOjvjB,UAAU269B,WAAa,SAAS/ra,IACrC,GAAa,MAATA,GAGF,OAFAjvkB,KAAKw7c,MAAQ,SACbx7c,KAAKkK,MAjDI,GAoDX,GAAI2u+B,GAAUr9jB,KAAKyzJ,IAGjB,OAFAjvkB,KAAKw7c,KAAOx7c,KAAKw7c,KAAK92a,YACtB1kC,KAAKi7+B,UAAUhsa,IAGjB,MAAM,IAAIx4jB,MAAM,oBAAqBw4jB,GAAO,8BAAgCjvkB,KAAK6jvB,QAEnFv0K,GAAOjvjB,UAAU469B,UAAY,SAAShsa,IACpC,MAAa,MAATA,IACgB,OAAdjvkB,KAAKw7c,MACPx7c,KAAK+4+B,cAActz+B,KAAKzF,KAAKw7c,MAE/Bx7c,KAAKw7c,KAAO,UACZx7c,KAAKkK,MApEK,IAuEC,MAAT+kkB,IACFjvkB,KAAKkiH,QACa,OAAdliH,KAAKw7c,OACPx7c,KAAK+4+B,cAActz+B,KAAKzF,KAAKw7c,MAC7Bx7c,KAAKw7c,KAAO,MAEdx7c,KAAKkK,MA7EK,EA8EVlK,KAAK+4+B,cAAgB/4+B,KAAKqlB,MAAMyN,WAC3B9yB,KAAK+4+B,gBACR/4+B,KAAKkK,OA3EC,UAkEV,GAeFolkB,GAAOjvjB,UAAUw6e,OAAS,SAASo0E,IACjC,IAAI6pa,GAAOt9jB,KAAKyzJ,IAAhB,CAIA,GAAI4pa,GAAUr9jB,KAAKyzJ,IAGjB,OAFAjvkB,KAAKw7c,KAAO72a,WAAW3kC,KAAKw7c,WAC5Bx7c,KAAKi7+B,UAAUhsa,IAGjB,MAAM,IAAIx4jB,MAAM,oBAAqBw4jB,GAAO,0BAA4BjvkB,KAAK6jvB,OAR3E7jvB,KAAKw7c,MAAQyzH,IAUjBK,GAAOjvjB,UAAU069B,OAAS,SAAS9ra,IACpB,MAATA,GAIJjvkB,KAAKw7c,MAAQyzH,GAHXjvkB,KAAKkK,MAhGQ,GAsGjBolkB,GAAOjvjB,UAAUu49B,QAAU,SAAS3pa,IAClC,GAAI2pa,GAAQp9jB,KAAKyzJ,IACfjvkB,KAAKw7c,MAAQyzH,OADf,CAIA,GAAa,MAATA,GAAc,CAChB,IAAIisa,GAAa,GAWjB,OAVAA,GAAWz1+B,KAAKzF,KAAKw7c,MACrBx7c,KAAKkiH,QACa,OAAdliH,KAAK8xT,KACP9xT,KAAK8xT,KAAOoprB,GAEZl7+B,KAAK+4+B,cAActz+B,KAAKy1+B,IAE1Bl7+B,KAAKqlB,MAAM5f,KAAKzF,KAAK+4+B,eACrB/4+B,KAAK+4+B,cAAgBmC,QACrBl7+B,KAAKkK,MA1HK,GA6HZ,IAAI2u+B,GAAUr9jB,KAAKyzJ,IAInB,MAAM,IAAIx4jB,MAAM,oBAAqBw4jB,GAAO,2BAA6BjvkB,KAAK6jvB,OAH5E7jvB,KAAKi7+B,UAAUhsa,MAKnBK,GAAOjvjB,UAAUy69B,QAAU,SAAS7ra,IAClC,GAAI0pa,GAAMn9jB,KAAKyzJ,IAGb,OAFAjvkB,KAAKw7c,KAAOyzH,QACZjvkB,KAAKkK,MArIK,GAwIZ,GAAa,MAAT+kkB,GAGF,OAFAjvkB,KAAKw7c,KAAO,QACZx7c,KAAKkK,MAxII,GA2IX,GAAI4u+B,GAAOt9jB,KAAKyzJ,IAGd,OAFAjvkB,KAAKw7c,KAAOyzH,QACZjvkB,KAAKkK,MA9II,GAiJX,IAAI2u+B,GAAUr9jB,KAAKyzJ,IAInB,MAAM,IAAIx4jB,MAAM,oBAAqBw4jB,GAAO,2BAA6BjvkB,KAAK6jvB,OAH5E7jvB,KAAKi7+B,UAAUhsa,KAKnBK,GAAOjvjB,UAAUoS,OAAS,WACxB,KAAOzyB,KAAK6jvB,MAAQ7jvB,KAAK8K,KAAK/E,QAC5B/F,KAAK66+B,gBAEP,IAxJU,IAwJN76+B,KAAKkK,MACP,OAAOlK,KAAK8xT,KAEd,MAAM,IAAIr7S,MAAM,2BAA4BzW,KAAK8K,KAAO,eAAiB9K,KAAKkK,QIlKjE,WAASwwN,IACtBA,GAAK,YAAa,mFAClBA,GAAK,YAAa,mHAClBA,GAAK,YAAa,oJAElBA,GAAKygxB,MAAQzgxB,GAAK,aAClBA,GAAK,aAAeA,GAAK,aACzBA,GAAK0gxB,OAAS1gxB,GAAK,aACnBA,GAAK,eAAiBA,GAAK,aAC3BA,GAAK,eAAiBA,GAAK,aD4C7B2gxB,CAAQ3gxB,IACR,SAAeA,GE5Cf,IAAI4gxB,GAAY,CAAC,eAAgB,UAAW,SAAS,SAAS,SAAS,WAAY,UAAW,cAAe,gBAAiB,SAAU,kBAMpIllP,GAAQ,CAAC,OAAQ,SAAU,OAAQ,UChBxB,YAASv8gB,GAAal/L,IAEnC,IAAIh3C,GAAOghE,GACX,GAFAk1K,GAAcA,IAAe,IAExBl/L,GACH,OAAOk/L,GAET,IAAKl1K,MAAYhqB,QAEDx1C,KADdxB,GAAQg3C,GAAOgqB,OAEbk1K,GAAYl1K,IAAYhhE,IAG5B,OAAOk2O,GCZM,YAAS0hwB,GAAQC,GAAQC,IACtC,IAAIC,GAAMH,GAASC,GACnB,OAAOC,GAAUvu+B,KAAKqnF,KAAK,EAAImn5B,GAAMA,ICFxB,YAAS/x+B,IACtB,OAAOA,GAAE,GAAI,EAAK,ECGL,YAASA,IACtB,OAAQuD,KAAKiN,IAAIxQ,KAAMss+B,EAAOts+B,GAAKA,GAAKs4E,GAAKt4E,IAAKqs+B,ECHrC,YAASuF,GAAQI,GAAKH,IACnC,IAAIE,GAAMH,GAASC,GAEnBE,UAAMxu+B,KAAK06F,KAAM,EAAI8z4B,KAAQ,EAAIA,IADvB,GAAMH,IAERru+B,KAAK8huB,IAAI,IAAO2mQ,EAAUgG,KAAQD,GCJ7B,YAASH,GAAQprH,IAI9B,QAFIurH,GAAKE,GADLC,GAAS,GAAMN,GAEfI,GAAMhG,EAAU,EAAIzo+B,KAAKm6uB,KAAK8oI,IACzBxh3B,GAAI,EAAGA,IAAK,GAAIA,KAIvB,GAHA+s+B,GAAMH,GAASru+B,KAAKwkF,IAAIiq5B,IAExBA,IADAC,GAAOjG,EAAU,EAAIzo+B,KAAKm6uB,KAAK8oI,GAAMjj3B,KAAK06F,KAAM,EAAI8z4B,KAAQ,EAAIA,IAAOG,KAAYF,GAE/Ezu+B,KAAKiN,IAAIyh+B,KAAS,MACpB,OAAOD,GAIX,OAAO,KCXT,YAAkBll6B,IAChB,OAAOA,GAIF,ICPHql6B,GAAQ,CC4FG,CACb9p7B,KAzFK,cACL,IAAI0p7B,GAAM17+B,KAAKkyB,EAAIlyB,KAAKmyB,EACxBnyB,KAAK+7+B,GAAK,EAAIL,GAAMA,GACf,OAAQ17+B,OACXA,KAAKi1E,GAAK,GAEP,OAAQj1E,OACXA,KAAK20E,GAAK,GAEZ30E,KAAKiJ,EAAIiE,KAAKqnF,KAAKv0F,KAAK+7+B,IACxB/7+B,KAASg3+B,OAELh3+B,KAAK63+B,GADH73+B,KAAK+5+B,OACG7s+B,KAAK65E,IAAI/mF,KAAKg3+B,QAGdgF,GAAMh8+B,KAAKiJ,EAAGiE,KAAKwkF,IAAI1xF,KAAKg3+B,QAAS9p+B,KAAK65E,IAAI/mF,KAAKg3+B,SAI1Dh3+B,KAAK63+B,KAEN73+B,KAAK63+B,GADH73+B,KAAKozC,EACGpzC,KAAKozC,EAGL,IAkEhB6o8B,QAzDK,YAAiBx36B,IACtB,IAOI96D,GAAGmqD,GAPHkj5B,GAAMvy4B,GAAE96D,EACRg+9B,GAAMlj6B,GAAE3Q,EAEZ,GAAI6z6B,GAAMmO,EAAM,IAAMnO,GAAMmO,GAAM,IAAO9+B,GAAM8+B,EAAM,KAAO9+B,GAAM8+B,GAAM,IACtE,OAAO,KAIT,GAAI5o+B,KAAKiN,IAAIjN,KAAKiN,IAAIwt9B,IAAOgO,IAAYC,EACvC,OAAO,KAGP,GAAI51+B,KAAK+5+B,OACPpw+B,GAAI3J,KAAKi1E,GAAKj1E,KAAKmyB,EAAInyB,KAAK63+B,GAAKqE,GAAWllC,GAAMh38B,KAAKk3+B,OACvDpj7B,GAAI9zD,KAAK20E,GAAK30E,KAAKmyB,EAAInyB,KAAK63+B,GAAK3q+B,KAAK8T,IAAI9T,KAAK8huB,IAAI+mQ,EAAS,GAAMpO,SAE/D,CACH,IAAI6T,GAAStu+B,KAAKwkF,IAAIi24B,IAClBx3G,GAAKgsH,GAAMn8+B,KAAKiJ,EAAG0+9B,GAAK6T,IAC5B7x+B,GAAI3J,KAAKi1E,GAAKj1E,KAAKmyB,EAAInyB,KAAK63+B,GAAKqE,GAAWllC,GAAMh38B,KAAKk3+B,OACvDpj7B,GAAI9zD,KAAK20E,GAAK30E,KAAKmyB,EAAInyB,KAAK63+B,GAAK3q+B,KAAK8T,IAAImv2B,IAE5C1rzB,UAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IAiCT8mtB,QA3BK,YAAiB9mtB,IAEtB,IAEIuy4B,GAAK2wB,GAFLh+9B,GAAI86D,GAAE96D,EAAI3J,KAAKi1E,GACfnhB,GAAI2Q,GAAE3Q,EAAI9zD,KAAK20E,GAGnB,GAAI30E,KAAK+5+B,OACPpS,GAAMgO,EAAU,EAAIzo+B,KAAKm6uB,KAAKn6uB,KAAKy4V,KAAK7xS,IAAK9zD,KAAKmyB,EAAInyB,KAAK63+B,UAExD,CACH,IAAI1nH,GAAKjj3B,KAAKy4V,KAAK7xS,IAAK9zD,KAAKmyB,EAAInyB,KAAK63+B,KAEtC,IAAY,QADZlQ,GAAMyU,GAAMp8+B,KAAKiJ,EAAGkn3B,KAElB,OAAO,KAGX6mF,UAAMklC,GAAWl8+B,KAAKk3+B,MAAQvt+B,IAAK3J,KAAKmyB,EAAInyB,KAAK63+B,KAEjDpz6B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAQP6zU,MALiB,CAAC,WAAY,wCAAyC,eAAgB,4BAA6B,SFnFvG,CACbtmV,KAXK,gBAYLiq7B,QAASj8f,GACTurS,QAASvrS,GACT1nG,MALiB,CAAC,UAAW,cCN3BA,GAAQ,GACR+jmB,GAAY,GAEhB,YAAa/Y,GAAM309B,IACjB,IAAI2lF,GAAM+n5B,GAAUt2+B,OACpB,OAAKu99B,GAAKhrlB,OAIV+jmB,GAAU/n5B,IAAOgv4B,GACjBA,GAAKhrlB,MAAM1xY,QAAQ,SAASkH,IAC1BwqY,GAAMxqY,GAAEutB,eAAiBi5D,KAEpBt0F,OAPL8V,QAAQkL,IAAIrS,KACL,GAwBX,SAAe,CACbqe,MAJK,cACL8u9B,GAAMl1+B,QAAQ4hD,KAIdA,IAAKA,GACL3pC,IAhBK,YAAa7Z,IAClB,IAAKA,GACH,OAAO,EAET,IAAI8I,GAAI9I,GAAKq2B,cACb,YAAwB,IAAbi9W,GAAMxqY,KAAsBuu+B,GAAU/jmB,GAAMxqY,KAC9Cuu+B,GAAU/jmB,GAAMxqY,UADzB,IE1BF,IAAIsxiB,GAAU,CAEdA,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,QACJ84qB,YAAa,cAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,QACJ84qB,YAAa,6BAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,cACJ84qB,YAAa,wBAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,QACJ84qB,YAAa,YAGfl9b,KAAe,CACbjthB,EAAG,YACHD,EAAG,WACHoq9B,YAAa,aAGfl9b,KAAe,CACbjthB,EAAG,QACHqxS,GAAI,OACJ84qB,YAAa,uBAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,OACJ84qB,YAAa,4BAGfl9b,SAAmB,CACjBjthB,EAAG,YACHD,EAAG,YACHoq9B,YAAa,iBAGfl9b,OAAiB,CACfjthB,EAAG,WACHqxS,GAAI,IACJ84qB,YAAa,8BAGfl9b,QAAkB,CAChBjthB,EAAG,QACHqxS,GAAI,OACJ84qB,YAAa,mCAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,cACJ84qB,YAAa,qBAGfl9b,OAAiB,CACfjthB,EAAG,YACHqxS,GAAI,YACJ84qB,YAAa,eAGfl9b,SAAmB,CACjBjthB,EAAG,YACHqxS,GAAI,YACJ84qB,YAAa,yBAGfl9b,OAAiB,CACfjthB,EAAG,UACHD,EAAG,UACHoq9B,YAAa,eAGfl9b,OAAiB,CACfjthB,EAAG,YACHqxS,GAAI,SACJ84qB,YAAa,oBAGfl9b,OAAiB,CACfjthB,EAAG,kBACHqxS,GAAI,kBACJ84qB,YAAa,eAGfl9b,IAAc,CACZjthB,EAAG,UACHqxS,GAAI,OACJ84qB,YAAa,mCAGfl9b,OAAiB,CACfjthB,EAAG,QACHqxS,GAAI,MACJ84qB,YAAa,2BAGfl9b,QAAkB,CAChBjthB,EAAG,WACHqxS,GAAI,SACJ84qB,YAAa,gBAGfl9b,QAAkB,CAChBjthB,EAAG,YACHqxS,GAAI,SACJ84qB,YAAa,gBAGfl9b,QAAkB,CAChBjthB,EAAG,YACHqxS,GAAI,SACJ84qB,YAAa,gBAGfl9b,QAAkB,CAChBjthB,EAAG,YACHqxS,GAAI,SACJ84qB,YAAa,gBAGfl9b,QAAkB,CAChBjthB,EAAG,YACHqxS,GAAI,SACJ84qB,YAAa,gBAGfl9b,QAAkB,CAChBjthB,EAAG,YACHqxS,GAAI,SACJ84qB,YAAa,6BAGfl9b,QAAkB,CAChBjthB,EAAG,QACHqxS,GAAI,MACJ84qB,YAAa,gCAGfl9b,SAAmB,CACjBjthB,EAAG,QACHqxS,GAAI,MACJ84qB,YAAa,gBAGfl9b,QAAkB,CAChBjthB,EAAG,QACHqxS,GAAI,MACJ84qB,YAAa,gBAGfl9b,QAAkB,CAChBjthB,EAAG,QACHqxS,GAAI,MACJ84qB,YAAa,gBAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,IACJ84qB,YAAa,SAGfl9b,KAAe,CACbjthB,EAAG,QACHqxS,GAAI,IACJ84qB,YAAa,gCAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,OACJ84qB,YAAa,cAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,QACJ84qB,YAAa,cAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,IACJ84qB,YAAa,mBAGfl9b,SAAmB,CACjBjthB,EAAG,UACHD,EAAG,UACHoq9B,YAAa,0BAGfl9b,QAAkB,CAChBjthB,EAAG,QACHqxS,GAAI,QACJ84qB,YAAa,yBAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,MACJ84qB,YAAa,oBAGfl9b,OAAiB,CACfjthB,EAAG,QACHD,EAAG,aACHoq9B,YAAa,kBAGfl9b,QAAkB,CAChBjthB,EAAG,QACHD,EAAG,aACHoq9B,YAAa,WAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,MACJ84qB,YAAa,UAGfl9b,MAAgB,CACdjthB,EAAG,QACHqxS,GAAI,OACJ84qB,YAAa,UAGfl9b,KAAe,CACbjthB,EAAG,QACHqxS,GAAI,OACJ84qB,YAAa,WAGJnB,GAAQ/7b,GAAQ+7b,MAAQ,CACjChp9B,EAAG,QACHqxS,GAAI,cACJ84qB,YAAa,UAGfl9b,GAAQ26b,OAAS,CACf5n9B,EAAG,QACHD,EAAG,QACHoq9B,YAAa,6BCjQf,IAAIl9b,GAAU,CAEdA,MAAgB,CACd64b,QAAS,QACT7sO,QAAS,QACTmxO,UAAW,SAGbn9b,OAAiB,CACf64b,QAAS,yBACT7sO,QAAS,SACTmxO,UAAW,SAGbn9b,OAAiB,CACf64b,QAAS,uBACT7sO,QAAS,QACTmxO,UAAW,wCAGbn9b,MAAgB,CACd64b,QAAS,QACT7sO,QAAS,QACTmxO,UAAW,6BAGbn9b,MAAgB,CACdi5b,SAAU,2CACVjtO,QAAS,SACTmxO,UAAW,6BAGbn9b,QAAkB,CAChB64b,QAAS,0CACT7sO,QAAS,SACTmxO,UAAW,+BAGbn9b,SAAmB,CACjB64b,QAAS,mBACT7sO,QAAS,UACTmxO,UAAW,yBAGbn9b,cAAwB,CACtB64b,QAAS,kDACT7sO,QAAS,SACTmxO,UAAW,iBAGbn9b,OAAiB,CACf64b,QAAS,qDACT7sO,QAAS,OACTmxO,UAAW,kBAGbn9b,MAAgB,CACd64b,QAAS,qDACT7sO,QAAS,WACTmxO,UAAW,gBAGbn9b,WAAqB,CACnB64b,QAAS,yBACT7sO,QAAS,OACTmxO,UAAW,cAGbn9b,OAAiB,CACf64b,QAAS,6CACT7sO,QAAS,OACTmxO,UAAW,mCAGbn9b,OAAiB,CACf64b,QAAS,yDACT7sO,QAAS,OACTmxO,UAAW,aAGbn9b,OAAiB,CACf64b,QAAS,aACT7sO,QAAS,SACTmxO,UAAW,kBAGbn9b,SAAmB,CACjB64b,QAAS,eACT7sO,QAAS,SACTmxO,UAAW,YAGbn9b,cAAwB,CACtB64b,QAAS,cACT7sO,QAAS,SACTmxO,UAAW,yBAGbn9b,MAAgB,CACd64b,QAAS,wDACT7sO,QAAS,OACTmxO,UAAW,+BC/Fb,IAAIC,GAAiB,GA6BrB,YAA4B74+B,IAC1B,GAAqB,IAAjBA,GAAMoC,OACR,OAAO,KAET,IAAI66T,GAAwB,MAAbj9T,GAAM,GAIrB,OAHIi9T,KACFj9T,GAAQA,GAAMiL,MAAM,IAER,SAAVjL,GACK,CAACqB,KAAM,OAAQy3+B,WAAY77qB,GAAU96R,KAAM,KAAM80C,QAAQ,GAE3D,CACL51E,KAAMrB,GACN84+B,WAAY77qB,GACZ96R,KAAM028B,GAAe74+B,KAAU,KAC/Bi3E,QAAQ,GAIZ,YAA0B6mG,IACxB,OAAQA,GAAU,KAAQv0K,KAAK45E,GAAK,IA4BtC,YAAsBzkE,GAAM2K,GAAOsd,IACjC,OAAOtX,OAAOC,aAAaU,MAAM,KAAM,IAAIrR,WAAWD,GAAKiQ,OAAO1jB,MAAMoe,GAAOsd,MAyBjF,YAAkBm3F,IAChB,OAAOA,GAAM97H,IAAI,SAAUkrD,IAAI,MAAO,CAAC6r7B,GAAiB7r7B,GAAE8r7B,gBAAiBD,GAAiB7r7B,GAAE+r7B,kBAGhG,YAAwBv69B,GAAM+P,GAAQyq9B,IACpC,MAAO,CACL73+B,KAAM83+B,GAAaz69B,GAAM+P,GAAS,EAAGA,GAAS,IAAIsS,OAClD23U,OAAQygoB,GAAaz69B,GAAM+P,GAAS,GAAIA,GAAS,GAAK,GAAGsS,OACzDq48B,cAAe169B,GAAK269B,WAAW5q9B,GAAS,GAAIyq9B,IAC5CI,cAAe569B,GAAK269B,WAAW5q9B,GAAS,GAAIyq9B,IAC5CK,eAAgB769B,GAAK269B,WAAW5q9B,GAAS,IAAKyq9B,IAC9CM,eAAgB969B,GAAK269B,WAAW5q9B,GAAS,IAAKyq9B,IAC9CO,iBAAkB/69B,GAAK269B,WAAW5q9B,GAAS,IAAKyq9B,IAChDQ,kBAAmBh79B,GAAK269B,WAAW5q9B,GAAS,IAAKyq9B,IACjDS,cAAej79B,GAAKk79B,SAASnr9B,GAAS,IAAKyq9B,KAI/C,YAAuBx69B,GAAM+P,GAAQor9B,GAAYX,IAI/C,QAHIY,GAAcrr9B,GAAS,IAEvBsr9B,GAAmB,GACd/u+B,GAAI,EAAGA,GAAI6u+B,GAAWF,cAAe3u+B,KAAK,CACjD,IAAImhb,GAAS,CACX8sjB,cAAev69B,GAAKs79B,WAAWF,GAJZ,GAI0B9u+B,GAAsBku+B,IACnEF,eAAgBt69B,GAAKs79B,WAAWF,GALb,GAK2B9u+B,GAAuB,EAAGku+B,IACxEe,iBAAkBv79B,GAAKs79B,WAAWF,GANf,GAM6B9u+B,GAAuB,EAAGku+B,IAC1EgB,kBAAmBx79B,GAAKs79B,WAAWF,GAPhB,GAO8B9u+B,GAAuB,GAAIku+B,KAE9Ea,GAAiBj4+B,KAAKqqb,IAExB,OAAO4tjB,GCnIT,YAAoBI,GAAQju+B,IAC1B,KAAM7P,gBAAgBq6O,IACpB,OAAO,IAAIA,GAAWyjwB,IAExBju+B,GAAWA,IAAY,SAASyU,IAC9B,GAAGA,GACD,MAAMA,IAGV,IAAI28c,GbiBN,YAAej1c,IACb,IAhCF,YAAiBA,IACf,MAAuB,iBAATA,GA+BV+x9B,CAAQ/x9B,IAqBV,OAAOA,GAnBP,GA/BJ,YAAiBA,IACf,OAAOA,MAAQ0uM,GA8BTsjxB,CAAQhy9B,IACV,OAAO0uM,GAAK1uM,IAEd,GA9BJ,YAAiBA,IACf,OAAOsv9B,GAAUv37B,KAAK,SAAUy3Z,IAC9B,OAAOxvb,GAAKlM,QAAQ07b,KAAQ,IA4BxByiiB,CAAQjy9B,IAAO,CACjB,IAAI7H,GAAM+09B,GAAIlt9B,IAEd,GA3BN,YAAuBhZ,IACrB,IAAIuq0B,GAAOh8zB,GAAMvO,GAAM,aACvB,GAAKuq0B,GAGL,KAAIvxzB,GAAOzK,GAAMg8zB,GAAM,QACvB,OAAOvxzB,IAAQoquB,GAAMt2uB,QAAQkM,KAAQ,GAqB7Bky9B,CAAc/59B,IAChB,OAAOu2M,gBAET,IAAIyjxB,GAtBV,YAAsBnr+B,IACpB,IAAI8uJ,GAAMvgJ,GAAMvO,GAAM,aACtB,GAAK8uJ,GAGL,OAAOvgJ,GAAMugJ,GAAK,SAiBKs80B,CAAaj69B,IAChC,OAAIg69B,GACKE,EAAQF,IAEVh69B,GAET,OArBJ,YAAkB6H,IAChB,MAAmB,MAAZA,GAAK,GAoBNsy9B,CAASty9B,IACJqy9B,EAAQry9B,SADjB,EanCSuy9B,CAAUT,IACrB,GAAmB,iBAAT78gB,GAAV,CAIA,IAAIu9gB,GAAUnkwB,GAAWs8tB,YAAY937B,IAAIoid,GAAKm4gB,UAC9C,GAAIoF,GAAJ,CAIA,GAAIv9gB,GAAKq3gB,WAAgC,SAAnBr3gB,GAAKq3gB,UAAsB,CAC/C,IAAImG,GAAWl99B,GAAMm99B,GAAOz9gB,GAAKq3gB,WAC7BmG,KACFx9gB,GAAKi3gB,aAAej3gB,GAAKi3gB,eAAiBuG,GAASxG,QAAUwG,GAASxG,QAAQjh+B,MAAM,KAAO,MAC3Fiqd,GAAK+4gB,MAAQyE,GAASrzO,QACtBnqS,GAAKs7gB,UAAYkC,GAASlC,UAAYkC,GAASlC,UAAYt7gB,GAAKq3gB,WAGpEr3gB,GAAK42gB,GAAK52gB,GAAK42gB,IAAM,EACrB52gB,GAAK96F,KAAO86F,GAAK96F,MAAQ,MACzB86F,GAAK+4gB,MAAQ/4gB,GAAK+4gB,OAAS,QAC3B/4gB,GAAKimgB,KAAOjmgB,GAAKimgB,MAAQjmgB,GAAK41gB,KAE9B,IAAI8H,GClBC,YAAgBxs9B,GAAGD,GAAGsxS,GAAIw2qB,GAAOD,IACtC,IAAK5n9B,GAAG,CACN,IAAIi5uB,GAAU7pvB,GAAMq99B,GAAW5E,IAC1B5uO,KACHA,GAAU+vO,IAEZhp9B,GAAIi5uB,GAAQj5uB,EACZD,GAAIk5uB,GAAQl5uB,EACZsxS,GAAK4nc,GAAQ5nc,GAGf,OAAIA,KAAOtxS,KACTA,IAAK,EAAM,EAAMsxS,IAAMrxS,KAEd,IAAPqxS,IAAYt2T,KAAKiN,IAAIgY,GAAID,IAAK0j9B,KAChCmE,IAAS,EACT7n9B,GAAIC,IAEC,CACLA,EAAGA,GACHD,EAAGA,GACHsxS,GAAIA,GACJu2qB,OAAQA,IDJI8E,CAAU59gB,GAAK9uc,EAAG8uc,GAAK/uc,EAAG+uc,GAAKz9J,GAAIy9J,GAAK+4gB,MAAO/4gB,GAAK84gB,QAC9D+E,GCtCC,YAAsB3s9B,GAAGD,GAAGsxS,GAAIu0qB,IACrC,IAAI/llB,GAAK7/X,GAAIA,GACT+mjB,GAAKhnjB,GAAIA,GACT6p9B,IAAM/plB,GAAKknL,IAAMlnL,GACjB/oZ,GAAI,EASR,OARI8u+B,IAEF/llB,IADA7/X,IAAK,EAAI4p9B,IxBCM,mBwBDQA,IxBGV,mBAEA,oBwBLsBA,MAC1B5p9B,GACT4p9B,GAAK,GAEL9y+B,GAAIiE,KAAKqnF,KAAKwn5B,IAGT,CACLA,GAAIA,GACJ9y+B,EAAGA,GACH81+B,KAJS/slB,GAAKknL,IAAMA,ID0BZ8la,CAAgBL,GAAQxs9B,EAAGws9B,GAAQzs9B,EAAGys9B,EAAY19gB,GAAK82gB,KAC7DM,GDfC,YAAqBA,IAE1B,YAAiBlz+B,IAAbkz+B,GAAiC,KACzBA,GAASrh+B,MAAM,KACdrR,IAAIs5+B,ICWFC,CAAYj+gB,GAAKo3gB,UAC5B8G,GAAWl+gB,GAAK01gB,OE1CtB,YAAe2B,GAAWJ,GAAc/l9B,GAAGD,GAAG6p9B,GAAIgD,GAAK1G,IACrD,IAAIl09B,GAAM,GAEV,OACEA,GAAIi79B,gBADYj6+B,IAAdmz+B,IAAyC,SAAdA,GzBDR,EADF,EyBQjBJ,KACF/z9B,GAAI+z9B,aAAeA,GAAavy+B,IAAIg/B,aACR,IAAxBxgB,GAAI+z9B,aAAa,IAAoC,IAAxB/z9B,GAAI+z9B,aAAa,IAAoC,IAAxB/z9B,GAAI+z9B,aAAa,MAC7E/z9B,GAAIi79B,WzBdc,GyBgBhBj79B,GAAI+z9B,aAAany+B,OAAS,IACA,IAAxBoe,GAAI+z9B,aAAa,IAAoC,IAAxB/z9B,GAAI+z9B,aAAa,IAAoC,IAAxB/z9B,GAAI+z9B,aAAa,IAAoC,IAAxB/z9B,GAAI+z9B,aAAa,MAC1G/z9B,GAAIi79B,WzBjBY,EyBkBhBj79B,GAAI+z9B,aAAa,IAAMxC,EACvBvx9B,GAAI+z9B,aAAa,IAAMxC,EACvBvx9B,GAAI+z9B,aAAa,IAAMxC,EACvBvx9B,GAAI+z9B,aAAa,GAAM/z9B,GAAI+z9B,aAAa,GAAK,IAAa,IAK5DG,KACFl09B,GAAIi79B,WzB1BmB,EyB2BvBj79B,GAAIk79B,MAAQhH,IAEdl09B,GAAIgO,EAAIA,GACRhO,GAAI+N,EAAIA,GACR/N,GAAI439B,GAAKA,GACT539B,GAAI469B,IAAMA,GACH569B,GFSsBwy9B,CAAM11gB,GAAKq3gB,UAAWr3gB,GAAKi3gB,aAAcyG,GAAQxs9B,EAAGws9B,GAAQzs9B,EAAG4s9B,GAAI/C,GAAI+C,GAAIC,IACtG1G,IAEFng3B,GAAOl4H,KAAMihe,IACb/oW,GAAOl4H,KAAMw++B,IAGbx++B,KAAKmyB,EAAIws9B,GAAQxs9B,EACjBnyB,KAAKkyB,EAAIys9B,GAAQzs9B,EACjBlyB,KAAKwjU,GAAKm7qB,GAAQn7qB,GAClBxjU,KAAK+5+B,OAAS4E,GAAQ5E,OAGtB/5+B,KAAK+7+B,GAAK+C,GAAI/C,GACd/7+B,KAAKiJ,EAAI61+B,GAAI71+B,EACbjJ,KAAK+++B,IAAMD,GAAIC,IAGf/++B,KAAK22+B,MAAQwI,GAGbn/+B,KAAKgyD,OAGLniD,GAAS,KAAM7P,WA3Cb6P,GAASiu+B,SALTju+B,GAASiu+B,KAmDbzjwB,GAAWs8tB,YAAcA,IACF3p7B,QACvB,SAAeqtN,GG1CR,YAA8B51K,GAAGs36B,GAAI5p9B,IAC1C,IAIIywd,GACA08f,GAEAC,GAPAj71B,GAAY7/E,GAAE96D,EACd46I,GAAW9/E,GAAE3Q,EACb7Y,GAASwpB,GAAE4qF,EAAI5qF,GAAE4qF,EAAI,EAYzB,GAAI9K,IAAYox1B,GAAWpx1B,IAAW,MAASox1B,EAC7Cpx1B,IAAYox1B,UACHpx1B,GAAWox1B,GAAWpx1B,GAAW,MAAQox1B,EAClDpx1B,GAAWox1B,MACN,IAAIpx1B,IAAYox1B,EAGrB,MAAO,CAAEhs+B,GAAG,IAAWmqD,GAAG,IAAWu7F,EAAG5qF,GAAE4qF,GACrC,GAAI9K,GAAWox1B,EAEpB,MAAO,CAAEhs+B,EAAG4oH,IAAUz+D,EAAGy+D,IAAU88B,EAAG5qF,GAAE4qF,GAG1C,OAAI/K,GAAYp3I,KAAK45E,KACnBw9D,IAAc,EAAIp3I,KAAK45E,IAEzBw45B,GAAUpy+B,KAAKwkF,IAAI6yD,IACnBg71B,GAAUry+B,KAAK65E,IAAIw9D,IAGZ,CACL56I,IAFFi5e,GAAKzwd,GAAKjlB,KAAKqnF,KAAK,EAAQwn5B,IADjBuD,GAAUA,MAGVrk8B,IAAUsk8B,GAAUry+B,KAAK65E,IAAIu9D,IACtCxwF,GAAI8ub,GAAK3nc,IAAUsk8B,GAAUry+B,KAAKwkF,IAAI4yD,IACtC+K,GAAKuzV,IAAM,EAAIm5f,IAAO9g8B,IAAUqk8B,IAI7B,YAA8B766B,GAAGs36B,GAAI5p9B,GAAGD,IAG7C,IAIIg3L,GACAs2xB,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAKA771B,GAEArpG,GALAlzC,GAAI08D,GAAE96D,EACN7D,GAAI2+D,GAAE3Q,EACN6ulB,GAAIl+kB,GAAE4qF,EAAI5qF,GAAE4qF,EAAI,EASpB,GAJA65D,GAAIh8M,KAAKqnF,KAAKxsF,GAAIA,GAAIjC,GAAIA,IAC1B05+B,GAAKty+B,KAAKqnF,KAAKxsF,GAAIA,GAAIjC,GAAIA,GAAI68oB,GAAIA,IAG/Bz5b,GAAI/2L,GA7BI,OAoCV,GAJAmyH,GAAY,EAIRk71B,GAAKrt9B,GApCC,MAqCRoyH,OACAtpG,IAAU/oB,GACH,CACLvoB,EAAG86D,GAAE96D,EACLmqD,EAAG2Q,GAAE3Q,EACLu7F,EAAG5qF,GAAE4qF,QAMT/K,GAAYp3I,KAAKqkF,MAAMzrF,GAAGiC,IAY5B03+B,GAAK98V,GAAI68V,GAGTM,IAFAJ,GAAKx2xB,GAAIs2xB,KAEK,EAAMzD,KADpB4D,GAAK,EAAMzy+B,KAAKqnF,KAAK,EAAMwn5B,IAAM,EAAMA,IAAM2D,GAAKA,KAElDK,GAAQN,GAAKE,GACbQ,GAAO,EAIP,GACEA,KAMAP,GAAK7D,IALL8D,GAAK1t9B,GAAIjlB,KAAKqnF,KAAK,EAAMwn5B,GAAKgE,GAAQA,MAKtBF,IAFhB5k8B,GAASiuK,GAAI42xB,GAAQn9V,GAAIo9V,GAAQF,IAAM,EAAM9D,GAAKgE,GAAQA,MAM1DG,IADAD,GAAOR,IAFPE,GAAK,EAAMzy+B,KAAKqnF,KAAK,EAAMqr5B,IAAM,EAAMA,IAAMF,GAAKA,MAGnCI,IAFfE,GAAON,IAAM,EAAME,IAAMD,IAEKI,GAC9BD,GAAQE,GACRD,GAAQE,SAEHC,GAAQA,GAnFDE,OAmFmBD,GAlFnB,IAqFd571B,MACO,CACL56I,EAAG26I,GACHxwF,EAHS5mD,KAAKm6uB,KAAK44P,GAAO/y+B,KAAKiN,IAAI6l+B,KAInC3w1B,EAAGp0G,IC3JP,YAAqBnzC,IACnB,O3BbsB,I2BadA,I3BZc,I2BYSA,GA+D1B,YAAwB6yC,GAAQ4wuB,GAAS9ysB,IAC9C,GAAqB,OAAjB99B,GAAO0k8B,OAA0C,IAAxB1k8B,GAAO0k8B,MAAMt5+B,OACxC+P,eAAQkL,IAAI,+BACL,EAMT,QAJI4R,GAAQ,CAACjpB,GAAI8uE,GAAM9uE,EAAGmqD,EAAG2kB,GAAM3kB,GAC/BrhC,GAAS,CAAC9oB,EAAG2kD,OAAOwkE,IAAKh/D,EAAGxF,OAAOwkE,KAEnCut3B,GAAiB,GACZ1x+B,GAAI,EAAGA,GAAIgsC,GAAO0k8B,MAAMt5+B,OAAQ4I,KAAK,CAC5C,IAAIm3B,GAAO6U,GAAO0k8B,MAAM1w+B,IAExB,GADA0x+B,GAAe56+B,KAAKqgC,GAAK9gC,MACrB8gC,GAAK80C,OAAQ,CACfnoD,GAASG,GACT,MAGF,GAAkB,OAAdkT,GAAKA,KAAT,CAOA,IAAIw68B,GAAUx68B,GAAKA,KAAKy68B,SAAS,GAE7BC,IAAWtz+B,KAAKiN,IAAImm+B,GAAQ1iN,IAAI,IAAM1wxB,KAAKiN,IAAImm+B,GAAQ1iN,IAAI,KAAO,IAKtE,KAHW0iN,GAAQ98U,GAAG,GAAKg9U,GAGhB5t9B,GAAMkhC,GAJNws7B,GAAQ98U,GAAG,GAAKg9U,GAIE5t9B,GAAMjpB,GADxB22+B,GAAQ98U,GAAG,IAAM88U,GAAQG,IAAI,GAAK,GAAKH,GAAQ1iN,IAAI,GAAK4iN,GACpB5t9B,GAAMkhC,GAF1Cws7B,GAAQ98U,GAAG,IAAM88U,GAAQG,IAAI,GAAK,GAAKH,GAAQ1iN,IAAI,GAAK4iN,GAEF5t9B,GAAMjpB,IAGvE8oB,GAASiu9B,GAAkB9t9B,GAAO24vB,GAAS+0N,IACtCnp+B,MAAMsb,GAAO9oB,KAChB,WAlBA,GAAIm8B,GAAK228B,UACP3m+B,eAAQkL,IAAI,kCAAoC8kB,GAAK9gC,KAAO,MACrD,EAmBb,OAAImS,MAAMsb,GAAO9oB,IACfmM,QAAQkL,IAAI,oDACT4R,GAAMjpB,EAAIms+B,EAAM,IAAMlj9B,GAAMkhC,EAAIgi7B,EAAM,YAAcuK,GAAiB,MACjE,IAET5n6B,GAAM9uE,GAAK8oB,GAAO9oB,EAClB8uE,GAAM3kB,EAAIrhC,GAAOqhC,EACV,GAGT,YAA2B6s7B,GAAKp1N,GAASz4tB,IACvC,IAAIxxC,GAAM,CAAC3X,EAAG2kD,OAAOwkE,IAAKh/D,EAAGxF,OAAOwkE,KACpC,GAAI37G,MAAMwp+B,GAAIh3+B,GAAM,OAAO2X,GAC3B,IAAIs/9B,GAAK,CAACj3+B,EAAGg3+B,GAAIh3+B,EAAGmqD,EAAG6s7B,GAAI7s7B,GAC3B8s7B,GAAGj3+B,GAAKmpD,GAAG0wmB,GAAG,GACdo9U,GAAG9s7B,GAAKhB,GAAG0wmB,GAAG,GACdo9U,GAAGj3+B,EAAIuy+B,GAAW0E,GAAGj3+B,EAAIuD,KAAK45E,IAAM55E,KAAK45E,GACzC,IAAI14C,GAAIyy8B,GAAeD,GAAI9t7B,IAC3B,GAAIy4tB,GAAS,CACX,GAAIp0wB,MAAMi3B,GAAEzkC,GACV,OAAO2X,GAET8sB,GAAEzkC,EAAIi3+B,GAAGj3+B,EAAIykC,GAAEzkC,EACfykC,GAAE0lB,EAAI8s7B,GAAG9s7B,EAAI1lB,GAAE0lB,EACf,IACIgt7B,GAAKljN,GADLjvxB,GAAI,EAER,EAAG,CAED,GADAivxB,GAAMijN,GAAezy8B,GAAG0kB,IACpB37C,MAAMymxB,GAAIj0xB,GAAI,CAChBmM,QAAQkL,IAAI,6FACZ,MAGFotB,GAAEzkC,IADFm3+B,GAAM,CAACn3+B,EAAGi3+B,GAAGj3+B,GAAKi0xB,GAAIj0xB,EAAIykC,GAAEzkC,GAAImqD,EAAG8s7B,GAAG9s7B,GAAK8puB,GAAI9puB,EAAI1lB,GAAE0lB,KAC1CnqD,EACXykC,GAAE0lB,GAAKgt7B,GAAIht7B,QACJnlD,MAAOzB,KAAKiN,IAAI2m+B,GAAIn3+B,GAXZ,OAWwBuD,KAAKiN,IAAI2m+B,GAAIht7B,GAXrC,OAYjB,GAAInlD,GAAI,EACNmH,eAAQkL,IAAI,mDACLM,GAETA,GAAI3X,EAAIuy+B,GAAW9t8B,GAAEzkC,EAAImpD,GAAG0wmB,GAAG,IAC/BlipB,GAAIwyC,EAAI1lB,GAAE0lB,EAAIhB,GAAG0wmB,GAAG,QAEfrspB,MAAMi3B,GAAEzkC,KACX2X,GAAI3X,EAAIg3+B,GAAIh3+B,EAAIykC,GAAEzkC,EAClB2X,GAAIwyC,EAAI6s7B,GAAI7s7B,EAAI1lB,GAAE0lB,GAGtB,OAAOxyC,GAGT,YAAwBq/9B,GAAK7t7B,IAC3B,IAIIiu7B,GAJA3y8B,GAAI,CAACzkC,EAAGg3+B,GAAIh3+B,EAAImpD,GAAG8quB,IAAI,GAAI9puB,EAAG6s7B,GAAI7s7B,EAAIhB,GAAG8quB,IAAI,IAC7CojN,KAAW9z+B,KAAKC,MAAMihC,GAAEzkC,GAAxBq3+B,KAA+B9z+B,KAAKC,MAAMihC,GAAE0lB,GAC5Cmt7B,KAAW7y8B,GAAEzkC,EAAI,EAAMq3+B,KAAvBC,KAAkC7y8B,GAAE0lB,EAAI,EAAMkt7B,KAC9C1/9B,GAAK,CAAC3X,EAAG2kD,OAAOwkE,IAAKh/D,EAAGxF,OAAOwkE,KAKnC,GAHIku3B,KAAS,GAAKA,MAAUlu7B,GAAG2t7B,IAAI,IAG/BO,KAAS,GAAKA,MAAUlu7B,GAAG2t7B,IAAI,GACjC,OAAOn/9B,GAGT,IAAI4/9B,KAAUpu7B,GAAGqu7B,IADjBJ,GAAOC,KAASlu7B,GAAG2t7B,IAAI,GAAMO,MACH,GAAtBE,KAA6Bpu7B,GAAGqu7B,IAAIJ,IAAK,GAC7CA,KACA,IAAIK,KAAStu7B,GAAGqu7B,IAAIJ,IAAK,GAArBK,KAA4Btu7B,GAAGqu7B,IAAIJ,IAAK,GAExCM,KAAUvu7B,GAAGqu7B,IADjBJ,IAAOju7B,GAAG2t7B,IAAI,IACY,GAAtBY,KAA6Bvu7B,GAAGqu7B,IAAIJ,IAAK,GAC7CA,KACA,IAAIO,KAA6Bxu7B,GAAGqu7B,IAAIJ,IAAK,GACzC/52B,GAAMi62B,KAASA,KAAQl62B,GAAMk62B,MAAU,EAAMA,MAC/CM,IAAO,EAAMN,OAAW,EAAMA,MAASp62B,IAAO,EAAMo62B,MAAUA,KAChE3/9B,UAAI3X,EAAK43+B,GAAML,KAAQn62B,GAAMq62B,KAAQv62B,GAHvB/zE,GAAGqu7B,IAAIJ,IAAK,GAGyB/52B,GAAMq62B,KACzD//9B,GAAIwyC,EAAKyt7B,GAAML,KAAQn62B,GAAMq62B,KAAQv62B,GAAMy62B,KAAQt62B,GAAMq62B,KAClD//9B,GC9LM,YAASy/6B,GAAKygD,GAAQ/o6B,IACnC,IAGIjyE,GAAG4nC,GAAGz/B,GAHN8y+B,GAAMhp6B,GAAM9uE,EACd+3+B,GAAMjp6B,GAAM3kB,EACZ6t7B,GAAMlp6B,GAAM42E,GAAK,EAEflrI,GAAM,GACV,IAAKxV,GAAI,EAAGA,GAAI,EAAGA,KACjB,IAAI6y+B,IAAgB,IAAN7y+B,SAAuBxJ,IAAZszE,GAAM42E,EAwB/B,OArBU,IAAV8/Y,IACE3oiB,GAAIi7+B,GAEFrz8B,IADgC,IAAlC,KAAStuB,QAAQih7B,GAAI56jB,KAAKx3X,KACpB,IAEA,KAIO,IAAVwgiB,IACH3oiB,GAAIk7+B,GAEFtz8B,IADgC,IAA9B,KAAKtuB,QAAQih7B,GAAI56jB,KAAKx3X,KACpB,IAEA,MAINnI,GAAIm7+B,GACJvz8B,GAAI,KAEE2y5B,GAAI56jB,KAAKx3X,SACZ,IAKH,IACG,IACHwV,GAAIiqB,IAAK5nC,GACT,MANA,IACG,IAKH,IACG,IACH2d,GAAIiqB,KAAM5nC,GACV,UACG,SACcrB,IAAbszE,GAAMrqC,MACRjqB,GAAIkrI,EAAI7oJ,IAEV,UACG,SACcrB,IAAbszE,GAAMrqC,MACRjqB,GAAIkrI,GAAK7oJ,IAEX,cAGA,OAAO,KAGX,OAAO2d,GC3DM,YAAU8lB,IACvB,IAAI9lB,GAAM,CACRxa,EAAGsgC,GAAM,GACT6pB,EAAG7pB,GAAM,IAEX,OAAIA,GAAMlkC,OAAO,IACfoe,GAAIkrI,EAAIplH,GAAM,IAEZA,GAAMlkC,OAAO,IACfoe,GAAI0Y,EAAIoN,GAAM,IAET9lB,GCPT,YAAoB3B,IAClB,GAA+B,mBAApB8rC,OAAOC,SAAyB,CACzC,GAAID,OAAOC,SAAS/rC,IAClB,OAEF,MAAM,IAAI8zyB,UAAU,sCAEtB,GAAmB,iBAAR9zyB,IAAoBA,IAAQA,KAAQ+rC,SAAS/rC,IACtD,MAAM,IAAI8zyB,UAAU,sCCDT,YAAmB37wB,GAAQ4sF,GAAM9uD,GAAOmp6B,IACrD,IAAIC,GAgBJ,GAfIvz+B,MAAMqxB,QAAQ84C,MAChBA,GAAQ6smB,GAAQ7smB,KDdL,YAAUA,IACvBqp6B,GAAWrp6B,GAAM9uE,GACjBm4+B,GAAWrp6B,GAAM3kB,GCcjBiu7B,CAAYtp6B,IAER99B,GAAOg87B,OAASpv2B,GAAKov2B,OAX3B,YAAqBh87B,GAAQ4sF,IAC3B,O/BRsB,I+BQb5sF,GAAOg87B,MAAMyI,Y/BPA,I+BO6Bzk8B,GAAOg87B,MAAMyI,aAAiD,UAAnB732B,GAAK+w2B,Y/BR7E,I+BQyG/w2B,GAAKov2B,MAAMyI,Y/BPpH,I+BOiJ732B,GAAKov2B,MAAMyI,aAAmD,UAArBzk8B,GAAO297B,UAUrL0J,CAAYrn8B,GAAQ4sF,MAEpD9uD,GAAQpuE,GAAUswC,GADlBkn8B,GAAQ,IAAIve,GAAK,SACgB7q5B,GAAOmp6B,IACxCjn8B,GAASkn8B,IAGPD,IAA+B,QAAhBjn8B,GAAOwrV,OACxB1tT,GAAQwp6B,GAAYtn8B,IAAQ,EAAO89B,KAGb,YAApB99B,GAAOy+7B,SACT3g6B,GAAQ,CACN9uE,EAAG8uE,GAAM9uE,EAAIks+B,EACb/h7B,EAAG2kB,GAAM3kB,EAAI+h7B,EACbxm1B,EAAG52E,GAAM42E,GAAK,WAGZ10G,GAAOu77B,WACTz95B,GAAQ,CACN9uE,EAAG8uE,GAAM9uE,EAAIgxC,GAAOu77B,SACpBpi7B,EAAG2kB,GAAM3kB,EAAInZ,GAAOu77B,SACpB7m1B,EAAG52E,GAAM42E,GAAK,MAGlB52E,GAAQ99B,GAAO4wuB,QAAQ9ysB,KAErB,OAUJ,GANI99B,GAAOw97B,iBACT1/5B,GAAM9uE,GAAKgxC,GAAOw97B,gBAIpB1/5B,GJrCa,YAAS99B,GAAQ4sF,GAAM9uD,IASpC,GDvBK,YAAuB99B,GAAQ4sF,IACpC,QAAI5sF,GAAOyk8B,aAAe732B,GAAK632B,YAEpBzk8B,GAAOxoB,IAAMo1G,GAAKp1G,GAAKjlB,KAAKiN,IAAIwgC,GAAOoh8B,GAAKx02B,GAAKw02B,IAAM,S1BL5C,I0BSXph8B,GAAOyk8B,WACRzk8B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,IAAMv97B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,IAAMv97B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,G1BTvI,I0BUXv97B,GAAOyk8B,YACRzk8B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,IAAMv97B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,IAAMv97B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,IAAMv97B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,IAAMv97B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,IAAMv97B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,IAAMv97B,GAAOu97B,aAAa,KAAO3w2B,GAAK2w2B,aAAa,ICMrWgK,CAAcvn8B,GAAQ4sF,K3BdH,I2BqBnB5sF,GAAOyk8B,Y3BrBY,I2BqBkB732B,GAAK632B,WAC5C,OAAO3m6B,GAIT,IAAI0p6B,GAAWxn8B,GAAOxoB,EAClBiw9B,GAAYzn8B,GAAOoh8B,GACvB,G3B9ByB,I2B8BrBph8B,GAAOyk8B,WAA8B,CAEvC,GAAsB,IADFiD,GAAe1n8B,IAAQ,EAAO89B,IAEhD,OAEF0p6B,GAAW3M,EACX4M,GAAY3M,EAGd,IAAI6M,GAAS/62B,GAAKp1G,EACdow9B,GAASh72B,GAAKr1G,EACdsw9B,GAAUj72B,GAAKw02B,GAQnB,O3BjDyB,I2B0CrBx02B,GAAK632B,aACPkD,GAAS9M,EACT+M,G3BxC6B,Y2ByC7BC,GAAU/M,GAIR2M,KAAcI,IAAWL,KAAaG,IAAWG,GAAY9n8B,GAAOyk8B,aAAiBqD,GAAYl72B,GAAK632B,aAK1G3m6B,GAAQiq6B,GAAqBjq6B,GAAO2p6B,GAAWD,IAE3CM,GAAY9n8B,GAAOyk8B,cACrB3m6B,GD0HG,YAA2BhU,GAAG266B,GAAYlH,IAE/C,G1BvLsB,I0BuLlBkH,GAGF,MAAO,CACLz1+B,EAAG86D,GAAE96D,EAAIuu+B,GAAa,GACtBpk7B,EAAG2Q,GAAE3Q,EAAIok7B,GAAa,GACtB7o1B,EAAG5qF,GAAE4qF,EAAI6o1B,GAAa,IAEnB,G1B9Le,I0B8LXkH,GAA2B,CACpC,IAGIuD,GAAQzK,GAAa,GACrB0K,GAAQ1K,GAAa,GACrB2K,GAAQ3K,GAAa,GACrB4K,GAAO5K,GAAa,GAGxB,MAAO,CACLvu+B,EAAGm5+B,IAAQr+6B,GAAE96D,EAAIk5+B,GAAQp+6B,GAAE3Q,EAAI8u7B,GAAQn+6B,GAAE4qF,GAV/B6o1B,GAAa,GAWvBpk7B,EAAGgv7B,IAAQD,GAAQp+6B,GAAE96D,EAAI86D,GAAE3Q,EAAI6u7B,GAAQl+6B,GAAE4qF,GAV/B6o1B,GAAa,GAWvB7o1B,EAAGyz1B,KAASF,GAAQn+6B,GAAE96D,EAAIg5+B,GAAQl+6B,GAAE3Q,EAAI2Q,GAAE4qF,GAVhC6o1B,GAAa,KCvIjB6K,CAAkBtq6B,GAAO99B,GAAOyk8B,WAAYzk8B,GAAOu97B,eAEzDuK,GAAYl72B,GAAK632B,cACnB3m6B,GDuJG,YAA6BhU,GAAG266B,GAAYlH,IAEjD,G1BvNsB,I0BuNlBkH,GAGF,MAAO,CACLz1+B,EAAG86D,GAAE96D,EAAIuu+B,GAAa,GACtBpk7B,EAAG2Q,GAAE3Q,EAAIok7B,GAAa,GACtB7o1B,EAAG5qF,GAAE4qF,EAAI6o1B,GAAa,IAGnB,G1B/Ne,I0B+NXkH,GAA2B,CACpC,IAGIuD,GAAQzK,GAAa,GACrB0K,GAAQ1K,GAAa,GACrB2K,GAAQ3K,GAAa,GACrB4K,GAAO5K,GAAa,GACpB8K,IAASv+6B,GAAE96D,EAPHuu+B,GAAa,IAOG4K,GACxBG,IAASx+6B,GAAE3Q,EAPHok7B,GAAa,IAOG4K,GACxBI,IAASz+6B,GAAE4qF,EAPH6o1B,GAAa,IAOG4K,GAI5B,MAAO,CACLn5+B,EAAGq5+B,GAAQH,GAAQI,GAAQL,GAAQM,GACnCpv7B,GAAI+u7B,GAAQG,GAAQC,GAAQN,GAAQO,GACpC7z1B,EAAGuz1B,GAAQI,GAAQL,GAAQM,GAAQC,KCnL7BC,CAAoB1q6B,GAAO8uD,GAAK632B,WAAY732B,GAAK2w2B,eAE3Dz/5B,GAAQ2q6B,GAAqB3q6B,GAAO+p6B,GAASF,GAAQC,I3B9D5B,I2BgErBh72B,GAAK632B,YAEqB,IADFiD,GAAe962B,IAAM,EAAM9uD,IAMhDA,QAPP,GAdSA,GICD4q6B,CAAgB1o8B,GAAOg87B,MAAOpv2B,GAAKov2B,MAAOl+5B,IAiClD,OA3BI8uD,GAAK4w2B,iBACP1/5B,GAAQ,CACN9uE,EAAG8uE,GAAM9uE,EAAI49H,GAAK4w2B,eAClBrk7B,EAAG2kB,GAAM3kB,EACTu7F,EAAG52E,GAAM42E,GAAK,IAII,YAAlB9nB,GAAK6x2B,SAEP3g6B,GAAQ,CACN9uE,EAAG8uE,GAAM9uE,EAAIms+B,EACbhi7B,EAAG2kB,GAAM3kB,EAAIgi7B,EACbzm1B,EAAG52E,GAAM42E,GAAK,IAGhB52E,GAAQ8uD,GAAK002B,QAAQxj6B,IACjB8uD,GAAK2u2B,WACPz95B,GAAQ,CACN9uE,EAAG8uE,GAAM9uE,EAAI49H,GAAK2u2B,SAClBpi7B,EAAG2kB,GAAM3kB,EAAIyzE,GAAK2u2B,SAClB7m1B,EAAG52E,GAAM42E,GAAK,KAMhBuy1B,IAA6B,QAAdr62B,GAAK4+P,KACf87mB,GAAY162B,IAAM,EAAM9uD,IAG1BA,GCxFT,IAAIop6B,GAAQve,GAAK,SAEjB,YAAqBl75B,GAAMqlE,GAAI50D,GAAQ+o6B,IACrC,IAAI0B,GAAkBn/9B,GAAK3gB,GAC3B,OAAI8K,MAAMqxB,QAAQk5C,KAChByq6B,GAAmBj5+B,GAAU+9D,GAAMqlE,GAAI50D,GAAQ+o6B,KAAgB,CAACj4+B,EAAGmpH,IAAKh/D,EAAGg/D,KACvEj6C,GAAO9yE,OAAS,OACQ,IAAdqiE,GAAKpjE,MAAsC,YAAdojE,GAAKpjE,WAA2C,IAAZyoI,GAAGzoI,MAAoC,YAAZyoI,GAAGzoI,KACvE,iBAAvBs++B,GAAiBj01B,EACnB,CAACi01B,GAAiB35+B,EAAG25+B,GAAiBxv7B,EAAGwv7B,GAAiBj01B,GAAG17G,OAAOklC,GAAO/0D,OAAO,IAElF,CAACw/9B,GAAiB35+B,EAAG25+B,GAAiBxv7B,EAAG+kB,GAAO,IAAIllC,OAAOklC,GAAO/0D,OAAO,IAG3E,CAACw/9B,GAAiB35+B,EAAG25+B,GAAiBxv7B,GAAGngB,OAAOklC,GAAO/0D,OAAO,IAGhE,CAACw/9B,GAAiB35+B,EAAG25+B,GAAiBxv7B,KAG/C3vC,GAAM9Z,GAAU+9D,GAAMqlE,GAAI50D,GAAQ+o6B,IAEd,KADpBp++B,GAAOqC,OAAOrC,KAAKq1E,KACV9yE,QAGTvC,GAAKoD,QAAQ,SAAUiM,IACrB,QAA0B,IAAdu1D,GAAKpjE,MAAsC,YAAdojE,GAAKpjE,WAA2C,IAAZyoI,GAAGzoI,MAAoC,YAAZyoI,GAAGzoI,MACzG,GAAY,MAAR6N,IAAuB,MAARA,IAAuB,MAARA,GAChC,eAGU,MAARA,IAAuB,MAARA,GACjB,OAGJsR,GAAItR,IAAOgmE,GAAOhmE,MAEbsR,IAIX,YAAmBnR,IACjB,OAAIA,cAAgBsw9B,GACXtw9B,GAELA,GAAKuw+B,MACAvw+B,GAAKuw+B,MAEPjgB,GAAKtw9B,IAmCd,SAhCA,YAAeww+B,GAAUC,GAAQjr6B,IAC/Bgr6B,GAAWE,GAAUF,IACrB,IACI9j7B,GADAy2jB,IAAS,EAab,YAXsB,IAAXstX,IACTA,GAASD,GACTA,GAAW3B,GACX1rX,IAAS,SACoB,IAAbstX,GAAO95+B,GAAqB2E,MAAMqxB,QAAQ8j9B,OAC1Djr6B,GAAQir6B,GACRA,GAASD,GACTA,GAAW3B,GACX1rX,IAAS,GAEXstX,GAASC,GAAUD,IACfjr6B,GACKmr6B,GAAYH,GAAUC,GAAQjr6B,KAErC9Y,GAAM,CACJu86B,QAAS,SAAUpj6B,GAAQ+o6B,IACzB,OAAO+B,GAAYH,GAAUC,GAAQ5q6B,GAAQ+o6B,KAE/Cr2N,QAAS,SAAU1ysB,GAAQ+o6B,IACzB,OAAO+B,GAAYF,GAAQD,GAAU3q6B,GAAQ+o6B,MAG7CzrX,KACFz2jB,GAAI6j7B,MAAQE,IAEP/j7B,KClDX,SAAe,CACbu86B,QAASA,GACT1wN,QA4BK,YAAiBq4N,IACtB,IAAItz1B,GAAOuz1B,GAAQli1B,GAAOii1B,GAAKzr1B,gBAC/B,OAAI7H,GAAKq30B,KAAOr30B,GAAK0mzB,IACZ,CAAC1mzB,GAAK0mzB,IAAK1mzB,GAAKq30B,IAAKr30B,GAAK0mzB,IAAK1mzB,GAAKq30B,KAEtC,CAACr30B,GAAKlhF,KAAMkhF,GAAKo5K,OAAQp5K,GAAKhhF,MAAOghF,GAAKniC,MAhCjDm3jB,QAASA,IAWJ,YAAiB9hB,GAAIvwX,IAC1BA,UAAWA,IAAY,EA6TzB,YAAgB6wsB,GAAK7wsB,IAEnB,IAAI8wsB,GAAW,QAAUD,GAAIE,QAC3BC,GAAY,QAAUH,GAAII,SAE5B,OAAOJ,GAAIK,WAAaL,GAAIM,WAa9B,YAAmBJ,GAASE,GAAUC,IACpC,IAAIE,GAAUC,GAAkBH,IAGhC,OAmCF,YAAyB5z+B,GAAQ28B,GAAKq38B,IAEpC,IAAI3g+B,GAAQ2g+B,GAAO,EACfC,GAvZ0B,SAuZY5ywB,WAAWhuN,IACjD6g+B,GAhZuB,SAgZY7ywB,WAAWhuN,IAG9C8g+B,GAASF,GAAYj0+B,GAAS,EAC9Bo0+B,GAASF,GAAYv38B,GACrB038B,IAAW,EAgDf,OA9CIF,GAjZE,KAkZJA,GAASA,GAlZL,GAJA,GAsZsB,EAC1BE,IAAW,IAtZP,KAyZFF,IAAiBF,GAzZf,IAyZgCE,GAzZhC,KAyZiDA,GAzZjD,IAyZ+DF,GAzZ/D,KAyZiFI,KACrFF,MAzZI,KA4ZFA,IAAiBF,GA5Zf,IA4ZgCE,GA5ZhC,KA4ZiDA,GA5ZjD,IA4Z+DF,GA5Z/D,KA4ZiFI,KA7ZjF,MA8ZJF,IAGEA,KAIAA,GAlaE,KAmaJA,GAASA,GAnaL,GAJA,GAuasB,GAGxBC,GAvaE,IAwaJA,GAASA,GAxaL,GAHA,GA2asB,EAC1BC,IAAW,GAGXA,IAAW,GA9aP,KAibAD,IAAmBF,GAjbnB,IAibsCE,GAjbtC,KAib0DA,GAjb1D,IAib0EF,GAjb1E,KAib6FG,KACjGD,MAjbI,KAobAA,IAAmBF,GApbnB,IAobsCE,GApbtC,KAob0DA,GApb1D,IAob0EF,GApb1E,KAob6FG,KArb7F,MAsbJD,IAGEA,KAIAA,GA3bE,KA4bJA,GAASA,GA5bL,GAHA,GA+bsB,GAGZ3x9B,OAAOC,aAAayx9B,IAAU1x9B,OAAOC,aAAa0x9B,IA3F3DE,CAFS33+B,KAAKC,MAAM62+B,GAAU,KACxB92+B,KAAKC,MAAM+2+B,GAAW,KAAU,GACHG,IAjBDS,CAAUhB,GAAIE,QAASF,GAAII,SAAUJ,GAAIK,YAAcJ,GAASth+B,OAAOsh+B,GAASh++B,OAAS,EAAGktS,IAAYgxsB,GAAUxh+B,OAAOwh+B,GAAUl++B,OAAS,EAAGktS,IAjUjL36H,CA8DT,YAAiBkrf,IACf,IAMIuhV,GACAru1B,GAAG2vb,GAAGhU,GAAG9wQ,GAGTyjrB,GACAC,GAXAC,GAAM1hV,GAAGmkU,IACTwd,GAAO3hV,GAAGwzS,IAEVouC,GAAa,UAKbC,GAASC,GAASJ,IAClBK,GAAUD,GAASH,IAIvBF,GAAa/3+B,KAAKC,OAAOg4+B,GAAO,KAAO,GAAK,EAG/B,MAATA,KACFF,GAAa,IAIXC,IAAO,IAAQA,GAAM,IAAQC,IAAQ,GAAOA,GAAO,KACrDF,GAAa,IAIXC,IAAO,IAAQA,GAAM,KACnBC,IAAQ,GAAOA,GAAO,EACxBF,GAAa,GAENE,IAAQ,GAAOA,GAAO,GAC7BF,GAAa,GAENE,IAAQ,IAAQA,GAAO,GAC9BF,GAAa,GAENE,IAAQ,IAAQA,GAAO,KAC9BF,GAAa,KAOjBD,GAAgBM,GAHgB,GAAlBL,GAAa,GAAS,IAAM,GAK1CF,GAAmBK,IAAe,EAAIA,IAEtC1u1B,GA9CQ,QA8CAxpJ,KAAKqnF,KAAK,EAAI6w5B,GAAal4+B,KAAKwkF,IAAI2z5B,IAAUn4+B,KAAKwkF,IAAI2z5B,KAC/Dh/Z,GAAIn5kB,KAAK8huB,IAAIq2Q,IAAUn4+B,KAAK8huB,IAAIq2Q,IAChChza,GAAI0ya,GAAkB73+B,KAAK65E,IAAIs+5B,IAAUn4+B,KAAK65E,IAAIs+5B,IAKlD,IAAIG,GAnDK,MAmDc9u1B,KAJvB6qK,GAAIr0T,KAAK65E,IAAIs+5B,KAAWE,GAAUP,MAID,EAAI3+Z,GAAIhU,IAAK9wQ,GAAIA,GAAIA,GAAI,GAAO,EAAI,GAAK8kR,GAAIA,GAAIA,GAAI,GAAKhU,GAAI,GAAK0ya,IAAmBxjrB,GAAIA,GAAIA,GAAIA,GAAIA,GAAI,KAAS,IAEhJkkrB,GArDK,OAFD,SAmDE,kBAA0GJ,GAAU,oBAA4Gn4+B,KAAKwkF,IAAI,EAAI2z5B,IAAW,qBAAyFn4+B,KAAKwkF,IAAI,EAAI2z5B,IAAW,GAAKD,GAAaA,GAAaA,GAAa,KAAQl4+B,KAAKwkF,IAAI,EAAI2z5B,KAIvZ3u1B,GAAIxpJ,KAAK8huB,IAAIq2Q,KAAW9jrB,GAAIA,GAAI,GAAK,EAAI8kR,GAAI,EAAIhU,GAAI,EAAIA,GAAIA,IAAK9wQ,GAAIA,GAAIA,GAAIA,GAAI,IAAQ,GAAK,GAAK8kR,GAAIA,GAAIA,GAAI,IAAMhU,GAAI,IAAM0ya,IAAmBxjrB,GAAIA,GAAIA,GAAIA,GAAIA,GAAIA,GAAI,MACxM,OAAI2jrB,GAAM,IACRO,IAAe,KAIV,CACLvB,SAAUh3+B,KAAK4zF,MAAM2k5B,IACrBzB,QAAS92+B,KAAK4zF,MAAM0k5B,IACpBrB,WAAYc,GACZb,WAAYsB,GAAoBR,KAlIpBS,CAAQ,CACpBhe,IAAKnkU,GAAG,GACRwzS,IAAKxzS,GAAG,KACNvwX,IAmBC,YAAiB2wsB,IACtB,IAAItz1B,GAAOuz1B,GAAQli1B,GAAOii1B,GAAKzr1B,gBAC/B,OAAI7H,GAAKq30B,KAAOr30B,GAAK0mzB,IACZ,CAAC1mzB,GAAK0mzB,IAAK1mzB,GAAKq30B,KAElB,EAAEr30B,GAAKlhF,KAAOkhF,GAAKhhF,OAAS,GAAIghF,GAAKniC,IAAMmiC,GAAKo5K,QAAU,GASnE,YAAkBqxU,IAChB,OAAQA,IAAO7toB,KAAK45E,GAAK,KAU3B,YAAkBq0jB,IAChB,OAAiBA,GAAMjuoB,KAAK45E,GAApB,IAqGV,YAAiBg95B,IAEf,IAAI2B,GAAc3B,GAAII,SAClBsB,GAAa1B,GAAIE,QACjBI,GAAaN,GAAIM,WACjBD,GAAaL,GAAIK,WAErB,GAAIA,GAAa,GAAKA,GAAa,GACjC,OAAO,KAGT,IAGIY,GAEAv9rB,GAAIo+rB,GAAIx/O,GAAIy/O,GAAI1/Z,GAChB2/Z,GACAC,GAAIC,GALJZ,GAAa,UAEb3p5B,IAAM,EAAIvuF,KAAKqnF,KAAK,EAAI6w5B,MAAgB,EAAIl4+B,KAAKqnF,KAAK,EAAI6w5B,KAM1Dz7+B,GAAI67+B,GAAa,IACjB1x7B,GAAI2x7B,GAMJrB,GAAa,MACftw7B,IAAK,KAKPgy7B,GAAgC,GAAlB3B,GAAa,GAAS,IAAM,EAI1CY,GAAmBK,IAAe,EAAIA,IAKtCY,IAFAD,GADIjy7B,GA7BK,MA8BC3hC,oBAEM,EAAIspE,GAAK,EAAI,GAAKA,GAAKA,GAAKA,GAAK,IAAMvuF,KAAKwkF,IAAI,EAAIq05B,KAAO,GAAKtq5B,GAAKA,GAAK,GAAK,GAAKA,GAAKA,GAAKA,GAAKA,GAAK,IAAMvuF,KAAKwkF,IAAI,EAAIq05B,IAAO,IAAMtq5B,GAAKA,GAAKA,GAAK,GAAMvuF,KAAKwkF,IAAI,EAAIq05B,IAG1Lv+rB,GAlCQ,QAkCCt6S,KAAKqnF,KAAK,EAAI6w5B,GAAal4+B,KAAKwkF,IAAIs05B,IAAW94+B,KAAKwkF,IAAIs05B,KACjEJ,GAAK14+B,KAAK8huB,IAAIg3Q,IAAW94+B,KAAK8huB,IAAIg3Q,IAClC5/O,GAAK2+O,GAAkB73+B,KAAK65E,IAAIi/5B,IAAW94+B,KAAK65E,IAAIi/5B,IACpDH,GArCQ,SAqCE,EAAIT,IAAcl4+B,KAAK06F,IAAI,EAAIw94B,GAAal4+B,KAAKwkF,IAAIs05B,IAAW94+B,KAAKwkF,IAAIs05B,IAAU,KAC7F7/Z,GAAIx8kB,IAvCK,MAuCA69S,IAET,IAAImgrB,GAAMqe,GAAWx+rB,GAAKt6S,KAAK8huB,IAAIg3Q,IAAWH,IAAO1/Z,GAAIA,GAAI,GAAK,EAAI,EAAIy/Z,GAAK,GAAKx/O,GAAK,EAAIA,GAAKA,GAAK,EAAI2+O,IAAmB5+Z,GAAIA,GAAIA,GAAIA,GAAI,IAAM,GAAK,GAAKy/Z,GAAK,IAAMx/O,GAAK,GAAKw/O,GAAKA,GAAK,IAAMb,GAAkB,EAAI3+O,GAAKA,IAAMjgL,GAAIA,GAAIA,GAAIA,GAAIA,GAAIA,GAAI,KAC5PwhZ,GAAMse,GAASte,IAEf,IAGIp19B,GAHAyk8B,IAAO7wX,IAAK,EAAI,EAAIy/Z,GAAKx/O,IAAMjgL,GAAIA,GAAIA,GAAI,GAAK,EAAI,EAAIigL,GAAK,GAAKw/O,GAAK,EAAIx/O,GAAKA,GAAK,EAAI2+O,GAAkB,GAAKa,GAAKA,IAAMz/Z,GAAIA,GAAIA,GAAIA,GAAIA,GAAI,KAAOj5kB,KAAK65E,IAAIi/5B,IAInK,GAHAhvC,GAAM8uC,GAAaG,GAASjvC,IAGxB8sC,GAAI7wsB,SAAU,CAChB,IAAIg9O,GAAW4zd,GAAQ,CACrBK,SAAUJ,GAAII,SAAWJ,GAAI7wsB,SAC7B+wsB,QAASF,GAAIE,QAAUF,GAAI7wsB,SAC3BmxsB,WAAYN,GAAIM,WAChBD,WAAYL,GAAIK,aAElB5x+B,GAAS,CACP47G,IAAK8ha,GAAS03c,IACdr45B,MAAO2gd,GAAS+mb,IAChBttoB,OAAQi+pB,GACRv45B,KAAM4n4B,SAIRzk8B,GAAS,CACPo19B,IAAKA,GACL3wB,IAAKA,IAGT,OAAOzk8B,GAWT,YAA6Bo19B,IAG3B,IAAIue,GAAmB,IAEvB,OAAK,IAAMve,IAASA,IAAO,GACzBue,GAAmB,IAEhB,GAAUve,IAASA,IAAO,GAC7Bue,GAAmB,IAEhB,GAAUve,IAASA,IAAO,GAC7Bue,GAAmB,IAEX,GAAKve,IAASA,IAAO,GAC7Bue,GAAmB,IAEX,GAAKve,IAASA,IAAO,GAC7Bue,GAAmB,IAEX,GAAKve,IAASA,IAAO,GAC7Bue,GAAmB,IAEX,GAAKve,IAASA,IAAO,GAC7Bue,GAAmB,IAEhB,GAAUve,IAASA,IAAO,GAC7Bue,GAAmB,IAEhB,GAAUve,IAASA,IAAO,EAC7Bue,GAAmB,IAEhB,EAASve,IAASA,IAAO,EAC5Bue,GAAmB,IAEhB,EAASve,IAASA,KAAO,EAC5Bue,GAAmB,KAEX,EAAKve,IAASA,KAAO,GAC7Bue,GAAmB,KAEX,GAAMve,IAASA,KAAO,GAC9Bue,GAAmB,KAEX,GAAMve,IAASA,KAAO,GAC9Bue,GAAmB,KAEX,GAAMve,IAASA,KAAO,GAC9Bue,GAAmB,KAEX,GAAMve,IAASA,KAAO,GAC9Bue,GAAmB,KAEX,GAAMve,IAASA,KAAO,GAC9Bue,GAAmB,KAEX,GAAMve,IAASA,KAAO,GAC9Bue,GAAmB,KAEX,GAAMve,IAASA,KAAO,GAC9Bue,GAAmB,KAEX,GAAMve,IAASA,KAAO,KAC9Bue,GAAmB,KAEdA,GA4CT,YAA2Bv3+B,IACzB,IAAI01+B,GAAU11+B,GApYI,EAqYlB,OAAgB,IAAZ01+B,KACFA,GAtYgB,GAyYXA,GAuFT,YAAgB8B,IAEd,GAAIA,IAAoC,IAAtBA,GAAWpg/B,OAC3B,KAAO,mCAWT,QAJIqg/B,GAJArg/B,GAASog/B,GAAWpg/B,OAEpBsg/B,GAAO,KACP99P,GAAK,GAEL55uB,GAAI,GAGC,QAAS6sa,KAAK4qkB,GAAWD,GAAW/x8B,OAAOzlC,MAAK,CACvD,GAAIA,IAAK,EACP,KAAO,kCAAoCw3+B,GAE7C59P,IAAM69P,GACNz3+B,KAGF,IAAIw1+B,GAAavg/B,SAAS2kvB,GAAI,IAE9B,GAAU,IAAN55uB,IAAWA,GAAI,EAAI5I,GAGrB,KAAO,kCAAoCog/B,GAG7C,IAAI/B,GAAa+B,GAAW/x8B,OAAOzlC,MAGnC,GAAIy1+B,IAAc,KAAsB,MAAfA,IAAqC,MAAfA,IAAsBA,IAAc,KAAsB,MAAfA,IAAqC,MAAfA,GAC9G,KAAO,yBAA2BA,GAAa,iBAAmB+B,GAGpEE,GAAOF,GAAWry9B,UAAUnlB,GAAGA,IAAK,GAWpC,QATI0jB,GAAMiy9B,GAAkBH,IAExBmC,GAqDN,YAA4Br9+B,GAAGopB,IAO7B,QAJIk09B,GAzjB0B,SAyjBS30wB,WAAWv/M,GAAM,GACpDm09B,GAAe,IACfC,IAAe,EAEZF,KAAWt9+B,GAAE2oO,WAAW,IAAI,CAQjC,GA1jBI,MAmjBJ20wB,IAEEA,KApjBE,KAsjBAA,IACFA,KAEEA,GAvjBA,GAujBY,CACd,GAAIE,GACF,KAAO,kBAAoBx9+B,GAE7Bs9+B,GA/jBE,GAgkBFE,IAAe,EAEjBD,IAAgB,IAGlB,OAAOA,GA9EQE,CAAmBL,GAAKjy8B,OAAO,GAAI/hB,IAC9Cs09B,GAgGN,YAA6B74+B,GAAGukB,IAE9B,GAAIvkB,GAAI,IACN,KAAO,oCAAsCA,GAS/C,QAJI84+B,GAlmBuB,SAkmBSh1wB,WAAWv/M,GAAM,GACjDw09B,GAAgB,EAChBJ,IAAe,EAEZG,KAAW94+B,GAAE8jO,WAAW,IAAI,CAUjC,GA7mBI,MAomBJg1wB,IAEEA,KArmBE,KAumBAA,IACFA,KAIEA,GA3mBA,GA2mBY,CACd,GAAIH,GACF,KAAO,kBAAoB34+B,GAE7B84+B,GAlnBE,GAmnBFH,IAAe,EAEjBI,IAAiB,IAGnB,OAAOA,GAhISC,CAAoBT,GAAKjy8B,OAAO,GAAI/hB,IAM7Cs09B,GAAYI,GAAe3C,KAChCuC,IAAa,IAIf,IAAIjnb,GAAY35jB,GAAS4I,GAEzB,GAAI+wjB,GAAY,GAAM,EACpB,KAAO,oKAAsKymb,GAG/K,IAIIa,GAAeC,GAAkBC,GAJjCC,GAAMznb,GAAY,EAElB0nb,GAAa,EACbC,GAAc,EAElB,OAAIF,GAAM,IACRH,GAAgB,IAAW95+B,KAAK06F,IAAI,GAAIu/4B,IACxCF,GAAmBd,GAAWry9B,UAAUnlB,GAAGA,GAAIw4+B,IAC/CC,GAAazi9B,WAAWsi9B,IAAoBD,GAC5CE,GAAoBf,GAAWry9B,UAAUnlB,GAAIw4+B,IAC7CE,GAAc1i9B,WAAWui9B,IAAqBF,IAMzC,CACLhD,QAJQoD,GAAad,GAKrBpC,SAJSmD,GAAcV,GAKvBvC,WAAYA,GACZD,WAAYA,GACZlxsB,SAAU+zsB,IAuGd,YAAwB5C,IACtB,IAAIF,GACJ,OAAQE,QACH,IACHF,GAAW,KACX,UACG,IACHA,GAAW,IACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,EACX,UACG,IACHA,GAAW,IACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,KACX,UACG,IACHA,GAAW,IACX,UACG,IACHA,GAAW,KACX,cAEAA,IAAW,EAEb,GAAIA,IAAY,EACd,OAAOA,GAGP,KAAO,wBAA0BE,GCpuBrC,YAAez6+B,GAAGmqD,GAAGu7F,IACnB,KAAMrvJ,gBAAgBk6E,IACpB,OAAO,IAAIA,GAAMvwE,GAAGmqD,GAAGu7F,IAEzB,GAAI/gJ,MAAMqxB,QAAQh2B,IAChB3J,KAAK2J,EAAIA,GAAE,GACX3J,KAAK8zD,EAAInqD,GAAE,GACX3J,KAAKqvJ,EAAI1lJ,GAAE,IAAM,UACI,iBAANA,GACf3J,KAAK2J,EAAIA,GAAEA,EACX3J,KAAK8zD,EAAInqD,GAAEmqD,EACX9zD,KAAKqvJ,EAAI1lJ,GAAE0lJ,GAAK,UACM,iBAAN1lJ,SAA+B,IAANmqD,GAAmB,CAC5D,IAAI+kB,GAASlvE,GAAEqN,MAAM,KACrBhX,KAAK2J,EAAIg7B,WAAWk0C,GAAO,GAAI,IAC/B74E,KAAK8zD,EAAInvB,WAAWk0C,GAAO,GAAI,IAC/B74E,KAAKqvJ,EAAI1qH,WAAWk0C,GAAO,GAAI,KAAO,OAEtC74E,KAAK2J,EAAIA,GACT3J,KAAK8zD,EAAIA,GACT9zD,KAAKqvJ,EAAIA,IAAK,EAEhBv5I,QAAQC,KAAK,+DAGfmkE,GAAMot6B,SAAW,SAASC,IACxB,OAAO,IAAIrt6B,GAAMormB,GAAQiiU,MAE3Brt6B,GAAM75D,UAAUmn+B,OAAS,SAASv0sB,IAChC,OAAOgpsB,GAAQ,CAACj8+B,KAAK2J,EAAG3J,KAAK8zD,GAAIm/O,KAEnC,SAAe/4N,GCjCf,IAGIut6B,GAAM,UACNC,GAAM,gBASK,YAAS3L,IACtB,IAAIt+zB,GAAK,GACTA,GAAG,GAfK,EAeMs+zB,IAdN,IAckBA,IAblB,QAa8BA,IAAM0L,GAAM1L,GAAK2L,MACvDjq0B,GAAG,GAAKs+zB,IAXA,IAWYA,IAdZ,QAcwBA,IAAM0L,GAAM1L,GAAK2L,MACjD,IAAIt58B,GAAI2t8B,GAAKA,GACbt+zB,UAAG,GAAKrvI,IAZA,OAYW2t8B,IAXX,oBACA,oBAUuBA,KAE/Bt+zB,GAAG,IADHrvI,IAAK2t8B,KAVG,kBACA,oBAUWA,IACnBt+zB,GAAG,GAAKrvI,GAAI2t8B,GAVJ,YAWDt+zB,GCtBM,YAASk+zB,GAAKgM,GAAMC,GAAMnq0B,IACvCmq0B,OAEQnq0B,GAAG,GAAKk+zB,IAFhBiM,IAAQD,KAEsBlq0B,GAAG,IADjCkq0B,IAAQA,KACsClq0B,GAAG,GAAKkq0B,IAAQlq0B,GAAG,GAAKkq0B,GAAOlq0B,GAAG,MCEnE,YAASx/I,GAAK898B,GAAIt+zB,IAG/B,QAFIrqI,GAAI,GAAK,EAAI2o8B,IACbJ,GAAM198B,GACDtvB,GALI,GAKUA,KAAKA,GAAG,CAC7B,IAAI9H,GAAIqG,KAAKwkF,IAAIiq5B,IACbvt8B,GAAI,EAAI2t8B,GAAKl1+B,GAAIA,GAKrB,GADA80+B,IADAvt8B,IAAKy58B,GAAQlM,GAAK90+B,GAAGqG,KAAK65E,IAAI405B,IAAMl+zB,IAAMx/I,KAAQmQ,GAAIlhC,KAAKqnF,KAAKnmD,KAAMgF,GAElElmC,KAAKiN,IAAIi0B,IAAKwn8B,EAChB,OAAO+F,GAIX,OAAOA,GCmJT,SAAe,CACb3p7B,KA7JK,cACLhyD,KAAKi1E,QAAiB9vE,IAAZnF,KAAKi1E,GAAmBj1E,KAAKi1E,GAAK,EAC5Cj1E,KAAK20E,QAAiBxvE,IAAZnF,KAAK20E,GAAmB30E,KAAK20E,GAAK,EAC5C30E,KAAKk3+B,WAAuB/x+B,IAAfnF,KAAKk3+B,MAAsBl3+B,KAAKk3+B,MAAQ,EACrDl3+B,KAAK62+B,UAAqB1x+B,IAAdnF,KAAK62+B,KAAqB72+B,KAAK62+B,KAAO,EAE9C72+B,KAAK+7+B,KACP/7+B,KAAKy9K,GAAKqq0B,GAAQ9n/B,KAAK+7+B,IACvB/7+B,KAAK+n/B,IAAMF,GAAQ7n/B,KAAK62+B,KAAM3p+B,KAAKwkF,IAAI1xF,KAAK62+B,MAAO3p+B,KAAK65E,IAAI/mF,KAAK62+B,MAAO72+B,KAAKy9K,MAsJ/Ew+zB,QA9IK,YAAiBx36B,IACtB,IAIIi36B,GACA/x+B,GAAGmqD,GAJH6z6B,GAAMlj6B,GAAE3Q,EAERk07B,GAAY9L,GAHNz36B,GAAE96D,EAGqB3J,KAAKk3+B,OAGlC+Q,GAAU/6+B,KAAKwkF,IAAIi24B,IACnBugB,GAAUh7+B,KAAK65E,IAAI4g5B,IAEvB,GAAK3n+B,KAAK+7+B,GA8BL,CACH,IAAIvx3B,GAAK093B,GAAUF,GACfG,GAAMj7+B,KAAK06F,IAAI4iB,GAAI,GACnBvqG,GAAIjgB,KAAK+++B,IAAM7x+B,KAAK06F,IAAIsg5B,GAAS,GACjClia,GAAK94kB,KAAK06F,IAAI3nF,GAAG,GACjBmo+B,GAAKl7+B,KAAKiN,IAAI+t+B,IAAWtS,EAAQ1o+B,KAAK8huB,IAAI24P,IAAO,EACjDv57B,GAAIlhC,KAAK06F,IAAIwg5B,GAAI,GACjBj4H,GAAKjj3B,KAAK06F,IAAIx5D,GAAG,GACrBst8B,GAAM,EAAI17+B,KAAK+7+B,GAAK7u+B,KAAK06F,IAAIqg5B,GAAS,GACtCz93B,IAAUt9G,KAAKqnF,KAAKmn5B,IACpB,IAAItl+B,GAAKyx+B,GAAQlgB,GAAKsgB,GAASC,GAASlo/B,KAAKy9K,IAE7C9zK,GAAI3J,KAAKmyB,GAAKnyB,KAAK63+B,GAAKrt3B,IAAM,EAC5B293B,GAAM,GAAK,EAAI/58B,GAAInuB,GACnBko+B,GAAM,IAAM,EAAI,GAAK/58B,GAAI+h1B,GAAK,GAAKlw2B,GAAI,GAAKmuB,GAAInuB,GAChDko+B,GAAM,IAAM,GAAK,IAAMh4H,GAAKA,GAAK/h1B,GAAI,IAAMA,QAC3CpuC,KAAKi1E,GAEPnhB,GAAI9zD,KAAKmyB,GAAKnyB,KAAK63+B,IAAMzh+B,GAAKpW,KAAK+n/B,IACjCE,GAAUD,GAAYx93B,GAAK,GAAK,EAChC293B,GAAM,IAAM,EAAI/58B,GAAI,EAAInuB,GAAI,EAAI+lkB,GAChCmia,GAAM,IAAM,GAAKh4H,GAAK,GAAK/h1B,GAAI,IAAMnuB,GAAI,IAAMmuB,GAAInuB,GACnDko+B,GAAM,IAAM,KAAO,IAAMh4H,GAAKA,GAAK/h1B,GAAI,KAAOA,SAC9CpuC,KAAK20E,OArDK,CACZ,IAAIziD,GAAIg29B,GAAUh7+B,KAAKwkF,IAAIs25B,IAE3B,GAAK96+B,KAAKiN,IAAIjN,KAAKiN,IAAI+X,IAAK,GAAM0j9B,EAChC,OAAQ,GAOR,GAJAjs+B,GAAI,GAAM3J,KAAKmyB,EAAInyB,KAAK63+B,GAAK3q+B,KAAK8T,KAAK,EAAIkR,KAAM,EAAIA,KAAMlyB,KAAKi1E,GAChEnhB,GAAIo07B,GAAUh7+B,KAAK65E,IAAIih6B,IAAa96+B,KAAKqnF,KAAK,EAAIrnF,KAAK06F,IAAI11E,GAAG,KAC9DA,GAAIhlB,KAAKiN,IAAI25C,MAEJ,EAAG,CACV,GAAK5hC,GAAI,EAAK0j9B,EACZ,OAAQ,GAGR9h7B,GAAI,OAINA,GAAI5mD,KAAKkouB,KAAKthrB,IAGZ6z6B,GAAM,IACR7z6B,IAAKA,IAGPA,GAAI9zD,KAAKmyB,EAAInyB,KAAK63+B,IAAM/j7B,GAAI9zD,KAAK62+B,MAAQ72+B,KAAK20E,GA6BlDlQ,UAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GAEC2Q,IA0EP8mtB,QApEK,YAAiB9mtB,IACtB,IAAIi36B,GAAKC,GACLhU,GAAK3wB,GACLrt8B,GAAuB,EAAI3J,KAAKmyB,GAA3BsyC,GAAE96D,EAAI3J,KAAKi1E,IAChBnhB,GAAuB,EAAI9zD,KAAKmyB,GAA3BsyC,GAAE3Q,EAAI9zD,KAAK20E,IAEpB,GAAK30E,KAAK+7+B,GAuBR,GAFAJ,GAAM0M,GADN3M,GAAM17+B,KAAK+n/B,IAAMj07B,GAAI9zD,KAAK63+B,GACH73+B,KAAK+7+B,GAAI/7+B,KAAKy9K,IAEjCvwK,KAAKiN,IAAIwh+B,IAAOhG,EAAS,CAC3B,IAAIsS,GAAU/6+B,KAAKwkF,IAAIiq5B,IACnBuM,GAAUh7+B,KAAK65E,IAAI405B,IACnB2M,GAAUp7+B,KAAKiN,IAAI+t+B,IAAWtS,EAAQ1o+B,KAAK8huB,IAAI2sQ,IAAO,EACtD179B,GAAIjgB,KAAK+++B,IAAM7x+B,KAAK06F,IAAIsg5B,GAAS,GACjClia,GAAK94kB,KAAK06F,IAAI3nF,GAAG,GACjBmuB,GAAIlhC,KAAK06F,IAAI0g5B,GAAS,GACtBn4H,GAAKjj3B,KAAK06F,IAAIx5D,GAAG,GACrBst8B,GAAM,EAAI17+B,KAAK+7+B,GAAK7u+B,KAAK06F,IAAIqg5B,GAAS,GACtC,IAAIz8+B,GAAI7B,GAAIuD,KAAKqnF,KAAKmn5B,IAAO17+B,KAAK63+B,GAC9Bpg5B,GAAKvqF,KAAK06F,IAAIp8F,GAAG,GAGrBm89B,GAAMgU,IAFND,IAAY4M,IAEO7w5B,IAAM,EAAIz3F,KAAK+7+B,IAAO,IAAO,EAC9Ctk5B,GAAK,IAAM,EAAI,EAAIrpD,GAAI,EAAInuB,GAAImuB,GAAInuB,GAAI,EAAI+lkB,GAC3Cvuf,GAAK,IAAM,GAAK,GAAKrpD,GAAI,IAAMnuB,GAAImuB,GAAI,GAAK+h1B,GAAK,GAAKlw2B,GACtDw3E,GAAK,IAAM,KAAO,KAAOrpD,GAAI,KAAO+h1B,GAAK,KAAOA,GAAK/h1B,OAEvD4o6B,GAAMklC,GAAWl8+B,KAAKk3+B,MAAS1r+B,IAAK,EAClCisF,GAAK,GAAK,EAAI,EAAIrpD,GAAInuB,GACtBw3E,GAAK,IAAM,EAAI,GAAKrpD,GAAI,GAAK+h1B,GAAK,EAAIlw2B,GAAImuB,GAAI,EAAInuB,GAClDw3E,GAAK,IAAM,GAAK,IAAMrpD,GAAI,KAAO+h1B,GAAK,IAAMA,GAAK/h1B,OAAQ858B,SAG3DvgB,GAAMgO,EAAU1z5B,GAAKnuB,IACrBkj5B,GAAM,MAhDI,CACZ,IAAIpx8B,GAAIsH,KAAKy4V,IAAIh8V,GAAI3J,KAAK63+B,IACtBro7B,GAAI,IAAO5pD,GAAI,EAAIA,IAEnB6xN,GAAIvqN,KAAK65E,IADF/mF,KAAK62+B,KAAO/i7B,GAAI9zD,KAAK63+B,IAEhC6D,GAAMxu+B,KAAKqnF,MAAM,EAAIrnF,KAAK06F,IAAI6vH,GAAG,KAAO,EAAIvqN,KAAK06F,IAAIp4C,GAAG,KACxDm46B,GAAMz69B,KAAKyyoB,KAAK+7V,IAEZ5n7B,GAAI,IACN6z6B,IAAOA,IAIP3wB,GADS,IAANxn5B,IAAmB,IAANioK,GACV,EAGAykxB,GAAWhv+B,KAAKqkF,MAAM/hC,GAAGioK,IAAKz3N,KAAKk3+B,OAoC7Czy6B,UAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GAEClj6B,IAQP6zU,MALiB,CAAC,2BAA4B,6BCtKjC,YAAS3uY,IACtB,IAAIknD,GAAI3jD,KAAKy4V,IAAIh8V,IACjBknD,OAAKA,GAAI,EAAIA,IAAK,ECFL,YAASlnD,GAAGmqD,IACzBnqD,GAAIuD,KAAKiN,IAAIxQ,IACbmqD,GAAI5mD,KAAKiN,IAAI25C,IACb,IAAI3hC,GAAIjlB,KAAKsB,IAAI7E,GAAGmqD,IAChB5hC,GAAIhlB,KAAKulC,IAAI9oC,GAAGmqD,KAAM3hC,IAAQ,GAElC,OAAOA,GAAIjlB,KAAKqnF,KAAK,EAAIrnF,KAAK06F,IAAI11E,GAAG,ICNxB,YAASq29B,GAAI74+B,IAO1B,QAFI+nN,GAJA+wxB,GAAS,EAAIt7+B,KAAK65E,IAAI,EAAIr3E,IAC1Bf,GAAI45+B,GAAGxi/B,OAAS,EAChBu+wB,GAAKikO,GAAG55+B,IACR41wB,GAAK,IAGA51wB,IAAK,GACZ8oN,GAAU+wxB,GAASlkO,GAAdC,GAAmBgkO,GAAG55+B,IAC3B41wB,GAAKD,GACLA,GAAK7sjB,GAGP,OAAQ/nN,GAAI+nN,GAAIvqN,KAAKwkF,IAAI,EAAIhiF,ICVhB,YAAS64+B,GAAIE,GAAOC,IAejC,QAHIC,GACAC,GAZAC,GAAY37+B,KAAKwkF,IAAI+25B,IACrBK,GAAY57+B,KAAK65E,IAAI0h6B,IACrBM,GAAaC,GAAKN,IAClBO,GCPS,YAASt/+B,IACtB,IAAIknD,GAAI3jD,KAAKy4V,IAAIh8V,IACjBknD,OAAKA,GAAI,EAAIA,IAAK,EDKD6j5B,CAAKg0C,IAClB737B,GAAI,EAAIi47B,GAAYG,GACpBt6+B,IAAI,EAAKk6+B,GAAYE,GACrBvn5B,GAAI+m5B,GAAGxi/B,OAAS,EAChBsmlB,GAAKk8Z,GAAG/m5B,IACR0n5B,GAAM,EACNC,GAAM,EACN3yO,GAAK,IAIAh1qB,IAAK,GACZmn5B,GAAMQ,GACNP,GAAMM,GAGN78Z,GAAYx7hB,IAFZs47B,GAAM98Z,IAEAs8Z,GAAgBh6+B,IADtBu6+B,GAAM1yO,IAC0B+xO,GAAG/m5B,IACnCg1qB,GAAY7nwB,GAAIw6+B,GAAVP,GAAgB/37B,GAAIq47B,GAG5Br47B,MAGO,EAHPA,GAAIg47B,GAAYI,IAGJ58Z,IAFZ19kB,GAAIm6+B,GAAYC,IAEKvyO,GAAI3ltB,GAAI2ltB,GAAK7nwB,GAAI09kB,IEwIxC,SAAe,CACbr6hB,KA3JK,cACL,IAAKhyD,KAAKw4+B,SAAWrh+B,MAAMnX,KAAK+7+B,KAAO/7+B,KAAK+7+B,IAAM,GAChD,MAAM,IAAItl+B,MAAM,sIAEdzW,KAAKw4+B,SAEP4Q,cAAiBpp/B,MACjBA,KAAKi8+B,QAAUmN,WACfpp/B,KAAKurxB,QAAU69N,YAGjBpp/B,KAAKi1E,QAAiB9vE,IAAZnF,KAAKi1E,GAAmBj1E,KAAKi1E,GAAK,EAC5Cj1E,KAAK20E,QAAiBxvE,IAAZnF,KAAK20E,GAAmB30E,KAAK20E,GAAK,EAC5C30E,KAAKk3+B,WAAuB/x+B,IAAfnF,KAAKk3+B,MAAsBl3+B,KAAKk3+B,MAAQ,EACrDl3+B,KAAK62+B,UAAqB1x+B,IAAdnF,KAAK62+B,KAAqB72+B,KAAK62+B,KAAO,EAElD72+B,KAAKqp/B,IAAM,GACXrp/B,KAAKsp/B,IAAM,GACXtp/B,KAAKup/B,IAAM,GACXvp/B,KAAKwp/B,IAAM,GAEX,IAAI5j/B,GAAI5F,KAAK+7+B,IAAM,EAAI7u+B,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,KACtCju+B,GAAIlI,IAAK,EAAIA,IACb6j/B,GAAK37+B,GAET9N,KAAKqp/B,IAAI,GAAKv7+B,IAAK,EAAIA,KAAK,EAAK,EAAIA,IAAUA,IAAK,IAAM,GAAKA,IAAK,GAAK,GAAKA,KAAK,KAAQ,OAAjD,KAC1C9N,KAAKsp/B,IAAI,GAAKx7+B,IAAUA,IAAM,EAAI,EAAIA,IAAM,EAAI,EAAIA,KAAK,GAAM,GAAKA,IAAK,GAAK,GAAKA,IAAK,KAAO,UAA5E,GAGnB9N,KAAKqp/B,IAAI,IADTI,IAAU37+B,KACU,EAAI,EAAIA,IAAcA,KAAK,IAAO,GAAKA,IAAK,KAAO,IAAMA,IAAK,KAAO,OAAxD,MACjC9N,KAAKsp/B,IAAI,GAAKG,IAAM,EAAI,EAAI37+B,KAAK,GAAM,GAAKA,KAAM,GAAM,EAAIA,IAAK,IAAM,IAAMA,KAAK,KAAQ,SAG1F9N,KAAKqp/B,IAAI,IADTI,IAAU37+B,KACU,GAAK,GAAKA,KAAK,IAAO,GAAKA,KAAK,KAAQ,IAAMA,IAAK,MAAQ,SAC/E9N,KAAKsp/B,IAAI,GAAKG,KAAM,GAAM,GAAK37+B,IAAK,GAAK,GAAKA,IAAK,IAAQA,KAAK,MAAS,SAGzE9N,KAAKqp/B,IAAI,IADTI,IAAU37+B,KACU,KAAO,IAAMA,KAAK,IAAO,GAAKA,KAAK,OAAU,SACjE9N,KAAKsp/B,IAAI,GAAKG,IAAM,KAAO,IAAM37+B,IAAeA,KAAM,MAAS,OAAzB,MAGtC9N,KAAKqp/B,IAAI,IADTI,IAAU37+B,KACU,KAAO,IAAMA,KAAK,OAAU,OAChD9N,KAAKsp/B,IAAI,GAAKG,KAAM,IAAO,IAAM37+B,IAAK,OAAS,QAG/C9N,KAAKqp/B,IAAI,IADTI,IAAU37+B,KACU,OAAS,OAC7B9N,KAAKsp/B,IAAI,GAAKG,IAAM,OAAS,QAE7BA,GAAKv8+B,KAAK06F,IAAI95F,GAAG,GACjB9N,KAAKiiqB,GAAKjiqB,KAAK63+B,IAAM,EAAI/p+B,KAAM,EAAI27+B,IAAM,EAAI,EAAIA,IAAM,EAAI,GAAKA,GAAK,OAErEzp/B,KAAKup/B,IAAI,GAAKz7+B,IAAYA,IAAM,EAAI,EAAIA,KAAK,GAAM,GAAKA,IAAM,EAAI,IAAMA,IAAK,GAAK,IAAMA,KAAK,MAAS,YAAnF,IACnB9N,KAAKwp/B,IAAI,GAAK17+B,IAAK,GAAMA,KAAK,EAAK,EAAIA,IAAK,EAAI,GAAKA,IAAK,GAAK,IAAMA,KAAK,IAAO,IAAMA,IAAK,KAAO,YAEnG9N,KAAKup/B,IAAI,GAAKE,KAAM,EAAK,GAAK37+B,KAAK,EAAK,GAAKA,IAAK,IAAM,KAAOA,KAAK,GAAM,IAAMA,IAAK,QAAU,aAC/F9N,KAAKwp/B,IAAI,GAAKC,IAAM,GAAK,GAAK37+B,IAAcA,IAAK,IAAM,KAAOA,IAAK,IAAM,IAAMA,KAAK,QAAW,WAA5D,KAGnC9N,KAAKup/B,IAAI,IADTE,IAAU37+B,MACU,GAAM,IAAMA,IAAK,GAAK,IAAMA,IAAK,IAAM,KAAOA,KAAK,KAAQ,UAC/E9N,KAAKwp/B,IAAI,GAAKC,IAAM,GAAK,IAAM37+B,KAAK,IAAO,IAAMA,IAAK,MAAQ,MAAQA,IAAK,OAAS,WAGpF9N,KAAKup/B,IAAI,IADTE,IAAU37+B,MACU,KAAQ,OAASA,IAAK,GAAK,IAAMA,IAAK,OAAS,WACnE9N,KAAKwp/B,IAAI,GAAKC,IAAM,MAAQ,OAAS37+B,KAAK,IAAO,IAAMA,IAAK,QAAU,WAGtE9N,KAAKup/B,IAAI,IADTE,IAAU37+B,MACU,KAAQ,OAASA,IAAK,OAAS,UACnD9N,KAAKwp/B,IAAI,GAAKC,IAAM,MAAQ,MAAQ37+B,KAAK,QAAW,UAGpD9N,KAAKup/B,IAAI,IADTE,IAAU37+B,MACU,SAAY,WAChC9N,KAAKwp/B,IAAI,GAAW,kBAANC,GAEd,IAAI9mW,GAAI+mW,GAAK1p/B,KAAKsp/B,IAAKtp/B,KAAK62+B,MAC5B72+B,KAAK2p/B,IAAM3p/B,KAAKiiqB,IAAMtf,GCtFT,YAAS4lW,GAAIE,IAO1B,QAFIp8Z,GAJAx7hB,GAAI,EAAI3jD,KAAK65E,IAAI0h6B,IACjB95+B,GAAI45+B,GAAGxi/B,OAAS,EAChBoj/B,GAAMZ,GAAG55+B,IACTg6+B,GAAM,IAGDh6+B,IAAK,GACZ09kB,GAAYx7hB,GAAIs47B,GAAVR,GAAgBJ,GAAG55+B,IACzBg6+B,GAAMQ,GACNA,GAAM98Z,GAGR,OAAOn/kB,KAAKwkF,IAAI+25B,IAASp8Z,GDyECu9Z,CAAM5p/B,KAAKwp/B,IAAK,EAAI7mW,MAkF9Cs5V,QA/EK,YAAiBx36B,IACtB,IAAI1O,GAAKmm7B,GAAWz36B,GAAE96D,EAAI3J,KAAKk3+B,OAC3BrvP,GAAKpjrB,GAAE3Q,EAEX+zrB,GAAK6hQ,GAAK1p/B,KAAKsp/B,IAAKzhQ,IACpB,IAAIgiQ,GAAS38+B,KAAKwkF,IAAIm2pB,IAClBiiQ,GAAS58+B,KAAK65E,IAAI8gqB,IAClBkiQ,GAAS78+B,KAAKwkF,IAAI37B,IAClBi07B,GAAS98+B,KAAK65E,IAAIhxB,IAEtB8xrB,GAAK36uB,KAAKqkF,MAAMs45B,GAAQG,GAASF,IACjC/z7B,GAAK7oD,KAAKqkF,MAAMw45B,GAASD,GAAQG,GAAMJ,GAAQC,GAASE,KACxDj07B,GElGa,YAASpsD,IACtB,IAAImqD,GAAI5mD,KAAKiN,IAAIxQ,IACjBmqD,UCLa,YAASnqD,IACtB,IAAImqD,GAAI,EAAInqD,GACR0lJ,GAAIv7F,GAAI,EAEZ,OAAa,IAANu7F,GAAU1lJ,GAAIA,GAAIuD,KAAK8T,IAAI8yC,IAAKu7F,GDCnC661B,CAAOp27B,IAAK,EAAIA,IAAKm27B,GAAM,EAAGn27B,IAAK,KAEhCnqD,GAAI,GAAKmqD,GAAIA,GF8Ffq27B,CAAOj9+B,KAAK8huB,IAAIj5qB,KAErB,IAKIpsD,GACAmqD,GANAljD,GAAMw5+B,GAAYpq/B,KAAKwp/B,IAAK,EAAI3hQ,GAAI,EAAI9xrB,IAQ5C,OANA8xrB,IAAUj3uB,GAAI,GACdmlD,IAAUnlD,GAAI,GAKV1D,KAAKiN,IAAI47C,KAAO,gBAClBpsD,GAAI3J,KAAKmyB,GAAKnyB,KAAKiiqB,GAAKlsmB,IAAM/1D,KAAKi1E,GACnCnhB,GAAI9zD,KAAKmyB,GAAKnyB,KAAKiiqB,GAAK4lF,GAAK7nvB,KAAK2p/B,IAAM3p/B,KAAK20E,KAG7ChrE,GAAI4oH,IACJz+D,GAAIy+D,KAGN9tD,GAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GAEC2Q,IA8CP8mtB,QA3CK,YAAiB9mtB,IACtB,IAMIuy4B,GACA2wB,GAPA5x6B,GAAwB,EAAI/1D,KAAKmyB,GAA3BsyC,GAAE96D,EAAI3J,KAAKi1E,IACjB4yqB,GAAwB,EAAI7nvB,KAAKmyB,GAA3BsyC,GAAE3Q,EAAI9zD,KAAK20E,IAQrB,GANAkzqB,IAAMA,GAAK7nvB,KAAK2p/B,IAAM3p/B,KAAKiiqB,GAC3BlsmB,IAAU/1D,KAAKiiqB,GAKX/0pB,KAAKiN,IAAI47C,KAAO,eAAgB,CAClC,IAAInlD,GAAMw5+B,GAAYpq/B,KAAKup/B,IAAK,EAAI1hQ,GAAI,EAAI9xrB,IAE5C8xrB,IAAUj3uB,GAAI,GACdmlD,IAAUnlD,GAAI,GACdmlD,GAAK7oD,KAAKm6uB,KAAK2hQ,GAAKjz7B,KAEpB,IAAI8z7B,GAAS38+B,KAAKwkF,IAAIm2pB,IAClBiiQ,GAAS58+B,KAAK65E,IAAI8gqB,IAClBkiQ,GAAS78+B,KAAKwkF,IAAI37B,IAClBi07B,GAAS98+B,KAAK65E,IAAIhxB,IAEtB8xrB,GAAK36uB,KAAKqkF,MAAMs45B,GAASG,GAAQC,GAAMF,GAAQC,GAASF,KAGxD9yC,GAAMklC,IAFNnm7B,GAAK7oD,KAAKqkF,MAAMw45B,GAAQC,GAASF,KAEX9p/B,KAAKk3+B,OAC3BvP,GAAM+hB,GAAK1p/B,KAAKqp/B,IAAKxhQ,SAGrBmvN,GAAMzk1B,IACNo12B,GAAMp12B,IAGR9tD,UAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GAEClj6B,IAQP6zU,MALiB,CAAC,+BAAgC,+BAAgC,SAAU,sBAAuB,sBAAuB,UI9I5Ip+U,GAAe,CACblI,KAlBK,cACL,IAAI45T,GCLS,YAASA,GAAMorlB,IAC5B,QAAa7x8B,IAATymX,GAAoB,CAGtB,IAFAA,GAAO1+W,KAAKC,MAAoC,IAA7B+u+B,GAAWllC,IAAO9p8B,KAAK45E,IAAW55E,KAAK45E,IAAM,GAErD,EACT,OAAO,EACF,GAAI8kS,GAAO,GAChB,OAAO,GAGX,OAAOA,GDLIy+nB,CAAYrq/B,KAAK4rX,KAAM5rX,KAAKk3+B,OACvC,QAAa/x+B,IAATymX,GACF,MAAM,IAAIn1W,MAAM,oBAElBzW,KAAK62+B,KAAO,EACZ72+B,KAAKk3+B,OAAW,EAAIhq+B,KAAKiN,IAAIyxW,IAAS,KAAOiqnB,EAC7C71+B,KAAKi1E,GAAK,IACVj1E,KAAK20E,GAAK30E,KAAKg4+B,SAAW,IAAW,EACrCh4+B,KAAK63+B,GAAK,MAEVyS,cAAkBtq/B,MAClBA,KAAKi8+B,QAAUqO,WACftq/B,KAAKurxB,QAAU++N,YAMfhymB,MAHiB,CAAC,uCAAwC,OAI1DnvW,UAxBqB,UEFR,YAASoh9B,GAAO5kpB,IAC7B,OAAQz4V,KAAK06F,KAAK,EAAI2i5B,KAAU,EAAIA,IAAQ5kpB,IC6C9C,SAAe,CACb3zS,KA3CK,cACL,IAAI217B,GAAOz6+B,KAAKwkF,IAAI1xF,KAAK62+B,MACrB+Q,GAAO16+B,KAAK65E,IAAI/mF,KAAK62+B,MACzB+Q,IAAQA,GACR5n/B,KAAK0vG,GAAKxiG,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,KAAO,EAAI/7+B,KAAK+7+B,GAAK4L,GAAOA,IACzD3n/B,KAAKqykB,EAAInlkB,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,GAAK6L,GAAOA,IAAQ,EAAI5n/B,KAAK+7+B,KACzD/7+B,KAAKwq/B,MAAQt9+B,KAAKyyoB,KAAKgoW,GAAO3n/B,KAAKqykB,GACnCrykB,KAAKyq/B,OAAS,GAAMzq/B,KAAKqykB,EAAIrykB,KAAKiJ,EAClCjJ,KAAKmpN,EAAIj8M,KAAK8huB,IAAI,GAAMhvuB,KAAKwq/B,MAAQzU,IAAW7o+B,KAAK06F,IAAI16F,KAAK8huB,IAAI,GAAMhvuB,KAAK62+B,KAAOd,GAAS/1+B,KAAKqykB,GAAKq4a,GAAK1q/B,KAAKiJ,EAAI0++B,GAAM3n/B,KAAKyq/B,UAoChIxO,QAjCK,YAAiBx36B,IACtB,IAAIuy4B,GAAMvy4B,GAAE96D,EACRg+9B,GAAMlj6B,GAAE3Q,EAEZ2Q,UAAE3Q,EAAI,EAAI5mD,KAAKm6uB,KAAKrnvB,KAAKmpN,EAAIj8M,KAAK06F,IAAI16F,KAAK8huB,IAAI,GAAM24P,GAAMoO,GAAS/1+B,KAAKqykB,GAAKq4a,GAAK1q/B,KAAKiJ,EAAIiE,KAAKwkF,IAAIi24B,IAAM3n+B,KAAKyq/B,SAAW9U,EAC3Hlx6B,GAAE96D,EAAI3J,KAAKqykB,EAAI2kY,GACRvy4B,IA4BP8mtB,QAzBK,YAAiB9mtB,IAKtB,QAHIuy4B,GAAMvy4B,GAAE96D,EAAI3J,KAAKqykB,EACjBs1Z,GAAMlj6B,GAAE3Q,EACRtxC,GAAMtV,KAAK06F,IAAI16F,KAAK8huB,IAAI,GAAM24P,GAAMoO,GAAU/1+B,KAAKmpN,EAAG,EAAInpN,KAAKqykB,GAC1D1jkB,GA5BI,GA4BUA,GAAI,IACzBg59B,GAAM,EAAIz69B,KAAKm6uB,KAAK7kuB,GAAMko+B,GAAK1q/B,KAAKiJ,EAAIiE,KAAKwkF,IAAIjtB,GAAE3Q,IAAI,GAAQ9zD,KAAKiJ,IAAM0s+B,IACtEzo+B,KAAKiN,IAAIwt9B,GAAMlj6B,GAAE3Q,GANT,UAIkBnlD,GAK9B81D,GAAE3Q,EAAI6z6B,GAGR,OAAKh59B,IAGL81D,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAJE,MAYT6zU,MALiB,CAAC,UCapBtuR,GAAe,CACbh4D,KAxDK,cACL247B,cAAiB3q/B,MACZA,KAAK0vG,KAGV1vG,KAAK4q/B,MAAQ19+B,KAAKwkF,IAAI1xF,KAAKwq/B,OAC3Bxq/B,KAAK6q/B,MAAQ39+B,KAAK65E,IAAI/mF,KAAKwq/B,OAC3Bxq/B,KAAK8q/B,GAAK,EAAI9q/B,KAAK0vG,GACd1vG,KAAK4sD,QACR5sD,KAAK4sD,MAAQ,uCAgDfqv7B,QA5CK,YAAiBx36B,IACtB,IAAIsm7B,GAAMC,GAAMC,GAAM738B,GACtBqxB,UAAE96D,EAAIuy+B,GAAWz36B,GAAE96D,EAAI3J,KAAKk3+B,OAC5ByT,iBAAoB3q/B,KAAM,CAACykE,KAC3Bsm7B,GAAO79+B,KAAKwkF,IAAIjtB,GAAE3Q,GAClBk37B,GAAO99+B,KAAK65E,IAAItiB,GAAE3Q,GAClBm37B,GAAO/9+B,KAAK65E,IAAItiB,GAAE96D,GAElB86D,GAAE96D,GADFypC,GAAIpzC,KAAK63+B,GAAK73+B,KAAK8q/B,IAAM,EAAI9q/B,KAAK4q/B,MAAQG,GAAO/q/B,KAAK6q/B,MAAQG,GAAOC,KAC3DD,GAAO99+B,KAAKwkF,IAAIjtB,GAAE96D,GAC5B86D,GAAE3Q,EAAI1gB,IAAKpzC,KAAK6q/B,MAAQE,GAAO/q/B,KAAK4q/B,MAAQI,GAAOC,IACnDxm7B,GAAE96D,EAAI3J,KAAKmyB,EAAIsyC,GAAE96D,EAAI3J,KAAKi1E,GAC1BxQ,GAAE3Q,EAAI9zD,KAAKmyB,EAAIsyC,GAAE3Q,EAAI9zD,KAAK20E,GACnBlQ,IAiCP8mtB,QA9BK,YAAiB9mtB,IACtB,IAAIsm7B,GAAMC,GAAMh0C,GAAK2wB,GAAKujB,GAM1B,GALAzm7B,GAAE96D,GAAK86D,GAAE96D,EAAI3J,KAAKi1E,IAAMj1E,KAAKmyB,EAC7BsyC,GAAE3Q,GAAK2Q,GAAE3Q,EAAI9zD,KAAK20E,IAAM30E,KAAKmyB,EAE7BsyC,GAAE96D,GAAK3J,KAAK63+B,GACZpz6B,GAAE3Q,GAAK9zD,KAAK63+B,GACPqT,GAAMh++B,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,GAAK,CAC5C,IAAI7zC,GAAI,EAAI/S,KAAKqkF,MAAM255B,GAAKlr/B,KAAK8q/B,IACjCC,GAAO79+B,KAAKwkF,IAAIzxE,IAChB+q+B,GAAO99+B,KAAK65E,IAAI9mE,IAChB0n9B,GAAMz69B,KAAKyyoB,KAAKqrW,GAAOhr/B,KAAK4q/B,MAAQnm7B,GAAE3Q,EAAIi37B,GAAO/q/B,KAAK6q/B,MAAQK,IAC9Dl0C,GAAM9p8B,KAAKqkF,MAAM9sB,GAAE96D,EAAIoh/B,GAAMG,GAAMlr/B,KAAK6q/B,MAAQG,GAAOvm7B,GAAE3Q,EAAI9zD,KAAK4q/B,MAAQG,SAG1EpjB,GAAM3n+B,KAAKwq/B,MACXxzC,GAAM,EAGRvy4B,UAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACNgjB,iBAAoB3q/B,KAAM,CAACykE,KAC3BA,GAAE96D,EAAIuy+B,GAAWz36B,GAAE96D,EAAI3J,KAAKk3+B,OACrBzy6B,IAQP6zU,MALiB,CAAC,2BAA4B,wBAAyB,sBAAuB,SAAS,oCAAoC,yBC8G7IjxV,GAAe,CACb2K,KA3JK,cACLhyD,KAAKmr/B,QAAUj++B,KAAK65E,IAAI/mF,KAAK62+B,MAC7B72+B,KAAKor/B,QAAUl++B,KAAKwkF,IAAI1xF,KAAK62+B,MAC7B72+B,KAAS+5+B,OACS,IAAZ/5+B,KAAK63+B,KAAa1g+B,MAAMnX,KAAKg3+B,SAAW9p+B,KAAKiN,IAAIna,KAAKmr/B,UAAYvV,IACpE51+B,KAAK63+B,GAAK,IAAO,EAAI515B,GAAKjiF,KAAK62+B,MAAQ3p+B,KAAKwkF,IAAI1xF,KAAKg3+B,WAInD9p+B,KAAKiN,IAAIna,KAAKmr/B,UAAYvV,IAI1B51+B,KAAK07+B,IAHH17+B,KAAK62+B,KAAO,EAGH,GAKA,GAGf72+B,KAAKqr/B,KAAOn++B,KAAKqnF,KAAKrnF,KAAK06F,IAAI,EAAI5nG,KAAKiJ,EAAG,EAAIjJ,KAAKiJ,GAAKiE,KAAK06F,IAAI,EAAI5nG,KAAKiJ,EAAG,EAAIjJ,KAAKiJ,IACvE,IAAZjJ,KAAK63+B,KAAa1g+B,MAAMnX,KAAKg3+B,SAAW9p+B,KAAKiN,IAAIna,KAAKmr/B,UAAYvV,IACpE51+B,KAAK63+B,GAAK,GAAM73+B,KAAKqr/B,KAAOrP,GAAMh8+B,KAAKiJ,EAAGiE,KAAKwkF,IAAI1xF,KAAKg3+B,QAAS9p+B,KAAK65E,IAAI/mF,KAAKg3+B,SAAWmF,GAAMn8+B,KAAKiJ,EAAGjJ,KAAK07+B,IAAM17+B,KAAKg3+B,OAAQh3+B,KAAK07+B,IAAMxu+B,KAAKwkF,IAAI1xF,KAAKg3+B,UAE3Jh3+B,KAAKsr/B,IAAMtP,GAAMh8+B,KAAKiJ,EAAGjJ,KAAKor/B,QAASpr/B,KAAKmr/B,SAC5Cnr/B,KAAKur/B,GAAK,EAAIr++B,KAAKm6uB,KAAKrnvB,KAAKwr/B,MAAMxr/B,KAAK62+B,KAAM72+B,KAAKor/B,QAASpr/B,KAAKiJ,IAAM0s+B,EACvE31+B,KAAKyr/B,MAAQv++B,KAAK65E,IAAI/mF,KAAKur/B,IAC3Bvr/B,KAAK0r/B,MAAQx++B,KAAKwkF,IAAI1xF,KAAKur/B,MAgI7BtP,QA3HK,YAAiBx36B,IACtB,IAII88P,GAAGx5T,GAAG4j/B,GAAMC,GAAMz7H,GAAI3wL,GAJtBw3Q,GAAMvy4B,GAAE96D,EACRg+9B,GAAMlj6B,GAAE3Q,EACR+37B,GAAS3++B,KAAKwkF,IAAIi24B,IAClBmkB,GAAS5++B,KAAK65E,IAAI4g5B,IAElBokB,GAAO7P,GAAWllC,GAAMh38B,KAAKk3+B,OAEjC,OAAIhq+B,KAAKiN,IAAIjN,KAAKiN,IAAI687B,GAAMh38B,KAAKk3+B,OAAShq+B,KAAK45E,KAAO8u5B,GAAS1o+B,KAAKiN,IAAIwt9B,GAAM3n+B,KAAK62+B,OAASjB,GAG1Fnx6B,GAAE96D,EAAImpH,IACNruD,GAAE3Q,EAAIg/D,IACCruD,IAELzkE,KAAK+5+B,QAEPx4qB,GAAI,EAAIvhU,KAAK63+B,IAAM,EAAI73+B,KAAKor/B,QAAUS,GAAS7r/B,KAAKmr/B,QAAUW,GAAS5++B,KAAK65E,IAAIgl6B,KAChFtn7B,GAAE96D,EAAI3J,KAAKmyB,EAAIovS,GAAIuqrB,GAAS5++B,KAAKwkF,IAAIq65B,IAAQ/r/B,KAAKi1E,GAClDxQ,GAAE3Q,EAAI9zD,KAAKmyB,EAAIovS,IAAKvhU,KAAKmr/B,QAAUU,GAAS7r/B,KAAKor/B,QAAUU,GAAS5++B,KAAK65E,IAAIgl6B,KAAS/r/B,KAAK20E,GACpFlQ,KAGP18D,GAAI,EAAImF,KAAKm6uB,KAAKrnvB,KAAKwr/B,MAAM7jB,GAAKkkB,GAAQ7r/B,KAAKiJ,IAAM0s+B,EACrDiW,GAAO1++B,KAAK65E,IAAIh/E,IAChB4j/B,GAAOz++B,KAAKwkF,IAAI3pF,IACZmF,KAAKiN,IAAIna,KAAKmr/B,UAAYvV,GAC5BzlH,GAAKgsH,GAAMn8+B,KAAKiJ,EAAG0+9B,GAAM3n+B,KAAK07+B,IAAK17+B,KAAK07+B,IAAMmQ,IAE9Cpn7B,GAAE96D,EAAI3J,KAAKi1E,IADXuqnB,GAAK,EAAIx/rB,KAAKmyB,EAAInyB,KAAK63+B,GAAK1nH,GAAKnw3B,KAAKqr/B,MACjBn++B,KAAKwkF,IAAIsl3B,GAAMh38B,KAAKk3+B,OACzCzy6B,GAAE3Q,EAAI9zD,KAAK20E,GAAK30E,KAAK07+B,IAAMl8S,GAAKtyrB,KAAK65E,IAAIiw3B,GAAMh38B,KAAKk3+B,OAE7Czy6B,KAEAv3D,KAAKiN,IAAIna,KAAKor/B,SAAWxV,GAGhCr0qB,GAAI,EAAIvhU,KAAKmyB,EAAInyB,KAAK63+B,IAAM,EAAI+T,GAAO1++B,KAAK65E,IAAIgl6B,KAChDtn7B,GAAE3Q,EAAIytQ,GAAIoqrB,KAKVpqrB,GAAI,EAAIvhU,KAAKmyB,EAAInyB,KAAK63+B,GAAK73+B,KAAKsr/B,KAAOtr/B,KAAKyr/B,OAAS,EAAIzr/B,KAAK0r/B,MAAQC,GAAO3r/B,KAAKyr/B,MAAQG,GAAO1++B,KAAK65E,IAAIgl6B,MAC1Gtn7B,GAAE3Q,EAAIytQ,IAAKvhU,KAAKyr/B,MAAQE,GAAO3r/B,KAAK0r/B,MAAQE,GAAO1++B,KAAK65E,IAAIgl6B,KAAS/r/B,KAAK20E,IAE5ElQ,GAAE96D,EAAI43T,GAAIqqrB,GAAO1++B,KAAKwkF,IAAIq65B,IAAQ/r/B,KAAKi1E,GAGlCxQ,MA2EP8mtB,QAvEK,YAAiB9mtB,IACtBA,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GACZ,IAAIqi4B,GAAK2wB,GAAS/nhB,GAAIosiB,GAClBxsT,GAAKtyrB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,GACvC,GAAI9zD,KAAK+5+B,OAAQ,CACf,IAAI959B,GAAI,EAAI/S,KAAKm6uB,KAAK7nD,IAAM,EAAIx/rB,KAAKmyB,EAAInyB,KAAK63+B,KAG9C,OAFA7gC,GAAMh38B,KAAKk3+B,MACXvP,GAAM3n+B,KAAK62+B,KACPr3S,IAAMo2S,GACRnx6B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,KAETkj6B,GAAMz69B,KAAKyyoB,KAAKzyoB,KAAK65E,IAAI9mE,IAAKjgB,KAAKor/B,QAAU3m7B,GAAE3Q,EAAI5mD,KAAKwkF,IAAIzxE,IAAKjgB,KAAKmr/B,QAAU3rT,IAG5Ew3Q,GAFJ9p8B,KAASiN,IAAIna,KAAKmr/B,SAAWvV,EAEnBsG,GADRl8+B,KAAS62+B,KAAO,EACG72+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,GAAG,EAAM86D,GAAE3Q,GAGrC9zD,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,EAAG86D,GAAE3Q,IAI5Coo7B,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,EAAIuD,KAAKwkF,IAAIzxE,IAAIu/qB,GAAKx/rB,KAAKmr/B,QAAUj++B,KAAK65E,IAAI9mE,IAAKwkD,GAAE3Q,EAAI9zD,KAAKor/B,QAAUl++B,KAAKwkF,IAAIzxE,MAE9HwkD,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,OAGHv3D,KAAKiN,IAAIna,KAAKmr/B,UAAYvV,EAAO,CACnC,GAAIp2S,IAAMo2S,EACRjO,UAAM3n+B,KAAK62+B,KAEXpy6B,GAAE96D,EADFqt8B,GAAMh38B,KAAKk3+B,MAEXzy6B,GAAE3Q,EAAI6z6B,GAEClj6B,GAETA,GAAE96D,GAAK3J,KAAK07+B,IACZj36B,GAAE3Q,GAAK9zD,KAAK07+B,IAEZ/T,GAAM3n+B,KAAK07+B,IAAMU,GAAMp8+B,KAAKiJ,EADvBu2rB,GAAKx/rB,KAAKqr/B,MAAQ,EAAIrr/B,KAAKmyB,EAAInyB,KAAK63+B,KAEzC7gC,GAAMh38B,KAAK07+B,IAAMQ,GAAWl8+B,KAAK07+B,IAAM17+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,GAAG,EAAM86D,GAAE3Q,SAG5E8rZ,GAAK,EAAI1yc,KAAKm6uB,KAAK7nD,GAAKx/rB,KAAKyr/B,OAAS,EAAIzr/B,KAAKmyB,EAAInyB,KAAK63+B,GAAK73+B,KAAKsr/B,MAClEt0C,GAAMh38B,KAAKk3+B,MACP13S,IAAMo2S,EACRoW,GAAMhs/B,KAAKur/B,IAGXS,GAAM9++B,KAAKyyoB,KAAKzyoB,KAAK65E,IAAI64X,IAAM5/c,KAAK0r/B,MAAQjn7B,GAAE3Q,EAAI5mD,KAAKwkF,IAAIkuX,IAAM5/c,KAAKyr/B,MAAQjsT,IAC9Ew3Q,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,EAAIuD,KAAKwkF,IAAIkuX,IAAK4/O,GAAKx/rB,KAAKyr/B,MAAQv++B,KAAK65E,IAAI64X,IAAMn7Y,GAAE3Q,EAAI9zD,KAAK0r/B,MAAQx++B,KAAKwkF,IAAIkuX,OAE5H+nhB,IAAM,EAAKyU,GAAMp8+B,KAAKiJ,EAAGiE,KAAK8huB,IAAI,IAAO2mQ,EAAUqW,MAGvDvn7B,UAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GAGClj6B,IASP6zU,MALiB,CAAC,QAAS,2BAA4B,mCAMvDkzmB,MApKK,YAAeS,GAAMzQ,GAAQ0Q,IAClC1Q,WAAU0Q,GACFh/+B,KAAK8huB,IAAI,IAAO2mQ,EAAUsW,KAAS/++B,KAAK06F,KAAK,EAAI4z4B,KAAW,EAAIA,IAAS,GAAM0Q,MCsEzF3g4B,GAAe,CACbv5D,KAzEK,cACL,IAAIm67B,GAAOns/B,KAAK62+B,KAChB72+B,KAAKos/B,QAAUps/B,KAAKk3+B,MACpB,IAAImV,GAAUn/+B,KAAKwkF,IAAIy65B,IACnBG,GAAgBts/B,KAAKmyB,EAErBo69B,GAAa,EADNvs/B,KAAKwjU,GAEZqtqB,GAAK,EAAI0b,GAAar/+B,KAAK06F,IAAI2k5B,GAAY,GAC3Ctj/B,GAAIjJ,KAAKiJ,EAAIiE,KAAKqnF,KAAKs84B,IAC3B7w+B,KAAK2P,EAAI3P,KAAK63+B,GAAKyU,GAAgBp/+B,KAAKqnF,KAAK,EAAIs84B,KAAO,EAAIA,GAAK3j+B,KAAK06F,IAAIyk5B,GAAS,IACnFrs/B,KAAKilC,MAAQ/3B,KAAKqnF,KAAK,EAAIs84B,IAAM,EAAIA,IAAM3j+B,KAAK06F,IAAI16F,KAAK65E,IAAIol6B,IAAO,IACpEns/B,KAAK2vqB,GAAKziqB,KAAKyyoB,KAAK0sW,GAAUrs/B,KAAKilC,OACnC,IAAIi1U,GAAKhtW,KAAK8T,IAAI9T,KAAK8huB,IAAI9huB,KAAK45E,GAAK,EAAI9mF,KAAK2vqB,GAAK,IAC/Cx1T,GAAKjtW,KAAK8T,IAAI9T,KAAK8huB,IAAI9huB,KAAK45E,GAAK,EAAIql6B,GAAO,IAC5CK,GAAKt/+B,KAAK8T,KAAK,EAAI/X,GAAIoj/B,KAAY,EAAIpj/B,GAAIoj/B,KAC/Crs/B,KAAKmpN,EAAI+wJ,GAAKl6W,KAAKilC,MAAQk1U,GAAKn6W,KAAKilC,MAAQh8B,GAAI,EAAIuj/B,IA2DrDvQ,QAxDK,YAAiBx36B,IACtB,IAAIgo7B,GAAMv/+B,KAAK8T,IAAI9T,KAAK8huB,IAAI9huB,KAAK45E,GAAK,EAAIriB,GAAE3Q,EAAI,IAC5C447B,GAAM1s/B,KAAKiJ,EAAI,EAAIiE,KAAK8T,KAAK,EAAIhhB,KAAKiJ,EAAIiE,KAAKwkF,IAAIjtB,GAAE3Q,KAAO,EAAI9zD,KAAKiJ,EAAIiE,KAAKwkF,IAAIjtB,GAAE3Q,KAIpF5hC,GAAI,GAAKhlB,KAAKm6uB,KAAKn6uB,KAAKy4V,KAHnB3lW,KAAKilC,OAASwn9B,GAAMC,IAAO1s/B,KAAKmpN,IAGHj8M,KAAK45E,GAAK,GAG5CrgB,GAAIzmE,KAAKilC,OAASw/B,GAAE96D,EAAI3J,KAAKos/B,SAG7BO,GAAOz/+B,KAAKm6uB,KAAKn6uB,KAAKwkF,IAAIjrB,KAAMv5D,KAAKwkF,IAAI1xF,KAAK2vqB,IAAMziqB,KAAK8huB,IAAI98sB,IAAKhlB,KAAK65E,IAAI/mF,KAAK2vqB,IAAMziqB,KAAK65E,IAAItgB,MAE/Fmm7B,GAAO1/+B,KAAKyyoB,KAAKzyoB,KAAK65E,IAAI/mF,KAAK2vqB,IAAMziqB,KAAKwkF,IAAIx/D,IAAKhlB,KAAKwkF,IAAI1xF,KAAK2vqB,IAAMziqB,KAAK65E,IAAI70D,IAAKhlB,KAAK65E,IAAItgB,KAElGhC,UAAE3Q,EAAI9zD,KAAK2P,EAAI,EAAIzC,KAAK8T,KAAK,EAAI9T,KAAKwkF,IAAIk75B,MAAU,EAAI1/+B,KAAKwkF,IAAIk75B,MAAU5s/B,KAAK20E,GAChFlQ,GAAE96D,EAAI3J,KAAK2P,EAAIg9+B,GAAO3s/B,KAAKi1E,GACpBxQ,IAuCP8mtB,QApCK,YAAiB9mtB,IAgBtB,QAZIko7B,IAHIlo7B,GAAE96D,EAAI3J,KAAKi1E,IAGJj1E,KAAK2P,EAChBi9+B,GAAO,GAAK1/+B,KAAKm6uB,KAAKn6uB,KAAKy4V,KAHvBlhS,GAAE3Q,EAAI9zD,KAAK20E,IAGoB30E,KAAK2P,IAAMzC,KAAK45E,GAAK,GAExD50D,GAAIhlB,KAAKyyoB,KAAKzyoB,KAAK65E,IAAI/mF,KAAK2vqB,IAAMziqB,KAAKwkF,IAAIk75B,IAAQ1/+B,KAAKwkF,IAAI1xF,KAAK2vqB,IAAMziqB,KAAK65E,IAAI6l6B,IAAQ1/+B,KAAK65E,IAAI4l6B,KACjGlm7B,GAAIv5D,KAAKm6uB,KAAKn6uB,KAAKwkF,IAAIi75B,KAASz/+B,KAAK65E,IAAI/mF,KAAK2vqB,IAAMziqB,KAAK65E,IAAI4l6B,IAAQz/+B,KAAKwkF,IAAI1xF,KAAK2vqB,IAAMziqB,KAAK8huB,IAAI49Q,MAElGC,GAAS7s/B,KAAKos/B,QAAU3l7B,GAAIzmE,KAAKilC,MAEjCshC,GAAI,EACJum7B,GAAM569B,GACN669B,IAAU,IACVC,GAAY,EACT9/+B,KAAKiN,IAAI2y+B,GAAMC,IAAW,MAAW,CAC1C,KAAMC,GAAY,GAEhB,OAGFzm7B,GAAI,EAAIvmE,KAAKilC,OAAS/3B,KAAK8T,IAAI9T,KAAK8huB,IAAI9huB,KAAK45E,GAAK,EAAI50D,GAAI,IAAMlyB,KAAKmpN,GAAKnpN,KAAKiJ,EAAIiE,KAAK8T,IAAI9T,KAAK8huB,IAAI9huB,KAAK45E,GAAK,EAAI55E,KAAKyyoB,KAAK3/oB,KAAKiJ,EAAIiE,KAAKwkF,IAAIo75B,KAAQ,IACvJC,GAAUD,GACVA,GAAM,EAAI5/+B,KAAKm6uB,KAAKn6uB,KAAKy4V,IAAIp/R,KAAMr5D,KAAK45E,GAAK,EAG/CriB,UAAE96D,EAAIkj/B,GACNpo7B,GAAE3Q,EAAIg57B,GACCro7B,IAQP6zU,MALiB,CAAC,WC1EpB,IAAI20mB,GAAM,KAsOV,SAAe,CACbj77B,KA3NK,cACL,IAAI0p7B,GAAKwR,GAAKC,GAAQhna,GAAGC,GAAG9vjB,GAAGg8iB,GAAG86a,GAAQ3o7B,GAAGx8D,GAC3Col/B,GAD8C/tV,GAAQ,EAC9CguV,GAAO,EAAGC,GAAO,EAAGC,GAAO,EAAGC,GAAO,EAAGC,GAAO,EAAGC,GAAU,EAItE3t/B,KAAK4t/B,OAhBP,YAAiB1kyB,IACf,IACI2kyB,GAAyC,iBAAjB3kyB,GAAEowxB,WAA0Bzz+B,OAAOrC,KAAK0lN,GAAEowxB,YAAY,GAAKpwxB,GAAEowxB,WAEzF,MAAO,YAAapwxB,IAAK,WAAYA,KAAkD,IAHhE,CAAC,0BAA0B,kDAGSppM,QAAQ+t+B,IAYrDC,CAAQ9t/B,MACtBA,KAAK+t/B,OAAS,WAAY/t/B,KAE1B,IAAIgu/B,IAAM,EACN,UAAWhu/B,OACbgu/B,IAAM,GAGR,IAAIC,IAAM,EAaV,GAZI,yBAA0Bju/B,OAC5Biu/B,IAAM,GAGJD,KACFL,GAAU3t/B,KAAKilC,OAGbgp9B,KACF3uV,GAASt/pB,KAAKu3+B,qBAAuB1B,GAGnCmY,IAAOC,GACTX,GAAOtt/B,KAAKy3+B,cAEZ8V,GAAOvt/B,KAAKo3+B,MACZqW,GAAOzt/B,KAAKkn+B,KACZsmB,GAAOxt/B,KAAKs3+B,MACZoW,GAAO1t/B,KAAKmn+B,KAERj69B,KAAKiN,IAAIsz+B,GAAOC,KAAST,KAAQvR,GAAMxu+B,KAAKiN,IAAIsz+B,MAAUR,IAC1D//+B,KAAKiN,IAAIuh+B,GAAM/F,IAAYsX,IAAO//+B,KAAKiN,IAAIjN,KAAKiN,IAAIna,KAAK62+B,MAAQlB,IAAYsX,IAC7E//+B,KAAKiN,IAAIjN,KAAKiN,IAAIuz+B,IAAQ/X,IAAYsX,GACxC,MAAM,IAAIx2+B,MAId,IAAIy3+B,GAAS,EAAMlu/B,KAAK+7+B,GACxBmR,GAAMhg/B,KAAKqnF,KAAK255B,IAEhBhh/B,KAASiN,IAAIna,KAAK62+B,MAAQjB,GACxBwX,GAASlg/B,KAAKwkF,IAAI1xF,KAAK62+B,MACvBsW,GAASjg/B,KAAK65E,IAAI/mF,KAAK62+B,MACvB6E,GAAM,EAAI17+B,KAAK+7+B,GAAKqR,GAASA,GAC7Bpt/B,KAAK0P,EAAIy9+B,GAASA,GAClBnt/B,KAAK0P,EAAIxC,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,GAAK/7+B,KAAK0P,EAAI1P,KAAK0P,EAAIw++B,IACnDlu/B,KAAKuhU,EAAIvhU,KAAK0P,EAAI1P,KAAK63+B,GAAKqV,GAAMxR,IAElCt1Z,IADAD,GAAInmlB,KAAK0P,EAAIw9+B,IAAOC,GAASjg/B,KAAKqnF,KAAKmn5B,MAC/Bv1Z,GAAG,IAEF,EACPC,GAAI,GAEJA,GAAIl5kB,KAAKqnF,KAAK6xf,IACVpmlB,KAAK62+B,KAAO,IACdzwZ,IAAKA,KAITpmlB,KAAKi4a,EAAImuK,IAAKD,GACdnmlB,KAAKi4a,GAAK/qa,KAAK06F,IAAIu04B,GAAMn8+B,KAAKiJ,EAAGjJ,KAAK62+B,KAAMuW,IAASpt/B,KAAK0P,KAE1D1P,KAAK0P,EAAI,EAAIw9+B,GACblt/B,KAAKuhU,EAAIvhU,KAAK63+B,GACd73+B,KAAKi4a,EAAIkuK,GAAIC,GAAI,GAGf4na,IAAOC,IACLD,IACFX,GAASng/B,KAAKyyoB,KAAKzyoB,KAAKwkF,IAAIi85B,IAAWxna,IAClC8na,KACH3uV,GAAQquV,MAGVN,GAAS/tV,GACTquV,GAAUzg/B,KAAKyyoB,KAAKx5D,GAAIj5kB,KAAKwkF,IAAI275B,MAEnCrt/B,KAAKmu/B,KAAOb,GAAOpg/B,KAAKyyoB,KAAK,IAAOv5D,GAAI,EAAIA,IAAKl5kB,KAAK8huB,IAAIq+Q,KAAWrt/B,KAAK0P,IAE1E4mB,GAAIppB,KAAK06F,IAAIu04B,GAAMn8+B,KAAKiJ,EAAGwk/B,GAAMvg/B,KAAKwkF,IAAI+75B,KAAQzt/B,KAAK0P,GACvD4ikB,GAAIplkB,KAAK06F,IAAIu04B,GAAMn8+B,KAAKiJ,EAAGyk/B,GAAMxg/B,KAAKwkF,IAAIg85B,KAAQ1t/B,KAAK0P,GACvD02kB,GAAIpmlB,KAAKi4a,EAAI3hZ,GACbmuC,IAAK6tgB,GAAIh8iB,KAAMg8iB,GAAIh8iB,IAEnBruB,KADAA,GAAIjI,KAAKi4a,EAAIj4a,KAAKi4a,GACTq6J,GAAIh8iB,KAAMruB,GAAIqqkB,GAAIh8iB,KAC3Bol9B,GAAM6R,GAAOC,KAEFtg/B,KAAK49G,GACd0i4B,IAAOxX,EACE0F,GAAMxu+B,KAAK49G,KACpB0i4B,IAAQxX,GAGVh2+B,KAAKmu/B,KAAOjS,GAAW,IAAOqR,GAAOC,IAAQtg/B,KAAKm6uB,KAAKp/uB,GAAIiF,KAAK8huB,IAAI,GAAMhvuB,KAAK0P,GAAK69+B,GAAOC,KAAS/o7B,IAAKzkE,KAAK0P,GAC9G29+B,GAASng/B,KAAKm6uB,KAAK,EAAIn6uB,KAAKwkF,IAAI1xF,KAAK0P,EAAIws+B,GAAWqR,GAAOvt/B,KAAKmu/B,QAAU/na,GAAI,EAAIA,KAClFk5E,GAAQquV,GAAUzg/B,KAAKyyoB,KAAKx5D,GAAIj5kB,KAAKwkF,IAAI275B,MAG3Crt/B,KAAKou/B,OAASlh/B,KAAKwkF,IAAI275B,IACvBrt/B,KAAKqu/B,OAASnh/B,KAAK65E,IAAIsm6B,IACvBrt/B,KAAKsu/B,OAASph/B,KAAKwkF,IAAI4tkB,IACvBt/pB,KAAKuu/B,OAASrh/B,KAAK65E,IAAIu4kB,IAEvBt/pB,KAAKwu/B,GAAK,EAAIxu/B,KAAK0P,EACnB1P,KAAKyu/B,IAAMzu/B,KAAKuhU,EAAIvhU,KAAKwu/B,GACzBxu/B,KAAK0u/B,IAAM,EAAI1u/B,KAAKyu/B,IAGpBzu/B,KAAS4t/B,OACP5t/B,KAAK2u/B,IAAM,GAEX3u/B,KAAK2u/B,IAAMzh/B,KAAKiN,IAAIna,KAAKyu/B,IAAMvh/B,KAAKm6uB,KAAKn6uB,KAAKqnF,KAAK4xf,GAAIA,GAAI,GAAKj5kB,KAAK65E,IAAI4m6B,MAErE3t/B,KAAK62+B,KAAO,IACd72+B,KAAK2u/B,KAAQ3u/B,KAAK2u/B,MAItBvoa,GAAI,GAAMina,GACVrt/B,KAAK4u/B,SAAW5u/B,KAAKyu/B,IAAMvh/B,KAAK8T,IAAI9T,KAAK8huB,IAAI+mQ,EAAS3vZ,KACtDpmlB,KAAK6u/B,SAAW7u/B,KAAKyu/B,IAAMvh/B,KAAK8T,IAAI9T,KAAK8huB,IAAI+mQ,EAAS3vZ,MA+FtD61Z,QAzFK,YAAiBx36B,IACtB,IACI8B,GAAG8/gB,GAAG9iK,GAAGzxa,GAAG6tc,GAAGjE,GAAM7uZ,GAAGrmD,GADxBqyE,GAAS,GAIb,GAFApU,GAAE96D,EAAI86D,GAAE96D,EAAI3J,KAAKmu/B,KAEbjh/B,KAAKiN,IAAIjN,KAAKiN,IAAIsqD,GAAE3Q,GAAK6h7B,GAAWC,EAAO,CAS7C,GALArv6B,GAAI,KAHJo5Y,GAAI3/c,KAAKi4a,EAAI/qa,KAAK06F,IAAIu04B,GAAMn8+B,KAAKiJ,EAAGw7D,GAAE3Q,EAAG5mD,KAAKwkF,IAAIjtB,GAAE3Q,IAAK9zD,KAAK0P,KAE9Dgsc,GAAO,EAAIiE,KAEX0mI,GAAI,IAAO1mI,GAAIjE,IACf5pc,GAAI5E,KAAKwkF,IAAI1xF,KAAK0P,EAAI+0D,GAAE96D,GACxB45a,IAAKh9W,GAAIvmE,KAAKou/B,OAASt8+B,GAAI9R,KAAKqu/B,QAAUhoa,GAEtCn5kB,KAAKiN,IAAIjN,KAAKiN,IAAIopa,IAAK,GAAOqyjB,EAChC,MAAM,IAAIn/9B,MAGZjQ,GAAI,GAAMxG,KAAKyu/B,IAAMvh/B,KAAK8T,KAAK,EAAIuia,KAAI,EAAIA,KAC3Cm4B,GAAOxuc,KAAK65E,IAAI/mF,KAAK0P,EAAI+0D,GAAE96D,GAGzBkjD,GADF3/C,KAASiN,IAAIuhc,IAAQuxiB,GACfjt/B,KAAKuhU,EAAI98P,GAAE96D,EAEX3J,KAAKyu/B,IAAMvh/B,KAAKqkF,MAAOhrB,GAAIvmE,KAAKqu/B,OAASv8+B,GAAI9R,KAAKou/B,OAAS1yiB,SAGjEl1c,GAAIi+D,GAAE3Q,EAAI,EAAI9zD,KAAK4u/B,SAAW5u/B,KAAK6u/B,SACnChi8B,GAAI7sD,KAAKyu/B,IAAMhq7B,GAAE3Q,EAGnB,OAAI9zD,KAAK+t/B,QACPl16B,GAAOlvE,EAAIkjD,GACXgsB,GAAO/kB,EAAIttD,KAGXqyE,GAAOlvE,EAAInD,GAAIxG,KAAKuu/B,QADpB1h8B,IAAK7sD,KAAK2u/B,KACuB3u/B,KAAKsu/B,OACtCz16B,GAAO/kB,EAAIjH,GAAI7sD,KAAKuu/B,OAAS/n/B,GAAIxG,KAAKsu/B,QAGxCz16B,GAAOlvE,EAAK3J,KAAKmyB,EAAI0mD,GAAOlvE,EAAI3J,KAAKi1E,GACrC4D,GAAO/kB,EAAK9zD,KAAKmyB,EAAI0mD,GAAO/kB,EAAI9zD,KAAK20E,GAE9BkE,IA+CP0ysB,QA5CK,YAAiB9mtB,IACtB,IAAI5X,GAAGrmD,GAAGso/B,GAAIC,GAAIC,GAAIC,GAAIp6lB,GACtBh8U,GAAS,GAmBb,GAjBApU,GAAE96D,EAAuB,EAAM3J,KAAKmyB,GAA7BsyC,GAAE96D,EAAI3J,KAAKi1E,IAClBxQ,GAAE3Q,EAAuB,EAAM9zD,KAAKmyB,GAA7BsyC,GAAE3Q,EAAI9zD,KAAK20E,IAEd30E,KAAK+t/B,QACPvn/B,GAAIi+D,GAAE3Q,EACNjH,GAAI4X,GAAE96D,IAENnD,GAAIi+D,GAAE96D,EAAI3J,KAAKuu/B,OAAS9p7B,GAAE3Q,EAAI9zD,KAAKsu/B,OACnCzh8B,GAAI4X,GAAE3Q,EAAI9zD,KAAKuu/B,OAAS9p7B,GAAE96D,EAAI3J,KAAKsu/B,OAAStu/B,KAAK2u/B,KAInDI,GAAK,KADLD,GAAK5h/B,KAAKy4V,KAAK3lW,KAAK0u/B,IAAMlo/B,KACT,EAAIso/B,IACrBE,GAAK,IAAOF,GAAK,EAAIA,IAErBj6lB,KADAo6lB,GAAK/h/B,KAAKwkF,IAAI1xF,KAAK0u/B,IAAM7h8B,KACd7sD,KAAKqu/B,OAASU,GAAK/u/B,KAAKou/B,QAAUY,GAEzC9h/B,KAAKiN,IAAIjN,KAAKiN,IAAI06Y,IAAM,GAAK+glB,EAC/B/85B,GAAOlvE,EAAI,EACXkvE,GAAO/kB,EAAI+gW,GAAK,GAAK8glB,EAAUA,MAC1B,CAIL,GAHA985B,GAAO/kB,EAAI9zD,KAAKi4a,EAAI/qa,KAAKqnF,MAAM,EAAIsgU,KAAO,EAAIA,KAC9Ch8U,GAAO/kB,EAAIso7B,GAAMp8+B,KAAKiJ,EAAGiE,KAAK06F,IAAI/uB,GAAO/kB,EAAG,EAAI9zD,KAAK0P,IAEjDmpE,GAAO/kB,IAAMy+D,IACf,MAAM,IAAI97G,MAGZoiE,GAAOlvE,GAAK3J,KAAKwu/B,GAAKth/B,KAAKqkF,MAAOw95B,GAAK/u/B,KAAKqu/B,OAASY,GAAKjv/B,KAAKou/B,OAASlh/B,KAAK65E,IAAI/mF,KAAK0u/B,IAAM7h8B,KAG9FgsB,UAAOlvE,GAAK3J,KAAKmu/B,KAEVt16B,IAQPy/T,MALiB,CAAC,0BAA2B,0BAA2B,iDAAkD,mDAAoD,yCAA0C,mBAAoB,UC5F9OmxO,GAAe,CACbz3jB,KAzIK,cAuBL,GATKhyD,KAAKmn+B,OACRnn+B,KAAKmn+B,KAAOnn+B,KAAKkn+B,MAEdln+B,KAAK63+B,KACR73+B,KAAK63+B,GAAK,GAEZ73+B,KAAKi1E,GAAKj1E,KAAKi1E,IAAM,EACrBj1E,KAAK20E,GAAK30E,KAAK20E,IAAM,IAEjBznE,KAAKiN,IAAIna,KAAKkn+B,KAAOln+B,KAAKmn+B,MAAQyO,GAItC,KAAIl6hB,GAAO17c,KAAKkyB,EAAIlyB,KAAKmyB,EACzBnyB,KAAKiJ,EAAIiE,KAAKqnF,KAAK,EAAImnX,GAAOA,IAE9B,IAAIwziB,GAAOhi/B,KAAKwkF,IAAI1xF,KAAKkn+B,MACrBioB,GAAOji/B,KAAK65E,IAAI/mF,KAAKkn+B,MACrBokB,GAAMtP,GAAMh8+B,KAAKiJ,EAAGim/B,GAAMC,IAC1BC,GAAMjT,GAAMn8+B,KAAKiJ,EAAGjJ,KAAKkn+B,KAAMgoB,IAE/BG,GAAOni/B,KAAKwkF,IAAI1xF,KAAKmn+B,MACrBmoB,GAAOpi/B,KAAK65E,IAAI/mF,KAAKmn+B,MACrBooB,GAAMvT,GAAMh8+B,KAAKiJ,EAAGom/B,GAAMC,IAC1BE,GAAMrT,GAAMn8+B,KAAKiJ,EAAGjJ,KAAKmn+B,KAAMkoB,IAE/BI,GAAMtT,GAAMn8+B,KAAKiJ,EAAGjJ,KAAK62+B,KAAM3p+B,KAAKwkF,IAAI1xF,KAAK62+B,OAG/C72+B,KAAKm7W,GADHjuW,KAAKiN,IAAIna,KAAKkn+B,KAAOln+B,KAAKmn+B,MAAQyO,EAC1B1o+B,KAAK8T,IAAIsq+B,GAAMiE,IAAOri/B,KAAK8T,IAAIou+B,GAAMI,IAGrCN,GAER/3+B,MAAMnX,KAAKm7W,MACbn7W,KAAKm7W,GAAK+zoB,IAEZlv/B,KAAK0v/B,GAAKpE,IAAOtr/B,KAAKm7W,GAAKjuW,KAAK06F,IAAIwn5B,GAAKpv/B,KAAKm7W,KAC9Cn7W,KAAKw/rB,GAAKx/rB,KAAKmyB,EAAInyB,KAAK0v/B,GAAKxi/B,KAAK06F,IAAI6n5B,GAAKzv/B,KAAKm7W,IAC3Cn7W,KAAK4sD,QACR5sD,KAAK4sD,MAAQ,6BAoFfqv7B,QA9EK,YAAiBx36B,IAEtB,IAAIuy4B,GAAMvy4B,GAAE96D,EACRg+9B,GAAMlj6B,GAAE3Q,EAGR5mD,KAAKiN,IAAI,EAAIjN,KAAKiN,IAAIwt9B,IAAOz69B,KAAK45E,KAAO8u5B,IAC3CjO,GAAM1l5B,GAAK0l5B,KAAQgO,EAAU,EAAIC,IAGnC,IACIzlH,GAAIw/H,GADJjU,GAAMxu+B,KAAKiN,IAAIjN,KAAKiN,IAAIwt9B,IAAOgO,GAEnC,GAAI+F,GAAM9F,EACRzlH,GAAKgsH,GAAMn8+B,KAAKiJ,EAAG0+9B,GAAKz69B,KAAKwkF,IAAIi24B,KACjCgoB,GAAM3v/B,KAAKmyB,EAAInyB,KAAK0v/B,GAAKxi/B,KAAK06F,IAAIuoxB,GAAInw3B,KAAKm7W,QAExC,CAEH,IADAugoB,GAAM/T,GAAM3n+B,KAAKm7W,KACN,EACT,OAAO,KAETw0oB,GAAM,EAER,IAAIpq3B,GAAQvlI,KAAKm7W,GAAK+goB,GAAWllC,GAAMh38B,KAAKk3+B,OAC5Czy6B,UAAE96D,EAAI3J,KAAK63+B,IAAM8X,GAAMzi/B,KAAKwkF,IAAI6zC,KAAUvlI,KAAKi1E,GAC/CxQ,GAAE3Q,EAAI9zD,KAAK63+B,IAAM73+B,KAAKw/rB,GAAKmwT,GAAMzi/B,KAAK65E,IAAIw+C,KAAUvlI,KAAK20E,GAElDlQ,IAoDP8mtB,QA/CK,YAAiB9mtB,IAEtB,IAAIkr7B,GAAKjU,GAAKvrH,GACVw3G,GAAK3wB,GACLrt8B,IAAK86D,GAAE96D,EAAI3J,KAAKi1E,IAAMj1E,KAAK63+B,GAC3B/j7B,GAAK9zD,KAAKw/rB,IAAM/6nB,GAAE3Q,EAAI9zD,KAAK20E,IAAM30E,KAAK63+B,GACtC73+B,KAAKm7W,GAAK,GACZw0oB,GAAMzi/B,KAAKqnF,KAAK5qF,GAAIA,GAAImqD,GAAIA,IAC5B4n7B,GAAM,IAGNiU,IAAOzi/B,KAAKqnF,KAAK5qF,GAAIA,GAAImqD,GAAIA,IAC7B4n7B,IAAM,GAER,IAAIn22B,GAAQ,EAIZ,GAHY,IAARoq3B,KACFpq3B,GAAQr4H,KAAKqkF,MAAOmq5B,GAAM/x+B,GAAK+x+B,GAAM5n7B,KAE1B,IAAR677B,IAAe3v/B,KAAKm7W,GAAK,GAI5B,GAHAugoB,GAAM,EAAI17+B,KAAKm7W,GACfg1gB,GAAKjj3B,KAAK06F,IAAK+n5B,IAAO3v/B,KAAKmyB,EAAInyB,KAAK0v/B,IAAMhU,KAE9B,QADZ/T,GAAMyU,GAAMp8+B,KAAKiJ,EAAGkn3B,KAElB,OAAO,UAITw3G,IAAOgO,EAET3+B,UAAMklC,GAAW322B,GAAQvlI,KAAKm7W,GAAKn7W,KAAKk3+B,OAExCzy6B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAeP6zU,MAZiB,CACjB,gDACA,0BACA,8BACA,8BACA,QCvCFrmE,GAAe,CACbjgR,KAnGK,cACLhyD,KAAKmyB,EAAI,YACTnyB,KAAK+7+B,GAAK,iBACV/7+B,KAAKiJ,EAAIiE,KAAKqnF,KAAKv0F,KAAK+7+B,IACnB/7+B,KAAK62+B,OACR72+B,KAAK62+B,KAAO,kBAET72+B,KAAKk3+B,QACRl3+B,KAAKk3+B,MAAQ,mBAGVl3+B,KAAK63+B,KACR73+B,KAAK63+B,GAAK,OAEZ73+B,KAAK4v/B,IAAM,iBACX5v/B,KAAK6v/B,IAAM,EAAI7v/B,KAAK4v/B,IACpB5v/B,KAAK8v/B,IAAM9v/B,KAAK62+B,KAChB72+B,KAAK6w+B,GAAK7w+B,KAAK+7+B,GACf/7+B,KAAKiJ,EAAIiE,KAAKqnF,KAAKv0F,KAAK6w+B,IACxB7w+B,KAAK+v/B,KAAO7i/B,KAAKqnF,KAAK,EAAKv0F,KAAK6w+B,GAAK3j+B,KAAK06F,IAAI16F,KAAK65E,IAAI/mF,KAAK8v/B,KAAM,IAAO,EAAI9v/B,KAAK6w+B,KAClF7w+B,KAAKgw/B,GAAK,iBACVhw/B,KAAKqh+B,GAAKn09B,KAAKyyoB,KAAKzyoB,KAAKwkF,IAAI1xF,KAAK8v/B,KAAO9v/B,KAAK+v/B,MAC9C/v/B,KAAKwvD,EAAItiD,KAAK06F,KAAK,EAAI5nG,KAAKiJ,EAAIiE,KAAKwkF,IAAI1xF,KAAK8v/B,OAAS,EAAI9v/B,KAAKiJ,EAAIiE,KAAKwkF,IAAI1xF,KAAK8v/B,MAAO9v/B,KAAK+v/B,KAAO/v/B,KAAKiJ,EAAI,GAC9GjJ,KAAKozC,EAAIlmC,KAAK8huB,IAAIhvuB,KAAKqh+B,GAAK,EAAIrh+B,KAAK4v/B,KAAO1i/B,KAAK06F,IAAI16F,KAAK8huB,IAAIhvuB,KAAK8v/B,IAAM,EAAI9v/B,KAAK4v/B,KAAM5v/B,KAAK+v/B,MAAQ/v/B,KAAKwvD,EAC1GxvD,KAAKk6W,GAAKl6W,KAAK63+B,GACf73+B,KAAKiw/B,GAAKjw/B,KAAKmyB,EAAIjlB,KAAKqnF,KAAK,EAAIv0F,KAAK6w+B,KAAO,EAAI7w+B,KAAK6w+B,GAAK3j+B,KAAK06F,IAAI16F,KAAKwkF,IAAI1xF,KAAK8v/B,KAAM,IACxF9v/B,KAAKuqwB,GAAK,iBACVvqwB,KAAK8N,EAAIZ,KAAKwkF,IAAI1xF,KAAKuqwB,IACvBvqwB,KAAKkw/B,IAAMlw/B,KAAKk6W,GAAKl6W,KAAKiw/B,GAAK/i/B,KAAK8huB,IAAIhvuB,KAAKuqwB,IAC7CvqwB,KAAKmw/B,GAAKnw/B,KAAK6v/B,IAAM7v/B,KAAKgw/B,IAuE1B/T,QAjEK,YAAiBx36B,IACtB,IAAI2r7B,GAAKvj8B,GAAGwj8B,GAAQxp/B,GAAG2E,GAAG8k/B,GAAK1ja,GAE3B+6Y,GAAMlj6B,GAAE3Q,EACRk07B,GAAY9L,GAFNz36B,GAAE96D,EAEqB3J,KAAKk3+B,OAEtCkZ,UAAMlj/B,KAAK06F,KAAM,EAAI5nG,KAAKiJ,EAAIiE,KAAKwkF,IAAIi24B,MAAS,EAAI3n+B,KAAKiJ,EAAIiE,KAAKwkF,IAAIi24B,KAAS3n+B,KAAK+v/B,KAAO/v/B,KAAKiJ,EAAI,GACpG4jD,GAAI,GAAK3/C,KAAKm6uB,KAAKrnvB,KAAKozC,EAAIlmC,KAAK06F,IAAI16F,KAAK8huB,IAAI24P,GAAM,EAAI3n+B,KAAK4v/B,KAAM5v/B,KAAK+v/B,MAAQK,IAAOpw/B,KAAK4v/B,KAC5FS,IAAUrI,GAAYho/B,KAAK+v/B,KAC3Blp/B,GAAIqG,KAAKyyoB,KAAKzyoB,KAAK65E,IAAI/mF,KAAKmw/B,IAAMjj/B,KAAKwkF,IAAI7kC,IAAK3/C,KAAKwkF,IAAI1xF,KAAKmw/B,IAAMjj/B,KAAK65E,IAAIl6B,IAAK3/C,KAAK65E,IAAIsp6B,KAC3F7k/B,GAAI0B,KAAKyyoB,KAAKzyoB,KAAK65E,IAAIl6B,IAAK3/C,KAAKwkF,IAAI2+5B,IAAUnj/B,KAAK65E,IAAIlgF,KACxDyp/B,GAAMtw/B,KAAK8N,EAAItC,GACfohlB,GAAK5slB,KAAKkw/B,IAAMhj/B,KAAK06F,IAAI16F,KAAK8huB,IAAIhvuB,KAAKuqwB,GAAK,EAAIvqwB,KAAK4v/B,KAAM5v/B,KAAK8N,GAAKZ,KAAK06F,IAAI16F,KAAK8huB,IAAInouB,GAAI,EAAI7G,KAAK4v/B,KAAM5v/B,KAAK8N,GAC/G22D,GAAE3Q,EAAI84hB,GAAK1/kB,KAAK65E,IAAIup6B,IAAO,EAC3B7r7B,GAAE96D,EAAIijlB,GAAK1/kB,KAAKwkF,IAAI4+5B,IAAO,EAEtBtw/B,KAAKuw/B,QACR9r7B,GAAE3Q,IAAK,EACP2Q,GAAE96D,IAAK,GAED86D,IA8CR8mtB,QA1CK,YAAiB9mtB,IACtB,IAAI5X,GAAGwj8B,GAAQxp/B,GAAG2E,GAAQohlB,GAAI4ja,GAC1Btp+B,GAIAtW,GAAM6zD,GAAE96D,EACZ86D,GAAE96D,EAAI86D,GAAE3Q,EACR2Q,GAAE3Q,EAAIljD,GACD5Q,KAAKuw/B,QACR9r7B,GAAE3Q,IAAK,EACP2Q,GAAE96D,IAAK,GAETijlB,GAAK1/kB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,GAEnCtoD,GADM0B,KAAKqkF,MAAM9sB,GAAE3Q,EAAG2Q,GAAE96D,GACduD,KAAKwkF,IAAI1xF,KAAKuqwB,IACxB1jwB,GAAI,GAAKqG,KAAKm6uB,KAAKn6uB,KAAK06F,IAAI5nG,KAAKkw/B,IAAMtja,GAAI,EAAI5slB,KAAK8N,GAAKZ,KAAK8huB,IAAIhvuB,KAAKuqwB,GAAK,EAAIvqwB,KAAK4v/B,MAAQ5v/B,KAAK4v/B,KAClG/i8B,GAAI3/C,KAAKyyoB,KAAKzyoB,KAAK65E,IAAI/mF,KAAKmw/B,IAAMjj/B,KAAKwkF,IAAI7qF,IAAKqG,KAAKwkF,IAAI1xF,KAAKmw/B,IAAMjj/B,KAAK65E,IAAIlgF,IAAKqG,KAAK65E,IAAIv7E,KAC3F6k/B,GAASnj/B,KAAKyyoB,KAAKzyoB,KAAK65E,IAAIlgF,IAAKqG,KAAKwkF,IAAIlmF,IAAK0B,KAAK65E,IAAIl6B,KACxD4X,GAAE96D,EAAI3J,KAAKk3+B,MAAQmZ,GAASrw/B,KAAK+v/B,KACjCS,GAAM3j8B,GACN3lC,GAAK,EACL,IAAIi59B,GAAO,EACX,GACE176B,GAAE3Q,EAAI,GAAK5mD,KAAKm6uB,KAAKn6uB,KAAK06F,IAAI5nG,KAAKozC,GAAG,EAAMpzC,KAAK+v/B,MAAQ7i/B,KAAK06F,IAAI16F,KAAK8huB,IAAInirB,GAAI,EAAI7sD,KAAK4v/B,KAAM,EAAI5v/B,KAAK+v/B,MAAQ7i/B,KAAK06F,KAAK,EAAI5nG,KAAKiJ,EAAIiE,KAAKwkF,IAAI8+5B,MAAS,EAAIxw/B,KAAKiJ,EAAIiE,KAAKwkF,IAAI8+5B,KAAOxw/B,KAAKiJ,EAAI,IAAMjJ,KAAK4v/B,KACrM1i/B,KAAKiN,IAAIq2+B,GAAM/r7B,GAAE3Q,GAAK,QACxB5sC,GAAK,GAEPsp+B,GAAM/r7B,GAAE3Q,EACRqs7B,IAAQ,QACM,IAAPj59B,IAAYi59B,GAAO,IAC5B,OAAIA,IAAQ,GACH,KAGD176B,IAQR6zU,MALiB,CAAC,SAAU,WCnGf,YAAS/8S,GAAIE,GAAIo14B,GAAI4f,GAAI9U,IACtC,OAAQpg5B,GAAKog5B,GAAMlg5B,GAAKvuF,KAAKwkF,IAAI,EAAIiq5B,IAAO9K,GAAK3j+B,KAAKwkF,IAAI,EAAIiq5B,IAAO8U,GAAKvj/B,KAAKwkF,IAAI,EAAIiq5B,ICD1E,YAAShy+B,IACtB,OAAQ,EAAI,IAAOA,IAAK,EAAIA,GAAI,IAAM,EAAI,KAAOA,KCDpC,YAASA,IACtB,MAAQ,KAAQA,IAAK,EAAI,IAAOA,IAAK,EAAI,OAAUA,KCDtC,YAASA,IACtB,MAAQ,UAAaA,GAAIA,IAAK,EAAI,IAAOA,ICD5B,YAASA,IACtB,OAAQA,GAAIA,GAAIA,IAAK,GAAK,MCDb,YAASwoB,GAAGlpB,GAAGuy+B,IAC5B,IAAI9/hB,GAAOzyc,GAAIuy+B,GACf,OAAOrp9B,GAAIjlB,KAAKqnF,KAAK,EAAImnX,GAAOA,ICCnB,YAAS/xc,IACtB,OAAQuD,KAAKiN,IAAIxQ,IAAKgs+B,EAAWhs+B,GAAKA,GAAKs4E,GAAKt4E,IAAKuD,KAAK45E,GCJ7C,YAAS1wE,GAAImlF,GAAIE,GAAIo14B,GAAI4f,IACtC,IAAI9U,GACAC,GAEJD,GAAMvl+B,GAAKmlF,GACX,QAAS5sF,GAAI,EAAGA,GAAI,GAAIA,KAGtB,GADAgt+B,IADAC,IAAQxl+B,IAAMmlF,GAAKog5B,GAAMlg5B,GAAKvuF,KAAKwkF,IAAI,EAAIiq5B,IAAO9K,GAAK3j+B,KAAKwkF,IAAI,EAAIiq5B,IAAO8U,GAAKvj/B,KAAKwkF,IAAI,EAAIiq5B,OAAUpg5B,GAAK,EAAIE,GAAKvuF,KAAK65E,IAAI,EAAI405B,IAAO,EAAI9K,GAAK3j+B,KAAK65E,IAAI,EAAI405B,IAAO,EAAI8U,GAAKvj/B,KAAK65E,IAAI,EAAI405B,KAExLzu+B,KAAKiN,IAAIyh+B,KAAS,MACpB,OAAOD,GAKX,OAAO7o3B,ICwFT,SAAe,CACb9gE,KA5FK,cACAhyD,KAAK+5+B,SACR/5+B,KAAKu7F,GAAKm15B,GAAK1w/B,KAAK+7+B,IACpB/7+B,KAAKy7F,GAAKk15B,GAAK3w/B,KAAK+7+B,IACpB/7+B,KAAK6w+B,GAAK+f,GAAK5w/B,KAAK+7+B,IACpB/7+B,KAAKyw/B,GAAKI,GAAK7w/B,KAAK+7+B,IACpB/7+B,KAAK+n/B,IAAM/n/B,KAAKmyB,EAAI2+9B,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAIzw/B,KAAK62+B,QAuFpEoF,QAjFK,YAAiBx36B,IAItB,IAAI96D,GAAGmqD,GACHi97B,GAAMts7B,GAAE96D,EACRgy+B,GAAMl36B,GAAE3Q,EAGZ,GAFAi97B,GAAM7U,GAAW6U,GAAM/w/B,KAAKk3+B,OAExBl3+B,KAAK+5+B,OACPpw+B,GAAI3J,KAAKmyB,EAAIjlB,KAAKyyoB,KAAKzyoB,KAAK65E,IAAI405B,IAAOzu+B,KAAKwkF,IAAIq/5B,KAChDj97B,GAAI9zD,KAAKmyB,GAAKjlB,KAAKqkF,MAAMrkF,KAAK8huB,IAAI2sQ,IAAMzu+B,KAAK65E,IAAIgq6B,KAAQ/w/B,KAAK62+B,UAE3D,CAEH,IAAI2E,GAAStu+B,KAAKwkF,IAAIiq5B,IAClBF,GAASvu+B,KAAK65E,IAAI405B,IAClBqV,GAAKC,GAAGjx/B,KAAKmyB,EAAGnyB,KAAKiJ,EAAGuy+B,IACxB/qoB,GAAKvjW,KAAK8huB,IAAI2sQ,IAAOzu+B,KAAK8huB,IAAI2sQ,IAC9Bnx3B,GAAKum4B,GAAM7j/B,KAAK65E,IAAI405B,IACpBuV,GAAM1m4B,GAAKA,GACXH,GAAKrqH,KAAK+7+B,GAAKN,GAASA,IAAU,EAAIz7+B,KAAK+7+B,IAG/Cpy+B,GAAIqn/B,GAAKxm4B,IAAM,EAAI0m4B,GAAMzgpB,IAAM,EAAI,GAAK,EAAIA,GAAK,EAAIpmP,IAAM6m4B,GAAM,MACjEp97B,GAHS9zD,KAAKmyB,EAAI2+9B,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAI9U,IAGlD37+B,KAAK+n/B,IAAMiJ,GAAKxV,GAASC,GAASyV,IAAO,IAAO,EAAIzgpB,GAAK,EAAIpmP,IAAM6m4B,GAAM,IAKpFzs7B,UAAE96D,EAAIA,GAAI3J,KAAKi1E,GACfxQ,GAAE3Q,EAAIA,GAAI9zD,KAAK20E,GACRlQ,IAkDP8mtB,QA7CK,YAAiB9mtB,IACtBA,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GACZ,IAEIgn6B,GAAKoV,GAFLpn/B,GAAI86D,GAAE96D,EAAI3J,KAAKmyB,EACf2hC,GAAI2Q,GAAE3Q,EAAI9zD,KAAKmyB,EAGnB,GAAInyB,KAAK+5+B,OAAQ,CACf,IAAI71N,GAAKpwtB,GAAI9zD,KAAK62+B,KAClB8E,GAAMzu+B,KAAKyyoB,KAAKzyoB,KAAKwkF,IAAIwyrB,IAAMh3wB,KAAK65E,IAAIp9E,KACxCon/B,GAAM7j/B,KAAKqkF,MAAMrkF,KAAK8huB,IAAIrluB,IAAIuD,KAAK65E,IAAIm9rB,SAEpC,CAEH,IACIupO,GAAO0D,GADDnx/B,KAAK+n/B,IAAM/n/B,KAAKmyB,EAAI2hC,GACR9zD,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,IACtD,GAAIvj/B,KAAKiN,IAAIjN,KAAKiN,IAAIsz+B,IAAQ9X,IAAYC,EACxCnx6B,UAAE96D,EAAI3J,KAAKk3+B,MACXzy6B,GAAE3Q,EAAI6h7B,EACF7h7B,GAAI,IACN2Q,GAAE3Q,IAAK,GAEF2Q,GAET,IAAI2s7B,GAAMH,GAAGjx/B,KAAKmyB,EAAGnyB,KAAKiJ,EAAGiE,KAAKwkF,IAAI+75B,KAElC4D,GAAMD,GAAMA,GAAMA,GAAMpx/B,KAAKmyB,EAAInyB,KAAKmyB,GAAK,EAAInyB,KAAK+7+B,IACpDuV,GAAMpk/B,KAAK06F,IAAI16F,KAAK8huB,IAAIy+Q,IAAO,GAC/BtpO,GAAKx6wB,GAAI3J,KAAKmyB,EAAIi/9B,GAClBG,GAAMptO,GAAKA,GACfw3N,GAAM8R,GAAO2D,GAAMlk/B,KAAK8huB,IAAIy+Q,IAAQ4D,GAAMltO,GAAKA,IAAM,IAAO,EAAI,EAAImtO,IAAOntO,GAAKA,GAAK,IACrF4sO,GAAM5sO,IAAM,EAAIotO,IAAOD,GAAM,GAAK,EAAI,EAAIA,IAAOA,GAAMC,GAAM,KAAOrk/B,KAAK65E,IAAI0m6B,IAI/Ehp7B,UAAE96D,EAAIuy+B,GAAW6U,GAAM/w/B,KAAKk3+B,OAC5Bzy6B,GAAE3Q,EAAI097B,GAAW7V,IACVl36B,IASP6zU,MALiB,CAAC,UAAW,kBAAmB,SCrGnC,YAASijmB,GAAQC,IAC9B,IAAIE,GACJ,OAAIH,GAAS,MAEF,EAAIA,GAASA,KAAWC,IAAU,GAD3CE,GAAMH,GAASC,IACsCE,IAAQ,GAAMH,GAAUru+B,KAAK8T,KAAK,EAAI069B,KAAQ,EAAIA,MAG/F,EAAIF,GCyRhB,SAAe,CACbxp7B,KA7QK,cACL,IAWMwp7B,GAXFpt8B,GAAIlhC,KAAKiN,IAAIna,KAAK62+B,MAUtB,GARE72+B,KAAK8mB,KADP5Z,KAASiN,IAAIi0B,GAAIun8B,GAAWC,EACd51+B,KAAK62+B,KAAO,EAAI72+B,KAAKyx/B,OAASzx/B,KAAK0x/B,OAE5Cxk/B,KAASiN,IAAIi0B,IAAKwn8B,EACT51+B,KAAK2x/B,MAGL3x/B,KAAK4x/B,MAEf5x/B,KAAK+7+B,GAAK,EAMZ,OAHA/7+B,KAAK6x/B,GAAKC,GAAM9x/B,KAAKiJ,EAAG,GACxBjJ,KAAK+x/B,IAAM,IAAO,EAAI/x/B,KAAK+7+B,IAC3B/7+B,KAAKgy/B,IAwOT,YAAiBjW,IACf,IAAI3t8B,GACA6j9B,GAAM,GACVA,UAAI,GAXI,kBAWClW,GAETkW,GAAI,IAXI,oBAUR7j9B,GAAI2t8B,GAAKA,IAETkW,GAAI,GAVI,mBAUC7j9B,GAET6j9B,GAAI,IAbI,oBAYR7j9B,IAAK2t8B,IAELkW,GAAI,IAZI,kBAYE7j9B,GACV6j9B,GAAI,GAZI,oBAYC7j9B,GACF6j9B,GAnPMC,CAAQly/B,KAAK+7+B,IAChB/7+B,KAAK8mB,WACR9mB,KAAK0x/B,OAER,KACG1x/B,KAAKyx/B,OACRzx/B,KAAKkkxB,GAAK,EACV,WACGlkxB,KAAK2x/B,MACR3x/B,KAAKmy/B,GAAKjl/B,KAAKqnF,KAAK,GAAMv0F,KAAK6x/B,IAC/B7x/B,KAAKkkxB,GAAK,EAAIlkxB,KAAKmy/B,GACnBny/B,KAAKoy/B,IAAM,EACXpy/B,KAAKqy/B,IAAM,GAAMry/B,KAAK6x/B,GACtB,WACG7x/B,KAAK4x/B,MACR5x/B,KAAKmy/B,GAAKjl/B,KAAKqnF,KAAK,GAAMv0F,KAAK6x/B,IAC/BrW,GAAStu+B,KAAKwkF,IAAI1xF,KAAK62+B,MACvB72+B,KAAKsy/B,MAAQR,GAAM9x/B,KAAKiJ,EAAGuy+B,IAAUx7+B,KAAK6x/B,GAC1C7x/B,KAAKuy/B,MAAQrl/B,KAAKqnF,KAAK,EAAIv0F,KAAKsy/B,MAAQty/B,KAAKsy/B,OAC7Cty/B,KAAKkkxB,GAAKh3wB,KAAK65E,IAAI/mF,KAAK62+B,OAAS3p+B,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,GAAKP,GAASA,IAAUx7+B,KAAKmy/B,GAAKny/B,KAAKuy/B,OAC3Fvy/B,KAAKqy/B,KAAOry/B,KAAKoy/B,IAAMpy/B,KAAKmy/B,IAAMny/B,KAAKkkxB,GACvClkxB,KAAKoy/B,KAAOpy/B,KAAKkkxB,QAKflkxB,KAAK8mB,OAAS9mB,KAAK4x/B,QACrB5x/B,KAAKot/B,OAASlg/B,KAAKwkF,IAAI1xF,KAAK62+B,MAC5B72+B,KAAKmt/B,OAASjg/B,KAAK65E,IAAI/mF,KAAK62+B,QAkOhCoF,QA3NK,YAAiBx36B,IAItB,IAAI96D,GAAGmqD,GAAG0+7B,GAAQC,GAAQjX,GAAQhp+B,GAAGkg/B,GAAMC,GAAMzg+B,GAAGup9B,GAChDsV,GAAMts7B,GAAE96D,EACRgy+B,GAAMl36B,GAAE3Q,EAGZ,GADAi97B,GAAM7U,GAAW6U,GAAM/w/B,KAAKk3+B,OACxBl3+B,KAAK+5+B,QAIP,GAHAyB,GAAStu+B,KAAKwkF,IAAIiq5B,IAClBF,GAASvu+B,KAAK65E,IAAI405B,IAClB6W,GAAStl/B,KAAK65E,IAAIgq6B,IACd/w/B,KAAK8mB,OAAS9mB,KAAK4x/B,OAAS5x/B,KAAK8mB,OAAS9mB,KAAK2x/B,MAAO,CAExD,IADA797B,GAAK9zD,KAAK8mB,OAAS9mB,KAAK2x/B,MAAS,EAAIlW,GAAS+W,GAAS,EAAIxy/B,KAAKot/B,OAAS5R,GAASx7+B,KAAKmt/B,OAAS1R,GAAS+W,KAChG5c,EACP,OAAO,KAGTjs+B,IADAmqD,GAAI5mD,KAAKqnF,KAAK,EAAIzgC,KACV2n7B,GAASvu+B,KAAKwkF,IAAIq/5B,IAC1Bj97B,IAAM9zD,KAAK8mB,OAAS9mB,KAAK2x/B,MAASnW,GAASx7+B,KAAKmt/B,OAAS3R,GAASx7+B,KAAKot/B,OAAS3R,GAAS+W,WAElFxy/B,KAAK8mB,OAAS9mB,KAAK0x/B,QAAU1x/B,KAAK8mB,OAAS9mB,KAAKyx/B,OAAQ,CAI/D,GAHIzx/B,KAAK8mB,OAAS9mB,KAAK0x/B,SACrBc,IAAUA,IAERtl/B,KAAKiN,IAAIwh+B,GAAM37+B,KAAK62+B,MAAQjB,EAC9B,OAAO,KAET9h7B,GAAIii7B,EAAe,GAAN4F,GAEbhy+B,IADAmqD,GAAI,GAAM9zD,KAAK8mB,OAAS9mB,KAAKyx/B,OAAUvk/B,KAAK65E,IAAIjzB,IAAK5mD,KAAKwkF,IAAI59B,MACtD5mD,KAAKwkF,IAAIq/5B,IACjBj97B,IAAK0+7B,QAGJ,CAYH,OAXAE,GAAO,EACPC,GAAO,EACPzg+B,GAAI,EACJsg+B,GAAStl/B,KAAK65E,IAAIgq6B,IAClB0B,GAASvl/B,KAAKwkF,IAAIq/5B,IAClBvV,GAAStu+B,KAAKwkF,IAAIiq5B,IAClBnp+B,GAAIs/+B,GAAM9x/B,KAAKiJ,EAAGuy+B,KACdx7+B,KAAK8mB,OAAS9mB,KAAK4x/B,OAAS5x/B,KAAK8mB,OAAS9mB,KAAK2x/B,SACjDe,GAAOlg/B,GAAIxS,KAAK6x/B,GAChBc,GAAOzl/B,KAAKqnF,KAAK,EAAIm+5B,GAAOA,KAEtB1y/B,KAAK8mB,WACR9mB,KAAK4x/B,MACR1/9B,GAAI,EAAIlyB,KAAKsy/B,MAAQI,GAAO1y/B,KAAKuy/B,MAAQI,GAAOH,GAChD,WACGxy/B,KAAK2x/B,MACRz/9B,GAAI,EAAIyg+B,GAAOH,GACf,WACGxy/B,KAAK0x/B,OACRx/9B,GAAIyj9B,EAAUgG,GACdnp+B,GAAIxS,KAAK6x/B,GAAKr/+B,GACd,WACGxS,KAAKyx/B,OACRv/9B,GAAIyp9B,GAAMhG,EACVnj+B,GAAIxS,KAAK6x/B,GAAKr/+B,GAGhB,GAAItF,KAAKiN,IAAI+X,IAAK0j9B,EAChB,OAAO,KAET,OAAQ51+B,KAAK8mB,WACR9mB,KAAK4x/B,WACL5x/B,KAAK2x/B,MACRz/9B,GAAIhlB,KAAKqnF,KAAK,EAAIriE,IAEhB4hC,GADF9zD,KAAS8mB,OAAS9mB,KAAK4x/B,MACjB5x/B,KAAKqy/B,IAAMng+B,IAAKlyB,KAAKuy/B,MAAQG,GAAO1y/B,KAAKsy/B,MAAQK,GAAOH,KAGvDtg+B,GAAIhlB,KAAKqnF,KAAK,GAAK,EAAIo+5B,GAAOH,MAAYE,GAAO1y/B,KAAKqy/B,IAE7D1o/B,GAAI3J,KAAKoy/B,IAAMlg+B,GAAIyg+B,GAAOF,GAC1B,WACGzy/B,KAAK0x/B,YACL1x/B,KAAKyx/B,OACJj/+B,IAAK,GACP7I,IAAKuoB,GAAIhlB,KAAKqnF,KAAK/hF,KAAMig/B,GACzB3+7B,GAAI0+7B,IAAWxy/B,KAAK8mB,OAAS9mB,KAAKyx/B,OAAUv/9B,IAAKA,KAGjDvoB,GAAImqD,GAAI,GAMd2Q,UAAE96D,EAAI3J,KAAKmyB,EAAIxoB,GAAI3J,KAAKi1E,GACxBxQ,GAAE3Q,EAAI9zD,KAAKmyB,EAAI2hC,GAAI9zD,KAAK20E,GACjBlQ,IA+HP8mtB,QA1HK,YAAiB9mtB,IACtBA,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GACZ,IAEIo86B,GAAKpV,GAAKiX,GAAKC,GAAKrg/B,GAAG04+B,GAAK/sB,GAF5Bx09B,GAAI86D,GAAE96D,EAAI3J,KAAKmyB,EACf2hC,GAAI2Q,GAAE3Q,EAAI9zD,KAAKmyB,EAEnB,GAAInyB,KAAK+5+B,OAAQ,CACf,IACEv6S,GADEszT,GAAO,EACLC,GAAO,EAIb,IADApX,GAAW,IADXn8S,GAAKtyrB,KAAKqnF,KAAK5qF,GAAIA,GAAImqD,GAAIA,MAEjB,EACR,OAAO,KAOT,OALA6n7B,GAAM,EAAIzu+B,KAAKyyoB,KAAKg8V,KAChB37+B,KAAK8mB,OAAS9mB,KAAK4x/B,OAAS5x/B,KAAK8mB,OAAS9mB,KAAK2x/B,SACjDoB,GAAO7l/B,KAAKwkF,IAAIiq5B,IAChBmX,GAAO5l/B,KAAK65E,IAAI405B,KAEV37+B,KAAK8mB,WACR9mB,KAAK2x/B,MACRhW,GAAOzu+B,KAAKiN,IAAIqlrB,KAAOo2S,EAAS,EAAI1o+B,KAAKyyoB,KAAK7rlB,GAAIi/7B,GAAOvzT,IACzD71rB,IAAKop/B,GACLj/7B,GAAIg/7B,GAAOtzT,GACX,WACGx/rB,KAAK4x/B,MACRjW,GAAOzu+B,KAAKiN,IAAIqlrB,KAAOo2S,EAAS51+B,KAAK62+B,KAAO3p+B,KAAKyyoB,KAAKmzW,GAAO9y/B,KAAKot/B,OAASt57B,GAAIi/7B,GAAO/y/B,KAAKmt/B,OAAS3tT,IACpG71rB,IAAKop/B,GAAO/y/B,KAAKmt/B,OACjBr57B,IAAKg/7B,GAAO5l/B,KAAKwkF,IAAIiq5B,IAAO37+B,KAAKot/B,QAAU5tT,GAC3C,WACGx/rB,KAAK0x/B,OACR597B,IAAKA,GACL6n7B,GAAMhG,EAAUgG,GAChB,WACG37+B,KAAKyx/B,OACR9V,IAAOhG,EAGTob,GAAa,IAANj97B,IAAY9zD,KAAK8mB,OAAS9mB,KAAK2x/B,OAAS3x/B,KAAK8mB,OAAS9mB,KAAK4x/B,MAAc1k/B,KAAKqkF,MAAM5nF,GAAGmqD,IAAlB,MAEzE,CAEH,GADAqq6B,GAAK,EACDn+9B,KAAK8mB,OAAS9mB,KAAK4x/B,OAAS5x/B,KAAK8mB,OAAS9mB,KAAK2x/B,MAAO,CAIxD,GAHAho/B,IAAK3J,KAAKkkxB,GACVpwtB,IAAK9zD,KAAKkkxB,IACVgnO,GAAMh++B,KAAKqnF,KAAK5qF,GAAIA,GAAImqD,GAAIA,KAClB8h7B,EACRnx6B,UAAE96D,EAAI3J,KAAKk3+B,MACXzy6B,GAAE3Q,EAAI9zD,KAAK62+B,KACJpy6B,GAETou7B,GAAM,EAAI3l/B,KAAKyyoB,KAAK,GAAMurW,GAAMlr/B,KAAKmy/B,IACrCS,GAAM1l/B,KAAK65E,IAAI8r6B,IACflp/B,IAAMkp/B,GAAM3l/B,KAAKwkF,IAAImh6B,IACrB7y/B,KAAS8mB,OAAS9mB,KAAK4x/B,OAErBp/+B,GAAIxS,KAAK6x/B,IADT1zB,GAAKy0B,GAAM5y/B,KAAKsy/B,MAAQx+7B,GAAI++7B,GAAM7y/B,KAAKuy/B,MAAQrH,IAE/Cp37B,GAAIo37B,GAAMlr/B,KAAKuy/B,MAAQK,GAAM9+7B,GAAI9zD,KAAKsy/B,MAAQO,KAI9Crg/B,GAAIxS,KAAK6x/B,IADT1zB,GAAKrq6B,GAAI++7B,GAAM3H,IAEfp37B,GAAIo37B,GAAM0H,YAGL5y/B,KAAK8mB,OAAS9mB,KAAK0x/B,QAAU1x/B,KAAK8mB,OAAS9mB,KAAKyx/B,OAAQ,CAK/D,GAJIzx/B,KAAK8mB,OAAS9mB,KAAK0x/B,SACrB597B,IAAKA,MAEPthD,GAAK7I,GAAIA,GAAImqD,GAAIA,IAEf2Q,UAAE96D,EAAI3J,KAAKk3+B,MACXzy6B,GAAE3Q,EAAI9zD,KAAK62+B,KACJpy6B,GAET055B,GAAK,EAAI3r9B,GAAIxS,KAAK6x/B,GACd7x/B,KAAK8mB,OAAS9mB,KAAKyx/B,SACrBtzB,IAAMA,IAGV4yB,GAAM7j/B,KAAKqkF,MAAM5nF,GAAGmqD,IACpB6n7B,GA+BJ,YAAiBqX,GAAMf,IACrB,IAAI7j9B,GAAI4k9B,GAAOA,GACf,OAAQA,GAAOf,GAAI,GAAK/k/B,KAAKwkF,IAAItjD,IAAK6j9B,GAAI,GAAK/k/B,KAAKwkF,IAAItjD,GAAIA,IAAK6j9B,GAAI,GAAK/k/B,KAAKwkF,IAAItjD,GAAIA,GAAIA,IAjCnF6k9B,CAAQ/l/B,KAAKyyoB,KAAKw+U,IAAKn+9B,KAAKgy/B,KAGpCvt7B,UAAE96D,EAAIuy+B,GAAWl8+B,KAAKk3+B,MAAQ6Z,IAC9Bts7B,GAAE3Q,EAAI6n7B,GACCl36B,IAoCP6zU,MALiB,CAAC,+BAAgC,+BAAgC,QAMlFm5mB,OAzRkB,EA0RlBC,OAxRkB,EAyRlBC,MAxRiB,EAyRjBC,MAxRiB,GChBJ,YAASjo/B,IACtB,OAAIuD,KAAKiN,IAAIxQ,IAAK,IAChBA,GAAKA,GAAI,EAAK,GAAI,GAEbuD,KAAKyyoB,KAAKh2oB,ICsHnB,SAAe,CACbqoD,KArHK,cAED9kD,KAAKiN,IAAIna,KAAKkn+B,KAAOln+B,KAAKmn+B,MAAQyO,IAGtC51+B,KAAK07c,KAAO17c,KAAKkyB,EAAIlyB,KAAKmyB,EAC1BnyB,KAAK+7+B,GAAK,EAAI7u+B,KAAK06F,IAAI5nG,KAAK07c,KAAM,GAClC17c,KAAKyw/B,GAAKvj/B,KAAKqnF,KAAKv0F,KAAK+7+B,IAEzB/7+B,KAAKkz/B,OAAShm/B,KAAKwkF,IAAI1xF,KAAKkn+B,MAC5Bln+B,KAAKmz/B,OAASjm/B,KAAK65E,IAAI/mF,KAAKkn+B,MAC5Bln+B,KAAKkhqB,GAAKlhqB,KAAKkz/B,OACflz/B,KAAK07+B,IAAM17+B,KAAKkz/B,OAChBlz/B,KAAKsr/B,IAAMtP,GAAMh8+B,KAAKyw/B,GAAIzw/B,KAAKkz/B,OAAQlz/B,KAAKmz/B,QAC5Cnz/B,KAAKoz/B,IAAMtB,GAAM9x/B,KAAKyw/B,GAAIzw/B,KAAKkz/B,QAE/Blz/B,KAAKkz/B,OAAShm/B,KAAKwkF,IAAI1xF,KAAKmn+B,MAC5Bnn+B,KAAKmz/B,OAASjm/B,KAAK65E,IAAI/mF,KAAKmn+B,MAC5Bnn+B,KAAKmhqB,GAAKnhqB,KAAKkz/B,OACflz/B,KAAKuv/B,IAAMvT,GAAMh8+B,KAAKyw/B,GAAIzw/B,KAAKkz/B,OAAQlz/B,KAAKmz/B,QAC5Cnz/B,KAAKqz/B,IAAMvB,GAAM9x/B,KAAKyw/B,GAAIzw/B,KAAKkz/B,QAE/Blz/B,KAAKkz/B,OAAShm/B,KAAKwkF,IAAI1xF,KAAK62+B,MAC5B72+B,KAAKmz/B,OAASjm/B,KAAK65E,IAAI/mF,KAAK62+B,MAC5B72+B,KAAKsz/B,GAAKtz/B,KAAKkz/B,OACflz/B,KAAKuz/B,IAAMzB,GAAM9x/B,KAAKyw/B,GAAIzw/B,KAAKkz/B,QAG7Blz/B,KAAKwz/B,IADHtm/B,KAAKiN,IAAIna,KAAKkn+B,KAAOln+B,KAAKmn+B,MAAQyO,GACxB51+B,KAAKsr/B,IAAMtr/B,KAAKsr/B,IAAMtr/B,KAAKuv/B,IAAMvv/B,KAAKuv/B,MAAQvv/B,KAAKqz/B,IAAMrz/B,KAAKoz/B,KAG/Dpz/B,KAAK07+B,IAElB17+B,KAAKigB,EAAIjgB,KAAKsr/B,IAAMtr/B,KAAKsr/B,IAAMtr/B,KAAKwz/B,IAAMxz/B,KAAKoz/B,IAC/Cpz/B,KAAKw/rB,GAAKx/rB,KAAKmyB,EAAIjlB,KAAKqnF,KAAKv0F,KAAKigB,EAAIjgB,KAAKwz/B,IAAMxz/B,KAAKuz/B,KAAOvz/B,KAAKwz/B,MAoFlEvX,QA/EK,YAAiBx36B,IAEtB,IAAIuy4B,GAAMvy4B,GAAE96D,EACRg+9B,GAAMlj6B,GAAE3Q,EAEZ9zD,KAAKio/B,QAAU/6+B,KAAKwkF,IAAIi24B,IACxB3n+B,KAAKko/B,QAAUh7+B,KAAK65E,IAAI4g5B,IAExB,IAAIr5rB,GAAKwjtB,GAAM9x/B,KAAKyw/B,GAAIzw/B,KAAKio/B,SACzB0H,GAAM3v/B,KAAKmyB,EAAIjlB,KAAKqnF,KAAKv0F,KAAKigB,EAAIjgB,KAAKwz/B,IAAMlltB,IAAMtuS,KAAKwz/B,IACxDju3B,GAAQvlI,KAAKwz/B,IAAMtX,GAAWllC,GAAMh38B,KAAKk3+B,OACzCvt+B,GAAIgm/B,GAAMzi/B,KAAKwkF,IAAI6zC,IAASvlI,KAAKi1E,GACjCnhB,GAAI9zD,KAAKw/rB,GAAKmwT,GAAMzi/B,KAAK65E,IAAIw+C,IAASvlI,KAAK20E,GAE/ClQ,UAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IAgEP8mtB,QA7DK,YAAiB9mtB,IACtB,IAAIkr7B,GAASjU,GAAKn22B,GAAOyx0B,GAAK2wB,GAE9Blj6B,UAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,EAAI9zD,KAAKw/rB,GAAK/6nB,GAAE3Q,EAAI9zD,KAAK20E,GAC3B30E,KAASwz/B,KAAO,GACd7D,GAAMzi/B,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,GACpC4n7B,GAAM,IAGNiU,IAAOzi/B,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,GACrC4n7B,IAAM,GAERn22B,GAAQ,EACI,IAARoq3B,KACFpq3B,GAAQr4H,KAAKqkF,MAAMmq5B,GAAMj36B,GAAE96D,EAAG+x+B,GAAMj36B,GAAE3Q,IAExC4n7B,GAAMiU,GAAM3v/B,KAAKwz/B,IAAMxz/B,KAAKmyB,EAE1Bw18B,GADE3n+B,KAAK+5+B,OACD7s+B,KAAKyyoB,MAAM3/oB,KAAKigB,EAAIy79B,GAAMA,KAAQ,EAAI17+B,KAAKwz/B,MAI3Cxz/B,KAAKyz/B,MAAMzz/B,KAAKyw/B,IADhBzw/B,KAAKigB,EAAIy79B,GAAMA,IAAO17+B,KAAKwz/B,KAInCx8C,GAAMklC,GAAW322B,GAAQvlI,KAAKwz/B,IAAMxz/B,KAAKk3+B,OACzCzy6B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAiCP6zU,MALiB,CAAC,0BAA2B,SAAU,OAMvDm7mB,MA5BK,YAAelY,GAAQjtsB,IAC5B,IAAIktsB,GAAgBE,GAAKwR,GAAKtR,GAC1BD,GAAM+X,GAAM,GAAMpltB,IACtB,GAAIitsB,GAAS3F,EACX,OAAO+F,GAIT,QADIgY,GAASpY,GAASA,GACb5s+B,GAAI,EAAGA,IAAK,GAAIA,KAOvB,GADAgt+B,IADAC,GAAO,IADPsR,GAAM,GADNxR,GAAMH,IAFNC,GAAStu+B,KAAKwkF,IAAIiq5B,MAGFD,IACGwR,GAHVhg/B,KAAK65E,IAAI405B,KAGiBrtsB,IAAM,EAAIqltB,IAAUnY,GAAS0R,GAAM,GAAM3R,GAASru+B,KAAK8T,KAAK,EAAI069B,KAAQ,EAAIA,MAE3Gxu+B,KAAKiN,IAAIyh+B,KAAS,KACpB,OAAOD,GAGX,OAAO,OCpBTtpI,GAAe,CACbrgzB,KAzFK,cAILhyD,KAAK4z/B,QAAU1m/B,KAAKwkF,IAAI1xF,KAAK62+B,MAC7B72+B,KAAK6z/B,QAAU3m/B,KAAK65E,IAAI/mF,KAAK62+B,MAE7B72+B,KAAK8z/B,cAAgB,IAAO9z/B,KAAKmyB,EACjCnyB,KAAK0vG,GAAK,GAkFVus4B,QA7EK,YAAiBx36B,IACtB,IAAI+26B,GAAQC,GACRsQ,GACAgI,GAEAvk8B,GACA7lD,GAAGmqD,GAEH6z6B,GAAMlj6B,GAAE3Q,EAGZi47B,UAAO7P,GAJGz36B,GAAE96D,EAIY3J,KAAKk3+B,OAE7BsE,GAAStu+B,KAAKwkF,IAAIi24B,IAClB8T,GAASvu+B,KAAK65E,IAAI4g5B,IAElBosB,GAAS7m/B,KAAK65E,IAAIgl6B,KAClBv87B,GAAIxvD,KAAK4z/B,QAAUpY,GAASx7+B,KAAK6z/B,QAAUpY,GAASsY,IAE3C,GAAO7m/B,KAAKiN,IAAIq1C,KAAMom7B,GAC7Bjs+B,GAAI3J,KAAKi1E,GAFL,EAEUj1E,KAAKmyB,EAAUsp9B,GAASvu+B,KAAKwkF,IAAIq65B,IAAQv87B,GACvDsE,GAAI9zD,KAAK20E,GAHL,EAGU30E,KAAKmyB,GAAWnyB,KAAK6z/B,QAAUrY,GAASx7+B,KAAK4z/B,QAAUnY,GAASsY,IAAUvk8B,KAWxF7lD,GAAI3J,KAAKi1E,GAAKj1E,KAAK8z/B,cAAgBrY,GAASvu+B,KAAKwkF,IAAIq65B,IACrDj47B,GAAI9zD,KAAK20E,GAAK30E,KAAK8z/B,eAAiB9z/B,KAAK6z/B,QAAUrY,GAASx7+B,KAAK4z/B,QAAUnY,GAASsY,KAGtFtv7B,GAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IAwCP8mtB,QArCK,YAAiB9mtB,IACtB,IAAI+6nB,GACAurT,GAAMC,GACN/q+B,GACA+27B,GAAK2wB,GAITlj6B,UAAE96D,GAAK86D,GAAE96D,EAAI3J,KAAKi1E,IAAMj1E,KAAKmyB,EAC7BsyC,GAAE3Q,GAAK2Q,GAAE3Q,EAAI9zD,KAAK20E,IAAM30E,KAAKmyB,EAE7BsyC,GAAE96D,GAAK3J,KAAK63+B,GACZpz6B,GAAE3Q,GAAK9zD,KAAK63+B,IAEPr4S,GAAKtyrB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,KACtC7zC,GAAI/S,KAAKqkF,MAAMiumB,GAAIx/rB,KAAK0vG,IACxBq74B,GAAO79+B,KAAKwkF,IAAIzxE,IAGhB0n9B,GAAM+rB,IAFN1I,GAAO99+B,KAAK65E,IAAI9mE,KAEGjgB,KAAK4z/B,QAAWnv7B,GAAE3Q,EAAIi37B,GAAO/q/B,KAAK6z/B,QAAWr0T,IAChEw3Q,GAAM9p8B,KAAKqkF,MAAM9sB,GAAE96D,EAAIoh/B,GAAMvrT,GAAKx/rB,KAAK6z/B,QAAU7I,GAAOvm7B,GAAE3Q,EAAI9zD,KAAK4z/B,QAAU7I,IAC7E/zC,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQlgC,MAG9B2wB,GAAM3n+B,KAAKwq/B,MACXxzC,GAAM,GAGRvy4B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAQP6zU,MALiB,CAAC,SCjCpBmhJ,GAAe,CACbzne,KAtDK,cAEAhyD,KAAK+5+B,SACR/5+B,KAAK63+B,GAAKmE,GAAMh8+B,KAAKiJ,EAAGiE,KAAKwkF,IAAI1xF,KAAKg3+B,QAAS9p+B,KAAK65E,IAAI/mF,KAAKg3+B,WAoD/DiF,QA9CK,YAAiBx36B,IACtB,IAEI96D,GAAGmqD,GADH6z6B,GAAMlj6B,GAAE3Q,EAIRi47B,GAAO7P,GALDz36B,GAAE96D,EAKgB3J,KAAKk3+B,OACjC,GAAIl3+B,KAAK+5+B,OACPpw+B,GAAI3J,KAAKi1E,GAAKj1E,KAAKmyB,EAAI459B,GAAO7++B,KAAK65E,IAAI/mF,KAAKg3+B,QAC5Clj7B,GAAI9zD,KAAK20E,GAAK30E,KAAKmyB,EAAIjlB,KAAKwkF,IAAIi24B,IAAOz69B,KAAK65E,IAAI/mF,KAAKg3+B,YAElD,CACH,IAAI1osB,GAAKwjtB,GAAM9x/B,KAAKiJ,EAAGiE,KAAKwkF,IAAIi24B,KAChCh+9B,GAAI3J,KAAKi1E,GAAKj1E,KAAKmyB,EAAInyB,KAAK63+B,GAAKkU,GACjCj47B,GAAI9zD,KAAK20E,GAAK30E,KAAKmyB,EAAIm8Q,GAAK,GAAMtuS,KAAK63+B,GAGzCpz6B,UAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IA4BP8mtB,QAvBK,YAAiB9mtB,IAGtB,IAAIuy4B,GAAK2wB,GAET,OAJAlj6B,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GAGR30E,KAAK+5+B,QACP/iC,GAAMklC,GAAWl8+B,KAAKk3+B,MAASzy6B,GAAE96D,EAAI3J,KAAKmyB,EAAKjlB,KAAK65E,IAAI/mF,KAAKg3+B,SAC7DrP,GAAMz69B,KAAKyyoB,KAAMl7kB,GAAE3Q,EAAI9zD,KAAKmyB,EAAKjlB,KAAK65E,IAAI/mF,KAAKg3+B,WAG/CrP,GCpDW,YAAS4T,GAAQ/o+B,IAC9B,IAAIkpc,GAAO,GAAK,EAAI6/hB,GAASA,KAAW,EAAIA,IAAUru+B,KAAK8T,KAAK,EAAIu69B,KAAW,EAAIA,KACnF,GAAIru+B,KAAKiN,IAAIjN,KAAKiN,IAAI3H,IAAKkpc,IAAQ,KACjC,OAAIlpc,GAAI,GACE,EAAKmj+B,EAGNA,EASX,QAJIiG,GACAqM,GACAC,GACAxM,GAJAC,GAAMzu+B,KAAKyyoB,KAAK,GAAMntoB,IAKjB7D,GAAI,EAAGA,GAAI,GAAIA,KAMtB,GALAs5+B,GAAU/6+B,KAAKwkF,IAAIiq5B,IACnBuM,GAAUh7+B,KAAK65E,IAAI405B,IACnBD,GAAMH,GAAS0M,GAEftM,IADAC,GAAO1u+B,KAAK06F,IAAI,EAAI8z4B,GAAMA,GAAK,IAAM,EAAIwM,KAAY11+B,IAAK,EAAI+o+B,GAASA,IAAU0M,IAAW,EAAIvM,GAAMA,IAAO,GAAMH,GAASru+B,KAAK8T,KAAK,EAAI069B,KAAQ,EAAIA,MAElJxu+B,KAAKiN,IAAIyh+B,KAAS,MACpB,OAAOD,GAKX,OAAO7o3B,IDwBCkh4B,CAAOh0/B,KAAKiJ,EAAG,EAAIw7D,GAAE3Q,EAAI9zD,KAAK63+B,GAAK73+B,KAAKmyB,GAC9C6k7B,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQzy6B,GAAE96D,GAAK3J,KAAKmyB,EAAInyB,KAAK63+B,MAGrDpz6B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAQP6zU,MALiB,CAAC,QErBpB27mB,GAAe,CACbji8B,KAxCK,cAELhyD,KAAKi1E,GAAKj1E,KAAKi1E,IAAM,EACrBj1E,KAAK20E,GAAK30E,KAAK20E,IAAM,EACrB30E,KAAK62+B,KAAO72+B,KAAK62+B,MAAQ,EACzB72+B,KAAKk3+B,MAAQl3+B,KAAKk3+B,OAAS,EAC3Bl3+B,KAAKg3+B,OAASh3+B,KAAKg3+B,QAAU,EAC7Bh3+B,KAAK4sD,MAAQ5sD,KAAK4sD,OAAS,wCAE3B5sD,KAAK0vG,GAAKxiG,KAAK65E,IAAI/mF,KAAKg3+B,SAgCxBiF,QA3BK,YAAiBx36B,IAEtB,IACIkj6B,GAAMlj6B,GAAE3Q,EAERi47B,GAAO7P,GAHDz36B,GAAE96D,EAGgB3J,KAAKk3+B,OAC7Bgd,GAAO1C,GAAW7pB,GAAM3n+B,KAAK62+B,MACjCpy6B,UAAE96D,EAAI3J,KAAKi1E,GAAMj1E,KAAKmyB,EAAI459B,GAAO/r/B,KAAK0vG,GACtCjrC,GAAE3Q,EAAI9zD,KAAK20E,GAAM30E,KAAKmyB,EAAI+h+B,GACnBzv7B,IAmBP8mtB,QAdK,YAAiB9mtB,IAEtB,IACI3Q,GAAI2Q,GAAE3Q,EAEV2Q,UAAE96D,EAAIuy+B,GAAWl8+B,KAAKk3+B,OAHdzy6B,GAAE96D,EAG0B3J,KAAKi1E,KAAOj1E,KAAKmyB,EAAInyB,KAAK0vG,KAC9DjrC,GAAE3Q,EAAI097B,GAAWxx/B,KAAK62+B,MAAS/i7B,GAAI9zD,KAAK20E,IAAO30E,KAAKmyB,GAC7CsyC,IAQP6zU,MALiB,CAAC,kBAAmB,0BAA2B,QCwFlExmN,GAAe,CACb9/H,KAtHK,cAGLhyD,KAAK07c,KAAO17c,KAAKkyB,EAAIlyB,KAAKmyB,EAC1BnyB,KAAK+7+B,GAAK,EAAI7u+B,KAAK06F,IAAI5nG,KAAK07c,KAAM,GAClC17c,KAAKiJ,EAAIiE,KAAKqnF,KAAKv0F,KAAK+7+B,IACxB/7+B,KAAKu7F,GAAKm15B,GAAK1w/B,KAAK+7+B,IACpB/7+B,KAAKy7F,GAAKk15B,GAAK3w/B,KAAK+7+B,IACpB/7+B,KAAK6w+B,GAAK+f,GAAK5w/B,KAAK+7+B,IACpB/7+B,KAAKyw/B,GAAKI,GAAK7w/B,KAAK+7+B,IACpB/7+B,KAAK+n/B,IAAM/n/B,KAAKmyB,EAAI2+9B,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAIzw/B,KAAK62+B,OA6GlEoF,QAxGK,YAAiBx36B,IACtB,IAEI96D,GAAGmqD,GAAGzM,GADNsg7B,GAAMlj6B,GAAE3Q,EAERi47B,GAAO7P,GAHDz36B,GAAE96D,EAGgB3J,KAAKk3+B,OAEjC,GADA7v7B,GAAK0k8B,GAAO7++B,KAAKwkF,IAAIi24B,IACjB3n+B,KAAK+5+B,OACH7s+B,KAAKiN,IAAIwt9B,KAAQiO,GACnBjs+B,GAAI3J,KAAKmyB,EAAI459B,GACbj47B,IAAI,EAAK9zD,KAAKmyB,EAAInyB,KAAK62+B,OAGvBlt+B,GAAI3J,KAAKmyB,EAAIjlB,KAAKwkF,IAAIrqC,IAAMn6C,KAAK8huB,IAAI24P,IACrC7z6B,GAAI9zD,KAAKmyB,GAAKq/9B,GAAW7pB,GAAM3n+B,KAAK62+B,OAAS,EAAI3p+B,KAAK65E,IAAI1/B,KAAOn6C,KAAK8huB,IAAI24P,cAIxEz69B,KAAKiN,IAAIwt9B,KAAQiO,EACnBjs+B,GAAI3J,KAAKmyB,EAAI459B,GACbj47B,IAAI,EAAK9zD,KAAK+n/B,QAEX,CACH,IAAIiJ,GAAKC,GAAGjx/B,KAAKmyB,EAAGnyB,KAAKiJ,EAAGiE,KAAKwkF,IAAIi24B,KAAQz69B,KAAK8huB,IAAI24P,IACtDh+9B,GAAIqn/B,GAAK9j/B,KAAKwkF,IAAIrqC,IAClByM,GAAI9zD,KAAKmyB,EAAI2+9B,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAI9oB,IAAO3n+B,KAAK+n/B,IAAMiJ,IAAM,EAAI9j/B,KAAK65E,IAAI1/B,KAI/Fod,UAAE96D,EAAIA,GAAI3J,KAAKi1E,GACfxQ,GAAE3Q,EAAIA,GAAI9zD,KAAK20E,GACRlQ,IA2EP8mtB,QAtEK,YAAiB9mtB,IACtB,IAAIuy4B,GAAK2wB,GAAKh+9B,GAAGmqD,GAAGnlD,GAChB67G,GAAI/0G,GACJkm+B,GAAKC,GAIT,GAHAjy+B,GAAI86D,GAAE96D,EAAI3J,KAAKi1E,GACfnhB,GAAI2Q,GAAE3Q,EAAI9zD,KAAK20E,GAEX30E,KAAK+5+B,OACP,GAAI7s+B,KAAKiN,IAAI25C,GAAI9zD,KAAKmyB,EAAInyB,KAAK62+B,OAASjB,EACtC5+B,GAAMklC,GAAWvy+B,GAAI3J,KAAKmyB,EAAInyB,KAAKk3+B,OACnCvP,GAAM,MAEH,CAIH,IAAIwsB,GACJ,IAHA1++B,GAAK9L,GAAIA,GAAI3J,KAAKmyB,EAAInyB,KAAKmyB,GAD3Bq4F,GAAKxqH,KAAK62+B,KAAO/i7B,GAAI9zD,KAAKmyB,GACUq4F,GACpCmx3B,GAAMnx3B,GAED77G,GArEI,GAqEUA,KAAKA,GAItB,GADAgt+B,IADAC,IAAO,GAAMpx3B,IAAMmx3B,IADnBwY,GAASjn/B,KAAK8huB,IAAI2sQ,KACgB,GAAKA,GAAM,IAAOA,GAAMA,GAAMlm+B,IAAM0++B,MAAYxY,GAAMnx3B,IAAM2p4B,GAAS,GAEnGjn/B,KAAKiN,IAAIyh+B,KAAShG,EAAO,CAC3BjO,GAAMgU,GACN,MAGJ3kC,GAAMklC,GAAWl8+B,KAAKk3+B,MAAShq+B,KAAKyyoB,KAAKh2oB,GAAIuD,KAAK8huB,IAAI2sQ,IAAO37+B,KAAKmyB,GAAMjlB,KAAKwkF,IAAIi24B,aAI/Ez69B,KAAKiN,IAAI25C,GAAI9zD,KAAK+n/B,MAAQnS,EAC5BjO,GAAM,EACN3wB,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQvt+B,GAAI3J,KAAKmyB,OAEpC,CAKH,IAAIk4F,GAAI+p4B,GAAKC,GAAMC,GACf5Y,GACJ,IAJAjm+B,GAAK9L,GAAIA,GAAI3J,KAAKmyB,EAAInyB,KAAKmyB,GAD3Bq4F,IAAMxqH,KAAK+n/B,IAAMj07B,IAAK9zD,KAAKmyB,GACSq4F,GACpCmx3B,GAAMnx3B,GAGD77G,GA7FI,GA6FUA,KAAKA,GAQtB,GAPA+s+B,GAAM17+B,KAAKiJ,EAAIiE,KAAKwkF,IAAIiq5B,IACxBtx3B,GAAKn9G,KAAKqnF,KAAK,EAAImn5B,GAAMA,IAAOxu+B,KAAK8huB,IAAI2sQ,IACzCyY,GAAMp0/B,KAAKmyB,EAAI2+9B,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAI9U,IACxD0Y,GAAOr0/B,KAAKu7F,GAAK,EAAIv7F,KAAKy7F,GAAKvuF,KAAK65E,IAAI,EAAI405B,IAAO,EAAI37+B,KAAK6w+B,GAAK3j+B,KAAK65E,IAAI,EAAI405B,IAAO,EAAI37+B,KAAKyw/B,GAAKvj/B,KAAK65E,IAAI,EAAI405B,IAGhHA,IADAC,IAAQpx3B,IAAMH,IADdiq4B,GAAKF,GAAMp0/B,KAAKmyB,GACQ,GAAKmi+B,GAAK,GAAMjq4B,IAAMiq4B,GAAKA,GAAK7++B,MAAQzV,KAAK+7+B,GAAK7u+B,KAAKwkF,IAAI,EAAIiq5B,KAAQ2Y,GAAKA,GAAK7++B,GAAK,EAAI+0G,GAAK8p4B,KAAO,EAAIjq4B,KAAOG,GAAK8p4B,KAAOjq4B,GAAKgq4B,GAAO,EAAInn/B,KAAKwkF,IAAI,EAAIiq5B,KAAQ0Y,IAEtLnn/B,KAAKiN,IAAIyh+B,KAAShG,EAAO,CAC3BjO,GAAMgU,GACN,MAKJtx3B,GAAKn9G,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,GAAK7u+B,KAAK06F,IAAI16F,KAAKwkF,IAAIi24B,IAAM,IAAMz69B,KAAK8huB,IAAI24P,IACpE3wB,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAKyyoB,KAAKh2oB,GAAI0gH,GAAKrqH,KAAKmyB,GAAKjlB,KAAKwkF,IAAIi24B,KAIxElj6B,UAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAQP6zU,MALiB,CAAC,YAAa,SC4FjC65d,GAAe,CACbngzB,KA3MK,cACLhyD,KAAKuhU,EAAI,GACTvhU,KAAKuhU,EAAE,GAAK,YACZvhU,KAAKuhU,EAAE,IAAK,YACZvhU,KAAKuhU,EAAE,GAAK,WACZvhU,KAAKuhU,EAAE,IAAK,UACZvhU,KAAKuhU,EAAE,GAAK,SACZvhU,KAAKuhU,EAAE,IAAK,SACZvhU,KAAKuhU,EAAE,GAAK,SACZvhU,KAAKuhU,EAAE,IAAK,QACZvhU,KAAKuhU,EAAE,GAAK,MACZvhU,KAAKuhU,EAAE,KAAM,MAEbvhU,KAAKu0/B,KAAO,GACZv0/B,KAAKw0/B,KAAO,GACZx0/B,KAAKu0/B,KAAK,GAAK,YACfv0/B,KAAKw0/B,KAAK,GAAK,EACfx0/B,KAAKu0/B,KAAK,GAAK,WACfv0/B,KAAKw0/B,KAAK,GAAK,WACfx0/B,KAAKu0/B,KAAK,IAAK,WACfv0/B,KAAKw0/B,KAAK,GAAK,UACfx0/B,KAAKu0/B,KAAK,IAAK,UACfv0/B,KAAKw0/B,KAAK,GAAK,UACfx0/B,KAAKu0/B,KAAK,IAAK,UACfv0/B,KAAKw0/B,KAAK,IAAK,UACfx0/B,KAAKu0/B,KAAK,IAAK,SACfv0/B,KAAKw0/B,KAAK,IAAK,UAEfx0/B,KAAKy0/B,KAAO,GACZz0/B,KAAK00/B,KAAO,GACZ10/B,KAAKy0/B,KAAK,GAAK,aACfz0/B,KAAK00/B,KAAK,GAAK,EACf10/B,KAAKy0/B,KAAK,IAAK,WACfz0/B,KAAK00/B,KAAK,IAAK,WACf10/B,KAAKy0/B,KAAK,GAAK,WACfz0/B,KAAK00/B,KAAK,IAAK,WACf10/B,KAAKy0/B,KAAK,IAAK,UACfz0/B,KAAK00/B,KAAK,GAAK,UACf10/B,KAAKy0/B,KAAK,GAAK,WACfz0/B,KAAK00/B,KAAK,GAAK,WACf10/B,KAAKy0/B,KAAK,GAAK,UACfz0/B,KAAK00/B,KAAK,GAAK,UAEf10/B,KAAKmmlB,EAAI,GACTnmlB,KAAKmmlB,EAAE,GAAK,aACZnmlB,KAAKmmlB,EAAE,GAAK,YACZnmlB,KAAKmmlB,EAAE,IAAK,UACZnmlB,KAAKmmlB,EAAE,IAAK,SACZnmlB,KAAKmmlB,EAAE,IAAK,SACZnmlB,KAAKmmlB,EAAE,GAAK,QACZnmlB,KAAKmmlB,EAAE,GAAK,MACZnmlB,KAAKmmlB,EAAE,GAAK,OACZnmlB,KAAKmmlB,EAAE,IAAK,OAwJZ81Z,QAjJK,YAAiBx36B,IACtB,IAAI32D,GASA6m/B,IAPMlw7B,GAAE3Q,EAEU9zD,KAAK62+B,MAKHnB,EAAa,KACjCkf,GATMnw7B,GAAE96D,EAIU3J,KAAKk3+B,MAMvB2d,GAAU,EAEVC,GAAQ,EACZ,IAAKhn/B,GAAI,EAAGA,IAAK,GAAIA,KAEnBgn/B,IAAgB90/B,KAAKuhU,EAAEzzT,KADvB+m/B,IAAoBF,IAKtB,IAOII,GAPAC,GAAQF,GACRG,GAAQL,GAGRM,GAAU,EACVC,GAAU,EAIVC,GAAO,EACPC,GAAO,EACX,IAAKvn/B,GAAI,EAAGA,IAAK,EAAGA,KAElBin/B,GAAWI,GAAUH,GAAQE,GAAUD,GAGvCG,GAAOA,GAAOp1/B,KAAKu0/B,KAAKzm/B,KAFxBon/B,GAFWA,GAAUF,GAAQG,GAAUF,IAIAj1/B,KAAKw0/B,KAAK1m/B,KADjDqn/B,GAAUJ,IAEVM,GAAOA,GAAOr1/B,KAAKw0/B,KAAK1m/B,IAAKon/B,GAAUl1/B,KAAKu0/B,KAAKzm/B,IAAKqn/B,GAIxD1w7B,UAAE96D,EAAK0r/B,GAAOr1/B,KAAKmyB,EAAKnyB,KAAKi1E,GAC7BxQ,GAAE3Q,EAAKsh8B,GAAOp1/B,KAAKmyB,EAAKnyB,KAAK20E,GAEtBlQ,IAqGP8mtB,QA/FK,YAAiB9mtB,IACtB,IAAI32D,GAeAwn/B,GAPAF,IANI3w7B,GAAE3Q,EAGQ9zD,KAAK20E,IAGF30E,KAAKmyB,EACtBkj+B,IARI5w7B,GAAE96D,EAGQ3J,KAAKi1E,IAKFj1E,KAAKmyB,EAGtBoj+B,GAAS,EACTC,GAAS,EAITR,GAAQ,EACRC,GAAQ,EACZ,IAAKnn/B,GAAI,EAAGA,IAAK,EAAGA,KAElBwn/B,GAAUE,GAASJ,GAAOG,GAASF,GAGnCL,GAAQA,GAAQh1/B,KAAKy0/B,KAAK3m/B,KAF1Byn/B,GAFUA,GAASH,GAAOI,GAASH,IAIKr1/B,KAAK00/B,KAAK5m/B,KADlD0n/B,GAASF,IAETL,GAAQA,GAAQj1/B,KAAK00/B,KAAK5m/B,IAAKyn/B,GAASv1/B,KAAKy0/B,KAAK3m/B,IAAK0n/B,GAOzD,QAAS7m/B,GAAI,EAAGA,GAAI3O,KAAKm5nB,WAAYxqnB,KAAK,CACxC,IAGIom/B,GAHAG,GAAUF,GACVG,GAAUF,GAIVQ,GAASL,GACTM,GAASL,GACb,IAAKvn/B,GAAI,EAAGA,IAAK,EAAGA,KAElBin/B,GAAWI,GAAUH,GAAQE,GAAUD,GAGvCQ,KAAmB3n/B,GAAI,IAAM9N,KAAKu0/B,KAAKzm/B,KAFvCon/B,GAFWA,GAAUF,GAAQG,GAAUF,IAIej1/B,KAAKw0/B,KAAK1m/B,KADhEqn/B,GAAUJ,KAEVW,KAAmB5n/B,GAAI,IAAM9N,KAAKw0/B,KAAK1m/B,IAAKon/B,GAAUl1/B,KAAKu0/B,KAAKzm/B,IAAKqn/B,IAGvED,GAAU,EACVC,GAAU,EACV,IAAIQ,GAAS31/B,KAAKu0/B,KAAK,GACnBqB,GAAS51/B,KAAKw0/B,KAAK,GACvB,IAAK1m/B,GAAI,EAAGA,IAAK,EAAGA,KAElBin/B,GAAWI,GAAUH,GAAQE,GAAUD,GAGvCU,IAAkB7n/B,IAAK9N,KAAKu0/B,KAAKzm/B,KAFjCon/B,GAFWA,GAAUF,GAAQG,GAAUF,IAISj1/B,KAAKw0/B,KAAK1m/B,KAD1Dqn/B,GAAUJ,KAEVa,IAAkB9n/B,IAAK9N,KAAKw0/B,KAAK1m/B,IAAKon/B,GAAUl1/B,KAAKu0/B,KAAKzm/B,IAAKqn/B,IAIjE,IAAIU,GAAOF,GAASA,GAASC,GAASA,GACtCZ,IAASS,GAASE,GAASD,GAASE,IAAUC,GAC9CZ,IAASS,GAASC,GAASF,GAASG,IAAUC,GAIhD,IAAIf,GAAQE,GACRJ,GAAWK,GACXa,GAAU,EAEVnB,GAAQ,EACZ,IAAK7m/B,GAAI,EAAGA,IAAK,EAAGA,KAElB6m/B,IAAgB30/B,KAAKmmlB,EAAEr4kB,KADvBgo/B,IAAoBhB,IAMtB,IAAIntB,GAAM3n+B,KAAK62+B,KAAQ8d,GAAQjf,EAAa,IAG5Cjx6B,UAAE96D,EAFQ3J,KAAKk3+B,MAAQ0d,GAGvBnw7B,GAAE3Q,EAAI6z6B,GAEClj6B,IAQP6zU,MALiB,CAAC,uBAAwB,SC7K5C86f,GAAe,CACbph1B,KApCK,gBAqCLiq7B,QA/BK,YAAiBx36B,IACtB,IACIkj6B,GAAMlj6B,GAAE3Q,EAGRi47B,GAAO7P,GAJDz36B,GAAE96D,EAIgB3J,KAAKk3+B,OAC7Bvt+B,GAAI3J,KAAKi1E,GAAKj1E,KAAKmyB,EAAI459B,GACvBj47B,GAAI9zD,KAAK20E,GAAK30E,KAAKmyB,EAAIjlB,KAAK8T,IAAI9T,KAAK8huB,IAAK9huB,KAAK45E,GAAK,EAAM6g5B,GAAM,MAAS,KAE7Elj6B,UAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IAqBP8mtB,QAhBK,YAAiB9mtB,IACtBA,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GAEZ,IAAIqi4B,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQzy6B,GAAE96D,EAAI3J,KAAKmyB,GACzCw18B,GAAM,KAAOz69B,KAAKm6uB,KAAKn6uB,KAAKy4V,IAAI,GAAMlhS,GAAE3Q,EAAI9zD,KAAKmyB,IAAMjlB,KAAK45E,GAAK,GAErEriB,UAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAQP6zU,MALiB,CAAC,qBAAsB,SCgE1Cy9mB,GAAe,CACb/j8B,KAnGK,cAKAhyD,KAAK+5+B,QAIR/5+B,KAAK8N,EAAI,EACT9N,KAAK68B,EAAI,EACT78B,KAAK+7+B,GAAK,EACV/7+B,KAAKg2/B,IAAM9o/B,KAAKqnF,MAAMv0F,KAAK68B,EAAI,GAAK78B,KAAK8N,GACzC9N,KAAKi2/B,IAAMj2/B,KAAKg2/B,KAAOh2/B,KAAK68B,EAAI,IAPhC78B,KAAKy9K,GAAKqq0B,GAAQ9n/B,KAAK+7+B,KA8FzBE,QAhFK,YAAiBx36B,IACtB,IAAI96D,GAAGmqD,GACHkj5B,GAAMvy4B,GAAE96D,EACRg+9B,GAAMlj6B,GAAE3Q,EAKZ,GAFAkj5B,GAAMklC,GAAWllC,GAAMh38B,KAAKk3+B,OAExBl3+B,KAAK+5+B,OAAQ,CACf,GAAK/5+B,KAAK68B,EAKR,QADIuW,GAAIpzC,KAAK8N,EAAIZ,KAAKwkF,IAAIi24B,IACjBh59B,GA1CA,GA0CcA,KAAKA,GAAG,CAC7B,IAAImD,IAAK9R,KAAK68B,EAAI8q8B,GAAMz69B,KAAKwkF,IAAIi24B,IAAOv07B,KAAMpzC,KAAK68B,EAAI3vB,KAAK65E,IAAI4g5B,KAEhE,GADAA,IAAO719B,GACH5E,KAAKiN,IAAIrI,IAAK8j+B,EAChB,WARJjO,GAAiB,IAAX3n+B,KAAK8N,EAAUZ,KAAKyyoB,KAAK3/oB,KAAK8N,EAAIZ,KAAKwkF,IAAIi24B,KAAQA,GAY3Dh+9B,GAAI3J,KAAKmyB,EAAInyB,KAAKi2/B,IAAMj/C,IAAOh38B,KAAK68B,EAAI3vB,KAAK65E,IAAI4g5B,KACjD7z6B,GAAI9zD,KAAKmyB,EAAInyB,KAAKg2/B,IAAMruB,OAGrB,CAEH,IAAI9g+B,GAAIqG,KAAKwkF,IAAIi24B,IACb1n9B,GAAI/S,KAAK65E,IAAI4g5B,IACjB7z6B,GAAI9zD,KAAKmyB,EAAI019B,GAAQlgB,GAAK9g+B,GAAGoZ,GAAGjgB,KAAKy9K,IACrC9zK,GAAI3J,KAAKmyB,EAAI6k7B,GAAM/27B,GAAI/S,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,GAAKl1+B,GAAIA,IAGrD49D,UAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IA6CP8mtB,QA1CK,YAAiB9mtB,IACtB,IAAIkj6B,GAAW3wB,GAAKnw8B,GAEpB49D,UAAE96D,GAAK3J,KAAKi1E,GACZ+h4B,GAAMvy4B,GAAE96D,EAAI3J,KAAKmyB,EACjBsyC,GAAE3Q,GAAK9zD,KAAK20E,GACZgz5B,GAAMlj6B,GAAE3Q,EAAI9zD,KAAKmyB,EAEbnyB,KAAK+5+B,QACPpS,IAAO3n+B,KAAKg2/B,IACZh/C,IAAah38B,KAAKi2/B,KAAOj2/B,KAAK68B,EAAI3vB,KAAK65E,IAAI4g5B,KAC3C3n+B,KAAS68B,EACP8q8B,GAAM+rB,IAAO1z/B,KAAK68B,EAAI8q8B,GAAMz69B,KAAKwkF,IAAIi24B,KAAQ3n+B,KAAK8N,GAEhC,IAAX9N,KAAK8N,IACZ659B,GAAM+rB,GAAMxm/B,KAAKwkF,IAAIi24B,IAAO3n+B,KAAK8N,IAEnCkp8B,GAAMklC,GAAWllC,GAAMh38B,KAAKk3+B,OAC5BvP,GAAM6pB,GAAW7pB,MAGjBA,GAAM0gB,GAAY5j7B,GAAE3Q,EAAI9zD,KAAKmyB,EAAGnyB,KAAK+7+B,GAAI/7+B,KAAKy9K,KAC9C52K,GAAIqG,KAAKiN,IAAIwt9B,KACLgO,GACN9u+B,GAAIqG,KAAKwkF,IAAIi24B,IAGb3wB,GAAMklC,GAFCl8+B,KAAKk3+B,MAAQzy6B,GAAE96D,EAAIuD,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,GAAKl1+B,GAAIA,KAAM7G,KAAKmyB,EAAIjlB,KAAK65E,IAAI4g5B,OAItE9g+B,GAAI+u+B,EAASD,IACrB3+B,GAAMh38B,KAAKk3+B,QAGfzy6B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAQP6zU,MALiB,CAAC,aAAc,SC/BlC49mB,GAAe,CACblk8B,KA7EK,gBA8ELiq7B,QA1EK,YAAiBx36B,IAatB,QARIkj6B,GAAMlj6B,GAAE3Q,EAERk07B,GAAY9L,GAHNz36B,GAAE96D,EAGqB3J,KAAKk3+B,OAClC3x2B,GAAQoi2B,GACR+T,GAAMxu+B,KAAK45E,GAAK55E,KAAKwkF,IAAIi24B,MAIhB,CACX,IAAIwuB,KAAgB5w3B,GAAQr4H,KAAKwkF,IAAI6zC,IAASm22B,KAAQ,EAAIxu+B,KAAK65E,IAAIw+C,KAEnE,GADAA,IAAS4w3B,GACLjp/B,KAAKiN,IAAIg8+B,IAAevgB,EAC1B,MAGJrw2B,IAAS,EAKLr4H,KAAK45E,GAAK,EAAI55E,KAAKiN,IAAIwt9B,IAAOiO,IAChCoS,GAAY,GAEd,IAAIr++B,GAAI,cAAiB3J,KAAKmyB,EAAI619B,GAAY96+B,KAAK65E,IAAIw+C,IAASvlI,KAAKi1E,GACjEnhB,GAAI,gBAAkB9zD,KAAKmyB,EAAIjlB,KAAKwkF,IAAI6zC,IAASvlI,KAAK20E,GAE1DlQ,UAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IA0CP8mtB,QAvCK,YAAiB9mtB,IACtB,IAAI8gE,GACAtnG,GAIJwmC,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GACZ12C,GAAMwmC,GAAE3Q,GAAK,gBAAkB9zD,KAAKmyB,GAKhCjlB,KAAKiN,IAAI8jB,IAAO,gBAClBA,GAAM,eAERsnG,GAAQr4H,KAAKyyoB,KAAK1hnB,IAClB,IAAI+46B,GAAMklC,GAAWl8+B,KAAKk3+B,MAASzy6B,GAAE96D,GAAK,cAAiB3J,KAAKmyB,EAAIjlB,KAAK65E,IAAIw+C,MACzEyx0B,IAAQ9p8B,KAAK45E,KACfkw3B,IAAO9p8B,KAAK45E,IAEVkw3B,GAAM9p8B,KAAK45E,KACbkw3B,GAAM9p8B,KAAK45E,IAEb7oD,IAAO,EAAIsnG,GAAQr4H,KAAKwkF,IAAI,EAAI6zC,KAAUr4H,KAAK45E,GAC3C55E,KAAKiN,IAAI8jB,IAAO,IAClBA,GAAM,GAER,IAAI0p8B,GAAMz69B,KAAKyyoB,KAAK1hnB,IAEpBwmC,UAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAQP6zU,MALiB,CAAC,YAAa,SCmCjCg8mB,GAAe,CACbti8B,KArGK,cAKD9kD,KAAKiN,IAAIna,KAAKkn+B,KAAOln+B,KAAKmn+B,MAAQyO,IAGtC51+B,KAAKmn+B,KAAOnn+B,KAAKmn+B,MAAQnn+B,KAAKkn+B,KAC9Bln+B,KAAK07c,KAAO17c,KAAKkyB,EAAIlyB,KAAKmyB,EAC1BnyB,KAAK+7+B,GAAK,EAAI7u+B,KAAK06F,IAAI5nG,KAAK07c,KAAM,GAClC17c,KAAKiJ,EAAIiE,KAAKqnF,KAAKv0F,KAAK+7+B,IACxB/7+B,KAAKu7F,GAAKm15B,GAAK1w/B,KAAK+7+B,IACpB/7+B,KAAKy7F,GAAKk15B,GAAK3w/B,KAAK+7+B,IACpB/7+B,KAAK6w+B,GAAK+f,GAAK5w/B,KAAK+7+B,IACpB/7+B,KAAKyw/B,GAAKI,GAAK7w/B,KAAK+7+B,IAEpB/7+B,KAAKw7+B,OAAStu+B,KAAKwkF,IAAI1xF,KAAKkn+B,MAC5Bln+B,KAAKy7+B,OAASvu+B,KAAK65E,IAAI/mF,KAAKkn+B,MAE5Bln+B,KAAKsr/B,IAAMtP,GAAMh8+B,KAAKiJ,EAAGjJ,KAAKw7+B,OAAQx7+B,KAAKy7+B,QAC3Cz7+B,KAAKo2/B,IAAMtF,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAIzw/B,KAAKkn+B,MAEzDh69B,KAASiN,IAAIna,KAAKkn+B,KAAOln+B,KAAKmn+B,MAAQyO,EACpC51+B,KAAKm7W,GAAKn7W,KAAKw7+B,QAGfx7+B,KAAKw7+B,OAAStu+B,KAAKwkF,IAAI1xF,KAAKmn+B,MAC5Bnn+B,KAAKy7+B,OAASvu+B,KAAK65E,IAAI/mF,KAAKmn+B,MAC5Bnn+B,KAAKuv/B,IAAMvT,GAAMh8+B,KAAKiJ,EAAGjJ,KAAKw7+B,OAAQx7+B,KAAKy7+B,QAC3Cz7+B,KAAKq2/B,IAAMvF,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAIzw/B,KAAKmn+B,MACzDnn+B,KAAKm7W,IAAMn7W,KAAKsr/B,IAAMtr/B,KAAKuv/B,MAAQvv/B,KAAKq2/B,IAAMr2/B,KAAKo2/B,MAErDp2/B,KAAKwvD,EAAIxvD,KAAKo2/B,IAAMp2/B,KAAKsr/B,IAAMtr/B,KAAKm7W,GACpCn7W,KAAK+n/B,IAAM+I,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAIzw/B,KAAK62+B,MACzD72+B,KAAKw/rB,GAAKx/rB,KAAKmyB,GAAKnyB,KAAKwvD,EAAIxvD,KAAK+n/B,OAmElC9L,QA9DK,YAAiBx36B,IACtB,IAEIkr7B,GAFA34C,GAAMvy4B,GAAE96D,EACRg+9B,GAAMlj6B,GAAE3Q,EAKZ,GAAI9zD,KAAK+5+B,OACP4V,GAAM3v/B,KAAKmyB,GAAKnyB,KAAKwvD,EAAIm46B,QAEtB,CACH,IAAIvx9B,GAAK06+B,GAAK9w/B,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,GAAI9oB,IAClDgoB,GAAM3v/B,KAAKmyB,GAAKnyB,KAAKwvD,EAAIp5C,IAE3B,IAAImvH,GAAQvlI,KAAKm7W,GAAK+goB,GAAWllC,GAAMh38B,KAAKk3+B,OACxCvt+B,GAAI3J,KAAKi1E,GAAK066B,GAAMzi/B,KAAKwkF,IAAI6zC,IAC7BzxE,GAAI9zD,KAAK20E,GAAK30E,KAAKw/rB,GAAKmwT,GAAMzi/B,KAAK65E,IAAIw+C,IAC3C9gE,UAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IA4CP8mtB,QAvCK,YAAiB9mtB,IAGtB,IAAIi36B,GAAKiU,GAAKhoB,GAAK3wB,GAFnBvy4B,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,EAAI9zD,KAAKw/rB,GAAK/6nB,GAAE3Q,EAAI9zD,KAAK20E,GAEvB30E,KAAKm7W,IAAM,GACbw0oB,GAAMzi/B,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,GACpC4n7B,GAAM,IAGNiU,IAAOzi/B,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,GACrC4n7B,IAAM,GAER,IAAIn22B,GAAQ,EAKZ,OAJY,IAARoq3B,KACFpq3B,GAAQr4H,KAAKqkF,MAAMmq5B,GAAMj36B,GAAE96D,EAAG+x+B,GAAMj36B,GAAE3Q,IAGpC9zD,KAAK+5+B,QACP/iC,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQ3x2B,GAAQvlI,KAAKm7W,IAC3CwsnB,GAAM6pB,GAAWxx/B,KAAKwvD,EAAImg8B,GAAM3v/B,KAAKmyB,GACrCsyC,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,KAIPkj6B,GAAMwpB,GADGnx/B,KAAKwvD,EAAImg8B,GAAM3v/B,KAAKmyB,EACbnyB,KAAKu7F,GAAIv7F,KAAKy7F,GAAIz7F,KAAK6w+B,GAAI7w+B,KAAKyw/B,IAChDz5C,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQ3x2B,GAAQvlI,KAAKm7W,IAC3C12S,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,KAUT6zU,MALiB,CAAC,oBAAqB,SCazCg+mB,GAAe,CACbtk8B,KApHK,cAELhyD,KAAK2P,EAAI3P,KAAKmyB,GAmHd8p9B,QAhHK,YAAiBx36B,IAEtB,IAMI96D,GAAGmqD,GALH6z6B,GAAMlj6B,GAAE3Q,EAIRi47B,GAAO7P,GALDz36B,GAAE96D,EAKgB3J,KAAKk3+B,OAG7Bhq+B,KAAKiN,IAAIwt9B,KAAQiO,IACnBjs+B,GAAI3J,KAAKi1E,GAAKj1E,KAAK2P,EAAIo8+B,GACvBj47B,GAAI9zD,KAAK20E,IAEX,IAAI4wD,GAAQmu3B,GAAM,EAAIxm/B,KAAKiN,IAAIwt9B,GAAMz69B,KAAK45E,MACrC55E,KAAKiN,IAAI4x+B,KAASnW,GAAW1o+B,KAAKiN,IAAIjN,KAAKiN,IAAIwt9B,IAAOgO,IAAYC,KACrEjs+B,GAAI3J,KAAKi1E,GAEPnhB,GADE6z6B,IAAO,EACL3n+B,KAAK20E,GAAKznE,KAAK45E,GAAK9mF,KAAK2P,EAAIzC,KAAK8huB,IAAI,GAAMzpmB,IAG5CvlI,KAAK20E,GAAKznE,KAAK45E,GAAK9mF,KAAK2P,GAAKzC,KAAK8huB,IAAI,GAAMzpmB,KAIrD,IAAI/a,GAAK,GAAMt9G,KAAKiN,IAAKjN,KAAK45E,GAAKil6B,GAASA,GAAO7++B,KAAK45E,IACpDoq6B,GAAM1m4B,GAAKA,GACX+r4B,GAAQrp/B,KAAKwkF,IAAI6zC,IACjBix3B,GAAQtp/B,KAAK65E,IAAIw+C,IAEjB/1E,GAAIgn8B,IAASD,GAAQC,GAAQ,GAE7B359B,GAAI2yB,IAAK,EAAI+m8B,GAAQ,GACrBE,GAAM559B,GAAIA,GACV6+8B,GAAMxu+B,KAAK45E,GAAK9mF,KAAK2P,GAAK66G,IAAMh7D,GAAIin8B,IAAOvp/B,KAAKqnF,KAAK285B,IAAO1h8B,GAAIin8B,KAAQjn8B,GAAIin8B,KAAQA,GAAMvF,KAHpF1h8B,GAAIA,GAG8Fin8B,OAAUA,GAAMvF,IACxHnF,GAAO,IACTrQ,IAAOA,IAET/x+B,GAAI3J,KAAKi1E,GAAKym6B,GAEd,IAAIlp+B,GAAI0++B,GAAM1h8B,GACdks7B,UAAMxu+B,KAAK45E,GAAK9mF,KAAK2P,GAAKktB,GAAIrqB,GAAIg4G,GAAKt9G,KAAKqnF,MAAMki6B,GAAMvF,KAAQA,GAAM,GAAK1++B,GAAIA,MAAOik/B,GAAMvF,IAG1Fp97B,GAFE6z6B,IAAO,EAEL3n+B,KAAK20E,GAAK+m6B,GAIV17+B,KAAK20E,GAAK+m6B,GAEhBj36B,GAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IA6DP8mtB,QAxDK,YAAiB9mtB,IACtB,IAAIuy4B,GAAK2wB,GACL+uB,GAAI9zG,GAAI+zG,GAAKts5B,GAAIC,GAAIC,GACrB6mR,GACAwloB,GACAlb,GACAmb,GAKJpy7B,UAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GACZ+m6B,GAAMxu+B,KAAK45E,GAAK9mF,KAAK2P,EAGrBgn/B,IAFAD,GAAKjy7B,GAAE96D,EAAI+x+B,IAEAgb,IADX9zG,GAAKn+0B,GAAE3Q,EAAI4n7B,IACU94F,GAOrB84F,GAAQ,GAHJ94F,GAAKA,IADTr4yB,IAAK,GAFLF,IAAMn9F,KAAKiN,IAAIyo4B,KAAO,EAAI+zG,KAEX,EAAI,EAAI/zG,GAAKA,GAAK+zG,GAAMA,KACnB,GAFpBrs5B,GAAKD,GAAK,EAAIu4yB,GAAKA,GAAK8zG,GAAKA,IAEAps5B,GAAKA,GAAKC,GAAKA,GAAKA,GAAK,EAAIF,GAAKC,GAAKC,GAAKA,IAAM,KAC/E6mR,IAAM/mR,GAAKC,GAAKA,GAAK,EAAIC,IAAMA,KAC/Bqs5B,GAAK,EAAI1p/B,KAAKqnF,MAAM68R,GAAK,IAErBlkX,KAAKiN,IAAIuh+B,IAAO,IAEhBA,GADEA,IAAO,EACH,GAGA,GAGVmb,GAAM3p/B,KAAKkouB,KAAKsmQ,IAAO,EAErB/T,GADElj6B,GAAE3Q,GAAK,IACD8i8B,GAAK1p/B,KAAK65E,IAAI8v6B,GAAM3p/B,KAAK45E,GAAK,GAAKwjB,GAAK,EAAIC,IAAMr9F,KAAK45E,MAGtD8v6B,GAAK1p/B,KAAK65E,IAAI8v6B,GAAM3p/B,KAAK45E,GAAK,GAAKwjB,GAAK,EAAIC,IAAMr9F,KAAK45E,GAIhEkw3B,GADE9p8B,KAAKiN,IAAIu8+B,IAAM9gB,EACX51+B,KAAKk3+B,MAGLgF,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAK45E,IAAM6v6B,GAAM,EAAIzp/B,KAAKqnF,KAAK,EAAI,GAAKmi6B,GAAKA,GAAK9zG,GAAKA,IAAM+zG,GAAMA,KAAQ,EAAID,IAG/Gjy7B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAQP6zU,MALiB,CAAC,oBAAqB,gBAAiB,UCgF1DhtR,GAAe,CACbt5D,KA7LK,cACLhyD,KAAK82/B,QAAU5p/B,KAAKwkF,IAAI1xF,KAAK62+B,MAC7B72+B,KAAK+2/B,QAAU7p/B,KAAK65E,IAAI/mF,KAAK62+B,OA4L7BoF,QAzLK,YAAiBx36B,IACtB,IAKI82B,GAAIE,GAAIo14B,GAAI4f,GAAIuG,GAAKC,GAAI9C,GAAQ+C,GAAKC,GAAIC,GAAKC,GAAIju2B,GAAG9yH,GAAGgh+B,GAAIC,GAAIt3+B,GAAGu3+B,GAAIC,GAAO5w/B,GAAGksF,GAAI2k6B,GAAIC,GAL1F3gD,GAAMvy4B,GAAE96D,EACRg+9B,GAAMlj6B,GAAE3Q,EACR0n7B,GAAStu+B,KAAKwkF,IAAIjtB,GAAE3Q,GACpB2n7B,GAASvu+B,KAAK65E,IAAItiB,GAAE3Q,GACpBi47B,GAAO7P,GAAWllC,GAAMh38B,KAAKk3+B,OAEjC,OAAIl3+B,KAAK+5+B,OACH7s+B,KAAKiN,IAAIna,KAAK82/B,QAAU,IAAMlhB,GAEhCnx6B,GAAE96D,EAAI3J,KAAKi1E,GAAKj1E,KAAKmyB,GAAKwj9B,EAAUhO,IAAOz69B,KAAKwkF,IAAIq65B,IACpDtn7B,GAAE3Q,EAAI9zD,KAAK20E,GAAK30E,KAAKmyB,GAAKwj9B,EAAUhO,IAAOz69B,KAAK65E,IAAIgl6B,IAC7Ctn7B,IAEAv3D,KAAKiN,IAAIna,KAAK82/B,QAAU,IAAMlhB,GAErCnx6B,GAAE96D,EAAI3J,KAAKi1E,GAAKj1E,KAAKmyB,GAAKwj9B,EAAUhO,IAAOz69B,KAAKwkF,IAAIq65B,IACpDtn7B,GAAE3Q,EAAI9zD,KAAK20E,GAAK30E,KAAKmyB,GAAKwj9B,EAAUhO,IAAOz69B,KAAK65E,IAAIgl6B,IAC7Ctn7B,KAIPgz7B,GAAQz3/B,KAAK82/B,QAAUtb,GAASx7+B,KAAK+2/B,QAAUtb,GAASvu+B,KAAK65E,IAAIgl6B,IAEjEyL,IADAv3+B,GAAI/S,KAAKkouB,KAAKqiR,KACLx3+B,GAAI/S,KAAKwkF,IAAIzxE,IAAK,EAC3BwkD,GAAE96D,EAAI3J,KAAKi1E,GAAKj1E,KAAKmyB,EAAIql+B,GAAK/b,GAASvu+B,KAAKwkF,IAAIq65B,IAChDtn7B,GAAE3Q,EAAI9zD,KAAK20E,GAAK30E,KAAKmyB,EAAIql+B,IAAMx3/B,KAAK+2/B,QAAUvb,GAASx7+B,KAAK82/B,QAAUrb,GAASvu+B,KAAK65E,IAAIgl6B,KACjFtn7B,KAIT82B,GAAKm15B,GAAK1w/B,KAAK+7+B,IACftg5B,GAAKk15B,GAAK3w/B,KAAK+7+B,IACflL,GAAK+f,GAAK5w/B,KAAK+7+B,IACf0U,GAAKI,GAAK7w/B,KAAK+7+B,IACX7u+B,KAAKiN,IAAIna,KAAK82/B,QAAU,IAAMlhB,GAEhCohB,GAAMh3/B,KAAKmyB,EAAI2+9B,GAAKv15B,GAAIE,GAAIo14B,GAAI4f,GAAI9a,GACpCshB,GAAKj3/B,KAAKmyB,EAAI2+9B,GAAKv15B,GAAIE,GAAIo14B,GAAI4f,GAAI9oB,IACnClj6B,GAAE96D,EAAI3J,KAAKi1E,IAAM+h7B,GAAMC,IAAM/p/B,KAAKwkF,IAAIq65B,IACtCtn7B,GAAE3Q,EAAI9zD,KAAK20E,IAAMqi7B,GAAMC,IAAM/p/B,KAAK65E,IAAIgl6B,IAC/Btn7B,IAEAv3D,KAAKiN,IAAIna,KAAK82/B,QAAU,IAAMlhB,GAErCohB,GAAMh3/B,KAAKmyB,EAAI2+9B,GAAKv15B,GAAIE,GAAIo14B,GAAI4f,GAAI9a,GACpCshB,GAAKj3/B,KAAKmyB,EAAI2+9B,GAAKv15B,GAAIE,GAAIo14B,GAAI4f,GAAI9oB,IACnClj6B,GAAE96D,EAAI3J,KAAKi1E,IAAM+h7B,GAAMC,IAAM/p/B,KAAKwkF,IAAIq65B,IACtCtn7B,GAAE3Q,EAAI9zD,KAAK20E,IAAMqi7B,GAAMC,IAAM/p/B,KAAK65E,IAAIgl6B,IAC/Btn7B,KAIP0v7B,GAAS3Y,GAASC,GAClByb,GAAMjG,GAAGjx/B,KAAKmyB,EAAGnyB,KAAKiJ,EAAGjJ,KAAK82/B,SAC9BK,GAAKlG,GAAGjx/B,KAAKmyB,EAAGnyB,KAAKiJ,EAAGuy+B,IACxB4b,GAAMlq/B,KAAKm6uB,MAAM,EAAIrnvB,KAAK+7+B,IAAMoY,GAASn0/B,KAAK+7+B,GAAKmb,GAAMl3/B,KAAK82/B,SAAWK,GAAK1b,KAG5E50+B,GADS,KADXww/B,GAAKnq/B,KAAKqkF,MAAMrkF,KAAKwkF,IAAIq65B,IAAO/r/B,KAAK+2/B,QAAU7p/B,KAAK8huB,IAAIooR,IAAOp3/B,KAAK82/B,QAAU5p/B,KAAK65E,IAAIgl6B,MAEjF7++B,KAAKyyoB,KAAK3/oB,KAAK+2/B,QAAU7p/B,KAAKwkF,IAAI0l6B,IAAOp3/B,KAAK82/B,QAAU5p/B,KAAK65E,IAAIqw6B,KAE9Dlq/B,KAAKiN,IAAIjN,KAAKiN,IAAIk9+B,IAAMnq/B,KAAK45E,KAAO8u5B,GACtC1o+B,KAAKyyoB,KAAK3/oB,KAAK+2/B,QAAU7p/B,KAAKwkF,IAAI0l6B,IAAOp3/B,KAAK82/B,QAAU5p/B,KAAK65E,IAAIqw6B,KAGlElq/B,KAAKyyoB,KAAKzyoB,KAAKwkF,IAAIq65B,IAAQ7++B,KAAK65E,IAAIqw6B,IAAOlq/B,KAAKwkF,IAAI2l6B,KAE1Dju2B,GAAIppJ,KAAKiJ,EAAIjJ,KAAK82/B,QAAU5p/B,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,IAC/Czl9B,GAAIt2B,KAAKiJ,EAAIjJ,KAAK+2/B,QAAU7p/B,KAAK65E,IAAIsw6B,IAAMnq/B,KAAKqnF,KAAK,EAAIv0F,KAAK+7+B,IAQ9Dt36B,GAAE96D,EAAI3J,KAAKi1E,IADXh1D,GAAIi3+B,GAAMrw/B,IAAK,GAJfksF,GAAKlsF,GAAIA,KADT0w/B,GAAKjh+B,GAAIA,KAKqB,EAAIih+B,IAAM,GAHxCG,GAAK3k6B,GAAKlsF,IAGuC,GANjDyw/B,GAAKlu2B,GAAI9yH,KAMkD,EAAI,EAAIih+B,KAFnEI,GAAKD,GAAK7w/B,IAEoE,KAAO0w/B,IAAM,EAAI,EAAIA,IAAM,EAAInu2B,GAAIA,IAAK,EAAI,EAAImu2B,KADzHI,GAAK9w/B,GACgI,GAAKyw/B,KAC3Hpq/B,KAAKwkF,IAAI2l6B,IAC7B5y7B,GAAE3Q,EAAI9zD,KAAK20E,GAAK10D,GAAI/S,KAAK65E,IAAIsw6B,IACtB5y7B,MA4GX8mtB,QArGK,YAAiB9mtB,IAGtB,IAAI+6nB,GAAInwiB,GAAG0j2B,GAAMD,GAAM97C,GAAK2wB,GAAK+T,GAAKng5B,GAAIE,GAAIo14B,GAAI4f,GAAIuG,GAAQxvsB,GAAI4vsB,GAAKC,GAAIO,GAAOhn/B,GAAK2wT,GAAG7xT,GAAGy2kB,GAAGkzZ,GAAIjzZ,GAAGyxa,GACvG,OAHApz7B,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GAER30E,KAAK+5+B,QACPv6S,GAAKtyrB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,IACzB,EAAI6h7B,EAAU31+B,KAAKmyB,OAC3B,GAEFk9H,GAAImwiB,GAAKx/rB,KAAKmyB,EAEd4g+B,GAAO7l/B,KAAKwkF,IAAI29D,IAChByj2B,GAAO5l/B,KAAK65E,IAAIsoE,IAEhB2nzB,GAAMh38B,KAAKk3+B,MACXhq+B,KAASiN,IAAIqlrB,KAAOo2S,EAClBjO,GAAM3n+B,KAAK62+B,MAGXlP,GAAM+rB,GAAMZ,GAAO9y/B,KAAK82/B,QAAWry7B,GAAE3Q,EAAIi/7B,GAAO/y/B,KAAK+2/B,QAAWv3T,IAChEk8S,GAAMxu+B,KAAKiN,IAAIna,KAAK62+B,MAAQlB,EAGxB3+B,GAFA9p8B,KAAKiN,IAAIuh+B,KAAQ9F,EAEXsG,GADJl8+B,KAAK62+B,MAAQ,EACE72+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,GAAK86D,GAAE3Q,GAGjC9zD,KAAKk3+B,MAAQhq+B,KAAKqkF,OAAO9sB,GAAE96D,EAAG86D,GAAE3Q,IAW7Coo7B,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,EAAIop/B,GAAMvzT,GAAKx/rB,KAAK+2/B,QAAUjE,GAAOru7B,GAAE3Q,EAAI9zD,KAAK82/B,QAAU/D,MAIzGtu7B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,KAGP82B,GAAKm15B,GAAK1w/B,KAAK+7+B,IACftg5B,GAAKk15B,GAAK3w/B,KAAK+7+B,IACflL,GAAK+f,GAAK5w/B,KAAK+7+B,IACf0U,GAAKI,GAAK7w/B,KAAK+7+B,IACX7u+B,KAAKiN,IAAIna,KAAK82/B,QAAU,IAAMlhB,GAKhCjO,GAAMwpB,KAHN6F,GAAMh3/B,KAAKmyB,EAAI2+9B,GAAKv15B,GAAIE,GAAIo14B,GAAI4f,GAAI9a,KACpCn2S,GAAKtyrB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,KAEnB9zD,KAAKmyB,EAAGopE,GAAIE,GAAIo14B,GAAI4f,IACpCz5C,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,GAAG,EAAM86D,GAAE3Q,IACtD2Q,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,IAEAv3D,KAAKiN,IAAIna,KAAK82/B,QAAU,IAAMlhB,GAErCohB,GAAMh3/B,KAAKmyB,EAAI2+9B,GAAKv15B,GAAIE,GAAIo14B,GAAI4f,GAAI9a,GAIpChO,GAAMwpB,KAHN3xT,GAAKtyrB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,IAC1Bkj8B,IAEOh3/B,KAAKmyB,EAAGopE,GAAIE,GAAIo14B,GAAI4f,IACpCz5C,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,EAAG86D,GAAE3Q,IAChD2Q,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,KAIP+6nB,GAAKtyrB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,GACnCuj8B,GAAKnq/B,KAAKqkF,MAAM9sB,GAAE96D,EAAG86D,GAAE3Q,GACvB0zP,GAAKypsB,GAAGjx/B,KAAKmyB,EAAGnyB,KAAKiJ,EAAGjJ,KAAK82/B,SAC7Bc,GAAQ1q/B,KAAK65E,IAAIsw6B,IAGjB3n/B,GAAI,EAAI1P,KAAK+7+B,IAAM,GADnBx6qB,KADA3wT,GAAM5Q,KAAKiJ,EAAIjJ,KAAK+2/B,QAAUa,IACnBhn/B,IAAO,EAAI5Q,KAAK+7+B,MACC/7+B,KAAK82/B,QAAU92/B,KAAK+2/B,QAAUa,IAAS,EAAI53/B,KAAK+7+B,IAG5E31Z,GAAI,EAAI7kR,IADR83qB,IADAlzZ,GAAIq5G,GAAKh4Y,IACA+Z,IAAK,EAAIA,IAAKr0T,KAAK06F,IAAIu+e,GAAG,GAAK,EAAIz2kB,IAAK,EAAI,EAAI6xT,IAAKr0T,KAAK06F,IAAIu+e,GAAG,GAAK,IAC9DkzZ,GAAK,EAAIlzZ,GAAIkzZ,GAAKA,GAAKA,GAAK,EAC7C+d,GAAMlq/B,KAAKyyoB,KAAK3/oB,KAAK82/B,QAAU5p/B,KAAK65E,IAAIsy5B,IAAMr5+B,KAAK+2/B,QAAU7p/B,KAAKwkF,IAAI2n5B,IAAMue,IAC5E5gD,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAKyyoB,KAAKzyoB,KAAKwkF,IAAI2l6B,IAAMnq/B,KAAKwkF,IAAI2n5B,IAAMns+B,KAAK65E,IAAIqw6B,MAC/ES,GAAS3q/B,KAAKwkF,IAAI0l6B,IAClBzvB,GAAMz69B,KAAKqkF,OAAOsm6B,GAAS73/B,KAAK+7+B,GAAK31Z,GAAIpmlB,KAAK82/B,SAAW5p/B,KAAK8huB,IAAIooR,IAAMS,IAAU,EAAI73/B,KAAK+7+B,KAC3Ft36B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,MAWX6zU,MALiB,CAAC,wBAAyB,SCpH7Cw/mB,GAAe,CACb9l8B,KAlFK,cAKLhyD,KAAK4z/B,QAAU1m/B,KAAKwkF,IAAI1xF,KAAK62+B,MAC7B72+B,KAAK6z/B,QAAU3m/B,KAAK65E,IAAI/mF,KAAK62+B,OA6E7BoF,QAxEK,YAAiBx36B,IACtB,IAAI+26B,GAAQC,GACRsQ,GACAgI,GAEAvk8B,GAAG7lD,GAAGmqD,GAEN6z6B,GAAMlj6B,GAAE3Q,EAGZi47B,UAAO7P,GAJGz36B,GAAE96D,EAIY3J,KAAKk3+B,OAE7BsE,GAAStu+B,KAAKwkF,IAAIi24B,IAClB8T,GAASvu+B,KAAK65E,IAAI4g5B,IAElBosB,GAAS7m/B,KAAK65E,IAAIgl6B,MAClBv87B,GAAIxvD,KAAK4z/B,QAAUpY,GAASx7+B,KAAK6z/B,QAAUpY,GAASsY,IAE3C,GAAO7m/B,KAAKiN,IAAIq1C,KAAMom7B,KAC7Bjs+B,GAFI,EAEA3J,KAAKmyB,EAAUsp9B,GAASvu+B,KAAKwkF,IAAIq65B,IACrCj47B,GAAI9zD,KAAK20E,GAHL,EAGU30E,KAAKmyB,GAAWnyB,KAAK6z/B,QAAUrY,GAASx7+B,KAAK4z/B,QAAUnY,GAASsY,KAEhFtv7B,GAAE96D,EAAIA,GACN86D,GAAE3Q,EAAIA,GACC2Q,IAiDP8mtB,QA9CK,YAAiB9mtB,IACtB,IAAI+6nB,GACAnwiB,GACA0j2B,GAAMD,GACNpX,GACA1kC,GAAK2wB,GAYT,OATAlj6B,GAAE96D,GAAK3J,KAAKi1E,GACZxQ,GAAE3Q,GAAK9zD,KAAK20E,GAEZ06E,GAAIqk2B,IADJl0T,GAAKtyrB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,IACpB9zD,KAAKmyB,GAEpB4g+B,GAAO7l/B,KAAKwkF,IAAI29D,IAChByj2B,GAAO5l/B,KAAK65E,IAAIsoE,IAEhB2nzB,GAAMh38B,KAAKk3+B,MACPhq+B,KAAKiN,IAAIqlrB,KAAOo2S,GAClBjO,GAAM3n+B,KAAK62+B,KACXpy6B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,KAETkj6B,GAAM+rB,GAAMZ,GAAO9y/B,KAAK4z/B,QAAWnv7B,GAAE3Q,EAAIi/7B,GAAO/y/B,KAAK6z/B,QAAWr0T,IAChEk8S,GAAMxu+B,KAAKiN,IAAIna,KAAK62+B,MAAQlB,EACxBzo+B,KAAKiN,IAAIuh+B,KAAQ9F,GAEjB5+B,GAAMklC,GADJl8+B,KAAK62+B,MAAQ,EACE72+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAM9sB,GAAE96D,GAAK86D,GAAE3Q,GAGjC9zD,KAAKk3+B,MAAQhq+B,KAAKqkF,OAAO9sB,GAAE96D,EAAG86D,GAAE3Q,IAEnD2Q,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,KAETuy4B,GAAMklC,GAAWl8+B,KAAKk3+B,MAAQhq+B,KAAKqkF,MAAO9sB,GAAE96D,EAAIop/B,GAAOvzT,GAAKx/rB,KAAK6z/B,QAAUf,GAAOru7B,GAAE3Q,EAAI9zD,KAAK4z/B,QAAUb,KACvGtu7B,GAAE96D,EAAIqt8B,GACNvy4B,GAAE3Q,EAAI6z6B,GACClj6B,MAQP6zU,MALiB,CAAC,UCkPpB,YAAkCqjmB,GAAK7n7B,GAAGnqD,GAAGo/I,IAC3C,IAAIxjB,GACJ,OAAIo22B,GAAM/F,GACR7s1B,GAAKplJ,MAzTG,EA0TR4hI,GAAQ,IAERA,GAAQr4H,KAAKqkF,MAAMz9B,GAAGnqD,IAClBuD,KAAKiN,IAAIorH,KAAUww2B,EACrBht1B,GAAKplJ,MA9TC,EA+TG4hI,GAAQww2B,GAAUxw2B,IAASow2B,EAAUI,GAC9Cht1B,GAAKplJ,MA/TC,EAgUN4hI,IAASow2B,GACApw2B,GAAQow2B,EAAUI,GAAUxw2B,MAAWow2B,EAAUI,IAC1Dht1B,GAAKplJ,MAjUC,EAkUN4hI,GAASA,IAAS,EAAMA,GAAQ0w2B,EAAM1w2B,GAAQ0w2B,IAE9Clt1B,GAAKplJ,MAnUC,EAoUN4hI,IAASow2B,IAGNpw2B,GAIT,YAA8Byx0B,GAAK5k7B,IACjC,IAAI2l+B,GAAO/gD,GAAM5k7B,GACjB,OAAI2l+B,IAAQ9hB,EACV8hB,IAAQ/hB,EACC+hB,IAAQ9hB,IACjB8hB,IAAQ/hB,GAEH+hB,GAIT,SAAe,CACb/l8B,KApVK,cAELhyD,KAAKi1E,GAAKj1E,KAAKi1E,IAAM,EACrBj1E,KAAK20E,GAAK30E,KAAK20E,IAAM,EACrB30E,KAAK62+B,KAAO72+B,KAAK62+B,MAAQ,EACzB72+B,KAAKk3+B,MAAQl3+B,KAAKk3+B,OAAS,EAC3Bl3+B,KAAKg3+B,OAASh3+B,KAAKg3+B,QAAU,EAC7Bh3+B,KAAK4sD,MAAQ5sD,KAAK4sD,OAAS,mCAIzB5sD,KAAKg4/B,KADPh4/B,KAAS62+B,MAAQlB,EAAUI,EAAS,EArB7B,EAuBA/1+B,KAAS62+B,QAAUlB,EAAUI,EAAS,GAtBnC,EAwBC7o+B,KAAKiN,IAAIna,KAAKk3+B,QAAUnB,EA7B1B,EA+BF7o+B,KAASiN,IAAIna,KAAKk3+B,QAAUvB,EAAUI,EAC/B/1+B,KAAKk3+B,MAAQ,EA/BlB,EAED,EADA,EAqCQ,IAAZl3+B,KAAK+7+B,KACP/7+B,KAAKi4/B,YAAc,GAAKj4/B,KAAKmyB,EAAInyB,KAAKkyB,GAAKlyB,KAAKmyB,EAChDnyB,KAAKk4/B,oBAAsBl4/B,KAAKi4/B,YAAcj4/B,KAAKi4/B,cA2TrDhc,QArTK,YAAiBx36B,IACtB,IACIkj6B,GAAK3wB,GACLzx0B,GAAOo22B,GACPvt8B,GAAG238B,GAHHoS,GAAK,CAACxu/B,EAAG,EAAGmqD,EAAG,GAKfi1F,GAAO,CAACplJ,MAAO,GAoBnB,GAjBA8gE,GAAE96D,GAAK3J,KAAKk3+B,MAMVvP,GADc,IAAZ3n+B,KAAK+7+B,GACD7u+B,KAAKm6uB,KAAKrnvB,KAAKk4/B,oBAAsBhr/B,KAAK8huB,IAAIvqqB,GAAE3Q,IAEhD2Q,GAAE3Q,EAQVkj5B,GAAMvy4B,GAAE96D,EApED,IAqEH3J,KAAKg4/B,KACPrc,GAAMhG,EAAUhO,GACZ3wB,IAAO++B,GAAU/+B,IAAO2+B,EAAUI,GACpCht1B,GAAKplJ,MAnEC,EAoEN4hI,GAAQyx0B,GAAM2+B,GACT8C,GAAU9C,EAAUI,GAAU/+B,MAAS2+B,EAAUI,IACtDht1B,GAAKplJ,MArEC,EAsEN4hI,GAASyx0B,GAAM,EAAMA,GAAMi/B,EAAMj/B,GAAMi/B,GAClCwC,KAAY9C,EAAUI,IAAW/+B,KAAQ++B,GAC9Cht1B,GAAKplJ,MAvEC,EAwEN4hI,GAAQyx0B,GAAM2+B,IAEd5s1B,GAAKplJ,MAzEC,EA0EN4hI,GAAQyx0B,YAjFF,IAmFCh38B,KAAKg4/B,KACdrc,GAAMhG,EAAUhO,GACZ3wB,IAAO++B,GAAU/+B,IAAO2+B,EAAUI,GACpCht1B,GAAKplJ,MAlFC,EAmFN4hI,IAASyx0B,GAAM2+B,GACV8C,GAAU1C,GAAU/+B,KAAQ++B,GACjCht1B,GAAKplJ,MApFC,EAqFN4hI,IAASyx0B,IACAA,IAAO++B,GAAU/+B,MAAS2+B,EAAUI,IAC7Cht1B,GAAKplJ,MAtFC,EAuFN4hI,IAASyx0B,GAAM2+B,IAEf5s1B,GAAKplJ,MAxFC,EAyFN4hI,GAASyx0B,GAAM,GAAOA,GAAMi/B,GAAOj/B,GAAMi/B,OAEtC,CACL,IAAIzj+B,GAAGq+C,GAAGhqD,GACNgl/B,GAAQC,GACRsM,GAzGG,IA2GHp4/B,KAAKg4/B,KACPhhD,GAAMqhD,GAAqBrhD,IAAM2+B,GA3G7B,IA4GC31+B,KAASg4/B,KACdhhD,GAAMqhD,GAAqBrhD,IAAMi/B,GA5G7B,IA6GKj2+B,KAAKg4/B,OACdhhD,GAAMqhD,GAAqBrhD,IAAM2+B,IAEnCkW,GAAS3++B,KAAKwkF,IAAIi24B,IAClBmkB,GAAS5++B,KAAK65E,IAAI4g5B,IAClBywB,GAASlr/B,KAAKwkF,IAAIsl3B,IAElBxk8B,GAAIs5+B,GADK5++B,KAAK65E,IAAIiw3B,IAElBnm5B,GAAIi77B,GAASsM,GACbvx/B,GAAIgl/B,GAzHG,IA2HP7r/B,KAASg4/B,KAEPzy3B,GAAQ+y3B,GADR3c,GAAMzu+B,KAAKkouB,KAAK5iuB,IACsB3L,GAAGgqD,GAAGk4F,IA5HvC,IA6HA/oJ,KAASg4/B,KAEdzy3B,GAAQ+y3B,GADR3c,GAAMzu+B,KAAKkouB,KAAKvkrB,IACsBhqD,IAAI2L,GAAGu2I,IA9HzC,IA+HC/oJ,KAASg4/B,KAEdzy3B,GAAQ+y3B,GADR3c,GAAMzu+B,KAAKkouB,MAAM5iuB,IACqB3L,IAAIgqD,GAAGk4F,IAhIzC,IAiIK/oJ,KAAKg4/B,KAEdzy3B,GAAQ+y3B,GADR3c,GAAMzu+B,KAAKkouB,MAAMvkrB,IACqBhqD,GAAG2L,GAAGu2I,KAG5C4y1B,GAAMp22B,GAAQ,EACdwjB,GAAKplJ,MAjIC,GAwIVoi/B,UAAK74+B,KAAKm6uB,KAAM,GAAK4uP,GAAQ1w2B,GAAQr4H,KAAKkouB,KAAKlouB,KAAKwkF,IAAI6zC,IAASr4H,KAAK65E,IAAIgv5B,IAAWJ,IACrFvn8B,GAAIlhC,KAAKqnF,MAAM,EAAIrnF,KAAK65E,IAAI405B,MAASzu+B,KAAK65E,IAAIg/5B,IAAM74+B,KAAK65E,IAAIg/5B,MAAQ,EAAI74+B,KAAK65E,IAAI75E,KAAKm6uB,KAAK,EAAIn6uB,KAAK65E,IAAIw+C,QAxI/F,IA2INwjB,GAAKplJ,MACPoi/B,IAAMpQ,EA3IE,IA4IHxmc,GAASxriB,MACdoi/B,IAAM9P,EA5IE,IA6IClt1B,GAAKplJ,QACdoi/B,IAAM,IAAM9P,GAIdkiB,GAAGxu/B,EAAIykC,GAAIlhC,KAAK65E,IAAIg/5B,IACpBoS,GAAGrk8B,EAAI1lB,GAAIlhC,KAAKwkF,IAAIq05B,IACpBoS,GAAGxu/B,EAAIwu/B,GAAGxu/B,EAAI3J,KAAKmyB,EAAInyB,KAAKi1E,GAC5Bkj7B,GAAGrk8B,EAAIqk8B,GAAGrk8B,EAAI9zD,KAAKmyB,EAAInyB,KAAK20E,GAE5BlQ,GAAE96D,EAAIwu/B,GAAGxu/B,EACT86D,GAAE3Q,EAAIqk8B,GAAGrk8B,EACF2Q,IAgMP8mtB,QA3LK,YAAiB9mtB,IACtB,IACIsh7B,GAAIwS,GAAIC,GAAOC,GACfC,GAAUnz3B,GAAOk22B,GAAQE,GACzBvt8B,GA8HEuq9B,GACAxE,GAAQz+pB,GAlIVwmW,GAAK,CAAC60T,IAAK,EAAGpV,IAAK,GAInB5y1B,GAAO,CAACplJ,MAAO,GA4CnB,GAzCA8gE,GAAE96D,GAAK86D,GAAE96D,EAAI3J,KAAKi1E,IAAMj1E,KAAKmyB,EAC7BsyC,GAAE3Q,GAAK2Q,GAAE3Q,EAAI9zD,KAAK20E,IAAM30E,KAAKmyB,EAI7Bom+B,GAAKrr/B,KAAKm6uB,KAAKn6uB,KAAKqnF,KAAK9vB,GAAE96D,EAAI86D,GAAE96D,EAAI86D,GAAE3Q,EAAI2Q,GAAE3Q,IAC7Ciy7B,GAAK74+B,KAAKqkF,MAAM9sB,GAAE3Q,EAAG2Q,GAAE96D,GACnB86D,GAAE96D,GAAK,GAAO86D,GAAE96D,GAAKuD,KAAKiN,IAAIsqD,GAAE3Q,GAClCi1F,GAAKplJ,MAjLG,EAkLH01+B,GAAMvl7B,GAAK,GAAO2Q,GAAE3Q,GAAK5mD,KAAKiN,IAAIsqD,GAAE96D,IACzCo/I,GAAKplJ,MAlLG,EAmLRoi/B,IAAMpQ,GACD0D,GAAM1v+B,EAAI,IAAQ86D,GAAE96D,GAAKuD,KAAKiN,IAAIsqD,GAAE3Q,IACzCi1F,GAAKplJ,MApLG,EAqLRoi/B,GAAMA,GAAK,EAAMA,GAAK9P,EAAM8P,GAAK9P,IAEjClt1B,GAAKplJ,MAtLG,EAuLRoi/B,IAAMpQ,GAQRvn8B,GAAK6n8B,EAAM,GAAM/o+B,KAAK8huB,IAAI+2Q,IAC1B2S,GAAWxr/B,KAAKwkF,IAAItjD,KAAMlhC,KAAK65E,IAAI34C,IAAM,EAAIlhC,KAAKqnF,KAAK,IACvDgxC,GAAQr4H,KAAKm6uB,KAAKqxQ,KAGlBjd,GAAS,GAFT+c,GAAQtr/B,KAAK65E,IAAIg/5B,KAEIyS,IADrBC,GAAQvr/B,KAAK8huB,IAAIupR,KACoBE,IAAS,EAAIvr/B,KAAK65E,IAAI75E,KAAKm6uB,KAAK,EAAIn6uB,KAAK65E,IAAIw+C,SACrE,EACXk22B,IAAS,EACAA,GAAS,IAClBA,GAAS,GAhNJ,IAuNHz7+B,KAAKg4/B,KACPrc,GAAMzu+B,KAAKkouB,KAAKqmQ,IAChBv/S,GAAGy/S,IAAMhG,EAAUgG,GAEjBz/S,GAAG60T,IAtNG,IAqNJho2B,GAAKplJ,MACE4hI,GAAQow2B,EArNX,IAsNDijB,GAASj1/B,MACJ4hI,GAAQ,EAAMA,GAAQ0w2B,EAAM1w2B,GAAQ0w2B,EAtNxC,IAuNGlt1B,GAAKplJ,MACL4hI,GAAQow2B,EAERpw2B,WAhOH,IAkOCvlI,KAAKg4/B,KACdrc,GAAMzu+B,KAAKkouB,KAAKqmQ,IAChBv/S,GAAGy/S,IAAMA,GAAMhG,EAEbz5S,GAAG60T,IAlOG,IAiOR6H,GAASj1/B,OACG4hI,GAAQow2B,EAjOZ,IAkODijB,GAASj1/B,OACJ4hI,GAlOJ,IAmODqz3B,GAASj1/B,OACJ4hI,GAAQow2B,EAERpw2B,GAAQ,GAAOA,GAAQ0w2B,GAAO1w2B,GAAQ0w2B,MAE7C,CAEL,IAAIzj+B,GAAGq+C,GAAGhqD,GAEVunC,IADA57B,GAAIip+B,IACIjp+B,GAQNq+C,IAFFziB,KAJEvnC,GADEunC,IAAK,EACH,EAEAlhC,KAAKqnF,KAAK,EAAInmD,IAAKlhC,KAAKwkF,IAAI6zC,KAEzB1+H,KACA,EACH,EAEAqG,KAAKqnF,KAAK,EAAInmD,IAvPZ,IA0PRwq9B,GAASj1/B,OACPyqC,GAAIyiB,GACJA,IAAKhqD,GACLA,GAAIunC,IA5PE,IA6PDwq9B,GAASj1/B,OACdktD,IAAKA,GACLhqD,IAAKA,IA9PC,IA+PGkiJ,GAAKplJ,QACdyqC,GAAIyiB,GACJA,GAAIhqD,GACJA,IAAKunC,IA7QA,IAgRPpuC,KAASg4/B,MACP5p9B,GAAI57B,GACJA,IAAKq+C,GACLA,GAAIziB,IAlRA,IAmRCpuC,KAASg4/B,MACdxl/B,IAAKA,GACLq+C,IAAKA,IApRD,IAqRK7wD,KAAKg4/B,OACd5p9B,GAAI57B,GACJA,GAAIq+C,GACJA,IAAKziB,IAGP8tpB,GAAGy/S,IAAMzu+B,KAAKkouB,MAAMvuuB,IAAK8u+B,EACzBz5S,GAAG60T,IAAM7j/B,KAAKqkF,MAAM1gC,GAAGr+C,IA9RhB,IA+RPxS,KAASg4/B,KACP97T,GAAG60T,IAAMsH,GAAqBn8T,GAAG60T,KAAMpb,GA/RnC,IAgSK31+B,KAAKg4/B,KACd97T,GAAG60T,IAAMsH,GAAqBn8T,GAAG60T,KAAM9a,GAhSnC,IAiSKj2+B,KAAKg4/B,OACd97T,GAAG60T,IAAMsH,GAAqBn8T,GAAG60T,KAAMpb,IAkB3Cz5S,OAZgB,IAAZl8rB,KAAK+7+B,KAGP4c,GAAez8T,GAAGy/S,IAAM,EAAI,EAAI,EAChCwY,GAASjn/B,KAAK8huB,IAAI9yC,GAAGy/S,KACrBjmpB,GAAK11V,KAAKkyB,EAAIhlB,KAAKqnF,KAAK4/5B,GAASA,GAASn0/B,KAAKk4/B,qBAC/Ch8T,GAAGy/S,IAAMzu+B,KAAKm6uB,KAAKn6uB,KAAKqnF,KAAKv0F,KAAKmyB,EAAInyB,KAAKmyB,EAAIujU,GAAKA,KAAO11V,KAAKi4/B,YAAcviqB,KAC1EijqB,KACFz8T,GAAGy/S,KAAOz/S,GAAGy/S,MAIjBz/S,GAAG60T,KAAO/w/B,KAAKk3+B,MACfzy6B,GAAE96D,EAAIuyrB,GAAG60T,IACTts7B,GAAE3Q,EAAIoooB,GAAGy/S,IACFl36B,IA4CP6zU,MALiB,CAAC,mCAAoC,mCAAoC,QCjW5F,IAAIugnB,GAAU,CACV,CAAC,EAAQ,WAAY,WAAc,WACnC,CAAC,OAAQ,WAAc,UAAa,WACpC,CAAC,OAAQ,UAAa,YAAc,YACpC,CAAC,KAAQ,WAAa,SAAa,WACnC,CAAC,OAAQ,WAAa,YAAc,YACpC,CAAC,MAAQ,WAAa,WAAc,WACpC,CAAC,KAAQ,WAAa,WAAc,YACpC,CAAC,OAAQ,WAAa,YAAc,WACpC,CAAC,OAAQ,WAAa,SAAa,YACnC,CAAC,OAAQ,WAAa,YAAc,YACpC,CAAC,OAAQ,WAAa,UAAc,YACpC,CAAC,MAAQ,WAAa,WAAc,YACpC,CAAC,OAAQ,WAAa,WAAc,YACpC,CAAC,OAAQ,WAAa,UAAa,YACnC,CAAC,OAAQ,WAAa,YAAc,WACpC,CAAC,OAAQ,WAAa,UAAc,YACpC,CAAC,OAAQ,QAAW,WAAa,YACjC,CAAC,OAAQ,UAAa,OAAU,YAChC,CAAC,OAAQ,UAAa,UAAa,aAGnCC,GAAU,CACV,EAAC,WAAc,MAAQ,YAAa,YACpC,CAAC,KAAQ,OAAQ,WAAc,aAC/B,CAAC,KAAQ,MAAQ,YAAa,YAC9B,CAAC,KAAQ,UAAW,WAAc,YAClC,CAAC,KAAQ,SAAW,YAAa,SACjC,CAAC,IAAQ,UAAW,WAAc,YAClC,CAAC,KAAQ,SAAW,YAAa,YACjC,CAAC,KAAQ,UAAW,YAAc,YAClC,CAAC,MAAQ,UAAW,YAAc,YAClC,CAAC,MAAQ,UAAW,YAAc,YAClC,CAAC,MAAQ,UAAW,YAAc,YAClC,CAAC,MAAQ,SAAU,YAAc,YACjC,CAAC,MAAQ,UAAW,YAAc,YAClC,CAAC,MAAQ,UAAW,YAAc,YAClC,CAAC,MAAQ,UAAW,UAAa,YACjC,CAAC,MAAQ,WAAY,UAAa,SAClC,CAAC,MAAQ,WAAY,WAAc,WACnC,CAAC,MAAQ,WAAY,QAAW,WAChC,CAAC,EAAQ,WAAY,WAAc,YASnCC,GAAY,SAASC,GAAOrv/B,IAC5B,OAAOqv/B,GAAM,GAAKrv/B,IAAKqv/B,GAAM,GAAKrv/B,IAAKqv/B,GAAM,GAAKrv/B,GAAIqv/B,GAAM,MAiGhE,QAAe,CACbhn8B,KA/EK,cACHhyD,KAAKi1E,GAAKj1E,KAAKi1E,IAAM,EACrBj1E,KAAK20E,GAAK30E,KAAK20E,IAAM,EACrB30E,KAAKk3+B,MAAQl3+B,KAAKk3+B,OAAS,EAC3Bl3+B,KAAK+7+B,GAAK,EACV/7+B,KAAK4sD,MAAQ5sD,KAAK4sD,OAAS,YA2E7Bqv7B,QAxEK,YAAiBz4U,IACpB,IAAIwzS,GAAMklC,GAAW14U,GAAG75pB,EAAI3J,KAAKk3+B,OAE7B0E,GAAO1u+B,KAAKiN,IAAIqppB,GAAG1vmB,GACnBnlD,GAAIzB,KAAKC,MApCR2o+B,mBAoCc8F,IACfjt+B,GAAI,EACJA,GAAI,EACGA,IArCH,KAsCJA,GAAIsq/B,IAGR,IAAId,GAAK,CACLxu/B,EAAGov/B,GAAUF,GAAQlq/B,IAFzBit+B,GAAO9F,GAAO8F,GAzCR,mBAyCqBjt+B,KAEUqo8B,GACjClj5B,EAAGil8B,GAAUD,GAAQnq/B,IAAIit+B,KAE7B,OAAIp4U,GAAG1vmB,EAAI,IACPqk8B,GAAGrk8B,GAAKqk8B,GAAGrk8B,GAGfqk8B,GAAGxu/B,EAAIwu/B,GAAGxu/B,EAAI3J,KAAKmyB,EArDb,MAqDuBnyB,KAAKi1E,GAClCkj7B,GAAGrk8B,EAAIqk8B,GAAGrk8B,EAAI9zD,KAAKmyB,EArDb,OAqDuBnyB,KAAK20E,GAC3Bwj7B,IAoDT5sO,QAjDK,YAAiB4sO,IACpB,IAAI30V,GAAK,CACL75pB,GAAIwu/B,GAAGxu/B,EAAI3J,KAAKi1E,KA5Dd,MA4DqBj1E,KAAKmyB,GAC5B2hC,EAAG5mD,KAAKiN,IAAIg++B,GAAGrk8B,EAAI9zD,KAAK20E,KA5DtB,OA4D6B30E,KAAKmyB,IAGxC,GAAIqxoB,GAAG1vmB,GAAK,EACR0vmB,GAAG75pB,GAAKkv/B,GA7DJ,IA6DmB,GACvBr1V,GAAG1vmB,EAAIqk8B,GAAGrk8B,EAAI,GAAK6h7B,EAAUA,MAC1B,CAEH,IAAIhn+B,GAAIzB,KAAKC,MAjET,GAiEeq2pB,GAAG1vmB,GAMtB,IALInlD,GAAI,EACJA,GAAI,EACGA,IApEP,KAqEAA,GAAIsq/B,MAGJ,GAAIH,GAAQnq/B,IAAG,GAAK60pB,GAAG1vmB,IACjBnlD,aACKmq/B,GAAQnq/B,GAAE,GAAG,IAAM60pB,GAAG1vmB,GAG7B,QAFEnlD,GAMV,IAAIqq/B,GAAQF,GAAQnq/B,IAChBy/B,GAAI,GAAKo1nB,GAAG1vmB,EAAIkl8B,GAAM,KAAOF,GAAQnq/B,GAAE,GAAG,GAAKqq/B,GAAM,IAEzD5q9B,GA1ER,YAAwB8q9B,GAAMls+B,GAAOms+B,GAASC,IAE1C,QADIzv/B,GAAIqjB,GACDos+B,KAASA,GAAO,CACnB,IAAIC,GAAMH,GAAKvv/B,IAEf,GADAA,IAAK0v/B,GACDns/B,KAAKiN,IAAIk/+B,IAAOF,GAChB,MAGR,OAAOxv/B,GAiEC2v/B,CAAe,SAAS3v/B,IACxB,OAAQov/B,GAAUC,GAAOrv/B,IAAK65pB,GAAG1vmB,GA/E7B,SAASkl8B,GAAOrv/B,IAC5B,OAAOqv/B,GAAM,GAAKrv/B,IAAK,EAAIqv/B,GAAM,GAAS,EAAJrv/B,GAAQqv/B,GAAM,IA8ENO,CAAUP,GAAOrv/B,KACxDykC,GAAGwn8B,EAAO,KAEbpyU,GAAG75pB,GAAKov/B,GAAUF,GAAQlq/B,IAAIy/B,IAC9Bo1nB,GAAG1vmB,GAAK,EAAInlD,GAAIy/B,IAAKyn8B,EACjBsiB,GAAGrk8B,EAAI,IACP0vmB,GAAG1vmB,GAAK0vmB,GAAG1vmB,GAInB0vmB,UAAG75pB,EAAIuy+B,GAAW14U,GAAG75pB,EAAI3J,KAAKk3+B,OACvB1zU,IAQTlrR,MALiB,CAAC,WAAY,UCrIhCklE,GAAe,CACXxrZ,KAjBG,aACHhyD,KAAKgF,KAAO,WAiBZi3+B,QAbG,WAAiBx36B,IAEpB,OADYi+6B,GAAqBj+6B,GAAGzkE,KAAK+7+B,GAAI/7+B,KAAKmyB,IAalDo5vB,QATG,YAAiB9mtB,IAEpB,OADY2+6B,GAAqB3+6B,GAAGzkE,KAAK+7+B,GAAI/7+B,KAAKmyB,EAAGnyB,KAAKkyB,IAS1DomX,MALe,CAAC,aAAc,aAAc,UAAW,YCnB3D,IAUIhqW,GAAS,CACXmpL,EAAO,CAAEruJ,IAAK,IAAQ5mD,KAAK,GAC3Bg3+B,IAAO,CAAEpw7B,IAAK,EAAG5mD,KAAK,EAAMg6nB,SAAS,GACrCi9W,KAAO,CAAErw7B,IAAK,EAAG5mD,KAAK,EAAMg6nB,SAAS,GACrC06V,MAAO,CAAE9t6B,IAAK,EAAG5mD,KAAK,GACtBq09B,KAAO,CAAEzt6B,IAAK,EAAG5mD,KAAK,IAmJxB,SAAe,CACbwvC,KAjJK,cA0BL,GAzBAnsD,OAAOrC,KAAK8qC,IAAQ1nC,QAAQ,SAAU69D,IACpC,QAAuB,IAAZzkE,KAAKykE,IACdzkE,KAAKykE,IAAKn2B,GAAOm2B,IAAG2E,QACf,IAAI96B,GAAOm2B,IAAGjiD,KAAOrL,MAAMnX,KAAKykE,KACrC,MAAM,IAAIhuD,MAAM,4CAA8CguD,GAAI,MAAQzkE,KAAKykE,KACtEn2B,GAAOm2B,IAAGjiD,MACnBxiB,KAAKykE,IAAK9/B,WAAW3kC,KAAKykE,MAExBn2B,GAAOm2B,IAAG+3kB,UACZx8oB,KAAKykE,IAAKzkE,KAAKykE,IAAKox6B,IAEtBhw9B,KAAK7lB,OAEHkN,KAAKiN,IAAKjN,KAAKiN,IAAIna,KAAK62+B,MAAQlB,GAAYC,EAC9C51+B,KAAK8mB,KAAO9mB,KAAK62+B,KAAO,EA/BlB,EADA,EAiCD3p+B,KAASiN,IAAIna,KAAK62+B,MAAQjB,EAC/B51+B,KAAK8mB,KAhCA,GAkCL9mB,KAAK8mB,KAjCA,EAkCL9mB,KAAKot/B,OAASlg/B,KAAKwkF,IAAI1xF,KAAK62+B,MAC5B72+B,KAAKmt/B,OAASjg/B,KAAK65E,IAAI/mF,KAAK62+B,OAG9B72+B,KAAK05/B,IAAM15/B,KAAKy3N,EAAIz3N,KAAKmyB,EAErBnyB,KAAK05/B,KAAO,GAAK15/B,KAAK05/B,IAAM,KAC9B,MAAM,IAAIjj/B,MAAM,kBAGlBzW,KAAKykE,EAAI,EAAIzkE,KAAK05/B,IAClB15/B,KAAKywG,GAAK,EAAIzwG,KAAKykE,EACnBzkE,KAAKskxB,GAAK,EAAItkxB,KAAK05/B,IACnB15/B,KAAK25/B,OAAS35/B,KAAKykE,EAAI,GAAKzkE,KAAKskxB,GACjCtkxB,KAAK+7+B,GAAK,EAEV,IAAI6d,GAAQ55/B,KAAKy5/B,KACbn6V,GAAQt/pB,KAAKw5/B,IACjBx5/B,KAAK4qQ,GAAK19P,KAAK65E,IAAIu4kB,IACnBt/pB,KAAK65/B,GAAK3s/B,KAAKwkF,IAAI4tkB,IACnBt/pB,KAAK85/B,GAAK5s/B,KAAK65E,IAAI6y6B,IACnB55/B,KAAK+5/B,GAAK7s/B,KAAKwkF,IAAIko6B,KAyGnB3d,QAtGK,YAAiBx36B,IACtBA,GAAE96D,GAAK3J,KAAKk3+B,MACZ,IAGIvt+B,GAAGmqD,GAkCH85Y,GAAIosjB,GArCJxe,GAAStu+B,KAAKwkF,IAAIjtB,GAAE3Q,GACpB2n7B,GAASvu+B,KAAK65E,IAAItiB,GAAE3Q,GACpB0+7B,GAAStl/B,KAAK65E,IAAItiB,GAAE96D,GAExB,OAAQ3J,KAAK8mB,WAhEN,EAkEHgtC,GAAI9zD,KAAKot/B,OAAS5R,GAASx7+B,KAAKmt/B,OAAS1R,GAAS+W,GAClD,WApEG,EAsEH1+7B,GAAI2n7B,GAAS+W,GACb,WAxEI,EA0EJ1+7B,IAAK0n7B,GACL,WA5EI,EA8EJ1n7B,GAAI0n7B,GAMR,OAFA7x+B,IADAmqD,GAAI9zD,KAAK05/B,KAAO15/B,KAAKykE,EAAI3Q,KACjB2n7B,GAASvu+B,KAAKwkF,IAAIjtB,GAAE96D,GAEpB3J,KAAK8mB,WAjFN,EAmFHgtC,IAAK9zD,KAAKmt/B,OAAS3R,GAASx7+B,KAAKot/B,OAAS3R,GAAS+W,GACnD,WArFG,EAuFH1+7B,IAAK0n7B,GACL,WA1FI,EA4FJ1n7B,KAAO2n7B,GAAS+W,GAChB,WA5FI,EA8FJ1+7B,IAAK2n7B,GAAS+W,GAMlB5kjB,OAEAjkc,IAAKA,GAAI3J,KAAK4qQ,GAAK92M,GAAI9zD,KAAK65/B,IAAM75/B,KAAK85/B,IADvCE,GAAK,IADLpsjB,GAAK95Y,GAAI9zD,KAAK4qQ,GAAKjhQ,GAAI3J,KAAK65/B,IACb75/B,KAAK+5/B,GAAK/5/B,KAAKskxB,GAAKtkxB,KAAK85/B,KAExChm8B,GAAI85Y,GAAKosjB,GAETv17B,GAAE96D,EAAIA,GAAI3J,KAAKmyB,EACfsyC,GAAE3Q,EAAIA,GAAI9zD,KAAKmyB,EACRsyC,IAwDP8mtB,QArDK,YAAiB9mtB,IACtBA,GAAE96D,GAAK3J,KAAKmyB,EACZsyC,GAAE3Q,GAAK9zD,KAAKmyB,EACZ,IAGI8n+B,GAAIC,GAAItsjB,GAHR/8Y,GAAI,CAAElnD,EAAG86D,GAAE96D,EAAGmqD,EAAG2Q,GAAE3Q,GAOvB2Q,GAAE96D,GAFFsw/B,GAAKj6/B,KAAK05/B,IAAMj17B,GAAE96D,GADlBikc,GAAK,GAAK5tc,KAAK05/B,IAAMj17B,GAAE3Q,EAAI9zD,KAAK+5/B,MAGrB/5/B,KAAK4qQ,IADhBsvvB,GAAKl6/B,KAAK05/B,IAAMj17B,GAAE3Q,EAAI9zD,KAAK85/B,GAAKlsjB,IACN5tc,KAAK65/B,GAC/Bp17B,GAAE3Q,EAAIom8B,GAAKl6/B,KAAK4qQ,GAAKqvvB,GAAKj6/B,KAAK65/B,GAE/B,IAAIr6T,GAAKyqT,GAAMxl7B,GAAE96D,EAAG86D,GAAE3Q,GACtB,GAAI5mD,KAAKiN,IAAIqlrB,IAAMo2S,EACjB/k7B,GAAElnD,EAAI,EACNknD,GAAEiD,EAAI2Q,GAAE3Q,MACH,CACL,IAAIg/7B,GAAMC,GAIV,OAHAA,GAAO,EAAIvzT,GAAKA,GAAKx/rB,KAAK25/B,MAC1B5G,IAAQ/y/B,KAAKykE,EAAIv3D,KAAKqnF,KAAKw+5B,MAAU/y/B,KAAK05/B,IAAMl6T,GAAKA,GAAKx/rB,KAAK05/B,KAC/D5G,GAAO5l/B,KAAKqnF,KAAK,EAAIw+5B,GAAOA,IACpB/y/B,KAAK8mB,WAlIR,EAoID+pC,GAAEiD,EAAI5mD,KAAKyyoB,KAAKmzW,GAAO9y/B,KAAKot/B,OAAS3o7B,GAAE3Q,EAAIi/7B,GAAO/y/B,KAAKmt/B,OAAS3tT,IAChE/6nB,GAAE3Q,GAAKg/7B,GAAO9y/B,KAAKot/B,OAASlg/B,KAAKwkF,IAAI7gC,GAAEiD,IAAM0roB,GAC7C/6nB,GAAE96D,GAAKop/B,GAAO/y/B,KAAKmt/B,OACnB,WAxIC,EA0IDt87B,GAAEiD,EAAI5mD,KAAKyyoB,KAAKl7kB,GAAE3Q,EAAIi/7B,GAAOvzT,IAC7B/6nB,GAAE3Q,EAAIg/7B,GAAOtzT,GACb/6nB,GAAE96D,GAAKop/B,GACP,WA/IE,EAiJFli8B,GAAEiD,EAAI5mD,KAAKyyoB,KAAKmzW,IAChBru7B,GAAE3Q,GAAK2Q,GAAE3Q,EACT,WAlJE,EAoJFjD,GAAEiD,GAAK5mD,KAAKyyoB,KAAKmzW,IAGrBji8B,GAAElnD,EAAIuD,KAAKqkF,MAAM9sB,GAAE96D,EAAG86D,GAAE3Q,GAG1B2Q,UAAE96D,EAAIknD,GAAElnD,EAAI3J,KAAKk3+B,MACjBzy6B,GAAE3Q,EAAIjD,GAAEiD,EACD2Q,IAQP6zU,MALiB,CAAC,qBAAsB,UCxJ1C6hnB,gBAAqB,QACrBA,QAAaC,GACbD,SAAc,IAAIA,QAAW,SAC7BA,SAAcjg7B,GACdig7B,WAAgBh5K,GAChBg5K,QAAaz/xB,GACby/xB,WlEJe,YAAiBtn/B,GAAKC,IACnC,IAAIuP,GAAO,IAAIyj1B,SAAShz1B,IACpB+p+B,GA4CN,YAA4Bx69B,IAC1B,IAAIg4+B,GAAUh4+B,GAAKk79B,SAAS,GAAG,GAC/B,OAAgB,KAAZ8c,KAIY,MADhBA,GAAUh4+B,GAAKk79B,SAAS,GAAG,KAEzBzn+B,QAAQC,KAAK,sEAER,GArDcuk/B,CAAmBj4+B,IACpC4F,GAuDN,YAAoB5F,GAAMw69B,IACxB,MAAO,CACLwd,QAASh4+B,GAAKk79B,SAAS,EAAGV,IAC1B0d,eAAgBl4+B,GAAKk79B,SAAS,GAAIV,IAClC2d,UAAWn4+B,GAAKk79B,SAAS,GAAIV,IAC7B4d,UAAW3d,GAAaz69B,GAAM,GAAI,IAAQqiB,OAC1Cg29B,kBAAmBr4+B,GAAK269B,WAAW,IAAKH,IACxC8d,kBAAmBt4+B,GAAK269B,WAAW,IAAKH,IACxC+d,gBAAiBv4+B,GAAK269B,WAAW,IAAKH,IACtCge,gBAAiBx4+B,GAAK269B,WAAW,IAAKH,KAhE3Bie,CAAWz4+B,GAAMw69B,IAC1B509B,GAAOuy+B,UAAY,GACrB1k/B,QAAQkL,IAAI,uFAEd,IAAIu/9B,GAoEN,YAAsBl+9B,GAAM4F,GAAQ409B,IAGlC,QADIwC,GAAQ,GACH1w+B,GAAI,EAAGA,GAAIsZ,GAAOuy+B,UAAW7r/B,KAAK,CACzC,IAAIos/B,GAAYC,GAAe34+B,GAHhB,IAGkCw69B,IAC7Cp72B,GAAQw53B,GAAc54+B,GAJX,IAI6B04+B,GAAWle,IACnDqe,GAAiBhu/B,KAAK4zF,MACxB,GAAKi65B,GAAU5d,eAAiB4d,GAAU7d,gBAAkB6d,GAAU1d,mBACpE8d,GAAiBju/B,KAAK4zF,MACxB,GAAKi65B,GAAU9d,cAAgB8d,GAAUhe,eAAiBge,GAAU3d,kBAEtEiC,GAAM55+B,KAAK,CACT+9pB,GAAI,CAACk5U,GAAiBqe,GAAU7d,gBAAiBR,GAAiBqe,GAAUhe,gBAC5En/M,IAAK,CAAC8+M,GAAiBqe,GAAU1d,mBAAoBX,GAAiBqe,GAAU3d,mBAChFqD,IAAK,CAACya,GAAgBC,IACtBvj5B,MAAOmj5B,GAAUzd,cACjB6D,IAAKia,GAAS353B,MAGlB,OAAO492B,GAvFQgc,CAAah5+B,GAAM4F,GAAQ409B,IACtCye,GAAU,CAACrz+B,OAAQA,GAAQs49B,SAAUA,IACzC/D,UAAe3p+B,IAAOyo/B,GACfA,IkELTnB,aAAkB9v/B,GAClB8v/B,QAAavW,GACbuW,WAAgB,cCSD,YAASA,IACtBA,GAAMC,KAAKzjD,YAAYnu5B,IAAI4g8B,IAC3B+Q,GAAMC,KAAKzjD,YAAYnu5B,IAAI8h8B,IAC3B6P,GAAMC,KAAKzjD,YAAYnu5B,IAAIs77B,IAC3BqW,GAAMC,KAAKzjD,YAAYnu5B,IAAI+y8B,IAC3BpB,GAAMC,KAAKzjD,YAAYnu5B,IAAIgz8B,IAC3BrB,GAAMC,KAAKzjD,YAAYnu5B,IAAIiz8B,IAC3BtB,GAAMC,KAAKzjD,YAAYnu5B,IAAIkz8B,IAC3BvB,GAAMC,KAAKzjD,YAAYnu5B,IAAImz8B,IAC3BxB,GAAMC,KAAKzjD,YAAYnu5B,IAAIoz8B,IAC3BzB,GAAMC,KAAKzjD,YAAYnu5B,IAAIqz8B,IAC3B1B,GAAMC,KAAKzjD,YAAYnu5B,IAAIsz8B,IAC3B3B,GAAMC,KAAKzjD,YAAYnu5B,IAAIuz8B,IAC3B5B,GAAMC,KAAKzjD,YAAYnu5B,IAAIwz8B,IAC3B7B,GAAMC,KAAKzjD,YAAYnu5B,IAAIyz8B,IAC3B9B,GAAMC,KAAKzjD,YAAYnu5B,IAAI0z8B,IAC3B/B,GAAMC,KAAKzjD,YAAYnu5B,IAAIgvB,IAC3B2i7B,GAAMC,KAAKzjD,YAAYnu5B,IAAI2z8B,IAC3BhC,GAAMC,KAAKzjD,YAAYnu5B,IAAI4z8B,IAC3BjC,GAAMC,KAAKzjD,YAAYnu5B,IAAI6z8B,IAC3BlC,GAAMC,KAAKzjD,YAAYnu5B,IAAI8z8B,IAC3BnC,GAAMC,KAAKzjD,YAAYnu5B,IAAI+z8B,IAC3BpC,GAAMC,KAAKzjD,YAAYnu5B,IAAIg08B,IAC3BrC,GAAMC,KAAKzjD,YAAYnu5B,IAAIi08B,IAC3BtC,GAAMC,KAAKzjD,YAAYnu5B,IAAIk08B,IAC3BvC,GAAMC,KAAKzjD,YAAYnu5B,IAAIm08B,IAC3BxC,GAAMC,KAAKzjD,YAAYnu5B,IAAIo08B,GAC3BzC,GAAMC,KAAKzjD,YAAYnu5B,IAAIq08B,IAC3B1C,GAAMC,KAAKzjD,YAAYnu5B,IAAIs08B,IDpC7BC,CAAoB5C,IACpB,SAAeA,sBEpBgDv9K,GAAOx9R,QAG9D,WAAc,aAEtB,WAAqB/wiB,EAAK+kC,EAAGg8B,EAAME,EAAOwH,GACtCkm7B,EAAgB3u/B,EAAK+kC,EAAGg8B,GAAQ,EAAGE,GAAUjhE,EAAItI,OAAS,EAAI+wE,GAAWmm7B,GAG7E,WAAyB5u/B,EAAK+kC,EAAGg8B,EAAME,EAAOwH,GAE1C,KAAOxH,EAAQF,GAAM,CACjB,GAAIE,EAAQF,EAAO,IAAK,CACpB,IAAIthE,EAAIwhE,EAAQF,EAAO,EACnBvyC,GAAIuW,EAAIg8B,EAAO,EACfigF,EAAIniJ,KAAK8T,IAAIlT,GACbjH,EAAI,GAAMqG,KAAKy4V,IAAI,EAAIt2M,EAAI,GAC3BsrL,EAAK,GAAMztU,KAAKqnF,KAAK86D,EAAIxoJ,GAAKiH,EAAIjH,GAAKiH,IAAM+uB,GAAI/uB,EAAI,EAAI,GAAI,EAAK,GAGtEkv/B,EAAgB3u/B,EAAK+kC,EAFPlmC,KAAKsB,IAAI4gE,EAAMliE,KAAKC,MAAMimC,EAAIvW,GAAIh2B,EAAIiH,EAAI6sU,IACzCztU,KAAKulC,IAAI68B,EAAOpiE,KAAKC,MAAMimC,GAAKtlC,EAAI+uB,IAAKh2B,EAAIiH,EAAI6sU,IACrB7jQ,GAG/C,IAAI1oC,EAAI//B,EAAI+kC,GACRzkC,GAAIygE,EACJoyB,GAAIlyB,EAKR,IAHA251B,EAAK565B,EAAK+gE,EAAMh8B,GACZ0jC,EAAQzoE,EAAIihE,GAAQlhC,GAAK,GAAK663B,EAAK565B,EAAK+gE,EAAME,GAE3C3gE,GAAI6yF,IAAG,CAIV,IAHAyn0B,EAAK565B,EAAKM,GAAG6yF,IACb7yF,KACA6yF,KACO1qB,EAAQzoE,EAAIM,IAAIy/B,GAAK,GAAKz/B,KACjC,KAAOmoE,EAAQzoE,EAAImzF,IAAIpzD,GAAK,GAAKozD,KAGP,IAA1B1qB,EAAQzoE,EAAI+gE,GAAOhhC,GAAY663B,EAAK565B,EAAK+gE,EAAMoyB,IAG/Cyn0B,EAAK565B,IADLmzF,GACalyB,GAGbkyB,IAAKpuD,IAAKg8B,EAAOoyB,GAAI,GACrBpuD,GAAKouD,KAAKlyB,EAAQkyB,GAAI,IAIlC,WAAcnzF,EAAKM,EAAG6yF,GAClB,IAAI5wF,EAAMvC,EAAIM,GACdN,EAAIM,GAAKN,EAAImzF,GACbnzF,EAAImzF,GAAK5wF,EAGb,WAAwBuhB,EAAGD,GACvB,OAAOC,EAAID,GAAI,EAAKC,EAAID,EAAI,EAAI,EAGpC,IAAIsnG,EAAQ,SAAe0j4B,QACH,IAAfA,IAAwBA,EAAa,GAG1Cl9/B,KAAKm9/B,YAAcjw/B,KAAKsB,IAAI,EAAG0u/B,GAC/Bl9/B,KAAKo9/B,YAAclw/B,KAAKsB,IAAI,EAAGtB,KAAKqB,KAAwB,GAAnBvO,KAAKm9/B,cAC9Cn9/B,KAAKs/C,SAiZT,WAAkBtsC,EAAMw/C,EAAO6q8B,GAC3B,IAAKA,EAAY,OAAO7q8B,EAAM1yC,QAAQ9M,GAEtC,QAASrE,EAAI,EAAGA,EAAI6jD,EAAMzsD,OAAQ4I,IAC9B,GAAI0u/B,EAASrq/B,EAAMw/C,EAAM7jD,IAAO,OAAOA,EAE3C,OAAO,EAIX,WAAkByW,EAAMk4+B,GACpBC,EAASn4+B,EAAM,EAAGA,EAAKo5C,SAASz4D,OAAQu3/B,EAAQl4+B,GAIpD,WAAkBA,EAAMguB,EAAGqxB,EAAG647B,EAAQE,GAC7BA,IAAYA,EAAWC,EAAW,OACvCD,EAAS1l6B,KAAOy6B,IAChBir4B,EAAS9nR,KAAOnjnB,IAChBir4B,EAASzl6B,MAAO,IAChByl6B,EAAS7nR,MAAO,IAEhB,QAAShnuB,EAAIykC,EAAGzkC,EAAI81D,EAAG91D,IAAK,CACxB,IAAI8vD,GAAQr5C,EAAKo5C,SAAS7vD,GAC1BupH,EAAOsl4B,EAAUp4+B,EAAK8xgB,KAAOome,EAAO7+7B,IAASA,IAGjD,OAAO++7B,EAGX,WAAgBrr+B,EAAGD,GACfC,SAAE2lE,KAAO5qF,KAAKulC,IAAItgB,EAAE2lE,KAAM5lE,EAAE4lE,MAC5B3lE,EAAEujtB,KAAOxouB,KAAKulC,IAAItgB,EAAEujtB,KAAMxjtB,EAAEwjtB,MAC5BvjtB,EAAE4lE,KAAO7qF,KAAKsB,IAAI2jB,EAAE4lE,KAAM7lE,EAAE6lE,MAC5B5lE,EAAEwjtB,KAAOzouB,KAAKsB,IAAI2jB,EAAEwjtB,KAAMzjtB,EAAEyjtB,MACrBxjtB,EAGX,WAAyBA,EAAGD,GAAK,OAAOC,EAAE2lE,KAAO5lE,EAAE4lE,KACnD,WAAyB3lE,EAAGD,GAAK,OAAOC,EAAEujtB,KAAOxjtB,EAAEwjtB,KAEnD,WAAkBvjtB,GAAO,OAAQA,EAAE4lE,KAAO5lE,EAAE2lE,OAAS3lE,EAAEwjtB,KAAOxjtB,EAAEujtB,MAChE,WAAoBvjtB,GAAK,OAAQA,EAAE4lE,KAAO5lE,EAAE2lE,MAAS3lE,EAAEwjtB,KAAOxjtB,EAAEujtB,MAEhE,WAAsBvjtB,EAAGD,GACrB,OAAQhlB,KAAKsB,IAAI0jB,EAAE6lE,KAAM5lE,EAAE4lE,MAAQ7qF,KAAKulC,IAAIvgB,EAAE4lE,KAAM3lE,EAAE2lE,QAC9C5qF,KAAKsB,IAAI0jB,EAAEyjtB,KAAMxjtB,EAAEwjtB,MAAQzouB,KAAKulC,IAAIvgB,EAAEwjtB,KAAMvjtB,EAAEujtB,OAG1D,WAA0BvjtB,EAAGD,GACzB,IAAI4lE,EAAO5qF,KAAKsB,IAAI2jB,EAAE2lE,KAAM5lE,EAAE4lE,MAC1B49oB,EAAOxouB,KAAKsB,IAAI2jB,EAAEujtB,KAAMxjtB,EAAEwjtB,MAC1B39oB,EAAO7qF,KAAKulC,IAAItgB,EAAE4lE,KAAM7lE,EAAE6lE,MAC1B49oB,EAAOzouB,KAAKulC,IAAItgB,EAAEwjtB,KAAMzjtB,EAAEyjtB,MAE9B,OAAOzouB,KAAKsB,IAAI,EAAGupF,EAAOD,GACnB5qF,KAAKsB,IAAI,EAAGmnuB,EAAOD,GAG9B,WAAkBvjtB,EAAGD,GACjB,OAAOC,EAAE2lE,MAAQ5lE,EAAE4lE,MACZ3lE,EAAEujtB,MAAQxjtB,EAAEwjtB,MACZxjtB,EAAE6lE,MAAQ5lE,EAAE4lE,MACZ7lE,EAAEyjtB,MAAQxjtB,EAAEwjtB,KAGvB,WAAoBxjtB,EAAGD,GACnB,OAAOA,EAAE4lE,MAAQ3lE,EAAE4lE,MACZ7lE,EAAEwjtB,MAAQvjtB,EAAEwjtB,MACZzjtB,EAAE6lE,MAAQ5lE,EAAE2lE,MACZ5lE,EAAEyjtB,MAAQxjtB,EAAEujtB,KAGvB,WAAoBl3qB,GAChB,MAAO,CACHA,SAAUA,EACVj0D,OAAQ,EACR2shB,MAAM,EACNp/b,KAAMy6B,IACNmjnB,KAAMnjnB,IACNx6B,MAAM,IACN49oB,MAAM,KAOd,WAAqBtnuB,EAAK+gE,EAAME,EAAOxhE,EAAGgpE,GAGtC,QAFIzxD,EAAQ,CAAC+pD,EAAME,GAEZjqD,EAAMtf,QAIT,MAHAupE,EAAQjqD,EAAMyN,QACds8C,EAAO/pD,EAAMyN,QAEOhlB,GAEpB,KAAIgxE,GAAM1P,EAAOliE,KAAKqB,MAAM+gE,EAAQF,GAAQthE,EAAI,GAAKA,EACrD4v/B,EAAYrv/B,EAAKywE,GAAK1P,EAAME,EAAOwH,GAEnCzxD,EAAM5f,KAAK2pE,EAAM0P,GAAKA,GAAKxP,IAInC,OAtfAkqD,EAAMn5G,UAAUq6a,IAAM,WAClB,OAAO16b,KAAK29/B,KAAK39/B,KAAK8S,KAAM,KAGhC0mH,EAAMn5G,UAAU8Q,OAAS,SAAiBm/H,GACtC,IAAIlrI,EAAOplB,KAAK8S,KACZP,EAAS,GAEb,IAAKyoE,EAAWs1E,EAAMlrI,GAAS,OAAO7S,EAKtC,QAHI+q/B,EAASt9/B,KAAKs9/B,OACdM,EAAgB,GAEbx4+B,GAAM,CACT,QAASzW,GAAI,EAAGA,GAAIyW,EAAKo5C,SAASz4D,OAAQ4I,KAAK,CAC3C,IAAI8vD,EAAQr5C,EAAKo5C,SAAS7vD,IACtBkv/B,EAAYz4+B,EAAK8xgB,KAAOome,EAAO7+7B,GAASA,EAExCuc,EAAWs1E,EAAMut2B,KACbz4+B,EAAK8xgB,KAAQ3khB,EAAO9M,KAAKg5D,GACpBtwD,EAASmiJ,EAAMut2B,GAAc79/B,KAAK29/B,KAAKl/7B,EAAOlsD,GAChDqr/B,EAAcn4/B,KAAKg5D,IAGlCr5C,EAAOw4+B,EAAc9q+B,MAGzB,OAAOvgB,GAGXinH,EAAMn5G,UAAUun8B,SAAW,SAAmBt3zB,GAC1C,IAAIlrI,EAAOplB,KAAK8S,KAEhB,IAAKkoE,EAAWs1E,EAAMlrI,GAAS,OAAO,EAGtC,QADIw4+B,EAAgB,GACbx4+B,GAAM,CACT,QAASzW,EAAI,EAAGA,EAAIyW,EAAKo5C,SAASz4D,OAAQ4I,IAAK,CAC3C,IAAI8vD,EAAQr5C,EAAKo5C,SAAS7vD,GACtBkv/B,GAAYz4+B,EAAK8xgB,KAAOl3hB,KAAKs9/B,OAAO7+7B,GAASA,EAEjD,GAAIuc,EAAWs1E,EAAMut2B,IAAY,CAC7B,GAAIz4+B,EAAK8xgB,MAAQ/ohB,EAASmiJ,EAAMut2B,IAAc,OAAO,EACrDD,EAAcn4/B,KAAKg5D,IAG3Br5C,EAAOw4+B,EAAc9q+B,MAGzB,OAAO,GAGX0mG,EAAMn5G,UAAU89I,KAAO,SAAerrJ,GAClC,IAAMA,IAAQA,EAAK/M,OAAW,OAAO/F,KAErC,GAAI8S,EAAK/M,OAAS/F,KAAKo9/B,YAAa,CAChC,QAASzu/B,EAAI,EAAGA,EAAImE,EAAK/M,OAAQ4I,IAC7B3O,KAAKw+E,OAAO1rE,EAAKnE,IAErB,OAAO3O,KAIX,IAAIolB,EAAOplB,KAAK89/B,OAAOhr/B,EAAKlE,QAAS,EAAGkE,EAAK/M,OAAS,EAAG,GAEzD,GAAK/F,KAAK8S,KAAK0rD,SAASz4D,OAERqf,GAELplB,KAAK8S,KAAKvI,SAAW6a,EAAK7a,OAEjCvK,KAAK+9/B,WAAW/9/B,KAAK8S,KAAMsS,OAExB,CACH,GAAIplB,KAAK8S,KAAKvI,OAAS6a,EAAK7a,OAAQ,CAEhC,IAAIyz/B,EAAUh+/B,KAAK8S,KACnB9S,KAAK8S,KAAOsS,EACZA,EAAO44+B,EAIXh+/B,KAAKowwB,QAAQhrvB,EAAMplB,KAAK8S,KAAKvI,OAAS6a,EAAK7a,OAAS,GAAG,QAfvDvK,KAAK8S,KAAOsS,EAkBhB,OAAOplB,MAGXw5H,EAAMn5G,UAAUm+D,OAAS,SAAiBxrE,GACtC,OAAIA,GAAQhT,KAAKowwB,QAAQp9vB,EAAMhT,KAAK8S,KAAKvI,OAAS,GAC3CvK,MAGXw5H,EAAMn5G,UAAUi/B,MAAQ,WACpB,YAAKxsC,KAAO2q/B,EAAW,IAChBz9/B,MAGXw5H,EAAMn5G,UAAUo+B,OAAS,SAAiBzrC,EAAMqq/B,GAC5C,IAAKrq/B,EAAQ,OAAOhT,KASpB,QAHI2O,EAAG0tW,EAAQ4hpB,EAJX74+B,EAAOplB,KAAK8S,KACZw9I,EAAOtwJ,KAAKs9/B,OAAOtq/B,GACnB02K,EAAO,GACPqvU,GAAU,GAIP3ze,GAAQskK,EAAK3jL,QAAQ,CASxB,GAPKqf,IACDA,EAAOskK,EAAK52J,MACZupV,EAAS3yL,EAAKA,EAAK3jL,OAAS,GAC5B4I,EAAIoqf,GAAQjme,MACZmr+B,GAAU,GAGV74+B,EAAK8xgB,KAAM,CACX,IAAItzgB,EAAQs6+B,EAASlr/B,EAAMoS,EAAKo5C,SAAU6+7B,GAE1C,IAAc,IAAVz5+B,EAEAwB,SAAKo5C,SAAS16C,OAAOF,EAAO,GAC5B8lK,EAAKjkL,KAAK2f,GACVplB,KAAKm+/B,UAAUz00B,GACR1pL,KAIVi+/B,GAAY74+B,EAAK8xgB,OAAQ/ohB,EAASiX,EAAMkrI,GAOtCh6H,GACH3nB,IACAyW,EAAOi3V,EAAO79S,SAAS7vD,GACvBsv/B,GAAU,GAEL74+B,EAAO,MAXZskK,EAAKjkL,KAAK2f,GACV2ze,GAAQtzf,KAAKkJ,GACbA,EAAI,EACJ0tW,EAASj3V,EACTA,EAAOA,EAAKo5C,SAAS,IAU7B,OAAOx+D,MAGXw5H,EAAMn5G,UAAUi9+B,OAAS,SAAiBtq/B,GAAQ,OAAOA,GAEzDwmH,EAAMn5G,UAAU+9+B,YAAc,SAAsBjs+B,EAAGD,GAAK,OAAOC,EAAE2lE,KAAO5lE,EAAE4lE,MAC9E0hC,EAAMn5G,UAAUg++B,YAAc,SAAsBls+B,EAAGD,GAAK,OAAOC,EAAEujtB,KAAOxjtB,EAAEwjtB,MAE9El8mB,EAAMn5G,UAAU6pR,OAAS,WAAqB,OAAOlqS,KAAK8S,MAE1D0mH,EAAMn5G,UAAU04vB,SAAW,SAAmBjmwB,GAC1C,YAAKA,KAAOA,EACL9S,MAGXw5H,EAAMn5G,UAAUs9+B,KAAO,SAAev4+B,EAAM7S,GAExC,QADIqr/B,EAAgB,GACbx4+B,GACCA,EAAK8xgB,KAAQ3khB,EAAO9M,KAAKkuB,MAAMphB,EAAQ6S,EAAKo5C,UACzCo/7B,EAAcn4/B,KAAKkuB,MAAMiq+B,EAAex4+B,EAAKo5C,UAEpDp5C,EAAOw4+B,EAAc9q+B,MAEzB,OAAOvgB,GAGXinH,EAAMn5G,UAAUy9+B,OAAS,SAAiBtr8B,EAAO4c,EAAME,EAAO/kE,GAE1D,IAEI6a,EAFAsxI,EAAIpnF,EAAQF,EAAO,EACnB+lL,GAAIn1P,KAAKm9/B,YAGb,GAAIzm2B,GAAKy+F,GAEL/vO,OACAk5+B,EADAl5+B,EAAOq4+B,EAAWjr8B,EAAM5jD,MAAMwgE,EAAME,EAAQ,IAC7BtvE,KAAKs9/B,QACbl4+B,EAGN7a,IAEDA,EAAS2C,KAAKqB,KAAKrB,KAAK8T,IAAI01I,GAAKxpJ,KAAK8T,IAAIm0O,KAG1CA,GAAIjoP,KAAKqB,KAAKmoJ,EAAIxpJ,KAAK06F,IAAIutJ,GAAG5qP,EAAS,MAG3C6a,EAAOq4+B,EAAW,KACbvme,MAAO,EACZ9xgB,EAAK7a,OAASA,EAId,IAAIk9S,EAAKv6S,KAAKqB,KAAKmoJ,EAAIy+F,IACnBqyD,EAAKC,EAAKv6S,KAAKqB,KAAKrB,KAAKqnF,KAAK4gK,KAElCopwB,EAAY/r8B,EAAO4c,EAAME,EAAOk4O,EAAIxnT,KAAKo+/B,aAEzC,QAASzv/B,EAAIygE,EAAMzgE,GAAK2gE,EAAO3gE,GAAK64S,EAAI,CAEpC,IAAIg3sB,EAAStx/B,KAAKulC,IAAI9jC,EAAI64S,EAAK,EAAGl4O,GAElCiv7B,EAAY/r8B,EAAO7jD,EAAG6v/B,EAAQ/2sB,EAAIznT,KAAKq+/B,aAEvC,QAAS785B,EAAI7yF,EAAG6yF,GAAKg95B,EAAQh95B,GAAKimN,EAAI,CAElC,IAAIg3sB,GAASvx/B,KAAKulC,IAAI+uD,EAAIimN,EAAK,EAAG+2sB,GAGlCp5+B,EAAKo5C,SAAS/4D,KAAKzF,KAAK89/B,OAAOtr8B,EAAOgvC,EAAGi95B,GAAQl0/B,EAAS,KAIlE+z/B,SAASl5+B,EAAMplB,KAAKs9/B,QAEbl4+B,GAGXo0G,EAAMn5G,UAAUq++B,eAAiB,SAAyBpu2B,EAAMlrI,EAAM88F,EAAOwnE,GACzE,KACIA,EAAKjkL,KAAK2f,IAENA,EAAK8xgB,MAAQxtW,EAAK3jL,OAAS,IAAMm8G,GAH5B,CAST,QAJIw3jB,EAAUnnjB,IACVos4B,GAAiBps4B,IACjB2wqB,OAAc,EAETv0xB,EAAI,EAAGA,EAAIyW,EAAKo5C,SAASz4D,OAAQ4I,IAAK,CAC3C,IAAI8vD,EAAQr5C,EAAKo5C,SAAS7vD,GACtBo6I,EAAO612B,EAASng8B,GAChBog8B,EAAcC,EAAaxu2B,EAAM7xF,GAASsqF,EAG1C812B,EAAcF,IACdA,GAAiBE,EACjBnlV,EAAU3whB,EAAO2whB,EAAU3whB,EAAO2whB,EAClCwpH,EAAazkuB,GAENog8B,IAAgBF,IAEnB512B,EAAO2whB,IACPA,EAAU3whB,EACVm6oB,EAAazkuB,GAKzBr5C,EAAO89wB,GAAc99wB,EAAKo5C,SAAS,GAGvC,OAAOp5C,GAGXo0G,EAAMn5G,UAAU+vvB,QAAU,SAAkBp9vB,EAAMkvG,EAAOxgG,GACrD,IAAI4uI,EAAO5uI,EAAS1O,EAAOhT,KAAKs9/B,OAAOtq/B,GACnC+r/B,EAAa,GAGb35+B,GAAOplB,KAAK0+/B,eAAepu2B,EAAMtwJ,KAAK8S,KAAMovG,EAAO684B,GAOvD,IAJA35+B,GAAKo5C,SAAS/4D,KAAKuN,GACnBklH,EAAO9yG,GAAMkrI,GAGNpuC,GAAS,GACR684B,EAAW784B,GAAO1jD,SAASz4D,OAAS/F,KAAKm9/B,aACzCn9/B,KAAKsm4B,OAAOy4H,EAAY784B,GACxBA,IAKRliH,KAAKg//B,oBAAoB1u2B,EAAMyu2B,EAAY784B,IAI/CsX,EAAMn5G,UAAUim3B,OAAS,SAAiBy4H,EAAY784B,GAClD,IAAI98F,EAAO25+B,EAAW784B,GAClBizI,EAAI/vO,EAAKo5C,SAASz4D,OAClB82B,EAAI78B,KAAKo9/B,YAEbp9/B,KAAKi//B,iBAAiB75+B,EAAMyX,EAAGs4N,GAE/B,IAAIs2N,GAAazrd,KAAKk//B,kBAAkB95+B,EAAMyX,EAAGs4N,GAE7Ck5hB,EAAUovO,EAAWr4+B,EAAKo5C,SAAS16C,OAAO2nc,GAAYrmc,EAAKo5C,SAASz4D,OAAS0ld,KACjF4iU,EAAQ9jxB,OAAS6a,EAAK7a,OACtB8jxB,EAAQn3P,KAAO9xgB,EAAK8xgB,KAEpBone,EAASl5+B,EAAMplB,KAAKs9/B,QACpBgB,EAASjwO,EAASruxB,KAAKs9/B,QAEnBp74B,EAAS684B,EAAW784B,EAAQ,GAAG1jD,SAAS/4D,KAAK4oxB,GAC1CruxB,KAAK+9/B,WAAW34+B,EAAMipwB,IAGjC70pB,EAAMn5G,UAAU09+B,WAAa,SAAqB34+B,EAAMipwB,GAEpDruxB,KAAK8S,KAAO2q/B,EAAW,CAACr4+B,EAAMipwB,IAC9BruxB,KAAK8S,KAAKvI,OAAS6a,EAAK7a,OAAS,EACjCvK,KAAK8S,KAAKokhB,MAAO,EACjBone,EAASt+/B,KAAK8S,KAAM9S,KAAKs9/B,SAG7B9j4B,EAAMn5G,UAAU6++B,kBAAoB,SAA4B95+B,EAAMyX,EAAGs4N,GAKrE,QAJIvxO,EACAu7+B,EAAa5s4B,IACbmnjB,GAAUnnjB,IAEL5jH,EAAIkuB,EAAGluB,GAAKwmP,EAAIt4N,EAAGluB,IAAK,CAC7B,IAAIyw/B,EAAQ7B,EAASn4+B,EAAM,EAAGzW,EAAG3O,KAAKs9/B,QAClC+B,EAAQ9B,EAASn4+B,EAAMzW,EAAGwmP,EAAGn1P,KAAKs9/B,QAElCgC,EAAUC,EAAiBH,EAAOC,GAClCt22B,EAAO612B,EAASQ,GAASR,EAASS,GAGlCC,EAAUH,GACVA,EAAaG,EACb17+B,EAAQjV,EAER+qqB,GAAU3whB,EAAO2whB,GAAU3whB,EAAO2whB,IAE3B4lV,IAAYH,GAEfp22B,EAAO2whB,KACPA,GAAU3whB,EACVnlI,EAAQjV,GAKpB,OAAOiV,GAASuxO,EAAIt4N,GAIxB28F,EAAMn5G,UAAU4++B,iBAAmB,SAA2B75+B,EAAMyX,EAAGs4N,GACnE,IAAIipwB,EAAch5+B,EAAK8xgB,KAAOl3hB,KAAKo+/B,YAAcoB,EAC7CnB,EAAcj5+B,EAAK8xgB,KAAOl3hB,KAAKq+/B,YAAcoB,EACnCz//B,KAAK0//B,eAAet6+B,EAAMyX,EAAGs4N,EAAGipwB,GAChCp+/B,KAAK0//B,eAAet6+B,EAAMyX,EAAGs4N,EAAGkpwB,IAIrBj5+B,EAAKo5C,SAAS1kD,KAAKsk/B,IAIhD5k4B,EAAMn5G,UAAUq/+B,eAAiB,SAAyBt6+B,EAAMyX,EAAGs4N,EAAGr+K,GAClE1xD,EAAKo5C,SAAS1kD,KAAKg9D,GAOnB,QALIwm7B,EAASt9/B,KAAKs9/B,OACdqC,GAAWpC,EAASn4+B,EAAM,EAAGyX,EAAGyg+B,GAChCsC,EAAYrC,EAASn4+B,EAAM+vO,EAAIt4N,EAAGs4N,EAAGmowB,GACrC/u9B,EAASsx9B,EAAWF,IAAYE,EAAWD,GAEtCjx/B,EAAIkuB,EAAGluB,EAAIwmP,EAAIt4N,EAAGluB,IAAK,CAC5B,IAAI8vD,EAAQr5C,EAAKo5C,SAAS7vD,GAC1BupH,EAAOyn4B,GAAUv6+B,EAAK8xgB,KAAOome,EAAO7+7B,GAASA,GAC7ClwB,GAAUsx9B,EAAWF,IAGzB,QAASngP,EAAMrqhB,EAAIt4N,EAAI,EAAG2ivB,GAAO3ivB,EAAG2ivB,IAAO,CACvC,IAAIisB,EAAUrmxB,EAAKo5C,SAASghtB,GAC5BtnpB,EAAO0n4B,EAAWx6+B,EAAK8xgB,KAAOome,EAAO7xN,GAAWA,GAChDl9vB,GAAUsx9B,EAAWD,GAGzB,OAAOrx9B,GAGXirF,EAAMn5G,UAAU2++B,oBAAsB,SAA8B1u2B,EAAMo5B,EAAMxnE,GAE5E,QAASvzG,EAAIuzG,EAAOvzG,GAAK,EAAGA,IACxBupH,EAAOwxD,EAAK/6K,GAAI2hJ,IAIxB92B,EAAMn5G,UAAU89+B,UAAY,SAAoBz00B,GAE5C,QAAS/6K,EAAI+6K,EAAK3jL,OAAS,EAAGuvlB,OAAY,EAAS3mlB,GAAK,EAAGA,IACvB,IAA5B+6K,EAAK/6K,GAAG6vD,SAASz4D,OACjB2J,EAAQ,GACJ4llB,EAAW5ra,EAAK/6K,EAAI,GAAG6vD,UACd16C,OAAOwxkB,EAASx1kB,QAAQ4pK,EAAK/6K,IAAK,GAEtC3O,KAAKs/C,QAETg/8B,EAAS500B,EAAK/6K,GAAI3O,KAAKs9/B,SA4GjC9j4B,EA1jByElhH,gqGCDzE,MAAMwn/B,EAA+B,CACxC9m/B,SACY8m/B,EAA6Bx2oB,UAAYnwM,aAAangK,MAElEswW,cAAUnkX,kBCAP,WAAyB46/B,IAC5B,OAAOA,GAAoBC,EAAuBD,IAAqBE,EAE3E,WAAgCF,IAC5B,MAAQh2mB,aAAam2mB,IACrB,OAAO,IAAIvv8B,IAAWwv8B,KAClB,MAAMj/8B,GAAe,IAAIgjY,KACnBr+I,GAAWk6tB,IAAqBD,EAChC9y+B,GAAQ64Q,GAAS7sR,MACjBsvC,GAAO6nI,KACT,MAAMn3K,GAAM6sR,GAAS7sR,MACrBmn/B,GAAW90/B,KAAK,CACZ8kL,UAAW4v0B,GAAoB/m/B,GAAMm3K,GACrCzkC,QAAS1yI,GAAMgU,KAEdmz+B,GAAWnjuB,QACZ97O,GAAasH,IAAIuhW,GAASzhW,MAGlCpH,UAAasH,IAAIuhW,GAASzhW,KACnBpH,KAGf,MAAM++8B,EAA2BD,yCC1B1B,gBAA2Bxl+B,IAC9B16B,cACI0f,SAASud,WACT/8B,KAAKu0a,OAAS,KACdv0a,KAAKoggC,WAAY,EACjBpggC,KAAKqggC,aAAc,EAEvBC,wBAAwBH,IACpB,MAAQI,YAAUH,aAAW7rlB,UAAQislB,eAAaC,aAAWJ,gBAAgBrggC,KACzEuggC,GACAJ,GAAW77+B,MAAMk8+B,KAEZC,IAAaJ,MAClBD,IAAaD,GAAW90/B,KAAKkpa,IAC7B4rlB,GAAW1r+B,YAGnBppB,KAAK1H,IACI3D,KAAKyggC,YACNzggC,KAAKu0a,OAAS5wa,GACd3D,KAAKoggC,WAAY,GAGzB3r+B,WACI,MAAQ2r+B,aAAW7rlB,UAAQ8rlB,gBAAgBrggC,KACtCqggC,KACDrggC,KAAKqggC,aAAc,EACnBD,IAAa5g/B,MAAMnU,KAAKkpa,IACxB/0Z,MAAMiV,4BC7BlB,IACI0zb,EADAu4iB,EAAa,EAEjB,MAAMC,EAAgB,GACtB,WAA4Bx58B,IACxB,OAAIA,MAAUw58B,WACHA,EAAcx58B,KACd,GAIR,MAAMy58B,EAAY,CACrBC,aAAa599B,IACT,MAAMkkB,GAASu58B,IACfC,SAAcx58B,KAAU,EACnBgha,IACDA,EAAW9pc,QAAQuJ,WAEvBugc,EAASvtb,KAAK,IAAMkm+B,EAAmB358B,KAAWlkB,MAC3CkkB,IAEX458B,eAAe558B,IACX258B,EAAmB358B,OCpBnB058B,eAAcE,kBAAmBH,EAC5BI,EAAoB,CAC7BH,gBAAgB5m+B,IACZ,MAAQqvV,aAAa03oB,EACrB,QAAsB,MAAb13oB,QAA2C,EAASA,GAASu3oB,eAAiBA,MAAiB5m+B,KAE5G8m+B,eAAe558B,IACX,MAAQmiU,aAAa03oB,EACrB,QAAsB,MAAb13oB,QAA2C,EAASA,GAASy3oB,iBAAmBA,GAAgB558B,KAE7GmiU,cAAUnkX,kBCTP,MAAM87/B,EAAgB,ICDtB,gBAA4BC,IAC/BlipB,MAAMh+U,IACFhhC,KAAK86X,SAAU,EACf96X,KAAKmhgC,gBAAah8/B,EAClB,MAAQg5b,YAAYn+b,KACpB,IAAIskB,GACAV,IAAQ,EACZod,GAASA,IAAUm9Z,GAAQx0W,QAC3B,MAAMiuB,GAAQumV,GAAQp4b,OACtB,MACSue,GAAQ0c,GAAO0lkB,QAAQ1lkB,GAAO92B,MAAO82B,GAAO1vB,OAC7C,cAEGsS,GAAQg0F,KAAU52E,GAASm9Z,GAAQx0W,UAE9C,GADA3pF,KAAK86X,SAAU,EACXx2W,GAAO,CACP,OAASV,GAAQg0F,KAAU52E,GAASm9Z,GAAQx0W,UACxC3oD,GAAOl6B,cAEX,MAAMwd,MClBX,iBAAyB88+B,IAC5BthgC,YAAYuhgC,GAAWxhP,IACnBrgwB,MAAM6h/B,GAAWxhP,IACjB7/wB,KAAKqhgC,UAAYA,GACjBrhgC,KAAK6/wB,KAAOA,GAEhByhP,eAAeD,GAAWn8/B,GAAIoM,GAAQ,GAClC,OAAc,OAAVA,IAAkBA,GAAQ,EACnBkO,MAAM8h/B,eAAeD,GAAWn8/B,GAAIoM,KAE/C+v/B,GAAUljkB,QAAQ14b,KAAKzF,MAChBqhgC,GAAUF,aAAeE,GAAUF,WAAaH,eAA+BK,GAAUripB,MAAMn5V,KAAKw7+B,QAAWl8/B,MAE1Ho8/B,eAAeF,GAAWn8/B,GAAIoM,GAAQ,GAClC,GAAc,MAATA,IAAiBA,GAAQ,GAAgB,MAATA,IAAiBtR,KAAKsR,MAAQ,EAC/D,OAAOkO,MAAM+h/B,eAAeF,GAAWn8/B,GAAIoM,IAEd,IAA7B+v/B,GAAUljkB,QAAQp4b,SAClBi7/B,iBAAiC97/B,IACjCm8/B,GAAUF,gBAAah8/B,MFlBtBq8/B,EAAOP,iBGDb,MAAMQ,GAAiB,ICDvB,iBAA6BP,MCA7B,gBAA0BE,IAC7BthgC,YAAYuhgC,GAAWxhP,IACnBrgwB,MAAM6h/B,GAAWxhP,IACjB7/wB,KAAKqhgC,UAAYA,GACjBrhgC,KAAK6/wB,KAAOA,GAEhB91X,SAAS7/Y,GAAOoH,GAAQ,GACpB,OAAIA,GAAQ,EACDkO,MAAMuqY,SAAS7/Y,GAAOoH,KAEjCtR,KAAKsR,MAAQA,GACbtR,KAAKkK,MAAQA,GACblK,KAAKqhgC,UAAUripB,MAAMh/W,MACdA,MAEX0mmB,QAAQx8lB,GAAOoH,IACX,OAAQA,GAAQ,GAAKtR,KAAKg9R,OACtBx9Q,MAAMknlB,QAAQx8lB,GAAOoH,IACrBtR,KAAK0hgC,SAASx3/B,GAAOoH,IAE7Bgw/B,eAAeD,GAAWn8/B,GAAIoM,GAAQ,GAClC,OAAc,MAATA,IAAiBA,GAAQ,GAAgB,MAATA,IAAiBtR,KAAKsR,MAAQ,EACxDkO,MAAM8h/B,eAAeD,GAAWn8/B,GAAIoM,IAExC+v/B,GAAUripB,MAAMh/W,SFtBlB+zyB,GAAQ0tN,mBGAd,IAAME,GAAb,MAAO,iBAAmCT,IACtCphgC,YAAY8hgC,GAAsBC,GAAeC,GAAYvv4B,KACzD/yG,MAAMoi/B,GAAqB,IAAM5hgC,KAAK+hgC,OACtC/hgC,KAAK8hgC,UAAYA,GACjB9hgC,KAAK+hgC,MAAQ,EACb/hgC,KAAK4jB,OAAQ,EAEjBo7V,QACI,MAAQm/E,WAAS2jkB,cAAc9hgC,KAC/B,IAAIskB,GACA0c,GACJ,MAAQA,GAASm9Z,GAAQ,KAAOn9Z,GAAO1vB,OAASww/B,KAC5C3jkB,GAAQx0W,QACR3pF,KAAK+hgC,MAAQ/g+B,GAAO1vB,QACfgT,GAAQ0c,GAAO0lkB,QAAQ1lkB,GAAO92B,MAAO82B,GAAO1vB,WAIrD,GAAIgT,GAAO,CACP,KAAQ0c,GAASm9Z,GAAQx0W,SACrB3oD,GAAOl6B,cAEX,MAAMwd,KAIlBq9+B,UAAqBK,gBAAkB,GA1B1BL,IAAb,GA2BO,iBAA4BP,IAC/BthgC,YAAYuhgC,GAAWxhP,GAAMj8vB,IAASy9+B,GAAUz9+B,OAAS,IACrDpE,MAAM6h/B,GAAWxhP,IACjB7/wB,KAAKqhgC,UAAYA,GACjBrhgC,KAAK6/wB,KAAOA,GACZ7/wB,KAAK4jB,MAAQA,GACb5jB,KAAK2vE,QAAS,EACd3vE,KAAK4jB,MAAQy9+B,GAAUz9+B,MAAQA,GAEnCmmY,SAAS7/Y,GAAOoH,GAAQ,GACpB,GAAIg9C,OAAOC,SAASj9C,IAAQ,CACxB,IAAKtR,KAAKkF,GACN,OAAOsa,MAAMuqY,SAAS7/Y,GAAOoH,IAEjCtR,KAAK2vE,QAAS,EACd,MAAM3uC,GAAS,IAAI6g+B,GAAc7hgC,KAAKqhgC,UAAWrhgC,KAAK6/wB,MACtD,YAAKr3tB,IAAIxnB,IACFA,GAAO+oX,SAAS7/Y,GAAOoH,IAG9B,OAAO4ya,WAGfo9kB,eAAeD,GAAWn8/B,GAAIoM,GAAQ,GAClCtR,KAAKsR,MAAQ+v/B,GAAUU,MAAQzw/B,GAC/B,MAAQ6sb,YAAYkjkB,GACpBljkB,UAAQ14b,KAAKzF,MACbm+b,GAAQrkb,KAAK+n/B,GAAcI,cACpB,EAEXV,eAAeF,GAAWn8/B,GAAIoM,GAAQ,IAGtCow/B,SAASx3/B,GAAOoH,IACZ,IAAoB,IAAhBtR,KAAK2vE,OACL,OAAOnwD,MAAMki/B,SAASx3/B,GAAOoH,uBAGlB6gB,GAAGD,IAClB,OAAIC,GAAE7gB,QAAU4gB,GAAE5gB,MACV6gB,GAAEvO,QAAUsO,GAAEtO,MACP,EAEFuO,GAAEvO,MAAQsO,GAAEtO,MACV,GAGA,EAGNuO,GAAE7gB,MAAQ4gB,GAAE5gB,MACV,GAGA,kEClFZ,YAAoB4w/B,GAAqBb,IAC5C,MAAMc,MAAepoX,MAAWmoX,IAAuBA,GAAsB,IAAMA,GAC7Elw8B,GAAQmu8B,IAAeA,GAAW77+B,MAAM69+B,MAC9C,OAAO,IAAIxx8B,IAAW0w8B,GAAalB,IAAekB,GAAUt3mB,SAAS/3V,GAAM,EAAGmu8B,IAAcnu8B,ICDzF,IAAIow8B,GAAgB,MAC1B,OAAUA,GAIRA,KAAqBA,GAAmB,KAHtBC,KAAU,IAC3BD,GAAiBrwF,MAAW,IAC5BqwF,GAAiBE,SAAc,IAJxBF,GACV,IAAUA,IADgB,GAMpB,SACHtigC,YAAY4tC,GAAM/pC,GAAO2gB,IACrBtkB,KAAK0tC,KAAOA,GACZ1tC,KAAK2D,MAAQA,GACb3D,KAAKskB,MAAQA,GACbtkB,KAAKw4a,SAAoB,MAAT9qY,GAEpBmzB,QAAQr9C,IACJ,OAAO+++B,GAAoBvigC,KAAMwjB,IAErCg/+B,GAAGC,GAAah3S,GAAci3S,IAC1B,MAAQh19B,QAAM/pC,SAAO2gB,UAAUtkB,KAC/B,MAAgB,MAAT0tC,GAA+B,MAAhB+09B,QAAiD,EAASA,GAAY9+/B,IAAkB,MAAT+pC,GAAgC,MAAjB+9qB,QAAmD,EAASA,GAAannsB,IAA6B,MAApBo++B,QAAyD,EAASA,KAE5Q/mkB,OAAOgnkB,GAAgBr++B,GAAOmQ,IAC1B,IAAIzsB,GACJ,OAAO+xoB,QAAqC,QAAzB/xoB,GAAK26/B,UAAmC,IAAP36/B,QAAgB,EAASA,GAAGqD,MAC1ErL,KAAK6gE,QAAQ8h8B,IACb3igC,KAAKwigC,GAAGG,GAAgBr++B,GAAOmQ,IAEzCmu+B,eACI,MAAQl19B,QAAM/pC,SAAO2gB,UAAUtkB,KACzBuS,GAAkB,MAATm7B,MAEPpI,OAAG3hC,IAEM,MAAT+pC,GAEQm19B,GAAW,IAAMv++B,IAER,MAATopB,GAEQq/X,KAEA,EACxB,IAAKx6Z,GACD,MAAM,IAAI+jzB,UAAW,gCAA+B5oxB,MAExD,OAAOn7B,qBAEO5O,IACd,OAAO,IAAIm//B,GAAa,IAAKn//B,uBAEd0mB,IACf,OAAO,IAAIy4+B,GAAa,SAAK39/B,EAAWklB,4BAGxC,OAAOy4+B,GAAaC,sBAIrB,YAA6BvnvB,GAAch4P,IAC9C,IAAIxb,GAAIE,GAAI4B,GACZ,MAAQ4jC,QAAM/pC,SAAO2gB,UAAUk3P,GAC/B,GAAoB,iBAAT9tO,GACP,MAAM,IAAI4oxB,UAAU,wCAEf,MAAT5oxB,GAAwC,QAAxB1lC,GAAKwb,GAASnY,YAAyB,IAAPrD,IAAyBA,GAAG4rB,KAAKpQ,GAAU7f,IAAkB,MAAT+pC,GAAyC,QAAzBxlC,GAAKsb,GAASc,aAA0B,IAAPpc,IAAyBA,GAAG0rB,KAAKpQ,GAAUc,IAAsC,QAA5Bxa,GAAK0Z,GAASiR,gBAA6B,IAAP3qB,IAAyBA,GAAG8pB,KAAKpQ,IAPnRs/+B,GAAaC,qBAAuB,IAAID,GAAa,6CC1D9C,YAAsBpj8B,IACzB,QAASA,KAAQA,cAAe/O,QAAeoplB,MAAWr6kB,GAAI+ttB,QAAS1zI,QAAWr6kB,GAAIh6D,4BCFnF,YAAuBi1C,GAAQloC,IAClC,MAAMuw/B,GAA8B,iBAAXvw/B,GACzB,OAAO,IAAI4L,QAAQ,CAACuJ,GAASD,MACzB,IACI4sZ,GADA6rlB,IAAY,EAEhBzl9B,GAAOj1C,UAAU,CACb2F,KAAO1H,KACH4wa,GAAS5wa,GACTy8/B,IAAY,GAEhB97+B,MAAOqD,GACP8M,SAAU,KACF2r+B,GACAx4+B,GAAQ2sZ,IAEP0ulB,GACDr7+B,GAAQnV,GAAO05B,cAGfxkB,GAAO,IAAIu7+B,uCCnBxB,MAAMC,IAA0BC,QAAkBnq5B,IAAW,WAChEA,GAAOj5G,MACPA,KAAKgF,KAAO,0BACZhF,KAAKwX,QAAU,0BCHN6r/B,IAAgBD,QAAkBnq5B,IAAW,SAA2BzhG,IACjFyhG,GAAOj5G,MACPA,KAAKgF,KAAO,gBACZhF,KAAKwX,QAAUA,qBCHZ,MAAM8r/B,IAAgBF,QAAkBnq5B,IAAW,SAA2BzhG,IACjFyhG,GAAOj5G,MACPA,KAAKgF,KAAO,gBACZhF,KAAKwX,QAAUA,oECGZ,MAAMkP,IAAe08+B,QAAkBnq5B,IAAW,SAA0B10F,GAAO,MACtF00F,GAAOj5G,MACPA,KAAKwX,QAAU,uBACfxX,KAAKgF,KAAO,eACZhF,KAAKukB,KAAOA,KAET,YAAiB9R,GAAQ8w/B,IAC5B,MAAQr8/B,SAAO4i1B,QAAM05K,KAAMC,GAAQC,GAAqBrC,cAA6B,MAAjBkC,GAAmDA,GAAeI,KAAgB/r/B,QAAO,OAAUgs/B,QAAYnx/B,IAC7K,CAAEvL,MAAOuL,IACS,iBAAXA,GACH,CAAEq30B,KAAMr30B,IACRA,GACV,GAAa,MAATvL,IAAyB,MAAR4i1B,GACjB,MAAM,IAAIxzB,UAAU,wBAExB,OAAOutM,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAI2D,GACAC,GACAC,GAAY,KACZ5kiB,GAAO,EACX,MAAM6kiB,GAAc3y/B,KAChByy/B,IAAoBG,QAAgB/D,GAAYkB,GAAW,KACvD,IACIyC,GAA2Bh9/B,eAC3Bq9/B,SAAUV,GAAM,CACZ7r/B,QACAos/B,aACA5kiB,WACA15d,UAAUy6/B,UAEX91+B,IACH81+B,GAAW77+B,MAAM+F,MAEtB/Y,KAEPwy/B,GAA6Bnp9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACxD,MAAtBoggC,IAAsEA,GAAkBj9/B,cACxFs4d,KACA+giB,GAAW90/B,KAAM24/B,GAAYrggC,IAC7Bmm1B,GAAO,GAAKm6K,GAAWn6K,UACxB3k1B,OAAWA,EAAW,MACO,MAAtB4+/B,QAA6D,EAASA,GAAkB/muB,SACpE,MAAtB+muB,IAAsEA,GAAkBj9/B,cAE5Fk9/B,GAAY,QAEhBC,GAAoB,MAAT/8/B,GAAkC,iBAAVA,GAAqBA,IAASA,GAAQm6/B,GAAUro/B,MAAS8w0B,MAGpG,YAA6Bvl0B,IACzB,MAAM,IAAImC,GAAanC,mECnDpB,YAA+B8/+B,GAAaC,GAAcC,GAAgBlD,IAC7E,GAAIkD,GACA,QAAIC,MAAYD,IAIZ,OAAO,YAAatq+B,IAChB,OAAOwq+B,GAAsBJ,GAAaC,GAAcjD,IACnD1t+B,MAAM3zB,KAAMi6B,IACZztB,QAAKk4/B,MAAiBH,MAN/BlD,GAAYkD,GAUpB,OAAIlD,GACO,YAAapn+B,IAChB,OAAOwq+B,GAAsBJ,GAAaC,IACrC3w+B,MAAM3zB,KAAMi6B,IACZztB,QAAKm4/B,MAAYtD,OAAYuD,MAAUvD,MAG7C,YAAapn+B,IAChB,MAAM1W,GAAU,IAAIsh/B,EACpB,IAAIC,IAAgB,EACpB,OAAO,IAAIn08B,IAAYwv8B,KACnB,MAAM75iB,GAAO/ic,GAAQ7d,UAAUy6/B,IAC/B,GAAI2E,GAAe,CACfA,IAAgB,EAChB,IAAInze,IAAU,EACVoze,IAAa,EACjBT,GAAa3w+B,MAAM3zB,KAAM,IAClBi6B,GACH,IAAI43U,MACA,GAAIwypB,GAAa,CACb,MAAMh6+B,GAAMwnV,GAAQloR,QACpB,GAAW,MAAPt/D,GAEA,YADA9G,GAAQe,MAAM+F,IAItB9G,GAAQlY,KAAK,EAAIwmW,GAAQ9rW,OAAS8rW,GAAUA,GAAQ,IACpDkzpB,IAAa,EACTpze,IACApugB,GAAQkR,cAIhBsw+B,IACAxh/B,GAAQkR,WAEZk9f,IAAU,EAEd,OAAOrrE,MCxDZ,YAAsBg+iB,GAAcC,GAAgBlD,IACvD,OAAOoD,IAAsB,EAAOH,GAAcC,GAAgBlD,ICD/D,YAA0BiD,GAAcC,GAAgBlD,IAC3D,OAAOoD,IAAsB,EAAMH,GAAcC,GAAgBlD,4CCCrE,MAAM2D,GAAiB,CACnBC,UAAW,IAAM,IAAIzq+B,IACrB0q+B,mBAAmB,GAEhB,YAAqBvq9B,GAAQloC,GAASuy/B,IACzC,IAAIpw+B,GAAa,KACjB,MAAQqw+B,aAAWC,sBAAoB,GAASzy/B,GAChD,IAAI8Q,GAAU0h/B,KACd,MAAM1y/B,GAAS,IAAIo+C,IAAYwv8B,IACpB58+B,GAAQ7d,UAAUy6/B,KAE7B5t/B,UAAOgX,QAAU,OACRqL,IAAcA,GAAWooQ,UAC1BpoQ,IAAauhW,QAAM,IAAMx7U,IAAQj1C,UAAU6d,IACvC2h/B,IACAtw+B,GAAW4zB,IAAI,IAAOjlC,GAAU0h/B,OAGjCrw+B,IAEJriB,2CCpBJ,YAA0B4y/B,GAAYC,GAAeb,IACxD,OAAIA,GACOc,GAAiBF,GAAYC,IAAe54/B,QAAKk4/B,MAAiBH,KAEtE,IAAI5z8B,IAAYwv8B,KACnB,MAAMn8b,GAAU,IAAI/6jB,KAAMk3/B,GAAW90/B,KAAkB,IAAbpC,GAAElD,OAAekD,GAAE,GAAKA,IAC5Dq8/B,GAAWH,GAAWnhc,IAC5B,SAAO+1E,MAAWqrX,IAAiB,IAAMA,GAAcphc,GAASshc,SAAYnggC,oBCN7E,YAAkBoggC,GAAuB5w4B,GAAW6w4B,GAASC,GAA2BpE,IAC3F,IAAIkD,GACAmB,GAoBJ,cACI,QAASx7/B,GAAQw7/B,IAAe/w4B,IAAaA,GAAUzqH,IAAQA,GAAQs7/B,GAAQt7/B,UACrEq6/B,GAAer6/B,IAG7B,OAxByB,IAArB6yB,UAAUh3B,SAEN2//B,gBACA/w4B,aACA6w4B,WACAjB,kBAAiBvkhB,KACjBqhhB,cACAkE,KAGJG,GAAeH,IACVE,OAA6BjB,MAAYiB,KAC1ClB,GAAiBvkhB,KACjBqhhB,GAAYoE,IAGZlB,GAAiBkB,OAQlBtvoB,MAAOkroB,GAEN,KAAMsE,QAAiBC,KAAOvE,IAE9BuE,IClCL,YAAajx4B,GAAWkx4B,GAAYC,IACvC,OAAO3voB,QAAM,IAAOxhQ,KAAckx4B,GAAaC,gCCA5C,MAAMC,GAAQ,IAAIp18B,IAAWkuW,MAC7B,cACH,OAAOknmB,kBCDJ,eAA8Bz6gB,IACjC,OCCG,eAA8BA,IACjC,MAAM06gB,MAAcC,MAAe36gB,IACnC,OAAOu4gB,QAAQ,CAAClp9B,GAAQwl9B,MACpB,MAAM7hU,GAAY,CAAC3jpB,MAAWqr9B,IACxBE,GAAgB,KAClB,IAAK/F,GAAWnjuB,OACZ,GAAIsha,GAAUv4rB,OAAS,EAAG,CACtB,IAAIoggC,GACJ,IACIA,IAAahC,SAAU7lU,GAAU30mB,eAE9Bt/D,IAEH,YADA67+B,KAGJ,MAAME,GAAW,IAAIhC,KAAmBjE,QAAYh7/B,EAAW05Z,KAAMA,MACrEshmB,GAAW338B,IAAI298B,GAAWzggC,UAAU0ggC,KACpCA,GAAS598B,IAAI098B,SAGb/F,GAAW1r+B,YAIvByx+B,ODzBGG,EAAsBJ,QAAe36gB,IAArC+6gB,CAA+Ct5lB,MEHnD,YAAertW,GAAK2h8B,IACvB,OAAOj57B,QAAKviE,OAAO26D,QAAQd,IAAM2h8B,8BCC9B,YAAmB1m9B,GAAQyyX,GAAW65C,IACzC,MAAO,IAACl6c,MAAOqga,GAAW65C,KAASk9iB,SAAUxp9B,MAAU5tC,WAAOm6c,MAAI95C,GAAW65C,QAAUk9iB,OAAUxp9B,MCA9F,eAAiB2wc,IACpBA,OAC0B,KAD1BA,IAAU26gB,QAAe36gB,KACVvlf,QAAeo+/B,SAAU74gB,GAAQ,IAAM,IAAI36b,IAAW218B,GAASh7gB,KAE3E,YAAkBA,IACrB,OAAQ60gB,KACJ,IAAIl39B,GAAgB,GACpB,QAASt6B,GAAI,EAAGs6B,KAAkBk39B,GAAWnjuB,QAAUruR,GAAI28e,GAAQvlf,OAAQ4I,KACvEs6B,GAAcxjC,QAAK0+/B,OAAU74gB,GAAQ38e,KAAIjJ,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACnF,GAAIslC,GAAe,CACf,QAASpiC,GAAI,EAAGA,GAAIoiC,GAAcljC,OAAQc,KACtCA,KAAM8H,IAAKs6B,GAAcpiC,IAAGC,cAEhCmiC,GAAgB,KAEpBk39B,GAAW90/B,KAAK1H,SCjBzB,YAAeqpB,GAAO4qF,GAAOyp5B,IAKhC,GAJa,MAATzp5B,KACAA,GAAQ5qF,GACRA,GAAQ,GAER4qF,IAAS,EACT,OAAOm1T,KAEX,MAAMziY,GAAMstE,GAAQ5qF,GACpB,OAAO,IAAI2jC,IAAW0w8B,GAEblB,KACG,IAAIry/B,GAAIkf,GACR,OAAOq0+B,GAAUt3mB,SAAS,WAClBj8Y,GAAIw8B,IACJ619B,GAAW90/B,KAAKyC,MAChB9N,KAAK+pZ,YAGLo2mB,GAAW1r+B,cAKtB0r+B,KACG,IAAIry/B,GAAIkf,GACR,KAAOlf,GAAIw8B,KAAQ619B,GAAWnjuB,QAC1BmjuB,GAAW90/B,KAAKyC,MAEpBqy/B,GAAW1r+B,6BC5BpB,YAAe8x+B,GAAiBC,IACnC,OAAO,IAAI718B,IAAYwv8B,KACnB,MAAM9x2B,GAAWk42B,KACXh0/B,GAASi0/B,GAAkBn42B,IAEjC1zG,OADepoC,MAAS4x/B,OAAU5x/B,IAAUw6Z,MACrCrna,UAAUy6/B,IACV,KACC9x2B,IACAA,GAASvnJ,iFCRlB,YAAgB2//B,IACnB,OAAO5C,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIuG,GAAgB,GACpB/r9B,UAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,IAAU+igC,GAAcjhgC,KAAK9B,IAAQ,KACtFw8/B,GAAW90/B,KAAKq7/B,IAChBvG,GAAW1r+B,cAEfgy+B,GAAgB/ggC,UAAU,IAAI0+/B,KAAmBjE,GAAY,KACzD,MAAMju+B,GAAIw0+B,GACVA,GAAgB,GAChBvG,GAAW90/B,KAAK6mB,KACjB2sY,OACI,KACH6nmB,GAAgB,+CCTrB,YAAoBC,MAAmB/sJ,IAC1C,IAAI5x2B,GAAIE,GACR,MAAMm5/B,GAA+C,QAAlCr5/B,MAAK4+/B,OAAahtJ,WAA+B,IAAP5x2B,GAAgBA,GAAK27/B,IAC5EkD,GAAiD,QAAvB3+/B,GAAK0x2B,GAAU,UAAuB,IAAP1x2B,GAAgBA,GAAK,KAC9E4+/B,GAAgBltJ,GAAU,IAAMrnvB,IACtC,OAAOsx4B,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAI4G,GAAgB,GAChBC,IAAgB,EACpB,MAAMn//B,GAAQiob,KACV,MAAQx9Z,UAAQg0b,SAASx2B,GACzBw2B,GAAKx/c,iBACLmggC,MAAUF,GAAej3kB,IACzBqwkB,GAAW90/B,KAAKinB,IAChB00+B,IAAiBE,MAEfA,GAAc,KAChB,GAAIH,GAAe,CACf,MAAMzgjB,GAAO,IAAIpiC,KACjBi8kB,GAAW338B,IAAI89Z,IAEf,MAAMx2B,GAAS,CACXx9Z,OAFW,GAGXg0b,SAEJygjB,GAActhgC,KAAKqqb,OACnBo0kB,MAAgB59iB,GAAM+6iB,GAAW,IAAMx5/B,GAAKiob,IAAS62kB,MAG9B,OAA3BE,IAAmCA,IAA0B,KAC7D3C,MAAgB/D,GAAYkB,GAAW6F,GAAaL,IAAwB,GAG5EG,IAAgB,EAEpBE,KACA,MAAMC,GAAuB,IAAI/C,KAAmBjE,GAAax8/B,KAC7D,MAAMyjgC,GAAcL,GAAcn4/B,QAClC,UAAWkhb,MAAUs3kB,GAAa,CAC9B,MAAQ90+B,WAAWw9Z,GACnBx9Z,GAAO7sB,KAAK9B,IACZmjgC,IAAiBx0+B,GAAOvsB,QAAU8B,GAAKiob,MAE5C,KACC,KAAyB,MAAlBi3kB,QAAqD,EAASA,GAAchhgC,QAC/Eo6/B,GAAW90/B,KAAK07/B,GAAcp96B,QAAQr3D,QAEjB,MAAzB60+B,IAA4EA,GAAqBrggC,cACjGq5/B,GAAW1r+B,WACX0r+B,GAAWr5/B,oBACZ3B,EAAW,IAAO4hgC,GAAgB,MACrCps9B,GAAOj1C,UAAUyhgC,MCnDlB,YAAsBE,GAAUC,IACnC,OAAOzD,QAAQ,CAAClp9B,GAAQwl9B,MACpB,MAAMoH,GAAU,MAChBpD,OAAUkD,IAAU3hgC,UAAU,IAAI0+/B,KAAmBjE,GAAaqH,KAC9D,MAAMl1+B,GAAS,GACfi1+B,GAAQ9hgC,KAAK6sB,IACb,MAAMm1+B,GAAsB,IAAIvjlB,KAMhCujlB,GAAoBj/8B,KAAI278B,SAAUmD,GAAgBE,KAAY9hgC,UAAU,IAAI0+/B,KAAmBjE,GAL5E,QACf8G,MAAUM,GAASj1+B,IACnB6t+B,GAAW90/B,KAAKinB,IAChBm1+B,GAAoB3ggC,eAE+F+3Z,SACxHA,OACHlkX,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjD,UAAW2uB,MAAUi1+B,GACjBj1+B,GAAO7sB,KAAK9B,KAEjB,KACC,KAAO4jgC,GAAQxhgC,OAAS,GACpBo6/B,GAAW90/B,KAAKk8/B,GAAQ596B,SAE5Bw26B,GAAW1r+B,gBCxBhB,YAAoB6y+B,IACvB,OAAOzD,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAI7t+B,GAAS,KACTo1+B,GAAoB,KACxB,MAAMC,GAAa,KACO,MAAtBD,IAAsEA,GAAkB5ggC,cACxF,MAAMorB,GAAII,GACVA,GAAS,GACTJ,IAAKiu+B,GAAW90/B,KAAK6mB,KACrBiy+B,SAAUmD,MAAmB5hgC,UAAWgigC,GAAoB,IAAItD,KAAmBjE,GAAYwH,GAAY9omB,QAE/G8omB,KACAht9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,IAAqB,MAAX2uB,QAAuC,EAASA,GAAO7sB,KAAK9B,IAAQ,KAC/H2uB,IAAU6t+B,GAAW90/B,KAAKinB,IAC1B6t+B,GAAW1r+B,iBACZtvB,EAAW,IAAOmtB,GAASo1+B,GAAoB,iDCjBnD,YAAgB93qB,GAAag4qB,IAChC,OAAO/D,WAAQgE,MAAcj4qB,GAAag4qB,GAAM7q+B,UAAUh3B,QAAU,GAAG,GAAO,ICDlF,MAAM+hgC,GAAa,CAACz5/B,GAAK1K,MAAW0K,GAAI5I,KAAK9B,IAAQ0K,IAC9C,cACH,OAAOw1/B,QAAQ,CAAClp9B,GAAQwl9B,MACpBnm/B,GAAO8t/B,GAAY,GAAnB9t/B,CAAuB2gC,IAAQj1C,UAAUy6/B,MCA1C,YAA0B4H,GAAQC,IACrC,OAAOx7/B,QAAKgiF,MAAWp9E,QAAUk6e,IAAYy8gB,GAAOz8gB,KAAW08gB,IAAUtD,QAAiBsD,IAAWhohB,MCJlG,YAA0BgohB,IAC7B,OAAOC,GAAiBp7/B,KAAem7/B,ICFpC,MAAME,GAAaC,GCKnB,eAA0Blu+B,IAC7B,MAAMsq+B,MAAiB6D,OAAkBnu+B,IACzC,OAAOsq+B,IACD/3/B,QAAKK,MAAiBotB,OAAOyq+B,MAAiBH,MAC9CV,QAAQ,CAAClp9B,GAAQwl9B,SACfkI,MAAkB,CAAC1t9B,SAAWsr9B,MAAehs+B,MAAQkm+B,MCV1D,eAA8BmI,IACjC,OAAOz7/B,MAAiBy7/B,gCCArB,YAAqBC,GAAiBhE,IACzC,OAAOxqX,QAAWwqX,OAAkBv5iB,MAAU,IAAMu9iB,GAAiBhE,KAAkBv5iB,QAAU,IAAMu9iB,ICFpG,eAAuBD,IAC1B,OCEG,eAAmBru+B,IACtB,MAAMon+B,MAAYuF,OAAa3s+B,IAC/B,OAAO4p+B,QAAQ,CAAClp9B,GAAQwl9B,OACpBqI,aAAYpg8B,MAAK,CAACztB,MAAW1gB,IAAOon+B,KAAY37/B,UAAUy6/B,MDLvDxs9B,IAAU209B,IEErB,MAAMtD,GAAiB,CACnBC,UAAW,IAAM,IAAIzq+B,KAElB,YAAiBg/P,GAAU/mR,GAASuy/B,IACvC,MAAQC,cAAcxy/B,GACtB,OAAOox/B,QAAQ,CAAClp9B,GAAQwl9B,MACpB,MAAM58+B,GAAU0h/B,MAChB787B,QAAKoxN,GCVN,YAA0BivuB,IAC7B,OAAO,IAAI938B,IAAYwv8B,IAAesI,GAAa/igC,UAAUy6/B,KDS3CuI,CAAiBnl/B,MAAW7d,UAAUy6/B,IACpDA,GAAW338B,IAAI7N,GAAOj1C,UAAU6d,OEXjC,YAAe6pZ,IAClB,OAAOpzZ,GAAO,CAACvL,GAAO9K,GAAOgL,MAAQy+Z,IAAaA,GAAUzpa,GAAOgL,IAAKF,GAAQ,EAAIA,GAAQ,GCEzF,YAAkBk6/B,IACrB,OAAO9E,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAI3nlB,IAAW,EACXwrlB,GAAY,KACZ4E,GAAqB,KACzB,MAAM/ggC,GAAO,KAGT,GAFuB,MAAvB+ggC,IAAwEA,GAAmB9hgC,cAC3F8hgC,GAAqB,KACjBpwlB,GAAU,CACVA,IAAW,EACX,MAAM70a,GAAQqggC,GACdA,GAAY,KACZ7D,GAAW90/B,KAAK1H,MAGxBg3C,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KAC1B,MAAvBilgC,IAAwEA,GAAmB9hgC,cAC3F0xa,IAAW,EACXwrlB,GAAYrggC,GACZilgC,GAAqB,IAAIxE,KAAmBjE,GAAYt4/B,GAAMg3Z,OAC9DslmB,SAAUwE,GAAiBhlgC,KAAQ+B,UAAUkjgC,KAC9C,KACC/ggC,KACAs4/B,GAAW1r+B,iBACZtvB,EAAW,KACV6+/B,GAAY4E,GAAqB,6DC1BtC,cACH,OAAO/E,QAAQ,CAAClp9B,GAAQwl9B,MACpBxl9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAa3kvB,IAAiB+mvB,GAAoB/mvB,GAAc2kvB,oCCJzG,YAAiCtt/B,GAAKikE,IACzC,OAAO3wC,QAAqB,CAACx8B,GAAGmqD,KAAMgjB,GAAUA,GAAQntE,GAAEkJ,IAAMihD,GAAEjhD,KAAQlJ,GAAEkJ,MAASihD,GAAEjhD,iCCGpF,YAAmB+Q,GAAOuoB,IAC7B,GAAIvoB,GAAQ,EACR,MAAM,IAAIu/+B,GAEd,MAAM0F,GAAkB9r+B,UAAUh3B,QAAU,EAC5C,OAAQ40C,IAAWA,GAAOnuC,QAAKO,MAAO,CAACvG,GAAGmI,KAAMA,KAAMiV,KAAQ2tC,QAAK,GAAIs38B,MAAkBC,MAAe389B,KAAgB489B,QAAa,IAAM,IAAI5F,KCR5I,eAAoB98/B,IACvB,OAAQs0C,OAAWhH,MAAOgH,IAAQrV,YAAMj/B,KCDrC,YAAe+ma,GAAW65C,IAC7B,OAAO48iB,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIv8+B,GAAQ,EACZ+2B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KAC5Cypa,GAAUx5Y,KAAKqzb,GAAStjd,GAAOigB,KAAS+2B,MACzCwl9B,GAAW90/B,MAAK,GAChB80/B,GAAW1r+B,aAEhB,KACC0r+B,GAAW90/B,MAAK,GAChB80/B,GAAW1r+B,gBCThB,cACH,OAAOov+B,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAI4E,IAAa,EACbqB,GAAW,KACfzr9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAaz+9B,KAC5C0k+B,KACDA,MAAWjC,OAAUzi+B,IAAOh8B,UAAU,IAAI0+/B,KAAmBjE,QAAYh7/B,EAAW,KAChFihgC,GAAW,KACXrB,IAAc5E,GAAW1r+B,gBAGlC,KACCsw+B,IAAa,GACZqB,IAAYjG,GAAW1r+B,gBCf7B,MAAMu0+B,GAAUC,mBCGhB,YAAoBjB,GAASzD,IAChC,OAAIA,GACQ5p9B,IAAWA,GAAOnuC,KAAK08/B,GAAW,CAAC/2+B,GAAGxjB,QAAMw1/B,OAAU6D,GAAQ71+B,GAAGxjB,KAAInC,MAAK7G,QAAI,CAACusB,GAAGypF,KAAO4o5B,GAAepy+B,GAAGD,GAAGvjB,GAAGgtG,SAEtHko5B,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIv8+B,GAAQ,EACRwi/B,GAAW,KACXrB,IAAa,EACjBpq9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAagJ,KAC5C/C,KACDA,GAAW,IAAIhC,KAAmBjE,QAAYh7/B,EAAW,KACrDihgC,GAAW,KACXrB,IAAc5E,GAAW1r+B,cAE7B0v+B,SAAU6D,GAAQmB,GAAYvl/B,OAAUle,UAAU0ggC,MAEvD,KACCrB,IAAa,GACZqB,IAAYjG,GAAW1r+B,4CCpB7B,YAAc24Y,GAAW65C,IAC5B,OAAO48iB,QAAQ9nJ,GAAW3uc,GAAW65C,GAAS,UAE3C,YAAoB75C,GAAW65C,GAASp/c,IAC3C,MAAMimC,GAAqB,UAATjmC,GAClB,MAAO,CAAC8yC,GAAQwl9B,MACZ,IAAIv8+B,GAAQ,EACZ+2B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjD,MAAMgL,GAAIiV,KACNwpZ,GAAUx5Y,KAAKqzb,GAAStjd,GAAOgL,GAAGgsC,MAClCwl9B,GAAW90/B,KAAKyiC,GAAYn/B,GAAIhL,IAChCw8/B,GAAW1r+B,aAEhB,KACC0r+B,GAAW90/B,KAAKyiC,IAAY,OAAK3oC,GACjCg7/B,GAAW1r+B,eCfhB,YAAmB24Y,GAAW65C,IACjC,OAAO48iB,QAAQ9nJ,GAAW3uc,GAAW65C,GAAS,0BCE3C,YAAiBmijB,GAAaC,GAAkBn9/B,GAAU+4/B,IAC7D,OAAOpB,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIzr/B,GACC20/B,IAAgD,mBAArBA,KAIzBn9/B,YAAUwI,WAASuw/B,cAAcoE,IAHpC30/B,GAAU20/B,GAKd,MAAM738B,GAAS,IAAI7S,IACboxR,GAAU9sS,KACZuuB,GAAO5qD,QAAQq8B,IACfA,GAAGk99B,KAEDxzoB,GAAetiW,IAAQ0lT,GAAQu5rB,IAAaA,GAAShl/B,MAAM+F,KAC3Dk/+B,GAA0B,IAAIC,GAAkBrJ,GAAax8/B,KAC/D,IACI,MAAMkP,GAAMu2/B,GAAYzlgC,IACxB,IAAI+kC,GAAQ8oB,GAAO3yC,IAAIhM,IACvB,IAAK61B,GAAO,CACR8oB,GAAOn/B,IAAIxf,GAAM61B,GAAQu89B,GAAYA,KAAc,IAAIzq+B,KACvD,MAAMgkb,GAiBlB,YAAiC3rc,GAAK42/B,IAClC,MAAMl3/B,GAAS,IAAIo+C,IAAY+48B,KAC3BH,GAAwBI,eACxB,MAAMvD,GAAWqD,GAAa/jgC,UAAUgkgC,IACxC,MAAO,KACHtD,GAASt//B,cACkC,KAAzCyigC,GAAwBI,cACtBJ,GAAwBK,mBACxBL,GAAwBzigC,iBAGpCyL,UAAOM,IAAMA,GACNN,GA7BiBs3/B,CAAwBh3/B,GAAK61B,IAE7C,GADAy39B,GAAW90/B,KAAKmzc,IACZtyc,GAAU,CACV,MAAM08/B,GAAqB,IAAIxE,KAAmB179B,GAAO,KACrDA,GAAMjU,WACiB,MAAvBm0+B,IAAwEA,GAAmB9hgC,oBAC5F3B,OAAWA,EAAW,IAAMqsD,GAAOryC,OAAOtM,KAC7C02/B,GAAwB/g9B,KAAI278B,SAAUj4/B,GAASsyc,KAAU94c,UAAUkjgC,MAG3Elg+B,GAAMr9B,KAAKqJ,GAAUA,GAAQ/Q,IAASA,UAEnC0mB,IACHsiW,GAAYtiW,MAEjB,IAAM0lT,GAAQu5rB,IAAaA,GAAS70+B,YAAak4V,GAAa,IAAMn7T,GAAOlS,SAC9E3E,GAAOj1C,UAAU6jgC,MAiBzB,iBAAgCnF,KAC5BtkgC,cACI0f,SAASud,WACT/8B,KAAK2pgC,aAAe,EACpB3pgC,KAAK4pgC,mBAAoB,EAE7B9igC,cACI9G,KAAK4pgC,mBAAoB,EACH,IAAtB5pgC,KAAK2pgC,cAAsBnq/B,MAAM1Y,+BCjElC,cACH,OAAO+8/B,QAAQ,CAAClp9B,GAAQwl9B,MACpBxl9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAY,KAChDA,GAAW90/B,MAAK,GAChB80/B,GAAW1r+B,YACZ,KACC0r+B,GAAW90/B,MAAK,GAChB80/B,GAAW1r+B,yCCNhB,cACH,OAAOov+B,QAAQ,CAAClp9B,GAAQwl9B,MACpBxl9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjDw8/B,GAAW90/B,KAAKy3/B,cAAwBn//B,MACzC,KACCw8/B,GAAW90/B,KAAKy3/B,qBAChB3C,GAAW1r+B,YACXpK,KACA81+B,GAAW90/B,KAAKy3/B,eAAyBz4+B,KACzC81+B,GAAW1r+B,gBCVhB,YAAaswT,IAChB,OAAO/qU,IAAO+/nB,QAAWh1T,IAAY,CAACp7U,GAAGmqD,KAAOixR,GAASp7U,GAAGmqD,IAAK,EAAInqD,GAAImqD,GAAK,CAACnqD,GAAGmqD,KAAOnqD,GAAImqD,GAAInqD,GAAImqD,mBCFlG,MAAMovzB,GAAU9x2B,KCChB,YAAoBm3/B,GAAiBhE,GAAgB/7X,GAAaj2gB,KACrE,SAAIwnhB,MAAWwqX,KACJnz/B,QAAS,IAAMm3/B,GAAiBhE,GAAgB/7X,KAE7B,iBAAnB+7X,KACP/7X,GAAa+7X,KAEVnz/B,QAAS,IAAMm3/B,GAAiB//X,qBCPpC,YAAmB54S,GAAag4qB,GAAMp/X,GAAaj2gB,KACtD,OAAOsx4B,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIj2/B,GAAQ09/B,GACZ,OAAOkC,QAAenv9B,GAAQwl9B,GAAY,CAACx8/B,GAAOigB,KAAUgsU,GAAY1lV,GAAOvG,GAAOigB,IAAQ4knB,GAAa7koB,KACvGuG,GAAQvG,KACT,OAAOwB,EAAW,IAAO+E,GAAQ,QCNrC,eAAsBo+/B,IACzB,OCGG,eAAkBru+B,IACrB,MAAMon+B,MAAYuF,OAAa3s+B,IACzBuumB,IAAauhY,SAAU9v+B,GAAMs4F,KACnCt4F,aAAOgs+B,MAAehs+B,KACf4p+B,QAAQ,CAAClp9B,GAAQwl9B,OACpB6J,QAASxhY,OAAYpgkB,MAAK,CAACztB,MAAW1gB,IAAOon+B,KAAY37/B,UAAUy6/B,MDRhE5v9B,IAAS+39B,IEAb,YAAavjrB,IAChB,OAAO/qU,IAAO+/nB,QAAWh1T,IAAY,CAACp7U,GAAGmqD,KAAOixR,GAASp7U,GAAGmqD,IAAK,EAAInqD,GAAImqD,GAAK,CAACnqD,GAAGmqD,KAAOnqD,GAAImqD,GAAInqD,GAAImqD,ICAlG,YAAmBm28B,GAAyBzwuB,IAC/C,MAAM0wuB,IAAiBnwX,QAAWkwX,IAA2BA,GAA0B,IAAMA,GAC7F,OAAIlwX,QAAWvgX,IACJjwQ,GAAQiwQ,GAAU,CACrByruB,UAAWiF,KAGXvv9B,IAAW,IAAIwv9B,IAAsBxv9B,GAAQuv9B,gCCPlD,YAAiB1wuB,IACpB,OAAOA,GAAY7+O,IAAWpxB,GAAQiwQ,GAARjwQ,CAAkBoxB,IAAWA,IAAWyv9B,GAAU,IAAI5v+B,IAAd4v+B,CAAyBzv9B,ICF5F,YAAyBsonB,IAC5B,OAAQtonB,KACJ,MAAMp3B,GAAU,IAAI7Y,IAAgBu4pB,IACpC,OAAO,IAAIknW,IAAsBxv9B,GAAQ,IAAMp3B,KCHhD,cACH,OAAQo3B,KACJ,MAAMp3B,GAAU,IAAIsh/B,EACpB,OAAO,IAAIsF,IAAsBxv9B,GAAQ,IAAMp3B,KCFhD,YAAuBsR,GAAYw1+B,GAAYC,GAAqBvK,IACnEuK,MAAwBvwX,QAAWuwX,MACnCvK,GAAoBuK,IAExB,MAAM9wuB,IAAWugX,QAAWuwX,IAAuBA,QAAsBnlgC,EACzE,OAAQw1C,IAAWyv9B,GAAU,IAAI3hmB,IAAc5zY,GAAYw1+B,GAAYtK,IAAoBvmuB,GAAxE4wuB,CAAkFzv9B,ICLlG,eAAqB2t9B,IACxB,OAAQA,GAAavigC,QAEf89/B,QAAQ,CAAClp9B,GAAQwl9B,MACfmG,GAAS,CAAC3r9B,MAAW2t9B,IAArBhC,CAAoCnG,MAFtCnghB,KCFH,YAAgBpoY,GAAQ2a,KAC3B,OAAO3a,IAAS,EACV,IAAMm1T,MACN82lB,QAAQ,CAAClp9B,GAAQwl9B,MACf,IACIiG,GADAmE,GAAQ,EAEZ,MAAMC,GAAqB,KACvB,IAAIC,IAAY,EAChBrE,GAAWzr9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,QAAYh7/B,EAAW,OAChEolgC,GAAQ3y5B,GACNwu5B,IACAA,GAASt//B,cACTs//B,GAAW,KACXoE,MAGAC,IAAY,EAIhBtK,GAAW1r+B,cAGfg2+B,KACArE,GAASt//B,cACTs//B,GAAW,KACXoE,OAGRA,OC7BL,YAAoBE,IACvB,OAAO7G,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIiG,GAEAuE,GADAC,IAAY,EAEZC,IAAqB,EACrBC,IAAiB,EACrB,MAAMC,GAAgB,IAAMD,IAAkBD,KAAuB1K,GAAW1r+B,YAAY,GAkBtFu2+B,GAAyB,KAC3BF,IAAiB,EACjB1E,GAAWzr9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,QAAYh7/B,EAAW,KACtE2lgC,IAAiB,GAChBC,OApBAJ,KACDA,GAAe,IAAInw+B,IACnBkw+B,GAASC,IAAcjlgC,UAAU,IAAI0+/B,KAAmBjE,GAAY,KAC5DiG,GACA4E,KAGAJ,IAAY,GAEjB,KACCC,IAAqB,EACrBE,SAGDJ,IAMwCt//B,UAE3Cu//B,KACAxE,GAASt//B,cACTs//B,GAAW,KACXwE,IAAY,EACZI,OAGRA,OCpCD,YAAeC,GAAgB144B,KAClC,IAAI9/G,GAEAA,GADAw4/B,IAA0C,iBAAlBA,GACfA,GAGA,CACLrz5B,MAAOqz5B,IAGf,MAAQrz5B,SAAQ2a,IAAUjhH,SAAuB45/B,mBAAiB,GAAUz4/B,GAC5E,OAAOmlG,IAAS,EACVooY,MACA6jhB,QAAQ,CAAClp9B,GAAQwl9B,MACf,IACIiG,GADAmE,GAAQ,EAEZ,MAAMY,GAAoB,KACtB,IAAIV,IAAY,EAChBrE,GAAWzr9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACxDungC,KACAX,GAAQ,GAEZpK,GAAW90/B,KAAK1H,UACjBwB,EAAYklB,KACX,GAAIkg/B,KAAU3y5B,GAAO,CACjB,MAAMwz5B,GAAQ,KACNhF,IACAA,GAASt//B,cACTs//B,GAAW,KACX+E,MAGAV,IAAY,GAGpB,GAAa,MAATn5/B,GAAe,CACf,MAAMo5/B,GAA4B,iBAAVp5/B,IAAqBq8I,QAAMr8I,KAAS6y/B,SAAU7y/B,GAAM+Y,GAAKkg/B,KAC3Ec,GAAqB,IAAIjH,KAAmBjE,GAAY,KAC1DkL,GAAmBvkgC,cACnBskgC,MACD,KACCjL,GAAW1r+B,aAEfi2+B,GAAShlgC,UAAU2lgC,SAGnBD,UAIJjL,GAAW77+B,MAAM+F,OAGrBog/B,KACArE,GAASt//B,cACTs//B,GAAW,KACX+E,OAGRA,OC7DL,YAAmBT,IACtB,OAAO7G,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIiG,GAEAkF,GADAV,IAAY,EAEhB,MAAMW,GAAwB,KAC1BnF,GAAWzr9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,QAAYh7/B,OAAWA,EAAYklB,KAC7Eih/B,KACDA,GAAU,IAAI9w+B,IACdkw+B,GAASY,IAAS5lgC,UAAU,IAAI0+/B,KAAmBjE,GAAY,IAAMiG,GAAWmF,KAA2BX,IAAY,KAEvHU,IACAA,GAAQjggC,KAAKgf,OAGjBug/B,KACAxE,GAASt//B,cACTs//B,GAAW,KACXwE,IAAY,EACZW,OAGRA,mCCtBD,YAAoBznH,GAAQu9G,GAAYsC,KAC3C,SAAOvprB,OAAOp3S,QAAS8g3B,GAAQu9G,qBCF5B,YAAuB316B,GAAWo2wB,GAAa,EAAC3v0B,GAAGD,KAAMC,KAAMD,KAClE,OAAO2x+B,QAAQ,CAAClp9B,GAAQwl9B,MACpB,MAAMqL,GA4BH,CACHl5+B,OAAQ,GACRmC,UAAU,GA7BJg3+B,GA2BH,CACHn5+B,OAAQ,GACRmC,UAAU,GA5BJ5sB,GAAQmgC,KACVm49B,GAAW90/B,KAAK28B,IAChBm49B,GAAW1r+B,YAETi3+B,GAAmB,CAACC,GAAWC,MACjC,MAAMC,GAA0B,IAAIzH,KAAmBjE,GAAahu+B,KAChE,MAAQG,UAAQmC,aAAam3+B,GACP,IAAlBt5+B,GAAOvsB,OACP0uB,GAAW5sB,IAAK,GAAS8jgC,GAAUr5+B,OAAO7sB,KAAK0sB,KAG9C2v0B,GAAW3v0B,GAAGG,GAAOq3D,UAAY9hF,IAAK,IAE5C,KACC8jgC,GAAUl3+B,UAAW,EACrB,MAAQA,YAAUnC,WAAWs5+B,GAC7Bn3+B,IAAY5sB,GAAuB,IAAlByqB,GAAOvsB,QACI,MAA5B8lgC,IAAkFA,GAAwB/kgC,gBAE9G,OAAO+kgC,IAEXlx9B,GAAOj1C,UAAUgmgC,GAAiBF,GAAQC,KAC1C//6B,GAAUhmF,UAAUgmgC,GAAiBD,GAAQD,uBC1B9C,YAAqBM,GAAoBzB,GAAYhJ,IACxD,IAAIr5/B,GAAIE,GACR,IAAI2sB,GACAk3+B,IAAW,EACf,OAAID,IAAoD,iBAAvBA,IAC7Bj3+B,GAAsD,QAAxC7sB,GAAK8jgC,GAAmBj3+B,kBAA+B,IAAP7sB,GAAgBA,GAAKuqH,IACnF834B,GAAsD,QAAxCnigC,GAAK4jgC,GAAmBzB,kBAA+B,IAAPnigC,GAAgBA,GAAKqqH,IACnFw54B,KAAaD,GAAmBC,SAChC1K,GAAYyK,GAAmBzK,WAG/Bxs+B,GAAoC,MAAvBi3+B,GAA+DA,GAAqBv54B,OAE9F6yU,MAAM,CACT6/jB,UAAW,IAAM,IAAIx8lB,IAAc5zY,GAAYw1+B,GAAYhJ,IAC3D2K,cAAc,EACdC,iBAAiB,EACjBC,oBAAqBH,KCdtB,YAAgB3+lB,IACnB,OAAOy2lB,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IACIgM,GADA3zlB,IAAW,EAEX4zlB,IAAY,EACZxo/B,GAAQ,EACZ+2B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjDyogC,IAAY,IACPh/lB,IAAaA,GAAUzpa,GAAOigB,KAAS+2B,OACxC69X,IAAY2nlB,GAAW77+B,MAAM,IAAIg/+B,GAAc,6BAC/C9qlB,IAAW,EACX2zlB,GAAcxogC,KAEnB,KACK60a,IACA2nlB,GAAW90/B,KAAK8ggC,IAChBhM,GAAW1r+B,YAGX0r+B,GAAW77+B,MAAM8n/B,GAAY,IAAI/I,GAAc,sBAAwB,IAAIH,2BCrBpF,YAAkB3hS,IACrB,OAAOA,IAAa,EAEZvhP,MACF6jhB,QAAQ,CAAClp9B,GAAQwl9B,MACf,IAAIhq7B,GAAO,IAAI7nE,MAAMiztB,IACjBniQ,GAAO,EACXzkb,UAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjD,MAAMw1b,GAAaimC,KACnB,GAAIjmC,GAAaooS,GACbprpB,GAAKgjX,IAAcx1b,OAElB,CACD,MAAMigB,GAAQu1a,GAAaooS,GACrBvpgB,GAAW7hJ,GAAKvyD,IACtBuyD,GAAKvyD,IAASjgB,GACdw8/B,GAAW90/B,KAAK2sN,QAGjB,KACH7hJ,GAAO,QCnBhB,YAAmBu07B,IACtB,OAAO7G,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIkM,IAAS,EACb,MAAMC,GAAiB,IAAIlI,KAAmBjE,GAAY,KACnC,MAAnBmM,IAAgEA,GAAexlgC,cAC/EulgC,IAAS,GACVxtmB,OACHslmB,SAAUuG,IAAUhlgC,UAAU4mgC,IAC9B3x9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,IAAU0ogC,IAAUlM,GAAW90/B,KAAK1H,gDCV1F,cACH,OAAOinC,QAAUo1c,sBCDd,YAAoBpwJ,GAAag4qB,IACpC,OAAO/D,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIj2/B,GAAQ09/B,GACZh99B,eAAU,CAACjnC,GAAOigB,KAAUgsU,GAAY1lV,GAAOvG,GAAOigB,IAAQ,CAAC1Y,GAAGqhgC,MAAiBrigC,GAAQqigC,GAAaA,IAAxG3h+B,CAAqH+P,IAAQj1C,UAAUy6/B,IAChI,KACHj2/B,GAAQ,mFCHb,YAAsBm3/B,GAAY3z2B,KACrC,OAAQ/yG,OAAWw7U,MAAM,IACdx7U,GAAOnuC,MAAKgga,QAAK,EAAGnmY,YAAW1iC,MAAW,CAAEA,SAAO0iC,QAASg79B,GAAUro/B,MAAOs+G,KAAMjxF,KAAY,CAClGA,QAASg79B,GAAUro/B,MACnBrV,WAAOwB,EACPmyH,UAAMnyH,KACNQ,QAAI,EAAG0gC,WAASixF,QAAM3zH,YAAY,IAAI6ogC,GAAa7ogC,GAAO0iC,GAAUixF,OAGzE,SACHx3H,YAAY6D,GAAOq/B,IACfhjC,KAAK2D,MAAQA,GACb3D,KAAKgjC,SAAWA,ICbjB,YAAqByp+B,GAAKC,GAAgBrL,IAC7C,IAAIn6/B,GACA4i1B,GACA25K,GAQJ,GAPApC,GAA0B,MAAdA,GAA6CA,GAAY3z2B,OACjEk22B,MAAY6I,IACZvlgC,GAAQulgC,GAEY,iBAARA,KACZ3iL,GAAO2iL,KAEPC,GAIA,MAAM,IAAIp2M,UAAU,uCAExB,GALImtM,GAAQ,IAAMiJ,GAKL,MAATxlgC,IAAyB,MAAR4i1B,GACjB,MAAM,IAAIxzB,UAAU,wBAExB,OAAOjzyB,GAAQ,CACXnc,SACA4i1B,QACAu3K,aACAmC,KAAMC,qBCzBP,YAAmB1D,GAAoB4M,MAC1C,OAAOhngC,QAAKhC,KAAW,CAAEA,SAAOwsL,UAAW4v0B,GAAkB/m/B,SCC1D,YAAgB4z/B,IACnB,OAAO/I,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAI0M,GAAgB,IAAIry+B,IACxB2l+B,GAAW90/B,KAAKwhgC,GAAc9i1B,gBAC9B,MAAM0hiB,GAAgBphsB,KAClBwi/B,GAAcvo/B,MAAM+F,IACpB81+B,GAAW77+B,MAAM+F,KAErBswB,UAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,IAA4B,MAAlBkpgC,QAAqD,EAASA,GAAcxhgC,KAAK1H,IAAQ,KACpJkpgC,GAAcp4+B,WACd0r+B,GAAW1r+B,YACZg3rB,KACHmhT,GAAiBlngC,UAAU,IAAI0+/B,KAAmBjE,GAAY,KAC1D0M,GAAcp4+B,WACd0r+B,GAAW90/B,KAAMwhgC,GAAgB,IAAIry+B,MACtCqkY,KAAM4sT,KACF,KACe,MAAlBohT,IAA8DA,GAAc/lgC,cAC5E+lgC,GAAgB,QCnBrB,YAAqBC,GAAYC,GAAmB,GACvD,MAAMC,GAAaD,GAAmB,EAAIA,GAAmBD,GAC7D,OAAOjJ,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIlnS,GAAU,CAAC,IAAIz+rB,KACfyy+B,GAAS,GACTr15B,GAAQ,EACZuo5B,GAAW90/B,KAAK4ttB,GAAQ,GAAGlviB,gBAC3BpvI,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjD,UAAWwR,MAAU8jtB,GACjB9jtB,GAAO9J,KAAK1H,IAEhB,MAAMsc,GAAI23F,GAAQk15B,GAAa,EAI/B,GAHI7s/B,IAAK,GAAKA,GAAI+s/B,IAAe,GAC7B/zS,GAAQtvoB,QAAQl1D,aAEdmjF,GAAQo15B,IAAe,EAAG,CAC5B,MAAM73/B,GAAS,IAAIqlB,IACnBy+rB,GAAQxztB,KAAK0P,IACbgr/B,GAAW90/B,KAAK8J,GAAO40K,kBAE5B,KACC,KAAOkviB,GAAQlztB,OAAS,GACpBkztB,GAAQtvoB,QAAQl1D,WAEpB0r+B,GAAW1r+B,YACXpK,KACA,KAAO4usB,GAAQlztB,OAAS,GACpBkztB,GAAQtvoB,QAAQrlE,MAAM+F,IAE1B81+B,GAAW77+B,MAAM+F,KAClB,KACC4i/B,GAAS,KACTh0S,GAAU,UC3Bf,YAAoBi0S,MAAmBtzJ,IAC1C,IAAI5x2B,GAAIE,GACR,MAAMm5/B,GAA+C,QAAlCr5/B,MAAK4+/B,OAAahtJ,WAA+B,IAAP5x2B,GAAgBA,GAAK27/B,IAC5EwJ,GAAiD,QAAvBjlgC,GAAK0x2B,GAAU,UAAuB,IAAP1x2B,GAAgBA,GAAK,KAC9EklgC,GAAgBxzJ,GAAU,IAAMrnvB,IACtC,OAAOsx4B,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIkN,GAAgB,GAChBC,IAAiB,EACrB,MAAMC,GAAez9kB,KACjB,MAAQ36a,UAAQmxc,SAASx2B,GACzB36a,GAAOsf,WACP6xb,GAAKx/c,eACLmggC,QAAUoG,GAAev9kB,IACzBw9kB,IAAkBE,MAEhBA,GAAc,KAChB,GAAIH,GAAe,CACf,MAAM/mjB,GAAO,IAAIpiC,KACjBi8kB,GAAW338B,IAAI89Z,IACf,MAAMnxc,GAAS,IAAIqlB,IACbs1Z,GAAS,CACX36a,UACAmxc,QACA8Y,KAAM,GAEViuiB,GAAc5ngC,KAAKqqb,IACnBqwkB,GAAW90/B,KAAK8J,GAAO40K,mBACvBm60B,MAAgB59iB,GAAM+6iB,GAAW,IAAMkM,GAAYz9kB,IAASo9kB,MAGrC,OAA3BC,IAAmCA,IAA0B,KAC7DjJ,MAAgB/D,GAAYkB,GAAWmM,GAAaL,IAAwB,GAG5EG,IAAiB,EAErBE,KACA,MAAM3tX,GAAQ58mB,IAAOoq+B,GAAcz+/B,QAAQhI,QAAQq8B,IAC7Cwq+B,GAAaxq+B,KACf48mB,GAAK,EAAG1qoB,aAAa8tB,GAAG9tB,KACxB8tB,GAAGk99B,IACHA,GAAWr5/B,eAEf6zC,UAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjDk8oB,GAAM/vN,KACFA,GAAO36a,OAAO9J,KAAK1H,IACnBypgC,MAAmBt9kB,GAAOsvC,MAAQmuiB,GAAYz9kB,OAEnD,IAAM29kB,GAAWnE,IAAaA,GAAS70+B,YAAcpK,IAAQoj/B,GAAWnE,IAAaA,GAAShl/B,MAAM+F,OAChG,KACHgj/B,GAAgB,QCnDrB,YAAsBhG,GAAUC,IACnC,OAAOzD,QAAQ,CAAClp9B,GAAQwl9B,MACpB,MAAMlnS,GAAU,GACVtsW,GAAetiW,KACjB,KAAO,EAAI4usB,GAAQlztB,QACfkztB,GAAQtvoB,QAAQrlE,MAAM+F,IAE1B81+B,GAAW77+B,MAAM+F,QAErB85+B,OAAUkD,IAAU3hgC,UAAU,IAAI0+/B,KAAmBjE,GAAaqH,KAC9D,MAAMry/B,GAAS,IAAIqlB,IACnBy+rB,GAAQxztB,KAAK0P,IACb,MAAMsy/B,GAAsB,IAAIvjlB,KAMhC,IAAIuilB,GACJ,IACIA,IAAkBtC,SAAUmD,GAAgBE,WAEzCn9+B,IAEH,YADAsiW,GAAYtiW,IAGhB81+B,GAAW90/B,KAAK8J,GAAO40K,gBACvB090B,GAAoBj/8B,IAAIi+8B,GAAgB/ggC,UAAU,IAAI0+/B,KAAmBjE,GAdrD,QAChB8G,MAAUhuS,GAAS9jtB,IACnBA,GAAOsf,WACPgz+B,GAAoB3ggC,eAW0E+3Z,KAAMlyC,OACzGkyC,OACHlkX,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjD,MAAM+pgC,GAAcz0S,GAAQrqtB,QAC5B,UAAWuG,MAAUu4/B,GACjBv4/B,GAAO9J,KAAK1H,KAEjB,KACC,KAAO,EAAIs1tB,GAAQlztB,QACfkztB,GAAQtvoB,QAAQl1D,WAEpB0r+B,GAAW1r+B,YACZk4V,GAAa,KACZ,KAAO,EAAIssW,GAAQlztB,QACfkztB,GAAQtvoB,QAAQ7iF,mBC5CzB,YAAoBwggC,IACvB,OAAOzD,QAAQ,CAAClp9B,GAAQwl9B,MACpB,IAAIhr/B,GACAuy/B,GACJ,MAAM/6oB,GAAetiW,KACjBlV,GAAOmP,MAAM+F,IACb81+B,GAAW77+B,MAAM+F,KAEfsj/B,GAAa,KAKf,IAAIlH,GAJkB,MAAtBiB,IAAsEA,GAAkB5ggC,cAC7E,MAAXqO,IAAgDA,GAAOsf,WACvDtf,GAAS,IAAIqlB,IACb2l+B,GAAW90/B,KAAK8J,GAAO40K,gBAEvB,IACI080B,MAAkBtC,OAAUmD,YAEzBj9+B,IAEH,YADAsiW,GAAYtiW,IAGhBo8+B,GAAgB/ggC,UAAWgigC,GAAoB,IAAItD,KAAmBjE,GAAYwN,GAAYA,GAAYhhpB,MAE9GghpB,KACAhz9B,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,IAAUwR,GAAO9J,KAAK1H,IAAQ,KAC/EwR,GAAOsf,WACP0r+B,GAAW1r+B,YACZk4V,GAAa,KACU,MAAtB+6oB,IAAsEA,GAAkB5ggC,cACxFqO,GAAS,UC3Bd,eAA2ByxT,IAC9B,MAAMohsB,MAAUI,OAAkBxhsB,IAClC,OAAOi9rB,QAAQ,CAAClp9B,GAAQwl9B,MACpB,MAAM7r6B,GAAMsyO,GAAO7gU,OACbukqB,GAAc,IAAIh8pB,MAAMgmF,IAC9B,IAAIkkV,GAAW5xG,GAAOjhU,IAAI,KAAM,GAC5B8uN,IAAQ,EACZ,QAAS9lN,GAAI,EAAGA,GAAI2lF,GAAK3lF,QACrBw1/B,OAAUv9rB,GAAOj4T,KAAIjJ,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KAC/D2mqB,GAAY37pB,IAAKhL,IACZ8wN,KAAU+jN,GAAS7pa,MACpB6pa,GAAS7pa,KAAK,GACb8lN,GAAQ+jN,GAASzla,MAAMite,SAAexnE,GAAW,QAEvD3Z,OAEPlkX,GAAOj1C,UAAU,IAAI0+/B,KAAmBjE,GAAax8/B,KACjD,GAAI8wN,GAAO,CACP,MAAMpuN,GAAS,CAAC1C,MAAU2mqB,IAC1B61V,GAAW90/B,KAAK28/B,GAAUA,MAAW3hgC,IAAUA,UCvBxD,YAAgB2hgC,IACnB,OAAOC,GAAiBl5hB,KAAKi5hB,ICF1B,eAAoB4F,IACvB,OCAG,eAAgBtihB,IACnB,OAAOu4gB,QAAQ,CAAClp9B,GAAQwl9B,OACpB0N,QAAUlz9B,MAAW2wc,IAAS5lf,UAAUy6/B,MDFrCpxhB,IAAO6+hB,oEEDX,gBAA8Bpz+B,IACjC16B,YAAYy0a,GACR/0Z,QACAxf,KAAKu0a,OAASA,EAEd5wa,YACA,OAAO3D,KAAKsnC,WAEhBwm+B,WAAW3N,GACP,MAAMj/8B,EAAe1hC,MAAMsu/B,WAAW3N,GACtC,OAACj/8B,EAAa87O,QAAUmjuB,EAAW90/B,KAAKrL,KAAKu0a,QACtCrzX,EAEX5Z,WACI,MAAQi59B,WAAUC,cAAajslB,UAAWv0a,KAC1C,GAAIuggC,EACA,MAAMC,EAEV,YAAKuN,iBACEx5lB,EAEXlpa,KAAK1H,GACD6b,MAAMnU,KAAMrL,KAAKu0a,OAAS5wa,qIChB3B,IAAMgtD,EAAb,MAAO,QACH7wD,YAAY4F,GACJA,IACA1F,KAAK8tgC,WAAapogC,GAG1B+nxB,KAAKz6tB,GACD,MAAMw2W,EAAa,IAAI74W,EACvB64W,SAAW7uX,OAAS36C,KACpBwpa,EAAWx2W,SAAWA,EACfw2W,EAEX9ja,UAAUsogC,EAAgB1p/B,EAAOmQ,GAC7B,MAAM0r+B,EAiEd,WAAsBx8/B,GAClB,OAAQA,GAASA,aAAiBsqgC,MAJtC,WAAoBtqgC,GAChB,OAAOA,IAASo2oB,OAAWp2oB,EAAM0H,UAAS0uoB,KAAWp2oB,EAAM2gB,SAAUy1nB,OAAWp2oB,EAAM8wB,UAGpCy5+B,CAAWvqgC,OAAUwqgC,MAAexqgC,GAlE/DyqgC,CAAaJ,GAAkBA,EAAiB,IAAIK,KAAeL,EAAgB1p/B,EAAOmQ,GAC7G65+B,cAAa,KACT,MAAQt78B,WAAUrY,UAAW36C,KAC7BmggC,EAAW338B,IAAIwK,EAEPA,EAASp/B,KAAKus+B,EAAYxl9B,GAC5BA,EAEM36C,KAAK8tgC,WAAW3N,GAEhBnggC,KAAKuugC,cAAcpO,MAE5BA,EAEXoO,cAAcC,GACV,IACI,OAAOxugC,KAAK8tgC,WAAWU,SAEpBnk/B,GACHmk/B,EAAKlq/B,MAAM+F,IAGnBzjB,QAAQyE,EAAMojgC,GACVA,OACO,IADPA,EAAcC,EAAeD,IACN,CAAC7m/B,EAASD,KAC7B,IAAIu5B,EACJA,EAAelhD,KAAK0F,UAAW/B,IAC3B,IACI0H,EAAK1H,SAEF0mB,GACH1C,EAAO0C,GACU,MAAjB62B,GAA4DA,EAAap6C,gBAE9E6gB,EAAQC,KAGnBkm/B,WAAW3N,GACP,IAAIn4/B,EACJ,OAA8B,QAAtBA,EAAKhI,KAAK26C,cAA2B,IAAP3yC,OAAgB,EAASA,EAAGtC,UAAUy6/B,IAE/EwO,OACG,OAAO3ugC,KAEXwM,QAAQoigC,GACJ,OAAOC,OAAcD,GAAY5ugC,MAErC8ugC,UAAUL,GACNA,OACO,IADPA,EAAcC,EAAeD,IACN,CAAC7m/B,EAASD,KAC7B,IAAIhkB,EACJ3D,KAAK0F,UAAWiE,GAAOhG,EAAQgG,EAAK0gB,GAAQ1C,EAAO0C,GAAM,IAAMzC,EAAQjkB,OAInFgtD,SAAWqR,OAAUt8D,GACV,IAAIirD,EAAWjrD,GArEbirD,GAAb,GAuEA,WAAwB898B,GACpB,IAAIzmgC,EACJ,OAAgG,QAAxFA,EAAqB,MAAhBymgC,EAAiDA,EAAch8/B,mBAAmC,IAAPzK,EAAgBA,EAAKqW,mFC9E1H,gBAA4Bmc,IAC/B16B,YAAYg1B,EAAcy9F,IAAUw84B,EAAcx84B,IAAUy84B,EAAqBrC,KAC7Ent/B,QACAxf,KAAK80B,YAAcA,EACnB90B,KAAK+ugC,YAAcA,EACnB/ugC,KAAKgvgC,mBAAqBA,EAC1BhvgC,KAAKqxB,QAAU,GACfrxB,KAAKivgC,qBAAsB,EAC3BjvgC,KAAKivgC,oBAAsBF,IAAgBx84B,IAC3CvyH,KAAK80B,YAAc5nB,KAAKsB,IAAI,EAAGsmB,GAC/B90B,KAAK+ugC,YAAc7hgC,KAAKsB,IAAI,EAAGuggC,GAEnC1jgC,KAAK1H,GACD,MAAQ88/B,YAAWpv+B,UAAS49+B,sBAAqBD,qBAAoBD,eAAgB/ugC,KAChFyggC,IACDpv+B,EAAQ5rB,KAAK9B,IACZsrgC,GAAuB59+B,EAAQ5rB,KAAKupgC,EAAmBh2/B,MAAQ+1/B,IAEpE/ugC,KAAKkvgC,cACL1v/B,MAAMnU,KAAK1H,GAEfmqgC,WAAW3N,GACPnggC,KAAK+tgC,iBACL/tgC,KAAKkvgC,cACL,MAAMhu9B,EAAelhD,KAAKmvgC,gBAAgBhP,IAClC8O,sBAAqB59+B,WAAYrxB,KACnC+kE,EAAO1zC,EAAQziB,QACrB,QAASD,EAAI,EAAGA,EAAIo2D,EAAKh/D,SAAWo6/B,EAAWnjuB,OAAQruR,GAAKsggC,EAAsB,EAAI,EAClF9O,EAAW90/B,KAAK05D,EAAKp2D,IAEzB,YAAK2x/B,wBAAwBH,GACtBj/8B,EAEXgu9B,cACI,MAAQp6+B,cAAak6+B,qBAAoB39+B,UAAS49+B,uBAAwBjvgC,KACpEovgC,GAAsBH,EAAsB,EAAI,GAAKn6+B,EAE3D,GADAA,EAAcy9F,KAAY684B,EAAqB/9+B,EAAQtrB,QAAUsrB,EAAQvN,OAAO,EAAGuN,EAAQtrB,OAASqpgC,IAC/FH,EAAqB,CACtB,MAAMj2/B,EAAMg2/B,EAAmBh2/B,MAC/B,IAAIs+G,EAAO,EACX,QAAS3oH,EAAI,EAAGA,EAAI0iB,EAAQtrB,QAAUsrB,EAAQ1iB,IAAMqK,EAAKrK,GAAK,EAC1D2oH,EAAO3oH,EAEX2oH,GAAQjmG,EAAQvN,OAAO,EAAGwzG,EAAO,qEC5CtC,QACHx3H,YAAY8hgC,EAAqB5o/B,EAAMq2/B,EAAUr2/B,KAC7ChZ,KAAK4hgC,oBAAsBA,EAC3B5hgC,KAAKgZ,IAAMA,EAEf+wY,SAAS81X,EAAMvuwB,EAAQ,EAAGpH,GACtB,OAAO,IAAIlK,KAAK4hgC,oBAAoB5hgC,KAAM6/wB,GAAM91X,SAAS7/Y,EAAOoH,IAGxE+9/B,EAAUr2/B,IAAM2z/B,mHCLT,IAAMny+B,EAAb,MAAO,gBAAsBm2B,IACzB7wD,cACI0f,QACAxf,KAAKg9R,QAAS,EACdh9R,KAAK6jB,UAAY,GACjB7jB,KAAKyggC,WAAY,EACjBzggC,KAAKuggC,UAAW,EAChBvggC,KAAKwggC,YAAc,KAEvB/yO,KAAKz6tB,GACD,MAAMzvC,EAAU,IAAI+r/B,EAAiBtvgC,KAAMA,MAC3CujB,SAAQyvC,SAAWA,EACZzvC,EAEXwq/B,iBACI,GAAI/tgC,KAAKg9R,OACL,MAAM,IAAIuyuB,IAGlBlkgC,KAAK1H,IACD2qgC,OAAa,KAET,GADAtugC,KAAK+tgC,kBACA/tgC,KAAKyggC,UAAW,CACjB,MAAM177B,EAAO/kE,KAAK6jB,UAAUjV,QAC5B,UAAW4U,KAAYuhD,EACnBvhD,EAASnY,KAAK1H,MAK9B2gB,MAAM+F,IACFik/B,OAAa,KAET,GADAtugC,KAAK+tgC,kBACA/tgC,KAAKyggC,UAAW,CACjBzggC,KAAKuggC,SAAWvggC,KAAKyggC,WAAY,EACjCzggC,KAAKwggC,YAAcn2+B,EACnB,MAAQxG,aAAc7jB,KACtB,KAAO6jB,EAAU9d,QACb8d,EAAU8lE,QAAQrlE,MAAM+F,MAKxCoK,YACI65+B,OAAa,KAET,GADAtugC,KAAK+tgC,kBACA/tgC,KAAKyggC,UAAW,CACjBzggC,KAAKyggC,WAAY,EACjB,MAAQ58+B,aAAc7jB,KACtB,KAAO6jB,EAAU9d,QACb8d,EAAU8lE,QAAQl1D,cAKlC3tB,cACI9G,KAAKyggC,UAAYzggC,KAAKg9R,QAAS,EAC/Bh9R,KAAK6jB,UAAY,KAEjB2r/B,eACA,IAAIxngC,EACJ,OAAkC,QAAzBA,EAAKhI,KAAK6jB,iBAA8B,IAAP7b,OAAgB,EAASA,EAAGjC,QAAU,EAEpFwogC,cAAcpO,GACV,YAAK4N,iBACEvu/B,MAAM+u/B,cAAcpO,GAE/B2N,WAAW3N,GACP,YAAK4N,iBACL/tgC,KAAKsggC,wBAAwBH,GACtBnggC,KAAKmvgC,gBAAgBhP,GAEhCgP,gBAAgBhP,GACZ,MAAQI,WAAUE,YAAW58+B,aAAc7jB,KAC3C,OAAOuggC,GAAYE,EACbgP,MACC5r/B,EAAUpe,KAAK06/B,GAAa,IAAIj8kB,KAAa,KAAM+ilB,OAAUpj/B,EAAWs8+B,KAEnFG,wBAAwBH,GACpB,MAAQI,WAAUC,cAAaC,aAAczggC,KACzCuggC,EACAJ,EAAW77+B,MAAMk8+B,GAEZC,GACLN,EAAW1r+B,WAGnBs1J,eACI,MAAMy/O,EAAa,IAAI74W,IACvB64W,SAAW7uX,OAAS36C,KACbwpa,GAGfhvY,SAAQwnC,OAAS,CAAC63K,EAAal/L,IACpB,IAAI209B,EAAiBz1xB,EAAal/L,GA9FhCngB,GAAb,GAgGO,gBAA+BA,EAClC16B,YAAY+5O,EAAal/L,GACrBn7B,QACAxf,KAAK65O,YAAcA,EACnB75O,KAAK26C,OAASA,EAElBtvC,KAAK1H,GACD,IAAIqE,EAAIE,EACwE,QAA/EA,EAAiC,QAA3BF,EAAKhI,KAAK65O,mBAAgC,IAAP7xO,OAAgB,EAASA,EAAGqD,YAAyB,IAAPnD,GAAyBA,EAAG0rB,KAAK5rB,EAAIrE,GAEjI2gB,MAAM+F,GACF,IAAIriB,EAAIE,EACyE,QAAhFA,EAAiC,QAA3BF,EAAKhI,KAAK65O,mBAAgC,IAAP7xO,OAAgB,EAASA,EAAGsc,aAA0B,IAAPpc,GAAyBA,EAAG0rB,KAAK5rB,EAAIqiB,GAElIoK,WACI,IAAIzsB,EAAIE,EAC4E,QAAnFA,EAAiC,QAA3BF,EAAKhI,KAAK65O,mBAAgC,IAAP7xO,OAAgB,EAASA,EAAGysB,gBAA6B,IAAPvsB,GAAyBA,EAAG0rB,KAAK5rB,GAEjI8lgC,WAAW3N,GACP,IAAIn4/B,EAAIE,EACR,OAAmG,QAA3FA,EAA4B,QAAtBF,EAAKhI,KAAK26C,cAA2B,IAAP3yC,OAAgB,EAASA,EAAGtC,UAAUy6/B,UAAgC,IAAPj4/B,EAAgBA,EAAKungC,2HCzHjI,MAAMC,EAA+BC,EAAmB,SAAKxqgC,OAAWA,GAOxE,WAA4BuoC,EAAM/pC,EAAO2gB,GAC5C,MAAO,CACHopB,OACA/pC,QACA2gB,mCCHD,gBAAyB4/Z,KAC5Bpkb,YAAY+5O,GACRr6N,QACAxf,KAAKyggC,WAAY,EACjB9w/B,GACI3P,KAAK65O,YAAcA,KACfs0xB,MAAet0xB,IACfA,EAAYrxL,IAAIxoD,OAIpBA,KAAK65O,YAAc+1xB,gBAGbvkgC,EAAMiZ,EAAOmQ,GACvB,OAAO,IAAI45+B,EAAehjgC,EAAMiZ,EAAOmQ,GAE3CppB,KAAK1H,GACG3D,KAAKyggC,UACLoP,EDvBL,WAA0BlsgC,GAC7B,OAAOgsgC,EAAmB,IAAKhsgC,OAAOwB,GCsBJ2qgC,CAAiBnsgC,GAAQ3D,MAGnDA,KAAK+uI,MAAMprI,GAGnB2gB,MAAM+F,GACErqB,KAAKyggC,UACLoP,EDlCL,WAA2Bvr/B,GAC9B,OAAOqr/B,EAAmB,SAAKxqgC,EAAWmf,GCiCRyr/B,CAAkB1l/B,GAAMrqB,OAGlDA,KAAKyggC,WAAY,EACjBzggC,KAAKgwgC,OAAO3l/B,IAGpBoK,WACQz0B,KAAKyggC,UACLoP,EAA0BH,EAAuB1vgC,OAGjDA,KAAKyggC,WAAY,EACjBzggC,KAAKiwgC,aAGbnpgC,cACS9G,KAAKg9R,SACNh9R,KAAKyggC,WAAY,EACjBjh/B,MAAM1Y,cACN9G,KAAK65O,YAAc,MAG3B9qG,MAAMprI,GACF3D,KAAK65O,YAAYxuO,KAAK1H,GAE1BqsgC,OAAO3l/B,GACH,IACIrqB,KAAK65O,YAAYv1N,MAAM+F,WAGvBrqB,KAAK8G,eAGbmpgC,YACI,IACIjwgC,KAAK65O,YAAYplN,mBAGjBz0B,KAAK8G,gBAIV,gBAA6BmngC,EAChCnugC,YAAYkugC,EAAgB1p/B,EAAOmQ,GAE/B,IAAIppB,EACJ,GAFAmU,WAEIu6nB,KAAWi0X,GACX3igC,EAAO2igC,UAEFA,EAAgB,CAErB,IAAI5q8B,IADD/3D,OAAMiZ,QAAOmQ,YAAau5+B,GAEzBhugC,MAAQyS,8BACR2wD,EAAUv9D,OAAOm8D,OAAOgs8B,GACxB5q8B,EAAQt8D,YAAc,IAAM9G,KAAK8G,eAGjCs8D,EAAU4q8B,EAEd3igC,EAAgB,MAATA,OAAmC,EAASA,EAAKwa,KAAKu9C,GAC7D9+C,EAAkB,MAAVA,OAAqC,EAASA,EAAMuB,KAAKu9C,GACjE3uC,EAAwB,MAAbA,OAA2C,EAASA,EAAS5O,KAAKu9C,GAEjFpjE,KAAK65O,YAAc,CACfxuO,KAAMA,EAAO6kgC,EAAqB7kgC,GAAcwzZ,IAChDv6Y,MAAO4r/B,EAA+B,MAAV5r/B,EAAqCA,EAAQonsB,GACzEj3rB,SAAUA,EAAWy7+B,EAAqBz7+B,GAAkBoqY,MAIxE,WAA8BmlK,EAAS5ijB,GACnC,MAAO,IAAI6Y,KACP,IACI+piB,KAAW/piB,SAER5P,GACC5X,6CACA09/B,KAAa9l/B,MAGb+l/B,KAAqB/l/B,KAKrC,WAA6BA,GACzB,MAAMA,EAEV,WAAmCmxP,EAAc2kvB,GAC7C,MAAQkQ,yBAA0B59/B,IAClC49/B,GAAyBC,eAA2B,IAAMD,EAAsB70vB,EAAc2kvB,IAE3F,MAAMyP,EAAiB,CAC1B5yuB,QAAQ,EACR3xR,KAAMwzZ,IACNv6Y,MAAOonsB,EACPj3rB,SAAUoqY,6GCjIP,QACH/+Z,YAAYywgC,GACRvwgC,KAAKuwgC,gBAAkBA,EACvBvwgC,KAAKg9R,QAAS,EACdh9R,KAAKwwgC,WAAa,KAClBxwgC,KAAKywgC,WAAa,KAEtB3pgC,cACI,IAAIkkC,EACJ,IAAKhrC,KAAKg9R,OAAQ,CACdh9R,KAAKg9R,QAAS,EACd,MAAQwzuB,cAAexwgC,KACvB,GAAIwwgC,EAEA,GADAxwgC,KAAKwwgC,WAAa,KACdligC,MAAMqxB,QAAQ6w+B,GACd,UAAWn0pB,KAAUm0pB,EACjBn0pB,EAAO59T,OAAOz+C,WAIlBwwgC,EAAW/x9B,OAAOz+C,MAG1B,MAAQuwgC,mBAAoBvwgC,KAC5B,MAAI+5oB,KAAWw2X,GACX,IACIA,UAEGtngC,GACH+hC,EAAS/hC,aAAayngC,IAAsBzngC,EAAE+hC,OAAS,CAAC/hC,GAGhE,MAAQwngC,cAAezwgC,KACvB,GAAIywgC,EAAY,CACZzwgC,KAAKywgC,WAAa,KAClB,UAAWE,KAAYF,EACnB,IACIG,EAAaD,SAEVtm/B,GACH2gB,EAAoB,MAAXA,EAAuCA,EAAS,GACzDplC,aAAmB8qgC,IACf1l+B,EAAS,IAAIA,KAAW3gB,EAAI2gB,QAG5BA,EAAOvlC,KAAK4kB,IAK5B,GAAI2gB,EACA,MAAM,IAAI0l+B,IAAoB1l+B,IAI1Cwd,IAAImo9B,GACA,IAAI3ogC,EACJ,GAAI2ogC,GAAYA,IAAa3wgC,KACzB,GAAIA,KAAKg9R,OACL4zuB,EAAaD,OAEZ,CACD,GAAIA,aAAoBzslB,EAAc,CAClC,GAAIyslB,EAAS3zuB,QAAU2zuB,EAASE,WAAW7wgC,MACvC,OAEJ2wgC,EAASG,WAAW9wgC,OAEvBA,KAAKywgC,WAAwC,QAA1BzogC,EAAKhI,KAAKywgC,kBAA+B,IAAPzogC,EAAgBA,EAAK,IAAIvC,KAAKkrgC,IAIhGE,WAAWx0pB,GACP,MAAQm0pB,cAAexwgC,KACvB,OAAOwwgC,IAAen0pB,GAAW/tW,MAAMqxB,QAAQ6w+B,IAAeA,EAAWz5/B,SAASslW,GAEtFy0pB,WAAWz0pB,GACP,MAAQm0pB,cAAexwgC,KACvBA,KAAKwwgC,WAAaligC,MAAMqxB,QAAQ6w+B,IAAeA,EAAW/qgC,KAAK42W,GAASm0pB,GAAcA,EAAa,CAACA,EAAYn0pB,GAAUA,EAE9H00pB,cAAc10pB,GACV,MAAQm0pB,cAAexwgC,KACnBwwgC,IAAen0pB,EACfr8W,KAAKwwgC,WAAa,KAEbligC,MAAMqxB,QAAQ6w+B,KACnBvJ,OAAUuJ,EAAYn0pB,GAG9B59T,OAAOky9B,GACH,MAAQF,cAAezwgC,KACvBywgC,MAAcxJ,KAAUwJ,EAAYE,GAChCA,aAAoBzslB,GACpByslB,EAASI,cAAc/wgC,OAInCkkb,EAAanX,MAAS,MAClB,MAAMttV,EAAQ,IAAIykW,EAClBzkW,SAAMu9M,QAAS,EACRv9M,GAHW,GAKf,MAAMgw7B,EAAqBvrlB,EAAanX,MACxC,WAAwBppa,GAC3B,OAAQA,aAAiBugb,GACpBvgb,GAAS,WAAYA,IAASo2oB,OAAWp2oB,EAAM86C,YAAWs7lB,KAAWp2oB,EAAM6kD,OAAQuxlB,OAAWp2oB,EAAMmD,aAE7G,WAAsB6pgC,IACd52X,OAAW42X,GACXA,IAGAA,EAAS7pgC,+DCnHV,MAAM2L,EAAS,CAClBu+/B,iBAAkB,KAClBX,sBAAuB,KACvBhy/B,aAASlZ,EACT8rgC,uCAAuC,EACvCC,0BAA0B,4ECHvB,WAAwBv29B,EAAQloC,GACnC,MAAMuw/B,EAA8B,iBAAXvw/B,EACzB,OAAO,IAAI4L,QAAQ,CAACuJ,EAASD,KACzB,MAAMw4+B,EAAa,IAAIkO,KAAe,CAClChjgC,KAAO1H,IACHikB,EAAQjkB,GACRw8/B,EAAWr5/B,eAEfwd,MAAOqD,EACP8M,SAAU,KACFuu+B,EACAp7+B,EAAQnV,EAAO05B,cAGfxkB,EAAO,IAAIu7+B,QAIvBvo9B,EAAOj1C,UAAUy6/B,iHCflB,gBAAoCxv8B,IACvC7wD,YAAY66C,EAAQuv9B,GAChB1q/B,QACAxf,KAAK26C,OAASA,EACd36C,KAAKkqgC,eAAiBA,EACtBlqgC,KAAKyjB,SAAW,KAChBzjB,KAAKmxgC,UAAY,EACjBnxgC,KAAKu1B,YAAc,MACf67+B,OAAQz29B,KACR36C,KAAKytxB,KAAO9yuB,EAAO8yuB,MAG3BqgP,WAAW3N,GACP,OAAOnggC,KAAKqxgC,aAAa3rgC,UAAUy6/B,GAEvCkR,aACI,MAAM9t/B,EAAUvjB,KAAKyjB,SACrB,QAAKF,GAAWA,EAAQk9+B,aACpBzggC,KAAKyjB,SAAWzjB,KAAKkqgC,kBAElBlqgC,KAAKyjB,SAEhB6t/B,YACItxgC,KAAKmxgC,UAAY,EACjB,MAAQ57+B,eAAgBv1B,KACxBA,KAAKyjB,SAAWzjB,KAAKu1B,YAAc,KACnB,MAAhBA,GAA0DA,EAAYzuB,cAE1EyiB,UACI,IAAIqL,EAAa50B,KAAKu1B,YACtB,IAAKX,EAAY,CACbA,EAAa50B,KAAKu1B,YAAc,IAAI2uZ,KACpC,MAAM3ga,EAAUvjB,KAAKqxgC,aACrBz8+B,EAAW4zB,IAAIxoD,KAAK26C,OAAOj1C,UAAU,IAAI0+/B,IAAmB7g/B,OAASpe,EAAW,KAC5EnF,KAAKsxgC,YACL/t/B,EAAQkR,YACRpK,IACArqB,KAAKsxgC,YACL/t/B,EAAQe,MAAM+F,IACf,IAAMrqB,KAAKsxgC,eACV18+B,EAAWooQ,SACXh9R,KAAKu1B,YAAc,KACnBX,EAAasvZ,YAGrB,OAAOtvZ,EAEXm3+B,WACI,SAAOwF,OAAsBvxgC,sKC5C9B,cAA0Bi6B,GAC7B,MAAMon+B,KAAYuF,MAAa3s+B,GACzBsq+B,GAAiB6D,QAAkBnu+B,IACjCA,KAAMuhgB,EAAah4hB,WAASgugC,KAAqBv3+B,GACzD,GAA2B,IAAvBuhgB,EAAYz1hB,OACZ,OAAOqiE,OAAK,GAAIi57B,GAEpB,MAAM9u/B,EAAS,IAAIo+C,IAAW038B,EAAkB7se,EAAa6le,EAAW79/B,EAE/D6C,IAAWorgC,OAAajugC,EAAM6C,GAE/B25e,MACR,OAAOukhB,EAAiBhy/B,EAAO/F,MAAKk4/B,OAAiBH,IAAmBhy/B,EAErE,WAA2BiphB,EAAa6le,EAAWqQ,EAAiB1xhB,KACvE,OAAQmghB,IACJwR,EAActQ,EAAW,KACrB,MAAQt7/B,UAAWy1hB,EACbn1hB,EAAS,IAAIiI,MAAMvI,GACzB,IAAI4pE,EAAS5pE,EACT6rgC,EAAuB7rgC,EAC3B,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IACxBgjgC,EAActQ,EAAW,KACrB,MAAM1m9B,GAASytB,OAAKozd,EAAY7shB,GAAI0y/B,GACpC,IAAIwQ,GAAgB,EACpBl39B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,KACjD0C,EAAOsI,GAAKhL,GACPkugC,IACDA,GAAgB,EAChBD,KAECA,GACDzR,EAAW90/B,KAAKqmgC,EAAerrgC,EAAOuI,WAE3C,OACQ+gE,GACHww7B,EAAW1r+B,eAGpB0r+B,IAERA,IAGX,WAAuBkB,EAAW36Z,EAASxljB,GACnCmg9B,GACA6C,OAAgBhj9B,EAAcmg9B,EAAW36Z,GAGzCA,0FCvDD,cAAmBzskB,GACtB,OAAOuu+B,YAAYpg8B,KAAKnuC,KAAM2s+B,MAAa3s+B,gFCFxC,WAAeus+B,GAClB,OAAO,IAAI718B,IAAYwv8B,KACnBgE,QAAUqC,KAAqB9ggC,UAAUy6/B,6ECH1C,MAAMpzlB,EAAQ,IAAIp8W,IAAYwv8B,GAAeA,EAAW1r+B,YACxD,WAAe4s+B,GAClB,OAAOA,EAEX,WAAwBA,GACpB,OAAO,IAAI1w8B,IAAYwv8B,GAAekB,EAAUt3mB,SAAS,IAAMo2mB,EAAW1r+B,aAHvDq9+B,CAAezQ,GAAat0lB,oICI5C,cAAqB9yY,GACxB,MAAMsq+B,GAAiB6D,QAAkBnu+B,IACjCA,KAAMqxd,EAAS9nf,WAASgugC,KAAqBv3+B,GAC/C1nB,EAAS,IAAIo+C,IAAYwv8B,IAC3B,MAAQp6/B,UAAWulf,EACnB,IAAKvlf,EAED,YADAo6/B,EAAW1r+B,WAGf,MAAMpuB,EAAS,IAAIiI,MAAMvI,GACzB,IAAIgsgC,EAAuBhsgC,EACvBisgC,EAAqBjsgC,EACzB,QAASu7N,EAAc,EAAGA,EAAcv7N,EAAQu7N,IAAe,CAC3D,IAAIk3M,GAAW,KACf2rlB,MAAU74gB,EAAQhqR,IAAc57N,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACrE60a,IACDA,GAAW,EACXw5lB,KAEJ3rgC,EAAOi7N,GAAe39N,GACvB,IAAMougC,SAAwB5sgC,EAAW,OACnC4sgC,IAAyBv5lB,KACrBw5lB,GACD7R,EAAW90/B,KAAK7H,GAAOiugC,OAAajugC,EAAM6C,GAAUA,GAExD85/B,EAAW1r+B,kBAK3B,OAAO8v+B,EAAiBhy/B,EAAO/F,MAAKk4/B,OAAiBH,IAAmBhy/B,6ECnCrE,WAAcqgB,EAAOyu+B,GACxB,OAAOA,KAAYv2mB,KAAUl4X,EAAOyu+B,MAAa8C,MAAUvx+B,0HCG/D,MAAMq/+B,EAA0B,CAAC,cAAe,kBAC1CC,EAAqB,CAAC,mBAAoB,uBAC1CC,EAAgB,CAAC,KAAM,OACtB,WAAmBzpgC,EAAQ06V,EAAWrkV,EAASwl/B,GAKlD,MAJIxqX,KAAWh7nB,KACXwl/B,EAAiBxl/B,EACjBA,OAAU5Z,GAEVo//B,EACA,OAAOpjyB,EAAUz4N,EAAQ06V,EAAWrkV,GAASvS,QAAKk4/B,KAAiBH,IAEvE,MAAO/78B,EAAK/J,GA+BhB,WAAuB/1C,GACnB,SAAOqxoB,KAAWrxoB,EAAO8M,oBAAqBukoB,OAAWrxoB,EAAOw0B,qBAhC1Ck1+B,CAAc1pgC,GAC9BwpgC,EAAmBvsgC,IAAKq0B,GAAgBgqiB,GAAYt7jB,EAAOsxB,GAAYopU,EAAW4gO,EAASjljB,IAwBrG,WAAiCrW,GAC7B,SAAOqxoB,KAAWrxoB,EAAO2pgC,eAAgBt4X,OAAWrxoB,EAAOqzkB,gBAvBnDu2b,CAAwB5pgC,GAClBupgC,EAAwBtsgC,IAAI4sgC,EAAwB7pgC,EAAQ06V,IAwB9E,WAAmC16V,GAC/B,SAAOqxoB,KAAWrxoB,EAAOyyB,MAAO4+mB,OAAWrxoB,EAAO4yB,KAxBpCk3+B,CAA0B9pgC,GACtBypgC,EAAcxsgC,IAAI4sgC,EAAwB7pgC,EAAQ06V,IAClD,GAClB,IAAK56S,MACGsnzB,KAAYpn2B,GACZ,OAAO0I,OAAUqhgC,GAActxyB,EAAUsxyB,EAAWrvqB,EAAWrkV,GAAxD3N,IAAkE+y/B,MAAUz7/B,IAG3F,IAAK8/C,EACD,MAAM,IAAI8twB,UAAU,wBAExB,OAAO,IAAI3lwB,IAAYwv8B,IACnB,MAAMn8b,EAAU,IAAI/piB,IAASkm+B,EAAW90/B,KAAK,EAAI4uB,EAAKl0B,OAASk0B,EAAOA,EAAK,IAC3EuuB,SAAIw7gB,GACG,IAAMvlhB,EAAOulhB,KAG5B,WAAiCt7jB,EAAQ06V,GACrC,OAAQppU,GAAgBgqiB,GAAYt7jB,EAAOsxB,GAAYopU,EAAW4gO,6LC5B/D,WAAmBpxiB,GACtB,GAAIA,aAAiB+9B,IACjB,OAAO/9B,EAEX,GAAa,MAATA,EAAe,CACf,MAAI8/+B,KAAoB9/+B,GACpB,OAoBL,WAA+B8sC,GAClC,OAAO,IAAI/O,IAAYwv8B,IACnB,MAAMxmuB,EAAMj6N,EAAIiv8B,OAChB,IAAI50X,OAAWpgX,EAAIj0R,WACf,OAAOi0R,EAAIj0R,UAAUy6/B,GAEzB,MAAM,IAAI7pM,UAAU,oEA1BTq8M,CAAsB//+B,GAEjC,MAAIk90B,KAAYl90B,GACZ,OA0BL,WAAuBqX,GAC1B,OAAO,IAAI0mB,IAAYwv8B,IACnB,QAASxx/B,EAAI,EAAGA,EAAIs7B,EAAMlkC,SAAWo6/B,EAAWnjuB,OAAQruR,IACpDwx/B,EAAW90/B,KAAK4+B,EAAMt7B,IAE1Bwx/B,EAAW1r+B,aA/BAux4B,CAAcpz4B,GAEzB,MAAIgg/B,KAAUhg/B,GACV,OA+BL,WAAqBf,GACxB,OAAO,IAAI8+B,IAAYwv8B,IACnBtu+B,EACK+I,KAAMj3B,IACFw8/B,EAAWnjuB,SACZmjuB,EAAW90/B,KAAK1H,GAChBw8/B,EAAW1r+B,aAEfpK,GAAQ81+B,EAAW77+B,MAAM+F,IACxBuQ,KAAK,KAAMw1+B,OAxCLyC,CAAYjg/B,GAEvB,MAAIkg/B,KAAgBlg/B,GAChB,OAAOmg/B,EAAkBng/B,GAE7B,MAAIog/B,KAAWpg/B,GACX,OAqCL,WAAsBqi1B,GACzB,OAAO,IAAItkzB,IAAYwv8B,IACnB,UAAWx8/B,KAASsx2B,EAEhB,GADAkrJ,EAAW90/B,KAAK1H,GACZw8/B,EAAWnjuB,OACX,OAGRmjuB,EAAW1r+B,aA7CAw++B,CAAarg/B,GAExB,MAAIsg/B,KAAqBtg/B,GACrB,OAkDL,WAAgCug/B,GACnC,OAAOJ,KAAkBK,KAAmCD,IAnD7CE,CAAuBzg/B,GAGtC,QAAM0g/B,KAAiC1g/B,GA0CpC,WAA2B2g/B,GAC9B,OAAO,IAAI5i9B,IAAYwv8B,KAO3B,WAAiBoT,EAAepT,GAC5B,IAAIqT,EAAiBC,GACjBC,EAAK1rgC,EACT,OAAOk0I,QAAUl8I,UAAM,OAAQ,EAAQ,YACnC,IACI,IAAKwzgC,KAAkBG,MAAcJ,KAAgBE,SAA0BD,EAAgBnogC,QAA2BssH,MAGtH,GADAwo4B,EAAW90/B,KADGoogC,GAAkB9vgC,OAE5Bw8/B,EAAWnjuB,OACX,aAIL42uB,GAASF,EAAM,CAAEpv/B,MAAOsv/B,WAE3B,IACQH,KAAsBA,GAAkB974B,OAAS3vH,EAAKwrgC,EAAgBK,gBAAe7rgC,EAAG4rB,KAAK4/+B,YAE3F,GAAIE,EAAK,MAAMA,EAAIpv/B,OAEjC67+B,EAAW1r+B,cA1BX1S,CAAQwx/B,EAAepT,GAAYn8+B,MAAOqG,GAAQ81+B,EAAW77+B,MAAM+F,iFC9EpE,WAAkBy53B,EAAS,EAAGu9G,EAAYsC,KAC7C,OAAI7/G,EAAS,IACTA,EAAS,IAENn2vB,OAAMm2vB,EAAQA,EAAQu9G,8GCD1B,cAAkBpn+B,GACrB,MAAMon+B,GAAYuF,QAAa3s+B,GACzBuumB,GAAauhY,QAAU9v+B,EAAMs4F,KAC7B+4X,EAAUrxd,EAChB,OAAQqxd,EAAQvlf,OAGS,IAAnBulf,EAAQvlf,QAEFo+/B,QAAU74gB,EAAQ,OAElB0+gB,KAASxhY,EAATwhY,IAAqB5h8B,KAAKkjb,EAAS+1gB,IALvCt0lB,gFCTL,cAAe9yY,GAClB,MAAMon+B,KAAYuF,MAAa3s+B,GAC/B,OAAOmuC,OAAKnuC,EAAMon+B,oGCAf,WAAeyS,EAAU,EAAGC,EAAqB1S,EAAYsC,KAChE,IAAIqQ,GAAmB,EACvB,OAA2B,MAAvBD,KACIvP,OAAYuP,GACZ1S,EAAY0S,EAGZC,EAAmBD,GAGpB,IAAIpj9B,IAAYwv8B,IACnB,IAAIsM,KAAM7I,KAAYkQ,IAAYA,EAAUzS,EAAUro/B,MAAQ86/B,EAC1DrH,EAAM,IACNA,EAAM,GAEV,IAAI3+/B,EAAI,EACR,OAAOuz/B,EAAUt3mB,SAAS,WACjBo2mB,EAAWnjuB,SACZmjuB,EAAW90/B,KAAKyC,KAChB,GAASkmgC,EACLh0gC,KAAK+pZ,cAAS5kZ,EAAW6ugC,GAGzB7T,EAAW1r+B,aAGpBg4+B,2HCxBJ,cAAgBxy+B,GACnB,MAAMsq+B,KAAiB6D,MAAkBnu+B,GACnCqxd,KAAU26gB,KAAehs+B,GAC/B,OAAOqxd,EAAQvlf,OACT,IAAI4qD,IAAYwv8B,IACd,IAAIoH,EAAUj8gB,EAAQ3lf,IAAI,IAAM,IAC5BsugC,EAAY3ohB,EAAQ3lf,IAAI,KAAM,GAClCw6/B,EAAW338B,IAAI,KACX++8B,EAAU0M,EAAY,OAE1B,QAAS3yyB,EAAc,GAAI6+xB,EAAWnjuB,QAAU17D,EAAcgqR,EAAQvlf,OAAQu7N,OAC1E6iyB,MAAU74gB,EAAQhqR,IAAc57N,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IAE1E,GADA4jgC,EAAQjmyB,GAAa77N,KAAK9B,GACtB4jgC,EAAQx0/B,MAAOuf,GAAWA,EAAOvsB,QAAS,CAC1C,MAAMwM,EAASg1/B,EAAQ5hgC,IAAK2sB,GAAWA,EAAOq3D,SAC9Cw26B,EAAW90/B,KAAKk5/B,EAAiBA,KAAkBhy/B,GAAUA,GACzDg1/B,EAAQxj9B,KAAK,CAACzxB,EAAQ3jB,KAAO2jB,EAAOvsB,QAAUkugC,EAAUtlgC,KACxDwx/B,EAAW1r+B,aAGpB,KACCw/+B,EAAU3yyB,IAAe,GACxBimyB,EAAQjmyB,GAAav7N,QAAUo6/B,EAAW1r+B,cAGnD,MAAO,KACH8y+B,EAAU0M,EAAY,QAG5BlnmB,mEClCH,gBAAiCkhmB,KACpCnugC,YAAY+5O,EAAajnC,EAAQ2oV,EAAY5oT,EAASuhyB,GAClD10/B,MAAMq6N,GACN75O,KAAKk0gC,WAAaA,EAClBl0gC,KAAK+uI,MAAQ6jE,EACP,SAAUjvM,GACR,IACIivM,EAAOjvM,SAEJ0mB,GACHwvN,EAAYv1N,MAAM+F,KAGxB7K,MAAMuvH,MACZ/uI,KAAKgwgC,OAASr9xB,EACR,SAAUtoN,GACR,IACIsoN,EAAQtoN,SAELA,GACHwvN,EAAYv1N,MAAM+F,WAGlBrqB,KAAK8G,gBAGX0Y,MAAMww/B,OACZhwgC,KAAKiwgC,UAAY10e,EACX,WACE,IACIA,UAEGlxgB,GACHwvN,EAAYv1N,MAAM+F,WAGlBrqB,KAAK8G,gBAGX0Y,MAAMyw/B,UAEhBnpgC,cACI,IAAIkB,EACJ,MAAQg1R,UAAWh9R,KACnBwf,MAAM1Y,eACLk2R,IAAsC,QAA1Bh1R,EAAKhI,KAAKk0gC,kBAA+B,IAAPlsgC,GAAyBA,EAAG4rB,KAAK5zB,8FC3CjF,WAAe2ogC,GAClB,OAAO9E,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAI3nlB,GAAW,EACXwrlB,EAAY,KACZ4E,EAAqB,KACrB7D,GAAa,EACjB,MAAMoP,EAAc,KAGhB,GAFuB,MAAvBvL,GAAwEA,EAAmB9hgC,cAC3F8hgC,EAAqB,KACjBpwlB,EAAU,CACVA,GAAW,EACX,MAAM70a,EAAQqggC,EACdA,EAAY,KACZ7D,EAAW90/B,KAAK1H,GAEpBohgC,GAAc5E,EAAW1r+B,YAEvB2/+B,EAAkB,KACpBxL,EAAqB,KACrB7D,GAAc5E,EAAW1r+B,YAE7BkmB,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD60a,GAAW,EACXwrlB,EAAYrggC,EACPilgC,IACDzE,QAAUwE,EAAiBhlgC,IAAQ+B,UAAWkjgC,EAAqB,IAAIxE,IAAmBjE,EAAYgU,EAAaC,KAExH,KACCrP,GAAa,IACXvslB,IAAaowlB,GAAsBA,EAAmB5ruB,SAAWmjuB,EAAW1r+B,sGC7BnF,WAAmBvoB,EAAUm1/B,EAAY3z2B,KAC5C,SAAO2m3B,KAAM,KAAM1m3B,OAAMzhJ,EAAUm1/B,yFCDhC,WAAqBxs+B,EAAYy/+B,EAAmB,MACvDA,SAAwC,MAArBA,EAA2DA,EAAmBz/+B,GAC1Fgv+B,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIoH,EAAU,GACV3v5B,EAAQ,EACZj9D,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD,IAAI4wgC,EAAS,KACT385B,IAAU085B,GAAqB,GAC/B/M,EAAQ9hgC,KAAK,IAEjB,UAAW6sB,KAAUi1+B,EACjBj1+B,EAAO7sB,KAAK9B,GACRkxB,GAAcvC,EAAOvsB,SACrBwugC,EAAoB,MAAXA,EAAuCA,EAAS,GACzDA,EAAO9ugC,KAAK6sB,IAGpB,GAAIii/B,EACA,UAAWji/B,KAAUii/B,GACjBtN,OAAUM,EAASj1+B,GACnB6t+B,EAAW90/B,KAAKinB,IAGzB,KACC,UAAWA,KAAUi1+B,EACjBpH,EAAW90/B,KAAKinB,GAEpB6t+B,EAAW1r+B,iBACZtvB,EAAW,KACVoigC,EAAU,gGC7Bf,WAAoB/tuB,GACvB,OAAOqquB,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAEIqU,EAFApO,EAAW,KACXqE,GAAY,EAEhBrE,EAAWzr9B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,OAAYh7/B,OAAWA,EAAYklB,IAClFmq/B,GAAgBrQ,QAAU3quB,EAASnvQ,EAAKymC,EAAW0oO,EAAX1oO,CAAqBnW,KACzDyr9B,GACAA,EAASt//B,cACTs//B,EAAW,KACXoO,EAAc9ugC,UAAUy6/B,IAGxBsK,GAAY,KAGhBA,IACArE,EAASt//B,cACTs//B,EAAW,KACXoO,EAAc9ugC,UAAUy6/B,qECrB7B,aACH,SAAO6J,KAAS,8ECAb,WAAmBhC,EAASzD,GAC/B,OAAOxqX,OAAWwqX,MAAkBnz/B,KAAS42/B,EAASzD,EAAgB,IAAKnz/B,OAAS42/B,EAAS,yFCA1F,WAAsB8L,EAASzS,EAAYsC,KAC9C,OAAOE,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIsU,EAAa,KACbzQ,EAAY,KACZ0Q,EAAW,KACf,MAAM7sgC,EAAO,KACT,GAAI4sgC,EAAY,CACZA,EAAW3tgC,cACX2tgC,EAAa,KACb,MAAM9wgC,EAAQqggC,EACdA,EAAY,KACZ7D,EAAW90/B,KAAK1H,KAGxB,aACI,MAAMgxgC,EAAaD,EAAWZ,EACxB96/B,EAAMqo/B,EAAUro/B,MACtB,GAAIA,EAAM27/B,EAGN,OAFAF,EAAaz0gC,KAAK+pZ,cAAS5kZ,EAAWwvgC,EAAa37/B,QACnDmn/B,EAAW338B,IAAIis9B,GAGnB5sgC,IAEJ8yC,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjDqggC,EAAYrggC,EACZ+wgC,EAAWrT,EAAUro/B,MAChBy7/B,IACDA,EAAapT,EAAUt3mB,SAAS6qnB,EAAcd,GAC9C3T,EAAW338B,IAAIis9B,KAEpB,KACC5sgC,IACAs4/B,EAAW1r+B,iBACZtvB,EAAW,KACV6+/B,EAAYyQ,EAAa,qFCpC9B,WAAwBto+B,GAC3B,OAAO039B,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAI3nlB,GAAW,EACf79X,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD60a,GAAW,EACX2nlB,EAAW90/B,KAAK1H,IACjB,KACM60a,GACD2nlB,EAAW90/B,KAAK8gC,GAEpBg09B,EAAW1r+B,qGCThB,WAAeg4+B,EAAKpL,EAAYsC,KACnC,MAAMz3/B,GAAWyhJ,OAAM8+2B,EAAKpL,GAC5B,OAAOwT,OAAU,IAAM3ogC,2GCApB,WAAmB4ogC,EAAuBC,GAC7C,OAAIA,EACQp69B,IAAWhH,OAAOoh+B,EAAkBvogC,MAAK+kD,OAAK,MAAIyj9B,QAAmBr69B,EAAOnuC,KAAKqogC,EAAUC,MAEhG1jgC,OAAS,CAACzN,EAAOigB,IAAUkx/B,EAAsBnxgC,EAAOigB,GAAOpX,QAAK+kD,KAAK,MAAI0j9B,KAAMtxgC,2FCNvF,WAAkBylgC,EAAa8L,GAClC,OAAOrR,OAAQ,CAAClp9B,EAAQwl9B,KACpB,MAAMgV,EAAe,IAAI9s8B,IACzB1tB,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD,MAAMkP,EAAMu2/B,EAAcA,EAAYzlgC,GAASA,EAC1CwxgC,EAAalk/B,IAAIpe,KAClBsigC,EAAa3s9B,IAAI31C,GACjBst/B,EAAW90/B,KAAK1H,OAGZ,MAAZuxgC,GAAkDA,EAAQxvgC,UAAU,IAAI0+/B,IAAmBjE,EAAY,IAAMgV,EAAa719B,QAASu/W,8FCVpI,WAA8Bijc,EAAYsnK,EAAcpphB,KAC3D8hX,SAA4B,MAAfA,EAA+CA,EAAam7J,GAClE4G,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIiV,EACAlugC,GAAQ,EACZyzC,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD,MAAM0xgC,EAAajM,EAAYzlgC,IAC3BuD,IAAU461B,EAAWszK,EAAaC,MAClCnugC,GAAQ,EACRkugC,EAAcC,EACdlV,EAAW90/B,KAAK1H,SAKhC,WAAwBwuB,EAAGD,GACvB,OAAOC,IAAMD,6ECjBV,WAAgB81+B,EAASx/X,EAAaj2gB,IAAU8u4B,GACnD74X,UAAcA,GAAc,GAAK,EAAIj2gB,IAAWi2gB,GACzCq7X,OAAQ,CAAClp9B,EAAQwl9B,OAAe2J,KAAenv9B,EAAQwl9B,EAAY6H,EAASx/X,OAAYrjoB,GAAW,EAAMk8/B,+ECF7G,WAAgBj0lB,EAAW65C,GAC9B,OAAO48iB,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIv8+B,EAAQ,EACZ+2B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,GAAUypa,EAAUx5Y,KAAKqzb,EAAStjd,EAAOigB,MAAYu8+B,EAAW90/B,KAAK1H,uECJ3H,WAAkBkM,GACrB,OAAOg0/B,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IACIxl9B,EAAOj1C,UAAUy6/B,WAGjBA,EAAW338B,IAAI34C,6HCDpB,WAAeu9Z,EAAWjhY,GAC7B,MAAM089B,EAAkB9r+B,UAAUh3B,QAAU,EAC5C,OAAQ40C,GAAWA,EAAOnuC,KAAK4ga,GAAYrga,OAAO,CAACvG,EAAGmI,IAAMy+Z,EAAU5ma,EAAGmI,EAAGgsC,IAAWqlc,KAAUzub,OAAK,GAAIs38B,KAAkBC,KAAe389B,IAAgB489B,OAAa,IAAM,IAAI7F,4FCL/K,aACH,OAAOW,OAAQ,CAAClp9B,EAAQwl9B,KACpBxl9B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAYthmB,+HCCrD,WAAcuO,EAAWjhY,GAC5B,MAAM089B,EAAkB9r+B,UAAUh3B,QAAU,EAC5C,OAAQ40C,GAAWA,EAAOnuC,KAAK4ga,GAAYrga,OAAO,CAACvG,EAAGmI,IAAMy+Z,EAAU5ma,EAAGmI,EAAGgsC,IAAWqlc,KAAUs1hB,OAAS,GAAIzM,KAAkBC,KAAe389B,IAAgB489B,OAAa,IAAM,IAAI7F,iFCNnL,WAAa8E,EAAS/gjB,GACzB,OAAO48iB,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIv8+B,EAAQ,EACZ+2B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjDw8/B,EAAW90/B,KAAK28/B,EAAQp0+B,KAAKqzb,EAAStjd,EAAOigB,wECLlD,WAAejgB,GAClB,OAAOgC,OAAI,IAAMhC,6ECAd,WAAkB6koB,EAAaj2gB,KAClC,OAAOnhH,OAAS4ue,IAAUwoJ,wFCAvB,WAAwB7tlB,EAAQwl9B,EAAY6H,EAASx/X,EAAY+sY,EAAcjrnB,EAAQkrnB,EAAmBC,GAC7G,MAAMnj/B,EAAS,GACf,IAAIq9C,EAAS,EACT/rD,EAAQ,EACRmh/B,GAAa,EACjB,MAAMgG,EAAgB,KACdhG,IAAezy+B,EAAOvsB,SAAW4pE,GACjCww7B,EAAW1r+B,YAGbih/B,EAAa/xgC,GAAWgsE,EAAS64jB,EAAamtY,EAAWhygC,GAAS2uB,EAAO7sB,KAAK9B,GAC9EgygC,EAAchygC,IAChB2mZ,GAAU61mB,EAAW90/B,KAAK1H,GAC1BgsE,IACA,IAAIim8B,GAAgB,GACpBzR,QAAU6D,EAAQrkgC,EAAOigB,MAAUle,UAAU,IAAI0+/B,IAAmBjE,EAAaoM,IAC5D,MAAjBgJ,GAA4DA,EAAahJ,GACzE1v+B,EACI64+B,EAAUnJ,GAGVpM,EAAW90/B,KAAKkhgC,IAErB,KACCqJ,GAAgB,QACjBzwgC,EAAW,KACV,GAAIywgC,EACA,IAEI,IADAjm8B,IACOr9C,EAAOvsB,QAAU4pE,EAAS64jB,GAAY,CACzC,MAAMqtY,EAAgBvj/B,EAAOq3D,QACzB6r7B,KACAtR,KAAgB/D,EAAYqV,EAAmB,IAAMG,EAAWE,IAGhEF,EAAWE,GAGnB9K,UAEG1g/B,GACH81+B,EAAW77+B,MAAM+F,QAKjCswB,SAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAYuV,EAAW,KAC3D3Q,GAAa,EACbgG,OAEG,KACoB,MAAvB0K,GAAwEA,iHCjDzE,WAAkBzN,EAASzD,EAAgB/7X,EAAaj2gB,KAC3D,SAAIwnhB,KAAWwqX,GACJnz/B,EAAS,CAAC+gB,EAAGxjB,KAAMhJ,OAAI,CAACusB,EAAGypF,IAAO4o5B,EAAepy+B,EAAGD,EAAGvjB,EAAGgtG,GAAvCh2G,EAA4Cw+/B,QAAU6D,EAAQ71+B,EAAGxjB,KAAM65nB,IAElE,iBAAnB+7X,IACZ/7X,EAAa+7X,IAEVV,OAAQ,CAAClp9B,EAAQwl9B,KAAe2J,OAAenv9B,EAAQwl9B,EAAY6H,EAASx/X,yFCThF,WAAmB64X,EAAW/v/B,EAAQ,GACzC,OAAOuy/B,OAAQ,CAAClp9B,EAAQwl9B,KACpBxl9B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IAAUuggC,OAAgB/D,EAAYkB,EAAW,IAAMlB,EAAW90/B,KAAK1H,GAAQ2N,GAAQ,OAAM4y/B,KAAgB/D,EAAYkB,EAAW,IAAMlB,EAAW1r+B,WAAYnjB,GAAS+Y,MAAQ65+B,KAAgB/D,EAAYkB,EAAW,IAAMlB,EAAW77+B,MAAM+F,GAAM/Y,kFCH5S,aACH,OAAOuy/B,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIl3wB,EACA6sxB,GAAU,EACdn79B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD,MAAM8gE,EAAIwkL,EACVA,EAAOtlP,EACPmygC,GAAW3V,EAAW90/B,KAAK,CAACo5D,EAAG9gE,IAC/BmygC,GAAU,uECTf,cAAkBz23B,GACrB,MAAMt5I,EAASs5I,EAAWt5I,OAC1B,GAAe,IAAXA,EACA,MAAM,IAAI0Q,MAAM,uCAEpB,OAAO9Q,OAAKgE,IACR,IAAIosgC,EAAcpsgC,EAClB,QAASgF,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAM81D,EAAoB,MAAhBsx8B,OAAiD,EAASA,EAAY123B,EAAW1wI,IAC3F,QAAiB,IAAN81D,EAIP,OAHAsx8B,EAActx8B,EAMtB,OAAOsx8B,+ECfR,aACH,OAAOlS,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIvr+B,EAAa,KACjB+lB,EAAOw29B,YACP,MAAM6E,EAAa,IAAI5R,IAAmBjE,OAAYh7/B,OAAWA,OAAWA,EAAW,KACnF,IAAKw1C,GAAUA,EAAOw29B,WAAa,GAAK,IAAMx29B,EAAOw29B,UAEjD,YADAv8+B,EAAa,MAGjB,MAAMqh/B,EAAmBt79B,EAAOplB,YAC1BunwB,EAAOlowB,EACbA,EAAa,KACTqh/B,KAAsBn5O,GAAQm5O,IAAqBn5O,IACnDm5O,EAAiBnvgC,cAErBq5/B,EAAWr5/B,gBAEf6zC,EAAOj1C,UAAUswgC,GACZA,EAAWh5uB,SACZpoQ,EAAa+lB,EAAOpxB,mGClBzB,WAAgBmh/B,GACnB,OAAO7G,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAI3nlB,GAAW,EACXwrlB,EAAY,KAChBrp9B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD60a,GAAW,EACXwrlB,EAAYrggC,KAUhB+mgC,EAAShlgC,UAAU,IAAI0+/B,IAAmBjE,EAR7B,KACT,GAAI3nlB,EAAU,CACVA,GAAW,EACX,MAAM70a,EAAQqggC,EACdA,EAAY,KACZ7D,EAAW90/B,KAAK1H,KAGoCk7Z,mFCjB7D,WAAcjvE,EAAag4qB,GAC9B,OAAO/D,UAAQgE,KAAcj4qB,EAAag4qB,EAAM7q+B,UAAUh3B,QAAU,GAAG,oECFpE,WAAuB6pV,EAAag4qB,EAAMsO,EAASC,EAAYC,GAClE,MAAO,CAACz79B,EAAQwl9B,KACZ,IAAIkW,EAAWH,EACXhsgC,EAAQ09/B,EACRhk/B,EAAQ,EACZ+2B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD,MAAMgL,EAAIiV,IACV1Z,EAAQmsgC,EAEAzmrB,EAAY1lV,EAAOvG,EAAOgL,IAExB0ngC,GAAW,EAAO1ygC,GAC5BwygC,GAAchW,EAAW90/B,KAAKnB,IAC/BksgC,GACE,MACGC,GAAYlW,EAAW90/B,KAAKnB,GAC5Bi2/B,EAAW1r+B,2HCZpB,WAAe1V,EAAU,IAC5B,MAAQkm/B,YAAY,KAAM,IAAIzq+B,KAAWwx+B,gBAAe,EAAMC,mBAAkB,EAAMC,uBAAsB,GAASnt/B,EACrH,OAAQu3/B,IACJ,IAAI1h/B,EAAa,KACb2h/B,EAAkB,KAClBhz/B,EAAU,KACVwo/B,EAAW,EACXyK,GAAe,EACfC,GAAa,EACjB,MAAMC,EAAc,KACI,MAApBH,GAAkEA,EAAgBzvgC,cAClFyvgC,EAAkB,MAEhBjy2B,EAAQ,KACVoy2B,IACA9h/B,EAAarR,EAAU,KACvBiz/B,EAAeC,GAAa,GAE1BE,EAAsB,KACxB,MAAM75O,EAAOlowB,EACb0vI,IACS,MAATw4nB,GAA4CA,EAAKh2xB,eAErD,OAAO+8/B,OAAQ,CAAClp9B,EAAQwl9B,MACpB4L,KACK0K,IAAeD,GAChBE,IAEJ,MAAMnv4B,EAAQhkH,EAAsB,MAAZA,EAAyCA,EAAU0h/B,IAC3E9E,GAAW338B,IAAI,KACXuj9B,IACiB,IAAbA,IAAmB0K,IAAeD,IAClCD,EAAkBK,EAAYD,EAAqBzK,MAG3D3k4B,EAAK7hI,UAAUy6/B,IACVvr+B,IACDA,EAAa,IAAIy5+B,KAAe,CAC5BhjgC,KAAO1H,GAAU4jI,EAAKl8H,KAAK1H,GAC3B2gB,MAAQ+F,IACJos/B,GAAa,EACbC,IACAH,EAAkBK,EAAYty2B,EAAO0n2B,EAAc3h/B,GACnDk9G,EAAKjjH,MAAM+F,IAEfoK,SAAU,KACN+h/B,GAAe,EACfE,IACAH,EAAkBK,EAAYty2B,EAAO2n2B,GACrC1k4B,EAAK9yG,eAGb2zC,OAAKztB,GAAQj1C,UAAUkvB,KA7BxBiv+B,CA+BJyS,IAGX,WAAqBhy2B,EAAOnpI,KAAOlB,GAC/B,OAAW,IAAPkB,GACAmpI,IACO,OAEA,IAAPnpI,EACO,KAEJA,KAAMlB,GACRztB,MAAK+kD,OAAK,IACV7rD,UAAU,IAAM4+J,qECvElB,WAAc1sD,GACjB,OAAO7qG,OAAO,CAAC7B,EAAG0Y,IAAUg0F,GAASh0F,8ECAlC,WAAmBwpZ,GACtB,OAAOy2lB,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIkM,GAAS,EACTzo/B,EAAQ,EACZ+2B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IAAW0ogC,IAAWA,GAAUj/lB,EAAUzpa,EAAOigB,QAAcu8+B,EAAW90/B,KAAK1H,6FCHrI,cAAsB0C,GACzB,MAAMg7/B,KAAYuF,MAAavggC,GAC/B,OAAOw9/B,OAAQ,CAAClp9B,EAAQwl9B,MACnBkB,GAAY1t9B,OAAOttC,EAAQs0C,EAAQ0m9B,IAAa1t9B,OAAOttC,EAAQs0C,IAASj1C,UAAUy6/B,qECLpF,WAAqBkB,EAAW/v/B,EAAQ,GAC3C,OAAOuy/B,OAAQ,CAAClp9B,EAAQwl9B,KACpBA,EAAW338B,IAAI648B,EAAUt3mB,SAAS,IAAMpvW,EAAOj1C,UAAUy6/B,GAAa7u/B,4FCAvE,WAAmB02/B,EAASzD,GAC/B,OAAOV,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAI0W,EAAkB,KAClBjz/B,EAAQ,EACRmh/B,GAAa,EACjB,MAAMgG,EAAgB,IAAMhG,IAAe8R,GAAmB1W,EAAW1r+B,WACzEkmB,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IAC7B,MAApBkzgC,GAAkEA,EAAgB/vgC,cAClF,IAAIgwgC,EAAa,EACjB,MAAMC,EAAanz/B,OACnBug/B,MAAU6D,EAAQrkgC,EAAOozgC,IAAarxgC,UAAWmxgC,EAAkB,IAAIzS,IAAmBjE,EAAaoM,GAAepM,EAAW90/B,KAAKk5/B,EAAiBA,EAAe5ggC,EAAO4ogC,EAAYwK,EAAYD,KAAgBvK,GAAa,KAC9NsK,EAAkB,KAClB9L,QAEL,KACChG,GAAa,EACbgG,oFCjBL,WAAqBxC,EAAiBhE,GACzC,OAAOxqX,OAAWwqX,MAAkB359B,KAAU,IAAM299B,EAAiBhE,IAAkB359B,OAAU,IAAM299B,yFCApG,WAAc3w5B,GACjB,OAAOA,GAAS,EAER,IAAMm1T,KACR82lB,OAAQ,CAAClp9B,EAAQwl9B,KACf,IAAI/giB,EAAO,EACXzkb,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,MAC3Cy7d,GAAQxnX,IACVuo5B,EAAW90/B,KAAK1H,GACZi0G,GAASwnX,GACT+giB,EAAW1r+B,uGCV5B,WAAkBmjF,GACrB,OAAOA,GAAS,EACV,IAAMm1T,KACN82lB,OAAQ,CAAClp9B,EAAQwl9B,KACf,IAAI7t+B,EAAS,GACbqoB,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD2uB,EAAO7sB,KAAK9B,GACZi0G,EAAQtlF,EAAOvsB,QAAUusB,EAAOq3D,SACjC,KACC,UAAWhmF,KAAS2uB,EAChB6t+B,EAAW90/B,KAAK1H,GAEpBw8/B,EAAW1r+B,iBACZtvB,EAAW,KACVmtB,EAAS,2GCblB,WAAmBo4+B,GACtB,OAAO7G,OAAQ,CAAClp9B,EAAQwl9B,MACpBgE,QAAUuG,GAAUhlgC,UAAU,IAAI0+/B,IAAmBjE,EAAY,IAAMA,EAAW1r+B,WAAYoqY,OAC7FshmB,EAAWnjuB,QAAUriP,EAAOj1C,UAAUy6/B,gFCLxC,WAAmB/ylB,EAAW8uW,GAAY,GAC7C,OAAO2nP,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAIv8+B,EAAQ,EACZ+2B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD,MAAM4O,EAAS66Z,EAAUzpa,EAAOigB,MAC/BrR,GAAU2pwB,IAAcikP,EAAW90/B,KAAK1H,IACxC4O,GAAU4t/B,EAAW1r+B,iHCJ3B,WAAau5+B,EAAgB1p/B,EAAOmQ,GACvC,MAAMui/B,GAAcj9X,OAAWi0X,IAAmB1p/B,GAASmQ,EAEnD,CAAEppB,KAAM2igC,EAAgB1p/B,QAAOmQ,YACjCu5+B,EACN,OAAOgJ,GACDnT,OAAQ,CAAClp9B,EAAQwl9B,KACf,IAAIn4/B,EAC6B,QAAhCA,EAAKgvgC,EAAYtxgC,iBAA8B,IAAPsC,GAAyBA,EAAG4rB,KAAKoj/B,GAC1E,IAAIC,GAAU,EACdt89B,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD,IAAIqE,EACwB,QAA3BA,EAAKgvgC,EAAY3rgC,YAAyB,IAAPrD,GAAyBA,EAAG4rB,KAAKoj/B,EAAarzgC,GAClFw8/B,EAAW90/B,KAAK1H,IACjB,KACC,IAAIqE,EACJivgC,GAAU,EACsB,QAA/BjvgC,EAAKgvgC,EAAYvi/B,gBAA6B,IAAPzsB,GAAyBA,EAAG4rB,KAAKoj/B,GACzE7W,EAAW1r+B,YACXpK,IACA,IAAIriB,EACJivgC,GAAU,EACmB,QAA5BjvgC,EAAKgvgC,EAAY1y/B,aAA0B,IAAPtc,GAAyBA,EAAG4rB,KAAKoj/B,EAAa3s/B,GACnF81+B,EAAW77+B,MAAM+F,IAClB,KACC,IAAIriB,EAAIE,EACJ+ugC,IACmC,QAAlCjvgC,EAAKgvgC,EAAYlwgC,mBAAgC,IAAPkB,GAAyBA,EAAG4rB,KAAKoj/B,IAEhD,QAA/B9ugC,EAAK8ugC,EAAY9iZ,gBAA6B,IAAPhsnB,GAAyBA,EAAG0rB,KAAKoj/B,QAI7Eh3hB,iGClCL,MAAMk3hB,EAAwB,CACjCn6J,SAAS,EACT5H,UAAU,GAEP,WAAkBwzJ,GAAoB5rJ,UAAS5H,YAAa+hK,GAC/D,OAAOrT,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAI3nlB,GAAW,EACX2+lB,EAAY,KACZ/mS,EAAY,KACZ20R,GAAa,EACjB,MAAMqS,EAAgB,KACJ,MAAdhnS,GAAsDA,EAAUtpuB,cAChEspuB,EAAY,KACR+kI,IACAt91B,IACAkt/B,GAAc5E,EAAW1r+B,aAG3B4i/B,EAAoB,KACtBjnS,EAAY,KACZ20R,GAAc5E,EAAW1r+B,YAEvB6i/B,EAAiB3zgC,GAAWysuB,GAAY+zR,QAAUwE,EAAiBhlgC,IAAQ+B,UAAU,IAAI0+/B,IAAmBjE,EAAYiX,EAAeC,IACvIx//B,EAAO,KACT,GAAI2ga,EAAU,CACVA,GAAW,EACX,MAAM70a,EAAQwzgC,EACdA,EAAY,KACZhX,EAAW90/B,KAAK1H,IACfohgC,GAAcuS,EAAc3zgC,KAGrCg3C,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD60a,GAAW,EACX2+lB,EAAYxzgC,IACVysuB,GAAcA,EAAUpzc,UAAY+/kB,EAAUll2B,IAASy//B,EAAc3zgC,KACxE,KACCohgC,GAAa,KACX5vJ,GAAY38b,GAAY43T,IAAcA,EAAUpzc,SAAWmjuB,EAAW1r+B,qGCtC7E,WAAsBvoB,EAAUm1/B,EAAYsC,IAAgBlx/B,EAASykgC,KACxE,MAAMK,GAAY5p3B,OAAMzhJ,EAAUm1/B,GAClC,OAAO52T,OAAS,IAAM8sU,EAAW9kgC,yFCF9B,WAAsB0v/B,EAAeqV,GACxC,OAAO3T,OAAQ,CAAClp9B,EAAQwl9B,KACpB,IAAI3nlB,GAAW,EACf79X,EAAOj1C,UAAU,IAAI0+/B,IAAmBjE,EAAax8/B,IACjD60a,GAAW,EACX2nlB,EAAW90/B,KAAK1H,IACjB,IAAO60a,EAAW2nlB,EAAW1r+B,WAAa0r+B,EAAW77+B,MAAM69+B,SAGtE,aACI,OAAO,IAAIe,oGCTR,WAA0Btw+B,EAAOyu+B,GACpC,OAAO,IAAI1w8B,IAAYwv8B,IACnB,IAAIli7B,EACJim7B,cAAgB/D,EAAYkB,EAAW,KACnCpj7B,EAAWrrD,EAAM6k/B,QACjBvT,OAAgB/D,EAAYkB,EAAW,KACnC,IAAI19/B,EACAg0H,EACJ,MACOh0H,QAAOg0H,QAAS15C,EAAS5yE,cAEzBgf,GAEH,YADA81+B,EAAW77+B,MAAM+F,GAGjBstG,EACAwo4B,EAAW1r+B,WAGX0r+B,EAAW90/B,KAAK1H,IAErB,GAAG,KAEH,OAAMo2oB,KAAwB,MAAb97jB,OAA2C,EAASA,EAAS417B,SAAW517B,EAAS417B,gICzB1G,WAA+Bjh/B,EAAOyu+B,GACzC,IAAKzu+B,EACD,MAAM,IAAInc,MAAM,2BAEpB,OAAO,IAAIk6C,IAAYwv8B,KACnB+D,OAAgB/D,EAAYkB,EAAW,KACnC,MAAMpj7B,EAAWrrD,EAAM4tf,OAAOk3f,kBAC9BxT,OAAgB/D,EAAYkB,EAAW,KACnCpj7B,EAAS5yE,OAAOuvB,KAAMroB,KACdA,GAAOolH,KACPwo4B,EAAW1r+B,WAGX0r+B,EAAW90/B,KAAKkH,GAAO5O,UAGhC,GAAG,wFCLX,WAAmBivB,EAAOyu+B,GAC7B,GAAa,MAATzu+B,EAAe,CACf,MAAI8/+B,KAAoB9/+B,GACpB,OCbL,WAA4BA,EAAOyu+B,GACtC,OAAO8C,QAAUvx+B,GAAOpmB,QAAKm4/B,KAAYtD,MAAYuD,KAAUvD,IDYhDsW,CAAmB/k/B,EAAOyu+B,GAErC,MAAIvxJ,KAAYl90B,GACZ,OElBL,WAAuBA,EAAOyu+B,GACjC,OAAO,IAAI1w8B,IAAYwv8B,IACnB,IAAIxx/B,EAAI,EACR,OAAO0y/B,EAAUt3mB,SAAS,WAClBp7Y,IAAMikB,EAAM7sB,OACZo6/B,EAAW1r+B,YAGX0r+B,EAAW90/B,KAAKunB,EAAMjkB,MACjBwx/B,EAAWnjuB,QACZh9R,KAAK+pZ,gBFQN6tnB,CAAchl/B,EAAOyu+B,GAEhC,MAAIuR,KAAUhg/B,GACV,OGnBL,WAAyBA,EAAOyu+B,GACnC,OAAO8C,QAAUvx+B,GAAOpmB,QAAKm4/B,KAAYtD,MAAYuD,KAAUvD,IHkBhDwW,CAAgBjl/B,EAAOyu+B,GAElC,MAAIyR,KAAgBlg/B,GAChB,OAAOkl/B,EAAsBll/B,EAAOyu+B,GAExC,MAAI2R,KAAWpg/B,GACX,OAAO+y+B,OAAiB/y+B,EAAOyu+B,GAEnC,MAAI6R,KAAqBtg/B,GACrB,OI7BL,WAAoCA,EAAOyu+B,GAC9C,OAAOyW,GAAsB1E,OAAmCxg/B,GAAQyu+B,GJ4BzD0W,CAA2Bnl/B,EAAOyu+B,GAGjD,QAAMiS,KAAiC1g/B,mEKjCpC,gBAAqBsxZ,KACxBpkb,YAAYuhgC,EAAWxhP,GACnBrgwB,QAEJuqY,SAAS7/Y,EAAOoH,EAAQ,GACpB,OAAOtR,MCNR,MAAMg4gC,EAAmB,CAC5Bz81B,eAAethJ,GACX,MAAQqvV,YAAa0upB,EACrB,QAAsB,MAAb1upB,OAA2C,EAASA,EAAS/tM,cAAgBA,gBAAgBthJ,IAE1GohJ,cAAcl0H,GACV,MAAQmiU,YAAa0upB,EACrB,QAAsB,MAAb1upB,OAA2C,EAASA,EAASjuM,gBAAkBA,eAAel0H,IAE3GmiU,cAAUnkX,kBCNP,gBAA0B63Z,EAC7Bl9Z,YAAYuhgC,EAAWxhP,GACnBrgwB,MAAM6h/B,EAAWxhP,GACjB7/wB,KAAKqhgC,UAAYA,EACjBrhgC,KAAK6/wB,KAAOA,EACZ7/wB,KAAKmxE,SAAU,EAEnB44U,SAAS7/Y,EAAOoH,EAAQ,GACpB,GAAItR,KAAKg9R,OACL,OAAOh9R,KAEXA,KAAKkK,MAAQA,EACb,MAAMhF,EAAKlF,KAAKkF,GACVm8/B,EAAYrhgC,KAAKqhgC,UACvB,OAAU,MAANn8/B,IACAlF,KAAKkF,GAAKlF,KAAKuhgC,eAAeF,EAAWn8/B,EAAIoM,IAEjDtR,KAAKmxE,SAAU,EACfnxE,KAAKsR,MAAQA,EACbtR,KAAKkF,GAAKlF,KAAKkF,IAAMlF,KAAKshgC,eAAeD,EAAWrhgC,KAAKkF,GAAIoM,GACtDtR,KAEXshgC,eAAeD,EAAWjr+B,EAAK9kB,EAAQ,GACnC,OAAO0mgC,cAA6B3W,EAAUripB,MAAMn5V,KAAKw7+B,EAAWrhgC,MAAOsR,GAE/Eiw/B,eAAe0W,EAAY/ygC,EAAIoM,EAAQ,GACnC,GAAa,MAATA,GAAiBtR,KAAKsR,QAAUA,IAA0B,IAAjBtR,KAAKmxE,QAC9C,OAAOjsE,EAEX8ygC,gBAA+B9ygC,GAGnCwhmB,QAAQx8lB,EAAOoH,GACX,GAAItR,KAAKg9R,OACL,OAAO,IAAIvmR,MAAM,gCAErBzW,KAAKmxE,SAAU,EACf,MAAM7sD,EAAQtkB,KAAK0hgC,SAASx3/B,EAAOoH,GACnC,GAAIgT,EACA,OAAOA,GAEe,IAAjBtkB,KAAKmxE,SAAgC,MAAXnxE,KAAKkF,KACpClF,KAAKkF,GAAKlF,KAAKuhgC,eAAevhgC,KAAKqhgC,UAAWrhgC,KAAKkF,GAAI,OAG/Dw8/B,SAASx3/B,EAAO88W,GACZ,IACIy8S,EADAy0W,GAAU,EAEd,IACIl4gC,KAAK6/wB,KAAK31wB,SAEPjB,GACHivgC,GAAU,EACVz0W,EAAax6pB,GAAQ,IAAIwN,MAAM,sCAEnC,GAAIyhgC,EACA,YAAKpxgC,cACE28pB,EAGf38pB,cACI,IAAK9G,KAAKg9R,OAAQ,CACd,MAAQ93R,KAAIm8/B,aAAcrhgC,MAClBm+b,WAAYkjkB,EACpBrhgC,KAAK6/wB,KAAO7/wB,KAAKkK,MAAQlK,KAAKqhgC,UAAY,KAC1CrhgC,KAAKmxE,SAAU,GACf817B,OAAU9okB,EAASn+b,MACT,MAANkF,IACAlF,KAAKkF,GAAKlF,KAAKuhgC,eAAeF,EAAWn8/B,EAAI,OAEjDlF,KAAKsR,MAAQ,KACbkO,MAAM1Y,gFCzEX,gBAA6BuogC,IAChCvvgC,YAAYq4gC,EAAiBn//B,EAAMq2/B,SAC/B7v/B,MAAM24/B,EAAiBn//B,GACvBhZ,KAAKm+b,QAAU,GACfn+b,KAAK86X,SAAU,EACf96X,KAAKmhgC,gBAAah8/B,EAEtB65W,MAAMh+U,GACF,MAAQm9Z,WAAYn+b,KACpB,GAAIA,KAAK86X,QAEL,YADAqjE,EAAQ14b,KAAKu7B,GAGjB,IAAI1c,EACJtkB,KAAK86X,SAAU,EACf,MACSx2W,EAAQ0c,EAAO0lkB,QAAQ1lkB,EAAO92B,MAAO82B,EAAO1vB,OAC7C,YAEE0vB,EAASm9Z,EAAQx0W,SAE3B,GADA3pF,KAAK86X,SAAU,EACXx2W,EAAO,CACP,KAAQ0c,EAASm9Z,EAAQx0W,SACrB3oD,EAAOl6B,cAEX,MAAMwd,kGCxBX,MAAMioZ,EAA0B,ICDhC,gBAAsC20lB,IACzClipB,MAAMh+U,GACFhhC,KAAK86X,SAAU,EACf96X,KAAKmhgC,gBAAah8/B,EAClB,MAAQg5b,WAAYn+b,KACpB,IAAIskB,EACAV,GAAQ,EACZod,EAASA,GAAUm9Z,EAAQx0W,QAC3B,MAAMiuB,EAAQumV,EAAQp4b,OACtB,MACSue,EAAQ0c,EAAO0lkB,QAAQ1lkB,EAAO92B,MAAO82B,EAAO1vB,OAC7C,cAEGsS,EAAQg0F,IAAU52E,EAASm9Z,EAAQx0W,UAE9C,GADA3pF,KAAK86X,SAAU,EACXx2W,EAAO,CACP,OAASV,EAAQg0F,IAAU52E,EAASm9Z,EAAQx0W,UACxC3oD,EAAOl6B,cAEX,MAAMwd,KClBX,gBAAmC88+B,IACtCthgC,YAAYuhgC,EAAWxhP,GACnBrgwB,MAAM6h/B,EAAWxhP,GACjB7/wB,KAAKqhgC,UAAYA,EACjBrhgC,KAAK6/wB,KAAOA,EAEhByhP,eAAeD,EAAWn8/B,EAAIoM,EAAQ,GAClC,OAAc,OAAVA,GAAkBA,EAAQ,EACnBkO,MAAM8h/B,eAAeD,EAAWn8/B,EAAIoM,IAE/C+v/B,EAAUljkB,QAAQ14b,KAAKzF,MAChBqhgC,EAAUF,aAAeE,EAAUF,WAAajB,0BAA6C,IAAMmB,EAAUripB,WAAM75W,MAE9Ho8/B,eAAeF,EAAWn8/B,EAAIoM,EAAQ,GAClC,GAAc,MAATA,GAAiBA,EAAQ,GAAgB,MAATA,GAAiBtR,KAAKsR,MAAQ,EAC/D,OAAOkO,MAAM+h/B,eAAeF,EAAWn8/B,EAAIoM,GAEd,IAA7B+v/B,EAAUljkB,QAAQp4b,SAClBm6/B,yBAA4Ch7/B,GAC5Cm8/B,EAAUF,gBAAah8/B,MFlBtB2zmB,EAAiBvsM,iEGFvB,MAAM2zlB,EAAyB,CAClCn2mB,SAASl6Y,GACL,IAAI8P,EAAUghgB,sBACVp5J,EAASs5J,qBACb,MAAQv3J,YAAa42oB,EACjB52oB,IACA3pW,EAAU2pW,EAASq3J,sBACnBp5J,EAAS+B,EAASu3J,sBAEtB,MAAM15d,EAASxnC,EAASwwK,IACpBo3L,OAASpiX,EACT0K,EAASsgL,KAEb,OAAO,IAAI+zP,KAAa,IAAiB,MAAX38D,OAAuC,EAASA,EAAOpgU,KAEzFw5d,yBAAyB1mf,GACrB,MAAQqvV,YAAa42oB,EACrB,QAAsB,MAAb52oB,OAA2C,EAASA,EAASq3J,wBAA0BA,0BAA0B1mf,IAE9H4mf,wBAAwB5mf,GACpB,MAAQqvV,YAAa42oB,EACrB,QAAsB,MAAb52oB,OAA2C,EAASA,EAASu3J,uBAAyBA,yBAAyB5mf,IAE5HqvV,cAAUnkX,0ECtBP,MAAMw+/B,EAAiB,aAAIzC,GAAeE,KACpC1z2B,EAAQi22B,kDCHd,MAAMgJ,EAAwB,CACjC3z/B,SACY2z/B,EAAsBrjpB,UAAYvwW,MAAMC,MAEpDswW,cAAUnkX,mDCJP,MAAMmrgC,EAAkB,CAC3Bp+/B,cAAc+nB,GACV,MAAQqvV,YAAagnpB,EACrB,QAAsB,MAAbhnpB,OAA2C,EAASA,EAASp3W,aAAeA,eAAe+nB,IAExGhT,aAAakgC,GACT,MAAQmiU,YAAagnpB,EACrB,QAAsB,MAAbhnpB,OAA2C,EAASA,EAASriW,eAAiBA,cAAckgC,IAEzGmiU,cAAUnkX,mDCHP,MAAM84E,EANN,aACH,MAAsB,mBAAXuic,QAA0BA,OAAOvic,SAGrCuic,OAAOvic,SAFH,aAISm67B,mDCNjB,MAAM5umB,EAAuC,mBAAXg3G,QAAyBA,OAAOh3G,YAAe,+DCCjF,MAAM05lB,GAAaE,cAAkBnq5B,GAAW,WACnDA,EAAOj5G,MACPA,KAAKgF,KAAO,aACZhF,KAAKwX,QAAU,4ECHZ,MAAM+3/B,GAA0BnM,cAAkBnq5B,GAAW,WAChEA,EAAOj5G,MACPA,KAAKgF,KAAO,0BACZhF,KAAKwX,QAAU,wECHZ,MAAMk5/B,GAAsBtN,cAAkBnq5B,GAAW,SAAiCjuE,GAC7FiuE,EAAOj5G,MACPA,KAAKwX,QAAUwzB,EACR,GAAEA,EAAOjlC,kDAClBilC,EAAOrlC,IAAI,CAAC0kB,EAAK1b,IAAO,GAAEA,EAAI,MAAM0b,EAAItf,cAAc0c,KAAK,UACnD,GACNznB,KAAKgF,KAAO,sBACZhF,KAAKgrC,OAASA,iGCNlB,WAAc38B,GACV,OAAOA,EAAIA,EAAItI,OAAS,GAErB,WAA2Bk0B,GAC9B,OAAO8/mB,OAAWzihB,EAAKr9F,IAASA,EAAKnH,WAAQ3tB,EAE1C,WAAsB80B,GACzB,OAAOuq+B,OAAYlt4B,EAAKr9F,IAASA,EAAKnH,WAAQ3tB,EAE3C,WAAmB80B,EAAMkS,GAC5B,MAA6B,iBAAfmrF,EAAKr9F,GAAqBA,EAAKnH,MAAQqZ,mDCZzD,MAAQxM,WAAYrxB,OACZgzuB,iBAAgBjhuB,UAAWmj1B,EAAahg2B,KAAMD,GAAYsC,OAC3D,WAA8Bo0B,GACjC,GAAoB,IAAhBA,EAAKl0B,OAAc,CACnB,MAAMmB,EAAQ+yB,EAAK,GACnB,GAAI0F,EAAQz4B,GACR,MAAO,CAAE+yB,KAAM/yB,EAAO1D,KAAM,MAEhC,GAUR,WAAgBk8D,GACZ,OAAOA,GAAsB,iBAARA,GAAoB4hrB,EAAe5hrB,KAAS8jyB,EAXzD60K,CAAOnxgC,GAAQ,CACf,MAAM1D,EAAOD,EAAQ2D,GACrB,MAAO,CACH+yB,KAAMz2B,EAAKmC,IAAKkN,GAAQ3L,EAAM2L,IAC9BrP,SAIZ,MAAO,CAAEy2B,KAAMA,EAAMz2B,KAAM,sDChB/B,MAAQm8B,WAAYrxB,MACb,WAAwB2rB,GAC3B,OAAuB,IAAhBA,EAAKl0B,QAAgB45B,EAAQ1F,EAAK,IAAMA,EAAK,GAAKA,kCCFtD,WAAmB5rB,EAAK2E,GAC3B,GAAI3E,EAAK,CACL,MAAMuV,EAAQvV,EAAIyR,QAAQ9M,GAC1B,GAAK4Q,GAASvV,EAAIyV,OAAOF,EAAO,oDCHjC,WAA0B00/B,GAK7B,MAAMC,EAAWD,EAJDl3/B,IACZ3K,MAAMmd,KAAKxS,GACXA,EAASiE,OAAQ,IAAI5O,OAAQ4O,QAGjCkz/B,SAASl4/B,UAAYxa,OAAOm8D,OAAOvrD,MAAM4J,WACzCk4/B,EAASl4/B,UAAUvgB,YAAcy4gC,EAC1BA,kDCRJ,WAAsB/0gC,EAAM6C,GAC/B,OAAO7C,EAAKwW,OAAO,CAACzH,EAAQM,EAAKlE,KAAQ4D,EAAOM,GAAOxM,EAAOsI,GAAK4D,GAAS,4FCAhF,IAAI6wD,EAAU,KACP,WAAsBngC,GACzB,GAAIxwB,0CAA8C,CAC9C,MAAM+lgC,GAAUp18B,EAKhB,GAJIo18B,IACAp18B,EAAU,CAAEq18B,aAAa,EAAOn0/B,MAAO,OAE3C2e,IACIu1+B,EAAQ,CACR,MAAQC,cAAan0/B,SAAU8+C,EAE/B,GADAA,EAAU,KACNq18B,EACA,MAAMn0/B,QAKd2e,IAGD,WAAsB5Y,GACrB5X,2CAAgD2wD,IAChDA,EAAQq18B,aAAc,EACtBr18B,EAAQ9+C,MAAQ+F,kCCxBjB,WAAyBqu/B,EAAoBrX,EAAWxhP,EAAMvuwB,EAAQ,EAAG0zZ,GAAS,GACrF,MAAM2zmB,EAAuBtX,EAAUt3mB,SAAS,WAC5C81X,IACI76W,EACA0zmB,EAAmBlw9B,IAAIxoD,KAAK+pZ,SAAS,KAAMz4Y,IAG3CtR,KAAK8G,eAEVwK,GAEH,GADAongC,EAAmBlw9B,IAAImw9B,IAClB3zmB,EACD,OAAO2zmB,kDCZR,WAAkBhvgC,GACrB,OAAOA,mECDJ,MAAMmm2B,EAAgBnm2B,GAAMA,GAAyB,iBAAbA,EAAE5D,QAAoC,mBAAN4D,iECCxE,WAAyB+1D,GAC5B,OAAO8gd,OAAOk3f,kBAAiB39X,KAAmB,MAARr6kB,OAAiC,EAASA,EAAI8gd,OAAOk3f,gDCF5F,WAAqB/zgC,GACxB,OAAOA,aAAiBoV,OAAS5B,MAAMxT,mDCDpC,WAAoBA,GACvB,MAAwB,mBAAVA,6FCCX,WAA6BivB,GAChC,OAAOmnnB,OAAWnnnB,EAAM+7+B,iFCDrB,WAAoB/7+B,GACvB,SAAOmnnB,KAAqB,MAAVnnnB,OAAqC,EAASA,EAAM6k/B,sECFnE,WAAmB9zgC,GACtB,OAAOo2oB,OAAqB,MAAVp2oB,OAAqC,EAASA,EAAMi3B,yFCAnE,WAA4Cu4+B,GAC/C,OAAOyF,QAAiB54gC,KAAM+8B,UAAW,YACrC,MAAMgxM,EAASolyB,EAAe0F,YAC9B,IACI,OAAa,CACT,MAAQl1gC,QAAOg0H,gBAAemh5B,MAAQ/qyB,EAAO7+G,QAC7C,GAAIyI,EACA,eAAamh5B,WAAQ,iBAEbA,MAAQn1gC,YAIxBoqO,EAAOgryB,iBAIZ,WAA8Br58B,GACjC,OAAOq6kB,OAAmB,MAARr6kB,OAAiC,EAASA,EAAIm58B,2ECnB7D,WAAqBl1gC,GACxB,OAAOA,IAASo2oB,OAAWp2oB,EAAMomZ,kFCD9B,WAAiBpvW,GACpB,OAAOo/lB,OAAsB,MAAXp/lB,OAAuC,EAASA,EAAO8yuB,MAEtE,WAAiBz7tB,GACpB,OAAQrX,IACJ,GAAIy29B,EAAQz29B,GACR,OAAOA,EAAO8yuB,KAAK,SAAUurP,GACzB,IACI,OAAOhn9B,EAAKgn9B,EAAch5gC,YAEvBqqB,GACHrqB,KAAKskB,MAAM+F,MAIvB,MAAM,IAAIisyB,UAAU,2GCf5B,MAAQ32xB,WAAYrxB,MAIb,WAA0B4qD,GAC7B,OAAOvzD,OAAIs0B,GAJf,WAAqBi/B,EAAIj/B,GACrB,OAAO0F,EAAQ1F,GAAQi/B,KAAMj/B,GAAQi/B,EAAGj/B,GAGrBg/+B,CAAY//8B,EAAIj/B,oCCNhC,4DCAA,WAAasivB,EAAMt1T,GACtB,MAAO,CAACtjd,EAAOigB,KAAW24vB,EAAK3ovB,KAAKqzb,EAAStjd,EAAOigB,2FCAjD,cAAiBuvd,GACpB,OAAO07hB,EAAc17hB,GAElB,WAAuBA,GAC1B,OAAmB,IAAfA,EAAIpte,OACGi6e,IAEQ,IAAf7M,EAAIpte,OACGote,EAAI,GAER,SAAevgd,GAClB,OAAOugd,EAAIn5d,OAAO,CAACivO,EAAM/vL,IAAOA,EAAG+vL,GAAOr2N,+ECV3C,WAA8BvI,GACjCim/B,eAA2B,KACvB,MAAQU,oBAAqBv+/B,IAC7B,IAAIu+/B,EAIA,MAAM3m/B,EAHN2m/B,EAAiB3m/B,qCCNtB,WAA0CuI,GAC7C,OAAO,IAAI0jyB,UAAW,gBAAyB,OAAV1jyB,GAAmC,iBAAVA,EAAqB,oBAAuB,IAAGA,mKCDjH,MAAOsm/B,cAAcpzb,EAAQ,OAE7B,WAAe77iB,EAAOhH,EAAIk2+B,GAAS,EAAOhwmB,GAAK,GAC3C,IAAW,IAAPA,EAAa,CACb,QAASx6Z,EAAI,EAAGA,EAAIs7B,EAAMlkC,OAAQ4I,IAAK,CACnC,MAAMqE,EAAOi3B,EAAMt7B,GACnB,GAAIs0B,EAAGjwB,EAAMrE,EAAGs7B,GACZ,OAAOkv+B,EAASxqgC,EAAIqE,EAG5B,OAAOmmgC,GAAS,EAAK,KAGzB,QAASxqgC,EAAIs7B,EAAMlkC,OAAO,EAAG4I,GAAK,EAAGA,IAAK,CACtC,MAAMqE,EAAOi3B,EAAMt7B,GACnB,GAAIs0B,EAAGjwB,EAAMrE,EAAGs7B,GACZ,OAAOkv+B,EAASxqgC,EAAIqE,EAG5B,OAAOmmgC,GAAS,EAAK,KAGzB,MAAMC,EAAe,CAACri8B,EAAIC,IAClBki8B,EAAWni8B,EAAG8xL,WACdqwwB,EAAWni8B,EAAGw5M,SACPx5M,EAAG8xL,SAAS7xL,GAAM,CAAC,EAAG,GACzBD,EAAGw5M,QAAQv5M,GAAM,CAAC,EAAG,GAAK,CAAC,EAAG,GAE/B,CAACD,EAAIC,GA+EVtO,EAAU,CAACz+B,EAAOv1B,EAASpI,EAAO,KACpC,QAASqC,EAAI,EAAGA,EAAIs7B,EAAMlkC,OAAQ4I,IAI9B,GAHI+F,IAAYu1B,EAAMt7B,IAAMA,GAAKrC,GAG7B4sgC,EAAWxkgC,EAAQ2kgC,QAAa3kgC,EAAQ2kgC,MAASpv+B,EAAMt7B,KAAOA,GAAKrC,EACnE,OAAOqC,EAGf,OAAO,GAoDL+zd,EAAQ,CAACz4b,EAAOjd,EAAOsd,KACzB,IAAI1mB,GAAQ,EACR7d,EAASkkC,EAAMlkC,OAEfinB,EAAQ,IACRA,GAASA,EAAQjnB,EAAS,EAAKA,EAASinB,IAE5Csd,EAAMA,EAAMvkC,EAASA,EAASukC,GACpB,IACNA,GAAOvkC,GAEXA,EAASinB,EAAQsd,EAAM,EAAMA,EAAMtd,IAAW,EAC9CA,KAAW,EAEX,IAAIza,EAAS,IAAIjE,MAAMvI,GACvB,OAAS6d,EAAQ7d,GACbwM,EAAOqR,GAASqmB,EAAMrmB,EAAQoJ,GAElC,OAAOza,GAGL+mgC,EAAO,CAACjrgC,EAAK+wxB,EAAU5nsB,EAAOjlF,EAAS,MACzC,GAAIilF,EAAQ4nsB,EAER,YADA7sxB,EAAO9M,KAAK4I,GAGhB,MAAM05B,EAAI15B,EAAItI,OACd,QAAS4I,EAAI,EAAGA,EAAIo5B,EAAGp5B,IAAK,CACxB,MAAMnI,EAAI6H,EAAIM,GACVL,MAAMqxB,QAAQn5B,GACd8ygC,EAAK9ygC,EAAG44xB,IAAY5nsB,EAAOjlF,GAG/BA,EAAO9M,KAAKe,KAIpBo20B,GAAOx9R,QAAU,CAACm6d,WA3CC,CAACtv+B,EAAOrmB,EAAOilD,IAGvB,IAFQ65Z,EAAMz4b,EAAO,EAAGrmB,MAETilD,KADR65Z,EAAMz4b,EAAOrmB,EAAOqmB,EAAMlkC,SAyCd2rL,KA9KjB,CAACznJ,EAAOxmC,EAASwt2B,IACnBhn0B,EAAMnwB,KAAK,CAACqY,EAAGD,KAClB,QAASvjB,EAAI,EAAGA,EAAIlL,EAAQsC,OAAQ4I,IAAK,CACrC,MAAM4B,EAAS9M,EAAQkL,GACjBogF,EAAUkixB,EAAOti2B,GACjBtI,GAAS+ygC,EAAajn/B,EAAE5hB,GAAS2hB,EAAE3hB,IACzC,GAAIlK,GAAO,GAAKA,GAAO,GACnB,OAAO0oF,EAAU,GAAI,EAEzB,GAAI1oF,GAAO,GAAKA,GAAO,GACnB,OAAO0oF,GAAU,EAAK,EAG9B,OAAO,IAiKqByq7B,aAtFf,CAACnrgC,EAAKtB,EAAQq7H,KAC/B,IAAIzkI,EAAQ,KACRm0G,EAAU,EACd,UAAW9kG,KAAQ3E,EACf,GAAoB,iBAAT2E,KAGPjG,GAAWA,EAAOiG,EAAM8kG,EAASzpG,IAIrC,OADAypG,IACOswB,QACF,GACa,OAAVzkI,GAAkBqP,EAAOrP,KACzBA,EAAQqP,GAEZ,WACC,GACa,OAAVrP,GAAkBqP,EAAOrP,KACzBA,EAAQqP,GAEZ,WACC,OACA,EACa,OAAVrP,IACAA,EAAQ,GAEZA,GAASqP,EAOjB,GAHc,OAAVrP,IACAA,EAAQ,GAEM,IAAdykI,EAAiB,CACjB,GAAItwB,EAAU,EACV,OAAO,EAEXn0G,GAAgBm0G,EAEpB,OAAOn0G,GA8CuC+kE,UAAS+w8B,QA7G3C,CAACxv+B,EAAO4+B,KACpB,MAAMj4D,EAAM,GACZ,UAAWoC,KAAQi3B,EAEV++B,EADeH,EAAU71D,IAAQ,GAElCpC,EAAInL,KAAKuN,GAGjB,OAAOpC,GAqGyD6xvB,OA/HrD,CAACx4tB,EAAOhH,EAAIwb,GAAS,KAChC,MAAM7tC,EAAM,GACZ,IAAIjC,EAAI,EACR,UAAWqE,KAAQi3B,GACA,IAAXwU,EACKxb,EAAGjwB,EAAMrE,EAAGs7B,IACbr5B,EAAInL,KAAKuN,GAGTiwB,EAAGjwB,EAAMrE,EAAGs7B,IACZr5B,EAAInL,KAAKuN,GAGjBrE,IAEJ,OAAOiC,GAgHiEq4D,KAvI/D,CAACh/B,EAAOhH,EAAIk2+B,GAAS,IACvBO,EAAMzv+B,EAAOhH,EAAIk2+B,GAsIsDQ,SAnIjE,CAAC1v+B,EAAOhH,EAAIk2+B,GAAS,IAC3BO,EAAMzv+B,EAAOhH,EAAIk2+B,GAAQ,GAkIwDS,QAjJ3E3v+B,IACb,MAAMr5B,EAAM,GACZ,IAAIknG,EAAU,EACd,QAASnpG,EAAIs7B,EAAMlkC,OAAO,EAAG4I,GAAK,EAAGA,IACjCiC,EAAIknG,GAAW7tE,EAAMt7B,GACrBmpG,IAEJ,OAAOlnG,GA0I0Fm/O,QA7JrF,CAAC9lN,EAAOqD,KACpB,MAAM18B,EAAM,GACZ,UAAWoC,KAAQi3B,EAAO,CACtB,MAAMzjC,EAAI8mC,EAAOt6B,GACZpC,EAAIpK,KACLoK,EAAIpK,GAAK,IAEboK,EAAIpK,GAAGf,KAAKuN,GAEhB,OAAOpC,GAoJmGwogC,eAAc12iB,QAAO42iB,oBCrMnI18L,GAAOx9R,QAAU,CAAC85d,WAREv1gC,GACQ,mBAAVA,EAOYk2gC,SAJZl2gC,GACG,OAAVA,UAAyBA,SAAiB,gBC2CrDi50B,GAAOx9R,QAAU,CAAC06d,YAhDGv3/B,IACjB,IAAI/W,EAAI,EACJisN,EAAI,EACJ56L,EAAI,EACJh2B,EAAI,EACJgW,EAAK,EAET,IAAyB,IAArB0F,EAAIzC,QAAQ,KAAa,CACzB,MAAMi6/B,EAAOx3/B,EAAIvL,MAAM,KACvBxL,EAAI5H,SAASm2gC,EAAK,IAClBvugC,EAAI2L,MAAM3L,GAAK,EAAIA,EACnB+W,EAAMw3/B,EAAK,GAEf,MAAMC,EAAOz3/B,EAAIvL,MAAM,KACvBygN,EAAI7zN,SAASo2gC,EAAK,IAClBn9+B,EAAIj5B,SAASo2gC,EAAK,IAClBvizB,EAAItgN,MAAMsgN,GAAK,EAAIA,EACnB56L,EAAI1lB,MAAM0lB,GAAK,EAAIA,EAEnB,MAAMo9+B,EAAOD,EAAK,GAAGhjgC,MAAM,KAE3BnQ,SAAIjD,SAASq2gC,EAAK,IAClBpzgC,EAAIsQ,MAAMtQ,GAAK,EAAIA,EACnBgW,EAAKjZ,SAASq2gC,EAAK,IACnBp9/B,EAAK1F,MAAM0F,GAAM,EAAIA,EAEd,CACHwiK,KAAM7zK,EACNg2K,MAAOi2C,EACP57M,QAASghB,EACT4kJ,QAAS56K,EACTi5B,aAAcjjB,IAiBSq9/B,iBAb/B,WAA0Bv+/B,EAAOD,GAC7B,MAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAI24C,SAAS14C,GAC1B,IAEP,CAAC,EAAG,EAAG,EAAG,IAAI04C,SAAS14C,GAChB,IAEG,IAAVA,EACO,EAEHD,EAAO,GAAO,EAAI,IAAU,kBC7CxC,MAEMy+/B,EAAM,GACZ,QAASxrgC,EAAG,EAAGA,EAAI,IAAKA,IACpBwrgC,EAAIxrgC,IAAMA,EAAI,GAAK,IAAM,IAAOA,EAAG5D,SAAS,IAchD,MAAMqvgC,EAA2B,CAC7B,EACA,GACA,GACA,IAGEC,EAAmB,CACrB,IAAK,IAAK,IAAK,IAAK,IAAK,IACzB,IAAK,IAAK,IAAK,IAAK,IAAK,IACzB,IAAK,IAAK,IAAK,IAAK,KA4BxBz9L,GAAOx9R,QAAU,CAACk7d,OAjDlB,aACI,MAAMx9pB,EAAmB,WAAd5vW,KAAKw7Y,SAAoB,EAC9B3rC,EAAmB,WAAd7vW,KAAKw7Y,SAAoB,EAC9B+iW,EAAmB,WAAdv+uB,KAAKw7Y,SAAoB,EAC9B6xnB,EAAmB,WAAdrtgC,KAAKw7Y,SAAoB,EACpC,OAAOyxnB,EAAO,IAAHr9pB,GAASq9pB,EAAIr9pB,GAAI,EAAE,KAAMq9pB,EAAIr9pB,GAAI,GAAG,KAAMq9pB,EAAIr9pB,GAAI,GAAG,KAAM,IAClEq9pB,EAAO,IAAHp9pB,GAASo9pB,EAAIp9pB,GAAI,EAAE,KAAM,IAAIo9pB,EAAIp9pB,GAAI,GAAG,GAAK,IAAMo9pB,EAAIp9pB,GAAI,GAAG,KAAM,IACxEo9pB,EAAO,GAAH1uR,EAAQ,KAAM0uR,EAAI1uR,GAAI,EAAE,KAAM,IAAI0uR,EAAI1uR,GAAI,GAAG,KAAM0uR,EAAI1uR,GAAI,GAAG,KAClE0uR,EAAO,IAAHI,GAASJ,EAAII,GAAI,EAAE,KAAMJ,EAAII,GAAI,GAAG,KAAMJ,EAAII,GAAI,GAAG,MAyCvCC,aAzB1B,WAAsBjm2B,GAMlB,IAJKA,EAAKxuK,OAAO6iQ,OAjCD,KAqCZr0F,EAAKkm2B,cAAc,KAAKC,QAAQ,GAChC,OAAO,EAGX,UAAW7x7B,KAAOux7B,EACd,IAAK7l2B,EAAKom2B,OAAO9x7B,GAAK+/K,OAAO,KACzB,OAAO,EAIf,UAAWqmU,KAAQ16Z,EAAM,CACrB,MAAMt0J,EAAIgvjB,EAAKxmgB,cACf,IAAK4x8B,EAAiBhm9B,SAASp0C,GAC3B,OAAO,EAGf,OAAO,gBCpCX28zB,GAAOx9R,QAAU,CAACt6T,MAjBJ,CAACnhP,EAAOohP,EAAY,EAAG9lO,EAAS,WAC1C,IAAImT,EAAS,IACb,QAASzjB,EAAI,EAAGA,EAAIzB,KAAKiN,IAAI4qO,GAAYp2O,IACrCyjB,GAAU,IAEd,MAAMxhB,EAAMhN,SAASwuB,EAAQ,IAC7B,OAAO2yN,EAAY,EACf73O,KAAK+R,GAAQtb,EAAQiN,GAAOA,EAC5B1D,KAAK+R,GAAQtb,EAAQiN,GAAOA,GASXgqgC,OANV,CAACno+B,EAAKjkC,EAAKg7uB,KACF,IAAbA,EACHt8uB,KAAKw7Y,UAAYl6Y,EAAMikC,GAAOA,EAC9BvlC,KAAKC,MAAMD,KAAKw7Y,UAAYl6Y,EAAMikC,EAAM,IAAMA,eCdtD,MAAMoo+B,EAAoB,CAAC1w9B,EAAGvjC,EAAQ,IAAI+3B,OACxC,IAAIm89B,EACFnsgC,EAKF,GAHiB,iBAANw7C,IAGNA,EACH,OAAOA,EAGT,GAAIA,aAAapxC,KACf,OAAO,IAAIA,KAAKoxC,EAAE7vC,WAGpB,GAAI,0BAA4B+F,UAAUtV,SAAS4oB,MAAMw2B,GAAI,CAE3D,IADA2w9B,EAAO,GACFnsgC,EAAI,EAAGA,EAAIw7C,EAAEpkD,OAAQ4I,GAAK,EAC7BmsgC,EAAKnsgC,GAAKksgC,EAAkB1w9B,EAAEx7C,GAAIiY,GAEpC,OAAOk0/B,EAGT,MAAMjogC,EAAMwb,KAAK+E,UAAU+2B,GAC3B,GAAIvjC,EAAMqK,IAAIpe,GACZ,OAAO+T,EAAM/H,IAAIhM,GAInB,IAAKlE,KAFLmsgC,EAAO,GACPl0/B,EAAMyL,IAAIxf,EAAKiogC,GACL3w9B,EACJA,EAAE9d,eAAe19B,KACnBmsgC,EAAKnsgC,GAAKksgC,EAAkB1w9B,EAAEx7C,GAAIiY,IAGtC,OAAOk0/B,GAwBHC,EAAQ,CAACz38B,EAAQ038B,KACrB,UAAWnogC,KAAOmogC,EAChB,GAAI138B,EAAOj3B,eAAex5B,IAAtBywD,MAA8BA,EAAOzwD,GAA4C,CACnF,QAAmB1N,IAAf61gC,EAAMnogC,GACR,SAEF,GAAIywD,EAAOzwD,aAAgBkG,KAAM,CAC/BuqD,EAAOzwD,GAAOmogC,EAAMnogC,GACpB,SAEF,UAAWywD,EAAOzwD,UAAgB,GAAI,CACpCywD,EAAOzwD,GAAOkogC,EAAMz38B,EAAOzwD,GAAMmogC,EAAMnogC,IACvC,SAEFywD,EAAOzwD,GAAOmogC,EAAMnogC,QAEpBywD,EAAOzwD,GAAOmogC,EAAMnogC,GAGxB,OAAOywD,GAGTs5wB,GAAOx9R,QAAU,CAAC67d,IA3CN,CAACv78B,EAAK7sD,KAChB,IAAIjC,EAAM8uD,EACV,UAAWk5W,KAAQ/la,EAAImE,MAAM,KAAM,CACjC,IAAKpG,IAAQA,EAAIy7B,eAAeusY,GAC9B,OAAO,KAEThoa,EAAMA,EAAIgoa,GAEZ,OAAOhoa,GAmCcy3D,IAhCX,CAAC3I,EAAK7sD,EAAKlP,KACrB,IAAIiN,EAAM8uD,EACV,MAAMl8D,EAAOqP,EAAImE,MAAM,KACvB,QAASrI,EAAI,EAAGA,EAAInL,EAAKuC,OAAS,EAAG4I,IACnCiC,EAAMA,EAAIpN,EAAKmL,IAEjBiC,SAAIpN,EAAKA,EAAKuC,OAAS,IAAMpC,EACtB+7D,GAyBmBq78B,QAAOF,iCChFnC,MAiBMz6K,EAAmB,qEAMnBpC,EAAgB,kBAKlBG,EAAiB,kBACjBC,EAAe,4BAKfC,EAAe,4BAEfE,EAAeC,8OAGfE,EAAU,IAAMH,EAAe,IAE/BK,EAAW,OACXC,EAAY,IAAMV,EAAiB,IACnCW,EAAU,IAAMV,EAAe,IAC/BW,EAAS,KAAOf,EAAgBO,EAAeK,EAAWT,EAAiBC,EAAeC,EAAe,IAIzGa,EAAa,kCACbC,EAAa,qCACbC,EAAU,IAAMf,EAAe,IAG7BgB,EAAc,MAAQP,EAAU,IAAMC,EAAS,IACjDO,GAAc,MAAQF,EAAU,IAAML,EAAS,IAC/CQ,GAAkB,qCAClBC,GAAkB,qCAClBC,GAAWC,gFACXC,GAAW,oBAIXC,GAAQD,GAAWF,GAHP,gBAAwB,CAZtB,KAAOzB,EAAgB,IAYakB,EAAYC,GAAY130B,KAAK,KAAO,IAAMk40B,GAAWF,GAAW,KAIlHI,GAAU,MAAQ,CAAChB,EAAWK,EAAYC,GAAY130B,KAAK,KAAO,IAAMm40B,GAEtEM,GAAgBv5f,OAAO,CACzBy4f,EAAU,IAAMN,EAAU,IAAMS,GAAkB,MAAQ,CAACb,EAASU,EAAS,KAAK330B,KAAK,KAAO,IAC9F630B,GAAc,IAAME,GAAkB,MAAQ,CAACd,EAASU,EAAUC,EAAa,KAAK530B,KAAK,KAAO,IAChG230B,EAAU,IAAMC,EAAc,IAAME,GACpCH,EAAU,IAAMI,GARH,mDADA,mDAYbZ,EACAiB,IACFp40B,KAAK,KAAM,KAMP010B,GAAc,4CAepB,YAAwBt01B,IACpB,OAAO,SAASgK,IACZ,OAAiB,MAAVhK,QAAiB1D,EAAY0D,GAAOgK,KAInD,MAgBMww1B,GAAmBP,GAhBH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MAaPC,GAAiBD,GAVH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAOH5G,GAAgB,4BAClBE,GAAmBz1f,OAAOu1f,GAAcvhzB,QAEtCwhzB,GAAkB,WACpBE,GAAqB11f,OAAOw1f,GAAgBxhzB,QAc1CiizB,GAAe,sBACjBC,GAAkBl2f,OAAOi2f,GAAajizB,QAO1CiiyB,GAAOx9R,QAAU,CAAC87d,aANIn8hB,IACVA,IAAU89W,GAAgBrhb,KAAKujE,IACjCA,GAAOxzd,QAAQqx0B,GAAc,QAC7B79W,GAGsBzyF,OAdhByyF,IACJA,IAAUs9W,GAAmB7gb,KAAKujE,IACpCA,GAAOxzd,QAAQ4w0B,GAAiB4G,IAChChkX,GAW8Bo8hB,SApBtBp8hB,IACNA,IAAUq9W,GAAiB5gb,KAAKujE,IAClCA,GAAOxzd,QAAQ2w0B,GAAemH,IAC9BtkX,GAiBwCq8hB,MA7DpC,CAACr8hB,GAAQriF,GAASq4c,GAAQ,YAGpB5v2B,KAFhBu3Z,GAAUq4c,QAAQ5v2B,EAAYu3Z,IApElC,WAAwBqiF,IACpB,OAAOqhX,EAAiB5kb,KAAKujE,IAsElB0hY,CAAe1hY,IAd9B,YAAsBA,IAClB,OAAOA,GAAOx9d,MAAM2+0B,KAAkB,GAaFwgB,CAAa3hY,IARrD,YAAoBA,IAChB,OAAOA,GAAOx9d,MAAM470B,KAAgB,GAOuBwjB,CAAW5hY,IAE/DA,GAAOx9d,MAAMm7Y,KAAY,GAuDqB2+mB,SAnJxC,CAACt8hB,GAAQu8hB,GAAcx0/B,GAAO,KAC3C,MAAMihB,GAAIuz+B,GAAav1gC,OACvB,GAAa,IAAT+gB,IAAuB,IAATA,GACd,KAAMi4d,GAAOt8d,OAAO,EAAGslB,MAAOuz+B,IAC1Bv8hB,GAASA,GAAOt8d,OAAOslB,IAI/B,GAAa,IAATjhB,IAAuB,IAATA,GACd,KAAMi4d,GAAOt8d,OAAOs8d,GAAOh5e,OAAOgiC,GAAGA,MAAOuz+B,IACxCv8hB,GAASA,GAAOt8d,OAAO,EAAGs8d,GAAOh5e,OAAOgiC,IAIhD,OAAOg3c,iBCiCX69V,GAAOx9R,QAAU,CAACp2Z,OAhClB,WAAgBi6gB,EAAc92nB,GAC1B,OAAO,MAAO82nB,EACV92nB,GAEI,KACJ82nB,GA2BkBs4W,kBAR1B,WAA2BC,EAAevh/B,EAAMkS,GAC5C,IAAKqv+B,EACD,OAAO,MAAOrv+B,EAA6D,KAAOA,EAEtF,MAAMv7B,EAAM4qgC,EAAc7n/B,MAAM,KAAMsG,GACtC,OAAO,MAAOrpB,EAA4D,OAAjBu7B,EAAwB,KAAOA,EAAev7B,cClB3Ggs0B,GAAOx9R,QAAU,CAACq8d,MANlB,WAAezogC,EAAMiwB,GACjB,MAAMryB,EAAM,IAAIoC,EAChBiwB,EAAGryB,GACHA,EAAI8qgC,6BCvBR,MAAOlh/B,WAAWsrjB,EAAQ,QACnB61b,cAAc71b,EAAQ,OACtBr/d,iBAAiBq/d,EAAQ,OA6EhC82P,GAAOx9R,QAAU,CAACz7Q,aAtElB,QACI7jS,cACIE,KAAK47gC,QAAU,IAAIph/B,EACnBx6B,KAAKwF,eAAiB,IAAIm2gC,EAa9B/xuB,OAAO3vQ,GACHj6B,KAAK47gC,QAAQvwgC,KAAK4uB,GAgBtBgnS,UAAUpuT,EAAKowB,GACXjjC,KAAKwF,eAAegwD,IAAI3iD,EAAK7S,KAAK47gC,QAAQl2gC,UAAUu9B,IAmBxD44+B,YAAYhpgC,GACR,GAAI4zG,EAAcq15B,cAAcjpgC,GAC5B,UAAWugC,KAAKpzC,KAAKwF,eAAeu+H,KAChC/jI,KAAK+7gC,kBAAkB3o+B,QAG3BpzC,KAAK+7gC,kBAAkBlpgC,GAI/BkpgC,kBAAkBlpgC,GACF7S,KAAKwF,eAAew2gC,SAASnpgC,GACrC/L,cACJ9G,KAAKwF,eAAew7D,OAAOnuD,wBCtEnC,MAAO8wR,gBAAgBmiT,EAAQ,MAE/B82P,GAAOx9R,QAAU,CAACz7Q,4BC4BlB,MAAMs4uB,EAAQ,SAAUl9/B,EAASm6C,KAAOj/B,GACpC,MAAM0zH,EAAQ5uI,EAAQsE,SAAW,IAGjC,GAFAtE,EAAQm9/B,WAAan9/B,EAAQm9/B,YAAc,EAEvCn9/B,EAAQm9/B,aADQn9/B,EAAQo9/B,eAAiB,IAEF,mBAA5Bp9/B,EAAQq9/B,iBACfr9/B,EAAQq9/B,uBAIhB,IACI,GAAkB,mBAAPlj9B,EAAmB,CAC1B,MAAMx8B,EAAMw8B,KAAMj/B,GAIlB,YAHgC,mBAArBlb,EAAQs9/B,UACft9/B,EAAQs9/B,SAAS3/+B,IAIzB,MAAM,IAAIjmB,MAAM,gCACXxN,GAC0B,mBAApB8V,EAAQ4zN,SACf5zN,EAAQ4zN,QAAQ1pO,GAEpB8V,EAAQm9/B,aACRhqgC,WAAW,IAAM+pgC,EAAMl9/B,EAASm6C,KAAOj/B,GAAO0zH,KAItDivrB,GAAOx9R,QAAU,CAAC68d,qBChDlBr/L,GAAOx9R,QAAU,CAACk9d,MAJJ,SAAUz//B,GACpB,OAAO,IAAIwB,QAASuJ,GAAY1V,WAAW0V,EAAS/K,kBCHxD,MAAMuxQ,EAAY,WACd,IAAI/sF,GAAS,EACb,OAAO,SAAUtiL,EAASm6C,KAAOj/B,GACxBonK,IACDtiL,EAAQuvQ,QAAUvvQ,EAAQuvQ,SAAW,IACrCvvQ,EAAQsvQ,SAA8B,IAApBtvQ,EAAQsvQ,SACF,IAApBtvQ,EAAQsvQ,SACRn1N,EAAGtlC,KAAKslC,KAAOj/B,GAEnB/nB,WAAW,KACF6M,EAAQsvQ,SACTn1N,EAAGtlC,KAAKslC,KAAOj/B,GAEnBonK,GAAS,GACVtiL,EAAQuvQ,WAdL,GAmBlBsujB,GAAOx9R,QAAU,CAAChxR,8BCzBlB,MAAO6tvB,SAASn2b,EAAQ,QACjB21b,SAAS31b,EAAQ,MACjB13T,YAAY03T,EAAQ,QACpB98b,SAAQuy3B,qBAAqBz1b,EAAQ,QACrCw2b,SAASx2b,EAAQ,OAExB82P,GAAOx9R,QAAU,CAACq8d,QAAOrtvB,WAAUmtvB,oBAAmBvy3B,SAAQiz3B,QAAOK,2BCJrE,MAAO/ivB,gBAAegjvB,uBAAuBz2b,EAAQ,OAErD82P,GAAOx9R,QAAU,CAAC7lR,gBAAegjvB,yCCPjC,MAAO7xgC,mBAAmBo7kB,EAAQ,OAC5B59V,EAAQ49V,EAAQ,QACf61b,cAAc71b,EAAQ,OACtBm1b,MAAK5y8B,OAAOy9gB,EAAQ,OACrBl5e,EAAKk5e,EAAQ,OACnBA,EAAQ,OACRA,EAAQ,OAQR,gBAAkCp7kB,EAM9BW,KAAK1H,GACD,MAAM,IAAI8S,MAAO,qBAAoB9S,iDAGzC64gC,WAAW74gC,GACP6b,MAAMnU,KAAK1H,IA8LnBi50B,GAAOx9R,QAAU,CAACm9d,sBAAqBhjvB,cArLvC,QASIz5R,YAAY4lgC,EAAcrsuB,GAAc,GACpCr5R,KAAKy8gC,kBAAoB,IAAId,EAC7B37gC,KAAK08gC,MAAQ9v6B,EAAGosvB,QAAQ0sK,EAAc,QACtC1lgC,KAAK28gC,aAAetjvB,EAQxBujvB,SAAS35+B,GACa,mBAAPA,IAGXjjC,KAAK68gC,UAAY55+B,GAerBh4B,OAAOuuR,GACH,IAAI3mR,EAAM7S,KAAK88gC,qBAAqBtjvB,GACpC,GAAIx5R,KAAKy8gC,kBAAkBM,YAAYlqgC,GACnC,OAAO7S,KAAKy8gC,kBAAkBT,SAASnpgC,GAE3C,MAAM0Q,EAAU,IAAIg5/B,EAAoB/ivB,EAASx5R,KAAK08gC,QACtD,YAAKD,kBAAkBjn9B,IAAI3iD,EAAK0Q,GACzBA,EAmBXq7J,OAAO46G,EAAUC,GACb,MAAM5mR,EAAM7S,KAAK88gC,qBAAqBtjvB,GAChCwjvB,EAAUh9gC,KAAKi9gC,WAAWpqgC,GAC1BqqgC,EAAYl9gC,KAAKm9gC,iBAAiBtqgC,GACxC,IAAI69G,GAAU,EAkBd,GAjBA1wH,KAAK08gC,MAAQ9v6B,EAAGosvB,QAAQh51B,KAAK08gC,MAAOU,IAChC,MAAMhr9B,EAAWonO,EAASx5R,KAAK08gC,OACzBl1gC,EAAegyR,EAAS4jvB,GACxBnlzB,EAAWwhE,EAASjyR,GACrBxH,KAAK28gC,eACFz0xB,EAAM91L,EAAU6lK,GAKnB+kzB,EAGD308B,EAAI+08B,EAAOJ,EAAS/kzB,GAFpBmlzB,EAAQnlzB,EALJvnG,GAAU,IAWlBA,EAAS,CACqB,mBAAnB1wH,KAAK68gC,WACZ78gC,KAAK68gC,UAAU78gC,KAAK08gC,OAIxB,UAAWW,KAAex3gC,OAAOrC,KAAK05gC,GAAY,CAC9C,MAAMF,EAAUK,EAAYl0xB,WAAW,SAAWk0xB,EAAYhr9B,QAAQ,QAAS,IAC3D,SAAhBgr9B,EAAyB,GAAKA,EAC5Bj/a,EAAW8+a,EAAUG,GAK3Bj/a,EAASo+a,WAJJQ,EAIkB/B,EAAIj7gC,KAAK08gC,MAAOM,GAHZh9gC,KAAK08gC,SAQ5CS,iBAAiBtqgC,GACb,MAAM6pB,EAAM,GACN4g/B,EAAet9gC,KAAKy8gC,kBAAkB144B,KAAKt5E,QAAQ97C,KACjDA,EAAEi6P,OAAO/1P,KAGNA,EAAI9M,QAAU4I,EAAE5I,OACnB8M,EAAIk2D,MAAMp6D,GAAGmsD,iBAAiBquL,WAAW,KACzCx6O,EAAEo6D,MAAMl2D,GAAKioD,iBAAiBquL,WAAW,OAEjD,UAAWk0xB,KAAeC,EAAc,CACpC,MAAMl/a,EAAWp+lB,KAAKy8gC,kBAAkBT,SAASqB,GAC7Cj/a,IACA1hkB,EAAI2g/B,GAAej/a,GAG3B,OAAO1hkB,EAGXog/B,qBAAqBtjvB,GACjB,IAAI5oR,EAAM4oR,EAASzuR,WAEnB,OADiB6F,EAAIyjD,SAAS,OAAUzjD,EAAIyjD,SAAS,YAAezjD,EAAIyjD,SAAS,MAASzjD,EAAIyjD,SAAS,KACtDr0D,KAAKu9gC,qBAAqB3sgC,GAAzD5Q,KAAKw9gC,mBAAmB5sgC,GAG9C4sgC,mBAAmB5sgC,GACf,MAAMiC,EAAMjC,EAAIm4D,MAAM,MACjByqF,UAAU,GACVzqF,MAAM,KACNyqF,UAAU,GACf,OAAOxzJ,KAAKy9gC,SAAS5qgC,GAGzB0qgC,qBAAqB3sgC,GAEjBA,GADAA,EAAMA,EAAIm4D,MAAM,KAAKyqF,UAAU,IACrBzqF,MAAM,KAAKyqF,UAAU,GAE/B,MAAMpgH,GADNxiC,EAAM5Q,KAAK09gC,qBAAqB9sgC,IAClB8tO,KAAK,KACd31K,MAAM,WACNo9G,OAAO,CAACz9K,EAAQO,IAAMP,EAAOi1gC,OAAO10gC,GAAI,IACxC8/D,MAAM,KACNo9G,OAAO,CAACz9K,EAAQO,IAAMP,EAAOi1gC,OAAO10gC,GAAI,IACxC8/D,MAAM,KACX,OAAO/oE,KAAKy9gC,SAASrq+B,EAAE+yI,OAAO,CAACz9K,EAAQO,IAAMP,EAAOi1gC,OAAO10gC,EAAG,KAAM,KAGxEy0gC,qBAAqB9sgC,GACjB,OAAIA,EAAIyjD,SAAS,cAEbzjD,EAAM,UAAYA,EAAIm4D,MAAM,WACvByqF,UAAU,IAEZ5iJ,EAGX6sgC,SAASjkvB,GACL,MAAM3mR,EAAM2mR,EAAS5lP,WAAW,KAAO,KAClCA,WAAW,KAAM,KACjBA,WAAW,KAAO,IAClBA,WAAW,KAAM,IAChBgq+B,EAAW/qgC,EAAI61D,QAAQ,KAC7B,OAAK71D,EAAIwhD,SAAS,KAIV,QADExhD,EAAIgrgC,UAAUD,EAASpo9B,IAAI,GAAI3iD,EAAI9M,OAAO+3gC,SAASF,MAFlD,OAMfX,WAAWpqgC,GACP,OAAOA,EAAIs2O,WAAW,SAClBt2O,EAAIw/C,QAAQ,QAAS,IACb,SAARx/C,EAAiB,GAAKA,uBClNlC,MAAOutO,iBAAiB0lW,EAAQ,QACzBr/d,iBAAiBq/d,EAAQ,QACzBn0Z,iBAAiBm0Z,EAAQ,QACzBx/iB,iBAAiBw/iB,EAAQ,QACzBtpkB,WAAUI,WAAUs5O,aAAa4vV,EAAQ,MACzCpijB,QAAQoijB,EAAQ,QAChBi4b,OAAMC,cAAcl4b,EAAQ,QAC5B61b,cAAc71b,EAAQ,QAEzBm4b,oBAAmBhn5B,UAAS/8C,QAAOgk8B,OAAMzq8B,UACzC6R,aAAY647B,YAAW7j7B,eACvB8j7B,kBAAiBjjC,QAAOkjC,eAAcC,sBACtCx4b,EAAQ,QAGL21b,SAAOzy3B,SAAQuy3B,oBAAmBntvB,WAAU6tvB,QAAOK,SAASx2b,EAAQ,QACpEniT,gBAAgBmiT,EAAQ,QACxBvsT,iBAAegjvB,wBAAuBz2b,EAAQ,QAG9Cy4b,kBAAiBz4b,EAAQ,QACzB04b,cAAa14b,EAAQ,QAExB24b,eACAC,kBAAgBC,aAAWC,WAAS5o3B,OAAKD,OAAK8o3B,aAAWC,cAAYC,WACrEC,aAAWC,aAAWC,cAAYC,aAAWv2wB,UAAQw2wB,aACrDC,iBACAC,WACAC,kBACAC,WACAC,YACAC,mBACAC,gBACAC,UACAC,iBACAC,cACAC,SAAOC,QAAMC,UAAQC,SAAOC,gBAC5BC,aACAC,cACAC,kBACAC,cAAYC,UACZC,cACAC,SACAC,UACA38zB,WACAD,WACA68zB,YACAC,eACAC,oBACAC,kBACAj7b,EAAQ,QACLk7b,sBAAqBl7b,EAAQ,OAEpC82P,GAAOx9R,QAAU,CACbh/T,gBAAe35H,gBAAengF,gBAC9B1pB,WAAUJ,WAAU05O,YAAWxyN,OAAMq6+B,OAAMC,aAC3Crs1B,gBAAegq1B,aAAYqF,qBAC3BzC,iBAAeC,aAAWE,kBAC1BtwvB,WAAU6tvB,QAAOM,uBACjBvz3B,SAAQuy3B,oBAAmBE,SAAO93uB,eAAcpK,iBAAe+ivB,QAC/DmC,eACAE,aAAWC,WAAS7o3B,OAAKC,OAAK6o3B,aAAWE,WAASD,cAAYE,aAAWC,aAAWC,cAAYC,aAChGv2wB,UAAQw2wB,aACRC,iBACAC,WACAC,kBACAC,WACAC,YACAC,mBACAC,gBACAC,UACAC,iBACAC,cACAC,SAAOC,QAAMC,UAAQC,SAAOC,gBAC5BC,aACAC,cACAC,kBACAC,cAAYC,UACZC,cACAC,SACAC,UACA38zB,WACAD,WACA68zB,YACAC,eACAC,oBACAC,iBACA9C,oBAAmBhn5B,UAAS/8C,QAAOgk8B,OAAMzq8B,UACzC6R,aAAY647B,YAAW7j7B,eACvB8j7B,kBAAiBjjC,QAAOkjC,eAAcC,wCC1F1C,MACI77Q,SACAx5rB,OACA0w8B,WAAU5pxB,UACVrnL,UACA6w8B,aACAC,eACAI,UAASlo1B,OACT+n1B,UAAS/2iB,QACT42iB,QACAxzb,EAAQ,QACLozb,cAAcpzb,EAAQ,OAQvBn0Z,EAAgB9rL,OAAO6+e,OAAO,CAChCu8hB,IAAK,MACLC,KAAM,SAqlCV,WAAmBj3+B,EAAOjd,EAAOsd,GAC7B,IAAI1mB,GAAQ,EACRmkB,EAAIkC,EAAMlkC,OAEVinB,EAAQ,IACRA,GAASA,EAAQ+a,EAAI,EAAKA,EAAI/a,IAElCsd,EAAMA,EAAMvC,EAAIA,EAAIuC,GACV,IACNA,GAAOvC,GAEXA,EAAI/a,EAAQsd,EAAM,EAAMA,EAAMtd,IAAW,EACzCA,KAAW,EAEX,MAAMza,EAASjE,MAAMy5B,GACrB,OAASnkB,EAAQmkB,GACbx1B,EAAOqR,GAASqmB,EAAMrmB,EAAQoJ,GAElC,OAAOza,EA5kCXjE,MAAM+R,UAAU6/C,MAAQ,WACpB,OAAOlgE,KAAK+F,QAqBhBuI,MAAM+R,UAAU21I,IAAM,SAAUmr3B,GAC5B,OAAO3H,EAAax5gC,KAAMmhhC,EAAc,IAqB5C7ygC,MAAM+R,UAAU01I,IAAM,SAAUor3B,GAC5B,OAAO3H,EAAax5gC,KAAMmhhC,EAAc,IAmB5C7ygC,MAAM+R,UAAUsyM,KAAO,SAAUwuzB,GAC7B,OAAO3H,EAAax5gC,KAAMmhhC,EAAc,IAmB5C7ygC,MAAM+R,UAAUk7L,IAAM,SAAU4l0B,GAC5B,OAAO3H,EAAax5gC,KAAMmhhC,EAAc,IAuB5C7ygC,MAAM+R,UAAUm1C,IAAM,SAAU9gD,GAC5B,YAAKjP,KAAKiP,GACH1U,MAyBXsO,MAAM+R,UAAUukD,eAAiB,SAAUlwD,GACvC,OAAI1U,KAAK8f,QAAQpL,GAAW,GACxB1U,KAAKyF,KAAKiP,GAEP1U,MAkBXsO,MAAM+R,UAAU8lK,OAAS,SAAUi71B,EAAS3hnB,GACxC,UAAW/qZ,KAAW1U,KAClBy/Z,EAAU2hnB,EAAQ3hnB,EAAS/qZ,GAE/B,OAAO+qZ,GAuBXnxZ,MAAM+R,UAAUk1C,SAAW,SAAUsT,GACjC,UAAWxhB,KAAMwhB,EACb7oE,KAAKyF,KAAK4hD,GAEd,OAAOrnD,MAyBXsO,MAAM+R,UAAUqkD,oBAAsB,SAAUmE,GAC5C,UAAWxhB,KAAMwhB,EACb7oE,KAAK4kE,eAAevd,GAExB,OAAOrnD,MAsBXsO,MAAM+R,UAAU6nJ,MAAQ,WACpB,YAAKpkJ,OAAO,EAAG9jB,KAAK+F,QACb/F,MA8BXsO,MAAM+R,UAAUg0C,SAAW,SAAU3/C,GACjC,OAAO1U,KAAK8f,QAAQpL,IAAY,GAAW1U,KAAKk7D,IAAIjyD,GAC/B,iBAANA,GAAwB,OAANA,GACE,mBAAhBA,EAAE2/P,OACF3/P,EAAE2/P,OAAU/iP,KAAK5c,EAAjBA,CAAoByL,GAG5BzL,IAAMyL,IAuBrBpG,MAAM+R,UAAUkjP,KAAO,WACnB,OAAOvjQ,KAAK2F,IAAIgE,GAAKA,IAiBzB2E,MAAM+R,UAAUmwQ,OAAS,SAAU77J,GAC/B,OAAO30H,KAAKk7D,IAAIy5D,IAuBpBrmH,MAAM+R,UAAU4oD,KAAO,SAAU0rD,GAC7B,OAAO1rD,EAAKjpE,KAAM20H,IAuBtBrmH,MAAM+R,UAAUs5/B,SAAW,SAAUhl5B,GACjC,OAAOgl5B,EAAS35gC,KAAM20H,IAAc,MAuBxCrmH,MAAM+R,UAAUghD,UAAY,SAAUszD,GAClC,OAAO1rD,EAAKjpE,KAAM20H,GAAW,IAuBjCrmH,MAAM+R,UAAUoqC,QAAU,SAAUkqE,GAChC,MAAM/jH,EAAM,GACZ,QAASjC,EAAI,EAAGA,EAAI3O,KAAK+F,OAAQ4I,IACzBgmH,EAAU30H,KAAK2O,GAAIA,EAAG3O,OACtB4Q,EAAInL,KAAKzF,KAAK2O,IAGtB,OAAOiC,GAyBXtC,MAAM+R,UAAUyqR,OAAS,SAAUlnR,EAAOlP,GACtC,OAAO6kgC,EAAWv5gC,KAAM4jB,EAAO,CAAClP,KAgBpCpG,MAAM+R,UAAUghgC,YAAc,SAAUz9/B,EAAOilD,GAC3C,OAAO0w8B,EAAWv5gC,KAAM4jB,EAAOilD,IA0BnCv6D,MAAM+R,UAAUqoD,QAAU,SAAUh0D,EAASyt1B,GACzC,IAAIvx1B,EACJ,OACIA,EADAux1B,EACMz5xB,EAAQ1oE,KAAM0U,EAASyt1B,GAEvBz5xB,EAAQ1oE,KAAM0U,GAEjB9D,GAeXtC,MAAM+R,UAAU2gD,OAAS,SAAUtsD,GAC/B,MAAM9D,EAAM6ogC,EAAQz5gC,KAAM,CAAC0U,IAC3B,YAAKwzJ,QACLloK,KAAKu1D,SAAS3kD,GACP5Q,MAiBXsO,MAAM+R,UAAU49J,UAAY,SAAU18J,GAClC,MAAM3Q,EAAM6xvB,EAAOziwB,KAAM2O,GAAK4S,EAAM5S,IAAI,GACxC,YAAKu5J,QACLloK,KAAKu1D,SAAS3kD,GACP5Q,MAeXsO,MAAM+R,UAAUihD,SAAW,SAAU19C,GACjC,OAAIA,GAAS5jB,KAAK+F,QAAU6d,EAAQ,GAGpC5jB,KAAK8jB,OAAOF,EAAO,GAFR5jB,MAmBfsO,MAAM+R,UAAUihgC,YAAc,SAAUz48B,GACpC,MAAMj4D,EAAM6ogC,EAAQz5gC,KAAM6oE,GAC1B,YAAKq/F,QACLloK,KAAKu1D,SAAS3kD,GACP5Q,MAcXsO,MAAM+R,UAAUu5/B,QAAU,WACtB,OAAOA,EAAQ55gC,OAmBnBsO,MAAM+R,UAAUqxK,KAAO,SAAUs6G,GAC7B,MAAM7hP,EAAK6hP,GAAQ,MACnB,IAAIlyH,EAAS95K,KACR8Z,KAAK,CAACqY,EAAGD,IAAMC,EAAID,GAAI,EAAKC,EAAID,EAAI,EAAI,GAC7C,MAAU,QAANi4B,IACA2vH,EAAS95K,KACJ8Z,KAAK,CAACqY,EAAGD,IAAMC,EAAID,EAAI,EAAIC,EAAID,GAAI,EAAK,IAE1C4nJ,GAkHXxrK,MAAM+R,UAAUi2K,OAAS,SAAU9yL,EAAMyt2B,GACrC,IAAKA,EAAQ,CACTA,EAAS,GACT,QAASti2B,EAAI,EAAGA,EAAInL,EAAKuC,OAAQ4I,IAC7Bsi2B,EAAOxr2B,KAAKksL,EAAcsv1B,KAGlC,MAAMM,EAAgB/9gC,EAAKuC,OAASkr2B,EAAOlr2B,OAC3C,GAAIw7gC,EAAgB,EAChB,QAAS5ygC,EAAI,EAAGA,EAAI4ygC,EAAe5ygC,IAC/Bsi2B,EAAOxr2B,KAAKksL,EAAcsv1B,KAGlC,OAAIM,EAAgB,IAChBtwK,EAASA,EAAOri2B,MAAM,EAAGpL,EAAKuC,OAAS,IAEpC2rL,EAAK1xL,KAAMwD,EAAMyt2B,EAAOnoyB,QAAQ3e,GAAKA,IAAMwnI,EAAcuv1B,QAsBpE5ygC,MAAM+R,UAAUmzI,UAAY,SAAU5vI,GAClC,OAAO5jB,KAAK4jB,IAAU,MAyB1BtV,MAAM+R,UAAU66C,IAAM,SAAUy5D,GAC5B,MAAyB,mBAAdA,EACA30H,KAAK+F,OAAO20gC,QAAQ,GAGhB,MADH16gC,KAAKipE,KAAK0rD,IA+B1BrmH,MAAM+R,UAAUy6C,eAAiB,SAAU65D,EAAWvrD,GAClD,OAAK8v8B,EAAWvk5B,GAGT1rD,EAAKjpE,KAAM20H,IAAevrD,GAAY,KAFlCppE,KAAK,IAAOopE,GAAY,MAyBvC96D,MAAM+R,UAAUmhgC,cAAgB,SAAU7s5B,GACtC,OAAOgl5B,EAAS35gC,KAAM20H,GAAW,IAiBrCrmH,MAAM+R,UAAUkpM,WAAa,SAAU50F,GACnC,QAAShmH,EAAI,EAAGA,EAAI3O,KAAK+F,OAAQ4I,IAE7B,IAAKgmH,EADQ30H,KAAK2O,GACGA,EAAG3O,MACpB,OAAO,EAGf,OAAO,GAqBXsO,MAAM+R,UAAU4gD,cAAgB,SAAU0zD,EAAWvrD,GACjD,OAAK8v8B,EAAWvk5B,GAGTgl5B,EAAS35gC,KAAM20H,IAAevrD,GAAY,KAFtCppE,KAAKA,KAAK+F,OAAO,IAAOqjE,GAAY,MAwBnD96D,MAAM+R,UAAU0vO,QAAU,SAAUp7H,GAChC,OAAOo7H,EAAQ/vP,KAAM20H,IAqBzBrmH,MAAM+R,UAAUohgC,SAAW,SAAU9s5B,GACjC,OAAO9uH,OAAOrC,KAAKusP,EAAQ/vP,KAAM20H,KAuBrCrmH,MAAM+R,UAAUyoD,QAAU,SAAU448B,GAChC,MAAMpt7B,EAAMt0F,KAAOA,KAAK+F,OAAS,EAC3B6K,EAAM,IAAItC,MAAMgmF,GACtB,QAAS3lF,EAAI,EAAGA,EAAI2lF,EAAK3lF,IAErBiC,EAAIjC,GAAK+ygC,EADE1hhC,KAAK2O,GACWA,EAAG3O,MAElC,OAAO4Q,GAiBXtC,MAAM+R,UAAUgyC,QAAU,SAAUsiE,EAAW3hH,EAAMuwgB,GAAQ,GACzD,MAAM3ygB,EAAM5Q,KACN6oF,EAAM7oF,KAAKqhE,UAAUszD,GAC3B,OAAI9rC,EAAI847B,QAAQ,KACE,IAAVp+f,GACA3ygB,EAAI4kD,IAAIxiD,GAELpC,IAEXA,EAAIi4E,GAAO71E,EACJpC,IAeXtC,MAAM+R,UAAUkzI,KAAO,SAAU20M,GAC7B,OAAOloW,KAAKynB,KAAKygV,GAAa,MAgBlC55V,MAAM+R,UAAUuhgC,QAAU,SAASpv9B,EAAOwwG,GACtC,UAAW37G,KAAMmL,EACTwwG,EAAM37G,IACNrnD,KAAKyF,KAAK4hD,GAGlB,OAAOrnD,MAkBXsO,MAAM+R,UAAUwhgC,KAAO,SAASj+/B,GAC5B,IAAIyjC,EAAKrnD,KAAKwzJ,UAAU5vI,GACxB,OAAIA,EAAQ5jB,KAAK+F,OAAO,IAEpBshD,EAAKrnD,KAAKwzJ,UADV5vI,EAAQ5jB,KAAK+F,OAAO,IAGpB6d,EAAQ,IAERyjC,EAAKrnD,KAAKwzJ,UADV5vI,EAAQ,IAGZ5jB,KAAK8jB,OAAOF,EAAO,GACZyjC,GA2CX/4C,MAAM+R,UAAUyhgC,MAAQ,SAAU9jN,GAC9B,GAAIA,EAAY,EACZ,MAAO,CAACh+zB,MAEZ,MAAM+nC,EAAI/nC,KAAK+F,OACTwM,EAASjE,MAAMpB,KAAKqB,KAAKw5B,EAAIi2xB,IACnC,IAAIp6yB,EAAQ,EACRg+0B,EAAW,EAEf,KAAOh+0B,EAAQmkB,GACXx1B,EAAOqv1B,KAAc0R,EAAUtz2B,KAAM4jB,EAAQA,GAASo6yB,GAE1D,OAAOzrzB,GAeXjE,MAAM+R,UAAU8hP,OAAS,SAAUl/N,GAC/B,MAAMryB,EAAM,GACZ,QAASjC,EAAI,EAAGA,EAAI3O,KAAK+F,OAAQ4I,IAAK,CAClC,GAAkB,mBAAPs0B,GAEP,GADcryB,EAAIq4D,KAAK76B,GAAKnL,EAAGmL,EAAGpuC,KAAK2O,KAEnC,iBAGAiC,EAAIyjD,SAASr0D,KAAK2O,IAClB,SAGRiC,EAAI4kD,IAAIx1D,KAAK2O,IAEjB,OAAOiC,GAwBXtC,MAAM+R,UAAU0hgC,WAAa,SAAU9++B,GACnC,MAAMl9B,EAAS/F,KAAK+F,OACpB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAM03B,EAAUrmC,KAAK2O,GACftD,EAAOrL,KAAK2O,EAAE,GACpB,IAAKtD,IAASg7B,EACV,MAEJpD,EAAGoD,EAASh7B,KAmBpBiD,MAAM+R,UAAUo5/B,QAAU,SAAU1ghB,EAAS91d,GACzC,MAAMl9B,EAAS/F,KAAK+F,OACpB,QAAS4I,EAAI,EAAGA,EAAI5I,EAAQ4I,IACpBoqf,EAAQ1kc,SAAS1lD,IAGrBs0B,EAAGjjC,KAAK2O,KA2BhBL,MAAM+R,UAAUi5/B,KAAO,SAAU9h7B,KACxBA,GAASA,EAAQ,KAClBA,EAAQ,kBAEZ,MAAMjlF,EAAS,GACf+mgC,SAAKt5gC,KAAMw3F,EAAO,EAAGjlF,GACdA,GAuBXjE,MAAM+R,UAAU2hgC,KAAO,SAAUj8gC,GAC7B,IAAI8y2B,EAAY742B,KAAK+F,OACrBA,OACO28d,EAAM1ie,MADb+F,EAAS8y2B,EAAY9y2B,GACO,EAAI,EAAIA,EAAQ8y2B,IAuBhDvq2B,MAAM+R,UAAU8oU,KAAO,SAAUpjV,GAC7B,OAAO28d,EAAM1ie,KAAM,EAAG+F,EAAS,EAAI,EAAIA,IAG3C620B,GAAOx9R,QAAU,CAACztX,mCCt0ClB,MAAOA,iBAAiBm0Z,EAAQ,OAEhC82P,GAAOx9R,QAAU,CAACztX,kCCPlB,MAAOos1B,QAAQj4b,EAAQ,OACvBA,EAAQ,OA6KR82P,GAAOx9R,QAAU,CAAC4+d,WApKZA,MAAN,QACIl+gC,cACIE,KAAKu0a,OAAS,GACdv0a,KAAKi6hB,UAAY,EASjByoO,aACA,OAAO1iwB,KAAKu0a,OAAOxua,OASnB+iF,eACA,OAAO9oF,KAAKi6hB,UAMhBgof,cACIjihC,KAAKi6hB,UAAY,EAUrBiof,UAAUr57B,GAEF7oF,KAAKi6hB,UADLj6hB,KAAK0iwB,OAAS75qB,EACG7oF,KAAK0iwB,OAGtB75qB,EAAM,EACW,EAGJA,EASrBs57B,MAAMx+gC,GACF,UAAWuuB,KAAKvuB,EACZ3D,KAAKoihC,WAAWlw/B,GAEpB,OAAOvuB,EAAMoC,OASjBs8gC,UAAU1+gC,GACN3D,KAAKoihC,WAAWz+gC,GAUpB2+gC,KAAKz57B,EAAKyL,GACNt0F,KAAKi6hB,UAAYpxc,GAAO,EACxB,IAAI75B,EAAOslC,GAAOt0F,KAAKu0a,OAAOxua,OAC1BipD,EAAOhvD,KAAKu0a,OAAOxua,SACnBipD,EAAOhvD,KAAKu0a,OAAOxua,QAEvB,MAAM22B,EAAM,GACZ,QAAS/tB,EAAI,EAAGA,EAAIqgD,EAAMrgD,IAAK,CAC3B,MAAMujB,EAAIlyB,KAAKuihC,aACVrw/B,GAGLwK,EAAI84B,IAAItjC,EAAEla,OAEd,OAAO0kB,EAUX8l/B,SAAS357B,GACL,YAAKoxc,UAAYpxc,GAAO,EACjB7oF,KAAKuihC,YAAYvqgC,MAQ5B2rB,WACI,OAAO,IAAI+9H,aAAcC,OAAO,IAAIr/I,WAAWtiB,KAAKu0a,OAAOzrW,QAAQn6D,GAAKA,EAAEqJ,SAG9EoqgC,WAAWlw/B,GACPlyB,KAAKu0a,OAAOv0a,KAAKi6hB,WAAa/ngB,EAC9BlyB,KAAKi6hB,YAGTsof,YACI,MAAMrw/B,EAAIlyB,KAAKu0a,OAAO/gR,UAAUxzJ,KAAKi6hB,WACrC,YAAKA,YACE/ngB,GAaf8r/B,SAAWyE,eAAkBlggC,IACzB,MAAM3R,EAAM,IAAIotgC,EACV3vgC,EAAM,GACZ,WAAImqK,aAAcF,OAAO/1J,GAAK3b,QAAQ+H,GAAKN,EAAImnD,IAAI,IAAIuo9B,EAAKpvgC,KAC5DiC,EAAIuxgC,MAAM9zgC,GACHuC,GAYXotgC,EAAW0E,gBAAmB/+gC,IAC1B,MAAMiN,EAAM,IAAIotgC,EAChBptgC,SAAIuxgC,MAAMx+gC,EAAMmlE,QAAQn6D,GAAK,IAAIovgC,EAAKpvgC,KAC/BiC,GAjKLotgC,yBCVNl4b,EAAQ,OAqCR82P,GAAOx9R,QAAU,CAAC2+d,KA9BlB,QAWIj+gC,YAAY6D,GACR3D,KAAKu0a,OAAS5wa,EAAMg/gC,MAAM,EAAG,KAa7B3qgC,YACA,OAAOhY,KAAKu0a,4BC3BpB,MAAOwpmB,QAAQj4b,EAAQ,QAChBk4b,cAAcl4b,EAAQ,MAE7B82P,GAAOx9R,QAAU,CAAC2+d,OAAMC,gCCTxB,MAAOxhgC,YAAYspkB,EAAQ,OAgM3B82P,GAAOx9R,QAAU,CAAClpT,UAzLlB,QAaQ0sxB,YACA,OAAO5ihC,KAAKgqX,MAeZtmM,UACA,OAAO1jL,KAAKsqC,IAchBxqC,YAAYkqX,EAAOv8O,GACf,IAAKu8O,EACD,MAAM,IAAIvzW,MAAM,kCAEpB,IAAKg3H,EACD,MAAM,IAAIh3H,MAAM,+BAEpB,GAAIuzW,EAAMz5F,QAAQ9iJ,GACd,MAAM,IAAIh3H,MAAM,8CAEpBzW,KAAKgqX,MAAQA,EACbhqX,KAAKsqC,IAAMmjG,EA4Bf2oH,SAASxuL,GACL,OAAO5nE,KAAK6ihC,KAAKj78B,EAAMg78B,QAAU5ihC,KAAK6ihC,KAAKj78B,EAAM87G,MAC5C1jL,KAAK6oQ,SAASjhM,EAAMg78B,QAAU5ihC,KAAKuwR,QAAQ3oN,EAAM87G,KAqB1Dm/1B,KAAKl/gC,GACD,OAAQ3D,KAAK6oQ,SAASllQ,KAAW3D,KAAKuwR,QAAQ5sR,GAqBlDklQ,SAASllQ,GACL,OAAOA,EAAMklQ,SAAS7oQ,KAAKgqX,OAqB/Bz5F,QAAQ5sR,GACJ,OAAOA,EAAM4sR,QAAQvwR,KAAKsqC,KAe9B3G,SAASwv1B,GACL,MAAQ,IAAGnz3B,KAAK4ihC,MAAMj/+B,SAASwv1B,SAAWnz3B,KAAK0jL,IAAI//I,SAASwv1B,MAahE2vJ,cACI,OAAOtmgC,EAASumgC,iBAAiB/ihC,KAAKsqC,IAAIxtB,kBAAoB9c,KAAKgqX,MAAMltW,wCC5LjF,MAAOsjO,iBAAiB0lW,EAAQ,OAC1Bk9b,EAAQl9b,EAAQ,QACftpkB,YAAYspkB,EAAQ,QACpBr/d,iBAAiBq/d,EAAQ,QACzBo0b,oBAAoBp0b,EAAQ,OAEnC,WAA4Bl6N,EAAM1yW,GAC9B,IAAKA,EAAK25H,SAAkC,qBAAvB35H,EAAK+u3B,cACtB,MAAM,IAAIxx3B,MAAM,YAAcm1W,EAAO,mBAI7C,WAAwB1yW,GACpB,OAAO8pgC,EAAMpmgC,SAASu/2B,WAAW,CAC7Bzg3B,KAAMxC,EAAKwC,KACXC,MAAOzC,EAAKyC,MACZnB,IAAKtB,EAAKsB,IACVoB,KAAM1C,EAAK0C,KACXuxC,OAAQj0C,EAAKi0C,OACbrxC,OAAQ5C,EAAK4C,OACb+ha,YAAa3ka,EAAK2ka,YAClBjyD,KAAM1yW,EAAK0yW,OA4tBnBgxd,GAAOx9R,QAAU,CAACxiiB,SAntBZA,MAAN,QAOQmyJ,WACA,OAAO/uK,KAAKijhC,MAAMvngC,KASlBwngC,YACA,OAAOljhC,KAAKijhC,MAAMtngC,MASlBovJ,UACA,OAAO/qK,KAAKijhC,MAAMzogC,IASlB0C,WACA,OAAOld,KAAKijhC,MAAMrngC,KASlBwB,aACA,OAAOpd,KAAKijhC,MAAM919B,OASlB7vC,aACA,OAAOtd,KAAKijhC,MAAMnngC,OASlB0B,kBACA,OAAOxd,KAAKijhC,MAAMplmB,YASlB1hP,UACA,MAAMvrL,EAAMuygC,EAAenjhC,KAAKijhC,OAAO54I,QACvC,OAAO,IAAIzt3B,EACP,MACAhM,EAAI8K,KACJ9K,EAAI+K,MACJ/K,EAAI4J,IACJ5J,EAAIgL,KACJhL,EAAIu8C,OACJv8C,EAAIkL,OACJlL,EAAIita,aACJ,GASJulmB,uBACA,OAAOpjhC,KAAKijhC,MAAM7w/B,OASlBwj2B,WACA,OAAO513B,KAAKijhC,MAAMntxB,SASlButxB,gBACA,OAAOrjhC,KAAKijhC,MAAMz4b,QASlB84b,gBACA,OAAOtjhC,KAAKijhC,MAAMhuJ,QASlBsuJ,iBACA,OAAOvjhC,KAAKijhC,MAAMp0I,WASlB20I,kBACA,OAAOxjhC,KAAKijhC,MAAM1zI,YASlBk0I,kBACA,OAAOzjhC,KAAKijhC,MAAM54b,QASlBq5b,qBACA,OAAO1jhC,KAAKijhC,MAAMpxnB,WASlB94Y,WACA,OAAO,IAAI6D,EAAS5c,KAAK413B,KAAM513B,KAAK+uK,KAAM/uK,KAAKkjhC,MAAOljhC,KAAK+qK,IAAK,EAAG,EAAG,EAAG,GASzE442B,gBACA,OAAO,IAAInngC,EAASxc,KAAKkd,KAAMld,KAAKod,OAAQpd,KAAKsd,OAAQtd,KAAKwd,YAAa,GAS3E6lK,YACA,OAAOrjL,KAAKijhC,MAAMpw4B,QAyBtB/yI,YAAY8rX,EAAMlwW,EAAMC,EAAOnB,EAAKoB,EAAMuxC,EAAQrxC,EAAQ+ha,EAAa+lmB,GAAe,GAClF5jhC,KAAKijhC,MAAQD,EAAMpmgC,SAASig3B,MACxBp2wB,EAAcq15B,cAAclwpB,KAC5BA,EAAO,OAEX,MAAMi4pB,GAA6B,IAAjBD,GAA0BhogC,GAAQ,GAAKuxC,GAAU,GAAKrxC,GAAU,GAAK+ha,GAAe,EACtG79a,KAAKijhC,MAAQD,EAAMpmgC,SAASig3B,IACxBnh3B,GAAQ,EAAIA,OAAOvW,EACnBwW,QAAgBxW,EAChBqV,QAAYrV,EACZyW,GAAQ,EAAIA,OAAOzW,EACnBgoD,GAAU,EAAIA,OAAShoD,EACvB2W,GAAU,EAAIA,OAAS3W,EACvB04a,GAAe,EAAIA,OAAc14a,GAChCkj4B,QAAQz8gB,EAAM,CAAC0+gB,cAAeu5I,IACnCC,EAAmBl4pB,EAAM5rX,KAAKijhC,OAqBlC9yvB,OAAOy7F,EAAMg4pB,GAAe,GACxB,MAAMhzgC,EAAMuygC,EAAenjhC,KAAKijhC,OAAO56I,QAAQz8gB,EAAM,CAAC0+gB,cAAes5I,IACrE,OAAO,IAAIhngC,EACPgvW,EACAh7W,EAAI8K,KACJ9K,EAAI+K,MACJ/K,EAAI4J,IACJ5J,EAAIgL,KACJhL,EAAIu8C,OACJv8C,EAAIkL,OACJlL,EAAIita,aAaZroX,IAAIkzI,GACA,YAAKu60B,MAAQjjhC,KAAKijhC,MAAMr+I,KAAK,CACzBlp3B,KAAMgtL,EAAG35B,KACTpzJ,MAAO+sL,EAAGw60B,MACV1ogC,IAAKkuL,EAAG39B,IACRnvJ,KAAM8sL,EAAGxrL,KACTiwC,OAAQu7I,EAAGtrL,OACXtB,OAAQ4sL,EAAGprL,OACXuga,YAAan1O,EAAGlrL,cAEbxd,KAeX4oQ,OAAOlgE,GACH,OAAkD,IAA3C1oM,KAAKijhC,MAAMxpgC,KAAKivL,EAAGu60B,OAAOnj/B,aAarCg++B,SAASp10B,GACL,YAAKu60B,MAAQjjhC,KAAKijhC,MAAMrzJ,MAAM,CAC1Bl02B,KAAMgtL,EAAG35B,KACTpzJ,MAAO+sL,EAAGw60B,MACV1ogC,IAAKkuL,EAAG39B,IACRnvJ,KAAM8sL,EAAGxrL,KACTiwC,OAAQu7I,EAAGtrL,OACXtB,OAAQ4sL,EAAGprL,OACXuga,YAAan1O,EAAGlrL,cAEbxd,KAaX+jhC,SAASr9zB,GACL,YAAKu8zB,MAAQjjhC,KAAKijhC,MAAMr+I,KAAK,CAACl+qB,UACvB1mN,KAaXgkhC,UAAUhvoB,GACN,YAAKiuoB,MAAQjjhC,KAAKijhC,MAAMr+I,KAAK,CAAC5vf,WACvBh1Y,KAaXikhC,QAAQ5k2B,GACJ,YAAK4j2B,MAAQjjhC,KAAKijhC,MAAMr+I,KAAK,CAACvltB,SACvBr/K,KAaXkkhC,SAAS1i2B,GACL,YAAKyh2B,MAAQjjhC,KAAKijhC,MAAMr+I,KAAK,CAACpjtB,UACvBxhL,KAaXmkhC,WAAWtogC,GACP,YAAKongC,MAAQjjhC,KAAKijhC,MAAMr+I,KAAK,CAAC/o3B,YACvB7b,KAaXokhC,WAAW3i2B,GACP,YAAKwh2B,MAAQjjhC,KAAKijhC,MAAMr+I,KAAK,CAACnjtB,YACvBzhL,KAaXqkhC,gBAAgBvk/B,GACZ,YAAKmj/B,MAAQjjhC,KAAKijhC,MAAMr+I,KAAK,CAAC9k2B,iBACvB9/B,KAeX6oQ,SAASngE,GACL,OAAO1oM,KAAKijhC,MAAMxpgC,KAAKivL,EAAGu60B,OAAOnj/B,aAAe,EAepDywP,QAAQ7nF,GACJ,OAAO1oM,KAAKijhC,MAAMxpgC,KAAKivL,EAAGu60B,OAAOnj/B,aAAe,EAgBpDwk/B,uBACI,OAAOtkhC,KAAKijhC,MAAMsB,QAiBtB5g/B,SAASwv1B,GACL,OAAOnz3B,KAAKijhC,MAAMj/I,SAAS7Q,GAAY,uBAY3CqxJ,QACI,OAAOxkhC,KAAKijhC,MAAM7+I,QAetBtn3B,gBAAgB2ngC,GAAO,GACnB,OAAOA,EACHzkhC,KAAKijhC,MAAM1+I,WACXnkpB,EAAcskyB,WAAW1khC,KAAKijhC,MAAM1+I,WAAa,KAgBzDogJ,mBACI,OAAO3khC,KAAKijhC,MAAMtpJ,WActBirJ,SACI,OAAO5khC,KAAKijhC,MAAM/4uB,SAkBtB26uB,aACI,OAAO3K,EAAiBl6gC,KAAKkjhC,MAAOljhC,KAAK+uK,OAkBjDnyJ,SAASkogC,UAAaC,GACX,IAAInogC,EACPmogC,EAAUjvxB,SACVivxB,EAAUrpgC,KACVqpgC,EAAUppgC,MACVopgC,EAAUvqgC,IACVuqgC,EAAUnpgC,KACVmpgC,EAAU539B,OACV439B,EAAUjpgC,OACVipgC,EAAUlnmB,aAoBlBjha,EAASoogC,mBAAqB,CAAC9rgC,EAAM0yW,EAAMg4pB,KACnCn95B,EAAcq15B,cAAclwpB,KAC5BA,EAAO,OAEX,MAAMh7W,EAAMoygC,EAAMpmgC,SAAS013B,WAAWp53B,EAAM,CACxC0yW,KAAMA,IACPy8gB,QAAQz8gB,EAAM,CAAC0+gB,cAAes5I,IACjCE,SAAmBl4pB,EAAMh7W,GAClBgM,EAASkogC,UAAUl0gC,IAmB9BgM,EAASqogC,cAAgB,CAACC,EAAQt5pB,KAC1BnlQ,EAAcq15B,cAAclwpB,KAC5BA,EAAO,OAEX,MAAMh7W,EAAMoygC,EAAMpmgC,SAAS4m3B,QAAQ0hJ,EAAQ,CACvCt5pB,SAEJk4pB,SAAmBl4pB,EAAMh7W,GAClBgM,EAASkogC,UAAUl0gC,IAkB9BgM,EAASmmgC,iBAAmB,CAACjj/B,EAAc8rV,KACnCnlQ,EAAcq15B,cAAclwpB,KAC5BA,EAAO,OAEX,MAAMh7W,EAAMoygC,EAAMpmgC,SAAS482B,WAAW151B,EAAc,CAChD8rV,SAEJk4pB,SAAmBl4pB,EAAMh7W,GAClBgM,EAASkogC,UAAUl0gC,IAsB9BgM,EAASuogC,iBAAoBxhhC,GACwB,kBAA1CkC,OAAOwa,UAAUtV,SAAS6oB,KAAKjwB,GAG1CiZ,EAASwogC,cAAgB,IAChBpC,EAAMpmgC,SAAS5D,MAAM88O,SAhtBxBl5O,uBCxBN,MAAOA,YAAYkpkB,EAAQ,QACpBtpkB,YAAYspkB,EAAQ,QACpB5vV,aAAa4vV,EAAQ,OAE5B82P,GAAOx9R,QAAU,CAACxiiB,WAAUJ,WAAU05O,+BCVtC,MAAOzvI,iBAAiBq/d,EAAQ,QACzBg0b,eAAeh0b,EAAQ,OAO9B,QAMQ/6a,UACA,OAAO/qK,KAAK045B,MAQZvuvB,gBAKA,OAAOnqK,KAAK045B,MAJA145B,KAAKy45B,cAAgBj84B,EAAS6ogC,mBAC/BrlhC,KAAKslhC,SAAW9ogC,EAAS+ogC,cACzBvlhC,KAAKwlhC,SAAWhpgC,EAASipgC,cACzBzlhC,KAAK0lhC,OAASlpgC,EAASmpgC,YASlCzogC,WACA,OAAOld,KAAK0lhC,OAQZt72B,iBAKA,OAAOpqK,KAAK0lhC,OAJD1lhC,KAAK045B,MAAQl84B,EAASmpgC,YACtB3lhC,KAAKwlhC,SAAWhpgC,EAASopgC,eACzB5lhC,KAAKslhC,SAAW9ogC,EAASqpgC,eACxB7lhC,KAAKy45B,cAAgBj84B,EAASspgC,oBAS1C1ogC,aACA,OAAOpd,KAAKwlhC,SAQZn72B,mBAKA,OAAOrqK,KAAKwlhC,SAJFxlhC,KAAK045B,MAAQl84B,EAASipgC,cACtBzlhC,KAAK0lhC,OAASlpgC,EAASopgC,eACvB5lhC,KAAKslhC,SAAW9ogC,EAASupgC,iBACxB/lhC,KAAKy45B,cAAgBj84B,EAASwpgC,sBASzC1ogC,aACA,OAAOtd,KAAKslhC,SAQZh72B,mBAKA,OAAOtqK,KAAKslhC,SAJFtlhC,KAAK045B,MAAQl84B,EAAS+ogC,cACtBvlhC,KAAK0lhC,OAASlpgC,EAASqpgC,eACvB7lhC,KAAKwlhC,SAAWhpgC,EAASupgC,iBACxB/lhC,KAAKy45B,cAAgBj84B,EAASypgC,sBASzCzogC,kBACA,OAAOxd,KAAKy45B,cAQZluvB,wBAKA,OAAOvqK,KAAKy45B,cAJFz45B,KAAK045B,MAAQl84B,EAAS6ogC,mBACtBrlhC,KAAK0lhC,OAASlpgC,EAASspgC,oBACvB9lhC,KAAKwlhC,SAAWhpgC,EAASwpgC,sBACzBhmhC,KAAKslhC,SAAW9ogC,EAASypgC,sBASnCt1tB,iBACA,OAAO3wT,KAAKmqK,UAAY,EAkB5BrqK,YAAY0hL,EAAO3lK,EAAS4lK,EAAS3hJ,EAAcu/I,GAC/Cr/K,KAAK045B,MAAQ,EACb145B,KAAK0lhC,OAAS,EACd1lhC,KAAKwlhC,SAAW,EAChBxlhC,KAAKslhC,SAAW,EAChBtlhC,KAAKy45B,cAAgB,EACjBp5uB,GAAQA,EAAO,IACfr/K,KAAK045B,MAAQr5uB,GAEbmC,GAASA,EAAQ,IACjBxhL,KAAK0lhC,OAASlk2B,GAEd3lK,GAAWA,EAAU,IACrB7b,KAAKwlhC,SAAW3pgC,GAEhB4lK,GAAWA,EAAU,IACrBzhL,KAAKslhC,SAAW7j2B,GAEhB3hJ,GAAgBA,EAAe,IAC/B9/B,KAAKy45B,cAAgB343B,GAa7B01B,IAAItpD,GACA,YAAKws5B,OAASxs5B,EAAS6+J,IACvB/qK,KAAK0lhC,QAAUx5gC,EAASgR,KACxBld,KAAKwlhC,UAAYt5gC,EAASkR,OAC1Bpd,KAAKslhC,UAAYp5gC,EAASoR,OAC1Btd,KAAKy45B,eAAiBvs5B,EAASsR,YACxBxd,KAcX4oQ,OAAO18P,GACH,OAAOlM,KAAKuqK,oBAAsBr+J,EAASq+J,kBAW/C272B,SACI,YAAKxtH,OAAS145B,KAAK045B,MACnB145B,KAAK0lhC,QAAU1lhC,KAAK0lhC,OACpB1lhC,KAAKwlhC,UAAYxlhC,KAAKwlhC,SACtBxlhC,KAAKslhC,UAAYtlhC,KAAKslhC,SACtBtlhC,KAAKy45B,eAAiBz45B,KAAKy45B,cACpBz45B,KAYX89gC,SAAS5xgC,GACL,YAAKws5B,OAASxs5B,EAAS6+J,IACvB/qK,KAAK0lhC,QAAUx5gC,EAASgR,KACxBld,KAAKwlhC,UAAYt5gC,EAASkR,OAC1Bpd,KAAKslhC,UAAYp5gC,EAASoR,OAC1Btd,KAAKy45B,eAAiBvs5B,EAASsR,YACxBxd,KAcX6oQ,SAAS38P,GACL,OAAOA,EAASq+J,kBAAoBvqK,KAAKuqK,kBAc7CgmH,QAAQrkR,GACJ,OAAOA,EAASq+J,kBAAoBvqK,KAAKuqK,kBAe7C5mI,SAASwv1B,GACL,OAAQ1swB,EAAcq15B,cAAc3oJ,GAAOnz3B,KAAK+qK,IAAM,EAAI,aAAe,WAAaootB,GACjF9g0B,QAAQ,IAAKryD,KAAK+qK,IAAIhgK,SAAS,KAC/BsnD,QAAQ,KAAMryD,KAAKkd,KAAKnS,SAAS,IAAIo7gC,QAAQ,EAAG,MAChD9z9B,QAAQ,KAAMryD,KAAKod,OAAOrS,SAAS,IAAIo7gC,QAAQ,EAAG,MAClD9z9B,QAAQ,KAAMryD,KAAKsd,OAAOvS,SAAS,IAAIo7gC,QAAQ,EAAG,MAClD9z9B,QAAQ,MAAOryD,KAAKwd,YAAYzS,SAAS,IAAIo7gC,QAAQ,EAAG,MACxD9z9B,QAAQ,IAAKryD,KAAKkd,KAAKnS,SAAS,KAChCsnD,QAAQ,IAAKryD,KAAKod,OAAOrS,SAAS,KAClCsnD,QAAQ,IAAKryD,KAAKsd,OAAOvS,SAAS,KAClCsnD,QAAQ,KAAMryD,KAAKwd,YAAYzS,SAAS,IAAIo7gC,QAAQ,EAAG,MACvD9z9B,QAAQ,IAAKryD,KAAKwd,YAAYzS,SAAS,MAUpDyR,EAASypgC,sBAAwB,IAQjCzpgC,EAASmpgC,YAAc,GAQvBnpgC,EAASipgC,cAAuC,GAAvBjpgC,EAASmpgC,YAQlCnpgC,EAAS+ogC,cAAyC,GAAzB/ogC,EAASipgC,cAQlCjpgC,EAAS6ogC,mBAAqB7ogC,EAAS+ogC,cAAgB/ogC,EAASypgC,sBAQhEzpgC,EAASopgC,eAAiB,GAQ1BppgC,EAASqpgC,eAA2C,GAA1BrpgC,EAASopgC,eAQnCppgC,EAASspgC,oBAAsBtpgC,EAASqpgC,eAAiBrpgC,EAASypgC,sBAQlEzpgC,EAASupgC,iBAAmBvpgC,EAASqpgC,eAAiB,GAQtDrpgC,EAASwpgC,sBAAwBxpgC,EAASupgC,iBAAmBvpgC,EAASypgC,sBAStEzpgC,EAASsogC,UAAa9B,GACX,IAAIxmgC,EACPwmgC,EAAMxh2B,OAAS,EACfwh2B,EAAMnngC,SAAW,EACjBmngC,EAAMvh2B,SAAW,EACjBuh2B,EAAMlj/B,cAAgB,EACtBkj/B,EAAM3j2B,MAAQ,GAWtB7iK,EAAS4pgC,WAAa,CAACxtgC,EAAQytgC,GAAa,KACxC,IAAI/hJ,EAAS1r3B,EAAO+nD,UACpB,OAAI0l9B,IACA/hJ,EAAS1r3B,EAAOila,cACXjla,EAAOkD,SAAWU,EAASypgC,sBAC3BrtgC,EAAOu0C,SAAW3wC,EAASwpgC,sBAC3BptgC,EAAOgD,OAASY,EAASspgC,qBAE3BtpgC,EAASumgC,iBAAiBz+I,IAWrC9n3B,EAAS8pgC,mBAAqB,CAACptgC,EAAMmtgC,GAAa,KAC9C,IAAI/hJ,EAASpr3B,EAAKynD,UAClB,OAAI0l9B,IACA/hJ,EAASpr3B,EAAKg2Y,kBACTh2Y,EAAK8zK,aAAexwK,EAASypgC,sBAC7B/sgC,EAAKqmL,aAAe/iL,EAASwpgC,sBAC7B9sgC,EAAKomL,WAAa9iL,EAASspgC,qBAE7BtpgC,EAASumgC,iBAAiBz+I,IAWrC9n3B,EAASyogC,cAAiBC,GACf1ogC,EAASsogC,UAAUhL,EAAYoL,IAU1C1ogC,EAASumgC,iBAAoBjj/B,IACzB,MAAMu/I,EAAOnyK,KAAKC,MAAM2yB,EAAetjB,EAAS6ogC,oBAC5Chm2B,EAAO,IACPv/I,GAA8Bu/I,EAAO7iK,EAAS6ogC,oBAElD,MAAM7j2B,EAAQt0K,KAAKC,MAAM2yB,EAAetjB,EAASspgC,qBAC7Ctk2B,EAAQ,IACR1hJ,GAA8B0hJ,EAAQhlK,EAASspgC,qBAEnD,MAAMjqgC,EAAU3O,KAAKC,MAAM2yB,EAAetjB,EAASwpgC,uBAC/CnqgC,EAAU,IACVikB,GAA8BjkB,EAAUW,EAASwpgC,uBAErD,MAAMlqgC,EAAS5O,KAAKC,MAAM2yB,EAAetjB,EAASypgC,uBAClD,OAAInqgC,EAAS,IACTgkB,GAA8BhkB,EAASU,EAASypgC,uBAE7C,IAAIzpgC,EAASglK,EAAO3lK,EAASC,EAAQgkB,EAAcu/I,IAU9D7iK,EAAS+pgC,YAAe9k2B,GAAYjlK,EAASumgC,iBAAyB,IAARth2B,GAS9DjlK,EAASgqgC,YAAe3qgC,GAAYW,EAASumgC,iBAAyB,IAARlngC,GAS9DW,EAASiqgC,UAAajl2B,GAAUhlK,EAASumgC,iBAAuB,KAANvh2B,GAS1DhlK,EAASkqgC,SAAYrn2B,GAAS7iK,EAASumgC,iBAAsB,MAAL1j2B,GAExDu9pB,GAAOx9R,QAAU,CAAC5iiB,6BCpflBspkB,EAAQ,OA4PR82P,GAAOx9R,QAAU,CAACu8d,WArPlB,QAaI77gC,YAAYqtlB,GACRntlB,KAAK2sI,MAAQ,GACTwgd,IACAntlB,KAAK2sI,MAAQwgd,GAcjBjthB,YACA,OAAOr6D,OAAOrC,KAAKxD,KAAK2sI,OAAO5mI,OAa/B4ghC,aACA,OAAO9ghC,OAAOQ,OAAOrG,KAAK2sI,OAa1B5I,WACA,OAAOl+H,OAAOrC,KAAKxD,KAAK2sI,OAiB5Bn3E,IAAI3iD,EAAKG,GACL,YAAK25H,MAAM95H,GAAOG,EACXhT,KAaXkoK,QACI,YAAKv7B,MAAQ,GACN3sI,KAgBXghE,OAAOnuD,GACH,cAAO7S,KAAK2sI,MAAM95H,GACX7S,KAeX+8gC,YAAYlqgC,GACR,OAAOA,KAAO7S,KAAK2sI,MAevBi64B,cAAcjjhC,GACV,OAAO3D,KAAK2mhC,OAAO7mgC,QAAQnc,IAAS,EAYxCkjhC,YACI,OAAO7mhC,KAAK2sI,MAehBqv4B,SAASnpgC,GACL,OAAO7S,KAAK2sI,MAAM95H,IAAQ,KAiB9Bi0gC,YAAYj0gC,EAAKowB,GACb,MAAMt/B,EAAQ3D,KAAK2sI,MAAM95H,IAAQ,KACjCowB,SAAGt/B,KACMA,EAiBbslE,KAAKl8D,GACD,UAAWvG,KAAKxG,KAAK2mhC,OACjB,GAAI55gC,EAAOvG,GACP,OAAOA,EAGf,OAAO,KAmBXikD,QAAQ19C,GACJ,MAAM8jD,EAAI,GACV,UAAWh+C,KAAOhN,OAAOrC,KAAKxD,KAAK2sI,OAC3B5/H,EAAO/M,KAAK2sI,MAAM95H,KAClBg+C,EAAE2E,IAAIx1D,KAAK2sI,MAAM95H,IAGzB,OAAOg+C,uBCnPf,MAAO8q9B,cAAc71b,EAAQ,MAE7B82P,GAAOx9R,QAAU,CAACu8d,gCCPlB,MAAOv7xB,iBAAiB0lW,EAAQ,QACzBs4b,mBAAmBt4b,EAAQ,OA0DlC82P,GAAOx9R,QAAU,CAAC6+d,kBAxDZA,MAAN,QACIn+gC,YAAYqsB,EAAU46/B,GAClB/mhC,KAAK8H,KAAO,oBACZ9H,KAAKmsB,SAAWA,GAAY,GAC5B,IAAI66/B,EAAWD,GAAQ,EACvB,GAAIC,EAAW,GAAK76/B,EAASpmB,OAAS,EAClC,UAAWH,KAAKumB,EAAU,CACtB,IAAKvmB,EAAEsjG,SAAS631B,IACZ,SAEJ,IAAInw7B,EAAMhL,EAAEsjG,SAAS631B,IAChBn77B,EAAEsjG,SAAS631B,IAAIkmF,UAChBr2gC,EAAM,IAAIwtgC,EAAgBh+xB,EAAcskyB,WAAW9zgC,EAAIyuI,WAAWr6I,KAAK4uC,WAAW,QAAS,OAE/Foz+B,EAAWp2gC,EAAIq2gC,UACf,MAGR,KAAID,EAAW,GAGf,KAAK76/B,EAASo9L,WAAWtgN,IACrB,IAAI2H,EAAM3H,EAAEigG,SAAS631B,IACrB,OAAKnw7B,EAAIq2gC,UACLr2gC,EAAM,IAAIwtgC,EAAgBh+xB,EAAcskyB,WAAW9zgC,EAAIyuI,WAAWr6I,KAAK4uC,WAAW,QAAS,OAExFhjC,EAAIq2gC,YAAcD,IAEzB,MAAM,IAAIvwgC,MAAO,mDAAkDuwgC,KAEvEhnhC,KAAK+g8B,IAAM,IAAIq9E,EAAgB4I,IAGnCpC,SACI,OAAS5khC,KAAK+g8B,IAAM,CAChBj57B,KAAM9H,KAAK8H,KACXqkB,SAAUnsB,KAAKmsB,SAAS28C,QAAQljE,GAAKA,EAAEg/gC,UACvC7jF,IAAK/g8B,KAAK+g8B,IAAI6jF,UACd,CACA98gC,KAAM9H,KAAK8H,KACXqkB,SAAUnsB,KAAKmsB,SAAS28C,QAAQljE,GAAKA,EAAEg/gC,YAKnD3G,SAAkBiJ,WAAa,SAAU3kgC,GACrC,OAAO07/B,EAAkBkJ,SAAS94/B,KAAKC,MAAM/L,KAGjD07/B,EAAkBkJ,SAAW,SAAUlmjB,GACnC,GAAkB,sBAAdA,EAAKn5d,KACL,MAAM,IAAI2O,MAAM,wBAA0Bwqd,EAAKn5d,KAAO,+BAE1D,OAAO,IAAIm2gC,EAAkBh9iB,EAAK90c,SAAU80c,EAAK8/d,IAAMq9E,EAAgB+I,SAASlmjB,EAAK8/d,KAAKkmF,eAAY9hhC,IArDpG84gC,mBCwBNrhM,GAAOx9R,QAAU,CAACnob,QA3BZA,MAAN,QACIn3H,YAAYopG,EAAUm2C,GAClBr/I,KAAK8H,KAAO,UACZ9H,KAAKkpG,SAAWA,EAChBlpG,KAAKq/I,WAAaA,GAAc,KAGpCul4B,SACI,MAAO,CACH98gC,KAAM9H,KAAK8H,KACXohG,SAAUlpG,KAAKkpG,SAAS076B,SACxBvl4B,WAAYr/I,KAAKq/I,aAK7BpoB,SAAQiw5B,WAAa,SAAU3kgC,GAC3B,OAAO00G,EAAQkw5B,SAAS94/B,KAAKC,MAAM/L,KAGvC00G,EAAQkw5B,SAAW,SAAUlmjB,GACzB,GAAkB,YAAdA,EAAKn5d,KACL,MAAM,IAAI2O,MAAM,wBAA0Bwqd,EAAKn5d,KAAO,qBAE1D,OAAO,IAAImvH,EAAQgqW,EAAK/3X,SAAU+3X,EAAK5hV,aAxBrCpoB,yBCAN,MAAOmn5B,kBAAiBE,qBAAoBnjC,QAAOkjC,gBAAgBv4b,EAAQ,QACpE5rgB,SAAS4rgB,EAAQ,QACjBxggB,cAAcwggB,EAAQ,QACtBo4b,QAAQp4b,EAAQ,QAChBq4b,aAAar4b,EAAQ,QACrBrygB,WAAWqygB,EAAQ,QACnBxrf,gBAAgBwrf,EAAQ,QACxBm4b,qBAAqBn4b,EAAQ,QAC7B7ud,WAAW6ud,EAAQ,OAE1B82P,GAAOx9R,QAAU,CACbg/d,kBAAiBE,qBAAoBnjC,QAAOkjC,eAC5Cnk8B,QAAOgk8B,OAAMzq8B,UAAS6R,aAAY647B,YAAW7j7B,eAC7C2j7B,oBAAmBhn5B,6BCbvB,MAAOmn5B,mBAAmBt4b,EAAQ,QAC3Bz7kB,YAAW+v/B,QAAQt0a,EAAQ,MA0ClC82P,GAAOx9R,QAAU,CAAC8+d,KAxCZA,MAAN,QACIp+gC,YAAYgpG,EAAai+6B,GACrB/mhC,KAAK8H,KAAO,aACZ9H,KAAK8oG,YAAcA,EACfi+6B,EAAO,IACP/mhC,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCnC,SACI,OAAS5khC,KAAK+g8B,IAAM,CAChBj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,YAClBi41B,IAAK/g8B,KAAK+g8B,KACV,CACAj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,aAI1B2irB,UAAUs7P,GACN/mhC,KAAK8oG,YAAc9oG,KAAK8oG,YAAYhgC,QAAQ7oD,IACxC,MAAMrP,EAAMvG,EAAU,IAAI+v/B,EAAK,QAAUp6/B,KAAK+g8B,IAAIkmF,WAAY,IAAI7sB,EAAK,QAAU2sB,GAAO9mgC,GACxF,MAAO,CAACrP,EAAIjH,EAAGiH,EAAIkjD,KAEvB9zD,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvC7I,SAAKgJ,WAAa,SAAU3kgC,GACxB,OAAO27/B,EAAKiJ,SAAS94/B,KAAKC,MAAM/L,KAGpC27/B,EAAKiJ,SAAW,SAAUlmjB,GACtB,GAAkB,eAAdA,EAAKn5d,KACL,MAAM,IAAI2O,MAAM,wBAA0Bwqd,EAAKn5d,KAAO,wBAE1D,OAAO,IAAIo2gC,EAAKj9iB,EAAKn4X,YAAam4X,EAAK8/d,IAAMq9E,EAAgB+I,SAASlmjB,EAAK8/d,KAAKkmF,eAAY9hhC,IArC1F+4gC,yBCHN,MAAOE,mBAAmBt4b,EAAQ,QAC3Bz7kB,YAAW+v/B,QAAQt0a,EAAQ,MA0ClC82P,GAAOx9R,QAAU,CAAC++d,UAxCZA,MAAN,QACIr+gC,YAAYgpG,EAAai+6B,GACrB/mhC,KAAK8H,KAAO,kBACZ9H,KAAK8oG,YAAcA,EACfi+6B,EAAO,IACP/mhC,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCnC,SACI,OAAS5khC,KAAK+g8B,IAAM,CAChBj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,YAClBi41B,IAAK/g8B,KAAK+g8B,KACV,CACAj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,aAI1B2irB,UAAUs7P,GACN/mhC,KAAK8oG,YAAc9oG,KAAK8oG,YAAYhgC,QAAQ/gC,GAAKA,EAAE+gC,QAAQ7oD,IACvD,MAAMrP,EAAMvG,EAAU,IAAI+v/B,EAAK,QAAUp6/B,KAAK+g8B,IAAIkmF,WAAY,IAAI7sB,EAAK,QAAU2sB,GAAO9mgC,GACxF,MAAO,CAACrP,EAAIjH,EAAGiH,EAAIkjD,MAEvB9zD,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvC5I,SAAU+I,WAAa,SAAU3kgC,GAC7B,OAAO47/B,EAAUgJ,SAAS94/B,KAAKC,MAAM/L,KAGzC47/B,EAAUgJ,SAAW,SAAUlmjB,GAC3B,GAAkB,oBAAdA,EAAKn5d,KACL,MAAM,IAAI2O,MAAM,wBAA0Bwqd,EAAKn5d,KAAO,6BAE1D,OAAO,IAAIq2gC,EAAUl9iB,EAAKn4X,YAAam4X,EAAK8/d,IAAMq9E,EAAgB+I,SAASlmjB,EAAK8/d,KAAKkmF,eAAY9hhC,IArC/Fg5gC,yBCHN,MAAOC,mBAAmBt4b,EAAQ,QAC3Bz7kB,YAAW+v/B,QAAQt0a,EAAQ,MA0ClC82P,GAAOx9R,QAAU,CAAC95d,WAxCZA,MAAN,QACIxlF,YAAYgpG,EAAai+6B,GACrB/mhC,KAAK8H,KAAO,aACZ9H,KAAK8oG,YAAcA,EACfi+6B,EAAO,IACP/mhC,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCnC,SACI,OAAS5khC,KAAK+g8B,IAAM,CAChBj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,YAClBi41B,IAAK/g8B,KAAK+g8B,KACV,CACAj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,aAI1B2irB,UAAUs7P,GACN/mhC,KAAK8oG,YAAc9oG,KAAK8oG,YAAYhgC,QAAQ7oD,IACxC,MAAMrP,EAAMvG,EAAU,IAAI+v/B,EAAK,QAAUp6/B,KAAK+g8B,IAAIkmF,WAAY,IAAI7sB,EAAK,QAAU2sB,GAAO9mgC,GACxF,MAAO,CAACrP,EAAIjH,EAAGiH,EAAIkjD,KAEvB9zD,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCzh8B,SAAW4h8B,WAAa,SAAU3kgC,GAC9B,OAAO+iE,EAAW6h8B,SAAS94/B,KAAKC,MAAM/L,KAG1C+iE,EAAW6h8B,SAAW,SAAUlmjB,GAC5B,GAAkB,eAAdA,EAAKn5d,KACL,MAAM,IAAI2O,MAAM,wBAA0Bwqd,EAAKn5d,KAAO,wBAE1D,OAAO,IAAIw9E,EAAW27Y,EAAKn4X,YAAam4X,EAAK8/d,IAAMq9E,EAAgB+I,SAASlmjB,EAAK8/d,KAAKkmF,eAAY9hhC,IArChGmgF,yBCHN,MAAO847B,mBAAmBt4b,EAAQ,QAC3Bz7kB,YAAW+v/B,QAAQt0a,EAAQ,MA0ClC82P,GAAOx9R,QAAU,CAAC9kd,aAxCZA,MAAN,QACIx6F,YAAYgpG,EAAai+6B,GACrB/mhC,KAAK8H,KAAO,eACZ9H,KAAK8oG,YAAcA,EACfi+6B,EAAO,IACP/mhC,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCnC,SACI,OAAS5khC,KAAK+g8B,IAAM,CAChBj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,YAClBi41B,IAAK/g8B,KAAK+g8B,KACV,CACAj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,aAI1B2irB,UAAUs7P,GACN/mhC,KAAK8oG,YAAc9oG,KAAK8oG,YAAYhgC,QAAQrE,GAAKA,EAAEqE,QAAQ/gC,GAAKA,EAAE+gC,QAAQ7oD,IACtE,MAAMrP,EAAMvG,EAAU,IAAI+v/B,EAAK,QAAUp6/B,KAAK+g8B,IAAIkmF,WAAY,IAAI7sB,EAAK,QAAU2sB,GAAO9mgC,GACxF,MAAO,CAACrP,EAAIjH,EAAGiH,EAAIkjD,OAEvB9zD,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCzs7B,SAAa4s7B,WAAa,SAAU3kgC,GAChC,OAAO+3E,EAAa6s7B,SAAS94/B,KAAKC,MAAM/L,KAG5C+3E,EAAa6s7B,SAAW,SAAUlmjB,GAC9B,GAAkB,iBAAdA,EAAKn5d,KACL,MAAM,IAAI2O,MAAM,wBAA0Bwqd,EAAKn5d,KAAO,0BAE1D,OAAO,IAAIwyF,EAAa2mY,EAAKn4X,YAAam4X,EAAK8/d,IAAMq9E,EAAgB+I,SAASlmjB,EAAK8/d,KAAKkmF,eAAY9hhC,IArClGm1F,yBCHN,MAAO8j7B,mBAAmBt4b,EAAQ,QAC3Bs0a,OAAM/v/B,aAAay7kB,EAAQ,MAwClC82P,GAAOx9R,QAAU,CAAClle,MAtCZA,MAAN,QACIp6E,YAAYgpG,EAAai+6B,GACrB/mhC,KAAK8H,KAAO,QACZ9H,KAAK8oG,YAAcA,EACfi+6B,EAAO,IACP/mhC,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCnC,SACI,OAAS5khC,KAAK+g8B,IAAM,CAChBj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,YAClBi41B,IAAK/g8B,KAAK+g8B,IAAI6jF,UACd,CACA98gC,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,aAI1B2irB,UAAUs7P,GACN,MAAMn2gC,EAAMvG,EAAU,IAAI+v/B,EAAK,QAAUp6/B,KAAK+g8B,IAAIkmF,WAAY,IAAI7sB,EAAK,QAAU2sB,GAAO/mhC,KAAK8oG,aAC7F9oG,KAAK8oG,YAAc,CAACl4F,EAAIjH,EAAGiH,EAAIkjD,GAC/B9zD,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvC7s8B,SAAMgt8B,WAAa,SAAU3kgC,GACzB,OAAO23D,EAAMit8B,SAAS94/B,KAAKC,MAAM/L,KAGrC23D,EAAMit8B,SAAW,SAAUlmjB,GACvB,GAAkB,UAAdA,EAAKn5d,KACL,MAAM,IAAI2O,MAAM,wBAA0Bwqd,EAAKn5d,KAAO,mBAE1D,OAAO,IAAIoyE,EAAM+mZ,EAAKn4X,YAAam4X,EAAK8/d,IAAMq9E,EAAgB+I,SAASlmjB,EAAK8/d,KAAKkmF,eAAY9hhC,IAnC3F+0E,yBCHN,MAAOkk8B,mBAAmBt4b,EAAQ,QAC3Bz7kB,YAAW+v/B,QAAQt0a,EAAQ,MA0ClC82P,GAAOx9R,QAAU,CAAC3re,QAxCZA,MAAN,QACI3zE,YAAYgpG,EAAai+6B,GACrB/mhC,KAAK8H,KAAO,UACZ9H,KAAK8oG,YAAcA,EACfi+6B,EAAO,IACP/mhC,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCnC,SACI,OAAS5khC,KAAK+g8B,IAAM,CAChBj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,YAClBi41B,IAAK/g8B,KAAK+g8B,KACV,CACAj57B,KAAM9H,KAAK8H,KACXghG,YAAa9oG,KAAK8oG,aAI1B2irB,UAAUs7P,GACN/mhC,KAAK8oG,YAAc9oG,KAAK8oG,YAAYhgC,QAAQ/gC,GAAKA,EAAE+gC,QAAQ7oD,IACvD,MAAMrP,EAAMvG,EAAU,IAAI+v/B,EAAK,QAAUp6/B,KAAK+g8B,IAAIkmF,WAAY,IAAI7sB,EAAK,QAAU2sB,GAAO9mgC,GACxF,MAAO,CAACrP,EAAIjH,EAAGiH,EAAIkjD,MAEvB9zD,KAAK+g8B,IAAM,IAAIq9E,EAAgB2I,IAIvCtz8B,SAAQyz8B,WAAa,SAAU3kgC,GAC3B,OAAOkxD,EAAQ0z8B,SAAS94/B,KAAKC,MAAM/L,KAGvCkxD,EAAQ0z8B,SAAW,SAAUlmjB,GACzB,GAAkB,YAAdA,EAAKn5d,KACL,MAAM,IAAI2O,MAAM,wBAA0Bwqd,EAAKn5d,KAAO,qBAE1D,OAAO,IAAI2rE,EAAQwtZ,EAAKn4X,YAAam4X,EAAK8/d,IAAMq9E,EAAgB+I,SAASlmjB,EAAK8/d,KAAKkmF,eAAY9hhC,IArC7FsuE,yBCHNqygB,EAAQ,OACR,MAAO1lW,iBAAiB0lW,EAAQ,OAChCA,EAAQ,OACR,MAAMq0a,EAAQr0a,EAAQ,MAEtB,WAA4Bihc,EAAM9o6B,GAC1Bk84B,EAAMltxB,QACNktxB,EAAMltxB,QAAQvS,KAAK,QAAUqszB,EAAM9o6B,GAGvCk84B,EAAMz/xB,KAAK,QAAUqszB,EAAM9o6B,GAG/Bqg6B,EAAmB,KAAM,uCACzBA,EAAmB,KAAM,gIAEnBF,QAAN,QACIt+gC,YAAYinhC,GACR,GAAIA,EAAO,EACP,MAAM,IAAItwgC,MAAM,gBAAkBswgC,GAEtC/mhC,KAAK8H,KAAO,OACZ9H,KAAKq/I,WAAa,CACdr6I,KAAO,QAAO+hhC,KAItBE,UACI,OAAO7myB,EAAcskyB,WAAW1khC,KAAKq/I,WAAWr6I,KAAK4uC,WAAW,QAAS,KAG7Egx+B,SACI,MAAO,CACH98gC,KAAM9H,KAAK8H,KACXu3I,WAAYr/I,KAAKq/I,aAK7B++3B,SAAgB8I,WAAa,SAAU3kgC,GACnC,OAAO67/B,EAAgB+I,SAAS94/B,KAAKC,MAAM/L,KAG/C67/B,EAAgB+I,SAAW,SAAUlmjB,GACjC,MAAMrwd,EAAM,IAAIwtgC,EAAgB,GAChCxtgC,SAAIyuI,WAAWr6I,KAAOi8d,EAAK5hV,WAAWr6I,KAC/B4L,GA9BLwtgC,MAiCN,MAAMjjC,EAAQ,IAAIijC,EAAgB,MAC5BC,EAAe,IAAID,EAAgB,MAEzCxhM,GAAOx9R,QAAU,CAACg/d,kBAAiBE,qBAAoBnjC,QAAOkjC,kCCpD9D,MAAO535B,iBAAiBq/d,EAAQ,QACzB00b,eAAcF,UAAUx0b,EAAQ,OAOvC,QAYQi5b,cACA,OAAO/+gC,KAAKu0a,OAAO3rK,OAAOllO,EAAK0j/B,MAAMzj/B,YAmBzC7jC,YAAYy0K,GAER,GADAv0K,KAAKu0a,OAAS,KACV9tT,EAAcq15B,cAAcvn2B,GAC5Bv0K,KAAKu0a,OAAS+lmB,QACX,CACH,IAAKE,EAAajm2B,GACd,MAAM,IAAI99J,MAAO,mBAAkB89J,KAEvCv0K,KAAKu0a,OAAShgQ,EAAK9rG,eAa3B9kC,WACI,OAAO3jC,KAAKu0a,OAgBhB3rK,OAAOr0F,GACH,OACWv0K,KAAKu0a,OAAO3rK,OADnBr0F,aAAgB7wI,EACU6wI,EAAK5wI,WAET4wI,IAiBlC1uK,OAAOiqD,eAAepsB,EAAM,QAAS,CACjC7kB,IAAK,WACD,OAAO,IAAI6kB,EAAK,yCAEpBmsB,YAAY,EACZkotB,cAAc,IAiBlBr0uB,EAAK2j/B,SAAY9y2B,GACNim2B,EAAajm2B,GAGxBqoqB,GAAOx9R,QAAU,CAAC17gB,0BCxHlB,MAAOA,QAAQoijB,EAAQ,OAEvB82P,GAAOx9R,QAAU,CAAC17gB,0BCPlB,MAAOohN,SAASghW,EAAQ,OA2BxBx3hB,OAAOjuC,UAAUingC,UAAY,SAAU11rB,EAAOrrG,GAC1C,OAAOvmP,MAAQumP,GAASvmP,MAAQ4xV,GAiBpCtjS,OAAOjuC,UAAUuoP,OAAS,SAAUjlQ,GAChC,OAAO3D,KAAK2gE,YAAch9D,GAoB9B2qD,OAAOjuC,UAAUq6/B,QAAU,SAAU/2gC,GACjC,OAAO3D,KAAO2D,GAoBlB2qD,OAAOjuC,UAAUshgC,QAAU,SAAUh+gC,GACjC,OAAO3D,KAAO2D,GAsBlB2qD,OAAOjuC,UAAUsigC,MAAQ,SAAU/wrB,EAAOrrG,GACtC,OAAIvmP,KAAO4xV,EACAA,EAEP5xV,KAAOumP,EACAA,EAEJvmP,KAAK2gE,WAmBhBrS,OAAOjuC,UAAUm1C,IAAM,SAAU7xD,GAC7B,OAAO3D,KAAO2D,GAmBlB2qD,OAAOjuC,UAAUy9/B,SAAW,SAAUn6gC,GAClC,OAAO3D,KAAO2D,GAmBlB2qD,OAAOjuC,UAAUkngC,SAAW,SAAU5jhC,GAClC,OAAO3D,KAAO2D,GAqBlB2qD,OAAOjuC,UAAUmngC,OAAS,SAAU7jhC,GAChC,GAAc,IAAVA,EACA,MAAM,IAAI8S,MAAO,oBAAmBzW,UAAU2D,KAElD,OAAO3D,KAAO2D,GAmBlB2qD,OAAOjuC,UAAUongC,KAAO,SAAU1iyB,GAC9B,OAAOD,EAAM9kP,KAAM+kP,EAAW,SAmBlCz2L,OAAOjuC,UAAUqwS,MAAQ,SAAU3rE,GAC/B,OAAOD,EAAM9kP,KAAM+kP,EAAW,UAmBlCz2L,OAAOjuC,UAAUykO,MAAQ,SAAUC,GAC/B,OAAOD,EAAM9kP,KAAM+kP,IAiBvBz2L,OAAOjuC,UAAUqngC,SAAW,WACxB,OAAO1nhC,KAAK8+G,QAAQ,GAAG/4G,QAgB3BuoD,OAAOjuC,UAAUsngC,cAAgB,WAC7B,MAAM/2gC,EAAM5Q,KAAK+K,WAAWiM,MAAM,KAClC,OAAOpG,EAAI,GAAKA,EAAI,GAAG7K,OAAS,GAmBpCuoD,OAAOjuC,UAAU+xL,UAAY,SAAU5lJ,GACnCA,OACOxsD,MADAwsD,GAAQ,IAoBnB8B,OAAOjuC,UAAUungC,UAAY,SAAUp79B,GACnCA,OACOxsD,MADAwsD,GAAQ,sBCnVnB,MAAOou9B,UAAU90b,EAAQ,OAiGzB82P,GAAOx9R,QAAU,CAACh/T,cAvFZA,MAAN,SAmBAA,SAAcskyB,WAAc/ghC,IACxB,MAAMiN,EAAMhN,SAASD,EAAMoH,YAC3B,OAAIoM,MAAMvG,GACC,EAEJA,GAmBXwvO,EAAcynyB,UAAalkhC,IACvB,MAAMiN,EAAM+zB,WAAWhhC,EAAMoH,YAC7B,OAAIoM,MAAMvG,GACC,EAEJA,GAiBXwvO,EAAc0nyB,cAAgB,CAACr1+B,EAAKjkC,IACzBosgC,EAAOno+B,EAAKjkC,GAAK,GAiB5B4xO,EAAc2nyB,aAAe,CAACt1+B,EAAKjkC,IACxBosgC,EAAOno+B,EAAKjkC,GAAK,GApFtB4xO,yBCJN0lW,EAAQ,OACR,MAAO1lW,iBAAiB0lW,EAAQ,OAEhC82P,GAAOx9R,QAAU,CAACh/T,mCCTlB,MAAO26xB,QAAOF,oBAAmBI,MAAK5y8B,OAAOy9gB,EAAQ,OAC/Ckic,EAASlic,EAAQ,OA2SvB82P,GAAOx9R,QAAU,CAAC94gB,cApSZA,MAAN,SAgBAA,SAAci9N,KAAQniP,GACXy5/B,EAAkBz5/B,GAmB7BklB,EAAc2h/B,WAAcvo9B,GACjBp5B,EAAc4h/B,YAAYxo9B,GAAK35D,OAAS,EAoBnDugC,EAAc4h/B,YAAexo9B,IACzB,MAAMyo9B,EAAiB,GACjBC,EAAgB,GAkBtB,OAhBA,WAAexo9B,GACX,GAAIA,GAAgC,iBAAbA,EAAuB,CAC1C,IAAyC,IAArCuo9B,EAAerogC,QAAQ8/C,GACvB,MAAO,CAAC,OAEZuo9B,EAAe1ihC,KAAKm6D,GACpB,UAAW/sD,KAAO+sD,EACd,GAAIA,EAASvzB,eAAex5B,IAAQmwJ,EAAMpjG,EAAS/sD,IAAM9M,OAAS,EAC9DqihC,SAAc5y9B,IAAI3iD,GACXu1gC,EAInB,OAAOA,EAGJpl3B,CAAMtjG,IAcjBp5B,EAAc+h/B,OAAU3o9B,GACbso9B,EAAOto9B,GAwBlBp5B,EAAcy0+B,MAAQ,CAAC1+pB,EAAQ59S,IACpBs88B,EAAM1+pB,EAAQ59S,GAmBzBn4B,EAAc20+B,IAAM,CAACv78B,EAAK7sD,IACfoogC,EAAIv78B,EAAK7sD,GAoBpByzB,EAAc+hC,IAAM,CAAC3I,EAAK7sD,EAAKlP,IACpB0kE,EAAI3I,EAAK7sD,EAAKlP,GAuBzB2iC,EAAc+y+B,MAAQ,CAACh6mB,EAAQC,IACpBjxY,KAAK+E,UAAUisY,KAAYhxY,KAAK+E,UAAUksY,GAwBrDh5X,EAAcgi/B,UAAY,CAACjpnB,EAAQC,EAAQipnB,KACvCA,GAAwC,IAArBA,EACnB,MAAMruqB,EAAKr0W,OAAOrC,KAAK67Z,GACjBllD,EAAKt0W,OAAOrC,KAAK87Z,GACvB,GAAIplD,EAAGn0W,SAAWo0W,EAAGp0W,OACjB,OAAO,EAEX,QAAS4I,EAAI,EAAGA,EAAIurW,EAAGn0W,OAAQ4I,IAC3B,GAAK45gC,GAML,IAAKpuqB,EAAG9lT,SAAS6lT,EAAGvrW,IAChB,OAAO,OANP,GAAIurW,EAAGvrW,KAAOwrW,EAAGxrW,GACb,OAAO,EAQnB,OAAO,GAmBX23B,EAAcki/B,WAAa,CAACC,EAAOC,EAAOxgyB,KACtC,MAAMt3O,EAAM,IAAI63gC,GAChB,UAAWE,KAASD,EAAO,CACvB,MAAM11gC,EAAO01gC,EAAMC,GACnB/3gC,EAAIqtK,UAAUh1K,GAAsB,mBAAVi/O,EAAuBA,EAAMj/O,EAAG+J,GAAQ/J,IAAM+J,GAE5E,OAAOpC,GAwBX01B,EAAcsi/B,OAAS,CAAClp9B,EAAKjrC,KACzB,IAAKA,EACD,OAAO5uB,OAAO6+e,OAAOhlb,GAEzB,UAAW7sD,KAAOhN,OAAOrC,KAAKk8D,GAC1B,GAAIpxD,MAAMqxB,QAAQ+/B,EAAI7sD,IAClB,QAASlE,EAAI,EAAGA,EAAI+wD,EAAI7sD,GAAK9M,OAAQ4I,IACjC+wD,EAAI7sD,GAAKlE,GAAK23B,EAAcsi/B,OAAOlp9B,EAAI7sD,GAAKlE,IAAI,eAI7C+wD,EAAI7sD,UAAgB,KAG/B6sD,EAAI7sD,GAAOhN,OAAO6+e,OAAOhlb,EAAI7sD,KAEjC,OAAOhN,OAAO6+e,OAAOhlb,IAjSnBp5B,yBCFN,MAAOA,iBAAiBw/iB,EAAQ,OAEhC82P,GAAOx9R,QAAU,CAAC94gB,mCCRlB,MAAOmgF,iBAAiBq/d,EAAQ,QACzBx5L,SAAQ6unB,WAAUE,WAAUD,QAAOF,gBAAgBp1b,EAAQ,QAE9Dnya,YAAW4ssB,YAAWr4B,aAAY2gM,YAAWtgM,cAAaugM,eAActgM,UACxEV,SAAQihM,WAAUC,gBAClBljc,EAAQ,OACZA,EAAQ,OAsBR9yjB,OAAO3S,UAAUs6/B,OAAS,SAAU9x7B,GAChC,GAAI7oF,KAAK+F,OAAO+3gC,SAAS,GAAG6D,QAAQ947B,GAChC,MAAM,IAAIpyE,MAAO,kDAAiDoyE,uBAAyB7oF,KAAK+F,UAEpG,OAAO/F,KAAK6oF,IAgBhB71D,OAAO3S,UAAU4ogC,WAAa,WAC1B,GAAIjphC,KAAK+F,OAAS,EACd,OAAO/F,KAEX,MAAMkH,EAAQlH,KAAK,GACbkphC,EAASlphC,KAAK4O,MAAM,EAAG5O,KAAK+F,QAClC,MAAQ,GAAEmB,EAAMiihC,YAAYD,EAAOpjvB,aAgBvC9yQ,OAAO3S,UAAU+ogC,YAAc,WAC3B,OAAOz12B,EAAU3zK,OAcrBgzB,OAAO3S,UAAUgpgC,eAAiB,WAC9B,OAAOP,EAAa9ohC,OAcxBgzB,OAAO3S,UAAUipgC,UAAY,WACzB,OAAO9gM,EAAQxo1B,OAcnBgzB,OAAO3S,UAAUkpgC,SAAW,WACzB,OAAOzhM,EAAO9n1B,OAcjBgzB,OAAO3S,UAAUmpgC,WAAa,WAC1B,OAAOT,EAAS/ohC,OAcpBgzB,OAAO3S,UAAUopgC,eAAiB,WAC9B,OAAOT,EAAahphC,OAoBxBgzB,OAAO3S,UAAU8oO,WAAa,SAAUh4N,EAAQ+Y,GAC5C,OAAOlqC,KAAKixD,WAAW9/B,EAAQ+Y,GAAsB,IAoBzDlX,OAAO3S,UAAUmuJ,SAAW,SAAUr9I,EAAQ+Y,GAC1C,OAAOlqC,KAAK8wB,SAASK,EAAQ+Y,GAAsBlqC,KAAK+F,SAc5DitB,OAAO3S,UAAUqpgC,WAAa,WAC1B,OAAOp9nB,EAAOtsZ,OAclBgzB,OAAO3S,UAAUspgC,aAAe,WAC5B,OAAOxO,EAASn7gC,OAcpBgzB,OAAO3S,UAAUupgC,aAAe,WAC5B,OAAO1O,EAAal7gC,OAgBxBgzB,OAAO3S,UAAUwpgC,YAAc,WAC3B,OAAOhB,EAAU7ohC,OAgBrBgzB,OAAO3S,UAAUypgC,YAAc,WAC3B,OAAOvpK,EAAUvg3B,OAcrBgzB,OAAO3S,UAAU0pgC,cAAgB,WAC7B,OAAOxhM,EAAYvo1B,OAcvBgzB,OAAO3S,UAAU2pgC,aAAe,WAC5B,OAAO9hM,EAAWlo1B,OActBgzB,OAAO3S,UAAUooD,YAAc,WAC3B,OAAOzoE,KAAKiv5B,qBAchBj83B,OAAO3S,UAAU2mJ,YAAc,WAC3B,OAAOhnK,KAAKm4J,eAehBnlI,OAAO3S,UAAU4pgC,WAAa,WAC1B,MAAQ,GAAEjqhC,KAAK,GAAGq7B,gBAAgBr7B,KAAK4O,MAAM,EAAG5O,KAAK+F,WAezDitB,OAAO3S,UAAU6pgC,WAAa,WAC1B,MAAQ,GAAElqhC,KAAK,GAAGm4J,gBAAgBn4J,KAAK4O,MAAM,EAAG5O,KAAK+F,WAwBzDitB,OAAO3S,UAAU+6/B,MAAQ,SAAUrugC,EAAQ2vZ,GACvC,MAAM9rZ,EAAMwqgC,EAAMp7gC,KAAM08Z,GACxB,MAAyB,mBAAX3vZ,EACV6D,EAAI65C,QAAQ19C,GACZ6D,GAkBRoiB,OAAO3S,UAAUs9/B,OAAS,SAAUwM,EAAUjirB,GAC1C,OAAKzhP,EAAcq15B,cAAc5zqB,IAAezhP,EAAcq15B,cAAc97gC,MAGrEA,KAAOmqhC,EAFHnqhC,KAAOkoW,EAAYiirB,GAsBlCn3/B,OAAO3S,UAAUkzI,KAAO,SAAU423B,EAAUjirB,GACxC,IAAKiirB,EAASjv9B,MACV,OAAOl7D,KAEX,IAAI08B,EAAM18B,KACV,UAAWuiB,KAAO4ngC,EACdzt/B,EAAMA,EAAIih/B,OAAOp7/B,EAAK2lV,GAE1B,OAAOxrU,GAoBX1J,OAAO3S,UAAU+pgC,IAAM,SAAUrkhC,EAAQmsD,GACrCA,EAAWu0D,EAAcq15B,cAAc5p9B,GAAY,IAAMA,EACzD,IAAIthD,EAAM5Q,KACN+5/B,GAAK,EACT,KAAOnp/B,EAAI7K,OAASA,GAAQ,CACxB,GAAIg0/B,EACA,QAASpr/B,EAAIujD,EAASnsD,OAAO,EAAG4I,GAAK,IACjCiC,EAAMshD,EAASvjD,GAAKiC,IAChBA,EAAI7K,QAAUA,IAFkB4I,UAOxC,QAASA,EAAI,EAAGA,EAAIujD,EAASnsD,SACzB6K,GAAYshD,EAASvjD,KACjBiC,EAAI7K,QAAUA,IAFe4I,KAOzCor/B,GAAMA,EAEV,OAAOnp/B,GAoBXoiB,OAAO3S,UAAU8lgC,QAAU,SAAUpghC,EAAQmsD,GACzCA,SAAWu0D,EAAcq15B,cAAc5p9B,GAAY,IAAMA,EAClDlyD,KAAKqo3B,SAASti3B,EAAQmsD,IAoBjCl/B,OAAO3S,UAAUgqgC,SAAW,SAAUtkhC,EAAQmsD,GAC1CA,SAAWu0D,EAAcq15B,cAAc5p9B,GAAY,IAAMA,EAClDlyD,KAAK2iC,OAAO58B,EAAQmsD,IAe/Bl/B,OAAO3S,UAAUiqgC,OAAS,SAAUvn/B,GAChC,IAAInyB,EAAM,GACV,QAASjC,EAAI,EAAGA,EAAIo0B,EAAOp0B,IACvBiC,GAAO5Q,KAEX,OAAO4Q,GAkBXoiB,OAAO3S,UAAUgyC,QAAU,SAAUlhC,EAAQusS,GACzC,OAAO19T,KAAKurB,QAAQ4F,EAAQusS,IAgBhC1qS,OAAO3S,UAAUuzB,WAAa,SAAUziB,EAAQusS,GAC5C,OAAO19T,KAAKgX,MAAMma,GAAQ1J,KAAKi2S,IAenC1qS,OAAO3S,UAAU0oD,MAAQ,SAAU2zV,GAC/B,OAAIj2S,EAAcq15B,cAAc97gC,MACrB,GAEJA,KAAKgX,MAAM0lZ,GAASjyW,QAAS97C,KAAOA,IAc/CqkB,OAAO3S,UAAUylR,QAAU,WACvB,OAAO9lS,KAAKq7B,eAahBrI,OAAO3S,UAAU8ogC,QAAU,WACvB,OAAOnphC,KAAKm4J,eAgBhBnlI,OAAO3S,UAAUq+N,KAAO,SAAU+nH,GAC9B,OAGO40qB,EAASr7gC,KAHXymW,GACqB,IAEM,IAgBpCzzU,OAAO3S,UAAU+oO,UAAY,SAAUq9G,GACnC,OAGO40qB,EAASr7gC,KAHXymW,GACqB,IAEM,IAgBpCzzU,OAAO3S,UAAUkqgC,QAAU,SAAU9jrB,GACjC,OAGO40qB,EAASr7gC,KAHXymW,GACqB,IAEM,IAmBpCzzU,OAAO3S,UAAUmqgC,SAAW,SAAUzkhC,EAAQwk3B,EAAUrihB,GACpD,IAAIt3V,EAAM,GACV,MAAM65gC,EAASlgK,GAAsB,MACrC,QAAS572B,EAAI,EAAGA,EAAI3O,KAAK+F,OAAQ4I,IAAK,CAClC,GAAIiC,EAAI7K,QAAUA,GAAU6K,EAAIkgB,SAASo3U,GACrC,OAAOt3V,EAAI6R,OAAO,EAAG7R,EAAI7K,OAAS0khC,EAAO1khC,QAAU0khC,EAEvD75gC,GAAO5Q,KAAK2O,GAEhB,OAAOiC,GAcXoiB,OAAO3S,UAAUkjP,KAAO,WACpB,MAAQ,GAAEvjQ,QAkBdgzB,OAAO3S,UAAUg0C,SAAW,SAAUljC,GAClC,OAAOnxB,KAAK+W,SAASoa,IAkBzB6B,OAAO3S,UAAUo6/B,cAAgB,SAAUtp/B,EAAQu5/B,GAE/C,GAAIv5/B,EAAOprB,QAAU,EACjB,OAAO,EAGX,IAAI+H,EAAI,EACJ+6E,EAAM,EACNr8B,GAPJk+9B,GAAwC,IAArBA,GAOW,EAAIv5/B,EAAOprB,OAEzC,KACI8iF,EAAM7oF,KAAK8f,QAAQqR,EAAQ03D,GACvBA,GAAO,KACL/6E,EACF+6E,GAAOr8B,EAGf,OAAO1+C,GAiBXklB,OAAO3S,UAAUuoP,OAAS,SAAUjlQ,GAChC,OAAO3D,KAAK2gE,YAAch9D,GAoB9BqvB,OAAO3S,UAAUyqR,OAAS,SAAUvlM,EAAY5hG,GAC5C,OAAI4hG,EAAa,IACbA,EAAa,GAEbA,EAAavlG,KAAK+F,SAClBw/F,EAAavlG,KAAK+F,QAEf/F,KAAK4O,MAAM,EAAG22F,GAAc5hG,EAAQ3D,KAAK4O,MAAM22F,EAAYvlG,KAAK+F,SAoB3EitB,OAAO3S,UAAU2gD,OAAS,SAAU92B,EAAU0tE,GAC1C,IAAI+y6B,EAAoB3qhC,KAAK+F,OAC7B,OAAImkC,EAAW,IACXA,EAAW,GAEXA,EAAWlqC,KAAK+F,SAChBmkC,EAAWlqC,KAAK+F,OAAS,EACzB4khC,EAAoB,GAEpB/y6B,EAAQ+y6B,IACRzg/B,GAAuB0tE,EAAQ+y6B,GAE5B3qhC,KAAKyiB,OAAO,EAAGynB,GAAYlqC,KAAK8zB,UAAUoW,GAAY0tE,GAAgB,GAAI53G,KAAK+F,SAsB1FitB,OAAO3S,UAAUw9/B,UAAY,SAAU3z+B,EAAUnkC,GAC7C,QAAKA,GAAUA,EAAS,KACpBA,EAAS,GAETmkC,EAAW,IACXA,EAAW,GAEXA,EAAWlqC,KAAK+F,SAChBmkC,EAAWlqC,KAAK+F,OAASA,GAEtB/F,KAAKyiB,OAAOynB,EAAUnkC,IAiBjCitB,OAAO3S,UAAUu6M,UAAY,WACzB,MAAMl+L,EAAM94B,SAAS5D,KAAM,IAC3B,OAAImX,MAAMulB,GACC,EAEJA,GAmBX1J,OAAO3S,UAAUuqgC,SAAW,WACxB,MAAMlu/B,EAAMiI,WAAW3kC,MACvB,OAAImX,MAAMulB,GACC,EAEJA,GAmBX1J,OAAO3S,UAAUqoD,QAAU,SAAU/kE,GACjC,OAAO3D,KAAK8f,QAAQnc,IAmBxBqvB,OAAO3S,UAAUwqgC,YAAc,SAAUlnhC,GACrC,IAAIqjc,GAAkB,EAClB78Z,EAAMnqC,KAAK8f,QAAQnc,EAAO,GAC9B,MAAe,IAARwmC,GACH68Z,EAAkB78Z,EAClBA,EAAMnqC,KAAK8f,QAAQnc,EAAOqjc,EAAkB,GAEhD,OAAOA,GAgBXh0a,OAAO3S,UAAUyqgC,YAAc,SAAU9gqB,EAAO1/U,GAC5C,MAAM15B,EAAM,GACZ,UAAWoG,KAAShX,KAAK+oE,MAAMihT,GAAQ,CACnC,MAAMzzC,EAAUv/T,EAAM+xD,MAAMz+B,GAAKwwB,eAAe,KAAM,GACtDlqD,EAAI4kD,IAAI+gR,GAEZ,QAAKv2U,KAAKmpP,WAAW6gI,IAAUhqX,KAAKwuK,SAAS59J,EAAI4iJ,UAAU,MAEvD5iJ,EAAI0wD,SAAS,GAEV1wD,GAgBXoiB,OAAO3S,UAAUm//B,QAAU,WACvB,QAAS7wgC,EAAI,EAAGA,EAAI3O,KAAK+F,OAAQ4I,IAC7B,GAAI3O,KAAK4xO,WAAWjjO,GAAK,IACrB,OAAO,EAGf,OAAO,GAiBXqkB,OAAO3S,UAAUi//B,QAAU,WACvB,QAAS3wgC,EAAI,EAAGA,EAAI3O,KAAK+F,OAAQ4I,IAC7B,IAAK3O,KAAK4xO,WAAWjjO,GAAG24gC,UAAU,GAAI,MACjCtnhC,KAAK4xO,WAAWjjO,GAAG24gC,UAAU,GAAI,KAClC,OAAO,EAGf,OAAO,GAcXt0/B,OAAO3S,UAAUkmtB,MAAQ,WACrB,OAAO29H,OAAO9h1B,WAAWpiB,KAAK2gE,8BChjClC,MAAOy/K,iBAAiB0lW,EAAQ,OAwDhC82P,GAAOx9R,QAAU,CAAC34b,cAjDZA,MAAN,SAkBAA,SAAcq15B,cAAiBn4gC,IACnBA,GAASA,EAAMoC,OAAS,EAiBpC0gH,EAAcsk6B,kBAAqBhlhC,IAC3BA,EAAS,IACTA,EAAS,GAEb,IAAI6K,EAAM,GACV,MAAM21O,EAAQnG,EAAc0nyB,cAAc,EAAG,GAC7C,QAASn5gC,EAAI,EAAGA,EAAI5I,EAAQ4I,IAAK,CAC7B,MAAMqd,EAAiB,IAAVu6N,EAAcnG,EAAc0nyB,cAAc,GAAI,IAAM1nyB,EAAc0nyB,cAAc,GAAI,KACjGl3gC,GAAOoiB,OAAOC,aAAajH,GAE/B,OAAOpb,GA9CL61G,yBCFNq/d,EAAQ,OACR,MAAOr/d,iBAAiBq/d,EAAQ,OAEhC82P,GAAOx9R,QAAU,CAAC34b,mCCHlB,MAAO835B,iBAAiBz4b,EAAQ,MAEhC82P,GAAOx9R,QAAU,CAACm/d,kCCPlB,MAAM9kI,EAAW3zT,EAAQ,OA0CzB82P,GAAOx9R,QAAU,CAACm/d,cAlCZA,MAAN,SAcAA,SAAcyM,SAAYl4gC,GACf2m4B,EAASK,iBAAiBzr3B,KAAK+E,UAAUtgB,IAepDyrgC,EAAc0M,WAAc5wI,GACjBhs3B,KAAKC,MAAMmr3B,EAASO,qBAAqBK,IA/B9CkkI,yBCJN,MAAOyC,qBAAqBl7b,EAAQ,OAEpC82P,GAAOx9R,QAAU,CAAC4he,uCCNlB,MAAO5gyB,iBAAiB0lW,EAAQ,QACzBx/iB,iBAAiBw/iB,EAAQ,QACzBr/d,iBAAiBq/d,EAAQ,OA0ChC82P,GAAOx9R,QAAU,CAAC4he,kBAnCZA,MAAN,SAaAA,SAAkBn7gC,OAAS,CAAC4sC,EAAKjkC,EAAK08gC,EAASC,KACvC14+B,EAAM,IACNA,EAAM,OAELjkC,GAAOA,GAAOikC,KACfjkC,EAAMikC,EAAM,GAEXy4+B,IACDA,EAAU,IAETC,IACDA,EAAY,IAEhB,MAAMv6gC,EAAM,GACZ,MAAQ01B,EAAc+h/B,OAAOz3gC,GAAK8pgC,QAAQjo+B,KACzCnM,EAAc+h/B,OAAOz3gC,GAAK8pgC,QAAQlsgC,IAC/BoC,EAAI61G,EAAcsk6B,kBAAkB3qyB,EAAc0nyB,cAAc,EAAGoD,KAC/Dzk6B,EAAcsk6B,kBAAkB3qyB,EAAc0nyB,cAAc,EAAGqD,IAEvE,OAAOv6gC,GAhCLowgC,yBCJN,MAAOxC,aAAa14b,EAAQ,OAE5B82P,GAAOx9R,QAAU,CAACo/d,+BCPlB14b,EAAQ,OACRA,EAAQ,OAER,MAAMslc,EAAa,IAyOnBxuM,GAAOx9R,QAAU,CAACo/d,UA9NlB,QAWI1+gC,cACIE,KAAKqrhC,MAAQrrhC,KAAKsrhC,gBAClBtrhC,KAAKurhC,eAAiB,GACtBvrhC,KAAKwrhC,UAAY,GACjBxrhC,KAAKyrhC,UAAW,EAChBzrhC,KAAK0rhC,kBAAoB,GACzB1rhC,KAAK2rhC,iBAAmB,GAmB5BC,aAAa/4gC,GACT7S,KAAKurhC,eAAe14gC,GAAO7S,KAAKsrhC,gBAChCtrhC,KAAK0rhC,kBAAkB74gC,GAAO,GAC9B7S,KAAK2rhC,iBAAiB94gC,IAAO,EAkBjCg5gC,eAAeh5gC,GACX,OAAsC,IAA/B7S,KAAK2rhC,iBAAiB94gC,GAgB7Bi5gC,cACA,OAAyB,IAAlB9rhC,KAAKyrhC,SAehBM,iBAAiBl5gC,GACb,IAAIjC,EAAM5Q,KAAK2rhC,iBAAiB94gC,GAAO,EAAI7S,KAAKgshC,qBAAqBn5gC,GAIrE,GAHK7S,KAAK0rhC,kBAAkB74gC,KACxB7S,KAAK0rhC,kBAAkB74gC,GAAO,IAE9B7S,KAAK0rhC,kBAAkB74gC,GAAKqoD,MAC5B,UAAW9sB,KAAKpuC,KAAK0rhC,kBAAkB74gC,GACnCjC,GAAOw9B,EAGf,OAAOx9B,EAcXq7gC,aAAap5gC,GACT7S,KAAK0rhC,kBAAkB74gC,GAAK2iD,IAAIx1D,KAAKgshC,qBAAqBn5gC,IAC1D7S,KAAK2rhC,iBAAiB94gC,IAAO,EAejCq5gC,cAAcr5gC,GACV7S,KAAK2rhC,iBAAiB94gC,IAAO,EAC7B7S,KAAKurhC,eAAe14gC,GAAO7S,KAAKsrhC,gBAWpCa,QACInshC,KAAKwrhC,UAAUh29B,IAAIx1D,KAAKoshC,gBACxBpshC,KAAKyrhC,UAAW,EAYpBY,SACIrshC,KAAKqrhC,MAAQrrhC,KAAKsrhC,gBAClBtrhC,KAAKyrhC,UAAW,EAapBa,YACI,IAAI17gC,EAAM5Q,KAAKyrhC,SAAW,EAAIzrhC,KAAKoshC,eACnC,GAAIpshC,KAAKwrhC,UAAUtw9B,MACf,UAAW9sB,KAAKpuC,KAAKwrhC,UACjB56gC,GAAOw9B,EAGf,OAAOx9B,EAGX06gC,gBACI,OAAItrhC,KAAKushC,aACEp3gC,OAAOgkK,YAAYngK,MAEvB+M,OAAOhE,QAAWyqgC,SAG7BJ,eACI,IAAKpshC,KAAKushC,aAAc,CACpB,MACMn++B,EAAIroB,OAAOhE,QAAWyqgC,OADfxshC,KAAKqrhC,OAElB,OAAQj9+B,EAAE,GAAKg9+B,EAAah9+B,EAAE,IAAI,IAEtC,MAAMx9B,EAAM5Q,KAAKqrhC,MACjB,OAAOl2gC,OAAOgkK,YAAYngK,MAAQpI,EAGtCo7gC,qBAAqBn5gC,GACjB,IAAK7S,KAAKushC,aAAc,CACpB,MAAMvS,EAAOh6gC,KAAKurhC,eAAe14gC,GACjC,IAAKmngC,EACD,OAAO,EAEX,MAAM5r+B,EAAIroB,OAAOhE,QAAWyqgC,OAAOxS,GACnC,OAAQ5r+B,EAAE,GAAKg9+B,EAAah9+B,EAAE,IAAI,IAEtC,MAAMx9B,EAAM5Q,KAAKurhC,eAAe14gC,GAChC,OAAOsC,OAAOgkK,YAAYngK,MAAQpI,EAGtC27gC,aACI,IACI,SAAUp3gC,SAAUA,OAAOgkK,mBACvBlwK,GACJ,OAAO,+CCvOnB,MAAOq9B,iBAAiBw/iB,EAAQ,OAEhC,WAAkBt/kB,IACd,OAAOA,WAAYA,UAAa,GAGpC,WAAoBA,IAChB,MAAoB,mBAANA,GAOlB,MAAMimhC,WACQjmhC,KAAM,wFAAwFg1a,KAAKh1a,IAD3GimhC,aAEUjmhC,KAAM,qDAAqDg1a,KAAKh1a,IAF1EimhC,gBAGajmhC,KAAM,0BAA0Bg1a,KAAKh1a,IAHlDimhC,eAIYjmhC,KAAM,6CAA6Cg1a,KAAKh1a,IAJpEimhC,SAKMjmhC,KACJ,IAAI8a,GAAM9a,GAIV,MAHiB,iBAANA,KACP8a,GAAM1d,SAAS4C,OAEf2Q,MAAMmK,KAGHA,GAAM,OAAQA,GAAM,GAb7BmrgC,OAeIjmhC,KAAM,6GAA6Gg1a,KAAKh1a,IAf5HimhC,SAgBMjmhC,KACJ,IACI6nB,YAAKC,MAAM9nB,KACJ,QACFyC,IACL,OAAO,IArBbwjhC,QAwBKjmhC,KAAM,2DAA2Dg1a,KAAKh1a,IAxB3EimhC,eAyBY,CAACjmhC,GAAG+pkB,KAAoB/pkB,GAAE+/tB,QAAUh2J,GAzBhDk8c,YA0BSjmhC,KAAM,qBAAqBg1a,KAAKh1a,IA1BzCimhC,UA2BO,CAACjmhC,GAAG+pkB,KAAoB/pkB,GAAEqiQ,SAAS0nU,IA3B1Ck8c,UA4BO,CAACjmhC,GAAG+pkB,KAAoB/pkB,GAAE+pR,QAAQggT,IA5BzCk8c,gBA6BajmhC,MAAKA,KAAKA,GAAE00D,MA7BzBux9B,cA8BWjmhC,KACT,MAAMoK,GAAM,GACZ,UAAWjN,MAAS6C,GAAG,CACnB,GAAIoK,GAAIyjD,SAAS1wD,IACb,OAAO,EAEXiN,GAAI4kD,IAAI7xD,IAEZ,OAAO,GAtCT8ohC,UAwCOjmhC,IAAkB,iBAANA,KAAoBA,GAAEg5gC,UAxCzCiN,iBAyCcjmhC,KAAM,kBAAkBg1a,KAAKh1a,IAzC3CimhC,UA0COjmhC,KAAM,eAAeg1a,KAAKh1a,IA1CjCimhC,QA2CKjmhC,KA/CX,WAAoBsY,IAChB,MAAO,0bAA0b08Z,KAAK18Z,IA8Czb4tgC,CAAWlmhC,IA3CtBimhC,SA4CMjmhC,KAAM,uFAAuFg1a,KAAKh1a,IA5CxGimhC,SA6CMjmhC,MAAM,qBAAqBg1a,KAAKh1a,KACnC,qBAAqBg1a,KAAKh1a,KAC1B,qBAAqBg1a,KAAKh1a,KAC1B,sBAAsBg1a,KAAKh1a,KAhD9BimhC,aAiDUjmhC,IAAKA,IAAK,EAjDpBimhC,aAkDUjmhC,IAAKA,GAAI,EAlDnBimhC,iBAmDcjmhC,IAAK2Q,MAAMwtB,WAAWn+B,KAnDpCimhC,kBAoDejmhC,IAAW,SAANA,IAAsB,UAANA,IAAuB,SAANA,IAAsB,UAANA,GApDrEimhC,QAqDKjmhC,IAAK2Q,MAAMvT,SAAS4C,GAAEuE,cAAgBvE,GAAEuE,WAAWspD,SAAS,KArDjEo49B,YAsDS,CAACjmhC,GAAG+pkB,KAAoBA,KAAoB/pkB,GAtDrDimhC,SAuDM,CAACjmhC,GAAG+pkB,KAAoBA,KAAoB/pkB,GAvDlDimhC,YAwDS,CAACjmhC,GAAG+pkB,KAAoBA,GAAgBl8gB,SAAS7tD,IAxD1DimhC,YAyDS,CAACjmhC,GAAG+pkB,MAAqBA,GAAgBl8gB,SAAS7tD,IAzD3DimhC,YA0DS,CAACjmhC,GAAG+pkB,KAAoB/pkB,GAAET,OAASwqkB,GA1D5Ck8c,YA2DS,CAACjmhC,GAAG+pkB,KAAoB/pkB,GAAET,OAASwqkB,GA3D5Ck8c,MA4DG,CAACjmhC,GAAG+pkB,KAAoB/pkB,GAAI+pkB,GA5D/Bk8c,MA6DG,CAACjmhC,GAAG+pkB,KAAoB/pkB,GAAI+pkB,GA7D/Bk8c,UA8DOjmhC,KAAM,4JAA4Jg1a,KAAKh1a,IA9D9KimhC,aA+DUjmhC,IAAW,KAANA,UAAYA,GA/D3BimhC,UAgEOjmhC,IAAW,KAANA,UAAYA,GAhExBimhC,YAiESjmhC,IAAW,MAANA,GAKdi4gC,EAAc,CAChBgB,SAAUj5gC,KAAMimhC,WAA0BjmhC,IAC1Cs5gC,WAAYt5gC,KAAMimhC,aAA4BjmhC,IAC9Cq5gC,cAAer5gC,KAAMimhC,gBAA+BjmhC,IACpD25gC,aAAc35gC,KAAMimhC,eAA8BjmhC,IAClDg6gC,OAAQh6gC,KAAMimhC,SAAwBjmhC,IACtCw5gC,KAAMx5gC,KAAMimhC,OAAsBjmhC,IAClCy5gC,OAAQz5gC,KAAMimhC,SAAwBjmhC,IACtC05gC,MAAO15gC,KAAMimhC,QAAuBjmhC,IACpCm5gC,aAAc,CAACn5gC,GAAG+pkB,MAAqBk8c,eAA8BjmhC,GAAG+pkB,IACxE6vc,UAAW55gC,KAAMimhC,YAA2BjmhC,IAC5Cu9M,QAAS,CAACv9M,GAAG+pkB,MAAqBk8c,UAAyBjmhC,GAAG+pkB,IAC9DvsX,QAAS,CAACx9M,GAAG+pkB,MAAqBk8c,UAAyBjmhC,GAAG+pkB,IAC9D8uc,cAAe74gC,KAAMimhC,gBAA+BjmhC,IACpDq6gC,YAAar6gC,KAAMimhC,cAA6BjmhC,IAChDg5gC,QAASh5gC,KAAMimhC,UAAyBjmhC,IACxC+4gC,eAAgB/4gC,KAAMimhC,iBAAgCjmhC,IACtD84gC,QAAS94gC,KAAMimhC,UAAyBjmhC,IACxCk6gC,MAAOl6gC,KAAMimhC,QAAuBjmhC,IACpCm6gC,OAAQn6gC,KAAMimhC,SAAwBjmhC,IACtCo5gC,OAAQp5gC,KAAMimhC,SAAwBjmhC,IACtC65gC,WAAY75gC,KAAMimhC,aAA4BjmhC,IAC9Ci6gC,WAAYj6gC,KAAMimhC,aAA4BjmhC,IAC9C85gC,eAAgB95gC,KAAMimhC,iBAAgCjmhC,IACtDk5gC,gBAAiBl5gC,KAAMimhC,kBAAiCjmhC,IACxDu5gC,MAAOv5gC,KAAMimhC,QAAuBjmhC,IACpC44gC,UAAW,CAAC54gC,GAAG+pkB,MAAqBk8c,YAA2BjmhC,GAAG+pkB,IAClE3nU,OAAQ,CAACpiQ,GAAG+pkB,MAAqBk8c,SAAwBjmhC,GAAG+pkB,IAC5Dsuc,UAAW,CAACr4gC,GAAG+pkB,MAAqBk8c,YAA2BjmhC,GAAG+pkB,IAClE4uc,UAAW,CAAC34gC,GAAG+pkB,MAAqBk8c,YAA2BjmhC,GAAG+pkB,IAClEyuc,UAAW,CAACx4gC,GAAG+pkB,MAAqBk8c,YAA2BjmhC,GAAG+pkB,IAClE0uc,UAAW,CAACz4gC,GAAG+pkB,MAAqBk8c,YAA2BjmhC,GAAG+pkB,IAClEv6a,IAAK,CAACxvJ,GAAG+pkB,MAAqBk8c,MAAqBjmhC,GAAG+pkB,IACtDx6a,IAAK,CAACvvJ,GAAG+pkB,MAAqBk8c,MAAqBjmhC,GAAG+pkB,IACtDquc,QAASp4gC,KAAMimhC,UAAyBjmhC,IACxCs4gC,WAAYt4gC,KAAMimhC,aAA4BjmhC,IAC9Cu4gC,QAASv4gC,KAAMimhC,UAAyBjmhC,IACxCm4gC,UAAWn4gC,KAAMimhC,YAA2BjmhC,SAQ1Ck4gC,QAAN,UAoCAA,UAAe2I,SAAf,oBAA0B,UAAOsF,GAAUvrgC,IACvC,MAAM4pB,GAAS,IAwOnB,WAA0B5pB,GAAU4pB,IAChC,MAAMo4G,GAAQv9I,OAAOrC,KAAKophC,GAAiBni+B,QAAQ97C,IAAKA,GAAEw6O,WAAW/nO,GAASthB,YAAYkF,OAC1F,UAAW0qD,MAAQ0zF,GAAO,CACtB,MAAMyp4B,GAAkBD,EAAgBl99B,IACxC,GAAIm99B,GAAgBjM,SAAa,CAC7B,MAAMt7hB,GAAW51b,GAAKqZ,MAAM,KAAKyqF,UAAU,GACvCpyI,SAASkke,KACTt6c,GAAOwqB,IAAI,CAACv9C,QAAQ40gC,GAAgBjM,SAAY,OA9O5DkM,CAAiB1rgC,GAAU4pB,IAC3B,UAAWn4B,MAAOhN,OAAOrC,KAAK4d,IAAW,CACrC,MAAMyrgC,GAAkBD,EAAiB,GAAExrgC,GAASthB,YAAYkF,QAAQ6N,MAClElP,GAAQyd,GAASvO,IAEvB,GAAIg6gC,GAAiB,CAEjB,GAAIA,GAAgB3N,YAAiB2N,GAAgB3N,WAAchk9B,MAAO,CACtE,MAAM6x9B,GAAsBF,GAAgB3N,WAAc,GAC1D,GAAK5wgC,MAAMqxB,QAAQot/B,MAAyBA,GAAoB149B,SAASs49B,KACpE5yY,EAAW8yY,GAAgB3N,WAAc,MAAQ2N,GAAgB3N,WAAc,GAAG99/B,IACnF,iBAEGyrgC,GAAgBtM,WAAe,CACtC,MAAMwM,GAAsBF,GAAgBtM,WAAc,GAC1D,GAAKjygC,MAAMqxB,QAAQot/B,MAAyBA,GAAoB149B,SAASs49B,MAC/B,IAArCE,GAAgBtM,WAAc,KAAgB58gC,GAC/C,SAIR,UAAWqphC,MAAiBnnhC,OAAOrC,KAAKqphC,IAAkB,CACtD,MAAMt8c,GAAkBs8c,GAAgBG,IAAe,GACjD33Y,GAAoBw3Y,GAAgBG,IAAe,GACnDD,GAAsBF,GAAgBG,IAAe,GAC3D,IAAI1+gC,MAAMqxB,QAAQot/B,KAAyBA,GAAoB149B,SAASs49B,IAIxE,OAAQK,QACH,YACDC,EAAkBtphC,GAAO8ohC,YAA4Bp3Y,GAAmBrqmB,IACxE,UACC,UACDii/B,EAAkBtphC,GAAO8ohC,UAA0Bp3Y,GAAmBrqmB,IACtE,UACC,aACDii/B,EAAkBtphC,GAAO8ohC,aAA6Bp3Y,GAAmBrqmB,IACzE,UACC,UACDii/B,EAAkBtphC,GAAO8ohC,UAA0Bp3Y,GAAmBrqmB,IACtE,UACC,MACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,MAAqBjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IAC3F,UACC,MACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,MAAqBjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IAC3F,UACC,YACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,YAA2BjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IACjG,UACC,YACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,YAA2BjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IACjG,UACC,YACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,YAA2BjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IACjG,UACC,YACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,YAA2BjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IACjG,UACC,SACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,SAAwBjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IAC9F,UACC,YACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,YAA2BjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IACjG,UACC,QACDii/B,EAAkBtphC,GAAO8ohC,QAAwBp3Y,GAAmBrqmB,IACpE,UACC,kBACDii/B,EAAkBtphC,GAAO8ohC,kBAAkCp3Y,GAAmBrqmB,IAC9E,UACC,iBACDii/B,EAAkBtphC,GAAO8ohC,iBAAiCp3Y,GAAmBrqmB,IAC7E,UACC,aACDii/B,EAAkBtphC,GAAO8ohC,aAA6Bp3Y,GAAmBrqmB,IACzE,UACC,aACDii/B,EAAkBtphC,GAAO8ohC,aAA6Bp3Y,GAAmBrqmB,IACzE,UACC,SACDii/B,EAAkBtphC,GAAO8ohC,SAAyBp3Y,GAAmBrqmB,IACrE,UACC,SACDii/B,EAAkBtphC,GAAO8ohC,SAAyBp3Y,GAAmBrqmB,IACrE,UACC,QACDii/B,EAAkBtphC,GAAO8ohC,QAAwBp3Y,GAAmBrqmB,IACpE,UACC,UACDii/B,EAAkBtphC,GAAO8ohC,UAA0Bp3Y,GAAmBrqmB,IACtE,UACC,iBACDii/B,EAAkBtphC,GAAO8ohC,iBAAiCp3Y,GAAmBrqmB,IAC7E,UACC,UACDii/B,EAAkBtphC,GAAO8ohC,UAA0Bp3Y,GAAmBrqmB,IACtE,UACC,WACDii/B,EAAkBtphC,GAAO8ohC,WAA2Bp3Y,GAAmBrqmB,IACvE,UACC,aACDii/B,EAAkBtphC,GAAO8ohC,aAA6Bp3Y,GAAmBrqmB,IACzE,UACC,gBACDii/B,EAAkBtphC,GAAO8ohC,gBAAgCp3Y,GAAmBrqmB,IAC5E,UACC,eACDii/B,EAAkBtphC,GAAO8ohC,eAA+Bp3Y,GAAmBrqmB,IAC3E,UACC,SACDii/B,EAAkBtphC,GAAO8ohC,SAAyBp3Y,GAAmBrqmB,IACrE,UACC,OACDii/B,EAAkBtphC,GAAO8ohC,OAAuBp3Y,GAAmBrqmB,IACnE,UACC,SACDii/B,EAAkBtphC,GAAO8ohC,SAAyBp3Y,GAAmBrqmB,IACrE,UACC,QACDii/B,EAAkBtphC,GAAO8ohC,QAAwBp3Y,GAAmBrqmB,IACpE,UACC,eACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,eAA8BjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IACpG,UACC,YACDii/B,EAAkBtphC,GAAO8ohC,YAA4Bp3Y,GAAmBrqmB,IACxE,UACC,UACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,UAAyBjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IAC/F,UACC,UACDii/B,EAAkBtphC,GAAO6C,IAAKimhC,UAAyBjmhC,GAAG+pkB,IAAkB8kE,GAAmBrqmB,IAC/F,UACC,gBACDii/B,EAAkBtphC,GAAO8ohC,gBAAgCp3Y,GAAmBrqmB,IAC5E,UACC,cACDii/B,EAAkBtphC,GAAO8ohC,cAA8Bp3Y,GAAmBrqmB,IAC1E,UACC,mBACDii/B,EAAkBtphC,GAAO6C,KAAM+pkB,GAAgB/pkB,IAAI6uoB,GAAmBrqmB,MAMlF,GAAI18B,MAAMqxB,QAAQh8B,KAAUA,GAAMu3D,OAC9B,UAAWw8C,MAAS/zG,GAChB,GAAIunK,EAASxzD,MAEJpxE,EAAc2h/B,WAAWvw6B,IAAQ,CAClC,MAAMw16B,SAAkBxO,GAAe2I,SAASsF,GAAUj16B,IACtDw16B,GAAUhy9B,OACVlwB,GAAOuqB,SAAS239B,aAKzBhi3B,EAASvnK,MAEX2iC,EAAc2h/B,WAAWtkhC,IAAQ,CAClC,MAAMuphC,SAAkBxO,GAAe2I,SAASsF,GAAUhphC,IACtDuphC,GAAUhy9B,OACVlwB,GAAOuqB,SAAS239B,KAKhC,IAAKli/B,GAAOkwB,MAAO,CACf,MAAM2x9B,GAAkBD,EAAiB,GAAExrgC,GAASthB,YAAYkF,SAChE,GAAI6nhC,IAAmBA,GAAgB9L,cAAkB,CACrD,MAAMxwc,GAAkBs8c,GAAgB9L,cAAiB,GACnD1rY,GAAoBw3Y,GAAgB9L,cAAiB,GAC5B,mBAApBxwc,KACFA,GAAgBnvjB,GAAUq9/B,IAC3Bzz+B,GAAOwqB,IAAI,CAACv9C,QAASo9nB,OAKrC,OAAOrqmB,KAxLX,2DA+NA0z+B,GAAeyO,eAAf,oBAAgC,UAAOrthC,GAAa6shC,GAAUhphC,IAC1D,MAAMg0W,GAAO,IAAI73W,GACjB,UAAW+S,MAAOhN,OAAOrC,KAAKG,IAC1Bg0W,GAAK9kW,IAAOlP,GAAMkP,IAEtB,OAAO6rgC,GAAe2I,SAASsF,GAAUh1qB,MAL7C,8DAnQM+mqB,OA2QN,MAAMkO,EAAkB,GAexB,WAA2BjphC,GAAOs/B,GAAIoymB,GAAmBrqmB,IACjD/H,GAAGt/B,KACHqnC,GAAOwqB,IAAI,CAACv9C,QAASo9nB,KAI7B,WAAyB3soB,GAAQqwK,GAAaq02B,GAAWzphC,GAAO0xoB,GAAmBg4Y,IAC/E,MAAMx6gC,GAAO,GAAEnK,GAAO5I,YAAYkF,QAAQ+zK,KACrC6z2B,EAAgB/5gC,MACjB+5gC,EAAgB/5gC,IAAO,IAE3B+5gC,EAAgB/5gC,IAAKu6gC,IAAa,CAACzphC,GAAO0xoB,GAAmBg4Y,IAqpCjEzwM,GAAOx9R,QAAU,CACbq/d,cACAC,iBACAC,UAxkCJ,WAAmBtpY,GAAmBg4Y,IAClC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,aAAa,EADlCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,wBAC5CqohC,MAqkC1DzO,QAt/Bf,WAAiBvpY,GAAmBg4Y,IAChC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,WAAW,EADhCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,gCAC9CqohC,MAm/B/Ct33B,IA19BxB,WAAapyJ,GAAO0xoB,GAAmBg4Y,IACnC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,MAAOp1K,GAD5B0xoB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,8BAA8BrB,MAC/E0phC,MAu9BvCr33B,IA97B7B,WAAaryJ,GAAO0xoB,GAAmBg4Y,IACnC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,MAAOp1K,GAD5B0xoB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,+BAA+BrB,MAChF0phC,MA27BlCxO,UAhzBlC,WAAmBl7gC,GAAO0xoB,GAAmBg4Y,IACzC,OAAO,SAAU3khC,GAAQqwK,IACrB,MAAMvhK,GAAU69nB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,2CAA2CrB,GAAM8jB,KAAK,OACnK6lgC,EAAgB5khC,GAAQqwK,GAAa,YAAap1K,GAAO6T,GAAS61gC,MA6yB7BtO,QA5iC7C,WAAiB1pY,GAAmBg4Y,IAChC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,WAAW,EADhCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,sBAC9CqohC,MAyiCjBvO,WAhhCtD,WAAoBzpY,GAAmBg4Y,IACnC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,cAAc,EADnCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,yBAC3CqohC,MA6gCRrO,UAz2BlE,YAAmBr7gC,GAAO0xoB,GAAmBg4Y,IACzC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,YAAap1K,GADlC0xoB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,+BAA+BrB,iBAC1E0phC,MAs2BGpO,UAt4B7E,WAAmBt7gC,GAAO0xoB,GAAmBg4Y,IACzC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,YAAap1K,GADlC0xoB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,kBAAkBrB,iBAC7D0phC,MAm4BcnO,WA5oCxF,WAAoBj8+B,GAAIoq/B,IACpB,OAAO,SAAU3khC,GAAQqwK,IACrBu02B,EAAgB5khC,GAAQqwK,GAAa,aAAc91I,GAAI,GAAIoq/B,MA0oCiClO,UA50BpG,WAAmBx7gC,GAAO0xoB,GAAmBg4Y,IACzC,OAAO,SAAU3khC,GAAQqwK,IACrB,MAAMvhK,GAAU69nB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,4CAA4CrB,GAAM8jB,KAAK,OACpK6lgC,EAAgB5khC,GAAQqwK,GAAa,YAAap1K,GAAO6T,GAAS61gC,MA00BtEzkxB,OAtxBJ,WAAgBjlQ,GAAO0xoB,GAAmBg4Y,IACtC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,SAAUp1K,GAD/B0xoB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,6BAA6BrB,KAC3E0phC,MAmxB3DjO,UA3vBZ,WAAmBz7gC,GAAO0xoB,GAAmBg4Y,IACzC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,YAAap1K,GADlC0xoB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,yBAAyBrB,KACpE0phC,MAyvBtEhO,cAzqBJ,YAAuBhqY,GAAmBg4Y,IACtC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,iBAAiB,EADtCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,yBACxCqohC,MAuqBzE/N,QAtdJ,YAAiBjqY,GAAmBg4Y,IAChC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,WAAW,EADhCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,2CAC9CqohC,MAodnE9N,eA7bJ,YAAwBlqY,GAAmBg4Y,IACvC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,kBAAkB,EADvCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,8CACvCqohC,MA2b1E7N,QAhaJ,YAAiBnqY,GAAmBg4Y,IAChC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,WAAW,EADhCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,+BAC9CqohC,MA8ZnE5N,SAvYJ,YAAkBpqY,GAAmBg4Y,IACjC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,YAAY,EADjCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,gCAC7CqohC,MAqYpE3N,gBAtkBJ,YAAyBrqY,GAAmBg4Y,IACxC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,mBAAmB,EADxCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,iCACtCqohC,MAokB3E1N,aA9KJ,YAAsBh8gC,GAAO0xoB,GAAmBg4Y,IAC5C,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,eAAgBp1K,GADrC0xoB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,kCAAkCrB,YAC1E0phC,MA4KzEzN,OAjDJ,YAAgBvqY,GAAmBg4Y,IAC/B,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,UAAU,EAD/Bs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,uBAC/CqohC,MA+ClExN,cAjVJ,YAAuBxqY,GAAmBg4Y,IACtC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,iBAAiB,EADtCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,qCACxCqohC,MA+UzEvN,WA/WJ,YAAoBzqY,GAAmBg4Y,IACnC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,cAAc,EADnCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,mCAC3CqohC,MA6WtEtN,MA5uBJ,WAAe1qY,GAAmBg4Y,IAC9B,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,SAAS,EAD9Bs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,+BAChDqohC,MAyuB1DrN,KA7RX,YAAc3qY,GAAmBg4Y,IAC7B,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,QAAQ,EAD7Bs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,6BACjDqohC,MA0RnDpN,OAvOjB,YAAgB5qY,GAAmBg4Y,IAC/B,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,UAAU,EAD/Bs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,8BAC/CqohC,MAoO7CnN,MA7MzB,YAAe7qY,GAAmBg4Y,IAC9B,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,SAAS,EAD9Bs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,iCAChDqohC,MA0MrClN,aAxThC,YAAsB9qY,GAAmBg4Y,IACrC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,gBAAgB,EADrCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,8BACzCqohC,MAsTxEjN,UAzJJ,YAAmB/qY,GAAmBg4Y,IAClC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,aAAa,EADlCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,mCAC5CqohC,MAuJrEhN,WArnBJ,YAAoBhrY,GAAmBg4Y,IACnC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,cAAc,EADnCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,sCAC3CqohC,MAmnBtE/M,eApjBJ,YAAwBjrY,GAAmBg4Y,IACvC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,kBAAkB,EADvCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,iCACvCqohC,MAkjB1E9M,WA/oCJ,WAAoB8M,IAChB,OAAO,SAAU3khC,GAAQqwK,IACrBu02B,EAAgB5khC,GAAQqwK,GAAa,cAAc,EAAM,GAAIs02B,MA6oCrD7M,OArQhB,YAAgBnrY,GAAmBg4Y,IAC/B,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,UAAU,EAD/Bs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,8BAC/CqohC,MAmQlE5M,WAxpBJ,YAAoBprY,GAAmBg4Y,IACnC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,cAAc,EADnCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,sCAC3CqohC,MAspBtE3M,MAlIJ,YAAerrY,GAAmBg4Y,IAC9B,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,SAAS,EAD9Bs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,sBAChDqohC,MAgIjE1M,OAxGJ,YAAgBtrY,GAAmBg4Y,IAC/B,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,UAAU,EAD/Bs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,uBAC/CqohC,MAsGlErp0B,QAjgBJ,YAAiBrgN,GAAO0xoB,GAAmBg4Y,IACvC,OAAO,SAAU3khC,GAAQqwK,IACrB,MAAMvhK,GAAU69nB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,2BAA2BrB,GAAMoH,cAC9IuihC,EAAgB5khC,GAAQqwK,GAAa,UAAWp1K,GAAO6T,GAAS61gC,MA+fpEtp0B,QA9hBJ,YAAiBpgN,GAAO0xoB,GAAmBg4Y,IACvC,OAAO,SAAU3khC,GAAQqwK,IACrB,MAAMvhK,GAAU69nB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,6BAA6BrB,GAAMoH,cAChJuihC,EAAgB5khC,GAAQqwK,GAAa,UAAWp1K,GAAO6T,GAAS61gC,MA4hBpEzM,SA1nCJ,WAAkBvrY,GAAmBg4Y,IACjC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,YAAY,EADjCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,oBAC7CqohC,MAwnCpExM,YA7tBJ,WAAqBxrY,GAAmBg4Y,IACpC,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,eAAe,EADpCs8d,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,+BAC1CqohC,MA2tBvEvM,iBA17BJ,WAA0Bn9gC,GAAO0xoB,GAAmBg4Y,IAChD,OAAO,SAAU3khC,GAAQqwK,IAErBu02B,EAAgB5khC,GAAQqwK,GAAa,mBAAoBp1K,GADzC0xoB,IAAyC,gBAAet8d,SAAkBrwK,GAAO5I,YAAYkF,6CACpCqohC,MAw7B7EtM,cAnCJ,YAAuB9hgC,GAAQo2nB,GAAmBg4Y,IAC9C,OAAO,SAAU3khC,IAEb4khC,EAAgB,CAACxthC,YAAa,CAACkF,KAAM0D,GAAO1D,OAAQ,GAAI,gBAAiBia,GADzDo2nB,IAAyC,aAAY3soB,GAAO5I,YAAYkF,mBACEqohC,yBCjjDlG,MACI5O,cACAC,iBACAC,YAAWC,UAAS7o3B,MAAKC,MAAK6o3B,YAAWE,UAASD,aAAYE,YAAWC,YAAWC,aAAYC,YAChGv2wB,SAAQw2wB,YACRC,gBACAC,UACAC,iBACAC,UACAC,WACAC,kBACAC,eACAC,SACAC,iBACAC,aACAC,QAAOC,OAAMC,SAAQC,QAAOC,eAC5BC,aACAC,cACAC,kBACAC,cAAYC,UACZC,cACAC,SACAC,UACA38zB,WACAD,WACA68zB,YACAC,eACAC,oBACAC,kBACAj7b,EAAQ,OAEZ82P,GAAOx9R,QAAU,CACbq/d,cACAC,iBACAC,YAAWC,UAAS7o3B,MAAKC,MAAK6o3B,YAAWE,UAASD,aAAYE,YAAWC,YAAWC,aAAYC,YAChGv2wB,SAAQw2wB,YACRC,gBACAC,UACAC,iBACAC,UACAC,WACAC,kBACAC,eACAC,SACAC,iBACAC,aACAC,QAAOC,OAAMC,SAAQC,QAAOC,eAC5BC,aACAC,cACAC,kBACAC,cAAYC,UACZC,cACAC,SACAC,UACA38zB,WACAD,WACA68zB,YACAC,eACAC,oBACAC,oCCjEJ,OACA,aACA,gBACA,WACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,YACA,eACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,iBACA,oBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,kBACA,qBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,oBAIA,cACA,WACA,YAEA,cACA,cACA,8CACA,gCACApygC,EAEA,YAEAy/B,kBACA,uBAEAA,YACAq7yB,aACAr7yB,uBCvSA,0BACA,IACA,cACA5iC,gBACIqxB,GAEJ,YADAh2B,KAIAkhC,OACAqG,KAEA/vB,6BAwBAor0B,WApBA,cACA,kBACA,WACA5i1B,YACA,iCACA,mBAEA,cACAsiN,sBAGA,cACAA,uBAGAr7M,cAKoC270B,uBAAyB,EAASA,mBAAyBA,0CCiCxF,oBAEP,2CACA,gBAAoC,IAAM36oB,qBAA+Bp4E,IAAY1sH,QACrF,gBAAmC,IAAM8kM,sBAAmCp4E,IAAY1sH,QACxF,gBAAgC0mM,qBAJhC,gBAA4B,6CAA+D1mM,SAI3DH,uBAChCilM,kCA+FO,cACP,kDAGO,kBACP,qFACA,gCACA,aAAiB9kM,wEAAuF,aAAcH,GACtH,gBAAuB5B,4BAAgC,mCAAqC2B,wCAC5F,mBAA4B,KAC5B,gBAAuBm4L,8EADW+hC,kBAAiB5sE,IAAYxgC,iBAE/D,gBAA8BjpD,cAC9B,gBAA6BA,eAC7B,mBAA4Bs0H,oDASrB,cACP,qFACA,gCACA,sBA5EO,cACP,+DACA,sBACA,uCACA12L,gBACA,kCACA,CAAqB1H,2BAGrB,mFAmEAwxP,SAA2GltP,oEAAuF,aAAcF,GAChN,eAAuBA,0BAA8B,oCACrD,yBAA6CsW,sCAAsCzU,IAAUjG,oBAAuBqG,IADfH,yJCrK9F,iBACP,oCACA,kCAAiD5B,KAAOA,IAExD,cADAF,eACAlC,0DAEA,UAEAgB,yBAeO,oBACP,uFACA,mGACA,sBAA6C4mE,MAAQA,gEACrD,kDAWO,oBAEP,2CACA,gBAAoC,IAAMqhI,qBAA+Bp4E,IAAY1sH,QACrF,gBAAmC,IAAM8kM,sBAAmCp4E,IAAY1sH,QACxF,gBAAgC0mM,qBAJhC,gBAA4B,6CAA+D1mM,SAI3DH,uBAChCilM,ohUC3Ea2xF,kBACGA,UAAcvtR,eAAG,GADpButR,OvwEED,YAAZ,OAAYlgS,SAibX,KAhbAA,0DACAA,qFACAA,mFACAA,yEACAA,uEACAA,iFACAA,+EACAA,+EACAA,qGACAA,uGACAA,2DACAA,uDACAA,qDACAA,uDACAA,+DACAA,2DACAA,6DACAA,2DACAA,2DACAA,6DACAA,qDACAA,iEACAA,iDACAA,+DACAA,+CACAA,iDACAA,+CACAA,uDACAA,2CACAA,mEACAA,+DACAA,yEACAA,+DACAA,2DACAA,2DACAA,2DACAA,iEACAA,qGACAA,qGACAA,iEACAA,2GACAA,2HACAA,2FACAA,yFACAA,2EACAA,uIACAA,uJACAA,mFACAA,qHACAA,mHACAA,6FACAA,mGACAA,iHACAA,iIACAA,2FACAA,qHACAA,qIACAA,yGACAA,uFACAA,2FACAA,iGACAA,uFACAA,mFACAA,6DACAA,uCACAA,iDACAA,mDACAA,6DACAA,2DACAA,6FACAA,2GACAA,mDACAA,uEACAA,uFACAA,2EACAA,iEACAA,+EACAA,2EACAA,6FACAA,2EACAA,uEACAA,uEACAA,iGACAA,yEACAA,yFACAA,uDACAA,uEACAA,+DACAA,qEACAA,iGACAA,qEACAA,uFACAA,6EACAA,6FACAA,qEACAA,qFACAA,6FACAA,6GACAA,uEACAA,6EACAA,6DACAA,mEACAA,mFACAA,6FACAA,uFACAA,qEACAA,2DACAA,6DACAA,6DACAA,6DACAA,qEACAA,yDACAA,mEACAA,2FACAA,6EACAA,uFACAA,uEACAA,mGACAA,yEACAA,6DACAA,+DACAA,uFACAA,6FACAA,yEACAA,qFACAA,yEACAA,iDACAA,iEACAA,qDACAA,uDACAA,6DACAA,qDACAA,iEACAA,qEACAA,+DACAA,mDACAA,6DACAA,mDACAA,uFACAA,mDACAA,yDACAA,qEACAA,+EACAA,uEACAA,qFACAA,2EACAA,qFACAA,iCACAA,+CACAA,2CACAA,yCACAA,mEACAA,+DACAA,uEACAA,iEACAA,2FACAA,qEACAA,iFACAA,uEACAA,uEACAA,yEACAA,yDACAA,+DACAA,yCACAA,iFACAA,+FACAA,+GACAA,yHACAA,iGACAA,uGACAA,2GACAA,uHACAA,iGACAA,iHACAA,uGACAA,2GACAA,qFACAA,iFACAA,yEACAA,6EACAA,iGACAA,iDACAA,6DACAA,yDACAA,6CACAA,6CACAA,yDACAA,qDACAA,uDACAA,uEACAA,yDACAA,mDACAA,qDACAA,yEACAA,uDACAA,qCACAA,iDACAA,uEACAA,iGACAA,mGACAA,qEACAA,2EACAA,mFACAA,yDACAA,mEACAA,qEACAA,yEACAA,2DACAA,+DACAA,mFACAA,+FACAA,+DACAA,mFACAA,6DACAA,2DACAA,6FACAA,iFACAA,yFACAA,iFACAA,2DACAA,mEACAA,mEACAA,uFACAA,mFACAA,yEACAA,mFACAA,iGACAA,2FACAA,mEACAA,yEACAA,iFACAA,uEACAA,yFACAA,iEACAA,qEACAA,iDACAA,iEACAA,6FACAA,6FACAA,yFACAA,6FACAA,yEACAA,6FACAA,+EACAA,+DACAA,2EACAA,mFACAA,mGACAA,yHACAA,mGACAA,qHACAA,yHACAA,6FACAA,uEACAA,iFACAA,yFACAA,6FACAA,yFACAA,mEACAA,qFACAA,2EACAA,yFACAA,qFACAA,2FACAA,yGACAA,mFACAA,qGACAA,yGACAA,+FACAA,+FACAA,mHACAA,6HACAA,mGACAA,yHACAA,6HACAA,yFACAA,mEACAA,qFACAA,yFACAA,+EACAA,mFACAA,yGACAA,yHACAA,iGACAA,iHACAA,iHACAA,6CACAA,iEACAA,6DACAA,yEACAA,yGACAA,mEACAA,6CACAA,uDACAA,6EACAA,6CACAA,uDACAA,uDACAA,6CACAA,uDACAA,yDACAA,yDACAA,2DACAA,yDACAA,uCACAA,6DACAA,+DACAA,uDACAA,qDACAA,mEACAA,qDACAA,uEACAA,+DACAA,6DACAA,iEACAA,6DACAA,mDACAA,iDACAA,yDACAA,+EACAA,6FACAA,+GACAA,iGACAA,iEACAA,2EACAA,yEACAA,qEACAA,mDACAA,mDACAA,qDACAA,qDACAA,2DACAA,qDACAA,qDACAA,2DACAA,qEACAA,mEACAA,iEACAA,uEACAA,uDACAA,iEACAA,iEACAA,yEACAA,uEACAA,qEACAA,yDACAA,mFACAA,+EACAA,uDACAA,uEACAA,qFACAA,qGACAA,+EACAA,6EACAA,mFACAA,+EACAA,6EACAA,2EACAA,+FACAA,yEACAA,+GACAA,uDACAA,mEACAA,iEACAA,yGACAA,uFACAA,uFACAA,uFACAA,uFACAA,uFACAA,uFACAA,uFACAA,uFACAA,uFACAA,uFACAA,uFACAA,qFACAA,2FACAA,2EACAA,2FACAA,qEACAA,mFACAA,iFACAA,6EACAA,qEACAA,mDACAA,6CACAA,+EACAA,+CACAA,iGACAA,yFACAA,iFACAA,mFACAA,qEACAA,2EACAA,yEACAA,6FACAA,+FACAA,+FACAA,uGACAA,+GACAA,2HACAA,2IACAA,qIACAA,iGACAA,+GACAA,yIACAA,+IACAA,uIACAA,+IACAA,uHACAA,6HACAA,qHACAA,6HACAA,2HACAA,iIACAA,yHACAA,iIACAA,iHACAA,uHACAA,+GACAA,uHACAA,+GACAA,qHACAA,6GACAA,qHACAA,6GACAA,mHACAA,2GACAA,iIACAA,mHACAA,6GAhbW6tC,EAAZ,IAAY7tC,OAmbAsG,QAAZ,OAAYrG,SAYX,KAXAA,mBACAA,sBACAA,uBACAA,sBACAA,0BACAA,yBACAA,yBACAA,0BACAA,8BACAA,8BACAA,0BAXWqG,EAAZ,IAAYrG,OAcAqsD,QAAZ,OAAYpsD,SAsFX,KArFAA,0BACAA,6BACAA,uDACAA,uDACAA,yCACAA,+BACAA,+BACAA,+BACAA,2BACAA,yCACAA,yCACAA,2CACAA,2CACAA,iCACAA,iCACAA,+CACAA,+CACAA,6BACAA,6DACAA,6BACAA,mCACAA,mCACAA,qDACAA,mCACAA,mCACAA,qCACAA,qCACAA,iDACAA,iDACAA,mCACAA,mCACAA,mCACAA,mCACAA,iCACAA,iCACAA,uCACAA,mDACAA,2BACAA,yCACAA,+BACAA,+BACAA,+BACAA,+BACAA,iCACAA,2BACAA,uCACAA,6CACAA,+BACAA,qCACAA,yDACAA,mCACAA,mCACAA,qCACAA,+DACAA,2DACAA,+DACAA,+DACAA,6DACAA,6DACAA,iEACAA,iEACAA,+DACAA,+DACAA,+CACAA,+CACAA,+CACAA,+CACAA,6DACAA,iEACAA,iEACAA,uDACAA,2CACAA,qCACAA,yEACAA,yEACAA,mDACAA,mDACAA,iCACAA,uDACAA,iDACAA,qDACAA,qDACAA,mDACAA,mDACAA,6DArFWosD,EAAZ,IAAYpsD,OAwFAkO,QAAZ,OAAYo+P,SAOX,KANAA,mCACAA,wCACAA,4CACAA,gDACAA,6DACAA,2BANWp+P,EAAZ,IAAYo+P,OwwExhBA9sP,QAAZ,OAAYstgC,SAKX,KAJCA,wCACAA,2DACAA,2CACAA,6DAJUttgC,EAAZ,IAAYstgC,eAOZzthC,cACWE,UAAOuthC,EAAmBC,2BAMnC1thC,YAAmBC,SAAOA,QAAP+gnB,GAFV9gnB,UAAOuthC,EAAmBE,mCASnC3thC,YAAmBC,SAAOA,QAAP+gnB,GAFV9gnB,UAAOuthC,EAAmBG,2BASnC5thC,YAAmBC,SAAOA,QAAP+gnB,GAFV9gnB,UAAOuthC,EAA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","names":["SoilSampleFieldActions","constructor","payload","this","SAMPLE_TRACKS_SHAPE_EXPORT","SAMPLE_TRACKS_SHAPE_EXPORT_SUCCESS","SAMPLE_POINTS_EXCEL_EXPORT","SAMPLE_POINTS_EXCEL_EXPORT_SUCCESS","SAMPLE_TRACKS_INFO","SAMPLE_TRACKS_INFO_SUCCESS","ApCustomTypes","NetTypes","ApPermissions","ApCoreModule","CookieService","ApErrorhandlerService","ApWindowHelperService","imports","CommonModule","FormsModule","ButtonModule","ToolBarModule","DropDownButtonModule","ApTranslationModule","DateInputsModule","ApIconModule","ApMapModule","ApHelpModule","GridModule","PDFModule","DropDownsModule","LayoutModule","InputsModule","ApUtilsModule","DialogsModule","PagerModule","PopupModule","FilterMenuModule","ApDynformsModule","ApResponsiveTextModule","ApTooltipModule","ApPermissionModule","TooltipModule","ButtonsModule","LoaderModule","SVGIconModule","ProgressBarModule","NgScrollbarModule","IconModule","ApGridPagerComponent","ApGridPagerNumericComponent","i2","ApGridPageSizeComponent","ApGridMultiSelectComponent","i3","ApGridWizardComponent","i0","ApBreadcrumbsSteperComponent","getKeys","keys","columns","getInt","value","parseInt","selectors","ctx_r3","ctx_r5","oxw","ctx_r18","ctx_r22","ctx_r29","ctx_r32","ctx_r33","ctx_r35","ctx_r37","ctx_r39","ctx_r41","translationStore","ApGridPagerType","EventEmitter","maximumFractionDigits","minimumFractionDigits","minimumIntegerDigits","name","FindTranslationForSelectedLanguage","id","undefined","label","ngOnInit","objects","ApUtilService","_subscriptions","push","subscribe","map","f","Object","Y","length","preselect","selectedColumn","selectedColumnChanged","_updateSelectedData","showOnlyValues","values","selectedValue","find","v","placeholder","valueDefaultItem","ngOnDestroy","forEach","s","unsubscribe","ngOnChanges","changes","formConfig","first","ApDynformsConfigTabs","tabs","ApDynformsConfigFieldset","fieldSets","selectedKeys","currentValue","selectedItems","selectedValueChanged","$event","selectedValueChange","emit","type","X","_a","J","_b","selectedColumnChange","isApplyButtonEnabled","disabled","extendedInput","form","valid","extractValueFromInputEvent","target","applyButtonClicked","param","object","applyClicked","unselect","onFadeInOutStart","e","fromState","startInAnimation","toState","startOutAnimation","onFadeInOutDone","endInAnimation","endOutAnimation","getErrors","updatedColumns","x","_e","le","_c","_d","Te","trigger","state","style","opacity","transform","transition","height","animate","campaignYearStore","BehaviorSubject","APP_CONFIGURATION","gridPageSizeOption","pageSizeItems","text","toString","resetToDefault","Listen","_","selectedYear","pageSizeChanged","next","valueChange","pageSizeItem","d","ctx","ctx_r6","ctx_r9","ctx_r11","ctx_r15","rows","horizontal","vertical","direction","duration","ngAfterContentInit","currentPage","pagerContextService","skip","pageSize","pipe","page","chunks","_getChunks","pageView","combineLatest","chunkPage","filter","getColumn","getRow","Math","floor","onPageChange","newPage","changePage","togglePopup","show","dimension","documentClick","event","_contains","changeChunkPage","n","onWheel","deltaY","anchor","nativeElement","contains","popup","arr","Array","ceil","max","total","fill","i","slice","ElementRef","ctx_r12","ctx_r13","ctx_r14","ctx_r16","ctx_r17","button_r20","CHM","button_r24","translationPipe","Objects","_objects","filteredIconButtons","B","R","iconButtons","callback","icon","itemCount","getDimensions","buttonCountOffset","buttonCount","currentPageChange","onSelectedColumnChange","onSelectedValueChange","setSelectedColumn","column","gridMultiSelect","setSelectedValue","columnValue","numOfPages","tmp","dimensions","onPageSizeChanged","forwardRef","ApTranslationPipe","ctx_r8","ctx_r10","_formSubject$","mergeMap","valueChanges","delay","formValues$","submitDisabled","submitDisabled$","DynForm","dynForm","enableMassEdit","$","V","showMassEdit","formValues","_getFormValues","setTimeout","patchValue","onApplyClick","applyClick","toggleMassEdit","result","q","config","fieldSet","controlType","ApDynformsControltype","key","data","every","item","ApDynformsComponent","BackendAddress","environment","StartPage","TooltipDelay","DefaultLanguage","MaxNotifications","WriteMissingTranslations","SpecialDecimalPlaces","UploadSaveUrl","UploadRemoveUrl","AcademyUrl","TeamViewerUrl","ButtonZoomToMapImage","RoundNumericPlaces","ParallelFileUpload","ProfilerOn","DebugMode","LongRunningFunctionFilter","GridPageSize","GridPageSizeOptions","StoreKeys","MapFactory","Revision","ApResponsiveDirective","element","Space","_elementMargin","_elementPadding","_elementBorder","_registerWindowEvents","_calculateSpaces","cssFloat","_windowX","window","innerWidth","_windowY","innerHeight","_calcWidth","addEventListener","bl","CssValueParser","borderLeft","br","borderRight","console","warn","pl","paddingLeft","pr","paddingRight","ml","marginLeft","mr","marginRight","sizeMd","Error","width","_parseSize","sizeSm","sizeLg","sizeXl","includes","split","base","full","isNaN","backend","confirmedError$","registerObservable","LogClientError","message","farmId","stackTrace","fullState","meta","send","Name","Type","Value","Message","FarmId","StackTrace","FullState","Meta","factory","DateDiffType","DateSort","ApDateService","settingsStore","getUtc","moment","toDate","getNow","Date","now","dateToMoment","date","getLatestDate","firstDate","secondDate","getDateDiff","diffType","Days","diff","Hours","Minutes","getUniqDates","dates","sort","None","reduce","uniqueDates","currentDate","abs","Seconds","Descending","getTime","getDateNoon","day","dayNumber","getDate","getFullYear","getMonth","getDateNoonToFarmTime","noonDate","toFarmDate","getDateMidnight","getEndOfDayDate","setHours","getUtcDate","format","settings","FarmTime","tz","toJsDate","givenMoment","year","month","hour","minutes","second","FirstSetting","toFarmDateFromUtc","farmTime","getFarmDate","toFarmDateFromUtcGetJsDate","toUtc","getNowDifferenceUTC","date1","date2","TimeSpan","ds1","_parseDateToISOString","ds2","DateTime","ms","ToUnixTimestamp","getDateWithTimeFromMilliseconds","timeInMilliseconds","timeSpan","Hour","setMinutes","Minute","setSeconds","Second","setMilliseconds","Millisecond","toISOString","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","retryDelays","_retryDelays","nextRetryDelayInMilliseconds","retryContext","previousRetryCount","Ni","Wi","tn","Hi","Ne","Promise","wo","HeaderNames","Authorization","Cookie","statusCode","statusText","content","get","url","options","z_","method","post","delete","getCookieString","HttpClient","innerClient","accessTokenFactory","super","_innerClient","_accessTokenFactory","request","allowRetry","_accessToken","indexOf","_setAuthorizationHeader","response","c","headers","errorMessage","trueProto","prototype","__proto__","transport","errorType","innerErrors","LogLevel","Trace","Debug","Information","Warning","Critical","log","_logLevel","_message","NullLogger","instance","static","val","match","isBrowser","Platform","isNode","document","isWebWorker","self","isReactNative","process","release","includeContent","detail","isArrayBuffer","byteLength","view","Uint8Array","str","num","substr","formatArrayBuffer","ArrayBuffer","Vn","logger","transportName","httpClient","getUserAgentHeader","getDataDetail","logMessageContent","responseType","Gp","timeout","withCredentials","subject","observer","_subject","_observer","dispose","index","observers","splice","cancelCallback","catch","minimumLogLevel","_minLevel","out","logLevel","msg","error","info","userAgentHeaderName","constructUserAgent","getOsName","getRuntimeVersion","version","os","runtime","runtimeVersion","userAgent","majorAndMinor","platform","versions","node","stack","_logger","fetch","requireFunc","__non_webpack_require__","_jar","CookieJar","_fetchType","bind","globalThis","global","getGlobalThis","AbortController","_abortControllerType","abortSignal","aborted","AbortError","abortController","onabort","abort","timeoutId","TimeoutError","body","cache","credentials","mode","redirect","signal","clearTimeout","ok","deserializeContent","HttpError","status","HttpResponse","cookies","getCookies","join","arrayBuffer","reject","resolve","xhr","XMLHttpRequest","open","setRequestHeader","header","onload","responseText","onerror","ontimeout","_httpClient","FetchHttpClient","XhrHttpClient","HttpTransportType","WebSockets","ServerSentEvents","LongPolling","TransferFormat","Text","Binary","_isAborted","pollAborted","_pollAbort","_options","_running","onreceive","onclose","connect","transferFormat","Arg","Bn","_url","pollOptions","pollUrl","_closeError","_receiving","_poll","_raiseOnClose","sendMessage","stop","deleteOptions","err","logMessage","accessToken","encodeURIComponent","eventSource","opened","EventSource","onmessage","_close","onopen","_eventSource","close","webSocketConstructor","_logMessageContent","_webSocketConstructor","_headers","token","webSocket","replace","binaryType","_event","_webSocket","ErrorEvent","readyState","OPEN","_isCloseEvent","wasClean","code","reason","_stopPromiseResolver","features","_negotiateVersion","ConsoleLogger","createLogger","baseUrl","_resolveUrl","webSocketModule","eventSourceModule","WebSocket","AccessTokenHttpClient","DefaultHttpClient","_connectionState","_connectionStarted","start","_startInternalPromise","_startInternal","_stopPromise","_sendQueue","TransportSendQueue","_stopInternal","_stopError","_stopConnection","skipNegotiation","_constructTransport","_startTransport","negotiateResponse","redirects","_getNegotiationResponse","ProtocolVersion","_createTransport","LongPollingTransport","inherentKeepAlive","negotiateUrl","_resolveNegotiateUrl","JSON","parse","negotiateVersion","connectionToken","connectionId","useStatefulReconnect","_useStatefulReconnect","FailedToNegotiateWithServerError","_createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","so","_isITransport","transportExceptions","transports","availableTransports","negotiate","endpoint","transportOrError","_resolveTransportOrError","ex","FailedToStartTransportError","AggregateErrors","WebSocketTransport","ServerSentEventsTransport","reconnect","callStop","disconnected","resend","actualTransport","transportMatches","DisabledTransportError","transferFormats","UnsupportedTransportError","lastIndexOf","aTag","createElement","href","URL","pathname","endsWith","searchParams","URLSearchParams","has","append","search","_transport","_buffer","_executing","_sendBufferedData","PromiseSource","_transportResult","_sendLoopPromise","_sendLoop","_bufferData","promise","transportResult","_concatBuffers","arrayBuffers","totalLength","b","a","offset","set","buffer","_resolver","_rejecter","output","TextMessageFormat","RecordSeparator","input","messages","pop","RecordSeparatorCode","String","fromCharCode","writeHandshakeRequest","handshakeRequest","stringify","parseHandshakeResponse","messageData","remainingData","binaryData","separatorIndex","responseLength","apply","call","textData","substring","MessageType","Invocation","StreamItem","Completion","StreamInvocation","CancelInvocation","Ping","Close","Ack","Sequence","complete","SubjectSubscription","protocol","connection","bufferSize","_bufferSize","_messages","_totalMessageCount","_waitForSequenceMessage","_nextReceivingSequenceId","_latestReceivedSequenceId","_bufferedByteCount","_reconnectInProgress","_protocol","_connection","_send","serializedMessage","writeMessage","backpressurePromise","_isInvocationMessage","backpressurePromiseResolver","backpressurePromiseRejector","BufferedItem","_disconnected","_ack","ackMessage","newestAckedMessage","_id","sequenceId","H","_shouldProcessMessage","currentId","_ackTimer","_resetSequence","_resend","_dispose","_rejector","_ackTimerHandle","resolver","rejector","HubConnectionState","Disconnected","Connecting","Connected","Disconnecting","Reconnecting","reconnectPolicy","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","statefulReconnectBufferSize","HubConnection","_nextKeepAlive","_freezeEventListener","_statefulReconnectBufferSize","_reconnectPolicy","_handshakeProtocol","HandshakeProtocol","_processIncomingData","_connectionClosed","_callbacks","_methods","_closedCallbacks","_reconnectingCallbacks","_reconnectedCallbacks","_invocationId","_receivedHandshakeResponse","_cachedPingMessage","_startPromise","_startWithStateTransitions","_stopDuringStartError","handshakePromise","_handshakeResolver","_handshakeRejecter","_sendMessage","_cleanupTimeout","_resetTimeoutPeriod","_resetKeepAliveInterval","_messageBuffer","MessageBuffer","_cleanupPingTimer","startPromise","_reconnectDelayHandle","_completeClose","_sendCloseMessage","_sendWithProtocol","_createCloseMessage","stream","methodName","args","streams","streamIds","_replaceStreamingParams","invocationDescriptor","_createStreamInvocation","promiseQueue","Subject","cancelInvocation","_createCancelInvocation","invocationId","then","invocationEvent","_launchStreams","sendPromise","_createInvocation","invoke","To","on","newMethod","toLowerCase","off","handlers","removeIdx","onreconnecting","onreconnected","_processHandshakeResponse","parseMessages","_invokeClientMethod","getErrorString","allowReconnect","responseMessage","_timeoutHandle","serverTimeout","_pingServerHandle","nextPing","invocationMessage","methods","_createCompletionMessage","methodsCopy","expectsResponse","res","exception","completionMessage","m","prevRes","arguments","_cancelCallbacksWithError","_reconnect","removeEventListener","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","_getNextRetryDelay","elapsedMilliseconds","retryReason","callbacks","nonblocking","streamId","wi","_createStreamItemMessage","argument","_isObservable","arg","hubMessages","parsedMessage","_isStreamItemMessage","_isCompletionMessage","_isAckMessage","_isSequenceMessage","_assertNotEmptyString","LogLevelNameMapping","trace","debug","information","warning","critical","none","configureLogging","logging","isLogger","mapping","parseLogLevel","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","isArray","DefaultReconnectPolicy","withServerTimeout","milliseconds","_serverTimeoutInMilliseconds","withKeepAliveInterval","_keepAliveIntervalInMilliseconds","withStatefulReconnect","build","HttpConnection","JsonHubProtocol","Worker","ApSignalrService","established","initializeConnection","getListenerByActionType","AgriportSessionActions","Data","_clientSession","DATA","atob","action","invokerArguments","btoa","browserTabId","opt","errorMsg","_stackErrorMessage","StackTraceString","validationError","ValidationResults","inner","InnerException","signalR","buildUrl","raw","_handleIncoming","dataParser","_incoming","dataPacker","_sendPacket","tabId","versionGetter","disconnect","actionType","_listeners","listener","isDebugMode","padEnd","_handleSend","pack","retry","times","interval","cb","isLoggedIn","cookieGetter","supportWebWorkers","postMessage","_parseData","_packData","Context","_handleError","Guid","ToString","NetworkStatus","registerOnResize","openSite","registerNetworkStatus","networkStatusDelegate","Offline","Online","getLocationOrigin","location","origin","isTouchDevice","navigator","maxTouchPoints","unit","trim","parseFloat","variableName","getComputedStyle","documentElement","getPropertyValue","hex","alpha","nameOf","ctx_r1","ctx_r4","ApDynComponentComponent","of","ApDynGridPagerConfigBase","checkboxOnly","enabled","DynGrid","dynGrid","gridSubject","SelectedItems$","grid","gridPaging","onSelectedItemChange","sortable","form$","distinctUntilChanged","previous","current","ObjectFactory","FormValues$","statusChanges","Valid$","wizardSubject$","wizard","PagerValues$","fieldsets","getForm","getFormValue","getRawValue","filterChange","getSelectedItems","gridIsInitialized","gridInitialized","saveGridDescriptors","getValue","gridDescriptors","getDescriptors","loadGridDescriptors","setDescriptors","ApDynGridsComponent","ApDynComponentModule","ApDynGridsModule","list","l","isEqual","validateList","validator","errorKey","always","invalidIds","ApDynformsConfigService","control","enable","disable","group","validators","asyncValidators","addControl","FormControl","updateOn","subscribeToDependencies","subscriptions","fs","dependsOn","depends","dependsControl","st","_setControl","subscribeToListener","listenUpdate","updateValueAndValidity","toFormGroup","formValidators","formAsyncValidators","FormGroup","fieldset","configs","array","position","idx","ApValidator","_addControl","end","setValidators","setAsyncValidators","configService","translationService","mapViewStore","switchMap","caption","mapViewState$","newErrors","errors","ot","setErrors","controls","FormArray","_markAllControlsAsTouched","markAsTouched","buildForm","validChanges","pristineChanges","_pristine","dirtyChanges","_dirty","touchedChanges","_touched","initialized","_tabSubscriptions","firstChange","_setupTabs","defaultValue","_formValue","hasOwnProperty","formValueChanges","pristine","dirty","touched","_dependenciesSubscriptions","_listenerSubscriptions","_ensureFieldSetsHaveValue","_removeEmptyEntries","tab","chunkFieldSet","fieldsetsOrder","legend","row","onSubmitDynForm","apSubmit","tabSelect","select","_tabSelected","_selectTab","getSpan","kind","getColumnGap","isStatic","columnGap","findIndex","selected","_tabDisabled","_findAvailableTab","tabStrip","selectTab","t","display","params","margin","__decorate","Le","ctx_r23","ctx_r36","ctx_r38","ctx_r47","ctx_r49","ctx_r60","ctx_r62","ctx_r63","ctx_r64","ctx_r65","ctx_r74","ctx_r76","ApDynformsElementComponent","languageStore","ApDynformsConfigTextboxType","selectedLanguage","Key","_datePickerComponent","Tn","Gi","popupRef","popupOpen","language","SelectedLanguage","DatePicker","key$","_datePickerPopupOpened","calendar","_calendarComponent","merge","activeView","activeViewChange","languageKey$","languageKey","calendarView$","ngAfterViewInit","isPasswordTextBox","Ye","textBoxComponent","textBoxConfig","autocomplete","disabled$","value$","setValue","label$","currentLabelChanged","validationMessages","formErrorKey","formErrors","formError","validatorFnKeys","validatorFnKey","validatorFnResult","GetCalendarItem","calendarView","locale","togglePasswordVisibility","nativePasswordTextbox","TextBoxComponent","DatePickerComponent","ApDynformsArrayComponent","_displayItems","validate","min","_valuesChange","_setupControls","arrayMax","formGroup","tokens","getArrayName","getArrayFormGroup","arrayControls","_valuesValidate","emitEvent","k","lastComplete","extendOn","SanitizeIdPipe","parentKey","parentIndex","prefix","concat","ReplaceAll","pure","ApDynformsDateRangeComponent","startKey","endKey","getHtmlId","PasswordStrengthService","newstring","charAt","percent","pwd","nScore","nLength","nAlphaUC","nAlphaLC","nNumber","nSymbol","nMidChar","nRequirements","nUnqChar","nRepChar","nRepInc","nConsecAlphaUC","nConsecAlphaLC","nConsecNumber","nSeqAlpha","nSeqNumber","nSeqSymbol","nReqChar","nTmpAlphaUC","nTmpAlphaLC","nTmpNumber","nTmpSymbol","arrPwd","arrPwdLen","_n","bCharExists","sFwd","sRev","strReverse","arrChars","arrCharsIds","arrCharsLen","minVal","nMinPwdLen","nMinReqChars","PasswordStrengthComponent","passwordStrengthService","loaded","labelSuffix","labelTranslationKey","tooltip","tooltipTranslationKey","tooltipText","statesTextVeryWeak","stateVeryWeakTranslationKey","statesTextWeak","stateWeakTranslationKey","statesTextGood","stateGoodTranslationKey","statesTextStrong","stateStrongTranslationKey","statesTextVeryStrong","stateVeryStrongTranslationKey","labelChanged","strength","markerStyle","lowSecurityPasswordError","ApFileUploadMessagesDirective","Messages","localizationService","_registerFileIsNotUniqueMessage","registerMessage","messagesToRegister","fileValidationError","translatedValue","translate","ErrorMessage","register","ErrorKey","fileIsNotUnique","provide","useExisting","MediaFileService","fileService","dateService","generateThumbnail","file","thumbnail","fileReader","FileReader","blobUrl","createObjectURL","getFileType","FileType","_getImageThumbnailFileData","revokeObjectURL","_getVideoThumbnailFileData","readAsArrayBuffer","blobFileUrl","img","Image","_generateThumbnailFileData","src","mimeType","video","onloadedmetadata","videoWidth","videoHeight","currentTime","onseeked","source","_isValidMimeType","appendChild","mediaElement","_generateHtmlCanvas","Width","Height","toBlob","blob","resizedFile","File","MimeType","lastModified","Quality","canvas","getContext","drawImage","FileUploadHtmlService","addMediaFileThumbnail","uploadComponentElementRef","mediaFileData","onClickCallback","fileHtmlElement","_getFileHtmlElement","FileInfoData","uid","childElement","Wt","querySelector","fileElementForPreview","alt","ThumbnailDataUrl","cssText","onclick","replaceWith","addFileIconClick","addUploadDateToFile","fileInfoData","fileInfoSpanContainer","uploadedAtTranslation","spanForUploadedAt","className","innerHTML","UploadDate","toLocaleDateString","FileState","fileStatusSpan","removeChild","addReadyToUploadInfo","fileNameSpan","spanForReadyToUpload","after","addDownloadButton","downloadIcon","downloadButton","downloadButtonState","fileId","isLoading","removeAllReadyToUpload","readyToUploadSpans","querySelectorAll","readyToUploadSpan","remove","ApUploadFakeStreamService","Map","createUploadStream","uploadStreams","removeUploadStream","getUploadStream","updateProgress","progress","HttpEventType","completeUpload","failUpload","clearAllUploadStreams","clear","ctx_r20","ApFileUploadComponent","mediaFileService","fileUploadHtmlService","fileUploadComponentService","fileUploadFakeStream","elementRef","sanitizer","allowedExtensions","getAllFiles","uploadFileComponent","fileList","filesFlat","_viewContainer","closest","_thumbnailSettings","_settingsForThumbnail","filePreviewModalDialogData","_generateFilePreviewModalDialogData","validateWithForm","addValidators","_filesValidator","modifyHttpSubscriptionProperties","_setValuesToControl","_initialFiles","_adjustFileHtmlData","_clearPreviewFilesData","subscription","onResize","showFilePreview","_resizeFilePreviewModal","onClick","event$","_closeFilePreviewModal","onFileSelect","fileDataInfos","files","_adjustInformationForFilesOnSelect","_onSelectFilesValidation","fileSelect","onFileRemove","fileRemove","onFilesClear","preventDefault","filesToKeep","updatedFiles","onFileUpload","rawFile","_readyToUploadStatusClassName","fileUpload","fileProcess","setUploadFinished","setUploadProgress","setUploadFailed","onFileUploadProgress","fileUploadProgress","onFileUploadSuccess","fileUploadSuccess","onFileUploadError","fileError","onFilePreviewDialogClose","_isModalDialogOpened","ShowDialog","MediaFileData","ActiveIndex","selectedFilePreview","_loadFileData","getSafeUrl","bypassSecurityTrustUrl","copiedFiles","emitModelToViewChange","isSomeOfFilesNotUploaded","some","isSomeOfFileAreInvalid","Xe","validationErrors","required","filesInfoData","allSelectedFiles","fileInfo","allowOnlyUniqFiles","isSameFileIsExist","customFileValidation","validationResult","uploadMessages","fileDataInfo","previewFileData","previewFilesData","ContentDataUrl","IsError$","IsFileLoaded$","generatePreviewHtmlLogic","autoUpload","isFileHaveInitOrSelectState","allowDownload","_onFileDownload","contentDataUrl","_createObjectUrl","isMediaFile","ThumbnailFile","_openPreview","mediaDataIndex","Height$","_getFilePreviewModalHeight","saveAs","previewFileDataAfterDownload","afterDownloadCallBack","fileDownloadProcessCallback","base64FileData","Base64","updateRawFileData","filesToRemove","fileIdsToRemove","filePreview","eventTarget","dialogComponentElementRef","filePreviewDialog","offsetHeight","_defaultFilePreviewModalHeight","UploadComponent","ApFileUploadInterceptor","fileUploadFakeStreamService","intercept","req","handle","ApControlBlinkDirective","el","ngZone","controlContainer","onFocus","isFocused","onBlur","onAnimationEnd","classList","ANIMATION_NAME","getAttribute","previousValue","Yn","We","wt","registerOnChange","getValueRepresentation","startAnimation","run","$t","add","HTTP_INTERCEPTORS","useClass","multi","ReactiveFormsModule","HttpClientModule","ApSectionHeaderModule","UploadModule","SharedModule","DialogModule","IndicatorsModule","ScrollViewModule","i1","i8","i4","i13","i14","dataCy","data_cy","infoText","cssClass","ApDynformsConfigBase","disabledButton$","valuePrimitive","optionsIn","groupByField","textField","o","ApTranslationService","_filter","oIn","filterString","filterOptions","FindAll","ApDynformsConfigComboBox","_containsFilter","groupBy","field","disabledOptions","valueField","clearButton","loading$","loading","itemTemplate","noData","noDataTemplate","noDataString","dateCellDyer","minDate$","minDate","maxDate$","maxDate","topView","bottomView","useMaxWidth","arrayConfig","before","asyncTranslation","hideLegend","class","ApDynformsConfigMultiSelect","spinners","autoCorrect","readonly","step","dynamicSteps","dynamicStep","decimals","title","u","Function","disabledFn","nowButton","steps","hSteps","minute","minSteps","secSteps","uploadSaveUrl","uploadRemoveUrl","selectText","uploadSelectedFilesText","clearSelectedFilesText","dropFilesHereText","multiple","onlyUniqueFiles","removeEventHandler","uploadEventHandler","errorEventHandler","successEventHandler","uploadProgressEventHandler","restrictions","_setRestrictions","downloadFileCallback","Number","isFinite","maxFileSize","minFileSize","ApFileUploadComponentService","createFileInfoData","uploadDate","fileExtension","FileName","extension","size","Size","thumbnailFileExtension","_getExtensionFromMimeType","base64StringToFileData","fileType","fileToCompare","compareWith","g","httpSubscription","prop","descriptor","getOwnPropertyDescriptor","enumerable","defineProperty","dateFromControlName","dateToControlName","dateFromControl","dateToControl","dateFrom","dateTo","ValidateDateRange","INVALID_ID","validatorFn","_sendItemIds","_errorObject","asyncValidatorFn","Observable","tap","r","catchError","errorMetaData","errorObject","startsWith","roundNumericService","sortSettings","_sortBySelectionField","dir","gridView","take","groups","getAllDataForExcel","getSelectedDataForExcel","ApDynGridColumnControlType","agg","ApKendoGridExtension","_extractGroups","groupColumns","init","limit","template","PropertyTemplate","original","Replace","roundAsNumber","setSelectedKeys","items","unfilteredItems","loadData","setDefaultFilter","filters","_flatColumns","ct","defaultFilter","operator","logic","columnChange","filterableColumns","_getFilterColumns","_getGroups","_getSort","descriptors","onFilterChange","groupChange","sortChange","_getSortBySelectionDescriptor","sortIndex","sortDesc","y","dataStateChange","refresh","pageChange","loadItems","onSelectedKeysChange","onSelectedChange","Contains","keyColumn","_setSelectAllState","updateGridView","validateKeys","Ie","onSelectAllChange","checkedState","selectAllState","Id","filterText","columnFilters","headerFilterable","_getOperator","filterBy","itemsForExport","isWizardChoiceDisabled","dataItem","AddRange","Add","flatArray","groupIndex","groupDesc","gridView$","_copyGridView","sourceGridView","Ce","gridViewCopy","_updateSelectionState","sortBySelection","_sortBySelectionDescriptor","agriconShowHiddenProperties","_agriconShowHiddenProperties","_gridPaging","_translationService","exportAsExcel","eventArgs","details","xlsExportFileName","workbook","workSheetMaster","sheets","workBookRows","De","dataRows","lt","Ke","creator","replaceBooleanValues","headerOptions","cells","detailsField","detailColumns","kn","xlsExport","addHiddenColumnsForAdmins","headerRows","Go","headerRowsCount","Ze","kt","workSheetDetails","injectDetailHeaders","detailsSort","mainRowIdx","detailsData","Bs","detailsSorted","orderBy","detailDataObject","rowWithDetails","injectDetailValues","columnsArray","_getColumnsWidthArrayUsingConfig","downloadXls","cIdx","propertyColumnConfig","fn","checkbox","rIdx","isGroupColumn","columnsExport","groupColumn","isAutoWidth","autoWidth","detailHeaderOptions","groupPrefix","headerRow","detailColumnsExport","detailColumn","fe","groupColumnTitle","firstValueFrom","Pe","columnTitle","Ae","assign","wrap","fieldName","xlsFilename","nodeName","Workbook","toDataURL","dataUrl","dataWithDetailsObject","FirstOrDefault","hiddenDetailsProperties","getOwnPropertyNames","hiddenDetailsProperty","Any","ApDynGridPropertyColumnConfig","ctx_r112","ctx_r115","ctx_r193","button_r211","button_r217","ctx_r222","ctx_r231","xlsCallback","customExport_r234","ctx_r235","ctx_r238","ctx_r240","ctx_r241","ctx_r243","ctx_r245","ctx_r246","ctx_r247","ctx_r248","_r1","asPagerPipe","asWizardButtonPipe","asWizardExportPipe","loginStore","clipboard","windowHelperService","ApDynGridPagerControlType","ApDynGridPagerWizardSectionType","ApDynGridDetailsConfigType","FilterType","MapViewMode","ApCalendarView","align","popupClass","selectable","selectableSetting","gridSelectableSettings","calculateSelectableSettings","ApMapInstance","isDebugModeEnabled","toggleHiddenProperties","_WidthHideColumns","hide","mapHide","widthHiddenColumns$","hc","equals","widthHidePriority","_TableWidth","currentWidth","hidden","getColumns","ColumnGroupComponent","children","child","acc","col","toNumber","paddingTop","paddingBottom","borderTop","borderBottom","marginTop","marginBottom","callCount","_isObject","other","_isCyclic","_isArray","_intersectArray","_intersectObject","obj","seenObjects","innerObj","detect","selection","componentReference$","_getDataFromStore","reorderable","Count","rowSelected","formDefaultValue$","_getDefaultObject","apMainViewElement","ResizeObserver","entries","_viewWidth$","_viewHeight$","valueOf","contentRect","observe","debounceTime","tableWidth","Remove","LastOrDefault","updatedSelectedKeys","selectedFieldIndex","_f","FindIndex","RemoveAt","_g","ei","_h","_j","domObject","unobserve","editHandler","edit","createHandler","create","filterGrid","searchValue","clearFilters","itemDisabled","pagerApplyClicked","onSubmit","ids","_getPagerForm","exportAsPdf","saveAsPDF","exportAsXls","saveAsExcel","gridPagerSelectionChange","pagerKeyWizardChoice","_setupPagerFormConfig","gridPagerSelectionValueChange","pagerValueWizardChoice","gridPager","setRowClass","context","errorKeys","master","previousClicked","gridColumn","headerButtons","nextClicked","updateSelection","pager","dynGridWizardFormConfig","clearSelection","onKeydownControlHandler","_isControlKeyDown","ApRoleTypeService","User","_agriconIsControlKeyDown","onKeyupControlHandler","_agriconTextToCopy","_agriconHiddenProperties","allProperties","SourceItem","p","AddRangeIfNotExists","property","AddIfNotExists","copyToClipboard","currentTextToCopy","copy","onExcelExport","dynGridsExcelService","ApDyngridsExcelService","trackByColumnFn","onChoiceSelect","pagerFormConfig","_setupSelection","farm$","SelectedFarm$","drag","onSelectionChanged","selectionChange","ctrlKey","selectedRows","addSelectedKeyIfNotExists","ht","deselectedRows","targetArray","sourceArray","selectedKey","ks","AsClassColorPipe","AsButtonPipe","S","AsEditPipe","I","AsGroupPipe","AsPropertyPipe","AsStatusPipe","AsButtonGroupPipe","AsColorPipe","AsImagePipe","ae","AsStatusSwitchPipe","AsWizardPipe","AsWizardBreadcrumpsStepperPipe","AsDetailsGridPipe","IsHiddenPipe","selfHide","mapView","widthHiddenColumns","AsTemplatePipe","ApDateRangeFilterComponent","At","range","itemDate","currentFilter","change","_getStart","_getEnd","filterService","ApMultiSelectFilterComponent","from","Set","dataFilter","onChange","Ui","ToLowerCase","IndexOf","ApCheckboxFilterComponent","ApNumberListFilterComponent","elements","Convert","Split","found","Find","ApObjectFilterComponent","pipes","def","flat","GetTextPipe","Vt","DynamicCellPipe","centerCellService","getCellCssClass","dynCssClass","ApPropertyColumnFilterComponent","ApPropertyColumnHeaderComponent","ApPropertyColumnCellComponent","GetTemplateContextPipe","ApTemplateColumnHeaderComponent","ApTemplateColumnCellComponent","ApStatusSwitchFilterComponent","ApStatusSwitchComponent","_dataItem","updateState","_fieldName","intermediateState","setState","stateChange","ApStatusSwitchColumnFilterComponent","ApStatusSwitchColumnGroupHeaderComponent","ApStatusSwitchColumnCellComponent","ApColorColumnCellComponent","changeItem","colorCode","ApImageColumnCellComponent","ApClassColorColumnFilterComponent","ApClassColorColumnCellComponent","ApButtonColumnCellComponent","button_r1","ApButtonGroupColumnCellComponent","ApEditColumnCellComponent","an","textFn","click","_isDisabled","getText","getClassList","AsIconPipe","ut","AsPagerPipe","AsWizardButtonPipe","AsWizardExportPipe","DropDownButtonData","HeaderModule","BodyModule","ExcelModule","GroupModule","ApStatusSwitchModule","AgriportStoreModule","ClipboardModule","ContextMenuModule","ApStatusColumnFilterComponent","ApStatusColumnHeaderComponent","ApStatusColumnCellComponent","ApStatusColumnGroupFilterComponent","i7","Pn","i15","i16","ExecPipesPipe","CenterCellPipe","GetPropertyPipe","i17","ApStatusFilterComponent","ApColumnState","et","IdInPipe","looking","idKey","TranslateKendoStatePipe","description","ApDynGridColumnConfigBase","imageUrl","isStandardIcon","standardIcon","itemBusy$","iconClass","ApDynGridColumnHideConfig","headerStyle","pdfExport","tooltipPipes","getTooltip","func","dynamic","ApDynGridGroupColumnConfig","conf","imageWidth","imageHeight","listMassEditing","hasPermission","showWithoutSelection","lowerButtons","left","center","right","sections","ApDynGridPagerWizardSection","Button","active$","active","Export","pdf","xls","customExports","customIcons","BreadcrumbsStepper","filterable","svg","svgClassField","formatCallback","columnLoading","headerExtraLines","breakHeaderLine","multiline","NONE","usedKendoDefaultFilter","filterType","CHECKBOX","STRING","NUMBER","DATE","showHeaderTitle","pendingIds","pending","pendingTooltip","disableGreen","disableGreenFn","disableRed","disableRedFn","disableYellow","disableYellowFn","showYellowState","toolTipGreen","toolTipRed","showIf","ApDynGridDetailsBaseConfig","groupable","checkboxDisabled","CenterCellService","AgriportConstantsEnum","BaseFertLicenseAmountAbs","ApApplicationMode","ApStatsType","ApElementOxydTypeEnum","ApElementType","ApFeatureModulKey","LEGEND_IDS","ApMenuUrls","ApOperationMode","ApVisibleStates","MapViewCurrentMenu","PageMode","SidebarMode","ModalDialogButtonDisable","InteriorPointArea","constructor_","_interiorPoint","_maxWidth","geom","getInteriorPoint","isEmpty","Polygon","processPolygon","GeometryCollection","gc","getNumGeometries","getGeometryN","polygon","intPtPoly","InteriorPointPolygon","getWidth","_polygon","_interiorPointY","_interiorSectionWidth","ScanLineYOrdinateFinder","getScanLineY","p0","p1","scanY","y0","getY","y1","env","getMinY","getMaxY","x0","getX","x1","segDX","findBestMidpoint","crossings","Assert","DoubleComparator","x2","interiorPointX","avg","Coordinate","getCoordinate","ArrayList","scanRing","getExteriorRing","getNumInteriorRing","getInteriorRingN","ring","intersectsHorizontalLine","getEnvelopeInternal","seq","getCoordinateSequence","ptPrev","pt","addEdgeCrossing","isEdgeCrossingCounted","xInt","intersection","compare","v1","v2","interfaces_","Comparator","_poly","_centreY","_hiY","Double","_loY","poly","updateInterval","line","PointGeometryUnion","_pointGeom","_otherGeom","_geomFact","otherGeom","getFactory","pointGeom","unioner","union","locater","PointLocator","exteriorCoords","TreeSet","coord","point","locate","Location","ptComp","coords","CoordinateArrays","createPoint","createMultiPointFromCoords","GeometryCombiner","InputExtracter","_geomFactory","_polygons","_lines","_points","_dimension","Dimension","hasInterface","Collection","geoms","extracter","Geometry","recordDimension","dim","getDimension","LineString","Point","getGeometryType","getExtract","GeometryFilter","OverlapUnion","_g0","_g1","_isUnionSafe","g0","g1","isNull","getMinX","getMaxX","containsProperly","intersects","g0Env","g1Env","segs","CoordinateSequenceFilter","seg","LineSegment","isDone","isGeometryChanged","createGeometryCollection","isBorderSegmentsSame","segsBefore","extractBorderSegments","segsAfter","extractByEnvelope","disjointGeoms","intersectingGeoms","elem","buildGeometry","segs0","segs1","segIndex","HashSet","overlapEnv","overlapEnvelope","g0Copy","g1Copy","disjointPolys","g0Overlap","g1Overlap","unionGeom","unionFull","combine","geom0","geom1","UnionOp","TopologyException","unionBuffer","isUnionOptimized","CascadedPolygonUnion","_inputPolys","Polygonal","polygons","PolygonExtracter","createMultiPolygon","GeometryFactory","polys","reduceToGeometries","geomTree","iterator","hasNext","List","unionTree","IllegalStateException","STRtree","STRTREE_NODE_CAPACITY","insert","itemTree","itemsTree","binaryUnion","getGeometry","unionSafe","mid","trunc","repeatedUnion","unionActual","restrictToPolygons","bufferUnion","UnaryUnionOp","_extracter","extract","op","unionNoOpt","empty","SnapIfNeededOverlayOp","OverlayOp","unionWithNull","createEmpty","points","lines","unionPoints","ptGeom","unionLines","lineGeom","unionPolygons","unionLA","Zn","Centroid","_areaBasePt","_triangleCent3","_areasum2","_cg3","_lineCentSum","_totalLength","_ptCount","_ptCentSum","p2","p3","getCentroid","setAreaBasePoint","basePt","addPoint","addLineSegments","pts","lineLen","segmentLen","distance","addHole","isPositiveArea","Orientation","addTriangle","cent","addShell","sign","centroid3","area2","getCoordinates","InteriorPointLine","_centroid","_minDistance","getPrecisionModel","makePrecise","addInterior","addEndpoints","dist","IsSimpleOp","_inputGeom","_isClosedEndpointsInInterior","_nonSimpleLocation","boundaryNodeRule","isInBoundary","isSimple","isSimpleMultiPoint","mp","isSimplePolygonal","LinearComponentExtracter","isSimpleLinearGeometry","hasClosedEndpointIntersection","graph","endPoints","TreeMap","getEdgeIterator","isClosed","addEndpoint","getNumPoints","eiInfo","degree","getNonSimpleLocation","GeometryGraph","li","RobustLineIntersector","si","computeSelfNodes","hasIntersection","hasProperIntersection","getProperIntersectionPoint","hasNonEndpointIntersection","maxSegmentIndex","getMaximumSegmentIndex","eiIt","getEdgeIntersectionList","isEndPoint","EndpointInfo","put","computeSimple","MultiLineString","MultiPoint","isSimpleGeometryCollection","comp","BufferParameters","_quadrantSegments","DEFAULT_QUADRANT_SEGMENTS","_endCapStyle","CAP_ROUND","_joinStyle","JOIN_ROUND","_mitreLimit","DEFAULT_MITRE_LIMIT","_isSingleSided","_simplifyFactor","DEFAULT_SIMPLIFY_FACTOR","setQuadrantSegments","quadrantSegments","endCapStyle","setEndCapStyle","joinStyle","mitreLimit","setJoinStyle","setMitreLimit","quadSegs","PI","cos","getEndCapStyle","isSingleSided","JOIN_BEVEL","JOIN_MITRE","getJoinStyle","setSimplifyFactor","simplifyFactor","getSimplifyFactor","getQuadrantSegments","getMitreLimit","setSingleSided","CAP_FLAT","CAP_SQUARE","RightmostEdgeFinder","_minIndex","_minCoord","_minDe","_orientedDe","getRightmostSide","de","side","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","getEdge","pPrev","pNext","orientation","usePrev","pos","Position","findRightmostEdgeAtNode","star","getNode","getEdges","getRightmostEdge","isForward","getSym","findEdge","dirEdgeList","rightmostSide","addLast","removeFirst","shift","BufferSubgraph","_finder","_dirEdgeList","_nodes","_rightMostCoord","_env","clearVisitedEdges","it","setVisited","getRightmostCoordinate","computeNodeDepth","startEdge","isVisited","computeDepths","copySymDepths","computeDepth","outsideDepth","getLabel","setEdgeDepths","addReachable","findResultEdges","getDepth","isInteriorAreaEdge","setInResult","nodesVisited","nodeQueue","LinkedList","startNode","sym","adjNode","compareTo","getEnvelope","edgeEnv","Envelope","expandToInclude","nodeStack","Stack","setDepth","symNode","getNodes","getDirectedEdges","Comparable","BufferInputLineSimplifier","_inputLine","_distanceTol","_isDeleted","_angleOrientation","inputLine","distanceTol","simp","simplify","isDeletable","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","midIndex","findNextNonDeletedIndex","lastIndex","isChanged","isMiddleVertexDeleted","DELETE","isShallowConcavity","Distance","inc","NUM_PTS_TO_CHECK","collapseLine","coordList","CoordinateList","toCoordinateArray","INIT","KEEP","OffsetSegmentString","_ptList","_precisionModel","_minimimVertexDistance","toArray","COORDINATE_ARRAY_TYPE","setPrecisionModel","precisionModel","addPt","bufPt","isRedundant","reverse","addPts","lastPt","ptDist","createLineString","closeRing","startPt","setMinimumVertexDistance","minimimVertexDistance","OffsetSegmentGenerator","_maxCurveSegmentError","_filletAngleQuantum","_closingSegLengthFactor","_segList","_distance","_bufParams","_li","_s0","_s1","_s2","_seg0","_seg1","_offset0","_offset1","_side","_hasNarrowConcaveAngle","bufParams","MAX_CLOSING_SEG_LEN_FACTOR","addNextSegment","addStartPoint","setCoordinates","computeOffsetSegment","outsideTurn","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","offsetL","offsetR","angle","atan2","addDirectedFillet","squareCapSideOffset","sin","squareCapLOffset","squareCapROffset","addMitreJoin","offset0","offset1","intPt","Intersection","addLimitedMitreJoin","OFFSET_SEGMENT_SEPARATION_FACTOR","addBevelJoin","addCornerFillet","createSquare","addSegments","addFirstSegment","radius","startAngle","endAngle","addLastSegment","initSideSegments","s1","s2","ang0","Angle","angDiffHalf","angDiff","midAng","mitreMidAng","mitreDist","bevelHalfLen","bevelMidX","bevelMidY","bevelMidPt","mitreMidLine","bevelEndLeft","pointAlongOffset","bevelEndRight","directionFactor","totalAngle","nSegs","angleInc","sideSign","dx","dy","len","sqrt","ux","uy","computeIntersection","getIntersection","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","mid0","mid1","createCircle","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","numInt","getIntersectionNum","hasNarrowConcaveAngle","OffsetCurveBuilder","getOffsetCurve","inputPts","isRightSide","posDistance","segGen","getSegGen","computePointCurve","computeOffsetCurve","curvePts","computeSingleSidedBufferCurve","distTol","simplifyTolerance","simp2","n2","simp1","n1","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","isLineOffsetEmpty","getBufferParameters","bufDistance","getRingCurve","copyCoordinates","SubgraphDepthLocater","_subgraphs","_seg","findStabbedSegments","stabbingRayLeftPt","stabbedSegments","bsg","DirectedEdge","dirEdge","maxx","isHorizontal","depth","ds","DepthSegment","Collections","_leftDepth","_upwardSeg","minX","maxX","orientIndex","orientationIndex","compareX","seg0","seg1","compare0","OffsetCurveSetBuilder","_curveBuilder","_curveList","curveBuilder","addRingSide","offsetDistance","cwLeftLoc","cwRightLoc","LinearRing","leftLoc","rightLoc","curve","addCurve","addRingBothSides","addPolygon","offsetSide","shell","shellCoord","isErodedCompletely","hole","holeCoord","isTriangleErodedCompletely","triangleCoord","bufferDistance","tri","Triangle","inCentre","addLineString","NodedSegmentString","Label","getCurves","addCollection","MultiPolygon","UnsupportedOperationException","ringCoord","envMinDimension","getHeight","IntersectionAdder","_hasIntersection","_hasProper","_hasProperInterior","_hasInterior","_properIntersectionPoint","_isSelfIntersection","numIntersections","numInteriorIntersections","numProperIntersections","numTests","isTrivialIntersection","e0","segIndex0","e1","segIndex1","isAdjacentSegments","maxSegIndex","hasProperInteriorIntersection","getLineIntersector","processIntersections","p00","p01","p10","p11","isInteriorIntersection","addIntersections","isProper","hasInteriorIntersection","SegmentIntersector","BufferBuilder","_workingPrecisionModel","_workingNoder","_graph","_edgeList","EdgeList","lLoc","getLocation","rLoc","fact","ss","setWorkingPrecisionModel","pm","insertUniqueEdge","existingEdge","findEqualEdge","existingLabel","labelToMerge","isPointwiseEqual","flip","mergeDelta","depthDelta","newDelta","getDepthDelta","setDepthDelta","buildSubgraphs","subgraphList","polyBuilder","processedGraphs","subgraph","createSubgraphs","createEmptyResultGeometry","createPolygon","getNoder","noder","MCIndexNoder","setSegmentIntersector","bufferSegStrList","curveSetBuilder","computeNodedEdges","PlanarGraph","OverlayNodeFactory","addEdges","PolygonBuilder","resultPolyList","getPolygons","computeNodes","getNodedSubstrings","segStr","equals2D","oldLabel","getData","edge","Edge","setNoder","ScaledNoder","_noder","_scaleFactor","_offsetX","_offsetY","_isScaled","scaleFactor","isIntegerPrecision","rescale","System","scale","segStrings","nodedSegmentStrings","roundPts","round","getZ","splitSS","inputSegStrings","intSegStrings","Noder","NodingValidator","_segStrings","checkEndPtVertexIntersections","testPt","j","RuntimeException","checkInteriorIntersections","ss0","ss1","pts0","pts1","checkValid","checkCollapses","checkCollapse","HotPixel","_pt","_originalPt","_ptScaled","_p0Scaled","_p1Scaled","_minx","_maxx","_miny","_maxy","_corner","_safeEnv","IllegalArgumentException","initCorners","intersectsScaled","segMinx","segMaxx","segMiny","segMaxy","isOutsidePixelEnv","intersectsToleranceSquare","copyScaled","pScaled","getSafeEnvelope","safeTolerance","SAFE_ENV_EXPANSION_FACTOR","intersectsPixelClosure","intersectsLeft","intersectsBottom","addSnappedNode","addIntersection","MonotoneChainSelectAction","selectedSegment","getLineSegment","MCIndexPointSnapper","_index","snap","hotPixel","parentEdge","hotPixelVertexIndex","pixelEnv","hotPixelSnapAction","HotPixelSnapAction","query","ItemVisitor","visitItem","isNodeAdded","_hotPixel","_parentEdge","_hotPixelVertexIndex","_isNodeAdded","isInteger","MonotoneChain","startIndex","InteriorIntersectionFinderAdder","_interiorIntersections","intIndex","getInteriorIntersections","MCIndexSnapRounder","_pm","_pointSnapper","_nodedSegStrings","getScale","checkCorrectness","inputSegmentStrings","resultSegStrings","nv","Exception","printStackTrace","snapRound","intersections","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","intFinderAdder","edge0","getIndex","snapPts","snapPt","BufferOp","_argGeom","_resultGeometry","_saveException","gBuf","getResultGeometry","bufOp","maxPrecisionDigits","envMax","MathUtil","bufEnvPrecisionDigits","pow","bufferFixedPrecision","fixedPM","PrecisionModel","bufBuilder","bufferReducedPrecision","precDigits","MAX_PRECISION_DIGITS","sizeBasedScaleFactor","precisionScaleFactor","computeGeometry","bufferOriginalPrecision","argPM","getType","CAP_BUTT","UniqueCoordinateArrayFilter","_coordSet","_list","coordinates","CoordinateFilter","ConvexHull","_inputPts","geometry","extractCoordinates","geomFactory","preSort","Arrays","RadialComparator","computeOctRing","octPts","computeOctPts","lineOrPolygon","cleanRing","linearRing","createLinearRing","cleanedRing","previousDistinctCoordinate","currentCoordinate","nextCoordinate","isBetween","cleanedRingCoordinates","c1","c2","c3","polyPts","reducedSet","PointLocation","reducedPts","padArray3","getConvexHull","sortedPts","cHS","grahamScan","cH","pad","coordinate","ps","peek","_origin","dxp","dyp","dxq","dyq","orient","oq","o1","o2","polarCompare","RelateComputer","_ptLocator","_arg","NodeMap","RelateNodeFactory","_im","_isolatedEdges","_invalidPoint","insertEdgeEnds","ee","computeProperIntersectionIM","intersector","im","dimA","dimB","hasProper","hasProperInterior","setAtLeast","labelIsolatedEdges","thisIndex","targetIndex","isIsolated","labelIsolatedEdge","loc","setAllLocations","computeIM","IntersectionMatrix","computeDisjointIM","computeEdgeIntersections","computeIntersectionNodes","copyNodesAndLabels","labelIsolatedNodes","eeBuilder","EdgeEndBuilder","ee0","computeEdgeEnds","ee1","labelNodeEdges","updateIM","ni","computeLabelling","argIndex","getNodeIterator","graphNode","addNode","setLabel","labelIntersectionNodes","eLoc","setLabelBoundary","labelIsolatedNode","getGeometryCount","updateIMFromEdges","ga","getBoundaryDimension","gb","RectangleContains","_rectEnv","rectangle","rc","isContainedInBoundary","isPointContainedInBoundary","isLineStringContainedInBoundary","isLineSegmentContainedInBoundary","RectangleLineIntersector","_diagUp0","_diagUp1","_diagDown0","_diagDown1","rectEnv","segEnv","isSegUpwards","RectangleIntersects","_rectangle","rp","visitor","EnvelopeIntersectsVisitor","applyTo","ecpVisitor","GeometryContainsPointVisitor","containsPoint","riVisitor","RectangleIntersectsSegmentVisitor","ShortCircuitedGeometryVisitor","_intersects","visit","elementEnv","_rectSeq","_containsPoint","rectPt","SimplePointInAreaLocator","_rectIntersector","_p0","_p1","checkIntersectionWithLineStrings","testLine","checkIntersectionWithSegments","seq1","GeometryGraphOperation","RelateOp","_relate","g2","getLength","covers","isRectangle","getIntersectionMatrix","isCovers","isGeometryCollection","isIntersects","isTouches","relate","isEquals","relOp","isOverlaps","isCrosses","isContains","InteriorPointPoint","GeometryLocation","_component","_segIndex","INSIDE_AREA","getSegmentIndex","isInsideArea","WKTWriter","getGeometryComponent","ConnectedElementLocationFilter","_locations","locations","DistanceOp","_geom","_terminateDistance","_minDistanceLocation","terminateDistance","distOp","envDist","nearestPoints","computeContainmentDistance","locPtPoly","polyGeomIndex","polyGeom","locationsIndex","insideLocs","locs","ptLoc","computeMinDistanceLinesPoints","locGeom","computeMinDistance","computeFacetDistance","lines0","lines1","PointExtracter","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","coord0","segClosestPoint","closestPoint","line0","line1","coord1","segEnv0","segEnv1","closestPt","closestPoints","points0","points1","pt0","pt1","BoundaryOp","_bnRule","_endpointMap","BoundaryNodeRule","bnRule","getBoundary","bop","boundaryMultiLineString","mLine","getEmptyMultiPoint","bdyPts","computeBoundaryCoordinates","boundaryLineString","getStartPoint","createMultiPoint","getEndPoint","getCoordinateN","entrySet","entry","valence","count","getKey","counter","Counter","IsValidOp","intersectionPattern","matches","_factory","centPt","createPointFromInternalCoord","interiorPt","exemplar","writer","write","toText","extendStatics","__extends","setPrototypeOf","__","events","FullScreen","_super","opt_options","_this","cssClassName_","labelNode_","createTextNode","labelActive","labelActiveNode_","button_","tipLabel","setClassName_","isFullScreen","setAttribute","EventType","handleClick_","cssClasses","CLASS_UNSELECTABLE","CLASS_CONTROL","isFullScreenSupported","CLASS_UNSUPPORTED","keys_","source_","handleFullScreen_","getMap","exitFullscreen","msExitFullscreen","webkitExitFullscreen","exitFullScreen","getElementById","getTargetElement","webkitRequestFullscreen","requestFullScreen","requestFullScreenWithKeys","handleFullScreenChange_","replaceNode","dispatchEvent","updateSize","fullscreen","activeClassName","inactiveClassName","nextClassName","setMap","ii","listenerKeys","listen","Control","msRequestFullscreen","msFullscreenEnabled","requestFullscreen","fullscreenEnabled","webkitIsFullScreen","msFullscreenElement","fullscreenElement","UNITS_PROP","LEADING_DIGITS","DEFAULT_DPI","ScaleLine","bar","render","innerElement_","viewState_","minWidth_","minWidth","renderedVisible_","renderedWidth_","renderedHTML_","getChangeEventType","handleUnitsChanged_","setUnits","units","scaleBar_","scaleBarSteps_","scaleBarText_","dpi_","dpi","getUnits","updateElement_","setDpi","viewState","html","projection","pointResolution","getPointResolution","resolution","ProjUnits","nominalCount","suffix","metersPerDegree","METERS_PER_UNIT","assert","decimalCount","decimal","createScaleBar","toFixed","mapScale","getScaleForResolution","toLocaleString","scaleSteps","stepWidth","backgroundColor","createMarker","createStepText","isLast","mpu","getMetersPerUnit","mapEvent","frameState","mapFunctions","goTo","GoTo","getPolygonEditLayer","PolygonEditLayer","getFieldDistributionLayer","FieldDistributionLayer","mapStore","Layers","DistributionLayer","mapRef","setTarget","isMap","ref","_setMap","_initMap","feature","getView","viewExtent","calculateExtent","featureExtent","getExtent","containsExtent","longitude","latitude","zoom","setView","View","fromLonLat","MAP_PROJECTION","contextMenu","mapHTMLElement","machinePopup","sensorPointPopup","sensorPointLegend","colorLegend","_updateView","mustUpdateView","level","setZoom","SetLastView","getCenter","getZoom","setCenter","layers","changeLayer","layer","getLayer","removeLayer","addLayer","getLayers","getArray","LayerFactory","address","fields","FieldsLayer","withGeom","fieldStore","getCurrentFieldGeom","selectField","SuspendZoomToSelection","fitSelection","LocationsLayer","selectLocation","bingHybrid","ApBingLayer","BingImagery","bingStreet","bingSatellite","Visibility","OlMap","WMTSLayer","XYZLayer","SensorPoints","NRaster","PpRaster","FieldsCropLayer","FieldDescriptionLayer","SampleFieldLayer","SampleFieldDescriptionLayer","pingLayer","UserLocationLayer","GeoPointsLayer","editLayer","FungiDetectLayer","ContactLayer","PolygonEditViewLayer","TaskManagementLayer","TaskManagementNutrientLayer","NeedLayer","SoilGroupLayer","SoilSampleLayer","SoilSampleDistributionLayer","NutrientPlanningLayer","TrackLayer","featureLayer","NdiLayer","NApplicationMapLayer","PpApplicationMapLayer","NUptakeLayer","ApMapViews","AllLayers$","_registerControls","updateView","BackgroundMap$","setLastView","initBaseMaps","mapInitialized","DistributionUrl$","StringFactory","update","SoilSampleDistributionUrl$","NutrientPlanningUrl$","NRasterUrl$","PpRasterUrl$","SensorPointsUrl$","SoilSampleUrl$","SoilGroupUrl$","NeedUrl$","NdiUrl$","NUptakeUrl$","TrackUrl$","loadFeatures","NPlanningUrl$","PPApplicationUrl$","LastView","_initLayerSubscription","_saveLastView","mapScrollDown","ApMapControlStream","mapScrollUp","_singleClick","_contextMenu","_pointerMove","MouseCoordinate","getCoordinateFromPixel","pixel","forEachLayerAtPixel","FeaturesAtMousePosition","layerSource","getSource","getFeatures","GeometryChecker","VectorTileLayer","getVisible","currentMapFeatures","getFeaturesInExtent","geoJsonFeatureCollection","GeoJSON","writeFeaturesObject","dataProjection","featureProjection","getProperties","renderSync","Sr","oo","oa","Jr","_k","_l","_m","Features","_o","js","Kr","Ba","_p","_q","_r","cl","Vs","Da","al","_s","_t","_u","_v","clickedFields","pi","Fa","Xa","fa","_w","_x","_y","_z","_0","Di","_1","clickedField","ao","onFieldClicked","_2","yo","_3","getFieldByFieldGeomId","Or","getId","tooltipTimeout","featurePosition","tooltipOptions","tooltipContent","processedLayers","generateLatLonTooltip","showFieldName","generateFieldNameTooltip","forEachFeatureAtPixel","mapFactoryLayer","AllLayers","LayerNames","featureProperties","generateTooltip","tooltipForFeature","hitTolerance","layerFilter","findFieldnameAtPosition","fieldNameLines","toLonLat","mapPointerPosition","getFeaturesAtPixel","intersectsCoordinate","dragging","displayTooltipAt","forFeaturesAtCoordinate","setContextMenu","lonLat","extendContextMenu","lonLatCoordinate","clipboardService","offsetParent","offsetLeft","top","offsetTop","sampleFields","withGeoms","sf","Geom","OL3Parser","inject","OlGeom","parser","ptFeature","OlFeature","OlPoint","feat","ntsFeature","read","Circle","opt_radius","opt_layout","setFlatCoordinates","setCenterAndRadius","clone","flatCoordinates","layout","closestPointXY","minSquaredDistance","squaredDistance","stride","delta","getRadius","containsXY","getRadiusSquared_","computeExtent","extent","createOrUpdate","GeometryType","intersectsExtent","circleExtent","forEachCorner","changed","setLayout","deflateCoordinate","setRadius","rotate","getStride","deltaX","SimpleGeometry","DrawEvent","Event","Draw","pointerOptions","stopDown","FALSE","shouldHandle_","downPx_","freehand_","features_","snapTolerance_","snapTolerance","type_","mode_","getMode","stopClick_","stopClick","minPoints_","minPoints","maxPoints_","maxPoints","Infinity","finishCondition_","finishCondition","TRUE","geometryFunction","opt_geometry","circle","NaN","fromUserCoordinate","squaredLength","squaredCoordinateDistance","userProjection","getUserProjection","Constructor_1","mode_1","geometryFunction_","dragVertexDelay_","dragVertexDelay","finishCoordinate_","sketchFeature_","sketchPoint_","sketchCoords_","sketchLine_","sketchLineCoords_","squaredClickTolerance_","clickTolerance","overlay_","VectorLayer","VectorSource","useSpatialIndex","wrapX","getDefaultStyleFunction","updateWhileInteracting","geometryName_","geometryName","condition_","condition","noModifierKeys","freehandCondition_","freehand","freehandCondition","shiftKeyOnly","InteractionProperty","updateState_","getOverlay","handleEvent","originalEvent","move","MapBrowserEventType","pass","lastDragTime_","downTimeout_","addToDrawing_","handlePointerMove_","pointerType","handleDownEvent","startDrawing_","MapBrowserEvent","handleUpEvent","finishDrawing","atFinish_","abortDrawing","stopPropagation","downPx","clickPx","modifyDrawing_","createOrUpdateSketchPoint_","at","potentiallyDone","potentiallyFinishCoordinates","sketchCoords","finishCoordinate","finishPixel","getPixelFromCoordinate","Feature","updateSketchFeatures_","getProjection","setGeometryName","setGeometry","last","sketchLineGeom","getLinearRing","getLayout","getFlatCoordinates","done","removeLastPoint","sketchFeature","abortDrawing_","addFeature","appendCoordinates","ending","extend","lineString","sketchFeatures","overlaySource","addFeatures","getActive","PointerInteraction","styles","createEditingStyle","evt","tempSegment","Snap","vertex_","vertex","edge_","featuresListenerKeys_","featureChangeListenerKeys_","indexedFeaturesExtents_","pendingFeatures_","pixelTolerance_","pixelTolerance","rBush_","RBush","SEGMENT_WRITERS_","writePointGeometry_","writeLineStringGeometry_","writePolygonGeometry_","writeMultiPointGeometry_","writeMultiLineStringGeometry_","writeMultiPolygonGeometry_","writeGeometryCollectionGeometry_","writeCircleGeometry_","opt_listen","feature_uid","getUid","segmentWriter","handleFeatureChange_","forEachFeatureAdd_","forEachFeatureRemove_","removeFeature","getFeatures_","snapTo","snapped","vertexPixel","handleFeatureAdd_","getFeatureFromEvent","handleFeatureRemove_","handlingDownUpSequence","updateFeature_","featuresToUpdate","getValues","opt_unlisten","unregister","rBush","nodesToRemove_1","forEachInExtent","unlistenByKey","currentMap","CollectionEventType","VectorEventType","pixelCoordinate","lowerLeft","upperRight","box","boundingExtent","segments","getInExtent","segment","closestSegmentData","projectedCoordinate","segmentData","squaredDistanceToSegment","closestSegment","pixel1","pixel2","squaredDist1","squaredDist2","isCircle","circleGeometry","toUserCoordinate","closestOnCircle","closestOnSegment","coordinateDistance","fromCircle","geometries","getGeometriesArray","jj","kk","rings","tempExtent","ModifyEvent","mapBrowserEvent","Modify","boundHandleFeatureChange_","primaryAction","defaultDeleteCondition_","altKeyOnly","singleClick","deleteCondition_","deleteCondition","insertVertexCondition_","insertVertexCondition","vertexFeature_","vertexSegments_","lastPixel_","ignoreNextSingleClick_","modified_","snappedToVertex_","changingFeature_","dragSegments_","updateWhileAnimating","handleSourceAdd_","handleSourceRemove_","addFeature_","lastPointerEvent_","isRendered","handlePointerAtPixel_","willModifyFeatures_","removeFeature_","removeFeatureSegmentData_","nodesToRemove","nodeToRemove","setActive","centerSegmentData","circumferenceSegmentData","featureSegments","createExtent","geometry_1","createOrUpdateVertexFeature_","vertexFeature","getInteracting","handled","removePoint","handleDragEvent","dragSegment","setGeometryCoordinates_","insertVertices","vertexExtent","segmentDataMatches","componentSegments","compareIndexes","segmentDataMatch","coordinatesEqual","closestVertex","closestOnSegmentData","insertVertex_","opt_coordinate","fromUserExtent","getResolution","toUserExtent","bufferExtent","nodes","projectedDistanceToSegmentDataSquared","vertexSegments","rTree","updateSegmentIndices_","newSegmentData","newSegmentData2","removed","removeVertex_","component","newIndex","dragSegments","segmentsByFeature","deleted","pointCoordinates","distanceToCenterSquared","distanceToCircumference","getClosestPoint","TranslateEvent","startCoordinate","Translate","lastCoordinate_","startCoordinate_","layers_1","layerFilter_","filter_","hitTolerance_","lastFeature_","handleActiveChanged_","featuresAtPixel_","handleMoveEvent","newCoordinate","deltaX_1","deltaY_1","getViewport","getHitTolerance","setHitTolerance","oldMap","Keys","MapInteractions","Select","toggleCondition","OlCondition","tolerance","modify","NoninvertibleTransformationException","AffineTransformation","_m00","_m01","_m02","_m10","_m11","_m12","setToIdentity","matrix","setTransformation","trans","setToTranslation","xShear","yShear","setToShear","setToReflection","theta","rotationInstance","sinTheta","cosTheta","setToRotation","xScale","yScale","setToScale","setToReflectionBasic","cs2","c2s2","getInverse","det","getDeterminant","compose","mp01","mp02","mp10","mp11","mp12","isIdentity","scaleInstance","m01","m02","m10","m11","m12","getMatrixEntries","composeBefore","translationInstance","shear","shearInstance","dest","yp","CoordinateSequence","xp","getOrdinate","setOrdinate","reflect","reflectionInstance","Cloneable","GeometryEditor","_isUserDataCopied","setCopyUserData","isUserDataCopied","operation","editInternal","setUserData","getUserData","editGeometryCollection","editPolygon","collection","collectionForType","createMultiLineString","newPolygon","holes","GeometryEditorOperation","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","LineStringExtracter","_comps","comps","getLines","GeometricShapeFactory","_precModel","_dim","Dimensions","_nPts","_rotationAngle","geomFact","createSupercircle","power","recipPow","getMinSize","centre","getCentre","r4","xyInt","nSegsInOct","xInc","x4","coordTrans","setNumPoints","nPts","setBase","setRotation","radians","setWidth","createEllipse","xRadius","yRadius","centreX","centreY","iPt","ang","createSquircle","setEnvelope","setCentre","createArc","startAng","angExtent","angSize","angInc","createArcPolygon","createRectangle","ipt","nSide","XsegLen","YsegLen","setHeight","setSize","getBase","GraphComponent","_isMarked","_isVisited","_data","visitedState","visited","marked","setMarked","isMarked","setData","setContext","_from","_to","_sym","_edgeDirection","_quadrant","_angle","to","directionPt","edgeDirection","Quadrant","dirEdges","edges","isRemoved","compareDirection","print","getClass","getName","lastDotPos","getDirectionPt","getAngle","getFromNode","setEdge","getQuadrant","setSym","getToNode","getEdgeDirection","PolygonizeDirectedEdge","_edgeRing","_next","_label","getNext","isInRing","setRing","edgeRing","setNext","getRing","_dirEdge","setDirectedEdges","de0","de1","addOutEdge","getDirEdge","Node","fromNode","getOppositeNode","DirectedEdgeStar","_outEdges","_sorted","getNextEdge","sortEdges","getNextCWEdge","modi","getDegree","_deStar","deStar","node0","node1","edges0","getOutEdges","commonEdges","edges1","retainAll","PolygonizeEdge","_line","getLine","EdgeRing","_deList","_lowestEdge","_ring","_locator","_ringPts","_holes","_shell","_isHole","_isProcessed","_isIncludedSet","_isIncluded","startDE","testEr","erList","testRing","testEnv","minRing","minRingEnv","tryEdgeRing","tryShellEnv","isContained","isIncluded","addEdge","isIncludedSet","isValid","getLocator","isOuterHole","hasShell","getPolygon","holeLR","isHole","isProcessed","holeER","setShell","setIncluded","getOuterHole","adjRing","computeHole","isOuterShell","getLineString","CoordinateArraySequence","IndexedPointInAreaLocator","getShell","updateIncluded","adjShell","setProcessed","EnvelopeComparator","obj0","obj1","r1","_nodeMap","_edges","_dirEdges","findNodesOfDegree","nodesFound","nodeIterator","dirEdgeIterator","edgeIterator","findNode","PolygonizeGraph","edgeRingStarts","currLabel","prevDE","outDE","firstOutDE","prevInDE","inDE","intNodes","findEdgeRing","er","computeDepthParity","computeNextCWEdges","iNode","linePts","endPt","nStart","nEnd","deleteCutEdges","findLabeledEdgeRings","cutLines","getEdgeRings","maximalRings","convertMaximalToMinimalEdgeRings","edgeRingList","ringEdges","findIntersectionNodes","computeNextCCWEdges","deleteDangles","dangleLines","deleteAllEdges","toNode","getDegreeNonDeleted","HoleAssigner","_shells","_shellIndex","buildIndex","shells","assignHolesToShells","holeList","assignHoleToShell","queryOverlappingShells","ringEnv","findShellContaining","candidateShells","Polygonizer","_lineStringAdder","LineStringAdder","_dangles","_cutEdges","_invalidRingLines","_holeList","_shellList","_polyList","_isCheckingRingsValid","_extractOnlyPolygonal","extractOnlyPolygonal","shellList","includeAll","polyList","outerHoleER","findOuterShells","isMoreToScan","polygonize","getInvalidRingLines","findValidRings","validEdgeRingList","invalidRingList","findShellsAndHoles","findDisjointShells","extractPolygons","getDangles","getCutEdges","setCheckRingsValid","isCheckingRingsValid","GeometryComponentFilter","Ol3Parser","geometryType","vectorSource","MapInteraction","OlHelper","ApEditStyles","coo","pg","oldPoly","newPoly","intersected","getLinearRingCount","lr","shellPg","appendLinearRing","ignoreSource","descriptionLayer","mapEditStore","notifyStore","innerSource","originalField","drawline","restoreOriginalState","EditorService","SyncFeatures","LayerSyncStrategy","splitFields","Coordinates","SplitFieldGeometry","RemoveFeatureSafely","UpdateSplitData","fIndex","areaSizeRounded","setId","ApGuidUtil","selectFeature","ModifyLayerSourceFeature","modEvent","__awaiter","lineFeature","vectorLayer","draw","setStyle","defaultStyle","ntsPoint","borders","minDistance","ringPoint","getPointN","currentDistance","borderTolerance","featureRing","border","difference","within","fieldGeomId","integrateFeature","polygonizer","NTSGeom","foundFields","fid","fgeom","splitPgs","nodedLinework","ExtractPolygons","cloneDeep","insidePg","getFeatureByUid","FieldCrops","CroptypeId","Ht","getNoCropColor","crop","Color","Ot","ApBaseFieldsLayer","ApBaseVectorLayer","layerName","layerGroupName","fieldStore$","replaceSource","readFeatures","withGeometry","It","fieldGeom","OlFormatGeoJSON","ApFieldsLayer","readFeature","_parseJson","properties","getFieldExpressionByField","color","_parseColor","ApFieldsCropLayer","LayerGroupNames","declutter","FixedZIndex","LayerZIndex","DrawCropColor$","OnLayerChange","Legends","refreshLegend","CropTypeLegend","CropTypeLegendHasElements","withCropColorStyle","ApFieldsDescriptionLayer","minZoom","strategy","defaultStyleLabelOnly","DrawSelectedStyle$","drawSelectedStyle","redraw","_selectFields","ReadFeature","selectedStyle","deselectField","deselectFeature","myFeatures","layerFeatures","layerFeatureIds","currentSelected","notSelectedBefore","notSelectedNow","newSelection","ApPropertiesStrings","classificationColors","OlStyle","image","OlCricleStyle","stroke","OlStyleStroke","OlStyleFill","ApFungiDetectLayer","_setPopup","_read","appendSource","extentSource","classify","currentClassificationProperty","statistics","featureToShow","classification","Overlay","positioning","OverlayPositioning","stopEvent","featureArray","setPosition","propertyKeys","propValue","setElement","fValue","props","firstFeature","getFirstFeatureProperties","ApLocationLayer","minRadius","maxRadius","strokeWidth","machinePosCache","_selectLocations","setUnknown","unknown","iconStyle","fl","GpsDate","GpsTime","utcOffset","datetime","dateTimeFormat","Longitude","Latitude","Kind","speed","Speed","layer_name","Sign","propsDate","today","getDay","iconUrl","iconText","machineSign","OlStyleText","offsetY","font","backgroundFill","backgroundStroke","padding","OlIcon","anchorXUnits","IconAnchorUnits","anchorYUnits","TrackPropertyNames","SPEED","FUEL_RATE","ENGINE_SPEED","APPLICATION_STATE","TANK","WORK_STATE","ApContactLayer","_click","_pointermove","displayFeatureInfo","getDrawInteraction","FindByName","DRAW","Interactions","NAME","actionToRemove","selectionInteraction","SELECT","MODIFY","BaseTileLayer","baseOptions","preload","useInterimTilesOnError","setPreload","setUseInterimTilesOnError","getPreload","TileProperty","getUseInterimTilesOnError","Layer","TileLayer","createRenderer","CanvasTileLayerRenderer","ApBaseLayer","OlTileLayer","setZIndex","resetStyle","layerGroup","pingOptions","OlVectorLayer","renderMode","maxZoom","OlVectorSource","Group","triggerPingLocation","setVisible","_fixedZIndex","Order","getZIndex","Source","area","Create","AdminArea","getFieldExpressionByValues","fieldExpr","G","FieldName","FieldNumber","FieldSubnumber","getFieldAreaExpression","getSoilFieldExpressionByValues","FieldPart","SelectionExtent","selectedFeatures","ApGeometryExtension","SelectedFeatures","FORCE","existsFeature","getFeatureById","RESTRAINED","RemoveSelectedFeatures","numFeatures","featureId","GetSelectedFeaturesAsJSON","writeGeometry","GetFeatureByIdAsJSON","ZoomIn","Extent","ZoomToFeature","isString","OlBuffer","selectStyle","ApVectorSelection","getStyle","removeApFeature","exists","unset","clusterSize","setSource","OlCluster","opts","flashGeom","listenerKey","elapsed","time","unByKey","vectorContext","getVectorContext","easeOut","asString","drawGeometry","pingLocation","olLayer","BingMaps","hidpi","requestJSONP","cacheSize","crossOrigin","imageSmoothing","opaque","reprojectionErrorThreshold","SourceState","tileLoadFunction","tilePixelRatio","hidpi_","culture_","culture","maxZoom_","apiKey_","imagerySet_","imagerySet","opt_errback","opt_callbackParam","script","parentNode","async","timer","cleanup","getElementsByTagName","handleImageryMetadataResponse","getApiKey","getImagerySet","statusDescription","authenticationResultCode","resourceSets","resources","resource","zoomMax","sourceProjection","extentFromProjection","tileGrid","createXYZ","zoomMin","tileSize","tileUrlFunction","createFromTileUrlFunctions","imageUrlSubdomains","subdomain","quadKeyTileCoord","tileCoord","pixelRatio","charCode","z","digits","mask","quadKey","imageryProviders","transform_1","getTransformFromProjections","setAttributions","attributions","getTileGrid","getZForResolution","zDirection","getTileCoordForCoordAndZ","imageryProvider","intersecting","coverageAreas","coverageArea","bbox","extent_1","applyTransform","attribution","TileImage","ApBaseTileLayer","OlBingMapsSource","selectedColor","OlStyles","lineCap","shadowColor","zIndex","overflow","ApGeoPointsLayer","clusterSource","Cluster","Style","addToEditLayer","transformCoordinates","deleteAllPoints","activateEditMode","modifyTriggered","modifyInteraction","deactivateEditMode","un","listenPointerDown$","listenPointerUp$","listenPointerMove$","listenPointerOver$","listenPointerOut$","listenPointerLeave$","listenPointerEnter$","listenPointerDrag$","listenPointerCancel$","listenClick$","listenDoubleClick$","listenSingleClick$","listenScrollUp$","listenScrollDown$","listenDefault$","OlView","ApPolygonEditLayer","_selectFeatures","selectPolygon","replaceSourceDisabled","layerFeature","id_","intValue","selectionList","Join","ElementAt","subjectList","selectionListKeys","subjectListKeys","MAX_N_UPTAKE_LEGEND_VALUE","CROP_TYPE_LEGEND","crops","Description","selectionLists","subjects","updateValues","getValueElementAt","getFirstValueElement","getLastValueElement","getValuesList","SOIL_GROUP_LEGEND","NUTRIENT_COLORS","ApDistributionClassColors","NUTRIENT_DISTRIBUTION","mg","ph","getValueElementAtWithSelection","getFirstValueElementWithSelection","getLastValueElementWithSelection","TRACK_LEGEND","breaks","machineTypeSelection","machinePropertySelection","Property","colors","onChangeTrackLayerStyle","selectionKeys","N_PLANNING","fertilizationManagementService","fertilizerStore","stats","leadNutrientsSelection","_leadNutrientsSelection","unitMapped","Min","Max","N_PLANNING_COLORS","fertilizer","getFertilizer","ProductId","fertilizerContent","getFertilizerContentN","newStat","INFertilisationStatisticValue","Average","N","Unit","Prodname","transformFunction","N_UPTAKE_LEGEND","nUptakeColors","stepSize","legendValue","be","NUTRIENT_PLANNING","elementService","baseFertilizationService","plansLegendData","Statistic","statInProduct","addProductAmountStatistic","ElementId","OperationModeId","elementValue","elementText","stepForTitle","stepTitle","absElementId","GetElementStringById","CalculateElementOxidValueByElementType","toUpperCase","calculateProductAmount","origElement","NUTRIENT_PLANNING_COLORS","NEED_COLORS","getMinFloat","classes","newStep","NEED_LEGEND","maxP","maxK","maxMg","maxCaO","stepP","calculateCurrentNeedSteps","stepK","stepMg","stepCaO","stepPTitle","stepKTitle","stepMgTitle","stepCaOTitle","nutrients","GetElementStringByString","NEEDS","NeedLegendChange","calculateValueForStep","nutrientPlanningTitle","N_LOG_INTERPOLATION_LEGEND","user","valuesToSelect","selectedValue0","band","minValue","maxValue","NFertilizationLegend","PP_APPLICATION_LEGEND","PP_LOG_INTERPOLATION_LEGEND","LOG_LEGEND","NDI_LEGEND","CanvasImageLayerRenderer","imageLayer","image_","getImage","prepareFrame","layerState","layerStatesArray","layerIndex","viewResolution","imageSource","hints","viewHints","renderedExtent","ViewHint","ENABLE_RASTER_REPROJECTION","loadImage","renderFrame","imageExtent","imageResolution","imagePixelRatio","getPixelRatio","viewCenter","rotation","size_1","composeTransform","pixelTransform","makeInverse","inversePixelTransform","canvasTransform","createTransformString","useContainer","containerReused","clearRect","clipped","layerExtent","clipUnrotated","tempTransform","renderedResolution","dw","dh","getContextOptions","preRender","previousAlpha","globalAlpha","postRender","restore","container","CanvasLayerRenderer","ImageCanvas","opt_loader","ImageState","loader_","canvas_","error_","getError","handleLoad_","load","ImageBase","CanvasVectorImageLayerRenderer","vectorRenderer_","CanvasVectorLayerRenderer","layerImageRatio_","getImageRatio","coordinateToVectorPixelTransform_","renderedPixelToCoordinateTransform_","disposeInternal","vectorPixel","handleFontsChanged","vectorRenderer","scaleFromCenter","imageFrameState_1","declutterItems","image_1","replayGroupChanged","clipping","renderDeclutterItems","getState","pixelToCoordinateTransform","forEachFeatureAtCoordinate","declutteredFeatures","VectorImageLayer","imageRatio","imageRatio_","BaseVectorLayer","delegates","fixedZIndex","tooltipGenerator","featureFilter","legendGetter","onForceUpdate","forceUpdate","Legend","Tooltip","setUrl","loadExtends","paths","reqUrl","ax","MapFactoryAuthenticator","Zt","selectedGeometries","gt","bt","forceUpdateDebounced","pe","getUrls","reload","zoomToExtent","extentUrl","boxes","enc","TextDecoder","decode","geoJsonArray","readGeometry","ext","onExtentLoadFinish","_buildDynamicColorLegend","N_COLORS","EPSILON","GetPermissionPipe","UserPermissions$","permissionData","Permissions","FarmUsers","Farm","retval","Feature_Key","farm","foundFarmUser","UserId","UsergroupUser","ug","check","Groups","usergroup_id","Usergroup","access_permission","IconsModule","ApResponsiveTextComponent","intl","displayText","extraLines","breakLine","half","TextBoxModule","ButtonGroupModule","ApSectionHeaderComponent","ApSectionHeaderGridComponent","ctx_r7","onCreateClick","createDataset","onSearchClick","onTextChange","onResetClick","reset","onClearAllFiltersClick","clearAllFilters","ctx_r2","openMap","goIntoMapMenu","showMapView","openStats","goIntoStatisticMenu","openHelp","goIntoHelpMenu","ApTooltipDirective","renderer","apTooltipService","aptooltip","onMouseEnter","perpetual","offsetWidth","scrollWidth","isShowingTooltip","Show","onMouseLeave","hideTooltip","onMouseDown","hasNoPointerEvents","isDisabledByAttribute","Hide","ApTooltipService","CreateKendoDirective","tooltipWrapper","popupService","kendoTooltipDirective","TooltipDirective","showAfter","tooltipDelay","TooltipAttribute","Init","tooltipTemplate","ReadTooltipText","TooltipMap","removeAttribute","ApClassColorFilterComponent","ToUpperCase","ApNumberFilterComponent","minEnabled","minEnabledCtrl","minValueCtrl","maxEnabled","maxEnabledCtrl","maxValueCtrl","valueCtrl","parsedValue","dynamicMin","dynamicMax","currentFilters","setFilter","valueAsString","decimalFactor","valueAsUniformInteger","maxReverseRoundValue","Clear","filterChanged","ApFieldSvgComponent","GetBooleanPipe","AreaUnit","AreaUnitConverterPipe","SQUARE_METER","HEKTAR","GetSoilSampleFieldClassColorPipe","getSoilSampleClassColorService","getImageStyle","GetSoilSampleClassNamePipe","ApPlantProtectionTypemappingPipe","GetSoilSampleFieldColorPipe","ConvertBase64ToPngPipe","base64String","FactorPipe","factorService","calculate","GetRoundNumericPipe","GetKendoDateFormatPipe","GetElementOxidCalculatePipe","GetReplacePipe","SafePipe","GetCountryCodeFlagPipe","SoilGroupFormatPipe","ApCustomFormatPipe","MultiSelectModule","MultiViewCalendarModule","DateRangeModule","DropDownListModule","NumericTextBoxModule","Milliseconds","TotalDays","TotalHours","TotalMinutes","TotalSeconds","TotalMilliseconds","Ticks","Microseconds","TotalMicroseconds","Nanoseconds","TotalNanoseconds","useEmptyOnNull","getEmptyTimeSpan","Day","calcExtentOfFeatures","differenceBy","isObject","ApLodash","drop","ServiceInjector","sanitize","SecurityContext","bypassSecurityTrustResourceUrl","toReplace","ToReplace","ReplaceWith","GetRoundNumericPipeConfig","NullToReplace","NullAndZeroToReplace","ExecFunctionPipe","countryCode","farmUnit","withReplace","isNeedReplace","roundResult","FormatNumber","GetStatisticKeysPipe","soilGroupFormatService","FactorService","factorStore","factor","getFactor","Factor","ApFieldFormatService","formatFieldNumber","GetApplicationModeService","applicationModeStore","GetApplicationModeById","GetApplicationModeByKey","GetApplicationModeTranslation","GetApplicationModeStatus","GetElementService","settingStore","elementOxideCalculate","FirstSetting$","_settings","getAllElements","IsOxidFarm","GetElementStringByIElement","elementType","CalculateElementOxidValueByGivenElementValue","CalculateToElementByGivenValue","isValueInOxid","isNeedConvert","oxidUnit","elementUnit","UnitElementOxyd","isOxidFarm","convertElementOxid","isOxydMethod","EndsWith","ApNutrientManagementDateService","GetMinDate","getSelectedCampaignYear","DefaultStart","GetMaxDate","SelectedCampaignYear","Year","getCampaignYears","DefaultEnd","GetOutputDate","ApNutrientService","campaignYearService","sampleMethodService","applicationModeService","formatClassificationTooltip","hitClassE","getUnitWithMethod","convertNutrientToGoods","productId","ContentP","ContentK","ContentMg","ContentCaO","ContentN","IsLiquid","Density","IsOrganic","getFertilizerLeadingElement","elementContents","absElementContents","maxElementContentsIndex","getFertilizerStatus","applicationMode","isBooking","getFertilizerStatusDescription","getGDStatusByCrAttribute","sampleDateObject","sampleRegions","crAttribute","selectedCampaignYear","sampleDateMidnight","soilSampleYearWithInterval","_getEndOfCampaignYearWithSoilSampleInterval","hasNoSampleDate","hasNoCropInCurrentYear","IsCropClosed","hasNoWsvRaster","HasWsvRaster","hasNoIrRaster","HasIrRaster","hasNoRbRaster","HasRbRaster","sampleDateInFutureCampaignYear","soilSampleWithIntervalOlderThenCurrentYear","convertGoodsToNutrient","withOxid","Region","sampleRegion","SoilSampleInterval","soilSampleInterval","soilSampleCampaignYearStart","getCampaignYearBeginFromSampleDate","soilSampleLastCampaignYear","getCampaignYearRange","EndYear","ApShowTrackOnMapService","colorLegendStore","machineBreaksStore","geoJsonStore","machineStore","mapViewMode","_mapViewMode","geoJson","_json","_pendingSubjects","_breaks","ApDocuUtils","TrackPropertyComponent","setType","propertyNames","_types","upperFirst","camelCase","_type","isActive","generateGeoJsonBySlice","_show","Attachment","Machine","_refreshMap","generateGeoJsonByField","attachment","workType","generateGeoJsonByMachine","guid","machine","onMapClear","clearGeoJson","resetColorLegend","removedUnreferencedIds","_removeId","getPendingSubject","isPending","refreshMap","ApTooltipContentService","cropTypeStore","cropService","getFieldsCropsTooltip","formattedData","getFieldNameById","FieldId","CropName","getDefaultCroptype","MainCropId","_getFieldsTooltip","getFieldsCropsTooltipForBaseFertilization","cropRotation","getCropRotationByYear","getCropNameFromCropRotationYield","getProductContentInfoTooltip","generateCropNoteTooltip","note","planBooksApplicationDatesTooltip","fieldsTooltip","applicationDate","ApplicationDate","CurrentDateFormat","FindTranslation","generatorOrNext","emitter","GetRoundNumericService","SelectedLanguage$","_lang","roundValue","notReplace","DigitsAfterDecimalPoint","optionalUnit","fixValue","DecimalSeperator","GetSoilSampleClassColorService","getColor","classVal","defaultColor","borderColor","getStatisticAxesConfig","ChartSetValueType","titleX","titleY","SoilGroupFormatService","mapSingle","soilGroup","mapSoilGroups","soilGroups","_labels","_values","_colors","stringFromCodePoint","encode","bytes","TextEncoder","fromCodePoint","functionName","maxWaitTime","startTime","propertyName","checkFunction","propertyKey","originalMethod","uniqueName","__source","performance","timespan","avgTime","sumTime","getTraceForMethod","top10avgTime","_top10By","top10sumTime","top10callCount","valueKey","rev","sorted","sortBy","propKey","idxList","pullAt","ApFleetmanagementComponent","actionStore","_onClick","selectedId","getMapViewMode","changeSelectedLocation","timeString","getDataFromStore","gridBuilder","ApDynGridStatusColumnConfig","DateFormat","TimeFormat","ApDynGridButtonColumnConfig","toggleable","isItemSelected","ApDynGridPagerWizardConfig","loadingByInterval$","machineInterval","clearInterval","loadLocations","setInterval","LocationsLoading","locationsLoading$","locationLoading","loadingByInterval","selectedLocations","machines","locationLoaded","locationsLoaded","_getLastActivityTime","lastActivity","translations","foundIndex","machineTypes","Status","StatusClass","StatusDesc","LastActivity","labelStart","labelEnd","controlEnabled","TrackLoaderService","legendScrollerService","selectedSlices","loadBySelectedSlice","machineId","machineKind","fieldId","loadBySlice","From","fromExpr","toExpr","$i","Fn","en","Co","qi","loadByFleetAction","firstSlice","Slices","lastSlice","removeUnreferencedIds","RemoveAll","setTrackUrl","yr","initLegend","TrackLegend","kindSelector","kindSelection","generateSelectionKey","ChangeMapFactoryLayerUrlTrack","store","sourceUrl","Mutate","trackUrl","ApActionLookupComponent","fb","machinesStore","sliceStore","trackLoaderService","ApDynformsValidator","ApFormValidators","days","subscribeToEvents","formBuilder","dynComponent","disableNext$","subscribeToFormControls","formSubscriptions","combinedSlices","slices","Duration","StandstillTime","MovementTime","markUntouched","machineControl","dateStartControl","dateEndControl","markAsUntouched","onBackClick","formMinDate","formMaxDate","isDate","loadDayList","mapClick","_showTrackOnMap","onBack","Validators","ApDynformsConfigPlaceholder","ApDynformsConfigDateRange","isInUse","_isItemSelected","ApDynGridPagerWizardButton","getDaysInUse","onSubmitClick","Date_Start","Date_End","hours","seconds","loadSlicesCombinedByMachineAndDate","sourceItem","Instrument","WorkType","ApBookingUtils","checkInvalid","instrument","unitSubject","_getInstrumentDefaultWorkType","w","Wt_Unit","fleetActionAttachmentStore","fleetActionAttachments","worktype","fleetActionAttachment","driver","Driver","WorkingWidth","Application","DefaultWorktype","DefaultWidth","applications","validValues","application","comment","Comment","IsModified","Valid","saveFleetActionAttachments","configChunk","chunk","Start","End","assignments","dateRanges","assignment","DateRanges","_validate","dateRanges$","ApBookingComponent","driverStore","formStore","instrumentStore","roundNumericPipe","hideMapView","_selectedDateRanges$","_fillWizard","_gridBuilder","onCreate","openForm","ApEditActionComponent","onEdit","_createEventEmitter","eventEmitter","_listMassEditing","_saveFleetActionAttachment","_instrumentsEdit","ApDatesOverlapValidator","instrumentDateRageAssignments","_getErrorKeySubject","_driversEdit","driverDateRangeAssignments","_applicationUnitSubject","ApDynformsConfigArray","ApDynformsConfigTextbox","ApDynformsConfigNumerictextbox","_setValid","_subscribeToErrorKeySubjects","attachments","getFieldById","getFieldName","TimeOfNoUse","Area","Reduce","NettoArea","FromDate","FieldSubNumber","WorkTypeText","Fo","DriverName","Ar","Mr","FullName","Application0","Application1","Application2","_removeTimeout","removeModifiedFleetActionAttachments","deleteDriver","Firstname","IsDeleted","deleteWorktype","Category","Category_Text","Fertilisers","Shortname","SubCategory","deleteInstrument","CreatedAt","CreatedBy","ChangedAt","ChangedBy","DeletedAt","DeletedBy","Version","drivers","loadFleetActionAttachmentsByModified","_errorKeySubjects","ApDynGridStatusSwitchColumnConfig","_showLineClick","Logger","ApDynGridEditColumnConfig","ApDynGridPagerConfig","_hideOnClose","ApBookingArchiveComponent","generateApplicationLabel","newLine","applicationLabel","appl","_instrumentEdit","_driverEdit","_resetModified","deleteWorkType","ApplicationLabel","removeUnmodifiedFleetActionAttachments","ShortFullName","instruments","routes","path","canActivate","ApPermissionGuard","login","permissionPipe","asObservable","l0","l1","Fields$","mainCrop","getCrop","subCrop","NrSNr","getFieldNumberAndSubNumber","MainCrop","SecondCrop","MainCropExpectedYield","ExpectedYield","SecondCropExpectedYield","StrawHarvested","Attachments","TimeFrom","TimeTo","TraversedArea","BruttoArea","WorkedArea","xt","ApDynGridDetailsGridConfig","changeSelectedField","ApFieldWorksOverviewComponent","ApDocuRoutes","RouterModule","ApDocuModule","SplitButtonModule","ComboBoxModule","ChartsModule","RowFilterModule","countyCode","getSlicePropertyIntern","Processing","Mapping","MovementProcessing","StandstillProcessing","keyMap","durationMs","asHours","asMilliseconds","getDuration","getDurationOfSlicesInMs","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getSeconds","getUTCMilliseconds","standStill","getStandStillTimeOfSlicesInMs","processing","ApJobsEditComponent","JobType","CreatedAtFormatted","StartedAtFormatted","LastActivityFormatted","FinishedAtFormatted","PriorityText","Condition","Schedule","ScheduledAtFormatted","IntervalFormatted","ScheduleEnd","ApDynformsConfigTextarea","Input","Output","onCancelClick","closeForm","ApParameterDefinitionEditComponent","parameterDefinitionStore","LanguageList","listLanguage","createList","createRefObjectList","fillWizardChoiceData","_onApplyClicked","isNewMode","ParameterRefObjectType","ParameterType","ListValues","TranslationKey","StandardValue","Mandatory","Countries","RefObjectId","Regex","TypeId","listValue","listTypes","listRefObjects","ApDynformsConfigCheckbox","createParameterDefinition","updateParameterDefinition","deleteItem","nameItem","translationKeyItem","bool","timestamp","newItem","ApTranslationsEditComponent","modalDialogStore","userSettingsStore","getCountryCodeFlagPipe","_editedTranslation","Translation","saveChanges","_onEdit","invalid","markAllAsTouched","dialog","buttons","primary","setModalDialogData","_canTranslateCountryCodes","CountryCodes","translation","CountryCode","VersionsIndex","languages","allLanguages","Sort","ListSortOrder","_translations","createTable","tr","getTranslation","Present","gridData","StandardIcon","fr","CreateTranslation","UpdateTranslation","ApDynGridImageColumnConfig","ApDriversEditComponent","driversStore","saving$","saving","saved","SelectedFarmId","createDriver","updateDriver","ApFertilizerInorgsEditComponent","fertilizerInorganicStore","unitStore","RealContentCaO","Selectable","Note","ContentS","Efficiency","EquivCaO","AlkalineEff","AlkalineCaO","ContentCaCO3","ContentMgO","ContentP2O5","ContentK2O","ContentMgCO3","uniqueNames","getFertilizerInorganic","uN","getUnit","_formBuilder","ContentNeutralisationValue","UnitId","_calculateFormValue","cal","CaO","MgO","saveDisabled$","saveButtonDisabled$","createFertilizerInorganic","updateFertilizerInorganic","_isLock","_getFertilizerFieldset","_getContentFieldset","_getAlkalineFieldset","_getLabelWithUnit","ApDynformsValidations","ApFertilizerOrgsEditComponent","fertilizerOrganicStore","loadFertilizerIsInUse","CategoryId","DMPercent","getFertilizerOrganic","_setContentNeutralisationValue","configBase","newLabel","createFertilizerOrganic","updateFertilizerOrganic","_showMessage","CountInUse","_getConstantFieldset","ApInstrumentsEditComponent","instrumentsStore","worktypeStore","worktypes","SortBy","createInstrument","updateInstrument","ApMachinesEditComponent","DefaultDriver","DefaultInstrument","NameWithSign","HHID","ins","createMachine","updateMachine","ApSubFarmsEditComponent","subFarmStore","City","Email","Fax","Nummer","Postalcode","Street","Telephone_Nr","createSubFarm","updateSubFarm","UserContactEditMode","ApUserContactsEditComponent","userContactsStore","editMode","EDIT","CREATE","Lastname","FarmName","MailAddress","IsActive","createUserContact","updateUserContact","ApUsersAssignmentFarmEditComponent","farmUsersStore","getAvailableUserGroups","getAssignedUserGroups","allFarms","Farms","listUsergroupItems","assignedUserGroups","EMail","SessionHash","RoleId","Phone","PasswordHash","Mobile","LastReadNews","Language","IsLocked","FAX","RoleType","Surname","UserName","Forename","IsConsultant","RedirectToNews","Farm_Id","Group_Id","BranchOfActivityId","SelectedFarm","IsDriver","onChanges","notAssigned","currentFarmUsers","getFarmUsers","aU","allUsers","cFU","nA","ApUsersInvitationEditComponent","invitationStore","Usergroupid","Isdriver","DriverId","createDriverCheckbox","listDriverItems","getInvitation","inv","isDriver","UserGroupId","ApActionApplicationsComponent","setControl","_setWorkTypeUnits","_newValues","onDeleteClick","removeAt","applicationChange","wtUnit","driverMachineStore","machinesLoggerStore","getUTCDatePipe","UTC","attValidControl","attInstrumentControl","attWorkTypeControl","attWorkingWidthControl","dateControl","fieldControl","workedAreaControl","timeFromControl","timeToControl","durationControl","attMachineControl","traversedAreaControl","fixed","harvestEnd","_getHarvestEnd","fromDate","_machines","ww","calculateBruttoNettoArea","getNettoArea","getBruttoArea","HarvestEnd","Field","fieldCrop","HarvestAttachment","saveFieldCrops","_update","_save","onAddApplicationClick","onDelete","getStandStillTime","driverMachines","getDriverMachine","requiredValidators","Mt","Me","ApDynformsConfigDatepicker","ApDynformsConfigTimepicker","_minDate","_maxArea","_maxDuration","getWorkTypes","selectedWorkType","machinesLogger","dateValue","DateFrom","DateTo","fieldBase","AreaHa","harvestEndAttachment","getHours","getMinutes","LastAction","Traversed_Area","Way","Worked_Area","FieldIdOnEnd","FieldIdOnStart","GroupId","Hhid","Imei","InField","NumPoints","createFleetActionAttachment","HostDirective","viewContainerRef","DYNAMIC_LOAD_COMPONENTS","BurgerMenuEntryComponentsModule","ColorLegendEntryComponentsModule","ApDynamicComponentLoaderComponent","componentFactoryResolver","dynComp","componentFactory","resolveComponentFactory","host","createComponent","ApDynamicComponentLoaderModule","ApEditFieldComponent","fieldFactory","Editor","FeatureLocked$","locked","integrated","CurrentArea$","ActiveTool$","GeometryEditorTool","fieldNameOrNrRequired","yieldRequiredIfMainCropIsSet","yieldRequiredIfSecondCropIsSet","Selected","frm","Fe","fieldNr","fieldTNr","mismatch","secondCrop","secondCropYieldControl","secondCropYield","missingYield","mainCropYieldControl","mainCropYield","fieldsSaving$","removeMessage","IntegrateGeometryFailNotification","addMessage","formIsInvalid$","onMainCropChanged","onSecondCropChanged","DeleteGeometry$","deleteGeometry","EditedFeature$","saveGeometry","ToBigGeometryNotification","getNotify","DefaultGeom","selectedFarm","ValidFrom","ValidTo","CampaignYear","FieldGeomPackages","CreateNew","_originalGeometry","pullSelectedGeometry","ze","Rt","comboBoxCropTypeItem","_availableCropTypes","nt","St","CroptypeSecondId","ExpectedYieldSecond","MainSecondCropType","mapFormValues","fieldSaved","FieldGeoms","createField","parameter","selectedGeometry","editorActivated","ActiveTool","geomModified","DisplayTimeout","Level","Parameters","saveField","CloseEditor","jsonF","writeFeature","newFeature","jsonFe","formValue","cropType","cropTypeSecond","Cropkey","CropKey","MainCrop_YieldUnit","SecondCrop_YieldUnit","RemoveResidues","deleteFieldGeom","deleteFieldCrop","ShowEditbar","selectedCropId","yieldDefault","CropTypes","ApParameterComponent","GetNumericService","getNumberOrZero","MergeNewFieldName","ApMergeFieldComponent","modalDialogPresets","numericService","fieldArchiveStore","yieldRequiredIfCropIsSet","Dt","onFieldSelectionChanged","CurrentItem","calculateAreaSizeStringByValue","clearFieldPlanBooksResult","submitLogic","fieldPlanBooksResult","planBooks","ExistPlanBooksDialog","AllItems","calculateAreaSizeString","takeFrom","newField","setLongOperationStatus","mergeFields","mergeFailed","failed","loadFields","CampaignYearStore","loadFieldArchive","mergeSuccess","success","checkFieldsPlanBook","selectedField","zt","dt","Be","he","Nt","Gt","Kn","Et","tt","Ln","Vi","Mi","Ri","_i","Oi","ti","jt","_4","_5","_6","Mn","Do","io","_7","_8","_9","_10","_11","_12","_13","_14","_15","sum","getAreaValue","ApMonitoringDetailEntryComponent","monitoringTypeStore","monitoringFieldStore","monitoringDetailStore","monitoringDetailEntryConfig","_setLoading","_initialFormData$","fieldSets$","initialFormData","areFormValuesInInitialState","_isConfirmationWindowsShouldBeEnabled","NewComponent$","MonitoringFields$","newComponent","monitoringFields","componentData","caption$","MonitoringDetailId","monitoringField","MonitoringFieldId","getMapViewCurrentMenu","valuesChangesArgs","handleMonitoringRecommendation","_executeSaveProcess","_closeForm","onDeclineUnsavedChanges","SetLoadState","SetLoadFinishState","Loading$","loadings","MonitoringDetails$","MonitoringTypes$","SelectedCampaignYear$","monitoringDetails","monitoringTypes","campaignYear","monitoringDetailData","formData","getFormData","generateFormConfig","formFields","customData","monitoringDetail","MonitoringDetails","monitoringDetailsWithNewData","applyFormDataToBackendObject","editMonitoringDetail","newMonitoringDetail","createMonitoringDetail","MonitoringDetailEntryConfig","decls","MonitoringRulesStore","Store","calculateRecommendation","measuredValue","eppoCode","ecStage","monitoringTypeId","rej","DispatchBackend","MonitoringRulesCalculateRecommendation","watchStream","MonitoringRulesCalculateRecommendationResult","todo","monitoringRulesStore","unitService","uploadFileService","Ue","MonitoringTypes","MonitoringTypeId","RulesRecommendation","getCropType","getFieldCrop","ecValue","EcValue","Eppocode","recommendationValue","Recommendation","formData$","MinDateRange","MaxDateRange","_formDataMonitoringTypeObservable","getUnitWithLabelKey","MonitoringType","ValueUnit","FormValues","IsValueDisabled","RecommendationUnit","IsRecommendationDisabled","Notes","ApDynformsConfigUpload","ApHelpImageUpload","_uploadFile","_downloadFileContent","monitoringType","ve","EcStage","_convertAttachmentToFileInfoData","onConfirmed","UnsavedChangesDialog","resultDelegate","dialogResult","ModalDialogButtonKeys","copiedFormData","downloadAttachment","ContentMimeType","ContentSize","ContentBase64","_processFileUploading","thumbnailExtension","getFileExtensionByMimeType","ThumbnailMimeType","ThumbnailSize","ThumbnailBase64","thumbnailFileDataUrl","readFileToDataUrl","rawFileDataUrl","getBase64FromDataUrl","shouldProgressStopProgress","controlUploadProgress","Interval","Increment","uploadAttachment","MonitoringFieldEntryConfig","getBreadCrumbs","getGridColumns","setting","getSelectionStepPager","onPrev","onNext","isNextActive","ApDynGridPagerWizardBreadcrumbsStepper","getMonitoringFieldGridItem","fieldCombinedNumber","mainCropDescription","parseMainCrop","gridStatus","_getItemGridStatus","FieldGeomId","FieldSecondNumber","FieldCombinedNumber","ApMonitoringFieldEntryComponent","changeDetection","monitoringFieldEntryConfig","_handleHalfMapAndGridView","_onSelectionStep","_onCancel","_onNextToDetails","_onDetailsStep","onBackToSelection$","onSave$","saveMonitoringFieldWithDetail","_selectedField","_detailsSubscriptions","_selectionSubscriptions","_isNextActive","itemToSelect","_setSelectionSubscriptions","ApDefined","columns$","fieldPolygon","_selectedFieldGeomId","_setDetailsSubscriptions","items$","selectedFieldIds","selectedFieldGeomIds","zoomFarmFields","detectChanges","fieldNumber","fieldSubnumber","ApSplitFieldComponent","cropRotationStore","fieldNameOrNrRequired2","yieldRequiredIfMainCropIsSet2","yieldRequiredIfSecondCropIsSet2","internalCropValidation","splitCorrect","SplitLineIncorrectNotification","onTakeOverCropRotation","splitFieldResult","numberOrZero","FieldOne","TakeOverCropRotation","AreaSize","MainCropYieldUnit","FieldOne_MainCrop","SecondCropYieldUnit","FieldOne_SecondCrop","FieldTwo","FieldTwo_MainCrop","FieldTwo_SecondCrop","fieldPrefix","featureIndex","mainCropId","secondCropId","OldField","newFieldOne","newFieldTwo","cropRotationTransfer","splitSuccess","LoadFieldCropRotation","LoadFieldCropRotationPast","splitFailed","fieldNamePrefix","NFertilizationCommonEntryService","isApplicationMapOrAbsolute","operationModeKey","OperationModesEnum","nUptake","bestScanData","NUptakeAvg","getThreshold","growStage","cropKey","platformSpecificCrop","thresholds","Thresholds","firstKey","lastKey","ApNutrientBookingComponent","basicFertilisationSummariesStore","jobsStore","nutrientManagementService","nutrientService","fertilizerService","AverageUnitKey","SumUnitKey","_componentData","updateComponent","IsBooked","_getColumns","_getPager","_setItems","_onSelectionGridChange","filedIdToSelect","FieldIdToSelect","itemsToSelect","_getModalFieldSets","resultSubscription","_updateOverviewItems","_columnUnits","columnUnits","BlockedFieldIdsBuWsvCeIrRbFieldRaster$","BlockedFieldIdsBuWsvCeIrRbFieldRasterTooltip$","nextTitle","_formClose","_booking","_getPagerFieldSets","Summary","BasicFertilisationPlanBooks","BookedAt","planBook","getFieldArchiveById","Operation_Mode","Product_Id","Element","amountGood","Appl_Rate","getDriverById","ExportDriver","getMachineById","ExportMachine","getInstrumentById","ExportInstrument","_getAreaHa","Product","getFertilizerProductName","Amount","Sum","ExportedBy","TEnd","_applyDataForColumns","getFertilizerUnit","planBooksForUpdateFiltered","selectedItem","copiedSourceItem","BookedBy","TStart","ApTimeSpanUtil","updateBasicFertilisationPlanBooks","submitData","getFieldGeomById","Field_Geom_Id","campaignYearRange","StartYear","listenChanges","getFormValues","BasePlanningEntryService","initData","_shouldDeselectFieldsOnClose","_isNewMode","_isSaved","getSelectedFields","_selectedFields","setComponentData","setSubscriptions","clearData","PlanningEntryComponentDataType","ApNutrientWizardStep","ApNutrientGroup","NutrientPlanningEntryService","rbStore","elementStore","statisticStore","nutrientPlanningStore","applicationModesStore","operationModesStore","nutrientStatisticService","baseFertilizationCommonService","nutrientManagementDateService","_notifyAboutSelectedFieldsChanged","summary","_summaryForCreate","globalUnitPercent","_globalUnitPercent","globalUnitKgPerHa","_globalUnitKgPerHa","detectSelectedFieldsChanges","_notifyAboutSelectedFieldsChanged$","getUnitByKey","_globalUnitM3PerHa","_globalUnitTPerHa","_createNewSummary","rememberSelectedFields","_revertDeletedData","clearNutrientPlanningStatistic","removeStatisticData","notifyAboutChanges","savePlannings","saveObject","_convertingSummarySaveObject","saveSummary","setSelectedSummaryKey","clearMapLayerAndLegend","removeLegend","NutrientPlanningLegend","getRemainDemands","ElementType","getAverageRb","getElementLabelTranslation","isKgPerHOrM3PerHOrTPerHUnit","unitId","getM3HaOrTHaOrKgHaUnitIdForOrganic","nutrientGroup","isDataObjectValid","Ut","Xn","nn","Ai","getTotalSumValueFromConst","goodsAmount","totalAreaHa","getConstValueFromTotalSum","totalSum","getModesAndStatusForPlan","operationMode","User_Operation_Mode","rb","getRbStatisticByFieldGeomId","avgRB2","ApplicationMode","OperationMode","_summaryForEdit","_allPlanBooksFromSummaryToEdit","revertSummary","planBooksToRevert","revertSummaryPlanBooks","startYear","IsCurrentCampaignYear","farmApplDate","User_Appl_Date","nonDeletedPlanBooks","nonBookedPlanBooks","planBookFieldIds","getFieldsById","_generateSummary","Title","oi","User_Appl_Unit","User_Appl_Mode","zn","User_Appl_Const","User_Appl_Min","User_Appl_Max","User_Appl_Rate","jo","PlanNumber","applUnit","applMode","applConst","applMin","applMax","applRate","applDate","planNumber","driverId","instrumentId","Plan_Number","Selected_Fields","TotalFieldsArea","User_Operation_Mode_Const_Only","User_Operation_Mode_Some_Const","Nutrient_Planing_Data","RbStatistics","MinDate","MaxDate","Amount_Nutrient","Amount_Goods","Amount_Percent","newSummary","_getSummaryUnit","_getSummaryApplRate","readyPlannings","Ready","itemApplicationMode","Appl_Mode","itemOperationMode","planning","Summary_Id","Plan_Id","Appl_Const","Appl_Min","Appl_Max","Croptype_Id","Croptype_Second_Id","Valid_From","Valid_To","Field_Id","Appl_Date","ExportedAt","ExportFormat","ExportTarget","JobInput","inputUnit","BaseUnit","NutrientPlanningEntrySelectionStepService","soilSampleDateStore","fieldNutrientDistributionStore","fieldFormatService","planningEntryService","areaUnitPipe","_dynComponent","activeWizardStep","fieldsId","handleLegendsAndLayers","_onSelectionChange","history","years","_cropRotationLimits$","_year$","_previousYear","_nextYear","_onNextSelection","warningText","itemsForConst","_onCancelSelection","selectedItemsLength","handleLegends","disableLayers","handleLayers","getPager","breadCrumbsColumns","JobInProgress","GetHistory$","GetCropTypesNames$","limits","nextDisabled","previousDisabled","_getCropRotationConfigs","getItems","SampleRegions$","cropRotationAttributes","cropRotationHistory","soilSampleDates","jobFieldGeomIds","rbResult","areaConverted","_areaConvert","cropRotationAttribute","Yi","remainDemand","_statusCss","NewestSampleDate","Crop","ColumnLoading","RbStatistic","Remain2","P","K","Mg","currentStep","_checkStatusToBeApplicableForConst","TrueForAll","iYear","MainCropName","sYieldUnit","SecondCropName","SecondCropYield","MainCropYield","yesNo","MainCropStraw","areaNumber","smallerNumberControlName","biggerNumberControlName","smallerNumberControl","biggerNumberControl","smallerNumber","biggerNumber","minDateFailed","maxDateFailed","dateFormat","NutrientPlanningEntryDetailsStepService","_nutrientUnitFertilizerLabel$","_amountUnitFertilizerLabel$","_constantUnitFertilizerLabel$","_totalSumUnitFertilizerLabel$","_minimumUnitFertilizerLabel$","_maximumUnitFertilizerLabel$","_elements","Elements","ShortDescription","_onDetailsFormValueChanges","_setConstInputFieldAvailability","getDetailFieldsetControls","_changedProductDropdownContent","_informationFieldSet","_generalFieldSet","_productFieldSet","_agronomyFieldSet","_minMaxConstFieldSet","_documentFiledSet","afterFieldsetInit","_setFormLabels","getFormValidators","userApplRate","amountNutrients","amountPercent","ApNumberRangeValidator","_getValuesForTypeDropDown","ApDateMinMaxValidator","OrganicFertilizer$","InorganicFertilizer$","organic","inorganic","_getFertilizerWithContent","_getNutrientAmountForAgronomyFieldSet","_isConstFieldDisabled","inputsToUpdate","_cleanUpProductInput","_cleanUpAmountInputs","_setDetailsFormValues","fieldSetsUpdate$","_getElement_WorkaroundForSummariesOrPlanBooks","TotalSum","nutrientAmount","fertilizers","fertList","localeCompare","isAllFieldsVariable","modesAndStatusForPlan","operationModes","OperationModes","operationModeConst","operationModeApplicationMap","ApplicationModeKey","ApplicationModesEnum","NutrientPlanningEntryOverviewStepService","routerStore","statisticService","_isLocked","_goBackToDetails","_clearValues","_goBackToSelection","FieldNutrientPlanningStatistic$","statistic","_listenNutrientPlanningStatistics","_onSave","_updateFormValuesBehavior","_canSave","_getUnitWithLabelKey","_onDelete","_updatedPlanningEntries","selectedFieldsId","_selectedGridFields","_calculatePlanningRaster","_generateOverviewStatistic","fieldNutrientPlanningStatistic","selectedGridFields","nutrientPlanningStatistics","_generateGridItem","PlanId","filteredFields","filteredSelectedGridFields","removeNutrientPlanningStatisticFromStore","leadNutrientRemainDemandType","remainDemandTypeAmount","recentFormData","GoodsAmount","NutrientAmount","PercentAmount","ApplMin","ApplMax","ApplConst","percentAmount","historyUpdateValues","_getFieldSetForEdit","_getValidatorsForFieldSetForEdit","listenFormValuesSubscription","_onFormChanges","resultKey","_onFormConfirmed","setFormValues","elementNutrientAmount","nutrientAmountInElement","singlePlanData","_recalculateRasterSinglePlan","existingUpdatedPlanningEntry","singlePlanToEdit","singlePlan","calculationValues","_getValuesForCalculation","_getUnitIdAccordingToPercentAmount","Ready_Calculated","ApplRate","startNutrientPlanning","HasApplMin","HasApplMax","withOxide","applMinHasValue","applMaxHasValue","applUnitId","values$","_isNotNullOrUndefined","agronomyConfigs","rbStatistic","summaryElement","amountValue","cao","elementIndex","elementStatistic","Mean","Band","ErrorText","distribution","GeomSVG","Geom_Id","Distribution","Nr","TNr","NrTNr","GetCropTypeName","CropTypeId","SecondCropTypeId","Exported_At","Exported_By","Exported_Format","fieldIds","_createNutrientPlaningData","nutrientPlaning","getCampaignYearByDate","fieldGeomIdPlanId","_fieldGeomIdPlanId","_getCropId","T_End","T_Start","fieldGeomAndPlanId","elementAsIndex","statisticItem","planningData","readySinglePlans","ready","meanValue","statisticList","currentUrl","nutrient","getNutrientName","elementId","_clearMapAndLegendCompletely","onNutrientPlanningChanged","NutrientPlanningLayerSourceInit","emptyTitle","setStatisticData","statItems","Module","PlanningWizardOverviewModuleStats","OperationModeKey","NContent","calculateNElementByLeadElement","_getTitleForStatistic","dataForTitles","totalItems","generateFieldsAreaTitle","MapFactoryStyler","perHa","ApNutrientPlanningComponent","nutrientDistributionStore","planningEntrySelectionStepService","planningEntryDetailsStepService","planningEntryOverviewStepService","setMainComponentSelectionAvailability","historyLoading","cropRotationAttributesLoading","_setSubscriptions","_listenFieldStore","onBackDetails","onNextDetails","_onOverviewStep","currentFieldGeomIds","_readFieldGeometriesOfCurrentLoadedFields","loadFieldNutrientDistributions","loadRb","ApParameterValueHistoryComponent","parameterValuesHistoryStore","booleanPipe","refId","loadParameterValueHistory","parameterValueHistoryLoading$","hist","h","parameterDefinition","getParameterDefinitionById","DefinitionId","OperationType","statusClass","statusDesc","oldValue","newValue","OldValueString","NewValueString","_booleanConverter","OldValueBoolean","NewValueBoolean","OldValueNumber","NewValueNumber","_listConverter","OldValueListKey","NewValueListKey","OldValue","NewValue","Info","ToolTip","_createTooltip","definition","parameterValueHistory","createdBy","CreatedByName","createdAt","CurrentDateTimeFormat","changedBy","ChangedByName","changedAt","deletedBy","DeletedByName","deletedAt","ApParameterEntryComponentsModule","ApParameterValueComponent","ApParameterGridPagerActions","parameterValuesStore","_applyClicked","modalDialogResult","_openEditDialog","ParaDef","getElement","ValueBoolean","ValueNumber","ValueListKey","permission","defs","itemDefinitions","ToInteger","Save","_createParameterList","createParameterValue","updateParameterValues","_updateParameterList","_deleteParameterList","deleteParameterValue","_editedParameterValue","Parameter","getParameterDefinitionByRefObjectType","refObject","loadParameterValue","_createItem","_delete","_create","parameterValue","validFrom","validTo","ValueString","InfoIcon","definitionId","campaignYearStart","getDefaultStart","newParameterValue","RefId","ValueTimestamp","_getEditFieldSets","ParameterValue","ParameterTabs","_afterViewInit","setTab","selectedTab","ApLoggerEditComponent","loggerStore","Typ","SendTarget","SendTargetHansenhof","Password","NewPassword","PwSalt","SendTargetControlKey","SendTargetLogicway","SendTargetAgricon","isAgriconLogger","startWith","sendTarget","updateLogger","ApMachinesLoggerEditComponent","getLogger","ApDateRangeValidator","createMachinesLogger","updateMachinesLogger","ApSettingsEditComponent","farmStore","countryStore","settingsLoading","farmLoading","countriesLoading","loadAllCountries","_getFieldSets","farms","_applyFormData","registryNumberUpdated","countryUpdated","settingsSaved","_saveState","SettingsSaved","CountrySaved","RegistryNumberSaved","_onAfterSave","disabledButton","_isSettingsChanged","_setting","updateSettings","registryNumber","RegistryNumber","updateRegistryNumber","farmCountry","Country","updateFarmCountry","saveComplete","showSaveSuccessMessage","showSaveFailMessage","CustomerNumber","Street2","PostalCodePlusCity","_getPostCodePlusLocation","State","_getElementOxydSettings","_getDigitsAfterDecimalPoint","getTimeZones","Countries$","postalCodePlusLocation","PostalCode","ApUsersEditComponent","userGroupsStore","createDriverComboBox","userGroupUser","farmUser","GridDragAndDropDirective","gridComponent","dragStart","fromEvent","dragOver","_draggedIndex","sourceIndex","destinationIndex","rowDrop","destinationItem","COMPONENTS","MapLayerControlComponent","NFertilizationBurgerMenuComponent","RadioButtonModule","mapLayerControlStore","reorder","clickCheckBox","onVisibilityChanged","visibility","mapsChange","onBackgroundMapChanged","ctx_r31","pointEnabled","panelBar","contentChildItems","over","draggedIndex","getFormControl","PanelBarComponent","NFertilizationPropertyComponent","FieldDistributionLegendSelectorComponent","selectionChanged","DetailsCommonUiProvider","agriportConstantsService","createGeneralFieldset","operationModeEnum","operationModeAppSettings","validWorkTypes","createProductsFieldset","productsTemplateRef","responsiveData","addProductCallback","productsFieldset","PpConstants","ApDynformsConfigTemplate","ProductListItems$","qe","PreselectValidProducts$","products","sortProductsByName","getProductOption","PreselectedProductDetail$","preselectedProductDetails","productListItems","PreselectedMinProductRate$","PreselectedMaxProductRate$","getLabelWithUnitAndMinMaxRange","ProductAvgLabelBase","productDetail","minProductOfProductMax","GetConstant","ProductMaxLabelBase","AmountMax","ApDynformsConfigButton","AddProductButtonDisabled$","createDocuFieldSet","product","ProductDetails","ProductName","EffectiveRange","baseLabel","unitKey","minAmount","maxAmount","DetailsTargetRateMapPerFieldUiProvider","createTargetRateMapPerFieldFieldset","MinWaterAvg$","MaxWaterRange$","DetailsTargetRateMapPerPlanUiProvider","createTargetRateMapPerPlanFieldset","DetailsTargetRateUiProvider","createTargetRateFieldset","DetailsUniformUiProvider","createUniformFieldset","uniformFieldSets","WorkTypes","OverviewGridColumnsUiProvider","getUniformSprayingColumns","minMaxAvgTooltipGenerator","getTargetRateColumns","getCommonColumns","SelectionData","getCommonEndColumns","ProductsTooltip","whichPropertyToUse","PlanBook","ProductList","valueCalculateWith","ApplicationMax","ApplicationMin","ApplicationRate","translatedUnit","getUnitWithUnit","calculationResult","ProductRate","SelectionGridColumnsUiProvider","generateGridColumns","areaTooltip","PpWizardStates","SlopeLevel","MAX_SELECTABLE_PRODUCTS","MAX_WATER","PpControlFactors","Low","Medium","High","FieldFactoryService","templateObject","FieldBlock","FieldGroup","FieldType","pair","FieldService","OpenCreateForm","formCloseSubscription","FormClose$","ShowMapGoIn","gridSelectedKeys","getSelectedFieldIds","PrepareNewField","getGeomStatus","fieldGeometry","NdiService","nUptakeFactorsStore","roundNumberService","nUptakeCalculationService","isNdiScanValid","ndiStatistic","createdDate","Created","getCustomStatusForNdiRecord","originalGridStatus","getStatusForNdiRecord","statusTyped","ScanType","getSatelliteNValues","satelliteNValues","Cells","NIndexAvg","NIndexMin","NIndexMax","NIndexHistogram","Histogram","nUptakeFactor","getNUptakeFactor","calculateNUptakeValue","NUptakeMin","NUptakeMax","nUptakeHistogram","nUptakeKey","nUptakeRoundedKey","NUptakeHistogram","getNUptakeFactorByFieldCropAndCropType","ComponentCanDeactivate","unloadNotification","canDeactivate","returnValue","ApDeactivateGuard","currentRoute","currentState","nextState","confirm","ApDeveloperGuard","canLoad","route","ApInvitationsGuard","checkInvitation","hasInvitation","QueryParams","ac","_router","menuStore","removeUrlParams","menuEntries","Url","Enabled","Childs","navigate","ApHelpRoutes","EditorModule","schema","addToEnd","attrs","default","parseDOM","tag","getAttrs","dom","toDOM","frameborder","allowfullscreen","ApEditorSchema","Schema","marks","continueWith","MaxFileSizeBytes","AllowedFileTypes","reader","readAsDataURL","editorView","base64Image","editorTransaction","dispatch","Plugin","handlePaste","clipboardData","readImageToBase64","insertImage","ApHelpIconComponent","ApDashboardIconComponent","ApBasedataIconComponent","ApUploadIconComponent","ApFungidetectIconComponent","ApDatabaseIconComponent","ApFileIconComponent","ApDocumentationIconComponent","ApContactIconComponent","ApLegalIconComponent","ApImprintIconComponent","ApAgreementIconComponent","ApExclamationCircleRegularIconComponent","ApExclamationCircleSolidIconComponent","ApCheckCircleRegularIconComponent","ApCheckCircleSolidIconComponent","ApTimesCircleRegularIconComponent","ApTimesCircleSolidIconComponent","ApBanSolidIconComponent","ApIconAdministrationComponent","ApIconBaseFertilizationComponent","ApIconBookingComponent","ApIconCollapsComponent","ApIconEvaluationComponent","ApIconFieldWorksComponent","ApIconFieldsComponent","ApIconImportComponent","ApIconNFertilizationComponent","ApIconPlantProtectionComponent","ApIconSeedingComponent","ApIconSettingsComponent","ApIconTasksComponent","ApIconFarmRecordsComponent","ApInfoIconRoundComponent","ApIconSelectorComponent","ApMapIconComponent","ApStatisticIconComponent","ApLayoutRoutes","ApMetricsModule","ApMetricService","ApLayoutModule","FilterByStringPipe","ApStatisticsModule","ApPageNotFoundComponent","main","existsHash","localStorage","getItem","decoded","decodeURIComponent","charCodeAt","jwtDecode","TOKEN_LIFETIME_SEC","setItem","requestToken","userInfo","password","VectorTile","format_","tileLoadFunction_","url_","getFormat","TileState","onLoad","setFeatures","onError","setLoader","loader","Tile","canvasPool","VectorRenderTile","urlTileCoord","getSourceTiles","context_","executorGroups","loadingSourceTiles","errorSourceTileKeys","hitDetectionImageData","replayState_","sourceTiles","sourceZ","hifi","wrappedTileCoord","createCanvasContext2D","hasContext","getReplayState","renderedRenderOrder","renderedRevision","renderedTileResolution","renderedTileRevision","renderedZ","renderedTileZ","maxResolution","attributionsCollapsible","defaultLoadFunction","urls","loadingTiles_","sourceTileCache","TileCache","tileCache","highWaterMark","overlaps_","overlaps","tileClass","tileGrids_","getCount","fromKey","peekFirstKey","tile","sourceTile","getTileCoordExtent","tileFeatures","candidate","getOverlaps","expireCache","usedTiles","getTileGridForProjection","sourceTileGrid","sourceExtent","covered","loadedZ","getMinZoom","previousSourceTiles","forEachTileCoord","sourceTileCoord","tileUrl","containsKey","handleTileChange","sourceTileKey","listenChange","errorTileCount","getTile","coordKey","getKeyZXY","getTileCoordForTileUrlFunction","tileExtent","newTile","interimTile","refreshInterimChain","getCode","createForProjection","getTileSize","getTilePixelRatio","getTilePixelSize","toSize","tmpSize","updateCacheSize","tileCount","UrlTile","loadFeaturesXhr","tmpTransform","createTransform","RenderFeature","ends","flatCoordinates_","flatInteriorPoints_","flatMidpoints_","ends_","properties_","extent_","createOrUpdateFromCoordinate","createOrUpdateFromFlatCoordinates","getFlatInteriorPoint","flatCenter","getInteriorPointOfArray","getFlatInteriorPoints","flatCenters","linearRingssCenter","getInteriorPointsOfMultiArray","getFlatMidpoint","interpolatePoint","getFlatMidpoints","midpoint","getOrientedFlatCoordinates","getSimplifiedGeometry","squaredTolerance","simplifyTransformed","opt_transform","getStyleFunction","destination","pixelExtent","projectedExtent","getWorldExtent","transform2D","getEnds","getEndss","MVT","Projection","Units","featureClass_","featureClass","layerName_","layers_","idProperty_","idProperty","readRawGeometry_","pbf","readVarint","cmd","coordsLen","currentEnd","cmdLen","readSVarint","createFeature_","rawFeature","numEnds","endss","prevEndIndex","linearRingIsClockwise","GeometryLayout","ctor","transformGeometryWithOptions","setProperties","FormatType","adaptOptions","setWorldExtent","PBF","pbfLayers","readFields","layersPBFReader","name_1","pbfLayer","setExtent","readRawFeature","readProjection","setLayers","FeatureFormat","layerPBFReader","readString","readFloat","readDouble","readVarint64","readBoolean","featurePBFReader","stylerInstance","getMapFactoryStyler","createMapFactorySource","styleFunction","packageId","link","Instance","mapFactoryStyler","reloadServerStyles","transformResponse","clearStyleCache","styleCache","reso","setLegendSubjects","cacheId","buildCacheId","getBasicStyle","getDynamicStyle","setText","styleData","customStyle","dataField","Trim","labelText","hasMinResolution","minResolution","hasMaxResolution","decimalPlaces","roundLabel","createLabel","textAlign","textBaseline","placement","rotateWithView","offsetX","Fill","Stroke","createStyle","CircleStyle","getFill","parsePropValue","parseNumberFromKey","matchKey","keybefore","keyafter","keyInfo","keyBeforeInfo","keyAfterInfo","NumberFactory","NeedLegend","TaskMgmtLegend","NPlanningLegend","NUptakeLegend","nLogInterpolationLegend","LogLegend","PpLogInterpolationLegend","PpApplicationLegend","valueList","getValueLegendIndex","propInfo","getCustomStyle","DEVICE_PIXEL_RATIO","numberOfStripes","thickness","strokeStyle","beginPath","lineWidth","endX","endY","moveTo","lineTo","setColor","createPattern","pValue","pMax","pMin","legendValues","legendClassIndex","ApMapRoutes","GetLayerValuesPipe","ApLegendColorItemComponent","GetUnitValuePipe","GetLegendSelectionValuesPipe","currentSelection","TreeViewModule","CheckBoxModule","ApMapTooltipComponent","ApLegendScrollerItemComponent","i6","changeDetectorRef","GeometryEditorToolGroup","startListening","onDrawNew","LockFeature","createMeasureTooltip","createHelpTooltip","startDrawNew","onDrawNewEnd","unsubscribeMouseOverFeature","removeTooltip","onSplit","enableSplit","onSplitEnd","ValidSketch$","ValidSplitLine$","SplitLineDrawn$","onModify","enableModifyNewVertex","onDrawNewHole","enableDrawHole","onDeleteHole","endDrawHole","enableDeleteHole","onCloseEditor","editFields","removeDrawInteraction","removeSnapInteraction","sketch","onDeleteSketchGeometry","onlyHa","formatted","getArea","Round","precision","valueStr","toStringXY","drawInteraction","StartDrawNewGeometry","startListeningPolygonEditLayerChanges","StopDrawNewGeometry","notListeningPolygonEditLayerChanges","AbortDrawing","restart","SetActiveTool","RemoveLastPointFromDrawing","removeLastPointFromDrawing","FinalizeDrawing","finalizeDrawing","RestartSplit","restartSplit","measureTooltipElement","listenPolygonEditChange","PolygonEditLayerChange$","reintegrateInsertedFeatures","fittedFeature","sketchGeometryChange","FormatArea","upper","tooltipCoord","FormatLength","measureTooltip","SetFeatureArea","listeningIsEditing","listenIsEditChange","isEditing","splitted","Fields","EditFields","editedFieldId","listeningActiveTool","helpTooltipElement","helpTooltip","startDrawNewEvent","endDrawNewEvent","onMouseOverFeature","lastPoint","integrateNewFeature","PrepareModifyField","SetEditFeature","drawHole","closeDrawHole","previousFeatureState","startModifyVertex","currentFeatureState","equal","endModifyVertex","enableModifyVertex","reanable","afterAbortDraw","vcRef","onSelectionKeyChange","currentSelectionKey","_selectionListValueChanged","_subjectValueChanged","scrollerHeight$","clientHeight","toggle","showPopup","selectValue","prev","ApLegendScrollerService","StartsWith","TrimStart","moduleChange","moduleUrl","MetricSendModuleUrl","OnModuleChanged$","ApGetCropTypeNamePipe","cropTypeId","ApNutrientStatisticService","getAverageNutrientFromStatistic","bandIdX","getAverageNutrientFromStatistics","mean","areaSum","getMinRb","RbOneStatisticP","RbOneStatisticK","RbOneStatisticMg","RbOneStatisticCao","RbTwoStatisticP","RbTwoStatisticK","RbTwoStatisticMg","RbTwoStatisticCao","getMaxRb","RbOneAvgP","RbOneAvgK","RbOneAvgMg","RbOneAvgCao","RbTwoAvgP","RbTwoAvgK","RbTwoAvgMg","RbTwoAvgCao","BasicFertilisationSummariesActions","BASIC_FERTILISATION_SUMMARIES_SAVE_SUCCESS","BASIC_FERTILISATION_SUMMARIES_SAVE_FAIL","BaseFertilizationCommonService","tooltipContentService","cropGroupStore","_triggerGridUpdate","selectedSummaryId","_previouslySelectedSummaryId","mainComponentSelectionAvailability","_mainComponentSelectionAvailability","availableToUpdate","setIsAllowGridItemsUpdate","allow","summaryId","redirectSummaryToShowView","isBooked","returnUrl","_redirectToTaskManagement","redirectSummaryToExportView","replanSummary","copiedSummary","planBooksToDelete","deleteBasicFertilisationPlanBooks","BasicFertilisationPlanBooksSaveSuccess","BasicFertilisationPlanBooksSaveFail","createBasicFertilisation","BasicFertilisationSummariesSaveSuccess","BasicFertilisationSummariesSaveFail","updateBasicFertilisation","copiedPlanBooks","bookPlanBooks","unbookPlanBooks","deleteSummary","_deleteDialog","canSummaryDelete","unbookSummaryPlanBook","planBookId","copiedPlanBook","deleteSummaryPlanBook","revertLegends","addLegend","enableLayers","toDisable","toEnable","disableLegends","legends","onSelectionChange","fieldsIds","_updateNutrientPlanningLayer","getPlanBooksFieldsCount","filteredPlanBooks","getFieldIds","getApplicationDatesData","planBooksApplicationDates","_getPlanBookApplicationDates","uniqueApplicationDates","IsMoreThanOneUniqDate","NewestDate","getFieldCropsTooltip","tooltipData","generateStatChartConfig","chartConfig","GenericChartConfig","pannable","zoomable","xAxisConfig","axisCrossingValue","categories","noteDelegate","yValue","additionalData","productColors","planBooksGroupedByMonth","pB1","pB2","GroupBy","pB","planBooksGroupedByProduct","availableColors","getCropGroups","Colordefault","monthYearExpr","planBooksForMonth","seriesPlanBooksForMonthAndProduct","productName","productUnit","seriesConfig","seriesConfigs","GenericSeriesConfig","axisId","sumProductByMonth","getCalculateSumFertilizerBySinglePlanBook","seriesData","GenericSeriesData","xValue","yAxisConfigs","yAxisConfig","GenericYAxisConfig","labelDelegate","MAX_SAFE_INTEGER","getLeadNutrient","farmDate","legendItems","selectedLegendElement","_getElementShort","isConstant","elementShort","deleteCallback","DeleteDialog","modalDialogSubscription","isShowView","navigateObject","bookings","NutrientManagementService","getCalculateSumFertilizer","applSum","planBookAppl","planArea","getMin","getMax","AgriportConstantsService","RasterNoValue","AgriportConstants","constants","hasRole","role","FileService","fileName","uint8Array","toByteArray","Blob","NuptakeCalculationService","nIndexValue","slopeConst","intercConst","powerConst","Slope","Interc","UploadFileService","initialProgress","incrementValue","intervalValue","progressInterval","ApplicationSettingsService","applicationSettingsStore","isApplicationSettingValidForGrowthStage","applicationSettings","EcMin","EcMax","getApplicationSettings","isValidOperationMode","applicationSettingsByOperationMode","Applications","EppoGroup","EppoCodes","getApplicationSettingsForEppoAndEcRange","ecValues","BaseFertilizationService","leadNutrient","M","leadNutrientStatistic","_getStatisticValue","leadFertilizerContent","getFertilizerContent","targetElement","stat","tempMin","unshift","CampaignYearService","isCampaignYearIntersects","zoneName","campaignYearEnd","isoFrom","isoTo","DateRange","yearRange","Overlaps","endYear","_createCampaignYearRange","utcDate","yearStart","yearEnd","_getCampaignYearStart","sampleDate","soilSampleCampaignYear","_getCampaignYearEnd","FertilizationManagementService","fertilizerId","calculateProductAmountN","rate","FertilizerService","contentElement","ignoreOrganicCalculation","LicenseService","licenseStore","getValidSatelliteLicense","_getLicense","getValidBaseFertilizationLicense","getValidNFertilizationLicense","getValidPlantProtectionLicense","isLatestLicensedYear","selectedYearRange","featureModulKey","Licenses","FeatureModul","todayDate","TrialExpireAt","LogfileService","fertilizationStore","getPlanning","DataSet","headerValues","HeaderValuesString","AgentContent","contentNDelta","agent","pb","LogFileOperationMode","getContentN","getNContentFromDataset","dataset","agentContent","HeaderValues","ApStringService","regexPattern","placeholders","valueMap","NFertilizationPlantProtectionService","stringService","applicationSettingsService","getStatusForItemOnOverviewStep","getApplicationModeFromOperationMode","getOperationModeForPlan","isOperationModeAnyOfMaps","Ec","isOperationModeAnyOfMapsOrConstant","getApplicationModeForPlan","onApplicationSettingsTextWarning","scansData","validSelectedEcValues","translatedText","getValidBestScansByApplicationSettings","getGrowStages","ec","ScanData","CropData","getSlope","controlFactor","isRape","slope","calculateAreaWeightedAverage","filteredItems","totalArea","averageWithFieldsArea","sensorAvgSum","getControlFactorDescription","isPlantProtection","defaultSlopeKey","getDefaultSlopeKey","parameters","slopeKey","slopeType","NFertilizationService","cropApplicationStore","isRapeCrop","selectedCropIds","cropId","getContentNRelatedPlanBooks","nFertPlanBooks","logfiles","baseFertPlanBooks","nFertApplications","_getNFertilizationApplicationValues","baseFertApplications","_getBaseFertNRelatedContentFromPlanBooks","calculateAlreadyAppliedFromContentNPlanBooks","contentNPlanBooks","getAlreadyApplied","NFertilization","average","calculateProductAmountFromPlanBooks","filteredValues","calculateRemainingValue","alreadyApplied","needValue","getNUpTakes","rasterStatistic","_getStatisticValueFromRasterStatistic","getNApplications","getApplicationRateName","shortVersion","GetApplication","getApplicationRateNameByApplication","getApplicationNScanRateName","currentFertilizer","isDateInSelectedCampaignYear","contentNStatistic","fertilization","PlanBookId","NUptake","SourceType","ContentNRelatedPlanBookSourceType","PlanBookApplicationDate","bookedLogFiles","logFile","NPlanBook","CropType","contentNPlanBook","logFiles","contentNLogFile","nUpTake","RasterStatistics","nApplications","ECValue","SampleMethodService","unitsStore","translateMethod","sampleMethod","SampleMethods","Method","SoilSampleDateService","getFieldsWithValidSoilSampleDate","StatisticService","_generateFieldsAreaMessage","totalFieldsCount","_getAreaSum","selectedFieldsCount","percentBetweenFields","selectedAreaSum","selectedArea","percents","globalFields","globalHaUnit","digitsAfterDecimalPoint","roundedTotal","UnitService","labelKey","useDefaultUnit","fertilizerUnitName","_getUnitTranslation","translatedLableKey","defaultUnit","unitValue","RemoveUrlParamsService","UrlEncoderService","queryParams","paramStr","_encode","_decode","ApStatisticsRoutes","NutrientStatsFieldsPipe","series","category","fieldNames","JoinPropertyValuePipePipe","NutrientInfosViewComponent","FieldSoilPlanningYearToSimpleValueSetPipe","StatisticChartAreaService","NutrientsStatsComponent","GenericXAxisConfig","FieldCropRotationPriority","ctx_r30","statisticChartAreaService","strokeColor","dashType","chartAreaHeight","chartAreaWidth","Unique","readData","filteredGroups","selectedGroup","dc","chartP","processClassData","chartK","chartMg","chartPh","processSampleYearData","processSimpleValueSetData","soilGroupCategory","soilGroupCategories","soilGroupMax","infos","axes","getChartCopy","fieldSoilPlanningYear","fieldYears","Copy","filteredSets","allValues","valueType","noteField","visual","tooltipDelegate","InfoViewStylePipe","rowNum","maxRows","rowStyle","headStyle","dataStyle","_chartAreaHeight","_chartAreaWidth","updateChartWidth","updateChartHeight","ApJobsActions","JOBS_FARM_LOAD","JOBS_FARM_LOAD_SUCCESS","JOBS_FARM_LOAD_ALL","JOBS_FARM_LOAD_ALL_SUCCESS","BU_JOB_NAME","WSV_JOB_NAME","CE_JOB_NAME","IR_JOB_NAME","RB_JOB_NAME","FIELD_RASTER_JOB_NAME","JOB_DEBOUNCE_MS","BU_WSV_JOB_NAMES","N_PLANNING_JOB_NAMES","BU_WSV_CE_IR_RUNNING_JOB_NAMES","RB_REFRESH_JOBS","ALL_RUNNING_JOBS","farmJobs","job","BU_RUNNING_JOBS","BU_WSV_RUNNING_JOBS","CE_RUNNING_JOBS","BU_WSV_CE_IR_RUNNING_JOBS","RB_RUNNING_JOBS","FIELD_RASTER_RUNNING_JOBS","JobsStore","soilSampleFieldStore","allFarmJobs","farmJobsLoaded","farmJobsLoading","FarmJobs$","jobs","connectJobWithFields","connectJobWithSoilSampleFields","soilSampleField","soilSampleFields","soilSampleFieldId","getSoilSampleFieldIds","JobsLoadSuccess","JobsFarmLoadSuccess","JobsAllFarmLoadSuccess","subscribeJobChanges","AllJobs$","AllJobs","distinct","FarmJobs","loadFarmJobs","lastDays","JobsFarmLoad","loadAllFarmJobs","JobsAllFarmLoad","JobsChange","ch","existJob","JobId","existsFarmJob","Operation","Job","buInput","SampleFieldIds","sampleField","SoilSampleField","_jobs","_jobResult","groupedJobs","jobState","aCreatedAt","bCreatedAt","Equals","IsBefore","FieldGeomIds","foundField","KrigingStore","interpolatedFieldId","SoilSampleFieldStateLoad","SoilSampleFieldInterpolateSuccess","CreateAllRastersSuccess","OnInterpolationFinish","Pending$","loadSampleFieldState","startInterpolationForSampleField","sampleFieldIds","sampleFieldId","SoilSampleFieldInterpolate","createAllRastersFor","CreateAllRasters","ApplicationSettingsStore","ApplicationSettingsLoadSuccess","ApplicationSettingsLoadFail","SetLoadFailState","LoadApplications","Applications$","ApplicationSettingsLoad","CropGroupsActions","CROP_GROUPS_SAVE_SUCCESS","CropGroupStore","CropGroupsLoadSuccess","CropGroupsSaveSuccess","SetSaveSuccessState","noCropGroup","cg","FarmColor","getGroupColorByCropGroupName","loadCropGroups","CropGroupsLoad","saveFarmCropGroups","cropGroups","SetSaveState","CropGroupsSave","deleteFarmCropGroups","CropGroupsDelete","UpdateSource","model","backendItem","SetColor","FarmCropGroup","Colorcode","SetColorAndGroup","groupId","Cropgroupid","CropTypeStore","cropTypesNames","CroptypesLoadSuccess","onLoadSuccess","CropTypes$","AvailableCropTypes","loadCroptypes","CroptypesLoad","saveCroptypes","yieldChanged","CroptypesSave","mapObjectValues","replaceGroupColor","Groupname","translateCropType","HibernateModelNames","CropkeyDetailId","GetEppoCode","translatedCropTypes","cropTypes","translatedItem","getCropTypeMapId","cropTypeDetailsId","resultCrop","SensorTypeId","FertilizerInorganicStore","FertilizerInorganicLoadSuccess","loadFertilizerInorganic","FertilizerInorganicLoad","fertilizerInorganic","FertilizerInorganicCreate","_mapFertilizer","FertilizerInorganicUpdate","updateSelectableFertilizer","FertilizerInorganicSelectableUpdate","FertilizerOrganicStore","FertilizerOrganicLoadSuccess","loadFertilizerOrganic","FertilizerOrganicLoad","fertilizerOrganic","FertilizerOrganicCreate","FertilizerOrganicUpdate","FertilizerOrganicSelectableUpdate","FertilizerActions","FERTILIZER_USE_LOAD_SUCCESS","FertilizerStore","FertilizerUseLoadSuccess","AfterDatabaseUpdate","ReloadSource","FertilizerUseLoad","Fertilizer","Fertilizer$","getGroup","LandUseStore","LanduseLoadSuccess","loadLandUse","LanduseLoad","LandUse$","LandUse","IPlantProtectionLoadLevel","PlantProtectionProductStore","loadState","PlantProtectionProductsLoadSuccess","PlantProtectionProductsLoadFail","PlantProtectionProductsSelectableUpdateSuccess","loadPlantProtectionProducts","PlantProtectionProductsSelectableUpdateFail","SetSaveFailState","PlantProtectionProductsCreateNewSuccess","PlantProtectionProductsCreateNewFail","pendingDataLock","pendingData","Products$","Products","selectedOnly","forceReload","lastLoadState","newLoadState","loadLevel","SelectedProducts","AllProducts","PlantProtectionProductsLoad","createNewProduct","plantProtectionProduct","PlantProtectionProductsCreateNew","updateSelectablePlantProtectionProduct","plantProtectionProducts","PlantProtectionProductsSelectableUpdate","PpProductId","oldItem","getProducts","SettingsActions","SETTINGS_UPDATE_SUCCESS","SETTINGS_UPDATE_FAIL","SettingsStore","timeZones","SettingsLoad","SettingsLoadSuccess","TimeZoneLoadSuccess","SettingsUpdateSuccess","SettingsUpdateFail","UseMethodEuf","SelectedLanguageKey","mapFarmSettings","loadSettings","loadTimeZones","TimeZoneLoad","SettingsUpdate","SubFarmStore","SubFarmsLoadSuccess","loadSubFarms","SubFarmsLoad","subFarm","SubFarmUpdate","SubFarmCreate","deleteSubFarm","SubFarmDelete","TerminalsActions","TERMINALS_LOAD","TERMINALS_LOAD_SUCCESS","TerminalsStore","TerminalsLoadSuccess","loadTerminals","TerminalsLoad","Terminals","UserContactsActions","USER_CONTACTS_LOAD","USER_CONTACTS_LOAD_SUCCESS","USER_CONTACTS_UPDATE","USER_CONTACTS_CREATE","USER_CONTACTS_DELETE","USER_CONTACTS_SAVE_SUCCESS","USER_CONTACTS_SAVE_FAIL","UserContactsStore","UserContactsLoadSuccess","UserContactsSaveSuccess","UserContactsSaveFail","loadUserContacts","UserContactsLoad","userContact","UserContactsCreate","UserContactsUpdate","deleteUserContact","UserContactsDelete","UserContacts","UserStore","isUniqueEmail","isUniqueUsername","isNewUserCreated","UsersLoadSuccess","UserCheckUniqueEmailResult","UserCheckUniqueUsernameResult","UserCreateSuccess","UserUpdateFullNameSuccess","UserUpdateFullNameFail","loadUsers","UsersLoad","createUser","UserCreate","checkUniqueEmail","email","UserCheckUniqueEmail","checkUniqueUsername","username","UserCheckUniqueUsername","updateUserFullName","userId","forename","surname","UserUpdateFullName","resetRedirectToNews","UserResetRedirectToNews","VarietyStore","VarietyLoadSuccess","Loading","Loaded$","Loaded","loadVarieties","VarietyLoad","updateSelectableVariety","variety","VarietySelectableUpdate","Varietyid","WorktypeUnitStore","WorktypeUnitLoadSuccess","loadWorktypeUnits","WorktypeUnitLoad","getWorktypeUnits","getUnitsByWorktype","worktypeId","wu","WorktypeId","WorkTypeCategory","WorkTypesStore","WorktypeLoadSuccess","loadWorktypes","WorktypeLoad","AgriportConstantsStore","AgriportConstantsLoadSuccess","LoadAgriportConstants","AgriportConstantsLoad","ApplModesStore","ApplModesLoadSuccess","ApplicationModes","loadApplModes","ApplModesLoad","CountryStore","CountryLoadSuccess","CountryLoad","EffectiveRangesStore","EffectiveRangesLoadSuccess","loadEffectiveRanges","EffectiveRangesLoad","getEffectiveRangeByKey","getEffectiveRangeById","ElementsStore","ElementsLoadSuccess","loadElements","ElementsLoad","ExportFormatsStore","ExportFormatsLoadSuccess","loadExportFormats","ExportFormatsLoad","ExportTargetsStore","ExportTargetsLoadSuccess","loadExportTargets","ExportTargetsLoad","FactorsStore","FactorsLoadSuccess","loadFactors","FactorsLoad","getFactors","unitSource","unitTarget","Target","sendMissingFactor","FactorsMissing","NotificationActions","NOTIFICATION_DELETE_ALL","NotificationStore","NotificationLoadSuccess","NotificationAdd","getNotifications","loadNotification","NotificationLoad","deleteAllNotifications","NotificationDeleteAll","deleteNotification","notification","NotificationDelete","updateNotification","NotificationUpdate","insertNotification","NotificationInsert","ChangeWasRead","WasRead","ChangeWasReadWithId","NUptakeFactorsStore","NUptakeFactorsLoadSuccess","NUptakeFactorsLoadFailed","nUptakeFactors$","nUptakeFactors","loadNUptakeFactors","NUptakeFactorsLoad","nUptakeFactorsByCropTypeId","EppoCode","OperationModesStore","OperationModesLoadSuccess","loadOperationModes","OperationModesLoad","getIOperationModeByKey","dbKey","om","UnitsStore","UnitsLoadSuccess","loadUnits","UnitsLoad","NewsStore","NewsLoadSuccess","NewsAdd","loadNews","region","NewsLoad","ModalDialogPresets","Delete","Confirm","confirmKey","ExtendLicenseDialog","ModalDialogStore","busy","formChanges","setShow","sendResult","setFormChanges","NotifyStore","displayMessages","NotifySaveMessage","NotifyRecieveMessage","getDisplayMessages","maxNotifications","ActionStore","fieldActions","fleetActions","FieldActionLoadSuccess","FleetActionLoadSuccess","FleetActionsUpdateSuccess","LocationsLoadSuccess","locationsEnvelop","Locations","LocationsLoading$","getLocations","loadFieldActions","includeApproach","workTypeId","FieldActionsLoad","loadFleetActions","FleetActionsLoad","LocationsLoad","locationIds","dropApplication","actionId","ActionsApplicationDrop","addApplication","ActionsApplicationAdd","DriverMachineStore","DriverMachineLoadSuccess","loadDriverMachine","DriverMachineLoad","updateDriverMachine","driverMachine","DriversMachinesUpdate","createDriverMachine","DriversMachinesCreate","deleteDriverMachine","DriversMachinesDelete","DriverStore","DriversLoadSuccess","onDriverLoadSuccess","DriversSaveSuccess","DriversSaveFail","Drivers$","loadDrivers","DriversLoad","DriversUpdate","DriversCreate","DriversDelete","FleetActionAttachmentStore","AttachmentDriverAssignmentGetSuccess","AttachmentInstrumentAssignmentGetSuccess","FleetActionAttachmentLoadSuccess","FleetActionsAttachmentLoadByModifiedSuccess","FleetActionAttachmentSaveSuccess","getDriverAssignment","AttachmentDriverAssignmentGet","getInstrumentAssignments","AttachmentInstrumentAssignmentGet","loadFleetActionAttachments","FleetActionAttachmentLoad","modified","FleetActionsAttachmentLoadByModified","FleetActionAttachmentSave","FleetActionAttachmentCreate","GeoJsonStore","generating","generated","GeoJsonGenerateSuccess","GeoJsonGenerateBySlice","GeoJsonGenerateByMachine","GeoJsonGenerateByField","generateGeoJson","datasetId","GeoJsonGenerateMultipoint","InstrumentStore","InstrumentsLoadSuccess","onInstrumentLoadFinish","InstrumentsSaveSuccess","InstrumentsSaveFail","Instruments$","loadInstruments","InstrumentsLoad","InstrumentsUpdate","InstrumentsCreate","InstrumentsDelete","LoggerStore","LoggerLoadSuccess","LoggerSaveSuccess","LoggerSaveFail","loadLogger","LoggerLoad","LoggerUpdate","LoggerCreate","deleteLogger","LoggerDelete","MachineBreaksStore","MachineBreaksLoadSuccess","onMachineBreaksChanged","MachineBreaks$","MachineBreaks","getMachineBraksForKind","getMachineBraksForKindAndProperty","loadMachineBreaks","MachineBreaksLoad","MachineLoggerStore","MachinesLoggerLoadSuccess","getMachineLogger","loadMachinesLogger","MachinesLoggerLoad","MachinesLoggerUpdate","MachinesLoggerCreate","deleteMachinesLogger","MachinesLoggerDelete","MachineStore","MachineTypesLoadSuccess","MachinesLoadSuccess","MachinesGetInUseDaysSuccess","MachinesSaveSuccess","MachinesSaveFail","Machines$","loadMachines","MachinesLoad","MachinesGetInUseDays","MachinesUpdate","MachinesCreate","deleteMachine","MachinesDelete","loadMachineTypes","MachineTypesLoad","SliceStore","SliceLoadSuccess","SliceCombinedLoadByMachineAndDateSuccess","loadAllSlices","SliceLoadAll","SliceCombinedLoadByMachineAndDate","loadSlices","SliceLoad","workingWidth","SliceCalcBruttoNettoArea","SoilSampleFieldStore","selectedSampleFields","exportedShapeFile","exportedExcelFile","SoilSampleFieldLoadSuccess","SoilSampleFieldDistributionLoadSuccess","SoilSampleLoadSuccess","SampleTracksShapeExportSuccess","SamplePointsExcelExportSuccess","download","SoilSampleFields$","SelectedSoilSampleFields$","resetDownloads","loadSoilSampleFields","SoilSampleFieldLoad","loadMultipleSampleFieldDistributions","SoilSampleFieldDistributionLoad","loadSoilSamples","loadMultipleSoilSamples","SoilSampleLoad","changeSelectedSampleField","sampleTracksShapeExport","dateExpr","customerExpr","SampleTracksShapeExport","samplePointsExcelExport","filename","SamplePointsExcelExport","sampleTracksInfo","SampleTracksInfo","ApCropRotationActions","LOAD_PAST","LOAD_CROP_ROTATION_ATTRIBUTES","LOAD_CROP_ROTATION_ATTRIBUTES_SUCCESS","LOAD_CROP_ROTATION_ATTRIBUTES_TRIGGER","CropRotationStore","loginStoreFinish","FieldStore","LoadCropRotationAttributes","fc","ifc","ApCropRotationProcessCellSuccess","cell","Yields","YearIndex","fillCropRotationLine","ApCropRotationProcessCellFail","emptyValue","ApCropRotationLoadSuccess","ApCropRotationAttributesTrigger","ApCropPastRotationLoadSuccess","CropRotation","ApCropRotationAttributesLoadSuccess","GetAttributes$","HistoryLoading$","GetHistory","FieldCropRotations$","FieldCropRotationsLoading$","FieldCropSaving$","MarkedForSaving","ApCropRotationLoad","ApCropRotationPastLoad","ProcessCells","ApCropRotationProcessCell","MarkForSaving","UnmarkFromSaving","ApCropRotationAttributesLoad","FarmStore","FarmLoad","FarmLoadSuccess","FarmLoadFail","FarmUpdateRegistryNumberSuccess","FarmUpdateRegistryNumberFail","FarmUpdateCountrySuccess","FarmUpdateCountryFail","loadFarm","FarmUpdateRegistryNumber","FarmUpdateCountry","FarmUsersStore","FarmUsersLoadSuccess","FarmUsersUpdateSuccess","FarmUsersDeleteSuccess","deletedFarmUserId","loadFarmUsers","FarmUsersLoad","FarmUsersUpdate","FarmUsersDelete","FieldArchiveActions","FIELD_ARCHIVE_LOAD","FIELD_ARCHIVE_LOAD_SUCCESS","FieldArchiveStore","FieldArchiveLoadSuccess","campaignYearStartIso","FieldArchiveLoad","FieldActions","FIELD_MERGE_SUCCESS","cropGroupsStore","ndiStore","selectedFields","selectedFieldsRange","hashMap","growths","campaignYearCrops","fieldCropsSaved","FieldStore$","onSelectedCampaignYearChanged","onCampaignYearChange","FieldLoadSuccess","loadFieldCropsForYear","loadNStatistics","FieldGeomIdList","Throttle","Leading","Timeout","onFieldsLoadFinish","FieldCropYearLoadSuccess","FieldLoadFromDateRangeSuccess","FieldDelete","idsToRemove","RemoveFromFieldLayers","FieldCheckPlanBooksSuccess","FieldUpdate","fieldToAdd","AddToFieldLayers","FieldSaveSuccess","FieldSaveFail","FieldMergeFailed","FieldMergeSuccess","FieldSplitFailed","FieldSplitSuccess","FieldCropsSaveSuccess","FieldCropsSaveFailed","onCropTypesChanged","AllCropsInFields","fg","YearFieldCrops$","YearFieldCrops","SelectedFields$","SelectedFields","EditFields$","cy","cyStart","ToZone","cyEnd","fc2","cropStart","IsAfter","Exists","FieldLoad","epsgCode","srId","ignoreIds","fieldsToIgnoreInSnap","FieldIntegrate","FieldIntegrateSuccess","loadFieldsFromRange","FieldLoadFromDateRange","fieldCrops","FieldCropsSave","fieldGeomIds","FieldCropDelete","FieldGeomDelete","fieldParameter","tmpF","fcIdx","tmpFc","cyInterval","fcInterval","edited","Variety","ScenarioId","Intercrop","FieldSave","ParameterValuesSaveRequest","FieldCreate","deleteFields","takeCropRotationFrom","FieldMerge","oldFieldId","newFields","transferCrops","FieldSplit","FieldCheckPlanBooks","nullValue","getFieldGeom","FieldCropYearLoad","_updateFieldCropsData","copiedFields","fieldCropsForField","filedCrop","fieldCropToReplace","LicenseStore","LicenseFarmLoad","LicenseFarmLoadSuccess","LicenseFarmLoadError","LicenseSaveSuccess","LicenseSaveFailed","licenseData$","loadLicensesForFarm","updateLicense","license","isExtendLicense","removeTrialCount","LicenseUpdate","adjustLicenseRequest","featureModuleKey","adjustAction","LicenseAdjustRequest","setLicenseEmpty","UpsertData","licenses","_updateItems","updatedLicense","itemToReplace","TrialActivationsCount","MonitoringDetailStore","MonitoringDetailLoadSuccess","MonitoringDetailLoadFail","loadMonitoringDetails","MonitoringDetailLoad","MonitoringDetailCreate","MonitoringDetailEdit","deleteMonitoringDetail","monitoringDetailId","MonitoringDetailDelete","MonitoringDetailAttachmentUpload","MonitoringDetailAttachmentUploadSuccess","MonitoringDetailAttachmentUploadFail","attachmentId","MonitoringDetailAttachmentDownload","MonitoringDetailAttachmentDownloadSuccess","MonitoringDetailAttachmentDownloadFail","MonitoringFieldStore","MonitoringFieldLoadSuccess","MonitoringFieldLoadFail","loadMonitoringFields","MonitoringFieldLoad","MonitoringFieldCreate","deleteMonitoringField","monitoringFieldId","MonitoringFieldDelete","MonitoringTypeStore","MonitoringTypeLoadSuccess","MonitoringTypeLoadFail","loadMonitoringTypes","MonitoringTypeLoad","ImportActions","DOWNLOAD_CSV","DOWNLOAD_CSV_SUCCESS","DOWNLOAD_CSV_ZIP","DOWNLOAD_CSV_ZIP_SUCCESS","DOWNLOAD_LOG","DOWNLOAD_LOG_SUCCESS","ImportStore","types","loadingMapPreview","csvTypes","updatedDataSet","loadingImportDataSets","datasetsCampaignYear","ImportDataSetTypesLoadSuccess","ImportDataSetColumnsLoadSuccess","ImportDataSetsLoadSuccess","ImportCsvTypesLoadSuccess","ImportUpdate","DownloadCsvSuccess","DownloadCsvZipSuccess","DownloadLogSuccess","loadImportDataSetTypes","ImportDataSetTypesLoad","loadImportCsvTypes","ImportCsvTypesLoad","loadImportDataSetColumns","ImportDataSetColumnsLoad","loadImportDataSets","currentCampaignYear","ImportDataSetsLoad","deleteImportDataSet","ImportDataSetDelete","startLoadMapPreview","finishLoadMapPreview","downloadCsv","mongoFileName","DownloadCsvZip","DownloadCsv","downloadLog","DownloadLog","defaultState","everyChange","reactiveStore","ReactiveStore","selector","mutation","watcher","obs","itemExistsInList","RemoveData","Reload","GetProperty","FormOpen$","FormState$","FormState","switchComponent","tryCloseForm","formCloseOnRequest","FormStore","MapViewStore","currentMenu","getMapViewMode$","goIntoMapMenuSync","increaseMapViewMode","decreaseMapViewMode","MenuStore","menuAnimationState","smallMenuAnimationState","SidebarAddDatasourceSuccess","getSidebarExpand","getViewMode","fillMenuData","SidebarAddDatasource","openSidebar","smallMenuFlyOut","menuFlyIn","closeSidebar","menuFlyOut","halfSidebar","smallMenuFlyIn","removeItem","varietyStore","nFertilizationStore","_calculateCurrentCampaignYear","farmWasChanged","CampaignYearLoadSuccess","CampaignYearSelect","ClientCache","getFieldSampleDates","getFertilizationNeedValue","states","onLoadingStoresComplete","IsHighestCampaignYear","FarmWasChanges$","FarmWasChanged","isSelectedCampaignYear","dateToCompare","loadCampaignYears","CampaignYearLoad","selectCampaignYear","closed","onSelectCampaignYear","InformCampaignYearChange","tryNavigate","navigateRequest","InvitationsActions","INVITATIONS_CHECK_BY_CODE","INVITATIONS_CHECK_BY_RESULT","INVITATIONS_LOAD_BY_ID","INVITATIONS_LOAD_BY_ID_RESULT","INVITATIONS_RESEND","INVITATIONS_RESEND_SUCCESS","INVITATIONS_RESEND_FAIL","InvitationStore","isSuccessful","emailSend","createNewUser","isInvitationResend","InvitationsLoadSuccess","InvitationsConfirmedCreateNewUser","InvitationsConfirmedSuccess","InvitationsResendSuccess","InvitationsResendFail","loadInvitations","InvitationsLoad","InvitationsCheckByCode","InvitationsCheckByCodeResult","fetchInvitationById","InvitationsLoadById","InvitationsLoadByIdResult","invitation","InvitationsCreate","InvitationsUpdate","confirmed","activationCode","InvitationsConfirmed","confirmedWithUser","InvitationsConfirmedWithUser","invitations","InvitationsDelete","InvitationsResend","setter","cloneDate","ApCookieService","cookieService","getCookie","LoginActions","setCookie","CalcAgriportSessionDurationHours","hash","UserLogin","logout","UserLogout","deleteCookie","durationHours","onSetCookie","needsSecureCookie","Config","expireDate","onRemoveCookie","onGetCookie","NUptakeStore","ndiService","nIndexData","allFields","updateNUptakeMinMaxLegend","updateNUptakeLegend","Hn","nUptakeMinMax","onNUptakeChanged","totalMin","POSITIVE_INFINITY","totalMax","ndiStat","LoginStore","permissionsStore","cropTypesStore","workTypeStore","userStore","accessPermissionsStore","userGroupsUserStore","notificationStore","krigingStore","applModesStore","elementsStore","exportFormatsStore","exportTargetsStore","factorsStoreStore","machineBreakStore","jobStore","landUseStore","nuptakeFactorsStore","nuptakeStore","effectiveRangesStore","workTypeUnitStore","emailAddress","isEmailAddressSend","isSetPassword","loginTimestamp","loadingProgress","maxProgress","showProgressBar","activeUsers","dataLoading","longOperationInProgress","clientErrorOccurred","userPermissions","EventHandler","_stores","stores","yn","CurrentUrl","activeElement","blur","listenDatabaseUpdate","listenPermissions","listenCampaignYearSelect","listenFarmChange","listenFarmDataChange","listenSelectedFarmChange","listenBaseDataLoaded","listenLoginFail","listenLoginSuccess","listenLogout","listenSetCookie","listenLoginDelay","listenForCurrentUserFullNameUpdate","listenForResetRedirectToNews","User$","onNLogInterpolationLegendChanged","onPpLogInterpolationLegendChanged","FieldDistributionLegendNutrientChange","soilGroupLayerSourceInit","initialNdiLayerSource","initialNUptakeLayerSource","_currentNutrient","nutrientDistributionLayerSourceInit","soilSampleDistributionLayerSourceInit","NutrientPlaningLegendChange","nutrientPlanningUrl","NutrientPlanningUrl","provider","ToLower","mapName","ChangeMapFactoryLayerUrl","initialNeedLayerSourceInit","needLeftLayerSourceInit","distributionUrl","Farms$","IsLoggedIn$","Message$","LoginLoading$","LoadingProgress$","MaxProgress$","ShowProgressBar$","Delay$","EmailAddress$","IsEmailAddressSend$","setClientErrorOccurred","changeSelectedFarm","InformFarmChange","loginUser","updateProgressBarVisibility","ApBase64Util","LoginTime","SessionDuration","pageLeave","UserLeavePage","logoutUser","navigateToLogin","updateLoadingProgress","loginWithCookie","switchDebugMode","sampleMap","soilSampleUrl","soilSampleDistributionUrl","layerProvider","layerMap","ji","soilGroupUrl","isNeedLeftPlanned","NeedLeftLayerSourceInit","rbUrl","ChangeMapFactoryLayerUrlNdi","ndiLayerUrl","ChangeMapFactoryLayerUrlNUptake","nUptakeUrl","InformFarmChangeSuccess","Reset","matchFarm","loadFarmIndependentBaseData","loadSampleMethods","loadSampleRegions","translationsLoading","loadAccessPermissions","loadUserGroupsUser","loadUserGroups","loadUserSettings","loadParameterDefinition","loadBasicFertilisationSummaries","baseDataLoadedProgress$","baseDataLoadedPercentage","baseDataLoaded$","BaseDataLoaded","Invoke","lastVisitCampaignYearId","UserLoginFail","UserLoginSuccess","MapFactoryAuthenticationLoad","MapFactoryAuthenticationSuccess","toJSON","saveSelectedLanguageToLocalStorage","extras","redirectToNews","BeforeNavigateToLogin","LogoutFromSystem","loginState","UserResetRedirectToNewsSuccess","afterSetCookie","UserLoginDelay","BurgerMenuStore","ApDynamicComponentModel","Insert","removeControl","ColorLegendStore","colorLegends","setColorLegend","_getColors","MapLayerControlStore","mapData","maps","Maps$","Maps","MapData$","MapData","Data$","_layerControlLayerToLayerItem","sourceOrder","destinationOrder","onOrderChanged","order","translationKeys","MapLayerTooltipStore","getNutrientPlanningsLayerTooltip","rawValue","selectedLegendValue","getSoilSamplesLayerTooltip","soilSampleFeature","sampledate","sampleDateFormatted","method_p","kValue","method_k","mgValue","method_mg","gpsnumber","class_p","class_k","class_mg","class_ph","getSoilGroupMapLayerTooltip","soilGroupFeature","getNeedLayerTooltip","mapLegendTypeElement","getSensorPointsLayerTooltip","getNRasterLayerTooltip","getNdiLayerTooltip","tooltipLines","nIndex","ndi","getNApplicationMapLayerTooltip","getNUptakeLayerTooltip","nuptake","tooltipValue","getPpRasterLayerTooltip","getPpApplicationMapLayerTooltip","uri","keyParams","qs","WMTS","requestEncoding","expandUrl","version_","dimensions_","layer_","matrixSet_","matrixSet","style_","requestEncoding_","setKey","getKeyForDimensions_","createFromWMTSTemplate","setUrls","setTileUrlFunction","getMatrixSet","getRequestEncoding","getVersion","updateDimensions","tilematrixset","Service","Request","Format","appendParams","localContext_1","TileMatrix","getMatrixId","TileCol","TileRow","WMTSTileGrid","origins","resolutions","tileSizes","sizes","matrixIds_","matrixIds","getMatrixIds","TileGrid","projectionExtent","getTopLeft","XYZ","ApTaskManagementLayer","mapSubscriptionComplete","Gn","updateNutrientLayerVisibility","nutrientLayerUrls","plan","FieldNutrientActions","FIELD_NUTRIENT_DISTRIBUTION_CHANGED","FIELD_NUTRIENT_NEED_CHANGED","ApBaseSampleFieldsLayer","ApSampleFieldsLayer","ApSampleFieldsDescriptionLayer","GeolocationError","BaseEvent","Geolocation","position_","transform_","identityTransform","watchId_","handleProjectionChanged_","handleTrackingChanged_","setProjection","trackingOptions","setTrackingOptions","setTracking","tracking","getTracking","geolocation","watchPosition","positionChange_","positionError_","getTrackingOptions","clearWatch","accuracy","altitude","altitudeAccuracy","heading","toRadians","projectedPosition","circularPolygon","getAccuracy","getAccuracyGeometry","getAltitude","getAltitudeAccuracy","getHeading","getPosition","getSpeed","BaseObject","accuracyFeature","positionFeature","initUserPositionTracking","userTrackingEnabled","OlGeolocation","enableHighAccuracy","initializeEventHandlers","disableUserPositionTracking","clearPositionRelatedGeometry","mapLayerControl","mapLayerTooltipStore","_fieldLayer","_fieldCropLayer","_fieldDescriptionLayer","_sampleFieldLayer","_sampleFieldDescriptionLayer","_locationLayer","_userLocationLayer","ApUserLocationLayer","_geoPointsLayer","_fungiDetectLayer","_contactLayer","_taskManagementLayer","_polygonEditLayer","_polygonEditViewLayer","_wmtsLayer","ApWMTSLayer","_xyzLayer","ApXYZLayer","_nutrientPlanningLayer","MapFactoryLayer","_distributionLayer","NutrientDistributionLegend","_soilSampleDistributionLayer","_soilSampleLayer","_soilGroupLayer","SoilGroupLegend","_needLayer","_taskManagementNutrientLayer","_trackLayer","_sensorPointLayer","_nRaster","_ndiLayer","NdiLegend","_nApplicationMapLayer","_nUptakeLayer","_ppRaster","_ppApplicationMapLayer","sn","markerType","listenChangeTranslation","listenChangeVisibility","listenChangeOrder","listenChangeBackgroundMap","listenChangeLayer","listenChangeFieldDistributionUrl","listenContoursChanges","loadLayerMapControlItems","VisibleLegendLayer","LayerMapControlItems$","layerMapControlItems","LayerMapControlItems","ActiveLayerGroups$","activeLayerGroups","ActiveLayerGroups","backgroundMap","nPlanningUrl","ppApplicationUrl","nRasterUrl","ppRasterUrl","nSensorLogPointsUrl","DistributionUrl","SoilSampleDistributionUrl","NeedUrl","NdiUrl","SoilGroupUrl","TrackUrl","SoilSampleUrl","InsertInPolygonEdit","mutate","tryMutateUrl","changePlanningMapFactoryLayerUrl","planIds","NPlanningLayerSourceInit","changeNPlanningMapFactoryLayerUrl","PPApplicationLayerSourceInit","RemoveContactLayer","RemoveFromPolygonEditLayer","setActiveLayerGroups","getLayerGroupCheckboxState","refreshActiveLayerGroups","activeGroup","getLayerByName","groupLayers","getLayersByGroup","allLayersChecked","allLayersUnchecked","setBackgroundMap","currentNutrient","translationLoading","FieldNutrientNeedChanged","FieldNutrientDistributionChanged","AllLayerGroups$","gl","activeLayers","MapLayerStore","MapActions","GEOMETRY_EDITOR_MERGE","GEOMETRY_EDITOR_MERGE_DONE","GEOMETRY_EDITOR_SPLIT","GEOMETRY_EDITOR_SPLIT_DONE","listenBackendGeometryMerge","ActiveToolGroup","ActiveToolGroup$","editor","activeToolGroup","currentArea","DeleteButtonVisible$","deleteButtonVisible","EditBarVisibility$","showEditbar","editFeature","FeatureLocked","featureLocked","SelectedFeature$","selectedFeature","activeTool","CancelEditFeature","featId","listenActiveToolChange","listenBackendGeometryUpdate","HideDeleteButton","SendGeometryUpdate","GeometryEditorSendUpdate","ttype","SetDeleteGeometry","SetEditBarVisibility","ShowDeleteButton","GeometryEditorUpdate","GeoJSONConverter","GeometryEditorMergeDone","mergeFieldResult","ClearMergeFieldResult","gridSelectedFields","prepareEditLayers","openEditBar","PrepareOpenEditBar","prepareLayers","selectEditField","PrepareSplitField","gridSelectedFieldGeomId","prepareEditLineLayers","PrepareModifyMergedField","geometryCoordinates","PrepareDrawNewHole","PrepareDeleteHole","removeEditLayers","cancelActions","closeEditBar","MergeFieldGeometries","geom2","GeometryEditorMerge","geomId","splitLine","onDone","GeometryEditorSplit","GeometryEditorSplitDone","replaceId","Ki","otherFields","fieldCropsVisibleBefore","tool","hideBar","GeometryEditorInformStateChange","onModifyEnd","onDrawNewHoleEnd","onDeleteHoleEnd","DeleteSketchGeometry","MapEditStore","MapLegendStore","createNutrientDistributionLegend","listenRefreshSoilGroupLegend","listenRefreshTrackLegend","listenRefreshNeedLegend","listenRefreshCropTypeLegend","listenRefreshNutrientPlanningLegend","listenRefreshNPlanningLegend","listenRefreshPPApplicationLegend","listenRefreshNUptakeLegend","listenRefreshNdiLegend","listenRefreshNLogInterpolationLegend","listenRefreshPpLogInterpolationLegend","_LogLegend","All$","All","_cropTypeLegend","_soilGroupLegend","_nutrientPlanningLegend","_nPlanningLegend","_ppApplicationLegend","_nutrientDistributionLegend","_trackLegend","_needLegend","_nLogInterpolationLegend","_ppLogInterpolationLegend","NNeedLegend","_nNeedLegend","_ndiLegend","_nUptakeLegend","_tskMgmtLegend","onNdiLegendShow","machineBreaks","MaxInitialNeedP","MaxInitialNeedK","MaxInitialNeedMg","MaxInitialNeedPh","onNPlanningChanged","onPPApplicationChanged","MapStore","lastView","fieldSelectionOn","fieldSelection","drawCropColor","Center","EnableDistributionView","DrawCropColor","DrawSelectedStyle","DisableDistributionView","fertilizationNeedValue","logfilesLoading","planBooksLoading","cropEcSn","cropEcN","fieldNPlanningStatistic","nRestrictionsReportDownloadSuccess","NFertilizationLoadSuccess","NFertilizationDetailsLoadSuccess","NFertilizationNeedValueGetSuccess","NFertilizationBookingsLoadSuccess","NFertilizationLogfilesLoadSuccess","NFertilizationLogfilesUpdateSuccess","updatedLogfile","logfile","NFertilizationBookingsUpdateSuccess","updatedPlanBook","NPlanningCropEcNSuccess","NPlanningCropEcSnSuccess","getCropEcNeedLegend","NFertilizationStore","CropEcNeedLegend","getCropEcUptakeLegend","CropEcUptakeLegend","NPlanningRasterStatisticRefresh","statisticsToAdd","NPlanningRasterStatisticFail","NFertilizationLogfilesRemapComplete","LoadLogfiles","NFertilizationNRestrictionReportDownloadSuccess","NFertilizationNRestrictionReportDownloadFail","LoadCropEcUptake","LoadCropEcNeed","LogfilesLoading$","PlanBooks$","PlanBooks","Logfiles$","Logfiles","NPlanningCropEcSn","NPlanningCropEcN","LoadNFertilizationPlanningSummaries","NFertilizationBookingsLoad","NFertilizationLogfilesLoad","GetPlanningById","GetPlanningBySummaryId","GetNeeds$","needs","need","GetNeeds","Planning$","Bookings$","NFertilizationNeedValueGet","setFertilizationNeedValue","NFertilizationNeedValueSet","SaveNFertilizationPlanning","NFertilizationBookingsSave","UpdateNFertilizationPlanning","NFertilizationBookingsUpdate","DeleteNFertilizationSummaries","summaries","NFertilizationSummaryDelete","DeleteNFertilizationPlanBooks","NFertilizationPlanBooksDelete","SaveLogfiles","datasetFieldMaps","NFertilizationLogfilesSave","UpdateLogfiles","NFertilizationLogfilesUpdate","GetLogfilesByPlanBookId","BookPlanBooks","NFertilizationBookPlanBook","UnBookPlanBooks","NFertilizationUnBookPlanBook","CropKeys","Sn1","Sn2","Sn3","Sn4","Sn5","Sn6","Sn7","Sn8","Sn9","getPlanningsBySummaryId","N1","N2","N3","N4","N5","N6","N7","N8","N9","CreateNPlanningRasterJob","NPlanningRasterCreateJob","clearNPlanningStatistic","remapLogfile","datasetIds","NFertilizationLogfilesRemap","downloadNRestrictionReport","headline","bookName","reportData","NFertilizationNRestrictionReportDownload","NdiStore","NStatisticLoadSuccess","NdiStatistics$","NdiStatistics","NStatisticLoad","FieldNutrientDistributionStore","sampleMethods","exportedStatisticFile","FieldNutrientDistributionsLoadSuccess","SampleMethodsLoadSuccess","SampleRegionsLoadSuccess","FieldNutrientDistributionStatisticDataExcelExportSuccess","FieldNutrientDistributionStatisticDataExcelExportFail","Distributions$","SampleMethods$","SampleRegions","FieldNutrientDistributionsLoad","SampleMethodsLoad","SampleRegionsLoad","statisticDataExcelExport","fieldGeometryIds","FieldNutrientDistributionStatisticDataExcelExport","ApNutrientActions","NUTRIENT_PLANNING_PACKAGE_START","NutrientStore","NutrientPlanningPackageSuccess","MapFactoryRequestor","NutrientPlanningSuccess","NutrientPlanningRasterStatisticRefresh","NutrientPlanningRasterStatisticFail","NutrientPlanningFail","NutrientPlanningRasterStatisticLoadSuccess","planId","amount","hasMinValue","hasMaxValue","constantValue","NutrientPlanningStart","createNutrientPlanningPackage","NutrientPlanningPackageStart","ApRbActions","RB_CREATE","RB_CREATE_FAIL","RB_CREATE_SUCCESS","RB_LOAD","RB_LOAD_SUCCESS","RB_REFRESH","RB_LOAD_FAIL","RB_CHECK_FIELD","RB_CHECK_FIELD_SUCCESS","RbStore","checkResult","checkLoaded","checkLoading","RbRefresh","RbCheckFieldSuccess","RbCreateSuccess","RbLoadFail","RbCreateFail","RbLoadSuccess","createRb","RbCreate","RbLoad","checkField","RbCheckField","RbStatistic$","SoilSampleDateStore","SoilSampleDatesGetSuccess","Dates$","SoilSampleDatesGet","ApSoilSamplePlanningActions","SAVE_SOIL_SAMPLE_PLANNING_SUCCESS","SoilSamplePlanningStore","shapeExport","LoadSoilSamplePlanningSuccess","ExportShapeSoilSamplePlanningSuccess","SaveSoilSamplePlanningSaveSuccess","loadSoilSamplePlanning","LoadSoilSamplePlanning","saveSoilSamplePlannings","soilSamplePlannings","SaveSoilSamplePlanning","exportShape","exportItems","targetDate","ExportShapeSoilSamplePlanning","ParameterDefinitionStore","ParameterDefinitionLoadSuccess","ParameterDefinitionAdd","ParameterDefinitionLoad","refObjectType","ParameterDefinitionUpdate","ParameterDefinitionCreate","ParameterValuesHistoryStore","ParameterValueHistoryLoadSuccess","ParameterValueHistoryLoad","ParameterValuesStore","ParameterValueLoadSuccess","ParameterValueLoad","updateParameterValue","ParameterValueUpdate","ParameterValueDelete","ParameterValueCreate","parameterValues","ParameterValuesSaveOrUpdate","ApGetAssignedUserGroupsPipe","listUserGroupsUserItems","userGroups","getUserGroupsUser","copiedUserGroups","userGroup","ApGetAvailableUserGroupsPipe","listUserGroupItems","getUserGroups","ApGetLocalDatePipe","GetMainCropStatisticPipe","cropStatistic","getForMainCrop","GetParameterRefObjectTypePipe","parameterRefObjectType","GetParameterTypePipe","parameterType","GetSecondCropStatisticPipe","getForSecondCrop","ApGetTimeDurationStringPipe","convertedDate","Floor","TotalWeeks","ApGetUtcDatePipe","router","developerGuard","urlEncoder","changeMainModule","RoutesRecognized","serialize","CurrentUrl$","QueryParams$","loadContactPage","navigateToPasswordRecovery","blockNavigation","messageKey","_blockMessage","_blockNavigation","releaseNavigation","_navigationSubscription","routerState","root","firstChild","handleLayerGroups","mainModuleBefore","mainModuleAfter","_layerMapControlItemsSubscription","readLayerMapControlItems","_mapLoadCompleteSubscription","forceModulLayerState","modulLayers","RouterStore","SensorActions","SENSOR_FIELD_DATA_LOAD","SENSOR_FIELD_DATA_LOAD_SUCCESS","SENSOR_RASTER_VALUES_LOAD","SENSOR_RASTER_VALUES_LOAD_SUCCESS","SensorStore","sensorRasterValues","SensorFieldDataLoadSuccess","SensorRasterValuesLoadSuccess","SensorFieldData$","SensorFieldData","loadSensorFieldData","SensorFieldDataLoad","loadSensorRasterValues","planBookIds","SensorRasterValuesLoad","getSensorFieldData","ApGetCropStatisticService","gatherFieldCropsChartData","statisticData","mainCropData","secondCropData","mainCropType","secondCropType","_updateCropDataCollection","prio","gatherFieldCropRotationData","fieldCropRotations","statsData","fieldCropRotation","currentYield","_updateCropDataObjectWithCropTypeInfo","CropPriority","CropTypesPerYear","groupArea","_groupCropAreas","dataMainCrop","cropgroup","statisticDataSecondCrop","dataSecondCrop","cropData","areaHa","cropTypeName","cropTypeColor","cropTypeArea","cropItemIndex","explode","itemIndex","CropTypeName","yearCrops","Global__CropGroup_Nothing","groupName","ApGetCropService","getFieldCropByDate","getMainCrop","_getCropTypeId","returns","DEFAULT_RESULT","parseMainCropExpectedYield","overlapsRanges","parseSecondCropExpectedYield","parseSecondCrop","parseStrawHarvested","startA","endA","startB","endB","AccessPermissionsStore","LoadAccessPermissionsSuccess","getAccessPermissions","LoadAccessPermissions","insertPermission","InsertAccessPermissions","deletePermission","DeleteAccessPermissions","UserGroupStore","LoadUsergroupsSuccess","LoadUsergroups","UserGroupsUserStore","LoadUsergroupsUserSuccess","LoadUsergroupsUser","updateUserGroupsUser","UpdateUsergroupsUser","UserSettingsStore","LoadUserSettingsSuccess","LoadUserSettings","StatisticStore","Selection$","SelectedValue$","statType","emptyMessage","chartData","addStatisticData","storeObject","removeStatisticDataByType","typeToRemove","addSelection","selectFromSelection","service","GetCropPipe","CropApplicationActions","CROP_APPLICATION_LOAD","CROP_APPLICATION_LOAD_SUCCESS","CropApplicationStore","CropApplicationLoadSuccess","CropApplicationLoad","operatonMode","ApplNum","GetApplicationFromLogfile","GetApplicationFromSummary","_getMost","TaskManagementActions","TASK_MANAGEMENT_PLAN_SUMMARY_LOAD_BY_ID","TASK_MANAGEMENT_REPORT_SEND","TaskManagementStore","exportedFile","exportSuccess","exportFail","TaskManagementPlanSummariesLoadSuccess","TaskManagementPlanExportSuccess","TaskManagementPlanExportFail","Tasks$","Tasks","loadTaskManagementPlanSummaries","TaskManagementPlanSummariesLoadById","TaskManagementPlanSummariesLoad","export","plansForExport","TaskManagementPlanExport","sendReport","TaskManagementSendEmailReport","BasicFertilisationSummariesStore","LoadBasicFertilisationSummariesSuccess","iBasicFertilisationSummary","Summaries$","Summaries","LoadBasicFertilisationSummaries","basicFertilisationSummaries","withNotification","needRefreshSummaries","BasicFertilisationSummariesCreate","BasicFertilisationSummariesUpdate","basicFertilisationPlanBooks","BasicFertilisationPlanBooksUpdate","BasicFertilisationPlanBooksDelete","LanguageActions","LANGUAGE_SELECT","LanguageStore","LanguageLoadSuccess","_setDefaultBrowserLanguage","_setLanguageFromLocalStorage","languageLoadComplete","LanguageSelect","IsoDateFormat","CurrentTimeFormat","IsoTimeFormat","IsoDateTimeFormat","Load","LanguageLoad","SelectLanguage","isNegative","parts","valueInString","wholePart","decimalPart","formattedWhole","ThousandSeperator","formattedStr","lang","savedLanguageKey","LanguageName","TranslationStore","TranslationSaveSuccess","savedTranslation","_translationCache","pIdx","findResult","replacer","LoadTranslations","axios","translationsLoaded","defaultKey","GetTranslationByKey","_fillParameter","SendMissingTranslation","TranslationUpdate","TranslationCreate","ApTranslationAsyncPipe","ApTranslationArrayPipe","getObservableObject","getObservableString","updateTextField","getObservable","Production","StartRoute","LongRunningFunctionTimeout","SoilGroups","Distributions","CropExtraction","InorgFertContent","InorgFertCaO","InorgFertDensity","OrgFertContent","OrgFertDryMatter","OrgFertDensity","OrgFertNEff","LastUsedLanguageKey","LastVisitFarmId","LastVisitUrl","LastVisitUrlParams","LastVisitCampaignYear","Address","StoreKey","LOGO_SCALE","DURATION","SIDEBAR_TRANSLATE_TEXT_IN","SIDEBAR_TRANSLATE_TEXT_OUT","SIDEBAR_TOGGLE_ICON_ROTATE_LEFT","SIDEBAR_TOGGLE_ICON_ROTATE_RIGHT","SIDEBAR_WIDTH_FULL","SIDEBAR_WIDTH_HALF","SIDEBAR_WIDTH_NONE","SIDEBAR_TRANSLATE","SIDEBAR_TRANSLATE_TEXT","SIDEBAR_ROTATE_ICON","ANIMATE_CHILD","animateChild","optional","CHANGE_WIDTH_MAP_VIEW","CHANGE_WIDTH_MAIN_VIEW","TRANSLATE_COMPONENT","PageStore","Subscribe","_redirect","_setPageMode","ROUTER_DATA","TRANSLATION_LOADED","LANGUAGE_LOADED","A","LicenseNotificationService","licenseService","roundService","soilSampleDatesService","invokeBaseFertilisationLicenseAdjustmentLogic","_baseFertilizationLicenseSubscription","loadedData","Bi","pn","Q","Ve","fieldsWithValidSoilSample","_checkIsTrialPeriodValid","QuantityErp","NoCheck","fieldsAreaHaSum","te","quantityForConditionActivation","licenseComparisonType","licenseComparisonAmount","modalWindowMessage","farmQuantityTranslation","licenseQuantityTranslation","trialExpireAt","ApTooltipComponent","getHtml","bypassSecurityTrustHtml","ApNotifyMessageComponent","InitialMessage","hideNotification","Se","_c0","rf","ɵngcc0","ctx_r0","typeIconClass","templateString","_r6","onCloseClick","closeButtonTitle","_c3","packageMetadata","productCodes","publishDate","licensingDocsUrl","NotificationComponent","cdr","builder","defaultHideAfter","animationEnd","rtl","validatePackage","dynamicRTLSubscription","containerClass","closeTitle","notificationClasses","typeClass","closable","hideTimeout","animation","setHideTimeout","customComponent","elementHeight","emitClose","hideAfter","destroy","play","animatedElement","addClass","player","removeClass","generatedAnimation","slideAnimation","fadeAnimation","slideCloseAnimation","fadeCloseAnimation","ɵfac","ɵngcc1","ɵngcc2","ɵcmp","viewQuery","ViewContainerRef","hostVars","hostBindings","inputs","templateRef","LocalizationService","L10N_PREFIX","useValue","vars","consts","i18n_1","$localize","NotificationComponent_span_3_Template","NotificationComponent_ng_template_5_Template","NotificationComponent_ng_template_6_Template","NotificationComponent_a_9_Template","directives","LocalizedMessagesDirective","ɵngcc3","encapsulation","ViewChild","__metadata","TemplateRef","Boolean","HostBinding","ChangeDetectorRef","Renderer2","AnimationBuilder","NotificationContainerComponent","notifications","closeClickSubscription","addNotification","notificationRef","applySettings","customFactory","appendTo","applyAbsolutePosition","applyPosition","applyContainerWrap","afterHide","appendToContainer","elementHalfWidth","getBoundingClientRect","positionStyles","setContainerPosition","cssStyle","offsetMargin","positionLayout","alignItems","bottom","ComponentFactoryResolver","NOTIFICATION_CONTAINER","InjectionToken","NotificationService","injector","notificationContainers","findGroupContainer","notificationContainer","appRef","attachView","hostView","hostViewElement","groupContainer","applicationRef","ApplicationRef","appRoot","components","ɵprov","__param","Inject","Optional","Injector","LocalizedMessagesDirective_1","ComponentMessages","ɵdir","NotificationModule","ɵmod","ɵinj","providers","ApNotifyComponent","notificationService","handleNotificationMessage","notificationTimeout","currentlyDisplayedMessages","calcNotificationTimeout","notificationTypeMapping","ApLogoIconComponent","ApModalDialogButtonDisablePipe","formValid","ApModalDialogComponent","dialogOpened$","dynFormConfig$","InnerLoadingComponent","ApFarmSelectionComponent","selectedFarms","_farms","_sortFarms","farmFilter","onItemClicked","getToolTip","toolTip","ri","fo","vr","Bo","xr","comboBox","writeValue","focus","firstFarm","secondFarm","ApHarvestSelectionComponent","_harvestYears","harvestYearFilter","_setSelectedCampaignYear","onHarvestYearClick","_generateTooltip","currentFormat","ApCurrentTimeComponent","FarmSettings","FormatDate","_language","FormatTime","_interval","ApFarmJobListComponent","jobListItems$","jobListItems","countPending","countRunning","calcHeight","PopupLineHeight","MaxPopupHeight","ApTaskListComponent","outsideClickHandler","outsideClickHandlerRef","apToolbarTaskList","getJobCountBadge","jobsCount","ctx_r24","ctx_r26","ctx_r28","ctx_r43","ctx_r45","ctx_r46","ctx_r48","ApNotificationComponent","expanded","notifies","itemsNew","itemsOld","notify","Timestamp","Link","ringBell","itemNewHeight","itemOldHeight","_toView","newSkip","oldSkip","apToolbarNotifications","onNewMessages","onItemClick","onAllNotificationReadClick","onAllNotificationDeleteClick","cellClick","bellRings","newPageChange","oldPageChange","skip$","ApUserProfileComponent","windowHelper","editProfile","academy","teamViewer","legal","afterChangePermission","fillDropDown","fullPathToLegalInfo","userProfile","filterByString","IsMainExpandedPipe","Qi","RemoveUrlParamsPipe","IsMainSelectedPipe","Yo","ctx_r19","ctx_r21","ctx_r25","ctx_r40","menu","PanelBarExpandMode","menuTrackBy","toggleSidebar","userSelectedUrl","menuStateChange","focusedMenuItem","focused","ngScrollbar","expandItem","visiblePanel","CanNavigate","ApMenuComponent","NgScrollbar","yi","ApViewContainerRefDirective","TRANSLATE_EDIT_FORM","formState$","loadComponent","adHost","passReference","destroyComponent","AdViewContainerComponent","rs","ApMachinePopupComponent","getHTMLElement","refreshComponent","visible","ApSensorPointPopupComponent","classifyButtonVisible","addValue","removeValue","SensorPointLegendComponent","getClassValues","getColorStyleByKey","fillClassification","classificationProperty","ApMapColorLegendComponent","colorLegends$","_setAnchorWidth","escapeTitle","CSS","escape","isNumber","ApMapContextMenuComponent","fieldService","showTrackOnMapService","onSelect","_getFieldContextMenu","_getTrackContextMenu","_createFieldContextMenu","fieldTranslation","ContextMenuComponent","LayerControllerMapSelectorComponent","mapSelectControl","selectedMap","LayerPanelBarItemComponent","visibilityChanged","LayerControllerComponent","mapSelector","layerSelectionChange","layerGroupSelectionChange","dropLayer","currentDragLayer","currentDropLayer","between","dragLayer","allowDropLayer","layerGroupTrackBy","selectMap","clickLayer","ApMapBurgerMenuComponent","showMap$","_toPanelBarItemModel","asComponent","isComponent","ApMapZoomComponent","infoClicked","showInfo","zoomInClicked","zoomOutClicked","setNorthOrientation","showUserPosition","userPositionPressed","NewFieldToolbarComponent","editorService","IsEditModeActive$","listenSketchGeometry","EditNewFieldClick","prepareEditLayer","FinalizeGeometryClick","DeleteNewFieldClick","NewHoleFieldClick","DeleteHoleFieldClick","NewFieldClick","UndoLastPointClick","ActivateEditToolbar","ApMapEditComponent","ApLegendScrollerComponent","legends$","updateScrollbar","scrollerContent","scrollableView","contentScrollable","moveRight","scrollBar","scrollTo","moveLeft","getTrackColor","translateDataKeys","MapTreeViewStore","checkSettings","selectSettings","setup","_getLayerTreeViewItem","MapTreeViewDirective","kendoTreeView","hasChildren","isChecked","checkedChange","ApMapTreeViewComponent","nodes$","ApMapComponent","switchExpanded","runOutsideAngular","deleteButtonVisible$","sample","contextmenu","clearSensorPoints","ApBoxPlotChartComponent","settings$","ApBarLineAreaChartPipe","statstic","sd","ApBarLineAreaChartComponent","getStatisticKeys","sub","typesFilter","labelContent","ApDonutPieChartPipe","ApDonutPieChartComponent","createChart","centerUnit","centerCount","ApMainSecondCropChartComponent","percentPerValue","getCenterCount","selectedChange","tooltipTextColor","_isWhiteColor","ApDatetimeSelectionChartComponent","navigatorStep","dataArray","onSelectEnd","transitions","DynamicChartHeightPipe","HistogramComponent","changeDetectionRef","classColorService","activeFilter","bandsFilter","bands","selectedBand","calculatedData","cat","PlanningStatsComponent","titlePP2O5","titleKK2O","titleMgMgO","titleCaO","summaryString","createDescription","chartSet","averageSymbol","minString","maxString","sumString","productString","ApGenericBarChartComponent","generateData","inputData","getSeriesValues","seriesValues","dataValue","dataAdded","categoryIdx","seriesValue","createVisual","rect","getNote","chartSeriesData","ApBaseFertOverviewStatsComponent","yearsPlanning","yearsBooking","yearPlanning","fromPlanning","toPlanning","yearBooking","fromBooking","toBooking","buildGrids","stat1columns","rowHeaderColor","stat2columns","stat3columns","getElementOxidType","itemsStat1$","itemsStat2$","itemsStat3$","dataWithCrNeed","CrNeeds","cropRotationNeed","getCropRotationNeedSum","remain1","getRemainByElement","Remain1","convertToTons","remain2","CropRotationNeed","BookingsSum","PlanningsSum","RowHeaderText","AmountByYear","getAmountByYear","getProductItems","CropRotationNeedP","CropRotationNeedK","CropRotationNeedMg","CropRotationNeedCaO","remainValue","valueInKg","calculateBookingPlanningSum","subId","processedPlanBookIds","OutputDate","_getPureNutrientSubId","Pr","Re","LeadNutrient","Bt","firstYear","lastYear","_findProductItem","productUnitKey","convertKgToTons","getProductByYear","SubId","amountByYear","ApPlanningWizardOverviewStatsComponent","statColumns","_getSumValuesStatsColumns","itemsStat$","_getTotalData","currentItem","currentIndex","translatedOperationMode","OperationModeName","FieldsSum","AreaSum","ProductAmountSum","_getProductAmount","ProductMin","_getProductMin","ProductMax","_getProductMax","ProductAverage","_getProductAverage","_getStatisticAverage","curr","productAmount","minItem","productMin","maxItem","productMax","firstItem","productAverage","productTitle","HistogramItemBehavior","DiagramForHistogramStatisticsService","generateDiagram","diagramTableData","diagram","AxesTitleX","AxesTitleY","DiagramTitle","Categories","TotalCells","TotalArea","currentLegendValue","previousLegendValue","classCells","Statistics","sumTotalPercentageForClass","_countHistogramValueCells","histKey","_calculateNoteTexts","RoundAreaNoteToFarmSettings","comparer","sumItemPercentageForClass","histValue","areaRounding","percentSum","biggestValueIdx","biggestArea","showExtendedArea","_createNote","selectedAreaRounding","percentage","areaNote","ApDottedHistogramChartComponent","getRoundNumericService","StrokeColor","TooltipBackground","TooltipTextColor","background","_updateData","getSafeHtml","updateData","_generateDefaultObject","markers","Styles","MarkerColor","selectedMarker","PointerColor","charData","getXValues","getYValues","ChartTitle","AxisX","_getMin","_getMax","AxisY","Transition","Xi","Zoomable","xo","Pannable","Ms","Wr","Sa","Qs","Va","ul","ShowTooltip","tc","$l","value_r1","InfoRowViewComponent","ApNFertilizationLogfileStatsComponent","importStore","sensorStore","diagramForHistogramStatisticsService","nUptakeBars$","_generateNUptakeData","nApplicationBars$","_generateNApplicationData","infoItems$","_generateInfoItems","histogramData$","_generateHistogramData","infoRowViewObjects","DataSetName","headerValuesObject","headerValuesObjectKeys","fileNameRow","Head","actionToDownloadFile","MongoFileId","infoRowViewObject","chart","xValues","yValues","xTranslate","yTranslate","TooltipText","_getStatistics","_generateHistogram","FieldStatistic","axesYTitle","totalCells","minAndMaxForLegend","_getMinAndMaxForLegend","lowest","highest","diagramStatistics","sortedStatistics","copiedFieldStatistic","ItemBehavior","_filterFieldStatisticsValues","fieldStatistics","multiplierCellValue","highestValue","valueToCompare","ApNFertilizationNNeedStatsComponent","sumValuesStatsColumns","sumValuesStatsItems$","barsData","_getTotalSumBarsData","MainCropType","existingGroup","removalSum","Removal","alreadyAppliedSum","AlreadyApplied","balanceSum","Balance","maxAllowanceSum","MaxAllowance","remainingSum","Remaining","RemovalSum","AlreadyAppliedSum","BalanceSum","MaxAllowanceSum","RemainingSum","lastItemWithTotal","_saveItemsNamesWithZeroValues","minAndMaxValue","_getMinAndMaxScalesFromObject","alreadyAppliedName","removalName","balanceName","maxAllowanceName","remainingName","_zeroValuesToHandleOnChart","numberValues","minAbsValue","roundedMinAbsValue","roundedMaxValue","sumValuesData","ApFieldScanDataTableStatsComponent","nFertilizationPlantProtectionService","_buildGrids","statGridDataItems","MAX_STAT_ITEMS","ScanDate","ScanNUptakeMin","ScanNUptakeMax","ScanNUptakeAvg","filteredItemsBySensor","selectedFieldsAreaAndAverage","sumDataRow","ApFieldsCropRotationStatsComponent","decimalsAfterDigit","cropYears","_getCropYears","dropdownSelectionItems","_getItemsForSelectionDropdown","selectedCropPriority","cropStatsColumns","_getCropStatsColumns","selectedCrop","dataResult","_getCropTableData","cropTableData$","FieldCropsData","chartBarData$","ChartBarData","getTooltipText","categoryName","roundedPercent","Percent","selectedPriority","fieldsCropRotationTableData","chartBarItemValues","yearIndex","cropTypeIndex","CropYearArea","chartBarValueIndex","charBarObject","accumulator","chartBarItem","currentYear","firstAreaHa","FieldsNdiStatsDataType","ApFieldsNdiStatsComponent","diagramForHistogramStatisticService","getItemsForSelectionDropdown","selectedDropDownItem","generatedBarsData","generateHistogram","generatedPlotBoxData","generateBoxplot","dataPresence","IsGenericBarsDataPresent","IsPlotBoxDataPresent","setPlotBoxTitle","genericBarsData","plotBoxData","getEmptyTitle","nDataTitle","getNUptakeItems","minAndMax","getMinAndMaxFromNUptake","selectedFieldCells","diagramStatisticsObject","statisticsObject","histogram","boxPlotData","boxPlotItem","BoxPlotChartDataItem","median","lower","q1","q3","translatedFirstPart","translatedSecondPart","plotBoxTitle","dataType","FieldDemandChartDataKey","ApPercentBarComponent","_getContainerStyles","_getBarStyles","ApDashboardStatsComponent","taskManagementStore","plantProtectionProductStore","logfileService","nFertilizationService","_loadData","loadingItems","rbStatistics","nFertilizationPlanBooks","nFertilizationLogfiles","tasks","fieldsWithFieldGeoms","_getFieldWithFieldGeom","filteredNFertPlanBooks","filteredNFertLogfiles","dataSet","dataSetCreated","filteredTasks","ApplDate","UserForename","General","_generateGeneral","BaseFertilisation","_generateBaseFertilisationData","_generaNFertilization","_generateTasks","BaseData","_generateBaseData","setBarColorDependingOnValue","_greenStatusColor","_yellowStatusColor","_redStatusColor","setStylesForAmountValues","fontWeight","totalFieldsAreaHa","_getFieldsArea","fieldsWithCropRotation","fieldWithFieldGeom","cropRotationFieldsAreaHa","validFieldsWithFieldGeoms","_getFieldsWithFieldGeomsWithValidSoilSampleDates","soilSampleFieldsAreaHa","FieldGeom","CropRotationAreaText","_haName","CropRotationPercent","_getPercent","FieldsWithSamplingAreaText","FieldsWithSamplingPercent","fieldsCropRotationDemand","Hl","xa","Need","_defaultElementCategory","_getAverageRb","_getStatisticData","restStatisticItem","recordedStatisticItem","plannedStatisticItem","elementDemand","Initial","Recorded","Planned","recorded","planned","rest","PlanningData","filteredLogfiles","DataSetType","copiedLogfile","noneDeclinedLogFilesWithPlanBooks","recordedLogFilesWithPlanBooks","fieldsWithApplication","fieldsWithApplicationsArea","FieldsWithApplicationsText","FieldsWithApplicationsPercent","LogfilesTotalAmount","LogfilesPercent","openedFields","plannedFieldIds","openedFieldsArea","exportedTasks","OpenFieldsCount","OpenFieldsAreaHa","ExportedTasksPercent","FertiliserMineral","FertiliserOrganic","PlantProtectionProducts","Machines","Implements","Workers","fieldGeomsId","averageRb","fieldsWithValidSoilSampleDates","totalAmount","elementsCount","ApGenericChartComponent","getXAxisLabel","calculateChartHeight","chartConfigs","onLegendItemClick","onSeriesHover","chartComponent","sender","chartElement","surfaceElement","chartBoundingBox","tooltipX","clientX","tooltipY","clientY","isTooltipVisible","onSeriesLeave","ApPpPlanningWizardOverviewStatsComponent","getStatColumns","statItems$","ApStatisticsComponent","_setStatisticsStyles","clientWidth","apChartArea","data$","yearChange","statisticItems","styleObject","_isNeedEnableScroll","statisticsStyles","getStatisticItemStyle","HelpArticlesActions","HELP_ARTICLES_LOAD","HELP_ARTICLES_LOAD_SUCCESS","HELP_ARTICLES_SAVE","HelpArticlesStore","latestHelpArticle","latestTargetComponent","HelpArticlesLoadSuccess","loadHelpArticle","targetComponent","HelpArticlesLoad","saveHelpArticle","contentHtml","HelpArticlesSave","IHelpDialogType","ApHelpComponent","helpArticlesStore","_elementRef","DialogType","YoutubeLink","YoutubeWidth","YoutubeHeight","AllowedExtensions","defaultPlugins","hasEditHelpPermission","hasEditPermission","injectIFrameCss","helpArticle","TargetComponent","LanguageKey","ContentHtml","languageData","languageName","compVisibleState","newTargetComponent","dialogApplyKey","dialogData","currentBase64Image","Youtube","insertYoutubeVideo","saveArticle","isEditMode","apFontCssLink","rel","apHelpCssLink","contentDocument","head","openDialogSave","defaultDialogData","modalDialogData","openDialogYoutube","youtubeEmbedLink","iframe","openDialogImage","onUploadImage","EditorComponent","ApMainTabs","ApTabStripComponent","currentMapViewMenu$","mapViewMode$","MaximizeMap","onMaximizeMap","Help","MinimizeMap","onMinimizeMap","ApLayoutComponent","pageStore","mapSore","croptypeStore","metric","userSettingStore","agriportConstants","licenseNotificationService","lop","clientError","ClientOutdated","handleSystemReloadMessage","OutdatedClientMessageErrorKey","SessionOutdated","OutdatedSessionMessageErrorKey","SessionLost","LostSessionMessageErrorKey","SessionPing","kendoTooltip","listenRouterUrlChanges","networkStatusChanged","networkStatus","networkIsOffline","onKeydownControlAltSpaceHandler","restartClient","bindStoreValues","localize","hookWindowResizeEvent","prepareView","bindNetworkStatus","toolTipTemplateRef","beforeunloadHandler","onFinishChangeWidth","onStartChangeWidth","onMapViewChangeStart","tabViewVisible","onMapViewChangeFinish","sidebarMode$","pageMode$","languages$","language$","menuAnimationState$","windowInnerWidth","onResizeWindow","windowInnerHeight","windowOuterHeight","outerHeight","windowOuterWidth","outerWidth","onLegalNoticeClick","fullLegalInfoPath","onContactClick","onTeamViewerClick","generateButtonForInnerError","disableLegalInfoButton","disableLangaugeDropDown","OutdatedMessage","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","LINE_START","eventName","onStart","copyAnimationEvent","onDestroy","phaseName","totalTime","makeAnimationEvent","triggerName","command","separatorPos","elm1","elm2","_query","_CACHED_BODY","_IS_WEBKIT","getBodyNode","containsVendorPrefix","containsElement","invokeQuery","NoopAnimationDriver","validateStyleProperty","matchesElement","_element","_selector","computeStyle","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","_convertTimeValueToMS","timings","allowNegativeValues","exp","delayMatch","easingVal","containsErrors","parseTimeExpression","readPrototype","copyObj","styleAttrValue","getStyleAttributeString","camelCaseToDashCase","formerStyles","camelProp","dashCaseToCamelCase","writeStyleAttribute","sequence","PARAM_REGEX","RegExp","exec","varName","localVal","DASH_CASE_REGEXP","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","transitionValue","expressions","eventStr","alias","parseAnimationAlias","separator","makeLambdaFromStates","parseInnerTransitionStr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","metadata","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","visitDslNode","normalizeAnimationEntry","currentQuerySelector","collectedStyles","queryCount","depCount","definitions","stateDef","styleAst","astParams","containsDynamicStyles","missingSubs","stylesObj","extractStyleParams","missingSubsArr","iteratorToArray","matchers","parseTransitionExpr","expr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","resolveTiming","strValue","ast","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","collectedEasing","styleMap","endTime","tuple","collectedEntry","updateCollectedStyle","validateStyleParams","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","generatedOffset","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","hasAmpersand","normalizeSelector","getOrSetAsInMap","originalSelector","currentTransition","normalizeParams","preStyleProps","postStyleProps","subTimeline","_map","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","ElementInstructionMap","AnimationTimelineContext","currentTimeline","setStyles","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","createTimelineInstruction","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","resolveTimingValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","interpolateParams","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","SubTimelineBuilder","stretchStartingKeyframe","results","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","allStyles","copyStyles","flattenStyles","getFinalKeyframe","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","AnimationStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","makeBooleanMap","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","_triggerName","_stateStyles","matchFns","oneOrMoreTransitionsMatch","buildStyles","stateName","backupStateStyler","stateStyler","backupStyles","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","buildAnimationTimelines","createTransitionInstruction","elm","queriedElementsList","defaultParams","combinedParams","styleObj","_normalizer","transitionFactories","AnimationStateStyles","balanceProperties","AnimationTransitionFactory","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","key1","key2","EMPTY_INSTRUCTION_MAP","bodyNode","_animations","_playersById","buildAnimationAst","_buildPlayer","normalizeKeyframes","autoStylesMap","inst","optimizeGroupPlayer","_getPlayer","baseEvent","listenOnPlayer","pause","finish","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","StateValue","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","isTriggerEventValid","listeners","triggersWithStates","statesByElement","afterFlush","_getTrigger","defaultToFallback","TransitionAnimationPlayer","k1","k2","objEquals","reportError","eraseStyles","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","deregister","stateMap","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","parent","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","destroyed","markedForDestroy","d0","d1","elementContainsData","containsData","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","AnimationTransitionNamespace","_balanceNamespaceList","collectEnterElement","registerTrigger","_fetchNamespace","nsId","isElementNode","insertBefore","markElementAsDisabled","isHostElement","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","flush","cleanupFns","_flushAnimations","quietFns","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","El","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","finalPlayers","_flattenGroupPlayersRecur","flattenGroupPlayers","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","triggerCallback","_queueEvent","hasStarted","nodeType","valuesMap","elementPropsMap","cloakVals","cloakElement","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","_triggerCache","_transitionEngine","TransitionAnimationEngine","_timelineEngine","TimelineAnimationEngine","componentId","cacheKey","AnimationTrigger","buildTrigger","onInsert","onRemove","disableAnimations","parseTimelineCommand","eventPhase","SpecialCasedStyles","_startStyles","_endStyles","_state","initialStyles","initialStylesByElement","_initialStyles","WeakMap","isNonAnimatableStyle","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_destroyed","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","cancel","playerOptions","previousStyles","previousWebAnimationPlayers","WebAnimationsPlayer","allowPreviousPlayerStylesMerge","previousStyleProps","startingKeyframe","missingStyleProps","balancePreviousStylesIntoKeyframes","specialStyles","startStyles","endStyles","filterNonAnimatableStyles","packageNonAnimatableStyles","BrowserAnimationBuilder","rootRenderer","doc","_nextAnimationId","_renderer","ViewEncapsulation","issueAnimationCommand","BrowserAnimationFactory","DOCUMENT","AnimationFactory","RendererAnimationPlayer","_command","_listen","setProperty","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","scheduleListenerCallback","destroyNode","namespace","createComment","createText","newChild","refChild","isMove","oldChild","selectRootElement","selectorOrNode","preserveContent","nextSibling","flags","removeStyle","resolveElementFromTarget","dotIndex","parseTriggerCallbackName","InjectableAnimationEngine","ɵAnimationEngine","ANIMATION_MODULE_TYPE","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","useFactory","ɵWebAnimationsStyleNormalizer","RendererFactory2","zone","deps","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","ngModule","BrowserModule","errorBucket","ApErrorHandler","errorHandlerService","tryGetFarmId","handleError","rejection","IS_VALIDATION_ERROR","Browser","_getBrowser","UserAgent","errorState","isDevMode","ROUTES","loadChildren","ApLoginModule","ApAdministrationModule","ApSettingsModule","ApDashboardModule","ApBaseDataModule","ApEvaluationModule","ApFieldManagementModule","ApNutrientManagementModule","ApNFertilizationModule","PlantProtectionModule","ApBookingModule","TaskManagementModule","ApImportModule","ApInfoModule","ApReportsModule","ApFarmRecordsModule","redirectTo","pathMatch","RoutesModule","relativeLinkResolution","preloadingStrategy","PreloadAllModules","ApKendoMessageService","MessageService","ApSettingsEntryComponentsModule","ApFieldManagementEntryComponentsModule","DatePickerModule","TabStripModule","ApBasedataEntryComponentsModule","ApAdministrationEntryComponentsModule","ApDocuEntryComponentsModule","TimePickerModule","ApNutrientsManagementEntryComponentsModule","ApNFertilizationEntryComponentsModule","PpEntryComponentsModule","DatabaseNotifyStore","machineLoggerStore","soilSamplePlanningStore","newsStore","terminalsStore","connected","DatabaseNotify","selectedStore","StoreName","updateMethod","Item","ModelName","AppModule","databaseNotifyStore","bootstrap","ErrorHandler","LOCALE_ID","GaugesModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","moduleRef","componentRef","enableDebugTools","cn","_c1","_c2","a0","a1","$implicit","ListComponent_li_1_1_ng_template_0_Template","dataItem_r1","getIconClasses","ListComponent_li_1_ng_template_2_span_0_Template","ListComponent_li_1_ng_template_2_img_1_Template","_r13","index_r2","ListComponent_li_1_1_Template","ListComponent_li_1_ng_template_2_Template","_c4","_c5","_c6","_c7","keyDownHandler","keyPressHandler","keyUpHandler","listId","_c10","_c11","KendoButtonService","buttonLookChange","buttonClicked","buttonClicked$","button","setButtonLook","look","ButtonDirective","localization","isDisabled","isIcon","isIconClass","_focused","domEvents","localizationChangeSubscription","togglable","_selected","tabIndex","iconSetter","addIcon","updateIconNode","iconClassName","addImgIcon","removeImageNode","toggleClass","classButton","classPrimary","isToggleable","isFlat","isBare","isOutline","isClear","roleSetter","classDisabled","classActive","getDirection","isSpan","tagName","buttonLookChangeSubscription","hasAttribute","toggleAriaPressed","_onButtonClick","keyCode","ngAfterViewChecked","setIconTextClasses","imageNode","iconNode","deferTimeout","unbindHandler","isDocumentAvailable","attribute","setSelected","hasObservers","shouldSet","hasText","textContent","prependChild","classNames","defer","insertIcon","removeIconNode","hasIcon","outputs","exportAs","HostListener","resolvedPromise","isPresent","tick","prevented","isDefaultPrevented","tabindex","ButtonGroupComponent","_tabIndex","currentTabIndex","wrapperClass","disabledClass","stretchedClass","getRole","isSelectionSingle","ariaDisabled","wrapperWidth","wrapperTabIndex","keydown","navigateFocus","focusedIndex","_current","focusout","relatedTarget","defocus","newSelectionValue","deactivate","ngAfterContentChecked","verifySettings","PreventableEvent","activate","contentQueries","dirIndex","ngContentSelectors","ContentChildren","QueryList","ButtonItemTemplateDirective","ListComponent","onItemBlur","ListComponent_li_1_Template","FocusableDirective","TemplateContextDirective","FocusService","resetFocus","focusService","subscribeEvents","unsubscribeEvents","focusSubscription","templateContext","insertedViewRef","createEmbeddedView","ListModule","KeyEvents","keypress","keyup","NavigationAction","Undefined","Open","Enter","EnterPress","EnterUp","Tab","Esc","Navigate","ListButton","navigationService","wrapperRef","_open","_disabled","_active","_popupSettings","_isFocused","wrapper","popupClasses","openState","togglePopupVisibility","emitItemClickHandler","focusWrapper","focusFirstTimeout","blurTimeout","subscribeListItemFocusEvent","subscribeComponentBlurredEvent","subscribeNavigationEvents","tabSubscription","handleTab","componentBlurredSubscription","wrapperContains","blurWrapper","navigationSubscription","enterUpSubscription","enterup","enterHandler","openSubscription","focusFirstItem","closeSubscription","esc","enterPressSubscription","keyHandler","keyEvent","eventData","altKey","_itemClick","focusButton","_blur","markForCheck","NAVIGATION_CONFIG","NavigationService","enter","enterpress","useLeftRightArrows","isEnter","flipNavigation","NAVIGATION_SETTINGS_PROVIDER","SplitButtonComponent","elRef","arrowButtonIcon","buttonClick","itemClick","activeArrow","buttonText","lockFocus","isOpen","popupSettings","_toggle","componentTabIndex","widgetClasses","ariaLabel","replaceMessagePlaceholder","onButtonFocus","onArrowButtonClick","toggleButtonActiveState","toggleArrowButtonActiveState","onButtonClick","onButtonBlur","updateButtonText","newSettings","popupAlign","popupElement","anchorAlign","destroyPopup","innerText","containerRef","createPopup","popupTemplate","popupAnchorViewportLeave","arrowButton","buttonClass","arrowButtonClass","i18n_8","SplitButtonComponent_ng_template_8_Template","LocalizedSplitButtonMessagesDirective","ContentChild","PopupService","ɵMessages_BaseFactory","splitButtonLabel","LocalizedSplitButtonMessagesDirective_1","SplitButtonCustomMessagesComponent_1","SplitButtonCustomMessagesComponent","override","NAVIGATION_SETTINGS_PROVIDER$1","DropDownButtonComponent","mousedown","mouseup","openPopup","handleFocus","onArrowKeyNavigate","onNavigationEnterUp","onNavigationOpen","onNavigationClose","buttonList","DropDownButtonComponent_ng_template_3_Template","ChipModule","FloatingActionButtonModule","EventsModule","La","ge","TooltipPopupComponent_ng_template_0_1_ng_template_0_Template","seriesTooltipTemplateRef","seriesTooltipContext","TooltipPopupComponent_ng_template_0_2_ng_template_0_Template","seriesSharedTooltipTemplateRef","seriesSharedTooltipContext","TooltipPopupComponent_ng_template_0_1_Template","TooltipPopupComponent_ng_template_0_2_Template","shared","formattedValue","point_r15","TooltipPopupComponent_ng_template_3_tr_4_td_2_ng_container_1_Template","TooltipPopupComponent_ng_template_3_tr_4_td_2_ng_container_2_Template","TooltipPopupComponent_ng_template_3_tr_4_td_1_Template","TooltipPopupComponent_ng_template_3_tr_4_td_2_Template","TooltipPopupComponent_ng_template_3_tr_4_ng_template_4_Template","colorMarker_r12","colorMarker","nameColumn_r13","nameColumn","TooltipPopupComponent_ng_template_3_tr_4_Template","points_r9","categoryText_r10","categoryText","colspan_r11","colspan","key_r1","ChartComponent_div_5_ng_template_1_Template","donutCenterStyle","donutCenterTemplate","configurationService","axisLabelClick","dragEnd","legendItemHover","legendItemLeave","noteClick","noteHover","noteLeave","paneRender","plotAreaClick","plotAreaHover","plotAreaLeave","selectEnd","selectStart","seriesClick","seriesHover","seriesOver","seriesLeave","zoomEnd","zoomStart","ChartComponentGenerated","renderAs","seriesColors","axisDefaults","categoryAxis","chartArea","panes","paneDefaults","plotArea","seriesDefaults","valueAxis","xAxis","yAxis","THROTTLE_MS","ConfigurationService","initSource","onFastChange$","onChange$","auditTime","seriesIndex","pointIndex","LegendEvent","stackValue","EVENT_MAP","axis","axisRanges","NoteEvent","RenderEvent","SeriesEvent","InstanceEventService","DonutCenterTemplateDirective","CollectionService","onItemChange$","SimpleChange","CollectionItemComponent","collectionService","copyChanges","notifyChanges","toSimpleChanges","ItemChange","SeriesItemComponentGenerated","aggregate","autoFit","categoryField","closeField","colorField","connectors","currentField","downColor","downColorField","dynamicHeight","dynamicSlope","errorHighField","errorLowField","explodeField","fromField","gap","highField","holeSize","lowField","lowerField","maxSize","meanField","medianField","minSize","missingValues","neckRatio","negativeColor","negativeValues","noteTextField","openField","outliersField","overlay","q1Field","q3Field","segmentSpacing","sizeField","spacing","summaryField","toField","upperField","visibleInLegend","visibleInLegendField","whiskers","xErrorHighField","xErrorLowField","xField","yErrorHighField","yErrorLowField","yField","errorBars","extremes","highlight","labels","notes","outliers","SettingsComponent","configKey","markAsVisible","Change","SeriesTooltipComponentGenerated","SeriesTooltipComponent","seriesTooltipTemplate","flag","SeriesItemComponent","toggleVisibility","togglePointVisibility","pv","pointVisibility","seriesTooltip","fontSize","fontFamily","computedBackgroundColor","ThemeService","loadTheme","readTheme","readDefaultTheme","available","queryColor","chartBaseTheme","setColors","setFonts","setSeriesColors","destroyElement","crosshair","majorGridLines","minorGridLines","inactiveItems","boxPlot","bullet","candlestick","horizontalWaterfall","gradient","verticalBoxPlot","verticalBullet","waterfall","seriesTemplate","mapColor","queryStyle","setInactiveOpacity","seriesTypes","inactiveOpacity","defaultFont","titleFont","paneTitleFont","labelFont","unsetColor","letter","letterPos","seriesPos","InstanceObserver","handlerMap","legendItemClick","showTooltip","TooltipTemplateService","setTemplate","getTemplate","seriesTemplates","setSeriesTemplates","setSharedTemplate","sharedTemplate","getSharedTemplate","SeriesTooltipTemplateDirective","SharedTooltipTemplateDirective","categoryIndex","categoryIx","runningTotal","low","high","xLow","xHigh","yLow","yHigh","formatValue","COLLISION","BaseTooltip","collision","positionMode","onInit","scrollLeft","scrollTop","scrollOffset","parentElement","ɵ0$2","bodyFactory","TooltipPopupComponent","templateService","leave","defaultSharedTooltipTemplate","sharedTemplateContext","TooltipTemplatePoint","pointTemplateRef","hasParent","wrapPoints","defaultSeriesTooltipTemplate","mouseleaveSubscription","POPUP_CONTAINER","TooltipPopupComponent_ng_template_0_Template","TooltipPopupComponent_ng_template_2_Template","TooltipPopupComponent_ng_template_3_Template","ɵ0$3","CrosshairTooltipComponent","CrosshairTooltipComponent_ng_template_0_Template","AXES","CrosshairTooltipsContainerComponent","tooltipKeys","tooltipsMap","tooltipComponents","crossahirTooltipComponents","axisName","axisIndex","createCrosshairTooltips","newMap","mapTooltips","tooltips","axesCrosshairTooltipOptions","tooltipIdx","CrosshairTooltipsContainerComponent_kendo_chart_crosshair_tooltip_0_Template","ViewChildren","getTouch","domEvent","pageX","pageY","groupNames","eventGroups","gesturechange","gestureend","gesturestart","press","hammerInstance","eventHandlers","panstart","panmove","panend","pinchstart","pinchmove","pinchend","previousArgs","pointers","pointer","xLocation","yLocation","pointer1","pointer2","srcEvent","touches","initialDelta","startLocation","unbind","eventGroup","shouldBindGroup","nameIdx","toggleDrag","toggleZoom","recognizer","instanceRecognizer","dateValueAxisFormats","DateValueAxis","dateFormats","skeleton","weeks","months","DateCategoryAxis","DomEventsBuilder","HAMMER","Hammer","recognizers","Tap","Pan","Pinch","Press","DomEvents","ChartComponent","themeService","instanceEventService","changeDetector","resizeRateLimit","theme","suppressTransitions","hostClasses","refreshWait","canRender","chartMouseleave","domSubscriptions","setDirection","intlChange","rtlChange","autoResize","resizeTimeout","resize","redrawTimeout","createInstance","Chart","intlService","exportImage","exportVisual","exportSVG","findAxisByName","findPaneByIndex","findPaneByName","getPlotArea","toggleHighlight","instanceObserver","ChartInstanceObserver","LegendItemClickEvent","seriesComponents","onRender","getDonutCenterStyle","surface","onShowTooltip","crossahirTooltips","tooltipInstance","onHideTooltip","activeEmitter","requiresHandlers","names","updateDirection","setChartAreaSize","setOptions","tooltipMouseleave","hideElements","handlingTap","firstSeries","charts","_plotArea","firstPoint","sector","innerRadius","inZone","deferredRedraw","isRTL","noTransitionsRedraw","ɵngcc4","ChartComponent_div_5_Template","ɵngcc5","descendants","IntlService","AxisDefaultsComponentGenerated","majorTicks","minorTicks","narrowRange","pane","plotBands","AxisDefaultsComponent","AxisDefaultsCrosshairComponentGenerated","AxisDefaultsCrosshairComponent","AxisDefaultsCrosshairTooltipComponentGenerated","AxisDefaultsCrosshairTooltipComponent","AxisDefaultsLabelsComponentGenerated","mirror","AxisDefaultsLabelsComponent","AxisDefaultsTitleComponentGenerated","AxisDefaultsTitleComponent","CollectionComponent","processChanges","readItems","localeId","weekStartDay","firstDay","CategoryAxisItemComponentGenerated","autoBaseUnitSteps","baseUnit","baseUnitStep","justified","maxDateGroups","maxDivisions","roundToBaseUnit","CategoryAxisItemComponent","rangeLabels","CategoryAxisComponentGenerated","CategoryAxisComponent","CategoryAxisCrosshairComponentGenerated","CategoryAxisCrosshairComponent","CategoryAxisCrosshairTooltipComponentGenerated","CategoryAxisCrosshairTooltipComponent","CategoryAxisLabelsComponent","CategoryAxisRangeLabelsComponent","CategoryAxisNotesComponentGenerated","CategoryAxisNotesComponent","CategoryAxisNotesIconComponentGenerated","CategoryAxisNotesIconComponent","CategoryAxisNotesLabelComponentGenerated","CategoryAxisNotesLabelComponent","CategoryAxisSelectComponentGenerated","mousewheel","CategoryAxisSelectComponent","CategoryAxisTitleComponentGenerated","CategoryAxisTitleComponent","ChartAreaComponentGenerated","ChartAreaComponent","LegendComponentGenerated","LegendComponent","LegendInactiveItemsComponentGenerated","LegendInactiveItemsComponent","LegendItemComponentGenerated","cursor","LegendItemComponent","PaneComponentGenerated","clip","PaneComponent","PaneDefaultsComponent","PaneDefaultsTitleComponent","PanesComponentGenerated","PanesComponent","PanesTitleComponentGenerated","PanesTitleComponent","PlotAreaComponentGenerated","PlotAreaComponent","SeriesComponentGenerated","SeriesComponent","tooltipTemplateService","readTooltipTemplates","templates","SeriesDefaultsComponentGenerated","SeriesDefaultsComponent","SeriesDefaultsLabelsComponentGenerated","SeriesDefaultsLabelsComponent","SeriesDefaultsLabelsFromComponentGenerated","SeriesDefaultsLabelsFromComponent","SeriesDefaultsLabelsToComponentGenerated","SeriesDefaultsLabelsToComponent","SeriesDefaultsNotesComponentGenerated","SeriesDefaultsNotesComponent","SeriesDefaultsNotesIconComponentGenerated","SeriesDefaultsNotesIconComponent","SeriesDefaultsNotesLabelComponentGenerated","SeriesDefaultsNotesLabelComponent","SeriesDefaultsTooltipComponentGenerated","SeriesDefaultsTooltipComponent","SeriesErrorBarsComponentGenerated","endCaps","SeriesErrorBarsComponent","SeriesExtremesComponentGenerated","SeriesExtremesComponent","SeriesHighlightComponentGenerated","SeriesHighlightComponent","SeriesLabelsComponentGenerated","SeriesLabelsComponent","SeriesLabelsFromComponentGenerated","SeriesLabelsFromComponent","SeriesLabelsToComponentGenerated","SeriesLabelsToComponent","SeriesMarkersComponentGenerated","SeriesMarkersComponent","SeriesNotesComponentGenerated","SeriesNotesComponent","SeriesNotesIconComponentGenerated","SeriesNotesIconComponent","SeriesNotesLabelComponentGenerated","SeriesNotesLabelComponent","SeriesOutliersComponentGenerated","SeriesOutliersComponent","TitleComponentGenerated","TitleComponent","TooltipComponentGenerated","TooltipComponent","sharedTooltipTemplate","ValueAxisItemComponentGenerated","majorUnit","minorUnit","ValueAxisItemComponent","ValueAxisComponentGenerated","ValueAxisComponent","ValueAxisCrosshairComponentGenerated","ValueAxisCrosshairComponent","ValueAxisCrosshairTooltipComponentGenerated","ValueAxisCrosshairTooltipComponent","ValueAxisLabelsComponentGenerated","ValueAxisLabelsComponent","ValueAxisNotesComponentGenerated","ValueAxisNotesComponent","ValueAxisNotesIconComponentGenerated","ValueAxisNotesIconComponent","ValueAxisNotesLabelComponentGenerated","ValueAxisNotesLabelComponent","ValueAxisTitleComponentGenerated","ValueAxisTitleComponent","XAxisItemComponentGenerated","XAxisItemComponent","XAxisComponentGenerated","XAxisComponent","XAxisCrosshairComponentGenerated","XAxisCrosshairComponent","XAxisCrosshairTooltipComponentGenerated","XAxisCrosshairTooltipComponent","XAxisLabelsComponentGenerated","XAxisLabelsComponent","XAxisNotesComponentGenerated","XAxisNotesComponent","XAxisNotesIconComponentGenerated","XAxisNotesIconComponent","XAxisNotesLabelComponentGenerated","XAxisNotesLabelComponent","XAxisTitleComponentGenerated","XAxisTitleComponent","YAxisItemComponentGenerated","YAxisItemComponent","YAxisComponentGenerated","YAxisComponent","YAxisCrosshairComponentGenerated","YAxisCrosshairComponent","YAxisCrosshairTooltipComponentGenerated","YAxisCrosshairTooltipComponent","YAxisLabelsComponentGenerated","YAxisLabelsComponent","YAxisNotesComponentGenerated","YAxisNotesComponent","YAxisNotesIconComponentGenerated","YAxisNotesIconComponent","YAxisNotesLabelComponentGenerated","YAxisNotesLabelComponent","YAxisTitleComponentGenerated","YAxisTitleComponent","ZoomableComponentGenerated","ZoomableComponent","RootConfigurationService","ɵRootConfigurationService_BaseFactory","EVENT_MAP$1","navigatorFilter","StockInstanceEventService","ɵStockInstanceEventService_BaseFactory","NAVIGATOR_DEFAULTS","autoBindElements","liveDrag","partialRedraw","StockChartComponent","redrawSlaves","skipNavigatorRedraw","applyNavigatorDefaults","StockChart","applyOptions","bindCategories","PREFIX","PrefixConfigurationService","rootService","NavigatorComponent","hint","NavigatorCategoryAxisComponent","NavigatorCategoryAxisCrosshairComponent","NavigatorCategoryAxisCrosshairTooltipComponent","NavigatorCategoryAxisLabelsComponent","NavigatorCategoryAxisNotesComponent","NavigatorCategoryAxisNotesIconComponent","NavigatorCategoryAxisNotesLabelComponent","NavigatorCategoryAxisSelectComponent","NavigatorCategoryAxisTitleComponent","NavigatorHintComponent","NavigatorPaneComponent","NavigatorPaneTitleComponent","NavigatorSelectComponent","NavigatorSeriesItemComponent","NavigatorSeriesComponent","NavigatorSeriesErrorBarsComponent","NavigatorSeriesExtremesComponent","NavigatorSeriesHighlightComponent","NavigatorSeriesLabelsComponent","NavigatorSeriesLabelsFromComponent","NavigatorSeriesLabelsToComponent","NavigatorSeriesMarkersComponent","NavigatorSeriesNotesComponent","NavigatorSeriesNotesIconComponent","NavigatorSeriesNotesLabelComponent","NavigatorSeriesOutliersComponent","NavigatorSeriesTooltipComponent","SparklineComponent","tooltipWrapperClass","tooltipContentClasses","Sparkline","ChartModule","ResizeSensorModule","StockChartModule","SparklineModule","skipFirstChange","isFirstChange","anyChanged","random","DraggableDirective","enableDrag","kendoPress","kendoDrag","kendoRelease","toggleDraggable","destroyDraggable","draggable","Draggable","bindTo","DraggableModule","EventsOutsideAngularDirective","scope","resizeBatchService","acceptedSize","acceptSize","measure","lastWidth","lastHeight","checkChanges","schedule","checkSize","initSize","div","WRAP_STYLE","ResizeService","isScheduled","expand","shrink","expandChild","shrinkChild","EXPAND_CHILD_STYLE","HAS_OBSERVER","resizeObserver","ResizeBatchService","scheduled","ResizeSensorComponent","rateLimit","serviceType","ResizeObserverService","supported","ResizeCompatService","resizeService","Alt","ArrowDown","ArrowLeft","ArrowRight","ArrowUp","Backspace","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","Escape","F1","F2","F10","Home","KeyA","KeyB","KeyC","KeyD","KeyE","KeyF","KeyG","KeyH","KeyI","KeyJ","KeyK","KeyL","KeyM","KeyN","KeyO","KeyP","KeyQ","KeyR","KeyS","KeyT","KeyU","KeyV","KeyW","KeyX","KeyY","KeyZ","NumpadDecimal","PageDown","PageUp","Shift","xe","adjustDST","newDate","addDays","setDate","createDate","setFullYear","expected","lastDayOfMonth","getMilliseconds","addMonths","expectedMonth","setMonth","normalize","setYear","addYears","addDecades","addCenturies","normalizeYear","firstDecadeOfCentury","lastDecadeOfCentury","firstYearOfDecade","lastYearOfDecade","lastMonthOfYear","durationInCenturies","durationInDecades","addWeeks","firstDayOfMonth","Direction","Forward","Backward","dayOfWeek","weekDay","newDay","durationInMonths","firstMonthOfYear","durationInYears","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","calcWeekInYear","firstWeekInYear","diffInMS","prevDayOfWeek","moveDateToWeekStart","weekInYear","prevWeekDate","nextWeekDate","weekNumber","date_r2","navigationTitle","a2","NavigationComponent_li_4_ng_template_2_Template","NavigationComponent_li_4_ng_template_3_Template","index_r3","isRangeStart","activeViewValue","name_r5","colWidth","ViewListComponent_table_1_th_3_Template","weekNames","_r9","weekNumberCellClick","date_r7","cellUID","focusedDate","selectedDates","cellTemplateRef","weekNumberTemplateRef","_r4","handleNavigation","activeViewEnum","navigationItemTemplate","_r7","CalendarComponent_ng_container_1_kendo_calendar_navigation_1_Template","handleDateChange","handleCellClick","handleWeekNumberClick","handleActiveDateChange","tmp_3_0","navigation","activeCellTemplate","headerTitleTemplate","weekNumberTemplate","_r15","handleActiveViewChange","handleMultiViewCalendarValueChange","animateNavigation","monthCellTemplate","yearCellTemplate","decadeCellTemplate","centuryCellTemplate","disabledDates","_r5","arrowDirection","arrow","Up","handleButtonClick","Down","_c16","a3","a4","a5","a6","touchstart","dragstart","_c17","_c18","_c19","_c28","_r8","handleChange","mergeTime","DatePickerComponent_ng_template_9_ng_template_3_Template","calendarType","animateCalendarNavigation","cellTemplate","handleKeydown","_c29","_c44","handleReject","cancelButton","handleMousedown","handleCancel","_c73","_c74","focusin","_c75","_c76","transitionend","_c77","calendarValue","handleCalendarValueChange","DateTimePickerComponent_ng_template_9_button_16_Template","activeTab","preventMouseDown","handleKeyDown","handleBlur","changeActiveTab","handleBackTabOut","tabSwitchTransition","handleTabChangeTransitionEnd","calendarMin","calendarMax","disableCalendar","timeSelectorFormat","timeSelectorMin","timeSelectorMax","disableTimeSelector","handleTabOut","handleAccept","_c78","date_r5","getCaptionClass","getCaptionTitle","name_r11","HorizontalViewListComponent_ng_template_0_thead_2_th_2_Template","HorizontalViewListComponent_ng_template_0_caption_1_Template","HorizontalViewListComponent_ng_template_0_thead_2_Template","cellEnter","cellLeave","class_r6","showViewHeader","isMonthView","selectionRange","activeRangeEnd","_c79","HorizontalViewListComponent_2_ng_template_0_Template","_r0","nextAnimationDate","_c80","HorizontalViewListComponent_3_ng_template_0_Template","date_r18","HorizontalViewListComponent_4_ng_template_0_Template","prevAnimationDate","_c87","prevButtonClick","isPrevDisabled","prevButtonTitle","nextButtonClick","isNextDisabled","nextButtonTitle","_c88","colSpan","row_r4","getWeekNumber","_c89","cellContext","ViewComponent_tr_3_ng_template_1_td_0_ng_template_1_Template","ViewComponent_tr_3_ng_template_1_td_0_ng_template_2_Template","getWeekNumberContext","ViewComponent_tr_3_ng_template_1_td_0_Template","cell_r14","ViewComponent_tr_3_ng_container_2_td_1_3_ng_template_0_Template","ViewComponent_tr_3_ng_container_2_td_1_ng_template_2_Template","ViewComponent_tr_3_ng_container_2_td_1_3_Template","cellIndex_r15","rowIndex_r5","getStyles","tableCellIndex","isSelected","isRangeMid","isRangeEnd","ViewComponent_tr_3_ng_container_2_td_1_Template","shouldRenderCellContent","ViewComponent_tr_3_ng_template_1_Template","ViewComponent_tr_3_ng_container_2_Template","item_r1","_c90","_c91","_c92","_c93","_c106","handleNow","_c107","_r10","part_r4","idx_r5","dateFieldName","partStep","handleListFocus","pattern","TimeSelectorComponent_ng_template_7_div_0_Template","TimeSelectorComponent_ng_template_7_div_1_Template","TimeSelectorComponent_div_8_button_1_Template","TimeSelectorComponent_div_8_button_2_Template","setButton","Action","Left","Right","PrevView","NextView","FirstInView","LastInView","LowerView","UpperView","EMPTY_SELECTIONRANGE","MIDNIGHT_DATE","MIN_DATE","MAX_DATE","MIN_TIME","MAX_TIME","requiresZoneOnBlur","ngControl","currentFocusTarget","blurArgs","isSet","setTime","normalizeTimes","candidateValue","setYears","isInRange","isInTimeRange","isValidRange","dateInRange","getToday","noop","isWindowAvailable","shiftWeekNames","domContainerFactory","hasChange","hasExistingValue","isInSelectionRange","either","value1","value2","clampRange","isEqualRange","initial","updated","initialStart","initialEnd","updatedStart","updatedEnd","areDatesEqual","mergeDateAndTime","lastMillisecondOfDate","EMPTY_DATA","ACTIONS","CenturyViewService","dateRange","addToDate","datesList","isActiveView","viewDate","lastDate","rowOffset","baseDate","cellOffset","cellDate","nextCentury","isWeekend","isRangeSplitEnd","isRangeSplitStart","isToday","cellTitle","isInArray","aboveMin","belowMax","beginningOfPeriod","lastDayOfPeriod","decade","modifier","rowLength","viewsCount","viewsInRange","EMPTY_DATA$1","ACTIONS$1","DecadeViewService","nextDecade","EMPTY_DATA$2","ACTIONS$2","MonthViewService","_intlService","isDateDisabled","firstMonthDate","firstMonthDay","lastMonthDate","lastMonthDay","cellDay","otherMonth","isOtherMonth","lowerBound","upperBound","formatDate","abbrMonthNames","wideMonthNames","prependCell","weekendRange","dateFormatNames","nameType","EMPTY_DATA$3","ACTIONS$3","upStep","downStep","YearViewService","changedYear","CalendarViewEnum","century","services","BusViewService","viewChanged","configure","moveDown","moveUp","moveToBottom","canMoveDown","canMoveUp","clamp","viewOffset","td","th","tbody","thead","table","repeat","mapper","scrollable","navigationList","ɵ6","navElement","viewFactory","renderWeekHeader","viewElement","getScrollable","monthView","yearView","decadeView","getBody","CalendarDOMService","ensureHeights","calendarHeight","calculateHeights","hostContainer","batch","monthViewHeight","headerHeight","scrollableContentHeight","calendarWidth","monthViewWidth","scrollableContentWidth","yearViewHeight","scrollableYearContentHeight","yearViewWidth","decadeViewHeight","centuryViewHeight","decadeViewWidth","centuryViewWidth","navigationItemHeight","viewHeight","viewType","viewDimension","viewWidth","viewProp","hostClone","cloneNode","appendedContent","rowHeight","detailRowHeight","heights","rowIndex","expandDetail","updateRowHeight","collapseDetail","totalHeight","scrollObservable","firstLoaded","bottomOffset","topOffset","rowHeightService","lastLoaded","lastScroll","ReplaySubject","offsetBufferRows","rowsForHeight","skipWithOffset","ScrollAction","PageAction","scrollSubscription","onScroll","scrollPosition","offsetSize","up","firstItemIndex","lastItemIndex","nonVisibleBuffer","SCROLLER_FACTORY_TOKEN","observable","ScrollerService","ScrollDirection","scrollModifiers","scrollNormalizers","scrollValidators","VirtualizationComponent","scrollerFactory","itemHeight","itemWidth","maxScrollDifference","scrollOffsetSize","scrollDuration","activeIndexChange","scrollChange","wrapperClasses","dispatcher","scroller","horizontalClass","totalVertexLength","totalSize","containerOffsetSize","getContainerProperty","containerScrollSize","containerScrollPosition","initServices","createRowHeightService","containerScrollSubscription","scroll$","emitActiveIndex","animationSubscription","activeIndex","itemOffset","isIndexVisible","containerTop","containerBottom","isListScrolled","scrollToIndex","scrollToBottom","animateToIndex","indexOffset","getContainerScrollDirection","scrollRange","scrollStep","modifyScroll","normalizeScroll","isScrollValid","animationFrameScheduler","scan","takeWhile","containerScroll","maxScroll","containerMaxScroll","staticOffset","differenceToScroll","EMPTY","RowHeightService","lastActiveIndex","DEFAULT_SCROLLER_FACTORY","closestInScope","predicate","NavigationComponent","bus","indexToScroll","getComponentClass","maxViewHeight","intlSubscription","totalChanged","getTake","virtualization","NavigationComponent_li_4_Template","KForOf","ViewListComponent","activeDateChange","todayButtonClick","cols","minViewsToRender","showWeekNumbers","getComponentMonthClass","getComponentYearClass","getComponentDecadeClass","getComponentCenturyClass","getWeekNames","getBottomOffset","activeViewChanged","generateDates","isEqualMonthYear","activeDate","updateIndex","setActiveDate","isScrolled","getScrollableHeight","headerTitleTemplateRef","ViewListComponent_table_1_Template","ViewListComponent_col_6_Template","ViewListComponent_tbody_7_Template","HeaderComponent","ViewComponent","KEY_TO_ACTION","metaKey","noop$1","DisabledDatesService","initialize","isNumberArray","disabledWeekDays","isDateArray","normalizedDisabledDates","notifyInvalidInput","notifyServiceChange","SelectionService","performSelection","modifiers","selectionMode","rangePivot","isDateSelected","shiftKey","sortDates","ScrollSyncService","magnitude","divideByMagnitude","powerByMagnitude","sync","navScrolled","monthScrolled","navSubscription","scrollSiblingOf","viewSubscription","scrolledElement","siblingComponent","calculateScroll","scrollableElement","CellTemplateDirective","MonthCellTemplateDirective","YearCellTemplateDirective","DecadeCellTemplateDirective","CenturyCellTemplateDirective","WeekNumberCellTemplateDirective","HeaderTitleTemplateDirective","NavigationItemTemplateDirective","PickerService","sameDateSelected","dateCompletenessChange","minValidator","minError","maxValidator","maxError","VALUE_DOC_LINK","virtualizationProp","CALENDAR_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","CalendarComponent","CALENDAR_RANGE_VALIDATORS","NG_VALIDATORS","KENDO_INPUT_PROVIDER","KendoInput","scrollSyncService","disabledDatesService","selectionService","pickerService","rangeValidation","activeViewDateChange","_min","_max","_focusedDate","onControlChange","onControlTouched","onValidatorChange","minValidateFn","maxValidateFn","syncNavigation","setClasses","activeViewDate","lastDayInPeriod","emitNavigate","setAriaActivedescendant","_value","verifyValue","lastSelected","_disabledDates","monthCellTemplateRef","yearCellTemplateRef","decadeCellTemplateRef","centuryCellTemplateRef","navigationItemTemplateRef","bottomViewEnum","topViewEnum","widgetId","widgetRole","calendarTabIndex","viewChangeSubscription","NgControl","bindEvents","verifyChanges","navigationView","unbindCallback","pageChangeSubscription","focusTarget","canNavigateDown","availableDates","emitSameDate","parseSelectionToValue","registerOnTouched","setDisabledState","registerOnValidatorChange","handleComponentClick","emitBlur","emitFocus","arrowKeyPressed","focusedCellId","selectionModifiers","i18n_4","i18n_6","CalendarComponent_ng_container_1_Template","CalendarComponent_ng_container_2_Template","CalendarLocalizedMessagesDirective","MultiViewCalendarComponent","MultiViewCalendarCustomMessagesComponent","incompleteDateValidator","incomplete","incompleteDate","DateInputComponent_1","Arrow","DATE_PART_REGEXP","TIME_PART_REGEXP","SHORT_PATTERN_LENGTH_REGEXP","unpadZero","symbols","formatPlaceholder","twoDigitYearMax","leadingZero","monthNames","typedMonthPart","knownParts","E","allFormatedMonths","dayPeriods","allDayPeriods","sampleFormat","dateFormatString","setExisting","hasValue","splitDateFormat","getExisting","shouldNormalizeCentury","part","getDateObject","getTextAndFormat","symbol","modifyPart","normalizeCentury","parsePart","currentChar","resetSegmentValue","resetLeadingZero","switchToNext","dateParts","baseFormat","replaced","currentMaxLength","parsedDate","matchMonth","dayPeriod","matchDayPeriod","isZeroCurrentChar","valueNumber","isAbbrMonth","partMap","incrementLeadingZero","middle","middleNumber","parseDate","monthNumber","patternValue","partPattern","peekDate","patternLength","patternSatisfied","hasLeadingZero","setLeadingZero","twoDigitYear","centuryBase","getNormalizedCenturyBase","peekValue","typedChar","monthAsNum","lowerChart","am","dateFormatParts","test","partLength","Mask","resultText","resultFormat","currentSymbol","DateInputComponent","focusableId","ariaReadOnly","incompleteDateValidation","isPopupOpen","hasPopup","valueUpdate","formatSections","hasMousedown","focusedPriorToMousedown","isDateIncomplete","backspace","incompleteValidator","kendoDate","paste","symbolsMap","dateSymbolMap","updateFormatSections","inputElement","dateInput","inputValue","inputFormat","displayFormat","verifyRange","isEqualToKendoDate","getKendoDate","updateElementValue","triggerChange","selectDateSegment","modifyDateSegmentValue","caret","millisecond","msDigits","millisecondDigitsInFormat","putDateInRange","updateIncompleteValidationStatus","switchDateSegment","selectNearestSegment","previousFormatSymbol","handleClick","selectionPresent","selectionStart","selectionEnd","placeholderToggled","handleDragAndDrop","KendoDate","map$$1","texts","showPlaceholder","isPosition","setSelectionRange","updateOnPaste","mousewheelHandler","handleMouseWheel","handleInput","wheelDelta","moved","oldTextOrigin","oldFormat","newTextOrigin","oldIndex","oldTextSeparator","oldText","newText","deletedSymbol","approximateStringMatching","navigationOnly","switchPart","parsedPart","i18n_12","i18n_14","DateInputComponent_span_5_Template","DateInputLocalizedMessagesDirective","TOUCH_ENABLED","disabledDatesValidator","disabledDate","DatePickerComponent_1","touchEnabled$$1","touchEnabled","readOnlyInput","disabledDatesValidation","popupUID","disabledDatesValidateFn","pickerSubscriptions","handleSameSelection","handleDateCompletenessChange","inputRole","windowBlurSubscription","handleIconClick","focusInput","handleInputChange","toggleFocus","handleWindowBlur","currentTarget","blurComponent","i18n_20","i18n_22","i18n_24","i18n_26","DatePickerComponent_ng_template_9_Template","DatePickerLocalizedMessagesDirective","CalendarCustomMessagesComponent","TimePickerComponent_1","formatRegExp","TimePickerComponent","timeRangeValidateFn","_steps","timeSelector","timeRangeError","timeRangeValidator","verifyFormat","normalizeTime","DateTimePickerComponent_1","i18n_30","i18n_32","i18n_34","i18n_36","i18n_38","i18n_40","i18n_42","TimePickerComponent_ng_template_7_Template","U","TimePickerLocalizedMessagesDirective","TimeSelectorComponent","TimeSelectorCustomMessagesComponent","timeFormatRegExp","DEFAULT_ACTIVE_TAB","DateTimePickerComponent","_format","_tabindex","_defaultTab","_isActive","Subscription","setCalendarValue","getDisplayFormat","getTimeSelectorFormat","defaultTab","activeTabComponent","detectPopupChanges","verifyMinMaxRange","closePopup","runInZone","shouldOpen","switchFocus","focusTargetInComponent","isNgControlUntouched","dateTimeSelector","handleValueChange","handleInputValueChange","setTimeSelectorMinMax","focusableSiblingAvailable","nextElementSibling","timeFormatPartFilter","previousPart","focusInPopup","focusInWrapper","selectedDate","minDateSelected","maxDateSelected","isInCalendarRange","i18n_45","i18n_47","i18n_49","i18n_51","i18n_53","i18n_55","i18n_57","i18n_59","i18n_61","i18n_63","i18n_65","i18n_67","i18n_69","i18n_71","DateTimePickerComponent_ng_template_9_Template","WeekNamesService","includeWeekNumber","HorizontalViewListComponent","weekService","views","initService","clampDate","viewsHasChanged","isInDates","setTableMinWidth","animateView","initialContainerWidth","tabRect","containerGap","oncancel","onfinish","isListInRange","canNavigate","containerWidth","HorizontalViewListComponent_ng_template_0_Template","HorizontalViewListComponent_2_Template","HorizontalViewListComponent_3_Template","HorizontalViewListComponent_4_Template","noop$2","VALUE_DOC_LINK$5","RANGE_CALENDAR_VALUE_ACCESSOR","RANGE_CALENDAR_RANGE_VALIDATORS","disabledDatesRangeValidation","isHovered","prevView","nextView","disabledDatesRangeValidateFn","range$$1","_selectionRange","ariaActivedescendant","handleMouseEnter","handleMouseLeave","isSameView","viewList","updateButtonState","selectedRange","disabledDatesInRange","disabledDatesRangeValidator","sameDates","handleTodayButtonClick","isBottomView","navigateView","emitCellEvent","i18n_81","i18n_83","i18n_85","tmp_11_0","MultiViewCalendarLocalizedMessagesDirective","DateRangePopupTemplateDirective","cmp","DateRangeService","activeRangeEnd$","focusedDate$","endInput$","startInput$","dateRangePopup$","range$","activatePopup","dateRangePopup","deactivatePopup","cancelPopup","hasActiveComponent","isPopup","isStart","isEnd","hasActiveContent","registerStartInput","startInput","registerEndInput","endInput","registerPopup","setActiveRangeEnd","activeRange","setFocusedDate","setRange","DateRangePopupComponent","dateRangeService","calendarSubscriptions","popupSubscriptions","_calendar","subscribeFocusBlur","contentCalendar","viewCalendar","activateSubscription","blurSubscription","addPopupSubscriptions","_appendTo","contentTemplate","defaultTemplate","RTL","DateRangePopupComponent_ng_template_2_Template","DateRangeSelectionDirective","DateRangeComponent","showDefault","hasContentPopup","contentPopup","DateRangeComponent_kendo_daterange_popup_1_Template","navigateCalendarOnFocus","isActiveEnd","popupCalendarActivated","getRange","updateRange","focusActiveDate","toggleActiveClass","initPopup","updateInputValue","unsubscribePopup","correctOn","DateRangeEndInputDirective","DateRangeInput","rangeService","autoCorrectOn","DateRangeStartInputDirective","activeRangeEndChange","selectionRangeChange","isEqualCalendarRange","updateFocusedDate","calendarRange","addSubscriptions","handleHover","rangeEnd","acceptAndEmit","shouldAutoCorrect","activeEnd","hasCompleteRange","kForOf","even","odd","_template","_differs","_differ","kForTemplate","kForTrackBy","getTypeNameForDebugging","ngDoCheck","_applyChanges","viewContainerLength","dataLength","tuples","forEachOperation","record","KForOfContext","IterableDiffers","todayAvailable","rangeLength","showNavigationButtons","l10nChange","setTodayAvailability","todayMessage","getTitle","handleTodayClick","nextDate","isTodayInRange","HeaderComponent_ng_template_1_Template","HeaderComponent_ng_template_2_Template","HeaderComponent_button_5_Template","HeaderComponent_button_8_Template","disabledDatesChange","currentCellIndex","unsubscribeCallback","cellCtx","rowCtx","firstWeekDateContext","cls","stringifyClassObject","cellIndex","week","cellMouseoverHandler","mouseLeaveHandler","clickHandler","closestCell","cellByIndex","emitCellLeave","viewIndex","ViewComponent_ng_template_0_Template","ViewComponent_tr_2_Template","ViewComponent_tr_3_Template","CalendarCommonModule","TemplatesModule","MultiViewCalendarLocalizedMessagesDirective_1","MultiViewCalendarCustomMessagesComponent_1","IntlModule","CalendarMessages","ɵCalendarMessages_BaseFactory","CalendarLocalizedMessagesDirective_1","CalendarCustomMessagesComponent_1","VirtualizationModule","CalendarModule","CalendarsModule","DateInputMessages","ɵDateInputMessages_BaseFactory","decrement","increment","DateInputLocalizedMessagesDirective_1","DateInputCustomMessagesComponent_1","DateInputCustomMessagesComponent","DateInputModule","DatePickerMessages","ɵDatePickerMessages_BaseFactory","DatePickerLocalizedMessagesDirective_1","DatePickerCustomMessagesComponent_1","DatePickerCustomMessagesComponent","ɵ0$e","COMPONENT_MODULES","div$1","ul$1","li$1","TIMELIST_WRAPPER","TimePickerDOMService","timeListHeight","HOURS_IN_DAY","distanceFromMin","borderValue","barrier","limitDown","limitUp","HoursService","boundRange","insertUndividedMax","toListItem","getHour","stepper","countFromMin","addMissing","isRangeChanged","limitRange","last$$1","isLastMissing","missing","isMissing","selectedIndex","divideByStep","valueInList","lastHour","missingItem","clamp$1","MINUTES_IN_HOUR","distanceFromMin$1","limit$1","limitDown$1","limitUp$1","MinutesService","getMinute","stepper$1","lastMinute","clamp$2","SECONDS_IN_HOUR","distanceFromMin$2","limit$2","limitDown$2","limitUp$2","SecondsService","getSecond","stepper$2","lastSecond","clamp$3","MILLISECONDS_IN_SECOND","distanceFromMin$3","limit$3","limitDown$3","limitUp$3","MillisecondsService","getMillisecond","stepper$3","lastMillisecond","setHours$1","isAM","inRange","inReverseRange","DayPeriodService","hourAM","candidateAM","normalizedRange","isPM","minHour","maxHour","nil","getters","services$1","TimeListComponent","componentClass","serviceSettings","hasMissingValue","textHasChanged","listHeight","topThreshold","bottomThreshold","scrollOnce","handleItemClick","valueIndex","scrollUp","moveToNext","isPreviousMissing","isCurrentMissing","oldData","newData","TimeListComponent_li_2_Template","isEqualTillMinute","isEqualTillSecond","defaultGetters","getter","minGetter","isEqualTillMillisecond","generateGetters","getterByPart","convertToObject","generateSnappers","mod","snapValue","snappersFactory","valueMerger","listReducer","all","valueReject","showNowButton","_activeListIndex","timeInRange","snapTime","activeListIndex","timeListWrappers","listWrapper","listIndex","focusedWrapper","timeLists","mergeValue","snappers","hasSteps","focusList","hasActiveButton","accept","partIndex","listIdx","partIdx","i18n_94","i18n_96","i18n_98","i18n_100","i18n_102","i18n_104","TimeSelectorComponent_button_4_Template","TimeSelectorComponent_ng_template_7_Template","TimeSelectorComponent_div_8_Template","TimeSelectorLocalizedMessagesDirective","TimePickerMessages","ɵTimePickerMessages_BaseFactory","acceptLabel","cancelLabel","nowLabel","TimePickerLocalizedMessagesDirective_1","TimePickerCustomMessagesComponent_1","TimePickerCustomMessagesComponent","TimeSelectorLocalizedMessagesDirective_1","TimeSelectorCustomMessagesComponent_1","COMPONENT_MODULES$1","Messages$1","ɵMessages$1_BaseFactory","dateTab","dateTabLabel","timeTab","timeTabLabel","DateTimePickerCustomMessagesComponent_1","DateTimePickerCustomMessagesComponent","ɵ0$p","DateTimePickerModule","COMPONENT_MODULES$2","gn","gi","action_r4","DialogActionsComponent_ng_container_1_button_1_Template","actions","DialogActionsComponent_2_ng_template_0_Template","titleId","DialogComponent_7_ng_template_0_Template","actionsLayout","WindowTitleBarComponent_1_ng_template_0_Template","titleBarTemplate","minimizeButtonTitle","maximizeButtonTitle","restoreButtonTitle","WindowComponent_div_4_2_ng_template_0_Template","WindowComponent_div_4_ng_content_1_Template","WindowComponent_div_4_2_Template","keepContent","WindowComponent_ng_template_5_div_0_Template","resizeDirections","DialogActionsComponent","buttonGroupClassName","actionTemplate","DialogActionsComponent_ng_content_0_Template","DialogActionsComponent_ng_container_1_Template","DialogActionsComponent_2_Template","DIALOG_LOCALIZATION_SERVICE","TitleBarLocalizationService","messageService","dialogLocalization","shortKey","DialogTitleBarComponent","onStable","toClassList","focusableRegex","space","ctrl","down","DIALOG_ELEMENTS_HANDLING_ESC_KEY","hasClasses","namesList","isFocusable","checkVisibility","validTabIndex","focusable","isVisible","setHTMLAttributes","attributes","parseCSSClassNames","parseObjectClassNames","parseStringClassNames","parseArrayClassNames","currentClassName","splitStringToArray","classesArray","focusableSelector","RESIZE_DIRECTIONS","OFFSET_STYLES","createValueWithUnit","DialogComponent","_elRef","contentId","generateTitleId","generateContentId","htmlAttributes","tIndex","_htmlAttributes","setServiceClasses","_cssClass","onComponentKeydown","DialogCloseResult","handleActionButtonFocus","keepFocusWithinComponent","bubble","titlebarContent","handleInitialFocus","titlebarView","actionsView","prevValue","primaryButton","autoFocusedElement","initiallyFocusedElement","shouldFocusPrimary","focusableActionButtons","getAllFocusableChildren","firstFocusable","lastFocusable","getFirstAndLastFocusable","shiftTabAfterFirstFocusable","maxWidth","minHeight","maxHeight","i18n_3","DialogComponent_kendo_dialog_titlebar_3_Template","DialogComponent_ng_content_4_Template","DialogComponent_ng_content_6_Template","DialogComponent_7_Template","DialogComponent_ng_content_8_Template","DialogComponent_kendo_dialog_actions_9_Template","DialogContentBase","dialogTitleBar","dialogActions","DialogContainerService_1","DialogContainerService","getDialogRef","parentInjector","notFoundValue","DialogRef","DialogService","containerService","initializeDialog","dialogRef","contentFrom","apiClose","preventAction","dialogRefParameter","isNotComponent","share","hasContentTitle","hasContentActions","multipleTitles","multipleActions","titleNodes","actionNodes","DialogInjector","newZIndex","DEFAULT_OPTIONS","resizable","createMoveStream","ev","mouseDown","takeUntil","originalX","originalY","DragResizeService","resizeStart","resizeEnd","lastAction","dragSubscription","state$$1","restoreOptions","onDrag","startPosition","dragStarted","isTouch","currentPosition","ensureWidth","handleDrag","startOffsetAndPosition","resizeStarted","currentOffsetAndPosition","handleResize","old","newWidth","newHeight","newTop","newLeft","style$$1","restoreAction","storeOptions","maximizeAction","maximizeState","wnd","windowViewPort","minimizeAction","minimizeState","applyManualState","clearHeight","closeAction","windowOffset","scroll","positionWithScroll","getDocumentElement","setRestoreOption","nextPossibleZIndex","nextZIndex","getWindowViewPort","ResizeHandleDirective","hostClass","setDisplay","Host","WindowTitleBarComponent","dragDirective","isDraggable","subscribeDrag","subscribeStateChange","unsubscribeDrag","unsubscribeState","titleBar","stateSubscription","touchAction","WindowTitleBarComponent_ng_content_0_Template","WindowTitleBarComponent_1_Template","handleArrow","handleEscape","handleStateChange","offset$$1","WindowComponent","widthChange","heightChange","topChange","leftChange","draged","resized","windowSubscription","setOption","restoreTitle","maximizeTitle","minimizeTitle","setNextZIndex","setInitialOffset","titleBarContent","titleBarView","isTruthy","updateAllOffset","bringToFront","setDimension","setOffset","showDefaultTitleBar","styleMinWidth","styleMinHeight","stylePosition","wrapperMaximizedClass","wrapperMinimizedClass","onComponentFocus","onComponentBlur","currentZIndex","viewPort","resizeHandles","i18n_10","WindowComponent_kendo_window_titlebar_2_Template","WindowComponent_ng_content_3_Template","WindowComponent_div_4_Template","WindowComponent_ng_template_5_Template","WindowMinimizeActionDirective","WindowMaximizeActionDirective","WindowRestoreActionDirective","WindowCloseActionDirective","_service","buttonType","WindowContainerService_1","WindowContainerService","getWindowRef","WindowService","windowRef","WindowCloseResult","preventClose","windowRefParameter","isNotComponent$1","WindowInjector","CustomMessagesComponent_1","CustomMessagesComponent","WindowModule","yt","ListComponent_div_0_1_ng_template_0_Template","fixedGroupTemplate","currentGroup","boxSizing","ListComponent_div_0_1_Template","ListComponent_div_0_ng_template_2_Template","virtual","_r18","itemIndex_r12","onCheckedChange","ListComponent_5_ng_template_0_2_ng_template_0_Template","dataItem_r11","_c8","ListComponent_5_ng_template_0_label_1_Template","ListComponent_5_ng_template_0_2_Template","ListComponent_5_ng_template_0_ng_template_3_Template","checkboxes","startFrom","multipleSelection","optionPrefix","ListComponent_5_ng_template_0_Template","ListComponent_6_ng_template_0_li_0_1_ng_template_0_Template","dataItem_r24","groupTemplate","ListComponent_6_ng_template_0_li_0_1_Template","ListComponent_6_ng_template_0_li_0_ng_template_2_Template","ListComponent_6_ng_template_0_li_1_1_ng_template_0_Template","ctx_r34","ListComponent_6_ng_template_0_li_1_1_Template","ListComponent_6_ng_template_0_li_1_ng_template_2_Template","ctx_r27","offsetIndex","ListComponent_6_ng_template_0_li_0_Template","ListComponent_6_ng_template_0_li_1_Template","ListComponent_6_ng_template_0_Template","_r41","listResize","_r44","scrollHeight","_c9","_c12","_c13","clearValue","clearButtonVisiblity","clearTitle","AutoCompleteComponent_ng_template_5_0_ng_template_0_Template","headerTemplate","noDataText","AutoCompleteComponent_ng_template_5_div_3_ng_template_1_Template","AutoCompleteComponent_ng_template_5_div_3_ng_template_2_Template","AutoCompleteComponent_ng_template_5_4_ng_template_0_Template","footerTemplate","_r19","AutoCompleteComponent_ng_template_5_0_Template","AutoCompleteComponent_ng_template_5_div_3_Template","AutoCompleteComponent_ng_template_5_4_Template","listBoxId","_r21","_c20","_c25","preventEventDefault","ComboBoxComponent_ng_template_9_0_ng_template_0_Template","ComboBoxComponent_ng_template_9_div_3_ng_template_1_Template","ComboBoxComponent_ng_template_9_div_3_ng_template_2_Template","ComboBoxComponent_ng_template_9_4_ng_template_0_Template","ComboBoxComponent_ng_template_9_0_Template","ComboBoxComponent_ng_template_9_div_3_Template","ComboBoxComponent_ng_template_9_4_Template","_c26","DropDownListComponent_4_ng_template_0_Template","valueTemplate","_r17","stopImmediatePropagation","handleFilter","onFilterFocus","blurFilterInput","ariaOwns","noDataLabel","isDisabledDefaultItem","getDefaultItemText","DropDownListComponent_ng_template_8_ng_template_2_ng_template_1_Template","defaultItem","DropDownListComponent_ng_template_8_3_ng_template_0_Template","DropDownListComponent_ng_template_8_div_6_ng_template_1_Template","DropDownListComponent_ng_template_8_div_6_ng_template_2_Template","DropDownListComponent_ng_template_8_7_ng_template_0_Template","_r28","DropDownListComponent_ng_template_8_ng_template_0_Template","DropDownListComponent_ng_template_8_ng_template_1_Template","DropDownListComponent_ng_template_8_ng_template_2_Template","DropDownListComponent_ng_template_8_3_Template","DropDownListComponent_ng_template_8_div_6_Template","DropDownListComponent_ng_template_8_7_Template","_r30","clearAll","MultiSelectComponent_ng_template_8_0_ng_template_0_Template","MultiSelectComponent_ng_template_8_div_1_2_ng_template_0_Template","customItemTemplate","MultiSelectComponent_ng_template_8_div_1_2_Template","MultiSelectComponent_ng_template_8_div_1_ng_template_3_Template","MultiSelectComponent_ng_template_8_div_4_ng_template_1_Template","MultiSelectComponent_ng_template_8_div_4_ng_template_2_Template","MultiSelectComponent_ng_template_8_5_ng_template_0_Template","_r24","MultiSelectComponent_ng_template_8_0_Template","MultiSelectComponent_ng_template_8_div_1_Template","MultiSelectComponent_ng_template_8_div_4_Template","MultiSelectComponent_ng_template_8_5_Template","allowCustom","_r26","_c34","MultiColumnComboBoxComponent_ng_template_9_0_ng_template_0_Template","column_r20","MultiColumnComboBoxComponent_ng_template_9_ng_container_6_col_1_Template","matchesMedia","column_r23","_c39","MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_ng_template_0_Template","MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_ng_container_1_Template","MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_Template","headerClass","MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_Template","column_r33","dataItem_r31","textFrom","_c40","MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_ng_template_0_Template","MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_ng_container_1_Template","MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_Template","MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_Template","MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_Template","ctx_r44","MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_1_Template","MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_2_Template","MultiColumnComboBoxComponent_ng_template_9_ng_container_15_ng_template_2_Template","_r47","MultiColumnComboBoxComponent_ng_template_9_0_Template","MultiColumnComboBoxComponent_ng_template_9_ng_container_6_Template","MultiColumnComboBoxComponent_ng_template_9_ng_container_9_Template","MultiColumnComboBoxComponent_ng_template_9_ng_template_10_Template","_r11","updateHeaderPadding","MultiColumnComboBoxComponent_ng_template_9_div_14_Template","MultiColumnComboBoxComponent_ng_template_9_ng_container_15_Template","_r14","_r50","_c41","_c42","DropDownTreeComponent_4_ng_template_0_Template","messageFor","_c47","handleFilterInputChange","DropDownTreeComponent_ng_template_9_1_ng_template_0_Template","nodeExpand","nodeCollapse","selectBy","loadOnDemand","isNodeExpanded","nodeTemplate","isNodeVisible","DropDownTreeComponent_ng_template_9_3_ng_template_0_Template","DropDownTreeComponent_ng_template_9_div_4_ng_template_1_Template","DropDownTreeComponent_ng_template_9_div_4_ng_template_2_Template","DropDownTreeComponent_ng_template_9_span_0_Template","DropDownTreeComponent_ng_template_9_1_Template","DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template","DropDownTreeComponent_ng_template_9_3_Template","DropDownTreeComponent_ng_template_9_div_4_Template","allNodesHidden","_c48","MultiSelectTreeComponent_ng_template_7_1_ng_template_0_Template","_r23","handleCheckedItemsChange","toggleCheckAll","_r12","checkedItems","MultiSelectTreeComponent_ng_template_7_5_ng_template_0_Template","MultiSelectTreeComponent_ng_template_7_div_6_ng_template_1_Template","MultiSelectTreeComponent_ng_template_7_div_6_ng_template_2_Template","_c55","_r31","MultiSelectTreeComponent_ng_template_7_span_0_Template","MultiSelectTreeComponent_ng_template_7_1_Template","MultiSelectTreeComponent_ng_template_7_div_2_Template","handleNodeClick","MultiSelectTreeComponent_ng_template_7_5_Template","MultiSelectTreeComponent_ng_template_7_div_6_Template","checkAll","checkableSettings","_c56","TagListComponent_li_1_1_ng_template_0_Template","TagListComponent_li_1_ng_template_2_1_ng_template_0_Template","tag_r1","TagListComponent_li_1_ng_template_2_1_Template","TagListComponent_li_1_ng_template_2_ng_template_2_Template","TagListComponent_li_1_ng_template_4_1_ng_template_0_Template","tagProp","TagListComponent_li_1_ng_template_4_1_Template","TagListComponent_li_1_ng_template_4_ng_template_2_Template","_c57","_r20","TagListComponent_li_1_1_Template","TagListComponent_li_1_ng_template_2_Template","TagListComponent_li_1_ng_template_4_Template","restoredCtx","deleteTag","isTagDisabled","itemId","tagAriaHidden","tags","isGroupTag","guid$1","isEmptyString","isObjectArray","selectedIndices","extractedValues","getter$1","valueFrom","matchText","word","ignoreCase","temp","hasProps","isUntouched","matcher","msMatchesSelector","webkitMatchesSelector","parseNumber","inDropDown","getHierarchicalItemLevel","fetchDescendentNodes","lookup","filterExpression","descendent","valueLevel","normalizedLevel","SearchBarComponent","onNavigate","searchBarClass","_userInput","_previousValue","_placeholder","userInput","setInputSize","previousUserInput","suggestedText","caretIndex","caretAtEnd","writeInputValue","combineStr","setInputSelection","Qe","lengthOf","placeholderLength","textLength","tagListId","activeDescendant","ItemTemplateDirective","HeaderTemplateDirective","FooterTemplateDirective","GroupTemplateDirective","FixedGroupTemplateDirective","getTotal","indices","added","resetSelection","DataService","grouped","groupIndices","isGrouped","getGroupIndices","_flatData","flatten","itemsCount","closestGroup","itemAt","flatIndex","groupAt","groupField","itemGroup","DisabledItemsService","dataService","isIndexDisabled","isItemDisabled","disabledItemsService","home","W","ce","NavigationEvent","nextIndex","In","clampIndex","firstFocusableIndex","NoDataTemplateDirective","ListItemDirective","listClass","lastScrollTop","scrollToFocused","selectSubscription","scrollToItem","overflowY","hasVirtualScrollbar","setOverflow","prefetchData","findCurrentGroup","positionItems","checked","firstVisibleItem","elementFromPoint","visibleItems","prevPage","firstGroupHeaderInTargetedPage","contentScrollTop","itemOffsetTop","contentOffsetHeight","bottomDistance","hasScrollbar","hasVirtualScroll","virtualContainer","ListComponent_div_0_Template","ListComponent_5_Template","ListComponent_6_Template","ListComponent_kendo_resize_sensor_7_Template","ListComponent_div_8_Template","SelectableDirective","DEFAULTS","normalizeVirtualizationSettings","defaultOverrides","defaults","AutoCompleteComponent_1","AUTOCOMPLETE_VALUE_ACCESSOR","AutoCompleteComponent","highlightFirst","onChangeCallback","onTouchedCallback","popupMouseDownHandler","valueChangeSubject","subscribeTouchEvents","wrapperOffsetWidth","popupHeight","listContainerClasses","containerClasses","suggestion","hasMatch","shouldSuggest","suggest","backspacePressed","triggerPopupEvents","_virtualSettings","setMessages","messagesTimeout","focusItemAt","searchbar","popupWrapper","emitChange","findIndexPredicate","handleNavigate","handleEnter","searchBarChange","currentTextLength","exactMatch","insensitiveMatch","valueHasChanged","valueChangeSubscription","changeSubscription","handleItemChange","handleItemFocus","enterSubscription","escSubscription","touchstartDisposeHandler","horizontalAlign","optionsList","popupClose","maxIndex","itemText","FilterableComponent","i18n_16","AutoCompleteComponent_span_3_Template","AutoCompleteComponent_span_4_Template","AutoCompleteComponent_ng_template_5_Template","AutoCompleteComponent_ng_template_7_Template","MultiSelectTreeMessages","ComboBoxComponent_1","COMBOBOX_VALUE_ACCESSOR","ComboBoxComponent","valueNormalizer","defaultVirtualItemHeight","defaultVirtualPageSize","_filtering","_text","customValueSubject","valueSubject","clearValueSubject","subs","isPrimitive","_valuePrimitive","clearable","popupWidth","attachStreams","createValueStream","attachSelectClickHandler","valueStream","clearFilter","customValueStreams","thisArg","not","partition","throttleTime","allowCustomValueStream","custom","disableCustomValueStream","clearValueStream","valueSubscription","merged","emitValueChange","handleNavigationOpen","selectClickDisposeHandler","clearState","textEmpty","valueEmpty","_previousDataItem","buttonClasses","resolved","findDataItem","getSuggestion","hasSelected","hasFocused","previousText","focusedItemText","useSuggestion","unresolvedSelection","currentText","lowerCaseMatch","restoreItemFocus","isCustom","selectClick","focusedDataItem","isInDropDown","i18n_21","i18n_23","ComboBoxComponent_span_5_Template","ComboBoxComponent_ng_template_9_Template","ComboBoxComponent_ng_template_11_Template","ValueTemplateDirective","DropDownListComponent_1","DROPDOWNLIST_VALUE_ACCESSOR","DropDownListComponent","filterFocused","filterBlurred","wrapperFocused","wrapperBlurred","selectionSubscription","widgetTabIndex","providedTabIndex","ariaExpanded","focusComponent","firstIndex","isFilterFocused","focusedItemNotSelected","onKeyPress","localizationChangesSubscription","assignAriaDescribedBy","itemFromEvent","shouldUsePrevious","shouldUseNewValue","skipWhile","filterBlurredSubscription","concatMap","componentBlur","currentOrDefault","which","character","typingTimeout","selectNext","isInLoop","sameCharsOnly","splitIndex","shuffleData","loopMatch","nextMatch","primitive","ofSameType","trimmed","valueLabelId","i18n_27","DropDownListComponent_4_Template","DropDownListComponent_ng_template_5_Template","DropDownListComponent_ng_template_8_Template","DropDownListComponent_ng_template_10_Template","FilterInputDirective","CustomItemTemplateDirective","TagTemplateDirective","GroupTagTemplateDirective","MultiSelectComponent_1","MULTISELECT_VALUE_ACCESSOR","MultiSelectComponent","differs","tagPrefix","focusedTagIndex","autoClose","tagMapper","matchingValue","removeTag","_checkboxes","selectedDataItems","observableSubscriptions","onSearchBarFocus","onSearchBarBlur","wrapperMousedown","differ","valueChangeDetected","checkOnClick","focusedListIndex","addCustomValue","customValues","validateComplexValues","resolveValuesInArray","resolveAllValues","resolveDataItemFromTags","disabledIndices","disabledItemsMapper","searchTextAndFocus","navigateInput","handleBackspace","handleRemoveTag","RemoveTagEvent","removeGroupTag","removeSingleTag","_item","createCustomValueStream","onTagMapperChange","isTagFocused","handleClose","handleUp","handleHome","handleEnd","handleDelete","handleRightKey","handleLeftKey","handleDownKey","customValueSubscription","dataItems","dataItemValues","isDataItemDisabled","nextTick","customItem","startsFrom","tagTemplate","groupTagTemplate","MultiSelectComponent_span_6_Template","MultiSelectComponent_span_7_Template","MultiSelectComponent_ng_template_8_Template","MultiSelectComponent_ng_template_10_Template","TagListComponent","KeyValueDiffers","SCROLLBAR_WIDTH","ColumnCellTemplateDirective","ColumnHeaderTemplateDirective","ComboBoxColumnComponent","media","scrollbarWidth","MultiColumnComboBoxComponent_1","MultiColumnComboBoxComponent","removeWindowResizeListener","allColumnsWidthsSet","initialRowWidht","totalWidth","getRowWidthFromColumnsMeta","updateColumnsMediaState","addWindowResizeListener","headerPaddingPosition","matchMedia","i18n_35","i18n_37","MultiColumnComboBoxComponent_span_5_Template","MultiColumnComboBoxComponent_ng_template_9_Template","MultiColumnComboBoxComponent_kendo_resize_sensor_11_Template","NodeTemplateDirective","DropDownTreeComponent_1","DEFAULT_POPUP_SETTINGS","fetchChildren","DropDownTreeComponent","filterStateChange","treeview","_treeview","isExpanded","collapse","togglePrevented","itemLookup","popupContainerClasses","valueDepth","getField","shouldUpdateValue","term","fieldsCount","filterInput","MultiSelectTreeComponent_1","DataBoundComponent","ExpandableComponent","i18n_43","DropDownTreeComponent_4_Template","DropDownTreeComponent_ng_template_5_Template","DropDownTreeComponent_span_6_Template","DropDownTreeComponent_ng_template_9_Template","ɵngcc6","TreeViewComponent","DEFAULT_POPUP_SETTINGS$1","DEFAULT_CHECKABLE_SETTINGS","checkChildren","hasChildren$1","fetchChildren$1","itemDisabled$1","isNodeVisible$1","MultiSelectTreeComponent","checkBy","_checkableSettings","_dataItems","focusedTagId","isTreeViewActive","isWrapperActive","isFilterActive","isCheckAllActive","checkAllInput","lastNodeOnFocus","sameState","removeTreeViewFromTabOrder","updateValue","handleTagMapperChange","setTags","_depth","isEveryDataItemObject","handleTabKey","handleUpKey","isFirstNodeActive","MultiSelectTreeComponent_span_4_Template","MultiSelectTreeComponent_span_5_Template","MultiSelectTreeComponent_span_6_Template","MultiSelectTreeComponent_ng_template_7_Template","CheckAllDirective","CheckDirective","propField","getPropField","positionIndex","_tag","TagListComponent_li_1_Template","checkAllText","SharedDirectivesModule","focusedClassName","selectedClassName","BaseCheckDirective","addItem","isItemChecked","checkedKeys","updateItems","treeView","checkedItemsChange","handleCheckedChange","getCheckedState","checkable","toggleCheckOnClick","unsubscribeClick","isItemIndeterminate","checkNode","checkParents","clickSubscription","nodeClick","pendingCheck","shouldCheck","currentParent","currentCheckedState","currentIndeterminateState","isIndeterminate","_node","someChecked","allChecked","DropDownTreesModule","AutoCompleteModule","ɵ0$4","ɵ0$5","Qr","Sn","textForWithPrefix","iframeOnLoad","_c110","_c112","dataItem_r2","FormatDropDownListComponent_ng_template_2_span_1_Template","FormatDropDownListComponent_ng_template_2_span_2_Template","FormatDropDownListComponent_ng_template_2_span_3_Template","FormatDropDownListComponent_ng_template_2_span_4_Template","FormatDropDownListComponent_ng_template_2_span_5_Template","FormatDropDownListComponent_ng_template_2_span_6_Template","FormatDropDownListComponent_ng_template_2_span_7_Template","FormatDropDownListComponent_ng_template_2_span_8_Template","FormatDropDownListComponent_ng_template_2_span_9_Template","_c113","_c114","_c115","fontName","_c116","_c117","_c118","_c119","onValueChange","openDialog","_c121","_c122","_c124","_c126","handleActiveColorClick","onOpen","onClose","paletteSettings","_c127","_c128","onCellClick","onTableWizardClick","_r3","i_r1","exclude","attr","getAttributes","serializeDOMAttrs","commonAttributes","createDefaultAttributes","isSchemaNode","schemaNodeName","isTable","isTableBody","isTableHead","isTableFoot","isTableRow","isTableCell","isTableHeaderCell","createSemanticNode","hasAttrs","semanticNodes","removeEmptyEntries","removeEntries","isNullOrUndefined","safeString","splitter","getUniqueStyleValues","hasNodesWithoutMarks","uniqueMarkValues","filter$1","cssStyleValues","conditionallyExecute","setCellAttrs","nodeAttributes","rowspan","je","tableNodes","tableRole","isolating","table_row","table_cell","table_header","table_body","table_foot","table_head","table_col","atom","table_colgroup","marks$1","nodes$1","blockquote","readFromCache","addToCache","cachePos","freshColWidth","colwidth","tableNode","RangeError","hasRowSpan","childCount","rowNode","rowWidth","prevRow","findWidth","mapPos","problems","colWidths","cellNode","colW","widthIndex","nodeSize","expectedPos","tableMap","TableMap","badWidths","seen","nodeAt","findBadColWidths","computeMap","findCell","curPos","Rect","colCount","nextCell","rectBetween","leftA","rightA","topA","bottomA","leftB","rightB","topB","bottomB","cellsInRect","positionAt","rowStart","rowEnd","rowEndIndex","Selection","$anchorCell","$headCell","anchorRect","headRect","CellSelection","json","anchorCell","headCell","ranges","SelectionRange","$from","$to","pointsAtCell","inSameTable","tableChanged","isRowSelection","rowSelection","isColSelection","colSelection","TextSelection","rowContent","cellRect","extraLeft","extraRight","removeColSpan","$o","createAndFill","setAttr","Fragment","fragment","Slice","mapFrom","sel","setSelection","forEachCell","anchorTop","headTop","nodeAfter","anchorLeft","headLeft","eq","getBookmark","CellBookmark","spec","findParentNodeClosestToPos","$pos","isInTable","$head","cellAround","selectedRect","NodeSelection","$anchor","nodeBefore","lastChild","cellNear","selectionCell","tableStart","tableNodeTypes","cached","addColSpan","isCellEmpty","isTextblock","$a","$b","addTableGroupColumn","mainTable","requiredGroup","refColumn","tableChildNode","childNode","setNodeMarkup","removeTableGroupColumn","resolvedPos","removeColumn","addColumnBefore$1","tHeadTr","tBodyTr","addColumnAfter$1","theadTr","addRow","rowPos","refRow","headerCell","header_cell","rowIsHeader","addRowBefore$1","addRowAfter$1","deleteColumn$1","deleteTable$1","removeRow","nextRow","newPos","deleteRow$1","deleteTableElement","mergeCells$1","indexTop","indexLeft","indexBottom","indexRight","cellsOverlapRectangle","mergedPos","mergedCell","cellPos","mapped","splitCell$1","nodeTypes","getCellType","cellWrapping","baseAttrs","lastCell","splitCellWithType","scrollIntoView","alignRemove","alignBlocks","alignRemoveRules","editorCommands","bold","applyToWord","expandToWordWrap","toggleInlineFormat","cleanFormatting","createLink","applyLink","mark","applyInlineStyle","insertFile","insertText","italic","strikethrough","subscript","superscript","underline","unlink","removeLink","foreColor","backColor","selectAll","alignCenter","isAligned","alignCenterRules","alignJustify","alignJustifyRules","alignLeft","alignLeftRules","alignRight","alignRightRules","formatAttr","formatBlockElements","getHTML","indent","insertOrderedList","toggleOrderedList","insertUnorderedList","toggleUnorderedList","outdent","redo","setHTML","parseOptions","setHtml","undo","insertTable","newTable","nodes$$1","tableRows","addColumnBefore","addColumnAfter","addRowBefore","addRowAfter","deleteRow","deleteColumn","mergeCells","splitCell","deleteTable","initialToolBarState","viewSource","disabledToolBarState","EditorLocalizationService","_rtl","SourceDialogComponent","textarea","onCancelAction","onConfirmAction","textFor","ImageDialogComponent","imageData","srcInputId","altTextInputId","widthInputId","heightInputId","srcInput","getNodeFromSelection","normalizeDimension","FileLinkDialogComponent","linkForm","hrefInput","linkData","titleText","linkMark","getMark","setLinkText","expandSelection","getSelectionText","$cursor","cursorNodeIndex","FileLinkDialogComponent_ng_container_24_Template","tablesStyles","EditorToolsService","needsCheck","EditorComponent_1","defaultPasteCleanupSettings","convertMsLists","removeAttributes","removeHtmlComments","removeInvalidHTML","removeMsClasses","removeMsStyles","stripTags","removeCommentsIf","removeComments","removeInvalidHTMLIf","dialogService","toolsService","preserveWhitespace","valueModified","_readonly","afterViewInit","contentAreaLoaded","zip","_view","contentWindow","win","focusedNode","getSelection","focusNode","removeAllRanges","toolbar","_schema","plugins","_plugins","resizableClass","isReadonly","isIE","ua","msie","trident","detectIE","resizableOptions","defaultToolbarComponent","userToolBarComponent","selectionText","normalizeSize","commandName","dialogName","dialogContainer","dialogContent","focusChangedProgrammatically","_styleObserver","currentSchema","that","containerNativeElement","contentNode","parseContent","iframeDoc","PluginKey","hasMark","activeNode","canIndentAsListItem","list_item","canBeIndented","indentRules","hasNode","ordered_list","bullet_list","canOutdentAsListItem","outdentRules","getActiveMarks","extendedState","getToolbarState","filterTransaction","keymap","buildListKeymap","buildKeymap","baseKeymap","gapCursor","imageResizing","EditorState","viewMountElement","EditorView","mount","editable","dispatchTransaction","hasSameMarkup","transformPastedHTML","pasteCleanupSettings","clean","fns","sanitizeStyleAttr","sanitizeClassAttr","getPasteCleanupAttributes","pasteCleanup","contentAreaClasslist","shouldEmitFocus","userToolBarElement","defaultToolbar","MutationObserver","normalizeProperties","attributeFilter","pixelWidth","pixelHeight","isMinProp","isMaxProp","isWidthProp","Os","ToolBarComponent","i18n_18","i18n_28","i18n_44","i18n_46","i18n_48","i18n_50","i18n_52","i18n_54","i18n_56","i18n_58","i18n_60","i18n_62","i18n_64","i18n_66","i18n_68","i18n_70","i18n_72","i18n_74","i18n_76","i18n_78","i18n_80","i18n_82","i18n_84","i18n_86","i18n_88","i18n_90","i18n_92","i18n_106","i18n_108","EditorComponent_kendo_toolbar_2_Template","EditorComponent_div_3_Template","EditorComponent_div_4_Template","EditorBoldButtonDirective","EditorItalicButtonDirective","EditorUnderlineButtonDirective","EditorFormatComponent","EditorAlignLeftButtonDirective","EditorAlignCenterButtonDirective","EditorAlignRightButtonDirective","EditorAlignJustifyButtonDirective","EditorInsertUnorderedListButtonDirective","EditorInsertOrderedListButtonDirective","EditorIndentButtonDirective","EditorOutdentButtonDirective","EditorCreateLinkButtonDirective","EditorUnlinkButtonDirective","EditorInsertImageButtonDirective","FormatDropDownListComponent","dropDownList","FormatDropDownListComponent_ng_template_2_Template","ɵngcc7","DropDownToolDirective","FormatDialogComponent","formatDropDownList","ColorPickerDialogComponent","colorPicker","preventOpen","editorCommand","ColorPickerComponent","ɵngcc8","FontFamilyDropDownListComponent","FontFamilyDropDownListComponent_ng_template_2_Template","FontFamilyDialogComponent","fontFamilyDropDownList","InsertTableDialogComponent","PopupTableGridComponent","EditorFormatComponent_1","ToolBarToolComponent","formatItems","itemArgs","overflows","dialogSettings","canFocus","formatButton","handleKey","toolbarTemplate","EditorFormatComponent_ng_template_0_Template","EditorFormatComponent_ng_template_2_Template","FontSizeDropDownListComponent","FontSizeDialogComponent","fontSizeDropDownList","EditorFontSizeComponent_1","EditorFontSizeComponent","fontSizeButton","EditorFontFamilyComponent_1","EditorFontSizeComponent_ng_template_0_Template","EditorFontSizeComponent_ng_template_2_Template","EditorFontFamilyComponent","fonts","fontFamilyButton","EditorColorPickerComponent_1","EditorFontFamilyComponent_ng_template_0_Template","EditorFontFamilyComponent_ng_template_2_Template","EditorColorPickerComponent","picker","valueCache","colorPickerButton","EditorInsertTableButtonComponent_1","EditorColorPickerComponent_ng_template_0_Template","EditorColorPickerComponent_ng_template_2_Template","EditorInsertTableButtonComponent","buttonBlurred","cellClicked","getButton","popupGridTemplate","overflowElement","ɵngcc9","EditorInsertTableButtonComponent_ng_template_0_Template","EditorInsertTableButtonComponent_ng_template_2_Template","EditorInsertTableButtonComponent_ng_template_4_Template","tableWizardClick","resetState","openTableWizard","PopupTableGridComponent_span_1_Template","commandIcons","EditorCommandBase","showText","showIcon","toolbarOptions","onStateChange","pointerdown","pointerdownHandler","_toolBarState","toolBarState","EditorCommandButton","ToolBarButtonComponent","EditorRedoButtonDirective","EditorUndoButtonDirective","EditorCommandDialog","EditorViewSourceButtonDirective","EditorStrikethroughButtonDirective","EditorSubscriptButtonDirective","EditorSuperscriptButtonDirective","EditorForeColorDirective","EditorBackColorDirective","EditorCleanFormattingButtonDirective","EditorAddColumnBeforeButtonDirective","EditorAddColumnAfterButtonDirective","EditorAddRowBeforeButtonDirective","EditorAddRowAfterButtonDirective","EditorDeleteColumnButtonDirective","EditorDeleteRowButtonDirective","EditorDeleteTableButtonDirective","dialogApply","dialogCancel","dialogInsert","dialogUpdate","fileText","fileTitle","fileWebAddress","imageAltText","imageWebAddress","linkOpenInNewWindow","linkText","linkTitle","linkWebAddress","hostEl","ColorPickerModule","Xr","ft","userImplementation","compile","FIELD_REGEX","getterCache","UNDEFINED","indexAccessor","external","support","base64","string","nodebuffer","nodestream","arraybuffer","uint8array","_keyStr","subarray","fromCharCodeSupportsTypedArrays","getTypeOf","canUseApply","stringifyByChunk","resultStr","stringifyByChar","applyFromCharCode","arrayLikeToString","arrayFrom","arrayTo","identity","stringToArrayLike","arrayLikeToArrayLike","transformTo","outputType","checkSupport","inputType","MAX_VALUE_16BITS","pretty","prepareContent","isBinary","isOptimizedBinaryString","isBase64","chr1","chr2","chr3","enc1","enc2","enc3","enc4","resultIndex","string2binary","streamInfo","generatedError","extraStreamInfo","isPaused","isFinished","isLocked","cleanUp","registerPrevious","mergeStreamInfo","processChunk","resume","withError","withStreamInfo","lock","me","utf8len","_utf8len","utf8encode","buf","m_pos","str_len","buf_len","Rn","string2buf","utf8decode","c_len","utf16buf","buf2string","GenericWorker","leftOver","previousData","nextBoundary","utf8border","usableData","destType","helper","updateCallback","chunkType","_internalType","resultType","_outputType","_mimeType","newBlob","remainingBytes","Vr","transformZipOutput","worker","internalType","_worker","ConvertWorker","accumulate","updateCb","freeze","binary","createFolders","compression","compressionOptions","unixPermissions","dosPermissions","dataP","dataIsReady","_tickScheduled","_tickAndRepeat","_tick","propName","makeTable","crc","crc32","crc32str","crc32wrapper","compressedSize","uncompressedSize","compressedContent","getContentWorker","DataWorker","uncompressWorker","DataLengthProbe","data_length","getCompressedWorker","uncompressedWorker","Crc32Probe","compressWorker","_dataBinary","internalStream","askUnicodeString","_decompressWorker","isUnicodeString","Utf8EncodeWorker","Utf8DecodeWorker","StreamHelper","onUpdate","_compressWorker","CompressedObject","magic","createWorkerFrom","arrayType","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","_createPako","Deflate","Inflate","onData","compressions","STORE","DEFLATE","FlateWorker","LOCAL_FILE_HEADER","CENTRAL_FILE_HEADER","CENTRAL_DIRECTORY_END","ZIP64_CENTRAL_DIRECTORY_END","decToHex","dec","generateZipParts","streamedContent","streamingEnded","encodeFileName","dosTime","dosDate","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","isDir","generateUnixExternalFileAttr","generateDosExternalFileAttr","getUTCSeconds","fileRecord","dirRecord","streamFiles","bytesWritten","zipComment","zipPlatform","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","currentFilePercent","remainingFiles","openedSource","closedSource","localDirLength","dirEnd","centralDirLength","generateCentralDirectoryEnd","prepareNextSource","sources","zero","checkOffset","checkIndex","setIndex","byteAt","readInt","lastIndexOfSignature","sig","readAndCheckSignature","readDate","dostime","DataReader","sig0","sig1","sig2","sig3","ArrayReader","Uint8ArrayReader","StringReader","loadOptions","isEncrypted","bitFlag","useUTF8","readLocalPart","localExtraFieldsLength","fileNameLength","compressionMethod","findCompression","decompressed","readCentralPart","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","localHeaderOffset","readExtraFields","parseZIP64ExtraField","fileComment","processAttributes","madeBy","fileNameStr","extraReader","readerFor","extraFieldId","extraFieldLength","extraFieldValue","handleUTF8","decodeParamType","fileCommentStr","upath","findExtraFieldUnicodePath","fileNameByteArray","decodeFileName","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","checkSignature","expectedSignature","signature","isSignature","askedIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","readCentralDir","ZipEntry","zip64","readEndOfCentral","endOfCentralDirOffset","expectedEndOfCentralDirOffset","extraBytes","prepareReader","zipEntry","checkCRC32","optimizedBinaryString","zipEntries","ZipEntries","promises","checkEntryCRC32","fileAdd","originalOptions","forceTrailingSlash","parentFolder","folderAdd","zipObjectContent","ZipObject","lastSlash","createFolders$1","newObj","JSZip","relativePath","isRegExp","regexp","folder","newFolder","ret","kids","generate","generateInternalStream","zipFileWorker","ZipFileWorker","fileCompression","zipCompression","compressionName","getCompression","generateWorker","generateAsync","loadAsync","BASE_DATE","dateToJulianDays","MIME_TYPE","DATA_URL_PREFIX","DATA_URL_OPTIONS","BLOB_OPTIONS","ARRAYBUFFER_OPTIONS","thing","parseJSON","XMLHEAD","RELS","DRAWINGS_RELS_XML","rels","foreach","rId","colIndex","numChar","frozenRows","freezePane","rowSplit","px","sharedStrings","_strings","_styles","_borders","_validations","_comments","_drawings","drawings","_hyperlinks","hyperlinks","relsToXML","comments","sheetIndex","ESC","WORKSHEET_RELS","toXML","mergedCells","rowData","rowsByIndex","indexRows","_source","sortByIndex","fillCells","inflate","_readCells","autoFilter","filterRowIndex","validations","defaultCellStyleId","defaultCellStyle","_lookupStyle","lastRow","_getLastRow","lastCol","_getLastCol","frozenColumns","showGridLines","legacyDrawing","drawing","skipCustomHeight","columnWidth","toWidth","ci","columnIndex","toHeight","formula","writeFormula","spreadsheetFilters","sqref","showErrorMessage","allowBlank","showDropDown","errorTitle","formula1","formula2","WORKSHEET","colSplit","commentsXML","COMMENTS_XML","drawingsXML","images","drw","parseRef","topLeftCell","colOffset","pixelsToExcel","imageId","LEGACY_DRAWING","_lookupString","indexes","uniqueCount","_lookupBorder","cellData","_cell","EMPTY_CELL","defStyle","borderId","displayValue","stripFunnyChars","Ds","hh","mm","packTime","serial","packDate","dateToSerial","cellName","validation","_addValidation","MAP_EXCEL_TYPE","MAP_EXCEL_OPERATOR","comparerType","allowNulls","showButton","messageTemplate","titleTemplate","countData","greaterThanOrEqualTo","lessThanOrEqualTo","number","defaultFormats","t0","$0","$1","_images","_imgId","_sheets","Worksheet","imageFilename","toZIP","createZip","docProps","lastModifiedBy","created","CORE","sheetCount","sheet","APP","xl","xlRels","WORKBOOK_RELS","sheetIds","filterNames","userNames","localSheetId","quoteSheet","WORKBOOK","sheetName","$ref","localName","worksheets","drawingsRels","sheetRels","commentFiles","drawingFiles","sheetXML","relsXML","hasFont","fontInPt","fontInPx","convertFontSize","convertColor","formats","fills","fi","borderTemplate","fontId","fillId","numFmtId","verticalAlign","STYLES","SHARED_STRINGS","CONTENT_TYPES","toDataURI","borderStyle","borderSideTemplate","topLeft","bottomRight","rowSpan","getrow","upperStr","getcol","insertCell","topLeftRef","spanCell","pushUnique","insertCellAt","appendCell","SPREADSHEET_CUSTOM_FILTER","criteria","customOperator","customValue","SPREADSHEET_DYNAMIC_FILTER","dynamicFilterType","SPREADSHEET_TOP_FILTER","SPREADSHEET_VALUE_FILTER","blanks","generators","SPREADSHEET_FILTERS","gte","lte","ne","doesnotstartwith","doesnotendwith","doesnotcontain","doesnotmatch","quarter1","quarter2","quarter3","quarter4","january","february","march","april","may","june","july","august","september","october","november","december","compileTemplate","updateContext","embeddedView","rootNodes","rootNode","updateGroupHeaderContext","aggregates","updateGroupFooterContext","updateFooterContext","destroyColumns","headerCellOptions","cellOptions","groupHeaderCellOptions","groupFooterCellOptions","footerCellOptions","groupFooterTemplate","groupHeaderTemplate","groupHeaderColumnTemplate","workbookOptions","sourceColumns","exporterColumns","addColumns","exporterColumn","ExporterColumn","toExporterColumns","_trimColumns","allColumns","_leafColumns","_prepareColumn","_visibleColumns","hasGroups","hierarchy","hasGroupHeaderColumn","collapsible","_columns","_hierarchyRows","_rows","_freezePane","TemplateService","defaultGroupHeaderTemplate","_createPaddingCells","createArray","paddingCellOptions","_dataRow","_groupHeaderCells","_dataRows","_footer","dataCells","cellIdx","itemLevel","defaultItemId","hasFooter","_hasFooterTemplate","parents","previousItemId","previousLevel","_hierarchyFooterRows","_hierarchyFooter","parentId","_prependHeaderRows","currentLevel","footer","templateData","_isColumnVisible","exportable","excel","_headerRow","firstCell","headerPaddingCellOptions","_prepareHeaderRows","parentCell","parentRow","childRow","totalColSpan","_headerDepth","ColumnBase","ExcelExportComponent","saveFile","save","exportData","currentData","getExportData","dataURL","forceProxy","proxyURL","GroupHeaderTemplateDirective","GroupHeaderColumnTemplateDirective","GroupFooterTemplateDirective","ColumnComponent_1","ColumnComponent","ColumnGroupComponent_1","SkipSelf","ExcelExportModule","pointerColor","rangePlaceholder","textColor","rangePlaceholderColor","ArcGaugeModule","LinearGaugeModule","RadialGaugeModule","CircularGaugeModule","LabelDirective","labelClass","getFocusableComponent","isUploadComponent","labelFor","for","HTMLElement","isInputElement","inputElementHasAttr","setAriaLabelledby","clickListener","labelTarget","labelElement","FloatingLabelModule","LabelComponent","wrappedNativeInput","getWrappedNativeInput","kendoInput","labelDirective","LabelComponent_span_3_Template","LabelModule","notifyPageChange","navigable","pagerTemplate","pageable","groupableEmptyText","lockedWidth","lockedLeafColumns","detailTemplate","lockedColumns","totalColumnLevels","showGroupPanel","columnMenuOptions","columnMenuTemplate","leafColumns","columnsContainer","unlockedWidth","_c138","GridComponent_ng_template_7_div_0_div_1_Template","GridComponent_ng_template_7_div_0_div_7_Template","headerPadding","nonLockedWidth","virtualColumns","headerLeafColumns","headerColumns","ariaRowCount","GridComponent_ng_template_7_div_2_div_1_Template","nonLockedLeafColumns","GridComponent_ng_template_7_div_0_Template","notifyScrollBottom","contentScroll","GridComponent_ng_template_7_div_2_Template","hideHeader","totalCount","trackBy","noRecordsTemplate","rowClass","rowSticky","isVirtual","loadingTemplate","marqueeSelection","showFooter","visibleColumns","GridComponent_ng_template_8_thead_2_Template","GridComponent_ng_template_8_tfoot_4_Template","GridComponent_ng_template_8_div_5_Template","showGroupFooters","_c139","_c140","_c141","_c142","_c143","DOMMouseScroll","lockedKeydown","lockedScroll","lockedMousewheel","_c144","column_r4","columnIndex_r5","sticky","addStickyStyles","filterClass","logicalRowIndex","lockedColumnsCount","filterLabel","_c145","FilterCellComponent_ng_template_0_ng_container_2_1_ng_template_0_Template","filterCellTemplateRef","FilterCellComponent_ng_template_0_ng_container_2_1_Template","FilterCellComponent_ng_template_0_ng_container_1_Template","FilterCellComponent_ng_template_0_ng_container_2_Template","hasTemplate","_c146","_c147","_c148","dropdownKeydown","operators","_c149","_c150","ColGroupComponent_ng_template_0_col_0_Template","ColGroupComponent_ng_template_0_col_1_Template","ColGroupComponent_ng_template_0_col_2_Template","columnsToRender","_c151","onInnerFocusIn","focusTrapTabIndex","pageSizes","PagerComponent_ng_container_2_kendo_pager_prev_buttons_1_Template","PagerComponent_ng_container_2_kendo_pager_numeric_buttons_2_Template","PagerComponent_ng_container_2_kendo_pager_input_3_Template","PagerComponent_ng_container_2_kendo_pager_next_buttons_4_Template","PagerComponent_ng_container_2_kendo_pager_info_5_Template","PagerComponent_ng_container_2_kendo_pager_page_sizes_6_Template","previousNext","resizeHandler","_c152","_c153","_c154","_c155","_c156","_c157","_c158","pageLabel","_c159","num_r6","_c160","num_r10","_c161","_c162","_c163","_c164","GroupHeaderComponent_ng_template_0_td_0_Template","prefixGroupCell","groupTitle","formatForGroup","_c165","_c166","a7","toggleGroup","GroupHeaderComponent_td_1_ng_template_2_ng_template_1_Template","GroupHeaderComponent_td_1_ng_template_2_ng_template_2_Template","GroupHeaderComponent_td_1_ng_template_2_Template","skipGroupDecoration","logicalColSpan","groupSpan","ariaRole","_c167","column_r11","groupHeaderColumnTemplateRef","GroupHeaderComponent_ng_container_2_td_1_ng_container_1_Template","index_r12","GroupHeaderComponent_ng_container_2_td_1_Template","groupHeaderColumns","_c168","lastTarget","_c169","_c170","directionChange","group_r3","index_r4","groupTitles","_c171","_c172","_c173","_c174","_c175","columnMenuTemplateRef","hasLock","hasStick","expandedPosition","expandedColumns","_r16","expandedFilter","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_sort_1_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_lock_2_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_stick_3_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_position_4_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_chooser_5_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_filter_6_Template","hasSort","hasPosition","hasColumnChooser","hasFilter","_c176","_c177","levelIndex_r4","column_r10","columnMenu","displayTitle","_c178","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_kendo_grid_filter_menu_0_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_kendo_grid_column_menu_1_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_ng_template_2_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_ng_template_3_Template","showFilterMenu","isFilterable","showColumnMenu","headerTemplateRef","leafIndex","sortOrder","_r39","_r27","onSortClick","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_ng_template_3_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_ng_template_4_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_span_6_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_kendo_grid_filter_menu_8_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_kendo_grid_column_menu_9_Template","sortIcon","sortableLabel","showSortNumbering","sortStatus","selectAllCheckboxId","selectAllCheckboxLabel","_c179","lastColumn","ctx_r42","onHeaderKeydown","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_3_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_span_4_Template","columnIndex_r11","last_r12","isFirstOnRow","logicalColumnIndex","shouldActivate","sortState","isSortable","isCheckboxColumn","showSelectAll","ctx_r50","_c180","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_kendo_grid_column_menu_1_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_ng_template_2_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_ng_template_3_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_span_4_Template","ctx_r54","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_Template","isColumnGroupComponent","HeaderComponent_ng_template_0_tr_0_th_1_Template","HeaderComponent_ng_template_0_tr_0_th_2_Template","HeaderComponent_ng_template_0_tr_0_ng_template_3_Template","unlockedColumnsCount","columnsForLevel","trackByIndex","HeaderComponent_ng_template_0_tr_0_Template","HeaderComponent_ng_template_0_tr_1_Template","columnLevels","showFilterRow","_c181","_c182","childService","childFilter","menuTabbingService","FilterMenuContainerComponent_ng_container_4_1_ng_template_0_Template","filterMenuTemplateRef","FilterMenuContainerComponent_ng_container_4_1_Template","logicChange","filterMenuDropDownLabel","logicOperators","secondFilter","_r2","onShiftTab","columnLabel","idPrefix","radioId","_c183","column_r2","cancelChanges","onTab","applyChanges","actionsClass","resetText","applyText","onApply","autoSync","allowHideAll","contentState","showStick","ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template","ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template","showLock","_c184","TableBodyComponent_ng_template_0_ng_template_1_td_0_Template","addRowLogicalIndex","column_r9","columnIndex_r10","newDataItem","addStickyColumnStyles","logicalColIndex","TableBodyComponent_ng_template_0_ng_template_1_Template","TableBodyComponent_ng_template_0_td_2_Template","TableBodyComponent_ng_template_0_td_3_Template","trackByColumns","noRecordsText","_c185","TableBodyComponent_tr_1_ng_template_2_Template","TableBodyComponent_tr_1_ng_container_3_Template","item_r13","rowIndex_r14","totalColumnsCount","groupHeaderSlaveCellsCount","TableBodyComponent_ng_template_2_tr_1_ng_template_1_td_0_Template","toggleRow","detailButtonStyles","detailButtonTitle","TableBodyComponent_ng_template_2_tr_1_td_2_a_1_Template","column_r31","columnIndex_r32","isSelectable","isEditingCell","cellSelectionService","isCellSelected","isAriaSelected","_c186","TableBodyComponent_ng_template_2_tr_1_ng_template_1_Template","TableBodyComponent_ng_template_2_tr_1_td_2_Template","TableBodyComponent_ng_template_2_tr_1_td_3_Template","isOdd","isEditingRow","isRowSelected","_c187","TableBodyComponent_ng_template_2_tr_2_td_1_Template","TableBodyComponent_ng_template_2_tr_2_ng_template_4_Template","allColumnsSpan","columnsSpan","TableBodyComponent_ng_template_2_tr_3_ng_template_1_td_0_Template","_c188","TableBodyComponent_ng_template_2_tr_3_td_3_ng_template_1_Template","column_r45","groupFooterTemplateRef","TableBodyComponent_ng_template_2_tr_3_ng_template_1_Template","TableBodyComponent_ng_template_2_tr_3_td_2_Template","TableBodyComponent_ng_template_2_tr_3_td_3_Template","footerColumns","TableBodyComponent_ng_template_2_tr_0_Template","TableBodyComponent_ng_template_2_tr_1_Template","TableBodyComponent_ng_template_2_tr_2_Template","TableBodyComponent_ng_template_2_tr_3_Template","isGroup","isParentGroupExpanded","showGroupHeader","isDataItem","isDataItemInExpandedGroup","isFooter","isFooterItemInExpandedGroup","hideFooter","_r51","_c189","childColumn_r10","CellComponent_ng_container_1_ng_container_1_ng_template_2_ng_template_0_Template","childColumns","selectionCheckboxId","selectionCheckboxLabel","CellComponent_ng_container_1_ng_container_1_ng_template_1_Template","CellComponent_ng_container_1_ng_container_1_ng_template_2_Template","CellComponent_ng_container_1_ng_container_1_ng_template_3_Template","CellComponent_ng_container_1_ng_container_1_ng_template_4_Template","isSpanColumn","isBoundColumn","isNew","_c190","CellComponent_ng_container_1_ng_template_2_0_ng_template_0_Template","CellComponent_ng_container_1_ng_template_2_0_Template","CellComponent_ng_container_1_ng_template_2_div_1_Template","CellComponent_ng_container_1_ng_container_1_Template","CellComponent_ng_container_1_ng_template_2_Template","showLoading","CellComponent_ng_container_2_1_ng_template_0_Template","editTemplateRef","editTemplateContext","CellComponent_ng_container_2_ng_container_2_kendo_numerictextbox_1_Template","CellComponent_ng_container_2_ng_container_2_kendo_datepicker_2_Template","CellComponent_ng_container_2_ng_container_2_input_3_Template","CellComponent_ng_container_2_ng_container_2_input_4_Template","CellComponent_ng_container_2_1_Template","CellComponent_ng_container_2_ng_container_2_Template","_c191","FooterComponent_ng_template_0_td_3_ng_template_1_Template","column_r5","columnIndex_r6","footerClass","footerStyle","footerTemplateRef","FooterComponent_ng_template_0_td_1_Template","FooterComponent_ng_template_0_td_2_Template","FooterComponent_ng_template_0_td_3_Template","ToolbarComponent_0_ng_template_0_Template","toolbarTemplateRef","EMPTY_REGEX","isBlank","isNullOrEmptyString","isUniversal","extractFormat","or","conditions","and","Symbol","proto","getIterator","requestAnimationFrame","msRequestAnimationFrame","cancelAnimationFrame","msCancelRequestAnimationFrame","DomEventsService","cellMousedown","cellMouseup","focusIn","focusOut","windowBlur","LocalDataChangesService","FOCUS_ROOT_ACTIVE","FocusRoot","registerGroup","unregisterGroup","NODE_NAME_PREDICATES","matchesClasses","matchesNodeName","hasTabIndex","isFocusableWithTabKey","ariaHidden","findElement","matchSelf","findFocusableChild","isButton","isInputTag","navigableRegex","findFocusable","isNavigable","isNavigableInput","hasFocus","CELL_CONTEXT","_enabled","focusGroup","registerElement","DefaultFocusableElement","unregisterElement","focusCell","activeRow","activeCol","virtualCol","virtualRow","findRow","dataRowIndex","force","isActiveRange","prevColIndex","prevRowIndex","cellRange","assume","announce","activateVirtualCell","rowRange","offsetRow","offsetCol","lastCellIndex","leafColumnsToRender","hasDetailTemplate","groupItem","nextColIndex","nextRowIndex","maxLogicalRowIndex","ItemMap","firstRow","registerCell","modelCell","detailExpandCell","unregisterCell","registerRow","modelRow","updateRow","unregisterRow","rowCell","isNewRow","EditService","editedIndices","keepEditCell","closingCell","changedSource","editRow","onChanged","newItemGroup","editCell","editTemplate","preventCellClose","closeCell","hasNewItem","isNotEqual","CellCloseEvent","cancelCell","shouldCloseCell","keepCellTimeout","findByIndex","columnContext","isEdited","hasEdited","isEditedColumn","beginEdit","beginAdd","endEdit","getGroupRowArgs","parentGroup","GroupsService","rowState","groupArgs","userCallback","isInExpandedGroup","expandChildren","isChildIndex","PagerContextService","changePageSize","nextPage","DetailsService","collapseRow","expandRow","eventArg","DetailExpandEvent","DetailCollapseEvent","ScrollRequestService","requests","isInSameGrid","gridElement","matchHeaderCell","matchDataCell","matchFooterCell","matchCell","targetCell","gridCell","isNavigationKey","isArrowKey","isInput","containsRow","scrollRequestService","groupsService","detailsService","focusRoot","editService","cd","focusableParent","cellKeydown","activeRowIndex","alive","NavigationModel","NavigationCursor","activeCell","activeDataRow","onStableSubscriber","isStable","onCursorChanges","navigateTo","onFocusOut","onWindowBlur","leaveCell","onKeydown","switchMapTo","onTabout","GridFocusableElement","deactivateElements","pendingRowIndex","virtualCell","registerCellOnCurrentRow","needsViewport","viewport","isCellFocusable","isCellFocused","oldMode","focusInCell","focusInActiveRowContent","activateRow","alreadyActive","isCursor","tryFocus","activateElements","enterCell","setViewport","NavigationViewport","behind","setColumnViewport","columnViewport","focusCellByElement","focusNextCell","focusAdjacentCell","focusPrevCell","autoFocusCell","fwd","moveCursorFwd","moveCursorBwd","colIdx","onCursorKeydown","onCellKeydown","nextItemIndex","hasPager","lastRowIndex","isPrintableCharacter","onContentKeydown","defaultPrevented","isTextInput","srcElement","localDataChangesService","lastSelectionStartIndex","selectAllChecked","enableMarquee","selectableSettings","dragAndMultiple","iterator$$1","_selectAllState","rowArgs","addAllTo","toggleByIndex","itemToToggle","deselect","removedItem","updateAll","selectRange","endIndex","defaultOptions","removeSubscriptions","targetArgs","mouseDownEventArgs","cellClickSubscription","mousedownSubscription","dataChangedSubscription","accessor","CellSelectionService","mouseUpEvent","dragSelectDeselect","lastSelectionItem","itemKey","columnKey","lastSelectionItemRowIndex","lastSelectionItemColIndex","selectedCellArgs","cellSelected","startRowIndex","startColIndex","endRowIndex","endColIndex","selectedCells","deselectedCells","cellsToRemove","contender","selectionStartRow","selectionStartCol","selectionEndRow","selectionEndCol","isInSelectionRect","topRight","bottomLeft","GridMarqueeDirective","cellSelection","selectionStarted","webkitUserSelection","userSelection","moveMarquee","pressArgs","pressTarget","dragEndSubscription","endSelection","initMarquee","marqueeElement","marqueeQuadrant","getMarqueeQuadrant","marquee","marqueeColor","pointerX","pointerY","startX","startY","leftHalf","rightHalf","topHalf","bottomHalf","isAsync","schedulerFn","errorFn","completeFn","EditTemplateDirective","ColumnMenuTemplateDirective","ColumnBase$1","orderIndex","isColumnGroup","minResizableWidth","lockable","stickable","includeInChooser","headerTemplates","columnMenuTemplates","isColumnContainer","_width","autoSize","filterStyle","FilterCellTemplateDirective","FilterMenuTemplateDirective","groupHeaderTemplateRef","filterCellTemplate","filterMenuTemplate","SpanColumnComponent_1","SpanColumnComponent","_editable","_locked","childrenArray","expandColumns","isSpanColumnComponent","expandColumnsWithSpan","sumProp","sumColumnWidths","validField","someLeafColumn","sortColumns","isInSpanColumn","DetailTemplateDirective","_condition","canCreateElement","cachedPixelRatio","cachedScrollbarWidth","cachedRtlScrollLeft","BrowserSupportService","devicePixelRatio","rtlScrollLeft","isGroupItem","flattenGroups","getIterator$1","footers","dataIndex","parentGroupIndex","skipHeader","isVirtualGroupItem","GroupIterator","ItemIterator","resultMap","_innerIterator","ArrayIterator","Iterator","outputFooters","currentGroupIndex","_iterator","nextGroupItem","footerItem","innerIterator","nextDataItem","groupFooters","isGridDataResult","selectedKeysChange","getItemKey","getSelectionItem","selectionChangeSubscription","selectionKey","itemIdentifiers","getCellSelectionItemIndex","nonLockedColumns","totalLevels","lockedColumnsToRender","nonLockedColumnsToRender","hasGroupFooter","currentLevels","leafColumns$$1","containerLeafColumns","containerColumns","toRenderContainer","leaf","Ol","lists","forEachColumn","forEachLevel","filterHierarchy","children$$1","ColumnList","filterSort","rootColumns","GroupInfoService","_columnList","isColumnComponent","registerColumnsContainer","columnForGroup","isGroupable","ChangeNotificationService","NoRecordsTemplateDirective","syncRowsHeight","table1","table2","arr1","arr2","zip$1","pairs","offsetHeight2","getHeights","MenuTabbingService","isColumnMenu","FilterService","PagerTemplateDirective","PDFService","savePDF","drawPDF","exportClick","dataChanged","SuspendService","browserMatchMedia","ResponsiveService","xs","sm","md","lg","bootstrapToMedia","ExcelService","saveToExcel","ToolbarTemplateDirective","_position","headerSubscription","bodySubscription","registerEmitter","sourceType","resizeSubscription","resizes","resizeArgs","extra","ColumnResizingService","tables","trackColumns","resizeColumns","deltaPercent","resizeTable","resizedColumn","resizedColumns","registerTable","tableMetadata","measureColumns","autoFitBatch","autoFitStart","onComplete","observables","widths","hasFilterRow","SinglePopupService","attachClose","detachClose","removeClick","skipElement","contains$1","PopupCloseEvent","appended","clientTop","clientLeft","ownerDocument","getDocument","pageYOffset","pageXOffset","defaultView","getWindow","isTargetBefore","compareDocumentPosition","contains$2","targetRect","DragAndDropService","notifyDrag","mouseEvent","targetFor","notifyDrop","updateClass","updateLock","DragHintService","santizer","decorate","safeTitle","attach","removeLock","toggleLock","DomSanitizer","DropCueService","ColumnReorderService","IdService","cellId","NO_STICKY","ColumnInfoService","visibilityChange","lockedChange","stickyChange","columnRangeChange","ColumnsContainer","leafNamedColumns","unlockedRootCount","stickyColumnsStyles","stickyColumns","changeVisibility","changeLocked","changeStuck","SortService","CellLoadingTemplateDirective","isInEditedCell","ɵ5$1","GridComponent","supportService","groupInfoService","changeNotification","pdfService","responsiveService","excelService","columnResizingService","columnReorderService","columnInfoService","sortService","defaultTrackBy","ZoneAwareEventEmitter","groupExpand","groupCollapse","detailExpand","detailCollapse","cellClose","excelExport","columnResize","columnReorder","columnVisibilityChange","columnLockedChange","columnStickyChange","scrollBottom","selectionDirective","columnList","DataCollection","DataResultIterator","hasGroupFooters","shouldGenerateColumns","_sort","_group","_skip","cachedWindowWidth","_rowSelected","_cellSelected","_rowClass","localizationSubscription","columnVisibilityChangeSubscription","ColumnVisibilityChangeEvent","columnLockedChangeSubscription","ColumnLockedChangeEvent","columnStickyChangeSubscription","ColumnStickyChangeEvent","groupExpandCollapseSubscription","expandEmitter","collapseEmitter","handleExpandCollapseGroupsService","detailsServiceSubscription","handleExpandCollapseDetailsService","filterSubscription","sortSubscription","attachStateChangesEmitter","attachEditHandlers","attachDomEventHandlers","pdfSubscription","emitPDFExportEvent","excelSubscription","columnsContainerChange","handleColumnResize","columnReorderSubscription","columnRangeChangeSubscription","onColumnRangeChange","showTopToolbar","showBottomToolbar","showTopPager","showBottomPager","emptyText","navigatable","_rowSticky","lockedClasses","virtualClasses","noScrollbarClass","_customDetailTemplate","detailTemplateChildren","_customLoadingTemplate","loadingTemplateChildren","_customNoRecordsTemplate","noRecordsTemplateChildren","customNoRecordsTemplate","_customPagerTemplate","pagerTemplateChildren","customPagerTemplate","_customToolbarTemplate","toolbarTemplateChildren","customToolbarTemplate","ariaColCount","isScrollable","exporting","viewportColumns","leafViewportColumns","groupCellsWidth","toggleDetailRowLegacy","expandGroup","toggleGroupRowLegacy","collapseGroup","resetGroupsState","expandGroupChildren","onDataChange","autoGenerateColumns","defaultSelection","initSelectionService","updateNavigationMetadata","syncHeaderHeight","attachScrollSync","shouldResetSelection","attachElementEventHandlers","applyAutoSize","columnsChangeSubscription","navigationMetadata","stateChangeSubscription","editServiceSubscription","columnsContainerChangeSubscription","detachElementEventHandlers","footerChangeSubscription","columnResizingSubscription","focusElementSubscription","skipFocus","focusEditElement","closeRow","createControl","columnInstance","resolveFn","rejectFn","createPromise","autoFitColumn","autoFitColumns","containerSelector","setEditFocus","assertNavigable","reorderColumn","destIndex","allColumnsForLevel","isDetailExpanded","isGroupExpanded","changeContainer","ColumnReorderEvent","updateColumnIndices","sourceColumnIndex","nextSourceIndex","toSkip","updateIndicesForLevel","colsForParentLevel","colsForLevel","cellSelectionMode","activeService","inactiveService","stick","isValidFieldName","validateColumnsField","filter$$1","emitCRUDEvent","ariaRoot","resizeCheck","orientationSubscription","documentClickSubscription","keydownSubscription","focusInSubscription","focusOutSubscription","hasChanges","PDFExportEvent","lockedHeader","notifyResize","oldWidth","addRowOffset","filterRowOffset","NavigationMetadata","toAdd","lastFromGroup","offsetColumn","hasCallback","selectableChanges","i18n_110","i18n_112","i18n_114","i18n_116","i18n_118","i18n_120","i18n_122","i18n_124","i18n_126","i18n_128","i18n_130","i18n_132","i18n_134","i18n_136","GridComponent_kendo_grid_toolbar_2_Template","GridComponent_kendo_pager_3_Template","GridComponent_kendo_grid_group_panel_4_Template","GridComponent_ng_template_7_Template","GridComponent_ng_template_8_Template","GridComponent_kendo_pager_9_Template","GridComponent_kendo_grid_toolbar_10_Template","ToolbarComponent","PagerComponent","GroupPanelComponent","TableDirective","ColGroupComponent","ResizableContainerDirective","FooterComponent","TableBodyComponent","LoadingComponent","take$$1","firstItemOffset","nextTake","atBottom","ScrollBottomAction","NON_DATA_CELL_CLASSES","elementAt","elementOffset","elementIdx","rowAt","wheelDeltaY","VERTICAL_AXIS","maybeNativeElement","suspendService","columnInfo","columnsStartIdx","resizeSensors","containerScrollTop","hostRole","handleRowSync","handleRowNavigationLocked","updateViewportColumns","handleInitialScrollToSkip","rebind","skipScroll","viewportWidthChange","resetNavigationViewport","attachContainerScroll","initResizeService","hasLockedContainer","lockedContainer","lockedTable","cleanupScroller","createScroller","lockedScrollTop","allowScroll","preventLockedScroll","scrollDelta","onContainerScroll","handleColumnScroll","rowViewport","startRow","endRow","startColumn","endColumn","scrollerSubscription","translateY","syncContainerHeight","sensor","scrollToVirtualRow","normalizeScrollLeft","startOffset","No","cellAt","elementScrollLeft","lastItemOffset","viewportStart","viewportEnd","firstItemHeight","lastItemDetailOverflows","setHeight$1","startIdx","endIdx","calculateViewportColumns","currentColumns","viewportColumnsWidth","columnsEndIdx","updateColumnViewport","columnUpdateFrame","lockedCount","normalizedScrollLeft","rtlScrollPosition","stickyRowHeight","ListComponent_kendo_resize_sensor_8_Template","ListComponent_kendo_resize_sensor_9_Template","ListComponent_div_12_Template","ListComponent_div_13_Template","SelectionDirective","groupPanelEmpty","noRecords","pagerLabel","pagerFirstPage","pagerLastPage","pagerPreviousPage","pagerNextPage","pagerPage","pagerItemsPerPage","pagerOf","pagerItems","pagerPageNumberInputTitle","filterInputLabel","filterMenuTitle","filterMenuOperatorsDropDownLabel","filterMenuLogicDropDownLabel","filterEqOperator","filterNotEqOperator","filterIsNullOperator","filterIsNotNullOperator","filterIsEmptyOperator","filterIsNotEmptyOperator","filterStartsWithOperator","filterContainsOperator","filterNotContainsOperator","filterEndsWithOperator","filterGteOperator","filterGtOperator","filterLteOperator","filterLtOperator","filterIsTrue","filterIsFalse","filterBooleanAll","filterAfterOrEqualOperator","filterAfterOperator","filterBeforeOperator","filterBeforeOrEqualOperator","filterFilterButton","filterClearButton","filterAndLogic","filterOrLogic","gridLabel","setColumnPosition","unlock","unstick","sortAscending","sortDescending","sortedAscending","sortedDescending","sortedDefault","columnsApply","columnsReset","filterDateToday","filterDateToggle","filterNumericDecrement","filterNumericIncrement","FilterRowComponent","filterRowClass","localizationMsg","FilterRowComponent_td_0_Template","FilterRowComponent_td_1_Template","FilterRowComponent_td_2_Template","FilterCellComponent","LogicalCellDirective","cloneFilters","isCompositeFilterDescriptor","copyObject","cloneFilter","_templateContext","FilterCellComponent_ng_template_0_Template","FilterCellHostDirective","operatorTexts","localizeOperators","FilterOperatorBase","refreshText","defaultOperator","rootFilter","insertDefaultFilter","trimFilterByField","filtersByField","removeFilter","localizeOperators$1","BaseFilterCellComponent","operatorList","_operators","defaultOperators","operationListSubscription","filterByField","updateFilter","applyFilter","numericOperators","NumericFilterComponent","Ua","columnFormat","currentOperator","localizationChange","NumericFilterCellComponent","filterDelay","showOperators","FilterCellWrapperComponent","valueAccessors","composing","changeRequests","unsubscribeStart","unsubscribeEnd","addAriaAttributes","subscribeChanges","unsubscribeChanges","changeRequestsSubscription","ariaValue","focusableElement","Self","EMPTY_VALUE_OPERATORS","isEmptyValueOperator","FilterInputWrapperComponent","_operator","emptyValueOperator","filterInputDisabled","applyNoValueFilter","_defaultOperator","onClear","EMPTY_FILTER_OPERATORS","overrideBaseClasses","FilterCellOperatorsComponent","stringOperators","StringFilterComponent","StringFilterCellComponent","clearText","clearClick","clearKeydown","dropdown","FilterCellOperatorsComponent_kendo_dropdownlist_0_Template","stringOperators$1","AutoCompleteFilterCellComponent","_valueField","BooleanFilterComponent","BooleanFilterCellComponent","dateOperators","DateFilterComponent","DateFilterCellComponent","ColGroupComponent_ng_template_0_Template","loadingText","_lockedWidth","attachResize","kendoGridResizableContainer","removeView","FocusGroup","focusableChildren","toggleState","idService","logicalSlaveCell","nextId","ariaColIndex","navigationChange","onNavigationChange","registerNoChanges","indexChange","rowIndexChange","registerChanges","updateElement","microtask","headerLabelText","id$1","LogicalRowDirective","logicalSlaveRow","logicalSlaveCellsCount","nextId$1","ariaRowIndex","logicalCellsCount","FORMAT_REGEX","FieldAccessorPipe","ɵngcc10","ɵpipe","columnsToResize","resizableColumns","firstResize","initState","bufferCount","autoFitSubscription","autoFitObservable","originalWidth","deltas","measureColumn","headerIndex","isParentSpan","isLastInSpan","ContainsFilterOperatorComponent_1","ContainsFilterOperatorComponent","DoesNotContainFilterOperatorComponent_1","DoesNotContainFilterOperatorComponent","EndsWithFilterOperatorComponent_1","EndsWithFilterOperatorComponent","EqualFilterOperatorComponent_1","EqualFilterOperatorComponent","IsEmptyFilterOperatorComponent_1","IsEmptyFilterOperatorComponent","IsNotEmptyFilterOperatorComponent_1","IsNotEmptyFilterOperatorComponent","IsNotNullFilterOperatorComponent_1","IsNotNullFilterOperatorComponent","IsNullFilterOperatorComponent_1","IsNullFilterOperatorComponent","NotEqualFilterOperatorComponent_1","NotEqualFilterOperatorComponent","StartsWithFilterOperatorComponent_1","StartsWithFilterOperatorComponent","GreaterFilterOperatorComponent_1","GreaterFilterOperatorComponent","GreaterOrEqualToFilterOperatorComponent_1","GreaterOrEqualToFilterOperatorComponent","LessFilterOperatorComponent_1","LessFilterOperatorComponent","LessOrEqualToFilterOperatorComponent_1","LessOrEqualToFilterOperatorComponent","AfterFilterOperatorComponent_1","AfterFilterOperatorComponent","AfterEqFilterOperatorComponent_1","AfterEqFilterOperatorComponent","BeforeEqFilterOperatorComponent_1","BeforeEqFilterOperatorComponent","BeforeFilterOperatorComponent_1","BeforeFilterOperatorComponent","FILTER_OPERATORS","importedModules","SharedFilterModule","FilterHostDirective","componentType","initComponent","boolean","numeric","filterComponentFactory","exports","PagerInputDirective","numericInput","NumericTextBoxComponent","PagerDropDownListDirective","keydownHandler","wrapperElement","responsive","normalizeSettings","pagerContext","pagerWrapClass","gridPagerClass","widgetClass","clearResponsiveClasses","pagerAriaLabel","totalPages","onFocusIn","onEscape","onEnter","focusFirstElement","navigateToPreviousPage","shouldTriggerPageChange","navigateToNextPage","navigateToFirstPage","navigateToLastPage","updateCellContext","focusLastElement","findLastElement","findLastFocusableChild","PagerComponent_div_0_Template","PagerComponent_ng_container_1_Template","PagerComponent_ng_container_2_Template","PagerComponent_div_3_Template","PagerComponent_kendo_resize_sensor_4_Template","PagerPrevButtonsComponent","PagerNumericButtonsComponent","PagerInputComponent","PagerNextButtonsComponent","PagerInfoComponent","PagerPageSizesComponent","PagerElementComponent","numbersWrapClass","reminder","pageText","onSelectChange","valueAsNumber","PagerNumericButtonsComponent_option_1_Template","PagerNumericButtonsComponent_option_2_Template","PagerNumericButtonsComponent_option_3_Template","PagerNumericButtonsComponent_li_5_Template","PagerNumericButtonsComponent_li_6_Template","PagerNumericButtonsComponent_li_7_Template","incomingValue","hasPages","maxItems","currentPageText","_pageSizes","normalizedItems","showInitialPageSize","pageSizeChange","ɵngcc11","importedModules$1","GroupHeaderComponent","hasDetails","groupItemClass","groupCount","detailOffset","columnCount","GroupHeaderComponent_ng_template_0_Template","GroupHeaderComponent_td_1_Template","GroupHeaderComponent_ng_container_2_Template","DropTargetDirective","withoutField","alreadyGrouped","indicatorRules","cue","dropTargets","groupHeaderClass","attachTargets","currentTitles","targetSubscription","canDrop","groupService","isNotGroupable","columnRules","enterStream","leaveStream","dropStream","GroupPanelComponent_ng_template_0_Template","GroupPanelComponent_div_1_Template","GroupPanelComponent_div_2_Template","DraggableColumnDirective","GroupIndicatorComponent","groupIndicatorClass","toggleDirection","removeDescriptor","hasClass","isDeleteButton","isSortIcon","skipButtons","elementUnderCursor","nav","updateTouchAction","preventOnDblClick","performDrag","upEvent","cursorElement","cont","hideThenShow","DragAndDropModule","allowUnsort","showIndexes","initialDirection","normalize$1","columnChooser","FilterMenuComponent","hasFilters","FilterMenuComponent_ng_template_3_Template","FilterMenuContainerComponent","ColumnMenuService","closeMenu","ColumnMenuComponent","standalone","getExpandedState","columnMenuTitle","menuItemSettings","ColumnMenuComponent_ng_template_3_Template","ColumnMenuComponent_ng_template_5_Template","ColumnMenuContainerComponent","ColumnMenuSortComponent","ColumnMenuItemDirective","ColumnMenuLockComponent","ColumnMenuStickComponent","ColumnMenuPositionComponent","ColumnMenuChooserComponent","ColumnMenuFilterComponent","mergeObjects","inSameParent","rules","isRootLevel","reorderService","sortedFields","sortColumn","toggleSort","filterMenu","filterMenus","fm","columnMenus","cm","sortDescriptor","desc","isTailing","hasFilterMenu","hasItems","canReorder","stickyStyles","directions","targetLocked","draggableLocked","trackMove","calculateBefore","normalizeTarget","firstSpan","levelColumns","HeaderComponent_ng_template_0_Template","SelectAllCheckboxDirective","ColumnHandleDirective","headerWidth","allLeafColumns","isInSpanColumn$1","leftStyle","rightStyle","allLeafs","currentLeafs","ignore","isParentSpanColumn","shouldUpdate","initColumnWidth","preventOnDblClick$1","whole","resizeStartWidth","toPercentage","sizeToFit","fromPercentage","tableDelta","updateWidth","selectAllChange","stateSet","destroyClick","stateToBool","validFilters","isNoValueOperator","findParent","parentLogicOfDefault","parentService","_childFilter","resetButton","filterButton","submit","trimFilters","FilterMenuContainerComponent_ng_container_3_Template","FilterMenuContainerComponent_ng_container_4_Template","FilterMenuHostDirective","FilterMenuInputWrapperComponent","isFirstDropDown","firstOperatorDropDown","operatorChange","_currentFilter","FilterMenuDropDownListDirective","StringFilterMenuInputComponent","StringFilterMenuComponent","firstFilter","StringFilterMenuComponent_kendo_dropdownlist_1_Template","StringFilterMenuComponent_kendo_grid_string_filter_menu_input_2_Template","NumericFilterMenuComponent","NumericFilterMenuComponent_kendo_dropdownlist_1_Template","NumericFilterMenuComponent_kendo_grid_numeric_filter_menu_input_2_Template","NumericFilterMenuInputComponent","DateFilterMenuComponent","DateFilterMenuComponent_kendo_dropdownlist_1_Template","DateFilterMenuComponent_kendo_grid_date_filter_menu_input_2_Template","DateFilterMenuInputComponent","BooleanFilterRadioButtonDirective","radioButtonEl","BooleanFilterMenuComponent","radioButtons","radioValue","BooleanFilterMenuComponent_li_1_Template","filterMenuComponentFactory","ColumnListComponent","unlockedCount","updateColumnState","hasFiltered","hasVisibleLocked","hasUnlockedFiltered","updateDisabled","applyButton","forEachCheckBox","getElementsByClassName","hasLocked","checkedUnlocked","filteredColumns","ColumnListComponent_label_1_Template","ColumnListComponent_div_2_Template","ColumnChooserComponent","closeClick","ColumnChooserComponent_ng_template_3_Template","ColumnMenuItemBase","onCollapse","onExpand","ColumnMenuChooserComponent_ng_template_1_Template","ColumnMenuItemComponent","ColumnMenuItemContentTemplateDirective","ColumnMenuFilterComponent_ng_template_1_Template","updateContentState","ColumnMenuItemComponent_span_1_Template","ColumnMenuItemComponent_div_3_Template","sortedAsc","sortedDesc","toggleColumn","toggleHierarchy","allChanged","_isLast","getLastFocusableItem","isLastItem","menuItems","ColumnMenuPositionComponent_ng_template_1_Template","_isFirst","isFirst","columnMenuItems","menuItemComponent","lastColumnMenuItem","getLastColumnMenuItem","firstItemKeydownSub","lastFocusableElement","lastItemKeydownSub","isExpandableItem","ColumnMenuModule","importedModules$2","CommandColumnComponent_1","CommandColumnComponent","CheckboxColumnComponent_1","CheckboxColumnComponent","SelectionCheckboxDirective","destroyKeyDown","onKeyDown","setCheckedState","cellKeydownSubscription","cellKeydownHandler","trackByWrapper","viewItem","applyStickyRowsStyling","absoluteRowIndex","mouseupSubscription","contextmenuSubscription","touchstartSubscription","touchendSubscription","touchSubscription","originalNoRecordText","clickTimeout","cellClickArgs","emitCellClick","isEditedRow","columnCellIndex","touch","changedTouches","stickyRows","nodesToArray","accumulatedHeight","stickyRowsOffsets","TableBodyComponent_ng_template_0_Template","TableBodyComponent_tr_1_Template","TableBodyComponent_ng_template_2_Template","TableBodyComponent_kendo_resize_sensor_3_Template","CellComponent","_editTemplateContext","commandCellClass","isCommand","_rowIndex","isColumnEditable","editContext","isFieldEditable","_changes","updateTemplateContext","CellComponent_ng_container_1_Template","CellComponent_ng_container_2_Template","EditCommandDirective","commandClass","CancelCommandDirective","SaveCommandDirective","RemoveCommandDirective","AddCommandDirective","importedModules$3","FooterComponent_ng_template_0_Template","importedModules$4","FooterModule","ToolbarComponent_0_Template","PDFMarginComponent","PDFExportMarginComponent","ɵPDFMarginComponent_BaseFactory","PDFTemplateDirective","PDFExportTemplateDirective","HEADER_CLASS","FOOTER_CLASS","matchesList","matchesTable","headerWrap","footerWrap","FIRST_CLASS","INPUTS","_kendoExportVisual","appendNodes","wrapTable","createTableElement","sourceCount","rowsCount","rowIdx","sourceIdx","createElement$1","createDiv","PDFComponent","PDFExportComponent","saveSubscription","drawSubscription","createPDF","createExportGroup","originalColumns","initProgress","renderAllPages","allPages","changeColumns","originalHeight","originalOverflow","applyScroll","GridQuery","overlayQuery","overlayContent","lockedContent","overlayLockedContent","createExportElement","exportElement","colGroups","bodies","colGroup","setFirstCellClass","drawOptions","_destructive","removeContainer","_take","marginComponent","pageTemplateDirective","PDFCommandDirective","pdfClass","fetchComponentData","toExcelColumns","excelColumn","toExcelColumn","componentColumns","ExcelComponent","dataSubscription","fetchData","ExcelExportEvent","ExcelCommandDirective","excelClass","sizeClasses","xsmall","small","medium","large","xlarge","IconBase","horizontalFlip","verticalFlip","themeColor","_themeColor","_size","sizeClass","IconComponent","_name","SIZE_CLASSES$1","SEGMENT_COUNT","pulsing","TYPE_CLASSES","LoaderComponent","setLoaderClasses","segmentCount","LoaderComponent_span_1_Template","SkeletonModule","BadgeModule","decrementMessage","incrementMessage","smallStep","largeStep","labelTemplate","_c14","_c15","_c27","_c33","mouseleave","releaseArrow","ArrowDirection","increasePress","incrementTitle","decreasePress","decrementTitle","_c35","_c36","dragenter","_c37","_c38","tick_r3","SliderTicksComponent_li_0_span_3_Template","SliderTicksComponent_li_0_ng_container_4_Template","tickTitle","value_r8","TextBoxComponent_2_ng_template_0_Template","prefixTemplate","errorIconClasses","successIconClasses","clearButtonClasses","TextBoxComponent_9_ng_template_0_Template","suffixTemplate","_c43","_c46","handleHexInputBlur","handleHexValueChange","rgba","handleRgbaInputBlur","handleRgbaValueChange","ColorInputComponent_ng_container_5_div_16_Template","_c49","_c50","_c51","clearButtonTitle","handleAlphaSliderChange","opacitySliderTitle","alphaSliderValue","contrastTool","_c81","_c82","ColorPickerComponent_span_3_span_1_Template","iconStyles","handlePopupBlur","handlePopupKeyDown","gradientSettings","palette","ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template","ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template","_c101","_c104","color_r4","colIndex_r5","rowIndex_r2","handleCellSelection","selectedCell","focusInComponent","focusedCell","tileLayout","ColorPaletteComponent_tr_4_td_1_Template","row_r1","_c105","passMessage","failMessage","ContrastComponent_span_3_span_2_Template","satisfiesAAACondition","areSame","fitIntoBounds","limitPrecision","fractionLength","maxFractionLength","toFixedPrecision","maxPrecision","subtract","multiply","divide","dividend","divisor","correctionValue","remainder","calculateFixedTrackSize","fixedTickWidth","calculateTrackSize","showButtons","trackOffset","calculateTicksCount","adjustedRange","adjustedRatio","calculateValueFromTick","calculateHandlePosition","handleWidth","trackWidth","halfHandleWidth","decreaseValueToStep","stepValue","stepRemainder","limitValue","increaseValueToStep","isStartHandle","dragHandle","trimValue","trimValueRange","eventValue","scaleElement","offsetValue","stepFractionLength","limited","incrementLarge","decrementLarge","validateValue","track","tickSizes","getTickSizes","resizeTrack","resizeTicks","ticksContainer","ticks","adjustPadding","resizeWrapper","wrapperSize","elementSize","fixedTrackWidth","trackSize","distStep","usedSpace","endPoint","totalTickSize","SliderModelBase","positionHandle","handlePosition","positionSelection","LabelTemplateDirective","SliderBase","tickPlacement","sliderClass","ifEnabled","verticalClass","sizeComponent","keyBinding","resetStyles","sliderSelection","SliderComponent_1","PRESSED","SliderComponent","onWrapClick","getProps","changeValue","invokeElementMethod","draghandle","handler","ngChange","ngTouched","decreaseValue","increaseValue","setValueChangeInterval","increaseButton","decreaseButton","tickElements","dragHandleMessage","dragHandleTitle","handleDragPress","onHandleDrag","onHandleRelease","selectionEl","dragHandleEl","SliderModel","isDragged","mouseout","tabbing","cursorInsideWrapper","i18n_7","i18n_9","i18n_11","SliderComponent_span_3_Template","SliderComponent_span_4_Template","SliderComponent_ul_5_Template","LocalizedSliderMessagesDirective","SliderTicksComponent","startHandlePosition","endHandlePosition","currentSelectionPosition","RangeSliderComponent_1","PRESSED$1","RangeSliderComponent","startHandleId","endHandleId","handleZIndex","activeHandle","trackValue","newRangeValue","startValue","endValue","draghandleStart","draghandleEnd","startHandleIsActive","trimmedValue","valueText","draggedHandle","lastCoords","lastHandlePosition","moveStartHandle","moveEndHandle","moveBothHandles","activeStartHandle","isSameRange","dragHandleStartEl","dragHandleEndEl","RangeSliderModel","SwitchComponent_1","RangeSliderComponent_ul_3_Template","LocalizedRangeSliderMessagesDirective","FOCUSED","SwitchComponent","_checked","setHostClasses","ieClass","browser","ariaReadonly","onLabelMessage","onLabel","offLabelMessage","offLabel","isEnabled","TextAreaDirective_1","LocalizedSwitchMessagesDirective","TextAreaDirective","elementClass","autofillClass","autoFillStart","autoFillEnd","setElementProperty","animationName","inputSubscription","initialHeight","TextBoxDirective_1","TextBoxDirective","EXPONENT_REGEX","padString","NumericTextBoxComponent_1","PARSABLE_OPTIONS","PARSABLE_DEFAULTS","FOCUSED$1","FORMATTED_VALUE","changeValueOnScroll","selectOnFocus","isPasted","ngValidatorChange","arrowPress","spinTimeout","pressedKey","replaceNumpadDotValue","formatInputValue","restrictDecimals","limitInputValue","hasTrailingZeros","setInputValue","previousSelection","handleDragEnter","handleMouseDown","shouldSelectAll","selectCaret","addStep","handleWheel","getDeltaFromMouseWheel","option","createMaxValidator","numericRegex","restrictModelValue","restrictedValue","notifyValueChange","decimalSeparator","numberSymbols","hasDecimals","numericWrap","mobileOS","spin","numberPattern","enteredValue","limitedValue","selectToEnd","lengthChange","hasMax","hasMin","padLimit","replaceNext","correctedValue","paddedValue","tryPadValue","limitLength","zeroPadded","zeroPaddedNext","stringValue","fraction","exponentMatch","formatNumber","parsed","partialValue","significantCharsInFormattedValue","formattedString","significantCharacters","extractSignificantNumericChars","adjustedSignificantChars","adjustSignificantChars","numberOfLeadingZeroes","matchedLeadingZeroes","lengthOfLeadingZeroesMatch","significantChars","leadingZeroes","maxlength","i18n_29","i18n_31","NumericTextBoxComponent_span_5_Template","LocalizedNumericTextBoxMessagesDirective","NumericTextBoxMessages","ɵNumericTextBoxMessages_BaseFactory","NumericTextBoxCustomMessagesComponent_1","NumericTextBoxCustomMessagesComponent","ResultType","Literal","Result","chain","fold","vs","inputCursor","controlCursor","eof","char","eat_input","eat_control","eat","Stream","Parser","isLiteral","rule","literal","rawMask","prompt","promptPlaceholder","rawLiteral","includeLiterals","greedy","MaskingService","maskTokens","unmaskTokens","rawTokens","validationTokens","mask$$1","tokenize","validationValue","maskedValue","unmasked","maskRaw","masked","maskInput","splitPoint","maskRemoved","maskInserted","maskInRange","pasted","beforeChange","afterChange","unchanged","adjustPosition","caretChar","maskTokenCreator","_token","unmaskTokenCreator","unliteral","unmask","rawTokenCreator","validationTokenCreator","MaskedTextBoxComponent_1","FOCUSED$2","MaskedTextBoxComponent","maskOnFocus","maskValidation","focusClick","defaultRules","C","L","emptyMask","updateInput","setFocusSelection","onTouched","updateService","hostDisabledClass","_rules","handleDragDrop","pasteHandler","inputHandler","normalizeValue","extractChanges","patternError","present","createTicks","tickValueProps","SliderTick","endTickClasses","SliderTicksComponent_li_0_Template","SliderTicksComponent_ng_template_1_Template","SlidersCommonModule","SliderMessages","ɵSliderMessages_BaseFactory","LocalizedSliderMessagesDirective_1","SliderCustomMessagesComponent_1","SliderCustomMessagesComponent","SliderModule","RangeSliderMessages","ɵRangeSliderMessages_BaseFactory","dragHandleStart","dragHandleEnd","LocalizedRangeSliderMessagesDirective_1","RangeSliderCustomMessagesComponent_1","RangeSliderCustomMessagesComponent","RangeSliderModule","LocalizedSwitchMessagesDirective_1","SwitchCustomMessagesComponent_1","SwitchCustomMessagesComponent","SwitchModule","LocalizedNumericTextBoxMessagesDirective_1","MaskedTextBoxModule","TextBoxSuffixTemplateDirective","TextBoxPrefixTemplateDirective","TextBoxComponent_1","FOCUSED$3","showSuccessIcon","showErrorIcon","inputFocus","inputBlur","handleInputFocus","clearButtonClicked","handleInputBlur","checkClearButton","isFocusedElement","showClearButton","showErrorsInitial","showSuccessInitial","successIcon","errorIcon","clearButtonIcon","hasErrors","i18n_41","TextBoxComponent_2_Template","TextBoxComponent_span_6_Template","TextBoxComponent_span_7_Template","TextBoxComponent_span_8_Template","TextBoxComponent_9_Template","LocalizedTextBoxMessagesDirective","TextBoxMessages","ɵTextBoxMessages_BaseFactory","TextBoxCustomMessagesComponent_1","TextBoxCustomMessagesComponent","LocalizedTextBoxMessagesDirective_1","TextFieldsBase","TextAreaComponent_1","resizeClasses","both","auto","FOCUSED$4","TextAreaComponent","flow","flowCol","flowRow","TextAreaModule","openPrevented","isOpenPrevented","parseColor$1","safe","allowedFormats","namedColors","parseColor","toHex","nameFormat","parsedColor","toCss","toCssRgba","getRGBA","toBytes","getColorFromHSV","hsva","hue","saturation","getColorFromHue","getRGBFromRGBA","foregroundColor","b1","r2","b2","getLuminance","rgb","PALETTEPRESETS","basic","office","apex","austin","clarity","slipstream","metro","hardcover","trek","verve","monochrome","accessible","ColorPickerLocalizationService","ColorGradientLocalizationService","colorPickerLocalization","ColorInputComponent","colorInputClass","rgbaInputValid","initDomEvents","red","green","blue","getColorFromRGBA","toggleFormatView","formatView","toggleFormatButton","opacityInput","ColorInputComponent_input_4_Template","ColorInputComponent_ng_container_5_Template","ColorGradientComponent_1","ColorGradientComponent","notifyNgChanged","notifyNgTouched","readonlyAttribute","hostTabindex","gradientId","gradientRect","gradientWrapper","contrastToolVisible","updateUI","addEventListeners","removeListener","changePosition","onKeyboardAction","dragHandleElement","gradientDragHandle","keyboardMoveX","keyboardMoveY","newY","newX","moveDragHandle","handleHueSliderChange","setAlphaSliderBackground","handleInputsValueChange","colorGradientHandleTitle","colorGradientHandleAriaLabel","hueSliderTitle","positionX","positionY","setDragHandleElementPosition","toHSV","getHSV","setHostElementAriaLabel","alphaSlider","focusOutListener","containsFocus","keydownListener","keyupListener","dragHandleFocusInListener","dragHandleFocusOutListener","ColorPickerComponent_1","ColorGradientComponent_span_8_Template","ColorGradientComponent_kendo_slider_10_Template","ColorGradientComponent_div_13_Template","LocalizedColorPickerMessagesDirective","ContrastComponent","serial$1","activeColorClick","_paletteSettings","_gradientSettings","settingsPalette","handleWrapperClick","toggleWithEvents","ActiveColorClickEvent","handleWrapperFocus","handleWrapperBlur","focusInPopupElement","handleWrapperKeyDown","firstElement","colorGradient","lastElement","childNodes","preventScroll","i18n_87","i18n_89","i18n_91","i18n_93","i18n_95","i18n_97","i18n_99","ColorPickerComponent_span_3_Template","ColorPickerComponent_span_4_Template","ColorPickerComponent_ng_template_7_Template","ColorPaletteComponent","FocusOnDomReadyDirective","ColorPaletteService","colorRows","setColorMatrix","getCellCoordsFor","getColorAt","cellCoords","getNextCell","horizontalStep","verticalStep","ColorPaletteLocalizationService","ColorPaletteComponent_1","serial$2","paletteId","_palette","defaultPreset","setRows","handleCellNavigation","handleHostBlur","handleCellFocusOnBlur","activeCellId","ColorPaletteComponent_tr_4_Template","ColorPickerMessages","ɵColorPickerMessages_BaseFactory","colorPaletteNoColor","colorGradientNoColor","colorGradientHandle","hueSliderHandle","opacitySliderHandle","hexInputPlaceholder","redInputPlaceholder","greenInputPlaceholder","blueInputPlaceholder","alphaInputPlaceholder","passContrast","failContrast","contrastRatio","ColorPickerCustomMessagesComponent_1","ColorPickerCustomMessagesComponent","LocalizedColorPickerMessagesDirective_1","focusOnNextTick","ContrastValidationComponent","contrastText","ratio","ContrastValidationComponent_span_2_Template","ContrastValidationComponent_span_3_Template","aaRatio","aaaRatio","formatedRatio","contrastRatioMessage","satisfiesAACondition","luminance1","luminance2","getContrast","getContrastFromTwoRGBAs","ContrastComponent_span_3_Template","ContrastComponent_span_4_Template","CheckBoxDirective","kendoClass","RadioButtonDirective","FormFieldModule","DOCS_URL","errorSolutions","NoCurrency","NoCurrencyDisplay","NoCurrencyRegion","NoDateFieldNames","NoFirstDay","NoGMTInfo","NoLocale","NoValidCurrency","NoWeekData","errorSolution","formatMessage","dateFormatNames$1","intlMethod","dateFieldName$1","firstDay$1","format$1","formatDate$1","formatNumber$1","numberSymbols$1","parseDate$1","parseNumber$1","splitDateFormat$1","toString$1","weekendRange$1","setData$1","LOCALE_REGEX","CldrIntlService","cldrServiceFactory","providedIn","ngInjectableDef","ɵɵdefineInjectable","ɵɵinject","format$$1","require","likelySubtags","cs","territory","patterns","D","F","T","dateTimeFormats","long","short","availableFormats","Bh","Bhm","Bhms","EBhm","EBhms","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","GyMMMMd","GyMMMMEd","hm","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","MMMMEd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","yMMMMd","yMMMMEd","yQQQ","yQQQQ","timeFormats","abbreviated","narrow","wide","quarters","midnight","noon","morning1","morning2","afternoon1","evening1","night1","eras","gmtFormat","gmtZeroFormat","dateFields","era","quarter","weekOfMonth","dayOfYear","weekday","weekdayOfMonth","dayperiod","numbers","percentSign","plusSign","minusSign","exponential","superscriptingExponent","perMille","infinity","nan","timeSeparator","groupSize","scientific","currency","accounting","currencyData","CZK","_rounding","_digits","_cashRounding","_cashDigits","MMd","MMdd","yMM","yMMdd","afternoon2","mmss","hr","hu","night2","HUF","GyMMMM","MMMM","lv","ro","ru","sk","sr","MMMdd","RSD","uk","dictionary","us","iconClasses","PanelBarItemComponent_5_ng_template_0_Template","contentOverflow","contentHeight","PanelBarItemComponent_div_7_div_3_ng_template_1_Template","item_r15","PanelBarItemComponent_div_7_div_4_ng_container_1_kendo_panelbar_item_1_Template","PanelBarItemComponent_div_7_div_4_ng_container_1_Template","PanelBarItemComponent_div_7_div_5_ng_template_1_Template","PanelBarItemComponent_div_7_div_5_ng_template_2_Template","PanelBarItemComponent_div_7_div_2_Template","PanelBarItemComponent_div_7_div_3_Template","PanelBarItemComponent_div_7_div_4_Template","PanelBarItemComponent_div_7_div_5_Template","hasChildItems","hasContent","item_r3","PanelBarComponent_ng_template_1_ng_container_0_kendo_panelbar_item_1_Template","PanelBarComponent_ng_template_1_ng_container_0_Template","SplitterComponent_ng_container_1_kendo_splitter_bar_1_Template","last_r3","TabStripComponent_ng_container_1_ng_container_1_Template","TabStripComponent_ng_container_1_ng_container_2_Template","TabStripComponent_ng_container_2_ng_container_1_Template","TabStripComponent_ng_container_2_ng_container_2_Template","_r22","i_r17","onTabClick","tab_r16","closeIcon","TabStripComponent_ng_template_3_ng_container_4_li_1_Template","TabStripComponent_ng_template_3_span_1_Template","TabStripComponent_ng_template_3_ng_container_4_Template","TabStripComponent_ng_template_3_span_5_Template","itemsWrapperClass","hasScrollButtons","tabsAlignmentStyles","TabStripComponent_ng_template_5_ng_template_0_div_0_ng_template_1_Template","tab_r26","i_r27","keepTabContent","tabContent","TabStripComponent_ng_template_5_ng_template_0_div_0_Template","TabStripComponent_ng_template_5_ng_template_0_Template","_r32","TabComponent_span_1_ng_template_1_Template","tabTitle","closeTab","closeButtonClasses","Single","Full","Multiple","Default","nextPanelbarId","PanelBarService","parentSource","keepContentSource","childSource","parent$","children$","keepContent$","pbId","onKeepContent","PanelBarContentDirective","PanelBarItemTitleDirective","parsePanelBarItems","util","isHorizontalArrowKey","isVerticalArrowKey","skipTab","PanelBarItemComponent_1","PanelBarItemComponent","eventService","titleAttribute","kItemClass","_expanded","onWrapperFocusChange","toggleExpandedChildAnimations","kStateDefaultClass","kStateDisabledClass","kStateExpandedClass","ariaSelected","childClass","titleTemplates","contentWrapper","addLevelClass","contentItems","validateConfiguration","childrenItems","viewChildItems","onItemAction","subTreeViewItems","subTree","toggleAnimationState","expandMode","PanelBarItemComponent_span_2_Template","PanelBarItemComponent_img_3_Template","PanelBarItemComponent_ng_container_4_Template","PanelBarItemComponent_5_Template","PanelBarItemComponent_span_6_Template","PanelBarItemComponent_div_7_Template","PanelBarItemTemplateDirective","isViewInit","_keepItemContent","updateChildrenHeight","childrenHeight","panelbarHeight","keyBindings","computedKeys","keepItemContent","_items","hostHeight","invertKeys","inverted","selectFocusedItem","focusPreviousItem","collapseItem","focusNextItem","focusLastItem","allItems","viewItems","onComponentClick","itemClicked","focusedItems","onComponentKeyDown","treeItems","modifiedItems","selectedState","focusedState","siblings","expandedState","getVisibleParent","focusItem","nextItem","focusedItem","moveFocus","firstChildIndex","flatVisibleItems","listOfItems","flattedItems","PanelBarComponent_ng_content_0_Template","PanelBarComponent_ng_template_1_Template","SplitterPaneComponent","collapsed","sizeChange","collapsedChange","forceExpand","isResized","paneOrder","_order","setOrderStyles","newSize","staticPaneClass","containsSplitter","isHidden","fixedSize","scrollablePaneClass","computedSize","toggleOverlay","SplitterPaneComponent_ng_container_0_Template","SplitterPaneComponent_div_1_Template","SplitterService","layoutChange","containerSize","tryToggle","paneIndex","notCollapsed","allHaveFixedSize","toggleContentOverlay","dragState","splitbarIndex","toPixels","initialSize","paneState","splitterSize","isPercent","splitBarIndex","allPanesWithSize","hasResizedPane","SplitterComponent","splitterService","enclosingPane","horizontalHostClasses","verticalHostClasses","reconfigure","paneChangesSubscription","SplitterComponent_ng_container_1_Template","SplitterBarComponent","TabContentDirective","TabTitleDirective","TabStripTabComponent","_tabContent","_tabTitleDirective","mouseScrollEnabled","scrollableSettings","mouseScroll","getActiveTab","focusedTab","getTabByIndex","filtered","_tab","isTablistHorizontal","tabPosition","TabStripService","targetId","isTabElement","shouldHandleKey","onTabSelect","selectArgs","SelectEvent","owner","focusTabHeader","resetTabSelection","scrollToSelectedTab","onTabClose","closeArgs","TabCloseEvent","tabClose","firstNavigatableIndex","computeNextIndex","activateTab","activeTabIndex","tabStripClosable","isTabClosable","tabHeaderContainers","_tabHeader","getTabHeaderByIndex","prevNavigatableIndex","nextNavigatableIndex","lastNavigatableIndex","PreventableEvent$1","ScrollService","scrollButtonActiveStateChange","tablistElement","tablist","scrollButtonIconClass","defaultPrevIcon","defaultNextIcon","prevScrollButton","prevButtonIcon","nextScrollButton","nextButtonIcon","tabstripSize","wrapperHeight","tablistOverflowSize","overflowSize","tabsOverflow","scrollButtonsSize","prevRect","hostBoundingClientRect","prevSize","nextRect","toggleScrollButtonsState","currentNextButtonActive","calculatedPrevButtonActive","calculatedNextButtonActive","getScrollOffset","isLastTabActive","activeTabRect","tablistRect","activeTabStart","activeTabEnd","tablistStart","tablistEnd","tabEndIsInVisibleRange","tabStartIsInVisibleRange","onMouseScroll","calculateListPosition","mouseScrollSpeed","scrollTabs","buttonScrollSpeed","behavior","scrollSpeed","adjustedMaxScroll","emitScrollEvent","scrollEvent","TabScrollEvent","tabScroll","restoreScrollPosition","normalizeScrollableSettings","scrollButtons","TabStripScrollableButtonComponent","scrollService","btnClasses","tabStripScrollEvent","activeButtonSettings","prevClass","nextClass","TabStripComponent","tabstripService","_scrollableSettings","subscriptionsArePresent","_height","toggleScrollButtons","attachWheelHandler","tabsAtTop","tabsAtRight","tabsAtBottom","tabsAtLeft","tabStripScrollable","positionChange","tabsAtBottomChanged","justify","tabAlignment","tabStripHasScrollButtons","resetTabFocus","scrollButtonsSetting","scrollButtonsArePresent","shouldShowButtons","alwaysVisible","wheelEvent","i18n_15","TabStripComponent_ng_container_1_Template","TabStripComponent_ng_container_2_Template","TabStripComponent_ng_template_3_Template","TabStripComponent_ng_template_5_Template","TabStripComponent_kendo_resize_sensor_7_Template","LocalizedTabStripMessagesDirective","TabComponent","TabStripMessages","ɵTabStripMessages_BaseFactory","LocalizedTabStripMessagesDirective_1","TabStripCustomMessagesComponent_1","TabStripCustomMessagesComponent","handlersRTL","StepperMessages","ɵStepperMessages_BaseFactory","StepperCustomMessagesComponent_1","StepperCustomMessagesComponent","LocalizedStepperMessagesDirective_1","LocalizedStepperMessagesDirective","AvatarModule","CardModule","DrawerModule","ExpansionPanelModule","PanelBarModule","classFromObject","collapseAny","expandLast","toggleNext","tryToggleNearest","mi","togglePrevious","previousArrowClass","nextPane","isCollapsible","isCollapsed","nextArrowClass","prevPane","SplitterModule","StepperModule","activeClass","focusedClass","tabClosable","tabStripCloseIcon","TabComponent_span_0_Template","TabComponent_span_1_Template","TabComponent_span_2_Template","TileLayoutModule","vi","idx_r2","itemLinkTemplate","openOnClick","hierarchyIndex","ListComponent_ng_container_0_li_1_Template","ListComponent_ng_container_0_li_2_Template","ItemComponent_span_0_ng_template_2_Template","ItemComponent_a_1_ng_template_2_Template","ItemComponent_2_ng_template_0_Template","linkTemplate","ItemComponent_div_3_ng_template_1_Template","ownerIndex","childId","ItemComponent_ng_template_6_2_ng_template_0_Template","ItemComponent_ng_template_6_span_0_Template","ItemComponent_ng_template_6_ng_container_1_Template","ItemComponent_ng_template_6_2_Template","ItemComponent_ng_template_6_span_3_Template","rootItems","hoverDelay","PARENT_REGEX","itemIndexComparer","siblingIndex","ItemsService","addList","removeList","containsList","otherSiblings","areSiblings","item1","item2","canPerformAction","ActionsService","finished","requiresZone","hasContentTemplates","closeChildren","closeItem","closeToRoot","closeOthers","closeItems","closeAll","MenuEvent","contextService","hasPending","execute","toExecute","executeActions","NO_SPACE_REGEX","focusedIdx","activeItem","setFocus","focusLeave","updateActive","toggleActive","focusIndex","focusFirst","focusLast","sibling","focusChild","HoverService","_openOnOver","openOnOver","hovered","hoveredIdx","scheduleActions","disableOpenOnOver","scheduleDisableOpenOnOver","closeCurrent","removeScheduled","actionIdx","DEFAULT_ID","nodeIndex","inMenu","itemsService","closestList","ContextMenuService","emitMenuEvent","leaveMenu","ItemLinkTemplateDirective","ItemContentTemplateDirective","MenuItemComponent_1","MenuItemComponent","itemContentTemplate","MenuBase","MenuComponent_1","MenuComponent","hover","contextKeyDownSubscription","contextKeyDown","ariaOrientation","contextMenuClass","attachCloseClick","menuItemTemplate","menuItemLinkTemplate","overSubscription","onLeave","nodeItem","leaveSubscription","leavesMenu","closestItem","isContent","navigating","ListComponent_ng_container_0_Template","ItemComponent","POPUP_ALIGN","POPUP_ALIGN_RTL","VERTICAL_COLLISION","HORIZONTAL_COLLISION","POPUP_SETTINGS_RTL","POPUP_SETTINGS","defined","activeId","hasLink","ItemComponent_span_0_Template","ItemComponent_a_1_Template","ItemComponent_2_Template","ItemComponent_div_3_Template","ItemComponent_ng_template_4_Template","ItemComponent_ng_template_6_Template","MenuModule","ContextMenuTemplateDirective","ContextMenuItemsService","ContextMenuTargetService","targets","ContextMenuTargetContainerDirective","targetService","ContextMenuComponent_1","CONTEXT_MENU","DEFAULT_ANCHOR_ALIGN","DEFAULT_POPUP_ALIGN","DEFAULT_COLLISION","ɵ1$2","showOn","alignToAnchor","popupKeyDownHandler","removePopup","showTarget","bindShowHandler","closeBlurSubscription","unbindShowHandler","closeAndFocus","showSubscription","showContextMenu","targetFilter","contextSelector","findInContainer","directiveTarget","popupAction","currentTargetElement","popupAnimate","defaultContentTemplate","activeTarget","unbindKeyDown","unbindContextmenu","ContextMenuPopupEvent","ContextMenuComponent_ng_template_0_Template","FIELDS","drawMargin","exportGroup","pdfOptions","dataUri","saveDataUri","saveOptions","drawElement","pageTemplate","templateWrap","avoidLinks","forcePageBreak","keepTogether","paperSize","landscape","repeatHeaders","autoPrint","author","imgDPI","keywords","multiPage","producer","proxyData","proxyTarget","drawDOM","exportPDF","PDFExportModule","eitherRect","OVERFLOW_REGEXP","overflowStyle","overflowX","overflowElementStyle","overflowComputedStyle","FRAME_DURATION","hasRelativeStackingContext","fun","called","memoize","isDifferent","scaleRect","DOMService","addOffset","addition","addScroll","boundingOffset","getFontStyles","computedStyles","hasOffsetParent","offsetAtPoint","currentLocation","currentOffset","removeScroll","restrictToView","scrollableParents","parentElements","stackingElementOffset","relativeContextElement","getRelativeContextElement","stackingElementScroll","useRelativePosition","siblingContainer","zIndexStyle","zoomLevel","isZoomed","SCALE","AlignService","_dom","alignElement","elementAlign","fixedMode","relativeRect","absoluteRect","elementRect","scrollPos","elementScrollPosition","stackScale","stackScroll","stackOffset","stackingOffset","removeStackingOffset","PositionService","positionElement","collisions","anchorOffset","flipped","isUnsubscribed","ScrollableService","forElement","parents$$1","elemRect","containerRect","LEFT","RIGHT","DOWN","animationTypes","transformOrigin","AnimationService","animationBuilder","statesFn","playStates","stopPlayer","DEFAULT_OFFSET","PopupComponent","_alignService","domService","_positionService","_resizeService","_scrollableService","animationService","copyAnchorStyles","anchorViewportLeave","initialCheck","updateFixedClass","reposition","animationSubscriptions","onAnimationStart","copyFontStyles","unsubscribeReposition","repositionSubscription","_currentOffset","setContainerStyle","oldOffset","newOffset","oldLeft","oldTop","isDifferentOffset","contentContainer","resizeSensor","alignedOffset","isInViewPort","hasLeaveObservers","PopupComponent_ng_template_3_Template","rootViewContainer","rootComponents","rootViewContainerNode","getComponentRootNode","popupComponentRef","appendPopup","popupInstance","projectComponentInputs","removeElement","popupPositionChange","getComponentFactory","formattedLabelValue","adjustValueToRange","calculateRatio","extractValueFromChanges","ProgressBarBase","roleAttribute","indeterminate","isVertical","reverseClass","indeterminateClass","dirAttribute","ariaMinAttribute","ariaMaxAttribute","ariaValueAttribute","isCompleted","statusWidth","_progressRatio","statusHeight","statusWrapperWidth","statusWrapperHeight","validateRange","ProgressBarComponent","showLabel","labelPosition","isPositionStart","isPositionCenter","isPositionEnd","defaultFormattedValue","numberParts","truncateNumber","onePercent","calculatePercentage","isAnimationInProgress","isAnimationChanged","stopCurrentAnimation","cancelCurrentAnimation","runAnimation","animationFrame","progressStatusElement","progressStatusWrapperElement","getAnimationOptions","startSize","deltaSize","renderValueChange","resetProgress","stopAnimation","animationDuration","previousRatio","previousStatusWidth","previousStatusHeight","progressCssStyle","progressCssClass","emptyCssStyle","emptyCssClass","ProgressBarComponent_span_1_Template","ProgressBarComponent_span_6_Template","MODULES","ScrollViewComponent_li_1_ng_template_1_Template","item_r2","i_r3","inlineListItemStyles","itemTemplateRef","leftArrowClick","rightArrowClick","ScrollViewComponent_div_2_a_1_Template","ScrollViewComponent_div_2_a_2_Template","ScrollViewComponent_div_2_kendo_scrollview_pager_3_Template","arrows","displayLeftArrow","displayRightArrow","i_r2","itemClass","Dir","Next","Prev","EMPTY_OBJ","endless","pageIndex","canMoveNext","canMovePrev","ScrollViewComponent","pagerOverlay","itemChanged","animationState","transitionStyle","isDataSourceEmpty","_activeIndex","transforms","scrollViewClass","scrollViewLightOverlayClass","scrollViewDarkOverlayClass","hostWidth","ariaLive","keyDown","transitionEndHandler","handlePress","initialTouchCoordinate","isDragForbidden","draggedInsideBounds","handleRelease","draggedEnoughToNavigate","changeIndex","isNotBorderItem","pastEnd","isEndReached","ScrollViewComponent_li_1_Template","ScrollViewComponent_div_2_Template","ScrollViewPagerComponent","pagerIndexChange","ScrollViewPagerComponent_li_1_Template","Ci","onRendererClick","tool_r6","displayAnchor","moreToolsTitle","tool_r15","ToolBarComponent_ng_template_3_ng_container_1_Template","allTools","overflowOptions","button_r6","selectedChangeHandler","ToolBarButtonGroupComponent_ng_template_0_span_2_Template","buttonComponents","button_r16","ToolBarButtonGroupComponent_ng_template_2_span_2_Template","onButtonListClick","onMainButtonClick","ToolBarRendererComponent_ng_container_0_ng_template_1_Template","ToolBarRendererComponent_ng_container_1_ng_template_1_Template","RefreshService","onRefresh","findFocusableSibling","prevSibling","makePeeker","getIndexOfFocused","prevKeyCode","nextKeyCode","seekFocusedIndex","seeker","areEqual","getNextKey","getPrevKey","getValueForLocation","displayMode","renderedTool","renderedTools","isPopupFocused","isOverflowButtonFocused","setRenderedTools","rts","moveFocusToToolBar","focusOverflowButton","moveFocusToPopup","blurOverflowButton","focusNext","nextRT","getFocusableTools","isOverflowButtonVisible","focusPrev","lastFocusableRT","prevRT","resetNavigation","firstTool","overFlowButton","overflowButton","rt","focusableRTs","lastFocusedRT","toolbarDisplay","overflowDisplay","getInitialPopupSettings","isRtl","refreshService","cancelRenderedToolsSubscription$","getDir","toolbarKeydownListener","setPopupContentDimensions","onPopupOpen","onPopupClose","borderLeftWidth","borderRightWidth","overflowAnchorWidth","childrenWidth","stretch","overflowKeydownListener","overflowRenderedTools","cachedOverflowAnchorWidth","visibleTools","overflowTools","hideLastVisibleTool","showFirstHiddenTool","renderedElement","popupContentContainer","ToolBarComponent_ng_container_1_Template","ToolBarComponent_button_2_Template","ToolBarComponent_ng_template_3_Template","ToolBarComponent_kendo_resize_sensor_7_Template","LocalizedToolbarMessagesDirective","ToolBarRendererComponent","ToolBarButtonComponent_1","overflowButtonElement","toolbarButtonElement","ToolBarButtonGroupComponent_1","ToolBarButtonComponent_ng_template_0_Template","ToolBarButtonComponent_ng_template_2_Template","ToolBarButtonGroupComponent","buttonElements","getButtonGroup","nextKey","prevKey","peekAtIndex","isUnmodified","overflowButtonGroup","toolbarButtonGroup","ToolBarButtonGroupComponent_ng_template_0_Template","ToolBarButtonGroupComponent_ng_template_2_Template","ToolBarButtonListComponent","ToolBarButtonListComponent_button_0_Template","ToolBarDropDownButtonComponent_1","ToolBarDropDownButtonComponent","overflowButtons","overflowDropDownButtonButtonList","ob","toolbarDropDownButton","ToolBarSplitButtonComponent_1","dropdownButton","dropDownButtonComponent","ToolBarDropDownButtonComponent_ng_template_0_Template","ToolBarDropDownButtonComponent_ng_template_2_Template","ToolBarSplitButtonComponent","overflowSplitButton","overflowSplitButtonButtonList","toolbarSplitButton","ToolBarSeparatorComponent_1","ToolBarSplitButtonComponent_ng_template_0_Template","ToolBarSplitButtonComponent_ng_template_2_Template","ToolBarSeparatorComponent","ToolBarSeparatorComponent_ng_template_0_Template","RendererService","findNextFocusableSibling","findPrevFocusableSibling","rendererService","rendererClick","refreshSubscription","isDisplayed","ToolBarRendererComponent_ng_container_0_Template","ToolBarRendererComponent_ng_container_1_Template","ToolbarMessages","ɵToolbarMessages_BaseFactory","LocalizedToolbarMessagesDirective_1","ToolbarCustomMessagesComponent_1","ToolbarCustomMessagesComponent","TooltipContentComponent_div_2_ng_template_1_Template","calloutPositionClass","TOOLTIP_SETTINGS","TooltipSettings","inputcollision","isDocumentNode","DOCUMENT_POSITION_CONTAINED_BY","TooltipContentComponent","tooltipWidth","tooltipHeight","callout","calloutStyles","calloutSize","isFlip","cssPosition","updateCalloutPosition","offsetProperty","anchorCenter","getCenterOffset","contentCenter","i18n_0","TooltipContentComponent_div_2_Template","TooltipContentComponent_ng_template_3_Template","TooltipContentComponent_ng_template_4_Template","TooltipContentComponent_div_5_Template","TooltipContentComponent_div_6_Template","legacySettings","validPositions","validShowOptions","anchorTitleSubscription","filterElement","hideElementTitle","mouseOverSubscription","onMouseOver","mouseOutSubscription","onMouseOut","showTimeout","showContent","popupMouseOutSubscription","previousAnchor","verifyProperties","subscribeClick","mouseClickSubscription","popupPositionChangeSubscription","anchorRef","bindContent","contentComponent","alignSettings","popupMargin","tooltipClass","onMouseClick","containsItem","qr","Ii","TreeViewComponent_kendo_textbox_0_ng_template_2_Template","filterInputPlaceholder","node_r2","expandNode","TreeViewGroupComponent_li_0_ng_container_6_ng_template_1_Template","nodeTemplateRef","nodeText","expandIcons","touchActions","loadMoreButtonTemplateRef","nextFields","loadMoreService","TreeViewGroupComponent_li_0_span_2_Template","TreeViewGroupComponent_li_0_kendo_checkbox_3_Template","TreeViewGroupComponent_li_0_ng_container_6_Template","TreeViewGroupComponent_li_0_ng_container_7_Template","TreeViewGroupComponent_li_0_ul_8_Template","parentDataItem","totalNodesCount","TreeViewGroupComponent_li_1_4_ng_template_0_Template","loadMoreButtonIndex","TreeViewGroupComponent_li_1_span_2_Template","TreeViewGroupComponent_li_1_4_Template","TreeViewGroupComponent_li_1_ng_container_5_Template","loadingMoreNodes","statusIconClass","DragClueComponent_1_ng_template_0_Template","DropHintComponent_1_ng_template_0_ng_template_0_Template","DropHintComponent_1_ng_template_0_Template","DataChangeNotificationService","ExpandStateService","IndexBuilderService","INDEX_SEPARATOR","indexForLevel","lastLevelIndex","LoadingNotificationService","notifyLoaded","closestWithMatch","isBoolean","closestNode","isLoadMoreButton","focusableNode","nodeId","dataItemsEqual","getDataItem","isArrayWithAtLeastOneItem","filterTree","isMatch","matchByFieldAndCase","containsMatches","setParentChain","makeAllVisible","startswith","endswith","matchByCase","buildTreeIndex","sameValues","safeChildren","lastVisibleNode","nodesCount","ib","firstVisibleNode","lastVisibleChild","visibleSibling","firstFocusableNode","parentLevel","findVisibleChild","findVisiblePrev","levelIndex","prevNodesHidden","currentNode","findVisibleNext","hasVisibleChildren","registerItem","loadMoreButton","unregisterItem","childLevel","indexToMatch","isLeaf","expands","moves","checks","selects","loadMore","focusableItem","moveToFirstVisibleChild","moveToParent","handleSpace","_model","isActiveExpanded","notifyMove","activateParent","activateIndex","activateClosest","activateFocusable","selectIndex","notifyLoadMore","itemAtIndex","moveAction","notifyExpand","navigationState","NodeChildrenService","childrenLoaded","LoadMoreButtonTemplateDirective","isFirstSelected","setFirstSelected","INDEX_REGEX","TreeViewLookupService","currentLookup","registerChildren","replaceItem","addToParent","mapChildren","hasItem","parentItem","expandService","nodeChildrenService","treeViewLookupService","dataChangeNotification","fetchNodes","nodeDragStart","nodeDrag","nodeDrop","nodeDragEnd","nodeDblClick","_animate","loadMoreButtonTemplate","_hasChildren","_isExpanded","_isChecked","_isSelected","preloadChildNodes","attachDomHandlers","rebindChildren","collapseNode","getNodePageSize","verifyLoadMoreService","getGroupSize","setNodePageSize","setGroupSize","registerLookupItems","focusHandler","blurHandler","currentLevelIndex","buildTreeItem","assetsContainer","TreeViewComponent_kendo_textbox_0_Template","TreeViewGroupComponent","loadingService","indexBuilder","kGroupClass","initialNodesLoaded","singleRecordSubscriptions","moreNodesAvailable","registerLoadedNodes","getTotalNodesCount","nodesSubscription","loadMoreNodesSubscription","subscribeToNodesChange","loadMoreNodes","setNodeChildren","mapToTreeItem","fetchMoreNodes","loadMoreLocalNodes","initialLoadMoreButtonIndex","getInitialPageSize","reselectItemAt","finalize","emitChildrenLoaded","contentChildren","mappedChildren","TreeViewGroupComponent_li_0_Template","TreeViewGroupComponent_li_1_Template","TreeViewItemDirective","LoadingIndicatorDirective","CheckBoxComponent","TreeViewItemContentDirective","DEFAULT_FILTER_EXPAND_SETTINGS","maxAutoExpandResults","expandMatches","expandedOnClear","ExpandDirective","expandOnFilter","expandedKeysChange","_expandedKeys","originalExpandedKeys","isFiltered","updateExpandedNodes","autoExpandMatches","getEveryExpandKey","toggleExpand","handleAutoExpand","expandedKeys","filterExpandSettings","expandKey","matchCount","indicesToExpand","SelectDirective","selectActions","selectMultiple","single","selectSingle","_selectedKeys","getAriaMultiselectable","selectionSettings","selectKey","DropAction","InsertTop","InsertBottom","InsertMiddle","Invalid","DropPosition","Over","Before","After","initializer","setValid","getDropPosition","draggedItem","targetTreeView","containerOffset","getContentElement","targetChildOfDraggedItem","itemViewPortCoords","itemDivisionHeight","pointerPosition","itemTop","treeItemFromEventTarget","dropTarget","collapseEmptyParent","parentNodes","expandDropTarget","getDropTarget","updateMovedItemIndex","originalIndex","movedItemNewIndexParts","originalItemIndexParts","originalItemParentPathLength","originalItemParentPath","movedItemParentPath","originalItemIndexLevel","originalItemLevelIndex","movedItemLevelIndex","SCROLLBAR_REG_EXP","isTopReached","isBottomReached","scrollElementBy","initialScrollTop","iterations","copyPageSize","sourceGroupSize","incrementPageSize","currentPageSize","decrementPageSize","hierarchyBinding","dropPosition","sourceTree","destinationTree","clonedSourceDataItem","destinationChildren","childrenFor","childrenField","movedItemNewIndex","destinationParentNodes","getParentNodes","shiftIndex","updatedParent","sourceParentNodes","sourceItemIndex","DragClueComponent","posistionStyle","DragClueComponent_ng_container_0_Template","DragClueComponent_1_Template","DragAndDropAssetService","_componentRef","DragClueService","clueComponentFactory","cancelReturnAnimation","cancelScroll","animateDragClueToElementPosition","targetElementViewPortCoords","clueElementViewPortCoords","returnAnimation","updateDragClueData","dragClue","updateText","scrollableContainer","hasOverflow","getScrollableContainer","clueRect","firstVisibleClientTopPart","topLimit","bottomLimit","scrollInterval","DropHintComponent","pointerEvents","DropHintComponent_div_0_Template","DropHintComponent_1_Template","DropHintService","hintComponentFactory","updateDropHintData","dropHint","DragClueTemplateDirective","DropHintTemplateDirective","DEFAULT_SCROLL_SETTINGS","DragAndDropDirective","dragClueService","dropHintService","allowCopy","dropZoneTreeViews","startDragAfter","autoScroll","userSelectStyle","scrollSettings","initalizeDraggable","dragClueTemplate","dropHintTemplate","pendingDragStartEvent","shouldInitiateDragStart","initiateDragStart","getTargetTreeView","dropHintAnchor","dropAction","previousElementSibling","getDropAction","updateDropHintState","updateDragClueState","notifyDragEnd","anchorViewPortCoords","notifyDragStart","TreeItemDragStartEvent","dragEvent","TreeItemDropEvent","disableAnimationsForNextTick","dragEndEvent","currentPointerCoords","dragStartEvent","getContainerOffset","DEFAULT_FILTER_SETTINGS","FilteringBase","visibleNodes","_filterSettings","filterSettings","handleFilterChange","filterData","resetNodesVisibility","updateVisibleNodes","mapToWrappers","currentLevelNodes","HierarchyBindingDirective","dragAndDropDirective","originalData","shouldFilter","_childrenField","HierarchyEditingService","_loading","loadingNotifications","flatBinding","destinationItemId","idField","parentIdField","getLastVisibleChildNodeIndex","rebindData","fetchChildNodes","destinationItemParentId","addChildNodes","sourceDataItem","removeChildNodes","itemChildren","fetchAllDescendantNodes","visibleNodesCount","visibleChildren","findChildren","indexBuilder$1","mapToTree","allNodes","FlatDataBindingDirective","reduceRight","FlatEditingService","buildItem","lookupService","ariaChecked","isInitialized","Ct","treeItem","parentTreeItem","registerNavigationItem","setAriaAttributes","setDisabledClass","updateTabIndex","moveLookupItem","moveNavigationItem","updateNodeAvailability","activateItem","shouldExpand","expandable","setClass","initialSelection","updateFocusClass","updateSelectionClass","checkStateChange","checkState","classWrapper","Gr","fileTemplate","fileInfoTemplate","files_r1","FileListComponent_ng_template_0_3_ng_template_0_Template","FileListComponent_ng_template_0_kendo_upload_file_list_single_item_1_Template","FileListComponent_ng_template_0_kendo_upload_file_list_multiple_items_2_Template","FileListComponent_ng_template_0_3_Template","onRetryClick","retryFocused","retryButtonTitle","onPauseResumeClick","pauseResumeFocused","pauseResumeButtonTitle","onRemoveCancelClick","actionFocused","isUploading","actionButtonTitle","file_r3","fileStatusText","FileListMultipleItemsComponent_ng_container_5_span_1_Template","isUploadSuccessful","isUploadFailed","batchStatusText","FileListMultipleItemsComponent_6_ng_template_0_Template","_c21","isNotYetUploaded","_c22","FileListSingleItemComponent_6_ng_template_0_Template","_c66","_c67","_c68","Failed","Uploaded","Uploading","Paused","_files","allFiles","setFilesState","setFilesStateByUid","transformed","filesToUpload","notUploaded","currentFiles","currentFilesValid","firstFileToUpload","getFilesWithState","hasFileWithState","fileStates","percentComplete","fileGroupMap","audio","txt","presentation","programming","discImage","stripPath","slashIndex","getFileExtension","validateInitialFileInfo","getInitialFileInfo","fakeFile","getFileInfo","fileSize","getAllFileInfo","rawFiles","allFileInfo","fileHasValidationErrors","filesHaveValidationErrors","assignGuidToFiles","isUnique","IGNORE_TARGET_CLASSES","UPLOAD_CLASSES","totalChunks","initialChunkInfo","retries","UploadService","http","cancelEvent","clearEvent","completeEvent","errorEvent","pauseEvent","removeEvent","resumeEvent","selectEvent","successEvent","uploadEvent","uploadProgressEvent","changeEvent","concurrent","removeField","removeHeaders","HttpHeaders","removeMethod","removeUrl","saveHeaders","saveMethod","saveUrl","autoRetryAfter","maxAutoRetries","resumable","chunkMap","ChunkMap","FileMap","setChunkSettings","addFiles","selectEventArgs","uploadFiles","flatFiles","addInitialFiles","initialFiles","addInitialFileSelectFiles","convertFileToFileInfo","resumeFile","fileToResume","ResumeEvent","_uploadFiles","pauseFile","pausedFile","PauseEvent","removeFiles","removedFiles","removeEventArgs","RemoveEvent","cloneRequestHeaders","performRemove","cancelFiles","canceledFiles","cancelEventArgs","CancelEvent","checkAllComplete","clearFiles","clearEventArgs","ClearEvent","retryFiles","filesToRetry","uploadEventArgs","UploadEvent","httpSubcription","performUpload","fileNames","populateRemoveFormData","populateRequestOptions","removeRequest","HttpRequest","onSuccess","populateUploadFormData","uploadRequest","onProgress","successResponse","onChunkProgress","isChunkUploadComplete","updateChunkInfo","removeChunkInfo","successArgs","SuccessEvent","errorResponse","maxRetries","chunkInfo","errorArgs","progressArgs","UploadProgressEvent","areAllSelectedFilesHandled","shouldUploadNextFile","cloned","reportProgress","clientData","FormData","populateClientFormData","getNextChunk","getChunkMetadata","getChunkInfo","chunkIndex","contentType","fileUid","uploadService","onActionButtonAction","onActionButtonFocus","onFileAction","onFileFocus","onWrapperFocus","onSelectButtonFocus","actionButtonsVisible","_focusedIndex","computeKeys","shifted","handleDown","handleLeft","handleRight","focusSelectButton","lastFileIndex","fileCount","FileTemplateDirective","DropZoneService","addComponent","zoneId","getComponents","FileInfoTemplateDirective","FileSelectComponent_1","FILESELECT_VALUE_ACCESSOR","FileSelectComponent","dropZoneService","showFileList","hostDefaultClasses","_restrictions","subscribeBlur","subscribeFocus","attachEventHandlers","setDefaultSettings","parsedRestrictions","fileSelectButton","wrapperFocusSubscription","selectButtonFocusSubscription","removeFileByUid","selectButtonTabIndex","onFileSelectButtonFocus","onFileSelectButtonBlur","i18n_2","FileSelectComponent_ul_10_Template","DropZoneInternalDirective","FileSelectDirective","FileListComponent","clearSelectedFiles","dropFilesHere","externalDropFilesHere","filesBatchStatus","filesBatchStatusFailed","filesBatchStatusUploaded","fileStatusFailed","fileStatusUploaded","headerStatusPaused","headerStatusUploaded","headerStatusUploading","invalidFileExtension","invalidMaxFileSize","invalidMinFileSize","uploadSelectedFiles","INVALIDMAXFILESIZE","INVALIDMINFILESIZE","INVALIDFILEEXTENSION","validateFileExtension","validateFileSize","validateFiles","restrictionInfo","extensions","parseAllowedExtensions","DropZoneBase","hoverClass","hideIntervalElement","onElementDragEnterListener","lastDragElement","calculateTimeDiff","onElementDragOverListener","prevEvent","initialClassName","hideIntervalDocument","unsubscribeDocumentDragEnter","onDocumentDragEnter","unsubscribeDocumentDragOver","onDocumentDragOver","lastDragDocument","onDropListener","droppedFiles","dataTransfer","FileListItemDirective","fileClass","uidAttribute","kFileError","kFileInvalid","kFileProgress","kFileSuccess","kStateFocused","onItemFocus","fileListItems","actionSubscription","itemActionHandler","hasDelete","FileListComponent_ng_template_0_Template","FileListSingleItemComponent","FileListMultipleItemsComponent","FileListItemActionButtonComponent","isFailed","isResumable","isActionButtonVisible","FileListItemActionButtonComponent_span_1_Template","FileListItemActionButtonComponent_button_2_Template","FileListItemActionButtonComponent_button_3_Template","FileListItemActionButtonComponent_button_4_Template","FileListItemBase","progressComplete","subscribeUploadProgress","uploadProgressHandler","uploadProgressSubscription","getFileValidationMessage","validationMessage","getTotalFilesSizeMessage","showProgress","filesHaveErrors","FileListMultipleItemsComponent_ng_container_5_Template","FileListMultipleItemsComponent_6_Template","fileGroupClass","getFileGroupCssClass","FileListSingleItemComponent_ng_container_5_Template","FileListSingleItemComponent_6_Template","nameAttribute","multipleAttribute","disabledAttribute","onInputChange","selectedFiles","inputFiles","native","UploadComponent_1","UPLOAD_VALUE_ACCESSOR","_ngZone","chunkable","upload","uploadProgress","newChunkable","showActionButtons","areVisible","hasFilesToUpload","uploadingFiles","showTotalStatus","pauseFileByUid","resumeFileByUid","removeFilesByUid","retryUploadByUid","cancelUploadByUid","i18n_25","i18n_33","i18n_39","UploadComponent_kendo_upload_status_total_8_Template","UploadComponent_ul_11_Template","UploadComponent_kendo_upload_action_buttons_12_Template","UploadStatusTotalComponent","UploadActionButtonsComponent","hostDefaultClass","onAction","actionButtonsEndClassName","actionButtonsStretchedClassName","actionButtonsStartClassName","actionButtonsCenterClassName","uploadButton","ARC","BLACK","BOTTOM","CENTER","CIRCLE","CROSS","DEFAULT_FONT","DEFAULT_PRECISION","HEIGHT","INSIDE","MAX_VALUE","MIN_VALUE","OBJECT","OUTSIDE","ROUNDED_RECT","TOP","VALUE","WHITE","WIDTH","classArray","SPACE_REGEX","angle1","angle2","propInit","propType","isFunction","destProp","deepExtendOne","SIZE_STYLES_REGEX","stylesArray","isSizeField","styleValue","defaultSpacing","_key","TRIGGER","deepExtend","callObserver","fnName","webkit","Lr","bi","deg","eventElement","eventCoordinates","objectKey","rad","unbindEvents","valueOrDefault","FontLoader","fetchFonts","logToConsole","loadFonts","Matrix","matrixRegexp","matrixString","members","parseMatrix","isDark","DELETED","_set","supportsSet","SetWrapper","LegacySet","relativeValue","scaleMultiplier","Class","degrees","cosT","sinT","cx","distanceTo","y2","targetBox","wrapPoint","arrayPoint","Box","alignTo","targetCenter","getSpacing","unpad","getHash","rotatePoint","r3","toRect","hasSize","alignment","sizeFunc","inArray","Ring","newRadius","radianAngle","ay","adjacentBox","midAndle","midPoint","hw","sa","ca","vector","startPoint","startVector","endVector","clockwise","getBBox","allAngles","numericComparer","startAngleIndex","endAngleIndex","angles","createRing","arc","radiusX","radiusY","innerEnd","pointAt","ShapeBuilder","ue","asin","easingFunctions","loop","_stopped","wallTime","easingPosition","initUserOptions","reflow","currentChild","getSender","getService","chartService","translateChildren","childrenCount","renderVisual","addVisual","renderChildren","createAnimation","renderComplete","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","here","traverse","matched","hasHighlight","createHighlight","customVisual","_highlight","highlightOptions","highlightVisualArgs","createGradientOverlay","gradientOptions","createGradient","supportsPointInactiveOpacity","ChartElement","shrinkToFit","hasSetSize","borderWidth","reflowPaddingBox","vAlign","paddingBox","contentBox","Z","hasBox","visualStyle","setDefaultOptions","BoxElement","pointData","halfWidth","halfHeight","borderRadius","setCornerRadius","visualOptions","ShapeElement","RADIAL","glass","stops","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","grep","rootOptions","gradients","currentBox","boxDiff","createBackground","hashCode","GRADIENTS","drawingGradient","currentStops","currentStop","innerRadialStops","cleanGradients","_observers","RootElement","_initDirection","groupAxis","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupsSize","maxGroupElementsSize","groupOptions","groupsCount","groupsStart","alignStart","groupStart","groupIdx","groupElements","elementStart","groupElementsCount","groupElementStart","elementBox","groupElementsSize","FloatElement","DrawingText","baseline","ROWS_SPLIT_REGEX","_initContainer","_autoReflow","floatElement","textOptions","visualFn","_boxReflow","visualBox","visualContext","rectToBox","clippedBBox","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","TextBox","titleOptions","widget","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","transformCopy","distanceLeft","distanceRight","alignEnd","AxisLabel","childAlias","noteTemplate","aliasFor","marker","wrapperBox","lineStart","Tt","linePoints","createLine","defaultVisual","alignPathToPixel","implementation","FORMAT_REPLACE_REGEX","vo","formatString","localeAuto","placeholderFormat","isPannable","tickOptions","tickX","tickY","gridLine","lineEnd","ChartService","majorTickSize","minorTickSize","minorTickType","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","createAxisLabel","lineBox","axisX","axisY","visualSize","parseNoteValue","createPlotBands","gridLinesVisual","gridLines","_gridLines","lineGroup","tickLineOptions","tickPositions","skipUnit","createAxisTick","getMajorTickPositions","getMinorTickPositions","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","_plotbandGroup","altAxis","slotX","slotY","getSlot","createPlotBandLabel","bandRect","textbox","createGridLines","axisLineVisible","linePos","lineOptions","createAxisGridLine","sizeFn","titleSize","boxSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","O","positionLabel","labelOffset","labelBox","labelX","labelY","autoRotateLabelAngle","slotWidth","labelAngle","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","defaultText","maxLabelOffset","lastLabel","offsetField","endPosition","maxStartOffset","maxEndOffset","startTick","endTick","rangeSize","valueRange","seriesMin","seriesMax","lineDir","lineInfo","lineSize","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","prepareUserOptions","Axis","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS","WEEKS","MONTHS","YEARS","TIME_PER_MINUTE","TIME_PER_HOUR","TIME_PER_DAY","TIME_PER_WEEK","TIME_PER_MONTH","TIME_PER_YEAR","TIME_PER_UNIT","getTimezoneOffset","addDuration","daysToSubtract","addTicks","startOfWeek","roundedDate","tzDiff","addHours","floorDate","toTime","absoluteDateDiff","startDate","timeIndex","dateIndex","dateDiff","_ticks","categoriesHash","CategoryAxis","srcCategories","definedMin","definedMax","rangeIndices","totalRange","totalRangeIndices","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","firstLabel","getTicks","labelTicks","tickIndices","getTickPositions","positions","_hash","hasMinor","filterOutOfRangePositions","slotBox","singleSlot","limitSlot","limittedSlot","pointCategoryIndex","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","zoomRange","labelContext","hideOutOfRangeNotes","pan","pointsRange","rangeMin","rangeMax","_categoriesMap","dateEquals","currentRangeIndices","mapCategories","HashMap","DateLabelFormats","BASE_UNITS","FIT","_range","sparseArrayLimits","displayIndices","displayRange","valuesCount","dateAt","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","_indices","minIdx","maxIdx","roundedStep","startUnit","startStep","categoryLimits","categoryRange","span","autoUnit","unitSteps","nextStep","autoUnitIx","totalUnits","dataRange","_parsed","parseDates","panning","userSetBaseUnit","userSetBaseUnitStep","useDefault","lastCategory","minDiff","defaultBaseUnit","autoBaseUnit","initUnit","divisionOptions","dataRangeOptions","divisionRange","EmptyDateRange","dateComparer","totalLimits","panRange","datesRange","indicesRange","fit","minDelta","maxDelta","maxDiff","rangeDiff","autoBaseUnitStep","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","autoRotateRangeLabels","hideOverlappingLabels","rangeLabel","firstRangeLabel","lastRangeLabel","rotateLabel","MIN_VALUE_RANGE","autoOptions","autoMin","axisMin","autoAxisMin","autoMax","axisMax","autoAxisMax","autoMajorUnit","roundToMajorUnit","remainderClose","autoAxisOptions","totalOptions","totalAxisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","axisOptions","totalMajorUnit","NumericAxis","getDivisions","divisions","skipStep","limitCoordinate","axisCrossingValues","timeUnits","baseUnitTime","ceilDate","actualUnits","unitsToAdd","tail","applyDefaults","limittedRange","logMaxRemainder","throwNegativeValuesError","initRange","logMin","logMax","LogarithmicAxis","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","minorOptions","_minorIntervalOptions","minorStep","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","intervalAngle","reflowLabels","measureBox","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","plotBandSlot","totalDivs","slotAngle","fromValue","slotStart","RadarCategoryAxis","GridLinesMixin","instanceOptions","PolarAxis","polarAxis","bandStyle","shape","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","angularDistance","midAngle","gamma","axisType","minorSkipStep","RadarNumericAxis","RadarNumericAxisMixin","RadarLogarithmicAxis","dataPoints","removeDuplicates","initialControlPoint","lastControlPoint","tangent","controlOut","firstControlPoint","secondControlPoint","controlPoints","cp0","invertAxis","lineFunction","calculateFunction","isLine","restrict","switchOrientation","monotonic","isMonotonicByField","numberSign","oldXField","restrictControlPoint","cp","t1","t2","controlPoint","ai","_axis","ChartAxis","chartsVisual","chartContainer","_pane","bs","backgroundVisual","_bgVisual","Aggregates","sumOrNull","countNumbers","Qn","_valueFields","_otherFields","_nullValue","_undefinedValue","valueFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","initialValue","srcFields","srcFieldName","sourceFieldName","SeriesBinder","percentRegex","standardDeviationRegex","ll","errorValue","initGlobalRanges","deviationMatch","valueGetter","createValueGetter","getAverage","deviation","getStandardDeviation","errorRange","globalRange","standardError","getStandardError","binder","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","START_SCALE","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","ZERO","INTERPOLATE","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","COLUMN","DONUT","FUNNEL","HEATMAP","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","SERIES_HOVER","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT_END","SHOW_TOOLTIP","HIDE_TOOLTIP","LOGARITHMIC","CATEGORY","INSIDE_END","OUTSIDE_END","MOUSEWHEEL","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","ErrorBarBase","uh","seriesValueAxis","dryRun","needsEval","excluded","evalOptions","seriesCount","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","otherStack","plotRange","isStacked","positive","isStackedBar","otherValue","categoryAxisCrossingValue","convertableToNumber","stackLimits","stackName","pIx","updateStackRange","chartSeries","limitsCache","errorTotals","negative","addErrorBar","lowValue","highValue","seriesErrorRanges","ErrorRangeCalculator","addPointErrorBar","stackedErrorRange","errorBar","CategoricalErrorBar","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","currentSeries","categorySlot","valueSlot","pointSlot","aboveAxis","reflowPoint","reflowCategories","limitPoints","limitPoint","_outOfRangeCallback","currentCategory","_bindPoint","outOfRangePoint","_bindCache","bindCache","formatPointValue","CategoricalChart","Pc","createNote","tooltipTracking","_rendered","markerBorder","brightness","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","shadow","highlightVisual","halfSize","tooltipAnchor","clipBox","overlapsBox","unclipElements","LinePoint","PointEventsMixin","NoteMixin","toGeometryPoints","segmentVisual","getNearestPoint","lintPoint","stepAxis","stepDir","calculateStepPoints","previousPoint","toGeometryPoint","stepPoint","StepLineSegment","StepLineMixin","b0","curveProcessor","CurveProcessor","Yd","renderSegments","lastSegment","_segments","sortedPoints","sortPoints","pointCount","seriesMissingValues","createSegment","_addSegment","allPoints","nearestPoint","nearestPointDistance","pointDistance","pointBox","_setEnd","interpolateValue","suspend","setX","ClipAnimation","clipPath","anyHasZIndex","_setChildrenAnimation","animationPoints","SplineSegment","LineChart","LineChartMixin","ClipAnimationMixin","prevSegment","stackPoints","createFill","createStroke","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","AreaSegment","StepAreaSegment","j0","controlIn","previousSegment","_gapStackPoints","SplineAreaSegment","_stackPoints","stackPoint","_outOfRangeMinPoint","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","chartAxisRanges","chartRange","textBox","alignToClipBox","parentBox","BarLabel","rectVisual","createRect","strokeOpacity","getBorderColor","lineJoin","hasGradientOverlay","baseColor","_brightness","Bar","forEachReverse","slots","slotSize","ClusterLayout","positionAxis","StackWrap","clusterType","stackType","cluster","getStackWrap","stackGroup","wraps","stackWrap","_stackGroup","zeroSlot","stackAxis","childrenLength","_setAnimationOptions","pointVisual","BarChart","ocSlot","lhSlot","realBody","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","Candlestick","areNumbers","splitValue","CandlestickChart","whiskerSlot","boxSlot","reflowBoxSlot","reflowWhiskerSlot","medianSlot","meanSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","calcMedianPoints","renderOutliers","outerFence","outlierValue","markersBorder","reflowOutliers","BoxPlot","Yc","ap","VerticalBoxPlot","filterOutliers","yd","seriesAxes","_initFields","xAxisRanges","yAxisRanges","valueErrorField","ScatterErrorBar","createMissingValue","xAxisName","yAxisName","xAxisRange","yAxisRange","namedXAxes","namedYAxes","currentSeriesPoints","ScatterChart","highlightGroup","Bubble","_maxSize","updateBubblesSize","minR","maxR","minArea","areaRatio","baseZIndex","BubbleChart","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","Bullet","seriesItem","wrapData","bulletOptions","BulletChart","pointColor","formatService","initAxisName","showAt","stickyMode","getAnchor","CrosshairTooltip","moveLine","getBox","axisLineBox","currentAxis","Crosshair","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","ChartContainer","ID","paneID","Pane","appendAxis","appendAxisAt","appendChart","removeAxis","removeChart","allAxes","vGridLines","hGridLines","notifyRender","axisValueField","ChartPane","segmentVisible","sampleCategory","dateCategory","equalsIgnoreCase","AREA_REGEX","pointHasValue","outPoint","hasMinPoint","hasMaxPoint","minPoint","maxPoint","findNext","_outOfRangeMaxPoint","initSeries","crosshairs","createPanes","createCrosshairs","paneOptions","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItemsLabels","seriesVisible","itemLabelOptions","markerColor","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","any","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","panesArray","crossingAxes","crossingValues","valuesToAdd","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","shrinkAxisWidth","axisGroupBox","shrinkAxisHeight","shrinked","fitAxes","paneBox","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","allPaneAxes","rotated","chartPane","remainingHeight","autoHeightPanes","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","isTransparent","bg","pointsByCategoryIndex","pointsBySeriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","isSingleAxis","PlotAreaBase","Ws","_dispatchEvent","parentObj","defaultAggregates","seriesFields","_seriesFields","rootAggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","seriesType","DefaultAggregates","fromOptions","toOptions","labelFrom","_createLabel","labelTo","RangeBar","RangeBarChart","plotLimits","wl","initLabelsFormat","fromPoint","RangeLinePoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaPoint","Qd","toPoints","fromSegments","fromPoints","toPath","fromPath","eu","RangeAreaSegment","createCurveSegments","StepRangeAreaSegment","segmentType","SplineRangeAreaSegment","fromSlot","toSlot","RangeAreaChart","yu","oPoints","cPoints","lhPoints","oSlot","cSlot","F0","OHLCPoint","WaterfallSegment","qf","createSegments","totalCategories","mo","prevPoint","AREA_SERIES","OUT_OF_RANGE_SERIES","namedCategoryAxes","valueAxisRangeTracker","AxisGroupRangeTracker","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","filterSeriesByType","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","srcSeries","processedSeries","_currentPointsCache","_seriesPointsCache","axisPane","aggregateSeries","filterSeries","outOfRangePoints","createOutOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","getFn","getDateField","aggregator","SeriesAggregator","categoryItem","categoriesToAdd","stackableChartOptions","categoryAxes","unique","axisSeries","groupSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","AreaChart","rangeAreaChart","OHLCChart","BoxPlotChart","waterfallChart","WaterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","isJustified","X1","primaryAxis","tracker","defaultRange","defaultAxisRange","eventType","_eventCoordinates","pointPane","appendIfNotNull","singleItemOrArray","updateAxisOptions","targetOptions","CategoricalPlotArea","PlotAreaEventsMixin","ATTRIBUTE_MAP","geometryChange","renderData","invalidate","optionsChange","allAttr","mapFill","removeAttr","mapStroke","transformChange","printPath","currentType","printPoints","segmentStart","segmentEnd","renderLinecap","renderDashType","renderStroke","renderAllAttr","SOLID","dashArray","DASH_ARRAYS","BUTT","renderFill","renderId","renderStyle","renderOpacity","renderAttr","renderDefinitions","renderTransform","dp","PathNode","eh","Ou","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","mapPosition","mapSource","renderPosition","htmlEncode","renderSource","Au","cornerRadius","rx","ry","ENTITY_REGEX","decodeEntities","mapStyle","setY","renderContent","normalizeText","renderTextAnchor","NODE_MAP","ArcNode","CircleNode","GroupNode","ImageNode","MultiPathNode","RectNode","TextNode","BaseSurface","_root","RootNode","elementStyles","renderSVG","_rootElement","firstElementChild","ctm","getScreenCTM","alignToScreen","attachTo","mouseover","_mouseenter","_mouseleave","mousemove","_mousemove","viewBox","_offset","_visual","_resize","SVG_NS","hasDocument","hasFeature","SurfaceFactory","SVGSurface","CanvasSurface","preferred","Dd","_defaultPrevented","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","mouseKey","acceptKey","_panAxes","toChartAxisRanges","updatedAxes","_marquee","zoomPane","_zoomPane","_elementOffset","_zoomPaneClipBox","_selectionPosition","selectionPosition","_updateAxisRanges","ZoomSelection","updateRanges","transofrm","alignContent","justifyContent","lineSpacing","revers","_rect","_fieldMap","fieldMap","groupsSizeField","groupsAxis","justifyAlign","alignStartReverse","_initGroups","groupOrigin","elementOrigin","groupBox","arrangeElements","translateToPoint","bboxes","scaledStart","newStart","_newGroup","addGroup","ke","_addToGroup","legendItem","I0","createContainer","markerOptions","eventSink","_itemOverlay","_legendItemHover","_unsetActivePoint","HORIZONTAL","CUSTOM","createContainers","createLegendTitle","createItems","userAlign","itemsContainer","hasTitle","innerElement","LegendLayout","LegendItem","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","_registry","registry","PlotAreaFactory","_dateAxis","initOptions","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","_mousewheelHandler","_mousewheel","_domEvents","_start","_move","_end","_tap","_press","_gesturestart","_gesturechange","_gestureend","_mwTimeout","_rangeEventArgs","moveTarget","closestHandle","oldRange","na","rightClick","mousewheelDelta","_toModelCoordinates","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","su","tooltipPoints","_slotAnchor","_defaultAnchor","categoryFormat","slotCenter","centerPoint","SharedTooltip","fromScale","scaleX","scaleY","BarChartAnimation","BubbleAnimation","fadeTo","FadeInAnimation","PieAnimation","missingValue","ScatterLineChart","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","createXYAxis","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","inferredDate","xAxesOptions","yAxesOptions","XYPlotArea","autoTextColor","themeLabels","animationDelay","labelsOptions","labelsDistance","labelHeight","labelWidth","lp","createSegmentVisual","borderOptions","fallbackFill","userSpace","singleSegment","tooltipAlignment","RAD_30","RAD_60","sine","cosine","PieSegment","Tc","createLegendItem","legendOptions","pointVisible","colorsCount","bindSegments","anglePerValue","constantAngle","currentAngle","evalSegmentOptions","segmentOptions","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","firstBox","remaining","_takeDistance","labelDistance","boxX","boxY","hAlignLabel","_connectorLines","connectorsColor","connectorLine","crossing","pointInCircle","As","pieCenter","bboxBottom","reverseValue","ub","PieChart","PieChartMixin","rh","createPieChart","pieChart","DonutSegment","seriesWithoutSize","DonutChart","sh","createPolarAxis","createValueAxis","valueAxisOptions","axisDefaultRange","valueAxisBox","heightDiff","PolarScatterChart","PolarLineChart","vp","_polarAxisCenter","centerSegment","SplinePolarAreaSegment","PolarAreaSegment","_hasMissingValuesGap","xComparer","PolarPlotAreaBase","scatterChart","PolarAreaChart","PolarPlotArea","valueRadius","seriesSegments","groupBySeriesIx","isLastDataPoint","RadarLineChart","cu","Af","ie","SplineRadarAreaSegment","RadarAreaSegment","RadarSegment","slotSector","RadarClusterLayout","Zf","childSector","RadarStackLayout","RadarBarChart","_hasBarCharts","_isStacked100","chartOptions","RadarAreaChart","RadarPlotArea","chartBox","createPath","FunnelSegment","labelPadding","dynamicSlopeReflow","firstSegment","maxSegment","lastUpperSide","previousHeight","nextSegment","nextPercentage","constantSlopeReflow","decreasingWidth","finalNarrow","FunnelChart","labelColor","isRoundRect","halfBorderWidth","HeatmapPoint","minLightnessOffset","hsl","toHSL","indexX","indexY","xRange","yRange","xIndex","yIndex","yIn","HeatmapChart","createAxisLabels","xCategories","createHashSet","yCategories","createHeatmapChart","xAxisOptions","yAxisOptions","HeatmapPlotArea","COLOR","FIRST","MAX","NOTE_TEXT","PiePlotArea","createDonutChart","donutChart","createFunnelChart","funnelChart","errorLow","errorHigh","AXIS_NAMES","MOUSEMOVE","CONTEXTMENU","MOUSELEAVE","themeOptions","addObserver","_initElement","_originalOptions","_theme","_initTheme","_initHandlers","_initSurface","fontLoaded","_redraw","_attachEvents","_setElementClass","seriesCopies","aliases","resolveAxisAliases","applySeriesColors","getSize","currentSize","_selections","_destroySelections","_noTransitionsRedraw","paneName","ChartPlotArea","seriesName","pointByCategoryName","togglePointsHighlight","_sharedTooltip","_tooltip","_surfaceWrap","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_destroyView","Highlight","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","exportOptions","clearMissingValues","_pannable","_zoomSelection","_mousewheelZoom","MousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","_createSharedTooltip","themeAxisDefaults","axisColor","mapAxisOptions","applyAxisDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","applySeriesDefaults","seriesColor","_createPlotArea","_modelOptions","skipSeries","selections","_selectStart","_select","_selectEnd","_clickHandler","_mouseleaveHandler","_mouseover","_mouseout","throttle","removeObserver","eventNames","_toDocumentCoordinates","_shouldAttachMouseMove","_hoveredPoint","_stopChartHandlers","_gestureDistance","suspendTracking","_zooming","resumeTracking","mousewheelZoom","scaleDelta","_drawingChartElement","_startNavigation","_suppressHover","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","_padding","inverseTransform","transformMatrix","parentMatrix","multiplyCopy","elementScale","invert","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","activePoint","_activePoint","multipleSeries","hasInactiveOpacity","_hasInactiveOpacity","_updateHoveredPoint","_displayTooltip","_displayInactiveOpacity","_activeChartInstance","_updateSeriesOpacity","_applySeriesOpacity","highlightPoints","chartInstance","_chartInstanceFromPoint","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","hoveredPoint","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","activeSeries","shouldHighlight","hasDefaultInactiveOpacity","seriesInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","autoBind","bindCategoryAxisFromSeries","uniqueCategories","bindable","onAxis","isDateAxis","dataIx","dataRow","srcDates","rowCount","rowIx","colIx","transpose","_isBindable","transitionsState","updateMouseMoveHandler","setIntlService","rangeColumn","verticalLine","pie","donut","verticalArea","scatter","scatterLine","ohlc","polarArea","polarLine","radarArea","radarLine","DATA_FIELDS","fieldValue","originalValue","mt","ChartSharedTooltip","NO_CROSSHAIR","_initialWidth","stage","displayState","_autoWidth","inline","_calculateWidth","currentChart","pointsCount","pointWidth","wrapNumber","ys","_initialOpacity","chartPadding","minPos","clearHideTimeout","_visible","tooltipStyle","borderTopWidth","_hideTimeout","_hideAnimation","FadeOutAnimation","hideDelay","NavigatorHint","NAVIGATOR_PANE","NAVIGATOR_AXIS","chartObserver","_redrawSelf","initSelection","mainAxis","axisClone","ClonedObject","filterAxes","silent","slavePanes","_drag","navigatorAxis","naviRange","inNavigator","showHint","_dragEnd","readSelection","_zoom","fromIx","toIx","On","_zoomEnd","__navi","naviOptions","Navigator","attachAxes","attachSeries","valueAxes","justifyAxis","equallySpacedSeries","_collapse","navigatorSeries","dateField","stockDefaults","destroyNavigator","_fullRedraw","_seriesCount","copyNavigatorCategories","paintable","measurable","GeometryArc","_bbox","_geometry","rawBBox","Path","curvePoints","curveTo","_isOnPath","Arc","GeometryRect","alignElements","otherAxis","previousBBox","stackElements","createStackElements","stacks","stackSize","addElementToStack","getStacks","startElement","wrapElements","rectSize","PathParser","multiPath","MultiPath","parsePath","ARROW_POINTER","BAR_POINTER","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","getOrigin","setOrigin","fromRect","geo","styleGeometry","styleBox","se","Surface","pointerValue","_setValueOptions","_draw","_visuals","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","defaultSize","_defaultSize","Gauge","tickRenderOptions","tickGroup","renderAxisTick","renderLabels","scaleLine","renderLine","scaleTicks","renderTicks","renderRanges","buildLabelElement","linePath","LinearScale","_oldValue","repaint","Pointer","pointerHalfSize","pointerBox","pointerRangeBox","trackBox","getElementOptions","_margin","LinearPointer","toScale","translateX","ArrowLinearPointerAnimation","pointerShape","elementOptions","newPoints","oldPoints","BarLinearPointerAnimation","minSlot","sizeAxis","p4","pointerPath","oldShape","renderTrack","trackOptions","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","ArrowLinearPointer","BarLinearPointer","plotAreaBox","scaleBox","LinearGauge","tickAngles","getRadiusX","tickStart","tickEnd","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","createRange","rangeGeom","rangeSegment","tickArc","majorTickAngles","drawTicks","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","RadialScale","newAngle","oldAngle","RadialPointerAnimation","Df","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","RadialPointer","_initialPlotArea","fitScale","alignScale","_buildPointers","getDiff","midDiff","oldDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","RadialGauge","rangeLineCap","placeholderRangeAngle","setEndAngle","setStartAngle","addRange","ArcScale","startColor","currentColor","RangePointerAnimation","rangeColor","RangePointer","vm","centerLabelPosition","yLimit","ym","ArcGauge","initProperties","quietZoneLength","addQuietZone","convertedValue","initValue","addData","invalidCharacterError","Encoding","addCheckSum","characterMap","cCheckSumTotal","kCheckSumTotal","kCheckSumMinLength","checkSumMod","DASH_VALUE","DASH","START","STOP","addPattern","addCharacter","setBaseUnit","cValue","getWeightedSum","checksum","weightedSum","weightedValue","Code11","minBaseUnitLength","addStart","pushCheckSum","addStop","prepareValues","characterData","addBase","Code39Base","minRatio","maxRatio","gapWidth","splitCharacter","patternMappings","patternString","minBaseUnit","getBaseUnit","getBaseWidth","addCharacterGap","Code39","Code39ExtendedBase","addExtended","extendedMappings","patternIndex","shiftCharacters","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","SHIFT0","SHIFT1","SHIFT2","SHIFT3","TERMINATION_BAR","checkValues","_getCheckValues","_findCharacterByValue","wightedSum","numberRegex","alphanumericRegex","encoding","is","isCode","pushState","State128","_initMoves","FNC4","SHIFT","encodingState","_moves","maxLength","numberMatch","_moveFNC","_shiftState","_moveState","fnc","previousState","MOVE","states128","State128AB","next4","getSubstring","_initSubStates","dependentStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","applicationIdentifiers","multiKey","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","applicationIdentifier","getApplicationIdentifier","unsupportedAIError","_initStates","checkSum","getNextState","checkSumType","checkSums","checkSumLength","Modulo10","evenSum","oddSum","Modulo11","weight","checkValue","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","keyTable","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","arrToAdd","limitedHeight","Encodings","code11","code39","code39extended","code93","Code93","code93extended","characterByValue","code128","Code128Base","code128a","code128b","code128c","Code128c","msimod10","MsiBase","msimod11","msimod1010","msimod1110","postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean8","Ean13","ean13","errorHandler","defaultErrorHandler","_setOptions","_initSurfaceElement","_createSurface","_destroySurfaceElement","_render","textMargin","encodedValue","textToDisplay","textHeight","barHeight","_getBackground","_getText","_bandsGroup","_getBands","elementWidth","stepX","patternItem","_textbox","chunkLength","bitString","getNextRemainderCell","dataString","getEncodingResult","inputString","errorCorrectionLevel","modes","previousMode","chooseMode","modeString","nextMode","getModes","dataCodewordsCount","DataModeInstances","getStringBitsLength","getDataCodewordsCount","getDataString","EncodingResult","modeIndicator","bitsInCharacterCount","getVersionIndex","getBitsCharacterCount","getModeCountString","toBitsString","QRDataMode","splitInto","inputLength","mod3","NumericQRDataMode","characters","AlphaNumericQRDataMode","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","bc","significantOnes","VersionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","ALPHA_NUMERIC","powersOfTwo","powersOfTwoResult","irregularAlignmentPatternsStartDistance","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","maskPatternConditions","alphaPattern","alphaRegex","alphaNumericRegex","byteRegex","generatorPolynomials","matrices","bit","polynomial","errorCodewordsCount","generator","generatorPolynomial","errorCodewords","multiplyByConstant","xorPolynomials","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","di","codeLength","generatorNumber","toDecimal","polynomialLength","valueString","numberX","numberY","yLength","xLength","dividePolynomials","fillFunctionCell","getNumberAt","quotient","modules","nextX","nextY","scores","rowColumn","previousBits","adjacentBits","darkModules","mod5","generatePowersOfTwo","multiplyPolynomials","generateGeneratorPolynomials","crossPattern","squarePattern","quietZoneSize","dataSize","contentSize","encoder","Utf8Encoder","IsoEncoder","createQRCodeDataEncoder","encodingResult","versionInformation","initialDataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","padDataString","blocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","blockIdx","codewordIdx","generateErrorCodewords","getBlocks","initMatrices","addCentricPattern","addFinderSeparator","addFinderPatterns","startDistance","addAlignmentPatterns","addTimingFunctions","addVersionInformation","addFormatInformation","block","cellVisitor","FreeCellVisitor","fillDataCell","fillData","adjacentSameBits","modulesLength","matrixIndex","scoreFinderPatternOccurance","scoreAdjacentSameBits","calculateDarkModulesRatioScore","scoreMaskMatrixes","optimalMatrix","encodeBCH","encodeVersionInformation","encodedString","encodeFormatInformation","encodeData","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","imageRect","logoSize","_getLogoSize","logoUrl","crossSize","crossOffset","_renderShape","matrixSize","defautLogoSize","SANS","SANS12","SANS16","TRANSPARENT","rangeArea","verticalRangeArea","heatmap","funnel","rangeBar","baseTheme","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","desktopBrowserRxs","safari","opera","mozilla","mobileBrowserRxs","omini","omobile","firefox","mobilesafari","chrome","testRx","rxs","dflt","browserInfo","documentMode","detectDesktopBrowser","minorVersion","device","majorVersion","flatVersion","cordova","PhoneGap","appMode","detectMobileOS","msPointers","MSPointerEvent","PointerEvent","_match","fieldList","setterCache","nextField","arrays","isNumeric","ifElse","pairwise","isNotEmpty","isNotEmptyArray","runOrEmpty","formatDescriptors","formatter","sanitizeDateLiterals","removeAfterDot","directionFormatter","formatSort","formatGroup","formatAggregates","formatDateValue","transformSkip","transformTake","transformGroup","transformSort","transformAggregates","filterFormatter","isNotNullOrEmptyString","toCamelCase","convert","translateAggregate","translateAggregates","translateGroup","hasSubgroups","Member","member","HasSubgroups","Items","compareDesc","descriptorAsFunc","isTransformerResult","__value","aggregateBy","transformers","expandAggregates","functions","fieldAccessor","aggregateName","aggregateAccessor","fieldAggregates","aggregateFunction","calc","NEGATIVE_INFINITY","aggregatesFuncs","aggregatesCombinator","normalizeOperator","equalto","greater","greaterthan","greaterthanequal","isempty","isequalto","isgreaterthan","isgreaterthanorequalto","islessthan","islessthanorequalto","isnotempty","isnotequalto","isnull","less","lessthan","lessthanequal","notequal","notequals","notequalto","notsubstringof","operatorMap","normalizeFilters","normalizeDescriptor","operatorsMap","isnotnull","neq","dateRegExp","transformCompositeFilter","combiner","itemProp","typedGetter","convertValue","transformFilter","compileFilter","normalizeGroups","groupValue","valueToString","__position","groupCombinator","aggregateResult","filteredData","leftLength","rightLength","cursor1","cursor2","composeSortDescriptors","skipCount","takeCount","filterDescriptor","sortDescriptors","reduced","renderPoints","renderPath","cors","exportRoot","surfaceOptions","traversable","renderTo","setTransform","setClip","setOpacity","BaseNode","initClip","clearClip","insertAt","opactity","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","LinearGradient","createLinearGradient","RadialGradient","createRadialGradient","addColorStop","addGradientStops","mozDash","webkitLineDash","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","_surfacePoint","pointShape","loadingStates","resolveDataURL","promiseAll","ShapesQuadTree","rootElements","_enableTracking","_resetCursor","_shapeCursor","_defaultCursor","_getCursor","_setCursor","_suspendedTracking","currentShape","_currentShape","fillText","strokeText","prevOut","prevSeg","bezierCurveTo","closePath","animationFrameProxy","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","resolvedColor","resolveColor","processor","re","channels","normalizeByte","padDigit","percBrightness","DARK_TRESHOLD","Bytes","RGB","HSV","HSL","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","colorNames","toRGB","toDisplay","BaseColor","hue2rgb","browserRxs","matchUserAgent","lastExecTime","throttled","removeSelf","childrenChange","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","_suspended","_observerField","HasObservers","_wrap","composite","OptionsStore","_clear","wrapped","_events","one","handlersIsFunction","_handler","domNode","_kendoNode","elementPadding","accessors","withAccessors","anticlockwise","xRotation","radian","_arcInterval","subIntervalsCount","subIntervalAngle","transformation","nextAngle","_intervalCurvePoints","cp1","cp2","extremeAngles","ellipseExtremeAngles","extremeX","extremeY","currentAngleX","bboxStartAngle","currentAngleY","currentPoint","currentPointX","currentPointY","oldStart","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","PRECISION","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","closeOrLess","calculateAngle","inAngleRange","largeArc","swipe","arcParameters","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","PI_DIV_2","_pointAt","minY","maxY","IDENTITY","originPoint","translateWith","scaleCopy","toMatrix","doRound","arg0","arg1","MAX_NUM","MIN_NUM","getCornerRadius","expandCopy","rectOuter","rectInner","rect1","rect2","rotatedPoint","real","cNumber","ComplexNumber","addConstant","negate","multiplyConstant","nthRoot","nthR","isReal","squareRoot","solveQuadraticEquation","b3a","y3","z1","z2","rootField","toCubicPolynomial","solveCubicEquation","calculateCurveAt","withPoints","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","_curveExtremes","x3","_intersectionsTo","intersectionsCount","rayIntersection","intersectsRay","curveIntersectionsCount","lineIntersectionsCount","_isOnCurveTo","endSegment","isOutOfEndPoint","hasRootsInRange","rotatedPoints","_isOnLineTo","_isOnPathTo","isOnPath","Segment","_matrix","Transformation","_optionsChange","TBase","defineOptionsAccessors","optionsAccessor","withOptions","GradientStop","ElementsArray","_change","StopsArray","_createStops","_userSpace","removeStop","Gradient","_radius","_fallbackFill","KENDO_PSEUDO_ELEMENT","IMAGE_CACHE","nodeInfo","microsoft","_pdfRect","mozMatchesSelector","cloneNodes","$el","$clone","dive","canvases","orig","kendo","jQuery","PDF","styleSheets","doStylesheet","cssRules","styleSheet","family","splitProperty","findFonts","addRule","addRules","getFontURL","getFontFaces","getXY","_clipbox","_stackingContext","_avoidLinks","renderElement","cacheImages","forceBreak","hasPaperSize","paperOptions","pageWidth","pageHeight","hasMargin","_ignoreMargin","makeTemplate","pages","adjust","splitElement","makePage","pageNum","setCSS","tableLayout","bottomPadding","bottomBorder","saveAdjust","breakAtElement","fall","fallsOnMargin","splitText","firstInParent","colgroup","gridHead","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","pageClassName","selectNodeContents","nextnode","setEnd","findEOP","endOffset","tfoot","ol","whenImagesAreActuallyLoaded","beforePageBreak","doPageBreak","handlePageBreaks","canceled","doOne","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","tok","skip_ws","utils_parseColor","to1","to2","parseAngle","read_stop","read_linear_gradient","read_url","in_paren","in_string","looking_at","getFontHeight","measureText","getPrototypeOf","counterReset","doCounters","resetCounter","counterIncrement","incCounter","css","pseudoElt","defa","important","sanitizeRadius","wr","wb","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","getBorderRadius","getBorder","bb","roundBox","rTL0","rTR0","rBR0","rBL0","adjustBorderRadiusForBox","addArcToPath","arabicToRoman","alphaNumeral","_renderElement","fake","place","updateCounters","psel","getCssText","getAllCounters","formatCounter","getCounter","displayCounter","evalPseudoElementContent","pseudo","saveClass","textOverflow","saveTextOverflow","backgroundImage","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","currentStyle","innerbox","innerBox","setClipping","updateClipbox","getClientRects","tableBorderLeft","tableBorderTop","tableBox","firstCellBox","adjustBoxes","drawOneBox","_pdfLink","listStyleType","listStylePosition","_drawBullet","lineHeight","disc","square","saveStyle","drawBullet","isFormField","elementRoundBox","clipit","widgetInstance","exportDOMVisual","maybeRenderWidget","renderContents","Wtop","Wleft","Wright","rl","rr","drawRoundCorner","radiansToDegrees","drawBackgroundImage","pxlen","scaledAngle","atan","implicit","gradientRenderer","img_width","img_height","renderBG","aspect_ratio","orgBox","Cn","rewX","repeatX","rewY","drawOneBackground","drawBackground","shouldDrawLeft","shouldDrawRight","drawEdge","getContentBox","sb","za","zb","pa","renderImage","xml","XMLSerializer","serializeToString","encodeBase64","renderCheckbox","whiteSpace","selectedOptions","getSelectedOption","renderFormField","floats","positioned","renderText","floating","mergeSort","zIndexSort","emptyClipbox","textTransform","estimateLineLength","prevLineBottom","lineThrough","overline","hasDecoration","doChunk","selectNode","ypos","rectangles","origStart","setStart","actuallyGetRangeBoundingRect","eol","findEOL","cc","TextRect","drawText","getTransform","_dom_zIndex","groupInStackingContext","decoration","createsStackingContext","pushNodeInfo","pleaseSetPropertyValue","mmul","_renderWithPseudoElements","popNodeInfo","f1","d2","IDENTITY_MATRIX_HASH","combinedMatrix","currentTransform","matrixHash","_bboxCache","_matrixHash","newFill","defineAccessors","capitalized","setAccessor","getAccessor","defineGeometryAccessors","geometryAccessor","definePointAccessors","pointAccessor","insertPosition","third","scaledPoint","isRelative","toLineParamaters","arcTo","previousCommand","lastControlIn","reflectionPoint","cubicControlPoints","quadraticToCubicControlPoints","SEGMENT_REGEX","SPLIT_REGEX","pathInstance","parseParameters","ShapeMap","HAS_TYPED_ARRAYS","BASE64","keyStr","ensure","writeString","writeByte","readByte","readShort","writeShort","readLong","writeLong","readFixed","writeFixed","readShort_","writeShort_","readLong_","writeLong_","readFixed_","writeFixed_","nbytes","saveExcursion","writeBase64","scalerType","tableCount","searchRange","entrySelector","rangeShift","readTable","Ctor","maxpow2","LN2","BinaryStream","directoryLength","headOffset","tableData","adjustment","rawData","Table","revision","checkSumAdjustment","magicNumber","unitsPerEm","xMin","yMin","xMax","yMax","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","offsetOf","needsLongFormat","ascent","descent","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numOfLongHorMetrics","numGlyphs","maxContours","maxComponentPoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","glyphIds","metrics","hhea","advance","lsb","leftSideBearings","maxp","forGlyph","GlyfTable","compound","idOffsets","old2new","glyphFor","loca","numberOfContours","glyph","CompoundGlyph","SimpleGlyph","glyphs","oldIds","NameTable","platformID","platformSpecificID","languageID","nameID","stringOffset","nameRecords","strings","rec","NameEntry","postscriptEntry","postscriptName","psName","strCount","strTable","PostTable","POSTSCRIPT_GLYPHS","numberOfGlyphs","italicAngle","underlinePosition","underlineThickness","isFixedPitch","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","CmapTable","codeMap","segCount","endCode","startCode","idDelta","idRangeOffset","glyphId","ngroups","endCharCode","glyphCode","CmapEntry","ncid2ogid","ogid2ngid","codes","sortedKeys","startCodes","endCodes","charcode","new_gid","segCountX2","rangeOffsets","startGlyph","renderCharmap","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","familyClass","panose","charRange","vendorID","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","xHeight","capHeight","defaultChar","breakChar","maxContext","subsetTag","subset","unicodes","ngid2ogid","firstChar","nextGid","nextSubsetTag","use","ucs2decode","old_gid","cmap","encodeText","glyphsFor","glyf","old_gid_ids","lastChar","hmtx","os2","directory","cidToGidMap","cid","contents","numFonts","Directory","HeadTable","LocaTable","HheaTable","MaxpTable","HmtxTable","OS2Table","widthOfGlyph","makeSubset","Subfont","deflate","pakoDeflate","NL","RESOURCE_COUNTER","PAPER_SIZE","a8","a9","a10","b3","b4","b5","b6","b7","b8","b9","b10","c0","c4","c5","c6","c7","c8","c9","c10","executive","folio","tabloid","indentLevel","PDFValue","beforeRender","renderArray","renderDate","PDFDictionary","writeData","withIndent","getOption","unitsToPoints","FONT_CACHE","Helvetica","Courier","ZapfDingbats","loadOne","manyLoader","atobUint8Array","createUint8Array","base64ToUint8Array","VBArray","responseBody","loadBinary","TTFFont","loadImages","jpegQuality","keepPNG","bloburl","_load","_onerror","rn","_onload","imgdata","getImageData","hasAlpha","rawbytes","PDFRawImage","PDFJpegImage","upscale","_trycanvas","makeOutput","objcount","defval","renderValue","renderFull","wrapObject","FONTS","IMAGES","GRAD_COL_FUNCTIONS","GRAD_OPC_FUNCTIONS","GRAD_COL","GRAD_OPC","catalog","PDFCatalog","pageTree","PDFPageTree","nameTree","JavaScript","Names","PDFString","JS","setPages","Producer","Author","Keywords","Creator","CreationDate","addPage","getPaperOptions","contentWidth","PDFStream","Contents","Parent","MediaBox","PDFPage","_content","xrefOffset","zeropad","Root","getFont","PDFStandardFont","PDFFont","asStream","getOpacityGS","forStroke","_opacityGSCache","gs","CA","_resourceName","dict","mm2pt","inch","cm2pt","in","in2pt","utf16be","BOM","encodeUTF16BE","PDFName_cache","PDFName","compress","Filter","Length","pagesObj","Pages","Kids","pageObj","SOF_CODES","colorSpace","bitsPerComponent","Subtype","BitsPerComponent","ColorSpace","Decode","SMask","BaseFont","_pdf","_font","_sub","stemV","isSerif","isScript","PDFHexString","getTextWidth","fontStream","Length1","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","charWidths","gid","descendant","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","CIDToGIDMap","_makeCidToGidMap","DescendantFonts","unimap","PDFToUnicodeCmap","unimapStream","ToUnicode","ucs2encode","makeHash","FunctionType","Domain","Range","C0","C1","_rcount","_textMode","_fontResources","_gsResources","_xResources","_patResources","_shResources","_opacity","_annotations","_fontSize","_contextStack","ProcSet","Resources","Font","ExtGState","XObject","Pattern","Shading","Annots","_out","isIdentityMatrix","sx","sy","beginText","endText","_requireTextMode","_requireFont","setFont","En","setTextLeading","setTextRenderingMode","requestedWidth","outputWidth","showTextNL","addLink","_toPage","ur","Border","URI","setStrokeColor","setFillOpacity","setStrokeOpacity","setFillColor","oname","isRadial","funcs","cur","prevColor","curColor","opacities","cacheColorGradientFunction","cacheOpacityGradientFunction","assemble","Functions","Bounds","Encode","makeGradientFunctions","shading","ShadingType","Coords","Extend","cacheColorGradient","AIS","FormType","BBox","CS","s0","cacheOpacityGradient","cacheGradient","sname","setDashPattern","dashPhase","setLineWidth","setMitterLimit","mitterLimit","_context","bezier","bezier1","bezier2","ellipse","_X","_Y","nop","clipStroke","closeStroke","fillStroke","fontdef","variant","unquote","FONT_MAPPINGS","serif","monospace","zapfdingbats","defineFont","fontAlias","TEXT_RENDERING_MODE","fillAndStroke","invisible","fillAndClip","strokeAndClip","fillStrokeClip","DASH_PATTERNS","dashDot","longDash","longDashDot","longDashDotDot","solid","LINE_CAP","butt","LINE_JOIN","miter","bevel","drawPage","clipbox","newShape","shouldDraw","saveclipbox","savematrix","withClipping","inClipbox","optArray","optimize","addMargin","doIt","_pdfDebug","setStrokeOptions","setFillOptions","_drawPath","drawPath","drawMultiPath","drawCircle","drawArc","drawGroup","drawRect","maybeGradient","maybeDrawRect","maybeFillStroke","sz","QuadRoot","inBounds","nodeRect","nodeBottomRight","pointShapes","inserted","shapes","_add","_initChildren","QuadNode","_quadNode","ROOT_SIZE","_zIndex","initRoots","sectorRoot","assignZindex","zIndexComparer","levelWeight","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","GeometryCircle","_initOptions","parentTransform","elementTransform","elementMatrix","_clippedBBox","transformedPoint","_hasFill","_hasStroke","_splice","_remove","howMany","_clearObserver","_setObserver","_reparent","elementsBoundingBox","elementsClippedBoundingBox","newParent","GeometryElementsArray","_addArcSegments","pathWidth","boundingBox","segmentBox","elementBoundingBox","definitionMap","domElement","definitionChange","addDefinitions","removeDefinitions","createDefinition","ClipNode","LinearGradientNode","RadialGradientNode","addDefinition","mapItem","removeDefinition","skipBaseHref","rootGroup","loadStops","stopNode","GradientStopNode","mapCoordinates","renderCoordinates","mapSpace","renderOffset","GradientNode","TRANSFORM","DefinitionMap","clearDefinitions","createDefinitions","isDefinition","updateDefinition","allCss","mapTransform","hasDefinitions","refUrl","mapDefinitions","baseHref","hashIndex","DefinitionNode","testFragment","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","_length","_head","_tail","newer","older","TextMetrics","baselineMarkerSize","defaultMeasureBox","_cache","LRUCache","styleKey","hashKey","cachedResult","baselineMarker","_baselineMarker","textStr","REPLACE_REGEX","literals","roman","DEG_TO_RAD","defId","getPixels","KEY_STR","utfInput","encodeUTF8","hi","codeUnit","encodeUnit","trail","initialTouch","OrderedMap","newKey","addToStart","addBefore","without","prepend","childA","childB","sameMarkup","isText","findDiffStart","posA","posB","iA","iB","same","findDiffEnd","prototypeAccessors","configurable","nodesBetween","nodeStart","textBetween","blockSeparator","leafText","separated","isBlock","withText","cut","cutByIndex","replaceChild","maybeChild","otherPos","retIndex","toStringInner","fromJSON","nodeFromJSON","fromArray","joined","defineProperties","compareDeep","p$1","Mark","ReplaceError","addToSet","placed","excludes","rank","removeFromSet","isInSet","sameSet","setFrom","openStart","openEnd","prototypeAccessors$1","ref$1","indexTo","removeRange","canReplace","insertInto","replaceOuter","$along","resolveNoCache","prepareSliceForReplace","replaceThreeWay","parentOffset","replaceTwoWay","compatibleContent","$before","$after","checkJoin","$start","$end","textOffset","validContent","joinable","removeBetween","maxOpen","openIsolating","n$1","ResolvedPos","prototypeAccessors$2","resolveDepth","indexAfter","dOff","posAtIndex","inclusive","marksAcross","isInline","sharedDepth","blockRange","pred","inlineContent","NodeRange","sameParent","rem","resolveCached","resolveCache","resolveCachePos","resolveCacheSize","prototypeAccessors$1$1","emptyAttrs","prototypeAccessors$3","isAtom","startPos","hasMarkup","defaultAttrs","includeParents","childAfter","childBefore","rangeHasMark","toDebugString","wrapMarks","contentMatchAt","contentMatch","matchFragment","replacement","two","validEnd","allowsMarks","canReplaceWith","matchType","canAppend","markFromJSON","ContentMatch","wrapCache","prototypeAccessors$4","defaultType","edgeCount","TokenStream","parseExpr","nfa","labeled","known","nullFrom","states$1","explore","dfa","exprs","loop$1","i$1","next$1","i$2","next$2","checkForDeadEnds","work","dead","hasRequiredAttrs","frag","compatible","fillBefore","toEnd","tp","findWrapping","computed","computeWrapping","via","prototypeAccessors$1$2","parseExprSeq","parseExprSubscript","typeName","type$1","resolveName","parseExprAtom","parseExprRange","parseNum","attrName","hasDefault","built","given","Attribute","SyntaxError","NodeType","initAttrs","markSet","prototypeAccessors$5","isRequired","computeAttrs","createChecked","allowsMarkType","markType","allowedMarks","topType","topNode","prototypeAccessors$1$3","MarkType","contentExprCache","prop$1","contentExpr","markExpr","gatherMarks","prop$2","excl","topNodeType","wrappings","mark$1","text$1","this$1","normalizeLists","ParseContext","addAll","parseSlice","matchTag","matchesContext","matchStyle","schemaRules","priority","rules$1","name$1","fromSchema","domParser","blockTags","article","aside","dd","dl","figcaption","figure","h1","h2","h3","h4","h5","h6","hgroup","noscript","section","ignoreTags","listTags","NodeContext","pendingMarks","activeMarks","stashMarks","popFromStashMark","applyPending","nextType","markMayApply","inlineContext","topContext","topOptions","wsOptionsFor","topMatch","findPositions","needsBlock","prototypeAccessors$6","currentPos","returned","addDOM","addTextNode","readStyles","parseStyles","addPendingMark","addElement","removePendingMark","nodeValue","domNodeBefore","previousSibling","findInText","findInside","matchAfter","ruleID","prevItem","normalizeList","ruleFromNode","ignoreFallback","closeParent","oldNeedsBlock","leafFallback","addElementByRule","consuming","findPlace","continueAfter","startIn","getContent","contentDOM","findAround","findAtPoint","enterInner","textblockFromContext","closeExtra","preserveWS","topOpen","textNode","useRoot","minDepth","$context","deflt","findSameMarkInSet","upto","stashMark","DOMSerializer","serializeFragment","createDocumentFragment","keep","rendered","spanning","markDOM","serializeMark","serializeNodeInner","renderSpec","onContent","serializeNode","structure","xmlNS","createElementNS","space$1","setAttributeNS","innerContent","domSerializer","nodesFromSchema","marksFromSchema","gatherToDOM","factor16","MapResult","recover","StepMap","recoverIndex","recoverOffset","mapResult","assoc","simple","oldSize","makeRecover","TransformError","appendMap","mirrors","setMirror","appendMapping","mirr","getMirror","appendMappingInverted","inverse","corr","Transform","docs","docChanged","maybeStep","stepsByID","Step","_doc","mustOverride","_mapping","_other","stepType","jsonID","stepClass","StepResult","fail","fromReplace","ReplaceStep","contentBetween","slice$1","ReplaceAroundStep","gapFrom","gapTo","canCut","typesAfter","innerType","index$1","baseType","bias","insertPos","fits","wrapping","mapFragment","lift","gapStart","gapEnd","splitting","d$1","splitting$1","wrappers","setBlockType","canChangeType","clearIncompatible","startM","endM","newNode","typeAfter","AddMarkStep","oldSlice","RemoveMarkStep","addMark","removing","adding","newSet","removeMark","toRemove","found$1","parentType","delSteps","allowed","fitsTrivially","Fitter","replaceStep","unplaced","frontier","dropFromFragment","addToFragment","closeNodeStart","invalidMarks","oldOpen","newOpen","closeFragment","findFittable","placeNodes","openMore","dropNode","moveInline","mustMoveInline","placedSize","sliceDepth","contentAt","frontierDepth","openAtEnd","closeFrontierNode","openFrontierNode","taken","openEndCount","Ra","contentAfterFits","findCloseLevel","dropInner","replaceRange","deleteRange","targetDepths","coveredDepths","preferredTarget","defining","preferredTargetIndex","leftNodes","preferredDepth","openDepth","targetDepth","startSteps","replaceRangeWith","insertPoint","classesById","lastNode","lastParent","selectionToInsertionEnd","findFrom","textOnly","findSelectionIn","near","AllSelection","atStart","atEnd","selectionClass","ensureMarks","TextBookmark","dPos","NodeBookmark","AllBookmark","startLen","_newFrom","newTo","Transaction","curSelection","curSelectionFor","storedMarks","selectionSet","storedMarksSet","isGeneric","scrolledIntoView","setStoredMarks","addStoredMark","removeStoredMark","replaceSelection","replaceSelectionWith","inheritMarks","deleteSelection","setMeta","getMeta","FieldDesc","baseFields","_marks","_old","Configuration","pluginsByKey","plugin","applyTransaction","rootTr","transactions","trs","newState","applyInner","haveNew","appendTransaction","oldState","newInstance","applyListeners","$config","pluginFields","addApplyListener","removeApplyListener","bindProps","createKey","parsedDocument","htmlToFragment","ProseMirrorDOMParser","domToPmDoc","pmDocToFragment","changeStylesString","styleText","newStyle","styleToChange","regExp","nameValue","getTypeName","findNthParentNodeOfType","findNthParentNode","dom1","dom2","fragment1","fragment2","applyToWordDefault","applyToWordOptions","initialPosition","textBefore","textAfter","matchBefore","tran","cmdState","cmdDispatch","markApplies","can","toggleMark","altMarks","altStyle","currMarks","selectionMarks","changeStyleFromMark","toChange","styleMark","changeStyleMark","currentMark","newMarkAttrs","newStyleMark","previousAdded","sameAdding","changeStyle","transaction","currentMarks","newAttrs","object1","object2","keys1","keys2","shallowEqual","markAttrs","styleRemoved","dispatched","markDispatched","allMarks","removeMarks","marksFromSelection","newStyles","resultStyles","toolMark","linkStart","linkSize","getParentMark","modifyLink","newImage","changeTextBlock","currNode","stateDoc","blockNodes","blocksInSelection","selNode","_parent","tslib_1","paragraph","addStyles","stylesToApply","changedStyleResult","currentStyles","parentBlockFormat","getBlockFormats","blockNodeType","exceptMarks","except","excludedMarkTypes","cleanMarks","cleanTextBlockFormatting","itemType","endOfList","liftTarget","liftToOuterList","indexBefore","liftOutOfList","nestedBefore","listsTypes","orderedList","bulletList","listItem","listType","rtlStyle","endOfTextblock","$cut","findCutBefore","deleteBarrier","textblockAt","only","above","defaultBlockAt","canSplit","$first","splitBlock","conn","canJoin","joinMaybeClear","canDelAfter","joinAt","selAfter","wrap$1","afterText","afterDepth","end$1","commands","chainCommands","joinBackward","selectNodeBackward","del","findCutAfter","pcBaseKeymap","newlineInCode","createParagraphNear","liftEmptyBlock","exitCode","macBaseKeymap","indentBlocks","newMargin","sinkListItem","isNestedInOL","isNestedInUL","liftListItem","isIndented","isIndentableBlock","liftBlockquote","ko","getListLiftTarget","resPos","listNodeNames","listNode","grandgrandParent","isRangeOfSingleType","maxDepth","nestableBlocks","findAncestorPosition","getAncestorNodesBetween","isRangeOfType","liftListItems","isJoinable","wrapDispatchForJoin","autoJoin","doJoin","outerRange","$insert","innerRange","around","findWrappingOutside","inside","innerMatch","findWrappingInside","withAttrs","joinBefore","splitDepth","splitPos","doWrapInList","pmWrapInList","wrapInList","toggleList","endNode","toggleListCommand","listNodes","rootListDepth","rootListDepthNum","lifted","listDepth","liftFollowingList","listCol","liftSelectionList","bulletListSettings","orderedListSettings","vendor","gecko","mac","brokenModifierNames","bindings","normalizeKeyName","baseName","keyName","isChar","direct","fromCode","withShift","ie_edge","ie_upto10","ie_11up","ie_version","gecko_version","chrome_version","webkit_version","domIndex","assignedSlot","reusedRange","textRange","isEquivalentPosition","targetNode","targetOff","scanFor","atomElements","hasBlockDesc","contentEditable","pmViewDesc","selectionCollapsed","domSel","rangeCount","getRangeAt","createEvent","initEvent","dTop","preventScrollSupported","coordsClosest","dxClosest","rowBot","rowTop","childIndex","rects","singleRect","inRect","findOffsetInText","findOffsetInNode","startI","assign$1","caretPositionFromPoint","pos$1","offsetNode","caretRangeFromPoint","startContainer","elt","targetKludge","box$1","outside","docView","nearestDesc","posBefore","posAfter","posFromDOM","posFromCaret","posFromElement","posAtStart","BIDI","domFromPos","supportEmptyRange","takeSide","flattenV","rectBefore","rectAfter","flattenH","before$1","after$1","ignoreForCoords","target$1","ea","maybeRTL","cachedState","cachedDir","ViewDesc","posAtEnd","contentLost","domAtom","matchesWidget","matchesMark","matchesNode","matchesHack","_nodeName","parseRule","posBeforeChild","localPosFromDOM","domBefore","domAfter","desc$1","search$1","onlyNodes","getDesc","nodeDOM","descAt","TrailingHackViewDesc","WidgetViewDesc","prev$1","enter$1","parseRange","fromOffset","toOffset","childBase","emptyChildAt","j$1","domAfterPos","anchorDOM","headDOM","brKludge","offset$1","focusOffset","anchorNode","domSelExtended","DOMException","ignoreMutation","markDirty","startInside","endInside","markParentsDirty","nothing","ignoreSelection","CompositionViewDesc","textDOM","mut","MarkViewDesc","nodeViews","NodeViewDesc","outerDeco","innerDeco","updateChildren","descObj","applyOuterDeco","CustomNodeViewDesc","TextViewDesc","reparseInView","sameOuterDeco","composition","localCompositionInfo","localComposition","compositionInChild","updater","ViewTreeUpdater","deco","onWidget","onNode","locals","decoIndex","restNode","widgets","compareSide","child$1","cutAt","i$3","forChild","iterDeco","insideNode","syncToMarks","placeWidget","compIndex","findNodeMatch","findIndexWithChild","updateNodeAt","updateNextNode","addTextblockHacks","destroyRest","protectLocalComposition","renderDescs","oldCSS","iosHacks","nearbyTextNode","textPos","childStart","findTextInFragment","compositionNodes","updateInner","updateOuterDeco","needsWrap","oldDOM","patchOuterDeco","computeOuterDeco","deselectNode","pmIsDeco","inParent","trackWrites","parentDOM","descs","written","childDOM","rm","OuterDecoLevel","noDeco","$e","outerDOM","prevComputed","curComputed","curDOM","patchAttributes","prevList","curList","removeProperty","lockedNode","preMatch","fI","dI","inWidget","isOnEdge","selectionBetween","hasSelection","syncNodeSelection","editorOwnsSelection","allowDefault","delayedSelectionSync","domObserver","setCurSelection","disconnectSelection","cursorWrapper","selectCursorWrapper","resetEditableFrom","resetEditableTo","brokenSelectBetweenUneditable","temporarilyEditableNear","resetEditable","hideSelectionGuard","removeClassOnSelectionChange","connectSelection","destroyBetween","maxKeep","markDesc","nextDOM","addHackNode","setEditable","wasDraggable","lastSelectedViewDesc","clearNodeSelection","someProp","$side","mods","moveSelectionBlock","nodePos","moveNode","moveOffset","nodeLen","isIgnorable","isBlockNode","setSelFocus","selectionToDOM","beyond","nextNode","parsedSel","fromEnd","mayOpen","serializer","detachedDoc","wrapMap","plainText","inCode","asText","metas","firstTag","readHTML","restoreReplacedSpaces","contextNode","sliceData","addContext","closeSlice","lastWrap","inLast","addToSibling","closeRight","withWrappers","normalizeSiblings","node$1","closeRange","_detachedDoc","createHTMLDocument","observeOptions","childList","characterDataOldValue","attributeOldValue","subtree","useCharData","SelectionState","DOMObserver","handleDOMChange","queue","flushingSoon","mutations","removedNodes","flushSoon","onCharData","suppressingSelectionUpdates","forceFlush","takeRecords","suppressSelectionUpdates","hasFocusAndSelection","ignoreSelectionChange","commonAncestorContainer","newSel","typeOver","result$1","registerMutation","brs","cssChecked","checkCSS","attributeName","addedNodes","editHandlers","lastSelectionOrigin","lastSelectionTime","currentHandlers","runCustomHandler","runHandlerOnContext","defaultTripleClick","endComposition","inOrNearComposition","lastKeyCode","lastKeyCodeTime","getMods","stopNativeHorizontalDelete","skipIgnoredNodesLeft","skipIgnoredNodesRight","selectHorizontally","selectVertically","switchEditable","safariDownArrowBug","captureKeyDown","setSelectionOrigin","lastIOSEnter","lastIOSEnterFallbackTimeout","selectNodeModifier","flushed","forceDOMFlush","lastClick","isNear","posAtCoords","eventCoords","MouseDown","handleDoubleClick","handleTripleClick","targetPos","startDoc","mightDrag","targetDesc","addAttr","setUneditable","timeStamp","compositionEndedAt","selectedNode","selectAt","selectClickedNode","selectClickedLeaf","handleSingleClick","touchdown","timeoutComposition","composingTimeout","timestampFromCustomEvent","clearComposition","selectionFromDOM","compositionstart","compositionupdate","markCursor","scheduleComposeEnd","compositionend","brokenClipboardAPI","parseFromClipboard","singleNode","sliceSingleNode","serializeForClipboard","captureCopy","doPaste","capturePaste","Dragging","dragCopyModifier","effectAllowed","dragend","dragover","eventPos","$mouse","dropPoint","beforeInsert","ui","beforeinput","domChangeCount","WidgetType","noSpec","Decoration","compareObjs","InlineType","inclusiveStart","inclusiveEnd","DecorationSet","local","decorations","buildTree","findInner","childOff","mapInner","newLocal","oldChildren","oldEnd","newEnd","dSize","mustRebuild","fromLocal","toLocal","childOffset","gather","mapAndGatherRemainingDecorations","from$1","byPos","addInner","baseOffset","takeSpansForNode","moveSpans","withoutNulls","removeInner","span$1","localSet","DecorationGroup","removeOverlap","localsInner","spans","hasNulls","localStart","working","insertAhead","mappedDecos","_props","directPlugins","checkStateComponent","mounted","getEditable","updateCursorWrapper","buildNodeViews","docViewDesc","computeDocDeco","viewDecorations","lastAndroidDelete","tr$1","from_","to_","editableContent","anchor$1","parseBetween","preferredPos","preferredSide","findDiff","sel$1","resolveSelection","nextSel","inlineChange","$newStart","$newEnd","skipClosingAndOpening","$next","looksLikeJoin","toB","markChange","$from1","chFrom","chTo","curMarks","prevMarks","isMarkChange","sel$2","readDOMChange","bubbles","eventBelongsToView","ensureListeners","initInput","prevDirectPlugins","pluginViews","updatePluginViews","contenteditable","handleDOMEvents","updateStateInner","setProps","reconfigured","updateSel","nB","changedNodeViews","scrollToSelection","updateDoc","oldScrollPos","overflowAnchor","refDOM","refTop","localRect","scrollStack","storeScrollPos","forceSelUpdate","sel1","sel2","selectionContextChanged","chromeKludge","anchorInRightPlace","startDOM","scrollThreshold","scrollMargin","atTop","bounding","windowRect","clientRect","moveX","moveY","getSide","scrollBy","dX","dY","scrollRectIntoView","coordsAtPos","newRefTop","restoreScrollStack","resetScrollPos","destroyPluginViews","prevState","pluginView","plugin$1","stored","focusPreventScroll","domAtPos","posAtDOM","withFlushedState","nearest","endOfTextblockVertical","oldNode","oldOff","oldBidiLevel","caretBidiLevel","endOfTextblockHorizontal","destroyInput","cache$1","extraAttrs","widthAttr","getFromDOM","setDOMAttr","cell$1","dr","attrs$1","maybeSetSelection","atEndOfCell","$cell","baseContent","role$1","columnIsHeader","addColumn","mapStart","cellPositions","useDeprecatedLogic","deprecated_toggleHeader","isHeaderRowEnabled","isHeaderEnabledByType","isHeaderColumnEnabled","selectionStartsAt","cellsRect","newType","relativeCellPos","shiftArrow","deleteCellSelection","toggleHeader","TableView","cellMinWidth","updateColumns","overrideCol","overrideValue","fixedWidth","hasWidth","cssWidth","key$1","ResizeState","setHandle","setDragging","blockquoteDOM","hrDOM","preDOM","olDOM","ulDOM","liDOM","tagMark","horizontal_rule","code_block","hard_break","cellAttributes","cellAttrs","tableGroup","cellContent","getCellAttrs","RopeSequence","leafAppend","leafPrepend","appendInner","Append","sliceInner","getInner","forEachInner","forEachInvertedInner","Leaf","leftLen","Branch","eventCount","popEvent","preserveItems","remap","remapping","addAfter","addTransform","histOptions","newItems","oldItems","lastItem","Kt","DEPTH_OVERFLOW","cutPoint","cutOffEvents","mirrorOffset","addMaps","rebased","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","newMaps","branch","emptyItemCount","HistoryState","undone","prevRanges","prevTime","mustPreserveItems","historyKey","newHist","historyState","cachedPreserveItems","cachedPreserveItemsPlugins","historyPreserveItems","closeHistoryKey","historyTr","rangesFor","mapRanges","newGroup","newGroupDelay","adjacent","isAdjacentTo","histTransaction","InputRule","cutOff","stringHandler","undoable","isInputRules","toUndo","undoInputRule","splitBlockKeepMarks","strong","em","grandParent","depthBefore","depthAfter","splitListItem","splitListItemKeepMarks","msoListRegExp","isPartOfListItem","styleType","guessUnorderedListStyle","guessOrderedListStyle","mapListsCandidates","ELEMENT_NODE","trimStartText","convertToLi","COMMENT_NODE","TEXT_NODE","ownerElement","stylesSplit","styleValueSplit","supportedStyles","extractListLevels","listsCandidates","rootMargin","rootIndex","lastRootLi","isLastRootLi","rootList","listData","lastMargin","levels","datalist","datalevel","levelType","toList","tagPattern","sanitizeNode","decAttrs","imageResizeKey","southeast","east","south","north","west","southwest","northwest","northeast","handles","sizeType","reSize","reAnyValue","nodePosition","lockRatio","viewObj","removeResize","pluginState","resizeState","lockWidth","lockHeight","handlesWrapper","handleMouseMove","currAttrs","changedWidth","handleMouseUp","DropCursorView","cursorPos","setCursor","updateOverlay","parentLeft","parentTop","rect$1","scheduleRemoval","dragleave","GapCursor","GapBookmark","closedBefore","closedAfter","allowGapCursor","mustMove","$cur","$cur$1","drawGapCursor","createSelectionBetween","dirStr","$found","postToProxy","canDownload","saveAsDataURI","msSaveBlob","saveAsBlob","dataURI","fileSaver","initMouseEvent","_0x4b1f1f","_0x3d076f","_0x3d07","_0x58ffb4","_0x5ac3a1","_0x5ac3","uXIQOS","BZzwkU","_0x440fb5","_0x20d108","_0x2b953c","_0x5e0d5f","_0x2f0072","_0xf2e0f6","_0x52a6b7","_0x35d351","_0x28ca75","_0x5b504e","_0x595efb","_0x13c049","hCUrbZ","_0x81d7c3","_0x3b1f42","_0x42f8ef","_0x4f0214","_0x50eb70","_0x468dd1","_0x46a729","_0x444c70","KendoLicensing","_0x14f3e6","_0x28c15e","_0x5d16d7","_0x3ad714","_0x1856ce","_0x38b8f4","matchProduct","packageName","docsUrl","expiryDate","_0x104107","_0x1c37cc","_0x5e3b29","_0x352717","formatError","_0x14cc31","_0x5776cb","anchorHorizontal","anchorVertical","elementHorizontal","elementVertical","horizontalMargin","verticalMargin","cachedWidth","windowViewport","rectOfHiddenElement","until","docElement","offsetParentElement","offsetRect","parentStyles","parentScrollPosition","offsetParentScrollPosition","positionScale","viewPortSize","anchorSize","anchorAlignPoint","elementAlignPoint","marginToAdd","isBeforeAnchor","elementTop","elementLeft","viewPortHeight","viewPortWidth","isVerticalFit","isHorizontalFit","isVerticalFlip","isHorizontalFlip","flippedVertical","flippedHorizontal","fittedVertical","fittedHorizontal","fitted","siblingElements","elementSource","canUseDOM","currentDocument","Z_STREAM_ERROR","TypeError","_has","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","Buf8","Buf16","Buf32","Int32Array","fnUntyped","typedOK","strApplyOK","strApplyUintOK","jn","shrinkBuf","_buf2binstring","adler","crcTable","strm","_in","beg","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","from_source","next_in","avail_in","next_out","avail_out","lencode","distcode","lenbits","distbits","dolen","dodist","sane","lbase","lext","dbase","dext","lens","lens_index","table_index","incr","here_bits","here_op","here_val","used","huff","base_index","MAXBITS","offs","extra_index","vt","Xo","kr","havedict","wbits","ncode","nlen","ndist","have","lendyn","distdyn","back","was","windowBits","InflateState","Ji","total_in","total_out","inflateResetKeep","inflateReset","inflateReset2","lenfix","distfix","virgin","inflate_table","last_bits","last_op","last_val","hbuf","inf_leave","TIME","OS","xflags","EXLEN","extra_len","EXTRA","COMMENT","HCRC","hcrc","zswap32","DICT","TYPE$1","fixedtables","COPY","LENLENS","CODELENS","LEN","inflate_fast","LENEXT","DIST","DISTEXT","MATCH","adler32","LENGTH","DONE","SYNC","updatewindow","data_type","dictLength","chunkSize","ended","ZStream","inflateInit2","GZheader","inflateGetHeader","inflateSetDictionary","_mode","next_out_utf8","utf8str","allowBufError","binstring2buf","onEnd","inflateEnd","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","static_l_desc","static_d_desc","static_bl_desc","extra_lbits","extra_dbits","extra_blbits","bl_order","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","stat_desc","max_code","pending_buf","bi_valid","bi_buf","put_short","tree","send_bits","bl_count","next_code","MAX_BITS","bi_reverse","LITERALS","dyn_ltree","dyn_dtree","bl_tree","END_BLOCK","opt_len","static_len","last_lit","_n2","_m2","heap","heap_len","smaller","ltree","dtree","lc","lx","d_buf","l_buf","send_code","d_code","stree","heap_max","pqdownheap","xbits","gen_bitlen","gen_codes","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","static_init_done","stored_len","STORED_BLOCK","bi_windup","copy_block","lit_bufsize","MIN_LOOKAHEAD","MAX_MATCH$1","errorCode","pending_out","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","build_tree","l_desc","d_desc","scan_tree","bl_desc","BL_CODES","build_bl_tree","_tr_stored_block","STATIC_TREES","compress_block","DYN_TREES","lcodes","dcodes","blcodes","send_tree","send_all_trees","init_block","_tr_flush_block","block_start","strstart","flush_pending","cur_match","chain_length","max_chain_length","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","more","_w_size","window_size","hash_size","read_buf","ins_h","hash_shift","hash_mask","max_block_size","pending_buf_size","fill_window","max_start","flush_block_only","hash_head","bflush","match_length","longest_match","_tr_tally","max_lazy_match","MIN_MATCH$1","max_insert","prev_match","match_available","BS_NEED_MORE","good_length","max_lazy","nice_length","max_chain","configurationTable","deflate_stored","deflate_fast","deflate_slow","gzhead","gzindex","last_flush","w_bits","hash_bits","HEAP_SIZE$1","zero$1","MAX_BITS$1","L_CODES","D_CODES","MAX_MATCH","LENGTH_CODES","StaticTreeDesc","tr_static_init","TreeDesc","_tr_init","deflateResetKeep","lm_init","old_flush","put_byte","putShortMSB","Z_OK","bstate","deflate_huff","deflate_rle","bi_flush","_tr_align","memLevel","gzip","DeflateState","deflateReset","deflateInit2","deflateSetHeader","avail","tmpDict","deflateSetDictionary","_dict_set","deflateEnd","deflator","proxy","touchRegExp","mouseOnly","_pressHandler","normalizeEvent","_dragHandler","_releaseHandler","_ignoreMouse","_mouseOnly","_touchstart","_touchmove","_touchend","_restoreMouse","_mousedown","_mouseup","_pointerdown","isPrimary","_pointerup","_unbindFromCurrent","_bindToCurrent","_usePointers","supportPointerEvent","flattenValues","formattedMessage","NoSupplementalCurrency","IntlError","toIntlErrors","cldr","_number","_cldrVersion","currencies","BGN","displayName","EUR","USD","localeCurrency","supplemental","US","weekData","weekendStart","weekendEnd","localeInfo","suffixes","fullName","localeFullName","availableLocaleInfo","DECIMAL","CURRENCY","ACCOUNTING","PERCENT","SCIENTIFIC","CURRENCY_PLACEHOLDER","NUMBER_PLACEHOLDER","POINT","DEFAULT_LOCALE","LATIN_NUMBER_FORMATS","patternRegExp","cldrCurrencyRegExp","integer","currencyInfo","currencyFormats","standard","getPatterns","loadCurrencyUnitPatterns","predefinedDatePatterns","YEAR_REGEX","SHORT_DATE","datePatterns","formatType","localeCalendar","getCalendarNames","eraNameMap","eraAbbr","eraNames","eraNarrow","eraFormatName","getEraNames","fieldInfo","pathIdx","cldrCalendar","getPredefinedFormat","gregorian","loadCalendarPatterns","loadCalendarNames","loadCalendarDateFields","likelyName","territoryFromName","loadNumbersInfo","loadCalendarInfo","localeTerritory","loadLocale","fractions","fieldNameInfo","standAlone","getLocaleInfo","lowerNameType","formatNames","lowerArray","lowerObject","cloneLower","SYMBOL","GLOBAL_CURRENCIES","throwIfNoValid","currencyDisplayInfo","regionCurrencies","latestValidUntil","latestValidUntilRange","latestStillValid","latestStillValidDate","_tender","parseRangeDate","stillValidDate","regionCurrency","territoryCurrencyCode","DAYS_OF_WEEK","currencyDisplay","getCurrencyInfo","decimalIndex","groupSizes","integerEnd","integerLength","newGroupSize","trailingZeroRegex","isCurrency","isCurrencyStyle","toExponential","formatCurrencySymbol","currencyFractions","currencyFractionOptions","fractionOptions","negativeZero","isNegativeZero","useGrouping","groupInteger","currencyUnitPattern","qt","applyPattern","literalRegExp","formatOptions","quoteChar","trailingZerosRegExp","trailingPointRegExp","commaRegExp","index1","index2","hasNegativeFormat","zeroFormat","isConstantFormat","constant","setValueSpecificFormat","setFormatLiterals","setStyleOptions","hasGroup","setGroupOptions","zeroIndex","sharpIndex","hasZero","hasSharp","trailingZeros","lastZero","trimRegex","trimTrailingZeros","roundNumber","placeholderIndex","lastZeroIndex","setPlaceholderIndices","replacePlaceHolders","replaceStyleSymbols","replaceLiterals","applyCustomFormat","standardFormatRegExp","formatAndPrecision","standardFormatOptions","standardNumberFormat","customNumberFormat","exponentRegExp","nonBreakingSpaceRegExp","cleanLiterals","negativeCurrency","currencyNumber","displays","lengthComparer","currencyDisplays","cleanNumber","cleanNegativePattern","cleanCurrencyNumber","negativeSignIndex","LENGHT_DELTA","PENALTIES","VALUE_FORMAT_LENGTH","TIME_SPECIFIERS_REGEX","DATE_OPTIONS_MAP","specifier","getSpecifier","hour12","STAND_ALONE_SPECIFIERS","specifiersRegex","resolvedFormats","specifiers","specifiersLength","bestMatches","maxScore","score","getSpecifierRegex","REMOVAL_PENALTY","skeletonSpecifiers","bestMatch","matchSpecifier","spcifier","skeletonFromOptions","timeStartIndex","dateSkeleton","timeSkeleton","findBestMatch","cacheFormat","skeletonFormat","formatLength","dateNameType","HOUR","ZONE","WEEKDAY","QUARTER","DATE_FIELD_MAP","dateFormatRegExp","shortHours","optionalMinutes","localizedName","zZeroOffset","hoursMinutes","firstDayIndex","dayIndex","formatDayOfWeekIndex","formatters","fromLocalOffset","offsetDate","toLocalOffset","formatMonth","formatTimeZone","formatDayOfWeek","formatQuarter","timeZoneOffsetRegExp","offsetRegExp","numberRegExp","leadingSpacesRegex","trailingSpacesRegex","standardDateFormats","FORMATS_SEQUENCE","regex","valueIdx","nameLength","subValue","matchLength","matchIdx","noSeparator","zLiteral","getIndexByName","calendarGmtFormats","hoursMatch","minutesMatch","hoursOffset","minutesOffset","outOfRange","lookAhead","getNumber","parsers","datePattern","addFormatSpaces","checkLiteral","pmHour","hasTime","parseValue","tzoffset","parseMicrosoftDateOffset","convertTimeZone","parseMicrosoftDateFormat","parseFormats","parseExact","parseMonth","periodFormats","shortFormat","parseTimeZoneOffset","parseDayOfWeek","NAME_TYPES","minLength","LITERAL","lastPart","addLiteral","isHour12","module","utils","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","isFormData","auth","unescape","fullPath","baseURL","responseHeaders","getAllResponseHeaders","paramsSerializer","onloadend","onreadystatechange","responseURL","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","xsrfCookieName","xsrfHeaderName","isUndefined","onDownloadProgress","onUploadProgress","cancelToken","Axios","mergeConfig","defaultConfig","instanceConfig","Cancel","CancelToken","isCancel","spread","isAxiosError","__CANCEL__","executor","resolvePromise","throwIfRequested","InterceptorManager","dispatchRequest","interceptors","assertOptions","silentJSONParsing","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","newConfig","onFulfilled","onRejected","getUri","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","common","adapter","lineNumber","columnNumber","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","isPlainObject","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","validateStatus","normalizeHeaderName","DEFAULT_CONTENT_TYPE","getDefaultAdapter","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","setContentTypeIfUnset","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","Accept","serializedParams","hashmarkIndex","relativeURL","expires","domain","secure","cookie","toGMTString","originURL","urlParsingNode","hostname","port","resolveURL","requestURL","normalizedName","ignoreDuplicateOf","pkg","deprecatedWarnings","currentVerArr","thanVersion","pkgVersionArr","destVer","isDeprecated","isOlderVersion","allowUnknown","isView","assignValue","stripBOM","b64","getLens","placeHoldersLen","validLen","Arr","_byteLength","curByte","revLookup","uint8","maxChunkLength","len2","encodeChunk","tripletToBase64","kSampleStepSize","float32ArraySupported","Float32Array","aA1","aA2","aT","mX1","mY1","mX2","mY2","LinearEasing","sampleValues","calcBezier","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","getTForX","DEFAULT_SPLIT_REGEXP","DEFAULT_STRIP_REGEXP","splitRegexp","stripRegexp","lowerCase","delimiter","lowerChars","noCase","__assign","pascalCaseTransform","pascalCaseTransformMerge","pascalCase","camelCaseTransform","upperCaseFirst","capitalCaseTransform","upperCase","capitalCase","dotCase","sentenceCaseTransform","strFileName","strMimeType","defaultMime","myBlob","MozBlob","WebKitBlob","ajax","dataUrlToBlob","saver","tempUiArr","mx","strUrl","binData","uiArr","winMode","Ge","exportName","VENDOR_PREFIXES","TEST_ELEMENT","bindFn","each","deprecationMessage","deprecate","childP","baseP","val1","val2","splitStr","findByKey","_uniqueId","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","prefixed","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","PROPS_XY","PROPS_CLIENT_XY","manager","inputTarget","domHandler","boolOrFn","pointersLen","changedPointersLen","changedPointers","isFinal","INPUT_END","session","pointersLength","firstInput","simpleCloneInputData","Ko","firstMultiple","offsetCenter","deltaTime","getDistance","offsetDelta","prevDelta","prevInput","computeDeltaXY","offsetDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","getRotation","maxPointers","velocity","velocityX","velocityY","lastInterval","computeIntervalInputData","computeInputData","recognize","evEl","evTarget","evWin","getWindowForElement","removeEventListeners","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","pressed","inherit","MouseInput","POINTER_INPUT_MAP","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","removePointer","eventTypeNormalized","storeIndex","pointerId","Er","SINGLE_TOUCH_INPUT_MAP","touchmove","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","uniqueArray","SingleTouchInput","normalizeSingleTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","targetIds","allTouches","INPUT_START","identifier","targetTouches","changedTargetTouches","TouchInput","mouse","primaryTouch","lastTouches","setLastTouch","lastTouch","lts","getTouches","TouchMouseInput","inputEvent","isMouse","sourceCapabilities","firesTouchEvents","recordTouches","isSyntheticEvent","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","supports","getTouchActionProps","uniqueId","ifUndefined","simultaneous","requireFail","otherRecognizer","Recognizer","AttrRecognizer","pX","pY","_timer","_input","pTime","pCenter","preset","Manager","oldCssProps","inputClass","createInputInstance","TouchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","compute","getTouchAction","inStr","hasPanX","hasPanY","cleanTouchActions","preventDefaults","hasNone","DIRECTION_LEFT","DIRECTION_UP","preventSrc","invokeArrayArg","getRecognizerByNameIfManager","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","stateStr","additionalEvent","tryEmit","canEmit","STATE_FAILED","inputDataClone","STATE_RECOGNIZED","STATE_BEGAN","attrTest","optionPointers","isRecognized","PanRecognizer","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","directionStr","PinchRecognizer","PressRecognizer","validPointers","validMovement","validTime","setTimeoutContext","RotateRecognizer","SwipeRecognizer","TapRecognizer","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stopped","curRecognizer","existing","gestureEvent","gesture","triggerDomEvent","INPUT_MOVE","INPUT_CANCEL","STATE_POSSIBLE","STATE_CHANGED","STATE_ENDED","STATE_CANCELLED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Swipe","Rotate","define","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","writable","isFrozen","Proxy","revocable","revoke","Reflect","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptors","deleteProperty","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","vn","ln","dn","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","isTypedArray","iteratee","resIndex","baseIndexOf","comparator","initAccum","asciiSize","baseProperty","eachFunc","fromIndex","fromRight","strictIndexOf","baseFindIndex","baseIsNaN","baseSum","trimmedEndIndex","arrayMap","strSymbols","chrSymbols","deburrLetter","basePropertyOf","escapeHtmlChar","chr","hasUnicode","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","pick","arrayProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","overArg","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","__data__","MapCache","ListCache","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","baseTimes","isIndex","baseRandom","shuffleSelf","copyArray","baseClamp","baseAssignValue","objValue","baseEach","bitmask","customizer","isDeep","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","baseAssign","cloneArrayBuffer","dataView","byteOffset","cloneDataView","cloneTypedArray","cloneRegExp","cloneSymbol","initCloneByTag","stacked","baseClone","getAllKeysIn","getAllKeys","arrayEach","wait","arrayIncludes","isCommon","valuesLength","baseUnary","Si","arrayIncludesWith","cacheHas","SetCache","outer","valuesIndex","lodash","templateSettings","evaluate","interpolate","variable","baseLodash","Hash","assocIndexOf","getMapData","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","isSymbol","isStrict","isFlattenable","Oe","baseFlatten","arrayPush","baseFor","createBaseFor","baseForRight","arrayFilter","castPath","toKey","keysFunc","symbolsFunc","isOwn","getRawTag","objectToString","othLength","othIndex","caches","baseGetTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","mapToArray","setToArray","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsEqual","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","baseMatchesProperty","baseMatches","isPrototype","isArrayLike","getMatchData","matchesStrictComparable","baseIsMatch","isKey","isStrictComparable","hasIn","srcIndex","mergeFunc","safeGet","assignMergeValue","isTyped","isArrayLikeObject","Fl","L0","toPlainObject","baseMergeDeep","baseMerge","iteratees","orders","baseGet","getIteratee","baseSortBy","baseMap","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSet","baseIndexOfWith","baseUnset","setToString","overRest","arraySample","nested","baseSetData","$s","baseSetToString","Uo","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","ls","baseToString","createSet","seenIndex","isDrop","baseSlice","arrayReduce","baseUniq","baseDifference","assignFunc","valsLength","stringToPath","castRest","baseRest","typedArray","valIsDefined","valIsReflexive","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","isUncurried","holdersIndex","rightIndex","arrayAggregator","baseAggregator","assigner","guard","isIterateeCall","iterable","stringToArray","trailing","castSlice","words","deburr","thisBinding","findIndexFunc","flatRest","prereq","thru","getFuncName","funcName","isLaziable","plant","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","WRAP_CURRY_FLAG","createCtor","getHolder","holdersCount","countHolders","composeArgs","composeArgsRight","newHolders","replaceHolders","createRecurry","createHybrid","Yr","toIteratee","baseInverter","baseToNumber","arrayFunc","chars","charsLength","baseRepeat","stringSize","toFinite","baseRange","wrapFunc","isCurry","setWrapToString","toInteger","ws","setToPairs","baseToPairs","srcBitmask","newBitmask","WRAP_BIND_FLAG","mergeData","createCurry","createPartial","createBind","customDefaultsMerge","arrLength","arrStacked","arrValue","arraySome","baseGetAllKeys","otherFunc","baseIteratee","isKeyable","baseIsNative","stubArray","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoizeCapped","quote","subString","differenceWith","castArrayLikeObject","baseIntersection","intersectionBy","intersectionWith","pull","pullAll","basePullAll","baseAt","basePullAt","unionBy","unionWith","unzip","xor","baseXor","xorBy","xorWith","zipWith","unzipWith","wrapperAt","countBy","createAggregator","createFind","findLast","findLastIndex","arrayEachRight","invokeMap","baseInvoke","keyBy","baseOrderBy","createWrap","bindKey","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","timerExpired","invokeFunc","timeSinceLastCall","shouldInvoke","trailingEdge","timeWaiting","remainingWait","isInvoking","leadingEdge","debounced","baseDelay","memoized","Cache","overArgs","funcsLength","partial","partialRight","rearg","createRelationalOperation","baseGt","baseIsArguments","baseLt","baseTrim","createAssigner","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","hasPath","baseHasIn","createInverter","invertBy","arrayLikeKeys","baseKeys","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","customOmitClone","basePickBy","basePick","toPairs","createToPairs","toPairsIn","baseValues","createCompounder","capitalize","kebabCase","lowerFirst","createCaseFirst","snakeCase","startCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","isError","bindAll","methodNames","createFlow","flowRight","methodOf","baseFunctions","createOver","overEvery","arrayEvery","overSome","basePropertyDeep","rangeRight","createMathOperation","augend","addend","createRound","multiplier","multiplicand","minuend","subtrahend","castArray","compact","cond","conforms","baseConformsTo","baseConforms","curry","curryRight","debounce","dropRight","dropRightWhile","baseWhile","dropWhile","toLength","baseFill","baseFilter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functionsIn","mapKeys","mapValues","matchesProperty","mixin","nthArg","baseNth","omitBy","pickBy","once","propertyOf","pullAllBy","pullAllWith","sampleSize","arraySampleSize","baseSampleSize","setWith","shuffle","arrayShuffle","baseShuffle","sortedUniq","baseSortedUniq","sortedUniqBy","takeRight","takeRightWhile","isArrLike","unary","uniq","uniqBy","uniqWith","baseUpdate","castFunction","updateWith","valuesIn","zipObject","baseZipObject","zipObjectDeep","entriesIn","extendWith","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","baseEvery","findKey","baseFindKey","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","baseHas","Jt","baseInRange","isElement","isEqualWith","isMatchWith","isNative","isNil","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","baseExtremum","maxBy","baseMean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","createPadding","padStart","radix","baseReduce","arrayReduceRight","runInContext","baseSample","baseSome","sortedIndex","baseSortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","customDefaultsAssignIn","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","esTemplateValue","evaluateValue","escapeStringChar","toLower","toSafeInteger","toUpper","charsStartIndex","charsEndIndex","trimEnd","trimStart","truncate","omission","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","iterLength","baseWrapperValue","iterIndex","commit","Constructor","protoProps","staticProps","_defineProperties","subClass","superClass","_getPrototypeOf","_setPrototypeOf","construct","sham","_construct","_isNativeReflectConstruct","_wrapNativeSuper","_isNativeFunction","Wrapper","minLen","_arrayLikeToArray","_unsupportedIterableToArray","LuxonError","_Error","_inheritsLoose","InvalidDateTimeError","_LuxonError","toMessage","InvalidIntervalError","_LuxonError2","InvalidDurationError","_LuxonError3","ConflictingSpecificationError","_LuxonError4","InvalidUnitError","_LuxonError5","InvalidArgumentError","_LuxonError6","ZoneIsAbstractError","_LuxonError7","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","DATE_FULL","DATE_HUGE","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","Intl","DateTimeFormat","formatToParts","RelativeTimeFormat","by","best","minus","towardZero","isLeapYear","modMonth","floorMod","setUTCFullYear","weekYear","ts","offsetFormat","timeZone","intlOpts","hasIntl","hasFormatToParts","offHourStr","offMinuteStr","offHour","offMin","numericValue","nonUnitKeys","normalized","asNumber","ianaRegex","monthsLong","monthsShort","monthsNarrow","weekdaysLong","weekdaysShort","weekdaysNarrow","meridiems","erasLong","erasShort","erasNarrow","splits","tokenToString","_step","_createForOfIteratorHelperLoose","_macroTokenToFormatOpts","DD","DDD","DDDD","ttt","tttt","TT","TTT","TTTT","ff","fff","ffff","FF","FFF","FFFF","Formatter","formatOpts","systemLoc","parseFormat","fmt","currentFull","bracketed","macroTokenToFormatOpts","_proto","formatWithSystemDefault","redefaultToSystem","dtFormatter","formatDateTime","formatDateTimeParts","resolvedOptions","forceSimple","padTo","numberFormatter","formatDateTimeFromString","knownEnglish","listingMode","useDateTimeFormatter","outputCalendar","formatOffset","isOffsetFixed","allowZ","monthForDateTime","weekdays","weekdayForDateTime","eraForDateTime","stringifyTokens","offsetName","meridiemForDateTime","meridiem","ordinal","maybeMacro","formatDurationFromString","dur","lildur","_this2","tokenToField","realTokens","_ref","shiftTo","explanation","Zone","otherZone","_createClass","singleton","LocalZone","_Zone","parseZoneInfo","matchingRegex","dtfCache","typeToPos","ianaZoneCache","IANAZone","isValidZone","resetCache","isValidSpecifier","parseGMTOffset","dtf","makeDTF","_ref2","filled","_formatted$i","partsOffset","hackyOffset","asTS","objToLocalTS","singleton$1","FixedOffsetZone","utcInstance","parseSpecifier","signedOffset","InvalidZone","defaultZone","lowered","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","normalizeZone","numberingSystem","intlDTCache","locString","intlNumCache","intlRelCache","sysLocaleCache","defaultOK","englishFn","intlFn","PolyNumberFormatter","inf","NumberFormat","getCachedINF","roundTo","PolyDateFormatter","universal","gmtOffset","offsetZ","isOffsetZoneSupported","fromMillis","getCachedDTF","_proto2","toJSDate","tokenFormat","knownFormat","dateTimeHuge","PolyRelFormatter","isEnglish","hasRelative","rtf","cacheKeyOpts","sourceKeys","_objectWithoutPropertiesLoose","getCachedRTF","_proto3","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","formatRelativeTime","numbering","specifiedLocale","_parseLocaleString","localeStr","uIndex","parseLocaleString","parsedNumberingSystem","parsedOutputCalendar","intlConfigString","weekdaysCache","monthsCache","meridiemCache","eraCache","fastNumbersCached","fromOpts","defaultToEN","localeR","computedSys","systemLocale","fromObject","_temp","_proto4","hasFTP","isActuallyEn","hasNoWeirdness","alts","redefaultToEN","listStuff","formatStr","utc","mapMonths","mapWeekdays","_this3","_this4","matching","fastNumbers","relFormatter","supportsFastNumbers","_len","regexes","_len2","extractors","_key2","mergedVals","mergedZone","_ex","_len3","_key3","_patterns","_patterns$_i","extractor","_len4","_key4","parseInteger","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","simpleParse","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","fallback","int","parseMillis","fullOffset","isoTimeOnly","isoDuration","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","weekdayStr","yearStr","untruncateYear","rfc2822","obsOffset","milOffset","fromStrings","rfc1123","rfc850","ascii","isoYmdWithTimeExtensionRegex","combineRegexes","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","combineExtractors","extractISOYmd","extractISOTime","extractISOOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOYmdTimeOffsetAndIANAZone","extractIANAZone","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","conversionAccuracy","fromMap","fromUnit","toMap","toUnit","conv","antiTrunc","accurate","isLuxonDuration","normalizeObject","normalizeUnit","fromISO","_parseISODuration","extractISODuration","parseISODuration","fromISOTime","_parseISOTimeOnly","parseISOTimeOnly","isDuration","toFormat","fmtOpts","toObject","includeConfig","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","as","plus","friendlyDuration","mapUnits","_Object$keys","vals","normalizeValues","lastUnit","_step2","accumulated","_iterator2","own","ak","negated","_i2","_Object$keys2","_step3","_iterator3","durationish","INVALID$1","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","validateStartEnd","_split","startIsValid","endIsValid","_dur","isInterval","toDuration","startOf","hasSame","isAfter","dateTime","isBefore","splitAt","dateTimes","splitBy","divideEqually","numberOfParts","abutsStart","abutsEnd","engulfs","_intervals$sort$reduc","sofar","final","_Array$prototype","currentCount","toISODate","_temp2","_ref3$separator","invalidReason","mapEndpoints","mapFn","hasDST","setZone","isValidIANAZone","_ref$locale","_ref$numberingSystem","_ref$locObj","locObj","_ref$outputCalendar","monthsFormat","_ref2$locale","_ref2$numberingSystem","_ref2$locObj","_ref2$outputCalendar","_temp3","_ref3","_ref3$locale","_ref3$numberingSystem","_ref3$locObj","weekdaysFormat","_temp4","_ref4","_ref4$locale","_ref4$numberingSystem","_ref4$locObj","_temp5","_ref5$locale","_temp6","_ref6$locale","intlTokens","zones","earlier","later","utcDayStart","toUTC","keepLocalTime","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","deser","_numberingSystemsUTF","parseDigits","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","partTypeStyleToTokenVal","dummyDateTimeCache","getDummyDateTime","tokenForPart","maybeExpandMacroToken","expandMacroTokens","digitRegex","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","escapeToken","_ref5","oneOf","intUnit","unitate","unitForToken","disqualifyingUnit","_buildRegex","buildRegex","matchIndex","rawMatches","_ref6","dateTimeFromMatches","nonLeapLadder","leapLadder","getUTCDay","month0","gregObj","computeOrdinal","weeksInWeekYear","timeObject","weekdayOfJan4","yearInDays","daysInYear","_uncomputeOrdinal","uncomputeOrdinal","gregData","ordinalData","_uncomputeOrdinal2","validYear","validMonth","integerBetween","validDay","daysInMonth","unitOutOfRange","validHour","validMinute","validSecond","validMillisecond","INVALID$2","gregorianToWeek","localTS","utcGuess","o3","fixOffset","oPre","millisToAdd","_fixOffset","parsedZone","_ref$suppressSeconds","_ref$suppressMillisec","includeOffset","_ref$includePrefix","_ref$includeZone","includeZone","_ref$spaceZone","spaceZone","_ref$format","toTechFormat","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedUnits$1","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","hasInvalidGregorianData","hasInvalidTimeData","tsNow","_objToTS","objToTS","calendary","unsupportedZone","tsToObj","isLuxonDateTime","quickDT","fromJSDate","zoneToUse","fromSeconds","offsetProvis","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","defaultValues","useWeekData","objNow","gregorianToOrdinal","foundFirst","hl","higherOrderInvalid","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","_objToTS2","weekToGregorian","ordinalToGregorian","_parseISODate","parseISODate","parseDataToDateTime","fromRFC2822","_parseRFC2822Date","preprocessRFC2822","extractRFC2822","parseRFC2822Date","fromHTTP","_parseHTTPDate","extractRFC1123Or850","extractASCII","parseHTTPDate","fromFormat","_opts$locale","_opts$numberingSystem","_parseFromTokens","_explainFromTokens","explainFromTokens","parseFromTokens","fromString","fromSQL","_parseSQL","parseSQL","isDateTime","resolvedLocaleOpts","_Formatter$create$res","_ref3$keepLocalTime","_ref3$keepCalendarTim","keepCalendarTime","newTS","offsetGuess","clone$1","setLocale","mixed","settingWeekStuff","_objToTS4","adjustTime","normalizedUnit","endOf","_this$plus","toLocaleParts","_ref5$format","toISOWeekDate","_ref6$suppressMillise","_ref6$suppressSeconds","_ref6$includeOffset","_ref6$includePrefix","_ref6$format","toTechTimeFormat","toRFC2822","toHTTP","toSQLDate","toSQLTime","_ref7","_ref7$includeOffset","_ref7$includeZone","toSQL","toSeconds","toBSON","otherDateTime","durOpts","maybeArray","otherIsLater","diffed","_cursor$plus3","_highOrderDiffs","lowestOrder","highWater","dayDiff","_differs$_i","_cursor$plus","_cursor$plus2","highOrderDiffs","remainingMillis","lowerOrderUnits","_Duration$fromMillis","_diff","diffNow","inputMs","otherZoneDateTime","toRelative","diffRelative","toRelativeCalendar","bestBy","fromFormatExplain","_options$locale","_options$numberingSys","fromStringExplain","possiblyCachedWeekData","dateTimeish","LZString","keyStrBase64","keyStrUriSafe","baseReverseDic","alphabet","compressToBase64","_compress","decompressFromBase64","_decompress","getBaseValue","compressToUTF16","decompressFromUTF16","compressed","compressToUint8Array","uncompressed","TotalLen","current_value","decompressFromUint8Array","decompress","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","resetValue","getNextValue","resb","maxpower","enlargeIn","dictSize","numBits","cachedGuess","links","countries","guesses","logError","momentVersion","major","fractional","charCodeToInt","unpackBase60","untils","arrayToInt","intToUntil","abbrs","mapIndices","population","packedString","unpack","country_name","zone_names","toTimeString","abbr","offsetScore","abbrScore","OffsetAt","packed","normalizeName","addToGuesses","caller","getZone","normal0","normal1","_tzm","isMoment","needsOffset","unpacked","lo","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","ZoneScore","scoreOffsetAt","offsetAt","dataVersion","_zones","_links","_names","_countries","addZone","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","intlName","zoneScore","nextOffset","lastOffset","findChange","userOffsets","offsetsLength","guessesOffset","filteredGuesses","checkedOffsets","guessesForUserOffsets","zoneScores","sortZoneScores","rebuildGuess","zonesForCountry","country","with_offset","getCountry","updateOffset","keepTime","_isUTC","abbrWrap","zoneAbbr","resetZoneWrap","resetZoneWrap2","setDefault","momentProperties","defineLocale","weekdaysMin","meridiemParse","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","MM","yy","dayOfMonthOrdinalParse","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","postformat","symbolMap","preparse","numberMap","forms","plural","isFormat","relativeTimeWithPlural","period","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","mutationTable","softMutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","relativeTimeWithMutation","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","since","eraYearOrdinalRegex","eraYearOrdinalParse","$2","isUpper","ezafeNumSuffix","eifelerRegelAppliesToNumber","translateSingular","special","relativeTimeWithSingular","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","numberNoun","hundred","ten","numberAsNoun","nominative","accusative","genitive","processHoursFunction","hookCallback","hasOwnProp","arrLen","strict","createLocalOrUTC","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","weekdayMismatch","parsedParts","isNowValid","getParsingFlags","invalidWeekday","_strict","bigHour","_isValid","createUTC","hooks","updateInProgress","momentPropertiesLen","_isAMomentObject","_locale","copyConfig","Moment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","parentConfig","childConfig","targetLength","forceSign","absNumber","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","padded","zeroFill","localeData","expandFormat","removeFormattingTokens","makeFormatFunction","replaceLongDateFormatTokens","isoweekdays","isoweekday","dayofyears","dayofyear","gg","GG","isoweekyears","isoweekyear","isoweeks","isoweek","inputObject","normalizedInput","normalizeUnits","priorities","isoWeekday","isoWeekYear","isoWeek","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","strictRegex","regexEscape","unescapeFormat","argumentForCoercion","coercedNumber","absFloor","tokenLen","toInt","addParseToken","addFormatToken","addRegexToken","parseTwoDigitYear","getSetYear","makeGetSet","set$1","isUTC","setUTCMilliseconds","setUTCSeconds","setUTCMinutes","setUTCHours","setUTCDate","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setUTCMonth","shortP","longP","shortPieces","longPieces","mixedPieces","cmpLenRev","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","resYear","resDayOfYear","firstWeekOffset","ya","resWeek","weekOffset","weeksInYear","weekOffsetNext","addWeekParseToken","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","lowercase","_meridiemParse","hFormat","matchMeridiem","kInput","_isPm","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","locales","localeFamilies","minl","oldLocale","isLocaleNameSane","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","deprecateSimple","_config","parentLocale","mergeConfigs","normalizeLocale","commonPrefix","chooseLocale","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","UT","allowTime","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","parsedArray","extractFromRFC2822Strings","parsedInput","checkWeekday","militaryOffset","numOffset","calculateOffset","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekdayOverflow","curWeek","weekOfYear","createLocal","_week","xi","dayOfYearFromWeeks","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","getParseRegexForToken","addTimeToArrayFromToken","isPm","meridiemFixWrap","erasConvertYear","configFromArray","checkOverflow","configFromRFC2822","configFromISO","createInvalid","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromStringAndArray","createFromInputFallback","configFromString","normalizeObjectUnits","configFromObject","configFromInput","isObjectEmpty","prepareConfig","createFromConfig","prototypeMin","prototypeMax","moments","ordering","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_bubble","offsetFromString","chunkOffset","aspNetRegex","isoRegex","diffRes","absRound","parseIso","cloneWithOffset","positiveMomentsDifference","momentsDifference","inp","addSubtract","createDuration","isAdding","createAdder","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","monthDiff","wholeMonthDiff","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","erasAbbrRegex","erasName","erasAbbr","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","weeksTarget","setWeekAll","dayOfYearData","matchEraAbbr","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","addWeekYearFormatToken","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","jr","isCalendarSpec","sod","calendarFormat","asFloat","zoneDelta","startOfDate","utcStartOfDate","localStartOfDate","mod$1","isUtc","formatMoment","humanize","fromNow","toNow","invalidAt","localInput","inclusivity","localFrom","localTo","isSame","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","prioritizedLen","keepOffset","inspect","isLocal","unix","creationData","eraName","eraYear","getSetWeekYearHelper","getSetMonth","isoWeeks","weekInfo","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepMinutes","localAdjust","getDateOffset","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","localeSorted","_longDateFormat","formatUpper","_invalidDate","_ordinal","preParsePostFormat","_relativeTime","pastFuture","_eras","computeErasParse","_monthsShort","_monthsParseExact","handleStrictParse","computeMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","shiftWeekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","handleStrictParse$1","_fullWeekdaysParse","computeWeekdaysParse","langData","mathAbs","makeAs","asSeconds","asMinutes","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","abs$1","totalSign","ymSign","daysSign","hmsSign","proto$2","addSubtract$1","daysToMonths","monthsToDays","monthsFromDays","absCeil","argWithSuffix","argThresholds","withSuffix","posNegDuration","substituteTimeAgo","relativeTime$1","toISOString$1","toIsoString","setHookCallback","listMonthsImpl","listWeekdaysImpl","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","WEEK","MONTH","BOOLEAN","ECMA_SIZES","objectType","isGlobalSymbol","keyFor","getCalculator","stringProperties","symbolProperties","sizeOfObject","WeakSet","ieee754","customInspectSymbol","K_MAX_LENGTH","encodingOrOffset","isEncoding","createBuffer","actual","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","numberIsNaN","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","arrayIndexOf","indexSize","valLength","readUInt16BE","strLen","blitBuffer","byteArray","asciiToBytes","utf16leToBytes","fromByteArray","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","decodeCodePointsArray","hexSliceLookupTable","checkIntBI","BigInt","littleEndian","noAssert","checkIEEE754","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","poolSize","alloc","allocUnsafeSlow","_isBuffer","swap16","swap","swap32","swap64","slowToString","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","hexWrite","utf8Write","asciiWrite","base64Write","ucs2Write","_arr","newBuf","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","checkInt","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","wrtBigUInt64LE","writeBigUInt64BE","wrtBigUInt64BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloat","writeFloatBE","writeDoubleLE","writeDouble","writeDoubleBE","targetStart","copyWithin","getMessage","Base","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","addNumericalSeparator","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","BufferBigIntNotDefined","AssertionError","CollectionEvent","opt_element","opt_index","opt_array","unique_","array_","assertUnique_","updateLength_","setAt","opt_except","ADD","REMOVE","disposed","Disposable","opt_geometryOrProperties","styleFunction_","geometryChangeKey_","handleGeometryChanged_","hasProperties","getGeometryName","handleGeometryChange_","opt_style","styles_1","createStyleFunction","loadHandler","IMAGE_DECODE","listening_1","listenOnce","imageLoadFunction","src_","unlisten_","imageLoadFunction_","ImageWrapper","handleImageError_","unlistenImage_","handleImageLoad_","listenImage","setImage","pixelRatio_","abstract","EventTarget","IDLE","LOADING","LOADED","ERROR","MapRenderer","map_","declutterTree_","dispatchRenderEvent","calculateMatrices2D","coordinateToPixelTransform","checkWrapped","thisArg2","managed","translatedCoordinate","canWrapX","worldWidth","layerStates","numLayers","tmpCoord","hasRenderer","inView","layerRenderer","getRenderer","getWrapX","callback_1","hasFeatureAtCoordinate","scheduleExpireIconCache","iconImageCache","postRenderFunctions","expireIconCache","CompositeMapRenderer","fontChangeListenerKey_","checkedFonts","ObjectEventType","redrawText","element_","children_","hasListener","event_1","RenderEventType","previousElement","sourceState","replaceChildren","getDataAtPixel","LayerGroup","layersListenerKeys_","listenerKeys_","handleLayersChanged_","handleLayerChange_","handleLayersAdd_","handleLayersRemove_","layersArray","collectionEvent","getLayersArray","getLayerStatesArray","opt_states","ownLayerState","getLayerState","getSourceState","BaseLayer","MapBrowserEventHandler","moveTolerance","dragging_","dragListenerKeys_","moveTolerance_","down_","activePointers_","trackedTouches_","pointerdownListenerKey_","handlePointerDown_","relayedListenerKey_","relayEvent_","boundHandleTouchMove_","handleTouchMove_","PASSIVE_EVENT_LISTENERS","passive","emulateClick_","pointerEvent","newEvent","clickTimeoutId_","updateActivePointers_","handlePointerUp_","propagationStopped","isMouseActionButton_","getRootNode","isMoving_","originalPointerMoveEvent_","DROP","PriorityQueue","priorityFunction","keyFunction","priorityFunction_","keyFunction_","elements_","priorities_","queuedElements_","dequeue","siftUp_","elementKey","enqueue","siftDown_","getLeftChildIndex_","getRightChildIndex_","getParentIndex_","heapify_","isKeyQueued","isQueued","lIndex","rIndex","smallerChildIndex","reprioritize","TileQueue","tilePriorityFunction","tileChangeCallback","boundHandleTileChange_","tileChangeCallback_","tilesLoading_","tilesLoadingKeys_","getTilesLoading","tileKey","loadMoreTiles","maxTotalLoading","maxNewLoads","newLoads","PluggableMap","optionsInternal","keyboardEventTarget","interactions","overlays","MapProperty","createOptionsInternal","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","animationDelay_","animationDelayKey_","renderFrame_","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","overlayContainer_","overlayContainerStopEvent_","mapBrowserEventHandler_","keyboardEventTarget_","keyHandlerKeys_","overlays_","overlayIdIndex_","renderer_","postRenderFunctions_","tileQueue_","getTilePriority","handleTileChange_","handleLayerGroupChanged_","handleViewChanged_","handleSizeChanged_","handleTargetChanged_","interaction","addOverlayInternal_","getControls","addInteraction","getInteractions","getLayerGroup","addOverlay","getOverlays","getCoordinateFromPixelInternal","hasFeatureAtPixel","getEventCoordinate","getEventPixel","getEventCoordinateInternal","viewportPosition","eventPosition","getTarget","getOverlayById","getLoading","viewCoordinate","getPixelFromCoordinateInternal","getOverlayContainer","getOverlayContainerStopEvent","tileSourceKey","tileCenter","tileResolution","wantedTiles","browserEvent","opt_type","handleMapBrowserEvent","interactionsArray","handlePostRender","tileQueue","lowOnFrameBudget","getAnimating","resolveConstraints","handleResize_","postRenderTimeoutHandle_","handleViewPropertyChanged_","updateViewportSize_","removeInteraction","removeOverlay","previousFrameState","hasArea","isDef","getHints","getForViewAndSize","MapEvent","MapEventType","createOrUpdateEmpty","setLayerGroup","computedStyle","borderBottomWidth","setViewportSize","Attribution","ulElement_","collapsed_","overrideCollapsible_","collapsible_","collapseLabel","collapseLabel_","label_","activeLabel","CLASS_COLLAPSED","renderedAttributions_","collectSourceAttributions_","visibleAttributions","attributionGetter","getAttributions","getAttributionsCollapsible","setCollapsible","removeChildren","handleToggle_","getCollapsible","setCollapsed","getCollapsed","callResetNorth_","resetNorth","duration_","autoHide_","autoHide","rotation_","CLASS_HIDDEN","resetNorth_","Zoom","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","outElement","zoomByDelta_","currentZoom","newZoom","getConstrainedZoom","cancelAnimations","DoubleClickZoom","delta_","zoomByDelta","Interaction","DragPan","kinetic_","kinetic","lastCentroid","panning_","onFocusOnly","focusWithTabindex","noKinetic_","beginInteraction","targetPointers","centroid","centroidFromPointers","lastPointersCount_","scaleCoordinate","rotateCoordinate","adjustCenterInternal","getCenterInternal","centerpx","animateInternal","getConstrainedCenter","endInteraction","DragRotate","altShiftKeysOnly","lastAngle_","getConstraints","adjustRotationInternal","mouseActionButton","RenderBox","geometry_","startPixel_","endPixel_","render_","startPixel","endPixel","setPixels","createOrUpdateGeometry","DragBoxEvent","DragBox","box_","minArea_","onBoxEnd","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","DragZoom","out_","mapExtent","calculateExtentInternal","boxPixelExtent","createOrUpdateFromCoordinates","getBottomLeft","getTopRight","getResolutionForExtentInternal","getConstrainedResolution","KeyboardPan","defaultCondition_","targetNotEditable","pixelDelta_","pixelDelta","mapUnitsDelta","KeyboardZoom","Kinetic","decay","minVelocity","decay_","minVelocity_","delay_","points_","angle_","initialVelocity_","MouseWheelZoom","totalDelta_","lastDelta_","maxDelta_","timeout_","useAnchor_","useAnchor","constrainResolution_","constrainResolution","lastAnchor_","startTime_","trackpadEventGap_","deltaPerZoom_","endInteraction_","trackpadTimeoutId_","FIREFOX","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","getConstrainResolution","adjustZoom","timeLeft","timeoutId_","handleWheelZoom_","setMouseAnchor","PinchRotate","anchor_","rotating_","rotationDelta_","threshold_","rotationDelta","touch0","touch1","PinchZoom","lastDistance_","lastScaleDelta_","adjustResolutionInternal","zoomOptions","rotateOptions","attributionOptions","defaultControls","altShiftDragRotate","doubleClickZoom","zoomDelta","zoomDuration","dragPan","pinchRotate","pinchZoom","keyboard","mouseWheelZoom","shiftDragZoom","defaultInteractions","opt_dragging","opt_frameState","pixel_","coordinate_","SINGLECLICK","CLICK","DBLCLICK","POINTERDRAG","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","POSTRENDER","MOVESTART","MOVEEND","ObjectEvent","opt_values","values_","opt_silent","changeEventTypeCache","PROPERTYCHANGE","revision_","getRevision","ol_key","insertFirst","CLASS_SELECTABLE","autoPan","autoPanAnimation","autoPanMargin","mapPostrenderListenerKey","handleElementChanged","handleMapChanged","handleOffsetChanged","handlePositionChanged","handlePositioningChanged","setPositioning","getOffset","getPositioning","updatePixelPosition","performAutoPan","panIntoView","opt_panIntoViewOptions","mapRect","getRect","overlayRect","panIntoViewOptions","myMargin","offsetRight","offsetBottom","centerPx","newCenterPx","panOptions","mapSize","updateRenderedPosition","posX","posY","msTransform","getOptions","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","CENTER_LEFT","CENTER_CENTER","CENTER_RIGHT","TOP_LEFT","TOP_CENTER","TOP_RIGHT","transition_","transitionStarts_","getInterimTile","getTileCoord","getAlpha","easeIn","inTransition","endTransition","opt_highWaterMark","count_","entries_","oldest_","newest_","canExpireCache","value_","key_","peekLast","peekLastKey","pruneExceptNewestZ","TileRange","containsTileRange","tileRange","onlyCenter","smooth","opt_isMoving","maxExtent","viewportSize","showFullExtent","xResolution","yResolution","opt_smooth","opt_maxExtent","opt_showFullExtent","cappedMaxRes","getViewportClampedResolution","getSmoothClampedResolution","hints_","animations_","projection_","createProjection","viewportSize_","targetCenter_","cancelAnchor_","applyOptions_","resolutionConstraintInfo","resolutionConstraint","zoomFactor","multiWorld","smoothResolutionConstraint","projExtent","constrainOnlyCenter","isGlobal","capped","linearFindNearest","createSnapToResolutions","createMinMaxResolution","defaultMaxResolution","DEFAULT_TILE_SIZE","defaultMinResolution","defaultMaxZoom","opt_minResolution","minZoomLevel","cappedZoomLevel","newResolution","createSnapToPower","constraint","createResolutionConstraint","maxResolution_","minResolution_","zoomFactor_","resolutions_","minZoom_","centerConstraint","smoothExtentConstraint","centerNone","createCenterConstraint","rotationConstraint","enableRotation","constrainRotation","createSnapToZero","rotationNone","createSnapToN","createRotationConstraint","constraints_","setCenterInternal","setResolution","options_","getUpdatedOptions_","var_args","animationCount","animationCallback","targetResolution_","targetRotation_","inAndOut","sourceCenter","sourceResolution","targetResolution","getResolutionForZoom","sourceRotation","modulo","targetRotation","isNoopAnimation","setHint","updateAnimations_","updateAnimationKey_","seriesComplete","getViewportSize_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","currentCenter","addCoordinate","currentResolution","opt_rotation","opt_size","opt_hints","getMaxResolution","getMinResolution","getMaxZoom","getZoomForResolution","setMaxZoom","setMinZoom","setConstrainResolution","getResolutions","getResolutionForExtent","getResolutionForValueFunction","opt_power","getValueForResolutionFunction","logPower","baseLevel","geometryOrExtent","polygonFromExtent","fitInternal","cosAngle","sinAngle","minRotX","minRotY","maxRotX","maxRotY","rotX","rotY","centerRotX","centerRotY","VOID","centerOn","centerOnInternal","adjustCenter","deltaCoordinates","adjustResolution","opt_anchor","isMoving","adjustRotation","newRotation","opt_doNotCancelAnims","opt_forceMoving","newCenter","opt_duration","opt_resolutionDirection","endInteractionInternal","opt_targetResolution","targetZoom","opt_direction","targetRes","ANIMATING","INTERACTING","haystack","needle","opt_comparator","numberSafeCompareFunction","len1","opt_func","opt_strict","currentVal","assertion","HEX_COLOR_RE_","NAMED_COLOR_RE_","fromNamed","fromStringInternal_","target_","along","coordinate1","coordinate2","coord2","opt_fractionDigits","worldsAway","opt_sourceExtentWidth","sourceExtentWidth","getWorldsAway","fontRegEx","fontRegExMatchIndex","getFontParameters","fontSpec","families","opt_width","opt_height","opt_canvasPool","WORKER_OFFSCREEN_CANVAS","OffscreenCanvas","opt_this","opt_once","originalListener_1","eventsKey","CHANGE","BLUR","CLEAR","DRAGENTER","DRAGOVER","FOCUS","KEYDOWN","KEYPRESS","LOAD","RESIZE","TOUCHMOVE","WHEEL","opt_target","eventTarget_","pendingRemovals_","dispatching_","listeners_","listenersForType","propagate","dispatching","pendingRemovals","getListeners","WEBKIT","MAC","never","extendCoordinate","opt_extent","extent1","extent2","relationship","Relationship","extendCoordinates","extendFlatCoordinates","extendXY","getBottomRight","corner","Corner","cosRotation","sinRotation","xCos","xSin","yCos","ySin","startRel","coordinateRelationship","endRel","transformFn","opt_stops","_boundingExtentXYs","UNKNOWN","INTERSECTING","failure","responseXML","defaultFeatureProjection","getReadOptions","writeFeatures","equivalentProjection","power_1","ARRAY_BUFFER","TEXT","XML","opt_geometries","geometries_","changeEventsKeys_","listenGeometriesChange_","unlistenGeometriesChange_","geometryCollection","setGeometries","closestSquaredDistanceXY","getGeometries","cloneGeometries","getGeometriesArrayRecursive","geometriesArray","simplifiedGeometryRevision","simplifiedGeometryMaxMinSquaredTolerance","simplifiedGeometries","simplified","simplifiedGeometry","simplifiedGeometryCollection","setGeometriesArray","opt_sy","clonedGeometries","JSONFeature","readFeatureFromObject","getObject","readFeaturesFromObject","readGeometryFromObject","readProjectionFromObject","writeFeatureObject","writeGeometryObject","extractGeometryName_","extractGeometryName","geoJSONFeature","geometry_name","geoJSONFeatures","crs","readPointGeometry","readLineStringGeometry","readPolygonGeometry","readMultiPointGeometry","readMultiLineStringGeometry","readMultiPolygonGeometry","readGeometryCollectionGeometry","geoJSON","writePointGeometry","writeLineStringGeometry","rightHanded","writePolygonGeometry","writeMultiPointGeometry","writeMultiLineStringGeometry","writeMultiPolygonGeometry","writeGeometryCollectionGeometry","lastResult","nextArgs","arrayEquals","extentRevision_","simplifyTransformedInternal","memoizeOne","opt_closestPoint","returnOrUpdate","sourceProj","inCoordinates","outCoordinates","XY","XYM","XYZM","LINE_STRING","LINEAR_RING","POLYGON","MULTI_POINT","MULTI_LINE_STRING","MULTI_POLYGON","GEOMETRY_COLLECTION","flatMidpoint_","flatMidpointRevision_","maxDeltaRevision_","appendCoordinate","maxSquaredDelta","assignClosestPoint","forEachSegment","getCoordinateAtM","opt_extrapolate","lineStringCoordinateAtM","inflateCoordinates","getCoordinateAt","opt_dest","lineStringLength","getSimplifiedGeometryInternal","simplifiedFlatCoordinates","douglasPeucker","intersectsLineString","deflateCoordinates","linearRingArea","opt_ends","lineStrings","appendLineString","arrayMaxSquaredDelta","assignClosestArrayPoint","opt_interpolate","lineStringsCoordinateAtM","inflateCoordinatesArray","getLineStrings","midpoints","simplifiedEnds","douglasPeuckerArray","intersectsLineStringArray","deflateCoordinatesArray","appendPoint","squaredDx","getPoint","getPoints","opt_endss","endss_","flatInteriorPointsRevision_","orientedRevision_","orientedFlatCoordinates_","appendPolygon","newEndss","multiArrayMaxSquaredDelta","assignClosestMultiArrayPoint","linearRingssContainsXY","linearRingssArea","opt_right","orientLinearRingsArray","inflateMultiCoordinatesArray","getInteriorPoints","linearRingssAreOriented","simplifiedEndss","quantizeMultiArray","prevEnds","intersectsLinearRingMultiArray","deflateMultiCoordinatesArray","lastEnds","flatInteriorPointRevision_","flatInteriorPoint_","linearRingsContainsXY","linearRingsArea","orientLinearRings","getLinearRings","linearRings","linearRingsAreOriented","quantizeArray","intersectsLinearRingArray","opt_n","opt_sphereRadius","sphereOffset","opt_sides","opt_angle","sides","arrayLength","makeRegular","getFirstCoordinate","getLastCoordinate","getStrideForLayout","nesting","getLayoutForStride","simpleGeometry","twiceArea","offset2","lerp","squaredDelta","isRing","opt_tmpPoint","tmpPoint","assignClosest","linearRingContainsXY","wn","coordinatess","coordinatesss","opt_coordinates","opt_coordinatess","opt_coordinatesss","flatCentersOffset","pointX","maxSegmentLength","segmentLength","interiorPoints","opt_dimension","length_1","cumulativeLengths","binarySearch","extrapolate","m0","coordinatesExtent","point1","point2","intersectsSegment","intersectsLinearRing","linearRingContainsExtent","firstVertexRepeated","iMinVertex","minXAtMinY","findCornerVertex","iPreviousVertex","iNextVertex","aY","bX","bY","cX","cY","isClockwise","reverseCoordinates","simplifiedOffset","maxSquaredDistance","squaredDistance_1","squaredSegmentDistance","dx1","dy1","dx2","dy2","quantize","anchorX","anchorY","WorkerGlobalScope","linear","trackedPointers_","getPointerCount","updateTrackedPointers_","handledUp","isPointerDraggingEvent","ACTIVE","deselected","originalFeatureStyles","boundAddFeature_","boundRemoveFeature_","addCondition_","addCondition","removeCondition_","removeCondition","toggleCondition_","multi_","featureLayerAssociation_","addFeatureLayerAssociation_","restorePreviousStyle_","applySelectedStyle_","selectInteractions","removeFeatureLayerAssociation_","LayerProperty","className_","state_","getClassName","opt_managed","getOpacity","setMaxResolution","setMinResolution","zindex","renderBuffer","declutter_","renderBuffer_","updateWhileAnimating_","updateWhileInteracting_","getDeclutter","getRenderBuffer","getRenderOrder","getUpdateWhileAnimating","getUpdateWhileInteracting","setRenderOrder","renderOrder","createDefaultStyle","toStyleFunction","mapPrecomposeKey_","mapRenderKey_","sourceChangeKey_","handleSourcePropertyChange_","handleSourceChange_","arrayLayerState","OPACITY","VISIBLE","EXTENT","Z_INDEX","MAX_RESOLUTION","MIN_RESOLUTION","MAX_ZOOM","MIN_ZOOM","SOURCE","PRELOAD","USE_INTERIM_TILES_ON_ERROR","IMAGE_REPLAYS","ReplayType","hybrid","VECTOR_REPLAYS","CanvasVectorTileLayerRenderer","boundHandleStyleImageChange_","handleStyleImageChange_","dirty_","renderTileImageQueue_","tileListenerKeys_","tmpTransform_","prepareTile","tileUid","updateExecutorGroup_","tileImageNeedsRender_","wantedResolution","getRenderMode","renderTileImage_","isDrawableTile","getTileImage","layerRevision","renderedLayerRevision_","renderedTiles","builderState","layerUid","_loop_1","sourceTileExtent","sharedExtent","bufferedExtent","this_1","tmpExtent","builderGroup","CanvasBuilderGroup","getSquaredRenderTolerance","renderFeature","executorGroupInstructions","replayExtent","renderingReplayGroup","CanvasExecutorGroup","_loop_2","tileContainsCoordinate","containsCoordinate","renderedProjection","getTileCoordForCoordAndResolution","tilePixel","animatingOrInteracting_","renderedRotation_","getRenderTransform","getTileCoordCenter","createHitDetectionImageData","hitDetect","renderIfReadyAndVisible","renderQueuedTileImages_","declutterReplays","replayTypes","tiles","clips","clipZs","worldOffset","executorGroup","hasExecutors","currentZ","currentClip","getClipCoords","replayDeclutter","replayState","renderPixelRatio","renderScale","resetTransform","scaleTransform","pixelScale","translateTransform","renderMode_","cosh","log2","LOG2E","mat","maxRow","maxEl","absValue","coef","angleInRadians","angleInDegrees","var_sources","RADIUS","HALF_SIZE","WORLD_EXTENT","EPSG3857Projection","worldExtent","PROJECTIONS","opt_output","EPSG4326Projection","opt_axisOrientation","axisOrientation","metersPerUnit","sourceCode","destinationCode","addProj","addTransformFunc","cloneTransform","projectionLike","getProj","opt_units","getPointResolutionFunc","toEPSG4326_1","vertices","projections","addProjection","addProjections","defaultCode","opt_projection","lon","projection1","projection2","equalUnits","destinationProjection","transformFunc","getTransformFunc","destProjection","addEquivalentProjections","EPSG3857_PROJECTIONS","EPSG4326_PROJECTIONS","projections1","projections2","forwardTransform","addEquivalentTransforms","fromEPSG4326","toEPSG4326","addCommon","code_","units_","worldExtent_","axisOrientation_","global_","canWrapX_","getPointResolutionFunc_","defaultTileGrid_","metersPerUnit_","getAxisOrientation","setGlobal","getDefaultTileGrid","setDefaultTileGrid","setGetPointResolution","DEGREES","FEET","METERS","PIXELS","TILE_PIXELS","USFEET","userTransform","multiplyTransform","getSquaredTolerance","CanvasImmediateRenderer","declutterTree","zIndexItems","renderDeclutter","opt_inversePixelTransform","opt_context","PRERENDER","PRECOMPOSE","POSTCOMPOSE","RENDERCOMPLETE","VectorContext","drawCustom","drawFeature","drawGeometryCollection","geometryCollectionGeometry","drawLineString","lineStringGeometry","drawMultiLineString","multiLineStringGeometry","drawMultiPoint","multiPointGeometry","drawMultiPolygon","multiPolygonGeometry","drawPoint","pointGeometry","drawPolygon","polygonGeometry","setFillStrokeStyle","setImageStyle","imageStyle","opt_declutterGroup","setTextStyle","textStyle","opt_declutterGroups","defaultFillStyle","defaultLineCap","defaultLineDash","defaultLineDashOffset","defaultLineJoin","defaultMiterLimit","defaultStrokeStyle","defaultTextAlign","defaultTextBaseline","defaultLineWidth","measureFont","measureContext","textHeights","registerFont","referenceWidth","referenceFonts","fontStyle","referenceFont","measureTextWidth","isAvailable","measureTextHeight","actualBoundingBoxAscent","actualBoundingBoxDescent","numLines","labelOrImage","originX","originY","contextInstructions","executeLabelInstructions","createTransformStringCanvas","CanvasBuilder","maxLineWidth","beginGeometryInstruction1_","beginGeometryInstruction2_","bufferedMaxExtent_","tmpCoordinate_","hitDetectionInstructions","applyPixelRatio","appendFlatCoordinates","skipFirst","myEnd","getBufferedMaxExtent","lastRel","nextRel","lastXCoord","lastYCoord","nextCoord","drawCustomCoordinates_","builderEnds","builderEnd","beginGeometry","builderEndss","builderBegin","myEnds","CanvasInstruction","endGeometry","reverseHitDetectionInstructions","reverseSubArray","fillStyleColor","asColorLike","strokeStyleColor","strokeStyleLineCap","getLineCap","strokeStyleLineDash","getLineDash","lineDash","strokeStyleLineDashOffset","getLineDashOffset","lineDashOffset","strokeStyleLineJoin","getLineJoin","strokeStyleWidth","strokeStyleMiterLimit","getMiterLimit","miterLimit","fillInstruction","applyStroke","updateFillStyle","currentFillStyle","updateStrokeStyle","currentStrokeStyle","currentLineCap","currentLineDash","currentLineDashOffset","currentLineJoin","currentLineWidth","currentMiterLimit","endGeometryInstruction","CanvasImageBuilder","declutterGroups_","hitDetectionImage_","imagePixelRatio_","anchorX_","anchorY_","height_","opacity_","originX_","originY_","rotateWithView_","scale_","width_","drawCoordinates_","myBegin","declutterGroups","hitDetectionImage","getHitDetectionImage","getRotateWithView","getScaleArray","CanvasLineStringBuilder","drawFlatCoordinates_","moveToLineToInstruction","beginPathInstruction","strokeInstruction","lastStroke","CanvasPolygonBuilder","drawFlatCoordinatess_","closePathInstruction","setFillStrokeStyles_","circleInstruction","BATCH_CONSTRUCTORS","Builder","ImageBuilder","LineStringBuilder","TextBuilder","BuilderGroup","tolerance_","maxExtent_","resolution_","buildersByZIndex_","addDeclutter","builderInstructions","zKey","builders","builderKey","builderInstruction","getBuilder","builderType","zIndexKey","replays","replay","DEFAULT","IMAGE","maxAngle","measureAndCacheTextWidth","rotatedCoordinates","previousAngle","numChars","segmentM","angleChanged","charLength","charM","segmentPos","coordinateCache_","renderedTransform_","pixelCoordinates_","viewRotation_","fillStates","strokeStates","textStates","widths_","labels_","Executor","textKey","fillKey","strokeKey","strokeState","fillState","textState","TEXT_ALIGN","measureTextWidths","renderWidth","OffscreenCanvasRenderingContext2D","CanvasRenderingContext2D","leftRight","replayTextBackground_","alignFill_","fill_","setStrokeStyle_","replayImageOrLabel_","contextScale","imageOrLabel","declutterGroup","snapToPixel","boxW","boxH","centerX","centerY","strokePadding","declutterArgs","drawImageOrLabel","origin_1","repeatSize","declutterData","collides","currentAlpha","drawLabelWithPointPlacement_","execute_","featureCallback","opt_hitExtent","pixelCoordinates","transformSetFromArray","prevX","prevY","roundX","roundY","pendingFill","pendingStroke","lastFillInstruction","lastStrokeInstruction","coordinateCache","viewRotation","viewRotationFromTransform","batchSize","labelWithAnchor","geometryWidths","declutterGroupIndex","measurePixelRatio","pixelRatioScale","textScale","cachedWidths","pathLength","drawTextOnPath","executeHitDetection","opt_featureCallback","ORDER","BuilderType","ExecutorGroup","allInstructions","opt_renderBuffer","executorsByZIndex_","hitDetectionContext_","hitDetectionTransform_","createExecutors_","flatClipCoords","executors","instructionByZindex","candidates","contextSize","hitExtent","circleArrayCache","arraySize","fillCircleArrayRowToMiddle","getCircleArray","i_1","j_1","result_1","zs","opt_builderTypes","opt_declutterReplays","builderTypes","zz","executorData","currentExecutor","opt_squaredTolerance","opt_userTransform","squaredTolerance_","userTransform_","contextFillState_","contextStrokeState_","contextTextState_","fillState_","strokeState_","imageAnchorX_","imageAnchorY_","imageHeight_","imageOpacity_","imageOriginX_","imageOriginY_","imageRotateWithView_","imageRotation_","imageScale_","imageWidth_","text_","textOffsetX_","textOffsetY_","textRotateWithView_","textRotation_","textScale_","textFillState_","textStrokeState_","textState_","tmpLocalTransform_","drawImages_","localTransform","drawText_","setContextFillState_","setContextStrokeState_","setContextTextState_","moveToLineTo_","drawRings_","transformGeom2D","getStroke","getGeometryFunction","flatMidpoint","geometryExtent","flatMidpoints","flatInteriorPoint","flatInteriorPoints","contextFillState","contextStrokeState","contextTextState","imageSize","imageAnchor","imageImage","imageOrigin","imageScale","textFillStyle","textFillStyleColor","textStrokeStyle","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","textOffsetX","getOffsetX","textOffsetY","getOffsetY","textRotateWithView","textRotation","textText","textTextAlign","getTextAlign","textTextBaseline","getTextBaseline","Instruction","BEGIN_GEOMETRY","BEGIN_PATH","CLOSE_PATH","DRAW_CHARS","DRAW_IMAGE","END_GEOMETRY","FILL","MOVE_TO_LINE_TO","SET_FILL_STYLE","SET_STROKE_STYLE","STROKE","m23","x12","y12","x23","y23","chunkStart","chunkEnd","chunkM","hanging","alphabetic","ideographic","CanvasTextBuilder","textKey_","fillKey_","strokeKey_","TextPlacement","flatOffset","flatEnd","matchingChunk","drawChars_","saveTextStates_","pixelRatio_1","getOverflow","getMaxAngle","getPlacement","getBackgroundFill","getBackgroundStroke","getPadding","imageSmoothingEnabled","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","originalStyle","imgSize","getImageSize","canvas_1","imgContext","fillRect","Icon","byGeometryType","zIndexKeys","geomAndStyle","resultFeatures","LayerRenderer","boundHandleImageChange_","handleImageChange_","loadedTileCallback","createLoadedTileFinder","forEachLoadedTile","imageState","layerClassName","HTMLCanvasElement","rotateAtOffset","dispatchRenderEvent_","renderPixel","newCanvas","newContext","tileLayer","extentChanged","renderedExtent_","newTiles_","tmpTileRange_","tileState","tileSource","sourceRevision","canvasExtent","getTileRangeForExtentAndZ","tilesToDrawByZ","findLoadedTiles","tmpTileRange","childTileRange","getTileCoordChildTileRange","forEachTileCoordParentTileRange","canvasScale","getOpaque","currentTilePixelSize","currentScale","dx_1","dy_1","originTileCoord","originTileExtent","tileGutter","getGutterForProjection","tilesToDraw","tileCoordKey","floatX","floatY","drawTileImage","updateUsedTiles","renderedPixelRatio","manageTilePyramid","scheduleExpireCache","gutter","tileAlpha","alphaChanged","postRenderFunction","opt_tileCallback","useTile","hitDetectionImageData_","renderedFeatures_","renderedRevision_","renderedResolution_","renderedCenter_","renderedProjection_","renderedRenderOrder_","replayGroup_","makeScale","transformToString","replayGroup","world","transform_2","viewHints_1","layer_1","features_1","animating","interacting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","defaultRenderOrder","loadExtents","wrapCoordinateX","loadExtent","wrapExtentX","getRenderTolerance","userExtent","replayGroupInstructions","GEOMETRY_RENDERERS","getImageState","imageReplay","textReplay","lineStringReplay","polygonReplay","geometryRenderer","circleReplay","feature1","feature2","getTolerance","unlistenImageChange","listenImageChange","renderFeatureInternal","renderGeometry","ERROR_THRESHOLD","opt_tolerance","boundRefresh_","opt_fast","setDistance","mapDistance","clustered","neighbors","neighbor","createCluster","attributions_","adaptAttributions","attributionsCollapsible_","wrapX_","attributionLike","READY","ImageTile","crossOrigin_","getBlankImage","naturalWidth","naturalHeight","Triangulation","targetProj","targetExtent","maxSourceExtent","errorThreshold","opt_destinationResolution","sourceProj_","targetProj_","transformInvCache","transformInv","transformInv_","maxSourceExtent_","errorThresholdSquared_","triangles_","wrapsXInSource_","canWrapXInSource_","sourceWorldWidth_","targetWorldWidth_","destinationTopLeft","destinationTopRight","destinationBottomRight","destinationBottomLeft","sourceTopLeft","sourceTopRight","sourceBottomRight","sourceBottomLeft","maxSubdivision","addQuad_","leftBound_1","triangle","newTriangle","addTriangle_","aSrc","bSrc","cSrc","dSrc","sourceQuadExtent","sourceCoverageX","sourceWorldWidth","wrapsX","needsSubdivision","targetQuadExtent","isNotFinite","centerSrc","bcSrc","da","daSrc","ab","abSrc","cdSrc","calculateSourceExtent","getTriangles","brokenDiagonalRendering_","IMAGE_SMOOTHING_DISABLED","msImageSmoothingEnabled","u1","u2","targetMetersPerUnit","sourceMetersPerUnit","compensationFactor","ReprojTile","targetTileGrid","getTileFunction","opt_errorThreshold","opt_renderEdges","opt_contextOptions","renderEdges_","contextOptions_","gutter_","sourceTileGrid_","targetTileGrid_","wrappedTileCoord_","sourceTiles_","sourcesListenerKeys_","sourceZ_","maxTargetExtent","limitedTargetExtent","sourceProjExtent","calculateSourceResolution","calculateSourceExtentResolution","triangulation_","sourceRange","srcX","srcY","reproject_","triangulation","globalCompositeOperation","sourceDataExtent","canvasWidthInUnits","canvasHeightInUnits","stitchContext","stitchScale","xPos","yPos","srcWidth","srcHeight","targetTopLeft","u0","pixelRound","v0","sourceNumericalShiftX","sourceNumericalShiftY","affineCoefs","solveLinearSystem","drawTestTriangle","verifyBrokenDiagonalRendering","isBrokenDiagonalRendering","ud","vd","renderReprojected","leftToLoad_1","sourceListenKey_1","unlistenSources_","defaultTileLoadFunction","tileCacheForProjection","tileGridForProjection","reprojectionErrorThreshold_","renderReprojectionEdges_","usedTileCache","getTileCacheForProjection","equivalent","getGutter","thisProj","projKey","createTile_","tileOptions","getTileInternal","setRenderReprojectionEdges","setTileGridForProjection","tilegrid","proj","imageTile","TileSource","opaque_","tilePixelRatio_","scaleSize","withinExtentAndZ","TileSourceEvent","generateTileUrlFunction_","tileLoadingKeys_","getTileLoadFunction","getTileUrlFunction","setTileLoadFunction","createFromTemplates","VectorSourceEvent","opt_feature","strategy_","allStrategy","featuresRtree_","loadedExtentsRtree_","nullGeometryFeatures_","idIndex_","uidIndex_","featureChangeKeys_","featuresCollection_","addFeaturesInternal","bindFeaturesCollection_","addFeatureInternal","featureKey","addToIndex_","setupChangeEvents_","extents","newFeatures","geometryFeatures","length_2","length_3","modifyingCollection","removeFeatureInternal","forEachFeature","forEachFeatureAtCoordinateDirect","forEachFeatureInExtent","forEachFeatureIntersectingExtent","getFeaturesCollection","getAll","getFeaturesAtCoordinate","getClosestFeatureToCoordinate","opt_filter","closestFeature","previousMinSquaredDistance","getUrl","sid","removeFromIdIndex_","loadedExtentsRtree","extentsToLoad","extentToLoad","removeLoadedExtent","ADDFEATURE","CHANGEFEATURE","REMOVEFEATURE","DEFAULT_RADIUS","lat1","lat2","deltaLatBy2","deltaLonBy2","getLengthInternal","getAreaInternal","bearing","lon1","dByR","lat","toDegrees","opt_maxEntries","rbush_","RBush_","items_","forEach_","rbush","RegularShape","displacement","hitDetectionCanvas_","origin_","radius_","radius1","radius2_","radius2","stroke_","size_","imageSize_","hitDetectionImageSize_","getRadius2","getDisplacement","setScale","renderOptions","createRenderOptions","createHitDetectionCanvas_","draw_","getHitDetectionImageSize","angle0","radiusC","asArray","drawHitDetectionCanvas_","ImageStyle","color_","taintedTestContext","IconImage","imageState_","isTainted_","tainted_","dispatchChangeEvent_","replaceColor_","getSrc","imgData","putImageData","normalizedAnchor_","anchorOrigin_","anchorOrigin","anchorXUnits_","anchorYUnits_","iconImage_","iconImage","getIconImage","offset_","offsetOrigin_","offsetOrigin","setAnchor","iconImageSize","FRACTION","cache_","cacheSize_","maxCacheSize_","IconImageCache","expire","maxCacheSize","scaleArray_","displacement_","setRotateWithView","lineCap_","lineDash_","lineDashOffset_","lineJoin_","miterLimit_","setLineDashOffset","setMiterLimit","defaultGeometryFunction","zIndex_","setRenderer","defaultStyles","font_","textAlign_","textBaseline_","maxAngle_","placement_","overflow_","offsetX_","offsetY_","backgroundFill_","backgroundStroke_","padding_","setMaxAngle","setOffsetX","setOffsetY","setPlacement","setTextAlign","setTextBaseline","setBackgroundFill","setBackgroundStroke","setPadding","opt_tileCoord","getFullTileRange","xyzOptions","gridOptions","resolutionsFromExtent","opt_maxZoom","opt_tileSize","opt_maxResolution","DEFAULT_MAX_ZOOM","opt_corner","getCorner","createForExtent","tmpTileCoord","isSorted","origins_","tileSizes_","tileSize_","fullTileRanges_","tmpSize_","calculateTileRanges_","opt_tileRange","tileCoordExtent","createOrUpdateTileRange","getTileRangeExtent","getTileCoordForXYAndZ_","getTileCoordForXYAndResolution_","reverseIntersectionPolicy","adjustY","xFromOrigin","yFromOrigin","tileCoordX","tileCoordY","createOrUpdateTileCoord","getTileCoordResolution","fullTileRanges","zRegEx","xRegEx","yRegEx","dashYRegEx","tileUrlFunctions","createFromTemplate","tileCoordHash","startCharCode","stopCharCode","stop_1","tmp_","transform1","transform2","e2","f2","determinant","uidCounter_","ol_uid","Pbf","Varint","Fixed64","Fixed32","SHIFT_LEFT_32","SHIFT_RIGHT_32","utf8TextDecoder","extraLen","realloc","writeVarint","writeSVarint","writeBoolean","writeFixed32","writeSFixed32","writeFixed64","writeSFixed64","readField","readMessage","readFixed32","readUInt32","readSFixed32","readInt32","readFixed64","readSFixed64","isSigned","toNum","readVarintRemainder","readUtf8TextDecoder","readUtf8","readBytes","readPackedVarint","readPackedEnd","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","writeInt32","writeBigVarintLow","writeBigVarintHigh","writeBigVarint","lead","writeUtf8","makeRoomForExtraLength","writeBytes","writeRawMessage","writePackedVarint","writePackedSVarint","writePackedBoolean","writePackedFloat","writePackedDouble","writePackedFixed32","writePackedSFixed32","writePackedFixed64","writePackedSFixed64","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","SRS_WGS84_SEMIMAJOR","SRS_WGS84_ESQUARED","SEC_TO_RAD","HALF_PI","EPSLN","D2R","R2D","FORTPI","TWO_PI","SPI","to_meter","ignoredChar","testkey","lkey","defData","paramName","paramVal","paramOutname","paramObj","datum","lat_0","lat0","lat_1","lat_2","lat_ts","lon_0","long0","lon_1","long1","lon_2","long2","rectified_grid_angle","lonc","longc","x_0","y_0","k_0","k0","r_a","R_A","utmSouth","towgs84","datum_params","from_greenwich","PrimeMeridian","nadgrids","datumCode","legalAxis","approx","Li","whitespace","latin","keyword","endThings","digets","currentObject","sExpr","mapit","wkt","lisp","projName","Ee","PROJECTION","AXIS","axisOrder","Ti","UNIT","DATUM","SPHEROID","geogcs","GEOGCS","sphere","ellps","TOWGS84","d2r","toMeter","outName","inName","rename","cleanWKT","Dn","parseProj","EPSG","ESRI","IAU2000","readCharicter","neutral","quoted","afterquote","afterItem","newObjects","WGS84","GOOGLE","globals","codeWords","eccent","sinphi","cosphi","con","phi","dphi","eccnth","projs","es","msfnz","forward","adjust_lon","tsfnz","phi2z","projStore","ellipseName","datumName","loadedNadgrids","mandatory","secondsToRadians","longitudeShift","latitudeShift","isLittleEndian","decodeString","lowerLatitude","getFloat64","upperLatitude","lowerLongitude","upperLongitude","latitudeInterval","longitudeInterval","gridNodeCount","getInt32","gridHeader","nodesOffset","gridShiftRecords","getFloat32","latitudeAccuracy","longitudeAccuracy","srsCode","testObj","testDef","testWKT","checkMercator","maybeProjStr","checkProjStr","projStr","testProj","parseCode","ourProj","datumDef","Datum","sphere_","Ellipsoid","dc_sphere","ecc","ep2","dc_eccentricity","parseNadgridString","getNadgrids","datumObj","datum_type","grids","Sin_Lat","Cos_Lat","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","iter","genau","attemptedGrids","subgrid","subgrids","epsilon","lim","applySubgridShift","pin","tb","nadInterpolate","dif","inx","indx","frct","f00","cvs","f10","f11","f01","m00","denorm","xin","yin","zin","enforceAxis","wgs84","checkCoord","checkSanity","checkNotWGS","adjust_axis","compareDatums","source_a","source_es","applyGridShift","dest_a","dest_b","dest_es","checkParams","geodeticToGeocentric","Rx_BF","Ry_BF","Rz_BF","M_BF","geocentricToWgs84","x_tmp","y_tmp","z_tmp","geocentricFromWgs84","geocentricToGeodetic","datum_transform","transformedArray","oProj","fromProj","toProj","checkProj","transformer","mgrs","UTMtoLL","utm","seasting","easting","snorthing","northing","zoneNumber","zoneLetter","setParm","get100kSetForZone","parm","colOrigin","rowOrigin","colInt","rowInt","rollover","getLetter100kID","get100kID","eccPrimeSquared","LongOriginRad","ZoneNumber","Lat","Long","eccSquared","LatRad","degToRad","LongRad","UTMEasting","UTMNorthing","getLetterDesignator","LLtoUTM","T1","R1","LongOrigin","mu","phi1Rad","radToDeg","LetterDesignator","mgrsString","testChar","hunK","east100k","curCol","eastingValue","rewindMarker","getEastingFromChar","north100k","curRow","northingValue","getNorthingFromChar","getMinNorthing","accuracyBonus","sepEastingString","sepNorthingString","sep","sepEasting","sepNorthing","fromMGRS","mgrsStr","toMGRS","C06","C08","sphi","cphi","pj_mlfn","pj_enfn","ml0","delta_lon","sin_phi","cos_phi","als","tq","pj_inv_mlfn","tan_phi","pp","cos_2B","arg_r","arg_i","hr2","hi2","sin_arg_r","cos_arg_r","sinh_arg_i","sinh","cosh_arg_i","hi1","hr1","tmerc","cgb","cbg","utg","gtu","np","gatg","Zb","clens","sin_Cn","cos_Cn","sin_Ce","cos_Ce","hypot","log1py","asinhy","clens_cmplx","adjust_zone","etmerc","esinp","phic0","ratexp","srat","gauss","sinc0","cosc0","R2","sinc","cosc","cosl","rho","coslat0","sinlat0","cons","ms1","X0","ssfn_","cosX0","sinX0","sinX","cosX","sinlat","coslat","dlon","Chi","phit","eccen","phy0","lambda0","sinPhy0","semiMajorAxis","flattening","k3","Sa1","Sa2","rotI","rotB","lambda","phy","prevPhy","iteration","TOL","com","cosph0","sinph0","gamma0","lamc","lam1","lam2","phi1","phi2","alpha_c","no_off","projectionName","isTypeA","no_rot","alp","gam","one_es","lam0","singam","cosgam","sinrot","cosrot","rB","ArB","BrA","u_0","v_pole_n","v_pole_s","Qp","Sp","Tp","Vp","sin1","cos1","ts1","sin2","cos2","ms2","ts2","ts0","f0","rh1","s45","s90","fi0","alfa","uq","n0","ro0","ad","gfi","deltav","eps","czech","fi1","e3","e0fn","e1fn","e2fn","e3fn","mlfn","lam","nl","gN","asq","imlfn","nl1","rl1","tl1","dsq","adjust_lat","S_POLE","N_POLE","EQUIT","OBLIQ","qp","qsfnz","mmf","apa","APA","authset","rq","xmf","ymf","sinb1","cosb1","coslam","sinlam","sinb","cosb","cCe","sCe","cosz","sinz","beta","authlat","sin_po","cos_po","qs1","qs2","t3","qs0","ns0","phi1z","asinz","eccnts","sin_p14","cos_p14","infinity_dist","coslon","iqsfnz","Jn","dlat","tanphi","mln","mlnp","ma","B_re","B_im","C_re","C_im","d_phi","d_lambda","d_phi_n","d_psi","th_n_im1","th_re","th_im","th_n_re","th_n_im","z_re","z_im","z_n_im1","z_n_re","z_n_im","num_re","num_im","den_re","den_im","den2","d_psi_n","Ca","C_y","C_x","S0","delta_theta","ml1","ml2","Zl","sinth","costh","msq","xx","xys","m1","th1","sin_p12","cos_p12","Mlp","Ml","Nl1","Nl","psi","Az","GH","Hs","kp","cos_c","s3","s4","cosAz","sinpsi","P0","slon","face","one_minus_f","one_minus_f_squared","xy","sinlon","qsc_shift_lon_origin","qsc_fwd_equat_face_theta","nu","cosmu","tannu","tantheta","invert_sign","Ur","COEFS_X","COEFS_Y","poly3_val","coefs","NODES","f_df","max_err","iters","upd","newton_rapshon","poly3_der","azi","tilt","pn1","pfact","omega","sg","cw","sw","ba","bm","bq","proj4","Proj","nFields","detectLittleEndian","nSubgridFields","nSubgrids","shiftType","fromSemiMajorAxis","fromSemiMinorAxis","toSemiMajorAxis","toSemiMinorAxis","readHeader","subHeader","readGridHeader","readGridNodes","lngColumnCount","latColumnCount","mapNodes","readSubgrids","nadgrid","sterea","stere","somerc","omerc","lcc","krovak","cass","laea","aea","gnom","cea","eqc","nzmg","mill","sinu","moll","eqdc","vandg","aeqd","ortho","qsc","robin","geocent","tpers","includedProjections","quickselectStep","defaultCompare","maxEntries","_maxEntries","_minEntries","equalsFn","toBBox","distBBox","destNode","createNode","quickselect","_all","nodesToSearch","childBBox","_build","_splitRoot","tmpNode","goingUp","findItem","_condense","compareMinX","compareMinY","calcBBox","multiSelect","right2","right3","_chooseSubtree","minEnlargement","bboxArea","enlargement","enlargedArea","insertPath","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","minOverlap","bbox1","bbox2","overlap","intersectionArea","compareNodeMinX","compareNodeMinY","_allDistMargin","leftBBox","rightBBox","bboxMargin","performanceTimestampProvider","timestampProvider","animationFramesFactory","DEFAULT_ANIMATION_FRAMES","animationFrameProvider","subscriber","_hasValue","_isComplete","_checkFinalizedStatuses","hasError","thrownError","isStopped","nextHandle","activeHandles","Immediate","setImmediate","findAndClearHandle","clearImmediate","immediateProvider","asapScheduler","AsyncScheduler","_scheduled","AsyncAction","scheduler","requestAsyncId","recycleAsyncId","asap","queueScheduler","_execute","VirtualTimeScheduler","schedulerActionCtor","VirtualAction","maxFrames","frame","frameTimeFactor","sortActions","errorOrErrorFactory","errorFactory","NotificationKind","NEXT","COMPLETE","observeNotification","do","nextHandler","completeHandler","nextOrObserver","toObservable","throwError","Notification","completeNotification","hasConfig","Oo","EmptyError","ArgumentOutOfRangeError","createErrorClass","NotFoundError","SequenceError","schedulerArg","with","_with","timeoutErrorFactory","asyncScheduler","isValidDate","operate","originalSourceSubscription","timerSubscription","lastValue","startTimer","executeSchedule","innerFrom","OperatorSubscriber","isNodeStyle","callbackFunc","resultSelector","isScheduler","bindCallbackInternals","mapOneOrManyArgs","subscribeOn","observeOn","AsyncSubject","uninitialized","isComplete","DEFAULT_CONFIG","connector","resetOnDisconnect","addHandler","removeHandler","fromEventPattern","retValue","initialStateOrOptions","iterate","resultSelectorOrScheduler","initialState","scheduleIterable","gen","trueResult","falseResult","NEVER","nextSources","argsOrArgArray","subscribeNext","nextSource","innerSub","onErrorResumeNextWith","raceInit","resourceFactory","observableFactory","closingNotifier","currentBuffer","bufferTimeSpan","popScheduler","bufferCreationInterval","maxBufferSize","bufferRecords","restartOnEmit","arrRemove","startBuffer","bufferTimeSubscriber","recordsCopy","openings","closingSelector","buffers","openValue","closingSubscription","closingSubscriber","openBuffer","seed","scanInternals","arrReducer","joinFn","project","joinAllInternals","combineAll","combineLatestAll","popResultSelector","combineLatestInit","otherSources","innerObservable","concatAll","subscribable","fromSubscribable","durationSelector","durationSubscriber","hasDefaultValue","defaultIfEmpty","throwIfEmpty","exhaust","exhaustAll","exhaustMap","outerValue","keySelector","elementOrOptions","consumer","groupBySourceSubscriber","GroupBySubscriber","groupSubject","groupSubscriber","activeGroups","teardownAttempted","createGroupedObservable","mergeInternals","popNumber","mergeAll","subjectOrSubjectFactory","subjectFactory","ConnectableObservable","multicast","windowTime","selectorOrScheduler","soFar","subscribeForRepeat","syncUnsub","notifier","completions$","syncResub","isNotifierComplete","isMainComplete","checkComplete","subscribeForRepeatWhen","configOrCount","resetOnSuccess","subscribeForRetry","resub","notifierSubscriber","errors$","subscribeForRetryWhen","aState","bState","createSubscriber","selfState","otherState","sequenceEqualSubscriber","configOrBufferSize","refCount","resetOnError","resetOnComplete","resetOnRefCountZero","singleValue","seenValue","taking","skipSubscriber","innerValue","TimeInterval","due","withObservable","dateTimestampProvider","windowBoundaries","windowSubject","windowSize","startWindowEvery","startEvery","starts","windowTimeSpan","windowCreationInterval","maxWindowSize","windowRecords","restartOnClose","closeWindow","startWindow","terminate","windowsCopy","openWindow","otherInputs","zipStatic","_subscribe","_throwIfClosed","observerOrNext","Subscriber","isObserver","isSubscription","isSubscriber","SafeSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","toPromise","_windowTime","_timestampProvider","_infiniteTimeWindow","_trimBuffer","_innerSubscribe","adjustedBufferSize","Scheduler","AnonymousSubject","ObjectUnsubscribedError","observed","EMPTY_SUBSCRIPTION","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","errorNotification","_error","_complete","wrapForErrorHandling","captureError","reportUnhandledError","onStoppedNotification","timeoutProvider","initialTeardown","_parentage","_teardowns","UnsubscriptionError","teardown","execTeardown","_hasParent","_addParent","_removeParent","onUnhandledError","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","_refCount","hasLift","getSubject","_teardown","higherOrderRefCount","argsArgArrayOrObject","createObject","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","emptyScheduled","remainingCompletions","remainingEmissions","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","isEventTarget","addListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","isInteropObservable","fromInteropObservable","isPromise","fromPromise","isAsyncIterable","fromAsyncIterable","isIterable","fromIterable","isReadableStreamLike","readableStream","readableStreamLikeToAsyncGenerator","fromReadableStreamLike","createInvalidObservableTypeError","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_1","__asyncValues","e_1_1","return","dueTime","intervalOrScheduler","intervalDuration","completed","onFinalize","endDuration","cleanupDuration","audit","startBufferEvery","toEmit","handledResult","activeTask","lastTime","targetTime","emitWhenIdle","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","mapTo","flushes","distinctKeys","previousKey","currentKey","takeLast","onBeforeNext","innerSubScheduler","additionalTeardown","outerNext","doInnerSub","innerComplete","bufferedValue","hasPrev","currentProp","refCounter","sharedConnection","hasSeed","emitOnNext","emitBeforeComplete","hasState","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","handleReset","innerSubscriber","innerIndex","outerIndex","tapObserver","isUnsub","defaultThrottleConfig","sendValue","endThrottling","cleanupThrottling","startThrottle","duration$","defaultErrorFactory","Symbol_iterator","asyncIterator","scheduleObservable","scheduleArray","schedulePromise","scheduleAsyncIterable","scheduleReadableStreamLike","intervalProvider","_scheduler","errored","SchedulerAction","getSymbolIterator","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","scheduleSubscription","__asyncGenerator","getReader","__await","releaseLock","liftedSource","callOrApply","IsFunction","getIdx","GetSortValue","Equal","Flat","MergeArray","OperateArray","Without","_find","FindLast","Reverse","IsObject","ParseString","tmp1","tmp2","tmp3","GetHoursForMonth","lut","GUID_SEPARATOR_POSITIONS","GUID_VALID_CHARS","Uuidv4","d3","ValidateGuid","ContainsCount","IsAbove","CharAt","Random","RecursiveDeepCopy","newO","Merge","slave","Get","EscapeRegExp","Unescape","Words","TrimChar","charToRemove","CreateWithFactory","factoryMethod","Using","Dispose","Dictionary","_stream","Unsubscribe","IsNullOrEmpty","_unsubscribeByKey","GetValue","Retry","executions","maxExecutions","onMaxExecutions","onFinish","Sleep","SafeBehaviorSubject","_innerNext","_behaviorSubjects","_core","_everyChange","OnMutate","_onMutate","_parseSelectorAccess","ContainsKey","realKey","_toRealKey","behaviors","_selectBehaviors","draft","behaviorKey","behaviorKeys","_parseFunctionSyntax","_parseLambdaSyntax","_rootify","_removeCoverageStuff","Concat","firstIdx","Substring","Subtract","Byte","ByteStream","FeatureCollection","Line","MultiLine","ReferenceSystem","WEB_MERCATOR","registerProjection","LZCompression","StopWatch","VALIDATIONS","ClassValidator","IsDefined","IsEmail","Blacklist","IsNotEmpty","IsEmpty","MaxLength","MinLength","ValidateIf","Whitelist","NotEquals","ArrayNotEmpty","IsAlpha","IsAlphanumeric","IsAscii","IsBase64","IsBooleanString","IsByteLength","IsHash","IsHexadecimal","IsHexColor","IsInt","IsIp","IsJSON","IsJWT","IsMacAddress","IsMongoId","IsNegative","IsNumberString","IsOptional","IsPort","IsPositive","IsUrl","IsUUID","Required","UniqueArray","CustomValidation","ValidateClass","TestDataGenerator","ASC","DESC","filterMethod","reducer","InsertRange","RemoveRange","missingOrders","FindLastIndex","GroupKey","convertMethod","IsBelow","UnionBy","Pull","Chunk","ForSegment","Tail","ResetCursor","SetCursor","Write","_writeByte","WriteByte","Read","_readByte","ReadByte","FromByteString","FromNumberArray","Clamp","Begin","IsIn","TimeBetween","FromMilliseconds","luxon","_date","Month","cloneLuxonDate","UTCOffsetMinutes","DayOfWeek","DayOfYear","DaysInYear","DaysInMonth","YearQuarter","YearWeekNumber","TimeOfDay","keepTimeZone","isTimeSet","checkLuxonTimeZone","AddYears","AddMonths","AddDays","AddHours","AddMinutes","AddSeconds","AddMilliseconds","IsDaylightSavingTime","isInDST","ToISO","inMs","NewInteger","ToJavascriptDate","ToJSON","MonthHours","FromLuxon","luxonDate","FromJavascriptDate","FromISOString","isoStr","IsJavascriptDate","LocalZoneName","MillisecondsPerDay","_seconds","SecondsPerDay","_minutes","MinutesPerDay","_hours","HoursPerDay","MinutesPerHour","SecondsPerHour","MillisecondsPerHour","SecondsPerMinute","MillisecondsPerMinute","MillisecondsPerSecond","Negate","PadLeft","FromMoment","ignoreDate","FromJavaScriptDate","FromSeconds","FromMinutes","FromHours","FromDays","Values","ContainsValue","GetObject","TryGetValue","srid","epsgcode","GetSrId","FromString","FromJSON","Empty","Validate","IsInRange","Multiply","Divide","Ceil","Numerals","DecimalPlaces","Decrement","NewDouble","RandomInteger","RandomDouble","sizeof","IsCircular","GetCircular","alreadyChecked","keyReferences","SizeOf","EqualKeys","notCheckPosition","Difference","list1","list2","keyL2","Freeze","paramCase","constantCase","pathCase","sentenceCase","Capitalize","others","ToUpper","ToCamelCase","ToConstantCase","ToDotCase","ToNoCase","ToPathCase","ToSentenceCase","HTMLEscape","HTMLUnescape","RegExpEscape","ToKebabCase","ToSnakeCase","ToCapitalCase","ToPascalCase","LowerFirst","UpperFirst","appender","Pad","PadRight","Repeat","TrimEnd","Truncate","cutter","allowOverlapping","charsCanBeRemoved","ToDouble","LastIndexOf","TextBetween","RandomAlphaString","Compress","Decompress","keySize","valueSize","NS_PER_SEC","_time","_getTimestamp","_multipleTimes","_measures","_isPause","_multipleMeasures","_multipleIsPause","SectionStart","IsSectionPause","IsPause","SectionElapsedMs","_getMultipleTimeDiff","SectionPause","SectionResume","Pause","_getTimeDiff","Resume","ElapsedMs","_isBrowser","hrtime","BASE_VALIDATIONS","isValidUrl","scenario","ValidationStore","validationRules","checkForRequired","validationScenarios","validationKey","executeValidation","subErrors","ValidateObject","targetKey","scenarios","registerInStore","ActiveUsersActions","ACTIVE_USERS_LOAD","ACTIVE_USERS_LOAD_SUCCESS","ACTIVE_USERS_KICK","ACTIVE_USERS_GLOBAL_LOGOUT","JOBS_LOAD_SUCCESS","JOBS_CHANGE","ApKrigingActions","SOIL_SAMPLE_FIELD_INTERPOLATE","SOIL_SAMPLE_FIELD_INTERPOLATE_SUCCESS","SOIL_SAMPLE_FIELD_STATE_LOAD","RASTER_CREATE_ALL","RASTER_CREATE_ALL_SUCCESS","NApplicationMapsActions","APPLICATION_SETTINGS_LOAD","APPLICATION_SETTINGS_LOAD_SUCCESS","APPLICATION_SETTINGS_LOAD_FAIL","MonitoringRulesActions","MONITORING_RULES_CALCULATE_RECOMMENDATION","MONITORING_RULES_CALCULATE_RECOMMENDATION_RESULT","CROP_GROUPS_LOAD","CROP_GROUPS_LOAD_SUCCESS","CROP_GROUPS_SAVE","CROP_GROUPS_DELETE","CroptypeActions","CROPTYPES_LOAD","CROPTYPES_LOAD_SUCCESS","CROPTYPES_SAVE","FERTILIZER_USE_LOAD","FertilizerInorganicActions","FERTILIZER_INORGANIC_LOAD","FERTILIZER_INORGANIC_LOAD_SUCCESS","FERTILIZER_INORGANIC_SELECTABLE_UPDATE","FERTILIZER_INORGANIC_CREATE","FERTILIZER_INORGANIC_UPDATE","FertilizerOrganicActions","FERTILIZER_ORGANIC_LOAD","FERTILIZER_ORGANIC_LOAD_SUCCESS","FERTILIZER_ORGANIC_SELECTABLE_UPDATE","FERTILIZER_ORGANIC_CREATE","FERTILIZER_ORGANIC_UPDATE","LanduseActions","LANDUSE_LOAD","LANDUSE_LOAD_SUCCESS","PlantProtectionProductsActions","PLANT_PROTECTION_PRODUCTS_LOAD","PLANT_PROTECTION_PRODUCTS_LOAD_SUCCESS","PLANT_PROTECTION_PRODUCTS_LOAD_FAIL","PLANT_PROTECTION_PRODUCTS_SELECTABLE_UPDATE","PLANT_PROTECTION_PRODUCTS_SELECTABLE_UPDATE_SUCCESS","PLANT_PROTECTION_PRODUCTS_SELECTABLE_UPDATE_FAIL","PLANT_PROTECTION_PRODUCTS_CREATE_NEW","PLANT_PROTECTION_PRODUCTS_CREATE_NEW_SUCCESS","PLANT_PROTECTION_PRODUCTS_CREATE_NEW_FAIL","SETTINGS_LOAD","SETTINGS_LOAD_SUCCESS","SETTINGS_UPDATE","TIME_ZONE_LOAD","TIME_ZONE_LOAD_SUCCESS","SubfarmActions","SUB_FARM_LOAD","SUB_FARM_LOAD_SUCCESS","SUB_FARM_UPDATE","SUB_FARM_CREATE","SUB_FARM_DELETE","UsersActions","USERS_LOAD","USERS_LOAD_SUCCESS","USER_CREATE","USER_CREATE_SUCCESS","USER_UPDATE_FULLNAME","USER_UPDATE_FULLNAME_SUCCESS","USER_UPDATE_FULLNAME_FAIL","USER_UNIQUE_EMAIL","USER_UNIQUE_EMAIL_RESULT","USER_UNIQUE_USERNAME","USER_UNIQUE_USERNAME_RESULT","USER_RESET_REDIRECT_TO_NEWS","USER_RESET_REDIRECT_TO_NEWS_SUCCESS","VarietyActions","VARIETY_LOAD","VARIETY_LOAD_SUCCESS","VARIETY_SELECTABLE_UPDATE","WorktypeActions","WORKTYPE_LOAD","WORKTYPE_LOAD_SUCCESS","WorktypeUnitActions","WORKTYPE_UNIT_LOAD","WORKTYPE_UNIT_LOAD_SUCCESS","AgriportConstantsActions","ApplModesActions","APPL_MODES_LOAD","APPL_MODES_LOAD_SUCCESS","ContactInformationActions","CONTACT_INFORMATION_LOAD","CONTACT_INFORMATION_LOAD_SUCCESS","ElementsActions","ELEMENTS_LOAD","ELEMENTS_LOAD_SUCCESS","ExportFormatsActions","EXPORT_FORMATS_LOAD","EXPORT_FORMATS_LOAD_SUCCESS","ExportTargetsActions","EXPORT_TARGETS_LOAD","EXPORT_TARGETS_LOAD_SUCCESS","FactorsActions","FACTORS_LOAD","FACTORS_LOAD_SUCCESS","FACTORS_MISSING","Xt","NOTIFICATION_LOAD","NOTIFICATION_LOAD_SUCCESS","NOTIFICATION_ADD","NOTIFICATION_DELETE","NOTIFICATION_UPDATE","NOTIFICATION_INSERT","OperationModesActions","OPERATION_MODES_LOAD","OPERATION_MODES_LOAD_SUCCESS","UnitsActions","ia","UNITS_LOAD","UNITS_LOAD_SUCCESS","VersionInfoActions","ta","VERSION_INFO_LOAD","VERSION_INFO_LOAD_SUCCESS","CountryAction","COUNTRY_LOAD","COUNTRY_LOAD_SUCCESS","NUptakeFactorsActions","NUPTAKE_FACTORS_LOAD","NUPTAKE_FACTORS_LOAD_SUCCESS","NUPTAKE_FACTORS_FACTORS_MISSING","EffectiveRangesAction","EFFECTIVE_RANGES_LOAD","EFFECTIVE_RANGES_LOAD_SUCCESS","NewsActions","NEWS_LOAD","NEWS_LOAD_SUCCESS","NEWS_ADD","DatabaseNotifyActions","ON_NOTIFY","NotifyActions","RECIEVE_MESSAGE","SAVE_MESSAGE","ActionActions","ACTIONS_APPLICATION_DROP","ACTIONS_APPLICATION_ADD","FIELD_ACTIONS_LOAD","FIELD_ACTIONS_LOAD_SUCCESS","FLEET_ACTIONS_LOAD","FLEET_ACTIONS_LOAD_SUCCESS","FLEET_ACTIONS_LOAD_BY_FIELD_SUCCESS","LOCATIONS_LOAD","LOCATIONS_LOAD_SUCCESS","DriversActions","DRIVERS_LOAD","DRIVERS_LOAD_SUCCESS","DRIVERS_UPDATE","DRIVERS_CREATE","DRIVERS_DELETE","DRIVERS_SAVE_SUCCESS","DRIVERS_SAVE_FAIL","DriverMachineActions","DRIVER_MACHINE_LOAD","DRIVER_MACHINE_LOAD_SUCCESS","DRIVER_MACHINE_UPDATE","DRIVER_MACHINE_CREATE","DRIVER_MACHINE_DELETE","FleetActionAttachmentActions","ir","ATTACHMENT_DRIVER_ASSIGNMENT_GET","ATTACHMENT_DRIVER_ASSIGNMENT_GET_SUCCESS","ATTACHMENT_INSTRUMENT_ASSIGNMENT_GET","ATTACHMENT_INSTRUMENT_ASSIGNMENT_GET_SUCCESS","FIELD_ACTIONS_ATTACHMENT_LOAD","FIELD_ACTIONS_ATTACHMENT_LOAD_SUCCESS","FLEET_ACTIONS_ATTACHMENT_LOAD_BY_MODIFIED","FLEET_ACTIONS_ATTACHMENT_LOAD_BY_MODIFIED_SUCCESS","FLEET_ACTION_ATTACHMENT_SAVE","FLEET_ACTION_ATTACHMENT_SAVE_SUCCESS","FLEET_ACTION_ATTACHMENT_CREATE","GeoJsonActions","GEOJSON_GENERATE_BY_SLICE","GEOJSON_GENERATE_BY_MACHINE","GEOJSON_GENERATE_BY_FIELD","GEOJSON_GENERATE_SUCCESS","GEOJSON_GENERATE_MULTIPOINT","InstrumentsActions","INSTRUMENTS_LOAD","INSTRUMENTS_LOAD_SUCCESS","INSTRUMENTS_UPDATE","INSTRUMENTS_CREATE","INSTRUMENTS_DELETE","INSTRUMENTS_SAVE_SUCCESS","INSTRUMENTS_SAVE_FAIL","LoggerActions","LOGGER_LOAD","LOGGER_LOAD_SUCCESS","LOGGER_UPDATE","LOGGER_CREATE","LOGGER_DELETE","LOGGER_SAVE_SUCCESS","LOGGER_SAVE_FAIL","MachinesActions","go","MACHINES_LOAD","MACHINES_LOAD_SUCCESS","MACHINES_UPDATE","MACHINES_CREATE","MACHINES_DELETE","MACHINES_SAVE_SUCCESS","MACHINES_SAVE_FAIL","MACHINES_GET_IN_USE_DAYS","MACHINES_GET_IN_USE_DAYS_SUCCESS","MACHINE_TYPES_LOAD","MACHINE_TYPES_LOAD_SUCCESS","MachineBreaksActions","Wn","MACHINE_BREAKS_LOAD","MACHINE_BREAKS_LOAD_SUCCESS","MachinesloggerActions","no","MACHINESLOGGER_LOAD","MACHINESLOGGER_LOAD_SUCCESS","MACHINESLOGGER_UPDATE","MACHINESLOGGER_CREATE","MACHINESLOGGER_DELETE","SliceActions","Ss","SLICE_LOAD","SLICE_LOAD_ALL","SLICE_COMBINED_LOAD_BY_MACHINE_AND_DATE","SLICE_COMBINED_LOAD_BY_MACHINE_AND_DATE_SUCCESS","SLICE_LOAD_SUCCESS","SLICE_CALC_BRUTTO_NETTO_AREA","FieldDiaryActions","FIELD_DIARY_DOWNLOAD","FIELD_DIARY_DOWNLOAD_SUCCESS","PerformanceReportActions","PERFORMANCE_BOOK_WRITE","PERFORMANCE_BOOK_DOWNLOAD","PERFORMANCE_BOOK_DOWNLOAD_SUCCESS","SOIL_SAMPLE_FIELD_LOAD","SOIL_SAMPLE_FIELD_LOAD_SUCCESS","SOIL_SAMPLE_FIELD_DISTRIBUTIONS_LOAD","SOIL_SAMPLE_FIELD_DISTRIBUTIONS_LOAD_SUCCESS","SOIL_SAMPLE_LOAD","SOIL_SAMPLE_LOAD_SUCCESS","Pt","SUCCESS","LOAD_PAST_SUCCESS","PROCESS_CELL","PROCESS_CELL_SUCCESS","PROCESS_CELL_FAIL","FarmUsersActions","Ys","FARM_USERS_LOAD","FARM_USERS_LOAD_SUCCESS","FARM_USERS_UPDATE","FARM_USERS_UPDATE_SUCCESS","FARM_USERS_DELETE","FARM_USERS_DELETE_SUCCESS","FIELD_LOAD","FIELD_LOAD_SUCCESS","FIELD_LOAD_FROM_DATERANGE","FIELD_LOAD_FROM_DATERANGE_SUCCESS","FIELD_SAVE","FIELD_CROP_DELETE","FIELD_CROPS_SAVE","FIELD_CROPS_SAVE_SUCCESS","FIELD_CROPS_SAVE_FAILED","FIELD_UPDATE","FIELD_GEOM_DELETE","FIELD_DELETE","FIELD_MERGE","FIELD_MERGE_FAILED","FIELD_SPLIT","FIELD_SPLIT_SUCCESS","FIELD_SPLIT_FAILED","FIELD_PLAN_BOOKS","FIELD_PLAN_BOOKS_SUCCESS","FIELD_CREATE","FIELD_INTEGRATE","FIELD_INTEGRATE_SUCCESS","FIELD_SAVE_FAIL","FIELD_SAVE_SUCCESS","FIELD_CROP_YEAR_LOAD","FIELD_CROP_YEAR_LOAD_SUCCESS","FarmActions","FARM_LOAD","FARM_LOAD_SUCCESS","FARM_LOAD_FAIL","FARM_UPDATE_REGISTRY_NUMBER","FARM_UPDATE_REGISTRY_NUMBER_SUCCESS","FARM_UPDATE_REGISTRY_NUMBER_FAIL","INFORM_FARM_CHANGE","INFORM_FARM_CHANGE_SUCCESS","FARM_UPDATE_COUNTRY","FARM_UPDATE_COUNTRY_SUCCESS","FARM_UPDATE_COUNTRY_FAIL","LicenseActions","Wc","LICENSE_FARM_LOAD","LICENSE_FARM_LOAD_SUCCESS","LICENSE_FARM_LOAD_ERROR","LICENSE_UPDATE","LICENSE_SAVE_SUCCESS","LICENSE_SAVE_FAILED","LICENSE_ADJUST_REQUEST","MonitoringDetailActions","MONITORING_DETAIL_LOAD","MONITORING_DETAIL_LOAD_SUCCESS","MONITORING_DETAIL_LOAD_FAIL","MONITORING_DETAIL_CREATE","MONITORING_DETAIL_EDIT","MONITORING_DETAIL_DELETE","MONITORING_DETAIL_ATTACHMENT_UPLOAD","MONITORING_DETAIL_ATTACHMENT_UPLOAD_SUCCESS","MONITORING_DETAIL_ATTACHMENT_UPLOAD_FAIL","MONITORING_DETAIL_ATTACHMENT_DOWNLOAD","MONITORING_DETAIL_ATTACHMENT_DOWNLOAD_SUCCESS","MONITORING_DETAIL_ATTACHMENT_DOWNLOAD_FAIL","MonitoringFieldActions","MONITORING_FIELD_LOAD","MONITORING_FIELD_LOAD_SUCCESS","MONITORING_FIELD_LOAD_FAIL","MONITORING_FIELD_CREATE","MONITORING_FIELD_DELETE","MonitoringTypeActions","MONITORING_TYPE_LOAD","MONITORING_TYPE_LOAD_SUCCESS","MONITORING_TYPE_LOAD_FAIL","O0","IMPORT_DATASET_TYPES_LOAD","IMPORT_DATASET_TYPES_LOAD_SUCCESS","IMPORT_DATASET_COLUMNS_LOAD","IMPORT_DATASET_COLUMNS_LOAD_SUCCESS","IMPORT_DATASET_LOAD","IMPORT_DATASET_LOAD_SUCCESS","IMPORT_DATASET_DELETE","IMPORT_DATASET_UPDATE","IMPORT_CSV_TYPES_LOAD","IMPORT_CSV_TYPES_LOAD_SUCCESS","UploadActions","E1","UPLOAD_SEND","UPLOAD_VERIFY","SidebarActions","SIDEBAR_ADD_DATASOURCE","SIDEBAR_ADD_DATASOURCE_SUCCESS","CampaignYearActions","Mc","CAMPAIGN_YEAR_LOAD","CAMPAIGN_YEAR_LOAD_SUCCESS","CAMPAIGN_YEAR_SELECT","INFORM_CAMPAIGN_YEAR_CHANGE","Oa","INVITATIONS_DELETE","INVITATIONS_LOAD","INVITATIONS_LOAD_SUCCESS","INVITATIONS_CREATE","INVITATIONS_CONFIRMED","INVITATIONS_CONFIRMED_WITH_USER","INVITATIONS_CONFIRMED_SUCCESS","INVITATIONS_CONFIRMED_CREATE_NEW_USER","INVITATIONS_UPDATE","B0","USER_LOGIN","USER_LOGIN_SUCCESS","USER_LOGIN_FAIL","USER_LOGOUT","USER_LEAVE_PAGE","USER_LOGIN_DELAY","USER_LOGOUT_FROM_SYSTEM","MAP_FACTORY_AUTHENTICATION_LOAD","MAP_FACTORY_AUTHENTICATION_SUCCESS","PasswordActions","w0","SET_NEW_PASSWORD","SET_NEW_PASSWORD_SUCCESS","SET_NEW_PASSWORD_FAIL","REQUEST_NEW_PASSWORD","REQUEST_NEW_PASSWORD_SUCCESS","REQUEST_NEW_PASSWORD_FAIL","Il","jc","LOAD_FUNGI_DETECT_BY_DATASET","GEOMETRY_EDITOR_INFORM_STATE_CHANGE","GEOMETRY_EDITOR_SEND_UPDATE","GEOMETRY_EDITOR_UPDATE","NFertilizationActions","N_FERTILIZATION_LOAD_SUCCESS","N_FERTILIZATION_DETAILS_LOAD_SUCCESS","N_FERTILIZATION_NEED_VALUE_GET","N_FERTILIZATION_NEED_VALUE_GET_SUCCESS","N_FERTILIZATION_NEED_VALUE_SET","N_FERTILIZATION_BOOKINGS_LOAD","N_FERTILIZATION_BOOKINGS_LOAD_SUCCESS","N_FERTILIZATION_BOOKINGS_SAVE","N_FERTILIZATION_BOOKINGS_UPDATE","N_FERTILIZATION_BOOKINGS_UPDATE_SUCCESS","N_FERTILIZATION_SUMMARY_DELETE","N_FERTILIZATION_PLANBOOKS_DELETE","N_FERTILIZATION_LOGFILES_LOAD","N_FERTILIZATION_LOGFILES_LOAD_SUCCESS","N_FERTILIZATION_LOGFILES_SAVE","N_FERTILIZATION_LOGFILES_UPDATE","N_FERTILIZATION_LOGFILES_UPDATE_SUCCESS","N_FERTILIZATION_LOGFILES_REMAP","N_FERTILIZATION_LOGFILES_REMAP_COMPLETE","N_FERTILIZATION_BOOK_PLAN_BOOK","N_FERTILIZATION_UN_BOOK_PLAN_BOOK","N_FERTILIZATION_CROP_EC_SN_LOAD","N_FERTILIZATION_CROP_EC_SN_LOAD_SUCCESS","N_FERTILIZATION_CROP_EC_N_LOAD","N_FERTILIZATION_CROP_EC_N_LOAD_SUCCESS","N_PLANNING_RASTER_CREATE_JOB","N_PLANNING_RASTER_STATISTIC_REFRESH","N_PLANNING_RASTER_STATISTIC_FAIL","N_FERTILIZATION_N_RESTRICTIONS_REPORT_DOWNLOAD","N_FERTILIZATION_N_RESTRICTIONS_REPORT_DOWNLOAD_SUCCESS","N_FERTILIZATION_N_RESTRICTIONS_REPORT_DOWNLOAD_FAIL","NdiActions","LOAD_STATISTICS","LOAD_STATISTICS_SUCCESS","M1","FIELD_NUTRIENT_DISTRIBUTIONS_LOAD","FIELD_NUTRIENT_DISTRIBUTIONS_LOAD_SUCCESS","FIELD_NUTRIENT_SAMPLE_METHOD_LOAD","FIELD_NUTRIENT_SAMPLE_METHOD_LOAD_SUCCESS","FIELD_NUTRIENT_SAMPLE_REGION_LOAD","FIELD_NUTRIENT_SAMPLE_REGION_LOAD_SUCCESS","FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT","FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT_SUCCESS","FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT_FAIL","J0","NUTRIENT_PLANNING_PACKAGE_SUCCESS","NUTRIENT_PLANNING_START","NUTRIENT_PLANNING_FAIL","NUTRIENT_PLANNING_SUCCESS","NUTRIENT_PLANNING_RASTER_STATISTIC_LOAD_SUCCESS","NUTRIENT_PLANNING_RASTER_STATISTIC_REFRESH","NUTRIENT_PLANNING_RASTER_STATISTIC_FAIL","SoilSampleDateAction","SOIL_SAMPLE_DATES_GET","SOIL_SAMPLE_DATES_GET_SUCCESS","SoilSamplePlanningReportActions","Ip","SOIL_SAMPLE_PLANNING_REPORT_DOWNLOAD","SOIL_SAMPLE_PLANNING_REPORT_DOWNLOAD_SUCCESS","Fc","LOAD_SOIL_SAMPLE_PLANNING","LOAD_SOIL_SAMPLE_PLANNING_SUCCESS","SAVE_SOIL_SAMPLE_PLANNING","EXPORT_SHAPE_SOIL_SAMPLE_PLANNING","EXPORT_SHAPE_SOILSAMPLE_PLANNING_SUCCESS","ParameterDefinitionActions","zd","PARAMETER_DEFINITION_LOAD","PARAMETER_DEFINITION_LOAD_SUCCESS","PARAMETER_DEFINITION_CREATE","PARAMETER_DEFINITION_UPDATE","PARAMETER_DEFINITION_ADD","ParameterValuesActions","PARAMETER_VALUE_LOAD","PARAMETER_VALUE_LOAD_SUCCESS","PARAMETER_VALUE_CREATE","PARAMETER_VALUE_DELETE","PARAMETER_VALUE_UPDATE","PARAMETER_VALUES_SAVE_OR_UPDATE","PARAMETER_VALUES_SAVE_REQUEST","ParameterValuesHistoryActions","ou","PARAMETER_VALUE_HISTORY_LOAD","PARAMETER_VALUE_HISTORY_LOAD_SUCCESS","ApAccessPermissionsActions","O1","LOAD_ACCESS_PERMISSIONS","LOAD_ACCESS_PERMISSIONS_SUCCESS","INSERT_PERMISSIONS","DELETE_PERMISSIONS","ApUsergroupsActions","xd","LOAD_USERGROUPS","LOAD_USERGROUPS_SUCCESS","ApUsergroupsUserActions","Xc","LOAD_USERGROUPS_USER","LOAD_USERGROUPS_USER_SUCCESS","UPDATE_USERGROUPS_USER","ApUserSettingsActions","Ic","LOAD_USER_SETTINGS","LOAD_USER_SETTINGS_SUCCESS","wd","TASK_MANAGEMENT_PLAN_SUMMARIES_LOAD","TASK_MANAGEMENT_PLAN_SUMMARIES_LOAD_SUCCESS","TASK_MANAGEMENT_PLAN_EXPORT","TASK_MANAGEMENT_PLAN_PLAN_EXPORT_SUCCESS","TASK_MANAGEMENT_PLAN_PLAN_EXPORT_FAIL","LOAD_BASIC_FERTILISATION_SUMMARIES","LOAD_BASIC_FERTILISATION_SUMMARIES_SUCCESS","BASIC_FERTILISATION_SUMMARIES_CREATE","BASIC_FERTILISATION_SUMMARIES_UPDATE","BASIC_FERTILISATION_PLAN_BOOKS_UPDATE","BASIC_FERTILISATION_PLAN_BOOKS_SAVE_SUCCESS","BASIC_FERTILISATION_PLAN_BOOKS_SAVE_FAIL","BASIC_FERTILISATION_PLAN_BOOKS_DELETE","ApTraceLogActionsActions","Nc","LOAD_TRACE_LOAD_ACTIONS","LOAD_TRACE_LOAD_ACTIONS_SUCCESS","ApTraceLogClientActions","LOAD_TRACE_LOAD_CLIENT","LOAD_TRACE_LOAD_CLIENT_SUCCESS","LANGUAGE_LOAD","LANGUAGE_LOAD_SUCCESS","TranslationActions","W0","TRANSLATION_UPDATE","TRANSLATION_CREATE","TRANSLATION_SAVE_SUCCESS","PlantProtectionPlanBooksActions","PLANT_PROTECTION_PLANBOOKS_LOAD","PLANT_PROTECTION_PLANBOOKS_LOAD_SUCCESS","PLANT_PROTECTION_PLANBOOKS_LOAD_FAIL","PLANT_PROTECTION_PLANBOOKS_SAVE","PLANT_PROTECTION_LOGFILE_LOAD","PLANT_PROTECTION_LOGFILE_LOAD_SUCCESS","PLANT_PROTECTION_LOGFILES_UPDATE","PLANT_PROTECTION_LOGFILES_REMAP","PLANT_PROTECTION_LOGFILES_BOOK","PLANT_PROTECTION_LOGFILES_UNBOOK","PLANT_PROTECTION_SUMMARIES_DELETE","LabResultAttachmentActions","LAB_RESULT_ATTACHMENT_LOAD","LAB_RESULT_ATTACHMENT_LOAD_SUCCESS","LAB_RESULT_ATTACHMENT_LOAD_FAIL","LAB_RESULT_ATTACHMENT_DELETE","LAB_RESULT_ATTACHMENT_UPLOAD","LAB_RESULT_ATTACHMENT_UPLOAD_SUCCESS","LAB_RESULT_ATTACHMENT_UPLOAD_FAIL","LAB_RESULT_ATTACHMENT_DOWNLOAD","LAB_RESULT_ATTACHMENT_DOWNLOAD_SUCCESS","LAB_RESULT_ATTACHMENT_DOWNLOAD_FAIL","stateChangeExpr","_onStart","triggerMicrotask","scheduleMicroTask","_players","doneCount","destroyCount","startCount","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","newPlayerIsLongest","_document","_textarea","successful","currentFocus","execCommand","Clipboard","pendingCopy","beginCopy","PendingCopy","_DOM","PlatformLocation","historyGo","relativePosition","BrowserPlatformLocation","useBrowserPlatformLocation","LOCATION_INITIALIZED","_init","_history","getBaseHrefFromDOM","getDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","newPath","supportsState","replaceState","createBrowserPlatformLocation","slashes","pathEndIdx","LocationStrategy","platformLocation","PathLocationStrategy","provideLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","internal","joinWithSlash","includeHash","normalizeQueryParams","externalUrl","HashLocationStrategy","platformStrategy","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","isCurrentPathEqualTo","_stripBaseHref","_notifyUrlChangeListeners","onUrlChange","_urlChangeSubscription","onThrow","onReturn","createLocation","Plural","Zero","One","Two","Few","Many","Other","FormStyle","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","NumberSymbol","Decimal","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","getLocalePluralCase","ɵgetLocalePluralCase","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","FractionalSeconds","TranslationType","DayPeriods","Months","Eras","timezone","parsedNb","tzHour","tzMin","dateSetter","timeSetter","isoStringToDate","getNamedFormat","dateTimezoneOffset","timezoneToOffset","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","getLocaleId","getLocaleDateFormat","getLocaleTimeFormat","shortTime","shortDate","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","negWrap","neg","strNum","getDatePart","strMs","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","padNumber","extended","formStyle","getLocaleMonthNames","getLocaleDayNames","currentHours","currentMinutes","checkFullData","extractTime","getLocaleExtraDayPeriodRules","getLocaleExtraDayPeriods","afterFrom","beforeTo","amPm","getLocaleDayPeriods","getLocaleEraNames","getDateTranslation","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","getThursdayThisWeek","firstThurs","THURSDAY","getFirstThursdayOfYear","requestedTimezoneOffset","NgLocaleLocalization","NgLocalization","getPluralCategory","cookieStr","eqIndex","cookieName","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","klass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","ngForOf","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","ngForTemplate","viewContainer","adjustedPreviousIndex","previousIndex","NgForOfContext","applyViewChange","ilen","forEachIdentityChange","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","ngIfThen","assertTemplate","ngIfElse","_viewContainerRef","_templateRef","_created","enforceState","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","NgSwitchCase","SwitchView","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ɵRuntimeError","createSubscription","updateLatestValue","_promiseStrategy","PromiseStrategy","_subscribableStrategy","SubscribableStrategy","AsyncPipe","_latestValue","_subscription","_obj","_strategy","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","PLATFORM_BROWSER_ID","platformId","ViewportScroller","BrowserViewportScroller","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","documentResult","getElementsByName","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","shadowRoot","findAnchorFromDocument","scrollToElement","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","scrollRestorationDescriptor","getScrollRestorationProperty","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","lcName","copyFrom","applyUpdate","toDelete","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","updates","cloneFrom","HttpUrlEncodingCodec","rawParams","codec","eqIdx","paramParser","appendAll","eKey","HttpParams","fourth","HttpContext","urlWithParams","qIdx","serializeBody","isUrlSearchParams","detectContentTypeHeader","setHeaders","setParams","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","defaultStatus","defaultStatusText","HttpResponseBase","HttpHeaderResponse","events$","res$","jsonp","callbackParam","patch","addBody","HttpHandler","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","detectedType","reqBody","headerResponse","partialFromXhr","getResponseHeader","getResponseUrl","originalBody","HttpErrorResponse","sentHeaders","onDownProgress","progressEvent","lengthComputable","partialText","onUpProgress","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","getToken","cookieString","ɵparseCookieValue","PLATFORM_ID","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpXsrfTokenExtractor","HttpInterceptingHandler","HttpInterceptorHandler","HttpBackend","HttpClientXsrfModule","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","__forward_ref__","forwardRefFn","isForwardRef","formatRuntimeError","renderStringify","injectorName","injectorDetails","RuntimeError","stringifyForError","comparison","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectorDef","InjectFlags","_injectImplementation","impl","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","__globalThis","__window","__self","_global","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount","componentDefinition","noSideEffects","declaredInputs","providersResolver","hostAttrs","onPush","directiveDefs","pipeDefs","setInput","schemas","tView","directiveTypes","pipeTypes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef$1","autoRegisterModuleById","declarations","transitiveCompileScopes","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","throwNotFound","tNode","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","ɵɵNgOnChangesFeature","ngInherit","domRendererFactory3","rendererType","lView","unwrapRNode","slotValue","isLView","lContainer","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","viewToRestore","contextLView","currentTNode","getCurrentTNodePlaceholderOk","isParent","bindingRootIndex","bindingStartIndex","bindingIndex","currentDirectiveIndex","setCurrentDirectiveIndex","tData","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","inI18n","currentLFrame","childLFrame","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","getTNode","directiveStart","directiveEnd","lifecycleHooks","directiveDef","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","callHooks","initPhase","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","hook","directive","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","isProc","isProceduralRenderer","attrVal","isAnimationProp","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","parentLocation","startView","getParentInjectorViewOffset","parentView","includeViewProviders","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","getParentInjectorIndex","getParentInjectorView","parentData","declarationViewOffset","lViewCursor","tViewType","hn","bloomHash","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","tokenId","createNodeInjector","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","isComponentDef","NodeInjectorFactory","isFactory","depPath","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","PROP_METADATA","parentClass","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","ngMetadataName","annotationCls","additionalProcessing","PropDecoratorFactory","decoratorInstance","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","makePropDecorator","isViewQuery","emitDistinctChangesOnly","Query","deepForEach","keyValueArray","keyValueArrayIndexOf","arrayInsert2","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","USE_VALUE$1","_currentInjector","former","getInjectImplementation","injectInjectorOnly","getInjectFlag","decorator","attachInjectFlag","makeParamDecorator","policy$1","policy","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy$1","getPolicy","changingThisBreaksApplicationSecurity","SafeValueImpl","actualType","getSanitizationBypassType","trustedHtml","SafeHtmlImpl","trustedStyle","SafeStyleImpl","trustedScript","SafeScriptImpl","trustedUrl","SafeUrlImpl","trustedResourceUrl","SafeResourceUrlImpl","inertDocumentHelper","getInertBodyElement","trustedHTMLFromString","defaultDoc","inertDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","sets","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","sanitizedSomething","sanitizeChildren","traverseContent","endElement","checkClobberedElement","elAttr","_sanitizeUrl","srcset","encodeEntities","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","unsafeHtmlInput","InertDocumentHelper","isDOMParserAvailable","DOMParserHelper","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","SanitizingHtmlSerializer","getTemplateContent","safeHtml","isTemplateElement","HTML","STYLE","SCRIPT","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","unsafeResourceUrl","trustedScriptURLFromStringBypass","MONKEY_PATCH_KEY_NAME","readPatchedData","ERROR_ORIGINAL_ERROR","_console","originalError","_findOriginalError","errorLogger","ERROR_LOGGER","defaultErrorLogger","getErrorLogger","getOriginalError","COMMENT_DISALLOWED","COMMENT_DELIMITER","defaultScheduler","RendererStyleFlags2","Important","DashCase","tIcuContainerNode","_icuContainerIterate","isLContainer","getNearestLContainer","lNodeToHandle","beforeNode","rNode","ye","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","parentRElement","applyToElementOrContainer","applyView","applyContainer","escapeCommentText","namespaceUri","getNamespaceUri","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeFromArray","removeViewFromContainer","lQueries","detachView","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","processCleanups","getNativeByTNode","getClosestRElement","_getInsertInFrontOfRNodeWithI18n","childRNode","childTNode","parentRNode","getParentRElement","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","nextRNode","projectionNodes","getProjectionNodes","getLViewParent","componentView","viewIndexInContainer","nextViewIndex","firstTNodeOfView","nativeParent","nativeParentNode","nativeRemoveChild","isProjection","rawSlotValue","attachPatchData","applyNodes","icuContainerIterate","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","componentNode","classToSearch","startingIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","tStylingRange","queryStartIdx","directiveDefIdx","setCurrentQueryIndex","tHostNode","rendererFactory","resetPreOrderHookFlags","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","createTNodeAtIndex","isInI18nBlock","getCurrentParentTNode","setCurrentTNode","numSlotsToAlloc","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","hostLView","renderComponent$1","renderChildComponents","incompleteFirstPass","leaveView","isInCheckNoChangesPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshChildComponents","firstUpdatePass","normalExecutionPath","creationModeIsActive","isCreationMode","renderView","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","queries","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","setInputsForProperty","childComponentLView","markDirtyIfOnPush","mapPropName","localRefs","hasDirectives","isNodeMatchingSelectorList","diPublicInInjector","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","ngDevMode","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","addToViewTree","createLView","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","INJECTOR","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","NullInjector","defType","additionalProviders","createInjectorWithoutInjectorInstances","_resolveInjectorDefTypes","R3Injector","getNullInjector","records","injectorDefTypes","dedupStack","processProvider","injectorDef","processInjectorType","makeRecord","assertNotDestroyed","previousInjector","setCurrentInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","oe","injectorErrorName","tokenPath","NG_TOKEN_PATH","catchInjectorError","defOrWrappedDef","getInjectorDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","injectArgs","hasOnDestroy","paramLength","newArray","inheritedInjectableDef","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","createInjector","NULL","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isJsObject","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","setElementAttribute","elementAttributeInternal","getSelectedTNode","ɵɵattribute","getBindingIndex","incrementBindingIndex","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","getContextLView","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","getNamespace$1","computeStaticStyling","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","getElementDepthCount","increaseElementDepthCount","executeContentQueries","setCurrentTNodeAsNotParent","decreaseElementDepthCount","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementStart","ɵɵelementEnd","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","isObservable","isSubscribable","listenerFn","useCapture","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","directiveInstance","ɵɵlistener","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","nestingLevel","walkUpViews","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","interpolatedValue","interpolation1","interpolation2","ɵɵpropertyInterpolate2","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","consumeClassToken","consumeWhitespace","consumeStyleKey","consumeSeparator","ch1","ch2","ch3","lastChIndex","consumeQuotedText","consumeStyleValue","quoteCharCode","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","styleKeyValueArraySet","styleStringParser","resetParserState","parseStyleNext","parseStyle","getLastParsedKey","getLastParsedValue","keyValueArraySet","classStringParser","parseClassNameNext","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldKey","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","staticKeyValueArray","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","Un","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","ɵɵtextInterpolate1","ɵɵtextInterpolate","interpolated","textBindingInternal","ɵɵtextInterpolate2","bindingUpdated3","interpolation3","ɵɵtextInterpolate3","v3","bindingUpdated4","interpolation4","ɵɵtextInterpolate4","v4","interpolation5","ɵɵtextInterpolate5","ɵɵhostProperty","currentDef","unwrapLView","loadComponentRenderer","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","normalizedLocale","getLocaleData","findLocaleData","LocaleDataIndex","PluralCase","ng","LocaleId","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","Directionality","ExtraData","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","LOCALE_ID$1","tIcu","currentCase","currentCaseLViewIndex","mergedCode","changeMask","changeMaskCounter","mutableOpCodes","anchorRNode","rootRNode","rootIdx","textNodeIndex","parentIdx","getParentFromIcuCreateOpCode","insertInFrontOf","uo","refIdx","getRefFromIcuCreateOpCode","getTIcu","caseIndex","getCurrentICUCaseIndex","applyMutableOpCodes","anchorIdx","commentValue","commentNodeIndex","createCommentNode","elementNodeIndex","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","applyUpdateOpCodes","icuExpression","bindingValue","cases","resolvedCase","getPluralCase","getCaseIndex","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","BINDING_REGEXP","ICU_REGEXP","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","opCodes","previousElementIndex","generateBindingUpdateOpCodes","countBindings","i18nAttributesFirstPass","setMaskBit","ɵɵi18nExp","tI18n","applyI18n","lInjectablesBlueprint","resolveProvider","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","viewProviders","processProvidersFn","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver$1","_NullComponentFactoryResolver","createElementRef","injectElementRef","nodeAtIndex","getOrCreateRenderer2","injectRenderer2","Sanitizer","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","destroyLView","storeCleanupWithContext","detach","reattach","detectChangesInternal","checkNoChanges","setIsInCheckNoChangesMode","checkNoChangesInternal","attachToViewContainerRef","detachFromAppRef","renderDetachView","attachToAppRef","ViewRef$1","detectChangesInRootView","checkNoChangesInRootView","componentDef","ComponentFactory","nonMinified","templateName","SCHEDULER","ComponentFactory$1","selectorList","stringifyCSSSelector","stringifyCSSSelectorList","isBoundToModule","toRefArray","projectableNodes","rootSelectorOrNode","rootViewInjector","createChainedInjector","hostRenderer","elementName","hostRNode","elementOrSelector","rElement","locateHostElement","getNamespace","rootFlags","playerHandler","createRootContext","rootTView","rootLView","tElementNode","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","nodesforSlot","hostFeatures","rootTNode","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef","_rootLView","RootViewRef","NgModuleRef$1","_bootstrapComponents","destroyCbs","maybeUnwrapFn","_r3Injector","injectFlags","NgModuleFactory$1","moduleType","incoming","assertSameOrNotExisting","recurse","registerNgModuleType","NgModuleRef","slotOffset","pureFn","getBindingRoot","updateBinding","getBinding","pureFunction1Internal","pureFunction2Internal","pureFunction3Internal","pureFunction4Internal","exp5","exp6","exp7","exp8","returnValueIndex","lastReturnValue","bindingRoot","getPureFunctionReturnValue","pipeName","getPipeDef","pipeFactory","pipeInstance","isPure","exps","pureFunctionVInternal","__isAsync","nextFn","_wrapInTimeout","_results","_emitDistinctChangesOnly","_changesDetected","symbolIterator","resultsTree","identityAccessor","newResultFlat","valueA","valueB","notifyOnChanges","setDirty","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","createTemplateRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","viewRef","componentFactoryOrType","indexOrOptions","ngModuleRef","isComponentFactory","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","declaredComponentLView","insertedLContainer","trackMovedView","insertView","parentNativeNode","addViewToContainer","getOrCreateViewRefs","viewRefsArr","detachedView","commentNode","nativeNextSibling","queryList","LQuery_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","LQueries_","dirtyQueriesWithMatches","getTQuery","queriesForTemplateRef","childQueryIndex","tqueryClone","TQueries_","tquery","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","TQuery_","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","createTQuery","TQueryMetadata_","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","loadQueryInternal","bindingPropertyName","hostPropertyName","APP_INITIALIZER","ApplicationInitStatus","appInits","donePromise","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_ID","APP_ID_RANDOM_PROVIDER","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","DEFAULT_CURRENCY_CODE","ngModuleFactory","componentFactories","Compiler","compileModuleSync","NgModuleFactory","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","ModuleWithComponentFactories","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","delayChangeDetectionForEvents","isAngularZone","onInvokeTask","task","applyThis","applyArgs","invokeTask","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","forkInnerZoneWithAngularBehavior","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","Testability","_pendingCount","_isZoneStable","_didWork","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","doneCb","getPendingTasks","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","findProviders","using","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","registerApplication","testability","unregisterApplication","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platform","_NoopGetTestability","ALLOW_MULTIPLE_PLATFORMS","parentPlatformFactory","extraProviders","getPlatform","injectedProviders","PlatformRef","inits","createPlatform","requiredToken","assertPlatform","_injector","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","ngZoneOption","NoopNgZone","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","exceptionHandler","_callAndReportToErrorHandler","initStatus","assertDefined","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","objs","_exceptionHandler","_componentFactoryResolver","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","compRef","testabilityRegistry","_loadComponent","viewCount","_devMode","_runModeLocked","injectChangeDetectorRef","isPipe","createViewRef","isListLikeIterable","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","_prevDup","_nextDup","atOrAfterIndex","duplicates","_DuplicateItemRecordList","recordList","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","DefaultIterableDifferFactory","copied","defaultIterableDiffersFactory","DefaultKeyValueDifferFactory","defaultKeyValueDiffersFactory","kv","keyValDiff","defaultIterableDiffers","defaultKeyValueDiffers","platformCore","createPlatformFactory","APPLICATION_MODULE_PROVIDERS","getGlobalLocale","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","BaseControlValueAccessor","BuiltInControlValueAccessor","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","ɵgetDOM","getUserAgent","_isAndroid","_handleInput","_compositionStart","_compositionEnd","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","isEmptyInputValue","requiredValidator","requiredTrueValidator","emailValidator","hasValidLength","minlength","requiredLength","actualLength","minLengthValidator","maxLengthValidator","nullValidator","regexStr","requiredPattern","actualValue","patternValidator","composeAsync","ɵisObservable","arrayOfErrors","isValidatorFn","presentValidators","mergeErrors","executeValidators","normalizeValidators","forkJoin","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","_onDestroyCallbacks","untouched","_setValidators","_composedValidatorFn","composeValidators","_setAsyncValidators","_composedAsyncValidatorFn","composeAsyncValidators","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","AbstractControlDirective","valueAccessor","formDirective","_cd","submitted","NgControlStatus","AbstractControlStatus","NgControlStatusGroup","ControlContainer","setUpValidators","_pendingValue","_pendingChange","_pendingDirty","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpModelChangePipeline","_pendingTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","validateControlPresenceOnChange","cleanUpValidators","_registerOnCollectionChange","getControlValidators","mergeValidators","getControlAsyncValidators","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","viewModel","_syncPendingControls","defaultAccessor","builtinAccessor","customAccessor","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","isFormControl","isFormGroup","isFormArray","_forEachChild","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","_updateOn","addAsyncValidators","removeValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","onlySelf","_updateTouched","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","_updateControlsErrors","controlToFind","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","AbstractControl","pickValidators","pickAsyncValidators","_onChange","_applyFormState","initialValueIsDefault","emitViewToModelChange","removeListItem","_setUpControls","registerControl","controlName","assertAllValuesPresent","assertControlPresent","_reduceChildren","subtreeUpdated","_reduceValue","_registerControl","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","setUpControl","getControl","addFormGroup","setUpFormContainer","removeFormGroup","getFormGroup","updateModel","syncPendingControls","onReset","resetForm","AbstractFormGroupDirective","_checkParentType","controlPath","formControlBinding$1","NgModel","_changeDetectorRef","_registered","selectValueAccessor","_checkForErrors","_setUpControl","_updateDisabled","isPropertyUpdated","_isStandalone","_setUpStandalone","_checkName","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","_isSameGroup","fireUncheck","controlPair","_control","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","cleanUpControl","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","MIN_VALIDATOR","MinValidator","toFloat","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","ɵDomAdapter","supportsDOMEvents","GenericBrowserDomAdapter","ɵsetRootDomAdapter","BrowserDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","baseElement","getBaseElementHref","pathName","resetBaseElement","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","setTestabilityGetter","BrowserGetTestability","ɵglobal","testabilities","didWork","didWork_","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","_findPluginFor","addGlobalEventListener","SharedStylesHost","_stylesSet","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","xhtml","xlink","xmlns","math","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","compId","eventHandler","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","removeAttributeNS","decoratePreventDefault","contentAttr","componentShortId","shimContentAttribute","hostAttr","shimHostAttribute","nodeOrShadowRoot","DomEventsPlugin","EventManagerPlugin","MODIFIER_KEYS","_keyMap","Del","Menu","Scroll","Win","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","XhrFactory","parentModule","msPerTick","numTicks","timeChangeDetection","profileName","isProfilerAvailable","profile","performanceNow","profileEnd","ChangeDetectionPerfRecord","exportNgVar","COMPILED","AngularProfiler","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","RouterEvent","navigationTrigger","restoredState","urlAfterRedirects","snapshot","routeConfig","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segmentGroup","posParams","consumed","equalArraysOrString","aSorted","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","containsSegmentGroup","paramCompareMap","ignored","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","queryParamMap","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","serializePaths","parameterMap","_parameterMap","serializePath","UrlParser","UrlTree","parseRootSegment","parseQueryParams","parseFragment","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeURI","encodeUriFragment","DefaultUrlSerializer","childOutlet","mapChildrenIntoArray","encodeUriString","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","UrlSegmentGroup","parseChildren","parseQueryParam","parseSegment","capture","parseParens","matchSegments","UrlSegment","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","allowPrimary","outletName","pathFromRoot","findPath","outlet","Tree","setRouterState","urlTree","activated","ActivatedRouteSnapshot","RouterStateSnapshot","TreeNode","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","RouterState","futureSnapshot","_futureSnapshot","_routerState","paramMap","_paramMap","paramsInheritanceStrategy","inheritingStartingFrom","_resolvedData","flattenInherited","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","outlets","segmentPath","oldSegmentGroup","newSegmentGroup","replaceSegment","oldSegment","newSegment","isAbsolute","numberOfDoubleDots","isMatrixParams","cmdWithOutlet","isCommandWithOutlets","toRoot","processChildren","updateSegmentGroupChildren","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","updateSegmentGroup","createNewSegmentChildren","futureState","currState","forwardEvent","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","contexts","nodeChildrenAsMap","futureChild","childOutletName","deactivateRoutes","childName","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","attachRef","activateRoutes","ActivationEnd","ChildActivationEnd","getOrCreateContext","onOutletReAttached","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","INITIAL_VALUE","innerAcc","isUrlTree","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","OutletContext","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","isActivated","activatedRoute","activatedRouteData","childContexts","OutletInjector","ɵEmptyOutletComponent","parentPath","validateNode","getFullPath","validateConfig","standardizeConfig","sortedConfig","getOutlet","noMatch$1","consumedSegments","positionalParamSegments","defaultUrlMatcher","slicedSegments","emptyPathMatch","containsEmptyPathMatchesWithNamedOutlets","primarySegment","_sourceSegment","_segmentIndexShift","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","rawSegment","NoMatch$1","newTree","AbsoluteRedirect","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","createUrlTree","squashSegmentGroup","noMatchError","rootCandidate","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","last$1","expanded$","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","newSegments","rawSegmentGroup","cfg","rawSlicedSegments","getChildConfig","routerConfig","childModule","splitSegmentGroup","matchedOnOutlet","LoadedRouterConfig","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoadObservables","injectionToken","guardVal","isCanLoad","wrapIntoObservable","prioritizedGuardValue","namedOutletsRedirect","applyRedirectCreatreUrlTree","newRoot","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","newChildren","childCandidate","mergeTrivialChildren","getChildRouteGuards","getClosestLoadedConfig","futurePath","canDeactivateChecks","canActivateChecks","prevChildren","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","CanActivate","CanDeactivate","getRouteGuards","zi","rootComponentType","processSegmentGroup","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","getSourceSegmentGroup","getPathIndexShift","getResolve","mergedNodes","hasEmptyPathConfig","duplicateEmptyPathNode","resultNode","mergedNode","nextResult","detachedTree","compiler","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","loadModuleFactory","shouldProcessUrl","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","navigationId","currentPageId","isNgZoneEnabled","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","DefaultUrlHandlingStrategy","DefaultRouteReuseStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","RouterConfigLoader","triggerEvent","RouteConfigLoadStart","RouteConfigLoadEnd","createEmptyState","targetPageId","currentRawUrl","extractedUrl","rawUrl","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","NavigationStart","serializeUrl","ApplyRedirects","applyRedirects$1","applyRedirects","finalUrl","newObservableError","NoMatch","recognize$1","skipLocationChange","setBrowserUrl","routesRecognized","navStart","replaceUrl","switchTap","appliedUrlTree","guardsStart","GuardsCheckStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","ChildActivationStart","fireChildActivationStart","ActivationStart","fireActivationStart","futureARS","canActivateChildGuardsMapped","canActivateChild","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivateChild","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","GuardsCheckEnd","restoreHistory","cancelNavigationTransition","resolveStart","ResolveStart","dataResolved","canActivateChecksResolved","getDataKeys","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","ResolveEnd","createRouterState","ActivateRoutes","isNavigationCancelingError","redirecting","navCancel","NavigationCancel","mergedTree","scheduleNavigation","navError","NavigationError","resetRootComponentType","setTransition","initialNavigation","setUpLocationChangeListener","navigateByUrl","locationSubscription","stateCopy","parseUrl","getCurrentNavigation","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","Navigation","cmdIdx","urlPart","computeNavigation","startingPosition","createPositionApplyingDoubleDots","findStartingPosition","validateCommands","matchOptions","containsTree","NavigationEnd","priorPromise","lastNavigation","browserNavPrecededByRouterNav","navToSameUrl","lastNavigationInProgress","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","attrBoolValue","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","RouterLinkActive","linkWithHref","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","linksWithHrefs","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","isActiveMatchOptions","isActiveCheckFn","RouterPreloader","setUpPreloading","processRoutes","preloadConfig","PreloadingStrategy","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","UrlSerializer","assignExtraOptionsToRouter","enableTracing","groupEnd","NoPreloading","NgProbeToken","provideRoutes","provideForRootGuard","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","provideRouterInitializer","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","appInitializer","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","hasQueueMicrotask","queueMicrotask","hasSetImmediate","hasNextTick","setImmediate$1","invokeCallback","asyncFn","handlePromise","initialParams","asyncify","cbArgs","eachfn","callArgs","awaitify","wrapAsync","_iteratee","iterCb","breakLoop","callFn","awaiting","running","iterDone","iterateeCallback","replenish","eachOfLimit","isAsyncGenerator","asyncEachOfLimit","nextElem","coll","createArrayIterator","createES2015Iterator","okeys","createObjectIterator","createIterator","looping","onlyOnce","eachOfLimit$2","iteratorCallback","eachOf$1","eachOfArrayLike","eachOfGeneric","map$1","_asyncMap","applyEach","eachOfSeries$1","PROMISE_SYMBOL","memo","mapLimit$1","concatLimit$1","mapResults","getResult","testResult","testPassed","resultArgs","_createTester","consoleFunc","_test","truth","_withoutIndex","eachLimit$2","eachSeries$1","truthValues","filterArray","filterGeneric","intervalFunc","constant$1","promiseCallback","parseTimes","_task","errorFilter","retryAttempt","errback","innerArgs","ensureAsync","taskCb","taskIndex","nextTask","isInfinite","Float64Array","EXP_BIT_MASK","f64buf","i32buf","doubleToLongBits","longBitsToDouble","BIAS","MAX_REL_BITS_INTEGER","fract","IndexOutOfBoundsException","Integer","setCharAt","srcPos","destPos","ensureCapacity","oldElement","arrayList","NoSuchElementException","newLength","reverseOrder","alen","singletonList","MapInterface","hashSet","EmptyStackException","SortedMap","root_","fixAfterInsertion","parentOf","leftOf","rightOf","rotateLeft","rotateRight","getFirstEntry","successor","SortedSet","PI_TIMES_2","anglePrev","angleNext","tip1","tip2","ang1","ang2","delAngle","angleDegrees","crossproduct","COUNTERCLOCKWISE","CLOCKWISE","angDel","PI_OVER_2","PI_OVER_4","boundaryCount","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","MOD2_BOUNDARY_RULE","ENDPOINT_BOUNDARY_RULE","MULTIVALENT_ENDPOINT_BOUNDARY_RULE","MONOVALENT_ENDPOINT_BOUNDARY_RULE","OGC_SFS_BOUNDARY_RULE","CGAlgorithmsDD","orientationIndexFilter","selfAdd","selfMultiply","selfSubtract","signum","q2","py","pw","qx","qy","qw","selfDivide","doubleValue","yInt","pc","detsum","detleft","detright","errbound","DP_SAFE_EPSILON","pointToSegment","noIntersection","denom","minX0","minY0","maxX0","maxY0","minX1","minY1","maxX1","maxY1","midx","midy","p1x","p1y","p2x","p2y","q1x","q1y","q2x","q2y","hiPt","hiIndex","iPrev","iNext","isCCW","COLLINEAR","STRAIGHT","lineIntersector","RayCrossingCounter","locateInRing","_boundaryRule","_isIn","_numBoundaries","boundaryRule","locateInPolygonRing","updateLocationInfo","computeLocation","locateOnPoint","locateOnLineString","locateInPolygon","mpoly","geomi","GeometryCollectionIterator","shellLoc","holeLoc","_crossingCount","_isPointOnSegment","countSegment","isOnSegment","minx","isPointInPolygon","LineIntersector","_result","_inputLines","_intPt","_intLineIndex","_isProper","_pa","_pb","pdx","pdy","getIndexAlongSegment","segmentIndex","computeIntLineIndex","getTopologySummary","catBuilder","StringBuilder","isCollinear","computeIntersect","getEdgeDistance","inputLineIndex","NO_INTERSECTION","computeEdgeDistance","COLLINEAR_INTERSECTION","getEndpoint","ptIndex","isIntersection","getIntersectionAlongSegment","DONT_INTERSECT","DO_INTERSECT","POINT_INTERSECTION","nearestPt","minDist","isInSegmentEnvelopes","env0","env1","intersectionSafe","nearestEndpoint","checkDD","intPtDD","isIn","computeCollinearIntersection","p1q1p2","p1q2p2","q1p1q2","q1p2q2","Pq1","Pq2","Qp1","Qp2","IntervalRTreeNode","queryMin","queryMax","NodeComparator","mid2","IntervalRTreeLeafNode","IntervalRTreeBranchNode","_node1","_node2","buildExtent","SortedPackedIntervalRTree","_leaves","_level","buildLevel","buildRoot","printNode","ArrayListVisitor","IntervalIndexedGeometry","rcc","SegmentVisitor","PointOnGeometryLocator","_counter","_isEmpty","addLine","locatePointInRing","locatePointInPolygon","locateInGeometry","kBuf","kBufAsF64","kBufAsI32","NULL_ORDINATE","getM","ordinateIndex","setZ","NumberUtil","setM","equals3D","equalInZ","CloneNotSupportedException","distance3D","dz","setCoordinate","Serializable","DimensionalComparator","_dimensionsToTest","dimensionsToTest","compX","compY","testPts","firstCoordinate","newCoordinates","coordinateComparator","measures","hasRepeatedPoints","nonNull","newCoord","srcStart","destStart","pts2","coordArrayType","minCoord","npts","extractPts","iPts","ForwardComparator","BidirectionalComparator","forwardComp","isEqualReversed","OLDcompare","dir1","increasingDirection","dir2","comparePt","allowRepeated","duplicate","hasM","mIndex","getMeasures","hasZ","getCoordinateCopy","createCoordinate","expandEnvelope","minDim","CoordinateSequences","indexOfFirstCoordinate","ensureRing","cs1","cs1Size","minCoordinateIndex","minCoordIndex","testCoord","newseq","copyCoord","createClosedRing","CoordinateXY","CoordinateXYM","CoordinateXYZM","dimensionValue","SYM_FALSE","SYM_TRUE","DONTCARE","SYM_DONTCARE","SYM_P","SYM_L","SYM_A","dimensionSymbol","Character","minq","maxq","otherEnvelope","getDiameter","minExtent","transX","transY","setToNull","disjoint","expandBy","getTypeCode","TYPECODE_GEOMETRYCOLLECTION","equalsExact","geometryChanged","geometryChangedFilter","geometryChangedAction","_envelope","equalsNorm","norm","compareToSameClass","_userData","getSRID","_SRID","toGeometry","reverseInternal","envelope","setSRID","copyInternal","computeEnvelopeInternal","SRID","userData","aElement","bElement","isEquivalentClass","TYPECODE_POINT","TYPECODE_MULTIPOINT","TYPECODE_LINESTRING","TYPECODE_LINEARRING","TYPECODE_MULTILINESTRING","TYPECODE_POLYGON","TYPECODE_MULTIPOLYGON","TYPENAME_POINT","TYPENAME_MULTIPOINT","TYPENAME_LINESTRING","TYPENAME_LINEARRING","TYPENAME_MULTILINESTRING","TYPENAME_POLYGON","TYPENAME_MULTIPOLYGON","TYPENAME_GEOMETRYCOLLECTION","_geometries","childCoordinates","otherCollection","numGeometries","reversed","numPoints","theseElements","otherElements","thisGeom","holeComp","_atStart","_subcollectionIterator","isAtomic","CoordinateArraySequenceFactory","instanceObject","readResolve","coordSeq","spatial","CoordinateSequenceFactory","_coordinateSequenceFactory","coordinateSequenceFactory","getDefaultCoordinateSequenceFactory","multiPolygons","multiPolygonArray","geometryArray","multiLineStrings","multiLineStringArray","lineStringArray","multiPoints","multiPointArray","linearRingArray","pointArray","polygonArray","getCoordinateSequenceFactory","geomList","geomType","isHeterogeneous","hasGeometryCollection","partType","toGeometryArray","toPolygonArray","toLineStringArray","toPointArray","ptSeq","setAll","actualDimensionValue","requiredDimensionSymbol","requiredDimensionSymbols","isDisjoint","isTrue","isCoveredBy","dimensionSymbols","minimumDimensionSymbols","minimumDimensionValue","setAtLeastIfValid","isWithin","dimensionOfGeometryA","dimensionOfGeometryB","orient0","orient1","projectionFactor","pf0","pf1","newp0","newp1","distancePerpendicular","close00","close01","close10","close11","comp0","equalsTopo","segmentLengthFraction","segx","segy","segmentFraction","inputPt","segFrac","A2plusB2","A2subB2","pointAlong","bits0","hash0","bits1","otherLineString","isCoordinate","Lineal","validateConstruction","MINIMUM_VALID_SIZE","locationValue","EXTERIOR","BOUNDARY","INTERIOR","Puntal","allRings","allRingsArray","_coordinates","ofRingSigned","shellCoordinates","shellCopy","holeCopies","otherPolygon","convexHull","otherShell","shellComp","nHole1","nHole2","thisHole","otherHole","_modelType","_scale","FLOATING","modelType","FIXED","pm1","pm2","sigDigits","getMaximumSignificantDigits","otherSigDigits","isFloating","FLOATING_SINGLE","maxSigDigits","nameToTypeMap","maximumPreciseValue","NotRepresentableException","HCoordinate","lenAB","lenBC","lenCA","maxLen","bx","asqr","sqr","bsqr","numx","numy","ccx","ccy","l2","len0","frac","uz","vx","vy","vz","crossx","crossy","crossz","circum","signedArea","interpolateZ","longestSideLength","isAcute","circumcentre","area3D","cloneCoordinates","strBuilder","GeometryCollectionMapper","_mapOp","mapOp","_skipEmpty","_inputGeoms","extractFactory","obj2","extractElements","elemGeom","GeometryTransformer","_pruneEmptyGeometry","_preserveGeometryCollectionType","_preserveCollections","_preserveType","transformPoint","transformPolygon","isAllValidLinearRings","transformLinearRing","createCoordinateSequence","getInputGeometry","transformMultiLineString","transGeomList","transformGeom","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","inputGeom","seqSize","_isForcedToLineString","isForcedToLineString","forceToLineString","setForceToLineString","_pts","_isDone","EdgeEnd","_isForward","_isInResult","_nextMin","_minEdgeRing","computeDirectedLabel","currLocation","nextLocation","getNextMin","_edge","depthVal","isArea","setNextMin","nextMin","setMinEdgeRing","minEdgeRing","isLineEdge","isExteriorIfArea0","allPositionsEqual","isExteriorIfArea1","setEdgeRing","getMinEdgeRing","isInResult","printEdge","printReverse","setVisitedEdge","oppositePos","oppositeDepth","getEdgeRing","EdgeIntersection","println","EdgeIntersectionList","addSplitEdges","edgeList","eiPrev","newEdge","createSplitEdge","ei0","ei1","useIntPt1","eiNew","IntArrayList","capacity","getChainStartIndices","startIndexList","findChainEnd","chainQuad","OLDgetChainStartIndices","MonotoneChainIndexer","toIntArray","MonotoneChainEdge","mcb","chainIndex","computeIntersectsForChain","chainIndex0","mce","chainIndex1","start0","end0","start1","end1","getStartIndexes","computeIntersects","Depth","NULL_VALUE","geomIndex","posIndex","depthValue","getDelta","lbl","depthAtLocation","eiList","_mce","_isIsolated","_depthDelta","getCollapsedEdge","newPts","setIsolated","setName","isEqualForward","isEqualReverse","iRev","getMonotoneChainEdge","normalizedSegmentIndex","nextSegIndex","_dx","_dy","getDy","setNode","getDirectedCoordinate","getDx","computeLabel","EdgeEndStar","_edgeMap","_ptInAreaLocation","getNextCW","iNextCW","propagateSideLabels","startLoc","currLoc","setLocation","isAreaLabelsConsistent","geomGraph","computeEdgeEndLabels","getBoundaryNodeRule","checkAreaLabelsConsistent","lastEdgeIndex","eSearch","StringBuffer","hasDimensionalCollapseEdge","isAnyNull","setAllLocationsIfNull","insertEdgeEnd","OrientedCoordinateArray","_orientation","orientation1","orientation2","limit1","limit2","compPt","done1","done2","compareOriented","_ocaMap","edgeColl","findEdgeIndex","oca","computeIntersections","mc","SweepLineEvent","_xValue","_eventType","_insertEvent","_deleteEventIndex","insertEvent","INSERT","isDelete","setDeleteEventIndex","deleteEventIndex","getInsertEvent","isInsert","isSameLabel","getDeleteEventIndex","_includeProper","_recordIsolated","_numIntersections","_bdyNodes","_isDoneWhenProperInt","includeProper","recordIsolated","setIsDoneIfProperInt","isDoneWhenProperInt","isBoundaryPointInternal","bdyNodes","isBoundaryPoint","setBoundaryNodes","bdyNodes0","bdyNodes1","SimpleMCSweepLineIntersector","nOverlaps","prepareEvents","processOverlaps","edgeSet","ev0","mc0","ev1","mc1","_parentGeom","_lineEdgeMap","_boundaryNodeRule","_useBoundaryDeterminationRule","_argIndex","_boundaryNodes","_hasTooFewPoints","_areaPtLocator","parentGeom","insertBoundaryPoint","newLoc","determineBoundary","computeRingSelfNodes","isDoneIfProperInt","esi","createEdgeSetIntersector","isRings","addSelfIntersectionNodes","computeSplitEdges","edgelist","getBoundaryNodes","hasTooFewPoints","addPolygonRing","insertEdge","getInvalidPoint","getBoundaryPoints","addSelfIntersectionNode","isBoundaryNode","cwLeft","cwRight","onLocation","_isCovered","_isCoveredSet","isCovered","isCoveredSet","setCovered","TopologyLocation","locValue","setLocations","isEqualOnSide","locIndex","onLoc","lineLabel","toLine","_coord","isIncidentEdgeInResult","computeMergedLocation","label2","eltIndex","nLoc","mergeLabel","nodeMap","nodeFact","_edgeEndList","NodeFactory","nodeit","linkResultDirectedEdges","printEdges","debugPrintln","linkAllDirectedEdges","matchInSameDirection","ep0","ep1","getEdgeEnds","debugPrint","findEdgeInSameDirection","eCoord","findEdgeEnd","edgesToAdd","de2","ON","quad","NE","NW","quad1","quad2","halfPlane","SE","SW","computeSelect","searchEnv","mcs","computeOverlaps","mco","getEndIndex","getStartIndex","getBounds","ItemBoundable","_bounds","Boundable","poll","itemEnv","AbstractNode","_childBoundables","getLevel","getChildBoundables","addChildBoundable","childBoundable","computeBounds","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","EnvelopeDistance","env2","miny","maxy","aminx","aminy","amaxx","amaxy","bminx","bminy","bmaxx","bmaxy","maxDistance","BoundablePair","_boundable1","_boundable2","_itemDistance","boundable2","itemDistance","maximumDistance","expandToQueue","priQ","isComp1","isComposite","isComp2","isLeaves","bndComposite","bndOther","isFlipped","bp","getBoundable","AbstractSTRtree","_built","_itemBoundables","_nodeCapacity","DEFAULT_NODE_CAPACITY","nodeCapacity","queryInternal","searchBounds","childBoundables","getIntersectsOp","getNodeCapacity","childToRemove","valuesTree","valuesTreeForNode","valuesTreeForChild","bounds","boundablesAtLevel","boundables","boundable","createHigherLevels","childToPrune","boundablesOfALevel","parentBoundables","createParentBoundables","maxChildDepth","childDepth","newLevel","sortedChildBoundables","getComparator","IntersectsOp","kNearestNeighbors","createParentBoundablesFromVerticalSlices","verticalSlices","createParentBoundablesFromVerticalSlice","nearestNeighbourK","initBndPair","distanceLowerBound","bndPair","pairDistance","bp2","STRtreeNode","intersectsOp","sliceCount","sliceCapacity","boundablesAddedToSlice","yComparator","minLeafCount","xComparator","nearestNeighbour","ItemDistance","itemDist","minPair","bnd","isWithinDistance","distanceUpperBound","SpatialIndex","aBounds","bBounds","geometryFactory","olReference","convertFromPoint","convertFromLineString","convertFromLinearRing","convertFromPolygon","convertFromMultiPoint","convertFromMultiLineString","convertFromMultiPolygon","convertFromCollection","multiPoint","multiLineString","multiPolygon","convertToPoint","convertToLineString","convertToLinearRing","convertToPolygon","convertToMultiPoint","convertToMultiLineString","convertToMultiPolygon","convertToCollection","p2c","WKTGeometryType","index_","isAlpha_","isNumeric_","opt_decimal","isWhiteSpace_","nextChar_","nextToken","LEFT_PAREN","COMMA","RIGHT_PAREN","readNumber_","readText_","scientificNotation","lexer","lexer_","layout_","consume_","token_","isTokenType","parseGeometry_","parseGeometryLayout_","dimToken","dimInfo","parseGeometryCollectionText_","isEmptyGeometry_","formatErrorMessage_","parsePointText_","parsePoint_","parseLineStringText_","parsePointList_","parsePolygonText_","parseLineStringTextList_","parseMultiPointText_","parsePointTextList_","parseMultiLineStringText_","parseMultiPolygonText_","parsePolygonTextList_","o2c","ordinates","ca2p","encodeLineStringGeometry","GeometryEncoder","encodePointGeometry","encodePolygonGeometry","geometryEncoder","encodeGeometryLayout","Lexer","WKTParser","_hi","_lo","strlen","signCh","numDigits","numBeforeDec","hasDecimalChar","TEN","expStr","NumberFormatException","numDecPlaces","xAbs","xLog10","xMag","xApprox","extractSignificantDigits","insertDecimalPoint","mag","ONE","decimalPointPos","MAX_PRINT_DIGITS","digit","rebiasBy10","digitChar","continueExtractingDigits","remMag","isZero","getSpecialNumberString","yhi","hy","ty","SPLIT","dump","zlo","createNaN","reciprocal","fhi","flo","rint","axdd","diffSq","ylo","zhi","hx","tx","selfSqr","toStandardNotation","toSciNotation","specialStr","stringOfChar","SCI_NOT_ZERO","SCI_NOT_EXPONENT_CHAR","trailingDigits","digitsWithDecimal","PI_2","EPS","LOG_10","MonotoneChainOverlapAction","_overlapSeg1","_overlapSeg2","mc2","start2","safeStart","MonotoneChainBuilder","getChains","mcList","chainStart","chainEnd","SinglePassNoder","_segInt","segInt","_monoChains","_idCounter","_nOverlaps","getMonotoneChains","intersectChains","overlapAction","SegmentOverlapAction","queryChain","testChain","_si","ss2","octant","xSign","SegmentPointComparator","relativeSign","ySign","compareValue","compareSign0","compareSign1","SegmentNode","_segString","_segmentOctant","_isInterior","segString","segmentOctant","isInterior","SegmentNodeList","getSplitCoordinates","addEdgeCoordinates","addCollapsedNodes","collapsedVertexIndexes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","vertexIndex","createSplitEdgePts","lastSegStartPt","findCollapseIndex","collapsedVertexIndex","numVerticesBetween","getSegmentOctant","checkSplitEdgesCorrectness","splitEdges","edgePts","split0","splitnPts","ptn","SegmentString","_nodeList","resultEdgelist","getNodeList","safeOctant","Octant","addIntersectionNode","NodableSegmentString","adx","ady","_resultPrecisionModel","setComputationPrecision","getArgGeometry","_startDe","_maxNodeDegree","_geometryFactory","computePoints","computeRing","isFirstEdge","addPoints","computeMaxNodeDegree","getOutgoingDegree","isShell","getMaxNodeDegree","deLabel","toPolygon","MinimalEdgeRing","MaximalEdgeRing","buildMinimalRings","minEdgeRings","minEr","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","_resultAreaEdgeList","_SCANNING_FOR_INCOMING","_LINKING_TO_OUTGOING","getResultAreaEdges","firstOut","nextOut","nextIn","deLast","quad0","updateLabelling","nodeLabel","firstIn","edgeIndex","startDepth","targetLastDepth","nextDepth","lastDepth","currDepth","nextDe","mergeSymLabels","findCoveredLineEdges","eLabel","BasicSegmentString","NodingIntersectionFinder","_findAllIntersections","_isCheckEndSegmentsOnly","_keepIntersections","_isInteriorIntersectionsOnly","_interiorIntersection","_intSegments","_intersections","_intersectionCount","finder","setFindAllIntersections","isEnd1","isEnd00","isEnd01","isEnd10","isEnd11","isInteriorVertexIntersection","setInteriorIntersectionsOnly","setKeepIntersections","setCheckEndSegmentsOnly","isCheckEndSegmentsOnly","getIntersectionSegments","getIntersections","findAllIntersections","keepIntersections","isSameSegString","isEndSegment","isInteriorInt","isInteriorVertexInt","isInteriorIntersectionsOnly","FastNodingValidator","getErrorMessage","intSegs","EdgeNodingValidator","_nv","toSegmentStrings","LineBuilder","_op","_lineEdgesList","_resultLineList","ptLocator","collectLines","getGraph","collectLineEdge","collectBoundaryTouchEdge","labelIsolatedLine","buildLines","isCoveredByA","labelIsolatedLines","edgesList","PointBuilder","_resultPointList","filterCoveredNodeToPoint","isCoveredByLA","extractNonCoveredResultNodes","_resultGeom","_resultPolyList","gov","createEmptyResult","UNION","INTERSECTION","MapOp","SYMDIFFERENCE","dim0","dim1","resultDimension","DIFFERENCE","overlayOpCode","resultDim","loc0","loc1","isResultOfOp","cancelDuplicateResultEdges","resultPointList","resultLineList","opcode","replaceCollapsedEdges","newEdges","updateNodeLabelling","computeOverlay","insertUniqueEdges","copyPoints","baseSplitEdges","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","lineBuilder","pointBuilder","labelIncompleteNode","minShell","minShellEnv","tryShell","tryShellRing","sortShellsAndHoles","edgeRings","freeHoleList","computePolygons","placeFreeHoles","findEdgeRingContaining","buildMinimalEdgeRings","maxEdgeRings","findShell","placePolygonHoles","buildMaximalEdgeRings","shellCount","LineStringSnapper","_snapTolerance","_srcPts","_allowSnappingToSourceVertices","_isClosed","srcPts","snapVertices","srcCoords","srcPt","snapVert","findSnapForVertex","snapSegments","distinctPtCount","findSegmentIndexToSnap","snapIndex","setAllowSnappingToSourceVertices","allowSnappingToSourceVertices","GeometrySnapper","_srcGeom","srcGeom","snapGeom","snapper0","snapper1","computeSizeBasedSnapTolerance","fixedSnapTol","computeOverlaySnapTolerance","minDimension","SNAP_PRECISION_FACTOR","cleanResult","snapToSelf","extractTargetCoordinates","snapTrans","SnapTransformer","snappedGeom","computeSnapTolerance","ringPts","computeMinimumSegmentLength","ptSet","minSegLen","segLen","_snapPts","_isSelfSnap","isSelfSnap","snapLine","snapper","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","CommonBits","signExpBits","numSignExp","numCommonMostSigMantissaBits","zeroLowerBits","padStr","bitStr","num1","num2","getBit","CommonBitsRemover","_commonCoord","_ccFilter","CommonCoordinateFilter","addCommonBits","Translater","removeCommonBits","invCoord","getCommonCoordinate","_commonBitsX","_commonBitsY","SnapOverlayOp","_cbr","overlayOp","selfSnap","remGeom","prepareResult","prepGeom","isSuccess","savedException","createEdgeEndForNext","eiCurr","eiNext","createEdgeEndForPrev","EdgeEndBundle","_edgeEnds","computeLabelOn","foundInterior","computeLabelSide","computeLabelSides","eb","RelateNode","EdgeEndBundleStar","ConnectedInteriorTester","_geomGraph","_disconnectedRingcoord","visitInteriorRing","findDifferentPoint","intDe","visitLinkedDirectedEdges","visitShellInteriors","setInteriorEdgesInResult","startDe","buildEdgeRings","hasUnvisitedShellEdge","isInteriorsConnected","RelateNodeGraph","nodeIt","eeList","edgeIt","ConsistentAreaTester","_nodeGraph","isNodeEdgeAreaLabelsConsistent","hasDuplicateRings","eeb","isNodeConsistentArea","IndexedNestedRingTester","_rings","_totalEnv","_nestedPt","getNestedPoint","isNonNested","innerRing","innerRingPts","searchRing","searchRingPts","innerRingPt","TopologyValidationError","_errorType","getErrorType","errMsg","locStr","REPEATED_POINT","HOLE_OUTSIDE_SHELL","NESTED_HOLES","DISCONNECTED_INTERIOR","SELF_INTERSECTION","RING_SELF_INTERSECTION","NESTED_SHELLS","DUPLICATE_RINGS","TOO_FEW_POINTS","INVALID_COORDINATE","RING_NOT_CLOSED","_parentGeometry","_isSelfTouchingRingFormingHoleValid","_validErr","parentGeometry","testCoords","checkInvalidCoordinates","checkHolesNotNested","nestedTester","innerHole","checkConsistentArea","checkShellInsideHole","shellPts","holePts","shellPt","findPtNotNode","holePt","checkNoSelfIntersectingRings","checkNoSelfIntersectingRing","checkConnectedInteriors","cit","checkHolesInShell","isShellEmpty","pir","checkTooFewPoints","getValidationError","checkClosedRing","checkClosedRings","checkShellsNotNested","setSelfTouchingRingFormingHoleValid","checkShellNotNested","polyShell","badNestedPt","AssertionFailedException","shouldNeverReachHere","expectedValue","documentIsAccessible","isPlatformBrowser","escapedName","encodedURIComponent","getCookieRegExp","safeDecodeURIComponent","currentCookie","expiresOrOptions","sameSite","toUTCString","expiresDate","deleteAll","DIR_DOCUMENT","RTL_LOCALE_PATTERN","hasV8BreakIterator","htmlDir","_resolveDirectionality","BidiModule","PortalModule","v8BreakIterator","rtlScrollAxisType","_platformId","EDGE","TRIDENT","BLINK","IOS","ANDROID","SAFARI","PlatformModule","scrollContainer","containerStyle","contentStyle","fallbackValue","_isNumberValue","SMOOTH_SCROLL_OPTIONS","SmoothScrollManager","customDefaultOptions","_onGoingScrolls","_defaultOptions","_now","_scrollElement","_getElement","elementOrRef","coerceElement","_initSmoothScroll","_isFinished","currentY","_interrupted","_destroy","_applyScrollToOptions","BezierEasing","currContext","customOptions","getRtlScrollAxisType","scrollableEl","targetEl","SmoothScrollModule","onselectstart","ScrollViewport","scrollMaxX","scrollMaxY","contentWrapperElement","activatePointerEvents","mouseMoveStream","mouseMove","mouseLeave","clicked","mouseUp","setAsWrapper","setAsViewport","customClassName","scrollYTo","scrollXTo","NgScrollbarBase","NG_SCROLLBAR_OPTIONS","viewClass","trackClass","thumbClass","appearance","pointerEventsMethod","trackClickScrollDuration","minThumbSize","windowResizeDebounce","sensorDebounce","scrollAuditTime","viewportPropagateMouseMove","autoHeightDisabled","autoWidthDisabled","sensorDisabled","pointerEventsDisabled","ScrollbarManager","globalOptions","TrackAdapter","trackElement","preventSelection","enableSelection","onTrackClicked","thumbSize","scrollSize","pluck","pageProperty","pageOffset","mapToScrollToOption","coerceNumberProperty","Document","TrackXDirective","TrackYDirective","ThumbAdapter","thumbElement","_dragging","trackMax","scrollbarRatio","calculateThumbSize","viewportScrollSize","scrollMax","calculateThumbPosition","viewportScrollOffset","viewportScrollMax","updateStyles","handleDirection","dragged","trackMaxStart","scrollMaxStart","dragStartOffset","mouseDownOffset","clientProperty","mouseOffset","ThumbXDirective","horizontalDragging","ThumbYDirective","verticalDragging","Scrollbar","thumbDragEvent","trackClickEvent","trackHoveredEvent","viewportTrackClicked","viewportThumbClicked","isWithinBounds","thumb","setClicked","setHovered","mouseEnter","scrolled","ScrollbarY","verticalHovered","ScrollbarX","horizontalHovered","NgAttr","ngAttr","ResizeSensor","scrollbar","_currentSubscription","_debounce","coerceBooleanProperty","_unsubscribe","_resizeObserver","NativeScrollbarSizeFactory","_scrollbarSize","getNativeScrollbarSize","scrollbarSize","HideNativeScrollbar","hideNativeScrollbar","_subscriber","smoothScroll","_sensorDisabled","_pointerEventsDisabled","_autoHeightDisabled","_autoWidthDisabled","_viewportPropagateMouseMove","verticalUsed","horizontalUsed","isVerticallyScrollable","isHorizontallyScrollable","deactivated","getScrolledByDirection","scrollbarClicked","customViewPort","defaultViewPort","scrollStream","verticalScrolled","horizontalScrolled","updateHeight","scrollbarX","scrollbarY","i2$1","i9"],"sources":["./projects/invoker-transport/src/lib/actions/evaluation/soilsample.field.action.ts","./projects/invoker-transport/src/lib/generated/backend.enums.ts","./src/app/ap-core/ap-core.module.ts","./src/app/ap-core/components/ap-breadcrumps-stepper/ap-breadcrumbs-steper.component.html","./src/app/ap-core/components/ap-breadcrumps-stepper/ap-breadcrumbs-steper.component.ts","./src/app/ap-core/components/ap-grid-multi-select/ap-grid-multi-select.component.html","./src/app/ap-core/components/ap-grid-multi-select/ap-grid-multi-select.component.ts","./src/app/ap-core/components/ap-grid-page-size/ap-grid-page-size.component.html","./src/app/ap-core/components/ap-grid-page-size/ap-grid-page-size.component.ts","./src/app/ap-core/components/ap-grid-pager-numeric/ap-grid-pager-numeric.component.html","./src/app/ap-core/components/ap-grid-pager-numeric/ap-grid-pager-numeric.component.ts","./src/app/ap-core/components/ap-grid-pager/ap-grid-pager.component.html","./src/app/ap-core/components/ap-grid-pager/ap-grid-pager.component.ts","./src/app/ap-core/components/ap-grid-wizard/ap-grid-wizard.component.html","./src/app/ap-core/components/ap-grid-wizard/ap-grid-wizard.component.ts","./src/environments/version.ts","./src/app/ap-core/config.ts","./src/app/ap-core/directives/ap-responsive.directive.ts","./src/app/ap-core/error-handling/ap-errorhandler.service.ts","./src/app/ap-core/error-handling/ap-errorhandler.action.ts","./src/app/ap-core/services/ap-date-service.ts","./node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/@microsoft/signalr/dist/esm/HeaderNames.js","./node_modules/@microsoft/signalr/dist/esm/HttpClient.js","./node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/Errors.js","./node_modules/@microsoft/signalr/dist/esm/ILogger.js","./node_modules/@microsoft/signalr/dist/esm/Loggers.js","./node_modules/@microsoft/signalr/dist/esm/Utils.js","./node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/ITransport.js","./node_modules/@microsoft/signalr/dist/esm/AbortController.js","./node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","./node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","./node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","./node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","./node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","./node_modules/@microsoft/signalr/dist/esm/Subject.js","./node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js","./node_modules/@microsoft/signalr/dist/esm/HubConnection.js","./node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","./node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","./src/app/ap-core/services/ap-signalr.service.ts","./src/app/ap-core/services/ap-window-helper.service.ts","./src/app/ap-core/utils/ap-css-value.parser.ts","./src/app/ap-core/utils/ap-name-of.ts","./src/app/ap-dyncomponent/ap-dyncomponent.component.html","./src/app/ap-dyncomponent/ap-dyncomponent.component.ts","./src/app/ap-dyncomponent/ap-dyncomponent.module.ts","./src/app/ap-dynforms/ap-dynforms-validations.ts","./src/app/ap-dynforms/ap-dynforms-validator.ts","./src/app/ap-dynforms/ap-dynforms-config.service.ts","./src/app/ap-dynforms/ap-dynforms.component.html","./src/app/ap-dynforms/ap-dynforms.component.ts","./src/app/ap-dynforms/ap-dynforms-element.component.html","./src/app/ap-dynforms/ap-dynforms-element.component.ts","./src/app/ap-dynforms/ap-dynforms-array.component.html","./src/app/ap-dynforms/ap-dynforms-array.component.ts","./src/app/ap-dynforms/sanitize-id.pipe.ts","./src/app/ap-dynforms/ap-dynforms-date-range.component.html","./src/app/ap-dynforms/ap-dynforms-date-range.component.ts","./src/app/ap-dynforms/services/password-strength.service.ts","./src/app/ap-dynforms/components/password-strength.component.ts","./src/app/ap-dynforms/derectives/ap-file-upload.derectives.ts","./src/app/services/common/media-file.service.ts","./src/app/ap-dynforms/services/ap-file-upload-html.service.ts","./src/app/ap-dynforms/services/ap-file-upload-fake-stream.service.ts","./src/app/ap-dynforms/components/ap-file-upload/ap-file-upload.component.html","./src/app/ap-dynforms/components/ap-file-upload/ap-file-upload.component.ts","./src/app/ap-dynforms/interceptors/ap-file-upload.interceptor.ts","./src/app/ap-dynforms/ap-control-blink.directive.ts","./src/app/ap-dynforms/ap-dynforms.module.ts","./src/app/ap-dynforms/config/ap-dynforms-config-base.ts","./src/app/ap-dynforms/config/ap-dynforms-config-button.ts","./src/app/ap-dynforms/config/ap-dynforms-config-checkbox.ts","./src/app/ap-dynforms/config/ap-dynforms-config-combobox.ts","./src/app/ap-dynforms/config/ap-dynforms-config-datepicker.ts","./src/app/ap-dynforms/config/ap-dynforms-config-fieldset.ts","./src/app/ap-dynforms/config/ap-dynforms-config-multiselect.ts","./src/app/ap-dynforms/config/ap-dynforms-config-numerictextbox.ts","./src/app/ap-dynforms/config/ap-dynforms-config-placeholder.ts","./src/app/ap-dynforms/config/ap-dynforms-config-tabs.ts","./src/app/ap-dynforms/config/ap-dynforms-config-template.ts","./src/app/ap-dynforms/config/ap-dynforms-config-textarea.ts","./src/app/ap-dynforms/config/ap-dynforms-config-textbox.ts","./src/app/ap-dynforms/config/ap-dynforms-config-timepicker.ts","./src/app/ap-dynforms/config/ap-dynforms-config-upload.ts","./src/app/ap-dynforms/services/ap-file-upload-component.service.ts","./src/app/ap-dynforms/validators/ap-date-range-validator.ts","./src/app/ap-dynforms/validators/ap-validator.ts","./src/app/ap-core/extensions/kendo/ap-kendo-grid-extension.ts","./src/app/ap-dyngrids/ap-dyngrids-excel.service.ts","./src/app/ap-dyngrids/ap-dyngrids.component.html","./src/app/ap-dyngrids/ap-dyngrids.component.ts","./src/app/ap-dyngrids/pipes/convert/as-class-color.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-button.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-edit.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-group.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-property.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-status.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-button-group.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-color.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-image.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-status-switch.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-wizard.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-wizard-breadcrumps-stepper.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-details-grid.pipe.ts","./src/app/ap-dyngrids/pipes/is-hidden.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-template.pipe.ts","./src/app/ap-utils/components/ap-date-range-filter.component.ts","./src/app/ap-utils/components/ap-date-range-filter.component.html","./src/app/ap-utils/components/ap-multi-select-filter.component.ts","./src/app/ap-utils/components/ap-multi-select-filter.component.html","./src/app/ap-utils/components/ap-checkbox-filter.component.html","./src/app/ap-utils/components/ap-checkbox-filter.component.ts","./src/app/ap-utils/components/ap-number-list-filter.component.ts","./src/app/ap-utils/components/ap-number-list-filter.component.html","./src/app/ap-utils/components/ap-object-filter.component.ts","./src/app/ap-utils/components/ap-object-filter.component.html","./src/app/ap-dyngrids/pipes/getter/get-text.pipe.ts","./src/app/ap-dyngrids/pipes/dynamic-cell.pipe.ts","./src/app/ap-dyngrids/components/ap-property-column.component.ts","./src/app/ap-dyngrids/pipes/get-template-context.pipe.ts","./src/app/ap-dyngrids/components/ap-template-column.component.ts","./src/app/ap-utils/components/ap-status-switch-filter.component.html","./src/app/ap-utils/components/ap-status-switch-filter.component.ts","./src/app/ap-status-switch/components/ap-status-switch.component.html","./src/app/ap-status-switch/components/ap-status-switch.component.ts","./src/app/ap-dyngrids/components/ap-status-switch-column.component.ts","./src/app/ap-dyngrids/components/ap-color-column.component.ts","./src/app/ap-dyngrids/components/ap-image-column.component.ts","./src/app/ap-dyngrids/components/ap-class-color-column.component.ts","./src/app/ap-dyngrids/components/ap-button-column.component.ts","./src/app/ap-dyngrids/components/ap-button-group-column.component.ts","./src/app/ap-dyngrids/components/ap-edit-column.component.ts","./src/app/ap-dyngrids/pipes/convert/as-icon.pipe.ts","./src/app/ap-dyngrids/ap-dyngrids.module.ts","./src/app/ap-utils/components/ap-status-filter.component.html","./src/app/ap-utils/components/ap-status-filter.component.ts","./src/app/ap-dyngrids/pipes/id-in.pipe.ts","./src/app/ap-dyngrids/pipes/translate-kendo-state.pipe.ts","./src/app/ap-dyngrids/components/ap-status-column.component.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-button-column-config.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-column-config-base.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-edit-column-config.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-group-column-config.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-image-column-config.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-pager-config-base.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-pager-config.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-pager-wizard-config.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-property-column-config.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-status-column-config.ts","./src/app/ap-dyngrids/config/ap-dyn-grid-status-switch-column.config.ts","./src/app/ap-dyngrids/config/details/ap-dyn-grid-details-base-config.ts","./src/app/ap-dyngrids/config/details/ap-dyn-grid-details-grid-config.ts","./src/app/ap-dyngrids/pipes/center-cell.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-pager.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-wizard-button.pipe.ts","./src/app/ap-dyngrids/pipes/convert/as-wizard-export.pipe.ts","./src/app/ap-dyngrids/pipes/exec.pipes.pipe.ts","./src/app/ap-dyngrids/pipes/getter/get-property.pipe.ts","./src/app/ap-dyngrids/services/center-cell.service.ts","./src/app/ap-interface/enums/ap-agriport-constants.enum.ts","./src/app/ap-interface/enums/ap-application-mode.enums.ts","./src/app/ap-interface/enums/ap-charttype.enum.ts","./src/app/ap-interface/enums/ap-column-state.enum.ts","./src/app/ap-interface/enums/ap-elementoxydtype.enum.ts","./src/app/ap-interface/enums/ap-elements-type.enum.ts","./src/app/ap-interface/enums/ap-feature-modul-key.enum.ts","./src/app/ap-interface/enums/ap-grid-pager-type.enum.ts","./src/app/ap-interface/enums/ap-legend-ids.enum.ts","./src/app/ap-interface/enums/ap-menu-urls.enum.ts","./src/app/ap-interface/enums/ap-operation-mode.enum.ts","./src/app/ap-interface/enums/ap-visible-states.enum.ts","./src/app/ap-interface/enums/layout/mapview.enum.ts","./src/app/ap-interface/enums/layout/page.enum.ts","./src/app/ap-interface/enums/layout/sidebar.enum.ts","./src/app/ap-interface/interfaces/ap-modaldialog-data.interface.ts","./node_modules/jsts/org/locationtech/jts/algorithm/InteriorPointArea.js","./node_modules/jsts/org/locationtech/jts/operation/union/PointGeometryUnion.js","./node_modules/jsts/org/locationtech/jts/operation/union/InputExtracter.js","./node_modules/jsts/org/locationtech/jts/operation/union/OverlapUnion.js","./node_modules/jsts/org/locationtech/jts/operation/union/CascadedPolygonUnion.js","./node_modules/jsts/org/locationtech/jts/operation/union/UnaryUnionOp.js","./node_modules/jsts/org/locationtech/jts/algorithm/Centroid.js","./node_modules/jsts/org/locationtech/jts/algorithm/InteriorPointLine.js","./node_modules/jsts/org/locationtech/jts/operation/IsSimpleOp.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferParameters.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/RightmostEdgeFinder.js","./node_modules/jsts/java/util/LinkedList.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferSubgraph.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferInputLineSimplifier.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetSegmentString.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetSegmentGenerator.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetCurveBuilder.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/SubgraphDepthLocater.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/OffsetCurveSetBuilder.js","./node_modules/jsts/org/locationtech/jts/noding/IntersectionAdder.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferBuilder.js","./node_modules/jsts/org/locationtech/jts/noding/ScaledNoder.js","./node_modules/jsts/org/locationtech/jts/noding/NodingValidator.js","./node_modules/jsts/org/locationtech/jts/noding/snapround/HotPixel.js","./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainSelectAction.js","./node_modules/jsts/org/locationtech/jts/noding/snapround/MCIndexPointSnapper.js","./node_modules/jsts/org/locationtech/jts/noding/InteriorIntersectionFinderAdder.js","./node_modules/jsts/org/locationtech/jts/noding/snapround/MCIndexSnapRounder.js","./node_modules/jsts/org/locationtech/jts/operation/buffer/BufferOp.js","./node_modules/jsts/org/locationtech/jts/util/UniqueCoordinateArrayFilter.js","./node_modules/jsts/org/locationtech/jts/algorithm/ConvexHull.js","./node_modules/jsts/org/locationtech/jts/operation/relate/RelateComputer.js","./node_modules/jsts/org/locationtech/jts/operation/predicate/RectangleContains.js","./node_modules/jsts/org/locationtech/jts/algorithm/RectangleLineIntersector.js","./node_modules/jsts/org/locationtech/jts/operation/predicate/RectangleIntersects.js","./node_modules/jsts/org/locationtech/jts/operation/relate/RelateOp.js","./node_modules/jsts/org/locationtech/jts/algorithm/InteriorPointPoint.js","./node_modules/jsts/org/locationtech/jts/operation/distance/GeometryLocation.js","./node_modules/jsts/org/locationtech/jts/operation/distance/ConnectedElementLocationFilter.js","./node_modules/jsts/org/locationtech/jts/operation/distance/DistanceOp.js","./node_modules/jsts/org/locationtech/jts/operation/BoundaryOp.js","./node_modules/jsts/org/locationtech/jts/monkey.js","./node_modules/ol/control/FullScreen.js","./node_modules/ol/control/ScaleLine.js","./src/app/ap-map/ap-map.instance.ts","./src/app/ap-map/geometry.checker.ts","./node_modules/ol/geom/Circle.js","./node_modules/ol/interaction/Draw.js","./node_modules/ol/interaction/Snap.js","./node_modules/ol/interaction/Modify.js","./node_modules/ol/interaction/Translate.js","./src/app/ap-map/ol.helper.ts","./node_modules/jsts/org/locationtech/jts/geom/util/NoninvertibleTransformationException.js","./node_modules/jsts/org/locationtech/jts/geom/util/AffineTransformation.js","./node_modules/jsts/org/locationtech/jts/geom/util/GeometryEditor.js","./node_modules/jsts/org/locationtech/jts/geom/util/LineStringExtracter.js","./node_modules/jsts/org/locationtech/jts/util/GeometricShapeFactory.js","./node_modules/jsts/org/locationtech/jts/planargraph/GraphComponent.js","./node_modules/jsts/org/locationtech/jts/planargraph/DirectedEdge.js","./node_modules/jsts/org/locationtech/jts/operation/polygonize/PolygonizeDirectedEdge.js","./node_modules/jsts/org/locationtech/jts/planargraph/Edge.js","./node_modules/jsts/org/locationtech/jts/planargraph/DirectedEdgeStar.js","./node_modules/jsts/org/locationtech/jts/planargraph/Node.js","./node_modules/jsts/org/locationtech/jts/operation/polygonize/PolygonizeEdge.js","./node_modules/jsts/org/locationtech/jts/operation/polygonize/EdgeRing.js","./node_modules/jsts/org/locationtech/jts/planargraph/NodeMap.js","./node_modules/jsts/org/locationtech/jts/planargraph/PlanarGraph.js","./node_modules/jsts/org/locationtech/jts/operation/polygonize/PolygonizeGraph.js","./node_modules/jsts/org/locationtech/jts/operation/polygonize/HoleAssigner.js","./node_modules/jsts/org/locationtech/jts/operation/polygonize/Polygonizer.js","./src/app/ap-map/geometry.editor.ts","./src/app/ap-map/layers/ap-fields.layer.ts","./src/app/ap-map/enums/ap-properties-strings.ts","./src/app/ap-map/layers/ap-fungi-detect.layer.ts","./src/app/ap-map/layers/ap-location.layer.ts","./src/app/ap-map/layers/track-property-names.ts","./src/app/ap-map/layers/ap-contact.layer.ts","./src/app/ap-map/interactions.ts","./node_modules/ol/layer/BaseTile.js","./node_modules/ol/layer/Tile.js","./src/app/ap-map/layers/ap-base-tile.layer.ts","./src/app/ap-map/layers/ap-vector.selection.ts","./src/app/ap-map/layers/ap-base-vector.layer.ts","./src/app/ap-map/layers/animations/pingLocation.ts","./src/app/ap-map/layers/ap-base.layer.ts","./node_modules/ol/source/BingMaps.js","./node_modules/ol/net.js","./src/app/ap-map/layers/ap-bing.layer.ts","./src/app/ap-map/layers/ap-edit-styles.ts","./src/app/ap-map/layers/ap-fields.style.ts","./src/app/ap-map/layers/ap-geo-points.layer.ts","./src/app/ap-map/layers/ap-map-control.stream.ts","./src/app/ap-map/layers/ap-map.settings.ts","./src/app/ap-map/layers/ap-map.views.ts","./src/app/ap-map/layers/ap-polygon-edit.layer.ts","./src/app/ap-map/layers/layer-names.ts","./src/app/ap-map/layers/layer-z-index.ts","./src/app/ap-utils/service/value.calculations.ts","./src/app/ap-map/layers/layer.legends.ts","./node_modules/ol/renderer/canvas/ImageLayer.js","./node_modules/ol/ImageCanvas.js","./node_modules/ol/renderer/canvas/VectorImageLayer.js","./node_modules/ol/layer/VectorImage.js","./src/app/ap-map/layers/map-factory-layer.ts","./src/app/ap-map/utils/ap-distribution-class-colors.ts","./src/app/ap-map/utils/n-fertilization-legend.ts","./src/app/ap-permission/ap-permission.module.ts","./src/app/ap-permission/pipes/get-permission.pipe.ts","./src/app/ap-responsive-text/ap-responsive-text.module.ts","./src/app/ap-responsive-text/ap-responsive-text/ap-responsive-text.component.html","./src/app/ap-responsive-text/ap-responsive-text/ap-responsive-text.component.ts","./src/app/ap-section-header/ap-section-header.module.ts","./src/app/ap-section-header/components/ap-section-header-grid/ap-section-header-grid.component.html","./src/app/ap-section-header/components/ap-section-header-grid/ap-section-header-grid.component.ts","./src/app/ap-section-header/components/ap-section-header/ap-section-header.component.html","./src/app/ap-section-header/components/ap-section-header/ap-section-header.component.ts","./src/app/ap-status-switch/ap-status-switch.module.ts","./src/app/ap-tooltip/ap-tooltip.directive.ts","./src/app/ap-tooltip/ap-tooltip.module.ts","./src/app/ap-tooltip/ap-tooltip.service.ts","./src/app/ap-utils/components/ap-class-color-filter.component.html","./src/app/ap-utils/components/ap-class-color-filter.component.ts","./src/app/ap-utils/components/ap-number-filter.component.ts","./src/app/ap-utils/components/ap-number-filter.component.html","./src/app/ap-utils/components/ap-svg.component.ts","./src/app/ap-utils/components/ap-svg.component.html","./src/app/ap-utils/enums/ApCalendarView.ts","./src/app/ap-utils/pipes/get-boolean.pipe.ts","./src/app/ap-utils/pipes/area-unit-converter.pipe.ts","./src/app/ap-utils/pipes/get-soil-sample-field-class-color.pipe.ts","./src/app/ap-utils/pipes/get-soil-sample-class-names.pipe.ts","./src/app/ap-utils/pipes/ap-plant-protection-typemapping.pipe.ts","./src/app/ap-utils/pipes/get-soil-sample-field-color.pipe.ts","./src/app/ap-utils/pipes/ap-convert-base64-to-png.pipe.ts","./src/app/ap-utils/pipes/ap-factor.pipe.ts","./src/app/ap-utils/ap-utils.module.ts","./src/app/ap-utils/static/ap-time-span-util.ts","./src/app/ap-utils/static/ap-guid-util.ts","./src/app/ap-utils/extensions/ap-geometry.extension.ts","./src/app/ap-utils/extensions/ap-lodash-extension.ts","./src/app/ap-utils/injector.ts","./src/app/ap-utils/pipes/ap-custom-format.pipe.ts","./src/app/ap-utils/pipes/ap-safe-domsanitizer.pipe.ts","./src/app/ap-utils/pipes/configs/get-round-numeric.pipe.config.ts","./src/app/ap-utils/pipes/exec-function.pipe.ts","./src/app/ap-utils/pipes/get-countrycode-flag.pipe.ts","./src/app/ap-utils/pipes/get-element-oxid-calculate.pipe.ts","./src/app/ap-utils/pipes/get-kendo-date-format.pipe.ts","./src/app/ap-utils/pipes/get-replace.pipe.ts","./src/app/ap-utils/pipes/get-round-numeric.pipe.ts","./src/app/ap-utils/pipes/get-statistic-keys.pipe.ts","./src/app/ap-utils/pipes/soil-group-format.pipe.ts","./src/app/ap-utils/service/ap-factor.service.ts","./src/app/ap-utils/service/ap-field-format.service.ts","./src/app/ap-utils/service/ap-get-applicationmode.service.ts","./src/app/ap-utils/service/ap-get-element.service.ts","./src/app/ap-utils/service/ap-nutrient-management-date.service.ts","./src/app/ap-utils/service/ap-nutrient.service.ts","./src/app/ap-utils/service/ap-show-track-on-map.service.ts","./src/app/ap-utils/service/ap-tooltip-content.service.ts","./src/app/ap-utils/service/ap-translation.service.ts","./src/app/ap-utils/service/ap-util.service.ts","./src/app/ap-utils/service/get-round-numeric.service.ts","./src/app/ap-utils/service/get-soil-sample-class-color.service.ts","./src/app/ap-utils/service/soil-group-format.service.ts","./src/app/ap-utils/static/ap-base64-util.ts","./src/app/ap-utils/static/ap-defined.ts","./src/app/debug-utils/ApplicationTracer.ts","./src/app/docu/components/ap-fleetmanagement.component.ts","./src/app/ap-dynforms/config/ap-dynforms-config-date-range.ts","./src/app/ap-dynforms/validators/ap-form-validators.ts","./src/app/docu/services/track.loader.service.ts","./src/app/docu/components/ap-action-lookup.component.ts","./src/app/booking/ap-booking-utils.ts","./src/app/ap-dynforms/config/ap-dynforms-config-array.ts","./src/app/ap-dynforms/validators/ap-dates-overlap-validator.ts","./src/app/booking/components/ap-booking.component.ts","./src/app/booking/components/ap-booking-archive.component.ts","./src/app/docu/ap-docu.routes.ts","./src/app/docu/components/ap-field-works-overview.component.ts","./src/app/docu/ap-docu.module.ts","./src/app/docu/utils/ap-docu-utils.ts","./src/app/entry-components/ap-administration-entry-components/ap-jobs-edit.component.ts","./src/app/entry-components/ap-administration-entry-components/ap-parameter-definition-edit.component.ts","./src/app/entry-components/ap-administration-entry-components/ap-translations-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-drivers-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-fertilizer-inorgs-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-fertilizer-orgs-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-instruments-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-machines-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-subfarms-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-user-contacts-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-users-assignment-farm-edit.component.ts","./src/app/entry-components/ap-basedata-entry-components/ap-users-invitation-edit.component.ts","./src/app/docu/components/ap-action-applications.component.ts","./src/app/docu/components/ap-action-applications.component.html","./src/app/entry-components/ap-docu-entry-components/ap-edit-action.component.ts","./src/app/entry-components/ap-dynamic-component-loader/host.directive.ts","./src/app/entry-components/index.ts","./src/app/entry-components/ap-dynamic-component-loader/ap-dynamic-component-loader.component.ts","./src/app/entry-components/ap-dynamic-component-loader/ap-dynamic-component-loader.module.ts","./src/app/entry-components/ap-field-management-entry-components/ap-edit-field.component.ts","./src/app/ap-utils/service/get-numeric.service.ts","./src/app/entry-components/ap-field-management-entry-components/ap-merge-field.component.ts","./src/app/entry-components/ap-field-management-entry-components/ap-monitoring-detail/ap-monitoring-detail-entry.component.ts","./src/app/stores/agronomic/monitoring-rules.store.ts","./src/app/entry-components/ap-field-management-entry-components/ap-monitoring-detail/monitoring-detail-entry.config.ts","./src/app/entry-components/ap-field-management-entry-components/ap-monitoring-field/monitoring-field-entry.config.ts","./src/app/entry-components/ap-field-management-entry-components/ap-monitoring-field/ap-monitoring-field-entry.component.ts","./src/app/entry-components/ap-field-management-entry-components/ap-split-field.component.ts","./src/app/entry-components/ap-n-fertilization-entry-components/services/n-fertilization-common-entry.service.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrient-booking.component.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning-configs/base-planning-entry-service.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning-configs/nutrient-planning-types.ts","./src/app/ap-interface/enums/ap-nutrient-wizard-setup.enums.ts","./src/app/ap-interface/enums/ap-nutrient-groups.enum.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning-configs/nutrient-planning-entry.service.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning-configs/nutrient-planning-entry-selection-step.service.ts","./src/app/ap-dynforms/validators/ap-number-range-validator.ts","./src/app/ap-dynforms/validators/ap-date-min-max-validator.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning-configs/nutrient-planning-entry-details-step.service.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning-configs/nutrient-planning-entry-overview-step.service.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning.component.ts","./src/app/entry-components/ap-parameter-entry-components/ap-parameter-value-history.component.ts","./src/app/entry-components/ap-parameter-entry-components/ap-parameter-entry-components.module.ts","./src/app/entry-components/ap-parameter-entry-components/ap-parameter-value.component.ts","./src/app/entry-components/ap-parameter-entry-components/ap-parameter.component.html","./src/app/entry-components/ap-parameter-entry-components/ap-parameter.component.ts","./src/app/entry-components/ap-settings-entry-components/ap-logger-edit.component.ts","./src/app/entry-components/ap-settings-entry-components/ap-machines-logger-edit.component.ts","./src/app/entry-components/ap-settings-entry-components/ap-settings-edit.component.ts","./src/app/entry-components/ap-settings-entry-components/ap-users-edit.component.ts","./src/app/ap-utils/directives/grid-drag-and-drop.directive.ts","./src/app/entry-components/burger-menu-entry-components/burger-menu-entry-components.module.ts","./src/app/entry-components/burger-menu-entry-components/map-layer-control.component.html","./src/app/entry-components/burger-menu-entry-components/map-layer-control.component.ts","./src/app/entry-components/burger-menu-entry-components/n-fertilization-burger-menu.component.html","./src/app/entry-components/burger-menu-entry-components/n-fertilization-burger-menu.component.ts","./src/app/entry-components/color-legend-entry-components/n-fertilization-property.component.ts","./src/app/entry-components/color-legend-entry-components/n-fertilization-property.component.html","./src/app/entry-components/color-legend-entry-components/color-legend-entry-components.module.ts","./src/app/entry-components/color-legend-entry-components/field-distribution-legend-selector.component.ts","./src/app/entry-components/color-legend-entry-components/track-property.component.ts","./src/app/entry-components/plant-protection-entry-components/planning-wizard/configs/ui-providers/details.common.ui-provider.ts","./src/app/entry-components/plant-protection-entry-components/planning-wizard/configs/ui-providers/details.target-rate-map-per-field.ui-provider.ts","./src/app/entry-components/plant-protection-entry-components/planning-wizard/configs/ui-providers/details.target-rate-map-per-plan.ui-provider.ts","./src/app/entry-components/plant-protection-entry-components/planning-wizard/configs/ui-providers/details.target-rate.ui-provider.ts","./src/app/entry-components/plant-protection-entry-components/planning-wizard/configs/ui-providers/details.uniform.ui-provider.ts","./src/app/entry-components/plant-protection-entry-components/planning-wizard/configs/ui-providers/overview.grid-columns.ui-provider.ts","./src/app/entry-components/plant-protection-entry-components/planning-wizard/configs/ui-providers/selection.grid-columns.ui-provider.ts","./src/app/entry-components/plant-protection-entry-components/planning-wizard/pp-planning-wizard.types.ts","./src/app/factories/field-factory.service.ts","./src/app/field-management/components/field.service.ts","./src/app/field-management/services/ndi.service.ts","./src/app/guards/ap-deactivate.guard.ts","./src/app/guards/ap-developer-guard.ts","./src/app/guards/ap-invitations-guard.ts","./src/app/guards/ap-permission-guard.service.ts","./src/app/help/ap-help.routes.ts","./src/app/help/ap-help.module.ts","./src/app/help/components/ap-editor.schema.ts","./src/app/help/components/ap-help-image.upload.ts","./src/app/icons/ap-icon.module.ts","./src/app/icons/components/ap-help-icon.component.ts","./src/app/icons/components/ap-dashboard-icon.component.ts","./src/app/icons/components/ap-basedata-icon.component.ts","./src/app/icons/components/ap-upload-icon.component.ts","./src/app/icons/components/ap-fungidetect-icon.component.ts","./src/app/icons/components/ap-database-icon.component.ts","./src/app/icons/components/ap-file-icon.component.ts","./src/app/icons/components/ap-documentation-icon.component.ts","./src/app/icons/components/ap-contact-icon.component.ts","./src/app/icons/components/ap-legal-icon.component.ts","./src/app/icons/components/ap-imprint-icon.component.ts","./src/app/icons/components/ap-agreement-icon.component.ts","./src/app/icons/components/ap-exclamation-circle-regular-icon.component.ts","./src/app/icons/components/ap-exclamation-circle-solid-icon.component.ts","./src/app/icons/components/ap-check-circle-regular-icon.component.ts","./src/app/icons/components/ap-check-circle-solid-icon.component.ts","./src/app/icons/components/ap-times-circle-regular-icon.component.ts","./src/app/icons/components/ap-times-circle-solid-icon.component.ts","./src/app/icons/components/ap-ban-solid-icon.component.ts","./src/app/icons/components/ap-icon-administration.components.ts","./src/app/icons/components/ap-icon-base-fertilization.components.ts","./src/app/icons/components/ap-icon-booking.components.ts","./src/app/icons/components/ap-icon-collapse.components.ts","./src/app/icons/components/ap-icon-evaluation.components.ts","./src/app/icons/components/ap-icon-field-works.components.ts","./src/app/icons/components/ap-icon-fields.component.ts","./src/app/icons/components/ap-icon-import.components.ts","./src/app/icons/components/ap-icon-n-fertilization.components.ts","./src/app/icons/components/ap-icon-plant-protection.components.ts","./src/app/icons/components/ap-icon-seeding.components.ts","./src/app/icons/components/ap-icon-settings.components.ts","./src/app/icons/components/ap-icon-taks.components.ts","./src/app/icons/components/ap-icon-farm-records.component.ts","./src/app/icons/components/ap-info-icon-round.ts","./src/app/icons/components/ap-icon-selector.component.html","./src/app/icons/components/ap-icon-selector.component.ts","./src/app/icons/components/ap-map-icon.component.ts","./src/app/icons/components/ap-statistic-icon.component.ts","./src/app/layout/ap-layout.routes.ts","./src/app/modules/metrics/ap-metrics.module.ts","./src/app/layout/ap-layout.module.ts","./src/app/layout/components/ap-page-not-found.component.ts","./src/app/layout/components/ap-page-not-found.component.html","./src/app/layout/pipes/ap-menu/filter-by-string.pipe.ts","./node_modules/jwt-decode/build/jwt-decode.esm.js","./src/app/map-factory/authentication.ts","./node_modules/ol/VectorTile.js","./node_modules/ol/VectorRenderTile.js","./node_modules/ol/source/VectorTile.js","./node_modules/ol/render/Feature.js","./node_modules/ol/format/MVT.js","./src/app/map-factory/layer.factory.ts","./src/app/map-factory/map-factory-requestor.ts","./src/app/map-factory/style.ts","./src/app/map/ap-map.routes.ts","./src/app/map/components/layer-controller/get.layer.values.pipe.ts","./src/app/map/components/layer-controller/ap-legend-color-item.component.ts","./src/app/map/components/layer-controller/get.unit.value.pipe.ts","./src/app/map/components/layer-controller/pipes/get-legend-selection-values.pipe.ts","./src/app/map/ap-map.module.ts","./src/app/map/components/ap-map-tooltip.component.ts","./src/app/map/components/edit/ap-edit-tooltype.ts","./src/app/map/components/edit/editor.service.ts","./src/app/map/components/layer-controller/ap-legend-scroller-item.component.ts","./src/app/map/components/layer-controller/ap-legend-scroller.service.ts","./src/app/modules/metrics/actions.ts","./src/app/modules/metrics/ap-metric.service.ts","./src/app/nutrient-management/pipes/ap-get-croptype-name.pipe.ts","./src/app/nutrient-management/service/ap-nutrient-statistic.service.ts","./projects/invoker-transport/src/lib/actions/taskmanagement/basic.fertilisation.summaries.action.ts","./src/app/nutrient-management/service/base-fertilization-common.service.ts","./src/app/nutrient-management/service/nutrient-management.service.ts","./src/app/services/common/agriport-constants.service.ts","./src/app/services/common/ap-role-type.service.ts","./src/app/services/common/file.service.ts","./src/app/services/common/nuptake-calculation.service.ts","./src/app/services/common/upload-file.service.ts","./src/app/services/data/application-settings.service.ts","./src/app/services/data/base-fertilization.service.ts","./src/app/services/data/campaign-year.service.ts","./src/app/services/data/fertilization-management.service.ts","./src/app/services/data/fertilizer.service.ts","./src/app/services/data/license/license.service.ts","./src/app/services/data/logfiles.service.ts","./src/app/ap-utils/service/ap-string.service.ts","./src/app/services/data/n-fertilization-plant-protection.service.ts","./src/app/services/data/n-fertilization.service.ts","./src/app/services/data/sample.method.service.ts","./src/app/services/data/soil-sample-date.service.ts","./src/app/services/data/statistic.service.ts","./src/app/services/data/unit.service.ts","./src/app/services/router/remove-url-params.service.ts","./src/app/services/router/url-encoder.service.ts","./src/app/statistics/ap-statistics.routes.ts","./src/app/statistics/components/pipes/nutrient-stats-fields.pipe.ts","./src/app/statistics/components/pipes/join-property-value.pipe.ts","./src/app/statistics/components/views/nutrient-infos-view.component.ts","./src/app/statistics/components/pipes/field-soil-planning-year-to-simple-value-set.pipe.ts","./src/app/statistics/ap-statistics.module.ts","./src/app/statistics/components/charts/ap-generic-chart.types.ts","./src/app/statistics/components/charts/fields-crop-rotation-stats/fields-crop-rotation-stats.types.ts","./src/app/statistics/components/charts/nutrients.stats.component.html","./src/app/statistics/components/charts/nutrients.stats.component.ts","./src/app/statistics/components/charts/planning-wizard-overview-stats/ap-planning-wizard-overview-stats-types.ts","./src/app/statistics/components/pipes/info-view-style.pipe.ts","./src/app/statistics/services/statistic-chart-area.service.ts","./projects/invoker-transport/src/lib/actions/administration/jobs.action.ts","./src/app/stores/administration/jobs.store.ts","./src/app/stores/administration/kriging.store.ts","./src/app/stores/agronomic/application-settings-store.service.ts","./projects/invoker-transport/src/lib/actions/base-data/crop.groups.action.ts","./src/app/stores/base-data/crop.groups.store.ts","./src/app/stores/base-data/crop.types.store.ts","./src/app/stores/base-data/fertilizer.inorganic.store.ts","./src/app/stores/base-data/fertilizer.organic.store.ts","./projects/invoker-transport/src/lib/actions/base-data/fertilizer.action.ts","./src/app/stores/base-data/fertilizer.store.ts","./src/app/stores/base-data/landuse.store.ts","./src/app/stores/base-data/plantprotection.product.store.ts","./projects/invoker-transport/src/lib/actions/base-data/settings.action.ts","./src/app/stores/base-data/settings.store.ts","./src/app/stores/base-data/subfarm.store.ts","./projects/invoker-transport/src/lib/actions/base-data/terminals.action.ts","./src/app/stores/base-data/terminals.store.ts","./projects/invoker-transport/src/lib/actions/base-data/user.contacts.action.ts","./src/app/stores/base-data/user.contacts.store.ts","./src/app/stores/base-data/user.store.ts","./src/app/stores/base-data/variety.store.ts","./src/app/stores/base-data/worktype-unit.store.ts","./src/app/stores/base-data/worrktypes.store.ts","./src/app/stores/common/agriport-constants.store.ts","./src/app/stores/common/appl-modes.store.ts","./src/app/stores/common/country.store.ts","./src/app/stores/common/effective_ranges.store.ts","./src/app/stores/common/elements.store.ts","./src/app/stores/common/export-formats.store.ts","./src/app/stores/common/export-targets.store.ts","./src/app/stores/common/factors.store.ts","./projects/invoker-transport/src/lib/actions/common/notification.action.ts","./src/app/stores/common/notification.store.ts","./src/app/stores/common/nuptake-factors.store.ts","./src/app/stores/common/operation-modes.store.ts","./src/app/stores/common/units.store.ts","./src/app/stores/dashboard/news.store.ts","./src/app/stores/dialog/modal.dialog.presets.ts","./src/app/stores/dialog/modal.dialog.store.ts","./src/app/stores/dialog/notify.store.ts","./src/app/stores/docu/action.store.ts","./src/app/stores/docu/driver.machine.store.ts","./src/app/stores/docu/driver.store.ts","./src/app/stores/docu/fleet.action.attachment.store.ts","./src/app/stores/docu/geojson.store.ts","./src/app/stores/docu/instrument.store.ts","./src/app/stores/docu/logger.store.ts","./src/app/stores/docu/machine.breaks.store.ts","./src/app/stores/docu/machine.logger.store.ts","./src/app/stores/docu/machine.store.ts","./src/app/stores/docu/slice.store.ts","./src/app/stores/evaluation/soilsample.field.store.ts","./projects/invoker-transport/src/lib/actions/farm/crop.rotation.action.ts","./src/app/stores/farm/crop.rotation.store.ts","./src/app/stores/farm/farm.store.ts","./src/app/stores/farm/farm.users.store.ts","./projects/invoker-transport/src/lib/actions/farm/field-archive.action.ts","./src/app/stores/farm/field-archive.store.ts","./projects/invoker-transport/src/lib/actions/farm/field.action.ts","./src/app/stores/farm/field.store.ts","./src/app/stores/farm/license.store.ts","./src/app/stores/fields/monitoring-detail.store.ts","./src/app/stores/fields/monitoring-field.store.ts","./src/app/stores/fields/monitoring-type.store.ts","./projects/invoker-transport/src/lib/actions/import/import.action.ts","./src/app/stores/import/import.store.ts","./src/app/stores/index.ts","./src/app/stores/layout/form.store.ts","./src/app/stores/layout/mapview.store.ts","./src/app/stores/layout/menu.store.ts","./src/app/stores/local-cache.ts","./src/app/stores/login/campaignyear.store.ts","./projects/invoker-transport/src/lib/actions/login/invitation.action.ts","./src/app/stores/login/invitation.store.ts","./node_modules/@progress/kendo-angular-dateinputs/dist/es2015/util.js","./src/app/ap-core/services/ap-cookie.service.ts","./src/app/stores/ndi/nuptake.store.ts","./src/app/stores/login/login.store.ts","./src/app/stores/map/burger.menu.store.ts","./src/app/stores/map/color.legend.store.ts","./src/app/stores/map/map.layer.control.store.ts","./src/app/stores/map/map.layer.tooltip.store.ts","./node_modules/ol/uri.js","./node_modules/ol/source/WMTS.js","./node_modules/ol/source/WMTSRequestEncoding.js","./node_modules/ol/tilegrid/WMTS.js","./src/app/ap-map/layers/ap-wmts-layer.ts","./node_modules/ol/source/XYZ.js","./src/app/ap-map/layers/ap-xyz-layer.ts","./src/app/ap-map/layers/nutrients/ap-task-management.layer.ts","./projects/invoker-transport/src/lib/actions/nutrients/field-nutrient-distributions.action.ts","./src/app/ap-map/layers/ap-sample-fields.layer.ts","./node_modules/ol/Geolocation.js","./src/app/ap-map/layers/ap-user-location-layer.ts","./src/app/stores/map/map.layer.store.ts","./projects/invoker-transport/src/lib/actions/map/map.action.ts","./src/app/stores/map/map.edit.store.ts","./src/app/ap-map/utils/geojson.converter.ts","./src/app/stores/map/map.legend.store.ts","./src/app/stores/map/map.store.ts","./src/app/stores/n-fertilization/n-fertilization.store.ts","./src/app/stores/ndi/ndi.store.ts","./src/app/stores/nutrients/field-nutrient-distributions.store.ts","./projects/invoker-transport/src/lib/actions/nutrients/nutrient.action.ts","./src/app/stores/nutrients/nutrient.store.ts","./projects/invoker-transport/src/lib/actions/nutrients/rb.action.ts","./src/app/stores/nutrients/rb.store.ts","./src/app/stores/nutrients/soilsampledate.store.ts","./projects/invoker-transport/src/lib/actions/nutrients/soilsampleplanning.actions.ts","./src/app/stores/nutrients/soilsampleplanning.store.ts","./src/app/stores/parameter/parameter.definition.store.ts","./src/app/stores/parameter/parameter.values.history.store.ts","./src/app/stores/parameter/parameter.values.store.ts","./src/app/stores/pipes/ap-get-assigned-usergroups.pipe.ts","./src/app/stores/pipes/ap-get-available-usergroups.pipe.ts","./src/app/stores/pipes/ap-get-local-date.pipe.ts","./src/app/stores/pipes/ap-get-main-crop-statistic.pipe.ts","./src/app/stores/pipes/ap-get-parameter-ref-object-type.pipe.ts","./src/app/stores/pipes/ap-get-parameter-type.pipe.ts","./src/app/stores/pipes/ap-get-second-crop-statistic.pipe.ts","./src/app/stores/pipes/ap-get-time-duration-string.pipe.ts","./src/app/stores/pipes/ap-get-utc-date.pipe.ts","./src/app/stores/router/router.store.ts","./projects/invoker-transport/src/lib/actions/sensor/sensor.action.ts","./src/app/stores/sensor/sensor.store.ts","./src/app/stores/services/ap-get-crop-statistic.service.ts","./src/app/stores/services/ap-get-crop.service.ts","./src/app/stores/settings/access.permission.store.ts","./src/app/stores/settings/user.group.store.ts","./src/app/stores/settings/user.group.user.store.ts","./src/app/stores/settings/usersettings.store.ts","./src/app/stores/statistic/statistic.store.ts","./src/app/stores/pipes/ap-get-crop.pipe.ts","./src/app/stores/stores.module.ts","./projects/invoker-transport/src/lib/actions/task-management/crop-applications.action.ts","./src/app/stores/task-management/crop-application.store.ts","./projects/invoker-transport/src/lib/actions/task-management/task-management.action.ts","./src/app/stores/task-management/task-management.store.ts","./src/app/stores/taskmanagement/basic.fertilisation.summaries.store.ts","./projects/invoker-transport/src/lib/actions/translation/language.action.ts","./src/app/stores/translation/language.store.ts","./src/app/stores/translation/translation.store.ts","./src/app/translation/ap-translation.module.ts","./src/app/translation/pipes/ap-translation-array.pipe.ts","./src/app/translation/pipes/ap-translation-async.pipe.ts","./src/app/translation/pipes/ap-translation.pipe.ts","./src/app/types/file.types.ts","./src/app/types/n-fertilization.types.ts","./src/environments/environment.live.ts","./src/app/ap-animation/logo-scale.animation.ts","./src/app/ap-animation/sidbar.animation.ts","./src/app/ap-animation/change-width.animation.ts","./src/app/ap-animation/translate-component.animation.ts","./projects/invoker-transport/src/lib/actions/administration/system.action.ts","./src/app/stores/layout/page.store.ts","./src/app/services/data/license/license-notification.service.ts","./src/app/ap-tooltip/ap-tooltip.component.ts","./src/app/ap-tooltip/ap-tooltip.component.html","./src/app/ap-core/components/ap-notify-message/ap-notify-message.component.ts","webpack:///tslib?dc46","./node_modules/@progress/kendo-angular-notification/__ivy_ngcc__/dist/fesm2015/index.js","./src/app/ap-core/components/ap-notify/ap-notify.component.ts","./src/app/icons/components/ap-logo-icon.component.ts","./src/app/ap-core/components/ap-modal-dialog/ap-modal-dialog-button-disable.pipe.ts","./src/app/ap-core/components/ap-modal-dialog/ap-modal-dialog.component.html","./src/app/ap-core/components/ap-modal-dialog/ap-modal-dialog.component.ts","./src/app/layout/components/inner.loading.component.ts","./src/app/layout/components/ap-farm-selection.component.ts","./src/app/layout/components/ap-farm-selection.component.html","./src/app/layout/components/ap-harvest-selection.component.ts","./src/app/layout/components/ap-harvest-selection.component.html","./src/app/layout/components/ap-current-time.component.ts","./src/app/layout/components/ap-current-time.component.html","./src/app/ap-core/components/ap-farm-job-list.component.ts","./src/app/layout/components/ap-task-list.component.ts","./src/app/layout/components/ap-notification.component.html","./src/app/layout/components/ap-notification.component.ts","./src/app/layout/components/ap-user-profile.component.html","./src/app/layout/components/ap-user-profile.component.ts","./src/app/layout/pipes/ap-menu/is-main-expanded.pipe.ts","./src/app/layout/pipes/ap-menu/remove-url-params.pipe.ts","./src/app/layout/pipes/ap-menu/is-main-selected.pipe.ts","./src/app/layout/components/ap-menu.component.html","./src/app/layout/components/ap-menu.component.ts","./src/app/ap-core/directives/ap-view-container-ref.directive.ts","./src/app/ap-animation/translate-panel-text.animation.ts","./src/app/ap-core/components/ap-view-container/ap-view-container.component.ts","./src/app/ap-core/components/ap-view-container/ap-view-container.component.html","./src/app/map/components/ap-machine-popup.component.html","./src/app/map/components/ap-machine-popup.component.ts","./src/app/map/components/ap-sensor-point-popup/ap-sensor-point-popup.component.html","./src/app/map/components/ap-sensor-point-popup/ap-sensor-point-popup.component.ts","./src/app/map/components/sensor-point-legend/sensor-point-legend.component.html","./src/app/map/components/sensor-point-legend/sensor-point-legend.component.ts","./src/app/map/components/ap-map-color-legend.component.html","./src/app/map/components/ap-map-color-legend.component.ts","./src/app/map/components/ap-map-context-menu.component.ts","./src/app/map/components/layer-controller/layer.controller.map.selector.component.ts","./src/app/map/components/layer-controller/layer-panel-bar-item.component.ts","./src/app/map/components/layer-controller/layer.controller.component.ts","./src/app/map/components/ap-map-burger-menu.component.html","./src/app/map/components/ap-map-burger-menu.component.ts","./src/app/map/components/ap-map-zoom.component.ts","./src/app/map/components/ap-map-zoom.component.html","./src/app/map/components/edit/new-field-toolbar/new-field-toolbar.component.ts","./src/app/map/components/ap-map-edit.component.html","./src/app/map/components/ap-map-edit.component.ts","./src/app/map/components/layer-controller/ap-legend-scroller.component.ts","./src/app/stores/map/map.treeview.store.ts","./src/app/map/directives/map-tree-view.directive.ts","./src/app/map/components/ap-map-tree-view.component.ts","./src/app/map/components/ap-map-tree-view.component.html","./src/app/map/components/ap-map.component.html","./src/app/map/components/ap-map.component.ts","./src/app/statistics/components/charts/ap-box-plot-chart.component.html","./src/app/statistics/components/charts/ap-box-plot-chart.component.ts","./src/app/statistics/components/pipes/ap-bar-line-area-chart.pipe.ts","./src/app/statistics/components/charts/ap-bar-line-area-chart.component.html","./src/app/statistics/components/charts/ap-bar-line-area-chart.component.ts","./src/app/statistics/components/pipes/ap-donut-pie-chart.pipe.ts","./src/app/statistics/components/charts/ap-donut-pie-chart.component.html","./src/app/statistics/components/charts/ap-donut-pie-chart.component.ts","./src/app/statistics/components/charts/ap-main-second-crop-chart.component.html","./src/app/statistics/components/charts/ap-main-second-crop-chart.component.ts","./src/app/statistics/components/charts/ap-datetime-selection-chart.component.html","./src/app/statistics/components/charts/ap-datetime-selection-chart.component.ts","./src/app/statistics/components/pipes/dynamic-chart-height.pipe.ts","./src/app/statistics/components/charts/histogram.component.html","./src/app/statistics/components/charts/histogram.component.ts","./src/app/statistics/components/charts/planning.stats.component.html","./src/app/statistics/components/charts/planning.stats.component.ts","./src/app/statistics/components/charts/ap-generic-bar-chart.component.html","./src/app/statistics/components/charts/ap-generic-bar-chart.component.ts","./src/app/statistics/components/charts/ap-base-fert-overview-stats.component.html","./src/app/statistics/components/charts/ap-base-fert-overview-stats.component.ts","./src/app/statistics/components/charts/planning-wizard-overview-stats/ap-planning-wizard-overview-stats.component.html","./src/app/statistics/components/charts/planning-wizard-overview-stats/ap-planning-wizard-overview-stats.component.ts","./src/app/statistics/components/charts/n-fertilization-logfile-stats/n-fertilization-logfile-stats.types.ts","./src/app/statistics/components/services/diagram-for-histogram-statistics.service.ts","./src/app/statistics/components/charts/ap-dotted-histogram-chart/ap-dotted-histogram-chart.component.html","./src/app/statistics/components/charts/ap-dotted-histogram-chart/ap-dotted-histogram-chart.component.ts","./src/app/statistics/components/views/info-row-view.component.ts","./src/app/statistics/components/charts/n-fertilization-logfile-stats/n-fertilization-logfile-stats.component.html","./src/app/statistics/components/charts/n-fertilization-logfile-stats/n-fertilization-logfile-stats.component.ts","./src/app/statistics/components/charts/n-fertilization-n-need-stats/n-fertilization-n-need-stats.component.html","./src/app/statistics/components/charts/n-fertilization-n-need-stats/n-fertilization-n-need-stats.component.ts","./src/app/statistics/components/charts/field-scan-data-table-stats/ap-field-scan-data-table-stats.component.html","./src/app/statistics/components/charts/field-scan-data-table-stats/ap-field-scan-data-table-stats.component.ts","./src/app/statistics/components/charts/fields-crop-rotation-stats/fields-crop-rotation-stats.component.html","./src/app/statistics/components/charts/fields-crop-rotation-stats/fields-crop-rotation-stats.component.ts","./src/app/statistics/components/charts/fields-ndi-stats/fields-ndi-stats.types.ts","./src/app/ap-interface/interfaces/charts/ap-box-plot-chart-data.interface.ts","./src/app/statistics/components/charts/fields-ndi-stats/fields-ndi-stats.component.html","./src/app/statistics/components/charts/fields-ndi-stats/fields-ndi-stats.component.ts","./src/app/statistics/components/charts/dashboard-stats/dashboard-stats.types.ts","./src/app/ap-core/components/ap-percent-bar/ap-percent-bar.component.html","./src/app/ap-core/components/ap-percent-bar/ap-percent-bar.component.ts","./src/app/statistics/components/charts/dashboard-stats/dashboard-stats.component.html","./src/app/statistics/components/charts/dashboard-stats/dashboard-stats.component.ts","./src/app/statistics/components/charts/ap-generic-chart.component.html","./src/app/statistics/components/charts/ap-generic-chart.component.ts","./src/app/statistics/components/charts/plant-protection/ap-pp-planning-wizard-overview-stats.component.ts","./src/app/statistics/components/charts/plant-protection/ap-pp-planning-wizard-overview-stats.component.html","./src/app/statistics/components/ap-statistics.component.html","./src/app/statistics/components/ap-statistics.component.ts","./projects/invoker-transport/src/lib/actions/common/help-articles.action.ts","./src/app/stores/common/help-articles.store.ts","./src/app/help/components/ap-help.component.html","./src/app/help/components/ap-help.component.ts","./src/app/layout/components/ap-tabstrip.component.html","./src/app/layout/components/ap-tabstrip.component.ts","./src/app/layout/components/ap-layout.component.html","./src/app/layout/components/ap-layout.component.ts","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./src/app/ap-core/error-handling/ap-errorhandler.ts","./src/app/routes.module.ts","./src/app/translation/ap-kendomessage.service.ts","./src/app/entry-components/ap-settings-entry-components/ap-settings-entry-components.module.ts","./src/app/entry-components/ap-field-management-entry-components/ap-field-management-entry-components.module.ts","./src/app/entry-components/ap-basedata-entry-components/ap-basedata-entry-components.module.ts","./src/app/entry-components/ap-administration-entry-components/ap-administration-entry-components.module.ts","./src/app/entry-components/ap-docu-entry-components/ap-docu-entry-components.module.ts","./src/app/entry-components/ap-nutrients-management-entry-components/ap-nutrients-management-entry-components.module.ts","./src/app/entry-components/ap-n-fertilization-entry-components/ap-n-fertilization-entry-components.module.ts","./src/app/entry-components/plant-protection-entry-components/pp-entry-components.module.ts","./src/app/stores/database/notify.store.ts","./src/app/app.module.ts","./src/main.ts","webpack:///tslib?8340","./node_modules/@progress/kendo-angular-buttons/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?415b","./node_modules/@progress/kendo-angular-charts/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?94b0","./node_modules/@progress/kendo-angular-common/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?01f5","./node_modules/@progress/kendo-date-math/dist/es2015/adjust-dst.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-days.js","./node_modules/@progress/kendo-date-math/dist/es2015/create-date.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/add-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/normalize-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-month-of-year.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/add-weeks.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/direction.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/day.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/prev-day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/week-in-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/constants.js","./node_modules/@progress/kendo-angular-dateinputs/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?4e20","./node_modules/@progress/kendo-angular-dialog/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?b96c","./node_modules/@progress/kendo-angular-dropdowns/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/rxjs/dist/esm/internal/operators/partition.js","webpack:///tslib?0ab0","./node_modules/@progress/kendo-angular-editor/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?f156","./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/getter.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/map.js","./node_modules/@progress/kendo-ooxml/dist/es2015/excel-exporter.js","./node_modules/@progress/jszip-esm/dist/jszip-esm2015.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/time.js","./node_modules/@progress/kendo-ooxml/dist/es2015/ooxml.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/create-zip.js","./node_modules/@progress/kendo-angular-excel-export/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/@progress/kendo-angular-gauges/__ivy_ngcc__/dist/fesm2015/index.js","tslib","webpack:///tslib?81f1","./node_modules/@progress/kendo-angular-label/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/@progress/kendo-angular-grid/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?0c3a","./node_modules/@progress/kendo-angular-icons/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?726c","./node_modules/@progress/kendo-angular-indicators/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?fe30","./node_modules/@progress/kendo-angular-inputs/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?1eaf","./node_modules/@progress/kendo-angular-intl/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/@progress/kendo-angular-intl/locales/cs/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/cs/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/de/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/de/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/en/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/en/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/et/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/et/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/hr/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/hr/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/hu/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/hu/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/lt/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/lt/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/lv/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/lv/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/pl/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/pl/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/ro/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/ro/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/ru/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/ru/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/sk/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/sk/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/sr/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/sr/numbers.js","./node_modules/@progress/kendo-angular-intl/locales/uk/calendar.js","./node_modules/@progress/kendo-angular-intl/locales/uk/numbers.js","webpack:///tslib?382b","./node_modules/@progress/kendo-angular-l10n/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?1d7f","./node_modules/@progress/kendo-angular-layout/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?c83b","./node_modules/@progress/kendo-angular-menu/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?6f71","./node_modules/@progress/kendo-angular-pdf-export/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/@progress/kendo-angular-popup/node_modules/tslib/tslib.es6.js","./node_modules/@progress/kendo-angular-popup/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?17e6","./node_modules/@progress/kendo-angular-progressbar/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?6065","./node_modules/@progress/kendo-angular-scrollview/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?3519","./node_modules/@progress/kendo-angular-toolbar/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?3434","./node_modules/@progress/kendo-angular-tooltip/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?6e01","./node_modules/@progress/kendo-angular-treeview/__ivy_ngcc__/dist/fesm2015/index.js","webpack:///tslib?c27c","./node_modules/@progress/kendo-angular-upload/__ivy_ngcc__/dist/fesm2015/index.js","./node_modules/@progress/kendo-charts/dist/es2015/common/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-array.js","./node_modules/@progress/kendo-charts/dist/es2015/common/add-class.js","./node_modules/@progress/kendo-charts/dist/es2015/common/remove-class.js","./node_modules/@progress/kendo-charts/dist/es2015/common/align-path-to-pixel.js","./node_modules/@progress/kendo-charts/dist/es2015/common/clockwise.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-number.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-string.js","./node_modules/@progress/kendo-charts/dist/es2015/common/convertable-to-number.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-function.js","./node_modules/@progress/kendo-charts/dist/es2015/common/deep-extend.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-object.js","./node_modules/@progress/kendo-charts/dist/es2015/common/style-value.js","./node_modules/@progress/kendo-charts/dist/es2015/common/element-styles.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-spacing.js","./node_modules/@progress/kendo-charts/dist/es2015/services/template-service.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-template.js","./node_modules/@progress/kendo-charts/dist/es2015/common/getter.js","./node_modules/@progress/kendo-charts/dist/es2015/common/grep.js","./node_modules/@progress/kendo-charts/dist/es2015/common/has-classes.js","./node_modules/@progress/kendo-charts/dist/es2015/common/hash-map.js","./node_modules/@progress/kendo-charts/dist/es2015/common/in-array.js","./node_modules/@progress/kendo-charts/dist/es2015/common/interpolate-value.js","./node_modules/@progress/kendo-charts/dist/es2015/common/instance-observer.js","./node_modules/@progress/kendo-charts/dist/es2015/common/map.js","./node_modules/@progress/kendo-charts/dist/es2015/common/mousewheel-delta.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/log-to-console.js","./node_modules/@progress/kendo-charts/dist/es2015/drawing-utils.js","./node_modules/@progress/kendo-charts/dist/es2015/common/font-loader.js","./node_modules/@progress/kendo-charts/dist/es2015/common/set-default-options.js","./node_modules/@progress/kendo-charts/dist/es2015/common/sparse-array-limits.js","./node_modules/@progress/kendo-charts/dist/es2015/common/find.js","./node_modules/@progress/kendo-charts/dist/es2015/common/element-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/common/auto-text-color.js","./node_modules/@progress/kendo-charts/dist/es2015/common/create-hash-set.js","./node_modules/@progress/kendo-charts/dist/es2015/common/default-error-handler.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-major-unit.js","./node_modules/@progress/kendo-charts/dist/es2015/core/point.js","./node_modules/@progress/kendo-charts/dist/es2015/core/box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/ring.js","./node_modules/@progress/kendo-charts/dist/es2015/core/shape-builder.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/easing-functions.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/animation-factory.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/animation.js","./node_modules/@progress/kendo-charts/dist/es2015/core/chart-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/box-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/shape-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/gradients.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/box-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/core/root-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/float-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/text.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/rect-to-box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/text-box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/title.js","./node_modules/@progress/kendo-charts/dist/es2015/core/axis-label.js","./node_modules/@progress/kendo-charts/dist/es2015/core/note.js","./node_modules/@progress/kendo-charts/dist/es2015/services/intl-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/format-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/chart-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/dom-events-builder.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/create-axis-tick.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/create-axis-grid-line.js","./node_modules/@progress/kendo-charts/dist/es2015/core/axis.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/absolute-date-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/add-ticks.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/to-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/add-duration.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/start-of-week.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/floor-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/ceil-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-comparer.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/to-time.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-equals.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-index.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/duration.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/parse-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/parse-dates.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/first-day.js","./node_modules/@progress/kendo-charts/dist/es2015/core/category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/core/date-category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/floor.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/ceil.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/limit-coordinate.js","./node_modules/@progress/kendo-charts/dist/es2015/core/numeric-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-axis-min.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-axis-max.js","./node_modules/@progress/kendo-charts/dist/es2015/core/date-value-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/logarithmic-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/mixins/grid-lines-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/polar-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/mixins/radar-numeric-axis-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-numeric-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-logarithmic-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/curve-processor.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/find-axis-by-name.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-pane.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/count-numbers.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/aggregates.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/get-field.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/series-binder.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/error-range-calculator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/error-bar-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/categorical-error-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/eval-options.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/categories-count.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/categorical-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/point-events-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/note-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/step-line-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/step-line-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/spline-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/line-chart-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/clip-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/any-has-z-index.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/clip-animation-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/step-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/spline-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/axis-group-range-tracker.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar-label.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/has-gradient-overlay.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/cluster-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/stack-wrap.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/candlestick-chart/candlestick.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/are-numbers.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/candlestick-chart/candlestick-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/box-plot.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/vertical-box-plot.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/box-plot-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/scatter-error-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/has-value.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/scatter-charts/scatter-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bubble-chart/bubble.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bubble-chart/bubble-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/target.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/bullet.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/bullet-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/base-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/crosshair/crosshair-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/crosshair/crosshair.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/chart-container.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pane.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/append-if-not-null.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/segment-visible.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/bind-segments.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/equals-ignore-case.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/filter-series-by-type.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/get-date-field.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/is-date-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/single-item-or-array.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/create-out-of-range-points.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/plotarea-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/plotarea-events-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/series-aggregator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/default-aggregates.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-bar-chart/range-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-bar-chart/range-bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-line-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/spline-range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/step-range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/ohlc-chart/ohlc-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/ohlc-chart/ohlc-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/waterfall-chart/waterfall-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/waterfall-chart/waterfall-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/categorical-plotarea.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/arc-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/circle-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/group-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/html-encode.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/image-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/multi-path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/rect-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/text-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/surface-factory.js","./node_modules/@progress/kendo-drawing/dist/es2015/surface.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/highlight.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/accept-key.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/to-chart-axis-ranges.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/pannable.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/zoom-selection.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/mousewheel-zoom.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/translate-to-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-start.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-start-reverse.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-item.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/plotarea-factory.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/selection.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/shared-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/bar-chart-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/bubble-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/fade-in-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/pie-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/scatter-charts/scatter-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/xy-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pie-chart/pie-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/pie-chart-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pie-chart/pie-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/pie-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/donut-chart/donut-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/donut-chart/donut-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/polar-plotarea-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-scatter-chart/polar-scatter-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-line-chart/polar-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/spline-polar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/polar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/polar-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/polar-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-line-chart/radar-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/spline-radar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/radar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/radar-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-bar-chart/radar-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/radar-cluster-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/radar-stack-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-bar-chart/radar-bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/radar-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/funnel-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/funnel-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/heatmap-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/heatmap-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/color-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/heatmap-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/register-charts.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/donut-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/funnel-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/chart.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline/shared-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline/sparkline.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/fade-out-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/navigator-hint.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/navigator.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/stock-chart.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-align.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/stack-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/create-stack-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/stack.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-stack.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/wrap-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/wrap.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-wrap.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/fit.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/path-parser.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/pad.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/build-label-element.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/get-range.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/unpad.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/arrow-linear-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/arrow-linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/bar-linear-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/bar-linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/arc-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/range-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/range-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/arc-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/circular/circular-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/encoding.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code11.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code39.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code39-extended.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code93.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/postnet.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code128.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/msi.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/ean13.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/ean8.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/main.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code93-extended.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/barcode.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/barcode-validator.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/free-cell-visitor.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoding-result.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoders/iso-encoder.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoding.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/qr-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/data-mode-instances.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/numeric-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/alpha-numeric-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/byte-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoders/utf8-encoder.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/version-codewords.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/qrcode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/qrcode-validator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/base-theme.js","./node_modules/@progress/kendo-common/dist/es2015/util.js","./node_modules/@progress/kendo-common/dist/es2015/support.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-data-query/dist/es2015/utils.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-descriptor.interface.js","./node_modules/@progress/kendo-data-query/dist/es2015/funcs.js","./node_modules/@progress/kendo-data-query/dist/es2015/accessor.js","./node_modules/@progress/kendo-data-query/dist/es2015/odata.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filter-serialization.common.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/deserialization.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort-array.operator.js","./node_modules/@progress/kendo-data-query/dist/es2015/transducers.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/aggregate.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-no-eval.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-expression.factory.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/group.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort.js","./node_modules/@progress/kendo-data-query/dist/es2015/array.operators.js","./node_modules/@progress/kendo-date-math/dist/es2015/clone-date.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/arc-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/circle-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/export-image.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/group-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/image-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/multi-path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/node-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/rect-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/root-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/surface-cursor.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/text-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/utils/render-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/animation-frame.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/support.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/throttle.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/base-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/constants.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/common/observable.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close-or-less.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersection.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/close.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/ellipse-extreme-angles.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersections-count.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/math/is-out-of-end-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/calculate-curve-at.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/to-cubic-polynomial.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/complex-number.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/solve-cubic-equation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/has-roots-in-range.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/segment.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/curve-intersections-count.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/transformation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transform.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-options.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient-stop.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/stops-array.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/html/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/template.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-points.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/shape-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/parse-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/utils.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/ttf.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/deflate.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/drawing.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/quad-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/quad-root.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/shapes-quad-tree.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/group.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/image.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/geometry-elements-array.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/svg/clip-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/definition-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/export-group.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/export-svg.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/gradient-stop-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/linear-gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/node-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/radial-gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/root-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-all-attributes.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-attribute.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-style.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-svg.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/bind-events.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/element-offset.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-padding.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-scale.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-size.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-styles.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/event-coordinates.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/event-element.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/now.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/promise-all.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/unbind-events.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/value-or-default.js","./node_modules/orderedmap/index.es.js","./node_modules/prosemirror-model/dist/index.es.js","./node_modules/prosemirror-transform/dist/index.es.js","./node_modules/prosemirror-state/dist/index.es.js","./node_modules/@progress/kendo-editor-common/dist/es2015/source.js","./node_modules/@progress/kendo-editor-common/dist/es2015/utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/mark.js","./node_modules/@progress/kendo-editor-common/dist/es2015/inline-style.js","./node_modules/@progress/kendo-editor-common/dist/es2015/link.js","./node_modules/@progress/kendo-editor-common/dist/es2015/text.js","./node_modules/@progress/kendo-editor-common/dist/es2015/image.js","webpack:///tslib?1414","./node_modules/@progress/kendo-editor-common/dist/es2015/blockNode.js","./node_modules/@progress/kendo-editor-common/dist/es2015/align.js","./node_modules/@progress/kendo-editor-common/dist/es2015/cleanFormatting.js","./node_modules/prosemirror-schema-list/dist/index.es.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/list-settings.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/indent-rules.js","./node_modules/prosemirror-commands/dist/index.es.js","./node_modules/@progress/kendo-editor-common/dist/es2015/blockquote.js","./node_modules/@progress/kendo-editor-common/dist/es2015/indent.js","./node_modules/@progress/kendo-editor-common/dist/es2015/lists.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/align-rules.js","./node_modules/w3c-keyname/index.es.js","./node_modules/prosemirror-keymap/dist/index.es.js","./node_modules/prosemirror-view/dist/index.es.js","./node_modules/prosemirror-tables/dist/index.es.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/schema.js","./node_modules/rope-sequence/dist/index.es.js","./node_modules/prosemirror-history/dist/index.es.js","./node_modules/prosemirror-inputrules/dist/index.es.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/commands.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/keymap.js","./node_modules/@progress/kendo-editor-common/dist/es2015/listConvert.js","./node_modules/@progress/kendo-editor-common/dist/es2015/paste.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/placeholder.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/highlight.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/image-resize.js","./node_modules/prosemirror-dropcursor/dist/index.es.js","./node_modules/prosemirror-gapcursor/dist/index.es.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-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/add-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/owner-document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window.js","./node_modules/@progress/kendo-popup-common/dist/es2015/document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scrollbar-width.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window-viewport.js","./node_modules/@progress/kendo-popup-common/dist/es2015/bounding-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parents.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/element-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent.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/offset-parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/remove-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/collision.js","./node_modules/@progress/kendo-popup-common/dist/es2015/restrict-to-view.js","./node_modules/@progress/kendo-popup-common/dist/es2015/siblings.js","./node_modules/@progress/kendo-popup-common/dist/es2015/sibling-container.js","./node_modules/@progress/kendo-popup-common/dist/es2015/utils.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/common/is-string.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/cldr/info.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/default-data.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-numbers.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-dates.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/territory.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/set-data.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/parse-range-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/currency.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/first-day.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/weekend-range.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/number-symbols.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-negative-zero.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-currency-symbol.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/common/pad.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/round.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/@telerik/kendo-intl/dist/es2015/numbers/custom-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-options.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/parse-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/format-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-pattern.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-name-type.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/time-utils.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/format.js","./node_modules/axios/index.js","./node_modules/axios/lib/adapters/xhr.js","./node_modules/axios/lib/axios.js","./node_modules/axios/lib/cancel/Cancel.js","./node_modules/axios/lib/cancel/CancelToken.js","./node_modules/axios/lib/cancel/isCancel.js","./node_modules/axios/lib/core/Axios.js","./node_modules/axios/lib/core/InterceptorManager.js","./node_modules/axios/lib/core/buildFullPath.js","./node_modules/axios/lib/core/createError.js","./node_modules/axios/lib/core/dispatchRequest.js","./node_modules/axios/lib/core/enhanceError.js","./node_modules/axios/lib/core/mergeConfig.js","./node_modules/axios/lib/core/settle.js","./node_modules/axios/lib/core/transformData.js","./node_modules/axios/lib/defaults.js","./node_modules/axios/lib/helpers/bind.js","./node_modules/axios/lib/helpers/buildURL.js","./node_modules/axios/lib/helpers/combineURLs.js","./node_modules/axios/lib/helpers/cookies.js","./node_modules/axios/lib/helpers/isAbsoluteURL.js","./node_modules/axios/lib/helpers/isAxiosError.js","./node_modules/axios/lib/helpers/isURLSameOrigin.js","./node_modules/axios/lib/helpers/normalizeHeaderName.js","./node_modules/axios/lib/helpers/parseHeaders.js","./node_modules/axios/lib/helpers/spread.js","./node_modules/axios/lib/helpers/validator.js","./node_modules/axios/lib/utils.js","./node_modules/base64-js/index.js","./node_modules/bezier-easing/src/index.js","./node_modules/lower-case/dist.es2015/index.js","./node_modules/no-case/dist.es2015/index.js","./node_modules/pascal-case/dist.es2015/index.js","./node_modules/camel-case/dist.es2015/index.js","./node_modules/upper-case-first/dist.es2015/index.js","./node_modules/capital-case/dist.es2015/index.js","./node_modules/upper-case/dist.es2015/index.js","./node_modules/constant-case/dist.es2015/index.js","./node_modules/dot-case/dist.es2015/index.js","./node_modules/header-case/dist.es2015/index.js","./node_modules/param-case/dist.es2015/index.js","./node_modules/path-case/dist.es2015/index.js","./node_modules/sentence-case/dist.es2015/index.js","./node_modules/snake-case/dist.es2015/index.js","./node_modules/downloadjs/download.js","./node_modules/fast-deep-equal/index.js","./node_modules/hammerjs/hammer.js","./node_modules/ieee754/index.js","./node_modules/immer/dist/immer.esm.js","./node_modules/lodash/lodash.js","./node_modules/luxon/build/cjs-browser/luxon.js","./node_modules/lz-string/libs/lz-string.js","./node_modules/moment-timezone/index.js","./node_modules/moment-timezone/moment-timezone.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-ps.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku-kmr.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/object-sizeof/byte_size.js","./node_modules/object-sizeof/index.js","./node_modules/object-sizeof/node_modules/buffer/index.js","./node_modules/ol/AssertionError.js","./node_modules/ol/Collection.js","./node_modules/ol/CollectionEventType.js","./node_modules/ol/Disposable.js","./node_modules/ol/Feature.js","./node_modules/ol/Image.js","./node_modules/ol/ImageBase.js","./node_modules/ol/ImageState.js","./node_modules/ol/renderer/Map.js","./node_modules/ol/renderer/Composite.js","./node_modules/ol/layer/Group.js","./node_modules/ol/MapBrowserEventHandler.js","./node_modules/ol/pointer/EventType.js","./node_modules/ol/structs/PriorityQueue.js","./node_modules/ol/TileQueue.js","./node_modules/ol/PluggableMap.js","./node_modules/ol/MapProperty.js","./node_modules/ol/control/Attribution.js","./node_modules/ol/control/Rotate.js","./node_modules/ol/control/Zoom.js","./node_modules/ol/interaction/DoubleClickZoom.js","./node_modules/ol/interaction/DragPan.js","./node_modules/ol/interaction/DragRotate.js","./node_modules/ol/render/Box.js","./node_modules/ol/interaction/DragBox.js","./node_modules/ol/interaction/DragZoom.js","./node_modules/ol/interaction/KeyboardPan.js","./node_modules/ol/events/KeyCode.js","./node_modules/ol/interaction/KeyboardZoom.js","./node_modules/ol/Kinetic.js","./node_modules/ol/interaction/MouseWheelZoom.js","./node_modules/ol/interaction/PinchRotate.js","./node_modules/ol/interaction/PinchZoom.js","./node_modules/ol/Map.js","./node_modules/ol/control.js","./node_modules/ol/interaction.js","./node_modules/ol/MapBrowserEvent.js","./node_modules/ol/MapBrowserEventType.js","./node_modules/ol/MapEvent.js","./node_modules/ol/MapEventType.js","./node_modules/ol/Object.js","./node_modules/ol/ObjectEventType.js","./node_modules/ol/Observable.js","./node_modules/ol/Overlay.js","./node_modules/ol/OverlayPositioning.js","./node_modules/ol/Tile.js","./node_modules/ol/structs/LRUCache.js","./node_modules/ol/TileCache.js","./node_modules/ol/TileRange.js","./node_modules/ol/TileState.js","./node_modules/ol/centerconstraint.js","./node_modules/ol/resolutionconstraint.js","./node_modules/ol/View.js","./node_modules/ol/ViewProperty.js","./node_modules/ol/ViewHint.js","./node_modules/ol/array.js","./node_modules/ol/asserts.js","./node_modules/ol/color.js","./node_modules/ol/colorlike.js","./node_modules/ol/control/Control.js","./node_modules/ol/coordinate.js","./node_modules/ol/css.js","./node_modules/ol/dom.js","./node_modules/ol/easing.js","./node_modules/ol/events.js","./node_modules/ol/events/Event.js","./node_modules/ol/events/EventType.js","./node_modules/ol/events/Target.js","./node_modules/ol/events/condition.js","./node_modules/ol/extent.js","./node_modules/ol/extent/Corner.js","./node_modules/ol/extent/Relationship.js","./node_modules/ol/featureloader.js","./node_modules/ol/format/Feature.js","./node_modules/ol/format/FormatType.js","./node_modules/ol/geom/GeometryCollection.js","./node_modules/ol/format/JSONFeature.js","./node_modules/ol/format/GeoJSON.js","./node_modules/ol/functions.js","./node_modules/ol/geom/Geometry.js","./node_modules/ol/geom/GeometryLayout.js","./node_modules/ol/geom/GeometryType.js","./node_modules/ol/geom/LineString.js","./node_modules/ol/geom/LinearRing.js","./node_modules/ol/geom/MultiLineString.js","./node_modules/ol/geom/MultiPoint.js","./node_modules/ol/geom/MultiPolygon.js","./node_modules/ol/geom/Point.js","./node_modules/ol/geom/Polygon.js","./node_modules/ol/geom/SimpleGeometry.js","./node_modules/ol/geom/flat/area.js","./node_modules/ol/geom/flat/center.js","./node_modules/ol/geom/flat/closest.js","./node_modules/ol/geom/flat/contains.js","./node_modules/ol/geom/flat/deflate.js","./node_modules/ol/geom/flat/inflate.js","./node_modules/ol/geom/flat/interiorpoint.js","./node_modules/ol/geom/flat/interpolate.js","./node_modules/ol/geom/flat/intersectsextent.js","./node_modules/ol/geom/flat/length.js","./node_modules/ol/geom/flat/reverse.js","./node_modules/ol/geom/flat/orient.js","./node_modules/ol/geom/flat/segments.js","./node_modules/ol/geom/flat/simplify.js","./node_modules/ol/geom/flat/transform.js","./node_modules/ol/has.js","./node_modules/ol/interaction/Interaction.js","./node_modules/ol/interaction/Pointer.js","./node_modules/ol/interaction/Property.js","./node_modules/ol/interaction/Select.js","./node_modules/ol/layer/Base.js","./node_modules/ol/layer/BaseVector.js","./node_modules/ol/layer/Layer.js","./node_modules/ol/layer/Property.js","./node_modules/ol/layer/TileProperty.js","./node_modules/ol/layer/Vector.js","./node_modules/ol/renderer/canvas/VectorTileLayer.js","./node_modules/ol/layer/VectorTileRenderType.js","./node_modules/ol/layer/VectorTile.js","./node_modules/ol/math.js","./node_modules/ol/obj.js","./node_modules/ol/proj/epsg3857.js","./node_modules/ol/proj/epsg4326.js","./node_modules/ol/proj/projections.js","./node_modules/ol/proj/transforms.js","./node_modules/ol/proj.js","./node_modules/ol/proj/Projection.js","./node_modules/ol/proj/Units.js","./node_modules/ol/render.js","./node_modules/ol/render/Event.js","./node_modules/ol/render/EventType.js","./node_modules/ol/render/VectorContext.js","./node_modules/ol/render/canvas.js","./node_modules/ol/render/canvas/Builder.js","./node_modules/ol/render/canvas/ImageBuilder.js","./node_modules/ol/render/canvas/LineStringBuilder.js","./node_modules/ol/render/canvas/PolygonBuilder.js","./node_modules/ol/render/canvas/BuilderGroup.js","./node_modules/ol/render/canvas/BuilderType.js","./node_modules/ol/geom/flat/textpath.js","./node_modules/ol/render/canvas/Executor.js","./node_modules/ol/render/canvas/ExecutorGroup.js","./node_modules/ol/render/canvas/Immediate.js","./node_modules/ol/render/canvas/Instruction.js","./node_modules/ol/geom/flat/straightchunk.js","./node_modules/ol/render/canvas/TextBuilder.js","./node_modules/ol/render/canvas/hitdetect.js","./node_modules/ol/renderer/Layer.js","./node_modules/ol/renderer/canvas/Layer.js","./node_modules/ol/renderer/canvas/TileLayer.js","./node_modules/ol/renderer/canvas/VectorLayer.js","./node_modules/ol/renderer/vector.js","./node_modules/ol/reproj/common.js","./node_modules/ol/rotationconstraint.js","./node_modules/ol/size.js","./node_modules/ol/source/Cluster.js","./node_modules/ol/source/Source.js","./node_modules/ol/source/State.js","./node_modules/ol/ImageTile.js","./node_modules/ol/reproj/Triangulation.js","./node_modules/ol/source/common.js","./node_modules/ol/reproj.js","./node_modules/ol/reproj/Tile.js","./node_modules/ol/source/TileImage.js","./node_modules/ol/source/Tile.js","./node_modules/ol/source/UrlTile.js","./node_modules/ol/source/TileEventType.js","./node_modules/ol/loadingstrategy.js","./node_modules/ol/source/Vector.js","./node_modules/ol/source/VectorEventType.js","./node_modules/ol/sphere.js","./node_modules/ol/structs/RBush.js","./node_modules/ol/style/RegularShape.js","./node_modules/ol/style/Circle.js","./node_modules/ol/style/Fill.js","./node_modules/ol/style/IconImage.js","./node_modules/ol/style/Icon.js","./node_modules/ol/style/IconOrigin.js","./node_modules/ol/style/IconAnchorUnits.js","./node_modules/ol/style/IconImageCache.js","./node_modules/ol/style/Image.js","./node_modules/ol/style/Stroke.js","./node_modules/ol/style/Style.js","./node_modules/ol/style/Text.js","./node_modules/ol/style/TextPlacement.js","./node_modules/ol/tilecoord.js","./node_modules/ol/tilegrid.js","./node_modules/ol/tilegrid/TileGrid.js","./node_modules/ol/tilegrid/common.js","./node_modules/ol/tileurlfunction.js","./node_modules/ol/transform.js","./node_modules/ol/util.js","./node_modules/pbf/index.js","./node_modules/proj4/lib/constants/values.js","./node_modules/proj4/lib/constants/PrimeMeridian.js","./node_modules/proj4/lib/constants/units.js","./node_modules/proj4/lib/match.js","./node_modules/proj4/lib/projString.js","./node_modules/wkt-parser/parser.js","./node_modules/wkt-parser/process.js","./node_modules/wkt-parser/index.js","./node_modules/proj4/lib/defs.js","./node_modules/proj4/lib/global.js","./node_modules/proj4/lib/parseCode.js","./node_modules/proj4/lib/extend.js","./node_modules/proj4/lib/common/msfnz.js","./node_modules/proj4/lib/common/sign.js","./node_modules/proj4/lib/common/adjust_lon.js","./node_modules/proj4/lib/common/tsfnz.js","./node_modules/proj4/lib/common/phi2z.js","./node_modules/proj4/lib/projections/longlat.js","./node_modules/proj4/lib/projections.js","./node_modules/proj4/lib/projections/merc.js","./node_modules/proj4/lib/constants/Ellipsoid.js","./node_modules/proj4/lib/constants/Datum.js","./node_modules/proj4/lib/nadgrid.js","./node_modules/proj4/lib/Proj.js","./node_modules/proj4/lib/deriveConstants.js","./node_modules/proj4/lib/datum.js","./node_modules/proj4/lib/datumUtils.js","./node_modules/proj4/lib/datum_transform.js","./node_modules/proj4/lib/adjust_axis.js","./node_modules/proj4/lib/common/toPoint.js","./node_modules/proj4/lib/checkSanity.js","./node_modules/proj4/lib/transform.js","./node_modules/proj4/lib/core.js","./node_modules/mgrs/mgrs.js","./node_modules/proj4/lib/Point.js","./node_modules/proj4/lib/common/pj_enfn.js","./node_modules/proj4/lib/common/pj_mlfn.js","./node_modules/proj4/lib/common/pj_inv_mlfn.js","./node_modules/proj4/lib/projections/tmerc.js","./node_modules/proj4/lib/common/sinh.js","./node_modules/proj4/lib/common/hypot.js","./node_modules/proj4/lib/common/gatg.js","./node_modules/proj4/lib/common/clens_cmplx.js","./node_modules/proj4/lib/common/cosh.js","./node_modules/proj4/lib/projections/etmerc.js","./node_modules/proj4/lib/common/clens.js","./node_modules/proj4/lib/common/asinhy.js","./node_modules/proj4/lib/common/log1py.js","./node_modules/proj4/lib/projections/utm.js","./node_modules/proj4/lib/common/adjust_zone.js","./node_modules/proj4/lib/common/srat.js","./node_modules/proj4/lib/projections/gauss.js","./node_modules/proj4/lib/projections/sterea.js","./node_modules/proj4/lib/projections/stere.js","./node_modules/proj4/lib/projections/somerc.js","./node_modules/proj4/lib/projections/omerc.js","./node_modules/proj4/lib/projections/lcc.js","./node_modules/proj4/lib/projections/krovak.js","./node_modules/proj4/lib/common/mlfn.js","./node_modules/proj4/lib/common/e0fn.js","./node_modules/proj4/lib/common/e1fn.js","./node_modules/proj4/lib/common/e2fn.js","./node_modules/proj4/lib/common/e3fn.js","./node_modules/proj4/lib/common/gN.js","./node_modules/proj4/lib/common/adjust_lat.js","./node_modules/proj4/lib/common/imlfn.js","./node_modules/proj4/lib/projections/cass.js","./node_modules/proj4/lib/common/qsfnz.js","./node_modules/proj4/lib/projections/laea.js","./node_modules/proj4/lib/common/asinz.js","./node_modules/proj4/lib/projections/aea.js","./node_modules/proj4/lib/projections/gnom.js","./node_modules/proj4/lib/projections/cea.js","./node_modules/proj4/lib/common/iqsfnz.js","./node_modules/proj4/lib/projections/eqc.js","./node_modules/proj4/lib/projections/poly.js","./node_modules/proj4/lib/projections/nzmg.js","./node_modules/proj4/lib/projections/mill.js","./node_modules/proj4/lib/projections/sinu.js","./node_modules/proj4/lib/projections/moll.js","./node_modules/proj4/lib/projections/eqdc.js","./node_modules/proj4/lib/projections/vandg.js","./node_modules/proj4/lib/projections/aeqd.js","./node_modules/proj4/lib/projections/ortho.js","./node_modules/proj4/lib/projections/qsc.js","./node_modules/proj4/lib/projections/robin.js","./node_modules/proj4/lib/projections/geocent.js","./node_modules/proj4/lib/projections/tpers.js","./node_modules/proj4/lib/index.js","./node_modules/proj4/projs.js","./node_modules/rbush/rbush.js","./node_modules/rxjs/dist/esm/internal/scheduler/performanceTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/observable/dom/animationFrames.js","./node_modules/rxjs/dist/esm/internal/AsyncSubject.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/queue.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/VirtualTimeScheduler.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/Notification.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/lastValueFrom.js","./node_modules/rxjs/dist/esm/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/dist/esm/internal/util/NotFoundError.js","./node_modules/rxjs/dist/esm/internal/util/SequenceError.js","./node_modules/rxjs/dist/esm/internal/operators/timeout.js","./node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js","./node_modules/rxjs/dist/esm/internal/observable/bindCallback.js","./node_modules/rxjs/dist/esm/internal/observable/bindNodeCallback.js","./node_modules/rxjs/dist/esm/internal/observable/connectable.js","./node_modules/rxjs/dist/esm/internal/observable/fromEventPattern.js","./node_modules/rxjs/dist/esm/internal/observable/generate.js","./node_modules/rxjs/dist/esm/internal/observable/iif.js","./node_modules/rxjs/dist/esm/internal/observable/never.js","./node_modules/rxjs/dist/esm/internal/observable/onErrorResumeNext.js","./node_modules/rxjs/dist/esm/internal/operators/onErrorResumeNext.js","./node_modules/rxjs/dist/esm/internal/observable/pairs.js","./node_modules/rxjs/dist/esm/internal/observable/partition.js","./node_modules/rxjs/dist/esm/internal/observable/race.js","./node_modules/rxjs/dist/esm/internal/observable/range.js","./node_modules/rxjs/dist/esm/internal/observable/using.js","./node_modules/rxjs/dist/esm/internal/operators/buffer.js","./node_modules/rxjs/dist/esm/internal/operators/bufferTime.js","./node_modules/rxjs/dist/esm/internal/operators/bufferToggle.js","./node_modules/rxjs/dist/esm/internal/operators/bufferWhen.js","./node_modules/rxjs/dist/esm/internal/operators/reduce.js","./node_modules/rxjs/dist/esm/internal/operators/toArray.js","./node_modules/rxjs/dist/esm/internal/operators/joinAllInternals.js","./node_modules/rxjs/dist/esm/internal/operators/combineLatestAll.js","./node_modules/rxjs/dist/esm/internal/operators/combineAll.js","./node_modules/rxjs/dist/esm/internal/operators/combineLatest.js","./node_modules/rxjs/dist/esm/internal/operators/combineLatestWith.js","./node_modules/rxjs/dist/esm/internal/operators/concatMapTo.js","./node_modules/rxjs/dist/esm/internal/operators/concatWith.js","./node_modules/rxjs/dist/esm/internal/operators/concat.js","./node_modules/rxjs/dist/esm/internal/operators/connect.js","./node_modules/rxjs/dist/esm/internal/observable/fromSubscribable.js","./node_modules/rxjs/dist/esm/internal/operators/count.js","./node_modules/rxjs/dist/esm/internal/operators/debounce.js","./node_modules/rxjs/dist/esm/internal/operators/dematerialize.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilKeyChanged.js","./node_modules/rxjs/dist/esm/internal/operators/elementAt.js","./node_modules/rxjs/dist/esm/internal/operators/endWith.js","./node_modules/rxjs/dist/esm/internal/operators/every.js","./node_modules/rxjs/dist/esm/internal/operators/exhaustAll.js","./node_modules/rxjs/dist/esm/internal/operators/exhaust.js","./node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js","./node_modules/rxjs/dist/esm/internal/operators/find.js","./node_modules/rxjs/dist/esm/internal/operators/findIndex.js","./node_modules/rxjs/dist/esm/internal/operators/groupBy.js","./node_modules/rxjs/dist/esm/internal/operators/isEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/materialize.js","./node_modules/rxjs/dist/esm/internal/operators/max.js","./node_modules/rxjs/dist/esm/internal/operators/flatMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeScan.js","./node_modules/rxjs/dist/esm/internal/operators/mergeWith.js","./node_modules/rxjs/dist/esm/internal/operators/merge.js","./node_modules/rxjs/dist/esm/internal/operators/min.js","./node_modules/rxjs/dist/esm/internal/operators/multicast.js","./node_modules/rxjs/dist/esm/internal/operators/publish.js","./node_modules/rxjs/dist/esm/internal/operators/publishBehavior.js","./node_modules/rxjs/dist/esm/internal/operators/publishLast.js","./node_modules/rxjs/dist/esm/internal/operators/publishReplay.js","./node_modules/rxjs/dist/esm/internal/operators/raceWith.js","./node_modules/rxjs/dist/esm/internal/operators/repeat.js","./node_modules/rxjs/dist/esm/internal/operators/repeatWhen.js","./node_modules/rxjs/dist/esm/internal/operators/retry.js","./node_modules/rxjs/dist/esm/internal/operators/retryWhen.js","./node_modules/rxjs/dist/esm/internal/operators/sampleTime.js","./node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/single.js","./node_modules/rxjs/dist/esm/internal/operators/skipLast.js","./node_modules/rxjs/dist/esm/internal/operators/skipUntil.js","./node_modules/rxjs/dist/esm/internal/operators/switchAll.js","./node_modules/rxjs/dist/esm/internal/operators/switchScan.js","./node_modules/rxjs/dist/esm/internal/operators/timeInterval.js","./node_modules/rxjs/dist/esm/internal/operators/timeoutWith.js","./node_modules/rxjs/dist/esm/internal/operators/timestamp.js","./node_modules/rxjs/dist/esm/internal/operators/window.js","./node_modules/rxjs/dist/esm/internal/operators/windowCount.js","./node_modules/rxjs/dist/esm/internal/operators/windowTime.js","./node_modules/rxjs/dist/esm/internal/operators/windowToggle.js","./node_modules/rxjs/dist/esm/internal/operators/windowWhen.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/rxjs/dist/esm/internal/operators/zipAll.js","./node_modules/rxjs/dist/esm/internal/operators/zipWith.js","./node_modules/rxjs/dist/esm/internal/operators/zip.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/firstValueFrom.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/bufferCount.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/distinct.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/expand.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/rxjs/dist/esm/internal/operators/pluck.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/operators/sample.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/skipWhile.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throttle.js","./node_modules/rxjs/dist/esm/internal/operators/throttleTime.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/not.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./scripts/ts-tooling/src/core/array/array.js","./scripts/ts-tooling/src/core/checker/checker.js","./scripts/ts-tooling/src/core/datetime/datetime.js","./scripts/ts-tooling/src/core/guid/guid.js","./scripts/ts-tooling/src/core/number/number.js","./scripts/ts-tooling/src/core/object/object.js","./scripts/ts-tooling/src/core/string/string.js","./scripts/ts-tooling/src/pattern/construct/construct.js","./scripts/ts-tooling/src/pattern/dispose/using.js","./scripts/ts-tooling/src/pattern/event-handler/event-handler/event.handler.js","./scripts/ts-tooling/src/pattern/event-handler/index.js","./scripts/ts-tooling/src/pattern/functions/retry.js","./scripts/ts-tooling/src/pattern/functions/sleep.js","./scripts/ts-tooling/src/pattern/functions/throttle.js","./scripts/ts-tooling/src/pattern/index.js","./scripts/ts-tooling/src/pattern/reactive-store/index.js","./scripts/ts-tooling/src/pattern/reactive-store/store/reactive.store.js","./scripts/ts-tooling/src/ts-tooling.js","./scripts/ts-tooling/src/types/array/extension.js","./scripts/ts-tooling/src/types/array/index.js","./scripts/ts-tooling/src/types/byte/byte.stream/byte.stream.js","./scripts/ts-tooling/src/types/byte/byte/byte.js","./scripts/ts-tooling/src/types/byte/index.js","./scripts/ts-tooling/src/types/datetime/daterange/daterange.js","./scripts/ts-tooling/src/types/datetime/datetime/datetime.js","./scripts/ts-tooling/src/types/datetime/index.js","./scripts/ts-tooling/src/types/datetime/timespan/timespan.js","./scripts/ts-tooling/src/types/dictionary/dictionary/dictionary.js","./scripts/ts-tooling/src/types/dictionary/index.js","./scripts/ts-tooling/src/types/geometry/feature.collection.js","./scripts/ts-tooling/src/types/geometry/feature.js","./scripts/ts-tooling/src/types/geometry/index.js","./scripts/ts-tooling/src/types/geometry/line.js","./scripts/ts-tooling/src/types/geometry/multi.line.js","./scripts/ts-tooling/src/types/geometry/multi.point.js","./scripts/ts-tooling/src/types/geometry/multi.polygon.js","./scripts/ts-tooling/src/types/geometry/point.js","./scripts/ts-tooling/src/types/geometry/polygon.js","./scripts/ts-tooling/src/types/geometry/reference.system.js","./scripts/ts-tooling/src/types/guid/guid/guid.js","./scripts/ts-tooling/src/types/guid/index.js","./scripts/ts-tooling/src/types/number/extension/extension.js","./scripts/ts-tooling/src/types/number/factory/number.factory.js","./scripts/ts-tooling/src/types/number/index.js","./scripts/ts-tooling/src/types/object/factory/object.factory.js","./scripts/ts-tooling/src/types/object/index.js","./scripts/ts-tooling/src/types/string/extension/extension.js","./scripts/ts-tooling/src/types/string/factory/string.factory.js","./scripts/ts-tooling/src/types/string/index.js","./scripts/ts-tooling/src/utils/compression/index.js","./scripts/ts-tooling/src/utils/compression/lz/lz.js","./scripts/ts-tooling/src/utils/generator/index.js","./scripts/ts-tooling/src/utils/generator/test.data.generator/test.data.generator.js","./scripts/ts-tooling/src/utils/stopwatch/index.js","./scripts/ts-tooling/src/utils/stopwatch/stopwatch/stopwatch.js","./scripts/ts-tooling/src/utils/validation/class.validator/class.validator.js","./scripts/ts-tooling/src/utils/validation/index.js","/agriport/build/Agriport/Client/node_modules/moment/locale|sync|/^\\.\\/.*$/","./node_modules/@babel/runtime/helpers/asyncToGenerator.js","./node_modules/rxjs/node_modules/tslib/tslib.es6.js","./node_modules/tslib/tslib.es6.js","./projects/invoker-transport/src/lib/config.ts","./projects/invoker-transport/src/lib/actions/administration/active-users.action.ts","./projects/invoker-transport/src/lib/actions/administration/kriging.action.ts","./projects/invoker-transport/src/lib/actions/agronomic/application-settings.action.ts","./projects/invoker-transport/src/lib/actions/agronomic/monitoring-rules.action.ts","./projects/invoker-transport/src/lib/actions/base-data/crop.types.action.ts","./projects/invoker-transport/src/lib/actions/base-data/fertilizer.inorganic.action.ts","./projects/invoker-transport/src/lib/actions/base-data/fertilizer.organic.action.ts","./projects/invoker-transport/src/lib/actions/base-data/landuse.action.ts","./projects/invoker-transport/src/lib/actions/base-data/plant-protection-products.action.ts","./projects/invoker-transport/src/lib/actions/base-data/subfarm.action.ts","./projects/invoker-transport/src/lib/actions/base-data/user.action.ts","./projects/invoker-transport/src/lib/actions/base-data/variety.action.ts","./projects/invoker-transport/src/lib/actions/base-data/worktypes.action.ts","./projects/invoker-transport/src/lib/actions/base-data/worktype-unit.action.ts","./projects/invoker-transport/src/lib/actions/common/agriport-constants.action.ts","./projects/invoker-transport/src/lib/actions/common/appl-modes.action.ts","./projects/invoker-transport/src/lib/actions/common/contactinformation.action.ts","./projects/invoker-transport/src/lib/actions/common/elements.action.ts","./projects/invoker-transport/src/lib/actions/common/export-formats.action.ts","./projects/invoker-transport/src/lib/actions/common/export-targets.action.ts","./projects/invoker-transport/src/lib/actions/common/factors.action.ts","./projects/invoker-transport/src/lib/actions/common/operation-modes.action.ts","./projects/invoker-transport/src/lib/actions/common/units.action.ts","./projects/invoker-transport/src/lib/actions/common/versioninfo.action.ts","./projects/invoker-transport/src/lib/actions/common/country.action.ts","./projects/invoker-transport/src/lib/actions/common/nuptake-factors.action.ts","./projects/invoker-transport/src/lib/actions/common/effective_ranges.action.ts","./projects/invoker-transport/src/lib/actions/dashboard/news.action.ts","./projects/invoker-transport/src/lib/actions/database/notify.action.ts","./projects/invoker-transport/src/lib/actions/dialog/notify.action.ts","./projects/invoker-transport/src/lib/actions/docu/action.action.ts","./projects/invoker-transport/src/lib/actions/docu/driver.action.ts","./projects/invoker-transport/src/lib/actions/docu/driver.machine.action.ts","./projects/invoker-transport/src/lib/actions/docu/fleet.action.attachment.action.ts","./projects/invoker-transport/src/lib/actions/docu/geojson.action.ts","./projects/invoker-transport/src/lib/actions/docu/instrument.action.ts","./projects/invoker-transport/src/lib/actions/docu/logger.action.ts","./projects/invoker-transport/src/lib/actions/docu/machine.actions.ts","./projects/invoker-transport/src/lib/actions/docu/machine.breaks.action.ts","./projects/invoker-transport/src/lib/actions/docu/machine.logger.action.ts","./projects/invoker-transport/src/lib/actions/docu/slice.action.ts","./projects/invoker-transport/src/lib/actions/evaluation/field.diary.action.ts","./projects/invoker-transport/src/lib/actions/evaluation/performance.report.action.ts","./projects/invoker-transport/src/lib/actions/farm/farm.users.action.ts","./projects/invoker-transport/src/lib/actions/farm/farm.action.ts","./projects/invoker-transport/src/lib/actions/farm/license.action.ts","./projects/invoker-transport/src/lib/actions/fields/monitoring-detail.action.ts","./projects/invoker-transport/src/lib/actions/fields/monitoring-field.action.ts","./projects/invoker-transport/src/lib/actions/fields/monitoring-type.action.ts","./projects/invoker-transport/src/lib/actions/import/upload.action.ts","./projects/invoker-transport/src/lib/actions/layout/menu.action.ts","./projects/invoker-transport/src/lib/actions/login/campaignyear.action.ts","./projects/invoker-transport/src/lib/actions/login/login.action.ts","./projects/invoker-transport/src/lib/actions/login/password.action.ts","./projects/invoker-transport/src/lib/actions/login/agriport-session.action.ts","./projects/invoker-transport/src/lib/actions/n-fertilization/n-fertilization.action.ts","./projects/invoker-transport/src/lib/actions/ndi/ndi.action.ts","./projects/invoker-transport/src/lib/actions/nutrients/soilsampledate.action.ts","./projects/invoker-transport/src/lib/actions/nutrients/soilsampleplanning-report.actions.ts","./projects/invoker-transport/src/lib/actions/parameter/parameter.definition.action.ts","./projects/invoker-transport/src/lib/actions/parameter/parameter.values.action.ts","./projects/invoker-transport/src/lib/actions/parameter/parameter.values.history.action.ts","./projects/invoker-transport/src/lib/actions/settings/access.permission.action.ts","./projects/invoker-transport/src/lib/actions/settings/user.group.action.ts","./projects/invoker-transport/src/lib/actions/settings/user.group.user.action.ts","./projects/invoker-transport/src/lib/actions/settings/usersettings.action.ts","./projects/invoker-transport/src/lib/actions/tracelog/actions.action.ts","./projects/invoker-transport/src/lib/actions/tracelog/client.action.ts","./projects/invoker-transport/src/lib/actions/translation/translation.action.ts","./projects/invoker-transport/src/lib/actions/plant-protection/plant-protection-planbooks.action.ts","./projects/invoker-transport/src/lib/actions/dpl3/lab.result.attachment.action.ts","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/cdk/fesm2015/clipboard.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/platform-browser/fesm2015/platform-browser.mjs","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/async/dist/async.mjs","./node_modules/jsts/hasInterface.js","./node_modules/jsts/java/io/Serializable.js","./node_modules/jsts/java/lang/Character.js","./node_modules/jsts/java/lang/Cloneable.js","./node_modules/jsts/java/lang/Comparable.js","./node_modules/jsts/java/lang/Double.js","./node_modules/jsts/java/lang/Exception.js","./node_modules/jsts/java/lang/IllegalArgumentException.js","./node_modules/jsts/java/lang/IllegalStateException.js","./node_modules/jsts/java/lang/IndexOutOfBoundsException.js","./node_modules/jsts/java/lang/Integer.js","./node_modules/jsts/java/lang/Long.js","./node_modules/jsts/java/lang/RuntimeException.js","./node_modules/jsts/java/lang/StringBuffer.js","./node_modules/jsts/java/lang/StringBuilder.js","./node_modules/jsts/java/lang/System.js","./node_modules/jsts/java/lang/UnsupportedOperationException.js","./node_modules/jsts/java/util/ArrayList.js","./node_modules/jsts/java/util/Arrays.js","./node_modules/jsts/java/util/Collection.js","./node_modules/jsts/java/util/Collections.js","./node_modules/jsts/java/util/Comparator.js","./node_modules/jsts/java/util/HashMap.js","./node_modules/jsts/java/util/HashSet.js","./node_modules/jsts/java/util/List.js","./node_modules/jsts/java/util/Map.js","./node_modules/jsts/java/util/NoSuchElementException.js","./node_modules/jsts/java/util/Set.js","./node_modules/jsts/java/util/EmptyStackException.js","./node_modules/jsts/java/util/Stack.js","./node_modules/jsts/java/util/SortedMap.js","./node_modules/jsts/java/util/TreeMap.js","./node_modules/jsts/java/util/SortedSet.js","./node_modules/jsts/java/util/TreeSet.js","./node_modules/jsts/org/locationtech/jts/algorithm/Angle.js","./node_modules/jsts/org/locationtech/jts/algorithm/BoundaryNodeRule.js","./node_modules/jsts/org/locationtech/jts/algorithm/CGAlgorithmsDD.js","./node_modules/jsts/org/locationtech/jts/algorithm/Distance.js","./node_modules/jsts/org/locationtech/jts/algorithm/Intersection.js","./node_modules/jsts/org/locationtech/jts/algorithm/Orientation.js","./node_modules/jsts/org/locationtech/jts/algorithm/PointLocation.js","./node_modules/jsts/org/locationtech/jts/algorithm/PointLocator.js","./node_modules/jsts/org/locationtech/jts/algorithm/RayCrossingCounter.js","./node_modules/jsts/org/locationtech/jts/algorithm/LineIntersector.js","./node_modules/jsts/org/locationtech/jts/algorithm/RobustLineIntersector.js","./node_modules/jsts/org/locationtech/jts/index/intervalrtree/IntervalRTreeNode.js","./node_modules/jsts/org/locationtech/jts/index/intervalrtree/IntervalRTreeLeafNode.js","./node_modules/jsts/org/locationtech/jts/index/intervalrtree/IntervalRTreeBranchNode.js","./node_modules/jsts/org/locationtech/jts/index/intervalrtree/SortedPackedIntervalRTree.js","./node_modules/jsts/org/locationtech/jts/index/ArrayListVisitor.js","./node_modules/jsts/org/locationtech/jts/algorithm/locate/IndexedPointInAreaLocator.js","./node_modules/jsts/org/locationtech/jts/algorithm/locate/PointOnGeometryLocator.js","./node_modules/jsts/org/locationtech/jts/algorithm/locate/SimplePointInAreaLocator.js","./node_modules/jsts/org/locationtech/jts/util/NumberUtil.js","./node_modules/jsts/org/locationtech/jts/geom/Coordinate.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateArrays.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateFilter.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateList.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequence.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequenceFilter.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequences.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateXY.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateXYM.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateXYZM.js","./node_modules/jsts/org/locationtech/jts/geom/Coordinates.js","./node_modules/jsts/org/locationtech/jts/geom/Dimension.js","./node_modules/jsts/org/locationtech/jts/geom/Envelope.js","./node_modules/jsts/org/locationtech/jts/geom/Geometry.js","./node_modules/jsts/org/locationtech/jts/geom/GeometryCollection.js","./node_modules/jsts/java/util/Iterator.js","./node_modules/jsts/org/locationtech/jts/geom/GeometryCollectionIterator.js","./node_modules/jsts/org/locationtech/jts/geom/GeometryComponentFilter.js","./node_modules/jsts/org/locationtech/jts/geom/CoordinateSequenceFactory.js","./node_modules/jsts/org/locationtech/jts/geom/impl/CoordinateArraySequenceFactory.js","./node_modules/jsts/org/locationtech/jts/geom/GeometryFactory.js","./node_modules/jsts/org/locationtech/jts/geom/GeometryFilter.js","./node_modules/jsts/org/locationtech/jts/geom/IntersectionMatrix.js","./node_modules/jsts/org/locationtech/jts/geom/LineSegment.js","./node_modules/jsts/org/locationtech/jts/geom/LineString.js","./node_modules/jsts/org/locationtech/jts/algorithm/Length.js","./node_modules/jsts/org/locationtech/jts/geom/Lineal.js","./node_modules/jsts/org/locationtech/jts/geom/LinearRing.js","./node_modules/jsts/org/locationtech/jts/geom/Location.js","./node_modules/jsts/org/locationtech/jts/geom/MultiLineString.js","./node_modules/jsts/org/locationtech/jts/geom/MultiPoint.js","./node_modules/jsts/org/locationtech/jts/geom/MultiPolygon.js","./node_modules/jsts/org/locationtech/jts/geom/Point.js","./node_modules/jsts/org/locationtech/jts/algorithm/Area.js","./node_modules/jsts/org/locationtech/jts/geom/Polygon.js","./node_modules/jsts/org/locationtech/jts/geom/Polygonal.js","./node_modules/jsts/org/locationtech/jts/geom/PrecisionModel.js","./node_modules/jsts/org/locationtech/jts/geom/Puntal.js","./node_modules/jsts/org/locationtech/jts/geom/TopologyException.js","./node_modules/jsts/org/locationtech/jts/algorithm/NotRepresentableException.js","./node_modules/jsts/org/locationtech/jts/algorithm/HCoordinate.js","./node_modules/jsts/org/locationtech/jts/geom/Triangle.js","./node_modules/jsts/org/locationtech/jts/geom/impl/CoordinateArraySequence.js","./node_modules/jsts/org/locationtech/jts/geom/util/GeometryCollectionMapper.js","./node_modules/jsts/org/locationtech/jts/geom/util/GeometryCombiner.js","./node_modules/jsts/org/locationtech/jts/geom/util/GeometryTransformer.js","./node_modules/jsts/org/locationtech/jts/geom/util/LinearComponentExtracter.js","./node_modules/jsts/org/locationtech/jts/geom/util/PointExtracter.js","./node_modules/jsts/org/locationtech/jts/geom/util/PolygonExtracter.js","./node_modules/jsts/org/locationtech/jts/geom/util/ShortCircuitedGeometryVisitor.js","./node_modules/jsts/org/locationtech/jts/geomgraph/DirectedEdge.js","./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeIntersection.js","./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeIntersectionList.js","./node_modules/jsts/org/locationtech/jts/util/IntArrayList.js","./node_modules/jsts/org/locationtech/jts/geomgraph/index/MonotoneChainIndexer.js","./node_modules/jsts/org/locationtech/jts/geomgraph/index/MonotoneChainEdge.js","./node_modules/jsts/org/locationtech/jts/geomgraph/Depth.js","./node_modules/jsts/org/locationtech/jts/geomgraph/Edge.js","./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeEnd.js","./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeEndStar.js","./node_modules/jsts/org/locationtech/jts/noding/OrientedCoordinateArray.js","./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeList.js","./node_modules/jsts/org/locationtech/jts/geomgraph/index/MonotoneChain.js","./node_modules/jsts/org/locationtech/jts/geomgraph/index/SweepLineEvent.js","./node_modules/jsts/org/locationtech/jts/geomgraph/index/SegmentIntersector.js","./node_modules/jsts/org/locationtech/jts/geomgraph/index/SimpleMCSweepLineIntersector.js","./node_modules/jsts/org/locationtech/jts/geomgraph/index/EdgeSetIntersector.js","./node_modules/jsts/org/locationtech/jts/geomgraph/GeometryGraph.js","./node_modules/jsts/org/locationtech/jts/geomgraph/GraphComponent.js","./node_modules/jsts/org/locationtech/jts/geomgraph/TopologyLocation.js","./node_modules/jsts/org/locationtech/jts/geomgraph/Label.js","./node_modules/jsts/org/locationtech/jts/geomgraph/Node.js","./node_modules/jsts/org/locationtech/jts/geomgraph/NodeFactory.js","./node_modules/jsts/org/locationtech/jts/geomgraph/NodeMap.js","./node_modules/jsts/org/locationtech/jts/geomgraph/PlanarGraph.js","./node_modules/jsts/org/locationtech/jts/geomgraph/Position.js","./node_modules/jsts/org/locationtech/jts/geomgraph/Quadrant.js","./node_modules/jsts/org/locationtech/jts/index/ItemVisitor.js","./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChain.js","./node_modules/jsts/org/locationtech/jts/index/strtree/Boundable.js","./node_modules/jsts/org/locationtech/jts/index/strtree/ItemBoundable.js","./node_modules/jsts/org/locationtech/jts/util/PriorityQueue.js","./node_modules/jsts/org/locationtech/jts/index/SpatialIndex.js","./node_modules/jsts/org/locationtech/jts/index/strtree/AbstractNode.js","./node_modules/jsts/org/locationtech/jts/index/strtree/EnvelopeDistance.js","./node_modules/jsts/org/locationtech/jts/index/strtree/BoundablePair.js","./node_modules/jsts/org/locationtech/jts/index/strtree/AbstractSTRtree.js","./node_modules/jsts/org/locationtech/jts/index/strtree/ItemDistance.js","./node_modules/jsts/org/locationtech/jts/index/strtree/STRtree.js","./node_modules/jsts/org/locationtech/jts/io/OL3Parser.js","./node_modules/jsts/org/locationtech/jts/io/WKTParser.js","./node_modules/jsts/org/locationtech/jts/io/WKTWriter.js","./node_modules/jsts/org/locationtech/jts/math/DD.js","./node_modules/jsts/org/locationtech/jts/math/MathUtil.js","./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainOverlapAction.js","./node_modules/jsts/org/locationtech/jts/index/chain/MonotoneChainBuilder.js","./node_modules/jsts/org/locationtech/jts/noding/SinglePassNoder.js","./node_modules/jsts/org/locationtech/jts/noding/MCIndexNoder.js","./node_modules/jsts/org/locationtech/jts/noding/SegmentPointComparator.js","./node_modules/jsts/org/locationtech/jts/noding/SegmentNode.js","./node_modules/jsts/org/locationtech/jts/noding/SegmentNodeList.js","./node_modules/jsts/org/locationtech/jts/noding/NodableSegmentString.js","./node_modules/jsts/org/locationtech/jts/noding/NodedSegmentString.js","./node_modules/jsts/org/locationtech/jts/noding/Noder.js","./node_modules/jsts/org/locationtech/jts/noding/Octant.js","./node_modules/jsts/org/locationtech/jts/noding/SegmentIntersector.js","./node_modules/jsts/org/locationtech/jts/noding/SegmentString.js","./node_modules/jsts/org/locationtech/jts/operation/GeometryGraphOperation.js","./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeRing.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/MinimalEdgeRing.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/MaximalEdgeRing.js","./node_modules/jsts/org/locationtech/jts/geomgraph/DirectedEdgeStar.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/OverlayNodeFactory.js","./node_modules/jsts/org/locationtech/jts/noding/BasicSegmentString.js","./node_modules/jsts/org/locationtech/jts/noding/NodingIntersectionFinder.js","./node_modules/jsts/org/locationtech/jts/noding/FastNodingValidator.js","./node_modules/jsts/org/locationtech/jts/geomgraph/EdgeNodingValidator.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/LineBuilder.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/PointBuilder.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/OverlayOp.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/PolygonBuilder.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/snap/LineStringSnapper.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/snap/GeometrySnapper.js","./node_modules/jsts/org/locationtech/jts/precision/CommonBits.js","./node_modules/jsts/org/locationtech/jts/precision/CommonBitsRemover.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/snap/SnapOverlayOp.js","./node_modules/jsts/org/locationtech/jts/operation/overlay/snap/SnapIfNeededOverlayOp.js","./node_modules/jsts/org/locationtech/jts/operation/relate/EdgeEndBuilder.js","./node_modules/jsts/org/locationtech/jts/operation/relate/EdgeEndBundle.js","./node_modules/jsts/org/locationtech/jts/operation/relate/EdgeEndBundleStar.js","./node_modules/jsts/org/locationtech/jts/operation/relate/RelateNode.js","./node_modules/jsts/org/locationtech/jts/operation/relate/RelateNodeFactory.js","./node_modules/jsts/org/locationtech/jts/operation/union/UnionOp.js","./node_modules/jsts/org/locationtech/jts/operation/valid/ConnectedInteriorTester.js","./node_modules/jsts/org/locationtech/jts/operation/relate/RelateNodeGraph.js","./node_modules/jsts/org/locationtech/jts/operation/valid/ConsistentAreaTester.js","./node_modules/jsts/org/locationtech/jts/operation/valid/IndexedNestedRingTester.js","./node_modules/jsts/org/locationtech/jts/operation/valid/TopologyValidationError.js","./node_modules/jsts/org/locationtech/jts/operation/valid/IsValidOp.js","./node_modules/jsts/org/locationtech/jts/util/AssertionFailedException.js","./node_modules/jsts/org/locationtech/jts/util/Assert.js","./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.mjs","./node_modules/@angular/cdk/fesm2015/bidi.mjs","./node_modules/@angular/cdk/fesm2015/platform.mjs","./node_modules/@angular/cdk/fesm2015/portal.mjs","./node_modules/@angular/cdk/fesm2015/coercion.mjs","./node_modules/ngx-scrollbar/fesm2015/ngx-scrollbar-smooth-scroll.mjs","./node_modules/ngx-scrollbar/fesm2015/ngx-scrollbar.mjs"],"sourcesContent":["import IFieldNutrientsMap = Data.Nutrients.IFieldNutrientsMap;\nimport ISoilSampleFieldDistribution = Data.Nutrients.ISoilSampleFieldDistribution;\nimport ISoilSample = Data.Nutrients.ISoilSample;\nimport {IAction, IApInvokerArguments} from '../../interfaces';\n\nexport enum SoilSampleFieldActions {\n SOIL_SAMPLE_FIELD_LOAD = '[soilsamplefield] load',\n SOIL_SAMPLE_FIELD_LOAD_SUCCESS = '[soilsamplefield] load success',\n SOIL_SAMPLE_FIELD_LOAD_FAIL = '[soilsamplefield] load fail',\n SOIL_SAMPLE_FIELD_DISTRIBUTIONS_LOAD = '[soilsamplefield] distributions load',\n SOIL_SAMPLE_FIELD_DISTRIBUTIONS_LOAD_SUCCESS = '[soilsamplefield] distributions load success',\n SOIL_SAMPLE_FIELD_DISTRIBUTIONS_DRAW_COMPLETE = '[soilsamplefield] distributions draw complete',\n SOIL_SAMPLE_LOAD = '[soilsample] load',\n SOIL_SAMPLE_LOAD_SUCCESS = '[soilsample] load success',\n SOIL_SAMPLE_DRAW_COMPLETE = '[soilsample] draw complete',\n SAMPLE_TRACKS_SHAPE_EXPORT = '[sample] tracks shape export',\n SAMPLE_TRACKS_SHAPE_EXPORT_SUCCESS = '[sample] tracks shape export success',\n SAMPLE_POINTS_EXCEL_EXPORT = '[sample] points excel export',\n SAMPLE_POINTS_EXCEL_EXPORT_SUCCESS = '[sample] points excel export success',\n SAMPLE_TRACKS_INFO = '[sample] tracks info',\n SAMPLE_TRACKS_INFO_SUCCESS = '[sample] tracks info success'\n}\n\nexport class SoilSampleFieldLoad implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_FIELD_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SoilSampleFieldLoadSuccess implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_FIELD_LOAD_SUCCESS;\n\n constructor(public payload: IFieldNutrientsMap[]) {\n }\n}\n\nexport class SoilSampleFieldLoadFail implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_FIELD_LOAD_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class SoilSampleFieldDistributionLoad implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_FIELD_DISTRIBUTIONS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SoilSampleFieldDistributionLoadSuccess implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_FIELD_DISTRIBUTIONS_LOAD_SUCCESS;\n\n constructor(public payload: ISoilSampleFieldDistribution[]) {\n }\n}\n\nexport class SoilSampleFieldDistributionDrawComplete implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_FIELD_DISTRIBUTIONS_DRAW_COMPLETE;\n}\n\nexport class SoilSampleLoad implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SoilSampleLoadSuccess implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_LOAD_SUCCESS;\n\n constructor(public payload: ISoilSample[]) {\n }\n}\n\nexport class SoilSampleDrawComplete implements IAction {\n readonly type = SoilSampleFieldActions.SOIL_SAMPLE_DRAW_COMPLETE;\n}\n\nexport class SampleTracksShapeExport implements IAction {\n readonly type = SoilSampleFieldActions.SAMPLE_TRACKS_SHAPE_EXPORT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SampleTracksShapeExportSuccess implements IAction {\n readonly type = SoilSampleFieldActions.SAMPLE_TRACKS_SHAPE_EXPORT_SUCCESS;\n\n constructor(public payload: ArrayBuffer) {\n }\n}\n\nexport class SamplePointsExcelExport implements IAction {\n readonly type = SoilSampleFieldActions.SAMPLE_POINTS_EXCEL_EXPORT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SamplePointsExcelExportSuccess implements IAction {\n readonly type = SoilSampleFieldActions.SAMPLE_POINTS_EXCEL_EXPORT_SUCCESS;\n\n constructor(public payload: ArrayBuffer) {\n }\n}\n\nexport class SampleTracksInfo implements IAction {\n readonly type = SoilSampleFieldActions.SAMPLE_TRACKS_INFO;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SampleTracksInfoSuccess implements IAction {\n readonly type = SoilSampleFieldActions.SAMPLE_TRACKS_INFO_SUCCESS;\n\n constructor(public payload: ArrayBuffer) {\n }\n}\n","/* tslint:disable */\n\nexport enum ApCustomTypes {\n\tData_ApLinqExtensionMethods = 'Data.ApLinqExtensionMethods',\n\tData_TypeExtensions_DateTimeArrayMapper = 'Data.TypeExtensions.DateTimeArrayMapper',\n\tData_TypeExtensions_DateTimeListMapper = 'Data.TypeExtensions.DateTimeListMapper',\n\tData_TypeExtensions_IntListMapper = 'Data.TypeExtensions.IntListMapper',\n\tData_TypeExtensions_RegionMapper = 'Data.TypeExtensions.RegionMapper',\n\tData_TypeExtensions_StringArrayMapper = 'Data.TypeExtensions.StringArrayMapper',\n\tData_TypeExtensions_StringListMapper = 'Data.TypeExtensions.StringListMapper',\n\tData_TypeExtensions_UuidListUserType = 'Data.TypeExtensions.UuidListUserType',\n\tData_TypeExtensions_Driver_NpgsqlDriverExtended = 'Data.TypeExtensions.Driver.NpgsqlDriverExtended',\n\tData_TypeExtensions_Driver_NpgsqlExtendedSqlType = 'Data.TypeExtensions.Driver.NpgsqlExtendedSqlType',\n\tData_UserType_BaseUserType = 'Data.UserType.BaseUserType',\n\tData_UserType_Base64Type = 'Data.UserType.Base64Type',\n\tData_UserType_CacheInfo = 'Data.UserType.CacheInfo',\n\tData_UserType_CacheModel = 'Data.UserType.CacheModel',\n\tData_UserType_IVersionsIndex = 'Data.UserType.IVersionsIndex',\n\tData_UserType_GeometryType = 'Data.UserType.GeometryType',\n\tData_UserType_GuidArrayType = 'Data.UserType.GuidArrayType',\n\tData_UserType_IntArrayType = 'Data.UserType.IntArrayType',\n\tData_UserType_IntervalType = 'Data.UserType.IntervalType',\n\tData_UserType_JsonbUserType = 'Data.UserType.JsonbUserType',\n\tData_UserType_PointType = 'Data.UserType.PointType',\n\tData_UserType_StringArrayType = 'Data.UserType.StringArrayType',\n\tData_Tracelog_Actions = 'Data.Tracelog.Actions',\n\tData_Tracelog_ActionDataType = 'Data.Tracelog.ActionDataType',\n\tData_Tracelog_ApiLog = 'Data.Tracelog.ApiLog',\n\tData_Tracelog_Backend = 'Data.Tracelog.Backend',\n\tData_Tracelog_Client = 'Data.Tracelog.Client',\n\tData_Tracelog_ErpSyncLog = 'Data.Tracelog.ErpSyncLog',\n\tData_Tracelog_ILog = 'Data.Tracelog.ILog',\n\tData_Tracelog_MailCollectorLog = 'Data.Tracelog.MailCollectorLog',\n\tData_Tracelog_MissingFactors = 'Data.Tracelog.MissingFactors',\n\tData_Tracelog_MissingTranslations = 'Data.Tracelog.MissingTranslations',\n\tData_Tracelog_MqttServiceLog = 'Data.Tracelog.MqttServiceLog',\n\tData_Tracelog_PtsBrokerLog = 'Data.Tracelog.PtsBrokerLog',\n\tData_Tracelog_SatBrokerLog = 'Data.Tracelog.SatBrokerLog',\n\tData_Tracelog_SchedulerLog = 'Data.Tracelog.SchedulerLog',\n\tData_Tracelog_TrialActivation = 'Data.Tracelog.TrialActivation',\n\tData_TaskManagement_BasicFertilisationPlanBooks = 'Data.TaskManagement.BasicFertilisationPlanBooks',\n\tData_TaskManagement_BasicFertilisationSummaries = 'Data.TaskManagement.BasicFertilisationSummaries',\n\tData_TaskManagement_IPlanBook = 'Data.TaskManagement.IPlanBook',\n\tData_TaskManagement_NFertilizationAdditionalValues = 'Data.TaskManagement.NFertilizationAdditionalValues',\n\tData_TaskManagement_NFertilizationAdditionalValuesUserType = 'Data.TaskManagement.NFertilizationAdditionalValuesUserType',\n\tData_TaskManagement_NFertilizationPlanBook = 'Data.TaskManagement.NFertilizationPlanBook',\n\tData_TaskManagement_NFertilizationSummary = 'Data.TaskManagement.NFertilizationSummary',\n\tData_TaskManagement_NminPotentials = 'Data.TaskManagement.NminPotentials',\n\tData_TaskManagement_NutrientFertilisationPlanBooksStatisticValue = 'Data.TaskManagement.NutrientFertilisationPlanBooksStatisticValue',\n\tData_TaskManagement_NutrientFertilisationPlanBooksStatisticValueUserType = 'Data.TaskManagement.NutrientFertilisationPlanBooksStatisticValueUserType',\n\tData_TaskManagement_StatisticHistogram = 'Data.TaskManagement.StatisticHistogram',\n\tData_TaskManagement_NutrientFertilisationStatisticValue = 'Data.TaskManagement.NutrientFertilisationStatisticValue',\n\tData_TaskManagement_NutrientFertilisationValueUserType = 'Data.TaskManagement.NutrientFertilisationValueUserType',\n\tData_TaskManagement_PlantProtectionPlanBook = 'Data.TaskManagement.PlantProtectionPlanBook',\n\tData_TaskManagement_PlantProtectionProductList = 'Data.TaskManagement.PlantProtectionProductList',\n\tData_TaskManagement_PlantProtectionProductListDetails = 'Data.TaskManagement.PlantProtectionProductListDetails',\n\tData_TaskManagement_PlantProtectionProductListDetailsUserType = 'Data.TaskManagement.PlantProtectionProductListDetailsUserType',\n\tData_TaskManagement_PlantProtectionSummary = 'Data.TaskManagement.PlantProtectionSummary',\n\tData_TaskManagement_PlantProtectionPlanAdditionalValues = 'Data.TaskManagement.PlantProtectionPlanAdditionalValues',\n\tData_TaskManagement_PlantProtectionPlanAdditionalValuesUserType = 'Data.TaskManagement.PlantProtectionPlanAdditionalValuesUserType',\n\tData_TaskManagement_TaskManagementExportException = 'Data.TaskManagement.TaskManagementExportException',\n\tData_TaskManagement_TaskManagementModule = 'Data.TaskManagement.TaskManagementModule',\n\tData_TaskManagement_TaskManagementPlanBook = 'Data.TaskManagement.TaskManagementPlanBook',\n\tData_TaskManagement_TaskManagementPlanSummary = 'Data.TaskManagement.TaskManagementPlanSummary',\n\tData_TaskManagement_TaskManagementStatus = 'Data.TaskManagement.TaskManagementStatus',\n\tData_TaskManagement_TaskManagementUnit = 'Data.TaskManagement.TaskManagementUnit',\n\tData_Sensor_DatasetFieldMap = 'Data.Sensor.DatasetFieldMap',\n\tData_Sensor_Logs = 'Data.Sensor.Logs',\n\tData_Sensor_LogValues = 'Data.Sensor.LogValues',\n\tData_Sensor_OrthoPhoto = 'Data.Sensor.OrthoPhoto',\n\tData_Sensor_SensorFieldData = 'Data.Sensor.SensorFieldData',\n\tData_Queue_ActionQueueItem = 'Data.Queue.ActionQueueItem',\n\tData_PlantProtection_PlantProtectionLogEdit = 'Data.PlantProtection.PlantProtectionLogEdit',\n\tData_PlantProtection_PlantProtectionLogEditProduct = 'Data.PlantProtection.PlantProtectionLogEditProduct',\n\tData_PfBox_CropApplNum = 'Data.PfBox.CropApplNum',\n\tData_Parameter_ListValuesMapping = 'Data.Parameter.ListValuesMapping',\n\tData_Parameter_ListValuesMappingUserType = 'Data.Parameter.ListValuesMappingUserType',\n\tData_Parameter_ParameterDefinition = 'Data.Parameter.ParameterDefinition',\n\tData_Parameter_ParameterValue = 'Data.Parameter.ParameterValue',\n\tData_Parameter_ParameterValueHistory = 'Data.Parameter.ParameterValueHistory',\n\tData_Parameter_Enums_OperationType = 'Data.Parameter.Enums.OperationType',\n\tData_Parameter_Enums_ParameterRefObjectType = 'Data.Parameter.Enums.ParameterRefObjectType',\n\tData_Parameter_Enums_ParameterType = 'Data.Parameter.Enums.ParameterType',\n\tData_Nutrients_BuRasterStatistic = 'Data.Nutrients.BuRasterStatistic',\n\tData_Nutrients_FieldDistribution = 'Data.Nutrients.FieldDistribution',\n\tData_Nutrients_FieldNutrientPlanningStatistic = 'Data.Nutrients.FieldNutrientPlanningStatistic',\n\tData_Nutrients_StatisticHistogram = 'Data.Nutrients.StatisticHistogram',\n\tData_Nutrients_FieldNutrientsDistribution = 'Data.Nutrients.FieldNutrientsDistribution',\n\tData_Nutrients_Histogram = 'Data.Nutrients.Histogram',\n\tData_Nutrients_FieldNutrientsMap = 'Data.Nutrients.FieldNutrientsMap',\n\tData_Nutrients_GeometryValue = 'Data.Nutrients.GeometryValue',\n\tData_Nutrients_IrRasterMetaData = 'Data.Nutrients.IrRasterMetaData',\n\tData_Nutrients_IrRasterFieldStatisticUserType = 'Data.Nutrients.IrRasterFieldStatisticUserType',\n\tData_Nutrients_NPlanningPolygon = 'Data.Nutrients.NPlanningPolygon',\n\tData_Nutrients_NPlanningPolygonsUserData = 'Data.Nutrients.NPlanningPolygonsUserData',\n\tData_Nutrients_NPlanningPolygonData = 'Data.Nutrients.NPlanningPolygonData',\n\tData_Nutrients_NPlanningPolygonDataUserType = 'Data.Nutrients.NPlanningPolygonDataUserType',\n\tData_Nutrients_NRasterStatistic = 'Data.Nutrients.NRasterStatistic',\n\tData_Nutrients_NutrientPlanningPolygons = 'Data.Nutrients.NutrientPlanningPolygons',\n\tData_Nutrients_NutrientsPlanningPolygonData = 'Data.Nutrients.NutrientsPlanningPolygonData',\n\tData_Nutrients_NutrientsPlanningPolygonDataUserType = 'Data.Nutrients.NutrientsPlanningPolygonDataUserType',\n\tData_Nutrients_PlRasterStatistic = 'Data.Nutrients.PlRasterStatistic',\n\tData_Nutrients_RasterCreationResult = 'Data.Nutrients.RasterCreationResult',\n\tData_Nutrients_RasterOrigin = 'Data.Nutrients.RasterOrigin',\n\tData_Nutrients_RasterStatistic = 'Data.Nutrients.RasterStatistic',\n\tData_Nutrients_RasterStatisticUserType = 'Data.Nutrients.RasterStatisticUserType',\n\tData_Nutrients_FieldRasterStatisticUserType = 'Data.Nutrients.FieldRasterStatisticUserType',\n\tData_Nutrients_RbRasterStatisticUserType = 'Data.Nutrients.RbRasterStatisticUserType',\n\tData_Nutrients_RbRasterMetaData = 'Data.Nutrients.RbRasterMetaData',\n\tData_Nutrients_RbStatistic = 'Data.Nutrients.RbStatistic',\n\tData_Nutrients_SampleMethod = 'Data.Nutrients.SampleMethod',\n\tData_Nutrients_SampleRegion = 'Data.Nutrients.SampleRegion',\n\tData_Nutrients_SampleTracks = 'Data.Nutrients.SampleTracks',\n\tData_Nutrients_SoilAnalysisGrid = 'Data.Nutrients.SoilAnalysisGrid',\n\tData_Nutrients_SoilSample = 'Data.Nutrients.SoilSample',\n\tData_Nutrients_SoilSampleField = 'Data.Nutrients.SoilSampleField',\n\tData_Nutrients_SoilSampleFieldDistribution = 'Data.Nutrients.SoilSampleFieldDistribution',\n\tData_Nutrients_SoilSampleFieldState = 'Data.Nutrients.SoilSampleFieldState',\n\tData_Nutrients_UpdateFieldGeomsParameter = 'Data.Nutrients.UpdateFieldGeomsParameter',\n\tData_Nutrients_WsvRasterMetaData = 'Data.Nutrients.WsvRasterMetaData',\n\tData_Nutrients_WsvRasterFieldStatisticUserType = 'Data.Nutrients.WsvRasterFieldStatisticUserType',\n\tData_Nutrients_WsvRasterStatistic = 'Data.Nutrients.WsvRasterStatistic',\n\tData_NFertilization_CropEcN = 'Data.NFertilization.CropEcN',\n\tData_NFertilization_CropEcSn = 'Data.NFertilization.CropEcSn',\n\tData_NFertilization_NFertilizationDetail = 'Data.NFertilization.NFertilizationDetail',\n\tData_NFertilization_NFertilizationNeedValue = 'Data.NFertilization.NFertilizationNeedValue',\n\tData_NFertilization_NPlanningData = 'Data.NFertilization.NPlanningData',\n\tData_NFertilization_NSensorRasterValues = 'Data.NFertilization.NSensorRasterValues',\n\tData_NDI_CreateNIndexRasterResult = 'Data.NDI.CreateNIndexRasterResult',\n\tData_NDI_NdiStatistic = 'Data.NDI.NdiStatistic',\n\tData_NDI_NdiStatisticUserType = 'Data.NDI.NdiStatisticUserType',\n\tData_NDI_Enums_ScanType = 'Data.NDI.Enums.ScanType',\n\tData_Metrics_ActionCount = 'Data.Metrics.ActionCount',\n\tData_Metrics_ActionDuration = 'Data.Metrics.ActionDuration',\n\tData_Metrics_JobMetrics = 'Data.Metrics.JobMetrics',\n\tData_Metrics_ModuleNavigation = 'Data.Metrics.ModuleNavigation',\n\tData_MenuStructure_MenuChildren = 'Data.MenuStructure.MenuChildren',\n\tData_MenuStructure_MenuEntry = 'Data.MenuStructure.MenuEntry',\n\tData_Licensing_Feature = 'Data.Licensing.Feature',\n\tData_Licensing_FeatureModul = 'Data.Licensing.FeatureModul',\n\tData_Licensing_License = 'Data.Licensing.License',\n\tData_Licensing_Enums_LicenseAdjustAction = 'Data.Licensing.Enums.LicenseAdjustAction',\n\tData_Language_Language = 'Data.Language.Language',\n\tData_Language_Translation = 'Data.Language.Translation',\n\tData_Job_CreateBuRasterJobInput = 'Data.Job.CreateBuRasterJobInput',\n\tData_Job_FieldRasterJobConfiguration = 'Data.Job.FieldRasterJobConfiguration',\n\tData_Job_IMapFactoryRegexBuilder = 'Data.Job.IMapFactoryRegexBuilder',\n\tData_Job_InvalidateMapFactoryCacheInput = 'Data.Job.InvalidateMapFactoryCacheInput',\n\tData_Job_IpsImportJobConfiguration = 'Data.Job.IpsImportJobConfiguration',\n\tData_Job_IInterpolationDatabaseProperty = 'Data.Job.IInterpolationDatabaseProperty',\n\tData_Job_Jobs = 'Data.Job.Jobs',\n\tData_Job_JobsChanges = 'Data.Job.JobsChanges',\n\tData_Job_JobStatus = 'Data.Job.JobStatus',\n\tData_Job_JobTypes = 'Data.Job.JobTypes',\n\tData_Job_MapFactoryFarmIdInput = 'Data.Job.MapFactoryFarmIdInput',\n\tData_Job_MapFactoryGuidInput = 'Data.Job.MapFactoryGuidInput',\n\tData_Job_MapFactoryGuidListInput = 'Data.Job.MapFactoryGuidListInput',\n\tData_Job_MapFactoryRegexInput = 'Data.Job.MapFactoryRegexInput',\n\tData_Job_MapFactorySoilSampleFieldIdsInput = 'Data.Job.MapFactorySoilSampleFieldIdsInput',\n\tData_Job_RasterJobConfiguration = 'Data.Job.RasterJobConfiguration',\n\tData_Job_RecontouringJobConfiguration = 'Data.Job.RecontouringJobConfiguration',\n\tData_Job_RefreshBuRasterJobInput = 'Data.Job.RefreshBuRasterJobInput',\n\tData_Job_RefreshCeRasterJobInput = 'Data.Job.RefreshCeRasterJobInput',\n\tData_Job_RefreshWsvRasterJobInput = 'Data.Job.RefreshWsvRasterJobInput',\n\tData_Job_RemoteJobOptions = 'Data.Job.RemoteJobOptions',\n\tData_Job_RemoteJobSshOptions = 'Data.Job.RemoteJobSshOptions',\n\tData_Job_Schedule = 'Data.Job.Schedule',\n\tData_Job_Configurations_Configuration = 'Data.Job.Configurations.Configuration',\n\tData_Job_Configurations_MongoDbConfiguration = 'Data.Job.Configurations.MongoDbConfiguration',\n\tData_Job_Configurations_NApplicationMapConfiguration = 'Data.Job.Configurations.NApplicationMapConfiguration',\n\tData_Job_Configurations_NLogInterpolationJobConfiguration = 'Data.Job.Configurations.NLogInterpolationJobConfiguration',\n\tData_Job_Configurations_NSensorLogfileMapData = 'Data.Job.Configurations.NSensorLogfileMapData',\n\tData_Job_Configurations_NSensorLogFileParserData = 'Data.Job.Configurations.NSensorLogFileParserData',\n\tData_Job_Configurations_NTransformJobConfiguration = 'Data.Job.Configurations.NTransformJobConfiguration',\n\tData_Job_Configurations_NutrientPlanningJobConfiguration = 'Data.Job.Configurations.NutrientPlanningJobConfiguration',\n\tData_Job_Configurations_PostgresConfiguration = 'Data.Job.Configurations.PostgresConfiguration',\n\tData_Job_Configurations_PpApplicationMapConfiguration = 'Data.Job.Configurations.PpApplicationMapConfiguration',\n\tData_Job_Configurations_RbRasterJobConfiguration = 'Data.Job.Configurations.RbRasterJobConfiguration',\n\tData_Job_Configurations_SensorLogFileConverterData = 'Data.Job.Configurations.SensorLogFileConverterData',\n\tData_IpsPlanning_DeletedSoilSampleField = 'Data.IpsPlanning.DeletedSoilSampleField',\n\tData_IpsPlanning_IpsContouringSamples = 'Data.IpsPlanning.IpsContouringSamples',\n\tData_IpsPlanning_SampleDateObject = 'Data.IpsPlanning.SampleDateObject',\n\tData_IpsPlanning_SoilSamplePlanning = 'Data.IpsPlanning.SoilSamplePlanning',\n\tData_IpsPlanning_SoilSamplePlanningExportData = 'Data.IpsPlanning.SoilSamplePlanningExportData',\n\tData_Import_CsvColumn = 'Data.Import.CsvColumn',\n\tData_Import_CsvHeaderColumn = 'Data.Import.CsvHeaderColumn',\n\tData_Import_CsvHeaderType = 'Data.Import.CsvHeaderType',\n\tData_Import_CsvType = 'Data.Import.CsvType',\n\tData_Import_DataSet = 'Data.Import.DataSet',\n\tData_Import_DataSetColumn = 'Data.Import.DataSetColumn',\n\tData_Import_DataSetType = 'Data.Import.DataSetType',\n\tData_Import_HeaderValues = 'Data.Import.HeaderValues',\n\tData_Import_HeaderValuesUserType = 'Data.Import.HeaderValuesUserType',\n\tData_Import_ImportDataSet = 'Data.Import.ImportDataSet',\n\tData_Import_ImportFile = 'Data.Import.ImportFile',\n\tData_Import_ImportState = 'Data.Import.ImportState',\n\tData_Import_MongoFileRefDirection = 'Data.Import.MongoFileRefDirection',\n\tData_Import_ImportResult = 'Data.Import.ImportResult',\n\tData_Import_Log = 'Data.Import.Log',\n\tData_Import_LogRecord = 'Data.Import.LogRecord',\n\tData_Import_NSensorLogHeaderData = 'Data.Import.NSensorLogHeaderData',\n\tData_Import_PlantProtectionSensorLogAgentData = 'Data.Import.PlantProtectionSensorLogAgentData',\n\tData_Import_PlantProtectionSensorLogHeaderData = 'Data.Import.PlantProtectionSensorLogHeaderData',\n\tData_Import_SensorLogHeaderData = 'Data.Import.SensorLogHeaderData',\n\tData_GeometryEditor_GeometryUpdate = 'Data.GeometryEditor.GeometryUpdate',\n\tData_GeometryEditor_GeometryUpdateType = 'Data.GeometryEditor.GeometryUpdateType',\n\tData_Geometry_GeoJsonLine = 'Data.Geometry.GeoJsonLine',\n\tData_Geometry_GeoJsonMultiLine = 'Data.Geometry.GeoJsonMultiLine',\n\tData_Geometry_GeoJsonMultiPoint = 'Data.Geometry.GeoJsonMultiPoint',\n\tData_Geometry_GeoJsonMultiPolygon = 'Data.Geometry.GeoJsonMultiPolygon',\n\tData_Geometry_GeoJsonPoint = 'Data.Geometry.GeoJsonPoint',\n\tData_Geometry_GeoJsonPolygon = 'Data.Geometry.GeoJsonPolygon',\n\tData_FungidetectManagement_Fungidetect = 'Data.FungidetectManagement.Fungidetect',\n\tData_FungidetectManagement_FungidetectDetail = 'Data.FungidetectManagement.FungidetectDetail',\n\tData_Fields_MonitoringDetail = 'Data.Fields.MonitoringDetail',\n\tData_Fields_MonitoringDetailAttachment = 'Data.Fields.MonitoringDetailAttachment',\n\tData_Fields_MonitoringField = 'Data.Fields.MonitoringField',\n\tData_Fields_MonitoringType = 'Data.Fields.MonitoringType',\n\tData_FieldManagement_CropRotationAttributes = 'Data.FieldManagement.CropRotationAttributes',\n\tData_FieldManagement_CropRotationCell = 'Data.FieldManagement.CropRotationCell',\n\tData_FieldManagement_CropRotationCombined = 'Data.FieldManagement.CropRotationCombined',\n\tData_FieldManagement_CropRotationNeed = 'Data.FieldManagement.CropRotationNeed',\n\tData_FieldManagement_Field = 'Data.FieldManagement.Field',\n\tData_FieldManagement_FieldBase = 'Data.FieldManagement.FieldBase',\n\tData_FieldManagement_FieldCrop = 'Data.FieldManagement.FieldCrop',\n\tData_FieldManagement_FieldCropExtensions = 'Data.FieldManagement.FieldCropExtensions',\n\tData_FieldManagement_CropRotationYield = 'Data.FieldManagement.CropRotationYield',\n\tData_FieldManagement_CropRotation = 'Data.FieldManagement.CropRotation',\n\tData_FieldManagement_FieldCropRotation = 'Data.FieldManagement.FieldCropRotation',\n\tData_FieldManagement_FieldCropRotationHistory = 'Data.FieldManagement.FieldCropRotationHistory',\n\tData_FieldManagement_FieldCropIntersection = 'Data.FieldManagement.FieldCropIntersection',\n\tData_FieldManagement_FieldGeom = 'Data.FieldManagement.FieldGeom',\n\tData_FieldManagement_FieldGeomMin = 'Data.FieldManagement.FieldGeomMin',\n\tData_FieldManagement_FieldGeomPackage = 'Data.FieldManagement.FieldGeomPackage',\n\tData_FieldManagement_FieldGrowth = 'Data.FieldManagement.FieldGrowth',\n\tData_FieldManagement_FieldIntegrateResult = 'Data.FieldManagement.FieldIntegrateResult',\n\tData_FieldManagement_FieldMin = 'Data.FieldManagement.FieldMin',\n\tData_FieldManagement_FieldYield = 'Data.FieldManagement.FieldYield',\n\tData_Export_IsobusDDI = 'Data.Export.IsobusDDI',\n\tData_Dpl3_LabResultAttachment = 'Data.Dpl3.LabResultAttachment',\n\tData_DocuContext_DocuContextCreateModelBase = 'Data.DocuContext.DocuContextCreateModelBase',\n\tData_DocuContext_DocuContextDeleteModelBase = 'Data.DocuContext.DocuContextDeleteModelBase',\n\tData_DocuContext_DocuContextReadModelBase = 'Data.DocuContext.DocuContextReadModelBase',\n\tData_DocuContext_DocuContextUpdateModelBase = 'Data.DocuContext.DocuContextUpdateModelBase',\n\tData_DocuContext_MachineSlicesSet = 'Data.DocuContext.MachineSlicesSet',\n\tData_DocuContext_UserData_ReadUserDataModel = 'Data.DocuContext.UserData.ReadUserDataModel',\n\tData_DocuContext_Slice_CombinedSlice = 'Data.DocuContext.Slice.CombinedSlice',\n\tData_DocuContext_Slice_Slice = 'Data.DocuContext.Slice.Slice',\n\tData_DocuContext_Slice_SliceFilter = 'Data.DocuContext.Slice.SliceFilter',\n\tData_DocuContext_Slice_SliceProcessing = 'Data.DocuContext.Slice.SliceProcessing',\n\tData_DocuContext_Slice_SliceProcessingUserType = 'Data.DocuContext.Slice.SliceProcessingUserType',\n\tData_DocuContext_MachinesLogger_CreateMachinesLoggerModel = 'Data.DocuContext.MachinesLogger.CreateMachinesLoggerModel',\n\tData_DocuContext_MachinesLogger_MachinesLogger = 'Data.DocuContext.MachinesLogger.MachinesLogger',\n\tData_DocuContext_MachinesLogger_ReadMachinesLoggerModel = 'Data.DocuContext.MachinesLogger.ReadMachinesLoggerModel',\n\tData_DocuContext_MachinesLogger_UpdateMachinesLoggerModel = 'Data.DocuContext.MachinesLogger.UpdateMachinesLoggerModel',\n\tData_DocuContext_Machine_CreateMachineModel = 'Data.DocuContext.Machine.CreateMachineModel',\n\tData_DocuContext_Machine_Machine = 'Data.DocuContext.Machine.Machine',\n\tData_DocuContext_Machine_MachineBreak = 'Data.DocuContext.Machine.MachineBreak',\n\tData_DocuContext_Machine_ReadMachineModel = 'Data.DocuContext.Machine.ReadMachineModel',\n\tData_DocuContext_Machine_UpdateMachineModel = 'Data.DocuContext.Machine.UpdateMachineModel',\n\tData_DocuContext_Logger_CreateLoggerModel = 'Data.DocuContext.Logger.CreateLoggerModel',\n\tData_DocuContext_Logger_Logger = 'Data.DocuContext.Logger.Logger',\n\tData_DocuContext_Logger_ReadLoggerModel = 'Data.DocuContext.Logger.ReadLoggerModel',\n\tData_DocuContext_Logger_SendTarget = 'Data.DocuContext.Logger.SendTarget',\n\tData_DocuContext_Logger_UpdateLoggerModel = 'Data.DocuContext.Logger.UpdateLoggerModel',\n\tData_DocuContext_Location_LocationModel = 'Data.DocuContext.Location.LocationModel',\n\tData_DocuContext_Location_LocationsEnvelop = 'Data.DocuContext.Location.LocationsEnvelop',\n\tData_DocuContext_Instrument_CreateInstrumentModel = 'Data.DocuContext.Instrument.CreateInstrumentModel',\n\tData_DocuContext_Instrument_Instrument = 'Data.DocuContext.Instrument.Instrument',\n\tData_DocuContext_Instrument_ReadInstrumentModel = 'Data.DocuContext.Instrument.ReadInstrumentModel',\n\tData_DocuContext_Instrument_UpdateInstrumentModel = 'Data.DocuContext.Instrument.UpdateInstrumentModel',\n\tData_DocuContext_FleetManagement_FieldAction = 'Data.DocuContext.FleetManagement.FieldAction',\n\tData_DocuContext_FleetManagement_FleetAction = 'Data.DocuContext.FleetManagement.FleetAction',\n\tData_DocuContext_FleetManagement_FleetActionAttachment = 'Data.DocuContext.FleetManagement.FleetActionAttachment',\n\tData_DocuContext_DriversMachines_CreateDriversMachinesModel = 'Data.DocuContext.DriversMachines.CreateDriversMachinesModel',\n\tData_DocuContext_DriversMachines_DriverMachine = 'Data.DocuContext.DriversMachines.DriverMachine',\n\tData_DocuContext_DriversMachines_ReadDriversMachinesModel = 'Data.DocuContext.DriversMachines.ReadDriversMachinesModel',\n\tData_DocuContext_DriversMachines_UpdateDriversMachinesModel = 'Data.DocuContext.DriversMachines.UpdateDriversMachinesModel',\n\tData_DocuContext_Driver_CreateDriverModel = 'Data.DocuContext.Driver.CreateDriverModel',\n\tData_DocuContext_Driver_Driver = 'Data.DocuContext.Driver.Driver',\n\tData_DocuContext_Driver_ReadDriverModel = 'Data.DocuContext.Driver.ReadDriverModel',\n\tData_DocuContext_Driver_UpdateDriverModel = 'Data.DocuContext.Driver.UpdateDriverModel',\n\tData_DocuContext_Daystatus_Daystatus = 'Data.DocuContext.Daystatus.Daystatus',\n\tData_DocuContext_Attachment_Attachment = 'Data.DocuContext.Attachment.Attachment',\n\tData_DocuContext_Attachment_AttachmentApplication = 'Data.DocuContext.Attachment.AttachmentApplication',\n\tData_DocuContext_Attachment_AttachmentApplicationUserType = 'Data.DocuContext.Attachment.AttachmentApplicationUserType',\n\tData_DocuContext_Attachment_AttachmentMapping = 'Data.DocuContext.Attachment.AttachmentMapping',\n\tData_DocuContext_Attachment_AttachmentMappingUserType = 'Data.DocuContext.Attachment.AttachmentMappingUserType',\n\tData_DocuContext_ApplicationData_ReadApplicationModel = 'Data.DocuContext.ApplicationData.ReadApplicationModel',\n\tData_Dashboard_News = 'Data.Dashboard.News',\n\tData_Common_AgriportConstants = 'Data.Common.AgriportConstants',\n\tData_Common_ApplicationMode = 'Data.Common.ApplicationMode',\n\tData_Common_AgriportConstantsKeys = 'Data.Common.AgriportConstantsKeys',\n\tData_Common_BaseFertLicenseAmountAbsConstantValue = 'Data.Common.BaseFertLicenseAmountAbsConstantValue',\n\tData_Common_ContactInformation = 'Data.Common.ContactInformation',\n\tData_Common_Country = 'Data.Common.Country',\n\tData_Common_CountryGroup = 'Data.Common.CountryGroup',\n\tData_Common_CountryGroupAssignments = 'Data.Common.CountryGroupAssignments',\n\tData_Common_Element = 'Data.Common.Element',\n\tData_Common_ExportFormat = 'Data.Common.ExportFormat',\n\tData_Common_ExportTarget = 'Data.Common.ExportTarget',\n\tData_Common_Factors = 'Data.Common.Factors',\n\tData_Common_HelpArticles = 'Data.Common.HelpArticles',\n\tData_Common_Notifications = 'Data.Common.Notifications',\n\tData_Common_NPlanningBand = 'Data.Common.NPlanningBand',\n\tData_Common_NUptakeFactors = 'Data.Common.NUptakeFactors',\n\tData_Common_OperationMode = 'Data.Common.OperationMode',\n\tData_Common_Unit = 'Data.Common.Unit',\n\tData_Client_ClientException = 'Data.Client.ClientException',\n\tData_BaseData_CropCategories = 'Data.BaseData.CropCategories',\n\tData_BaseData_CropGroups = 'Data.BaseData.CropGroups',\n\tData_BaseData_CropTypes = 'Data.BaseData.CropTypes',\n\tData_BaseData_CropTypesDetails = 'Data.BaseData.CropTypesDetails',\n\tData_BaseData_DateRange = 'Data.BaseData.DateRange',\n\tData_BaseData_DateRangeAssigment = 'Data.BaseData.DateRangeAssigment',\n\tData_BaseData_EffectiveRange = 'Data.BaseData.EffectiveRange',\n\tData_BaseData_FarmCropGroup = 'Data.BaseData.FarmCropGroup',\n\tData_BaseData_FertilizerInorg = 'Data.BaseData.FertilizerInorg',\n\tData_BaseData_FertilizerOrg = 'Data.BaseData.FertilizerOrg',\n\tData_BaseData_IProduct = 'Data.BaseData.IProduct',\n\tData_BaseData_Landuse = 'Data.BaseData.Landuse',\n\tData_BaseData_MachineType = 'Data.BaseData.MachineType',\n\tData_BaseData_PlantProtectionProduct = 'Data.BaseData.PlantProtectionProduct',\n\tData_BaseData_PlantProtectionProductDetails = 'Data.BaseData.PlantProtectionProductDetails',\n\tData_BaseData_PlantProtectionProductDetailsWriteable = 'Data.BaseData.PlantProtectionProductDetailsWriteable',\n\tData_BaseData_PlantProtectionProductWriteable = 'Data.BaseData.PlantProtectionProductWriteable',\n\tData_BaseData_SelectableCrops = 'Data.BaseData.SelectableCrops',\n\tData_BaseData_SelectableFertilizer = 'Data.BaseData.SelectableFertilizer',\n\tData_BaseData_SelectablePpProduct = 'Data.BaseData.SelectablePpProduct',\n\tData_BaseData_SelectableVariety = 'Data.BaseData.SelectableVariety',\n\tData_BaseData_Settings = 'Data.BaseData.Settings',\n\tData_BaseData_SubFarms = 'Data.BaseData.SubFarms',\n\tData_BaseData_Terminals = 'Data.BaseData.Terminals',\n\tData_BaseData_TimeZones = 'Data.BaseData.TimeZones',\n\tData_BaseData_UserContacts = 'Data.BaseData.UserContacts',\n\tData_BaseData_Varieties = 'Data.BaseData.Varieties',\n\tData_BaseData_Worktypes = 'Data.BaseData.Worktypes',\n\tData_BaseData_WorktypeUnit = 'Data.BaseData.WorktypeUnit',\n\tData_BaseData_Map_CategoryTheme = 'Data.BaseData.Map.CategoryTheme',\n\tData_Authentication_ActiveUser = 'Data.Authentication.ActiveUser',\n\tData_Authentication_Blacklist = 'Data.Authentication.Blacklist',\n\tData_Authentication_CampaignYear = 'Data.Authentication.CampaignYear',\n\tData_Authentication_Farm = 'Data.Authentication.Farm',\n\tData_Authentication_FarmMatch = 'Data.Authentication.FarmMatch',\n\tData_Authentication_FarmUsers = 'Data.Authentication.FarmUsers',\n\tData_Authentication_FarmUsersBase = 'Data.Authentication.FarmUsersBase',\n\tData_Authentication_FarmWithDocu = 'Data.Authentication.FarmWithDocu',\n\tData_Authentication_Invitations = 'Data.Authentication.Invitations',\n\tData_Authentication_Login = 'Data.Authentication.Login',\n\tData_Authentication_LoginFailedAttemps = 'Data.Authentication.LoginFailedAttemps',\n\tData_Authentication_PasswordRecovery = 'Data.Authentication.PasswordRecovery',\n\tData_Authentication_User = 'Data.Authentication.User',\n\tData_Authentication_UserSettings = 'Data.Authentication.UserSettings',\n\tData_Authentication_UserSettingsMapping = 'Data.Authentication.UserSettingsMapping',\n\tData_Authentication_UserSettingsMappingUserType = 'Data.Authentication.UserSettingsMappingUserType',\n\tData_Authentication_Enums_ActionType = 'Data.Authentication.Enums.ActionType',\n\tData_Authentication_Enums_FarmTypes = 'Data.Authentication.Enums.FarmTypes',\n\tData_Authentication_Enums_UserRoleType = 'Data.Authentication.Enums.UserRoleType',\n\tData_Attributes_BackendOnlyAttribute = 'Data.Attributes.BackendOnlyAttribute',\n\tData_Agronomic_ApplicationRateSlope = 'Data.Agronomic.ApplicationRateSlope',\n\tData_Agronomic_ApplicationSettings = 'Data.Agronomic.ApplicationSettings',\n\tData_Agronomic_ApplicationSettingsParameters = 'Data.Agronomic.ApplicationSettingsParameters',\n\tData_Agronomic_SlopeConfiguration = 'Data.Agronomic.SlopeConfiguration',\n\tData_Agronomic_ApplicationSettingsParametersUserType = 'Data.Agronomic.ApplicationSettingsParametersUserType',\n\tData_Agronomic_EppoGroup = 'Data.Agronomic.EppoGroup',\n\tData_Agronomic_MonitoringRules = 'Data.Agronomic.MonitoringRules',\n\tData_Agronomic_RuleDefinition = 'Data.Agronomic.RuleDefinition',\n\tData_Agronomic_MonitoringRulesDef_IMonitoringRule = 'Data.Agronomic.MonitoringRulesDef.IMonitoringRule',\n\tData_Agronomic_MonitoringRulesDef_Rule01 = 'Data.Agronomic.MonitoringRulesDef.Rule01',\n\tData_Agronomic_MonitoringRulesDef_Rule02 = 'Data.Agronomic.MonitoringRulesDef.Rule02',\n\tData_Agronomic_MonitoringRulesDef_Rule03 = 'Data.Agronomic.MonitoringRulesDef.Rule03',\n\tData_Agronomic_MonitoringRulesDef_Rule04 = 'Data.Agronomic.MonitoringRulesDef.Rule04',\n\tData_Agronomic_MonitoringRulesDef_Rule05 = 'Data.Agronomic.MonitoringRulesDef.Rule05',\n\tData_Agronomic_MonitoringRulesDef_Rule06 = 'Data.Agronomic.MonitoringRulesDef.Rule06',\n\tData_Agronomic_MonitoringRulesDef_Rule07 = 'Data.Agronomic.MonitoringRulesDef.Rule07',\n\tData_Agronomic_MonitoringRulesDef_Rule08 = 'Data.Agronomic.MonitoringRulesDef.Rule08',\n\tData_Agronomic_MonitoringRulesDef_Rule09 = 'Data.Agronomic.MonitoringRulesDef.Rule09',\n\tData_Agronomic_MonitoringRulesDef_Rule10 = 'Data.Agronomic.MonitoringRulesDef.Rule10',\n\tData_Agronomic_MonitoringRulesDef_Rule11 = 'Data.Agronomic.MonitoringRulesDef.Rule11',\n\tData_AccessPermission_AccessPermissions = 'Data.AccessPermission.AccessPermissions',\n\tData_AccessPermission_FeatureForUserInFarm = 'Data.AccessPermission.FeatureForUserInFarm',\n\tData_AccessPermission_GroupMapping = 'Data.AccessPermission.GroupMapping',\n\tData_AccessPermission_GroupMappingUserType = 'Data.AccessPermission.GroupMappingUserType',\n\tData_AccessPermission_Usergroup = 'Data.AccessPermission.Usergroup',\n\tData_AccessPermission_UsergroupFeature = 'Data.AccessPermission.UsergroupFeature',\n\tData_AccessPermission_UsergroupsGroup = 'Data.AccessPermission.UsergroupsGroup',\n\tData_AccessPermission_UsergroupUser = 'Data.AccessPermission.UsergroupUser',\n\tData_Api_ApDataExtensionMethods = 'Data.Api.ApDataExtensionMethods',\n\tData_Api_IBaseEntityId = 'Data.Api.IBaseEntityId',\n\tData_Api_BaseEntity = 'Data.Api.BaseEntity',\n\tData_Api_ISendToAllClientsActionType = 'Data.Api.ISendToAllClientsActionType',\n\tData_Api_MqttMessage = 'Data.Api.MqttMessage',\n\tData_Api_Validation_ApDataAnnotationsValidate = 'Data.Api.Validation.ApDataAnnotationsValidate',\n\tData_Api_Validation_ApValidationException = 'Data.Api.Validation.ApValidationException',\n\tData_Api_Validation_ApValidationLevel = 'Data.Api.Validation.ApValidationLevel',\n\tData_Api_Validation_ApValidationResult = 'Data.Api.Validation.ApValidationResult',\n\tData_Api_Validation_ApValidator = 'Data.Api.Validation.ApValidator',\n\tData_Api_Validation_IApValidatable = 'Data.Api.Validation.IApValidatable',\n\tAgriport_Excel_Factory_ReportBook = 'Agriport.Excel.Factory.ReportBook',\n\tAgriport_Excel_Factory_FieldDiaryReportBook = 'Agriport.Excel.Factory.FieldDiaryReportBook',\n\tAgriport_Excel_Factory_FungiDetectReportBook = 'Agriport.Excel.Factory.FungiDetectReportBook',\n\tAgriport_Excel_Factory_PerformanceReportBook = 'Agriport.Excel.Factory.PerformanceReportBook',\n\tAgriport_Excel_Factory_SoilSampleFieldReportBook = 'Agriport.Excel.Factory.SoilSampleFieldReportBook',\n\tAgriport_Excel_Factory_ReportBooks_GenericReportBook = 'Agriport.Excel.Factory.ReportBooks.GenericReportBook',\n\tAgriport_Excel_Factory_ReportBooks_NRestrictionsReportBook = 'Agriport.Excel.Factory.ReportBooks.NRestrictionsReportBook',\n\tAgriport_Excel_Factory_ReportBooks_NutrientDistributionsReportBook = 'Agriport.Excel.Factory.ReportBooks.NutrientDistributionsReportBook',\n\tAgriport_Excel_Factory_ReportBooks_SoilSamplePlanningReportBook = 'Agriport.Excel.Factory.ReportBooks.SoilSamplePlanningReportBook',\n\tAgriport_Excel_Factory_InputData_ITableHeader = 'Agriport.Excel.Factory.InputData.ITableHeader',\n\tAgriport_Excel_Factory_InputData_IWorksheetPrintable = 'Agriport.Excel.Factory.InputData.IWorksheetPrintable',\n\tAgriport_Excel_Factory_InputData_SoilSamplePlanningReport_Content = 'Agriport.Excel.Factory.InputData.SoilSamplePlanningReport.Content',\n\tAgriport_Excel_Factory_InputData_SoilSamplePlanningReport_ContentRow = 'Agriport.Excel.Factory.InputData.SoilSamplePlanningReport.ContentRow',\n\tAgriport_Excel_Factory_InputData_SoilSamplePlanningReport_Header = 'Agriport.Excel.Factory.InputData.SoilSamplePlanningReport.Header',\n\tAgriport_Excel_Factory_InputData_SoilSamplePlanningReport_ReportData = 'Agriport.Excel.Factory.InputData.SoilSamplePlanningReport.ReportData',\n\tAgriport_Excel_Factory_InputData_SoilSampleField_Content = 'Agriport.Excel.Factory.InputData.SoilSampleField.Content',\n\tAgriport_Excel_Factory_InputData_SoilSampleField_ContentRow = 'Agriport.Excel.Factory.InputData.SoilSampleField.ContentRow',\n\tAgriport_Excel_Factory_InputData_SoilSampleField_Header = 'Agriport.Excel.Factory.InputData.SoilSampleField.Header',\n\tAgriport_Excel_Factory_InputData_SoilSampleField_ReportData = 'Agriport.Excel.Factory.InputData.SoilSampleField.ReportData',\n\tAgriport_Excel_Factory_InputData_PerformanceReport_Content = 'Agriport.Excel.Factory.InputData.PerformanceReport.Content',\n\tAgriport_Excel_Factory_InputData_PerformanceReport_ContentRow = 'Agriport.Excel.Factory.InputData.PerformanceReport.ContentRow',\n\tAgriport_Excel_Factory_InputData_PerformanceReport_Header = 'Agriport.Excel.Factory.InputData.PerformanceReport.Header',\n\tAgriport_Excel_Factory_InputData_PerformanceReport_ReportData = 'Agriport.Excel.Factory.InputData.PerformanceReport.ReportData',\n\tAgriport_Excel_Factory_InputData_NRestriction_Content = 'Agriport.Excel.Factory.InputData.NRestriction.Content',\n\tAgriport_Excel_Factory_InputData_NRestriction_ContentRow = 'Agriport.Excel.Factory.InputData.NRestriction.ContentRow',\n\tAgriport_Excel_Factory_InputData_NRestriction_Header = 'Agriport.Excel.Factory.InputData.NRestriction.Header',\n\tAgriport_Excel_Factory_InputData_NRestriction_ReportData = 'Agriport.Excel.Factory.InputData.NRestriction.ReportData',\n\tAgriport_Excel_Factory_InputData_FungiDetect_Content = 'Agriport.Excel.Factory.InputData.FungiDetect.Content',\n\tAgriport_Excel_Factory_InputData_FungiDetect_ContentRow = 'Agriport.Excel.Factory.InputData.FungiDetect.ContentRow',\n\tAgriport_Excel_Factory_InputData_FungiDetect_Header = 'Agriport.Excel.Factory.InputData.FungiDetect.Header',\n\tAgriport_Excel_Factory_InputData_FungiDetect_ReportData = 'Agriport.Excel.Factory.InputData.FungiDetect.ReportData',\n\tAgriport_Excel_Factory_InputData_FieldDiary_Content = 'Agriport.Excel.Factory.InputData.FieldDiary.Content',\n\tAgriport_Excel_Factory_InputData_FieldDiary_ContentRow = 'Agriport.Excel.Factory.InputData.FieldDiary.ContentRow',\n\tAgriport_Excel_Factory_InputData_FieldDiary_Header = 'Agriport.Excel.Factory.InputData.FieldDiary.Header',\n\tAgriport_Excel_Factory_InputData_FieldDiary_IFieldDiaryHeader = 'Agriport.Excel.Factory.InputData.FieldDiary.IFieldDiaryHeader',\n\tAgriport_Excel_Factory_InputData_FieldDiary_ReportData = 'Agriport.Excel.Factory.InputData.FieldDiary.ReportData',\n\tAgriport_Excel_Factory_InputData_FieldDiary_Summary = 'Agriport.Excel.Factory.InputData.FieldDiary.Summary',\n}\n\nexport enum NetTypes {\n\tGUID = 'System.Guid',\n\tBYTE = 'System.Byte',\n\tLONG = 'System.Int64',\n\tINT = 'System.Int32',\n\tDOUBLE = 'System.Double',\n\tFLOAT = 'System.Single',\n\tBOOL = 'System.Boolean',\n\tSTRING = 'System.String',\n\tDATETIME = 'System.DateTime',\n\tTIMESPAN = 'System.TimeSpan',\n\tOBJECT = 'System.Object',\n}\n\nexport enum ApPermissions {\n\tSHOW_FIELDS = 'show_fields',\n\tEDIT_FIELDS = 'edit_fields',\n\tSHOW_GLOBAL_CROPROTATION = 'show_global_croprotation',\n\tEDIT_GLOBAL_CROPROTATION = 'edit_global_croprotation',\n\tEDIT_USER_PROFILE = 'edit_user_profile',\n\tSHOW_KRIGING = 'show_kriging',\n\tEDIT_LICENSE = 'edit_license',\n\tSHOW_LICENSE = 'show_license',\n\tSHOW_USERS = 'show_users',\n\tEDIT_TRANSLATIONS = 'edit_translations',\n\tSHOW_TRANSLATIONS = 'show_translations',\n\tSHOW_ACCESS_RIGHTS = 'show_access_rights',\n\tEDIT_ACCESS_RIGHTS = 'edit_access_rights',\n\tSHOW_SETTINGS = 'show_settings',\n\tEDIT_SETTINGS = 'edit_settings',\n\tSHOW_CROPTYPE_GROUPS = 'show_croptype_groups',\n\tEDIT_CROPTYPE_GROUPS = 'edit_croptype_groups',\n\tSHOW_LOGGER = 'show_logger',\n\tSHOW_PERFORMANCE_EVALUATION = 'show_performance_evaluation',\n\tEDIT_LOGGER = 'edit_logger',\n\tSHOW_WORKTYPES = 'show_worktypes',\n\tEDIT_WORKTYPES = 'edit_worktypes',\n\tSHOW_SOIL_SAMPLE_FIELDS = 'show_soil_sample_fields',\n\tSHOW_CROPTYPES = 'show_croptypes',\n\tEDIT_CROPTYPES = 'edit_croptypes',\n\tEDIT_FERTILIZER = 'edit_fertilizer',\n\tSHOW_FERTILIZER = 'show_fertilizer',\n\tSHOW_PLANT_PROTECTION = 'show_plant_protection',\n\tEDIT_PLANT_PROTECTION = 'edit_plant_protection',\n\tEDIT_VARIETIES = 'edit_varieties',\n\tSHOW_VARIETIES = 'show_varieties',\n\tSHOW_RESOURCES = 'show_resources',\n\tEDIT_RESOURCES = 'edit_resources',\n\tEDIT_SUBFARMS = 'edit_subfarms',\n\tSHOW_SUBFARMS = 'show_subfarms',\n\tSHOW_FIELD_DIARY = 'show_field_diary',\n\tSHOW_CURRENT_LOCATIONS = 'show_current_locations',\n\tEDIT_USERS = 'edit_users',\n\tSHOW_USER_PROFILE = 'show_user_profile',\n\tSHOW_IMPORTS = 'show_imports',\n\tEDIT_IMPORTS = 'edit_imports',\n\tEDIT_UPLOADS = 'edit_uploads',\n\tSHOW_FORMATS = 'show_formats',\n\tSHOW_MEASURES = 'show_measures',\n\tSHOW_LANES = 'show_lanes',\n\tSHOW_FUNGIDETECT = 'show_fungidetect',\n\tSHOW_NFERTILIZATION = 'show_nfertilization',\n\tEDIT_KRIGING = 'edit_kriging',\n\tSHOW_STATISTICS = 'show_statistics',\n\tSHOW_PARAMETER_DEFINITION = 'show_parameter_definition',\n\tSHOW_TRACE_LOG = 'show_trace_log',\n\tSHOW_NUTRIENTS = 'show_nutrients',\n\tSHOW_SOILSAMPLE = 'show_soilsample',\n\tSHOW_NFERTILIZATION_LOGFILES = 'show_nfertilization_logfiles',\n\tSHOW_NFERTILIZATION_N_NEED = 'show_nfertilization_n_need',\n\tSHOW_NFERTILIZATION_PLANNING = 'show_nfertilization_planning',\n\tEDIT_NFERTILIZATION_PLANNING = 'edit_nfertilization_planning',\n\tSHOW_NFERTILIZATION_BOOKING = 'show_nfertilization_booking',\n\tEDIT_NFERTILIZATION_BOOKING = 'edit_nfertilization_booking',\n\tSHOW_PLANTPROTECTION_PLANNING = 'show_plantprotection_planning',\n\tEDIT_PLANTPROTECTION_PLANNING = 'edit_plantprotection_planning',\n\tSHOW_PLANTPROTECTION_BOOKING = 'show_plantprotection_booking',\n\tEDIT_PLANTPROTECTION_BOOKING = 'edit_plantprotection_booking',\n\tSHOW_BOOKING_BOOKING = 'show_booking_booking',\n\tEDIT_BOOKING_BOOKING = 'edit_booking_booking',\n\tSHOW_BOOKING_ARCHIVE = 'show_booking_archive',\n\tEDIT_BOOKING_ARCHIVE = 'edit_booking_archive',\n\tSHOW_FUNGIDETECT_ORTHOPHOTO = 'show_fungidetect_orthophoto',\n\tSHOW_PLANTPROTECTION_OVERVIEW = 'show_plantprotection_overview',\n\tSHOW_PLANTPROTECTION_LOGFILES = 'show_plantprotection_logfiles',\n\tSHOW_ADMINISTRATION_JOBS = 'show_administration_jobs',\n\tEDIT_HELP_ARTICLES = 'edit_help_articles',\n\tEDIT_SOILSAMPLE = 'edit_soilsample',\n\tEDIT_SOILSAMPLE_PLANNING_VARIABLY = 'edit_soilsample_planning_variably',\n\tEDIT_SOILSAMPLE_PLANNING_CONSTANT = 'edit_soilsample_planning_constant',\n\tEDIT_BOOKINGS_CONSTANT = 'edit_bookings_constant',\n\tEDIT_BOOKINGS_VARIABLY = 'edit_bookings_variably',\n\tSHOW_BOOKINGS = 'show_bookings',\n\tSHOW_SOILSAMPLE_PLANNING = 'show_soilsample_planning',\n\tSHOW_NUTRIENTS_P_NEED = 'show_nutrients_p_need',\n\tSHOW_NUTRIENTS_PLANNING = 'show_nutrients_planning',\n\tEDIT_NUTRIENTS_PLANNING = 'edit_nutrients_planning',\n\tSHOW_NUTRIENTS_BOOKING = 'show_nutrients_booking',\n\tEDIT_NUTRIENTS_BOOKING = 'edit_nutrients_booking',\n\tSHOW_NUTRIENTS_DISTRIBUTION = 'show_nutrients_distribution',\n}\n\nexport enum HibernateModelNames {\n\tSELECTABLE_CROPS = 'SelectableCrops',\n\tCROP_TYPE_DETAILS = 'CropTypesDetails',\n\tSELECTABLE_VARIETIES = 'SelectableVariety',\n\tSELECTABLE_FERTILIZER = 'SelectableFertilizer',\n\tSELECTABLE_PLANT_PROTECTION_PRODUCT = 'SelectablePpProduct',\n\tFIELD_CROPS = 'FieldCrop',\n}\n","import {NgModule} from '@angular/core';\nimport {LayoutModule} from '@progress/kendo-angular-layout';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {ButtonModule, ButtonsModule, DropDownButtonModule} from '@progress/kendo-angular-buttons';\nimport {ToolBarModule} from '@progress/kendo-angular-toolbar';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {CookieService} from 'ngx-cookie-service';\nimport {ApSvgStringDirective} from './directives/ap-svg-string.directive';\nimport {ApErrorhandlerService} from './error-handling/ap-errorhandler.service';\nimport {\n ApTableFooterComponent\n} from './components/ap-table-footer/ap-table-footer.component';\nimport {ApIconModule} from '../icons/ap-icon.module';\nimport {ApNotifyComponent} from './components/ap-notify/ap-notify.component';\nimport {ApWindowHelperService} from './services/ap-window-helper.service';\nimport {\n AdViewContainerComponent\n} from './components/ap-view-container/ap-view-container.component';\nimport {ApResponsiveDirective} from './directives/ap-responsive.directive';\nimport {ApGridComponent} from './components/ap-grid/ap-grid.component';\nimport {ApViewContainerRefDirective} from './directives/ap-view-container-ref.directive';\nimport {DateInputsModule} from '@progress/kendo-angular-dateinputs';\nimport {ApGridPagerComponent} from './components/ap-grid-pager/ap-grid-pager.component';\nimport {FilterMenuModule, GridModule, PagerModule, PDFModule} from '@progress/kendo-angular-grid';\nimport {\n ApPercentBarComponent\n} from './components/ap-percent-bar/ap-percent-bar.component';\nimport {\n ApGridWizardComponent\n} from './components/ap-grid-wizard/ap-grid-wizard.component';\nimport {DropDownsModule} from '@progress/kendo-angular-dropdowns';\nimport {ApMapModule} from '../map/ap-map.module';\nimport {InputsModule} from '@progress/kendo-angular-inputs';\nimport {ApHelpModule} from '../help/ap-help.module';\nimport {\n ApBreadcrumbsSteperComponent\n} from './components/ap-breadcrumps-stepper/ap-breadcrumbs-steper.component';\nimport {\n ApGridMulticheckFilterComponent\n} from './components/ap-grid-multicheck-filter/ap-grid-multicheck-filter.component';\nimport {ApUtilsModule} from '../ap-utils';\nimport {\n ApGridMultiSelectComponent\n} from './components/ap-grid-multi-select/ap-grid-multi-select.component';\nimport {PopupModule} from '@progress/kendo-angular-popup';\nimport {\n ApModalDialogComponent\n} from './components/ap-modal-dialog/ap-modal-dialog.component';\nimport {DialogsModule} from '@progress/kendo-angular-dialog';\nimport {ApDynformsModule} from '../ap-dynforms/ap-dynforms.module';\nimport {ApResponsiveTextModule} from '../ap-responsive-text/ap-responsive-text.module';\nimport {ApTooltipModule} from '../ap-tooltip/ap-tooltip.module';\nimport {\n ApModalDialogButtonDisablePipe\n} from './components/ap-modal-dialog/ap-modal-dialog-button-disable.pipe';\nimport {ApPermissionModule} from '../ap-permission/ap-permission.module';\nimport {TooltipModule} from '@progress/kendo-angular-tooltip';\nimport {\n ApNotifyMessageComponent\n} from './components/ap-notify-message/ap-notify-message.component';\nimport {\n ApStaticGridPagerComponent\n} from './components/ap-static-grid-pager/ap-static-grid-pager.component';\nimport {\n ApGridPagerNumericComponent\n} from './components/ap-grid-pager-numeric/ap-grid-pager-numeric.component';\nimport {LoaderModule} from '@progress/kendo-angular-indicators';\nimport {IconModule, SVGIconModule} from '@progress/kendo-angular-icons';\nimport {ApFarmJobListComponent} from './components/ap-farm-job-list.component';\nimport {ProgressBarModule} from '@progress/kendo-angular-progressbar';\nimport {NgScrollbarModule} from 'ngx-scrollbar';\nimport {RunningTimePipe} from './components/ap-farm.job-running-time.pipe';\nimport {\n ApGridPageSizeComponent\n} from './components/ap-grid-page-size/ap-grid-page-size.component';\n\n@NgModule({\n declarations: [\n ApSvgStringDirective,\n ApTableFooterComponent,\n AdViewContainerComponent,\n ApResponsiveDirective,\n ApGridComponent,\n ApViewContainerRefDirective,\n ApNotifyComponent,\n ApNotifyMessageComponent,\n ApGridPagerComponent,\n ApPercentBarComponent,\n ApGridWizardComponent,\n ApBreadcrumbsSteperComponent,\n ApGridMulticheckFilterComponent,\n ApGridMultiSelectComponent,\n ApGridMulticheckFilterComponent,\n ApModalDialogComponent,\n ApModalDialogButtonDisablePipe,\n ApStaticGridPagerComponent,\n ApGridPagerNumericComponent,\n ApFarmJobListComponent,\n RunningTimePipe,\n ApGridPageSizeComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ButtonModule,\n ToolBarModule,\n DropDownButtonModule,\n ApTranslationModule,\n DateInputsModule,\n ApIconModule,\n ApMapModule,\n ApHelpModule,\n GridModule,\n PDFModule,\n DropDownsModule,\n LayoutModule,\n InputsModule,\n ApUtilsModule,\n DialogsModule,\n ApUtilsModule,\n PagerModule,\n PopupModule,\n FilterMenuModule,\n ApDynformsModule,\n ApResponsiveTextModule,\n ApTooltipModule,\n ApPermissionModule,\n TooltipModule,\n ButtonsModule,\n LoaderModule,\n SVGIconModule,\n ProgressBarModule,\n NgScrollbarModule,\n IconModule,\n ],\n providers: [\n CookieService,\n ApErrorhandlerService,\n ApWindowHelperService,\n ],\n exports: [\n ApSvgStringDirective,\n ApTableFooterComponent,\n ApResponsiveDirective,\n ApGridComponent,\n AdViewContainerComponent,\n ApNotifyComponent,\n ApGridPagerComponent,\n ApPercentBarComponent,\n ApGridWizardComponent,\n ApBreadcrumbsSteperComponent,\n ApGridMulticheckFilterComponent,\n ApModalDialogComponent,\n ApStaticGridPagerComponent,\n ApGridMultiSelectComponent,\n ApGridPagerNumericComponent,\n ApFarmJobListComponent,\n ApGridPageSizeComponent\n ]\n})\nexport class ApCoreModule {\n}\n","
\n
\n
\n \n
\n {{columns[key] | translate}}\n
\n
\n
\n
\n
\n","import {Component, Input} from '@angular/core';\nimport {keys} from 'lodash';\n\n@Component({\n selector: 'ap-breadcrumbs-steper',\n templateUrl: 'ap-breadcrumbs-steper.component.html',\n styleUrls: ['ap-breadcrumbs-steper.component.scss']\n})\nexport class ApBreadcrumbsSteperComponent {\n @Input()\n public columns: { [key: number]: string } = {};\n\n @Input()\n public selected: number;\n\n getKeys(): string[] {\n return keys(this.columns || {});\n }\n\n getInt(value: string): number {\n return parseInt(value, 10);\n }\n}\n"," 0) || showWithoutSelection\"\n #extendedInput\n [fieldsets]=\"fieldSets\"\n [defaultValue]=\"formDefaultValue\"\n [tabs]=\"tabs\"\n [fontSize]=\"14\"\n [offsetTop]=\"5\"\n [offsetBottom]=\"5\"\n [darkMode]=\"true\"\n [formValidators]=\"formValidators\"\n [formState]=\"formConfig ? 'in' : 'out'\"\n (initialized)=\"extendedInputFinish.emit()\"\n (formValueChanges)=\"formValueChanges.emit($event)\"\n>\n
0 || showWithoutSelection)\"\n [@fadeInOut] class=\"ap-pager\"\n (@fadeInOut.start)=\"onFadeInOutStart($event)\"\n (@fadeInOut.done)=\"onFadeInOutDone($event)\">\n
0\" class=\"ap-pagerCell\">\n \n \n
\n {{dataItem.name}}\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n 0\" [key]=\"getErrors()[0]\">\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nimport {ApGridPagerType, IGridPagerData, IWizardChoiceData, IWizardChoiceDataValue} from '../../../ap-interface';\nimport {map} from 'lodash';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {\n ApDynformsConfigFieldset\n} from '../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsComponent\n} from '../../../ap-dynforms/ap-dynforms.component';\nimport {\n ApDynformsConfigTabs\n} from '../../../ap-dynforms/config/ap-dynforms-config-tabs';\nimport {\n ItemDisabledFn\n} from '@progress/kendo-angular-dropdowns';\nimport {\n TranslationStore\n} from '../../../stores/translation/translation.store';\nimport {Observable, Subscription} from 'rxjs';\nimport {\n ApUtilService\n} from '../../../ap-utils/service/ap-util.service';\nimport {NumberFormatOptions} from '@progress/kendo-angular-intl';\nimport {\n ApDynformsValidator\n} from '../../../ap-dynforms/ap-dynforms-validator';\nimport {ValidatorFn} from '@angular/forms';\n\n@Component({\n selector: 'ap-grid-multi-select',\n templateUrl: './ap-grid-multi-select.component.html',\n styleUrls: ['./ap-grid-multi-select.component.scss'],\n animations: [\n trigger('fadeInOut', [\n state('in', style({opacity: 1, transform: 'scale(1)'})),\n transition(':enter', [\n style({opacity: 0, height: '0px', transform: 'scale(1)'}),\n animate('444ms cubic-bezier(.8, -0.6, 0.2, 2.5)')\n ]),\n transition(':leave',\n animate('556ms cubic-bezier(.8, -0.6, 0.2, 2.5)', style({\n opacity: 0,\n transform: 'scale(1)',\n height: '0px',\n 'margin-top': '0px',\n 'margin-left': '0px',\n 'margin-right': '0px',\n 'margin-bottom': '0px'\n })))\n ])\n ]\n})\nexport class ApGridMultiSelectComponent implements OnInit, OnDestroy, OnChanges {\n\n constructor(private translationStore: TranslationStore) {\n }\n\n public gridPagerTypes = ApGridPagerType;\n public placeholder: string;\n\n @ViewChild('extendedInput', {static: false}) extendedInput: ApDynformsComponent;\n\n @Input() public selectedKeys: any[];\n @Input() public columns: IWizardChoiceData[];\n @Input() public showOnlyValues = false;\n @Input() public showWithoutSelection = false;\n @Input() public showDefaultValue = true;\n @Input() public type: ApGridPagerType;\n @Input() public selectedColumn: IWizardChoiceData;\n @Input() public selectedValue: IWizardChoiceDataValue;\n @Input() public values: IWizardChoiceDataValue[];\n @Input() public formConfig: ApDynformsConfigFieldset[] | ApDynformsConfigTabs[] = null;\n @Input() public formValidators: ApDynformsValidator[];\n @Input() public formDefaultValue: any;\n /**\n * Columns shown in the select box\n */\n @Input() public objects: Observable>;\n @Input() public preselect = true;\n\n @Output() public applyClicked = new EventEmitter();\n @Output() public deleteClicked = new EventEmitter();\n @Output() public startInAnimation = new EventEmitter();\n @Output() public endInAnimation = new EventEmitter();\n @Output() public startOutAnimation = new EventEmitter();\n @Output() public endOutAnimation = new EventEmitter();\n @Output() public selectedColumnChange = new EventEmitter(true);\n @Output() public selectedValueChange = new EventEmitter(true);\n @Output() public extendedInputFinish = new EventEmitter(true);\n\n fieldSets: ApDynformsConfigFieldset[] = [];\n tabs: ApDynformsConfigTabs[] = null;\n private _subscriptions: Subscription[] = [];\n\n @Output() public formValueChanges = new EventEmitter<{ control: string, value: any }>(true);\n\n public decimalFormat: NumberFormatOptions = {\n maximumFractionDigits: 0,\n minimumFractionDigits: 0,\n minimumIntegerDigits: 0\n };\n\n public columnDefaultItem: { name: string; id: number } = {\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__MassEdit'),\n id: null,\n };\n public valueDefaultItem: { id: number | undefined; label: string | undefined; } = {\n id: undefined,\n label: undefined,\n };\n @Input() public columnItemDisabled: ItemDisabledFn = () => false;\n @Input() public valueItemDisabled: ItemDisabledFn = () => false;\n\n ngOnInit(): void {\n if (this.objects) {\n this.objects = ApUtilService.asObservable(this.objects);\n this._subscriptions.push(this.objects.subscribe((objects) => {\n this.columns = map(objects, (f: any) => ({\n ...f,\n name: this.translationStore.FindTranslationForSelectedLanguage(f.name)\n }));\n if (objects?.length > 1 && this.preselect && !this.selectedColumn) {\n this.selectedColumnChanged(objects[0]);\n } else {\n this._updateSelectedData(objects);\n }\n }\n ));\n }\n if (this.showOnlyValues) {\n if (this.values) {\n this.selectedValue = this.values.find(v => !!v);\n }\n }\n if (!!this.placeholder) {\n this.valueDefaultItem.label = this.translationStore.FindTranslationForSelectedLanguage(this.placeholder);\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['formConfig']) {\n if (this.formConfig && this.formConfig.length) {\n const first = this.formConfig[0];\n if (first instanceof ApDynformsConfigTabs) {\n this.tabs = this.formConfig as ApDynformsConfigTabs[];\n } else if (first instanceof ApDynformsConfigFieldset) {\n this.fieldSets = this.formConfig as ApDynformsConfigFieldset[];\n }\n } else {\n this.tabs = null;\n this.fieldSets = [];\n }\n }\n if (changes.selectedKeys) {\n if (!changes.selectedKeys.currentValue || changes.selectedKeys.currentValue.length < 1 && !this.preselect) {\n this.selectedColumnChanged(null);\n }\n }\n if (changes.selectedItems) {\n if (!changes.selectedItems.currentValue || changes.selectedItems.currentValue.length < 1 && !this.preselect) {\n this.selectedColumnChanged(null);\n }\n }\n if (changes.selectedItems) {\n if (!changes.selectedItems.currentValue || changes.selectedItems.currentValue.length < 1 && !this.preselect) {\n this.selectedColumnChanged(null);\n }\n }\n }\n\n /**\n * on column dropdown value changed\n */\n selectedValueChanged($event: any): void {\n this.selectedValue = $event;\n this.selectedValueChange.emit($event);\n }\n\n /**\n * on column dropdown value changed\n */\n selectedColumnChanged($event: IWizardChoiceData): void {\n this.type = $event?.type ?? null;\n this.values = $event?.values ?? null;\n const value = this.values && $event.value !== undefined ? this.values.find(v => v.id === $event.value) : null;\n this.selectedValue = value ?? null;\n this.selectedColumnChange.emit($event);\n this.placeholder = $event?.placeholder;\n this.valueDefaultItem.label = this.translationStore.FindTranslationForSelectedLanguage(this.placeholder);\n if (this.type !== ApGridPagerType.DropDown) {\n this.selectedValueChange.emit(null);\n }\n }\n\n isApplyButtonEnabled(): boolean {\n const formValid = !this.extendedInput || this.extendedInput.form.valid;\n if (this.type === ApGridPagerType.None) {\n return formValid;\n } else {\n return this.selectedValue != null && !this.selectedValue.disabled && this.selectedColumn != null && formValid;\n }\n }\n\n extractValueFromInputEvent($event: any): void {\n return $event.target.value;\n }\n\n /**\n * on apply button clicked emit the event.\n */\n applyButtonClicked(): void {\n const param: IGridPagerData = {\n object: this.selectedColumn,\n value: this.selectedValue\n };\n if (this.extendedInput) {\n param.form = this.extendedInput.form.value;\n }\n this.applyClicked.emit(param);\n this.selectedValue = null;\n this.unselect();\n }\n\n onFadeInOutStart(e: any): void {\n if (e && e.fromState === 'void') {\n this.startInAnimation.emit();\n } else if (e.toState === 'void') {\n this.startOutAnimation.emit();\n }\n }\n\n onFadeInOutDone(e: any): void {\n if (e && e.fromState === 'void') {\n this.endInAnimation.emit();\n } else if (e.toState === 'void') {\n this.endOutAnimation.emit();\n }\n }\n\n unselect(): void {\n this.type = null;\n this.selectedColumnChange.emit(null);\n this.selectedValueChange.emit(null);\n }\n\n getErrors(): string[] {\n // TodO Keine Validierung\n // const control = this.form.get(this.config.key);\n // if (control && control.errors) {\n // each(this.config.validators, (validator: ApDynformsValidator) => {\n // if ((validator.always || control.touched || control.dirty) && control.errors[validator.errorKey]) {\n // validationMessages.push(validator.errorKey);\n // }\n // });\n //\n // each(this.config.asyncValidators, (validator: ApDynformsValidator) => {\n // if ((validator.always || control.touched || control.dirty) && control.errors[validator.errorKey]) {\n // validationMessages.push(validator.errorKey);\n // }\n // });\n // }\n //\n // if (this.form.errors) {\n // each(this.config.formErrors, (formError: string) => {\n // if (this.form.errors[formError]) {\n // validationMessages.push(formError);\n // }\n // });\n // }\n\n return [];\n }\n\n private _updateSelectedData(updatedColumns: IWizardChoiceData[]): void {\n if (!this.selectedColumn) {\n return;\n }\n this.selectedColumn = updatedColumns.find(x => x.id === this.selectedColumn.id);\n this.type = this.selectedColumn?.type ?? null;\n this.values = this.selectedColumn?.values ?? null;\n this.placeholder = this.selectedColumn?.placeholder;\n this.valueDefaultItem.label = this.translationStore.FindTranslationForSelectedLanguage(this.placeholder);\n if (!this.selectedValue) {\n return;\n }\n this.selectedValue = this.selectedColumn.values.find(x => x.id === this.selectedValue.id);\n }\n}\n","
\n \n \n {{dataItem.text}}\n \n \n
\n","import {Component, OnDestroy, Output} from '@angular/core';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {APP_CONFIGURATION} from '../../config';\nimport {TranslationStore} from '../../../stores/translation/translation.store';\nimport {CampaignYearStore} from '../../../stores/login/campaignyear.store';\n\nexport interface ApGridPageSizeItem {\n text: string;\n value: number;\n}\n\n@Component({\n selector: 'ap-grid-page-size',\n templateUrl: 'ap-grid-page-size.component.html',\n styleUrls: ['ap-grid-page-size.component.scss'],\n})\nexport class ApGridPageSizeComponent implements OnDestroy {\n /**\n * Raised whenever user changes grid page size in dropdown\n */\n @Output() public pageSizeChanged = new BehaviorSubject(APP_CONFIGURATION.GridPageSize);\n public pageSizeItems: ApGridPageSizeItem[] = [];\n private _subscriptions: Subscription[] = [];\n public currentValue: ApGridPageSizeItem;\n\n constructor(private translationStore: TranslationStore,\n private campaignYearStore: CampaignYearStore) {\n\n for (const gridPageSizeOption of APP_CONFIGURATION.GridPageSizeOptions) {\n this.pageSizeItems.push({\n text: gridPageSizeOption.toString(),\n value: gridPageSizeOption\n });\n }\n this.resetToDefault();\n this.campaignYearStore.Listen(_ => _.selectedYear).subscribe(_ => {\n this.resetToDefault();\n });\n\n this.pageSizeItems.push({\n text: `(${this.translationStore.FindTranslationForSelectedLanguage('Global__All')})`,\n value: 999999\n });\n }\n\n private resetToDefault(): void {\n this.currentValue = this.pageSizeItems[0];\n this.pageSizeChanged.next(this.currentValue.value);\n }\n\n /**\n * Handles valueChange of pagesize dropdown\n */\n public valueChange(pageSizeItem: ApGridPageSizeItem): void {\n this.pageSizeChanged.next(pageSizeItem.value);\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n}\n","\n\n
\n \n
\n
\n \n {{page}}\n \n
\n
\n \n
\n
\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {Align} from '@progress/kendo-angular-popup';\nimport {PopupAnimation} from '@progress/kendo-angular-popup/dist/es2015/models/popup-animation.interface';\nimport {PagerContextService} from '@progress/kendo-angular-grid';\nimport {filter, map} from 'rxjs/operators';\nimport {\n BehaviorSubject,\n combineLatest,\n Observable,\n Subject,\n Subscription\n} from 'rxjs';\nimport {PagerContextChanges} from '@progress/kendo-angular-grid/dist/es2015/pager/pager-context.service';\n\ninterface ApPagerContextService {\n total: number;\n skip: number;\n pageSize: number;\n changes: Subject<{ total: number, skip: number, pageSize: number }>;\n\n changePage(page: number): void;\n}\n\n@Component({\n selector: 'ap-grid-pager-numeric',\n templateUrl: './ap-grid-pager-numeric.component.html',\n styleUrls: ['./ap-grid-pager-numeric.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApGridPagerNumericComponent implements AfterContentInit, OnDestroy {\n @Input() pagerContextService: PagerContextService | ApPagerContextService;\n @ViewChild('anchor') public anchor: ElementRef;\n @ViewChild('popup', {read: ElementRef}) public popup: ElementRef;\n\n readonly columns = 5;\n readonly rows = 5;\n readonly dimension = this.columns * this.rows;\n\n public anchorAlign: Align = {horizontal: 'center', vertical: 'top'};\n public popupAlign: Align = {horizontal: 'center', vertical: 'bottom'};\n public animate: PopupAnimation = {type: 'slide', direction: 'up', duration: 200};\n public show = false;\n public currentPage = new BehaviorSubject(undefined);\n public chunks = new BehaviorSubject([]);\n public chunkPage = new BehaviorSubject(0);\n public pageView: Observable;\n\n private _subscriptions: Subscription[] = [];\n\n ngAfterContentInit(): void {\n this.currentPage.next(this.pagerContextService.skip / this.pagerContextService.pageSize + 1);\n this._subscriptions.push(this.pagerContextService.changes.pipe(\n map((e) => e.skip / e.pageSize + 1),\n ).subscribe((page) => this.currentPage.next(page)));\n\n this.chunks.next(this._getChunks(this.pagerContextService));\n this._subscriptions.push(this.pagerContextService.changes.pipe(map((e) =>\n this._getChunks(e)\n )).subscribe((chunks) => this.chunks.next(chunks)));\n\n this.pageView = combineLatest([\n this.chunks,\n this.chunkPage\n ]).pipe(\n filter(([chunks, page]) => page < chunks.length),\n map(([chunks, page]) => chunks[page])\n );\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n getColumn(page: number, columns: number): number {\n return (page - 1) % columns + 1;\n }\n\n getRow(page: number, rows: number): number {\n return Math.floor((page - 1) / rows) % rows + 1;\n }\n\n onPageChange(newPage: any): void {\n this.pagerContextService.changePage(newPage - 1);\n }\n\n togglePopup(): void {\n this.show = !this.show;\n if (this.show) {\n this.chunkPage.next(Math.floor((this.currentPage.value - 1) / this.dimension));\n }\n }\n\n @HostListener('document:click', ['$event'])\n documentClick(event: any): void {\n if (!this._contains(event.target)) {\n this.show = false;\n }\n }\n\n changeChunkPage(n: number): void {\n this.chunkPage.next(this.chunkPage.value + n);\n }\n\n onWheel(event: WheelEvent): void {\n if (event.deltaY < 0 && this.chunkPage.value > 0) {\n this.changeChunkPage(-1);\n } else if (event.deltaY > 0 && this.chunkPage.value < (this.chunks.value.length - 1)) {\n this.changeChunkPage(1);\n }\n }\n\n private _contains(target: any): boolean {\n return this.anchor.nativeElement && this.anchor.nativeElement.contains(target) ||\n (this.popup ? this.popup.nativeElement.contains(target) : false);\n }\n\n private _getChunks(e: PagerContextService | PagerContextChanges): any[] {\n const chunks = [];\n const arr = Array(Math.ceil(Math.max(1, e.total) / e.pageSize)).fill(undefined).map((v, i) => i + 1);\n do {\n chunks.push(arr.slice(chunks.length * this.dimension, chunks.length * this.dimension + this.dimension));\n } while (chunks.length * this.dimension < arr.length);\n return chunks;\n }\n}\n","
\n
\n
\n {{selectedKeys && selectedKeys.length}} {{'Global__Selected' | translate}}\n
\n
\n
\n pageSize\">\n \n pageSize\" [pagerContextService]=\"pagerContextService\">\n pageSize\">\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {\n ApTranslationPipe\n} from '../../../translation/pipes/ap-translation.pipe';\nimport {ApGridPagerType, IGridPagerData, IWizardChoiceData, IWizardChoiceDataValue} from '../../../ap-interface';\nimport {\n ApDynformsConfigFieldset\n} from '../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApGridMultiSelectComponent\n} from '../ap-grid-multi-select/ap-grid-multi-select.component';\nimport {\n ApDynformsConfigTabs\n} from '../../../ap-dynforms/config/ap-dynforms-config-tabs';\nimport {\n ItemDisabledFn\n} from '@progress/kendo-angular-dropdowns';\nimport {\n PagerIconButton,\n PagerLowerButton\n} from '../../../ap-dyngrids/config/ap-dyn-grid-pager-config';\nimport {PagerContextService} from '@progress/kendo-angular-grid';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {APP_CONFIGURATION} from '../../config';\n\n@Component({\n selector: 'ap-grid-pager',\n templateUrl: 'ap-grid-pager.component.html',\n styleUrls: ['ap-grid-pager.component.scss'],\n})\nexport class ApGridPagerComponent implements OnChanges, OnInit, OnDestroy {\n @ViewChild('gridMultiSelectComponent', {static: false}) gridMultiSelect: ApGridMultiSelectComponent;\n\n public selectedColumn: IWizardChoiceData;\n public selectedValue: IWizardChoiceDataValue;\n public type: ApGridPagerType;\n public values: IWizardChoiceDataValue[];\n public numOfPages = 0;\n public buttonCountOffset = 0;\n public dimensions: number[] = [1];\n\n @Input() public formConfig: ApDynformsConfigFieldset[] | ApDynformsConfigTabs[] = null;\n @Input() public formDefaultValue = {};\n @Input() public currentPage: number;\n /**\n * Columns shown in the select box\n */\n @Input() public columns: string[];\n /**\n * Columns shown in the select box\n */\n @Input() public objects: Observable;\n /**\n * Indicates if default delete option is available.\n */\n @Input() public showOnlyValues = true;\n @Input() public hasMultiSelect = true;\n @Input() public showWithoutSelection = false;\n /**\n * hasPermission\n */\n @Input() public hasPermission = true;\n @Input() public selectedKeys: any[];\n @Input() public pageSize = 25;\n @Input() public itemCount: number;\n @Input() public preselect = true;\n @Input() public buttonCount = 3;\n @Input() public iconButtons: PagerIconButton[];\n @Input() public lowerButtons: PagerLowerButton[];\n @Output() public applyClicked = new EventEmitter();\n @Output() public deleteClicked = new EventEmitter();\n @Output() public currentPageChange = new EventEmitter();\n @Output() public startMultiSelectInAnimation = new EventEmitter();\n @Output() public endMultiSelectInAnimation = new EventEmitter();\n @Output() public startMultiSelectOutAnimation = new EventEmitter();\n @Output() public endMultiSelectOutAnimation = new EventEmitter();\n @Output() public selectedColumnChange = new EventEmitter();\n @Output() public selectedValueChange = new EventEmitter();\n @Output() public pageSizeChanged = new BehaviorSubject(APP_CONFIGURATION.GridPageSize);\n\n private _subscriptions: Subscription[] = [];\n private _objects: IWizardChoiceData[] = [];\n\n /**\n * constructor of component\n */\n constructor(@Inject(forwardRef(() => ApTranslationPipe)) private translationPipe: ApTranslationPipe,\n public pagerContextService: PagerContextService) {\n }\n\n @Input() public columnItemDisabled: ItemDisabledFn = () => false;\n @Input() public valueItemDisabled: ItemDisabledFn = () => false;\n\n public get Objects(): IWizardChoiceData[] {\n return this._objects;\n }\n\n public get filteredIconButtons(): PagerIconButton[] {\n return this.iconButtons?.filter(x => !!x.callback && !!x.icon) ?? [];\n }\n\n ngOnInit(): void {\n this._subscriptions.push(this.objects.subscribe((objects) => this._objects = objects));\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach((s) => s.unsubscribe());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.itemCount) {\n this.getDimensions();\n }\n }\n\n changePage(page: number): boolean {\n this.buttonCountOffset = (Math.floor(page / this.buttonCount) * this.buttonCount);\n this.currentPageChange.emit(page);\n this.getDimensions();\n return false;\n }\n\n onSelectedColumnChange(e: IWizardChoiceData): void {\n this.selectedColumn = e || null;\n this.selectedColumnChange.emit(e);\n }\n\n onSelectedValueChange(e: IWizardChoiceDataValue): void {\n this.selectedValue = e || null;\n this.selectedValueChange.emit(e);\n }\n\n setSelectedColumn(column: IWizardChoiceData): void {\n this.gridMultiSelect.selectedColumn = column;\n this.gridMultiSelect.selectedColumnChanged(column);\n }\n\n setSelectedValue(columnValue: IWizardChoiceDataValue): void {\n this.gridMultiSelect.selectedValue = columnValue;\n this.gridMultiSelect.selectedValueChanged(columnValue);\n }\n\n private getDimensions(): void {\n if (this.itemCount < 1 || this.pageSize < 1) {\n return;\n }\n this.numOfPages = Math.ceil(this.itemCount / this.pageSize);\n const tmp = [];\n for (let i = this.buttonCountOffset; i < this.numOfPages; i++) {\n tmp.push(i + 1);\n if (tmp.length === this.buttonCount) {\n break;\n }\n }\n this.dimensions = tmp;\n }\n\n /**\n * Handles pageSizeChanged event of the gridpager.\n * Occurs whenever user changed the pageSize from the corresponding dropdown\n */\n public onPageSizeChanged(pageSize: number): void {\n this.pageSizeChanged.next(pageSize);\n }\n}\n","
\n
\n
\n {{data.selectedKeys.length}} {{'Global__Selected' | translate}}\n \n
\n
\n
\n data.pageSize\">\n \n data.pageSize\"\n [pagerContextService]=\"pagerContextService\">\n data.pageSize\">\n
\n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n \n
\n","import {Component, EventEmitter, Input, OnDestroy, Output, ViewChild} from '@angular/core';\nimport {\n ApKendoGridExtension\n} from '../../extensions/kendo/ap-kendo-grid-extension';\nimport {PagerContextService} from '@progress/kendo-angular-grid';\nimport {ApDynformsComponent} from '../../../ap-dynforms/ap-dynforms.component';\nimport {\n ApDynformsControltype\n} from '../../../ap-dynforms/config/ap-dynforms-config-base';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {delay, filter, map, mergeMap} from 'rxjs/operators';\nimport {\n IDynGridWizardFormConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {APP_CONFIGURATION} from '../../config';\n\n@Component({\n selector: 'ap-grid-wizard',\n templateUrl: 'ap-grid-wizard.component.html',\n styleUrls: ['ap-grid-wizard.component.scss'],\n})\nexport class ApGridWizardComponent implements OnDestroy {\n @ViewChild(ApDynformsComponent, {static: false}) dynForm: ApDynformsComponent;\n @Input() public data: ApKendoGridExtension;\n @Input() public formConfig: IDynGridWizardFormConfig;\n @Input() public showSelectedKeys = true;\n @Input() public enableMassEdit = true;\n @Output() public applyClick = new EventEmitter(true);\n @Output() public cancelClick = new EventEmitter(true);\n @Output() public pageSizeChanged = new BehaviorSubject(APP_CONFIGURATION.GridPageSize);\n\n public formValues$ = new BehaviorSubject({});\n public submitDisabled$ = new BehaviorSubject(false);\n\n private _formSubject$ = new BehaviorSubject(undefined);\n private _subscriptions: Subscription[] = [];\n\n public constructor(public pagerContextService: PagerContextService) {\n this._subscriptions.push(this._formSubject$.pipe(\n filter((form) => !!form),\n mergeMap((form) => form.form.valueChanges),\n delay(0)\n ).subscribe((values) => this.formValues$.next(values)));\n this._subscriptions.push(this.formValues$.pipe(\n delay(1),\n map((values) => this.formConfig && this.formConfig.submitDisabled ?\n this.formConfig.submitDisabled(values) : false)\n ).subscribe((disabled) => this.submitDisabled$.next(disabled)));\n }\n\n @ViewChild(ApDynformsComponent)\n set DynForm(dynForm: ApDynformsComponent) {\n if (dynForm) {\n this.enableMassEdit = this.formConfig?.showMassEdit ?? true;\n const formValues = this._getFormValues();\n const submitDisabled = this.formConfig.submitDisabled ? this.formConfig.submitDisabled : () => false;\n this._formSubject$.next(dynForm);\n setTimeout(() => {\n this.submitDisabled$.next(submitDisabled(formValues));\n this.formValues$.next(formValues);\n dynForm.form.patchValue(formValues);\n }, 1);\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n public onApplyClick(): void {\n this.applyClick.emit(this.dynForm.form.value);\n }\n\n public toggleMassEdit(): void {\n this.enableMassEdit = !this.enableMassEdit;\n }\n\n /**\n * Handles pageSizeChanged event of the gridpager.\n * Occurs whenever user changed the pageSize from the corresponding dropdown\n */\n public onPageSizeChanged(pageSize: number): void {\n this.pageSizeChanged.next(pageSize);\n }\n\n private _getFormValues(): any {\n const result = {};\n this.formConfig?.config?.forEach((fieldSet: any): void => {\n fieldSet.config\n .filter((config: any): boolean => config.controlType !== ApDynformsControltype.Placeholder)\n .forEach((config: any): void => {\n if (this.data.selectedItems.length !== 0 &&\n this.data.selectedItems.every((item) => item[config.key] === this.data.selectedItems[0][config.key])) {\n result[config.key] = this.data.selectedItems[0][config.key];\n } else {\n result[config.key] = undefined;\n }\n }\n );\n });\n return result;\n }\n}\n","// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = '555d263cf44f295d548642b49962cadaa47b5f34';\n/* tslint:enable */\n","import {environment} from '../../environments/environment';\nimport {IAppConfiguration} from '../ap-interface';\nimport {VERSION} from '../../environments/version';\n\n/**\n * Client Configuration Object\n */\nexport const APP_CONFIGURATION: IAppConfiguration = {\n BackendAddress: environment.BackendAddress,\n StartPage: environment.StartRoute,\n TooltipDelay: 2000,\n DefaultLanguage: 'en',\n MaxNotifications: 1,\n WriteMissingTranslations: environment.WriteMissingTranslations,\n SpecialDecimalPlaces: environment.SpecialDecimalPlaces,\n UploadSaveUrl: 'uploadSaveUrl',\n UploadRemoveUrl: 'uploadRemoveUrl',\n AcademyUrl: environment.AcademyUrl,\n TeamViewerUrl: environment.TeamViewerUrl,\n ButtonZoomToMapImage: '../assets/img/zoomtomap_small.png',\n RoundNumericPlaces: 2,\n ParallelFileUpload: environment.ParallelFileUpload,\n ProfilerOn: false,\n DebugMode: environment.Debug,\n LongRunningFunctionFilter: environment.LongRunningFunctionTimeout,\n GridPageSize: environment.GridPageSize,\n GridPageSizeOptions: environment.GridPageSizeOptions,\n StoreKeys: environment.StoreKeys,\n MapFactory: environment.MapFactory,\n Revision: VERSION,\n};\n","import {AfterContentInit, Directive, ElementRef, Input, OnInit} from '@angular/core';\nimport {CssValueParser} from '../utils/ap-css-value.parser';\n\n/**\n * let create a Responsive Grid so you can define relative widths\n * the Width was calculated in percentage and spaces like padding, margin and border was be noted\n */\n@Directive({\n selector: '[apResponsive]'\n})\nexport class ApResponsiveDirective implements AfterContentInit, OnInit {\n /**\n * Width of the Browser Window (outside)\n */\n private _windowX: number;\n /**\n * Height of the Browser Window (outside)\n */\n private _windowY: number;\n /**\n * size of padding left and right\n */\n private _elementPadding: number;\n /**\n * size of margin left and right\n */\n private _elementMargin: number;\n /**\n * size of border left and right\n */\n private _elementBorder: number;\n\n /**\n * the sum of padding, margin and border size\n */\n public get Space(): number {\n return (this._elementMargin || 0) + (this._elementPadding || 0) + (this._elementBorder || 0);\n }\n\n /**\n * size of column for small view\n */\n @Input()\n public sizeSm: string;\n\n /**\n * size of column for normal view\n */\n @Input()\n public sizeMd: string;\n\n /**\n * size of column for large view\n */\n @Input()\n public sizeLg: string;\n\n /**\n * size of column for big views\n */\n @Input()\n public sizeXl: string;\n\n constructor(private element: ElementRef) {\n }\n\n ngOnInit(): void {\n this._registerWindowEvents();\n this._calculateSpaces();\n }\n\n ngAfterContentInit(): void {\n (this.element.nativeElement as HTMLElement).style.cssFloat = 'left';\n this._windowX = window.innerWidth;\n this._windowY = window.innerHeight;\n this._calcWidth();\n }\n\n /**\n * register on window resize event to recalculate the widths\n */\n private _registerWindowEvents(): void {\n window.addEventListener('resize', () => {\n this._windowX = window.innerWidth;\n this._windowY = window.innerHeight;\n this._calcWidth();\n });\n }\n\n /**\n * reads the padding, margin and border spaces and write them to their variables in this directive\n */\n private _calculateSpaces(): void {\n const bl = CssValueParser.getNumberValue((this.element.nativeElement as HTMLElement).style.borderLeft);\n const br = CssValueParser.getNumberValue((this.element.nativeElement as HTMLElement).style.borderRight);\n\n if (bl[1] === br[1]) {\n this._elementBorder = bl[0] + br[0];\n } else {\n console.warn(`border cannot calculated border-left => ${bl[1]} and border-right => ${br[1]}`);\n }\n\n const pl = CssValueParser.getNumberValue((this.element.nativeElement as HTMLElement).style.paddingLeft);\n const pr = CssValueParser.getNumberValue((this.element.nativeElement as HTMLElement).style.paddingRight);\n\n if (pl[1] === pr[1]) {\n this._elementPadding = pl[0] + pr[0];\n } else {\n console.warn(`padding cannot calculated padding-left => ${pl[1]} and padding-right => ${pr[1]}`);\n }\n\n const ml = CssValueParser.getNumberValue((this.element.nativeElement as HTMLElement).style.marginLeft);\n const mr = CssValueParser.getNumberValue((this.element.nativeElement as HTMLElement).style.marginRight);\n\n if (ml[1] === mr[1]) {\n this._elementMargin = ml[0] + mr[0];\n } else {\n console.warn(`margin cannot calculated margin-left => ${ml[1]} and margin-right => ${mr[1]}`);\n }\n }\n\n /**\n * choose the right screen and calculate the width\n */\n private _calcWidth(): void {\n if (!this.sizeMd) {\n throw new Error(`you must define sizeMd on directive sun-responsive`);\n }\n const el: HTMLElement = this.element.nativeElement;\n if (this._windowX <= 480) {\n el.style.width = this._parseSize(this.sizeSm || this.sizeMd);\n } else if (this._windowX > 480 && this._windowX <= 1024) {\n el.style.width = this._parseSize(this.sizeMd);\n } else if (this._windowX > 1024 && this._windowX <= 1920) {\n el.style.width = this._parseSize(this.sizeLg || this.sizeMd);\n } else {\n el.style.width = this._parseSize(this.sizeXl || this.sizeMd);\n }\n }\n\n /**\n * calculate the width in percent for the column\n */\n private _parseSize(value: string): string {\n if (!value.includes('-')) {\n throw new Error(`missing \"-\" in input value: ${value}`);\n }\n const tmp = value.split('-');\n const base = parseInt(tmp[0], 10);\n const full = parseInt(tmp[1], 10);\n if (isNaN(base) || isNaN(full)) {\n throw new Error(`invalid number value in ${base}-${full}`);\n }\n const percent = base * 100 / full;\n const spacePercent = this.Space * 100 / this._windowX;\n return `${(percent - spacePercent)}%`;\n }\n}\n","import {Observable} from 'rxjs';\nimport {ERROR_CONFIRM, ERROR_SEND} from './ap-errorhandler.action';\nimport {Injectable} from '@angular/core';\nimport {ApCustomTypes} from 'invoker-transport';\nimport IClientException = Data.Client.IClientException;\nimport IResultMessage = Invoker.IResultMessage;\nimport {ApSignalrService} from '../services/ap-signalr.service';\n\n/**\n * Custom Error Handler that sends Errors to the Gateway to Log them\n */\n@Injectable({providedIn: 'root'})\nexport class ApErrorhandlerService {\n /**\n * listen the Error Log confirmed\n */\n public confirmedError$: Observable;\n\n constructor(private backend: ApSignalrService) {\n this.confirmedError$ = this.backend.registerObservable(ERROR_CONFIRM);\n }\n\n /**\n * Sends error log information to Gateway/Socket.\n */\n LogClientError(message: string, farmId: number, stackTrace: string, fullState: string, meta: string): void {\n this.backend.send({\n type: ERROR_SEND,\n payload: [\n {\n Name: 'error', Type: ApCustomTypes.Data_Client_ClientException, Value:\n {\n Message: message,\n FarmId: farmId,\n StackTrace: stackTrace,\n FullState: fullState,\n Meta: meta\n } as IClientException\n }\n ]\n });\n }\n}\n","export const ERROR_SEND = '[ClientError] Send';\nexport const ERROR_CONFIRM = '[ClientError] Confirm';\n","import {Injectable} from '@angular/core';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport * as moment from 'moment-timezone';\nimport {Moment} from 'moment';\nimport {DateTime, TimeSpan} from 'ts-tooling';\nimport ISettings = Data.BaseData.ISettings;\n\nexport enum DateDiffType {\n Days,\n Hours,\n Minutes,\n Seconds\n}\n\nexport enum DateSort {\n None,\n Ascending,\n Descending\n}\n\n/**\n * Service for proper date/timezone handling\n */\n@Injectable({providedIn: 'root'})\nexport class ApDateService {\n constructor(private settingsStore: SettingsStore) {\n }\n\n /**\n * Retrieves current UTC date and time.\n * @returns Current UTC date as JavaScript Date object\n * @public\n */\n public getUtc(): Date {\n return moment.utc().toDate();\n }\n\n /**\n * Gets current timestamp in milliseconds since Unix epoch.\n * @returns Number of milliseconds since January 1, 1970, 00:00:00 UTC\n * @public\n */\n public getNow(): number {\n return Date.now();\n }\n\n /**\n * Converts JavaScript Date object to Moment instance.\n * @param date - Date to convert\n * @returns Moment instance representing the input date\n * @public\n */\n public dateToMoment(date: Date): moment.Moment {\n return moment(date);\n }\n\n /**\n * Finds the latest date between two potentially undefined dates.\n * @param firstDate - First date for comparison\n * @param secondDate - Second date for comparison\n * @returns The latest date, or undefined if both dates are undefined\n * @public\n */\n public getLatestDate(firstDate?: Date, secondDate?: Date): Date | undefined {\n if (!firstDate) {\n return secondDate;\n }\n if (!secondDate) {\n return firstDate;\n }\n return firstDate > secondDate ? firstDate : secondDate;\n }\n\n /**\n * Calculates time difference between two dates in specified units.\n * @param firstDate - First date for comparison\n * @param secondDate - Second date for comparison\n * @param diffType - Unit of time for difference calculation (Days/Hours/Minutes/Seconds)\n * @returns Difference between dates in specified units\n * @remarks Defaults to seconds if diffType is not recognized.\n * Left side will be compared with right side.\n * If left side lower than right side result will be -1 and lower.\n * If left side is higher than right side result will be 1 and lower.\n * If both sides equal result will be 0.\n * @public\n */\n public getDateDiff(firstDate: Date, secondDate: Date, diffType: DateDiffType): number {\n switch (diffType) {\n case DateDiffType.Days:\n return this.dateToMoment(firstDate).diff(secondDate, 'days');\n case DateDiffType.Hours:\n return this.dateToMoment(firstDate).diff(secondDate, 'hours');\n case DateDiffType.Minutes:\n return this.dateToMoment(firstDate).diff(secondDate, 'minutes');\n case DateDiffType.Seconds:\n return this.dateToMoment(firstDate).diff(secondDate, 'seconds');\n default:\n return this.dateToMoment(firstDate).diff(secondDate, 'seconds');\n }\n }\n\n /**\n * Filters array of dates to unique values with optional sorting.\n * @param dates - Array of dates to process\n * @param sort - Sort direction (None/Ascending/Descending)\n * @returns Array of unique dates or null if input is empty\n * @remarks Dates are considered unique if they differ by at least 1 second\n * @public\n */\n public getUniqDates(dates: Date[], sort: DateSort = DateSort.None): Date[] | null {\n if (!dates || dates.length <= 0) {\n return null;\n }\n const result = dates.reduce((uniqueDates, currentDate) => {\n if (uniqueDates.length === 0) {\n return [currentDate];\n }\n if (uniqueDates.every(x => Math.abs(this.getDateDiff(x, currentDate, DateDiffType.Seconds)) > 0)) {\n uniqueDates.push(currentDate);\n }\n return uniqueDates;\n }, []);\n if (sort !== DateSort.None) {\n return result.sort((firstDate, secondDate) => {\n if (sort === DateSort.Descending) {\n return secondDate.getTime() - firstDate.getTime();\n }\n return firstDate.getTime() - secondDate.getTime();\n });\n }\n return result;\n }\n\n /**\n * Sets time to noon (12:00) for given date.\n * @param date - Source date\n * @param day - Optional day of month to set\n * @returns New Date object set to noon, or null if input is invalid\n * @public\n */\n public getDateNoon(date: Date, day?: number): Date {\n if (!date) {\n return null;\n }\n const dayNumber: number = day ? day : date.getDate();\n return new Date(date.getFullYear(), date.getMonth(), dayNumber, 12);\n }\n\n /**\n * Converts date to farm timezone and sets time to noon.\n * @param date - Source date\n * @param day - Optional day of month to set\n * @returns Date object in farm timezone set to noon, or null if input is invalid\n * @public\n */\n public getDateNoonToFarmTime(date: Date, day?: number): Date {\n const noonDate: Date = this.getDateNoon(date, day);\n if (!noonDate) {\n return null;\n }\n return this.toFarmDate(noonDate).toDate();\n }\n\n /**\n * Sets time to start of day (00:00:00.000) for given date.\n * @param date - Source date\n * @returns New Date object set to midnight, or null if input is invalid\n * @public\n */\n public getDateMidnight(date: Date): Date {\n if (!date) {\n return null;\n }\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Sets time to end of day (23:59:59.999) for given date.\n * @param date - Source date\n * @returns New Date object set to end of day, or null if input is invalid\n * @public\n */\n public getEndOfDayDate(date: Date): Date {\n if (!date) {\n return null;\n }\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n return new Date(date.setHours(23, 59, 59, 999));\n }\n\n /**\n * Converts date to UTC timezone with optional formatting.\n * @param date - Date to convert (Date object or string)\n * @param format - Optional date format string\n * @param settings - Application settings containing timezone information\n * @returns Moment object in UTC timezone\n * @public\n */\n public getUtcDate(date: Date | string, format: string, settings: ISettings): Moment {\n if (date === null) {\n return moment.tz(date, settings.FarmTime).tz('utc');\n } else if (typeof (date) === typeof (' ')) {\n if (format) {\n return moment.tz(date as string, format, settings.FarmTime).tz('utc');\n } else {\n return moment.tz(date, settings.FarmTime).tz('utc');\n }\n } else {\n return moment.tz(date, settings.FarmTime).tz('utc');\n }\n }\n\n /**\n * Converts Moment object to JavaScript Date.\n * @param givenMoment - Moment object to convert\n * @returns JavaScript Date object\n * @public\n */\n public toJsDate(givenMoment: Moment): Date {\n return new Date(\n givenMoment.year(),\n givenMoment.month(),\n givenMoment.date(),\n givenMoment.hour(),\n givenMoment.minutes(),\n givenMoment.second()\n );\n }\n\n /**\n * Converts date to farm timezone.\n * @param date - Source date\n * @returns Moment object in farm timezone\n * @remarks Handles browser/machine timezone conversion to farm timezone\n * @public\n */\n public toFarmDate(date: Date): Moment {\n return moment(date).tz(this.settingsStore.FirstSetting.FarmTime, true);\n }\n\n /**\n * Converts UTC date to farm timezone.\n * @param date - UTC date (Date object or string)\n * @param format - Optional date format string\n * @returns Moment object in farm timezone\n * @public\n */\n public toFarmDateFromUtc(date: Date | string, format?: string): Moment {\n const farmTime = this.settingsStore.FirstSetting.FarmTime;\n if (date === null) {\n return moment.utc(moment()).tz(farmTime);\n } else if (typeof (date) === typeof (' ')) {\n if (format) {\n return moment(date as string, format).tz('utc', true).tz(farmTime);\n } else {\n return moment(date).tz('utc', true).tz(farmTime);\n }\n }\n return moment(date).tz('utc', true).tz(farmTime);\n }\n\n /**\n * Gets current date in farm timezone.\n * @returns Current date converted to farm timezone\n * @public\n */\n public getFarmDate(): Date {\n return this.toFarmDateFromUtcGetJsDate(this.getUtc());\n }\n\n /**\n * Converts UTC date to JavaScript Date in farm timezone.\n * @param date - UTC date (Date object or string)\n * @param format - Optional date format string\n * @returns JavaScript Date object in farm timezone\n * @public\n */\n public toFarmDateFromUtcGetJsDate(date: Date | string, format?: string): Date {\n return this.toJsDate(this.toFarmDateFromUtc(date, format));\n }\n\n /**\n * Converts date from farm timezone to UTC.\n * @param date - Source date (Date object or string)\n * @param format - Optional date format string\n * @returns Moment object in UTC timezone\n * @public\n */\n public toUtc(date: Date | string, format?: string): Moment {\n const farmTime = this.settingsStore.FirstSetting.FarmTime;\n if (date instanceof Date) {\n date = moment(date).format('YYYY-MM-DD HH:mm:ss');\n format = 'YYYY-MM-DD HH:mm:ss';\n }\n if (format && typeof date === 'string') {\n return moment(date, format).tz(farmTime, true).tz('utc');\n } else {\n return moment(date).tz(farmTime, true).tz('utc');\n }\n }\n\n /**\n * Calculates time difference between two UTC dates.\n * @param date1 - First UTC date\n * @param date2 - Second UTC date\n * @returns TimeSpan object representing absolute difference\n * @remarks Supports ISO string format (2020-01-01T00:00:00.000)\n * @public\n */\n public getNowDifferenceUTC(date1: Date | string, date2: Date | string): TimeSpan {\n if (!date1 || !date2) {\n return TimeSpan.FromMilliseconds(0);\n }\n const ds1 = this._parseDateToISOString(date1);\n const ds2 = this._parseDateToISOString(date2);\n if (!ds1 || !ds2) {\n return TimeSpan.FromMilliseconds(0);\n }\n\n const n = DateTime.FromISOString(ds1);\n const d = DateTime.FromISOString(ds2);\n const ms = Math.abs(n.ToUnixTimestamp() - d.ToUnixTimestamp());\n return TimeSpan.FromMilliseconds(ms);\n }\n\n /**\n * Creates Date object with time set from milliseconds.\n * @param timeInMilliseconds - Time in milliseconds to set\n * @returns Date object with specified time\n * @public\n */\n public getDateWithTimeFromMilliseconds(timeInMilliseconds: number): Date {\n const timeSpan = TimeSpan.FromMilliseconds(timeInMilliseconds);\n const date = new Date();\n date.setHours(timeSpan.Hour);\n date.setMinutes(timeSpan.Minute);\n date.setSeconds(timeSpan.Second);\n date.setMilliseconds(timeSpan.Millisecond);\n return date;\n }\n\n /**\n * Converts date to ISO string format.\n * @param date - Date to convert (Date object or string)\n * @returns ISO string representation of date\n * @private\n */\n private _parseDateToISOString(date: Date | string): string {\n if (typeof date === typeof '') {\n return date as string;\n } else {\n return (date as Date).toISOString();\n }\n }\n}\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nexport class DefaultReconnectPolicy {\r\n constructor(retryDelays) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n nextRetryDelayInMilliseconds(retryContext) {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nexport class HeaderNames {\r\n}\r\nHeaderNames.Authorization = \"Authorization\";\r\nHeaderNames.Cookie = \"Cookie\";\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n constructor(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n}\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport class HttpClient {\r\n get(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n post(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n delete(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n getCookieString(url) {\r\n return \"\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\n/** @private */\r\nexport class AccessTokenHttpClient extends HttpClient {\r\n constructor(innerClient, accessTokenFactory) {\r\n super();\r\n this._innerClient = innerClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n }\r\n async send(request) {\r\n let allowRetry = true;\r\n if (this._accessTokenFactory && (!this._accessToken || (request.url && request.url.indexOf(\"/negotiate?\") > 0))) {\r\n // don't retry if the request is a negotiate or if we just got a potentially new token from the access token factory\r\n allowRetry = false;\r\n this._accessToken = await this._accessTokenFactory();\r\n }\r\n this._setAuthorizationHeader(request);\r\n const response = await this._innerClient.send(request);\r\n if (allowRetry && response.statusCode === 401 && this._accessTokenFactory) {\r\n this._accessToken = await this._accessTokenFactory();\r\n this._setAuthorizationHeader(request);\r\n return await this._innerClient.send(request);\r\n }\r\n return response;\r\n }\r\n _setAuthorizationHeader(request) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (this._accessToken) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${this._accessToken}`;\r\n }\r\n // don't remove the header if there isn't an access token factory, the user manually added the header in this case\r\n else if (this._accessTokenFactory) {\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n }\r\n getCookieString(url) {\r\n return this._innerClient.getCookieString(url);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage, statusCode) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when multiple errors have occurred. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message, innerErrors) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.innerErrors = innerErrors;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger {\r\n constructor() { }\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n log(_logLevel, _message) {\r\n }\r\n}\r\n/** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\nNullLogger.instance = new NullLogger();\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport const VERSION = \"8.0.7\";\r\n/** @private */\r\nexport class Arg {\r\n static isRequired(val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n static isNotEmpty(val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n static isIn(val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n static get isBrowser() {\r\n return !Platform.isNode && typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n static get isWebWorker() {\r\n return !Platform.isNode && typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n // react-native has a window but no document\r\n static get isReactNative() {\r\n return !Platform.isNode && typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n static get isNode() {\r\n return typeof process !== \"undefined\" && process.release && process.release.name === \"node\";\r\n }\r\n}\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n const view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport async function sendMessage(logger, transportName, httpClient, url, content, options) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent)}.`);\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers },\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log !== undefined) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nexport class SubjectSubscription {\r\n constructor(subject, observer) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n dispose() {\r\n const index = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class ConsoleLogger {\r\n constructor(minimumLogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n log(logLevel, message) {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport function getUserAgentHeader() {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent = \"Microsoft SignalR/\";\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += `${runtime}`;\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n/** @private */\r\nexport function getErrorString(e) {\r\n if (e.stack) {\r\n return e.stack;\r\n }\r\n else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n/** @private */\r\nexport function getGlobalThis() {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis, isArrayBuffer } from \"./Utils\";\r\nexport class FetchHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n // Node added a fetch implementation to the global scope starting in v18.\r\n // We need to add a cookie jar in node to be able to share cookies with WebSocket\r\n if (typeof fetch === \"undefined\" || Platform.isNode) {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n if (typeof fetch === \"undefined\") {\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n }\r\n else {\r\n // Use fetch from Node if available\r\n this._fetchType = fetch;\r\n }\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n }\r\n else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n /** @inheritDoc */\r\n async send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n const abortController = new this._abortControllerType();\r\n let error;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n request.headers = request.headers || {};\r\n if (isArrayBuffer(request.content)) {\r\n request.headers[\"Content-Type\"] = \"application/octet-stream\";\r\n }\r\n else {\r\n request.headers[\"Content-Type\"] = \"text/plain;charset=UTF-8\";\r\n }\r\n }\r\n let response;\r\n try {\r\n response = await this._fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n }\r\n catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\r\n throw e;\r\n }\r\n finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\");\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n return new HttpResponse(response.status, response.statusText, payload);\r\n }\r\n getCookieString(url) {\r\n let cookies = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\nfunction deserializeContent(response, responseType) {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nexport class XhrHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n if (isArrayBuffer(request.content)) {\r\n xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\r\n }\r\n else {\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n }\r\n }\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content);\r\n });\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n constructor(logger) {\r\n super();\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this._httpClient.send(request);\r\n }\r\n getCookieString(url) {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController {\r\n constructor() {\r\n this._isAborted = false;\r\n this.onabort = null;\r\n }\r\n abort() {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n get signal() {\r\n return this;\r\n }\r\n get aborted() {\r\n return this._isAborted;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get pollAborted() {\r\n return this._pollAbort.aborted;\r\n }\r\n constructor(httpClient, logger, options) {\r\n this._httpClient = httpClient;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n this._running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._url = url;\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n const pollOptions = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n this._running = true;\r\n }\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n async _poll(url, pollOptions) {\r\n try {\r\n while (this._running) {\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this._running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n }\r\n else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n async send(data) {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, data, this._options);\r\n }\r\n async stop() {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n try {\r\n await this._receiving;\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const deleteOptions = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n let error;\r\n try {\r\n await this._httpClient.delete(this._url, deleteOptions);\r\n }\r\n catch (err) {\r\n error = err;\r\n }\r\n if (error) {\r\n if (error instanceof HttpError) {\r\n if (error.statusCode === 404) {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) A 404 response was returned from sending a DELETE request.\");\r\n }\r\n else {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Error sending a DELETE request: ${error}`);\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request accepted.\");\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nexport class ServerSentEventsTransport {\r\n constructor(httpClient, accessToken, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessToken = accessToken;\r\n this._logger = logger;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this._url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n if (this._accessToken) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(this._accessToken)}`;\r\n }\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n let eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers } });\r\n }\r\n try {\r\n eventSource.onmessage = (e) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n }\r\n else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n async send(data) {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, data, this._options);\r\n }\r\n stop() {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n _close(e) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nexport class WebSocketTransport {\r\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n let token;\r\n if (this._accessTokenFactory) {\r\n token = await this._accessTokenFactory();\r\n }\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n if (Platform.isNode || Platform.isReactNative) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = cookies;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n else {\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n webSocket.onopen = (_event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = (event) => {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"There was an error with the transport\";\r\n }\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n webSocket.onmessage = (message) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = (event) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n }\r\n else {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n send(data) {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n stop() {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n return Promise.resolve();\r\n }\r\n _close(event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => { };\r\n this._webSocket.onmessage = () => { };\r\n this._webSocket.onerror = () => { };\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n _isCloseEvent(event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AccessTokenHttpClient } from \"./AccessTokenHttpClient\";\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError, AbortError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nconst MAX_REDIRECTS = 100;\r\n/** @private */\r\nexport class HttpConnection {\r\n constructor(url, options = {}) {\r\n this._stopPromiseResolver = () => { };\r\n this.features = {};\r\n this._negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n let webSocketModule = null;\r\n let eventSourceModule = null;\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this._httpClient = new AccessTokenHttpClient(options.httpClient || new DefaultHttpClient(this._logger), options.accessTokenFactory);\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async start(transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n if (this._connectionState !== \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = \"Connecting\" /* ConnectionState.Connecting */;\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n return Promise.reject(new AbortError(message));\r\n }\r\n else if (this._connectionState !== \"Connected\" /* ConnectionState.Connected */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n this._connectionStarted = true;\r\n }\r\n send(data) {\r\n if (this._connectionState !== \"Connected\" /* ConnectionState.Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n async stop(error) {\r\n if (this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = \"Disconnecting\" /* ConnectionState.Disconnecting */;\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n async _stopInternal(error) {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n try {\r\n await this._startInternalPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n this.transport = undefined;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n async _startInternal(transferFormat) {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n this._httpClient._accessTokenFactory = this._accessTokenFactory;\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n }\r\n else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n }\r\n else {\r\n let negotiateResponse = null;\r\n let redirects = 0;\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */ || this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n throw new AbortError(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n // set the factory to undefined so the AccessTokenHttpClient won't retry with the same token, since we know it won't change until a connection restart\r\n this._httpClient._accessToken = accessToken;\r\n this._httpClient._accessTokenFactory = undefined;\r\n }\r\n redirects++;\r\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this._connectionState === \"Connecting\" /* ConnectionState.Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = \"Connected\" /* ConnectionState.Connected */;\r\n }\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _getNegotiationResponse(url) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n const negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n if (negotiateResponse.useStatefulReconnect && this._options._useStatefulReconnect !== true) {\r\n return Promise.reject(new FailedToNegotiateWithServerError(\"Client didn't negotiate Stateful Reconnect but the server did.\"));\r\n }\r\n return negotiateResponse;\r\n }\r\n catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n _createConnectUrl(url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n const transportExceptions = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat, (negotiate === null || negotiate === void 0 ? void 0 : negotiate.useStatefulReconnect) === true);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n }\r\n else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n }\r\n catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n }\r\n catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n if (this._connectionState !== \"Connecting\" /* ConnectionState.Connecting */) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n }\r\n }\r\n }\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n _constructTransport(transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._httpClient._accessToken, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n _startTransport(url, transferFormat) {\r\n this.transport.onreceive = this.onreceive;\r\n if (this.features.reconnect) {\r\n this.transport.onclose = async (e) => {\r\n let callStop = false;\r\n if (this.features.reconnect) {\r\n try {\r\n this.features.disconnected();\r\n await this.transport.connect(url, transferFormat);\r\n await this.features.resend();\r\n }\r\n catch {\r\n callStop = true;\r\n }\r\n }\r\n else {\r\n this._stopConnection(e);\r\n return;\r\n }\r\n if (callStop) {\r\n this._stopConnection(e);\r\n }\r\n };\r\n }\r\n else {\r\n this.transport.onclose = (e) => this._stopConnection(e);\r\n }\r\n return this.transport.connect(url, transferFormat);\r\n }\r\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat, useStatefulReconnect) {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n this.features.reconnect = transport === HttpTransportType.WebSockets ? useStatefulReconnect : undefined;\r\n return this._constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n _isITransport(transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n _stopConnection(error) {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n if (this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n if (this._connectionState === \"Connecting\" /* ConnectionState.Connecting */) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n _resolveUrl(url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n _resolveNegotiateUrl(url) {\r\n const negotiateUrl = new URL(url);\r\n if (negotiateUrl.pathname.endsWith('/')) {\r\n negotiateUrl.pathname += \"negotiate\";\r\n }\r\n else {\r\n negotiateUrl.pathname += \"/negotiate\";\r\n }\r\n const searchParams = new URLSearchParams(negotiateUrl.searchParams);\r\n if (!searchParams.has(\"negotiateVersion\")) {\r\n searchParams.append(\"negotiateVersion\", this._negotiateVersion.toString());\r\n }\r\n if (searchParams.has(\"useStatefulReconnect\")) {\r\n if (searchParams.get(\"useStatefulReconnect\") === \"true\") {\r\n this._options._useStatefulReconnect = true;\r\n }\r\n }\r\n else if (this._options._useStatefulReconnect === true) {\r\n searchParams.append(\"useStatefulReconnect\", \"true\");\r\n }\r\n negotiateUrl.search = searchParams.toString();\r\n return negotiateUrl.toString();\r\n }\r\n}\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nexport class TransportSendQueue {\r\n constructor(_transport) {\r\n this._transport = _transport;\r\n this._buffer = [];\r\n this._executing = true;\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n send(data) {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n stop() {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n _bufferData(data) {\r\n if (this._buffer.length && typeof (this._buffer[0]) !== typeof (data)) {\r\n throw new Error(`Expected data to be of type ${typeof (this._buffer)} but was of type ${typeof (data)}`);\r\n }\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n async _sendLoop() {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n break;\r\n }\r\n this._sendBufferedData = new PromiseSource();\r\n const transportResult = this._transportResult;\r\n this._transportResult = undefined;\r\n const data = typeof (this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n this._buffer.length = 0;\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n }\r\n catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n static _concatBuffers(arrayBuffers) {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n }\r\n}\r\nclass PromiseSource {\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n resolve() {\r\n this._resolver();\r\n }\r\n reject(reason) {\r\n this._rejecter(reason);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n static write(output) {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n static parse(input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\nTextMessageFormat.RecordSeparatorCode = 0x1e;\r\nTextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n writeHandshakeRequest(handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n parseHandshakeResponse(data) {\r\n let messageData;\r\n let remainingData;\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n const textData = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n MessageType[MessageType[\"Ack\"] = 8] = \"Ack\";\r\n MessageType[MessageType[\"Sequence\"] = 9] = \"Sequence\";\r\n})(MessageType || (MessageType = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject {\r\n constructor() {\r\n this.observers = [];\r\n }\r\n next(item) {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n error(err) {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n complete() {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n subscribe(observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nexport class MessageBuffer {\r\n constructor(protocol, connection, bufferSize) {\r\n this._bufferSize = 100000;\r\n this._messages = [];\r\n this._totalMessageCount = 0;\r\n this._waitForSequenceMessage = false;\r\n // Message IDs start at 1 and always increment by 1\r\n this._nextReceivingSequenceId = 1;\r\n this._latestReceivedSequenceId = 0;\r\n this._bufferedByteCount = 0;\r\n this._reconnectInProgress = false;\r\n this._protocol = protocol;\r\n this._connection = connection;\r\n this._bufferSize = bufferSize;\r\n }\r\n async _send(message) {\r\n const serializedMessage = this._protocol.writeMessage(message);\r\n let backpressurePromise = Promise.resolve();\r\n // Only count invocation messages. Acks, pings, etc. don't need to be resent on reconnect\r\n if (this._isInvocationMessage(message)) {\r\n this._totalMessageCount++;\r\n let backpressurePromiseResolver = () => { };\r\n let backpressurePromiseRejector = () => { };\r\n if (isArrayBuffer(serializedMessage)) {\r\n this._bufferedByteCount += serializedMessage.byteLength;\r\n }\r\n else {\r\n this._bufferedByteCount += serializedMessage.length;\r\n }\r\n if (this._bufferedByteCount >= this._bufferSize) {\r\n backpressurePromise = new Promise((resolve, reject) => {\r\n backpressurePromiseResolver = resolve;\r\n backpressurePromiseRejector = reject;\r\n });\r\n }\r\n this._messages.push(new BufferedItem(serializedMessage, this._totalMessageCount, backpressurePromiseResolver, backpressurePromiseRejector));\r\n }\r\n try {\r\n // If this is set it means we are reconnecting or resending\r\n // We don't want to send on a disconnected connection\r\n // And we don't want to send if resend is running since that would mean sending\r\n // this message twice\r\n if (!this._reconnectInProgress) {\r\n await this._connection.send(serializedMessage);\r\n }\r\n }\r\n catch {\r\n this._disconnected();\r\n }\r\n await backpressurePromise;\r\n }\r\n _ack(ackMessage) {\r\n let newestAckedMessage = -1;\r\n // Find index of newest message being acked\r\n for (let index = 0; index < this._messages.length; index++) {\r\n const element = this._messages[index];\r\n if (element._id <= ackMessage.sequenceId) {\r\n newestAckedMessage = index;\r\n if (isArrayBuffer(element._message)) {\r\n this._bufferedByteCount -= element._message.byteLength;\r\n }\r\n else {\r\n this._bufferedByteCount -= element._message.length;\r\n }\r\n // resolve items that have already been sent and acked\r\n element._resolver();\r\n }\r\n else if (this._bufferedByteCount < this._bufferSize) {\r\n // resolve items that now fall under the buffer limit but haven't been acked\r\n element._resolver();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n if (newestAckedMessage !== -1) {\r\n // We're removing everything including the message pointed to, so add 1\r\n this._messages = this._messages.slice(newestAckedMessage + 1);\r\n }\r\n }\r\n _shouldProcessMessage(message) {\r\n if (this._waitForSequenceMessage) {\r\n if (message.type !== MessageType.Sequence) {\r\n return false;\r\n }\r\n else {\r\n this._waitForSequenceMessage = false;\r\n return true;\r\n }\r\n }\r\n // No special processing for acks, pings, etc.\r\n if (!this._isInvocationMessage(message)) {\r\n return true;\r\n }\r\n const currentId = this._nextReceivingSequenceId;\r\n this._nextReceivingSequenceId++;\r\n if (currentId <= this._latestReceivedSequenceId) {\r\n if (currentId === this._latestReceivedSequenceId) {\r\n // Should only hit this if we just reconnected and the server is sending\r\n // Messages it has buffered, which would mean it hasn't seen an Ack for these messages\r\n this._ackTimer();\r\n }\r\n // Ignore, this is a duplicate message\r\n return false;\r\n }\r\n this._latestReceivedSequenceId = currentId;\r\n // Only start the timer for sending an Ack message when we have a message to ack. This also conveniently solves\r\n // timer throttling by not having a recursive timer, and by starting the timer via a network call (recv)\r\n this._ackTimer();\r\n return true;\r\n }\r\n _resetSequence(message) {\r\n if (message.sequenceId > this._nextReceivingSequenceId) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._connection.stop(new Error(\"Sequence ID greater than amount of messages we've received.\"));\r\n return;\r\n }\r\n this._nextReceivingSequenceId = message.sequenceId;\r\n }\r\n _disconnected() {\r\n this._reconnectInProgress = true;\r\n this._waitForSequenceMessage = true;\r\n }\r\n async _resend() {\r\n const sequenceId = this._messages.length !== 0\r\n ? this._messages[0]._id\r\n : this._totalMessageCount + 1;\r\n await this._connection.send(this._protocol.writeMessage({ type: MessageType.Sequence, sequenceId }));\r\n // Get a local variable to the _messages, just in case messages are acked while resending\r\n // Which would slice the _messages array (which creates a new copy)\r\n const messages = this._messages;\r\n for (const element of messages) {\r\n await this._connection.send(element._message);\r\n }\r\n this._reconnectInProgress = false;\r\n }\r\n _dispose(error) {\r\n error !== null && error !== void 0 ? error : (error = new Error(\"Unable to reconnect to server.\"));\r\n // Unblock backpressure if any\r\n for (const element of this._messages) {\r\n element._rejector(error);\r\n }\r\n }\r\n _isInvocationMessage(message) {\r\n // There is no way to check if something implements an interface.\r\n // So we individually check the messages in a switch statement.\r\n // To make sure we don't miss any message types we rely on the compiler\r\n // seeing the function returns a value and it will do the\r\n // exhaustive check for us on the switch statement, since we don't use 'case default'\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n case MessageType.StreamInvocation:\r\n case MessageType.CancelInvocation:\r\n return true;\r\n case MessageType.Close:\r\n case MessageType.Sequence:\r\n case MessageType.Ping:\r\n case MessageType.Ack:\r\n return false;\r\n }\r\n }\r\n _ackTimer() {\r\n if (this._ackTimerHandle === undefined) {\r\n this._ackTimerHandle = setTimeout(async () => {\r\n try {\r\n if (!this._reconnectInProgress) {\r\n await this._connection.send(this._protocol.writeMessage({ type: MessageType.Ack, sequenceId: this._latestReceivedSequenceId }));\r\n }\r\n // Ignore errors, that means the connection is closed and we don't care about the Ack message anymore.\r\n }\r\n catch { }\r\n clearTimeout(this._ackTimerHandle);\r\n this._ackTimerHandle = undefined;\r\n // 1 second delay so we don't spam Ack messages if there are many messages being received at once.\r\n }, 1000);\r\n }\r\n }\r\n}\r\nclass BufferedItem {\r\n constructor(message, id, resolver, rejector) {\r\n this._message = message;\r\n this._id = id;\r\n this._resolver = resolver;\r\n this._rejector = rejector;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { AbortError } from \"./Errors\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\nimport { MessageBuffer } from \"./MessageBuffer\";\r\nconst DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\nconst DEFAULT_STATEFUL_RECONNECT_BUFFER_SIZE = 100000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n static create(connection, logger, protocol, reconnectPolicy, serverTimeoutInMilliseconds, keepAliveIntervalInMilliseconds, statefulReconnectBufferSize) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy, serverTimeoutInMilliseconds, keepAliveIntervalInMilliseconds, statefulReconnectBufferSize);\r\n }\r\n constructor(connection, logger, protocol, reconnectPolicy, serverTimeoutInMilliseconds, keepAliveIntervalInMilliseconds, statefulReconnectBufferSize) {\r\n this._nextKeepAlive = 0;\r\n this._freezeEventListener = () => {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = serverTimeoutInMilliseconds !== null && serverTimeoutInMilliseconds !== void 0 ? serverTimeoutInMilliseconds : DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = keepAliveIntervalInMilliseconds !== null && keepAliveIntervalInMilliseconds !== void 0 ? keepAliveIntervalInMilliseconds : DEFAULT_PING_INTERVAL_IN_MS;\r\n this._statefulReconnectBufferSize = statefulReconnectBufferSize !== null && statefulReconnectBufferSize !== void 0 ? statefulReconnectBufferSize : DEFAULT_STATEFUL_RECONNECT_BUFFER_SIZE;\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = (data) => this._processIncomingData(data);\r\n this.connection.onclose = (error) => this._connectionClosed(error);\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state() {\r\n return this._connectionState;\r\n }\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId() {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl() {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n }\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n start() {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n async _startWithStateTransitions() {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n try {\r\n await this._startInternal();\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n }\r\n catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n await this.connection.start(this._protocol.transferFormat);\r\n try {\r\n let version = this._protocol.version;\r\n if (!this.connection.features.reconnect) {\r\n // Stateful Reconnect starts with HubProtocol version 2, newer clients connecting to older servers will fail to connect due to\r\n // the handshake only supporting version 1, so we will try to send version 1 during the handshake to keep old servers working.\r\n version = 1;\r\n }\r\n const handshakeRequest = {\r\n protocol: this._protocol.name,\r\n version,\r\n };\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n await handshakePromise;\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n const useStatefulReconnect = this.connection.features.reconnect || false;\r\n if (useStatefulReconnect) {\r\n this._messageBuffer = new MessageBuffer(this._protocol, this.connection, this._statefulReconnectBufferSize);\r\n this.connection.features.disconnected = this._messageBuffer._disconnected.bind(this._messageBuffer);\r\n this.connection.features.resend = () => {\r\n if (this._messageBuffer) {\r\n return this._messageBuffer._resend();\r\n }\r\n };\r\n }\r\n if (!this.connection.features.inherentKeepAlive) {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n async stop() {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n this.connection.features.reconnect = false;\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n _stopInternal(error) {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n const state = this._connectionState;\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n if (state === HubConnectionState.Connected) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._sendCloseMessage();\r\n }\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new AbortError(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n async _sendCloseMessage() {\r\n try {\r\n await this._sendWithProtocol(this._createCloseMessage());\r\n }\r\n catch {\r\n // Ignore, this is a best effort attempt to let the server know the client closed gracefully.\r\n }\r\n }\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n stream(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue;\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n return subject;\r\n }\r\n _sendMessage(message) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n _sendWithProtocol(message) {\r\n if (this._messageBuffer) {\r\n return this._messageBuffer._send(message);\r\n }\r\n else {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n send(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n this._launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n invoke(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n }\r\n on(methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this._methods[methodName].push(newMethod);\r\n }\r\n off(methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n onclose(callback) {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n onreconnecting(callback) {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n onreconnected(callback) {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n _processIncomingData(data) {\r\n this._cleanupTimeout();\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n for (const message of messages) {\r\n if (this._messageBuffer && !this._messageBuffer._shouldProcessMessage(message)) {\r\n // Don't process the message, we are either waiting for a SequenceMessage or received a duplicate message\r\n continue;\r\n }\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this._invokeClientMethod(message)\r\n .catch((e) => {\r\n this._logger.log(LogLevel.Error, `Invoke client method threw error: ${getErrorString(e)}`);\r\n });\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n break;\r\n }\r\n case MessageType.Ack:\r\n if (this._messageBuffer) {\r\n this._messageBuffer._ack(message);\r\n }\r\n break;\r\n case MessageType.Sequence:\r\n if (this._messageBuffer) {\r\n this._messageBuffer._resetSequence(message);\r\n }\r\n break;\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n this._resetTimeoutPeriod();\r\n }\r\n _processHandshakeResponse(data) {\r\n let responseMessage;\r\n let remainingData;\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n }\r\n catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this._cleanupPingTimer();\r\n }\r\n _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined) {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n async _invokeClientMethod(invocationMessage) {\r\n const methodName = invocationMessage.target.toLowerCase();\r\n const methods = this._methods[methodName];\r\n if (!methods) {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${methodName}' found.`);\r\n // No handlers provided by client but the server is expecting a response still, so we send an error\r\n if (invocationMessage.invocationId) {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n await this._sendWithProtocol(this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null));\r\n }\r\n return;\r\n }\r\n // Avoid issues with handlers removing themselves thus modifying the list while iterating through it\r\n const methodsCopy = methods.slice();\r\n // Server expects a response\r\n const expectsResponse = invocationMessage.invocationId ? true : false;\r\n // We preserve the last result or exception but still call all handlers\r\n let res;\r\n let exception;\r\n let completionMessage;\r\n for (const m of methodsCopy) {\r\n try {\r\n const prevRes = res;\r\n res = await m.apply(this, invocationMessage.arguments);\r\n if (expectsResponse && res && prevRes) {\r\n this._logger.log(LogLevel.Error, `Multiple results provided for '${methodName}'. Sending error to server.`);\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `Client provided multiple results.`, null);\r\n }\r\n // Ignore exception if we got a result after, the exception will be logged\r\n exception = undefined;\r\n }\r\n catch (e) {\r\n exception = e;\r\n this._logger.log(LogLevel.Error, `A callback for the method '${methodName}' threw error '${e}'.`);\r\n }\r\n }\r\n if (completionMessage) {\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else if (expectsResponse) {\r\n // If there is an exception that means either no result was given or a handler after a result threw\r\n if (exception) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `${exception}`, null);\r\n }\r\n else if (res !== undefined) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, null, res);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n // Client didn't provide a result or throw from a handler, server expects a response so we send an error\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null);\r\n }\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else {\r\n if (res) {\r\n this._logger.log(LogLevel.Error, `Result given for '${methodName}' method but server is not expecting a result.`);\r\n }\r\n }\r\n }\r\n _connectionClosed(error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new AbortError(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n _completeClose(error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n if (this._messageBuffer) {\r\n this._messageBuffer._dispose(error !== null && error !== void 0 ? error : new Error(\"Connection closed.\"));\r\n this._messageBuffer = undefined;\r\n }\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n async _reconnect(error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n try {\r\n await this._startInternal();\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n return;\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n this._completeClose();\r\n }\r\n _getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this._reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n _cancelCallbacksWithError(error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n _cleanupPingTimer() {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n _cleanupTimeout() {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n _createInvocation(methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n _launchStreams(streams, promiseQueue) {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n _replaceStreamingParams(args) {\r\n const streams = [];\r\n const streamIds = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n }\r\n _isObservable(arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n _createStreamInvocation(methodName, args, streamIds) {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n _createCancelInvocation(id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n _createStreamItemMessage(id, item) {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n _createCompletionMessage(id, error, result) {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n _createCloseMessage() {\r\n return { type: MessageType.Close };\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol {\r\n constructor() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 2;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n case MessageType.Ack:\r\n this._isAckMessage(parsedMessage);\r\n break;\r\n case MessageType.Sequence:\r\n this._isSequenceMessage(parsedMessage);\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n }\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n writeMessage(message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n _isInvocationMessage(message) {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n _isStreamItemMessage(message) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n _isCompletionMessage(message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n _isAckMessage(message) {\r\n if (typeof message.sequenceId !== 'number') {\r\n throw new Error(\"Invalid SequenceId for Ack message.\");\r\n }\r\n }\r\n _isSequenceMessage(message) {\r\n if (typeof message.sequenceId !== 'number') {\r\n throw new Error(\"Invalid SequenceId for Sequence message.\");\r\n }\r\n }\r\n _assertNotEmptyString(value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n configureLogging(logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n }\r\n withUrl(url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n }\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n withHubProtocol(protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n }\r\n /** Configures {@link @microsoft/signalr.HubConnection.serverTimeoutInMilliseconds} for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withServerTimeout(milliseconds) {\r\n Arg.isRequired(milliseconds, \"milliseconds\");\r\n this._serverTimeoutInMilliseconds = milliseconds;\r\n return this;\r\n }\r\n /** Configures {@link @microsoft/signalr.HubConnection.keepAliveIntervalInMilliseconds} for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withKeepAliveInterval(milliseconds) {\r\n Arg.isRequired(milliseconds, \"milliseconds\");\r\n this._keepAliveIntervalInMilliseconds = milliseconds;\r\n return this;\r\n }\r\n /** Enables and configures options for the Stateful Reconnect feature.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withStatefulReconnect(options) {\r\n if (this.httpConnectionOptions === undefined) {\r\n this.httpConnectionOptions = {};\r\n }\r\n this.httpConnectionOptions._useStatefulReconnect = true;\r\n this._statefulReconnectBufferSize = options === null || options === void 0 ? void 0 : options.bufferSize;\r\n return this;\r\n }\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n build() {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy, this._serverTimeoutInMilliseconds, this._keepAliveIntervalInMilliseconds, this._statefulReconnectBufferSize);\r\n }\r\n}\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\nimport * as signalR from '@microsoft/signalr';\nimport {retry} from 'async';\nimport {Guid} from 'ts-tooling';\nimport IResultMessage = Invoker.IResultMessage;\nimport {AgriportSessionActions, Config, IAction, IStoreBackend, LoginActions} from 'invoker-transport';\nimport {APP_CONFIGURATION} from '../config';\nimport IAgriportSession = Agriport.Invoker.Api.SessionHandling.IAgriportSession;\n\nfunction supportWebWorkers(): boolean {\n return !!window && !!Worker;\n}\n\nconst HUB_NAME = 'invokerHub';\nconst RETRY_COUNT = 50;\nconst RETRY_TIMEOUT = 200;\n\n@Injectable({ providedIn: 'root' })\nexport class ApSignalrService implements IStoreBackend {\n private static tabId = new Guid().ToString();\n private static established = false;\n private static connection: signalR.HubConnection = null;\n private static dataParser = new Worker('assets/worker/unzip.js');\n private static dataPacker = new Worker('assets/worker/zip.js');\n private static _listeners: { [key: string]: EventEmitter } = {};\n // The client has a copy of its related backend session.\n // This is necessary to reactivate a backend session after Invoker restarted or if signalR connection\n // received a disconnect (=backend session gets removed)\n private static _clientSession: IAgriportSession = undefined;\n\n public static isDebugMode = false;\n public static isLoggedIn = false;\n\n constructor() {\n if (!ApSignalrService.established) {\n this.initializeConnection();\n }\n // Listen to backend's AgriportSession changes and keep track of those changes in the client's session copy\n this.getListenerByActionType(AgriportSessionActions.AGRIPORT_SESSION_UPDATED)\n .subscribe((d) => {\n if (!d.Data) {\n return;\n }\n ApSignalrService._clientSession = d.Data;\n });\n }\n\n private static _parseData(data: string): IResultMessage {\n let DATA: any;\n try {\n DATA = JSON.parse(atob(data));\n } catch (error) {\n DATA = data;\n }\n return DATA;\n }\n\n private static _packData(action: any): string {\n let invokerArguments = '[]';\n if (action.payload && action.payload.map) {\n invokerArguments = JSON.stringify(action.payload.map((e) => {\n e.Value = JSON.stringify(e.Value);\n return e;\n }));\n }\n return btoa(`{\"Context\":\"${action.type}\",\"Arguments\":${invokerArguments},\"BrowserTabId\":\"${action.browserTabId}\"}`);\n }\n\n private static _handleError(err: any, opt?: string): void {\n if (!err) { return; }\n let errorMsg = opt ? `\"${opt}\": ${ApSignalrService._stackErrorMessage(err)}` : ApSignalrService._stackErrorMessage(err);\n errorMsg += `\\n\\n${err.StackTraceString}`;\n const validationError = new Error(errorMsg);\n if (err['ValidationResults']) {\n validationError['ValidationResults'] = err.ValidationResults;\n }\n throw validationError;\n }\n\n private static _stackErrorMessage(err: System.IException): string {\n let msg = err.Message;\n let inner = err.InnerException;\n while (inner) {\n msg += `\\n => ${inner.Message}`;\n inner = inner.InnerException;\n }\n return msg;\n }\n\n private initializeConnection(): void {\n ApSignalrService.connection = new signalR.HubConnectionBuilder()\n .withUrl(this.buildUrl(), {\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withKeepAliveInterval(15 * 1000) // keep alive ping which is sent from client -> server if server did not send a keep alive already\n .withServerTimeout(120 * 1000) // Timeout for server responses\n .withAutomaticReconnect([0, 1000, 2000, 4000, 10000, 10000, 30000, 30000, 30000, 60000, 60000, 60000, 60000, 120000, 120000, 120000, 120000]) // automatic reconnect intervals\n .configureLogging(signalR.LogLevel.Critical) // reduced signalR logging to critical (=application crash). Regular errors which would cause a reconnect need no logging here\n .build();\n\n ApSignalrService.connection.on('recieveResult', (raw) => this._handleIncoming(raw));\n\n // connect to the WebWorker Data Streams\n ApSignalrService.dataParser.addEventListener('message', (e) => this._incoming(e.data));\n ApSignalrService.dataParser.addEventListener('error', (err) => console.error(err));\n ApSignalrService.dataPacker.addEventListener('message', (e) => this._sendPacket(e.data));\n ApSignalrService.dataPacker.addEventListener('error', (err) => console.error(err));\n\n this.connect().then();\n }\n public cookieGetter: () => string = () => '';\n public versionGetter: () => string = () => APP_CONFIGURATION.Revision;\n\n async connect(): Promise {\n if (ApSignalrService.established === true) {\n return;\n }\n try {\n ApSignalrService.established = true;\n ApSignalrService.connection.baseUrl = this.buildUrl();\n await ApSignalrService.connection.start();\n console.log('Connected to backend.');\n } catch (err) {\n ApSignalrService.established = false;\n console.error('Failed to connect to backend:', err);\n setTimeout(() => this.connect(), 5000); // retry after 5 seconds\n }\n }\n\n private buildUrl(): string {\n return `${APP_CONFIGURATION.BackendAddress}/${HUB_NAME}?tabId=${ApSignalrService.tabId}&version=${this.versionGetter()}`;\n }\n\n public disconnect(): Promise {\n ApSignalrService.established = false;\n return ApSignalrService.connection.stop();\n }\n\n public getListenerByActionType(actionType: string): EventEmitter {\n if (!ApSignalrService._listeners[actionType]) {\n ApSignalrService._listeners[actionType] = new EventEmitter();\n }\n return ApSignalrService._listeners[actionType];\n }\n\n public registerObservable(action: (new (payload?: any) => T) | string): EventEmitter {\n const actionType = typeof action === 'string' ? action : new (action as new (payload?: any) => T)().type;\n return this.getListenerByActionType(actionType);\n }\n\n public send(action: T): EventEmitter {\n const listener = this.getListenerByActionType(action.type);\n if (ApSignalrService.isDebugMode && action?.type !== '[metrics] module change') {\n console.log(`%c${new Date().toISOString()}: ${action?.type?.padEnd(50, '.')} SENT`, 'color: orange; background: rgba(79, 79, 79, 0.5);');\n }\n this._handleSend(action);\n return listener;\n }\n\n private _sendPacket(pack: string): void {\n retry({\n times: RETRY_COUNT,\n interval: RETRY_TIMEOUT,\n }, (cb) => {\n try {\n // long story short:\n // During login (with credentials) we used to disconnect and reconnect signalR connection\n // in order to pass the generated cookieHash as url query param within the request.\n // The disconnect and reconnect after successful login caused some troubles\n // - automatic reconnect of client had side effects on login and could cause loops\n // - session handling in backend got corrupted because the Agriport-Session needs to be removed on disconnect\n // - Performance: it is faster to just continue instead of reconnecting\n // Instead of reconnecting after login we pass the cookieHash within our InvokerMessage\n // Update: From now on the client keeps sending a copy of its related AgriportSession with every message.\n // This ensures that even after an Invoker restart the backend still has a valid session to work with\n ApSignalrService.connection.invoke('InvokerMessage', pack, ApSignalrService.isLoggedIn, this.cookieGetter(), ApSignalrService._clientSession)\n .then(() => cb())\n .catch(err => cb(err));\n } catch (err) {\n cb(err);\n }\n }, (err) => {\n if (err) {\n console.warn(`_sendPacket: error on send packet `, err, `SignalR established ${ApSignalrService.established}`);\n }\n });\n }\n\n private async _handleIncoming(raw: string): Promise {\n if (supportWebWorkers()) {\n ApSignalrService.dataParser.postMessage(raw);\n } else {\n await this._incoming(ApSignalrService._parseData(raw));\n }\n }\n\n private _handleSend(msg: any): void {\n msg.browserTabId = ApSignalrService.tabId;\n if (supportWebWorkers()) {\n ApSignalrService.dataPacker.postMessage(msg);\n } else {\n this._sendPacket(ApSignalrService._packData(msg));\n }\n }\n\n private async _incoming(data: IResultMessage): Promise {\n const listener = this.getListenerByActionType(data.Context);\n if (ApSignalrService.isDebugMode) {\n console.log(`%c${new Date().toISOString()}: ${data.Context?.padEnd(50, '.')} RECEIVED`, 'color: lightgreen; background: rgba(79, 79, 79, 0.5);');\n }\n if (listener) {\n listener.emit(data);\n ApSignalrService._handleError(data.Error, data.Context);\n }\n }\n}\n","import {Injectable} from '@angular/core';\n\nexport enum NetworkStatus {\n Online,\n Offline\n}\n\n/**\n * Helper Instance to interact with the Browser Window Element\n */\n@Injectable({providedIn: 'root'})\nexport class ApWindowHelperService {\n /**\n * handle Events on Window resize\n */\n public registerOnResize(method: EventListener): void {\n window.addEventListener('resize', method);\n }\n\n /**\n * Open an Url in a new Tab\n */\n public openSite(url: string, target: string = null): void {\n window.open(url, target);\n }\n\n public registerNetworkStatus(networkStatusDelegate: (networkStatus: NetworkStatus) => void): void {\n window.addEventListener('offline', () => {\n networkStatusDelegate(NetworkStatus.Offline);\n });\n window.addEventListener('online', () => {\n networkStatusDelegate(NetworkStatus.Online);\n });\n }\n\n /**\n * Get host of an application\n */\n public getLocationOrigin(): string {\n return window.location.origin;\n }\n\n /**\n * Detects if agriport is running on a touch device\n */\n public isTouchDevice(): boolean {\n return ('ontouchstart' in window) || (navigator.maxTouchPoints > 0);\n }\n}\n","export class CssValueParser {\n public static getNumberValue(value: string): [number, string] {\n let val;\n let unit;\n if (value.includes('px')) {\n val = value.split('px')[0].trim();\n unit = 'px';\n }\n if (value.includes('%')) {\n val = value.split('%')[0].trim();\n unit = '%';\n }\n if (value.includes('em')) {\n val = value.split('em')[0].trim();\n unit = 'em';\n }\n if (value.includes('rem')) {\n val = value.split('rem')[0].trim();\n unit = 'rem';\n }\n if (value.includes('pt')) {\n val = value.split('pt')[0].trim();\n unit = 'pt';\n }\n const v = parseFloat(val);\n return isNaN(v) ? [0, ''] : [v, unit];\n }\n\n public static getCssVariable(variableName: string): string {\n return getComputedStyle(document.documentElement).getPropertyValue(variableName).trim();\n }\n\n public static hexToRGBA(hex: string, alpha: number): string {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n}\n","/**\n * This function is a safe way to define grid/form properties\n * which are part of an object. Instead of refering to the property as\n * a string only, this function includes a compile time check for valid property name.\n *\n * nameOf('yourProperty') // no compileError\n * nameOf('invalidProperty') // compileError\n *\n * @param name of the property\n */\nexport const nameOf = (name: keyof T) => name;\n","\n \n \n \n\n\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {\n ApDynformsConfigFieldset\n} from '../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynGridColumnConfigBase\n} from '../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {BehaviorSubject, Observable, of, Subscription} from 'rxjs';\nimport {\n ApDynGridPagerConfigBase\n} from '../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {ApDynformsComponent} from '../ap-dynforms/ap-dynforms.component';\nimport {RowArgs, SelectableSettings, SelectionEvent} from '@progress/kendo-angular-grid';\nimport {AsyncValidatorFn, FormGroup, ValidatorFn} from '@angular/forms';\nimport {ApDynGridsComponent} from '../ap-dyngrids/ap-dyngrids.component';\nimport {\n ApDynformsConfigTabs\n} from '../ap-dynforms/config/ap-dynforms-config-tabs';\nimport {ApDynformsValidator} from '../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynGridDetailsBaseConfig\n} from '../ap-dyngrids/config/details/ap-dyn-grid-details-base-config';\nimport {delay, distinctUntilChanged, filter, map, mergeMap} from 'rxjs/operators';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n IApKendoGridDataSource\n} from '../ap-core/extensions/kendo/ap-kendo-grid-extension';\nimport {CompositeFilterDescriptor, GroupDescriptor, SortDescriptor} from '@progress/kendo-data-query';\nimport {\n SortSettings\n} from '@progress/kendo-angular-grid/dist/es2015/columns/sort-settings';\n\n@Component({\n selector: 'ap-dyncomponent',\n templateUrl: './ap-dyncomponent.component.html',\n})\nexport class ApDynComponentComponent implements OnChanges, OnInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n @ViewChild(ApDynGridsComponent, {static: false}) dynGrid: ApDynGridsComponent;\n @Input() caption: string;\n @Input() canCreate = false;\n @Input() canSearch = false;\n @Input() details: ApDynGridDetailsBaseConfig;\n @Input() errorKeys: string[];\n @Input() columns: ApDynGridColumnConfigBase[] = [];\n @Input() exportFileName: string;\n @Input() fieldSets: ApDynformsConfigFieldset[] | ApDynformsConfigTabs[] = [];\n @Input() filterTooltip = '';\n @Input() formDefaultValue = {};\n @Input() formValidators: ApDynformsValidator[];\n @Input() formAsyncValidators: ApDynformsValidator[];\n @Input() groupable = true;\n @Input() headerIcon: string;\n @Input() headerSvg;\n @Input() items: any[] = [];\n @Input() loading$: Observable = of(false);\n @Input() pager: ApDynGridPagerConfigBase = new ApDynGridPagerConfigBase();\n @Input() pdfExportFileName: string;\n @Input() pdfExportTitle = '';\n @Input() reorderable: boolean;\n @Input() rowSelected: (e: RowArgs) => boolean;\n @Input() sortBySelection = false;\n @Input() selectable: SelectableSettings = {checkboxOnly: false, mode: 'multiple', enabled: true};\n @Input() xlsExportFileName: string;\n @Input() sortable: SortSettings;\n @Output() create = new EventEmitter();\n @Output() edit = new EventEmitter();\n @Output() selectionChange = new EventEmitter();\n @Output() apSubmit = new EventEmitter();\n @Output() gridInitialized = new EventEmitter(true);\n tabs: ApDynformsConfigTabs[];\n valid = false;\n Valid$ = new BehaviorSubject(true);\n FormValues$ = new BehaviorSubject({});\n PagerValues$ = new BehaviorSubject({});\n gridSubject = new BehaviorSubject(undefined);\n gridDescriptors: {\n [key: string]: { filter: CompositeFilterDescriptor, groups: GroupDescriptor[], sort: SortDescriptor[] }\n } = {};\n\n private _subscriptions: Subscription[] = [];\n\n @ViewChild(ApDynGridsComponent, {static: false})\n set DynGrid(dynGrid: ApDynGridsComponent) {\n this.gridSubject.next(dynGrid);\n }\n\n get SelectedItems$(): Observable {\n return this.gridSubject.pipe(\n filter((grid) => !!grid),\n mergeMap((grid) => grid.gridPaging.onSelectedItemChange),\n );\n }\n\n ngOnInit(): void {\n this._subscriptions.push(this.gridSubject.subscribe(value => {\n if (value != null && this.sortable != null) {\n value.gridPaging.sortable = this.sortable;\n }\n }));\n\n this._subscriptions.push(this.dynForm.form$.pipe(\n filter((form) => !!form),\n mergeMap((form) => form.valueChanges),\n distinctUntilChanged((previous, current) => ObjectFactory.Equal(previous, current)),\n map((values) => {\n const result = {};\n Object.keys(values).forEach((key) => {\n if (values[key] !== '') {\n result[key] = values[key];\n }\n });\n return result;\n })\n ).subscribe((values) => this.FormValues$.next(values)));\n\n this._subscriptions.push(this.dynForm.form$.pipe(\n filter((form) => !!form),\n mergeMap((form) => form.statusChanges),\n map((status) => status === 'VALID'),\n delay(0)\n ).subscribe((v) => {\n this.valid = v;\n this.Valid$.next(v);\n }));\n\n this._subscriptions.push(this.gridSubject.pipe(\n filter((grid) => !!grid),\n mergeMap((grid) => grid.wizardSubject$),\n filter((wizard) => !!wizard),\n mergeMap((wizard) => wizard.formValues$)\n ).subscribe((values) => this.PagerValues$.next(values)));\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach((s) => s.unsubscribe());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['fieldsets']) {\n if (this.fieldSets && this.fieldSets.length) {\n const first = this.fieldSets[0];\n if (first instanceof ApDynformsConfigTabs) {\n this.tabs = this.fieldSets as ApDynformsConfigTabs[];\n } else if (first instanceof ApDynformsConfigFieldset) {\n this.fieldSets = this.fieldSets as ApDynformsConfigFieldset[];\n }\n }\n }\n }\n\n getForm(): FormGroup {\n return this.dynForm.form;\n }\n\n getFormValue(): any {\n return this.dynForm.form.getRawValue();\n }\n\n filterChange(f: string): void {\n if (this.dynGrid) {\n this.dynGrid.gridPaging.filterChange(f);\n }\n }\n\n getSelectedItems(): IApKendoGridDataSource[] {\n if (this.dynGrid) {\n return this.dynGrid.gridPaging.selectedItems;\n }\n return [];\n }\n\n gridIsInitialized(): void {\n this.gridInitialized.emit();\n }\n\n public saveGridDescriptors(key: string): void {\n const grid = this.gridSubject.getValue();\n if (grid) {\n this.gridDescriptors[key] = grid.gridPaging.getDescriptors();\n }\n }\n\n public loadGridDescriptors(key: string): void {\n setTimeout(() => {\n const grid = this.gridSubject.getValue();\n if (grid) {\n grid.gridPaging.setDescriptors(this.gridDescriptors[key]);\n }\n }, 0);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ApDynComponentComponent } from './ap-dyncomponent.component';\nimport {ApDynformsModule} from '../ap-dynforms/ap-dynforms.module';\nimport {ApDynGridsModule} from '../ap-dyngrids/ap-dyngrids.module';\nimport {ApCoreModule} from '../ap-core/ap-core.module';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\n\n@NgModule({\n declarations: [ApDynComponentComponent],\n exports: [\n ApDynComponentComponent,\n ApDynformsModule,\n ApDynGridsModule,\n ],\n imports: [\n CommonModule,\n ApDynformsModule,\n ApDynGridsModule,\n ApCoreModule,\n ApTranslationModule\n ]\n})\nexport class ApDynComponentModule { }\n","import {FormControl} from '@angular/forms';\nimport {find, isEqual} from 'lodash';\n\nexport class ApDynformsValidations {\n static validateList(list: any[]): (c: FormControl) => {validateList: boolean} {\n return function (c: FormControl): {validateList: boolean} {\n if (find(list, l => isEqual(l.Name, c.value))) {\n return ({validateList: true});\n } else { return null; }\n };\n }\n}\n","/**\n * dynamic form validator\n */\nimport {Observable, Subject} from 'rxjs';\n\nexport class ApDynformsValidator {\n /**\n * a validator function.\n * might be a default angular validation or a custom one.\n */\n validator: T;\n /**\n * translation key (errorkey) which is displayed in case of failing validation\n */\n errorKey: string;\n /**\n * show validation error asap\n */\n always: boolean;\n /**\n * subject of all invalid ids\n */\n invalidIds: Subject = undefined;\n\n /**\n * constructor\n */\n constructor(options: {\n validator?: T,\n errorKey?: string,\n always?: boolean,\n invalidIds?: Subject,\n updateValidator?: Observable[]\n } = {}) {\n this.validator = options.validator;\n this.errorKey = options.errorKey;\n this.always = options.always;\n this.invalidIds = options.invalidIds;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {AbstractControl, AsyncValidatorFn, FormControl, FormGroup, ValidatorFn} from '@angular/forms';\nimport {\n ApDynformsConfigFieldset\n} from './config/ap-dynforms-config-fieldset';\nimport {ApDynformsControltype} from './config/ap-dynforms-config-base';\nimport {ApValidator} from './validators/ap-validator';\nimport {combineLatest, Subscription} from 'rxjs';\nimport {delay, map} from 'rxjs/operators';\nimport {ApDynformsValidator} from './ap-dynforms-validator';\n\n/**\n * dynamic form configuration service.\n * analyzing the dynamic form's configuration and building reactive form group.\n */\n@Injectable({providedIn: 'root'})\nexport class ApDynformsConfigService {\n\n private static _setControl(control: AbstractControl, status: boolean): void {\n if (status) {\n control.enable();\n } else {\n control.disable();\n }\n }\n\n private static _addControl(group: FormGroup,\n key: string,\n value: any,\n disabled: boolean,\n validators: ValidatorFn | ValidatorFn[],\n asyncValidators: AsyncValidatorFn | AsyncValidatorFn[]): void {\n group.addControl(key, new FormControl({\n value: isNaN(value) ? value || '' : value,\n disabled: (disabled === true),\n },\n {\n validators,\n asyncValidators,\n updateOn: 'change'\n }\n ));\n }\n\n /**\n * Subscribe all form control dependencies to other form control\n */\n subscribeToDependencies(form: FormGroup, fieldSets: ApDynformsConfigFieldset[], subscriptions: Subscription[]): Subscription[] {\n subscriptions.forEach(s => s.unsubscribe());\n subscriptions = [];\n fieldSets.forEach(fs => {\n fs.config.filter(c => c.dependsOn).forEach(c => {\n const depends: AbstractControl[] = [];\n const control = form.get(c.key);\n c.dependsOn.forEach(d => {\n const dependsControl = form.get(d);\n if (dependsControl) {\n depends.push(dependsControl);\n }\n });\n if (control && depends.length) {\n subscriptions.push(\n combineLatest(depends.map(d => d.statusChanges))\n .pipe(\n map(s => s.every(st => st === 'VALID'))\n )\n .subscribe(s => {\n ApDynformsConfigService._setControl(control, s);\n })\n );\n ApDynformsConfigService._setControl(control, depends.every(d => d.status === 'VALID'));\n }\n });\n });\n return subscriptions;\n }\n\n subscribeToListener(form: FormGroup, fieldSets: ApDynformsConfigFieldset[], subscriptions: Subscription[]): Subscription[] {\n subscriptions.forEach(s => s.unsubscribe());\n subscriptions = [];\n fieldSets.forEach(fs => {\n fs.config.filter(c => c.listenUpdate).forEach(c => {\n const control = form.get(c.key);\n if (control) {\n subscriptions.push(\n combineLatest(c.listenUpdate).pipe(delay(0)).subscribe(\n () => control.updateValueAndValidity()\n ));\n }\n });\n });\n return subscriptions;\n }\n\n /**\n * creating form group based on given configuration\n */\n toFormGroup(\n fieldsets: ApDynformsConfigFieldset[],\n formValidators: ApDynformsValidator[],\n formAsyncValidators: ApDynformsValidator[]): FormGroup {\n const group = new FormGroup({});\n if (!fieldsets) {\n fieldsets = [];\n }\n\n fieldsets.forEach(fieldset => {\n const configs = fieldset.config.filter(c =>\n c.controlType !== ApDynformsControltype.Placeholder &&\n c.controlType !== ApDynformsControltype.Template &&\n c.controlType !== ApDynformsControltype.Button);\n // reactive form keys have to be unique.\n configs.map(c => c.key).forEach((value, index, array) => {\n const position = array.indexOf(value);\n if (position !== index) {\n // throw an exception in case a reactive form's key is used more than once.\n throw new Error(\n `Dynform configuration contains duplicate reactive key: '${value}' on position ${position} and ${index}`);\n }\n // throw an exception in case an array like structure is used.\n value.split('.').forEach(token => {\n if (!isNaN(parseFloat(token))) {\n throw new Error(`Numeric key ${token} in ${value} is not allowed`);\n }\n });\n });\n\n configs.forEach(config => {\n let item = group;\n config.key.split('.').forEach((val, idx, arr) => {\n if (idx !== arr.length - 1) {\n // PARENT.child\n if (!item.get(val)) {\n item.addControl(val, new FormGroup({}));\n }\n item = item.get(val) as FormGroup;\n } else {\n // parent.CHILD\n const validators = config.validators ?\n config.validators.map(v => ApValidator.validate(v.validator, v.errorKey, v.invalidIds)) :\n null;\n const asyncValidators = config.asyncValidators ?\n config.asyncValidators.map(v => ApValidator.validateAsync(v.validator, v.errorKey, v.invalidIds)) :\n null;\n if (config.controlType === ApDynformsControltype.DateRange) {\n ApDynformsConfigService._addControl(item, `${val}_Start`, config.value.start, config.disabled, validators, asyncValidators);\n ApDynformsConfigService._addControl(item, `${val}_End`, config.value.end, config.disabled, validators, asyncValidators);\n } else {\n ApDynformsConfigService._addControl(item, val, config.value, config.disabled, validators, asyncValidators);\n }\n }\n });\n });\n });\n\n if (formValidators) {\n group.setValidators(formValidators.map(v => ApValidator.validate(v.validator, v.errorKey)));\n }\n\n if (formAsyncValidators) {\n group.setAsyncValidators(formAsyncValidators.map(v => ApValidator.validateAsync(v.validator, v.errorKey)));\n }\n\n return group;\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 \n
\n
\n
\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {AbstractControl, AsyncValidatorFn, FormArray, FormGroup, ValidatorFn} from '@angular/forms';\nimport {ApDynformsConfigService} from './ap-dynforms-config.service';\nimport {\n ApDynformsConfigFieldset\n} from './config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigBase, ApDynformsControltype} from './config/ap-dynforms-config-base';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {MapViewMode} from '../ap-interface';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {ApDynformsConfigTabs} from './config/ap-dynforms-config-tabs';\nimport {SelectEvent, TabStripComponent} from '@progress/kendo-angular-layout';\nimport {ApDynformsValidator} from './ap-dynforms-validator';\nimport {MapViewStore} from '../stores/layout/mapview.store';\nimport {\n TranslationStore\n} from '../stores/translation/translation.store';\nimport {Trace} from '../debug-utils/ApplicationTracer';\nimport {delay, distinctUntilChanged, filter, map, mergeMap, switchMap} from 'rxjs/operators';\nimport {ObjectFactory} from 'ts-tooling';\n\n/**\n * Component for dynamic form\n */\n@Component({\n selector: 'ap-dynforms',\n templateUrl: './ap-dynforms.component.html',\n providers: [ApDynformsConfigService],\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [\n trigger('hideForm', [\n state('in', style({\n display: '{{display}}',\n }), {params: {display: 'inherit'}}),\n state('out', style({\n height: '0',\n margin: '0',\n display: 'grid',\n opacity: '0'\n })),\n transition('in <=> out', [\n style({display: 'grid'}),\n animate('300ms ease-in-out'),\n ]),\n ]),\n ],\n})\n\n/**\n * Component for dynamic form\n */\nexport class ApDynformsComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('tabStrip', {static: false}) tabStrip: TabStripComponent;\n\n @Input() public fieldsets: ApDynformsConfigFieldset[] = [];\n @Input() public tabs: ApDynformsConfigTabs[];\n @Input() public formValidators: ApDynformsValidator[];\n @Input() public formAsyncValidators: ApDynformsValidator[];\n @Input() public defaultValue: any;\n @Input() public caption: string;\n @Input() public headerIcon: string;\n @Input() public headerSvg;\n @Input() public fontSize = 16;\n @Input() public darkMode = false;\n @Input() public offsetTop = 0;\n @Input() public offsetBottom = 56;\n @Input() public formState = 'in';\n @Input() public width;\n @Input() public isModalForm = false;\n @Input() public display = 'inherit';\n @Input() public loading$: Observable;\n @Input() public isStatic = false;\n @Output() public apSubmit: EventEmitter = new EventEmitter();\n @Output() public validChanges = new EventEmitter(true);\n @Output() public dirtyChanges = new EventEmitter(true);\n @Output() public touchedChanges = new EventEmitter(true);\n @Output() public pristineChanges = new EventEmitter(true);\n @Output() public initialized = new EventEmitter(true);\n @Output() public formValueChanges = new EventEmitter<{ control: string, value: any }>(true);\n\n public showForm = true;\n public form: FormGroup;\n public fieldsetsOrder:\n { [fieldset: string]: { config: ApDynformsConfigBase, column: number, row: number }[] } = {};\n public mapViewState$: Observable;\n public form$ = new BehaviorSubject(undefined);\n\n /** @deprecated use FormValues$ */\n public formValues$ = this.form$.pipe(\n delay(0),\n switchMap((form) => form.valueChanges),\n distinctUntilChanged((previous, current) => {\n return ObjectFactory.Equal(previous, current);\n })\n );\n\n public FormValues$ = new BehaviorSubject({});\n\n public ApDynformsControltype = ApDynformsControltype;\n\n private _dependenciesSubscriptions: Subscription[] = [];\n private _listenerSubscriptions: Subscription[] = [];\n private _formValue = {};\n private _tabDisabled: BehaviorSubject[] = [];\n private _tabSelected: number;\n private _tabSubscriptions: Subscription[] = [];\n private _pristine = true;\n private _dirty = false;\n private _touched = false;\n\n constructor(private configService: ApDynformsConfigService,\n private translationService: TranslationStore,\n private mapViewStore: MapViewStore) {\n this.caption = this.translationService.FindTranslationForSelectedLanguage(this.caption);\n this.mapViewState$ = this.mapViewStore.Listen(s => s.mode);\n }\n\n public static setErrorOnControl(control: AbstractControl, error: string, set: boolean): void {\n if (!error || !control) {\n return;\n }\n let newErrors = {...control.errors};\n delete newErrors[error];\n if (set) {\n newErrors[error] = true;\n } else if (Object.keys(newErrors).length < 1) {\n newErrors = null;\n }\n control.setErrors(newErrors);\n }\n\n private static _markAllControlsAsTouched(form: FormGroup | FormArray): void {\n Object.keys(form.controls).forEach((key: string) => {\n const control = form.get(key);\n if (control instanceof FormGroup || control instanceof FormArray) {\n this._markAllControlsAsTouched(control);\n } else {\n control.markAsTouched();\n }\n });\n }\n\n ngOnInit(): void {\n this.buildForm();\n // CODE_REVIEW\n // emit the valid state so we can use the async pipe in the HTML templates\n this.form.statusChanges.subscribe((s) => {\n this.validChanges.emit(s === 'VALID');\n });\n this.pristineChanges.emit(this._pristine);\n this.dirtyChanges.emit(this._dirty);\n this.touchedChanges.emit(this._touched);\n this.initialized.emit();\n\n this._tabSubscriptions.push(this.form$.pipe(\n filter((form) => !!form),\n mergeMap((form) => form.valueChanges),\n distinctUntilChanged((previous, current) => ObjectFactory.Equal(previous, current)),\n map((values) => {\n const result = {};\n Object.keys(values).forEach((key) => {\n if (values[key] !== '') {\n result[key] = values[key];\n }\n });\n return result;\n })\n ).subscribe((values) => this.FormValues$.next(values)));\n }\n\n /**\n * EventHandler for Changes.\n * Whenever configuration changes -> rebuild form.\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.fieldsets) {\n if (!changes.fieldsets.firstChange) {\n this.buildForm();\n }\n }\n if (changes.tabs) {\n if (this.tabs && this.tabs.length) {\n this._setupTabs();\n }\n if (!changes.tabs.firstChange) {\n this.buildForm();\n }\n }\n if (changes.defaultValue) {\n this._formValue = this.defaultValue;\n }\n\n if (this.form) {\n if (this.form.controls) {\n for (const key in this.form.controls) {\n if (!this.form.controls.hasOwnProperty(key)) {\n continue;\n }\n this.form.controls[key].valueChanges.subscribe((v) => {\n this.formValueChanges.emit({control: key, value: v});\n });\n }\n }\n if (this.form.pristine !== this._pristine) {\n this._pristine = this.form.pristine;\n this.pristineChanges.emit(this._pristine);\n }\n if (this.form.dirty !== this._dirty) {\n this._dirty = this.form.dirty;\n this.dirtyChanges.emit(this._dirty);\n }\n if (this.form.touched !== this._touched) {\n this._touched = this.form.touched;\n this.touchedChanges.emit(this._touched);\n }\n }\n }\n\n @Trace()\n ngOnDestroy(): void {\n this._dependenciesSubscriptions.forEach(s => s.unsubscribe());\n this._listenerSubscriptions.forEach(s => s.unsubscribe());\n this._tabSubscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * builds dynamic form\n */\n buildForm(): void {\n this._ensureFieldSetsHaveValue();\n this._removeEmptyEntries();\n\n const fieldSets: ApDynformsConfigFieldset[] = [];\n if (this.tabs && this.tabs.length) {\n this.tabs.forEach(tab => fieldSets.push(...tab.fieldSets));\n } else {\n fieldSets.push(...this.fieldsets);\n }\n this.form = this.configService.toFormGroup(fieldSets, this.formValidators, this.formAsyncValidators);\n this._dependenciesSubscriptions =\n this.configService.subscribeToDependencies(this.form, fieldSets, this._dependenciesSubscriptions);\n this._listenerSubscriptions =\n this.configService.subscribeToListener(this.form, fieldSets, this._listenerSubscriptions);\n this._formValue = this.defaultValue;\n this.chunkFieldSet();\n this.form$.next(this.form);\n }\n\n chunkFieldSet(): void {\n this._ensureFieldSetsHaveValue();\n\n this.fieldsetsOrder = {};\n this.fieldsets.forEach(fieldset => {\n if (this.fieldsetsOrder[fieldset.legend] != null) {\n throw new Error('duplicated fieldset legend detected:' + fieldset.legend);\n }\n const configs = fieldset.config.reduce((result, config) => {\n result.push(config);\n if (config.controlType === ApDynformsControltype.DateRange) {\n result.push(undefined);\n }\n return result;\n }, []);\n this.fieldsetsOrder[fieldset.legend] =\n configs.map((v, i) => ({config: v, column: i % fieldset.columns, row: Math.floor(i / fieldset.columns)}));\n });\n setTimeout(() => {\n if (this._formValue) {\n this.form.patchValue(this._formValue);\n }\n }, 0);\n }\n\n onSubmitDynForm(): void {\n if (this.apSubmit) {\n this.apSubmit.emit();\n }\n }\n\n markAsTouched(): void {\n ApDynformsComponent._markAllControlsAsTouched(this.form);\n }\n\n tabSelect(select: SelectEvent): void {\n if (this._tabSelected !== select.index) {\n this._selectTab(select.index);\n }\n }\n\n getSpan(current: { column: number; row: number }, target: {\n column: number;\n row: number\n }, kind: 'column' | 'row'): string {\n let d;\n if (kind === 'column') {\n d = target.column - current.column + 1;\n } else {\n d = target.row - current.row + 1;\n }\n return `span ${d}`;\n }\n\n getColumnGap(fieldset: ApDynformsConfigFieldset, isStatic): string {\n let result = '0%';\n if (fieldset.columnGap) {\n if (isStatic) {\n result = ((80 / fieldset.columns) / (fieldset.columns - 1)) + 'px';\n } else {\n result = ((40 / fieldset.columns) / (fieldset.columns - 1)) + '%';\n }\n }\n return result;\n }\n\n private _setupTabs(): void {\n this._selectTab(this.tabs.findIndex(tab => tab.selected));\n this._tabDisabled = [];\n this._tabSubscriptions.forEach(s => s.unsubscribe());\n this._tabSubscriptions = [];\n this.tabs.forEach((tab, i) => {\n const subject = new BehaviorSubject(false);\n if (tab.disabled) {\n this._tabSubscriptions.push(tab.disabled.subscribe(b => {\n subject.next(b);\n if (b && this._tabSelected === i) {\n this._findAvailableTab();\n }\n }));\n }\n this._tabDisabled.push(subject);\n });\n }\n\n private _selectTab(index: number): void {\n if (this._tabSelected !== undefined) {\n this._formValue = ObjectFactory.Merge(this.defaultValue, this.form.value);\n }\n this._tabSelected = index;\n this.fieldsets = this.tabs[index].fieldSets;\n this.chunkFieldSet();\n }\n\n private _findAvailableTab(): void {\n if (this.tabStrip) {\n this.tabStrip.selectTab(this._tabDisabled.findIndex(t => !t.value));\n }\n }\n\n private _ensureFieldSetsHaveValue(): void {\n if (!this.fieldsets) {\n this.fieldsets = [];\n }\n }\n\n private _removeEmptyEntries(): void {\n this.fieldsets = this.fieldsets.filter(x => x !== undefined);\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 {{config.noDataString | translate}}\n \n \n
{{dataItem[config.textField]}}
\n
\n
\n\n \n \n \n \n \n \n \n \n {{config.noDataString | translate}}\n \n \n\n \n \n {{((GetCalendarItem | execFunction:calendarView$:date:'MMMM YYYY') | async)}}\n \n \n {{((GetCalendarItem | execFunction:calendarView$:date:'MMM') | async)}}\n \n \n \n {{date.getDate()}}\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 0\" [text]=\"getErrors()[0] | translateAsync | async\">\n
\n
\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {ApDynformsControltype} from './config/ap-dynforms-config-base';\nimport * as moment from 'moment';\nimport {ApDynformsConfigCheckbox} from './config/ap-dynforms-config-checkbox';\nimport {ApDynformsConfigComboBox} from './config/ap-dynforms-config-combobox';\nimport {ApDynformsConfigMultiSelect} from './config/ap-dynforms-config-multiselect';\nimport {ApDynformsConfigDatepicker} from './config/ap-dynforms-config-datepicker';\nimport {ApDynformsConfigNumerictextbox} from './config/ap-dynforms-config-numerictextbox';\nimport {ApDynformsConfigPlaceholder} from './config/ap-dynforms-config-placeholder';\nimport {ApDynformsConfigTextbox, ApDynformsConfigTextboxType} from './config/ap-dynforms-config-textbox';\nimport {ApDynformsConfigTimepicker} from './config/ap-dynforms-config-timepicker';\nimport {BehaviorSubject, combineLatest, merge, Subscription} from 'rxjs';\nimport {ApDynformsConfigLabelIcon} from './config/ap-dynforms-config-label-icon';\nimport {LanguageStore} from '../stores/translation/language.store';\nimport {ApDynformsConfigFileSelect} from './config/ap-dynforms-config-file-select';\nimport {CalendarComponent, DatePickerComponent} from '@progress/kendo-angular-dateinputs';\nimport {\n CalendarView\n} from '@progress/kendo-angular-dateinputs/dist/es2015/calendar/models/view.type';\nimport {delay, filter, map, mergeMap} from 'rxjs/operators';\nimport {TextBoxComponent} from '@progress/kendo-angular-inputs';\nimport ILanguage = Data.Language.ILanguage;\nimport {ApDynformsConfigUpload} from './config/ap-dynforms-config-upload';\n\n/**\n * component for a single dynamic form element/control\n */\n@Component({\n selector: 'ap-dynforms-element',\n templateUrl: './ap-dynforms-element.component.html',\n styleUrls: ['./ap-dynforms-element.component.scss']\n})\n/**\n * component for a single dynamic form element/control\n */\nexport class ApDynformsElementComponent implements OnInit, OnDestroy, AfterContentInit, AfterViewInit {\n @ViewChild(TextBoxComponent) public textBoxComponent: TextBoxComponent;\n @Input() config: ApDynformsConfigCheckbox |\n ApDynformsConfigComboBox |\n ApDynformsConfigDatepicker |\n ApDynformsConfigNumerictextbox |\n ApDynformsConfigPlaceholder |\n ApDynformsConfigTextbox |\n ApDynformsConfigMultiSelect |\n ApDynformsConfigTimepicker |\n ApDynformsConfigLabelIcon |\n ApDynformsConfigFileSelect |\n ApDynformsConfigUpload;\n @Input() form: FormGroup;\n @Input() fontSize = 16;\n @Input() darkMode = false;\n @Input() parentKey: string;\n @Input() parentIndex: number;\n @Input() asyncTranslation = false;\n protected readonly ApDynformsConfigTextboxType = ApDynformsConfigTextboxType;\n public ApDynformsControltype = ApDynformsControltype;\n public language: ILanguage;\n public disabled$ = new EventEmitter(true);\n public label$ = new BehaviorSubject('');\n public languageKey$ = this.languageStore.Listen(s => s.selectedLanguage).pipe(\n filter((l) => !!l),\n map((l) => l.Key)\n );\n public calendarView$ = new BehaviorSubject(undefined);\n public key$ = new EventEmitter(true);\n\n private _datePickerComponent = new BehaviorSubject(undefined);\n private _datePickerPopupOpened = combineLatest([\n this._datePickerComponent.pipe(\n filter((d) => !!d)\n ),\n this._datePickerComponent.pipe(\n filter((d) => !!d),\n mergeMap((d) => d?.open)\n )\n ]).pipe(\n delay(1),\n map(([d]) => d?.popupRef?.popupOpen)\n );\n\n private _calendarComponent = new BehaviorSubject(undefined);\n private _subscriptions: Subscription[] = [];\n\n /**\n * Constructor\n */\n constructor(private languageStore: LanguageStore) {\n this.language = this.languageStore.SelectedLanguage;\n }\n\n @ViewChild(DatePickerComponent, {static: false})\n set DatePicker(c: DatePickerComponent) {\n if (c) {\n this._datePickerComponent.next(c);\n }\n }\n\n ngOnInit(): void {\n this.key$.emit(this.config.key);\n this._subscriptions.push(\n combineLatest([\n this._datePickerComponent.pipe(filter((d) => !!d)),\n this._datePickerPopupOpened\n ]).pipe(\n map(([d]) => d.calendar)\n ).subscribe((c) => this._calendarComponent.next(c)));\n\n this._subscriptions.push(\n combineLatest([\n merge(\n this._calendarComponent.pipe(\n filter((c) => !!c),\n map((c) => c.activeView)\n ),\n this._calendarComponent.pipe(\n filter((c) => !!c),\n mergeMap((c) => c.activeViewChange),\n map((v) => v as CalendarView)\n )\n ),\n this.languageKey$\n ]).pipe(\n filter(([view, languageKey]) => !!view && !!languageKey),\n ).subscribe((v) => this.calendarView$.next(v)));\n }\n\n ngAfterViewInit(): void {\n if (!this.isPasswordTextBox() || !this.textBoxComponent?.input?.nativeElement) {\n return;\n }\n const textBoxConfig = this.config as ApDynformsConfigTextbox;\n if (!textBoxConfig) {\n return;\n }\n // we need to set the type explicitly here because the element\n // is nested and cannot be modified in template. In later versions of kendo\n // there will be an 'inputAttributes' property on TextBoxComponent which allows\n // setting these properties in the template\n this.textBoxComponent.input.nativeElement.type = ApDynformsConfigTextboxType.Password;\n this.textBoxComponent.input.nativeElement.autocomplete = textBoxConfig.autocomplete;\n }\n\n ngOnDestroy(): void {\n setTimeout(() => {\n if (this.config) {\n if (this.config.validators) {\n this.config.validators.forEach(v => {\n if (v.invalidIds) {\n v.invalidIds.next([]);\n }\n });\n }\n if (this.config.asyncValidators) {\n this.config.asyncValidators.forEach(v => {\n if (v.invalidIds) {\n v.invalidIds.next([]);\n }\n });\n }\n }\n }, 1);\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n ngAfterContentInit(): void {\n if (this.config.listenUpdate.length !== 0) {\n this._subscriptions.push(combineLatest(this.config.listenUpdate).subscribe(\n () => this.form.get(this.config.key).updateValueAndValidity()\n ));\n }\n if (this.config.disabled$) {\n this._subscriptions.push(this.config.disabled$.subscribe((v) => {\n this.disabled$.emit(v);\n if (v) {\n this.form.get(this.config.key).disable();\n } else {\n this.form.get(this.config.key).enable();\n }\n }));\n }\n if (this.config.value$) {\n this._subscriptions.push(this.config.value$.subscribe((v) => {\n this.form.get(this.config.key).setValue(v);\n }));\n }\n\n if (this.config.label$) {\n this._subscriptions.push(this.config.label$.subscribe(v => this.currentLabelChanged(v)));\n }\n }\n\n /**\n * determins current validation errors(translation key)\n * for this dynamic form element/control\n */\n getErrors(): string[] {\n const validationMessages: string[] = [];\n const control = this.form.get(this.config.key);\n if (control && control.errors) {\n for (const validator of this.config.validators) {\n if ((validator.always || control.touched || control.dirty) && control.errors[validator.errorKey]) {\n validationMessages.push(validator.errorKey);\n }\n }\n\n for (const validator of this.config.asyncValidators) {\n if ((validator.always || control.touched || control.dirty) && control.errors[validator.errorKey]) {\n validationMessages.push(validator.errorKey);\n }\n }\n }\n\n if (this.form.errors) {\n for (const formErrorKey of this.config.formErrors) {\n const formError = this.form.errors[formErrorKey];\n if (formError) {\n const validatorFnKeys = Object.keys(formError);\n // Die Form Validator Errors müssen auf ihr Ergebnis überprüft werden\n // Das Ergebnis (any) kommt aus der ValidatorFn\n // Es gibt Validierungen auf Formebene, die den gleichen\n // Fehler-key benutzen, aber nicht alle gleichzeitig\n // angezeigt werden dürfen.\n // Usecase: Fehlerkey ist \"ungültige Eingabe\". Das kann aus unterschiedlichen\n // Gründen an mehreren Controls gesetzt werden. Würde die nachfolgende Überprüfung\n // nicht stattfinden, würde die Fehlermeldung bei alle Controls erscheinen,\n // denen dieser 'formErrors'-Key in der Config zugewiesen wurde.\n // Nun gibt es spezielle Validierungen (z.B. ApNumberRangeValidator), die als\n // Validierungsergebnis nicht einfach nur einen boolschen Wert setzen,\n // sondern ein string[] erzeugen, welches die Namen der fehlerhaften Controls enthält\n // => Nur dort soll der Fehler angezeigt werden\n for (const validatorFnKey of validatorFnKeys) {\n const validatorFnResult = formError[validatorFnKey];\n if (Array.isArray(validatorFnResult) && validatorFnResult.length > 0) {\n if (validatorFnResult.indexOf(this.config.key) > -1) {\n validationMessages.push(formErrorKey);\n }\n } else {\n // die ValidatorFn hat kein Array zurückgegeben (sondern einen beliebigen anderen Wert, z.B. true)\n validationMessages.push(formErrorKey);\n }\n }\n }\n }\n }\n\n return validationMessages.filter((message) => message !== '');\n }\n\n public GetCalendarItem(calendarView, date, format): string {\n return calendarView.pipe(\n filter((v) => !!v),\n map(([view, languageKey]) => {\n switch (view) {\n case 'year':\n return `${date.getFullYear()}`;\n case 'decade':\n return `${Math.floor(date.getFullYear() / 10) * 10}`;\n case 'century':\n return `${Math.floor(date.getFullYear() / 100) * 100}`;\n }\n return moment(date).locale(languageKey).format(format);\n })\n );\n }\n\n public currentLabelChanged(v: string): void {\n this.label$?.next(v);\n if (v) {\n this.config.label = v;\n } else {\n this.form.get(this.config.label)?.enable();\n }\n }\n\n private isPasswordTextBox(): boolean {\n return this.config.controlType === ApDynformsControltype.Textbox &&\n (this.config as ApDynformsConfigTextbox)?.type === ApDynformsConfigTextboxType.Password;\n }\n\n /**\n * toggles the preview (plain text) of the password input\n */\n public togglePasswordVisibility(): void {\n if (!this.isPasswordTextBox()) {\n return;\n }\n\n const nativePasswordTextbox = this.textBoxComponent?.input?.nativeElement;\n if (!nativePasswordTextbox) {\n return;\n }\n\n nativePasswordTextbox.type = nativePasswordTextbox.type === ApDynformsConfigTextboxType.Password ?\n ApDynformsConfigTextboxType.Text : ApDynformsConfigTextboxType.Password;\n }\n}\n","
\n
\n \n \n \n
\n \n \n
\n
\n
\n
\n
\n
\n\n","import {\n Component,\n Input, OnChanges, OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport {ApDynformsConfigArray} from './config/ap-dynforms-config-array';\nimport {FormArray, FormControl, FormGroup} from '@angular/forms';\nimport {ApValidator} from './validators/ap-validator';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: 'ap-dynforms-array',\n templateUrl: './ap-dynforms-array.component.html'\n})\nexport class ApDynformsArrayComponent implements OnInit, OnChanges, OnDestroy {\n @Input() config: ApDynformsConfigArray;\n @Input() darkMode: boolean;\n @Input() fontSize: number;\n @Input() form: FormGroup;\n\n private _displayItems: number;\n private _subscriptions: Subscription[] = [];\n\n constructor() {\n }\n\n ngOnInit(): void {\n this._displayItems = this.config.validate ? this.config.min : this.config.max;\n this._subscriptions.push(this.form.get(this.config.key).valueChanges.subscribe(values => {\n this._valuesChange(values);\n }));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.form) {\n this._setupControls();\n }\n if (changes.config) {\n this._displayItems = this.config.validate ? this.config.min : this.config.max;\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n get arrayMax(): number[] {\n const array = [];\n for (let i = 0; i < this._displayItems; ++i) {\n array.push(i);\n }\n return array;\n }\n\n get formGroup(): FormGroup {\n const tokens = this.config.key.split('.');\n tokens.pop();\n if (tokens.length) {\n return this.form.get(tokens.join('.')) as FormGroup;\n }\n return this.form;\n }\n\n getArrayName(): string {\n return this.config.key.split('.').pop();\n }\n\n getArrayFormGroup(value: any): FormGroup {\n return this.form.get(`${this.config.key}.${value}`) as FormGroup;\n }\n\n private _setupControls(): void {\n const arrayControls: FormGroup[] = [];\n for (let i = 0; i < this.config.max; ++i) {\n const formGroup = new FormGroup({});\n for (const config of this.config.config) {\n const validators = config.validators ?\n config.validators.map(v => ApValidator.validate(v.validator, v.errorKey, v.invalidIds)) :\n null;\n\n const asyncValidators = config.asyncValidators ?\n config.asyncValidators.map(v => ApValidator.validateAsync(v.validator, v.errorKey, v.invalidIds)) :\n null;\n\n formGroup.addControl(config.key, new FormControl({\n value: isNaN(config.value) ? config.value || null : config.value,\n disabled: (config.disabled ? config.disabled : false),\n },\n {\n validators,\n asyncValidators,\n updateOn: 'blur'\n }\n ));\n }\n arrayControls.push(formGroup);\n }\n\n let group = this.form;\n let key = this.config.key;\n const tokens = key.split('.');\n for (let i = 0; i < tokens.length - 1; ++i) {\n if (!group.get(tokens[i])) {\n group.addControl(tokens[i], new FormGroup({}));\n }\n group = group.get(tokens[i]) as FormGroup;\n key = tokens[i + 1];\n }\n group.addControl(key, new FormArray(arrayControls));\n }\n\n private _valuesChange(values: any[]): void {\n if (this.config) {\n this.form.get(this.config.key).setValue(this._valuesValidate(values), {emitEvent: false});\n }\n }\n\n private _valuesValidate(values: any[]): any[] {\n if (this.config.validate) {\n values.forEach(v => {\n if (!this.config.validate(v)) {\n for (const k of Object.keys(v)) {\n v[k] = null;\n }\n }\n });\n values.sort((a, b) => {\n a = this.config.validate(a) ? 1 : 0;\n b = this.config.validate(b) ? 1 : 0;\n return b - a;\n });\n\n const lastComplete = values.map(v => this.config.extendOn(v)).lastIndexOf(true) + 1;\n if (lastComplete !== this.config.max) {\n this._displayItems = Math.max(this.config.min, Math.min(lastComplete + 1, this.config.max));\n } else {\n this._displayItems = this.config.max;\n }\n }\n return values;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport 'ts-tooling';\n\n@Pipe({\n name: 'sanitizeId'\n})\nexport class SanitizeIdPipe implements PipeTransform {\n\n transform(key: string, parentKey?: string, parentIndex?: number): any {\n if (!key) {\n return '';\n }\n let prefix = '';\n if (parentKey) {\n prefix = `${parentKey}_`;\n }\n if (parentIndex !== undefined) {\n prefix = `${prefix}${parentIndex}_`;\n }\n return prefix.concat(key).ReplaceAll('.', '_');\n }\n\n}\n","\n\n
\n \n \n \n
\n 0\" [key]=\"getErrors(startKey)[0]\">\n
\n
\n
\n \n \n \n
\n 0\" [key]=\"getErrors(endKey)[0]\">\n
\n
\n \n \n \n \n \n {{date.getDate()}}\n \n \n \n \n \n
\n","import {\n AfterContentInit,\n Component,\n Input,\n OnDestroy, OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ApDynformsConfigDateRange} from './config/ap-dynforms-config-date-range';\nimport {AsyncValidatorFn, FormGroup, ValidatorFn} from '@angular/forms';\nimport {DateRangePopupComponent} from '@progress/kendo-angular-dateinputs';\nimport {LanguageStore} from '../stores/translation/language.store';\nimport ILanguage = Data.Language.ILanguage;\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {ApDynformsValidator} from './ap-dynforms-validator';\n\n@Component({\n selector: 'ap-dynforms-daterange',\n templateUrl: './ap-dynforms-date-range.component.html',\n styleUrls: ['./ap-dynforms-date-range.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApDynformsDateRangeComponent implements OnInit, AfterContentInit, OnDestroy {\n @ViewChild('popupComponent', {static: true}) popup: DateRangePopupComponent;\n\n @Input() config: ApDynformsConfigDateRange;\n @Input() startPos: { column: number, row: number };\n @Input() endPos: { column: number, row: number };\n @Input() darkMode = false;\n @Input() parentKey: string;\n @Input() parentIndex: number;\n @Input() form: FormGroup;\n @Input() fontSize = 16;\n @Input() columnGap;\n\n startKey: string;\n endKey: string;\n language: ILanguage;\n disabled$ = new BehaviorSubject(false);\n private _subscriptions: Subscription[] = [];\n\n constructor(private languageStore: LanguageStore) {\n this.language = this.languageStore.SelectedLanguage;\n }\n\n public ngOnInit(): void {\n this.startKey = this.config.key + '_Start';\n this.endKey = this.config.key + '_End';\n }\n\n public ngAfterContentInit(): void {\n if (this.config.disabled$) {\n this._subscriptions.push(this.config.disabled$.subscribe((v) => {\n this.disabled$.next(v);\n if (v) {\n this.form.get(this.startKey).disable();\n this.form.get(this.endKey).disable();\n } else {\n this.form.get(this.startKey).enable();\n this.form.get(this.endKey).enable();\n }\n }));\n } else {\n this.disabled$.next(this.config.disabled === true);\n }\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * determins current validation errors(translation key)\n * for this dynamic form element/control\n */\n getErrors(key: string): string[] {\n const validationMessages: string[] = [];\n const control = this.form.get(key);\n if (control && control.errors) {\n this.config.validators.forEach((validator: ApDynformsValidator) => {\n if ((validator.always || control.touched || control.dirty) && control.errors[validator.errorKey]) {\n validationMessages.push(validator.errorKey);\n }\n });\n\n this.config.asyncValidators.forEach((validator: ApDynformsValidator) => {\n if ((validator.always || control.touched || control.dirty) && control.errors[validator.errorKey]) {\n validationMessages.push(validator.errorKey);\n }\n });\n }\n\n if (this.form.errors) {\n this.config.formErrors.forEach((formError: string) => {\n if (this.form.errors[formError]) {\n validationMessages.push(formError);\n }\n });\n }\n\n return validationMessages.filter((message) => message !== '');\n }\n\n public getHtmlId(key): string {\n let prefix = '';\n if (this.parentKey) {\n prefix = `${this.parentKey}.`;\n }\n if (this.parentIndex !== undefined) {\n prefix = `${prefix}${this.parentIndex}.`;\n }\n return prefix.concat(key);\n }\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({providedIn: 'root'})\nexport class PasswordStrengthService {\n private static strReverse(input: string): string {\n let newstring = '';\n for (let s = 0; s < input.length; s++) {\n newstring = input.charAt(s) + newstring;\n }\n return newstring;\n }\n\n public percent(pwd: string): number {\n // Simultaneous variable declaration and value assignment aren't supported in IE apparently\n // so I'm forced to assign the same value individually per var to support a crappy browser *sigh*\n let nScore = 0;\n let nLength = 0;\n let nAlphaUC = 0;\n let nAlphaLC = 0;\n let nNumber = 0;\n let nSymbol = 0;\n let nMidChar = 0;\n let nRequirements = 0;\n let nUnqChar = 0;\n let nRepChar = 0;\n let nRepInc = 0;\n let nConsecAlphaUC = 0;\n let nConsecAlphaLC = 0;\n let nConsecNumber = 0;\n let nConsecSymbol = 0;\n let nConsecCharType = 0;\n let nSeqAlpha = 0;\n let nSeqNumber = 0;\n let nSeqSymbol = 0;\n let nSeqChar = 0;\n let nReqChar = 0;\n const nMultMidChar = 2;\n const nMultConsecAlphaUC = 2;\n const nMultConsecAlphaLC = 2;\n const nMultConsecNumber = 2;\n const nMultSeqAlpha = 3;\n const nMultSeqNumber = 3;\n const nMultSeqSymbol = 3;\n const nMultLength = 4;\n const nMultNumber = 4;\n const nMultSymbol = 6;\n let nTmpAlphaUC = '';\n let nTmpAlphaLC = '';\n let nTmpNumber = '';\n let nTmpSymbol = '';\n const sAlphas = 'abcdefghijklmnopqrstuvwxyz';\n const sNumerics = '01234567890';\n const sSymbols = ')!@#$%^&*()';\n const nMinPwdLen = 8;\n\n if (pwd) {\n nScore = parseInt((pwd.length * nMultLength) as any, 10);\n nLength = pwd.length;\n const arrPwd = pwd.replace(/\\s+/g, '').split(/\\s*/);\n const arrPwdLen = arrPwd.length;\n\n /* Loop through password$ to check for Symbol, Numeric, Lowercase and Uppercase pattern matches */\n for (let a = 0; a < arrPwdLen; a++) {\n if (arrPwd[a].match(/[A-Z]/g)) {\n if (nTmpAlphaUC !== '') {\n // tslint:disable-next-line:triple-equals\n if ((nTmpAlphaUC + 1) as any == a) {\n nConsecAlphaUC++;\n nConsecCharType++;\n }\n }\n nTmpAlphaUC = a as any;\n nAlphaUC++;\n } else if (arrPwd[a].match(/[a-z]/g)) {\n if (nTmpAlphaLC !== '') {\n // tslint:disable-next-line:triple-equals\n if ((nTmpAlphaLC + 1) as any == a) {\n nConsecAlphaLC++;\n nConsecCharType++;\n }\n }\n nTmpAlphaLC = a as any;\n nAlphaLC++;\n } else if (arrPwd[a].match(/[0-9]/g)) {\n if (a > 0 && a < (arrPwdLen - 1)) {\n nMidChar++;\n }\n if (nTmpNumber !== '') {\n // tslint:disable-next-line:triple-equals\n if ((nTmpNumber + 1) as any == a) {\n nConsecNumber++;\n nConsecCharType++;\n }\n }\n nTmpNumber = a as any;\n nNumber++;\n } else if (arrPwd[a].match(/[^a-zA-Z0-9_]/g)) {\n if (a > 0 && a < (arrPwdLen - 1)) {\n nMidChar++;\n }\n if (nTmpSymbol !== '') {\n // tslint:disable-next-line:triple-equals\n if ((nTmpSymbol + 1) as any == a) {\n nConsecSymbol++;\n nConsecCharType++;\n }\n }\n nTmpSymbol = a as any;\n nSymbol++;\n }\n /* Internal loop through password$ to check for repeat characters */\n let bCharExists = false;\n for (let b = 0; b < arrPwdLen; b++) {\n // tslint:disable-next-line:triple-equals\n if (arrPwd[a] == arrPwd[b] && a != b) { /* repeat character exists */\n bCharExists = true;\n /*\n Calculate icrement deduction based on proximity to identical characters\n Deduction is incremented each time a new match is discovered\n Deduction amount is based on total password$ length divided by the\n difference of distance between currently selected match\n */\n nRepInc += Math.abs(arrPwdLen / (b - a));\n }\n }\n if (bCharExists) {\n nRepChar++;\n nUnqChar = arrPwdLen - nRepChar;\n nRepInc = (nUnqChar) ? Math.ceil(nRepInc / nUnqChar) : Math.ceil(nRepInc);\n }\n }\n\n /* Check for sequential alpha string patterns (forward and reverse) */\n for (let s = 0; s < 23; s++) {\n const sFwd = sAlphas.substring(s, parseInt((s + 3) as any, 10));\n const sRev = PasswordStrengthService.strReverse(sFwd);\n // tslint:disable-next-line:triple-equals\n if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) {\n nSeqAlpha++;\n nSeqChar++;\n }\n }\n\n /* Check for sequential numeric string patterns (forward and reverse) */\n for (let s = 0; s < 8; s++) {\n const sFwd = sNumerics.substring(s, parseInt((s + 3) as any, 10));\n const sRev = PasswordStrengthService.strReverse(sFwd);\n // tslint:disable-next-line:triple-equals\n if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) {\n nSeqNumber++;\n nSeqChar++;\n }\n }\n\n /* Check for sequential symbol string patterns (forward and reverse) */\n for (let s = 0; s < 8; s++) {\n const sFwd = sSymbols.substring(s, parseInt((s + 3) as any, 10));\n const sRev = PasswordStrengthService.strReverse(sFwd);\n // tslint:disable-next-line:triple-equals\n if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) {\n nSeqSymbol++;\n nSeqChar++;\n }\n }\n\n /* Modify overall score value based on usage vs requirements */\n\n /* General point assignment */\n if (nAlphaUC > 0 && nAlphaUC < nLength) {\n nScore = parseInt((nScore + ((nLength - nAlphaUC) * 2)) as any, 10);\n }\n if (nAlphaLC > 0 && nAlphaLC < nLength) {\n nScore = parseInt((nScore + ((nLength - nAlphaLC) * 2)) as any, 10);\n }\n if (nNumber > 0 && nNumber < nLength) {\n nScore = parseInt((nScore + (nNumber * nMultNumber)) as any, 10);\n }\n if (nSymbol > 0) {\n nScore = parseInt((nScore + (nSymbol * nMultSymbol)) as any, 10);\n }\n if (nMidChar > 0) {\n nScore = parseInt((nScore + (nMidChar * nMultMidChar)) as any, 10);\n }\n\n /* Point deductions for poor practices */\n if ((nAlphaLC > 0 || nAlphaUC > 0) && nSymbol === 0 && nNumber === 0) { // Only Letters\n nScore = parseInt((nScore - nLength) as any, 10);\n }\n if (nAlphaLC === 0 && nAlphaUC === 0 && nSymbol === 0 && nNumber > 0) { // Only Numbers\n nScore = parseInt((nScore - nLength) as any, 10);\n }\n if (nRepChar > 0) { // Same character exists more than once\n nScore = parseInt((nScore - nRepInc) as any, 10);\n }\n if (nConsecAlphaUC > 0) { // Consecutive Uppercase Letters exist\n nScore = parseInt((nScore - (nConsecAlphaUC * nMultConsecAlphaUC)) as any, 10);\n }\n if (nConsecAlphaLC > 0) { // Consecutive Lowercase Letters exist\n nScore = parseInt((nScore - (nConsecAlphaLC * nMultConsecAlphaLC)) as any, 10);\n }\n if (nConsecNumber > 0) { // Consecutive Numbers exist\n nScore = parseInt((nScore - (nConsecNumber * nMultConsecNumber)) as any, 10);\n }\n if (nSeqAlpha > 0) { // Sequential alpha strings exist (3 characters or more)\n nScore = parseInt((nScore - (nSeqAlpha * nMultSeqAlpha)) as any, 10);\n }\n if (nSeqNumber > 0) { // Sequential numeric strings exist (3 characters or more)\n nScore = parseInt((nScore - (nSeqNumber * nMultSeqNumber)) as any, 10);\n }\n if (nSeqSymbol > 0) { // Sequential symbol strings exist (3 characters or more)\n nScore = parseInt((nScore - (nSeqSymbol * nMultSeqSymbol)) as any, 10);\n }\n\n /* Determine if mandatory requirements have been met and set image indicators accordingly */\n const arrChars = [nLength, nAlphaUC, nAlphaLC, nNumber, nSymbol];\n const arrCharsIds = ['nLength', 'nAlphaUC', 'nAlphaLC', 'nNumber', 'nSymbol'];\n const arrCharsLen = arrChars.length;\n for (let c = 0; c < arrCharsLen; c++) {\n // tslint:disable-next-line:triple-equals\n let minVal = 0;\n // tslint:disable-next-line:triple-equals\n if (arrCharsIds[c] == 'nLength') {\n minVal = parseInt((nMinPwdLen - 1) as any, 10);\n }\n // tslint:disable-next-line:triple-equals\n if (arrChars[c] == parseInt((minVal + 1) as any, 10)) {\n nReqChar++;\n } else if (arrChars[c] > parseInt((minVal + 1) as any, 10)) {\n nReqChar++;\n }\n }\n nRequirements = nReqChar;\n let nMinReqChars = 4;\n if (pwd.length >= nMinPwdLen) {\n nMinReqChars = 3;\n }\n if (nRequirements > nMinReqChars) { // One or more required characters exist\n nScore = parseInt((nScore + (nRequirements * 2)) as any, 10);\n }\n\n /* Determine complexity based on overall score */\n if (nScore > 100) {\n nScore = 100;\n } else if (nScore < 0) {\n nScore = 0;\n }\n }\n return nScore;\n }\n}\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {FormControl} from '@angular/forms';\nimport {\n PasswordStrengthService\n} from '../services/password-strength.service';\n\n@Component({\n selector: 'pwd-strength',\n template: `\n
\n
\n \n
\n
\n
\n \n
\n
\n `,\n styles: [\n `\n .pwd-strength-wrapper {\n width: 100%;\n height: 27px;\n padding-top: 5px;\n }\n\n .pwd-strength-background {\n background: linear-gradient(90deg, rgba(238, 0, 0, 1) 0%, rgba(188, 60, 0, 1) 25%, rgba(207, 114, 45, 1) 50%, rgba(229, 196, 41, 1) 75%, rgba(58, 155, 76, 1) 100%);\n height: 22px;\n }\n\n .pwd-strength-marker {\n height: 22px;\n background: black;\n width: 1px;\n margin-left: 0;\n border: 1px solid black;\n margin-top: -23px;\n }\n `\n ]\n})\nexport class PasswordStrengthComponent implements OnInit, OnChanges {\n constructor(private translationStore: TranslationStore,\n private passwordStrengthService: PasswordStrengthService) {\n }\n\n private static labelTranslationKey = 'Control__Password_Strength_Label';\n private static tooltipTranslationKey = 'Admin_Pages_Password_Minimum_Requirement_Tip';\n private static stateVeryWeakTranslationKey = 'Admin_Pages_Password_State_Very_Weak';\n private static stateWeakTranslationKey = 'Admin_Pages_Password_State_Weak';\n private static stateGoodTranslationKey = 'Admin_Pages_Password_State_Good';\n private static stateStrongTranslationKey = 'Admin_Pages_Password_State_Strong';\n private static stateVeryStrongTranslationKey = 'Admin_Pages_Password_State_Very_Strong';\n\n @Input()\n public control: FormControl;\n @Input()\n public value = '';\n @Input()\n public id = '';\n\n @Output()\n public strengthChanged = new EventEmitter();\n @Output()\n public labelChanged = new EventEmitter(true);\n\n public lowSecurityPasswordError = 'PwRecover_ValidationInfoLowSecurityPassword';\n public markerStyle = {\n margin: `-23px 0px 0px 0%`,\n };\n\n private labelSuffix = '';\n private tooltip = '';\n private tooltipText = '';\n private statesTextVeryWeak = '';\n private statesTextWeak = '';\n private statesTextGood = '';\n private statesTextStrong = '';\n private statesTextVeryStrong = '';\n\n ngOnInit(): void {\n this.translationStore.Listen(s => s.loaded).subscribe(_ => {\n if (_ === false) {\n return;\n }\n this.labelSuffix = this.translationStore.FindTranslationForSelectedLanguage(PasswordStrengthComponent.labelTranslationKey);\n this.tooltip = this.translationStore.FindTranslationForSelectedLanguage(PasswordStrengthComponent.tooltipTranslationKey);\n this.tooltipText = this.translationStore.FindTranslationForSelectedLanguage(PasswordStrengthComponent.labelTranslationKey);\n this.statesTextVeryWeak = this.translationStore.FindTranslationForSelectedLanguage(PasswordStrengthComponent.stateVeryWeakTranslationKey);\n this.statesTextWeak = this.translationStore.FindTranslationForSelectedLanguage(PasswordStrengthComponent.stateWeakTranslationKey);\n this.statesTextGood = this.translationStore.FindTranslationForSelectedLanguage(PasswordStrengthComponent.stateGoodTranslationKey);\n this.statesTextStrong = this.translationStore.FindTranslationForSelectedLanguage(PasswordStrengthComponent.stateStrongTranslationKey);\n this.statesTextVeryStrong = this.translationStore.FindTranslationForSelectedLanguage(PasswordStrengthComponent.stateVeryStrongTranslationKey);\n\n this.labelChanged.emit(`${this.labelSuffix} ${this.statesTextVeryWeak}`);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value && this.control) {\n const strength = this.passwordStrengthService.percent(changes.value.currentValue);\n this.markerStyle = {margin: `-23px 0px 0px ${strength}%`};\n this.control.setValue(strength);\n if (strength < 1) {\n this.labelChanged.emit(`${this.labelSuffix} ${this.statesTextVeryWeak}`);\n this.control.setErrors({[this.lowSecurityPasswordError]: true});\n } else if (strength <= 19) {\n this.labelChanged.emit(`${this.labelSuffix} ${this.statesTextVeryWeak}`);\n this.control.setErrors({[this.lowSecurityPasswordError]: true});\n } else if (strength <= 49) {\n this.labelChanged.emit(`${this.labelSuffix} ${this.statesTextWeak}`);\n this.control.setErrors({[this.lowSecurityPasswordError]: true});\n } else if (strength <= 59) {\n this.labelChanged.emit(`${this.labelSuffix} ${this.statesTextGood}`);\n this.control.setErrors(null);\n } else if (strength <= 79) {\n this.labelChanged.emit(`${this.labelSuffix} ${this.statesTextStrong}`);\n this.control.setErrors(null);\n } else {\n this.labelChanged.emit(`${this.labelSuffix} ${this.statesTextVeryStrong}`);\n this.control.setErrors(null);\n }\n }\n }\n}\n","import {Directive, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\nimport {Messages} from '@progress/kendo-angular-upload';\nimport {LocalizationService} from '@progress/kendo-angular-l10n';\nimport {nameOf} from '../../ap-core/utils/ap-name-of';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {FileValidationError} from '../types/ap-file-upload.types';\n\n/**\n * Directive for handling file upload validation messages and translations.\n * Extends the base Messages class to provide custom file upload related messages.\n */\n@Directive({\n selector: '[fileUploadMessages]',\n exportAs: 'fileUploadMessages',\n providers: [\n {\n provide: Messages,\n useExisting: ApFileUploadMessagesDirective\n }\n ]\n})\nexport class ApFileUploadMessagesDirective extends Messages implements OnInit, OnChanges {\n /** Custom message for non-unique file validation error */\n @Input() public fileIsNotUnique: string;\n\n constructor(protected localizationService: LocalizationService,\n private translationService: ApTranslationService) {\n super();\n }\n\n /**\n * Initializes the directive by registering the default file uniqueness message\n * @public\n */\n public ngOnInit(): void {\n this._registerFileIsNotUniqueMessage();\n }\n\n /**\n * Handles changes to input properties by re-registering messages when fileIsNotUnique changes\n * @param changes SimpleChanges object containing changed properties\n * @public\n */\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[nameOf('fileIsNotUnique')]) {\n this._registerFileIsNotUniqueMessage();\n }\n }\n\n /**\n * Registers multiple validation messages with translation support\n * @param messagesToRegister Array of FileValidationError objects to register\n * @public\n */\n public registerMessage(messagesToRegister: FileValidationError[]): void {\n if (!!this.localizationService && !!messagesToRegister && messagesToRegister.length > 0) {\n messagesToRegister.forEach((fileValidationError: FileValidationError) => {\n const translatedValue = this.translationService.translate(fileValidationError.ErrorMessage);\n this.localizationService.register(fileValidationError.ErrorKey, translatedValue, true);\n });\n }\n }\n\n /**\n * Registers the file uniqueness validation message with either custom or default text\n * @private\n */\n private _registerFileIsNotUniqueMessage(): void {\n const messagesToRegister: FileValidationError = {\n ErrorKey: nameOf('fileIsNotUnique'),\n ErrorMessage: this.fileIsNotUnique || 'Same file is already in use'\n };\n this.registerMessage([messagesToRegister]);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FileService} from './file.service';\nimport {FileType, ThumbnailParam} from '../../types/file.types';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\n\n@Injectable({providedIn: 'root'})\nexport class MediaFileService {\n constructor(private fileService: FileService,\n private dateService: ApDateService) {\n }\n\n public async generateThumbnail(file: File, thumbnail: ThumbnailParam): Promise {\n return new Promise((resolve) => {\n if (!file) {\n resolve(undefined);\n return;\n }\n const fileReader = new FileReader();\n let blobUrl: string;\n fileReader.onload = () => {\n blobUrl = URL.createObjectURL(file);\n const fileType = this.fileService.getFileType(file.type);\n switch (fileType) {\n case FileType.Image:\n this._getImageThumbnailFileData(blobUrl, thumbnail)\n .then(x => {\n resolve(x);\n URL.revokeObjectURL(blobUrl);\n });\n break;\n case FileType.Video:\n this._getVideoThumbnailFileData(blobUrl, file.type, thumbnail)\n .then(x => {\n resolve(x);\n URL.revokeObjectURL(blobUrl);\n });\n break;\n }\n };\n fileReader.onerror = () => {\n console.error('File cannot be read.');\n if (!!blobUrl) {\n URL.revokeObjectURL(blobUrl);\n }\n resolve(undefined);\n };\n fileReader.readAsArrayBuffer(file);\n });\n }\n\n private _getImageThumbnailFileData(blobFileUrl: string, thumbnail: ThumbnailParam): Promise {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(this._generateThumbnailFileData(img, thumbnail));\n img.onerror = () => reject(new Error('Error loading image'));\n img.src = blobFileUrl;\n });\n }\n\n private _getVideoThumbnailFileData(blobFileUrl: string, mimeType: string, thumbnail: ThumbnailParam): Promise {\n return new Promise((resolve, reject) => {\n const video = document.createElement('video');\n video.onerror = () => reject(new Error('Error loading image'));\n video.onloadedmetadata = () => {\n video.width = video.videoWidth;\n video.height = video.videoHeight;\n video.currentTime = 1;\n };\n video.onseeked = () => resolve(this._generateThumbnailFileData(video, thumbnail));\n const source = document.createElement('source');\n source.type = this._isValidMimeType(mimeType) ? mimeType : 'video/mp4';\n source.src = blobFileUrl;\n video.appendChild(source);\n });\n }\n\n private _generateThumbnailFileData(mediaElement: HTMLVideoElement | HTMLImageElement, thumbnail: ThumbnailParam): Promise {\n return new Promise((resolve, reject) => {\n const canvas = this._generateHtmlCanvas(mediaElement, thumbnail.Width, thumbnail.Height);\n canvas.toBlob((blob) => {\n if (blob) {\n const resizedFile = new File([blob], thumbnail.Name, {\n type: thumbnail.MimeType,\n lastModified: this.dateService.getNow()\n });\n resolve(resizedFile);\n } else {\n reject(new Error('Canvas to Blob conversion failed'));\n }\n }, thumbnail.MimeType, thumbnail.Quality);\n });\n }\n\n private _generateHtmlCanvas(mediaElement: HTMLVideoElement | HTMLImageElement,\n width: number, height: number): HTMLCanvasElement {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('Canvas context not available');\n }\n ctx.drawImage(mediaElement, 0, 0, canvas.width, canvas.height);\n return canvas;\n }\n\n private _isValidMimeType(mimeType: string): boolean {\n return mimeType !== 'video/quicktime';\n }\n}\n","import {ElementRef, Injectable} from '@angular/core';\nimport {FileInfoData, PreviewFileData} from '../types/ap-file-upload.types';\nimport {FileState} from '@progress/kendo-angular-upload';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\n\n/**\n * Service for managing HTML DOM manipulations related to file upload UI components.\n * Handles adding thumbnails, icons, upload dates, and download buttons to file elements.\n */\n@Injectable({providedIn: 'root'})\nexport class FileUploadHtmlService {\n constructor(private translationService: ApTranslationService) {\n }\n\n /**\n * Adds a thumbnail preview for media files with click-to-zoom functionality\n * @param uploadComponentElementRef Reference to upload component element\n * @param mediaFileData Preview data for the media file\n * @param onClickCallback Callback function to handle thumbnail click\n */\n public addMediaFileThumbnail(uploadComponentElementRef: ElementRef,\n mediaFileData: PreviewFileData,\n onClickCallback: (mediaFileData: PreviewFileData) => void): void {\n const fileHtmlElement: any = this._getFileHtmlElement(uploadComponentElementRef, mediaFileData.FileInfoData.uid);\n const childElement = fileHtmlElement?.querySelector('.k-file-group-wrapper');\n if (!childElement) {\n return;\n }\n const fileElementForPreview = document.createElement('img');\n fileElementForPreview.alt = 'thumbnail';\n fileElementForPreview.src = mediaFileData.ThumbnailDataUrl;\n fileElementForPreview.style.cssText = 'width: 50px; height: 50px; cursor: zoom-in';\n fileElementForPreview.onclick = () => onClickCallback(mediaFileData);\n childElement.replaceWith(fileElementForPreview);\n }\n\n /**\n * Adds click functionality to file icons for non-media files\n * @param uploadComponentElementRef Reference to upload component element\n * @param mediaFileData Preview data for the file\n * @param onClickCallback Callback function to handle icon click\n */\n public addFileIconClick(uploadComponentElementRef: ElementRef,\n mediaFileData: PreviewFileData,\n onClickCallback: (mediaFileData: PreviewFileData) => void): void {\n const fileHtmlElement: any = this._getFileHtmlElement(uploadComponentElementRef, mediaFileData.FileInfoData.uid);\n const fileElementForPreview = fileHtmlElement?.querySelector('.k-file-group-wrapper');\n if (!fileElementForPreview) {\n return;\n }\n fileElementForPreview.style.cssText = 'cursor: zoom-in';\n fileElementForPreview.onclick = () => onClickCallback(mediaFileData);\n }\n\n /**\n * Adds upload date information to file element and manages status display\n * @param uploadComponentElementRef Reference to upload component element\n * @param fileInfoData File information containing upload date\n */\n public addUploadDateToFile(uploadComponentElementRef: ElementRef,\n fileInfoData: FileInfoData): void {\n const fileHtmlElement: any = this._getFileHtmlElement(uploadComponentElementRef, fileInfoData.uid);\n const fileInfoSpanContainer = fileHtmlElement?.querySelector('.k-file-name-size-wrapper');\n if (!fileInfoSpanContainer) {\n return;\n }\n const uploadedAtTranslation = this.translationService.translate('UploadedAt');\n const spanForUploadedAt = document.createElement('span');\n spanForUploadedAt.className = 'k-file-information file-upload-date';\n spanForUploadedAt.innerHTML = `${uploadedAtTranslation} ${fileInfoData.UploadDate.toLocaleDateString()}`;\n fileInfoSpanContainer.append(spanForUploadedAt);\n if (fileInfoData.state === FileState.Uploaded) {\n const fileStatusSpan = fileHtmlElement?.querySelector('.k-text-success.k-file-information');\n if (!!fileStatusSpan) {\n fileInfoSpanContainer.removeChild(fileStatusSpan);\n }\n }\n }\n\n /**\n * Adds 'Ready to Upload' status indicator to file element\n * @param uploadComponentElementRef Reference to upload component element\n * @param fileInfoData File information data\n * @param className CSS class name for the status indicator\n */\n public addReadyToUploadInfo(uploadComponentElementRef: ElementRef,\n fileInfoData: FileInfoData,\n className: string): void {\n const fileHtmlElement: any = this._getFileHtmlElement(uploadComponentElementRef, fileInfoData.uid);\n const fileNameSpan = fileHtmlElement?.querySelector('.k-file-name');\n if (!fileNameSpan) {\n return;\n }\n const spanForReadyToUpload = document.createElement('span');\n spanForReadyToUpload.className = `k-file-information ${className}`;\n spanForReadyToUpload.innerHTML = this.translationService.translate('ReadyToUpload');\n fileNameSpan.after(spanForReadyToUpload);\n }\n\n /**\n * Adds download button to file element with click functionality\n * @param uploadComponentElementRef Reference to upload component element\n * @param mediaFileData Preview data for the file\n * @param onClickCallback Callback function to handle download button click\n */\n public addDownloadButton(uploadComponentElementRef: ElementRef,\n mediaFileData: PreviewFileData,\n onClickCallback: (mediaFileData: PreviewFileData) => void): void {\n const fileHtmlElement: any = this._getFileHtmlElement(uploadComponentElementRef, mediaFileData.FileInfoData.uid);\n const fileInfoSpanContainer = fileHtmlElement?.querySelector('.k-file-name-size-wrapper');\n if (!fileInfoSpanContainer) {\n return;\n }\n const downloadIcon = document.createElement('span');\n downloadIcon.className = 'download-file-icon k-icon k-i-download k-i-x';\n const downloadButton = document.createElement('button');\n downloadButton.className = 'k-button k-button-icon k-flat download-file-button';\n downloadButton.appendChild(downloadIcon);\n downloadButton.onclick = () => onClickCallback(mediaFileData);\n fileInfoSpanContainer.after(downloadButton);\n }\n\n /**\n * Updates download button state (enabled/disabled)\n * @param uploadComponentElementRef Reference to upload component element\n * @param fileId Unique identifier for the file\n * @param isLoading Boolean indicating if download is in progress\n */\n public downloadButtonState(uploadComponentElementRef: ElementRef, fileId: string, isLoading: boolean): void {\n const fileHtmlElement: any = this._getFileHtmlElement(uploadComponentElementRef, fileId);\n const downloadButton = fileHtmlElement?.querySelector('.download-file-button');\n if (!downloadButton) {\n return;\n }\n downloadButton.disabled = isLoading;\n }\n\n /**\n * Removes all 'Ready to Upload' status indicators\n * @param uploadComponentElementRef Reference to upload component element\n * @param className CSS class name of status indicators to remove\n */\n public removeAllReadyToUpload(uploadComponentElementRef: ElementRef, className: string): void {\n const readyToUploadSpans = uploadComponentElementRef.nativeElement?.querySelectorAll(\n `.${className}`);\n if (!!readyToUploadSpans && readyToUploadSpans.length > 0) {\n for (const readyToUploadSpan of readyToUploadSpans) {\n readyToUploadSpan.remove();\n }\n }\n }\n\n /**\n * Retrieves HTML element for a specific file by its ID\n * @param uploadComponentElementRef Reference to upload component element\n * @param fileId Unique identifier for the file\n * @returns HTML element representing the file or null if not found\n * @private\n */\n private _getFileHtmlElement(uploadComponentElementRef: ElementRef, fileId: string): any {\n return uploadComponentElementRef.nativeElement?.querySelector(`[data-uid=\"${fileId}\"]`);\n }\n}\n","import {Subject} from 'rxjs';\nimport {HttpEvent, HttpEventType, HttpProgressEvent, HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\n\n/**\n * Service for simulating file upload operations using fake HTTP event streams.\n * Manages upload progress, completion, and error states for multiple file uploads.\n */\n@Injectable()\nexport class ApUploadFakeStreamService {\n /** Map storing active upload streams indexed by file Id */\n private uploadStreams = new Map>>();\n\n /**\n * Creates a new upload stream for a specific file\n * @param fileId Unique identifier for the file\n */\n public createUploadStream(fileId: string): void {\n const subject = new Subject>();\n this.uploadStreams.set(fileId, subject);\n }\n\n /**\n * Removes an upload stream for a specific file\n * @param fileId Unique identifier for the file\n */\n public removeUploadStream(fileId: string): void {\n this.uploadStreams.delete(fileId);\n }\n\n /**\n * Retrieves the upload stream for a specific file\n * @param fileId Unique identifier for the file\n * @returns Subject representing the upload stream or undefined if not found\n */\n public getUploadStream(fileId: string): Subject> | undefined {\n return this.uploadStreams.get(fileId);\n }\n\n /**\n * Updates upload progress for a specific file\n * @param fileId Unique identifier for the file\n * @param progress Current progress value (0-100)\n */\n public updateProgress(fileId: string, progress: number): void {\n const stream = this.uploadStreams.get(fileId);\n if (stream) {\n stream.next({\n loaded: progress,\n total: 100,\n type: HttpEventType.UploadProgress\n } as HttpProgressEvent);\n }\n }\n\n /**\n * Marks an upload as complete and emits success response\n * @param fileId Unique identifier for the file\n * @param response Optional response data to include in success event\n */\n public completeUpload(fileId: string, response?: any): void {\n const stream = this.uploadStreams.get(fileId);\n if (stream) {\n stream.next(new HttpResponse({\n status: 200,\n body: response\n }));\n stream.complete();\n this.removeUploadStream(fileId);\n }\n }\n\n /**\n * Marks an upload as failed and emits error event\n * @param fileId Unique identifier for the file\n * @param error Optional error data to include in error event\n */\n public failUpload(fileId: string, error?: any): void {\n const stream = this.uploadStreams.get(fileId);\n if (stream) {\n stream.error(error);\n this.removeUploadStream(fileId);\n }\n }\n\n /**\n * Removes all active upload streams\n */\n public clearAllUploadStreams(): void {\n this.uploadStreams.clear();\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","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ClearEvent,\n ErrorEvent,\n FileRestrictions,\n FileState,\n RemoveEvent,\n SelectEvent,\n SuccessEvent,\n UploadComponent,\n UploadEvent,\n UploadProgressEvent\n} from '@progress/kendo-angular-upload';\nimport {AbstractControl, FormControl, ValidationErrors, ValidatorFn} from '@angular/forms';\nimport {BehaviorSubject, interval, Subscription} from 'rxjs';\nimport {\n Base64FileData,\n FileDownloadProcessCallback,\n FileInfoData,\n FilePreviewModalDialogData,\n FileValidationCallback,\n FileWithId,\n PreviewFileData,\n UploadFileEvent\n} from '../../types/ap-file-upload.types';\nimport {MediaFileService} from '../../../services/common/media-file.service';\nimport {FileType, ThumbnailParam} from '../../../types/file.types';\nimport {FileService} from '../../../services/common/file.service';\nimport {\n ApFileUploadComponentService\n} from '../../services/ap-file-upload-component.service';\nimport {ItemChangedEvent} from '@progress/kendo-angular-scrollview';\nimport {saveAs} from '@progress/kendo-file-saver';\nimport {FileUploadHtmlService} from '../../services/ap-file-upload-html.service';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {\n DialogComponent\n} from '@progress/kendo-angular-dialog/dist/es2015/dialog/dialog.component';\nimport {APP_CONFIGURATION} from '../../../ap-core/config';\nimport {\n ApUploadFakeStreamService\n} from '../../services/ap-file-upload-fake-stream.service';\nimport {ApFileUploadMessagesDirective} from '../../derectives/ap-file-upload.derectives';\nimport {nameOf} from '../../../ap-core/utils/ap-name-of';\nimport {distinctUntilChanged, map, skip} from 'rxjs/operators';\n\n/**\n * Component for handling file uploads with preview, validation, and download capabilities\n * Integrates with Kendo Upload and provides extended functionality\n */\n@Component({\n selector: 'ap-file-upload',\n templateUrl: 'ap-file-upload.component.html',\n styleUrls: ['ap-file-upload.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApFileUploadComponent implements OnInit, AfterViewInit, OnDestroy {\n\n constructor(private fileService: FileService,\n private mediaFileService: MediaFileService,\n private fileUploadHtmlService: FileUploadHtmlService,\n private fileUploadComponentService: ApFileUploadComponentService,\n private fileUploadFakeStream: ApUploadFakeStreamService,\n private elementRef: ElementRef,\n private sanitizer: DomSanitizer) {\n }\n\n /**\n * Gets all files currently in the upload component's file list\n * @returns Array of FileInfoData objects or empty array if no files exist\n * @public\n */\n public get getAllFiles(): FileInfoData[] {\n return (this.uploadFileComponent?.fileList?.filesFlat as FileInfoData[]) ?? [];\n }\n\n @Input()\n public id: string;\n @Input()\n public control: FormControl;\n @Input()\n public saveUrl = APP_CONFIGURATION.UploadSaveUrl;\n @Input()\n public removeUrl = APP_CONFIGURATION.UploadRemoveUrl;\n @Input()\n public restrictions: FileRestrictions = {allowedExtensions: ['.txt', '.csv']};\n @Input()\n public autoUpload = false;\n @Input()\n public multiple = false;\n @Input()\n public showFilePreview = false;\n @Input()\n public viewFileOnClick = false;\n @Input()\n public withCredentials = false;\n @Input()\n public validateWithForm = false;\n @Input()\n public allowOnlyUniqFiles = false;\n @Input()\n public allowDownload = false;\n @Input()\n public disabled = false;\n @Input()\n public style: any = undefined;\n @Input()\n public dropFilesHereText = 'kendo.upload.dropFilesHere';\n @Input()\n public selectText = 'kendo.upload.select';\n @Input()\n public uploadSelectedFilesText = 'UploadUpload';\n @Input()\n public clearSelectedFilesText = 'Global__Cancel';\n @Input()\n public fileDownloadProcessCallback: FileDownloadProcessCallback | undefined;\n @Input()\n public customFileValidation: FileValidationCallback | undefined;\n\n @Output()\n public fileUploadProgress = new EventEmitter();\n @Output()\n public fileUploadSuccess = new EventEmitter();\n @Output()\n public fileUpload = new EventEmitter();\n @Output()\n public fileSelect = new EventEmitter();\n @Output()\n public fileRemove = new EventEmitter();\n @Output()\n public fileError = new EventEmitter();\n\n @ViewChild(UploadComponent, {read: ElementRef})\n public uploadComponentElementRef: ElementRef;\n\n public filePreviewModalDialogData: FilePreviewModalDialogData;\n public previewFilesData: PreviewFileData[] = [];\n\n protected readonly FileType = FileType;\n\n @ViewChild(UploadComponent)\n private uploadFileComponent: UploadComponent;\n @ViewChild(ApFileUploadMessagesDirective)\n private uploadMessages: ApFileUploadMessagesDirective;\n @ViewChild('filePreviewDialog')\n public filePreviewDialog: DialogComponent;\n\n private _viewContainer: HTMLElement;\n private _readyToUploadStatusClassName = 'ready-to-upload-status';\n private _initialFiles: FileInfoData[] = [];\n private _thumbnailSettings: ThumbnailParam;\n private _subscriptions: Subscription[] = [];\n private _isModalDialogOpened = false;\n private _defaultFilePreviewModalHeight = 700;\n\n /**\n * Initializes component by setting up view container, thumbnail settings,\n * file preview modal data, and form validation if enabled.\n * Also starts monitoring HTTP subscription properties of files.\n * @public\n */\n public ngOnInit(): void {\n this._viewContainer = this.elementRef.nativeElement.closest('ap-view-container');\n this._thumbnailSettings = this._settingsForThumbnail();\n this.filePreviewModalDialogData = this._generateFilePreviewModalDialogData();\n if (this.validateWithForm) {\n this.control.addValidators(this._filesValidator());\n }\n this._subscriptions.push(\n interval(100).pipe(\n map(() => JSON.stringify(this.getAllFiles.map(f => ({id: f.uid, status: f.state})))),\n distinctUntilChanged((previous, current) => previous === current),\n skip(1) // Make skip 1-st invoke, because 'distinctUntilChanged' always return undefined on first run\n ).subscribe(() => {\n this.fileUploadComponentService.modifyHttpSubscriptionProperties(this.getAllFiles);\n this._setValuesToControl(this.getAllFiles);\n })\n );\n }\n\n /**\n * Performs post-view initialization setup by storing initial files\n * and adjusting their HTML data if files exist\n * @public\n */\n public ngAfterViewInit(): void {\n this._initialFiles = this.getAllFiles?.map(file => ({...file} as FileInfoData)) ?? [];\n if (this._initialFiles.length > 0) {\n this._adjustFileHtmlData(this._initialFiles).then();\n this._setValuesToControl(this._initialFiles);\n }\n }\n\n /**\n * Cleans up component resources by clearing preview data,\n * upload streams, and unsubscribing from all subscriptions\n * @public\n */\n public ngOnDestroy(): void {\n this._clearPreviewFilesData(this.getAllFiles);\n this.fileUploadFakeStream.clearAllUploadStreams();\n this._subscriptions.forEach(subscription => subscription?.unsubscribe());\n }\n\n /**\n * Handles window resize events by adjusting file preview modal dimensions\n * @public\n */\n @HostListener('window:resize', ['$event'])\n public onResize(): void {\n if (this.showFilePreview) {\n this._resizeFilePreviewModal();\n }\n }\n\n /**\n * Handles document click events to manage file preview modal closure\n * @param event$ Mouse click event$\n * @public\n */\n @HostListener('document:click', ['$event'])\n public onClick(event$: MouseEvent): void {\n if (!this.showFilePreview || !event$?.target) {\n return;\n }\n this._closeFilePreviewModal(event$.target);\n }\n\n /**\n * Handles file selection events by processing selected files,\n * adding previews if enabled, and updating internal files collection.\n * Emits fileSelect event$ for parent component handling.\n * @param event$ File selection event$ containing selected files information\n * @public\n */\n public onFileSelect(event$: SelectEvent): void {\n const fileDataInfos = event$.files as FileInfoData[];\n this._adjustInformationForFilesOnSelect(fileDataInfos);\n this._onSelectFilesValidation(fileDataInfos);\n this._adjustFileHtmlData(fileDataInfos).then();\n this.fileSelect.emit(event$);\n }\n\n /**\n * Handles file removal by updating internal files collection\n * and emitting removal event for parent component handling\n * @param event$ RemoveEvent containing information about removed files\n * @public\n */\n public onFileRemove(event$: RemoveEvent): void {\n this._clearPreviewFilesData(event$.files as FileInfoData[]);\n this.fileRemove.emit(event$);\n }\n\n /**\n * Handles clearing of selected files while preserving initial files.\n * Prevents default clear behavior if initial files exist and filters\n * the file list to keep only initial files.\n * @param event$ ClearEvent containing clear operation information\n * @public\n */\n public onFilesClear(event$: ClearEvent): void {\n if (this._initialFiles.length > 0) {\n event$.preventDefault();\n const filesToKeep = this._initialFiles.map(x => x.uid);\n const updatedFiles = this.getAllFiles.filter(x => filesToKeep.includes(x.uid));\n this._clearPreviewFilesData(updatedFiles.filter(x => !filesToKeep.includes(x.uid)));\n this.control.setValue(updatedFiles);\n this._adjustFileHtmlData(updatedFiles).then();\n } else {\n this._clearPreviewFilesData(this.getAllFiles);\n }\n }\n\n /**\n * Handles file upload initialization and emits upload event\n * for parent component processing\n * @param event$ UploadEvent containing upload information\n * @public\n */\n public onFileUpload(event$: UploadEvent): void {\n event$.files.forEach(file => {\n (file.rawFile as FileWithId).uid = file.uid;\n this.fileUploadFakeStream.createUploadStream(file.uid);\n });\n this.fileUploadHtmlService.removeAllReadyToUpload(this.uploadComponentElementRef,\n this._readyToUploadStatusClassName);\n this.fileUpload.emit({\n files: event$.files,\n fileProcess: {\n setUploadFinished: (fileId: string) => this.fileUploadFakeStream.completeUpload(fileId),\n setUploadProgress: (fileId: string, progress: number) => this.fileUploadFakeStream.updateProgress(fileId, progress),\n setUploadFailed: (fileId: string) => this.fileUploadFakeStream.failUpload(fileId)\n }\n } as UploadFileEvent);\n }\n\n /**\n * Tracks and emits file upload progress events to parent component\n * @param event$ Upload progress event containing completion percentage\n * @public\n */\n public onFileUploadProgress(event$: UploadProgressEvent): void {\n this.fileUploadProgress.emit(event$);\n }\n\n /**\n * Handles successful file uploads and emits success event to parent component\n * @param event$ SuccessEvent containing upload result information\n * @public\n */\n public onFileUploadSuccess(event$: SuccessEvent): void {\n this.fileUploadSuccess.emit(event$);\n }\n\n /**\n * Handles file upload errors and emits error events to parent component\n * @param event$ ErrorEvent containing error information\n * @public\n */\n public onFileUploadError(event$: ErrorEvent): void {\n this.fileError.emit(event$);\n }\n\n /**\n * Closes the file preview dialog and resets all preview-related properties\n * @public\n */\n public onFilePreviewDialogClose(): void {\n this._isModalDialogOpened = false;\n this.filePreviewModalDialogData.ShowDialog = false;\n this.filePreviewModalDialogData.MediaFileData = undefined;\n this.filePreviewModalDialogData.ActiveIndex = 0;\n }\n\n /**\n * Handles file preview item selection changes by updating modal data\n * and loading the selected file's content\n * @param event$ Item change event containing selected item information\n * @public\n */\n public selectedFilePreview(event$: ItemChangedEvent): void {\n this.filePreviewModalDialogData.MediaFileData = event$.item;\n this.filePreviewModalDialogData.ActiveIndex = event$.index;\n this._loadFileData(event$.item);\n }\n\n /**\n * Creates a safe URL for file content display\n * @param url Raw URL string to be sanitized\n * @returns SafeUrl object that can be used in DOM\n * @public\n */\n public getSafeUrl(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustUrl(url);\n }\n\n //#region Private Helper Methods\n\n /**\n * Updates form control value with copied files while preventing view updates\n * @param files Array of files to set as control value\n * @private\n */\n private _setValuesToControl(files: FileInfoData[]): void {\n const copiedFiles = files?.map(file => ({...file} as FileInfoData)) ?? [];\n this.control.setValue(copiedFiles, {emitEvent: true, emitModelToViewChange: false});\n if (this.validateWithForm) {\n this.control.updateValueAndValidity();\n }\n }\n\n /**\n * Creates form validator function that checks if all files are properly uploaded\n * and valid according to validation rules\n * @returns ValidatorFn that validates file upload state and validation errors\n * @private\n */\n private _filesValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const files = control.value as FileInfoData[];\n if (!files?.length) {\n return null;\n }\n const isSomeOfFilesNotUploaded = files.some(x => x.state !== FileState.Uploaded);\n const isSomeOfFileAreInvalid = files.some(x => x.validationErrors?.length > 0);\n return isSomeOfFilesNotUploaded || isSomeOfFileAreInvalid ? {required: true} : null;\n };\n }\n\n /**\n * Validates selected files for uniqueness and custom validation rules\n * @param filesInfoData Array of files to validate\n * @private\n */\n private _onSelectFilesValidation(filesInfoData: FileInfoData[]): void {\n const allSelectedFiles = this.getAllFiles;\n filesInfoData.forEach(fileInfo => {\n if (!fileInfo.validationErrors || fileInfo.validationErrors.length === 0) {\n if (this.allowOnlyUniqFiles && this.fileUploadComponentService.isSameFileIsExist(fileInfo, allSelectedFiles)) {\n fileInfo.validationErrors = [nameOf('fileIsNotUnique')];\n return;\n }\n if (!!this.customFileValidation) {\n const validationResult = this.customFileValidation(fileInfo);\n if (!!validationResult) {\n this.uploadMessages.registerMessage([validationResult]);\n fileInfo.validationErrors = [validationResult.ErrorKey];\n }\n }\n }\n });\n }\n\n /**\n * Updates file information with MIME type and file type data\n * @param files Array of files to update\n * @private\n */\n private _adjustInformationForFilesOnSelect(files: FileInfoData[] | undefined): void {\n files?.forEach(fileDataInfo => {\n if (!fileDataInfo.rawFile) {\n return;\n }\n fileDataInfo.MimeType = fileDataInfo.rawFile.type;\n fileDataInfo.FileType = this.fileService.getFileType(fileDataInfo.rawFile.type);\n });\n }\n\n /**\n * Generates and configures thumbnail settings for media files\n * @returns ThumbnailParam object with configured settings\n * @private\n */\n private async _adjustFileHtmlData(files: FileInfoData[] | undefined): Promise {\n for (const fileInfoData of files) {\n try {\n let previewFileData = this.previewFilesData.find(x => x.FileInfoData.uid === fileInfoData.uid);\n if (!previewFileData) {\n previewFileData = {\n FileInfoData: fileInfoData,\n ThumbnailDataUrl: undefined,\n ContentDataUrl: undefined,\n IsError$: new BehaviorSubject(false),\n IsFileLoaded$: new BehaviorSubject(false),\n };\n this.previewFilesData.push(previewFileData);\n }\n if (this.showFilePreview) {\n await this.generatePreviewHtmlLogic(fileInfoData, previewFileData);\n }\n if (!fileInfoData.validationErrors || fileInfoData.validationErrors.length === 0) {\n if (!!fileInfoData.UploadDate) {\n setTimeout(() => this.fileUploadHtmlService.addUploadDateToFile(this.uploadComponentElementRef, fileInfoData));\n }\n if (!this.autoUpload && this.fileUploadComponentService.isFileHaveInitOrSelectState(fileInfoData)) {\n setTimeout(() => this.fileUploadHtmlService.addReadyToUploadInfo(this.uploadComponentElementRef,\n fileInfoData, this._readyToUploadStatusClassName));\n }\n if (this.allowDownload) {\n setTimeout(() => this.fileUploadHtmlService.addDownloadButton(this.uploadComponentElementRef,\n previewFileData, this._onFileDownload.bind(this)));\n }\n }\n } catch (e) {\n console.warn(e);\n }\n }\n }\n\n /**\n * Generates preview HTML elements for file uploads with media handling.\n * - Creates content URLs and thumbnails for media files\n * - Configures preview click handlers\n * - Manages file loading states\n * - Adds download buttons if enabled\n * @param fileInfoData File information with raw data and metadata\n * @param previewFileData Preview data for storing URLs and states\n * @returns Promise resolving when preview generation completes\n * @private\n */\n private async generatePreviewHtmlLogic(fileInfoData: FileInfoData, previewFileData: PreviewFileData): Promise {\n const contentDataUrl = previewFileData.ContentDataUrl ?? this._createObjectUrl(fileInfoData.rawFile);\n previewFileData.ContentDataUrl = contentDataUrl;\n previewFileData.IsFileLoaded$.next(!!contentDataUrl);\n if (this.fileUploadComponentService.isMediaFile(fileInfoData.FileType)) {\n if (!fileInfoData.ThumbnailFile && !!fileInfoData.rawFile) {\n fileInfoData.ThumbnailFile = await this.mediaFileService.generateThumbnail(\n fileInfoData.rawFile, this._thumbnailSettings);\n }\n if (!!fileInfoData.ThumbnailFile) {\n previewFileData.ThumbnailDataUrl = this._createObjectUrl(fileInfoData.ThumbnailFile);\n setTimeout(() => this.fileUploadHtmlService.addMediaFileThumbnail(this.uploadComponentElementRef,\n previewFileData, this._openPreview.bind(this, previewFileData)));\n return;\n }\n }\n setTimeout(() => this.fileUploadHtmlService.addFileIconClick(this.uploadComponentElementRef,\n previewFileData, this._openPreview.bind(this, previewFileData)));\n }\n\n /**\n * Initializes file preview modal dialog data structure\n * @returns FilePreviewModalDialogData object with default settings\n * @private\n */\n private _openPreview(previewFileData: PreviewFileData): void {\n const mediaDataIndex = this.previewFilesData.findIndex(x => x.FileInfoData.uid === previewFileData.FileInfoData.uid);\n if (mediaDataIndex === -1) {\n return;\n }\n this.filePreviewModalDialogData.MediaFileData = previewFileData;\n this.filePreviewModalDialogData.ActiveIndex = mediaDataIndex;\n this.filePreviewModalDialogData.Height$.next(this._getFilePreviewModalHeight());\n this.filePreviewModalDialogData.ShowDialog = true;\n this._loadFileData(previewFileData);\n setTimeout(() => this._isModalDialogOpened = true, 10);\n }\n\n /**\n * Handles file download requests by either using cached content or initiating a new download.\n * If file is already loaded, downloads immediately using cached data.\n * Otherwise, triggers loading process and downloads after content is available.\n * Updates download button state during the process.\n * @param previewFileData The file data object containing download information\n * @private\n */\n private _onFileDownload(previewFileData: PreviewFileData): void {\n if (previewFileData.IsFileLoaded$.getValue()) {\n saveAs(previewFileData.ContentDataUrl, previewFileData.FileInfoData.name);\n } else {\n this.fileUploadHtmlService.downloadButtonState(this.uploadComponentElementRef, previewFileData.FileInfoData.uid, true);\n this._loadFileData(previewFileData, (previewFileDataAfterDownload: PreviewFileData | undefined) => {\n if (!!previewFileDataAfterDownload) {\n saveAs(previewFileDataAfterDownload.ContentDataUrl, previewFileDataAfterDownload.FileInfoData.name);\n }\n this.fileUploadHtmlService.downloadButtonState(this.uploadComponentElementRef, previewFileData.FileInfoData.uid, false);\n });\n }\n }\n\n /**\n * Loads file data for preview, handling both cached and uncached scenarios.\n * Manages loading states and error handling during file download process.\n * @param previewFileData The file data to be loaded for preview\n * @param afterDownloadCallBack Optional callback to be executed after download completes\n * @private\n */\n private _loadFileData(previewFileData: PreviewFileData,\n afterDownloadCallBack?: (previewFileData: PreviewFileData | undefined) => void): void {\n if (!!previewFileData.ContentDataUrl) {\n previewFileData.IsError$.next(false);\n previewFileData.IsFileLoaded$.next(true);\n } else {\n if (!!this.fileDownloadProcessCallback) {\n try {\n previewFileData.IsError$.next(false);\n previewFileData.IsFileLoaded$.next(false);\n this.fileDownloadProcessCallback(previewFileData.FileInfoData.uid, (base64FileData: Base64FileData | undefined) => {\n if (!!base64FileData && !!base64FileData.Base64) {\n this.fileUploadComponentService.updateRawFileData(previewFileData.FileInfoData, base64FileData);\n previewFileData.ContentDataUrl = this._createObjectUrl(previewFileData.FileInfoData.rawFile);\n previewFileData.IsError$.next(false);\n previewFileData.IsFileLoaded$.next(true);\n if (!!afterDownloadCallBack) {\n afterDownloadCallBack(previewFileData);\n }\n } else {\n previewFileData.IsError$.next(false);\n previewFileData.IsFileLoaded$.next(true);\n if (!!afterDownloadCallBack) {\n afterDownloadCallBack(previewFileData);\n }\n }\n });\n } catch (error) {\n console.warn(error);\n previewFileData.IsError$.next(true);\n previewFileData.IsFileLoaded$.next(false);\n if (!!afterDownloadCallBack) {\n afterDownloadCallBack(previewFileData);\n }\n }\n } else {\n previewFileData.IsError$.next(true);\n previewFileData.IsFileLoaded$.next(false);\n if (!!afterDownloadCallBack) {\n afterDownloadCallBack(previewFileData);\n }\n }\n }\n }\n\n /**\n * Cleans up preview data for removed files by revoking object URLs\n * and removing them from the preview files collection\n * @param filesToRemove Array of files to be removed from preview\n * @private\n */\n private _clearPreviewFilesData(filesToRemove: FileInfoData[]): void {\n const fileIdsToRemove = filesToRemove.map(x => x.uid);\n const filePreviewsToDelete = this.previewFilesData.filter(x => fileIdsToRemove.includes(x.FileInfoData.uid));\n filePreviewsToDelete.forEach(filePreview => {\n if (!!filePreview.ContentDataUrl) {\n URL.revokeObjectURL(filePreview.ContentDataUrl);\n }\n if (!!filePreview.ThumbnailDataUrl) {\n URL.revokeObjectURL(filePreview.ThumbnailDataUrl);\n }\n });\n this.previewFilesData = this.previewFilesData.filter(x => !fileIdsToRemove.includes(x.FileInfoData.uid));\n }\n\n /**\n * Creates an object URL for a given file\n * @param file File object to create URL for\n * @returns Object URL string or undefined if no file provided\n * @private\n */\n private _createObjectUrl(file: File | undefined): string | undefined {\n return !!file ? URL.createObjectURL(file) : undefined;\n }\n\n /**\n * Updates the file preview modal height when modal is open\n * @private\n */\n private _resizeFilePreviewModal(): void {\n if (this._isModalDialogOpened) {\n this.filePreviewModalDialogData.Height$.next(this._getFilePreviewModalHeight());\n }\n }\n\n /**\n * Handles closing of file preview modal when clicking outside\n * @param eventTarget The DOM element that was clicked\n * @private\n */\n private _closeFilePreviewModal(eventTarget: EventTarget): void {\n if (this._isModalDialogOpened) {\n const element = document.querySelector('.k-window.k-dialog');\n if (!element) {\n return;\n }\n const dialogComponentElementRef = new ElementRef(element);\n if (!!dialogComponentElementRef && !dialogComponentElementRef.nativeElement.contains(eventTarget)) {\n this.filePreviewDialog.close.emit();\n }\n }\n }\n\n /**\n * Calculates the appropriate height for the file preview modal\n * based on view container dimensions\n * @returns Calculated modal height in pixels\n * @private\n */\n private _getFilePreviewModalHeight(): number {\n if (!this._viewContainer) {\n return this._defaultFilePreviewModalHeight;\n }\n return this._viewContainer.offsetHeight - 200;\n }\n\n /**\n * Configures thumbnail generation parameters\n * @returns ThumbnailParam object with predefined settings\n * @private\n */\n private _settingsForThumbnail(): ThumbnailParam {\n return {\n Width: 200,\n Height: 200,\n Quality: 0.2,\n MimeType: 'image/webp',\n Name: 'thumbnail.webp'\n };\n }\n\n /**\n * Initializes the file preview modal dialog data structure\n * with default values\n * @returns FilePreviewModalDialogData object with initial settings\n * @private\n */\n private _generateFilePreviewModalDialogData(): FilePreviewModalDialogData {\n return {\n ShowDialog: false,\n MediaFileData: undefined,\n ActiveIndex: 0,\n Height$: new BehaviorSubject(this._defaultFilePreviewModalHeight)\n };\n }\n\n //#endregion\n}\n","import {Injectable} from '@angular/core';\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';\nimport {Observable, of} from 'rxjs';\nimport {\n ApUploadFakeStreamService\n} from '../services/ap-file-upload-fake-stream.service';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {FileWithId} from '../types/ap-file-upload.types';\n\n/**\n * HTTP interceptor that handles file upload requests by providing fake upload streams\n * and managing file removal responses.\n * Intercepts requests to configured upload and remove URLs to simulate file operations.\n */\n@Injectable()\nexport class ApFileUploadInterceptor implements HttpInterceptor {\n constructor(private fileUploadFakeStreamService: ApUploadFakeStreamService) {\n }\n\n /**\n * Intercepts HTTP requests and handles file upload/remove operations:\n * - For upload requests: Returns a fake upload progress stream\n * - For remove requests: Returns immediate success response\n * - For all other requests: Passes through to next handler\n * @param req The outgoing HTTP request\n * @param next The next handler in the chain\n * @returns Observable of HttpEvents for the request\n */\n public intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (req.url === APP_CONFIGURATION.UploadSaveUrl) {\n const formData = req.body as FormData;\n const file = formData.get('files') as FileWithId;\n return this.fileUploadFakeStreamService.getUploadStream(file.uid);\n }\n if (req.url === APP_CONFIGURATION.UploadRemoveUrl) {\n return of(new HttpResponse({status: 200}));\n }\n return next.handle(req);\n }\n}\n","import {\n Directive,\n ElementRef,\n OnDestroy,\n HostListener,\n AfterContentInit, NgZone\n} from '@angular/core';\nimport {\n ControlContainer,\n FormControl\n} from '@angular/forms';\nimport {Subscription} from 'rxjs';\n\n/**\n * Agriport directive implementation for any reactiveForm control.\n * This directive tracks the control's changes and triggers a blink animation\n * if the value changes programmatically.\n */\n@Directive({\n selector: '[apControlBlinkOnChange]'\n})\nexport class ApControlBlinkDirective implements OnDestroy, AfterContentInit {\n private readonly ANIMATION_NAME = 'ap-form-control-blink-animation';\n private control: FormControl | null = null;\n private subscription: Subscription | null = null;\n private isFocused = false;\n private previousValue = undefined;\n\n @HostListener('focus')\n public onFocus(): void {\n this.isFocused = true;\n }\n\n @HostListener('blur')\n public onBlur(): void {\n this.isFocused = false;\n }\n @HostListener('animationend')\n public onAnimationEnd(): void {\n this.el?.nativeElement?.classList?.remove(this.ANIMATION_NAME);\n }\n\n constructor(private el: ElementRef,\n private ngZone: NgZone,\n private controlContainer: ControlContainer) {\n }\n\n /**\n * Initialize tracking of changes for a single control and start animation if\n * control does not have the focus and the value changes\n */\n public ngAfterContentInit(): void {\n const name = this.el?.nativeElement?.getAttribute('id');\n if (name && this.controlContainer.control) {\n this.control = this.controlContainer?.control?.get(name) as FormControl;\n }\n\n if (this.control == null) {\n return;\n }\n\n // animations activated just a little bit later to avoid unwanted flickering on initialization\n setTimeout(() => {\n\n // store initial value to be able to compare it with later values\n this.previousValue = this.control?.value;\n\n // backup-strategy: subscribe to valueChanges (triggered when user changes values)\n // The 'registerOnChange' is not always reliable there (e.g. for ComboBoxes)\n this.control?.valueChanges?.subscribe(value => {\n // track latest value if the user changed it (has focus)\n // we need this later on to compare it with potentially current values\n if (this.isFocused ) {\n this.previousValue = value;\n }\n });\n\n // The registerOnChange is more robust for changes coming from the code.\n // Those indirect changes are supposed to be highlighted by a blink animation\n this.control?.registerOnChange((value: string) => {\n if (this.isFocused ) {\n // store current value (changed by user) to be able to compare it with later values\n this.previousValue = value;\n return;\n }\n\n // if values are equal => no animation\n if (this.getValueRepresentation(this.previousValue) === this.getValueRepresentation(value)) {\n return;\n }\n\n this.previousValue = value;\n this.startAnimation();\n });\n }, 1000);\n }\n\n /**\n * Starts the blink animation for our control\n * @private\n */\n private startAnimation(): void {\n this.ngZone.run(() => {\n this.el?.nativeElement?.classList?.remove(this.ANIMATION_NAME);\n const _ = this.el.nativeElement.offsetHeight; // Force repaint to trigger animation\n setTimeout(() => {\n this.el?.nativeElement?.classList?.add(this.ANIMATION_NAME);\n }, 0);\n });\n }\n\n /**\n * Gets uniform value representation of the value.\n * Undefined/null and empty string are treated as same values\n * (to avoid blinking when switching between those values)\n * @param value\n * @private\n */\n private getValueRepresentation(value: string): string {\n if (value === undefined || value === null || value === '') {\n return undefined;\n }\n return value;\n }\n\n public ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.control = undefined;\n }\n}\n","import {ReactiveFormsModule} from '@angular/forms';\nimport {NgModule} from '@angular/core';\nimport {ApDynformsComponent} from './ap-dynforms.component';\nimport {ApDynformsElementComponent} from './ap-dynforms-element.component';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {DropDownsModule} from '@progress/kendo-angular-dropdowns';\nimport {DateInputsModule} from '@progress/kendo-angular-dateinputs';\nimport {InputsModule} from '@progress/kendo-angular-inputs';\nimport {CommonModule} from '@angular/common';\nimport {ApUtilsModule} from '../ap-utils';\nimport {ApSectionHeaderModule} from '../ap-section-header/ap-section-header.module';\nimport {ApResponsiveTextModule} from '../ap-responsive-text/ap-responsive-text.module';\nimport {ApDynformsArrayComponent} from './ap-dynforms-array.component';\nimport {LayoutModule} from '@progress/kendo-angular-layout';\nimport {SharedModule, UploadModule} from '@progress/kendo-angular-upload';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport {SanitizeIdPipe} from './sanitize-id.pipe';\nimport {ApDynformsDateRangeComponent} from './ap-dynforms-date-range.component';\nimport {PasswordStrengthComponent} from './components/password-strength.component';\nimport {ButtonsModule} from '@progress/kendo-angular-buttons';\nimport {ApFileUploadComponent} from './components/ap-file-upload/ap-file-upload.component';\nimport {DialogModule} from '@progress/kendo-angular-dialog';\nimport {IndicatorsModule} from '@progress/kendo-angular-indicators';\nimport {ApFileUploadInterceptor} from './interceptors/ap-file-upload.interceptor';\nimport {ApFileUploadMessagesDirective} from './derectives/ap-file-upload.derectives';\nimport {ScrollViewModule} from '@progress/kendo-angular-scrollview';\nimport {ApControlBlinkDirective} from './ap-control-blink.directive';\nimport {ApUploadFakeStreamService} from './services/ap-file-upload-fake-stream.service';\n\n\n@NgModule({\n imports: [\n ReactiveFormsModule,\n HttpClientModule,\n ApTranslationModule,\n DropDownsModule,\n DateInputsModule,\n InputsModule,\n ApSectionHeaderModule,\n CommonModule,\n ApUtilsModule,\n ApResponsiveTextModule,\n LayoutModule,\n UploadModule,\n ButtonsModule,\n SharedModule,\n DialogModule,\n IndicatorsModule,\n ScrollViewModule\n ],\n declarations: [\n ApDynformsComponent,\n ApDynformsElementComponent,\n ApDynformsArrayComponent,\n SanitizeIdPipe,\n ApDynformsDateRangeComponent,\n PasswordStrengthComponent,\n ApFileUploadComponent,\n ApFileUploadMessagesDirective,\n ApControlBlinkDirective\n ],\n exports: [\n ApDynformsComponent,\n ApDynformsElementComponent,\n PasswordStrengthComponent,\n ApFileUploadComponent,\n ApControlBlinkDirective\n ],\n providers: [\n ApUploadFakeStreamService,\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ApFileUploadInterceptor,\n multi: true\n },\n ]\n})\nexport class ApDynformsModule {\n}\n","import {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {EventEmitter} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {distinctUntilChanged} from 'rxjs/operators';\n\n/**\n * base configuration\n */\nexport class ApDynformsConfigBase {\n /**\n * the value of the selector\n */\n dataCy: string;\n /**\n * the value of the corresponding control\n */\n value: T;\n /**\n * observable value of the corresponding control\n */\n value$: Observable;\n /**\n * the reactive forms key (must be unique)\n */\n key: string;\n /**\n * translation key for the corresponding label\n */\n label: string;\n /**\n * observable translation key for the corresponding label\n */\n label$: Observable;\n /**\n * switch for enabling/disabling the control\n */\n disabled: boolean;\n /**\n * observable switch for enabling/disabling the control\n */\n disabled$: Observable;\n /**\n * controltype: textbox, checkbox, dropdown, ...\n */\n controlType: ApDynformsControltype;\n /**\n * a list of validators bound to the control\n */\n validators: ApDynformsValidator[];\n /**\n * a list of async validators bound to the control\n */\n asyncValidators: ApDynformsValidator[];\n /**\n * a list of all form errors depend on this control\n */\n formErrors: string[];\n /**\n * array of all observables that causes the validators to update\n */\n listenUpdate: Observable[];\n\n dependsOn: string[];\n /**\n * translation key for the info text\n */\n infoText: string;\n /**\n * a css class string added to the class attribute\n */\n cssClass = '';\n\n /**\n * Constructor: taking the control's configuration\n */\n constructor(options: {\n data_cy?: string,\n value?: T,\n value$?: Observable,\n key?: string,\n label?: string,\n label$?: Observable,\n disabled?: boolean,\n disabled$?: Observable;\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n valueChange?: EventEmitter,\n listenUpdate?: Observable[],\n dependsOn?: string[],\n formErrors?: string[],\n infoText?: string,\n cssClass?: string,\n } = {}) {\n this.dataCy = options.data_cy || '';\n this.value = options.value;\n this.value$ = options.value$ ? options.value$.pipe(distinctUntilChanged()) : undefined;\n this.key = options.key || '';\n this.label = options.label || '';\n this.label$ = options.label$;\n this.disabled = options.disabled || false;\n this.disabled$ = options.disabled$;\n this.validators = options.validators || [];\n this.asyncValidators = options.asyncValidators || [];\n this.listenUpdate = options.listenUpdate ? options.listenUpdate : [];\n this.dependsOn = options.dependsOn;\n this.formErrors = options.formErrors || [];\n this.infoText = options.infoText || '';\n this.cssClass = options.cssClass || '';\n }\n}\n\n/**\n * enum of all available control types.\n */\nexport enum ApDynformsControltype {\n /**\n * A regular input control\n */\n Textbox = 'textbox',\n /**\n * multiline Textarea input\n */\n Textarea = 'textarea',\n /**\n * kendo datepicker\n */\n DatePicker = 'datepicker',\n /**\n * kendo combobox control\n */\n ComboBox = 'combobox',\n /**\n * checkbox with applied ap-styles.\n */\n Checkbox = 'checkbox',\n /**\n * numerictexbox with applied ap-styles.\n */\n NumericTextbox = 'numerictexbox',\n /**\n * kendo multiselect control\n */\n MultiSelect = 'multiselect',\n /**\n * placeholder for better styling possibilities\n */\n Placeholder = 'placeholder',\n /**\n * kendo timepicker\n */\n Timepicker = 'timepicker',\n /**\n * label with icon\n */\n LabelIcon = 'labelicon',\n /**\n * form array\n */\n Array = 'array',\n /**\n * kendo upload\n */\n Upload = 'upload',\n /**\n * kendo file select\n */\n FileSelect = 'fileselect',\n /**\n * kendo date range picker\n */\n DateRange = 'daterange',\n /**\n * password strength indicator\n */\n PasswordStrength = 'passwordstrength',\n /**\n * injecting a template (templateRef) in our forms\n */\n Template = 'template',\n /**\n * kendo button within a form\n */\n Button = 'button'\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {EventEmitter} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n/**\n * configuration for dynForm element which allows inserting buttons in a dynForm\n */\nexport class ApDynformsConfigButton extends ApDynformsConfigBase {\n public controlType = ApDynformsControltype.Button;\n public callback: EventEmitter;\n public disabledButton$: Observable;\n\n constructor(options: {\n key?: string,\n value?: string,\n cssClass?: string,\n disabledButton$?: Observable,\n icon?: string,\n callback?: EventEmitter\n } = {}) {\n super(options);\n this.callback = options.callback;\n this.disabledButton$ = options.disabledButton$;\n this.cssClass = options.cssClass ? options.cssClass : 'ap-dynform-element-center';\n }\n}\n\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {Observable} from 'rxjs';\n\n/**\n * configuration for checkbox control\n */\nexport class ApDynformsConfigCheckbox extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.Checkbox;\n\n constructor(options: {\n value?: boolean,\n value$?: Observable,\n key?: string,\n label?: string,\n disabled?: boolean,\n disabled$?: Observable,\n infoText?: string,\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n listenUpdate?: Observable[],\n dependsOn?: string[],\n formErrors?: string[],\n cssClass?: string,\n } = {}) {\n super(options);\n this.infoText = options.infoText || '';\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {map} from 'rxjs/operators';\nimport {get} from 'lodash';\nimport {ApUtilService} from '../../ap-utils/service/ap-util.service';\nimport {ObjectFactory} from 'ts-tooling';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {TemplateRef} from '@angular/core';\nimport {groupBy, GroupResult} from '@progress/kendo-data-query';\n\n/**\n * configuration for dropdown control\n */\nexport class ApDynformsConfigComboBox extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.ComboBox;\n optionsIn: Observable = of([]);\n options: Observable = of([]);\n disabledOptions: Observable<(x) => boolean> = of(() => false);\n valueField: string;\n textField: string;\n valuePrimitive: boolean;\n placeholder: string;\n clearButton: boolean;\n loading$: Observable;\n noDataString: string;\n noDataTemplate: TemplateRef;\n groupByField: string;\n /**\n * \n * {{id}}\n * \n * @ViewChild('ComboBoxItem', {static: true}) comboBoxItem: TemplateRef;\n */\n itemTemplate: TemplateRef;\n\n private _filter = new BehaviorSubject('');\n\n constructor(options: {\n value?: any,\n value$?: Observable,\n key?: string,\n label?: string,\n disabled?: boolean,\n disabled$?: Observable,\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n listenUpdate?: Observable[],\n options?: any[] | Observable,\n disabledOptions?: ((x) => boolean) | Observable<(x) => boolean>,\n valueField?: string,\n textField?: string,\n valuePrimitive?: boolean,\n placeholder?: string,\n clearButton?: boolean,\n dependsOn?: string[],\n loading?: boolean | Observable,\n sort?: (1 | -1),\n formErrors?: string[],\n translate?: boolean,\n itemTemplate?: TemplateRef\n noData?: TemplateRef | string,\n cssClass?: string,\n infoText?: string,\n groupByField?: string\n } = {}) {\n super(options);\n this.infoText = options.infoText || '';\n this.valuePrimitive = options.valuePrimitive !== false;\n this.optionsIn = ApUtilService.asObservable(options.options, []);\n this.groupByField = options.groupByField;\n\n if (options.translate) {\n if (!options.textField) {\n this.optionsIn = this.optionsIn.pipe(\n map((d) => d.map((s) => ApTranslationService.translate(s)))\n );\n this.value = ApTranslationService.translate(this.value);\n } else {\n this.optionsIn = this.optionsIn.pipe(\n map((d) => d.map((o) => {\n o = ObjectFactory.Copy(o);\n o[this.textField] = ApTranslationService.translate(o[this.textField]);\n if (this.groupByField?.length >= 0) {\n o[this.groupByField] = ApTranslationService.translate(o[this.groupByField]);\n }\n return o;\n }))\n );\n }\n }\n\n if (options.sort) {\n this.optionsIn = this.optionsIn.pipe(\n map(d => ObjectFactory.Copy(d).sort((a, b) =>\n (!!this.textField ? get(a, options.textField)?.toLowerCase() < get(b, options.textField)?.toLowerCase() : a < b) ? -options.sort : options.sort\n ))\n );\n }\n\n // this.options = this.options_in;\n this.options = combineLatest([this.optionsIn, this._filter]).pipe(\n map(([oIn, filterString]) =>\n {\n const filterOptions = oIn.FindAll(o => ApDynformsConfigComboBox._containsFilter(o, filterString, this.textField));\n return options.groupByField?.length >= 0 ?\n groupBy(filterOptions, [\n { field: this.groupByField }\n ]) as GroupResult[] : filterOptions;\n }\n ));\n\n this.disabledOptions = ApUtilService.asObservable(options.disabledOptions, () => false);\n this.valueField = options.valueField;\n this.textField = options.textField;\n this.placeholder = options.placeholder;\n this.clearButton = options.clearButton === true;\n this.loading$ = ApUtilService.asObservable(options.loading, false);\n this.itemTemplate = options.itemTemplate;\n if (typeof options.noData === 'object') {\n this.noDataTemplate = options.noData;\n } else if (typeof options.noData === 'string') {\n this.noDataString = options.noData;\n }\n }\n\n private static _containsFilter(o: any, filterString: string, textField: string): boolean {\n if (typeof o !== typeof '') {\n o = get(o, textField);\n }\n if (typeof o !== typeof '') {\n return true;\n }\n return o.toLowerCase().indexOf(filterString.toLowerCase()) !== -1;\n }\n\n filterChange(filterString: string): void {\n this._filter.next(filterString);\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {Observable} from 'rxjs';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {ApUtilService} from '../../ap-utils/service/ap-util.service';\nimport {CalendarView} from '@progress/kendo-angular-dateinputs';\n\n/**\n * configuration for datepicker control\n */\nexport class ApDynformsConfigDatepicker extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.DatePicker;\n dateCellDyer: (date: Date) => boolean;\n format: string;\n minDate$: Observable;\n maxDate$: Observable;\n topView: CalendarView;\n bottomView: CalendarView;\n\n constructor(options: {\n value?: Date,\n value$?: Observable,\n key?: string,\n label?: string,\n disabled?: boolean,\n disabled$?: Observable,\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n listenUpdate?: Observable[],\n format?: string,\n minDate?: Date | Observable,\n maxDate?: Date | Observable,\n dateCellDyer?: (date: Date) => boolean,\n dependsOn?: string[],\n formErrors?: string[],\n topView?: CalendarView,\n bottomView?: CalendarView,\n cssClass?: string,\n infoText?: string,\n } = {}) {\n super(options);\n this.dateCellDyer = options.dateCellDyer;\n this.format = options.format || '';\n this.minDate$ = ApUtilService.asObservable(options.minDate);\n this.maxDate$ = ApUtilService.asObservable(options.maxDate);\n this.dependsOn = options.dependsOn;\n this.topView = options.topView ? options.topView : 'century';\n this.bottomView = options.bottomView ? options.bottomView : 'month';\n this.infoText = options.infoText || '';\n }\n}\n","import {ApDynformsConfigBase} from './ap-dynforms-config-base';\nimport {ApDynformsConfigArray} from './ap-dynforms-config-array';\nimport {TemplateRef} from '@angular/core';\n\n/**\n * configuration for fieldset\n */\nexport class ApDynformsConfigFieldset {\n /**\n * optional key for fieldset (will be used as id)\n */\n key: string;\n /**\n * translation key for fieldset's label\n */\n legend: string;\n /**\n * amount of fieldset columns.(default: 2)\n * controls are divided into specified amount of columns\n */\n columns: number;\n /**\n * translation key for the info text\n * will add an icon that will show translated description of text on icon hove\n */\n infoText: string;\n /**\n * additional text at which is displayed at top of the fieldset (translation key)\n */\n label: string;\n /**\n * a list of control configuration contained in this fieldset\n */\n config: ApDynformsConfigBase[] = [];\n /**\n * Indicates that fieldset columns should use all the available space.\n */\n useMaxWidth: boolean;\n /**\n * list of additional css class for fieldset\n */\n classList: string[];\n /**\n * Use column gap\n */\n columnGap: boolean;\n\n arrayConfig: ApDynformsConfigArray[] = [];\n\n before: TemplateRef | null;\n\n /**\n * Setting if translation should be generated async-way with observables\n */\n asyncTranslation: boolean;\n\n /**\n * Optional setting to hide the fieldset's legend line and text.\n * This is useful to build individual form layouts where some fieldsets\n * may have different amount of columns\n */\n hideLegend = false;\n\n /**\n * Constructor\n */\n constructor(options: {\n legend?: string,\n columns?: number,\n label?: string,\n key: string,\n infoText?: string,\n useMaxWidth?: boolean,\n config?: ApDynformsConfigBase[],\n arrayConfig?: ApDynformsConfigArray[],\n formErrors?: string[],\n columnGap?: boolean,\n before?: TemplateRef | null,\n classList?: string | string[],\n asyncTranslation?: boolean,\n hideLegend?: boolean\n }) {\n this.legend = options.legend;\n this.columns = options.columns || 2;\n this.config = options.config || [];\n this.label = options.label;\n this.infoText = options.infoText;\n this.key = options.key;\n this.useMaxWidth = options.useMaxWidth;\n this.arrayConfig = options.arrayConfig || [];\n this.columnGap = options.columnGap !== false;\n this.before = options.before || null;\n this.asyncTranslation = options.asyncTranslation === true;\n this.hideLegend = options.hideLegend === true;\n if (Array.isArray(options.classList)) {\n this.classList = options.classList;\n } else {\n this.classList = options.classList ? [options.classList] : [];\n }\n }\n\n get class(): string {\n return ['ap-fieldset'].concat(this.classList).reduce((a, b) => `${a} ${b}`, '');\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {Observable} from 'rxjs';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {map} from 'rxjs/operators';\nimport {get} from 'lodash';\nimport {ApUtilService} from '../../ap-utils/service/ap-util.service';\nimport {TemplateRef} from '@angular/core';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {ObjectFactory} from 'ts-tooling';\n\n/**\n * configuration for multiselect control\n */\nexport class ApDynformsConfigMultiSelect extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.MultiSelect;\n optionsIn: Observable;\n options: Observable;\n valueField: string;\n textField: string;\n valuePrimitive: boolean;\n placeholder: string;\n loading$: Observable;\n clearButton: boolean;\n noDataString: string;\n noDataTemplate: TemplateRef;\n\n private static _containsFilter(o: any, filterString: string, textField: string): boolean {\n if (typeof o !== typeof '') {\n o = get(o, textField);\n }\n if (typeof o !== typeof '') {\n return true;\n }\n return o.toLowerCase().indexOf(filterString.toLowerCase()) !== -1;\n }\n\n constructor(options: {\n value?: any[],\n value$?: Observable,\n key?: string,\n label?: string,\n disabled?: boolean,\n disabled$?: Observable,\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n listenUpdate?: Observable[]\n options?: any[] | Observable,\n valueField?: string,\n textField?: string,\n valuePrimitive?: boolean,\n placeholder?: string,\n translate?: boolean,\n loading$?: Observable,\n clearButton?: boolean,\n dependsOn?: string[],\n sort?: (1 | -1),\n formErrors?: string[],\n noData?: TemplateRef | string,\n cssClass?: string,\n } = {}) {\n super(options);\n this.optionsIn = ApUtilService.asObservable(options.options, []);\n if (options.translate) {\n if (!options.textField) {\n this.optionsIn = this.optionsIn.pipe(\n map((d) => d.map((s) => ApTranslationService.translate(s)))\n );\n this.value = ApTranslationService.translate(this.value);\n } else {\n this.optionsIn = this.optionsIn.pipe(\n map((d) => d.map((o) => {\n o = ObjectFactory.Copy(o);\n o[this.textField] = ApTranslationService.translate(o[this.textField]);\n return o;\n }))\n );\n }\n }\n if (options.sort) {\n this.optionsIn = this.optionsIn.pipe(\n map(d => d.sort((a, b) =>\n (options.valuePrimitive ? a < b : get(a, options.textField) < get(b, options.textField)) ? -options.sort : options.sort\n ))\n );\n }\n this.options = this.optionsIn;\n this.valueField = options.valueField || '';\n this.textField = options.textField || '';\n if (options.valuePrimitive !== undefined) {\n this.valuePrimitive = options.valuePrimitive;\n } else {\n this.valuePrimitive = true;\n }\n this.placeholder = options.placeholder;\n this.loading$ = options.loading$;\n this.clearButton = options.clearButton ? options.clearButton : false;\n if (typeof options.noData === 'object') {\n this.noDataTemplate = options.noData;\n } else if (typeof options.noData === 'string') {\n this.noDataString = options.noData;\n }\n }\n\n filterChange(filterString: string): void {\n this.options = this.optionsIn.pipe(\n map(oIn => oIn.filter(o => ApDynformsConfigMultiSelect._containsFilter(o, filterString, this.textField)))\n );\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {combineLatest, Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {ApUtilService} from '../../ap-utils/service/ap-util.service';\nimport NumberFormatOptions = Intl.NumberFormatOptions;\n\n/**\n * configuration for numerictextbox control\n */\nexport class ApDynformsConfigNumerictextbox extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.NumericTextbox;\n format: string | NumberFormatOptions;\n spinners: boolean;\n decimals: number;\n step: Observable;\n min: Observable;\n max: Observable;\n autoCorrect = true;\n placeholder: string;\n readonly: boolean;\n\n constructor(options: {\n value?: number,\n value$?: Observable,\n key?: string,\n label?: string,\n label$?: Observable,\n disabled?: boolean,\n disabled$?: Observable,\n decimals?: number,\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n listenUpdate?: Observable[],\n format?: string,\n spinners?: boolean,\n step?: number | Observable,\n min?: number | Observable,\n max?: number | Observable,\n autoCorrect?: boolean,\n minimumFractionDigits?: number,\n maximumFractionDigits?: number,\n dependsOn?: string[],\n dynamicSteps?: number | Observable,\n formErrors?: string[],\n infoText?: string,\n cssClass?: string,\n placeholder?: string,\n readonly?: boolean\n } = {}) {\n super(options);\n this.spinners = options.spinners === undefined ? true : options.spinners;\n\n this.min = ApUtilService.asObservable(options.min);\n this.max = ApUtilService.asObservable(options.max);\n this.autoCorrect = options.autoCorrect !== false;\n this.infoText = options.infoText || '';\n this.placeholder = options.placeholder || '';\n this.readonly = !!options.readonly;\n\n if (options.step !== undefined) {\n this.step = ApUtilService.asObservable(options.step);\n } else if (options.dynamicSteps !== undefined) {\n const dynamicStep = ApUtilService.asObservable(options.dynamicSteps);\n this.step = combineLatest([this.min, this.max, dynamicStep]).pipe(\n map(([min, max, step]) => {\n if (min !== null && max !== null) {\n return Math.abs(max - min) * step;\n } else {\n return undefined;\n }\n }),\n );\n } else {\n this.step = of(1);\n }\n\n this.decimals = options.decimals;\n if (options.format) {\n this.format = options.format;\n } else if (options.minimumFractionDigits !== undefined || options.maximumFractionDigits !== undefined) {\n this.format = {\n maximumFractionDigits: options.maximumFractionDigits,\n minimumFractionDigits: options.minimumFractionDigits,\n };\n } else if (options.decimals !== undefined) {\n this.format = `n${this.decimals}`;\n }\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\n\n/**\n * configuration for placeholder control\n */\nexport class ApDynformsConfigPlaceholder extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.Placeholder;\n\n constructor(options: {\n key?: string,\n label?: string} = {}) {\n super(options);\n }\n}\n","import {ApDynformsConfigFieldset} from './ap-dynforms-config-fieldset';\nimport {Observable} from 'rxjs';\nimport {ApUtilService} from '../../ap-utils/service/ap-util.service';\n\nexport class ApDynformsConfigTabs {\n title: string;\n selected: boolean;\n fieldSets: ApDynformsConfigFieldset[];\n disabled: Observable;\n disabledFn: (x) => Observable;\n\n constructor(options: {\n title?: string,\n selected?: boolean,\n fieldSets?: ApDynformsConfigFieldset[];\n disabled?: boolean | Observable | ((x) => Observable)\n } = {}) {\n this.title = options.title;\n this.selected = options.selected || false;\n this.fieldSets = options.fieldSets;\n if (options.disabled instanceof Function) {\n this.disabledFn = options.disabled;\n } else {\n this.disabled = ApUtilService.asObservable(options.disabled);\n }\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {TemplateRef} from '@angular/core';\n\n/**\n * configuration for dynForm element which allows to inject templates from parent component\n * into our fieldset structure\n */\nexport class ApDynformsConfigTemplate extends ApDynformsConfigBase> {\n public controlType = ApDynformsControltype.Template;\n\n constructor(options: {\n key?: string,\n value?: TemplateRef,\n cssClass?: string\n } = {}) {\n super(options);\n }\n}\n\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {Observable} from 'rxjs';\n\n/**\n * configuration of textarea\n */\nexport class ApDynformsConfigTextarea extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.Textarea;\n rows = 4;\n\n constructor(options: {\n value?: any,\n value$?: Observable,\n key?: string,\n label?: string,\n disabled?: boolean,\n disabled$?: Observable,\n rows?: number,\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n dependsOn?: string[],\n formErrors?: string[],\n cssClass?: string,\n } = {}) {\n super(options);\n this.rows = options.rows;\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {Observable} from 'rxjs';\n\nexport enum ApDynformsConfigTextboxType {\n Password = 'password',\n Text = 'text',\n Hidden = 'hidden',\n Url = 'url',\n Number = 'number',\n Email = 'email'\n}\n\n/**\n * configuration of textbox\n */\nexport class ApDynformsConfigTextbox extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.Textbox;\n type: string;\n autocomplete: string;\n\n constructor(options: {\n value?: any,\n value$?: Observable,\n key?: string,\n label?: string,\n disabled?: boolean,\n disabled$?: Observable,\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n listenUpdate?: Observable[],\n type?: ApDynformsConfigTextboxType,\n dependsOn?: string[],\n formErrors?: string[],\n cssClass?: string,\n autocomplete?: string\n } = {}) {\n super(options);\n this.type = options.type || ApDynformsConfigTextboxType.Text;\n this.autocomplete = options.autocomplete;\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {Observable} from 'rxjs';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {TimePickerIncrementalSteps} from '@progress/kendo-angular-dateinputs';\nimport {ApUtilService} from '../../ap-utils/service/ap-util.service';\n\n/**\n * configuration for datepicker control\n */\nexport class ApDynformsConfigTimepicker extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.Timepicker;\n format: string;\n minDate$: Observable;\n maxDate$: Observable;\n nowButton: boolean;\n steps?: TimePickerIncrementalSteps;\n\n constructor(options: {\n value?: Date,\n value$?: Observable,\n key?: string,\n label?: string,\n disabled?: boolean,\n disabled$?: Observable,\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n listenUpdate?: Observable[],\n format?: string,\n hSteps?: number,\n minSteps?: number,\n secSteps?: number,\n minDate?: Date | Observable,\n maxDate?: Date | Observable,\n nowButton?: boolean,\n dependsOn?: string[],\n formErrors?: string[],\n cssClass?: string,\n } = {}) {\n super(options);\n this.format = options.format || '';\n this.nowButton = options.nowButton;\n this.minDate$ = ApUtilService.asObservable(options.minDate);\n this.maxDate$ = ApUtilService.asObservable(options.maxDate);\n this.dependsOn = options.dependsOn;\n this.steps = {\n hour: options.hSteps || 1,\n minute: options.minSteps || 1,\n second: options.secSteps || 1\n };\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {FileDownloadProcessCallback, FileValidationCallback} from '../types/ap-file-upload.types';\n\n/**\n * configuration for upload control\n */\nexport class ApDynformsConfigUpload extends ApDynformsConfigBase {\n controlType = ApDynformsControltype.Upload;\n autoUpload: boolean;\n uploadSaveUrl: string;\n uploadRemoveUrl: string;\n withCredentials: boolean;\n uploadProgressEventHandler: any;\n style: any;\n successEventHandler: any;\n uploadEventHandler: any;\n errorEventHandler: any;\n removeEventHandler: any;\n restrictions: any;\n dropFilesHereText: string;\n selectText: string;\n uploadSelectedFilesText: string;\n clearSelectedFilesText: string;\n multiple: boolean;\n showFilePreview: boolean;\n validateWithForm: boolean;\n onlyUniqueFiles: boolean;\n allowDownload: boolean;\n downloadFileCallback: FileDownloadProcessCallback | undefined;\n customFileValidation: FileValidationCallback | undefined;\n\n constructor(options: {\n key?: string,\n value?: any,\n autoUpload?: boolean,\n uploadSaveUrl?: string,\n uploadRemoveUrl?: string,\n withCredentials?: boolean,\n uploadProgressEventHandler?: any,\n style?: any,\n successEventHandler?: any,\n uploadEventHandler?: any,\n errorEventHandler?: any,\n removeEventHandler?: any;\n restrictions?: any,\n minFileSize?: number,\n maxFileSize?: number,\n dropFilesHereText?: string,\n selectText?: string,\n uploadSelectedFilesText?: string,\n clearSelectedFilesText?: string,\n disabled?: boolean,\n multiple?: boolean,\n showFilePreview?: boolean,\n validateWithForm?: boolean,\n onlyUniqueFiles?: boolean,\n allowDownload?: boolean,\n downloadFileCallback?: FileDownloadProcessCallback,\n customFileValidation?: FileValidationCallback\n } = {}) {\n super(options);\n this.uploadSaveUrl = options.uploadSaveUrl || APP_CONFIGURATION.UploadSaveUrl;\n this.uploadRemoveUrl = options.uploadRemoveUrl || APP_CONFIGURATION.UploadRemoveUrl;\n this.selectText = options.selectText || 'kendo.upload.select';\n this.uploadSelectedFilesText = options.uploadSelectedFilesText || 'UploadUpload';\n this.clearSelectedFilesText = options.clearSelectedFilesText || 'Global__Cancel';\n this.dropFilesHereText = options.dropFilesHereText || 'kendo.upload.dropFilesHere';\n this.disabled = options.disabled || false;\n this.autoUpload = options.autoUpload || false;\n this.multiple = options.multiple || true;\n this.showFilePreview = options.showFilePreview || false;\n this.validateWithForm = options.validateWithForm || true;\n this.onlyUniqueFiles = options.onlyUniqueFiles || false;\n this.allowDownload = options.allowDownload || false;\n this.style = options.style || 'background-color: transparent;';\n this.removeEventHandler = options.removeEventHandler || ((_: any) => true);\n this.uploadEventHandler = options.uploadEventHandler || ((_: any) => true);\n this.errorEventHandler = options.errorEventHandler || ((_: any) => true);\n this.successEventHandler = options.successEventHandler || ((_: any) => true);\n this.uploadProgressEventHandler = options.uploadProgressEventHandler || ((_: any) => true);\n this.restrictions = this._setRestrictions(options) || {allowedExtensions: ['.txt', '.csv']};\n this.downloadFileCallback = options.downloadFileCallback || undefined;\n this.customFileValidation = options.customFileValidation || undefined;\n }\n\n private _setRestrictions(options: any): any | undefined {\n if (!options.restrictions && !Number.isFinite(options.maxFileSize) && !Number.isFinite(options.minFileSize)) {\n return undefined;\n }\n return {\n allowedExtensions: options.restrictions,\n maxFileSize: options.maxFileSize,\n minFileSize: options.minFileSize\n };\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FileService} from '../../services/common/file.service';\nimport {Base64FileData, FileInfoData} from '../types/ap-file-upload.types';\nimport {FileType} from '../../types/file.types';\nimport {FileState} from '@progress/kendo-angular-upload';\n\n/**\n * Service for managing file upload component operations and file data transformations.\n * Provides utilities for file handling, validation, and state management.\n */\n@Injectable({providedIn: 'root'})\nexport class ApFileUploadComponentService {\n constructor(private fileService: FileService) {\n }\n\n /**\n * Creates a FileInfoData object from file content and metadata\n * @param id Unique identifier for the file\n * @param uploadDate Optional date when file was uploaded\n * @param content Base64 encoded file content and metadata\n * @param thumbnail Optional base64 encoded thumbnail data\n * @returns FileInfoData object with complete file information\n * @public\n */\n public createFileInfoData(id: string, uploadDate: Date | undefined,\n content: Base64FileData, thumbnail?: Base64FileData): FileInfoData {\n const fileExtension = content.FileName.split('.').pop();\n const fileInfoData = {\n uid: id,\n name: `${content.FileName}`,\n extension: `.${fileExtension}`,\n size: content.Size,\n MimeType: content.MimeType,\n FileType: this.fileService.getFileType(content.MimeType),\n UploadDate: uploadDate\n } as FileInfoData;\n this.updateRawFileData(fileInfoData, content);\n if (!!thumbnail.MimeType && !!thumbnail.Base64) {\n const thumbnailFileExtension = this._getExtensionFromMimeType(thumbnail.MimeType);\n fileInfoData.ThumbnailFile = this.fileService.base64StringToFileData(`thumbnail.${thumbnailFileExtension}`,\n thumbnail.MimeType, thumbnail.Base64);\n } else {\n fileInfoData.ThumbnailFile = undefined;\n }\n return fileInfoData;\n }\n\n /**\n * Updates raw file data in FileInfoData object using base64 content\n * @param fileInfoData FileInfoData object to update\n * @param content Base64 encoded file content and metadata\n * @public\n */\n public updateRawFileData(fileInfoData: FileInfoData, content: Base64FileData): void {\n if (!!content.MimeType && !!content.Base64) {\n const file = this.fileService.base64StringToFileData(content.FileName, content.MimeType, content.Base64);\n fileInfoData.rawFile = file;\n fileInfoData.size = file.size;\n }\n }\n\n /**\n * Checks if file type is either image or video\n * @param fileType FileType to check\n * @returns boolean indicating if file is media type\n * @public\n */\n public isMediaFile(fileType: FileType): boolean {\n return fileType === FileType.Image || fileType === FileType.Video;\n }\n\n /**\n * Checks if a file already exists in a collection based on name, size, and type\n * @param fileToCompare File to check for duplicates\n * @param compareWith Array of files to compare against\n * @returns boolean indicating if duplicate exists, if true = exist\n * @public\n */\n public isSameFileIsExist(fileToCompare: FileInfoData, compareWith: FileInfoData[]): boolean {\n if (!fileToCompare || !compareWith || compareWith.length <= 0) {\n return false;\n }\n return compareWith.some(x => {\n return fileToCompare.name === x.name\n && fileToCompare.size === x.size\n && fileToCompare.rawFile?.type === x.MimeType;\n });\n }\n\n /**\n * Checks if file is in Initial or Selected state\n * @param fileInfoData File to check state\n * @returns boolean indicating if file is in Initial or Selected state\n * @public\n */\n public isFileHaveInitOrSelectState(fileInfoData: FileInfoData | undefined): boolean {\n return fileInfoData?.state === FileState.Initial || fileInfoData?.state === FileState.Selected;\n }\n\n /**\n * Modifies HTTP subscription properties to prevent enumeration issues\n * Makes specific subscription properties non-enumerable to avoid circular reference problems\n * @param files Array of files whose HTTP subscriptions need modification\n * @remarks\n * For cases when need to use JSON.stringify\n * @public\n */\n public modifyHttpSubscriptionProperties(files: FileInfoData[] | undefined): void {\n files?.forEach(file => {\n if (!file.httpSubscription) {\n return;\n }\n const subscription = file.httpSubscription;\n const propsToHandle = ['_parentage', '_teardowns', 'destination'];\n propsToHandle.forEach(prop => {\n const descriptor = Object.getOwnPropertyDescriptor(subscription, prop);\n if (descriptor && descriptor.enumerable !== false) {\n Object.defineProperty(subscription, prop, {\n ...descriptor,\n enumerable: false\n });\n }\n });\n });\n }\n\n /**\n * Extracts file extension from MIME type\n * @param mimeType MIME type string\n * @returns File extension without leading dot\n * @private\n */\n private _getExtensionFromMimeType(mimeType: string): string {\n return mimeType.split('/')[1];\n }\n}\n","import {FormGroup, ValidatorFn} from '@angular/forms';\n\n/**\n * Form validator: Validates the range of 2 dates (from/to).\n */\nexport class ApDateRangeValidator {\n static ValidateDateRange(dateFromControlName: string, dateToControlName: string): ValidatorFn {\n return (formGroup: FormGroup): { [key: string]: boolean } | null => {\n if (!formGroup) {\n return null;\n }\n\n const dateFromControl = formGroup.get(dateFromControlName);\n const dateToControl = formGroup.get(dateToControlName);\n if (!dateFromControl || !dateToControl) {\n return null;\n }\n\n const dateFrom = dateFromControl.value as Date;\n const dateTo = dateToControl.value as Date;\n if (dateFrom == null || dateTo == null) {\n return null;\n }\n\n if (dateFrom > dateTo) {\n return {ValidateDateRange: false};\n }\n\n return null;\n };\n }\n}\n","import {AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn} from '@angular/forms';\nimport {Observable, Subject} from 'rxjs';\nimport {catchError, first, map, tap} from 'rxjs/operators';\n\nexport const INVALID_ID = 'InvalidId::';\n\nexport class ApValidator {\n static validate(validatorFn: ValidatorFn, errorMessage: string, invalidIds?: Subject): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const result = validatorFn(control);\n this._sendItemIds(result, invalidIds);\n if (result) {\n return this._errorObject(errorMessage, result);\n }\n return result;\n };\n }\n\n static validateAsync(asyncValidatorFn: AsyncValidatorFn, errorMessage: string, invalidIds?: Subject): AsyncValidatorFn {\n return (control: AbstractControl): Promise | Observable => {\n const result = asyncValidatorFn(control);\n if (result) {\n if (result instanceof Observable) {\n return result\n .pipe(\n tap(r => this._sendItemIds(r, invalidIds)),\n map(r => r ? this._errorObject(errorMessage, result) : null),\n catchError(() => null),\n first(() => true),\n );\n } else if (result instanceof Promise) {\n return result\n .then(r => {\n this._sendItemIds(r, invalidIds);\n return new Promise((resolve) => resolve(r ? this._errorObject(errorMessage, result) : r));\n })\n .catch(() => {\n this._sendItemIds(null, invalidIds);\n return new Promise((resolve) => resolve(null));\n });\n }\n }\n return result;\n };\n }\n\n private static _errorObject(errorMessage: string, errorMetaData: any): { [key: string]: any } {\n const errorObject = {};\n errorObject[errorMessage] = errorMetaData;\n return errorObject;\n }\n\n private static _sendItemIds(result: ValidationErrors, invalidIds: Subject): void {\n if (invalidIds) {\n if (result) {\n invalidIds.next(\n Object.keys(result).filter(r => r.startsWith(INVALID_ID)).map(r => r.substring(INVALID_ID.length)));\n } else {\n invalidIds.next([]);\n }\n }\n }\n}\n","import {\n CompositeFilterDescriptor,\n DataResult,\n filterBy,\n FilterDescriptor,\n GroupDescriptor,\n process,\n SortDescriptor,\n State\n} from '@progress/kendo-data-query';\nimport {ExcelExportData} from '@progress/kendo-angular-excel-export';\nimport {\n ApDynGridColumnConfigBase,\n ApDynGridColumnControlType\n} from '../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport * as moment from 'moment';\nimport {BehaviorSubject} from 'rxjs';\nimport {IWizardChoiceData, IWizardChoiceDataValue, IWizardProperties} from '../../../ap-interface';\nimport {DataStateChangeEvent, PageChangeEvent, SelectAllCheckboxState} from '@progress/kendo-angular-grid';\nimport {APP_CONFIGURATION} from '../../config';\nimport {\n SortSettings\n} from '@progress/kendo-angular-grid/dist/es2015/columns/sort-settings';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {\n ApDynGridPropertyColumnConfig,\n PropertyTemplate\n} from '../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n GetRoundNumericService\n} from '../../../ap-utils/service/get-round-numeric.service';\nimport {ApDateService} from '../../services/ap-date-service';\nimport IGuid = System.IGuid;\n\n// TODO: implement in ts-tooling and replace it\nfunction flatArray(arr: any[]): any[] {\n const tmp = [];\n for (const element of arr) {\n if (Array.isArray(element)) {\n tmp.AddRange(element);\n continue;\n }\n tmp.Add(element);\n }\n return tmp;\n}\n\nexport type IdValue = number | string | IGuid;\n\nexport interface IApKendoGridDataSource {\n Id: IdValue;\n}\n\n/**\n * kendo grid extension\n */\nexport class ApKendoGridExtension {\n public keyColumn = 'Id';\n\n public filterableColumns: string[] = [];\n\n public onSelectedChange = new BehaviorSubject([]);\n public onSelectedItemChange = new BehaviorSubject([]);\n\n private readonly _sortBySelectionField = 'IsApSelectedInternal_dynGrid_';\n private readonly _sortBySelectionDescriptor: SortDescriptor[] = [{field: this._sortBySelectionField, dir: 'desc'}];\n public sortBySelection = false;\n\n /**\n * kendo grid Properties\n */\n public selectAllState: SelectAllCheckboxState = 'unchecked';\n public columns: ApDynGridColumnConfigBase[];\n public groups: GroupDescriptor[] = [];\n public filter: CompositeFilterDescriptor;\n public sort: SortDescriptor[] = [];\n public gridView: DataResult = {data: [], total: 0};\n public gridView$ = new BehaviorSubject(this.gridView);\n public items: T[] = [];\n public unfilteredItems: T[] = [];\n public pageSize = APP_CONFIGURATION.GridPageSize;\n public skip = 0;\n public selectedKeys: IdValue[] = [];\n public pageable = true;\n public reorderable = false;\n public sortable: SortSettings = {\n mode: 'single',\n };\n public moment = moment;\n\n public state: State = {\n skip: this.skip,\n take: this.pageSize,\n group: this.groups,\n sort: this.sort\n };\n\n constructor(private dateService: ApDateService,\n private roundNumericService: GetRoundNumericService,\n sortSettings: SortSettings = null) {\n this.getAllDataForExcel = this.getAllDataForExcel.bind(this);\n this.getSelectedDataForExcel = this.getSelectedDataForExcel.bind(this);\n if (sortSettings != null) {\n this.sortable = sortSettings;\n }\n }\n\n /**\n * get selected items\n */\n public get selectedItems(): T[] {\n return this.onSelectedItemChange.getValue();\n }\n\n private static _extractGroups(columns: ApDynGridColumnConfigBase[]): ApDynGridColumnConfigBase[] {\n return columns.filter(c => c.type !== ApDynGridColumnControlType.ColumnGroup).concat(columns\n .filter(c => c.type === ApDynGridColumnControlType.ColumnGroup)\n .map(c => c as ApDynGridGroupColumnConfig)\n .reduce((agg, c) => agg.concat(ApKendoGridExtension._extractGroups(c.groupColumns)), []));\n }\n\n /**\n * init\n */\n public init(data: T[], _: ApDynGridColumnConfigBase[], skip: number = this.skip, limit: number = this.pageSize): void {\n ApKendoGridExtension._extractGroups(this.columns)\n .filter((c) => c.type === ApDynGridColumnControlType.Property)\n .map((c) => c as ApDynGridPropertyColumnConfig)\n .filter((c) => c.template !== PropertyTemplate.NONE)\n .forEach((c) => {\n switch (c.template) {\n case PropertyTemplate.NUMBER:\n data = data.map((d) => {\n d = ObjectFactory.Copy(d);\n const original: number = ObjectFactory.Get(d, c.field.Replace('Rounded', ''));\n ObjectFactory.Set(d, c.field, !isNaN(+original) ? this.roundNumericService.roundAsNumber(original) : original);\n return d;\n });\n break;\n case PropertyTemplate.DATE:\n data = data.map((d) => {\n d = ObjectFactory.Copy(d);\n const original: Date = ObjectFactory.Get(d, c.field.Replace('Midnight', ''));\n ObjectFactory.Set(d, c.field, this.dateService.getDateMidnight(original));\n return d;\n });\n break;\n }\n });\n\n this.setSelectedKeys([]);\n this.items = data;\n this.unfilteredItems = data;\n this.skip = skip;\n this.pageSize = limit;\n this.loadData();\n }\n\n public setDefaultFilter(columns: ApDynGridColumnConfigBase[]): void {\n const filters = this._flatColumns(columns)\n .filter((c) => c?.defaultFilter !== undefined);\n this.filter = {\n filters: filters.map((f) => {\n return {\n field: f.field,\n operator: f.defaultFilter === null ? 'isnull' : 'eq',\n value: f.defaultFilter\n };\n }),\n logic: 'and',\n };\n }\n\n public columnChange(columns: ApDynGridColumnConfigBase[]): void {\n this.filterableColumns = this._getFilterColumns(columns);\n this.setDefaultFilter(columns);\n const groups = this._getGroups(columns);\n if (!ObjectFactory.Equal(groups, this._getGroups())) {\n this.groups = groups;\n }\n const sort = this._getSort(columns);\n if (!ObjectFactory.Equal(sort, this._getSort())) {\n this.sort = sort;\n }\n this.columns = columns;\n this.loadData();\n }\n\n public getDescriptors(): { filter: CompositeFilterDescriptor, groups: GroupDescriptor[], sort: SortDescriptor[] } {\n return {\n filter: this.filter,\n groups: this.groups,\n sort: this.sort,\n };\n }\n\n public setDescriptors(descriptors: {\n filter: CompositeFilterDescriptor,\n groups: GroupDescriptor[],\n sort: SortDescriptor[]\n }): void {\n if (descriptors) {\n this.onFilterChange(descriptors.filter);\n this.groupChange(descriptors.groups);\n this.sortChange(descriptors.sort);\n }\n }\n\n public _getSort(columns?: ApDynGridColumnConfigBase[]): SortDescriptor[] {\n return this._getSortBySelectionDescriptor().concat(this._flatColumns(columns ? columns : this.columns)\n .filter(c => c.sortIndex !== undefined)\n .sort((a, b) => a.sortIndex - b.sortIndex)\n .map((prop: ApDynGridPropertyColumnConfig) => ({\n field: prop.field,\n dir: prop.sortDesc ? 'desc' : 'asc'\n })));\n }\n\n /**\n * group change event\n */\n public groupChange(groups: GroupDescriptor[]): void {\n this.groups = this.groups.filter(x => groups.some(y => x.field === y.field && y.dir !== undefined));\n this.groups.forEach(x => x.dir = groups.find(y => x.field === y.field).dir);\n this.groups = this.groups.concat(groups.filter(y => !this.groups.some(x => x.field === y.field)));\n this.loadData();\n }\n\n /**\n * sort change event\n */\n public sortChange(sort: SortDescriptor[]): void {\n this.sort = this.sort.filter(x => sort.some(y => x.field === y.field && y.dir !== undefined));\n this.sort.forEach(x => x.dir = sort.find(y => x.field === y.field).dir);\n this.sort = this.sort.concat(sort.filter(y => !this.sort.some(x => x.field === y.field)));\n this.sort = this._getSortBySelectionDescriptor().concat(this.sort.filter(s => s.dir !== undefined));\n this.loadData();\n }\n\n /**\n * data state change event\n */\n public dataStateChange(state: DataStateChangeEvent): void {\n this.state = state;\n this.loadData();\n }\n\n /**\n * refresh the datasource\n */\n public refresh(): void {\n setTimeout(() => {\n this.loadData();\n }, 1);\n }\n\n /**\n * on page change event\n */\n public pageChange($event: PageChangeEvent): void {\n this.skip = $event.skip;\n this.pageSize = $event.take;\n this.loadItems();\n }\n\n /**\n * on selected keys change event\n */\n public onSelectedKeysChange(keys: IdValue[]): void {\n this.onSelectedChange.next(keys);\n this.onSelectedItemChange.next(this.items.FindAll(i => this.selectedKeys.Contains(i[this.keyColumn])));\n this._setSelectAllState();\n this.updateGridView();\n }\n\n public setSelectedKeys(keys: any[], validateKeys = false): void {\n if (!keys) {\n keys = [];\n }\n const selectedItems = this.items.FindAll(i => keys?.Contains(i[this.keyColumn]));\n // incoming keys might not match with the grid items. This might be the case when\n // map-selection has been used but the fieldId is not present in the current grid\n // => selecting valid(found) grid items, only:\n if (validateKeys) {\n keys = selectedItems?.map(i => i[this.keyColumn]);\n // in case the selected keys remain same => skip the update to avoid:\n // - flickering (map)\n // - unintended 'selectionChange' events when in fact nothing changed\n if (this.selectedKeys && keys && JSON.stringify(this.selectedKeys) === JSON.stringify(keys)) {\n return;\n }\n }\n this.selectedKeys = keys;\n this.onSelectedChange.next(keys);\n this.onSelectedItemChange.next(selectedItems);\n this._setSelectAllState();\n }\n\n /**\n * on selected all change event\n */\n public onSelectAllChange(checkedState: SelectAllCheckboxState): void {\n if (checkedState === 'checked') {\n this.selectAllState = 'checked';\n this.setSelectedKeys(process(this.items, {filter: this.filter}).data.map((item) => item.Id));\n } else {\n this.selectAllState = 'unchecked';\n this.setSelectedKeys([]);\n }\n }\n\n public onFilterChange(filter: CompositeFilterDescriptor): void {\n this.filter = filter;\n this.setSelectedKeys(process(this.selectedItems, {filter: this.filter}).data.map(i => i.Id));\n this.updateGridView();\n }\n\n public filterChange(filterText: string): void {\n this.skip = 0;\n const columnFilters: FilterDescriptor[] = [];\n for (const column of this.filterableColumns) {\n this._flatColumns(this.columns)\n .FindAll((c) => c.type === ApDynGridColumnControlType.Property)\n .FindAll((c: ApDynGridPropertyColumnConfig) => c.headerFilterable)\n .FindAll((c: ApDynGridPropertyColumnConfig) => c.field === column)\n .forEach((c: ApDynGridPropertyColumnConfig) => {\n columnFilters.push({\n field: column,\n operator: this._getOperator(c, filterText),\n value: filterText\n });\n });\n }\n\n this.items = filterBy(this.unfilteredItems, {\n logic: 'or',\n filters: columnFilters,\n } as CompositeFilterDescriptor);\n\n this.updateGridView();\n this._setSelectAllState();\n }\n\n public getAllDataForExcel(): ExcelExportData {\n return {\n data: process(this.items, {\n sort: this.sort,\n }).data\n };\n }\n\n public getSelectedDataForExcel(): ExcelExportData {\n let itemsForExport = this.selectedItems;\n if (!itemsForExport || itemsForExport?.length <= 0) {\n itemsForExport = this.items;\n }\n return {\n data: process(itemsForExport, {\n sort: this.sort,\n }).data\n };\n }\n\n isWizardChoiceDisabled(dataItem: IWizardChoiceData | IWizardChoiceDataValue): boolean {\n if (!dataItem) {\n return false;\n }\n if (dataItem.disabled instanceof Function) {\n return dataItem.disabled({\n selectedKeys: this.selectedKeys,\n selectedItems: this.selectedItems\n } as IWizardProperties);\n } else if (dataItem.disabled) {\n return dataItem.disabled;\n }\n return false;\n }\n\n private _flatColumns(columns: ApDynGridColumnConfigBase[]): ApDynGridColumnConfigBase[] {\n if (!columns) {\n return [];\n }\n return flatArray(columns.map(c => {\n if (c.type === ApDynGridColumnControlType.ColumnGroup) {\n return this._flatColumns((c as ApDynGridGroupColumnConfig).groupColumns);\n } else {\n return c;\n }\n }));\n }\n\n private _getFilterColumns(columns?: ApDynGridColumnConfigBase[]): string[] {\n return this._flatColumns(columns ? columns : this.columns)\n .filter(c => c.headerFilterable)\n .map((prop: ApDynGridPropertyColumnConfig) => prop.field);\n }\n\n private _getGroups(columns?: ApDynGridColumnConfigBase[]): GroupDescriptor[] {\n return this._flatColumns(columns ? columns : this.columns)\n .filter(c => c.groupIndex !== undefined)\n .sort((a, b) => a.groupIndex - b.groupIndex)\n .map((prop: ApDynGridPropertyColumnConfig) => ({\n field: prop.field,\n dir: prop.groupDesc ? 'desc' : 'asc'\n }));\n }\n\n /**\n * load data\n */\n private loadData(): void {\n if (this.items === null) {\n this.gridView = {\n data: null,\n total: null\n };\n this.gridView$.next(this.gridView);\n return;\n } else {\n this.updateGridView();\n }\n }\n\n private loadItems(): void {\n this.updateGridView();\n }\n\n public updateGridView(): void {\n if (!this.items) {\n this.gridView = {\n data: null,\n total: null\n };\n this.gridView$.next(this._copyGridView(this.gridView));\n return;\n }\n this.state.skip = this.skip;\n this.state.take = this.pageSize;\n this.state.group = this.groups;\n this.state.sort = this.sort;\n this.state.filter = this.filter;\n this.gridView = process(this.items.FindAll(i => !!i), this.state);\n this.gridView$.next(this._copyGridView(this.gridView));\n }\n\n /**\n * Safe method to copy a gridView.\n * There were rare cases where JSON.stringify (within ObjectFactory.Copy(...)) was raising an\n * 'Invalid string length' exception. The reason this might be too large arrays.\n * So instead of using ObjectFactory.Copy(this.gridView) we use this method to copy each data\n * element one after another.\n * @param sourceGridView\n * @private\n */\n private _copyGridView(sourceGridView: DataResult): DataResult {\n if (sourceGridView == null || sourceGridView.data?.length <= 0) {\n return {data: [], total: 0};\n }\n const gridViewCopy = {data: [], total: sourceGridView.total};\n gridViewCopy.data = new Array(sourceGridView.data.length);\n for (let i = 0; i < sourceGridView.data.length; i++) {\n gridViewCopy.data[i] = ObjectFactory.Copy(sourceGridView.data[i]);\n }\n return gridViewCopy;\n }\n\n private _getOperator(column: ApDynGridPropertyColumnConfig, filterText: string): (value: any) => boolean {\n const item = this.unfilteredItems.find((i) => ObjectFactory.Get(i, column.field));\n if (typeof ObjectFactory.Get(item, column.field) === typeof new Date()) {\n if (column && column.format) {\n return (value) => moment(value).format(column.format).includes(filterText.toLowerCase());\n }\n }\n return (value) => String(value).includes(filterText.toLowerCase());\n }\n\n private _setSelectAllState(): void {\n this._updateSelectionState();\n const data = process(this.items, {filter: this.filter}).data;\n if (data.length === 0 || this.selectedKeys.length === 0) {\n this.selectAllState = 'unchecked';\n } else if (data.length === this.selectedKeys.length) {\n this.selectAllState = 'checked';\n } else {\n this.selectAllState = 'indeterminate';\n }\n }\n\n private _updateSelectionState(): void {\n if (!this.sortBySelection) {\n return;\n }\n for (const item of this.items) {\n item[this._sortBySelectionField] = this.selectedKeys?.Contains(item[this.keyColumn]);\n }\n }\n\n private _getSortBySelectionDescriptor(): SortDescriptor[] {\n if (!this.sortBySelection) {\n return [];\n }\n return this._sortBySelectionDescriptor;\n }\n}\n","import {\n Workbook,\n WorkbookSheet,\n WorkbookSheetColumn,\n WorkbookSheetRow,\n WorkbookSheetRowCell\n} from '@progress/kendo-angular-excel-export';\nimport {\n ApDynGridPropertyColumnConfig,\n PropertyTemplate\n} from './config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridDetailsGridConfig\n} from './config/details/ap-dyn-grid-details-grid-config';\nimport {ApDynGridColumnConfigBase} from './config/ap-dyn-grid-column-config-base';\nimport {ObjectFactory} from 'ts-tooling';\nimport {orderBy, SortDescriptor} from '@progress/kendo-data-query';\nimport {saveAs} from '@progress/kendo-file-saver';\nimport {\n ApDynGridGroupColumnConfig\n} from './config/ap-dyn-grid-group-column-config';\nimport {firstValueFrom} from 'rxjs';\nimport {ExcelExportEvent} from '@progress/kendo-angular-grid';\nimport {\n ApKendoGridExtension\n} from '../ap-core/extensions/kendo/ap-kendo-grid-extension';\nimport {\n ApTranslationService\n} from '../ap-utils/service/ap-translation.service';\nimport {\n ApDynGridDetailsBaseConfig\n} from './config/details/ap-dyn-grid-details-base-config';\n\n/**\n * Service for Kendo-To-Excel Export handling Master-Detail Grids\n */\nexport class ApDyngridsExcelService {\n private readonly _agriconShowHiddenProperties: boolean;\n private readonly _gridPaging: ApKendoGridExtension;\n private readonly _translationService: ApTranslationService;\n\n constructor(agriconShowHiddenProperties: boolean,\n gridPaging: ApKendoGridExtension,\n translationService: ApTranslationService) {\n this._agriconShowHiddenProperties = agriconShowHiddenProperties;\n this._gridPaging = gridPaging;\n this._translationService = translationService;\n }\n\n /**\n * Performs export of given master columns and their details to Excel\n * @param eventArgs\n * @param columns\n * @param details\n * @param xlsExportFileName\n */\n public async exportAsExcel(eventArgs: ExcelExportEvent,\n columns: ApDynGridColumnConfigBase[],\n details: ApDynGridDetailsBaseConfig,\n xlsExportFileName: string): Promise {\n const workbook = eventArgs.workbook as Workbook;\n const workSheetMaster = workbook.sheets[0];\n const workBookRows = workbook.sheets[0]?.rows as WorkbookSheetRow[];\n const dataRows = this._gridPaging?.getSelectedDataForExcel()?.data;\n\n // update excel sheet name and document's data\n workSheetMaster.name = this._translationService.translate('Data');\n workbook.options = {\n creator: 'Agricon GmbH',\n date: new Date()\n };\n\n // replace boolean values for better reading in final excel\n this.replaceBooleanValues(columns, workSheetMaster);\n\n // Get the default header styles.\n // Aternatively set custom styles for the details\n // https://www.telerik.com/kendo-angular-ui/components/excelexport/api/WorkbookSheetRowCell/\n const headerOptions = workBookRows[0].cells[0];\n const detailsGridConfig = details as ApDynGridDetailsGridConfig;\n const detailsField = detailsGridConfig?.field;\n const detailColumns: ApDynGridColumnConfigBase[] = detailsGridConfig?.columns?.filter(_ => _.xlsExport === true);\n\n // in case the grid is shown in admin mode (Strg-Alt-Space) all properties of the model are going to be exported\n this.addHiddenColumnsForAdmins(dataRows, detailsField, detailColumns);\n\n // Count rows with 'header' type\n const headerRows = workBookRows.FindAll(x => x?.type === 'header');\n const headerRowsCount = headerRows ? headerRows.length : 0;\n\n // handle master-detail grid (if any)\n if (detailsField?.length > 0 && detailColumns?.length > 0) {\n const workSheetDetails = ObjectFactory.Copy(workSheetMaster);\n // Copying header rows first\n if (headerRows) {\n workSheetDetails.rows = ObjectFactory.Copy(headerRows);\n }\n workSheetDetails.name = this._translationService.translate('Global__Details');\n await this.injectDetailHeaders(detailColumns, workSheetDetails, headerOptions);\n const detailsSort: SortDescriptor[] = this._gridPaging._getSort(detailColumns);\n for (let mainRowIdx = 0; mainRowIdx < dataRows.length; mainRowIdx++) {\n // add the detail data\n const detailsData = dataRows[mainRowIdx][detailsField] as any[];\n if (detailsData?.length <= 0) {\n workSheetDetails.rows.push(ObjectFactory.Copy(workBookRows[mainRowIdx + headerRowsCount]));\n continue;\n }\n const detailsSorted = orderBy(detailsData, detailsSort);\n for (const detailDataObject of detailsSorted) {\n const rowWithDetails = ObjectFactory.Copy(workBookRows[mainRowIdx + headerRowsCount]);\n this.injectDetailValues(detailColumns, rowWithDetails, detailDataObject);\n workSheetDetails.rows.push(rowWithDetails);\n }\n }\n\n workbook.sheets.push(workSheetDetails);\n\n // Extracting master grid column width from grid and applying the values\n const columnsArray: WorkbookSheetColumn[] = [];\n await this._getColumnsWidthArrayUsingConfig(columns, columnsArray);\n for (let i = 0; i < columnsArray.length; i++) {\n workSheetDetails.columns[i] = columnsArray[i];\n }\n }\n\n // download to client\n this.downloadXls(xlsExportFileName, workbook);\n }\n\n /**\n * Replaces actual boolean values which would appear as \"WAHR\" or \"FALSCH\" in Excel with\n * \"X\" (=true) or nothing for false\n * @param columns\n * @param workSheetMaster\n * @private\n */\n private replaceBooleanValues(columns: ApDynGridColumnConfigBase[], workSheetMaster: WorkbookSheet): void {\n for (let cIdx = 0; cIdx < columns.length; cIdx++) {\n const propertyColumnConfig = columns[cIdx] as ApDynGridPropertyColumnConfig;\n if (propertyColumnConfig?.checkbox === true) {\n for (let rIdx = 1; rIdx < workSheetMaster.rows.length; rIdx++) {\n if (workSheetMaster.rows[rIdx].cells[cIdx].value === true) {\n workSheetMaster.rows[rIdx].cells[cIdx].value = 'X';\n } else {\n workSheetMaster.rows[rIdx].cells[cIdx].value = '';\n }\n }\n }\n }\n }\n\n /**\n * Gets columns width as array to be used in Workbook.columns (type WorkbookSheetColumn)\n * @param columns array of ApDynGridColumnConfigBase from DynForm configuration of grid\n * @param result output array of column configuration for Kendo XLS export\n * @param isGroupColumn By default false. this flag is used in recursion to detect group column\n * @private\n */\n private async _getColumnsWidthArrayUsingConfig(columns: ApDynGridColumnConfigBase[], result: WorkbookSheetColumn[], isGroupColumn = false): Promise {\n const columnsExport = columns.FindAll(_ => _.xlsExport === true);\n for (const column of columnsExport) {\n const groupColumn = column as ApDynGridGroupColumnConfig;\n if (!!groupColumn && groupColumn?.groupColumns?.length > 0) {\n await this._getColumnsWidthArrayUsingConfig((column as ApDynGridGroupColumnConfig)?.groupColumns, result, true);\n continue;\n }\n\n const isAutoWidth = column.width <= 0 || isGroupColumn;\n result.push({\n autoWidth: isAutoWidth,\n index: result.length,\n width: !isAutoWidth ? column.width : undefined\n });\n }\n }\n\n /**\n * Writes column header names for details\n * @param detailColumns\n * @param workSheetDetails\n * @param detailHeaderOptions\n * @param groupPrefix\n * @private\n */\n private async injectDetailHeaders(detailColumns: ApDynGridColumnConfigBase[], workSheetDetails: WorkbookSheet,\n detailHeaderOptions: WorkbookSheetRowCell, groupPrefix: string = ''): Promise {\n const headerRow = workSheetDetails.rows[0];\n const detailColumnsExport = detailColumns.FindAll(_ => _.xlsExport === true);\n for (const detailColumn of detailColumnsExport) {\n const groupColumn = detailColumn as ApDynGridGroupColumnConfig;\n if (!!groupColumn && groupColumn?.groupColumns?.length > 0) {\n let groupColumnTitle = await firstValueFrom(groupColumn.title);\n if (groupColumnTitle?.length > 0) {\n groupColumnTitle = this._translationService.translate(groupColumnTitle);\n }\n await this.injectDetailHeaders((detailColumn as ApDynGridGroupColumnConfig)?.groupColumns,\n workSheetDetails, detailHeaderOptions, `${groupColumnTitle}: `);\n continue;\n }\n\n let columnTitle = (detailColumn as any)?.title;\n if (columnTitle?.length > 0) {\n columnTitle = this._translationService.translate(columnTitle);\n }\n if (!columnTitle) {\n columnTitle = '';\n }\n // Creating dedicated columns for the details\n // The column width is used from grid definition, except\n // for group columns => there we need autoWidth to fit the longer header\n const isAutoWidth = detailColumn.width <= 0 || groupPrefix?.length > 0;\n workSheetDetails.columns.push({\n autoWidth: isAutoWidth,\n index: workSheetDetails.columns.length,\n width: !isAutoWidth ? detailColumn.width : undefined\n });\n headerRow.cells.push(Object.assign({}, detailHeaderOptions, {value: `${groupPrefix}${columnTitle}`, wrap: true}));\n }\n }\n\n /**\n * Writes cell values from details into excel workbook\n * @param detailColumns\n * @param rowWithDetails\n * @param detailDataObject\n * @private\n */\n private injectDetailValues(detailColumns: ApDynGridColumnConfigBase[], rowWithDetails: WorkbookSheetRow, detailDataObject: any): void {\n for (const detailColumn of detailColumns.FindAll(_ => _.xlsExport === true)) {\n if ((detailColumn as ApDynGridGroupColumnConfig)?.groupColumns?.length > 0) {\n const groupColumn: ApDynGridGroupColumnConfig = detailColumn as ApDynGridGroupColumnConfig;\n this.injectDetailValues(groupColumn.groupColumns, rowWithDetails, detailDataObject);\n continue;\n }\n let fieldName = detailColumn.field;\n if ((detailColumn as ApDynGridPropertyColumnConfig)?.template === PropertyTemplate.NUMBER) {\n fieldName = fieldName?.Replace('Rounded', '');\n } else if ((detailColumn as ApDynGridPropertyColumnConfig)?.template === PropertyTemplate.DATE) {\n fieldName = fieldName?.Replace('Midnight', '');\n }\n rowWithDetails.cells.push({\n value: fieldName?.length > 0 ? ObjectFactory.Get(detailDataObject, fieldName) : ''\n });\n }\n }\n\n /**\n * Triggers Excel Workbook download to client\n * @param xlsExportFileName\n * @param workbook\n * @private\n */\n private downloadXls(xlsExportFileName: string, workbook: Workbook): void {\n const xlsFilename = this._agriconShowHiddenProperties ?\n `${new Date().toISOString().split('.')[0]}_${document?.body?.querySelector('.ap-main-view > div > *:not(router-outlet)')?.nodeName?.toLowerCase()}.xlsx`\n : xlsExportFileName;\n // create a Workbook and save the generated data URL\n new Workbook(workbook).toDataURL().then((dataUrl: string) => {\n saveAs(dataUrl, xlsFilename);\n });\n }\n\n /**\n * For Admins: in case the grid is shown in admin mode (Strg-Alt-Space) all properties of the model are going to be exported\n * @param dataRows\n * @param detailsField\n * @param detailColumns\n * @private\n */\n private addHiddenColumnsForAdmins(dataRows: any[], detailsField: string, detailColumns: ApDynGridColumnConfigBase[]): void {\n if (this._agriconShowHiddenProperties) {\n const dataWithDetailsObject = dataRows.FirstOrDefault(_ => _[detailsField]?.length > 0);\n if (dataWithDetailsObject && dataWithDetailsObject[detailsField]?.length > 0) {\n const hiddenDetailsProperties = Object.getOwnPropertyNames(dataWithDetailsObject[detailsField][0]);\n for (const hiddenDetailsProperty of hiddenDetailsProperties) {\n if (detailColumns.Any(_ => _.field === hiddenDetailsProperty)) {\n continue;\n }\n detailColumns.push(new ApDynGridPropertyColumnConfig(\n {\n title: hiddenDetailsProperty,\n field: hiddenDetailsProperty\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 \n \n \n \n \n \n {{(gridColumn | asProperty).title | translate}}:\n {{((gridColumn | asProperty).format ?\n (value | date: ((gridColumn | asProperty).format | getKendoDateFormat)) : value)\n | execPipes:gridColumn:'pipes' | async}}\n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n {{(gridColumn | asClassColor).title | translate}}: {{value | execPipes:gridColumn:'pipes' | async}}\n \n \n\n \n \n \n \n \n\n \n \n \n \n \n {{(gridColumn | asColor).title | translate}}: {{value | execPipes:gridColumn:'pipes' | async}}\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 \n \n \n \n \n \n \n \n {{(groupColumn | asClassColor).title | translate}}: {{value | execPipes:groupColumn:'pipes' | async}}\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n {{(groupColumn | asProperty).title | translate}}:\n {{((groupColumn | asProperty).format ?\n (value | date: ((groupColumn | asProperty).format | getKendoDateFormat)) : value)\n | execPipes:gridColumn:'pipes' | async}}\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 \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
\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 {{pdfExportTitle | translate}}\n \n \n  \n \n
\n
\n
\n {{'Global__Company' | translate}}: {{(farm$ | async).FarmName}}\n
\n
\n {{'Global__CustomerNum' | translate}}: {{(farm$ | async).CustomerNumber}}\n
\n
\n
\n \"Agriport\"\n
\n
\n
\n {{'AgriConnect_Page' | translate}} {{ pageNum }} {{'kendo.grid.pagerOf' | translate}} {{ totalPages }}\n
\n {{'Global__CreatedAt' | translate}}\n : {{(null | getLocalDate).format((languageStore.SelectedLanguage$ | async).DateFormat)}}\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 \n \n \n\n \n \n \n \n \n \n
\n\n \n \n \n \n \n \n\n \n
\n\n \n
\n {{item.text}}\n
\n
\n \n
\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ApKendoGridExtension,\n IdValue\n} from '../ap-core/extensions/kendo/ap-kendo-grid-extension';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {\n ApDynGridColumnConfigBase,\n ApDynGridColumnControlType\n} from './config/ap-dyn-grid-column-config-base';\nimport {IGridPagerData, IWizardChoiceData, MapViewMode} from '../ap-interface';\nimport {\n ApDynGridPagerConfigBase,\n ApDynGridPagerControlType\n} from './config/ap-dyn-grid-pager-config-base';\nimport {\n ApDynGridPagerWizardConfig,\n ApDynGridPagerWizardSectionType\n} from './config/ap-dyn-grid-pager-wizard-config';\nimport {\n ApDynGridGroupColumnConfig\n} from './config/ap-dyn-grid-group-column-config';\nimport {\n IDynGridWizardChoiceData,\n IDynGridWizardChoiceDataValue,\n IGridPagerChoiceSelect\n} from './config/ap-dyn-grid-pager-config';\nimport {\n ApDynformsConfigFieldset\n} from '../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApGridPagerComponent\n} from '../ap-core/components/ap-grid-pager/ap-grid-pager.component';\nimport {get, isEqual} from 'lodash';\nimport {\n ApDynformsConfigTabs\n} from '../ap-dynforms/config/ap-dynforms-config-tabs';\nimport {debounceTime, filter, map} from 'rxjs/operators';\nimport {\n Trace\n} from '../debug-utils/ApplicationTracer';\nimport {\n AsPagerPipe\n} from './pipes/convert/as-pager.pipe';\nimport {\n AsWizardButtonPipe\n} from './pipes/convert/as-wizard-button.pipe';\nimport {\n AsWizardExportPipe\n} from './pipes/convert/as-wizard-export.pipe';\nimport {\n ColumnBase,\n ColumnGroupComponent,\n ExcelExportEvent,\n GridComponent,\n RowArgs,\n RowClassArgs,\n SelectableSettings,\n SelectionEvent\n} from '@progress/kendo-angular-grid';\nimport {\n SettingsStore\n} from '../stores/base-data/settings.store';\nimport {\n LoginStore\n} from '../stores/login/login.store';\nimport {\n MapViewStore\n} from '../stores/layout/mapview.store';\nimport {\n LanguageStore\n} from '../stores/translation/language.store';\nimport {\n ApDynGridDetailsBaseConfig,\n ApDynGridDetailsConfigType\n} from './config/details/ap-dyn-grid-details-base-config';\nimport {\n PopupSettings as ButtonPopupSettings\n} from '@progress/kendo-angular-buttons';\nimport {\n ApCalendarView\n} from '../ap-utils/enums/ApCalendarView';\nimport {FormGroup} from '@angular/forms';\nimport {\n ApGridWizardComponent\n} from '../ap-core/components/ap-grid-wizard/ap-grid-wizard.component';\nimport {\n FilterType\n} from './config/ap-dyn-grid-property-column-config';\nimport {\n ApDateService\n} from '../ap-core/services/ap-date-service';\nimport {\n GetRoundNumericService\n} from '../ap-utils/service/get-round-numeric.service';\nimport {\n ScrollMode\n} from '@progress/kendo-angular-grid/dist/es2015/scrolling/scrollmode';\nimport {Clipboard} from '@angular/cdk/clipboard';\nimport {\n ApTranslationService\n} from '../ap-utils/service/ap-translation.service';\nimport {\n ApDyngridsExcelService\n} from './ap-dyngrids-excel.service';\nimport IFarm = Data.Authentication.IFarm;\nimport {\n SortSettings\n} from '@progress/kendo-angular-grid/dist/es2015/columns/sort-settings';\nimport {ApRoleTypeService} from '../services/common/ap-role-type.service';\nimport {ApMapInstance} from '../ap-map';\nimport {ApWindowHelperService} from '../ap-core/services/ap-window-helper.service';\n\n// TODO: implement in ts-tooling and replace it\nfunction flatArray(arr: any[]): any[] {\n const tmp = [];\n for (const element of arr) {\n if (Array.isArray(element)) {\n tmp.AddRange(element);\n continue;\n }\n tmp.Add(element);\n }\n return tmp;\n}\n\nlet observer;\n\n/**\n * TODO InlineEdit für Tranlsation ermöglichen --> Jira Ticket angelegt https://jira.agricon.de/browse/APV49-822\n *\n * text-align: center;\n * display: flex;\n * align-items: center;\n * justify-content: center;\n */\n@Component({\n selector: 'ap-dyngrids',\n templateUrl: './ap-dyngrids.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ApDynGridsComponent implements OnInit, OnDestroy, AfterContentInit, AfterViewInit, OnChanges {\n\n @ViewChild('grid', {static: true}) grid: GridComponent;\n @ViewChild('gridPager', {static: false}) gridPager: ApGridPagerComponent;\n public ApDynGridColumnControlType = ApDynGridColumnControlType;\n public ApDynGridPagerControlType = ApDynGridPagerControlType;\n public ApDynGridPagerWizardSectionType = ApDynGridPagerWizardSectionType;\n public ApDynGridDetailsConfigType = ApDynGridDetailsConfigType;\n public gridSelectableSettings = new BehaviorSubject({});\n public FilterTypes = FilterType;\n @Input() columns: ApDynGridColumnConfigBase[];\n @Input() details: ApDynGridDetailsBaseConfig;\n @Input() items: any[];\n @Input() loading$: Observable;\n @Input() pager: ApDynGridPagerConfigBase = new ApDynGridPagerConfigBase();\n @Input() level = 0;\n @Input() exportFileName: string;\n @Input() pdfExportFileName: string;\n @Input() pdfExportTitle = '';\n @Input() xlsExportFileName: string;\n @Input() caption = '';\n @Input() headerIcon;\n @Input() headerSvg;\n @Input() filterTooltip = '';\n @Input() canSearch = false;\n @Input() canCreate = false;\n @Input() reorderable = false;\n @Input() pageable = true;\n @Input() groupable = true;\n @Input() sortBySelection = false;\n @Input() rowSelected: (e: RowArgs) => boolean;\n @Input() set selectable(selectableSetting: SelectableSettings) {\n this.gridSelectableSettings.next(\n this.calculateSelectableSettings(selectableSetting, ApMapInstance.isDebugModeEnabled));\n }\n get selectable(): SelectableSettings {\n return this.gridSelectableSettings?.value;\n }\n @Input() errorKeys: string[];\n @Input() canInlineEdit = false;\n @Input() checkboxDisabled = false;\n @Input() scrollable: ScrollMode;\n @Input() sortable: SortSettings;\n @Input() hideHeader = false;\n /**\n * In case our grid is embedded within a ng-template @ViewChild cannot get an instance\n * of our grid. The instance is needed to handle selection etc.\n * The property can be access from html-template and provides the grid's instance\n * through the BehaviorSubject\n */\n @Input() componentReference$: BehaviorSubject;\n @Output() edit = new EventEmitter();\n @Output() selectionChange = new EventEmitter();\n @Output() create = new EventEmitter();\n @Output() initialized = new EventEmitter(true);\n public gridPaging = new ApKendoGridExtension(this.dateService, this.roundNumericService);\n public mapViewModes = MapViewMode;\n public calendarView = ApCalendarView;\n public mapViewState$: Observable;\n public farm$: Observable;\n public formDefaultValue$: Observable;\n public pagerFormConfig: ApDynformsConfigFieldset[] | ApDynformsConfigTabs[] = undefined;\n public pagerKeyWizardChoice: IDynGridWizardChoiceData = null;\n public pagerValueWizardChoice: IDynGridWizardChoiceDataValue = null;\n public _agriconShowHiddenProperties = false;\n public _agriconHiddenProperties: string[] = [];\n public checkboxColumnWidth = 30;\n public commandColumnWidth = 37;\n public wizardSubject$ = new BehaviorSubject(undefined);\n dropDownButtonPopupSettings: ButtonPopupSettings = {\n align: 'right',\n animate: true,\n popupClass: 'ap-kendo-dropdown-button'\n };\n public widthHiddenColumns$ = new BehaviorSubject([]);\n public pagerHeight$ = new BehaviorSubject(0);\n private _agriconIsControlKeyDown = false;\n private _isControlKeyDown = false;\n private _agriconTextToCopy = '';\n private _subscriptions: Subscription[] = [];\n private _viewWidth$ = new BehaviorSubject(0);\n private _viewHeight$ = new BehaviorSubject(0);\n\n constructor(private mapViewStore: MapViewStore,\n public languageStore: LanguageStore,\n public asPagerPipe: AsPagerPipe,\n public asWizardButtonPipe: AsWizardButtonPipe,\n public settingsStore: SettingsStore,\n public asWizardExportPipe: AsWizardExportPipe,\n private loginStore: LoginStore,\n private dateService: ApDateService,\n private roundNumericService: GetRoundNumericService,\n private clipboard: Clipboard,\n private translationService: ApTranslationService,\n private windowHelperService: ApWindowHelperService) {\n if (this.sortable != null) {\n this.gridPaging.sortable = this.sortable;\n }\n this.gridPaging.sortBySelection = this.sortBySelection;\n }\n\n /**\n * Do some magic after everything has been initialized\n */\n ngAfterContentInit(): void {\n // In case the debug mode is enabled (available for Agricon admins only)\n // hidden columns will be shown as well\n this._subscriptions.push(this.loginStore.Listen(s => s.isDebugModeEnabled).subscribe(isDebugModeEnabled =>\n {\n this._agriconShowHiddenProperties = isDebugModeEnabled;\n this.toggleHiddenProperties();\n // update selectable settings depending on debugMode on/off\n this.gridSelectableSettings.next(this.calculateSelectableSettings(this.selectable, isDebugModeEnabled));\n }));\n }\n\n @ViewChild(ApGridWizardComponent, {static: false})\n set DynGrid(wizard: ApGridWizardComponent) {\n this.wizardSubject$.next(wizard);\n }\n\n private get _WidthHideColumns(): any[] {\n return flatArray(this.columns\n .map(c => {\n if (c.type === ApDynGridColumnControlType.ColumnGroup) {\n return [c, ...(c as ApDynGridGroupColumnConfig).groupColumns];\n }\n return [c];\n }))\n .filter((c: ApDynGridColumnConfigBase) => !c.hide.mapHide && !this.widthHiddenColumns$.value.Any(hc => {\n return c.equals(hc);\n }) && c.hide.widthHidePriority !== undefined)\n .sort(c => c.hide.widthHidePriority);\n }\n\n private get _TableWidth(): number {\n let currentWidth =\n this.grid.columns.filter(c => !c.hidden).map((c) => {\n const getColumns = (cb: ColumnBase) => {\n if (cb instanceof ColumnGroupComponent) {\n return flatArray([...cb.children.filter(child => !child.hidden).map(child => getColumns(child))]);\n }\n return cb;\n };\n return getColumns(c);\n }).reduce((acc, column: ColumnBase | ColumnBase[]) => {\n if (Array.isArray(column)) {\n return acc + column.reduce((a, col) => a + col.width, 0);\n }\n return acc + column.width;\n }, 0);\n if (this.details && this.details.type !== ApDynGridDetailsConfigType.None) {\n currentWidth += 32;\n }\n for (const group of this.grid.group) {\n currentWidth += 32;\n }\n return currentWidth + 18;\n }\n\n private static _getHeight(key: string): number {\n const element = document.querySelector(key);\n if (!element) {\n return 0;\n }\n const style = window.getComputedStyle(element);\n const toNumber = (s: string) => +s.split('px')[0];\n return toNumber(style.height)\n + toNumber(style.paddingTop) + toNumber(style.paddingBottom)\n + toNumber(style.borderTop) + toNumber(style.borderBottom)\n + toNumber(style.marginTop) + toNumber(style.marginBottom);\n }\n\n private static _isArray(x): boolean {\n return !!x && x instanceof Array;\n }\n\n private static _isObject(x): boolean {\n return !!x && typeof x === 'object';\n }\n\n private static _intersectObject(a, b, callCount = 0): any {\n callCount++;\n const result = {};\n\n if (([a, b]).every(this._isObject)) {\n Object.keys(a).forEach((key) => {\n const value = a[key];\n const other = b[key];\n\n if (value !== null && value !== undefined) {\n if (this._isCyclic(value)) {\n // do nothing\n } else if (this._isArray(value)) {\n result[key] = this._intersectArray(value, other);\n } else if (this._isObject(value)) {\n result[key] = this._intersectObject(value, other, callCount);\n } else if (value === other) {\n result[key] = value;\n }\n }\n });\n }\n\n return result;\n }\n\n private static _isCyclic(obj): boolean {\n const seenObjects = [];\n\n function detect(innerObj): boolean {\n if (innerObj && typeof innerObj === 'object') {\n if (seenObjects.indexOf(innerObj) !== -1) {\n return true;\n }\n seenObjects.push(innerObj);\n for (const key in innerObj) {\n if (innerObj.hasOwnProperty(key) && detect(innerObj[key])) {\n // console.log(innerObj, 'cycle at ' + key);\n return true;\n }\n }\n }\n return false;\n }\n\n return detect(obj);\n }\n\n private static _intersectArray(a: any[], b: any[]): any[] {\n const result = [];\n if (([a, b]).every(this._isArray)) {\n a.forEach(value => {\n if (b.find(v => isEqual(value, v)) !== undefined) {\n result.push(value);\n }\n });\n }\n return result;\n }\n\n private static _getDefaultObject(selection: T[]): T {\n return selection.length ? selection.reduce((a, b) => this._intersectObject(a, b), selection[0]) : {};\n }\n\n @Trace()\n ngOnInit(): void {\n this.componentReference$?.next(this);\n this._getDataFromStore();\n }\n\n @Trace()\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['columns']) {\n this.gridPaging.columnChange(this.columns);\n }\n if (changes['reorderable']) {\n this.gridPaging.reorderable = this.reorderable;\n }\n if (changes['items'] && changes['items'].currentValue) {\n this.toggleHiddenProperties();\n if (this.items.FindAll(item => !item).Count() > 0) {\n this.items = this.items.FindAll(item => !!item);\n }\n const selectedKeys = this.gridPaging.selectedKeys;\n this.gridPaging.init(this.items, this.columns);\n const keys = this.items.map(item => item.Id);\n this.gridPaging.setSelectedKeys(selectedKeys.filter(key => keys.indexOf(key) !== -1));\n }\n if (changes['rowSelected']) {\n if (typeof changes['rowSelected'].currentValue === 'function') {\n this.grid.rowSelected = this.rowSelected;\n }\n }\n }\n\n @Trace()\n ngAfterViewInit(): void {\n if (this.rowSelected) {\n if (typeof this.rowSelected === 'function') {\n this.grid.rowSelected = this.rowSelected;\n }\n }\n\n this.formDefaultValue$ =\n this.gridPaging.onSelectedItemChange.pipe(\n map(s => ApDynGridsComponent._getDefaultObject(s)),\n );\n\n const apMainViewElement = document.querySelector('.ap-main-view');\n if (apMainViewElement) {\n observer = new ResizeObserver((entries) => {\n const subject = {\n width: this._viewWidth$,\n height: this._viewHeight$\n };\n if (subject.width && subject.width.valueOf() !== entries[0].contentRect.width) {\n subject.width.next(entries[0].contentRect.width);\n }\n if (subject.height && subject.height.valueOf() !== entries[0].contentRect.height) {\n subject.height.next(entries[0].contentRect.height);\n }\n });\n observer?.observe(document.querySelector('.ap-main-view'));\n }\n\n this._subscriptions.push(this._viewWidth$.pipe(\n debounceTime(100),\n filter(width => !!width),\n ).subscribe((grid) => {\n const tableWidth = this._TableWidth;\n if (grid < tableWidth) {\n const columns = this._WidthHideColumns;\n\n let width = 0;\n while (columns.length !== 0 && grid < tableWidth - width) {\n const column = columns[0];\n columns.Remove(column);\n width += column.width;\n this.widthHiddenColumns$.next([...this.widthHiddenColumns$.value, column]);\n }\n } else if (this.widthHiddenColumns$.value.length !== 0) {\n let columns = this.widthHiddenColumns$.value;\n let width = columns.LastOrDefault().width;\n while (columns.length !== 0 && grid > tableWidth + width) {\n this.widthHiddenColumns$.next(\n columns.filter((v, i) => i < columns.length - 1));\n columns = this.widthHiddenColumns$.value;\n width += columns.length !== 0 ? columns.LastOrDefault().width : 0;\n }\n }\n }));\n this.initialized.emit();\n\n this._subscriptions.push(ApMapInstance.onFieldClicked.subscribe(field => {\n if (!field || field?.Id?.toString()?.length <= 0) {\n return;\n }\n\n const updatedSelectedKeys = this.gridPaging.selectedKeys?.slice() ?? [];\n const selectedFieldIndex = this.gridPaging?.selectedKeys?.FindIndex(id => id?.toString() === field?.Id?.toString());\n if (selectedFieldIndex >= 0) {\n updatedSelectedKeys.RemoveAt(selectedFieldIndex);\n } else {\n updatedSelectedKeys.Add(field?.Id?.toString());\n }\n this.gridPaging?.setSelectedKeys(updatedSelectedKeys, true);\n this.gridPaging?.updateGridView();\n }));\n }\n\n @Trace()\n ngOnDestroy(): void {\n this._subscriptions.filter(s => s.unsubscribe());\n const domObject = document.querySelector('.ap-main-view');\n if (domObject) {\n observer?.unobserve(domObject);\n }\n observer = null;\n }\n\n @Trace()\n editHandler(item): void {\n this.edit.emit(item.dataItem);\n }\n\n @Trace()\n createHandler(): void {\n this.create.emit();\n }\n\n @Trace()\n filterGrid(searchValue: string): void {\n this.gridPaging.filterChange(searchValue);\n }\n\n @Trace()\n clearFilters(): void {\n this.gridPaging.filter = { logic: 'and', filters: [] };\n this.gridPaging.updateGridView();\n }\n\n @Trace()\n itemDisabled(args: { index: number, dataItem: IWizardChoiceData }): boolean {\n return this.gridPaging.isWizardChoiceDisabled(args.dataItem);\n }\n\n @Trace()\n pagerApplyClicked(event: IGridPagerData): void {\n const cb =\n event.value && (event.value as IDynGridWizardChoiceDataValue).onSubmit ?\n (event.value as IDynGridWizardChoiceDataValue).onSubmit :\n (event.object as IDynGridWizardChoiceData)?.onSubmit;\n if (cb) {\n cb.emit({\n ids: this.gridPaging.selectedKeys,\n items: this.gridPaging.selectedItems,\n value: event.value,\n form: this._getPagerForm()\n });\n }\n }\n\n @Trace()\n public exportAsPdf(): void {\n this.grid.saveAsPDF();\n }\n\n @Trace()\n public exportAsXls(): void {\n this.grid.saveAsExcel();\n }\n\n @Trace()\n gridPagerSelectionChange(event: IDynGridWizardChoiceData): void {\n this.pagerKeyWizardChoice = event;\n this._setupPagerFormConfig();\n }\n\n @Trace()\n gridPagerSelectionValueChange(event: IDynGridWizardChoiceDataValue): void {\n this.pagerValueWizardChoice = event;\n this._setupPagerFormConfig();\n }\n\n @Trace()\n onSelectedKeysChange(keys: IdValue[]): void {\n this.gridPaging.onSelectedKeysChange(keys);\n if (this.gridPager) {\n if (keys.length === 0 && this.gridPager.gridMultiSelect) {\n this.gridPager.gridMultiSelect.unselect();\n }\n if (this.gridPaging.isWizardChoiceDisabled(this.pagerKeyWizardChoice)) {\n for (const obj of this.gridPager.Objects) {\n if (!this.gridPaging.isWizardChoiceDisabled(obj)) {\n this.gridPager.setSelectedColumn(obj);\n return;\n }\n }\n }\n if (this.gridPaging.isWizardChoiceDisabled(this.pagerValueWizardChoice)) {\n for (const value of this.gridPager.selectedColumn.values) {\n if (!this.gridPaging.isWizardChoiceDisabled(value)) {\n this.gridPager.setSelectedValue(value);\n break;\n }\n }\n }\n }\n }\n\n @Trace()\n setRowClass(context: RowClassArgs): {\n 'no-details': boolean;\n error: boolean;\n master: boolean;\n } {\n const noDetails = this.details && this.details.hide(context.dataItem);\n return {\n 'no-details': noDetails,\n error: this.gridPaging && this.errorKeys ? this.errorKeys.indexOf(context.dataItem['Id']) !== -1 : false, // .k-grid tr.error > td .k-grid tr.k-state-selected.error > td\n master: true,\n };\n }\n\n previousClicked(gridColumn: ApDynGridColumnConfigBase): void {\n switch (gridColumn.type) {\n case ApDynGridColumnControlType.ColumnGroup:\n (gridColumn as ApDynGridGroupColumnConfig).headerButtons.previousClicked.emit();\n break;\n }\n }\n\n nextClicked(gridColumn: ApDynGridColumnConfigBase): void {\n switch (gridColumn.type) {\n case ApDynGridColumnControlType.ColumnGroup:\n (gridColumn as ApDynGridGroupColumnConfig).headerButtons.nextClicked.emit();\n break;\n }\n }\n\n updateSelection(formValues: any): void {\n (this.pager as ApDynGridPagerWizardConfig).dynGridWizardFormConfig?.onSubmit?.emit({\n ids: this.gridPaging.selectedKeys,\n items: this.gridPaging.selectedItems,\n value: formValues,\n });\n this.clearSelection();\n }\n\n clearSelection(): void {\n this.gridPaging.setSelectedKeys([]);\n }\n\n /**\n * Handles pageSize changed of the grid's pager.\n * Occurs whenever user changed the pageSize from the corresponding dropdown\n */\n public onPageSizeChanged(pageSize: number): void {\n this.gridPaging.pageSize = pageSize;\n this.gridPaging.refresh();\n }\n\n /**\n * Event handler to monitor if user presses Control-Key\n * @param event the key eventArgs\n */\n @HostListener('document:keydown.control', ['$event']) onKeydownControlHandler(event: KeyboardEvent): void {\n this._isControlKeyDown = true;\n if (!ApRoleTypeService.hasAgriconRole(this.loginStore.User)) {\n return;\n }\n this._agriconIsControlKeyDown = true;\n }\n\n /**\n * Event handler to monitor if user presses Control-Key\n * @param event the key eventArgs\n */\n @HostListener('document:keyup.control', ['$event']) onKeyupControlHandler(event: KeyboardEvent): void {\n this._isControlKeyDown = false;\n if (!ApRoleTypeService.hasAgriconRole(this.loginStore.User)) {\n return;\n }\n this._agriconIsControlKeyDown = false;\n this._agriconTextToCopy = '';\n }\n\n /**\n * Toggles the hidden columns to display all hidden properties in the grid.\n */\n public toggleHiddenProperties(): void {\n // skip for:\n // - regular users\n // - all the logic if debug mode is disabled and no hidden properties are currently shown\n if (!ApRoleTypeService.hasAgriconRole(this.loginStore.User) ||\n !this._agriconShowHiddenProperties && this._agriconHiddenProperties?.length === 0) {\n return;\n }\n\n setTimeout(() => {\n try {\n if (!this._agriconShowHiddenProperties || !this.items || this.items.length < 1) {\n this._agriconHiddenProperties = [];\n return;\n }\n // collect all properties of the dataItem (also from SourceItem)\n let allProperties = this.items[0]?.SourceItem ? Object.getOwnPropertyNames(this.items[0].SourceItem) : [];\n allProperties = allProperties.map(p => {\n p = 'SourceItem.'.concat(p);\n return p;\n });\n\n allProperties.AddRangeIfNotExists(Object.getOwnPropertyNames(this.items[0]));\n\n // check if the property is already displayed in grid\n for (const property of allProperties) {\n if (property.toLowerCase() !== 'parent' &&\n property.toLowerCase() !== 'sourceitem' &&\n !this.columns.some(c => (c as any).field === property)) {\n this._agriconHiddenProperties.AddIfNotExists(property);\n }\n }\n // for better maintenance => write current component tag to console\n console.log(`::: ${document?.body?.querySelector('.ap-main-view > div > *:not(router-outlet)')?.nodeName?.toLowerCase()}`);\n }catch (e) {\n console.log(`Error while extending Grid to debugMode: ${JSON.stringify(e)}`);\n }\n finally {\n // Force update of grid view after columns have been changed programmatically\n // this.changeDetection.detectChanges();\n this.gridPaging.columnChange(this.columns);\n }\n }, 1);\n }\n\n public stringify(dataItem: any): string {\n if (dataItem) {\n return JSON.stringify(dataItem).replace(/^\"(.+(?=\"$))\"$/, '$1');\n }\n return '';\n }\n\n /**\n * Hidden Feature: Copies hidden column's value (on dblClick)\n * If user presses Control-Key while double klicking a list of values is copied to clipboard\n * @param dataItem to be copied\n * @param property dataItem's property to be copied\n */\n public copyToClipboard(dataItem: any, property: string): void {\n if (!dataItem || !ApRoleTypeService.hasAgriconRole(this.loginStore.User) || !this._agriconShowHiddenProperties) {\n return;\n }\n const currentTextToCopy = this.stringify(get(dataItem, property));\n if (!this._agriconIsControlKeyDown) {\n this.clipboard.copy(currentTextToCopy);\n return;\n }\n\n if (this._agriconTextToCopy?.length > 0) {\n this._agriconTextToCopy = `${this._agriconTextToCopy}, `;\n }\n this._agriconTextToCopy = `${this._agriconTextToCopy}'${currentTextToCopy}'`;\n this.clipboard.copy(this._agriconTextToCopy);\n }\n\n /**\n * Custom and technical excel export for Agricon support\n * @param eventArgs the excel export eventArgs\n */\n public async onExcelExport(eventArgs: ExcelExportEvent): Promise {\n // Prevent automatically saving the file. We will save it manually after we fetch and add the details\n eventArgs.preventDefault();\n const dynGridsExcelService = new ApDyngridsExcelService(\n this._agriconShowHiddenProperties, this.gridPaging, this.translationService);\n await dynGridsExcelService.exportAsExcel(eventArgs, this.columns, this.details, this.xlsExportFileName);\n }\n\n /**\n * For performance improvements it is recommended to use trackBy function\n * to make it faster/easier for angular to track changes.\n * The item is identified by id instead of a complete object comparison\n * @param index of column\n * @param column the column's config (id is unique and generated on creation)\n */\n public trackByColumnFn(index: number, column: ApDynGridColumnConfigBase): string {\n return column?.id?.toString();\n }\n\n private _getPagerForm(): FormGroup | undefined {\n if (this.gridPager && this.gridPager.gridMultiSelect &&\n this.gridPager.gridMultiSelect && this.gridPager.gridMultiSelect.extendedInput) {\n return this.gridPager.gridMultiSelect.extendedInput.form;\n }\n return undefined;\n }\n\n private _setupPagerFormConfig(): void {\n let onChoiceSelect: EventEmitter;\n if (this.pagerValueWizardChoice && this.pagerValueWizardChoice.formConfig) {\n this.pagerFormConfig = this.pagerValueWizardChoice.formConfig;\n onChoiceSelect = this.pagerValueWizardChoice.onChoiceSelect;\n } else if (this.pagerKeyWizardChoice && this.pagerKeyWizardChoice.formConfig) {\n this.pagerFormConfig = this.pagerKeyWizardChoice.formConfig;\n onChoiceSelect = this.pagerKeyWizardChoice.onChoiceSelect;\n } else {\n this.pagerFormConfig = undefined;\n return;\n }\n\n setTimeout(() => {\n this._setupSelection(onChoiceSelect);\n }, 1);\n }\n\n private _setupSelection(onChoiceSelect: EventEmitter): void {\n if (onChoiceSelect) {\n onChoiceSelect.emit({\n form: this._getPagerForm(),\n items: this.gridPaging.selectedItems,\n keys: this.gridPaging.selectedKeys\n });\n }\n }\n\n private _getDataFromStore(): void {\n this.farm$ = this.loginStore.SelectedFarm$;\n this.mapViewState$ = this.mapViewStore.Listen(s => s.mode);\n }\n\n /**\n * Calculates the selectable settings (especially drag-selection feature)\n * depending on current grid selection mode and disables drag selection completely in case\n * of debug mode is turned on\n * @param selectableSetting\n * @param isDebugMode\n * @private\n */\n private calculateSelectableSettings(selectableSetting: SelectableSettings, isDebugMode: boolean): SelectableSettings {\n selectableSetting.drag = selectableSetting?.mode === 'multiple' && !isDebugMode && !this.windowHelperService.isTouchDevice();\n return selectableSetting;\n }\n\n /**\n * Custom handling of selectionChange event in case the user currently pressing Ctrl key and dragging mouse cursor.\n * By default, the grid does not add a new selection (from dragging with mouse) to the current selection\n * but replaces it. We need to aggregate everything together or invert blocks of selection.\n * @param eventArgs\n */\n public onSelectionChanged(eventArgs: SelectionEvent): void {\n // Implementation of Ctrl + drag (multiselect) feature which is not supported by default.\n // Aggregate all currently selected rows together. They might come from previous selection and from grid-drag feature.\n // While using kendoGrid drag-selection the eventArgs.ctrlKey is undefined - we have to monitor it on our own.\n // for regular selections in the grid the property is set properly\n if (!eventArgs || !this.gridPaging || this.selectable?.mode !== 'multiple' ||\n this.gridPaging?.keyColumn?.length <= 0 || !this._isControlKeyDown) {\n this.selectionChange.emit(eventArgs);\n return;\n }\n\n // kendo does not provide an indicator if drag-selection was used\n // but when using dragSelection the eventArgs.ctrlKey property is not defined,\n // while for all other cases its either true or false - sorry for that hack ;)\n const isDragSelection = eventArgs.ctrlKey == null;\n if (!isDragSelection) {\n this.selectionChange.emit(eventArgs);\n return;\n }\n\n const selectedKeys = [];\n // if new items get selected => include the deselected items as well.\n // All other rows get deselected by kendo when using drag selection => we want to avoid that when user press CTRL key.\n // Add them back to our selection.\n if (eventArgs.selectedRows?.length > 0) {\n this.addSelectedKeyIfNotExists(selectedKeys, eventArgs.selectedRows?.map(r => r.dataItem[this.gridPaging.keyColumn] ?? []));\n this.addSelectedKeyIfNotExists(selectedKeys, eventArgs.deselectedRows?.map(r => r.dataItem[this.gridPaging.keyColumn] ?? []));\n this.addSelectedKeyIfNotExists(selectedKeys, this.gridPaging.selectedKeys?.map(id => id));\n } else {\n // Drag selection within a block of already selected items => invert selection and deselect the block\n this.addSelectedKeyIfNotExists(selectedKeys, eventArgs.deselectedRows?.map(r => r.dataItem[this.gridPaging.keyColumn] ?? []));\n }\n this.gridPaging.setSelectedKeys(selectedKeys);\n this.selectionChange.emit(eventArgs);\n }\n\n /**\n * Helper methods to add unique values to an array\n * @param targetArray\n * @param sourceArray\n * @private\n */\n private addSelectedKeyIfNotExists(targetArray: any[], sourceArray: any[]): void {\n if (!targetArray) {\n targetArray = [];\n }\n if (!sourceArray || sourceArray.length <= 0) {\n return;\n }\n for (const selectedKey of sourceArray) {\n targetArray.AddIfNotExists(selectedKey);\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridClassColorColumnConfig} from '../../config/ap-dyn-grid-class-color-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asClassColor'\n})\nexport class AsClassColorPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase, ...args: any[]): ApDynGridClassColorColumnConfig {\n return config as ApDynGridClassColorColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridButtonColumnConfig} from '../../config/ap-dyn-grid-button-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asButton'\n})\nexport class AsButtonPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridButtonColumnConfig {\n return config as ApDynGridButtonColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridEditColumnConfig} from '../../config/ap-dyn-grid-edit-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asEdit'\n})\nexport class AsEditPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridEditColumnConfig {\n return config as ApDynGridEditColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridGroupColumnConfig} from '../../config/ap-dyn-grid-group-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asGroup'\n})\nexport class AsGroupPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridGroupColumnConfig {\n return config as ApDynGridGroupColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridPropertyColumnConfig} from '../../config/ap-dyn-grid-property-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asProperty'\n})\nexport class AsPropertyPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridPropertyColumnConfig {\n return config as ApDynGridPropertyColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridStatusColumnConfig} from '../../config/ap-dyn-grid-status-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asStatus'\n})\nexport class AsStatusPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridStatusColumnConfig {\n return config as ApDynGridStatusColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridButtonGroupColumnConfig} from '../../config/ap-dyn-grid-button-group-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asButtonGroup'\n})\nexport class AsButtonGroupPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridButtonGroupColumnConfig {\n return config as ApDynGridButtonGroupColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridColorColumnConfig} from '../../config/ap-dyn-grid-color-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asColor'\n})\nexport class AsColorPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridColorColumnConfig {\n return config as ApDynGridColorColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridImageColumnConfig} from '../../config/ap-dyn-grid-image-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asImage'\n})\nexport class AsImagePipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridImageColumnConfig {\n return config as ApDynGridImageColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridStatusSwitchColumnConfig} from '../../config/ap-dyn-grid-status-switch-column.config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asStatusSwitch'\n})\nexport class AsStatusSwitchPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridStatusSwitchColumnConfig {\n return config as ApDynGridStatusSwitchColumnConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridPagerConfigBase} from '../../config/ap-dyn-grid-pager-config-base';\nimport {ApDynGridPagerWizardConfig} from '../../config/ap-dyn-grid-pager-wizard-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asWizard'\n})\nexport class AsWizardPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridPagerConfigBase): ApDynGridPagerWizardConfig {\n return config as ApDynGridPagerWizardConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {\n ApDynGridPagerWizardBreadcrumbsStepper,\n ApDynGridPagerWizardSection\n} from '../../config/ap-dyn-grid-pager-wizard-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asWizardBreadcrumbsStepper'\n})\nexport class AsWizardBreadcrumpsStepperPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridPagerWizardSection): ApDynGridPagerWizardBreadcrumbsStepper {\n return config as ApDynGridPagerWizardBreadcrumbsStepper;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridDetailsGridConfig} from '../../config/details/ap-dyn-grid-details-grid-config';\nimport {ApDynGridDetailsBaseConfig} from '../../config/details/ap-dyn-grid-details-base-config';\n\n@Pipe({\n name: 'asDetailsGrid'\n})\nexport class AsDetailsGridPipe implements PipeTransform {\n\n transform(value: ApDynGridDetailsBaseConfig): ApDynGridDetailsGridConfig {\n return value as ApDynGridDetailsGridConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../config/ap-dyn-grid-column-config-base';\nimport {MapViewMode} from '../../ap-interface/enums';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Pipe({\n name: 'isHidden'\n})\nexport class IsHiddenPipe implements PipeTransform {\n\n transform(value: ApDynGridColumnConfigBase, ...args: [Observable, Observable]): Observable {\n return combineLatest([\n value.hide.selfHide,\n args[0],\n args[1]\n ]).pipe(map(([selfHide, mapView, widthHiddenColumns]) => {\n return selfHide || (mapView !== MapViewMode.HIDE &&\n (value.hide.mapHide || widthHiddenColumns.Any(v => v.equals(value))));\n }\n ));\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridTemplateColumnConfig} from '../../config/ap-dyn-grid-template-column-config';\n\n@Pipe({\n name: 'asTemplate'\n})\nexport class AsTemplatePipe implements PipeTransform {\n\n transform(config: ApDynGridColumnConfigBase): ApDynGridTemplateColumnConfig {\n return config as ApDynGridTemplateColumnConfig;\n }\n\n}\n","import {AfterViewInit, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {FilterService} from '@progress/kendo-angular-grid';\nimport {SelectionRange} from '@progress/kendo-angular-dateinputs';\nimport {CompositeFilterDescriptor, FilterDescriptor} from '@progress/kendo-data-query';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {ApCalendarView} from '../enums/ApCalendarView';\n\n@Component({\n selector: 'ap-date-range-filter',\n templateUrl: './ap-date-range-filter.component.html',\n styleUrls: ['ap-date-range-filter.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApDateRangeFilterComponent implements AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public filterService: FilterService;\n @Input() public items: any[] = [];\n @Input() public key: string;\n @Input() public view: ApCalendarView = ApCalendarView.DAY;\n\n public range = {min: undefined, max: undefined};\n public selected: SelectionRange = {start: undefined, end: undefined};\n\n constructor(private dateService: ApDateService) {\n }\n\n ngAfterViewInit(): void {\n if (!this.items || this.items?.length === 0) {\n return;\n }\n this.range = this.items.map((item) => item[this.key] as Date).filter((i) => !!i && isNaN(new Date(i).getDate())).reduce((range, item) => {\n const itemDate = new Date(item);\n // create proper javascript date to be able to compare dates!\n return {\n max: new Date(range.max > itemDate ? range.max : itemDate),\n min: new Date(range.min < itemDate ? range.min : itemDate)\n };\n }, this.range);\n if (this.currentFilter.filters.length) {\n this.selected.start = this.currentFilter.filters.reduce((value: Date, f: FilterDescriptor) => value < f.value ? value : f.value, undefined);\n this.selected.end = this.currentFilter.filters.reduce((value: Date, f: FilterDescriptor) => value > f.value ? value : f.value, undefined);\n } else {\n // default selection is the end of the range\n // => otherwise the calendar might appear empty if the range is completly in the past\n this.selected.start = this.range.max;\n this.selected.start = this.range.max;\n }\n }\n\n change(event: SelectionRange): void {\n if (event.start === undefined || event.end === undefined) {\n return;\n }\n const start = this._getStart(event.start);\n const end = this._getEnd(event.end);\n this.filterService.filter({\n filters: [\n {\n field: this.key,\n operator: 'gte',\n value: start\n },\n {\n field: this.key,\n operator: 'lte',\n value: end\n }\n ],\n logic: 'and'\n });\n }\n\n private _getStart(date: Date): Date {\n let start = date;\n switch (this.view) {\n case ApCalendarView.DAY:\n start = new Date(start.setHours(0, 0, 0, 0));\n break;\n case ApCalendarView.MONTH:\n start = new Date(start.getFullYear(), start.getMonth(), 1);\n break;\n }\n return this.dateService.toFarmDate(start).toDate();\n }\n\n private _getEnd(date: Date): Date {\n let end = date;\n switch (this.view) {\n case ApCalendarView.DAY:\n end = new Date(end.setHours(23, 59, 59, 999));\n break;\n case ApCalendarView.MONTH:\n end = new Date(end.getFullYear(), end.getMonth() + 1, 0);\n end = new Date(end.setHours(23, 59, 59, 999));\n break;\n }\n return this.dateService.toFarmDate(end).toDate();\n }\n}\n","\n","import {AfterViewInit, Component, Input} from '@angular/core';\nimport {FilterService} from '@progress/kendo-angular-grid';\nimport {CompositeFilterDescriptor, FilterDescriptor} from '@progress/kendo-data-query';\nimport {get} from 'lodash';\n\n@Component({\n selector: 'ap-multi-select-filter',\n templateUrl: './ap-multi-select-filter.component.html'\n})\nexport class ApMultiSelectFilterComponent implements AfterViewInit {\n @Input() public isPrimitive: boolean;\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public textField: string;\n @Input() public valueField: string;\n @Input() public filterService: FilterService;\n @Input() public items;\n @Input() public key;\n\n public data: any[];\n public dataFilter: any[];\n public value: any[];\n\n public ngAfterViewInit(): void {\n if (!this.items || this.items?.length === 0) {\n return;\n }\n this.data = Array.from(new Set(this.items.map(i => {\n const value = get(i, this.key);\n if (value === undefined) {\n return null;\n }\n return value;\n }))).sort();\n this.dataFilter = this.data;\n this.value = this.currentFilter.filters.map((f: FilterDescriptor) => f.value);\n }\n\n public onChange(values: any[]): void {\n this.filterService.filter({\n filters: values.map(value => ({\n field: this.key,\n operator: value === null ? 'isnull' : 'eq',\n value\n })),\n logic: 'or'\n });\n }\n\n public onFilterChange(filter: string): void {\n if (!this.data) {\n this.dataFilter = [];\n return;\n }\n this.dataFilter = this.data.FindAll((d: any) => {\n if (!d) {\n return (!d) === (!filter);\n }\n let value = d;\n // in case the value is not a string and both value and textfield are\n // defined we are going to extract the value from the given object\n // otherwise we continue with the plain value and treat it as a string\n if (typeof value !== typeof '' && this.valueField && this.textField) {\n value = d[this.textField];\n }\n if (!value) {\n return false;\n }\n return value?.toString().ToLowerCase().IndexOf(filter.ToLowerCase()) !== -1;\n });\n }\n}\n","\n\n","\n \n \n \n \n \n \n \n \n \n \n \n \n\n","import {AfterViewInit, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {CompositeFilterDescriptor, FilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\n\n@Component({\n selector: 'ap-checkbox-filter',\n templateUrl: './ap-checkbox-filter.component.html',\n styleUrls: ['./ap-checkbox-filter.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApCheckboxFilterComponent implements AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public filterService: FilterService;\n @Input() public key;\n @Input() public items: any[];\n\n data = [];\n value = true;\n\n constructor() {\n }\n\n ngAfterViewInit(): void {\n if (!this.items || this.items?.length === 0) {\n return;\n }\n this.data =\n this.items\n .map(i => i[this.key])\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort((a) => a ? -1 : 1);\n this.value = this.currentFilter.filters.reduce((v: boolean, f: FilterDescriptor) => v && f.value, true);\n this.valueChange(this.value);\n }\n\n valueChange(value: boolean): void {\n this.filterService.filter({\n filters: [{\n field: this.key,\n operator: 'eq',\n value,\n }],\n logic: 'and'\n });\n }\n}\n","import {AfterViewInit, Component, Input} from '@angular/core';\nimport {CompositeFilterDescriptor, FilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\n\n@Component({\n selector: 'ap-number-list-filter',\n templateUrl: 'ap-number-list-filter.component.html',\n})\nexport class ApNumberListFilterComponent implements AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public filterService: FilterService;\n @Input() public items = [];\n @Input() public key = '';\n\n public data: number[] = [];\n public dataFilter: number[] = [];\n public selected: number[] = [];\n\n ngAfterViewInit(): void {\n this.data = [];\n if (!this.items || this.items?.length === 0) {\n return;\n }\n for (const item of this.items) {\n const elements = item[this.key];\n if (!Array.isArray(elements)) {\n continue;\n }\n for (const element of elements) {\n this.data.AddIfNotExists(element);\n }\n }\n this.dataFilter = this.data;\n this.selected = this.currentFilter.filters.Convert((f: FilterDescriptor) => f.value);\n }\n\n onChange(values: any[]): void {\n this.filterService.filter({\n filters: values.Convert(value => ({\n field: this.key,\n operator: v => v.Contains(value),\n value\n })),\n logic: 'or'\n });\n }\n\n onFilterChange(filter: string): void {\n if (!filter) {\n this.dataFilter = this.data;\n return;\n }\n let tmp = [filter];\n if (filter.Contains(',')) {\n tmp = filter.Split(',');\n }\n this.dataFilter = [];\n for (const t of tmp) {\n const found = this.data.Find(e => e === parseInt(t, 10));\n if (!found) {\n continue;\n }\n this.dataFilter.Add(found);\n }\n }\n}\n","\n\n","import {AfterViewInit, Component, Input} from '@angular/core';\nimport {CompositeFilterDescriptor, FilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\nimport {IPipeDefinition} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\n\n@Component({\n selector: 'ap-object-filter',\n templateUrl: './ap-object-filter.component.html'\n})\nexport class ApObjectFilterComponent implements AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public filterService: FilterService;\n @Input() public key;\n @Input() public items = [];\n @Input() public pipes: IPipeDefinition[];\n\n public data: any[];\n public dataFilter: any[];\n public values: any[];\n\n constructor() {\n }\n\n ngAfterViewInit(): void {\n if (!this.items || this.items?.length === 0) {\n return;\n }\n const values = this.items.map((value) => {\n let key = value[this.key];\n this.pipes.forEach((def) => {\n key = def.pipe.transform(key, ...def.args);\n });\n return {key, value: value['Id']};\n });\n const map = {};\n values.forEach((value) => {\n if (Array.isArray(map[value.key])) {\n map[value.key].push(value.value);\n } else {\n map[value.key] = [value.value];\n }\n });\n this.data = Object.keys(map).map((key) => ({key, value: map[key]}));\n this.dataFilter = this.data;\n this.values = this.currentFilter.filters.map((f: FilterDescriptor) => f.value);\n }\n\n public onChange(values: { key: string, value: string[] }[]): void {\n // TODO: Das funktioniert nicht korrekt, beim zurücksetzen des Filters\n // Kendo setzt den Filter für die gewählte Spalte zurück\n // Wird ein Filter fest auf 'Id' gesetzt, weiß Kendo nicht, wann dieser zurückgesetzt\n // werden soll.\n this.filterService.filter({\n filters: values\n .map((value) => {\n return ([\n {\n field: this.key,\n operator: 'eq', // (item, value) => bool\n value\n } as unknown as CompositeFilterDescriptor,\n ...value.value.map((v) => (\n {\n field: 'Id',\n operator: 'eq',\n value: v\n } as unknown as CompositeFilterDescriptor)),\n ]);\n })\n .flat(),\n logic: 'or'\n });\n }\n\n public onFilterChange(filter: string): void {\n if (!this.data) {\n return;\n }\n this.dataFilter = this.data.FindAll((d: any) => {\n if (!d) {\n return (!d) === (!filter);\n }\n let value = d;\n if (typeof value !== typeof '') {\n value = d[this.key];\n }\n return value.ToLowerCase().IndexOf(filter.ToLowerCase()) !== -1;\n });\n }\n}\n","\n\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridPropertyColumnConfig} from '../../config/ap-dyn-grid-property-column-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'getText',\n pure: false // workaround for https://angular-7mlowu.stackblitz.io\n})\nexport class GetTextPipe implements PipeTransform {\n\n @Trace()\n transform(value: any, gridColumn: ApDynGridPropertyColumnConfig): string {\n return value && gridColumn.unit ? `${value} ${gridColumn.unit}` : value;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../config/ap-dyn-grid-column-config-base';\nimport {CenterCellService} from '../services/center-cell.service';\n\n@Pipe({\n name: 'dynamicCell'\n})\nexport class DynamicCellPipe implements PipeTransform {\n\n constructor(private centerCellService: CenterCellService) {\n }\n\n transform(config: ApDynGridColumnConfigBase, dataItem: any): unknown {\n let result = this.centerCellService.getCellCssClass(config.cssClass);\n if (config.dynCssClass != null) {\n result += config.dynCssClass(dataItem);\n }\n return result;\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ApDynGridPropertyColumnConfig} from '../config/ap-dyn-grid-property-column-config';\nimport {CompositeFilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\nimport {ApCalendarView} from '../../ap-utils/enums/ApCalendarView';\n\n@Component({\n selector: 'ap-property-column-filter',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n})\nexport class ApPropertyColumnFilterComponent {\n @Input() config: ApDynGridPropertyColumnConfig;\n @Input() currentFilter: CompositeFilterDescriptor;\n @Input() dataItem: any;\n @Input() filterService: FilterService;\n @Input() items: any[];\n public calendarView = ApCalendarView;\n}\n\n@Component({\n selector: 'ap-property-column-header',\n template: `\n \n \n `,\n})\nexport class ApPropertyColumnHeaderComponent {\n @Input() config: ApDynGridPropertyColumnConfig;\n}\n\n@Component({\n selector: 'ap-property-column-cell',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n})\nexport class ApPropertyColumnCellComponent {\n @Input() config: ApDynGridPropertyColumnConfig;\n @Input() dataItem: any;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {ApDynGridTemplateColumnConfig} from '../config/ap-dyn-grid-template-column-config';\n\n@Pipe({\n name: 'getTemplateContext'\n})\nexport class GetTemplateContextPipe implements PipeTransform {\n\n transform(config: ApDynGridTemplateColumnConfig, dataItem?: any): any {\n return config.getContext(dataItem);\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ApDynGridTemplateColumnConfig} from '../config/ap-dyn-grid-template-column-config';\n\n@Component({\n selector: 'ap-template-column-header',\n template: `\n \n `,\n styles: []\n})\nexport class ApTemplateColumnHeaderComponent {\n @Input() config: ApDynGridTemplateColumnConfig;\n}\n@Component({\n selector: 'ap-template-column-cell',\n template: `\n \n `,\n styles: []\n})\nexport class ApTemplateColumnCellComponent {\n @Input() config: ApDynGridTemplateColumnConfig;\n @Input() dataItem: any;\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CompositeFilterDescriptor, FilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\n\n@Component({\n selector: 'ap-status-switch-filter',\n templateUrl: './ap-status-switch-filter.component.html',\n styleUrls: ['./ap-status-switch-filter.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApStatusSwitchFilterComponent implements OnInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public filterService: FilterService;\n @Input() public items;\n @Input() public key;\n\n public data: any[];\n public value: any;\n\n public ngOnInit(): void {\n this.data = [-1, 0, 1];\n this.value = this.currentFilter.filters.map((f: FilterDescriptor) => f.value);\n }\n\n public onChange(values: any[]): void {\n this.filterService.filter({\n filters: values.map(value => ({\n field: this.key,\n operator: value === null ? 'isnull' : 'eq',\n value\n })),\n logic: 'or'\n });\n }\n}\n","
\n \n \n \n
\n","import {Component, EventEmitter, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {get} from 'lodash';\n\n@Component({\n selector: 'ap-status-switch',\n templateUrl: './ap-status-switch.component.html',\n styleUrls: ['./ap-status-switch.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApStatusSwitchComponent {\n @Input() disableGreen = false;\n @Input() disableRed = false;\n @Input() disableYellow = false;\n @Input() readonly = false;\n\n @Input() set dataItem(value: any) {\n this._dataItem = value;\n this.updateState();\n }\n\n @Input() set field(fieldName: string) {\n this._fieldName = fieldName;\n this.updateState();\n }\n\n @Input() toolTipGreen: string;\n @Input() toolTipRed: string;\n @Input() toolTipYellow: string;\n @Input() showYellowState = true;\n @Output() stateChange = new EventEmitter();\n\n // the actual state of the underlying dataitem\n public state: number = undefined;\n private _dataItem: any;\n\n // the field where to get the status from\n private _fieldName: string;\n // switch component can be disabled after user clicked\n public disabled = false;\n // When user clicked a new status it is stored here\n // and displayed as grey/intermediate state\n // whenever dataitem is refreshed the intermediate state is deleted again\n public intermediateState: number = undefined;\n\n /**\n * Method is called every time the dataitem is updated by change detection\n */\n updateState(): void {\n if (!this._dataItem || !this._fieldName) {\n return;\n }\n // When user clicked a new status it is stored here\n // and displayed as grey/intermediate state\n // whenever dataitem is refreshed the intermediate state is deleted again\n this.intermediateState = undefined;\n this.disabled = false;\n this.state = get(this._dataItem, this._fieldName);\n }\n\n setState(state: number): void {\n if (this.state !== state) {\n if (!this.readonly) {\n this.state = state;\n }\n this.intermediateState = state;\n this.disabled = true;\n setTimeout(() => this.stateChange.emit(state), 0);\n }\n }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ApDynGridStatusSwitchColumnConfig} from '../config/ap-dyn-grid-status-switch-column.config';\nimport {CompositeFilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\n\n@Component({\n selector: 'ap-status-switch-column-filter',\n template: `\n \n \n `,\n styles: []\n})\nexport class ApStatusSwitchColumnFilterComponent {\n @Input() config: ApDynGridStatusSwitchColumnConfig;\n @Input() currentFilter: CompositeFilterDescriptor;\n @Input() filterService: FilterService;\n @Input() items: any[];\n}\n\n@Component({\n selector: 'ap-status-switch-column-group-header',\n template: `\n
\n {{'Global__Status' | translate}}{{': '}}\n \n \n
\n `,\n styles: []\n})\nexport class ApStatusSwitchColumnGroupHeaderComponent implements OnInit {\n @Input() value: number;\n\n id: string;\n cssClass: string;\n\n ngOnInit(): void {\n switch (this.value) {\n case -1:\n this.id = 'ap-times-circle-solid-icon';\n this.cssClass = 'icon red';\n break;\n case 0:\n this.id = 'ap-exclamation-circle-solid-icon';\n this.cssClass = 'icon yellow';\n break;\n case 1:\n this.id = 'ap-check-circle-solid-icon';\n this.cssClass = 'icon green';\n break;\n }\n }\n}\n\n@Component({\n selector: 'ap-status-switch-column-cell',\n template: `\n \n \n \n \n `,\n styles: []\n})\nexport class ApStatusSwitchColumnCellComponent {\n @Input() config: ApDynGridStatusSwitchColumnConfig;\n @Input() dataItem: any;\n}\n","import {Component, Input} from '@angular/core';\nimport {ApDynGridColorColumnConfig} from '../config/ap-dyn-grid-color-column-config';\n\n@Component({\n selector: 'ap-color-column-cell',\n template: `\n
\n \n \n
\n `,\n styles: []\n})\nexport class ApColorColumnCellComponent {\n @Input() config: ApDynGridColorColumnConfig;\n @Input() dataItem: any;\n\n changeItem(dataItem, field: string, colorCode: string): void {\n dataItem[field] = colorCode;\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {ApDynGridImageColumnConfig} from '../config/ap-dyn-grid-image-column-config';\n\n@Component({\n selector: 'ap-image-column-cell',\n template: `\n \n \n \n `,\n styles: [\n ]\n})\nexport class ApImageColumnCellComponent {\n @Input() config: ApDynGridImageColumnConfig;\n @Input() dataItem: any;\n}\n","import {Component, Input} from '@angular/core';\nimport {ApDynGridClassColorColumnConfig} from '../config/ap-dyn-grid-class-color-column-config';\nimport {CompositeFilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\n\n@Component({\n selector: 'ap-class-color-column-filter',\n template: `\n \n \n `\n})\nexport class ApClassColorColumnFilterComponent {\n @Input() config: ApDynGridClassColorColumnConfig;\n @Input() currentFilter: CompositeFilterDescriptor;\n @Input() filterService: FilterService;\n @Input() items: any[];\n}\n\n@Component({\n selector: 'ap-class-color-column-cell',\n template: `\n \n \n \n \n \n `,\n styles: []\n})\nexport class ApClassColorColumnCellComponent {\n @Input() config: ApDynGridClassColorColumnConfig;\n @Input() dataItem: any;\n @Input() inGroup: boolean;\n}\n","import {Component, Input} from '@angular/core';\nimport {ApDynGridButtonColumnConfig} from '../config/ap-dyn-grid-button-column-config';\n\n@Component({\n selector: 'ap-button-cell-column',\n template: `\n \n \n\n \n \n {{item.text}}\n \n \n \n `,\n styles: []\n})\nexport class ApButtonColumnCellComponent {\n @Input() config: ApDynGridButtonColumnConfig;\n @Input() dataItem: any;\n\n constructor() {\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport {ApDynGridButtonGroupColumnConfig} from '../config/ap-dyn-grid-button-group-column-config';\nimport {AsButtonPipe} from '../pipes/convert/as-button.pipe';\n\n@Component({\n selector: 'ap-button-group-column-cell',\n template: `\n \n\n \n \n \n \n `,\n styles: [\n ]\n})\nexport class ApButtonGroupColumnCellComponent {\n @Input() config: ApDynGridButtonGroupColumnConfig;\n @Input() dataItem: any;\n\n constructor() { }\n\n}\n","import {Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\nimport {ApDynGridEditColumnConfig} from '../config/ap-dyn-grid-edit-column-config';\nimport {PopupSettings as ButtonPopupSettings} from '@progress/kendo-angular-buttons/dist/es2015/listbutton/popup-settings';\nimport {ListItemModel} from '@progress/kendo-angular-buttons';\nimport {DropDownButtonData} from '../config/ap-dyn-grid-button-column-config';\n\ninterface CustomListItemModel extends ListItemModel {\n classList: string | string[] | ((dataItem) => string | string[]) | undefined;\n textFn: (dataItem) => string;\n}\n\n@Component({\n selector: 'ap-edit-column-cell',\n template: `\n \n \n \n \n \n {{getText(item) | translate}}\n \n \n \n \n \n \n `,\n styles: []\n})\nexport class ApEditColumnCellComponent implements OnInit, OnChanges {\n dropDownButtonPopupSettings: ButtonPopupSettings = {\n align: 'right',\n animate: true,\n popupClass: 'ap-kendo-dropdown-button'\n };\n\n @Input() canInlineEdit = false;\n @Input() config: ApDynGridEditColumnConfig;\n @Input() dataItem: any;\n\n public data: CustomListItemModel[];\n\n constructor() {\n }\n\n ngOnInit(): void {\n this.data = this.config.data?.map((data) => {\n return {\n text: typeof data.text === 'string' ? data.text : '',\n textFn: typeof data.text === 'function' ? data.text : undefined,\n classList: typeof data.classList === 'function' ? data.classList : () => data.classList,\n click: () => data.callback.emit(this.dataItem),\n disabled: this._isDisabled(data)\n } as CustomListItemModel;\n }) ?? undefined;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.data = this.config.data?.map((data) => {\n return {\n text: typeof data.text === 'string' ? data.text : '',\n textFn: typeof data.text === 'function' ? data.text : undefined,\n classList: data.classList,\n click: () => data.callback.emit(this.dataItem),\n disabled: this._isDisabled(data)\n } as CustomListItemModel;\n }) ?? undefined;\n }\n\n getText(item: CustomListItemModel): string {\n if (typeof item.textFn === 'function') {\n return item.textFn(this.dataItem);\n } else if (typeof item.text === 'string') {\n return item.text;\n }\n return '';\n }\n\n getClassList(item: CustomListItemModel): string[] {\n if (typeof item.classList === 'function') {\n const res = item.classList(this.dataItem);\n return Array.isArray(res) ? res : [res];\n } else if (Array.isArray(item.classList)) {\n return item.classList;\n } else if (typeof item.classList === 'string') {\n return [item.classList];\n }\n return undefined;\n }\n\n private _isDisabled(data: DropDownButtonData): boolean {\n if (typeof data.disabled === 'function') {\n return data.disabled(this.dataItem);\n } else if (typeof data.disabled === 'boolean') {\n return data.disabled;\n } else {\n return false;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\nimport {ApDynGridColumnConfigBase} from '../../config/ap-dyn-grid-column-config-base';\nimport {ApDynGridIconColumnConfig} from '../../config/ap-dyn-grid-icon-column-config';\n\n@Pipe({\n name: 'asIcon'\n})\nexport class AsIconPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridColumnConfigBase): ApDynGridIconColumnConfig {\n return config as ApDynGridIconColumnConfig;\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {\n CommonModule\n} from '@angular/common';\nimport {\n ApDynGridsComponent\n} from './ap-dyngrids.component';\nimport {\n BodyModule,\n ExcelModule,\n FilterMenuModule,\n GridModule,\n GroupModule,\n HeaderModule,\n PagerModule,\n PDFModule\n} from '@progress/kendo-angular-grid';\nimport {\n ApCoreModule\n} from '../ap-core/ap-core.module';\nimport {\n ApTranslationModule\n} from '../translation/ap-translation.module';\nimport {\n ApUtilsModule\n} from '../ap-utils';\nimport {\n ButtonsModule\n} from '@progress/kendo-angular-buttons';\nimport {\n ApTooltipModule\n} from '../ap-tooltip/ap-tooltip.module';\nimport {\n ApResponsiveTextModule\n} from '../ap-responsive-text/ap-responsive-text.module';\nimport {\n ApSectionHeaderModule\n} from '../ap-section-header/ap-section-header.module';\nimport {\n ApStatusSwitchModule\n} from '../ap-status-switch/ap-status-switch.module';\nimport {\n AsClassColorPipe\n} from './pipes/convert/as-class-color.pipe';\nimport {\n AsButtonPipe\n} from './pipes/convert/as-button.pipe';\nimport {\n AsEditPipe\n} from './pipes/convert/as-edit.pipe';\nimport {\n AsGroupPipe\n} from './pipes/convert/as-group.pipe';\nimport {\n AsPagerPipe\n} from './pipes/convert/as-pager.pipe';\nimport {\n AsPropertyPipe\n} from './pipes/convert/as-property.pipe';\nimport {\n AsStatusPipe\n} from './pipes/convert/as-status.pipe';\nimport {\n AsButtonGroupPipe\n} from './pipes/convert/as-button-group.pipe';\nimport {\n AsColorPipe\n} from './pipes/convert/as-color.pipe';\nimport {\n AsImagePipe\n} from './pipes/convert/as-image.pipe';\nimport {\n AsStatusSwitchPipe\n} from './pipes/convert/as-status-switch.pipe';\nimport {\n AsWizardPipe\n} from './pipes/convert/as-wizard.pipe';\nimport {\n AsWizardButtonPipe\n} from './pipes/convert/as-wizard-button.pipe';\nimport {\n AsWizardExportPipe\n} from './pipes/convert/as-wizard-export.pipe';\nimport {\n AsWizardBreadcrumpsStepperPipe\n} from './pipes/convert/as-wizard-breadcrumps-stepper.pipe';\nimport {\n GetTextPipe\n} from './pipes/getter/get-text.pipe';\nimport {\n GetPropertyPipe\n} from './pipes/getter/get-property.pipe';\nimport {\n AgriportStoreModule\n} from '../stores/stores.module';\nimport {\n AsDetailsGridPipe\n} from './pipes/convert/as-details-grid.pipe';\nimport {\n DropDownButtonData\n} from './config/ap-dyn-grid-button-column-config';\nimport {\n CenterCellPipe\n} from './pipes/center-cell.pipe';\nimport {\n ExecPipesPipe\n} from './pipes/exec.pipes.pipe';\nimport {\n IsHiddenPipe\n} from './pipes/is-hidden.pipe';\nimport {\n AsTemplatePipe\n} from './pipes/convert/as-template.pipe';\nimport {\n GetTemplateContextPipe\n} from './pipes/get-template-context.pipe';\nimport {\n ApPropertyColumnCellComponent,\n ApPropertyColumnFilterComponent,\n ApPropertyColumnHeaderComponent\n} from './components/ap-property-column.component';\nimport {\n ApStatusColumnCellComponent,\n ApStatusColumnFilterComponent,\n ApStatusColumnGroupFilterComponent,\n ApStatusColumnHeaderComponent\n} from './components/ap-status-column.component';\nimport {\n ApTemplateColumnCellComponent,\n ApTemplateColumnHeaderComponent\n} from './components/ap-template-column.component';\nimport {\n ApStatusSwitchColumnCellComponent,\n ApStatusSwitchColumnFilterComponent,\n ApStatusSwitchColumnGroupHeaderComponent\n} from './components/ap-status-switch-column.component';\nimport {\n ApColorColumnCellComponent\n} from './components/ap-color-column.component';\nimport {\n ApImageColumnCellComponent\n} from './components/ap-image-column.component';\nimport {\n ApClassColorColumnCellComponent,\n ApClassColorColumnFilterComponent\n} from './components/ap-class-color-column.component';\nimport {\n ApButtonColumnCellComponent\n} from './components/ap-button-column.component';\nimport {\n ApButtonGroupColumnCellComponent\n} from './components/ap-button-group-column.component';\nimport {\n ApEditColumnCellComponent\n} from './components/ap-edit-column.component';\nimport {\n IndicatorsModule\n} from '@progress/kendo-angular-indicators';\nimport {\n IdInPipe\n} from './pipes/id-in.pipe';\nimport {\n TranslateKendoStatePipe\n} from './pipes/translate-kendo-state.pipe';\nimport {\n ApIconModule\n} from '../icons/ap-icon.module';\nimport {\n ClipboardModule\n} from '@angular/cdk/clipboard';\nimport {\n ContextMenuModule\n} from '@progress/kendo-angular-menu';\nimport { DynamicCellPipe } from './pipes/dynamic-cell.pipe';\nimport {AsIconPipe} from './pipes/convert/as-icon.pipe';\n\n@NgModule({\n declarations: [\n ApDynGridsComponent,\n AsClassColorPipe,\n AsButtonPipe,\n AsEditPipe,\n AsGroupPipe,\n AsPagerPipe,\n AsPropertyPipe,\n AsStatusPipe,\n AsButtonGroupPipe,\n AsColorPipe,\n AsImagePipe,\n AsStatusSwitchPipe,\n AsWizardPipe,\n AsWizardButtonPipe,\n AsWizardExportPipe,\n AsWizardBreadcrumpsStepperPipe,\n AsIconPipe,\n GetTextPipe,\n GetPropertyPipe,\n AsDetailsGridPipe,\n CenterCellPipe,\n ExecPipesPipe,\n IsHiddenPipe,\n AsTemplatePipe,\n GetTemplateContextPipe,\n ApPropertyColumnCellComponent,\n ApPropertyColumnFilterComponent,\n ApPropertyColumnHeaderComponent,\n ApStatusColumnCellComponent,\n ApStatusColumnFilterComponent,\n ApStatusColumnHeaderComponent,\n ApStatusColumnGroupFilterComponent,\n ApTemplateColumnCellComponent,\n ApTemplateColumnHeaderComponent,\n ApStatusSwitchColumnCellComponent,\n ApColorColumnCellComponent,\n ApImageColumnCellComponent,\n ApClassColorColumnCellComponent,\n ApClassColorColumnFilterComponent,\n ApButtonColumnCellComponent,\n ApButtonGroupColumnCellComponent,\n ApEditColumnCellComponent,\n ApStatusSwitchColumnFilterComponent,\n ApStatusSwitchColumnGroupHeaderComponent,\n IdInPipe,\n TranslateKendoStatePipe,\n DynamicCellPipe\n ],\n exports: [\n ApDynGridsComponent,\n ApStatusColumnCellComponent,\n ],\n imports: [\n CommonModule,\n GridModule,\n ApCoreModule,\n FilterMenuModule,\n HeaderModule,\n BodyModule,\n ApTranslationModule,\n ApUtilsModule,\n ButtonsModule,\n ExcelModule,\n PDFModule,\n PagerModule,\n GroupModule,\n ApTooltipModule,\n ApResponsiveTextModule,\n ApSectionHeaderModule,\n ApStatusSwitchModule,\n AgriportStoreModule,\n IndicatorsModule,\n ApIconModule,\n ClipboardModule,\n ContextMenuModule\n ],\n providers: [\n AsButtonPipe,\n AsPagerPipe,\n AsColorPipe,\n AsStatusSwitchPipe,\n AsWizardButtonPipe,\n AsWizardExportPipe,\n DropDownButtonData\n ]\n})\nexport class ApDynGridsModule {\n}\n","\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n\n","import {AfterViewInit, Component, Input} from '@angular/core';\nimport {CompositeFilterDescriptor, FilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\nimport {get} from 'lodash';\nimport {ApColumnState} from '../../ap-interface/enums/ap-column-state.enum';\n\n@Component({\n selector: 'ap-status-filter',\n templateUrl: './ap-status-filter.component.html'\n})\nexport class ApStatusFilterComponent implements AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public filterService: FilterService;\n @Input() public items;\n @Input() public key;\n\n public data: any[];\n public value: any;\n\n protected readonly ApColumnState = ApColumnState;\n\n public ngAfterViewInit(): void {\n if (!this.items || this.items?.length === 0) {\n return;\n }\n this.data = Array.from(new Set(this.items.map(i => get(i, this.key)))).sort();\n this.value = this.currentFilter.filters.map((f: FilterDescriptor) => f.value);\n }\n\n public onChange(values: any[]): void {\n this.filterService.filter({\n filters: values.map(value => ({\n field: this.key,\n operator: value === null ? 'isnull' : 'eq',\n value\n })),\n logic: 'or'\n });\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'idIn'\n})\nexport class IdInPipe implements PipeTransform {\n transform(looking: string[] | number[], dataItem: any, idKey: string): boolean {\n return looking ? looking.Any(l => l.toString() === dataItem[idKey].toString()) : false;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {LoaderThemeColor} from '@progress/kendo-angular-indicators';\nimport {StatusClass} from '../../types/common-types';\n\n@Pipe({\n name: 'translateKendoState',\n})\nexport class TranslateKendoStatePipe implements PipeTransform {\n transform(value: StatusClass): LoaderThemeColor {\n switch (value) {\n case 'ap-status-red':\n return 'error';\n case 'ap-status-yellow':\n return 'warning';\n default:\n return 'success';\n }\n }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {CompositeFilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\nimport {ApDynGridStatusColumnConfig} from '../config/ap-dyn-grid-status-column-config';\n\n@Component({\n selector: 'ap-status-column-filter',\n template: `\n \n \n `,\n styles: []\n})\nexport class ApStatusColumnFilterComponent {\n @Input() config: ApDynGridStatusColumnConfig;\n @Input() currentFilter: CompositeFilterDescriptor;\n @Input() filterService: FilterService;\n @Input() items: any[];\n}\n\n@Component({\n selector: 'ap-status-column-header',\n template: `\n \n \n `,\n styles: []\n})\nexport class ApStatusColumnHeaderComponent {\n @Input() config: ApDynGridStatusColumnConfig;\n}\n\n@Component({\n selector: 'ap-status-column-cell',\n template: `\n \n
\n
\n
\n \n
\n
\n `,\n styles: []\n})\nexport class ApStatusColumnCellComponent {\n @Input() config: ApDynGridStatusColumnConfig;\n @Input() dataItem: any;\n\n public class: string;\n public description: string;\n}\n\n@Component({\n selector: 'ap-status-column-group-filter',\n template: `\n \n
\n {{ 'Global__Status' | translate }}{{ ':' }}\n
\n  \n \n \n
\n `,\n styles: []\n})\nexport class ApStatusColumnGroupFilterComponent implements OnInit {\n @Input() config: ApDynGridStatusColumnConfig;\n @Input() field: any;\n @Input() group: any;\n\n class: string;\n description: string;\n\n ngOnInit(): void {\n if (this.group.items.length !== 0) {\n this.class = this.group.items[0][this.config.class];\n this.description = this.group.items[0][this.config.description];\n }\n }\n}\n","import {\n ApDynGridColumnConfigBase,\n ApDynGridColumnControlType,\n ApDynGridColumnHideConfig,\n IPipeDefinition\n} from './ap-dyn-grid-column-config-base';\nimport {EventEmitter} from '@angular/core';\nimport {Observable, of} from 'rxjs';\n\nexport class DropDownButtonData {\n text: string | ((dataItem) => string);\n classList?: string | string[] | ((dataItem: any) => string | string[]);\n callback: EventEmitter;\n disabled?: boolean | ((item) => boolean);\n}\n\nexport class ApDynGridButtonColumnConfig extends ApDynGridColumnConfigBase {\n public type = ApDynGridColumnControlType.Button;\n\n public callback: EventEmitter;\n public data: DropDownButtonData[];\n public imageUrl: string;\n public tooltip: string;\n public disabledFn: (x) => boolean;\n public disabled$: Observable;\n public itemBusy$: (x) => Observable;\n public selected: (x) => boolean;\n public iconClass: string;\n public isStandardIcon: boolean;\n public standardIcon: string;\n\n constructor(options: {\n hide?: boolean | ApDynGridColumnHideConfig,\n sortIndex?: number,\n sortDesc?: boolean,\n groupIndex?: number,\n groupDesc?: boolean,\n headerStyle?: any,\n style?: any,\n callback?: EventEmitter,\n imageUrl?: string,\n tooltip?: string,\n disabled?: Observable | boolean | ((x) => boolean),\n itemBusy$?: (x) => Observable,\n toggleable?: boolean,\n selected?: (x) => boolean,\n iconClass?: string,\n isStandardIcon?: boolean;\n standardIcon?: string;\n cssClass?: 'left' | 'right',\n pipes?: IPipeDefinition[],\n tooltipPipes?: IPipeDefinition[],\n } = {}) {\n super(options);\n this.width = 37;\n this.callback = options.callback;\n this.imageUrl = options.imageUrl;\n this.tooltip = options.tooltip ? options.tooltip : '';\n this.isStandardIcon = options.isStandardIcon ? options.isStandardIcon : false;\n this.standardIcon = options.isStandardIcon ? options.standardIcon : '';\n this.groupIndex = undefined;\n this.sortIndex = undefined;\n if (options.disabled instanceof Function) {\n this.disabledFn = options.disabled;\n } else if (options.disabled instanceof Observable) {\n this.disabled$ = options.disabled;\n } else if (options.disabled !== undefined) {\n this.disabled$ = of(options.disabled);\n } else {\n this.disabled$ = of(false);\n }\n if (options.itemBusy$) {\n this.itemBusy$ = options.itemBusy$;\n } else {\n this.itemBusy$ = () => of(false);\n }\n if (options.selected) {\n this.selected = options.selected;\n } else {\n this.selected = () => false;\n }\n this.iconClass = options.iconClass;\n }\n}\n","/**\n * enum of all available control types.\n */\nimport {Observable, of} from 'rxjs';\nimport {PipeTransform} from '@angular/core';\nimport {Guid} from 'ts-tooling';\nimport IGuid = System.IGuid;\n\nexport class ApDynGridColumnHideConfig {\n mapHide: boolean;\n selfHide: Observable;\n widthHidePriority: number;\n\n constructor(options: {\n mapHide?: boolean,\n selfHide?: Observable,\n widthHidePriority?: number\n } = {}) {\n this.mapHide = options.mapHide === true;\n this.selfHide = options.selfHide ? options.selfHide : of(false);\n this.widthHidePriority = options.widthHidePriority;\n }\n}\n\nexport enum ApDynGridColumnControlType {\n Status = 'Status',\n Property = 'Property',\n ColumnGroup = 'ColumnGroup',\n Edit = 'Edit',\n Button = 'Button',\n ButtonGroup = 'ButtonGroup',\n Color = 'Color',\n StatusSwitch = 'StatusSwitch',\n Image = 'Image',\n ClassColor = 'ClassColor',\n Template = 'Template',\n Icon = 'Icon'\n}\n\nexport interface IPipeDefinition {\n pipe: PipeTransform;\n args: any[];\n}\n\nexport class ApDynGridColumnConfigBase {\n public id: IGuid;\n type: ApDynGridColumnControlType;\n hide: ApDynGridColumnHideConfig;\n public field: string;\n sortIndex: number;\n sortDesc = false;\n groupIndex: number;\n groupDesc = false;\n headerStyle: any;\n style: any;\n minWidth: number;\n width: number;\n pdfExport: boolean;\n xlsExport: boolean;\n headerFilterable = false;\n enable = false;\n cssClass: string = null;\n dynCssClass: (dataItem: any) => string;\n pipes: IPipeDefinition[] = [];\n tooltipPipes: IPipeDefinition[] = [];\n defaultFilter: any;\n sortable = true;\n\n constructor(options: {\n hide?: boolean | ApDynGridColumnHideConfig,\n sortIndex?: number,\n sortDesc?: boolean,\n groupIndex?: number,\n groupDesc?: boolean,\n headerStyle?: any,\n style?: any,\n width?: number,\n pdfExport?: boolean,\n xlsExport?: boolean,\n enable?: boolean,\n cssClass?: 'left' | 'right' | 'center',\n dynCssClass?: (dataItem: any) => string,\n pipes?: IPipeDefinition[],\n tooltipPipes?: IPipeDefinition[],\n defaultFilter?: any,\n field?: string,\n sortable?: boolean\n } = {}) {\n this.id = new Guid();\n if (options.hide instanceof ApDynGridColumnHideConfig &&\n options.hide.widthHidePriority !== undefined &&\n options.width === undefined) {\n throw new Error('Width is required if widthHidePriority is set');\n }\n this.headerStyle = options.headerStyle ? options.headerStyle : {};\n if (options.hide instanceof ApDynGridColumnHideConfig) {\n this.hide = options.hide;\n } else {\n this.hide = new ApDynGridColumnHideConfig({mapHide: options.hide});\n }\n this.pdfExport = options.pdfExport ?? true;\n this.style = options.style || {};\n this.width = options.width;\n this.xlsExport = options.xlsExport ?? true;\n this.groupIndex = options.groupIndex;\n this.groupDesc = options.groupDesc || false;\n this.sortIndex = options.sortIndex;\n this.sortDesc = options.sortDesc || false;\n this.enable = options.enable || false;\n this.cssClass = options.cssClass || 'left';\n this.pipes = options.pipes || [];\n this.tooltipPipes = options.tooltipPipes || [];\n this.defaultFilter = options.defaultFilter;\n this.field = options.field;\n this.sortable = options.sortable ?? true;\n this.dynCssClass = options.dynCssClass;\n }\n\n public equals(config: ApDynGridColumnConfigBase): boolean {\n return false;\n }\n\n protected getTooltip(func: (dataItem: any) => any): (item: any) => any {\n return (dataItem) => dataItem === undefined ? undefined : func(dataItem);\n }\n}\n","import {ApDynGridColumnConfigBase, ApDynGridColumnControlType, IPipeDefinition} from './ap-dyn-grid-column-config-base';\nimport {Observable, of} from 'rxjs';\nimport {\n DropDownButtonData\n} from './ap-dyn-grid-button-column-config';\n\nexport class ApDynGridEditColumnConfig extends ApDynGridColumnConfigBase {\n public type = ApDynGridColumnControlType.Edit;\n public disabled$: Observable;\n public data: DropDownButtonData[];\n\n public constructor(options: {\n disabled?: Observable | boolean,\n data?: DropDownButtonData[],\n cssClass?: 'left' | 'right',\n pipes?: IPipeDefinition[],\n tooltipPipes?: IPipeDefinition[],\n } = {}) {\n super({});\n this.width = 37;\n this.pdfExport = false;\n this.xlsExport = false;\n this.groupIndex = undefined;\n this.sortIndex = undefined;\n if (options.disabled instanceof Observable) {\n this.disabled$ = options.disabled;\n } else if (options.disabled !== undefined) {\n this.disabled$ = of(options.disabled);\n } else {\n this.disabled$ = of(false);\n }\n this.data = options.data ? options.data.map(d => ({\n text: typeof d.text === 'function' ? d.text : (() => d.text),\n classList: typeof d.classList === 'function' ? d.classList :\n Array.isArray(d.classList) ? () => d.classList : typeof d.classList === typeof '' ? () => [d.classList] :\n () => undefined,\n callback: d.callback,\n disabled: d.disabled\n } as DropDownButtonData)) : undefined;\n }\n}\n","import {\n ApDynGridColumnConfigBase,\n ApDynGridColumnControlType,\n ApDynGridColumnHideConfig,\n IPipeDefinition\n} from './ap-dyn-grid-column-config-base';\nimport {Observable, of} from 'rxjs';\nimport {EventEmitter} from '@angular/core';\n\nexport interface IGridColumnGroupHeaderButtons {\n previousClicked: EventEmitter;\n previousDisabled: Observable;\n nextClicked: EventEmitter;\n nextDisabled: Observable;\n}\n\nexport class ApDynGridGroupColumnConfig extends ApDynGridColumnConfigBase {\n public type = ApDynGridColumnControlType.ColumnGroup;\n public groupColumns: ApDynGridColumnConfigBase[];\n public title: Observable;\n public headerButtons: IGridColumnGroupHeaderButtons;\n public dynamic: boolean;\n\n public constructor(options: {\n hide?: boolean | ApDynGridColumnHideConfig,\n sortIndex?: number,\n sortDesc?: boolean,\n groupIndex?: number,\n groupDesc?: boolean,\n headerStyle?: any,\n style?: any,\n width?: number,\n pdfExport?: boolean,\n xlsExport?: boolean,\n groupColumns?: ApDynGridColumnConfigBase[],\n headerButtons?: IGridColumnGroupHeaderButtons,\n dynamic?: boolean,\n title?: string | Observable,\n cssClass?: 'left' | 'right',\n pipes?: IPipeDefinition[],\n tooltipPipes?: IPipeDefinition[],\n } = {}) {\n super(options);\n this.groupColumns = options.groupColumns ? options.groupColumns : [];\n if (options.title instanceof Observable) {\n this.title = options.title;\n } else {\n this.title = of(options.title ? options.title : ' ');\n }\n this.groupIndex = undefined;\n this.sortIndex = undefined;\n this.headerButtons = options.headerButtons;\n this.dynamic = options.dynamic === true;\n }\n\n equals(config: ApDynGridColumnConfigBase): boolean {\n if (config instanceof ApDynGridGroupColumnConfig) {\n return this.title === config.title && this.groupColumns.length === config.groupColumns.length &&\n !this.groupColumns.Any((c) => !config.groupColumns.Any((conf) => c.equals(conf)));\n }\n return super.equals(config);\n }\n}\n","import {\n ApDynGridColumnConfigBase,\n ApDynGridColumnControlType,\n ApDynGridColumnHideConfig,\n IPipeDefinition\n} from './ap-dyn-grid-column-config-base';\n\nexport class ApDynGridImageColumnConfig extends ApDynGridColumnConfigBase {\n public type = ApDynGridColumnControlType.Image;\n public title: string;\n public imageUrl: string;\n public tooltip: string;\n public imageWidth: string;\n public imageHeight: string;\n\n public constructor(options: {\n hide?: boolean | ApDynGridColumnHideConfig,\n field?: string,\n title?: string,\n key?: string,\n sortIndex?: number,\n sortDesc?: boolean,\n groupIndex?: number,\n groupDesc?: boolean,\n headerStyle?: any,\n width?: number,\n imageWidth?: string,\n imageHeight?: string,\n imageUrl?: string,\n tooltip?: string,\n cssClass?: 'left' | 'right',\n pipes?: IPipeDefinition[],\n tooltipPipes?: IPipeDefinition[],\n } = {}) {\n super(options);\n this.imageUrl = options.imageUrl;\n this.tooltip = options.tooltip ? options.tooltip : '';\n this.title = options.title ? options.title : ' ';\n this.width = options.width;\n this.imageWidth = options.imageWidth ? options.imageWidth : '32px';\n this.imageHeight = options.imageHeight ? options.imageHeight : '32px';\n this.groupIndex = undefined;\n this.sortIndex = undefined;\n }\n}\n","\nexport class ApDynGridPagerConfigBase {\n public type = ApDynGridPagerControlType.None;\n\n constructor () {\n }\n}\n\nexport class ApDynGridPagerButton {\n\n constructor (options: {} = {}) {\n }\n}\n\nexport enum ApDynGridPagerControlType {\n None = 0,\n Pager = 1,\n Wizard = 2\n}\n","import {ApDynGridPagerConfigBase, ApDynGridPagerControlType} from './ap-dyn-grid-pager-config-base';\nimport {IGridPagerData, IWizardChoiceData, IWizardChoiceDataValue} from '../../ap-interface';\nimport {EventEmitter} from '@angular/core';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {FormGroup} from '@angular/forms';\nimport {ApDynformsConfigTabs} from '../../ap-dynforms/config/ap-dynforms-config-tabs';\nimport {Observable, of} from 'rxjs';\nimport {ApUtilService} from '../../ap-utils/service/ap-util.service';\n\nexport interface IGridPagerSubmitData {\n ids: any[];\n items: any[];\n value: any;\n form: FormGroup;\n}\n\nexport interface IGridPagerChoiceSelect {\n keys: any[];\n items: any[];\n form: FormGroup;\n}\n\nexport interface IDynGridWizardChoiceData extends IWizardChoiceData {\n onSubmit?: EventEmitter;\n formConfig?: ApDynformsConfigFieldset[] | ApDynformsConfigTabs[];\n onChoiceSelect?: EventEmitter;\n values?: Array;\n}\n\nexport interface IDynGridWizardChoiceDataValue extends IWizardChoiceDataValue {\n formConfig?: ApDynformsConfigFieldset[] | ApDynformsConfigTabs[];\n onChoiceSelect?: EventEmitter;\n onSubmit?: EventEmitter;\n}\n\nexport interface IDynGridProperty {\n selectedItems: any[];\n}\n\nexport interface IGridPagerCallBackData {\n ids: any[];\n items: any[];\n value: any;\n}\n\nexport class PagerIconButton {\n icon: string;\n callback: EventEmitter;\n tooltip?: string;\n}\n\nexport class PagerLowerButton {\n name: string;\n callback: EventEmitter;\n tooltip?: string;\n}\n\nexport interface IDynGridWizardChoiceData extends IWizardChoiceData {\n callback?: EventEmitter;\n}\n\nexport class ApDynGridPagerConfig extends ApDynGridPagerConfigBase {\n public type = ApDynGridPagerControlType.Pager;\n\n public listMassEditing: Observable> = of([]);\n public apply: EventEmitter;\n public columns: any[] = [];\n public delete: EventEmitter;\n public showOnlyValues = true;\n public hasPermission = false;\n public preselect = true;\n public showWithoutSelection = false;\n public iconButtons: PagerIconButton[];\n public lowerButtons: PagerLowerButton[];\n\n constructor(options: {\n apply?: EventEmitter,\n columns?: any[],\n delete?: EventEmitter,\n showOnlyValues?: boolean,\n listMassEditing?: Array | Observable>,\n hasPermission?: boolean,\n preselect?: boolean,\n showWithoutSelection?: boolean,\n iconButtons?: PagerIconButton[],\n lowerButtons?: PagerLowerButton[]\n } = {}) {\n super();\n this.apply = options.apply;\n this.columns = options.columns ? options.columns : [];\n this.delete = options.delete;\n this.listMassEditing = ApUtilService.asObservable(options.listMassEditing, []);\n this.showOnlyValues = options.showOnlyValues ? options.showOnlyValues : null;\n this.hasPermission = options.hasPermission ? options.hasPermission : false;\n this.showWithoutSelection = options.showWithoutSelection ? options.showWithoutSelection : false;\n this.preselect = options.preselect !== false;\n this.iconButtons = options.iconButtons;\n this.lowerButtons = options.lowerButtons;\n }\n}\n","import {ApDynGridPagerConfigBase, ApDynGridPagerControlType} from './ap-dyn-grid-pager-config-base';\nimport {EventEmitter} from '@angular/core';\nimport {Observable, of} from 'rxjs';\n\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigTabs} from '../../ap-dynforms/config/ap-dynforms-config-tabs';\n\nexport interface IGridWizardSubmitData {\n ids: any[];\n items: any[];\n value: any;\n}\n\nexport interface IDynGridWizardFormConfig {\n onSubmit?: EventEmitter;\n config?: ApDynformsConfigFieldset[] | ApDynformsConfigTabs[];\n submitDisabled?: ((values: any) => boolean);\n showMassEdit?: boolean;\n}\n\nexport class ApDynGridPagerWizardConfig extends ApDynGridPagerConfigBase {\n public type = ApDynGridPagerControlType.Wizard;\n public sections: ApDynGridPagerWizardSection[] = [];\n public dynGridWizardFormConfig: IDynGridWizardFormConfig;\n\n constructor(left: ApDynGridPagerWizardSection,\n center: ApDynGridPagerWizardSection,\n right: ApDynGridPagerWizardSection,\n options: {\n formConfig?: IDynGridWizardFormConfig,\n } = {}) {\n super();\n this.dynGridWizardFormConfig = options.formConfig;\n this.sections.push(({...left, align: 'left'}));\n this.sections.push(({...center, align: 'center'}));\n this.sections.push(({...right, align: 'right'}));\n }\n}\n\nexport class ApDynGridPagerWizardSection {\n type = ApDynGridPagerWizardSectionType.None;\n align: string;\n}\n\nexport class IconSubButton {\n tooltip: string;\n icon: string;\n callback: EventEmitter;\n value: any;\n id?: any;\n}\n\nexport class ApDynGridPagerWizardButton extends ApDynGridPagerWizardSection {\n type = ApDynGridPagerWizardSectionType.Button;\n id?: string;\n key: string;\n callback: EventEmitter;\n active$ = new Observable();\n iconButtons: IconSubButton[];\n // the optional value is passed to the callback on emit() for further processing in component\n value: any;\n\n constructor(key: string, callback: EventEmitter, params: {\n active?: Observable,\n iconButtons?: IconSubButton[],\n value?: any,\n id?: string\n } = {}) {\n super();\n this.key = key;\n this.callback = callback;\n this.id = params.id;\n if (params.active) {\n /*if (params.active instanceof AnonymousSubject) {\n this.active$ = (params.active as AnonymousSubject).asObservable()\n .pipe(\n map(o => o === true)\n );\n } else {*/\n this.active$ = params.active;\n // }\n } else {\n this.active$ = of(true);\n }\n if (params.iconButtons) {\n this.iconButtons = params.iconButtons;\n } else {\n this.iconButtons = [];\n }\n this.value = params.value;\n }\n}\n\nexport class ApDynGridPagerWizardExport extends ApDynGridPagerWizardSection {\n type = ApDynGridPagerWizardSectionType.Export;\n\n pdf = true;\n xls = true;\n xlsCallback: EventEmitter = null;\n customExports: {\n emitter: EventEmitter,\n icon: string,\n tooltip: string,\n disabled$?: Observable,\n type?: 'all' | 'selected'\n }[] = [];\n\n constructor(options: {\n pdf?: boolean,\n xls?: boolean,\n xlsCallback?: EventEmitter,\n customIcons?: {\n emitter: EventEmitter,\n icon: string, tooltip: string,\n disabled$?: Observable,\n type?: 'all' | 'selected'\n }[]\n } = {}) {\n super();\n this.pdf = options.pdf !== false;\n this.xls = options.xls !== false;\n this.xlsCallback = options.xlsCallback || null;\n this.customExports = options.customIcons || [];\n }\n}\n\nexport class ApDynGridPagerWizardBreadcrumbsStepper extends ApDynGridPagerWizardSection {\n type = ApDynGridPagerWizardSectionType.BreadcrumbsStepper;\n\n columns: string[];\n selected: number;\n\n constructor(columns: string[], selected: number) {\n super();\n this.columns = columns;\n this.selected = selected;\n }\n}\n\nexport enum ApDynGridPagerWizardSectionType {\n None = 0,\n Button = 1,\n Export = 2,\n BreadcrumbsStepper = 3\n}\n","import {\n ApDynGridColumnConfigBase,\n ApDynGridColumnControlType,\n ApDynGridColumnHideConfig,\n IPipeDefinition\n} from './ap-dyn-grid-column-config-base';\n\nexport enum FilterType {\n STRING = 'STRING',\n KENDO_DATE_RANGE = 'KENDO_DATE_RANGE',\n DATE = 'DATE',\n MONTH = 'MONTH',\n YEAR = 'YEAR',\n CHECKBOX = 'CHECKBOX',\n NUMBER = 'NUMBER',\n NUMBER_LIST = 'NUMBER_LIST',\n OBJECT = 'OBJECT'\n}\n\nexport enum PropertyTemplate {\n NONE = 'NONE',\n NUMBER = 'NUMBER',\n DATE = 'DATE'\n}\n\nexport class ApDynGridPropertyColumnConfig extends ApDynGridColumnConfigBase {\n public type = ApDynGridColumnControlType.Property;\n public checkbox: boolean;\n public filterable: boolean;\n public filterType: FilterType;\n public format: string;\n public svg: boolean;\n public svgClassField: string;\n public title: string;\n public unit: string;\n public formatCallback: (dataItem: any, value: any) => string;\n public headerExtraLines: string[] = [];\n public tooltip: (dataItem: any) => string;\n public columnLoading: string;\n public breakHeaderLine: boolean;\n public usedKendoDefaultFilter: 'text' | 'numeric' | 'boolean' | 'date';\n /**\n * Allows multiline texts in that particular column.\n * The text has to be pre-formatted with line breaks in order\n * to work properly with responsive text component and css Ellipsis ('...' abbreviation)\n */\n public multiline: boolean;\n public template: PropertyTemplate;\n\n constructor(options: {\n hide?: boolean | ApDynGridColumnHideConfig,\n sortIndex?: number,\n sortDesc?: boolean,\n groupIndex?: number,\n groupDesc?: boolean,\n headerStyle?: any,\n headerFilterable?: boolean,\n style?: any,\n width?: number,\n pdfExport?: boolean,\n xlsExport?: boolean,\n checkbox?: boolean,\n field?: string,\n filterable?: boolean,\n filterType?: FilterType,\n format?: string,\n svg?: boolean,\n svgClassField?: string,\n title?: string,\n unit?: string,\n formatCallback?: (dataItem: any, value: any) => string;\n tooltip?: (dataItem: any) => string,\n columnLoading?: string,\n cssClass?: 'left' | 'right' | 'center',\n dynCssClass?: (dataItem: any) => string,\n pipes?: IPipeDefinition[],\n tooltipPipes?: IPipeDefinition[],\n headerExtraLines?: string[],\n breakHeaderLine?: boolean,\n multiline?: boolean,\n template?: PropertyTemplate,\n sortable?: boolean\n } = {}) {\n super(options);\n this.checkbox = options.checkbox ? options.checkbox : false;\n this.field = options.field ? options.field : undefined;\n this.filterable = options.filterable === false ? false : true; // default is true and can explicitly set to false in component\n this.format = options.format ? options.format : '';\n this.svg = options.svg ? options.svg : false;\n this.svgClassField = options.svgClassField ? options.svgClassField : undefined;\n this.title = options.title ? options.title : ' ';\n this.headerFilterable = options.headerFilterable ? options.headerFilterable : false;\n this.formatCallback = options.formatCallback;\n this.unit = options.unit;\n this.tooltip = options.tooltip ? super.getTooltip(options.tooltip) : () => undefined;\n this.columnLoading = options.columnLoading ? options.columnLoading : undefined;\n this.headerExtraLines = options?.headerExtraLines ? options.headerExtraLines : [];\n this.breakHeaderLine = options?.breakHeaderLine ?? false;\n this.multiline = options?.multiline ?? false;\n this.template = options?.template ?? PropertyTemplate.NONE;\n\n // per styleguide discussion we are always using kendo default filter menu when having dates.\n if (this.format?.length > 0) {\n this.usedKendoDefaultFilter = 'date';\n } else {\n this.filterType = options.checkbox ? FilterType.CHECKBOX :\n options.filterType ? options.filterType : FilterType.STRING;\n this.usedKendoDefaultFilter = undefined;\n }\n\n // center checkbox column by default\n if (this.checkbox && !options.cssClass) {\n super.cssClass = 'center';\n }\n\n switch (options.template) {\n case PropertyTemplate.NUMBER:\n if (options.tooltip === undefined) {\n this.tooltip = (dataItem) => dataItem ? dataItem[options.field] : undefined;\n }\n if (options.cssClass === undefined) {\n this.cssClass = 'right';\n }\n this.filterType = FilterType.NUMBER;\n this.field = options.field + 'Rounded';\n break;\n case PropertyTemplate.DATE:\n this.field = options.field + 'Midnight';\n break;\n }\n }\n\n equals(config: ApDynGridColumnConfigBase): boolean {\n if (config instanceof ApDynGridPropertyColumnConfig) {\n return this.title === config.title && this.field === config.field;\n }\n return super.equals(config);\n }\n}\n","import {\n ApDynGridColumnConfigBase,\n ApDynGridColumnControlType,\n ApDynGridColumnHideConfig,\n IPipeDefinition\n} from './ap-dyn-grid-column-config-base';\nimport {Observable} from 'rxjs';\n\nexport class ApDynGridStatusColumnConfig extends ApDynGridColumnConfigBase {\n public type = ApDynGridColumnControlType.Status;\n public field: string;\n public filterable: boolean;\n public showHeaderTitle: boolean;\n public title: string;\n public class: string;\n public description: string;\n public pendingIds: Observable;\n public pendingTooltip: Observable;\n\n constructor(options: {\n hide?: boolean | ApDynGridColumnHideConfig,\n sortIndex?: number,\n sortDesc?: boolean,\n groupIndex?: number,\n groupDesc?: boolean,\n headerStyle?: any,\n style?: any,\n pdfExport?: boolean,\n xlsExport?: boolean,\n field?: string,\n filterable?: boolean,\n showHeaderTitle?: boolean,\n title?: string,\n class?: string,\n description?: string,\n cssClass?: 'left' | 'right',\n pipes?: IPipeDefinition[],\n tooltipPipes?: IPipeDefinition[],\n pending?: Observable,\n pendingTooltip?: Observable,\n defaultFilter?: any\n } = {}) {\n super(options);\n this.width = 30;\n this.field = options.field ? options.field : undefined;\n this.filterable = options.filterable !== false; // default is true and can explicitly set to false in component\n this.showHeaderTitle = options.showHeaderTitle ? options.showHeaderTitle : false;\n this.title = options.title ? options.title : ' ';\n this.class = options.class;\n this.description = options.description;\n this.pendingIds = options.pending;\n this.pendingTooltip = options.pendingTooltip;\n this.defaultFilter = options.defaultFilter;\n }\n}\n","import {\n ApDynGridColumnConfigBase,\n ApDynGridColumnControlType,\n ApDynGridColumnHideConfig,\n IPipeDefinition\n} from './ap-dyn-grid-column-config-base';\nimport {Observable, of} from 'rxjs';\nimport {EventEmitter} from '@angular/core';\n\nexport interface IStateChange {\n item: any;\n state: number;\n}\n\nexport class ApDynGridStatusSwitchColumnConfig extends ApDynGridColumnConfigBase {\n public type = ApDynGridColumnControlType.StatusSwitch;\n public disableGreen: Observable;\n public disableGreenFn: (x) => boolean;\n public disableRed: Observable;\n public disableRedFn: (x) => boolean;\n public disableYellow: Observable;\n public disableYellowFn: (x) => boolean;\n public stateChange: EventEmitter;\n public title: string;\n public readonly: boolean;\n public showYellowState: boolean;\n public toolTipGreen: string;\n public toolTipRed: string;\n public filterable: boolean;\n\n constructor(options: {\n hide?: boolean | ApDynGridColumnHideConfig,\n sortIndex?: number,\n sortDesc?: boolean,\n groupIndex?: number,\n groupDesc?: boolean,\n headerStyle?: any,\n style?: any,\n pdfExport?: boolean,\n xlsExport?: boolean,\n disableGreen?: boolean | Observable | ((x) => boolean),\n disableRed?: boolean | Observable | ((x) => boolean),\n disableYellow?: boolean | Observable | ((x) => boolean),\n field?: string,\n stateChange?: EventEmitter<{ item: any, state: number }>,\n title?: string,\n readonly?: boolean,\n showYellowState?: boolean,\n toolTipGreen?: string,\n toolTipRed?: string,\n cssClass?: 'left' | 'right',\n pipes?: IPipeDefinition[],\n tooltipPipes?: IPipeDefinition[],\n filterable?: boolean,\n defaultFilter?: any\n } = {}) {\n super(options);\n if (options.disableGreen) {\n if (options.disableGreen instanceof Function) {\n this.disableGreenFn = options.disableGreen;\n } else if (options.disableGreen instanceof Observable) {\n this.disableGreen = options.disableGreen;\n } else {\n this.disableGreen = of(options.disableGreen);\n }\n }\n\n if (options.disableRed) {\n if (options.disableRed instanceof Function) {\n this.disableRedFn = options.disableRed;\n } else if (options.disableRed instanceof Observable) {\n this.disableRed = options.disableRed;\n } else {\n this.disableRed = of(options.disableRed);\n }\n }\n\n if (options.disableYellow) {\n if (options.disableYellow instanceof Function) {\n this.disableYellowFn = options.disableYellow;\n } else if (options.disableYellow instanceof Observable) {\n this.disableYellow = options.disableYellow;\n } else {\n this.disableYellow = of(options.disableYellow);\n }\n }\n\n this.stateChange = options.stateChange;\n this.title = options.title ? options.title : ' ';\n this.readonly = options.readonly;\n this.showYellowState = options.showYellowState !== undefined ? options.showYellowState : true;\n this.toolTipGreen = options.toolTipGreen ? options.toolTipGreen : ' ';\n this.toolTipRed = options.toolTipRed ? options.toolTipRed : ' ';\n this.filterable = options.filterable === false ? false : true; // default is true and can explicitly set to false in component\n }\n}\n","export enum ApDynGridDetailsConfigType {\n None = 'None',\n Grid = 'Grid',\n}\n\nexport class ApDynGridDetailsBaseConfig {\n type = ApDynGridDetailsConfigType.None;\n hide: (x) => boolean = () => false;\n\n constructor(options: {\n hide?: (x) => boolean\n } = {}) {\n this.hide = options.hide ? options.hide : () => false;\n }\n\n showIf(dataItem, index: number): boolean {\n return !this.hide(dataItem);\n }\n}\n","import {ApDynGridDetailsBaseConfig, ApDynGridDetailsConfigType} from './ap-dyn-grid-details-base-config';\nimport {ApDynGridColumnConfigBase} from '../ap-dyn-grid-column-config-base';\nimport {ApDynGridPagerConfigBase} from '../ap-dyn-grid-pager-config-base';\nimport {SelectableSettings} from '@progress/kendo-angular-grid';\n\nexport class ApDynGridDetailsGridConfig extends ApDynGridDetailsBaseConfig {\n type = ApDynGridDetailsConfigType.Grid;\n columns: ApDynGridColumnConfigBase[];\n field: string;\n groupable: boolean;\n pager: ApDynGridPagerConfigBase;\n selectable: SelectableSettings;\n checkboxDisabled: boolean;\n\n constructor(options: {\n hide?: (x) => boolean,\n columns?: ApDynGridColumnConfigBase[],\n field?: string,\n groupable?: boolean,\n pager?: ApDynGridPagerConfigBase,\n selectable?: SelectableSettings,\n checkboxDisabled?: boolean,\n } = {}) {\n super(options);\n this.columns = options.columns ? options.columns : [];\n this.field = options.field ? options.field : '';\n this.groupable = options.groupable ? options.groupable : false;\n this.pager = options.pager ? options.pager : new ApDynGridPagerConfigBase();\n this.selectable = options.selectable ? options.selectable : {checkboxOnly: false, mode: 'multiple', enabled: true};\n this.checkboxDisabled = options.checkboxDisabled === true;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {CenterCellService} from '../services/center-cell.service';\n\n@Pipe({\n name: 'centerCell'\n})\nexport class CenterCellPipe implements PipeTransform {\n constructor(private centerCellService: CenterCellService) {}\n\n transform(value: string): string {\n return this.centerCellService.getCellCssClass(value);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridPagerConfigBase} from '../../config/ap-dyn-grid-pager-config-base';\nimport {ApDynGridPagerConfig} from '../../config/ap-dyn-grid-pager-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asPager'\n})\nexport class AsPagerPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridPagerConfigBase): ApDynGridPagerConfig {\n return config as ApDynGridPagerConfig;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridPagerWizardButton, ApDynGridPagerWizardSection} from '../../config/ap-dyn-grid-pager-wizard-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asWizardButton'\n})\nexport class AsWizardButtonPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridPagerWizardSection): ApDynGridPagerWizardButton {\n return config as ApDynGridPagerWizardButton;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridPagerWizardExport, ApDynGridPagerWizardSection} from '../../config/ap-dyn-grid-pager-wizard-config';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'asWizardExport'\n})\nexport class AsWizardExportPipe implements PipeTransform {\n\n @Trace()\n transform(config: ApDynGridPagerWizardSection): ApDynGridPagerWizardExport {\n return config as ApDynGridPagerWizardExport;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridColumnConfigBase} from '../config/ap-dyn-grid-column-config-base';\nimport {of} from 'rxjs';\n\n@Pipe({\n name: 'execPipes',\n})\nexport class ExecPipesPipe implements PipeTransform {\n transform(value: any, ...args: [ApDynGridColumnConfigBase, string]): any {\n const columnInfo = args[0];\n const pipes = args[0][args[1]];\n let res = value;\n for (const p of pipes) {\n res = p.pipe.transform(res, ...p.args);\n }\n if (!!res && (typeof res.subscribe === 'function' || typeof res.then === 'function')) {\n return res;\n }\n return of(res);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {get} from 'lodash';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'getProperty'\n})\nexport class GetPropertyPipe implements PipeTransform {\n\n @Trace()\n transform(dataItem: any, ...field: string[]): any {\n return get(dataItem, field[0]);\n }\n\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({providedIn: 'root'})\nexport class CenterCellService {\n public getCellCssClass(value: string): string {\n switch (value) {\n case 'left':\n return 'cell-content-left';\n case 'right':\n return 'cell-content-right';\n case 'center':\n return 'cell-content-center';\n default:\n return 'cell-content-left';\n }\n }\n}\n","export enum AgriportConstantsEnum {\n EcMin = 'EC_MIN',\n EcMax = 'EC_MAX',\n BaseFertLicenseAmountAbs = 'BF_LICENSE_AMOUNT_ABS',\n BaseFertLicenseAmountDiff = 'BF_LICENSE_AMOUNT_DIFF',\n HistogrammExcludeLimit = 'HISTOGRAMM_EXCLUDE_LIMIT',\n PpMinProductOfProductMax = 'PP_MIN_PRODUCT_OF_PRODUCT_MAX',\n SatAutumnScanDate = 'SAT_AUTUMN_SCAN_DATE',\n SatRegularScanDate = 'SAT_REGULAR_SCAN_DATE',\n RegularScanUsageFactor = 'REGULAR_SCAN_USAGE_FACTOR'\n}\n\nexport enum BaseFertLicenseAmountAbs {\n Hectare = '0',\n Percent = '1'\n}\n","export enum ApApplicationMode {\n Constant = 1,\n Variable = 2,\n Online = 3\n}\n","/**\n * represent the supported chart types\n */\nexport enum ApStatsType {\n Boxplot = 'boxplot',\n DonutPie = 'donutpie',\n AreaBarLine = 'areabarline',\n MainSecondCrop = 'mainsecondcrop',\n DateTimeSelection = 'datetimeselection',\n Histogram = 'histogram',\n Nutrients = 'nutrient',\n Planning = 'planning',\n GenericBars = 'genericbars',\n BaseFertStats = 'basefertstats',\n PlanningWizardOverviewStats = 'planningwizardoverviewstats',\n NFertilizationLogfileStats = 'nfertilizationlogfilestats',\n NFertilizationNNeedStats = 'nfertilizationnneedstats',\n FieldScanDataTableStats = 'fieldscandatatablestats',\n FieldsCropRotationStats = 'fieldscroprotationstats',\n FieldsNdiStats = 'fieldndistats',\n DashboardStats = 'dashboardstats',\n GenericChart = 'genericchart',\n PpPlanningWizardOverviewStats = 'ppplanningwizardoverviewstats',\n}\n","export enum ApColumnState {\n Red = -1,\n Yellow = 0,\n Green = 1,\n Grey = 2\n}\n","/**\n * represent the supported element oxyd types\n */\nexport enum ApElementOxydTypeEnum {\n P2O5 = 'P2O5',\n K2O = 'K2O',\n MgO = 'MgO',\n P = 'P',\n K = 'K',\n Mg = 'Mg'\n}\n","export enum ApElementType {\n P = 1,\n K = 2,\n Mg = 3,\n CaO = 4,\n N = 5\n}\n","export enum ApFeatureModulKey {\n Administration = 'administration',\n BaseData = 'basedata',\n Fields = 'fieldmanagement',\n BaseFertilization = 'nutrients',\n Seedmaps = 'seedmaps',\n PlantProtection = 'plantprotection',\n NFertilization = 'nfertilization',\n Evaluation = 'evaluation',\n Import = 'import',\n Settings = 'settings',\n Satellite = 'satellite',\n Documentation = 'documentation',\n Fungidetect = 'fungidetect',\n EditHelp = 'edithelp',\n Academy = 'academy'\n}\n","/**\n * represent the supported Input Control Types\n */\nexport enum ApGridPagerType {\n DropDown = 'dropDown',\n Decimal = 'decimal',\n Numeric = 'numeric',\n Calender = 'calender',\n CalenderMonthly = 'calendermonthly',\n None = 'none',\n Text = 'text'\n}\n","export enum LEGEND_IDS {\n INVALID,\n CROP_TYPE,\n SOIL_GROUP,\n NUTRIENT_DISTRIBUTION,\n TRACK,\n NEED,\n NUTRIENT_PLANNING,\n N_LOG_INTERPOLATION,\n PP_LOG_INTERPOLATION,\n LOG,\n NDI,\n TASK_MANAGEMENT,\n N_PLANNING,\n N_UPTAKE,\n PP_APPLICATION\n}\n","/**\n * holds all Application Urls\n */\nexport enum ApMenuUrls {\n DASHBOARD = '/dashboard',\n ADMINISTRATION = '/administration',\n ADMINISTRATION_TRANSLATIONS = '/administration/translations',\n ADMINISTRATION_KRIGING = '/administration/kriging',\n ADMINISTRATION_LICENCES = '/administration/licences',\n ADMINISTRATION_ACCESS_PERMISSIONS = '/administration/access-permissions',\n INFO = '/info',\n INFO_LEGAL = 'info/legal',\n BASE_DATA = '/basedata',\n BASE_DATA_SETTINGS = '/basedata/settings',\n BASE_DATA_USERS = '/basedata/users',\n BASE_DATA_USERS_EDIT = 'basedata/users/edit',\n BASE_DATA_DOCU_RESOURCES = '/basedata/docu-ressources',\n BASE_DATA_CROP_TYPES = '/basedata/croptypes',\n BASE_DATA_CROP_GROUPS = '/basedata/cropgroups',\n BASE_DATA_VARIETIES = '/basedata/varieties',\n BASE_DATA_FERTILIZERS = '/basedata/fertilizers',\n BASE_DATA_PLANTPROTECTION = '/basedata/plant-protections',\n BASE_DATA_FARMS = '/basedata/farms',\n BASE_DATA_SUB_FARMS = '/basedata/subfarms',\n BASE_DATA_WORKTYPES = '/basedata/worktypes',\n FIELD_MANAGEMENT = '/fieldmanagement',\n FIELD_MANAGEMENT_OVERVIEW = '/fieldmanagement/overview',\n FIELD_MANAGEMENT_TAKE_OVER_FIELDS = '/fieldmanagement/takeover-fields',\n FIELD_MANAGEMENT_CONVERSION = '/fieldmanagement/conversion',\n FIELD_MANAGEMENT_CROP_ROTATION = '/fieldmanagement/crop-rotation',\n FIELD_MANAGEMENT_SOIL_SAMPLE_FIELDS = '/fieldmanagement/soil-sample-fields',\n FIELD_MANAGEMENT_SATELLITE = '/fieldmanagement/satellite',\n FIELD_MANAGEMENT_SOIL_SCANNER = '/fieldmanagement/soil-scanner',\n FIELD_MANAGEMENT_ELEVATION = '/fieldmanagement/elevation',\n FIELD_MANAGEMENT_MONITORING = '/fieldmanagement/monitoring',\n FIELD_WORK = '/fieldwork',\n FIELD_WORK_LIVE_VIEW = '/fieldwork/live-view',\n FIELD_WORK_OVERVIEW = '/fieldwork/overview',\n FIELD_WORK_PLANNING = 'fieldwork/planning',\n FIELD_WORK_MEASURES = '/fieldwork/measures',\n FIELD_WORK_BOOKING = '/fieldwork/booking',\n FIELD_WORK_ACTION_LOOKUP = '/fieldwork/action-lookup-overview',\n EVALUATION_PERFORMANCE = '/evaluation/performance-evaluation',\n EVALUATION_FIELD_DIARY = '/evaluation/field-diary-evaluation',\n FUNGI_DETECT = '/fungidetect',\n FUNGI_DETECT_OVERVIEW = '/fungidetect/overview',\n IMPORT = '/import',\n IMPORT_OVERVIEW = '/import/overview',\n IMPORT_UPLOAD = '/import/upload',\n IMPORT_FORMATS = '/import/formats',\n LOGIN = '/login',\n LOGIN_PASSWORD_RESET = '/login/request-password-reset',\n LOGIN_PASSWORD_RECOVER = '/login/password-recovery',\n CONTACT = 'login/contact',\n IMPRINT = 'login/imprint',\n AGREEMENT = 'login/agreement',\n LEGAL = 'login/legal',\n INVITATIONS = '/login/invitations',\n N_FERTILIZATION = '/n-fertilization',\n N_FERTILIZATION_OVERVIEW = '/n-fertilization/overview',\n N_FERTILIZATION_PLANNING = '/n-fertilization/planning',\n N_FERTILIZATION_LOG_FILES = '/n-fertilization/logfiles',\n N_FERTILIZATION_BOOKING = '/n-fertilization/booking',\n N_FERTILIZATION_N_NEED = '/n-fertilization/n-need',\n NUTRIENTS = '/nutrients',\n NUTRIENTS_OVERVIEW = '/nutrients/overview',\n NUTRIENTS_PLANNING = '/nutrients/planning',\n NUTRIENTS_LOG_FILES = '/nutrients/logfiles',\n NUTRIENTS_BOOKING = '/nutrients/booking',\n NUTRIENTS_DISTRIBUTION = '/nutrients/nutrients-distribution',\n NUTRIENTS_P_NEED = '/nutrients/p-need',\n NUTRIENTS_SOIL_SAMPLE_PLANNING_OVERVIEW = '/nutrients/soil-sample-planning',\n NUTRIENTS_SOIL_SAMPLE_FIELDS = '/nutrients/soil-sample-fields',\n SETTINGS_USER_PROFILE = '/settings/user-profile',\n PLANT_PROTECTION = '/plant-protection',\n PLANT_PROTECTION_OVERVIEW = '/plant-protection/overview',\n PLANT_PROTECTION_PLANNING = '/plant-protection/planning',\n PLANT_PROTECTION_LOG_FILES = '/plant-protection/logfiles',\n PLANT_PROTECTION_BOOKING = '/plant-protection/booking',\n TASK_MANAGEMENT = '/task-management',\n TASK_MANAGEMENT_OVERVIEW = '/task-management/overview',\n}\n","// TODO: Get rid of using enums as id link (they could be different from database)\nexport enum ApOperationMode {\n AppMap = 1,\n Bonitur = 5,\n Const = 6\n}\n","/**\n * represent a Visible State\n */\nexport enum ApVisibleStates {\n IN = 'in',\n OUT = 'out'\n}\n","/**\n * represent the View State of the Map Control in Agriport\n */\nexport enum MapViewMode {\n HIDE = 'mapview_hidden',\n NORMAL = 'mapview_normal',\n MAXIMIZE = 'mapview_max',\n}\n\n/**\n * represent the Menus that con be shown with the Map Control\n */\nexport enum MapViewCurrentMenu {\n MAP = 'map',\n STATS = 'stats',\n HELP = 'help',\n}\n","/**\n * represent the Main Page Mode\n */\nexport enum PageMode {\n // Login Screen\n FULLSCREEN = 'FULLSCREEN',\n // Agriport Screen\n HALFSCREEN = 'HALFSCREEN',\n // Loading Screen (before anything is loaded)\n LOADINGSCREEN = 'LOADINGSCREEN',\n}\n","/**\n * represent the Modes of the Sidebar Menu\n */\nexport enum SidebarMode {\n // Full Size of the Sidebar Menu\n OPEN = 'SIDEBAR_OPEN',\n // Small Sidebar Menu\n HALF = 'SIDEBAR_HALF',\n // Sidebar Menu hidden\n CLOSE = 'SIDEBAR_CLOSE',\n // Sidebar Menu for mobile Devices (not used yet)\n MOBILE = 'SIDEBAR_MOBILE'\n}\n","import {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\n\nexport enum ModalDialogButtonDisable {\n Never,\n Always,\n FormInvalid\n}\n\nexport interface IModalDialogButton {\n key: string;\n text: string;\n primary: boolean;\n disable: ModalDialogButtonDisable;\n}\n\nexport interface IModalDialogFormConfig {\n fieldSets: ApDynformsConfigFieldset[];\n values: any;\n validators: ApDynformsValidator[];\n asyncValidators: ApDynformsValidator[];\n width: any;\n}\n\nexport interface IModalDialogResult {\n key: string;\n formValues?: any;\n}\n\nexport interface IModalDialogData {\n title: string;\n busy: boolean;\n message: string;\n resultDelegate: (data: any, dialogResult: IModalDialogResult) => void;\n formConfig: IModalDialogFormConfig;\n show: boolean;\n buttons: IModalDialogButton[];\n values: any;\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport Polygon from '../geom/Polygon.js'\nimport Double from '../../../../java/lang/Double.js'\nimport GeometryCollection from '../geom/GeometryCollection.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Comparator from '../../../../java/util/Comparator.js'\nimport Assert from '../util/Assert.js'\nexport default class InteriorPointArea {\n constructor() {\n InteriorPointArea.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._interiorPoint = null\n this._maxWidth = -1\n const g = arguments[0]\n this.process(g)\n }\n static getInteriorPoint(geom) {\n const intPt = new InteriorPointArea(geom)\n return intPt.getInteriorPoint()\n }\n static avg(a, b) {\n return (a + b) / 2.0\n }\n getInteriorPoint() {\n return this._interiorPoint\n }\n process(geom) {\n if (geom.isEmpty()) return null\n if (geom instanceof Polygon) {\n this.processPolygon(geom)\n } else if (geom instanceof GeometryCollection) {\n const gc = geom\n for (let i = 0; i < gc.getNumGeometries(); i++) \n this.process(gc.getGeometryN(i))\n \n }\n }\n processPolygon(polygon) {\n const intPtPoly = new InteriorPointPolygon(polygon)\n intPtPoly.process()\n const width = intPtPoly.getWidth()\n if (width > this._maxWidth) {\n this._maxWidth = width\n this._interiorPoint = intPtPoly.getInteriorPoint()\n }\n }\n}\nclass InteriorPointPolygon {\n constructor() {\n InteriorPointPolygon.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._polygon = null\n this._interiorPointY = null\n this._interiorSectionWidth = 0.0\n this._interiorPoint = null\n const polygon = arguments[0]\n this._polygon = polygon\n this._interiorPointY = ScanLineYOrdinateFinder.getScanLineY(polygon)\n }\n static isEdgeCrossingCounted(p0, p1, scanY) {\n const y0 = p0.getY()\n const y1 = p1.getY()\n if (y0 === y1) return false\n if (y0 === scanY && y1 < scanY) return false\n if (y1 === scanY && y0 < scanY) return false\n return true\n }\n static intersectsHorizontalLine() {\n if (arguments.length === 2) {\n const env = arguments[0], y = arguments[1]\n if (y < env.getMinY()) return false\n if (y > env.getMaxY()) return false\n return true\n } else if (arguments.length === 3) {\n const p0 = arguments[0], p1 = arguments[1], y = arguments[2]\n if (p0.getY() > y && p1.getY() > y) return false\n if (p0.getY() < y && p1.getY() < y) return false\n return true\n }\n }\n static intersection(p0, p1, Y) {\n const x0 = p0.getX()\n const x1 = p1.getX()\n if (x0 === x1) return x0\n const segDX = x1 - x0\n const segDY = p1.getY() - p0.getY()\n const m = segDY / segDX\n const x = x0 + (Y - p0.getY()) / m\n return x\n }\n findBestMidpoint(crossings) {\n if (crossings.size() === 0) return null\n Assert.isTrue(0 === crossings.size() % 2, 'Interior Point robustness failure: odd number of scanline crossings')\n crossings.sort(new DoubleComparator())\n for (let i = 0; i < crossings.size(); i += 2) {\n const x1 = crossings.get(i)\n const x2 = crossings.get(i + 1)\n const width = x2 - x1\n if (width > this._interiorSectionWidth) {\n this._interiorSectionWidth = width\n const interiorPointX = InteriorPointArea.avg(x1, x2)\n this._interiorPoint = new Coordinate(interiorPointX, this._interiorPointY)\n }\n }\n }\n process() {\n if (this._polygon.isEmpty()) return null\n this._interiorPoint = new Coordinate(this._polygon.getCoordinate())\n const crossings = new ArrayList()\n this.scanRing(this._polygon.getExteriorRing(), crossings)\n for (let i = 0; i < this._polygon.getNumInteriorRing(); i++) \n this.scanRing(this._polygon.getInteriorRingN(i), crossings)\n \n this.findBestMidpoint(crossings)\n }\n scanRing(ring, crossings) {\n if (!InteriorPointPolygon.intersectsHorizontalLine(ring.getEnvelopeInternal(), this._interiorPointY)) return null\n const seq = ring.getCoordinateSequence()\n for (let i = 1; i < seq.size(); i++) {\n const ptPrev = seq.getCoordinate(i - 1)\n const pt = seq.getCoordinate(i)\n this.addEdgeCrossing(ptPrev, pt, this._interiorPointY, crossings)\n }\n }\n getWidth() {\n return this._interiorSectionWidth\n }\n getInteriorPoint() {\n return this._interiorPoint\n }\n addEdgeCrossing(p0, p1, scanY, crossings) {\n if (!InteriorPointPolygon.intersectsHorizontalLine(p0, p1, scanY)) return null\n if (!InteriorPointPolygon.isEdgeCrossingCounted(p0, p1, scanY)) return null\n const xInt = InteriorPointPolygon.intersection(p0, p1, scanY)\n crossings.add(xInt)\n }\n}\nclass DoubleComparator {\n compare(v1, v2) {\n return v1 < v2 ? -1 : v1 > v2 ? +1 : 0\n }\n get interfaces_() {\n return [Comparator]\n }\n}\nInteriorPointPolygon.DoubleComparator = DoubleComparator\nclass ScanLineYOrdinateFinder {\n constructor() {\n ScanLineYOrdinateFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._poly = null\n this._centreY = null\n this._hiY = Double.MAX_VALUE\n this._loY = -Double.MAX_VALUE\n const poly = arguments[0]\n this._poly = poly\n this._hiY = poly.getEnvelopeInternal().getMaxY()\n this._loY = poly.getEnvelopeInternal().getMinY()\n this._centreY = InteriorPointArea.avg(this._loY, this._hiY)\n }\n static getScanLineY(poly) {\n const finder = new ScanLineYOrdinateFinder(poly)\n return finder.getScanLineY()\n }\n updateInterval(y) {\n if (y <= this._centreY) {\n if (y > this._loY) this._loY = y\n } else if (y > this._centreY) {\n if (y < this._hiY) \n this._hiY = y\n \n }\n }\n getScanLineY() {\n this.process(this._poly.getExteriorRing())\n for (let i = 0; i < this._poly.getNumInteriorRing(); i++) \n this.process(this._poly.getInteriorRingN(i))\n \n const scanLineY = InteriorPointArea.avg(this._hiY, this._loY)\n return scanLineY\n }\n process(line) {\n const seq = line.getCoordinateSequence()\n for (let i = 0; i < seq.size(); i++) {\n const y = seq.getY(i)\n this.updateInterval(y)\n }\n }\n}\nInteriorPointArea.InteriorPointPolygon = InteriorPointPolygon\nInteriorPointArea.ScanLineYOrdinateFinder = ScanLineYOrdinateFinder\n","import PointLocator from '../../algorithm/PointLocator.js'\nimport Location from '../../geom/Location.js'\nimport TreeSet from '../../../../../java/util/TreeSet.js'\nimport GeometryCombiner from '../../geom/util/GeometryCombiner.js'\nimport CoordinateArrays from '../../geom/CoordinateArrays.js'\nexport default class PointGeometryUnion {\n constructor() {\n PointGeometryUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pointGeom = null\n this._otherGeom = null\n this._geomFact = null\n const pointGeom = arguments[0], otherGeom = arguments[1]\n this._pointGeom = pointGeom\n this._otherGeom = otherGeom\n this._geomFact = otherGeom.getFactory()\n }\n static union(pointGeom, otherGeom) {\n const unioner = new PointGeometryUnion(pointGeom, otherGeom)\n return unioner.union()\n }\n union() {\n const locater = new PointLocator()\n const exteriorCoords = new TreeSet()\n for (let i = 0; i < this._pointGeom.getNumGeometries(); i++) {\n const point = this._pointGeom.getGeometryN(i)\n const coord = point.getCoordinate()\n const loc = locater.locate(coord, this._otherGeom)\n if (loc === Location.EXTERIOR) exteriorCoords.add(coord)\n }\n if (exteriorCoords.size() === 0) return this._otherGeom\n let ptComp = null\n const coords = CoordinateArrays.toCoordinateArray(exteriorCoords)\n if (coords.length === 1) \n ptComp = this._geomFact.createPoint(coords[0])\n else \n ptComp = this._geomFact.createMultiPointFromCoords(coords)\n \n return GeometryCombiner.combine(ptComp, this._otherGeom)\n }\n}\n","import LineString from '../../geom/LineString.js'\nimport Geometry from '../../geom/Geometry.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport Collection from '../../../../../java/util/Collection.js'\nimport Point from '../../geom/Point.js'\nimport Polygon from '../../geom/Polygon.js'\nimport GeometryCollection from '../../geom/GeometryCollection.js'\nimport Dimension from '../../geom/Dimension.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport GeometryFilter from '../../geom/GeometryFilter.js'\nimport Assert from '../../util/Assert.js'\nexport default class InputExtracter {\n constructor() {\n InputExtracter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFactory = null\n this._polygons = new ArrayList()\n this._lines = new ArrayList()\n this._points = new ArrayList()\n this._dimension = Dimension.FALSE\n }\n static extract() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n const extracter = new InputExtracter()\n extracter.add(geoms)\n return extracter\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n const extracter = new InputExtracter()\n extracter.add(geom)\n return extracter\n }\n }\n getFactory() {\n return this._geomFactory\n }\n recordDimension(dim) {\n if (dim > this._dimension) this._dimension = dim\n }\n getDimension() {\n return this._dimension\n }\n filter(geom) {\n this.recordDimension(geom.getDimension())\n if (geom instanceof GeometryCollection) \n return null\n \n if (geom.isEmpty()) return null\n if (geom instanceof Polygon) {\n this._polygons.add(geom)\n return null\n } else if (geom instanceof LineString) {\n this._lines.add(geom)\n return null\n } else if (geom instanceof Point) {\n this._points.add(geom)\n return null\n }\n Assert.shouldNeverReachHere('Unhandled geometry type: ' + geom.getGeometryType())\n }\n getExtract(dim) {\n switch (dim) {\n case 0:\n return this._points\n case 1:\n return this._lines\n case 2:\n return this._polygons\n }\n Assert.shouldNeverReachHere('Invalid dimension: ' + dim)\n return null\n }\n isEmpty() {\n return this._polygons.isEmpty() && this._lines.isEmpty() && this._points.isEmpty()\n }\n add() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n for (const geom of geoms) \n this.add(geom)\n \n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n if (this._geomFactory === null) this._geomFactory = geom.getFactory()\n geom.apply(this)\n }\n }\n get interfaces_() {\n return [GeometryFilter]\n }\n}\n","import HashSet from '../../../../../java/util/HashSet.js'\nimport UnionOp from './UnionOp.js'\nimport TopologyException from '../../geom/TopologyException.js'\nimport GeometryCombiner from '../../geom/util/GeometryCombiner.js'\nimport LineSegment from '../../geom/LineSegment.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport CoordinateSequenceFilter from '../../geom/CoordinateSequenceFilter.js'\nexport default class OverlapUnion {\n constructor() {\n OverlapUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFactory = null\n this._g0 = null\n this._g1 = null\n this._isUnionSafe = null\n const g0 = arguments[0], g1 = arguments[1]\n this._g0 = g0\n this._g1 = g1\n this._geomFactory = g0.getFactory()\n }\n static containsProperly() {\n if (arguments.length === 2) {\n const env = arguments[0], p = arguments[1]\n if (env.isNull()) return false\n return p.getX() > env.getMinX() && p.getX() < env.getMaxX() && p.getY() > env.getMinY() && p.getY() < env.getMaxY()\n } else if (arguments.length === 3) {\n const env = arguments[0], p0 = arguments[1], p1 = arguments[2]\n return OverlapUnion.containsProperly(env, p0) && OverlapUnion.containsProperly(env, p1)\n }\n }\n static union(g0, g1) {\n const union = new OverlapUnion(g0, g1)\n return union.union()\n }\n static intersects(env, p0, p1) {\n return env.intersects(p0) || env.intersects(p1)\n }\n static overlapEnvelope(g0, g1) {\n const g0Env = g0.getEnvelopeInternal()\n const g1Env = g1.getEnvelopeInternal()\n const overlapEnv = g0Env.intersection(g1Env)\n return overlapEnv\n }\n static extractBorderSegments(geom, env, segs) {\n geom.apply(new (class {\n get interfaces_() {\n return [CoordinateSequenceFilter]\n }\n filter(seq, i) {\n if (i <= 0) return null\n const p0 = seq.getCoordinate(i - 1)\n const p1 = seq.getCoordinate(i)\n const isBorder = OverlapUnion.intersects(env, p0, p1) && !OverlapUnion.containsProperly(env, p0, p1)\n if (isBorder) {\n const seg = new LineSegment(p0, p1)\n segs.add(seg)\n }\n }\n isDone() {\n return false\n }\n isGeometryChanged() {\n return false\n }\n })())\n }\n static unionBuffer(g0, g1) {\n const factory = g0.getFactory()\n const gColl = factory.createGeometryCollection([g0, g1])\n const union = gColl.buffer(0.0)\n return union\n }\n isBorderSegmentsSame(result, env) {\n const segsBefore = this.extractBorderSegments(this._g0, this._g1, env)\n const segsAfter = new ArrayList()\n OverlapUnion.extractBorderSegments(result, env, segsAfter)\n return this.isEqual(segsBefore, segsAfter)\n }\n extractByEnvelope(env, geom, disjointGeoms) {\n const intersectingGeoms = new ArrayList()\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const elem = geom.getGeometryN(i)\n if (elem.getEnvelopeInternal().intersects(env)) {\n intersectingGeoms.add(elem)\n } else {\n const copy = elem.copy()\n disjointGeoms.add(copy)\n }\n }\n return this._geomFactory.buildGeometry(intersectingGeoms)\n }\n isEqual(segs0, segs1) {\n if (segs0.size() !== segs1.size()) return false\n const segIndex = new HashSet(segs0)\n for (const seg of segs1) \n if (!segIndex.contains(seg)) \n return false\n \n \n return true\n }\n union() {\n const overlapEnv = OverlapUnion.overlapEnvelope(this._g0, this._g1)\n if (overlapEnv.isNull()) {\n const g0Copy = this._g0.copy()\n const g1Copy = this._g1.copy()\n return GeometryCombiner.combine(g0Copy, g1Copy)\n }\n const disjointPolys = new ArrayList()\n const g0Overlap = this.extractByEnvelope(overlapEnv, this._g0, disjointPolys)\n const g1Overlap = this.extractByEnvelope(overlapEnv, this._g1, disjointPolys)\n const unionGeom = this.unionFull(g0Overlap, g1Overlap)\n let result = null\n this._isUnionSafe = this.isBorderSegmentsSame(unionGeom, overlapEnv)\n if (!this._isUnionSafe) \n result = this.unionFull(this._g0, this._g1)\n else \n result = this.combine(unionGeom, disjointPolys)\n \n return result\n }\n combine(unionGeom, disjointPolys) {\n if (disjointPolys.size() <= 0) return unionGeom\n disjointPolys.add(unionGeom)\n const result = GeometryCombiner.combine(disjointPolys)\n return result\n }\n unionFull(geom0, geom1) {\n try {\n return UnionOp.union(geom0, geom1)\n } catch (ex) {\n if (ex instanceof TopologyException) \n return OverlapUnion.unionBuffer(geom0, geom1)\n else throw ex\n } finally {}\n }\n extractBorderSegments(geom0, geom1, env) {\n const segs = new ArrayList()\n OverlapUnion.extractBorderSegments(geom0, env, segs)\n if (geom1 !== null) OverlapUnion.extractBorderSegments(geom1, env, segs)\n return segs\n }\n isUnionOptimized() {\n return this._isUnionSafe\n }\n}\n","import PolygonExtracter from '../../geom/util/PolygonExtracter.js'\nimport OverlapUnion from './OverlapUnion.js'\nimport STRtree from '../../index/strtree/STRtree.js'\nimport Geometry from '../../geom/Geometry.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport GeometryFactory from '../../geom/GeometryFactory.js'\nimport Polygonal from '../../geom/Polygonal.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport List from '../../../../../java/util/List.js'\nimport IllegalStateException from '../../../../../java/lang/IllegalStateException.js'\nexport default class CascadedPolygonUnion {\n constructor() {\n CascadedPolygonUnion.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputPolys = null\n this._geomFactory = null\n const polys = arguments[0]\n this._inputPolys = polys\n if (this._inputPolys === null) this._inputPolys = new ArrayList()\n }\n static restrictToPolygons(g) {\n if (hasInterface(g, Polygonal)) \n return g\n \n const polygons = PolygonExtracter.getPolygons(g)\n if (polygons.size() === 1) return polygons.get(0)\n return g.getFactory().createMultiPolygon(GeometryFactory.toPolygonArray(polygons))\n }\n static getGeometry(list, index) {\n if (index >= list.size()) return null\n return list.get(index)\n }\n static union(polys) {\n const op = new CascadedPolygonUnion(polys)\n return op.union()\n }\n reduceToGeometries(geomTree) {\n const geoms = new ArrayList()\n for (let i = geomTree.iterator(); i.hasNext(); ) {\n const o = i.next()\n let geom = null\n if (hasInterface(o, List)) \n geom = this.unionTree(o)\n else if (o instanceof Geometry) \n geom = o\n \n geoms.add(geom)\n }\n return geoms\n }\n union() {\n if (this._inputPolys === null) throw new IllegalStateException('union() method cannot be called twice')\n if (this._inputPolys.isEmpty()) return null\n this._geomFactory = this._inputPolys.iterator().next().getFactory()\n const index = new STRtree(CascadedPolygonUnion.STRTREE_NODE_CAPACITY)\n for (let i = this._inputPolys.iterator(); i.hasNext(); ) {\n const item = i.next()\n index.insert(item.getEnvelopeInternal(), item)\n }\n this._inputPolys = null\n const itemTree = index.itemsTree()\n const unionAll = this.unionTree(itemTree)\n return unionAll\n }\n binaryUnion() {\n if (arguments.length === 1) {\n const geoms = arguments[0]\n return this.binaryUnion(geoms, 0, geoms.size())\n } else if (arguments.length === 3) {\n const geoms = arguments[0], start = arguments[1], end = arguments[2]\n if (end - start <= 1) {\n const g0 = CascadedPolygonUnion.getGeometry(geoms, start)\n return this.unionSafe(g0, null)\n } else if (end - start === 2) {\n return this.unionSafe(CascadedPolygonUnion.getGeometry(geoms, start), CascadedPolygonUnion.getGeometry(geoms, start + 1))\n } else {\n const mid = Math.trunc((end + start) / 2)\n const g0 = this.binaryUnion(geoms, start, mid)\n const g1 = this.binaryUnion(geoms, mid, end)\n return this.unionSafe(g0, g1)\n }\n }\n }\n repeatedUnion(geoms) {\n let union = null\n for (let i = geoms.iterator(); i.hasNext(); ) {\n const g = i.next()\n if (union === null) union = g.copy(); else union = union.union(g)\n }\n return union\n }\n unionSafe(g0, g1) {\n if (g0 === null && g1 === null) return null\n if (g0 === null) return g1.copy()\n if (g1 === null) return g0.copy()\n return this.unionActual(g0, g1)\n }\n unionActual(g0, g1) {\n const union = OverlapUnion.union(g0, g1)\n \n return CascadedPolygonUnion.restrictToPolygons(union)\n }\n unionTree(geomTree) {\n const geoms = this.reduceToGeometries(geomTree)\n const union = this.binaryUnion(geoms)\n return union\n }\n bufferUnion() {\n if (arguments.length === 1) {\n const geoms = arguments[0]\n const factory = geoms.get(0).getFactory()\n const gColl = factory.buildGeometry(geoms)\n const unionAll = gColl.buffer(0.0)\n return unionAll\n } else if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n const factory = g0.getFactory()\n const gColl = factory.createGeometryCollection([g0, g1])\n const unionAll = gColl.buffer(0.0)\n return unionAll\n }\n }\n}\nCascadedPolygonUnion.STRTREE_NODE_CAPACITY = 4\n","import Geometry from '../../geom/Geometry.js'\nimport PointGeometryUnion from './PointGeometryUnion.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport Collection from '../../../../../java/util/Collection.js'\nimport SnapIfNeededOverlayOp from '../overlay/snap/SnapIfNeededOverlayOp.js'\nimport InputExtracter from './InputExtracter.js'\nimport OverlayOp from '../overlay/OverlayOp.js'\nimport CascadedPolygonUnion from './CascadedPolygonUnion.js'\nexport default class UnaryUnionOp {\n constructor() {\n UnaryUnionOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFact = null\n this._extracter = null\n if (arguments.length === 1) {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n this.extract(geoms)\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this.extract(geom)\n }\n } else if (arguments.length === 2) {\n const geoms = arguments[0], geomFact = arguments[1]\n this._geomFact = geomFact\n this.extract(geoms)\n }\n }\n static union() {\n if (arguments.length === 1) {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n const op = new UnaryUnionOp(geoms)\n return op.union()\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n const op = new UnaryUnionOp(geom)\n return op.union()\n }\n } else if (arguments.length === 2) {\n const geoms = arguments[0], geomFact = arguments[1]\n const op = new UnaryUnionOp(geoms, geomFact)\n return op.union()\n }\n }\n unionNoOpt(g0) {\n const empty = this._geomFact.createPoint()\n return SnapIfNeededOverlayOp.overlayOp(g0, empty, OverlayOp.UNION)\n }\n unionWithNull(g0, g1) {\n if (g0 === null && g1 === null) return null\n if (g1 === null) return g0\n if (g0 === null) return g1\n return OverlayOp.union(g0, g1)\n }\n extract() {\n if (hasInterface(arguments[0], Collection)) {\n const geoms = arguments[0]\n this._extracter = InputExtracter.extract(geoms)\n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n this._extracter = InputExtracter.extract(geom)\n }\n }\n union() {\n if (this._geomFact === null) this._geomFact = this._extracter.getFactory()\n if (this._geomFact === null) \n return null\n \n if (this._extracter.isEmpty()) \n return this._geomFact.createEmpty(this._extracter.getDimension())\n \n const points = this._extracter.getExtract(0)\n const lines = this._extracter.getExtract(1)\n const polygons = this._extracter.getExtract(2)\n let unionPoints = null\n if (points.size() > 0) {\n const ptGeom = this._geomFact.buildGeometry(points)\n unionPoints = this.unionNoOpt(ptGeom)\n }\n let unionLines = null\n if (lines.size() > 0) {\n const lineGeom = this._geomFact.buildGeometry(lines)\n unionLines = this.unionNoOpt(lineGeom)\n }\n let unionPolygons = null\n if (polygons.size() > 0) \n unionPolygons = CascadedPolygonUnion.union(polygons)\n \n const unionLA = this.unionWithNull(unionLines, unionPolygons)\n let union = null\n if (unionPoints === null) union = unionLA; else if (unionLA === null) union = unionPoints; else union = PointGeometryUnion.union(unionPoints, unionLA)\n if (union === null) return this._geomFact.createGeometryCollection()\n return union\n }\n}\n","import LineString from '../geom/LineString.js'\nimport Geometry from '../geom/Geometry.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Point from '../geom/Point.js'\nimport Polygon from '../geom/Polygon.js'\nimport Orientation from './Orientation.js'\nimport GeometryCollection from '../geom/GeometryCollection.js'\nexport default class Centroid {\n constructor() {\n Centroid.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._areaBasePt = null\n this._triangleCent3 = new Coordinate()\n this._areasum2 = 0\n this._cg3 = new Coordinate()\n this._lineCentSum = new Coordinate()\n this._totalLength = 0.0\n this._ptCount = 0\n this._ptCentSum = new Coordinate()\n const geom = arguments[0]\n this._areaBasePt = null\n this.add(geom)\n }\n static area2(p1, p2, p3) {\n return (p2.x - p1.x) * (p3.y - p1.y) - (p3.x - p1.x) * (p2.y - p1.y)\n }\n static centroid3(p1, p2, p3, c) {\n c.x = p1.x + p2.x + p3.x\n c.y = p1.y + p2.y + p3.y\n return null\n }\n static getCentroid(geom) {\n const cent = new Centroid(geom)\n return cent.getCentroid()\n }\n setAreaBasePoint(basePt) {\n this._areaBasePt = basePt\n }\n addPoint(pt) {\n this._ptCount += 1\n this._ptCentSum.x += pt.x\n this._ptCentSum.y += pt.y\n }\n addLineSegments(pts) {\n let lineLen = 0.0\n for (let i = 0; i < pts.length - 1; i++) {\n const segmentLen = pts[i].distance(pts[i + 1])\n if (segmentLen === 0.0) continue\n lineLen += segmentLen\n const midx = (pts[i].x + pts[i + 1].x) / 2\n this._lineCentSum.x += segmentLen * midx\n const midy = (pts[i].y + pts[i + 1].y) / 2\n this._lineCentSum.y += segmentLen * midy\n }\n this._totalLength += lineLen\n if (lineLen === 0.0 && pts.length > 0) this.addPoint(pts[0])\n }\n addHole(pts) {\n const isPositiveArea = Orientation.isCCW(pts)\n for (let i = 0; i < pts.length - 1; i++) \n this.addTriangle(this._areaBasePt, pts[i], pts[i + 1], isPositiveArea)\n \n this.addLineSegments(pts)\n }\n getCentroid() {\n const cent = new Coordinate()\n if (Math.abs(this._areasum2) > 0.0) {\n cent.x = this._cg3.x / 3 / this._areasum2\n cent.y = this._cg3.y / 3 / this._areasum2\n } else if (this._totalLength > 0.0) {\n cent.x = this._lineCentSum.x / this._totalLength\n cent.y = this._lineCentSum.y / this._totalLength\n } else if (this._ptCount > 0) {\n cent.x = this._ptCentSum.x / this._ptCount\n cent.y = this._ptCentSum.y / this._ptCount\n } else {\n return null\n }\n return cent\n }\n addShell(pts) {\n if (pts.length > 0) this.setAreaBasePoint(pts[0])\n const isPositiveArea = !Orientation.isCCW(pts)\n for (let i = 0; i < pts.length - 1; i++) \n this.addTriangle(this._areaBasePt, pts[i], pts[i + 1], isPositiveArea)\n \n this.addLineSegments(pts)\n }\n addTriangle(p0, p1, p2, isPositiveArea) {\n const sign = isPositiveArea ? 1.0 : -1.0\n Centroid.centroid3(p0, p1, p2, this._triangleCent3)\n const area2 = Centroid.area2(p0, p1, p2)\n this._cg3.x += sign * area2 * this._triangleCent3.x\n this._cg3.y += sign * area2 * this._triangleCent3.y\n this._areasum2 += sign * area2\n }\n add() {\n if (arguments[0] instanceof Polygon) {\n const poly = arguments[0]\n this.addShell(poly.getExteriorRing().getCoordinates())\n for (let i = 0; i < poly.getNumInteriorRing(); i++) \n this.addHole(poly.getInteriorRingN(i).getCoordinates())\n \n } else if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n if (geom.isEmpty()) return null\n if (geom instanceof Point) {\n this.addPoint(geom.getCoordinate())\n } else if (geom instanceof LineString) {\n this.addLineSegments(geom.getCoordinates())\n } else if (geom instanceof Polygon) {\n const poly = geom\n this.add(poly)\n } else if (geom instanceof GeometryCollection) {\n const gc = geom\n for (let i = 0; i < gc.getNumGeometries(); i++) \n this.add(gc.getGeometryN(i))\n \n }\n }\n }\n}\n","import LineString from '../geom/LineString.js'\nimport Geometry from '../geom/Geometry.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Double from '../../../../java/lang/Double.js'\nimport Centroid from './Centroid.js'\nimport GeometryCollection from '../geom/GeometryCollection.js'\nexport default class InteriorPointLine {\n constructor() {\n InteriorPointLine.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._centroid = null\n this._minDistance = Double.MAX_VALUE\n this._interiorPoint = null\n const g = arguments[0]\n if (g.isEmpty()) {\n this._centroid = null\n } else {\n this._centroid = Centroid.getCentroid(g)\n g.getPrecisionModel().makePrecise(this._centroid)\n }\n this.addInterior(g)\n if (this._interiorPoint === null) this.addEndpoints(g)\n }\n static getInteriorPoint(geom) {\n const intPt = new InteriorPointLine(geom)\n return intPt.getInteriorPoint()\n }\n addEndpoints() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n if (geom instanceof LineString) {\n this.addEndpoints(geom.getCoordinates())\n } else if (geom instanceof GeometryCollection) {\n const gc = geom\n for (let i = 0; i < gc.getNumGeometries(); i++) \n this.addEndpoints(gc.getGeometryN(i))\n \n }\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n this.add(pts[0])\n this.add(pts[pts.length - 1])\n }\n }\n getInteriorPoint() {\n return this._interiorPoint\n }\n addInterior() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n if (geom instanceof LineString) {\n this.addInterior(geom.getCoordinates())\n } else if (geom instanceof GeometryCollection) {\n const gc = geom\n for (let i = 0; i < gc.getNumGeometries(); i++) \n this.addInterior(gc.getGeometryN(i))\n \n }\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n for (let i = 1; i < pts.length - 1; i++) \n this.add(pts[i])\n \n }\n }\n add(point) {\n const dist = point.distance(this._centroid)\n if (dist < this._minDistance) {\n this._interiorPoint = new Coordinate(point)\n this._minDistance = dist\n }\n }\n}\n","import TreeSet from '../../../../java/util/TreeSet.js'\nimport LineString from '../geom/LineString.js'\nimport hasInterface from '../../../../hasInterface.js'\nimport MultiPoint from '../geom/MultiPoint.js'\nimport GeometryGraph from '../geomgraph/GeometryGraph.js'\nimport GeometryCollection from '../geom/GeometryCollection.js'\nimport Polygonal from '../geom/Polygonal.js'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector.js'\nimport LinearComponentExtracter from '../geom/util/LinearComponentExtracter.js'\nimport TreeMap from '../../../../java/util/TreeMap.js'\nimport MultiLineString from '../geom/MultiLineString.js'\nexport default class IsSimpleOp {\n constructor() {\n IsSimpleOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._isClosedEndpointsInInterior = true\n this._nonSimpleLocation = null\n if (arguments.length === 1) {\n const geom = arguments[0]\n this._inputGeom = geom\n } else if (arguments.length === 2) {\n const geom = arguments[0], boundaryNodeRule = arguments[1]\n this._inputGeom = geom\n this._isClosedEndpointsInInterior = !boundaryNodeRule.isInBoundary(2)\n }\n }\n static isSimple() {\n if (arguments.length === 1) {\n const geom = arguments[0]\n const op = new IsSimpleOp(geom)\n return op.isSimple()\n } else if (arguments.length === 2) {\n const geom = arguments[0], boundaryNodeRule = arguments[1]\n const op = new IsSimpleOp(geom, boundaryNodeRule)\n return op.isSimple()\n }\n }\n isSimpleMultiPoint(mp) {\n if (mp.isEmpty()) return true\n const points = new TreeSet()\n for (let i = 0; i < mp.getNumGeometries(); i++) {\n const pt = mp.getGeometryN(i)\n const p = pt.getCoordinate()\n if (points.contains(p)) {\n this._nonSimpleLocation = p\n return false\n }\n points.add(p)\n }\n return true\n }\n isSimplePolygonal(geom) {\n const rings = LinearComponentExtracter.getLines(geom)\n for (let i = rings.iterator(); i.hasNext(); ) {\n const ring = i.next()\n if (!this.isSimpleLinearGeometry(ring)) return false\n }\n return true\n }\n hasClosedEndpointIntersection(graph) {\n const endPoints = new TreeMap()\n for (let i = graph.getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const isClosed = e.isClosed()\n const p0 = e.getCoordinate(0)\n this.addEndpoint(endPoints, p0, isClosed)\n const p1 = e.getCoordinate(e.getNumPoints() - 1)\n this.addEndpoint(endPoints, p1, isClosed)\n }\n for (let i = endPoints.values().iterator(); i.hasNext(); ) {\n const eiInfo = i.next()\n if (eiInfo.isClosed && eiInfo.degree !== 2) {\n this._nonSimpleLocation = eiInfo.getCoordinate()\n return true\n }\n }\n return false\n }\n getNonSimpleLocation() {\n return this._nonSimpleLocation\n }\n isSimpleLinearGeometry(geom) {\n if (geom.isEmpty()) return true\n const graph = new GeometryGraph(0, geom)\n const li = new RobustLineIntersector()\n const si = graph.computeSelfNodes(li, true)\n if (!si.hasIntersection()) return true\n if (si.hasProperIntersection()) {\n this._nonSimpleLocation = si.getProperIntersectionPoint()\n return false\n }\n if (this.hasNonEndpointIntersection(graph)) return false\n if (this._isClosedEndpointsInInterior) \n if (this.hasClosedEndpointIntersection(graph)) return false\n \n return true\n }\n hasNonEndpointIntersection(graph) {\n for (let i = graph.getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const maxSegmentIndex = e.getMaximumSegmentIndex()\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n if (!ei.isEndPoint(maxSegmentIndex)) {\n this._nonSimpleLocation = ei.getCoordinate()\n return true\n }\n }\n }\n return false\n }\n addEndpoint(endPoints, p, isClosed) {\n let eiInfo = endPoints.get(p)\n if (eiInfo === null) {\n eiInfo = new EndpointInfo(p)\n endPoints.put(p, eiInfo)\n }\n eiInfo.addEndpoint(isClosed)\n }\n computeSimple(geom) {\n this._nonSimpleLocation = null\n if (geom.isEmpty()) return true\n if (geom instanceof LineString) return this.isSimpleLinearGeometry(geom)\n if (geom instanceof MultiLineString) return this.isSimpleLinearGeometry(geom)\n if (geom instanceof MultiPoint) return this.isSimpleMultiPoint(geom)\n if (hasInterface(geom, Polygonal)) return this.isSimplePolygonal(geom)\n if (geom instanceof GeometryCollection) return this.isSimpleGeometryCollection(geom)\n return true\n }\n isSimple() {\n this._nonSimpleLocation = null\n return this.computeSimple(this._inputGeom)\n }\n isSimpleGeometryCollection(geom) {\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const comp = geom.getGeometryN(i)\n if (!this.computeSimple(comp)) return false\n }\n return true\n }\n}\nclass EndpointInfo {\n constructor() {\n EndpointInfo.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.pt = null\n this.isClosed = null\n this.degree = null\n const pt = arguments[0]\n this.pt = pt\n this.isClosed = false\n this.degree = 0\n }\n addEndpoint(isClosed) {\n this.degree++\n this.isClosed |= isClosed\n }\n getCoordinate() {\n return this.pt\n }\n}\nIsSimpleOp.EndpointInfo = EndpointInfo\n","export default class BufferParameters {\n constructor() {\n BufferParameters.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS\n this._endCapStyle = BufferParameters.CAP_ROUND\n this._joinStyle = BufferParameters.JOIN_ROUND\n this._mitreLimit = BufferParameters.DEFAULT_MITRE_LIMIT\n this._isSingleSided = false\n this._simplifyFactor = BufferParameters.DEFAULT_SIMPLIFY_FACTOR\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const quadrantSegments = arguments[0]\n this.setQuadrantSegments(quadrantSegments)\n } else if (arguments.length === 2) {\n const quadrantSegments = arguments[0], endCapStyle = arguments[1]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n } else if (arguments.length === 4) {\n const quadrantSegments = arguments[0], endCapStyle = arguments[1], joinStyle = arguments[2], mitreLimit = arguments[3]\n this.setQuadrantSegments(quadrantSegments)\n this.setEndCapStyle(endCapStyle)\n this.setJoinStyle(joinStyle)\n this.setMitreLimit(mitreLimit)\n }\n }\n static bufferDistanceError(quadSegs) {\n const alpha = Math.PI / 2.0 / quadSegs\n return 1 - Math.cos(alpha / 2.0)\n }\n getEndCapStyle() {\n return this._endCapStyle\n }\n isSingleSided() {\n return this._isSingleSided\n }\n setQuadrantSegments(quadSegs) {\n this._quadrantSegments = quadSegs\n if (this._quadrantSegments === 0) this._joinStyle = BufferParameters.JOIN_BEVEL\n if (this._quadrantSegments < 0) {\n this._joinStyle = BufferParameters.JOIN_MITRE\n this._mitreLimit = Math.abs(this._quadrantSegments)\n }\n if (quadSegs <= 0) \n this._quadrantSegments = 1\n \n if (this._joinStyle !== BufferParameters.JOIN_ROUND) \n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS\n \n }\n getJoinStyle() {\n return this._joinStyle\n }\n setJoinStyle(joinStyle) {\n this._joinStyle = joinStyle\n }\n setSimplifyFactor(simplifyFactor) {\n this._simplifyFactor = simplifyFactor < 0 ? 0 : simplifyFactor\n }\n getSimplifyFactor() {\n return this._simplifyFactor\n }\n getQuadrantSegments() {\n return this._quadrantSegments\n }\n setEndCapStyle(endCapStyle) {\n this._endCapStyle = endCapStyle\n }\n getMitreLimit() {\n return this._mitreLimit\n }\n setMitreLimit(mitreLimit) {\n this._mitreLimit = mitreLimit\n }\n setSingleSided(isSingleSided) {\n this._isSingleSided = isSingleSided\n }\n}\nBufferParameters.CAP_ROUND = 1\nBufferParameters.CAP_FLAT = 2\nBufferParameters.CAP_SQUARE = 3\nBufferParameters.JOIN_ROUND = 1\nBufferParameters.JOIN_MITRE = 2\nBufferParameters.JOIN_BEVEL = 3\nBufferParameters.DEFAULT_QUADRANT_SEGMENTS = 8\nBufferParameters.DEFAULT_MITRE_LIMIT = 5.0\nBufferParameters.DEFAULT_SIMPLIFY_FACTOR = 0.01\n","import Position from '../../geomgraph/Position.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport Assert from '../../util/Assert.js'\nexport default class RightmostEdgeFinder {\n constructor() {\n RightmostEdgeFinder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._minIndex = -1\n this._minCoord = null\n this._minDe = null\n this._orientedDe = null\n }\n getCoordinate() {\n return this._minCoord\n }\n getRightmostSide(de, index) {\n let side = this.getRightmostSideOfSegment(de, index)\n if (side < 0) side = this.getRightmostSideOfSegment(de, index - 1)\n if (side < 0) {\n this._minCoord = null\n this.checkForRightmostCoordinate(de)\n }\n return side\n }\n findRightmostEdgeAtVertex() {\n const pts = this._minDe.getEdge().getCoordinates()\n Assert.isTrue(this._minIndex > 0 && this._minIndex < pts.length, 'rightmost point expected to be interior vertex of edge')\n const pPrev = pts[this._minIndex - 1]\n const pNext = pts[this._minIndex + 1]\n const orientation = Orientation.index(this._minCoord, pNext, pPrev)\n let usePrev = false\n if (pPrev.y < this._minCoord.y && pNext.y < this._minCoord.y && orientation === Orientation.COUNTERCLOCKWISE) \n usePrev = true\n else if (pPrev.y > this._minCoord.y && pNext.y > this._minCoord.y && orientation === Orientation.CLOCKWISE) \n usePrev = true\n \n if (usePrev) \n this._minIndex = this._minIndex - 1\n \n }\n getRightmostSideOfSegment(de, i) {\n const e = de.getEdge()\n const coord = e.getCoordinates()\n if (i < 0 || i + 1 >= coord.length) return -1\n if (coord[i].y === coord[i + 1].y) return -1\n let pos = Position.LEFT\n if (coord[i].y < coord[i + 1].y) pos = Position.RIGHT\n return pos\n }\n getEdge() {\n return this._orientedDe\n }\n checkForRightmostCoordinate(de) {\n const coord = de.getEdge().getCoordinates()\n for (let i = 0; i < coord.length - 1; i++) \n if (this._minCoord === null || coord[i].x > this._minCoord.x) {\n this._minDe = de\n this._minIndex = i\n this._minCoord = coord[i]\n }\n \n }\n findRightmostEdgeAtNode() {\n const node = this._minDe.getNode()\n const star = node.getEdges()\n this._minDe = star.getRightmostEdge()\n if (!this._minDe.isForward()) {\n this._minDe = this._minDe.getSym()\n this._minIndex = this._minDe.getEdge().getCoordinates().length - 1\n }\n }\n findEdge(dirEdgeList) {\n for (let i = dirEdgeList.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isForward()) continue\n this.checkForRightmostCoordinate(de)\n }\n Assert.isTrue(this._minIndex !== 0 || this._minCoord.equals(this._minDe.getCoordinate()), 'inconsistency in rightmost processing')\n if (this._minIndex === 0) \n this.findRightmostEdgeAtNode()\n else \n this.findRightmostEdgeAtVertex()\n \n this._orientedDe = this._minDe\n const rightmostSide = this.getRightmostSide(this._minDe, this._minIndex)\n if (rightmostSide === Position.LEFT) \n this._orientedDe = this._minDe.getSym()\n \n }\n}\n","export default class LinkedList {\n constructor() {\n this.array = []\n }\n\n addLast(e) {\n this.array.push(e)\n }\n\n removeFirst() {\n return this.array.shift()\n }\n\n isEmpty() {\n return this.array.length === 0\n }\n}\n","import HashSet from '../../../../../java/util/HashSet.js'\nimport Position from '../../geomgraph/Position.js'\nimport Stack from '../../../../../java/util/Stack.js'\nimport RightmostEdgeFinder from './RightmostEdgeFinder.js'\nimport TopologyException from '../../geom/TopologyException.js'\nimport LinkedList from '../../../../../java/util/LinkedList.js'\nimport Comparable from '../../../../../java/lang/Comparable.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Envelope from '../../geom/Envelope.js'\nexport default class BufferSubgraph {\n constructor() {\n BufferSubgraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._finder = null\n this._dirEdgeList = new ArrayList()\n this._nodes = new ArrayList()\n this._rightMostCoord = null\n this._env = null\n this._finder = new RightmostEdgeFinder()\n }\n clearVisitedEdges() {\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const de = it.next()\n de.setVisited(false)\n }\n }\n getRightmostCoordinate() {\n return this._rightMostCoord\n }\n computeNodeDepth(n) {\n let startEdge = null\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isVisited() || de.getSym().isVisited()) {\n startEdge = de\n break\n }\n }\n if (startEdge === null) throw new TopologyException('unable to find edge to compute depths at ' + n.getCoordinate())\n n.getEdges().computeDepths(startEdge)\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setVisited(true)\n this.copySymDepths(de)\n }\n }\n computeDepth(outsideDepth) {\n this.clearVisitedEdges()\n const de = this._finder.getEdge()\n const n = de.getNode()\n const label = de.getLabel()\n de.setEdgeDepths(Position.RIGHT, outsideDepth)\n this.copySymDepths(de)\n this.computeDepths(de)\n }\n create(node) {\n this.addReachable(node)\n this._finder.findEdge(this._dirEdgeList)\n this._rightMostCoord = this._finder.getCoordinate()\n }\n findResultEdges() {\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const de = it.next()\n if (de.getDepth(Position.RIGHT) >= 1 && de.getDepth(Position.LEFT) <= 0 && !de.isInteriorAreaEdge()) \n de.setInResult(true)\n \n }\n }\n computeDepths(startEdge) {\n const nodesVisited = new HashSet()\n const nodeQueue = new LinkedList()\n const startNode = startEdge.getNode()\n nodeQueue.addLast(startNode)\n nodesVisited.add(startNode)\n startEdge.setVisited(true)\n while (!nodeQueue.isEmpty()) {\n const n = nodeQueue.removeFirst()\n nodesVisited.add(n)\n this.computeNodeDepth(n)\n for (let i = n.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n const sym = de.getSym()\n if (sym.isVisited()) continue\n const adjNode = sym.getNode()\n if (!nodesVisited.contains(adjNode)) {\n nodeQueue.addLast(adjNode)\n nodesVisited.add(adjNode)\n }\n }\n }\n }\n compareTo(o) {\n const graph = o\n if (this._rightMostCoord.x < graph._rightMostCoord.x) \n return -1\n \n if (this._rightMostCoord.x > graph._rightMostCoord.x) \n return 1\n \n return 0\n }\n getEnvelope() {\n if (this._env === null) {\n const edgeEnv = new Envelope()\n for (let it = this._dirEdgeList.iterator(); it.hasNext(); ) {\n const dirEdge = it.next()\n const pts = dirEdge.getEdge().getCoordinates()\n for (let i = 0; i < pts.length - 1; i++) \n edgeEnv.expandToInclude(pts[i])\n \n }\n this._env = edgeEnv\n }\n return this._env\n }\n addReachable(startNode) {\n const nodeStack = new Stack()\n nodeStack.add(startNode)\n while (!nodeStack.empty()) {\n const node = nodeStack.pop()\n this.add(node, nodeStack)\n }\n }\n copySymDepths(de) {\n const sym = de.getSym()\n sym.setDepth(Position.LEFT, de.getDepth(Position.RIGHT))\n sym.setDepth(Position.RIGHT, de.getDepth(Position.LEFT))\n }\n add(node, nodeStack) {\n node.setVisited(true)\n this._nodes.add(node)\n for (let i = node.getEdges().iterator(); i.hasNext(); ) {\n const de = i.next()\n this._dirEdgeList.add(de)\n const sym = de.getSym()\n const symNode = sym.getNode()\n if (!symNode.isVisited()) nodeStack.push(symNode)\n }\n }\n getNodes() {\n return this._nodes\n }\n getDirectedEdges() {\n return this._dirEdgeList\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import CoordinateList from '../../geom/CoordinateList.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport Distance from '../../algorithm/Distance.js'\nexport default class BufferInputLineSimplifier {\n constructor() {\n BufferInputLineSimplifier.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputLine = null\n this._distanceTol = null\n this._isDeleted = null\n this._angleOrientation = Orientation.COUNTERCLOCKWISE\n const inputLine = arguments[0]\n this._inputLine = inputLine\n }\n static simplify(inputLine, distanceTol) {\n const simp = new BufferInputLineSimplifier(inputLine)\n return simp.simplify(distanceTol)\n }\n isDeletable(i0, i1, i2, distanceTol) {\n const p0 = this._inputLine[i0]\n const p1 = this._inputLine[i1]\n const p2 = this._inputLine[i2]\n if (!this.isConcave(p0, p1, p2)) return false\n if (!this.isShallow(p0, p1, p2, distanceTol)) return false\n return this.isShallowSampled(p0, p1, i0, i2, distanceTol)\n }\n deleteShallowConcavities() {\n let index = 1\n let midIndex = this.findNextNonDeletedIndex(index)\n let lastIndex = this.findNextNonDeletedIndex(midIndex)\n let isChanged = false\n while (lastIndex < this._inputLine.length) {\n let isMiddleVertexDeleted = false\n if (this.isDeletable(index, midIndex, lastIndex, this._distanceTol)) {\n this._isDeleted[midIndex] = BufferInputLineSimplifier.DELETE\n isMiddleVertexDeleted = true\n isChanged = true\n }\n if (isMiddleVertexDeleted) index = lastIndex; else index = midIndex\n midIndex = this.findNextNonDeletedIndex(index)\n lastIndex = this.findNextNonDeletedIndex(midIndex)\n }\n return isChanged\n }\n isShallowConcavity(p0, p1, p2, distanceTol) {\n const orientation = Orientation.index(p0, p1, p2)\n const isAngleToSimplify = orientation === this._angleOrientation\n if (!isAngleToSimplify) return false\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\n isShallowSampled(p0, p2, i0, i2, distanceTol) {\n let inc = Math.trunc((i2 - i0) / BufferInputLineSimplifier.NUM_PTS_TO_CHECK)\n if (inc <= 0) inc = 1\n for (let i = i0; i < i2; i += inc) \n if (!this.isShallow(p0, p2, this._inputLine[i], distanceTol)) return false\n \n return true\n }\n isConcave(p0, p1, p2) {\n const orientation = Orientation.index(p0, p1, p2)\n const isConcave = orientation === this._angleOrientation\n return isConcave\n }\n simplify(distanceTol) {\n this._distanceTol = Math.abs(distanceTol)\n if (distanceTol < 0) this._angleOrientation = Orientation.CLOCKWISE\n this._isDeleted = new Array(this._inputLine.length).fill(null)\n let isChanged = false\n do \n isChanged = this.deleteShallowConcavities()\n while (isChanged)\n return this.collapseLine()\n }\n findNextNonDeletedIndex(index) {\n let next = index + 1\n while (next < this._inputLine.length && this._isDeleted[next] === BufferInputLineSimplifier.DELETE) next++\n return next\n }\n isShallow(p0, p1, p2, distanceTol) {\n const dist = Distance.pointToSegment(p1, p0, p2)\n return dist < distanceTol\n }\n collapseLine() {\n const coordList = new CoordinateList()\n for (let i = 0; i < this._inputLine.length; i++) \n if (this._isDeleted[i] !== BufferInputLineSimplifier.DELETE) coordList.add(this._inputLine[i])\n \n return coordList.toCoordinateArray()\n }\n}\nBufferInputLineSimplifier.INIT = 0\nBufferInputLineSimplifier.DELETE = 1\nBufferInputLineSimplifier.KEEP = 1\nBufferInputLineSimplifier.NUM_PTS_TO_CHECK = 10\n","import GeometryFactory from '../../geom/GeometryFactory.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nexport default class OffsetSegmentString {\n constructor() {\n OffsetSegmentString.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._ptList = null\n this._precisionModel = null\n this._minimimVertexDistance = 0.0\n this._ptList = new ArrayList()\n }\n getCoordinates() {\n const coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE)\n return coord\n }\n setPrecisionModel(precisionModel) {\n this._precisionModel = precisionModel\n }\n addPt(pt) {\n const bufPt = new Coordinate(pt)\n this._precisionModel.makePrecise(bufPt)\n if (this.isRedundant(bufPt)) return null\n this._ptList.add(bufPt)\n }\n reverse() {}\n addPts(pt, isForward) {\n if (isForward) \n for (let i = 0; i < pt.length; i++) \n this.addPt(pt[i])\n \n else \n for (let i = pt.length - 1; i >= 0; i--) \n this.addPt(pt[i])\n \n \n }\n isRedundant(pt) {\n if (this._ptList.size() < 1) return false\n const lastPt = this._ptList.get(this._ptList.size() - 1)\n const ptDist = pt.distance(lastPt)\n if (ptDist < this._minimimVertexDistance) return true\n return false\n }\n toString() {\n const fact = new GeometryFactory()\n const line = fact.createLineString(this.getCoordinates())\n return line.toString()\n }\n closeRing() {\n if (this._ptList.size() < 1) return null\n const startPt = new Coordinate(this._ptList.get(0))\n const lastPt = this._ptList.get(this._ptList.size() - 1)\n if (startPt.equals(lastPt)) return null\n this._ptList.add(startPt)\n }\n setMinimumVertexDistance(minimimVertexDistance) {\n this._minimimVertexDistance = minimimVertexDistance\n }\n}\nOffsetSegmentString.COORDINATE_ARRAY_TYPE = new Array(0).fill(null)\n","import BufferParameters from './BufferParameters.js'\nimport Position from '../../geomgraph/Position.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport Intersection from '../../algorithm/Intersection.js'\nimport OffsetSegmentString from './OffsetSegmentString.js'\nimport LineSegment from '../../geom/LineSegment.js'\nimport Angle from '../../algorithm/Angle.js'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector.js'\nexport default class OffsetSegmentGenerator {\n constructor() {\n OffsetSegmentGenerator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._maxCurveSegmentError = 0.0\n this._filletAngleQuantum = null\n this._closingSegLengthFactor = 1\n this._segList = null\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n this._li = null\n this._s0 = null\n this._s1 = null\n this._s2 = null\n this._seg0 = new LineSegment()\n this._seg1 = new LineSegment()\n this._offset0 = new LineSegment()\n this._offset1 = new LineSegment()\n this._side = 0\n this._hasNarrowConcaveAngle = false\n const precisionModel = arguments[0], bufParams = arguments[1], distance = arguments[2]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\n this._li = new RobustLineIntersector()\n this._filletAngleQuantum = Math.PI / 2.0 / bufParams.getQuadrantSegments()\n if (bufParams.getQuadrantSegments() >= 8 && bufParams.getJoinStyle() === BufferParameters.JOIN_ROUND) this._closingSegLengthFactor = OffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR\n this.init(distance)\n }\n addNextSegment(p, addStartPoint) {\n this._s0 = this._s1\n this._s1 = this._s2\n this._s2 = p\n this._seg0.setCoordinates(this._s0, this._s1)\n this.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0)\n this._seg1.setCoordinates(this._s1, this._s2)\n this.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1)\n if (this._s1.equals(this._s2)) return null\n const orientation = Orientation.index(this._s0, this._s1, this._s2)\n const outsideTurn = orientation === Orientation.CLOCKWISE && this._side === Position.LEFT || orientation === Orientation.COUNTERCLOCKWISE && this._side === Position.RIGHT\n if (orientation === 0) \n this.addCollinear(addStartPoint)\n else if (outsideTurn) \n this.addOutsideTurn(orientation, addStartPoint)\n else \n this.addInsideTurn(orientation, addStartPoint)\n \n }\n addLineEndCap(p0, p1) {\n const seg = new LineSegment(p0, p1)\n const offsetL = new LineSegment()\n this.computeOffsetSegment(seg, Position.LEFT, this._distance, offsetL)\n const offsetR = new LineSegment()\n this.computeOffsetSegment(seg, Position.RIGHT, this._distance, offsetR)\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n const angle = Math.atan2(dy, dx)\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n this._segList.addPt(offsetL.p1)\n this.addDirectedFillet(p1, angle + Math.PI / 2, angle - Math.PI / 2, Orientation.CLOCKWISE, this._distance)\n this._segList.addPt(offsetR.p1)\n break\n case BufferParameters.CAP_FLAT:\n this._segList.addPt(offsetL.p1)\n this._segList.addPt(offsetR.p1)\n break\n case BufferParameters.CAP_SQUARE:\n const squareCapSideOffset = new Coordinate()\n squareCapSideOffset.x = Math.abs(this._distance) * Math.cos(angle)\n squareCapSideOffset.y = Math.abs(this._distance) * Math.sin(angle)\n const squareCapLOffset = new Coordinate(offsetL.p1.x + squareCapSideOffset.x, offsetL.p1.y + squareCapSideOffset.y)\n const squareCapROffset = new Coordinate(offsetR.p1.x + squareCapSideOffset.x, offsetR.p1.y + squareCapSideOffset.y)\n this._segList.addPt(squareCapLOffset)\n this._segList.addPt(squareCapROffset)\n break\n }\n }\n getCoordinates() {\n const pts = this._segList.getCoordinates()\n return pts\n }\n addMitreJoin(p, offset0, offset1, distance) {\n const intPt = Intersection.intersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1)\n if (intPt !== null) {\n const mitreRatio = distance <= 0.0 ? 1.0 : intPt.distance(p) / Math.abs(distance)\n if (mitreRatio <= this._bufParams.getMitreLimit()) {\n this._segList.addPt(intPt)\n return null\n }\n }\n this.addLimitedMitreJoin(offset0, offset1, distance, this._bufParams.getMitreLimit())\n }\n addOutsideTurn(orientation, addStartPoint) {\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR) {\n this._segList.addPt(this._offset0.p1)\n return null\n }\n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n this.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance)\n } else if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL) {\n this.addBevelJoin(this._offset0, this._offset1)\n } else {\n if (addStartPoint) this._segList.addPt(this._offset0.p1)\n this.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, orientation, this._distance)\n this._segList.addPt(this._offset1.p0)\n }\n }\n createSquare(p) {\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y + this._distance))\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y - this._distance))\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y - this._distance))\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y + this._distance))\n this._segList.closeRing()\n }\n addSegments(pt, isForward) {\n this._segList.addPts(pt, isForward)\n }\n addFirstSegment() {\n this._segList.addPt(this._offset1.p0)\n }\n addCornerFillet(p, p0, p1, direction, radius) {\n const dx0 = p0.x - p.x\n const dy0 = p0.y - p.y\n let startAngle = Math.atan2(dy0, dx0)\n const dx1 = p1.x - p.x\n const dy1 = p1.y - p.y\n const endAngle = Math.atan2(dy1, dx1)\n if (direction === Orientation.CLOCKWISE) {\n if (startAngle <= endAngle) startAngle += 2.0 * Math.PI\n } else {\n if (startAngle >= endAngle) startAngle -= 2.0 * Math.PI\n }\n this._segList.addPt(p0)\n this.addDirectedFillet(p, startAngle, endAngle, direction, radius)\n this._segList.addPt(p1)\n }\n addLastSegment() {\n this._segList.addPt(this._offset1.p1)\n }\n initSideSegments(s1, s2, side) {\n this._s1 = s1\n this._s2 = s2\n this._side = side\n this._seg1.setCoordinates(s1, s2)\n this.computeOffsetSegment(this._seg1, side, this._distance, this._offset1)\n }\n addLimitedMitreJoin(offset0, offset1, distance, mitreLimit) {\n const basePt = this._seg0.p1\n const ang0 = Angle.angle(basePt, this._seg0.p0)\n const angDiff = Angle.angleBetweenOriented(this._seg0.p0, basePt, this._seg1.p1)\n const angDiffHalf = angDiff / 2\n const midAng = Angle.normalize(ang0 + angDiffHalf)\n const mitreMidAng = Angle.normalize(midAng + Math.PI)\n const mitreDist = mitreLimit * distance\n const bevelDelta = mitreDist * Math.abs(Math.sin(angDiffHalf))\n const bevelHalfLen = distance - bevelDelta\n const bevelMidX = basePt.x + mitreDist * Math.cos(mitreMidAng)\n const bevelMidY = basePt.y + mitreDist * Math.sin(mitreMidAng)\n const bevelMidPt = new Coordinate(bevelMidX, bevelMidY)\n const mitreMidLine = new LineSegment(basePt, bevelMidPt)\n const bevelEndLeft = mitreMidLine.pointAlongOffset(1.0, bevelHalfLen)\n const bevelEndRight = mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen)\n if (this._side === Position.LEFT) {\n this._segList.addPt(bevelEndLeft)\n this._segList.addPt(bevelEndRight)\n } else {\n this._segList.addPt(bevelEndRight)\n this._segList.addPt(bevelEndLeft)\n }\n }\n addDirectedFillet(p, startAngle, endAngle, direction, radius) {\n const directionFactor = direction === Orientation.CLOCKWISE ? -1 : 1\n const totalAngle = Math.abs(startAngle - endAngle)\n const nSegs = Math.trunc(totalAngle / this._filletAngleQuantum + 0.5)\n if (nSegs < 1) return null\n const angleInc = totalAngle / nSegs\n const pt = new Coordinate()\n for (let i = 0; i < nSegs; i++) {\n const angle = startAngle + directionFactor * i * angleInc\n pt.x = p.x + radius * Math.cos(angle)\n pt.y = p.y + radius * Math.sin(angle)\n this._segList.addPt(pt)\n }\n }\n computeOffsetSegment(seg, side, distance, offset) {\n const sideSign = side === Position.LEFT ? 1 : -1\n const dx = seg.p1.x - seg.p0.x\n const dy = seg.p1.y - seg.p0.y\n const len = Math.sqrt(dx * dx + dy * dy)\n const ux = sideSign * distance * dx / len\n const uy = sideSign * distance * dy / len\n offset.p0.x = seg.p0.x - uy\n offset.p0.y = seg.p0.y + ux\n offset.p1.x = seg.p1.x - uy\n offset.p1.y = seg.p1.y + ux\n }\n addInsideTurn(orientation, addStartPoint) {\n this._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1)\n if (this._li.hasIntersection()) {\n this._segList.addPt(this._li.getIntersection(0))\n } else {\n this._hasNarrowConcaveAngle = true\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) {\n this._segList.addPt(this._offset0.p1)\n } else {\n this._segList.addPt(this._offset0.p1)\n if (this._closingSegLengthFactor > 0) {\n const mid0 = new Coordinate((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1))\n this._segList.addPt(mid0)\n const mid1 = new Coordinate((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1))\n this._segList.addPt(mid1)\n } else {\n this._segList.addPt(this._s1)\n }\n this._segList.addPt(this._offset1.p0)\n }\n }\n }\n createCircle(p) {\n const pt = new Coordinate(p.x + this._distance, p.y)\n this._segList.addPt(pt)\n this.addDirectedFillet(p, 0.0, 2.0 * Math.PI, -1, this._distance)\n this._segList.closeRing()\n }\n addBevelJoin(offset0, offset1) {\n this._segList.addPt(offset0.p1)\n this._segList.addPt(offset1.p0)\n }\n init(distance) {\n this._distance = distance\n this._maxCurveSegmentError = distance * (1 - Math.cos(this._filletAngleQuantum / 2.0))\n this._segList = new OffsetSegmentString()\n this._segList.setPrecisionModel(this._precisionModel)\n this._segList.setMinimumVertexDistance(distance * OffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)\n }\n addCollinear(addStartPoint) {\n this._li.computeIntersection(this._s0, this._s1, this._s1, this._s2)\n const numInt = this._li.getIntersectionNum()\n if (numInt >= 2) \n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL || this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n if (addStartPoint) this._segList.addPt(this._offset0.p1)\n this._segList.addPt(this._offset1.p0)\n } else {\n this.addCornerFillet(this._s1, this._offset0.p1, this._offset1.p0, Orientation.CLOCKWISE, this._distance)\n }\n \n }\n closeRing() {\n this._segList.closeRing()\n }\n hasNarrowConcaveAngle() {\n return this._hasNarrowConcaveAngle\n }\n}\nOffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR = 1.0E-3\nOffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-3\nOffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-6\nOffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR = 80\n","import BufferParameters from './BufferParameters.js'\nimport Position from '../../geomgraph/Position.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport BufferInputLineSimplifier from './BufferInputLineSimplifier.js'\nimport CoordinateArrays from '../../geom/CoordinateArrays.js'\nimport OffsetSegmentGenerator from './OffsetSegmentGenerator.js'\nexport default class OffsetCurveBuilder {\n constructor() {\n OffsetCurveBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._distance = 0.0\n this._precisionModel = null\n this._bufParams = null\n const precisionModel = arguments[0], bufParams = arguments[1]\n this._precisionModel = precisionModel\n this._bufParams = bufParams\n }\n static copyCoordinates(pts) {\n const copy = new Array(pts.length).fill(null)\n for (let i = 0; i < copy.length; i++) \n copy[i] = new Coordinate(pts[i])\n \n return copy\n }\n getOffsetCurve(inputPts, distance) {\n this._distance = distance\n if (distance === 0.0) return null\n const isRightSide = distance < 0.0\n const posDistance = Math.abs(distance)\n const segGen = this.getSegGen(posDistance)\n if (inputPts.length <= 1) \n this.computePointCurve(inputPts[0], segGen)\n else \n this.computeOffsetCurve(inputPts, isRightSide, segGen)\n \n const curvePts = segGen.getCoordinates()\n if (isRightSide) CoordinateArrays.reverse(curvePts)\n return curvePts\n }\n computeSingleSidedBufferCurve(inputPts, isRightSide, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n if (isRightSide) {\n segGen.addSegments(inputPts, true)\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n } else {\n segGen.addSegments(inputPts, false)\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n }\n segGen.addLastSegment()\n segGen.closeRing()\n }\n computeRingBufferCurve(inputPts, side, segGen) {\n let distTol = this.simplifyTolerance(this._distance)\n if (side === Position.RIGHT) distTol = -distTol\n const simp = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n = simp.length - 1\n segGen.initSideSegments(simp[n - 1], simp[0], side)\n for (let i = 1; i <= n; i++) {\n const addStartPoint = i !== 1\n segGen.addNextSegment(simp[i], addStartPoint)\n }\n segGen.closeRing()\n }\n computeLineBufferCurve(inputPts, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n segGen.addLastSegment()\n segGen.addLineEndCap(simp1[n1 - 1], simp1[n1])\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n segGen.addLastSegment()\n segGen.addLineEndCap(simp2[1], simp2[0])\n segGen.closeRing()\n }\n computePointCurve(pt, segGen) {\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n segGen.createCircle(pt)\n break\n case BufferParameters.CAP_SQUARE:\n segGen.createSquare(pt)\n break\n }\n }\n getLineCurve(inputPts, distance) {\n this._distance = distance\n if (this.isLineOffsetEmpty(distance)) return null\n const posDistance = Math.abs(distance)\n const segGen = this.getSegGen(posDistance)\n if (inputPts.length <= 1) {\n this.computePointCurve(inputPts[0], segGen)\n } else \n if (this._bufParams.isSingleSided()) {\n const isRightSide = distance < 0.0\n this.computeSingleSidedBufferCurve(inputPts, isRightSide, segGen)\n } else {\n this.computeLineBufferCurve(inputPts, segGen)\n }\n \n const lineCoord = segGen.getCoordinates()\n return lineCoord\n }\n getBufferParameters() {\n return this._bufParams\n }\n simplifyTolerance(bufDistance) {\n return bufDistance * this._bufParams.getSimplifyFactor()\n }\n getRingCurve(inputPts, side, distance) {\n this._distance = distance\n if (inputPts.length <= 2) return this.getLineCurve(inputPts, distance)\n if (distance === 0.0) \n return OffsetCurveBuilder.copyCoordinates(inputPts)\n \n const segGen = this.getSegGen(distance)\n this.computeRingBufferCurve(inputPts, side, segGen)\n return segGen.getCoordinates()\n }\n computeOffsetCurve(inputPts, isRightSide, segGen) {\n const distTol = this.simplifyTolerance(this._distance)\n if (isRightSide) {\n const simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol)\n const n2 = simp2.length - 1\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = n2 - 2; i >= 0; i--) \n segGen.addNextSegment(simp2[i], true)\n \n } else {\n const simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol)\n const n1 = simp1.length - 1\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT)\n segGen.addFirstSegment()\n for (let i = 2; i <= n1; i++) \n segGen.addNextSegment(simp1[i], true)\n \n }\n segGen.addLastSegment()\n }\n isLineOffsetEmpty(distance) {\n if (distance === 0.0) return true\n if (distance < 0.0 && !this._bufParams.isSingleSided()) return true\n return false\n }\n getSegGen(distance) {\n return new OffsetSegmentGenerator(this._precisionModel, this._bufParams, distance)\n }\n}\n","import hasInterface from '../../../../../hasInterface.js'\nimport Position from '../../geomgraph/Position.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport Collections from '../../../../../java/util/Collections.js'\nimport DirectedEdge from '../../geomgraph/DirectedEdge.js'\nimport LineSegment from '../../geom/LineSegment.js'\nimport Comparable from '../../../../../java/lang/Comparable.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport List from '../../../../../java/util/List.js'\nexport default class SubgraphDepthLocater {\n constructor() {\n SubgraphDepthLocater.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._subgraphs = null\n this._seg = new LineSegment()\n const subgraphs = arguments[0]\n this._subgraphs = subgraphs\n }\n findStabbedSegments() {\n if (arguments.length === 1) {\n const stabbingRayLeftPt = arguments[0]\n const stabbedSegments = new ArrayList()\n for (let i = this._subgraphs.iterator(); i.hasNext(); ) {\n const bsg = i.next()\n const env = bsg.getEnvelope()\n if (stabbingRayLeftPt.y < env.getMinY() || stabbingRayLeftPt.y > env.getMaxY()) continue\n this.findStabbedSegments(stabbingRayLeftPt, bsg.getDirectedEdges(), stabbedSegments)\n }\n return stabbedSegments\n } else if (arguments.length === 3) {\n if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && arguments[1] instanceof DirectedEdge)) {\n const stabbingRayLeftPt = arguments[0], dirEdge = arguments[1], stabbedSegments = arguments[2]\n const pts = dirEdge.getEdge().getCoordinates()\n for (let i = 0; i < pts.length - 1; i++) {\n this._seg.p0 = pts[i]\n this._seg.p1 = pts[i + 1]\n if (this._seg.p0.y > this._seg.p1.y) this._seg.reverse()\n const maxx = Math.max(this._seg.p0.x, this._seg.p1.x)\n if (maxx < stabbingRayLeftPt.x) continue\n if (this._seg.isHorizontal()) continue\n if (stabbingRayLeftPt.y < this._seg.p0.y || stabbingRayLeftPt.y > this._seg.p1.y) continue\n if (Orientation.index(this._seg.p0, this._seg.p1, stabbingRayLeftPt) === Orientation.RIGHT) continue\n let depth = dirEdge.getDepth(Position.LEFT)\n if (!this._seg.p0.equals(pts[i])) depth = dirEdge.getDepth(Position.RIGHT)\n const ds = new DepthSegment(this._seg, depth)\n stabbedSegments.add(ds)\n }\n } else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && hasInterface(arguments[1], List))) {\n const stabbingRayLeftPt = arguments[0], dirEdges = arguments[1], stabbedSegments = arguments[2]\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isForward()) continue\n this.findStabbedSegments(stabbingRayLeftPt, de, stabbedSegments)\n }\n }\n }\n }\n getDepth(p) {\n const stabbedSegments = this.findStabbedSegments(p)\n if (stabbedSegments.size() === 0) return 0\n const ds = Collections.min(stabbedSegments)\n return ds._leftDepth\n }\n}\nclass DepthSegment {\n constructor() {\n DepthSegment.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._upwardSeg = null\n this._leftDepth = null\n const seg = arguments[0], depth = arguments[1]\n this._upwardSeg = new LineSegment(seg)\n this._leftDepth = depth\n }\n compareTo(obj) {\n const other = obj\n if (this._upwardSeg.minX() >= other._upwardSeg.maxX()) return 1\n if (this._upwardSeg.maxX() <= other._upwardSeg.minX()) return -1\n let orientIndex = this._upwardSeg.orientationIndex(other._upwardSeg)\n if (orientIndex !== 0) return orientIndex\n orientIndex = -1 * other._upwardSeg.orientationIndex(this._upwardSeg)\n if (orientIndex !== 0) return orientIndex\n return this._upwardSeg.compareTo(other._upwardSeg)\n }\n compareX(seg0, seg1) {\n const compare0 = seg0.p0.compareTo(seg1.p0)\n if (compare0 !== 0) return compare0\n return seg0.p1.compareTo(seg1.p1)\n }\n toString() {\n return this._upwardSeg.toString()\n }\n get interfaces_() {\n return [Comparable]\n }\n}\nSubgraphDepthLocater.DepthSegment = DepthSegment\n","import Location from '../../geom/Location.js'\nimport LineString from '../../geom/LineString.js'\nimport Position from '../../geomgraph/Position.js'\nimport Point from '../../geom/Point.js'\nimport NodedSegmentString from '../../noding/NodedSegmentString.js'\nimport Polygon from '../../geom/Polygon.js'\nimport MultiPoint from '../../geom/MultiPoint.js'\nimport LinearRing from '../../geom/LinearRing.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport MultiPolygon from '../../geom/MultiPolygon.js'\nimport Label from '../../geomgraph/Label.js'\nimport GeometryCollection from '../../geom/GeometryCollection.js'\nimport UnsupportedOperationException from '../../../../../java/lang/UnsupportedOperationException.js'\nimport CoordinateArrays from '../../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Distance from '../../algorithm/Distance.js'\nimport MultiLineString from '../../geom/MultiLineString.js'\nimport Triangle from '../../geom/Triangle.js'\nexport default class OffsetCurveSetBuilder {\n constructor() {\n OffsetCurveSetBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._inputGeom = null\n this._distance = null\n this._curveBuilder = null\n this._curveList = new ArrayList()\n const inputGeom = arguments[0], distance = arguments[1], curveBuilder = arguments[2]\n this._inputGeom = inputGeom\n this._distance = distance\n this._curveBuilder = curveBuilder\n }\n addRingSide(coord, offsetDistance, side, cwLeftLoc, cwRightLoc) {\n if (offsetDistance === 0.0 && coord.length < LinearRing.MINIMUM_VALID_SIZE) return null\n let leftLoc = cwLeftLoc\n let rightLoc = cwRightLoc\n if (coord.length >= LinearRing.MINIMUM_VALID_SIZE && Orientation.isCCW(coord)) {\n leftLoc = cwRightLoc\n rightLoc = cwLeftLoc\n side = Position.opposite(side)\n }\n const curve = this._curveBuilder.getRingCurve(coord, side, offsetDistance)\n this.addCurve(curve, leftLoc, rightLoc)\n }\n addRingBothSides(coord, distance) {\n this.addRingSide(coord, distance, Position.LEFT, Location.EXTERIOR, Location.INTERIOR)\n this.addRingSide(coord, distance, Position.RIGHT, Location.INTERIOR, Location.EXTERIOR)\n }\n addPoint(p) {\n if (this._distance <= 0.0) return null\n const coord = p.getCoordinates()\n const curve = this._curveBuilder.getLineCurve(coord, this._distance)\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR)\n }\n addPolygon(p) {\n let offsetDistance = this._distance\n let offsetSide = Position.LEFT\n if (this._distance < 0.0) {\n offsetDistance = -this._distance\n offsetSide = Position.RIGHT\n }\n const shell = p.getExteriorRing()\n const shellCoord = CoordinateArrays.removeRepeatedPoints(shell.getCoordinates())\n if (this._distance < 0.0 && this.isErodedCompletely(shell, this._distance)) return null\n if (this._distance <= 0.0 && shellCoord.length < 3) return null\n this.addRingSide(shellCoord, offsetDistance, offsetSide, Location.EXTERIOR, Location.INTERIOR)\n for (let i = 0; i < p.getNumInteriorRing(); i++) {\n const hole = p.getInteriorRingN(i)\n const holeCoord = CoordinateArrays.removeRepeatedPoints(hole.getCoordinates())\n if (this._distance > 0.0 && this.isErodedCompletely(hole, -this._distance)) continue\n this.addRingSide(holeCoord, offsetDistance, Position.opposite(offsetSide), Location.INTERIOR, Location.EXTERIOR)\n }\n }\n isTriangleErodedCompletely(triangleCoord, bufferDistance) {\n const tri = new Triangle(triangleCoord[0], triangleCoord[1], triangleCoord[2])\n const inCentre = tri.inCentre()\n const distToCentre = Distance.pointToSegment(inCentre, tri.p0, tri.p1)\n return distToCentre < Math.abs(bufferDistance)\n }\n addLineString(line) {\n if (this._curveBuilder.isLineOffsetEmpty(this._distance)) return null\n const coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates())\n if (CoordinateArrays.isRing(coord) && !this._curveBuilder.getBufferParameters().isSingleSided()) {\n this.addRingBothSides(coord, this._distance)\n } else {\n const curve = this._curveBuilder.getLineCurve(coord, this._distance)\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR)\n }\n }\n addCurve(coord, leftLoc, rightLoc) {\n if (coord === null || coord.length < 2) return null\n const e = new NodedSegmentString(coord, new Label(0, Location.BOUNDARY, leftLoc, rightLoc))\n this._curveList.add(e)\n }\n getCurves() {\n this.add(this._inputGeom)\n return this._curveList\n }\n add(g) {\n if (g.isEmpty()) return null\n if (g instanceof Polygon) this.addPolygon(g); else if (g instanceof LineString) this.addLineString(g); else if (g instanceof Point) this.addPoint(g); else if (g instanceof MultiPoint) this.addCollection(g); else if (g instanceof MultiLineString) this.addCollection(g); else if (g instanceof MultiPolygon) this.addCollection(g); else if (g instanceof GeometryCollection) this.addCollection(g); else throw new UnsupportedOperationException(g.getGeometryType())\n }\n isErodedCompletely(ring, bufferDistance) {\n const ringCoord = ring.getCoordinates()\n if (ringCoord.length < 4) return bufferDistance < 0\n if (ringCoord.length === 4) return this.isTriangleErodedCompletely(ringCoord, bufferDistance)\n const env = ring.getEnvelopeInternal()\n const envMinDimension = Math.min(env.getHeight(), env.getWidth())\n if (bufferDistance < 0.0 && 2 * Math.abs(bufferDistance) > envMinDimension) return true\n return false\n }\n addCollection(gc) {\n for (let i = 0; i < gc.getNumGeometries(); i++) {\n const g = gc.getGeometryN(i)\n this.add(g)\n }\n }\n}\n","import SegmentIntersector from './SegmentIntersector.js'\nexport default class IntersectionAdder {\n constructor() {\n IntersectionAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hasIntersection = false\n this._hasProper = false\n this._hasProperInterior = false\n this._hasInterior = false\n this._properIntersectionPoint = null\n this._li = null\n this._isSelfIntersection = null\n this.numIntersections = 0\n this.numInteriorIntersections = 0\n this.numProperIntersections = 0\n this.numTests = 0\n const li = arguments[0]\n this._li = li\n }\n static isAdjacentSegments(i1, i2) {\n return Math.abs(i1 - i2) === 1\n }\n isTrivialIntersection(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1) \n if (this._li.getIntersectionNum() === 1) {\n if (IntersectionAdder.isAdjacentSegments(segIndex0, segIndex1)) return true\n if (e0.isClosed()) {\n const maxSegIndex = e0.size() - 1\n if (segIndex0 === 0 && segIndex1 === maxSegIndex || segIndex1 === 0 && segIndex0 === maxSegIndex) \n return true\n \n }\n }\n \n return false\n }\n getProperIntersectionPoint() {\n return this._properIntersectionPoint\n }\n hasProperInteriorIntersection() {\n return this._hasProperInterior\n }\n getLineIntersector() {\n return this._li\n }\n hasProperIntersection() {\n return this._hasProper\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) return null\n this.numTests++\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) {\n this.numIntersections++\n if (this._li.isInteriorIntersection()) {\n this.numInteriorIntersections++\n this._hasInterior = true\n }\n if (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n this._hasIntersection = true\n e0.addIntersections(this._li, segIndex0, 0)\n e1.addIntersections(this._li, segIndex1, 1)\n if (this._li.isProper()) {\n this.numProperIntersections++\n this._hasProper = true\n this._hasProperInterior = true\n }\n }\n }\n }\n hasIntersection() {\n return this._hasIntersection\n }\n isDone() {\n return false\n }\n hasInteriorIntersection() {\n return this._hasInterior\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import Location from '../../geom/Location.js'\nimport BufferSubgraph from './BufferSubgraph.js'\nimport PolygonBuilder from '../overlay/PolygonBuilder.js'\nimport GeometryFactory from '../../geom/GeometryFactory.js'\nimport Position from '../../geomgraph/Position.js'\nimport MCIndexNoder from '../../noding/MCIndexNoder.js'\nimport OffsetCurveBuilder from './OffsetCurveBuilder.js'\nimport Collections from '../../../../../java/util/Collections.js'\nimport SubgraphDepthLocater from './SubgraphDepthLocater.js'\nimport OffsetCurveSetBuilder from './OffsetCurveSetBuilder.js'\nimport Label from '../../geomgraph/Label.js'\nimport OverlayNodeFactory from '../overlay/OverlayNodeFactory.js'\nimport EdgeList from '../../geomgraph/EdgeList.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector.js'\nimport IntersectionAdder from '../../noding/IntersectionAdder.js'\nimport Edge from '../../geomgraph/Edge.js'\nimport PlanarGraph from '../../geomgraph/PlanarGraph.js'\nexport default class BufferBuilder {\n constructor() {\n BufferBuilder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._bufParams = null\n this._workingPrecisionModel = null\n this._workingNoder = null\n this._geomFact = null\n this._graph = null\n this._edgeList = new EdgeList()\n const bufParams = arguments[0]\n this._bufParams = bufParams\n }\n static depthDelta(label) {\n const lLoc = label.getLocation(0, Position.LEFT)\n const rLoc = label.getLocation(0, Position.RIGHT)\n if (lLoc === Location.INTERIOR && rLoc === Location.EXTERIOR) return 1; else if (lLoc === Location.EXTERIOR && rLoc === Location.INTERIOR) return -1\n return 0\n }\n static convertSegStrings(it) {\n const fact = new GeometryFactory()\n const lines = new ArrayList()\n while (it.hasNext()) {\n const ss = it.next()\n const line = fact.createLineString(ss.getCoordinates())\n lines.add(line)\n }\n return fact.buildGeometry(lines)\n }\n setWorkingPrecisionModel(pm) {\n this._workingPrecisionModel = pm\n }\n insertUniqueEdge(e) {\n const existingEdge = this._edgeList.findEqualEdge(e)\n if (existingEdge !== null) {\n const existingLabel = existingEdge.getLabel()\n let labelToMerge = e.getLabel()\n if (!existingEdge.isPointwiseEqual(e)) {\n labelToMerge = new Label(e.getLabel())\n labelToMerge.flip()\n }\n existingLabel.merge(labelToMerge)\n const mergeDelta = BufferBuilder.depthDelta(labelToMerge)\n const existingDelta = existingEdge.getDepthDelta()\n const newDelta = existingDelta + mergeDelta\n existingEdge.setDepthDelta(newDelta)\n } else {\n this._edgeList.add(e)\n e.setDepthDelta(BufferBuilder.depthDelta(e.getLabel()))\n }\n }\n buildSubgraphs(subgraphList, polyBuilder) {\n const processedGraphs = new ArrayList()\n for (let i = subgraphList.iterator(); i.hasNext(); ) {\n const subgraph = i.next()\n const p = subgraph.getRightmostCoordinate()\n const locater = new SubgraphDepthLocater(processedGraphs)\n const outsideDepth = locater.getDepth(p)\n subgraph.computeDepth(outsideDepth)\n subgraph.findResultEdges()\n processedGraphs.add(subgraph)\n polyBuilder.add(subgraph.getDirectedEdges(), subgraph.getNodes())\n }\n }\n createSubgraphs(graph) {\n const subgraphList = new ArrayList()\n for (let i = graph.getNodes().iterator(); i.hasNext(); ) {\n const node = i.next()\n if (!node.isVisited()) {\n const subgraph = new BufferSubgraph()\n subgraph.create(node)\n subgraphList.add(subgraph)\n }\n }\n Collections.sort(subgraphList, Collections.reverseOrder())\n return subgraphList\n }\n createEmptyResultGeometry() {\n const emptyGeom = this._geomFact.createPolygon()\n return emptyGeom\n }\n getNoder(precisionModel) {\n if (this._workingNoder !== null) return this._workingNoder\n const noder = new MCIndexNoder()\n const li = new RobustLineIntersector()\n li.setPrecisionModel(precisionModel)\n noder.setSegmentIntersector(new IntersectionAdder(li))\n return noder\n }\n buffer(g, distance) {\n let precisionModel = this._workingPrecisionModel\n if (precisionModel === null) precisionModel = g.getPrecisionModel()\n this._geomFact = g.getFactory()\n const curveBuilder = new OffsetCurveBuilder(precisionModel, this._bufParams)\n const curveSetBuilder = new OffsetCurveSetBuilder(g, distance, curveBuilder)\n const bufferSegStrList = curveSetBuilder.getCurves()\n if (bufferSegStrList.size() <= 0) \n return this.createEmptyResultGeometry()\n \n this.computeNodedEdges(bufferSegStrList, precisionModel)\n this._graph = new PlanarGraph(new OverlayNodeFactory())\n this._graph.addEdges(this._edgeList.getEdges())\n const subgraphList = this.createSubgraphs(this._graph)\n const polyBuilder = new PolygonBuilder(this._geomFact)\n this.buildSubgraphs(subgraphList, polyBuilder)\n const resultPolyList = polyBuilder.getPolygons()\n if (resultPolyList.size() <= 0) \n return this.createEmptyResultGeometry()\n \n const resultGeom = this._geomFact.buildGeometry(resultPolyList)\n return resultGeom\n }\n computeNodedEdges(bufferSegStrList, precisionModel) {\n const noder = this.getNoder(precisionModel)\n noder.computeNodes(bufferSegStrList)\n const nodedSegStrings = noder.getNodedSubstrings()\n for (let i = nodedSegStrings.iterator(); i.hasNext(); ) {\n const segStr = i.next()\n const pts = segStr.getCoordinates()\n if (pts.length === 2 && pts[0].equals2D(pts[1])) continue\n const oldLabel = segStr.getData()\n const edge = new Edge(segStr.getCoordinates(), new Label(oldLabel))\n this.insertUniqueEdge(edge)\n }\n }\n setNoder(noder) {\n this._workingNoder = noder\n }\n}\n","import hasInterface from '../../../../hasInterface.js'\nimport Collection from '../../../../java/util/Collection.js'\nimport Noder from './Noder.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport NodedSegmentString from './NodedSegmentString.js'\nimport System from '../../../../java/lang/System.js'\nimport CoordinateArrays from '../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nexport default class ScaledNoder {\n constructor() {\n ScaledNoder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._noder = null\n this._scaleFactor = null\n this._offsetX = null\n this._offsetY = null\n this._isScaled = false\n if (arguments.length === 2) {\n const noder = arguments[0], scaleFactor = arguments[1]\n ScaledNoder.constructor_.call(this, noder, scaleFactor, 0, 0)\n } else if (arguments.length === 4) {\n const noder = arguments[0], scaleFactor = arguments[1], offsetX = arguments[2], offsetY = arguments[3]\n this._noder = noder\n this._scaleFactor = scaleFactor\n this._isScaled = !this.isIntegerPrecision()\n }\n }\n rescale() {\n if (hasInterface(arguments[0], Collection)) {\n const segStrings = arguments[0]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n this.rescale(ss.getCoordinates())\n }\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n for (let i = 0; i < pts.length; i++) {\n pts[i].x = pts[i].x / this._scaleFactor + this._offsetX\n pts[i].y = pts[i].y / this._scaleFactor + this._offsetY\n }\n if (pts.length === 2 && pts[0].equals2D(pts[1])) \n System.out.println(pts)\n \n }\n }\n scale() {\n if (hasInterface(arguments[0], Collection)) {\n const segStrings = arguments[0]\n const nodedSegmentStrings = new ArrayList(segStrings.size())\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n nodedSegmentStrings.add(new NodedSegmentString(this.scale(ss.getCoordinates()), ss.getData()))\n }\n return nodedSegmentStrings\n } else if (arguments[0] instanceof Array) {\n const pts = arguments[0]\n const roundPts = new Array(pts.length).fill(null)\n for (let i = 0; i < pts.length; i++) \n roundPts[i] = new Coordinate(Math.round((pts[i].x - this._offsetX) * this._scaleFactor), Math.round((pts[i].y - this._offsetY) * this._scaleFactor), pts[i].getZ())\n \n const roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts)\n return roundPtsNoDup\n }\n }\n isIntegerPrecision() {\n return this._scaleFactor === 1.0\n }\n getNodedSubstrings() {\n const splitSS = this._noder.getNodedSubstrings()\n if (this._isScaled) this.rescale(splitSS)\n return splitSS\n }\n computeNodes(inputSegStrings) {\n let intSegStrings = inputSegStrings\n if (this._isScaled) intSegStrings = this.scale(inputSegStrings)\n this._noder.computeNodes(intSegStrings)\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import GeometryFactory from '../geom/GeometryFactory.js'\nimport RobustLineIntersector from '../algorithm/RobustLineIntersector.js'\nimport RuntimeException from '../../../../java/lang/RuntimeException.js'\nexport default class NodingValidator {\n constructor() {\n NodingValidator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._segStrings = null\n const segStrings = arguments[0]\n this._segStrings = segStrings\n }\n checkEndPtVertexIntersections() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n const pts = ss.getCoordinates()\n this.checkEndPtVertexIntersections(pts[0], this._segStrings)\n this.checkEndPtVertexIntersections(pts[pts.length - 1], this._segStrings)\n }\n } else if (arguments.length === 2) {\n const testPt = arguments[0], segStrings = arguments[1]\n for (let i = segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n const pts = ss.getCoordinates()\n for (let j = 1; j < pts.length - 1; j++) \n if (pts[j].equals(testPt)) throw new RuntimeException('found endpt/interior pt intersection at index ' + j + ' :pt ' + testPt)\n \n }\n }\n }\n checkInteriorIntersections() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss0 = i.next()\n for (let j = this._segStrings.iterator(); j.hasNext(); ) {\n const ss1 = j.next()\n this.checkInteriorIntersections(ss0, ss1)\n }\n }\n } else if (arguments.length === 2) {\n const ss0 = arguments[0], ss1 = arguments[1]\n const pts0 = ss0.getCoordinates()\n const pts1 = ss1.getCoordinates()\n for (let i0 = 0; i0 < pts0.length - 1; i0++) \n for (let i1 = 0; i1 < pts1.length - 1; i1++) \n this.checkInteriorIntersections(ss0, i0, ss1, i1)\n \n \n } else if (arguments.length === 4) {\n const e0 = arguments[0], segIndex0 = arguments[1], e1 = arguments[2], segIndex1 = arguments[3]\n if (e0 === e1 && segIndex0 === segIndex1) return null\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) \n if (this._li.isProper() || this.hasInteriorIntersection(this._li, p00, p01) || this.hasInteriorIntersection(this._li, p10, p11)) \n throw new RuntimeException('found non-noded intersection at ' + p00 + '-' + p01 + ' and ' + p10 + '-' + p11)\n \n \n }\n }\n checkValid() {\n this.checkEndPtVertexIntersections()\n this.checkInteriorIntersections()\n this.checkCollapses()\n }\n checkCollapses() {\n if (arguments.length === 0) {\n for (let i = this._segStrings.iterator(); i.hasNext(); ) {\n const ss = i.next()\n this.checkCollapses(ss)\n }\n } else if (arguments.length === 1) {\n const ss = arguments[0]\n const pts = ss.getCoordinates()\n for (let i = 0; i < pts.length - 2; i++) \n this.checkCollapse(pts[i], pts[i + 1], pts[i + 2])\n \n }\n }\n hasInteriorIntersection(li, p0, p1) {\n for (let i = 0; i < li.getIntersectionNum(); i++) {\n const intPt = li.getIntersection(i)\n if (!(intPt.equals(p0) || intPt.equals(p1))) return true\n }\n return false\n }\n checkCollapse(p0, p1, p2) {\n if (p0.equals(p2)) throw new RuntimeException('found non-noded collapse at ' + NodingValidator.fact.createLineString([p0, p1, p2]))\n }\n}\nNodingValidator.fact = new GeometryFactory()\n","import Coordinate from '../../geom/Coordinate.js'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException.js'\nimport Envelope from '../../geom/Envelope.js'\nimport Assert from '../../util/Assert.js'\nexport default class HotPixel {\n constructor() {\n HotPixel.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = null\n this._pt = null\n this._originalPt = null\n this._ptScaled = null\n this._p0Scaled = null\n this._p1Scaled = null\n this._scaleFactor = null\n this._minx = null\n this._maxx = null\n this._miny = null\n this._maxy = null\n this._corner = new Array(4).fill(null)\n this._safeEnv = null\n const pt = arguments[0], scaleFactor = arguments[1], li = arguments[2]\n this._originalPt = pt\n this._pt = pt\n this._scaleFactor = scaleFactor\n this._li = li\n if (scaleFactor <= 0) throw new IllegalArgumentException('Scale factor must be non-zero')\n if (scaleFactor !== 1.0) {\n this._pt = new Coordinate(this.scale(pt.x), this.scale(pt.y))\n this._p0Scaled = new Coordinate()\n this._p1Scaled = new Coordinate()\n }\n this.initCorners(this._pt)\n }\n intersectsScaled(p0, p1) {\n const segMinx = Math.min(p0.x, p1.x)\n const segMaxx = Math.max(p0.x, p1.x)\n const segMiny = Math.min(p0.y, p1.y)\n const segMaxy = Math.max(p0.y, p1.y)\n const isOutsidePixelEnv = this._maxx < segMinx || this._minx > segMaxx || this._maxy < segMiny || this._miny > segMaxy\n if (isOutsidePixelEnv) return false\n const intersects = this.intersectsToleranceSquare(p0, p1)\n Assert.isTrue(!(isOutsidePixelEnv && intersects), 'Found bad envelope test')\n return intersects\n }\n initCorners(pt) {\n const tolerance = 0.5\n this._minx = pt.x - tolerance\n this._maxx = pt.x + tolerance\n this._miny = pt.y - tolerance\n this._maxy = pt.y + tolerance\n this._corner[0] = new Coordinate(this._maxx, this._maxy)\n this._corner[1] = new Coordinate(this._minx, this._maxy)\n this._corner[2] = new Coordinate(this._minx, this._miny)\n this._corner[3] = new Coordinate(this._maxx, this._miny)\n }\n intersects(p0, p1) {\n if (this._scaleFactor === 1.0) return this.intersectsScaled(p0, p1)\n this.copyScaled(p0, this._p0Scaled)\n this.copyScaled(p1, this._p1Scaled)\n return this.intersectsScaled(this._p0Scaled, this._p1Scaled)\n }\n scale(val) {\n return Math.round(val * this._scaleFactor)\n }\n getCoordinate() {\n return this._originalPt\n }\n copyScaled(p, pScaled) {\n pScaled.x = this.scale(p.x)\n pScaled.y = this.scale(p.y)\n }\n getSafeEnvelope() {\n if (this._safeEnv === null) {\n const safeTolerance = HotPixel.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor\n this._safeEnv = new Envelope(this._originalPt.x - safeTolerance, this._originalPt.x + safeTolerance, this._originalPt.y - safeTolerance, this._originalPt.y + safeTolerance)\n }\n return this._safeEnv\n }\n intersectsPixelClosure(p0, p1) {\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3])\n if (this._li.hasIntersection()) return true\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0])\n if (this._li.hasIntersection()) return true\n return false\n }\n intersectsToleranceSquare(p0, p1) {\n let intersectsLeft = false\n let intersectsBottom = false\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1])\n if (this._li.isProper()) return true\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2])\n if (this._li.isProper()) return true\n if (this._li.hasIntersection()) intersectsLeft = true\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3])\n if (this._li.isProper()) return true\n if (this._li.hasIntersection()) intersectsBottom = true\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0])\n if (this._li.isProper()) return true\n if (intersectsLeft && intersectsBottom) return true\n if (p0.equals(this._pt)) return true\n if (p1.equals(this._pt)) return true\n return false\n }\n addSnappedNode(segStr, segIndex) {\n const p0 = segStr.getCoordinate(segIndex)\n const p1 = segStr.getCoordinate(segIndex + 1)\n if (this.intersects(p0, p1)) {\n segStr.addIntersection(this.getCoordinate(), segIndex)\n return true\n }\n return false\n }\n}\nHotPixel.SAFE_ENV_EXPANSION_FACTOR = 0.75\n","import LineSegment from '../../geom/LineSegment.js'\nexport default class MonotoneChainSelectAction {\n constructor() {\n MonotoneChainSelectAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.selectedSegment = new LineSegment()\n }\n select() {\n if (arguments.length === 1) {\n const seg = arguments[0]\n } else if (arguments.length === 2) {\n const mc = arguments[0], startIndex = arguments[1]\n mc.getLineSegment(startIndex, this.selectedSegment)\n this.select(this.selectedSegment)\n }\n }\n}\n","import MonotoneChainSelectAction from '../../index/chain/MonotoneChainSelectAction.js'\nimport MonotoneChain from '../../index/chain/MonotoneChain.js'\nimport ItemVisitor from '../../index/ItemVisitor.js'\nexport default class MCIndexPointSnapper {\n constructor() {\n MCIndexPointSnapper.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._index = null\n const index = arguments[0]\n this._index = index\n }\n snap() {\n if (arguments.length === 1) {\n const hotPixel = arguments[0]\n return this.snap(hotPixel, null, -1)\n } else if (arguments.length === 3) {\n const hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2]\n const pixelEnv = hotPixel.getSafeEnvelope()\n const hotPixelSnapAction = new HotPixelSnapAction(hotPixel, parentEdge, hotPixelVertexIndex)\n this._index.query(pixelEnv, new (class {\n get interfaces_() {\n return [ItemVisitor]\n }\n visitItem(item) {\n const testChain = item\n testChain.select(pixelEnv, hotPixelSnapAction)\n }\n })())\n return hotPixelSnapAction.isNodeAdded()\n }\n }\n}\nclass HotPixelSnapAction extends MonotoneChainSelectAction {\n constructor() {\n super()\n HotPixelSnapAction.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._hotPixel = null\n this._parentEdge = null\n this._hotPixelVertexIndex = null\n this._isNodeAdded = false\n const hotPixel = arguments[0], parentEdge = arguments[1], hotPixelVertexIndex = arguments[2]\n this._hotPixel = hotPixel\n this._parentEdge = parentEdge\n this._hotPixelVertexIndex = hotPixelVertexIndex\n }\n isNodeAdded() {\n return this._isNodeAdded\n }\n select() {\n if (arguments.length === 2 && (Number.isInteger(arguments[1]) && arguments[0] instanceof MonotoneChain)) {\n const mc = arguments[0], startIndex = arguments[1]\n const ss = mc.getContext()\n if (this._parentEdge === ss) \n if (startIndex === this._hotPixelVertexIndex || startIndex + 1 === this._hotPixelVertexIndex) return null\n \n this._isNodeAdded |= this._hotPixel.addSnappedNode(ss, startIndex)\n } else {\n return super.select.apply(this, arguments)\n }\n }\n}\nMCIndexPointSnapper.HotPixelSnapAction = HotPixelSnapAction\n","import SegmentIntersector from './SegmentIntersector.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nexport default class InteriorIntersectionFinderAdder {\n constructor() {\n InteriorIntersectionFinderAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = null\n this._interiorIntersections = null\n const li = arguments[0]\n this._li = li\n this._interiorIntersections = new ArrayList()\n }\n processIntersections(e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) return null\n const p00 = e0.getCoordinates()[segIndex0]\n const p01 = e0.getCoordinates()[segIndex0 + 1]\n const p10 = e1.getCoordinates()[segIndex1]\n const p11 = e1.getCoordinates()[segIndex1 + 1]\n this._li.computeIntersection(p00, p01, p10, p11)\n if (this._li.hasIntersection()) \n if (this._li.isInteriorIntersection()) {\n for (let intIndex = 0; intIndex < this._li.getIntersectionNum(); intIndex++) \n this._interiorIntersections.add(this._li.getIntersection(intIndex))\n \n e0.addIntersections(this._li, segIndex0, 0)\n e1.addIntersections(this._li, segIndex1, 1)\n }\n \n }\n isDone() {\n return false\n }\n getInteriorIntersections() {\n return this._interiorIntersections\n }\n get interfaces_() {\n return [SegmentIntersector]\n }\n}\n","import NodingValidator from '../NodingValidator.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport Collection from '../../../../../java/util/Collection.js'\nimport Noder from '../Noder.js'\nimport MCIndexNoder from '../MCIndexNoder.js'\nimport NodedSegmentString from '../NodedSegmentString.js'\nimport HotPixel from './HotPixel.js'\nimport Exception from '../../../../../java/lang/Exception.js'\nimport MCIndexPointSnapper from './MCIndexPointSnapper.js'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector.js'\nimport InteriorIntersectionFinderAdder from '../InteriorIntersectionFinderAdder.js'\nexport default class MCIndexSnapRounder {\n constructor() {\n MCIndexSnapRounder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pm = null\n this._li = null\n this._scaleFactor = null\n this._noder = null\n this._pointSnapper = null\n this._nodedSegStrings = null\n const pm = arguments[0]\n this._pm = pm\n this._li = new RobustLineIntersector()\n this._li.setPrecisionModel(pm)\n this._scaleFactor = pm.getScale()\n }\n checkCorrectness(inputSegmentStrings) {\n const resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings)\n const nv = new NodingValidator(resultSegStrings)\n try {\n nv.checkValid()\n } catch (ex) {\n if (ex instanceof Exception) \n ex.printStackTrace()\n else throw ex\n } finally {}\n }\n getNodedSubstrings() {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n }\n snapRound(segStrings, li) {\n const intersections = this.findInteriorIntersections(segStrings, li)\n this.computeIntersectionSnaps(intersections)\n this.computeVertexSnaps(segStrings)\n }\n findInteriorIntersections(segStrings, li) {\n const intFinderAdder = new InteriorIntersectionFinderAdder(li)\n this._noder.setSegmentIntersector(intFinderAdder)\n this._noder.computeNodes(segStrings)\n return intFinderAdder.getInteriorIntersections()\n }\n computeVertexSnaps() {\n if (hasInterface(arguments[0], Collection)) {\n const edges = arguments[0]\n for (let i0 = edges.iterator(); i0.hasNext(); ) {\n const edge0 = i0.next()\n this.computeVertexSnaps(edge0)\n }\n } else if (arguments[0] instanceof NodedSegmentString) {\n const e = arguments[0]\n const pts0 = e.getCoordinates()\n for (let i = 0; i < pts0.length; i++) {\n const hotPixel = new HotPixel(pts0[i], this._scaleFactor, this._li)\n const isNodeAdded = this._pointSnapper.snap(hotPixel, e, i)\n if (isNodeAdded) \n e.addIntersection(pts0[i], i)\n \n }\n }\n }\n computeNodes(inputSegmentStrings) {\n this._nodedSegStrings = inputSegmentStrings\n this._noder = new MCIndexNoder()\n this._pointSnapper = new MCIndexPointSnapper(this._noder.getIndex())\n this.snapRound(inputSegmentStrings, this._li)\n }\n computeIntersectionSnaps(snapPts) {\n for (let it = snapPts.iterator(); it.hasNext(); ) {\n const snapPt = it.next()\n const hotPixel = new HotPixel(snapPt, this._scaleFactor, this._li)\n this._pointSnapper.snap(hotPixel)\n }\n }\n get interfaces_() {\n return [Noder]\n }\n}\n","import BufferParameters from './BufferParameters.js'\nimport Geometry from '../../geom/Geometry.js'\nimport BufferBuilder from './BufferBuilder.js'\nimport ScaledNoder from '../../noding/ScaledNoder.js'\nimport TopologyException from '../../geom/TopologyException.js'\nimport MathUtil from '../../math/MathUtil.js'\nimport PrecisionModel from '../../geom/PrecisionModel.js'\nimport RuntimeException from '../../../../../java/lang/RuntimeException.js'\nimport MCIndexSnapRounder from '../../noding/snapround/MCIndexSnapRounder.js'\nexport default class BufferOp {\n constructor() {\n BufferOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._argGeom = null\n this._distance = null\n this._bufParams = new BufferParameters()\n this._resultGeometry = null\n this._saveException = null\n if (arguments.length === 1) {\n const g = arguments[0]\n this._argGeom = g\n } else if (arguments.length === 2) {\n const g = arguments[0], bufParams = arguments[1]\n this._argGeom = g\n this._bufParams = bufParams\n }\n }\n static bufferOp() {\n if (arguments.length === 2) {\n const g = arguments[0], distance = arguments[1]\n const gBuf = new BufferOp(g)\n const geomBuf = gBuf.getResultGeometry(distance)\n return geomBuf\n } else if (arguments.length === 3) {\n if (Number.isInteger(arguments[2]) && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n const g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2]\n const bufOp = new BufferOp(g)\n bufOp.setQuadrantSegments(quadrantSegments)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n } else if (arguments[2] instanceof BufferParameters && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n const g = arguments[0], distance = arguments[1], params = arguments[2]\n const bufOp = new BufferOp(g, params)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n }\n } else if (arguments.length === 4) {\n const g = arguments[0], distance = arguments[1], quadrantSegments = arguments[2], endCapStyle = arguments[3]\n const bufOp = new BufferOp(g)\n bufOp.setQuadrantSegments(quadrantSegments)\n bufOp.setEndCapStyle(endCapStyle)\n const geomBuf = bufOp.getResultGeometry(distance)\n return geomBuf\n }\n }\n static precisionScaleFactor(g, distance, maxPrecisionDigits) {\n const env = g.getEnvelopeInternal()\n const envMax = MathUtil.max(Math.abs(env.getMaxX()), Math.abs(env.getMaxY()), Math.abs(env.getMinX()), Math.abs(env.getMinY()))\n const expandByDistance = distance > 0.0 ? distance : 0.0\n const bufEnvMax = envMax + 2 * expandByDistance\n const bufEnvPrecisionDigits = Math.trunc(Math.log(bufEnvMax) / Math.log(10) + 1.0)\n const minUnitLog10 = maxPrecisionDigits - bufEnvPrecisionDigits\n const scaleFactor = Math.pow(10.0, minUnitLog10)\n return scaleFactor\n }\n bufferFixedPrecision(fixedPM) {\n const noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)), fixedPM.getScale())\n const bufBuilder = new BufferBuilder(this._bufParams)\n bufBuilder.setWorkingPrecisionModel(fixedPM)\n bufBuilder.setNoder(noder)\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance)\n }\n bufferReducedPrecision() {\n if (arguments.length === 0) {\n for (let precDigits = BufferOp.MAX_PRECISION_DIGITS; precDigits >= 0; precDigits--) {\n try {\n this.bufferReducedPrecision(precDigits)\n } catch (ex) {\n if (ex instanceof TopologyException) \n this._saveException = ex\n else throw ex\n } finally {}\n if (this._resultGeometry !== null) return null\n }\n throw this._saveException\n } else if (arguments.length === 1) {\n const precisionDigits = arguments[0]\n const sizeBasedScaleFactor = BufferOp.precisionScaleFactor(this._argGeom, this._distance, precisionDigits)\n const fixedPM = new PrecisionModel(sizeBasedScaleFactor)\n this.bufferFixedPrecision(fixedPM)\n }\n }\n computeGeometry() {\n this.bufferOriginalPrecision()\n if (this._resultGeometry !== null) return null\n const argPM = this._argGeom.getFactory().getPrecisionModel()\n if (argPM.getType() === PrecisionModel.FIXED) this.bufferFixedPrecision(argPM); else this.bufferReducedPrecision()\n }\n setQuadrantSegments(quadrantSegments) {\n this._bufParams.setQuadrantSegments(quadrantSegments)\n }\n bufferOriginalPrecision() {\n try {\n const bufBuilder = new BufferBuilder(this._bufParams)\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance)\n } catch (ex) {\n if (ex instanceof RuntimeException) \n this._saveException = ex\n else throw ex\n } finally {}\n }\n getResultGeometry(distance) {\n this._distance = distance\n this.computeGeometry()\n return this._resultGeometry\n }\n setEndCapStyle(endCapStyle) {\n this._bufParams.setEndCapStyle(endCapStyle)\n }\n}\nBufferOp.CAP_ROUND = BufferParameters.CAP_ROUND\nBufferOp.CAP_BUTT = BufferParameters.CAP_FLAT\nBufferOp.CAP_FLAT = BufferParameters.CAP_FLAT\nBufferOp.CAP_SQUARE = BufferParameters.CAP_SQUARE\nBufferOp.MAX_PRECISION_DIGITS = 12\n","import HashSet from '../../../../java/util/HashSet.js'\nimport CoordinateFilter from '../geom/CoordinateFilter.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nexport default class UniqueCoordinateArrayFilter {\n constructor() {\n UniqueCoordinateArrayFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._coordSet = new HashSet()\n this._list = new ArrayList()\n }\n static filterCoordinates(coords) {\n const filter = new UniqueCoordinateArrayFilter()\n for (let i = 0; i < coords.length; i++) \n filter.filter(coords[i])\n \n return filter.getCoordinates()\n }\n filter(coord) {\n if (this._coordSet.add(coord)) \n this._list.add(coord)\n \n }\n getCoordinates() {\n const coordinates = new Array(this._list.size()).fill(null)\n return this._list.toArray(coordinates)\n }\n get interfaces_() {\n return [CoordinateFilter]\n }\n}\n","import TreeSet from '../../../../java/util/TreeSet.js'\nimport CoordinateList from '../geom/CoordinateList.js'\nimport Arrays from '../../../../java/util/Arrays.js'\nimport PointLocation from './PointLocation.js'\nimport Stack from '../../../../java/util/Stack.js'\nimport Orientation from './Orientation.js'\nimport CoordinateArrays from '../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Comparator from '../../../../java/util/Comparator.js'\nimport UniqueCoordinateArrayFilter from '../util/UniqueCoordinateArrayFilter.js'\nimport Assert from '../util/Assert.js'\nexport default class ConvexHull {\n constructor() {\n ConvexHull.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFactory = null\n this._inputPts = null\n if (arguments.length === 1) {\n const geometry = arguments[0]\n ConvexHull.constructor_.call(this, ConvexHull.extractCoordinates(geometry), geometry.getFactory())\n } else if (arguments.length === 2) {\n const pts = arguments[0], geomFactory = arguments[1]\n this._inputPts = UniqueCoordinateArrayFilter.filterCoordinates(pts)\n this._geomFactory = geomFactory\n }\n }\n static extractCoordinates(geom) {\n const filter = new UniqueCoordinateArrayFilter()\n geom.apply(filter)\n return filter.getCoordinates()\n }\n preSort(pts) {\n let t = null\n for (let i = 1; i < pts.length; i++) \n if (pts[i].y < pts[0].y || pts[i].y === pts[0].y && pts[i].x < pts[0].x) {\n t = pts[0]\n pts[0] = pts[i]\n pts[i] = t\n }\n \n Arrays.sort(pts, 1, pts.length, new RadialComparator(pts[0]))\n return pts\n }\n computeOctRing(inputPts) {\n const octPts = this.computeOctPts(inputPts)\n const coordList = new CoordinateList()\n coordList.add(octPts, false)\n if (coordList.size() < 3) \n return null\n \n coordList.closeRing()\n return coordList.toCoordinateArray()\n }\n lineOrPolygon(coordinates) {\n coordinates = this.cleanRing(coordinates)\n if (coordinates.length === 3) \n return this._geomFactory.createLineString([coordinates[0], coordinates[1]])\n \n const linearRing = this._geomFactory.createLinearRing(coordinates)\n return this._geomFactory.createPolygon(linearRing)\n }\n cleanRing(original) {\n Assert.equals(original[0], original[original.length - 1])\n const cleanedRing = new ArrayList()\n let previousDistinctCoordinate = null\n for (let i = 0; i <= original.length - 2; i++) {\n const currentCoordinate = original[i]\n const nextCoordinate = original[i + 1]\n if (currentCoordinate.equals(nextCoordinate)) \n continue\n \n if (previousDistinctCoordinate !== null && this.isBetween(previousDistinctCoordinate, currentCoordinate, nextCoordinate)) \n continue\n \n cleanedRing.add(currentCoordinate)\n previousDistinctCoordinate = currentCoordinate\n }\n cleanedRing.add(original[original.length - 1])\n const cleanedRingCoordinates = new Array(cleanedRing.size()).fill(null)\n return cleanedRing.toArray(cleanedRingCoordinates)\n }\n isBetween(c1, c2, c3) {\n if (Orientation.index(c1, c2, c3) !== 0) \n return false\n \n if (c1.x !== c3.x) {\n if (c1.x <= c2.x && c2.x <= c3.x) \n return true\n \n if (c3.x <= c2.x && c2.x <= c1.x) \n return true\n \n }\n if (c1.y !== c3.y) {\n if (c1.y <= c2.y && c2.y <= c3.y) \n return true\n \n if (c3.y <= c2.y && c2.y <= c1.y) \n return true\n \n }\n return false\n }\n reduce(inputPts) {\n const polyPts = this.computeOctRing(inputPts)\n if (polyPts === null) return inputPts\n const reducedSet = new TreeSet()\n for (let i = 0; i < polyPts.length; i++) \n reducedSet.add(polyPts[i])\n \n for (let i = 0; i < inputPts.length; i++) \n if (!PointLocation.isInRing(inputPts[i], polyPts)) \n reducedSet.add(inputPts[i])\n \n \n const reducedPts = CoordinateArrays.toCoordinateArray(reducedSet)\n if (reducedPts.length < 3) return this.padArray3(reducedPts)\n return reducedPts\n }\n getConvexHull() {\n if (this._inputPts.length === 0) \n return this._geomFactory.createGeometryCollection()\n \n if (this._inputPts.length === 1) \n return this._geomFactory.createPoint(this._inputPts[0])\n \n if (this._inputPts.length === 2) \n return this._geomFactory.createLineString(this._inputPts)\n \n let reducedPts = this._inputPts\n if (this._inputPts.length > 50) \n reducedPts = this.reduce(this._inputPts)\n \n const sortedPts = this.preSort(reducedPts)\n const cHS = this.grahamScan(sortedPts)\n const cH = this.toCoordinateArray(cHS)\n return this.lineOrPolygon(cH)\n }\n padArray3(pts) {\n const pad = new Array(3).fill(null)\n for (let i = 0; i < pad.length; i++) \n if (i < pts.length) \n pad[i] = pts[i]\n else pad[i] = pts[0]\n \n return pad\n }\n computeOctPts(inputPts) {\n const pts = new Array(8).fill(null)\n for (let j = 0; j < pts.length; j++) \n pts[j] = inputPts[0]\n \n for (let i = 1; i < inputPts.length; i++) {\n if (inputPts[i].x < pts[0].x) \n pts[0] = inputPts[i]\n \n if (inputPts[i].x - inputPts[i].y < pts[1].x - pts[1].y) \n pts[1] = inputPts[i]\n \n if (inputPts[i].y > pts[2].y) \n pts[2] = inputPts[i]\n \n if (inputPts[i].x + inputPts[i].y > pts[3].x + pts[3].y) \n pts[3] = inputPts[i]\n \n if (inputPts[i].x > pts[4].x) \n pts[4] = inputPts[i]\n \n if (inputPts[i].x - inputPts[i].y > pts[5].x - pts[5].y) \n pts[5] = inputPts[i]\n \n if (inputPts[i].y < pts[6].y) \n pts[6] = inputPts[i]\n \n if (inputPts[i].x + inputPts[i].y < pts[7].x + pts[7].y) \n pts[7] = inputPts[i]\n \n }\n return pts\n }\n toCoordinateArray(stack) {\n const coordinates = new Array(stack.size()).fill(null)\n for (let i = 0; i < stack.size(); i++) {\n const coordinate = stack.get(i)\n coordinates[i] = coordinate\n }\n return coordinates\n }\n grahamScan(c) {\n let p = null\n const ps = new Stack()\n ps.push(c[0])\n ps.push(c[1])\n ps.push(c[2])\n for (let i = 3; i < c.length; i++) {\n p = ps.pop()\n while (!ps.empty() && Orientation.index(ps.peek(), p, c[i]) > 0) \n p = ps.pop()\n \n ps.push(p)\n ps.push(c[i])\n }\n ps.push(c[0])\n return ps\n }\n}\nclass RadialComparator {\n constructor() {\n RadialComparator.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._origin = null\n const origin = arguments[0]\n this._origin = origin\n }\n static polarCompare(o, p, q) {\n const dxp = p.x - o.x\n const dyp = p.y - o.y\n const dxq = q.x - o.x\n const dyq = q.y - o.y\n const orient = Orientation.index(o, p, q)\n if (orient === Orientation.COUNTERCLOCKWISE) return 1\n if (orient === Orientation.CLOCKWISE) return -1\n const op = dxp * dxp + dyp * dyp\n const oq = dxq * dxq + dyq * dyq\n if (op < oq) \n return -1\n \n if (op > oq) \n return 1\n \n return 0\n }\n compare(o1, o2) {\n const p1 = o1\n const p2 = o2\n return RadialComparator.polarCompare(this._origin, p1, p2)\n }\n get interfaces_() {\n return [Comparator]\n }\n}\nConvexHull.RadialComparator = RadialComparator\n","import PointLocator from '../../algorithm/PointLocator.js'\nimport Location from '../../geom/Location.js'\nimport IntersectionMatrix from '../../geom/IntersectionMatrix.js'\nimport EdgeEndBuilder from './EdgeEndBuilder.js'\nimport NodeMap from '../../geomgraph/NodeMap.js'\nimport RelateNodeFactory from './RelateNodeFactory.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport RobustLineIntersector from '../../algorithm/RobustLineIntersector.js'\nimport Assert from '../../util/Assert.js'\nexport default class RelateComputer {\n constructor() {\n RelateComputer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._ptLocator = new PointLocator()\n this._arg = null\n this._nodes = new NodeMap(new RelateNodeFactory())\n this._im = null\n this._isolatedEdges = new ArrayList()\n this._invalidPoint = null\n const arg = arguments[0]\n this._arg = arg\n }\n insertEdgeEnds(ee) {\n for (let i = ee.iterator(); i.hasNext(); ) {\n const e = i.next()\n this._nodes.add(e)\n }\n }\n computeProperIntersectionIM(intersector, im) {\n const dimA = this._arg[0].getGeometry().getDimension()\n const dimB = this._arg[1].getGeometry().getDimension()\n const hasProper = intersector.hasProperIntersection()\n const hasProperInterior = intersector.hasProperInteriorIntersection()\n if (dimA === 2 && dimB === 2) {\n if (hasProper) im.setAtLeast('212101212')\n } else if (dimA === 2 && dimB === 1) {\n if (hasProper) im.setAtLeast('FFF0FFFF2')\n if (hasProperInterior) im.setAtLeast('1FFFFF1FF')\n } else if (dimA === 1 && dimB === 2) {\n if (hasProper) im.setAtLeast('F0FFFFFF2')\n if (hasProperInterior) im.setAtLeast('1F1FFFFFF')\n } else if (dimA === 1 && dimB === 1) {\n if (hasProperInterior) im.setAtLeast('0FFFFFFFF')\n }\n }\n labelIsolatedEdges(thisIndex, targetIndex) {\n for (let ei = this._arg[thisIndex].getEdgeIterator(); ei.hasNext(); ) {\n const e = ei.next()\n if (e.isIsolated()) {\n this.labelIsolatedEdge(e, targetIndex, this._arg[targetIndex].getGeometry())\n this._isolatedEdges.add(e)\n }\n }\n }\n labelIsolatedEdge(e, targetIndex, target) {\n if (target.getDimension() > 0) {\n const loc = this._ptLocator.locate(e.getCoordinate(), target)\n e.getLabel().setAllLocations(targetIndex, loc)\n } else {\n e.getLabel().setAllLocations(targetIndex, Location.EXTERIOR)\n }\n }\n computeIM() {\n const im = new IntersectionMatrix()\n im.set(Location.EXTERIOR, Location.EXTERIOR, 2)\n if (!this._arg[0].getGeometry().getEnvelopeInternal().intersects(this._arg[1].getGeometry().getEnvelopeInternal())) {\n this.computeDisjointIM(im)\n return im\n }\n this._arg[0].computeSelfNodes(this._li, false)\n this._arg[1].computeSelfNodes(this._li, false)\n const intersector = this._arg[0].computeEdgeIntersections(this._arg[1], this._li, false)\n this.computeIntersectionNodes(0)\n this.computeIntersectionNodes(1)\n this.copyNodesAndLabels(0)\n this.copyNodesAndLabels(1)\n this.labelIsolatedNodes()\n this.computeProperIntersectionIM(intersector, im)\n const eeBuilder = new EdgeEndBuilder()\n const ee0 = eeBuilder.computeEdgeEnds(this._arg[0].getEdgeIterator())\n this.insertEdgeEnds(ee0)\n const ee1 = eeBuilder.computeEdgeEnds(this._arg[1].getEdgeIterator())\n this.insertEdgeEnds(ee1)\n this.labelNodeEdges()\n this.labelIsolatedEdges(0, 1)\n this.labelIsolatedEdges(1, 0)\n this.updateIM(im)\n return im\n }\n labelNodeEdges() {\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const node = ni.next()\n node.getEdges().computeLabelling(this._arg)\n }\n }\n copyNodesAndLabels(argIndex) {\n for (let i = this._arg[argIndex].getNodeIterator(); i.hasNext(); ) {\n const graphNode = i.next()\n const newNode = this._nodes.addNode(graphNode.getCoordinate())\n newNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex))\n }\n }\n labelIntersectionNodes(argIndex) {\n for (let i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const eLoc = e.getLabel().getLocation(argIndex)\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n const n = this._nodes.find(ei.coord)\n if (n.getLabel().isNull(argIndex)) \n if (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else n.setLabel(argIndex, Location.INTERIOR)\n \n }\n }\n }\n labelIsolatedNode(n, targetIndex) {\n const loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry())\n n.getLabel().setAllLocations(targetIndex, loc)\n }\n computeIntersectionNodes(argIndex) {\n for (let i = this._arg[argIndex].getEdgeIterator(); i.hasNext(); ) {\n const e = i.next()\n const eLoc = e.getLabel().getLocation(argIndex)\n for (let eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {\n const ei = eiIt.next()\n const n = this._nodes.addNode(ei.coord)\n if (eLoc === Location.BOUNDARY) n.setLabelBoundary(argIndex); else \n if (n.getLabel().isNull(argIndex)) n.setLabel(argIndex, Location.INTERIOR)\n \n }\n }\n }\n labelIsolatedNodes() {\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const n = ni.next()\n const label = n.getLabel()\n Assert.isTrue(label.getGeometryCount() > 0, 'node with empty label found')\n if (n.isIsolated()) \n if (label.isNull(0)) this.labelIsolatedNode(n, 0); else this.labelIsolatedNode(n, 1)\n \n }\n }\n updateIM(im) {\n for (let ei = this._isolatedEdges.iterator(); ei.hasNext(); ) {\n const e = ei.next()\n e.updateIM(im)\n }\n for (let ni = this._nodes.iterator(); ni.hasNext(); ) {\n const node = ni.next()\n node.updateIM(im)\n node.updateIMFromEdges(im)\n }\n }\n computeDisjointIM(im) {\n const ga = this._arg[0].getGeometry()\n if (!ga.isEmpty()) {\n im.set(Location.INTERIOR, Location.EXTERIOR, ga.getDimension())\n im.set(Location.BOUNDARY, Location.EXTERIOR, ga.getBoundaryDimension())\n }\n const gb = this._arg[1].getGeometry()\n if (!gb.isEmpty()) {\n im.set(Location.EXTERIOR, Location.INTERIOR, gb.getDimension())\n im.set(Location.EXTERIOR, Location.BOUNDARY, gb.getBoundaryDimension())\n }\n }\n}\n","import LineString from '../../geom/LineString.js'\nimport Coordinate from '../../geom/Coordinate.js'\nimport Point from '../../geom/Point.js'\nimport Polygon from '../../geom/Polygon.js'\nexport default class RectangleContains {\n constructor() {\n RectangleContains.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n const rectangle = arguments[0]\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n static contains(rectangle, b) {\n const rc = new RectangleContains(rectangle)\n return rc.contains(b)\n }\n isContainedInBoundary(geom) {\n if (geom instanceof Polygon) return false\n if (geom instanceof Point) return this.isPointContainedInBoundary(geom)\n if (geom instanceof LineString) return this.isLineStringContainedInBoundary(geom)\n for (let i = 0; i < geom.getNumGeometries(); i++) {\n const comp = geom.getGeometryN(i)\n if (!this.isContainedInBoundary(comp)) return false\n }\n return true\n }\n isLineSegmentContainedInBoundary(p0, p1) {\n if (p0.equals(p1)) return this.isPointContainedInBoundary(p0)\n if (p0.x === p1.x) {\n if (p0.x === this._rectEnv.getMinX() || p0.x === this._rectEnv.getMaxX()) return true\n } else if (p0.y === p1.y) {\n if (p0.y === this._rectEnv.getMinY() || p0.y === this._rectEnv.getMaxY()) return true\n }\n return false\n }\n isLineStringContainedInBoundary(line) {\n const seq = line.getCoordinateSequence()\n const p0 = new Coordinate()\n const p1 = new Coordinate()\n for (let i = 0; i < seq.size() - 1; i++) {\n seq.getCoordinate(i, p0)\n seq.getCoordinate(i + 1, p1)\n if (!this.isLineSegmentContainedInBoundary(p0, p1)) return false\n }\n return true\n }\n isPointContainedInBoundary() {\n if (arguments[0] instanceof Point) {\n const point = arguments[0]\n return this.isPointContainedInBoundary(point.getCoordinate())\n } else if (arguments[0] instanceof Coordinate) {\n const pt = arguments[0]\n return pt.x === this._rectEnv.getMinX() || pt.x === this._rectEnv.getMaxX() || pt.y === this._rectEnv.getMinY() || pt.y === this._rectEnv.getMaxY()\n }\n }\n contains(geom) {\n if (!this._rectEnv.contains(geom.getEnvelopeInternal())) return false\n if (this.isContainedInBoundary(geom)) return false\n return true\n }\n}\n","import Coordinate from '../geom/Coordinate.js'\nimport RobustLineIntersector from './RobustLineIntersector.js'\nimport Envelope from '../geom/Envelope.js'\nexport default class RectangleLineIntersector {\n constructor() {\n RectangleLineIntersector.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._li = new RobustLineIntersector()\n this._rectEnv = null\n this._diagUp0 = null\n this._diagUp1 = null\n this._diagDown0 = null\n this._diagDown1 = null\n const rectEnv = arguments[0]\n this._rectEnv = rectEnv\n this._diagUp0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMinY())\n this._diagUp1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMaxY())\n this._diagDown0 = new Coordinate(rectEnv.getMinX(), rectEnv.getMaxY())\n this._diagDown1 = new Coordinate(rectEnv.getMaxX(), rectEnv.getMinY())\n }\n intersects(p0, p1) {\n const segEnv = new Envelope(p0, p1)\n if (!this._rectEnv.intersects(segEnv)) return false\n if (this._rectEnv.intersects(p0)) return true\n if (this._rectEnv.intersects(p1)) return true\n if (p0.compareTo(p1) > 0) {\n const tmp = p0\n p0 = p1\n p1 = tmp\n }\n let isSegUpwards = false\n if (p1.y > p0.y) isSegUpwards = true\n if (isSegUpwards) \n this._li.computeIntersection(p0, p1, this._diagDown0, this._diagDown1)\n else \n this._li.computeIntersection(p0, p1, this._diagUp0, this._diagUp1)\n \n if (this._li.hasIntersection()) return true\n return false\n }\n}\n","import Coordinate from '../../geom/Coordinate.js'\nimport Polygon from '../../geom/Polygon.js'\nimport RectangleLineIntersector from '../../algorithm/RectangleLineIntersector.js'\nimport ShortCircuitedGeometryVisitor from '../../geom/util/ShortCircuitedGeometryVisitor.js'\nimport SimplePointInAreaLocator from '../../algorithm/locate/SimplePointInAreaLocator.js'\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter.js'\nexport default class RectangleIntersects {\n constructor() {\n RectangleIntersects.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectangle = null\n this._rectEnv = null\n const rectangle = arguments[0]\n this._rectangle = rectangle\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n static intersects(rectangle, b) {\n const rp = new RectangleIntersects(rectangle)\n return rp.intersects(b)\n }\n intersects(geom) {\n if (!this._rectEnv.intersects(geom.getEnvelopeInternal())) return false\n const visitor = new EnvelopeIntersectsVisitor(this._rectEnv)\n visitor.applyTo(geom)\n if (visitor.intersects()) return true\n const ecpVisitor = new GeometryContainsPointVisitor(this._rectangle)\n ecpVisitor.applyTo(geom)\n if (ecpVisitor.containsPoint()) return true\n const riVisitor = new RectangleIntersectsSegmentVisitor(this._rectangle)\n riVisitor.applyTo(geom)\n if (riVisitor.intersects()) return true\n return false\n }\n}\nclass EnvelopeIntersectsVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n EnvelopeIntersectsVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n this._intersects = false\n const rectEnv = arguments[0]\n this._rectEnv = rectEnv\n }\n isDone() {\n return this._intersects === true\n }\n visit(element) {\n const elementEnv = element.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) \n return null\n \n if (this._rectEnv.contains(elementEnv)) {\n this._intersects = true\n return null\n }\n if (elementEnv.getMinX() >= this._rectEnv.getMinX() && elementEnv.getMaxX() <= this._rectEnv.getMaxX()) {\n this._intersects = true\n return null\n }\n if (elementEnv.getMinY() >= this._rectEnv.getMinY() && elementEnv.getMaxY() <= this._rectEnv.getMaxY()) {\n this._intersects = true\n return null\n }\n }\n intersects() {\n return this._intersects\n }\n}\nclass GeometryContainsPointVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n GeometryContainsPointVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectSeq = null\n this._rectEnv = null\n this._containsPoint = false\n const rectangle = arguments[0]\n this._rectSeq = rectangle.getExteriorRing().getCoordinateSequence()\n this._rectEnv = rectangle.getEnvelopeInternal()\n }\n isDone() {\n return this._containsPoint === true\n }\n visit(geom) {\n if (!(geom instanceof Polygon)) return null\n const elementEnv = geom.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) return null\n const rectPt = new Coordinate()\n for (let i = 0; i < 4; i++) {\n this._rectSeq.getCoordinate(i, rectPt)\n if (!elementEnv.contains(rectPt)) continue\n if (SimplePointInAreaLocator.containsPointInPolygon(rectPt, geom)) {\n this._containsPoint = true\n return null\n }\n }\n }\n containsPoint() {\n return this._containsPoint\n }\n}\nclass RectangleIntersectsSegmentVisitor extends ShortCircuitedGeometryVisitor {\n constructor() {\n super()\n RectangleIntersectsSegmentVisitor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._rectEnv = null\n this._rectIntersector = null\n this._hasIntersection = false\n this._p0 = new Coordinate()\n this._p1 = new Coordinate()\n const rectangle = arguments[0]\n this._rectEnv = rectangle.getEnvelopeInternal()\n this._rectIntersector = new RectangleLineIntersector(this._rectEnv)\n }\n intersects() {\n return this._hasIntersection\n }\n isDone() {\n return this._hasIntersection === true\n }\n visit(geom) {\n const elementEnv = geom.getEnvelopeInternal()\n if (!this._rectEnv.intersects(elementEnv)) return null\n const lines = LinearComponentExtracter.getLines(geom)\n this.checkIntersectionWithLineStrings(lines)\n }\n checkIntersectionWithLineStrings(lines) {\n for (let i = lines.iterator(); i.hasNext(); ) {\n const testLine = i.next()\n this.checkIntersectionWithSegments(testLine)\n if (this._hasIntersection) return null\n }\n }\n checkIntersectionWithSegments(testLine) {\n const seq1 = testLine.getCoordinateSequence()\n for (let j = 1; j < seq1.size(); j++) {\n seq1.getCoordinate(j - 1, this._p0)\n seq1.getCoordinate(j, this._p1)\n if (this._rectIntersector.intersects(this._p0, this._p1)) {\n this._hasIntersection = true\n return null\n }\n }\n }\n}\n","import RelateComputer from './RelateComputer.js'\nimport GeometryGraphOperation from '../GeometryGraphOperation.js'\nimport RectangleContains from '../predicate/RectangleContains.js'\nimport RectangleIntersects from '../predicate/RectangleIntersects.js'\nexport default class RelateOp extends GeometryGraphOperation {\n constructor() {\n super()\n RelateOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._relate = null\n if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n GeometryGraphOperation.constructor_.call(this, g0, g1)\n this._relate = new RelateComputer(this._arg)\n } else if (arguments.length === 3) {\n const g0 = arguments[0], g1 = arguments[1], boundaryNodeRule = arguments[2]\n GeometryGraphOperation.constructor_.call(this, g0, g1, boundaryNodeRule)\n this._relate = new RelateComputer(this._arg)\n }\n }\n static covers(g1, g2) {\n if (g2.getDimension() === 2 && g1.getDimension() < 2) \n return false\n \n if (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) \n return false\n \n if (!g1.getEnvelopeInternal().covers(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return true\n \n return new RelateOp(g1, g2).getIntersectionMatrix().isCovers()\n }\n static intersects(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return RectangleIntersects.intersects(g1, g2)\n \n if (g2.isRectangle()) \n return RectangleIntersects.intersects(g2, g1)\n \n if (g1.isGeometryCollection() || g2.isGeometryCollection()) {\n const r = false\n for (let i = 0; i < g1.getNumGeometries(); i++) \n for (let j = 0; j < g2.getNumGeometries(); j++) \n if (g1.getGeometryN(i).intersects(g2.getGeometryN(j))) \n return true\n \n \n \n return false\n }\n return new RelateOp(g1, g2).getIntersectionMatrix().isIntersects()\n }\n static touches(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isTouches(g1.getDimension(), g2.getDimension())\n }\n static equalsTopo(g1, g2) {\n if (!g1.getEnvelopeInternal().equals(g2.getEnvelopeInternal())) return false\n return RelateOp.relate(g1, g2).isEquals(g1.getDimension(), g2.getDimension())\n }\n static relate() {\n if (arguments.length === 2) {\n const a = arguments[0], b = arguments[1]\n const relOp = new RelateOp(a, b)\n const im = relOp.getIntersectionMatrix()\n return im\n } else if (arguments.length === 3) {\n const a = arguments[0], b = arguments[1], boundaryNodeRule = arguments[2]\n const relOp = new RelateOp(a, b, boundaryNodeRule)\n const im = relOp.getIntersectionMatrix()\n return im\n }\n }\n static overlaps(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isOverlaps(g1.getDimension(), g2.getDimension())\n }\n static crosses(g1, g2) {\n if (!g1.getEnvelopeInternal().intersects(g2.getEnvelopeInternal())) return false\n return new RelateOp(g1, g2).getIntersectionMatrix().isCrosses(g1.getDimension(), g2.getDimension())\n }\n static contains(g1, g2) {\n if (g2.getDimension() === 2 && g1.getDimension() < 2) \n return false\n \n if (g2.getDimension() === 1 && g1.getDimension() < 1 && g2.getLength() > 0.0) \n return false\n \n if (!g1.getEnvelopeInternal().contains(g2.getEnvelopeInternal())) return false\n if (g1.isRectangle()) \n return RectangleContains.contains(g1, g2)\n \n return new RelateOp(g1, g2).getIntersectionMatrix().isContains()\n }\n getIntersectionMatrix() {\n return this._relate.computeIM()\n }\n}\n","import Geometry from '../geom/Geometry.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport Point from '../geom/Point.js'\nimport Double from '../../../../java/lang/Double.js'\nimport Centroid from './Centroid.js'\nimport GeometryCollection from '../geom/GeometryCollection.js'\nexport default class InteriorPointPoint {\n constructor() {\n InteriorPointPoint.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._centroid = null\n this._minDistance = Double.MAX_VALUE\n this._interiorPoint = null\n const g = arguments[0]\n this._centroid = Centroid.getCentroid(g)\n this.add(g)\n }\n static getInteriorPoint(geom) {\n const intPt = new InteriorPointPoint(geom)\n return intPt.getInteriorPoint()\n }\n getInteriorPoint() {\n return this._interiorPoint\n }\n add() {\n if (arguments[0] instanceof Geometry) {\n const geom = arguments[0]\n if (geom instanceof Point) {\n this.add(geom.getCoordinate())\n } else if (geom instanceof GeometryCollection) {\n const gc = geom\n for (let i = 0; i < gc.getNumGeometries(); i++) \n this.add(gc.getGeometryN(i))\n \n }\n } else if (arguments[0] instanceof Coordinate) {\n const point = arguments[0]\n const dist = point.distance(this._centroid)\n if (dist < this._minDistance) {\n this._interiorPoint = new Coordinate(point)\n this._minDistance = dist\n }\n }\n }\n}\n","import WKTWriter from '../../io/WKTWriter.js'\nexport default class GeometryLocation {\n constructor() {\n GeometryLocation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._component = null\n this._segIndex = null\n this._pt = null\n if (arguments.length === 2) {\n const component = arguments[0], pt = arguments[1]\n GeometryLocation.constructor_.call(this, component, GeometryLocation.INSIDE_AREA, pt)\n } else if (arguments.length === 3) {\n const component = arguments[0], segIndex = arguments[1], pt = arguments[2]\n this._component = component\n this._segIndex = segIndex\n this._pt = pt\n }\n }\n getSegmentIndex() {\n return this._segIndex\n }\n getCoordinate() {\n return this._pt\n }\n isInsideArea() {\n return this._segIndex === GeometryLocation.INSIDE_AREA\n }\n toString() {\n return this._component.getGeometryType() + '[' + this._segIndex + ']' + '-' + WKTWriter.toPoint(this._pt)\n }\n getGeometryComponent() {\n return this._component\n }\n}\nGeometryLocation.INSIDE_AREA = -1\n","import LineString from '../../geom/LineString.js'\nimport Point from '../../geom/Point.js'\nimport Polygon from '../../geom/Polygon.js'\nimport GeometryLocation from './GeometryLocation.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport GeometryFilter from '../../geom/GeometryFilter.js'\nexport default class ConnectedElementLocationFilter {\n constructor() {\n ConnectedElementLocationFilter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._locations = null\n const locations = arguments[0]\n this._locations = locations\n }\n static getLocations(geom) {\n const locations = new ArrayList()\n geom.apply(new ConnectedElementLocationFilter(locations))\n return locations\n }\n filter(geom) {\n if (geom.isEmpty()) return null\n if (geom instanceof Point || geom instanceof LineString || geom instanceof Polygon) this._locations.add(new GeometryLocation(geom, 0, geom.getCoordinate()))\n }\n get interfaces_() {\n return [GeometryFilter]\n }\n}\n","import PointLocator from '../../algorithm/PointLocator.js'\nimport PolygonExtracter from '../../geom/util/PolygonExtracter.js'\nimport Location from '../../geom/Location.js'\nimport LineString from '../../geom/LineString.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException.js'\nimport Point from '../../geom/Point.js'\nimport Polygon from '../../geom/Polygon.js'\nimport GeometryLocation from './GeometryLocation.js'\nimport Double from '../../../../../java/lang/Double.js'\nimport PointExtracter from '../../geom/util/PointExtracter.js'\nimport ConnectedElementLocationFilter from './ConnectedElementLocationFilter.js'\nimport LineSegment from '../../geom/LineSegment.js'\nimport LinearComponentExtracter from '../../geom/util/LinearComponentExtracter.js'\nimport Envelope from '../../geom/Envelope.js'\nimport List from '../../../../../java/util/List.js'\nimport Distance from '../../algorithm/Distance.js'\nexport default class DistanceOp {\n constructor() {\n DistanceOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = null\n this._terminateDistance = 0.0\n this._ptLocator = new PointLocator()\n this._minDistanceLocation = null\n this._minDistance = Double.MAX_VALUE\n if (arguments.length === 2) {\n const g0 = arguments[0], g1 = arguments[1]\n DistanceOp.constructor_.call(this, g0, g1, 0.0)\n } else if (arguments.length === 3) {\n const g0 = arguments[0], g1 = arguments[1], terminateDistance = arguments[2]\n this._geom = new Array(2).fill(null)\n this._geom[0] = g0\n this._geom[1] = g1\n this._terminateDistance = terminateDistance\n }\n }\n static distance(g0, g1) {\n const distOp = new DistanceOp(g0, g1)\n return distOp.distance()\n }\n static isWithinDistance(g0, g1, distance) {\n const envDist = g0.getEnvelopeInternal().distance(g1.getEnvelopeInternal())\n if (envDist > distance) return false\n const distOp = new DistanceOp(g0, g1, distance)\n return distOp.distance() <= distance\n }\n static nearestPoints(g0, g1) {\n const distOp = new DistanceOp(g0, g1)\n return distOp.nearestPoints()\n }\n computeContainmentDistance() {\n if (arguments.length === 0) {\n const locPtPoly = new Array(2).fill(null)\n this.computeContainmentDistance(0, locPtPoly)\n if (this._minDistance <= this._terminateDistance) return null\n this.computeContainmentDistance(1, locPtPoly)\n } else if (arguments.length === 2) {\n const polyGeomIndex = arguments[0], locPtPoly = arguments[1]\n const polyGeom = this._geom[polyGeomIndex]\n if (polyGeom.getDimension() < 2) return null\n const locationsIndex = 1 - polyGeomIndex\n const polys = PolygonExtracter.getPolygons(polyGeom)\n if (polys.size() > 0) {\n const insideLocs = ConnectedElementLocationFilter.getLocations(this._geom[locationsIndex])\n this.computeContainmentDistance(insideLocs, polys, locPtPoly)\n if (this._minDistance <= this._terminateDistance) {\n this._minDistanceLocation[locationsIndex] = locPtPoly[0]\n this._minDistanceLocation[polyGeomIndex] = locPtPoly[1]\n return null\n }\n }\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof Array && (hasInterface(arguments[0], List) && hasInterface(arguments[1], List))) {\n const locs = arguments[0], polys = arguments[1], locPtPoly = arguments[2]\n for (let i = 0; i < locs.size(); i++) {\n const loc = locs.get(i)\n for (let j = 0; j < polys.size(); j++) {\n this.computeContainmentDistance(loc, polys.get(j), locPtPoly)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n } else if (arguments[2] instanceof Array && (arguments[0] instanceof GeometryLocation && arguments[1] instanceof Polygon)) {\n const ptLoc = arguments[0], poly = arguments[1], locPtPoly = arguments[2]\n const pt = ptLoc.getCoordinate()\n if (Location.EXTERIOR !== this._ptLocator.locate(pt, poly)) {\n this._minDistance = 0.0\n locPtPoly[0] = ptLoc\n locPtPoly[1] = new GeometryLocation(poly, pt)\n \n return null\n }\n }\n }\n }\n computeMinDistanceLinesPoints(lines, points, locGeom) {\n for (let i = 0; i < lines.size(); i++) {\n const line = lines.get(i)\n for (let j = 0; j < points.size(); j++) {\n const pt = points.get(j)\n this.computeMinDistance(line, pt, locGeom)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n computeFacetDistance() {\n const locGeom = new Array(2).fill(null)\n const lines0 = LinearComponentExtracter.getLines(this._geom[0])\n const lines1 = LinearComponentExtracter.getLines(this._geom[1])\n const pts0 = PointExtracter.getPoints(this._geom[0])\n const pts1 = PointExtracter.getPoints(this._geom[1])\n this.computeMinDistanceLines(lines0, lines1, locGeom)\n this.updateMinDistance(locGeom, false)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistanceLinesPoints(lines0, pts1, locGeom)\n this.updateMinDistance(locGeom, false)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistanceLinesPoints(lines1, pts0, locGeom)\n this.updateMinDistance(locGeom, true)\n if (this._minDistance <= this._terminateDistance) return null\n locGeom[0] = null\n locGeom[1] = null\n this.computeMinDistancePoints(pts0, pts1, locGeom)\n this.updateMinDistance(locGeom, false)\n }\n nearestLocations() {\n this.computeMinDistance()\n return this._minDistanceLocation\n }\n updateMinDistance(locGeom, flip) {\n if (locGeom[0] === null) return null\n if (flip) {\n this._minDistanceLocation[0] = locGeom[1]\n this._minDistanceLocation[1] = locGeom[0]\n } else {\n this._minDistanceLocation[0] = locGeom[0]\n this._minDistanceLocation[1] = locGeom[1]\n }\n }\n nearestPoints() {\n this.computeMinDistance()\n const nearestPts = [this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()]\n return nearestPts\n }\n computeMinDistance() {\n if (arguments.length === 0) {\n if (this._minDistanceLocation !== null) return null\n this._minDistanceLocation = new Array(2).fill(null)\n this.computeContainmentDistance()\n if (this._minDistance <= this._terminateDistance) return null\n this.computeFacetDistance()\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof Point)) {\n const line = arguments[0], pt = arguments[1], locGeom = arguments[2]\n if (line.getEnvelopeInternal().distance(pt.getEnvelopeInternal()) > this._minDistance) return null\n const coord0 = line.getCoordinates()\n const coord = pt.getCoordinate()\n for (let i = 0; i < coord0.length - 1; i++) {\n const dist = Distance.pointToSegment(coord, coord0[i], coord0[i + 1])\n if (dist < this._minDistance) {\n this._minDistance = dist\n const seg = new LineSegment(coord0[i], coord0[i + 1])\n const segClosestPoint = seg.closestPoint(coord)\n locGeom[0] = new GeometryLocation(line, i, segClosestPoint)\n locGeom[1] = new GeometryLocation(pt, 0, coord)\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n } else if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof LineString)) {\n const line0 = arguments[0], line1 = arguments[1], locGeom = arguments[2]\n if (line0.getEnvelopeInternal().distance(line1.getEnvelopeInternal()) > this._minDistance) return null\n const coord0 = line0.getCoordinates()\n const coord1 = line1.getCoordinates()\n for (let i = 0; i < coord0.length - 1; i++) {\n const segEnv0 = new Envelope(coord0[i], coord0[i + 1])\n if (segEnv0.distance(line1.getEnvelopeInternal()) > this._minDistance) continue\n for (let j = 0; j < coord1.length - 1; j++) {\n const segEnv1 = new Envelope(coord1[j], coord1[j + 1])\n if (segEnv0.distance(segEnv1) > this._minDistance) continue\n const dist = Distance.segmentToSegment(coord0[i], coord0[i + 1], coord1[j], coord1[j + 1])\n if (dist < this._minDistance) {\n this._minDistance = dist\n const seg0 = new LineSegment(coord0[i], coord0[i + 1])\n const seg1 = new LineSegment(coord1[j], coord1[j + 1])\n const closestPt = seg0.closestPoints(seg1)\n locGeom[0] = new GeometryLocation(line0, i, closestPt[0])\n locGeom[1] = new GeometryLocation(line1, j, closestPt[1])\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n }\n }\n computeMinDistancePoints(points0, points1, locGeom) {\n for (let i = 0; i < points0.size(); i++) {\n const pt0 = points0.get(i)\n for (let j = 0; j < points1.size(); j++) {\n const pt1 = points1.get(j)\n const dist = pt0.getCoordinate().distance(pt1.getCoordinate())\n if (dist < this._minDistance) {\n this._minDistance = dist\n locGeom[0] = new GeometryLocation(pt0, 0, pt0.getCoordinate())\n locGeom[1] = new GeometryLocation(pt1, 0, pt1.getCoordinate())\n }\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n distance() {\n if (this._geom[0] === null || this._geom[1] === null) throw new IllegalArgumentException('null geometries are not supported')\n if (this._geom[0].isEmpty() || this._geom[1].isEmpty()) return 0.0\n this.computeMinDistance()\n return this._minDistance\n }\n computeMinDistanceLines(lines0, lines1, locGeom) {\n for (let i = 0; i < lines0.size(); i++) {\n const line0 = lines0.get(i)\n for (let j = 0; j < lines1.size(); j++) {\n const line1 = lines1.get(j)\n this.computeMinDistance(line0, line1, locGeom)\n if (this._minDistance <= this._terminateDistance) return null\n }\n }\n }\n}\n","import LineString from '../geom/LineString.js'\nimport BoundaryNodeRule from '../algorithm/BoundaryNodeRule.js'\nimport CoordinateArrays from '../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport TreeMap from '../../../../java/util/TreeMap.js'\nimport MultiLineString from '../geom/MultiLineString.js'\nexport default class BoundaryOp {\n constructor() {\n BoundaryOp.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geom = null\n this._geomFact = null\n this._bnRule = null\n this._endpointMap = null\n if (arguments.length === 1) {\n const geom = arguments[0]\n BoundaryOp.constructor_.call(this, geom, BoundaryNodeRule.MOD2_BOUNDARY_RULE)\n } else if (arguments.length === 2) {\n const geom = arguments[0], bnRule = arguments[1]\n this._geom = geom\n this._geomFact = geom.getFactory()\n this._bnRule = bnRule\n }\n }\n static getBoundary() {\n if (arguments.length === 1) {\n const g = arguments[0]\n const bop = new BoundaryOp(g)\n return bop.getBoundary()\n } else if (arguments.length === 2) {\n const g = arguments[0], bnRule = arguments[1]\n const bop = new BoundaryOp(g, bnRule)\n return bop.getBoundary()\n }\n }\n boundaryMultiLineString(mLine) {\n if (this._geom.isEmpty()) \n return this.getEmptyMultiPoint()\n \n const bdyPts = this.computeBoundaryCoordinates(mLine)\n if (bdyPts.length === 1) \n return this._geomFact.createPoint(bdyPts[0])\n \n return this._geomFact.createMultiPointFromCoords(bdyPts)\n }\n getBoundary() {\n if (this._geom instanceof LineString) return this.boundaryLineString(this._geom)\n if (this._geom instanceof MultiLineString) return this.boundaryMultiLineString(this._geom)\n return this._geom.getBoundary()\n }\n boundaryLineString(line) {\n if (this._geom.isEmpty()) \n return this.getEmptyMultiPoint()\n \n if (line.isClosed()) {\n const closedEndpointOnBoundary = this._bnRule.isInBoundary(2)\n if (closedEndpointOnBoundary) \n return line.getStartPoint()\n else \n return this._geomFact.createMultiPoint()\n \n }\n return this._geomFact.createMultiPoint([line.getStartPoint(), line.getEndPoint()])\n }\n getEmptyMultiPoint() {\n return this._geomFact.createMultiPoint()\n }\n computeBoundaryCoordinates(mLine) {\n const bdyPts = new ArrayList()\n this._endpointMap = new TreeMap()\n for (let i = 0; i < mLine.getNumGeometries(); i++) {\n const line = mLine.getGeometryN(i)\n if (line.getNumPoints() === 0) continue\n this.addEndpoint(line.getCoordinateN(0))\n this.addEndpoint(line.getCoordinateN(line.getNumPoints() - 1))\n }\n for (let it = this._endpointMap.entrySet().iterator(); it.hasNext(); ) {\n const entry = it.next()\n const counter = entry.getValue()\n const valence = counter.count\n if (this._bnRule.isInBoundary(valence)) \n bdyPts.add(entry.getKey())\n \n }\n return CoordinateArrays.toCoordinateArray(bdyPts)\n }\n addEndpoint(pt) {\n let counter = this._endpointMap.get(pt)\n if (counter === null) {\n counter = new Counter()\n this._endpointMap.put(pt, counter)\n }\n counter.count++\n }\n}\nclass Counter {\n constructor() {\n Counter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.count = null\n }\n}\n","import WKTWriter from './io/WKTWriter.js'\nimport IsValidOp from './operation/valid/IsValidOp.js'\nimport InteriorPointArea from './algorithm/InteriorPointArea.js'\nimport UnaryUnionOp from './operation/union/UnaryUnionOp.js'\nimport UnionOp from './operation/union/UnionOp.js'\nimport InteriorPointLine from './algorithm/InteriorPointLine.js'\nimport IsSimpleOp from './operation/IsSimpleOp.js'\nimport BufferOp from './operation/buffer/BufferOp.js'\nimport ConvexHull from './algorithm/ConvexHull.js'\nimport Centroid from './algorithm/Centroid.js'\nimport RelateOp from './operation/relate/RelateOp.js'\nimport InteriorPointPoint from './algorithm/InteriorPointPoint.js'\nimport DistanceOp from './operation/distance/DistanceOp.js'\nimport OverlayOp from './operation/overlay/OverlayOp.js'\nimport BoundaryOp from './operation/BoundaryOp.js'\nimport Geometry from './geom/Geometry.js'\nimport LineString from './geom/LineString.js'\nimport MultiLineString from './geom/MultiLineString.js'\n\nLineString.prototype.getBoundary = function() {\n return BoundaryOp.getBoundary(this)\n}\n\nMultiLineString.prototype.getBoundary = function() {\n return BoundaryOp.getBoundary(this)\n}\n\nGeometry.prototype.equalsTopo = function(g) {\n return RelateOp.equalsTopo(this, g)\n}\nGeometry.prototype.equals = function(g) {\n if (g === null) return false\n return RelateOp.equalsTopo(this, g)\n}\nGeometry.prototype.union = function() {\n if (arguments.length === 0) {\n return UnaryUnionOp.union(this)\n } else if (arguments.length === 1) {\n const other = arguments[0]\n return UnionOp.union(this, other)\n }\n}\nGeometry.prototype.isValid = function() {\n return IsValidOp.isValid(this)\n}\nGeometry.prototype.intersection = function(other) {\n return OverlayOp.intersection(this, other)\n}\nGeometry.prototype.covers = function(g) {\n return RelateOp.covers(this, g)\n}\nGeometry.prototype.coveredBy = function(g) {\n return RelateOp.covers(g, this)\n}\nGeometry.prototype.touches = function(g) {\n return RelateOp.touches(this, g)\n}\nGeometry.prototype.intersects = function(g) {\n return RelateOp.intersects(this, g)\n}\nGeometry.prototype.within = function(g) {\n return RelateOp.contains(g, this)\n}\nGeometry.prototype.overlaps = function(g) {\n return RelateOp.overlaps(this, g)\n}\nGeometry.prototype.disjoint = function(g) {\n return RelateOp.disjoint(this, g)\n}\nGeometry.prototype.crosses = function(g) {\n return RelateOp.crosses(this, g)\n}\nGeometry.prototype.buffer = function() {\n if (arguments.length === 1) {\n const distance = arguments[0]\n return BufferOp.bufferOp(this, distance)\n } else if (arguments.length === 2) {\n const distance = arguments[0]; const quadrantSegments = arguments[1]\n return BufferOp.bufferOp(this, distance, quadrantSegments)\n } else if (arguments.length === 3) {\n const distance = arguments[0]; const quadrantSegments = arguments[1]; const endCapStyle = arguments[2]\n return BufferOp.bufferOp(this, distance, quadrantSegments, endCapStyle)\n }\n}\nGeometry.prototype.convexHull = function() {\n return new ConvexHull(this).getConvexHull()\n}\nGeometry.prototype.relate = function() {\n if (arguments.length === 1) {\n const geometry = arguments[0]\n return RelateOp.relate(this, geometry)\n } else if (arguments.length === 2) {\n const geometry = arguments[0]; const intersectionPattern = arguments[1]\n return RelateOp.relate(this, geometry).matches(intersectionPattern)\n }\n}\nGeometry.prototype.getCentroid = function() {\n if (this.isEmpty()) return this._factory.createPoint()\n const centPt = Centroid.getCentroid(this)\n return this.createPointFromInternalCoord(centPt, this)\n}\nGeometry.prototype.getInteriorPoint = function() {\n if (this.isEmpty()) return this._factory.createPoint()\n let intPt = null\n const dim = this.getDimension()\n if (dim === 0)\n intPt = new InteriorPointPoint(this)\n else if (dim === 1)\n intPt = new InteriorPointLine(this)\n else intPt = new InteriorPointArea(this)\n\n const interiorPt = intPt.getInteriorPoint()\n return this.createPointFromInternalCoord(interiorPt, this)\n}\nGeometry.prototype.symDifference = function(other) {\n return OverlayOp.symDifference(this, other)\n}\nGeometry.prototype.createPointFromInternalCoord = function(coord, exemplar) {\n exemplar.getPrecisionModel().makePrecise(coord)\n return exemplar.getFactory().createPoint(coord)\n}\nGeometry.prototype.toText = function() {\n const writer = new WKTWriter()\n return writer.write(this)\n}\nGeometry.prototype.toString = function() {\n return this.toText()\n}\nGeometry.prototype.contains = function(g) {\n return RelateOp.contains(this, g)\n}\nGeometry.prototype.difference = function(other) {\n return OverlayOp.difference(this, other)\n}\nGeometry.prototype.isSimple = function() {\n const op = new IsSimpleOp(this)\n return op.isSimple()\n}\nGeometry.prototype.isWithinDistance = function(geom, distance) {\n const envDist = this.getEnvelopeInternal().distance(geom.getEnvelopeInternal())\n if (envDist > distance) return false\n return DistanceOp.isWithinDistance(this, geom, distance)\n}\nGeometry.prototype.distance = function(g) {\n return DistanceOp.distance(this, g)\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/FullScreen\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_UNSUPPORTED } from '../css.js';\nimport { listen } from '../events.js';\nimport { replaceNode } from '../dom.js';\nvar events = [\n 'fullscreenchange',\n 'webkitfullscreenchange',\n 'MSFullscreenChange',\n];\n/**\n * @enum {string}\n */\nvar FullScreenEventType = {\n /**\n * Triggered after the map entered fullscreen.\n * @event FullScreenEventType#enterfullscreen\n * @api\n */\n ENTERFULLSCREEN: 'enterfullscreen',\n /**\n * Triggered after the map leave fullscreen.\n * @event FullScreenEventType#leavefullscreen\n * @api\n */\n LEAVEFULLSCREEN: 'leavefullscreen',\n};\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-full-screen'] CSS class name.\n * @property {string|Text} [label='\\u2922'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|Text} [labelActive='\\u00d7'] Text label to use for the\n * button when full-screen is active.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Toggle full-screen'] Text label to use for the button tip.\n * @property {boolean} [keys=false] Full keyboard access.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {HTMLElement|string} [source] The element to be displayed\n * fullscreen. When not provided, the element containing the map viewport will\n * be displayed fullscreen.\n */\n/**\n * @classdesc\n * Provides a button that when clicked fills up the full screen with the map.\n * The full screen source element is by default the element containing the map viewport unless\n * overridden by providing the `source` option. In which case, the dom\n * element introduced using this parameter will be displayed in full screen.\n *\n * When in full screen mode, a close button is shown to exit full screen mode.\n * The [Fullscreen API](http://www.w3.org/TR/fullscreen/) is used to\n * toggle the map in full screen mode.\n *\n * @fires FullScreenEventType#enterfullscreen\n * @fires FullScreenEventType#leavefullscreen\n * @api\n */\nvar FullScreen = /** @class */ (function (_super) {\n __extends(FullScreen, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function FullScreen(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {string}\n */\n _this.cssClassName_ =\n options.className !== undefined ? options.className : 'ol-full-screen';\n var label = options.label !== undefined ? options.label : '\\u2922';\n /**\n * @private\n * @type {Text}\n */\n _this.labelNode_ =\n typeof label === 'string' ? document.createTextNode(label) : label;\n var labelActive = options.labelActive !== undefined ? options.labelActive : '\\u00d7';\n /**\n * @private\n * @type {Text}\n */\n _this.labelActiveNode_ =\n typeof labelActive === 'string'\n ? document.createTextNode(labelActive)\n : labelActive;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.button_ = document.createElement('button');\n var tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';\n _this.setClassName_(_this.button_, isFullScreen());\n _this.button_.setAttribute('type', 'button');\n _this.button_.title = tipLabel;\n _this.button_.appendChild(_this.labelNode_);\n _this.button_.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = _this.cssClassName_ +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n ' ' +\n (!isFullScreenSupported() ? CLASS_UNSUPPORTED : '');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.button_);\n /**\n * @private\n * @type {boolean}\n */\n _this.keys_ = options.keys !== undefined ? options.keys : false;\n /**\n * @private\n * @type {HTMLElement|string|undefined}\n */\n _this.source_ = options.source;\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n FullScreen.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleFullScreen_();\n };\n /**\n * @private\n */\n FullScreen.prototype.handleFullScreen_ = function () {\n if (!isFullScreenSupported()) {\n return;\n }\n var map = this.getMap();\n if (!map) {\n return;\n }\n if (isFullScreen()) {\n exitFullScreen();\n }\n else {\n var element = void 0;\n if (this.source_) {\n element =\n typeof this.source_ === 'string'\n ? document.getElementById(this.source_)\n : this.source_;\n }\n else {\n element = map.getTargetElement();\n }\n if (this.keys_) {\n requestFullScreenWithKeys(element);\n }\n else {\n requestFullScreen(element);\n }\n }\n };\n /**\n * @private\n */\n FullScreen.prototype.handleFullScreenChange_ = function () {\n var map = this.getMap();\n if (isFullScreen()) {\n this.setClassName_(this.button_, true);\n replaceNode(this.labelActiveNode_, this.labelNode_);\n this.dispatchEvent(FullScreenEventType.ENTERFULLSCREEN);\n }\n else {\n this.setClassName_(this.button_, false);\n replaceNode(this.labelNode_, this.labelActiveNode_);\n this.dispatchEvent(FullScreenEventType.LEAVEFULLSCREEN);\n }\n if (map) {\n map.updateSize();\n }\n };\n /**\n * @param {HTMLElement} element Target element\n * @param {boolean} fullscreen True if fullscreen class name should be active\n * @private\n */\n FullScreen.prototype.setClassName_ = function (element, fullscreen) {\n var activeClassName = this.cssClassName_ + '-true';\n var inactiveClassName = this.cssClassName_ + '-false';\n var nextClassName = fullscreen ? activeClassName : inactiveClassName;\n element.classList.remove(activeClassName);\n element.classList.remove(inactiveClassName);\n element.classList.add(nextClassName);\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n FullScreen.prototype.setMap = function (map) {\n _super.prototype.setMap.call(this, map);\n if (map) {\n for (var i = 0, ii = events.length; i < ii; ++i) {\n this.listenerKeys.push(listen(document, events[i], this.handleFullScreenChange_, this));\n }\n }\n };\n return FullScreen;\n}(Control));\n/**\n * @return {boolean} Fullscreen is supported by the current platform.\n */\nfunction isFullScreenSupported() {\n var body = document.body;\n return !!(body['webkitRequestFullscreen'] ||\n (body['msRequestFullscreen'] && document['msFullscreenEnabled']) ||\n (body.requestFullscreen && document.fullscreenEnabled));\n}\n/**\n * @return {boolean} Element is currently in fullscreen.\n */\nfunction isFullScreen() {\n return !!(document['webkitIsFullScreen'] ||\n document['msFullscreenElement'] ||\n document.fullscreenElement);\n}\n/**\n * Request to fullscreen an element.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreen(element) {\n if (element.requestFullscreen) {\n element.requestFullscreen();\n }\n else if (element['msRequestFullscreen']) {\n element['msRequestFullscreen']();\n }\n else if (element['webkitRequestFullscreen']) {\n element['webkitRequestFullscreen']();\n }\n}\n/**\n * Request to fullscreen an element with keyboard input.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreenWithKeys(element) {\n if (element['webkitRequestFullscreen']) {\n element['webkitRequestFullscreen']();\n }\n else {\n requestFullScreen(element);\n }\n}\n/**\n * Exit fullscreen.\n */\nfunction exitFullScreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n else if (document['msExitFullscreen']) {\n document['msExitFullscreen']();\n }\n else if (document['webkitExitFullscreen']) {\n document['webkitExitFullscreen']();\n }\n}\nexport default FullScreen;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/ScaleLine\n */\nimport Control from './Control.js';\nimport ProjUnits from '../proj/Units.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { METERS_PER_UNIT, getPointResolution } from '../proj.js';\nimport { assert } from '../asserts.js';\nimport { getChangeEventType } from '../Object.js';\n/**\n * @type {string}\n */\nvar UNITS_PROP = 'units';\n/**\n * Units for the scale line. Supported values are `'degrees'`, `'imperial'`,\n * `'nautical'`, `'metric'`, `'us'`.\n * @enum {string}\n */\nexport var Units = {\n DEGREES: 'degrees',\n IMPERIAL: 'imperial',\n NAUTICAL: 'nautical',\n METRIC: 'metric',\n US: 'us',\n};\n/**\n * @const\n * @type {Array}\n */\nvar LEADING_DIGITS = [1, 2, 5];\n/**\n * @const\n * @type {number}\n */\nvar DEFAULT_DPI = 25.4 / 0.28;\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-scale-line'] CSS Class name.\n * @property {number} [minWidth=64] Minimum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {import(\"./ScaleLine.js\").Units|string} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n * @property {number|undefined} [dpi=undefined] dpi of output device such as printer. Only applies\n * when `bar` is `true`. If undefined the OGC default screen pixel size of 0.28mm will be assumed.\n */\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n *\n * @api\n */\nvar ScaleLine = /** @class */ (function (_super) {\n __extends(ScaleLine, _super);\n /**\n * @param {Options=} opt_options Scale line options.\n */\n function ScaleLine(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var className = options.className !== undefined\n ? options.className\n : options.bar\n ? 'ol-scale-bar'\n : 'ol-scale-line';\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.innerElement_ = document.createElement('div');\n _this.innerElement_.className = className + '-inner';\n _this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n _this.element.appendChild(_this.innerElement_);\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n _this.viewState_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.renderedWidth_ = undefined;\n /**\n * @private\n * @type {string}\n */\n _this.renderedHTML_ = '';\n _this.addEventListener(getChangeEventType(UNITS_PROP), _this.handleUnitsChanged_);\n _this.setUnits(options.units || Units.METRIC);\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBar_ = options.bar || false;\n /**\n * @private\n * @type {number}\n */\n _this.scaleBarSteps_ = options.steps || 4;\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBarText_ = options.text || false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.dpi_ = options.dpi || undefined;\n return _this;\n }\n /**\n * Return the units to use in the scale line.\n * @return {import(\"./ScaleLine.js\").Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.getUnits = function () {\n return this.get(UNITS_PROP);\n };\n /**\n * @private\n */\n ScaleLine.prototype.handleUnitsChanged_ = function () {\n this.updateElement_();\n };\n /**\n * Set the units to use in the scale line.\n * @param {import(\"./ScaleLine.js\").Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.setUnits = function (units) {\n this.set(UNITS_PROP, units);\n };\n /**\n * Specify the dpi of output device such as printer.\n * @param {number|undefined} dpi The dpi of output device.\n * @api\n */\n ScaleLine.prototype.setDpi = function (dpi) {\n this.dpi_ = dpi;\n };\n /**\n * @private\n */\n ScaleLine.prototype.updateElement_ = function () {\n var viewState = this.viewState_;\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var center = viewState.center;\n var projection = viewState.projection;\n var units = this.getUnits();\n var pointResolutionUnits = units == Units.DEGREES ? ProjUnits.DEGREES : ProjUnits.METERS;\n var pointResolution = getPointResolution(projection, viewState.resolution, center, pointResolutionUnits);\n var minWidth = (this.minWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI;\n var nominalCount = minWidth * pointResolution;\n var suffix = '';\n if (units == Units.DEGREES) {\n var metersPerDegree = METERS_PER_UNIT[ProjUnits.DEGREES];\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n }\n else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n }\n else {\n suffix = '\\u00b0'; // degrees\n }\n }\n else if (units == Units.IMPERIAL) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n }\n else if (units == Units.NAUTICAL) {\n pointResolution /= 1852;\n suffix = 'nm';\n }\n else if (units == Units.METRIC) {\n if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n }\n else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n }\n else if (nominalCount < 1000) {\n suffix = 'm';\n }\n else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n }\n else if (units == Units.US) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n }\n else {\n assert(false, 33); // Invalid units\n }\n var i = 3 * Math.floor(Math.log(minWidth * pointResolution) / Math.log(10));\n var count, width, decimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n var decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n }\n else if (width >= minWidth) {\n break;\n }\n ++i;\n }\n var html;\n if (this.scaleBar_) {\n html = this.createScaleBar(width, count, suffix);\n }\n else {\n html = count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n }\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n };\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @returns {string} The stringified HTML of the scalebar.\n */\n ScaleLine.prototype.createScaleBar = function (width, scale, suffix) {\n var mapScale = '1 : ' + Math.round(this.getScaleForResolution()).toLocaleString();\n var scaleSteps = [];\n var stepWidth = width / this.scaleBarSteps_;\n var backgroundColor = '#ffffff';\n for (var i = 0; i < this.scaleBarSteps_; i++) {\n if (i === 0) {\n // create the first marker at position 0\n scaleSteps.push(this.createMarker('absolute', i));\n }\n scaleSteps.push('
' +\n '
' +\n '
' +\n this.createMarker('relative', i) +\n /*render text every second step, except when only 2 steps */\n (i % 2 === 0 || this.scaleBarSteps_ === 2\n ? this.createStepText(i, width, false, scale, suffix)\n : '') +\n '
');\n if (i === this.scaleBarSteps_ - 1) {\n {\n /*render text at the end */\n }\n scaleSteps.push(this.createStepText(i + 1, width, true, scale, suffix));\n }\n // switch colors of steps between black and white\n if (backgroundColor === '#ffffff') {\n backgroundColor = '#000000';\n }\n else {\n backgroundColor = '#ffffff';\n }\n }\n var scaleBarText;\n if (this.scaleBarText_) {\n scaleBarText =\n '
' +\n mapScale +\n '
';\n }\n else {\n scaleBarText = '';\n }\n var container = '
' +\n scaleBarText +\n scaleSteps.join('') +\n '
';\n return container;\n };\n /**\n * Creates a marker at given position\n * @param {string} position - The position, absolute or relative\n * @param {number} i - The iterator\n * @returns {string} The stringified div containing the marker\n */\n ScaleLine.prototype.createMarker = function (position, i) {\n var top = position === 'absolute' ? 3 : -10;\n return ('
');\n };\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i - The iterator\n * @param {number} width - The width the scalebar will currently use\n * @param {boolean} isLast - Flag indicating if we add the last step text\n * @param {number} scale - The current scale for the whole scalebar\n * @param {string} suffix - The suffix for the scale\n * @returns {string} The stringified div containing the step text\n */\n ScaleLine.prototype.createStepText = function (i, width, isLast, scale, suffix) {\n var length = i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_) * i * 100) / 100;\n var lengthString = length + (i === 0 ? '' : ' ' + suffix);\n var margin = i === 0 ? -3 : (width / this.scaleBarSteps_) * -1;\n var minWidth = i === 0 ? 0 : (width / this.scaleBarSteps_) * 2;\n return ('
' +\n lengthString +\n '
');\n };\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n ScaleLine.prototype.getScaleForResolution = function () {\n var resolution = getPointResolution(this.viewState_.projection, this.viewState_.resolution, this.viewState_.center);\n var dpi = this.dpi_ || DEFAULT_DPI;\n var mpu = this.viewState_.projection.getMetersPerUnit();\n var inchesPerMeter = 39.37;\n return parseFloat(resolution.toString()) * mpu * inchesPerMeter * dpi;\n };\n /**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n ScaleLine.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n }\n else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n };\n return ScaleLine;\n}(Control));\nexport default ScaleLine;\n","import OlMap from 'ol/Map';\nimport Feature from 'ol/Feature';\nimport {ApMapViews} from './layers/ap-map.views';\nimport {ApMapControlStream} from './layers/ap-map-control.stream';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {IApMachinePopup} from './interfaces/ap-machine-popup.interface';\nimport {IApDynamicPointDataPopup} from './interfaces/ap-dynamic-point-data-popup.interface';\nimport {IApLengend} from './interfaces/ap-sensor-point-legend';\nimport {IApMapColorLegend} from '../ap-interface';\nimport {retry} from 'async';\nimport {GetRoundNumericPipe} from '../ap-utils';\nimport 'jsts/org/locationtech/jts/monkey.js';\nimport {CropTypeStore} from '../stores/base-data/crop.types.store';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {UserSettingsStore} from '../stores/settings/usersettings.store';\nimport {SettingsStore} from '../stores/base-data/settings.store';\nimport {FieldStore} from '../stores/farm/field.store';\nimport {ActionStore} from '../stores/docu/action.store';\nimport {RouterStore} from '../stores/router/router.store';\nimport {TranslationStore} from '../stores/translation/translation.store';\nimport {MapStore} from '../stores/map/map.store';\nimport View from 'ol/View';\nimport {MAP_PROJECTION} from './layers/ap-map.settings';\nimport {fromLonLat, toLonLat} from 'ol/proj';\nimport {ApMapContextMenuComponent} from '../map/components/ap-map-context-menu.component';\nimport Geometry from 'ol/geom/Geometry';\nimport {environment} from '../../environments/environment';\nimport {containsExtent} from 'ol/extent';\nimport BaseLayer from 'ol/layer/Base';\nimport {LayerFactory} from '../map-factory/layer.factory';\nimport {MapFactoryLayer} from './layers/map-factory-layer';\nimport {ApPolygonEditLayer} from './layers/ap-polygon-edit.layer';\nimport {ApBingLayer, BingImagery} from './layers/ap-bing.layer';\nimport {APP_CONFIGURATION} from '../ap-core/config';\nimport {filter} from 'rxjs/operators';\nimport {StringFactory} from 'ts-tooling';\nimport {CropGroupStore} from '../stores/base-data/crop.groups.store';\nimport {GeometryChecker} from './geometry.checker';\nimport VectorSource from 'ol/source/Vector';\nimport IField = Data.FieldManagement.IField;\nimport ILocationModel = Data.DocuContext.Location.ILocationModel;\nimport ISoilSampleField = Data.Nutrients.ISoilSampleField;\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport {GeoJSON} from 'ol/format';\nimport {FullScreen, ScaleLine} from 'ol/control';\nimport {ApMapTooltipComponent, TooltipContent} from '../map/components/ap-map-tooltip.component';\nimport {MapBrowserEvent} from 'ol';\nimport {Pixel} from 'ol/pixel';\nimport {LayerNames} from './layers/layer-names';\nimport {EventEmitter} from '@angular/core';\nimport {Coordinate} from 'ol/coordinate';\nimport {Clipboard} from '@angular/cdk/clipboard';\nimport Polygon from 'ol/geom/Polygon';\nimport {IApMapTooltipOptions} from './interfaces/ap-map-tooltip-options';\n\nif (!environment.Production) {\n if (!window['mapFunctions']) {\n window['mapFunctions'] = {};\n }\n setTimeout(() => {\n window['mapFunctions'].goTo = ApMapInstance.GoTo;\n window['mapFunctions'].getMap = () => ApMapInstance.Map;\n window['mapFunctions'].getPolygonEditLayer = () => ApMapInstance.PolygonEditLayer;\n window['mapFunctions'].getFieldDistributionLayer = () => ApMapInstance.FieldDistributionLayer;\n }, 1);\n}\n\n/**\n * instance and Methods of the Openlayers Map\n */\nexport class ApMapInstance {\n /**\n * the Openlayers Map Instance\n */\n static mapRef: OlMap;\n static isDebugModeEnabled = false;\n static mustUpdateView = false;\n static domSD: DomSanitizer;\n static contextMenu: ApMapContextMenuComponent;\n static tooltip: ApMapTooltipComponent;\n static userSettingsStore: UserSettingsStore;\n static mapStore: MapStore;\n static mapHTMLElement: HTMLElement;\n static fieldStore: FieldStore;\n static actionStore: ActionStore;\n static routerStore: RouterStore;\n static mapScrollDown: Subscription;\n static mapScrollUp: Subscription;\n static sensorPointLegend: IApLengend;\n static machinePopup: IApMachinePopup;\n static sensorPointPopup: IApDynamicPointDataPopup;\n static colorLegend: IApMapColorLegend;\n\n static tooltipTimeout: ReturnType;\n static settingsStore: SettingsStore;\n static croptypeStore: CropTypeStore;\n static cropGroupsStore: CropGroupStore;\n static translationService: TranslationStore;\n static roundNumericPipe: GetRoundNumericPipe;\n static FeaturesAtMousePosition: { [key: string]: BehaviorSubject[]> } = {};\n static MouseCoordinate = new BehaviorSubject([0, 0]);\n static onFieldClicked = new EventEmitter();\n static hasAgriconRole: boolean;\n static hasDeveloperRole: boolean;\n static clipboardService: Clipboard;\n private static SuspendZoomToSelection = false;\n\n static get PolygonEditLayer(): ApPolygonEditLayer {\n return this.mapStore.Layers.PolygonEditLayer;\n }\n\n static get FieldDistributionLayer(): MapFactoryLayer {\n return this.mapStore.Layers.DistributionLayer;\n }\n\n static get Map(): OlMap {\n return ApMapInstance.mapRef;\n }\n\n static clear(): void {\n if (ApMapInstance.mapRef) {\n ApMapInstance.mapRef.setTarget(null);\n ApMapInstance.mapRef = null;\n }\n ApMapInstance.mapStore.isMap = false;\n }\n\n /**\n * create a new Map Instance for a HTML Element or a Id String of an HTML Element\n */\n static register(ref: string | HTMLElement): void {\n if (ApMapInstance.mapRef) {\n setTimeout(() => ApMapInstance._setMap(ref), 201);\n return;\n }\n ApMapInstance._initMap(ref);\n }\n\n static IsFeatureInViewFull(feature: Feature): boolean {\n const view = ApMapInstance.mapRef.getView();\n if (!view) {\n return false;\n }\n const viewExtent = view.calculateExtent();\n const featureExtent = feature.getGeometry().getExtent();\n return containsExtent(viewExtent, featureExtent);\n }\n\n static GoTo(longitude: number, latitude: number, zoom: number): void {\n ApMapInstance.mapRef.setView(new View({\n center: fromLonLat([longitude, latitude]),\n zoom,\n projection: MAP_PROJECTION\n }));\n }\n\n /**\n * Registers the context menu component.\n */\n static registerContextMenu(ref: ApMapContextMenuComponent): void {\n this.contextMenu = ref;\n }\n\n /**\n * Registers the context menu component.\n */\n static registerTooltip(ref: ApMapTooltipComponent): void {\n this.tooltip = ref;\n }\n\n /**\n * Registers the ap-map html element.\n */\n static registerMapHTMLElement(ref: HTMLElement): void {\n this.mapHTMLElement = ref;\n }\n\n /**\n * Registers the machine popup component for later use in layers.\n */\n static registerMachinePopup(ref: IApMachinePopup): void {\n this.machinePopup = ref;\n }\n\n /**\n * Registers the sensorpoint popup component for later use in layers.\n */\n static registerSensorPointPopup(ref: IApDynamicPointDataPopup): void {\n this.sensorPointPopup = ref;\n }\n\n /**\n * Registers the sensorpoint legend component to show on map on classify the layer\n */\n static registerSensorLegend(ref: IApLengend): void {\n this.sensorPointLegend = ref;\n }\n\n /**\n * Registers the color legend component to show on map\n */\n static registerColorLegend(ref: IApMapColorLegend): void {\n this.colorLegend = ref;\n }\n\n /**\n * update the sizes of the map and triggers a render for optimal display\n */\n static updateView(): void {\n if (ApMapInstance.mapRef) {\n ApMapInstance._updateView();\n } else {\n ApMapInstance.mustUpdateView = true;\n retry({\n times: 5,\n interval: 100,\n }, () => {\n if (ApMapInstance.mapRef) {\n ApMapInstance._updateView();\n }\n }, (err) => {\n if (err) {\n console.warn('update map view fails after 5 retries');\n }\n ApMapInstance.mustUpdateView = false;\n });\n }\n }\n\n /**\n * set a new Zoom Level of the View\n */\n static changeZoom(level: number): void {\n ApMapInstance.mapRef.getView().setZoom(level);\n this.mapStore.SetLastView({\n center: ApMapInstance.mapRef.getView().getCenter() as [number, number],\n zoom: ApMapInstance.mapRef.getView().getZoom()\n });\n }\n\n /**\n * set a new Center of the View\n */\n static changeCenter(point: [number, number]): void {\n ApMapInstance.mapRef.getView().setCenter(point);\n this.mapStore.SetLastView({\n center: ApMapInstance.mapRef.getView().getCenter() as [number, number],\n zoom: ApMapInstance.mapRef.getView().getZoom()\n });\n }\n\n /**\n * refresh the Layers in the Map after change in Store\n */\n static refreshLayers(layers: { name: string, layer: BaseLayer }[]): void {\n for (const l of layers) {\n ApMapInstance.changeLayer(l);\n }\n }\n\n /**\n * add a new Layer to the Map\n */\n static changeLayer(layer: { name: string, layer: BaseLayer }): void {\n if (!layer) {\n return;\n }\n\n const found = ApMapInstance.getLayer(layer.name);\n if (found) {\n ApMapInstance.mapRef.removeLayer(found);\n }\n ApMapInstance.mapRef.addLayer(layer.layer);\n }\n\n static getLayer(name: string): BaseLayer {\n return ApMapInstance.mapRef.getLayers().getArray()\n .Find(_ => _?.get('name') === name);\n }\n\n static updateUrl(layer: { name: string, address: string, url: string }): boolean {\n if (!layer) {\n return false;\n }\n\n const found = ApMapInstance.getLayer(layer.name);\n if (found) {\n ApMapInstance.mapRef.removeLayer(found);\n }\n const l = LayerFactory.createMapFactoryLayer(layer.name, layer.address, layer.url, null, ApMapInstance.mapStore);\n ApMapInstance.mapRef.addLayer(l.layer);\n return true;\n }\n\n /**\n * select the given Fields in Map\n */\n static selectField(fields: IField[]): void {\n if (!ApMapInstance.mapStore.Layers.FieldsLayer) {\n return;\n }\n ApMapInstance.mapStore.Layers.FieldsLayer.clearSelection();\n const withGeom = fields.FindAll(f => !!this.fieldStore.getCurrentFieldGeom(f));\n if (withGeom.length > 0) {\n for (const f of withGeom) {\n ApMapInstance.mapStore.Layers.FieldsLayer.selectField(this.fieldStore.getCurrentFieldGeom(f)?.Id.toString());\n }\n // In case user selected a field by clicking in the map the zoom-to-selection should be skipped\n if (!ApMapInstance.SuspendZoomToSelection) {\n ApMapInstance.mapStore.Layers.FieldsLayer.fitSelection();\n }\n }\n }\n\n /**\n * select the given locations in Map\n */\n static selectLocation(locations: ILocationModel[]): void {\n if (!ApMapInstance.mapStore.Layers.LocationsLayer) {\n return;\n }\n ApMapInstance.mapStore.Layers.LocationsLayer.clearSelection();\n for (const f of locations) {\n ApMapInstance.mapStore.Layers.LocationsLayer.selectLocation(f.Id.toString());\n }\n if (locations.length !== 0) {\n ApMapInstance.mapStore.Layers.LocationsLayer.fitSelection(150);\n }\n }\n\n /**\n * init a new Map in an HTML Element\n */\n private static _initMap(ref: string | HTMLElement): void {\n const bingHybrid = new ApBingLayer(this.mapStore, BingImagery.HYBRID);\n const bingStreet = new ApBingLayer(this.mapStore, BingImagery.GRAYSCALE_ROAD);\n const bingSatellite = new ApBingLayer(this.mapStore, BingImagery.SATELLITE);\n bingStreet.Visibility = false;\n bingSatellite.Visibility = false;\n\n ApMapInstance.mapRef = new OlMap({\n target: ref,\n layers: [\n bingHybrid.layer,\n bingStreet.layer,\n bingSatellite.layer,\n ApMapInstance.mapStore.Layers.WMTSLayer.layer,\n ApMapInstance.mapStore.Layers.XYZLayer.layer,\n ApMapInstance.mapStore.Layers.SensorPoints.layer,\n ApMapInstance.mapStore.Layers.NRaster.layer,\n ApMapInstance.mapStore.Layers.PpRaster.layer,\n ApMapInstance.mapStore.Layers.FieldsLayer.layer,\n ApMapInstance.mapStore.Layers.FieldsCropLayer.layer,\n ApMapInstance.mapStore.Layers.FieldDescriptionLayer.layer,\n ApMapInstance.mapStore.Layers.SampleFieldLayer.layer,\n ApMapInstance.mapStore.Layers.SampleFieldDescriptionLayer.layer,\n ApMapInstance.mapStore.Layers.LocationsLayer.layer,\n ApMapInstance.mapStore.Layers.LocationsLayer.pingLayer,\n ApMapInstance.mapStore.Layers.UserLocationLayer.layer,\n ApMapInstance.mapStore.Layers.GeoPointsLayer.layer,\n ApMapInstance.mapStore.Layers.GeoPointsLayer.editLayer.layer,\n ApMapInstance.mapStore.Layers.FungiDetectLayer.layer,\n ApMapInstance.mapStore.Layers.ContactLayer.layer,\n ApMapInstance.mapStore.Layers.PolygonEditViewLayer.layer,\n ApMapInstance.mapStore.Layers.PolygonEditLayer.layer,\n ApMapInstance.mapStore.Layers.TaskManagementLayer.layer,\n ApMapInstance.mapStore.Layers.TaskManagementNutrientLayer.layer,\n ApMapInstance.mapStore.Layers.NeedLayer.layer,\n ApMapInstance.mapStore.Layers.SoilGroupLayer.layer,\n ApMapInstance.mapStore.Layers.SoilSampleLayer.layer,\n ApMapInstance.mapStore.Layers.DistributionLayer.layer,\n ApMapInstance.mapStore.Layers.SoilSampleDistributionLayer.layer,\n ApMapInstance.mapStore.Layers.NutrientPlanningLayer.layer,\n ApMapInstance.mapStore.Layers.TrackLayer.layer,\n ApMapInstance.mapStore.Layers.TrackLayer.featureLayer,\n ApMapInstance.mapStore.Layers.NdiLayer.layer,\n ApMapInstance.mapStore.Layers.NApplicationMapLayer.layer,\n ApMapInstance.mapStore.Layers.PpApplicationMapLayer.layer,\n ApMapInstance.mapStore.Layers.NUptakeLayer.layer\n ],\n view: ApMapViews.olView,\n controls: [new FullScreen({\n target: 'ap-map-fullscreen-container',\n className: 'ap-map-fullscreen',\n label: '',\n labelActive: ''\n }), new ScaleLine({\n units: 'metric',\n })]\n });\n\n // the Order are Important and defined at https://confluence.agricon.de/display/APV49/Kartenelement\n ApMapInstance.mapStore.Layers.AllLayers$.next([\n ApMapInstance.mapStore.Layers.FieldsLayer,\n ApMapInstance.mapStore.Layers.FieldDescriptionLayer,\n ApMapInstance.mapStore.Layers.FieldsCropLayer,\n ApMapInstance.mapStore.Layers.SampleFieldLayer,\n ApMapInstance.mapStore.Layers.SoilGroupLayer,\n ApMapInstance.mapStore.Layers.SoilSampleLayer,\n ApMapInstance.mapStore.Layers.NdiLayer,\n ApMapInstance.mapStore.Layers.NUptakeLayer,\n ApMapInstance.mapStore.Layers.DistributionLayer,\n ApMapInstance.mapStore.Layers.SoilSampleDistributionLayer,\n ApMapInstance.mapStore.Layers.NeedLayer,\n ApMapInstance.mapStore.Layers.NutrientPlanningLayer,\n ApMapInstance.mapStore.Layers.SensorPoints,\n ApMapInstance.mapStore.Layers.NRaster,\n ApMapInstance.mapStore.Layers.PpRaster,\n ApMapInstance.mapStore.Layers.LocationsLayer,\n ApMapInstance.mapStore.Layers.UserLocationLayer,\n ApMapInstance.mapStore.Layers.GeoPointsLayer,\n ApMapInstance.mapStore.Layers.TrackLayer,\n ApMapInstance.mapStore.Layers.TaskManagementLayer,\n ApMapInstance.mapStore.Layers.TaskManagementNutrientLayer,\n ApMapInstance.mapStore.Layers.FungiDetectLayer,\n ApMapInstance.mapStore.Layers.NApplicationMapLayer,\n ApMapInstance.mapStore.Layers.PpApplicationMapLayer,\n ]);\n\n ApMapInstance._registerControls();\n ApMapInstance.updateView();\n\n ApMapInstance.mapStore.Layers.BackgroundMap$.subscribe(v => {\n switch (v) {\n case BingImagery.GRAYSCALE_ROAD:\n bingHybrid.Visibility = false;\n bingSatellite.Visibility = false;\n bingStreet.Visibility = true;\n break;\n case BingImagery.SATELLITE:\n bingHybrid.Visibility = false;\n bingSatellite.Visibility = true;\n bingStreet.Visibility = false;\n break;\n default:\n bingHybrid.Visibility = true;\n bingSatellite.Visibility = false;\n bingStreet.Visibility = false;\n }\n this.mapRef.getLayers();\n setTimeout(() => this.setLastView(), 0);\n });\n\n setTimeout(() => {\n ApMapInstance.mapStore.Layers.initBaseMaps();\n ApMapInstance.mapStore.mapInitialized.emit();\n ApMapInstance.mapStore.isMap = true;\n }, 1);\n\n ApMapInstance.mapStore.Layers.DistributionUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.DistributionLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.SoilSampleDistributionUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.SoilSampleDistributionLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.NutrientPlanningUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.NutrientPlanningLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.NRasterUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.NRaster.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.PpRasterUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.PpRaster.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.SensorPointsUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.SensorPoints.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.SoilSampleUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.SoilSampleLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.SoilGroupUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.SoilGroupLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.NeedUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.NeedLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.NdiUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.NdiLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.NUptakeUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.NUptakeLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.TrackUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.TrackLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n ApMapInstance.mapStore.Layers.TrackLayer.loadFeatures(APP_CONFIGURATION.MapFactory.Address,\n url.Replace('map_slice', 'map_slice_marker').Replace('pro_slice', 'pro_slice_marker'),\n _ => _.type === 'Point').then();\n });\n\n ApMapInstance.mapStore.Layers.NPlanningUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.NApplicationMapLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n\n ApMapInstance.mapStore.Layers.PPApplicationUrl$\n .pipe(filter(url => !StringFactory.IsNullOrEmpty(url)))\n .subscribe(url => {\n ApMapInstance.mapStore.Layers.PpApplicationMapLayer.update(`${APP_CONFIGURATION.MapFactory.Address}${url}`);\n });\n }\n\n /**\n * set the Map into an new HTML Element\n */\n private static _setMap(ref: string | HTMLElement): void {\n ApMapInstance.mapRef.setTarget(ref);\n this.setLastView();\n ApMapInstance._registerControls();\n ApMapInstance.updateView();\n }\n\n /**\n * Tries to set the last view of the map\n * @private\n */\n private static setLastView(): void {\n if (this.mapStore.LastView) {\n ApMapInstance.mapRef?.getView().setCenter(this.mapStore.LastView.center);\n ApMapInstance.mapRef?.getView().setZoom(this.mapStore.LastView.zoom);\n }\n }\n\n /**\n * register Map Controls after init or set the Map into HTML DOM\n */\n private static _registerControls(): void {\n ApMapInstance._initLayerSubscription();\n // register to the Map Events\n ApMapInstance.mapRef.on('moveend', ApMapInstance._saveLastView);\n ApMapInstance.mapScrollDown = ApMapControlStream.listenScrollDown$.subscribe(() => ApMapInstance._saveLastView);\n ApMapInstance.mapScrollUp = ApMapControlStream.listenScrollUp$.subscribe(() => ApMapInstance._saveLastView);\n ApMapInstance.mapRef.on('singleclick', ApMapInstance._singleClick);\n ApMapInstance.mapRef.on('contextmenu', ApMapInstance._contextMenu);\n ApMapInstance.mapRef.on('pointermove', ApMapInstance._pointerMove);\n ApMapInstance.mapRef.on('singleclick', (e) => {\n ApMapInstance.MouseCoordinate.next(ApMapInstance.mapRef.getCoordinateFromPixel(e.pixel));\n const layers = ApMapInstance.mapRef.getLayers().getArray();\n e.map.forEachLayerAtPixel(e.pixel, l => {\n for (const layer of layers) {\n const name = layer.get('name');\n if (!name || name !== l.get('name')) {\n continue;\n }\n\n if (!ApMapInstance.FeaturesAtMousePosition[name]) {\n ApMapInstance.FeaturesAtMousePosition[name] = new BehaviorSubject[]>([]);\n } else {\n const layerSource = l.getSource() as VectorSource;\n if (!layerSource || typeof layerSource.getFeatures !== 'function') {\n return;\n }\n ApMapInstance.FeaturesAtMousePosition[name].next(GeometryChecker.IsPointInPolygon(layerSource.getFeatures(), e.map.getCoordinateFromPixel(e.pixel)));\n }\n }\n });\n });\n }\n\n private static _initLayerSubscription(): void {\n const layers = ApMapInstance.mapRef.getLayers().getArray();\n for (const layer of layers) {\n const name = layer.get('name');\n if (!ApMapInstance.FeaturesAtMousePosition[name]) {\n ApMapInstance.FeaturesAtMousePosition[name] = new BehaviorSubject[]>([]);\n }\n }\n }\n\n private static _saveLastView(): void {\n if (ApMapInstance.isDebugModeEnabled) {\n try {\n for (const layer of ApMapInstance.mapRef.getLayers().getArray()) {\n if (!(layer instanceof VectorTileLayer) || !layer?.getVisible()) {\n continue;\n }\n // While debugMode is enabled the map is rendered with full qualified feature instances\n // Those full features allows us to convert them to GeoJson\n // Without debugMode the maps consists of so called RenderFeatures which is\n // a lightweight feature implementation to increase performance\n const currentMapFeatures = layer.getSource()?.getFeaturesInExtent(\n ApMapInstance.mapRef.getView().calculateExtent());\n const geoJsonFeatureCollection = new GeoJSON().writeFeaturesObject(\n currentMapFeatures as Feature[],\n {\n dataProjection: 'EPSG:4326',\n featureProjection: 'EPSG:3857'\n });\n console.log(`Layer: '${layer?.getProperties()?.name}':`);\n console.log('http://geojson.io/#data=data:application/json,' + encodeURIComponent(JSON.stringify(geoJsonFeatureCollection)));\n }\n } catch (e) {\n console.warn(`Error while generating map geoJson link in debugMode: ${e?.message} : ${e.stack}`);\n }\n }\n ApMapInstance.mapStore.SetLastView({\n center: ApMapInstance.mapRef.getView().getCenter() as [number, number],\n zoom: ApMapInstance.mapRef.getView().getZoom()\n });\n }\n\n /**\n * update Openlayers Map Sizes and trigger a render\n */\n private static _updateView(): void {\n try {\n if (ApMapInstance.mapRef) {\n ApMapInstance.mapRef.renderSync();\n ApMapInstance.mapRef.updateSize();\n }\n }catch (ex)\n {\n // in rare cases we got the following error:\n // >Cannot read properties of null (reading 'usedTiles')<\n // It could be reproduced by slowing down the browser (performance tab)\n // and clicking really fast between tabs (map/stat) and other modules.\n // The callstack pointed to this part of our code.\n // It seems a timing issue between disposing the map (when leaving the tab)\n // and clicking in the map or in the grid to focus a field\n // => this is not critical, and therefore we change it to 'Warning' in\n // order not to block our client with the client-error overlay\n console.warn('Updating view failed because map is already disposed');\n }\n }\n\n private static _singleClick(event: MapBrowserEvent): void {\n ApMapInstance.contextMenu.hide();\n\n // Do no allow field-selection if fields layer is not available/visible and if at least one of the edit layers is active.\n if (!ApMapInstance.mapStore?.Layers?.FieldsLayer?.layer || !ApMapInstance.mapStore?.Layers?.FieldsLayer?.Visibility ||\n (ApMapInstance.mapStore?.Layers?.PolygonEditViewLayer?.Visibility &&\n ApMapInstance.mapStore?.Layers?.PolygonEditViewLayer?.Features?.length > 0) ||\n (ApMapInstance.mapStore?.Layers?.PolygonEditLayer?.Visibility &&\n ApMapInstance.mapStore?.Layers?.PolygonEditLayer?.Features?.length > 0)) {\n return;\n }\n\n // Trigger selection of fields clicked by the user\n try {\n ApMapInstance.SuspendZoomToSelection = true;\n const clickedFields = GeometryChecker.IsPointInPolygon(\n ApMapInstance.mapStore?.Layers?.FieldsLayer?.layer?.getSource()?.getFeatures(),\n ApMapInstance.mapRef?.getCoordinateFromPixel(event?.pixel));\n for (const clickedField of clickedFields) {\n ApMapInstance.onFieldClicked?.emit(ApMapInstance.fieldStore?.getFieldByFieldGeomId(clickedField?.getId()));\n }\n }catch (error) {\n console.warn(`Error while singleClick event (select fields from map): ${error}`);\n } finally {\n setTimeout(() => {\n // we need a delay here because some components debounce their selectionChange event\n ApMapInstance.SuspendZoomToSelection = false;\n }, 250);\n }\n }\n\n static hideTooltip(): void {\n clearTimeout(ApMapInstance.tooltipTimeout);\n ApMapInstance.tooltip?.show(undefined);\n }\n\n public static displayTooltipAt(featurePosition: Pixel, tooltipOptions: IApMapTooltipOptions): void {\n // if the timeout/debounce for showing the tooltip started\n // already but the mouse moved again => clear the timeout and\n // avoid showing the tooltip\n if (ApMapInstance.tooltipTimeout) {\n clearTimeout(ApMapInstance.tooltipTimeout);\n ApMapInstance.tooltipTimeout = undefined;\n ApMapInstance.tooltip?.show(undefined);\n }\n\n ApMapInstance.tooltipTimeout = setTimeout(() => {\n try {\n const tooltipContent: TooltipContent[] = [];\n const processedLayers: string[] = [];\n if (ApMapInstance.isDebugModeEnabled) {\n this.generateLatLonTooltip(featurePosition, tooltipContent);\n }\n if (tooltipOptions?.showFieldName) {\n this.generateFieldNameTooltip(featurePosition, tooltipContent);\n }\n\n ApMapInstance.mapRef.forEachFeatureAtPixel(featurePosition, (feature, featureLayer) => {\n const mapFactoryLayer = ApMapInstance.mapStore.Layers.AllLayers.FirstOrDefault(l => (l as MapFactoryLayer)?.layer === featureLayer && (l as MapFactoryLayer)?.name !== LayerNames.USER_LOCATION) as MapFactoryLayer;\n if (!mapFactoryLayer) {\n ApMapInstance.tooltip.show([]);\n return;\n }\n\n const featureProperties = feature?.getProperties();\n // we need to check if this exact layer has been processed already.\n // in rare cases the 'forEachFeatureAtPixel method returns duplicates of features\n if (processedLayers.Any(l => l === featureProperties?.layer)) {\n ApMapInstance.tooltip.show([]);\n return;\n }\n processedLayers.push(featureProperties?.layer);\n\n if (ApMapInstance.isDebugModeEnabled) {\n tooltipContent.push({text: featureProperties?.data});\n } else if (typeof mapFactoryLayer.generateTooltip === 'function'){\n const tooltipForFeature = mapFactoryLayer.generateTooltip(featureProperties);\n if (tooltipForFeature?.length > 0) {\n tooltipContent.push({text: tooltipForFeature});\n }\n }\n if (ApMapInstance.isDebugModeEnabled) {\n console.log(`%cFeatureAtPixel: ${featureProperties?.data ?? ''}`, 'color: lightblue; background: rgba(79, 79, 79, 0.5);');\n }\n }\n , {\n hitTolerance: 5,\n layerFilter: (l) => {\n return l?.getVisible() === true;\n }\n });\n clearTimeout(ApMapInstance.tooltipTimeout);\n ApMapInstance.tooltip.show(tooltipContent, tooltipOptions?.style);\n } catch (e) {\n console.warn(`Error while creating map feature tooltip: ${e?.message} : ${e.stack}`);\n }\n }, 500);\n }\n\n /**\n * Generates and styles tooltip for fieldname and size at the current cursor position\n * @param featurePosition current cursor/mouse position\n * @param tooltipContent the tooltip content reference object\n * @private\n */\n private static generateFieldNameTooltip(featurePosition: number[], tooltipContent: TooltipContent[]): void {\n const fieldName = this.findFieldnameAtPosition(featurePosition);\n if (fieldName && fieldName.length > 0) {\n const fieldNameLines = fieldName.split('\\n');\n tooltipContent.push({\n text: fieldNameLines[0],\n style: 'font-weight: bold'\n });\n if (fieldNameLines.length > 1) {\n tooltipContent.push({text: fieldNameLines[1]});\n }\n }\n }\n\n /**\n * Generates Tooltip for cursor's Lat/Lon position on map\n * @param featurePosition current cursor/mouse position\n * @param tooltipContent the tooltip content reference object\n * @private\n */\n private static generateLatLonTooltip(featurePosition: number[], tooltipContent: TooltipContent[]): void {\n const coordinates = toLonLat(ApMapInstance.mapRef.getCoordinateFromPixel(featurePosition));\n if (coordinates?.length === 2) {\n tooltipContent.push({\n text: `Lat, Lon: ${coordinates[1]}, ${coordinates[0]}`\n });\n }\n }\n\n /**\n * Tries to find the label of field's layer or samplefield's layer\n * at the position of the cursor.\n * Here we need a high value for hitTolerance to find features nearby the cursor.\n * Fields usually have a transparent fill and therefor would not be found by \"featuresAtPixel\" if the\n * hitTolerance is small.\n * @param featurePosition\n * @private\n */\n private static findFieldnameAtPosition(featurePosition: number[]): string {\n const mapPointerPosition = ApMapInstance.mapRef.getCoordinateFromPixel(featurePosition);\n const features = ApMapInstance.mapRef.getFeaturesAtPixel(featurePosition, {\n hitTolerance: 100,\n layerFilter: (l) => {\n return l === ApMapInstance.mapStore?.Layers?.FieldsLayer?.layer || l === ApMapInstance.mapStore?.Layers?.SampleFieldLayer?.layer;\n }\n });\n\n // After finding all features nearby the cursor we check which polygon intersects with the cursor position\n for (const feature of features) {\n const geometry = feature?.getGeometry();\n if (geometry && geometry?.getType() === 'Polygon') {\n const polygon = geometry as Polygon;\n if (polygon?.intersectsCoordinate(mapPointerPosition)) {\n return feature?.getProperties()?.label?.toString();\n }\n }\n }\n return undefined;\n }\n\n /**\n * Handle mouseMove event to track if the mouse stands still and\n * a tooltip can be shown in the map\n * @param event\n * @private\n */\n private static _pointerMove(event: MapBrowserEvent): void {\n if (!event || event.dragging) {\n return;\n }\n\n ApMapInstance.displayTooltipAt(event.pixel, { showFieldName: true });\n }\n\n private static _contextMenu(event): void {\n event.preventDefault();\n const features: { layer: string, id: string | number }[] = [];\n const coord = ApMapInstance.mapRef.getCoordinateFromPixel(event.pixel);\n for (const layer of ApMapInstance.mapStore.Layers.AllLayers$.getValue()) {\n if (typeof layer['forFeaturesAtCoordinate'] !== 'function') {\n continue;\n }\n if (!layer.Visibility) {\n continue;\n }\n\n layer['forFeaturesAtCoordinate'](coord, (f, l) => {\n features.push({layer: l.get('name'), id: f.getId()});\n });\n }\n ApMapInstance.contextMenu.setContextMenu(features);\n if (ApMapInstance.isDebugModeEnabled) {\n const lonLat = toLonLat(ApMapInstance.mapRef.getCoordinateFromPixel(event.pixel));\n ApMapInstance.contextMenu.extendContextMenu({\n text: 'Copy Coordinates',\n key: 'execute',\n args: [(lonLatCoordinate: Coordinate) => {\n if (lonLatCoordinate?.length !== 2) {\n return;\n }\n ApMapInstance.clipboardService.copy(`${lonLatCoordinate[1]}, ${lonLatCoordinate[0]}`);\n }, [lonLat]]\n });\n }\n ApMapInstance.contextMenu.show({\n left: event.pixel[0] + (ApMapInstance.mapHTMLElement.offsetParent as HTMLElement)?.offsetLeft,\n top: event.pixel[1] + (ApMapInstance.mapHTMLElement.offsetParent as HTMLElement)?.offsetTop\n });\n }\n\n static selectSampleField(sampleFields: ISoilSampleField[]): void {\n if (!ApMapInstance.mapStore.Layers.SampleFieldLayer) {\n return;\n }\n ApMapInstance.mapStore.Layers.SampleFieldLayer.clearSelection();\n const withGeoms = sampleFields.FindAll(sf => !!sf.Geom);\n if (!withGeoms.Any()) {\n return;\n }\n for (const withGeom of withGeoms) {\n ApMapInstance.mapStore.Layers.SampleFieldLayer.selectField(withGeom.Id);\n }\n ApMapInstance.mapStore.Layers.SampleFieldLayer.fitSelection();\n }\n}\n","import OL3Parser from 'jsts/org/locationtech/jts/io/OL3Parser';\nimport * as OlGeom from 'ol/geom';\nimport LinearRing from 'ol/geom/LinearRing';\nimport OlFeature, {FeatureLike} from 'ol/Feature';\nimport OlPoint from 'ol/geom/Point';\n\nconst Ol3Parser = new OL3Parser();\nOl3Parser['inject'](OlGeom.Point, OlGeom.LineString, LinearRing, OlGeom.Polygon, OlGeom.MultiPoint,\n OlGeom.MultiLineString, OlGeom.MultiPolygon);\n\nexport class GeometryChecker {\n static IsPointInPolygon(features: OlFeature[], coordinates: number[]): OlFeature[] {\n const parser = new OL3Parser();\n parser['inject'](OlGeom.Point, OlGeom.LineString, LinearRing, OlGeom.Polygon, OlGeom.MultiPoint,\n OlGeom.MultiLineString, OlGeom.MultiPolygon);\n\n const res: OlFeature[] = [];\n const ptFeature = new OlFeature({geometry: new OlPoint(coordinates)});\n for (const feat of features) {\n const ntsFeature = parser.read(feat.getGeometry());\n const pt = parser.read(ptFeature.getGeometry());\n if (ntsFeature.contains(pt)) {\n res.Add(feat);\n }\n }\n return res;\n }\n\n static IsPointInFeature(features: FeatureLike[], coordinates: number[]): FeatureLike[] {\n const parser = new OL3Parser();\n parser['inject'](OlGeom.Point, OlGeom.LineString, LinearRing, OlGeom.Polygon, OlGeom.MultiPoint,\n OlGeom.MultiLineString, OlGeom.MultiPolygon);\n\n const res: FeatureLike[] = [];\n const ptFeature = new OlFeature({geometry: new OlPoint(coordinates)});\n for (const feat of features) {\n const ntsFeature = parser.read(feat.getGeometry());\n const pt = parser.read(ptFeature.getGeometry());\n if (ntsFeature.contains(pt)) {\n res.Add(feat);\n }\n }\n return res;\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Circle\n */\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { createOrUpdate, forEachCorner, intersects } from '../extent.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { rotate, translate } from './flat/transform.js';\n/**\n * @classdesc\n * Circle geometry.\n *\n * @api\n */\nvar Circle = /** @class */ (function (_super) {\n __extends(Circle, _super);\n /**\n * @param {!import(\"../coordinate.js\").Coordinate} center Center.\n * For internal use, flat coordinates in combination with `opt_layout` and no\n * `opt_radius` are also accepted.\n * @param {number=} opt_radius Radius.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function Circle(center, opt_radius, opt_layout) {\n var _this = _super.call(this) || this;\n if (opt_layout !== undefined && opt_radius === undefined) {\n _this.setFlatCoordinates(opt_layout, center);\n }\n else {\n var radius = opt_radius ? opt_radius : 0;\n _this.setCenterAndRadius(center, radius, opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Circle} Clone.\n * @api\n */\n Circle.prototype.clone = function () {\n return new Circle(this.flatCoordinates.slice(), undefined, this.layout);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Circle.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var dx = x - flatCoordinates[0];\n var dy = y - flatCoordinates[1];\n var squaredDistance = dx * dx + dy * dy;\n if (squaredDistance < minSquaredDistance) {\n if (squaredDistance === 0) {\n for (var i = 0; i < this.stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n }\n else {\n var delta = this.getRadius() / Math.sqrt(squaredDistance);\n closestPoint[0] = flatCoordinates[0] + delta * dx;\n closestPoint[1] = flatCoordinates[1] + delta * dy;\n for (var i = 2; i < this.stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n }\n closestPoint.length = this.stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Circle.prototype.containsXY = function (x, y) {\n var flatCoordinates = this.flatCoordinates;\n var dx = x - flatCoordinates[0];\n var dy = y - flatCoordinates[1];\n return dx * dx + dy * dy <= this.getRadiusSquared_();\n };\n /**\n * Return the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.\n * @return {import(\"../coordinate.js\").Coordinate} Center.\n * @api\n */\n Circle.prototype.getCenter = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Circle.prototype.computeExtent = function (extent) {\n var flatCoordinates = this.flatCoordinates;\n var radius = flatCoordinates[this.stride] - flatCoordinates[0];\n return createOrUpdate(flatCoordinates[0] - radius, flatCoordinates[1] - radius, flatCoordinates[0] + radius, flatCoordinates[1] + radius, extent);\n };\n /**\n * Return the radius of the circle.\n * @return {number} Radius.\n * @api\n */\n Circle.prototype.getRadius = function () {\n return Math.sqrt(this.getRadiusSquared_());\n };\n /**\n * @private\n * @return {number} Radius squared.\n */\n Circle.prototype.getRadiusSquared_ = function () {\n var dx = this.flatCoordinates[this.stride] - this.flatCoordinates[0];\n var dy = this.flatCoordinates[this.stride + 1] - this.flatCoordinates[1];\n return dx * dx + dy * dy;\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Circle.prototype.getType = function () {\n return GeometryType.CIRCLE;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Circle.prototype.intersectsExtent = function (extent) {\n var circleExtent = this.getExtent();\n if (intersects(extent, circleExtent)) {\n var center = this.getCenter();\n if (extent[0] <= center[0] && extent[2] >= center[0]) {\n return true;\n }\n if (extent[1] <= center[1] && extent[3] >= center[1]) {\n return true;\n }\n return forEachCorner(extent, this.intersectsCoordinate.bind(this));\n }\n return false;\n };\n /**\n * Set the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} center Center.\n * @api\n */\n Circle.prototype.setCenter = function (center) {\n var stride = this.stride;\n var radius = this.flatCoordinates[stride] - this.flatCoordinates[0];\n var flatCoordinates = center.slice();\n flatCoordinates[stride] = flatCoordinates[0] + radius;\n for (var i = 1; i < stride; ++i) {\n flatCoordinates[stride + i] = center[i];\n }\n this.setFlatCoordinates(this.layout, flatCoordinates);\n this.changed();\n };\n /**\n * Set the center (as {@link module:ol/coordinate~Coordinate coordinate}) and the radius (as\n * number) of the circle.\n * @param {!import(\"../coordinate.js\").Coordinate} center Center.\n * @param {number} radius Radius.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n Circle.prototype.setCenterAndRadius = function (center, radius, opt_layout) {\n this.setLayout(opt_layout, center, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n /** @type {Array} */\n var flatCoordinates = this.flatCoordinates;\n var offset = deflateCoordinate(flatCoordinates, 0, center, this.stride);\n flatCoordinates[offset++] = flatCoordinates[0] + radius;\n for (var i = 1, ii = this.stride; i < ii; ++i) {\n flatCoordinates[offset++] = flatCoordinates[i];\n }\n flatCoordinates.length = offset;\n this.changed();\n };\n Circle.prototype.getCoordinates = function () {\n return null;\n };\n Circle.prototype.setCoordinates = function (coordinates, opt_layout) { };\n /**\n * Set the radius of the circle. The radius is in the units of the projection.\n * @param {number} radius Radius.\n * @api\n */\n Circle.prototype.setRadius = function (radius) {\n this.flatCoordinates[this.stride] = this.flatCoordinates[0] + radius;\n this.changed();\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n Circle.prototype.rotate = function (angle, anchor) {\n var center = this.getCenter();\n var stride = this.getStride();\n this.setCenter(rotate(center, 0, center.length, stride, angle, anchor, center));\n this.changed();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n Circle.prototype.translate = function (deltaX, deltaY) {\n var center = this.getCenter();\n var stride = this.getStride();\n this.setCenter(translate(center, 0, center.length, stride, deltaX, deltaY, center));\n this.changed();\n };\n return Circle;\n}(SimpleGeometry));\n/**\n * Transform each coordinate of the circle from one coordinate reference system\n * to another. The geometry is modified in place.\n * If you do not want the geometry modified in place, first clone() it and\n * then use this function on the clone.\n *\n * Internally a circle is currently represented by two points: the center of\n * the circle `[cx, cy]`, and the point to the right of the circle\n * `[cx + r, cy]`. This `transform` function just transforms these two points.\n * So the resulting geometry is also a circle, and that circle does not\n * correspond to the shape that would be obtained by transforming every point\n * of the original circle.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Circle} This geometry. Note that original geometry is\n * modified in place.\n * @function\n * @api\n */\nCircle.prototype.transform;\nexport default Circle;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Draw\n */\nimport Circle from '../geom/Circle.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport Feature from '../Feature.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport InteractionProperty from './Property.js';\nimport LineString from '../geom/LineString.js';\nimport MapBrowserEvent from '../MapBrowserEvent.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport PointerInteraction from './Pointer.js';\nimport Polygon, { fromCircle, makeRegular } from '../geom/Polygon.js';\nimport VectorLayer from '../layer/Vector.js';\nimport VectorSource from '../source/Vector.js';\nimport { FALSE, TRUE } from '../functions.js';\nimport { always, noModifierKeys, shiftKeyOnly } from '../events/condition.js';\nimport { boundingExtent, getBottomLeft, getBottomRight, getTopLeft, getTopRight, } from '../extent.js';\nimport { createEditingStyle } from '../style/Style.js';\nimport { fromUserCoordinate, getUserProjection } from '../proj.js';\nimport { getChangeEventType } from '../Object.js';\nimport { squaredDistance as squaredCoordinateDistance } from '../coordinate.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../geom/GeometryType.js\").default} type Geometry type of\n * the geometries being drawn with this instance.\n * @property {number} [clickTolerance=6] The maximum distance in pixels between\n * \"down\" and \"up\" for a \"up\" event to be considered a \"click\" event and\n * actually add a point/vertex to the geometry being drawn. The default of `6`\n * was chosen for the draw interaction to behave correctly on mouse as well as\n * on touch devices.\n * @property {import(\"../Collection.js\").default} [features]\n * Destination collection for the drawn features.\n * @property {VectorSource} [source] Destination source for\n * the drawn features.\n * @property {number} [dragVertexDelay=500] Delay in milliseconds after pointerdown\n * before the current vertex can be dragged to its exact position.\n * @property {number} [snapTolerance=12] Pixel distance for snapping to the\n * drawing finish.\n * @property {boolean} [stopClick=false] Stop click, singleclick, and\n * doubleclick events from firing during drawing.\n * @property {number} [maxPoints] The number of points that can be drawn before\n * a polygon ring or line string is finished. By default there is no\n * restriction.\n * @property {number} [minPoints] The number of points that must be drawn\n * before a polygon ring or line string can be finished. Default is `3` for\n * polygon rings and `2` for line strings.\n * @property {import(\"../events/condition.js\").Condition} [finishCondition] A function\n * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether the drawing can be finished.\n * @property {import(\"../style/Style.js\").StyleLike} [style]\n * Style for sketch features.\n * @property {GeometryFunction} [geometryFunction]\n * Function that is called when a geometry's coordinates are updated.\n * @property {string} [geometryName] Geometry name to use for features created\n * by the draw interaction.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * By default {@link module:ol/events/condition~noModifierKeys}, i.e. a click,\n * adds a vertex or deactivates freehand drawing.\n * @property {boolean} [freehand=false] Operate in freehand mode for lines,\n * polygons, and circles. This makes the interaction always operate in freehand\n * mode and takes precedence over any `freehandCondition` option.\n * @property {import(\"../events/condition.js\").Condition} [freehandCondition]\n * Condition that activates freehand drawing for lines and polygons. This\n * function takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and\n * returns a boolean to indicate whether that event should be handled. The\n * default is {@link module:ol/events/condition~shiftKeyOnly}, meaning that the\n * Shift key activates freehand drawing.\n * @property {boolean} [wrapX=false] Wrap the world horizontally on the sketch\n * overlay.\n */\n/**\n * Coordinate type when drawing points.\n * @typedef {import(\"../coordinate.js\").Coordinate} PointCoordType\n */\n/**\n * Coordinate type when drawing lines.\n * @typedef {Array} LineCoordType\n */\n/**\n * Coordinate type when drawing polygons.\n * @typedef {Array>} PolyCoordType\n */\n/**\n * Types used for drawing coordinates.\n * @typedef {PointCoordType|LineCoordType|PolyCoordType} SketchCoordType\n */\n/**\n * Function that takes an array of coordinates and an optional existing geometry\n * and a projection as arguments, and returns a geometry. The optional existing\n * geometry is the geometry that is returned when the function is called without\n * a second argument.\n * @typedef {function(!SketchCoordType, import(\"../geom/SimpleGeometry.js\").default=,\n * import(\"../proj/Projection.js\").default=):\n * import(\"../geom/SimpleGeometry.js\").default} GeometryFunction\n */\n/**\n * Draw mode. This collapses multi-part geometry types with their single-part\n * cousins.\n * @enum {string}\n */\nvar Mode = {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n POLYGON: 'Polygon',\n CIRCLE: 'Circle',\n};\n/**\n * @enum {string}\n */\nvar DrawEventType = {\n /**\n * Triggered upon feature draw start\n * @event DrawEvent#drawstart\n * @api\n */\n DRAWSTART: 'drawstart',\n /**\n * Triggered upon feature draw end\n * @event DrawEvent#drawend\n * @api\n */\n DRAWEND: 'drawend',\n /**\n * Triggered upon feature draw abortion\n * @event DrawEvent#drawabort\n * @api\n */\n DRAWABORT: 'drawabort',\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Draw~Draw} instances are\n * instances of this type.\n */\nvar DrawEvent = /** @class */ (function (_super) {\n __extends(DrawEvent, _super);\n /**\n * @param {DrawEventType} type Type.\n * @param {Feature} feature The feature drawn.\n */\n function DrawEvent(type, feature) {\n var _this = _super.call(this, type) || this;\n /**\n * The feature being drawn.\n * @type {Feature}\n * @api\n */\n _this.feature = feature;\n return _this;\n }\n return DrawEvent;\n}(Event));\n/**\n * @classdesc\n * Interaction for drawing feature geometries.\n *\n * @fires DrawEvent\n * @api\n */\nvar Draw = /** @class */ (function (_super) {\n __extends(Draw, _super);\n /**\n * @param {Options} options Options.\n */\n function Draw(options) {\n var _this = this;\n var pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (options);\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n _this = _super.call(this, pointerOptions) || this;\n /**\n * @type {boolean}\n * @private\n */\n _this.shouldHandle_ = false;\n /**\n * @type {import(\"../pixel.js\").Pixel}\n * @private\n */\n _this.downPx_ = null;\n /**\n * @type {?}\n * @private\n */\n _this.downTimeout_;\n /**\n * @type {number|undefined}\n * @private\n */\n _this.lastDragTime_;\n /**\n * @type {boolean}\n * @private\n */\n _this.freehand_ = false;\n /**\n * Target source for drawn features.\n * @type {VectorSource}\n * @private\n */\n _this.source_ = options.source ? options.source : null;\n /**\n * Target collection for drawn features.\n * @type {import(\"../Collection.js\").default}\n * @private\n */\n _this.features_ = options.features ? options.features : null;\n /**\n * Pixel distance for snapping.\n * @type {number}\n * @private\n */\n _this.snapTolerance_ = options.snapTolerance ? options.snapTolerance : 12;\n /**\n * Geometry type.\n * @type {import(\"../geom/GeometryType.js\").default}\n * @private\n */\n _this.type_ = /** @type {import(\"../geom/GeometryType.js\").default} */ (options.type);\n /**\n * Drawing mode (derived from geometry type.\n * @type {Mode}\n * @private\n */\n _this.mode_ = getMode(_this.type_);\n /**\n * Stop click, singleclick, and doubleclick events from firing during drawing.\n * Default is `false`.\n * @type {boolean}\n * @private\n */\n _this.stopClick_ = !!options.stopClick;\n /**\n * The number of points that must be drawn before a polygon ring or line\n * string can be finished. The default is 3 for polygon rings and 2 for\n * line strings.\n * @type {number}\n * @private\n */\n _this.minPoints_ = options.minPoints\n ? options.minPoints\n : _this.mode_ === Mode.POLYGON\n ? 3\n : 2;\n /**\n * The number of points that can be drawn before a polygon ring or line string\n * is finished. The default is no restriction.\n * @type {number}\n * @private\n */\n _this.maxPoints_ = options.maxPoints ? options.maxPoints : Infinity;\n /**\n * A function to decide if a potential finish coordinate is permissible\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.finishCondition_ = options.finishCondition\n ? options.finishCondition\n : TRUE;\n var geometryFunction = options.geometryFunction;\n if (!geometryFunction) {\n if (_this.type_ === GeometryType.CIRCLE) {\n /**\n * @param {!LineCoordType} coordinates The coordinates.\n * @param {import(\"../geom/SimpleGeometry.js\").default=} opt_geometry Optional geometry.\n * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n * @return {import(\"../geom/SimpleGeometry.js\").default} A geometry.\n */\n geometryFunction = function (coordinates, opt_geometry, projection) {\n var circle = opt_geometry\n ? /** @type {Circle} */ (opt_geometry)\n : new Circle([NaN, NaN]);\n var center = fromUserCoordinate(coordinates[0], projection);\n var squaredLength = squaredCoordinateDistance(center, fromUserCoordinate(coordinates[1], projection));\n circle.setCenterAndRadius(center, Math.sqrt(squaredLength));\n var userProjection = getUserProjection();\n if (userProjection) {\n circle.transform(projection, userProjection);\n }\n return circle;\n };\n }\n else {\n var Constructor_1;\n var mode_1 = _this.mode_;\n if (mode_1 === Mode.POINT) {\n Constructor_1 = Point;\n }\n else if (mode_1 === Mode.LINE_STRING) {\n Constructor_1 = LineString;\n }\n else if (mode_1 === Mode.POLYGON) {\n Constructor_1 = Polygon;\n }\n /**\n * @param {!LineCoordType} coordinates The coordinates.\n * @param {import(\"../geom/SimpleGeometry.js\").default=} opt_geometry Optional geometry.\n * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n * @return {import(\"../geom/SimpleGeometry.js\").default} A geometry.\n */\n geometryFunction = function (coordinates, opt_geometry, projection) {\n var geometry = opt_geometry;\n if (geometry) {\n if (mode_1 === Mode.POLYGON) {\n if (coordinates[0].length) {\n // Add a closing coordinate to match the first\n geometry.setCoordinates([\n coordinates[0].concat([coordinates[0][0]]),\n ]);\n }\n else {\n geometry.setCoordinates([]);\n }\n }\n else {\n geometry.setCoordinates(coordinates);\n }\n }\n else {\n geometry = new Constructor_1(coordinates);\n }\n return geometry;\n };\n }\n }\n /**\n * @type {GeometryFunction}\n * @private\n */\n _this.geometryFunction_ = geometryFunction;\n /**\n * @type {number}\n * @private\n */\n _this.dragVertexDelay_ =\n options.dragVertexDelay !== undefined ? options.dragVertexDelay : 500;\n /**\n * Finish coordinate for the feature (first point for polygons, last point for\n * linestrings).\n * @type {import(\"../coordinate.js\").Coordinate}\n * @private\n */\n _this.finishCoordinate_ = null;\n /**\n * Sketch feature.\n * @type {Feature}\n * @private\n */\n _this.sketchFeature_ = null;\n /**\n * Sketch point.\n * @type {Feature}\n * @private\n */\n _this.sketchPoint_ = null;\n /**\n * Sketch coordinates. Used when drawing a line or polygon.\n * @type {SketchCoordType}\n * @private\n */\n _this.sketchCoords_ = null;\n /**\n * Sketch line. Used when drawing polygon.\n * @type {Feature}\n * @private\n */\n _this.sketchLine_ = null;\n /**\n * Sketch line coordinates. Used when drawing a polygon or circle.\n * @type {LineCoordType}\n * @private\n */\n _this.sketchLineCoords_ = null;\n /**\n * Squared tolerance for handling up events. If the squared distance\n * between a down and up event is greater than this tolerance, up events\n * will not be handled.\n * @type {number}\n * @private\n */\n _this.squaredClickTolerance_ = options.clickTolerance\n ? options.clickTolerance * options.clickTolerance\n : 36;\n /**\n * Draw overlay where our sketch features are drawn.\n * @type {VectorLayer}\n * @private\n */\n _this.overlay_ = new VectorLayer({\n source: new VectorSource({\n useSpatialIndex: false,\n wrapX: options.wrapX ? options.wrapX : false,\n }),\n style: options.style ? options.style : getDefaultStyleFunction(),\n updateWhileInteracting: true,\n });\n /**\n * Name of the geometry attribute for newly created features.\n * @type {string|undefined}\n * @private\n */\n _this.geometryName_ = options.geometryName;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : noModifierKeys;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.freehandCondition_;\n if (options.freehand) {\n _this.freehandCondition_ = always;\n }\n else {\n _this.freehandCondition_ = options.freehandCondition\n ? options.freehandCondition\n : shiftKeyOnly;\n }\n _this.addEventListener(getChangeEventType(InteractionProperty.ACTIVE), _this.updateState_);\n return _this;\n }\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Draw.prototype.setMap = function (map) {\n _super.prototype.setMap.call(this, map);\n this.updateState_();\n };\n /**\n * Get the overlay layer that this interaction renders sketch features to.\n * @return {VectorLayer} Overlay layer.\n * @api\n */\n Draw.prototype.getOverlay = function () {\n return this.overlay_;\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may actually draw or finish the drawing.\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n Draw.prototype.handleEvent = function (event) {\n if (event.originalEvent.type === EventType.CONTEXTMENU) {\n // Avoid context menu for long taps when drawing on mobile\n event.preventDefault();\n }\n this.freehand_ =\n this.mode_ !== Mode.POINT && this.freehandCondition_(event);\n var move = event.type === MapBrowserEventType.POINTERMOVE;\n var pass = true;\n if (!this.freehand_ &&\n this.lastDragTime_ &&\n event.type === MapBrowserEventType.POINTERDRAG) {\n var now = Date.now();\n if (now - this.lastDragTime_ >= this.dragVertexDelay_) {\n this.downPx_ = event.pixel;\n this.shouldHandle_ = !this.freehand_;\n move = true;\n }\n else {\n this.lastDragTime_ = undefined;\n }\n if (this.shouldHandle_ && this.downTimeout_ !== undefined) {\n clearTimeout(this.downTimeout_);\n this.downTimeout_ = undefined;\n }\n }\n if (this.freehand_ &&\n event.type === MapBrowserEventType.POINTERDRAG &&\n this.sketchFeature_ !== null) {\n this.addToDrawing_(event.coordinate);\n pass = false;\n }\n else if (this.freehand_ &&\n event.type === MapBrowserEventType.POINTERDOWN) {\n pass = false;\n }\n else if (move) {\n pass = event.type === MapBrowserEventType.POINTERMOVE;\n if (pass && this.freehand_) {\n this.handlePointerMove_(event);\n if (this.shouldHandle_) {\n // Avoid page scrolling when freehand drawing on mobile\n event.preventDefault();\n }\n }\n else if (event.originalEvent.pointerType == 'mouse' ||\n (event.type === MapBrowserEventType.POINTERDRAG &&\n this.downTimeout_ === undefined)) {\n this.handlePointerMove_(event);\n }\n }\n else if (event.type === MapBrowserEventType.DBLCLICK) {\n pass = false;\n }\n return _super.prototype.handleEvent.call(this, event) && pass;\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} If the event was consumed.\n */\n Draw.prototype.handleDownEvent = function (event) {\n this.shouldHandle_ = !this.freehand_;\n if (this.freehand_) {\n this.downPx_ = event.pixel;\n if (!this.finishCoordinate_) {\n this.startDrawing_(event);\n }\n return true;\n }\n else if (this.condition_(event)) {\n this.lastDragTime_ = Date.now();\n this.downTimeout_ = setTimeout(function () {\n this.handlePointerMove_(new MapBrowserEvent(MapBrowserEventType.POINTERMOVE, event.map, event.originalEvent, false, event.frameState));\n }.bind(this), this.dragVertexDelay_);\n this.downPx_ = event.pixel;\n return true;\n }\n else {\n this.lastDragTime_ = undefined;\n return false;\n }\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} If the event was consumed.\n */\n Draw.prototype.handleUpEvent = function (event) {\n var pass = true;\n if (this.downTimeout_) {\n clearTimeout(this.downTimeout_);\n this.downTimeout_ = undefined;\n }\n this.handlePointerMove_(event);\n var circleMode = this.mode_ === Mode.CIRCLE;\n if (this.shouldHandle_) {\n if (!this.finishCoordinate_) {\n this.startDrawing_(event);\n if (this.mode_ === Mode.POINT) {\n this.finishDrawing();\n }\n }\n else if (this.freehand_ || circleMode) {\n this.finishDrawing();\n }\n else if (this.atFinish_(event)) {\n if (this.finishCondition_(event)) {\n this.finishDrawing();\n }\n }\n else {\n this.addToDrawing_(event.coordinate);\n }\n pass = false;\n }\n else if (this.freehand_) {\n this.abortDrawing();\n }\n if (!pass && this.stopClick_) {\n event.stopPropagation();\n }\n return pass;\n };\n /**\n * Handle move events.\n * @param {import(\"../MapBrowserEvent.js\").default} event A move event.\n * @private\n */\n Draw.prototype.handlePointerMove_ = function (event) {\n if (this.downPx_ &&\n ((!this.freehand_ && this.shouldHandle_) ||\n (this.freehand_ && !this.shouldHandle_))) {\n var downPx = this.downPx_;\n var clickPx = event.pixel;\n var dx = downPx[0] - clickPx[0];\n var dy = downPx[1] - clickPx[1];\n var squaredDistance = dx * dx + dy * dy;\n this.shouldHandle_ = this.freehand_\n ? squaredDistance > this.squaredClickTolerance_\n : squaredDistance <= this.squaredClickTolerance_;\n if (!this.shouldHandle_) {\n return;\n }\n }\n if (this.finishCoordinate_) {\n this.modifyDrawing_(event);\n }\n else {\n this.createOrUpdateSketchPoint_(event);\n }\n };\n /**\n * Determine if an event is within the snapping tolerance of the start coord.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} The event is within the snapping tolerance of the start.\n * @private\n */\n Draw.prototype.atFinish_ = function (event) {\n var at = false;\n if (this.sketchFeature_) {\n var potentiallyDone = false;\n var potentiallyFinishCoordinates = [this.finishCoordinate_];\n if (this.mode_ === Mode.LINE_STRING) {\n potentiallyDone = this.sketchCoords_.length > this.minPoints_;\n }\n else if (this.mode_ === Mode.POLYGON) {\n var sketchCoords = /** @type {PolyCoordType} */ (this.sketchCoords_);\n potentiallyDone = sketchCoords[0].length > this.minPoints_;\n potentiallyFinishCoordinates = [\n sketchCoords[0][0],\n sketchCoords[0][sketchCoords[0].length - 2],\n ];\n }\n if (potentiallyDone) {\n var map = event.map;\n for (var i = 0, ii = potentiallyFinishCoordinates.length; i < ii; i++) {\n var finishCoordinate = potentiallyFinishCoordinates[i];\n var finishPixel = map.getPixelFromCoordinate(finishCoordinate);\n var pixel = event.pixel;\n var dx = pixel[0] - finishPixel[0];\n var dy = pixel[1] - finishPixel[1];\n var snapTolerance = this.freehand_ ? 1 : this.snapTolerance_;\n at = Math.sqrt(dx * dx + dy * dy) <= snapTolerance;\n if (at) {\n this.finishCoordinate_ = finishCoordinate;\n break;\n }\n }\n }\n }\n return at;\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @private\n */\n Draw.prototype.createOrUpdateSketchPoint_ = function (event) {\n var coordinates = event.coordinate.slice();\n if (!this.sketchPoint_) {\n this.sketchPoint_ = new Feature(new Point(coordinates));\n this.updateSketchFeatures_();\n }\n else {\n var sketchPointGeom = this.sketchPoint_.getGeometry();\n sketchPointGeom.setCoordinates(coordinates);\n }\n };\n /**\n * Start the drawing.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @private\n */\n Draw.prototype.startDrawing_ = function (event) {\n var start = event.coordinate;\n var projection = event.map.getView().getProjection();\n this.finishCoordinate_ = start;\n if (this.mode_ === Mode.POINT) {\n this.sketchCoords_ = start.slice();\n }\n else if (this.mode_ === Mode.POLYGON) {\n this.sketchCoords_ = [[start.slice(), start.slice()]];\n this.sketchLineCoords_ = this.sketchCoords_[0];\n }\n else {\n this.sketchCoords_ = [start.slice(), start.slice()];\n }\n if (this.sketchLineCoords_) {\n this.sketchLine_ = new Feature(new LineString(this.sketchLineCoords_));\n }\n var geometry = this.geometryFunction_(this.sketchCoords_, undefined, projection);\n this.sketchFeature_ = new Feature();\n if (this.geometryName_) {\n this.sketchFeature_.setGeometryName(this.geometryName_);\n }\n this.sketchFeature_.setGeometry(geometry);\n this.updateSketchFeatures_();\n this.dispatchEvent(new DrawEvent(DrawEventType.DRAWSTART, this.sketchFeature_));\n };\n /**\n * Modify the drawing.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @private\n */\n Draw.prototype.modifyDrawing_ = function (event) {\n var coordinate = event.coordinate;\n var geometry = this.sketchFeature_.getGeometry();\n var projection = event.map.getView().getProjection();\n var coordinates, last;\n if (this.mode_ === Mode.POINT) {\n last = this.sketchCoords_;\n }\n else if (this.mode_ === Mode.POLYGON) {\n coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_)[0];\n last = coordinates[coordinates.length - 1];\n if (this.atFinish_(event)) {\n // snap to finish\n coordinate = this.finishCoordinate_.slice();\n }\n }\n else {\n coordinates = this.sketchCoords_;\n last = coordinates[coordinates.length - 1];\n }\n last[0] = coordinate[0];\n last[1] = coordinate[1];\n this.geometryFunction_(\n /** @type {!LineCoordType} */ (this.sketchCoords_), geometry, projection);\n if (this.sketchPoint_) {\n var sketchPointGeom = this.sketchPoint_.getGeometry();\n sketchPointGeom.setCoordinates(coordinate);\n }\n /** @type {LineString} */\n var sketchLineGeom;\n if (geometry.getType() == GeometryType.POLYGON &&\n this.mode_ !== Mode.POLYGON) {\n if (!this.sketchLine_) {\n this.sketchLine_ = new Feature();\n }\n var ring = geometry.getLinearRing(0);\n sketchLineGeom = this.sketchLine_.getGeometry();\n if (!sketchLineGeom) {\n sketchLineGeom = new LineString(ring.getFlatCoordinates(), ring.getLayout());\n this.sketchLine_.setGeometry(sketchLineGeom);\n }\n else {\n sketchLineGeom.setFlatCoordinates(ring.getLayout(), ring.getFlatCoordinates());\n sketchLineGeom.changed();\n }\n }\n else if (this.sketchLineCoords_) {\n sketchLineGeom = this.sketchLine_.getGeometry();\n sketchLineGeom.setCoordinates(this.sketchLineCoords_);\n }\n this.updateSketchFeatures_();\n };\n /**\n * Add a new coordinate to the drawing.\n * @param {!PointCoordType} coordinate Coordinate\n * @private\n */\n Draw.prototype.addToDrawing_ = function (coordinate) {\n var geometry = this.sketchFeature_.getGeometry();\n var projection = this.getMap().getView().getProjection();\n var done;\n var coordinates;\n if (this.mode_ === Mode.LINE_STRING) {\n this.finishCoordinate_ = coordinate.slice();\n coordinates = /** @type {LineCoordType} */ (this.sketchCoords_);\n if (coordinates.length >= this.maxPoints_) {\n if (this.freehand_) {\n coordinates.pop();\n }\n else {\n done = true;\n }\n }\n coordinates.push(coordinate.slice());\n this.geometryFunction_(coordinates, geometry, projection);\n }\n else if (this.mode_ === Mode.POLYGON) {\n coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_)[0];\n if (coordinates.length >= this.maxPoints_) {\n if (this.freehand_) {\n coordinates.pop();\n }\n else {\n done = true;\n }\n }\n coordinates.push(coordinate.slice());\n if (done) {\n this.finishCoordinate_ = coordinates[0];\n }\n this.geometryFunction_(this.sketchCoords_, geometry, projection);\n }\n this.updateSketchFeatures_();\n if (done) {\n this.finishDrawing();\n }\n };\n /**\n * Remove last point of the feature currently being drawn.\n * @api\n */\n Draw.prototype.removeLastPoint = function () {\n if (!this.sketchFeature_) {\n return;\n }\n var geometry = this.sketchFeature_.getGeometry();\n var projection = this.getMap().getView().getProjection();\n var coordinates;\n /** @type {LineString} */\n var sketchLineGeom;\n if (this.mode_ === Mode.LINE_STRING) {\n coordinates = /** @type {LineCoordType} */ (this.sketchCoords_);\n coordinates.splice(-2, 1);\n this.geometryFunction_(coordinates, geometry, projection);\n if (coordinates.length >= 2) {\n this.finishCoordinate_ = coordinates[coordinates.length - 2].slice();\n }\n }\n else if (this.mode_ === Mode.POLYGON) {\n coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_)[0];\n coordinates.splice(-2, 1);\n sketchLineGeom = this.sketchLine_.getGeometry();\n sketchLineGeom.setCoordinates(coordinates);\n this.geometryFunction_(this.sketchCoords_, geometry, projection);\n }\n if (coordinates.length === 0) {\n this.abortDrawing();\n }\n this.updateSketchFeatures_();\n };\n /**\n * Stop drawing and add the sketch feature to the target layer.\n * The {@link module:ol/interaction/Draw~DrawEventType.DRAWEND} event is\n * dispatched before inserting the feature.\n * @api\n */\n Draw.prototype.finishDrawing = function () {\n var sketchFeature = this.abortDrawing_();\n if (!sketchFeature) {\n return;\n }\n var coordinates = this.sketchCoords_;\n var geometry = sketchFeature.getGeometry();\n var projection = this.getMap().getView().getProjection();\n if (this.mode_ === Mode.LINE_STRING) {\n // remove the redundant last point\n coordinates.pop();\n this.geometryFunction_(coordinates, geometry, projection);\n }\n else if (this.mode_ === Mode.POLYGON) {\n // remove the redundant last point in ring\n /** @type {PolyCoordType} */ (coordinates)[0].pop();\n this.geometryFunction_(coordinates, geometry, projection);\n coordinates = geometry.getCoordinates();\n }\n // cast multi-part geometries\n if (this.type_ === GeometryType.MULTI_POINT) {\n sketchFeature.setGeometry(new MultiPoint([/** @type {PointCoordType} */ (coordinates)]));\n }\n else if (this.type_ === GeometryType.MULTI_LINE_STRING) {\n sketchFeature.setGeometry(new MultiLineString([/** @type {LineCoordType} */ (coordinates)]));\n }\n else if (this.type_ === GeometryType.MULTI_POLYGON) {\n sketchFeature.setGeometry(new MultiPolygon([/** @type {PolyCoordType} */ (coordinates)]));\n }\n // First dispatch event to allow full set up of feature\n this.dispatchEvent(new DrawEvent(DrawEventType.DRAWEND, sketchFeature));\n // Then insert feature\n if (this.features_) {\n this.features_.push(sketchFeature);\n }\n if (this.source_) {\n this.source_.addFeature(sketchFeature);\n }\n };\n /**\n * Stop drawing without adding the sketch feature to the target layer.\n * @return {Feature} The sketch feature (or null if none).\n * @private\n */\n Draw.prototype.abortDrawing_ = function () {\n this.finishCoordinate_ = null;\n var sketchFeature = this.sketchFeature_;\n this.sketchFeature_ = null;\n this.sketchPoint_ = null;\n this.sketchLine_ = null;\n this.overlay_.getSource().clear(true);\n return sketchFeature;\n };\n /**\n * Stop drawing without adding the sketch feature to the target layer.\n * @api\n */\n Draw.prototype.abortDrawing = function () {\n var sketchFeature = this.abortDrawing_();\n if (sketchFeature) {\n this.dispatchEvent(new DrawEvent(DrawEventType.DRAWABORT, sketchFeature));\n }\n };\n /**\n * Append coordinates to the end of the geometry that is currently being drawn.\n * This can be used when drawing LineStrings or Polygons. Coordinates will\n * either be appended to the current LineString or the outer ring of the current\n * Polygon.\n * @param {!LineCoordType} coordinates Linear coordinates to be appended into\n * the coordinate array.\n * @api\n */\n Draw.prototype.appendCoordinates = function (coordinates) {\n var mode = this.mode_;\n var sketchCoords = [];\n if (mode === Mode.LINE_STRING) {\n sketchCoords = /** @type {LineCoordType} */ this.sketchCoords_;\n }\n else if (mode === Mode.POLYGON) {\n sketchCoords =\n this.sketchCoords_ && this.sketchCoords_.length\n ? /** @type {PolyCoordType} */ (this.sketchCoords_)[0]\n : [];\n }\n // Remove last coordinate from sketch drawing (this coordinate follows cursor position)\n var ending = sketchCoords.pop();\n // Append coordinate list\n for (var i = 0; i < coordinates.length; i++) {\n this.addToDrawing_(coordinates[i]);\n }\n // Duplicate last coordinate for sketch drawing\n this.addToDrawing_(ending);\n };\n /**\n * Initiate draw mode by starting from an existing geometry which will\n * receive new additional points. This only works on features with\n * `LineString` geometries, where the interaction will extend lines by adding\n * points to the end of the coordinates array.\n * This will change the original feature, instead of drawing a copy.\n *\n * The function will dispatch a `drawstart` event.\n *\n * @param {!Feature} feature Feature to be extended.\n * @api\n */\n Draw.prototype.extend = function (feature) {\n var geometry = feature.getGeometry();\n var lineString = geometry;\n this.sketchFeature_ = feature;\n this.sketchCoords_ = lineString.getCoordinates();\n var last = this.sketchCoords_[this.sketchCoords_.length - 1];\n this.finishCoordinate_ = last.slice();\n this.sketchCoords_.push(last.slice());\n this.updateSketchFeatures_();\n this.dispatchEvent(new DrawEvent(DrawEventType.DRAWSTART, this.sketchFeature_));\n };\n /**\n * Redraw the sketch features.\n * @private\n */\n Draw.prototype.updateSketchFeatures_ = function () {\n var sketchFeatures = [];\n if (this.sketchFeature_) {\n sketchFeatures.push(this.sketchFeature_);\n }\n if (this.sketchLine_) {\n sketchFeatures.push(this.sketchLine_);\n }\n if (this.sketchPoint_) {\n sketchFeatures.push(this.sketchPoint_);\n }\n var overlaySource = this.overlay_.getSource();\n overlaySource.clear(true);\n overlaySource.addFeatures(sketchFeatures);\n };\n /**\n * @private\n */\n Draw.prototype.updateState_ = function () {\n var map = this.getMap();\n var active = this.getActive();\n if (!map || !active) {\n this.abortDrawing();\n }\n this.overlay_.setMap(active ? map : null);\n };\n return Draw;\n}(PointerInteraction));\n/**\n * @return {import(\"../style/Style.js\").StyleFunction} Styles.\n */\nfunction getDefaultStyleFunction() {\n var styles = createEditingStyle();\n return function (feature, resolution) {\n return styles[feature.getGeometry().getType()];\n };\n}\n/**\n * Create a `geometryFunction` for `type: 'Circle'` that will create a regular\n * polygon with a user specified number of sides and start angle instead of an\n * `import(\"../geom/Circle.js\").Circle` geometry.\n * @param {number=} opt_sides Number of sides of the regular polygon. Default is\n * 32.\n * @param {number=} opt_angle Angle of the first point in radians. 0 means East.\n * Default is the angle defined by the heading from the center of the\n * regular polygon to the current pointer position.\n * @return {GeometryFunction} Function that draws a\n * polygon.\n * @api\n */\nexport function createRegularPolygon(opt_sides, opt_angle) {\n return function (coordinates, opt_geometry, projection) {\n var center = fromUserCoordinate(\n /** @type {LineCoordType} */ (coordinates)[0], projection);\n var end = fromUserCoordinate(\n /** @type {LineCoordType} */ (coordinates)[1], projection);\n var radius = Math.sqrt(squaredCoordinateDistance(center, end));\n var geometry = opt_geometry\n ? /** @type {Polygon} */ (opt_geometry)\n : fromCircle(new Circle(center), opt_sides);\n var angle = opt_angle;\n if (!opt_angle) {\n var x = end[0] - center[0];\n var y = end[1] - center[1];\n angle = Math.atan(y / x) - (x < 0 ? Math.PI : 0);\n }\n makeRegular(geometry, center, radius, angle);\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry.transform(projection, userProjection);\n }\n return geometry;\n };\n}\n/**\n * Create a `geometryFunction` that will create a box-shaped polygon (aligned\n * with the coordinate system axes). Use this with the draw interaction and\n * `type: 'Circle'` to return a box instead of a circle geometry.\n * @return {GeometryFunction} Function that draws a box-shaped polygon.\n * @api\n */\nexport function createBox() {\n return function (coordinates, opt_geometry, projection) {\n var extent = boundingExtent(\n /** @type {LineCoordType} */ (coordinates).map(function (coordinate) {\n return fromUserCoordinate(coordinate, projection);\n }));\n var boxCoordinates = [\n [\n getBottomLeft(extent),\n getBottomRight(extent),\n getTopRight(extent),\n getTopLeft(extent),\n getBottomLeft(extent),\n ],\n ];\n var geometry = opt_geometry;\n if (geometry) {\n geometry.setCoordinates(boxCoordinates);\n }\n else {\n geometry = new Polygon(boxCoordinates);\n }\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry.transform(projection, userProjection);\n }\n return geometry;\n };\n}\n/**\n * Get the drawing mode. The mode for mult-part geometries is the same as for\n * their single-part cousins.\n * @param {import(\"../geom/GeometryType.js\").default} type Geometry type.\n * @return {Mode} Drawing mode.\n */\nfunction getMode(type) {\n var mode;\n if (type === GeometryType.POINT || type === GeometryType.MULTI_POINT) {\n mode = Mode.POINT;\n }\n else if (type === GeometryType.LINE_STRING ||\n type === GeometryType.MULTI_LINE_STRING) {\n mode = Mode.LINE_STRING;\n }\n else if (type === GeometryType.POLYGON ||\n type === GeometryType.MULTI_POLYGON) {\n mode = Mode.POLYGON;\n }\n else if (type === GeometryType.CIRCLE) {\n mode = Mode.CIRCLE;\n }\n return /** @type {!Mode} */ (mode);\n}\nexport default Draw;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Snap\n */\nimport CollectionEventType from '../CollectionEventType.js';\nimport EventType from '../events/EventType.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport PointerInteraction from './Pointer.js';\nimport RBush from '../structs/RBush.js';\nimport VectorEventType from '../source/VectorEventType.js';\nimport { FALSE, TRUE } from '../functions.js';\nimport { boundingExtent, createEmpty } from '../extent.js';\nimport { closestOnCircle, closestOnSegment, distance as coordinateDistance, squaredDistance as squaredCoordinateDistance, squaredDistanceToSegment, } from '../coordinate.js';\nimport { fromCircle } from '../geom/Polygon.js';\nimport { fromUserCoordinate, getUserProjection, toUserCoordinate, } from '../proj.js';\nimport { getUid } from '../util.js';\nimport { getValues } from '../obj.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {Object} Result\n * @property {boolean} snapped\n * @property {import(\"../coordinate.js\").Coordinate|null} vertex\n * @property {import(\"../pixel.js\").Pixel|null} vertexPixel\n */\n/**\n * @typedef {Object} SegmentData\n * @property {import(\"../Feature.js\").default} feature\n * @property {Array} segment\n */\n/**\n * @typedef {Object} Options\n * @property {import(\"../Collection.js\").default} [features] Snap to these features. Either this option or source should be provided.\n * @property {boolean} [edge=true] Snap to edges.\n * @property {boolean} [vertex=true] Snap to vertices.\n * @property {number} [pixelTolerance=10] Pixel tolerance for considering the pointer close enough to a segment or\n * vertex for snapping.\n * @property {import(\"../source/Vector.js\").default} [source] Snap to features from this source. Either this option or features should be provided\n */\n/**\n * @param {import(\"../source/Vector.js\").VectorSourceEvent|import(\"../Collection.js\").CollectionEvent} evt Event.\n * @return {import(\"../Feature.js\").default} Feature.\n */\nfunction getFeatureFromEvent(evt) {\n if (\n /** @type {import(\"../source/Vector.js\").VectorSourceEvent} */ (evt).feature) {\n return /** @type {import(\"../source/Vector.js\").VectorSourceEvent} */ (evt)\n .feature;\n }\n else if (\n /** @type {import(\"../Collection.js\").CollectionEvent} */ (evt).element) {\n return /** @type {import(\"../Feature.js\").default} */ (\n /** @type {import(\"../Collection.js\").CollectionEvent} */ (evt).element);\n }\n}\nvar tempSegment = [];\n/**\n * @classdesc\n * Handles snapping of vector features while modifying or drawing them. The\n * features can come from a {@link module:ol/source/Vector} or {@link module:ol/Collection~Collection}\n * Any interaction object that allows the user to interact\n * with the features using the mouse can benefit from the snapping, as long\n * as it is added before.\n *\n * The snap interaction modifies map browser event `coordinate` and `pixel`\n * properties to force the snap to occur to any interaction that them.\n *\n * Example:\n *\n * import Snap from 'ol/interaction/Snap';\n *\n * const snap = new Snap({\n * source: source\n * });\n *\n * map.addInteraction(snap);\n *\n * @api\n */\nvar Snap = /** @class */ (function (_super) {\n __extends(Snap, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Snap(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (options);\n if (!pointerOptions.handleDownEvent) {\n pointerOptions.handleDownEvent = TRUE;\n }\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n _this = _super.call(this, pointerOptions) || this;\n /**\n * @type {import(\"../source/Vector.js\").default}\n * @private\n */\n _this.source_ = options.source ? options.source : null;\n /**\n * @private\n * @type {boolean}\n */\n _this.vertex_ = options.vertex !== undefined ? options.vertex : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.edge_ = options.edge !== undefined ? options.edge : true;\n /**\n * @type {import(\"../Collection.js\").default}\n * @private\n */\n _this.features_ = options.features ? options.features : null;\n /**\n * @type {Array}\n * @private\n */\n _this.featuresListenerKeys_ = [];\n /**\n * @type {Object}\n * @private\n */\n _this.featureChangeListenerKeys_ = {};\n /**\n * Extents are preserved so indexed segment can be quickly removed\n * when its feature geometry changes\n * @type {Object}\n * @private\n */\n _this.indexedFeaturesExtents_ = {};\n /**\n * If a feature geometry changes while a pointer drag|move event occurs, the\n * feature doesn't get updated right away. It will be at the next 'pointerup'\n * event fired.\n * @type {!Object}\n * @private\n */\n _this.pendingFeatures_ = {};\n /**\n * @type {number}\n * @private\n */\n _this.pixelTolerance_ =\n options.pixelTolerance !== undefined ? options.pixelTolerance : 10;\n /**\n * Segment RTree for each layer\n * @type {import(\"../structs/RBush.js\").default}\n * @private\n */\n _this.rBush_ = new RBush();\n /**\n * @const\n * @private\n * @type {Object}\n */\n _this.SEGMENT_WRITERS_ = {\n 'Point': _this.writePointGeometry_.bind(_this),\n 'LineString': _this.writeLineStringGeometry_.bind(_this),\n 'LinearRing': _this.writeLineStringGeometry_.bind(_this),\n 'Polygon': _this.writePolygonGeometry_.bind(_this),\n 'MultiPoint': _this.writeMultiPointGeometry_.bind(_this),\n 'MultiLineString': _this.writeMultiLineStringGeometry_.bind(_this),\n 'MultiPolygon': _this.writeMultiPolygonGeometry_.bind(_this),\n 'GeometryCollection': _this.writeGeometryCollectionGeometry_.bind(_this),\n 'Circle': _this.writeCircleGeometry_.bind(_this),\n };\n return _this;\n }\n /**\n * Add a feature to the collection of features that we may snap to.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {boolean=} opt_listen Whether to listen to the feature change or not\n * Defaults to `true`.\n * @api\n */\n Snap.prototype.addFeature = function (feature, opt_listen) {\n var register = opt_listen !== undefined ? opt_listen : true;\n var feature_uid = getUid(feature);\n var geometry = feature.getGeometry();\n if (geometry) {\n var segmentWriter = this.SEGMENT_WRITERS_[geometry.getType()];\n if (segmentWriter) {\n this.indexedFeaturesExtents_[feature_uid] = geometry.getExtent(createEmpty());\n segmentWriter(feature, geometry);\n }\n }\n if (register) {\n this.featureChangeListenerKeys_[feature_uid] = listen(feature, EventType.CHANGE, this.handleFeatureChange_, this);\n }\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @private\n */\n Snap.prototype.forEachFeatureAdd_ = function (feature) {\n this.addFeature(feature);\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @private\n */\n Snap.prototype.forEachFeatureRemove_ = function (feature) {\n this.removeFeature(feature);\n };\n /**\n * @return {import(\"../Collection.js\").default|Array} Features.\n * @private\n */\n Snap.prototype.getFeatures_ = function () {\n var features;\n if (this.features_) {\n features = this.features_;\n }\n else if (this.source_) {\n features = this.source_.getFeatures();\n }\n return features;\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} evt Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n Snap.prototype.handleEvent = function (evt) {\n var result = this.snapTo(evt.pixel, evt.coordinate, evt.map);\n if (result.snapped) {\n evt.coordinate = result.vertex.slice(0, 2);\n evt.pixel = result.vertexPixel;\n }\n return _super.prototype.handleEvent.call(this, evt);\n };\n /**\n * @param {import(\"../source/Vector.js\").VectorSourceEvent|import(\"../Collection.js\").CollectionEvent} evt Event.\n * @private\n */\n Snap.prototype.handleFeatureAdd_ = function (evt) {\n var feature = getFeatureFromEvent(evt);\n this.addFeature(feature);\n };\n /**\n * @param {import(\"../source/Vector.js\").VectorSourceEvent|import(\"../Collection.js\").CollectionEvent} evt Event.\n * @private\n */\n Snap.prototype.handleFeatureRemove_ = function (evt) {\n var feature = getFeatureFromEvent(evt);\n this.removeFeature(feature);\n };\n /**\n * @param {import(\"../events/Event.js\").default} evt Event.\n * @private\n */\n Snap.prototype.handleFeatureChange_ = function (evt) {\n var feature = /** @type {import(\"../Feature.js\").default} */ (evt.target);\n if (this.handlingDownUpSequence) {\n var uid = getUid(feature);\n if (!(uid in this.pendingFeatures_)) {\n this.pendingFeatures_[uid] = feature;\n }\n }\n else {\n this.updateFeature_(feature);\n }\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n * @return {boolean} If the event was consumed.\n */\n Snap.prototype.handleUpEvent = function (evt) {\n var featuresToUpdate = getValues(this.pendingFeatures_);\n if (featuresToUpdate.length) {\n featuresToUpdate.forEach(this.updateFeature_.bind(this));\n this.pendingFeatures_ = {};\n }\n return false;\n };\n /**\n * Remove a feature from the collection of features that we may snap to.\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {boolean=} opt_unlisten Whether to unlisten to the feature change\n * or not. Defaults to `true`.\n * @api\n */\n Snap.prototype.removeFeature = function (feature, opt_unlisten) {\n var unregister = opt_unlisten !== undefined ? opt_unlisten : true;\n var feature_uid = getUid(feature);\n var extent = this.indexedFeaturesExtents_[feature_uid];\n if (extent) {\n var rBush = this.rBush_;\n var nodesToRemove_1 = [];\n rBush.forEachInExtent(extent, function (node) {\n if (feature === node.feature) {\n nodesToRemove_1.push(node);\n }\n });\n for (var i = nodesToRemove_1.length - 1; i >= 0; --i) {\n rBush.remove(nodesToRemove_1[i]);\n }\n }\n if (unregister) {\n unlistenByKey(this.featureChangeListenerKeys_[feature_uid]);\n delete this.featureChangeListenerKeys_[feature_uid];\n }\n };\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Snap.prototype.setMap = function (map) {\n var currentMap = this.getMap();\n var keys = this.featuresListenerKeys_;\n var features = /** @type {Array} */ (this.getFeatures_());\n if (currentMap) {\n keys.forEach(unlistenByKey);\n keys.length = 0;\n features.forEach(this.forEachFeatureRemove_.bind(this));\n }\n _super.prototype.setMap.call(this, map);\n if (map) {\n if (this.features_) {\n keys.push(listen(this.features_, CollectionEventType.ADD, this.handleFeatureAdd_, this), listen(this.features_, CollectionEventType.REMOVE, this.handleFeatureRemove_, this));\n }\n else if (this.source_) {\n keys.push(listen(this.source_, VectorEventType.ADDFEATURE, this.handleFeatureAdd_, this), listen(this.source_, VectorEventType.REMOVEFEATURE, this.handleFeatureRemove_, this));\n }\n features.forEach(this.forEachFeatureAdd_.bind(this));\n }\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel\n * @param {import(\"../coordinate.js\").Coordinate} pixelCoordinate Coordinate\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @return {Result} Snap result\n */\n Snap.prototype.snapTo = function (pixel, pixelCoordinate, map) {\n var lowerLeft = map.getCoordinateFromPixel([\n pixel[0] - this.pixelTolerance_,\n pixel[1] + this.pixelTolerance_,\n ]);\n var upperRight = map.getCoordinateFromPixel([\n pixel[0] + this.pixelTolerance_,\n pixel[1] - this.pixelTolerance_,\n ]);\n var box = boundingExtent([lowerLeft, upperRight]);\n var segments = this.rBush_.getInExtent(box);\n // If snapping on vertices only, don't consider circles\n if (this.vertex_ && !this.edge_) {\n segments = segments.filter(function (segment) {\n return segment.feature.getGeometry().getType() !== GeometryType.CIRCLE;\n });\n }\n var snapped = false;\n var vertex = null;\n var vertexPixel = null;\n if (segments.length === 0) {\n return {\n snapped: snapped,\n vertex: vertex,\n vertexPixel: vertexPixel,\n };\n }\n var projection = map.getView().getProjection();\n var projectedCoordinate = fromUserCoordinate(pixelCoordinate, projection);\n var closestSegmentData;\n var minSquaredDistance = Infinity;\n for (var i = 0; i < segments.length; ++i) {\n var segmentData = segments[i];\n tempSegment[0] = fromUserCoordinate(segmentData.segment[0], projection);\n tempSegment[1] = fromUserCoordinate(segmentData.segment[1], projection);\n var delta = squaredDistanceToSegment(projectedCoordinate, tempSegment);\n if (delta < minSquaredDistance) {\n closestSegmentData = segmentData;\n minSquaredDistance = delta;\n }\n }\n var closestSegment = closestSegmentData.segment;\n if (this.vertex_ && !this.edge_) {\n var pixel1 = map.getPixelFromCoordinate(closestSegment[0]);\n var pixel2 = map.getPixelFromCoordinate(closestSegment[1]);\n var squaredDist1 = squaredCoordinateDistance(pixel, pixel1);\n var squaredDist2 = squaredCoordinateDistance(pixel, pixel2);\n var dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));\n if (dist <= this.pixelTolerance_) {\n snapped = true;\n vertex =\n squaredDist1 > squaredDist2 ? closestSegment[1] : closestSegment[0];\n vertexPixel = map.getPixelFromCoordinate(vertex);\n }\n }\n else if (this.edge_) {\n var isCircle = closestSegmentData.feature.getGeometry().getType() ===\n GeometryType.CIRCLE;\n if (isCircle) {\n var circleGeometry = closestSegmentData.feature.getGeometry();\n var userProjection = getUserProjection();\n if (userProjection) {\n circleGeometry = circleGeometry\n .clone()\n .transform(userProjection, projection);\n }\n vertex = toUserCoordinate(closestOnCircle(projectedCoordinate, \n /** @type {import(\"../geom/Circle.js\").default} */ (circleGeometry)), projection);\n }\n else {\n tempSegment[0] = fromUserCoordinate(closestSegment[0], projection);\n tempSegment[1] = fromUserCoordinate(closestSegment[1], projection);\n vertex = toUserCoordinate(closestOnSegment(projectedCoordinate, tempSegment), projection);\n }\n vertexPixel = map.getPixelFromCoordinate(vertex);\n if (coordinateDistance(pixel, vertexPixel) <= this.pixelTolerance_) {\n snapped = true;\n if (this.vertex_ && !isCircle) {\n var pixel1 = map.getPixelFromCoordinate(closestSegment[0]);\n var pixel2 = map.getPixelFromCoordinate(closestSegment[1]);\n var squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);\n var squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);\n var dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));\n if (dist <= this.pixelTolerance_) {\n vertex =\n squaredDist1 > squaredDist2\n ? closestSegment[1]\n : closestSegment[0];\n vertexPixel = map.getPixelFromCoordinate(vertex);\n }\n }\n }\n }\n if (snapped) {\n vertexPixel = [Math.round(vertexPixel[0]), Math.round(vertexPixel[1])];\n }\n return {\n snapped: snapped,\n vertex: vertex,\n vertexPixel: vertexPixel,\n };\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @private\n */\n Snap.prototype.updateFeature_ = function (feature) {\n this.removeFeature(feature, false);\n this.addFeature(feature, false);\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {import(\"../geom/Circle.js\").default} geometry Geometry.\n * @private\n */\n Snap.prototype.writeCircleGeometry_ = function (feature, geometry) {\n var projection = this.getMap().getView().getProjection();\n var circleGeometry = geometry;\n var userProjection = getUserProjection();\n if (userProjection) {\n circleGeometry = /** @type {import(\"../geom/Circle.js\").default} */ (circleGeometry\n .clone()\n .transform(userProjection, projection));\n }\n var polygon = fromCircle(circleGeometry);\n if (userProjection) {\n polygon.transform(projection, userProjection);\n }\n var coordinates = polygon.getCoordinates()[0];\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n var segmentData = {\n feature: feature,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @private\n */\n Snap.prototype.writeGeometryCollectionGeometry_ = function (feature, geometry) {\n var geometries = geometry.getGeometriesArray();\n for (var i = 0; i < geometries.length; ++i) {\n var segmentWriter = this.SEGMENT_WRITERS_[geometries[i].getType()];\n if (segmentWriter) {\n segmentWriter(feature, geometries[i]);\n }\n }\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {import(\"../geom/LineString.js\").default} geometry Geometry.\n * @private\n */\n Snap.prototype.writeLineStringGeometry_ = function (feature, geometry) {\n var coordinates = geometry.getCoordinates();\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n var segmentData = {\n feature: feature,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {import(\"../geom/MultiLineString.js\").default} geometry Geometry.\n * @private\n */\n Snap.prototype.writeMultiLineStringGeometry_ = function (feature, geometry) {\n var lines = geometry.getCoordinates();\n for (var j = 0, jj = lines.length; j < jj; ++j) {\n var coordinates = lines[j];\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n var segmentData = {\n feature: feature,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n }\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {import(\"../geom/MultiPoint.js\").default} geometry Geometry.\n * @private\n */\n Snap.prototype.writeMultiPointGeometry_ = function (feature, geometry) {\n var points = geometry.getCoordinates();\n for (var i = 0, ii = points.length; i < ii; ++i) {\n var coordinates = points[i];\n var segmentData = {\n feature: feature,\n segment: [coordinates, coordinates],\n };\n this.rBush_.insert(geometry.getExtent(), segmentData);\n }\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @private\n */\n Snap.prototype.writeMultiPolygonGeometry_ = function (feature, geometry) {\n var polygons = geometry.getCoordinates();\n for (var k = 0, kk = polygons.length; k < kk; ++k) {\n var rings = polygons[k];\n for (var j = 0, jj = rings.length; j < jj; ++j) {\n var coordinates = rings[j];\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n var segmentData = {\n feature: feature,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n }\n }\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {import(\"../geom/Point.js\").default} geometry Geometry.\n * @private\n */\n Snap.prototype.writePointGeometry_ = function (feature, geometry) {\n var coordinates = geometry.getCoordinates();\n var segmentData = {\n feature: feature,\n segment: [coordinates, coordinates],\n };\n this.rBush_.insert(geometry.getExtent(), segmentData);\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature\n * @param {import(\"../geom/Polygon.js\").default} geometry Geometry.\n * @private\n */\n Snap.prototype.writePolygonGeometry_ = function (feature, geometry) {\n var rings = geometry.getCoordinates();\n for (var j = 0, jj = rings.length; j < jj; ++j) {\n var coordinates = rings[j];\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n var segmentData = {\n feature: feature,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n }\n };\n return Snap;\n}(PointerInteraction));\nexport default Snap;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Modify\n */\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport Feature from '../Feature.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Point from '../geom/Point.js';\nimport PointerInteraction from './Pointer.js';\nimport RBush from '../structs/RBush.js';\nimport VectorEventType from '../source/VectorEventType.js';\nimport VectorLayer from '../layer/Vector.js';\nimport VectorSource from '../source/Vector.js';\nimport { altKeyOnly, always, primaryAction, singleClick, } from '../events/condition.js';\nimport { boundingExtent, buffer as bufferExtent, createOrUpdateFromCoordinate as createExtent, } from '../extent.js';\nimport { closestOnSegment, distance as coordinateDistance, equals as coordinatesEqual, squaredDistance as squaredCoordinateDistance, squaredDistanceToSegment, } from '../coordinate.js';\nimport { createEditingStyle } from '../style/Style.js';\nimport { equals } from '../array.js';\nimport { fromCircle } from '../geom/Polygon.js';\nimport { fromUserCoordinate, fromUserExtent, getUserProjection, toUserCoordinate, toUserExtent, } from '../proj.js';\nimport { getUid } from '../util.js';\n/**\n * The segment index assigned to a circle's center when\n * breaking up a circle into ModifySegmentDataType segments.\n * @type {number}\n */\nvar CIRCLE_CENTER_INDEX = 0;\n/**\n * The segment index assigned to a circle's circumference when\n * breaking up a circle into ModifySegmentDataType segments.\n * @type {number}\n */\nvar CIRCLE_CIRCUMFERENCE_INDEX = 1;\nvar tempExtent = [0, 0, 0, 0];\nvar tempSegment = [];\n/**\n * @enum {string}\n */\nvar ModifyEventType = {\n /**\n * Triggered upon feature modification start\n * @event ModifyEvent#modifystart\n * @api\n */\n MODIFYSTART: 'modifystart',\n /**\n * Triggered upon feature modification end\n * @event ModifyEvent#modifyend\n * @api\n */\n MODIFYEND: 'modifyend',\n};\n/**\n * @typedef {Object} SegmentData\n * @property {Array} [depth]\n * @property {Feature} feature\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry\n * @property {number} [index]\n * @property {Array} segment\n * @property {Array} [featureSegments]\n */\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event will be considered to add or move a\n * vertex to the sketch. Default is\n * {@link module:ol/events/condition~primaryAction}.\n * @property {import(\"../events/condition.js\").Condition} [deleteCondition] A function\n * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. By default,\n * {@link module:ol/events/condition~singleClick} with\n * {@link module:ol/events/condition~altKeyOnly} results in a vertex deletion.\n * @property {import(\"../events/condition.js\").Condition} [insertVertexCondition] A\n * function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and\n * returns a boolean to indicate whether a new vertex should be added to the sketch\n * features. Default is {@link module:ol/events/condition~always}.\n * @property {number} [pixelTolerance=10] Pixel tolerance for considering the\n * pointer close enough to a segment or vertex for editing.\n * @property {import(\"../style/Style.js\").StyleLike} [style]\n * Style used for the features being modified. By default the default edit\n * style is used (see {@link module:ol/style}).\n * @property {VectorSource} [source] The vector source with\n * features to modify. If a vector source is not provided, a feature collection\n * must be provided with the features option.\n * @property {Collection} [features]\n * The features the interaction works on. If a feature collection is not\n * provided, a vector source must be provided with the source option.\n * @property {boolean} [wrapX=false] Wrap the world horizontally on the sketch\n * overlay.\n */\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Modify~Modify} instances are\n * instances of this type.\n */\nvar ModifyEvent = /** @class */ (function (_super) {\n __extends(ModifyEvent, _super);\n /**\n * @param {ModifyEventType} type Type.\n * @param {Collection} features\n * The features modified.\n * @param {import(\"../MapBrowserEvent.js\").default} MapBrowserEvent\n * Associated {@link module:ol/MapBrowserEvent}.\n */\n function ModifyEvent(type, features, MapBrowserEvent) {\n var _this = _super.call(this, type) || this;\n /**\n * The features being modified.\n * @type {Collection}\n * @api\n */\n _this.features = features;\n /**\n * Associated {@link module:ol/MapBrowserEvent}.\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @api\n */\n _this.mapBrowserEvent = MapBrowserEvent;\n return _this;\n }\n return ModifyEvent;\n}(Event));\nexport { ModifyEvent };\n/**\n * @classdesc\n * Interaction for modifying feature geometries. To modify features that have\n * been added to an existing source, construct the modify interaction with the\n * `source` option. If you want to modify features in a collection (for example,\n * the collection used by a select interaction), construct the interaction with\n * the `features` option. The interaction must be constructed with either a\n * `source` or `features` option.\n *\n * By default, the interaction will allow deletion of vertices when the `alt`\n * key is pressed. To configure the interaction with a different condition\n * for deletion, use the `deleteCondition` option.\n * @fires ModifyEvent\n * @api\n */\nvar Modify = /** @class */ (function (_super) {\n __extends(Modify, _super);\n /**\n * @param {Options} options Options.\n */\n function Modify(options) {\n var _this = _super.call(this, /** @type {import(\"./Pointer.js\").Options} */ (options)) || this;\n /** @private */\n _this.boundHandleFeatureChange_ = _this.handleFeatureChange_.bind(_this);\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : primaryAction;\n /**\n * @private\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n * @return {boolean} Combined condition result.\n */\n _this.defaultDeleteCondition_ = function (mapBrowserEvent) {\n return altKeyOnly(mapBrowserEvent) && singleClick(mapBrowserEvent);\n };\n /**\n * @type {import(\"../events/condition.js\").Condition}\n * @private\n */\n _this.deleteCondition_ = options.deleteCondition\n ? options.deleteCondition\n : _this.defaultDeleteCondition_;\n /**\n * @type {import(\"../events/condition.js\").Condition}\n * @private\n */\n _this.insertVertexCondition_ = options.insertVertexCondition\n ? options.insertVertexCondition\n : always;\n /**\n * Editing vertex.\n * @type {Feature}\n * @private\n */\n _this.vertexFeature_ = null;\n /**\n * Segments intersecting {@link this.vertexFeature_} by segment uid.\n * @type {Object}\n * @private\n */\n _this.vertexSegments_ = null;\n /**\n * @type {import(\"../pixel.js\").Pixel}\n * @private\n */\n _this.lastPixel_ = [0, 0];\n /**\n * Tracks if the next `singleclick` event should be ignored to prevent\n * accidental deletion right after vertex creation.\n * @type {boolean}\n * @private\n */\n _this.ignoreNextSingleClick_ = false;\n /**\n * @type {boolean}\n * @private\n */\n _this.modified_ = false;\n /**\n * Segment RTree for each layer\n * @type {RBush}\n * @private\n */\n _this.rBush_ = new RBush();\n /**\n * @type {number}\n * @private\n */\n _this.pixelTolerance_ =\n options.pixelTolerance !== undefined ? options.pixelTolerance : 10;\n /**\n * @type {boolean}\n * @private\n */\n _this.snappedToVertex_ = false;\n /**\n * Indicate whether the interaction is currently changing a feature's\n * coordinates.\n * @type {boolean}\n * @private\n */\n _this.changingFeature_ = false;\n /**\n * @type {Array}\n * @private\n */\n _this.dragSegments_ = [];\n /**\n * Draw overlay where sketch features are drawn.\n * @type {VectorLayer}\n * @private\n */\n _this.overlay_ = new VectorLayer({\n source: new VectorSource({\n useSpatialIndex: false,\n wrapX: !!options.wrapX,\n }),\n style: options.style ? options.style : getDefaultStyleFunction(),\n updateWhileAnimating: true,\n updateWhileInteracting: true,\n });\n /**\n * @const\n * @private\n * @type {!Object}\n */\n _this.SEGMENT_WRITERS_ = {\n 'Point': _this.writePointGeometry_.bind(_this),\n 'LineString': _this.writeLineStringGeometry_.bind(_this),\n 'LinearRing': _this.writeLineStringGeometry_.bind(_this),\n 'Polygon': _this.writePolygonGeometry_.bind(_this),\n 'MultiPoint': _this.writeMultiPointGeometry_.bind(_this),\n 'MultiLineString': _this.writeMultiLineStringGeometry_.bind(_this),\n 'MultiPolygon': _this.writeMultiPolygonGeometry_.bind(_this),\n 'Circle': _this.writeCircleGeometry_.bind(_this),\n 'GeometryCollection': _this.writeGeometryCollectionGeometry_.bind(_this),\n };\n /**\n * @type {VectorSource}\n * @private\n */\n _this.source_ = null;\n var features;\n if (options.source) {\n _this.source_ = options.source;\n features = new Collection(_this.source_.getFeatures());\n _this.source_.addEventListener(VectorEventType.ADDFEATURE, _this.handleSourceAdd_.bind(_this));\n _this.source_.addEventListener(VectorEventType.REMOVEFEATURE, _this.handleSourceRemove_.bind(_this));\n }\n else {\n features = options.features;\n }\n if (!features) {\n throw new Error('The modify interaction requires features or a source');\n }\n /**\n * @type {Collection}\n * @private\n */\n _this.features_ = features;\n _this.features_.forEach(_this.addFeature_.bind(_this));\n _this.features_.addEventListener(CollectionEventType.ADD, _this.handleFeatureAdd_.bind(_this));\n _this.features_.addEventListener(CollectionEventType.REMOVE, _this.handleFeatureRemove_.bind(_this));\n /**\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @private\n */\n _this.lastPointerEvent_ = null;\n return _this;\n }\n /**\n * @param {Feature} feature Feature.\n * @private\n */\n Modify.prototype.addFeature_ = function (feature) {\n var geometry = feature.getGeometry();\n if (geometry) {\n var writer = this.SEGMENT_WRITERS_[geometry.getType()];\n if (writer) {\n writer(feature, geometry);\n }\n }\n var map = this.getMap();\n if (map && map.isRendered() && this.getActive()) {\n this.handlePointerAtPixel_(this.lastPixel_, map);\n }\n feature.addEventListener(EventType.CHANGE, this.boundHandleFeatureChange_);\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} evt Map browser event\n * @private\n */\n Modify.prototype.willModifyFeatures_ = function (evt) {\n if (!this.modified_) {\n this.modified_ = true;\n this.dispatchEvent(new ModifyEvent(ModifyEventType.MODIFYSTART, this.features_, evt));\n }\n };\n /**\n * @param {Feature} feature Feature.\n * @private\n */\n Modify.prototype.removeFeature_ = function (feature) {\n this.removeFeatureSegmentData_(feature);\n // Remove the vertex feature if the collection of canditate features is empty.\n if (this.vertexFeature_ && this.features_.getLength() === 0) {\n this.overlay_.getSource().removeFeature(this.vertexFeature_);\n this.vertexFeature_ = null;\n }\n feature.removeEventListener(EventType.CHANGE, this.boundHandleFeatureChange_);\n };\n /**\n * @param {Feature} feature Feature.\n * @private\n */\n Modify.prototype.removeFeatureSegmentData_ = function (feature) {\n var rBush = this.rBush_;\n /** @type {Array} */\n var nodesToRemove = [];\n rBush.forEach(\n /**\n * @param {SegmentData} node RTree node.\n */\n function (node) {\n if (feature === node.feature) {\n nodesToRemove.push(node);\n }\n });\n for (var i = nodesToRemove.length - 1; i >= 0; --i) {\n var nodeToRemove = nodesToRemove[i];\n for (var j = this.dragSegments_.length - 1; j >= 0; --j) {\n if (this.dragSegments_[j][0] === nodeToRemove) {\n this.dragSegments_.splice(j, 1);\n }\n }\n rBush.remove(nodeToRemove);\n }\n };\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n Modify.prototype.setActive = function (active) {\n if (this.vertexFeature_ && !active) {\n this.overlay_.getSource().removeFeature(this.vertexFeature_);\n this.vertexFeature_ = null;\n }\n _super.prototype.setActive.call(this, active);\n };\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Modify.prototype.setMap = function (map) {\n this.overlay_.setMap(map);\n _super.prototype.setMap.call(this, map);\n };\n /**\n * Get the overlay layer that this interaction renders sketch features to.\n * @return {VectorLayer} Overlay layer.\n * @api\n */\n Modify.prototype.getOverlay = function () {\n return this.overlay_;\n };\n /**\n * @param {import(\"../source/Vector.js\").VectorSourceEvent} event Event.\n * @private\n */\n Modify.prototype.handleSourceAdd_ = function (event) {\n if (event.feature) {\n this.features_.push(event.feature);\n }\n };\n /**\n * @param {import(\"../source/Vector.js\").VectorSourceEvent} event Event.\n * @private\n */\n Modify.prototype.handleSourceRemove_ = function (event) {\n if (event.feature) {\n this.features_.remove(event.feature);\n }\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} evt Event.\n * @private\n */\n Modify.prototype.handleFeatureAdd_ = function (evt) {\n this.addFeature_(/** @type {Feature} */ (evt.element));\n };\n /**\n * @param {import(\"../events/Event.js\").default} evt Event.\n * @private\n */\n Modify.prototype.handleFeatureChange_ = function (evt) {\n if (!this.changingFeature_) {\n var feature = /** @type {Feature} */ (evt.target);\n this.removeFeature_(feature);\n this.addFeature_(feature);\n }\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} evt Event.\n * @private\n */\n Modify.prototype.handleFeatureRemove_ = function (evt) {\n var feature = /** @type {Feature} */ (evt.element);\n this.removeFeature_(feature);\n };\n /**\n * @param {Feature} feature Feature\n * @param {Point} geometry Geometry.\n * @private\n */\n Modify.prototype.writePointGeometry_ = function (feature, geometry) {\n var coordinates = geometry.getCoordinates();\n /** @type {SegmentData} */\n var segmentData = {\n feature: feature,\n geometry: geometry,\n segment: [coordinates, coordinates],\n };\n this.rBush_.insert(geometry.getExtent(), segmentData);\n };\n /**\n * @param {Feature} feature Feature\n * @param {import(\"../geom/MultiPoint.js\").default} geometry Geometry.\n * @private\n */\n Modify.prototype.writeMultiPointGeometry_ = function (feature, geometry) {\n var points = geometry.getCoordinates();\n for (var i = 0, ii = points.length; i < ii; ++i) {\n var coordinates = points[i];\n /** @type {SegmentData} */\n var segmentData = {\n feature: feature,\n geometry: geometry,\n depth: [i],\n index: i,\n segment: [coordinates, coordinates],\n };\n this.rBush_.insert(geometry.getExtent(), segmentData);\n }\n };\n /**\n * @param {Feature} feature Feature\n * @param {import(\"../geom/LineString.js\").default} geometry Geometry.\n * @private\n */\n Modify.prototype.writeLineStringGeometry_ = function (feature, geometry) {\n var coordinates = geometry.getCoordinates();\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n /** @type {SegmentData} */\n var segmentData = {\n feature: feature,\n geometry: geometry,\n index: i,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n };\n /**\n * @param {Feature} feature Feature\n * @param {import(\"../geom/MultiLineString.js\").default} geometry Geometry.\n * @private\n */\n Modify.prototype.writeMultiLineStringGeometry_ = function (feature, geometry) {\n var lines = geometry.getCoordinates();\n for (var j = 0, jj = lines.length; j < jj; ++j) {\n var coordinates = lines[j];\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n /** @type {SegmentData} */\n var segmentData = {\n feature: feature,\n geometry: geometry,\n depth: [j],\n index: i,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n }\n };\n /**\n * @param {Feature} feature Feature\n * @param {import(\"../geom/Polygon.js\").default} geometry Geometry.\n * @private\n */\n Modify.prototype.writePolygonGeometry_ = function (feature, geometry) {\n var rings = geometry.getCoordinates();\n for (var j = 0, jj = rings.length; j < jj; ++j) {\n var coordinates = rings[j];\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n /** @type {SegmentData} */\n var segmentData = {\n feature: feature,\n geometry: geometry,\n depth: [j],\n index: i,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n }\n };\n /**\n * @param {Feature} feature Feature\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @private\n */\n Modify.prototype.writeMultiPolygonGeometry_ = function (feature, geometry) {\n var polygons = geometry.getCoordinates();\n for (var k = 0, kk = polygons.length; k < kk; ++k) {\n var rings = polygons[k];\n for (var j = 0, jj = rings.length; j < jj; ++j) {\n var coordinates = rings[j];\n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {\n var segment = coordinates.slice(i, i + 2);\n /** @type {SegmentData} */\n var segmentData = {\n feature: feature,\n geometry: geometry,\n depth: [j, k],\n index: i,\n segment: segment,\n };\n this.rBush_.insert(boundingExtent(segment), segmentData);\n }\n }\n }\n };\n /**\n * We convert a circle into two segments. The segment at index\n * {@link CIRCLE_CENTER_INDEX} is the\n * circle's center (a point). The segment at index\n * {@link CIRCLE_CIRCUMFERENCE_INDEX} is\n * the circumference, and is not a line segment.\n *\n * @param {Feature} feature Feature.\n * @param {import(\"../geom/Circle.js\").default} geometry Geometry.\n * @private\n */\n Modify.prototype.writeCircleGeometry_ = function (feature, geometry) {\n var coordinates = geometry.getCenter();\n /** @type {SegmentData} */\n var centerSegmentData = {\n feature: feature,\n geometry: geometry,\n index: CIRCLE_CENTER_INDEX,\n segment: [coordinates, coordinates],\n };\n /** @type {SegmentData} */\n var circumferenceSegmentData = {\n feature: feature,\n geometry: geometry,\n index: CIRCLE_CIRCUMFERENCE_INDEX,\n segment: [coordinates, coordinates],\n };\n var featureSegments = [centerSegmentData, circumferenceSegmentData];\n centerSegmentData.featureSegments = featureSegments;\n circumferenceSegmentData.featureSegments = featureSegments;\n this.rBush_.insert(createExtent(coordinates), centerSegmentData);\n var circleGeometry = /** @type {import(\"../geom/Geometry.js\").default} */ (geometry);\n var userProjection = getUserProjection();\n if (userProjection && this.getMap()) {\n var projection = this.getMap().getView().getProjection();\n circleGeometry = circleGeometry\n .clone()\n .transform(userProjection, projection);\n circleGeometry = fromCircle(\n /** @type {import(\"../geom/Circle.js\").default} */ (circleGeometry)).transform(projection, userProjection);\n }\n this.rBush_.insert(circleGeometry.getExtent(), circumferenceSegmentData);\n };\n /**\n * @param {Feature} feature Feature\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @private\n */\n Modify.prototype.writeGeometryCollectionGeometry_ = function (feature, geometry) {\n var geometries = geometry.getGeometriesArray();\n for (var i = 0; i < geometries.length; ++i) {\n var geometry_1 = geometries[i];\n var writer = this.SEGMENT_WRITERS_[geometry_1.getType()];\n writer(feature, geometry_1);\n }\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @return {Feature} Vertex feature.\n * @private\n */\n Modify.prototype.createOrUpdateVertexFeature_ = function (coordinates) {\n var vertexFeature = this.vertexFeature_;\n if (!vertexFeature) {\n vertexFeature = new Feature(new Point(coordinates));\n this.vertexFeature_ = vertexFeature;\n this.overlay_.getSource().addFeature(vertexFeature);\n }\n else {\n var geometry = vertexFeature.getGeometry();\n geometry.setCoordinates(coordinates);\n }\n return vertexFeature;\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may modify the geometry.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n Modify.prototype.handleEvent = function (mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n this.lastPointerEvent_ = mapBrowserEvent;\n var handled;\n if (!mapBrowserEvent.map.getView().getInteracting() &&\n mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE &&\n !this.handlingDownUpSequence) {\n this.handlePointerMove_(mapBrowserEvent);\n }\n if (this.vertexFeature_ && this.deleteCondition_(mapBrowserEvent)) {\n if (mapBrowserEvent.type != MapBrowserEventType.SINGLECLICK ||\n !this.ignoreNextSingleClick_) {\n handled = this.removePoint();\n }\n else {\n handled = true;\n }\n }\n if (mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK) {\n this.ignoreNextSingleClick_ = false;\n }\n return _super.prototype.handleEvent.call(this, mapBrowserEvent) && !handled;\n };\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n */\n Modify.prototype.handleDragEvent = function (evt) {\n this.ignoreNextSingleClick_ = false;\n this.willModifyFeatures_(evt);\n var vertex = evt.coordinate;\n for (var i = 0, ii = this.dragSegments_.length; i < ii; ++i) {\n var dragSegment = this.dragSegments_[i];\n var segmentData = dragSegment[0];\n var depth = segmentData.depth;\n var geometry = segmentData.geometry;\n var coordinates = void 0;\n var segment = segmentData.segment;\n var index = dragSegment[1];\n while (vertex.length < geometry.getStride()) {\n vertex.push(segment[index][vertex.length]);\n }\n switch (geometry.getType()) {\n case GeometryType.POINT:\n coordinates = vertex;\n segment[0] = vertex;\n segment[1] = vertex;\n break;\n case GeometryType.MULTI_POINT:\n coordinates = geometry.getCoordinates();\n coordinates[segmentData.index] = vertex;\n segment[0] = vertex;\n segment[1] = vertex;\n break;\n case GeometryType.LINE_STRING:\n coordinates = geometry.getCoordinates();\n coordinates[segmentData.index + index] = vertex;\n segment[index] = vertex;\n break;\n case GeometryType.MULTI_LINE_STRING:\n coordinates = geometry.getCoordinates();\n coordinates[depth[0]][segmentData.index + index] = vertex;\n segment[index] = vertex;\n break;\n case GeometryType.POLYGON:\n coordinates = geometry.getCoordinates();\n coordinates[depth[0]][segmentData.index + index] = vertex;\n segment[index] = vertex;\n break;\n case GeometryType.MULTI_POLYGON:\n coordinates = geometry.getCoordinates();\n coordinates[depth[1]][depth[0]][segmentData.index + index] = vertex;\n segment[index] = vertex;\n break;\n case GeometryType.CIRCLE:\n segment[0] = vertex;\n segment[1] = vertex;\n if (segmentData.index === CIRCLE_CENTER_INDEX) {\n this.changingFeature_ = true;\n geometry.setCenter(vertex);\n this.changingFeature_ = false;\n }\n else {\n // We're dragging the circle's circumference:\n this.changingFeature_ = true;\n var projection = evt.map.getView().getProjection();\n var radius = coordinateDistance(fromUserCoordinate(geometry.getCenter(), projection), fromUserCoordinate(vertex, projection));\n var userProjection = getUserProjection();\n if (userProjection) {\n var circleGeometry = geometry\n .clone()\n .transform(userProjection, projection);\n circleGeometry.setRadius(radius);\n radius = circleGeometry\n .transform(projection, userProjection)\n .getRadius();\n }\n geometry.setRadius(radius);\n this.changingFeature_ = false;\n }\n break;\n default:\n // pass\n }\n if (coordinates) {\n this.setGeometryCoordinates_(geometry, coordinates);\n }\n }\n this.createOrUpdateVertexFeature_(vertex);\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n * @return {boolean} If the event was consumed.\n */\n Modify.prototype.handleDownEvent = function (evt) {\n if (!this.condition_(evt)) {\n return false;\n }\n var pixelCoordinate = evt.coordinate;\n this.handlePointerAtPixel_(evt.pixel, evt.map, pixelCoordinate);\n this.dragSegments_.length = 0;\n this.modified_ = false;\n var vertexFeature = this.vertexFeature_;\n if (vertexFeature) {\n var projection = evt.map.getView().getProjection();\n var insertVertices = [];\n var vertex = vertexFeature.getGeometry().getCoordinates();\n var vertexExtent = boundingExtent([vertex]);\n var segmentDataMatches = this.rBush_.getInExtent(vertexExtent);\n var componentSegments = {};\n segmentDataMatches.sort(compareIndexes);\n for (var i = 0, ii = segmentDataMatches.length; i < ii; ++i) {\n var segmentDataMatch = segmentDataMatches[i];\n var segment = segmentDataMatch.segment;\n var uid = getUid(segmentDataMatch.geometry);\n var depth = segmentDataMatch.depth;\n if (depth) {\n uid += '-' + depth.join('-'); // separate feature components\n }\n if (!componentSegments[uid]) {\n componentSegments[uid] = new Array(2);\n }\n if (segmentDataMatch.geometry.getType() === GeometryType.CIRCLE &&\n segmentDataMatch.index === CIRCLE_CIRCUMFERENCE_INDEX) {\n var closestVertex = closestOnSegmentData(pixelCoordinate, segmentDataMatch, projection);\n if (coordinatesEqual(closestVertex, vertex) &&\n !componentSegments[uid][0]) {\n this.dragSegments_.push([segmentDataMatch, 0]);\n componentSegments[uid][0] = segmentDataMatch;\n }\n continue;\n }\n if (coordinatesEqual(segment[0], vertex) &&\n !componentSegments[uid][0]) {\n this.dragSegments_.push([segmentDataMatch, 0]);\n componentSegments[uid][0] = segmentDataMatch;\n continue;\n }\n if (coordinatesEqual(segment[1], vertex) &&\n !componentSegments[uid][1]) {\n // prevent dragging closed linestrings by the connecting node\n if ((segmentDataMatch.geometry.getType() === GeometryType.LINE_STRING ||\n segmentDataMatch.geometry.getType() ===\n GeometryType.MULTI_LINE_STRING) &&\n componentSegments[uid][0] &&\n componentSegments[uid][0].index === 0) {\n continue;\n }\n this.dragSegments_.push([segmentDataMatch, 1]);\n componentSegments[uid][1] = segmentDataMatch;\n continue;\n }\n if (getUid(segment) in this.vertexSegments_ &&\n !componentSegments[uid][0] &&\n !componentSegments[uid][1] &&\n this.insertVertexCondition_(evt)) {\n insertVertices.push([segmentDataMatch, vertex]);\n }\n }\n if (insertVertices.length) {\n this.willModifyFeatures_(evt);\n }\n for (var j = insertVertices.length - 1; j >= 0; --j) {\n this.insertVertex_.apply(this, insertVertices[j]);\n }\n }\n return !!this.vertexFeature_;\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n * @return {boolean} If the event was consumed.\n */\n Modify.prototype.handleUpEvent = function (evt) {\n for (var i = this.dragSegments_.length - 1; i >= 0; --i) {\n var segmentData = this.dragSegments_[i][0];\n var geometry = segmentData.geometry;\n if (geometry.getType() === GeometryType.CIRCLE) {\n // Update a circle object in the R* bush:\n var coordinates = geometry.getCenter();\n var centerSegmentData = segmentData.featureSegments[0];\n var circumferenceSegmentData = segmentData.featureSegments[1];\n centerSegmentData.segment[0] = coordinates;\n centerSegmentData.segment[1] = coordinates;\n circumferenceSegmentData.segment[0] = coordinates;\n circumferenceSegmentData.segment[1] = coordinates;\n this.rBush_.update(createExtent(coordinates), centerSegmentData);\n var circleGeometry = geometry;\n var userProjection = getUserProjection();\n if (userProjection) {\n var projection = evt.map.getView().getProjection();\n circleGeometry = circleGeometry\n .clone()\n .transform(userProjection, projection);\n circleGeometry = fromCircle(circleGeometry).transform(projection, userProjection);\n }\n this.rBush_.update(circleGeometry.getExtent(), circumferenceSegmentData);\n }\n else {\n this.rBush_.update(boundingExtent(segmentData.segment), segmentData);\n }\n }\n if (this.modified_) {\n this.dispatchEvent(new ModifyEvent(ModifyEventType.MODIFYEND, this.features_, evt));\n this.modified_ = false;\n }\n return false;\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} evt Event.\n * @private\n */\n Modify.prototype.handlePointerMove_ = function (evt) {\n this.lastPixel_ = evt.pixel;\n this.handlePointerAtPixel_(evt.pixel, evt.map, evt.coordinate);\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_coordinate The pixel Coordinate.\n * @private\n */\n Modify.prototype.handlePointerAtPixel_ = function (pixel, map, opt_coordinate) {\n var pixelCoordinate = opt_coordinate || map.getCoordinateFromPixel(pixel);\n var projection = map.getView().getProjection();\n var sortByDistance = function (a, b) {\n return (projectedDistanceToSegmentDataSquared(pixelCoordinate, a, projection) -\n projectedDistanceToSegmentDataSquared(pixelCoordinate, b, projection));\n };\n var viewExtent = fromUserExtent(createExtent(pixelCoordinate, tempExtent), projection);\n var buffer = map.getView().getResolution() * this.pixelTolerance_;\n var box = toUserExtent(bufferExtent(viewExtent, buffer, tempExtent), projection);\n var rBush = this.rBush_;\n var nodes = rBush.getInExtent(box);\n if (nodes.length > 0) {\n nodes.sort(sortByDistance);\n var node = nodes[0];\n var closestSegment = node.segment;\n var vertex = closestOnSegmentData(pixelCoordinate, node, projection);\n var vertexPixel = map.getPixelFromCoordinate(vertex);\n var dist = coordinateDistance(pixel, vertexPixel);\n if (dist <= this.pixelTolerance_) {\n /** @type {Object} */\n var vertexSegments = {};\n if (node.geometry.getType() === GeometryType.CIRCLE &&\n node.index === CIRCLE_CIRCUMFERENCE_INDEX) {\n this.snappedToVertex_ = true;\n this.createOrUpdateVertexFeature_(vertex);\n }\n else {\n var pixel1 = map.getPixelFromCoordinate(closestSegment[0]);\n var pixel2 = map.getPixelFromCoordinate(closestSegment[1]);\n var squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);\n var squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);\n dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));\n this.snappedToVertex_ = dist <= this.pixelTolerance_;\n if (this.snappedToVertex_) {\n vertex =\n squaredDist1 > squaredDist2\n ? closestSegment[1]\n : closestSegment[0];\n }\n this.createOrUpdateVertexFeature_(vertex);\n for (var i = 1, ii = nodes.length; i < ii; ++i) {\n var segment = nodes[i].segment;\n if ((coordinatesEqual(closestSegment[0], segment[0]) &&\n coordinatesEqual(closestSegment[1], segment[1])) ||\n (coordinatesEqual(closestSegment[0], segment[1]) &&\n coordinatesEqual(closestSegment[1], segment[0]))) {\n vertexSegments[getUid(segment)] = true;\n }\n else {\n break;\n }\n }\n }\n vertexSegments[getUid(closestSegment)] = true;\n this.vertexSegments_ = vertexSegments;\n return;\n }\n }\n if (this.vertexFeature_) {\n this.overlay_.getSource().removeFeature(this.vertexFeature_);\n this.vertexFeature_ = null;\n }\n };\n /**\n * @param {SegmentData} segmentData Segment data.\n * @param {import(\"../coordinate.js\").Coordinate} vertex Vertex.\n * @private\n */\n Modify.prototype.insertVertex_ = function (segmentData, vertex) {\n var segment = segmentData.segment;\n var feature = segmentData.feature;\n var geometry = segmentData.geometry;\n var depth = segmentData.depth;\n var index = segmentData.index;\n var coordinates;\n while (vertex.length < geometry.getStride()) {\n vertex.push(0);\n }\n switch (geometry.getType()) {\n case GeometryType.MULTI_LINE_STRING:\n coordinates = geometry.getCoordinates();\n coordinates[depth[0]].splice(index + 1, 0, vertex);\n break;\n case GeometryType.POLYGON:\n coordinates = geometry.getCoordinates();\n coordinates[depth[0]].splice(index + 1, 0, vertex);\n break;\n case GeometryType.MULTI_POLYGON:\n coordinates = geometry.getCoordinates();\n coordinates[depth[1]][depth[0]].splice(index + 1, 0, vertex);\n break;\n case GeometryType.LINE_STRING:\n coordinates = geometry.getCoordinates();\n coordinates.splice(index + 1, 0, vertex);\n break;\n default:\n return;\n }\n this.setGeometryCoordinates_(geometry, coordinates);\n var rTree = this.rBush_;\n rTree.remove(segmentData);\n this.updateSegmentIndices_(geometry, index, depth, 1);\n /** @type {SegmentData} */\n var newSegmentData = {\n segment: [segment[0], vertex],\n feature: feature,\n geometry: geometry,\n depth: depth,\n index: index,\n };\n rTree.insert(boundingExtent(newSegmentData.segment), newSegmentData);\n this.dragSegments_.push([newSegmentData, 1]);\n /** @type {SegmentData} */\n var newSegmentData2 = {\n segment: [vertex, segment[1]],\n feature: feature,\n geometry: geometry,\n depth: depth,\n index: index + 1,\n };\n rTree.insert(boundingExtent(newSegmentData2.segment), newSegmentData2);\n this.dragSegments_.push([newSegmentData2, 0]);\n this.ignoreNextSingleClick_ = true;\n };\n /**\n * Removes the vertex currently being pointed.\n * @return {boolean} True when a vertex was removed.\n * @api\n */\n Modify.prototype.removePoint = function () {\n if (this.lastPointerEvent_ &&\n this.lastPointerEvent_.type != MapBrowserEventType.POINTERDRAG) {\n var evt = this.lastPointerEvent_;\n this.willModifyFeatures_(evt);\n var removed = this.removeVertex_();\n this.dispatchEvent(new ModifyEvent(ModifyEventType.MODIFYEND, this.features_, evt));\n this.modified_ = false;\n return removed;\n }\n return false;\n };\n /**\n * Removes a vertex from all matching features.\n * @return {boolean} True when a vertex was removed.\n * @private\n */\n Modify.prototype.removeVertex_ = function () {\n var dragSegments = this.dragSegments_;\n var segmentsByFeature = {};\n var deleted = false;\n var component, coordinates, dragSegment, geometry, i, index, left;\n var newIndex, right, segmentData, uid;\n for (i = dragSegments.length - 1; i >= 0; --i) {\n dragSegment = dragSegments[i];\n segmentData = dragSegment[0];\n uid = getUid(segmentData.feature);\n if (segmentData.depth) {\n // separate feature components\n uid += '-' + segmentData.depth.join('-');\n }\n if (!(uid in segmentsByFeature)) {\n segmentsByFeature[uid] = {};\n }\n if (dragSegment[1] === 0) {\n segmentsByFeature[uid].right = segmentData;\n segmentsByFeature[uid].index = segmentData.index;\n }\n else if (dragSegment[1] == 1) {\n segmentsByFeature[uid].left = segmentData;\n segmentsByFeature[uid].index = segmentData.index + 1;\n }\n }\n for (uid in segmentsByFeature) {\n right = segmentsByFeature[uid].right;\n left = segmentsByFeature[uid].left;\n index = segmentsByFeature[uid].index;\n newIndex = index - 1;\n if (left !== undefined) {\n segmentData = left;\n }\n else {\n segmentData = right;\n }\n if (newIndex < 0) {\n newIndex = 0;\n }\n geometry = segmentData.geometry;\n coordinates = geometry.getCoordinates();\n component = coordinates;\n deleted = false;\n switch (geometry.getType()) {\n case GeometryType.MULTI_LINE_STRING:\n if (coordinates[segmentData.depth[0]].length > 2) {\n coordinates[segmentData.depth[0]].splice(index, 1);\n deleted = true;\n }\n break;\n case GeometryType.LINE_STRING:\n if (coordinates.length > 2) {\n coordinates.splice(index, 1);\n deleted = true;\n }\n break;\n case GeometryType.MULTI_POLYGON:\n component = component[segmentData.depth[1]];\n /* falls through */\n case GeometryType.POLYGON:\n component = component[segmentData.depth[0]];\n if (component.length > 4) {\n if (index == component.length - 1) {\n index = 0;\n }\n component.splice(index, 1);\n deleted = true;\n if (index === 0) {\n // close the ring again\n component.pop();\n component.push(component[0]);\n newIndex = component.length - 1;\n }\n }\n break;\n default:\n // pass\n }\n if (deleted) {\n this.setGeometryCoordinates_(geometry, coordinates);\n var segments = [];\n if (left !== undefined) {\n this.rBush_.remove(left);\n segments.push(left.segment[0]);\n }\n if (right !== undefined) {\n this.rBush_.remove(right);\n segments.push(right.segment[1]);\n }\n if (left !== undefined && right !== undefined) {\n /** @type {SegmentData} */\n var newSegmentData = {\n depth: segmentData.depth,\n feature: segmentData.feature,\n geometry: segmentData.geometry,\n index: newIndex,\n segment: segments,\n };\n this.rBush_.insert(boundingExtent(newSegmentData.segment), newSegmentData);\n }\n this.updateSegmentIndices_(geometry, index, segmentData.depth, -1);\n if (this.vertexFeature_) {\n this.overlay_.getSource().removeFeature(this.vertexFeature_);\n this.vertexFeature_ = null;\n }\n dragSegments.length = 0;\n }\n }\n return deleted;\n };\n /**\n * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @param {Array} coordinates Coordinates.\n * @private\n */\n Modify.prototype.setGeometryCoordinates_ = function (geometry, coordinates) {\n this.changingFeature_ = true;\n geometry.setCoordinates(coordinates);\n this.changingFeature_ = false;\n };\n /**\n * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @param {number} index Index.\n * @param {Array|undefined} depth Depth.\n * @param {number} delta Delta (1 or -1).\n * @private\n */\n Modify.prototype.updateSegmentIndices_ = function (geometry, index, depth, delta) {\n this.rBush_.forEachInExtent(geometry.getExtent(), function (segmentDataMatch) {\n if (segmentDataMatch.geometry === geometry &&\n (depth === undefined ||\n segmentDataMatch.depth === undefined ||\n equals(segmentDataMatch.depth, depth)) &&\n segmentDataMatch.index > index) {\n segmentDataMatch.index += delta;\n }\n });\n };\n return Modify;\n}(PointerInteraction));\n/**\n * @param {SegmentData} a The first segment data.\n * @param {SegmentData} b The second segment data.\n * @return {number} The difference in indexes.\n */\nfunction compareIndexes(a, b) {\n return a.index - b.index;\n}\n/**\n * Returns the distance from a point to a line segment.\n *\n * @param {import(\"../coordinate.js\").Coordinate} pointCoordinates The coordinates of the point from\n * which to calculate the distance.\n * @param {SegmentData} segmentData The object describing the line\n * segment we are calculating the distance to.\n * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n * @return {number} The square of the distance between a point and a line segment.\n */\nfunction projectedDistanceToSegmentDataSquared(pointCoordinates, segmentData, projection) {\n var geometry = segmentData.geometry;\n if (geometry.getType() === GeometryType.CIRCLE) {\n var circleGeometry = /** @type {import(\"../geom/Circle.js\").default} */ (geometry);\n if (segmentData.index === CIRCLE_CIRCUMFERENCE_INDEX) {\n var userProjection = getUserProjection();\n if (userProjection) {\n circleGeometry = /** @type {import(\"../geom/Circle.js\").default} */ (circleGeometry\n .clone()\n .transform(userProjection, projection));\n }\n var distanceToCenterSquared = squaredCoordinateDistance(circleGeometry.getCenter(), fromUserCoordinate(pointCoordinates, projection));\n var distanceToCircumference = Math.sqrt(distanceToCenterSquared) - circleGeometry.getRadius();\n return distanceToCircumference * distanceToCircumference;\n }\n }\n var coordinate = fromUserCoordinate(pointCoordinates, projection);\n tempSegment[0] = fromUserCoordinate(segmentData.segment[0], projection);\n tempSegment[1] = fromUserCoordinate(segmentData.segment[1], projection);\n return squaredDistanceToSegment(coordinate, tempSegment);\n}\n/**\n * Returns the point closest to a given line segment.\n *\n * @param {import(\"../coordinate.js\").Coordinate} pointCoordinates The point to which a closest point\n * should be found.\n * @param {SegmentData} segmentData The object describing the line\n * segment which should contain the closest point.\n * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n * @return {import(\"../coordinate.js\").Coordinate} The point closest to the specified line segment.\n */\nfunction closestOnSegmentData(pointCoordinates, segmentData, projection) {\n var geometry = segmentData.geometry;\n if (geometry.getType() === GeometryType.CIRCLE &&\n segmentData.index === CIRCLE_CIRCUMFERENCE_INDEX) {\n var circleGeometry = /** @type {import(\"../geom/Circle.js\").default} */ (geometry);\n var userProjection = getUserProjection();\n if (userProjection) {\n circleGeometry = /** @type {import(\"../geom/Circle.js\").default} */ (circleGeometry\n .clone()\n .transform(userProjection, projection));\n }\n return toUserCoordinate(circleGeometry.getClosestPoint(fromUserCoordinate(pointCoordinates, projection)), projection);\n }\n var coordinate = fromUserCoordinate(pointCoordinates, projection);\n tempSegment[0] = fromUserCoordinate(segmentData.segment[0], projection);\n tempSegment[1] = fromUserCoordinate(segmentData.segment[1], projection);\n return toUserCoordinate(closestOnSegment(coordinate, tempSegment), projection);\n}\n/**\n * @return {import(\"../style/Style.js\").StyleFunction} Styles.\n */\nfunction getDefaultStyleFunction() {\n var style = createEditingStyle();\n return function (feature, resolution) {\n return style[GeometryType.POINT];\n };\n}\nexport default Modify;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Translate\n */\nimport Collection from '../Collection.js';\nimport Event from '../events/Event.js';\nimport InteractionProperty from './Property.js';\nimport PointerInteraction from './Pointer.js';\nimport { TRUE } from '../functions.js';\nimport { getChangeEventType } from '../Object.js';\nimport { includes } from '../array.js';\n/**\n * @enum {string}\n */\nvar TranslateEventType = {\n /**\n * Triggered upon feature translation start.\n * @event TranslateEvent#translatestart\n * @api\n */\n TRANSLATESTART: 'translatestart',\n /**\n * Triggered upon feature translation.\n * @event TranslateEvent#translating\n * @api\n */\n TRANSLATING: 'translating',\n /**\n * Triggered upon feature translation end.\n * @event TranslateEvent#translateend\n * @api\n */\n TRANSLATEEND: 'translateend',\n};\n/**\n * A function that takes an {@link module:ol/Feature} or\n * {@link module:ol/render/Feature} and an\n * {@link module:ol/layer/Layer} and returns `true` if the feature may be\n * translated or `false` otherwise.\n * @typedef {function(import(\"../Feature.js\").FeatureLike, import(\"../layer/Layer.js\").default):boolean} FilterFunction\n */\n/**\n * @typedef {Object} Options\n * @property {Collection} [features] Only features contained in this collection will be able to be translated. If\n * not specified, all features on the map will be able to be translated.\n * @property {Array|function(import(\"../layer/Layer.js\").default): boolean} [layers] A list of layers from which features should be\n * translated. Alternatively, a filter function can be provided. The\n * function will be called for each layer in the map and should return\n * `true` for layers that you want to be translatable. If the option is\n * absent, all visible layers will be considered translatable.\n * @property {FilterFunction} [filter] A function\n * that takes an {@link module:ol/Feature} and an\n * {@link module:ol/layer/Layer} and returns `true` if the feature may be\n * translated or `false` otherwise.\n * @property {number} [hitTolerance=0] Hit-detection tolerance. Pixels inside the radius around the given position\n * will be checked for features.\n */\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Translate~Translate} instances\n * are instances of this type.\n */\nvar TranslateEvent = /** @class */ (function (_super) {\n __extends(TranslateEvent, _super);\n /**\n * @param {TranslateEventType} type Type.\n * @param {Collection} features The features translated.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} startCoordinate The original coordinates before.translation started\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n */\n function TranslateEvent(type, features, coordinate, startCoordinate, mapBrowserEvent) {\n var _this = _super.call(this, type) || this;\n /**\n * The features being translated.\n * @type {Collection}\n * @api\n */\n _this.features = features;\n /**\n * The coordinate of the drag event.\n * @const\n * @type {import(\"../coordinate.js\").Coordinate}\n * @api\n */\n _this.coordinate = coordinate;\n /**\n * The coordinate of the start position before translation started.\n * @const\n * @type {import(\"../coordinate.js\").Coordinate}\n * @api\n */\n _this.startCoordinate = startCoordinate;\n /**\n * Associated {@link module:ol/MapBrowserEvent}.\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @api\n */\n _this.mapBrowserEvent = mapBrowserEvent;\n return _this;\n }\n return TranslateEvent;\n}(Event));\nexport { TranslateEvent };\n/**\n * @classdesc\n * Interaction for translating (moving) features.\n *\n * @fires TranslateEvent\n * @api\n */\nvar Translate = /** @class */ (function (_super) {\n __extends(Translate, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Translate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, /** @type {import(\"./Pointer.js\").Options} */ (options)) || this;\n /**\n * The last position we translated to.\n * @type {import(\"../coordinate.js\").Coordinate}\n * @private\n */\n _this.lastCoordinate_ = null;\n /**\n * The start position before translation started.\n * @type {import(\"../coordinate.js\").Coordinate}\n * @private\n */\n _this.startCoordinate_ = null;\n /**\n * @type {Collection}\n * @private\n */\n _this.features_ = options.features !== undefined ? options.features : null;\n /** @type {function(import(\"../layer/Layer.js\").default): boolean} */\n var layerFilter;\n if (options.layers) {\n if (typeof options.layers === 'function') {\n layerFilter = options.layers;\n }\n else {\n var layers_1 = options.layers;\n layerFilter = function (layer) {\n return includes(layers_1, layer);\n };\n }\n }\n else {\n layerFilter = TRUE;\n }\n /**\n * @private\n * @type {function(import(\"../layer/Layer.js\").default): boolean}\n */\n _this.layerFilter_ = layerFilter;\n /**\n * @private\n * @type {FilterFunction}\n */\n _this.filter_ = options.filter ? options.filter : TRUE;\n /**\n * @private\n * @type {number}\n */\n _this.hitTolerance_ = options.hitTolerance ? options.hitTolerance : 0;\n /**\n * @type {import(\"../Feature.js\").default}\n * @private\n */\n _this.lastFeature_ = null;\n _this.addEventListener(getChangeEventType(InteractionProperty.ACTIVE), _this.handleActiveChanged_);\n return _this;\n }\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} If the event was consumed.\n */\n Translate.prototype.handleDownEvent = function (event) {\n this.lastFeature_ = this.featuresAtPixel_(event.pixel, event.map);\n if (!this.lastCoordinate_ && this.lastFeature_) {\n this.startCoordinate_ = event.coordinate;\n this.lastCoordinate_ = event.coordinate;\n this.handleMoveEvent(event);\n var features = this.features_ || new Collection([this.lastFeature_]);\n this.dispatchEvent(new TranslateEvent(TranslateEventType.TRANSLATESTART, features, event.coordinate, this.startCoordinate_, event));\n return true;\n }\n return false;\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} If the event was consumed.\n */\n Translate.prototype.handleUpEvent = function (event) {\n if (this.lastCoordinate_) {\n this.lastCoordinate_ = null;\n this.handleMoveEvent(event);\n var features = this.features_ || new Collection([this.lastFeature_]);\n this.dispatchEvent(new TranslateEvent(TranslateEventType.TRANSLATEEND, features, event.coordinate, this.startCoordinate_, event));\n // cleanup\n this.startCoordinate_ = null;\n return true;\n }\n return false;\n };\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n */\n Translate.prototype.handleDragEvent = function (event) {\n if (this.lastCoordinate_) {\n var newCoordinate = event.coordinate;\n var deltaX_1 = newCoordinate[0] - this.lastCoordinate_[0];\n var deltaY_1 = newCoordinate[1] - this.lastCoordinate_[1];\n var features = this.features_ || new Collection([this.lastFeature_]);\n features.forEach(function (feature) {\n var geom = feature.getGeometry();\n geom.translate(deltaX_1, deltaY_1);\n feature.setGeometry(geom);\n });\n this.lastCoordinate_ = newCoordinate;\n this.dispatchEvent(new TranslateEvent(TranslateEventType.TRANSLATING, features, newCoordinate, this.startCoordinate_, event));\n }\n };\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n */\n Translate.prototype.handleMoveEvent = function (event) {\n var elem = event.map.getViewport();\n // Change the cursor to grab/grabbing if hovering any of the features managed\n // by the interaction\n if (this.featuresAtPixel_(event.pixel, event.map)) {\n elem.classList.remove(this.lastCoordinate_ ? 'ol-grab' : 'ol-grabbing');\n elem.classList.add(this.lastCoordinate_ ? 'ol-grabbing' : 'ol-grab');\n }\n else {\n elem.classList.remove('ol-grab', 'ol-grabbing');\n }\n };\n /**\n * Tests to see if the given coordinates intersects any of our selected\n * features.\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel coordinate to test for intersection.\n * @param {import(\"../PluggableMap.js\").default} map Map to test the intersection on.\n * @return {import(\"../Feature.js\").default} Returns the feature found at the specified pixel\n * coordinates.\n * @private\n */\n Translate.prototype.featuresAtPixel_ = function (pixel, map) {\n return map.forEachFeatureAtPixel(pixel, function (feature, layer) {\n if (this.filter_(feature, layer)) {\n if (!this.features_ || includes(this.features_.getArray(), feature)) {\n return feature;\n }\n }\n }.bind(this), {\n layerFilter: this.layerFilter_,\n hitTolerance: this.hitTolerance_,\n });\n };\n /**\n * Returns the Hit-detection tolerance.\n * @returns {number} Hit tolerance in pixels.\n * @api\n */\n Translate.prototype.getHitTolerance = function () {\n return this.hitTolerance_;\n };\n /**\n * Hit-detection tolerance. Pixels inside the radius around the given position\n * will be checked for features.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @api\n */\n Translate.prototype.setHitTolerance = function (hitTolerance) {\n this.hitTolerance_ = hitTolerance;\n };\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Translate.prototype.setMap = function (map) {\n var oldMap = this.getMap();\n _super.prototype.setMap.call(this, map);\n this.updateState_(oldMap);\n };\n /**\n * @private\n */\n Translate.prototype.handleActiveChanged_ = function () {\n this.updateState_(null);\n };\n /**\n * @param {import(\"../PluggableMap.js\").default} oldMap Old map.\n * @private\n */\n Translate.prototype.updateState_ = function (oldMap) {\n var map = this.getMap();\n var active = this.getActive();\n if (!map || !active) {\n map = map || oldMap;\n if (map) {\n var elem = map.getViewport();\n elem.classList.remove('ol-grab', 'ol-grabbing');\n }\n }\n };\n return Translate;\n}(PointerInteraction));\nexport default Translate;\n","import Draw from 'ol/interaction/Draw';\nimport GeometryType from 'ol/geom/GeometryType';\nimport VectorSource from 'ol/source/Vector';\nimport Style from 'ol/style/Style';\nimport {Keys, MapInteractions} from './interactions';\nimport Select from 'ol/interaction/Select';\nimport * as OlCondition from 'ol/events/condition';\nimport VectorLayer from 'ol/layer/Vector';\nimport Snap from 'ol/interaction/Snap';\nimport Modify from 'ol/interaction/Modify';\nimport Feature from 'ol/Feature';\nimport Collection from 'ol/Collection';\nimport {MapBrowserEvent} from 'ol';\nimport {Translate} from 'ol/interaction';\n\nexport type StyleDefinition = Style | Style[] | ((f) => Style | Style[]);\n\nexport class OlHelper {\n static DrawVector(type: GeometryType, source: VectorSource, style?: StyleDefinition): Draw {\n const action = new Draw({\n type,\n source,\n style,\n freehand: false,\n freehandCondition: () => false,\n });\n action.set(Keys.NAME, MapInteractions.DRAW);\n return action;\n }\n\n static Select(layer: VectorLayer, style: StyleDefinition): Select {\n const select = new Select({\n layers: [layer],\n style,\n });\n select.set(Keys.NAME, MapInteractions.SELECT);\n return select;\n }\n\n static SelectByClick(layer: VectorLayer, style: StyleDefinition): Select {\n const action = new Select({\n layers: [layer],\n style,\n toggleCondition: OlCondition.always,\n condition: OlCondition.click\n });\n action.set(Keys.NAME, MapInteractions.SELECT);\n return action;\n }\n\n static Snap(source: VectorSource, tolerance = 10): Snap {\n const snap = new Snap({\n source,\n pixelTolerance: tolerance,\n });\n snap.set(Keys.NAME, MapInteractions.SNAP);\n return snap;\n }\n\n static ModifySelected(select: Feature[], source?: VectorSource, style?: StyleDefinition): Modify {\n const modify = new Modify({\n features: new Collection(select),\n style,\n source,\n deleteCondition: (evt: MapBrowserEvent) => evt.type === 'dblclick',\n });\n modify.set(Keys.NAME, MapInteractions.MODIFY);\n return modify;\n }\n\n static TranslateSelected(select: Feature[]): Translate {\n const modify = new Translate({\n features: new Collection(select)\n });\n modify.set(Keys.NAME, MapInteractions.TRANSLATE);\n return modify;\n }\n}\n","import Exception from '../../../../../java/lang/Exception.js'\nexport default class NoninvertibleTransformationException extends Exception {\n constructor() {\n super()\n NoninvertibleTransformationException.constructor_.apply(this, arguments)\n }\n static constructor_() {\n if (arguments.length === 0) {\n Exception.constructor_.call(this)\n } else if (arguments.length === 1) {\n const msg = arguments[0]\n Exception.constructor_.call(this, msg)\n }\n }\n}\n","import NoninvertibleTransformationException from './NoninvertibleTransformationException.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport Coordinate from '../Coordinate.js'\nimport IllegalArgumentException from '../../../../../java/lang/IllegalArgumentException.js'\nimport Exception from '../../../../../java/lang/Exception.js'\nimport CoordinateSequence from '../CoordinateSequence.js'\nimport Cloneable from '../../../../../java/lang/Cloneable.js'\nimport CoordinateSequenceFilter from '../CoordinateSequenceFilter.js'\nimport Assert from '../../util/Assert.js'\nexport default class AffineTransformation {\n constructor() {\n AffineTransformation.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._m00 = null\n this._m01 = null\n this._m02 = null\n this._m10 = null\n this._m11 = null\n this._m12 = null\n if (arguments.length === 0) {\n this.setToIdentity()\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n const matrix = arguments[0]\n this._m00 = matrix[0]\n this._m01 = matrix[1]\n this._m02 = matrix[2]\n this._m10 = matrix[3]\n this._m11 = matrix[4]\n this._m12 = matrix[5]\n } else if (arguments[0] instanceof AffineTransformation) {\n const trans = arguments[0]\n this.setTransformation(trans)\n }\n } else if (arguments.length === 6) {\n if (typeof arguments[5] === 'number' && (typeof arguments[4] === 'number' && (typeof arguments[3] === 'number' && (typeof arguments[2] === 'number' && (typeof arguments[0] === 'number' && typeof arguments[1] === 'number'))))) {\n const m00 = arguments[0], m01 = arguments[1], m02 = arguments[2], m10 = arguments[3], m11 = arguments[4], m12 = arguments[5]\n this.setTransformation(m00, m01, m02, m10, m11, m12)\n } else if (arguments[5] instanceof Coordinate && (arguments[4] instanceof Coordinate && (arguments[3] instanceof Coordinate && (arguments[2] instanceof Coordinate && (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate))))) {\n const src0 = arguments[0], src1 = arguments[1], src2 = arguments[2], dest0 = arguments[3], dest1 = arguments[4], dest2 = arguments[5]\n }\n }\n }\n static translationInstance(x, y) {\n const trans = new AffineTransformation()\n trans.setToTranslation(x, y)\n return trans\n }\n static shearInstance(xShear, yShear) {\n const trans = new AffineTransformation()\n trans.setToShear(xShear, yShear)\n return trans\n }\n static reflectionInstance() {\n if (arguments.length === 2) {\n const x = arguments[0], y = arguments[1]\n const trans = new AffineTransformation()\n trans.setToReflection(x, y)\n return trans\n } else if (arguments.length === 4) {\n const x0 = arguments[0], y0 = arguments[1], x1 = arguments[2], y1 = arguments[3]\n const trans = new AffineTransformation()\n trans.setToReflection(x0, y0, x1, y1)\n return trans\n }\n }\n static rotationInstance() {\n if (arguments.length === 1) {\n const theta = arguments[0]\n return AffineTransformation.rotationInstance(Math.sin(theta), Math.cos(theta))\n } else if (arguments.length === 2) {\n const sinTheta = arguments[0], cosTheta = arguments[1]\n const trans = new AffineTransformation()\n trans.setToRotation(sinTheta, cosTheta)\n return trans\n } else if (arguments.length === 3) {\n const theta = arguments[0], x = arguments[1], y = arguments[2]\n return AffineTransformation.rotationInstance(Math.sin(theta), Math.cos(theta), x, y)\n } else if (arguments.length === 4) {\n const sinTheta = arguments[0], cosTheta = arguments[1], x = arguments[2], y = arguments[3]\n const trans = new AffineTransformation()\n trans.setToRotation(sinTheta, cosTheta, x, y)\n return trans\n }\n }\n static scaleInstance() {\n if (arguments.length === 2) {\n const xScale = arguments[0], yScale = arguments[1]\n const trans = new AffineTransformation()\n trans.setToScale(xScale, yScale)\n return trans\n } else if (arguments.length === 4) {\n const xScale = arguments[0], yScale = arguments[1], x = arguments[2], y = arguments[3]\n const trans = new AffineTransformation()\n trans.translate(-x, -y)\n trans.scale(xScale, yScale)\n trans.translate(x, y)\n return trans\n }\n }\n setToReflectionBasic(x0, y0, x1, y1) {\n if (x0 === x1 && y0 === y1) \n throw new IllegalArgumentException('Reflection line points must be distinct')\n \n const dx = x1 - x0\n const dy = y1 - y0\n const d = Math.sqrt(dx * dx + dy * dy)\n const sin = dy / d\n const cos = dx / d\n const cs2 = 2 * sin * cos\n const c2s2 = cos * cos - sin * sin\n this._m00 = c2s2\n this._m01 = cs2\n this._m02 = 0.0\n this._m10 = cs2\n this._m11 = -c2s2\n this._m12 = 0.0\n return this\n }\n getInverse() {\n const det = this.getDeterminant()\n if (det === 0) throw new NoninvertibleTransformationException('Transformation is non-invertible')\n const im00 = this._m11 / det\n const im10 = -this._m10 / det\n const im01 = -this._m01 / det\n const im11 = this._m00 / det\n const im02 = (this._m01 * this._m12 - this._m02 * this._m11) / det\n const im12 = (-this._m00 * this._m12 + this._m10 * this._m02) / det\n return new AffineTransformation(im00, im01, im02, im10, im11, im12)\n }\n compose(trans) {\n const mp00 = trans._m00 * this._m00 + trans._m01 * this._m10\n const mp01 = trans._m00 * this._m01 + trans._m01 * this._m11\n const mp02 = trans._m00 * this._m02 + trans._m01 * this._m12 + trans._m02\n const mp10 = trans._m10 * this._m00 + trans._m11 * this._m10\n const mp11 = trans._m10 * this._m01 + trans._m11 * this._m11\n const mp12 = trans._m10 * this._m02 + trans._m11 * this._m12 + trans._m12\n this._m00 = mp00\n this._m01 = mp01\n this._m02 = mp02\n this._m10 = mp10\n this._m11 = mp11\n this._m12 = mp12\n return this\n }\n equals(obj) {\n if (obj === null) return false\n if (!(obj instanceof AffineTransformation)) return false\n const trans = obj\n return this._m00 === trans._m00 && this._m01 === trans._m01 && this._m02 === trans._m02 && this._m10 === trans._m10 && this._m11 === trans._m11 && this._m12 === trans._m12\n }\n setToScale(xScale, yScale) {\n this._m00 = xScale\n this._m01 = 0.0\n this._m02 = 0.0\n this._m10 = 0.0\n this._m11 = yScale\n this._m12 = 0.0\n return this\n }\n isIdentity() {\n return this._m00 === 1 && this._m01 === 0 && this._m02 === 0 && this._m10 === 0 && this._m11 === 1 && this._m12 === 0\n }\n scale(xScale, yScale) {\n this.compose(AffineTransformation.scaleInstance(xScale, yScale))\n return this\n }\n setToIdentity() {\n this._m00 = 1.0\n this._m01 = 0.0\n this._m02 = 0.0\n this._m10 = 0.0\n this._m11 = 1.0\n this._m12 = 0.0\n return this\n }\n isGeometryChanged() {\n return true\n }\n setTransformation() {\n if (arguments.length === 1) {\n const trans = arguments[0]\n this._m00 = trans._m00\n this._m01 = trans._m01\n this._m02 = trans._m02\n this._m10 = trans._m10\n this._m11 = trans._m11\n this._m12 = trans._m12\n return this\n } else if (arguments.length === 6) {\n const m00 = arguments[0], m01 = arguments[1], m02 = arguments[2], m10 = arguments[3], m11 = arguments[4], m12 = arguments[5]\n this._m00 = m00\n this._m01 = m01\n this._m02 = m02\n this._m10 = m10\n this._m11 = m11\n this._m12 = m12\n return this\n }\n }\n setToRotation() {\n if (arguments.length === 1) {\n const theta = arguments[0]\n this.setToRotation(Math.sin(theta), Math.cos(theta))\n return this\n } else if (arguments.length === 2) {\n const sinTheta = arguments[0], cosTheta = arguments[1]\n this._m00 = cosTheta\n this._m01 = -sinTheta\n this._m02 = 0.0\n this._m10 = sinTheta\n this._m11 = cosTheta\n this._m12 = 0.0\n return this\n } else if (arguments.length === 3) {\n const theta = arguments[0], x = arguments[1], y = arguments[2]\n this.setToRotation(Math.sin(theta), Math.cos(theta), x, y)\n return this\n } else if (arguments.length === 4) {\n const sinTheta = arguments[0], cosTheta = arguments[1], x = arguments[2], y = arguments[3]\n this._m00 = cosTheta\n this._m01 = -sinTheta\n this._m02 = x - x * cosTheta + y * sinTheta\n this._m10 = sinTheta\n this._m11 = cosTheta\n this._m12 = y - x * sinTheta - y * cosTheta\n return this\n }\n }\n getMatrixEntries() {\n return [this._m00, this._m01, this._m02, this._m10, this._m11, this._m12]\n }\n filter(seq, i) {\n this.transform(seq, i)\n }\n rotate() {\n if (arguments.length === 1) {\n const theta = arguments[0]\n this.compose(AffineTransformation.rotationInstance(theta))\n return this\n } else if (arguments.length === 2) {\n const sinTheta = arguments[0], cosTheta = arguments[1]\n this.compose(AffineTransformation.rotationInstance(sinTheta, cosTheta))\n return this\n } else if (arguments.length === 3) {\n const theta = arguments[0], x = arguments[1], y = arguments[2]\n this.compose(AffineTransformation.rotationInstance(theta, x, y))\n return this\n } else if (arguments.length === 4) {\n const sinTheta = arguments[0], cosTheta = arguments[1], x = arguments[2], y = arguments[3]\n this.compose(AffineTransformation.rotationInstance(sinTheta, cosTheta, x, y))\n return this\n }\n }\n getDeterminant() {\n return this._m00 * this._m11 - this._m01 * this._m10\n }\n composeBefore(trans) {\n const mp00 = this._m00 * trans._m00 + this._m01 * trans._m10\n const mp01 = this._m00 * trans._m01 + this._m01 * trans._m11\n const mp02 = this._m00 * trans._m02 + this._m01 * trans._m12 + this._m02\n const mp10 = this._m10 * trans._m00 + this._m11 * trans._m10\n const mp11 = this._m10 * trans._m01 + this._m11 * trans._m11\n const mp12 = this._m10 * trans._m02 + this._m11 * trans._m12 + this._m12\n this._m00 = mp00\n this._m01 = mp01\n this._m02 = mp02\n this._m10 = mp10\n this._m11 = mp11\n this._m12 = mp12\n return this\n }\n setToShear(xShear, yShear) {\n this._m00 = 1.0\n this._m01 = xShear\n this._m02 = 0.0\n this._m10 = yShear\n this._m11 = 1.0\n this._m12 = 0.0\n return this\n }\n isDone() {\n return false\n }\n clone() {\n try {\n return null\n } catch (ex) {\n if (ex instanceof Exception) \n Assert.shouldNeverReachHere()\n else throw ex\n } finally {}\n return null\n }\n translate(x, y) {\n this.compose(AffineTransformation.translationInstance(x, y))\n return this\n }\n setToReflection() {\n if (arguments.length === 2) {\n const x = arguments[0], y = arguments[1]\n if (x === 0.0 && y === 0.0) \n throw new IllegalArgumentException('Reflection vector must be non-zero')\n \n if (x === y) {\n this._m00 = 0.0\n this._m01 = 1.0\n this._m02 = 0.0\n this._m10 = 1.0\n this._m11 = 0.0\n this._m12 = 0.0\n return this\n }\n const d = Math.sqrt(x * x + y * y)\n const sin = y / d\n const cos = x / d\n this.rotate(-sin, cos)\n this.scale(1, -1)\n this.rotate(sin, cos)\n return this\n } else if (arguments.length === 4) {\n const x0 = arguments[0], y0 = arguments[1], x1 = arguments[2], y1 = arguments[3]\n if (x0 === x1 && y0 === y1) \n throw new IllegalArgumentException('Reflection line points must be distinct')\n \n this.setToTranslation(-x0, -y0)\n const dx = x1 - x0\n const dy = y1 - y0\n const d = Math.sqrt(dx * dx + dy * dy)\n const sin = dy / d\n const cos = dx / d\n this.rotate(-sin, cos)\n this.scale(1, -1)\n this.rotate(sin, cos)\n this.translate(x0, y0)\n return this\n }\n }\n toString() {\n return 'AffineTransformation[[' + this._m00 + ', ' + this._m01 + ', ' + this._m02 + '], [' + this._m10 + ', ' + this._m11 + ', ' + this._m12 + ']]'\n }\n setToTranslation(dx, dy) {\n this._m00 = 1.0\n this._m01 = 0.0\n this._m02 = dx\n this._m10 = 0.0\n this._m11 = 1.0\n this._m12 = dy\n return this\n }\n shear(xShear, yShear) {\n this.compose(AffineTransformation.shearInstance(xShear, yShear))\n return this\n }\n transform() {\n if (arguments.length === 1) {\n const g = arguments[0]\n const g2 = g.copy()\n g2.apply(this)\n return g2\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n const src = arguments[0], dest = arguments[1]\n const xp = this._m00 * src.x + this._m01 * src.y + this._m02\n const yp = this._m10 * src.x + this._m11 * src.y + this._m12\n dest.x = xp\n dest.y = yp\n return dest\n } else if (hasInterface(arguments[0], CoordinateSequence) && Number.isInteger(arguments[1])) {\n const seq = arguments[0], i = arguments[1]\n const xp = this._m00 * seq.getOrdinate(i, 0) + this._m01 * seq.getOrdinate(i, 1) + this._m02\n const yp = this._m10 * seq.getOrdinate(i, 0) + this._m11 * seq.getOrdinate(i, 1) + this._m12\n seq.setOrdinate(i, 0, xp)\n seq.setOrdinate(i, 1, yp)\n }\n }\n }\n reflect() {\n if (arguments.length === 2) {\n const x = arguments[0], y = arguments[1]\n this.compose(AffineTransformation.reflectionInstance(x, y))\n return this\n } else if (arguments.length === 4) {\n const x0 = arguments[0], y0 = arguments[1], x1 = arguments[2], y1 = arguments[3]\n this.compose(AffineTransformation.reflectionInstance(x0, y0, x1, y1))\n return this\n }\n }\n get interfaces_() {\n return [Cloneable, CoordinateSequenceFilter]\n }\n}\n","import LineString from '../LineString.js'\nimport Geometry from '../Geometry.js'\nimport Point from '../Point.js'\nimport Polygon from '../Polygon.js'\nimport LinearRing from '../LinearRing.js'\nimport GeometryCollection from '../GeometryCollection.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Assert from '../../util/Assert.js'\nexport default class GeometryEditor {\n constructor() {\n GeometryEditor.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n this._isUserDataCopied = false\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n const factory = arguments[0]\n this._factory = factory\n }\n }\n setCopyUserData(isUserDataCopied) {\n this._isUserDataCopied = isUserDataCopied\n }\n edit(geometry, operation) {\n if (geometry === null) return null\n const result = this.editInternal(geometry, operation)\n if (this._isUserDataCopied) \n result.setUserData(geometry.getUserData())\n \n return result\n }\n editInternal(geometry, operation) {\n if (this._factory === null) this._factory = geometry.getFactory()\n if (geometry instanceof GeometryCollection) \n return this.editGeometryCollection(geometry, operation)\n \n if (geometry instanceof Polygon) \n return this.editPolygon(geometry, operation)\n \n if (geometry instanceof Point) \n return operation.edit(geometry, this._factory)\n \n if (geometry instanceof LineString) \n return operation.edit(geometry, this._factory)\n \n Assert.shouldNeverReachHere('Unsupported Geometry type: ' + geometry.getGeometryType())\n return null\n }\n editGeometryCollection(collection, operation) {\n const collectionForType = operation.edit(collection, this._factory)\n const geometries = new ArrayList()\n for (let i = 0; i < collectionForType.getNumGeometries(); i++) {\n const geometry = this.edit(collectionForType.getGeometryN(i), operation)\n if (geometry === null || geometry.isEmpty()) \n continue\n \n geometries.add(geometry)\n }\n if (collectionForType.getGeometryType() === Geometry.TYPENAME_MULTIPOINT) \n return this._factory.createMultiPoint(geometries.toArray([]))\n \n if (collectionForType.getGeometryType() === Geometry.TYPENAME_MULTILINESTRING) \n return this._factory.createMultiLineString(geometries.toArray([]))\n \n if (collectionForType.getGeometryType() === Geometry.TYPENAME_MULTIPOLYGON) \n return this._factory.createMultiPolygon(geometries.toArray([]))\n \n return this._factory.createGeometryCollection(geometries.toArray([]))\n }\n editPolygon(polygon, operation) {\n let newPolygon = operation.edit(polygon, this._factory)\n if (newPolygon === null) newPolygon = this._factory.createPolygon()\n if (newPolygon.isEmpty()) \n return newPolygon\n \n const shell = this.edit(newPolygon.getExteriorRing(), operation)\n if (shell === null || shell.isEmpty()) \n return this._factory.createPolygon()\n \n const holes = new ArrayList()\n for (let i = 0; i < newPolygon.getNumInteriorRing(); i++) {\n const hole = this.edit(newPolygon.getInteriorRingN(i), operation)\n if (hole === null || hole.isEmpty()) \n continue\n \n holes.add(hole)\n }\n return this._factory.createPolygon(shell, holes.toArray([]))\n }\n}\nfunction GeometryEditorOperation() {}\nGeometryEditor.GeometryEditorOperation = GeometryEditorOperation\nclass NoOpGeometryOperation {\n edit(geometry, factory) {\n return geometry\n }\n get interfaces_() {\n return [GeometryEditorOperation]\n }\n}\nclass CoordinateOperation {\n edit(geometry, factory) {\n const coordinates = this.edit(geometry.getCoordinates(), geometry)\n if (geometry instanceof LinearRing) \n if (coordinates === null) return factory.createLinearRing(); else return factory.createLinearRing(coordinates)\n \n if (geometry instanceof LineString) \n if (coordinates === null) return factory.createLineString(); else return factory.createLineString(coordinates)\n \n if (geometry instanceof Point) \n if (coordinates === null || coordinates.length === 0) return factory.createPoint(); else return factory.createPoint(coordinates[0])\n \n return geometry\n }\n get interfaces_() {\n return [GeometryEditorOperation]\n }\n}\nclass CoordinateSequenceOperation {\n edit(geometry, factory) {\n if (geometry instanceof LinearRing) \n return factory.createLinearRing(this.edit(geometry.getCoordinateSequence(), geometry))\n \n if (geometry instanceof LineString) \n return factory.createLineString(this.edit(geometry.getCoordinateSequence(), geometry))\n \n if (geometry instanceof Point) \n return factory.createPoint(this.edit(geometry.getCoordinateSequence(), geometry))\n \n return geometry\n }\n get interfaces_() {\n return [GeometryEditorOperation]\n }\n}\nGeometryEditor.NoOpGeometryOperation = NoOpGeometryOperation\nGeometryEditor.CoordinateOperation = CoordinateOperation\nGeometryEditor.CoordinateSequenceOperation = CoordinateSequenceOperation\n","import LineString from '../LineString.js'\nimport GeometryCollection from '../GeometryCollection.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport GeometryFilter from '../GeometryFilter.js'\nexport default class LineStringExtracter {\n constructor() {\n LineStringExtracter.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._comps = null\n const comps = arguments[0]\n this._comps = comps\n }\n static getGeometry(geom) {\n return geom.getFactory().buildGeometry(LineStringExtracter.getLines(geom))\n }\n static getLines() {\n if (arguments.length === 1) {\n const geom = arguments[0]\n return LineStringExtracter.getLines(geom, new ArrayList())\n } else if (arguments.length === 2) {\n const geom = arguments[0], lines = arguments[1]\n if (geom instanceof LineString) \n lines.add(geom)\n else if (geom instanceof GeometryCollection) \n geom.apply(new LineStringExtracter(lines))\n \n return lines\n }\n }\n filter(geom) {\n if (geom instanceof LineString) this._comps.add(geom)\n }\n get interfaces_() {\n return [GeometryFilter]\n }\n}\n","import GeometryFactory from '../geom/GeometryFactory.js'\nimport Coordinate from '../geom/Coordinate.js'\nimport AffineTransformation from '../geom/util/AffineTransformation.js'\nimport Envelope from '../geom/Envelope.js'\nexport default class GeometricShapeFactory {\n constructor() {\n GeometricShapeFactory.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._geomFact = null\n this._precModel = null\n this._dim = new Dimensions()\n this._nPts = 100\n this._rotationAngle = 0.0\n if (arguments.length === 0) {\n GeometricShapeFactory.constructor_.call(this, new GeometryFactory())\n } else if (arguments.length === 1) {\n const geomFact = arguments[0]\n this._geomFact = geomFact\n this._precModel = geomFact.getPrecisionModel()\n }\n }\n createSupercircle(power) {\n const recipPow = 1.0 / power\n const radius = this._dim.getMinSize() / 2\n const centre = this._dim.getCentre()\n const r4 = Math.pow(radius, power)\n const y0 = radius\n const xyInt = Math.pow(r4 / 2, recipPow)\n const nSegsInOct = Math.trunc(this._nPts / 8)\n const totPts = nSegsInOct * 8 + 1\n const pts = new Array(totPts).fill(null)\n const xInc = xyInt / nSegsInOct\n for (let i = 0; i <= nSegsInOct; i++) {\n let x = 0.0\n let y = y0\n if (i !== 0) {\n x = xInc * i\n const x4 = Math.pow(x, power)\n y = Math.pow(r4 - x4, recipPow)\n }\n pts[i] = this.coordTrans(x, y, centre)\n pts[2 * nSegsInOct - i] = this.coordTrans(y, x, centre)\n pts[2 * nSegsInOct + i] = this.coordTrans(y, -x, centre)\n pts[4 * nSegsInOct - i] = this.coordTrans(x, -y, centre)\n pts[4 * nSegsInOct + i] = this.coordTrans(-x, -y, centre)\n pts[6 * nSegsInOct - i] = this.coordTrans(-y, -x, centre)\n pts[6 * nSegsInOct + i] = this.coordTrans(-y, x, centre)\n pts[8 * nSegsInOct - i] = this.coordTrans(-x, y, centre)\n }\n pts[pts.length - 1] = new Coordinate(pts[0])\n const ring = this._geomFact.createLinearRing(pts)\n const poly = this._geomFact.createPolygon(ring)\n return this.rotate(poly)\n }\n setNumPoints(nPts) {\n this._nPts = nPts\n }\n setBase(base) {\n this._dim.setBase(base)\n }\n setRotation(radians) {\n this._rotationAngle = radians\n }\n setWidth(width) {\n this._dim.setWidth(width)\n }\n createEllipse() {\n const env = this._dim.getEnvelope()\n const xRadius = env.getWidth() / 2.0\n const yRadius = env.getHeight() / 2.0\n const centreX = env.getMinX() + xRadius\n const centreY = env.getMinY() + yRadius\n const pts = new Array(this._nPts + 1).fill(null)\n let iPt = 0\n for (let i = 0; i < this._nPts; i++) {\n const ang = i * (2 * Math.PI / this._nPts)\n const x = xRadius * Math.cos(ang) + centreX\n const y = yRadius * Math.sin(ang) + centreY\n pts[iPt++] = this.coord(x, y)\n }\n pts[iPt] = new Coordinate(pts[0])\n const ring = this._geomFact.createLinearRing(pts)\n const poly = this._geomFact.createPolygon(ring)\n return this.rotate(poly)\n }\n coordTrans(x, y, trans) {\n return this.coord(x + trans.x, y + trans.y)\n }\n createSquircle() {\n return this.createSupercircle(4)\n }\n setEnvelope(env) {\n this._dim.setEnvelope(env)\n }\n setCentre(centre) {\n this._dim.setCentre(centre)\n }\n createArc(startAng, angExtent) {\n const env = this._dim.getEnvelope()\n const xRadius = env.getWidth() / 2.0\n const yRadius = env.getHeight() / 2.0\n const centreX = env.getMinX() + xRadius\n const centreY = env.getMinY() + yRadius\n let angSize = angExtent\n if (angSize <= 0.0 || angSize > 2 * Math.PI) angSize = 2 * Math.PI\n const angInc = angSize / (this._nPts - 1)\n const pts = new Array(this._nPts).fill(null)\n let iPt = 0\n for (let i = 0; i < this._nPts; i++) {\n const ang = startAng + i * angInc\n const x = xRadius * Math.cos(ang) + centreX\n const y = yRadius * Math.sin(ang) + centreY\n pts[iPt++] = this.coord(x, y)\n }\n const line = this._geomFact.createLineString(pts)\n return this.rotate(line)\n }\n rotate(geom) {\n if (this._rotationAngle !== 0.0) {\n const trans = AffineTransformation.rotationInstance(this._rotationAngle, this._dim.getCentre().x, this._dim.getCentre().y)\n geom.apply(trans)\n }\n return geom\n }\n coord(x, y) {\n const pt = new Coordinate(x, y)\n this._precModel.makePrecise(pt)\n return pt\n }\n createArcPolygon(startAng, angExtent) {\n const env = this._dim.getEnvelope()\n const xRadius = env.getWidth() / 2.0\n const yRadius = env.getHeight() / 2.0\n const centreX = env.getMinX() + xRadius\n const centreY = env.getMinY() + yRadius\n let angSize = angExtent\n if (angSize <= 0.0 || angSize > 2 * Math.PI) angSize = 2 * Math.PI\n const angInc = angSize / (this._nPts - 1)\n const pts = new Array(this._nPts + 2).fill(null)\n let iPt = 0\n pts[iPt++] = this.coord(centreX, centreY)\n for (let i = 0; i < this._nPts; i++) {\n const ang = startAng + angInc * i\n const x = xRadius * Math.cos(ang) + centreX\n const y = yRadius * Math.sin(ang) + centreY\n pts[iPt++] = this.coord(x, y)\n }\n pts[iPt++] = this.coord(centreX, centreY)\n const ring = this._geomFact.createLinearRing(pts)\n const poly = this._geomFact.createPolygon(ring)\n return this.rotate(poly)\n }\n createRectangle() {\n let i = null\n let ipt = 0\n let nSide = Math.trunc(this._nPts / 4)\n if (nSide < 1) nSide = 1\n const XsegLen = this._dim.getEnvelope().getWidth() / nSide\n const YsegLen = this._dim.getEnvelope().getHeight() / nSide\n const pts = new Array(4 * nSide + 1).fill(null)\n const env = this._dim.getEnvelope()\n for ((i = 0); i < nSide; i++) {\n const x = env.getMinX() + i * XsegLen\n const y = env.getMinY()\n pts[ipt++] = this.coord(x, y)\n }\n for ((i = 0); i < nSide; i++) {\n const x = env.getMaxX()\n const y = env.getMinY() + i * YsegLen\n pts[ipt++] = this.coord(x, y)\n }\n for ((i = 0); i < nSide; i++) {\n const x = env.getMaxX() - i * XsegLen\n const y = env.getMaxY()\n pts[ipt++] = this.coord(x, y)\n }\n for ((i = 0); i < nSide; i++) {\n const x = env.getMinX()\n const y = env.getMaxY() - i * YsegLen\n pts[ipt++] = this.coord(x, y)\n }\n pts[ipt++] = new Coordinate(pts[0])\n const ring = this._geomFact.createLinearRing(pts)\n const poly = this._geomFact.createPolygon(ring)\n return this.rotate(poly)\n }\n createCircle() {\n return this.createEllipse()\n }\n setHeight(height) {\n this._dim.setHeight(height)\n }\n setSize(size) {\n this._dim.setSize(size)\n }\n}\nclass Dimensions {\n constructor() {\n Dimensions.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.base = null\n this.centre = null\n this.width = null\n this.height = null\n }\n setBase(base) {\n this.base = base\n }\n setWidth(width) {\n this.width = width\n }\n getBase() {\n return this.base\n }\n getWidth() {\n return this.width\n }\n setEnvelope(env) {\n this.width = env.getWidth()\n this.height = env.getHeight()\n this.base = new Coordinate(env.getMinX(), env.getMinY())\n this.centre = new Coordinate(env.centre())\n }\n setCentre(centre) {\n this.centre = centre\n }\n getMinSize() {\n return Math.min(this.width, this.height)\n }\n getEnvelope() {\n if (this.base !== null) \n return new Envelope(this.base.x, this.base.x + this.width, this.base.y, this.base.y + this.height)\n \n if (this.centre !== null) \n return new Envelope(this.centre.x - this.width / 2, this.centre.x + this.width / 2, this.centre.y - this.height / 2, this.centre.y + this.height / 2)\n \n return new Envelope(0, this.width, 0, this.height)\n }\n getCentre() {\n if (this.centre === null) \n this.centre = new Coordinate(this.base.x + this.width / 2, this.base.y + this.height / 2)\n \n return this.centre\n }\n getHeight() {\n return this.height\n }\n setHeight(height) {\n this.height = height\n }\n setSize(size) {\n this.height = size\n this.width = size\n }\n}\nGeometricShapeFactory.Dimensions = Dimensions\n","export default class GraphComponent {\n constructor() {\n GraphComponent.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._isMarked = false\n this._isVisited = false\n this._data = null\n }\n static getComponentWithVisitedState(i, visitedState) {\n while (i.hasNext()) {\n const comp = i.next()\n if (comp.isVisited() === visitedState) return comp\n }\n return null\n }\n static setVisited(i, visited) {\n while (i.hasNext()) {\n const comp = i.next()\n comp.setVisited(visited)\n }\n }\n static setMarked(i, marked) {\n while (i.hasNext()) {\n const comp = i.next()\n comp.setMarked(marked)\n }\n }\n setVisited(isVisited) {\n this._isVisited = isVisited\n }\n isMarked() {\n return this._isMarked\n }\n setData(data) {\n this._data = data\n }\n getData() {\n return this._data\n }\n setMarked(isMarked) {\n this._isMarked = isMarked\n }\n getContext() {\n return this._data\n }\n isVisited() {\n return this._isVisited\n }\n setContext(data) {\n this._data = data\n }\n}\n","import Orientation from '../algorithm/Orientation.js'\nimport Comparable from '../../../../java/lang/Comparable.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Quadrant from '../geomgraph/Quadrant.js'\nimport GraphComponent from './GraphComponent.js'\nexport default class DirectedEdge extends GraphComponent {\n constructor() {\n super()\n DirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._parentEdge = null\n this._from = null\n this._to = null\n this._p0 = null\n this._p1 = null\n this._sym = null\n this._edgeDirection = null\n this._quadrant = null\n this._angle = null\n if (arguments.length === 0) {} else if (arguments.length === 4) {\n const from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3]\n this._from = from\n this._to = to\n this._edgeDirection = edgeDirection\n this._p0 = from.getCoordinate()\n this._p1 = directionPt\n const dx = this._p1.x - this._p0.x\n const dy = this._p1.y - this._p0.y\n this._quadrant = Quadrant.quadrant(dx, dy)\n this._angle = Math.atan2(dy, dx)\n }\n }\n static toEdges(dirEdges) {\n const edges = new ArrayList()\n for (let i = dirEdges.iterator(); i.hasNext(); ) \n edges.add(i.next()._parentEdge)\n \n return edges\n }\n isRemoved() {\n return this._parentEdge === null\n }\n compareDirection(e) {\n if (this._quadrant > e._quadrant) return 1\n if (this._quadrant < e._quadrant) return -1\n return Orientation.index(e._p0, e._p1, this._p1)\n }\n getCoordinate() {\n return this._from.getCoordinate()\n }\n print(out) {\n const className = this.getClass().getName()\n const lastDotPos = className.lastIndexOf('.')\n const name = className.substring(lastDotPos + 1)\n out.print(' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + this._angle)\n }\n getDirectionPt() {\n return this._p1\n }\n getAngle() {\n return this._angle\n }\n compareTo(obj) {\n const de = obj\n return this.compareDirection(de)\n }\n getFromNode() {\n return this._from\n }\n getSym() {\n return this._sym\n }\n setEdge(parentEdge) {\n this._parentEdge = parentEdge\n }\n remove() {\n this._sym = null\n this._parentEdge = null\n }\n getEdge() {\n return this._parentEdge\n }\n getQuadrant() {\n return this._quadrant\n }\n setSym(sym) {\n this._sym = sym\n }\n getToNode() {\n return this._to\n }\n getEdgeDirection() {\n return this._edgeDirection\n }\n get interfaces_() {\n return [Comparable]\n }\n}\n","import DirectedEdge from '../../planargraph/DirectedEdge.js'\nexport default class PolygonizeDirectedEdge extends DirectedEdge {\n constructor() {\n super()\n PolygonizeDirectedEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edgeRing = null\n this._next = null\n this._label = -1\n const from = arguments[0], to = arguments[1], directionPt = arguments[2], edgeDirection = arguments[3]\n DirectedEdge.constructor_.call(this, from, to, directionPt, edgeDirection)\n }\n getNext() {\n return this._next\n }\n isInRing() {\n return this._edgeRing !== null\n }\n setRing(edgeRing) {\n this._edgeRing = edgeRing\n }\n setLabel(label) {\n this._label = label\n }\n getLabel() {\n return this._label\n }\n setNext(next) {\n this._next = next\n }\n getRing() {\n return this._edgeRing\n }\n}\n","import Node from './Node.js'\nimport GraphComponent from './GraphComponent.js'\nexport default class Edge extends GraphComponent {\n constructor() {\n super()\n Edge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._dirEdge = null\n if (arguments.length === 0) {} else if (arguments.length === 2) {\n const de0 = arguments[0], de1 = arguments[1]\n this.setDirectedEdges(de0, de1)\n }\n }\n isRemoved() {\n return this._dirEdge === null\n }\n setDirectedEdges(de0, de1) {\n this._dirEdge = [de0, de1]\n de0.setEdge(this)\n de1.setEdge(this)\n de0.setSym(de1)\n de1.setSym(de0)\n de0.getFromNode().addOutEdge(de0)\n de1.getFromNode().addOutEdge(de1)\n }\n getDirEdge() {\n if (Number.isInteger(arguments[0])) {\n const i = arguments[0]\n return this._dirEdge[i]\n } else if (arguments[0] instanceof Node) {\n const fromNode = arguments[0]\n if (this._dirEdge[0].getFromNode() === fromNode) return this._dirEdge[0]\n if (this._dirEdge[1].getFromNode() === fromNode) return this._dirEdge[1]\n return null\n }\n }\n remove() {\n this._dirEdge = null\n }\n getOppositeNode(node) {\n if (this._dirEdge[0].getFromNode() === node) return this._dirEdge[0].getToNode()\n if (this._dirEdge[1].getFromNode() === node) return this._dirEdge[1].getToNode()\n return null\n }\n}\n","import Collections from '../../../../java/util/Collections.js'\nimport DirectedEdge from './DirectedEdge.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Edge from './Edge.js'\nexport default class DirectedEdgeStar {\n constructor() {\n DirectedEdgeStar.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._outEdges = new ArrayList()\n this._sorted = false\n }\n getNextEdge(dirEdge) {\n const i = this.getIndex(dirEdge)\n return this._outEdges.get(this.getIndex(i + 1))\n }\n getCoordinate() {\n const it = this.iterator()\n if (!it.hasNext()) return null\n const e = it.next()\n return e.getCoordinate()\n }\n iterator() {\n this.sortEdges()\n return this._outEdges.iterator()\n }\n sortEdges() {\n if (!this._sorted) {\n Collections.sort(this._outEdges)\n this._sorted = true\n }\n }\n remove(de) {\n this._outEdges.remove(de)\n }\n getEdges() {\n this.sortEdges()\n return this._outEdges\n }\n getNextCWEdge(dirEdge) {\n const i = this.getIndex(dirEdge)\n return this._outEdges.get(this.getIndex(i - 1))\n }\n getIndex() {\n if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this.sortEdges()\n for (let i = 0; i < this._outEdges.size(); i++) {\n const de = this._outEdges.get(i)\n if (de.getEdge() === edge) return i\n }\n return -1\n } else if (arguments[0] instanceof DirectedEdge) {\n const dirEdge = arguments[0]\n this.sortEdges()\n for (let i = 0; i < this._outEdges.size(); i++) {\n const de = this._outEdges.get(i)\n if (de === dirEdge) return i\n }\n return -1\n } else if (Number.isInteger(arguments[0])) {\n const i = arguments[0]\n let modi = i % this._outEdges.size()\n if (modi < 0) modi += this._outEdges.size()\n return modi\n }\n }\n add(de) {\n this._outEdges.add(de)\n this._sorted = false\n }\n getDegree() {\n return this._outEdges.size()\n }\n}\n","import DirectedEdgeStar from './DirectedEdgeStar.js'\nimport HashSet from '../../../../java/util/HashSet.js'\nimport DirectedEdge from './DirectedEdge.js'\nimport GraphComponent from './GraphComponent.js'\nexport default class Node extends GraphComponent {\n constructor() {\n super()\n Node.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._pt = null\n this._deStar = null\n if (arguments.length === 1) {\n const pt = arguments[0]\n Node.constructor_.call(this, pt, new DirectedEdgeStar())\n } else if (arguments.length === 2) {\n const pt = arguments[0], deStar = arguments[1]\n this._pt = pt\n this._deStar = deStar\n }\n }\n static getEdgesBetween(node0, node1) {\n const edges0 = DirectedEdge.toEdges(node0.getOutEdges().getEdges())\n const commonEdges = new HashSet(edges0)\n const edges1 = DirectedEdge.toEdges(node1.getOutEdges().getEdges())\n commonEdges.retainAll(edges1)\n return commonEdges\n }\n isRemoved() {\n return this._pt === null\n }\n addOutEdge(de) {\n this._deStar.add(de)\n }\n getCoordinate() {\n return this._pt\n }\n getOutEdges() {\n return this._deStar\n }\n remove() {\n if (arguments.length === 0) {\n this._pt = null\n } else if (arguments.length === 1) {\n const de = arguments[0]\n this._deStar.remove(de)\n }\n }\n getIndex(edge) {\n return this._deStar.getIndex(edge)\n }\n getDegree() {\n return this._deStar.getDegree()\n }\n}\n","import Edge from '../../planargraph/Edge.js'\nexport default class PolygonizeEdge extends Edge {\n constructor() {\n super()\n PolygonizeEdge.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._line = null\n const line = arguments[0]\n this._line = line\n }\n getLine() {\n return this._line\n }\n}\n","import Location from '../../geom/Location.js'\nimport CoordinateList from '../../geom/CoordinateList.js'\nimport WKTWriter from '../../io/WKTWriter.js'\nimport CoordinateArraySequence from '../../geom/impl/CoordinateArraySequence.js'\nimport IsValidOp from '../valid/IsValidOp.js'\nimport LinearRing from '../../geom/LinearRing.js'\nimport Exception from '../../../../../java/lang/Exception.js'\nimport Orientation from '../../algorithm/Orientation.js'\nimport System from '../../../../../java/lang/System.js'\nimport CoordinateArrays from '../../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Comparator from '../../../../../java/util/Comparator.js'\nimport IndexedPointInAreaLocator from '../../algorithm/locate/IndexedPointInAreaLocator.js'\nimport Assert from '../../util/Assert.js'\nexport default class EdgeRing {\n constructor() {\n EdgeRing.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n this._deList = new ArrayList()\n this._lowestEdge = null\n this._ring = null\n this._locator = null\n this._ringPts = null\n this._holes = null\n this._shell = null\n this._isHole = null\n this._isProcessed = false\n this._isIncludedSet = false\n this._isIncluded = false\n const factory = arguments[0]\n this._factory = factory\n }\n static findDirEdgesInRing(startDE) {\n let de = startDE\n const edges = new ArrayList()\n do {\n edges.add(de)\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n return edges\n }\n static addEdge(coords, isForward, coordList) {\n if (isForward) \n for (let i = 0; i < coords.length; i++) \n coordList.add(coords[i], false)\n \n else \n for (let i = coords.length - 1; i >= 0; i--) \n coordList.add(coords[i], false)\n \n \n }\n static findEdgeRingContaining(testEr, erList) {\n const testRing = testEr.getRing()\n const testEnv = testRing.getEnvelopeInternal()\n let testPt = testRing.getCoordinateN(0)\n let minRing = null\n let minRingEnv = null\n for (let it = erList.iterator(); it.hasNext(); ) {\n const tryEdgeRing = it.next()\n const tryRing = tryEdgeRing.getRing()\n const tryShellEnv = tryRing.getEnvelopeInternal()\n if (tryShellEnv.equals(testEnv)) continue\n if (!tryShellEnv.contains(testEnv)) continue\n testPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryEdgeRing.getCoordinates())\n const isContained = tryEdgeRing.isInRing(testPt)\n if (isContained) \n if (minRing === null || minRingEnv.contains(tryShellEnv)) {\n minRing = tryEdgeRing\n minRingEnv = minRing.getRing().getEnvelopeInternal()\n }\n \n }\n return minRing\n }\n isIncluded() {\n return this._isIncluded\n }\n getCoordinates() {\n if (this._ringPts === null) {\n const coordList = new CoordinateList()\n for (let i = this._deList.iterator(); i.hasNext(); ) {\n const de = i.next()\n const edge = de.getEdge()\n EdgeRing.addEdge(edge.getLine().getCoordinates(), de.getEdgeDirection(), coordList)\n }\n this._ringPts = coordList.toCoordinateArray()\n }\n return this._ringPts\n }\n isIncludedSet() {\n return this._isIncludedSet\n }\n isValid() {\n this.getCoordinates()\n if (this._ringPts.length <= 3) return false\n this.getRing()\n return IsValidOp.isValid(this._ring)\n }\n build(startDE) {\n let de = startDE\n do {\n this.add(de)\n de.setRing(this)\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n }\n isInRing(pt) {\n return Location.EXTERIOR !== this.getLocator().locate(pt)\n }\n isOuterHole() {\n if (!this._isHole) return false\n return !this.hasShell()\n }\n getPolygon() {\n let holeLR = null\n if (this._holes !== null) {\n holeLR = new Array(this._holes.size()).fill(null)\n for (let i = 0; i < this._holes.size(); i++) \n holeLR[i] = this._holes.get(i)\n \n }\n const poly = this._factory.createPolygon(this._ring, holeLR)\n return poly\n }\n isHole() {\n return this._isHole\n }\n isProcessed() {\n return this._isProcessed\n }\n addHole() {\n if (arguments[0] instanceof LinearRing) {\n const hole = arguments[0]\n if (this._holes === null) this._holes = new ArrayList()\n this._holes.add(hole)\n } else if (arguments[0] instanceof EdgeRing) {\n const holeER = arguments[0]\n holeER.setShell(this)\n const hole = holeER.getRing()\n if (this._holes === null) this._holes = new ArrayList()\n this._holes.add(hole)\n }\n }\n setIncluded(isIncluded) {\n this._isIncluded = isIncluded\n this._isIncludedSet = true\n }\n getOuterHole() {\n if (this.isHole()) return null\n for (let i = 0; i < this._deList.size(); i++) {\n const de = this._deList.get(i)\n const adjRing = de.getSym().getRing()\n if (adjRing.isOuterHole()) return adjRing\n }\n return null\n }\n computeHole() {\n const ring = this.getRing()\n this._isHole = Orientation.isCCW(ring.getCoordinates())\n }\n hasShell() {\n return this._shell !== null\n }\n isOuterShell() {\n return this.getOuterHole() !== null\n }\n getLineString() {\n this.getCoordinates()\n return this._factory.createLineString(this._ringPts)\n }\n toString() {\n return WKTWriter.toLineString(new CoordinateArraySequence(this.getCoordinates()))\n }\n getLocator() {\n if (this._locator === null) \n this._locator = new IndexedPointInAreaLocator(this.getRing())\n \n return this._locator\n }\n getShell() {\n if (this.isHole()) return this._shell\n return this\n }\n add(de) {\n this._deList.add(de)\n }\n getRing() {\n if (this._ring !== null) return this._ring\n this.getCoordinates()\n if (this._ringPts.length < 3) System.out.println(this._ringPts)\n try {\n this._ring = this._factory.createLinearRing(this._ringPts)\n } catch (ex) {\n if (ex instanceof Exception) \n System.out.println(this._ringPts)\n else throw ex\n } finally {}\n return this._ring\n }\n updateIncluded() {\n if (this.isHole()) return null\n for (let i = 0; i < this._deList.size(); i++) {\n const de = this._deList.get(i)\n const adjShell = de.getSym().getRing().getShell()\n if (adjShell !== null && adjShell.isIncludedSet()) {\n this.setIncluded(!adjShell.isIncluded())\n return null\n }\n }\n }\n setShell(shell) {\n this._shell = shell\n }\n setProcessed(isProcessed) {\n this._isProcessed = isProcessed\n }\n}\nclass EnvelopeComparator {\n compare(obj0, obj1) {\n const r0 = obj0\n const r1 = obj1\n return r0.getRing().getEnvelope().compareTo(r1.getRing().getEnvelope())\n }\n get interfaces_() {\n return [Comparator]\n }\n}\nEdgeRing.EnvelopeComparator = EnvelopeComparator\n","import TreeMap from '../../../../java/util/TreeMap.js'\nexport default class NodeMap {\n constructor() {\n NodeMap.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._nodeMap = new TreeMap()\n }\n find(coord) {\n return this._nodeMap.get(coord)\n }\n iterator() {\n return this._nodeMap.values().iterator()\n }\n remove(pt) {\n return this._nodeMap.remove(pt)\n }\n values() {\n return this._nodeMap.values()\n }\n add(n) {\n this._nodeMap.put(n.getCoordinate(), n)\n return n\n }\n}\n","import HashSet from '../../../../java/util/HashSet.js'\nimport Node from './Node.js'\nimport NodeMap from './NodeMap.js'\nimport DirectedEdge from './DirectedEdge.js'\nimport ArrayList from '../../../../java/util/ArrayList.js'\nimport Edge from './Edge.js'\nexport default class PlanarGraph {\n constructor() {\n PlanarGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._edges = new HashSet()\n this._dirEdges = new HashSet()\n this._nodeMap = new NodeMap()\n }\n findNodesOfDegree(degree) {\n const nodesFound = new ArrayList()\n for (let i = this.nodeIterator(); i.hasNext(); ) {\n const node = i.next()\n if (node.getDegree() === degree) nodesFound.add(node)\n }\n return nodesFound\n }\n dirEdgeIterator() {\n return this._dirEdges.iterator()\n }\n edgeIterator() {\n return this._edges.iterator()\n }\n remove() {\n if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this.remove(edge.getDirEdge(0))\n this.remove(edge.getDirEdge(1))\n this._edges.remove(edge)\n edge.remove()\n } else if (arguments[0] instanceof DirectedEdge) {\n const de = arguments[0]\n const sym = de.getSym()\n if (sym !== null) sym.setSym(null)\n de.getFromNode().remove(de)\n de.remove()\n this._dirEdges.remove(de)\n } else if (arguments[0] instanceof Node) {\n const node = arguments[0]\n const outEdges = node.getOutEdges().getEdges()\n for (let i = outEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n const sym = de.getSym()\n if (sym !== null) this.remove(sym)\n this._dirEdges.remove(de)\n const edge = de.getEdge()\n if (edge !== null) \n this._edges.remove(edge)\n \n }\n this._nodeMap.remove(node.getCoordinate())\n node.remove()\n }\n }\n findNode(pt) {\n return this._nodeMap.find(pt)\n }\n getEdges() {\n return this._edges\n }\n nodeIterator() {\n return this._nodeMap.iterator()\n }\n contains() {\n if (arguments[0] instanceof Edge) {\n const e = arguments[0]\n return this._edges.contains(e)\n } else if (arguments[0] instanceof DirectedEdge) {\n const de = arguments[0]\n return this._dirEdges.contains(de)\n }\n }\n add() {\n if (arguments[0] instanceof Node) {\n const node = arguments[0]\n this._nodeMap.add(node)\n } else if (arguments[0] instanceof Edge) {\n const edge = arguments[0]\n this._edges.add(edge)\n this.add(edge.getDirEdge(0))\n this.add(edge.getDirEdge(1))\n } else if (arguments[0] instanceof DirectedEdge) {\n const dirEdge = arguments[0]\n this._dirEdges.add(dirEdge)\n }\n }\n getNodes() {\n return this._nodeMap.values()\n }\n}\n","import PolygonizeDirectedEdge from './PolygonizeDirectedEdge.js'\nimport HashSet from '../../../../../java/util/HashSet.js'\nimport Stack from '../../../../../java/util/Stack.js'\nimport Node from '../../planargraph/Node.js'\nimport PolygonizeEdge from './PolygonizeEdge.js'\nimport EdgeRing from './EdgeRing.js'\nimport CoordinateArrays from '../../geom/CoordinateArrays.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport Assert from '../../util/Assert.js'\nimport PlanarGraph from '../../planargraph/PlanarGraph.js'\nexport default class PolygonizeGraph extends PlanarGraph {\n constructor() {\n super()\n PolygonizeGraph.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._factory = null\n const factory = arguments[0]\n this._factory = factory\n }\n static findLabeledEdgeRings(dirEdges) {\n const edgeRingStarts = new ArrayList()\n let currLabel = 1\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n if (de.getLabel() >= 0) continue\n edgeRingStarts.add(de)\n const edges = EdgeRing.findDirEdgesInRing(de)\n PolygonizeGraph.label(edges, currLabel)\n currLabel++\n }\n return edgeRingStarts\n }\n static getDegreeNonDeleted(node) {\n const edges = node.getOutEdges().getEdges()\n let degree = 0\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (!de.isMarked()) degree++\n }\n return degree\n }\n static deleteAllEdges(node) {\n const edges = node.getOutEdges().getEdges()\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setMarked(true)\n const sym = de.getSym()\n if (sym !== null) sym.setMarked(true)\n }\n }\n static label(dirEdges, label) {\n for (let i = dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setLabel(label)\n }\n }\n static computeNextCWEdges(node) {\n const deStar = node.getOutEdges()\n let startDE = null\n let prevDE = null\n for (let i = deStar.getEdges().iterator(); i.hasNext(); ) {\n const outDE = i.next()\n if (outDE.isMarked()) continue\n if (startDE === null) startDE = outDE\n if (prevDE !== null) {\n const sym = prevDE.getSym()\n sym.setNext(outDE)\n }\n prevDE = outDE\n }\n if (prevDE !== null) {\n const sym = prevDE.getSym()\n sym.setNext(startDE)\n }\n }\n static computeNextCCWEdges(node, label) {\n const deStar = node.getOutEdges()\n let firstOutDE = null\n let prevInDE = null\n const edges = deStar.getEdges()\n for (let i = edges.size() - 1; i >= 0; i--) {\n const de = edges.get(i)\n const sym = de.getSym()\n let outDE = null\n if (de.getLabel() === label) outDE = de\n let inDE = null\n if (sym.getLabel() === label) inDE = sym\n if (outDE === null && inDE === null) continue\n if (inDE !== null) \n prevInDE = inDE\n \n if (outDE !== null) {\n if (prevInDE !== null) {\n prevInDE.setNext(outDE)\n prevInDE = null\n }\n if (firstOutDE === null) firstOutDE = outDE\n }\n }\n if (prevInDE !== null) {\n Assert.isTrue(firstOutDE !== null)\n prevInDE.setNext(firstOutDE)\n }\n }\n static getDegree(node, label) {\n const edges = node.getOutEdges().getEdges()\n let degree = 0\n for (let i = edges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.getLabel() === label) degree++\n }\n return degree\n }\n static findIntersectionNodes(startDE, label) {\n let de = startDE\n let intNodes = null\n do {\n const node = de.getFromNode()\n if (PolygonizeGraph.getDegree(node, label) > 1) {\n if (intNodes === null) intNodes = new ArrayList()\n intNodes.add(node)\n }\n de = de.getNext()\n Assert.isTrue(de !== null, 'found null DE in ring')\n Assert.isTrue(de === startDE || !de.isInRing(), 'found DE already in ring')\n } while (de !== startDE)\n return intNodes\n }\n findEdgeRing(startDE) {\n const er = new EdgeRing(this._factory)\n er.build(startDE)\n return er\n }\n computeDepthParity() {\n if (arguments.length === 0) {\n while (true) {\n const de = null\n if (de === null) return null\n this.computeDepthParity(de)\n }\n } else if (arguments.length === 1) {\n const de = arguments[0]\n }\n }\n computeNextCWEdges() {\n for (let iNode = this.nodeIterator(); iNode.hasNext(); ) {\n const node = iNode.next()\n PolygonizeGraph.computeNextCWEdges(node)\n }\n }\n addEdge(line) {\n if (line.isEmpty()) \n return null\n \n const linePts = CoordinateArrays.removeRepeatedPoints(line.getCoordinates())\n if (linePts.length < 2) \n return null\n \n const startPt = linePts[0]\n const endPt = linePts[linePts.length - 1]\n const nStart = this.getNode(startPt)\n const nEnd = this.getNode(endPt)\n const de0 = new PolygonizeDirectedEdge(nStart, nEnd, linePts[1], true)\n const de1 = new PolygonizeDirectedEdge(nEnd, nStart, linePts[linePts.length - 2], false)\n const edge = new PolygonizeEdge(line)\n edge.setDirectedEdges(de0, de1)\n this.add(edge)\n }\n deleteCutEdges() {\n this.computeNextCWEdges()\n PolygonizeGraph.findLabeledEdgeRings(this._dirEdges)\n const cutLines = new ArrayList()\n for (let i = this._dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n const sym = de.getSym()\n if (de.getLabel() === sym.getLabel()) {\n de.setMarked(true)\n sym.setMarked(true)\n const e = de.getEdge()\n cutLines.add(e.getLine())\n }\n }\n return cutLines\n }\n getEdgeRings() {\n this.computeNextCWEdges()\n PolygonizeGraph.label(this._dirEdges, -1)\n const maximalRings = PolygonizeGraph.findLabeledEdgeRings(this._dirEdges)\n this.convertMaximalToMinimalEdgeRings(maximalRings)\n const edgeRingList = new ArrayList()\n for (let i = this._dirEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n if (de.isMarked()) continue\n if (de.isInRing()) continue\n const er = this.findEdgeRing(de)\n edgeRingList.add(er)\n }\n return edgeRingList\n }\n getNode(pt) {\n let node = this.findNode(pt)\n if (node === null) {\n node = new Node(pt)\n this.add(node)\n }\n return node\n }\n convertMaximalToMinimalEdgeRings(ringEdges) {\n for (let i = ringEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n const label = de.getLabel()\n const intNodes = PolygonizeGraph.findIntersectionNodes(de, label)\n if (intNodes === null) continue\n for (let iNode = intNodes.iterator(); iNode.hasNext(); ) {\n const node = iNode.next()\n PolygonizeGraph.computeNextCCWEdges(node, label)\n }\n }\n }\n deleteDangles() {\n const nodesToRemove = this.findNodesOfDegree(1)\n const dangleLines = new HashSet()\n const nodeStack = new Stack()\n for (let i = nodesToRemove.iterator(); i.hasNext(); ) \n nodeStack.push(i.next())\n \n while (!nodeStack.isEmpty()) {\n const node = nodeStack.pop()\n PolygonizeGraph.deleteAllEdges(node)\n const nodeOutEdges = node.getOutEdges().getEdges()\n for (let i = nodeOutEdges.iterator(); i.hasNext(); ) {\n const de = i.next()\n de.setMarked(true)\n const sym = de.getSym()\n if (sym !== null) sym.setMarked(true)\n const e = de.getEdge()\n dangleLines.add(e.getLine())\n const toNode = de.getToNode()\n if (PolygonizeGraph.getDegreeNonDeleted(toNode) === 1) nodeStack.push(toNode)\n }\n }\n return dangleLines\n }\n}\n","import STRtree from '../../index/strtree/STRtree.js'\nimport EdgeRing from './EdgeRing.js'\nexport default class HoleAssigner {\n constructor() {\n HoleAssigner.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._shells = null\n this._shellIndex = null\n const shells = arguments[0]\n this._shells = shells\n this.buildIndex()\n }\n static assignHolesToShells(holes, shells) {\n const assigner = new HoleAssigner(shells)\n assigner.assignHolesToShells(holes)\n }\n assignHolesToShells(holeList) {\n for (let i = holeList.iterator(); i.hasNext(); ) {\n const holeER = i.next()\n this.assignHoleToShell(holeER)\n }\n }\n buildIndex() {\n this._shellIndex = new STRtree()\n for (const shell of this._shells) \n this._shellIndex.insert(shell.getRing().getEnvelopeInternal(), shell)\n \n }\n queryOverlappingShells(ringEnv) {\n return this._shellIndex.query(ringEnv)\n }\n findShellContaining(testEr) {\n const testEnv = testEr.getRing().getEnvelopeInternal()\n const candidateShells = this.queryOverlappingShells(testEnv)\n return EdgeRing.findEdgeRingContaining(testEr, candidateShells)\n }\n assignHoleToShell(holeER) {\n const shell = this.findShellContaining(holeER)\n if (shell !== null) \n shell.addHole(holeER)\n \n }\n}\n","import LineString from '../../geom/LineString.js'\nimport Geometry from '../../geom/Geometry.js'\nimport PolygonizeGraph from './PolygonizeGraph.js'\nimport hasInterface from '../../../../../hasInterface.js'\nimport GeometryFactory from '../../geom/GeometryFactory.js'\nimport Collection from '../../../../../java/util/Collection.js'\nimport Collections from '../../../../../java/util/Collections.js'\nimport EdgeRing from './EdgeRing.js'\nimport GeometryComponentFilter from '../../geom/GeometryComponentFilter.js'\nimport ArrayList from '../../../../../java/util/ArrayList.js'\nimport HoleAssigner from './HoleAssigner.js'\nexport default class Polygonizer {\n constructor() {\n Polygonizer.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this._lineStringAdder = new LineStringAdder(this)\n this._graph = null\n this._dangles = new ArrayList()\n this._cutEdges = new ArrayList()\n this._invalidRingLines = new ArrayList()\n this._holeList = null\n this._shellList = null\n this._polyList = null\n this._isCheckingRingsValid = true\n this._extractOnlyPolygonal = null\n this._geomFactory = null\n if (arguments.length === 0) {\n Polygonizer.constructor_.call(this, false)\n } else if (arguments.length === 1) {\n const extractOnlyPolygonal = arguments[0]\n this._extractOnlyPolygonal = extractOnlyPolygonal\n }\n }\n static extractPolygons(shellList, includeAll) {\n const polyList = new ArrayList()\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (includeAll || er.isIncluded()) \n polyList.add(er.getPolygon())\n \n }\n return polyList\n }\n static findOuterShells(shellList) {\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n const outerHoleER = er.getOuterHole()\n if (outerHoleER !== null && !outerHoleER.isProcessed()) {\n er.setIncluded(true)\n outerHoleER.setProcessed(true)\n }\n }\n }\n static findDisjointShells(shellList) {\n Polygonizer.findOuterShells(shellList)\n let isMoreToScan = null\n do {\n isMoreToScan = false\n for (let i = shellList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (er.isIncludedSet()) continue\n er.updateIncluded()\n if (!er.isIncludedSet()) \n isMoreToScan = true\n \n }\n } while (isMoreToScan)\n }\n getGeometry() {\n if (this._geomFactory === null) this._geomFactory = new GeometryFactory()\n this.polygonize()\n if (this._extractOnlyPolygonal) \n return this._geomFactory.buildGeometry(this._polyList)\n \n return this._geomFactory.createGeometryCollection(GeometryFactory.toGeometryArray(this._polyList))\n }\n getInvalidRingLines() {\n this.polygonize()\n return this._invalidRingLines\n }\n findValidRings(edgeRingList, validEdgeRingList, invalidRingList) {\n for (let i = edgeRingList.iterator(); i.hasNext(); ) {\n const er = i.next()\n if (er.isValid()) validEdgeRingList.add(er); else invalidRingList.add(er.getLineString())\n }\n }\n polygonize() {\n if (this._polyList !== null) return null\n this._polyList = new ArrayList()\n if (this._graph === null) return null\n this._dangles = this._graph.deleteDangles()\n this._cutEdges = this._graph.deleteCutEdges()\n const edgeRingList = this._graph.getEdgeRings()\n let validEdgeRingList = new ArrayList()\n this._invalidRingLines = new ArrayList()\n if (this._isCheckingRingsValid) \n this.findValidRings(edgeRingList, validEdgeRingList, this._invalidRingLines)\n else \n validEdgeRingList = edgeRingList\n \n this.findShellsAndHoles(validEdgeRingList)\n HoleAssigner.assignHolesToShells(this._holeList, this._shellList)\n Collections.sort(this._shellList, new EdgeRing.EnvelopeComparator())\n let includeAll = true\n if (this._extractOnlyPolygonal) {\n Polygonizer.findDisjointShells(this._shellList)\n includeAll = false\n }\n this._polyList = Polygonizer.extractPolygons(this._shellList, includeAll)\n }\n getDangles() {\n this.polygonize()\n return this._dangles\n }\n getCutEdges() {\n this.polygonize()\n return this._cutEdges\n }\n getPolygons() {\n this.polygonize()\n return this._polyList\n }\n add() {\n if (hasInterface(arguments[0], Collection)) {\n const geomList = arguments[0]\n for (let i = geomList.iterator(); i.hasNext(); ) {\n const geometry = i.next()\n this.add(geometry)\n }\n } else if (arguments[0] instanceof LineString) {\n const line = arguments[0]\n this._geomFactory = line.getFactory()\n if (this._graph === null) this._graph = new PolygonizeGraph(this._geomFactory)\n this._graph.addEdge(line)\n } else if (arguments[0] instanceof Geometry) {\n const g = arguments[0]\n g.apply(this._lineStringAdder)\n }\n }\n setCheckRingsValid(isCheckingRingsValid) {\n this._isCheckingRingsValid = isCheckingRingsValid\n }\n findShellsAndHoles(edgeRingList) {\n this._holeList = new ArrayList()\n this._shellList = new ArrayList()\n for (let i = edgeRingList.iterator(); i.hasNext(); ) {\n const er = i.next()\n er.computeHole()\n if (er.isHole()) this._holeList.add(er); else this._shellList.add(er)\n }\n }\n}\nclass LineStringAdder {\n constructor() {\n LineStringAdder.constructor_.apply(this, arguments)\n }\n static constructor_() {\n this.p = null\n const p = arguments[0]\n this.p = p\n }\n filter(g) {\n if (g instanceof LineString) this.p.add(g)\n }\n get interfaces_() {\n return [GeometryComponentFilter]\n }\n}\nPolygonizer.LineStringAdder = LineStringAdder\n","import {Keys, MapInteraction, MapInteractions} from './interactions';\nimport {OlHelper, StyleDefinition} from './ol.helper';\nimport {ApEditStyles} from './layers/ap-edit-styles';\nimport GeometryType from 'ol/geom/GeometryType';\nimport * as OlGeom from 'ol/geom';\nimport LinearRing from 'ol/geom/LinearRing';\nimport {ApMapInstance} from './ap-map.instance';\nimport Polygon from 'ol/geom/Polygon';\nimport LineString from 'ol/geom/LineString';\nimport {cloneDeep} from 'lodash';\nimport OlFeature from 'ol/Feature';\nimport Feature from 'ol/Feature';\nimport {ApGuidUtil} from '../ap-utils';\nimport * as NTSGeom from 'jsts/org/locationtech/jts/geom';\nimport UnionOp from 'jsts/org/locationtech/jts/operation/union/UnionOp';\nimport LineStringExtracter from 'jsts/org/locationtech/jts/geom/util/LineStringExtracter';\nimport Polygonizer from 'jsts/org/locationtech/jts/operation/polygonize/Polygonizer';\nimport VectorLayer from 'ol/layer/Vector';\nimport {Vector} from 'ol/source';\nimport {getUid} from 'ol/util';\nimport GeometrySnapper from 'jsts/org/locationtech/jts/operation/overlay/snap/GeometrySnapper';\nimport Select from 'ol/interaction/Select';\nimport VectorSource from 'ol/source/Vector';\nimport OL3Parser from 'jsts/org/locationtech/jts/io/OL3Parser';\nimport {MAP_PROJECTION} from './layers/ap-map.settings';\nimport Point from 'ol/geom/Point';\nimport {FieldStore} from '../stores/farm/field.store';\nimport Interaction from 'ol/interaction/Interaction';\nimport Modify from 'ol/interaction/Modify';\nimport {defaultStyle} from './layers/ap-fields.style';\nimport {Guid} from 'ts-tooling';\nimport {MapEditStore} from '../stores/map/map.edit.store';\nimport {ApFieldsDescriptionLayer} from './layers/ap-fields.layer';\nimport {LayerSyncStrategy} from './layers/ap-base-vector.layer';\nimport {ApPolygonEditLayer} from './layers/ap-polygon-edit.layer';\nimport {EditorService} from '../map/components/edit/editor.service';\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\nimport {NotifyStore} from '../stores/dialog/notify.store';\nimport {Translate} from 'ol/interaction';\n\nconst Ol3Parser = new OL3Parser();\nOl3Parser['inject'](OlGeom.Point, OlGeom.LineString, LinearRing, OlGeom.Polygon, OlGeom.MultiPoint,\n OlGeom.MultiLineString, OlGeom.MultiPolygon);\n\nexport class GeometryEditor {\n static DrawHole(geometryType: GeometryType, vectorSource: Vector): Interaction {\n return MapInteraction.Add(OlHelper.DrawVector(geometryType, vectorSource, ApEditStyles.selectedStyle));\n }\n\n static DeleteHole(geometryType: GeometryType, vectorSource: Vector): void {\n if (!ApMapInstance.mapRef) {\n console.warn('missing map reference');\n return;\n }\n ApMapInstance.mapRef.on('singleclick', c => {\n const coo = ApMapInstance.mapRef.getCoordinateFromPixel(c.pixel);\n const features = vectorSource.getFeatures().filter(f => {\n const pg = f.getGeometry() as Polygon;\n const pgCompare = new OlGeom.Polygon([pg.getLinearRing(0).getCoordinates()]);\n if (pgCompare.intersectsCoordinate(coo)) {\n return f;\n }\n return undefined;\n });\n if (features.length === 1) {\n const oldPoly = features[0].getGeometry() as Polygon;\n const newPoly = new OlGeom.Polygon([oldPoly.getLinearRing(0).getCoordinates()]);\n let i;\n let intersected = false;\n for (i = 1; i < oldPoly.getLinearRingCount(); i++) {\n const lr: LinearRing = oldPoly.getLinearRing(i);\n const shellPg = new OlGeom.Polygon([lr.getCoordinates()]);\n if (!shellPg.intersectsCoordinate(coo)) {\n newPoly.appendLinearRing(lr);\n } else {\n intersected = true;\n }\n }\n if (intersected) {\n features[0].setGeometry(newPoly);\n features[0].set('tag', '');\n // TODO: refactor after Openlayers fix\n // this.mapStore.SetEditFeature(features[0]);\n MapInteraction.ClearSelection();\n }\n }\n });\n }\n\n static SnapToFeature(geometryType: GeometryType, vectorSource: Vector, tolerance = 10): Interaction {\n return MapInteraction.Add(OlHelper.Snap(vectorSource, tolerance));\n }\n\n static ModifyLayerSourceFeature(geometryType: GeometryType, layer: VectorLayer, features: Feature[] = null, ignoreSource: boolean = false): Modify {\n MapInteraction.Remove(MapInteractions.MODIFY);\n let modify: Modify;\n if (Array.isArray(features)) {\n modify = OlHelper.ModifySelected(features, ignoreSource ? null : layer.getSource(), ApEditStyles.selectedStyle);\n } else {\n modify = OlHelper.ModifySelected(layer.getSource().getFeatures(), layer.getSource(), ApEditStyles.selectedStyle);\n }\n MapInteraction.Add(modify);\n return modify;\n }\n\n static TranslateLayerSourceFeature(geometryType: GeometryType, layer: VectorLayer, features: Feature[] = null): Translate {\n MapInteraction.Remove(MapInteractions.TRANSLATE);\n let translate: Translate;\n if (Array.isArray(features)) {\n translate = OlHelper.TranslateSelected(features);\n } else {\n translate = OlHelper.TranslateSelected(layer.getSource().getFeatures());\n }\n MapInteraction.Add(translate);\n return translate;\n }\n\n static SplitByLine(geometryType: GeometryType, editLayer: ApPolygonEditLayer, descriptionLayer: ApFieldsDescriptionLayer, mapEditStore: MapEditStore, notifyStore: NotifyStore): Interaction {\n const vectorSource = editLayer.innerSource;\n const originalField = vectorSource.getFeatures()[0];\n const drawline = MapInteraction.Add(OlHelper.DrawVector(geometryType, vectorSource, ApEditStyles.selectedStyle));\n if (!drawline) {\n console.warn('Missing drawline');\n return undefined;\n }\n\n const restoreOriginalState = function(): void {\n EditorService.SplitLineDrawn$.next(false);\n vectorSource.clear();\n vectorSource.addFeature(originalField);\n descriptionLayer.clear();\n descriptionLayer.SyncFeatures(vectorSource.getFeatures(), LayerSyncStrategy.FORCE);\n };\n\n const splitFields = function(event: any): void {\n const features = vectorSource.getFeatures();\n const line = event.feature.getGeometry() as LineString;\n const parser = new OL3Parser();\n parser['inject'](OlGeom.Point, OlGeom.LineString, LinearRing, OlGeom.Polygon, OlGeom.MultiPoint,\n OlGeom.MultiLineString, OlGeom.MultiPolygon);\n // @ts-ignore\n const splitLine = parser.read(line);\n const lineString = { Type: 'LineString', Coordinates: line.getCoordinates() };\n\n mapEditStore.SplitFieldGeometry(features[0].getId(), lineString, (result) => {\n if (result.length !== 2) {\n EditorService.ValidSplitLine$.next(false);\n return;\n }\n\n EditorService.SplitLineDrawn$.next(true);\n EditorService.ValidSplitLine$.next(true);\n GeometryEditor.RemoveFeatureSafely(vectorSource, features[0]);\n GeometryEditor.RemoveFeatureSafely(vectorSource, event.feature);\n mapEditStore.UpdateSplitData(result);\n let fIndex = 1;\n result.forEach((r) => {\n const poly = new Polygon(JSON.parse(r[0]).coordinates);\n const areaSizeRounded = ApMapInstance.roundNumericPipe.transform(r[1] ? +r[1] : 0, ApMapInstance.settingsStore.FirstSetting.DigitsAfterDecimalPoint);\n const feat = new OlFeature({\n name: 'Polygon',\n geometry: poly,\n label: `Field ${fIndex}\\n${areaSizeRounded} ${ApMapInstance.translationService.FindTranslationForSelectedLanguage('Base__UnitHa')}`\n });\n feat.setId(ApGuidUtil.generateNewGuid());\n vectorSource.addFeature(feat);\n fIndex++;\n });\n descriptionLayer.clear();\n descriptionLayer.SyncFeatures(vectorSource.getFeatures(), LayerSyncStrategy.FORCE);\n event.feature.setId(ApGuidUtil.generateNewGuid());\n vectorSource.addFeature(event.feature);\n editLayer.selectFeature(event.feature.getId(), ApEditStyles.selectedStyle);\n });\n };\n\n drawline.on('drawstart', event => {\n MapInteraction.Remove(MapInteractions.MODIFY);\n restoreOriginalState();\n });\n drawline.on('drawend', event => {\n splitFields(event);\n\n const modify = GeometryEditor.ModifyLayerSourceFeature(GeometryType.LINE_STRING, editLayer.layer, [event.feature], true);\n modify.on('modifyend', async (modEvent) => {\n const lineFeature = modEvent.target.features_.getArray()[0];\n restoreOriginalState();\n vectorSource.addFeature(lineFeature);\n splitFields({feature: lineFeature});\n });\n\n });\n // this.SnapToFeature(GeometryType.POLYGON, vectorSource, 10);\n return drawline;\n }\n\n static MergePolygon(vectorLayer: VectorLayer): Interaction {\n return MapInteraction.Add(OlHelper.SelectByClick(vectorLayer, ApEditStyles.selectedStyle)) as Select;\n }\n\n static DrawFeature(geometryType: GeometryType, vectorSource: VectorSource, style?: StyleDefinition): Interaction {\n const draw = OlHelper.DrawVector(geometryType, vectorSource, style);\n draw.on('drawend', f => {\n f.feature.setStyle(defaultStyle);\n });\n return MapInteraction.Add(draw);\n }\n\n static ClosestPointOnFeature(feat: Feature, point: Point): [number, number] {\n const ntsFeature = Ol3Parser.read(feat.getGeometry()) as NTSGeom.Polygon;\n const ntsPoint = Ol3Parser.read(point) as NTSGeom.Point;\n const borders = ntsFeature.getExteriorRing();\n let closest: NTSGeom.Point = null;\n let minDistance = Infinity;\n for (let i = 0; i < borders.getNumPoints(); i++) {\n const ringPoint = borders.getPointN(i);\n const currentDistance = ringPoint.distance(ntsPoint);\n if (currentDistance < minDistance) {\n minDistance = currentDistance;\n closest = ringPoint;\n }\n }\n return [closest.getX(), closest.getY()];\n }\n\n static PointInPolygon(feat: Feature, pt: number[], borderTolerance = 0.0039): boolean {\n const ntsFeature = Ol3Parser.read(feat.getGeometry()) as NTSGeom.Polygon;\n const featureRing = ntsFeature.getExteriorRing().buffer(borderTolerance, 1, 1);\n const ntsPoint = Ol3Parser.read(new Point(pt)) as NTSGeom.Point;\n const border = ntsFeature.difference(featureRing);\n return ntsPoint.within(border);\n }\n\n /**\n * looking for overlapping in the source and modify the feature to not overlap any feature in the source\n *\n * @param feat the Feature to integrate in the Vector Source\n * @param fieldStore the Field Store\n */\n static async IntegrateNewFeature(feat: Feature, fieldStore: FieldStore): Promise<{ Feature: Feature, Error: Error }> {\n const fieldGeomId = Guid.Validate(feat.getId()?.toString()) ? feat.getId()?.toString() : Guid.Empty.ToString();\n const geom = feat.getGeometry() as Polygon;\n const res = await fieldStore.integrateFeature({\n Type: 'Polygon',\n Coordinates: geom.getCoordinates(),\n }, MAP_PROJECTION, fieldGeomId);\n if (res.ErrorMessage) {\n return {Feature: feat, Error: new Error(res.ErrorMessage)};\n }\n feat.setGeometry(new Polygon(res.Geom.Coordinates));\n return {Feature: feat, Error: null};\n }\n\n static ExtractPolygons(geom: NTSGeom.Geometry): NTSGeom.Geometry[] {\n const lines = LineStringExtracter.getLines(geom);\n const polygonizer = new Polygonizer();\n polygonizer.add(lines);\n const polys = polygonizer.getPolygons();\n return NTSGeom.GeometryFactory.toGeometryArray(polys);\n }\n\n static Split(line: NTSGeom.LineString, foundFields: NTSGeom.Polygon[]): NTSGeom.Polygon[] {\n let t = 0;\n let fid = 0;\n let fgeom: NTSGeom.Geometry = null;\n let splitPgs = new Array();\n for (const f of foundFields) {\n const nodedLinework = UnionOp.union(f.getBoundary(), line);\n const polys = GeometryEditor.ExtractPolygons(nodedLinework);\n if (polys.length > 1) {\n t++;\n fid = f.fid;\n fgeom = f.getGeometryN(0);\n splitPgs = cloneDeep(polys);\n }\n }\n\n if (t > 1) { // Message more than one Area\n return null;\n }\n if (t === 0) { // Message no complete Area\n return null;\n }\n // only keep polygons which are inside the input\n const insidePg: NTSGeom.Polygon[] = [];\n splitPgs.forEach(pg => {\n if (fgeom.intersects(pg.getInteriorPoint())) {\n insidePg.push(pg);\n }\n });\n\n if (insidePg.length !== 2) {\n return null;\n }\n insidePg[0].fid = fid;\n return insidePg;\n }\n\n static RemoveFeatureSafely(source: Vector, feat: OlFeature): void {\n if (feat != null && source.getFeatureByUid(getUid(feat)) != null) {\n source.removeFeature(feat);\n }\n }\n}\n","import {concat, difference, filter, find, isArray, isString, map} from 'lodash';\nimport {\n ApGeoJsonPolygon\n} from '../interfaces/ap-geojson.interface';\nimport {LayerGroupNames, LayerNames} from './layer-names';\nimport {ApBaseVectorLayer, IVectorLayerOptions, LayerSyncStrategy} from './ap-base-vector.layer';\nimport OlFeature from 'ol/Feature';\nimport OlFormatGeoJSON from 'ol/format/GeoJSON';\nimport {MAP_PROJECTION} from './ap-map.settings';\nimport {ApMapControlStream} from './ap-map-control.stream';\nimport {ApMapInstance} from '../ap-map.instance';\nimport {ApMenuUrls} from '../../ap-interface';\nimport MapBrowserEvent from 'ol/MapBrowserEvent';\nimport {MapStore} from '../../stores/map/map.store';\nimport {defaultStyle, defaultStyleLabelOnly, selectedStyle, withCropColorStyle} from './ap-fields.style';\nimport Style from 'ol/style/Style';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {BehaviorSubject} from 'rxjs';\nimport IField = Data.FieldManagement.IField;\nimport {LayerZIndex} from './layer-z-index';\n\nfunction _parseJson(data: string): ApGeoJsonPolygon {\n try {\n return JSON.parse(data);\n } catch (err) {\n return null;\n }\n}\n\nfunction _parseMainSecondCrop(field: IField): any {\n const mainCrop = _parseMainCrop(field);\n const secondCrop = _parseSecondCrop(field);\n return mainCrop.concat('\\n', secondCrop);\n}\n\nfunction _parseMainCrop(item: IField): string {\n const DEFAULT_RESULT = ApMapInstance.translationService.FindTranslationForSelectedLanguage('Global__CropGroup_Nothing');\n if (!item || !item.FieldCrops || !isArray(item.FieldCrops) || item.FieldCrops.length < 1 || !item.FieldCrops[0].CroptypeId) {\n return '';\n }\n // there might be cases when cropType is null and following code causes a 'NullReferenceException'\n // even if cropType is checked for null before accessing cropType.Description\n try {\n const cropType = ApMapInstance.croptypeStore.getDefaultCroptype(item.FieldCrops[0].CroptypeId);\n return ApMapInstance.translationService.FindTranslationForSelectedLanguage('MainCrop') + ': ' + cropType ? cropType.Description : DEFAULT_RESULT;\n } catch (Exception) {\n return DEFAULT_RESULT;\n }\n}\n\nfunction _parseSecondCrop(item: IField): string {\n const DEFAULT_RESULT = ApMapInstance.translationService.FindTranslationForSelectedLanguage('Global__CropGroup_Nothing');\n if (!item || !item.FieldCrops || !isArray(item.FieldCrops) || item.FieldCrops.length < 1 || !item.FieldCrops[0].CroptypeSecondId) {\n return '';\n }\n // there might be cases when cropType is null and following code causes a 'NullReferenceException'\n // even if cropType is checked for null before accessing cropType.Description\n try {\n const cropType = ApMapInstance.croptypeStore.getDefaultCroptype(item.FieldCrops[0].CroptypeSecondId);\n return ApMapInstance.translationService.FindTranslationForSelectedLanguage('SecondCrop') + ': ' + cropType ? cropType.Description : DEFAULT_RESULT;\n } catch (Exception) {\n return DEFAULT_RESULT;\n }\n}\n\nfunction _parseColor(field: IField): string {\n if (!field || !field.FieldCrops || !isArray(field.FieldCrops) || field.FieldCrops.length < 1 || !field.FieldCrops[0].CroptypeId) {\n return ApMapInstance.cropGroupsStore?.getNoCropColor();\n }\n const crop = ApMapInstance.croptypeStore.getDefaultCroptype(field.FieldCrops[0].CroptypeId);\n if (crop) {\n return crop.Color;\n }\n return ApMapInstance.cropGroupsStore?.getNoCropColor();\n}\n\nclass ApBaseFieldsLayer extends ApBaseVectorLayer {\n static readonly projection: string = 'EPSG:4326';\n\n constructor(layerName: string, layerGroupName: string, mapStore: MapStore, fieldStore$: BehaviorSubject, data: IField[] = [], style: (f: OlFeature) => Style | Style[], options: IVectorLayerOptions) {\n super(layerName, layerGroupName, mapStore, options);\n fieldStore$.subscribe(fs => this.replaceSource(data, fs, style));\n }\n\n replaceSource(data: IField[], fieldStore: FieldStore, style: (f: OlFeature) => Style | Style[]): OlFeature[] {\n const features = this.read(data, fieldStore);\n this.readFeatures(features, style);\n return features;\n }\n\n read(data: IField[], fieldStore: FieldStore): OlFeature[] {\n const withGeometry = filter(data, f => isString(fieldStore.getCurrentFieldGeom(f)?.Geom));\n return map(withGeometry, f => {\n const fieldGeom = fieldStore.getCurrentFieldGeom(f);\n const geom = new OlFormatGeoJSON({\n dataProjection: ApFieldsLayer.projection,\n featureProjection: MAP_PROJECTION\n });\n const feat = geom.readFeature({\n type: 'Feature',\n geometry: _parseJson(fieldGeom.Geom.toString()),\n properties: {\n label: this.getFieldExpressionByField(f, fieldStore),\n layerName: LayerNames.FIELDS,\n color: _parseColor(f)\n }\n });\n feat.setId(fieldGeom?.Id.toString());\n return feat;\n });\n }\n}\n\nexport class ApFieldsCropLayer extends ApBaseFieldsLayer {\n static readonly projection: string = 'EPSG:4326';\n\n static readonly defaultStyle = function (f): Style {\n return withCropColorStyle(f);\n };\n\n constructor(mapStore: MapStore, fieldStore$: BehaviorSubject, data: IField[] = []) {\n super(LayerNames.FIELDS_CROP, LayerGroupNames.BASIC, mapStore, fieldStore$, data, ApFieldsCropLayer.defaultStyle, {declutter: false});\n this.FixedZIndex = LayerZIndex.CROPTYPES;\n mapStore.DrawCropColor$.subscribe(draw => {\n this.Visibility = draw;\n if (this.mapStore.Layers) {\n this.mapStore.Layers.OnLayerChange.emit();\n }\n });\n }\n\n public get Visibility(): boolean {\n return super.Visibility;\n }\n\n public set Visibility(value: boolean) {\n if (this.mapStore.Legends) {\n this.mapStore.Legends.refreshLegend(this.mapStore.Legends.CropTypeLegend, value && this.mapStore.Legends.CropTypeLegendHasElements);\n }\n super.Visibility = value;\n }\n}\n\nexport class ApFieldsDescriptionLayer extends ApBaseFieldsLayer {\n static readonly projection: string = 'EPSG:4326';\n\n constructor(mapStore: MapStore, fieldStore$: BehaviorSubject, data: IField[] = []) {\n super(LayerNames.FIELDS_DESCRIPTION, LayerGroupNames.BASIC, mapStore, fieldStore$, data, ApFieldsDescriptionLayer.defaultStyle,\n {\n declutter: true,\n minZoom: 15\n });\n this.FixedZIndex = LayerZIndex.FIELDS_DESCRIPTION;\n }\n\n static readonly defaultStyle = function (f): Style {\n return defaultStyleLabelOnly(f);\n };\n\n /**\n * Set layer visibility\n */\n public set Visibility(value: boolean) {\n // Never hide fields layer.\n // But in case it got hidden we show it again together with description layer\n if (value) {\n this.mapStore.Layers.FieldsLayer.Visibility = value;\n }\n super.Visibility = value;\n }\n\n /**\n * Gets layer visibility\n */\n public get Visibility(): boolean {\n return super.Visibility;\n }\n\n public SyncFeatures(features: OlFeature[], strategy = LayerSyncStrategy.FORCE): void {\n // Clearing the features style, so it will be taken from Description Layer itself\n features.forEach(f => f.setStyle(null));\n super.SyncFeatures(features, strategy);\n }\n}\n\n/**\n * the Fields Layer represent the Fields of a Farm\n */\nexport class ApFieldsLayer extends ApBaseFieldsLayer {\n /**\n * the Projection of the Fields Layer Data comes from the Backend\n */\n static readonly projection: string = 'EPSG:4326';\n static drawSelectedStyle = true;\n\n /**\n * create a new Layer of Fields from a List of Fields\n */\n constructor(mapStore: MapStore, fieldStore$: BehaviorSubject, data: IField[] = []) {\n super(LayerNames.FIELDS, undefined, mapStore, fieldStore$, data, ApFieldsLayer.defaultStyle, {declutter: false});\n this.FixedZIndex = LayerZIndex.FIELDS;\n mapStore.DrawSelectedStyle$.subscribe(v => {\n ApFieldsLayer.drawSelectedStyle = v;\n this.redraw();\n });\n ApMapControlStream.listenClick$.subscribe(event => this._selectFields(event));\n }\n\n /**\n * the Default Style of a Field Feature in the Map\n */\n static readonly defaultStyle = function (f): Style | Style[] {\n return defaultStyle(f);\n };\n\n /**\n * the Style of a selected Field Feature in the Map\n */\n static readonly selectedStyle = function (f): Style | Style[] {\n return ApFieldsLayer.drawSelectedStyle ?\n selectedStyle(f) :\n ApFieldsLayer.defaultStyle(f);\n };\n\n /**\n * read the Geometry Data from the List of Fields into Openlayers Layer\n */\n public ReadFeature(data: IField[], fieldStore: FieldStore): OlFeature[] {\n return super.replaceSource(data, fieldStore, ApFieldsLayer.defaultStyle);\n }\n\n public replaceSource(data: IField[], fieldStore: FieldStore): OlFeature[] {\n if (this.mapStore.Layers) {\n this.mapStore.Layers.FieldsCropLayer.replaceSource(data, fieldStore, ApFieldsCropLayer.defaultStyle);\n this.mapStore.Layers.FieldDescriptionLayer.replaceSource(data, fieldStore, ApFieldsDescriptionLayer.defaultStyle);\n }\n return super.replaceSource(data, fieldStore, ApFieldsLayer.defaultStyle);\n }\n\n public SyncFeatures(features: OlFeature[], strategy = LayerSyncStrategy.FORCE): void {\n if (this.mapStore.Layers) {\n this.mapStore.Layers.FieldsCropLayer.SyncFeatures(features, strategy);\n this.mapStore.Layers.FieldDescriptionLayer.SyncFeatures(features, strategy);\n }\n super.SyncFeatures(features, strategy);\n }\n\n /**\n * select a Field by Id from Fields Layer\n */\n selectField(id: string): void {\n this.selectFeature(id, ApFieldsLayer.selectedStyle);\n }\n\n /**\n * deselect a Field in Fields Layer\n */\n deselectField(id: string): void {\n this.deselectFeature(id);\n }\n\n /**\n * select Fields in Map and Grid\n */\n private _selectFields(event: MapBrowserEvent): void {\n if (ApMapInstance.routerStore.CurrentUrl !== ApMenuUrls.FIELD_MANAGEMENT_OVERVIEW &&\n ApMapInstance.routerStore.CurrentUrl !== ApMenuUrls.NUTRIENTS_OVERVIEW) {\n return;\n }\n const myFeatures = event.map.getFeaturesAtPixel(event.pixel);\n const layerFeatures = filter(myFeatures, f => f.get('layerName') === LayerNames.FIELDS);\n const layerFeatureIds = map(layerFeatures, f => f.getId());\n if (layerFeatureIds.length > 0) {\n const currentSelected = map(ApMapInstance.fieldStore.getSelectedFields(), f => f.Id);\n const notSelectedBefore = [];\n for (const id of layerFeatureIds) {\n const isInSelection = !!find(currentSelected, c => c === id);\n if (!isInSelection) {\n notSelectedBefore.push(id);\n }\n }\n const notSelectedNow = difference(currentSelected, layerFeatureIds);\n const newSelection = concat(notSelectedBefore, notSelectedNow);\n ApMapInstance.fieldStore.changeSelectedField(newSelection);\n }\n }\n}\n","/**\n * List of Layer Names\n */\nexport class ApPropertiesStrings {\n static readonly MachinePopup = 'machine_popup';\n static readonly SensorPointPopup = 'sensor_point_popup';\n static readonly Name = 'name';\n static readonly Speed = 'speed';\n static readonly Date = 'date';\n static readonly LayerName = 'layer_name';\n static readonly Sign = 'sign';\n}\n","import {ApBaseVectorLayer} from './ap-base-vector.layer';\nimport {LayerGroupNames, LayerNames} from './layer-names';\nimport OlFeature from 'ol/Feature';\nimport OlStyle from 'ol/style/Style';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport OlStyleFill from 'ol/style/Fill';\nimport OlCricleStyle from 'ol/style/Circle';\nimport GeoJSON from 'ol/format/GeoJSON';\nimport {MAP_PROJECTION} from './ap-map.settings';\nimport {ApMapControlStream} from './ap-map-control.stream';\nimport {ApMapInstance} from '../ap-map.instance';\nimport Overlay from 'ol/Overlay';\nimport {ApPropertiesStrings} from '../enums/ap-properties-strings';\nimport {keys} from 'lodash';\nimport {ApMenuUrls} from '../../ap-interface';\nimport OverlayPositioning from 'ol/OverlayPositioning';\nimport MapBrowserEvent from 'ol/MapBrowserEvent';\nimport {MapStore} from '../../stores/map/map.store';\n\nconst classificationColors = [\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#22CB04'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#3FD126'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#76DC64'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#C1ECB9'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#E1F2DE'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#A6CADF'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#91BED9'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#6AA9CE'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#3B8FC0'\n })\n }),\n }),\n new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n width: 1\n }),\n radius: 5,\n fill: new OlStyleFill({\n color: '#0772B1'\n })\n }),\n })\n];\n\nfunction getFirstFeatureProperties(f): any {\n let props = f.getProperties();\n while (props.hasOwnProperty('features')) {\n const firstFeature = props.features[0];\n if (!firstFeature) {\n return null;\n }\n props = firstFeature.getProperties();\n }\n return props;\n}\n\nexport class ApFungiDetectLayer extends ApBaseVectorLayer {\n static readonly projection: string = 'EPSG:4326';\n static popup: Overlay;\n static currentClassificationProperty: string = null;\n static classification = null;\n static readonly defaultStyle = function (f): OlStyle {\n let style = null;\n if (!ApFungiDetectLayer.classification || Object.keys(ApFungiDetectLayer.classification).length !== 10) {\n style = new OlStyle({\n image: new OlCricleStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0, 0, 0, 0)',\n opacity: 0,\n width: 1\n } as any),\n radius: 5,\n fill: new OlStyleFill({\n color: '#0000ff'\n })\n }),\n });\n } else {\n const values = Object.keys(ApFungiDetectLayer.classification).map(v => parseFloat(v));\n const fValue = parseFloat(getFirstFeatureProperties(f)[ApFungiDetectLayer.currentClassificationProperty]);\n for (const v of values) {\n if (fValue <= v) {\n style = ApFungiDetectLayer.classification[v];\n break;\n }\n }\n if (!style) {\n style = ApFungiDetectLayer.classification[values[values.length - 1]];\n }\n }\n return style;\n };\n\n constructor(mapStore: MapStore, data?: string) {\n super(LayerNames.FUNGIDETECT, LayerGroupNames.FUNGIDETECT, mapStore);\n if (data) {\n this.replaceSource(data);\n }\n ApMapControlStream.listenSingleClick$.subscribe(event => {\n this._setPopup(event);\n });\n }\n\n replaceSource(data: string): void {\n this.readFeatures(this._read(data), ApFungiDetectLayer.defaultStyle, 10);\n }\n\n appendSource(data: string): void {\n if (!data) {\n return;\n }\n if (this.Features.length < 1) {\n this.readFeatures(this._read(data), ApFungiDetectLayer.defaultStyle, 10);\n } else {\n const features = this._read(data);\n super.extentSource(features);\n }\n }\n\n classify(prop: string): void {\n ApFungiDetectLayer.currentClassificationProperty = prop;\n const statistics = {\n min: 0,\n max: 0,\n };\n this.Features.forEach((f) => {\n const featureToShow = f.get('features') ? f.get('features')[0] : f;\n const value = parseFloat(featureToShow.get(prop));\n if (isNaN(value)) {\n return;\n }\n if (statistics.max === 0 || value > statistics.max) {\n statistics.max = value;\n }\n if (statistics.min === 0 || value < statistics.min) {\n statistics.min = value;\n }\n });\n ApFungiDetectLayer.classification = {};\n const step = (statistics.max - statistics.min) / 10;\n let counter = 0;\n for (let i = statistics.min; i < statistics.max; i += step) {\n if (counter === 9) {\n ApFungiDetectLayer.classification[statistics.max] = classificationColors[counter];\n break;\n } else {\n ApFungiDetectLayer.classification[i] = classificationColors[counter];\n }\n counter++;\n }\n if (ApMapInstance.sensorPointLegend) {\n ApMapInstance.sensorPointLegend.fillClassification(\n ApFungiDetectLayer.currentClassificationProperty,\n ApFungiDetectLayer.classification);\n ApMapInstance.sensorPointLegend.show();\n }\n this.layer.changed();\n }\n\n clear(): void {\n if (ApMapInstance.sensorPointLegend) {\n ApMapInstance.sensorPointLegend.hide();\n }\n super.clear();\n }\n\n private _read(data: string): OlFeature[] {\n try {\n const collection = JSON.parse(data);\n return (new GeoJSON()).readFeatures(collection, {\n dataProjection: ApFungiDetectLayer.projection,\n featureProjection: MAP_PROJECTION\n });\n } catch (err) {\n console.error(err);\n return [];\n }\n }\n\n private _setPopup(event: MapBrowserEvent): void {\n if (!ApMapInstance.mapRef) {\n console.warn('missing map reference');\n return;\n }\n if (!ApMapInstance.sensorPointPopup ||\n (ApMapInstance.routerStore.CurrentUrl !== ApMenuUrls.IMPORT_OVERVIEW &&\n ApMapInstance.routerStore.CurrentUrl !== ApMenuUrls.FUNGI_DETECT_OVERVIEW)) {\n return;\n }\n\n ApMapInstance.sensorPointPopup.clear();\n\n if (!ApFungiDetectLayer.popup) {\n ApFungiDetectLayer.popup = new Overlay({\n id: ApPropertiesStrings.SensorPointPopup,\n positioning: OverlayPositioning.BOTTOM_CENTER,\n stopEvent: false,\n offset: [0, -15]\n });\n ApMapInstance.mapRef.addOverlay(ApFungiDetectLayer.popup);\n }\n\n const featureArray = event.map.getFeaturesAtPixel(\n event.pixel, {\n hitTolerance: 5,\n layerFilter: (l) => l.get('name') === this.name\n });\n const feature = featureArray ? featureArray[0] : null;\n if (feature) {\n const featureToShow = feature.get('features') ? feature.get('features')[0] : feature;\n const coordinates = featureToShow.getGeometry().getCoordinates();\n const properties = featureToShow.getProperties();\n\n ApFungiDetectLayer.popup.setPosition(coordinates);\n\n const propertyKeys = keys(properties).filter(k => k !== 'geometry');\n for (const key of propertyKeys) {\n if (!properties.hasOwnProperty(key)) {\n continue;\n }\n const propValue = properties[key];\n if (propValue) {\n ApMapInstance.sensorPointPopup.addValue(key, propValue.toString());\n }\n }\n\n const element = ApMapInstance.sensorPointPopup.getHTMLElement();\n ApMapInstance.sensorPointPopup.show();\n ApFungiDetectLayer.popup.setElement(element);\n } else {\n ApMapInstance.sensorPointPopup.hide();\n }\n }\n}\n","import {LayerGroupNames, LayerNames} from './layer-names';\nimport {ApBaseVectorLayer} from './ap-base-vector.layer';\nimport OlFeature from 'ol/Feature';\nimport {concat, difference, filter, find, map} from 'lodash';\nimport OlFormatGeoJSON from 'ol/format/GeoJSON';\nimport {MAP_PROJECTION} from './ap-map.settings';\nimport {ApMapControlStream} from './ap-map-control.stream';\nimport {ApMapInstance} from '../ap-map.instance';\nimport Overlay from 'ol/Overlay';\nimport * as moment from 'moment';\nimport {ApPropertiesStrings} from '../enums/ap-properties-strings';\nimport OlStyle from 'ol/style/Style';\nimport OlStyleText from 'ol/style/Text';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport OlStyleFill from 'ol/style/Fill';\nimport OlIcon from 'ol/style/Icon';\nimport {ApMenuUrls} from '../../ap-interface';\nimport IconAnchorUnits from 'ol/style/IconAnchorUnits';\nimport OverlayPositioning from 'ol/OverlayPositioning';\nimport MapBrowserEvent from 'ol/MapBrowserEvent';\nimport Point from 'ol/geom/Point';\nimport {MapStore} from '../../stores/map/map.store';\nimport ILocationModel = Data.DocuContext.Location.ILocationModel;\n\n/**\n * the ApLocationLayer Layer\n */\nexport class ApLocationLayer extends ApBaseVectorLayer {\n /**\n * the Projection of the Data comes from the Backend\n */\n static readonly projection: string = 'EPSG:4326';\n\n static popup: Overlay;\n\n public dateTimeFormat: string;\n public unknown: string;\n\n private machinePosCache: { [key: string]: string } = {};\n\n static readonly iconStyle = (f) => {\n const props = f.getProperties();\n const now = new Date();\n const propsDate = new Date(props.date);\n const today = `${propsDate.getFullYear()}-${propsDate.getMonth()}-${propsDate.getDay()}` === `${now.getFullYear()}-${now.getMonth()}-${now.getDay()}`;\n let iconUrl = '/assets/svg/202108__traktor.svg';\n switch (props.kind) {\n case 1:\n case 16:\n case 17:\n iconUrl = '/assets/svg/202108__traktor.svg';\n break;\n case 2:\n iconUrl = '/assets/svg/202108__lkw.svg';\n break;\n case 3:\n iconUrl = '/assets/svg/202108__vw.svg';\n break;\n case 4:\n iconUrl = '/assets/svg/202108__xerion.svg';\n break;\n case 5:\n iconUrl = '/assets/svg/202108__pickup.svg';\n break;\n case 6:\n iconUrl = '/assets/svg/202108__vwbus.svg';\n break;\n case 7:\n iconUrl = '/assets/svg/202108__selbstfahrer_spritze.svg';\n break;\n case 8:\n iconUrl = '/assets/svg/202108__radlader.svg';\n break;\n case 9:\n iconUrl = '/assets/svg/202108__teleskoplader.svg';\n break;\n case 10:\n iconUrl = '/assets/svg/202108__sattelauflieger.svg';\n break;\n case 11:\n iconUrl = '/assets/svg/202108__raupentraktor.svg';\n break;\n case 12:\n iconUrl = '/assets/svg/202108__maehdrescher.svg';\n break;\n case 13:\n iconUrl = '/assets/svg/202108__haecksler.svg';\n break;\n case 14:\n iconUrl = '/assets/svg/202108__futtermischwagen.svg';\n break;\n case 15:\n iconUrl = '/assets/svg/202108_discovery.svg';\n break;\n }\n\n let iconText = f.get(ApPropertiesStrings.Name);\n const machineSign = f.get(ApPropertiesStrings.Sign);\n if (machineSign !== null) {\n iconText = iconText + '\\n' + machineSign;\n }\n const opacity = today ? 1 : 0.25;\n return new OlStyle({\n text: new OlStyleText({\n offsetY: -90,\n font: '11px Calibri,sans-serif',\n text: iconText,\n backgroundFill: new OlStyleFill({\n color: `rgba(255,255,255,${opacity})`,\n }),\n backgroundStroke: new OlStyleStroke({\n color: `rgba(176, 203, 31, ${opacity})`,\n width: 2,\n }),\n stroke: new OlStyleStroke({\n color: `rgba(255,255,255,${opacity})`,\n width: 2,\n }),\n padding: [5, 5, 5, 5],\n fill: new OlStyleFill({\n color: `rgba(0,0,0,${opacity})`,\n })\n }),\n image: new OlIcon(({\n anchor: [25, 73],\n anchorXUnits: IconAnchorUnits.PIXELS,\n anchorYUnits: IconAnchorUnits.PIXELS,\n offset: [0, 0],\n opacity,\n scale: 1,\n src: iconUrl,\n }))\n });\n }\n\n /**\n * create a new Layer\n */\n constructor(mapStore: MapStore, data?: ILocationModel[]) {\n super(LayerNames.LOCATIONS, LayerGroupNames.FIELD_WORK, mapStore, { declutter: false}, {\n layer: null,\n map: () => ApMapInstance.mapRef,\n duration: 3000,\n minRadius: 5,\n maxRadius: 50,\n strokeWidth: 2,\n color: [176, 203, 31, 1],\n filter: f => {\n const props = f.getProperties();\n if (!props || !props.date || !props.name) {\n return false;\n }\n if (!this.machinePosCache[props.name]) {\n this.machinePosCache[props.name] = props.date;\n return true;\n }\n if (this.machinePosCache[props.name] !== props.date) {\n this.machinePosCache[props.name] = props.date;\n return true;\n }\n return false;\n },\n });\n this.replaceSource(data);\n ApMapControlStream.listenSingleClick$.subscribe(\n event => {\n this._selectLocations(event);\n this._setPopup(event);\n }\n );\n }\n\n setUnknown(unknown: string): void {\n this.unknown = unknown;\n }\n\n /**\n * replace the Data Source of the Layer\n */\n replaceSource(data?: ILocationModel[]): void {\n this.readFeatures(data ? this._read(data) : [], null, null);\n }\n\n /**\n * select locations in Map and Grid\n */\n private _selectLocations(event: MapBrowserEvent): void {\n const myFeatures = event.map.getFeaturesAtPixel(event.pixel);\n const layerFeatures = filter(myFeatures, f => f.get(ApPropertiesStrings.LayerName) === LayerNames.LOCATIONS);\n const layerFeatureIds = map(layerFeatures, f => f.getId());\n if (layerFeatureIds.length > 0) {\n const currentSelected = map(ApMapInstance.actionStore.getLocations(), f => f.Id);\n const notSelectedBefore = [];\n for (const id of layerFeatureIds) {\n const isInSelection = !!find(currentSelected, c => c === id);\n if (!isInSelection) {\n notSelectedBefore.push(id);\n }\n }\n const notSelectedNow = difference(currentSelected, layerFeatureIds);\n const newSelection = concat(notSelectedBefore, notSelectedNow);\n ApMapInstance.actionStore.changeSelectedLocation(newSelection);\n }\n }\n\n /**\n * set the popup\n */\n private _setPopup(event: MapBrowserEvent): void {\n if (!ApMapInstance.mapRef) {\n console.warn('missing map reference');\n return;\n }\n if (!ApMapInstance.machinePopup ||\n ApMapInstance.routerStore.CurrentUrl !== ApMenuUrls.FIELD_WORK_OVERVIEW) {\n return;\n }\n\n if (!ApLocationLayer.popup) {\n ApLocationLayer.popup = new Overlay({\n id: ApPropertiesStrings.MachinePopup,\n positioning: OverlayPositioning.BOTTOM_CENTER,\n stopEvent: false,\n offset: [0, -50]\n });\n ApMapInstance.mapRef.addOverlay(ApLocationLayer.popup);\n }\n const featureArray = event.map.getFeaturesAtPixel(event.pixel, {\n hitTolerance: 5,\n layerFilter: (l) => l.get('name') === this.name\n });\n const feature = featureArray ? featureArray[0] : null;\n\n if (feature) {\n const coordinates = (feature.getGeometry() as Point).getCoordinates();\n ApLocationLayer.popup.setPosition(coordinates);\n\n ApMapInstance.machinePopup.date = feature.get(ApPropertiesStrings.Date);\n ApMapInstance.machinePopup.speed = feature.get(ApPropertiesStrings.Speed) === '' ? '0' : feature.get(ApPropertiesStrings.Speed);\n ApMapInstance.machinePopup.name = feature.get(ApPropertiesStrings.Name);\n\n const element = ApMapInstance.machinePopup.getHTMLElement();\n\n if (ApMapInstance.machinePopup.name !== undefined) {\n ApMapInstance.machinePopup.show();\n ApLocationLayer.popup.setElement(element);\n } else {\n ApMapInstance.machinePopup.hide();\n }\n } else {\n ApMapInstance.machinePopup.hide();\n }\n }\n\n /**\n * select a location by Id from location layer\n */\n selectLocation(id: string): void {\n this.selectFeature(id, ApLocationLayer.iconStyle);\n }\n\n /**\n * read the Data into Openlayers Layer\n */\n private _read(data: ILocationModel[]): OlFeature[] {\n const fl = [];\n\n const geom = new OlFormatGeoJSON({\n dataProjection: ApLocationLayer.projection,\n featureProjection: MAP_PROJECTION,\n });\n for (const d of data) {\n const m = moment(d.GpsDate + ' ' + d.GpsTime, 'YYYY-MM-DD HH:mm:ss');\n const offset = m.utcOffset();\n const datetime = m.add(offset, 'minutes');\n const date = datetime ? datetime.format(this.dateTimeFormat) : this.unknown;\n\n const feat = geom.readFeature({\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: [d.Longitude, d.Latitude],\n },\n properties: {\n name: d.Name,\n kind: d.Kind,\n speed: d.Speed,\n date,\n layer_name: LayerNames.LOCATIONS,\n sign: d.Sign\n }\n }\n );\n feat.setId(d.Id.toString());\n feat.setStyle(ApLocationLayer.iconStyle);\n fl.push(feat);\n }\n return fl;\n }\n}\n","/**\n * List of Track Property Names\n */\nexport class TrackPropertyNames {\n\n static readonly SPEED = 'speed';\n\n static readonly FUEL_RATE = 'fuel_rate';\n\n static readonly ENGINE_SPEED = 'engine_speed';\n\n static readonly APPLICATION_STATE = 'application_rate';\n\n static readonly TANK = 'tank';\n\n static readonly WORK_STATE = 'work_state';\n\n static getAll(): string[] {\n return [ this.SPEED, this.FUEL_RATE, this.ENGINE_SPEED, this.APPLICATION_STATE, this.TANK, this.WORK_STATE ];\n }\n}\n","import {ApBaseVectorLayer} from './ap-base-vector.layer';\nimport 'ol/ol.css';\nimport OlStyle from 'ol/style/Style';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport OlStyleFill from 'ol/style/Fill';\nimport OlStyleText from 'ol/style/Text';\nimport OlFeature from 'ol/Feature';\nimport OlFormatGeoJSON from 'ol/format/GeoJSON';\nimport {LayerGroupNames, LayerNames} from './layer-names';\nimport {ApMapControlStream} from './ap-map-control.stream';\nimport {MAP_PROJECTION} from './ap-map.settings';\nimport {map} from 'lodash';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport MapBrowserEvent from 'ol/MapBrowserEvent';\nimport {MapStore} from '../../stores/map/map.store';\nimport IContactInformation = Data.Common.IContactInformation;\n\nexport class ApContactLayer extends ApBaseVectorLayer {\n /**\n * the Projection of the Fields Layer Data comes from the Backend\n */\n static readonly projection: string = 'EPSG:4326';\n\n static readonly defaultStyle = function (): OlStyle {\n return new OlStyle({\n stroke: new OlStyleStroke({\n color: '#319FD3',\n width: 1\n }),\n fill: new OlStyleFill({\n color: 'rgba(255, 255, 255, 0.5)'\n }),\n text: new OlStyleText({\n font: '12px Calibri,sans-serif',\n stroke: new OlStyleStroke({\n color: '#fff',\n width: 3\n }),\n fill: new OlStyleFill({\n color: '#000'\n }),\n }),\n });\n };\n\n constructor(mapStore: MapStore, data: IContactInformation[] = []) {\n super(LayerNames.CONTACT, LayerGroupNames.NONE, mapStore);\n this.replaceSource(data)\n .then(() => {\n ApMapControlStream.listenClick$.subscribe(() => this._click());\n ApMapControlStream.listenPointerMove$.subscribe(event => this._pointermove(event));\n });\n }\n\n private _pointermove(event: MapBrowserEvent): void {\n if (event.dragging) {\n return;\n }\n const myFeatures = event.map.getFeaturesAtPixel(event.pixel);\n if (!myFeatures) {\n // ApMapInstance.selectedFeature(myFeatures[0]);\n }\n }\n\n private _click(): void {\n this.displayFeatureInfo();\n }\n\n private displayFeatureInfo(): any {\n return null;\n }\n\n /**\n * replace the Data Source of the Layer\n */\n async replaceSource(data: IContactInformation[]): Promise {\n if (!data) {\n return;\n }\n /*if (data.length > 1 && this.Features.length < 1) {\n const res = await fetch(`${APP_CONFIGURATION.BackendAddress}/assets/countries.json`);\n if (res.status >= 400) {\n console.warn(`can not load Countries`);\n return;\n }\n this.readFeatures(this._read(await res.json()), ApContactLayer.defaultStyle);\n }*/\n }\n\n /**\n * read the Geometry Data from the List of Fields into Openlayers Layer\n */\n private _read(data: any[]): OlFeature[] {\n return map(data, f => {\n const geom = new OlFormatGeoJSON({\n dataProjection: ApContactLayer.projection,\n featureProjection: MAP_PROJECTION\n });\n const feat = geom.readFeature(f);\n feat.setId(f.properties.name);\n return feat;\n });\n }\n}\n","import {ApMapInstance} from './ap-map.instance';\nimport Interaction from 'ol/interaction/Interaction';\nimport Select from 'ol/interaction/Select';\nimport {environment} from '../../environments/environment';\n\nif (!environment.Production) {\n if (!window['mapFunctions']) {\n window['mapFunctions'] = {};\n }\n setTimeout(() => {\n window['mapFunctions'].getDrawInteraction = () => MapInteraction.FindByName(MapInteractions.DRAW);\n }, 1);\n}\n\nexport enum MapInteractions {\n DRAW = 'draw',\n SELECT = 'select',\n MODIFY = 'modify',\n SNAP = 'snap',\n TRANSLATE = 'translate'\n}\n\nexport enum Keys {\n NAME = 'name',\n LAYER_NAME = 'layerName',\n REMOVED_FEATURE = 'removeFeat',\n}\n\nexport class MapInteraction {\n static get Interactions(): Interaction[] {\n if (!ApMapInstance.mapRef) {\n return null;\n }\n return ApMapInstance.mapRef.getInteractions().getArray();\n }\n\n static Add(action: Interaction, append = false): Interaction {\n if (!ApMapInstance.mapRef) {\n return undefined;\n }\n if (append === true) {\n ApMapInstance.mapRef.removeInteraction(action);\n }\n ApMapInstance.mapRef.addInteraction(action);\n return action;\n }\n\n static FindByName(name: string): Interaction {\n return MapInteraction.Interactions ? MapInteraction.Interactions.Find(e => e?.get(Keys.NAME) === name) : null;\n }\n\n static Remove(action: MapInteractions): boolean {\n let actionToRemove = MapInteraction.FindByName(action);\n let removed = false;\n while (actionToRemove && ApMapInstance.mapRef) {\n ApMapInstance.mapRef.removeInteraction(actionToRemove);\n actionToRemove = MapInteraction.FindByName(action);\n removed = true;\n }\n return removed;\n }\n\n static ClearSelection(): void {\n const selectionInteraction = MapInteraction.FindByName(MapInteractions.SELECT) as Select;\n if (selectionInteraction !== null) {\n selectionInteraction.getFeatures().clear();\n }\n }\n\n static ClearInteractions(): void {\n for (const action of [MapInteractions.DRAW, MapInteractions.SELECT, MapInteractions.MODIFY]) {\n MapInteraction.Remove(action);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/BaseTile\n */\nimport Layer from './Layer.js';\nimport TileProperty from './TileProperty.js';\nimport { assign } from '../obj.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {import(\"../source/Tile.js\").default} [source] Source for this layer.\n * @property {import(\"../PluggableMap.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link module:ol/Map#addLayer}.\n * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error.\n */\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @extends {Layer}\n * @api\n */\nvar BaseTileLayer = /** @class */ (function (_super) {\n __extends(BaseTileLayer, _super);\n /**\n * @param {Options=} opt_options Tile layer options.\n */\n function BaseTileLayer(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var baseOptions = assign({}, options);\n delete baseOptions.preload;\n delete baseOptions.useInterimTilesOnError;\n _this = _super.call(this, baseOptions) || this;\n _this.setPreload(options.preload !== undefined ? options.preload : 0);\n _this.setUseInterimTilesOnError(options.useInterimTilesOnError !== undefined\n ? options.useInterimTilesOnError\n : true);\n return _this;\n }\n /**\n * Return the level as number to which we will preload tiles up to.\n * @return {number} The level to preload tiles up to.\n * @observable\n * @api\n */\n BaseTileLayer.prototype.getPreload = function () {\n return /** @type {number} */ (this.get(TileProperty.PRELOAD));\n };\n /**\n * Set the level as number to which we will preload tiles up to.\n * @param {number} preload The level to preload tiles up to.\n * @observable\n * @api\n */\n BaseTileLayer.prototype.setPreload = function (preload) {\n this.set(TileProperty.PRELOAD, preload);\n };\n /**\n * Whether we use interim tiles on error.\n * @return {boolean} Use interim tiles on error.\n * @observable\n * @api\n */\n BaseTileLayer.prototype.getUseInterimTilesOnError = function () {\n return /** @type {boolean} */ (this.get(TileProperty.USE_INTERIM_TILES_ON_ERROR));\n };\n /**\n * Set whether we use interim tiles on error.\n * @param {boolean} useInterimTilesOnError Use interim tiles on error.\n * @observable\n * @api\n */\n BaseTileLayer.prototype.setUseInterimTilesOnError = function (useInterimTilesOnError) {\n this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);\n };\n return BaseTileLayer;\n}(Layer));\nexport default BaseTileLayer;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Tile\n */\nimport BaseTileLayer from './BaseTile.js';\nimport CanvasTileLayerRenderer from '../renderer/canvas/TileLayer.js';\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @api\n */\nvar TileLayer = /** @class */ (function (_super) {\n __extends(TileLayer, _super);\n /**\n * @param {import(\"./BaseTile.js\").Options=} opt_options Tile layer options.\n */\n function TileLayer(opt_options) {\n return _super.call(this, opt_options) || this;\n }\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n * @protected\n */\n TileLayer.prototype.createRenderer = function () {\n return new CanvasTileLayerRenderer(this);\n };\n return TileLayer;\n}(BaseTileLayer));\nexport default TileLayer;\n","import OlTileLayer from 'ol/layer/Tile';\nimport {ApBaseLayer} from './ap-base.layer';\nimport TileSource from 'ol/source/Tile';\nimport {MapStore} from '../../stores/map/map.store';\n\nexport class ApBaseTileLayer extends ApBaseLayer {\n source: T;\n\n constructor(mapStore: MapStore, name: string, source: T) {\n super(name, new OlTileLayer({\n source,\n preload: Infinity\n }), mapStore);\n this.source = source;\n this.layer.setZIndex(0);\n }\n}\n","import OlFeature from 'ol/Feature';\nimport OlStyle from 'ol/style/Style';\n\nexport class ApVectorSelection {\n feature: OlFeature;\n defaultStyle: OlStyle | OlStyle[];\n\n constructor(feature: OlFeature, style: OlStyle | OlStyle[]) {\n this.feature = feature;\n this.defaultStyle = style;\n }\n\n resetStyle(): void {\n this.feature.setStyle(this.defaultStyle);\n }\n}\n","import * as _ from 'lodash';\nimport {find, isString, keys, unset} from 'lodash';\nimport {buffer as OlBuffer, Extent} from 'ol/extent';\nimport OlFeature from 'ol/Feature';\nimport Feature from 'ol/Feature';\nimport {GeoJSON} from 'ol/format';\nimport OlVectorLayer from 'ol/layer/Vector';\nimport VectorLayer from 'ol/layer/Vector';\nimport OlCluster from 'ol/source/Cluster';\nimport OlVectorSource from 'ol/source/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport {ApGeometryExtension} from '../../ap-utils';\nimport {MapStore} from '../../stores/map/map.store';\nimport {GeometryChecker} from '../geometry.checker';\nimport {StyleDefinition} from '../ol.helper';\nimport {ApBaseLayer} from './ap-base.layer';\nimport {MAP_PROJECTION} from './ap-map.settings';\nimport {ApMapViews} from './ap-map.views';\nimport {ApVectorSelection} from './ap-vector.selection';\nimport {IPingOptions, pingLocation} from './animations/pingLocation';\nimport OlStyle from 'ol/style/Style';\nimport OlStyleFill from 'ol/style/Fill';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport {ApMapInstance} from '../ap-map.instance';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {Create, StringFactory} from 'ts-tooling';\nimport IField = Data.FieldManagement.IField;\nimport ISoilSampleField = Data.Nutrients.ISoilSampleField;\n\nexport enum LayerSyncStrategy {\n FORCE,\n RESTRAINED,\n DELETE,\n}\n\n/**\n * Interface for setting vector layer display options\n */\nexport interface IVectorLayerOptions {\n /**\n * thin out features(e.g. labels) if they are overlapping, default: false\n */\n declutter?: boolean;\n /**\n * minimum zoom level: the layer will only be visible at zoom levels greater than the minZoom and less than or equal to the maxZoom\n */\n minZoom?: number;\n /**\n * max zoom level: the layer will only be visible at zoom levels greater than the minZoom and less than or equal to the maxZoom\n */\n maxZoom?: number;\n}\n/**\n * the Basic Vector Layer Representation\n */\nexport class ApBaseVectorLayer extends ApBaseLayer {\n public selectedFeatures: { [key: string]: ApVectorSelection } = {};\n private _fixedZIndex = -1;\n public innerSource: OlVectorSource = null;\n public Group = 'None';\n public pingLayer = new VectorLayer({\n declutter: true,\n source: new VectorSource({\n features: [],\n }),\n style: new OlStyle({\n fill: new OlStyleFill({\n color: 'rgba(0,0,0,0)',\n }),\n stroke: new OlStyleStroke({\n color: 'rgba(0,0,0,0)',\n }),\n }),\n });\n\n /**\n * create a Basic Vector Layer\n */\n constructor(layerName: string, layerGroup: string, mapStore: MapStore, options: IVectorLayerOptions = {}, private pingOptions: IPingOptions = null) {\n super(layerName, new OlVectorLayer({\n renderMode: 'image',\n declutter: options?.declutter ?? false,\n minZoom: options?.minZoom,\n maxZoom: options?.maxZoom,\n source: new OlVectorSource({}),\n } as any), mapStore);\n if (layerGroup) {\n this.Group = layerGroup;\n }\n this.pingLayer.getSource()?.on('addfeature', e => {\n if (pingOptions) {\n this.triggerPingLocation(e, this.pingOptions);\n }\n });\n }\n\n public get Visibility(): boolean {\n return this.layer.getVisible();\n }\n\n public set Visibility(value: boolean) {\n try {\n if (!ApMapInstance.mapRef) {\n return;\n }\n this.layer.setVisible(value);\n super.Visibility = value;\n this.pingLayer.setVisible(value);\n }catch (ex) {\n // in rare cases we got the following error:\n // >Cannot read properties of null (reading 'usedTiles')<\n // It could be reproduced by slowing down the browser (performance tab)\n // and clicking really fast between tabs (map/stat) and other modules.\n // The callstack pointed to this part of our code.\n // It seems a timing issue between disposing the map (when leaving the tab)\n // and clicking in the map or in the grid to focus a field\n // => this is not critical, and therefore we change it to 'Warning' in\n // order not to block our client with the client-error overlay\n console.warn('Updating visibility of layer failed because map is already disposed');\n }\n }\n\n public get FixedZIndex(): number {\n return this._fixedZIndex;\n }\n\n public set FixedZIndex(value: number) {\n this.layer.setZIndex(value);\n this.pingLayer.setZIndex(value - 1);\n this._fixedZIndex = value;\n }\n\n public get Order(): number {\n if (this.FixedZIndex > 0) {\n return this.FixedZIndex;\n }\n return this.layer.getZIndex();\n }\n\n public set Order(value: number) {\n if (this.FixedZIndex > 0) {\n return;\n }\n this.layer.setZIndex(value);\n this.pingLayer.setZIndex(value - 1);\n }\n\n /**\n * get the Open Layers Features fromthe Layer\n */\n get Features(): Feature[] {\n return this.Source.getFeatures();\n }\n\n protected getFieldExpressionByField(field: IField, fieldStore: FieldStore): string {\n const area = Create(fieldStore.getCurrentFieldGeom(field)?.AdminArea, 0);\n return this.getFieldExpressionByValues(field, area);\n }\n\n protected getFieldExpressionByValues(field: IField, area: number): string {\n const fieldExpr = field?.FieldName?.trim().length > 0 ? field?.FieldName?.trim() : '';\n const fieldFullName = `${field?.FieldNumber ?? ''}-${field?.FieldSubnumber ?? ''} ${fieldExpr}`;\n const areaExpr = this.getFieldAreaExpression(area);\n return `${fieldFullName}\\n${areaExpr}`;\n }\n\n protected getSoilFieldExpressionByValues(field: ISoilSampleField, area: number): string {\n const fieldExpr = field?.FieldName?.trim().length > 0 ? field?.FieldName?.trim() : '';\n const fieldFullName = `${field?.FieldNumber ?? ''}-${field?.FieldPart ?? ''} ${fieldExpr}`;\n const areaExpr = this.getFieldAreaExpression(area);\n return `${fieldFullName}\\n${areaExpr}`;\n }\n\n private getFieldAreaExpression(area: number): string {\n const areaHa = area > 0 ? area / 10000 : 0;\n const areaRounded = ApMapInstance.roundNumericPipe.transform(areaHa, ApMapInstance.settingsStore.FirstSetting.DigitsAfterDecimalPoint);\n return `${areaRounded} ${ApMapInstance.translationService.FindTranslationForSelectedLanguage('Base__UnitHa')}`;\n }\n\n /**\n * get the Bounding Box of all selected Features\n */\n get SelectionExtent(): Extent {\n const features: Feature[] = [];\n for (const key of Object.keys(this.selectedFeatures)) {\n features.Add(this.selectedFeatures[key].feature);\n }\n return ApGeometryExtension.calcExtentOfFeatures(features);\n }\n\n get SelectedFeatures(): Feature[] {\n const tmp: Feature[] = [];\n for (const key of Object.keys(this.selectedFeatures)) {\n tmp.Add(this.selectedFeatures[key].feature);\n }\n return tmp;\n }\n\n public SyncFeatures(features: Feature[], strategy = LayerSyncStrategy.FORCE): void {\n for (const feat of features) {\n const existsFeature = this.innerSource.getFeatureById(feat.getId());\n if (existsFeature && (strategy === LayerSyncStrategy.DELETE || strategy === LayerSyncStrategy.FORCE)) {\n this.innerSource.removeFeature(existsFeature);\n }\n if (strategy === LayerSyncStrategy.FORCE || strategy === LayerSyncStrategy.RESTRAINED) {\n this.innerSource.addFeature(feat);\n }\n }\n }\n\n public forFeaturesAtCoordinate(coordinate: any, callback: (f: OlFeature, l: OlVectorLayer) => void): void {\n for (const feat of GeometryChecker.IsPointInPolygon(this.Source.getFeatures(), coordinate)) {\n callback(feat, this.layer);\n }\n }\n\n public RemoveSelectedFeatures(): void {\n if (!this.innerSource || !this.innerSource.getFeatures() || this.innerSource.getFeatures().length < 1) {\n // nothing to remove\n this.selectedFeatures = {};\n return;\n }\n const numFeatures = this.innerSource.getFeatures().length;\n let removed = 0;\n for (const feat of this.SelectedFeatures) {\n const featureId = feat.getId();\n delete this.selectedFeatures[featureId];\n if (this.innerSource.getFeatureById(featureId)) {\n this.innerSource.removeFeature(feat);\n }\n removed++;\n }\n const allExpectedRemoved = this.innerSource.getFeatures().length === (numFeatures - removed);\n if (!allExpectedRemoved) {\n console.warn(`not all Selected Features was removed from Layer ${this.name}`);\n }\n }\n\n public GetSelectedFeaturesAsJSON(projection): { [key: string]: string } {\n const tmp = {};\n if (!this.selectedFeatures || !Object.keys(this.selectedFeatures).Any()) {\n return tmp;\n }\n const format = new GeoJSON({\n dataProjection: projection,\n featureProjection: MAP_PROJECTION,\n });\n for (const key in this.selectedFeatures) {\n if (!this.selectedFeatures.hasOwnProperty(key)) {\n continue;\n }\n const selection = this.selectedFeatures[key];\n tmp[selection.feature.getId().toString()] = format.writeGeometry(selection.feature.getGeometry());\n }\n return tmp;\n }\n\n public GetFeatureByIdAsJSON(projection, id: string): { [key: string]: string } {\n const tmp = {};\n const format = new GeoJSON({\n dataProjection: projection,\n featureProjection: MAP_PROJECTION,\n });\n this.layer.getSource().getFeatures().forEach(feat => {\n if (feat.getId().toString() === id) {\n tmp[feat.getId().toString()] = format.writeGeometry(feat.getGeometry());\n }\n });\n\n return tmp;\n }\n\n /**\n * zoom to the Layer Extent\n */\n public ZoomIn(duration?: number): void {\n if (!this.layer) {\n console.warn('layer is undefined ignore zoom!');\n }\n setTimeout(() => {\n if (!this.Extent || this.Extent.length < 4) {\n console.warn('cannot zoom to field maybe invalid Geometry?');\n return;\n }\n for (const coord of this.Extent) {\n if (coord === Infinity) {\n console.warn(`invalid Extend of Geometry ${this.Extent}`);\n return;\n }\n }\n ApMapViews.olView.fit(this.Extent, {duration: duration || 1000});\n }, 1);\n }\n\n /**\n * zoom to a specific Feature by Id or Feature\n */\n public ZoomToFeature(id: string | OlFeature, offset = 0): void {\n const extent = isString(id) ?\n this.Source.getFeatureById(id).getGeometry().getExtent() :\n (id as OlFeature).getGeometry().getExtent();\n ApMapViews.olView.fit(OlBuffer(extent, offset), {duration: 500});\n }\n\n /**\n * select a Feature by Id in Map and Zoom to it\n */\n public selectFeature(id: string, selectStyle: StyleDefinition): void {\n if (!this.Source) {\n console.warn(`cannot select feature with id ${id} no source on layer`);\n return;\n }\n const feat = this.Source.getFeatureById(id);\n if (!feat) {\n console.warn(`cannot select feature with id ${id} no feature found on layer`);\n return;\n }\n this.selectedFeatures[id] = new ApVectorSelection(feat, feat.getStyle());\n feat.setStyle(selectStyle);\n }\n\n public setStyle(style: StyleDefinition): void {\n if (!this.Source) {\n console.warn(`cannot set style no source on layer`);\n return;\n }\n for (const feat of this.Source.getFeatures()) {\n feat.setStyle(style);\n }\n }\n\n public removeApFeature(id: string): void {\n const features = _.reject(this.Features, (f) => {\n return (f.getId() !== undefined && f.getId().toString() === id);\n });\n this.clear();\n this.readFeatures(features);\n }\n\n /**\n * zoom to the Selected Features\n */\n public fitSelection(buffer: number = null, callback: (p0: boolean) => void = null): void {\n if (!this.SelectionExtent || this.SelectionExtent.Any((e) => e === Infinity)) {\n return;\n }\n const opt = {duration: 500};\n if (callback !== null) {\n opt['callback'] = callback;\n }\n if (buffer === null) {\n ApMapViews.olView.fit(this.SelectionExtent, opt);\n } else {\n ApMapViews.olView.fit(OlBuffer(this.SelectionExtent, buffer), opt);\n }\n }\n\n /**\n * deselect a Feature\n */\n public deselectFeature(id: string): void {\n const exists = find(keys(this.selectedFeatures), (f) => f === id);\n if (exists) {\n this.selectedFeatures[exists].resetStyle();\n unset(this.selectedFeatures, exists);\n }\n }\n\n /**\n * clear the Feature Selection\n */\n public clearSelection(): void {\n for (const id of keys(this.selectedFeatures)) {\n this.deselectFeature(id);\n }\n }\n\n public readFeatures(features: OlFeature[], style?: StyleDefinition, clusterSize = null): void {\n this.innerSource = new OlVectorSource({});\n if (clusterSize) {\n this.layer.setSource(new OlCluster({\n distance: clusterSize,\n source: this.innerSource,\n }));\n } else {\n this.layer.setSource(this.innerSource);\n }\n if (style) {\n this.layer.setStyle(style);\n }\n if (this.pingOptions) {\n this.pingLayer?.getSource()?.clear();\n }\n for (const f of features) {\n this.innerSource.addFeature(f);\n if (!this.pingOptions) {\n continue;\n }\n if (f.getGeometry().getType() === 'Point') {\n this.pingLayer?.getSource()?.addFeature(f);\n }\n }\n }\n\n public extentSource(features: OlFeature[]): void {\n if (!this.innerSource) {\n this.readFeatures(features);\n } else {\n this.innerSource.addFeatures(features);\n }\n }\n\n public clear(): void {\n if (this.innerSource) {\n this.innerSource.clear();\n }\n if (this.pingLayer) {\n this.pingLayer.getSource()?.clear();\n }\n }\n\n private triggerPingLocation(e, pingOptions: IPingOptions): void {\n pingOptions.feature = e.feature;\n pingOptions.layer = this.pingLayer;\n pingLocation(pingOptions);\n }\n}\n","import OlFeature from 'ol/Feature';\nimport OlStyle from 'ol/style/Style';\nimport OlCricleStyle from 'ol/style/Circle';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport {unByKey} from 'ol/Observable';\nimport {getVectorContext} from 'ol/render';\nimport {easeOut, easeIn} from 'ol/easing';\nimport OlMap from 'ol/Map';\nimport BaseLayer from 'ol/layer/Base';\nimport {Color, asString} from 'ol/color';\n\nexport interface IPingOptions {\n layer: BaseLayer;\n // the time of the animation in ms\n duration: number;\n // the feature to ping\n feature?: OlFeature;\n // a reference of the Openlayers Map\n map: () => OlMap;\n // the start radius of the Circle\n minRadius: number;\n // the end radius of the Circle\n maxRadius: number;\n // the width of the Circle Stroke\n strokeWidth: number;\n // the color of the Circle in hexcode or rgba notation\n color: Color;\n filter?: (f: OlFeature) => boolean;\n}\n\n/**\n * creates a Circle around the Geometry that grows\n */\nexport function pingLocation(opts: IPingOptions): void {\n if (!opts || !opts.feature || !opts.map()) {\n return;\n }\n if (opts.filter && !opts.filter(opts.feature)) {\n return;\n }\n if (opts.minRadius < 0) {\n opts.minRadius = 0;\n }\n if (opts.maxRadius < 0) {\n opts.maxRadius = 1;\n }\n if (opts.duration < 0) {\n opts.duration = 250;\n }\n if (opts.strokeWidth < 0.001) {\n opts.strokeWidth = 1;\n }\n if (!opts.color) {\n opts.color = [176, 203, 31, 1];\n }\n const start = Date.now();\n const flashGeom = opts.feature.getGeometry().clone();\n const listenerKey = opts.layer.on('postrender', animate);\n\n function animate(event): void {\n const frameState = event.frameState;\n const elapsed = frameState.time - start;\n if (elapsed >= opts.duration) {\n unByKey(listenerKey);\n return;\n }\n const vectorContext = getVectorContext(event);\n const elapsedRatio = elapsed / opts.duration;\n // radius will be 5 at start and 30 at end.\n const radius = easeOut(elapsedRatio) * (opts.maxRadius - opts.minRadius) + opts.minRadius;\n\n const style = new OlStyle({\n image: new OlCricleStyle({\n radius,\n stroke: new OlStyleStroke({\n color: asString(opts.color),\n width: opts.strokeWidth,\n }),\n }),\n });\n\n vectorContext.setStyle(style);\n vectorContext.drawGeometry(flashGeom);\n // tell OpenLayers to continue postrender animation\n opts.map().render();\n }\n}\n","/**\n * the Base for all Layers in Agriport\n */\nimport {MapStore} from '../../stores/map/map.store';\n\nexport class ApBaseLayer {\n /**\n * the Layer Name must be unique to identify the Layer\n */\n name = '';\n /**\n * the Layer instance Reference the Type was given by the generic Parameter\n */\n layer: T;\n\n /**\n * create a new Base Layer\n */\n constructor(name: string, olLayer: T, protected mapStore: MapStore) {\n this.name = name;\n this.layer = olLayer;\n (this.layer as any).set('name', name);\n }\n\n /**\n * get Visibility of the Layer\n */\n get Visibility(): boolean {\n return (this.layer as any).getVisible();\n }\n\n /**\n * set Visibility of the Layer\n */\n set Visibility(value: boolean) {\n (this.layer as any).setVisible(value);\n }\n\n /**\n * get the Z Index of the Layer\n */\n get Order(): number {\n return (this.layer as any).getZIndex();\n }\n\n /**\n * set the Z Index of the Layer\n */\n set Order(value: number) {\n (this.layer as any).setZIndex(value);\n }\n\n /**\n * get the Extent of all the Features in the Layer\n */\n get Extent(): [number, number, number, number] {\n return this.Source.getExtent();\n }\n\n /**\n * get the Openlayers Source of the Layer\n */\n get Source(): any {\n return (this.layer as any).getSource();\n }\n\n /**\n * calling the Style Function of the Layer\n */\n redraw(): void {\n (this.layer as any).setStyle((this.layer as any).getStyle());\n }\n}\n","/**\n * @module ol/source/BingMaps\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport SourceState from './State.js';\nimport TileImage from './TileImage.js';\nimport { applyTransform, intersects } from '../extent.js';\nimport { createFromTileUrlFunctions } from '../tileurlfunction.js';\nimport { createOrUpdate } from '../tilecoord.js';\nimport { createXYZ, extentFromProjection } from '../tilegrid.js';\nimport { get as getProjection, getTransformFromProjections } from '../proj.js';\nimport { jsonp as requestJSONP } from '../net.js';\n/**\n * @param {import('../tilecoord.js').TileCoord} tileCoord Tile coord.\n * @return {string} Quad key.\n */\nexport function quadKey(tileCoord) {\n var z = tileCoord[0];\n var digits = new Array(z);\n var mask = 1 << (z - 1);\n var i, charCode;\n for (i = 0; i < z; ++i) {\n // 48 is charCode for 0 - '0'.charCodeAt(0)\n charCode = 48;\n if (tileCoord[1] & mask) {\n charCode += 1;\n }\n if (tileCoord[2] & mask) {\n charCode += 2;\n }\n digits[i] = String.fromCharCode(charCode);\n mask >>= 1;\n }\n return digits.join('');\n}\n/**\n * The attribution containing a link to the Microsoft® Bing™ Maps Platform APIs’\n * Terms Of Use.\n * @const\n * @type {string}\n */\nvar TOS_ATTRIBUTION = '' +\n 'Terms of Use';\n/**\n * @typedef {Object} Options\n * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least the number of tiles in the viewport.\n * @property {boolean} [hidpi=false] If `true` hidpi tiles will be requested.\n * @property {string} [culture='en-us'] Culture code.\n * @property {string} key Bing Maps API key. Get yours at http://www.bingmapsportal.com/.\n * @property {string} imagerySet Type of imagery.\n * @property {boolean} [imageSmoothing=true] Enable image smoothing.\n * @property {number} [maxZoom=21] Max zoom. Default is what's advertized by the BingMaps service.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n * imageTile.getImage().src = src;\n * };\n * ```\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n */\n/**\n * @typedef {Object} BingMapsImageryMetadataResponse\n * @property {number} statusCode The response status code\n * @property {string} statusDescription The response status description\n * @property {string} authenticationResultCode The authentication result code\n * @property {Array} resourceSets The array of resource sets\n */\n/**\n * @typedef {Object} ResourceSet\n * @property {Array} resources\n */\n/**\n * @typedef {Object} Resource\n * @property {number} imageHeight The image height\n * @property {number} imageWidth The image width\n * @property {number} zoomMin The minimum zoom level\n * @property {number} zoomMax The maximum zoom level\n * @property {string} imageUrl The image URL\n * @property {Array} imageUrlSubdomains The image URL subdomains for rotation\n * @property {Array} [imageryProviders] The array of ImageryProviders\n */\n/**\n * @typedef {Object} ImageryProvider\n * @property {Array} coverageAreas The coverage areas\n * @property {string} [attribution] The attribution\n */\n/**\n * @typedef {Object} CoverageArea\n * @property {number} zoomMin The minimum zoom\n * @property {number} zoomMax The maximum zoom\n * @property {Array} bbox The coverage bounding box\n */\n/**\n * @classdesc\n * Layer source for Bing Maps tile data.\n * @api\n */\nvar BingMaps = /** @class */ (function (_super) {\n __extends(BingMaps, _super);\n /**\n * @param {Options} options Bing Maps options.\n */\n function BingMaps(options) {\n var _this = this;\n var hidpi = options.hidpi !== undefined ? options.hidpi : false;\n _this = _super.call(this, {\n cacheSize: options.cacheSize,\n crossOrigin: 'anonymous',\n imageSmoothing: options.imageSmoothing,\n opaque: true,\n projection: getProjection('EPSG:3857'),\n reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n state: SourceState.LOADING,\n tileLoadFunction: options.tileLoadFunction,\n tilePixelRatio: hidpi ? 2 : 1,\n wrapX: options.wrapX !== undefined ? options.wrapX : true,\n transition: options.transition,\n }) || this;\n /**\n * @private\n * @type {boolean}\n */\n _this.hidpi_ = hidpi;\n /**\n * @private\n * @type {string}\n */\n _this.culture_ = options.culture !== undefined ? options.culture : 'en-us';\n /**\n * @private\n * @type {number}\n */\n _this.maxZoom_ = options.maxZoom !== undefined ? options.maxZoom : -1;\n /**\n * @private\n * @type {string}\n */\n _this.apiKey_ = options.key;\n /**\n * @private\n * @type {string}\n */\n _this.imagerySet_ = options.imagerySet;\n var url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/' +\n _this.imagerySet_ +\n '?uriScheme=https&include=ImageryProviders&key=' +\n _this.apiKey_ +\n '&c=' +\n _this.culture_;\n requestJSONP(url, _this.handleImageryMetadataResponse.bind(_this), undefined, 'jsonp');\n return _this;\n }\n /**\n * Get the api key used for this source.\n *\n * @return {string} The api key.\n * @api\n */\n BingMaps.prototype.getApiKey = function () {\n return this.apiKey_;\n };\n /**\n * Get the imagery set associated with this source.\n *\n * @return {string} The imagery set.\n * @api\n */\n BingMaps.prototype.getImagerySet = function () {\n return this.imagerySet_;\n };\n /**\n * @param {BingMapsImageryMetadataResponse} response Response.\n */\n BingMaps.prototype.handleImageryMetadataResponse = function (response) {\n if (response.statusCode != 200 ||\n response.statusDescription != 'OK' ||\n response.authenticationResultCode != 'ValidCredentials' ||\n response.resourceSets.length != 1 ||\n response.resourceSets[0].resources.length != 1) {\n this.setState(SourceState.ERROR);\n return;\n }\n var resource = response.resourceSets[0].resources[0];\n var maxZoom = this.maxZoom_ == -1 ? resource.zoomMax : this.maxZoom_;\n var sourceProjection = this.getProjection();\n var extent = extentFromProjection(sourceProjection);\n var scale = this.hidpi_ ? 2 : 1;\n var tileSize = resource.imageWidth == resource.imageHeight\n ? resource.imageWidth / scale\n : [resource.imageWidth / scale, resource.imageHeight / scale];\n var tileGrid = createXYZ({\n extent: extent,\n minZoom: resource.zoomMin,\n maxZoom: maxZoom,\n tileSize: tileSize,\n });\n this.tileGrid = tileGrid;\n var culture = this.culture_;\n var hidpi = this.hidpi_;\n this.tileUrlFunction = createFromTileUrlFunctions(resource.imageUrlSubdomains.map(function (subdomain) {\n /** @type {import('../tilecoord.js').TileCoord} */\n var quadKeyTileCoord = [0, 0, 0];\n var imageUrl = resource.imageUrl\n .replace('{subdomain}', subdomain)\n .replace('{culture}', culture);\n return (\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\n function (tileCoord, pixelRatio, projection) {\n if (!tileCoord) {\n return undefined;\n }\n else {\n createOrUpdate(tileCoord[0], tileCoord[1], tileCoord[2], quadKeyTileCoord);\n var url = imageUrl;\n if (hidpi) {\n url += '&dpi=d1&device=mobile';\n }\n return url.replace('{quadkey}', quadKey(quadKeyTileCoord));\n }\n });\n }));\n if (resource.imageryProviders) {\n var transform_1 = getTransformFromProjections(getProjection('EPSG:4326'), this.getProjection());\n this.setAttributions(function (frameState) {\n var attributions = [];\n var viewState = frameState.viewState;\n var tileGrid = this.getTileGrid();\n var z = tileGrid.getZForResolution(viewState.resolution, this.zDirection);\n var tileCoord = tileGrid.getTileCoordForCoordAndZ(viewState.center, z);\n var zoom = tileCoord[0];\n resource.imageryProviders.map(function (imageryProvider) {\n var intersecting = false;\n var coverageAreas = imageryProvider.coverageAreas;\n for (var i = 0, ii = coverageAreas.length; i < ii; ++i) {\n var coverageArea = coverageAreas[i];\n if (zoom >= coverageArea.zoomMin &&\n zoom <= coverageArea.zoomMax) {\n var bbox = coverageArea.bbox;\n var epsg4326Extent = [bbox[1], bbox[0], bbox[3], bbox[2]];\n var extent_1 = applyTransform(epsg4326Extent, transform_1);\n if (intersects(extent_1, frameState.extent)) {\n intersecting = true;\n break;\n }\n }\n }\n if (intersecting) {\n attributions.push(imageryProvider.attribution);\n }\n });\n attributions.push(TOS_ATTRIBUTION);\n return attributions;\n }.bind(this));\n }\n this.setState(SourceState.READY);\n };\n return BingMaps;\n}(TileImage));\nexport default BingMaps;\n","/**\n * @module ol/net\n */\nimport { getUid } from './util.js';\n/**\n * Simple JSONP helper. Supports error callbacks and a custom callback param.\n * The error callback will be called when no JSONP is executed after 10 seconds.\n *\n * @param {string} url Request url. A 'callback' query parameter will be\n * appended.\n * @param {Function} callback Callback on success.\n * @param {function()=} opt_errback Callback on error.\n * @param {string=} opt_callbackParam Custom query parameter for the JSONP\n * callback. Default is 'callback'.\n */\nexport function jsonp(url, callback, opt_errback, opt_callbackParam) {\n var script = document.createElement('script');\n var key = 'olc_' + getUid(callback);\n function cleanup() {\n delete window[key];\n script.parentNode.removeChild(script);\n }\n script.async = true;\n script.src =\n url +\n (url.indexOf('?') == -1 ? '?' : '&') +\n (opt_callbackParam || 'callback') +\n '=' +\n key;\n var timer = setTimeout(function () {\n cleanup();\n if (opt_errback) {\n opt_errback();\n }\n }, 10000);\n window[key] = function (data) {\n clearTimeout(timer);\n cleanup();\n callback(data);\n };\n document.getElementsByTagName('head')[0].appendChild(script);\n}\n","import OlBingMapsSource from 'ol/source/BingMaps';\nimport {ApBaseTileLayer} from './ap-base-tile.layer';\nimport {MapStore} from '../../stores/map/map.store';\nimport {LayerGroupNames, LayerNames} from './layer-names';\n\nconst APIKey = 'AokX-S2lieXTaXG8pvEw3i2AKYuStBMK8RsUu6BDJ6hrL5AYv0IfQqM9zc-BAA-v';\n\nexport enum BingImagery {\n SATELLITE = 'Aerial',\n HYBRID = 'AerialWithLabelsOnDemand',\n STREET = 'RoadOnDemand',\n GRAYSCALE_ROAD = 'CanvasGray',\n LIGHT_ROAD = 'CanvasLight',\n DARK_ROADS = 'CanvasDark',\n BIRDSEYE = 'Birdseye',\n BIRDSEYE_LABELS = 'BirdseyeWithLabels',\n BIRDSEYE_V2 = 'BirdseyeV2',\n BIRDSEYE_V2_LABELS = 'BirdseyeV2WithLabels',\n STREETSIDE = 'Streetside',\n}\n\nexport class ApBingLayer extends ApBaseTileLayer {\n public Group = LayerGroupNames.BACKGROUND;\n\n constructor(mapStore: MapStore, set: BingImagery) {\n super(mapStore, LayerNames.BING_MAP, new OlBingMapsSource({\n key: APIKey,\n imagerySet: set,\n maxZoom: 19,\n hidpi: true,\n culture: 'de-DE'\n }));\n }\n\n public refresh(): void {\n this.source.clear();\n this.source.refresh();\n }\n}\n","import OlStyle from 'ol/style/Style';\nimport * as OlStyles from 'ol/style';\nimport * as OlGeom from 'ol/geom';\nimport GeometryType from 'ol/geom/GeometryType';\nimport Polygon from 'ol/geom/Polygon';\nimport Point from 'ol/geom/Point';\nimport LineString from 'ol/geom/LineString';\nimport {Coordinate} from 'ol/coordinate';\nimport {asString} from 'ol/color';\nimport OlFeature from 'ol/Feature';\n\nconst selectedColor = [176, 203, 31, 1];\n\nexport class ApEditStyles {\n\n static readonly defaultStyle = function (f): OlStyle {\n return new OlStyle({\n stroke: new OlStyles.Stroke({\n color: '#ffdc60',\n width: 1\n }),\n fill: new OlStyles.Fill({\n color: 'rgba(200, 200, 200, 0.1)',\n }),\n text: new OlStyles.Text({\n font: '22px Calibri,sans-serif',\n text: f.get('label'),\n stroke: new OlStyles.Stroke({\n color: '#ff4141',\n width: 2\n }),\n fill: new OlStyles.Fill({\n color: '#000'\n })\n })\n });\n };\n /**\n * the Style of a selected Field Feature in the Map\n */\n static readonly selectedStyle = function (): OlStyle[] {\n const image = new OlStyles.Circle({\n radius: 4,\n fill: new OlStyles.Fill({\n color: '#76E11D'\n }),\n stroke: new OlStyles.Stroke({\n color: '#000',\n width: 1,\n lineCap: 'round'\n })\n });\n return [\n new OlStyle({\n image,\n geometry(feature): OlGeom.MultiPoint {\n const geom = feature.getGeometry() as Polygon | Point | LineString;\n const geomType = geom.getType();\n switch (geomType) {\n case GeometryType.POINT:\n return new OlGeom.MultiPoint([geom.getCoordinates() as Coordinate]);\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING:\n return new OlGeom.MultiPoint(geom.getCoordinates() as Coordinate[]);\n case GeometryType.POLYGON:\n const tmp: Coordinate[] = [];\n for (const ring of geom.getCoordinates() as Coordinate[][]) {\n tmp.push(...ring);\n }\n return new OlGeom.MultiPoint(tmp);\n default:\n return new OlGeom.MultiPoint([]);\n }\n }\n }),\n new OlStyle({\n stroke: new OlStyles.Stroke({\n color: '#000',\n width: 1,\n lineCap: 'round'\n }),\n fill: new OlStyles.Fill({\n color: '#000'\n }),\n geometry: (feature: OlFeature): OlGeom.MultiLineString => {\n const geom = feature.getGeometry() as Point | LineString | Polygon;\n switch (geom.getType()) {\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING:\n return new OlGeom.MultiLineString([(geom.getCoordinates() as Coordinate[])]);\n case GeometryType.POLYGON:\n return new OlGeom.MultiLineString((geom.getCoordinates() as Coordinate[][]));\n default:\n return new OlGeom.MultiLineString([]);\n }\n },\n }),\n new OlStyle({\n stroke: new OlStyles.Stroke({\n color: asString(selectedColor),\n width: 5,\n lineCap: 'round'\n }),\n fill: new OlStyles.Fill({\n color: 'rgba(0, 0, 255, 0)'\n })\n })\n ];\n };\n\n static readonly invalidStyle = function (): OlStyle[] {\n const image = new OlStyles.Circle({\n radius: 4,\n fill: new OlStyles.Fill({\n color: '#76E11D'\n }),\n stroke: new OlStyles.Stroke({\n color: '#000',\n width: 1,\n lineCap: 'round'\n })\n });\n return [\n new OlStyle({\n image,\n geometry(feature): OlGeom.MultiPoint {\n const geom = feature.getGeometry() as Polygon | Point | LineString;\n const geomType = geom.getType();\n switch (geomType) {\n case GeometryType.POINT:\n return new OlGeom.MultiPoint([geom.getCoordinates() as Coordinate]);\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING:\n return new OlGeom.MultiPoint(geom.getCoordinates() as Coordinate[]);\n case GeometryType.POLYGON:\n const tmp: Coordinate[] = [];\n for (const ring of geom.getCoordinates() as Coordinate[][]) {\n tmp.push(...ring);\n }\n return new OlGeom.MultiPoint(tmp);\n default:\n return new OlGeom.MultiPoint([]);\n }\n }\n }),\n new OlStyle({\n stroke: new OlStyles.Stroke({\n color: '#000',\n width: 1,\n lineCap: 'round'\n }),\n fill: new OlStyles.Fill({\n color: '#000'\n }),\n geometry: (feature: OlFeature): OlGeom.MultiLineString => {\n const geom = feature.getGeometry() as Point | LineString | Polygon;\n switch (geom.getType()) {\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING:\n return new OlGeom.MultiLineString([(geom.getCoordinates() as Coordinate[])]);\n case GeometryType.POLYGON:\n return new OlGeom.MultiLineString((geom.getCoordinates() as Coordinate[][]));\n default:\n return new OlGeom.MultiLineString([]);\n }\n },\n }),\n new OlStyle({\n stroke: new OlStyles.Stroke({\n color: 'red',\n width: 5,\n lineCap: 'round'\n }),\n fill: new OlStyles.Fill({\n color: 'rgba(0, 0, 255, 0)'\n })\n })\n ];\n };\n}\n\n","import OlStyle from 'ol/style/Style';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport OlStyleFill from 'ol/style/Fill';\nimport OlStyleText from 'ol/style/Text';\nimport {asString} from 'ol/color';\nimport Style from 'ol/style/Style';\n\nexport const color = [44, 50, 55, 1];\nexport const selectedColor = [176, 203, 31, 1];\nexport const shadowColor = [255, 255, 255, 0.7];\n\nexport function defaultStyle(f): Style | Style[] {\n return [\n new OlStyle({\n stroke: new OlStyleStroke({\n color: asString(color),\n width: 2\n }),\n zIndex: 1\n }),\n new OlStyle({\n stroke: new OlStyleStroke({\n color: asString(shadowColor),\n width: 7\n }),\n zIndex: 0\n })\n ];\n}\n\nexport function defaultStyleLabelOnly(f): OlStyle {\n return new OlStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0,0,0,0)',\n width: 0\n }),\n text: new OlStyleText({\n font: '14px/14px Titillium Web',\n text: f.get('label'),\n overflow: true,\n stroke: new OlStyleStroke({\n color: '#fff',\n width: 11\n }),\n fill: new OlStyleFill({\n color: '#000'\n }),\n padding: [-5, -15, -5, -15] // [top, right, bottom, left].\n })\n });\n}\n\nexport function withCropColorStyle(f): OlStyle {\n return new OlStyle({\n stroke: new OlStyleStroke({\n color: 'rgba(0,0,0,0)',\n width: 0,\n }),\n fill: new OlStyleFill({\n color: f.get('color'),\n })\n });\n}\n\nexport function selectedStyle(f): Style | Style[] {\n return [\n new OlStyle({\n stroke: new OlStyleStroke({\n color: asString(color),\n width: 2,\n lineCap: 'round'\n }),\n zIndex: 1\n }),\n new OlStyle({\n stroke: new OlStyleStroke({\n color: asString(selectedColor),\n width: 7\n }),\n zIndex: 0\n })\n ];\n}\n","import {ApBaseVectorLayer} from './ap-base-vector.layer';\nimport {MapStore} from '../../stores/map/map.store';\nimport {LayerGroupNames, LayerNames} from './layer-names';\nimport {Coordinate} from 'ol/coordinate';\nimport Feature from 'ol/Feature';\nimport Point from 'ol/geom/Point';\nimport Style from 'ol/style/Style';\nimport OlIcon from 'ol/style/Icon';\nimport {LayerZIndex} from './layer-z-index';\nimport {GeometryEditor} from '../geometry.editor';\nimport GeometryType from 'ol/geom/GeometryType';\nimport {MapInteraction, MapInteractions} from '../interactions';\nimport {MAP_PROJECTION} from './ap-map.settings';\nimport {BehaviorSubject} from 'rxjs';\nimport {Translate} from 'ol/interaction';\nimport {Cluster} from 'ol/source';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport * as OlStyles from 'ol/style';\nimport IGuid = System.IGuid;\n\nexport class ApGeoPointsLayer extends ApBaseVectorLayer {\n /**\n * the Projection of the Data comes from the Backend\n */\n static readonly projection: string = 'EPSG:4326';\n\n private modifyInteraction: Translate;\n public editLayer: ApBaseVectorLayer;\n public modifyTriggered: BehaviorSubject = new BehaviorSubject(false);\n\n constructor(mapStore: MapStore) {\n super(LayerNames.GEOPOINTS, LayerGroupNames.NONE, mapStore, {declutter: false});\n this.FixedZIndex = LayerZIndex.GEO_POINTS;\n this.editLayer = new ApBaseVectorLayer(LayerNames.GEOPOINTS + 'Edit', LayerGroupNames.NONE, mapStore, {declutter: false});\n this.editLayer.FixedZIndex = LayerZIndex.GEO_POINTS;\n\n // inject clustered source to be able to cluster multiple geolocations which are very close to each other\n const clusterSource = new Cluster({\n distance: 40,\n source: this.layer.getSource(),\n });\n this.layer.setSource(clusterSource);\n this.layer.setStyle(function (feature): Style {\n const size = feature.get('features')?.length;\n return new Style({\n image: new OlIcon(({\n src: '/assets/svg/position_pin_grey.svg',\n scale: 0.5,\n opacity: 1,\n offset: [0, 0],\n anchor: [0.5, 0.94], // X offset in fraction (0-1) - half to the right, Y offset - full icon height to the top.\n })),\n text: new OlStyles.Text({\n text: size > 9 ? '9+' : (size > 1 ? size?.toString() : ''),\n font: '14px/14px Titillium Web',\n overflow: true,\n stroke: new OlStyleStroke({\n color: '#fff',\n width: 2\n }),\n offsetY: -20\n })\n });\n });\n }\n\n addPoint(id: IGuid, coordinate: Coordinate, addToEditLayer: boolean = false, transformCoordinates: boolean = true): void {\n const feature = new Feature();\n feature.setId(id.toString());\n feature.setGeometry(new Point(coordinate));\n if (transformCoordinates) {\n feature.getGeometry().transform(ApGeoPointsLayer.projection, MAP_PROJECTION);\n }\n\n feature.setStyle(\n new Style({\n image: new OlIcon(({\n src: addToEditLayer ? '/assets/svg/position_pin.svg' : '/assets/svg/position_pin_grey.svg',\n scale: addToEditLayer ? 1 : 0.5,\n opacity: 1,\n offset: [0, 0],\n anchor: [0.5, 0.94], // X offset in fraction (0-1) - half to the right, Y offset - full icon height to the top.\n ...(addToEditLayer && {color: 'rgba(176,203,31)'})\n }))\n }),\n );\n\n if (addToEditLayer) {\n this.editLayer.layer.getSource().addFeature(feature);\n } else {\n // regular geoPoint locations are clustered...\n (this.layer.getSource() as Cluster)?.getSource()?.addFeature(feature);\n }\n\n }\n\n deleteAllPoints(): void {\n this.editLayer.layer.getSource().clear();\n this.layer.getSource().clear();\n }\n\n activateEditMode(): void {\n this.editLayer.Visibility = true;\n this.modifyTriggered.next(false);\n this.modifyInteraction = GeometryEditor.TranslateLayerSourceFeature(GeometryType.POINT, this.editLayer.layer);\n this.modifyInteraction.on('translateend', () => {\n this.modifyTriggered.next(true);\n });\n }\n\n deactivateEditMode(): void {\n this.editLayer.Visibility = false;\n this.modifyInteraction?.un('translateend', () => {});\n MapInteraction.Remove(MapInteractions.TRANSLATE);\n }\n}\n","import {Subject} from 'rxjs';\nimport Select from 'ol/interaction/Select';\nimport MapBrowserEventType from 'ol/MapBrowserEventType';\nimport MapBrowserEvent from 'ol/MapBrowserEvent';\n\n/**\n * represent the Type of MapBrwoserPointerEvent from Openlayers\n */\nexport interface MapBrowserPointerEvent {\n coordinate: [number, number];\n dragging: boolean;\n frameState: any;\n map: any;\n originalEvent: any;\n pixel: [number, number];\n pointerEvent: any;\n target: any;\n type: string;\n}\n\n/**\n * holds Streams for the Map Events of Openlayers\n */\nexport class ApMapControlStream {\n /**\n * move Mouse over the Map\n */\n static listenPointerMove$: Subject = new Subject();\n /**\n * click with left Mouse Button in Map (don't release it)\n */\n static listenPointerDown$: Subject = new Subject();\n /**\n * release the left Mouse Button in Map\n */\n static listenPointerUp$: Subject = new Subject();\n static listenPointerOver$: Subject = new Subject();\n static listenPointerOut$: Subject = new Subject();\n static listenPointerLeave$: Subject = new Subject();\n static listenPointerEnter$: Subject = new Subject();\n /**\n * move the Map with pressed left Mouse Button\n */\n static listenPointerDrag$: Subject = new Subject();\n static listenPointerCancel$: Subject = new Subject();\n /**\n * all other Events they not catches now\n */\n static listenDefault$: Subject = new Subject();\n /**\n * click into Map\n */\n static listenClick$: Subject = new Subject();\n static listenDoubleClick$: Subject = new Subject();\n static listenSingleClick$: Subject = new Subject();\n /**\n * Mouse Wheel was Scroll Up\n */\n static listenScrollUp$: Subject = new Subject();\n /**\n * Mouse Wheel was Scroll Down\n */\n static listenScrollDown$: Subject = new Subject();\n\n /**\n * register on an Openlayers Map as Interaction\n */\n static interaction = new Select({\n condition: ApMapControlStream._incoming\n });\n\n /**\n * switch between different types and put it into the right stream\n */\n private static _incoming(event: MapBrowserEvent): boolean {\n switch (event.type) {\n case\n MapBrowserEventType.POINTERDOWN:\n ApMapControlStream.listenPointerDown$.next(event);\n break;\n case\n MapBrowserEventType.POINTERUP:\n ApMapControlStream.listenPointerUp$.next(event);\n break;\n case\n MapBrowserEventType.POINTERMOVE:\n ApMapControlStream.listenPointerMove$.next(event);\n break;\n case\n MapBrowserEventType.POINTEROVER:\n ApMapControlStream.listenPointerOver$.next(event);\n break;\n case\n MapBrowserEventType.POINTEROUT:\n ApMapControlStream.listenPointerOut$.next(event);\n break;\n case\n MapBrowserEventType.POINTERLEAVE:\n ApMapControlStream.listenPointerLeave$.next(event);\n break;\n case\n MapBrowserEventType.POINTERENTER:\n ApMapControlStream.listenPointerEnter$.next(event);\n break;\n case\n MapBrowserEventType.POINTERDRAG:\n ApMapControlStream.listenPointerDrag$.next(event);\n break;\n case\n MapBrowserEventType.POINTERCANCEL:\n ApMapControlStream.listenPointerCancel$.next(event);\n break;\n case\n MapBrowserEventType.CLICK:\n ApMapControlStream.listenClick$.next(event);\n break;\n case\n MapBrowserEventType.DBLCLICK:\n ApMapControlStream.listenDoubleClick$.next(event);\n break;\n case\n MapBrowserEventType.SINGLECLICK:\n ApMapControlStream.listenSingleClick$.next(event);\n break;\n case\n 'wheel':\n if ((event.originalEvent as WheelEvent).deltaY < 0) {\n ApMapControlStream.listenScrollUp$.next(event);\n } else {\n ApMapControlStream.listenScrollDown$.next(event);\n }\n break;\n default:\n ApMapControlStream.listenDefault$.next(event);\n }\n return true;\n }\n}\n","/**\n * the current Map Projection\n */\nexport const MAP_PROJECTION = 'EPSG:3857';\n","import OlView from 'ol/View';\nimport {MAP_PROJECTION} from './ap-map.settings';\n\n/**\n * Settings of the Map View\n */\nexport class ApMapViews {\n static olView: OlView = new OlView({\n center: [0, 0],\n zoom: 2,\n projection: MAP_PROJECTION\n });\n}\n","import * as _ from 'lodash';\nimport {LayerGroupNames, LayerNames} from './layer-names';\nimport {ApBaseVectorLayer} from './ap-base-vector.layer';\nimport OlFeature from 'ol/Feature';\nimport Feature from 'ol/Feature';\nimport {ApMapControlStream} from './ap-map-control.stream';\nimport {ApMapInstance} from '../ap-map.instance';\nimport {ApMenuUrls} from '../../ap-interface/enums/ap-menu-urls.enum';\nimport {ApEditStyles} from './ap-edit-styles';\nimport {Keys} from '../interactions';\nimport MapBrowserEvent from 'ol/MapBrowserEvent';\nimport {MapStore} from '../../stores/map/map.store';\nimport {defaultStyle} from './ap-fields.style';\nimport {LayerZIndex} from './layer-z-index';\n\n/**\n * the Fields Layer represent the Fields of a Farm\n */\nexport class ApPolygonEditLayer extends ApBaseVectorLayer {\n /**\n * the Projection of the Fields Layer Data comes from the Backend\n */\n static readonly projection: string = 'EPSG:4326';\n\n /**\n * create a new Layer of Fields from a List of Fields\n */\n constructor(mapStore: MapStore, data?: OlFeature[], name = LayerNames.EDIT) {\n super(name, LayerGroupNames.BASIC, mapStore);\n if (data) {\n this.replaceSource(data);\n }\n ApMapControlStream.listenClick$.subscribe(event => this._selectFeatures(event));\n this.FixedZIndex = LayerZIndex.EDIT_FIELDS;\n }\n\n selectPolygon(id: string): void {\n this.selectFeature(id, ApEditStyles.selectedStyle);\n }\n\n /**\n * replace the Data Source of the Layer\n */\n replaceSource(data: OlFeature[]): void {\n const features = data.map(function (feat): Feature {\n feat.set(Keys.LAYER_NAME, LayerNames.EDIT);\n return feat;\n });\n this.readFeatures(features, defaultStyle);\n }\n\n /**\n * replace the Data Source of the Layer\n */\n replaceSourceDisabled(data: OlFeature[]): void {\n const features = data.map(function (feat): Feature {\n feat.set(Keys.LAYER_NAME, LayerNames.FIELDS);\n return feat;\n });\n this.readFeatures(features, ApEditStyles.selectedStyle);\n }\n\n clear(): void {\n super.clear();\n }\n\n /**\n * select Fields in Map and Grid\n */\n private _selectFeatures(event: MapBrowserEvent): void {\n if (ApMapInstance.routerStore.CurrentUrl !== ApMenuUrls.FIELD_MANAGEMENT_OVERVIEW) {\n return;\n }\n const myFeatures = event.map.getFeaturesAtPixel(event.pixel);\n const layerFeature = _.filter(myFeatures, f => f.layerName === LayerNames.EDIT)[0];\n if (layerFeature === undefined) {\n return;\n }\n this.selectFeature(layerFeature.id_, ApEditStyles.selectedStyle);\n }\n\n /**\n * Set layer visibility\n */\n public set Visibility(value: boolean) {\n this.mapStore.Layers.FieldDescriptionLayer.Visibility = value || this.mapStore.Layers.FieldsLayer.Visibility;\n super.Visibility = value;\n }\n\n /**\n * Gets layer visibility\n */\n public get Visibility(): boolean {\n return super.Visibility;\n }\n}\n","/**\n * List of Layer Names\n */\nexport class LayerNames {\n /**\n * Fields Layer Name\n */\n static readonly FIELDS = 'fields';\n static readonly SOIL_SAMPLE_FIELDS = 'soil_sample_fields';\n static readonly FIELDS_DESCRIPTION = 'fields_description';\n static readonly SOIL_SAMPLE_FIELDS_DESCRIPTION = 'soil_sample_fields_description';\n static readonly FIELDS_CROP = 'fields_crop';\n\n static readonly EDIT = 'edit';\n static readonly EDIT_VIEW = 'edit_view';\n\n static readonly FUNGIDETECT = 'fungidetect';\n\n /**\n * action slices last hour tcp downtimes Layer Name\n */\n static readonly ACTIONSLICESLASTHOURTCPDOWNTIME = 'action_slices_last_hour_tcp_downtimes';\n\n /**\n * Locations Layer Name\n */\n static readonly LOCATIONS = 'locations';\n static readonly USER_LOCATION = 'user_location';\n static readonly GEOPOINTS = 'geo_points';\n /**\n * Soil Sample Points Layer\n */\n static readonly SOIL_SAMPLES = 'soil_samples';\n static readonly INVALID_SOIL_SAMPLES = 'invalid_soil_samples';\n /**\n * Soil Sample Distribution Layer Name (Shapes of the Nutrient Distribution)\n */\n static readonly DISTRIBUTIONS = 'field_distributions';\n static readonly SOIL_SAMPLE_DISTRIBUTIONS = 'sample_field_distributions';\n static readonly SOIL_GROUP_MAP = 'soil_group_map';\n static readonly NEED = 'need';\n\n static readonly MULTIPOINT = 'multipoint';\n static readonly TRACK = 'track';\n static readonly CONTACT = 'contact';\n\n static readonly NUTRIENT_PLANNINGS = 'nutrient_plannings';\n static readonly TASK_MANAGEMENT = 'task_management';\n static readonly TASK_MANAGEMENT_NUTRIENT = 'task_management_nutrient';\n static readonly SENSOR_POINTS = 'sensor_points';\n static readonly N_RASTER = 'n_raster';\n static readonly PP_RASTER = 'pp_raster';\n static readonly BING_MAP = 'BingMap';\n static readonly NDI = 'ndi';\n static readonly N_APPLICATION_MAP = 'n_application_map';\n static readonly PP_APPLICATION_MAP = 'pp_application_map';\n static readonly N_UPTAKE = 'nuptake_sat';\n}\n\nexport class LayerGroupNames {\n static readonly NONE = 'none';\n static readonly BACKGROUND = 'background';\n static readonly BASIC = 'basic';\n static readonly BASE_FERTILISATION = 'base_fertilisation';\n static readonly N_FERTILISATION = 'n_fertilisation';\n static readonly PLANT_PROTECTION = 'plant_protection';\n static readonly SEED_MAPS = 'seed_maps';\n static readonly FIELD_WORK = 'field_work';\n static readonly TASK_MANAGEMENT = 'task_management';\n static readonly FUNGIDETECT = 'fungidetect';\n static readonly LOGFILES = 'logfiles';\n}\n","// Enumeration of fixed layer z-index values.\n// Usually layers can be re-ordered by drag&drop in layer menu.\n// Nevertheless, some layers need a fixed z-Index to appear always on top.\nexport enum LayerZIndex {\n SAMPLE_FIELDS = 9000,\n CROPTYPES = 201,\n SOIL_GROUPS = 202,\n N_INDEX = 203,\n N_UPTAKE = 204,\n FIELDS = 9000,\n FIELDS_DESCRIPTION = 9001,\n TASK_MANAGEMENT = 9002,\n USER_LOCATION = 9003,\n GEO_POINTS = 9004,\n EDIT_FIELDS = 10000\n}\n","export function getMinFloat(value: number): number {\n const intValue = parseInt(value.toString(), 10);\n const digits = intValue.toString().length;\n return parseFloat('1e-' + (16 - digits));\n}\n","import {ILegend, ILegendSelection, ILegendSelectionItem, ILegendValue} from '../../stores/map/map.legend.store';\nimport {ApDistributionClassColors} from '../utils/ap-distribution-class-colors';\nimport {BehaviorSubject} from 'rxjs';\nimport {MapStore} from '../../stores/map/map.store';\nimport {NFertilizationLegend} from '../utils/n-fertilization-legend';\nimport {getMinFloat} from '../../ap-utils/service/value.calculations';\nimport {\n GetElementService\n} from '../../ap-utils/service/ap-get-element.service';\nimport {\n ApElementType\n} from '../../ap-interface/enums/ap-elements-type.enum';\nimport {\n LEGEND_IDS\n} from '../../ap-interface/enums/ap-legend-ids.enum';\nimport {\n BaseFertilizationService\n} from '../../services/data/base-fertilization.service';\nimport {FertilizerStore} from '../../stores/base-data/fertilizer.store';\nimport {\n FertilizationManagementService\n} from '../../services/data/fertilization-management.service';\nimport {BaseFertilizationPlansLegendData} from './types/nutrient-planning.types';\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport IMachineBreak = Data.DocuContext.Machine.IMachineBreak;\nimport {\n ApRoleTypeService\n} from '../../services/common/ap-role-type.service';\nimport IUser = Data.Authentication.IUser;\nimport {OperationModesEnum} from '../../stores/common/operation-modes.store';\nimport {\n ApOperationMode\n} from '../../ap-interface/enums/ap-operation-mode.enum';\n\nfunction getLastValueElementWithSelection(selectionList: ILegendSelection[], values: {\n [key: string]: ILegendValue[]\n} | ILegendValue[] | ((...args: string[]) => ILegendValue[])): ILegendValue | null {\n const key = selectionList.Convert((item: any) => item.selectedValue.getValue().value).Join('_');\n if (!values[key]) {\n return null;\n }\n return values[key].LastOrDefault();\n}\n\nfunction getFirstValueElementWithSelection(selectionList: ILegendSelection[], values: {\n [key: string]: ILegendValue[]\n} | ILegendValue[] | ((...args: string[]) => ILegendValue[])): ILegendValue | null {\n const key = selectionList.Convert((item: any) => item.selectedValue.getValue().value).Join('_');\n if (!values[key]) {\n return null;\n }\n return values[key].FirstOrDefault();\n}\n\n\nfunction getValueElementAtWithSelection(index: number, selectionList: ILegendSelection[], values: {\n [key: string]: ILegendValue[]\n} | ILegendValue[] | ((...args: string[]) => ILegendValue[])): ILegendValue | null {\n const key = selectionList.Convert((item: any) => item.selectedValue.getValue().value).Join('_');\n if (!values[key]) {\n return null;\n }\n return values[key].ElementAt(index);\n}\n\n/**\n * Extracts all values encapsulated in the legend instance\n * @param selectionList the current selectionList (e.g. lead nutrient)\n * @param subjectList the subject list\n * @param values the legend's value object which might be an instance of different types depending on the legend type.\n */\nfunction getValuesList(selectionList: ILegendSelection[], subjectList: BehaviorSubject[], values: {\n [key: string]: ILegendValue[]\n} | ILegendValue[] | ((...args: string[]) => ILegendValue[])): ILegendValue[] {\n const selectionListKeys = selectionList.map((item) => item.selectedValue.getValue() ? item.selectedValue.getValue().value : '');\n const subjectListKeys = subjectList.map((item) => item.getValue());\n let result: ILegendValue[] = null;\n if (Array.isArray(values)) {\n result = values;\n } else if (typeof values === 'object') {\n result = values[[...selectionListKeys, ...subjectListKeys].join('_')];\n } else if (typeof values === 'function') {\n result = values(...selectionListKeys, ...subjectListKeys);\n }\n return result;\n}\n\nfunction getLastValueElement(values: ILegendValue[]): ILegendValue | null {\n return values.LastOrDefault();\n}\n\nfunction getFirstValueElement(values: ILegendValue[]): ILegendValue | null {\n return values.FirstOrDefault();\n}\n\nfunction getValueElementAt(index: number, values: ILegendValue[]): ILegendValue | null {\n return values.ElementAt(index);\n}\n\nconst MAX_N_UPTAKE_LEGEND_VALUE = 250;\n\nexport const CROP_TYPE_LEGEND: (crops: ICropTypes[]) => ILegend = (crops) => {\n const values = crops.Convert((c: any) => ({\n title: c.Description,\n color: c.Color,\n } as ILegendValue));\n return {\n id: LEGEND_IDS.CROP_TYPE,\n title: 'Global__Crops',\n unit: '',\n selectionLists: [],\n subjects: [],\n values,\n updateValues: () => {},\n getValueElementAt: (idx) => getValueElementAt(idx, values),\n getFirstValueElement: () => getFirstValueElement(values),\n getLastValueElement: () => getLastValueElement(values),\n getValuesList: () => values\n };\n};\n\nexport const SOIL_GROUP_LEGEND: (translate: (value: string, params?: string[]) => string) => ILegend = (translate) => {\n const values = [\n {title: '1 ' + translate('Soilgroup_description_1'), color: '#ffffb3'},\n {title: '2 ' + translate('Soilgroup_description_2'), color: '#f2cc33'},\n {title: '3 ' + translate('Soilgroup_description_3'), color: '#a6734d'},\n {title: '4 ' + translate('Soilgroup_description_4'), color: '#267300'},\n {title: '5 ' + translate('Soilgroup_description_5'), color: '#0070ff'},\n {title: '6 ' + translate('Soilgroup_description_6'), color: '#b34d80'},\n ];\n return {\n id: LEGEND_IDS.SOIL_GROUP,\n title: 'Nutrients__Soilgroup',\n unit: '',\n selectionLists: [],\n subjects: [],\n values,\n updateValues: () => {},\n getValueElementAt: (idx) => getValueElementAt(idx, values),\n getFirstValueElement: () => getFirstValueElement(values),\n getLastValueElement: () => getLastValueElement(values),\n getValuesList: () => values\n };\n};\n\nconst NUTRIENT_COLORS: ILegendValue[] = [\n {title: 'A-', color: ApDistributionClassColors.getColorsFromValue(1)},\n {title: 'A+', color: ApDistributionClassColors.getColorsFromValue(2)},\n {title: 'B-', color: ApDistributionClassColors.getColorsFromValue(3)},\n {title: 'B+', color: ApDistributionClassColors.getColorsFromValue(4)},\n {title: 'C-', color: ApDistributionClassColors.getColorsFromValue(5)},\n {title: 'C+', color: ApDistributionClassColors.getColorsFromValue(6)},\n {title: 'D-', color: ApDistributionClassColors.getColorsFromValue(7)},\n {title: 'D+', color: ApDistributionClassColors.getColorsFromValue(8)},\n {title: 'E', color: ApDistributionClassColors.getColorsFromValue(9)},\n];\n\nexport const NUTRIENT_DISTRIBUTION: () => ILegend = () => {\n const values = {\n p: NUTRIENT_COLORS,\n k: NUTRIENT_COLORS,\n mg: NUTRIENT_COLORS,\n ph: NUTRIENT_COLORS,\n };\n const selectionLists = [\n {\n selectedValue: new BehaviorSubject({value: 'p', text: 'P'}),\n values: [\n {value: 'p', text: 'P'},\n {value: 'k', text: 'K'},\n {value: 'mg', text: 'Mg'},\n {value: 'ph', text: 'pH'},\n ],\n },\n ];\n const subjects = [];\n return {\n id: LEGEND_IDS.NUTRIENT_DISTRIBUTION,\n title: 'Global__NutrientDistribution',\n unit: '',\n selectionLists,\n subjects,\n values,\n updateValues: () => {},\n getValueElementAt: (idx) => getValueElementAtWithSelection(idx, selectionLists, values),\n getFirstValueElement: () => getFirstValueElementWithSelection(selectionLists, values),\n getLastValueElement: () => getLastValueElementWithSelection(selectionLists, values),\n getValuesList: () => getValuesList(selectionLists, subjects, values)\n };\n};\n\nexport const TRACK_LEGEND: (ms: MapStore, mb: IMachineBreak[], tr: (value: string, params?: string[]) => string) => ILegend = (mapStore, breaks, translate) => {\n const firstItem = breaks.FirstOrDefault(_ => true);\n if (!firstItem) {\n return undefined;\n }\n const machineTypeSelection = {\n selectedValue: new BehaviorSubject(null),\n values: [],\n };\n\n for (const br of breaks) {\n const val = br.Kind.toString();\n if (machineTypeSelection.values.Any(_ => _.value === val)) {\n continue;\n }\n machineTypeSelection.values.Add({value: val, text: translate(br.Description)});\n }\n machineTypeSelection.selectedValue.next(machineTypeSelection.values.FirstOrDefault(_ => _.value === '1'));\n\n const machinePropertySelection = {\n selectedValue: new BehaviorSubject(null),\n values: [],\n };\n for (const br of breaks) {\n if (machinePropertySelection.values.Any(_ => _.value === br.Property)) {\n continue;\n }\n machinePropertySelection.values.Add({value: br.Property, text: translate(`Api_Enums__${br.Property}`)});\n }\n machinePropertySelection.selectedValue.next(machinePropertySelection.values.FirstOrDefault(_ => _.value === 'Speed'));\n\n const colors: { [key: string]: ILegendValue[] } = {};\n for (const br of breaks) {\n const key = `${br.Kind}_${br.Property}`;\n if (!colors[key]) {\n colors[key] = [];\n }\n colors[key].Add({color: br.Color, title: br.Value.toString()});\n }\n\n const selectionLists = [machineTypeSelection, machinePropertySelection];\n const subjects = [];\n const tmp: ILegend = {\n id: LEGEND_IDS.TRACK,\n title: 'Docu__Driving_Lanes',\n unit: 'Settings__Lbl_Menu_Unit',\n selectionLists,\n subjects,\n values: colors,\n updateValues: () => {\n },\n getValueElementAt: (idx) => getValueElementAtWithSelection(idx, selectionLists, colors),\n getFirstValueElement: () => getFirstValueElementWithSelection(selectionLists, colors),\n getLastValueElement: () => getLastValueElementWithSelection(selectionLists, colors),\n getValuesList: () => getValuesList(selectionLists, subjects, colors)\n };\n\n // update TrackLayer Style\n mapStore.Layers.onChangeTrackLayerStyle.emit({\n legend: tmp,\n selectionKeys: tmp.selectionLists.map(_ => _.selectedValue.getValue().value),\n });\n\n // TODO: unit is only a Placeholder the Unit handling is not implemented!\n return tmp;\n};\n\nexport class INFertilisationStatisticValue {\n Average: number;\n ElementId: number;\n ProductId: number;\n Max: number;\n Min: number;\n}\n\nexport const N_PLANNING: (translate: (value: string, params?: string[]) => string, fertilizationManagementService: FertilizationManagementService, fertilizerStore: FertilizerStore, stats: INFertilisationStatisticValue) => ILegend = (translate, fertilizationManagementService, fertilizerStore, stats) => {\n let leadNutrientsSelection = [];\n const colors: { [key: string]: ILegendValue[] } = {};\n const _leadNutrientsSelection = [];\n const unitMapped = {n: translate('Global__Unit_kgN_ha')};\n\n _leadNutrientsSelection.Add({\n value: 'n',\n text: 'N',\n suffix: unitMapped['n']\n });\n if (!colors['n']) {\n colors['n'] = [];\n }\n // if const\n if (stats.Min === stats.Max) {\n stats.Min = Math.max(Math.floor(stats.Max / 10), 1);\n }\n colors['n'] = N_PLANNING_COLORS(stats.Min, stats.Max, (stats.Max - stats.Min) / 10);\n\n const fertilizer = fertilizerStore.getFertilizer(stats.ProductId);\n if (fertilizer) {\n const fertilizerContent = fertilizationManagementService.getFertilizerContentN(fertilizer.Id);\n const newStat = new INFertilisationStatisticValue();\n newStat.Min = stats.Min / fertilizerContent;\n newStat.Max = stats.Max / fertilizerContent;\n newStat.Average = stats.Average / fertilizerContent;\n unitMapped['N'] = fertilizer.Unit.Description + translate('Global__UnitPerHa');\n _leadNutrientsSelection.Add({\n value: 'N',\n text: fertilizer.Prodname,\n transformFunction(value: number): number {\n return value / fertilizerContent;\n },\n suffix: unitMapped['N']\n });\n colors['N'] = N_PLANNING_COLORS(newStat.Min, newStat.Max, (newStat.Max - newStat.Min) / 10);\n }\n\n leadNutrientsSelection = [\n {\n selectedValue: new BehaviorSubject(_leadNutrientsSelection.FirstOrDefault()),\n values: _leadNutrientsSelection,\n }\n ];\n const subjects = [];\n return {\n id: LEGEND_IDS.N_PLANNING,\n title: 'Global__Planning',\n unit: unitMapped,\n selectionLists: leadNutrientsSelection,\n subjects,\n values: colors,\n updateValues: () => {},\n getValueElementAt: (idx) => getValueElementAtWithSelection(idx, leadNutrientsSelection, colors),\n getFirstValueElement: () => getFirstValueElementWithSelection(leadNutrientsSelection, colors),\n getLastValueElement: () => getLastValueElementWithSelection(leadNutrientsSelection, colors),\n getValuesList: () => getValuesList(leadNutrientsSelection, subjects, colors)\n };\n};\n\n/**\n * dynamic n-uptake legend based on farm's min/max values\n */\nexport const N_UPTAKE_LEGEND: (stats: { Min: number, Max: number }) => ILegend = (stats) => {\n const nUptakeColors = [\n 'rgba(134, 86, 6, 1.00)',\n 'rgba(207, 127, 23, 1.00 )',\n 'rgba(239, 161, 59, 1.00 )',\n 'rgba(248, 231, 28, 1.00 )',\n 'rgba(253, 255, 206, 1.00 )',\n 'rgba(189, 233, 158, 1.00 )',\n 'rgba(90, 189, 97, 1.00 )',\n 'rgba(7, 147, 77, 1.00 )',\n 'rgba(5, 90, 91, 1.00 )',\n 'rgba(22, 65, 102, 1.00 )',\n 'rgba(8, 5, 91, 1.00 )',\n ];\n\n const statsMax = stats.Max > MAX_N_UPTAKE_LEGEND_VALUE ? MAX_N_UPTAKE_LEGEND_VALUE : stats.Max;\n const stepSize: number = Math.round((statsMax - stats.Min) / (nUptakeColors.length));\n const values: ILegendValue[] = [];\n for (let i = 0; i < nUptakeColors.length; i++) {\n let legendValue = 0;\n switch (i) {\n case 0:\n legendValue = stats.Min;\n break;\n default:\n legendValue = stats.Min + (i * stepSize);\n break;\n }\n values.push({\n color: nUptakeColors[i],\n value: legendValue,\n title: Math.round(legendValue)?.toString()\n });\n }\n\n return {\n id: LEGEND_IDS.N_UPTAKE,\n title: 'NUptake_Sat',\n unit: '',\n selectionLists: [],\n subjects: [],\n values,\n updateValues: () => {},\n getLastValueElement: () => getLastValueElement(values),\n getFirstValueElement: () => getFirstValueElement(values),\n getValueElementAt: (idx) => getValueElementAt(idx, values),\n getValuesList: () => values\n };\n};\n\n\nexport const NUTRIENT_PLANNING: (translate: (value: string, params?: string[]) => string,\n elementService: GetElementService,\n baseFertilizationService: BaseFertilizationService,\n fertilizerStore: FertilizerStore,\n plansLegendData: BaseFertilizationPlansLegendData) => ILegend = (translate, elementService, baseFertilizationService, fertilizerStore, plansLegendData) => {\n let leadNutrientsSelection = [];\n const colors: { [key: string]: ILegendValue[] } = {};\n const _leadNutrientsSelection = [];\n const unitMapped = {};\n const statistics = Object.assign([], plansLegendData.Statistic);\n const fertilizer = fertilizerStore.getFertilizer(plansLegendData.ProductId);\n const statInProduct = baseFertilizationService.addProductAmountStatistic(plansLegendData.ProductId,\n plansLegendData.ElementId, statistics);\n\n // const statInProduct = summary.Statistic;\n statInProduct?.forEach(_ => {\n if (plansLegendData.OperationModeId === ApOperationMode.Const && _.ElementId > 0) {\n return;\n }\n if (_.Max <= 0 && _.Min >= 0) {\n return;\n }\n const stepSize: number = (_.Max - _.Min) / 10;\n let elementValue: string;\n let elementText: string;\n let suffix: string;\n let stepForTitle: number;\n let transformFunction: (value: number) => number;\n const stepTitle = stepSize > 0 ? stepSize : _.Max;\n const absElementId = _.ElementId < 0 ? -_.ElementId : _.ElementId;\n switch (absElementId) {\n case ApElementType.P:\n elementValue = 'p';\n elementText = elementService.GetElementStringById(ApElementType.P);\n stepForTitle = elementService.CalculateElementOxidValueByElementType(stepTitle, ApElementType.P);\n transformFunction = (value: number): number => elementService.CalculateElementOxidValueByElementType(value, ApElementType.P);\n break;\n case ApElementType.K:\n elementValue = 'k';\n elementText = elementService.GetElementStringById(ApElementType.K);\n stepForTitle = elementService.CalculateElementOxidValueByElementType(stepTitle, ApElementType.K);\n transformFunction = (value: number): number => elementService.CalculateElementOxidValueByElementType(value, ApElementType.K);\n break;\n case ApElementType.Mg:\n elementValue = 'mg';\n elementText = elementService.GetElementStringById(ApElementType.Mg);\n stepForTitle = elementService.CalculateElementOxidValueByElementType(stepTitle, ApElementType.Mg);\n transformFunction = (value: number): number => elementService.CalculateElementOxidValueByElementType(value, ApElementType.Mg);\n break;\n case ApElementType.CaO:\n elementValue = 'ph';\n elementText = elementService.GetElementStringById(ApElementType.CaO);\n stepForTitle = stepTitle; // For CaO there is no necessary converting between element and oxid\n break;\n }\n\n // Using negative value here (created in addProductAmountStatistic) to differentiate between product and element\n // and to avoid any changes at mapFactory level elementValue.toUpperCase() is used, so when its product - we are\n // using uppercased element like P or PH\n if (_.ElementId < 0) {\n elementValue = elementValue.toUpperCase();\n elementText = fertilizer.Prodname;\n transformFunction = function (value: number): number {\n return baseFertilizationService.calculateProductAmount(plansLegendData.ProductId, plansLegendData.ElementId, value);\n };\n suffix = fertilizer.Unit.Description + translate('Global__UnitPerHa');\n stepForTitle = stepTitle; // No need for oxide calculation in case of product\n }\n\n if (elementValue === undefined || elementText === undefined || stepForTitle === undefined) {\n return;\n }\n _leadNutrientsSelection.Add({\n value: elementValue,\n text: elementText,\n transformFunction,\n suffix\n });\n unitMapped[elementValue] = suffix ? suffix : translate('Unit_kg_per_ha');\n\n if (!colors[elementValue]) {\n colors[elementValue] = [];\n }\n if (_.ElementId < 0) {\n const origElement = statInProduct.find(st => st.ElementId === absElementId);\n const origStepSize: number = (origElement.Max - origElement.Min) / 10;\n // Passing original max here because it is only used while calculating is legend should be static 0..9 or not\n colors[elementValue] = NUTRIENT_PLANNING_COLORS(origElement.Min < 0 ? _.Min : origElement.Min, _.Max, origStepSize, stepForTitle);\n } else {\n colors[elementValue] = NUTRIENT_PLANNING_COLORS(_.Min, _.Max, stepSize, stepForTitle);\n }\n });\n\n leadNutrientsSelection = [\n {\n selectedValue: new BehaviorSubject(_leadNutrientsSelection.FirstOrDefault()),\n values: _leadNutrientsSelection,\n }\n ];\n const subjects = [];\n return {\n id: LEGEND_IDS.NUTRIENT_PLANNING,\n title: 'Global__Planning',\n unit: unitMapped,\n selectionLists: leadNutrientsSelection,\n subjects,\n values: colors,\n updateValues: () => {},\n getValueElementAt: (idx) => getValueElementAtWithSelection(idx, leadNutrientsSelection, colors),\n getFirstValueElement: () => getFirstValueElementWithSelection(leadNutrientsSelection, colors),\n getLastValueElement: () => getLastValueElementWithSelection(leadNutrientsSelection, colors),\n getValuesList: () => getValuesList(leadNutrientsSelection, subjects, colors)\n };\n};\n\nconst NEED_COLORS = (max: number, step: number, stepTitle: number): ILegendValue[] => [\n {\n color: 'rgb(255, 230, 230)',\n title: '0',\n value: 0\n },\n {\n color: 'rgb(255, 199, 199)',\n title: (max <= 9 ? '1' : Math.round(stepTitle)).toString(),\n value: (max <= 9 ? 1 : Math.round(step))\n },\n {\n color: 'rgb(255, 142, 142)',\n title: (max <= 9 ? '2' : Math.round(stepTitle * 2)).toString(),\n value: (max <= 9 ? 2 : Math.round(step * 2))\n },\n {\n color: 'rgb(255, 85, 85)',\n title: (max <= 9 ? '3' : Math.round(stepTitle * 3)).toString(),\n value: (max <= 9 ? 3 : Math.round(step * 3))\n },\n {\n color: 'rgb(255, 28, 28)',\n title: (max <= 9 ? '4' : Math.round(stepTitle * 4)).toString(),\n value: (max <= 9 ? 4 : Math.round(step * 4))\n },\n {\n color: 'rgb(227, 0, 0)',\n title: (max <= 9 ? '5' : Math.round(stepTitle * 5)).toString(),\n value: (max <= 9 ? 5 : Math.round(step * 5))\n },\n {\n color: 'rgb(170, 0, 0)',\n title: (max <= 9 ? '6' : Math.round(stepTitle * 6)).toString(),\n value: (max <= 9 ? 6 : Math.round(step * 6))\n },\n {\n color: 'rgb(113, 0, 0)',\n title: (max <= 9 ? '7' : Math.round(stepTitle * 7)).toString(),\n value: (max <= 9 ? 7 : Math.round(step * 7))\n },\n {\n color: 'rgb(56, 0, 0)',\n title: (max <= 9 ? '8' : Math.round(stepTitle * 8)).toString(),\n value: (max <= 9 ? 8 : Math.round(step * 8))\n },\n {\n color: 'rgb(0, 0, 0)',\n title: (max <= 9 ? '9' : Math.round(stepTitle * 9)).toString(),\n value: (max <= 9 ? 9 : Math.round(step * 8) + getMinFloat(Math.round(step * 8)))\n },\n];\n\nfunction calculateCurrentNeedSteps(step: number, classes: number, max: number): number {\n const newStep = Math.floor(max / classes);\n return newStep <= 0 ? step : newStep;\n}\n\nexport const NEED_LEGEND: (mapStore: MapStore, elementService: GetElementService, maxP: number, maxK: number, maxMg: number, maxCaO: number) => ILegend = (mapStore, elementService, maxP, maxK, maxMg, maxCaO) => {\n const stepP: number = calculateCurrentNeedSteps(10, 9, maxP);\n const stepK: number = calculateCurrentNeedSteps(10, 9, maxK);\n const stepMg: number = calculateCurrentNeedSteps(10, 9, maxMg);\n const stepCaO: number = calculateCurrentNeedSteps(50, 9, maxCaO);\n\n const stepPTitle: number = calculateCurrentNeedSteps(10, 9, elementService.CalculateElementOxidValueByElementType(maxP, ApElementType.P));\n const stepKTitle: number = calculateCurrentNeedSteps(10, 9, elementService.CalculateElementOxidValueByElementType(maxK, ApElementType.K));\n const stepMgTitle: number = calculateCurrentNeedSteps(10, 9, elementService.CalculateElementOxidValueByElementType(maxMg, ApElementType.Mg));\n const stepCaOTitle: number = stepCaO; // For CaO there is no necessary converting between element and oxid\n\n const values: { [key: string]: ILegendValue[] } = {\n '1_p': NEED_COLORS(maxP, stepP, stepPTitle),\n '1_k': NEED_COLORS(maxK, stepK, stepKTitle),\n '1_mg': NEED_COLORS(maxMg, stepMg, stepMgTitle),\n '1_ph': NEED_COLORS(maxCaO, stepCaO, stepCaOTitle),\n '2_p': NEED_COLORS(maxP, stepP, stepPTitle),\n '2_k': NEED_COLORS(maxK, stepK, stepKTitle),\n '2_mg': NEED_COLORS(maxMg, stepMg, stepMgTitle),\n '2_ph': NEED_COLORS(maxCaO, stepCaO, stepCaOTitle),\n '3_p': NEED_COLORS(maxP, stepP, stepPTitle),\n '3_k': NEED_COLORS(maxK, stepK, stepKTitle),\n '3_mg': NEED_COLORS(maxMg, stepMg, stepMgTitle),\n '3_ph': NEED_COLORS(maxCaO, stepCaO, stepCaOTitle)\n };\n const nutrients = [\n {\n value: 'p',\n text: elementService.GetElementStringByString(ApElementType.P),\n transformFunction(value: number): number {\n return elementService.CalculateElementOxidValueByElementType(value, ApElementType.P);\n }\n },\n {\n value: 'k',\n text: elementService.GetElementStringByString(ApElementType.K),\n transformFunction(value: number): number {\n return elementService.CalculateElementOxidValueByElementType(value, ApElementType.K);\n }\n },\n {\n value: 'mg',\n text: elementService.GetElementStringByString(ApElementType.Mg),\n transformFunction(value: number): number {\n return elementService.CalculateElementOxidValueByElementType(value, ApElementType.Mg);\n }\n },\n {\n value: 'ph',\n text: elementService.GetElementStringByString(ApElementType.CaO),\n transformFunction(value: number): number {\n return elementService.CalculateElementOxidValueByElementType(value, ApElementType.CaO);\n }\n }\n ];\n const selectionLists = [\n {\n selectedValue: new BehaviorSubject({value: '1', text: 'Global__Crop_Rotation_Need'}),\n values: NEEDS,\n },\n {\n selectedValue: new BehaviorSubject(nutrients.FirstOrDefault()),\n values: nutrients\n }\n ];\n const subjects = [];\n const tmp: ILegend = {\n id: LEGEND_IDS.NEED,\n title: 'Nutrients__Need',\n unit: 'kg/ha',\n selectionLists,\n subjects,\n values,\n updateValues: () => {},\n getValueElementAt: (idx) => getValueElementAtWithSelection(idx, selectionLists, values),\n getFirstValueElement: () => getFirstValueElementWithSelection(selectionLists, values),\n getLastValueElement: () => getLastValueElementWithSelection(selectionLists, values),\n getValuesList: () => getValuesList(selectionLists, subjects, values)\n };\n\n mapStore.Layers.NeedLegendChange.emit({\n legend: tmp,\n selectionKeys: tmp.selectionLists.map(_ => _.selectedValue.getValue().value),\n });\n return tmp;\n};\n\nconst N_PLANNING_COLORS = (min: number, max: number, step: number) => [\n {\n color: 'rgba(243, 243, 216, 1)',\n title: (max <= 9 ? '0' : Math.round(min)).toString(),\n value: (max <= 9 ? 0 : Math.round(min))\n },\n {\n color: 'rgb(225, 242, 215)',\n title: (max <= 9 ? '1' : Math.round(calculateValueForStep(min, step, 1))).toString(),\n value: (max <= 9 ? 1 : Math.round(calculateValueForStep(min, step, 1)))\n },\n {\n color: 'rgb(195, 229, 227)',\n title: (max <= 9 ? '2' : Math.round(calculateValueForStep(min, step, 2))).toString(),\n value: (max <= 9 ? 2 : Math.round(calculateValueForStep(min, step, 2)))\n },\n {\n color: 'rgb(165, 216, 239)',\n title: (max <= 9 ? '3' : Math.round(calculateValueForStep(min, step, 3))).toString(),\n value: (max <= 9 ? 3 : Math.round(calculateValueForStep(min, step, 3)))\n },\n {\n color: 'rgb(135, 203, 251)',\n title: (max <= 9 ? '4' : Math.round(calculateValueForStep(min, step, 4))).toString(),\n value: (max <= 9 ? 4 : Math.round(calculateValueForStep(min, step, 4)))\n },\n {\n color: 'rgb(108, 174, 229)',\n title: (max <= 9 ? '5' : Math.round(calculateValueForStep(min, step, 5))).toString(),\n value: (max <= 9 ? 5 : Math.round(calculateValueForStep(min, step, 5)))\n },\n {\n color: 'rgb(83, 136, 190)',\n title: (max <= 9 ? '6' : Math.round(calculateValueForStep(min, step, 6))).toString(),\n value: (max <= 9 ? 6 : Math.round(calculateValueForStep(min, step, 6)))\n },\n {\n color: 'rgb(57, 99, 150)',\n title: (max <= 9 ? '7' : Math.round(calculateValueForStep(min, step, 7))).toString(),\n value: (max <= 9 ? 7 : Math.round(calculateValueForStep(min, step, 7)))\n },\n {\n color: 'rgb(32, 61, 111)',\n title: (max <= 9 ? '8' : Math.round(calculateValueForStep(min, step, 8))).toString(),\n value: (max <= 9 ? 8 : Math.round(calculateValueForStep(min, step, 8)))\n },\n {\n color: 'rgb(7, 24, 71)',\n title: (max <= 9 ? '9' : Math.round(calculateValueForStep(min, step, 9))).toString(),\n value: (max <= 9 ? 9 : Math.round(calculateValueForStep(min, step, 9)))\n }\n];\n\nconst NUTRIENT_PLANNING_COLORS = (min: number, max: number, step: number, stepTitle: number) => [\n {\n color: 'rgba(243, 243, 216, 1)',\n title: (max <= 9 ? '0' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 0))).toString(), // Math.round(min)).toString(),\n value: (max <= 9 ? 0 : Math.round(min))\n },\n {\n color: 'rgb(225, 242, 215 )',\n title: (max <= 9 ? '1' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 1))).toString(),\n value: (max <= 9 ? 1 : Math.round(calculateValueForStep(min, step, 1)))\n },\n {\n color: 'rgb(195, 229, 227 )',\n title: (max <= 9 ? '2' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 2))).toString(),\n value: (max <= 9 ? 2 : Math.round(calculateValueForStep(min, step, 2)))\n },\n {\n color: 'rgb(165, 216, 239 )',\n title: (max <= 9 ? '3' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 3))).toString(),\n value: (max <= 9 ? 3 : Math.round(calculateValueForStep(min, step, 3)))\n },\n {\n color: 'rgb(135, 203, 251 )',\n title: (max <= 9 ? '4' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 4))).toString(),\n value: (max <= 9 ? 4 : Math.round(calculateValueForStep(min, step, 4)))\n },\n {\n color: 'rgb(108, 174, 229 )',\n title: (max <= 9 ? '5' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 5))).toString(),\n value: (max <= 9 ? 5 : Math.round(calculateValueForStep(min, step, 5)))\n },\n {\n color: 'rgb(83, 136, 190 )',\n title: (max <= 9 ? '6' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 6))).toString(),\n value: (max <= 9 ? 6 : Math.round(calculateValueForStep(min, step, 6)))\n },\n {\n color: 'rgb(57, 99, 150 )',\n title: (max <= 9 ? '7' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 7))).toString(),\n value: (max <= 9 ? 7 : Math.round(calculateValueForStep(min, step, 7)))\n },\n {\n color: 'rgb(32, 61, 111 )',\n title: (max <= 9 ? '8' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 8))).toString(),\n value: (max <= 9 ? 8 : Math.round(calculateValueForStep(min, step, 8)))\n },\n {\n color: 'rgb(7, 24, 71 )',\n title: (max <= 9 ? '9' : Math.round(nutrientPlanningTitle(min, step, stepTitle, 9))).toString(),\n value: (max <= 9 ? 9 : Math.round(calculateValueForStep(min, step, 9)))\n }\n];\n\nconst minStepSize = 2.5;\n\nconst nutrientPlanningTitle = (min: number, step: number, stepTitle: number, level: number): number => {\n if (step === 0) {\n return stepTitle;\n }\n return min * (stepTitle / step) + stepTitle * level;\n};\n\nexport const NEEDS = [\n {value: '1', text: 'Global__Crop_Rotation_Need'},\n {value: '2', text: 'Global__Remaining_Need_One'},\n {value: '3', text: 'Global__Remaining_Need_Two'}\n];\n\nexport const N_LOG_INTERPOLATION_LEGEND: (user: IUser) => ILegend = (user: IUser) => {\n const valuesToSelect = [\n {value: '0', text: 'N__Uptake', suffix: 'Global__Unit_kgN_ha'},\n {value: '1', text: 'N__Application', suffix: 'Global__Unit_kgN_ha'}\n ];\n if (!!user && ApRoleTypeService.hasDeveloperRole(user)) {\n valuesToSelect.push({value: '2', text: 'N__GBI', suffix: undefined});\n }\n const selectedValue0 = new BehaviorSubject(valuesToSelect[0]);\n const values: (...args: string[]) => ILegendValue[] = (band: string, min: string, max: string) => {\n let minValue = Math.max(+min, 0);\n let maxValue = +max;\n if (isNaN(minValue)) {\n minValue = 0;\n }\n if (isNaN(maxValue)) {\n maxValue = 0;\n }\n const colors = NFertilizationLegend.N_COLORS[+band];\n const step = Math.max((maxValue - minValue) / colors.length, 1);\n return colors.map((color, i) => {\n const value = (step < 10 ? Math.floor((minValue + step * i) * 10) / 10 : Math.floor((minValue + step * i)));\n const legendValue: ILegendValue = {\n color,\n title: '' + Math.trunc(value),\n value\n };\n return legendValue;\n });\n };\n\n const selectionLists = [\n {\n selectedValue: selectedValue0,\n values: valuesToSelect,\n disabled: false\n }\n ];\n const subjects = [new BehaviorSubject(0), new BehaviorSubject(0)];\n return {\n id: LEGEND_IDS.N_LOG_INTERPOLATION,\n title: 'Lbl_NSensor',\n unit: '',\n selectionLists,\n subjects,\n values,\n updateValues: () => {\n },\n getLastValueElement: () => getLastValueElementWithSelection(selectionLists, values),\n getFirstValueElement: () => getFirstValueElementWithSelection(selectionLists, values),\n getValueElementAt: (idx) => getValueElementAtWithSelection(idx, selectionLists, values),\n getValuesList: () => getValuesList(selectionLists, subjects, values)\n };\n};\n\nexport const PP_APPLICATION_LEGEND: (stats: { Min: number, Max: number }) => ILegend = (stats) => {\n const values = N_PLANNING_COLORS(stats.Min, stats.Max, (stats.Max - stats.Min) / 10);\n return {\n id: LEGEND_IDS.PP_APPLICATION,\n title: 'Global__Planning',\n unit: '',\n selectionLists: [],\n subjects: [],\n values,\n updateValues: () => {},\n getLastValueElement: () => getLastValueElement(values),\n getFirstValueElement: () => getFirstValueElement(values),\n getValueElementAt: (idx) => getValueElementAt(idx, values),\n getValuesList: () => values\n };\n};\n\nexport const PP_LOG_INTERPOLATION_LEGEND: (user: IUser) => ILegend = (user: IUser) => {\n const valuesToSelect = [\n {value: '0', text: 'N__Uptake', suffix: 'Global__Unit_kgN_ha'},\n {value: '1', text: 'Base_PP_Type', suffix: 'Unit_l_per_ha'}\n ];\n if (!!user && ApRoleTypeService.hasDeveloperRole(user)) {\n valuesToSelect.push({value: '2', text: 'N__GBI', suffix: undefined});\n }\n const selectedValue = new BehaviorSubject(valuesToSelect[0]);\n const values: (...args: string[]) => ILegendValue[] = (band: string, min: string, max: string) => {\n let minValue = Math.max(+min, 0);\n let maxValue = +max;\n if (isNaN(minValue)) {\n minValue = 0;\n }\n if (isNaN(maxValue)) {\n maxValue = 0;\n }\n const colors = NFertilizationLegend.N_COLORS[+band];\n const step = Math.max((maxValue - minValue) / colors.length, 1);\n return colors.map((color, i) => {\n const value = (step < 10 ? Math.floor((minValue + step * i) * 10) / 10 : Math.floor((minValue + step * i)));\n const legendValue: ILegendValue = {\n color,\n title: '' + Math.trunc(value),\n value\n };\n return legendValue;\n });\n };\n\n const selectionLists = [\n {\n selectedValue,\n values: valuesToSelect,\n disabled: false\n }\n ];\n const subjects = [new BehaviorSubject(0), new BehaviorSubject(0)];\n const result: ILegend = {\n id: LEGEND_IDS.PP_LOG_INTERPOLATION,\n title: 'Lbl_NSensor',\n unit: '',\n selectionLists,\n subjects,\n values,\n updateValues: () => {\n },\n getLastValueElement: () => getLastValueElementWithSelection(selectionLists, values),\n getFirstValueElement: () => getFirstValueElementWithSelection(selectionLists, values),\n getValueElementAt: (idx) => getValueElementAtWithSelection(idx, selectionLists, values),\n getValuesList: () => getValuesList(selectionLists, subjects, values)\n };\n return result;\n};\n\nexport const LOG_LEGEND: () => ILegend = () => {\n const min = new BehaviorSubject(0);\n const max = new BehaviorSubject(10);\n const values = () => {\n return NFertilizationLegend.getDynamicColorLegend('uptake', min.getValue(), max.getValue(), minStepSize);\n };\n\n return {\n id: LEGEND_IDS.LOG,\n title: 'NUptake',\n unit: '',\n selectionLists: [],\n subjects: [],\n values,\n updateValues: (minValue: number, maxValue: number) => {\n min.next(minValue);\n max.next(maxValue > MAX_N_UPTAKE_LEGEND_VALUE ? MAX_N_UPTAKE_LEGEND_VALUE : maxValue);\n },\n getLastValueElement: () => getLastValueElement(values()),\n getFirstValueElement: () => getFirstValueElement(values()),\n getValueElementAt: (idx) => getValueElementAt(idx, values()),\n getValuesList: () => values()\n };\n};\n\nexport const NDI_LEGEND: () => ILegend = () => {\n const values = [\n {title: '0', value: 0, color: '#000000'},\n {title: '10', value: 10, color: '#865606'},\n {title: '20', value: 20, color: '#efa13b'},\n {title: '30', value: 30, color: '#faf50c'},\n {title: '40', value: 40, color: '#bde99e'},\n {title: '50', value: 50, color: '#5abd61'},\n {title: '60', value: 60, color: '#07934d'},\n {title: '70', value: 70, color: '#164166'},\n {title: '80', value: 80, color: '#4a0957'},\n {title: '90', value: 90, color: '#e40c81'},\n {title: '100', value: 100, color: '#e40c3b'},\n ];\n return {\n id: LEGEND_IDS.NDI,\n title: 'Global__NDI_Name',\n unit: '',\n selectionLists: [],\n subjects: [],\n values,\n updateValues: () => {},\n getLastValueElement: () => getLastValueElement(values),\n getFirstValueElement: () => getFirstValueElement(values),\n getValueElementAt: (idx) => getValueElementAt(idx, values),\n getValuesList: () => values\n };\n};\n\nconst calculateValueForStep = (min: number, step: number, level: number): number => {\n if (level <= 0) {\n return 0;\n }\n return min + step * level;\n};\n\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/canvas/ImageLayer\n */\nimport CanvasLayerRenderer from './Layer.js';\nimport ViewHint from '../../ViewHint.js';\nimport { ENABLE_RASTER_REPROJECTION } from '../../reproj/common.js';\nimport { assign } from '../../obj.js';\nimport { compose as composeTransform, makeInverse } from '../../transform.js';\nimport { containsExtent, intersects } from '../../extent.js';\nimport { createTransformString } from '../../render/canvas.js';\nimport { fromUserExtent } from '../../proj.js';\nimport { getIntersection, isEmpty } from '../../extent.js';\n/**\n * @classdesc\n * Canvas renderer for image layers.\n * @api\n */\nvar CanvasImageLayerRenderer = /** @class */ (function (_super) {\n __extends(CanvasImageLayerRenderer, _super);\n /**\n * @param {import(\"../../layer/Image.js\").default} imageLayer Image layer.\n */\n function CanvasImageLayerRenderer(imageLayer) {\n var _this = _super.call(this, imageLayer) || this;\n /**\n * @protected\n * @type {?import(\"../../ImageBase.js\").default}\n */\n _this.image_ = null;\n return _this;\n }\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n CanvasImageLayerRenderer.prototype.getImage = function () {\n return !this.image_ ? null : this.image_.getImage();\n };\n /**\n * Determine whether render should be called.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {boolean} Layer is ready to be rendered.\n */\n CanvasImageLayerRenderer.prototype.prepareFrame = function (frameState) {\n var layerState = frameState.layerStatesArray[frameState.layerIndex];\n var pixelRatio = frameState.pixelRatio;\n var viewState = frameState.viewState;\n var viewResolution = viewState.resolution;\n var imageSource = this.getLayer().getSource();\n var hints = frameState.viewHints;\n var renderedExtent = frameState.extent;\n if (layerState.extent !== undefined) {\n renderedExtent = getIntersection(renderedExtent, fromUserExtent(layerState.extent, viewState.projection));\n }\n if (!hints[ViewHint.ANIMATING] &&\n !hints[ViewHint.INTERACTING] &&\n !isEmpty(renderedExtent)) {\n if (imageSource) {\n var projection = viewState.projection;\n if (!ENABLE_RASTER_REPROJECTION) {\n var sourceProjection = imageSource.getProjection();\n if (sourceProjection) {\n projection = sourceProjection;\n }\n }\n var image = imageSource.getImage(renderedExtent, viewResolution, pixelRatio, projection);\n if (image && this.loadImage(image)) {\n this.image_ = image;\n }\n }\n else {\n this.image_ = null;\n }\n }\n return !!this.image_;\n };\n /**\n * Render the layer.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target that may be used to render content to.\n * @return {HTMLElement} The rendered element.\n */\n CanvasImageLayerRenderer.prototype.renderFrame = function (frameState, target) {\n var image = this.image_;\n var imageExtent = image.getExtent();\n var imageResolution = image.getResolution();\n var imagePixelRatio = image.getPixelRatio();\n var layerState = frameState.layerStatesArray[frameState.layerIndex];\n var pixelRatio = frameState.pixelRatio;\n var viewState = frameState.viewState;\n var viewCenter = viewState.center;\n var viewResolution = viewState.resolution;\n var size = frameState.size;\n var scale = (pixelRatio * imageResolution) / (viewResolution * imagePixelRatio);\n var width = Math.round(size[0] * pixelRatio);\n var height = Math.round(size[1] * pixelRatio);\n var rotation = viewState.rotation;\n if (rotation) {\n var size_1 = Math.round(Math.sqrt(width * width + height * height));\n width = size_1;\n height = size_1;\n }\n // set forward and inverse pixel transforms\n composeTransform(this.pixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / pixelRatio, 1 / pixelRatio, rotation, -width / 2, -height / 2);\n makeInverse(this.inversePixelTransform, this.pixelTransform);\n var canvasTransform = createTransformString(this.pixelTransform);\n this.useContainer(target, canvasTransform, layerState.opacity);\n var context = this.context;\n var canvas = context.canvas;\n if (canvas.width != width || canvas.height != height) {\n canvas.width = width;\n canvas.height = height;\n }\n else if (!this.containerReused) {\n context.clearRect(0, 0, width, height);\n }\n // clipped rendering if layer extent is set\n var clipped = false;\n if (layerState.extent) {\n var layerExtent = fromUserExtent(layerState.extent, viewState.projection);\n clipped =\n !containsExtent(layerExtent, frameState.extent) &&\n intersects(layerExtent, frameState.extent);\n if (clipped) {\n this.clipUnrotated(context, frameState, layerExtent);\n }\n }\n var img = image.getImage();\n var transform = composeTransform(this.tempTransform, width / 2, height / 2, scale, scale, 0, (imagePixelRatio * (imageExtent[0] - viewCenter[0])) / imageResolution, (imagePixelRatio * (viewCenter[1] - imageExtent[3])) / imageResolution);\n this.renderedResolution = (imageResolution * pixelRatio) / imagePixelRatio;\n var dx = transform[4];\n var dy = transform[5];\n var dw = img.width * transform[0];\n var dh = img.height * transform[3];\n assign(context, this.getLayer().getSource().getContextOptions());\n this.preRender(context, frameState);\n if (dw >= 0.5 && dh >= 0.5) {\n var opacity = layerState.opacity;\n var previousAlpha = void 0;\n if (opacity !== 1) {\n previousAlpha = this.context.globalAlpha;\n this.context.globalAlpha = opacity;\n }\n this.context.drawImage(img, 0, 0, +img.width, +img.height, Math.round(dx), Math.round(dy), Math.round(dw), Math.round(dh));\n if (opacity !== 1) {\n this.context.globalAlpha = previousAlpha;\n }\n }\n this.postRender(context, frameState);\n if (clipped) {\n context.restore();\n }\n if (canvasTransform !== canvas.style.transform) {\n canvas.style.transform = canvasTransform;\n }\n return this.container;\n };\n return CanvasImageLayerRenderer;\n}(CanvasLayerRenderer));\nexport default CanvasImageLayerRenderer;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageCanvas\n */\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\n/**\n * A function that is called to trigger asynchronous canvas drawing. It is\n * called with a \"done\" callback that should be called when drawing is done.\n * If any error occurs during drawing, the \"done\" callback should be called with\n * that error.\n *\n * @typedef {function(function(Error=): void): void} Loader\n */\nvar ImageCanvas = /** @class */ (function (_super) {\n __extends(ImageCanvas, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {HTMLCanvasElement} canvas Canvas.\n * @param {Loader=} opt_loader Optional loader function to\n * support asynchronous canvas drawing.\n */\n function ImageCanvas(extent, resolution, pixelRatio, canvas, opt_loader) {\n var _this = this;\n var state = opt_loader !== undefined ? ImageState.IDLE : ImageState.LOADED;\n _this = _super.call(this, extent, resolution, pixelRatio, state) || this;\n /**\n * Optional canvas loader function.\n * @type {?Loader}\n * @private\n */\n _this.loader_ = opt_loader !== undefined ? opt_loader : null;\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n _this.canvas_ = canvas;\n /**\n * @private\n * @type {?Error}\n */\n _this.error_ = null;\n return _this;\n }\n /**\n * Get any error associated with asynchronous rendering.\n * @return {?Error} Any error that occurred during rendering.\n */\n ImageCanvas.prototype.getError = function () {\n return this.error_;\n };\n /**\n * Handle async drawing complete.\n * @param {Error=} err Any error during drawing.\n * @private\n */\n ImageCanvas.prototype.handleLoad_ = function (err) {\n if (err) {\n this.error_ = err;\n this.state = ImageState.ERROR;\n }\n else {\n this.state = ImageState.LOADED;\n }\n this.changed();\n };\n /**\n * Load not yet loaded URI.\n */\n ImageCanvas.prototype.load = function () {\n if (this.state == ImageState.IDLE) {\n this.state = ImageState.LOADING;\n this.changed();\n this.loader_(this.handleLoad_.bind(this));\n }\n };\n /**\n * @return {HTMLCanvasElement} Canvas element.\n */\n ImageCanvas.prototype.getImage = function () {\n return this.canvas_;\n };\n return ImageCanvas;\n}(ImageBase));\nexport default ImageCanvas;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/canvas/VectorImageLayer\n */\nimport CanvasImageLayerRenderer from './ImageLayer.js';\nimport CanvasVectorLayerRenderer from './VectorLayer.js';\nimport EventType from '../../events/EventType.js';\nimport ImageCanvas from '../../ImageCanvas.js';\nimport ImageState from '../../ImageState.js';\nimport ViewHint from '../../ViewHint.js';\nimport { apply, compose, create } from '../../transform.js';\nimport { assign } from '../../obj.js';\nimport { getHeight, getWidth, isEmpty, scaleFromCenter } from '../../extent.js';\nimport { renderDeclutterItems } from '../../render.js';\n/**\n * @classdesc\n * Canvas renderer for image layers.\n * @api\n */\nvar CanvasVectorImageLayerRenderer = /** @class */ (function (_super) {\n __extends(CanvasVectorImageLayerRenderer, _super);\n /**\n * @param {import(\"../../layer/VectorImage.js\").default} layer Vector image layer.\n */\n function CanvasVectorImageLayerRenderer(layer) {\n var _this = _super.call(this, layer) || this;\n /**\n * @private\n * @type {import(\"./VectorLayer.js\").default}\n */\n _this.vectorRenderer_ = new CanvasVectorLayerRenderer(layer);\n /**\n * @private\n * @type {number}\n */\n _this.layerImageRatio_ = layer.getImageRatio();\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.coordinateToVectorPixelTransform_ = create();\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.renderedPixelToCoordinateTransform_ = null;\n return _this;\n }\n /**\n * Clean up.\n */\n CanvasVectorImageLayerRenderer.prototype.disposeInternal = function () {\n this.vectorRenderer_.dispose();\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Asynchronous layer level hit detection.\n * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with an array of features.\n */\n CanvasVectorImageLayerRenderer.prototype.getFeatures = function (pixel) {\n if (this.vectorRenderer_) {\n var vectorPixel = apply(this.coordinateToVectorPixelTransform_, apply(this.renderedPixelToCoordinateTransform_, pixel.slice()));\n return this.vectorRenderer_.getFeatures(vectorPixel);\n }\n else {\n var promise = new Promise(function (resolve, reject) {\n resolve([]);\n });\n return promise;\n }\n };\n /**\n * Perform action necessary to get the layer rendered after new fonts have loaded\n */\n CanvasVectorImageLayerRenderer.prototype.handleFontsChanged = function () {\n this.vectorRenderer_.handleFontsChanged();\n };\n /**\n * Determine whether render should be called.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {boolean} Layer is ready to be rendered.\n */\n CanvasVectorImageLayerRenderer.prototype.prepareFrame = function (frameState) {\n var pixelRatio = frameState.pixelRatio;\n var viewState = frameState.viewState;\n var viewResolution = viewState.resolution;\n var hints = frameState.viewHints;\n var vectorRenderer = this.vectorRenderer_;\n var renderedExtent = frameState.extent;\n if (this.layerImageRatio_ !== 1) {\n renderedExtent = renderedExtent.slice(0);\n scaleFromCenter(renderedExtent, this.layerImageRatio_);\n }\n var width = getWidth(renderedExtent) / viewResolution;\n var height = getHeight(renderedExtent) / viewResolution;\n if (!hints[ViewHint.ANIMATING] &&\n !hints[ViewHint.INTERACTING] &&\n !isEmpty(renderedExtent)) {\n vectorRenderer.useContainer(null, null, 1);\n var context = vectorRenderer.context;\n var imageFrameState_1 = /** @type {import(\"../../PluggableMap.js\").FrameState} */ (assign({}, frameState, {\n declutterItems: [],\n extent: renderedExtent,\n size: [width, height],\n viewState: /** @type {import(\"../../View.js\").State} */ (assign({}, frameState.viewState, {\n rotation: 0,\n })),\n }));\n var image_1 = new ImageCanvas(renderedExtent, viewResolution, pixelRatio, context.canvas, function (callback) {\n if (vectorRenderer.prepareFrame(imageFrameState_1) &&\n vectorRenderer.replayGroupChanged) {\n vectorRenderer.clipping = false;\n vectorRenderer.renderFrame(imageFrameState_1, null);\n renderDeclutterItems(imageFrameState_1, null);\n callback();\n }\n });\n image_1.addEventListener(EventType.CHANGE, function () {\n if (image_1.getState() === ImageState.LOADED) {\n this.image_ = image_1;\n var imageResolution = image_1.getResolution();\n var imagePixelRatio = image_1.getPixelRatio();\n var renderedResolution = (imageResolution * pixelRatio) / imagePixelRatio;\n this.renderedResolution = renderedResolution;\n this.coordinateToVectorPixelTransform_ = compose(this.coordinateToVectorPixelTransform_, width / 2, height / 2, 1 / renderedResolution, -1 / renderedResolution, 0, -viewState.center[0], -viewState.center[1]);\n }\n }.bind(this));\n image_1.load();\n }\n if (this.image_) {\n this.renderedPixelToCoordinateTransform_ = frameState.pixelToCoordinateTransform.slice();\n }\n return !!this.image_;\n };\n /**\n */\n CanvasVectorImageLayerRenderer.prototype.preRender = function () { };\n /**\n */\n CanvasVectorImageLayerRenderer.prototype.postRender = function () { };\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../../Feature.js\").FeatureLike, import(\"../../layer/Layer.js\").default): T} callback Feature callback.\n * @param {Array} declutteredFeatures Decluttered features.\n * @return {T|void} Callback result.\n * @template T\n */\n CanvasVectorImageLayerRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, callback, declutteredFeatures) {\n if (this.vectorRenderer_) {\n return this.vectorRenderer_.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, callback, declutteredFeatures);\n }\n else {\n return _super.prototype.forEachFeatureAtCoordinate.call(this, coordinate, frameState, hitTolerance, callback, declutteredFeatures);\n }\n };\n return CanvasVectorImageLayerRenderer;\n}(CanvasImageLayerRenderer));\nexport default CanvasVectorImageLayerRenderer;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/VectorImage\n */\nimport BaseVectorLayer from './BaseVector.js';\nimport CanvasVectorImageLayerRenderer from '../renderer/canvas/VectorImageLayer.js';\nimport { assign } from '../obj.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the\n * renderer when getting features from the vector source for the rendering or hit-detection.\n * Recommended value: the size of the largest symbol, line width or label.\n * @property {import(\"../source/Vector.js\").default} [source] Source.\n * @property {import(\"../PluggableMap.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link module:ol/Map#addLayer}.\n * @property {boolean} [declutter=false] Declutter images and text on this layer. The priority is defined\n * by the `zIndex` of the style and the render order of features. Higher z-index means higher priority.\n * Within the same z-index, a feature rendered before another has higher priority.\n * @property {import(\"../style/Style.js\").StyleLike} [style] Layer style. See\n * {@link module:ol/style} for default style which will be used if this is not defined.\n * @property {number} [imageRatio=1] Ratio by which the rendered extent should be larger than the\n * viewport extent. A larger ratio avoids cut images during panning, but will cause a decrease in performance.\n */\n/**\n * @classdesc\n * Vector data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @api\n */\nvar VectorImageLayer = /** @class */ (function (_super) {\n __extends(VectorImageLayer, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function VectorImageLayer(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var baseOptions = assign({}, options);\n delete baseOptions.imageRatio;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @type {number}\n * @private\n */\n _this.imageRatio_ =\n options.imageRatio !== undefined ? options.imageRatio : 1;\n return _this;\n }\n /**\n * @return {number} Ratio between rendered extent size and viewport extent size.\n */\n VectorImageLayer.prototype.getImageRatio = function () {\n return this.imageRatio_;\n };\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n */\n VectorImageLayer.prototype.createRenderer = function () {\n return new CanvasVectorImageLayerRenderer(this);\n };\n return VectorImageLayer;\n}(BaseVectorLayer));\nexport default VectorImageLayer;\n","import VectorTile from 'ol/source/VectorTile';\nimport VectorTileLayer from 'ol/layer/VectorTile';\nimport {LayerFactory} from '../../map-factory/layer.factory';\nimport {LayerGroupNames} from './layer-names';\nimport {ILegend} from '../../stores/map/map.legend.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {buffer as OlBuffer, extend, Extent} from 'ol/extent';\nimport {EventEmitter} from '@angular/core';\nimport {ApMapViews} from './ap-map.views';\nimport * as ax from 'axios';\nimport {MapFactoryAuthenticator} from '../../map-factory/authentication';\nimport {Geometry} from 'ol/geom';\nimport GeoJSON from 'ol/format/GeoJSON';\nimport OlFormatGeoJSON from 'ol/format/GeoJSON';\nimport {StringFactory} from 'ts-tooling';\nimport OlFeature from 'ol/Feature';\nimport VectorSource from 'ol/source/Vector';\nimport VectorImageLayer from 'ol/layer/VectorImage';\nimport {debounceTime} from 'rxjs/operators';\n\nconst FORCE_UPDATE_DEBOUNCE_MS = 500;\n\nexport type MapLayerTooltipFunction = (featureProperties: { [key: string]: any }, legend: ILegend) => string;\n\nexport interface IMapFactoryLayerDelegates {\n legendGetter?: () => ILegend | null;\n tooltipGenerator?: MapLayerTooltipFunction;\n featureFilter?: (f: OlFeature) => boolean;\n}\n\nexport class MapFactoryLayer {\n public name = '';\n public FixedZIndex = -1;\n public source: VectorTile;\n public layer: VectorTileLayer;\n public featureLayer = new VectorImageLayer({\n source: new VectorSource({\n features: [],\n })\n });\n public Group = LayerGroupNames.NONE;\n public legend: () => ILegend;\n public mapStore: MapStore = null;\n public extent: Extent = null;\n public onExtentLoadFinish = new EventEmitter();\n\n private tooltipGenerator?: MapLayerTooltipFunction;\n private url = '';\n private onForceUpdate = new EventEmitter();\n\n constructor(layerName: string, layerGroup: string, address: string, url: string, mapStore: MapStore,\n delegates: IMapFactoryLayerDelegates, fixedZIndex = -1) {\n if (fixedZIndex > 0) {\n this.FixedZIndex = fixedZIndex;\n }\n this.url = url;\n this.tooltipGenerator = delegates.tooltipGenerator;\n const tmp = LayerFactory.createMapFactoryLayer(layerName, address, url, delegates.featureFilter, mapStore);\n this.name = layerName;\n this.layer = tmp.layer;\n this.source = tmp.source;\n this.legend = delegates.legendGetter;\n this.mapStore = mapStore;\n if (layerGroup) {\n this.Group = layerGroup;\n }\n this.layer.setVisible(false);\n this.featureLayer.setVisible(false);\n // update the URL to be saved the cache is cleared\n this.update(url);\n // Debounce map update in order to avoid flickering in case there are many subsequent updates within short time\n this.onForceUpdate.pipe(\n debounceTime(FORCE_UPDATE_DEBOUNCE_MS)).subscribe(() => {\n this.forceUpdate(this.url);\n });\n }\n\n public get Visibility(): boolean {\n return this.layer.getVisible();\n }\n\n public set Visibility(value: boolean) {\n this.layer.setVisible(value);\n if (this.mapStore.Legends) {\n this.mapStore.Legends.refreshLegend(this.legend(), value);\n }\n this.featureLayer.setVisible(value);\n }\n\n public get Order(): number {\n return this.layer.getZIndex();\n }\n\n public set Order(value: number) {\n this.layer.setZIndex(value);\n this.featureLayer.setZIndex(value);\n }\n\n public get Legend(): () => ILegend {\n return this.legend;\n }\n\n public set Legend(legend: () => ILegend) {\n this.legend = legend;\n }\n\n public set Tooltip(tooltipGenerator: MapLayerTooltipFunction) {\n this.tooltipGenerator = tooltipGenerator;\n }\n\n public forceUpdate(url: string): void {\n if (!this.layer) {\n return;\n }\n this.source.setUrl(url);\n this.source.changed();\n this.source.clear();\n this.loadExtends(url).then();\n this.url = url;\n }\n\n public async loadFeatures(address: string, url: string, filter: (f: { type: string }) => boolean): Promise {\n // TODO: implement loading Feature Data from MapFactory\n const tmp = url.Split('?params=');\n const paths = tmp[0].Split('/');\n const reqUrl = `${address}/geometry/${paths[1]}/${paths[2]}`;\n ax.default({\n method: 'POST',\n url: reqUrl,\n responseType: 'json',\n headers: {\n Authorization: await MapFactoryAuthenticator.getHash(),\n },\n data: btoa(tmp[1]),\n }).then(d => {\n if (!Array.isArray(d.data)) {\n console.warn(`expect ${reqUrl} returns a Array becomes: `, d.data);\n return;\n }\n this.featureLayer?.getSource()?.clear();\n if (d.data.length < 1) {\n return;\n }\n const geometries = d.data[0];\n if (!Array.isArray(geometries)) {\n console.warn(`expect ${reqUrl} returns a Array of Geometries becomes: `, geometries);\n return;\n }\n if (geometries.length < 1) {\n return;\n }\n\n const selectedGeometries = geometries.FindAll(filter);\n const format = new OlFormatGeoJSON();\n for (const geom of selectedGeometries) {\n const feature = format.readFeature(geom);\n (this.featureLayer?.getSource() as VectorSource)?.addFeature(feature);\n }\n });\n }\n\n /**\n * Force update of map after debounce of 500ms.\n * Debounce map update in order to avoid flickering in case there are many consecutive updates within short time\n * (.e.g. due to job updates)\n */\n public forceUpdateDebounced(): void {\n this.onForceUpdate?.emit();\n }\n\n public clear(): void {\n if (this.featureLayer) {\n this.featureLayer.getSource()?.clear();\n }\n this.forceUpdate('');\n }\n\n public update(url: string): void {\n if (Array.isArray(this.source.getUrls()) && this.source.getUrls().Contains(url)) {\n return;\n }\n this.forceUpdate(url);\n }\n\n public reload(): void {\n this.forceUpdate(this.url);\n }\n\n public zoomToExtent(): void {\n if (!this.extent) {\n console.warn(`skip zoomToExtent there is no Extent in MapFactoryLayer ${this.name}`);\n return;\n }\n setTimeout(() => {\n ApMapViews.olView.fit(OlBuffer(this.extent, 100), {duration: 500});\n }, 300);\n }\n\n public generateTooltip(featureProperties: { [key: string]: any }): string {\n if (!this.tooltipGenerator) {\n return undefined;\n }\n return this.tooltipGenerator(featureProperties, this.legend());\n }\n\n private async loadExtends(url: string): Promise {\n if (StringFactory.IsNullOrEmpty(url)) {\n return;\n }\n const tmp = url.Split('?params=');\n const extentUrl = tmp[0].Replace('/{z}/{x}/{y}', '');\n const res = await ax.default({\n method: 'POST',\n url: extentUrl.ReplaceAll('/map/', '/extent/'),\n responseType: 'arraybuffer',\n headers: {\n Authorization: await MapFactoryAuthenticator.getHash(),\n },\n data: btoa(tmp[1]),\n });\n if (res.status !== 200) {\n return;\n }\n const boxes: Geometry[] = [];\n const enc = new TextDecoder('utf-8');\n const str = enc.decode(res.data);\n const geoJsonArray = StringFactory.IsNullOrEmpty(str) ? [] : JSON.parse(str);\n const format = new GeoJSON();\n for (const geom of geoJsonArray) {\n boxes.Add(format.readGeometry(geom));\n }\n if (boxes.length < 1) {\n return;\n }\n const ext = boxes[0].getExtent();\n if (boxes.length === 1) {\n this.extent = ext;\n this.onExtentLoadFinish.emit();\n return;\n }\n for (const box of boxes) {\n extend(ext, box.getExtent());\n }\n this.extent = ext;\n this.onExtentLoadFinish.emit();\n return;\n }\n}\n","/**\n * some util Functions for Distribution Class Colors\n */\nexport class ApDistributionClassColors {\n /**\n * returns the Color Value of a Class Value in rgba Format\n */\n static getColorsFromValue(value: number): string {\n switch (value) {\n case 1:\n // A-\n return 'rgba(240, 10, 0, 1)';\n case 2:\n // A+\n return 'rgba(215, 80, 0, 1)';\n case 3:\n // B-\n return 'rgba(214, 112, 0, 1)';\n case 4:\n // B+\n return 'rgba(217, 160, 0, 1)';\n case 5:\n // C-\n return 'rgba(212, 221, 0, 1)';\n case 6:\n // C+\n return 'rgba(166, 212, 0, 1)';\n case 7:\n // D-\n return 'rgba(100, 171, 0, 1)';\n case 8:\n // D+\n return 'rgba(41, 134, 0, 1)';\n case 9:\n // E\n return 'rgba(0, 130, 255, 1)';\n default:\n return 'rgba(255, 255, 255, 0)';\n }\n }\n}\n","import {ILegendValue} from '../../stores/map/map.legend.store';\n\nexport class NFertilizationLegend {\n\n public static N_COLORS = [\n [ // sn\n 'rgb(207, 127, 23)',\n 'rgb(239, 161, 59)',\n 'rgb(248, 231, 28)',\n 'rgb(253, 255, 206)',\n 'rgb(189, 233, 158)',\n 'rgb(90, 189, 97)',\n 'rgb(7, 147, 77)',\n 'rgb(5, 90, 91)',\n 'rgb(22, 65, 102)',\n 'rgb(8, 5, 91)',\n ],\n [ // n fertilization\n 'rgb(215, 25, 28 )',\n 'rgb(234, 100, 63 )',\n 'rgb(253, 174, 97 )',\n 'rgb(254, 215, 144 )',\n 'rgb(255, 255, 191 )',\n 'rgb(213, 236, 212 )',\n 'rgb(171, 217, 233 )',\n 'rgb(107, 170, 208 )',\n 'rgb(44, 123, 182 )',\n 'rgb(6, 21, 63)'\n ],\n [ // gbi\n 'rgba(207, 127, 23, 1.00 )',\n 'rgba(239, 161, 59, 1.00 )',\n 'rgba(248, 231, 28, 1.00 )',\n 'rgba(253, 255, 206, 1.00 )',\n 'rgba(189, 233, 158, 1.00 )',\n 'rgba(90, 189, 97, 1.00 )',\n 'rgba(7, 147, 77, 1.00 )',\n 'rgba(5, 90, 91, 1.00 )',\n 'rgba(22, 65, 102, 1.00 )',\n 'rgba(8, 5, 91, 1.00 )',\n ]\n ];\n\n public static getDynamicColorLegend(kind: 'uptake' | 'application' | 'gbi', min: number, max: number, stepSize: number): {\n color: string,\n title: string\n }[] {\n switch (kind) {\n case 'uptake':\n return this._buildDynamicColorLegend(NFertilizationLegend.N_COLORS[0], min, max, stepSize);\n case 'application':\n return this._buildDynamicColorLegend(NFertilizationLegend.N_COLORS[1], min, max, stepSize);\n case 'gbi':\n return this._buildDynamicColorLegend(NFertilizationLegend.N_COLORS[2], min, max, stepSize);\n }\n }\n\n private static _buildDynamicColorLegend(colors: string[], min: number, max: number, stepSize: number): ILegendValue[] {\n stepSize = Math.max(stepSize, (max - min) / colors.length);\n const values = colors.map((_, i) => Math.round(min + stepSize * i + Number.EPSILON));\n return colors.map((color, i) => ({color, title: `${values[i]}`, value: values[i]}));\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {GetPermissionPipe} from './pipes/get-permission.pipe';\n\n\n@NgModule({\n declarations: [\n GetPermissionPipe,\n ],\n imports: [\n CommonModule\n ],\n exports: [\n GetPermissionPipe,\n ],\n providers: [\n GetPermissionPipe,\n ]\n})\nexport class ApPermissionModule {\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {LoginStore} from '../../stores/login/login.store';\nimport IAccessPermissions = Data.AccessPermission.IAccessPermissions;\nimport IFarmUsers = Data.Authentication.IFarmUsers;\nimport IGroupMapping = Data.AccessPermission.IGroupMapping;\nimport {ApRoleTypeService} from '../../services/common/ap-role-type.service';\n\n@Pipe({\n name: 'getPermission'\n})\nexport class GetPermissionPipe implements PipeTransform {\n constructor(private loginStore: LoginStore) {\n }\n\n transform(value: any): Observable {\n return this.loginStore.UserPermissions$.pipe(\n map(permissionData => {\n if (!permissionData ||\n !Array.isArray(permissionData.Permissions) || !Array.isArray(permissionData.FarmUsers) ||\n !permissionData.User || !permissionData.Farm) {\n return false;\n }\n let retval = false;\n const permissions = permissionData.Permissions;\n const result = permissions\n .Find((_: IAccessPermissions) => _.Feature_Key === value);\n const user = permissionData.User;\n\n if (ApRoleTypeService.hasAgriconRole(user)) {\n return true;\n }\n\n const farmUsers = permissionData.FarmUsers;\n const farm = permissionData.Farm;\n const foundFarmUser: IFarmUsers = farmUsers\n .Find((_: IFarmUsers) => _.UserId === user.Id && _.FarmId === farm.Id);\n if (!result || !foundFarmUser || !Array.isArray(foundFarmUser.UsergroupUser)) {\n return retval;\n }\n for (const ug of foundFarmUser.UsergroupUser) {\n const check = result.Groups\n .Find((_: IGroupMapping) => _.usergroup_id === ug.Usergroup.Id);\n if (check) {\n if (check.access_permission) {\n retval = true;\n }\n }\n }\n return retval;\n })\n );\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApResponsiveTextComponent} from './ap-responsive-text/ap-responsive-text.component';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {ApTooltipModule} from '../ap-tooltip/ap-tooltip.module';\nimport {IconsModule} from '@progress/kendo-angular-icons';\n\n@NgModule({\n declarations: [\n ApResponsiveTextComponent,\n ],\n imports: [\n CommonModule,\n ApTranslationModule,\n ApTooltipModule,\n IconsModule\n ],\n exports: [\n ApResponsiveTextComponent,\n ]\n})\nexport class ApResponsiveTextModule {\n}\n","
\n \n {{display}}\n \n
\n
\n {{extraLine}}\n
\n","import {Component, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {IntlService} from '@progress/kendo-angular-intl';\nimport {TranslationStore} from '../../stores/translation/translation.store';\n\n@Component({\n selector: 'ap-responsive-text',\n templateUrl: 'ap-responsive-text.component.html',\n styles: [':host {width:100%}']\n})\nexport class ApResponsiveTextComponent implements OnChanges {\n @Input() key: string;\n @Input() text: string;\n @Input() tooltipOverride: string;\n @Input() format = '';\n @Input() extraLines: string[] = [];\n @Input() infoText = '';\n /**\n * Creates 2 lines out of the given text to still have ellipsis (...) functionality\n */\n @Input() breakLine = false;\n /**\n * If true, the given text is taken as pre-formatted text including line breaks\n */\n @Input() multiline = false;\n displayText: string[] = [];\n\n constructor(private intl: IntlService,\n private translationStore: TranslationStore) {\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.text || changes.key) {\n if (!!this.key) {\n this.displayText = [this.translationStore.FindTranslationForSelectedLanguage(this.key)];\n } else if (!!this.format) {\n this.displayText = [this.intl.toString(this.text, this.format)];\n } else {\n this.displayText = [this.text];\n }\n if (this.extraLines && this.extraLines.length > 0) {\n for (let i = 0; i < this.extraLines.length; i++) {\n this.extraLines[i] = this.translationStore.FindTranslationForSelectedLanguage(this.extraLines[i]);\n }\n }\n\n if (this.breakLine) {\n const half = Math.ceil(this.displayText[0].length / 2);\n const token = this.displayText[0].split(' ');\n let idx = 0;\n let length = 0;\n while (Math.abs(half - length) > Math.abs(half - length + token[idx].length)) {\n length += token[idx].length;\n idx++;\n }\n this.displayText = [\n token.filter((v, i) => i <= idx).join(' '),\n token.filter((v, i) => i > idx).join(' '),\n ];\n }\n }\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApSectionHeaderComponent} from './components/ap-section-header/ap-section-header.component';\nimport {ApSectionHeaderGridComponent} from './components/ap-section-header-grid/ap-section-header-grid.component';\nimport {ApIconModule} from '../icons/ap-icon.module';\nimport {ButtonGroupModule, ButtonModule} from '@progress/kendo-angular-buttons';\nimport {ApUtilsModule} from '../ap-utils';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {ApTooltipModule} from '../ap-tooltip/ap-tooltip.module';\nimport {TextBoxModule} from '@progress/kendo-angular-inputs';\nimport {ApPermissionModule} from '../ap-permission/ap-permission.module';\nimport {ApResponsiveTextModule} from '../ap-responsive-text/ap-responsive-text.module';\n\n@NgModule({\n declarations: [\n ApSectionHeaderComponent,\n ApSectionHeaderGridComponent,\n ],\n imports: [\n CommonModule,\n ApIconModule,\n ButtonModule,\n ApUtilsModule,\n ApTranslationModule,\n ApTooltipModule,\n TextBoxModule,\n ApPermissionModule,\n ApResponsiveTextModule,\n ButtonGroupModule\n ],\n exports: [\n ApSectionHeaderComponent,\n ApSectionHeaderGridComponent,\n ]\n})\nexport class ApSectionHeaderModule {\n}\n","
\n
\n \n
\n
\n \n
\n
\n

\n
\n
\n \n
\n \n
\n \n \n \n \n \n
\n
\n \n
\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {IApSvgPath} from '../../../ap-interface/interfaces';\n\n/**\n * a Section Header\n * every Section Header supports a Icon and a Caption\n * the Filter and Create Operation can be disabled by pass canCreate or canSearch false\n */\n@Component({\n selector: 'ap-section-header-grid',\n templateUrl: 'ap-section-header-grid.component.html'\n})\nexport class ApSectionHeaderGridComponent {\n /**\n * value that the User written in the Textbox\n */\n public searchValue = '';\n\n /**\n * Id of the Icon to show\n */\n @Input()\n public iconId: string;\n /**\n * the Caption to show\n * supports translation keys\n */\n @Input()\n public caption: string;\n /**\n * the Placeholder Text for the Filter Input\n * supports translation keys\n */\n @Input()\n public filterPlaceholder: string;\n /**\n * the Tooltip that is show when the Mouse is over the Input element\n * supports translation keys\n * TODO: set perpetual Property when is available\n */\n @Input()\n public filterTooltip: string;\n /**\n * the Text for the Create Button\n * supports translation keys\n */\n @Input()\n public createText = 'Global__New';\n /**\n * adds or remove the Create Button enabled by default\n */\n @Input()\n public canCreate = true;\n /**\n * adds or remove the Filter Controls enabled by default\n */\n @Input()\n public canSearch = true;\n\n /**\n * adds or remove the create button show by default\n */\n @Input()\n public showCanCreateButton = true;\n\n /**\n * Id of the Icon to show\n */\n @Input()\n public svg: IApSvgPath = undefined;\n\n /**\n * Event that is fired when the User click on the Search Button in Filter\n */\n @Output()\n public search = new EventEmitter();\n /**\n * Event that is fired when the User click on the Create Button\n */\n @Output()\n public createDataset = new EventEmitter();\n\n /**\n * Event that is fired when the User click on the Clear all filters Button\n */\n @Output()\n public clearAllFilters = new EventEmitter();\n\n /**\n * Create Button Click\n */\n onCreateClick(): void {\n this.createDataset.emit();\n }\n\n /**\n * Search Button Click\n */\n onSearchClick(): void {\n this.search.emit(this.searchValue);\n }\n\n /**\n * keyup on the Filter Input\n */\n onTextChange(e): void {\n this.searchValue = e.target.value;\n this.onSearchClick();\n }\n\n onResetClick(): void {\n this.searchValue = '';\n this.search.emit(this.searchValue);\n }\n\n /**\n * Resets filter of section header instance.\n */\n public reset(): void {\n this.onResetClick();\n }\n\n onClearAllFiltersClick(): void {\n this.clearAllFilters.emit();\n }\n}\n","
\n\n
\n\n \n\n
\n\n
\n\n \n\n \n\n \n\n
\n\n
\n","import {Component, OnInit} from '@angular/core';\nimport {MapViewMode} from '../../../ap-interface';\nimport {ApPermissions} from 'invoker-transport';\nimport {Observable} from 'rxjs';\nimport {MapViewStore} from '../../../stores/layout/mapview.store';\n\n\n@Component({\n selector: 'ap-section-header',\n templateUrl: 'ap-section-header.component.html'\n})\nexport class ApSectionHeaderComponent implements OnInit {\n public mapViewModes = MapViewMode;\n public mapViewState$: Observable;\n public ApPermissions = ApPermissions;\n\n constructor(private mapViewStore: MapViewStore) {\n }\n\n ngOnInit(): void {\n this.mapViewState$ = this.mapViewStore.Listen(s => s.mode);\n }\n\n openMap(): void {\n this.mapViewStore.goIntoMapMenu();\n this.mapViewStore.showMapView();\n }\n\n\n openStats(): void {\n this.mapViewStore.goIntoStatisticMenu();\n this.mapViewStore.showMapView();\n }\n\n\n openHelp(): void {\n this.mapViewStore.goIntoHelpMenu();\n this.mapViewStore.showMapView();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ApStatusSwitchComponent } from './components/ap-status-switch.component';\nimport {ApIconModule} from '../icons/ap-icon.module';\nimport {ApTooltipModule} from '../ap-tooltip/ap-tooltip.module';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\n\n@NgModule({\n declarations: [ApStatusSwitchComponent],\n exports: [\n ApStatusSwitchComponent\n ],\n imports: [\n CommonModule,\n ApIconModule,\n ApTooltipModule,\n ApTranslationModule\n ]\n})\nexport class ApStatusSwitchModule { }\n","import {AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, Renderer2} from '@angular/core';\nimport {ApTooltipService} from './ap-tooltip.service';\n\n/**\n * Renders a Tooltip on a HTML Element that moved with the Cursor and has a Delay\n */\n@Directive({\n selector: '[aptooltip]'\n})\nexport class ApTooltipDirective implements AfterViewInit, OnDestroy {\n\n /**\n * indicates that the tooltip is currently displayed\n */\n private isShowingTooltip = false;\n /**\n * tooltip's text\n */\n private tooltipText = '';\n\n /**\n * based on css-setting (pointer-events property)\n * an element is marked as disabled\n * in order to make tooltip work:\n * - need to re-enable the element (to get pointer events)\n * - but suppressing all events to make it appear disabled\n */\n private disabled = false;\n\n /**\n * The Text that was display in the Tooltip Content\n */\n @Input()\n set aptooltip(text: string) {\n this.tooltipText = text;\n }\n\n /**\n * if true, tooltip is always displayed on hovering with mouse cursor\n * if false, tooltip is displayed on active text ellipsis\n */\n @Input()\n public perpetual = false;\n\n /**\n * constructor for some injections.\n */\n constructor(private renderer: Renderer2, private element: ElementRef, private apTooltipService: ApTooltipService) {\n }\n\n @HostListener('click', ['$event'])\n public onClick(event: any): void {\n // to suppress click event and make element appear disabled.\n if (this.disabled) {\n event.stopPropagation();\n }\n }\n\n /**\n * Triggers showing the tooltip if necessary.\n */\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if ((this.perpetual || this.element.nativeElement.offsetWidth < this.element.nativeElement.scrollWidth) &&\n this.tooltipText && this.tooltipText !== '') {\n this.isShowingTooltip = true;\n this.apTooltipService.Show(this.element, this.tooltipText);\n }\n }\n\n /**\n * Triggers hiding the tooltip.\n */\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.hideTooltip();\n }\n\n @HostListener('mousedown')\n onMouseDown(): void {\n this.hideTooltip();\n }\n\n /**\n * some magic to have tooltips on disabled elements\n */\n ngAfterViewInit(): void {\n const hasNoPointerEvents = window.getComputedStyle(this.element.nativeElement, null)\n .getPropertyValue('pointer-events') === 'none';\n const isDisabledByAttribute = this.element.nativeElement.getAttribute('disabled') != null;\n\n // This only works for kendo components which are disabled by css and NOT by [disabled] attribute in element.\n if (hasNoPointerEvents && !isDisabledByAttribute) {\n this.renderer.setStyle(this.element.nativeElement,\n 'pointer-events',\n 'auto');\n }\n }\n\n ngOnDestroy(): void {\n this.hideTooltip();\n }\n\n private hideTooltip(): void {\n if (this.isShowingTooltip) {\n this.apTooltipService.Hide(this.element);\n }\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApTooltipDirective} from './ap-tooltip.directive';\nimport {ApTooltipComponent} from './ap-tooltip.component';\n\n@NgModule({\n declarations: [\n ApTooltipDirective,\n ApTooltipComponent\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ApTooltipDirective,\n ApTooltipComponent\n ]\n})\nexport class ApTooltipModule {\n}\n","import {ElementRef, Injectable, NgZone, Renderer2, TemplateRef} from '@angular/core';\nimport {PopupService} from '@progress/kendo-angular-popup';\nimport {TooltipDirective} from '@progress/kendo-angular-tooltip';\n\n@Injectable({providedIn: 'root'})\nexport class ApTooltipService {\n\n /**\n * the attribute's name where the tooltip context can be found.\n */\n public TooltipAttribute = 'aptooltiptext';\n\n /**\n * tooltip delay in ms\n */\n private tooltipDelay = 200;\n\n /**\n * kendo tooltip directive instance.\n */\n private kendoTooltipDirective: TooltipDirective = null;\n\n /**\n * The renderer for setting and removing the attributes.\n */\n private renderer: Renderer2;\n\n private TooltipMap: {[key: string]: string} = {};\n\n /**\n * Initializes the tooltip (Should be called once, only)\n */\n public CreateKendoDirective(tooltipWrapper: ElementRef,\n ngZone: NgZone,\n renderer: Renderer2,\n popupService: PopupService): TooltipDirective {\n this.renderer = renderer;\n this.kendoTooltipDirective = new TooltipDirective(tooltipWrapper, ngZone, renderer, popupService, null, null);\n this.kendoTooltipDirective.showAfter = this.tooltipDelay;\n this.kendoTooltipDirective.filter = '[' + this.TooltipAttribute + ']';\n return this.kendoTooltipDirective;\n }\n\n /**\n * 2nd step of initialization. For proper tooltip handling\n * some things need to be initialized after view has been initialized.\n */\n public Init(template: TemplateRef): void {\n this.kendoTooltipDirective.tooltipTemplate = template;\n this.kendoTooltipDirective.ngOnInit();\n }\n\n /**\n * Reads the tooltip text from the element's tooltip-attribute\n */\n public ReadTooltipText(element: ElementRef): string {\n if (element == null || element.nativeElement == null) {\n return '';\n }\n\n return this.TooltipMap[element.nativeElement.getAttribute(this.TooltipAttribute)];\n }\n\n /**\n * Shows tooltip (by adding tooltip attribute)\n */\n public Show(element: ElementRef, value: string): void {\n const date = Date.now().toString();\n this.TooltipMap[date] = value;\n if (element == null || element.nativeElement == null) {\n return;\n }\n this.renderer.setAttribute(element.nativeElement, this.TooltipAttribute, date);\n }\n\n /**\n * Hides the tooltip (by removing tooltip attribute)\n */\n public Hide(element: ElementRef): void {\n if (element == null || element.nativeElement == null) {\n return;\n }\n this.kendoTooltipDirective.hide();\n delete this.TooltipMap[element.nativeElement.getAttribute(this.TooltipAttribute)];\n this.renderer.removeAttribute(element.nativeElement, this.TooltipAttribute);\n }\n}\n","\n \n \n {{dataItem}}\n \n \n \n \n {{dataItem}}\n \n \n\n","import {AfterViewInit, Component, Input} from '@angular/core';\nimport {CompositeFilterDescriptor, FilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\n\n@Component({\n selector: 'ap-class-color-filter',\n templateUrl: 'ap-class-color-filter.component.html',\n})\nexport class ApClassColorFilterComponent implements AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public filterService: FilterService;\n @Input() public items;\n @Input() public key;\n\n value: any;\n data = [\n 'A-',\n 'A+',\n 'B-',\n 'B+',\n 'C-',\n 'C+',\n 'D-',\n 'D+',\n 'E',\n ];\n\n public ngAfterViewInit(): void {\n this.value = this.currentFilter.filters.Convert((f: FilterDescriptor) => f.value);\n }\n\n onChange(values: any[]): void {\n this.filterService.filter({\n filters: values.map(filterText => ({\n field: this.key,\n operator: v => {\n return filterText.ToUpperCase() === v.ToUpperCase();\n },\n value: filterText\n })),\n logic: 'or'\n });\n }\n}\n","import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {CompositeFilterDescriptor} from '@progress/kendo-data-query';\nimport {FilterService} from '@progress/kendo-angular-grid';\nimport {FormControl, FormGroup} from '@angular/forms';\nimport {\n FilterDescriptor\n} from '@progress/kendo-data-query/dist/npm/filtering/filter-descriptor.interface';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Component({\n selector: 'ap-number-filter',\n templateUrl: './ap-number-filter.component.html',\n})\nexport class ApNumberFilterComponent implements OnInit, AfterViewInit {\n @Input() public currentFilter: CompositeFilterDescriptor;\n @Input() public filterService: FilterService;\n @Input() public items: any[] = [];\n @Input() public key: string;\n @Input() public format: string;\n @Output() public filterChanged = new EventEmitter(true);\n\n range = {min: undefined, max: undefined};\n\n minEnabledCtrl = new FormControl();\n minValueCtrl = new FormControl();\n maxEnabledCtrl = new FormControl();\n maxValueCtrl = new FormControl();\n valueCtrl = new FormControl();\n\n dynamicMin: Observable;\n dynamicMax: Observable;\n\n form: FormGroup = new FormGroup({\n minEnabled: this.minEnabledCtrl,\n minValue: this.minValueCtrl,\n maxEnabled: this.maxEnabledCtrl,\n maxValue: this.maxValueCtrl,\n value: this.valueCtrl\n });\n\n ngOnInit(): void {\n if (!this.items || this.items?.length === 0) {\n return;\n }\n\n this.range = this.items?.map((item) => item[this.key]).filter((i) => i !== undefined && !isNaN(parseFloat(i))).reduce((range, i: number) => {\n const parsedValue = parseFloat(i?.toString());\n return {\n min: range.min < parsedValue ? range.min : parsedValue,\n max: range.max > parsedValue ? range.max : parsedValue\n };\n }, this.range);\n\n this.dynamicMin = combineLatest([\n this.minEnabledCtrl.valueChanges,\n this.minValueCtrl.valueChanges,\n this.maxEnabledCtrl.valueChanges\n ]).pipe(\n map(([e, v]) => e && !!v ? Math.min(v, this.range.max) : this.range.min)\n );\n\n this.dynamicMax = combineLatest([\n this.maxEnabledCtrl.valueChanges,\n this.maxValueCtrl.valueChanges,\n this.minEnabledCtrl.valueChanges\n ]).pipe(\n map(([e, v]) => e && !!v ? Math.max(v, this.range.min) : this.range.max)\n );\n }\n\n ngAfterViewInit(): void {\n const currentFilters: FilterDescriptor[] = this.currentFilter?.filters as FilterDescriptor[];\n if (currentFilters && currentFilters.length === 2) {\n this.minEnabledCtrl.setValue(true);\n this.maxEnabledCtrl.setValue(true);\n this.minValueCtrl.setValue(currentFilters.find((f: FilterDescriptor) => f.operator === 'gte').value);\n this.maxValueCtrl.setValue(currentFilters.find((f: FilterDescriptor) => f.operator === 'lte').value);\n } else if (currentFilters && this.currentFilter.filters.length === 1) {\n switch (currentFilters[0].operator) {\n case 'eq':\n this.valueCtrl.setValue(currentFilters[0].value);\n this.minEnabledCtrl.setValue(false);\n this.maxEnabledCtrl.setValue(false);\n break;\n case 'gte':\n this.minValueCtrl.setValue(currentFilters[0].value);\n this.minEnabledCtrl.setValue(true);\n this.maxEnabledCtrl.setValue(false);\n break;\n case 'lte':\n this.maxValueCtrl.setValue(currentFilters[0].value);\n this.minEnabledCtrl.setValue(false);\n this.maxEnabledCtrl.setValue(true);\n break;\n }\n } else if (currentFilters && this.currentFilter.filters.length === 3) {\n // user entered single value but internally we used min/max to find rounded values\n // get user's original value from the dummy filter\n this.valueCtrl.setValue(currentFilters.find(_ => _.operator === 'isnotnull')?.value);\n this.minEnabledCtrl.setValue(false);\n this.maxEnabledCtrl.setValue(false);\n } else {\n this.minEnabledCtrl.setValue(false);\n this.maxEnabledCtrl.setValue(false);\n }\n\n if (this.minEnabledCtrl.value || this.maxEnabledCtrl.value) {\n this.valueCtrl.disable();\n }\n\n this.minEnabledCtrl.valueChanges.subscribe((v) => {\n if (v) {\n this.minValueCtrl.enable();\n this.valueCtrl.disable();\n } else {\n this.minValueCtrl.disable();\n if (!this.maxEnabledCtrl.value) {\n this.valueCtrl.enable();\n }\n }\n });\n\n this.minValueCtrl.valueChanges.subscribe(() => {\n this.setFilter();\n });\n if (!this.minEnabledCtrl.value) {\n this.minValueCtrl.disable();\n }\n\n this.maxEnabledCtrl.valueChanges.subscribe((v) => {\n if (v) {\n this.maxValueCtrl.enable();\n this.valueCtrl.disable();\n } else {\n this.maxValueCtrl.disable();\n if (!this.minEnabledCtrl.value) {\n this.valueCtrl.enable();\n }\n }\n });\n\n this.maxValueCtrl.valueChanges.subscribe(() => {\n this.setFilter();\n });\n if (!this.maxEnabledCtrl.value) {\n this.maxValueCtrl.disable();\n }\n\n this.valueCtrl.valueChanges.subscribe(() => {\n this.setFilter();\n });\n }\n\n setFilter(): void {\n const filters: FilterDescriptor[] = [];\n if (!this.minEnabledCtrl.value && !this.maxEnabledCtrl.value && !isNaN(parseFloat(this.valueCtrl.value))) {\n // Die Nutzereingabe definiert die Genauigkeit. Um auch die gerundeten Werte mit dem Filter\n // zu finden, muss hier rückwärts gerundet werden. So entsteht ein Zahlenbereich über den gefiltert wird.\n // Beispiele:\n // (1) Nutzereingabe: 15; Min: 14,5; Max 15,49999\n // (2) Nutzereingabe: 15,1; Min 15,05; Max: 15,149999\n\n const valueAsString = this.valueCtrl.value.toString().replace(',', '.');\n let decimalFactor = 1;\n if (valueAsString.includes('.')) {\n decimalFactor = Math.pow(10, valueAsString.substring(valueAsString.indexOf('.') + 1).length);\n }\n\n const valueAsUniformInteger = this.valueCtrl.value * decimalFactor;\n const minReverseRoundValue = (valueAsUniformInteger - 0.5) / decimalFactor;\n const maxReverseRoundValue = (valueAsUniformInteger + 0.49999999999) / decimalFactor;\n filters.push({\n field: this.key,\n operator: 'gte',\n value: minReverseRoundValue\n });\n filters.push({\n field: this.key,\n operator: 'lte',\n value: maxReverseRoundValue\n });\n // dummy filter to keep user original value when user wanted 'equals' but we are using min/max to find rounded numbers.\n // for user it should appear as a single number\n filters.push(({\n field: this.key,\n operator: 'isnotnull',\n value: this.valueCtrl.value\n }));\n }\n\n if (this.minEnabledCtrl.value) {\n filters.push({\n field: this.key,\n operator: 'gte',\n value: this.minValueCtrl.value\n });\n }\n\n if (this.maxEnabledCtrl.value) {\n filters.push({\n field: this.key,\n operator: 'lte',\n value: this.maxValueCtrl.value\n });\n }\n\n if (filters.length === 2 && filters[0].value > filters[1].value) {\n filters.Clear();\n }\n\n this.filterService?.filter({\n filters,\n logic: 'and'\n });\n\n if (this.filterChanged) {\n this.filterChanged.emit(filters);\n }\n }\n}\n","
\n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'ap-svg',\n templateUrl: 'ap-svg.component.html'\n})\nexport class ApFieldSvgComponent {\n @Input()\n public shape: string;\n\n @Input()\n public fillColor: string;\n\n @Input()\n public strokeColor: string;\n\n @Input()\n public strokeWidth: number;\n\n @Input()\n public width: number;\n\n @Input()\n public height: number;\n\n @Input()\n public viewBox: string;\n}\n","\n \n \n\n","export enum ApCalendarView {\n DAY = 'month',\n MONTH = 'year',\n YEAR = 'decade'\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'getBoolean'\n})\nexport class GetBooleanPipe implements PipeTransform {\n\n transform(value: any, args?: any): boolean {\n return value === true;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nexport enum AreaUnit {\n SQUARE_METER,\n HEKTAR,\n}\n\n@Pipe({\n name: 'areaUnitConverter'\n})\nexport class AreaUnitConverterPipe implements PipeTransform {\n\n transform(value: any, args?: AreaUnit[]): any {\n switch (args[0]) {\n case AreaUnit.SQUARE_METER:\n switch (args[1]) {\n case AreaUnit.HEKTAR:\n return value / 10000;\n case AreaUnit.SQUARE_METER:\n return value;\n }\n break;\n case AreaUnit.HEKTAR:\n switch (args[1]) {\n case AreaUnit.HEKTAR:\n return value;\n case AreaUnit.SQUARE_METER:\n return value * 10000;\n }\n break;\n }\n return 0;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {GetSoilSampleClassColorService, IImageStyle} from '../service/get-soil-sample-class-color.service';\n\n@Pipe({\n name: 'getSoilSampleFieldClassColor'\n})\nexport class GetSoilSampleFieldClassColorPipe implements PipeTransform {\n\n constructor(private getSoilSampleClassColorService: GetSoilSampleClassColorService) {}\n\n transform(value: string | number, args?: [boolean]): IImageStyle {\n return this.getSoilSampleClassColorService.getImageStyle(value, args[0]);\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'getSoilSampleClassName'\n})\nexport class GetSoilSampleClassNamePipe implements PipeTransform {\n transform(value: number): string {\n switch (value) {\n case 1:\n return 'A-';\n case 2:\n return 'A+';\n case 3:\n return 'B-';\n case 4:\n return 'B+';\n case 5:\n return 'C-';\n case 6:\n return 'C+';\n case 7:\n return 'D-';\n case 8:\n return 'D+';\n }\n if (value >= 9) {\n return 'E';\n }\n return '-';\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'apPlantProtectionTypemapping'\n})\nexport class ApPlantProtectionTypemappingPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n switch (value) {\n case 'A':\n return 'AgriConnect_Arkadicid';\n case 'B':\n return 'AgriConnect_Bactericid';\n case 'F':\n return 'AgriConnect_Fungicide';\n case 'H':\n return 'AgriConnect_Herbicide';\n case 'I':\n return 'AgriConnect_Insecticide';\n case 'M':\n return 'AgriConnect_Moluskicid';\n case 'P':\n return 'AgriConnect_Bite_Protection_Products';\n case 'R':\n return 'AgriConnect_Rodenticid';\n case 'W':\n return 'AgriConnect_GrowRegulator';\n default:\n return value;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'getSoilSampleFieldColor'\n})\nexport class GetSoilSampleFieldColorPipe implements PipeTransform {\n\n transform(value: string | number, args?: any): any {\n const color = '#000000';\n\n const classVal = value;\n if (classVal === 'A-' || classVal === 1) {\n return '#f00a00';\n } else if (classVal === 'A+' || classVal === 2) {\n return '#d75000';\n } else if (classVal === 'B-' || classVal === 3) {\n return '#d67000';\n } else if (classVal === 'B+' || classVal === 4) {\n return '#d9a000';\n } else if (classVal === 'C-' || classVal === 5) {\n return '#d4dd00';\n } else if (classVal === 'C+' || classVal === 6) {\n return '#a6d400';\n } else if (classVal === 'D-' || classVal === 7) {\n return '#64ab00';\n } else if (classVal === 'D+' || classVal === 8) {\n return '#298600';\n } else if (classVal === 'E' || classVal >= 9) {\n return '#0082ff';\n }\n return color;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {IApPngPath} from '../../ap-interface/interfaces/ap-png-path.interface';\n\n\n@Pipe({\n name: 'convertBase64ToPng'\n})\nexport class ConvertBase64ToPngPipe implements PipeTransform {\n transform(base64String: string, ...args: any[]): IApPngPath {\n const base64Image = base64String.split(';base64,').pop();\n return null;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {FactorService} from '../service/ap-factor.service';\nimport IUnit = Data.Common.IUnit;\n\n@Pipe({\n name: 'factorPipe'\n})\nexport class FactorPipe implements PipeTransform {\n\n constructor(private factorService: FactorService) {\n }\n\n transform(value: number, source: IUnit, target: IUnit): number {\n return this.factorService.calculate(value, source, target);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {GetStatisticKeysPipe} from './pipes/get-statistic-keys.pipe';\nimport {GetRoundNumericPipe} from './pipes/get-round-numeric.pipe';\nimport {GetBooleanPipe} from './pipes/get-boolean.pipe';\nimport {GetElementOxidCalculatePipe} from './pipes/get-element-oxid-calculate.pipe';\nimport {AreaUnitConverterPipe} from './pipes/area-unit-converter.pipe';\nimport {GetSoilSampleFieldClassColorPipe} from './pipes/get-soil-sample-field-class-color.pipe';\nimport {GetSoilSampleClassNamePipe} from './pipes/get-soil-sample-class-names.pipe';\nimport {ApMultiSelectFilterComponent} from './components/ap-multi-select-filter.component';\nimport {DropDownListModule, MultiSelectModule} from '@progress/kendo-angular-dropdowns';\nimport {ApStatusFilterComponent} from './components/ap-status-filter.component';\nimport {ButtonGroupModule, ButtonModule} from '@progress/kendo-angular-buttons';\nimport {CommonModule} from '@angular/common';\nimport {GetKendoDateFormatPipe} from './pipes/get-kendo-date-format.pipe';\nimport {ApFieldSvgComponent} from './components/ap-svg.component';\nimport {ApPlantProtectionTypemappingPipe} from './pipes/ap-plant-protection-typemapping.pipe';\nimport {GetSoilSampleFieldColorPipe} from './pipes/get-soil-sample-field-color.pipe';\nimport {GetReplacePipe} from './pipes/get-replace.pipe';\nimport {GetMaxValuePipe} from './pipes/get-max-value.pipe';\nimport {GetMinValuePipe} from './pipes/get-min-value.pipe';\nimport {SafePipe} from './pipes/ap-safe-domsanitizer.pipe';\nimport {ConvertBase64ToPngPipe} from './pipes/ap-convert-base64-to-png.pipe';\nimport {GetCountryCodeFlagPipe} from './pipes/get-countrycode-flag.pipe';\nimport {GridDragAndDropDirective} from './directives/grid-drag-and-drop.directive';\nimport {ExecFunctionPipe} from './pipes/exec-function.pipe';\nimport {DomObserverDirective} from './directives/dom-observer.directive';\nimport {ApDateRangeFilterComponent} from './components/ap-date-range-filter.component';\nimport {DateRangeModule, MultiViewCalendarModule} from '@progress/kendo-angular-dateinputs';\nimport {ApCheckboxFilterComponent} from './components/ap-checkbox-filter.component';\nimport {ApNumberFilterComponent} from './components/ap-number-filter.component';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {NumericTextBoxModule} from '@progress/kendo-angular-inputs';\nimport {ApResponsiveTextModule} from '../ap-responsive-text/ap-responsive-text.module';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ApClassColorFilterComponent} from './components/ap-class-color-filter.component';\nimport {SoilGroupFormatPipe} from './pipes/soil-group-format.pipe';\nimport {ApNumberListFilterComponent} from './components/ap-number-list-filter.component';\nimport {FactorPipe} from './pipes/ap-factor.pipe';\nimport {ApObjectFilterComponent} from './components/ap-object-filter.component';\nimport {ApStatusSwitchFilterComponent} from './components/ap-status-switch-filter.component';\nimport {ApIconModule} from '../icons/ap-icon.module';\nimport {ApCustomFormatPipe} from './pipes/ap-custom-format.pipe';\n\n@NgModule({\n declarations: [\n GetStatisticKeysPipe,\n GetRoundNumericPipe,\n GetBooleanPipe,\n GetElementOxidCalculatePipe,\n AreaUnitConverterPipe,\n GetSoilSampleFieldClassColorPipe,\n GetSoilSampleClassNamePipe,\n ApMultiSelectFilterComponent,\n ApStatusFilterComponent,\n GetKendoDateFormatPipe,\n ApFieldSvgComponent,\n ApPlantProtectionTypemappingPipe,\n GetSoilSampleFieldColorPipe,\n GetReplacePipe,\n GetMaxValuePipe,\n GetMinValuePipe,\n ConvertBase64ToPngPipe,\n SafePipe,\n GetCountryCodeFlagPipe,\n GridDragAndDropDirective,\n ExecFunctionPipe,\n DomObserverDirective,\n ApDateRangeFilterComponent,\n ApCheckboxFilterComponent,\n ApNumberFilterComponent,\n ApClassColorFilterComponent,\n ApNumberListFilterComponent,\n SoilGroupFormatPipe,\n FactorPipe,\n ApObjectFilterComponent,\n ApStatusSwitchFilterComponent,\n ApCustomFormatPipe\n ],\n exports: [\n GetStatisticKeysPipe,\n GetRoundNumericPipe,\n GetBooleanPipe,\n GetElementOxidCalculatePipe,\n AreaUnitConverterPipe,\n GetSoilSampleFieldClassColorPipe,\n GetSoilSampleClassNamePipe,\n ApMultiSelectFilterComponent,\n ApStatusFilterComponent,\n GetKendoDateFormatPipe,\n ApFieldSvgComponent,\n ApPlantProtectionTypemappingPipe,\n GetSoilSampleFieldColorPipe,\n GetReplacePipe,\n GetMaxValuePipe,\n GetMinValuePipe,\n ConvertBase64ToPngPipe,\n SafePipe,\n GetCountryCodeFlagPipe,\n GridDragAndDropDirective,\n ExecFunctionPipe,\n DomObserverDirective,\n ApDateRangeFilterComponent,\n ApCheckboxFilterComponent,\n ApNumberFilterComponent,\n ApClassColorFilterComponent,\n ApNumberListFilterComponent,\n FactorPipe,\n ApObjectFilterComponent,\n ApStatusSwitchFilterComponent,\n ApCustomFormatPipe\n ],\n imports: [\n MultiSelectModule,\n ButtonGroupModule,\n ButtonModule,\n CommonModule,\n MultiViewCalendarModule,\n DateRangeModule,\n DropDownListModule,\n ApTranslationModule,\n NumericTextBoxModule,\n ApResponsiveTextModule,\n ReactiveFormsModule,\n ApIconModule,\n ],\n providers: [\n GetRoundNumericPipe,\n GetKendoDateFormatPipe,\n GetElementOxidCalculatePipe,\n GetBooleanPipe,\n ApPlantProtectionTypemappingPipe,\n AreaUnitConverterPipe,\n GetSoilSampleFieldClassColorPipe,\n GetSoilSampleClassNamePipe,\n GetSoilSampleFieldColorPipe,\n GetReplacePipe,\n ConvertBase64ToPngPipe,\n SafePipe,\n GetCountryCodeFlagPipe,\n SoilGroupFormatPipe,\n FactorPipe,\n ApCustomFormatPipe\n ],\n})\nexport class ApUtilsModule {\n}\n","import {TimeSpan} from 'ts-tooling';\nimport ITimeSpan = System.ITimeSpan;\n\nexport class ApTimeSpanUtil {\n public static getEmptyTimeSpan(): ITimeSpan {\n return {\n Days: 0,\n Hours: 0,\n Minutes: 0,\n Seconds: 0,\n Milliseconds: 0,\n TotalDays: 0,\n TotalHours: 0,\n TotalMinutes: 0,\n TotalSeconds: 0,\n TotalMilliseconds: 0,\n Ticks: 0,\n Microseconds: 0,\n TotalMicroseconds: 0,\n Nanoseconds: 0,\n TotalNanoseconds: 0\n };\n }\n\n public static getTimeSpanFromDate(date: Date, useEmptyOnNull: boolean = false): ITimeSpan | null {\n if (!date) {\n return useEmptyOnNull ? this.getEmptyTimeSpan() : null;\n }\n const timeSpan = TimeSpan.FromJavaScriptDate(date, true);\n return {\n Days: timeSpan.Day,\n Hours: timeSpan.Hour,\n Minutes: timeSpan.Minute,\n Seconds: timeSpan.Second,\n Milliseconds: timeSpan.Millisecond,\n TotalDays: timeSpan.TotalDays,\n TotalHours: timeSpan.TotalHours,\n TotalMinutes: timeSpan.TotalMinutes,\n TotalSeconds: timeSpan.TotalMilliseconds,\n TotalMilliseconds: timeSpan.TotalMilliseconds,\n Ticks: timeSpan.TotalMilliseconds * 10000,\n Microseconds: 0,\n TotalMicroseconds: 0,\n Nanoseconds: 0,\n TotalNanoseconds: 0\n };\n }\n}\n","import {Guid} from 'ts-tooling';\n\nexport class ApGuidUtil {\n public static getEmptyGuid(): string {\n return Guid.Empty.ToString();\n }\n public static generateNewGuid(): string {\n return new Guid().ToString();\n }\n}\n","import OlFeature from 'ol/Feature';\nimport {createEmpty, extend, Extent, getCenter} from 'ol/extent';\nimport {Coordinate} from 'ol/coordinate';\n\n/**\n * some basic Geometry Operations\n */\nexport class ApGeometryExtension {\n /**\n * calculates the center point of a list of Openlayers Features\n */\n static calcCenterOfFeatures(geoms: OlFeature[]): Coordinate {\n const ext = ApGeometryExtension.calcExtentOfFeatures(geoms);\n return getCenter(ext);\n }\n\n /**\n * calculate the Extent Bounding Box of a list of Openlayers Features\n */\n static calcExtentOfFeatures(geoms: OlFeature[]): Extent {\n const ext = createEmpty();\n for (const g of geoms) {\n extend(ext, g.getGeometry().getExtent());\n }\n return ext;\n }\n}\n","import {concat, differenceBy, drop, findIndex, isArray, isEqual, isObject, PartialDeep, transform} from 'lodash';\n\n/**\n * a Extension to use lodash functions easier and strongly typed\n */\nexport class ApLodash {\n /**\n * insert or replace Items in a List\n */\n public static upSert(source: any[], update: any[]): void {\n for (const u of update) {\n const idx = findIndex(source, (e) => e['Id'] === u['Id']);\n if (idx > -1) {\n source[idx] = u;\n } else {\n source.push(u);\n }\n }\n }\n\n /**\n * replace a Item in a Object Collection\n */\n public static replaceItem(\n source: T[],\n item: T | T[],\n match: ((value: T) => {} | null | undefined) | string | [string, any] | PartialDeep): T[] {\n if (!item) {\n return source;\n }\n if (!(item instanceof Array)) {\n item = [item];\n }\n return concat(\n differenceBy(source, item, match),\n item\n );\n }\n\n /**\n * get the Difference of two Objects\n */\n public static difference(ref: T, dirty: T): T {\n // @ts-ignore\n\n return transform(ref, (result, value, key) => {\n if (!isEqual(value, dirty[key])) {\n result[key] = (isObject(value) && isObject(dirty[key])) ? ApLodash.difference(value, dirty[key]) : dirty[key];\n }\n });\n }\n\n public static dropItemFromArray(source: T[], item: T, match: (e: T) => boolean): T[] {\n return drop(source, findIndex(source, match));\n }\n\n /**\n * checks an Array to be an valid Kendo Grid Datasource\n */\n public static isValidGridDataSource(source: any[]): boolean {\n return isArray(source) && source.length > 0;\n }\n}\n","import {Injector} from '@angular/core';\n\nexport class ServiceInjector {\n static instance: Injector = null;\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApDynGridPropertyColumnConfig} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\n\n@Pipe({\n name: 'apCustomFormatPipe'\n})\n/**\n * Pipe handles custom formatting within kendo grid cells.\n * Like this the pure values remains the original type (e.g. number)\n * but the displayed text can be customized (e.g. '>5,00' or '5,00 kG')\n * Using this format pipe makes sure special filtering or sorting (numbers, dates etc.)\n * still works as expected.\n */\nexport class ApCustomFormatPipe implements PipeTransform {\n transform(value: any, gridColumn: ApDynGridPropertyColumnConfig, dataItem: any): string {\n if (!gridColumn?.formatCallback) {\n return value;\n }\n return gridColumn?.formatCallback(dataItem, value);\n }\n}\n","import {Pipe, PipeTransform, SecurityContext} from '@angular/core';\nimport {DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl} from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe'\n})\nexport class SafePipe implements PipeTransform {\n\n constructor(protected sanitizer: DomSanitizer) {\n }\n\n public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n return this.sanitizer.sanitize(SecurityContext.NONE, this.sanitizer.bypassSecurityTrustResourceUrl(value));\n }\n}\n","import {RoundNumericReplaceConfig} from '../types/get-round-numeric.pipe.types';\n\n/**\n * Configuration object for GetRoundNumericPipe\n * Provides static properties and methods to handle replacements of specific values in numeric transformations\n */\nexport class GetRoundNumericPipeConfig {\n /**\n * Array of null and undefined values that should be replaced\n * @public\n */\n public static readonly NullToReplace: any[] = [null, undefined];\n\n /**\n * Array of null, undefined and zero values that should be replaced\n * @public\n */\n public static readonly NullAndZeroToReplace: any[] = [null, undefined, 0];\n\n /**\n * Default configuration to replace null or undefined values with an empty string\n * @public\n */\n public static readonly NullToEmptyReplaceConfig: RoundNumericReplaceConfig = {\n ToReplace: GetRoundNumericPipeConfig.NullToReplace,\n ReplaceWith: ''\n };\n\n /**\n * Default configuration to replace null, undefined or zero values with an empty string\n * @public\n */\n public static readonly NullAndZeroToEmptyReplaceConfig: RoundNumericReplaceConfig = {\n ToReplace: GetRoundNumericPipeConfig.NullAndZeroToReplace,\n ReplaceWith: ''\n };\n\n /**\n * Creates a custom replacement configuration\n * @param toReplace - Array of values that should be replaced\n * @param replaceWith - String value to use as replacement\n * @returns RoundNumericReplaceConfig with specified replacement settings\n * @public\n */\n public static createCustomReplaceConfig(toReplace: any[], replaceWith: string): RoundNumericReplaceConfig {\n return { ToReplace: toReplace, ReplaceWith: replaceWith };\n }\n}\n","import {Pipe, PipeTransform } from '@angular/core';\nimport {Trace} from '../../debug-utils/ApplicationTracer';\n\n@Pipe({\n name: 'execFunction'\n})\nexport class ExecFunctionPipe implements PipeTransform {\n\n @Trace()\n transform(func: (...args: any[]) => any, ...args: any[]): any {\n return func(...args);\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'getCountryCodeFlag'\n})\nexport class GetCountryCodeFlagPipe implements PipeTransform {\n\n transform(countryCode: string): string {\n switch (countryCode) {\n case 'de':\n return '../../assets/img/flags/de.png';\n case 'en':\n return '../../assets/img/flags/gb.png';\n case 'lt':\n return '../../assets/img/flags/lt.png';\n case 'pl':\n return '../../assets/img/flags/pl.png';\n case 'hu':\n return '../../assets/img/flags/hu.png';\n case 'uk':\n return '../../assets/img/flags/ua.png';\n case 'lv':\n return '../../assets/img/flags/lv.png';\n case 'sr':\n return '../../assets/img/flags/rs.png';\n case 'et':\n return '../../assets/img/flags/ee.png';\n default:\n return '../../assets/img/flags/de.png';\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApElementOxydTypeEnum} from '../../ap-interface';\nimport {FactorService} from '../service/ap-factor.service';\n\n/**\n * Umrechnungsfaktoren\n * gegeben gesucht Faktor\n * P2O5 P 0,4364\n * K2O K 0,8300\n * MgO Mg 0,6030\n *\n * gegeben gesucht Faktor\n * P P2O5 2,2914\n * K K2O 1,2050\n * Mg MgO 1,6580\n */\n\n@Pipe({\n name: 'getElementOxidCalculate'\n})\nexport class GetElementOxidCalculatePipe implements PipeTransform {\n\n constructor(private factorService: FactorService) {\n }\n\n transform(value: number, unit: ApElementOxydTypeEnum, farmUnit: number): number {\n if (farmUnit === 1) {\n return value;\n } else if (farmUnit === 2) {\n let retval = value;\n switch (unit) {\n case ApElementOxydTypeEnum.P:\n retval = this.factorService.calculate(value, 'P', 'P2O5');\n break;\n case ApElementOxydTypeEnum.K:\n retval = this.factorService.calculate(value, 'K', 'K2O');\n break;\n case ApElementOxydTypeEnum.Mg:\n retval = this.factorService.calculate(value, 'Mg', 'MgO');\n break;\n case ApElementOxydTypeEnum.P2O5:\n retval = this.factorService.calculate(value, 'P2O5', 'P');\n break;\n case ApElementOxydTypeEnum.K2O:\n retval = this.factorService.calculate(value, 'K2O', 'K');\n break;\n case ApElementOxydTypeEnum.MgO:\n retval = this.factorService.calculate(value, 'MgO', 'Mg');\n break;\n }\n return retval;\n }\n return null;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'getKendoDateFormat'\n})\nexport class GetKendoDateFormatPipe implements PipeTransform {\n\n transform(value: string, args?: any): string {\n return value.split('Y').join('y').split('D').join('d');\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {replace} from 'lodash';\n\n@Pipe({\n name: 'getReplace'\n})\nexport class GetReplacePipe implements PipeTransform {\n\n transform(value: string, find: string, withReplace: string): string {\n let result = value;\n do {\n result = replace(result, find, withReplace);\n }\n while (result.includes(find));\n return result;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {GetRoundNumericService} from '../service/get-round-numeric.service';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {RoundNumericReplaceConfig} from './types/get-round-numeric.pipe.types';\n\n@Pipe({\n name: 'getRoundNumeric'\n})\nexport class GetRoundNumericPipe implements PipeTransform {\n constructor(private roundNumericService: GetRoundNumericService,\n private languageStore: LanguageStore) {\n }\n\n transform(value: any, round?: number, replace?: RoundNumericReplaceConfig): string {\n if (this.isNeedReplace(value, replace)) {\n return replace.ReplaceWith;\n }\n const roundResult: number = this.roundNumericService.roundAsNumber(value, round);\n if (this.isNeedReplace(roundResult, replace)) {\n return replace.ReplaceWith;\n }\n return this.languageStore.FormatNumber(roundResult);\n }\n\n private isNeedReplace(value: any, replace: RoundNumericReplaceConfig): boolean {\n return replace\n && replace.ReplaceWith !== undefined\n && replace.ToReplace\n && Array.isArray(replace.ToReplace)\n && replace.ToReplace.some(x => x === value);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {keys} from 'lodash';\n\n@Pipe({\n name: 'getStatisticKeys'\n})\nexport class GetStatisticKeysPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n return keys(value || {});\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {SoilGroupFormatService} from '../service/soil-group-format.service';\n\n@Pipe({\n name: 'soilGroupsFormat',\n})\nexport class SoilGroupFormatPipe implements PipeTransform {\n constructor(private soilGroupFormatService: SoilGroupFormatService) {\n }\n\n transform(value: number[]): string {\n return this.soilGroupFormatService.asString(value);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FactorsStore} from '../../stores/common/factors.store';\nimport IUnit = Data.Common.IUnit;\n\nexport interface IFactorService {\n calculate(value: number, source: IUnit | string, target: IUnit | string): number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FactorService implements IFactorService {\n constructor(private factorStore: FactorsStore) {\n }\n\n public calculate(value: number, source: IUnit | string, target: IUnit | string): number {\n const factor = this.factorStore.getFactor(source, target);\n return Math.round(value * factor.Factor * 100) / 100;\n }\n}\n","import {Injectable} from '@angular/core';\n\nexport interface IFieldNumerable {\n FieldNumber: number;\n FieldSubnumber: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ApFieldFormatService {\n public formatFieldNumber(field: IFieldNumerable): string {\n return `${field?.FieldNumber} - ${field?.FieldSubnumber}`;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {ApplModesStore} from '../../stores/common/appl-modes.store';\nimport {ApApplicationMode} from '../../ap-interface/enums/ap-application-mode.enums';\nimport {IGridStatus} from '../../ap-interface/interfaces/ap-grid-status.interface';\nimport {ApColumnState} from '../../ap-interface/enums/ap-column-state.enum';\nimport IApplicationMode = Data.Common.IApplicationMode;\n\n@Injectable({providedIn: 'root'})\nexport class GetApplicationModeService {\n constructor(private applicationModeStore: ApplModesStore,\n private translationStore: TranslationStore) {\n }\n\n public GetApplicationModeById(id: number): IApplicationMode {\n return this.applicationModeStore.Listen(s => s.data).value.Find(a => a?.Id === id);\n }\n\n public GetApplicationModeByKey(key: string): IApplicationMode {\n return this.applicationModeStore.Listen(s => s.data).value.Find(a => a?.Key === key);\n }\n\n public GetApplicationModeTranslation(mode: IApplicationMode): string {\n return this.translationStore.FindTranslationForSelectedLanguage(mode?.Key);\n }\n\n public GetApplicationModeStatus(mode: IApplicationMode): IGridStatus {\n if (mode?.Id === ApApplicationMode.Constant) {\n return {\n state: ApColumnState.Yellow,\n class: 'ap-status-yellow',\n description: ''\n };\n }\n return {\n state: ApColumnState.Green,\n class: 'ap-status-green',\n description: ''\n };\n }\n}\n","import {Injectable} from '@angular/core';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport {ApElementOxydTypeEnum} from '../../ap-interface';\nimport {GetElementOxidCalculatePipe} from '../pipes/get-element-oxid-calculate.pipe';\nimport {ApElementType} from '../../ap-interface/enums/ap-elements-type.enum';\nimport IElement = Data.Common.IElement;\nimport ISettings = Data.BaseData.ISettings;\nimport {FactorService} from './ap-factor.service';\n\n@Injectable({providedIn: 'root'})\nexport class GetElementService {\n private _settings: ISettings = null;\n\n constructor(private translationStore: TranslationStore,\n private settingsStore: SettingsStore,\n private settingStore: SettingsStore,\n private factorService: FactorService,\n private elementOxideCalculate: GetElementOxidCalculatePipe) {\n this.settingsStore.FirstSetting$.subscribe(s => this._settings = s);\n }\n\n public getAllElements(): { [key: number]: string } {\n return {\n [ApElementType.P]: this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientP'),\n [ApElementType.K]: this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientK'),\n [ApElementType.Mg]: this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientMg'),\n [ApElementType.CaO]: this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientCaO'),\n [ApElementType.N]: this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientN')\n };\n }\n\n public GetElementStringByString(element: ApElementType): string {\n switch (element) {\n case ApElementType.P:\n return this.settingStore.IsOxidFarm\n ? this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientP2O5')\n : this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientP');\n case ApElementType.K:\n return this.settingStore.IsOxidFarm\n ? this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientK2O')\n : this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientK');\n case ApElementType.Mg:\n return this.settingStore.IsOxidFarm\n ? this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientMgO')\n : this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientMg');\n case ApElementType.CaO:\n return this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientCaO');\n case ApElementType.N:\n return this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientN');\n default:\n return '';\n }\n }\n\n public GetElementStringByIElement(element: IElement): string {\n return this.GetElementStringById(element.Id);\n }\n\n public GetElementStringById(id: number): string {\n switch (id) {\n case ApElementType.P:\n return this.settingStore.IsOxidFarm\n ? this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientP2O5')\n : this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientP');\n case ApElementType.K:\n return this.settingStore.IsOxidFarm\n ? this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientK2O')\n : this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientK');\n case ApElementType.Mg:\n return this.settingStore.IsOxidFarm\n ? this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientMgO')\n : this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientMg');\n case ApElementType.CaO:\n return this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientCaO');\n case ApElementType.N:\n return this.translationStore.FindTranslationForSelectedLanguage('Global__NutrientN');\n default:\n return '';\n }\n }\n\n public CalculateElementOxidValueByElementType(value: number, elementType: ApElementType): number {\n switch (elementType) {\n case ApElementType.P:\n return this.CalculateElementOxidValueByGivenElementValue(value, ApElementOxydTypeEnum.P);\n case ApElementType.K:\n return this.CalculateElementOxidValueByGivenElementValue(value, ApElementOxydTypeEnum.K);\n case ApElementType.Mg:\n return this.CalculateElementOxidValueByGivenElementValue(value, ApElementOxydTypeEnum.Mg);\n case ApElementType.CaO:\n case ApElementType.N:\n default:\n return value;\n }\n }\n\n public CalculateToElementByGivenValue(value: number, elementType: ApElementType, isValueInOxid: boolean, isNeedConvert: boolean): number {\n if (!isNeedConvert) {\n return value;\n }\n let oxidUnit: ApElementOxydTypeEnum;\n let elementUnit: ApElementOxydTypeEnum;\n switch (elementType) {\n case ApElementType.P:\n oxidUnit = ApElementOxydTypeEnum.P2O5;\n elementUnit = ApElementOxydTypeEnum.P;\n break;\n case ApElementType.K:\n oxidUnit = ApElementOxydTypeEnum.K2O;\n elementUnit = ApElementOxydTypeEnum.K;\n break;\n case ApElementType.Mg:\n oxidUnit = ApElementOxydTypeEnum.MgO;\n elementUnit = ApElementOxydTypeEnum.Mg;\n break;\n default:\n return value;\n }\n return this.CalculateElementOxidValueByGivenElementValue(value, isValueInOxid ? oxidUnit : elementUnit);\n }\n\n public CalculateElementOxidValueByGivenElementValue(value: any, unit: ApElementOxydTypeEnum): number {\n if (value === '-' || value === 0 || value === null || value === undefined) {\n return value;\n }\n return this.elementOxideCalculate.transform(\n value, unit, this.settingStore.FirstSetting.UnitElementOxyd\n );\n }\n\n public isOxidFarm(): boolean {\n return this._settings.UnitElementOxyd === 2;\n }\n\n public convertElementOxid(value: number, element: string, method: string): number {\n if (!this._settings) {\n console.warn(`can not convert Value no Settings found`);\n return value;\n }\n\n const isOxydMethod = method.EndsWith('_OXYD');\n if ((isOxydMethod && this.isOxidFarm()) ||\n (!isOxydMethod && !this.isOxidFarm())) {\n return value;\n }\n switch (element) {\n case ApElementOxydTypeEnum.P:\n if (isOxydMethod) {\n return this.factorService.calculate(value, ApElementOxydTypeEnum.P2O5, ApElementOxydTypeEnum.P);\n }\n return this.factorService.calculate(value, ApElementOxydTypeEnum.P, ApElementOxydTypeEnum.P2O5);\n case ApElementOxydTypeEnum.K:\n if (isOxydMethod) {\n return this.factorService.calculate(value, ApElementOxydTypeEnum.K2O, ApElementOxydTypeEnum.K);\n }\n return this.factorService.calculate(value, ApElementOxydTypeEnum.K, ApElementOxydTypeEnum.K2O);\n case ApElementOxydTypeEnum.Mg:\n if (isOxydMethod) {\n return this.factorService.calculate(value, ApElementOxydTypeEnum.MgO, ApElementOxydTypeEnum.Mg);\n }\n return this.factorService.calculate(value, ApElementOxydTypeEnum.Mg, ApElementOxydTypeEnum.MgO);\n }\n return value;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {CampaignYearStore} from '../../stores/login/campaignyear.store';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApNutrientManagementDateService {\n\n constructor(private campaignYearStore: CampaignYearStore,\n private dateService: ApDateService) {\n }\n\n GetMinDate(): Date {\n return this.dateService.toFarmDate(this.campaignYearStore.getSelectedCampaignYear().DefaultStart).toDate();\n }\n\n GetMaxDate(year: number): Date {\n if (this.campaignYearStore.SelectedCampaignYear.Year === Math.max.apply(null, this.campaignYearStore.getCampaignYears().map((y) => y.Year))) {\n return this.dateService.toFarmDate(new Date(`${year.toString()}-07-31`)).toDate();\n }\n return this.dateService.toFarmDate(this.campaignYearStore.getSelectedCampaignYear().DefaultEnd).toDate();\n }\n\n GetOutputDate(): Date {\n if (this.campaignYearStore.SelectedCampaignYear.Year === Math.max.apply(null, this.campaignYearStore.getCampaignYears().map((y) => y.Year))) {\n return this.dateService.toFarmDate(new Date()).toDate();\n }\n return this.dateService.toFarmDate(this.campaignYearStore.getSelectedCampaignYear().DefaultStart).toDate();\n }\n}\n","import {Injectable} from '@angular/core';\nimport {GetRoundNumericService} from './get-round-numeric.service';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {ApElementOxydTypeEnum} from '../../ap-interface';\nimport {FactorService} from './ap-factor.service';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport {ApTranslationService} from './ap-translation.service';\nimport {GetElementService} from './ap-get-element.service';\nimport {FertilizerStore} from '../../stores/base-data/fertilizer.store';\nimport {GetApplicationModeService} from './ap-get-applicationmode.service';\nimport {CampaignYearStore} from '../../stores/login/campaignyear.store';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {SampleDateObject} from '../../stores/nutrients/soilsampledate.store';\nimport {CampaignYearService} from '../../services/data/campaign-year.service';\nimport {SampleMethodService} from '../../services/data/sample.method.service';\nimport {IGridStatus} from '../../ap-interface/interfaces/ap-grid-status.interface';\nimport {ApColumnState} from '../../ap-interface/enums/ap-column-state.enum';\nimport ISettings = Data.BaseData.ISettings;\nimport ISampleRegion = Data.Nutrients.ISampleRegion;\nimport IApplicationMode = Data.Common.IApplicationMode;\nimport ICropRotationAttributes = Data.FieldManagement.ICropRotationAttributes;\n\n@Injectable({providedIn: 'root'})\nexport class ApNutrientService {\n private _settings: ISettings = null;\n\n constructor(private settingsStore: SettingsStore,\n private fertilizerStore: FertilizerStore,\n private elementService: GetElementService,\n private campaignYearStore: CampaignYearStore,\n private dateService: ApDateService,\n private factorService: FactorService,\n private translationService: ApTranslationService,\n private campaignYearService: CampaignYearService,\n private roundNumericService: GetRoundNumericService,\n private sampleMethodService: SampleMethodService,\n private applicationModeService: GetApplicationModeService) {\n this.settingsStore.FirstSetting$.subscribe(s => this._settings = s);\n }\n\n public isOxidFarm(): boolean {\n return this._settings.UnitElementOxyd === 2;\n }\n\n public formatClassificationTooltip(value: number, hitClassE: boolean, method: string): string {\n if (value === undefined || value === null) {\n console.warn(`invalid value for class value in formatClassificationTooltip ${value}`);\n return '-';\n }\n\n const rounded = this.roundNumericService.round(value, APP_CONFIGURATION.SpecialDecimalPlaces.Distributions);\n let buffer = '';\n if (hitClassE) {\n buffer += '> ';\n }\n buffer += `${rounded}`;\n if (method) {\n buffer += ` ${this.sampleMethodService.getUnitWithMethod(method, false)}`;\n } else {\n console.warn(`missing method in formatClassificationTooltip`);\n }\n return buffer;\n }\n\n public convertElementOxid(value: number, element: string, method: string): number {\n return this.elementService.convertElementOxid(value, element, method);\n }\n\n /**\n * Convert from Element to Product\n * @param productId of the fertiliser\n * @param element Lead nutrient\n * @param value the element amount\n */\n public convertNutrientToGoods(productId: number, element: number, value: number): number {\n if (productId === 0 || productId === null) {\n return value;\n }\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!fertilizer) {\n return value;\n }\n let content = 1;\n let result = value;\n switch (element) {\n case 1:\n content = fertilizer.ContentP !== 0 ? fertilizer.ContentP : 1;\n break;\n case 2:\n content = fertilizer.ContentK !== 0 ? fertilizer.ContentK : 1;\n break;\n case 3:\n content = fertilizer.ContentMg !== 0 ? fertilizer.ContentMg : 1;\n break;\n case 4:\n content = fertilizer.ContentCaO !== 0 ? fertilizer.ContentCaO : 1;\n break;\n case 5:\n content = fertilizer.ContentN !== 0 ? fertilizer.ContentN : 1;\n break;\n }\n\n if (fertilizer.IsLiquid) {\n const density = fertilizer.Density !== null ? fertilizer.Density : 1;\n result = result / density;\n }\n\n if (fertilizer.IsOrganic) {\n // Organic\n return result / content;\n } else {\n // Inorganic\n return result / content * 100;\n }\n }\n\n /**\n * Defines the lead nutrient\n * → Element with the highest content\n * 1 -P\n * 2 - K\n * 3 - Mg\n * 4 - CaO\n * @param productId the id of the fertiliser\n */\n public getFertilizerLeadingElement(productId: number): number {\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!fertilizer) {\n return null;\n }\n\n const elementContents = [fertilizer.ContentP, fertilizer.ContentK, fertilizer.ContentMg, fertilizer.ContentCaO];\n const absElementContents = elementContents.map(value => Math.abs(value));\n const maxElementContentsIndex = elementContents.indexOf(Math.max(...elementContents));\n return elementContents[maxElementContentsIndex] > 0 ? maxElementContentsIndex + 1 : absElementContents.indexOf(Math.max(...absElementContents)) + 1;\n }\n\n public getFertilizerStatus(applicationMode: IApplicationMode, isBooking: boolean): IGridStatus {\n if (isBooking) {\n return {\n state: ApColumnState.Grey,\n class: 'ap-status-grey',\n description: ''\n };\n }\n return this.applicationModeService.GetApplicationModeStatus(applicationMode);\n }\n\n public getFertilizerStatusDescription(applicationMode: IApplicationMode, isBooking: boolean): string {\n let description = this.applicationModeService.GetApplicationModeTranslation(applicationMode);\n if (isBooking) {\n description = description + ' ' + `(${this.translationService.translate('Nutrients__Booked')})`;\n }\n return description;\n }\n\n public getGDStatusByCrAttribute(sampleDateObject: SampleDateObject, sampleRegions: ISampleRegion[], crAttribute: ICropRotationAttributes = null): [number, string] {\n const selectedCampaignYear = this.campaignYearStore.getSelectedCampaignYear();\n const sampleDateMidnight = sampleDateObject?.Date ? this.dateService.getDateMidnight(sampleDateObject.Date) : undefined;\n const soilSampleYearWithInterval = this._getEndOfCampaignYearWithSoilSampleInterval(sampleDateObject, sampleRegions);\n\n const hasNoSampleDate = !sampleDateObject?.Date;\n const hasNoCropInCurrentYear = !crAttribute || crAttribute.IsCropClosed === false;\n const hasNoWsvRaster = !crAttribute || crAttribute.HasWsvRaster === false;\n const hasNoIrRaster = !crAttribute || crAttribute.HasIrRaster === false;\n const hasNoRbRaster = !crAttribute || crAttribute.HasRbRaster === false;\n const sampleDateInFutureCampaignYear = sampleDateMidnight > new Date(selectedCampaignYear.DefaultEnd);\n const soilSampleWithIntervalOlderThenCurrentYear = !!soilSampleYearWithInterval && soilSampleYearWithInterval < new Date(selectedCampaignYear.DefaultStart);\n\n if (hasNoSampleDate || sampleDateInFutureCampaignYear || soilSampleWithIntervalOlderThenCurrentYear) {\n // grey Status\n return [2, 'Nutrient_Planning__No_Sample_Date_Found'];\n } else if (hasNoCropInCurrentYear) {\n // yellow Status\n return [0, 'Nutrient_Planning__No_Crop_In_Current_Year'];\n } else if (hasNoWsvRaster || hasNoIrRaster || hasNoRbRaster) {\n // red Status\n return [-1, 'Global__Please_Contact_The_Support'];\n }\n // green Status\n return [1, 'Global__Variable_Planning_Possible'];\n }\n\n /**\n * Convert from product to nutrient\n * @param productId of the fertiliser\n * @param element lead nutrient\n * @param value of the product\n * @param withOxid with oxid conversion\n */\n public convertGoodsToNutrient(productId: number, element: number, value: number, withOxid: boolean = true): number {\n if (productId === 0 || productId === null) {\n return value;\n }\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!fertilizer) {\n return value;\n }\n let content = 1;\n let result = value;\n let unit: ApElementOxydTypeEnum;\n switch (element) {\n case 1:\n content = fertilizer.ContentP !== 0 ? fertilizer.ContentP : 1;\n unit = ApElementOxydTypeEnum.P;\n break;\n case 2:\n content = fertilizer.ContentK !== 0 ? fertilizer.ContentK : 1;\n unit = ApElementOxydTypeEnum.K;\n break;\n case 3:\n content = fertilizer.ContentMg !== 0 ? fertilizer.ContentMg : 1;\n unit = ApElementOxydTypeEnum.Mg;\n break;\n case 4:\n content = fertilizer.ContentCaO !== 0 ? fertilizer.ContentCaO : 1;\n unit = undefined;\n break;\n case 5:\n content = fertilizer.ContentN !== 0 ? fertilizer.ContentN : 1;\n unit = undefined;\n break;\n }\n\n if (fertilizer.IsLiquid) {\n const density = fertilizer.Density !== null ? fertilizer.Density : 1;\n result = result * density;\n }\n\n if (fertilizer.IsOrganic) {\n // Organic\n result = result * content;\n } else {\n // Inorganic/ mineral\n result = result * content / 100;\n }\n // convert from element to oxis if farm is oxid.\n if (withOxid) {\n return this.elementService.CalculateElementOxidValueByGivenElementValue(result, unit);\n }\n\n return result;\n }\n\n private _getEndOfCampaignYearWithSoilSampleInterval(sampleDateObject: SampleDateObject,\n sampleRegions: ISampleRegion[]): Date | undefined {\n if (!sampleDateObject || !sampleDateObject.Date\n || !sampleDateObject.Region || !sampleRegions || sampleRegions.length === 0) {\n return undefined;\n }\n const sampleRegion = sampleRegions.find(x => x.Region === sampleDateObject.Region);\n if (!Number.isFinite(sampleRegion?.SoilSampleInterval)) {\n return undefined;\n }\n const soilSampleInterval = !sampleRegion.SoilSampleInterval ? 0 : sampleRegion.SoilSampleInterval;\n const soilSampleCampaignYearStart = this.campaignYearService.getCampaignYearBeginFromSampleDate(sampleDateObject.Date);\n const soilSampleLastCampaignYear = this.campaignYearService.getCampaignYearRange(\n soilSampleCampaignYearStart.getFullYear() + soilSampleInterval\n );\n return soilSampleLastCampaignYear.EndYear;\n }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {MapViewMode} from '../../ap-interface';\nimport {ApDocuUtils} from '../../docu/utils/ap-docu-utils';\nimport {camelCase, upperFirst} from 'lodash';\nimport {TrackPropertyNames} from '../../ap-map';\nimport {BehaviorSubject, Observable, of} from 'rxjs';\nimport {MachineStore} from '../../stores/docu/machine.store';\nimport {MachineBreaksStore} from '../../stores/docu/machine.breaks.store';\nimport {MapViewStore} from '../../stores/layout/mapview.store';\nimport {GeoJsonStore} from '../../stores/docu/geojson.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {ColorLegendStore} from '../../stores/map/color.legend.store';\nimport {TrackPropertyComponent} from '../../entry-components/color-legend-entry-components/track-property.component';\nimport {filter} from 'rxjs/operators';\nimport IAttachment = Data.DocuContext.Attachment.IAttachment;\nimport IField = Data.FieldManagement.IField;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport ISlice = Data.DocuContext.Slice.ISlice;\nimport IGuid = System.IGuid;\nimport IMachine = Data.DocuContext.Machine.IMachine;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApShowTrackOnMapService {\n onMapClear = new EventEmitter();\n\n private _breaks = new Map();\n private _json = {};\n private _mapViewMode: MapViewMode;\n private _types: { text: string, value: string }[] = [];\n private _type: { text: string, value: string };\n private _pendingSubjects = {};\n\n constructor(private colorLegendStore: ColorLegendStore,\n private machineBreaksStore: MachineBreaksStore,\n private geoJsonStore: GeoJsonStore,\n private machineStore: MachineStore,\n private mapStore: MapStore,\n private mapViewStore: MapViewStore) {\n this.mapViewStore.Listen(s => s.mode).subscribe(mapViewMode => {\n this._mapViewMode = mapViewMode;\n });\n\n this.geoJsonStore.Listen(s => s.geoJson).subscribe(geoJson => {\n if (geoJson === null) {\n return;\n }\n if (geoJson['Key'] !== undefined && geoJson['Value'] !== undefined) {\n this._json[geoJson['Key']] = JSON.parse(geoJson['Value']);\n }\n });\n\n this.geoJsonStore.Listen(s => s.pending).subscribe((p: string[]) => {\n const keys = Object.keys(this._pendingSubjects);\n keys.forEach(k => {\n this._pendingSubjects[k].next(p.indexOf(k) !== -1);\n });\n });\n\n this.machineBreaksStore.Listen(s => s.data).subscribe(breaks => {\n this._breaks = ApDocuUtils.generateBreakMap(breaks);\n });\n\n this.colorLegendStore.Listen(s => s.selectedValue).pipe(filter(v => !!v)).subscribe(v => {\n const i = v[TrackPropertyComponent.type];\n if (i !== undefined) {\n this.setType(i);\n }\n });\n\n const propertyNames = TrackPropertyNames.getAll();\n for (const name of propertyNames) {\n this._types.push({\n text: 'Api_Enums__' + upperFirst(camelCase(name)),\n value: name as string\n });\n }\n\n this._type = this._types[0];\n }\n\n private static _getUnit(type: string): string {\n return '';\n }\n\n isActive(id: string): boolean {\n return this._json.hasOwnProperty(id);\n }\n\n generateGeoJsonBySlice(slice: ISlice): void {\n const id = slice.Id as string;\n if (this._show(id, slice.Attachment.Machine)) {\n this.geoJsonStore.generateGeoJsonBySlice(id);\n }\n this._refreshMap();\n }\n\n generateGeoJsonByField(attachment: IAttachment, field: IField, date: Date, workType: IWorktypes = null): void {\n const id = attachment.Id as string;\n if (this._show(id, attachment.Machine)) {\n this.geoJsonStore.generateGeoJsonByField(attachment, field, date, workType);\n }\n this._refreshMap();\n }\n\n generateGeoJsonByMachine(guid: IGuid, machine: IMachine, from: Date): void {\n const id = guid as string;\n if (this._show(id, machine)) {\n this.geoJsonStore.generateGeoJsonByMachine(guid, machine, from);\n }\n this._refreshMap();\n }\n\n clear(): void {\n this._json = {};\n this.onMapClear.emit();\n this.geoJsonStore.clearGeoJson();\n this.colorLegendStore.resetColorLegend();\n }\n\n removedUnreferencedIds(ids: any[]): void {\n Object.keys(this._json).forEach(key => {\n if (ids.indexOf(key) === -1) {\n this._removeId(key);\n }\n });\n }\n\n getPendingSubject(item): Observable {\n const id = item['Id'] as string;\n if (id === undefined) {\n return of(false);\n }\n if (!this._pendingSubjects[id]) {\n this._pendingSubjects[id] = new BehaviorSubject(this.geoJsonStore.isPending(id));\n }\n return this._pendingSubjects[id];\n }\n\n setType(i: number): void {\n this._type = this._types[i < this._types.length ? i : 0];\n }\n\n private _show(id: string, machine: IMachine): boolean {\n if (this._mapViewMode !== MapViewMode.NORMAL) {\n this.mapViewStore.showMapView();\n }\n if (this._json.hasOwnProperty(id)) {\n this._removeId(id);\n return false;\n } else {\n return true;\n }\n }\n\n private _refreshMap(): void {\n setTimeout(this.mapViewStore.refreshMap.bind(this.mapViewStore), 1);\n }\n\n private _removeId(id): void {\n delete this._json[id];\n if (Object.keys(this._json).length === 0) {\n this.onMapClear.emit();\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {CropTypeStore} from '../../stores/base-data/crop.types.store';\nimport {ApElementType} from '../../ap-interface/enums/ap-elements-type.enum';\nimport {ApElementOxydTypeEnum} from '../../ap-interface';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {ApTranslationService} from './ap-translation.service';\nimport {GetElementService} from './ap-get-element.service';\nimport {GetRoundNumericService} from './get-round-numeric.service';\nimport {FertilizerStore} from '../../stores/base-data/fertilizer.store';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {ApGetCropService} from '../../stores/services/ap-get-crop.service';\nimport IGuid = System.IGuid;\n\n\n@Injectable({providedIn: 'root'})\n/**\n * Generic service for generating tooltips\n */\nexport class ApTooltipContentService {\n constructor(private fieldStore: FieldStore,\n private languageStore: LanguageStore,\n private cropTypeStore: CropTypeStore,\n private fertilizerStore: FertilizerStore,\n private dateService: ApDateService,\n private cropService: ApGetCropService,\n private elementService: GetElementService,\n private translationService: ApTranslationService,\n private roundNumericService: GetRoundNumericService) {\n }\n\n /**\n * Generates tooltip showing a list of fields and their crop\n * @param data an array of elements containing at least FieldId and MainCropId\n */\n public getFieldsCropsTooltip(data: { FieldId: IGuid, MainCropId: number }[]): string {\n if (!data || data.length <= 0) {\n return '';\n }\n const formattedData = data.filter(x => x).map(item => {\n const fieldName = this.fieldStore.getFieldNameById(item.FieldId);\n const cropName = this.cropTypeStore.getDefaultCroptype(item.MainCropId)?.Description;\n return {\n FieldName: fieldName,\n CropName: cropName\n };\n });\n return this._getFieldsTooltip(formattedData);\n }\n\n public getFieldsCropsTooltipForBaseFertilization(data: { FieldId: IGuid, Year: number }[]): string {\n if (!data || data.length <= 0) {\n return '';\n }\n const formattedData = data.filter(x => x).map(item => {\n const fieldName = this.fieldStore.getFieldNameById(item.FieldId);\n const cropRotation = this.cropService.getCropRotationByYear(item.FieldId, item.Year);\n const cropName = this.cropService.getCropNameFromCropRotationYield(cropRotation);\n return {\n FieldName: fieldName,\n CropName: cropName\n };\n });\n return this._getFieldsTooltip(formattedData);\n }\n\n public getProductContentInfoTooltip(productId: number): string {\n if (productId === 0) {\n return '';\n }\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!fertilizer) {\n return '';\n }\n let title = this.translationService.translate('Global__Content');\n if (fertilizer?.Unit?.Id === 9) {\n const kgm = this.translationService.translate('Global__Unit_kg') + '/' + this.translationService.translate('Global__UnitM3');\n title = title + ' [' + kgm + ']';\n }\n if (fertilizer?.Unit?.Id === 10) {\n const kgt = this.translationService.translate('Global__Unit_kg') + '/' + this.translationService.translate('Global__Unit_t');\n title = title + ' [' + kgt + ']';\n }\n if (fertilizer?.Unit?.Id === 6 || fertilizer?.Unit?.Id === 7) {\n title = title + ' [' + this.translationService.translate('Global__Unit_Percent') + ']';\n }\n const titlePP2O5 = this.elementService.GetElementStringByString(ApElementType.P);\n const titleKK2O = this.elementService.GetElementStringByString(ApElementType.K);\n const titleMgMgO = this.elementService.GetElementStringByString(ApElementType.Mg);\n const titleCaO = this.elementService.GetElementStringByString(ApElementType.CaO);\n const titleN = this.elementService.GetElementStringByString(ApElementType.N);\n const contentP = this.roundNumericService.roundAsNumber(this.elementService.CalculateElementOxidValueByGivenElementValue(fertilizer.ContentP, ApElementOxydTypeEnum.P), APP_CONFIGURATION.SpecialDecimalPlaces.OrgFertContent);\n const contentK = this.roundNumericService.roundAsNumber(this.elementService.CalculateElementOxidValueByGivenElementValue(fertilizer.ContentK, ApElementOxydTypeEnum.K), APP_CONFIGURATION.SpecialDecimalPlaces.OrgFertContent);\n const contentMg = this.roundNumericService.roundAsNumber(this.elementService.CalculateElementOxidValueByGivenElementValue(fertilizer.ContentMg, ApElementOxydTypeEnum.Mg), APP_CONFIGURATION.SpecialDecimalPlaces.OrgFertContent);\n const contentCaO = this.roundNumericService.roundAsNumber(fertilizer.ContentCaO, APP_CONFIGURATION.SpecialDecimalPlaces.OrgFertContent);\n const contentN = this.roundNumericService.roundAsNumber(fertilizer.ContentN, APP_CONFIGURATION.SpecialDecimalPlaces.OrgFertContent);\n\n return `\\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 '
${title}
${titlePP2O5}${titleKK2O}${titleMgMgO}${titleCaO}${titleN}
${contentP}${contentK}${contentMg}${contentCaO}${contentN}
';\n }\n\n public generateCropNoteTooltip(note: string): string {\n if (!note) {\n return '';\n }\n return `
${note}
`;\n }\n\n public planBooksApplicationDatesTooltip(data: { ApplicationDate: Date }[]): string {\n if (!data || data.length <= 0) {\n return '';\n }\n let fieldsTooltip = '
';\n data.forEach(item => {\n const applicationDate = this.dateService.dateToMoment(item.ApplicationDate)\n .format(this.languageStore.CurrentDateFormat);\n fieldsTooltip += `
${applicationDate ?? ''}
`;\n });\n fieldsTooltip += '
';\n return fieldsTooltip;\n }\n\n private _getFieldsTooltip(data: { FieldName: string | null, CropName: string | null }[]): string {\n let fieldsTooltip = '
';\n for (const d of data) {\n fieldsTooltip += `
${d.FieldName ?? ''}
`;\n fieldsTooltip += `
\\t\\t${d.CropName ? d.CropName : '-'}
`;\n }\n fieldsTooltip += '
';\n return fieldsTooltip;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {ServiceInjector} from '../injector';\n\n@Injectable({providedIn: 'root'})\nexport class ApTranslationService {\n\n static translate(key: string, countryCode?: string): string {\n return ServiceInjector.instance.get(ApTranslationService).translate(key, countryCode);\n }\n\n constructor(private translationStore: TranslationStore) {}\n\n translate(key: string, countryCode?: string): string {\n if (countryCode) {\n return this.translationStore.FindTranslation(key, countryCode);\n }\n return this.translationStore.FindTranslationForSelectedLanguage(key);\n }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {Observable, of, Subscription} from 'rxjs';\nimport {delay} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApUtilService {\n static asObservable(object: T | Observable, defaultValue?: T): Observable {\n if (object && object['subscribe'] && typeof object['subscribe'] === typeof function (): void {\n }) {\n return (object as Observable).pipe(delay(0));\n } else if (typeof object === typeof undefined) {\n return of(defaultValue);\n } else {\n return of(object as T);\n }\n }\n\n static createEventEmitter(generatorOrNext: (value: T) => void, subscriptions: Subscription[]): EventEmitter {\n const emitter = new EventEmitter();\n subscriptions.push(emitter.subscribe(generatorOrNext));\n return emitter;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport ILanguage = Data.Language.ILanguage;\n\n@Injectable({providedIn: 'root'})\nexport class GetRoundNumericService {\n private _lang: ILanguage = null;\n\n constructor(private languageStore: LanguageStore,\n private settingsStore: SettingsStore) {\n this.languageStore.SelectedLanguage$.subscribe(d => this._lang = d);\n }\n\n public roundValue(value: any): string {\n return this.round(value);\n }\n\n /**\n * round the Value to the Number of Digits\n */\n public round(value: any, digits?: number, notReplace: boolean = false): string {\n if (digits === undefined) {\n digits = this.settingsStore.FirstSetting ? this.settingsStore.FirstSetting.DigitsAfterDecimalPoint : 2;\n }\n if (digits < 0) {\n digits = value.toString().Split('.')[1]?.length || 0;\n }\n\n let optionalUnit = '';\n // if value contains space => it might be number with unit. Round number and attach unit back.\n if (value?.toString().includes(' ')) {\n const valueAsString = value.toString();\n optionalUnit = valueAsString.substring(valueAsString.indexOf(' '), valueAsString.length);\n }\n\n if (typeof value === typeof 0) {\n return this.fixValue(value, digits, notReplace) + optionalUnit;\n }\n\n const parsedValue = parseFloat(value);\n if (isNaN(parsedValue)) {\n return value;\n }\n return this.fixValue(parsedValue, digits, notReplace) + optionalUnit;\n }\n\n /**\n * round the Value to the Number of Digits\n * not secure the number of Digits are reached\n *\n * For Example:\n *\n * when have 4 digits 1.1000 get as 1.1\n */\n public roundAsNumber(value: any, digits?: number): number {\n const res = parseFloat(this.round(value, digits, true));\n if (isNaN(res)) {\n return 0.0;\n }\n return res;\n }\n\n /*\n * converts the number to a string with usage of settings decimal separator\n */\n public stringify(value: number, digits?: number): string {\n return this.fixValue(value, digits);\n }\n\n private fixValue(value: number, digits?: number, notReplace = false): string {\n if (digits === undefined) {\n digits = this.settingsStore.FirstSetting ? this.settingsStore.FirstSetting.DigitsAfterDecimalPoint : 2;\n }\n value = value ?? 0;\n if (!this._lang) {\n console.warn('try to round value without Language Info! maybe invalid decimal separator used');\n return value.toFixed(digits);\n }\n let tmp = value.toFixed(digits);\n if (notReplace) {\n return tmp;\n }\n tmp = tmp.Replace('.', this._lang.DecimalSeperator);\n return tmp;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ChartSetValueType, IChartAxesOptions} from '../../stores/statistic/statistic.store';\n\nexport interface IImageStyle {\n display: string;\n 'background-color': string;\n 'text-align': string;\n color: string;\n 'font-weight': string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GetSoilSampleClassColorService {\n private borderColor = '#76777b';\n private defaultColor = 'inherit';\n\n public getColor(classVal: string | number): string {\n let color = this.defaultColor;\n if (classVal === 'A-' || classVal === 1) {\n color = '#f00a00';\n } else if (classVal === 'A+' || classVal === 2) {\n color = '#d75000';\n } else if (classVal === 'B-' || classVal === 3) {\n color = '#d67000';\n } else if (classVal === 'B+' || classVal === 4) {\n color = '#d9a000';\n } else if (classVal === 'C-' || classVal === 5) {\n color = '#d4dd00';\n } else if (classVal === 'C+' || classVal === 6) {\n color = '#a6d400';\n } else if (classVal === 'D-' || classVal === 7) {\n color = '#64ab00';\n } else if (classVal === 'D+' || classVal === 8) {\n color = '#298600';\n } else if (classVal === 'E' || parseFloat(classVal?.toString()) >= 9) {\n color = '#0082ff';\n }\n return color;\n }\n\n public getImageStyle(classVal: string | number, border = false): IImageStyle {\n const color = this.getColor(classVal);\n const res = {\n display: 'flex',\n 'background-color': color,\n 'text-align': 'center',\n color: color !== this.defaultColor ? 'white' : 'inherit',\n 'align-items': 'center',\n 'font-weight': color !== this.defaultColor ? 'bold' : 'inherit'\n };\n if (border) {\n res['text-shadow'] = `-1px 0 ${this.borderColor}, 0 1px ${this.borderColor}, 1px 0 ${this.borderColor}, 0 -1px ${this.borderColor}`;\n res['border'] = `1px solid ${this.borderColor}`;\n }\n return res;\n }\n\n public getStatisticAxesConfig(type: ChartSetValueType, min?: number, max?: number): IChartAxesOptions {\n switch (type) {\n case ChartSetValueType.CLASS:\n return {\n titleX: 'ha',\n titleY: '',\n minX: min || 0,\n maxX: max,\n };\n default:\n return {\n titleX: '',\n titleY: '',\n minX: min || 0,\n maxX: max,\n };\n }\n }\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({providedIn: 'root'})\nexport class SoilGroupFormatService {\n private _values = [1, 2, 3, 4, 5, 6];\n private _labels = ['1', '2', '3', '4', '5', '6'];\n private _colors = ['#ffffb3', '#f2cc33', '#a6734d', '#267300', '#0070ff', '#b34d80'];\n public mapSingle(soilGroup: number): string {\n return this.mapSoilGroups(soilGroup);\n }\n\n public asString(soilGroups: number[]): string {\n return soilGroups.Convert(e => this.mapSoilGroups(e)).Join(',');\n }\n\n public colorCode(value: number | string): string {\n if (typeof value === typeof '') {\n return this.getValue(this._labels, value, this._colors, '#000000');\n }\n return this.getValue(this._values, value, this._colors, '#000000');\n }\n\n private getValue(search: any[], value: any, target: string[], defaultValue?: string): string {\n for (const key in search) {\n if (search[key] === value) {\n return target[key];\n }\n }\n return defaultValue || '';\n }\n\n private mapSoilGroups(value: number): string {\n return this.getValue(this._values, value, this._labels);\n }\n}\n","export class ApBase64Util {\n /**\n * Converts the given string to base64 expression.\n * The string may contain 2-byte characters (chinese, emojis, etc.)\n * It's an improved implementation over using plain 'window.btoa' which cannot\n * handle 2-byte characters (only latin-1)\n * @param value to be converted\n */\n public static stringToBase64(value: string): string {\n return window.btoa(\n this.stringFromCodePoint(\n this.encode(value)));\n }\n\n /**\n * Converts the given bytes to base64 expression\n * @param bytes to be converted\n */\n public static bytesToBase64(bytes: Uint8Array): string {\n return window.btoa(\n this.stringFromCodePoint(bytes));\n }\n\n private static encode(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n }\n\n private static stringFromCodePoint(bytes: Uint8Array): string {\n return String.fromCodePoint(...bytes);\n }\n}\n","export class ApDefined {\n public static async waitUntilDefinedAsync(\n object: T,\n functionName: keyof T,\n maxWaitTime: number = 2000,\n interval: number = 100\n ): Promise {\n const startTime = Date.now();\n\n while (typeof object[functionName] !== 'function') {\n if (Date.now() - startTime > maxWaitTime) {\n throw new Error(`Timeout: Function ${String(functionName)} not defined within ${maxWaitTime}ms`);\n }\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n }\n\n /**\n * Waiting until property or function is defined inside the object given maxWaitTime.\n * Error will be thrown if property/function is not defined within maxWaitTime.\n * @param object Object to check for property\n * @param propertyName name of the function\n * @param callback callback function to process when property is defined\n * @param maxWaitTime time to wait in milliseconds, 2000 by default\n * @param interval interval to check for property, by default 50\n */\n public static waitUntilDefined(\n object: T,\n propertyName: keyof T,\n callback: (error?: Error) => void,\n maxWaitTime: number = 2000,\n interval: number = 100\n ): void {\n const startTime = Date.now();\n\n const checkFunction = () => {\n if (typeof object[propertyName] !== 'undefined') {\n callback();\n } else if (Date.now() - startTime > maxWaitTime) {\n throw new Error(`Timeout: Property ${String(propertyName)} not defined within ${maxWaitTime}ms`);\n } else {\n setTimeout(checkFunction, interval);\n }\n };\n\n checkFunction();\n }\n}\n","import {APP_CONFIGURATION} from '../ap-core/config';\nimport {filter, pullAt, reduce, reverse, sortBy} from 'lodash';\n\nexport interface ITracerSet {\n callCount: number;\n avgTime: number;\n sumTime: number;\n}\n\nexport function Trace(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => any {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n if (!APP_CONFIGURATION.DebugMode) {\n return undefined;\n }\n\n // Ensure we have the descriptor that might been overridden by another decorator\n if (descriptor === undefined) {\n descriptor = Object.getOwnPropertyDescriptor(target, propertyKey);\n }\n\n const originalMethod = descriptor.value;\n // Redefine the method to this new method who will call the original method\n // Use the function's this context instead of the value of this when log is called (no arrow function)\n descriptor.value = function (...args: any[]): any {\n const source = this.constructor.__source ? this.constructor.__source + '_' : '';\n const uniqueName = `${source}${this.constructor.name}_${propertyKey}`;\n const startTime = window.performance.now();\n // Call the original method\n const result = originalMethod.apply(this, args);\n const endTime = window.performance.now();\n const timespan = endTime - startTime;\n if (timespan >= APP_CONFIGURATION.LongRunningFunctionFilter) {\n if (!trace.data[uniqueName]) {\n trace.data[uniqueName] = {\n callCount: 0,\n avgTime: 0,\n sumTime: 0,\n };\n }\n trace.data[uniqueName].callCount += 1;\n trace.data[uniqueName].sumTime += timespan;\n trace.data[uniqueName].avgTime = trace.data[uniqueName].sumTime / trace.data[uniqueName].callCount;\n }\n return result;\n };\n\n return descriptor;\n };\n}\n\nexport class ApplicationTracer {\n public data: { [key: string]: ITracerSet } = {};\n\n public getTraceForMethod(f: string): { [key: string]: ITracerSet } {\n const tmp = {};\n for (const key in this.data) {\n if (key.Contains(f)) {\n tmp[key] = this.data[key];\n }\n }\n return tmp;\n }\n\n public reset(): void {\n this.data = {};\n }\n\n public top10avgTime(): ITracerSet[] {\n return this._top10By('avgTime', ['callCount', 'sumTime']);\n }\n\n public top10sumTime(): ITracerSet[] {\n return this._top10By('sumTime', ['callCount', 'avgTime']);\n }\n\n public top10callCount(): ITracerSet[] {\n return this._top10By('callCount', ['avgTime', 'sumTime'], false);\n }\n\n private _top10By(valueKey: string, add: string[] = [], rev = true): ITracerSet[] {\n const sorted = sortBy(reduce(this.data, (current, val, key) => {\n const tmp = {key, [valueKey]: val[valueKey]};\n for (const propKey of add) {\n tmp[propKey] = val[propKey];\n }\n current.push(tmp);\n return current;\n }, []), (i) => i[valueKey]);\n const idxList = pullAt(sorted, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);\n return rev === true ? reverse(filter(idxList, (i) => !!i)) : filter(idxList, (i) => !!i);\n }\n}\n\n// register tracer in browser\nwindow['trace'] = new ApplicationTracer();\ndeclare global {\n const trace: ApplicationTracer;\n}\n","import {AfterContentInit, Component, EventEmitter, OnDestroy, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport * as moment from 'moment-timezone';\nimport {findIndex} from 'lodash';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {SelectionEvent} from '@progress/kendo-angular-grid';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {\n ApDynGridPagerWizardConfig,\n ApDynGridPagerWizardSection\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {\n ApDynGridButtonColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-button-column-config';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {MapViewMode} from '../../ap-interface/enums';\nimport {MachineStore} from '../../stores/docu/machine.store';\nimport {CampaignYearStore} from '../../stores/login/campaignyear.store';\nimport {MapViewStore} from '../../stores/layout/mapview.store';\nimport {ActionStore} from '../../stores/docu/action.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {filter, map} from 'rxjs/operators';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {LoginStore} from '../../stores/login/login.store';\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport ILanguage = Data.Language.ILanguage;\n\n/**\n * Component for the fleetmanagement\n */\n@Component({\n selector: 'ap-fleetmanagement',\n template: `\n \n \n `,\n})\n\nexport class ApFleetmanagementComponent implements OnInit, AfterContentInit, OnDestroy {\n public filter: string;\n public caption: string;\n public columns: ApDynGridColumnConfigBase[] = [];\n public machines: IMachine[] = [];\n public items: any[] = [];\n public pager: ApDynGridPagerConfigBase;\n public selected: any[];\n public selectedId;\n public locationsLoading$: Observable;\n public moment = moment;\n public language: ILanguage;\n\n private loadingByInterval$ = new BehaviorSubject(false);\n private subscriptions: Array = [];\n private machineInterval: number;\n private _onClick = new EventEmitter();\n\n constructor(private actionStore: ActionStore,\n private campaignYearStore: CampaignYearStore,\n private machineStore: MachineStore,\n private mapStore: MapStore,\n private mapViewStore: MapViewStore,\n private translationStore: TranslationStore,\n private dateService: ApDateService,\n private languageStore: LanguageStore) {\n this._onClick.subscribe(event => {\n if (this.selectedId === event['Id']) {\n this.selectedId = undefined;\n } else {\n this.selectedId = event['Id'];\n if (this.mapViewStore.getMapViewMode() === MapViewMode.HIDE) {\n this.mapViewStore.showMapView();\n }\n }\n this.actionStore.changeSelectedLocation([event['Id']]);\n });\n }\n\n /**\n * returns the number of unprocessed actions.\n */\n private static _getLastActivityTime(timeString: string): number {\n const time = moment.tz(timeString, 'utc').valueOf();\n const now = moment.utc().valueOf();\n const difference = now - time;\n if (difference < 300000) {\n return 1;\n }\n if (difference < 1800000) {\n return 0;\n }\n return -1;\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n this.getDataFromStore();\n }\n\n ngAfterContentInit(): void {\n this.gridBuilder();\n }\n\n /**\n * build overview grid\n */\n gridBuilder(): void {\n this.columns = [\n new ApDynGridStatusColumnConfig({\n field: 'Status',\n class: 'StatusClass',\n description: 'StatusDesc',\n filterable: true,\n sortDesc: true,\n sortIndex: 0,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Name', title: 'Docu_Ini__Engine', width: 130\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Sign', title: 'Docu_Ini__NumberPlate', width: 70\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Kind', title: 'Docu_Ini__Type', width: 130, filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'LastActivity', title: 'Docu_Last_Activity', width: 115, hide: true, format:\n `${this.language.DateFormat} ${this.language.TimeFormat}`\n }),\n new ApDynGridButtonColumnConfig({\n callback: this._onClick,\n imageUrl: APP_CONFIGURATION.ButtonZoomToMapImage,\n toggleable: true,\n selected: this.isItemSelected.bind(this),\n tooltip: 'Docu__Show_on_Map'\n })\n ];\n\n this.pager = new ApDynGridPagerWizardConfig(\n new ApDynGridPagerWizardSection(),\n new ApDynGridPagerWizardSection(),\n new ApDynGridPagerWizardSection()\n );\n }\n\n isItemSelected(item): boolean {\n return this.selectedId === item['Id'];\n }\n\n selectionChange(event: SelectionEvent): void {\n this.actionStore.changeSelectedLocation(event.selectedRows[0].dataItem);\n }\n\n /**\n * cleanup subscriptions\n */\n ngOnDestroy(): void {\n this.loadingByInterval$.next(false);\n this.subscriptions.forEach(d => {\n d.unsubscribe();\n });\n if (this.machineInterval) {\n clearInterval(this.machineInterval);\n }\n setTimeout(() => {\n this.mapStore.Layers.LocationsLayer.clear();\n }, 1);\n }\n\n /**\n * retrieves all data from the store\n */\n getDataFromStore(): void {\n this.language = this.languageStore.SelectedLanguage;\n this.subscriptions.push(this.campaignYearStore.Listen(s => s.selectedYear).subscribe(y => {\n if (y === null) {\n return;\n }\n clearInterval(this.machineInterval);\n setTimeout(() => {\n // Do all this stuff on top of the current stack.\n // This is needed to avoid conflicts with a possibly running interval.\n // Clearing the interval in advance only ensures that no new interval is started.\n this.loadingByInterval$.next(false);\n this.items = [];\n this.actionStore.loadLocations();\n this.machineInterval = setInterval( () => {\n // Whenever the interval passed we need to check if the previous load process\n // is finished already => if not we skip loading it again.\n if (!this.actionStore.LocationsLoading) {\n // During reloading the overview (with interval) we do not\n // want to have the loading indicator running everytime.\n // Therefore, we have this Subject to disable the loading indicator\n // when load was triggered by interval.\n this.loadingByInterval$.next(true);\n this.actionStore.loadLocations();\n }\n }, 5000);\n }, 0);\n }));\n\n // Show loading indicator only on intial load or when farm/campaignYear has been changed\n this.locationsLoading$ = combineLatest([\n this.actionStore.Listen(s => s.locationLoading),\n this.loadingByInterval$\n ]).pipe(\n map(([loading, loadingByInterval]) => loading && !loadingByInterval)\n );\n\n this.subscriptions.push(this.actionStore.Listen(s => s.selectedLocations).subscribe(d => {\n if (d == null) {\n return;\n }\n this.selected = d.map(f => f.Id.toString());\n }));\n\n this.subscriptions.push(this.machineStore.Listen(s => s.data).subscribe(m => {\n this.machines = m;\n }));\n\n this.subscriptions.push(\n combineLatest([\n this.actionStore.Listen(s => s.locations),\n this.actionStore.Listen(s => s.locationLoaded)\n ]).pipe(\n filter(([, locationsLoaded]) => locationsLoaded)\n ).subscribe(([locations]) => {\n if (locations == null) {\n this.items = [];\n return;\n }\n this.items = locations.map(l => {\n const machine = this.machines.find(m => m.Id === l.Id);\n const status = ApFleetmanagementComponent._getLastActivityTime(l.GpsDate + ' ' + l.GpsTime);\n const lastActivity = this.translationStore.FindTranslationForSelectedLanguage('Docu_Last_Activity');\n const minute = this.translationStore.FindTranslationForSelectedLanguage('Base__Minute_short');\n const and = this.translationStore.FindTranslationForSelectedLanguage('Base__and');\n const translations = [\n `${lastActivity} > 30 ${minute}`,\n `${lastActivity} > 5 ${minute} ${and} < 30 ${minute}`,\n `${lastActivity} < 5 ${minute}`\n ];\n let kind = '';\n if (machine) {\n const foundIndex = findIndex(this.machineStore.Listen(s => s.machineTypes).getValue(), ['Id', machine.Kind]);\n if (foundIndex !== -1) {\n kind = this.translationStore.FindTranslationForSelectedLanguage(\n this.machineStore.Listen(s => s.machineTypes).getValue()[foundIndex].Description);\n }\n }\n\n return {\n Id: l.Id,\n SourceItem: l,\n Status: status,\n StatusClass: status === 1 ? 'ap-status-green' : status === 0 ? 'ap-status-yellow' : 'ap-status-red',\n StatusDesc: translations[status + 1],\n Sign: machine ? machine.Sign : '',\n Kind: kind,\n LastActivity: this.dateService.toFarmDateFromUtcGetJsDate(l.GpsDate + ' ' + l.GpsTime)\n };\n });\n\n if (this.selectedId) {\n this.actionStore.changeSelectedLocation([this.selectedId]);\n }\n }));\n this.actionStore.changeSelectedLocation(this.selected.map(id => id));\n }\n}\n","import {ApDynformsConfigBase, ApDynformsControltype} from './ap-dynforms-config-base';\nimport {Observable} from 'rxjs';\nimport {ApUtilService} from '../../ap-utils/service/ap-util.service';\nimport {ApDynformsValidator} from '../ap-dynforms-validator';\nimport {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\n\nexport class ApDynformsConfigDateRange extends ApDynformsConfigBase<{ start: Date, end: Date }> {\n controlType = ApDynformsControltype.DateRange;\n dateCellDyer: (date: Date) => boolean;\n minDate$: Observable;\n maxDate$: Observable;\n format: string;\n labelStart: string;\n labelEnd: string;\n\n constructor(options: {\n value?: { start: Date, end: Date },\n value$?: Observable<{ start: Date, end: Date }>,\n key?: string,\n labelStart?: string,\n labelEnd?: string,\n disabled?: boolean,\n disabled$?: Observable,\n minDate?: Date | Observable,\n maxDate?: Date | Observable,\n format?: string,\n dateCellDyer?: (date: Date) => boolean,\n dependsOn?: string[],\n formErrors?: string[],\n validators?: ApDynformsValidator[],\n asyncValidators?: ApDynformsValidator[],\n cssClass?: string,\n }) {\n super(options);\n this.dateCellDyer = options.dateCellDyer ? options.dateCellDyer : () => false;\n this.minDate$ = ApUtilService.asObservable(options.minDate);\n this.maxDate$ = ApUtilService.asObservable(options.maxDate);\n this.format = options.format || '';\n this.labelStart = options.labelStart;\n this.labelEnd = options.labelEnd;\n if (this.value === undefined) {\n this.value = {\n start: null,\n end: null\n };\n }\n }\n}\n\n","import {AbstractControl, AsyncValidatorFn, ValidationErrors} from '@angular/forms';\nimport {Observable} from 'rxjs';\n\nexport class ApFormValidators {\n static controlEnabled(key: string): AsyncValidatorFn {\n return (control: AbstractControl): Promise | Observable => {\n return new Promise((resolve, reject) => {\n const ctrl = control.get(key);\n if (!ctrl) {\n reject();\n }\n setTimeout(() => resolve(control.status === 'DISABLED' ? {controlEnabled: true} : null), 0);\n });\n };\n }\n}\n","import {Injectable} from '@angular/core';\nimport * as moment from 'moment';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {ApLegendScrollerService} from '../../map/components/layer-controller/ap-legend-scroller.service';\nimport ISlice = Data.DocuContext.Slice.ISlice;\nimport IFleetActionAttachment = Data.DocuContext.FleetManagement.IFleetActionAttachment;\nimport IGuid = System.IGuid;\n\nexport interface ISelectedSlice {\n id: string;\n machineId: string;\n machineKind: number;\n fieldId: string;\n from: string;\n to: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TrackLoaderService {\n public selectedSlices: ISelectedSlice[] = [];\n\n constructor(private dateService: ApDateService,\n private mapStore: MapStore,\n private legendScrollerService: ApLegendScrollerService,\n private settingsStore: SettingsStore) {\n }\n\n public clear(): void {\n this.selectedSlices = [];\n }\n\n public loadBySelectedSlice(selection: ISelectedSlice, farmId: number): void {\n if (!selection) {\n return;\n }\n this.load(selection.id, farmId, selection.from, selection.to, selection.machineId, selection.machineKind, selection.fieldId);\n }\n\n public loadBySlice(item: ISlice): void {\n if (!item) {\n return;\n }\n let from = item.From;\n let to = item.To;\n if (typeof item.From === typeof '') {\n from = new Date(item.From);\n }\n if (typeof item.To === typeof '') {\n to = new Date(item.To);\n }\n\n // show tracks for the exact slice period:\n const fromExpr = moment(from).format('YYYY-MM-DDTHH:mm:ss');\n const toExpr = moment(to).format('YYYY-MM-DDTHH:mm:ss');\n const machineId = item?.Attachment?.Machine?.Id;\n const machineKind = item?.Attachment?.Machine?.Kind;\n this.load(item.Id, item.FarmId, fromExpr, toExpr, machineId, machineKind);\n }\n\n public loadByFleetAction(item: IFleetActionAttachment): void {\n const firstSlice = item?.Slices.FirstOrDefault();\n const lastSlice = item?.Slices.LastOrDefault();\n if (!firstSlice || !lastSlice) {\n console.warn(`missing first or last slice in measure ${item?.Id}`);\n return;\n }\n\n let from = firstSlice.From;\n let to = lastSlice.To;\n if (typeof firstSlice.From === typeof '') {\n from = new Date(firstSlice.From);\n }\n if (typeof lastSlice.To === typeof '') {\n to = new Date(lastSlice.To);\n }\n\n // show tracks for the exact slice/attachment period.\n // otherwise we might get wrong slices due to UTC conversion\n const fromExpr = moment(from).format('YYYY-MM-DDTHH:mm:ss');\n const toExpr = moment(to).format('YYYY-MM-DDTHH:mm:ss');\n const machineId = item?.Attachment?.Machine?.Id;\n const machineKind = item?.Attachment?.Machine?.Kind;\n this.load(item.Id, firstSlice.FarmId, fromExpr, toExpr, machineId, machineKind, item.FieldId);\n }\n\n public removeUnreferencedIds(ids: IGuid[], farmId: number): void {\n this.selectedSlices = this.selectedSlices.RemoveAll(_ => !ids.Contains(_.id));\n this.setTrackUrl(farmId);\n }\n\n private load(id: IGuid, farmId: number, from: string, to: string, machineId: IGuid, machineKind: number, fieldId?: IGuid): void {\n if (!machineId || !machineKind || !from || !to) {\n console.warn(`no Machine Attachment`);\n return;\n }\n if (this.selectedSlices.Find(_ => _?.id === id?.toString())) {\n this.selectedSlices.RemoveAll(_ => _?.id === id?.toString());\n } else {\n this.selectedSlices.Add({\n id: id.toString(),\n fieldId: null,\n machineId: machineId.toString(),\n machineKind,\n from,\n to\n });\n }\n\n this.initLegend(machineKind);\n this.setTrackUrl(farmId);\n }\n\n private initLegend(machineKind: number): void {\n // set Legend selector\n if (this.mapStore.Legends?.TrackLegend?.selectionLists && this.mapStore.Legends?.TrackLegend?.selectionLists.length > 0) {\n const kindSelector = this.mapStore.Legends.TrackLegend.selectionLists.FirstOrDefault();\n const kindSelection = (kindSelector.values as any[]).Find(_ => _?.value === machineKind?.toString());\n if (kindSelection) {\n kindSelector.selectedValue.next(kindSelection);\n this.legendScrollerService.selectionChange.emit({\n legend: this.mapStore.Legends.TrackLegend,\n selectionKeys: this.legendScrollerService.generateSelectionKey(this.mapStore.Legends.TrackLegend).Split('_'),\n });\n } else {\n console.warn(`machine kind ${machineKind} no in Legend Selector`);\n }\n }\n }\n\n private setTrackUrl(farmId: number): void {\n this.mapStore.Layers.ChangeMapFactoryLayerUrlTrack(farmId, this.selectedSlices.Convert(_ => ({\n ..._,\n id: undefined,\n })), (store, sourceUrl) => store.Mutate(s => s.layer.trackUrl, () => sourceUrl));\n }\n}\n","import {AfterContentInit, AfterViewInit, Component, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {isDate} from 'lodash';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridButtonColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-button-column-config';\nimport {\n APP_CONFIGURATION\n} from '../../ap-core/config';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {\n ApDynGridPagerWizardButton,\n ApDynGridPagerWizardConfig,\n ApDynGridPagerWizardSection\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {\n MachineStore\n} from '../../stores/docu/machine.store';\nimport {\n SettingsStore\n} from '../../stores/base-data/settings.store';\nimport {\n MachineBreaksStore\n} from '../../stores/docu/machine.breaks.store';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {\n MapViewStore\n} from '../../stores/layout/mapview.store';\nimport {\n GeoJsonStore\n} from '../../stores/docu/geojson.store';\nimport {\n SliceStore\n} from '../../stores/docu/slice.store';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {\n MapStore\n} from '../../stores/map/map.store';\nimport {\n LoginStore\n} from '../../stores/login/login.store';\nimport {\n ApDynformsConfigDateRange\n} from '../../ap-dynforms/config/ap-dynforms-config-date-range';\nimport {delay, distinctUntilChanged, filter, map} from 'rxjs/operators';\nimport {\n ApFormValidators\n} from '../../ap-dynforms/validators/ap-form-validators';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n ApDateService\n} from '../../ap-core/services/ap-date-service';\nimport {\n TrackLoaderService\n} from '../services/track.loader.service';\nimport {\n IGridData,\n MapViewMode\n} from '../../ap-interface';\nimport {\n ApDocuUtils\n} from '../utils/ap-docu-utils';\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport ISlice = Data.DocuContext.Slice.ISlice;\nimport ICombinedSlice = Data.DocuContext.Slice.ICombinedSlice;\nimport ILanguage = Data.Language.ILanguage;\n\ninterface ICombinedSliceGridData extends IGridData {\n From: Date;\n To: Date;\n Duration: string;\n StandstillTime: string;\n MovementTime: string;\n}\n\n@Component({\n selector: 'ap-action-lookup',\n template: `\n \n
\n \n
\n
`,\n})\nexport class ApActionLookupComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true}) dynComponent: ApDynComponentComponent;\n days: number[];\n dateFrom;\n dateTo;\n minDate: Date = new Date('1900-01-01');\n maxDate: Date = new Date('2099-12-31');\n language: ILanguage;\n columns: ApDynGridColumnConfigBase[] = [];\n fieldsets: ApDynformsConfigFieldset[] = [];\n items: ICombinedSliceGridData[] = [];\n loading$: Observable;\n pager: ApDynGridPagerConfigBase;\n onBack = new EventEmitter();\n disableNext$ = new BehaviorSubject(true);\n formValidators = [\n new ApDynformsValidator({validator: ApFormValidators.controlEnabled('Date_Start')}),\n new ApDynformsValidator({validator: ApFormValidators.controlEnabled('Date_End')}),\n ];\n\n private subscriptions: Array = [];\n private formSubscriptions: Array = [];\n private selectedSlices: { id: string, machineId: string, from: string, to: string }[] = [];\n\n private machine: IMachine;\n private machines = new BehaviorSubject([]);\n private formMinDate = new BehaviorSubject(this.minDate);\n private formMaxDate = new BehaviorSubject(this.maxDate);\n private mapClick = new EventEmitter();\n\n constructor(private fb: FormBuilder,\n private campaignYearStore: CampaignYearStore,\n private loginStore: LoginStore,\n private geoJsonStore: GeoJsonStore,\n private machineBreaksStore: MachineBreaksStore,\n private machinesStore: MachineStore,\n private mapStore: MapStore,\n private mapViewStore: MapViewStore,\n private settingsStore: SettingsStore,\n private sliceStore: SliceStore,\n private languageStore: LanguageStore,\n private dateService: ApDateService,\n private trackLoaderService: TrackLoaderService) {\n }\n\n ngOnInit(): void {\n this.getDataFromStore();\n this.days = [];\n }\n\n ngAfterContentInit(): void {\n this.subscribeToEvents();\n this.formBuilder();\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.push(this.dynComponent.Valid$.pipe(delay(1)).subscribe((valid) => this.disableNext$.next(!valid)));\n this.subscribeToFormControls();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(d => {\n d.unsubscribe();\n });\n this.formSubscriptions.forEach(d => {\n d.unsubscribe();\n });\n this.mapStore.Layers.Clear();\n this.trackLoaderService.clear();\n }\n\n getDataFromStore(): void {\n this.loading$ = this.sliceStore.Listen(s => s.loading);\n\n this.subscriptions.push(this.sliceStore.Listen(s => s.combinedSlices).subscribe(slices => {\n this.items = slices.map(slice => {\n return {\n Id: slice.Id,\n SourceItem: slice,\n From: this.dateService.toJsDate(this.dateService.toFarmDateFromUtc(new Date(slice.From))),\n To: this.dateService.toJsDate(this.dateService.toFarmDateFromUtc(new Date(slice.To))),\n Duration: ApDocuUtils.formatDuration(slice.Duration * 1000),\n StandstillTime: ApDocuUtils.formatDuration(slice.StandstillTime * 1000),\n MovementTime: ApDocuUtils.formatDuration(slice.MovementTime * 1000)\n };\n }\n );\n }));\n\n this.subscriptions.push(this.machinesStore.Listen(s => s.data).subscribe(machines => {\n this.machines.next(machines);\n }));\n\n this.subscriptions.push(this.machinesStore.Listen(s => s.days).subscribe(d => {\n if (!d) {\n return;\n }\n this.days = [];\n d.forEach(day => {\n this.days.push(new Date(Date.parse(day)).valueOf());\n });\n }));\n\n this.subscriptions.push(this.loginStore.SelectedFarm$.subscribe(() => {\n this.machine = undefined;\n this.dateFrom = undefined;\n this.dateTo = undefined;\n const form = this.dynComponent.getForm();\n let markUntouched = false;\n if (form && this.fieldsets[0]) {\n const machineControl = form.get(this.fieldsets[0].key);\n if (machineControl) {\n machineControl.setValue(null);\n }\n markUntouched = true;\n }\n if (form && this.fieldsets[2]) {\n const dateStartControl = form.get(`${this.fieldsets[2].key}_Start`);\n const dateEndControl = form.get(`${this.fieldsets[2].key}_End`);\n if (dateStartControl && dateEndControl) {\n dateStartControl.setValue(null);\n dateEndControl.setValue(null);\n }\n markUntouched = true;\n }\n if (markUntouched) {\n form.markAsUntouched();\n }\n if (this.columns.length) {\n this.onBackClick();\n }\n }));\n\n this.subscriptions.push(this.campaignYearStore.Listen(s => s.selectedYear).subscribe(y => {\n if (y === null) {\n return;\n }\n // reset min/max on dateRangeControl to avoid invalid min/max combinations\n // from previous values (e.g. when user comes from an old camapign year)\n this.formMinDate.next(undefined);\n this.formMaxDate.next(undefined);\n this.minDate = isDate(y.DefaultStart) ? y.DefaultStart : new Date(y.DefaultStart);\n this.maxDate = isDate(y.DefaultEnd) ? y.DefaultEnd : new Date(y.DefaultEnd);\n this.dateFrom = null;\n this.dateTo = null;\n if (this.minDate && this.maxDate && this.maxDate > this.minDate) {\n this.formMinDate.next(this.minDate);\n this.formMaxDate.next(this.maxDate);\n }\n this.loadDayList();\n }));\n }\n\n subscribeToEvents(): void {\n this.mapClick.subscribe(item => {\n this._showTrackOnMap(item);\n });\n this.onBack.subscribe(() => {\n this.onBackClick();\n });\n this.subscriptions.Add(this.mapStore.Layers.TrackLayer.onExtentLoadFinish.subscribe(() => {\n this.mapStore.Layers.TrackLayer.zoomToExtent();\n }));\n }\n\n subscribeToFormControls(): void {\n this.formSubscriptions.forEach(d => {\n d.unsubscribe();\n });\n this.formSubscriptions.push(this.dynComponent.FormValues$.pipe(\n map((values) => values['Machine'] as IMachine),\n distinctUntilChanged((a, b) => ObjectFactory.Equal(a, b)),\n filter((machine) => !!machine),\n ).subscribe(\n (machine) => {\n this.machine = machine;\n this.loadDayList();\n }\n ));\n }\n\n formBuilder(): void {\n this.languageStore.SelectedLanguage$.subscribe(language => {\n this.fieldsets = [\n new ApDynformsConfigFieldset({\n key: 'actionLookup',\n config: [\n new ApDynformsConfigComboBox({\n key: 'Machine',\n options: this.machines,\n textField: 'NameWithSign',\n valuePrimitive: false,\n valueField: 'Id',\n value: this.machine || null,\n label: 'Docu_Pages__Engine',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: ''}),\n ]\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigDateRange({\n key: 'Date',\n disabled$: this.machinesStore.Listen(s => s.days).pipe(map((d) => d.length === 0)),\n format: language.DateFormat,\n dateCellDyer: this.isInUse.bind(this),\n value: {start: this.dateFrom, end: this.dateTo},\n labelStart: 'Docu_Ini__From',\n labelEnd: 'Docu_Ini__To',\n minDate: this.formMinDate,\n maxDate: this.formMaxDate,\n dependsOn: [\n 'Machine',\n ],\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: ''}),\n ]\n })\n ]\n })\n ];\n });\n }\n\n gridBuilder(): void {\n this.languageStore.SelectedLanguage$.subscribe(language => {\n this.columns = [\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Docu_Ini__From',\n field: 'From',\n format: `${language.DateFormat} HH:mm`,\n width: 150\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Docu_Ini__To',\n field: 'To',\n format: `${language.DateFormat} HH:mm`,\n width: 150\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Docu_Data__Action',\n field: 'MovementTime',\n width: 100\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Docu_MachineAction__StandStill',\n field: 'StandstillTime',\n width: 100\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Docu_Ini__Engine',\n field: 'SourceItem.Attachment.Machine.NameWithSign'\n }),\n new ApDynGridButtonColumnConfig(\n {\n callback: this.mapClick,\n imageUrl: APP_CONFIGURATION.ButtonZoomToMapImage,\n selected: this._isItemSelected.bind(this),\n tooltip: 'Settings__Msg_Loading_Track_Button'\n })\n ];\n });\n\n this.pager = new ApDynGridPagerWizardConfig(\n new ApDynGridPagerWizardButton('Global_Back_With_Arrow', this.onBack),\n new ApDynGridPagerWizardSection(),\n new ApDynGridPagerWizardSection()\n );\n }\n\n loadDayList(): void {\n if (this.machine) {\n this.machinesStore.getDaysInUse(this.machine, this.minDate, this.maxDate);\n }\n }\n\n isInUse(day: Date): boolean {\n return this.days.indexOf(day.valueOf()) !== -1;\n }\n\n onSubmitClick(): void {\n const value = this.dynComponent.getForm().value;\n this.dateFrom = value['Date_Start'];\n this.dateTo = value['Date_End'];\n const from = this.dateService.toUtc(this.dateFrom).format('YYYY-MM-DD HH:mm:ss');\n const to = this.dateService.toUtc(this.dateTo).add({\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 999\n }).format('YYYY-MM-DD HH:mm:ss');\n\n this.sliceStore.loadSlicesCombinedByMachineAndDate(this.machine, from, to);\n this.gridBuilder();\n this.fieldsets = [];\n }\n\n onBackClick(): void {\n this.items?.forEach(_ => {\n // remove slices from map:\n if (this.trackLoaderService.selectedSlices.Find(s => s?.id === _?.Id?.toString())) {\n this._showTrackOnMap(_); // removes slice when it is displayed already\n }\n });\n this.columns = [];\n this.formBuilder();\n this.mapStore.Layers.TrackLayer.clear();\n setTimeout(() => this.subscribeToFormControls(), 1);\n }\n\n private _isItemSelected(dataItem: any): boolean {\n const slice = dataItem['SourceItem'] as ISlice;\n return !!this.trackLoaderService.selectedSlices.Find(_ => _?.id === slice?.Id?.toString());\n }\n\n private _showTrackOnMap(dataItem): void {\n this.trackLoaderService.loadBySlice(dataItem['SourceItem'] as ISlice);\n if (this.mapViewStore.getMapViewMode() === MapViewMode.HIDE && this.trackLoaderService.selectedSlices.Any()) {\n this.mapViewStore.showMapView();\n }\n }\n}\n","import {IWizardProperties} from '../ap-interface/interfaces';\nimport {map, tap} from 'rxjs/operators';\nimport {get} from 'lodash';\nimport {FormGroup} from '@angular/forms';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {IGridPagerSubmitData} from '../ap-dyngrids/config/ap-dyn-grid-pager-config';\nimport {ApDocuUtils} from '../docu/utils/ap-docu-utils';\nimport {FleetActionAttachmentStore} from '../stores/docu/fleet.action.attachment.store';\nimport {TranslationStore} from '../stores/translation/translation.store';\nimport IFleetActionAttachment = Data.DocuContext.FleetManagement.IFleetActionAttachment;\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IAttachmentApplication = Data.DocuContext.Attachment.IAttachmentApplication;\nimport {ObjectFactory} from 'ts-tooling';\nimport {ApGuidUtil} from '../ap-utils';\n\nexport class ApBookingUtils {\n static checkInvalid(dataItem): boolean {\n const sourceItem: IFleetActionAttachment = dataItem['SourceItem'];\n return !sourceItem.Attachment.Instrument || !sourceItem.Attachment.WorkType;\n }\n\n static disableAccept(properties: IWizardProperties): boolean {\n return properties.selectedItems.some(item => ApBookingUtils.checkInvalid(item));\n }\n\n static disableApplications(form: FormGroup,\n instrument: string,\n unitSubject: BehaviorSubject<{ value: string, text: string }[]>,\n translationStore: TranslationStore): Observable {\n return form.valueChanges.pipe(\n map(f => ApBookingUtils._getInstrumentDefaultWorkType(get(f, instrument))),\n map(wt => ({w: wt, u: wt ? translationStore.FindTranslationForSelectedLanguage(wt.Wt_Unit) : ''})),\n tap(wt => unitSubject.next(\n wt.w ? wt.w.Unit.map(u => ({value: u, text: `${u} / ${wt.u}`})) : [])),\n map(wt => !wt.w || wt.w.Unit.length === 0));\n }\n\n static saveFleetActionAttachment(data: IGridPagerSubmitData,\n fleetActionAttachmentStore: FleetActionAttachmentStore): void {\n if (!data.form) {\n return;\n }\n\n const fleetActionAttachments: IFleetActionAttachment[] =\n ObjectFactory.Copy(data).items.map(i => {\n let worktype: IWorktypes;\n const fleetActionAttachment: IFleetActionAttachment = i['SourceItem'];\n const driver = data.form.get('SourceItem.Attachment.Driver');\n if (driver) {\n const value: IDriver = driver.value;\n if (value) {\n if (value.Id === ApGuidUtil.getEmptyGuid()) {\n fleetActionAttachment.Attachment.Driver = null;\n } else {\n fleetActionAttachment.Attachment.Driver = value;\n }\n }\n }\n const instrument = data.form.get('SourceItem.Attachment.Instrument');\n if (instrument) {\n const value: IInstrument = instrument.value;\n if (value) {\n if (value.Id === ApGuidUtil.getEmptyGuid()) {\n fleetActionAttachment.Attachment.Instrument = null;\n fleetActionAttachment.Attachment.WorkType = null;\n fleetActionAttachment.Attachment.WorkingWidth = null;\n fleetActionAttachment.Attachment.Application = [];\n } else {\n fleetActionAttachment.Attachment.Instrument = value;\n fleetActionAttachment.Attachment.WorkType = value.DefaultWorktype;\n fleetActionAttachment.Attachment.WorkingWidth = value.DefaultWidth;\n if (!value.DefaultWorktype.Unit.length) {\n fleetActionAttachment.Attachment.Application = [];\n }\n worktype = value.DefaultWorktype;\n }\n }\n }\n\n const applications = data.form.get('SourceItem.Attachment.Application');\n if (applications && worktype) {\n const values: IAttachmentApplication[] = applications.value;\n if (values) {\n fleetActionAttachment.Attachment.Application = [];\n const validValues = values.filter(v => v.Key && v.Value > 0 && worktype.Unit.indexOf(v.Unit) !== -1);\n for (const application of validValues) {\n if (application.Key) {\n fleetActionAttachment.Attachment.Application.push(application);\n }\n }\n }\n }\n\n const comment = data.form.get('SourceItem.Attachment.Comment');\n if (comment) {\n fleetActionAttachment.Attachment.Comment = comment.value;\n } else if (fleetActionAttachment.Attachment.Comment === null) {\n fleetActionAttachment.Attachment.Comment = '';\n }\n\n if (fleetActionAttachment.Attachment.IsModified && fleetActionAttachment.Attachment.Valid &&\n (!fleetActionAttachment.Attachment.Instrument || !fleetActionAttachment.Attachment.WorkType)) {\n fleetActionAttachment.Attachment.IsModified = false;\n\n }\n\n return fleetActionAttachment;\n });\n\n fleetActionAttachmentStore.saveFleetActionAttachments(fleetActionAttachments);\n }\n\n private static _getInstrumentDefaultWorkType(instrument: IInstrument): IWorktypes | null {\n return instrument ? instrument.DefaultWorktype : null;\n }\n}\n","import {ApDynformsConfigBase} from './ap-dynforms-config-base';\nimport {chunk} from 'lodash';\n\nexport class ApDynformsConfigArray {\n columns: number;\n key: string;\n legend: string;\n label: string;\n min: number;\n max: number;\n validate: (x) => boolean;\n extendOn: (x) => boolean;\n config: ApDynformsConfigBase[];\n configChunk: ApDynformsConfigBase[][];\n\n constructor(options: {\n legend?: string,\n columns?: number,\n label?: string,\n key?: string,\n config?: ApDynformsConfigBase[],\n min?: number,\n max?: number,\n validate?: (x) => boolean,\n extendOn?: (x) => boolean\n } = {}) {\n this.key = options.key;\n this.legend = options.legend;\n this.label = options.label;\n this.min = Math.min(Math.max(options.min, 0), Math.max(options.max, 0));\n this.max = Math.max(Math.max(options.min, 0), Math.max(options.max, 0));\n this.columns = options.columns;\n this.config = options.config;\n this.configChunk = chunk(options.config, this.columns);\n this.validate = options.validate;\n this.extendOn = options.extendOn ? options.extendOn : options.validate;\n }\n}\n","import {AbstractControl, AsyncValidatorFn, ValidationErrors} from '@angular/forms';\nimport {combineLatest, Observable} from 'rxjs';\nimport {INVALID_ID} from './ap-validator';\nimport {map} from 'rxjs/operators';\nimport {ApGuidUtil} from '../../ap-utils';\nimport IDateRange = Data.BaseData.IDateRange;\nimport IDateRangeAssigment = Data.BaseData.IDateRangeAssigment;\n\nexport class ApDatesOverlapValidator {\n private static _validate(current: IDateRange, next: IDateRange): { [key: string]: boolean } | null {\n if (current.Id !== next.Id) {\n if (\n (current.Start < next.Start && next.Start < current.End) ||\n (current.Start < next.End && next.End < current.End) ||\n (next.Start < current.Start && current.Start < next.End) ||\n (next.Start < current.End && current.End < next.End)) {\n const errorObject = {};\n errorObject[`${INVALID_ID}${current.Id}`] = true;\n errorObject[`${INVALID_ID}${next.Id}`] = true;\n return errorObject;\n }\n }\n return null;\n }\n\n static overlapCompare(current: Observable, next: Observable): AsyncValidatorFn {\n return (control: AbstractControl): Promise | Observable => {\n return combineLatest([current, next]).pipe(\n map(([assignments, dateRanges]) => {\n if (control.value && control.value.Id !== ApGuidUtil.getEmptyGuid() && assignments) {\n const assignment = assignments.find(a => a.Id === control.value.Id);\n let errorObject = {};\n if (assignment) {\n for (const c of assignment.DateRanges) {\n for (const n of dateRanges) {\n const validate = this._validate(c, n);\n if (validate) {\n errorObject = {...errorObject, ...validate};\n }\n }\n }\n }\n if (Object.keys(errorObject).length !== 0) {\n return errorObject;\n }\n }\n return null;\n }));\n };\n }\n\n static overlap(dateRanges$: Observable): AsyncValidatorFn {\n return (control: AbstractControl): Promise | Observable => {\n return dateRanges$.pipe(\n map((dateRanges) => {\n if (control.value && control.value.Id !== ApGuidUtil.getEmptyGuid()) {\n let errorObject = {};\n for (let i = 0; i < dateRanges.length; ++i) {\n for (let j = 0; j < i; ++j) {\n const validate = this._validate(dateRanges[i], dateRanges[j]);\n if (validate) {\n errorObject = {...errorObject, ...validate};\n }\n }\n }\n if (Object.keys(errorObject).length !== 0) {\n return errorObject;\n }\n }\n return null;\n }));\n };\n }\n}\n","import {AfterContentInit, Component, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {ApDocuUtils} from '../../docu/utils/ap-docu-utils';\nimport {BehaviorSubject, combineLatest, Observable, Subject, Subscription} from 'rxjs';\nimport {ApGuidUtil, GetRoundNumericPipe} from '../../ap-utils';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridPagerConfig,\n IDynGridWizardChoiceData,\n IGridPagerSubmitData,\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config';\nimport {\n ApDynGridEditColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-edit-column-config';\nimport {\n ApEditActionComponent\n} from '../../entry-components/ap-docu-entry-components/ap-edit-action.component';\nimport {ApGridPagerType, ApVisibleStates, IApPermissionData, MapViewMode} from '../../ap-interface';\nimport {\n ApDynGridButtonColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-button-column-config';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {filter, map} from 'rxjs/operators';\nimport {\n ApDynGridStatusSwitchColumnConfig,\n IStateChange\n} from '../../ap-dyngrids/config/ap-dyn-grid-status-switch-column.config';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApBookingUtils} from '../ap-booking-utils';\nimport {\n ApDynformsConfigTabs\n} from '../../ap-dynforms/config/ap-dynforms-config-tabs';\nimport {\n ApDynformsConfigArray\n} from '../../ap-dynforms/config/ap-dynforms-config-array';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDatesOverlapValidator\n} from '../../ap-dynforms/validators/ap-dates-overlap-validator';\nimport {MachineStore} from '../../stores/docu/machine.store';\nimport {DriverStore} from '../../stores/docu/driver.store';\nimport {\n InstrumentStore\n} from '../../stores/docu/instrument.store';\nimport {\n SettingsStore\n} from '../../stores/base-data/settings.store';\nimport {ApPermissions} from 'invoker-transport';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {FormGroup} from '@angular/forms';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {\n MapViewStore\n} from '../../stores/layout/mapview.store';\nimport {\n FleetActionAttachmentStore\n} from '../../stores/docu/fleet.action.attachment.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n ApDateService\n} from '../../ap-core/services/ap-date-service';\nimport {\n TrackLoaderService\n} from '../../docu/services/track.loader.service';\nimport {MapStore} from '../../stores/map/map.store';\nimport {\n GetRoundNumericService\n} from '../../ap-utils/service/get-round-numeric.service';\nimport {LoginStore} from '../../stores/login/login.store';\nimport * as moment from 'moment-timezone';\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IFleetActionAttachment = Data.DocuContext.FleetManagement.IFleetActionAttachment;\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport ISettings = Data.BaseData.ISettings;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport IDateRange = Data.BaseData.IDateRange;\n\n@Component({\n selector: 'ap-booking',\n template: `\n \n `\n})\nexport class ApBookingComponent implements OnInit, AfterContentInit, OnDestroy {\n @ViewChild('component', {static: true}) dynComponent: ApDynComponentComponent;\n\n loading$: Observable;\n errorKeys = [];\n columns: ApDynGridColumnConfigBase[] = [];\n items: any[] = [];\n pager: ApDynGridPagerConfigBase;\n apPermissionData: IApPermissionData;\n ApPermissions = ApPermissions;\n\n private _applicationUnitSubject = new BehaviorSubject<{ value: string, text: string }[]>([]);\n private _driversEdit: any[] = [];\n private _errorKeySubjects: Subject[] = [];\n private _instrumentsEdit: IInstrument[] = [];\n private _hideOnClose = false;\n private _listMassEditing: Array = [];\n private _mapViewMode: MapViewMode;\n private _removeTimeout;\n private _settings: ISettings;\n private _subscriptions: Subscription[] = [];\n private _selectedDateRanges$: Observable;\n\n constructor(private campaignYearStore: CampaignYearStore,\n private dateService: ApDateService,\n private driverStore: DriverStore,\n private fieldStore: FieldStore,\n private fleetActionAttachmentStore: FleetActionAttachmentStore,\n private formStore: FormStore,\n private instrumentStore: InstrumentStore,\n private machineStore: MachineStore,\n private mapViewStore: MapViewStore,\n private mapStore: MapStore,\n private roundNumericPipe: GetRoundNumericPipe,\n private roundNumericService: GetRoundNumericService,\n private settingsStore: SettingsStore,\n private translationStore: TranslationStore,\n private languageStore: LanguageStore,\n private trackLoaderService: TrackLoaderService,\n private loginStore: LoginStore) {\n }\n\n ngOnInit(): void {\n this._getDataFromStore();\n this._subscriptions.Add(this.mapStore.Layers.TrackLayer.onExtentLoadFinish.subscribe(() => {\n this.mapStore.Layers.TrackLayer.zoomToExtent();\n }));\n combineLatest([\n this.formStore.Listen(s => s.update),\n this.loginStore.SelectedFarm$,\n ]).pipe(\n filter(s => s[0] === ApVisibleStates.OUT && !!s[1])\n ).subscribe(s => {\n this.trackLoaderService.loadBySelectedSlice(this.trackLoaderService.selectedSlices.FirstOrDefault(), s[1].Id);\n });\n }\n\n ngAfterContentInit(): void {\n setTimeout(() => this.mapViewStore.hideMapView(), 0);\n this._selectedDateRanges$ = this.dynComponent.SelectedItems$.pipe(\n map(items => items.map(item => {\n const fleetActionAttachment = item['SourceItem'] as IFleetActionAttachment;\n return {\n Id: fleetActionAttachment.Id,\n Start: fleetActionAttachment.Attachment.From,\n End: fleetActionAttachment.Attachment.To\n } as IDateRange;\n }))\n );\n\n this._fillWizard();\n this._gridBuilder();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n this.trackLoaderService.clear();\n this.mapStore.Layers.Clear();\n }\n\n onCreate(): void {\n this.formStore.openForm({component: ApEditActionComponent, data: null});\n }\n\n /**\n * on edit event\n */\n onEdit(event: any): void {\n if (this._mapViewMode !== MapViewMode.NORMAL) {\n this.mapViewStore.showMapView();\n }\n this.trackLoaderService.clear();\n this.trackLoaderService.loadByFleetAction(event.SourceItem);\n setTimeout(() => this.formStore.openForm(\n {component: ApEditActionComponent, data: event.SourceItem}), 200);\n }\n\n private _createEventEmitter(generatorOrNext): EventEmitter {\n const eventEmitter = new EventEmitter();\n this._subscriptions.push(eventEmitter.subscribe(generatorOrNext));\n return eventEmitter;\n }\n\n private _fillWizard(): void {\n this._listMassEditing = [\n {\n id: 0,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Edit'),\n type: ApGridPagerType.None,\n values: [],\n onSubmit: this._createEventEmitter(this._saveFleetActionAttachment.bind(this)),\n formConfig: [\n new ApDynformsConfigTabs({\n title: 'Settings__Lbl_Menu_Resources',\n selected: true,\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: 'booking1',\n config: [\n new ApDynformsConfigComboBox({\n label: 'Docu_Ini__Tool',\n key: 'SourceItem.Attachment.Instrument',\n textField: 'Name',\n options: this._instrumentsEdit,\n valueField: 'Id',\n valuePrimitive: false,\n value: null,\n sort: 1,\n asyncValidators: [\n new ApDynformsValidator({\n validator: ApDatesOverlapValidator.overlapCompare(\n this.fleetActionAttachmentStore.Listen(s => s.instrumentDateRageAssignments),\n this._selectedDateRanges$,\n ),\n errorKey: 'Docu__Vali_Msg_DateRange_Overlap_Selected',\n invalidIds: this._getErrorKeySubject(),\n }),\n new ApDynformsValidator({\n validator: ApDatesOverlapValidator.overlap(this._selectedDateRanges$),\n errorKey: 'Docu__Vali_Msg_DateRange_Overlap_Selected',\n invalidIds: this._getErrorKeySubject(),\n })\n ],\n listenUpdate: [\n this.fleetActionAttachmentStore.Listen(s => s.instrumentDateRageAssignments),\n this._selectedDateRanges$\n ]\n }),\n new ApDynformsConfigComboBox({\n key: 'SourceItem.Attachment.Driver',\n label: 'Docu_Ini__Motorist',\n textField: 'FullName',\n options: this._driversEdit,\n valueField: 'Id',\n valuePrimitive: false,\n value: null,\n sort: 1,\n asyncValidators: [\n new ApDynformsValidator({\n validator: ApDatesOverlapValidator.overlapCompare(\n this.fleetActionAttachmentStore.Listen(s => s.driverDateRangeAssignments),\n this._selectedDateRanges$,\n ),\n errorKey: 'Docu__Vali_Msg_DateRange_Overlap_Selected',\n invalidIds: this._getErrorKeySubject(),\n }),\n new ApDynformsValidator({\n validator: ApDatesOverlapValidator.overlap(this._selectedDateRanges$),\n errorKey: 'Docu__Vali_Msg_DateRange_Overlap_Selected',\n invalidIds: this._getErrorKeySubject(),\n })\n ],\n listenUpdate: [\n this.fleetActionAttachmentStore.Listen(s => s.driverDateRangeAssignments),\n this._selectedDateRanges$\n ]\n }),\n ]\n }),\n ],\n }),\n new ApDynformsConfigTabs({\n title: 'Global__Application',\n disabled: (form: FormGroup) => ApBookingUtils.disableApplications(form,\n 'SourceItem.Attachment.Instrument', this._applicationUnitSubject, this.translationStore),\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: 'booking2',\n arrayConfig: [\n new ApDynformsConfigArray({\n config: [\n new ApDynformsConfigTextbox({\n key: 'Key',\n label: 'Docu_Ini__Type',\n }),\n new ApDynformsConfigNumerictextbox({\n label: 'Amount',\n value: null,\n key: 'Value',\n min: 0,\n spinners: false,\n step: 0.05,\n minimumFractionDigits: 0,\n maximumFractionDigits: 2\n }),\n new ApDynformsConfigComboBox({\n key: 'Unit',\n label: 'Settings__Lbl_Menu_Unit',\n options: this._applicationUnitSubject,\n valuePrimitive: true,\n valueField: 'value',\n textField: 'text'\n }),\n ],\n min: 1,\n max: 3,\n columns: 3,\n key: 'SourceItem.Attachment.Application',\n validate: (v) => v['Key'],\n extendOn: (v) => !!v['Key'] && !!v['Value'] && !!v['Unit'],\n }),\n ]\n }),\n ]\n }),\n new ApDynformsConfigTabs({\n title: 'Global__Comment',\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: 'booking3',\n columns: 1,\n config: [\n new ApDynformsConfigTextbox({\n label: 'Global__Comment',\n key: 'SourceItem.Attachment.Comment',\n }),\n ]\n }),\n ],\n }),\n ],\n },\n {\n id: 1,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Accept'),\n type: ApGridPagerType.None,\n disabled: ApBookingUtils.disableAccept,\n values: [],\n onSubmit: this._createEventEmitter(\n (event: IGridPagerSubmitData) => this._setValid(event.items.map(i => i['SourceItem']), true))\n },\n {\n id: 3,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Reject'),\n type: ApGridPagerType.None,\n values: [],\n onSubmit: this._createEventEmitter(\n (event: IGridPagerSubmitData) => this._setValid(event.items.map(i => i['SourceItem']), false))\n },\n ];\n this._subscribeToErrorKeySubjects();\n }\n\n private _getDataFromStore(): void {\n this.loading$ = this.fleetActionAttachmentStore.Listen(s => s.loading);\n this._subscriptions.push(this.settingsStore.FirstSetting$.subscribe(s => this._settings = s));\n\n this._subscriptions.push(this.mapViewStore.Listen(s => s.mode).subscribe(\n mapViewMode => this._mapViewMode = mapViewMode\n ));\n\n this._subscriptions.push(\n combineLatest([\n this.fleetActionAttachmentStore.Listen(s => s.data),\n this.fieldStore.Listen(s => s.data)\n ]).pipe(filter((([attachments, fields]) => !!attachments && fields.length !== 0)))\n .subscribe(([attachments]) => {\n this.items = attachments.map((a: IFleetActionAttachment) => {\n const date = this.dateService.toFarmDateFromUtcGetJsDate(a.Attachment.From);\n const field = this.fieldStore.getFieldById(a.FieldId);\n const fieldName = this.fieldStore.getFieldName(field);\n return {\n Id: a.Id,\n SourceItem: a,\n Status: a.Attachment.Status,\n Duration: ApDocuUtils.formatDuration(ApDocuUtils.getDurationOfSlicesInMs(a.Slices)),\n TimeOfNoUse: ApDocuUtils.formatDuration(ApDocuUtils.getStandStillTimeOfSlicesInMs(a.Slices)),\n Area: a.Slices ? a.Slices.Reduce((val, s) => s.NettoArea + val, 0) : 0,\n From: moment(date).format('HH:mm'),\n FromDate: this.dateService.getDateMidnight(date),\n FieldNumber: field ? field.FieldNumber : '',\n FieldSubNumber: field ? field.FieldSubnumber : '',\n FieldName: fieldName,\n WorkTypeText: this.translationStore.FindTranslationForSelectedLanguage(a.Attachment.WorkType?.Description),\n DriverName: a.Attachment?.Driver?.FullName ?? '',\n Application0:\n a.Attachment.Application && a.Attachment.Application[0] ? a.Attachment.Application[0].Key : '-',\n Application1:\n a.Attachment.Application && a.Attachment.Application[1] ? a.Attachment.Application[1].Key : '-',\n Application2:\n a.Attachment.Application && a.Attachment.Application[2] ? a.Attachment.Application[2].Key : '-'\n };\n });\n\n this.trackLoaderService.removeUnreferencedIds(this.items.Convert(_ => _.id), this.items.FirstOrDefault()?.FarmId);\n\n if (attachments.find(a => a.Attachment.IsModified)) {\n clearTimeout(this._removeTimeout);\n this._removeTimeout = setTimeout(() =>\n this.fleetActionAttachmentStore.removeModifiedFleetActionAttachments(), 1000);\n }\n }));\n\n const deleteDriver = {\n Id: ApGuidUtil.getEmptyGuid(),\n FullName: `<${this.translationStore.FindTranslationForSelectedLanguage('Global__Delete')}>`,\n Firstname: undefined,\n Name: undefined,\n IsDeleted: undefined,\n FarmId: undefined,\n };\n\n const deleteWorktype: IWorktypes = {\n Id: -1,\n Description: `<${this.translationStore.FindTranslationForSelectedLanguage('Global__Delete')}>`,\n Unit: undefined,\n Category: undefined,\n Category_Text: undefined,\n Fertilisers: undefined,\n Shortname: undefined,\n Wt_Unit: undefined,\n SubCategory: undefined,\n Type: undefined\n };\n\n const deleteInstrument: IInstrument = {\n Id: ApGuidUtil.getEmptyGuid(),\n Name: `<${this.translationStore.FindTranslationForSelectedLanguage('Global__Delete')}>`,\n Unit: undefined,\n FarmId: undefined,\n IsDeleted: undefined,\n DefaultWidth: null,\n DefaultWorktype: deleteWorktype,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n Version: null,\n Type: null\n };\n\n this._subscriptions.push(this.driverStore.Listen(s => s.data).subscribe((drivers) => {\n this._driversEdit = [\n ...drivers,\n {\n Id: deleteDriver.Id,\n FarmId: deleteDriver.FarmId,\n Firstname: deleteDriver.Firstname,\n Name: deleteDriver.Name,\n IsDeleted: deleteDriver.IsDeleted,\n FullName: deleteDriver.FullName,\n Version: 0,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n }\n ];\n }));\n\n this._subscriptions.push(this.instrumentStore.Listen(s => s.data).subscribe((instrument) => {\n this._instrumentsEdit = [\n ...instrument,\n deleteInstrument,\n ];\n }));\n\n this._subscriptions.push(this.campaignYearStore.Listen(s => s.selectedYear).subscribe(\n () => this.fleetActionAttachmentStore.loadFleetActionAttachmentsByModified(false))\n );\n }\n\n private _getErrorKeySubject(): Subject {\n const subject = new Subject();\n this._errorKeySubjects.push(subject);\n return subject;\n }\n\n private _gridBuilder(): void {\n this.languageStore.SelectedLanguage$.subscribe(l => {\n this.columns = [\n new ApDynGridPropertyColumnConfig({\n field: 'FromDate',\n title: 'Docu_Ini__Date',\n width: 110,\n format: l.DateFormat,\n sortIndex: 0,\n sortDesc: false,\n headerFilterable: true,\n filterable: true,\n filterType: FilterType.DATE\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'From', title: 'Docu_Ini__StartTime', width: 100, hide: true,\n headerFilterable: true,\n sortIndex: 1, sortDesc: false\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Duration', title: 'Docu_Ini__Duration', width: 100, headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Machine.Name',\n title: 'Base__Engine',\n headerFilterable: true,\n filterable: true,\n width: 120\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Machine.Sign',\n title: 'Docu_Ini__NumberPlate',\n headerFilterable: true, hide: true, width: 92\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Instrument.Name',\n title: 'Docu_Ini__Tool',\n headerFilterable: true,\n filterable: true,\n width: 105\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'WorkTypeText',\n title: 'Docu_Ini__WorkType',\n headerFilterable: true,\n filterable: true,\n width: 110\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'DriverName',\n title: 'Docu_Ini__Motorist',\n hide: true,\n headerFilterable: true,\n filterable: true,\n width: 120\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'FieldNumber',\n title: 'Docu_Ini__Number',\n headerFilterable: true,\n width: 80,\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'FieldSubNumber',\n title: 'Docu_Ini_Subnumber',\n headerFilterable: true,\n width: 80,\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'FieldName',\n title: 'Docu_Ini__Field',\n headerFilterable: true,\n width: 100,\n filterable: true,\n groupDesc: false,\n groupIndex: 0,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Area', title: 'Global_Worked_Area', width: 78, hide: true,\n unit: this.translationStore.FindTranslationForSelectedLanguage('Unit_ha'),\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n tooltip: (dataItem) => `${this.roundNumericService.round(dataItem['Area'], -1)} ${this.translationStore.FindTranslationForSelectedLanguage('Unit_ha')}`,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [this._settings.DigitsAfterDecimalPoint]\n }\n ]\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Application0', title: 'Docu_Ini__Medium', hide: true, headerFilterable: true\n }),\n new ApDynGridStatusSwitchColumnConfig({\n field: 'SourceItem.Attachment.Status',\n readonly: true,\n disableGreen: (item) => ApBookingUtils.checkInvalid(item),\n stateChange: this._createEventEmitter(\n (event: IStateChange) => this._setValid(event.item['SourceItem'], event.state !== -1)),\n }),\n new ApDynGridButtonColumnConfig(\n {\n callback: this._createEventEmitter(this._showLineClick.bind(this)),\n disabled: (fleetActionAttachment) => fleetActionAttachment.SourceItem.Attachment.Logger === null,\n imageUrl: APP_CONFIGURATION.ButtonZoomToMapImage,\n toggleable: true, selected: this._isItemSelected.bind(this),\n tooltip: 'Permission_Feature_Show_Lanes'\n }),\n new ApDynGridEditColumnConfig({})\n ];\n\n this.pager = new ApDynGridPagerConfig({listMassEditing: this._listMassEditing, preselect: false});\n });\n }\n\n private _isItemSelected(item): boolean {\n const action = item['SourceItem'] as IFleetActionAttachment;\n return !!this.trackLoaderService.selectedSlices.Find(_ => !!action && _?.id === action?.Id);\n }\n\n private _saveFleetActionAttachment(data: IGridPagerSubmitData): void {\n ApBookingUtils.saveFleetActionAttachment(data, this.fleetActionAttachmentStore);\n }\n\n private _setValid(data: IFleetActionAttachment | IFleetActionAttachment[], valid?: boolean): void {\n if (!(data instanceof Array)) {\n data = [data];\n }\n const c = ObjectFactory.Copy(data);\n for (const d of c) {\n d.Attachment.IsModified = true;\n d.Attachment.Valid = valid === undefined ? d.Attachment.Valid : valid;\n }\n this.fleetActionAttachmentStore.saveFleetActionAttachments(c);\n }\n\n private _showLineClick(event): void {\n const dataItem: IFleetActionAttachment = event['SourceItem'];\n this.trackLoaderService.loadByFleetAction(dataItem);\n if (this.mapViewStore.getMapViewMode() === MapViewMode.HIDE && this.trackLoaderService.selectedSlices.Any()) {\n this._hideOnClose = true;\n this.mapViewStore.showMapView();\n }\n }\n\n private _subscribeToErrorKeySubjects(): void {\n this._subscriptions.push(\n combineLatest(this._errorKeySubjects)\n .pipe(\n map(arr => {\n let merge: string[] = [];\n arr.forEach(a => merge = merge.concat(a));\n return merge.filter((v, i, a) => a.indexOf(v) === i);\n })\n )\n .subscribe(keys => this.errorKeys = keys)\n );\n }\n}\n","import {AfterContentInit, Component, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {BehaviorSubject, combineLatest, Observable, Subject, Subscription} from 'rxjs';\nimport {ApGridPagerType, ApVisibleStates, IApPermissionData, MapViewMode} from '../../ap-interface';\nimport {\n ApDynGridPagerConfig,\n IDynGridWizardChoiceData,\n IGridPagerSubmitData,\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config';\nimport {\n ApEditActionComponent\n} from '../../entry-components/ap-docu-entry-components/ap-edit-action.component';\nimport {ApDocuUtils} from '../../docu/utils/ap-docu-utils';\nimport {ApGuidUtil, GetRoundNumericPipe} from '../../ap-utils';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridButtonColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-button-column-config';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {\n ApDynGridEditColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-edit-column-config';\nimport {\n ApDynGridStatusSwitchColumnConfig,\n IStateChange\n} from '../../ap-dyngrids/config/ap-dyn-grid-status-switch-column.config';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {\n ApDynformsConfigArray\n} from '../../ap-dynforms/config/ap-dynforms-config-array';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsConfigTabs\n} from '../../ap-dynforms/config/ap-dynforms-config-tabs';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {filter, map} from 'rxjs/operators';\nimport {ApBookingUtils} from '../ap-booking-utils';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDatesOverlapValidator\n} from '../../ap-dynforms/validators/ap-dates-overlap-validator';\nimport {DriverStore} from '../../stores/docu/driver.store';\nimport {\n InstrumentStore\n} from '../../stores/docu/instrument.store';\nimport {\n SettingsStore\n} from '../../stores/base-data/settings.store';\nimport {ApPermissions} from 'invoker-transport';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {FormGroup} from '@angular/forms';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {\n MapViewStore\n} from '../../stores/layout/mapview.store';\nimport {\n FleetActionAttachmentStore\n} from '../../stores/docu/fleet.action.attachment.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {\n ApDateService\n} from '../../ap-core/services/ap-date-service';\nimport {ObjectFactory, StringFactory} from 'ts-tooling';\nimport {\n TrackLoaderService\n} from '../../docu/services/track.loader.service';\nimport {MapStore} from '../../stores/map/map.store';\nimport {\n GetRoundNumericService\n} from '../../ap-utils/service/get-round-numeric.service';\nimport {LoginStore} from '../../stores/login/login.store';\nimport * as moment from 'moment-timezone';\nimport ISettings = Data.BaseData.ISettings;\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IFleetActionAttachment = Data.DocuContext.FleetManagement.IFleetActionAttachment;\nimport IAttachmentApplication = Data.DocuContext.Attachment.IAttachmentApplication;\nimport IDateRange = Data.BaseData.IDateRange;\n\n@Component({\n selector: 'ap-booking-archive',\n template: `\n \n `,\n})\nexport class ApBookingArchiveComponent implements OnInit, AfterContentInit, OnDestroy {\n\n constructor(private campaignYearStore: CampaignYearStore,\n private driverStore: DriverStore,\n private fieldStore: FieldStore,\n private fleetActionAttachmentStore: FleetActionAttachmentStore,\n private formStore: FormStore,\n private loginStore: LoginStore,\n private instrumentStore: InstrumentStore,\n private dateService: ApDateService,\n private mapViewStore: MapViewStore,\n private mapStore: MapStore,\n private roundNumericPipe: GetRoundNumericPipe,\n private roundNumericService: GetRoundNumericService,\n private settingsStore: SettingsStore,\n private translationStore: TranslationStore,\n private languageStore: LanguageStore,\n private trackLoaderService: TrackLoaderService) {\n }\n\n @ViewChild('component', {static: true}) dynComponent: ApDynComponentComponent;\n columns: ApDynGridColumnConfigBase[];\n items: any[] = [];\n errorKeys = [];\n loading$: Observable;\n pager: ApDynGridPagerConfigBase;\n apPermissionData: IApPermissionData;\n ApPermissions = ApPermissions;\n\n private _applicationUnitSubject = new BehaviorSubject<{ value: string, text: string }[]>([]);\n private _driverEdit: IDriver[] = [];\n private _errorKeySubjects: Subject[] = [];\n private _hideOnClose = false;\n private _instrumentEdit: IInstrument[];\n private _listMassEditing: IDynGridWizardChoiceData[] = [];\n private _mapViewMode: MapViewMode;\n private _settings: ISettings;\n private _subscriptions: Subscription[] = [];\n private _removeTimeout;\n private _selectedDateRanges$: Observable;\n\n private generateApplicationLabel(applications: IAttachmentApplication[], newLine: string): string {\n let applicationLabel = '';\n if (StringFactory.IsNullOrEmpty(newLine)) {\n newLine = ', ';\n }\n if (Array.isArray(applications)) {\n for (const appl of applications) {\n if (applicationLabel.length > 0) {\n applicationLabel += newLine;\n }\n applicationLabel += `${appl.Key} ${this.roundNumericService.round(appl.Value)} ${appl.Unit}/ha`;\n }\n }\n return applicationLabel;\n }\n\n ngOnInit(): void {\n this._getDataFromStore();\n this._subscriptions.Add(this.mapStore.Layers.TrackLayer.onExtentLoadFinish.subscribe(() => {\n this.mapStore.Layers.TrackLayer.zoomToExtent();\n }));\n combineLatest([\n this.formStore.Listen(s => s.update),\n this.loginStore.SelectedFarm$,\n ]).pipe(\n filter(s => s[0] === ApVisibleStates.OUT && !!s[1])\n ).subscribe(s => {\n this.trackLoaderService.loadBySelectedSlice(this.trackLoaderService.selectedSlices.FirstOrDefault(), s[1].Id);\n });\n }\n\n ngAfterContentInit(): void {\n setTimeout(() => this.mapViewStore.hideMapView(), 0);\n this._selectedDateRanges$ = this.dynComponent.SelectedItems$.pipe(\n map(items => items.map(item => {\n const fleetActionAttachment = item['SourceItem'] as IFleetActionAttachment;\n return {\n Id: fleetActionAttachment.Id,\n Start: fleetActionAttachment.Attachment.From,\n End: fleetActionAttachment.Attachment.To\n } as IDateRange;\n }))\n );\n\n this._fillWizard();\n this._gridBuilder();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n this.trackLoaderService.clear();\n this.mapStore.Layers.Clear();\n }\n\n onCreate(): void {\n this.formStore.openForm({component: ApEditActionComponent, data: null});\n }\n\n onEdit(event: any): void {\n if (this._mapViewMode !== MapViewMode.NORMAL) {\n this.mapViewStore.showMapView();\n }\n this.trackLoaderService.clear();\n this.trackLoaderService.loadByFleetAction(event.SourceItem);\n setTimeout(() => this.formStore.openForm({component: ApEditActionComponent, data: event.SourceItem}));\n }\n\n private _createEventEmitter(generatorOrNext): EventEmitter {\n const eventEmitter = new EventEmitter();\n this._subscriptions.push(eventEmitter.subscribe(generatorOrNext));\n return eventEmitter;\n }\n\n private _fillWizard(): void {\n this._listMassEditing = [\n {\n id: 0,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Edit'),\n type: ApGridPagerType.None,\n values: [],\n onSubmit: this._createEventEmitter(this._saveFleetActionAttachment.bind(this)),\n formConfig: [\n new ApDynformsConfigTabs({\n title: 'Settings__Lbl_Menu_Resources',\n selected: true,\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: 'booking-archive1',\n config: [\n new ApDynformsConfigComboBox({\n label: 'Docu_Ini__Tool',\n key: 'SourceItem.Attachment.Instrument',\n textField: 'Name',\n options: this._instrumentEdit,\n valueField: 'Id',\n valuePrimitive: false,\n value: null,\n sort: 1,\n asyncValidators: [\n new ApDynformsValidator({\n validator: ApDatesOverlapValidator.overlapCompare(\n this.fleetActionAttachmentStore.Listen(s => s.instrumentDateRageAssignments),\n this._selectedDateRanges$,\n ),\n errorKey: 'Docu__Vali_Msg_DateRange_Overlap_Selected',\n invalidIds: this._getErrorKeySubject(),\n }),\n new ApDynformsValidator({\n validator: ApDatesOverlapValidator.overlap(this._selectedDateRanges$),\n errorKey: 'Docu__Vali_Msg_DateRange_Overlap_Selected',\n invalidIds: this._getErrorKeySubject(),\n })\n ],\n listenUpdate: [\n this.fleetActionAttachmentStore.Listen(s => s.instrumentDateRageAssignments),\n this._selectedDateRanges$\n ]\n }),\n new ApDynformsConfigComboBox({\n key: 'SourceItem.Attachment.Driver',\n label: 'Docu_Ini__Motorist',\n textField: 'FullName',\n options: this._driverEdit,\n valueField: 'Id',\n valuePrimitive: false,\n value: null,\n sort: 1,\n asyncValidators: [\n new ApDynformsValidator({\n validator: ApDatesOverlapValidator.overlapCompare(\n this.fleetActionAttachmentStore.Listen(s => s.driverDateRangeAssignments),\n this._selectedDateRanges$,\n ),\n errorKey: 'Docu__Vali_Msg_DateRange_Overlap_Selected',\n invalidIds: this._getErrorKeySubject(),\n }),\n new ApDynformsValidator({\n validator: ApDatesOverlapValidator.overlap(this._selectedDateRanges$),\n errorKey: 'Docu__Vali_Msg_DateRange_Overlap_Selected',\n invalidIds: this._getErrorKeySubject(),\n })\n ],\n listenUpdate: [\n this.fleetActionAttachmentStore.Listen(s => s.driverDateRangeAssignments),\n this._selectedDateRanges$\n ]\n }),\n ]\n }),\n ],\n }),\n new ApDynformsConfigTabs({\n title: 'Global__Application',\n disabled: (form: FormGroup) => ApBookingUtils.disableApplications(form,\n 'SourceItem.Attachment.Instrument', this._applicationUnitSubject, this.translationStore),\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: 'booking-archive2',\n arrayConfig: [\n new ApDynformsConfigArray({\n config: [\n new ApDynformsConfigTextbox({\n key: 'Key',\n label: 'Docu_Ini__Type',\n }),\n new ApDynformsConfigNumerictextbox({\n label: 'Amount',\n value: null,\n key: 'Value',\n min: 0,\n spinners: false,\n step: 0.05,\n minimumFractionDigits: 0,\n maximumFractionDigits: 2\n }),\n new ApDynformsConfigComboBox({\n key: 'Unit',\n label: 'Settings__Lbl_Menu_Unit',\n options: this._applicationUnitSubject,\n valuePrimitive: true,\n textField: 'text',\n valueField: 'value'\n }),\n ],\n min: 1,\n max: 3,\n columns: 3,\n key: 'SourceItem.Attachment.Application',\n validate: (v) => !!v['Key'],\n extendOn: (v) => !!v['Key'] && !!v['Value'] && !!v['Unit'],\n }),\n ]\n }),\n ]\n }),\n new ApDynformsConfigTabs({\n title: 'Global__Comment',\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: 'booking-archive3',\n columns: 1,\n config: [\n new ApDynformsConfigTextbox({\n label: 'Global__Comment',\n key: 'SourceItem.Attachment.Comment',\n }),\n ]\n }),\n ],\n }),\n ],\n },\n {\n id: 1,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Accept'),\n type: ApGridPagerType.None,\n disabled: ApBookingUtils.disableAccept,\n values: [],\n onSubmit: this._createEventEmitter(\n (event: IGridPagerSubmitData) => this._setValid(event.items.map(i => i['SourceItem']), true))\n },\n {\n id: 2,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Reset'),\n type: ApGridPagerType.None,\n values: [],\n onSubmit: this._createEventEmitter(\n (event: IGridPagerSubmitData) => this._resetModified(event.items.map(i => i['SourceItem'])))\n },\n {\n id: 3,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Reject'),\n type: ApGridPagerType.None,\n values: [],\n onSubmit: this._createEventEmitter(\n (event: IGridPagerSubmitData) => this._setValid(event.items.map(i => i['SourceItem']), false))\n },\n ];\n this._subscribeToErrorKeySubjects();\n }\n\n private _getDataFromStore(): void {\n const deleteDriver = {\n Id: ApGuidUtil.getEmptyGuid(),\n FullName: `<${this.translationStore.FindTranslationForSelectedLanguage('Global__Delete')}>`,\n };\n\n const deleteWorkType: IWorktypes = {\n Id: -1,\n Description: `<${this.translationStore.FindTranslationForSelectedLanguage('Global__Delete')}>`,\n Wt_Unit: undefined,\n Shortname: undefined,\n Fertilisers: undefined,\n Category_Text: undefined,\n Category: undefined,\n Unit: undefined,\n SubCategory: undefined,\n Type: undefined\n };\n\n const deleteInstrument: IInstrument = {\n Id: ApGuidUtil.getEmptyGuid(),\n Name: `<${this.translationStore.FindTranslationForSelectedLanguage('Global__Delete')}>`,\n DefaultWorktype: deleteWorkType,\n DefaultWidth: null,\n IsDeleted: undefined,\n FarmId: undefined,\n Unit: undefined,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n Version: null,\n Type: null\n };\n\n this.loading$ = combineLatest(\n [this.fieldStore.Listen(s => s.loading), this.fleetActionAttachmentStore.Listen(s => s.loading)])\n .pipe(map(([f, a]) => f || a));\n\n this._subscriptions.push(this.settingsStore.FirstSetting$.subscribe(s => this._settings = s));\n\n this._subscriptions.push(\n combineLatest([\n this.fleetActionAttachmentStore.Listen(s => s.data),\n this.fieldStore.Listen(s => s.data)])\n .pipe(\n filter(([attachments, fields]) => fields.length !== 0 && !!attachments),\n ).subscribe(([attachments]) => {\n this.items = attachments.map((a: IFleetActionAttachment) => {\n const date = this.dateService.toFarmDateFromUtcGetJsDate(a.Attachment.From);\n const field = this.fieldStore.getFieldById(a.FieldId);\n const fieldName = this.fieldStore.getFieldName(field);\n return {\n Id: a.Id,\n SourceItem: a,\n Duration: ApDocuUtils.formatDuration(ApDocuUtils.getDurationOfSlicesInMs(a.Slices)),\n TimeOfNoUse: ApDocuUtils.formatDuration(ApDocuUtils.getStandStillTimeOfSlicesInMs(a.Slices)),\n Area: a.Slices.Reduce((val, s) => s.NettoArea + val, 0),\n From: moment(date).format('HH:mm'),\n FromDate: this.dateService.getDateMidnight(date),\n FieldNumber: field ? field.FieldNumber : '',\n FieldSubNumber: field ? field.FieldSubnumber : '',\n FieldName: fieldName,\n WorkTypeText: this.translationStore.FindTranslationForSelectedLanguage(a.Attachment.WorkType?.Description),\n DriverName: a.Attachment.Driver?.FullName ?? '',\n Application0:\n a.Attachment.Application && a.Attachment.Application[0] ? a.Attachment.Application[0].Key : '-',\n Application1:\n a.Attachment.Application && a.Attachment.Application[1] ? a.Attachment.Application[1].Key : '-',\n Application2:\n a.Attachment.Application && a.Attachment.Application[2] ? a.Attachment.Application[2].Key : '-',\n ApplicationLabel: this.generateApplicationLabel(a.Attachment.Application, ''),\n };\n });\n\n this.trackLoaderService.removeUnreferencedIds(this.items.Convert(_ => _.Id), this.items.FirstOrDefault()?.FarmId);\n\n if (attachments.find(a => !a.Attachment.IsModified)) {\n clearTimeout(this._removeTimeout);\n this._removeTimeout = setTimeout(() =>\n this.fleetActionAttachmentStore.removeUnmodifiedFleetActionAttachments(), 1000);\n }\n }\n )\n );\n\n this._subscriptions.push(this.driverStore.Listen(s => s.data).subscribe(drivers => {\n this._driverEdit = [...drivers, {\n Id: deleteDriver.Id,\n FarmId: 0,\n Firstname: '',\n FullName: '',\n ShortFullName: '',\n Name: '',\n IsDeleted: false,\n Version: 0,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n }];\n }));\n\n this._subscriptions.push(this.instrumentStore.Listen(s => s.data).subscribe(instruments => {\n this._instrumentEdit = [...instruments, deleteInstrument];\n }));\n\n this._subscriptions.push(this.campaignYearStore.Listen(s => s.selectedYear).subscribe(\n () => this.fleetActionAttachmentStore.loadFleetActionAttachmentsByModified(true)));\n }\n\n private _getErrorKeySubject(): Subject {\n const subject = new Subject();\n this._errorKeySubjects.push(subject);\n return subject;\n }\n\n private _gridBuilder(): void {\n this.languageStore.SelectedLanguage$.subscribe(l => {\n this.columns = [\n new ApDynGridPropertyColumnConfig({\n field: 'FromDate',\n title: 'Docu_Ini__Date',\n width: 110,\n format: l.DateFormat,\n sortIndex: 0,\n sortDesc: false,\n filterable: true,\n filterType: FilterType.DATE\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'From', title: 'Docu_Ini__StartTime', width: 100, hide: true,\n sortIndex: 1, sortDesc: false\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Duration',\n title: 'Docu_Ini__Duration',\n width: 100,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Machine.Name',\n title: 'Base__Engine',\n headerFilterable: true,\n filterable: true,\n width: 130\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Machine.Sign', title: 'Docu_Ini__NumberPlate',\n headerFilterable: true, hide: true, width: 100\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Instrument.Name',\n title: 'Docu_Ini__Tool',\n headerFilterable: true,\n filterable: true,\n width: 115\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'WorkTypeText',\n title: 'Docu_Ini__WorkType',\n headerFilterable: true,\n filterable: true,\n width: 120\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'DriverName',\n title: 'Docu_Ini__Motorist',\n hide: true,\n headerFilterable: true,\n filterable: true,\n width: 120\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'FieldNumber',\n title: 'Docu_Ini__Number',\n headerFilterable: true,\n width: 80,\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'FieldSubNumber',\n title: 'Docu_Ini_Subnumber',\n headerFilterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n width: 80,\n filterable: true,\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'FieldName',\n title: 'Docu_Ini__Field',\n headerFilterable: true,\n width: 100,\n filterable: true,\n groupDesc: false,\n groupIndex: 0\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Area', title: 'Global_Worked_Area', width: 78, hide: true,\n unit: this.translationStore.FindTranslationForSelectedLanguage('Unit_ha'),\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n tooltip: (dataItem) => `${this.roundNumericService.round(dataItem['Area'], -1)} ${this.translationStore.FindTranslationForSelectedLanguage('Unit_ha')}`,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [this._settings.DigitsAfterDecimalPoint]\n }\n ]\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'ApplicationLabel',\n title: 'Docu_Ini__Medium',\n hide: true,\n headerFilterable: true,\n tooltip: item => {\n return this.generateApplicationLabel(item.SourceItem.Attachment.Application, '
');\n },\n }),\n new ApDynGridStatusSwitchColumnConfig({\n field: 'SourceItem.Attachment.Status',\n readonly: true,\n filterable: true,\n defaultFilter: 1,\n disableGreen: (item) => ApBookingUtils.checkInvalid(item),\n stateChange: this._createEventEmitter(\n (event: IStateChange) => {\n switch (event.state) {\n case -1:\n this._setValid(event.item['SourceItem'], false);\n break;\n case 0:\n this._resetModified(event.item['SourceItem']);\n break;\n case 1:\n this._setValid(event.item['SourceItem'], true);\n break;\n }\n }),\n }),\n new ApDynGridButtonColumnConfig(\n {\n callback: this._createEventEmitter(this._showLineClick.bind(this)),\n disabled: (fleetActionAttachment) => fleetActionAttachment.SourceItem.Attachment.Logger === null,\n imageUrl: APP_CONFIGURATION.ButtonZoomToMapImage,\n toggleable: true, selected: this._isItemSelected.bind(this),\n tooltip: 'Permission_Feature_Show_Lanes'\n }),\n new ApDynGridEditColumnConfig({})\n ];\n\n this.pager = new ApDynGridPagerConfig({listMassEditing: this._listMassEditing, preselect: false});\n });\n }\n\n private _isItemSelected(item): boolean {\n const action = item as IFleetActionAttachment;\n return !!this.trackLoaderService.selectedSlices.Find(_ => _.id === action.Id);\n }\n\n private _resetModified(data: IFleetActionAttachment | IFleetActionAttachment[]): void {\n if (!(data instanceof Array)) {\n data = [data];\n }\n const c = ObjectFactory.Copy(data);\n for (const d of c) {\n d.Attachment.IsModified = false;\n d.Attachment.Valid = true;\n }\n this.fleetActionAttachmentStore.saveFleetActionAttachments(c);\n }\n\n private _saveFleetActionAttachment(data: IGridPagerSubmitData): void {\n ApBookingUtils.saveFleetActionAttachment(data, this.fleetActionAttachmentStore);\n }\n\n private _setValid(data: IFleetActionAttachment | IFleetActionAttachment[], valid: boolean): void {\n if (!(data instanceof Array)) {\n data = [data];\n }\n const c = ObjectFactory.Copy(data);\n for (const d of c) {\n d.Attachment.IsModified = true;\n d.Attachment.Valid = valid;\n if (d.Attachment.Comment === null) {\n d.Attachment.Comment = '';\n }\n }\n this.fleetActionAttachmentStore.saveFleetActionAttachments(c);\n }\n\n private _showLineClick(event): void {\n const dataItem: IFleetActionAttachment = event['SourceItem'];\n this.trackLoaderService.loadByFleetAction(dataItem);\n if (this.mapViewStore.getMapViewMode() === MapViewMode.HIDE && this.trackLoaderService.selectedSlices.Any()) {\n this._hideOnClose = true;\n this.mapViewStore.showMapView();\n }\n }\n\n private _subscribeToErrorKeySubjects(): void {\n this._subscriptions.push(\n combineLatest(this._errorKeySubjects)\n .pipe(\n map(arr => {\n let merge: string[] = [];\n arr.forEach(a => merge = merge.concat(a));\n return merge.filter((v, i, a) => a.indexOf(v) === i);\n })\n )\n .subscribe(keys => this.errorKeys = keys)\n );\n }\n}\n","import {Route, RouterModule} from '@angular/router';\nimport {PageMode} from '../ap-interface';\nimport {NgModule} from '@angular/core';\nimport {ApFleetmanagementComponent} from './components/ap-fleetmanagement.component';\nimport {ApActionLookupComponent} from './components/ap-action-lookup.component';\nimport {ApPermissionGuard} from '../guards/ap-permission-guard.service';\nimport {ApBookingComponent} from '../booking/components/ap-booking.component';\nimport {ApBookingArchiveComponent} from '../booking/components/ap-booking-archive.component';\nimport {ApFieldWorksOverviewComponent} from './components/ap-field-works-overview.component';\n\nconst routes: Route[] = [\n {\n path: 'live-view',\n component: ApFleetmanagementComponent,\n canActivate: [ApPermissionGuard],\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n },\n },\n {\n path: 'measures',\n component: ApBookingComponent,\n canActivate: [ApPermissionGuard],\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n },\n },\n {\n path: 'booking',\n component: ApBookingArchiveComponent,\n canActivate: [ApPermissionGuard],\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n },\n },\n {\n path: 'action-lookup-overview',\n component: ApActionLookupComponent,\n canActivate: [ApPermissionGuard],\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n },\n },\n {\n path: 'overview',\n component: ApFieldWorksOverviewComponent,\n canActivate: [ApPermissionGuard],\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n },\n }\n];\n\n@NgModule({\n imports: [\n RouterModule.forChild(routes)\n ],\n exports: [RouterModule]\n})\nexport class ApDocuRoutes {\n}\n","import {AfterContentInit, Component, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {\n ApDynGridColumnConfigBase,\n ApDynGridColumnHideConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {IGridData, MapViewMode} from '../../ap-interface';\nimport {\n GetPermissionPipe\n} from '../../ap-permission/pipes/get-permission.pipe';\nimport {filter, map} from 'rxjs/operators';\nimport {\n GetRoundNumericService\n} from '../../ap-utils/service/get-round-numeric.service';\nimport {\n ApDynGridPagerConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config';\nimport {\n ApDynGridDetailsGridConfig\n} from '../../ap-dyngrids/config/details/ap-dyn-grid-details-grid-config';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {\n FleetActionAttachmentStore\n} from '../../stores/docu/fleet.action.attachment.store';\nimport {combineLatest, Subscription} from 'rxjs';\nimport {ApDocuUtils} from '../utils/ap-docu-utils';\nimport {\n ApGetCropService\n} from '../../stores/services/ap-get-crop.service';\nimport {\n ApDateService\n} from '../../ap-core/services/ap-date-service';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n ApDynGridButtonColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-button-column-config';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {\n TrackLoaderService\n} from '../services/track.loader.service';\nimport {MapStore} from '../../stores/map/map.store';\nimport {GetRoundNumericPipe} from '../../ap-utils';\nimport {\n SettingsStore\n} from '../../stores/base-data/settings.store';\nimport {\n MapViewStore\n} from '../../stores/layout/mapview.store';\nimport * as moment from 'moment';\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport IFleetActionAttachment = Data.DocuContext.FleetManagement.IFleetActionAttachment;\nimport ISettings = Data.BaseData.ISettings;\nimport IField = Data.FieldManagement.IField;\n\ninterface IAttachmentGridData extends IGridData {\n Date: Date;\n TimeFrom: string;\n TimeTo: string;\n Duration: string;\n TraversedArea: number;\n WorkedArea: number;\n Application0: string;\n WorkTypeText: string;\n}\n\ninterface IFieldGridData extends IGridData {\n NrSNr: string;\n Geom: any;\n Area: any;\n MainCrop: any;\n SecondCrop: any;\n MainCropExpectedYield: any;\n SecondCropExpectedYield: any;\n StrawHarvested: any;\n Attachments: IAttachmentGridData[];\n}\n\n@Component({\n selector: 'ap-field-works-overview',\n template: `\n \n \n `,\n styles: []\n})\nexport class ApFieldWorksOverviewComponent implements OnInit, OnDestroy, AfterContentInit {\n @ViewChild(ApDynComponentComponent, {static: true}) dynComponent: ApDynComponentComponent;\n columns: ApDynGridColumnConfigBase[] = [];\n pager = new ApDynGridPagerConfig();\n private mapClick = new EventEmitter();\n loading$ = combineLatest([\n this.fieldStore.Listen(s => s.loading).asObservable(),\n this.fleetActionAttachmentStore.Listen(s => s.loading).asObservable(),\n ]).pipe(map(([l0, l1]) => l0 || l1));\n\n items$ = combineLatest([\n this.fieldStore.Fields$.asObservable(),\n this.fleetActionAttachmentStore.Listen(s => s.data).asObservable()\n ]).pipe(\n filter(([f, a]) => !!f && !!a),\n map(([field, attachments]) => field.Convert((f) => {\n const geom = this.fieldStore.getCurrentFieldGeom(f);\n const area = geom && geom.AdminArea > 0 ? geom.AdminArea / 10000 : '-';\n const mainCrop: ICropTypes = this.cropService.getCrop(f, true, 'object');\n const subCrop: ICropTypes = this.cropService.getCrop(f, false, 'object');\n return {\n Id: f.Id,\n SourceItem: f,\n NrSNr: this.fieldStore.getFieldNumberAndSubNumber(f),\n Geom: geom,\n Area: area === '-' ? area : this.roundNumericService.roundAsNumber(area),\n MainCrop: mainCrop ? mainCrop.Description : '-',\n SecondCrop: subCrop ? subCrop.Description : '-',\n MainCropExpectedYield: mainCrop ? this.roundNumericService.roundAsNumber(mainCrop.ExpectedYield) : '-',\n SecondCropExpectedYield: subCrop ? this.roundNumericService.roundAsNumber(subCrop.ExpectedYield) : '-',\n StrawHarvested: f.FieldCrops[0] ? f.FieldCrops[0].StrawHarvested : false,\n Attachments: attachments.FindAll((a) => a.FieldId === f.Id && a.Status === 1)\n .Convert((a) => {\n const from = this.dateService.toFarmDateFromUtcGetJsDate(new Date(a.Attachment.From));\n const to = this.dateService.toFarmDateFromUtcGetJsDate(new Date(a.Attachment.To));\n return {\n Id: a.Attachment.Id,\n SourceItem: a,\n Date: from,\n TimeFrom: moment(from).format('HH:mm'),\n TimeTo: moment(to).format('HH:mm'),\n Duration: moment(ApDocuUtils.getDurationOfSlices(a.Slices).toDate()).format('HH:mm'),\n TraversedArea: a.Slices.Reduce((acc, val) => acc + val.BruttoArea, 0),\n WorkedArea: a.Slices.Reduce((acc, val) => acc + val.NettoArea, 0),\n WorkTypeText: this.translationStore.FindTranslationForSelectedLanguage(a.Attachment?.WorkType?.Description),\n Application0: a.Attachment.Application && a.Attachment.Application[0]\n ? a.Attachment.Application[0].Key : '-'\n };\n })\n };\n })\n ));\n details: ApDynGridDetailsGridConfig;\n private onSelectionChanged: Subscription = null;\n private _subscriptions: Subscription[] = [];\n private _settings: ISettings;\n\n constructor(private campaignYearStore: CampaignYearStore,\n private cropService: ApGetCropService,\n private dateService: ApDateService,\n private fieldStore: FieldStore,\n private fleetActionAttachmentStore: FleetActionAttachmentStore,\n private languageStore: LanguageStore,\n private permissionPipe: GetPermissionPipe,\n private roundNumericService: GetRoundNumericService,\n private roundNumericPipe: GetRoundNumericPipe,\n private translationStore: TranslationStore,\n private settingsStore: SettingsStore,\n private mapStore: MapStore,\n private mapViewStore: MapViewStore,\n private trackLoaderService: TrackLoaderService) {\n }\n\n ngOnInit(): void {\n this._subscriptions.push(this.campaignYearStore.Listen(s => s.selectedYear).subscribe(\n () => this.fleetActionAttachmentStore.loadFleetActionAttachmentsByModified(true)));\n this.onSelectionChanged = this.dynComponent.SelectedItems$.subscribe(d => this.selectionChange(d as IFieldGridData[]));\n this._subscriptions.Add(this.mapStore.Layers.TrackLayer.onExtentLoadFinish.subscribe(() => {\n this.mapStore.Layers.TrackLayer.zoomToExtent();\n }));\n this._subscriptions.push(this.settingsStore.FirstSetting$.subscribe(s => this._settings = s));\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n if (this.onSelectionChanged) {\n this.onSelectionChanged.unsubscribe();\n }\n this.mapStore.Layers.Clear();\n this.trackLoaderService.clear();\n }\n\n ngAfterContentInit(): void {\n this.gridBuilder();\n this.mapClick.subscribe(item => {\n this._showTrackOnMap(item);\n });\n }\n\n gridBuilder(): void {\n this.columns = this.columns = [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__NumberAbbr',\n field: 'SourceItem.FieldNumber',\n hide: true,\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n headerFilterable: true,\n width: 90\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__FieldPartShort',\n field: 'SourceItem.FieldSubnumber',\n hide: true,\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n headerFilterable: true,\n width: 90\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__NumberAbbr',\n field: 'NrSNr',\n width: 75,\n filterable: true,\n headerFilterable: true,\n hide: new ApDynGridColumnHideConfig({\n mapHide: false,\n selfHide: this.mapViewStore.Listen(s => s.mode).pipe(map((m) => m !== MapViewMode.NORMAL)),\n })\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Global__FieldName',\n field: 'SourceItem.FieldName',\n filterable: true,\n headerFilterable: true,\n sortIndex: 0,\n sortDesc: false,\n width: 160,\n cssClass: 'left'\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Area_Unit',\n field: 'Area',\n headerFilterable: true,\n width: 90,\n cssClass: 'right', filterType: FilterType.NUMBER,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [\n this._settings.DigitsAfterDecimalPoint,\n ]\n }\n ]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'MainCrop',\n field: 'MainCrop',\n filterable: true,\n headerFilterable: true,\n width: 160\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'MainCropExpectedYield',\n title: 'Global__YieldUnit',\n hide: true,\n headerFilterable: true,\n width: 80,\n cssClass: 'right', filterType: FilterType.NUMBER,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [\n this._settings.DigitsAfterDecimalPoint,\n ]\n }\n ]\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'StrawHarvested',\n title: 'Nutrients_Pages__StrawRemoved',\n hide: true,\n checkbox: true,\n width: 80\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SecondCrop',\n title: 'SecondCrop',\n hide: true,\n filterable: true,\n headerFilterable: true,\n width: 160\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SecondCropExpectedYield',\n title: 'Global__YieldUnit',\n hide: true,\n headerFilterable: true,\n width: 80,\n cssClass: 'right', filterType: FilterType.NUMBER,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [\n this._settings.DigitsAfterDecimalPoint,\n ]\n }\n ]\n }),\n ];\n\n this.details = new ApDynGridDetailsGridConfig({\n hide: (dataItem: IFieldGridData) => dataItem.Attachments.length === 0,\n checkboxDisabled: true,\n field: 'Attachments',\n columns: [\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Date',\n field: 'Date',\n format: this.languageStore.SelectedLanguage.DateFormat,\n sortIndex: 0,\n width: 90\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__From',\n field: 'TimeFrom',\n width: 80\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__To',\n field: 'TimeTo',\n // format: 'HH:mm',\n width: 80\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Duration',\n field: 'Duration',\n // format: 'HH:mm',\n width: 80\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Machine.Name',\n title: 'Base__Engine',\n headerFilterable: true,\n filterable: true,\n width: 140\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Machine.Sign',\n title: 'Docu_Ini__NumberPlate',\n headerFilterable: true,\n hide: true,\n width: 100\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.Instrument.Name',\n title: 'Docu_Ini__Tool',\n headerFilterable: true,\n filterable: true,\n width: 115,\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'WorkTypeText',\n title: 'Docu_Ini__WorkType',\n headerFilterable: true,\n filterable: true,\n width: 115,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'DriverName',\n title: 'Docu_Ini__Motorist',\n hide: true,\n headerFilterable: true,\n filterable: true,\n width: 135\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global_Traversed_Area',\n field: 'TraversedArea',\n hide: true,\n unit: this.translationStore.FindTranslationForSelectedLanguage('Global__Unit_ha'),\n width: 135,\n tooltip: item => `${this.roundNumericService.round(item['TraversedArea'], -1)} ${this.translationStore.FindTranslationForSelectedLanguage('Global__Unit_ha')}`,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [this._settings.DigitsAfterDecimalPoint],\n }\n ],\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global_Worked_Area',\n field: 'WorkedArea',\n hide: true,\n unit: this.translationStore.FindTranslationForSelectedLanguage('Global__Unit_ha'),\n width: 135,\n tooltip: item => `${this.roundNumericService.round(item['WorkedArea'], -1)} ${this.translationStore.FindTranslationForSelectedLanguage('Global__Unit_ha')}`,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [this._settings.DigitsAfterDecimalPoint],\n }\n ],\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Application0',\n title: 'Docu_Ini__Medium',\n headerFilterable: true,\n width: 130\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Attachment.WorkType.Comment',\n title: 'Global__Comment',\n headerFilterable: true,\n hide: true\n }),\n new ApDynGridButtonColumnConfig(\n {\n callback: this.mapClick,\n imageUrl: APP_CONFIGURATION.ButtonZoomToMapImage,\n selected: this._isItemSelected.bind(this),\n tooltip: 'Settings__Msg_Loading_Track_Button'\n })\n ]\n });\n }\n\n private _isItemSelected(dataItem): boolean {\n const action = dataItem['SourceItem'] as IFleetActionAttachment;\n return !!this.trackLoaderService.selectedSlices.Find(_ => _?.id === action?.Id?.toString());\n }\n\n private _showTrackOnMap(dataItem): void {\n const action = dataItem['SourceItem'] as IFleetActionAttachment;\n this.trackLoaderService.loadByFleetAction(action);\n if (this.mapViewStore.getMapViewMode() === MapViewMode.HIDE && this.trackLoaderService.selectedSlices.Any()) {\n this.mapViewStore.showMapView();\n }\n }\n\n private selectionChange(d: IFieldGridData[]): void {\n this.fieldStore.changeSelectedField(d.Convert(e => e.Id.toString()));\n }\n}\n","import {NgModule} from '@angular/core';\nimport {ApFleetmanagementOverviewComponent} from './components/ap-fleetmanagement-overview.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {ApCoreModule} from '../ap-core/ap-core.module';\nimport {ApIconModule} from '../icons/ap-icon.module';\nimport {LayoutModule} from '@progress/kendo-angular-layout';\nimport {\n ButtonGroupModule,\n ButtonModule,\n DropDownButtonModule,\n SplitButtonModule\n} from '@progress/kendo-angular-buttons';\nimport {CommonModule} from '@angular/common';\nimport {\n ComboBoxModule,\n DropDownsModule\n} from '@progress/kendo-angular-dropdowns';\nimport {DateInputsModule} from '@progress/kendo-angular-dateinputs';\nimport {\n BodyModule,\n ExcelModule,\n FilterMenuModule,\n GridModule,\n HeaderModule,\n PagerModule,\n PDFModule,\n RowFilterModule\n} from '@progress/kendo-angular-grid';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {ApActionApplicationsComponent} from './components/ap-action-applications.component';\nimport {ApFleetmanagementComponent} from './components/ap-fleetmanagement.component';\nimport {ApDocuRoutes} from './ap-docu.routes';\nimport {ChartsModule} from '@progress/kendo-angular-charts';\nimport 'hammerjs';\nimport {ApActionLookupComponent} from './components/ap-action-lookup.component';\nimport {ApUtilsModule} from '../ap-utils';\nimport {ApDynComponentModule} from '../ap-dyncomponent/ap-dyncomponent.module';\nimport {ApResponsiveTextModule} from '../ap-responsive-text/ap-responsive-text.module';\nimport {ApFieldWorksOverviewComponent} from './components/ap-field-works-overview.component';\n\n@NgModule({\n declarations: [\n ApFleetmanagementOverviewComponent,\n ApActionApplicationsComponent,\n ApFleetmanagementComponent,\n ApActionLookupComponent,\n ApFieldWorksOverviewComponent\n ],\n exports: [\n ApFleetmanagementOverviewComponent,\n ApActionApplicationsComponent,\n ApFleetmanagementComponent,\n ApActionLookupComponent\n ],\n imports: [\n ReactiveFormsModule,\n ApCoreModule,\n ApIconModule,\n LayoutModule,\n ButtonModule,\n CommonModule,\n SplitButtonModule,\n ComboBoxModule,\n DateInputsModule,\n DropDownsModule,\n DropDownButtonModule,\n ExcelModule,\n PDFModule,\n FormsModule,\n GridModule,\n ApTranslationModule,\n ApDocuRoutes,\n ChartsModule,\n HeaderModule,\n BodyModule,\n RowFilterModule,\n PagerModule,\n ButtonGroupModule,\n ApUtilsModule,\n FilterMenuModule,\n ApDynComponentModule,\n ApDynComponentModule,\n ApResponsiveTextModule,\n ],\n})\nexport class ApDocuModule {\n}\n","import ISlice = Data.DocuContext.Slice.ISlice;\nimport IMachineBreak = Data.DocuContext.Machine.IMachineBreak;\nimport ISliceProcessing = Data.DocuContext.Slice.ISliceProcessing;\nimport IAttachmentMapping = Data.DocuContext.Attachment.IAttachmentMapping;\nimport ICombinedSlice = Data.DocuContext.Slice.ICombinedSlice;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport * as moment from 'moment';\nimport {Moment} from 'moment';\nimport {TranslationStore} from '../../stores/translation/translation.store';\n\nexport class ApDocuUtils {\n static addWtUnit(unit: string, workType: IWorktypes, translationStore: TranslationStore, countyCode?: string): string {\n if (!workType || !workType.Wt_Unit) {\n return unit;\n }\n if (countyCode) {\n return `${unit} / ${translationStore.FindTranslation(workType.Wt_Unit, countyCode)}`;\n }\n return `${unit} / ${translationStore.FindTranslationForSelectedLanguage(workType.Wt_Unit)}`;\n }\n\n static getSliceProperty(slice: ISlice, name: string, property: string): number {\n return slice.Attachment ?\n ApDocuUtils.getSlicePropertyIntern(slice.Processing, slice.Attachment.Mapping, name, property) : 0;\n }\n\n static getSliceMovementProperty(slice: ICombinedSlice, name: string, property: string): number {\n return slice.Attachment ?\n ApDocuUtils.getSlicePropertyIntern(slice.MovementProcessing, slice.Attachment.Mapping, name, property) : 0;\n }\n\n static getSliceStandStillProperty(slice: ICombinedSlice, name: string, property: string): number {\n return slice.Attachment ?\n ApDocuUtils.getSlicePropertyIntern(slice.StandstillProcessing, slice.Attachment.Mapping, name, property) : 0;\n }\n\n static generateBreakMap(breaks: IMachineBreak[]): Map {\n const keyMap = new Map();\n\n keyMap.set('Speed', 'speed');\n keyMap.set('Fuel Rate', 'fuel_rate');\n keyMap.set('Engine Speed', 'engine_speed');\n keyMap.set('ApplicationRate', 'application_rate');\n keyMap.set('Tank', 'tank');\n keyMap.set('WorkState', 'work_state');\n\n const result = new Map();\n breaks.forEach(br => {\n const key = keyMap.get(br.Property);\n if (result.has(key)) {\n result.get(key).push({value: br.Value, color: br.Color});\n } else {\n result.set(key, [{value: br.Value, color: br.Color}]);\n }\n });\n return result;\n }\n\n static formatDuration(durationMs: number): string {\n let duration = moment.duration(0);\n if (durationMs && durationMs > 0) {\n duration = moment.duration(durationMs);\n }\n return `${duration.asHours() < 10 ? '0' : ''}${Math.floor(duration.asHours())}${moment.utc(duration.asMilliseconds()).format(':mm')}`;\n }\n\n static getDurationOfSlicesInMs(slices: ISlice[]): number {\n if (!slices) {\n return 0;\n }\n return slices.map(s => s.Duration).reduce((acc, val) => acc + val) * 1000;\n }\n\n static getDurationOfSlices(slices: ISlice[]): Moment {\n return this.getDuration(new Date(this.getDurationOfSlicesInMs(slices)));\n }\n\n static getDuration(date: Date): Moment {\n return moment(new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),\n date.getUTCHours(), date.getUTCMinutes(), date.getSeconds(), date.getUTCMilliseconds()));\n }\n\n static getStandStillTimeOfSlicesInMs(slices: ISlice[]): number {\n if (!slices) {\n return 0;\n }\n let duration = 0;\n const standStill = slices.filter(s => s.Type === Data.Authentication.Enums.ActionType.No_Movement)\n .map(s => s.Duration);\n\n if (standStill.length) {\n duration = standStill.reduce((acc, val) => acc + val) * 1000;\n }\n return duration;\n }\n\n static getStandStillTimeOfSlices(slices: ISlice[]): Moment {\n return this.getDuration(new Date(this.getStandStillTimeOfSlicesInMs(slices)));\n }\n\n private static getSlicePropertyIntern(processing: ISliceProcessing[], mapping: IAttachmentMapping[],\n name: string, property: string): number {\n if (processing && processing.length) {\n for (let i = 0; i < mapping.length; ++i) {\n if (mapping[i]['Name'].toLowerCase() === name.toLowerCase()) {\n return processing[i][property];\n }\n }\n }\n return 0;\n }\n}\n","import {Component, OnInit, ViewChild} from '@angular/core';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigTextbox} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynComponentComponent} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {ApDynformsConfigTextarea} from '../../ap-dynforms/config/ap-dynforms-config-textarea';\nimport {ApDynformsConfigPlaceholder} from '../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\n\n// noinspection AngularUndefinedBinding\n/**\n * Drivers edit component.\n */\n@Component({\n selector: 'ap-jobs-edit',\n template: `\n \n
\n \n
\n
`,\n})\n\n/**\n * Drivers edit component.\n */\nexport class ApJobsEditComponent implements OnInit {\n @ViewChild(ApDynComponentComponent, {static: true}) dynComponent;\n public data: any;\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n\n constructor(private formStore: FormStore,\n private translationStore: TranslationStore) {\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n this.caption = 'Jobs_Details';\n this.formBuilder();\n }\n\n /**\n * binding of validators\n */\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'job1',\n legend: 'Base__BasicData',\n columns: 4,\n config: [\n new ApDynformsConfigTextbox({\n key: 'Id',\n label: 'Global__Id',\n disabled: true,\n value: this.data.SourceItem.Id\n }),\n new ApDynformsConfigTextbox({\n key: 'Status',\n label: 'Global__Status',\n disabled: true,\n value: this.translationStore.FindTranslationForSelectedLanguage(this.data.StatusDesc)\n }),\n new ApDynformsConfigTextbox({\n key: 'SourceItem.JobType.Name',\n label: 'Global_Type',\n disabled: true,\n value: this.data.SourceItem.JobType.Name\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigTextbox({\n key: 'CreatedAt',\n label: 'Global__CreatedAt',\n disabled: true,\n value: this.data.CreatedAtFormatted\n }),\n new ApDynformsConfigTextbox({\n key: 'StartedAt',\n label: 'Global_Started_At',\n disabled: true,\n value: this.data.StartedAtFormatted\n }),\n new ApDynformsConfigTextbox({\n key: 'LastActivityAt',\n label: 'Global_LastActive_At',\n disabled: true,\n value: this.data.LastActivityFormatted\n }),\n new ApDynformsConfigTextbox({\n key: 'FinishedAt',\n label: 'Global__Finished_At',\n disabled: true,\n value: this.data.FinishedAtFormatted\n }),\n new ApDynformsConfigTextbox({\n key: 'Priority',\n label: 'Global_Priority',\n disabled: true,\n value: this.data.PriorityText\n }),\n new ApDynformsConfigTextbox({\n key: 'Condition',\n label: 'Global_Condition',\n disabled: true,\n value: this.data.Condition\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n key: 'job1',\n legend: 'Global_Schedule',\n columns: 4,\n config: [\n new ApDynformsConfigTextbox({\n key: 'Schedule.Id',\n label: 'Global__Id',\n disabled: true,\n value: this.data.SourceItem.Schedule ? this.data.SourceItem.Schedule.Id : ' - '\n }),\n new ApDynformsConfigTextbox({\n key: 'ScheduledAtFormatted',\n label: 'Docu_Ini__StartTime',\n disabled: true,\n value: this.data.ScheduledAtFormatted\n }),\n new ApDynformsConfigTextbox({\n key: 'IntervalFormatted',\n label: 'Global__Interval',\n disabled: true,\n value: this.data.IntervalFormatted\n }),\n new ApDynformsConfigTextbox({\n key: 'Schedule.ScheduleEnd',\n label: 'Global_Finish',\n disabled: true,\n value: this.data.SourceItem.Schedule ? this.data.SourceItem.Schedule.ScheduleEnd : ' - '\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n key: 'job1',\n legend: 'Global_IO_Values',\n columns: 2,\n useMaxWidth: true,\n config: [\n new ApDynformsConfigTextarea({\n key: 'Input',\n label: 'Global_Input',\n disabled: true,\n rows: 12,\n value: this.data.SourceItem.Input\n ? JSON.stringify(JSON.parse(this.data.SourceItem.Input), null, 4)\n : ''\n }),\n new ApDynformsConfigTextarea({\n key: 'Output',\n label: 'Global_Output',\n disabled: true,\n rows: 12,\n value: this.data.SourceItem.Output\n ? JSON.stringify(JSON.parse(this.data.SourceItem.Output), null, 4)\n : ''\n })\n ]\n })];\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {ChangeDetectionStrategy, Component, EventEmitter, OnInit, ViewChild} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {merge} from 'lodash';\nimport {\n ApDynformsComponent\n} from '../../ap-dynforms/ap-dynforms.component';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {\n ParameterDefinitionStore\n} from '../../stores/parameter/parameter.definition.store';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigMultiSelect\n} from '../../ap-dynforms/config/ap-dynforms-config-multiselect';\nimport {\n ApDynformsConfigCheckbox\n} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridPagerConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config';\nimport {IGridPagerData, IWizardChoiceData} from '../../ap-interface/interfaces';\nimport {ApGridPagerType} from '../../ap-interface/enums';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport IParameterDefinition = Data.Parameter.IParameterDefinition;\nimport ParameterRefObjectType = Data.Parameter.Enums.ParameterRefObjectType;\nimport ParameterType = Data.Parameter.Enums.ParameterType;\nimport IListValuesMapping = Data.Parameter.IListValuesMapping;\n\n@Component({\n selector: 'ap-parameter-definition-edit',\n template: `\n \n \n \n \n \n
\n \n \n
\n
`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class ApParameterDefinitionEditComponent implements OnInit {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: IParameterDefinition;\n public formConfig: ApDynformsConfigFieldset[];\n public isNewMode = false;\n public caption: string;\n\n @ViewChild(ApDynComponentComponent, {static: false}) dynComponent: ApDynComponentComponent;\n columns: ApDynGridColumnConfigBase[] = [];\n items: any[] = [];\n pager: ApDynGridPagerConfigBase;\n\n public parameterRefObjectType: ParameterRefObjectType;\n public parameterType: ParameterType;\n listLanguage: string[] = [];\n listTypes = [];\n listRefObjects = [];\n listMassEditing = [];\n applyClicked = new EventEmitter();\n\n constructor(private formStore: FormStore,\n private fb: FormBuilder,\n private parameterDefinitionStore: ParameterDefinitionStore,\n private languageStore: LanguageStore,\n private translationStore: TranslationStore) {\n this.languageStore.LanguageList.forEach(l => {\n this.listLanguage.Add(l.Key);\n });\n this.createList();\n this.createRefObjectList();\n this.fillWizardChoiceData();\n this.applyClicked.subscribe((e) => this._onApplyClicked(e));\n }\n\n ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n ParameterRefObjectType: undefined,\n ParameterType: undefined,\n ListValues: [],\n TranslationKey: '',\n StandardValue: '',\n Description: '',\n Mandatory: false,\n Countries: [],\n Name: '',\n RefObjectId: undefined,\n Regex: null,\n TypeId: undefined,\n Unit: null,\n Version: 0,\n Id: '00000000-0000-0000-0000-000000000000'\n };\n } else {\n this.isNewMode = false;\n }\n this.caption = this.isNewMode ? 'Global_Parameter_Definition_Create' : 'Global_Parameter_Definition_Edit';\n this.formBuilder();\n this.gridBuilder();\n }\n\n gridBuilder(): void {\n this.items = this.data.ListValues.map(listValue => {\n return {\n Id: listValue.Id,\n SourceItem: listValue,\n };\n });\n this.columns = [\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Id',\n title: 'Admin_Pages__Keys',\n filterable: true,\n width: 70,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Name',\n title: 'Global__Name',\n filterable: true,\n width: 70,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.TranslationKey',\n title: 'Global_Translation_Key',\n filterable: true,\n width: 200,\n headerFilterable: true\n })\n ];\n this.pager = new ApDynGridPagerConfig({\n listMassEditing: this.listMassEditing,\n apply: this.applyClicked,\n hasPermission: true,\n showWithoutSelection: true,\n preselect: false\n });\n }\n\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'parameterDefinition',\n config: [\n new ApDynformsConfigTextbox({\n key: 'Name',\n label: 'Global__Name',\n value: this.data.Name,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n new ApDynformsConfigTextbox({\n key: 'Description',\n label: 'Nutrients_Pages_Popups__Description',\n value: this.data.Description,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n new ApDynformsConfigTextbox({\n key: 'TranslationKey',\n label: 'Global_Translation_Key',\n value: this.data.TranslationKey,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n new ApDynformsConfigComboBox({\n key: 'Type',\n label: 'Tasks_ViewModel__Type',\n value: this.data.TypeId,\n valueField: 'Id',\n textField: 'Key',\n options: this.listTypes,\n }),\n new ApDynformsConfigComboBox({\n key: 'RefObject',\n label: 'Global_Reference_Object',\n value: this.data.RefObjectId,\n valueField: 'Id',\n textField: 'Key',\n options: this.listRefObjects\n }),\n new ApDynformsConfigTextbox({\n key: 'StandardValue',\n label: 'Global_Default_Value',\n value: this.data.StandardValue,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n new ApDynformsConfigTextbox({\n key: 'Unit',\n label: 'Settings__Lbl_Menu_Unit',\n value: this.data.Unit,\n }),\n new ApDynformsConfigMultiSelect({\n key: 'Countries',\n label: 'Global_Countries',\n value: this.data.Countries,\n options: this.listLanguage,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n new ApDynformsConfigCheckbox({\n key: 'Mandatory',\n label: 'Global_Mandatory',\n value: this.data.Mandatory\n }),\n new ApDynformsConfigTextbox({\n key: 'RegEx',\n label: 'Global_Regular_Expression',\n value: this.data.Regex,\n })\n ]\n })];\n this.dynForm.initialized.subscribe(() => {\n this.dynForm.form.get('Type').valueChanges.subscribe(d => {\n this.data.TypeId = d;\n });\n });\n }\n\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n if (this.isNewMode) {\n this.parameterDefinitionStore.createParameterDefinition(this.data as IParameterDefinition);\n } else {\n this.parameterDefinitionStore.updateParameterDefinition(this.data as IParameterDefinition);\n }\n this.formStore.closeForm();\n }\n\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n\n fillWizardChoiceData(): void {\n const deleteItem = {\n id: 0,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Delete'),\n type: ApGridPagerType.None,\n values: null,\n } as IWizardChoiceData;\n this.listMassEditing.push(deleteItem);\n const item = {\n id: 1,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global_Add_Entry'),\n type: ApGridPagerType.None,\n values: null,\n } as IWizardChoiceData;\n this.listMassEditing.push(item);\n const nameItem = {\n id: 2,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global_Edit_Name'),\n type: ApGridPagerType.Text,\n values: null,\n } as IWizardChoiceData;\n this.listMassEditing.push(nameItem);\n\n const translationKeyItem = {\n id: 3,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global_Edit_Key'),\n type: ApGridPagerType.Text,\n values: null,\n } as IWizardChoiceData;\n this.listMassEditing.push(translationKeyItem);\n }\n\n createRefObjectList(): void {\n const field = {\n Id: 0,\n Key: 'Field'\n };\n this.listRefObjects.Add(field);\n }\n\n createList(): void {\n const bool = {\n Id: 0,\n Key: this.translationStore.FindTranslationForSelectedLanguage('Global_Yes_No')\n };\n this.listTypes.Add(bool);\n const n = {\n Id: 1,\n Key: this.translationStore.FindTranslationForSelectedLanguage('Admin_Data_Collections__Number')\n };\n this.listTypes.Add(n);\n const text = {\n Id: 2,\n Key: this.translationStore.FindTranslationForSelectedLanguage('Global_Text')\n };\n this.listTypes.Add(text);\n const timestamp = {\n Id: 3,\n Key: this.translationStore.FindTranslationForSelectedLanguage('Global_Timestamp')\n };\n this.listTypes.Add(timestamp);\n const list = {\n Id: 4,\n Key: this.translationStore.FindTranslationForSelectedLanguage('Global__ListShort')\n };\n this.listTypes.Add(list);\n }\n\n private _onApplyClicked(data: IGridPagerData): void {\n if (data.object.id === 1) {\n const newItem = ({\n Id: this.data.ListValues.length,\n Name: this.translationStore.FindTranslationForSelectedLanguage('Global_Please_Fill_Out'),\n TranslationKey: this.translationStore.FindTranslationForSelectedLanguage('Global_Please_Fill_Out')\n } as IListValuesMapping);\n this.data.ListValues.Add(newItem);\n this.gridBuilder();\n }\n\n if (data.object.id === 2) {\n const rows = this.dynComponent.getSelectedItems();\n rows.forEach(row => {\n const item = row['SourceItem'] as IListValuesMapping;\n if (item) {\n const found = this.data.ListValues.Find(_ => _.Id === item.Id);\n found.Name = data.value;\n this.gridBuilder();\n }\n });\n }\n\n if (data.object.id === 3) {\n const rows = this.dynComponent.getSelectedItems();\n rows.forEach(row => {\n const item = row['SourceItem'] as IListValuesMapping;\n if (item) {\n const found = this.data.ListValues.Find(_ => _.Id === item.Id);\n found.TranslationKey = data.value;\n this.gridBuilder();\n }\n });\n }\n\n if (data.object.id === 0) {\n const rows = this.dynComponent.getSelectedItems();\n rows.forEach(row => {\n const item = row['SourceItem'] as IListValuesMapping;\n if (item) {\n const found = this.data.ListValues.Find(_ => _.Id === item.Id);\n this.data.ListValues.Remove(found);\n this.gridBuilder();\n }\n });\n }\n }\n}\n","import {AfterContentInit, Component, EventEmitter, OnDestroy, ViewChild} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {IApTranslationData} from '../../ap-interface';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {\n ApDynGridImageColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-image-column-config';\nimport {ApDynGridsComponent} from '../../ap-dyngrids/ap-dyngrids.component';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {ListSortOrder} from 'ts-tooling';\nimport {\n ApDynGridButtonColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-button-column-config';\nimport {\n IModalDialogData,\n ModalDialogButtonDisable\n} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {ModalDialogStore} from '../../stores/dialog/modal.dialog.store';\nimport {\n UserSettingsStore\n} from '../../stores/settings/usersettings.store';\nimport {Subscription} from 'rxjs';\nimport {\n GetCountryCodeFlagPipe\n} from '../../ap-utils/pipes/get-countrycode-flag.pipe';\nimport {\n GetPermissionPipe\n} from '../../ap-permission/pipes/get-permission.pipe';\nimport ITranslation = Data.Language.ITranslation;\nimport ILanguage = Data.Language.ILanguage;\n\n@Component({\n selector: 'ap-translations-edit',\n template: `\n \n
\n \n \n
\n
\n \n
\n
`,\n})\nexport class ApTranslationsEditComponent implements AfterContentInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: ITranslation;\n public isNewMode = false;\n public found: any;\n public translations: Array;\n public key: string;\n public gridData: Array;\n public languages: Array;\n public allLanguages: Array = [];\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n\n @ViewChild(ApDynGridsComponent, {static: true}) dynGrid: ApDynGridsComponent;\n columns: ApDynGridColumnConfigBase[] = [];\n items: any[] = [];\n pager: ApDynGridPagerConfigBase;\n\n private _translations: Array;\n private _onEdit = new EventEmitter();\n private _editedTranslation: any;\n private _canTranslateCountryCodes: Array = [];\n private _subscriptions: Array = [];\n\n constructor(private fb: FormBuilder,\n private formStore: FormStore,\n private translationStore: TranslationStore,\n private languageStore: LanguageStore,\n private permissionPipe: GetPermissionPipe,\n private modalDialogStore: ModalDialogStore,\n private userSettingsStore: UserSettingsStore,\n private getCountryCodeFlagPipe: GetCountryCodeFlagPipe) {\n this._subscriptions.Add(modalDialogStore.Listen(s => s.result).subscribe(res => {\n if (!res) {\n return;\n }\n if (res.key === undefined) {\n return;\n }\n if (!this._editedTranslation) {\n return;\n }\n if (res.key !== 'apply') {\n return;\n }\n this._editedTranslation.SourceItem.Translation = res.formValues.Translation;\n this._editedTranslation.SourceItem.TranslationKey = this.dynForm.form.value.TranslationKey;\n this.saveChanges(this._editedTranslation.SourceItem);\n }));\n this._subscriptions.Add(this._onEdit.subscribe(event => {\n if (this.dynForm.form.invalid) {\n this.dynForm.form.markAllAsTouched();\n return;\n }\n this._editedTranslation = event;\n const dialog = {\n title: this.translationStore.FindTranslationForSelectedLanguage('Global_Translation_Edit'),\n formConfig: {\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: 'TranslationFieldSet',\n columns: 1,\n config: [\n new ApDynformsConfigTextbox({\n key: 'Translation',\n label: 'Global_Translation'\n })\n ]\n })\n ],\n values: {\n Translation: event.SourceItem.Translation\n }\n },\n show: true,\n buttons: [\n {\n key: 'cancel',\n text: 'Global__Cancel',\n primary: false\n },\n {\n key: 'apply',\n text: 'Global__Take',\n primary: true,\n disable: ModalDialogButtonDisable.FormInvalid,\n }\n ],\n } as IModalDialogData;\n this.modalDialogStore.setModalDialogData(dialog);\n }));\n }\n\n ngAfterContentInit(): void {\n this._subscriptions.Add(this.userSettingsStore.Listen(s => s.data).subscribe(s => {\n if (!s) {\n return;\n }\n if (!this.isNewMode) {\n this._canTranslateCountryCodes.AddRange(s.CountryCodes);\n }\n }));\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n Id: undefined,\n TranslationKey: null,\n translation: null,\n CountryCode: null,\n Version: undefined,\n VersionsIndex: ''\n };\n }\n this.caption = this.isNewMode ? 'Global_Translation_Create' : 'Global_Translation_Edit';\n this.formBuilder();\n this.getDataFromStore();\n this.gridBuilder();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n\n /**\n * retrieves all data from the store\n */\n getDataFromStore(): void {\n this.languages = this.languageStore.Listen(s => s.data).getValue();\n /*this._subscriptions.Add(this.translationStore.Listen(s => s.data).subscribe(translations => {\n if (translations == null) {\n return;\n }\n this._translations = Object.values(translations);\n }));*/\n this.languages.forEach(l => {\n this.allLanguages.push(l.Key);\n });\n this.allLanguages.Sort(ListSortOrder.ASC);\n if (this.isNewMode) {\n this._canTranslateCountryCodes.AddRange(this.allLanguages);\n }\n this.found = this._translations.filter(f => f.TranslationKey === this.data.TranslationKey);\n this.createTable();\n }\n\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'translation',\n config: [\n new ApDynformsConfigTextbox({\n key: 'TranslationKey',\n label: 'Admin_Pages__Keys',\n value: this.data.TranslationKey,\n disabled: !this.isNewMode,\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'}),\n ]\n })\n ]\n })];\n }\n\n createTable(): void {\n const a = Array();\n this.allLanguages.forEach((l: any) => {\n const tr = this.getTranslation(l);\n const c = {\n Id: tr !== null ? tr.Id : undefined,\n CountryCode: l,\n TranslationKey: this.key,\n Translation: tr !== null ? tr.translation : '',\n Present: tr !== null\n } as IApTranslationData;\n a.push(c);\n });\n this.gridData = a;\n\n this.items = this.gridData.map(data => {\n return {\n Id: data.Id,\n SourceItem: data,\n Image: this.getCountryCodeFlagPipe.transform(data.CountryCode),\n StandardIcon: data.Present === true ? 'edit' : 'plus'\n };\n });\n }\n\n getTranslation(countryCode: string): ITranslation {\n const trans = this.found.Find(fr => fr.CountryCode === countryCode);\n if (trans !== undefined) {\n return trans;\n }\n return null;\n }\n\n public saveChanges(translation: any): void {\n if (translation.Present === false) {\n const tra = {\n TranslationKey: translation.TranslationKey,\n CountryCode: translation.CountryCode,\n Translation: translation.Translation\n };\n this.translationStore.CreateTranslation(tra);\n } else {\n const tra = {\n Id: translation.Id,\n Translation: translation.Translation\n };\n this.translationStore.UpdateTranslation(tra);\n }\n }\n\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n\n private gridBuilder(): void {\n this.columns = [\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.CountryCode',\n title: 'Admin_Pages_Popups__Language',\n filterable: true,\n width: 70,\n headerFilterable: true\n }),\n new ApDynGridImageColumnConfig({\n title: 'Admin_Pages_Popups__Language',\n imageUrl: 'Image',\n width: 70,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'SourceItem.Translation',\n title: 'Global_Translation',\n filterable: true,\n width: 200,\n headerFilterable: true\n }),\n new ApDynGridButtonColumnConfig(\n {\n disabled: (t) => !this._canTranslateCountryCodes.Contains(t.SourceItem.CountryCode),\n tooltip: 'Global__Edit',\n callback: this._onEdit,\n isStandardIcon: true,\n standardIcon: 'StandardIcon'\n }\n ),\n ];\n this.pager = new ApDynGridPagerConfigBase();\n }\n}\n","import {Component, OnInit, ViewChild} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigTextbox} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {merge} from 'lodash';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {DriverStore} from '../../stores/docu/driver.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {Observable, Subscription} from 'rxjs';\nimport IDriver = Data.DocuContext.Driver.IDriver;\n\n/**\n * Drivers edit component.\n */\n@Component({\n selector: 'ap-drivers-edit',\n template: `\n \n
\n \n \n
\n
`,\n})\n\n/**\n * Drivers edit component.\n */\nexport class ApDriversEditComponent implements OnInit {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: any;\n public formConfig: ApDynformsConfigFieldset[];\n public isNewMode = false;\n public caption: string;\n public saving$: Observable;\n private _subscriptions: Array = [];\n\n constructor(private formStore: FormStore,\n private fb: FormBuilder,\n private driversStore: DriverStore,\n private loginStore: LoginStore) {\n this.saving$ = this.driversStore.Listen(s => s.saving);\n this._subscriptions.Add(this.driversStore.Listen(s => s.saved).subscribe(saved => {\n if (saved) {\n this.formStore.closeForm();\n }\n }\n ));\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n FarmId: this.loginStore.SelectedFarmId\n };\n } else {\n this.isNewMode = false;\n }\n this.caption = this.isNewMode ? 'Settings__Lbl_Worker_Create' : 'Settings__Lbl_Worker_Edit';\n this.formBuilder();\n }\n\n /**\n * binding of validators\n */\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'driver',\n config: [\n new ApDynformsConfigTextbox({\n key: 'Firstname',\n label: 'Docu_Ini__Forename',\n value: this.data.Firstname,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Name',\n label: 'Docu_Ini__Surname',\n value: this.data.Name,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n ]\n })];\n }\n\n /**\n * Submitting the changes.\n * Either creating a new object or updating the current.\n */\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n\n if (this.isNewMode) {\n this.driversStore.createDriver(this.data as IDriver);\n } else {\n this.driversStore.updateDriver(this.data as IDriver);\n }\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {AfterContentInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {Validators} from '@angular/forms';\nimport {\n FertilizerInorganicStore\n} from '../../stores/base-data/fertilizer.inorganic.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {FactorService} from '../../ap-utils/service/ap-factor.service';\nimport {UnitsStore} from '../../stores/common/units.store';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigCheckbox\n} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynformsValidations} from '../../ap-dynforms/ap-dynforms-validations';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {filter, map, switchMap} from 'rxjs/operators';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport IUnit = Data.Common.IUnit;\nimport IFertilizerInorg = Data.BaseData.IFertilizerInorg;\n\n/**\n * Fertilizer Inorganic component.\n */\n@Component({\n selector: 'ap-fertilizer-inorganic-edit',\n template: `\n \n
\n \n \n
\n
`\n})\n/**\n * Fertilizer Inorganic edit component.\n */\nexport class ApFertilizerInorgsEditComponent implements OnInit, AfterContentInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true}) dynComponent: ApDynComponentComponent;\n public data: any;\n public formConfig: ApDynformsConfigFieldset[];\n public isNewMode = false;\n public units: IUnit[];\n public uniqueNames: any[];\n public format = 'n2';\n public caption: string;\n public saveDisabled$ = new BehaviorSubject(false);\n public saveButtonDisabled$ = new BehaviorSubject(true);\n\n private _subscriptions: Array = [];\n private _isLock = false;\n\n constructor(private formStore: FormStore,\n private fertilizerInorganicStore: FertilizerInorganicStore,\n private loginStore: LoginStore,\n private factorService: FactorService,\n private unitStore: UnitsStore,\n private translationService: ApTranslationService) {\n }\n\n /**\n * when the component is loaded\n */\n public ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n Id: '',\n FarmId: this.loginStore.SelectedFarmId,\n Selectable: true,\n Prodname: null,\n Note: null,\n IsLiquid: false,\n ContentCaO: 0,\n ContentK: 0,\n ContentMg: 0,\n ContentN: 0,\n ContentP: 0,\n ContentS: 0,\n Efficiency: 100,\n EquivCaO: 0,\n Density: 1,\n Unit: null,\n RealContentCaO: 0,\n AlkalineEff: false,\n AlkalineCaO: 0,\n ContentCaCO3: 0,\n ContentMgO: 0,\n ContentP2O5: 0,\n ContentK2O: 0,\n ContentMgCO3: 0\n };\n } else {\n this.isNewMode = false;\n this.data.ContentCaO = this.data.RealContentCaO;\n }\n this.caption = this.isNewMode ? 'Settings__Lbl_Fertilizer_Create' : 'Settings__Lbl_Fertilizer_Edit';\n this.units = this.unitStore.Listen(s => s.data).getValue();\n this.uniqueNames = this.fertilizerInorganicStore.getFertilizerInorganic().map((n) => ({Name: n.Prodname}));\n if (!this.isNewMode) {\n this.uniqueNames = this.uniqueNames.filter(uN => uN.Name !== this.data.Prodname);\n }\n this.data.Unit = this.unitStore.getUnit(this.data.IsLiquid ? 'l' : 'kg');\n this._formBuilder();\n this.dynComponent.dynForm.initialized.subscribe(() => {\n if (!this.isNewMode) {\n this.dynComponent.dynForm.form.controls['ContentP2O5'].setValue(this.factorService.calculate(this.data.ContentP, 'P', 'P2O5'));\n this.dynComponent.dynForm.form.controls['ContentK2O'].setValue(this.factorService.calculate(this.data.ContentK, 'K', 'K2O'));\n this.dynComponent.dynForm.form.controls['ContentMgO'].setValue(this.factorService.calculate(this.data.ContentMg, 'Mg', 'MgO'));\n this.dynComponent.dynForm.form.controls['ContentCaCO3'].setValue(this.factorService.calculate(this.data.ContentCaO, 'CaO', 'CaCO3'));\n this.dynComponent.dynForm.form.controls['ContentMgCO3'].setValue(this.factorService.calculate(this.factorService.calculate(this.data.ContentMg, 'Mg', 'MgO'), 'MgO', 'MgCO3'));\n if (this.data.AlkalineEff) {\n const tmp = this.dynComponent.dynForm.form.get('ContentMgO').value * 1.391;\n const cal = this.data.ContentCaO + tmp;\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(cal);\n } else {\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(0);\n }\n if (this.data.IsLiquid) {\n this.dynComponent.dynForm.form.controls['Density'].enable();\n } else {\n this.dynComponent.dynForm.form.controls['Density'].disable();\n }\n }\n this.dynComponent.dynForm.form.get('IsLiquid').valueChanges.subscribe((c) => {\n if (c) {\n this.data.Unit = this.unitStore.getUnit('l');\n this.dynComponent.dynForm.form.controls['UnitId'].setValue(this.data.Unit.Id);\n this.dynComponent.dynForm.form.controls['UnitId'].disable();\n this.dynComponent.dynForm.form.controls['Density'].enable();\n } else {\n this.data.Unit = this.unitStore.getUnit('kg');\n this.dynComponent.dynForm.form.controls['UnitId'].setValue(this.data.Unit.Id);\n this.dynComponent.dynForm.form.controls['UnitId'].disable();\n this.dynComponent.dynForm.form.controls['Density'].disable();\n this.dynComponent.dynForm.form.controls['Density'].setValue(1);\n }\n });\n this.dynComponent.dynForm.form.get('ContentP').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'P', 'P2O5');\n });\n this.dynComponent.dynForm.form.get('ContentP2O5').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'P2O5', 'P');\n });\n this.dynComponent.dynForm.form.get('ContentK').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'K', 'K2O');\n });\n this.dynComponent.dynForm.form.get('ContentK2O').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'K2O', 'K');\n });\n this.dynComponent.dynForm.form.get('ContentMg').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'Mg', 'MgO');\n setTimeout(() => this._calculateFormValue(c, 'Mg', 'MgCO3'), 1);\n });\n this.dynComponent.dynForm.form.get('ContentMgO').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'MgO', 'Mg');\n setTimeout(() => this._calculateFormValue(c, 'MgO', 'MgCO3'), 1);\n if (this.dynComponent.dynForm.form.get('AlkalineEff').value) {\n const tmp = c * 1.391;\n const cal = this.dynComponent.dynForm.form.get('ContentCaO').value + tmp;\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(cal);\n }\n });\n this.dynComponent.dynForm.form.get('ContentMgCO3').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'MgCO3', 'MgO');\n setTimeout(() => this._calculateFormValue(c, 'MgCO3', 'Mg'), 1);\n if (this.dynComponent.dynForm.form.get('AlkalineEff').value) {\n const tmp = this.dynComponent.dynForm.form.get('ContentMgO').value * 1.391;\n const cal = this.dynComponent.dynForm.form.get('ContentCaO').value + tmp;\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(cal);\n }\n if (c < 0) {\n this.dynComponent.dynForm.form.controls['AlkalineEff'].setValue(false);\n }\n });\n this.dynComponent.dynForm.form.get('ContentCaO').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'CaO', 'CaCO3');\n if (this.dynComponent.dynForm.form.get('AlkalineEff').value) {\n const tmp = this.dynComponent.dynForm.form.get('ContentMgO').value * 1.391;\n const cal = c + tmp;\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(cal);\n }\n if (c < 0) {\n this.dynComponent.dynForm.form.get('AlkalineEff').setValue(false);\n }\n });\n this.dynComponent.dynForm.form.get('ContentCaCO3').valueChanges.subscribe((c) => {\n this._calculateFormValue(c, 'CaCO3', 'CaO');\n if (c < 0) {\n this.dynComponent.dynForm.form.get('AlkalineEff').setValue(false);\n }\n });\n this.dynComponent.dynForm.form.get('AlkalineEff').valueChanges.subscribe((c) => {\n if (c) {\n const CaO = this.dynComponent.dynForm.form.get('ContentCaO').value;\n const MgO = this.dynComponent.dynForm.form.get('ContentMgO').value;\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(CaO + MgO * 1.391);\n } else {\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(0);\n }\n });\n this._subscriptions.push(combineLatest([\n this.dynComponent.dynForm.form$.pipe(\n filter((form) => form != null),\n switchMap((form) => form.statusChanges),\n map((status) => status !== 'VALID')\n ), this.saveDisabled$])\n .subscribe((status) => {\n this.dynComponent.dynForm.form.markAllAsTouched();\n this.saveButtonDisabled$.next(status.Any((s) => s));\n })\n );\n });\n }\n\n public ngAfterContentInit(): void {\n setTimeout(() => this.saveButtonDisabled$.next(!this.dynComponent.dynForm.form?.valid));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach(d => d?.unsubscribe());\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n public onCancelClick(): void {\n this.formStore.closeForm();\n }\n\n /**\n * Submitting the changes.\n * Either creating a new object or updating the current.\n */\n public onSubmitClick(): void {\n ObjectFactory.Merge(this.data, this.dynComponent.dynForm.form.value);\n if (this.data.IsLiquid === '') {\n this.data.IsLiquid = false;\n }\n\n if (this.data.IsLiquid) {\n this.data.Unit = this.unitStore.getUnit('l');\n } else {\n this.data.Unit = this.unitStore.getUnit('kg');\n }\n\n if (this.isNewMode) {\n this.data.FarmId = this.loginStore.SelectedFarmId;\n this.data.Id = 0;\n this.fertilizerInorganicStore.createFertilizerInorganic(this.data);\n } else {\n if (this.data.FarmId !== this.loginStore.SelectedFarmId) {\n this.data.FarmId = this.loginStore.SelectedFarmId;\n this.data.Id = 0;\n }\n this.fertilizerInorganicStore.updateFertilizerInorganic(this.data);\n }\n this.formStore.closeForm();\n }\n\n private _calculateFormValue(value: number, source: string, target: string): void {\n if (this._isLock) {\n return;\n }\n this._isLock = true;\n let next = this.factorService.calculate(value, source, target);\n if (next < 0 && !source.includes('Ca') && !target.includes('Ca') && !source.includes('Mg') && !target.includes('Mg')) {\n next = 0;\n }\n const targetString = 'Content' + target;\n this.dynComponent.dynForm.form.get(targetString).setValue(next);\n setTimeout(() => this._isLock = false, 1);\n }\n\n /**\n * binding of validators\n */\n private _formBuilder(): void {\n this.formConfig = [this._getFertilizerFieldset(), this._getContentFieldset(), this._getAlkalineFieldset()];\n }\n\n private _getLabelWithUnit(text: string, unit: string): string {\n return this.translationService.translate(text) + ' [' + unit + ']';\n }\n\n private _getFertilizerFieldset(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'fertilizer1',\n config: [\n new ApDynformsConfigTextbox({\n key: 'Prodname',\n label: 'Global__Name',\n value: this.data.Prodname,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Fill_Name',\n always: true\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(3),\n errorKey: 'Settings__Msg_Vali_Biggerthree_Short'\n }),\n new ApDynformsValidator({\n validator: ApDynformsValidations.validateList(this.uniqueNames),\n errorKey: 'Settings__Msg_Vali_DoubleName'\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'Note',\n label: 'Global__Note',\n value: this.data.Note,\n validators: [\n new ApDynformsValidator({\n validator: Validators.maxLength(20),\n errorKey: 'Global_Not_More_Than_20_Characters'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'IsLiquid',\n label: 'Liquid',\n value: this.data.IsLiquid,\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'Density',\n label: this._getLabelWithUnit('Global__Density', 'kg/l'),\n value: this.data.Density,\n format: this.format,\n min: 0.5,\n max: 2,\n disabled: !this.data.IsLiquid\n }),\n new ApDynformsConfigComboBox({\n key: 'UnitId',\n value: this.data.Unit != null ? this.data.Unit.Id : this.units.FirstOrDefault().Id,\n valueField: 'Id',\n textField: 'Description',\n label: 'Settings__Lbl_Menu_Unit',\n options: this.units,\n valuePrimitive: true,\n disabled: true,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n ]\n });\n }\n\n private _getContentFieldset(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'fertilizer2',\n legend: 'Global__Content',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'ContentN',\n label: this._getLabelWithUnit('Global__NutrientN', '%'),\n value: this.data.ContentN || 0,\n format: this.format,\n min: -100,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'Efficiency',\n label: this._getLabelWithUnit('Settings__Lbl_NEffectiveness', '%'),\n value: this.data.Efficiency,\n format: 'n0',\n decimals: 0,\n min: 0,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentS',\n label: this._getLabelWithUnit('Global__NutrientS', '%'),\n value: this.data.ContentS || 0,\n format: this.format,\n min: 0,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentP',\n label: this._getLabelWithUnit('Nutrients__P', '%'),\n value: this.data.ContentP || 0,\n format: this.format,\n min: 0,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentP2O5',\n label: this._getLabelWithUnit('Global__NutrientP2O5', '%'),\n value: this.data.ContentP2O5 || 0,\n format: this.format,\n min: 0,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentK',\n label: this._getLabelWithUnit('Global__NutrientK', '%'),\n value: this.data.ContentK || 0,\n format: this.format,\n min: 0,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentK2O',\n label: this._getLabelWithUnit('Global__NutrientK2O', '%'),\n value: this.data.ContentK2O || 0,\n format: this.format,\n min: 0,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentMg',\n label: this._getLabelWithUnit('Global__NutrientMg', '%'),\n value: this.data.ContentMg || 0,\n format: this.format,\n min: -100,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentMgO',\n label: this._getLabelWithUnit('Global__NutrientMgO', '%'),\n value: this.data.ContentMgO || 0,\n format: this.format,\n min: this.factorService.calculate(-100, 'Mg', 'MgO'),\n max: this.factorService.calculate(100, 'Mg', 'MgO'),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentMgCO3',\n label: this._getLabelWithUnit('Global__NutrientMgCO3', '%'),\n value: this.data.ContentMgCO3 || 0,\n format: this.format,\n min: this.factorService.calculate(-100, 'Mg', 'MgCO3'),\n max: this.factorService.calculate(100, 'Mg', 'MgCO3'),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentCaO',\n label: this._getLabelWithUnit('Global__NutrientCaO', '%'),\n value: this.data.ContentCaO || 0,\n infoText: 'Info__CaO',\n format: this.format,\n min: -100,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentCaCO3',\n label: this._getLabelWithUnit('Global__Unit_CaCO3', '%'),\n value: this.data.ContentCaCO3,\n format: this.format,\n min: this.factorService.calculate(-100, 'CaO', 'CaCO3'),\n max: this.factorService.calculate(100, 'CaO', 'CaCO3'),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'AlkalineEff',\n infoText: 'Info__Alkaline_Effective',\n label: 'Global__Alkaline_Effective',\n disabled$: this.dynComponent.FormValues$.pipe(map((v) => v['ContentCaO'] < 0)),\n value: this.data.AlkalineEff\n }),\n ]\n });\n }\n\n private _getAlkalineFieldset(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'fertilizer3',\n legend: 'Global__Basic_Effect',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'ContentNeutralisationValue',\n infoText: 'Info__Neutralisation_Value',\n label: this._getLabelWithUnit('Global__Neutralisation_Value', '%'),\n value: this.data.ContentCaO + (this.data.ContentMgO * 1.391),\n format: this.format,\n disabled$: this.dynComponent.FormValues$.pipe(map((v: IFertilizerInorg) => {\n return !v.AlkalineEff || v.AlkalineCaO > 0;\n })),\n readonly: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'AlkalineCaO',\n infoText: 'Info_Alkaline_Effective_Content',\n label: this._getLabelWithUnit('Global__Alkaline_Effective_Ingredient', '%'),\n value: this.data.AlkalineCaO,\n format: this.format,\n min: 0,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ],\n disabled$: this.dynComponent.FormValues$.pipe(map((v: IFertilizerInorg) => !v.AlkalineEff))\n })\n ]\n });\n }\n}\n","import {AfterContentInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {Validators} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {filter, map, switchMap} from 'rxjs/operators';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigCheckbox\n} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {ApDynformsValidations} from '../../ap-dynforms/ap-dynforms-validations';\nimport {\n FertilizerOrganicStore\n} from '../../stores/base-data/fertilizer.organic.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {FactorService} from '../../ap-utils/service/ap-factor.service';\nimport {UnitsStore} from '../../stores/common/units.store';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {ModalDialogStore} from '../../stores/dialog/modal.dialog.store';\nimport {\n IModalDialogData,\n ModalDialogButtonDisable\n} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {FertilizerStore} from '../../stores/base-data/fertilizer.store';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport IUnit = Data.Common.IUnit;\nimport IFertilizerInorg = Data.BaseData.IFertilizerInorg;\n\n/**\n * Fertilizer Orgs component.\n */\n@Component({\n selector: 'ap-fertilizer-orgs-edit',\n template: `\n \n
\n \n \n
\n
`\n})\n\n/**\n * Fertilizer Orgs edit component.\n */\nexport class ApFertilizerOrgsEditComponent implements OnInit, AfterContentInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true}) dynComponent: ApDynComponentComponent;\n public data: any;\n public formConfig: ApDynformsConfigFieldset[];\n public isNewMode = false;\n public units: IUnit[];\n public uniqueNames: any[];\n public format = 'n2';\n public caption: string;\n public loading$ = new BehaviorSubject(true);\n public saveDisabled$ = new BehaviorSubject(false);\n public saveButtonDisabled$ = new BehaviorSubject(false);\n\n private _subscriptions: Array = [];\n\n constructor(private formStore: FormStore,\n private fertilizerStore: FertilizerStore,\n private fertilizerOrganicStore: FertilizerOrganicStore,\n private loginStore: LoginStore,\n private factorService: FactorService,\n private unitStore: UnitsStore,\n private translationService: ApTranslationService,\n private modalDialogStore: ModalDialogStore) {\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n Id: '',\n FarmId: this.loginStore.SelectedFarmId,\n Prodname: null,\n CategoryId: 1,\n Note: null,\n Selectable: true,\n IsLiquid: false,\n ContentCaO: 0,\n ContentK: 0,\n ContentMg: 0,\n ContentN: 0,\n ContentP: 0,\n DMPercent: 0,\n Efficiency: 100,\n Density: 1,\n Unit: null,\n RealContentCaO: 0,\n AlkalineEff: false,\n AlkalineCaO: 0,\n ContentCaCO3: 0,\n ContentMgO: 0,\n ContentP2O5: 0,\n ContentK2O: 0\n };\n } else {\n this.isNewMode = false;\n this.data.ContentCaO = this.data.RealContentCaO;\n this.fertilizerStore.loadFertilizerIsInUse(this.data.Id);\n }\n this._getDataFromStore();\n this.caption = this.isNewMode ? 'Settings__Lbl_Fertilizer_Create' : 'Settings__Lbl_Fertilizer_Edit';\n this.units = this.unitStore.Listen(s => s.data).getValue();\n this.uniqueNames = this.fertilizerOrganicStore.getFertilizerOrganic().map((n) => ({Name: n.Prodname}));\n if (!this.isNewMode) {\n this.uniqueNames = this.uniqueNames.filter((uN) => uN.Name !== this.data.Prodname);\n }\n this.data.Unit = this.unitStore.getUnit(this.data.IsLiquid ? 'm³' : 't');\n this._formBuilder();\n const self = this;\n this.dynComponent.dynForm.initialized.subscribe(() => {\n if (!this.isNewMode) {\n this.dynComponent.dynForm.form.controls['ContentP2O5'].setValue(this.factorService.calculate(this.data.ContentP, 'P', 'P2O5'));\n this.dynComponent.dynForm.form.controls['ContentK2O'].setValue(this.factorService.calculate(this.data.ContentK, 'K', 'K2O'));\n this.dynComponent.dynForm.form.controls['ContentMgO'].setValue(this.factorService.calculate(this.data.ContentMg, 'Mg', 'MgO'));\n this.dynComponent.dynForm.form.controls['ContentMgCO3'].setValue(this.factorService.calculate(this.data.ContentMg, 'Mg', 'MgCO3'));\n this.dynComponent.dynForm.form.controls['ContentCaCO3'].setValue(this.factorService.calculate(this.data.ContentCaO, 'CaO', 'CaCO3'));\n if (this.data.AlkalineEff) {\n const tmp = this.dynComponent.dynForm.form.get('ContentMgO').value * 1.391;\n const cal = this.data.ContentCaO + tmp;\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(cal);\n } else {\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(0);\n }\n }\n this.dynComponent.dynForm.form.get('ContentP').valueChanges.subscribe(() => {\n this._calculateFormValue('P', 'P2O5');\n });\n this.dynComponent.dynForm.form.get('ContentP2O5').valueChanges.subscribe(() => {\n this._calculateFormValue('P2O5', 'P');\n });\n this.dynComponent.dynForm.form.get('ContentK').valueChanges.subscribe(() => {\n this._calculateFormValue('K', 'K2O');\n });\n this.dynComponent.dynForm.form.get('ContentK2O').valueChanges.subscribe(() => {\n this._calculateFormValue('K2O', 'K');\n });\n this.dynComponent.dynForm.form.get('ContentMg').valueChanges.subscribe(() => {\n this._calculateFormValue('Mg', 'MgO');\n this._calculateFormValue('Mg', 'MgCO3');\n this._setContentNeutralisationValue();\n });\n this.dynComponent.dynForm.form.get('ContentMgO').valueChanges.subscribe(() => {\n this._calculateFormValue('MgO', 'Mg');\n this._calculateFormValue('Mg', 'MgCO3');\n this._setContentNeutralisationValue();\n });\n this.dynComponent.dynForm.form.get('ContentMgCO3').valueChanges.subscribe(() => {\n this._calculateFormValue('MgCO3', 'Mg');\n this._calculateFormValue('Mg', 'MgO');\n this._setContentNeutralisationValue();\n });\n this.dynComponent.dynForm.form.get('ContentCaO').valueChanges.subscribe((c) => {\n this._calculateFormValue('CaO', 'CaCO3');\n this._setContentNeutralisationValue();\n if (c < 0) {\n this.dynComponent.dynForm.form.get('AlkalineEff').setValue(false);\n }\n });\n this.dynComponent.dynForm.form.get('ContentCaCO3').valueChanges.subscribe((c) => {\n this._calculateFormValue('CaCO3', 'CaO');\n this._setContentNeutralisationValue();\n if (c < 0) {\n this.dynComponent.dynForm.form.get('AlkalineEff').setValue(false);\n }\n });\n this.dynComponent.dynForm.form.get('AlkalineEff').valueChanges.subscribe((c) => {\n if (c) {\n this._setContentNeutralisationValue();\n } else {\n this.dynComponent.dynForm.form.controls['ContentNeutralisationValue'].setValue(0);\n }\n });\n this.dynComponent.dynForm.form.get('UnitId').valueChanges.subscribe(_ => {\n self.formConfig.forEach(fs => {\n if (fs.legend === 'Global__Content' || fs.legend === 'Global__Basic_Effect') {\n fs.config.forEach((configBase) => {\n if (configBase.key.indexOf('Content') >= 0 || configBase.key === 'AlkalineCaO') {\n let newLabel = configBase.label.slice(0, configBase.label.indexOf('/') + 1);\n newLabel += self.data.Unit.Description + ']';\n configBase.label = newLabel;\n }\n });\n }\n });\n });\n this.dynComponent.dynForm.form.get('UnitId').setValue(this.data.Unit.Id);\n this.dynComponent.dynForm.form.get('IsLiquid').valueChanges.subscribe((c) => {\n if (c) {\n this.data.Unit = this.unitStore.getUnit('m³');\n } else {\n this.data.Unit = this.unitStore.getUnit('t');\n }\n this.dynComponent.dynForm.form.controls['UnitId'].setValue(this.data.Unit.Id);\n });\n this._subscriptions.push(combineLatest([\n this.dynComponent.dynForm.form$.pipe(\n filter((form) => form != null),\n switchMap((form) => form.statusChanges),\n map((status) => status !== 'VALID')\n ), this.saveDisabled$])\n .subscribe((status) => {\n this.dynComponent.dynForm.form.markAllAsTouched();\n this.saveButtonDisabled$.next(status.Any((s) => s));\n })\n );\n });\n }\n\n ngAfterContentInit(): void {\n setTimeout(() => this.saveButtonDisabled$.next(!this.dynComponent.dynForm.form?.valid));\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => d.unsubscribe());\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n public onCancelClick(): void {\n this.formStore.closeForm();\n }\n\n /**\n * Submitting the changes.\n * Either creating a new object or updating the current.\n */\n public onSubmitClick(): void {\n ObjectFactory.Merge(this.data, this.dynComponent.dynForm.form.value);\n if (this.data.IsLiquid === '') {\n this.data.IsLiquid = false;\n }\n\n if (this.data.IsLiquid) {\n this.data.Unit = this.unitStore.getUnit('m³');\n } else {\n this.data.Unit = this.unitStore.getUnit('t');\n }\n\n if (this.isNewMode) {\n this.data.FarmId = this.loginStore.SelectedFarmId;\n this.data.Id = 0;\n this.fertilizerOrganicStore.createFertilizerOrganic(this.data);\n } else {\n if (this.data.FarmId !== this.loginStore.SelectedFarmId) {\n this.data.FarmId = this.loginStore.SelectedFarmId;\n this.data.Id = 0;\n }\n this.fertilizerOrganicStore.updateFertilizerOrganic(this.data);\n }\n this.formStore.closeForm();\n }\n\n private _showMessage(message: string): void {\n this.modalDialogStore.setModalDialogData({\n formConfig: undefined,\n show: true,\n buttons: [\n {\n disable: ModalDialogButtonDisable.Never,\n key: 'Y',\n primary: true,\n text: 'Global__Ok'\n },\n ],\n title: this.translationService.translate('Global__Info'),\n message: this.translationService.translate(message)\n } as IModalDialogData);\n this.saveDisabled$.next(true);\n }\n\n private _calculateFormValue(source: string, target: string): void {\n const sourceString = 'Content' + source;\n const value: number = this.dynComponent.dynForm.form.get(sourceString).value;\n let next = this.factorService.calculate(value, source, target);\n if (next < 0 && source !== 'CaO' && target !== 'CaO') {\n next = 0;\n }\n const targetString = 'Content' + target;\n this.dynComponent.dynForm.form.get(targetString).setValue(next, {emitEvent: false});\n }\n\n private _setContentNeutralisationValue(): void {\n if (this.dynComponent.dynForm.form.get('AlkalineEff').value) {\n const tmp = this.dynComponent.dynForm.form.get('ContentMgO').value * 1.391;\n const cal = this.dynComponent.dynForm.form.get('ContentCaO').value + tmp;\n this.dynComponent.dynForm.form.get('ContentNeutralisationValue').setValue(cal);\n } else {\n this.dynComponent.dynForm.form.get('ContentNeutralisationValue').setValue(0);\n }\n }\n\n private _getDataFromStore(): void {\n if (!this.isNewMode) {\n this._subscriptions.push(this.fertilizerStore.Listen(s => s.CountInUse).subscribe(s => {\n if (s !== null) {\n this.loading$.next(false);\n if (s > 0) {\n setTimeout(() => this._showMessage('Global__Fertilizer_Used_Plan_Or_Book_Not_Changed'));\n }\n if (this.data.FarmId === -1) {\n setTimeout(() => this._showMessage('Global__System_Fertilizer_Can_Not_Processed'));\n }\n }\n }));\n } else {\n this.loading$.next(false);\n }\n }\n\n /**\n * binding of validators\n */\n private _formBuilder(): void {\n this.formConfig = [this._getFertilizerFieldset(), this._getConstantFieldset(), this._getAlkalineFieldset()];\n }\n\n private _getLabelWithUnit(text: string, unit: string): string {\n return this.translationService.translate(text) + ' [' + unit + ']';\n }\n\n private _getFertilizerFieldset(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'fertilizer1',\n config: [\n new ApDynformsConfigTextbox({\n key: 'Prodname',\n label: 'Global__Name',\n value: this.data.Prodname,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Fill_Name',\n always: true\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(3),\n errorKey: 'Settings__Msg_Vali_Biggerthree_Short'\n }),\n new ApDynformsValidator({\n validator: ApDynformsValidations.validateList(this.uniqueNames),\n errorKey: 'Settings__Msg_Vali_DoubleName'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'IsLiquid',\n label: 'Liquid',\n value: this.data.IsLiquid,\n }),\n new ApDynformsConfigTextbox({\n key: 'Note',\n label: 'Global__Note',\n value: this.data.Note\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'DMPercent',\n label: this._getLabelWithUnit('Global__Drymatter', '%'),\n infoText: 'Global__Drymatter_Info',\n value: this.data.DMPercent,\n format: this.format,\n min: 0,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigComboBox({\n key: 'UnitId',\n value: this.data.Unit != null ? this.data.Unit.Id : this.units.FirstOrDefault().Id,\n valueField: 'Id',\n textField: 'Description',\n label: 'Settings__Lbl_Menu_Unit',\n options: this.units,\n valuePrimitive: true,\n disabled: true,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n ]\n });\n }\n\n private _getConstantFieldset(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'fertilizer2',\n legend: 'Global__Content',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'ContentN',\n label: this._getLabelWithUnit('Global__NutrientN', 'kg/m³'),\n value: this.data.ContentN || 0,\n format: this.format,\n min: 0,\n max: 1000,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'Efficiency',\n label: this._getLabelWithUnit('Settings__Lbl_NEffectiveness', '%'),\n value: this.data.Efficiency,\n format: 'n0',\n decimals: 0,\n min: 0,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentS',\n label: this._getLabelWithUnit('Global__NutrientS', 'kg/m³'),\n value: this.data.ContentS || 0,\n format: this.format,\n min: 0,\n max: 1000,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentP',\n label: this._getLabelWithUnit('Nutrients__P', 'kg/m³'),\n value: this.data.ContentP || 0,\n format: this.format,\n min: 0,\n max: 1000,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentP2O5',\n label: this._getLabelWithUnit('Global__NutrientP2O5', 'kg/m³'),\n value: this.data.ContentP2O5 || 0,\n format: this.format,\n min: 0,\n max: this.factorService.calculate(1000, 'P', 'P2O5'),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentK',\n label: this._getLabelWithUnit('Global__NutrientK', 'kg/m³'),\n value: this.data.ContentK || 0,\n format: this.format,\n min: 0,\n max: 1000,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentK2O',\n label: this._getLabelWithUnit('Global__NutrientK2O', 'kg/m³'),\n value: this.data.ContentK2O || 0,\n format: this.format,\n min: 0,\n max: this.factorService.calculate(1000, 'K', 'K2O'),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentMg',\n label: this._getLabelWithUnit('Global__NutrientMg', 'kg/m³'),\n value: this.data.ContentMg || 0,\n format: this.format,\n min: 0,\n max: 1000,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentMgO',\n label: this._getLabelWithUnit('Global__NutrientMgO', 'kg/m³'),\n value: this.data.ContentMgO || 0,\n format: this.format,\n min: 0,\n max: this.factorService.calculate(1000, 'Mg', 'MgO'),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentMgCO3',\n label: this._getLabelWithUnit('Global__NutrientMgCO3', 'kg/m³'),\n value: this.data.ContentMgO || 0,\n format: this.format,\n min: this.factorService.calculate(0, 'Mg', 'MgCO3'),\n max: this.factorService.calculate(1000, 'Mg', 'MgCO3'),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentCaO',\n label: this._getLabelWithUnit('Global__NutrientCaO', 'kg/m³'),\n value: this.data.ContentCaO || 0,\n infoText: 'Info__CaO',\n format: this.format,\n min: -1000,\n max: 1000,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ContentCaCO3',\n label: this._getLabelWithUnit('Global__Unit_CaCO3', 'kg/m³'),\n value: this.data.ContentCaCO3 || 0,\n format: this.format,\n min: this.factorService.calculate(-1000, 'CaO', 'CaCO3'),\n max: this.factorService.calculate(1000, 'CaO', 'CaCO3'),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'AlkalineEff',\n infoText: 'Info__Alkaline_Effective',\n label: 'Global__Alkaline_Effective',\n value: this.data.AlkalineEff,\n disabled$: this.dynComponent.FormValues$.pipe(map((v) => v['ContentCaO'] < 0))\n }),\n ]\n });\n }\n\n private _getAlkalineFieldset(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'fertilizer3',\n legend: 'Global__Basic_Effect',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'ContentNeutralisationValue',\n infoText: 'Info__Neutralisation_Value',\n label: this._getLabelWithUnit('Global__Neutralisation_Value', 'kg/m³'),\n value: this.data.ContentCaO + (this.data.ContentMgO * 1.391),\n format: this.format,\n disabled$: this.dynComponent.FormValues$.pipe(map((v: IFertilizerInorg) => {\n return !v.AlkalineEff || v.AlkalineCaO > 0;\n })),\n readonly: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'AlkalineCaO',\n infoText: 'Info_Alkaline_Effective_Content',\n label: this._getLabelWithUnit('Global__Alkaline_Effective_Ingredient', 'kg/m³'),\n value: this.data.AlkalineCaO,\n format: this.format,\n min: 0,\n disabled$: this.dynComponent.FormValues$.pipe(map((v: IFertilizerInorg) => {\n return !v.AlkalineEff;\n }))\n }),\n ]\n });\n }\n}\n","import {Component, OnInit, ViewChild} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigTextbox} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {ApDynformsConfigComboBox} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {merge} from 'lodash';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {map} from 'rxjs/operators';\nimport {InstrumentStore} from '../../stores/docu/instrument.store';\nimport {ApDynformsConfigNumerictextbox} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {WorkTypesStore} from '../../stores/base-data/worrktypes.store';\nimport {ListSortOrder, ObjectFactory} from 'ts-tooling';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {Observable, Subscription} from 'rxjs';\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IWorktypes = Data.BaseData.IWorktypes;\n\n/**\n * Component for editing or creating an instrument.\n */\n@Component({\n selector: 'ap-instruments-edit',\n template: `\n \n
\n \n \n
\n
`,\n})\nexport class ApInstrumentsEditComponent implements OnInit {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: any;\n public formConfig: ApDynformsConfigFieldset[];\n public isNewMode = false;\n public worktypes: IWorktypes[];\n public caption: string;\n public saving$: Observable;\n private _subscriptions: Array = [];\n\n constructor(private formStore: FormStore,\n private fb: FormBuilder,\n private instrumentsStore: InstrumentStore,\n private worktypeStore: WorkTypesStore,\n private loginStore: LoginStore) {\n this.worktypes = this.worktypeStore.Listen(s => s.data).getValue();\n this.saving$ = this.instrumentsStore.Listen(s => s.saving);\n this._subscriptions.Add(this.instrumentsStore.Listen(s => s.saved).subscribe(saved => {\n if (saved) {\n this.formStore.closeForm();\n }\n }\n ));\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n FarmId: this.loginStore.SelectedFarmId,\n DefaultWorktype: null,\n };\n } else {\n this.isNewMode = false;\n }\n this.caption = this.isNewMode ? 'Global_Create_Instrument' : 'Global_Edit_Instrument';\n this.formBuilder();\n }\n\n /**\n * binding of validators\n */\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'instruments',\n config: [\n new ApDynformsConfigTextbox({\n key: 'Name',\n label: 'Docu_Ini__Description',\n value: this.data.Name,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'DefaultWidth',\n label: 'Docu_Ini__WorkingWidth',\n value: this.data.DefaultWidth,\n min: 0,\n max: 100,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.max(48), errorKey: 'Text_ValueInvalid'\n }\n ),\n new ApDynformsValidator({\n validator: Validators.min(0), errorKey: 'Text_ValueInvalid'\n }\n )\n ]\n }),\n new ApDynformsConfigComboBox({\n key: 'DefaultWorktype',\n valuePrimitive: false,\n value: this.data.DefaultWorktype || null,\n valueField: 'Id',\n textField: 'Description',\n label: 'Docu_Ini__WorkType',\n options: this.worktypeStore.Listen(s => s.data).pipe(\n map((d) => ObjectFactory.Copy(d).SortBy(['Description'], [ListSortOrder.ASC]))\n ),\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n })\n ]\n })];\n }\n\n /**\n * Submitting the changes.\n * Either creating a new object or updating the current.\n */\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n const instrument = this.data as IInstrument;\n instrument.Type = instrument.DefaultWorktype?.Type;\n if (this.isNewMode) {\n this.instrumentsStore.createInstrument(instrument);\n } else {\n this.instrumentsStore.updateInstrument(instrument);\n }\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {ApDynformsConfigTextbox} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynformsConfigComboBox} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {merge} from 'lodash';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {MachineStore} from '../../stores/docu/machine.store';\nimport {DriverStore} from '../../stores/docu/driver.store';\nimport {InstrumentStore} from '../../stores/docu/instrument.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {Observable, Subscription} from 'rxjs';\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IDriver = Data.DocuContext.Driver.IDriver;\n\n/**\n * Component for editing or creating a machine.\n */\n@Component({\n selector: 'ap-machines-edit',\n template: `\n \n
\n \n \n
\n
`\n})\n\n/**\n * Component for editing or creating a machine.\n */\nexport class ApMachinesEditComponent implements OnInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: IMachine;\n public isNewMode = false;\n public formConfig: ApDynformsConfigFieldset[];\n public drivers: IDriver[];\n public instruments: IInstrument[];\n public caption: string;\n public saving$: Observable;\n private _subscriptions: Array = [];\n\n constructor(private formStore: FormStore,\n private fb: FormBuilder,\n private driversStore: DriverStore,\n private machinesStore: MachineStore,\n private instrumentStore: InstrumentStore,\n private translationStore: TranslationStore,\n private loginStore: LoginStore) {\n this.drivers = this.driversStore.Listen(s => s.data).getValue();\n this.instruments = this.instrumentStore.Listen(s => s.data).getValue();\n this.saving$ = this.machinesStore.Listen(s => s.saving);\n this._subscriptions.Add(this.machinesStore.Listen(s => s.saved).subscribe(saved => {\n if (saved) {\n this.formStore.closeForm();\n }\n }\n ));\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n DefaultDriver: null,\n DefaultInstrument: null,\n DefaultWidth: 0,\n NameWithSign: null,\n HHID: 0,\n Id: undefined,\n IsDeleted: false,\n Kind: 0,\n Name: '',\n Sign: '',\n FarmId: this.loginStore.SelectedFarmId,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n Version: 0,\n };\n } else {\n this.isNewMode = false;\n }\n this.caption = this.isNewMode ? 'Settings__Lbl_Device_Create' : 'Settings__Lbl_Device_Edit';\n this.formBuilder();\n }\n\n /**\n * binding of validators\n */\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'machines',\n config: [\n new ApDynformsConfigComboBox({\n key: 'Kind',\n value: this.data.Kind,\n valuePrimitive: true,\n valueField: 'Id',\n textField: 'Description',\n label: 'Docu_Ini__Type',\n options: this.machinesStore.Listen(s => s.machineTypes),\n translate: true,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Name',\n label: 'Docu_Ini__Name',\n value: this.data.Name,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Sign',\n label: 'Docu_Ini__NumberPlate',\n value: this.data.Sign,\n validators: [\n new ApDynformsValidator({\n validator: Validators.maxLength(20),\n errorKey: 'Global_Not_More_Than_20_Characters'\n }),\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n\n new ApDynformsConfigComboBox({\n key: 'DefaultInstrument',\n value: this.data.DefaultInstrument ? this.data.DefaultInstrument.Id : null,\n valuePrimitive: true,\n valueField: 'Id',\n textField: 'Name',\n label: 'Docu_Ini__Tool_Default',\n options: this.instruments,\n }),\n\n new ApDynformsConfigComboBox({\n key: 'DefaultDriver',\n value: this.data.DefaultDriver ? this.data.DefaultDriver.Id : null,\n valuePrimitive: true,\n valueField: 'Id',\n textField: 'ShortFullName',\n label: 'Docu_Ini__Motorist_Default',\n options: this.drivers,\n })\n\n ]\n })];\n }\n\n /**\n * Submitting the changes.\n * Either creating a new object or updating the current.\n */\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n this.data.DefaultInstrument = this.instruments.Find(ins => ins.Id === this.dynForm.form.get('DefaultInstrument').value);\n this.data.DefaultDriver = this.drivers.Find(ins => ins.Id === this.dynForm.form.get('DefaultDriver').value);\n if (this.isNewMode) {\n this.machinesStore.createMachine(this.data as IMachine);\n } else {\n this.machinesStore.updateMachine(this.data as IMachine);\n }\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n}\n","import {Component, OnInit, ViewChild} from '@angular/core';\nimport {Validators} from '@angular/forms';\nimport {ApDynformsConfigTextbox} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {merge} from 'lodash';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {SubFarmStore} from '../../stores/base-data/subfarm.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport ISubFarms = Data.BaseData.ISubFarms;\n\n@Component({\n selector: 'ap-subfarms-edit',\n template: `\n \n
\n \n \n
\n
`\n})\n\nexport class ApSubFarmsEditComponent implements OnInit {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: any;\n public formConfig: ApDynformsConfigFieldset[];\n public isNewMode = false;\n public caption: string;\n\n constructor(private formStore: FormStore,\n private subFarmStore: SubFarmStore,\n private loginStore: LoginStore) {\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n Id: undefined,\n FarmId: this.loginStore.SelectedFarmId,\n City: '',\n Email: '',\n Fax: '',\n Name: '',\n Nummer: '',\n Postalcode: '',\n Street: '',\n Telephone_Nr: ''\n };\n } else {\n this.isNewMode = false;\n }\n this.caption = this.isNewMode ? 'Settings__Lbl_Boa_Create' : 'Settings__Lbl_Boa_Edit';\n this.formBuilder();\n }\n\n /**\n * binding of validators\n */\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'subfarms',\n config: [\n new ApDynformsConfigTextbox({\n key: 'Nummer',\n label: 'Base__ManagementStyle_Number',\n value: this.data.Nummer,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Name',\n label: 'Global__Name',\n value: this.data.Name,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Street',\n label: 'Lbl_Order_Streetno',\n value: this.data.Street,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Postalcode',\n label: 'Global__ZipCode',\n value: this.data.Postalcode,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'City',\n label: 'Global__City',\n value: this.data.City,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Email',\n label: 'Global__Email',\n value: this.data.Email,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.pattern('^[-_.\\\\w]+@([0-9a-zA-Z][-\\\\w]*[0-9a-zA-Z]\\\\.){1,300}[a-zA-Z]{2,9}$'),\n errorKey: 'Admin_Pages_Login_Reset_Password_Email_Error'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Telephone_Nr',\n label: 'Global__Telephon',\n value: this.data.Telephone_Nr,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Fax',\n label: 'Docu_Ini__Fax',\n value: this.data.Fax,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n })\n ]\n })];\n }\n\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n if (this.isNewMode) {\n this.subFarmStore.createSubFarm(this.data as ISubFarms);\n } else {\n this.subFarmStore.updateSubFarm(this.data as ISubFarms);\n }\n this.formStore.closeForm();\n }\n\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {Validators} from '@angular/forms';\nimport {merge} from 'lodash';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigTextbox,\n ApDynformsConfigTextboxType\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {ApDynformsConfigCheckbox} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {UserContactsStore} from '../../stores/base-data/user.contacts.store';\nimport {Observable, Subscription} from 'rxjs';\nimport IUserContacts = Data.BaseData.IUserContacts;\n\nenum UserContactEditMode {\n CREATE = 0,\n EDIT = 1\n}\n\n@Component({\n selector: 'ap-user-contacts-edit',\n template: `\n \n
\n \n \n
\n
`,\n})\nexport class ApUserContactsEditComponent implements OnInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: IUserContacts;\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n public saving$: Observable;\n private editMode: UserContactEditMode;\n private _subscriptions: Array = [];\n\n constructor(private formStore: FormStore,\n private userContactsStore: UserContactsStore) {\n this.saving$ = this.userContactsStore.Listen(s => s.saving);\n this._subscriptions.Add(this.userContactsStore.Listen(s => s.saved).subscribe(saved => {\n if (saved) {\n this.formStore.closeForm();\n }\n }\n ));\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n if (!this.data) {\n this.editMode = UserContactEditMode.CREATE;\n this.data = {\n Id: undefined,\n Lastname: '',\n Firstname: '',\n FarmName: '',\n MailAddress: '',\n IsActive: false,\n FarmId: undefined,\n Version: 0,\n ChangedAt: undefined,\n ChangedBy: undefined,\n CreatedAt: undefined,\n CreatedBy: undefined,\n DeletedAt: undefined,\n DeletedBy: undefined\n };\n } else {\n this.editMode = UserContactEditMode.EDIT;\n }\n this.caption = this.editMode === UserContactEditMode.CREATE ? 'Global_Contact_Create' : 'Global_Contact_Edit';\n this.formBuilder();\n }\n\n\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'Global__General_Information',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigTextbox({\n key: 'Firstname',\n label: 'Global__Forename',\n type: ApDynformsConfigTextboxType.Text,\n value: this.data?.Firstname,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n }),\n new ApDynformsValidator({\n validator: Validators.nullValidator,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(1),\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'Lastname',\n label: 'Global__Name',\n type: ApDynformsConfigTextboxType.Text,\n value: this.data?.Lastname,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n }),\n new ApDynformsValidator({\n validator: Validators.nullValidator,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(1),\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'FarmName',\n label: 'Global_Organization',\n type: ApDynformsConfigTextboxType.Text,\n value: this.data?.FarmName,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n }),\n new ApDynformsValidator({\n validator: Validators.nullValidator,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(1),\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'MailAddress',\n label: 'Global__Email',\n type: ApDynformsConfigTextboxType.Email,\n value: this.data?.MailAddress,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n }),\n new ApDynformsValidator({\n validator: Validators.email,\n errorKey: 'Admin_Pages_Login_Reset_Password_Email_Error'\n }),\n new ApDynformsValidator({\n validator: Validators.nullValidator,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(1),\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'IsActive',\n label: 'Global__Active',\n value: this.data?.IsActive,\n })\n ]\n })\n ];\n }\n\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n if (this.editMode === UserContactEditMode.CREATE) {\n this.userContactsStore.createUserContact(this.data);\n } else {\n this.userContactsStore.updateUserContact(this.data);\n }\n }\n\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n}\n","import {AfterContentInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {\n ApDynformsConfigCheckbox\n} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApDynformsConfigMultiSelect\n} from '../../ap-dynforms/config/ap-dynforms-config-multiselect';\nimport {Subscription} from 'rxjs';\nimport {filter, find, merge, remove} from 'lodash';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApGetAvailableUserGroupsPipe\n} from '../../stores/pipes/ap-get-available-usergroups.pipe';\nimport {\n ApGetAssignedUserGroupsPipe\n} from '../../stores/pipes/ap-get-assigned-usergroups.pipe';\nimport {InstrumentStore} from '../../stores/docu/instrument.store';\nimport {WorkTypesStore} from '../../stores/base-data/worrktypes.store';\nimport {FarmUsersStore} from '../../stores/farm/farm.users.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport IFarmUser = Data.Authentication.IFarmUsers;\nimport IUsergroup = Data.AccessPermission.IUsergroup;\nimport IFarm = Data.Authentication.IFarm;\nimport IUser = Data.Authentication.IUser;\n\n@Component({\n selector: 'ap-users-assignment-farm-edit',\n template: `\n \n
\n \n \n
\n
`\n})\nexport class ApUsersAssignmentFarmEditComponent implements OnInit, AfterContentInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: IFarmUser;\n public allFarms: IFarm[];\n public allUsers: IUser[];\n public formConfig: ApDynformsConfigFieldset[];\n public isNewMode = false;\n public caption: string;\n private subscriptions: Array = [];\n public listUsergroupItems: Array<{ text: string, value: number }> = [];\n public assignedUserGroups: Array<{ text: string, value: number }> = [];\n\n constructor(private formStore: FormStore,\n private fb: FormBuilder,\n private instrumentsStore: InstrumentStore,\n private worktypeStore: WorkTypesStore,\n private loginStore: LoginStore,\n private farmUsersStore: FarmUsersStore,\n private getAvailableUserGroups: ApGetAvailableUserGroupsPipe,\n private getAssignedUserGroups: ApGetAssignedUserGroupsPipe) {\n this.allFarms = this.loginStore.Farms;\n }\n\n ngOnInit(): void {\n this.listUsergroupItems = [];\n this.assignedUserGroups = [];\n if (!this.data) {\n this.isNewMode = true;\n const user: IUser = {\n Id: undefined,\n EMail: '',\n SessionHash: '',\n RoleId: undefined,\n Phone: '',\n PasswordHash: '',\n Mobile: '',\n LastReadNews: undefined,\n Language: '',\n IsLocked: undefined,\n FAX: '',\n RoleType: undefined,\n Surname: '',\n UserName: '',\n Forename: '',\n IsConsultant: undefined,\n RedirectToNews: true\n };\n const usergroup: IUsergroup = {\n Farm_Id: undefined,\n Id: undefined,\n Name: '',\n Group: undefined,\n Group_Id: undefined\n };\n const usergroups: IUsergroup[] = [];\n usergroups.push(usergroup);\n this.data = {\n Id: undefined,\n User: user,\n UserId: undefined,\n BranchOfActivityId: undefined,\n Farm: this.loginStore.SelectedFarm,\n FarmId: this.loginStore.SelectedFarmId,\n IsActive: true,\n IsDriver: false,\n Driver: undefined,\n UsergroupUser: [],\n };\n } else {\n this.isNewMode = false;\n }\n this.caption = 'Global_User_Assignment_Edit';\n this.listUsergroupItems = this.getAvailableUserGroups.transform();\n this.assignedUserGroups = this.getAssignedUserGroups.transform();\n this.getDataFromStore();\n this.formBuilder();\n\n }\n\n onChanges(): void {\n setTimeout(() => {\n this.dynForm.form.get('FarmId').valueChanges.subscribe(val => {\n const notAssigned = [];\n const currentFarmUsers = filter(this.farmUsersStore.getFarmUsers(), sf => sf.FarmId === val);\n for (const aU of this.allUsers) {\n const found = find(currentFarmUsers, cFU => cFU.UserId === aU.Id);\n if (!found) {\n notAssigned.push(aU);\n }\n }\n if (this.isNewMode) {\n remove(this.allUsers, () => {\n return true;\n });\n for (const nA of notAssigned) {\n this.allUsers.push(nA);\n }\n }\n });\n }, 100);\n }\n\n\n /**\n * when the component is loaded\n */\n ngAfterContentInit(): void {\n\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n\n getDataFromStore(): void {\n\n }\n\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'Global__General_Information',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigComboBox({\n key: 'FarmId',\n value: this.data.FarmId,\n valueField: 'Id',\n textField: 'FarmName',\n valuePrimitive: true,\n label: 'Global__Farm',\n options: this.allFarms,\n disabled: !this.isNewMode,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n }),\n ]\n }),\n\n new ApDynformsConfigComboBox({\n key: 'UserId',\n value: this.data.UserId,\n valueField: 'Id',\n textField: 'UserName',\n valuePrimitive: true,\n label: 'Global__Employees',\n options: this.allUsers,\n disabled: !this.isNewMode,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n }),\n ]\n }),\n\n new ApDynformsConfigMultiSelect({\n key: 'Usergroups',\n value: this.assignedUserGroups,\n valueField: 'value',\n textField: 'text',\n label: 'Global_User_Groups',\n options: this.listUsergroupItems,\n valuePrimitive: false,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n }),\n ]\n }),\n\n new ApDynformsConfigCheckbox({\n key: 'IsActive',\n label: 'Global__Active',\n value: this.data.IsActive,\n }),\n\n new ApDynformsConfigCheckbox({\n key: 'Worker',\n label: 'Global__Worker',\n value: this.data.IsDriver,\n }),\n ]\n })\n ];\n this.onChanges();\n }\n\n /**\n * Submitting the changes.\n * Either creating a new object or updating the current.\n */\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n this.formStore.closeForm();\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {AfterContentInit, Component, ViewChild} from '@angular/core';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {filter, find, merge, remove} from 'lodash';\nimport {ApDynformsConfigComboBox} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynformsConfigTextbox,\n ApDynformsConfigTextboxType\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApGetAvailableUserGroupsPipe} from '../../stores/pipes/ap-get-available-usergroups.pipe';\nimport {DriverStore} from '../../stores/docu/driver.store';\nimport {InvitationStore} from '../../stores/login/invitation.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport IDriver = Data.DocuContext.Driver.IDriver;\n\n@Component({\n selector: 'ap-users-invitation-edit',\n template: `\n \n
\n \n \n
\n
`\n})\n\nexport class ApUsersInvitationEditComponent implements AfterContentInit {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: any;\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n public listUsergroupItems: Array<{ text: string, value: number }> = [];\n public isNewMode = false;\n public drivers: IDriver[];\n public listDriverItems: Array<{ text: string, value: System.IGuid }> = [];\n\n constructor(private formStore: FormStore,\n private fb: FormBuilder,\n private invitationStore: InvitationStore,\n private translationStore: TranslationStore,\n private driverStore: DriverStore,\n private getAvailableUserGroups: ApGetAvailableUserGroupsPipe) {\n }\n\n ngAfterContentInit(): void {\n this.caption = 'Global_User_Create';\n this.getDataFromStore();\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n Id: undefined,\n Usergroupid: this.listUsergroupItems.find(_ => _.text === this.translationStore.FindTranslationForSelectedLanguage('Permission_Group_Administrator'))?.value,\n Isdriver: false,\n Email: '',\n DriverId: undefined\n };\n }\n this.createDriverCheckbox();\n this.formBuilder();\n this.check();\n }\n\n getDataFromStore(): void {\n this.drivers = this.driverStore.Listen(s => s.data).getValue();\n this.listUsergroupItems = this.getAvailableUserGroups.transform();\n }\n\n createDriverCheckbox(): void {\n this.listDriverItems.push({\n value: null,\n text: '<' + this.translationStore.FindTranslationForSelectedLanguage('Global_No_Worker') + '>'\n });\n this.listDriverItems.push({\n value: -1,\n text: '<' + this.translationStore.FindTranslationForSelectedLanguage('Global_New_Worker') + '>'\n });\n\n this.listDriverItems = this.drivers.map(d => ({\n text: `${d.Name}, ${d.Firstname}`,\n value: d.Id\n })).sort((a, b) => a.text !== b.text ? a.text < b.text ? -1 : 1 : 0);\n }\n\n check(): void {\n setTimeout(() => {\n const check = filter(this.invitationStore.getInvitation(), _ => _.Usergroupid === this.data.Usergroupid && _.Email === this.data.Email);\n for (const inv of check) {\n if (inv.Email === this.data.Email && inv.Usergroupid === this.data.Usergroupid) {\n remove(this.listUsergroupItems, _ => _.value === inv.Usergroupid);\n }\n }\n }, 100);\n }\n\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'Global__General_Information',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigComboBox({\n key: 'Usergroupid',\n valueField: 'value',\n textField: 'text',\n valuePrimitive: true,\n value: this.data.Usergroupid,\n label: 'Global_User_Group',\n disabled: true,\n options: this.listUsergroupItems,\n /*validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n }),\n ]*/\n }),\n new ApDynformsConfigTextbox({\n key: 'Email',\n label: 'Global__Email',\n type: ApDynformsConfigTextboxType.Email,\n value: this.data.Email,\n disabled: !this.isNewMode,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n }),\n new ApDynformsValidator({\n validator: Validators.email,\n errorKey: 'Admin_Pages_Login_Reset_Password_Email_Error'\n }),\n new ApDynformsValidator({\n validator: Validators.nullValidator,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(1),\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.pattern('^[-_.\\\\w]+@([0-9a-zA-Z][-\\\\w]*[0-9a-zA-Z]\\\\.){1,300}[a-zA-Z]{2,9}$'),\n errorKey: 'Admin_Pages_Login_Reset_Password_Email_Error'\n })\n ]\n }),\n new ApDynformsConfigComboBox({\n key: 'Driver',\n valueField: 'value',\n textField: 'text',\n valuePrimitive: true,\n value: this.data.DriverId || null,\n label: 'Global__Worker',\n options: this.listDriverItems,\n })\n ]\n })\n ];\n }\n\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n const driver = this.dynForm.form.get('Driver').value;\n let isDriver = false;\n if (driver === -1) {\n isDriver = true;\n }\n const found = !!find(this.drivers, _ => _.Id === driver);\n if (found) {\n isDriver = true;\n }\n if (this.isNewMode) {\n const inv = {\n Email: this.data.Email,\n UserGroupId: this.data.Usergroupid,\n IsDriver: isDriver,\n DriverId: (isDriver === true && found === true) ? find(this.drivers, _ => _.Id === driver).Id : null\n };\n this.invitationStore.create(inv);\n } else {\n const inv = {\n Id: this.data.Id,\n UserGroupId: this.data.Usergroupid,\n IsDriver: isDriver,\n DriverId: (isDriver === true && found === true) ? find(this.drivers, _ => _.Id === driver).Id : null\n };\n this.invitationStore.update(inv);\n }\n this.formStore.closeForm();\n }\n\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport IAttachmentApplication = Data.DocuContext.Attachment.IAttachmentApplication;\nimport IWorktypes = Data.BaseData.IWorktypes;\n\n/**\n * action applications\n */\n@Component({\n selector: 'ap-action-applications',\n templateUrl: 'ap-action-applications.component.html',\n})\nexport class ApActionApplicationsComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() application: IAttachmentApplication;\n @Input() formGroup: FormGroup;\n @Input() index: number;\n @Input() workType: IWorktypes;\n @Output() delete = new EventEmitter();\n @Output() applicationChange = new EventEmitter(true);\n\n public form: FormGroup;\n public units: BehaviorSubject<{ value: string, text: string }[]> = new BehaviorSubject<{value: string, text: string}[]>([]);\n public value = 0;\n private _addControl = new EventEmitter<{ index: number, form: FormGroup }>(true);\n private _subscriptions: Subscription[] = [];\n private _newValues;\n\n /**\n * connect to the stores\n */\n constructor(private fb: FormBuilder,\n private translationStore: TranslationStore) {\n this._subscriptions.push(\n this._addControl.subscribe((d: { index: number, form: FormGroup }) => {\n if (!this.formGroup.get('Attachment.Application')) {\n if (!this.formGroup.get('Attachment')) {\n this.formGroup.addControl('Attachment', new FormGroup({}));\n }\n (this.formGroup.get('Attachment') as FormGroup).addControl('Application', new FormArray([]));\n }\n const application = this.formGroup.get('Attachment.Application') as FormArray;\n if (application) {\n if (application.at(d.index)) {\n application.setControl(d.index, d.form);\n } else {\n application.insert(d.index, d.form);\n }\n }\n })\n );\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n this.formBuilder();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('workType')) {\n this._setWorkTypeUnits();\n if (this.form && this.form.get('Unit')) {\n if (this.units.getValue().map(u => u.value).indexOf(this.form.get('Unit').value) === -1) {\n this.form.get('Unit').setValue(\n this.workType && this.workType.Unit.length ? this.workType.Unit[0] : '');\n }\n }\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * binding of validators\n */\n formBuilder(): void {\n this.value = this.getValue(this.application.Value);\n this._setWorkTypeUnits();\n let unit = this.application.Unit;\n if (!unit) {\n unit = this.application.Unit[0];\n }\n this.form = this.fb.group({\n Key: [this.application.Key, [Validators.required]],\n Value: [this.value, Validators.required],\n Unit: unit,\n });\n\n this._subscriptions.push(this.form.valueChanges.subscribe((values: IAttachmentApplication) => {\n this._newValues = values;\n }));\n\n if (this.formGroup) {\n this._addControl.emit({\n index: this.index,\n form: this.form,\n });\n }\n }\n\n /**\n * on delete button click event\n */\n onDeleteClick(): void {\n this.delete.emit(this.index);\n const applications = this.formGroup.get('Attachment.Application') as FormArray;\n if (applications) {\n applications.removeAt(this.index);\n }\n }\n\n /**\n * get the value\n */\n getValue(value: any): number {\n return isNaN(parseFloat(value)) ? 0 : parseFloat(value);\n }\n\n public onBlur(): void {\n if (!!this._newValues) {\n this.applicationChange.emit(this._newValues);\n }\n }\n\n private _setWorkTypeUnits(): void {\n const wtUnit = this.translationStore.FindTranslationForSelectedLanguage(this.workType.Wt_Unit);\n this.units.next(this.workType.Unit.map((u) => ({value: u, text: `${u} / ${wtUnit}`})));\n }\n}\n","
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n","import {ChangeDetectionStrategy, Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild} from '@angular/core';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport * as moment from 'moment';\nimport {\n ApDocuUtils\n} from '../../docu/utils/ap-docu-utils';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigDatepicker\n} from '../../ap-dynforms/config/ap-dynforms-config-datepicker';\nimport {\n ApDynformsConfigTimepicker\n} from '../../ap-dynforms/config/ap-dynforms-config-timepicker';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsConfigCheckbox\n} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {map} from 'rxjs/operators';\nimport {\n MachineStore\n} from '../../stores/docu/machine.store';\nimport {\n DriverStore\n} from '../../stores/docu/driver.store';\nimport {\n InstrumentStore\n} from '../../stores/docu/instrument.store';\nimport {\n SettingsStore\n} from '../../stores/base-data/settings.store';\nimport {\n MachineLoggerStore\n} from '../../stores/docu/machine.logger.store';\nimport {\n DriverMachineStore\n} from '../../stores/docu/driver.machine.store';\nimport {\n FieldStore\n} from '../../stores/farm/field.store';\nimport {\n WorkTypesStore\n} from '../../stores/base-data/worrktypes.store';\nimport {\n FormStore\n} from '../../stores/layout/form.store';\nimport {\n FleetActionAttachmentStore\n} from '../../stores/docu/fleet.action.attachment.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n LoginStore\n} from '../../stores/login/login.store';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {\n ApDateService\n} from '../../ap-core/services/ap-date-service';\nimport {\n ApGetUtcDatePipe\n} from '../../stores/pipes/ap-get-utc-date.pipe';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n SliceStore\n} from '../../stores/docu/slice.store';\nimport {ApGuidUtil} from '../../ap-utils';\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IDriverMachine = Data.DocuContext.DriversMachines.IDriverMachine;\nimport IField = Data.FieldManagement.IField;\nimport IFleetActionAttachment = Data.DocuContext.FleetManagement.IFleetActionAttachment;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IFieldBase = Data.FieldManagement.IFieldBase;\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport ActionType = Data.Authentication.Enums.ActionType;\n\n/**\n * Component for the edit action\n */\n@Component({\n selector: 'ap-edit-action',\n template: `\n \n \n
\n {{'Docu_Ini__Medium' | translate}} {{i + 1}}\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 changeDetection: ChangeDetectionStrategy.Default\n})\nexport class ApEditActionComponent implements OnInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true})\n public dynComponent: ApDynComponentComponent;\n public caption = '';\n public applications = [];\n public data: IFleetActionAttachment;\n public driverMachines: IDriverMachine[];\n public fields: IField[];\n public field: IField;\n public moment = moment;\n public drivers: IDriver[];\n public fromDate: Date;\n public toDate: Date;\n public fieldsets: ApDynformsConfigFieldset[] = [];\n public selectedWorkType: IWorktypes = null;\n public worktypes: IWorktypes[] = [];\n public valid = true;\n public harvestEnd: boolean;\n @Output()\n public closeMe = new EventEmitter();\n\n private _machines = new BehaviorSubject([]);\n private _maxArea = new BehaviorSubject(undefined);\n private _maxDuration = new BehaviorSubject(new Date(Date.UTC(0, 0, 0, 23, 59, 59)));\n private _minDate = new BehaviorSubject(undefined);\n private _subscriptions: Subscription[] = [];\n\n constructor(private formStore: FormStore,\n private fb: FormBuilder,\n private fleetActionAttachmentStore: FleetActionAttachmentStore,\n private driverMachineStore: DriverMachineStore,\n private driverStore: DriverStore,\n private instrumentStore: InstrumentStore,\n private loginStore: LoginStore,\n private fieldStore: FieldStore,\n private sliceStore: SliceStore,\n private machinesLoggerStore: MachineLoggerStore,\n private machineStore: MachineStore,\n private settingsStore: SettingsStore,\n private translationStore: TranslationStore,\n private worktypeStore: WorkTypesStore,\n private dateService: ApDateService,\n private getUTCDatePipe: ApGetUtcDatePipe,\n private languageStore: LanguageStore) {\n }\n\n private get attValidControl(): AbstractControl {\n return this.dynComponent.getForm().get('Attachment.Valid');\n }\n\n private get attInstrumentControl(): AbstractControl {\n return this.dynComponent.getForm().get('Attachment.Instrument');\n }\n\n private get attWorkTypeControl(): AbstractControl {\n return this.dynComponent.getForm().get('Attachment.WorkType');\n }\n\n private get attWorkingWidthControl(): AbstractControl {\n return this.dynComponent.getForm().get('Attachment.WorkingWidth');\n }\n\n private get dateControl(): AbstractControl {\n return this.dynComponent.getForm().get('Date');\n }\n\n private get fieldControl(): AbstractControl {\n return this.dynComponent.getForm().get('Field');\n }\n\n private get workedAreaControl(): AbstractControl {\n return this.dynComponent.dynForm.form.get('Worked_Area');\n }\n\n private get timeFromControl(): AbstractControl {\n return this.dynComponent.getForm().get('TimeFrom');\n }\n\n private get timeToControl(): AbstractControl {\n return this.dynComponent.getForm().get('TimeTo');\n }\n\n private get durationControl(): AbstractControl {\n return this.dynComponent.getForm().get('Duration');\n }\n\n private get attMachineControl(): AbstractControl {\n return this.dynComponent.getForm().get('Attachment.Machine');\n }\n\n private get traversedAreaControl(): AbstractControl {\n return this.dynComponent.getForm().get('Traversed_Area');\n }\n\n /**\n * replace decimal\n */\n static replacedecimal(val, fixed): string {\n if (typeof val === typeof undefined || val === null) {\n return val;\n }\n let r;\n if (isNaN(fixed)) {\n r = val.toString().replace(/\\./g, '.');\n } else {\n r = Number(val).toFixed(fixed).replace(/\\./g, '.');\n }\n return r;\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n this.harvestEnd = this._getHarvestEnd(this.data);\n if (!!this.data) {\n if (this.data.Attachment.Application) {\n this.applications = this.data.Attachment.Application;\n }\n this.field = this.fieldStore.getFieldById(this.data.FieldId);\n let details = this.translationStore.FindTranslationForSelectedLanguage('Global__Details');\n if (this.field) {\n details = details.concat(`: ${this.field.FieldName}`);\n }\n this.fromDate = this.dateService.toFarmDateFromUtcGetJsDate(this.data.Attachment.From);\n this.toDate = this.dateService.toFarmDateFromUtcGetJsDate(this.data.Attachment.To);\n this._machines.next([this.data.Attachment.Machine]);\n this.caption = details;\n } else {\n this.caption = this.translationStore.FindTranslationForSelectedLanguage('Global__Action_generate');\n }\n this._getDataFromStore();\n this._formBuilder();\n this.dynComponent.dynForm.initialized.subscribe(() => {\n this.attWorkingWidthControl.valueChanges.subscribe(async ww => {\n if (!this.data || !this.data.Slices) {\n return;\n }\n this.data.Slices = await this.sliceStore.calculateBruttoNettoArea(this.data.Slices, ww);\n this.workedAreaControl.setValue(this.getNettoArea());\n this.traversedAreaControl.setValue(this.getBruttoArea());\n });\n });\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * on submit button click event\n */\n onSubmitClick(): void {\n let data: IFleetActionAttachment = this.dynComponent.getForm().getRawValue();\n const harvestEnd = this.dynComponent.getFormValue()['HarvestEnd'];\n\n if (this.dynComponent.valid || (!data.Attachment.Valid && this.data)) {\n\n if (harvestEnd !== this.harvestEnd) {\n const field: IField = this.dynComponent.getFormValue()['Field'];\n if (field && field.FieldCrops.length) {\n if (this.data) {\n data = ObjectFactory.Merge(ObjectFactory.Copy(this.data), data);\n }\n const fieldCrop = field.FieldCrops[0];\n fieldCrop.HarvestAttachment = harvestEnd ? data.Attachment : null;\n this.fieldStore.saveFieldCrops([fieldCrop]);\n }\n }\n\n if (harvestEnd === this.harvestEnd || !harvestEnd) {\n if (this.data) {\n data = ObjectFactory.Copy(ObjectFactory.Merge(ObjectFactory.Copy(this.data), data));\n this._update(data);\n } else {\n this._save(data);\n }\n }\n\n this.formStore.closeForm();\n } else {\n this.dynComponent.dynForm.markAsTouched();\n }\n }\n\n /**\n * on cancel button click event\n */\n onCancelClick(): void {\n setTimeout(() => this.formStore.closeForm(), 1);\n }\n\n /**\n * on add application button click event\n */\n onAddApplicationClick(): void {\n const workType = this.dynComponent.getForm().get('Attachment.WorkType').value;\n if (workType) {\n this.applications.push({Key: '', Value: undefined, Unit: workType.Unit[0]});\n } else {\n this.applications.push({Key: '', Value: undefined, Unit: ''});\n }\n }\n\n /**\n * on delete application button click event\n */\n onDelete($event: number): void {\n this.applications.splice($event, 1);\n }\n\n /**\n * get the duration\n */\n getDuration(): Date {\n return this.data ? ApDocuUtils.getDurationOfSlices(this.data.Slices).toDate() : null;\n }\n\n /**\n * get the time of no use\n */\n getStandStillTime(): Date {\n return this.data ?\n ApDocuUtils.getStandStillTimeOfSlices(this.data.Slices).toDate() :\n ApDocuUtils.getDuration(new Date(0)).toDate();\n }\n\n getBruttoArea(): number {\n return this.data ? this.data.Slices.Reduce((val, s) => s.BruttoArea + val, 0) : 0;\n }\n\n getNettoArea(): number {\n return this.data ? this.data.Slices.Reduce((val, s) => s.NettoArea + val, 0) : 0;\n }\n\n /**\n * retrieves all data from the store\n */\n private _getDataFromStore(): void {\n this.fieldStore.Listen(s => s.data).subscribe(f => this.fields = f);\n this.worktypeStore.Listen(s => s.data).subscribe(w => {\n this.worktypes = w;\n });\n this.driverStore.Listen(s => s.data).subscribe(drivers => {\n this.drivers = [...drivers];\n });\n this.driverMachines = this.driverMachineStore.getDriverMachine();\n }\n\n /**\n * binding of validators\n */\n private _formBuilder(): void {\n const language = this.languageStore.SelectedLanguage;\n let driver = null;\n const requiredValidators = [];\n if (!!this.data) {\n driver = this.drivers.find((d) => d.Id === this.data.Attachment?.Driver?.Id);\n driver = driver ? driver : null;\n } else {\n requiredValidators.push(new ApDynformsValidator({validator: Validators.required, errorKey: ''}));\n }\n\n this.fieldsets = [\n new ApDynformsConfigFieldset({\n legend: 'Settings__Lbl_Measure_Edit',\n key: 'Settings__Lbl_Measure_Edit',\n config: [\n new ApDynformsConfigDatepicker({\n label: 'Docu_Ini__Date',\n key: 'Date',\n value: this.fromDate,\n disabled: !!this.data,\n format: language.DateFormat,\n validators: requiredValidators\n }),\n new ApDynformsConfigTimepicker({\n label: 'Docu_Ini__From',\n key: 'TimeFrom',\n value: this.fromDate,\n disabled: !!this.data,\n format: 'HH:mm',\n minSteps: 5,\n secSteps: 60,\n validators: requiredValidators\n }),\n new ApDynformsConfigComboBox({\n label: 'Docu_Ini__Field',\n key: 'Field',\n value: this.field ? this.field : {},\n options: this.fieldStore.Listen(s => s.data),\n loading: this.fieldStore.Listen(s => s.loading),\n valuePrimitive: false,\n disabled: !!this.data,\n valueField: 'Id',\n textField: 'FieldName',\n validators: requiredValidators\n }),\n new ApDynformsConfigTimepicker({\n label: 'Docu_Ini__To', key: 'TimeTo', value: this.toDate,\n disabled: !!this.data, format: 'HH:mm',\n minDate: this._minDate, minSteps: 5, secSteps: 60,\n validators: requiredValidators\n }),\n new ApDynformsConfigNumerictextbox({\n label: 'Global_Traversed_Area', key: 'Traversed_Area',\n disabled: true, value: this.getBruttoArea(),\n }),\n new ApDynformsConfigTimepicker({\n label: 'Docu_Ini__Duration',\n key: 'Duration',\n value: this.getDuration(),\n disabled: true,\n format: 'HH:mm',\n validators: requiredValidators\n }),\n new ApDynformsConfigNumerictextbox({\n label: 'Global_Worked_Area',\n key: 'Worked_Area',\n disabled: !!this.data, value: this.getNettoArea(),\n min: 0,\n max: this._maxArea,\n dynamicSteps: 0.1,\n validators: requiredValidators\n }),\n new ApDynformsConfigTimepicker({\n label: 'Docu_Ini__TimeOfNonuse',\n key: 'TimeOfNonuse',\n value: this.getStandStillTime(),\n disabled: !!this.data, format: 'HH:mm',\n maxDate: this._maxDuration,\n validators: requiredValidators,\n minSteps: 5,\n secSteps: 60\n }),\n new ApDynformsConfigCheckbox({\n label: 'Global_Valid_Measure',\n key: 'Attachment.Valid',\n value: this.data?.Attachment.Valid ?? true\n }),\n new ApDynformsConfigCheckbox({\n label: 'Docu_Pages__Harvest_Completion',\n key: 'HarvestEnd',\n value: this.harvestEnd\n }),\n ]\n }),\n new ApDynformsConfigFieldset({\n legend: 'Settings__Lbl_Menu_Resources',\n key: 'Settings__Lbl_Menu_Resources',\n config: [\n new ApDynformsConfigComboBox({\n label: 'Docu_Ini__Engine',\n key: 'Attachment.Machine',\n disabled: !!this.data,\n options: this._machines,\n value: this.data ? this.data.Attachment.Machine : null,\n valuePrimitive: false,\n textField: 'Name',\n valueField: 'Id',\n sort: 1,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })],\n dependsOn: [\n 'Date'\n ]\n }),\n new ApDynformsConfigComboBox({\n label: 'Docu_Ini__Tool',\n key: 'Attachment.Instrument',\n textField: 'Name',\n options: this.instrumentStore.Listen(s => s.data),\n valueField: 'Id',\n valuePrimitive: false,\n value: this.data ? this.data.Attachment.Instrument : null,\n placeholder: 'Settings__Msg_Vali_Value_Required',\n sort: 1,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n })]\n }),\n new ApDynformsConfigComboBox({\n label: 'Docu_Ini__WorkType',\n disabled: true,\n key: 'Attachment.WorkType',\n textField: 'Description',\n valueField: 'Id',\n options: this.worktypeStore.getWorkTypes(),\n valuePrimitive: false,\n sort: 1,\n value: this.data ? this.data.Attachment.WorkType : null,\n }),\n new ApDynformsConfigNumerictextbox({\n disabled: true,\n label: 'Docu_Ini__WorkingWidth',\n key: 'Attachment.WorkingWidth',\n value: this.data ? this.data.Attachment.WorkingWidth : 0,\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n decimals: 2,\n format: 'n1',\n step: 0.1\n }),\n new ApDynformsConfigComboBox({\n label: 'Docu_Ini__Motorist',\n key: 'Attachment.Driver',\n textField: 'FullName',\n options: this.drivers,\n valueField: 'Id',\n valuePrimitive: false,\n value: driver,\n sort: 1\n }),\n new ApDynformsConfigTextbox({\n label: 'Global__Comment',\n key: 'Attachment.Comment',\n value: this.data ? this.data.Attachment.Comment : ''\n }),\n ]\n }),\n ];\n\n setTimeout(() => {\n if (this.attValidControl) {\n this._subscriptions.push(this.attValidControl.valueChanges.subscribe(\n (valid) => this.valid = valid));\n }\n\n if (this.attInstrumentControl) {\n this._subscriptions.push(this.attInstrumentControl.valueChanges.subscribe(\n (instrument: IInstrument) => {\n this.attWorkTypeControl.setValue(instrument ? instrument.DefaultWorktype : null);\n this.attWorkingWidthControl.setValue(instrument ? instrument.DefaultWidth : null);\n }));\n }\n\n if (this.attWorkTypeControl) {\n this._subscriptions.push(this.attWorkTypeControl.valueChanges.subscribe(\n (workType: IWorktypes) => {\n this.selectedWorkType = workType;\n }));\n this.selectedWorkType = this.attWorkTypeControl.value;\n }\n\n if (!this.data) {\n this._subscriptions.push(combineLatest([\n this.machineStore.Listen(s => s.data),\n this.machinesLoggerStore.Listen(s => s.data),\n this.dateControl.valueChanges]).pipe(\n map(([machines, machinesLogger, dateValue]) => {\n const date: Date = dateValue;\n return machines.filter(m =>\n !machinesLogger.some(ml =>\n ml.Machine.Id === m.Id &&\n new Date(ml.DateFrom).valueOf() <= date.valueOf() &&\n date.valueOf() <= new Date(ml.DateTo).valueOf()));\n })\n ).subscribe(m => this._machines.next(m)));\n\n if (this.fieldControl) {\n this._subscriptions.push(this.fieldControl.valueChanges.subscribe(\n (fieldBase: IFieldBase) => {\n const field = this.fieldStore.getFieldById(fieldBase.Id);\n const geom = this.fieldStore.getCurrentFieldGeom(field);\n if (field && geom) {\n this.workedAreaControl.setValue(geom ? geom.AreaHa : 0);\n this._maxArea.next(geom ? geom.AreaHa : 0);\n } else {\n this.workedAreaControl.setValue(undefined);\n this._maxArea.next(undefined);\n }\n }\n ));\n }\n\n if (this.timeFromControl) {\n this._subscriptions.push(this.timeFromControl.valueChanges.subscribe(\n (from: Date) => {\n if (from) {\n this._minDate.next(from);\n } else {\n this._minDate.next(new Date(Date.UTC(0, 0, 0)));\n }\n const to: Date = this.timeToControl.value;\n if (to) {\n const duration = ApDocuUtils.getDuration(new Date(moment(to).diff(moment(from)))).toDate();\n this.durationControl.setValue(duration, {emitEvent: false});\n if (duration.toString() !== 'Invalid Date') {\n this._maxDuration.next(duration);\n }\n if (to.valueOf() < from.valueOf()) {\n this.timeToControl.setValue(from);\n }\n }\n }\n ));\n }\n\n if (this.timeToControl) {\n this._subscriptions.push(this.timeToControl.valueChanges.subscribe(\n (to: Date) => {\n const from: Date = this.timeFromControl.value;\n if (from) {\n const duration = ApDocuUtils.getDuration(new Date(moment(to).diff(moment(from)))).toDate();\n this.durationControl.setValue(duration, {emitEvent: false});\n if (duration.toString() !== 'Invalid Date') {\n this._maxDuration.next(duration);\n }\n }\n }\n ));\n }\n\n if (this.attMachineControl) {\n this._subscriptions.push(this.attMachineControl.valueChanges.subscribe(\n (machine: IMachine) => {\n if (machine && this.attInstrumentControl) {\n this.attInstrumentControl.setValue(machine.DefaultInstrument);\n }\n }\n ));\n }\n }\n }, 1);\n }\n\n private _getHarvestEnd(fleetActionAttachment: IFleetActionAttachment): boolean {\n if (!!fleetActionAttachment) {\n const field = this.fieldStore.getFieldById(fleetActionAttachment.FieldId);\n if (field?.FieldCrops?.length) {\n const harvestEndAttachment = field.FieldCrops[0].HarvestAttachment;\n if (harvestEndAttachment) {\n return harvestEndAttachment.Id === fleetActionAttachment.Id;\n }\n }\n }\n return false;\n }\n\n private _save(data: any): void {\n const from = new Date(\n data.Date.getFullYear(), data.Date.getMonth(), data.Date.getDate(),\n data.TimeFrom.getHours(), data.TimeFrom.getMinutes(), data.TimeFrom.getSeconds());\n const to = new Date(\n data.Date.getFullYear(), data.Date.getMonth(), data.Date.getDate(),\n data.TimeTo.getHours(), data.TimeTo.getMinutes(), data.TimeTo.getSeconds());\n const duration = 3600 * data.Duration.getHours() + 60 * data.Duration.getMinutes() + data.Duration.getSeconds();\n\n data.Attachment.IsModified = true;\n data.Attachment.FarmId = this.loginStore.SelectedFarmId;\n data.Attachment.From = this.dateService.toUtc(from).format('YYYY-MM-DDTHH:mm:ss');\n data.Attachment.To = this.dateService.toUtc(to).format('YYYY-MM-DDTHH:mm:ss');\n const action: IFleetActionAttachment = {\n Id: null,\n Attachment: data.Attachment,\n Status: 1,\n FieldId: data.Field.Id,\n LastAction: from,\n Slices: [\n {\n BruttoArea: data.Traversed_Area,\n Way: 0,\n NettoArea: data.Worked_Area,\n Attachment: null,\n FieldIdOnEnd: data.Field.Id,\n FieldIdOnStart: data.Field.Id,\n Type: ActionType.Movement,\n Duration: duration,\n Id: ApGuidUtil.getEmptyGuid(),\n To: to,\n From: from,\n GroupId: 0,\n Hhid: data.Attachment.Machine.HHID,\n Imei: null,\n InField: true,\n NumPoints: 0,\n Valid: true,\n Processing: [],\n FarmId: this.loginStore.SelectedFarmId,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n Version: 0,\n }\n ]\n };\n this.fleetActionAttachmentStore.createFleetActionAttachment(action);\n }\n\n private _update(data: IFleetActionAttachment): void {\n data.Attachment.IsModified = true;\n this.fleetActionAttachmentStore.saveFleetActionAttachments(data);\n }\n}\n","import {Directive, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[host]'\n})\nexport class HostDirective {\n\n constructor(public viewContainerRef: ViewContainerRef) {}\n\n}\n","import {BurgerMenuEntryComponentsModule} from './burger-menu-entry-components/burger-menu-entry-components.module';\nimport {ColorLegendEntryComponentsModule} from './color-legend-entry-components/color-legend-entry-components.module';\n\nexport const DYNAMIC_LOAD_COMPONENTS = [\n ...BurgerMenuEntryComponentsModule.COMPONENTS,\n ...ColorLegendEntryComponentsModule.COMPONENTS,\n];\n","import {\n Component,\n ComponentFactoryResolver,\n Input,\n OnInit,\n Type,\n ViewChild\n} from '@angular/core';\nimport {HostDirective} from './host.directive';\nimport {DYNAMIC_LOAD_COMPONENTS} from '../index';\n\nexport interface ApDynamicComponent {\n data: any;\n}\n\nexport class ApDynamicComponentModel {\n constructor(public type: Type | string, public data: any = {}) {\n }\n}\n\n@Component({\n selector: 'ap-dynamic-component-loader',\n template: `\n `,\n})\nexport class ApDynamicComponentLoaderComponent implements OnInit {\n\n @ViewChild(HostDirective, {static: true}) host: HostDirective;\n @Input() dynComp: ApDynamicComponentModel;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n }\n\n ngOnInit(): void {\n if (typeof this.dynComp.type === 'string') {\n this.dynComp.type = DYNAMIC_LOAD_COMPONENTS.find(c => c.type === this.dynComp.type);\n }\n\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.dynComp.type);\n\n const viewContainerRef = this.host.viewContainerRef;\n viewContainerRef.clear();\n\n const componentRef = viewContainerRef.createComponent(componentFactory);\n (componentRef.instance as ApDynamicComponent).data = this.dynComp.data;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApDynamicComponentLoaderComponent} from './ap-dynamic-component-loader.component';\nimport {HostDirective} from './host.directive';\n\n\n@NgModule({\n declarations: [\n ApDynamicComponentLoaderComponent,\n HostDirective\n ],\n exports: [\n ApDynamicComponentLoaderComponent\n ],\n imports: [\n CommonModule\n ]\n})\nexport class ApDynamicComponentLoaderModule {\n}\n","import {Component, EventEmitter, OnDestroy, OnInit, TemplateRef, ViewChild} from '@angular/core';\nimport {FormGroup, ValidatorFn, Validators} from '@angular/forms';\nimport * as OlFeature from 'ol/Feature';\nimport Feature from 'ol/Feature';\nimport OlFormatGeoJSON from 'ol/format/GeoJSON';\nimport {combineLatest, of, Subscription} from 'rxjs';\nimport {filter, map, take} from 'rxjs/operators';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynformsComponent\n} from '../../ap-dynforms/ap-dynforms.component';\nimport {\n ApDynformsConfigCheckbox\n} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {MAP_PROJECTION} from '../../ap-map';\nimport {\n ApPolygonEditLayer\n} from '../../ap-map/layers/ap-polygon-edit.layer';\nimport {\n CropTypeStore\n} from '../../stores/base-data/crop.types.store';\nimport {NotifyStore} from '../../stores/dialog/notify.store';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n ApParameterComponent\n} from '../ap-parameter-entry-components/ap-parameter.component';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {\n EditorService\n} from '../../map/components/edit/editor.service';\nimport {ApEditStyles} from '../../ap-map/layers/ap-edit-styles';\nimport {\n FieldFactoryService\n} from '../../factories/field-factory.service';\nimport {\n GeometryEditorTool\n} from '../../map/components/edit/ap-edit-tooltype';\nimport IField = Data.FieldManagement.IField;\nimport ParameterRefObjectType = Data.Parameter.Enums.ParameterRefObjectType;\nimport IFieldCrop = Data.FieldManagement.IFieldCrop;\nimport ApValidationLevel = Data.Api.Validation.ApValidationLevel;\n\nexport interface IFieldEditFormValues {\n FieldName: string;\n FieldNumber: number;\n FieldSubnumber: number;\n Landuse: number;\n MainCrop: number;\n SecondCrop: number;\n MainCrop_YieldUnit: number;\n SecondCrop_YieldUnit: number;\n RemoveResidues: boolean;\n Note: string;\n}\n\n/**\n * Component for the edit field\n */\n@Component({\n selector: 'ap-edit-field',\n template: `\n \n
\n \n
\n
\n \n \n
\n
\n \n {{ Description }}\n \n \n `,\n})\nexport class ApEditFieldComponent implements OnInit, OnDestroy {\n private static ToBigGeometryNotification: Data.Api.Validation.IApValidationResult = {\n Counter: 1,\n DisplayTimeout: 0,\n ErrorKey: 'Global__Geometry_To_Big_Validation',\n Level: Data.Api.Validation.ApValidationLevel.Error,\n Parameters: [],\n UserName: null,\n UserId: null,\n };\n private static IntegrateGeometryFailNotification: Data.Api.Validation.IApValidationResult = {\n Counter: 1,\n DisplayTimeout: 0,\n ErrorKey: 'Global__Geometry_NotIntegrated',\n Level: Data.Api.Validation.ApValidationLevel.Error,\n Parameters: [],\n UserName: null,\n UserId: null,\n };\n\n constructor(private formStore: FormStore,\n private fieldStore: FieldStore,\n private translationService: TranslationStore,\n private languageStore: LanguageStore,\n private cropTypeStore: CropTypeStore,\n private mapStore: MapStore,\n private campaignYearStore: CampaignYearStore,\n private loginStore: LoginStore,\n private notifyStore: NotifyStore,\n private fieldFactory: FieldFactoryService) {\n }\n\n @ViewChild(ApDynformsComponent, {static: true}) public dynForm: ApDynformsComponent;\n @ViewChild(ApParameterComponent, {static: true}) public parameter: ApParameterComponent;\n @ViewChild('ComboBoxCropTypeItem', {static: true}) public comboBoxCropTypeItem: TemplateRef;\n public data: { SourceItem: IField, gridSelectedKeys: any[] };\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n public isNewMode = false;\n public fieldsSaving$ = of(false);\n public parameterRefObjectType: ParameterRefObjectType.Field;\n public formIsInvalid$ = new EventEmitter(false);\n public invalidGeometry$ = this.mapStore.Editor.FeatureLocked$.pipe(map((locked) => !locked));\n public notIntegrated$ = EditorService.ValidSketch$.pipe(map(integrated => !integrated));\n public toBigGeometry$ = this.mapStore.Editor.CurrentArea$.pipe(map((d) => d > 1000));\n public isGeometryEditorActivated$ = this.mapStore.Editor.ActiveTool$.pipe(map((t) => t !== GeometryEditorTool.PREPARE_MODIFY));\n public close = new EventEmitter(true);\n public formValidators: ApDynformsValidator[] = [\n new ApDynformsValidator({\n validator: ApEditFieldComponent.fieldNameOrNrRequired,\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n }),\n new ApDynformsValidator({\n validator: ApEditFieldComponent.yieldRequiredIfMainCropIsSet,\n errorKey: 'Yield__required'\n }),\n new ApDynformsValidator({\n validator: ApEditFieldComponent.yieldRequiredIfSecondCropIsSet,\n errorKey: 'Yield__required_2'\n }),\n ];\n private _subscriptions: Array = [];\n private _originalGeometry: any;\n\n private static fieldNameOrNrRequired(frm: FormGroup): { mismatch: boolean } | null {\n const fieldName = frm.get('FieldName')?.value;\n const fieldNr = frm.get('FieldNumber')?.value;\n const fieldTNr = frm.get('FieldSubnumber')?.value;\n if (!fieldName && !fieldNr && !fieldTNr) {\n return {mismatch: true};\n }\n return null;\n }\n\n private static yieldRequiredIfSecondCropIsSet(frm: FormGroup): { missingYield: boolean } | null {\n const secondCrop = frm.get('SecondCrop')?.value;\n const secondCropYieldControl = frm.get('SecondCrop_YieldUnit');\n const secondCropYield = secondCropYieldControl?.value;\n const validationError = {missingYield: true};\n\n if (parseFloat(secondCrop) > 0 && !(parseFloat(secondCropYield) >= 0)) {\n secondCropYieldControl?.setErrors(validationError);\n return validationError;\n }\n\n return null;\n }\n\n private static yieldRequiredIfMainCropIsSet(frm: FormGroup): { missingYield: boolean } | null {\n const mainCrop = frm.get('MainCrop')?.value;\n const mainCropYieldControl = frm.get('MainCrop_YieldUnit');\n const mainCropYield = mainCropYieldControl?.value;\n const validationError = {missingYield: true};\n\n if (parseFloat(mainCrop) > 0 && !(parseFloat(mainCropYield) >= 0)) {\n mainCropYieldControl?.setErrors(validationError);\n return validationError;\n }\n\n return null;\n }\n\n public ngOnInit(): void {\n this.fieldsSaving$ = this.fieldStore.Listen(s => s.saving);\n this._subscriptions.push(EditorService.ValidSketch$\n .subscribe(integrated => {\n if (integrated) {\n this.notifyStore.removeMessage(ApEditFieldComponent.IntegrateGeometryFailNotification);\n this.mapStore.Layers.PolygonEditLayer.setStyle(ApEditStyles.selectedStyle);\n } else {\n this.notifyStore.addMessage(ApEditFieldComponent.IntegrateGeometryFailNotification);\n this.mapStore.Layers.PolygonEditLayer.setStyle(ApEditStyles.invalidStyle);\n }\n }));\n this._subscriptions.push(this.dynForm.initialized.subscribe(() => {\n this._subscriptions.push(this.dynForm.form.valueChanges.subscribe(() => {\n this.formIsInvalid$.emit(!this.dynForm.form.valid);\n }));\n this._subscriptions.push(this.dynForm.form.get('MainCrop')?.valueChanges?.subscribe(_ => {\n this.onMainCropChanged();\n }));\n this._subscriptions.push(this.dynForm.form.get('SecondCrop')?.valueChanges?.subscribe(_ => {\n this.onSecondCropChanged();\n }));\n }));\n this._subscriptions.push(this.mapStore.Editor.DeleteGeometry$\n .pipe(filter((fields) => fields && fields.Any()))\n .subscribe(() => this.deleteGeometry()));\n this._subscriptions.push(this.mapStore.Editor.EditedFeature$\n .pipe(filter((feat) => !!feat))\n .subscribe((feat) => this.saveGeometry(feat)));\n this._subscriptions.push(this.mapStore.Editor.CurrentArea$\n .pipe(filter((area) => area >= 0))\n .subscribe((area) => {\n if (area > 1000) {\n this.notifyStore.addMessage(ApEditFieldComponent.ToBigGeometryNotification);\n } else if (this.notifyStore.getNotify().length > 0) {\n this.notifyStore.removeMessage(ApEditFieldComponent.ToBigGeometryNotification);\n }\n if (!this.data || !this.data.SourceItem?.DefaultGeom || !this.dynForm || !this.dynForm.form || !this.dynForm.form.controls['Area']) {\n return;\n }\n this.data.SourceItem.DefaultGeom.AdminArea = Math.round(area * 10000);\n this.data.SourceItem.DefaultGeom.AreaHa = area;\n this.dynForm.form.controls['Area'].setValue(this.languageStore.FormatNumber(area));\n }));\n\n this._subscriptions.push(combineLatest([\n this.campaignYearStore.Listen((s) => s.selectedYear),\n this.loginStore.Listen((s) => s.farm.selectedFarm),\n ]).pipe(\n filter(([y, f]) => !!y && !!f),\n take(1),\n )\n .subscribe(([y, f]) => {\n if (!this.data.SourceItem) {\n this.isNewMode = true;\n this.data.SourceItem = this.fieldFactory.CreateNew({\n FarmId: f.Id,\n ValidFrom: y.DefaultStart,\n 'DefaultGeom.ValidFrom': y.DefaultStart,\n 'DefaultGeom.FarmId': f.Id\n });\n } else {\n this.isNewMode = false;\n if (!this.data.SourceItem?.DefaultGeom) {\n this.data.SourceItem.DefaultGeom = {\n AdminArea: 0,\n AreaHa: 0,\n ChangedAt: null,\n ChangedBy: null,\n CreatedAt: new Date(),\n CreatedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n FarmId: f.Id,\n FieldId: undefined,\n Geom: undefined,\n Id: undefined,\n Note: '',\n ValidFrom: y.DefaultStart,\n ValidTo: new Date('9999-07-31 23:59:59'),\n Version: 0,\n CampaignYear: 0,\n FieldGeomPackages: [],\n Status: ''\n };\n }\n }\n this.caption = this.isNewMode ? 'Global_Create_Field' : 'Global_Edit_Field';\n this.formBuilder();\n }));\n this._originalGeometry = this.pullSelectedGeometry() as any;\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach((d) => d.unsubscribe());\n }\n\n public formBuilder(): void {\n let fieldCrop: IFieldCrop;\n if (this.data.SourceItem?.FieldCrops && this.data.SourceItem?.FieldCrops[0]) {\n fieldCrop = this.data.SourceItem.FieldCrops[0];\n }\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'field1',\n legend: 'Global__Description',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'FieldNumber',\n label: 'Global__FieldNumber',\n value: this.data.SourceItem?.FieldNumber,\n min: 0,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 0,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n validators: [\n new ApDynformsValidator({\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n validator: Validators.required\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'FieldSubnumber',\n label: 'Planning_Fieldpart',\n value: this.data.SourceItem?.FieldSubnumber,\n min: 0,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 0,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n validators: [\n new ApDynformsValidator({\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n validator: Validators.required\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'FieldName',\n label: 'Global__FieldName',\n value: this.data.SourceItem?.FieldName,\n formErrors: ['Global__Field_Name_Or_Nr_Required']\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n key: 'field2',\n legend: 'Tip_InformationText',\n config: [\n new ApDynformsConfigTextbox({\n disabled: true,\n key: 'Area',\n label: 'Global__Area_Unit',\n value: this.languageStore.FormatNumber(this.data.SourceItem?.DefaultGeom != null && this.data.SourceItem?.DefaultGeom.AdminArea > 0 ? this.data.SourceItem?.DefaultGeom.AdminArea / 10000 : 0),\n validators: [\n new ApDynformsValidator({\n errorKey: 'Settings__Msg_Vali_Value_Required',\n validator: Validators.min(1)\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n disabled: true,\n key: 'SoilGroups',\n label: 'Nutrients_Pages__SoilGroup',\n value: null // not yet available. Maybe in future we take it from wsv_raster_meta_data\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n key: 'field3',\n legend: (this.translationService.FindTranslationForSelectedLanguage('Docu_Ini__HarvestYear') + ' ' + this.campaignYearStore.getSelectedCampaignYear().Year),\n config: [\n new ApDynformsConfigComboBox({\n itemTemplate: this.comboBoxCropTypeItem,\n key: 'MainCrop',\n label: 'MainCrop',\n options: this._availableCropTypes(fieldCrop ? fieldCrop.CroptypeId : undefined),\n textField: 'Description',\n value: fieldCrop ? fieldCrop.CroptypeId : undefined,\n valueField: 'Id',\n valuePrimitive: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'MainCrop_YieldUnit',\n label: 'Global__YieldUnit',\n value: fieldCrop ? fieldCrop.ExpectedYield : undefined,\n min: 0,\n disabled: !(fieldCrop?.CroptypeId > 0),\n disabled$: this.dynForm.formValues$.pipe(map((f: IFieldEditFormValues) => !(f.MainCrop > 0))),\n formErrors: ['Yield__required'],\n validators: [\n new ApDynformsValidator({\n validator: ApEditFieldComponent.yieldRequiredIfMainCropIsSet,\n errorKey: 'Yield__required'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'RemoveResidues',\n label: 'Nutrients_Pages_Popups__RemoveResidues',\n value: fieldCrop ? fieldCrop.StrawHarvested : false,\n }),\n new ApDynformsConfigTextbox({\n key: 'Note',\n label: 'Global__Fieldcrop_Notes',\n value: fieldCrop?.Note ?? ''\n }),\n new ApDynformsConfigComboBox({\n itemTemplate: this.comboBoxCropTypeItem,\n key: 'SecondCrop',\n label: 'SecondCrop',\n options: this._availableCropTypes(fieldCrop ? fieldCrop.CroptypeSecondId : undefined),\n textField: 'Description',\n validators: [],\n value: fieldCrop ? fieldCrop.CroptypeSecondId : undefined,\n valueField: 'Id',\n valuePrimitive: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'SecondCrop_YieldUnit',\n label: 'Global__Yield_Removal_Unit',\n value: fieldCrop ? fieldCrop.ExpectedYieldSecond : undefined,\n min: 0,\n disabled: !(fieldCrop?.MainSecondCropType > 0),\n disabled$: this.dynForm.formValues$.pipe(map((f: IFieldEditFormValues) => !(f.SecondCrop > 0))),\n formErrors: ['Yield__required_2'],\n validators: [\n new ApDynformsValidator({\n validator: ApEditFieldComponent.yieldRequiredIfSecondCropIsSet,\n errorKey: 'Yield__required_2'\n })\n ]\n })\n ]\n }),\n ];\n if (!this.isNewMode) {\n this.formConfig.push(\n new ApDynformsConfigFieldset({\n key: 'Parameter',\n legend: 'Global_Parameter'\n }),\n );\n }\n }\n\n public onSubmitClick(): void {\n this.data.SourceItem = this.mapFormValues(this.data.SourceItem, this.dynForm.form.value);\n if (!this.data.SourceItem || !this.data.SourceItem.DefaultGeom) {\n console.warn(`formular values was empty`, this.dynForm.form.value);\n return;\n }\n let fieldSaved = false;\n if (this.isNewMode) {\n this.data.SourceItem.DefaultGeom.Geom = (this.pullSelectedGeometry() as any);\n this.data.SourceItem.DefaultGeom.Status = null;\n if (this.data.SourceItem.FieldGeoms.length === 0) {\n this.data.SourceItem.FieldGeoms.Add(this.data.SourceItem.DefaultGeom);\n } else {\n this.data.SourceItem.FieldGeoms[0] = this.data.SourceItem.DefaultGeom;\n }\n this.data.SourceItem.DefaultGeom = undefined;\n this.fieldStore.createField(this.data.SourceItem, this.parameter);\n // for second attempt if field save will fail with error\n this.data.SourceItem.DefaultGeom = this.data.SourceItem.FieldGeoms[0];\n } else {\n const selectedGeometry = this.pullSelectedGeometry() as any;\n const editorActivated = this.mapStore.Editor.ActiveTool !== GeometryEditorTool.PREPARE_MODIFY;\n const geomModified = editorActivated ? selectedGeometry !== this._originalGeometry : false;\n if (editorActivated && (selectedGeometry === undefined || selectedGeometry === null)) {\n this.notifyStore.addMessage({\n Counter: 1,\n DisplayTimeout: 5,\n ErrorKey: 'Global__No_Geometry_For_Harvest_Year',\n Level: ApValidationLevel.Error,\n UserId: null,\n UserName: null,\n Parameters: null\n });\n } else {\n // replace geom only if user modified it\n if (geomModified) {\n this.data.SourceItem.DefaultGeom.Geom = selectedGeometry;\n this.data.SourceItem.DefaultGeom.Status = null;\n this.data.SourceItem.FieldGeoms[0] = this.data.SourceItem.DefaultGeom;\n }\n this.fieldStore.saveField(\n this.data.SourceItem,\n this.campaignYearStore.SelectedCampaignYear.DefaultStart,\n this.campaignYearStore.SelectedCampaignYear.DefaultEnd,\n this.parameter);\n fieldSaved = true;\n }\n\n if (fieldSaved) {\n // Eine mögliche Lösung um zu verhindern, dass in aktuell nicht nachvollziehbaren Fällen, dass Form offen bleibt,\n // obwohl die Nachricht kommt, dass erfolgreich gespeichert wurde.\n this._subscriptions.Add(this.fieldStore.Listen(s => s.saved).subscribe(saved => {\n if (saved) {\n setTimeout(() => this.formStore.closeForm(), 0);\n }\n }\n ));\n }\n // Saving field parameters is done by 'watchStream' in fieldStore after successful save of fields\n }\n }\n\n public onCancelClick(): void {\n this.mapStore.Editor.CloseEditor(this.fieldStore);\n this.formStore.closeForm();\n }\n\n public saveGeometry(feat: Feature): void {\n const format = new OlFormatGeoJSON();\n const jsonF = JSON.parse(format.writeFeature(feat));\n if (this.isNewMode) {\n this.data.SourceItem.DefaultGeom.Id = jsonF.id;\n }\n this.data.SourceItem.DefaultGeom.FarmId = this.data.SourceItem.FarmId;\n const newFeature = feat.clone();\n const coords = newFeature.getGeometry().transform(MAP_PROJECTION, 'EPSG:4326');\n const jsonFe = JSON.parse(format.writeFeature(new OlFeature.default({geometry: coords})));\n this.data.SourceItem.DefaultGeom.Geom = (JSON.stringify(jsonFe.geometry) as any);\n }\n\n private _availableCropTypes =\n (id?: number) => this.cropTypeStore.Listen((s) => s.data).getValue().filter((c) => c.Selected || c.Id === id)\n\n private mapFormValues(target: IField, formValue: IFieldEditFormValues): IField {\n const cropType = this._availableCropTypes(formValue.MainCrop).Find((ct) => ct?.Id === formValue?.MainCrop);\n const cropTypeSecond = this._availableCropTypes(formValue.MainCrop).Find((ct) => ct?.Id === formValue?.SecondCrop);\n target.FieldName = formValue.FieldName;\n target.FieldNumber = formValue.FieldNumber;\n target.FieldSubnumber = formValue.FieldSubnumber;\n target.FieldCrops[0] = ({\n Cropkey: cropType ? cropType.CropKey : null,\n CroptypeId: formValue.MainCrop,\n CroptypeSecondId: formValue.SecondCrop,\n MainSecondCropType: cropTypeSecond ? cropTypeSecond.CropKey : null,\n ExpectedYield: cropType ? formValue.MainCrop_YieldUnit : null,\n ExpectedYieldSecond: cropTypeSecond ? formValue.SecondCrop_YieldUnit : null,\n StrawHarvested: formValue.RemoveResidues,\n Note: formValue.Note\n } as IFieldCrop);\n return target;\n }\n\n private pullSelectedGeometry(): string {\n const selectedFeatures = this.mapStore.Layers.PolygonEditLayer.GetSelectedFeaturesAsJSON(ApPolygonEditLayer.projection);\n return selectedFeatures[Object.keys(selectedFeatures)[0]];\n }\n\n private deleteGeometry(): void {\n if (!this.data.SourceItem) {\n console.warn(`want to delete geometry but no geometry given to delete!`);\n return;\n }\n this.fieldStore.deleteFieldGeom(this.data.SourceItem.DefaultGeom.Id);\n this.fieldStore.deleteFieldCrop(this.data.SourceItem.FieldCrops[0]);\n this.mapStore.Editor.ShowEditbar(false);\n this.mapStore.Layers.PolygonEditLayer.clear();\n this.mapStore.Layers.FieldsLayer.Visibility = true;\n this.mapStore.Layers.FieldsCropLayer.Visibility = true;\n this.formStore.closeForm();\n }\n\n private onMainCropChanged(): void {\n const selectedCropId = this.dynForm?.form?.get('MainCrop')?.value;\n const yieldDefault = selectedCropId ? this.cropTypeStore.CropTypes.Find(c => c.Id === selectedCropId)?.ExpectedYield : undefined;\n this.dynForm?.form?.get('MainCrop_YieldUnit')?.setValue(yieldDefault);\n }\n\n private onSecondCropChanged(): void {\n const selectedCropId = this.dynForm?.form?.get('SecondCrop')?.value;\n const yieldDefault = selectedCropId && this.cropTypeStore.CropTypes.Find(c => c.Id === selectedCropId) ? 0 : undefined;\n this.dynForm?.form?.get('SecondCrop_YieldUnit')?.setValue(yieldDefault);\n }\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({providedIn: 'root'})\nexport class GetNumericService {\n public getNumberOrZero(value: string): number {\n return isNaN(+value) ? 0 : +value;\n }\n}\n","import {Component, EventEmitter, OnDestroy, OnInit, TemplateRef, ViewChild} from '@angular/core';\nimport {FormGroup, ValidatorFn, Validators} from '@angular/forms';\nimport * as OlFeature from 'ol/Feature';\nimport Feature from 'ol/Feature';\nimport OlFormatGeoJSON from 'ol/format/GeoJSON';\nimport {combineLatest, of, Subscription} from 'rxjs';\nimport {filter, map, skip, take} from 'rxjs/operators';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApDynformsComponent\n} from '../../ap-dynforms/ap-dynforms.component';\nimport {\n ApDynformsConfigCheckbox\n} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {MAP_PROJECTION} from '../../ap-map';\nimport {\n ApPolygonEditLayer\n} from '../../ap-map/layers/ap-polygon-edit.layer';\nimport {ApGuidUtil} from '../../ap-utils';\nimport {\n CropTypeStore\n} from '../../stores/base-data/crop.types.store';\nimport {NotifyStore} from '../../stores/dialog/notify.store';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n EditorService\n} from '../../map/components/edit/editor.service';\nimport {ApEditStyles} from '../../ap-map/layers/ap-edit-styles';\nimport {IFieldEditFormValues} from './ap-edit-field.component';\nimport {\n FieldFactoryService\n} from '../../factories/field-factory.service';\nimport {\n IFieldGridData\n} from 'src/app/factories/field-grid-data-factory.service';\nimport {\n GetRoundNumericService\n} from '../../ap-utils/service/get-round-numeric.service';\nimport {\n SettingsStore\n} from '../../stores/base-data/settings.store';\nimport {\n ModalDialogStore\n} from '../../stores/dialog/modal.dialog.store';\nimport {\n ModalDialogPresets\n} from '../../stores/dialog/modal.dialog.presets';\nimport {\n GetNumericService\n} from '../../ap-utils/service/get-numeric.service';\nimport IField = Data.FieldManagement.IField;\nimport IFieldCrop = Data.FieldManagement.IFieldCrop;\nimport {\n FieldArchiveStore\n} from '../../stores/farm/field-archive.store';\n\nexport const MergeNewFieldName = 'Field__New_Field';\n\n/**\n * Component for the edit field\n */\n@Component({\n selector: 'ap-merge-field',\n template: `\n \n
\n \n \n
\n
\n \n {{Description}}\n \n \n `,\n})\nexport class ApMergeFieldComponent implements OnInit, OnDestroy {\n private static ToBigGeometryNotification: Data.Api.Validation.IApValidationResult = {\n Counter: 1,\n DisplayTimeout: 0,\n ErrorKey: 'Global__Geometry_To_Big_Validation',\n Level: Data.Api.Validation.ApValidationLevel.Error,\n Parameters: [],\n UserName: null,\n UserId: null,\n };\n private static IntegrateGeometryFailNotification: Data.Api.Validation.IApValidationResult = {\n Counter: 1,\n DisplayTimeout: 0,\n ErrorKey: 'Global__Geometry_NotIntegrated',\n Level: Data.Api.Validation.ApValidationLevel.Error,\n Parameters: [],\n UserName: null,\n UserId: null,\n };\n\n constructor(private formStore: FormStore,\n private fieldStore: FieldStore,\n private translationService: TranslationStore,\n private cropTypeStore: CropTypeStore,\n private mapStore: MapStore,\n private campaignYearStore: CampaignYearStore,\n private loginStore: LoginStore,\n private notifyStore: NotifyStore,\n private fieldFactory: FieldFactoryService,\n private modalDialogPresets: ModalDialogPresets,\n private modalDialogStore: ModalDialogStore,\n private roundNumericService: GetRoundNumericService,\n private settingsStore: SettingsStore,\n private numericService: GetNumericService,\n private fieldArchiveStore: FieldArchiveStore) {\n }\n\n @ViewChild(ApDynformsComponent, {static: true}) public dynForm: ApDynformsComponent;\n @ViewChild('ComboBoxCropTypeItem', {static: true}) public comboBoxCropTypeItem: TemplateRef;\n public data: { CurrentItem: IFieldGridData, AllItems: IFieldGridData[], gridSelectedKeys: any[] };\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n public isNewMode = false;\n public fieldsSaving$ = of(false);\n public formIsInvalid$ = new EventEmitter(false);\n public invalidGeometry$ = this.mapStore.Editor.FeatureLocked$.pipe(map((locked) => !locked));\n public notIntegrated$ = EditorService.ValidSketch$.pipe(map(integrated => !integrated));\n public toBigGeometry$ = this.mapStore.Editor.CurrentArea$.pipe(map((d) => d > 1000));\n public close = new EventEmitter(true);\n public formValidators: ApDynformsValidator[] = [\n new ApDynformsValidator({\n validator: ApMergeFieldComponent.fieldNameOrNrRequired,\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n }),\n new ApDynformsValidator({\n validator: ApMergeFieldComponent.yieldRequiredIfCropIsSet,\n errorKey: 'Yield__required'\n }),\n ];\n private _subscriptions: Array = [];\n\n private static fieldNameOrNrRequired(frm: FormGroup): { mismatch: boolean } | null {\n const fieldName = frm.get('FieldName')?.value;\n const fieldNr = frm.get('FieldNumber')?.value;\n const fieldTNr = frm.get('FieldSubnumber')?.value;\n if (!fieldName && !fieldNr && !fieldTNr) {\n return {mismatch: true};\n }\n return null;\n }\n\n private static yieldRequiredIfCropIsSet(frm: FormGroup): { missingYield: boolean } | null {\n const mainCrop = frm.get('MainCrop')?.value;\n const mainCropYieldControl = frm.get('MainCrop_YieldUnit');\n const mainCropYield = mainCropYieldControl?.value;\n const secondCrop = frm.get('SecondCrop')?.value;\n const secondCropYieldControl = frm.get('SecondCrop_YieldUnit');\n const secondCropYield = secondCropYieldControl?.value;\n const validationError = {missingYield: true};\n\n // Validate if yield is present when crop is selected.\n // This validation is done on form level because 2 form controls are involved.\n // Besides that the error is set at the control directly to avoid having\n // an error message (errorkey) being shown at the control\n if (parseFloat(secondCrop) > 0 && !(parseFloat(secondCropYield) >= 0)) {\n secondCropYieldControl?.setErrors(validationError);\n return validationError;\n }\n if (parseFloat(mainCrop) > 0 && !(parseFloat(mainCropYield) >= 0)) {\n mainCropYieldControl?.setErrors(validationError);\n return validationError;\n }\n return null;\n }\n\n public ngOnInit(): void {\n this.fieldsSaving$ = this.fieldStore.Listen(s => s.saving);\n this._subscriptions.push(EditorService.ValidSketch$\n .subscribe(integrated => {\n if (integrated) {\n this.notifyStore.removeMessage(ApMergeFieldComponent.IntegrateGeometryFailNotification);\n this.mapStore.Layers.PolygonEditLayer.setStyle(ApEditStyles.selectedStyle);\n } else {\n this.notifyStore.addMessage(ApMergeFieldComponent.IntegrateGeometryFailNotification);\n this.mapStore.Layers.PolygonEditLayer.setStyle(ApEditStyles.invalidStyle);\n }\n }));\n this._subscriptions.push(this.dynForm.initialized.subscribe(() => {\n this._subscriptions.push(this.dynForm.form.valueChanges.subscribe(() => {\n this.formIsInvalid$.emit(!this.dynForm.form.valid);\n }));\n this._subscriptions.push(this.dynForm.form.get('FieldSelection')?.valueChanges?.subscribe(_ => {\n this.onFieldSelectionChanged();\n }));\n this._subscriptions.push(this.dynForm.form.get('MainCrop')?.valueChanges?.subscribe(_ => {\n this.onMainCropChanged();\n }));\n this._subscriptions.push(this.dynForm.form.get('SecondCrop')?.valueChanges?.subscribe(_ => {\n this.onSecondCropChanged();\n }));\n }));\n this._subscriptions.push(this.mapStore.Editor.DeleteGeometry$\n .pipe(filter((fields) => fields && fields.Any()))\n .subscribe(() => this.deleteGeometry()));\n this._subscriptions.push(this.mapStore.Editor.EditedFeature$\n .pipe(filter((feat) => !!feat))\n .subscribe((feat) => this.saveGeometry(feat)));\n this._subscriptions.push(this.mapStore.Editor.CurrentArea$\n .pipe(filter((area) => area >= 0))\n .subscribe((area) => {\n if (area > 1000) {\n this.notifyStore.addMessage(ApMergeFieldComponent.ToBigGeometryNotification);\n } else if (this.notifyStore.getNotify().length > 0) {\n this.notifyStore.removeMessage(ApMergeFieldComponent.ToBigGeometryNotification);\n }\n if (!this.data || !this.data.CurrentItem?.SourceItem.DefaultGeom || !this.dynForm || !this.dynForm.form || !this.dynForm.form.controls['Area']) {\n return;\n }\n\n this.dynForm?.form?.get('Area')?.setValue(this.calculateAreaSizeStringByValue(area));\n }));\n\n this._subscriptions.push(combineLatest([\n this.campaignYearStore.Listen((s) => s.selectedYear),\n this.loginStore.Listen((s) => s.farm.selectedFarm),\n ]).pipe(\n filter(([y, f]) => !!y && !!f),\n take(1),\n ).subscribe(([_, _1]) => {\n this.caption = this.translationService.FindTranslationForSelectedLanguage('Field__Merge');\n this.formBuilder();\n }));\n\n // Clear value each time we enter the merge form\n this.fieldStore.clearFieldPlanBooksResult();\n this._subscriptions.push(this.modalDialogStore.Listen(s => s.result).pipe(skip(1)).subscribe(c => {\n if (c.key === 'confirm') {\n this.submitLogic();\n }\n }));\n\n this._subscriptions.push(this.fieldStore.Listen(s => s.fieldPlanBooksResult).subscribe(planBooks => {\n if (planBooks != null) {\n if (planBooks === true) {\n this.modalDialogStore.setModalDialogData(this.modalDialogPresets.ExistPlanBooksDialog(\n {title: 'HdrConfirm', message: 'Global__Dialog_Message_CheckPlanBooks'}));\n } else {\n this.submitLogic();\n }\n\n this.fieldStore.clearFieldPlanBooksResult();\n }\n }));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach((d) => {\n d.unsubscribe();\n });\n }\n\n public formBuilder(): void {\n let fieldCrop: IFieldCrop;\n if (this.data && this.data.CurrentItem) {\n fieldCrop = this.data.CurrentItem.SourceItem.FieldCrops[0];\n }\n this.formConfig = [\n new ApDynformsConfigFieldset({\n config: [\n new ApDynformsConfigComboBox({\n key: 'FieldSelection',\n label: 'Field Selection',\n options: this.data.AllItems,\n textField: 'SourceItem.FieldName',\n validators: [],\n value: this.data.CurrentItem,\n valueField: 'Id',\n valuePrimitive: false,\n infoText: 'Field__Merge_Crop_rotation_transfer'\n })\n ],\n key: 'Pre-Setting',\n legend: 'Field__Merge_Pre_Setting',\n }),\n new ApDynformsConfigFieldset({\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'FieldNumber',\n label: 'Global__FieldNumber',\n value: this.data.CurrentItem?.SourceItem.FieldNumber,\n min: 0,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 0,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n validators: [\n new ApDynformsValidator({\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n validator: Validators.required,\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'FieldSubnumber',\n label: 'Planning_Fieldpart',\n value: this.data.CurrentItem?.SourceItem.FieldSubnumber,\n min: 0,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 0,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n validators: [\n new ApDynformsValidator({\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n validator: Validators.required,\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'FieldName',\n label: 'Global__FieldName',\n value: this.data.CurrentItem?.SourceItem.FieldName,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n }),\n ],\n key: 'field1',\n legend: 'Global__Description',\n }),\n new ApDynformsConfigFieldset({\n config: [\n new ApDynformsConfigTextbox({\n disabled: true,\n key: 'Area',\n label: 'Global__Area_Unit',\n validators: [\n new ApDynformsValidator({\n errorKey: 'Settings__Msg_Vali_Value_Required',\n validator: Validators.min(1),\n }),\n ],\n value: this.calculateAreaSizeString(),\n }),\n ],\n key: 'field2',\n legend: 'Tip_InformationText',\n }),\n new ApDynformsConfigFieldset({\n config: [\n new ApDynformsConfigComboBox({\n itemTemplate: this.comboBoxCropTypeItem,\n key: 'MainCrop',\n label: 'MainCrop',\n options: this._availableCropTypes(fieldCrop ? fieldCrop.CroptypeId : undefined),\n textField: 'Description',\n validators: [],\n value: fieldCrop ? fieldCrop.CroptypeId : undefined,\n valueField: 'Id',\n valuePrimitive: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'MainCrop_YieldUnit',\n label: 'Global__YieldUnit',\n value: fieldCrop ? fieldCrop.ExpectedYield : undefined,\n min: 0,\n disabled: !(fieldCrop?.CroptypeId > 0),\n disabled$: this.dynForm.formValues$.pipe(map((f: IFieldEditFormValues) => !(f.MainCrop > 0)))\n }),\n new ApDynformsConfigCheckbox({\n key: 'RemoveResidues',\n label: 'Nutrients_Pages_Popups__RemoveResidues',\n value: fieldCrop ? fieldCrop.StrawHarvested : false,\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigComboBox({\n itemTemplate: this.comboBoxCropTypeItem,\n key: 'SecondCrop',\n label: 'SecondCrop',\n options: this._availableCropTypes(fieldCrop ? fieldCrop.CroptypeSecondId : undefined),\n textField: 'Description',\n validators: [],\n value: fieldCrop ? fieldCrop.CroptypeSecondId : undefined,\n valueField: 'Id',\n valuePrimitive: true,\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'SecondCrop_YieldUnit',\n label: 'Global__Yield_Removal_Unit',\n value: fieldCrop ? fieldCrop.ExpectedYieldSecond : undefined,\n min: 0,\n disabled: !(fieldCrop?.MainSecondCropType > 0),\n disabled$: this.dynForm.formValues$.pipe(map((f: IFieldEditFormValues) => !(f.SecondCrop > 0)))\n }),\n ],\n key: 'field3',\n legend: (this.translationService.FindTranslationForSelectedLanguage('Docu_Ini__HarvestYear') + ' ' + this.campaignYearStore.getSelectedCampaignYear().Year),\n }),\n ];\n }\n\n private mapFormValues(target: IField, formValue: IFieldEditFormValues): IField {\n const cropType = this._availableCropTypes(formValue.MainCrop).Find((ct) => ct?.Id === formValue?.MainCrop);\n const cropTypeSecond = this._availableCropTypes(formValue.MainCrop).Find((ct) => ct?.Id === formValue?.SecondCrop);\n target.Id = ApGuidUtil.generateNewGuid();\n target.FieldName = formValue.FieldName;\n target.FieldNumber = formValue.FieldNumber;\n target.FieldSubnumber = formValue.FieldSubnumber;\n target.FarmId = this.loginStore.SelectedFarmId;\n target.ValidFrom = this.campaignYearStore.getSelectedCampaignYear().DefaultStart;\n target.FieldCrops[0] = ({\n Cropkey: cropType ? cropType.CropKey : null,\n CroptypeId: formValue.MainCrop,\n CroptypeSecondId: formValue.SecondCrop,\n MainSecondCropType: cropTypeSecond ? cropTypeSecond.CropKey : null,\n ExpectedYield: cropType ? formValue.MainCrop_YieldUnit : null,\n ExpectedYieldSecond: cropTypeSecond ? formValue.SecondCrop_YieldUnit : null,\n StrawHarvested: formValue.RemoveResidues,\n } as IFieldCrop);\n return target;\n }\n\n private submitLogic(): void {\n const takeFrom = (this.data.CurrentItem.Id !== -1) ? this.data.CurrentItem.SourceItem.Id : null;\n const newField: IField = this.mapFormValues(this.fieldFactory.CreateNew(), this.dynForm.form.value);\n\n if (!newField) {\n console.warn(`formular values was empty`, this.dynForm.form.value);\n return;\n }\n\n this.loginStore.setLongOperationStatus(true);\n try {\n newField.DefaultGeom.Geom = (this.pullSelectedGeometry() as any);\n newField.DefaultGeom.FarmId = this.loginStore.SelectedFarmId;\n newField.DefaultGeom.FieldId = newField.Id;\n newField.DefaultGeom.ValidFrom = newField.ValidFrom;\n newField.FieldGeoms.Clear();\n newField.FieldGeoms.Add(newField.DefaultGeom);\n newField.DefaultGeom = null;\n\n this.fieldStore.mergeFields(newField, this.data.AllItems.filter(x => x.Id !== -1).map(x => x.Id), takeFrom);\n this._subscriptions.Add(this.fieldStore.Listen(s => s.saved).subscribe(saved => {\n if (saved) {\n setTimeout(() => this.formStore.closeForm(), 0);\n this.loginStore.setLongOperationStatus(false);\n }\n }));\n\n this._subscriptions.Add(this.fieldStore.Listen(s => s.mergeFailed).subscribe(failed => {\n if (failed) {\n setTimeout(() => this.formStore.closeForm(), 0);\n this.loginStore.setLongOperationStatus(false);\n this.fieldStore.loadFields(this.loginStore.CampaignYearStore.getSelectedCampaignYear().DefaultStart);\n this.fieldArchiveStore.loadFieldArchive(this.loginStore.CampaignYearStore.getSelectedCampaignYear().DefaultStart);\n }\n }));\n\n this._subscriptions.Add(this.fieldStore.Listen(s => s.mergeSuccess).subscribe(success => {\n if (success) {\n this.fieldArchiveStore.loadFieldArchive(this.loginStore.CampaignYearStore.getSelectedCampaignYear().DefaultStart);\n }\n }));\n } catch (e) {\n console.warn(e);\n this.loginStore.setLongOperationStatus(false);\n }\n }\n\n public onSubmitClick(): void {\n this.fieldStore.checkFieldsPlanBook(this.data.AllItems.filter(x => x.Id !== -1).map(x => x.Id));\n }\n\n public onCancelClick(): void {\n this.mapStore.Editor.CloseEditor(this.fieldStore);\n this.formStore.closeForm();\n }\n\n public saveGeometry(feat: Feature): void {\n const format = new OlFormatGeoJSON();\n const jsonF = JSON.parse(format.writeFeature(feat));\n if (this.isNewMode) {\n this.data.CurrentItem.SourceItem.DefaultGeom.Id = jsonF.id;\n }\n this.data.CurrentItem.SourceItem.DefaultGeom.FarmId = this.data.CurrentItem.SourceItem.FarmId;\n const newFeature = feat.clone();\n const coords = newFeature.getGeometry().transform(MAP_PROJECTION, 'EPSG:4326');\n const jsonFe = JSON.parse(format.writeFeature(new OlFeature.default({geometry: coords})));\n this.data.CurrentItem.SourceItem.DefaultGeom.Geom = (JSON.stringify(jsonFe.geometry) as any);\n }\n\n private _availableCropTypes =\n (id?: number) => this.cropTypeStore.Listen((s) => s.data).getValue().filter((c) => c.Selected || c.Id === id)\n\n private pullSelectedGeometry(): string {\n const selectedFeatures = this.mapStore.Layers.PolygonEditLayer.GetSelectedFeaturesAsJSON(ApPolygonEditLayer.projection);\n return selectedFeatures[Object.keys(selectedFeatures)[0]];\n }\n\n private deleteGeometry(): void {\n if (!this.data.CurrentItem) {\n console.warn(`want to delete geometry but no geometry given to delete!`);\n return;\n }\n this.fieldStore.deleteFieldGeom(this.data.CurrentItem.SourceItem.DefaultGeom.Id);\n this.fieldStore.deleteFieldCrop(this.data.CurrentItem.SourceItem.FieldCrops[0]);\n this.mapStore.Editor.ShowEditbar(false);\n this.mapStore.Layers.PolygonEditLayer.clear();\n this.mapStore.Layers.FieldsLayer.Visibility = true;\n this.mapStore.Layers.FieldsCropLayer.Visibility = true;\n this.formStore.closeForm();\n }\n\n private onMainCropChanged(): void {\n const selectedCropId = this.dynForm?.form?.get('MainCrop')?.value;\n const yieldDefault = selectedCropId ? this.cropTypeStore.CropTypes.Find(c => c.Id === selectedCropId)?.ExpectedYield : undefined;\n this.dynForm?.form?.get('MainCrop_YieldUnit')?.setValue(yieldDefault);\n }\n\n private onSecondCropChanged(): void {\n const selectedCropId = this.dynForm?.form?.get('SecondCrop')?.value;\n const yieldDefault = selectedCropId && this.cropTypeStore.CropTypes.Find(c => c.Id === selectedCropId) ? 0 : undefined;\n this.dynForm?.form?.get('SecondCrop_YieldUnit')?.setValue(yieldDefault);\n }\n\n private onFieldSelectionChanged(): void {\n const selectedField = this.dynForm?.form?.get('FieldSelection')?.value;\n if (!selectedField) {\n return;\n }\n this.data.CurrentItem = this.data.AllItems.find(x => x.Id === selectedField.Id);\n this.dynForm?.form?.get('FieldNumber')?.setValue(this.numericService.getNumberOrZero(selectedField.SourceItem.FieldNumber));\n this.dynForm?.form?.get('FieldSubnumber')?.setValue(this.numericService.getNumberOrZero(selectedField.SourceItem.FieldSubnumber));\n if (selectedField.SourceItem.FieldName === this.translationService.FindTranslationForSelectedLanguage(MergeNewFieldName)) {\n this.dynForm?.form?.get('FieldName')?.setValue('');\n } else {\n this.dynForm?.form?.get('FieldName')?.setValue(selectedField.SourceItem.FieldName);\n }\n if (this.data.CurrentItem.SourceItem.FieldCrops.length > 0) {\n const fieldCrop = this.data.CurrentItem.SourceItem.FieldCrops[0];\n this.dynForm?.form?.get('MainCrop')?.setValue(fieldCrop.CroptypeId);\n this.dynForm?.form?.get('SecondCrop')?.setValue(fieldCrop.CroptypeSecondId);\n this.dynForm?.form?.get('RemoveResidues')?.setValue(fieldCrop.StrawHarvested);\n this.dynForm?.form?.get('MainCrop_YieldUnit')?.setValue(fieldCrop.ExpectedYield);\n this.dynForm?.form?.get('SecondCrop_YieldUnit')?.setValue(fieldCrop.ExpectedYieldSecond);\n } else {\n this.dynForm?.form?.get('MainCrop')?.setValue(null);\n this.dynForm?.form?.get('SecondCrop')?.setValue(null);\n this.dynForm?.form?.get('RemoveResidues')?.setValue(false);\n }\n }\n\n private calculateAreaSizeString(): string {\n return this.calculateAreaSizeStringByValue(this.data.AllItems.reduce((sum, it) => sum + this.getAreaValue(it.SourceItem), 0));\n }\n\n private calculateAreaSizeStringByValue(value: number): string {\n return this.roundNumericService.round(value, this.settingsStore.FirstSetting.DigitsAfterDecimalPoint);\n }\n\n private getAreaValue(field: IField): number {\n return field.DefaultGeom != null && field.DefaultGeom.AdminArea > 0 ? field.DefaultGeom.AdminArea / 10000 : 0;\n }\n}\n","import {AfterViewInit, Component, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {\n MapStore\n} from '../../../stores/map/map.store';\nimport {\n FormStore\n} from '../../../stores/layout/form.store';\nimport {\n FieldStore\n} from '../../../stores/farm/field.store';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {\n ApDynformsConfigFieldset\n} from '../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n TranslationStore\n} from '../../../stores/translation/translation.store';\nimport {\n MonitoringTypeStore\n} from '../../../stores/fields/monitoring-type.store';\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map\n} from 'rxjs/operators';\nimport {\n MonitoringDetailStore\n} from '../../../stores/fields/monitoring-detail.store';\nimport {\n MonitoringDetailCustomData,\n MonitoringDetailEntryComponentData,\n MonitoringDetailEntryFormData\n} from './monitoring-detail-entry.types';\nimport {\n CampaignYearStore\n} from '../../../stores/login/campaignyear.store';\nimport {\n ApDynformsComponent\n} from '../../../ap-dynforms/ap-dynforms.component';\nimport {\n ObjectFactory\n} from 'ts-tooling';\nimport {\n MonitoringFieldStore\n} from '../../../stores/fields/monitoring-field.store';\nimport {\n MonitoringDetailEntryConfig\n} from './monitoring-detail-entry.config';\nimport {\n MapViewCurrentMenu,\n MapViewMode\n} from '../../../ap-interface';\nimport {\n MapViewStore\n} from '../../../stores/layout/mapview.store';\nimport {\n ApGeoPointsLayer\n} from '../../../ap-map/layers/ap-geo-points.layer';\n\n/**\n * Component for monitoring detail entry handling form display and data management\n */\n@Component({\n selector: 'ap-monitoring-detail-entry',\n template: `\n \n
\n \n \n
\n
\n `,\n styles: [],\n providers: [\n MonitoringDetailEntryConfig\n ]\n})\nexport class ApMonitoringDetailEntryComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: true})\n public dynForm: ApDynformsComponent;\n public loading$ = new BehaviorSubject(true);\n public caption$ = new BehaviorSubject('');\n public fieldSets$ = new BehaviorSubject([]);\n public saveDisabled$ = new EventEmitter(true);\n\n private _subscriptions: Subscription[] = [];\n private _initialFormData$ = new BehaviorSubject(undefined);\n private _isConfirmationWindowsShouldBeEnabled: boolean;\n\n constructor(private mapStore: MapStore,\n private formStore: FormStore,\n private fieldStore: FieldStore,\n private mapViewStore: MapViewStore,\n private translationStore: TranslationStore,\n private campaignYearStore: CampaignYearStore,\n private monitoringTypeStore: MonitoringTypeStore,\n private monitoringFieldStore: MonitoringFieldStore,\n private monitoringDetailStore: MonitoringDetailStore,\n private monitoringDetailEntryConfig: MonitoringDetailEntryConfig) {\n }\n\n /**\n * Initializes component by setting loading state and building form\n * @public\n */\n public ngOnInit(): void {\n this._setLoading();\n this._formBuilder();\n }\n\n /**\n * Sets up form after view initialization with subscriptions for:\n * - Form validation and save button state\n * - Component data and field selection\n * - Monitoring recommendation handling\n * @public\n */\n public ngAfterViewInit(): void {\n setTimeout(() => {\n this.dynForm.form.markAllAsTouched();\n this.mapStore.Layers.GeoPointsLayer.activateEditMode();\n }, 0);\n this._subscriptions.push(\n combineLatest([\n this._initialFormData$.asObservable(),\n this.dynForm.FormValues$.asObservable(),\n this.fieldSets$.asObservable(),\n this.mapStore.Layers.GeoPointsLayer.modifyTriggered\n ]).pipe(\n filter(([initialFormData, formValues, fieldSets, _]) => {\n return !!initialFormData && !!formValues && fieldSets?.length > 0;\n })\n ).subscribe(([initialFormData, formValues, _, modifyTriggered]): void => {\n this.dynForm.form.updateValueAndValidity();\n const areFormValuesInInitialState = Object.keys(formValues).every(key =>\n Array.isArray(formValues[key]) || typeof formValues[key] === 'object'\n ? ObjectFactory.Equal(formValues[key], initialFormData[key])\n : formValues[key] === initialFormData[key]\n );\n this._isConfirmationWindowsShouldBeEnabled = !areFormValuesInInitialState;\n this.saveDisabled$.next(!this.dynForm.form.valid || (areFormValuesInInitialState && !modifyTriggered));\n })\n );\n this._subscriptions.push(\n combineLatest([\n this.formStore.NewComponent$,\n this.monitoringFieldStore.MonitoringFields$,\n this.fieldSets$.asObservable(),\n ]).subscribe(([newComponent, monitoringFields, fieldSets]) => {\n const componentData = newComponent?.data as MonitoringDetailEntryComponentData;\n setTimeout(() => this.caption$.next(componentData?.MonitoringDetailId ? 'EditMonitoringDetail' : 'NewMonitoringDetail'));\n const monitoringField = monitoringFields.find(x => x.Id === componentData.MonitoringFieldId);\n if (!!monitoringField && fieldSets.length > 0) {\n setTimeout(() => {\n this.fieldStore.changeSelectedField([monitoringField.FieldId.toString()]);\n if (this.mapViewStore.getMapViewMode() !== MapViewMode.NORMAL\n || this.mapViewStore.getMapViewCurrentMenu() !== MapViewCurrentMenu.MAP) {\n this.mapViewStore.goIntoMapMenu();\n }\n }, 100);\n }\n })\n );\n this._subscriptions.push(\n this.dynForm?.formValueChanges.pipe(\n debounceTime(500)\n ).subscribe(valuesChangesArgs => {\n // retrieve monitoring id from componentData and find the matching monitoring object and its fieldId from monitoringFieldStore.\n // this is required because recommendation calculation is based on the field's current crop (eppoCode)\n const componentData = this.formStore.NewComponent$.getValue().data as MonitoringDetailEntryComponentData;\n const monitoringField = this.monitoringFieldStore.Listen(m => m.data).getValue()\n .FirstOrDefault(m => m.Id === componentData?.MonitoringFieldId);\n setTimeout(() => this.monitoringDetailEntryConfig.handleMonitoringRecommendation(\n this.dynForm,\n monitoringField?.FieldId,\n valuesChangesArgs), 0);\n })\n );\n }\n\n /**\n * Cleans up subscriptions on component destruction\n * @public\n */\n public ngOnDestroy(): void {\n this._subscriptions.forEach(x => x?.unsubscribe());\n }\n\n /**\n * Handles form submission by saving data and closing the form.\n * Executes save process first to ensure data persistence before form closure.\n * @public\n */\n public onSubmitClick(): void {\n this._executeSaveProcess();\n this._closeForm();\n }\n\n /**\n * Handles cancel button click with unsaved changes confirmation\n * Closes form and resets monitoring detail store state\n * @public\n */\n public onCancelClick(): void {\n if (this._isConfirmationWindowsShouldBeEnabled) {\n this.monitoringDetailEntryConfig.onDeclineUnsavedChanges(() => {\n this._closeForm();\n this.monitoringDetailStore.SetLoadState();\n this.monitoringDetailStore.SetLoadFinishState();\n });\n } else {\n this._closeForm();\n this.monitoringDetailStore.SetLoadState();\n this.monitoringDetailStore.SetLoadFinishState();\n }\n }\n\n /**\n * Manages loading state by combining multiple store loading observables.\n * @private\n */\n private _setLoading(): void {\n this._subscriptions.push(\n combineLatest([\n this.translationStore.Loading$,\n this.campaignYearStore.Loading$,\n this.monitoringTypeStore.Loading$,\n this.monitoringFieldStore.Loading$,\n this.monitoringDetailStore.Loading$\n ]).pipe(\n map(loadings => loadings.some(loading => loading)),\n distinctUntilChanged(),\n map(loading => loading)\n ).subscribe(loading => {\n this.loading$.next(loading);\n })\n );\n }\n\n /**\n * Builds form configuration by combining monitoring details, types, and campaign data.\n * @private\n */\n private _formBuilder(): void {\n this._subscriptions.push(\n combineLatest([\n this.monitoringDetailStore.MonitoringDetails$,\n this.monitoringTypeStore.MonitoringTypes$,\n this.campaignYearStore.SelectedCampaignYear$,\n this.formStore.NewComponent$,\n this.fieldSets$.asObservable()\n ]).pipe(\n filter(([monitoringDetails, monitoringTypes, campaignYear, newComponent, formConfig]) => {\n const componentData = newComponent.data as MonitoringDetailEntryComponentData;\n if (monitoringTypes.length <= 0 || !campaignYear || !componentData || formConfig.length > 0) {\n return false;\n }\n return !(monitoringDetails.length <= 0 && componentData.MonitoringDetailId);\n }),\n map(([monitoringDetails, monitoringTypes, campaignYear, newComponent, _1]) => {\n const componentData = newComponent.data as MonitoringDetailEntryComponentData;\n const monitoringDetailData = monitoringDetails.find(x => x.Id === componentData.MonitoringDetailId);\n const formData = this.monitoringDetailEntryConfig.getFormData(campaignYear, monitoringDetailData, monitoringTypes);\n const formFields = this.monitoringDetailEntryConfig.generateFormConfig(formData, this.dynForm.FormValues$);\n return ([formData, formFields]);\n })\n ).subscribe(([formData, formFields]: [MonitoringDetailEntryFormData, ApDynformsConfigFieldset[]]): void => {\n this._initialFormData$.next(formData);\n this.fieldSets$.next(formFields);\n })\n );\n }\n\n /**\n * Executes the save process for monitoring detail data.\n * Handles both editing existing monitoring details and creating new ones:\n * - For existing details: Copies and updates the object with new values;\n * - For new details: Creates object with monitoring field ID and form values;\n * Delegates actual save operation to monitoring detail store.\n * @private\n */\n private _executeSaveProcess(): void {\n const monitoringDetailData = this.dynForm.form.getRawValue() as MonitoringDetailEntryFormData;\n const componentData = this.formStore.NewComponent$.getValue().data as MonitoringDetailEntryComponentData;\n const customData: MonitoringDetailCustomData = {\n MonitoringFieldId: componentData.MonitoringFieldId,\n Position: undefined\n };\n if (!!componentData.MonitoringDetailId) {\n const monitoringDetail = this.monitoringDetailStore.MonitoringDetails\n .find(x => x.Id === componentData.MonitoringDetailId);\n customData.Position = this.mapStore.Layers.GeoPointsLayer.editLayer.GetFeatureByIdAsJSON(\n ApGeoPointsLayer.projection, monitoringDetail.Id.toString());\n const monitoringDetailsWithNewData = this.monitoringDetailEntryConfig.applyFormDataToBackendObject(\n monitoringDetailData, monitoringDetail, customData);\n this.monitoringDetailStore.editMonitoringDetail(monitoringDetailsWithNewData);\n } else {\n customData.Position = this.mapStore.Layers.GeoPointsLayer.editLayer.GetFeatureByIdAsJSON(\n ApGeoPointsLayer.projection, 'NEW');\n const newMonitoringDetail = this.monitoringDetailEntryConfig.applyFormDataToBackendObject(\n monitoringDetailData, undefined, customData);\n this.monitoringDetailStore.createMonitoringDetail(newMonitoringDetail);\n }\n }\n\n /**\n * Closes the form with a slight delay to prevent UI issues.\n * @private\n */\n private _closeForm(): void {\n this.mapStore.Layers.GeoPointsLayer.deactivateEditMode();\n this.mapStore.Editor.CloseEditor(this.fieldStore);\n this.formStore.closeForm();\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport {\n MonitoringRulesCalculateRecommendationResult,\n MonitoringRulesCalculateRecommendation,\n NetTypes\n} from 'invoker-transport';\nimport IMonitoringRules = Data.Agronomic.IMonitoringRules;\nimport IResultMessage = Invoker.IResultMessage;\ninterface IMonitoringRulesStore extends IStateStore {\n}\n\n/**\n * Store for handling monitoring rules and calculating recommendation values\n */\n@Injectable({providedIn: 'root'})\nexport class MonitoringRulesStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: true,\n loading: false,\n data: []\n });\n }\n\n /**\n * Calculates a recommended value based on the given monitoring data\n * This watches the backend response stream to immediately return a promise which can be resolved by client component\n * @param measuredValue the value measured by customer\n * @param eppoCode the field's current crop's eppoCode\n * @param ecStage the monitoring growth stage\n * @param monitoringTypeId the monitoring type (e.g. n-tester, nitrate check etc.)\n */\n public calculateRecommendation(measuredValue: number, eppoCode: string, ecStage: number, monitoringTypeId: number): Promise {\n if (!eppoCode ||\n monitoringTypeId == null || !isFinite(monitoringTypeId) ||\n ecStage == null || !isFinite(ecStage) ||\n measuredValue == null || !isFinite(measuredValue)) {\n return new Promise(res => res(-1));\n }\n return new Promise((res, rej) => {\n this.DispatchBackend(new MonitoringRulesCalculateRecommendation([\n {Name: 'measuredValue', Type: NetTypes.FLOAT, Value: measuredValue},\n {Name: 'eppoCode', Type: NetTypes.STRING, Value: eppoCode},\n {Name: 'ecStage', Type: NetTypes.INT, Value: ecStage},\n {Name: 'monitoringTypeId', Type: NetTypes.INT, Value: monitoringTypeId}\n ])).watchStream({\n action: MonitoringRulesCalculateRecommendationResult,\n todo: (msg: IResultMessage) => {\n if (msg.Error) {\n rej(msg.Error);\n return;\n }\n res(msg.Data);\n }\n });\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n FormDataMonitoringTypeData,\n MonitoringDetailCustomData,\n MonitoringDetailEntryFormData\n} from './monitoring-detail-entry.types';\nimport {Observable} from 'rxjs';\nimport {\n ApDynformsConfigFieldset\n} from '../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigComboBox\n} from '../../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {nameOf} from '../../../ap-core/utils/ap-name-of';\nimport {ApDynformsValidator} from '../../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {\n ApDynformsConfigDatepicker\n} from '../../../ap-dynforms/config/ap-dynforms-config-datepicker';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {MonitoringTypeStore} from '../../../stores/fields/monitoring-type.store';\nimport {UnitService} from '../../../services/data/unit.service';\nimport {\n ApDynformsConfigTextarea\n} from '../../../ap-dynforms/config/ap-dynforms-config-textarea';\nimport {\n ApDynformsConfigUpload\n} from '../../../ap-dynforms/config/ap-dynforms-config-upload';\nimport {ApHelpImageUpload} from '../../../help/components/ap-help-image.upload';\nimport {FileState} from '@progress/kendo-angular-upload';\nimport {\n MonitoringDetailStore\n} from '../../../stores/fields/monitoring-detail.store';\nimport {ApDynformsComponent} from '../../../ap-dynforms/ap-dynforms.component';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {\n MonitoringRulesStore\n} from '../../../stores/agronomic/monitoring-rules.store';\nimport {ApGetCropService} from '../../../stores/services/ap-get-crop.service';\nimport {FileService} from '../../../services/common/file.service';\nimport {\n IModalDialogResult\n} from '../../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {ModalDialogButtonKeys, ModalDialogPresets} from '../../../stores/dialog/modal.dialog.presets';\nimport {ModalDialogStore} from '../../../stores/dialog/modal.dialog.store';\nimport {\n Base64FileData,\n FileInfoData,\n UploadFileEvent\n} from '../../../ap-dynforms/types/ap-file-upload.types';\nimport {\n ApFileUploadComponentService\n} from '../../../ap-dynforms/services/ap-file-upload-component.service';\nimport {ApDateService} from '../../../ap-core/services/ap-date-service';\nimport {UploadFileService} from '../../../services/common/upload-file.service';\nimport {ObjectFactory} from 'ts-tooling';\nimport IGuid = System.IGuid;\nimport IMonitoringType = Data.Fields.IMonitoringType;\nimport ICampaignYear = Data.Authentication.ICampaignYear;\nimport IMonitoringDetail = Data.Fields.IMonitoringDetail;\nimport IMonitoringDetailAttachment = Data.Fields.IMonitoringDetailAttachment;\n\n/**\n * Service for managing monitoring detail entry configuration and operations\n * Handles form generation, file uploads, and monitoring recommendations\n */\n@Injectable()\nexport class MonitoringDetailEntryConfig {\n\n constructor(private fieldStore: FieldStore,\n private modalDialogStore: ModalDialogStore,\n private modalDialogPresets: ModalDialogPresets,\n private monitoringTypeStore: MonitoringTypeStore,\n private monitoringRulesStore: MonitoringRulesStore,\n private monitoringDetailStore: MonitoringDetailStore,\n private fileUploadComponentService: ApFileUploadComponentService,\n private cropService: ApGetCropService,\n private unitService: UnitService,\n private fileService: FileService,\n private dateService: ApDateService,\n private uploadFileService: UploadFileService) {\n }\n\n /**\n * Handles the calculation of the recommendation value based on the given monitoring data.\n * This logic applies only, if all necessary fields are not empty and if the selected field\n * has a valid crop with an eppoCode\n * @param dynForm the entry component's dynForm instance\n * @param fieldId the monitoring field-id\n * @param valuesChangesArgs the form's valueChanged arguments\n * @private\n */\n public handleMonitoringRecommendation(dynForm: ApDynformsComponent, fieldId: IGuid, valuesChangesArgs: {\n control: string;\n value: any\n }): void {\n if (dynForm?.form?.pristine ||\n (!dynForm?.form?.dirty && !dynForm?.form?.touched)) {\n return;\n }\n if (valuesChangesArgs.control === nameOf('MonitoringTypeId') ||\n valuesChangesArgs.control === nameOf('EcValue') ||\n valuesChangesArgs.control === nameOf('Value')) {\n const formData = dynForm?.form.getRawValue() as MonitoringDetailEntryFormData;\n // Check if monitoring type is configured to calculate a monitoring recommendation\n const monitoringRuleRecommendation = this.monitoringTypeStore.MonitoringTypes?.FirstOrDefault(t => t.Id === formData?.MonitoringTypeId)?.RulesRecommendation;\n if (!monitoringRuleRecommendation) {\n return;\n }\n\n const crop = this.cropService.getCropType(\n this.cropService.getFieldCrop(\n this.fieldStore.getFieldById(fieldId)), true);\n\n const monitoringTypeId = +formData.MonitoringTypeId;\n const ecValue = +formData.EcValue;\n const value = +formData.Value;\n\n if (!crop?.Eppocode ||\n monitoringTypeId == null || !isFinite(monitoringTypeId) ||\n ecValue == null || !isFinite(ecValue) ||\n value == null || !isFinite(value)) {\n return;\n }\n\n this.monitoringRulesStore.calculateRecommendation(value, crop.Eppocode, ecValue, monitoringTypeId)\n .then(recommendationValue => {\n // as per definition -1 is returned if no recommendation rule could be found for the given\n // combination of monitoring data => skip such values. Recommendation values are always >= 0\n if (recommendationValue < 0) {\n return;\n }\n\n formData.Recommendation = recommendationValue;\n dynForm?.form.patchValue(formData, {emitEvent: false});\n });\n }\n }\n\n /**\n * Generates a complete form configuration with field sets for monitoring detail entry.\n * @param formData Initial form data values.\n * @param formData$ Observable stream of form data changes.\n * @returns Array of fieldset configurations.\n * @public\n */\n public generateFormConfig(formData: MonitoringDetailEntryFormData, formData$: Observable): ApDynformsConfigFieldset[] {\n return [\n new ApDynformsConfigFieldset({\n key: 'Global__General_Information',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigDatepicker({\n key: nameOf('Date'),\n label: 'Nutrients__FertilizationDate',\n minDate: formData.MinDateRange,\n maxDate: formData.MaxDateRange,\n infoText: '',\n value: formData.Date,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('EcValue'),\n label: 'Global__ECStage',\n min: 0,\n max: 99,\n decimals: 0,\n format: 'n0',\n step: 1,\n value: formData?.EcValue,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n key: 'Worktype_Category_Valuation',\n legend: 'Worktype_Category_Valuation',\n config: [\n new ApDynformsConfigComboBox({\n key: nameOf('MonitoringTypeId'),\n label: 'Global_Type',\n valueField: nameOf('Id'),\n textField: nameOf('TranslationKey'),\n translate: true,\n value: formData?.MonitoringTypeId,\n options: this.monitoringTypeStore.MonitoringTypes$,\n valuePrimitive: true,\n sort: 1,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('Value'),\n label: 'NMonitoring__MeasuredValue',\n label$: this._formDataMonitoringTypeObservable(formData$, (data) => {\n return this.unitService.getUnitWithLabelKey(data.MonitoringType?.ValueUnit, 'NMonitoring__MeasuredValue', false, false);\n }),\n min: 0,\n max: 9999,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 2,\n value: formData?.Value,\n value$: this._formDataMonitoringTypeObservable(formData$, (data) => {\n return data.MonitoringType?.Value ? data.FormValues.Value : undefined;\n }),\n disabled: formData?.IsValueDisabled ?? true,\n disabled$: this._formDataMonitoringTypeObservable(formData$, (data) => {\n return data.MonitoringType ? !data.MonitoringType.Value : true;\n }),\n validators: [\n new ApDynformsValidator({\n errorKey: 'Settings__Msg_Vali_Value_Required',\n validator: Validators.required\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('Recommendation'),\n label: 'Nutrients__Recommendation',\n label$: this._formDataMonitoringTypeObservable(formData$, (data) => {\n return this.unitService.getUnitWithLabelKey(data.MonitoringType?.RecommendationUnit, 'Nutrients__Recommendation', false, false);\n }),\n min: 0,\n max: 9999,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 2,\n value: formData?.Recommendation,\n value$: this._formDataMonitoringTypeObservable(formData$, (data) => {\n return data.MonitoringType?.Recommendation ? data.FormValues.Recommendation : undefined;\n }),\n disabled: formData?.IsRecommendationDisabled ?? true,\n disabled$: this._formDataMonitoringTypeObservable(formData$, (data) => {\n return data.MonitoringType ? !data.MonitoringType.Recommendation : true;\n }),\n validators: [\n new ApDynformsValidator({\n errorKey: 'Settings__Msg_Vali_Value_Required',\n validator: Validators.required\n })\n ]\n }),\n new ApDynformsConfigTextarea({\n key: nameOf('Notes'),\n label: 'Global__Note',\n value: formData?.Notes,\n rows: 4\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n key: 'FilesToUpload',\n legend: 'FilesToUpload',\n useMaxWidth: true,\n config: [\n new ApDynformsConfigUpload({\n key: 'Attachments',\n value: formData?.Attachments,\n autoUpload: false,\n multiple: true,\n allowDownload: true,\n onlyUniqueFiles: true,\n showFilePreview: true,\n validateWithForm: true,\n restrictions: [...ApHelpImageUpload.AllowedExtensions, '.webm', '.mp4', '.mov', '.avi', '.pdf'],\n maxFileSize: 31 * 1024 * 1024,\n uploadEventHandler: this._uploadFile.bind(this),\n downloadFileCallback: this._downloadFileContent.bind(this)\n })\n ]\n })\n ];\n }\n\n /**\n * Creates form data object from campaign year and monitoring detail.\n * Initializes form with existing data or defaults for new entries.\n * @param campaignYear Current campaign year for date range.\n * @param monitoringDetail Optional existing monitoring detail.\n * @param monitoringTypes Collection of monitoring types.\n * @returns Form data object with initial values and field states.\n * @public\n */\n public getFormData(campaignYear: ICampaignYear, monitoringDetail: IMonitoringDetail | undefined, monitoringTypes: IMonitoringType[]): MonitoringDetailEntryFormData {\n const monitoringType = monitoringTypes.find(x => x.Id === monitoringDetail?.TypeId);\n return {\n MonitoringTypeId: monitoringDetail?.TypeId,\n Date: monitoringDetail?.Date ? new Date(monitoringDetail?.Date) : new Date(),\n MinDateRange: new Date(campaignYear.DefaultStart),\n MaxDateRange: new Date(campaignYear.DefaultEnd),\n EcValue: monitoringDetail?.EcStage,\n Value: monitoringDetail?.Value,\n IsValueDisabled: monitoringType ? !monitoringType.Value : true,\n Recommendation: monitoringDetail?.Recommendation,\n IsRecommendationDisabled: monitoringType ? !monitoringType.Recommendation : true,\n Notes: monitoringDetail?.Notes,\n Attachments: monitoringDetail?.Attachments?.map(x => this._convertAttachmentToFileInfoData(x)) ?? []\n };\n }\n\n /**\n * Displays confirmation dialog for unsaved changes\n * @param onConfirmed Callback to execute when confirmed\n * @public\n */\n public onDeclineUnsavedChanges(onConfirmed: () => void): void {\n this.modalDialogStore.setModalDialogData(this.modalDialogPresets.UnsavedChangesDialog({\n resultDelegate: (dialogResult: IModalDialogResult): void => {\n if (dialogResult?.key === ModalDialogButtonKeys.Confirm) {\n onConfirmed();\n }\n }\n }));\n }\n\n /**\n * Maps form data to backend monitoring detail object.\n * Creates new or updates existing monitoring detail with form values.\n * @param formData - Current form data values\n * @param monitoringDetail - Existing monitoring detail to update (optional)\n * @param customData - Additional custom data for monitoring detail\n * @returns Updated or new monitoring detail object\n */\n public applyFormDataToBackendObject(formData: MonitoringDetailEntryFormData | undefined,\n monitoringDetail: IMonitoringDetail | undefined,\n customData: MonitoringDetailCustomData | undefined): IMonitoringDetail | undefined {\n if (!formData) {\n return undefined;\n }\n const copiedFormData = ObjectFactory.Copy(formData);\n let newMonitoringDetail: IMonitoringDetail;\n const attachments = copiedFormData.Attachments?.map(file => ({Id: file.uid as IGuid} as IMonitoringDetailAttachment)) ?? [];\n const monitoringType = this.monitoringTypeStore.MonitoringTypes.find(x => x.Id === copiedFormData.MonitoringTypeId);\n const position = !!customData?.Position ? customData.Position[Object.keys(customData.Position)[0]] as any : null;\n if (!!monitoringDetail) {\n newMonitoringDetail = ObjectFactory.Copy(monitoringDetail);\n newMonitoringDetail.TypeId = monitoringType.Id;\n newMonitoringDetail.Date = copiedFormData.Date;\n newMonitoringDetail.EcStage = copiedFormData.EcValue;\n newMonitoringDetail.Notes = copiedFormData.Notes;\n newMonitoringDetail.Value = copiedFormData.Value;\n newMonitoringDetail.ValueUnit = monitoringType.ValueUnit;\n newMonitoringDetail.Recommendation = copiedFormData.Recommendation;\n newMonitoringDetail.RecommendationUnit = monitoringType.RecommendationUnit;\n newMonitoringDetail.Position = position;\n newMonitoringDetail.Attachments = attachments;\n } else {\n newMonitoringDetail = {\n MonitoringFieldId: customData?.MonitoringFieldId,\n TypeId: monitoringType.Id,\n Date: copiedFormData.Date,\n EcStage: copiedFormData.EcValue,\n Notes: copiedFormData.Notes,\n Value: copiedFormData.Value,\n ValueUnit: monitoringType.ValueUnit,\n Recommendation: copiedFormData.Recommendation,\n RecommendationUnit: monitoringType.RecommendationUnit,\n Position: position,\n Attachments: attachments\n } as IMonitoringDetail;\n }\n return newMonitoringDetail;\n }\n\n /**\n * Downloads file content for a given file ID\n * @param fileId Unique identifier of the file to download\n * @param callback Function to handle downloaded file data\n * @private\n */\n private _downloadFileContent(fileId: string, callback: (base64FileData: Base64FileData | undefined) => void): void {\n this.monitoringDetailStore.downloadAttachment(fileId as IGuid)\n .then((attachment) => {\n try {\n callback({\n FileName: attachment.Name,\n MimeType: attachment.ContentMimeType,\n Size: attachment.ContentSize,\n Base64: attachment.ContentBase64\n });\n } catch (e) {\n console.warn(e);\n callback(undefined);\n }\n })\n .catch(() => {\n console.warn('Attachment could not be downloaded');\n callback(undefined);\n });\n }\n\n /**\n * Handles file upload event initiation\n * @param event Upload event containing files to process\n * @private\n */\n private _uploadFile(event: UploadFileEvent): void {\n if (!event?.files && event.files.length <= 0) {\n return;\n }\n this._processFileUploading(event).then();\n }\n\n /**\n * Converts a monitoring detail attachment to a FileInfo object compatible with the upload component.\n * @param attachment Monitoring detail attachment to convert\n * @returns FileData object with file metadata and content\n * @private\n */\n private _convertAttachmentToFileInfoData(attachment: IMonitoringDetailAttachment): FileInfoData {\n const uploadDate = !!attachment.CreatedAt\n ? this.dateService.toFarmDate(new Date(attachment.CreatedAt)).toDate()\n : undefined;\n const thumbnailExtension = this.fileService.getFileExtensionByMimeType(attachment.ThumbnailMimeType);\n const fileInfoData = this.fileUploadComponentService.createFileInfoData(\n attachment.Id.toString(), uploadDate,\n {\n FileName: attachment.Name,\n MimeType: attachment.ContentMimeType,\n Size: attachment.ContentSize,\n Base64: attachment.ContentBase64\n },\n {\n FileName: `thumbnail.${thumbnailExtension}`,\n MimeType: attachment.ThumbnailMimeType,\n Size: attachment.ThumbnailSize,\n Base64: attachment.ThumbnailBase64\n });\n fileInfoData.state = FileState.Uploaded;\n return fileInfoData;\n }\n\n /**\n * Creates an observable that processes form data changes related to monitoring type.\n * @param formData$ Source form data observable.\n * @param callback Function to transform monitoring type data.\n * @returns Observable of processed form data based on monitoring type changes.\n * @public\n */\n private _formDataMonitoringTypeObservable(formData$: Observable, callback: (data: FormDataMonitoringTypeData) => any): Observable {\n return formData$.pipe(\n distinctUntilChanged((previous, current) => previous.MonitoringTypeId === current.MonitoringTypeId),\n map(formValues => ({\n FormValues: formValues,\n MonitoringType: this.monitoringTypeStore.MonitoringTypes.find(y => y.Id === formValues.MonitoringTypeId)\n } as FormDataMonitoringTypeData)),\n map(x => callback(x))\n );\n }\n\n /**\n * Processes file upload events and manages upload progress\n * @param event Upload event containing file information and process controls\n * @private\n */\n private async _processFileUploading(event: UploadFileEvent): Promise {\n if (event.files.length <= 0) {\n return;\n }\n for (const fileDataInfo of event.files) {\n if (fileDataInfo.state === FileState.Uploading || fileDataInfo.state === FileState.Uploaded) {\n return;\n }\n try {\n const thumbnailFileDataUrl = await this.fileService.readFileToDataUrl(fileDataInfo.ThumbnailFile);\n const rawFileDataUrl = await this.fileService.readFileToDataUrl(fileDataInfo.rawFile);\n const attachment = {\n Id: fileDataInfo.uid as IGuid,\n Name: fileDataInfo.name,\n ContentSize: fileDataInfo.rawFile.size,\n ContentMimeType: fileDataInfo.rawFile.type,\n ContentBase64: this.fileService.getBase64FromDataUrl(rawFileDataUrl)\n } as IMonitoringDetailAttachment;\n if (!!thumbnailFileDataUrl) {\n attachment.ThumbnailSize = fileDataInfo.ThumbnailFile?.size;\n attachment.ThumbnailMimeType = fileDataInfo.ThumbnailFile?.type;\n attachment.ThumbnailBase64 = this.fileService.getBase64FromDataUrl(thumbnailFileDataUrl);\n }\n event.fileProcess.setUploadProgress(fileDataInfo.uid, 0);\n let shouldProgressStopProgress = false;\n this.uploadFileService.controlUploadProgress((progress: number) => {\n event.fileProcess.setUploadProgress(fileDataInfo.uid, progress);\n return shouldProgressStopProgress;\n }, {Interval: 100, Increment: 9});\n this.monitoringDetailStore.uploadAttachment(attachment)\n .then(() => {\n shouldProgressStopProgress = true;\n event.fileProcess.setUploadProgress(fileDataInfo.uid, 100);\n event.fileProcess.setUploadFinished(fileDataInfo.uid);\n })\n .catch(() => {\n console.warn('Error during uploading attachment');\n shouldProgressStopProgress = true;\n event.fileProcess.setUploadFailed(fileDataInfo.uid);\n });\n } catch (ex) {\n console.warn(ex);\n event.fileProcess.setUploadFailed(fileDataInfo.uid);\n }\n }\n }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport {\n nameOf\n} from '../../../ap-core/utils/ap-name-of';\nimport {\n MonitoringFieldGridItem\n} from './monitoring-field-entry.types';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridColumnConfigBase,\n ApDynGridColumnHideConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n map\n} from 'rxjs/operators';\nimport {\n MapViewMode\n} from '../../../ap-interface';\nimport {\n MapViewStore\n} from '../../../stores/layout/mapview.store';\nimport {\n GetRoundNumericPipe\n} from '../../../ap-utils';\nimport {\n ApDynGridPagerWizardBreadcrumbsStepper,\n ApDynGridPagerWizardButton,\n ApDynGridPagerWizardConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {Observable} from 'rxjs';\nimport {\n FieldStore\n} from '../../../stores/farm/field.store';\nimport {\n IGridStatus\n} from '../../../ap-interface/interfaces/ap-grid-status.interface';\nimport {\n ApColumnState\n} from '../../../ap-interface/enums/ap-column-state.enum';\nimport {\n ApGetCropService\n} from '../../../stores/services/ap-get-crop.service';\nimport ISettings = Data.BaseData.ISettings;\nimport IField = Data.FieldManagement.IField;\n\n@Injectable()\nexport class MonitoringFieldEntryConfig {\n constructor(private fieldStore: FieldStore,\n private mapViewStore: MapViewStore,\n private cropService: ApGetCropService,\n private roundNumericPipe: GetRoundNumericPipe) {\n }\n\n /**\n * Returns breadcrumb labels for wizard steps\n * @returns Array of translation keys for breadcrumbs\n * @public\n */\n public getBreadCrumbs(): string[] {\n return ['Global__Selection', 'Global__Details'];\n }\n\n /**\n * Generates grid column configuration for monitoring field display.\n * @param setting Application settings containing decimal point preferences.\n * @returns Array of column configurations.\n * @public\n */\n public getGridColumns(setting: ISettings): ApDynGridColumnConfigBase[] {\n return [\n new ApDynGridStatusColumnConfig({\n field: nameOf('Status'),\n class: nameOf('StatusClass'),\n description: nameOf('StatusDesc'),\n filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Number',\n field: nameOf('FieldNumber'),\n width: 60,\n cssClass: 'right',\n hide: true,\n filterable: true,\n filterType: FilterType.NUMBER,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini_Subnumber',\n field: nameOf('FieldSecondNumber'),\n width: 60,\n cssClass: 'right',\n hide: true,\n filterable: true,\n filterType: FilterType.NUMBER,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Number',\n field: nameOf('FieldCombinedNumber'),\n width: 70,\n hide: new ApDynGridColumnHideConfig({\n selfHide: this.mapViewStore.Listen(s => s.mode).pipe(\n map((mode) => mode === MapViewMode.HIDE)\n )\n }),\n filterable: true,\n headerFilterable: true,\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Name',\n field: nameOf('FieldName'),\n width: 180,\n sortIndex: 0,\n filterable: true,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Area',\n field: nameOf('Area'),\n width: 60,\n cssClass: 'right',\n tooltip: (dataItem: MonitoringFieldGridItem) => dataItem?.Area?.toString(),\n filterable: true,\n filterType: FilterType.NUMBER,\n headerFilterable: true,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [setting.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Crop',\n field: nameOf('CropName'),\n width: 100,\n filterable: true,\n headerFilterable: true\n })\n ];\n }\n\n /**\n * Creates pager configuration with cancel and save buttons.\n * @param onPrev Event emitter for cancel action.\n * @param onNext Event emitter for save action.\n * @param isNextActive Observable controlling save button state.\n * @returns Wizard-style pager configuration with two buttons separated by a section.\n * @public\n */\n public getSelectionStepPager(onPrev: EventEmitter,\n onNext: EventEmitter,\n isNextActive: Observable): ApDynGridPagerWizardConfig {\n return new ApDynGridPagerWizardConfig(\n new ApDynGridPagerWizardButton('Global__Cancel', onPrev, {id: 'button_cancel'}),\n new ApDynGridPagerWizardBreadcrumbsStepper(this.getBreadCrumbs(), 0),\n new ApDynGridPagerWizardButton('Global_Next_With_Arrow', onNext, {\n id: 'button_next',\n active: isNextActive\n })\n );\n }\n\n /**\n * Generates monitoring field item for grid display\n * @param field Source field data\n * @returns Formatted grid item with status and field details\n * @public\n */\n public getMonitoringFieldGridItem(field: IField): MonitoringFieldGridItem {\n const fieldGeom = this.fieldStore.getCurrentFieldGeom(field);\n const fieldCombinedNumber = this.fieldStore.getFieldNumberAndSubNumber(field);\n const mainCropDescription = this.cropService.parseMainCrop(field);\n const gridStatus = this._getItemGridStatus(mainCropDescription);\n return {\n Id: field.Id,\n Status: gridStatus.state,\n StatusClass: gridStatus.class,\n StatusDesc: gridStatus.description,\n FieldName: field.FieldName,\n FieldGeomId: fieldGeom.Id,\n FieldNumber: field.FieldNumber,\n FieldSecondNumber: field.FieldSubnumber,\n FieldCombinedNumber: fieldCombinedNumber,\n Area: fieldGeom.AreaHa,\n CropName: mainCropDescription\n };\n }\n\n /**\n * Determines the grid status for a field based on its crop presence.\n * There is no crop - yellow status;\n * Crop is present for current year - green status;\n * @param mainCropDescription - The main crop description for crop for current year\n * @returns Status for grid\n * @private\n */\n private _getItemGridStatus(mainCropDescription: string | undefined): IGridStatus {\n const gridStatus: IGridStatus = {\n state: ApColumnState.Yellow,\n class: 'ap-status-yellow',\n description: ''\n };\n if (mainCropDescription) {\n gridStatus.state = ApColumnState.Green;\n gridStatus.class = 'ap-status-green';\n }\n return gridStatus;\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {\n FieldStore\n} from '../../../stores/farm/field.store';\nimport {debounceTime, distinctUntilChanged, filter, map} from 'rxjs/operators';\nimport {\n ApDynGridPagerWizardConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {\n ApDynGridColumnConfigBase\n} from '../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n SettingsStore\n} from '../../../stores/base-data/settings.store';\nimport {\n MapViewCurrentMenu,\n MapViewMode\n} from '../../../ap-interface';\nimport {\n MapViewStore\n} from '../../../stores/layout/mapview.store';\nimport {\n ApDynComponentComponent\n} from '../../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n MonitoringFieldGridItem\n} from './monitoring-field-entry.types';\nimport {\n FormStore\n} from '../../../stores/layout/form.store';\nimport {\n MonitoringFieldStore\n} from '../../../stores/fields/monitoring-field.store';\nimport {\n MonitoringFieldEntryConfig\n} from './monitoring-field-entry.config';\nimport {\n ApDynformsConfigFieldset\n} from '../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n MonitoringDetailEntryConfig\n} from '../ap-monitoring-detail/monitoring-detail-entry.config';\nimport {\n MonitoringTypeStore\n} from '../../../stores/fields/monitoring-type.store';\nimport {\n CampaignYearStore\n} from '../../../stores/login/campaignyear.store';\nimport {\n MonitoringDetailCustomData,\n MonitoringDetailEntryFormData\n} from '../ap-monitoring-detail/monitoring-detail-entry.types';\nimport {\n ApDefined\n} from '../../../ap-utils/static/ap-defined';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n ApGeoPointsLayer\n} from '../../../ap-map/layers/ap-geo-points.layer';\nimport {\n MapStore\n} from '../../../stores/map/map.store';\nimport {\n MonitoringDetailStore\n} from '../../../stores/fields/monitoring-detail.store';\nimport Polygon from 'ol/geom/Polygon';\nimport IGuid = System.IGuid;\n\n/**\n * Manages initialization, view setup, and cleanup for monitoring field entry\n * Handles field selection, monitoring details, and map integration\n */\n@Component({\n selector: 'ap-monitoring-field-entry',\n template: `\n \n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n `,\n styles: [],\n providers: [\n MonitoringFieldEntryConfig,\n MonitoringDetailEntryConfig\n ]\n})\nexport class ApMonitoringFieldEntryComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true}) public dynComponent: ApDynComponentComponent;\n public columns$ = new BehaviorSubject([]);\n public loading$ = new BehaviorSubject(true);\n public items$ = new BehaviorSubject([]);\n public fieldSets$ = new BehaviorSubject([]);\n public caption$ = new BehaviorSubject('');\n public onBackToSelection$ = new EventEmitter();\n public onSave$ = new EventEmitter();\n public saveDisabled$ = new EventEmitter(true);\n public pager: ApDynGridPagerWizardConfig;\n\n private _onCancel = new EventEmitter();\n private _onNextToDetails = new EventEmitter();\n private _isNextActive: BehaviorSubject = new BehaviorSubject(false);\n private _initialFormData$ = new BehaviorSubject(undefined);\n private _selectionSubscriptions: Subscription[] = [];\n private _detailsSubscriptions: Subscription[] = [];\n private _subscriptions: Subscription[] = [];\n private _selectedField: IGuid | undefined;\n private _selectedFieldGeomId: IGuid | undefined;\n private _isConfirmationWindowsShouldBeEnabled: boolean;\n\n constructor(private formStore: FormStore,\n private mapStore: MapStore,\n private fieldStore: FieldStore,\n private mapViewStore: MapViewStore,\n private settingsStore: SettingsStore,\n private campaignYearStore: CampaignYearStore,\n private monitoringTypeStore: MonitoringTypeStore,\n private monitoringFieldStore: MonitoringFieldStore,\n private changeDetection: ChangeDetectorRef,\n private monitoringDetailStore: MonitoringDetailStore,\n public monitoringDetailEntryConfig: MonitoringDetailEntryConfig,\n public monitoringFieldEntryConfig: MonitoringFieldEntryConfig) {\n }\n\n /**\n * Initializes component by setting up map view and starting selection step\n * @public\n */\n public ngOnInit(): void {\n this._handleHalfMapAndGridView();\n this._onSelectionStep();\n }\n\n /**\n * Sets up component after view initialization:\n * - Handles cancel and navigation events\n * - Manages form state and validation\n * - Sets up save functionality\n * @public\n */\n public ngAfterViewInit(): void {\n this._subscriptions.push(this._onCancel.subscribe(() => {\n this.monitoringDetailStore.SetLoadState();\n this.monitoringDetailStore.SetLoadFinishState();\n this._closeForm();\n }));\n this._subscriptions.push(this._onNextToDetails.subscribe((): void => {\n this._onDetailsStep();\n }));\n this._subscriptions.push(this.onBackToSelection$.subscribe((): void => {\n if (this._isConfirmationWindowsShouldBeEnabled) {\n this.monitoringDetailEntryConfig.onDeclineUnsavedChanges(() => {\n this._onSelectionStep();\n });\n } else {\n this._onSelectionStep();\n }\n }));\n this._subscriptions.push(\n combineLatest([\n this._initialFormData$.asObservable(),\n this.dynComponent.FormValues$.asObservable(),\n this.fieldSets$.asObservable(),\n this.mapStore.Layers.GeoPointsLayer.modifyTriggered\n ]).pipe(\n filter(([initialFormData, formValues, fieldSets, _]) => {\n return !!initialFormData && !!formValues && fieldSets?.length > 0;\n })\n ).subscribe(([initialFormData, formValues, _, modifyTriggered]): void => {\n this.dynComponent.dynForm.form.updateValueAndValidity();\n const areFormValuesInInitialState = Object.keys(formValues).every(key =>\n Array.isArray(formValues[key]) || typeof formValues[key] === 'object'\n ? ObjectFactory.Equal(formValues[key], initialFormData[key])\n : formValues[key] === initialFormData[key]\n );\n this._isConfirmationWindowsShouldBeEnabled = !areFormValuesInInitialState;\n this.saveDisabled$.next(!this.dynComponent.dynForm.form.valid || (areFormValuesInInitialState && !modifyTriggered));\n })\n );\n this._subscriptions.push(this.onSave$.subscribe(() => {\n const monitoringDetailData = this.dynComponent.dynForm.form.getRawValue() as MonitoringDetailEntryFormData;\n const customData: MonitoringDetailCustomData = {\n MonitoringFieldId: undefined,\n Position: this.mapStore.Layers.GeoPointsLayer.editLayer.GetFeatureByIdAsJSON(ApGeoPointsLayer.projection, 'NEW')\n };\n const newMonitoringDetail = this.monitoringDetailEntryConfig.applyFormDataToBackendObject(monitoringDetailData, undefined, customData);\n this.monitoringFieldStore.saveMonitoringFieldWithDetail(this._selectedField, newMonitoringDetail);\n this._closeForm();\n }));\n }\n\n /**\n * Cleans up component resources:\n * - Unsubscribes from all subscriptions\n * - Clears selected fields\n * @public\n */\n public ngOnDestroy(): void {\n this._subscriptions.forEach(x => x?.unsubscribe());\n this._detailsSubscriptions.forEach(x => x?.unsubscribe());\n this._selectionSubscriptions.forEach(x => x?.unsubscribe());\n this.fieldStore.changeSelectedField([]);\n }\n\n /**\n * Resets form state and configures pager for field selection step\n * Cleans up detail subscriptions and initializes selection mode\n * @private\n */\n private _onSelectionStep(): void {\n this.mapStore.Layers.GeoPointsLayer.deactivateEditMode();\n this._detailsSubscriptions.forEach(x => x.unsubscribe());\n this._isNextActive.next(false);\n this.fieldSets$.next([]);\n this.caption$.next('NewMonitoringField');\n this.pager = this.monitoringFieldEntryConfig.getSelectionStepPager(this._onCancel, this._onNextToDetails,\n this._isNextActive.asObservable());\n const itemToSelect = this._selectedField?.toString();\n this._setSelectionSubscriptions();\n if (!!itemToSelect) {\n ApDefined.waitUntilDefined(this.dynComponent, 'dynGrid', () => {\n this.dynComponent.dynGrid.gridPaging.setSelectedKeys([itemToSelect as IGuid]);\n }, 2000, 50);\n }\n }\n\n /**\n * Transitions form to details entry mode\n * Cleans up selection subscriptions and prepares for monitoring details\n * @private\n */\n private _onDetailsStep(): void {\n this._selectionSubscriptions.forEach(x => x.unsubscribe());\n this.columns$.next([]);\n this.caption$.next('NewMonitoringDetail');\n const fieldPolygon: Polygon = this.mapStore.Layers.FieldsLayer.layer.getSource().getFeatureById(this._selectedFieldGeomId.toString()).getGeometry() as Polygon;\n this.mapStore.Layers.GeoPointsLayer.addPoint('NEW', fieldPolygon.getCoordinates()[0][0], true, false);\n this.mapStore.Layers.GeoPointsLayer.activateEditMode();\n this._setDetailsSubscriptions();\n }\n\n /**\n * Sets up reactive subscriptions for field selection grid\n * Handles loading states, field filtering, grid updates and selection events\n * @private\n */\n private _setSelectionSubscriptions(): void {\n this._selectionSubscriptions.push(\n combineLatest([\n this.fieldStore.Loading$,\n this.monitoringFieldStore.Loading$\n ]).pipe(\n map((loadings) => loadings.some(loaded => loaded)),\n distinctUntilChanged()\n ).subscribe(loading => {\n this.loading$.next(loading);\n })\n );\n this._selectionSubscriptions.push(\n combineLatest([\n this.fieldStore.Fields$,\n this.monitoringFieldStore.MonitoringFields$\n ]).pipe(\n filter(([fields, _]) => fields.length > 0),\n map(([fields, monitoringFields]) => {\n return fields.filter(field => !monitoringFields.some(x => x.FieldId === field.Id))\n .map(field => this.monitoringFieldEntryConfig.getMonitoringFieldGridItem(field));\n })\n ).subscribe(items => {\n this.items$.next(items);\n })\n );\n this._selectionSubscriptions.push(\n combineLatest([\n this.settingsStore.FirstSetting$\n ]).pipe(\n map(([setting]) => this.monitoringFieldEntryConfig.getGridColumns(setting))\n ).subscribe(columns => {\n this.columns$.next(columns);\n })\n );\n this._selectionSubscriptions.push(this.dynComponent.SelectedItems$.subscribe((items: MonitoringFieldGridItem[]) => {\n const selectedFieldIds = items.map(x => x.Id.toString());\n const selectedFieldGeomIds = items.map(x => x.FieldGeomId.toString());\n if (selectedFieldIds.length > 0) {\n this.fieldStore.changeSelectedField(selectedFieldIds);\n } else {\n this.fieldStore.zoomFarmFields();\n }\n this._selectedField = selectedFieldIds.length > 0 ? selectedFieldIds[0] : undefined;\n this._selectedFieldGeomId = selectedFieldGeomIds.length > 0 ? selectedFieldGeomIds[0] : undefined;\n this._isNextActive.next(!!this._selectedField);\n }));\n }\n\n /**\n * Configures subscriptions for monitoring details form\n * Manages form configuration based on monitoring types and campaign year\n * @private\n */\n private _setDetailsSubscriptions(): void {\n this._detailsSubscriptions.push(\n combineLatest([\n this.monitoringTypeStore.MonitoringTypes$,\n this.campaignYearStore.SelectedCampaignYear$,\n this.fieldSets$.asObservable()\n ]).pipe(\n filter(([monitoringTypes, campaignYear, formConfig]) => {\n return !(monitoringTypes.length <= 0 || !campaignYear || formConfig.length > 0);\n }),\n map(([monitoringTypes, campaignYear, _]) => {\n const formData = this.monitoringDetailEntryConfig.getFormData(campaignYear, undefined, monitoringTypes);\n const formFields = this.monitoringDetailEntryConfig.generateFormConfig(formData, this.dynComponent.dynForm.FormValues$);\n return ([formData, formFields]);\n })\n ).subscribe(([formData, formFields]: [MonitoringDetailEntryFormData, ApDynformsConfigFieldset[]]): void => {\n this._initialFormData$.next(formData);\n this.fieldSets$.next(formFields);\n setTimeout(() => this.dynComponent.dynForm.form.markAllAsTouched(), 1);\n this.changeDetection.detectChanges();\n })\n );\n this._detailsSubscriptions.push(this.dynComponent.dynForm.formValueChanges.pipe(\n debounceTime(500)\n ).subscribe(valuesChangesArgs =>\n setTimeout(() => this.monitoringDetailEntryConfig.handleMonitoringRecommendation(\n this.dynComponent.dynForm,\n this._selectedField,\n valuesChangesArgs), 0)\n ));\n }\n\n /**\n * Manages the map and grid view state:\n * 1. Clears selected fields\n * 2. Ensures proper map view mode\n * 3. Adjusts zoom to show all farm fields\n * @private\n */\n private _handleHalfMapAndGridView(): void {\n this.fieldStore.changeSelectedField([]);\n if (this.mapViewStore.getMapViewMode() !== MapViewMode.NORMAL) {\n this.mapViewStore.goIntoMapMenu();\n }\n if (this.mapViewStore.getMapViewCurrentMenu() !== MapViewCurrentMenu.MAP) {\n this.mapViewStore.goIntoMapMenu();\n }\n this.fieldStore.zoomFarmFields();\n }\n\n /**\n * Closes the form with a slight delay to prevent UI issues.\n * Uses setTimeout to push closure to next event loop cycle.\n * @private\n */\n private _closeForm(): void {\n setTimeout(() => {\n this.formStore.closeForm();\n this.mapStore.Layers.GeoPointsLayer.deactivateEditMode();\n }, 1);\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {FormGroup, ValidatorFn, Validators} from '@angular/forms';\nimport {combineLatest, of, Subscription} from 'rxjs';\nimport {filter, map, skip, take} from 'rxjs/operators';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {\n ApDynformsConfigCheckbox\n} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {MAP_PROJECTION} from '../../ap-map';\nimport {ApPolygonEditLayer} from '../../ap-map/layers/ap-polygon-edit.layer';\nimport {ApGuidUtil} from '../../ap-utils';\nimport {NotifyStore} from '../../stores/dialog/notify.store';\nimport {CropRotationStore} from '../../stores/farm/crop.rotation.store';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {CampaignYearStore} from '../../stores/login/campaignyear.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {EditorService} from '../../map/components/edit/editor.service';\nimport {ApEditStyles} from '../../ap-map/layers/ap-edit-styles';\nimport {FieldFactoryService} from '../../factories/field-factory.service';\nimport {GetRoundNumericService} from '../../ap-utils/service/get-round-numeric.service';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport {GeoJSON} from 'ol/format';\nimport {MapInteraction, MapInteractions} from '../../ap-map/interactions';\nimport {ModalDialogStore} from '../../stores/dialog/modal.dialog.store';\nimport {ModalDialogPresets} from '../../stores/dialog/modal.dialog.presets';\nimport {defaultStyle} from '../../ap-map/layers/ap-fields.style';\nimport IField = Data.FieldManagement.IField;\nimport IGuid = System.IGuid;\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {CropTypeStore} from '../../stores/base-data/crop.types.store';\nimport IFieldCrop = Data.FieldManagement.IFieldCrop;\nimport {FieldArchiveStore} from '../../stores/farm/field-archive.store';\n\nexport class SplitFieldData {\n Id: IGuid;\n FieldName: string;\n FieldNumber: string;\n FieldSubnumber: string;\n TakeOverCropRotation = true;\n AreaSize = 0;\n\n MainCrop: number;\n SecondCrop: number;\n MainCropYieldUnit: number;\n SecondCropYieldUnit: number;\n RemoveResidues = false;\n Note: string;\n\n constructor(fieldName: string, fieldNumber: string, fieldSubnumber: string) {\n this.FieldName = fieldName;\n this.FieldNumber = fieldNumber;\n this.FieldSubnumber = fieldSubnumber;\n }\n}\n\n/**\n * Component for the edit field\n */\n@Component({\n selector: 'ap-split-field',\n template: `\n \n
\n \n \n
\n
\n `,\n})\nexport class ApSplitFieldComponent implements OnInit, AfterViewInit, OnDestroy {\n private static ToBigGeometryNotification: Data.Api.Validation.IApValidationResult = {\n Counter: 1,\n DisplayTimeout: 0,\n ErrorKey: 'Global__Geometry_To_Big_Validation',\n Level: Data.Api.Validation.ApValidationLevel.Error,\n Parameters: [],\n UserName: null,\n UserId: null,\n };\n private static IntegrateGeometryFailNotification: Data.Api.Validation.IApValidationResult = {\n Counter: 1,\n DisplayTimeout: 0,\n ErrorKey: 'Global__Geometry_NotIntegrated',\n Level: Data.Api.Validation.ApValidationLevel.Error,\n Parameters: [],\n UserName: null,\n UserId: null,\n };\n private static SplitLineIncorrectNotification: Data.Api.Validation.IApValidationResult = {\n Counter: 1,\n DisplayTimeout: 10,\n ErrorKey: 'Fieldeditor_Split_Incorrect',\n Level: Data.Api.Validation.ApValidationLevel.Warning,\n Parameters: [],\n UserName: null,\n UserId: null,\n };\n\n constructor(private formStore: FormStore,\n private fieldStore: FieldStore,\n private translationService: TranslationStore,\n private mapStore: MapStore,\n private cropRotationStore: CropRotationStore,\n private cropTypeStore: CropTypeStore,\n private campaignYearStore: CampaignYearStore,\n private loginStore: LoginStore,\n private notifyStore: NotifyStore,\n private fieldFactory: FieldFactoryService,\n private modalDialogStore: ModalDialogStore,\n private modalDialogPresets: ModalDialogPresets,\n private roundNumericService: GetRoundNumericService,\n private settingsStore: SettingsStore,\n private fieldArchiveStore: FieldArchiveStore) {\n }\n\n @ViewChild(ApDynformsComponent, {static: true}) public dynForm: ApDynformsComponent;\n @ViewChild('ComboBoxCropTypeItem', {static: true}) public comboBoxCropTypeItem: TemplateRef;\n public data: { OldField: SplitFieldData, FieldOne: SplitFieldData, FieldTwo: SplitFieldData };\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n public isNewMode = false;\n public fieldsSaving$ = of(false);\n public formIsInvalid$ = new EventEmitter(false);\n public sketchIsInvalid$ = EditorService.ValidSketch$.pipe(map(val => !val));\n public splitIsInvalid$ = EditorService.ValidSplitLine$.pipe(map(val => !val));\n public splitLineNotDrawn$ = EditorService.SplitLineDrawn$.pipe(map(val => !val));\n public close = new EventEmitter(true);\n public formValidators: ApDynformsValidator[] = [\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.fieldNameOrNrRequired,\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n }),\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.fieldNameOrNrRequired2,\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n }),\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.yieldRequiredIfMainCropIsSet,\n errorKey: 'Yield__required'\n }),\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.yieldRequiredIfSecondCropIsSet,\n errorKey: 'Yield__required_2'\n }),\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.yieldRequiredIfMainCropIsSet2,\n errorKey: 'Yield__required_3'\n }),\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.yieldRequiredIfSecondCropIsSet2,\n errorKey: 'Yield__required_4'\n }),\n ];\n private _subscriptions: Array = [];\n\n private static fieldNameOrNrRequired(frm: FormGroup): { mismatch: boolean } | null {\n const fieldName = frm.get('FieldOne_FieldName')?.value;\n const fieldNr = frm.get('FieldOne_FieldNumber')?.value;\n const fieldTNr = frm.get('FieldOne_FieldSubnumber')?.value;\n if (!fieldName && !fieldNr && !fieldTNr) {\n return {mismatch: true};\n }\n return null;\n }\n\n private static fieldNameOrNrRequired2(frm: FormGroup): { mismatch: boolean } | null {\n const fieldName = frm.get('FieldTwo_FieldName')?.value;\n const fieldNr = frm.get('FieldTwo_FieldNumber')?.value;\n const fieldTNr = frm.get('FieldTwo_FieldSubnumber')?.value;\n if (!fieldName && !fieldNr && !fieldTNr) {\n return {mismatch: true};\n }\n return null;\n }\n\n private static yieldRequiredIfMainCropIsSet(frm: FormGroup): { missingYield: boolean } | null {\n return ApSplitFieldComponent.internalCropValidation(frm, 'FieldOne_MainCrop');\n }\n\n private static yieldRequiredIfSecondCropIsSet(frm: FormGroup): { missingYield: boolean } | null {\n return ApSplitFieldComponent.internalCropValidation(frm, 'FieldOne_SecondCrop');\n }\n\n private static yieldRequiredIfMainCropIsSet2(frm: FormGroup): { missingYield: boolean } | null {\n return ApSplitFieldComponent.internalCropValidation(frm, 'FieldTwo_MainCrop');\n }\n\n private static yieldRequiredIfSecondCropIsSet2(frm: FormGroup): { missingYield: boolean } | null {\n return ApSplitFieldComponent.internalCropValidation(frm, 'FieldTwo_SecondCrop');\n }\n\n private static internalCropValidation(frm: FormGroup, fieldName: string): { missingYield: boolean } | null {\n const mainCrop = frm.get(fieldName)?.value;\n const mainCropYieldControl = frm.get(fieldName + 'YieldUnit');\n const mainCropYield = mainCropYieldControl?.value;\n const validationError = {missingYield: true};\n\n if (parseFloat(mainCrop) > 0 && !(parseFloat(mainCropYield) >= 0)) {\n mainCropYieldControl?.setErrors(validationError);\n return validationError;\n }\n\n return null;\n }\n\n public ngOnInit(): void {\n this.fieldsSaving$ = this.fieldStore.Listen(s => s.saving);\n\n this._subscriptions.push(EditorService.ValidSketch$\n .subscribe(integrated => {\n if (integrated) {\n this.notifyStore.removeMessage(ApSplitFieldComponent.IntegrateGeometryFailNotification);\n this.mapStore.Layers.PolygonEditViewLayer.setStyle(defaultStyle);\n } else {\n this.notifyStore.addMessage(ApSplitFieldComponent.IntegrateGeometryFailNotification);\n this.mapStore.Layers.PolygonEditViewLayer.setStyle(ApEditStyles.invalidStyle);\n }\n }));\n\n this._subscriptions.push(EditorService.ValidSplitLine$\n .subscribe(splitCorrect => {\n if (splitCorrect) {\n this.notifyStore.removeMessage(ApSplitFieldComponent.SplitLineIncorrectNotification);\n this.mapStore.Layers.PolygonEditViewLayer.setStyle(defaultStyle);\n } else {\n this.notifyStore.addMessage(ApSplitFieldComponent.SplitLineIncorrectNotification);\n this.mapStore.Layers.PolygonEditViewLayer.setStyle(ApEditStyles.invalidStyle);\n }\n }));\n\n this._subscriptions.push(this.dynForm.initialized.subscribe(() => {\n this._subscriptions.push(this.dynForm.form.valueChanges.subscribe(() => {\n this.formIsInvalid$.emit(!this.dynForm.form.valid);\n }));\n this._subscriptions.push(this.dynForm.form.get('FieldOne_MainCrop')?.valueChanges?.subscribe(_ => {\n this.onMainCropChanged('FieldOne_');\n }));\n this._subscriptions.push(this.dynForm.form.get('FieldOne_SecondCrop')?.valueChanges?.subscribe(_ => {\n this.onSecondCropChanged('FieldOne_');\n }));\n\n this._subscriptions.push(this.dynForm.form.get('FieldTwo_MainCrop')?.valueChanges?.subscribe(_ => {\n this.onMainCropChanged('FieldTwo_');\n }));\n this._subscriptions.push(this.dynForm.form.get('FieldTwo_SecondCrop')?.valueChanges?.subscribe(_ => {\n this.onSecondCropChanged('FieldTwo_');\n }));\n this._subscriptions.push(this.dynForm.form.get('FieldOne_TakeOverCropRotation')?.valueChanges?.subscribe(val => {\n if (val === true) {\n this.onTakeOverCropRotation('FieldOne_');\n }\n }));\n this._subscriptions.push(this.dynForm.form.get('FieldTwo_TakeOverCropRotation')?.valueChanges?.subscribe(val => {\n if (val === true) {\n this.onTakeOverCropRotation('FieldTwo_');\n }\n }));\n }));\n\n this._subscriptions.push(this.mapStore.Listen(s => s.splitFieldResult).subscribe(x => {\n if (x != null && x.length === 2) {\n this.dynForm?.form?.get('FieldOne_Area')?.setValue(this.calculateAreaSizeStringByValue(x[0][1]));\n this.dynForm?.form?.get('FieldTwo_Area')?.setValue(this.calculateAreaSizeStringByValue(x[1][1]));\n }\n }));\n\n this._subscriptions.push(combineLatest([\n this.campaignYearStore.Listen((s) => s.selectedYear),\n this.loginStore.Listen((s) => s.farm.selectedFarm),\n ]).pipe(\n filter(([y, f]) => !!y && !!f),\n take(1),\n )\n .subscribe(([_, _1]) => {\n this.caption = this.translationService.FindTranslationForSelectedLanguage('Global__Split');\n this.formBuilder();\n }));\n\n // Clear value each time we enter the merge form\n this.fieldStore.clearFieldPlanBooksResult();\n this._subscriptions.push(this.modalDialogStore.Listen(s => s.result).pipe(skip(1)).subscribe(c => {\n if (c.key === 'confirm') {\n this.submitLogic();\n }\n }));\n\n this._subscriptions.push(this.fieldStore.Listen(s => s.fieldPlanBooksResult).subscribe(planBooks => {\n if (planBooks != null) {\n if (planBooks === true) {\n this.modalDialogStore.setModalDialogData(this.modalDialogPresets.ExistPlanBooksDialog(\n {title: 'HdrConfirm', message: 'Global__Dialog_Message_CheckPlanBooks'}));\n } else {\n this.submitLogic();\n }\n\n this.fieldStore.clearFieldPlanBooksResult();\n }\n }));\n }\n\n public ngAfterViewInit(): void {\n setTimeout(_ => {\n this.onTakeOverCropRotation('FieldOne_');\n this.onTakeOverCropRotation('FieldTwo_');\n }, 1);\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach((d) => {\n d.unsubscribe();\n });\n }\n\n public formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'FieldOne_FieldNumber',\n label: 'Global__FieldNumber',\n value: this.numberOrZero(this.data.FieldOne.FieldNumber),\n min: 0,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 0,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n validators: [\n new ApDynformsValidator({\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n validator: Validators.required\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'FieldOne_FieldSubnumber',\n label: 'Planning_Fieldpart',\n value: this.numberOrZero(this.data.FieldOne.FieldSubnumber),\n min: 0,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 0,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n validators: [\n new ApDynformsValidator({\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n validator: Validators.required\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'FieldOne_FieldName',\n label: 'Global__FieldName',\n value: this.data.FieldOne.FieldName,\n formErrors: ['Global__Field_Name_Or_Nr_Required']\n }),\n new ApDynformsConfigCheckbox({\n key: 'FieldOne_TakeOverCropRotation',\n label: 'Global_TakeOverCropRotation',\n value: this.data.FieldOne.TakeOverCropRotation,\n }),\n new ApDynformsConfigTextbox({\n disabled: true,\n key: 'FieldOne_Area',\n label: 'Global__Area_Unit',\n validators: [\n new ApDynformsValidator({\n errorKey: 'Settings__Msg_Vali_Value_Required',\n validator: Validators.min(1),\n }),\n ],\n value: this.data.FieldOne.AreaSize,\n })\n ],\n key: 'field1',\n legend: 'Global__Field_One',\n }),\n new ApDynformsConfigFieldset({\n key: 'field1Crops',\n legend: (this.translationService.FindTranslationForSelectedLanguage('Global__Field_One') + ' ' + this.translationService.FindTranslationForSelectedLanguage('Docu_Ini__HarvestYear') + ' ' + this.campaignYearStore.getSelectedCampaignYear().Year),\n config: [\n new ApDynformsConfigComboBox({\n itemTemplate: this.comboBoxCropTypeItem,\n key: 'FieldOne_MainCrop',\n label: 'MainCrop',\n options: this._availableCropTypes(this.data.FieldOne.MainCrop),\n textField: 'Description',\n value: this.data.FieldOne.MainCrop,\n valueField: 'Id',\n valuePrimitive: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'FieldOne_MainCropYieldUnit',\n label: 'Global__YieldUnit',\n value: this.data.FieldOne.MainCropYieldUnit,\n min: 0,\n disabled: !(this.data.FieldOne.MainCrop > 0),\n disabled$: this.dynForm.formValues$.pipe(map((f: unknown) => !(f['FieldOne_MainCrop'] > 0))),\n formErrors: ['Yield__required'],\n validators: [\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.yieldRequiredIfMainCropIsSet,\n errorKey: 'Yield__required'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'FieldOne_RemoveResidues',\n label: 'Nutrients_Pages_Popups__RemoveResidues',\n value: this.data.FieldOne.RemoveResidues,\n }),\n new ApDynformsConfigTextbox({\n key: 'FieldOne_Note',\n label: 'Global__Fieldcrop_Notes',\n value: this.data.FieldOne.Note\n }),\n new ApDynformsConfigComboBox({\n itemTemplate: this.comboBoxCropTypeItem,\n key: 'FieldOne_SecondCrop',\n label: 'SecondCrop',\n options: this._availableCropTypes(this.data.FieldOne.SecondCrop),\n textField: 'Description',\n validators: [],\n value: this.data.FieldOne.SecondCrop,\n valueField: 'Id',\n valuePrimitive: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'FieldOne_SecondCropYieldUnit',\n label: 'Global__Yield_Removal_Unit',\n value: this.data.FieldOne.SecondCropYieldUnit,\n min: 0,\n disabled: !(this.data.FieldOne.SecondCrop > 0),\n disabled$: this.dynForm.formValues$.pipe(map((f: unknown) => !(f['FieldOne_SecondCrop'] > 0))),\n formErrors: ['Yield__required_2'],\n validators: [\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.yieldRequiredIfSecondCropIsSet,\n errorKey: 'Yield__required_2'\n })\n ]\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'FieldTwo_FieldNumber',\n label: 'Global__FieldNumber',\n value: this.numberOrZero(this.data.FieldTwo.FieldNumber),\n min: 0,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 0,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n validators: [\n new ApDynformsValidator({\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n validator: Validators.required\n })\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'FieldTwo_FieldSubnumber',\n label: 'Planning_Fieldpart',\n value: this.numberOrZero(this.data.FieldTwo.FieldSubnumber),\n min: 0,\n decimals: 0,\n format: 'n0',\n maximumFractionDigits: 0,\n formErrors: ['Global__Field_Name_Or_Nr_Required'],\n validators: [\n new ApDynformsValidator({\n errorKey: 'Global__Field_Name_Or_Nr_Required',\n validator: Validators.required\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'FieldTwo_FieldName',\n label: 'Global__FieldName',\n value: this.data.FieldTwo.FieldName,\n formErrors: ['Global__Field_Name_Or_Nr_Required']\n }),\n new ApDynformsConfigCheckbox({\n key: 'FieldTwo_TakeOverCropRotation',\n label: 'Global_TakeOverCropRotation',\n value: this.data.FieldTwo.TakeOverCropRotation,\n }),\n new ApDynformsConfigTextbox({\n disabled: true,\n key: 'FieldTwo_Area',\n label: 'Global__Area_Unit',\n validators: [\n new ApDynformsValidator({\n errorKey: 'Settings__Msg_Vali_Value_Required',\n validator: Validators.min(1),\n }),\n ],\n value: this.data.FieldTwo.AreaSize,\n }),\n ],\n key: 'field2',\n legend: 'Global__Field_Two',\n }),\n new ApDynformsConfigFieldset({\n key: 'field2Crops',\n legend: (this.translationService.FindTranslationForSelectedLanguage('Global__Field_Two') + ' ' + this.translationService.FindTranslationForSelectedLanguage('Docu_Ini__HarvestYear') + ' ' + this.campaignYearStore.getSelectedCampaignYear().Year),\n config: [\n new ApDynformsConfigComboBox({\n itemTemplate: this.comboBoxCropTypeItem,\n key: 'FieldTwo_MainCrop',\n label: 'MainCrop',\n options: this._availableCropTypes(this.data.FieldTwo.MainCrop),\n textField: 'Description',\n value: this.data.FieldTwo.MainCrop,\n valueField: 'Id',\n valuePrimitive: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'FieldTwo_MainCropYieldUnit',\n label: 'Global__YieldUnit',\n value: this.data.FieldTwo.MainCropYieldUnit,\n min: 0,\n disabled: !(this.data.FieldTwo.MainCrop > 0),\n disabled$: this.dynForm.formValues$.pipe(map((f: unknown) => !(f['FieldTwo_MainCrop'] > 0))),\n formErrors: ['Yield__required_3'],\n validators: [\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.yieldRequiredIfMainCropIsSet2,\n errorKey: 'Yield__required'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'FieldTwo_RemoveResidues',\n label: 'Nutrients_Pages_Popups__RemoveResidues',\n value: this.data.FieldTwo.RemoveResidues,\n }),\n new ApDynformsConfigTextbox({\n key: 'FieldTwo_Note',\n label: 'Global__Fieldcrop_Notes',\n value: this.data.FieldTwo.Note\n }),\n new ApDynformsConfigComboBox({\n itemTemplate: this.comboBoxCropTypeItem,\n key: 'FieldTwo_SecondCrop',\n label: 'SecondCrop',\n options: this._availableCropTypes(this.data.FieldTwo.SecondCrop),\n textField: 'Description',\n validators: [],\n value: this.data.FieldTwo.SecondCrop,\n valueField: 'Id',\n valuePrimitive: true\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'FieldTwo_SecondCropYieldUnit',\n label: 'Global__Yield_Removal_Unit',\n value: this.data.FieldTwo.SecondCropYieldUnit,\n min: 0,\n disabled: !(this.data.FieldTwo.SecondCrop > 0),\n disabled$: this.dynForm.formValues$.pipe(map((f: unknown) => !(f['FieldTwo_SecondCrop'] > 0))),\n formErrors: ['Yield__required_4'],\n validators: [\n new ApDynformsValidator({\n validator: ApSplitFieldComponent.yieldRequiredIfSecondCropIsSet2,\n errorKey: 'Yield__required_2'\n })\n ]\n })\n ]\n }),\n ];\n }\n\n private mapFormValues(target: IField, fieldPrefix: string, featureIndex: number): IField {\n target.Id = ApGuidUtil.generateNewGuid();\n target.FieldName = this.dynForm.form.get(fieldPrefix + 'FieldName').value;\n target.FieldNumber = this.dynForm.form.get(fieldPrefix + 'FieldNumber').value;\n target.FieldSubnumber = this.dynForm.form.get(fieldPrefix + 'FieldSubnumber').value;\n target.FarmId = this.loginStore.SelectedFarmId;\n target.ValidFrom = this.campaignYearStore.getSelectedCampaignYear().DefaultStart;\n\n const format = new GeoJSON({\n dataProjection: ApPolygonEditLayer.projection,\n featureProjection: MAP_PROJECTION,\n });\n target.DefaultGeom.Geom = format.writeGeometry(this.mapStore.Layers.PolygonEditViewLayer.Features[featureIndex].getGeometry()) as any;\n target.DefaultGeom.FarmId = this.loginStore.SelectedFarmId;\n target.DefaultGeom.FieldId = target.Id;\n target.DefaultGeom.ValidFrom = target.ValidFrom;\n target.FieldGeoms.Clear();\n target.FieldGeoms.Add(target.DefaultGeom);\n\n const mainCropId = this.dynForm.form.get(fieldPrefix + 'MainCrop').value;\n const secondCropId = this.dynForm.form.get(fieldPrefix + 'SecondCrop').value;\n if (mainCropId > 0) {\n const cropType = this._availableCropTypes(mainCropId).Find((ct) => ct?.Id === mainCropId);\n const cropTypeSecond = this._availableCropTypes(secondCropId).Find((ct) => ct?.Id === secondCropId);\n\n target.FieldCrops[0] = ({\n Cropkey: cropType ? cropType.CropKey : null,\n CroptypeId: mainCropId,\n CroptypeSecondId: secondCropId,\n MainSecondCropType: cropTypeSecond ? cropTypeSecond.CropKey : null,\n ExpectedYield: cropType ? this.dynForm.form.get(fieldPrefix + 'MainCropYieldUnit').value : null,\n ExpectedYieldSecond: cropTypeSecond ? this.dynForm.form.get(fieldPrefix + 'SecondCropYieldUnit').value : null,\n StrawHarvested: this.dynForm.form.get(fieldPrefix + 'RemoveResidues').value,\n Note: this.dynForm.form.get(fieldPrefix + 'Note').value\n } as IFieldCrop);\n }\n\n return target;\n }\n\n public onSubmitClick(): void {\n this.fieldStore.checkFieldsPlanBook([this.data.OldField.Id]);\n }\n\n private submitLogic(): void {\n this.loginStore.setLongOperationStatus(true);\n try {\n const newFieldOne: IField = this.mapFormValues(this.fieldFactory.CreateNew(), 'FieldOne_', 0);\n const newFieldTwo: IField = this.mapFormValues(this.fieldFactory.CreateNew(), 'FieldTwo_', 1);\n const cropRotationTransfer = [this.dynForm.form.get('FieldOne_TakeOverCropRotation').value, this.dynForm.form.get('FieldTwo_TakeOverCropRotation').value];\n\n MapInteraction.Remove(MapInteractions.MODIFY);\n this.fieldStore.splitFields(this.data.OldField.Id, [newFieldOne, newFieldTwo], cropRotationTransfer);\n\n this._subscriptions.Add(this.fieldStore.Listen(s => s.splitSuccess).subscribe(result => {\n if (result) {\n setTimeout(() => this.onCancelClick(), 0);\n this.loginStore.setLongOperationStatus(false);\n this.fieldStore.loadFields(this.loginStore.CampaignYearStore.getSelectedCampaignYear().DefaultStart);\n this.cropRotationStore.LoadFieldCropRotation();\n this.cropRotationStore.LoadFieldCropRotationPast();\n this.fieldArchiveStore.loadFieldArchive(this.loginStore.CampaignYearStore.getSelectedCampaignYear().DefaultStart);\n }\n }));\n\n this._subscriptions.Add(this.fieldStore.Listen(s => s.splitFailed).subscribe(result => {\n if (result) {\n setTimeout(() => this.onCancelClick(), 0);\n this.loginStore.setLongOperationStatus(false);\n this.fieldStore.loadFields(this.loginStore.CampaignYearStore.getSelectedCampaignYear().DefaultStart);\n this.fieldArchiveStore.loadFieldArchive(this.loginStore.CampaignYearStore.getSelectedCampaignYear().DefaultStart);\n }\n }));\n } catch (e) {\n console.warn(e);\n this.loginStore.setLongOperationStatus(false);\n }\n }\n\n public onCancelClick(): void {\n this.mapStore.Editor.CloseEditor(this.fieldStore);\n this.formStore.closeForm();\n }\n\n private calculateAreaSizeStringByValue(value: number): string {\n return this.roundNumericService.round(value, this.settingsStore.FirstSetting.DigitsAfterDecimalPoint);\n }\n\n private _availableCropTypes =\n (id?: number) => this.cropTypeStore.Listen((s) => s.data).getValue().filter((c) => c.Selected || c.Id === id)\n\n private numberOrZero(value: string): number {\n return isNaN(+value) ? 0 : +value;\n }\n\n private onMainCropChanged(fieldNamePrefix: string): void {\n const selectedCropId = this.dynForm?.form?.get(fieldNamePrefix + 'MainCrop')?.value;\n const yieldDefault = selectedCropId ? this.cropTypeStore.CropTypes.Find(c => c.Id === selectedCropId)?.ExpectedYield : undefined;\n this.dynForm?.form?.get(fieldNamePrefix + 'MainCropYieldUnit')?.setValue(yieldDefault);\n }\n\n private onSecondCropChanged(fieldNamePrefix: string): void {\n const selectedCropId = this.dynForm?.form?.get(fieldNamePrefix + 'SecondCrop')?.value;\n const yieldDefault = selectedCropId && this.cropTypeStore.CropTypes.Find(c => c.Id === selectedCropId) ? 0 : undefined;\n this.dynForm?.form?.get(fieldNamePrefix + 'SecondCropYieldUnit')?.setValue(yieldDefault);\n }\n\n private onTakeOverCropRotation(fieldNamePrefix: string): void {\n this.dynForm?.form?.get(fieldNamePrefix + 'MainCrop')?.setValue(this.data.OldField.MainCrop);\n this.dynForm?.form?.get(fieldNamePrefix + 'MainCropYieldUnit')?.setValue(this.data.OldField.MainCropYieldUnit);\n this.dynForm?.form?.get(fieldNamePrefix + 'SecondCrop')?.setValue(this.data.OldField.SecondCrop);\n this.dynForm?.form?.get(fieldNamePrefix + 'SecondCropYieldUnit')?.setValue(this.data.OldField.SecondCropYieldUnit);\n this.dynForm?.form?.get(fieldNamePrefix + 'RemoveResidues')?.setValue(this.data.OldField.RemoveResidues);\n this.dynForm?.form?.get(fieldNamePrefix + 'Note')?.setValue(this.data.OldField.Note);\n }\n}\n","import {OperationModesEnum} from '../../../stores/common/operation-modes.store';\nimport {Injectable} from '@angular/core';\nimport {CropTypeStore} from '../../../stores/base-data/crop.types.store';\nimport {BestScanData} from '../../../types/scan.types';\n\n@Injectable()\nexport class NFertilizationCommonEntryService {\n constructor(private cropTypeStore: CropTypeStore) {\n }\n\n public isApplicationMapOrAbsolute(operationModeKey: OperationModesEnum): boolean {\n if (!operationModeKey) {\n return false;\n }\n return operationModeKey === OperationModesEnum.ApplicationMapAbsolute\n || operationModeKey === OperationModesEnum.ApplicationMap;\n }\n\n public nUptake(operationModeKey: OperationModesEnum, bestScanData: BestScanData): number | undefined {\n switch (operationModeKey) {\n case OperationModesEnum.ApplicationMap:\n return bestScanData.NUptakeAvg;\n case OperationModesEnum.ApplicationMapAbsolute:\n return 0;\n default:\n return undefined;\n }\n }\n\n public getThreshold(growStage: number | undefined, cropKey: number | undefined): number | undefined {\n if (!Number.isFinite(growStage) || !Number.isFinite(cropKey)) {\n return undefined;\n }\n const platformSpecificCrop = this.cropTypeStore.CropTypes.find((ct) => ct.CropKey === cropKey && ct.FarmId === -1);\n if (!platformSpecificCrop) {\n return undefined;\n }\n const thresholds = JSON.parse(platformSpecificCrop.Thresholds);\n const keys = Object.keys(thresholds);\n if (keys.length <= 0) {\n return undefined;\n }\n if (keys.length === 1) {\n return thresholds[keys[0]];\n }\n const firstKey = keys[0];\n const lastKey = keys[keys.length - 1];\n if (+firstKey > growStage) {\n return thresholds[firstKey];\n }\n if (+lastKey < growStage) {\n return thresholds[lastKey];\n }\n return thresholds[growStage.toString()];\n }\n}\n","import {AfterContentInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {ObjectFactory} from 'ts-tooling';\nimport {filter, map, skip} from 'rxjs/operators';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPagerWizardButton,\n ApDynGridPagerWizardConfig,\n ApDynGridPagerWizardSection\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {\n ApDynGridEditColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-edit-column-config';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {\n SettingsStore\n} from '../../stores/base-data/settings.store';\nimport {\n FieldStore\n} from '../../stores/farm/field.store';\nimport {\n ApTranslationService\n} from '../../ap-utils/service/ap-translation.service';\nimport {\n FormStore\n} from '../../stores/layout/form.store';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {\n ApUtilService\n} from '../../ap-utils/service/ap-util.service';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigDatepicker\n} from '../../ap-dynforms/config/ap-dynforms-config-datepicker';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {\n IModalDialogData,\n ModalDialogButtonDisable\n} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {\n FertilizerStore\n} from '../../stores/base-data/fertilizer.store';\nimport {\n ModalDialogStore\n} from '../../stores/dialog/modal.dialog.store';\nimport {\n BasicFertilisationSummariesStore\n} from '../../stores/taskmanagement/basic.fertilisation.summaries.store';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n DriverStore\n} from '../../stores/docu/driver.store';\nimport {\n InstrumentStore\n} from '../../stores/docu/instrument.store';\nimport {\n MachineStore\n} from '../../stores/docu/machine.store';\nimport {\n ApDynformsConfigTimepicker\n} from '../../ap-dynforms/config/ap-dynforms-config-timepicker';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n LoginStore\n} from '../../stores/login/login.store';\nimport {ApTimeSpanUtil, GetRoundNumericPipe} from '../../ap-utils';\nimport {\n NutrientManagementService\n} from '../../nutrient-management/service/nutrient-management.service';\nimport {\n JobsStore\n} from '../../stores/administration/jobs.store';\nimport {\n ApOperationMode\n} from '../../ap-interface/enums/ap-operation-mode.enum';\nimport {\n ApNutrientService\n} from '../../ap-utils/service/ap-nutrient.service';\nimport {\n ApDateService\n} from '../../ap-core/services/ap-date-service';\nimport {\n ColumnUnits,\n IApNutrientBookingComponentData,\n INutrientBookingGridData\n} from './ap-nutrient-booking-configs/nutrient-booking-types';\nimport {\n FertilizerService\n} from '../../services/data/fertilizer.service';\nimport {\n CampaignYearService\n} from '../../services/data/campaign-year.service';\nimport {\n FieldArchiveStore\n} from '../../stores/farm/field-archive.store';\nimport TaskManagementStatus = Data.TaskManagement.TaskManagementStatus;\nimport IBasicFertilisationPlanBooks = Data.TaskManagement.IBasicFertilisationPlanBooks;\n\n@Component({\n selector: 'ap-nutrients-booking',\n template: `\n \n \n `,\n styles: []\n})\nexport class ApNutrientBookingComponent implements OnInit, AfterContentInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true}) public dynComponent: ApDynComponentComponent;\n public items$ = new BehaviorSubject([]);\n public columns$: Observable = of([]);\n public pager: ApDynGridPagerWizardConfig;\n public caption: string;\n\n private _columnUnits = new BehaviorSubject({AverageUnitKey: '-', SumUnitKey: '-'});\n private _componentData: IApNutrientBookingComponentData;\n private _subscriptions: Subscription[] = [];\n\n constructor(private campaignYearStore: CampaignYearStore,\n private fieldStore: FieldStore,\n private formStore: FormStore,\n private languageStore: LanguageStore,\n private settingsStore: SettingsStore,\n private fertilizerStore: FertilizerStore,\n private modalDialogStore: ModalDialogStore,\n private basicFertilisationSummariesStore: BasicFertilisationSummariesStore,\n private driverStore: DriverStore,\n private dateService: ApDateService,\n private machineStore: MachineStore,\n private instrumentStore: InstrumentStore,\n private loginStore: LoginStore,\n private jobsStore: JobsStore,\n private translationService: ApTranslationService,\n private nutrientManagementService: NutrientManagementService,\n private nutrientService: ApNutrientService,\n private fertilizerService: FertilizerService,\n private campaignYearService: CampaignYearService,\n private fieldArchiveStore: FieldArchiveStore,\n private roundNumericPipe: GetRoundNumericPipe) {\n }\n\n public ngOnInit(): void {\n this._componentData = this.formStore.Listen(s => s.updateComponent).getValue().data;\n this.caption = this._componentData.IsBooked ? 'Global__Reset' : 'Global__Booking';\n this.columns$ = this._getColumns();\n this.pager = this._getPager();\n this._setItems();\n }\n\n public ngAfterContentInit(): void {\n this._subscriptions.push(\n this.dynComponent.SelectedItems$.subscribe((d: any[]) => this._onSelectionGridChange(d))\n );\n this._subscriptions.push(this.items$.subscribe((items: INutrientBookingGridData[]) => {\n const filedIdToSelect = this._componentData?.FieldIdToSelect;\n const itemsToSelect = items.filter(x => filedIdToSelect ? x?.Field?.Id === filedIdToSelect : true)\n .map(item => item.Id);\n setTimeout(() => this.dynComponent.dynGrid.gridPaging.setSelectedKeys(itemsToSelect));\n }));\n }\n\n public ngOnDestroy(): void {\n this.fieldStore.changeSelectedField([]);\n this._subscriptions?.forEach(x => x.unsubscribe());\n }\n\n public onEdit(dataItem: INutrientBookingGridData): void {\n const dialog = {\n title: this.translationService.translate('Global__Edit'),\n show: true,\n buttons: [\n {\n key: 'cancel',\n text: 'Global__Cancel',\n primary: false\n },\n {\n key: 'apply',\n text: 'Global__Ok',\n primary: true,\n disable: ModalDialogButtonDisable.FormInvalid,\n }\n ],\n formConfig: {\n fieldSets: this._getModalFieldSets(dataItem),\n validators: undefined,\n asyncValidators: undefined\n }\n } as IModalDialogData;\n const resultSubscription = this.modalDialogStore.Listen(s => s.result)\n .pipe(skip(1))\n .subscribe((result) => {\n if (result?.key === 'apply') {\n this._updateOverviewItems({ids: [dataItem['Id']], value: ObjectFactory.Copy(result.formValues)});\n resultSubscription.unsubscribe();\n } else if (result?.key === 'cancel') {\n resultSubscription.unsubscribe();\n }\n });\n this.modalDialogStore.setModalDialogData(dialog);\n }\n\n private _getColumns(): Observable {\n return combineLatest([\n this.languageStore.Listen(s => s.selectedLanguage),\n this.settingsStore.Listen(s => s.data),\n this._columnUnits\n ]).pipe(\n filter(([language, settings, _]) => !!language && settings.length !== 0),\n map(([language, settings, columnUnits]) => ({language, setting: settings[0], columnUnits})),\n map((p) => [\n new ApDynGridStatusColumnConfig({\n field: 'Status',\n class: 'StatusClass',\n description: 'StatusDesc',\n filterable: true,\n pending: this.jobsStore.BlockedFieldIdsBuWsvCeIrRbFieldRaster$,\n pendingTooltip: this.jobsStore.BlockedFieldIdsBuWsvCeIrRbFieldRasterTooltip$,\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Number',\n field: 'Field.FieldNumber',\n width: 60,\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini_Subnumber',\n field: 'Field.FieldSubnumber',\n width: 60,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Field.FieldName',\n title: 'Docu_Ini__Field',\n headerFilterable: true,\n width: 180,\n filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Area_Unit',\n field: 'Area',\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n headerFilterable: true,\n width: 60,\n tooltip: (dataItem) => dataItem['Area'],\n hide: true,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.setting.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridGroupColumnConfig({\n title: 'Global__Product',\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n field: 'Product',\n title: 'Global__Product',\n width: 60\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Amount',\n title: `${this.translationService.translate('Global__Average')} [${this.translationService.translate(p.columnUnits.AverageUnitKey)}]`,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n width: 60,\n hide: true,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Sum',\n title: `${this.translationService.translate('Global__Sum')} [${this.translationService.translate(p.columnUnits.SumUnitKey)}]`,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n width: 60,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n ]\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'ApplicationDate',\n title: 'Global_Application_Date',\n width: 80,\n filterable: true,\n format: this.languageStore.Listen(s => s.selectedLanguage).getValue().DateFormat,\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Duration',\n field: 'Duration',\n width: 60,\n format: 'HH:mm',\n hide: true\n }),\n new ApDynGridGroupColumnConfig({\n title: 'agrioptions_resources',\n hide: true,\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n field: 'Machine.NameWithSign',\n title: 'Base__Engine',\n width: 100,\n hide: true,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Instrument.Name',\n title: 'AgriConnect_Ini__Tool',\n width: 100,\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Driver.ShortFullName',\n title: 'Docu_Ini__Motorist',\n width: 100,\n hide: true\n }),\n ]\n }),\n new ApDynGridEditColumnConfig({})\n ]),\n );\n }\n\n private _getPager(): ApDynGridPagerWizardConfig {\n const nextTitle = this._componentData.IsBooked ? 'Global__Reset' : 'Admin_Pages_Popups__Book';\n return new ApDynGridPagerWizardConfig(\n new ApDynGridPagerWizardButton('Global__Cancel', ApUtilService.createEventEmitter(this._formClose.bind(this), this._subscriptions)),\n new ApDynGridPagerWizardSection(),\n new ApDynGridPagerWizardButton(nextTitle, ApUtilService.createEventEmitter(this._booking.bind(this), this._subscriptions),\n {active: this.dynComponent.SelectedItems$.pipe(map((items) => items.length !== 0))}),\n {\n formConfig: {\n showMassEdit: false,\n onSubmit: ApUtilService.createEventEmitter(this._updateOverviewItems.bind(this), this._subscriptions),\n config: this._getPagerFieldSets()\n }\n }\n );\n }\n\n private _setItems(): void {\n let planBooks = this._componentData?.Summary?.BasicFertilisationPlanBooks?.filter(x => !x.DeletedAt) ?? [];\n if (this._componentData.IsBooked) {\n planBooks = planBooks.filter(x => x.BookedAt);\n } else {\n planBooks = planBooks.filter(x => !x.BookedAt);\n }\n const items: INutrientBookingGridData[] = planBooks.map(planBook => {\n const field = this.fieldStore.getFieldById(planBook.FieldId) ?? this.fieldArchiveStore.getFieldArchiveById(planBook.FieldId);\n // Workaround for summaries/planbooks with the wrong element (might be due to migration from 4.8)\n const element = planBook.Operation_Mode?.Id === ApOperationMode.Const ?\n this.nutrientManagementService.getFertilizerLeadingElement(planBook.Product_Id) :\n planBook.Element?.Id;\n const amountGood = this.nutrientService.convertNutrientToGoods(planBook.Product_Id, element, planBook.Appl_Rate);\n const driver = this.driverStore.getDriverById(planBook.ExportDriver);\n const machine = this.machineStore.getMachineById(planBook.ExportMachine);\n const instrument = this.instrumentStore.getInstrumentById(planBook.ExportInstrument);\n const fertilizer = this.fertilizerStore.getFertilizer(planBook.Product_Id);\n const area = this._getAreaHa(planBook);\n return {\n Id: planBook.Id,\n Status: planBook.Status,\n StatusClass: planBook.Status === TaskManagementStatus.Red ? 'ap-status-red' :\n planBook.Status === TaskManagementStatus.Yellow ? 'ap-status-yellow' : 'ap-status-green',\n StatusDesc: planBook.Status === TaskManagementStatus.Red ? '' :\n planBook.Status === TaskManagementStatus.Yellow ? '' : '',\n Field: field,\n Area: area,\n Product: this.fertilizerService.getFertilizerProductName(fertilizer),\n Amount: amountGood,\n Sum: amountGood * (area > 0 ? area : 1),\n ApplicationDate: this.dateService.toFarmDate(planBook.ApplicationDate).toDate(),\n Export: !!planBook.ExportedBy,\n Duration: this.dateService.getDateWithTimeFromMilliseconds(planBook.TEnd?.TotalMilliseconds ?? 0),\n Driver: driver,\n Machine: machine,\n Instrument: instrument,\n SourceItem: planBook\n } as INutrientBookingGridData;\n });\n this._applyDataForColumns(planBooks[0]);\n this.fieldStore.changeSelectedField(items.map(x => x.Field?.Id?.toString()));\n this.items$.next(items);\n }\n\n private _applyDataForColumns(item: IBasicFertilisationPlanBooks | undefined): void {\n const fertilizer = this.fertilizerStore.getFertilizer(item?.Product_Id);\n const columnUnits: ColumnUnits = {\n SumUnitKey: this.fertilizerService.getFertilizerUnit(fertilizer) ?? '-',\n AverageUnitKey: this.fertilizerService.getFertilizerUnit(fertilizer, true) ?? '-'\n };\n this._columnUnits.next(columnUnits);\n }\n\n private _booking(): void {\n const selectedItems = this.dynComponent.getSelectedItems() as INutrientBookingGridData[];\n if (!selectedItems || selectedItems.length <= 0) {\n return;\n }\n const planBooksForUpdate = selectedItems.map(selectedItem => {\n const copiedSourceItem = ObjectFactory.Copy(selectedItem.SourceItem);\n if (this._componentData.IsBooked) {\n copiedSourceItem.BookedAt = null;\n copiedSourceItem.BookedBy = null;\n } else {\n copiedSourceItem.BookedAt = new Date();\n copiedSourceItem.BookedBy = this.loginStore.UserId;\n }\n copiedSourceItem.TStart = ApTimeSpanUtil.getEmptyTimeSpan();\n copiedSourceItem.TEnd = ApTimeSpanUtil.getTimeSpanFromDate(selectedItem.Duration, true);\n copiedSourceItem.ApplicationDate = this.dateService.getDateNoon(selectedItem.ApplicationDate);\n copiedSourceItem.ExportDriver = selectedItem.Driver?.Id;\n copiedSourceItem.ExportMachine = selectedItem.Machine?.Id;\n copiedSourceItem.ExportInstrument = selectedItem.Instrument?.Id;\n return copiedSourceItem;\n });\n const planBooksForUpdateFiltered = planBooksForUpdate.filter(x => !!x);\n this.basicFertilisationSummariesStore.updateBasicFertilisationPlanBooks(planBooksForUpdateFiltered, true, true);\n this._formClose();\n }\n\n private _updateOverviewItems(submitData: { ids: any[], value: any }): void {\n this.items$.next(this.items$.getValue().map((planBook: INutrientBookingGridData) => {\n if (submitData.ids.includes(planBook.Id)) {\n if (!!submitData.value.ApplicationDate) {\n planBook.ApplicationDate = new Date(submitData.value.ApplicationDate);\n }\n if (!!submitData.value.Duration) {\n planBook.Duration = submitData.value.Duration;\n }\n if (!!submitData.value.Driver) {\n planBook.Driver = submitData.value.Driver;\n }\n if (!!submitData.value.Instrument) {\n planBook.Instrument = submitData.value.Instrument;\n }\n if (!!submitData.value.Machine) {\n planBook.Machine = submitData.value.Machine;\n }\n }\n return planBook;\n }));\n }\n\n private _onSelectionGridChange(currentSelected: INutrientBookingGridData[]): void {\n if (!currentSelected || currentSelected.length === 0) {\n this.fieldStore.changeSelectedField([]);\n return;\n }\n this.fieldStore.changeSelectedField(currentSelected.filter(x => x.Field?.Id).map(x => x.Field.Id.toString()));\n }\n\n private _getAreaHa(planBook: IBasicFertilisationPlanBooks): number {\n if (!planBook) {\n return 0;\n }\n if (planBook.Area > 0) {\n return planBook.Area / 10000;\n }\n const fieldGeom = this.fieldStore.getFieldGeomById(planBook.Field_Geom_Id);\n return fieldGeom?.AreaHa ?? 0;\n }\n\n private _formClose(): void {\n this.formStore.closeForm();\n }\n\n private _getPagerFieldSets(): ApDynformsConfigFieldset[] {\n const selectedCampaignYear = this.campaignYearStore.getSelectedCampaignYear().Year;\n const campaignYearRange = this.campaignYearService.getCampaignYearRange(selectedCampaignYear);\n return [\n new ApDynformsConfigFieldset({\n legend: 'Docu_Ini__Time',\n key: 'Time',\n useMaxWidth: true,\n config: [\n new ApDynformsConfigDatepicker({\n key: 'ApplicationDate',\n label: 'Global_Application_Date',\n minDate: campaignYearRange.StartYear,\n maxDate: campaignYearRange.EndYear,\n }),\n new ApDynformsConfigTimepicker({\n key: 'Duration',\n label: 'Docu_Ini__Duration',\n format: 'HH:mm',\n minSteps: 5,\n secSteps: 60\n })\n ],\n }),\n new ApDynformsConfigFieldset({\n legend: 'agrioptions_resources',\n key: 'Resources',\n useMaxWidth: true,\n config: [\n new ApDynformsConfigComboBox({\n key: 'Machine',\n label: 'Base__Engine',\n options: this.machineStore.Listen(_ => _.data),\n textField: 'NameWithSign',\n valueField: 'Id',\n valuePrimitive: false,\n value: null,\n sort: 1\n }),\n new ApDynformsConfigComboBox({\n key: 'Instrument',\n label: 'Docu_Ini__Tool',\n options: this.instrumentStore.Listen(s => s.data),\n textField: 'Name',\n valueField: 'Id',\n valuePrimitive: false,\n value: null,\n sort: 1\n }),\n new ApDynformsConfigComboBox({\n key: 'Driver',\n label: 'Docu_Ini__Motorist',\n options: this.driverStore.Listen(_ => _.data),\n textField: 'ShortFullName',\n valueField: 'Id',\n valuePrimitive: false,\n value: null,\n sort: 1\n }),\n new ApDynformsConfigPlaceholder()\n ],\n })\n ];\n }\n\n private _getModalFieldSets(dataItem: INutrientBookingGridData): ApDynformsConfigFieldset[] {\n const selectedCampaignYear = this.campaignYearStore.getSelectedCampaignYear().Year;\n const campaignYearRange = this.campaignYearService.getCampaignYearRange(selectedCampaignYear);\n return [\n new ApDynformsConfigFieldset({\n legend: 'Docu_Ini__Time',\n key: 'EditTime',\n useMaxWidth: true,\n config: [\n new ApDynformsConfigDatepicker({\n key: 'ApplicationDate',\n label: 'Global_Application_Date',\n value: dataItem.ApplicationDate,\n minDate: campaignYearRange.StartYear,\n maxDate: campaignYearRange.EndYear\n }),\n new ApDynformsConfigTimepicker({\n key: 'Duration',\n label: 'Docu_Ini__Duration',\n format: 'HH:mm',\n value: dataItem.Duration,\n minSteps: 5,\n secSteps: 60\n })\n ],\n }),\n new ApDynformsConfigFieldset({\n legend: 'agrioptions_resources',\n key: 'EditResources',\n useMaxWidth: true,\n config: [\n new ApDynformsConfigComboBox({\n key: 'Machine',\n label: 'Base__Engine',\n textField: 'NameWithSign',\n valueField: 'Id',\n valuePrimitive: false,\n value: dataItem.Machine,\n options: this.machineStore.Listen(_ => _.data),\n sort: 1\n }),\n new ApDynformsConfigComboBox({\n key: 'Instrument',\n label: 'Docu_Ini__Tool',\n textField: 'Name',\n valueField: 'Id',\n valuePrimitive: false,\n value: dataItem.Instrument,\n value$: this.modalDialogStore.listenChanges().pipe(\n filter(values => values['Machine'] || values['Instrument']),\n map(values => {\n if (values['Instrument']) {\n return values['Instrument'];\n }\n const formValues = this.modalDialogStore.getFormValues();\n if (formValues['Instrument']) {\n return formValues['Instrument'];\n }\n if (values['Machine'].DefaultInstrument) {\n return values['Machine'].DefaultInstrument;\n }\n return null;\n })\n ),\n options: this.instrumentStore.Listen(s => s.data),\n sort: 1\n }),\n new ApDynformsConfigComboBox({\n key: 'Driver',\n label: 'Docu_Ini__Motorist',\n textField: 'ShortFullName',\n valueField: 'Id',\n valuePrimitive: false,\n value: dataItem.Driver,\n value$: this.modalDialogStore.listenChanges().pipe(\n filter(values => values['Machine'] || values['Driver']),\n map(values => {\n if (values['Driver']) {\n return values['Driver'];\n }\n const formValues = this.modalDialogStore.getFormValues();\n if (formValues['Driver']) {\n return formValues['Driver'];\n }\n if (values['Machine'].DefaultDriver) {\n return values['Machine'].DefaultDriver;\n }\n return null;\n })\n ),\n options: this.driverStore.Listen(_ => _.data),\n sort: 1\n }),\n new ApDynformsConfigPlaceholder()\n ],\n })\n ];\n }\n}\n","import {Injectable} from '@angular/core';\nimport {INutrientPlanningEntryStepsConfig, PlanningEntryComponentData} from './nutrient-planning-types';\nimport {\n ApDynComponentComponent\n} from 'src/app/ap-dyncomponent/ap-dyncomponent.component';\nimport {\n NPlanningEntryComponentData\n} from '../../ap-n-fertilization-entry-components/types/n-fertilization-planning-entry.types';\nimport IField = Data.FieldManagement.IField;\n\n@Injectable()\nexport class BasePlanningEntryService implements INutrientPlanningEntryStepsConfig {\n protected _isSaved: boolean | undefined;\n protected _isNewMode: boolean | undefined;\n protected _shouldDeselectFieldsOnClose: boolean | undefined;\n protected _selectedFields: IField[] = [];\n protected _componentData: PlanningEntryComponentData | NPlanningEntryComponentData;\n\n public initData(): void {\n this._shouldDeselectFieldsOnClose = false;\n this._isNewMode = false;\n this._isSaved = false;\n }\n\n public get getSelectedFields(): IField[] {\n return this._selectedFields;\n }\n\n public setComponentData(data: PlanningEntryComponentData | NPlanningEntryComponentData): void {\n this._componentData = data;\n }\n\n public setSubscriptions(dynComponent: ApDynComponentComponent): void {\n }\n\n public clearData(): void {\n }\n}\n","import {ApElementType} from '../../../ap-interface/enums/ap-elements-type.enum';\nimport {ApDynComponentComponent} from '../../../ap-dyncomponent/ap-dyncomponent.component';\nimport {ApOperationMode} from '../../../ap-interface/enums/ap-operation-mode.enum';\nimport {ApApplicationMode} from '../../../ap-interface/enums/ap-application-mode.enums';\nimport IGuid = System.IGuid;\nimport IRbStatistic = Data.Nutrients.IRbStatistic;\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IBasicFertilisationSummaries = Data.TaskManagement.IBasicFertilisationSummaries;\n\nexport enum PlanningEntryComponentDataType {\n Create,\n Edit\n}\n\nexport type PlanningEntryComponentData = {\n Type: PlanningEntryComponentDataType;\n Summary: IBasicFertilisationSummaries | null | undefined;\n};\n\nexport type Limits = {\n Min: number,\n Max: number\n};\n\nexport type CalculationValuesInput = {\n UnitId: number,\n ElementId: number,\n ProductId: number,\n Amount: number;\n ApplConst: number | null;\n ApplMax: number | null;\n ApplMin: number | null;\n};\n\nexport type CalculationValuesOutput = {\n UnitId: number,\n ApplRate: number,\n ApplConst: number,\n ApplMax: number,\n ApplMin: number,\n HasApplMax: boolean,\n HasApplMin: boolean,\n};\n\nexport type EditPlanningDataFormType = {\n NutrientAmount: number | null;\n GoodsAmount: number | null;\n PercentAmount: number | null;\n ApplMax: number | null;\n ApplMin: number | null;\n ApplConst: number | null;\n TotalSum: number | null;\n};\n\nexport type PlanningEntryDataToEdit = {\n PlanId: IGuid | null;\n NutrientAmount: number | null;\n PercentAmount: number | null;\n ApplMax: number | null;\n ApplMin: number | null;\n ApplConst: number | null;\n};\n\nexport type UpdatedPlanningEntry = {\n PlanId: IGuid;\n ApplMin: number | null;\n ApplMax: number | null;\n ApplConst: number | null;\n};\n\nexport type RemainDemandType = {\n ElementType: ApElementType,\n Amount: number | '-';\n};\n\nexport type ModesAndStatusForPlan = {\n ApplicationMode: ApApplicationMode;\n OperationMode: ApOperationMode;\n Status: number;\n};\n\nexport interface INutrientPlaningSummaryData {\n Id: IGuid;\n Title: string;\n Farm_Id: number;\n User_Appl_Min: number | null;\n User_Appl_Max: number | null;\n User_Appl_Const: number | null;\n User_Appl_Unit: number | null;\n User_Appl_Mode: number | null;\n User_Appl_Date: Date;\n User_Operation_Mode: number | null;\n User_Operation_Mode_Const_Only: boolean;\n User_Operation_Mode_Some_Const: boolean;\n Plan_Number: number | null;\n Statistic: any[];\n Nutrient_Planing_Data: INutrientPlaningData[];\n MinDate: Date;\n MaxDate: Date;\n Selected_Fields: any[];\n TotalFieldsArea: number | null;\n Product_Id: number | null;\n Group_Id: any;\n Element: number | null;\n RbStatistics: IRbStatistic[];\n Amount_Nutrient: number | null;\n Amount_Goods: number | null;\n Amount_Percent: number | null;\n Driver: IDriver | null;\n Instrument: IInstrument | null;\n Machine: IMachine | null;\n}\n\nexport interface INutrientPlaningData {\n Id: IGuid;\n Summary_Id: IGuid;\n Operation_Mode: any;\n Appl_Mode: any;\n Element: any;\n Appl_Rate: number;\n Unit: any;\n Factor: number;\n Appl_Min: number;\n Appl_Max: number;\n Appl_Const: number;\n Valid_From: any;\n Valid_To: any;\n Note: string;\n Field_Geom_Id: IGuid;\n Croptype_Id: any;\n Croptype_Second_Id: any;\n Geom: any;\n Appl_Date: any;\n Statistic: any;\n Field_Id: IGuid;\n T_Start: any;\n T_End: any;\n Plan_Id: IGuid;\n Ready_Calculated: boolean;\n Ready: boolean;\n RbStatistic: any;\n Max: any;\n Field: any;\n Status: number;\n Driver: IDriver;\n Instrument: IInstrument;\n Machine: IMachine;\n}\n\nexport interface FieldGeomAndPlanId {\n FieldGeomId: IGuid;\n PlanId: IGuid;\n}\n\nexport interface INutrientPlanningEntryStepsConfig {\n initData(): void;\n\n setSubscriptions(dynComponent: ApDynComponentComponent): void;\n\n clearData(): void;\n}\n","export enum ApNutrientWizardStep {\n Selection,\n Details,\n Overview\n}\n","export enum ApNutrientGroup {\n Organic = 1,\n Mineral = 2\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {ApNutrientGroup} from '../../../ap-interface/enums/ap-nutrient-groups.enum';\nimport {FertilizerStore} from '../../../stores/base-data/fertilizer.store';\nimport {UnitsStore} from '../../../stores/common/units.store';\nimport {ApDateService} from '../../../ap-core/services/ap-date-service';\nimport {ApOperationMode} from '../../../ap-interface/enums/ap-operation-mode.enum';\nimport {ApApplicationMode} from '../../../ap-interface/enums/ap-application-mode.enums';\nimport {ApGuidUtil, GetRoundNumericPipe} from '../../../ap-utils';\nimport {ApNutrientStatisticService} from '../../../nutrient-management/service/ap-nutrient-statistic.service';\nimport {SettingsStore} from '../../../stores/base-data/settings.store';\nimport {ApTranslationService} from '../../../ap-utils/service/ap-translation.service';\nimport {ApElementType} from '../../../ap-interface/enums/ap-elements-type.enum';\nimport {LoginStore} from '../../../stores/login/login.store';\nimport {ApNutrientManagementDateService} from '../../../ap-utils/service/ap-nutrient-management-date.service';\nimport {\n INutrientPlaningSummaryData,\n ModesAndStatusForPlan,\n PlanningEntryComponentData,\n PlanningEntryComponentDataType,\n RemainDemandType\n} from './nutrient-planning-types';\nimport {CampaignYearStore} from '../../../stores/login/campaignyear.store';\nimport {CampaignYearService} from '../../../services/data/campaign-year.service';\nimport {ApNutrientWizardStep} from '../../../ap-interface/enums/ap-nutrient-wizard-setup.enums';\nimport {MapStore} from '../../../stores/map/map.store';\nimport {ApplModesStore} from '../../../stores/common/appl-modes.store';\nimport {ElementsStore} from '../../../stores/common/elements.store';\nimport {OperationModesStore} from '../../../stores/common/operation-modes.store';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {StatisticStore} from '../../../stores/statistic/statistic.store';\nimport {NutrientStore} from '../../../stores/nutrients/nutrient.store';\nimport {ObjectFactory} from 'ts-tooling';\nimport {MachineStore} from '../../../stores/docu/machine.store';\nimport {InstrumentStore} from '../../../stores/docu/instrument.store';\nimport {DriverStore} from '../../../stores/docu/driver.store';\nimport {ApNutrientService} from '../../../ap-utils/service/ap-nutrient.service';\nimport {BaseFertilizationCommonService} from '../../../nutrient-management/service/base-fertilization-common.service';\nimport {BasePlanningEntryService} from './base-planning-entry-service';\nimport {ApDynComponentComponent} from '../../../ap-dyncomponent/ap-dyncomponent.component';\nimport {RbStore} from '../../../stores/nutrients/rb.store';\nimport IUnit = Data.Common.IUnit;\nimport IGuid = System.IGuid;\nimport ISettings = Data.BaseData.ISettings;\nimport IRbStatistic = Data.Nutrients.IRbStatistic;\nimport IBasicFertilisationSummaries = Data.TaskManagement.IBasicFertilisationSummaries;\nimport IBasicFertilisationPlanBooks = Data.TaskManagement.IBasicFertilisationPlanBooks;\nimport IField = Data.FieldManagement.IField;\n\n@Injectable()\nexport class NutrientPlanningEntryService extends BasePlanningEntryService {\n public readonly closeForm = new EventEmitter();\n public readonly activeWizardStep = new BehaviorSubject(ApNutrientWizardStep.Selection);\n\n private _notifyAboutSelectedFieldsChanged = new BehaviorSubject([]);\n private _notifyAboutSelectedFieldsChanged$ = this._notifyAboutSelectedFieldsChanged.asObservable();\n private _summaryForCreate: INutrientPlaningSummaryData | undefined;\n private _summaryForEdit: IBasicFertilisationSummaries | undefined;\n private _allPlanBooksFromSummaryToEdit: boolean | undefined;\n private _settings: ISettings;\n private _globalUnitPercent: IUnit; // 3\n private _globalUnitKgPerHa: IUnit; // 1\n private _globalUnitM3PerHa: IUnit; // 4\n private _globalUnitTPerHa: IUnit; // 5\n\n private get componentData(): PlanningEntryComponentData {\n return this._componentData as PlanningEntryComponentData;\n }\n\n constructor(private rbStore: RbStore,\n private mapStore: MapStore,\n private unitStore: UnitsStore,\n private fieldStore: FieldStore,\n private loginStore: LoginStore,\n private driverStore: DriverStore,\n private machineStore: MachineStore,\n private elementStore: ElementsStore,\n private settingsStore: SettingsStore,\n private statisticStore: StatisticStore,\n private instrumentStore: InstrumentStore,\n private fertilizerStore: FertilizerStore,\n private campaignYearStore: CampaignYearStore,\n private nutrientPlanningStore: NutrientStore,\n private applicationModesStore: ApplModesStore,\n private operationModesStore: OperationModesStore,\n private dateService: ApDateService,\n private nutrientService: ApNutrientService,\n private campaignYearService: CampaignYearService,\n private translationService: ApTranslationService,\n private nutrientStatisticService: ApNutrientStatisticService,\n private baseFertilizationCommonService: BaseFertilizationCommonService,\n private nutrientManagementDateService: ApNutrientManagementDateService,\n private roundNumericPipe: GetRoundNumericPipe) {\n super();\n }\n\n public get isNewMode(): boolean | undefined {\n return this._isNewMode;\n }\n\n public get summary(): INutrientPlaningSummaryData | undefined {\n return this._summaryForCreate;\n }\n\n public get globalUnitPercent(): IUnit {\n return this._globalUnitPercent;\n }\n\n public get globalUnitKgPerHa(): IUnit {\n return this._globalUnitKgPerHa;\n }\n\n public get detectSelectedFieldsChanges(): Observable {\n return this._notifyAboutSelectedFieldsChanged$;\n }\n\n public initData(): void {\n super.initData();\n this._settings = this.settingsStore.FirstSetting;\n this._globalUnitKgPerHa = this.unitStore.getUnitByKey('Global__Unit_kg_ha');\n this._globalUnitPercent = this.unitStore.getUnitByKey('Global__Unit_Percent');\n this._globalUnitM3PerHa = this.unitStore.getUnitByKey('Global__UnitM3PerHa');\n this._globalUnitTPerHa = this.unitStore.getUnitByKey('Global__Unit_t_ha');\n this._createNewSummary();\n this.rememberSelectedFields(this.fieldStore.getSelectedFields(), true);\n }\n\n public setSubscriptions(dynComponent: ApDynComponentComponent): void {\n super.setSubscriptions(dynComponent);\n }\n\n public clearData(): void {\n this._revertDeletedData();\n this._summaryForCreate = undefined;\n this._isSaved = false;\n this._isNewMode = false;\n this.nutrientPlanningStore.clearNutrientPlanningStatistic();\n this.statisticStore.removeStatisticData();\n if (this._shouldDeselectFieldsOnClose) {\n this.fieldStore.changeSelectedField([]);\n }\n this.rememberSelectedFields([], false);\n }\n\n public rememberSelectedFields(fields: IField[], notifyAboutChanges: boolean): void {\n this._selectedFields = [...fields];\n this._shouldDeselectFieldsOnClose = this.getSelectedFields.length > 0;\n if (notifyAboutChanges) {\n this._notifyAboutSelectedFieldsChanged.next(this._selectedFields);\n }\n }\n\n public savePlannings(): void {\n const saveObject = this._convertingSummarySaveObject();\n this.baseFertilizationCommonService.saveSummary(saveObject);\n this._isSaved = true;\n if (!this._isNewMode) {\n this.baseFertilizationCommonService.setSelectedSummaryKey(saveObject.Id);\n }\n }\n\n public clearMapLayerAndLegend(): void {\n this.mapStore.Layers.NutrientPlanningLayer.clear();\n this.mapStore.Legends.removeLegend(this.mapStore.Legends.NutrientPlanningLegend);\n }\n\n public getRemainDemands(statistics: IRbStatistic): RemainDemandType[] {\n return [\n {\n ElementType: ApElementType.P,\n Amount: this.nutrientStatisticService.getAverageRb(4, statistics)\n },\n {\n ElementType: ApElementType.K,\n Amount: this.nutrientStatisticService.getAverageRb(5, statistics)\n },\n {\n ElementType: ApElementType.Mg,\n Amount: this.nutrientStatisticService.getAverageRb(6, statistics)\n },\n {\n ElementType: ApElementType.CaO,\n Amount: this.nutrientStatisticService.getAverageRb(7, statistics)\n }\n ];\n }\n\n public getElementLabelTranslation(): string {\n const element: string = this._settings.IsOxidFarm\n ? this.translationService.translate('Global__Oxyd_Label')\n : this.translationService.translate('Global__Element_Label');\n return `${this.translationService.translate('Global__Average_Symbol_Nutrient_kg_ha')} [${element}]`;\n }\n\n public isKgPerHOrM3PerHOrTPerHUnit(unitId: number | null): boolean {\n return unitId && (this._globalUnitKgPerHa.Id === unitId\n || this._globalUnitM3PerHa.Id === unitId\n || this._globalUnitTPerHa.Id === unitId);\n }\n\n public getM3HaOrTHaOrKgHaUnitIdForOrganic(nutrientGroup: ApNutrientGroup, productId: number): number {\n if (productId && productId > 0 && nutrientGroup === ApNutrientGroup.Organic) {\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (fertilizer) {\n return fertilizer.IsLiquid ? this._globalUnitM3PerHa.Id : this._globalUnitTPerHa.Id;\n }\n }\n return this._globalUnitKgPerHa.Id;\n }\n\n public isDataObjectValid(): boolean {\n if (!this.componentData) {\n return false;\n }\n if (this.componentData?.Type === PlanningEntryComponentDataType.Edit) {\n const summary = this.componentData.Summary;\n const planBooks = summary?.BasicFertilisationPlanBooks?.filter(x => !x.DeletedAt && !x.BookedAt) ?? [];\n return planBooks && planBooks.length > 0;\n }\n return true;\n }\n\n public getTotalSumValueFromConst(goodsAmount: number | null, totalAreaHa: number): number | null {\n if (goodsAmount == null) {\n return null;\n }\n if (!goodsAmount || !totalAreaHa) {\n return 0;\n }\n return goodsAmount * totalAreaHa;\n }\n\n public getConstValueFromTotalSum(totalSum: number | null, totalAreaHa: number): number | null {\n if (totalSum == null) {\n return null;\n }\n if (!totalSum || !totalAreaHa) {\n return 0;\n }\n return totalSum / totalAreaHa;\n }\n\n public getModesAndStatusForPlan(selectedField: any, element: number): ModesAndStatusForPlan {\n let operationMode = ApOperationMode.Const;\n let applicationMode = ApApplicationMode.Constant;\n let status = 2; // default: Gelb\n if (this._summaryForCreate.User_Operation_Mode === ApOperationMode.AppMap && selectedField?.Status === 1) {\n const rb = this.rbStore.getRbStatisticByFieldGeomId(selectedField.FieldGeomId.toString());\n if (rb !== null) {\n const avgRB2 = this.nutrientStatisticService.getAverageRb(element + 3, rb);\n if (avgRB2 > this.roundNumericPipe.transform(0, 0)) {\n operationMode = ApOperationMode.AppMap;\n applicationMode = ApApplicationMode.Variable;\n status = 1;\n }\n }\n }\n return {\n ApplicationMode: applicationMode,\n OperationMode: operationMode,\n Status: status\n };\n }\n\n //#region \"private Methods\"\n\n private _revertDeletedData(): void {\n if (this._summaryForEdit && !this._isSaved) {\n if (this._allPlanBooksFromSummaryToEdit) {\n this.baseFertilizationCommonService.revertSummary(this._summaryForEdit);\n } else {\n const planBooksToRevert = this._summaryForEdit.BasicFertilisationPlanBooks.filter(x => !x.DeletedAt && !x.BookedAt);\n this.baseFertilizationCommonService.revertSummaryPlanBooks(planBooksToRevert);\n }\n this.baseFertilizationCommonService.setSelectedSummaryKey(this._summaryForEdit.Id);\n this._summaryForEdit = undefined;\n }\n }\n\n private _createNewSummary(): void {\n const startYear = this.campaignYearStore.getSelectedCampaignYear().Year;\n const endYear = this.campaignYearStore.IsCurrentCampaignYear ? startYear + 5 : startYear;\n const campaignYearRange = this.campaignYearService.getCampaignYearRange(startYear, endYear);\n this._isNewMode = this.componentData.Type === PlanningEntryComponentDataType.Create;\n if (this.componentData.Summary) {\n this._summaryForEdit = ObjectFactory.Copy(this.componentData.Summary);\n const farmApplDate = this.dateService.toFarmDate(this._summaryForEdit?.User_Appl_Date).toDate();\n const nonDeletedPlanBooks = this._summaryForEdit.BasicFertilisationPlanBooks.filter(x => !x.DeletedAt);\n const nonBookedPlanBooks = nonDeletedPlanBooks.filter(x => !x.BookedAt);\n const planBook = nonBookedPlanBooks[0];\n if (this._selectedFields.length <= 0) {\n const planBookFieldIds = nonBookedPlanBooks.map(x => x.FieldId);\n this.rememberSelectedFields(this.fieldStore.getFieldsById(planBookFieldIds), true);\n }\n this._allPlanBooksFromSummaryToEdit = nonDeletedPlanBooks.length === nonBookedPlanBooks.length;\n this._summaryForCreate = this._generateSummary(this._isNewMode, ApGuidUtil.generateNewGuid(), this._summaryForEdit.Title,\n this._summaryForEdit.FarmId, planBook?.Product_Id, this._summaryForEdit?.User_Appl_Unit?.Id,\n this._summaryForEdit?.User_Appl_Mode.Id, this._summaryForEdit?.User_Appl_Const,\n this._summaryForEdit?.User_Appl_Min, this._summaryForEdit?.User_Appl_Max, this._summaryForEdit?.User_Appl_Rate,\n farmApplDate, this._summaryForEdit?.User_Operation_Mode?.Id, this._summaryForEdit?.PlanNumber,\n planBook.Element?.Id, campaignYearRange.StartYear, campaignYearRange.EndYear, planBook?.ExportDriver,\n planBook.ExportMachine, planBook.ExportInstrument);\n } else {\n this._isNewMode = true;\n const farmApplDate = this.dateService.getDateNoonToFarmTime(this.nutrientManagementDateService.GetOutputDate());\n this._summaryForCreate = this._generateSummary(this._isNewMode, ApGuidUtil.generateNewGuid(), '', this.loginStore.SelectedFarmId,\n 0, this._globalUnitKgPerHa.Id, ApApplicationMode.Variable, null, null, null,\n null, farmApplDate, ApOperationMode.AppMap, null, ApElementType.P, campaignYearRange.StartYear,\n campaignYearRange.EndYear, null, null, null);\n }\n }\n\n private _generateSummary(isNewMode: boolean, id: IGuid, title: string, farmId: number, productId: number | null, applUnit: number,\n applMode: ApApplicationMode, applConst: number | null, applMin: number | null, applMax: number | null,\n applRate: number | null, applDate: Date, operationMode: ApOperationMode, planNumber: number | null,\n element: ApElementType, minDate: Date, maxDate: Date, driverId: IGuid | null, machineId: IGuid | null,\n instrumentId: IGuid | null): INutrientPlaningSummaryData {\n const groupId = this.fertilizerStore.getFertilizer(productId)?.IsOrganic\n ? ApNutrientGroup.Organic\n : ApNutrientGroup.Mineral;\n const summary: INutrientPlaningSummaryData = {\n Id: id,\n Title: title,\n Farm_Id: farmId,\n Product_Id: productId,\n User_Appl_Unit: applUnit,\n User_Appl_Mode: applMode,\n User_Appl_Const: applConst,\n User_Appl_Min: applMin,\n User_Appl_Max: applMax,\n User_Appl_Date: applDate,\n User_Operation_Mode: operationMode,\n Plan_Number: planNumber,\n Statistic: [],\n Selected_Fields: [],\n TotalFieldsArea: null,\n Element: element,\n Group_Id: groupId,\n User_Operation_Mode_Const_Only: false,\n User_Operation_Mode_Some_Const: false,\n Nutrient_Planing_Data: [],\n RbStatistics: [],\n MinDate: minDate,\n MaxDate: maxDate,\n Driver: this.driverStore.getDriverById(driverId),\n Machine: this.machineStore.getMachineById(machineId),\n Instrument: this.instrumentStore.getInstrumentById(instrumentId),\n Amount_Nutrient: null,\n Amount_Goods: null,\n Amount_Percent: null\n };\n if (!isNewMode) {\n if (this.isKgPerHOrM3PerHOrTPerHUnit(summary.User_Appl_Unit)) {\n summary.Amount_Goods = applRate;\n summary.Amount_Nutrient = this.nutrientService.convertGoodsToNutrient(\n summary.Product_Id, element, applRate, false);\n } else {\n summary.Amount_Percent = applRate;\n }\n }\n return summary;\n }\n\n private _convertingSummarySaveObject(): IBasicFertilisationSummaries {\n const applicationMode = this.applicationModesStore.Listen(s => s.data)\n .getValue()\n .Find((a) => a.Id === this._summaryForCreate.User_Appl_Mode);\n const operationMode = this.operationModesStore.Listen(s => s.data)\n .getValue()\n .Find((o) => o.Id === this._summaryForCreate.User_Operation_Mode);\n const element = this.elementStore.Listen(s => s.data)\n .getValue()\n .Find((o) => o.Id === this._summaryForCreate.Nutrient_Planing_Data[0].Element);\n\n const newSummary: IBasicFertilisationSummaries = {\n Id: this._summaryForCreate.Id,\n Title: this._summaryForCreate.Title,\n FarmId: this._summaryForCreate.Farm_Id,\n User_Appl_Min: this._summaryForCreate.User_Appl_Min,\n User_Appl_Max: this._summaryForCreate.User_Appl_Max,\n User_Appl_Unit: this._getSummaryUnit(),\n User_Appl_Mode: applicationMode,\n User_Operation_Mode: operationMode,\n User_Appl_Rate: this._getSummaryApplRate(),\n User_Appl_Const: this._summaryForCreate.User_Appl_Const,\n User_Appl_Date: this.dateService.getDateNoon(this._summaryForCreate.User_Appl_Date),\n Statistic: this._summaryForCreate.Statistic,\n PlanNumber: 0,\n Version: 0,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n BasicFertilisationPlanBooks: []\n };\n const readyPlannings = this._summaryForCreate.Nutrient_Planing_Data.FindAll(x => x.Ready);\n readyPlannings.forEach(item => {\n const geom = this.fieldStore.getCurrentFieldGeom(item.Field);\n const itemApplicationMode = this.applicationModesStore.Listen(s => s.data)\n .getValue()\n .Find((a) => a.Id === item.Appl_Mode);\n const itemOperationMode = this.operationModesStore.Listen(s => s.data)\n .getValue()\n .Find((o) => o.Id === item.Operation_Mode);\n const planning: IBasicFertilisationPlanBooks = {\n Summary_Id: this._summaryForCreate.Id,\n Id: item.Plan_Id,\n Appl_Const: item.Appl_Const,\n Appl_Min: item.Appl_Min,\n Appl_Max: item.Appl_Max,\n Appl_Mode: itemApplicationMode,\n Appl_Rate: item.Appl_Rate,\n Croptype_Id: item.Croptype_Id,\n Croptype_Second_Id: item.Croptype_Second_Id,\n Element: element,\n Factor: item.Factor,\n Note: this._summaryForCreate.Title,\n Operation_Mode: itemOperationMode,\n Unit: this.globalUnitKgPerHa,\n Valid_From: item.Valid_From,\n Valid_To: item.Valid_To,\n Product_Id: this._summaryForCreate.Product_Id,\n FieldId: item.Field_Id,\n Field_Geom_Id: item.Field_Geom_Id,\n Geom: item.Geom,\n Statistic: item.Statistic,\n FarmId: this._summaryForCreate.Farm_Id,\n Area: geom?.AdminArea,\n AreaHa: (geom?.AdminArea > 0 ? geom?.AdminArea : 10000) / 10000,\n ApplicationDate: this.dateService.getDateNoon(item.Appl_Date),\n ExportDriver: item.Driver?.Id,\n ExportInstrument: item.Instrument?.Id,\n ExportMachine: item.Machine?.Id,\n Status: 1,\n Version: 0,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n ExportedAt: null,\n ExportedBy: null,\n ExportFormat: null,\n ExportTarget: null,\n TStart: null,\n TEnd: null,\n BookedBy: null,\n BookedAt: null,\n JobInput: ''\n };\n newSummary.BasicFertilisationPlanBooks.Add(planning);\n }\n );\n return newSummary;\n }\n\n private _getSummaryUnit(): IUnit {\n const productId = this._summaryForCreate.Product_Id;\n const inputUnit = this._summaryForCreate.User_Appl_Unit;\n // Prozenteingabe\n if (inputUnit === 3) {\n return this.unitStore.Listen(s => s.data).getValue().Find((o) => o.Id === inputUnit);\n }\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!!fertilizer) {\n const unit = this.unitStore.Listen(s => s.data).getValue().Find((o) => o.BaseUnit === fertilizer.Unit);\n if (!!unit) {\n return unit;\n }\n }\n // Fallback\n return this.unitStore.Listen(s => s.data).getValue().Find((o) => o.Id === inputUnit);\n }\n\n private _getSummaryApplRate(): number {\n const isPhysicalAmount = this.isKgPerHOrM3PerHOrTPerHUnit(this._summaryForCreate.User_Appl_Unit);\n const goodsAmount = this._summaryForCreate.Amount_Goods;\n const percent = this._summaryForCreate.Amount_Percent;\n return isPhysicalAmount ? goodsAmount : percent;\n }\n\n //#endregion \"private Methods\"\n}\n","import {delay, filter, map} from 'rxjs/operators';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {\n EventEmitter,\n Injectable\n} from '@angular/core';\nimport {\n ApDynGridPagerWizardBreadcrumbsStepper,\n ApDynGridPagerWizardButton,\n ApDynGridPagerWizardConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {\n ApDynComponentComponent\n} from '../../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n ApDynGridColumnConfigBase,\n ApDynGridColumnHideConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n CampaignYearStore\n} from '../../../stores/login/campaignyear.store';\nimport {\n CropRotationStore\n} from '../../../stores/farm/crop.rotation.store';\nimport {\n CropTypeStore\n} from '../../../stores/base-data/crop.types.store';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {\n ApElementOxydTypeEnum,\n MapViewMode\n} from '../../../ap-interface';\nimport {\n MapViewStore\n} from '../../../stores/layout/mapview.store';\nimport {\n JobsStore\n} from '../../../stores/administration/jobs.store';\nimport {\n AreaUnit,\n AreaUnitConverterPipe,\n GetRoundNumericPipe\n} from '../../../ap-utils';\nimport {\n ApTranslationService\n} from '../../../ap-utils/service/ap-translation.service';\nimport {\n SoilSampleDateStore\n} from '../../../stores/nutrients/soilsampledate.store';\nimport {\n FieldStore\n} from '../../../stores/farm/field.store';\nimport {\n RbStore\n} from '../../../stores/nutrients/rb.store';\nimport {\n ApDateService\n} from '../../../ap-core/services/ap-date-service';\nimport {\n ApFieldFormatService\n} from '../../../ap-utils/service/ap-field-format.service';\nimport {\n ApNutrientService\n} from '../../../ap-utils/service/ap-nutrient.service';\nimport {\n ApElementType\n} from '../../../ap-interface/enums/ap-elements-type.enum';\nimport {\n GetElementService\n} from '../../../ap-utils/service/ap-get-element.service';\nimport {\n NutrientPlanningEntryService\n} from './nutrient-planning-entry.service';\nimport {\n INutrientPlanningEntryStepsConfig,\n Limits\n} from './nutrient-planning-types';\nimport {\n ApNutrientWizardStep\n} from '../../../ap-interface/enums/ap-nutrient-wizard-setup.enums';\nimport {\n NotifyStore\n} from '../../../stores/dialog/notify.store';\nimport {\n GetRoundNumericService\n} from '../../../ap-utils/service/get-round-numeric.service';\nimport {\n SettingsStore\n} from '../../../stores/base-data/settings.store';\nimport {\n FieldNutrientDistributionStore\n} from '../../../stores/nutrients/field-nutrient-distributions.store';\nimport {\n MapStore\n} from '../../../stores/map/map.store';\nimport {\n BaseFertilizationCommonService\n} from '../../../nutrient-management/service/base-fertilization-common.service';\nimport {\n Create\n} from 'ts-tooling';\nimport ISettings = Data.BaseData.ISettings;\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\n\n@Injectable()\nexport class NutrientPlanningEntrySelectionStepService implements INutrientPlanningEntryStepsConfig {\n private _dynComponent: ApDynComponentComponent;\n private _settings: ISettings;\n private _onCancelSelection = new EventEmitter();\n private _onNextSelection = new EventEmitter();\n private _year$ = new BehaviorSubject(undefined);\n private _previousYear = new EventEmitter();\n private _nextYear = new EventEmitter();\n private _cropRotationLimits$ = new BehaviorSubject(undefined);\n private _subscriptions: Subscription[] = [];\n private _statusCss = [\n 'ap-status-red',\n 'ap-status-yellow',\n 'ap-status-green',\n 'ap-status-grey',\n ];\n\n constructor(private rbStore: RbStore,\n private mapStore: MapStore,\n private jobsStore: JobsStore,\n private fieldStore: FieldStore,\n private notifyStore: NotifyStore,\n private dateService: ApDateService,\n private mapViewStore: MapViewStore,\n private settingsStore: SettingsStore,\n private cropTypeStore: CropTypeStore,\n private campaignYearStore: CampaignYearStore,\n private cropRotationStore: CropRotationStore,\n private soilSampleDateStore: SoilSampleDateStore,\n private fieldNutrientDistributionStore: FieldNutrientDistributionStore,\n private elementService: GetElementService,\n private nutrientService: ApNutrientService,\n private fieldFormatService: ApFieldFormatService,\n private translationService: ApTranslationService,\n private roundNumericService: GetRoundNumericService,\n private planningEntryService: NutrientPlanningEntryService,\n private baseFertilizationCommonService: BaseFertilizationCommonService,\n private areaUnitPipe: AreaUnitConverterPipe,\n private roundNumericPipe: GetRoundNumericPipe) {\n }\n\n public initData(): void {\n this._settings = this.settingsStore.FirstSetting;\n }\n\n public setSubscriptions(dynComponent: ApDynComponentComponent): void {\n this._dynComponent = dynComponent;\n this._subscriptions.push(this._dynComponent.gridInitialized.subscribe(() => {\n if (this.planningEntryService.activeWizardStep.getValue() === ApNutrientWizardStep.Selection) {\n const fieldsId = this.planningEntryService.getSelectedFields.map(x => x.Id.toString());\n this._dynComponent.dynGrid.gridPaging.setSelectedKeys(fieldsId);\n this.handleLegendsAndLayers(fieldsId.length);\n }\n }));\n this._subscriptions.push(this._dynComponent.SelectedItems$.subscribe(d => {\n if (this.planningEntryService.activeWizardStep.getValue() === ApNutrientWizardStep.Selection) {\n this._onSelectionChange(d);\n this.handleLegendsAndLayers(d.length);\n }\n }));\n this._subscriptions.push(this.planningEntryService.detectSelectedFieldsChanges.subscribe(fields => {\n if (this._dynComponent.dynGrid?.gridPaging) {\n const fieldsId = fields.map(x => x.Id.toString());\n this._dynComponent.dynGrid.gridPaging.setSelectedKeys(fieldsId);\n }\n }));\n this._subscriptions.push(combineLatest([\n this.cropRotationStore.Listen(s => s.history).pipe(\n map((history) => Object.values(history)),\n filter((crops) => crops.length !== 0),\n map((crops) => crops.map((crop) => Object.keys(crop).filter((key) => crop[key] !== null).map((key) => +key))),\n map((years) => years.reduce((a, b) => a.concat(b)))),\n this.campaignYearStore.Listen(s => s.selectedYear)\n ]).pipe(\n map(([dates, campaignYear]) => ({\n min: Math.min(...dates, campaignYear.Year),\n max: Math.max(...dates, campaignYear.Year)\n })\n )\n ).subscribe(l => this._cropRotationLimits$.next({Min: l.min, Max: l.max})));\n this._subscriptions.push(this.campaignYearStore.Listen(s => s.selectedYear).subscribe((campaignYear) => {\n if (campaignYear) {\n this._year$.next(campaignYear.Year);\n }\n }));\n this._subscriptions.push(this._previousYear.subscribe(() => {\n this._year$.next(this._year$.value - 1);\n }));\n this._subscriptions.push(this._nextYear.subscribe(() => {\n this._year$.next(this._year$.value + 1);\n }));\n this._subscriptions.push(this._onNextSelection.subscribe(() => {\n if (this.planningEntryService.summary.User_Operation_Mode_Const_Only\n || this.planningEntryService.summary.User_Operation_Mode_Some_Const) {\n let warningText = `${this.translationService.translate('Global__Only_Constant_Planning_Possible')}\n (${this.translationService.translate('Nutrients_Ips_Pages__StatusRed')})`;\n if (this.planningEntryService.summary.User_Operation_Mode_Some_Const\n && !this.planningEntryService.summary.User_Operation_Mode_Const_Only) {\n const itemsForConst = this._dynComponent?.getSelectedItems()?.filter((item: any) => item.Status !== 1);\n warningText = `${itemsForConst?.length}/${this._dynComponent?.getSelectedItems()?.length}\n ${this.translationService.translate('Base__Fields')}: ${warningText}`;\n }\n this.notifyStore.addMessage({\n DisplayTimeout: 5,\n Level: Data.Api.Validation.ApValidationLevel.Warning,\n ErrorKey: warningText\n } as IApValidationResult);\n }\n this.planningEntryService.activeWizardStep.next(ApNutrientWizardStep.Details);\n }));\n this._subscriptions.push(this._onCancelSelection.subscribe(() => {\n this.planningEntryService.closeForm.emit();\n }));\n this._subscriptions.push(this.mapStore.Layers.OnLayerChange.subscribe(() => {\n if (this.planningEntryService.activeWizardStep.getValue() === ApNutrientWizardStep.Selection) {\n this.handleLegendsAndLayers(this._dynComponent.items?.length ?? 0);\n }\n }));\n }\n\n /**\n * Handles logic related to showing/hiding legend and layers\n * @param selectedItemsLength selected items length\n */\n private handleLegendsAndLayers(selectedItemsLength: number): void {\n const disableLegends = [\n 'NutrientPlanningLegend',\n 'TaskMgmtLegend'\n ];\n this.baseFertilizationCommonService.handleLegends(\n selectedItemsLength, disableLegends);\n const disableLayers = [this.mapStore.Layers.TaskManagementLayer?.name];\n this.baseFertilizationCommonService.handleLayers(disableLayers, []);\n }\n\n public clearData(): void {\n this._subscriptions.forEach(x => x.unsubscribe());\n this._year$.next(undefined);\n }\n\n public getPager(breadCrumbsColumns: string[]): ApDynGridPagerWizardConfig {\n return new ApDynGridPagerWizardConfig(\n new ApDynGridPagerWizardButton('Global__Cancel', this._onCancelSelection, {id: 'button_cancel'}),\n new ApDynGridPagerWizardBreadcrumbsStepper(breadCrumbsColumns, 0),\n new ApDynGridPagerWizardButton('Global_Next_With_Arrow', this._onNextSelection, {\n id: 'button_next',\n active: this._dynComponent.SelectedItems$.pipe(\n map((items) => items.length !== 0 && !items.some(x => x.JobInProgress)),\n delay(0)\n )\n })\n );\n }\n\n public getColumns(): Observable {\n return combineLatest([\n this._cropRotationLimits$,\n this.cropRotationStore.GetHistory$,\n this.cropTypeStore.GetCropTypesNames$,\n this.settingsStore.FirstSetting$\n ]).pipe(\n filter(([limits, cropRotation, ct, settings]) => !!limits && Object.keys(cropRotation).length !== 0 && !!ct && !!settings),\n map(([limits, cropRotation, ct, settings]) => ({limits, cropRotation, ct, settings})),\n map((p) => {\n return [\n new ApDynGridStatusColumnConfig({\n field: 'Status',\n class: 'StatusClass',\n description: 'StatusDesc',\n showHeaderTitle: false,\n filterable: true,\n pending: this.jobsStore.BlockedFieldIdsBuWsvCeIrRbFieldRaster$,\n pendingTooltip: this.jobsStore.BlockedFieldIdsBuWsvCeIrRbFieldRasterTooltip$\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'FieldNumber',\n title: 'Global__NumberAbbr',\n filterable: true,\n width: 60,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Field.FieldName',\n title: 'Global__FieldName',\n filterable: true,\n width: 180,\n headerFilterable: true,\n cssClass: 'left',\n sortIndex: 0,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Area',\n title: 'Global__Area_Unit',\n filterable: true,\n filterType: FilterType.NUMBER,\n width: 60,\n cssClass: 'right',\n headerFilterable: true,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridGroupColumnConfig({\n headerStyle: {\n 'text-align': 'center'\n },\n style: {\n border: '1px solid #2c3237'\n },\n title: 'Nutrients__Average_RemainingNeed_2_kg_ha',\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: !p.settings.IsOxidFarm ? 'Global__NutrientP' : 'Global__NutrientP2O5',\n field: 'Remain2.P',\n width: 60,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: !p.settings.IsOxidFarm ? 'Global__NutrientK' : 'Global__NutrientK2O',\n field: 'Remain2.K',\n width: 60,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: !p.settings.IsOxidFarm ? 'Global__NutrientMg' : 'Global__NutrientMgO',\n field: 'Remain2.Mg',\n width: 60,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Nutrients__CaO',\n field: 'Remain2.CaO',\n width: 60,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n })\n ]\n }),\n new ApDynGridGroupColumnConfig({\n headerButtons: {\n nextClicked: this._nextYear,\n nextDisabled: this._year$.pipe(map((y) => y >= p.limits.Max)),\n previousClicked: this._previousYear,\n previousDisabled: this._year$.pipe(map((y) => y <= p.limits.Min)),\n },\n title: 'Global__Crop',\n groupColumns: this._getCropRotationConfigs(p.limits),\n width: 100,\n hide: new ApDynGridColumnHideConfig({\n widthHidePriority: 1\n })\n })\n ];\n })\n );\n }\n\n public getItems(): Observable {\n return combineLatest([\n this.soilSampleDateStore.Listen(s => s.dates),\n this.fieldNutrientDistributionStore.SampleRegions$,\n this.cropRotationStore.Listen(s => s.history),\n this.fieldStore.Listen(s => s.data),\n this.rbStore.Listen(s => s.rb),\n this.jobsStore.BlockedFieldIdsBuWsvCeIrRbFieldRaster$,\n this.cropRotationStore.Listen(s => s.cropRotationAttributes),\n ]).pipe(\n filter(([, , cropRotationHistory, fields, rb, _]) => fields && fields.length !== 0 && Object.keys(cropRotationHistory).length !== 0 && !!rb),\n map(([soilSampleDates, sampleRegions, cropRotationHistory, fields, rb, jobFieldGeomIds, cropRotationAttributes]) => fields.map((field) => {\n const fieldGeom = this.fieldStore.getCurrentFieldGeom(field);\n const rbResult = rb.FirstOrDefault(x => x.FieldGeomId === fieldGeom?.Id);\n const areaNumber = fieldGeom && fieldGeom.AdminArea > 0 ? fieldGeom.AdminArea : '-';\n const areaConverted = this._areaConvert(areaNumber);\n const cropRotationAttribute = cropRotationAttributes.find(x => x?.FieldGeomId === fieldGeom?.Id);\n const sampleDateObject = Object.keys(soilSampleDates).length > 0 ? soilSampleDates[field.Id as string] : undefined;\n const status = this.nutrientService.getGDStatusByCrAttribute(sampleDateObject, sampleRegions, cropRotationAttribute);\n const remainDemand = this.planningEntryService.getRemainDemands(rbResult);\n return {\n Id: field.Id,\n Status: status[0],\n StatusClass: this._statusCss[status[0] + 1],\n StatusDesc: status[1],\n SourceItem: field || {},\n FieldNumber: this.fieldFormatService.formatFieldNumber(field),\n Field: field,\n FieldGeomId: fieldGeom?.Id,\n Area: areaConverted,\n NewestSampleDate: !!sampleDateObject?.Date ? this.dateService.getDateMidnight(sampleDateObject.Date) : undefined,\n Crop: cropRotationHistory[field.Id as string],\n ColumnLoading: rb.length === 0 && jobFieldGeomIds.Contains(field.Id.toString()),\n JobInProgress: jobFieldGeomIds.Contains(field.Id.toString()),\n RbStatistic: rbResult,\n Remain2: {\n P: this.elementService.CalculateElementOxidValueByGivenElementValue(\n remainDemand.find(x => x.ElementType === ApElementType.P).Amount,\n ApElementOxydTypeEnum.P\n ),\n K: this.elementService.CalculateElementOxidValueByGivenElementValue(\n remainDemand.find(x => x.ElementType === ApElementType.K).Amount,\n ApElementOxydTypeEnum.K\n ),\n Mg: this.elementService.CalculateElementOxidValueByGivenElementValue(\n remainDemand.find(x => x.ElementType === ApElementType.Mg).Amount,\n ApElementOxydTypeEnum.Mg\n ),\n CaO: remainDemand.find(x => x.ElementType === ApElementType.CaO).Amount,\n },\n };\n }))\n );\n }\n\n //#region \"private Methods\"\n\n private _onSelectionChange(currentSelected: any[]): void {\n const currentStep = this.planningEntryService.activeWizardStep.getValue();\n if (currentStep === ApNutrientWizardStep.Selection) {\n if (!currentSelected || currentSelected.length <= 0) {\n this.fieldStore.changeSelectedField([]);\n this.planningEntryService.summary.TotalFieldsArea = null;\n } else {\n this.planningEntryService.summary.Selected_Fields = currentSelected;\n this.planningEntryService.summary.TotalFieldsArea =\n currentSelected.reduce((total, current) => total + Create(current.Area, 0), 0);\n this.planningEntryService.summary.User_Operation_Mode_Some_Const =\n currentSelected.Any(x => this._checkStatusToBeApplicableForConst(x.Status));\n this.planningEntryService.summary.User_Operation_Mode_Const_Only =\n currentSelected.TrueForAll(x => this._checkStatusToBeApplicableForConst(x.Status));\n this.fieldStore.changeSelectedField(currentSelected.map(e => e.Id.toString()));\n if (this.planningEntryService.isNewMode) {\n this.planningEntryService.rememberSelectedFields(currentSelected.map(x => x.SourceItem), false);\n }\n }\n this.planningEntryService.clearMapLayerAndLegend();\n }\n }\n\n private _getCropRotationConfigs(limits: Limits): any[] {\n const columns = [];\n for (let iYear = limits.Min - 1; iYear <= limits.Max + 3; ++iYear) {\n columns.push(new ApDynGridPropertyColumnConfig({\n title: `${iYear}`,\n field: `Crop.${iYear}.MainCropName`,\n filterable: true,\n headerFilterable: iYear === this.campaignYearStore.getSelectedCampaignYear().Year,\n width: 100,\n hide: new ApDynGridColumnHideConfig({\n mapHide: false,\n selfHide: combineLatest([this._year$, this.mapViewStore.Listen(s => s.mode)]).pipe(\n map(([year, mode]) => {\n if (year === iYear) {\n return false;\n }\n return !(mode === MapViewMode.HIDE && iYear > year - 2 && iYear < year + 4);\n }),\n )\n }),\n tooltip: ((dataItem) => {\n const yesNo = (b: boolean) => this.translationService.translate(b ? 'LabelYes' : 'LabelNo');\n const unit = this.translationService.translate('Global__UnitDtPerHa');\n if (!dataItem || !dataItem['Crop'] || !dataItem['Crop'][iYear]) {\n return '';\n }\n const c = dataItem['Crop'][iYear]?.MainCropName;\n let s = '-';\n let sYieldUnit = '-';\n if (dataItem['Crop'][iYear].SecondCrop !== 0) {\n s = dataItem['Crop'][iYear].SecondCropName;\n sYieldUnit = dataItem['Crop'][iYear].SecondCropYield + ' ' + unit;\n }\n const mainCrop = `${this.translationService.translate('Nutrients_Pages_Popups__MainCrop')}: ${c}`;\n const targetMain = `${this.translationService.translate('Global__Target')}: ${dataItem['Crop'][iYear].MainCropYield} ${unit}`;\n const straw = `${this.translationService.translate('Nutrients_Pages__StrawRemoved')}: ${yesNo(dataItem['Crop'][iYear].MainCropStraw)}`;\n const interTillage = `${this.translationService.translate('Nutrients_Pages_Popups__Intertillage')}: ${s}`;\n const targetInter = `${this.translationService.translate('Global__Target')}: ${sYieldUnit}`;\n const br = '
';\n return `${mainCrop}${br}${targetMain}${br}${straw}${br}${interTillage}${br}${targetInter}`;\n })\n }));\n }\n return columns;\n }\n\n private _areaConvert(areaNumber: number | '-'): number | string {\n let area: number | string;\n if (areaNumber !== '-') {\n area = this.areaUnitPipe.transform(areaNumber, [AreaUnit.SQUARE_METER, AreaUnit.HEKTAR]);\n } else {\n area = '-';\n }\n return area;\n }\n\n private _checkStatusToBeApplicableForConst(status: number): boolean {\n return status === -1 || status === 0 || status === 2;\n }\n\n //#endregion \"private Methods\"\n}\n","import {FormGroup, ValidatorFn} from '@angular/forms';\n\n/**\n * Form validator: Validates the range of 2 numeric values\n */\nexport class ApNumberRangeValidator {\n static ValidateNumberRange(smallerNumberControlName: string, biggerNumberControlName: string): ValidatorFn {\n return (formGroup: FormGroup): { [key: string]: any } | null => {\n if (!formGroup || formGroup == null) {\n return null;\n }\n\n const smallerNumberControl = formGroup.get(smallerNumberControlName);\n const biggerNumberControl = formGroup.get(biggerNumberControlName);\n if (!smallerNumberControl || !biggerNumberControl) {\n return null;\n }\n\n const smallerNumber = smallerNumberControl.value as number;\n const biggerNumber = biggerNumberControl.value as number;\n if (!smallerNumber || smallerNumber == null || !biggerNumber || biggerNumber == null) {\n return null;\n }\n\n if (smallerNumber > biggerNumber) {\n const validationResult = {};\n validationResult[`ValidateNumberRange_${smallerNumberControlName}_${biggerNumberControlName}`] = [smallerNumberControlName, biggerNumberControlName];\n return validationResult;\n }\n\n return null;\n };\n }\n}\n","import {AbstractControl, FormGroup, ValidatorFn} from '@angular/forms';\nimport * as moment from 'moment/moment';\n\n/**\n * Form validator: Validates the single date time form control for min/max\n */\nexport class ApDateMinMaxValidator {\n static ValidateDateRange(minDate?: Date, maxDate?: Date): ValidatorFn {\n return (dateControl: AbstractControl): { [key: string]: boolean } | null => {\n if (!dateControl) {\n return null;\n }\n\n const currentValue = dateControl.value as Date;\n\n if (minDate && currentValue < minDate) {\n return {minDateFailed: true};\n }\n\n if (maxDate && currentValue > maxDate) {\n return {maxDateFailed: true};\n }\n\n return null;\n };\n }\n\n static getYearRangeFormatted(dateFormat: string, minDate?: Date, maxDate?: Date): string {\n return `${minDate ? moment(minDate).format(dateFormat) : ''} - ${maxDate ? moment(maxDate).format(dateFormat) : ''}`;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {map} from 'rxjs/operators';\nimport {FormGroup, ValidatorFn, Validators} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {\n ApOperationMode\n} from '../../../ap-interface/enums/ap-operation-mode.enum';\nimport {\n ApDynformsConfigFieldset\n} from '../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsValidator\n} from '../../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApNumberRangeValidator\n} from '../../../ap-dynforms/validators/ap-number-range-validator';\nimport {\n ApDynformsConfigTextbox\n} from '../../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {\n ApDynformsConfigComboBox\n} from '../../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {\n ApDynformsConfigDatepicker\n} from '../../../ap-dynforms/config/ap-dynforms-config-datepicker';\nimport {\n ApNutrientGroup\n} from '../../../ap-interface/enums/ap-nutrient-groups.enum';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApElementType\n} from '../../../ap-interface/enums/ap-elements-type.enum';\nimport {\n GetRoundNumericService\n} from '../../../ap-utils/service/get-round-numeric.service';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {\n FertilizerStore\n} from '../../../stores/base-data/fertilizer.store';\nimport {ElementsStore} from '../../../stores/common/elements.store';\nimport {\n OperationModesEnum,\n OperationModesStore\n} from '../../../stores/common/operation-modes.store';\nimport {\n GetElementService\n} from '../../../ap-utils/service/ap-get-element.service';\nimport {NutrientPlanningEntryService} from './nutrient-planning-entry.service';\nimport {INutrientPlaningSummaryData, INutrientPlanningEntryStepsConfig} from './nutrient-planning-types';\nimport {DriverStore} from '../../../stores/docu/driver.store';\nimport {InstrumentStore} from '../../../stores/docu/instrument.store';\nimport {MachineStore} from '../../../stores/docu/machine.store';\nimport {\n ApNutrientService\n} from '../../../ap-utils/service/ap-nutrient.service';\nimport {\n ApDynComponentComponent\n} from '../../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n ApApplicationMode\n} from '../../../ap-interface/enums/ap-application-mode.enums';\nimport {\n NutrientManagementService\n} from '../../../nutrient-management/service/nutrient-management.service';\nimport {\n ApNutrientWizardStep\n} from '../../../ap-interface/enums/ap-nutrient-wizard-setup.enums';\nimport {\n StatisticStore\n} from '../../../stores/statistic/statistic.store';\nimport {CombinedFertilizer} from '../../../types/common-types';\nimport {SettingsStore} from '../../../stores/base-data/settings.store';\nimport {UnitService} from '../../../services/data/unit.service';\nimport {\n ApDateMinMaxValidator\n} from '../../../ap-dynforms/validators/ap-date-min-max-validator';\nimport {\n LanguageStore\n} from '../../../stores/translation/language.store';\nimport {ApplicationModesEnum} from '../../../stores/common/appl-modes.store';\nimport ISettings = Data.BaseData.ISettings;\nimport IElement = Data.Common.IElement;\n\n@Injectable()\nexport class NutrientPlanningEntryDetailsStepService implements INutrientPlanningEntryStepsConfig {\n public fieldSetsUpdate$ = new BehaviorSubject([]);\n\n private _dynComponent: ApDynComponentComponent;\n private _isLock = false;\n private _settings: ISettings;\n private _elements: IElement[] = [];\n private _changedProductDropdownContent = new BehaviorSubject(0);\n private _isConstFieldDisabled: BehaviorSubject = new BehaviorSubject(false);\n private _nutrientUnitFertilizerLabel$: BehaviorSubject;\n private _amountUnitFertilizerLabel$: BehaviorSubject;\n private _constantUnitFertilizerLabel$: BehaviorSubject;\n private _totalSumUnitFertilizerLabel$: BehaviorSubject;\n private _minimumUnitFertilizerLabel$: BehaviorSubject;\n private _maximumUnitFertilizerLabel$: BehaviorSubject;\n private _subscriptions: Subscription[] = [];\n\n constructor(private fieldStore: FieldStore,\n private driverStore: DriverStore,\n private machineStore: MachineStore,\n private elementStore: ElementsStore,\n private settingsStore: SettingsStore,\n private statisticStore: StatisticStore,\n private instrumentStore: InstrumentStore,\n private fertilizerStore: FertilizerStore,\n private operationModesStore: OperationModesStore,\n private unitService: UnitService,\n private elementService: GetElementService,\n private nutrientService: ApNutrientService,\n private roundNumericService: GetRoundNumericService,\n private planningEntryService: NutrientPlanningEntryService,\n private nutrientManagementService: NutrientManagementService,\n private languageStore: LanguageStore) {\n }\n\n public initData(): void {\n this._nutrientUnitFertilizerLabel$ = new BehaviorSubject(this.planningEntryService.getElementLabelTranslation());\n this._amountUnitFertilizerLabel$ = new BehaviorSubject(this.unitService.getUnitWithLabelKey(null, 'Nutrients__Average_Amount_Goods'));\n this._constantUnitFertilizerLabel$ = new BehaviorSubject(this.unitService.getUnitWithLabelKey(null, 'Global__Const_Goods'));\n this._totalSumUnitFertilizerLabel$ = new BehaviorSubject(this.unitService.getUnitWithLabelKey(null, 'Global__Sum_Goods', false));\n this._minimumUnitFertilizerLabel$ = new BehaviorSubject(this.unitService.getUnitWithLabelKey(null, 'Global__Minimum_Goods'));\n this._maximumUnitFertilizerLabel$ = new BehaviorSubject(this.unitService.getUnitWithLabelKey(null, 'Global__Maximum_Goods'));\n this._settings = this.settingsStore.FirstSetting;\n this._elements = this.elementStore.Elements.filter(x => x.ShortDescription !== 'N');\n }\n\n public setSubscriptions(dynComponent: ApDynComponentComponent): void {\n this._dynComponent = dynComponent;\n this._subscriptions.push(this._dynComponent.dynForm.formValueChanges.subscribe(e => {\n this._onDetailsFormValueChanges(e.control, e.value);\n }));\n this._subscriptions.push(this.planningEntryService.activeWizardStep.subscribe(step => {\n if (step === ApNutrientWizardStep.Details) {\n this.statisticStore.removeStatisticData();\n this._setConstInputFieldAvailability();\n }\n }));\n }\n\n public clearData(): void {\n this._subscriptions.forEach(x => x.unsubscribe());\n }\n\n public getDetailFieldsetControls(): ApDynformsConfigFieldset[] {\n if (this.planningEntryService.summary.User_Operation_Mode_Const_Only) {\n this.planningEntryService.summary.User_Operation_Mode = ApOperationMode.Const;\n this.planningEntryService.summary.User_Appl_Mode = ApApplicationMode.Constant;\n }\n this._changedProductDropdownContent.next(0);\n if (this.planningEntryService.summary.User_Operation_Mode === ApOperationMode.AppMap) {\n return [\n this._informationFieldSet(),\n this._generalFieldSet(),\n this._productFieldSet(),\n this._agronomyFieldSet(),\n this._minMaxConstFieldSet(),\n this._documentFiledSet()\n ];\n } else {\n return [\n this._informationFieldSet(),\n this._generalFieldSet(),\n this._productFieldSet(),\n this._agronomyFieldSet(),\n this._documentFiledSet()\n ];\n }\n }\n\n public afterFieldsetInit(): void {\n if (this.planningEntryService.summary && this.planningEntryService.summary.Product_Id) {\n this._setFormLabels(this.planningEntryService.summary.Product_Id);\n }\n }\n\n public getFormValidators(): ApDynformsValidator[] {\n return [\n new ApDynformsValidator({\n validator: (frm: FormGroup): { mismatch: boolean } | null => {\n const userApplRate = frm.get('Amount_Nutrient')?.value;\n const amountNutrients = frm.get('Amount_Goods')?.value;\n const amountPercent = frm.get('Amount_Percent')?.value;\n if (!userApplRate && !amountNutrients && !amountPercent) {\n return {mismatch: true};\n }\n return null;\n },\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('User_Appl_Min', 'User_Appl_Const'),\n errorKey: 'Text_ValueInvalid'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('User_Appl_Const', 'User_Appl_Max'),\n errorKey: 'Text_ValueInvalid'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('User_Appl_Min', 'Amount_Goods'),\n errorKey: 'Text_ValueInvalid'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('Amount_Goods', 'User_Appl_Max'),\n errorKey: 'Text_ValueInvalid'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('User_Appl_Min', 'User_Appl_Max'),\n errorKey: 'Text_ValueInvalid'\n })\n ];\n }\n\n //#region \"Field Sets\"\n\n private _informationFieldSet(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'Global__Information',\n legend: 'Global__Information',\n config: [\n new ApDynformsConfigTextbox({\n key: 'AgriConnect__Count_Fields',\n label: 'AgriConnect__Count_Fields',\n disabled: true,\n value: this.planningEntryService.summary.Selected_Fields.length\n }),\n new ApDynformsConfigTextbox({\n key: 'Nutrients__TotalArea_ha',\n label: 'Nutrients__TotalArea_ha',\n disabled: true,\n value: this.roundNumericService.round(this.planningEntryService.summary.Selected_Fields\n .Reduce((target, e) => (this.fieldStore.getCurrentFieldGeom(e?.SourceItem)?.AreaHa ?? 0) + target, 0),\n this._settings.DigitsAfterDecimalPoint ?? 0)\n }),\n ],\n });\n }\n\n private _generalFieldSet(): ApDynformsConfigFieldset {\n const dateFormat = this.languageStore.Listen(l => l.selectedLanguage).getValue().DateFormat;\n if (this.planningEntryService.summary.User_Operation_Mode === ApOperationMode.Const) {\n return new ApDynformsConfigFieldset({\n key: 'Global__General_Information',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigComboBox({\n key: 'User_Operation_Mode',\n label: 'AgriConnect_Pages_Popups__Distribution',\n value: this.planningEntryService.summary.User_Operation_Mode,\n valueField: 'OperationModeId',\n textField: 'ApplicationModeKey',\n translate: true,\n options: this._getValuesForTypeDropDown(),\n disabled: this.planningEntryService.summary.User_Operation_Mode_Const_Only,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n ],\n valuePrimitive: true\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigDatepicker({\n key: 'User_Appl_Date',\n label: 'Nutrients__FertilizationDate',\n value: this.planningEntryService.summary.User_Appl_Date,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: ApDateMinMaxValidator.ValidateDateRange(this.planningEntryService.summary.MinDate, this.planningEntryService.summary.MaxDate),\n errorKey: ApDateMinMaxValidator.getYearRangeFormatted(dateFormat, this.planningEntryService.summary.MinDate, this.planningEntryService.summary.MaxDate)\n })\n ],\n minDate: this.planningEntryService.summary.MinDate,\n maxDate: this.planningEntryService.summary.MaxDate,\n infoText: ''\n }),\n new ApDynformsConfigTextbox({\n key: 'Title',\n label: 'Global__Note',\n value: this.planningEntryService.summary.Title,\n })\n ],\n });\n } else {\n return new ApDynformsConfigFieldset({\n key: 'Global__General_Information',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigComboBox({\n key: 'User_Operation_Mode',\n label: 'AgriConnect_Pages_Popups__Distribution',\n value: this.planningEntryService.summary.User_Operation_Mode,\n valueField: 'OperationModeId',\n textField: 'ApplicationModeKey',\n translate: true,\n options: this._getValuesForTypeDropDown(),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n ],\n valuePrimitive: true\n }),\n new ApDynformsConfigComboBox({\n key: 'Element',\n label: 'AgriConnect__Nutrient',\n value: this.planningEntryService.summary.Element,\n textField: 'Key',\n valueField: 'Id',\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n ],\n options: this._elements,\n translate: true,\n valuePrimitive: true,\n }),\n new ApDynformsConfigDatepicker({\n key: 'User_Appl_Date',\n label: 'Nutrients__FertilizationDate',\n value: this.planningEntryService.summary.User_Appl_Date,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: ApDateMinMaxValidator.ValidateDateRange(this.planningEntryService.summary.MinDate, this.planningEntryService.summary.MaxDate),\n errorKey: ApDateMinMaxValidator.getYearRangeFormatted(dateFormat, this.planningEntryService.summary.MinDate, this.planningEntryService.summary.MaxDate)\n })\n ],\n minDate: this.planningEntryService.summary.MinDate,\n maxDate: this.planningEntryService.summary.MaxDate,\n infoText: ''\n }),\n new ApDynformsConfigTextbox({\n key: 'Title',\n label: 'Global__Note',\n value: this.planningEntryService.summary.Title,\n })\n ],\n });\n }\n }\n\n private _productFieldSet(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'Global__Product',\n legend: 'Global__Product',\n config: [\n new ApDynformsConfigComboBox({\n key: 'Group',\n label: 'Global__Lbl_Group',\n options: [\n {key: ApNutrientGroup.Mineral, text: 'Nutrients_Pages_Popups__Inorganic'},\n {key: ApNutrientGroup.Organic, text: 'Nutrients_Pages_Popups__Organic'}\n ],\n textField: 'text',\n valueField: 'key',\n translate: true,\n value: this.planningEntryService.summary.Group_Id,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n ],\n valuePrimitive: true\n }),\n new ApDynformsConfigComboBox({\n key: 'Product_Id',\n label: 'Global__Product',\n valueField: 'Id',\n textField: 'Prodname',\n value: this.fertilizerStore.getFertilizer(this.planningEntryService.summary.Product_Id),\n options: combineLatest([\n this._changedProductDropdownContent.asObservable(),\n this.fertilizerStore.OrganicFertilizer$,\n this.fertilizerStore.InorganicFertilizer$\n ]).pipe(map(([_, organic, inorganic]) => {\n switch (this.planningEntryService.summary.Group_Id) {\n case ApNutrientGroup.Organic:\n return this._getFertilizerWithContent(this.planningEntryService.summary, organic);\n case ApNutrientGroup.Mineral:\n default:\n return this._getFertilizerWithContent(this.planningEntryService.summary, inorganic);\n }\n })),\n translate: true,\n validators: [\n new ApDynformsValidator({\n validator: Validators.min(1),\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n }),\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n })\n ],\n valuePrimitive: false\n }),\n ],\n });\n }\n\n private _agronomyFieldSet(): ApDynformsConfigFieldset {\n if (this.planningEntryService.summary.User_Operation_Mode === ApOperationMode.AppMap) {\n return new ApDynformsConfigFieldset({\n key: 'Global__Agronomy',\n legend: 'Global__Agronomy',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'Amount_Percent',\n label: 'Nutrients__Percentage_Remaining_Needs_2_%',\n value: this.planningEntryService.summary.Amount_Percent,\n infoText: 'Global_Percentage_Amount_Remaining_Needs_Applied_Field',\n formErrors: ['Settings__Msg_Vali_Value_Required'],\n min: 0,\n max: 100,\n decimals: 1\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigNumerictextbox({\n key: 'Amount_Nutrient',\n label$: this._nutrientUnitFertilizerLabel$,\n value: this._getNutrientAmountForAgronomyFieldSet(this.planningEntryService.summary.Element,\n this.planningEntryService.summary.Amount_Nutrient),\n infoText: 'Info_Uniform_BF',\n formErrors: ['Settings__Msg_Vali_Value_Required'],\n min: 0,\n decimals: this._settings?.DigitsAfterDecimalPoint ?? 0\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'Amount_Goods',\n label$: this._amountUnitFertilizerLabel$,\n value: this.planningEntryService.summary.Amount_Goods,\n infoText: 'Global_Average_Amount_Quantity_Applied_Field',\n formErrors: ['Settings__Msg_Vali_Value_Required', 'Text_ValueInvalid'],\n min: 0,\n decimals: this._settings?.DigitsAfterDecimalPoint ?? 0\n })\n ],\n });\n } else {\n return new ApDynformsConfigFieldset({\n key: 'Global__Agronomy',\n legend: 'Global__Agronomy',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'TotalSum',\n label$: this._totalSumUnitFertilizerLabel$,\n value: this.planningEntryService.getTotalSumValueFromConst(this.planningEntryService.summary.Amount_Goods,\n this.planningEntryService.summary.TotalFieldsArea),\n formErrors: ['Settings__Msg_Vali_Value_Required'],\n min: 0,\n decimals: this._settings.DigitsAfterDecimalPoint\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'Amount_Goods',\n label$: this._amountUnitFertilizerLabel$,\n value: this.planningEntryService.summary.Amount_Goods,\n infoText: 'Global_Average_Amount_Quantity_Applied_Field',\n formErrors: ['Settings__Msg_Vali_Value_Required'],\n min: 0,\n decimals: this._settings.DigitsAfterDecimalPoint\n }),\n ],\n });\n }\n }\n\n private _minMaxConstFieldSet(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'Min_Max_Const',\n legend: 'Global__Planning_Min_Max_Const',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'User_Appl_Min',\n label$: this._minimumUnitFertilizerLabel$,\n value: this.planningEntryService.summary.User_Appl_Min,\n min: 0,\n step: 1,\n decimals: 1,\n formErrors: ['Text_ValueInvalid'],\n infoText: 'Global_Minimum_Goods_Not_Fallen_Short_All_Fields'\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'User_Appl_Max',\n label$: this._maximumUnitFertilizerLabel$,\n value: this.planningEntryService.summary.User_Appl_Max,\n min: 0,\n step: 1,\n decimals: 1,\n formErrors: ['Text_ValueInvalid'],\n infoText: 'Global_Maximum_Goods_Not_Exceeded_All_Fields'\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'User_Appl_Const',\n label$: this._constantUnitFertilizerLabel$,\n value: this.planningEntryService.summary.User_Appl_Const,\n infoText: 'Global_Constant_Amount_Applied_Field_Absence_Gps',\n decimals: 1,\n min: 0,\n disabled$: this._isConstFieldDisabled.asObservable(),\n formErrors: ['Text_ValueInvalid'],\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n })\n ]\n }),\n new ApDynformsConfigPlaceholder()\n ],\n });\n }\n\n private _documentFiledSet(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'Docu',\n legend: 'Global__Documentation',\n config: [\n new ApDynformsConfigComboBox({\n key: 'Machine',\n label: 'Settings__Lbl_Menu_Devices',\n textField: 'NameWithSign',\n valueField: 'Id',\n valuePrimitive: false,\n value: this.planningEntryService.summary.Machine,\n options: this.machineStore.Listen(_ => _.data),\n sort: 1\n }),\n new ApDynformsConfigComboBox({\n key: 'Instrument',\n label: 'Docu_Ini__Tool',\n textField: 'Name',\n valueField: 'Id',\n valuePrimitive: false,\n value: this.planningEntryService.summary.Instrument,\n options: this.instrumentStore.Listen(s => s.data),\n sort: 1\n }),\n new ApDynformsConfigComboBox({\n key: 'Driver',\n label: 'Docu_Ini__Motorist',\n textField: 'ShortFullName',\n valueField: 'Id',\n valuePrimitive: false,\n value: this.planningEntryService.summary.Driver,\n options: this.driverStore.Listen(_ => _.data),\n sort: 1\n })\n ]\n });\n }\n\n //#endregion \"Field Sets\"\n\n //#region \"Form details changes\"\n\n private _onDetailsFormValueChanges(control: string, value: any): void {\n if (!control || this._isLock) {\n return;\n }\n const inputsToUpdate: { [key: string]: any } = {};\n if (control === 'User_Appl_Date') {\n this.planningEntryService.summary.User_Appl_Date = value as Date;\n }\n if (control === 'User_Operation_Mode') {\n this.planningEntryService.summary.User_Operation_Mode = value;\n // Konstant: Default Produktgruppe organisch wählen - insofern die Gruppe noch auf dem alten Default 0 steht\n if (this.planningEntryService.summary.User_Operation_Mode === ApOperationMode.Const) {\n if (this.planningEntryService.summary.Group_Id === 0) {\n this.planningEntryService.summary.Group_Id = ApNutrientGroup.Organic;\n }\n this.planningEntryService.summary.User_Appl_Mode = ApApplicationMode.Constant;\n // Leitnährstoff aus event. bereits gewähltem Produkt ermitteln\n // ggf. auch die Warenberechnung erneut durchführen, da bei Konstant die Ware nicht erneut berechnet wird\n this.planningEntryService.summary.Element =\n this.nutrientManagementService.getFertilizerLeadingElement(this.planningEntryService.summary.Product_Id)\n ?? ApElementType.P;\n } else {\n this.planningEntryService.summary.Element = ApElementType.P;\n this.planningEntryService.summary.User_Appl_Mode = ApApplicationMode.Variable;\n }\n this._cleanUpProductInput(inputsToUpdate);\n this._cleanUpAmountInputs(inputsToUpdate);\n this._setDetailsFormValues(inputsToUpdate);\n this.fieldSetsUpdate$.next(this.getDetailFieldsetControls());\n }\n if (control === 'Element') {\n this.planningEntryService.summary.Element = value;\n this._cleanUpProductInput(inputsToUpdate);\n this._cleanUpAmountInputs(inputsToUpdate);\n this._setDetailsFormValues(inputsToUpdate);\n this._changedProductDropdownContent.next(0);\n this._setConstInputFieldAvailability();\n }\n if (control === 'Title') {\n this.planningEntryService.summary.Title = value;\n }\n if (control === 'Group') {\n if (this.planningEntryService.summary.Group_Id === value) {\n this._setDetailsFormValues(inputsToUpdate);\n return;\n }\n this.planningEntryService.summary.Group_Id = value;\n // Reinnährstoff\n if (value === 0) {\n inputsToUpdate['Product_Id'] = null;\n this.planningEntryService.summary.Product_Id = 0;\n this._setFormLabels(0);\n } else {\n this._cleanUpProductInput(inputsToUpdate);\n }\n this._cleanUpAmountInputs(inputsToUpdate);\n this._setDetailsFormValues(inputsToUpdate);\n this._changedProductDropdownContent.next(0);\n }\n if (control === 'Product_Id') {\n this.planningEntryService.summary.Product_Id = value?.Id ?? 0;\n this._setFormLabels(this.planningEntryService.summary.Product_Id);\n if (this.planningEntryService.summary.Product_Id > 0) {\n if (this.planningEntryService.summary?.Amount_Nutrient > 0) {\n this.planningEntryService.summary.User_Appl_Unit = this.planningEntryService.getM3HaOrTHaOrKgHaUnitIdForOrganic(\n this.planningEntryService.summary.Group_Id,\n this.planningEntryService.summary.Product_Id);\n } else {\n this.planningEntryService.summary.User_Appl_Unit = this.planningEntryService.globalUnitPercent.Id;\n }\n if (this.planningEntryService.summary.User_Operation_Mode === ApOperationMode.Const) {\n // für const kann der Nutzer das Element nicht wählen → anhand von Leitnährstoff automatisch bestimmen\n this.planningEntryService.summary.Element =\n this.nutrientManagementService.getFertilizerLeadingElement(this.planningEntryService.summary.Product_Id)\n ?? ApElementType.P;\n }\n }\n this._cleanUpAmountInputs(inputsToUpdate);\n this._setDetailsFormValues(inputsToUpdate);\n }\n if (control === 'User_Appl_Const') {\n this.planningEntryService.summary.User_Appl_Const = value;\n }\n if (control === 'User_Appl_Min') {\n this.planningEntryService.summary.User_Appl_Min = value;\n }\n if (control === 'User_Appl_Max') {\n this.planningEntryService.summary.User_Appl_Max = value;\n }\n if (control === 'Amount_Nutrient') {\n this.planningEntryService.summary.Amount_Percent = null;\n this.planningEntryService.summary.User_Appl_Unit = this.planningEntryService.getM3HaOrTHaOrKgHaUnitIdForOrganic(\n this.planningEntryService.summary.Group_Id,\n this.planningEntryService.summary.Product_Id);\n const element: number = this._getElement_WorkaroundForSummariesOrPlanBooks(\n this.planningEntryService.summary);\n this.planningEntryService.summary.Amount_Nutrient = this.elementService.CalculateToElementByGivenValue(\n value, element, this._settings.IsOxidFarm, this._settings.IsOxidFarm);\n this.planningEntryService.summary.Amount_Goods = this.nutrientService.convertNutrientToGoods(\n this.planningEntryService.summary.Product_Id, element,\n this.planningEntryService.summary.Amount_Nutrient);\n inputsToUpdate['Amount_Goods'] = this.planningEntryService.summary.Amount_Goods;\n inputsToUpdate['Amount_Nutrient'] = value;\n inputsToUpdate['Amount_Percent'] = null;\n this._setDetailsFormValues(inputsToUpdate);\n }\n if (control === 'Amount_Goods' || control === 'TotalSum') {\n let totalSum = 0;\n let goodsAmount = 0;\n switch (control) {\n case 'Amount_Goods':\n totalSum = this.planningEntryService.getTotalSumValueFromConst(value,\n this.planningEntryService.summary.TotalFieldsArea);\n goodsAmount = value;\n break;\n case 'TotalSum':\n totalSum = value;\n goodsAmount = this.planningEntryService.getConstValueFromTotalSum(value,\n this.planningEntryService.summary.TotalFieldsArea);\n break;\n }\n this.planningEntryService.summary.Amount_Percent = null;\n this.planningEntryService.summary.User_Appl_Unit = this.planningEntryService.getM3HaOrTHaOrKgHaUnitIdForOrganic(\n this.planningEntryService.summary.Group_Id,\n this.planningEntryService.summary.Product_Id);\n const element: number = this._getElement_WorkaroundForSummariesOrPlanBooks(\n this.planningEntryService.summary);\n this.planningEntryService.summary.Amount_Goods = goodsAmount;\n this.planningEntryService.summary.Amount_Nutrient = this.nutrientService.convertGoodsToNutrient(\n this.planningEntryService.summary.Product_Id,\n element,\n goodsAmount,\n false);\n inputsToUpdate['TotalSum'] = totalSum;\n inputsToUpdate['Amount_Goods'] = this.planningEntryService.summary.Amount_Goods;\n inputsToUpdate['Amount_Nutrient'] = this.planningEntryService.summary.Amount_Nutrient;\n inputsToUpdate['Amount_Percent'] = this.planningEntryService.summary.Amount_Percent;\n this._setDetailsFormValues(inputsToUpdate);\n }\n if (control === 'Amount_Percent') {\n this.planningEntryService.summary.Amount_Nutrient = null;\n this.planningEntryService.summary.Amount_Goods = null;\n this.planningEntryService.summary.Amount_Percent = value;\n this.planningEntryService.summary.User_Appl_Unit = this.planningEntryService.globalUnitPercent.Id;\n inputsToUpdate['Amount_Nutrient'] = null;\n inputsToUpdate['Amount_Goods'] = null;\n inputsToUpdate['TotalSum'] = null;\n inputsToUpdate['Amount_Percent'] = value;\n this._setDetailsFormValues(inputsToUpdate);\n }\n if (control === 'Machine') {\n this.planningEntryService.summary.Machine = value;\n const formValues = this._dynComponent.dynForm.form.getRawValue();\n if (!formValues['Driver'] && value?.DefaultDriver) {\n inputsToUpdate['Driver'] = this.planningEntryService.summary.Driver = value.DefaultDriver;\n }\n if (!formValues['Instrument'] && value?.DefaultInstrument) {\n inputsToUpdate['Instrument'] = this.planningEntryService.summary.Instrument = value.DefaultInstrument;\n }\n this._setDetailsFormValues(inputsToUpdate);\n }\n if (control === 'Driver') {\n this.planningEntryService.summary.Driver = value;\n }\n if (control === 'Instrument') {\n this.planningEntryService.summary.Instrument = value;\n }\n }\n\n private _setDetailsFormValues(value: { [p: string]: any }): void {\n if (this._isLock) {\n return;\n }\n this._isLock = true;\n if (this._dynComponent.dynForm === undefined) {\n Object.keys(value).forEach(val => {\n const c = this._dynComponent.dynForm.form.get(val);\n if (c !== null && c.value !== value[val]) {\n c.setValue(value[val]);\n }\n }\n );\n setTimeout(() => this._isLock = false, 1);\n return;\n }\n Object.keys(value).forEach(val => {\n const c = this._dynComponent.dynForm.form.get(val);\n if (c !== null && c.value !== value[val]) {\n c.setValue(value[val]);\n }\n }\n );\n setTimeout(() => this._isLock = false, 1);\n }\n\n private _cleanUpProductInput(value: any): void {\n value['Product_Id'] = null;\n this.planningEntryService.summary.Product_Id = null;\n }\n\n private _cleanUpAmountInputs(value: any): void {\n value['Amount_Goods'] = null;\n value['TotalSum'] = null;\n value['Amount_Nutrient'] = null;\n value['Amount_Percent'] = null;\n value['User_Appl_Max'] = null;\n value['User_Appl_Min'] = null;\n value['User_Appl_Const'] = null;\n this.planningEntryService.summary.Amount_Goods = null;\n this.planningEntryService.summary.Amount_Nutrient = null;\n this.planningEntryService.summary.Amount_Percent = null;\n this.planningEntryService.summary.User_Appl_Max = null;\n this.planningEntryService.summary.User_Appl_Min = null;\n this.planningEntryService.summary.User_Appl_Const = null;\n }\n\n //#endregion \"Form details changes\"\n\n //#region \"Private methods\"\n\n // Workaround for summaries/plan books with the wrong element (might be due to migration from 4.8)\n private _getElement_WorkaroundForSummariesOrPlanBooks(summary: INutrientPlaningSummaryData): number {\n return summary.User_Operation_Mode === ApOperationMode.Const\n ? this.nutrientService.getFertilizerLeadingElement(summary.Product_Id)\n : summary.Element;\n }\n\n private _getNutrientAmountForAgronomyFieldSet(element: ApElementType, nutrientAmount: number): number | null {\n if (!this._settings.IsOxidFarm) {\n return nutrientAmount;\n }\n return this.elementService.CalculateToElementByGivenValue(nutrientAmount, element, false, true);\n }\n\n private _getFertilizerWithContent(summary: INutrientPlaningSummaryData, fertilizers: CombinedFertilizer[]): CombinedFertilizer[] {\n const fertList: CombinedFertilizer[] = [];\n // If constant → show all fertilizers (not restricted to element)\n if (summary?.User_Operation_Mode === ApOperationMode.Const) {\n fertilizers.forEach((i: any): void => {\n if (i.ContentP !== 0 || i.ContentK !== 0 || i.ContentMg !== 0 || i.ContentCaO !== 0) {\n fertList.Add(i);\n }\n });\n } else {\n const element = summary?.Element;\n fertilizers.forEach((i: any): void => {\n switch (true) {\n case (element === 1 && i.ContentP > 0):\n case (element === 2 && i.ContentK > 0):\n case (element === 3 && i.ContentMg > 0):\n case (element === 4 && i.ContentCaO > 0):\n case (element === 5 && i.ContentN > 0):\n fertList.Add(i);\n break;\n }\n });\n }\n return fertList.sort((first, second) => {\n if (first.Prodname == null) {\n return 1;\n }\n if (second.Prodname == null) {\n return -1;\n }\n return first.Prodname.localeCompare(second.Prodname);\n });\n }\n\n private _setConstInputFieldAvailability(): void {\n const applicationModes = this.planningEntryService.summary.Selected_Fields.map(selectedField => {\n const modesAndStatusForPlan = this.planningEntryService.getModesAndStatusForPlan(selectedField,\n this.planningEntryService.summary.Element);\n return modesAndStatusForPlan.ApplicationMode;\n });\n const isAllFieldsVariable = applicationModes.every(x => x === ApApplicationMode.Variable);\n if (this._isConstFieldDisabled.getValue() !== isAllFieldsVariable) {\n this._isConstFieldDisabled.next(isAllFieldsVariable);\n }\n }\n\n private _setFormLabels(productId: number): void {\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n this._amountUnitFertilizerLabel$.next(this.unitService.getUnitWithLabelKey(fertilizer?.Unit, 'Nutrients__Average_Amount_Goods'));\n this._constantUnitFertilizerLabel$.next(this.unitService.getUnitWithLabelKey(fertilizer?.Unit, 'Global__Const_Goods'));\n this._totalSumUnitFertilizerLabel$.next(this.unitService.getUnitWithLabelKey(fertilizer?.Unit, 'Global__Sum_Goods', false));\n this._minimumUnitFertilizerLabel$.next(this.unitService.getUnitWithLabelKey(fertilizer?.Unit, 'Global__Minimum_Goods'));\n this._maximumUnitFertilizerLabel$.next(this.unitService.getUnitWithLabelKey(fertilizer?.Unit, 'Global__Maximum_Goods'));\n }\n\n private _getValuesForTypeDropDown(): { OperationModeId: number, ApplicationModeKey: string }[] {\n const operationModes = this.operationModesStore.OperationModes;\n const operationModeConst = operationModes.find(x => x.Key === OperationModesEnum.Constant);\n const operationModeApplicationMap = operationModes.find(x => x.Key === OperationModesEnum.ApplicationMap);\n return [\n {\n OperationModeId: operationModeConst.Id,\n // TODO: temporary work around because of changes for ApplicationMap in N-Fertilization module\n ApplicationModeKey: ApplicationModesEnum.Constant\n },\n {\n OperationModeId: operationModeApplicationMap.Id,\n // TODO: temporary work around because of changes for ApplicationMap in N-Fertilization module\n ApplicationModeKey: ApplicationModesEnum.Variable\n }\n ];\n }\n\n //#endregion \"Private methods\"\n}\n","import {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {\n EventEmitter,\n Injectable\n} from '@angular/core';\nimport {\n filter,\n map\n} from 'rxjs/operators';\nimport {\n FormGroup,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport {\n ObjectFactory\n} from 'ts-tooling';\nimport {\n ApDynGridPagerWizardBreadcrumbsStepper,\n ApDynGridPagerWizardButton,\n ApDynGridPagerWizardConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {\n ApDynGridColumnConfigBase,\n ApDynGridColumnHideConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {\n ApDynGridEditColumnConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-edit-column-config';\nimport {\n ApElementOxydTypeEnum,\n ApStatsType,\n MapViewMode\n} from '../../../ap-interface';\nimport {\n ApElementType\n} from '../../../ap-interface/enums/ap-elements-type.enum';\nimport {\n MapViewStore\n} from '../../../stores/layout/mapview.store';\nimport {\n ApGuidUtil,\n GetRoundNumericPipe\n} from '../../../ap-utils';\nimport {\n GetElementService\n} from '../../../ap-utils/service/ap-get-element.service';\nimport {\n FieldStore\n} from '../../../stores/farm/field.store';\nimport {\n NutrientStore\n} from '../../../stores/nutrients/nutrient.store';\nimport {\n GetRoundNumericService\n} from '../../../ap-utils/service/get-round-numeric.service';\nimport {\n GetApplicationModeService\n} from '../../../ap-utils/service/ap-get-applicationmode.service';\nimport {\n LoginStore\n} from '../../../stores/login/login.store';\nimport {\n FertilizerStore\n} from '../../../stores/base-data/fertilizer.store';\nimport {\n CropTypeStore\n} from '../../../stores/base-data/crop.types.store';\nimport {\n ApDynformsValidator\n} from '../../../ap-dynforms/ap-dynforms-validator';\nimport {\n ApNumberRangeValidator\n} from '../../../ap-dynforms/validators/ap-number-range-validator';\nimport {\n ApDynformsConfigFieldset\n} from '../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApNutrientService\n} from '../../../ap-utils/service/ap-nutrient.service';\nimport {\n ApApplicationMode\n} from '../../../ap-interface/enums/ap-application-mode.enums';\nimport {\n IModalDialogData,\n ModalDialogButtonDisable\n} from '../../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {\n ModalDialogStore\n} from '../../../stores/dialog/modal.dialog.store';\nimport {\n TranslationStore\n} from '../../../stores/translation/translation.store';\nimport {\n ApUtilService\n} from '../../../ap-utils/service/ap-util.service';\nimport {\n NutrientPlanningEntryService\n} from './nutrient-planning-entry.service';\nimport {\n CalculationValuesInput,\n CalculationValuesOutput,\n EditPlanningDataFormType,\n FieldGeomAndPlanId,\n INutrientPlaningData,\n INutrientPlanningEntryStepsConfig,\n PlanningEntryDataToEdit,\n UpdatedPlanningEntry\n} from './nutrient-planning-types';\nimport {\n MapStore\n} from '../../../stores/map/map.store';\nimport {\n FertilizerService\n} from '../../../services/data/fertilizer.service';\nimport {\n ApOperationMode\n} from '../../../ap-interface/enums/ap-operation-mode.enum';\nimport {\n ApDynComponentComponent\n} from '../../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n RouterStore\n} from '../../../stores/router/router.store';\nimport {\n ApNutrientWizardStep\n} from '../../../ap-interface/enums/ap-nutrient-wizard-setup.enums';\nimport {\n IPlanningWizardOverviewStatsItem,\n PlanningWizardOverviewModuleStats\n} from '../../../statistics/components/charts/planning-wizard-overview-stats/ap-planning-wizard-overview-stats-types';\nimport {\n ApTranslationService\n} from '../../../ap-utils/service/ap-translation.service';\nimport {\n OperationModesStore\n} from '../../../stores/common/operation-modes.store';\nimport {\n BaseFertilizationService\n} from '../../../services/data/base-fertilization.service';\nimport {\n StatisticStore\n} from '../../../stores/statistic/statistic.store';\nimport {\n NutrientManagementService\n} from '../../../nutrient-management/service/nutrient-management.service';\nimport {\n SettingsStore\n} from '../../../stores/base-data/settings.store';\nimport {\n LanguageStore\n} from '../../../stores/translation/language.store';\nimport {\n MapFactoryStyler\n} from '../../../map-factory/style';\nimport {\n ApGetCropService\n} from '../../../stores/services/ap-get-crop.service';\nimport {\n CampaignYearService\n} from '../../../services/data/campaign-year.service';\nimport {\n CropRotationYield\n} from '../../../stores/farm/crop.rotation.store';\nimport {\n UnitService\n} from '../../../services/data/unit.service';\nimport {\n StatisticService\n} from '../../../services/data/statistic.service';\nimport IGuid = System.IGuid;\nimport ISettings = Data.BaseData.ISettings;\nimport IField = Data.FieldManagement.IField;\nimport IFieldNutrientPlanningStatistic = Data.Nutrients.IFieldNutrientPlanningStatistic;\nimport {\n NutrientPlanningEntrySelectionStepService\n} from './nutrient-planning-entry-selection-step.service';\nimport {\n BaseFertilizationCommonService\n} from '../../../nutrient-management/service/base-fertilization-common.service';\n\n@Injectable()\nexport class NutrientPlanningEntryOverviewStepService implements INutrientPlanningEntryStepsConfig {\n private _dynComponent: ApDynComponentComponent;\n private _isLocked: boolean;\n private _settings: ISettings;\n private _fieldGeomIdPlanId: FieldGeomAndPlanId[] = [];\n private _updatedPlanningEntries: UpdatedPlanningEntry[] = [];\n private _subscriptions: Subscription[] = [];\n private _selectedGridFields = new BehaviorSubject([]);\n private _onSave = new EventEmitter();\n private _goBackToDetails = new EventEmitter();\n private _goBackToSelection = new EventEmitter();\n private _canSave = new BehaviorSubject(false);\n private _updateFormValuesBehavior = new BehaviorSubject(null);\n\n constructor(private mapStore: MapStore,\n private fieldStore: FieldStore,\n private loginStore: LoginStore,\n private routerStore: RouterStore,\n private mapViewStore: MapViewStore,\n private languageStore: LanguageStore,\n private settingsStore: SettingsStore,\n private cropTypeStore: CropTypeStore,\n private statisticStore: StatisticStore,\n private fertilizerStore: FertilizerStore,\n private modalDialogStore: ModalDialogStore,\n private translationStore: TranslationStore,\n private nutrientPlanningStore: NutrientStore,\n private operationModesStore: OperationModesStore,\n private unitService: UnitService,\n private cropService: ApGetCropService,\n private elementService: GetElementService,\n private nutrientService: ApNutrientService,\n private statisticService: StatisticService,\n private fertilizerService: FertilizerService,\n private translationService: ApTranslationService,\n private campaignYearService: CampaignYearService,\n private roundNumericService: GetRoundNumericService,\n private applicationModeService: GetApplicationModeService,\n private planningEntryService: NutrientPlanningEntryService,\n private baseFertilizationService: BaseFertilizationService,\n private nutrientManagementService: NutrientManagementService,\n private baseFertilizationCommonService: BaseFertilizationCommonService,\n private roundNumericPipe: GetRoundNumericPipe) {\n }\n\n public initData(): void {\n this._isLocked = false;\n this._settings = this.settingsStore.FirstSetting;\n }\n\n public setSubscriptions(dynComponent: ApDynComponentComponent): void {\n this._dynComponent = dynComponent;\n this._subscriptions.push(this._dynComponent.SelectedItems$.subscribe(selected => {\n this._onSelectionChange(selected);\n }));\n this._subscriptions.push(this._goBackToDetails.subscribe(_ => {\n this._clearValues();\n this.planningEntryService.activeWizardStep.next(ApNutrientWizardStep.Details);\n }));\n this._subscriptions.push(this._goBackToSelection.subscribe(_ => {\n this._clearValues();\n this.planningEntryService.activeWizardStep.next(ApNutrientWizardStep.Selection);\n }));\n this._subscriptions.push(this.nutrientPlanningStore.FieldNutrientPlanningStatistic$.subscribe(statistic => {\n if (this.planningEntryService.activeWizardStep.getValue() === ApNutrientWizardStep.Overview) {\n this._listenNutrientPlanningStatistics(statistic);\n }\n }));\n this._subscriptions.push(this._onSave.subscribe(() => {\n if (this.planningEntryService.activeWizardStep.getValue() === ApNutrientWizardStep.Overview) {\n this.planningEntryService.savePlannings();\n this.planningEntryService.closeForm.emit();\n }\n }));\n this._subscriptions.push(this.mapStore.Layers.OnLayerChange.subscribe(() => {\n if (this.planningEntryService.activeWizardStep.getValue() === ApNutrientWizardStep.Overview) {\n this.baseFertilizationCommonService.handleLegends(this._dynComponent.items?.length ?? 0, ['TaskMgmtLegend']);\n const disableLayers = [this.mapStore.Layers.TaskManagementLayer?.name];\n this.baseFertilizationCommonService.handleLayers(disableLayers, []);\n }\n }));\n }\n\n public clearData(): void {\n this._subscriptions.forEach(x => x.unsubscribe());\n this._updateFormValuesBehavior?.unsubscribe();\n this._clearValues();\n }\n\n public getPager(): ApDynGridPagerWizardConfig {\n return new ApDynGridPagerWizardConfig(\n new ApDynGridPagerWizardButton('Global_Back_With_Arrow', this._goBackToDetails, {id: 'button_prev'}),\n new ApDynGridPagerWizardBreadcrumbsStepper(['Global__Selection', 'Global__Details', 'Admin_Pages__Overview'], 2),\n new ApDynGridPagerWizardButton('Global__Save', this._onSave, {\n active: this._canSave,\n id: 'button_save'\n }),\n );\n }\n\n public getColumns(): Observable {\n return combineLatest([\n this.settingsStore.FirstSetting$,\n this.languageStore.SelectedLanguage$\n ]).pipe(\n filter(([settings, language]) => !!settings && !!language),\n map(([settings, language]) => ({settings, language})),\n map((p) => {\n return [\n new ApDynGridStatusColumnConfig({\n field: 'Status',\n class: 'StatusClass',\n description: 'StatusDesc',\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Nr',\n title: 'Docu_Ini__Number',\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n headerFilterable: true,\n width: 60,\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'TNr',\n title: 'Docu_Ini_Subnumber',\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n headerFilterable: true,\n width: 60,\n hide: true,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'NrTNr',\n title: 'Docu_Ini__Number',\n headerFilterable: true,\n filterable: true,\n width: 70,\n hide: new ApDynGridColumnHideConfig({\n selfHide: this.mapViewStore.Listen(s => s.mode).pipe(map((mode) => mode === MapViewMode.HIDE))\n })\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Name',\n title: 'Docu_Ini__Name',\n filterable: true,\n headerFilterable: true,\n width: 180,\n sortIndex: 0\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Area',\n title: 'Docu_Ini__Area',\n filterable: true,\n headerFilterable: true,\n filterType: FilterType.NUMBER,\n hide: true,\n cssClass: 'right',\n width: 60,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Distribution',\n title: 'Nutrients_Pages_Popups__Distribution',\n width: 80,\n filterable: true\n }),\n new ApDynGridGroupColumnConfig({\n title: this._getUnitWithLabelKey(this.planningEntryService.summary.Product_Id, 'Global__Product'),\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n field: 'Product',\n filterable: true,\n title: 'Global__Product',\n width: 100\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Amount',\n filterable: true,\n filterType: FilterType.NUMBER,\n title: 'Global__Average',\n width: 60,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Min',\n filterable: true,\n filterType: FilterType.NUMBER,\n title: 'Global__MinShort',\n width: 60,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }],\n tooltip: (dataItem) => dataItem['ErrorMessage'],\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Max',\n filterable: true,\n filterType: FilterType.NUMBER,\n title: 'Global__MaxShort',\n width: 60,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }]\n }),\n ]\n }),\n new ApDynGridGroupColumnConfig({\n title: 'Global__Average_Symbol_Nutrient_kg_ha',\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: this.elementService.GetElementStringByString(ApElementType.P),\n field: 'P',\n filterable: true,\n filterType: FilterType.NUMBER,\n width: 60,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: this.elementService.GetElementStringByString(ApElementType.K),\n field: 'K',\n filterable: true,\n filterType: FilterType.NUMBER,\n width: 60,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: this.elementService.GetElementStringByString(ApElementType.Mg),\n field: 'Mg',\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n width: 60,\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Nutrients__CaO',\n field: 'CaO',\n filterable: true,\n filterType: FilterType.NUMBER,\n width: 60,\n cssClass: 'right',\n columnLoading: 'ColumnLoading',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [p.settings.DigitsAfterDecimalPoint]\n }]\n }),\n ],\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Nutrients__FertilizationDate',\n field: 'Appl_Date',\n format: p.language.DateFormat,\n filterable: true,\n filterType: FilterType.DATE,\n width: 80\n }),\n new ApDynGridGroupColumnConfig({\n title: 'agrioptions_resources',\n hide: true,\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n field: 'Machine.NameWithSign',\n title: 'Base__Engine',\n width: 100,\n hide: true,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Instrument.Name',\n title: 'AgriConnect_Ini__Tool',\n width: 100,\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Driver.ShortFullName',\n title: 'Docu_Ini__Motorist',\n width: 100,\n hide: true\n }),\n ]\n }),\n new ApDynGridEditColumnConfig({\n data: [\n {\n text: 'Global__Edit',\n callback: ApUtilService.createEventEmitter(this._onEdit.bind(this), this._subscriptions),\n disabled: (dataItem: any) => dataItem.ColumnLoading\n },\n {\n text: 'Global__Delete',\n callback: ApUtilService.createEventEmitter(this._onDelete.bind(this), this._subscriptions),\n disabled: (dataItem: any) => dataItem.ColumnLoading\n }\n ]\n })\n ];\n })\n );\n }\n\n public getItems(): Observable {\n this._updatedPlanningEntries = [];\n const selectedFieldsId = this.planningEntryService.summary.Selected_Fields.map(x => x.Id as IGuid);\n this._selectedGridFields.next([...this.fieldStore.getFieldsById(selectedFieldsId)]);\n this._calculatePlanningRaster();\n this._generateOverviewStatistic([]);\n return combineLatest([\n this._selectedGridFields,\n this.nutrientPlanningStore.Listen(s => s.fieldNutrientPlanningStatistic),\n this.settingsStore.FirstSetting$\n ]).pipe(\n map(([selectedGridFields, nutrientPlanningStatistics, settings]) => {\n const ids = selectedGridFields.map(x => x.Id as IGuid);\n const fields = this.fieldStore.getFieldsById(ids);\n return fields.map(field => this._generateGridItem(field, nutrientPlanningStatistics, settings));\n })\n );\n }\n\n //#region \"Burger menu logic\"\n\n private _onDelete(dataItem: any): void {\n if (this.planningEntryService.summary.Nutrient_Planing_Data.some(x => x.Plan_Id === dataItem.Plan_Id)) {\n this.planningEntryService.summary.Nutrient_Planing_Data =\n this.planningEntryService.summary.Nutrient_Planing_Data.filter(x => x.Plan_Id !== dataItem.Plan_Id);\n }\n if (this._updatedPlanningEntries.some(x => x.PlanId === dataItem.Plan_Id)) {\n this._updatedPlanningEntries = this._updatedPlanningEntries.filter(x => x.PlanId !== dataItem.Plan_Id);\n }\n if (this.planningEntryService.summary.Selected_Fields.some(x => x.Id === dataItem.Field_Id)) {\n const filteredFields = this.planningEntryService.summary.Selected_Fields.filter(x => x.Id !== dataItem.Field_Id);\n this.planningEntryService.summary.Selected_Fields = filteredFields;\n const filteredSelectedGridFields = this._selectedGridFields.getValue().filter(x => filteredFields.some(y => y.Id === x.Id));\n this._selectedGridFields.next(filteredSelectedGridFields);\n }\n this.nutrientPlanningStore.removeNutrientPlanningStatisticFromStore(dataItem.Plan_Id);\n if (this.planningEntryService.summary.Nutrient_Planing_Data.length === 0) {\n this._goBackToSelection.emit();\n }\n }\n\n private _onEdit(dataItem: any): void {\n const nutrientAmount = dataItem[ApElementType[dataItem.Element]] ?? 0;\n const remainDemands = this.planningEntryService.getRemainDemands(dataItem.RbStatistic);\n const leadNutrientRemainDemandType = remainDemands.find(x => x.ElementType === dataItem.Element);\n const remainDemandTypeAmount = this.elementService.CalculateElementOxidValueByElementType(\n leadNutrientRemainDemandType.Amount === '-' ? 0 : leadNutrientRemainDemandType.Amount,\n leadNutrientRemainDemandType.ElementType\n );\n const recentFormData: EditPlanningDataFormType = {\n GoodsAmount: null,\n NutrientAmount: null,\n PercentAmount: null,\n ApplMin: this.planningEntryService.summary?.User_Appl_Min ?? null,\n ApplMax: this.planningEntryService.summary?.User_Appl_Max ?? null,\n ApplConst: this.planningEntryService.summary?.User_Appl_Const ?? null,\n TotalSum: null\n };\n if (this.planningEntryService.isKgPerHOrM3PerHOrTPerHUnit(dataItem.Unit)) {\n recentFormData.NutrientAmount = nutrientAmount;\n recentFormData.GoodsAmount = dataItem.Amount;\n } else {\n let percentAmount = this.planningEntryService.summary.Amount_Percent;\n if (remainDemandTypeAmount > 0) {\n percentAmount = ((remainDemandTypeAmount - nutrientAmount) / remainDemandTypeAmount) * 100;\n percentAmount = 100 - percentAmount;\n percentAmount = percentAmount <= 0 ? 100 : percentAmount;\n }\n recentFormData.PercentAmount = percentAmount;\n }\n const historyUpdateValues = this._updatedPlanningEntries.find(x => x.PlanId === dataItem.Plan_Id);\n if (historyUpdateValues) {\n recentFormData.ApplMin = historyUpdateValues.ApplMin;\n recentFormData.ApplMax = historyUpdateValues.ApplMax;\n recentFormData.ApplConst = historyUpdateValues.ApplConst;\n }\n recentFormData.TotalSum = this.planningEntryService.getTotalSumValueFromConst(recentFormData.ApplConst, dataItem.Area);\n this.modalDialogStore.setModalDialogData({\n buttons: [\n {\n key: 'cancel',\n text: 'Global__Cancel',\n primary: false\n },\n {\n key: 'apply',\n text: 'Global__Ok',\n primary: true,\n disable: ModalDialogButtonDisable.FormInvalid,\n }\n ],\n show: true,\n title: this.translationStore.FindTranslationForSelectedLanguage('Docu_Ini__Edit'),\n formConfig: {\n fieldSets: this._getFieldSetForEdit(dataItem, this._updateFormValuesBehavior),\n validators: this._getValidatorsForFieldSetForEdit(dataItem),\n width: 500,\n values: ObjectFactory.Copy(recentFormData)\n }\n } as IModalDialogData);\n const listenFormValuesSubscription = this.modalDialogStore.listenChanges()\n .subscribe(values => this._onFormChanges(dataItem, values, recentFormData));\n const resultSubscription = this.modalDialogStore.Listen(s => s.result)\n .subscribe((result) => {\n const resultKey = result?.key;\n if (resultKey === 'apply' || resultKey === 'cancel' || resultKey === '') {\n if (resultKey === 'apply') {\n const formValues = result?.formValues as EditPlanningDataFormType;\n if (!formValues) {\n return;\n }\n this._onFormConfirmed(dataItem, formValues, recentFormData);\n }\n this._updateFormValuesBehavior.next(null);\n this.modalDialogStore.setFormValues(null);\n listenFormValuesSubscription.unsubscribe();\n resultSubscription.unsubscribe();\n }\n });\n }\n\n private _onFormChanges(dataItem: any, values: any, recentFormData: EditPlanningDataFormType): void {\n if (this._isLocked || !values || Object.keys(values).length === 0) {\n return;\n }\n const formValues = values as EditPlanningDataFormType;\n if (!formValues || ObjectFactory.Equal(recentFormData, formValues)) {\n return;\n }\n if (formValues.PercentAmount !== undefined && recentFormData.PercentAmount !== formValues.PercentAmount) {\n recentFormData.NutrientAmount = formValues.NutrientAmount = null;\n recentFormData.GoodsAmount = formValues.GoodsAmount = null;\n recentFormData.PercentAmount = formValues.PercentAmount;\n }\n if (formValues.NutrientAmount !== undefined && recentFormData.NutrientAmount !== formValues.NutrientAmount) {\n recentFormData.NutrientAmount = formValues.NutrientAmount;\n recentFormData.PercentAmount = formValues.PercentAmount = null;\n const elementNutrientAmount = this.elementService.CalculateToElementByGivenValue(\n formValues.NutrientAmount, dataItem.Element, this._settings.IsOxidFarm, this._settings.IsOxidFarm);\n recentFormData.GoodsAmount = formValues.GoodsAmount = this.nutrientService.convertNutrientToGoods(\n dataItem.Product_Id,\n dataItem.Element,\n elementNutrientAmount);\n }\n if (formValues.GoodsAmount !== undefined && recentFormData.GoodsAmount !== formValues.GoodsAmount) {\n recentFormData.GoodsAmount = formValues.GoodsAmount;\n recentFormData.PercentAmount = formValues.PercentAmount = null;\n recentFormData.NutrientAmount = formValues.NutrientAmount = this.nutrientService.convertGoodsToNutrient(\n dataItem.Product_Id, dataItem.Element, formValues.GoodsAmount, this._settings.IsOxidFarm);\n }\n if (dataItem.Operation_Mode === ApOperationMode.Const) {\n if (formValues.ApplConst !== undefined && recentFormData.ApplConst !== formValues.ApplConst) {\n recentFormData.ApplConst = formValues.ApplConst;\n recentFormData.TotalSum = formValues.TotalSum = this.planningEntryService.getTotalSumValueFromConst(\n recentFormData.ApplConst, dataItem.Area);\n recentFormData.ApplMax = formValues.ApplMax = formValues.ApplConst;\n recentFormData.ApplMin = formValues.ApplMin = formValues.ApplConst;\n }\n if (formValues.TotalSum !== undefined && recentFormData.TotalSum !== formValues.TotalSum) {\n recentFormData.TotalSum = formValues.TotalSum;\n recentFormData.ApplConst = formValues.ApplConst = this.planningEntryService.getConstValueFromTotalSum(\n recentFormData.TotalSum, dataItem.Area);\n recentFormData.ApplMax = formValues.ApplMax = recentFormData.ApplConst;\n recentFormData.ApplMin = formValues.ApplMin = recentFormData.ApplConst;\n }\n }\n this._isLocked = true;\n this._updateFormValuesBehavior.next(formValues);\n setTimeout(() => this._isLocked = false, 10);\n }\n\n private _onFormConfirmed(dataItem: any, formValues: EditPlanningDataFormType, recentFormData: EditPlanningDataFormType): void {\n let nutrientAmountInElement: number | null = null;\n if (formValues.NutrientAmount) {\n nutrientAmountInElement = this.elementService.CalculateToElementByGivenValue(\n formValues.NutrientAmount, dataItem.Element, this._settings.IsOxidFarm, this._settings.IsOxidFarm);\n }\n const applConst = formValues.ApplConst ?? recentFormData.ApplConst;\n const singlePlanData: PlanningEntryDataToEdit = {\n PlanId: dataItem.Plan_Id,\n NutrientAmount: nutrientAmountInElement ?? applConst,\n PercentAmount: formValues.PercentAmount,\n ApplMin: formValues.ApplMin,\n ApplMax: formValues.ApplMax,\n ApplConst: applConst\n };\n this._recalculateRasterSinglePlan(singlePlanData);\n const existingUpdatedPlanningEntry = this._updatedPlanningEntries.find(x => x.PlanId === singlePlanData.PlanId);\n if (existingUpdatedPlanningEntry) {\n existingUpdatedPlanningEntry.ApplMin = singlePlanData.ApplMin;\n existingUpdatedPlanningEntry.ApplMax = singlePlanData.ApplMax;\n existingUpdatedPlanningEntry.ApplConst = singlePlanData.ApplConst;\n } else {\n this._updatedPlanningEntries.push({\n PlanId: singlePlanData.PlanId,\n ApplMin: singlePlanData.ApplMin,\n ApplMax: singlePlanData.ApplMax,\n ApplConst: singlePlanData.ApplConst\n });\n }\n }\n\n private _recalculateRasterSinglePlan(singlePlanToEdit: PlanningEntryDataToEdit): void {\n if (!singlePlanToEdit) {\n return;\n }\n const singlePlan = this.planningEntryService.summary.Nutrient_Planing_Data.find(x => x.Plan_Id === singlePlanToEdit.PlanId);\n if (!singlePlan) {\n return;\n }\n const calculationValues = this._getValuesForCalculation({\n ProductId: this.planningEntryService.summary.Product_Id,\n ApplConst: singlePlanToEdit.ApplConst,\n UnitId: this._getUnitIdAccordingToPercentAmount(singlePlanToEdit.PercentAmount),\n ElementId: singlePlan.Element,\n Amount: singlePlanToEdit.PercentAmount ?? singlePlanToEdit.NutrientAmount,\n ApplMin: singlePlanToEdit.ApplMin,\n ApplMax: singlePlanToEdit.ApplMax\n });\n singlePlan.Ready_Calculated = false;\n singlePlan.Unit = calculationValues.UnitId;\n singlePlan.Appl_Rate = calculationValues.ApplRate;\n singlePlan.Appl_Min = calculationValues.ApplMin;\n singlePlan.Appl_Max = calculationValues.ApplMax;\n singlePlan.Appl_Const = calculationValues.ApplConst;\n singlePlan.Statistic = null;\n singlePlan.RbStatistic = null;\n const nutrientAmount = this.planningEntryService.isKgPerHOrM3PerHOrTPerHUnit(calculationValues.UnitId)\n ? calculationValues.ApplRate\n : 0;\n const percentAmount = !this.planningEntryService.isKgPerHOrM3PerHOrTPerHUnit(calculationValues.UnitId)\n ? calculationValues.ApplRate\n : 0;\n this._canSave.next(false);\n this.nutrientPlanningStore.startNutrientPlanning(\n singlePlan.Plan_Id,\n singlePlan.Field_Geom_Id,\n singlePlan.Element,\n this.planningEntryService.summary.Product_Id,\n singlePlan.Operation_Mode,\n nutrientAmount,\n percentAmount,\n calculationValues.ApplMin,\n calculationValues.HasApplMin,\n calculationValues.ApplMax,\n calculationValues.HasApplMax,\n singlePlan.Appl_Mode === ApApplicationMode.Variable ? calculationValues.ApplConst : 0,\n singlePlan.Appl_Mode === ApApplicationMode.Constant ? calculationValues.ApplConst : 0\n );\n }\n\n private _getValuesForCalculation(values: CalculationValuesInput, withOxide: boolean = false): CalculationValuesOutput {\n let applConst = 0;\n if (!!values.ApplConst) {\n applConst = this.nutrientService.convertGoodsToNutrient(\n values.ProductId,\n values.ElementId,\n values.ApplConst,\n withOxide);\n }\n let applMin = 0;\n let applMinHasValue = false;\n if (!!values.ApplMin) {\n applMin = this.nutrientService.convertGoodsToNutrient(\n values.ProductId,\n values.ElementId,\n values.ApplMin,\n withOxide);\n applMinHasValue = true;\n }\n let applMax = 0;\n let applMaxHasValue = false;\n if (!!values.ApplMax) {\n applMax = this.nutrientService.convertGoodsToNutrient(\n values.ProductId,\n values.ElementId,\n values.ApplMax,\n withOxide);\n applMaxHasValue = true;\n }\n const applUnitId: number = this.planningEntryService.isKgPerHOrM3PerHOrTPerHUnit(values.UnitId)\n ? this.planningEntryService.globalUnitKgPerHa.Id\n : this.planningEntryService.globalUnitPercent.Id;\n let applRate: number = values.Amount;\n if (this.planningEntryService.isKgPerHOrM3PerHOrTPerHUnit(values.UnitId)) {\n applRate = this.elementService.CalculateToElementByGivenValue(\n applRate,\n values.ElementId,\n withOxide,\n withOxide);\n }\n return {\n UnitId: applUnitId,\n ApplRate: applRate,\n ApplConst: applConst,\n ApplMin: applMin,\n ApplMax: applMax,\n HasApplMin: applMinHasValue,\n HasApplMax: applMaxHasValue\n };\n }\n\n private _getFieldSetForEdit(dataItem: any, values$: Observable): ApDynformsConfigFieldset[] {\n const fieldSets = [];\n if (dataItem.Operation_Mode !== ApOperationMode.Const) {\n // Nutrient, Goods, Percent\n fieldSets.push(new ApDynformsConfigFieldset({\n key: 'Global__Amount',\n legend: 'Global__Agronomy',\n useMaxWidth: true,\n config: [\n new ApDynformsConfigNumerictextbox({\n key: 'NutrientAmount',\n label: this.planningEntryService.getElementLabelTranslation(),\n value$: values$.pipe(\n filter(x => this._isNotNullOrUndefined(x?.NutrientAmount)),\n map(x => x.NutrientAmount)\n ),\n infoText: 'Global_Average_Amount_Nutrients_Applied_Field',\n formErrors: ['Settings__Msg_Vali_Value_Required'],\n min: 0,\n decimals: this._settings?.DigitsAfterDecimalPoint ?? 0,\n disabled: dataItem.Appl_Mode === ApApplicationMode.Constant\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'GoodsAmount',\n label: this._getUnitWithLabelKey(dataItem.Product_Id, 'Nutrients__Average_Amount_Goods'),\n value$: values$.pipe(\n filter(x => this._isNotNullOrUndefined(x?.GoodsAmount)),\n map(x => x.GoodsAmount)\n ),\n infoText: 'Global_Average_Amount_Quantity_Applied_Field',\n formErrors: ['Settings__Msg_Vali_Value_Required', 'Text_ValueInvalid'],\n min: 0,\n decimals: this._settings?.DigitsAfterDecimalPoint ?? 0,\n disabled: dataItem.Appl_Mode === ApApplicationMode.Constant\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'PercentAmount',\n label: 'Nutrients__Percentage_Remaining_Needs_2_%',\n value$: values$.pipe(\n filter(x => this._isNotNullOrUndefined(x?.PercentAmount)),\n map(x => x.PercentAmount)\n ),\n infoText: 'Global_Percentage_Amount_Remaining_Needs_Applied_Field',\n formErrors: ['Settings__Msg_Vali_Value_Required'],\n min: 0,\n max: 100,\n decimals: 1,\n disabled: dataItem.Appl_Mode === ApApplicationMode.Constant\n })\n ]\n }));\n }\n const agronomyConfigs = [\n new ApDynformsConfigNumerictextbox({\n key: 'ApplMin',\n label: this._getUnitWithLabelKey(dataItem.Product_Id, 'Global__Minimum_Goods'),\n value$: values$.pipe(\n filter(x => this._isNotNullOrUndefined(x?.ApplMin)),\n map(x => x.ApplMin)\n ),\n formErrors: ['Text_ValueInvalid'],\n infoText: 'Global_Minimum_Goods_Not_Fallen_Short_All_Fields',\n min: 0,\n step: 1,\n decimals: 1,\n disabled: dataItem.Appl_Mode === ApApplicationMode.Constant\n }),\n new ApDynformsConfigNumerictextbox({\n key: 'ApplMax',\n label: this._getUnitWithLabelKey(dataItem.Product_Id, 'Global__Maximum_Goods'),\n value$: values$.pipe(\n filter(x => this._isNotNullOrUndefined(x?.ApplMax)),\n map(x => x.ApplMax)\n ),\n formErrors: ['Text_ValueInvalid'],\n infoText: 'Global_Maximum_Goods_Not_Exceeded_All_Fields',\n min: 0,\n step: 1,\n decimals: 1,\n disabled: dataItem.Appl_Mode === ApApplicationMode.Constant\n })\n ];\n if (dataItem.Operation_Mode === ApOperationMode.Const) {\n agronomyConfigs.push(new ApDynformsConfigNumerictextbox({\n key: 'TotalSum',\n label: this._getUnitWithLabelKey(dataItem.Product_Id, 'Global__Sum_Goods', false),\n value$: values$.pipe(\n filter(x => this._isNotNullOrUndefined(x?.TotalSum)),\n map(x => x.TotalSum)\n ),\n min: 0,\n formErrors: ['Settings__Msg_Vali_Value_Required'],\n decimals: this._settings.DigitsAfterDecimalPoint\n }));\n }\n agronomyConfigs.push(new ApDynformsConfigNumerictextbox({\n key: 'ApplConst',\n label: this._getUnitWithLabelKey(dataItem.Product_Id, 'Global__Const_Goods'),\n value$: values$.pipe(\n filter(x => this._isNotNullOrUndefined(x?.ApplConst)),\n map(x => x.ApplConst)\n ),\n infoText: 'Global_Constant_Amount_Applied_Field_Absence_Gps',\n formErrors: ['Text_ValueInvalid'],\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n })\n ],\n min: 0,\n decimals: 1,\n disabled: dataItem.Appl_Mode !== ApApplicationMode.Constant\n }));\n fieldSets.push(new ApDynformsConfigFieldset({\n key: 'Min_Max_Const',\n legend: 'Global__Planning_Min_Max_Const',\n useMaxWidth: true,\n config: agronomyConfigs,\n }));\n return fieldSets;\n }\n\n private _getValidatorsForFieldSetForEdit(dataItem: any): ApDynformsValidator[] {\n if (dataItem.Appl_Mode === ApApplicationMode.Constant) {\n return [\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('ApplMin', 'ApplConst'),\n errorKey: 'Text_ValueInvalid'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('ApplConst', 'ApplMax'),\n errorKey: 'Text_ValueInvalid'\n })\n ];\n } else {\n return [\n new ApDynformsValidator({\n validator: (frm: FormGroup): { mismatch: boolean } | null => {\n const userApplRate = frm.get('NutrientAmount')?.value;\n const amountNutrients = frm.get('GoodsAmount')?.value;\n const amountPercent = frm.get('PercentAmount')?.value;\n if (!userApplRate && !amountNutrients && !amountPercent) {\n return {mismatch: true};\n }\n return null;\n },\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('ApplMin', 'GoodsAmount'),\n errorKey: 'Text_ValueInvalid'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('GoodsAmount', 'ApplMax'),\n errorKey: 'Text_ValueInvalid'\n }),\n new ApDynformsValidator({\n validator: ApNumberRangeValidator.ValidateNumberRange('ApplMin', 'ApplMax'),\n errorKey: 'Text_ValueInvalid'\n })\n ];\n }\n }\n\n //#endregion \"Burger menu logic\"\n\n //#region \"private Methods\"\n\n private _generateGridItem(field: IField, nutrientPlanningStatistics: IFieldNutrientPlanningStatistic[], settings: ISettings): any {\n const geom = this.fieldStore.getCurrentFieldGeom(field);\n const fieldGeomId = geom?.Id;\n const planning = this.planningEntryService.summary.Nutrient_Planing_Data.Find(x => x.Field_Geom_Id === fieldGeomId);\n const applRate = this.planningEntryService.isKgPerHOrM3PerHOrTPerHUnit(this.planningEntryService.summary.User_Appl_Unit)\n ? this.planningEntryService.summary.Amount_Nutrient\n : this.planningEntryService.summary.Amount_Percent;\n const rbStatistic = this.planningEntryService.summary.Selected_Fields.find(x => x.Id === field.Id)?.RbStatistic;\n const summaryElement = this.planningEntryService.summary.Element;\n const fertilizer = this.fertilizerStore.getFertilizer(this.planningEntryService.summary.Product_Id);\n let minValue = 0;\n let maxValue = 0;\n let amountValue = 0;\n let p = 0;\n let k = 0;\n let mg = 0;\n let cao = 0;\n let columnLoading = true;\n let statistic = planning?.Statistic ?? nutrientPlanningStatistics?.FindAll(x => x.FieldGeomId === fieldGeomId);\n let errorMessage = null;\n let status = planning?.Status;\n if (statistic.length === 5) {\n const elementIndex = summaryElement - 1;\n const elementStatistic = statistic[elementIndex];\n minValue = this.nutrientService.convertNutrientToGoods(this.planningEntryService.summary.Product_Id, summaryElement, elementStatistic.Min);\n maxValue = this.nutrientService.convertNutrientToGoods(this.planningEntryService.summary.Product_Id, summaryElement, elementStatistic.Max);\n amountValue = this.nutrientService.convertNutrientToGoods(this.planningEntryService.summary.Product_Id, summaryElement, elementStatistic.Mean);\n planning.Appl_Min = this.roundNumericService.roundAsNumber(elementStatistic.Min, settings.DigitsAfterDecimalPoint);\n planning.Appl_Max = this.roundNumericService.roundAsNumber(elementStatistic.Max, settings.DigitsAfterDecimalPoint);\n planning.Appl_Rate = this.roundNumericService.roundAsNumber(elementStatistic.Mean, settings.DigitsAfterDecimalPoint);\n status = planning.Status;\n if (this.planningEntryService.summary.Product_Id === 0) {\n const st = nutrientPlanningStatistics.Find(x => x?.FieldGeomId === fieldGeomId && x?.Band === elementIndex) as IFieldNutrientPlanningStatistic;\n switch (elementIndex) {\n case 0:\n p = statistic[0].Mean;\n break;\n case 1:\n k = statistic[1].Mean;\n break;\n case 2:\n mg = statistic[2].Mean;\n break;\n case 3:\n cao = statistic[3].Mean;\n break;\n }\n statistic = [st];\n } else {\n p = statistic[0].Mean;\n k = statistic[1].Mean;\n mg = statistic[2].Mean;\n cao = statistic[3].Mean;\n }\n planning.Statistic = statistic;\n columnLoading = false;\n } else {\n if (statistic.length > 0 && statistic[0].ErrorText !== null) {\n columnLoading = false;\n errorMessage = statistic[0].ErrorText;\n status = 2;\n }\n }\n const applicationMode = this.applicationModeService.GetApplicationModeById(planning.Appl_Mode);\n const distribution = this.applicationModeService.GetApplicationModeTranslation(applicationMode);\n return {\n Status: status,\n StatusClass: status === 1 ? 'ap-status-green' : status === 2 ? 'ap-status-yellow' : 'ap-status-red',\n StatusDesc: status === 1 ? 'Global__Active' : status === 2 ? 'Global__Only_Constant_Planning_Possible' : errorMessage,\n ErrorMessage: errorMessage,\n Id: field.Id,\n Plan_Id: planning.Plan_Id,\n Appl_Min: this.planningEntryService.summary?.User_Appl_Min ?? minValue,\n Appl_Max: this.planningEntryService.summary?.User_Appl_Max ?? maxValue,\n Note: this.planningEntryService.summary.Title,\n Appl_Rate: applRate,\n Appl_Const: planning?.Appl_Const,\n Appl_Mode: planning?.Appl_Mode,\n Appl_Date: this.planningEntryService.summary.User_Appl_Date,\n Product_Id: this.planningEntryService.summary.Product_Id,\n Element: planning?.Element,\n Operation_Mode: planning?.Operation_Mode,\n Unit: planning?.Unit,\n Driver: planning?.Driver,\n Machine: planning?.Machine,\n Instrument: planning?.Instrument,\n GeomSVG: geom,\n Geom: geom?.Geom,\n Geom_Id: geom?.Id,\n Area: geom?.AreaHa,\n Field_Geom_Id: geom?.Id,\n Statistic: statistic,\n RbStatistic: rbStatistic,\n ColumnLoading: columnLoading,\n Distribution: distribution,\n FarmId: this.loginStore.SelectedFarmId,\n Field_Id: field.Id,\n Nr: field.FieldNumber,\n TNr: field.FieldSubnumber,\n Name: field.FieldName,\n NrTNr: this.fieldStore.getFieldNumberAndSubNumber(field),\n Amount: amountValue,\n Min: minValue,\n Max: maxValue,\n P: this.nutrientService.isOxidFarm()\n ? this.elementService.CalculateElementOxidValueByGivenElementValue(p, ApElementOxydTypeEnum.P)\n : p,\n K: this.nutrientService.isOxidFarm()\n ? this.elementService.CalculateElementOxidValueByGivenElementValue(k, ApElementOxydTypeEnum.K)\n : k,\n Mg: this.nutrientService.isOxidFarm()\n ? this.elementService.CalculateElementOxidValueByGivenElementValue(mg, ApElementOxydTypeEnum.Mg)\n : mg,\n CaO: cao,\n Crop: field.FieldCrops && field.FieldCrops[0]\n ? this.cropTypeStore.GetCropTypeName(field.FieldCrops[0].CroptypeId)\n : '-',\n CropTypeId: field.FieldCrops && field.FieldCrops[0]\n ? field.FieldCrops[0].CroptypeId\n : null,\n SecondCrop: field.FieldCrops && field.FieldCrops[0]\n ? this.cropTypeStore.GetCropTypeName(field.FieldCrops[0].CroptypeSecondId)\n : '-',\n SecondCropTypeId: field.FieldCrops && field.FieldCrops[0]\n ? field.FieldCrops[0].CroptypeSecondId\n : null,\n Product: this.fertilizerService.getFertilizerProductName(fertilizer),\n Version: 1,\n Factor: 1,\n Valid_From: null,\n Valid_To: null,\n BookedAt: null,\n BookedBy: null,\n Croptype_Id: null,\n Exported_At: null,\n Exported_By: null,\n Exported_Format: null,\n Croptype_Second_Id: null,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null\n };\n }\n\n private _onSelectionChange(currentSelected: any[]): void {\n const currentStep = this.planningEntryService.activeWizardStep.getValue();\n if (currentStep === ApNutrientWizardStep.Overview) {\n let fieldIds: string[];\n if (!currentSelected || currentSelected.length <= 0) {\n fieldIds = this._dynComponent.dynGrid.items.map(x => x.Field_Id?.toString());\n } else {\n fieldIds = currentSelected.map(x => x.Field_Id?.toString());\n }\n this.fieldStore.changeSelectedField(fieldIds);\n this._generateOverviewStatistic(currentSelected);\n }\n }\n\n private _calculatePlanningRaster(): void {\n this._canSave.next(false);\n this.nutrientPlanningStore.clearNutrientPlanningStatistic();\n this._createNutrientPlaningData();\n this.planningEntryService.summary.Nutrient_Planing_Data.forEach(nutrientPlaning => {\n this.nutrientPlanningStore.startNutrientPlanning(\n nutrientPlaning.Plan_Id,\n nutrientPlaning.Field_Geom_Id,\n nutrientPlaning.Element,\n this.planningEntryService.summary.Product_Id,\n nutrientPlaning?.Appl_Mode === ApApplicationMode.Constant ? ApOperationMode.Const : nutrientPlaning.Operation_Mode,\n this.planningEntryService.isKgPerHOrM3PerHOrTPerHUnit(nutrientPlaning?.Unit) ? nutrientPlaning.Appl_Rate : 0,\n this.planningEntryService.summary.User_Appl_Unit === this.planningEntryService.globalUnitPercent.Id ? nutrientPlaning.Appl_Rate : 0,\n this.planningEntryService.summary.User_Appl_Min !== null ? nutrientPlaning.Appl_Min : 0,\n this.planningEntryService.summary.User_Appl_Min !== null,\n this.planningEntryService.summary.User_Appl_Max !== null ? nutrientPlaning.Appl_Max : 0,\n this.planningEntryService.summary.User_Appl_Max !== null,\n nutrientPlaning.Appl_Mode === ApApplicationMode.Variable ? nutrientPlaning.Appl_Const : 0,\n nutrientPlaning.Appl_Mode === ApApplicationMode.Constant ? nutrientPlaning.Appl_Const : 0\n );\n });\n }\n\n private _createNutrientPlaningData(): void {\n this.planningEntryService.summary.Nutrient_Planing_Data = [];\n const calculationValues = this._getValuesForCalculation({\n UnitId: this.planningEntryService.summary.User_Appl_Unit,\n ElementId: this.planningEntryService.summary.Element,\n ProductId: this.planningEntryService.summary.Product_Id,\n Amount: this.planningEntryService.summary.Amount_Percent ?? this.planningEntryService.summary.Amount_Nutrient,\n ApplConst: this.planningEntryService.summary.User_Appl_Const,\n ApplMax: this.planningEntryService.summary.User_Appl_Max,\n ApplMin: this.planningEntryService.summary.User_Appl_Min\n });\n if (calculationValues.ApplRate === null) {\n console.warn('Calculation result of an appl rate is wrong.', this.planningEntryService.summary);\n calculationValues.ApplRate = 0;\n }\n // Für konstante Planungen (organisch und mineralisch) wird const und applRate gleich gesetzt\n // APV49-1515: user_appl_rate = user_appl_min = user_appl_max=user_appl_const = Menge * Gehalt(Leitnährstoff)\n if (this.planningEntryService.summary.User_Operation_Mode === ApOperationMode.Const) {\n // Einzelplanung: Bei konstant alle appl Werte gleichsetzen (Nährstoff)\n calculationValues.ApplConst = calculationValues.ApplMax = calculationValues.ApplMin = calculationValues.ApplRate;\n // Summary: Bei konstant alle user_appl Werte gleichsetzen (Ware)\n this.planningEntryService.summary.User_Appl_Const = this.planningEntryService.summary.User_Appl_Min =\n this.planningEntryService.summary.User_Appl_Max = this.planningEntryService.summary.Amount_Goods;\n }\n this.planningEntryService.summary.Selected_Fields.forEach((selectedField: any): void => {\n const geom = this.fieldStore.getFieldGeomById(selectedField.FieldGeomId.toString());\n const field = this.fieldStore.getFieldById(geom.FieldId.toString());\n const campaignYearRange = this.campaignYearService.getCampaignYearByDate(new Date(this.planningEntryService.summary.User_Appl_Date));\n const cropRotation = this.cropService.getCropRotationByYear(field.Id, campaignYearRange.CampaignYear);\n const modesAndStatusForPlan = this.planningEntryService.getModesAndStatusForPlan(selectedField,\n this.planningEntryService.summary.Element);\n const fieldGeomIdPlanId = this._fieldGeomIdPlanId.Find(x => x.FieldGeomId === selectedField.FieldGeomId);\n const nutrientPlaning: INutrientPlaningData = {\n Id: fieldGeomIdPlanId !== null ? fieldGeomIdPlanId.PlanId : ApGuidUtil.generateNewGuid(),\n Summary_Id: this.planningEntryService.summary.Id,\n Unit: calculationValues.UnitId,\n Appl_Max: calculationValues.ApplMax,\n Appl_Min: calculationValues.ApplMin,\n Appl_Const: calculationValues.ApplConst,\n Appl_Rate: calculationValues.ApplRate,\n Appl_Mode: modesAndStatusForPlan.ApplicationMode,\n Element: this.planningEntryService.summary.Element,\n Appl_Date: this.planningEntryService.summary.User_Appl_Date,\n Field_Geom_Id: selectedField.FieldGeomId,\n Field_Id: field.Id,\n Geom: geom.Geom,\n Operation_Mode: modesAndStatusForPlan.OperationMode,\n Field: field,\n Status: modesAndStatusForPlan.Status,\n Driver: this.planningEntryService.summary.Driver,\n Machine: this.planningEntryService.summary.Machine,\n Instrument: this.planningEntryService.summary.Instrument,\n Factor: 1,\n Max: 0,\n Ready: true,\n Ready_Calculated: false,\n Note: '',\n Plan_Id: null,\n Croptype_Id: this._getCropId(cropRotation, 'MainCrop'),\n Croptype_Second_Id: this._getCropId(cropRotation, 'SecondCrop'),\n Statistic: null,\n T_End: null,\n T_Start: null,\n Valid_From: null,\n Valid_To: null,\n RbStatistic: null\n };\n nutrientPlaning.Plan_Id = nutrientPlaning.Id;\n const fieldGeomAndPlanId: FieldGeomAndPlanId = {\n FieldGeomId: nutrientPlaning.Field_Geom_Id,\n PlanId: nutrientPlaning.Plan_Id\n };\n if (!this._fieldGeomIdPlanId.Contains(fieldGeomAndPlanId)) {\n this._fieldGeomIdPlanId.Add(fieldGeomAndPlanId);\n }\n this.planningEntryService.summary.Nutrient_Planing_Data.Add(nutrientPlaning);\n });\n }\n\n private _getUnitIdAccordingToPercentAmount(percentAmount: number | null): number {\n let unitId: number;\n if (percentAmount) {\n unitId = this.planningEntryService.globalUnitPercent.Id;\n } else {\n const groupId = this.planningEntryService.summary.Group_Id;\n const productId = this.planningEntryService.summary.Product_Id;\n unitId = this.planningEntryService.getM3HaOrTHaOrKgHaUnitIdForOrganic(groupId, productId);\n }\n return unitId;\n }\n\n private _listenNutrientPlanningStatistics(statistic: IFieldNutrientPlanningStatistic[]): void {\n if (!statistic || statistic.length <= 0) {\n return;\n }\n const summary = this.planningEntryService.summary;\n const elementAsIndex = summary.Element - 1;\n statistic.forEach(statisticItem => {\n if (statisticItem.ErrorText === null) {\n if (summary.Nutrient_Planing_Data.Find(x => x.Plan_Id === statisticItem.PlanId) !== null) {\n const pl = summary.Nutrient_Planing_Data.Find(x => x.Plan_Id === statisticItem.PlanId);\n pl.Ready_Calculated = true;\n if (elementAsIndex === statisticItem.Band) {\n summary.Nutrient_Planing_Data.Find(x => x.Plan_Id === statisticItem.PlanId).Max = statisticItem.Max;\n }\n }\n } else {\n const planningData = summary.Nutrient_Planing_Data.Find(x => !!x && !!statisticItem && x.Field_Geom_Id === statisticItem.FieldGeomId);\n if (!!planningData) {\n planningData.Ready_Calculated = true;\n }\n const readySinglePlans = summary.Nutrient_Planing_Data.FindAll(x => !!x && x.Ready);\n if (readySinglePlans.TrueForAll(x => x.Ready_Calculated)) {\n this._canSave.next(true);\n }\n }\n });\n const ready = summary.Nutrient_Planing_Data.FindAll(x => x.Ready);\n if (ready.TrueForAll(x => x.Ready_Calculated)) {\n let maxValue = 0;\n let minValue: number | undefined;\n let meanValue = 0;\n const statisticList = [];\n const currentUrl = this.routerStore.Listen(s => s.url).getValue();\n const nutrient = this.nutrientManagementService.getNutrientName(elementAsIndex);\n const planIds = ready.FindAll(x => x.Ready_Calculated);\n const ids = planIds.map(x => x.Plan_Id);\n const elementStatistic = statistic.filter(x => x.Band === elementAsIndex);\n elementStatistic.forEach(object => {\n if (minValue === undefined) {\n minValue = object.Min;\n }\n maxValue = Math.max(maxValue, object.Max);\n minValue = Math.min(minValue, object.Min);\n meanValue = Math.max(meanValue, object.Mean);\n });\n for (let elementId = 1; elementId < 5; elementId++) {\n if (elementId === summary.Element) {\n statisticList.Add({\n ElementId: elementId,\n Max: maxValue,\n Min: minValue,\n Average: meanValue\n });\n } else if (summary.Product_Id > 0) {\n statisticList.Add({\n ElementId: elementId,\n Max: 0,\n Min: 0,\n Average: 0\n });\n }\n }\n this._clearMapAndLegendCompletely();\n this._generateOverviewStatistic(this._dynComponent.getSelectedItems());\n summary.Statistic = statisticList;\n this.mapStore.Legends.onNutrientPlanningChanged.emit({\n ProductId: summary.Product_Id,\n ElementId: summary.Element,\n Statistic: summary.Statistic,\n OperationModeId: summary.User_Operation_Mode\n });\n this.mapStore.Layers.NutrientPlanningLayerSourceInit(currentUrl, nutrient, ids);\n this._canSave.next(true);\n }\n }\n\n private _generateOverviewStatistic(selectedItems: any[]): void {\n // put it on top of callstack to avoid lagging when user changes the selection\n setTimeout(() => {\n const emptyTitle = this.translationService.translate('Nutrients__StatisticsTitle');\n let items = selectedItems;\n if (!items || items.length <= 0) {\n items = this._dynComponent.items as any[];\n }\n if (!items || items.length <= 0 || items.some(x => x.ColumnLoading)) {\n this.statisticStore.setStatisticData(\n [], ApStatsType.PlanningWizardOverviewStats, '', emptyTitle\n );\n return;\n }\n const statItems: IPlanningWizardOverviewStatsItem[] = items.filter(x => x?.Operation_Mode).map(item => {\n const operationMode = this.operationModesStore.Listen(s => s.data)\n .getValue()\n .find((o) => o.Id === item.Operation_Mode);\n const statistic = item.Statistic as IFieldNutrientPlanningStatistic[];\n return {\n Module: PlanningWizardOverviewModuleStats.BaseFertilization,\n OperationModeKey: operationMode?.Key ?? '',\n NContent: this.baseFertilizationService.calculateNElementByLeadElement(item?.Product_Id, statistic)?.Average ?? 0,\n Area: item.Area,\n Min: item.Min,\n Max: item.Max,\n Average: item.Amount,\n ProductId: item?.Product_Id\n };\n });\n const title = this._getTitleForStatistic(items);\n this.statisticStore.setStatisticData(\n statItems, ApStatsType.PlanningWizardOverviewStats, title, emptyTitle\n );\n }, 10);\n }\n\n private _getTitleForStatistic(selectedItems: any[]): string {\n const totalItems = this._dynComponent.items as any[];\n const dataForTitles = totalItems.map(x => ({\n AreaHa: x.Area,\n Selected: selectedItems.some(z => z.Id === x.Id)\n }));\n return this.statisticService.generateFieldsAreaTitle(dataForTitles);\n }\n\n private _isNotNullOrUndefined(value: any): boolean {\n return value !== null && value !== undefined;\n }\n\n private _clearValues(): void {\n this._canSave.next(false);\n this._isLocked = false;\n this._selectedGridFields.next([]);\n this._updatedPlanningEntries = [];\n this._fieldGeomIdPlanId = [];\n this._clearMapAndLegendCompletely();\n }\n\n private _clearMapAndLegendCompletely(): void {\n this.planningEntryService.clearMapLayerAndLegend();\n MapFactoryStyler.Instance.clearStyleCache();\n }\n\n private _getCropId(cropRotation: CropRotationYield, crop: string): number | null {\n if (!cropRotation) {\n return null;\n }\n if (!cropRotation || !cropRotation[crop] || cropRotation[crop] === 0) {\n return null;\n }\n return cropRotation[crop];\n }\n\n private _getUnitWithLabelKey(productId: number, key: string, perHa: boolean = true): string {\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n return this.unitService.getUnitWithLabelKey(fertilizer?.Unit, key, perHa);\n }\n\n //#endregion \"private Methods\"\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n ViewChild, ViewEncapsulation\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {map, tap} from 'rxjs/operators';\nimport {ValidatorFn} from '@angular/forms';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {\n FieldNutrientDistributionStore\n} from '../../stores/nutrients/field-nutrient-distributions.store';\nimport {\n MapViewStore\n} from '../../stores/layout/mapview.store';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n CropRotationStore\n} from '../../stores/farm/crop.rotation.store';\nimport {RbStore} from '../../stores/nutrients/rb.store';\nimport {\n ApNutrientWizardStep\n} from '../../ap-interface/enums/ap-nutrient-wizard-setup.enums';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {MapViewMode} from '../../ap-interface';\nimport {\n NutrientPlanningEntryService\n} from './ap-nutrient-planning-configs/nutrient-planning-entry.service';\nimport {\n NutrientPlanningEntrySelectionStepService\n} from './ap-nutrient-planning-configs/nutrient-planning-entry-selection-step.service';\nimport {\n NutrientPlanningEntryDetailsStepService\n} from './ap-nutrient-planning-configs/nutrient-planning-entry-details-step.service';\nimport {\n NutrientPlanningEntryOverviewStepService\n} from './ap-nutrient-planning-configs/nutrient-planning-entry-overview-step.service';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {UnitsStore} from '../../stores/common/units.store';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {\n ElementsStore\n} from '../../stores/common/elements.store';\nimport {\n OperationModesStore\n} from '../../stores/common/operation-modes.store';\nimport {\n PlanningEntryComponentData\n} from './ap-nutrient-planning-configs/nutrient-planning-types';\nimport {\n BaseFertilizationCommonService\n} from '../../nutrient-management/service/base-fertilization-common.service';\nimport IField = Data.FieldManagement.IField;\nimport IFieldGeom = Data.FieldManagement.IFieldGeom;\nimport {\n ApDefined\n} from '../../ap-utils/static/ap-defined';\n\n@Component({\n selector: 'ap-nutrient-planning',\n template: `\n \n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n
`,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n #Amount_Goods_label .ap-responsive-text span {\n font-style: italic;\n color: #76777b;\n }\n\n #Amount_Nutrient_label .ap-responsive-text span {\n font-style: italic;\n color: #76777b;\n }\n `\n ],\n providers: [\n NutrientPlanningEntryService,\n NutrientPlanningEntrySelectionStepService,\n NutrientPlanningEntryDetailsStepService,\n NutrientPlanningEntryOverviewStepService\n ]\n})\nexport class ApNutrientPlanningComponent implements OnInit, AfterContentInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true}) public dynComponent: ApDynComponentComponent;\n public loading$ = of(true);\n public columns$: Observable = of([]);\n public items$: Observable = of([]);\n public fieldSets$ = new BehaviorSubject([]);\n public caption$ = new BehaviorSubject('Global__Create_Planning');\n public pager: ApDynGridPagerConfigBase;\n public data: PlanningEntryComponentData;\n public breadCrumbsColumns = ['Global__Selection', 'Global__Details', 'Admin_Pages__Overview'];\n public onBackDetails = new EventEmitter();\n public onNextDetails = new EventEmitter();\n public formValidators: ApDynformsValidator[] = [];\n\n private _subscriptions: Array = [];\n\n constructor(private rbStore: RbStore,\n private formStore: FormStore,\n private unitStore: UnitsStore,\n private fieldStore: FieldStore,\n private mapViewStore: MapViewStore,\n private elementStore: ElementsStore,\n private campaignYearStore: CampaignYearStore,\n private cropRotationStore: CropRotationStore,\n private operationModesStore: OperationModesStore,\n private nutrientDistributionStore: FieldNutrientDistributionStore,\n private fieldNutrientDistributionStore: FieldNutrientDistributionStore,\n private baseFertilizationCommonService: BaseFertilizationCommonService,\n private planningEntryService: NutrientPlanningEntryService,\n private planningEntrySelectionStepService: NutrientPlanningEntrySelectionStepService,\n private planningEntryDetailsStepService: NutrientPlanningEntryDetailsStepService,\n private planningEntryOverviewStepService: NutrientPlanningEntryOverviewStepService,\n private changeDetection: ChangeDetectorRef) {\n }\n\n public ngOnInit(): void {\n this.planningEntryService.setComponentData(this.data);\n if (!this.planningEntryService.isDataObjectValid()) {\n this._closeForm();\n return;\n }\n this.baseFertilizationCommonService.setMainComponentSelectionAvailability(false);\n this.loading$ = combineLatest([\n this.nutrientDistributionStore.Loading$,\n this.rbStore.Listen(s => s.loading),\n this.unitStore.Listen(x => x.loading),\n this.fieldStore.Listen(s => s.loading),\n this.elementStore.Listen(x => x.loading),\n this.campaignYearStore.Listen(s => s.loading),\n this.operationModesStore.Listen(s => s.loading),\n this.cropRotationStore.Listen(s => s.historyLoading),\n this.cropRotationStore.Listen(s => s.cropRotationAttributesLoading),\n ]).pipe(\n map((loadings) => loadings.some(l => l)),\n tap(result => {\n if (!result && this.planningEntryService.isNewMode === undefined) {\n this.planningEntryService.initData();\n this.planningEntrySelectionStepService.initData();\n this.planningEntryDetailsStepService.initData();\n this.planningEntryOverviewStepService.initData();\n }\n })\n );\n if (this.mapViewStore.getMapViewMode() !== MapViewMode.NORMAL) {\n this.mapViewStore.showMapView();\n }\n this.planningEntryService.clearMapLayerAndLegend();\n this.caption$.next(this.planningEntryService.isNewMode ? 'Global__Create_Planning' : 'Global__Planning');\n }\n\n public ngAfterContentInit(): void {\n ApDefined.waitUntilDefined(this.planningEntryService, 'summary', () => {\n this.planningEntrySelectionStepService.setSubscriptions(this.dynComponent);\n this.planningEntryDetailsStepService.setSubscriptions(this.dynComponent);\n this.planningEntryOverviewStepService.setSubscriptions(this.dynComponent);\n this._setSubscriptions();\n this.changeDetection.detectChanges();\n }, 2000, 5);\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach(d => d.unsubscribe());\n }\n\n // #region \"private Methods\"\n\n private _setSubscriptions(): void {\n this._subscriptions.push(this.planningEntryService.closeForm.subscribe(() => {\n this._closeForm();\n }));\n this._subscriptions.push(this.fieldStore.Listen(s => s.data)\n .subscribe(fields => setTimeout(() => this._listenFieldStore(fields), 0))\n );\n this._subscriptions.push(this.onBackDetails.subscribe((): void => {\n this.planningEntryService.activeWizardStep.next(ApNutrientWizardStep.Selection);\n }));\n this._subscriptions.push(this.onNextDetails.subscribe((): void => {\n this.planningEntryService.activeWizardStep.next(ApNutrientWizardStep.Overview);\n }));\n this._subscriptions.push(this.planningEntryService.activeWizardStep.subscribe(step => {\n switch (step) {\n case ApNutrientWizardStep.Selection:\n this._onSelectionStep();\n break;\n case ApNutrientWizardStep.Details:\n this._onDetailsStep();\n break;\n case ApNutrientWizardStep.Overview:\n this._onOverviewStep();\n break;\n }\n }));\n this._subscriptions.push(this.planningEntryDetailsStepService.fieldSetsUpdate$.subscribe(fields => {\n this.fieldSets$.next(fields);\n }));\n }\n\n private _onSelectionStep(): void {\n this.fieldSets$.next([]);\n this.pager = this.planningEntrySelectionStepService.getPager(this.breadCrumbsColumns);\n this.columns$ = this.planningEntrySelectionStepService.getColumns();\n this.items$ = this.planningEntrySelectionStepService.getItems();\n }\n\n private _onDetailsStep(): void {\n this.columns$ = of([]);\n this.formValidators = this.planningEntryDetailsStepService.getFormValidators();\n this.fieldSets$.next(this.planningEntryDetailsStepService.getDetailFieldsetControls());\n this.planningEntryDetailsStepService.afterFieldsetInit();\n setTimeout(() => {\n this.dynComponent.dynForm.form.markAllAsTouched();\n }, 1);\n this.changeDetection.detectChanges();\n }\n\n private _onOverviewStep(): void {\n this.fieldSets$.next([]);\n this.pager = this.planningEntryOverviewStepService.getPager();\n this.columns$ = this.planningEntryOverviewStepService.getColumns();\n this.items$ = this.planningEntryOverviewStepService.getItems();\n }\n\n private _listenFieldStore(fields: IField[]): void {\n if (fields == null) {\n return;\n }\n if (fields && fields.length > 0) {\n const currentFieldGeomIds: string[] = this._readFieldGeometriesOfCurrentLoadedFields(fields);\n this.fieldNutrientDistributionStore.loadFieldNutrientDistributions(currentFieldGeomIds);\n }\n const tmp: any[] = [];\n for (const field of fields) {\n if (!field.FieldGeoms || !Array.isArray(field.FieldGeoms) || field.FieldGeoms.length < 1) {\n continue;\n }\n for (const geom of field.FieldGeoms.filter((g: IFieldGeom) => g?.Id != null)) {\n tmp.push(geom.Id);\n }\n }\n this.rbStore.loadRb(tmp);\n }\n\n private _readFieldGeometriesOfCurrentLoadedFields(fields: IField[]): string[] {\n const tmp: any[] = [];\n for (const field of fields) {\n if (!field.FieldGeoms || typeof field.FieldGeoms !== typeof [] || field.FieldGeoms.length < 1) {\n // skip Fields without Geometry\n continue;\n }\n for (const geom of field.FieldGeoms) {\n if (tmp.Contains(geom.Id)) {\n continue;\n }\n tmp.push(geom.Id);\n }\n }\n return tmp;\n }\n\n private _closeForm(): void {\n // Moved the following lines of code from ngDestroy to closeForm\n // Reason: We don't know when angular calls ngDestroy (with a delay and async)\n // The following lines of code might be executed while another component is already\n // initialized completely and destroys its map selection/legend etc.\n // (e.g. BF/plans tried to refresh the map after this form closed but the map was cleared again\n // because these methods were called afterward from ngDestroy)\n // That's why we call the cleanUp methods right before closing the form.\n this.baseFertilizationCommonService.setMainComponentSelectionAvailability(true);\n this.planningEntrySelectionStepService.clearData();\n this.planningEntryDetailsStepService.clearData();\n this.planningEntryOverviewStepService.clearData();\n this.planningEntryService.clearData();\n this.dynComponent?.dynGrid?.gridPaging?.setSelectedKeys([]);\n setTimeout(() => {\n this.formStore.closeForm();\n }, 1);\n }\n\n //#endregion \"private Methods\"\n}\n","import {AfterContentInit, Component, Input, OnDestroy, ViewChild} from '@angular/core';\nimport {\n ParameterValuesHistoryStore\n} from '../../stores/parameter/parameter.values.history.store';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {ApPermissions} from 'invoker-transport';\nimport {\n ApDynGridPagerWizardConfig,\n ApDynGridPagerWizardSection\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-wizard-config';\nimport {MapViewStore} from '../../stores/layout/mapview.store';\nimport {GetPermissionPipe} from '../../ap-permission/pipes/get-permission.pipe';\nimport {\n ParameterDefinitionStore\n} from '../../stores/parameter/parameter.definition.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {GetBooleanPipe} from '../../ap-utils';\nimport {\n ApDynGridImageColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-image-column-config';\nimport {\n ApDynGridEditColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-edit-column-config';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {Subscription} from 'rxjs';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport * as moment from 'moment';\nimport IParameterValueHistory = Data.Parameter.IParameterValueHistory;\nimport IGuid = System.IGuid;\nimport OperationType = Data.Parameter.Enums.OperationType;\nimport ParameterType = Data.Parameter.Enums.ParameterType;\nimport IParameterDefinition = Data.Parameter.IParameterDefinition;\n\n@Component({\n selector: 'ap-parameter-value-history',\n template: `\n `\n})\nexport class ApParameterValueHistoryComponent implements AfterContentInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true}) dynComponent: ApDynComponentComponent;\n @Input() refId: IGuid;\n columns: ApDynGridColumnConfigBase[] = [];\n pager: ApDynGridPagerConfigBase;\n parameterValueHistoryLoading$;\n items: any[] = [];\n\n private _subscriptions: Array = [];\n\n constructor(private parameterValuesHistoryStore: ParameterValuesHistoryStore,\n private parameterDefinitionStore: ParameterDefinitionStore,\n private translationStore: TranslationStore,\n private mapViewStore: MapViewStore,\n private permissionPipe: GetPermissionPipe,\n private booleanPipe: GetBooleanPipe,\n private languageStore: LanguageStore) {\n }\n\n ngAfterContentInit(): void {\n if (this.refId !== undefined) {\n this.parameterValuesHistoryStore.loadParameterValueHistory(this.refId);\n }\n this.parameterValueHistoryLoading$ = this.parameterValuesHistoryStore.Listen(s => s.loading);\n this._subscriptions.push(this.parameterValuesHistoryStore.Listen(s => s.data).subscribe(hist => {\n if (!hist) {\n return;\n }\n this.items = hist.map((h: IParameterValueHistory) => {\n const parameterDefinition = this.parameterDefinitionStore.getParameterDefinitionById(h.DefinitionId);\n const name = this.translationStore.FindTranslationForSelectedLanguage(parameterDefinition.TranslationKey);\n const status = h.OperationType === OperationType.Insert ? 1 : h.OperationType === OperationType.Update ? 0 : -1;\n const statusClass = h.OperationType === OperationType.Insert ? 'ap-status-green' : h.OperationType === OperationType.Update ? 'ap-status-yellow' : 'ap-status-red';\n const statusDesc = h.OperationType === OperationType.Insert ? 'Global_Inserted' : h.OperationType === OperationType.Update ? 'Global_Updated' : 'Global_Deleted';\n let oldValue = '';\n let newValue = '';\n switch (parameterDefinition.ParameterType) {\n case ParameterType.Text:\n oldValue = h.OldValueString;\n newValue = h.NewValueString;\n break;\n case ParameterType.Boolean:\n oldValue = this._booleanConverter(h.OldValueBoolean);\n newValue = this._booleanConverter(h.NewValueBoolean);\n break;\n case ParameterType.Number:\n oldValue = h.OldValueNumber.toString();\n newValue = h.NewValueNumber.toString();\n break;\n case ParameterType.List:\n oldValue = this._listConverter(h.OldValueListKey, parameterDefinition);\n newValue = this._listConverter(h.NewValueListKey, parameterDefinition);\n break;\n }\n return {\n Id: h.Id,\n SourceItem: h,\n Status: status,\n StatusClass: statusClass,\n StatusDesc: statusDesc,\n Name: name,\n OldValue: h.OperationType !== OperationType.Insert ? oldValue : '-',\n NewValue: h.OperationType !== OperationType.Delete ? newValue : '-',\n Info: parameterDefinition.Description,\n Image: '../../assets/img/info.png',\n ToolTip: this._createTooltip(h),\n Size: '24px',\n };\n }\n );\n this.gridBuilder();\n }\n ));\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n\n private gridBuilder(): void {\n this.permissionPipe.transform(ApPermissions.EDIT_TRANSLATIONS).subscribe(() => {\n this.columns = [\n new ApDynGridStatusColumnConfig({\n field: 'Status', class: 'StatusClass', description: 'StatusDesc'\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Name',\n title: 'Global__Name',\n headerFilterable: true,\n filterable: true,\n width: 180,\n sortIndex: 0,\n sortDesc: true,\n groupIndex: 0,\n groupDesc: false\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'OldValue',\n title: 'Global_Old_Value',\n filterable: true,\n width: 100,\n headerFilterable: true,\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'NewValue',\n title: 'Global_New_Value',\n filterable: true,\n width: 100,\n headerFilterable: true,\n }),\n new ApDynGridImageColumnConfig({\n title: 'Global__Info',\n imageUrl: 'Image',\n width: 50,\n tooltip: 'ToolTip',\n imageHeight: 'Size',\n imageWidth: 'Size'\n }),\n new ApDynGridEditColumnConfig({disabled: true})\n ];\n });\n this.pager = new ApDynGridPagerWizardConfig(\n new ApDynGridPagerWizardSection(),\n new ApDynGridPagerWizardSection(),\n new ApDynGridPagerWizardSection()\n );\n }\n\n private _listConverter(id: number, definition: IParameterDefinition): string {\n const found = definition.ListValues.Find(_ => _.Id === id);\n if (!found) {\n return '';\n }\n return found.Name;\n }\n\n private _booleanConverter(value: any): string {\n const retVal = this.booleanPipe.transform(value);\n if (retVal) {\n return this.translationStore.FindTranslationForSelectedLanguage('Global__Yes');\n }\n return this.translationStore.FindTranslationForSelectedLanguage('Global__No');\n }\n\n private _createTooltip(parameterValueHistory: IParameterValueHistory): string {\n const createdBy = parameterValueHistory.CreatedBy !== null ? parameterValueHistory.CreatedByName : '-';\n const createdAt = parameterValueHistory.CreatedAt !== null ? moment(parameterValueHistory.CreatedAt).format(this.languageStore.CurrentDateTimeFormat) : '-';\n\n const changedBy = parameterValueHistory.ChangedBy !== null ? parameterValueHistory.ChangedByName : '-';\n const changedAt = parameterValueHistory.ChangedAt !== null ? moment(parameterValueHistory.ChangedAt).format(this.languageStore.CurrentDateTimeFormat) : '-';\n\n const deletedBy = parameterValueHistory.DeletedBy !== null ? parameterValueHistory.DeletedByName : '-';\n const deletedAt = parameterValueHistory.DeletedAt !== null ? moment(parameterValueHistory.DeletedAt).format(this.languageStore.CurrentDateTimeFormat) : '-';\n\n return '\\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' +\n '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '
' + this.translationStore.FindTranslationForSelectedLanguage('Global_Created_By') + '' + createdBy + '
' + this.translationStore.FindTranslationForSelectedLanguage('Global_Created_At') + '' + createdAt + '
' + this.translationStore.FindTranslationForSelectedLanguage('Global_Changed_By') + '' + changedBy + '
' + this.translationStore.FindTranslationForSelectedLanguage('Global_Changed_At') + '' + changedAt + '
' + this.translationStore.FindTranslationForSelectedLanguage('Global_Deleted_By') + '' + deletedBy + '
' + this.translationStore.FindTranslationForSelectedLanguage('Global_Deleted_At') + '' + deletedAt + '
';\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApDynformsModule} from '../../ap-dynforms/ap-dynforms.module';\nimport {ApTranslationModule} from '../../translation/ap-translation.module';\nimport {ButtonModule} from '@progress/kendo-angular-buttons';\nimport {ApUtilsModule} from '../../ap-utils';\nimport {ApPermissionModule} from '../../ap-permission/ap-permission.module';\nimport {ApParameterValueComponent} from './ap-parameter-value.component';\nimport {ApParameterValueHistoryComponent} from './ap-parameter-value-history.component';\nimport {ApParameterComponent} from './ap-parameter.component';\nimport {ApDynComponentModule} from '../../ap-dyncomponent/ap-dyncomponent.module';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {LayoutModule} from '@progress/kendo-angular-layout';\n\nconst COMPONENTS = [\n ApParameterValueComponent,\n ApParameterValueHistoryComponent,\n ApParameterComponent\n];\n\n@NgModule({\n declarations: COMPONENTS,\n entryComponents: COMPONENTS,\n imports: [\n CommonModule,\n ApDynformsModule,\n ApTranslationModule,\n ButtonModule,\n ApUtilsModule,\n ApPermissionModule,\n ApDynComponentModule,\n ApResponsiveTextModule,\n LayoutModule\n ],\n exports: COMPONENTS\n})\nexport class ApParameterEntryComponentsModule {\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {filter, map} from 'rxjs/operators';\nimport {\n ParameterDefinitionStore\n} from '../../stores/parameter/parameter.definition.store';\nimport {\n ParameterValuesStore\n} from '../../stores/parameter/parameter.values.store';\nimport {\n IGridPagerData,\n IWizardChoiceData,\n} from '../../ap-interface/interfaces';\nimport {\n ApDynGridColumnConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridPagerConfigBase\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {ApGridPagerType} from '../../ap-interface';\nimport {ApPermissions} from 'invoker-transport';\nimport {\n ApDynGridPagerConfig,\n IDynGridWizardChoiceData\n} from '../../ap-dyngrids/config/ap-dyn-grid-pager-config';\nimport {\n GetPermissionPipe\n} from '../../ap-permission/pipes/get-permission.pipe';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {ApGuidUtil, GetBooleanPipe, GetElementOxidCalculatePipe, GetRoundNumericPipe} from '../../ap-utils';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {\n SettingsStore\n} from '../../stores/base-data/settings.store';\nimport {\n ApDynGridButtonColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-button-column-config';\nimport {\n ApDynComponentComponent\n} from '../../ap-dyncomponent/ap-dyncomponent.component';\nimport {\n LoginStore\n} from '../../stores/login/login.store';\nimport {\n ApDynGridImageColumnConfig\n} from '../../ap-dyngrids/config/ap-dyn-grid-image-column-config';\nimport {\n IModalDialogData,\n IModalDialogResult,\n ModalDialogButtonDisable\n} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {\n ApDynformsConfigTextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {\n ModalDialogStore\n} from '../../stores/dialog/modal.dialog.store';\nimport {\n ApDynformsConfigComboBox\n} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {\n ApDynformsConfigDatepicker\n} from '../../ap-dynforms/config/ap-dynforms-config-datepicker';\nimport * as moment from 'moment';\nimport IParameterDefinition = Data.Parameter.IParameterDefinition;\nimport ILanguage = Data.Language.ILanguage;\nimport ISettings = Data.BaseData.ISettings;\nimport IGuid = System.IGuid;\nimport ParameterType = Data.Parameter.Enums.ParameterType;\nimport ParameterRefObjectType = Data.Parameter.Enums.ParameterRefObjectType;\nimport IParameterValue = Data.Parameter.IParameterValue;\n\ninterface IParameterItem {\n Id: IGuid;\n SourceItem: IParameterValue;\n Status: number;\n StatusClass: string;\n StatusDesc: string;\n ParaDef: IParameterDefinition;\n Name: string;\n Value: string;\n StandardIcon: string;\n InfoIcon: string;\n Mandatory: boolean;\n Info: string;\n ValidFrom: Date;\n ValidTo: Date;\n Image: string;\n ToolTip: string;\n Size: string;\n Unit: string;\n}\n\nexport enum ApParameterGridPagerActions {\n DELETE = 0,\n ADD = 1\n}\n\n@Component({\n selector: 'ap-parameter-value',\n template: `\n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class ApParameterValueComponent implements AfterContentInit, OnDestroy {\n @ViewChild(ApDynComponentComponent, {static: true}) dynComponent: ApDynComponentComponent;\n @Input() refId: IGuid;\n @Input() refObject: ParameterRefObjectType;\n columns: ApDynGridColumnConfigBase[] = [];\n items = new BehaviorSubject([]);\n pager: ApDynGridPagerConfigBase;\n parameterValuesLoading$ = combineLatest([\n this.parameterValuesStore.Listen(s => s.loading),\n this.parameterDefinitionStore.Listen(s => s.loading)\n ]).pipe(map(([value, definition]) => value || definition));\n\n private _subscriptions: Array = [];\n private _applyClicked = new EventEmitter();\n private _onEdit = new EventEmitter(true);\n private _settings: ISettings;\n private _editedParameterValue: any;\n private _createParameterList: { [id: string]: IParameterValue } = {};\n private _updateParameterList: { [id: string]: IParameterValue } = {};\n private _deleteParameterList: { [id: string]: IParameterValue } = {};\n\n constructor(private parameterDefinitionStore: ParameterDefinitionStore,\n private campaignYearStore: CampaignYearStore,\n private parameterValuesStore: ParameterValuesStore,\n private permissionPipe: GetPermissionPipe,\n private translationStore: TranslationStore,\n private roundNumericPipe: GetRoundNumericPipe,\n private elementOxideCalculate: GetElementOxidCalculatePipe,\n private booleanPipe: GetBooleanPipe,\n private languageStore: LanguageStore,\n private settingsStore: SettingsStore,\n private loginStore: LoginStore,\n private modalDialogStore: ModalDialogStore) {\n this._subscriptions.push(this._applyClicked.subscribe((e) => this._onApplyClicked(e)));\n this._subscriptions.push(this.modalDialogStore.Listen(s => s.result).subscribe(c => this.modalDialogResult(c)));\n this._subscriptions.push(this._onEdit.subscribe((event) => this._openEditDialog(event.ParaDef, event.SourceItem)));\n }\n\n public getElement(event: any): any {\n switch (event.ParaDef.type) {\n case 'text':\n return new ApDynformsConfigTextbox({\n key: 'Parameter',\n label: event.ParaDef.TranslationKey\n });\n case 'boolean':\n return new ApDynformsConfigComboBox({\n key: 'Parameter3',\n value: event.SourceItem.ValueBoolean === true ? 1 : -1,\n valueField: 'id',\n textField: 'label',\n label: event.ParaDef.TranslationKey,\n options: [\n {\n id: 1,\n label: this.translationStore.FindTranslationForSelectedLanguage('Global__Yes')\n },\n {\n id: -1,\n label: this.translationStore.FindTranslationForSelectedLanguage('Global__No')\n }\n ]\n });\n case 'number':\n return new ApDynformsConfigNumerictextbox({\n key: 'Parameter1',\n label: event.ParaDef.TranslationKey,\n value: event.SourceItem.ValueNumber\n });\n case 'list':\n return new ApDynformsConfigComboBox({\n key: 'Parameter2',\n value: event.SourceItem.ValueListKey,\n valueField: 'Id',\n textField: 'Name',\n label: event.ParaDef.TranslationKey,\n options: event.ParaDef.ListValues\n });\n }\n }\n\n ngAfterContentInit(): void {\n this.getDataFromStore();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n\n gridBuilder(): void {\n this.columns = [\n new ApDynGridStatusColumnConfig({\n field: 'Status', class: 'StatusClass', description: 'StatusDesc'\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Name',\n title: 'Global__Name',\n width: 200,\n sortIndex: 0,\n sortDesc: false,\n filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: 'Value',\n title: 'Global_Value',\n width: 200,\n filterable: true,\n }),\n new ApDynGridImageColumnConfig({\n title: 'Global__Info',\n imageUrl: 'Image',\n width: 40,\n tooltip: 'ToolTip',\n imageHeight: 'Size',\n imageWidth: 'Size'\n }),\n new ApDynGridButtonColumnConfig(\n {\n // disabled: (t) => !this._canTranslateCountryCodes.Contains(t.SourceItem.CountryCode),\n tooltip: 'Global__Edit',\n callback: this._onEdit,\n isStandardIcon: true,\n standardIcon: 'StandardIcon'\n }\n )\n ];\n\n this.permissionPipe.transform(ApPermissions.EDIT_CROPTYPES).subscribe(permission => {\n this.pager = new ApDynGridPagerConfig({\n listMassEditing: this.fillWizardChoiceData(),\n apply: this._applyClicked,\n hasPermission: permission,\n showWithoutSelection: true,\n preselect: false,\n });\n });\n }\n\n fillWizardChoiceData(): Observable<(IDynGridWizardChoiceData | IWizardChoiceData)[]> {\n return combineLatest([\n this.dynComponent.SelectedItems$,\n this.items,\n this.parameterDefinitionStore.Listen(s => s.data).asObservable()\n ]).pipe(\n map(([selectedItems, items, defs]) => {\n const result = [];\n if (selectedItems.length) {\n result.push({\n id: ApParameterGridPagerActions.DELETE,\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Delete'),\n type: ApGridPagerType.None,\n values: null,\n disabled: !this.dynComponent.getSelectedItems().Any\n } as IWizardChoiceData);\n }\n\n const itemDefinitions = items.map((item) => item.ParaDef.Id);\n defs.filter((def) => !itemDefinitions.includes(def.Id)).forEach((def) => {\n let config;\n switch (def.ParameterType) {\n case ParameterType.Text:\n config = new ApDynformsConfigTextbox({\n key: 'Value',\n label: this.translationStore.FindTranslationForSelectedLanguage(def.TranslationKey),\n value: def.StandardValue,\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: ''}),\n ]\n });\n break;\n case ParameterType.Boolean:\n config = new ApDynformsConfigComboBox({\n key: 'Value',\n label: this.translationStore.FindTranslationForSelectedLanguage(def.TranslationKey),\n textField: 'label',\n valueField: 'id',\n options: [\n {\n id: 1,\n label: this.translationStore.FindTranslationForSelectedLanguage('Global__Yes')\n },\n {\n id: -1,\n label: this.translationStore.FindTranslationForSelectedLanguage('Global__No')\n }\n ],\n value: def.StandardValue,\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: ''}),\n ]\n });\n break;\n case ParameterType.Number:\n config = new ApDynformsConfigNumerictextbox({\n key: 'Value',\n label: this.translationStore.FindTranslationForSelectedLanguage(def.TranslationKey),\n value: def.StandardValue.ToInteger(),\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: ''}),\n ]\n });\n break;\n case ParameterType.List:\n config = new ApDynformsConfigComboBox({\n key: 'Value',\n label: this.translationStore.FindTranslationForSelectedLanguage(def.TranslationKey),\n options: def.ListValues.map((v) => ({id: v.Id, label: v.Name})),\n textField: 'label',\n valueField: 'id',\n value: +def.StandardValue,\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: ''}),\n ]\n });\n break;\n }\n result.push({\n id: def.Id,\n name: this.translationStore.FindTranslationForSelectedLanguage(def.TranslationKey),\n type: ApGridPagerType.None,\n onSubmit: this._applyClicked,\n formConfig: [\n new ApDynformsConfigFieldset({\n key: this.translationStore.FindTranslationForSelectedLanguage(def.TranslationKey),\n config: [\n config,\n new ApDynformsConfigDatepicker({\n key: 'Date',\n label: 'Docu_Ini__ValidFrom',\n value: new Date(`${this.campaignYearStore.getSelectedCampaignYear().Year}`),\n minDate: new Date(`${this.campaignYearStore.getSelectedCampaignYear().Year}`),\n bottomView: 'decade',\n topView: 'decade',\n format: 'YYYY'\n })\n ]\n })\n ]\n } as IDynGridWizardChoiceData);\n });\n return result;\n })\n );\n }\n\n public Save(): void {\n Object.keys(this._createParameterList).forEach((key) => {\n this.parameterValuesStore.createParameterValue(this._createParameterList[key]);\n });\n this.parameterValuesStore.updateParameterValues(\n Object.keys(this._updateParameterList).map((key) => this._updateParameterList[key]));\n Object.keys(this._deleteParameterList).map((key) => this._deleteParameterList[key]).forEach((parameter) => {\n this.parameterValuesStore.deleteParameterValue(parameter);\n });\n }\n\n private modalDialogResult(result: IModalDialogResult): void {\n if (result.key === 'apply' && this._editedParameterValue) {\n this._update(this._editedParameterValue, result.formValues.Parameter, result.formValues.ValidFrom);\n }\n }\n\n private getDataFromStore(): void {\n this.parameterDefinitionStore.getParameterDefinitionByRefObjectType(this.refObject);\n if (this.refId !== undefined) {\n this.parameterValuesStore.loadParameterValue(this.refId);\n }\n this._subscriptions.push(this.settingsStore.FirstSetting$.subscribe(s => this._settings = s));\n this._subscriptions.push(\n combineLatest([\n this.parameterValuesStore.Listen(s => s.data),\n this.parameterDefinitionStore.Listen(s => s.data)\n .pipe(filter((definition) => definition !== undefined && definition.length !== 0)),\n this.languageStore.SelectedLanguage$\n ]).subscribe(([values, _, language]) => {\n this.items.next(values.map((v: IParameterValue) => this._createItem(v, language)));\n this.gridBuilder();\n })\n );\n }\n\n private _onApplyClicked(data: IGridPagerData): void {\n if (data.object.id === ApParameterGridPagerActions.DELETE) {\n this.dynComponent.getSelectedItems()\n .filter((row) => row['SourceItem'] !== undefined && !row['Mandatory'])\n .map((row) => row['SourceItem'])\n .forEach((item) => this._delete(item));\n } else if (this._deleteParameterList[data.object.id] !== undefined) {\n this._update(this._deleteParameterList[data.object.id], data.value);\n } else {\n this._create(data.object.id, data.form.Value, data.form.Date);\n }\n }\n\n private _booleanConverter(value: any): string {\n const retVal = this.booleanPipe.transform(value);\n if (retVal) {\n return this.translationStore.FindTranslationForSelectedLanguage('Global__Yes');\n }\n return this.translationStore.FindTranslationForSelectedLanguage('Global__No');\n }\n\n private _listConverter(id: number, definition: IParameterDefinition): string {\n const found = definition.ListValues.Find(_ => _.Id === id);\n if (!found) {\n return '';\n }\n return found.Name;\n }\n\n private _createTooltip(parameterDefinition: IParameterDefinition, parameterValue: IParameterValue, language: ILanguage): string {\n const description = this.translationStore.FindTranslationForSelectedLanguage(parameterDefinition.Description);\n const unit = parameterDefinition.Unit !== null ? parameterDefinition.Unit : '-';\n const validFrom = moment(parameterValue.ValidFrom).format(language.DateFormat);\n const validTo = moment(parameterValue.ValidTo).format(language.DateFormat);\n return `\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 ${this.translationStore.FindTranslationForSelectedLanguage('Nutrients_Pages_Popups__Description')}\n \n ${description}\n
\n ${this.translationStore.FindTranslationForSelectedLanguage('Settings__Lbl_Menu_Unit')}\n \n ${unit}\n
\n ${this.translationStore.FindTranslationForSelectedLanguage('Global_Mandatory')}\n \n ${this._booleanConverter(parameterDefinition.Mandatory)}\n
\n ${this.translationStore.FindTranslationForSelectedLanguage('Docu_Ini__ValidFrom')}\n \n ${validFrom}\n
\n ${this.translationStore.FindTranslationForSelectedLanguage('Docu_Ini__ValidTo')}\n \n ${validTo}\n
\n `;\n }\n\n private _createItem(value: IParameterValue, language: ILanguage): IParameterItem {\n const parameterDefinition = this.parameterDefinitionStore.getParameterDefinitionById(value.DefinitionId);\n const name = this.translationStore.FindTranslationForSelectedLanguage(parameterDefinition.TranslationKey);\n const validFrom = new Date(value.ValidFrom);\n const validTo = new Date(value.ValidTo);\n let display = '';\n switch (parameterDefinition.ParameterType) {\n case ParameterType.Text:\n display = value.ValueString;\n break;\n case ParameterType.Boolean:\n display = this._booleanConverter(value.ValueBoolean);\n break;\n case ParameterType.Number:\n display = value.ValueNumber.toString();\n break;\n case ParameterType.List:\n display = this._listConverter(value.ValueListKey, parameterDefinition);\n break;\n }\n return {\n Id: value.Id,\n SourceItem: value,\n Status: value.Valid ? 1 : -1,\n StatusClass: value.Valid ? 'ap-status-green' : 'ap-status-red',\n StatusDesc: value.Valid ? 'Global__Active' : 'Global__Inactive',\n ParaDef: parameterDefinition,\n Name: name,\n Value: display,\n StandardIcon: 'edit',\n InfoIcon: 'info',\n Mandatory: parameterDefinition.Mandatory,\n Info: parameterDefinition.Description,\n ValidFrom: validFrom,\n ValidTo: validTo,\n Image: '../../assets/img/info.png',\n ToolTip: this._createTooltip(parameterDefinition, value, language),\n Size: '24px',\n Unit: parameterDefinition.Unit !== null ? parameterDefinition.Unit : '-'\n };\n }\n\n private _create(definitionId, value, date?): void {\n const definition = this.parameterDefinitionStore.getParameterDefinitionById(definitionId);\n const campaignYearStart = this.campaignYearStore.getDefaultStart(date ? date.getFullYear() : undefined);\n const newParameterValue = {\n DefinitionId: definitionId,\n FarmId: this.loginStore.SelectedFarmId,\n RefId: this.refId,\n Id: ApGuidUtil.generateNewGuid(),\n Valid: true,\n ValidFrom: new Date(campaignYearStart),\n ValidTo: new Date('9999-07-31 23:59:59'),\n ValueNumber: definition.ParameterType === ParameterType.Number ? value : null,\n ValueBoolean: definition.ParameterType === ParameterType.Boolean ? value === 1 : null,\n ValueString: definition.ParameterType === ParameterType.Text ? value : null,\n ValueTimestamp: definition.ParameterType === ParameterType.TimeStamp ? value : null,\n ValueListKey: definition.ParameterType === ParameterType.List ? value : null,\n CreatedAt: null,\n CreatedBy: null,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n Version: 0,\n } as IParameterValue;\n this._createParameterList[newParameterValue.DefinitionId.toString()] = newParameterValue;\n delete this._updateParameterList[newParameterValue.DefinitionId.toString()];\n delete this._deleteParameterList[newParameterValue.DefinitionId.toString()];\n this.languageStore.SelectedLanguage$.subscribe(l => {\n this.items.next(this.items.value.concat(this._createItem(newParameterValue, l)));\n });\n }\n\n private _update(item: IParameterValue, value, date?): void {\n let display;\n item = ObjectFactory.Copy(item);\n const definition = this.parameterDefinitionStore.getParameterDefinitionById(item.DefinitionId);\n switch (definition.ParameterType) {\n case ParameterType.Text:\n item.ValueString = value;\n display = value;\n break;\n case ParameterType.Boolean:\n item.ValueBoolean = value !== -1;\n if (value !== -1) {\n display = this.translationStore.FindTranslationForSelectedLanguage('Global__Yes');\n } else {\n display = this.translationStore.FindTranslationForSelectedLanguage('Global__No');\n }\n break;\n case ParameterType.Number:\n item.ValueNumber = value;\n display = value.toString();\n break;\n case ParameterType.List:\n item.ValueListKey = value;\n display = this._listConverter(value, definition);\n break;\n case ParameterType.TimeStamp:\n item.ValueTimestamp = value;\n display = value;\n break;\n }\n\n if (date !== undefined) {\n item.ValidFrom = new Date(this.campaignYearStore.getDefaultStart(date.getFullYear()));\n }\n\n if (this._createParameterList[item.DefinitionId.toString()] !== undefined) {\n this._createParameterList[item.DefinitionId.toString()] = item;\n } else {\n this._updateParameterList[item.DefinitionId.toString()] = item;\n delete this._deleteParameterList[item.DefinitionId.toString()];\n }\n\n this.languageStore.SelectedLanguage$.subscribe(l => {\n this.items.next(\n this.items.getValue()\n .filter((v) => v.SourceItem.DefinitionId !== item.DefinitionId)\n .concat(this._createItem(item, l)));\n });\n }\n\n private _delete(item: IParameterValue): void {\n if (this._createParameterList[item.DefinitionId.toString()] !== undefined) {\n delete this._createParameterList[item.DefinitionId.toString()];\n this.items.next(this.items.value.filter((i) => i.Id !== item.Id));\n } else {\n this._deleteParameterList[item.DefinitionId.toString()] = item;\n delete this._updateParameterList[item.DefinitionId.toString()];\n this.items.next(this.items.value.filter((i) => this._deleteParameterList[i.SourceItem.DefinitionId] === undefined));\n }\n this.items.next(this.items.value.filter((v) => v.SourceItem.DefinitionId !== item.DefinitionId));\n }\n\n private _openEditDialog(parameterDefinition, item): void {\n this._editedParameterValue = ObjectFactory.Copy(item);\n const dialog = {\n title: this.translationStore.FindTranslationForSelectedLanguage('Global_Parameter_Edit'),\n formConfig: {\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: 'ParameterFieldSet',\n columns: 2,\n config: this._getEditFieldSets(parameterDefinition, item)\n })\n ],\n values: {\n ParameterValue: item\n }\n },\n show: true,\n buttons: [\n {\n key: 'cancel',\n text: 'Global__Cancel',\n primary: false\n },\n {\n key: 'apply',\n text: 'Global__Take',\n primary: true,\n disable: ModalDialogButtonDisable.FormInvalid,\n }\n ],\n } as IModalDialogData;\n this.modalDialogStore.setModalDialogData(dialog);\n }\n\n private _getEditFieldSets(parameterDefinition, item): ApDynformsConfigDatepicker[] {\n const result = [];\n switch (parameterDefinition.ParameterType) {\n case ParameterType.Text:\n result.push(new ApDynformsConfigTextbox({\n key: 'Parameter',\n label: parameterDefinition.TranslationKey,\n value: item.ValueString,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.pattern(parameterDefinition.Regex),\n errorKey: 'Text_ValueInvalid'\n })\n ]\n }));\n break;\n case ParameterType.Boolean:\n result.push(new ApDynformsConfigComboBox({\n key: 'Parameter',\n value: item.ValueBoolean === true ? 1 : -1,\n valueField: 'id',\n textField: 'label',\n label: parameterDefinition.TranslationKey,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.pattern(parameterDefinition.Regex),\n errorKey: 'Text_ValueInvalid'\n })\n ],\n options: [\n {\n id: 1,\n label: this.translationStore.FindTranslationForSelectedLanguage('Global__Yes')\n },\n {\n id: -1,\n label: this.translationStore.FindTranslationForSelectedLanguage('Global__No')\n }\n ]\n }));\n break;\n case ParameterType.Number:\n result.push(new ApDynformsConfigNumerictextbox({\n key: 'Parameter',\n label: parameterDefinition.TranslationKey,\n value: item.ValueNumber,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.pattern(parameterDefinition.Regex),\n errorKey: 'Text_ValueInvalid'\n })\n ]\n }));\n break;\n default:\n result.push(new ApDynformsConfigComboBox({\n key: 'Parameter',\n value: item.ValueListKey,\n valueField: 'Id',\n textField: 'Name',\n label: parameterDefinition.TranslationKey,\n options: parameterDefinition.ListValues,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.pattern(parameterDefinition.Regex),\n errorKey: 'Text_ValueInvalid'\n })\n ]\n }));\n }\n const minDate = new Date(`${this.campaignYearStore.getSelectedCampaignYear().Year}`);\n const currentDate = new Date(item.ValidFrom);\n result.push(new ApDynformsConfigDatepicker({\n key: 'ValidFrom',\n label: 'Docu_Ini__ValidFrom',\n value: currentDate < minDate ? minDate : currentDate,\n minDate,\n bottomView: 'decade',\n topView: 'decade',\n format: 'YYYY'\n }));\n return result;\n }\n}\n","
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","import {AfterViewInit, Component, EventEmitter, Input, OnDestroy, ViewChild} from '@angular/core';\nimport {ApParameterValueComponent} from './ap-parameter-value.component';\nimport ParameterRefObjectType = Data.Parameter.Enums.ParameterRefObjectType;\nimport IGuid = System.IGuid;\nimport {combineLatest, Subscription} from 'rxjs';\n\nexport enum ParameterTabs {\n Parameter = 0,\n Parameter_History = 1,\n}\n\n@Component({\n selector: 'ap-parameter',\n templateUrl: './ap-parameter.component.html'\n})\nexport class ApParameterComponent implements AfterViewInit, OnDestroy {\n @Input() refId: IGuid;\n @Input() refObject: ParameterRefObjectType;\n @ViewChild(ApParameterValueComponent, {static: false})\n public parameterValue: ApParameterValueComponent;\n\n public selectedTab: ParameterTabs = ParameterTabs.Parameter;\n public ParameterRefObjectType: ParameterRefObjectType = ParameterRefObjectType.Field;\n\n private _onSave: EventEmitter = new EventEmitter();\n private _afterViewInit: EventEmitter = new EventEmitter();\n\n private _subscriptions: Subscription[] = [];\n\n constructor() {\n this._subscriptions.push(combineLatest([\n this._afterViewInit,\n this._onSave,\n ]).subscribe(() => this.parameterValue.Save()));\n }\n\n ngAfterViewInit(): void {\n this._afterViewInit.emit();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n selectTab(e): void {\n setTimeout(() => this.setTab(e), 1);\n }\n\n private setTab(e): void {\n switch (this.selectedTab) {\n case ParameterTabs.Parameter:\n break;\n case ParameterTabs.Parameter_History:\n break;\n }\n this.selectedTab = e.index;\n }\n\n public Save(): void {\n this._onSave.emit();\n }\n}\n","import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {Validators} from '@angular/forms';\nimport {merge} from 'lodash';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigTextbox} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {LoggerStore} from '../../stores/docu/logger.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {Observable, Subscription} from 'rxjs';\nimport {ApDynformsConfigComboBox} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {filter, map, mergeMap, startWith} from 'rxjs/operators';\nimport ILogger = Data.DocuContext.Logger.ILogger;\nimport {ApRoleTypeService} from '../../services/common/ap-role-type.service';\n\n/**\n * Component for editing or creating a logger\n */\n@Component({\n selector: 'ap-logger-edit',\n template: `\n \n
\n \n \n
\n
`\n})\n\n/**\n * Component for editing or creating a logger\n */\nexport class ApLoggerEditComponent implements OnInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: ILogger;\n public formConfig: ApDynformsConfigFieldset[];\n public isNewMode = false;\n public caption: string;\n public saving$: Observable;\n private SendTargetHansenhof = {key: 1, text: 'Hansenhof'};\n private SendTargetLogicway = {key: 2, text: 'Logicway'};\n private SendTargetAgricon = {key: 3, text: 'Agricon'};\n private SendTargetControlKey = 'SendTarget';\n private _subscriptions: Array = [];\n\n constructor(private formStore: FormStore,\n private loggerStore: LoggerStore,\n private loginStore: LoginStore) {\n this.saving$ = this.loggerStore.Listen(s => s.saving);\n this._subscriptions.Add(this.loggerStore.Listen(s => s.saved).subscribe(saved => {\n if (saved) {\n this.formStore.closeForm();\n }\n }\n ));\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n Id: undefined,\n Imei: '',\n Typ: null,\n SendTarget: this.SendTargetHansenhof.key,\n IsDeleted: false,\n FarmId: this.loginStore.SelectedFarmId,\n CreatedAt: new Date(),\n CreatedBy: null,\n ChangedBy: null,\n ChangedAt: null,\n DeletedBy: null,\n DeletedAt: null,\n Version: 0,\n Password: null,\n NewPassword: null,\n PwSalt: null\n };\n } else {\n this.isNewMode = false;\n }\n this.caption = this.isNewMode ? 'Settings__Lbl_Logger_Create' : 'Settings__Lbl_Logger_Edit';\n this.formBuilder();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n\n /**\n * binding of validators\n */\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'logger',\n config: [\n new ApDynformsConfigTextbox({\n key: 'Imei',\n label: 'Docu_Ini__Imei',\n value: this.data.Imei,\n validators: [\n new ApDynformsValidator({\n validator: Validators.maxLength(15),\n errorKey: 'Global__Imei_Demands_15_Characters'\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(15),\n errorKey: 'Global__Imei_Demands_15_Characters'\n }),\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Fill_Imei'\n })\n ]\n }),\n\n new ApDynformsConfigTextbox({\n key: 'Typ',\n label: 'Docu_Ini__Type',\n value: this.data.Typ\n })\n ]\n })];\n\n if (ApRoleTypeService.hasAgriconRole(this.loginStore.User)) {\n this.formConfig[0].config.Add(new ApDynformsConfigComboBox({\n key: this.SendTargetControlKey,\n value: this.data.SendTarget,\n label: 'Global__Source',\n options: [\n this.SendTargetHansenhof,\n this.SendTargetLogicway,\n this.SendTargetAgricon\n ],\n textField: 'text',\n valueField: 'key',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'}),\n ]\n }));\n\n this.formConfig[0].config.Add(new ApDynformsConfigTextbox({\n key: 'newpassword',\n label: 'Admin_Pages_Popups__NewPassword',\n value: this.data.NewPassword,\n disabled$: this.dynForm.form$.pipe(\n filter((form) => !!form),\n mergeMap((form) => form.controls[this.SendTargetControlKey].valueChanges.pipe(\n map(v => !this.isAgriconLogger(v)),\n startWith(!this.isAgriconLogger(this.data.SendTarget))\n )))\n }));\n }\n }\n\n private isAgriconLogger(sendTarget: number): boolean {\n return sendTarget === this.SendTargetAgricon.key;\n }\n\n /**\n * Submitting the changes.\n * Either creating a new object or updating the current.\n */\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n if (this.isNewMode) {\n this.loggerStore.createLogger(this.data);\n } else {\n this.loggerStore.updateLogger(this.data);\n }\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {Component, OnInit, ViewChild} from '@angular/core';\nimport {FormBuilder, ValidatorFn, Validators} from '@angular/forms';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigComboBox} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {ApDynformsConfigDatepicker} from '../../ap-dynforms/config/ap-dynforms-config-datepicker';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {merge} from 'lodash';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {MachineStore} from '../../stores/docu/machine.store';\nimport {LoggerStore} from '../../stores/docu/logger.store';\nimport {MachineLoggerStore} from '../../stores/docu/machine.logger.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {ApDateRangeValidator} from '../../ap-dynforms/validators/ap-date-range-validator';\nimport IMachinesLogger = Data.DocuContext.MachinesLogger.IMachinesLogger;\nimport ILogger = Data.DocuContext.Logger.ILogger;\n\n/**\n * Component for editing or creating a machine-logger mapping.\n */\n@Component({\n selector: 'ap-machines-logger-edit',\n template: `\n \n
\n \n \n
\n
`\n})\n\n/**\n * Component for editing or creating a machine-logger mapping.\n */\nexport class ApMachinesLoggerEditComponent implements OnInit {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: IMachinesLogger;\n public formConfig: ApDynformsConfigFieldset[];\n public formValidators: ApDynformsValidator[];\n public isNewMode = false;\n public logger: ILogger[];\n public dateFrom: Date;\n public dateTo: Date;\n public caption: string;\n\n constructor(private formStore: FormStore,\n private fb: FormBuilder,\n private machinesLoggerStore: MachineLoggerStore,\n private loggerStore: LoggerStore,\n private machineStore: MachineStore,\n private loginStore: LoginStore) {\n this.logger = this.loggerStore.getLogger();\n }\n\n /**\n * when the component is loaded\n */\n ngOnInit(): void {\n if (!this.data) {\n this.isNewMode = true;\n this.data = {\n Id: undefined,\n IsDeleted: false,\n Logger: null,\n Machine: null,\n FarmId: this.loginStore.SelectedFarmId,\n DateFrom: new Date(),\n DateTo: new Date(),\n CreatedAt: new Date(),\n CreatedBy: null,\n ChangedBy: null,\n ChangedAt: null,\n DeletedBy: null,\n DeletedAt: null,\n Version: 0,\n };\n } else {\n this.isNewMode = false;\n }\n\n this.dateFrom = new Date(this.data.DateFrom);\n this.dateTo = new Date(this.data.DateTo);\n this.caption = this.isNewMode ? 'Settings__Lbl_Loggerassignment_Create' : 'Settings__Lbl_Loggerassignment_Edit';\n this.formBuilder();\n }\n\n /**\n * binding of validators\n */\n formBuilder(): void {\n this.formValidators = [\n new ApDynformsValidator({\n validator: ApDateRangeValidator.ValidateDateRange('DateFrom', 'DateTo'),\n errorKey: 'AgriConnect_Error_MinMax'\n })\n ];\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'MachineLogger',\n config: [\n new ApDynformsConfigComboBox({\n key: 'Logger',\n value: this.data.Logger,\n valueField: 'Id',\n textField: 'Imei',\n valuePrimitive: false,\n label: 'Docu_Ini__Datalogger',\n options: this.logger,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n }),\n ]\n }),\n\n new ApDynformsConfigComboBox({\n key: 'Machine',\n value: this.data.Machine,\n valueField: 'Id',\n textField: 'Name',\n valuePrimitive: false,\n label: 'Docu_Ini__Engine',\n options: this.machineStore.Listen(s => s.data).getValue(),\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n always: true\n }),\n ]\n }),\n\n new ApDynformsConfigDatepicker({\n key: 'DateFrom',\n label: 'Docu_Ini__From',\n value: new Date(this.data.DateFrom),\n formErrors: ['AgriConnect_Error_MinMax']\n }),\n\n new ApDynformsConfigDatepicker({\n key: 'DateTo',\n label: 'Docu_Ini__To',\n value: this.dateTo,\n formErrors: ['AgriConnect_Error_MinMax']\n })\n ]\n })];\n }\n\n /**\n * Submitting the changes.\n * Either creating a new object or updating the current.\n */\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n\n if (this.isNewMode) {\n this.machinesLoggerStore.createMachinesLogger(this.data as IMachinesLogger);\n } else {\n this.machinesLoggerStore.updateMachinesLogger(this.data as IMachinesLogger);\n }\n this.formStore.closeForm();\n }\n\n /**\n * Cancel clicked eventHandler - closes form.\n */\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {AfterContentInit, AfterViewInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigComboBox} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {IApPermissionData} from '../../ap-interface';\nimport {ApPermissions} from 'invoker-transport';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {MapViewStore} from '../../stores/layout/mapview.store';\nimport {map} from 'rxjs/operators';\nimport {ObjectFactory} from 'ts-tooling';\nimport {FarmStore} from '../../stores/farm/farm.store';\nimport {NotifyStore} from '../../stores/dialog/notify.store';\nimport {ApDynformsConfigTextbox} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport ISettings = Data.BaseData.ISettings;\nimport IFarm = Data.Authentication.IFarm;\nimport {CountryStore} from '../../stores/common/country.store';\nimport ICountry = Data.Common.ICountry;\n\ninterface ISettingsSaveState {\n SettingsSaved: boolean | undefined;\n RegistryNumberSaved: boolean | undefined;\n CountrySaved: boolean | undefined;\n}\n\ntype ElementOxyde = {\n Text: string;\n Value: number;\n};\n\ntype DigitItem = {\n Value: number;\n};\n\ninterface SettingsData {\n FarmName: string;\n CustomerNumber: string;\n Street: string;\n Street2: string;\n PostalCodePlusCity: string;\n State: string;\n RegistryNumber: string;\n DigitsAfterDecimalPoint: number;\n FarmTime: string;\n UnitElementOxyd: number;\n Country: ICountry;\n}\n\n@Component({\n selector: 'ap-settings-edit',\n template: `\n \n
\n \n
\n
`\n})\nexport class ApSettingsEditComponent implements OnInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public loading$: Observable;\n public disabledButton: BehaviorSubject = new BehaviorSubject(false);\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n public ApPermissions = ApPermissions;\n public apPermissionData: IApPermissionData;\n\n // use behaviour subject to be able to bind observables to the dynform\n // when not using observables and switching the farm the dynform validators\n // stoped working because another instance of fieldset has been assigned to the form\n private _data: BehaviorSubject = new BehaviorSubject(null);\n private _setting: ISettings = null;\n private _subscriptions: Array = [];\n private _saveState: ISettingsSaveState;\n\n constructor(private translationStore: TranslationStore,\n private settingsStore: SettingsStore,\n private farmStore: FarmStore,\n private mapViewStore: MapViewStore,\n private notifyStore: NotifyStore,\n private countryStore: CountryStore) {\n }\n\n ngOnInit(): void {\n this.loading$ = combineLatest([\n this.settingsStore.Listen(s => s.loading),\n this.farmStore.Listen(s => s.loading),\n this.countryStore.Listen(s => s.loading)\n ]).pipe(\n map(([settingsLoading, farmLoading, countriesLoading]) => settingsLoading || farmLoading || countriesLoading)\n );\n this.countryStore.loadAllCountries();\n this.mapViewStore.hideMapView();\n this.caption = this.translationStore.FindTranslationForSelectedLanguage('Settings__Label_Settings');\n this.formConfig = this._getFieldSets();\n\n this._subscriptions.push(combineLatest([\n this.settingsStore.Listen(s => s.data),\n this.farmStore.Listen(s => s.data)\n ]).subscribe(([settings, farms]) => {\n if (settings && settings.length && farms && farms.length) {\n this._applyFormData(settings[0], farms[0]);\n }\n }));\n\n this._subscriptions.push(combineLatest([\n this.farmStore.Listen(x => x.registryNumberUpdated),\n this.farmStore.Listen(x => x.countryUpdated),\n this.settingsStore.Listen(x => x.settingsSaved)\n ]).subscribe(([registryNumberUpdated, countryUpdated, settingsSaved]) => {\n // check if the save operation finished with true or false.\n // Undefined is the initial value and means the operation did no finish, yet\n if (settingsSaved != null) {\n this._saveState.SettingsSaved = settingsSaved;\n }\n if (countryUpdated != null) {\n this._saveState.CountrySaved = countryUpdated;\n }\n if (registryNumberUpdated != null) {\n this._saveState.RegistryNumberSaved = registryNumberUpdated;\n }\n // after collecting the save state\n // => perform afterSave operations to enable/disable button\n // and show save success or fail message\n this._onAfterSave();\n }));\n\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(x => x.unsubscribe());\n }\n\n public onSubmit(): void {\n this.disabledButton.next(true);\n this._saveState = {\n CountrySaved: undefined,\n SettingsSaved: undefined,\n RegistryNumberSaved: undefined\n };\n if (this._isSettingsChanged(this.dynForm.form.value)) {\n this._setting.DigitsAfterDecimalPoint = this.dynForm.form.value['DigitsAfterDecimalPoint'];\n this._setting.FarmTime = this.dynForm.form.value['FarmTime'];\n this._setting.UnitElementOxyd = this.dynForm.form.value['UnitElementOxyd'];\n this.settingsStore.updateSettings(this._setting);\n } else {\n this._saveState.SettingsSaved = true;\n }\n const registryNumber = this.dynForm.form.value['RegistryNumber'];\n if (this._data.value?.RegistryNumber !== registryNumber) {\n this.farmStore.updateRegistryNumber(registryNumber);\n } else {\n this._saveState.RegistryNumberSaved = true;\n }\n const farmCountry = this.dynForm.form.value['Country'];\n if (this._data.value?.Country !== farmCountry) {\n this.farmStore.updateFarmCountry(farmCountry);\n } else {\n this._saveState.CountrySaved = true;\n }\n\n // in case no updates need we need to execute the post save operations at this point\n this._onAfterSave();\n }\n\n\n /**\n * Handles post save logic when all settings have been saved\n * - enable/disable the save button\n * - show save success or fail message\n * @private\n */\n private _onAfterSave(): void {\n const saveComplete = this._saveState && this._saveState.CountrySaved != null &&\n this._saveState.RegistryNumberSaved != null &&\n this._saveState.SettingsSaved != null;\n\n if (!saveComplete) {\n return;\n }\n\n // Check if all save operations were successful\n if (this._saveState.CountrySaved &&\n this._saveState.RegistryNumberSaved &&\n this._saveState.SettingsSaved) {\n this.notifyStore.showSaveSuccessMessage();\n } else {\n this.notifyStore.showSaveFailMessage();\n }\n this.disabledButton.next(!saveComplete);\n }\n\n private _applyFormData(setting: ISettings, farm: IFarm): void {\n // use timeout to avoid 'expression has been changed after it was checked' errors\n setTimeout(() => this._data.next( {\n FarmName: farm?.FarmName ? farm.FarmName : ' ',\n CustomerNumber: farm?.CustomerNumber ? farm.CustomerNumber : ' ',\n Street: farm?.Street ? farm.Street : ' ',\n Street2: farm?.Street2 ? farm.Street2 : ' ',\n PostalCodePlusCity: this._getPostCodePlusLocation(farm),\n State: farm?.State ? farm.State : ' ',\n RegistryNumber: farm?.RegistryNumber ? farm.RegistryNumber : ' ',\n DigitsAfterDecimalPoint: setting.DigitsAfterDecimalPoint,\n FarmTime: setting.FarmTime,\n UnitElementOxyd: setting.UnitElementOxyd,\n Country: farm?.Country\n }), 0);\n this._setting = ObjectFactory.Copy(setting);\n }\n\n private _getFieldSets(): ApDynformsConfigFieldset[] {\n return [\n new ApDynformsConfigFieldset({\n key: 'Global__Settings_Address',\n legend: 'Global__Settings_Address',\n config: [\n new ApDynformsConfigTextbox({\n key: 'CustomerNumber',\n label: 'Global__Farm_CustomerNumber',\n value$: this._data\n .pipe(map(x => x?.CustomerNumber)),\n disabled: true\n }),\n new ApDynformsConfigTextbox({\n key: 'FarmName',\n label: 'Global__Farm_CustomerName',\n value$: this._data\n .pipe(map(x => x?.FarmName)),\n disabled: true\n }),\n new ApDynformsConfigTextbox({\n key: 'Street',\n label: 'Global__Farm_Street',\n value$: this._data\n .pipe(map(x => x?.Street)),\n disabled: true\n }),\n new ApDynformsConfigTextbox({\n key: 'Street2',\n label: 'Global__Farm_Street2',\n value$: this._data\n .pipe(map(x => x?.Street2)),\n disabled: true\n }),\n new ApDynformsConfigTextbox({\n key: 'PostalCodePlusCity',\n label: 'Global__Farm_PostalCodePlusCity',\n value$: this._data\n .pipe(map(x => x?.PostalCodePlusCity)),\n disabled: true\n }),\n new ApDynformsConfigTextbox({\n key: 'State',\n label: 'Global__Farm_State',\n value$: this._data\n .pipe(map(x => x?.State)),\n disabled: true\n }),\n new ApDynformsConfigTextbox({\n key: 'RegistryNumber',\n label: 'Global__Farm_RegistryNumber',\n value$: this._data\n .pipe(map(x => x?.RegistryNumber)),\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n key: 'Global__General_Information',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigComboBox({\n key: 'UnitElementOxyd',\n label: 'Settings__Lbl_Menu_Unit',\n value$: this._data\n .pipe(map(x => x?.UnitElementOxyd)),\n valueField: 'Value',\n textField: 'Text',\n options: this._getElementOxydSettings(),\n valuePrimitive: true,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Select_Category'\n })]\n }),\n new ApDynformsConfigComboBox({\n key: 'DigitsAfterDecimalPoint',\n label: 'Global__Display_Number_Decimal_Point',\n value$: this._data\n .pipe(map(x => x?.DigitsAfterDecimalPoint)),\n valueField: 'Value',\n textField: 'Value',\n options: this._getDigitsAfterDecimalPoint(),\n valuePrimitive: true,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Select_Category'\n })]\n }),\n new ApDynformsConfigComboBox({\n key: 'FarmTime',\n label: 'Base_Weather__LocaleTimeZone',\n value$: this._data\n .pipe(map(x => x?.FarmTime)),\n valueField: 'Name',\n textField: 'Name',\n options: this.settingsStore.getTimeZones(),\n valuePrimitive: true,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Select_Category'\n })]\n }),\n new ApDynformsConfigComboBox({\n key: 'Country',\n label: 'Global__Country',\n value$: this._data\n .pipe(map(x => x?.Country)),\n valueField: 'Id',\n textField: 'Id',\n options: this.countryStore.Countries$,\n valuePrimitive: false,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Select_Category'\n })]\n })\n ]\n })\n ];\n }\n\n private _getPostCodePlusLocation(farm: IFarm): string {\n let postalCodePlusLocation: string;\n if (farm.PostalCode) {\n postalCodePlusLocation = farm.PostalCode;\n }\n if (farm.Location) {\n if (postalCodePlusLocation) {\n postalCodePlusLocation += ' ' + farm.Location;\n } else {\n postalCodePlusLocation = farm.Location;\n }\n }\n if (!postalCodePlusLocation) {\n postalCodePlusLocation = ' ';\n }\n return postalCodePlusLocation;\n }\n\n private _isSettingsChanged(formValue: any): boolean {\n return this._data.value?.DigitsAfterDecimalPoint !== formValue['DigitsAfterDecimalPoint'] ||\n this._data.value?.FarmTime !== formValue['FarmTime'] ||\n this._data.value?.UnitElementOxyd !== formValue['UnitElementOxyd'];\n }\n\n private _getElementOxydSettings(): ElementOxyde[] {\n return [\n {Text: this.translationStore.FindTranslationForSelectedLanguage('Global__Element_Label'), Value: 1},\n {Text: this.translationStore.FindTranslationForSelectedLanguage('Global__Oxyd_Label'), Value: 2}\n ];\n }\n\n private _getDigitsAfterDecimalPoint(): DigitItem[] {\n return [\n {Value: 0},\n {Value: 1},\n {Value: 2},\n {Value: 3},\n {Value: 4},\n {Value: 5},\n {Value: 6}\n ];\n }\n}\n","import {AfterContentInit, Component, ViewChild} from '@angular/core';\nimport {Validators} from '@angular/forms';\nimport {find, merge} from 'lodash';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\nimport {ApDynformsConfigFieldset} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigTextbox,\n ApDynformsConfigTextboxType\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {ApDynformsValidator} from '../../ap-dynforms/ap-dynforms-validator';\nimport {ApDynformsConfigCheckbox} from '../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {ApDynformsConfigMultiSelect} from '../../ap-dynforms/config/ap-dynforms-config-multiselect';\nimport {ApDynformsConfigComboBox} from '../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {ApGetAvailableUserGroupsPipe} from '../../stores/pipes/ap-get-available-usergroups.pipe';\nimport {ApGetAssignedUserGroupsPipe} from '../../stores/pipes/ap-get-assigned-usergroups.pipe';\nimport {DriverStore} from '../../stores/docu/driver.store';\nimport {FarmUsersStore} from '../../stores/farm/farm.users.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {UserGroupStore} from '../../stores/settings/user.group.store';\nimport {Subscription} from 'rxjs';\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IFarmUsers = Data.Authentication.IFarmUsers;\n\n\n@Component({\n selector: 'ap-users-edit',\n template: `\n \n
\n \n \n
\n
`,\n})\nexport class ApUsersEditComponent implements AfterContentInit {\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n public data: IFarmUsers;\n public formConfig: ApDynformsConfigFieldset[];\n public caption: string;\n public drivers: IDriver[];\n private _subscriptions: Array = [];\n public listDriverItems: Array<{ text: string, value: System.IGuid }> = [];\n public listUsergroupItems: Array<{ text: string, value: number }> = [];\n public assignedUserGroups: Array<{ text: string, value: number }> = [];\n\n constructor(private formStore: FormStore,\n private translationStore: TranslationStore,\n private driverStore: DriverStore,\n private farmUsersStore: FarmUsersStore,\n private userGroupsStore: UserGroupStore,\n private getAvailableUserGroups: ApGetAvailableUserGroupsPipe,\n private getAssignedUserGroups: ApGetAssignedUserGroupsPipe) {\n }\n\n ngAfterContentInit(): void {\n this.caption = 'Permission_Feature_Edit_Users';\n this.getDataFromStore();\n this.createDriverComboBox();\n this.formBuilder();\n }\n\n getDataFromStore(): void {\n this.drivers = this.driverStore.Listen(s => s.data).getValue();\n this.listUsergroupItems = this.getAvailableUserGroups.transform();\n this.assignedUserGroups = [];\n for (const userGroupUser of this.data.UsergroupUser) {\n this.assignedUserGroups.push({\n text: this.translationStore.FindTranslationForSelectedLanguage(userGroupUser?.Usergroup?.Name),\n value: userGroupUser?.Usergroup?.Id\n });\n }\n this.formBuilder();\n }\n\n createDriverComboBox(): void {\n this.listDriverItems.push({\n value: null,\n text: '<' + this.translationStore.FindTranslationForSelectedLanguage('Global_No_Worker') + '>'\n });\n\n this.listDriverItems = this.drivers.map(d => ({\n text: `${d.Name}, ${d.Firstname}`,\n value: d.Id\n })).sort((a, b) => a.text !== b.text ? a.text < b.text ? -1 : 1 : 0);\n }\n\n formBuilder(): void {\n this.formConfig = [\n new ApDynformsConfigFieldset({\n key: 'Global__General_Information',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigTextbox({\n key: 'UserName',\n label: 'Global__Username',\n type: ApDynformsConfigTextboxType.Text,\n value: this.data.User.UserName,\n disabled: true,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n }),\n new ApDynformsValidator({\n validator: Validators.email,\n errorKey: 'Admin_Pages_Login_Reset_Password_Email_Error'\n }),\n new ApDynformsValidator({\n validator: Validators.nullValidator,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(1),\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigTextbox({\n key: 'Email',\n label: 'Global__Email',\n type: ApDynformsConfigTextboxType.Email,\n value: this.data.User.EMail,\n disabled: true,\n validators: [\n new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required',\n }),\n new ApDynformsValidator({\n validator: Validators.email,\n errorKey: 'Admin_Pages_Login_Reset_Password_Email_Error'\n }),\n new ApDynformsValidator({\n validator: Validators.nullValidator,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.minLength(1),\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })\n ]\n }),\n new ApDynformsConfigCheckbox({\n key: 'IsActive',\n label: 'Global__Active',\n value: this.data.IsActive,\n }),\n new ApDynformsConfigMultiSelect({\n key: 'UserGroups',\n value: this.assignedUserGroups,\n valueField: 'value',\n textField: 'text',\n disabled: true,\n label: 'Global_User_Groups',\n options: this.listUsergroupItems,\n valuePrimitive: false,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Select_Category'\n })]\n }),\n new ApDynformsConfigComboBox({\n key: 'Driver',\n valueField: 'value',\n textField: 'text',\n valuePrimitive: true,\n value: this.data.Driver !== null ? this.data.Driver.Id : null,\n label: 'Global__Worker',\n options: this.listDriverItems,\n })\n ]\n })\n ];\n }\n\n onSubmitClick(): void {\n merge(this.data, this.dynForm.form.value);\n const farmUser = this.data as IFarmUsers;\n\n const driver = this.dynForm.form.get('Driver').value;\n if (driver === null) {\n farmUser.Driver = null;\n } else {\n farmUser.Driver = find(this.drivers, _ => _.Id === driver);\n }\n this.farmUsersStore.update(farmUser);\n this.formStore.closeForm();\n }\n\n onCancelClick(): void {\n this.formStore.closeForm();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n OnDestroy,\n Output,\n Renderer2\n} from '@angular/core';\nimport {GridComponent} from '@progress/kendo-angular-grid';\nimport {fromEvent, Subscription} from 'rxjs';\nimport {process} from '@progress/kendo-data-query';\n\n@Directive({\n selector: '[gridDragAndDrop]'\n})\nexport class GridDragAndDropDirective implements AfterViewInit, OnDestroy {\n\n @Output() rowDrop = new EventEmitter<{ sourceItem: any, destinationItem: any }>();\n\n private _draggedIndex;\n private _subscriptions: Subscription[] = [];\n\n constructor(private element: ElementRef,\n private gridComponent: GridComponent,\n private renderer: Renderer2) {\n }\n\n ngAfterViewInit(): void {\n const rows = this.element.nativeElement.querySelectorAll('tbody tr');\n rows.forEach((row, i) => {\n this.renderer.setAttribute(row, 'draggable', 'true');\n const dragStart = fromEvent(row, 'dragstart');\n const dragOver = fromEvent(row, 'dragover');\n const drop = fromEvent(row, 'drop');\n\n this._subscriptions.push(dragStart.subscribe(() => {\n this._draggedIndex = i;\n }));\n\n this._subscriptions.push(dragOver.subscribe(e => {\n if (this._draggedIndex !== undefined) {\n e.preventDefault();\n }\n }));\n\n this._subscriptions.push(drop.subscribe(() => {\n const sourceIndex = this._draggedIndex + this.gridComponent.skip;\n const destinationIndex = i + this.gridComponent.skip;\n const items = process(Array.isArray(this.gridComponent.data) ?\n this.gridComponent.data :\n this.gridComponent.data.data, {\n skip: this.gridComponent.skip,\n take: this.gridComponent.pageSize,\n filter: this.gridComponent.filter,\n group: this.gridComponent.group,\n sort: this.gridComponent.sort\n });\n this.rowDrop.emit({\n sourceItem: items.data[sourceIndex],\n destinationItem: items.data[destinationIndex]\n });\n this._draggedIndex = undefined;\n }));\n });\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NFertilizationBurgerMenuComponent} from './n-fertilization-burger-menu.component';\nimport {MapLayerControlComponent} from './map-layer-control.component';\nimport {BodyModule, GridModule, SharedModule} from '@progress/kendo-angular-grid';\nimport {ApUtilsModule} from '../../ap-utils';\nimport {ButtonsModule} from '@progress/kendo-angular-buttons';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {RadioButtonModule} from '@progress/kendo-angular-inputs';\nimport {LayoutModule} from '@progress/kendo-angular-layout';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {DropDownsModule} from '@progress/kendo-angular-dropdowns';\n\nconst COMPONENTS = [MapLayerControlComponent, NFertilizationBurgerMenuComponent];\n\n@NgModule({\n declarations: COMPONENTS,\n exports: COMPONENTS,\n entryComponents: COMPONENTS,\n imports: [\n CommonModule,\n GridModule,\n SharedModule,\n ApUtilsModule,\n BodyModule,\n ButtonsModule,\n ApResponsiveTextModule,\n RadioButtonModule,\n LayoutModule,\n ReactiveFormsModule,\n DropDownsModule\n ],\n})\nexport class BurgerMenuEntryComponentsModule {\n static COMPONENTS = COMPONENTS;\n}\n","\n\n\n \n \n
\n \n \n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n
\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {ILayerControlLayer} from '../../ap-interface/map/layer-control-layer.interface';\nimport {MapLayerControlStore} from '../../stores/map/map.layer.control.store';\nimport {BingImagery} from '../../ap-map';\n\ninterface LayerItem {\n text: string;\n layer: ILayerControlLayer;\n}\n\n@Component({\n selector: 'ap-map-layer-control',\n templateUrl: './map-layer-control.component.html',\n styleUrls: ['./map-layer-control.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MapLayerControlComponent {\n static type = 'MapLayerControlComponent';\n\n constructor(public mapLayerControlStore: MapLayerControlStore) {\n }\n\n rowDrop(event: { sourceItem: LayerItem; destinationItem: LayerItem }): void {\n this.mapLayerControlStore.reorder(event.sourceItem, event.destinationItem, 1);\n }\n\n clickCheckBox(dataItem: LayerItem): void {\n this.mapLayerControlStore.onVisibilityChanged.emit({\n layer: dataItem.layer,\n visibility: !dataItem.layer.Visibility,\n });\n }\n\n reorder(dataItem: LayerItem, dir: 1 | -1): void {\n this.mapLayerControlStore.move(dataItem, dir);\n }\n\n mapsChange(event: { text: string, value: BingImagery }): void {\n this.mapLayerControlStore.onBackgroundMapChanged.emit(event.value);\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 \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","import {AfterViewInit, Component, Renderer2, ViewChild} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup} from '@angular/forms';\nimport {PanelBarComponent} from '@progress/kendo-angular-layout';\nimport {fromEvent} from 'rxjs';\n\n@Component({\n selector: 'ap-n-fertilization-burger-menu',\n templateUrl: './n-fertilization-burger-menu.component.html',\n})\nexport class NFertilizationBurgerMenuComponent implements AfterViewInit {\n static type = 'NFertilizationBurgerMenuComponent';\n\n @ViewChild(PanelBarComponent, {static: true}) panelBar: PanelBarComponent;\n\n logFileForm: FormGroup = new FormGroup({\n area: new FormControl(),\n enabled: new FormControl(false),\n point: new FormControl(),\n pointEnabled: new FormControl(false),\n });\n\n fieldForm: FormGroup = new FormGroup({\n area: new FormControl(),\n enabled: new FormControl(false),\n point: new FormControl(),\n pointEnabled: new FormControl(false),\n });\n\n sumForm: FormGroup = new FormGroup({\n enabled: new FormControl(false),\n });\n\n draggedIndex: number;\n\n constructor(private renderer: Renderer2) {\n }\n\n ngAfterViewInit(): void {\n this.panelBar.contentChildItems.forEach((item, i) => {\n const header = item.header.nativeElement;\n this.renderer.setAttribute(header, 'draggable', 'true');\n const drag = fromEvent(header, 'dragstart');\n const over = fromEvent(header, 'dragover');\n const drop = fromEvent(header, 'drop');\n\n drag.subscribe(() => {\n this.draggedIndex = i;\n });\n\n over.subscribe((e) => {\n if (this.draggedIndex !== undefined) {\n e.preventDefault();\n }\n });\n\n drop.subscribe(() => {\n if (i !== this.draggedIndex) {\n }\n });\n });\n }\n\n getFormControl(control, name): FormControl {\n return control.get(name);\n }\n\n remove(control: AbstractControl, name): void {\n if (control.value === name) {\n control.setValue(null);\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'n-fertilization-property',\n templateUrl: './n-fertilization-property.component.html',\n})\nexport class NFertilizationPropertyComponent {\n static type = 'NFertilizationPropertyComponent';\n}\n","
\n \n \n \n \n \n \n
\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DropDownsModule} from '@progress/kendo-angular-dropdowns';\nimport {ApTranslationModule} from '../../translation/ap-translation.module';\nimport {TrackPropertyComponent} from './track-property.component';\nimport {NFertilizationPropertyComponent} from './n-fertilization-property.component';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {FieldDistributionLegendSelectorComponent} from './field-distribution-legend-selector.component';\nimport {ApDynformsModule} from '../../ap-dynforms/ap-dynforms.module';\n\nconst COMPONENTS = [TrackPropertyComponent, NFertilizationPropertyComponent, FieldDistributionLegendSelectorComponent];\n\n@NgModule({\n declarations: COMPONENTS,\n exports: COMPONENTS,\n entryComponents: COMPONENTS,\n imports: [\n CommonModule,\n DropDownsModule,\n ApTranslationModule,\n ApResponsiveTextModule,\n ApDynformsModule\n ]\n})\nexport class ColorLegendEntryComponentsModule {\n static COMPONENTS = COMPONENTS;\n}\n","import {Component, ViewChild} from '@angular/core';\nimport {ApDynformsComponent} from '../../ap-dynforms/ap-dynforms.component';\n\n@Component({\n selector: 'field-distribution-legend-selector',\n template: `\n \n \n {{dataItem}}\n \n \n `,\n})\nexport class FieldDistributionLegendSelectorComponent {\n static type = 'FieldDistributionLegendSelectorComponent';\n\n @ViewChild(ApDynformsComponent, {static: true}) dynForm: ApDynformsComponent;\n\n data: {\n currentNutrient: string;\n selectionChanged: (nutrient: string) => void;\n };\n nutrients = ['P', 'K', 'Mg', 'pH'];\n\n change(nutrient: any): void {\n this.data.selectionChanged(nutrient);\n }\n}\n","import {Component, EventEmitter} from '@angular/core';\nimport {ColorLegendStore} from '../../stores/map/color.legend.store';\n\nexport interface ITrackProperties {\n value: string;\n items: string[];\n change: EventEmitter;\n}\n\n@Component({\n selector: 'track-property',\n template: `\n \n \n {{dataItem | translate}}\n \n `\n})\nexport class TrackPropertyComponent {\n static type = 'TrackPropertyComponent';\n\n data: ITrackProperties;\n\n constructor(private colorLegendStore: ColorLegendStore) {\n }\n\n change($event: string): void {\n this.colorLegendStore.valueChange(TrackPropertyComponent.type, this.data.items.indexOf($event));\n }\n}\n","import {combineLatest} from 'rxjs';\nimport {\n ApDynformsConfigComboBox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-combobox';\nimport {\n ApDynformsConfigFieldset\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n nameOf\n} from '../../../../../ap-core/utils/ap-name-of';\nimport {\n MachineStore\n} from '../../../../../stores/docu/machine.store';\nimport {\n InstrumentStore\n} from '../../../../../stores/docu/instrument.store';\nimport {\n DriverStore\n} from '../../../../../stores/docu/driver.store';\nimport {\n ApDynformsConfigTextbox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {\n IPpPlanningWizardDetailsFormData,\n IPpPlanningWizardDetailsResponsiveData,\n IProductOption,\n PpConstants\n} from '../../pp-planning-wizard.types';\nimport {\n ApDynformsValidator\n} from '../../../../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {\n ApDynformsConfigDatepicker\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-datepicker';\nimport {\n ApDynformsConfigTemplate\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-template';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n ApDynformsConfigButton\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-button';\nimport {\n CampaignYearStore\n} from '../../../../../stores/login/campaignyear.store';\nimport {EventEmitter, Injectable, TemplateRef} from '@angular/core';\nimport {delay, map} from 'rxjs/operators';\nimport {\n ApTranslationService\n} from '../../../../../ap-utils/service/ap-translation.service';\nimport {\n ApDateService\n} from '../../../../../ap-core/services/ap-date-service';\nimport {\n OperationModesEnum\n} from '../../../../../stores/common/operation-modes.store';\nimport {\n IOperationModeAppSetting\n} from '../../../../../types/application-settings.types';\nimport {AgriportConstantsEnum} from '../../../../../ap-interface/enums/ap-agriport-constants.enum';\nimport {AgriportConstantsService} from '../../../../../services/common/agriport-constants.service';\nimport {GetRoundNumericService} from '../../../../../ap-utils/service/get-round-numeric.service';\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport IPlantProtectionProduct = Data.BaseData.IPlantProtectionProduct;\n\n@Injectable()\nexport class DetailsCommonUiProvider {\n private static readonly ProductAvgLabelBase = 'Global__Product_avg';\n private static readonly ProductMaxLabelBase = 'MaxRateAtMaxWater';\n\n constructor(private driverStore: DriverStore,\n private machineStore: MachineStore,\n private instrumentStore: InstrumentStore,\n private campaignYearStore: CampaignYearStore,\n private dateService: ApDateService,\n private translationService: ApTranslationService,\n private roundNumericService: GetRoundNumericService,\n private agriportConstantsService: AgriportConstantsService) {\n }\n\n /**\n * Creates a fieldset for the documentation section of the details form\n * Includes comboboxes for selecting machine, instrument, and driver\n * @returns Fieldset configuration for the documentation section\n * @public\n */\n public createGeneralFieldset(operationModeEnum: OperationModesEnum,\n operationModeAppSettings: IOperationModeAppSetting[],\n validWorkTypes: IWorktypes[]): ApDynformsConfigFieldset[] {\n const result: ApDynformsConfigFieldset[] = [];\n result.Add(new ApDynformsConfigFieldset({\n key: 'Information',\n legend: 'Global__Information',\n classList: 'ap-error-no-border',\n config: [\n new ApDynformsConfigTextbox({\n key: nameOf('CountFields'),\n label: 'AgriConnect__Count_Fields',\n disabled: true\n }),\n new ApDynformsConfigTextbox({\n key: nameOf('TotalArea'),\n label: 'Nutrients__TotalArea_ha',\n disabled: true\n }),\n new ApDynformsConfigTextbox({\n key: nameOf('Crop'),\n label: 'Settings__Lbl_Menu_Croptypes',\n disabled: true\n })\n ]\n }));\n result.Add(new ApDynformsConfigFieldset({\n key: 'General',\n legend: 'Global__General_Information',\n config: [\n new ApDynformsConfigComboBox({\n key: nameOf('OperationModeKey'),\n label: 'Global__OperationMode',\n options: operationModeAppSettings,\n valueField: nameOf('OperationMode'),\n textField: nameOf('Text'),\n groupByField: nameOf('Category'),\n translate: true,\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigComboBox({\n key: nameOf('WorkType'),\n label: 'Docu_Ini__WorkType',\n options: validWorkTypes,\n disabled: operationModeEnum !== OperationModesEnum.Constant,\n valueField: nameOf('Id'),\n textField: nameOf('Description'),\n translate: true,\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigDatepicker({\n key: nameOf('ApplicationDate'),\n label: 'Nutrients__FertilizationDate',\n minDate: new Date(this.campaignYearStore.getSelectedCampaignYear().DefaultStart),\n maxDate: this.dateService.getEndOfDayDate(this.campaignYearStore.getSelectedCampaignYear().DefaultEnd),\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigTextbox({\n key: nameOf('Note'),\n label: 'Global__Note'\n })\n ]\n }));\n return result;\n }\n\n /**\n * Creates a fieldset for the product selection section of the details form\n * Includes a combobox for selecting a product, numeric inputs for amount and max amount,\n * and a button for adding the selected product to the list\n * @param productsTemplateRef Template reference for the product list\n * @param responsiveData Responsive data related to the product selection\n * @param addProductCallback Callback for adding a product to the list\n * @returns Array of fieldset configurations\n * @public\n */\n public createProductsFieldset(productsTemplateRef: TemplateRef,\n responsiveData: IPpPlanningWizardDetailsResponsiveData,\n addProductCallback: EventEmitter): ApDynformsConfigFieldset[] {\n const productsFieldset: ApDynformsConfigFieldset[] = [];\n productsFieldset.Add(new ApDynformsConfigFieldset({\n legend: 'Global__Products',\n columns: 1,\n useMaxWidth: true,\n key: 'Global__Products',\n infoText: `${this.translationService.translate('Global__Maximum')} ${PpConstants.MAX_SELECTABLE_PRODUCTS}`,\n config: [\n new ApDynformsConfigTemplate({\n key: 'SelectedProducts',\n value: productsTemplateRef\n })\n ]\n }));\n productsFieldset.Add(new ApDynformsConfigFieldset({\n key: 'ProductSelection',\n legend: 'ProductSelection',\n hideLegend: true,\n classList: 'ap-field-set-no-legend-line',\n config: [\n new ApDynformsConfigComboBox({\n key: nameOf('PreProductId'),\n label: 'Global__Product',\n // we need the rxjs delay here to put the update of the disabled value on top of our callstack\n // if its updated immediately the form still shows its old value because clearing the values happens later (formValueChanges).\n disabled$: responsiveData.ProductListItems$?.pipe(\n delay(0),\n map(p => p?.length >= PpConstants.MAX_SELECTABLE_PRODUCTS)\n ),\n options: responsiveData.PreselectValidProducts$.pipe(\n map(products => this.sortProductsByName(products)),\n map(products => this.getProductOption(products))\n ),\n valueField: nameOf('Id'),\n textField: nameOf('Name'),\n groupByField: nameOf('EffectiveRange'),\n translate: true\n }),\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('PreAvgAmount'),\n // we need the rxjs delay here to put the update of the disabled value on top of our callstack\n // if its updated immediately the form still shows its old value because clearing the values happens later (formValueChanges).\n disabled$: combineLatest([\n responsiveData.PreselectedProductDetail$,\n responsiveData.ProductListItems$\n ]).pipe(\n delay(0),\n map(([preselectedProductDetails, productListItems]) => !preselectedProductDetails || productListItems?.length >= PpConstants.MAX_SELECTABLE_PRODUCTS)\n ),\n min: responsiveData.PreselectedMinProductRate$,\n max: responsiveData.PreselectedMaxProductRate$,\n label$: responsiveData.PreselectedProductDetail$.pipe(map(d =>\n this.getLabelWithUnitAndMinMaxRange(DetailsCommonUiProvider.ProductAvgLabelBase, d?.Unit?.Key))),\n decimals: 3\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('PreMaxAmount'),\n infoText: 'InformationMaxRateAtMaxWater',\n disabled: true,\n label$: responsiveData.PreselectedProductDetail$.pipe(\n map(productDetail => {\n const minProductOfProductMax = +this.agriportConstantsService.GetConstant(AgriportConstantsEnum.PpMinProductOfProductMax);\n return this.getLabelWithUnitAndMinMaxRange(DetailsCommonUiProvider.ProductMaxLabelBase,\n productDetail?.Unit?.Key, productDetail?.AmountMax * minProductOfProductMax, productDetail?.AmountMax);\n })\n ),\n decimals: 3\n })\n ]\n }));\n\n productsFieldset.Add(new ApDynformsConfigFieldset({\n key: 'AddProduct',\n legend: 'AddProduct',\n hideLegend: true,\n classList: 'ap-field-set-no-legend-line',\n columns: 3,\n config: [\n new ApDynformsConfigPlaceholder(),\n new ApDynformsConfigButton({\n key: 'addProductButtonKey',\n value: 'Global_Add',\n callback: addProductCallback,\n disabledButton$: responsiveData?.AddProductButtonDisabled$\n }),\n new ApDynformsConfigPlaceholder()\n ]\n }\n ));\n return productsFieldset;\n }\n\n /**\n * Creates a fieldset for the documentation section of the details form\n * Includes comboboxes for selecting machine, instrument, and driver\n * @returns Fieldset configuration for the documentation section\n * @public\n */\n public createDocuFieldSet(): ApDynformsConfigFieldset {\n return new ApDynformsConfigFieldset({\n key: 'Docu',\n legend: 'Global__Documentation',\n config: [\n new ApDynformsConfigComboBox({\n key: 'Machine',\n label: 'Settings__Lbl_Menu_Devices',\n textField: nameOf('NameWithSign'),\n valueField: nameOf('Id'),\n valuePrimitive: true,\n value: undefined,\n options: this.machineStore.Listen(s => s.data),\n sort: 1\n }),\n new ApDynformsConfigComboBox({\n key: 'Instrument',\n label: 'Docu_Ini__Tool',\n textField: nameOf('Name'),\n valueField: nameOf('Id'),\n valuePrimitive: true,\n options: this.instrumentStore.Listen(s => s.data),\n sort: 1\n }),\n new ApDynformsConfigComboBox({\n key: 'Driver',\n label: 'Docu_Ini__Motorist',\n textField: nameOf('ShortFullName'),\n valueField: nameOf('Id'),\n valuePrimitive: true,\n options: this.driverStore.Listen(s => s.data),\n sort: 1\n })\n ]\n });\n }\n\n /**\n * Converts an array of plant protection products to an array of product options\n * @param products Array of plant protection products\n * @returns Array of product options\n * @private\n */\n private getProductOption(products: IPlantProtectionProduct[]): IProductOption[] {\n return products.map(product => {\n const productDetail = product?.ProductDetails?.FirstOrDefault();\n return {\n Id: product.Id,\n Name: product.ProductName,\n EffectiveRange: productDetail?.EffectiveRange?.Key\n };\n });\n }\n\n /**\n * Sorts an array of plant protection products by their name\n * @param products Array of plant protection products\n * @returns Sorted array of plant protection products\n * @private\n */\n private sortProductsByName(products: IPlantProtectionProduct[]): IPlantProtectionProduct[] {\n return products.sort((first, second) => {\n if (first.ProductName == null) {\n return 1;\n }\n if (second.ProductName == null) {\n return -1;\n }\n return first.ProductName.localeCompare(second.ProductName);\n });\n }\n\n /**\n * Generates a label for the product amount and max amount inputs\n * Includes the base label, the maximum allowed amount, and the unit\n * @param baseLabel The base label for the input\n * @param unitKey Translation key for the product's unit of measurement\n * @param minAmount Optional minimum allowed amount for the product\n * @param maxAmount Optional maximum allowed amount for the product\n * @returns The formatted label\n * @private\n */\n private getLabelWithUnitAndMinMaxRange(baseLabel: string, unitKey: string | undefined,\n minAmount?: number, maxAmount?: number): string {\n if (!unitKey) {\n return baseLabel;\n }\n let label = `${this.translationService.translate(baseLabel)}`;\n if (Number.isFinite(minAmount) || Number.isFinite(maxAmount)) {\n minAmount = this.roundNumericService.roundAsNumber(minAmount, 3);\n maxAmount = this.roundNumericService.roundAsNumber(maxAmount, 3);\n label += ` [${this.translationService.translate('RangeAllowed')} ${minAmount} - ${maxAmount}`;\n }\n return label + ` ${this.translationService.translate(unitKey)}]`;\n }\n}\n","import {ApDynformsConfigFieldset} from '../../../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n nameOf\n} from '../../../../../ap-core/utils/ap-name-of';\nimport {IPpPlanningWizardDetailsFormData, IPpPlanningWizardDetailsResponsiveData} from '../../pp-planning-wizard.types';\nimport {\n AgriportConstantsService\n} from '../../../../../services/common/agriport-constants.service';\nimport {\n ApDynformsValidator\n} from '../../../../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {\n ApDynformsConfigCheckbox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApTranslationService\n} from '../../../../../ap-utils/service/ap-translation.service';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {Injectable} from '@angular/core';\nimport {\n AgriportConstantsEnum\n} from '../../../../../ap-interface/enums/ap-agriport-constants.enum';\n\n@Injectable()\nexport class DetailsTargetRateMapPerFieldUiProvider {\n constructor(private translationService: ApTranslationService,\n private agriportConstantsService: AgriportConstantsService) {\n }\n\n /**\n * FieldSets for operationMode target rate\n */\n public createTargetRateMapPerFieldFieldset(responsiveData: IPpPlanningWizardDetailsResponsiveData): ApDynformsConfigFieldset[] {\n return [\n new ApDynformsConfigFieldset({\n legend: 'Global__Agronomy',\n key: 'Agronomy',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: nameOf('ECStage'),\n label: 'Global__ECStage',\n decimals: 0,\n format: 'n0',\n min: +this.agriportConstantsService.GetConstant(AgriportConstantsEnum.EcMin),\n max: +this.agriportConstantsService.GetConstant(AgriportConstantsEnum.EcMax),\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'}),\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('NUptakeAverage'),\n label: `${this.translationService.translate('AvgNUptakeShort')} ${this.translationService.translate('Nutrients__kg_N_per_ha')}`,\n disabled: true\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n legend: `${this.translationService.translate('Global__Water')} [${this.translationService.translate('Unit_l_per_ha')}]`,\n key: 'Global__Water',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterAvg'),\n label: 'Global__Avg_Water',\n min: responsiveData?.MinWaterAvg$,\n max: 500,\n decimals: 0,\n format: 'n0',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterRange'),\n label: 'Global__Working_Range',\n min: 0,\n max: responsiveData?.MaxWaterRange$,\n decimals: 0,\n format: 'n0',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterMin'),\n label: 'Global__RateMin',\n disabled: true,\n decimals: 0,\n format: 'n0'\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterMax'),\n label: 'Global__RateMax',\n disabled: true,\n decimals: 0,\n format: 'n0'\n }),\n new ApDynformsConfigCheckbox({\n key: nameOf('WaterSetZeroAtMin'),\n label: 'PP_Set_Zero_At_Water_Min'\n }),\n new ApDynformsConfigPlaceholder()\n ]\n })\n ];\n }\n}\n","import {ApDynformsConfigFieldset} from '../../../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n nameOf\n} from '../../../../../ap-core/utils/ap-name-of';\nimport {IPpPlanningWizardDetailsFormData, IPpPlanningWizardDetailsResponsiveData} from '../../pp-planning-wizard.types';\nimport {\n AgriportConstantsService\n} from '../../../../../services/common/agriport-constants.service';\nimport {\n ApDynformsValidator\n} from '../../../../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {\n ApDynformsConfigCheckbox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApTranslationService\n} from '../../../../../ap-utils/service/ap-translation.service';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {Injectable} from '@angular/core';\nimport {\n AgriportConstantsEnum\n} from '../../../../../ap-interface/enums/ap-agriport-constants.enum';\n\n@Injectable()\nexport class DetailsTargetRateMapPerPlanUiProvider {\n constructor(private translationService: ApTranslationService,\n private agriportConstantsService: AgriportConstantsService) {\n }\n\n /**\n * FieldSets for operationMode target rate\n */\n public createTargetRateMapPerPlanFieldset(responsiveData: IPpPlanningWizardDetailsResponsiveData): ApDynformsConfigFieldset[] {\n return [\n new ApDynformsConfigFieldset({\n legend: 'Global__Agronomy',\n key: 'Agronomy',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: nameOf('ECStage'),\n label: 'Global__ECStage',\n decimals: 0,\n format: 'n0',\n min: +this.agriportConstantsService.GetConstant(AgriportConstantsEnum.EcMin),\n max: +this.agriportConstantsService.GetConstant(AgriportConstantsEnum.EcMax),\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'}),\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('NUptakeAverage'),\n label: `${this.translationService.translate('AvgNUptakeShort')} ${this.translationService.translate('Nutrients__kg_N_per_ha')}`,\n disabled: true\n })\n ]\n }),\n new ApDynformsConfigFieldset({\n legend: `${this.translationService.translate('Global__Water')} [${this.translationService.translate('Unit_l_per_ha')}]`,\n key: 'Global__Water',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterAvg'),\n label: 'Global__Avg_Water',\n min: responsiveData?.MinWaterAvg$,\n max: 500,\n decimals: 0,\n format: 'n0',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterRange'),\n label: 'Global__Working_Range',\n min: 0,\n max: responsiveData?.MaxWaterRange$,\n decimals: 0,\n format: 'n0',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterMin'),\n label: 'Global__RateMin',\n disabled: true,\n decimals: 0,\n format: 'n0'\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterMax'),\n label: 'Global__RateMax',\n disabled: true,\n decimals: 0,\n format: 'n0'\n }),\n new ApDynformsConfigCheckbox({\n key: nameOf('WaterSetZeroAtMin'),\n label: 'PP_Set_Zero_At_Water_Min'\n }),\n new ApDynformsConfigPlaceholder()\n ]\n })\n ];\n }\n}\n","import {ApDynformsConfigFieldset} from '../../../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigNumerictextbox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {\n nameOf\n} from '../../../../../ap-core/utils/ap-name-of';\nimport {IPpPlanningWizardDetailsFormData, IPpPlanningWizardDetailsResponsiveData} from '../../pp-planning-wizard.types';\nimport {\n AgriportConstantsService\n} from '../../../../../services/common/agriport-constants.service';\nimport {\n ApDynformsValidator\n} from '../../../../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {\n ApDynformsConfigCheckbox\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-checkbox';\nimport {\n ApTranslationService\n} from '../../../../../ap-utils/service/ap-translation.service';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../../../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {Injectable} from '@angular/core';\nimport {\n AgriportConstantsEnum\n} from '../../../../../ap-interface/enums/ap-agriport-constants.enum';\n\n@Injectable()\nexport class DetailsTargetRateUiProvider {\n constructor(private translationService: ApTranslationService,\n private agriportConstantsService: AgriportConstantsService) {\n }\n\n /**\n * FieldSets for operationMode target rate\n */\n public createTargetRateFieldset(responsiveData: IPpPlanningWizardDetailsResponsiveData): ApDynformsConfigFieldset[] {\n return [\n new ApDynformsConfigFieldset({\n legend: 'Global__Agronomy',\n key: 'Agronomy',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: nameOf('ECStage'),\n label: 'Global__ECStage',\n decimals: 0,\n format: 'n0',\n min: +this.agriportConstantsService.GetConstant(AgriportConstantsEnum.EcMin),\n max: +this.agriportConstantsService.GetConstant(AgriportConstantsEnum.EcMax),\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'}),\n ]\n }),\n new ApDynformsConfigPlaceholder()\n ]\n }),\n new ApDynformsConfigFieldset({\n legend: `${this.translationService.translate('Global__Water')} [${this.translationService.translate('Unit_l_per_ha')}]`,\n key: 'Global__Water',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterAvg'),\n label: 'Global__Avg_Water',\n min: responsiveData?.MinWaterAvg$,\n max: 500,\n decimals: 0,\n format: 'n0',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterRange'),\n label: 'Global__Working_Range',\n min: 0,\n max: responsiveData?.MaxWaterRange$,\n decimals: 0,\n format: 'n0',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterMin'),\n label: 'Global__RateMin',\n disabled: true,\n decimals: 0,\n format: 'n0'\n }),\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterMax'),\n label: 'Global__RateMax',\n disabled: true,\n decimals: 0,\n format: 'n0'\n }),\n new ApDynformsConfigCheckbox({\n key: nameOf('WaterSetZeroAtMin'),\n label: 'PP_Set_Zero_At_Water_Min'\n }),\n new ApDynformsConfigPlaceholder()\n ]\n })\n ];\n }\n}\n","import {ApDynformsConfigFieldset} from '../../../../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {ApDynformsConfigNumerictextbox} from '../../../../../ap-dynforms/config/ap-dynforms-config-numerictextbox';\nimport {nameOf} from '../../../../../ap-core/utils/ap-name-of';\nimport {IPpPlanningWizardDetailsFormData} from '../../pp-planning-wizard.types';\nimport {ApDynformsValidator} from '../../../../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {ApDynformsConfigPlaceholder} from '../../../../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {WorkTypes} from '../../../../../stores/base-data/worrktypes.store';\nimport {ApTranslationService} from '../../../../../ap-utils/service/ap-translation.service';\nimport {AgriportConstantsService} from '../../../../../services/common/agriport-constants.service';\nimport {Injectable} from '@angular/core';\n\n@Injectable()\nexport class DetailsUniformUiProvider {\n constructor(private translationService: ApTranslationService,\n private agriportConstantsService: AgriportConstantsService) {\n }\n\n public createUniformFieldset(formData: IPpPlanningWizardDetailsFormData): ApDynformsConfigFieldset[] {\n const uniformFieldSets = new Array();\n uniformFieldSets.Add(new ApDynformsConfigFieldset({\n legend: 'Global__Agronomy',\n key: 'Agronomy',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: nameOf('ECStage'),\n label: 'Global__ECStage',\n decimals: 0,\n format: 'n0',\n min: +this.agriportConstantsService.GetConstant('GS_GLOBAL_MIN'),\n max: +this.agriportConstantsService.GetConstant('GS_GLOBAL_MAX'),\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigPlaceholder()\n ]\n }));\n\n // Add water fieldset only in case of worktype spraying\n // Otherwise it makes no sense to make inputs there\n if (formData.WorkType === WorkTypes.Spraying) {\n uniformFieldSets.Add(new ApDynformsConfigFieldset({\n legend: 'Global__Water',\n key: 'Global__Water',\n config: [\n new ApDynformsConfigNumerictextbox({\n key: nameOf('WaterAvg'),\n label: `${this.translationService.translate('Global__Avg_Water')} [${this.translationService.translate('Unit_l_per_ha')}]`,\n min: 0,\n max: 500,\n decimals: 0,\n format: 'n0',\n infoText: 'Info_Uniform_PP',\n validators: [\n new ApDynformsValidator({validator: Validators.required, errorKey: 'Settings__Msg_Vali_Value_Required'})\n ]\n }),\n new ApDynformsConfigPlaceholder()\n ]\n }));\n }\n return uniformFieldSets;\n }\n}\n","import {\n ApDynGridColumnConfigBase,\n ApDynGridColumnHideConfig\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {nameOf} from '../../../../../ap-core/utils/ap-name-of';\nimport {\n IPpPlanningWizardDetailsData,\n IPpPlanningWizardDetailsFormData,\n IPpPlanningWizardOverviewGridData,\n IPpPlanningWizardSelectionGridData\n} from '../../pp-planning-wizard.types';\nimport {BestScanData} from '../../../../../types/scan.types';\nimport {\n GetRoundNumericPipeConfig\n} from '../../../../../ap-utils/pipes/configs/get-round-numeric.pipe.config';\nimport {Observable} from 'rxjs';\nimport {\n ApDynGridEditColumnConfig\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-edit-column-config';\nimport {GetRoundNumericPipe} from '../../../../../ap-utils';\nimport {ApTranslationService} from '../../../../../ap-utils/service/ap-translation.service';\nimport {StringFactory} from 'ts-tooling';\nimport {UnitsStore} from '../../../../../stores/common/units.store';\nimport {GetRoundNumericService} from '../../../../../ap-utils/service/get-round-numeric.service';\nimport {SettingsStore} from '../../../../../stores/base-data/settings.store';\nimport {LanguageStore} from '../../../../../stores/translation/language.store';\nimport {Injectable} from '@angular/core';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport {\n IGridStatus\n} from '../../../../../ap-interface/interfaces/ap-grid-status.interface';\nimport IPlantProtectionPlanBook = Data.TaskManagement.IPlantProtectionPlanBook;\n\n@Injectable()\nexport class OverviewGridColumnsUiProvider {\n constructor(private unitStore: UnitsStore,\n private settingsStore: SettingsStore,\n private languageStore: LanguageStore,\n private translationService: ApTranslationService,\n private roundNumericService: GetRoundNumericService,\n private roundNumericPipe: GetRoundNumericPipe) {\n }\n\n /**\n * Creates grid column configs for uniform operationMode with worktype 'spraying'\n * @public\n */\n public getUniformSprayingColumns(): ApDynGridColumnConfigBase {\n return new ApDynGridPropertyColumnConfig({\n title: `${this.translationService.translate('Global__AvgShort')} ${this.translationService.translate('Global__Water')} [${this.translationService.translate('Unit_l_per_ha')}]`,\n field: `${nameOf('PlanBook')}.${nameOf('ApplicationRate')}`,\n width: 100,\n filterable: true,\n headerFilterable: true,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n tooltip: (dataItem: IPpPlanningWizardOverviewGridData) => this.minMaxAvgTooltipGenerator(dataItem, 'avg'),\n });\n }\n\n /**\n * Creates grid column configs for target rate operationMode\n * @public\n */\n public getTargetRateColumns(): ApDynGridColumnConfigBase[] {\n return [\n new ApDynGridGroupColumnConfig({\n title: 'N__UptakeUnit',\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Avg_Symbol',\n field: `${nameOf('SelectionData')}.${nameOf('ScanData')}.${nameOf('NUptakeAvg')}`,\n width: 50,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0, GetRoundNumericPipeConfig.NullToEmptyReplaceConfig]\n }],\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Min',\n field: `${nameOf('SelectionData')}.${nameOf('ScanData')}.${nameOf('NUptakeMin')}`,\n width: 50,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0, GetRoundNumericPipeConfig.NullToEmptyReplaceConfig]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Max',\n field: `${nameOf('SelectionData')}.${nameOf('ScanData')}.${nameOf('NUptakeMax')}`,\n width: 50,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0, GetRoundNumericPipeConfig.NullToEmptyReplaceConfig]\n }]\n })\n ]\n }),\n new ApDynGridGroupColumnConfig({\n title: `${this.translationService.translate('Global__Water')} [${this.translationService.translate('Unit_l_per_ha')}]`,\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__AvgShort',\n field: `${nameOf('PlanBook')}.${nameOf('ApplicationRate')}`,\n width: 50,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }],\n columnLoading: nameOf('ColumnLoading'),\n tooltip: (dataItem: IPpPlanningWizardOverviewGridData) => this.minMaxAvgTooltipGenerator(dataItem, 'avg'),\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Min',\n field: `${nameOf('PlanBook')}.${nameOf('ApplicationMin')}`,\n width: 50,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }],\n columnLoading: nameOf('ColumnLoading'),\n tooltip: (dataItem: IPpPlanningWizardOverviewGridData) => this.minMaxAvgTooltipGenerator(dataItem, 'min'),\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Max',\n field: `${nameOf('PlanBook')}.${nameOf('ApplicationMax')}`,\n width: 50,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }],\n columnLoading: nameOf('ColumnLoading'),\n tooltip: (dataItem: IPpPlanningWizardOverviewGridData) => this.minMaxAvgTooltipGenerator(dataItem, 'max'),\n })\n ]\n })\n ];\n }\n\n /**\n * Creates grid column configs which are common for all operation modes.\n * @param mapHide\n * @public\n */\n public getCommonColumns(mapHide: Observable): ApDynGridColumnConfigBase[] {\n return [\n new ApDynGridStatusColumnConfig({\n field: `${nameOf('Status')}.${nameOf('state')}`,\n class: `${nameOf('Status')}.${nameOf('class')}`,\n description: `${nameOf('Status')}.${nameOf('description')}`,\n filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Number',\n field: `${nameOf('SelectionData')}.${nameOf('Nr')}`,\n width: 40,\n hide: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini_Subnumber',\n field: `${nameOf('SelectionData')}.${nameOf('TNr')}`,\n width: 40,\n hide: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Number',\n field: `${nameOf('SelectionData')}.${nameOf('NrTNr')}`,\n width: 50,\n headerFilterable: true,\n hide: new ApDynGridColumnHideConfig({\n selfHide: mapHide\n })\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Name',\n field: `${nameOf('SelectionData')}.${nameOf('Name')}`,\n width: 110,\n cssClass: 'left',\n sortIndex: 0,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Area',\n field: `${nameOf('SelectionData')}.${nameOf('Area')}`,\n width: 50,\n headerFilterable: true,\n tooltip: (dataItem) => this.roundNumericService.stringify(((dataItem as IPpPlanningWizardOverviewGridData)?.SelectionData as IPpPlanningWizardSelectionGridData).Area, 4),\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [this.settingsStore.FirstSetting.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Crop',\n field: `${nameOf('SelectionData')}.${nameOf('Crop')}`,\n width: 80,\n hide: true,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__EC',\n field: `${nameOf('DetailsData')}.${nameOf('FormData')}.${nameOf('ECStage')}`,\n width: 50,\n hide: true,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n })\n ];\n }\n\n /**\n * Creates grid column configs for the common last columns\n * @public\n */\n public getCommonEndColumns(): ApDynGridColumnConfigBase[] {\n return [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Products',\n field: nameOf('Products'),\n hide: true,\n width: 200,\n tooltip: (dataItem) => (dataItem as IPpPlanningWizardOverviewGridData)?.ProductsTooltip,\n multiline: true,\n filterable: true,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Base__SortItemDate',\n field: `${nameOf('DetailsData')}.${nameOf('FormData')}.${nameOf('ApplicationDate')}`,\n format: this.languageStore?.CurrentDateFormat,\n hide: true,\n width: 70\n }),\n new ApDynGridGroupColumnConfig({\n title: 'agrioptions_resources',\n hide: true,\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n field: nameOf('Machine'),\n title: 'Base__Engine',\n width: 100,\n hide: true,\n }),\n new ApDynGridPropertyColumnConfig({\n field: nameOf('Instrument'),\n title: 'AgriConnect_Ini__Tool',\n width: 100,\n hide: true\n }),\n new ApDynGridPropertyColumnConfig({\n field: nameOf('Driver'),\n title: 'Docu_Ini__Motorist',\n width: 100,\n hide: true\n })\n ]\n }),\n new ApDynGridEditColumnConfig({})\n ];\n }\n\n /**\n * Generates tooltip text for minimum and maximum values in the grid\n * Shows product calculations when no errors exist, otherwise displays error message\n * @param dataItem The grid data item containing product and application information\n * @param whichPropertyToUse Specifies whether to calculate for 'min' or 'max' values\n * @returns Formatted tooltip string with product calculations or error message\n * @private\n */\n private minMaxAvgTooltipGenerator(dataItem: IPpPlanningWizardOverviewGridData, whichPropertyToUse: 'min' | 'max' | 'avg'): string {\n if (StringFactory.IsNullOrEmpty(dataItem.ErrorMessage)) {\n const planBook = dataItem?.PlanBook;\n return planBook.ProductList.map(product => {\n const valueCalculateWith = whichPropertyToUse === 'max' ? planBook.ApplicationMax\n : whichPropertyToUse === 'min' ? planBook.ApplicationMin\n : planBook.ApplicationRate;\n const translatedUnit = this.translationService.translate(this.unitStore?.getUnitWithUnit(product.Unit?.Id).Key);\n const calculationResult = this.roundNumericService.roundAsNumber(valueCalculateWith * product.ProductRate / planBook.ApplicationRate);\n return `${product.Product.ProductName} ${calculationResult} ${translatedUnit}`;\n }).join('
');\n } else {\n return dataItem.ErrorMessage;\n }\n }\n}\n","import {\n ApDynGridColumnConfigBase,\n ApDynGridColumnHideConfig\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApDynGridStatusColumnConfig\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-status-column-config';\nimport {nameOf} from '../../../../../ap-core/utils/ap-name-of';\nimport {IPpPlanningWizardSelectionGridData} from '../../pp-planning-wizard.types';\nimport {\n IGridStatus\n} from '../../../../../ap-interface/interfaces/ap-grid-status.interface';\nimport {\n ApDynGridPropertyColumnConfig,\n FilterType\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {map} from 'rxjs/operators';\nimport {MapViewMode} from '../../../../../ap-interface';\nimport {BestScanData} from '../../../../../types/scan.types';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../../../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {\n GetRoundNumericPipeConfig\n} from '../../../../../ap-utils/pipes/configs/get-round-numeric.pipe.config';\nimport {MapViewStore} from '../../../../../stores/layout/mapview.store';\nimport {GetRoundNumericPipe} from '../../../../../ap-utils';\nimport {GetRoundNumericService} from '../../../../../ap-utils/service/get-round-numeric.service';\nimport {Injectable} from '@angular/core';\nimport ISettings = Data.BaseData.ISettings;\nimport ILanguage = Data.Language.ILanguage;\n\n@Injectable()\nexport class SelectionGridColumnsUiProvider {\n constructor(private mapViewStore: MapViewStore,\n private roundNumericService: GetRoundNumericService,\n private roundNumericPipe: GetRoundNumericPipe) {\n }\n\n public generateGridColumns(settings: ISettings, language: ILanguage): ApDynGridColumnConfigBase[] {\n return [\n new ApDynGridStatusColumnConfig({\n field: `${nameOf('Status')}.${nameOf('state')}`,\n class: `${nameOf('Status')}.${nameOf('class')}`,\n description: `${nameOf('Status')}.${nameOf('description')}`,\n filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Number',\n field: nameOf('Nr'),\n width: 60,\n hide: true,\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini_Subnumber',\n field: nameOf('TNr'),\n width: 60,\n hide: true,\n filterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Number',\n field: nameOf('NrTNr'),\n width: 70,\n filterable: true,\n headerFilterable: true,\n hide: new ApDynGridColumnHideConfig({\n selfHide: this.mapViewStore.Listen(s => s.mode).pipe(map((mode) => mode === MapViewMode.HIDE))\n })\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Name',\n field: nameOf('Name'),\n width: 150,\n filterable: true,\n sortIndex: 0,\n headerFilterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Area',\n field: nameOf('Area'),\n width: 100,\n filterable: true,\n headerFilterable: true,\n filterType: FilterType.NUMBER,\n cssClass: 'right',\n tooltip: (dataItem) => this.areaTooltip(dataItem),\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [settings.DigitsAfterDecimalPoint]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Crop',\n field: nameOf('Crop'),\n width: 80,\n filterable: true,\n headerFilterable: true,\n groupIndex: 0,\n groupDesc: true\n }),\n new ApDynGridStatusColumnConfig({\n field: `${nameOf('ScanData')}.${nameOf('Status')}.${nameOf('state')}`,\n class: `${nameOf('ScanData')}.${nameOf('Status')}.${nameOf('class')}`,\n description: `${nameOf('ScanData')}.${nameOf('Status')}.${nameOf('description')}`,\n filterable: true\n }),\n new ApDynGridGroupColumnConfig({\n title: 'Global__latest_Sensor_reading',\n hide: true,\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__EC',\n field: `${nameOf('ScanData')}.${nameOf('Ec')}`,\n cssClass: 'right',\n filterType: FilterType.NUMBER,\n width: 50,\n filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Date',\n field: `${nameOf('ScanData')}.${nameOf('Created')}`,\n format: language.DateFormat,\n width: 70,\n filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__AvgShort',\n field: `${nameOf('ScanData')}.${nameOf('NUptakeAvg')}`,\n width: 60,\n cssClass: 'right',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [settings.DigitsAfterDecimalPoint, GetRoundNumericPipeConfig.NullToEmptyReplaceConfig]\n }],\n filterType: FilterType.NUMBER,\n filterable: true\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Min',\n field: `${nameOf('ScanData')}.${nameOf('NUptakeMin')}`,\n width: 60,\n filterable: true,\n cssClass: 'right',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [settings.DigitsAfterDecimalPoint, GetRoundNumericPipeConfig.NullToEmptyReplaceConfig]\n }],\n filterType: FilterType.NUMBER,\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Max',\n field: `${nameOf('ScanData')}.${nameOf('NUptakeMax')}`,\n width: 60,\n filterable: true,\n cssClass: 'right',\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [settings.DigitsAfterDecimalPoint, GetRoundNumericPipeConfig.NullToEmptyReplaceConfig]\n }],\n filterType: FilterType.NUMBER,\n }),\n ]\n })\n ];\n }\n\n /**\n * Generates a tooltip for field area\n * @param dataItem The grid data item\n * @returns Formatted area string or undefined if no area\n * @private\n */\n private areaTooltip(dataItem: IPpPlanningWizardSelectionGridData): string | undefined {\n if (dataItem.Area) {\n return this.roundNumericService.stringify(dataItem.Area, 4);\n }\n return undefined;\n }\n}\n","import {BehaviorSubject, Observable} from 'rxjs';\nimport {ApDynGridColumnConfigBase} from '../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {ApDynGridPagerConfigBase} from '../../../ap-dyngrids/config/ap-dyn-grid-pager-config-base';\nimport {BestScanData} from '../../../types/scan.types';\nimport {OperationModesEnum} from '../../../stores/common/operation-modes.store';\nimport {IGridStatus} from '../../../ap-interface/interfaces/ap-grid-status.interface';\nimport {IOperationModeAppSetting} from '../../../types/application-settings.types';\nimport IGuid = System.IGuid;\nimport IFieldGeom = Data.FieldManagement.IFieldGeom;\nimport IPlantProtectionProductDetails = Data.BaseData.IPlantProtectionProductDetails;\nimport IPlantProtectionProduct = Data.BaseData.IPlantProtectionProduct;\nimport IPlantProtectionProductList = Data.TaskManagement.IPlantProtectionProductList;\nimport IPlantProtectionPlanBook = Data.TaskManagement.IPlantProtectionPlanBook;\n\nexport enum PpWizardStates {\n Cancel = 'Global__Cancel', // user clicks 'cancel' button on Selection page\n Selection = 'Global__Selection', // first wizard page where user can select fields\n Details = 'Global__Details', // second wizard page configuring the details\n Overview = 'Admin_Pages__Overview', // last wizard page showing summary\n Save = 'Global__Save', // user click 'save' button on Overview page\n Initial = '' // initial state when component is loaded\n}\n\nexport enum SlopeLevel {\n Low = 'Global__Enum_Low',\n Medium = 'Global__Enum_Medium',\n High = 'Global__Enum_High'\n}\n\nexport interface IPpConstants {\n MAX_SELECTABLE_PRODUCTS: number;\n MAX_WATER: number;\n PpControlFactors: IPpControlFactor[];\n}\n\nexport const PpConstants: IPpConstants = {\n MAX_SELECTABLE_PRODUCTS: 6,\n MAX_WATER: 500,\n PpControlFactors: [\n {Id: 1, Key: SlopeLevel.Low},\n {Id: 2, Key: SlopeLevel.Medium},\n {Id: 3, Key: SlopeLevel.High}\n ]\n};\n\nexport interface IPpControlFactor {\n Id: number;\n Key: string;\n}\n\nexport interface IPpWizardProvider {\n getGridColumnConfig(detailsData: IPpPlanningWizardDetailsData): Observable;\n getPagerConfig(breadCrumbsColumns: PpWizardStates[]): ApDynGridPagerConfigBase;\n onGridSelectionChanged(items: Array): void;\n onGenerateStatistic(): void;\n updateCaption(): void;\n updateFieldSets(): void;\n onLeave(): R;\n onDestroy(): void;\n}\n\nexport interface IPpPlanningWizardSelectionGridData {\n Id: IGuid;\n Status: IGridStatus;\n Nr: number;\n TNr: number;\n NrTNr: string;\n Name: string;\n Area: number;\n Crop: string;\n CropId: number;\n EppoCode: string;\n SecondCropId: number;\n Geom: IFieldGeom;\n PlanBookId: IGuid;\n ScanData: BestScanData;\n}\n\nexport interface IPpPlanningWizardOverviewGridData {\n Id: IGuid;\n Status: IGridStatus;\n SlopeForJob: number;\n NUptakeAverageForJob: number;\n Products: string;\n ProductsTooltip: string;\n Machine: string;\n Instrument: string;\n Driver: string;\n ColumnLoading: boolean;\n ErrorMessage: string;\n HasError: boolean;\n SelectionData: IPpPlanningWizardSelectionGridData;\n DetailsData: IPpPlanningWizardDetailsData;\n SelectedProducts: IPpProductListGridItem[];\n PlanBook: IPlantProtectionPlanBook;\n}\n\nexport interface IPpPlanningWizardDetailsData {\n FormData: IPpPlanningWizardDetailsFormData | undefined;\n ControlFactor: number | undefined;\n OperationModeAppSetting: IOperationModeAppSetting | undefined;\n}\n\nexport interface IPpPlanningWizardDetailsFormData {\n CountFields: number;\n TotalArea: string;\n Crop: string;\n OperationModeKey: OperationModesEnum | undefined;\n NUptakeAverage: number | undefined;\n WorkType: number;\n ApplicationDate: Date;\n Note: string;\n ECStage: number;\n Threshold: number;\n WaterAvg: number;\n WaterRange: number;\n WaterMin: number;\n WaterMax: number;\n WaterSetZeroAtMin: boolean;\n PreProductId: IGuid;\n PreMinAmount: number;\n PreAvgAmount: number;\n PreMaxAmount: number;\n Instrument: IGuid;\n Driver: IGuid;\n Machine: IGuid;\n}\n\nexport interface IPpPlanningWizardDetailsResponsiveData {\n AddProductButtonDisabled$: BehaviorSubject;\n PreselectedProductDetail$: BehaviorSubject;\n PreselectedMinProductRate$: BehaviorSubject;\n PreselectedMaxProductRate$: BehaviorSubject;\n PreselectValidProducts$: BehaviorSubject;\n ProductListItems$: BehaviorSubject;\n MaxWaterRange$: BehaviorSubject;\n MinWaterAvg$: BehaviorSubject;\n}\n\nexport interface IPpProductListGridItem {\n ProductListItem: IPlantProtectionProductList;\n ProductName: string;\n Min: number | undefined;\n Max: number | undefined;\n ApplRate: number;\n UnitExpr: string;\n ButtonIconName: string;\n GrowthStageDefined: boolean;\n}\n\nexport interface IPpOverviewStatValues {\n NUptakeMin: number;\n NUptakeMax: number;\n NUptakeStepSize: number;\n NUptakeAreaWeightedAvg: number;\n Slope: number;\n WaterAvg: number;\n WaterMin: number;\n WaterMax: number;\n}\n\nexport interface IPpOverviewStatValues {\n NUptakeMin: number;\n NUptakeMax: number;\n NUptakeStepSize: number;\n NUptakeAreaWeightedAvg: number;\n Slope: number;\n WaterAvg: number;\n WaterMin: number;\n WaterMax: number;\n ProductSum: IPlantProtectionProductList[];\n ProductAreaWeightedAvg: IPlantProtectionProductList[];\n}\n\nexport interface IProductOption {\n Id: IGuid;\n Name: string;\n EffectiveRange: string;\n}\n","import {ApGuidUtil} from '../ap-utils';\nimport IField = Data.FieldManagement.IField;\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FieldFactoryService {\n constructor() {}\n\n /// \n /// generates IField type with empty values combined with given templateObject\n /// optional: templateObject - object to copy properties from to newly created object\n /// \n CreateNew(templateObject?: any): IField {\n const newField: IField = {\n ChangedAt: null,\n ChangedBy: null,\n CreatedAt: new Date(),\n CreatedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n FarmId: null,\n FieldBlock: '',\n FieldCrops: [],\n FieldGeoms: [],\n FieldGroup: undefined,\n FieldId: 0,\n FieldName: '',\n FieldNumber: 0,\n FieldSubnumber: 0,\n FieldType: 0,\n Id: ApGuidUtil.generateNewGuid(),\n Note: '',\n ValidFrom: new Date(),\n ValidTo: new Date('9999-07-31 23:59:59'),\n Version: 0,\n CampaignYear: 0,\n DefaultGeom: {\n AdminArea: 0,\n AreaHa: 0,\n ChangedAt: null,\n ChangedBy: null,\n CreatedAt: new Date(),\n CreatedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n FarmId: null,\n FieldId: undefined,\n Geom: undefined,\n Id: undefined,\n Note: '',\n ValidFrom: new Date(),\n ValidTo: new Date('9999-07-31 23:59:59'),\n Version: 0,\n CampaignYear: 0,\n FieldGeomPackages: [],\n Status: ''\n },\n };\n\n if (templateObject != null) {\n Object.keys(templateObject).map(prop => {\n if (prop.indexOf('.') >= 0) {\n // Safe to consider there is only 1 dot because Field object nesting complexity is 2\n const pair = prop.split('.');\n newField[pair[0]][pair[1]] = templateObject[prop];\n } else {\n if (newField.hasOwnProperty(prop)) {\n newField[prop] = templateObject[prop];\n } else {\n console.warn('There is no property ' + prop + ' in IField interface. Please check your input parameter.');\n }\n }\n });\n }\n\n return newField;\n }\n}\n","import {AfterContentInit, Injectable, OnDestroy} from '@angular/core';\nimport {\n ApEditFieldComponent\n} from '../../entry-components/ap-field-management-entry-components/ap-edit-field.component';\nimport {MapViewStore} from '../../stores/layout/mapview.store';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {Subscription} from 'rxjs';\nimport IFieldGeom = Data.FieldManagement.IFieldGeom;\nimport ICampaignYear = Data.Authentication.ICampaignYear;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FieldService implements OnDestroy {\n\n constructor(private mapViewStore: MapViewStore,\n private fieldStore: FieldStore,\n private formStore: FormStore,\n private mapStore: MapStore) { }\n\n private formCloseSubscription: Subscription = null;\n\n public OpenCreateForm(): void {\n if (this.formCloseSubscription === null) {\n this.formCloseSubscription = this.formStore.FormClose$.subscribe(() => this.mapStore.Editor.CloseEditor(this.fieldStore));\n }\n\n this.ShowMapGoIn();\n const gridSelectedKeys = this.fieldStore.getSelectedFieldIds();\n this.formStore.openForm({\n component: ApEditFieldComponent, data: {\n SourceItem: null,\n gridSelectedKeys,\n }\n });\n this.mapStore.Editor.PrepareNewField(gridSelectedKeys, this.fieldStore);\n }\n\n public ShowMapGoIn(): void {\n this.mapViewStore.showMapView();\n this.mapViewStore.goIntoMapMenu();\n }\n\n public getGeomStatus(fieldGeometry: IFieldGeom, campaignYear: ICampaignYear): number {\n if (!fieldGeometry || !campaignYear || !fieldGeometry?.ValidFrom || !fieldGeometry?.ValidTo) {\n return -1;\n }\n const notFieldGeometryValid =\n (fieldGeometry.ValidFrom < campaignYear.DefaultStart &&\n fieldGeometry.ValidTo < campaignYear.DefaultStart) ||\n (fieldGeometry.ValidFrom > campaignYear.DefaultEnd &&\n fieldGeometry.ValidTo > campaignYear.DefaultEnd);\n return notFieldGeometryValid ? -1 : 1;\n }\n\n ngOnDestroy(): void {\n this.formCloseSubscription.unsubscribe();\n }\n}\n","import {Injectable} from '@angular/core';\nimport {IGridStatus, IGridStatusClassTyped} from '../../ap-interface/interfaces/ap-grid-status.interface';\nimport {ApColumnState} from '../../ap-interface/enums/ap-column-state.enum';\nimport {NdiGridStatusClass} from '../types/ndi.types';\nimport {NUptakeFactorsStore} from '../../stores/common/nuptake-factors.store';\nimport {NuptakeCalculationService} from '../../services/common/nuptake-calculation.service';\nimport {CropTypeStore} from '../../stores/base-data/crop.types.store';\nimport {SatelliteNValues} from '../../types/ndi.types';\nimport {GetRoundNumericService} from '../../ap-utils/service/get-round-numeric.service';\nimport INdiStatistic = Data.NDI.INdiStatistic;\nimport ScanType = Data.NDI.Enums.ScanType;\nimport IFieldCrop = Data.FieldManagement.IFieldCrop;\nimport INUptakeFactors = Data.Common.INUptakeFactors;\n\n/**\n * Service for n-index and n-uptake calculations\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NdiService {\n constructor(private cropTypeStore: CropTypeStore,\n private nUptakeFactorsStore: NUptakeFactorsStore,\n private roundNumberService: GetRoundNumericService,\n private nUptakeCalculationService: NuptakeCalculationService) {\n }\n\n /**\n * Checks if ndi scan statistic is valid.\n * @param ndiStatistic - Ndi statistic object.\n * @returns Boolean indicating whether the ndi scan statistic valid or not.\n * @remarks Status rules:\n * - Currently check only creation date in ndi scan is valid\n * @public\n */\n public isNdiScanValid(ndiStatistic: INdiStatistic | undefined): boolean {\n const createdDate = !!ndiStatistic?.Created ? new Date(ndiStatistic.Created) : undefined;\n return !!createdDate ? createdDate.getFullYear() > 2000 : false;\n }\n\n /**\n * Determines the grid status for an NDI record based on statistics.\n * @param ndiStatistic - NDI statistic object.\n * @returns Grid status object with state, class and description.\n * @remarks Status rules:\n * - Green status with regular scan class if statistics is regular\n * - Green status with autumn scan class if statistics is autumn\n * - Grey status if no statistics present\n * @public\n */\n public getCustomStatusForNdiRecord(ndiStatistic: INdiStatistic | undefined): IGridStatusClassTyped {\n const originalGridStatus = this.getStatusForNdiRecord(ndiStatistic);\n if (originalGridStatus.state === ApColumnState.Green) {\n const statusTyped = {\n state: originalGridStatus.state,\n description: originalGridStatus.description\n } as IGridStatusClassTyped;\n if (ndiStatistic.ScanType === ScanType.Regular) {\n statusTyped.class = 'ap-status-green-regular-scan';\n } else {\n statusTyped.class = 'ap-status-green-autumn-scan';\n }\n return statusTyped;\n }\n return {\n state: originalGridStatus.state,\n class: 'ap-status-grey',\n description: originalGridStatus.description\n };\n }\n\n /**\n * Gets the basic status for an NDI record\n * @param ndiStatistic NDI statistic object\n * @returns Grid status object containing state, class and description\n * @public\n */\n public getStatusForNdiRecord(ndiStatistic: INdiStatistic | undefined): IGridStatus {\n switch (ndiStatistic?.ScanType) {\n case ScanType.Regular:\n return {\n state: ApColumnState.Green,\n class: 'ap-status-green',\n description: 'Global__NDI_Status_Desc_green'\n };\n case ScanType.Autumn:\n return {\n state: ApColumnState.Green,\n class: 'ap-status-green',\n description: 'Global__NDI_Status_Desc_autumn'\n };\n default:\n return {\n state: ApColumnState.Grey,\n class: 'ap-status-grey',\n description: 'Global__NDI_Status_Desc_grey'\n };\n }\n }\n\n /**\n * Calculates satellite N values based on NDI statistics and field crop data\n * @param ndiStatistic NDI statistic object\n * @param fieldCrop Field crop information\n * @returns Object containing calculated N index and uptake values\n * @public\n */\n public getSatelliteNValues(ndiStatistic: INdiStatistic | undefined, fieldCrop: IFieldCrop | undefined): SatelliteNValues {\n const isNdiScanValid = this.isNdiScanValid(ndiStatistic);\n const satelliteNValues = {} as SatelliteNValues;\n if (isNdiScanValid) {\n satelliteNValues.Cells = ndiStatistic.Cells;\n satelliteNValues.NIndexAvg = ndiStatistic.Mean;\n satelliteNValues.NIndexMin = ndiStatistic.Min;\n satelliteNValues.NIndexMax = ndiStatistic.Max;\n const nIndexHistogram = ndiStatistic.Histogram as unknown as { [key: string]: number };\n satelliteNValues.NIndexHistogram = JSON.parse(JSON.stringify(nIndexHistogram));\n }\n if (isNdiScanValid && !!fieldCrop?.CroptypeId && !!fieldCrop?.EcValue) {\n const nUptakeFactor = this.getNUptakeFactor(fieldCrop);\n if (!!nUptakeFactor) {\n satelliteNValues.NUptakeAvg = this.nUptakeCalculationService.calculateNUptakeValue(ndiStatistic.Mean, nUptakeFactor);\n satelliteNValues.NUptakeMin = this.nUptakeCalculationService.calculateNUptakeValue(ndiStatistic.Min, nUptakeFactor);\n satelliteNValues.NUptakeMax = this.nUptakeCalculationService.calculateNUptakeValue(ndiStatistic.Max, nUptakeFactor);\n const nUptakeHistogram = {};\n Object.keys(satelliteNValues.NIndexHistogram).forEach(key => {\n const nUptakeKey = this.nUptakeCalculationService.calculateNUptakeValue(\n +key,\n nUptakeFactor\n );\n const nUptakeRoundedKey = this.roundNumberService.round(nUptakeKey, 1);\n nUptakeHistogram[nUptakeRoundedKey] = satelliteNValues.NIndexHistogram[key];\n });\n satelliteNValues.NUptakeHistogram = nUptakeHistogram;\n }\n }\n return satelliteNValues;\n }\n\n /**\n * Retrieves N uptake factors for a given field crop\n * @param fieldCrop Field crop information\n * @returns N uptake factors if available, undefined otherwise\n * @public\n */\n public getNUptakeFactor(fieldCrop: IFieldCrop | undefined): INUptakeFactors | undefined {\n if (!fieldCrop) {\n return undefined;\n }\n const mainCrop = this.cropTypeStore.getDefaultCroptype(fieldCrop.CroptypeId);\n return this.nUptakeFactorsStore.getNUptakeFactorByFieldCropAndCropType(fieldCrop, mainCrop);\n }\n}\n","import {ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {HostListener, Injectable} from '@angular/core';\n\n@Injectable({providedIn: 'root'})\nexport abstract class ComponentCanDeactivate {\n abstract canDeactivate(): boolean;\n\n @HostListener('window:beforeunload', ['$event'])\n unloadNotification($event: any): void {\n if (!this.canDeactivate()) {\n $event.returnValue = true;\n }\n }\n}\n\n@Injectable({providedIn: 'root'})\nexport class ApDeactivateGuard implements CanDeactivate {\n canDeactivate(component: ComponentCanDeactivate, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n if (!component.canDeactivate()) {\n return confirm('Wirklich????');\n }\n return true;\n }\n}\n","import {\n ActivatedRouteSnapshot,\n CanActivate,\n CanLoad,\n Route,\n RouterStateSnapshot,\n UrlSegment,\n UrlTree\n} from '@angular/router';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {environment} from '../../environments/environment';\n\n@Injectable()\nexport class ApDeveloperGuard implements CanLoad, CanActivate {\n constructor() {\n }\n\n canLoad(route: Route, segments: UrlSegment[]): Observable | Promise | boolean {\n return !environment.Production;\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n return !environment.Production;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {RouterStore} from '../stores/router/router.store';\nimport {InvitationStore} from '../stores/login/invitation.store';\n\n@Injectable({providedIn: 'root'})\nexport class ApInvitationsGuard implements CanActivate {\n constructor(private routerStore: RouterStore,\n private invitationStore: InvitationStore) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n return this.checkInvitation();\n }\n\n private async checkInvitation(): Promise {\n return await this.invitationStore.hasInvitation(this.routerStore.QueryParams.ac);\n }\n}\n","import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ApMenuUrls} from '../ap-interface';\nimport {MenuStore} from '../stores/layout/menu.store';\nimport {NotifyStore} from '../stores/dialog/notify.store';\nimport {\n TranslationStore\n} from '../stores/translation/translation.store';\nimport {\n RemoveUrlParamsService\n} from '../services/router/remove-url-params.service';\nimport IMenuEntry = Data.MenuStructure.IMenuEntry;\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\n\n@Injectable({providedIn: 'root'})\nexport class ApPermissionGuard implements CanActivate {\n private menuEntries: IMenuEntry[];\n\n constructor(private _router: Router,\n private menuStore: MenuStore,\n private removeUrlParams: RemoveUrlParamsService,\n private translationPipe: TranslationStore,\n private notifyStore: NotifyStore) {\n this.menuStore.Listen(s => s.data).subscribe(d => {\n if (!d) {\n return;\n }\n this.menuEntries = d;\n });\n }\n\n public canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean {\n if (this.menuEntries === undefined || !this.menuEntries) {\n return true;\n }\n\n const url = this.removeUrlParams.removeUrlParams(state.url.Split('?')[0]);\n let result = false;\n for (const entry of this.menuEntries) {\n if (entry.Url === url) {\n result = entry.Enabled;\n }\n if (!Array.isArray(entry.Childs)) {\n continue;\n }\n for (const children of entry.Childs) {\n if (children.Url === url) {\n result = children.Enabled;\n }\n }\n }\n\n if (!result) {\n const s = {} as IApValidationResult;\n s.DisplayTimeout = 5;\n s.ErrorKey = this.translationPipe.FindTranslationForSelectedLanguage('Global_No_Access_Right_Available');\n s.Level = Data.Api.Validation.ApValidationLevel.Info;\n this.notifyStore.addMessage(s);\n if (url !== ApMenuUrls.FIELD_MANAGEMENT_OVERVIEW) {\n this._router.navigate([ApMenuUrls.FIELD_MANAGEMENT_OVERVIEW]).then(() => {\n });\n }\n }\n return result;\n }\n}\n","import {RouterModule, Routes} from '@angular/router';\nimport {NgModule} from '@angular/core';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class ApHelpRoutes {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApHelpRoutes} from './ap-help.routes';\nimport {ApHelpComponent} from './components/ap-help.component';\nimport {ApIconModule} from '../icons/ap-icon.module';\n\nimport {EditorModule} from '@progress/kendo-angular-editor';\nimport {ToolBarModule} from '@progress/kendo-angular-toolbar';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {UploadModule} from '@progress/kendo-angular-upload';\n\n\n@NgModule({\n declarations: [ApHelpComponent],\n exports: [ApHelpComponent],\n imports: [ApHelpRoutes, CommonModule, ApIconModule, EditorModule, ToolBarModule, ApTranslationModule, UploadModule],\n providers: []\n})\nexport class ApHelpModule {\n}\n","import {schema, Schema} from '@progress/kendo-angular-editor';\n\nconst iframe = {\n // NodeSpec interface\n // http://prosemirror.net/docs/ref/#model.NodeSpec\n attrs: {\n src: {default: null},\n style: {default: null},\n width: {default: null},\n height: {default: null}\n },\n group: 'block',\n selectable: false,\n parseDOM: [{\n tag: 'iframe',\n getAttrs: (dom) => ({\n src: dom.getAttribute('src'),\n width: dom.getAttribute('width'),\n height: dom.getAttribute('height'),\n style: dom.getAttribute('style')\n })\n }],\n toDOM: node => {\n const attrs = {\n src: node.attrs.src,\n style: node.attrs.style,\n width: node.attrs.width,\n height: node.attrs.height,\n frameborder: '0',\n allowfullscreen: 'true'\n };\n return ['iframe', attrs];\n }\n};\n\nexport {iframe};\n\n// Append the new node.\nlet nodes: any = schema.spec.nodes;\nnodes = nodes.addToEnd('iframe', iframe);\nconst marks = schema.spec.marks;\n\n// Create the new schema.\nexport const ApEditorSchema: Schema = new Schema({nodes, marks});\n","import {EditorView} from '@progress/kendo-angular-editor';\nimport {ApEditorSchema} from './ap-editor.schema';\nimport {Plugin} from '@progress/kendo-editor-common';\n\n/**\n * Agriport-Help Image Upload\n * Static class which offers functionality to paste/upload images into kendo help editor.\n */\nexport class ApHelpImageUpload {\n static MaxFileSizeBytes = 5 * 1024 * 1024;\n static AllowedExtensions = ['.jpg', '.jpeg', '.png', '.gif']; // for upload dialog\n static AllowedFileTypes = ['image/jpg', 'image/jpeg', 'image/png', 'image/gif']; // for paste operations\n\n /**\n * ProseMirror API Plugin for kendo editor\n * => Takes care of pasting images.\n */\n static EditorImagePastePlugin = new Plugin({\n props: {\n handlePaste(view, event, slice): boolean {\n const files = event?.clipboardData?.files;\n if (files && files.length === 1) {\n // handle paste of image from clipboard AND copied file (to clipboard)\n ApHelpImageUpload.readImageToBase64(files[0], (base64Image) => {\n if (base64Image) {\n ApHelpImageUpload.insertImage(view, base64Image);\n }\n });\n return true;\n }\n return false;\n }\n }\n });\n\n /**\n * Reads content of uploaded or pasted image as base64\n * => when reading is done, the function delegate is called to continue image-insert process\n */\n static readImageToBase64(file: File, continueWith: (base64Image: string | ArrayBuffer) => void): void {\n // file size exceeded\n if (!file || file.size > ApHelpImageUpload.MaxFileSizeBytes) {\n return;\n }\n\n // file type not supported\n if (ApHelpImageUpload.AllowedFileTypes.indexOf(file.type) <= 0) {\n return;\n }\n const reader = new FileReader();\n reader.onload = () => {\n continueWith(reader.result);\n reader.onload = null;\n };\n reader.onerror = (error) => {\n continueWith(undefined);\n reader.onerror = null;\n };\n reader.readAsDataURL(file);\n }\n\n /**\n * Insert with base64 image-source into dom of editor\n */\n static insertImage(editorView: EditorView, base64Image: string | ArrayBuffer): void {\n if (!editorView) {\n return;\n }\n const editorTransaction = editorView.state.tr;\n editorTransaction.insert(editorTransaction.selection.from, ApEditorSchema.nodes.image.create({\n src: base64Image\n }));\n editorView.dispatch(editorTransaction);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {ApLogoIconComponent} from './components/ap-logo-icon.component';\nimport {ApBasedataIconComponent} from './components/ap-basedata-icon.component';\nimport {ApDashboardIconComponent} from './components/ap-dashboard-icon.component';\nimport {ApIconSelectorComponent} from './components/ap-icon-selector.component';\nimport {CommonModule} from '@angular/common';\nimport {ApMapIconComponent} from './components/ap-map-icon.component';\nimport {ApStatisticIconComponent} from './components/ap-statistic-icon.component';\nimport {ApHelpIconComponent} from './components/ap-help-icon.component';\nimport {ApArrowLeftComponent} from './components/ap-arrow-left.component';\nimport {ApArrowRightComponent} from './components/ap-arrow-right.component';\nimport {ApWarningIconComponent} from './components/ap-warning-icon.component';\nimport {ApErrorIconComponent} from './components/ap-error-icon.component';\nimport {ApInfoIconComponent} from './components/ap-info-icon.component';\nimport {ApFungidetectIconComponent} from './components/ap-fungidetect-icon.component';\nimport {ApUploadIconComponent} from './components/ap-upload-icon.component';\nimport {ApDatabaseIconComponent} from './components/ap-database-icon.component';\nimport {ApFileIconComponent} from './components/ap-file-icon.component';\nimport {ApSuccessIconComponent} from './components/ap-success-icon.component';\nimport {ApDocumentationIconComponent} from './components/ap-documentation-icon.component';\nimport {ApExclamationCircleRegularIconComponent} from './components/ap-exclamation-circle-regular-icon.component';\nimport {ApExclamationCircleSolidIconComponent} from './components/ap-exclamation-circle-solid-icon.component';\nimport {ApBanSolidIconComponent} from './components/ap-ban-solid-icon.component';\nimport {ApCheckCircleRegularIconComponent} from './components/ap-check-circle-regular-icon.component';\nimport {ApCheckCircleSolidIconComponent} from './components/ap-check-circle-solid-icon.component';\nimport {ApTimesCircleRegularIconComponent} from './components/ap-times-circle-regular-icon.component';\nimport {ApTimesCircleSolidIconComponent} from './components/ap-times-circle-solid-icon.component';\nimport {ApContactIconComponent} from './components/ap-contact-icon.component';\nimport {ApLegalIconComponent} from './components/ap-legal-icon.component';\nimport {ApImprintIconComponent} from './components/ap-imprint-icon.component';\nimport {ApAgreementIconComponent} from './components/ap-agreement-icon.component';\nimport {ApNewsIconComponent} from './components/ap-news-icon.components';\nimport {ApIconAdministrationComponent} from './components/ap-icon-administration.components';\nimport {ApIconBaseFertilizationComponent} from './components/ap-icon-base-fertilization.components';\nimport {ApIconBookingComponent} from './components/ap-icon-booking.components';\nimport {ApIconCollapsComponent} from './components/ap-icon-collapse.components';\nimport {ApIconEvaluationComponent} from './components/ap-icon-evaluation.components';\nimport {ApIconFieldWorksComponent} from './components/ap-icon-field-works.components';\nimport {ApIconFieldsComponent} from './components/ap-icon-fields.component';\nimport {ApIconImportComponent} from './components/ap-icon-import.components';\nimport {ApIconNFertilizationComponent} from './components/ap-icon-n-fertilization.components';\nimport {ApIconPlantProtectionComponent} from './components/ap-icon-plant-protection.components';\nimport {ApIconSeedingComponent} from './components/ap-icon-seeding.components';\nimport {ApIconSettingsComponent} from './components/ap-icon-settings.components';\nimport {ApIconTasksComponent} from './components/ap-icon-taks.components';\nimport {ApIconFarmRecordsComponent} from './components/ap-icon-farm-records.component';\nimport {ApInfoIconRoundComponent} from './components/ap-info-icon-round';\nimport {ApIconType} from './ap-icon-type';\n\n/**\n * Give some Components with SVG Images\n */\n@NgModule({\n imports: [CommonModule],\n declarations: [\n ApArrowLeftComponent,\n ApArrowRightComponent,\n ApLogoIconComponent,\n ApBasedataIconComponent,\n ApDashboardIconComponent,\n ApIconSelectorComponent,\n ApMapIconComponent,\n ApStatisticIconComponent,\n ApHelpIconComponent,\n ApInfoIconComponent,\n ApWarningIconComponent,\n ApErrorIconComponent,\n ApSuccessIconComponent,\n ApFungidetectIconComponent,\n ApUploadIconComponent,\n ApDatabaseIconComponent,\n ApFileIconComponent,\n ApDocumentationIconComponent,\n ApExclamationCircleRegularIconComponent,\n ApExclamationCircleSolidIconComponent,\n ApBanSolidIconComponent,\n ApCheckCircleRegularIconComponent,\n ApCheckCircleSolidIconComponent,\n ApTimesCircleRegularIconComponent,\n ApTimesCircleSolidIconComponent,\n ApContactIconComponent,\n ApImprintIconComponent,\n ApLegalIconComponent,\n ApAgreementIconComponent,\n ApNewsIconComponent,\n ApIconAdministrationComponent,\n ApIconBaseFertilizationComponent,\n ApIconBookingComponent,\n ApIconCollapsComponent,\n ApIconEvaluationComponent,\n ApIconFieldWorksComponent,\n ApIconFieldsComponent,\n ApIconImportComponent,\n ApIconNFertilizationComponent,\n ApIconPlantProtectionComponent,\n ApIconSeedingComponent,\n ApIconSettingsComponent,\n ApIconTasksComponent,\n ApIconFarmRecordsComponent,\n ApInfoIconRoundComponent\n ], exports: [\n ApArrowLeftComponent,\n ApArrowRightComponent,\n ApLogoIconComponent,\n ApBasedataIconComponent,\n ApDashboardIconComponent,\n ApIconSelectorComponent,\n ApMapIconComponent,\n ApStatisticIconComponent,\n ApHelpIconComponent,\n ApInfoIconComponent,\n ApWarningIconComponent,\n ApErrorIconComponent,\n ApSuccessIconComponent,\n ApFungidetectIconComponent,\n ApUploadIconComponent,\n ApDatabaseIconComponent,\n ApFileIconComponent,\n ApDocumentationIconComponent,\n ApContactIconComponent,\n ApImprintIconComponent,\n ApLegalIconComponent,\n ApAgreementIconComponent,\n ApNewsIconComponent,\n ApExclamationCircleRegularIconComponent,\n ApExclamationCircleSolidIconComponent,\n ApCheckCircleRegularIconComponent,\n ApCheckCircleSolidIconComponent,\n ApTimesCircleRegularIconComponent,\n ApTimesCircleSolidIconComponent,\n ApIconAdministrationComponent,\n ApIconBaseFertilizationComponent,\n ApIconBookingComponent,\n ApIconCollapsComponent,\n ApIconEvaluationComponent,\n ApIconFieldWorksComponent,\n ApIconFieldsComponent,\n ApIconImportComponent,\n ApIconNFertilizationComponent,\n ApIconPlantProtectionComponent,\n ApIconSeedingComponent,\n ApIconSettingsComponent,\n ApIconTasksComponent,\n ApIconFarmRecordsComponent,\n ApInfoIconRoundComponent\n ]\n})\nexport class ApIconModule {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n`;\n\n@Component({\n selector: 'ap-help-icon',\n template: CONTENT\n})\nexport class ApHelpIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n\n`;\n\n@Component({\n selector: 'ap-dashboard-icon',\n template: CONTENT\n})\nexport class ApDashboardIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n \n`;\n\n@Component({\n selector: 'ap-basedata-icon',\n template: CONTENT\n})\nexport class ApBasedataIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n`;\n\n\n@Component({\n selector: 'ap-upload-icon',\n template: CONTENT\n})\nexport class ApUploadIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n`;\n\n@Component({\n selector: 'ap-fungidetect-icon',\n template: CONTENT\n})\nexport class ApFungidetectIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n`;\n\n@Component({\n selector: 'ap-database-icon',\n template: CONTENT\n})\nexport class ApDatabaseIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n`;\n\n@Component({\n selector: 'ap-file-icon',\n template: CONTENT\n})\nexport class ApFileIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n\n \n \n \n \n \n \n \n \n\n`;\n\n@Component({\n selector: 'ap-documentation-icon',\n template: CONTENT,\n})\nexport class ApDocumentationIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n \n`;\n\n@Component({\n selector: 'ap-contact-icon',\n template: CONTENT\n})\nexport class ApContactIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n`;\n\n@Component({\n selector: 'ap-legal-icon',\n template: CONTENT\n})\nexport class ApLegalIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n \n`;\n\n@Component({\n selector: 'ap-imprint-icon',\n template: CONTENT\n})\nexport class ApImprintIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n \n`;\n\n@Component({\n selector: 'ap-agreement-icon',\n template: CONTENT\n})\nexport class ApAgreementIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n \n`;\n\n@Component({\n selector: 'ap-exclamation-circle-regular-icon',\n template: CONTENT,\n})\nexport class ApExclamationCircleRegularIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n\n`;\n\n@Component({\n selector: 'ap-exclamation-circle-solid-icon',\n template: CONTENT,\n})\nexport class ApExclamationCircleSolidIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = ``;\n\n@Component({\n selector: 'ap-check-circle-regular-icon',\n template: CONTENT,\n})\nexport class ApCheckCircleRegularIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = ``;\n\n@Component({\n selector: 'ap-check-circle-solid-icon',\n template: CONTENT,\n})\nexport class ApCheckCircleSolidIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = ``;\n\n@Component({\n selector: 'ap-times-circle-regular-icon',\n template: CONTENT,\n})\nexport class ApTimesCircleRegularIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = ``;\n\n@Component({\n selector: 'ap-times-circle-solid-icon',\n template: CONTENT,\n})\nexport class ApTimesCircleSolidIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = ``;\n\n@Component({\n selector: 'ap-ban-solid-icon',\n template: CONTENT,\n})\nexport class ApBanSolidIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n\n`;\n\n@Component({\n selector: 'ap-icon-administration',\n template: CONTENT\n})\nexport class ApIconAdministrationComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\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@Component({\n selector: 'ap-icon-base-fertilization',\n template: CONTENT\n})\nexport class ApIconBaseFertilizationComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n\n \n`;\n\n@Component({\n selector: 'ap-icon-booking',\n template: CONTENT\n})\nexport class ApIconBookingComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n\n \n`;\n\n@Component({\n selector: 'ap-icon-collapse',\n template: CONTENT\n})\nexport class ApIconCollapsComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\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 \n \n \n \n\n`;\n\n@Component({\n selector: 'ap-icon-evaluation',\n template: CONTENT\n})\nexport class ApIconEvaluationComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n\n \n \n \n \n \n \n \n \n \n\n\n`;\n\n@Component({\n selector: 'ap-icon-field-works',\n template: CONTENT\n})\nexport class ApIconFieldWorksComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n \n \n \n \n \n\n\n`;\n\n@Component({\n selector: 'ap-icon-fields',\n template: CONTENT\n})\nexport class ApIconFieldsComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n\n \n \n \n \n\n`;\n\n@Component({\n selector: 'ap-icon-import',\n template: CONTENT\n})\nexport class ApIconImportComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\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 \n\n`;\n\n@Component({\n selector: 'ap-icon-n-fertilization',\n template: CONTENT\n})\nexport class ApIconNFertilizationComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\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@Component({\n selector: 'ap-icon-plant-protection',\n template: CONTENT\n})\nexport class ApIconPlantProtectionComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\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 \n \n \n \n \n \n\n`;\n\n@Component({\n selector: 'ap-icon-seeding',\n template: CONTENT\n})\nexport class ApIconSeedingComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n\n`;\n\n@Component({\n selector: 'ap-icon-settings',\n template: CONTENT\n})\nexport class ApIconSettingsComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n`;\n\n@Component({\n selector: 'ap-icon-tasks',\n template: CONTENT\n})\nexport class ApIconTasksComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n\n`;\n\n@Component({\n selector: 'ap-icon-farm-records',\n template: CONTENT\n})\nexport class ApIconFarmRecordsComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n`;\n\n@Component({\n selector: 'ap-info-icon-round',\n template: CONTENT\n})\nexport class ApInfoIconRoundComponent {\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 \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 \n\n\n \n\n\n \n\n\n \n\n\n \n\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'ap-icon-selector',\n templateUrl: 'ap-icon-selector.component.html'\n})\nexport class ApIconSelectorComponent {\n @Input()\n public id: string;\n @Input()\n public cssClass = 'ap-icon';\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n`;\n\n@Component({\n selector: 'ap-map-icon',\n template: CONTENT\n})\nexport class ApMapIconComponent {\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n \n \n`;\n\n@Component({\n selector: 'ap-statistic-icon',\n template: CONTENT\n})\nexport class ApStatisticIconComponent {\n}\n","import {Route, RouterModule} from '@angular/router';\nimport {NgModule} from '@angular/core';\n\nconst routes: Route[] = [];\n\n@NgModule({\n imports: [\n RouterModule.forChild(routes)\n ],\n exports: [RouterModule]\n})\nexport class ApLayoutRoutes {\n}\n","import {NgModule} from '@angular/core';\nimport {ApMetricService} from './ap-metric.service';\n\n@NgModule({\n imports: [],\n providers: [\n ApMetricService\n ],\n})\nexport class ApMetricsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {ApLayoutComponent} from './components/ap-layout.component';\nimport {LayoutModule} from '@progress/kendo-angular-layout';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {ButtonModule, DropDownButtonModule, SplitButtonModule} from '@progress/kendo-angular-buttons';\nimport {ApIconModule} from '../icons/ap-icon.module';\nimport {ToolBarModule} from '@progress/kendo-angular-toolbar';\nimport {ApToolbarLogoComponent} from './components/ap-toolbar-logo.component';\nimport {ApMenuComponent} from './components/ap-menu.component';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {ApCoreModule} from '../ap-core/ap-core.module';\nimport {ApUserProfileComponent} from './components/ap-user-profile.component';\nimport {ApFarmSelectionComponent} from './components/ap-farm-selection.component';\nimport {ApHarvestSelectionComponent} from './components/ap-harvest-selection.component';\nimport {DropDownsModule} from '@progress/kendo-angular-dropdowns';\nimport {ApLayoutRoutes} from './ap-layout.routes';\nimport {ApPageNotFoundComponent} from './components/ap-page-not-found.component';\nimport {ApCurrentTimeComponent} from './components/ap-current-time.component';\nimport {ApMapModule} from '../map/ap-map.module';\nimport {ApHelpModule} from '../help/ap-help.module';\nimport {ApTooltipModule} from '../ap-tooltip/ap-tooltip.module';\nimport {ApMetricsModule} from '../modules/metrics/ap-metrics.module';\nimport {NgScrollbarModule} from 'ngx-scrollbar';\nimport {ApUtilsModule} from '../ap-utils';\nimport {FilterByStringPipe} from './pipes/ap-menu/filter-by-string.pipe';\nimport {IsMainExpandedPipe} from './pipes/ap-menu/is-main-expanded.pipe';\nimport {IsMainSelectedPipe} from './pipes/ap-menu/is-main-selected.pipe';\nimport {AgriportStoreModule} from '../stores/stores.module';\nimport {ApNotificationComponent} from './components/ap-notification.component';\nimport {PopupModule} from '@progress/kendo-angular-popup';\nimport {BodyModule, GridModule, SharedModule} from '@progress/kendo-angular-grid';\nimport {ApResponsiveTextModule} from '../ap-responsive-text/ap-responsive-text.module';\nimport {RemoveUrlParamsPipe} from './pipes/ap-menu/remove-url-params.pipe';\nimport {TooltipModule} from '@progress/kendo-angular-tooltip';\nimport {InnerLoadingComponent} from './components/inner.loading.component';\nimport {ApTaskListComponent} from './components/ap-task-list.component';\nimport {ApTabStripComponent} from './components/ap-tabstrip.component';\nimport {ApPermissionModule} from '../ap-permission/ap-permission.module';\nimport {ApStatisticsModule} from '../statistics/ap-statistics.module';\nimport {LoaderModule} from '@progress/kendo-angular-indicators';\n\n@NgModule({\n declarations: [\n ApLayoutComponent,\n ApToolbarLogoComponent,\n ApMenuComponent,\n ApPageNotFoundComponent,\n ApUserProfileComponent,\n ApFarmSelectionComponent,\n ApHarvestSelectionComponent,\n ApCurrentTimeComponent,\n FilterByStringPipe,\n IsMainExpandedPipe,\n IsMainSelectedPipe,\n RemoveUrlParamsPipe,\n IsMainSelectedPipe,\n ApNotificationComponent,\n InnerLoadingComponent,\n ApTaskListComponent,\n ApTabStripComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n LayoutModule,\n ButtonModule,\n ToolBarModule,\n DropDownButtonModule,\n SplitButtonModule,\n DropDownsModule,\n ApMapModule,\n ApHelpModule,\n ApIconModule,\n ApTranslationModule,\n ApCoreModule,\n ApMetricsModule,\n ApMapModule,\n ApHelpModule,\n ApLayoutRoutes,\n ApTooltipModule,\n ApUtilsModule,\n NgScrollbarModule,\n AgriportStoreModule,\n PopupModule,\n GridModule,\n SharedModule,\n ApResponsiveTextModule,\n BodyModule,\n TooltipModule,\n ApPermissionModule,\n ApStatisticsModule,\n LoaderModule,\n ],\n exports: [\n ApLayoutComponent,\n ApTabStripComponent\n ],\n providers: [\n FilterByStringPipe,\n ]\n})\nexport class ApLayoutModule {\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'ap-page-not-found',\n templateUrl: 'ap-page-not-found.component.html'\n})\nexport class ApPageNotFoundComponent {\n}\n","

{{'Global_Page_Not_Found' | translate}}

\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\nimport IMenuEntry = Data.MenuStructure.IMenuEntry;\nimport IMenuChildren = Data.MenuStructure.IMenuChildren;\n\n@Pipe({\n name: 'filterByString'\n})\nexport class FilterByStringPipe implements PipeTransform {\n\n @Trace()\n transform(main: IMenuEntry, ...args: [string, keyof IMenuChildren]): boolean {\n return main.Childs.filter(e => e[args[1]] === args[0]).length > 0;\n }\n\n}\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n","import {APP_CONFIGURATION} from '../ap-core/config';\nimport * as jwtDecode from 'jwt-decode';\nimport * as ax from 'axios';\n\nexport class MapFactoryAuthenticator {\n static userInfo = {user: '', password: ''};\n // After 12 hours, the client needs to receive a new authorization token\n // while MapFactory allows requests up to 24 hours after first authentication.\n // Doing this to avoid time zone and caching issues\n static TOKEN_LIFETIME_SEC = 12 * 60 * 60;\n\n static async getHash(): Promise {\n const existsHash = localStorage.getItem(APP_CONFIGURATION.MapFactory.StoreKey);\n if (existsHash) {\n const decoded = jwtDecode.default(existsHash) as any;\n const duration = Math.floor(Date.now() / 1000) - decoded.time;\n if (duration >= MapFactoryAuthenticator.TOKEN_LIFETIME_SEC) {\n localStorage.setItem(APP_CONFIGURATION.MapFactory.StoreKey, await MapFactoryAuthenticator.requestToken());\n }\n } else {\n localStorage.setItem(APP_CONFIGURATION.MapFactory.StoreKey, await MapFactoryAuthenticator.requestToken());\n }\n return localStorage.getItem(APP_CONFIGURATION.MapFactory.StoreKey);\n }\n\n private static async requestToken(): Promise {\n try {\n const res = await ax.default({\n method: 'POST',\n url: `${APP_CONFIGURATION.MapFactory.Address}/requestToken`,\n data: MapFactoryAuthenticator.userInfo,\n });\n return res.data;\n } catch (e) {\n console.warn(`error on authenticate on map factory ${e.message}`);\n return '';\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/VectorTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nvar VectorTile = /** @class */ (function (_super) {\n __extends(VectorTile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Data source url.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options=} opt_options Tile options.\n */\n function VectorTile(tileCoord, state, src, format, tileLoadFunction, opt_options) {\n var _this = _super.call(this, tileCoord, state, opt_options) || this;\n /**\n * Extent of this tile; set by the source.\n * @type {import(\"./extent.js\").Extent}\n */\n _this.extent = null;\n /**\n * @private\n * @type {import(\"./format/Feature.js\").default}\n */\n _this.format_ = format;\n /**\n * @private\n * @type {Array}\n */\n _this.features_ = null;\n /**\n * @private\n * @type {import(\"./featureloader.js\").FeatureLoader}\n */\n _this.loader_;\n /**\n * Feature projection of this tile; set by the source.\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection = null;\n /**\n * Resolution of this tile; set by the source.\n * @type {number}\n */\n _this.resolution;\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n _this.tileLoadFunction_ = tileLoadFunction;\n /**\n * @private\n * @type {string}\n */\n _this.url_ = src;\n return _this;\n }\n /**\n * Get the feature format assigned for reading this tile's features.\n * @return {import(\"./format/Feature.js\").default} Feature format.\n * @api\n */\n VectorTile.prototype.getFormat = function () {\n return this.format_;\n };\n /**\n * Get the features for this tile. Geometries will be in the view projection.\n * @return {Array} Features.\n * @api\n */\n VectorTile.prototype.getFeatures = function () {\n return this.features_;\n };\n /**\n * @return {string} Key.\n */\n VectorTile.prototype.getKey = function () {\n return this.url_;\n };\n /**\n * Load not yet loaded URI.\n */\n VectorTile.prototype.load = function () {\n if (this.state == TileState.IDLE) {\n this.setState(TileState.LOADING);\n this.tileLoadFunction_(this, this.url_);\n if (this.loader_) {\n this.loader_(this.extent, this.resolution, this.projection);\n }\n }\n };\n /**\n * Handler for successful tile load.\n * @param {Array} features The loaded features.\n * @param {import(\"./proj/Projection.js\").default} dataProjection Data projection.\n */\n VectorTile.prototype.onLoad = function (features, dataProjection) {\n this.setFeatures(features);\n };\n /**\n * Handler for tile load errors.\n */\n VectorTile.prototype.onError = function () {\n this.setState(TileState.ERROR);\n };\n /**\n * Function for use in an {@link module:ol/source/VectorTile~VectorTile}'s `tileLoadFunction`.\n * Sets the features for the tile.\n * @param {Array} features Features.\n * @api\n */\n VectorTile.prototype.setFeatures = function (features) {\n this.features_ = features;\n this.setState(TileState.LOADED);\n };\n /**\n * Set the feature loader for reading this tile's features.\n * @param {import(\"./featureloader.js\").FeatureLoader} loader Feature loader.\n * @api\n */\n VectorTile.prototype.setLoader = function (loader) {\n this.loader_ = loader;\n };\n return VectorTile;\n}(Tile));\nexport default VectorTile;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/VectorRenderTile\n */\nimport Tile from './Tile.js';\nimport { createCanvasContext2D } from './dom.js';\nimport { getUid } from './util.js';\n/**\n * @typedef {Object} ReplayState\n * @property {boolean} dirty\n * @property {null|import(\"./render.js\").OrderFunction} renderedRenderOrder\n * @property {number} renderedTileRevision\n * @property {number} renderedResolution\n * @property {number} renderedRevision\n * @property {number} renderedZ\n * @property {number} renderedTileResolution\n * @property {number} renderedTileZ\n */\n/**\n * @type {Array}\n */\nvar canvasPool = [];\nvar VectorRenderTile = /** @class */ (function (_super) {\n __extends(VectorRenderTile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {import(\"./tilecoord.js\").TileCoord} urlTileCoord Wrapped tile coordinate for source urls.\n * @param {function(VectorRenderTile):Array} getSourceTiles Function\n * to get source tiles for this tile.\n */\n function VectorRenderTile(tileCoord, state, urlTileCoord, getSourceTiles) {\n var _this = _super.call(this, tileCoord, state, { transition: 0 }) || this;\n /**\n * @private\n * @type {!Object}\n */\n _this.context_ = {};\n /**\n * Executor groups by layer uid. Entries are read/written by the renderer.\n * @type {Object>}\n */\n _this.executorGroups = {};\n /**\n * Number of loading source tiles. Read/written by the source.\n * @type {number}\n */\n _this.loadingSourceTiles = 0;\n /**\n * Tile keys of error source tiles. Read/written by the source.\n * @type {Object}\n */\n _this.errorSourceTileKeys = {};\n /**\n * @type {Object}\n */\n _this.hitDetectionImageData = {};\n /**\n * @private\n * @type {!Object}\n */\n _this.replayState_ = {};\n /**\n * @type {Array}\n */\n _this.sourceTiles = null;\n /**\n * @type {number}\n */\n _this.wantedResolution;\n /**\n * @type {!function():Array}\n */\n _this.getSourceTiles = getSourceTiles.bind(undefined, _this);\n /**\n * z of the source tiles of the last getSourceTiles call.\n * @type {number}\n */\n _this.sourceZ = -1;\n /**\n * True when all tiles for this tile's nominal resolution are available.\n * @type {boolean}\n */\n _this.hifi = false;\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n _this.wrappedTileCoord = urlTileCoord;\n return _this;\n }\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {CanvasRenderingContext2D} The rendering context.\n */\n VectorRenderTile.prototype.getContext = function (layer) {\n var key = getUid(layer);\n if (!(key in this.context_)) {\n this.context_[key] = createCanvasContext2D(1, 1, canvasPool);\n }\n return this.context_[key];\n };\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {boolean} Tile has a rendering context for the given layer.\n */\n VectorRenderTile.prototype.hasContext = function (layer) {\n return getUid(layer) in this.context_;\n };\n /**\n * Get the Canvas for this tile.\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {HTMLCanvasElement} Canvas.\n */\n VectorRenderTile.prototype.getImage = function (layer) {\n return this.hasContext(layer) ? this.getContext(layer).canvas : null;\n };\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {ReplayState} The replay state.\n */\n VectorRenderTile.prototype.getReplayState = function (layer) {\n var key = getUid(layer);\n if (!(key in this.replayState_)) {\n this.replayState_[key] = {\n dirty: false,\n renderedRenderOrder: null,\n renderedResolution: NaN,\n renderedRevision: -1,\n renderedTileResolution: NaN,\n renderedTileRevision: -1,\n renderedZ: -1,\n renderedTileZ: -1,\n };\n }\n return this.replayState_[key];\n };\n /**\n * Load the tile.\n */\n VectorRenderTile.prototype.load = function () {\n this.getSourceTiles();\n };\n /**\n * Remove from the cache due to expiry\n */\n VectorRenderTile.prototype.release = function () {\n for (var key in this.context_) {\n canvasPool.push(this.context_[key].canvas);\n }\n _super.prototype.release.call(this);\n };\n return VectorRenderTile;\n}(Tile));\nexport default VectorRenderTile;\n","/**\n * @module ol/source/VectorTile\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventType from '../events/EventType.js';\nimport Tile from '../VectorTile.js';\nimport TileCache from '../TileCache.js';\nimport TileState from '../TileState.js';\nimport UrlTile from './UrlTile.js';\nimport VectorRenderTile from '../VectorRenderTile.js';\nimport { buffer as bufferExtent, getIntersection, intersects, } from '../extent.js';\nimport { createForProjection, createXYZ, extentFromProjection, } from '../tilegrid.js';\nimport { equals } from '../array.js';\nimport { fromKey, getKeyZXY } from '../tilecoord.js';\nimport { loadFeaturesXhr } from '../featureloader.js';\nimport { toSize } from '../size.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least twice the number of tiles in the viewport.\n * @property {import(\"../extent.js\").Extent} [extent]\n * @property {import(\"../format/Feature.js\").default} [format] Feature format for tiles. Used and required by the default.\n * @property {boolean} [overlaps=true] This source may have overlapping geometries. Setting this\n * to `false` (e.g. for sources with polygons that represent administrative\n * boundaries or TopoJSON sources) allows the renderer to optimise fill and\n * stroke operations.\n * @property {import(\"../proj.js\").ProjectionLike} [projection='EPSG:3857'] Projection of the tile grid.\n * @property {import(\"./State.js\").default} [state] Source state.\n * @property {typeof import(\"../VectorTile.js\").default} [tileClass] Class used to instantiate image tiles.\n * Default is {@link module:ol/VectorTile}.\n * @property {number} [maxZoom=22] Optional max zoom level. Not used if `tileGrid` is provided.\n * @property {number} [minZoom] Optional min zoom level. Not used if `tileGrid` is provided.\n * @property {number|import(\"../size.js\").Size} [tileSize=512] Optional tile size. Not used if `tileGrid` is provided.\n * @property {number} [maxResolution] Optional tile grid resolution at level zero. Not used if `tileGrid` is provided.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction]\n * Optional function to load a tile given a URL. Could look like this for pbf tiles:\n * ```js\n * function(tile, url) {\n * tile.setLoader(function(extent, resolution, projection) {\n * fetch(url).then(function(response) {\n * response.arrayBuffer().then(function(data) {\n * const format = tile.getFormat() // ol/format/MVT configured as source format\n * const features = format.readFeatures(data, {\n * extent: extent,\n * featureProjection: projection\n * });\n * tile.setFeatures(features);\n * });\n * });\n * });\n * }\n * ```\n * If you do not need extent, resolution and projection to get the features for a tile (e.g.\n * for GeoJSON tiles), your `tileLoadFunction` does not need a `setLoader()` call. Only make sure\n * to call `setFeatures()` on the tile:\n * ```js\n * const format = new GeoJSON({featureProjection: map.getView().getProjection()});\n * async function tileLoadFunction(tile, url) {\n * const response = await fetch(url);\n * const data = await response.json();\n * tile.setFeatures(format.readFeatures(data));\n * }\n * ```\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Optional function to get tile URL given a tile coordinate and the projection.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.\n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may be\n * used instead of defining each one separately in the `urls` option.\n * @property {number} [transition] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {Array} [urls] An array of URL templates.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * When set to `false`, only one world\n * will be rendered. When set to `true`, tiles will be wrapped horizontally to\n * render multiple worlds.\n * @property {number} [zDirection=1] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n */\n/**\n * @classdesc\n * Class for layer sources providing vector data divided into a tile grid, to be\n * used with {@link module:ol/layer/VectorTile~VectorTile}. Although this source receives tiles\n * with vector features from the server, it is not meant for feature editing.\n * Features are optimized for rendering, their geometries are clipped at or near\n * tile boundaries and simplified for a view resolution. See\n * {@link module:ol/source/Vector} for vector sources that are suitable for feature\n * editing.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n * @api\n */\nvar VectorTile = /** @class */ (function (_super) {\n __extends(VectorTile, _super);\n /**\n * @param {!Options} options Vector tile options.\n */\n function VectorTile(options) {\n var _this = this;\n var projection = options.projection || 'EPSG:3857';\n var extent = options.extent || extentFromProjection(projection);\n var tileGrid = options.tileGrid ||\n createXYZ({\n extent: extent,\n maxResolution: options.maxResolution,\n maxZoom: options.maxZoom !== undefined ? options.maxZoom : 22,\n minZoom: options.minZoom,\n tileSize: options.tileSize || 512,\n });\n _this = _super.call(this, {\n attributions: options.attributions,\n attributionsCollapsible: options.attributionsCollapsible,\n cacheSize: options.cacheSize,\n opaque: false,\n projection: projection,\n state: options.state,\n tileGrid: tileGrid,\n tileLoadFunction: options.tileLoadFunction\n ? options.tileLoadFunction\n : defaultLoadFunction,\n tileUrlFunction: options.tileUrlFunction,\n url: options.url,\n urls: options.urls,\n wrapX: options.wrapX === undefined ? true : options.wrapX,\n transition: options.transition,\n zDirection: options.zDirection === undefined ? 1 : options.zDirection,\n }) || this;\n /**\n * @private\n * @type {import(\"../format/Feature.js\").default}\n */\n _this.format_ = options.format ? options.format : null;\n /**\n * @type {Object}\n */\n _this.loadingTiles_ = {};\n /**\n * @private\n * @type {TileCache}\n */\n _this.sourceTileCache = new TileCache(_this.tileCache.highWaterMark);\n /**\n * @private\n * @type {boolean}\n */\n _this.overlaps_ = options.overlaps == undefined ? true : options.overlaps;\n /**\n * @protected\n * @type {typeof import(\"../VectorTile.js\").default}\n */\n _this.tileClass = options.tileClass ? options.tileClass : Tile;\n /**\n * @private\n * @type {Object}\n */\n _this.tileGrids_ = {};\n return _this;\n }\n /**\n * Get features whose bounding box intersects the provided extent. Only features for cached\n * tiles for the last rendered zoom level are available in the source. So this method is only\n * suitable for requesting tiles for extents that are currently rendered.\n *\n * Features are returned in random tile order and as they are included in the tiles. This means\n * they can be clipped, duplicated across tiles, and simplified to the render resolution.\n *\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {Array} Features.\n * @api\n */\n VectorTile.prototype.getFeaturesInExtent = function (extent) {\n var features = [];\n var tileCache = this.tileCache;\n if (tileCache.getCount() === 0) {\n return features;\n }\n var z = fromKey(tileCache.peekFirstKey())[0];\n var tileGrid = this.tileGrid;\n tileCache.forEach(function (tile) {\n if (tile.tileCoord[0] !== z || tile.getState() !== TileState.LOADED) {\n return;\n }\n var sourceTiles = tile.getSourceTiles();\n for (var i = 0, ii = sourceTiles.length; i < ii; ++i) {\n var sourceTile = sourceTiles[i];\n var tileCoord = sourceTile.tileCoord;\n if (intersects(extent, tileGrid.getTileCoordExtent(tileCoord))) {\n var tileFeatures = sourceTile.getFeatures();\n if (tileFeatures) {\n for (var j = 0, jj = tileFeatures.length; j < jj; ++j) {\n var candidate = tileFeatures[j];\n var geometry = candidate.getGeometry();\n if (intersects(extent, geometry.getExtent())) {\n features.push(candidate);\n }\n }\n }\n }\n }\n });\n return features;\n };\n /**\n * @return {boolean} The source can have overlapping geometries.\n */\n VectorTile.prototype.getOverlaps = function () {\n return this.overlaps_;\n };\n /**\n * clear {@link module:ol/TileCache~TileCache} and delete all source tiles\n * @api\n */\n VectorTile.prototype.clear = function () {\n this.tileCache.clear();\n this.sourceTileCache.clear();\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {!Object} usedTiles Used tiles.\n */\n VectorTile.prototype.expireCache = function (projection, usedTiles) {\n _super.prototype.expireCache.call(this, projection, usedTiles);\n this.sourceTileCache.expireCache({});\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection\").default} projection Projection.\n * @param {VectorRenderTile} tile Vector image tile.\n * @return {Array} Tile keys.\n */\n VectorTile.prototype.getSourceTiles = function (pixelRatio, projection, tile) {\n var urlTileCoord = tile.wrappedTileCoord;\n var tileGrid = this.getTileGridForProjection(projection);\n var extent = tileGrid.getTileCoordExtent(urlTileCoord);\n var z = urlTileCoord[0];\n var resolution = tileGrid.getResolution(z);\n // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n bufferExtent(extent, -resolution, extent);\n var sourceTileGrid = this.tileGrid;\n var sourceExtent = sourceTileGrid.getExtent();\n if (sourceExtent) {\n getIntersection(extent, sourceExtent, extent);\n }\n var sourceZ = sourceTileGrid.getZForResolution(resolution, 1);\n var minZoom = sourceTileGrid.getMinZoom();\n var previousSourceTiles = tile.sourceTiles;\n var sourceTiles, covered, loadedZ;\n if (previousSourceTiles &&\n previousSourceTiles.length > 0 &&\n previousSourceTiles[0].tileCoord[0] === sourceZ) {\n sourceTiles = previousSourceTiles;\n covered = true;\n loadedZ = sourceZ;\n }\n else {\n sourceTiles = [];\n loadedZ = sourceZ + 1;\n do {\n --loadedZ;\n covered = true;\n sourceTileGrid.forEachTileCoord(extent, loadedZ, function (sourceTileCoord) {\n var tileUrl = this.tileUrlFunction(sourceTileCoord, pixelRatio, projection);\n var sourceTile;\n if (tileUrl !== undefined) {\n if (this.sourceTileCache.containsKey(tileUrl)) {\n sourceTile = this.sourceTileCache.get(tileUrl);\n var state = sourceTile.getState();\n if (state === TileState.LOADED ||\n state === TileState.ERROR ||\n state === TileState.EMPTY) {\n sourceTiles.push(sourceTile);\n return;\n }\n }\n else if (loadedZ === sourceZ) {\n sourceTile = new this.tileClass(sourceTileCoord, TileState.IDLE, tileUrl, this.format_, this.tileLoadFunction);\n sourceTile.extent = sourceTileGrid.getTileCoordExtent(sourceTileCoord);\n sourceTile.projection = projection;\n sourceTile.resolution = sourceTileGrid.getResolution(sourceTileCoord[0]);\n this.sourceTileCache.set(tileUrl, sourceTile);\n sourceTile.addEventListener(EventType.CHANGE, this.handleTileChange.bind(this));\n sourceTile.load();\n }\n }\n covered =\n covered &&\n sourceTile &&\n sourceTile.getState() === TileState.LOADED;\n if (!sourceTile) {\n return;\n }\n if (sourceTile.getState() !== TileState.EMPTY &&\n tile.getState() === TileState.IDLE) {\n tile.loadingSourceTiles++;\n sourceTile.addEventListener(EventType.CHANGE, function listenChange() {\n var state = sourceTile.getState();\n var sourceTileKey = sourceTile.getKey();\n if (state === TileState.LOADED || state === TileState.ERROR) {\n if (state === TileState.LOADED) {\n sourceTile.removeEventListener(EventType.CHANGE, listenChange);\n tile.loadingSourceTiles--;\n delete tile.errorSourceTileKeys[sourceTileKey];\n }\n else if (state === TileState.ERROR) {\n tile.errorSourceTileKeys[sourceTileKey] = true;\n }\n var errorTileCount = Object.keys(tile.errorSourceTileKeys)\n .length;\n if (tile.loadingSourceTiles - errorTileCount === 0) {\n tile.hifi = errorTileCount === 0;\n tile.sourceZ = sourceZ;\n tile.setState(TileState.LOADED);\n }\n }\n });\n }\n }.bind(this));\n if (!covered) {\n sourceTiles.length = 0;\n }\n } while (!covered && loadedZ > minZoom);\n }\n if (tile.getState() === TileState.IDLE) {\n tile.setState(TileState.LOADING);\n }\n if (covered) {\n tile.hifi = sourceZ === loadedZ;\n tile.sourceZ = loadedZ;\n if (tile.getState() < TileState.LOADED) {\n tile.setState(TileState.LOADED);\n }\n else if (!previousSourceTiles ||\n !equals(sourceTiles, previousSourceTiles)) {\n tile.sourceTiles = sourceTiles;\n }\n }\n return sourceTiles;\n };\n /**\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!VectorRenderTile} Tile.\n */\n VectorTile.prototype.getTile = function (z, x, y, pixelRatio, projection) {\n var coordKey = getKeyZXY(z, x, y);\n var key = this.getKey();\n var tile;\n if (this.tileCache.containsKey(coordKey)) {\n tile = this.tileCache.get(coordKey);\n if (tile.key === key) {\n return tile;\n }\n }\n var tileCoord = [z, x, y];\n var urlTileCoord = this.getTileCoordForTileUrlFunction(tileCoord, projection);\n var sourceExtent = this.getTileGrid().getExtent();\n var tileGrid = this.getTileGridForProjection(projection);\n if (urlTileCoord && sourceExtent) {\n var tileExtent = tileGrid.getTileCoordExtent(urlTileCoord);\n // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n bufferExtent(tileExtent, -tileGrid.getResolution(z), tileExtent);\n if (!intersects(sourceExtent, tileExtent)) {\n urlTileCoord = null;\n }\n }\n var empty = true;\n if (urlTileCoord !== null) {\n var sourceTileGrid = this.tileGrid;\n var resolution = tileGrid.getResolution(z);\n var sourceZ = sourceTileGrid.getZForResolution(resolution, 1);\n // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n var extent = tileGrid.getTileCoordExtent(urlTileCoord);\n bufferExtent(extent, -resolution, extent);\n sourceTileGrid.forEachTileCoord(extent, sourceZ, function (sourceTileCoord) {\n empty =\n empty &&\n !this.tileUrlFunction(sourceTileCoord, pixelRatio, projection);\n }.bind(this));\n }\n var newTile = new VectorRenderTile(tileCoord, empty ? TileState.EMPTY : TileState.IDLE, urlTileCoord, this.getSourceTiles.bind(this, pixelRatio, projection));\n newTile.key = key;\n if (tile) {\n newTile.interimTile = tile;\n newTile.refreshInterimChain();\n this.tileCache.replace(coordKey, newTile);\n }\n else {\n this.tileCache.set(coordKey, newTile);\n }\n return newTile;\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n */\n VectorTile.prototype.getTileGridForProjection = function (projection) {\n var code = projection.getCode();\n var tileGrid = this.tileGrids_[code];\n if (!tileGrid) {\n // A tile grid that matches the tile size of the source tile grid is more\n // likely to have 1:1 relationships between source tiles and rendered tiles.\n var sourceTileGrid = this.tileGrid;\n tileGrid = createForProjection(projection, undefined, sourceTileGrid\n ? sourceTileGrid.getTileSize(sourceTileGrid.getMinZoom())\n : undefined);\n this.tileGrids_[code] = tileGrid;\n }\n return tileGrid;\n };\n /**\n * Get the tile pixel ratio for this source.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Tile pixel ratio.\n */\n VectorTile.prototype.getTilePixelRatio = function (pixelRatio) {\n return pixelRatio;\n };\n /**\n * @param {number} z Z.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {import(\"../size.js\").Size} Tile size.\n */\n VectorTile.prototype.getTilePixelSize = function (z, pixelRatio, projection) {\n var tileGrid = this.getTileGridForProjection(projection);\n var tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);\n return [\n Math.round(tileSize[0] * pixelRatio),\n Math.round(tileSize[1] * pixelRatio),\n ];\n };\n /**\n * Increases the cache size if needed\n * @param {number} tileCount Minimum number of tiles needed.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n */\n VectorTile.prototype.updateCacheSize = function (tileCount, projection) {\n _super.prototype.updateCacheSize.call(this, tileCount * 2, projection);\n };\n return VectorTile;\n}(UrlTile));\nexport default VectorTile;\n/**\n * Sets the loader for a tile.\n * @param {import(\"../VectorTile.js\").default} tile Vector tile.\n * @param {string} url URL.\n */\nexport function defaultLoadFunction(tile, url) {\n var loader = loadFeaturesXhr(url, tile.getFormat(), tile.onLoad.bind(tile), tile.onError.bind(tile));\n tile.setLoader(loader);\n}\n","/**\n * @module ol/render/Feature\n */\nimport GeometryType from '../geom/GeometryType.js';\nimport { compose as composeTransform, create as createTransform, } from '../transform.js';\nimport { createOrUpdateFromCoordinate, createOrUpdateFromFlatCoordinates, getCenter, getHeight, } from '../extent.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointOfArray, getInteriorPointsOfMultiArray, } from '../geom/flat/interiorpoint.js';\nimport { get as getProjection } from '../proj.js';\nimport { interpolatePoint } from '../geom/flat/interpolate.js';\nimport { linearRingss as linearRingssCenter } from '../geom/flat/center.js';\nimport { transform2D } from '../geom/flat/transform.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\n/**\n * Lightweight, read-only, {@link module:ol/Feature~Feature} and {@link module:ol/geom/Geometry~Geometry} like\n * structure, optimized for vector tile rendering and styling. Geometry access\n * through the API is limited to getting the type and extent of the geometry.\n */\nvar RenderFeature = /** @class */ (function () {\n /**\n * @param {import(\"../geom/GeometryType.js\").default} type Geometry type.\n * @param {Array} flatCoordinates Flat coordinates. These always need\n * to be right-handed for polygons.\n * @param {Array|Array>} ends Ends or Endss.\n * @param {Object} properties Properties.\n * @param {number|string|undefined} id Feature id.\n */\n function RenderFeature(type, flatCoordinates, ends, properties, id) {\n /**\n * @private\n * @type {import(\"../extent.js\").Extent|undefined}\n */\n this.extent_;\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = id;\n /**\n * @private\n * @type {import(\"../geom/GeometryType.js\").default}\n */\n this.type_ = type;\n /**\n * @private\n * @type {Array}\n */\n this.flatCoordinates_ = flatCoordinates;\n /**\n * @private\n * @type {Array}\n */\n this.flatInteriorPoints_ = null;\n /**\n * @private\n * @type {Array}\n */\n this.flatMidpoints_ = null;\n /**\n * @private\n * @type {Array|Array>}\n */\n this.ends_ = ends;\n /**\n * @private\n * @type {Object}\n */\n this.properties_ = properties;\n }\n /**\n * Get a feature property by its key.\n * @param {string} key Key\n * @return {*} Value for the requested key.\n * @api\n */\n RenderFeature.prototype.get = function (key) {\n return this.properties_[key];\n };\n /**\n * Get the extent of this feature's geometry.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n RenderFeature.prototype.getExtent = function () {\n if (!this.extent_) {\n this.extent_ =\n this.type_ === GeometryType.POINT\n ? createOrUpdateFromCoordinate(this.flatCoordinates_)\n : createOrUpdateFromFlatCoordinates(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2);\n }\n return this.extent_;\n };\n /**\n * @return {Array} Flat interior points.\n */\n RenderFeature.prototype.getFlatInteriorPoint = function () {\n if (!this.flatInteriorPoints_) {\n var flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoints_ = getInteriorPointOfArray(this.flatCoordinates_, 0, \n /** @type {Array} */ (this.ends_), 2, flatCenter, 0);\n }\n return this.flatInteriorPoints_;\n };\n /**\n * @return {Array} Flat interior points.\n */\n RenderFeature.prototype.getFlatInteriorPoints = function () {\n if (!this.flatInteriorPoints_) {\n var flatCenters = linearRingssCenter(this.flatCoordinates_, 0, \n /** @type {Array>} */ (this.ends_), 2);\n this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(this.flatCoordinates_, 0, \n /** @type {Array>} */ (this.ends_), 2, flatCenters);\n }\n return this.flatInteriorPoints_;\n };\n /**\n * @return {Array} Flat midpoint.\n */\n RenderFeature.prototype.getFlatMidpoint = function () {\n if (!this.flatMidpoints_) {\n this.flatMidpoints_ = interpolatePoint(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2, 0.5);\n }\n return this.flatMidpoints_;\n };\n /**\n * @return {Array} Flat midpoints.\n */\n RenderFeature.prototype.getFlatMidpoints = function () {\n if (!this.flatMidpoints_) {\n this.flatMidpoints_ = [];\n var flatCoordinates = this.flatCoordinates_;\n var offset = 0;\n var ends = /** @type {Array} */ (this.ends_);\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var midpoint = interpolatePoint(flatCoordinates, offset, end, 2, 0.5);\n extend(this.flatMidpoints_, midpoint);\n offset = end;\n }\n }\n return this.flatMidpoints_;\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is set when reading data from a remote source.\n * @return {number|string|undefined} Id.\n * @api\n */\n RenderFeature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * @return {Array} Flat coordinates.\n */\n RenderFeature.prototype.getOrientedFlatCoordinates = function () {\n return this.flatCoordinates_;\n };\n /**\n * For API compatibility with {@link module:ol/Feature~Feature}, this method is useful when\n * determining the geometry type in style function (see {@link #getType}).\n * @return {RenderFeature} Feature.\n * @api\n */\n RenderFeature.prototype.getGeometry = function () {\n return this;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {RenderFeature} Simplified geometry.\n */\n RenderFeature.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return this;\n };\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {RenderFeature} Simplified geometry.\n */\n RenderFeature.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this;\n };\n /**\n * Get the feature properties.\n * @return {Object} Feature properties.\n * @api\n */\n RenderFeature.prototype.getProperties = function () {\n return this.properties_;\n };\n /**\n * @return {number} Stride.\n */\n RenderFeature.prototype.getStride = function () {\n return 2;\n };\n /**\n * @return {undefined}\n */\n RenderFeature.prototype.getStyleFunction = function () {\n return undefined;\n };\n /**\n * Get the type of this feature's geometry.\n * @return {import(\"../geom/GeometryType.js\").default} Geometry type.\n * @api\n */\n RenderFeature.prototype.getType = function () {\n return this.type_;\n };\n /**\n * Transform geometry coordinates from tile pixel space to projected.\n * The SRS of the source and destination are expected to be the same.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection.\n */\n RenderFeature.prototype.transform = function (source, destination) {\n source = getProjection(source);\n var pixelExtent = source.getExtent();\n var projectedExtent = source.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2, tmpTransform, this.flatCoordinates_);\n };\n /**\n * @return {Array|Array>} Ends or endss.\n */\n RenderFeature.prototype.getEnds = function () {\n return this.ends_;\n };\n return RenderFeature;\n}());\nRenderFeature.prototype.getEndss = RenderFeature.prototype.getEnds;\n/**\n * @return {Array} Flat coordinates.\n */\nRenderFeature.prototype.getFlatCoordinates =\n RenderFeature.prototype.getOrientedFlatCoordinates;\nexport default RenderFeature;\n","/**\n * @module ol/format/MVT\n */\n//FIXME Implement projection handling\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport FeatureFormat, { transformGeometryWithOptions } from './Feature.js';\nimport FormatType from './FormatType.js';\nimport GeometryLayout from '../geom/GeometryLayout.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport PBF from 'pbf';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport Projection from '../proj/Projection.js';\nimport RenderFeature from '../render/Feature.js';\nimport Units from '../proj/Units.js';\nimport { assert } from '../asserts.js';\nimport { get } from '../proj.js';\nimport { linearRingIsClockwise } from '../geom/flat/orient.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../Feature.js\").FeatureClass} [featureClass] Class for features returned by\n * {@link module:ol/format/MVT#readFeatures}. Set to {@link module:ol/Feature~Feature} to get full editing and geometry\n * support at the cost of decreased rendering performance. The default is\n * {@link module:ol/render/Feature~RenderFeature}, which is optimized for rendering and hit detection.\n * @property {string} [geometryName='geometry'] Geometry name to use when creating features.\n * @property {string} [layerName='layer'] Name of the feature attribute that holds the layer name.\n * @property {Array} [layers] Layers to read features from. If not provided, features will be read from all\n * @property {string} [idProperty] Optional property that will be assigned as the feature id and removed from the properties.\n * layers.\n */\n/**\n * @classdesc\n * Feature format for reading data in the Mapbox MVT format.\n *\n * @param {Options=} opt_options Options.\n * @api\n */\nvar MVT = /** @class */ (function (_super) {\n __extends(MVT, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function MVT(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @type {Projection}\n */\n _this.dataProjection = new Projection({\n code: '',\n units: Units.TILE_PIXELS,\n });\n /**\n * @private\n * @type {import(\"../Feature.js\").FeatureClass}\n */\n _this.featureClass_ = options.featureClass\n ? options.featureClass\n : RenderFeature;\n /**\n * @private\n * @type {string|undefined}\n */\n _this.geometryName_ = options.geometryName;\n /**\n * @private\n * @type {string}\n */\n _this.layerName_ = options.layerName ? options.layerName : 'layer';\n /**\n * @private\n * @type {Array}\n */\n _this.layers_ = options.layers ? options.layers : null;\n /**\n * @private\n * @type {string}\n */\n _this.idProperty_ = options.idProperty;\n return _this;\n }\n /**\n * Read the raw geometry from the pbf offset stored in a raw feature's geometry\n * property.\n * @param {PBF} pbf PBF.\n * @param {Object} feature Raw feature.\n * @param {Array} flatCoordinates Array to store flat coordinates in.\n * @param {Array} ends Array to store ends in.\n * @private\n */\n MVT.prototype.readRawGeometry_ = function (pbf, feature, flatCoordinates, ends) {\n pbf.pos = feature.geometry;\n var end = pbf.readVarint() + pbf.pos;\n var cmd = 1;\n var length = 0;\n var x = 0;\n var y = 0;\n var coordsLen = 0;\n var currentEnd = 0;\n while (pbf.pos < end) {\n if (!length) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n length--;\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (cmd === 1) {\n // moveTo\n if (coordsLen > currentEnd) {\n ends.push(coordsLen);\n currentEnd = coordsLen;\n }\n }\n flatCoordinates.push(x, y);\n coordsLen += 2;\n }\n else if (cmd === 7) {\n if (coordsLen > currentEnd) {\n // close polygon\n flatCoordinates.push(flatCoordinates[currentEnd], flatCoordinates[currentEnd + 1]);\n coordsLen += 2;\n }\n }\n else {\n assert(false, 59); // Invalid command found in the PBF\n }\n }\n if (coordsLen > currentEnd) {\n ends.push(coordsLen);\n currentEnd = coordsLen;\n }\n };\n /**\n * @private\n * @param {PBF} pbf PBF\n * @param {Object} rawFeature Raw Mapbox feature.\n * @param {import(\"./Feature.js\").ReadOptions} options Read options.\n * @return {import(\"../Feature.js\").FeatureLike} Feature.\n */\n MVT.prototype.createFeature_ = function (pbf, rawFeature, options) {\n var type = rawFeature.type;\n if (type === 0) {\n return null;\n }\n var feature;\n var values = rawFeature.properties;\n var id;\n if (!this.idProperty_) {\n id = rawFeature.id;\n }\n else {\n id = values[this.idProperty_];\n delete values[this.idProperty_];\n }\n values[this.layerName_] = rawFeature.layer.name;\n var flatCoordinates = [];\n var ends = [];\n this.readRawGeometry_(pbf, rawFeature, flatCoordinates, ends);\n var geometryType = getGeometryType(type, ends.length);\n if (this.featureClass_ === RenderFeature) {\n feature = new this.featureClass_(geometryType, flatCoordinates, ends, values, id);\n feature.transform(options.dataProjection, options.featureProjection);\n }\n else {\n var geom = void 0;\n if (geometryType == GeometryType.POLYGON) {\n var endss = [];\n var offset = 0;\n var prevEndIndex = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n // classifies an array of rings into polygons with outer rings and holes\n if (!linearRingIsClockwise(flatCoordinates, offset, end, 2)) {\n endss.push(ends.slice(prevEndIndex, i + 1));\n }\n else {\n if (endss.length === 0) {\n continue;\n }\n endss[endss.length - 1].push(ends[prevEndIndex]);\n }\n prevEndIndex = i + 1;\n offset = end;\n }\n if (endss.length > 1) {\n geom = new MultiPolygon(flatCoordinates, GeometryLayout.XY, endss);\n }\n else {\n geom = new Polygon(flatCoordinates, GeometryLayout.XY, ends);\n }\n }\n else {\n geom =\n geometryType === GeometryType.POINT\n ? new Point(flatCoordinates, GeometryLayout.XY)\n : geometryType === GeometryType.LINE_STRING\n ? new LineString(flatCoordinates, GeometryLayout.XY)\n : geometryType === GeometryType.POLYGON\n ? new Polygon(flatCoordinates, GeometryLayout.XY, ends)\n : geometryType === GeometryType.MULTI_POINT\n ? new MultiPoint(flatCoordinates, GeometryLayout.XY)\n : geometryType === GeometryType.MULTI_LINE_STRING\n ? new MultiLineString(flatCoordinates, GeometryLayout.XY, ends)\n : null;\n }\n var ctor = /** @type {typeof import(\"../Feature.js\").default} */ (this\n .featureClass_);\n feature = new ctor();\n if (this.geometryName_) {\n feature.setGeometryName(this.geometryName_);\n }\n var geometry = transformGeometryWithOptions(geom, false, options);\n feature.setGeometry(geometry);\n feature.setId(id);\n feature.setProperties(values, true);\n }\n return feature;\n };\n /**\n * @return {import(\"./FormatType.js\").default} Format.\n */\n MVT.prototype.getType = function () {\n return FormatType.ARRAY_BUFFER;\n };\n /**\n * Read all features.\n *\n * @param {ArrayBuffer} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {Array} Features.\n * @api\n */\n MVT.prototype.readFeatures = function (source, opt_options) {\n var layers = this.layers_;\n var options = /** @type {import(\"./Feature.js\").ReadOptions} */ (this.adaptOptions(opt_options));\n var dataProjection = get(options.dataProjection);\n dataProjection.setWorldExtent(options.extent);\n options.dataProjection = dataProjection;\n var pbf = new PBF(/** @type {ArrayBuffer} */ (source));\n var pbfLayers = pbf.readFields(layersPBFReader, {});\n var features = [];\n for (var name_1 in pbfLayers) {\n if (layers && layers.indexOf(name_1) == -1) {\n continue;\n }\n var pbfLayer = pbfLayers[name_1];\n var extent = pbfLayer ? [0, 0, pbfLayer.extent, pbfLayer.extent] : null;\n dataProjection.setExtent(extent);\n for (var i = 0, ii = pbfLayer.length; i < ii; ++i) {\n var rawFeature = readRawFeature(pbf, pbfLayer, i);\n features.push(this.createFeature_(pbf, rawFeature, options));\n }\n }\n return features;\n };\n /**\n * Read the projection from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n MVT.prototype.readProjection = function (source) {\n return this.dataProjection;\n };\n /**\n * Sets the layers that features will be read from.\n * @param {Array} layers Layers.\n * @api\n */\n MVT.prototype.setLayers = function (layers) {\n this.layers_ = layers;\n };\n return MVT;\n}(FeatureFormat));\n/**\n * Reader callback for parsing layers.\n * @param {number} tag The tag.\n * @param {Object} layers The layers object.\n * @param {PBF} pbf The PBF.\n */\nfunction layersPBFReader(tag, layers, pbf) {\n if (tag === 3) {\n var layer = {\n keys: [],\n values: [],\n features: [],\n };\n var end = pbf.readVarint() + pbf.pos;\n pbf.readFields(layerPBFReader, layer, end);\n layer.length = layer.features.length;\n if (layer.length) {\n layers[layer.name] = layer;\n }\n }\n}\n/**\n * Reader callback for parsing layer.\n * @param {number} tag The tag.\n * @param {Object} layer The layer object.\n * @param {PBF} pbf The PBF.\n */\nfunction layerPBFReader(tag, layer, pbf) {\n if (tag === 15) {\n layer.version = pbf.readVarint();\n }\n else if (tag === 1) {\n layer.name = pbf.readString();\n }\n else if (tag === 5) {\n layer.extent = pbf.readVarint();\n }\n else if (tag === 2) {\n layer.features.push(pbf.pos);\n }\n else if (tag === 3) {\n layer.keys.push(pbf.readString());\n }\n else if (tag === 4) {\n var value = null;\n var end = pbf.readVarint() + pbf.pos;\n while (pbf.pos < end) {\n tag = pbf.readVarint() >> 3;\n value =\n tag === 1\n ? pbf.readString()\n : tag === 2\n ? pbf.readFloat()\n : tag === 3\n ? pbf.readDouble()\n : tag === 4\n ? pbf.readVarint64()\n : tag === 5\n ? pbf.readVarint()\n : tag === 6\n ? pbf.readSVarint()\n : tag === 7\n ? pbf.readBoolean()\n : null;\n }\n layer.values.push(value);\n }\n}\n/**\n * Reader callback for parsing feature.\n * @param {number} tag The tag.\n * @param {Object} feature The feature object.\n * @param {PBF} pbf The PBF.\n */\nfunction featurePBFReader(tag, feature, pbf) {\n if (tag == 1) {\n feature.id = pbf.readVarint();\n }\n else if (tag == 2) {\n var end = pbf.readVarint() + pbf.pos;\n while (pbf.pos < end) {\n var key = feature.layer.keys[pbf.readVarint()];\n var value = feature.layer.values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n }\n else if (tag == 3) {\n feature.type = pbf.readVarint();\n }\n else if (tag == 4) {\n feature.geometry = pbf.pos;\n }\n}\n/**\n * Read a raw feature from the pbf offset stored at index `i` in the raw layer.\n * @param {PBF} pbf PBF.\n * @param {Object} layer Raw layer.\n * @param {number} i Index of the feature in the raw layer's `features` array.\n * @return {Object} Raw feature.\n */\nfunction readRawFeature(pbf, layer, i) {\n pbf.pos = layer.features[i];\n var end = pbf.readVarint() + pbf.pos;\n var feature = {\n layer: layer,\n type: 0,\n properties: {},\n };\n pbf.readFields(featurePBFReader, feature, end);\n return feature;\n}\n/**\n * @param {number} type The raw feature's geometry type\n * @param {number} numEnds Number of ends of the flat coordinates of the\n * geometry.\n * @return {import(\"../geom/GeometryType.js\").default} The geometry type.\n */\nfunction getGeometryType(type, numEnds) {\n /** @type {import(\"../geom/GeometryType.js\").default} */\n var geometryType;\n if (type === 1) {\n geometryType =\n numEnds === 1 ? GeometryType.POINT : GeometryType.MULTI_POINT;\n }\n else if (type === 2) {\n geometryType =\n numEnds === 1 ? GeometryType.LINE_STRING : GeometryType.MULTI_LINE_STRING;\n }\n else if (type === 3) {\n geometryType = GeometryType.POLYGON;\n // MultiPolygon not relevant for rendering - winding order determines\n // outer rings of polygons.\n }\n return geometryType;\n}\nexport default MVT;\n","import VectorTileLayer from 'ol/layer/VectorTile';\nimport VectorTile from 'ol/source/VectorTile';\nimport MVT from 'ol/format/MVT';\nimport {createXYZ} from 'ol/tilegrid';\nimport {getMapFactoryStyler, MapFactoryStyler} from './style';\nimport TileState from 'ol/TileState';\nimport * as ax from 'axios';\nimport {MapFactoryAuthenticator} from './authentication';\nimport OlFeature from 'ol/Feature';\nimport {MapStore} from '../stores/map/map.store';\nimport Feature from 'ol/Feature';\nimport {GeoJSON} from 'ol/format';\nimport Geometry from 'ol/geom/Geometry';\nimport {ApMapInstance} from '../ap-map';\n\nlet stylerInstance: MapFactoryStyler = null;\n\nexport class LayerFactory {\n\n static createMapFactoryLayer(name: string, address: string, url: string, filter: (f: Feature) => boolean, mapStore: MapStore): { name: string; layer: VectorTileLayer; source: VectorTile } {\n url = `${address}${url}`;\n if (!stylerInstance) {\n stylerInstance = getMapFactoryStyler(address, mapStore);\n }\n const s = LayerFactory.createMapFactorySource(url, filter);\n const l = new VectorTileLayer({\n renderMode: 'image',\n declutter: false,\n updateWhileAnimating: true,\n updateWhileInteracting: true,\n source: s,\n style: stylerInstance.styleFunction.bind(stylerInstance),\n });\n l.set('name', name);\n return {\n name,\n layer: l,\n source: s\n };\n }\n\n static createMapFactorySource(url: string, filter: (f: OlFeature) => boolean): VectorTile {\n return new VectorTile({\n format: ApMapInstance.isDebugModeEnabled ? new GeoJSON() : new MVT(),\n tileGrid: createXYZ({maxZoom: 22}),\n tilePixelRatio: 16,\n url,\n tileLoadFunction: (tile, src) => {\n const tmp = src.Split('?params=');\n tile.setLoader(async (extent, resolution, projection) => {\n ax.default({\n method: 'POST',\n url: tmp[0],\n responseType: 'arraybuffer',\n headers: {\n Authorization: await MapFactoryAuthenticator.getHash(),\n },\n data: btoa(tmp[1]),\n }).then((res) => {\n if (res.status !== 200) {\n tile.setState(TileState.ERROR);\n return;\n }\n let features: Feature[] = [];\n // While debugMode is enabled the map is rendered with full qualified feature instances\n // Those full features allows us to convert them to GeoJson\n // Without debugMode the maps consists of so called RenderFeatures which is\n // a lightweight feature implementation to increase performance\n if (ApMapInstance.isDebugModeEnabled) {\n try {\n // In order to generate valid geoJson output we need to convert from RenderFeature to a regular\n // feature and then convert it to GeoJson format using the correct projection (3857 => 4326\n // const geoJsonFormat = new GeoJSON();\n features = new MVT({featureClass: Feature as unknown as Feature})\n .readFeatures(res.data, {\n extent,\n featureProjection: projection\n }) as Feature[];\n } catch (e) {\n console.error(`Error while generating tiles for debugMode (full feature tiles): ${JSON.stringify(e)}`);\n }\n }\n // Regular RenderFeature for better performance\n else {\n const format = tile.getFormat(); // ol/format/MVT configured as source format\n features = format.readFeatures(res.data, {\n extent,\n featureProjection: projection\n });\n }\n if (typeof filter === 'function') {\n tile.setFeatures(features.filter(_ => filter(_)));\n } else {\n tile.setFeatures(features);\n }\n }).catch((e) => {\n if (ApMapInstance.hasDeveloperRole) {\n console.error(`Error while generating tiles: ${e?.message}`);\n }\n tile.setState(TileState.ERROR);\n });\n });\n }\n } as any);\n }\n}\n","import * as ax from 'axios';\nimport {MapFactoryAuthenticator} from './authentication';\nimport {APP_CONFIGURATION} from '../ap-core/config';\nimport IGuid = System.IGuid;\n\nexport class MapFactoryRequestor {\n static async getPackage(packageId: IGuid): Promise {\n if (!packageId) {\n return null;\n }\n const link = `${APP_CONFIGURATION.MapFactory.Address}/zip/con_mongo_raster/${packageId.toString()}`;\n const res = await ax.default({\n method: 'GET',\n url: link,\n responseType: 'arraybuffer',\n headers: {\n Authorization: await MapFactoryAuthenticator.getHash(),\n }\n });\n if (res.status >= 400) {\n return null;\n }\n return res.data;\n }\n\n static async getNutrientPlanning(fieldGeomId: IGuid): Promise {\n if (!fieldGeomId) {\n return null;\n }\n const link = `${APP_CONFIGURATION.MapFactory.Address}/npl/con_mongo_raster/${fieldGeomId.toString()}`;\n const res = await ax.default({\n method: 'GET',\n url: link,\n responseType: 'arraybuffer',\n headers: {\n Authorization: await MapFactoryAuthenticator.getHash(),\n }\n });\n if (res.status >= 400) {\n return null;\n }\n return res.data;\n }\n\n static async getNutrientBooking(fieldGeomId: IGuid): Promise {\n if (!fieldGeomId) {\n return null;\n }\n const link = `${APP_CONFIGURATION.MapFactory.Address}/nbk/con_mongo_raster/${fieldGeomId.toString()}`;\n const res = await ax.default({\n method: 'GET',\n url: link,\n responseType: 'arraybuffer',\n headers: {\n Authorization: await MapFactoryAuthenticator.getHash(),\n }\n });\n if (res.status >= 400) {\n return null;\n }\n return res.data;\n }\n\n static async getRb(fieldGeomId: IGuid): Promise {\n if (!fieldGeomId) {\n return null;\n }\n const link = `${APP_CONFIGURATION.MapFactory.Address}/zip/con_mongo_raster/${fieldGeomId.toString()}`;\n const res = await ax.default({\n method: 'GET',\n url: link,\n responseType: 'arraybuffer',\n headers: {\n Authorization: await MapFactoryAuthenticator.getHash(),\n }\n });\n if (res.status >= 400) {\n return null;\n }\n return res.data;\n }\n}\n","import Style from 'ol/style/Style';\nimport Stroke from 'ol/style/Stroke';\nimport Fill from 'ol/style/Fill';\nimport Text from 'ol/style/Text';\nimport CircleStyle from 'ol/style/Circle';\nimport {ILabelDefinition, IStyle, IStyleDefinition} from './interfaces';\nimport {NumberFactory} from 'ts-tooling';\nimport * as ax from 'axios';\nimport {MapFactoryAuthenticator} from './authentication';\nimport {DEVICE_PIXEL_RATIO} from 'ol/has';\nimport {ApStyleData} from './ap-style-data';\nimport {Subject} from 'rxjs';\nimport {MapStore} from '../stores/map/map.store';\nimport {ILegend, ILegendValue} from '../stores/map/map.legend.store';\nimport {ApMapInstance} from '../ap-map';\n\nexport class MapFactoryStyler {\n static get Instance(): MapFactoryStyler {\n return mapFactoryStyler();\n }\n\n public customStyle: Subject = new Subject();\n styles: IStyle[] = [];\n private styleCache = {};\n\n constructor(private address: string,\n private mapStore: MapStore) {\n }\n\n async reloadServerStyles(): Promise {\n try {\n const res = await ax.default({\n method: 'GET',\n url: `${this.address}/styles`,\n transformResponse: this.transformResponse,\n headers: {\n Authorization: await MapFactoryAuthenticator.getHash(),\n }\n });\n if (res.status !== 200) {\n throw Error('error on load styles from ' + this.address + '/styles');\n }\n this.styles = res.data;\n } catch (e) {\n console.warn(`error on request map factory styles: ${e.message}`);\n }\n }\n\n clearStyleCache(): void {\n this.styleCache = {};\n }\n\n styleFunction(feat, reso): any {\n // this function is a sensitive spot. Any exception will lead to a crash of OpenLayers map instance.\n // Openlayers calls this function as part of its own logic and does not have any error handling there\n // => that's why we need to catch exceptions on our own (see APV49-4708)\n try {\n const props = feat.getProperties();\n if (!props?.data) {\n if (ApMapInstance.hasDeveloperRole) {\n console.error(`Invalid feature properties which cannot be rendered in map (Maybe missing data due to incomplete or invalid contours in our MongoDb): ${JSON.stringify(props)}`);\n }\n return;\n }\n const data = JSON.parse(props.data);\n const selectedStyle = this.styles.Find(i => i.name === data.style);\n if (!selectedStyle) {\n return;\n }\n this.setLegendSubjects(selectedStyle, data);\n const cacheId = this.buildCacheId(selectedStyle, data);\n if (!this.styleCache[cacheId]) {\n this.styleCache[cacheId] = selectedStyle.type === 'basic' ?\n this.getBasicStyle(selectedStyle, data, reso) :\n this.getDynamicStyle(selectedStyle, data, reso);\n }\n\n this.setText(this.styleCache[cacheId], selectedStyle.label, data, reso);\n const styleData: ApStyleData = {style: this.styleCache[cacheId], map: data.type};\n if (this.customStyle) {\n this.customStyle.next(styleData);\n }\n return styleData.style;\n } catch (e) {\n if (ApMapInstance.hasDeveloperRole) {\n console.error(`Unexpected error within map 'styleFunction'. Some contours may appear empty: ${e?.message}`);\n }\n }\n }\n\n private buildCacheId(style: IStyle, data: any): string {\n if (style.type === 'basic') {\n return `${data.type}`;\n }\n return `${data.type}_${data[style.dataField]}`;\n }\n\n\n private transformResponse(data: string): any[] {\n try {\n const str = data.toString();\n const tmp = str.Trim('\"');\n return JSON.parse(atob(tmp));\n } catch (e) {\n console.warn(`error on transform map factory style response ${e.message}`);\n return [];\n }\n }\n\n private setText(style: Style, label: ILabelDefinition, props: any, reso: number): void {\n const labelText = style.getText();\n if (!labelText) {\n return;\n }\n let text = '';\n const hasMinResolution = label.minResolution > -1;\n const hasMaxResolution = label.maxResolution > -1;\n const isInResolution = ((hasMinResolution && reso >= label.minResolution) || !hasMinResolution) &&\n ((hasMaxResolution && reso <= label.maxResolution) || !hasMaxResolution);\n if (isInResolution) {\n text = (props[label.field] || '').toString();\n if (label.decimalPlaces >= 0) {\n text = this.roundLabel(text, label.decimalPlaces);\n }\n }\n labelText.setText(text);\n }\n\n private roundLabel(value: string, decimalPlaces: number): string {\n const v = parseFloat(value);\n if (isNaN(v)) {\n return value;\n }\n return v.toFixed(decimalPlaces);\n }\n\n private createLabel(label: ILabelDefinition, props: any, reso: number): Text {\n const opts = {\n font: label.font || undefined,\n textAlign: label.textAlign || undefined, // 'start' 'left' 'right' 'center' 'end'\n textBaseline: label.textBaseline || undefined, // 'alphabetic' 'bottom' 'hanging' 'ideographic' 'middle' 'top'\n placement: label.placement || undefined, // 'line' or 'point'\n scale: label.scale || 1,\n overflow: label.overflow === true,\n rotateWithView: label.rotateWithView === true,\n text: '',\n offsetX: label.offsetX,\n offsetY: label.offsetY,\n rotation: label.rotation,\n fill: new Fill(label.style.fill),\n stroke: new Stroke(label.style.stroke),\n };\n return new Text(opts);\n }\n\n private createStyle(style: IStyleDefinition, label: ILabelDefinition, props: any, reso: number): Style {\n switch (style.geometryType) {\n case 'Point':\n return new Style({\n image: new CircleStyle({\n radius: style.radius,\n stroke: style.stroke.width > 0 ? new Stroke({\n color: style.stroke.color,\n width: style.stroke.width,\n }) : new Stroke({\n color: this.getFill(style).getColor(),\n width: 1,\n }),\n fill: new Fill({\n color: style.fill.color,\n })\n }),\n text: label && label.field ? this.createLabel(label, props, reso) : undefined,\n });\n case 'Line':\n return new Style({\n stroke: style.stroke.width > 0 ? new Stroke({\n color: style.stroke.color,\n width: style.stroke.width,\n }) : null,\n text: label && label.field ? this.createLabel(label, props, reso) : undefined,\n });\n case 'Polygon':\n return new Style({\n stroke: style.stroke.width > 0 ? new Stroke({\n color: style.stroke.color,\n width: style.stroke.width,\n }) : new Stroke({\n color: this.getFill(style).getColor(),\n width: 1,\n }),\n fill: this.getFill(style),\n text: label && label.field ? this.createLabel(label, props, reso) : undefined,\n });\n default:\n throw Error('invalid style type ' + style.geometryType);\n }\n }\n\n private getBasicStyle(style: IStyle, props: any, reso: number): Style {\n return this.createStyle(style.defaultStyle, style.label, props, reso);\n }\n\n private parsePropValue(style: IStyle, props: any): [boolean, boolean, string | number] {\n let propValue = props[style.dataField];\n const isString = typeof propValue === typeof '';\n if (isString) {\n propValue = props[style.dataField];\n } else {\n propValue = parseFloat(propValue);\n if (isNaN(propValue)) {\n propValue = props[style.dataField];\n }\n }\n if (!propValue) {\n return [false, false, null];\n }\n return [true, isString, propValue];\n }\n\n private parseNumberFromKey(key: string): [boolean, number, string] {\n if (!key) {\n return [false, 0, ''];\n }\n const n = parseFloat(key);\n const isPure = !key.Contains(' ');\n if (isPure) {\n return [true, n, ''];\n }\n const tmp = key.Split(' ');\n if (tmp.length < 2) {\n return [false, n, ''];\n }\n const v = parseFloat(tmp[0]);\n if (isNaN(v)) {\n return [false, n, ''];\n }\n return [true, v, tmp[1]];\n }\n\n private matchKey(key: string, keybefore: string, keyafter: string, value: string | number, isString: boolean): boolean {\n const keyInfo = this.parseNumberFromKey(key);\n const keyBeforeInfo = this.parseNumberFromKey(keybefore);\n const keyAfterInfo = this.parseNumberFromKey(keyafter);\n switch (keyInfo[2]) {\n case '<':\n return NumberFactory.NewDouble(value) < keyInfo[1];\n case '<=':\n return NumberFactory.NewDouble(value) <= keyInfo[1];\n case '>':\n return NumberFactory.NewDouble(value) > keyInfo[1];\n case '>=':\n return NumberFactory.NewDouble(value) >= keyInfo[1];\n }\n\n if (isString) {\n return key === value;\n }\n if (!keyInfo[0]) {\n return false;\n }\n if (!keyInfo[2] && !keyBeforeInfo[0] && !keyAfterInfo[0]) {\n return keyInfo[1] === NumberFactory.NewDouble(value);\n }\n if (!keyInfo[2] && keyBeforeInfo[0]) {\n return NumberFactory.NewDouble(value) > keyBeforeInfo[1] && NumberFactory.NewDouble(value) <= keyAfterInfo[1];\n }\n if (!keyInfo[2] && keyAfterInfo[0]) {\n return NumberFactory.NewDouble(value) <= keyAfterInfo[1] && NumberFactory.NewDouble(value) > keyBeforeInfo[1];\n }\n return false;\n }\n\n private getDynamicStyle(style: IStyle, props: any, reso: number): Style {\n // Here we need to sort the value keys (coming from mapFactory *.style) ascending\n // by its value. We have to make sure to apply numeric sort and extract the numeric value from\n // the key which might contain \"<=\", \"<\", \">\", \">=\" as well\n const keys = Object.keys(style.legend).sort((a, b) => {\n const numericValueKeyA = this.parseNumberFromKey(a)[1];\n const numericValueKeyB = this.parseNumberFromKey(b)[1];\n return numericValueKeyA - numericValueKeyB;\n });\n\n if (style.min && style.max) {\n const value = parseFloat(props[style.dataField]);\n let idx;\n let legend: ILegend;\n if (['st_ir_contours'].Contains(style.name)) {\n legend = this.mapStore.Legends.NeedLegend;\n } else if (['st_planning'].Contains(style.name)) {\n legend = this.mapStore.Legends?.NutrientPlanningLegend?.getValuesList()?.length > 0 ?\n this.mapStore.Legends?.NutrientPlanningLegend :\n this.mapStore.Legends.TaskMgmtLegend;\n } else if (['st_n_planning'].Contains(style.name)) {\n legend = this.mapStore.Legends?.NPlanningLegend?.getValuesList()?.length > 0 ?\n this.mapStore.Legends?.NPlanningLegend :\n this.mapStore.Legends.TaskMgmtLegend;\n } else if (['st_nuptake'].Contains(style.name)) {\n legend = this.mapStore.Legends.NUptakeLegend;\n } else if (['st_nd_uptake', 'st_nd_application', 'st_nd_gbi'].Contains(style.name)) {\n legend = this.mapStore.Legends.nLogInterpolationLegend;\n } else if (['st_n_sensor_log_points'].Contains(style.name)) {\n legend = this.mapStore.Legends.LogLegend;\n } else if (['st_pp_application', 'st_pp_uptake', 'st_pp_gbi'].Contains(style.name)) {\n legend = this.mapStore.Legends.PpLogInterpolationLegend;\n } else if (['st_pp_application_map'].Contains(style.name)) {\n legend = this.mapStore.Legends.PpApplicationLegend;\n }\n\n const valueList = legend?.getValuesList();\n\n // If we have an assigned legend for the current map view we\n // are not recalculating the contour's class index.\n // Instead, we get the class index from already existing calculation\n // in legend. (assign contour value to legend class index)\n if (valueList?.length > 0) {\n idx = this.getValueLegendIndex(value, legend.getValuesList());\n } else {\n idx = this.getClass(value, props[style.max], keys.length - 1);\n }\n\n if (idx === undefined || idx === null || isNaN(idx)) {\n idx = 0;\n }\n return this.createStyle(idx === -1 ? style.defaultStyle : style.legend[idx], style.label || null,\n props, reso);\n }\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const keybefore = keys[i - 1] || null;\n const keyafter = keys[i + 1] || null;\n const value = style.legend[key];\n const propInfo = this.parsePropValue(style, props);\n if (!propInfo[0]) {\n return this.createStyle(style.defaultStyle, style.label, props, reso);\n }\n if (this.matchKey(key, keybefore, keyafter, propInfo[2], propInfo[1])) {\n return this.createStyle(value, style.label, props, reso);\n }\n }\n return this.createStyle(style.defaultStyle, style.label, props, reso);\n }\n\n private getCustomStyle(): Fill {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n const fill = new Fill();\n const size = 512 * DEVICE_PIXEL_RATIO;\n\n canvas.width = size;\n canvas.height = size;\n\n const color1 = 'rgba(150,0,0,0.35)';\n const color2 = 'transparent';\n const offset = 150;\n\n const numberOfStripes = 48;\n for (let i = 0; i < numberOfStripes * 2; i++) {\n const thickness = size / numberOfStripes;\n context.beginPath();\n switch (i % 4) {\n case 0:\n context.strokeStyle = color1;\n break;\n default:\n context.strokeStyle = color2;\n }\n context.lineWidth = thickness;\n context.lineCap = 'round';\n\n const startX = ((i + 1) * thickness + thickness / 2 - size) - offset;\n const startY = 0 - offset;\n const endX = ((1 + i) * thickness + thickness / 2) + offset;\n const endY = size + offset;\n context.moveTo(startX, startY);\n context.lineTo(endX, endY);\n context.stroke();\n }\n\n fill.setColor(context.createPattern(canvas, 'repeat'));\n return fill;\n }\n\n private getFill(style: IStyleDefinition): Fill {\n switch (style.fill.color) {\n case 'hatching':\n return this.getCustomStyle();\n }\n return new Fill({\n color: style.fill.color,\n });\n }\n\n private getClass(pValue: number, pMax: number, classes: number, pMin: number = 0): number {\n if (pMax <= 0 || pValue <= 0 || pMin < 0 || pMin > pMax) {\n return 0;\n }\n if (pValue > pMax) {\n return classes;\n }\n if (pValue < pMin) {\n return 0;\n }\n return Math.ceil((pValue - pMin) / ((pMax - pMin) / classes));\n }\n\n /**\n * Finds index of matching legend class/element\n * @param pValue the current contour's value\n * @param legendValues all legend classes/values\n * @private\n */\n private getValueLegendIndex(pValue: number, legendValues: ILegendValue[]): number {\n if (pValue < 0.01) {\n return -1;\n }\n // Workaround for current contouring issues where a contour might\n // have a slightly smaller value than the legend's min\n if (pValue <= legendValues[0].value) {\n return 0;\n }\n for (let legendClassIndex = legendValues.length - 1; legendClassIndex >= 0; legendClassIndex--) {\n if (pValue >= legendValues[legendClassIndex].value) {\n return legendClassIndex;\n }\n }\n return legendValues.length - 1;\n }\n\n private setLegendSubjects(selectedStyle: IStyle, data: any): void {\n if (['st_pp_application', 'st_pp_uptake', 'st_pp_gbi'].Contains(selectedStyle.name)) {\n this.mapStore.Legends.PpLogInterpolationLegend.subjects[0].next(data[selectedStyle['min']]);\n this.mapStore.Legends.PpLogInterpolationLegend.subjects[1].next(data[selectedStyle['max']]);\n } else if (['st_nd_application', 'st_nd_uptake', 'st_nd_gbi'].Contains(selectedStyle.name)) {\n this.mapStore.Legends.nLogInterpolationLegend.subjects[0].next(data[selectedStyle['min']]);\n this.mapStore.Legends.nLogInterpolationLegend.subjects[1].next(data[selectedStyle['max']]);\n }\n }\n}\n\nlet instance: MapFactoryStyler = null;\n\nexport function getMapFactoryStyler(address: string, mapStore: MapStore): MapFactoryStyler {\n if (!instance) {\n instance = new MapFactoryStyler(address, mapStore);\n }\n return instance;\n}\n\nexport function mapFactoryStyler(): MapFactoryStyler {\n return instance;\n}\n\nexport function calculateCurrentNeedSteps(step: number, classes: number, max: number): number {\n return step * Math.ceil(max / (step * classes));\n}\n","import {RouterModule, Routes} from '@angular/router';\nimport {NgModule} from '@angular/core';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class ApMapRoutes {\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ILegendValue} from '../../../stores/map/map.legend.store';\n\n@Pipe({\n name: 'getLayerValues',\n})\nexport class GetLayerValuesPipe implements PipeTransform {\n transform(value: { [key: string]: ILegendValue[] } | ILegendValue[] | ((...args: string[]) => ILegendValue[]), ...args: string[]): ILegendValue[] {\n if (typeof value === 'function') {\n return value(...args[0]?.Split('_'));\n }\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof args[0] !== typeof '' || !Array.isArray(value[args[0]])) {\n return [];\n }\n return value[args[0]];\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'ap-legend-color-item',\n template: `\n
\n
\n \n
\n `,\n})\nexport class ApLegendColorItemComponent {\n @Input()\n public color = '';\n @Input()\n public title = '';\n @Input()\n public index = 0;\n @Input()\n public total = 0;\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'getUnitValue',\n})\nexport class GetUnitValuePipe implements PipeTransform {\n transform(value: { [key: string]: string } | string, ...args: string[]): string {\n if (!value) {\n return '';\n }\n if (typeof value === typeof '') {\n return value as string;\n }\n return value[args[0]];\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ILegendSelectionItem} from '../../../../stores/map/map.legend.store';\n\n@Pipe({\n name: 'getLegendSelectionValues'\n})\nexport class GetLegendSelectionValuesPipe implements PipeTransform {\n\n transform(values: ILegendSelectionItem[] | ((...args: string[]) => ILegendSelectionItem[]), currentSelection: string): ILegendSelectionItem[] {\n let result: ILegendSelectionItem[];\n if (values === undefined || values === null) {\n result = [];\n } else if (Array.isArray(values)) {\n result = values;\n } else {\n result = values(...currentSelection.Split('_'));\n }\n return result;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {ApMapComponent} from './components/ap-map.component';\nimport {ApMapZoomComponent} from './components/ap-map-zoom.component';\nimport {ApMapRoutes} from './ap-map.routes';\nimport {CommonModule} from '@angular/common';\nimport {ApMachinePopupComponent} from './components/ap-machine-popup.component';\nimport {ApSensorPointPopupComponent} from './components/ap-sensor-point-popup/ap-sensor-point-popup.component';\nimport {SensorPointLegendComponent} from './components/sensor-point-legend/sensor-point-legend.component';\nimport {ApMapColorLegendComponent} from './components/ap-map-color-legend.component';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {ApMapEditComponent} from './components/ap-map-edit.component';\nimport {ToolBarModule} from '@progress/kendo-angular-toolbar';\nimport {ApUtilsModule} from '../ap-utils';\nimport {ButtonModule, ButtonsModule} from '@progress/kendo-angular-buttons';\nimport {LayoutModule} from '@progress/kendo-angular-layout';\nimport {ApPermissionModule} from '../ap-permission/ap-permission.module';\nimport {ContextMenuModule} from '@progress/kendo-angular-menu';\nimport {ApMapContextMenuComponent} from './components/ap-map-context-menu.component';\nimport {ComboBoxModule, DropDownsModule} from '@progress/kendo-angular-dropdowns';\nimport {ApMapTreeViewComponent} from './components/ap-map-tree-view.component';\nimport {TreeViewModule} from '@progress/kendo-angular-treeview';\nimport {MapTreeViewDirective} from './directives/map-tree-view.directive';\nimport {ApMapBurgerMenuComponent} from './components/ap-map-burger-menu.component';\nimport {PopupModule} from '@progress/kendo-angular-popup';\nimport {CheckBoxModule, RadioButtonModule} from '@progress/kendo-angular-inputs';\nimport {BodyModule, GridModule, SharedModule} from '@progress/kendo-angular-grid';\nimport {ApResponsiveTextModule} from '../ap-responsive-text/ap-responsive-text.module';\nimport {NewFieldToolbarComponent} from './components/edit/new-field-toolbar/new-field-toolbar.component';\nimport {ApDynamicComponentLoaderModule} from '../entry-components/ap-dynamic-component-loader/ap-dynamic-component-loader.module';\nimport {ApTooltipModule} from '../ap-tooltip/ap-tooltip.module';\nimport {ApLayerExportComponent} from './export/ap-layer-export.component';\nimport {LayerControllerComponent} from './components/layer-controller/layer.controller.component';\nimport {GetPanelBarItemsPipe} from './components/layer-controller/get.panel.bar.items.pipe';\nimport {LayerPanelBarItemComponent} from './components/layer-controller/layer-panel-bar-item.component';\nimport {GetLayerPipe} from './components/layer-controller/get.layer.pipe';\nimport {GetGroupLayerVisibilityPipe} from './components/layer-controller/get.group.layer.visibility.pipe';\nimport {LayerControllerMapSelectorComponent} from './components/layer-controller/layer.controller.map.selector.component';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ApLegendScrollerComponent} from './components/layer-controller/ap-legend-scroller.component';\nimport {NgScrollbarModule} from 'ngx-scrollbar';\nimport {ApLegendScrollerItemComponent} from './components/layer-controller/ap-legend-scroller-item.component';\nimport {GetLayerValuesPipe} from './components/layer-controller/get.layer.values.pipe';\nimport {ApLegendColorItemComponent} from './components/layer-controller/ap-legend-color-item.component';\nimport {GetUnitValuePipe} from './components/layer-controller/get.unit.value.pipe';\nimport { GetLegendSelectionValuesPipe } from './components/layer-controller/pipes/get-legend-selection-values.pipe';\nimport {ApMapTooltipComponent} from './components/ap-map-tooltip.component';\n\n@NgModule({\n declarations: [\n ApMapComponent,\n ApMapZoomComponent,\n ApMachinePopupComponent,\n ApSensorPointPopupComponent,\n SensorPointLegendComponent,\n ApMapEditComponent,\n NewFieldToolbarComponent,\n ApMapColorLegendComponent,\n ApMapContextMenuComponent,\n ApMapTooltipComponent,\n ApMapTreeViewComponent,\n MapTreeViewDirective,\n ApMapBurgerMenuComponent,\n ApLayerExportComponent,\n LayerControllerComponent,\n GetPanelBarItemsPipe,\n LayerPanelBarItemComponent,\n GetLayerPipe,\n GetGroupLayerVisibilityPipe,\n LayerControllerMapSelectorComponent,\n ApLegendScrollerComponent,\n ApLegendScrollerItemComponent,\n GetLayerValuesPipe,\n ApLegendColorItemComponent,\n GetUnitValuePipe,\n GetLegendSelectionValuesPipe,\n ],\n exports: [\n ApMapComponent,\n ApMapZoomComponent,\n ApMapEditComponent,\n NewFieldToolbarComponent,\n ApMachinePopupComponent,\n ApLayerExportComponent,\n ApMapTooltipComponent\n ],\n imports: [\n ApMapRoutes,\n CommonModule,\n ApTranslationModule,\n ToolBarModule,\n ApUtilsModule,\n ButtonModule,\n ButtonsModule,\n LayoutModule,\n ApPermissionModule,\n ContextMenuModule,\n ComboBoxModule,\n TreeViewModule,\n DropDownsModule,\n PopupModule,\n CheckBoxModule,\n GridModule,\n SharedModule,\n BodyModule,\n ApResponsiveTextModule,\n ApDynamicComponentLoaderModule,\n ApTooltipModule,\n RadioButtonModule,\n ReactiveFormsModule,\n NgScrollbarModule\n ],\n providers: [],\n entryComponents: []\n})\nexport class ApMapModule {\n}\n","import {ChangeDetectorRef, Component, ElementRef, ViewChild} from '@angular/core';\n\nexport interface TooltipContent {\n text: string;\n style?: string;\n}\n\n@Component({\n selector: 'ap-map-tooltip',\n template: `\n
0\" class=\"ap-map-tooltip k-tooltip k-widget\" [style]=\"style\">\n \n
\n `,\n})\n/**\n * Component for generic map tooltip\n */\nexport class ApMapTooltipComponent {\n @ViewChild('apMapTooltip') public tooltipRef: ElementRef;\n public data: TooltipContent[] = [];\n public style = '';\n public left = '0px';\n public top = '0px';\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n }\n\n /**\n * Shows a map tooltip at the given pixel/position with the given content and styling\n * If the content is empty the tooltip is hidden\n */\n public show(tooltipContent: TooltipContent[], style: string = ''): void {\n if (!tooltipContent || tooltipContent?.length <= 0) {\n this.data = undefined;\n return;\n }\n this.data = tooltipContent;\n this.style = style;\n this.changeDetectorRef.detectChanges();\n }\n}\n","export enum GeometryEditorTool {\n NONE = 'none',\n DRAW_NEW = 'draw_new',\n MOVE_VERTEX = 'move_vertex',\n MOVE_SELECT_VERTEX = 'move_select_vertex',\n SPLIT = 'split',\n SELECT = 'select',\n MERGE_AREA = 'merge_area',\n DRAW_HOLE = 'draw_hole',\n DELETE_HOLE = 'delete_hole',\n MODIFY = 'modify',\n PREPARE_MODIFY = 'prepare_modify',\n DELETE = 'delete'\n}\n\nexport enum GeometryEditorToolGroup {\n NONE = 'none',\n ALL = 'all',\n MODIFY = 'modify',\n NEW = 'new'\n}\n","import {Injectable} from '@angular/core';\nimport Polygon from 'ol/geom/Polygon';\nimport {LineString} from 'ol/geom';\nimport {getArea, getLength} from 'ol/sphere';\nimport {MapStore} from '../../../stores/map/map.store';\nimport Feature from 'ol/Feature';\nimport Overlay from 'ol/Overlay';\nimport {Coordinate, toStringXY} from 'ol/coordinate';\nimport {GeometryEditor} from '../../../ap-map/geometry.editor';\nimport {ApEditStyles} from '../../../ap-map/layers/ap-edit-styles';\nimport {MapInteraction, MapInteractions} from '../../../ap-map/interactions';\nimport {ApMapInstance, LayerNames} from '../../../ap-map';\nimport {GeometryEditorTool} from './ap-edit-tooltype';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport GeometryType from 'ol/geom/GeometryType';\nimport {Draw} from 'ol/interaction';\nimport {ApGuidUtil} from '../../../ap-utils';\nimport OverlayPositioning from 'ol/OverlayPositioning';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {defaultStyle, selectedStyle} from '../../../ap-map/layers/ap-fields.style';\nimport {ObjectFactory} from 'ts-tooling';\nimport LinearRing from 'ol/geom/LinearRing';\nimport {LanguageStore} from '../../../stores/translation/language.store';\nimport {DrawEvent} from 'ol/interaction/Draw';\nimport {NotifyStore} from '../../../stores/dialog/notify.store';\nimport IField = Data.FieldManagement.IField;\nimport {ApDefined} from '../../../ap-utils/static/ap-defined';\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EditorService {\n public static ValidSketch$ = new BehaviorSubject(true);\n public static ValidSplitLine$ = new BehaviorSubject(true);\n public static SplitLineDrawn$ = new BehaviorSubject(false);\n\n constructor(public mapStore: MapStore,\n private fieldStore: FieldStore,\n private languageStore: LanguageStore,\n private notifyStore: NotifyStore) {\n this.mapStore.Editor.startListening();\n this.mapStore.Editor.onDrawNew.subscribe(() => {\n this.mapStore.Editor.LockFeature(false);\n this.createMeasureTooltip();\n this.createHelpTooltip();\n this.startDrawNew();\n });\n this.mapStore.Editor.onDrawNewEnd.subscribe(() => {\n this.unsubscribeMouseOverFeature();\n this.removeTooltip();\n });\n this.mapStore.Editor.onSplit.subscribe(() => {\n this.mapStore.Editor.LockFeature(false);\n this.createHelpTooltip();\n this.enableSplit();\n });\n this.mapStore.Editor.onSplitEnd.subscribe(() => {\n EditorService.ValidSketch$.next(true);\n EditorService.ValidSplitLine$.next(true);\n EditorService.SplitLineDrawn$.next(false);\n this.unsubscribeMouseOverFeature();\n this.removeTooltip();\n });\n this.mapStore.Editor.onModify.subscribe(() => {\n this.enableModifyNewVertex([]);\n });\n this.mapStore.Editor.onDrawNewHole.subscribe(() => {\n this.enableDrawHole();\n });\n this.mapStore.Editor.onDeleteHole.subscribe(() => {\n this.endDrawHole();\n this.enableDeleteHole();\n });\n this.mapStore.Editor.onCloseEditor.subscribe(() => {\n this.fieldStore.Mutate(s => s.editFields, () => []);\n EditorService.removeDrawInteraction();\n EditorService.removeSnapInteraction();\n this.mapStore.Layers.PolygonEditLayer.RemoveSelectedFeatures();\n this.mapStore.Layers.PolygonEditLayer.clear();\n this.mapStore.Layers.PolygonEditViewLayer.clear();\n this.sketch = null;\n });\n this.mapStore.Editor.onDeleteSketchGeometry.subscribe(() => {\n (MapInteraction.FindByName(MapInteractions.DRAW) as Draw)?.abortDrawing();\n });\n }\n\n /**\n * Currently drawn feature.\n */\n private sketch: Feature;\n /**\n * The help tooltip element.\n */\n private helpTooltipElement;\n /**\n * Overlay to show the help messages.\n */\n private helpTooltip: Overlay;\n /**\n * The measure tooltip element.\n */\n private measureTooltipElement;\n /**\n * Overlay to show the measurement.\n */\n private measureTooltip: Overlay;\n private listenPolygonEditChange: Subscription = null;\n private listenIsEditChange: Subscription = null;\n private listenActiveToolChange: Subscription = null;\n private onMouseOverFeature: Subscription = null;\n private previousFeatureState: Coordinate[];\n\n /**\n * calculate the Area of a Polygon in ha or m² and get the value as formatted text or the number value\n *\n * @param polygon the Polygon Geometry\n * @param onlyHa only get value in ha\n * @param formatted use formatted string\n */\n private static FormatArea(polygon: Polygon, onlyHa = false, formatted = false): string | number {\n const area = getArea(polygon);\n let value: number;\n if (area > 1000 || onlyHa) {\n value = (area / 10000).Round(3);\n return formatted === true ? `${value} ha` : value;\n }\n value = area.Round(3);\n return formatted ? `${value} m2` : value;\n }\n\n /**\n * calculate the Length of a Line in m or km and get the value as formatted text or as number text\n */\n private static FormatLength(line: LineString, languageStore: LanguageStore, formatted = false): string | number {\n const length = getLength(line);\n let value: number;\n let unit = '';\n if (length >= 1000) {\n let precision = 3;\n if (length >= 1_000_000) {\n precision = 0;\n } else if (length >= 100_000) {\n precision = 1;\n } else if (length >= 10_000) {\n precision = 2;\n }\n value = (length / 1000).Round(precision);\n unit = 'km';\n } else {\n value = length.Round(3);\n unit = 'm';\n }\n const valueStr = languageStore.FormatNumber(value);\n return formatted === true ? `${valueStr} ${unit}` : valueStr;\n }\n\n private static removeDrawInteraction(): void {\n MapInteraction.Remove(MapInteractions.DRAW);\n }\n\n private static removeSnapInteraction(): void {\n MapInteraction.Remove(MapInteractions.SNAP);\n }\n\n private static removeLastPointFromDrawing(): void {\n const draw = MapInteraction.FindByName(MapInteractions.DRAW) as Draw;\n if (!draw) {\n return;\n }\n\n const comparePrecision = 8;\n // Touch screens fix for removing last point. There is no way to access public methods to get sketch coordinates\n // Idea of the fix : on touch screens there are two equal coordinates in the end of current sketch array\n // @ts-ignore\n if (draw.sketchCoords_ && draw.sketchCoords_.length > 0 && !Array.isArray(draw.sketchCoords_[0])\n // @ts-ignore\n && toStringXY(draw.sketchCoords_[draw.sketchCoords_.length - 1], comparePrecision) === toStringXY(draw.sketchCoords_[draw.sketchCoords_.length - 2], comparePrecision)) {\n draw.removeLastPoint();\n }\n draw.removeLastPoint();\n }\n\n private static finalizeDrawing(): void {\n const drawInteraction = MapInteraction.FindByName(MapInteractions.DRAW) as Draw;\n if (!drawInteraction) {\n return;\n }\n drawInteraction.finishDrawing();\n }\n\n private static restartSplit(): void {\n const drawInteraction = MapInteraction.FindByName(MapInteractions.DRAW) as Draw;\n if (!drawInteraction) {\n return;\n }\n\n drawInteraction.abortDrawing();\n drawInteraction.dispatchEvent('drawstart');\n }\n\n public StartDrawNewGeometry(): void {\n this.startListeningPolygonEditLayerChanges();\n }\n\n public StopDrawNewGeometry(): void {\n this.notListeningPolygonEditLayerChanges();\n this.removeTooltip();\n }\n\n public AbortDrawing(restart = false): void {\n MapInteraction.Remove(MapInteractions.DRAW);\n this.sketch = null;\n this.removeTooltip();\n if (restart) {\n this.mapStore.Editor.SetActiveTool(GeometryEditorTool.DRAW_NEW);\n }\n }\n\n public RemoveLastPointFromDrawing(): void {\n EditorService.removeLastPointFromDrawing();\n }\n\n public FinalizeDrawing(): void {\n EditorService.finalizeDrawing();\n }\n\n public RestartSplit(): void {\n EditorService.restartSplit();\n }\n\n private removeTooltip(): void {\n if (this.measureTooltipElement && this.measureTooltipElement.parentNode) {\n this.measureTooltipElement.parentNode.removeChild(this.measureTooltipElement);\n }\n }\n\n private startListeningPolygonEditLayerChanges(): void {\n this.listenPolygonEditChange = combineLatest([\n this.mapStore.Editor.PolygonEditLayerChange$,\n this.mapStore.Editor.ActiveTool$,\n ])\n .pipe(filter(data => data[1] !== GeometryEditorTool.NONE))\n .subscribe(() => {\n // The PolygonEditLayer Geometries was changed reintegrate current editing Geometry\n // do it in timeout to force openlayers render the geometry first otherwise integration is useless\n setTimeout(() => this.reintegrateInsertedFeatures(), 1);\n });\n }\n\n private notListeningPolygonEditLayerChanges(): void {\n if (!this.listenPolygonEditChange) {\n return;\n }\n this.listenPolygonEditChange.unsubscribe();\n this.listenPolygonEditChange = null;\n }\n\n private async reintegrateInsertedFeatures(): Promise {\n for (const feat of this.mapStore.Layers.PolygonEditLayer.SelectedFeatures) {\n const id = feat.getId().toString();\n const fittedFeature = await GeometryEditor\n .IntegrateNewFeature(feat, this.fieldStore);\n if (fittedFeature.Error) {\n EditorService.ValidSketch$.next(false);\n return;\n }\n EditorService.ValidSketch$.next(true);\n this.mapStore.Layers.PolygonEditLayer.Source.addFeature(fittedFeature.Feature);\n this.mapStore.Layers.PolygonEditLayer.selectFeature(id, ApEditStyles.selectedStyle);\n this.sketchGeometryChange(fittedFeature.Feature.getGeometry() as Polygon, true);\n }\n }\n\n private sketchGeometryChange(geom: Polygon, onlyHa = false): void {\n if (!geom || geom.getCoordinates().length < 1 || geom.getCoordinates()[0].length < 1) {\n console.warn(`invalid sketch geometry`);\n return;\n }\n\n const output = EditorService.FormatArea(geom, true) as number;\n const upper = geom.getCoordinates()[0].length;\n const tooltipCoord = geom.getCoordinates()[0][upper - 2];\n if (this.measureTooltipElement && upper > 2) {\n const line = new LineString([geom.getCoordinates()[0][upper - 3], tooltipCoord]);\n this.measureTooltipElement.innerHTML = EditorService.FormatLength(line, this.languageStore, true);\n this.measureTooltip.setPosition(tooltipCoord);\n }\n if (output > 1000) {\n this.mapStore.Layers.PolygonEditLayer.setStyle(ApEditStyles.invalidStyle);\n } else {\n this.mapStore.Layers.PolygonEditLayer.setStyle(ApEditStyles.selectedStyle);\n }\n this.mapStore.Editor.SetFeatureArea(output);\n }\n\n /**\n * copy the Field Geometries into the Polygon Edit Layer,\n * activate the edit mode and hide the Fields Layer\n */\n private listeningIsEditing(): void {\n this.listenIsEditChange = this.mapStore.Editor.ActiveTool$\n .subscribe(isEditing => {\n if (isEditing !== GeometryEditorTool.NONE) {\n const splitted: IField[][] = [[], []];\n for (const field of this.fieldStore.Fields) {\n const geom = this.fieldStore.getCurrentFieldGeom(field);\n if (geom && this.fieldStore.EditFields.Contains(geom.Id)) {\n splitted[0] = splitted[0].Add(ObjectFactory.Copy(field));\n } else {\n splitted[1] = splitted[1].Add(field);\n }\n }\n const data = this.mapStore.Layers.FieldsLayer.ReadFeature(splitted[0], this.fieldStore);\n this.mapStore.Layers.PolygonEditLayer.replaceSource(data);\n this.mapStore.Layers.FieldsLayer.Visibility = false;\n this.mapStore.Layers.FieldsCropLayer.Visibility = false;\n setTimeout(() => {\n for (const editedFieldId of this.fieldStore.EditFields) {\n this.mapStore.Layers.PolygonEditLayer.selectFeature(editedFieldId.toString(), ApEditStyles.selectedStyle);\n }\n }, 1);\n MapInteraction.Remove(MapInteractions.SELECT);\n } else {\n this.mapStore.Layers.PolygonEditLayer.replaceSource([]);\n this.mapStore.Layers.PolygonEditLayer.RemoveSelectedFeatures();\n this.mapStore.Layers.FieldsLayer.setStyle(defaultStyle);\n for (const field of this.fieldStore.getSelectedFields()) {\n const geom = this.fieldStore.getCurrentFieldGeom(field);\n this.mapStore.Layers.FieldsLayer.selectFeature(geom?.Id.toString(), selectedStyle);\n }\n this.mapStore.Layers.FieldsLayer.Visibility = true;\n this.mapStore.Layers.FieldsCropLayer.Visibility = true;\n }\n });\n }\n\n private listeningActiveTool(): void {\n // this.listenActiveToolChange = this.mapStore.Editor.ActiveTool$\n // .subscribe(tool => {\n // if (!ApMapInstance.mapRef) {\n // console.warn('missing map reference');\n // return;\n // }\n // MapInteraction.ClearInteractions();\n // ApMapInstance.mapRef.removeEventListener('singleclick', () => true);\n // switch (tool) {\n // case GeometryEditorTool.DELETE:\n // this.mapStore.Editor.SetDeleteGeometry(this.fieldStore.getSelectedFields());\n // break;\n // case GeometryEditorTool.NONE:\n // break;\n // case GeometryEditorTool.DRAW_NEW:\n // this.startDrawNew();\n // break;\n // case GeometryEditorTool.MOVE_VERTEX:\n // this.enableModifyNewVertex(this.mapStore.Layers.PolygonEditLayer.SelectedFeatures);\n // break;\n // case GeometryEditorTool.MOVE_SELECT_VERTEX:\n // for (const fieldId of this.fieldStore.getSelectedFieldIds()) {\n // const field = this.fieldStore.getFieldById(fieldId);\n // if (!field.DefaultGeom || !field.DefaultGeom.Id) {\n // continue;\n // }\n // this.mapStore.Layers.PolygonEditLayer.selectPolygon(field.DefaultGeom.Id.toString());\n // }\n // this.enableModifyVertex();\n // break;\n // case GeometryEditorTool.SPLIT:\n // // this.enableSplit();\n // break;\n // case GeometryEditorTool.SELECT:\n // break;\n // case GeometryEditorTool.MERGE_AREA:\n // // this.enableMergeArea();\n // break;\n // case GeometryEditorTool.DRAW_HOLE:\n // this.enableDrawHole();\n // break;\n // case GeometryEditorTool.DELETE_HOLE:\n // this.enableDeleteHole();\n // break;\n // }\n // });\n }\n\n /**\n * Creates a new help tooltip\n */\n public createHelpTooltip(): void {\n if (!ApMapInstance.mapRef) {\n console.warn('missing map reference');\n return;\n }\n if (this.helpTooltipElement) {\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\n }\n this.helpTooltipElement = document.createElement('div');\n this.helpTooltipElement.className = 'tooltip hidden';\n this.helpTooltip = new Overlay({\n element: this.helpTooltipElement,\n offset: [15, 0],\n positioning: OverlayPositioning.CENTER_LEFT,\n });\n ApMapInstance.mapRef.addOverlay(this.helpTooltip);\n }\n\n\n /**\n * Creates a new measure tooltip\n */\n public createMeasureTooltip(): void {\n if (!ApMapInstance.mapRef) {\n console.warn('missing map reference');\n return;\n }\n this.measureTooltipElement = document.createElement('div');\n this.measureTooltipElement.className = 'field_edit_area';\n\n this.measureTooltip = new Overlay({\n element: this.measureTooltipElement,\n offset: [0, -15],\n positioning: OverlayPositioning.BOTTOM_CENTER,\n });\n ApMapInstance.mapRef.addOverlay(this.measureTooltip);\n }\n\n public startDrawNew(): void {\n const draw = GeometryEditor.DrawFeature(\n GeometryType.POLYGON,\n this.mapStore.Layers.PolygonEditLayer.innerSource,\n () => this.mapStore.Editor.CurrentArea$.getValue() > 1000 ? ApEditStyles.invalidStyle() : ApEditStyles.selectedStyle()) as Draw;\n\n ApDefined.waitUntilDefined(draw, 'on', () => {\n draw.on('drawstart', event => this.startDrawNewEvent(event));\n draw.on('drawend', (event) => this.endDrawNewEvent(event));\n this.onMouseOverFeature = ApMapInstance.FeaturesAtMousePosition[LayerNames.EDIT_VIEW]\n .pipe(\n filter(d => Array.isArray(d) &&\n d.FindAll(f => [GeometryType.POLYGON, GeometryType.MULTI_POLYGON]\n .Contains(f.getGeometry().getType())).length > 0),\n )\n .subscribe((d) => {\n const coords = draw['sketchCoords_'];\n if (!coords || !coords[coords.length - 1]) {\n // no last point to remove\n return;\n }\n const lastPoint = coords[coords.length - 1][coords[coords.length - 1].length - 2];\n const field = d.FirstOrDefault();\n if (!field || !GeometryEditor.PointInPolygon(field, lastPoint)) {\n return;\n }\n draw.removeLastPoint();\n });\n // add the Snap after drawing is important see https://openlayers.org/en/latest/examples/snap.html\n GeometryEditor.SnapToFeature(GeometryType.POLYGON, this.mapStore.Layers.PolygonEditViewLayer.innerSource, 1.0);\n });\n }\n\n private unsubscribeMouseOverFeature(): void {\n if (this.onMouseOverFeature) {\n this.onMouseOverFeature.unsubscribe();\n }\n }\n\n private async endDrawNewEvent(event): Promise {\n this.unsubscribeMouseOverFeature();\n this.removeTooltip();\n const err = await this.integrateNewFeature(event.feature);\n if (err) {\n EditorService.ValidSketch$.next(false);\n } else {\n EditorService.ValidSketch$.next(true);\n }\n EditorService.removeDrawInteraction();\n EditorService.removeSnapInteraction();\n // TODO: enable Modify Mode\n this.mapStore.Editor.PrepareModifyField(this.fieldStore, false);\n }\n\n private startDrawNewEvent(event: DrawEvent): void {\n this.sketch = event.feature;\n this.sketch\n .getGeometry()\n .on('change', (evt) => this.sketchGeometryChange(evt.target as Polygon));\n event.feature.set('tag', 'start');\n this.mapStore.Editor.SetEditFeature(event.feature);\n }\n\n private enableSplit(): void {\n MapInteraction.Remove(MapInteractions.MODIFY);\n this.mapStore.Layers.PolygonEditViewLayer.setStyle(defaultStyle);\n const split = GeometryEditor.SplitByLine(GeometryType.LINE_STRING, this.mapStore.Layers.PolygonEditViewLayer, this.mapStore.Layers.FieldDescriptionLayer, this.mapStore.Editor, this.notifyStore);\n split.on('drawend', event => {\n MapInteraction.ClearSelection();\n event.Feature = null;\n });\n }\n\n private enableDrawHole(): void {\n MapInteraction.Remove(MapInteractions.MODIFY);\n const drawHole = GeometryEditor.DrawHole(GeometryType.POLYGON, this.mapStore.Layers.PolygonEditLayer.Source) as Draw;\n GeometryEditor.SnapToFeature(GeometryType.POLYGON, this.mapStore.Layers.PolygonEditLayer.Source);\n this.onMouseOverFeature = ApMapInstance.FeaturesAtMousePosition[LayerNames.EDIT]\n .subscribe((d) => {\n if (Array.isArray(d) &&\n d.FindAll(f => [GeometryType.POLYGON, GeometryType.MULTI_POLYGON]\n .Contains(f.getGeometry().getType())).length > 0) {\n return;\n }\n drawHole.removeLastPoint();\n });\n drawHole.on('drawend', evt => {\n evt.feature.set('tag', 'modifygeometry');\n const coordinates = (evt.feature.getGeometry() as Polygon).getCoordinates()[0];\n const lr = new LinearRing(coordinates);\n let feature = this.mapStore.Layers.PolygonEditLayer\n .Source.getFeatures()\n .FirstOrDefault(feat => this.fieldStore.EditFields.Convert(id => id.toString()).Contains(feat.getId().toString()));\n if (!feature) {\n feature = this.mapStore.Layers.PolygonEditLayer\n .Source.getFeatures().FirstOrDefault();\n if (!feature) {\n console.warn(`no feature to edit found`);\n this.closeDrawHole(drawHole, true);\n return;\n }\n }\n const geom = feature.getGeometry();\n if (!geom) {\n console.warn(`the edit polygon has no geometry`);\n this.closeDrawHole(drawHole, true);\n return;\n }\n geom.appendLinearRing(lr);\n feature.setGeometry(geom);\n feature.tag = '';\n const output = EditorService.FormatArea(feature.getGeometry() as Polygon, true) as number;\n this.mapStore.Editor.SetFeatureArea(output);\n this.closeDrawHole(drawHole, true, () => {\n this.mapStore.Layers.PolygonEditLayer.Source.removeFeature(evt.feature);\n });\n });\n }\n\n private endDrawHole(): void {\n MapInteraction.Remove(MapInteractions.DRAW);\n MapInteraction.Remove(MapInteractions.SNAP);\n }\n\n private enableModifyNewVertex(features: Feature[]): void {\n this.mapStore.Editor.LockFeature(true);\n MapInteraction.Remove(MapInteractions.DRAW);\n MapInteraction.Remove(MapInteractions.SNAP);\n const modify = GeometryEditor.ModifyLayerSourceFeature(GeometryType.POLYGON, this.mapStore.Layers.PolygonEditLayer.layer, features);\n GeometryEditor.SnapToFeature(GeometryType.POLYGON, this.mapStore.Layers.PolygonEditViewLayer.innerSource);\n modify.on('modifystart', (event) => {\n this.previousFeatureState = (event.features?.getArray()[0]?.getGeometry() as Polygon)?.getCoordinates()[0];\n this.startModifyVertex();\n });\n modify.on('modifyend', async (event) => {\n const currentFeatureState = (event.features?.getArray()[0]?.getGeometry() as Polygon)?.getCoordinates()[0];\n if (currentFeatureState && this.previousFeatureState\n && currentFeatureState.length === this.previousFeatureState.length) {\n let equal = true;\n for (let i = 0; i < currentFeatureState.length; i++) {\n if (currentFeatureState[i][0] !== this.previousFeatureState[i][0] || currentFeatureState[i][1] !== this.previousFeatureState[i][1]) {\n equal = false;\n break;\n }\n }\n\n if (equal) {\n this.notifyStore.addMessage({\n Counter: 1,\n DisplayTimeout: 5,\n ErrorKey: 'Editor__Cannot_Remove_Point',\n Level: Data.Api.Validation.ApValidationLevel.Error\n } as IApValidationResult);\n return;\n }\n }\n\n this.endModifyVertex(event);\n await this.reintegrateInsertedFeatures();\n });\n\n // Trigger check for existing geometry intersections\n this.reintegrateInsertedFeatures();\n }\n\n private enableModifyVertex(): void {\n const modify = GeometryEditor.ModifyLayerSourceFeature(GeometryType.POLYGON, this.mapStore.Layers.PolygonEditLayer.layer, this.mapStore.Layers.PolygonEditLayer.SelectedFeatures);\n GeometryEditor.SnapToFeature(GeometryType.POLYGON, this.mapStore.Layers.PolygonEditLayer.innerSource);\n modify.on('modifystart', () => this.startModifyVertex());\n modify.on('modifyend', (event) => this.endModifyVertex(event));\n }\n\n private endModifyVertex(event): void {\n this.mapStore.Editor.SetEditFeature(event.features.getArray()[0]);\n const output = EditorService\n .FormatArea(this.mapStore.Layers.PolygonEditLayer.SelectedFeatures[0].getGeometry() as Polygon, true) as number;\n this.mapStore.Editor.SetFeatureArea(output);\n }\n\n private startModifyVertex(): void {\n const output = EditorService\n .FormatArea(this.mapStore.Layers.PolygonEditLayer.SelectedFeatures[0].getGeometry() as Polygon, true) as number;\n this.mapStore.Editor.SetFeatureArea(output);\n }\n\n private enableDeleteHole(): void {\n GeometryEditor.DeleteHole(GeometryType.POLYGON, this.mapStore.Layers.PolygonEditLayer.innerSource);\n }\n\n private async integrateNewFeature(feature: Feature): Promise {\n const id = ApGuidUtil.generateNewGuid();\n feature.set('insert', true);\n feature.set('tag', 'end');\n feature.setId(id);\n\n const fittedFeature = await GeometryEditor\n .IntegrateNewFeature(feature, this.fieldStore);\n this.mapStore.Layers.PolygonEditLayer.Source.addFeature(fittedFeature.Feature);\n this.mapStore.Layers.PolygonEditLayer.selectFeature(id, ApEditStyles.selectedStyle);\n\n this.mapStore.Editor.LockFeature(true);\n if (!ApMapInstance.IsFeatureInViewFull(fittedFeature.Feature)) {\n this.mapStore.Layers.PolygonEditLayer.ZoomToFeature(fittedFeature.Feature, 100);\n }\n return fittedFeature.Error;\n }\n\n private closeDrawHole(drawHole: Draw, reanable: boolean, afterAbortDraw: () => void = null): void {\n drawHole.abortDrawing();\n setTimeout(() => {\n if (typeof afterAbortDraw === 'function') {\n afterAbortDraw();\n }\n MapInteraction.Remove(MapInteractions.DRAW);\n MapInteraction.Remove(MapInteractions.SNAP);\n if (this.onMouseOverFeature) {\n this.onMouseOverFeature.unsubscribe();\n }\n if (reanable) {\n this.enableDrawHole();\n }\n }, 100);\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport {ILegend, ILegendSelectionItem} from '../../../stores/map/map.legend.store';\nimport {ApLegendScrollerService} from './ap-legend-scroller.service';\nimport {BehaviorSubject, combineLatest, merge} from 'rxjs';\nimport {distinctUntilChanged, filter} from 'rxjs/operators';\n\nexport interface ISelectionChangeEvent {\n selectionKeys: string[];\n legend: ILegend;\n}\n\n@Component({\n selector: 'ap-legend-scroller-item',\n template: `\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n {{ item.unit | getUnitValue:(currentSelectionKey | async) }}\n
\n
\n \n \n
\n
\n \n
\n `,\n})\nexport class ApLegendScrollerItemComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n @ViewChild('popup', {read: ElementRef}) popup: ElementRef;\n @Input()\n public item: ILegend = null;\n public scrollerHeight$ = new EventEmitter(true);\n\n public showPopup = true;\n public currentSelectionKey = new BehaviorSubject('');\n\n constructor(private legendScrollerService: ApLegendScrollerService,\n public vcRef: ViewContainerRef) {\n }\n\n public ngOnDestroy(): void {\n if (!this.legendScrollerService.onSelectionKeyChange) {\n this.legendScrollerService.onSelectionKeyChange.unsubscribe();\n }\n }\n\n public ngAfterContentInit(): void {\n this.legendScrollerService.generateSelectionKey(this.item);\n this.legendScrollerService.onSelectionKeyChange\n .pipe(filter(d => d.l?.id === this.item.id))\n .subscribe(d => {\n this.currentSelectionKey.next(d.key);\n const keys = d.key.Split('_');\n for (let i = 0; i < Math.min(keys.length, this.item.selectionLists.length); i++) {\n const values = this.item.selectionLists[i].values;\n let item: ILegendSelectionItem;\n if (Array.isArray(values)) {\n item = values.Find(_ => _?.value === keys[i]);\n } else {\n item = values(...this.currentSelectionKey.getValue().Split('_')).Find(_ => _?.value === keys[i]);\n }\n if (item) {\n if (this.item.selectionLists[i].selectedValue != null &&\n this.item.selectionLists[i].selectedValue.getValue() != null &&\n this.item.selectionLists[i].selectedValue.getValue().value !== item.value) {\n this.item.selectionLists[i].selectedValue.next(item);\n }\n }\n }\n });\n\n combineLatest(this.item.selectionLists.map(selection => selection.selectedValue.pipe(distinctUntilChanged())))\n .subscribe(() => {\n this.legendScrollerService.generateSelectionKey(this.item);\n this.legendScrollerService.selectionChange.emit({\n selectionKeys: this.currentSelectionKey.getValue().Split('_'),\n legend: this.item,\n });\n });\n\n merge(\n combineLatest(this.item.selectionLists.map(selection => selection.selectedValue))\n .pipe(distinctUntilChanged(this._selectionListValueChanged)),\n combineLatest(this.item.subjects.map((subject) => subject))\n .pipe(distinctUntilChanged(this._subjectValueChanged))\n ).subscribe(() => {\n this.legendScrollerService.generateSelectionKey(this.item);\n this.legendScrollerService.selectionChange.emit({\n selectionKeys: this.currentSelectionKey.getValue().Split('_'),\n legend: this.item,\n });\n });\n }\n\n public ngAfterViewInit(): void {\n setTimeout(() => this.scrollerHeight$.emit(`${this.popup?.nativeElement.clientHeight ?? 200}px`), 100);\n }\n\n public toggle(): void {\n this.showPopup = !this.showPopup;\n }\n\n public selectValue($event: ILegendSelectionItem, i: number): void {\n if (!Array.isArray(this.item.selectionLists)) {\n return;\n }\n let selectedItem: any;\n const values = this.item.selectionLists[i].values;\n if (Array.isArray(values)) {\n selectedItem = values.Find(_ => _?.value === $event?.value);\n } else {\n selectedItem = values(...this.currentSelectionKey.getValue().Split('_')).Find(_ => _?.value === $event?.value);\n }\n this.item.selectionLists[i].selectedValue.next(selectedItem);\n }\n\n private _selectionListValueChanged(prev: { value: any }[], next: { value: any }[]): boolean {\n return !!prev && !!next && prev.length === next.length && prev.every((v, i) => !!v && !!next[i] && v.value === next[i].value);\n }\n\n private _subjectValueChanged(prev: any[], next: any[]): boolean {\n return !!prev && !!next && prev.length === next.length && prev.every((v, i) => !!v && !!next[i] && v === next[i]);\n }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {ISelectionChangeEvent} from './ap-legend-scroller-item.component';\nimport {ILegend} from '../../../stores/map/map.legend.store';\n\n@Injectable({providedIn: 'root'})\nexport class ApLegendScrollerService {\n public selectionChange = new EventEmitter();\n public onSelectionKeyChange = new EventEmitter<{ l: ILegend, key: string }>();\n\n public generateSelectionKey(item: ILegend): string {\n if (!item) {\n return '';\n }\n let currentSelectionKey = '';\n if (Array.isArray(item.selectionLists) && item.selectionLists.length > 0) {\n for (const selection of item.selectionLists) {\n currentSelectionKey += '_' + selection.selectedValue.getValue()?.value;\n }\n }\n if (Array.isArray(item.subjects) && item.subjects.length > 0) {\n for (const subject of item.subjects) {\n currentSelectionKey += '_' + subject.getValue();\n }\n }\n if (currentSelectionKey.StartsWith('_')) {\n currentSelectionKey = currentSelectionKey.TrimStart('_');\n }\n\n this.onSelectionKeyChange.emit({l: item, key: currentSelectionKey});\n return currentSelectionKey;\n }\n}\n","import {IAction, IApInvokerArguments} from 'invoker-transport';\n\nexport class MetricSendModuleUrl implements IAction {\n public readonly type = '[metrics] module change';\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {MetricSendModuleUrl} from './actions';\nimport {NetTypes} from 'invoker-transport';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n@Injectable({providedIn: 'root'})\nexport class ApMetricService {\n\n constructor(private backend: ApSignalrService) {\n }\n\n public OnModuleChanged$ = new EventEmitter();\n\n public moduleChange(moduleUrl: string): void {\n this.backend.send(new MetricSendModuleUrl([\n {Name: 'moduleUrl', Type: NetTypes.STRING, Value: moduleUrl}\n ])).subscribe(() => this.OnModuleChanged$.emit());\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {CropTypeStore} from '../../stores/base-data/crop.types.store';\n\n@Pipe({\n name: 'apGetCropTypeNamePipe',\n})\nexport class ApGetCropTypeNamePipe implements PipeTransform {\n\n constructor(private cropTypeStore: CropTypeStore) {\n }\n\n transform(cropTypeId: string): string {\n return this.cropTypeStore.GetCropTypeName(cropTypeId);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {GetRoundNumericService} from '../../ap-utils/service/get-round-numeric.service';\nimport IFieldNutrientPlanningStatistic = Data.Nutrients.IFieldNutrientPlanningStatistic;\nimport IRbStatistic = Data.Nutrients.IRbStatistic;\nimport IBasicFertilisationSummaries = Data.TaskManagement.IBasicFertilisationSummaries;\n\n@Injectable({providedIn: 'root'})\nexport class ApNutrientStatisticService {\n\n constructor(private roundNumericService: GetRoundNumericService) {\n }\n\n public getAverageNutrientFromStatistic(bandIdX: number, statistics: IFieldNutrientPlanningStatistic[]): any {\n if (bandIdX >= 0 && !!statistics) {\n const found = statistics.Find(_ => _.Band === bandIdX);\n if (!!found) {\n return this.roundNumericService.roundAsNumber(found.Mean);\n }\n }\n return '-';\n }\n\n public getAverageNutrientFromStatistics(bandIdX: number, summary: IBasicFertilisationSummaries, isBooking: boolean): any {\n let planBooks: Data.TaskManagement.IBasicFertilisationPlanBooks[];\n if (isBooking) {\n planBooks = summary.BasicFertilisationPlanBooks.filter(_ => _.BookedBy != null);\n } else {\n planBooks = summary.BasicFertilisationPlanBooks.filter(_ => _.BookedBy == null);\n }\n if (bandIdX >= 0 && !!planBooks) {\n let mean = 0;\n let areaSum = 0;\n planBooks.forEach(planBook => {\n const found = planBook.Statistic?.Find(_ => _?.Band === bandIdX);\n if (!!found) {\n areaSum += planBook.Area;\n mean += planBook.Area * found.Mean;\n }\n });\n mean /= areaSum;\n return this.roundNumericService.roundAsNumber(mean);\n }\n return '-';\n }\n\n public getMinRb(bandIdX: number, statistics: IRbStatistic): number {\n if (bandIdX >= 0 && !!statistics) {\n switch (bandIdX) {\n case 0:\n return statistics.RbOneStatisticP.Min;\n case 1:\n return statistics.RbOneStatisticK.Min;\n case 2:\n return statistics.RbOneStatisticMg.Min;\n case 3:\n return statistics.RbOneStatisticCao.Min;\n case 4:\n return statistics.RbTwoStatisticP.Min;\n case 5:\n return statistics.RbTwoStatisticK.Min;\n case 6:\n return statistics.RbTwoStatisticMg.Min;\n case 7:\n return statistics.RbTwoStatisticCao.Min;\n default:\n return 0;\n }\n }\n return 0;\n }\n\n public getMaxRb(bandIdX: number, statistics: IRbStatistic): number {\n if (bandIdX >= 0 && !!statistics) {\n switch (bandIdX) {\n case 0:\n return statistics.RbOneStatisticP.Max;\n case 1:\n return statistics.RbOneStatisticK.Max;\n case 2:\n return statistics.RbOneStatisticMg.Max;\n case 3:\n return statistics.RbOneStatisticCao.Max;\n case 4:\n return statistics.RbTwoStatisticP.Max;\n case 5:\n return statistics.RbTwoStatisticK.Max;\n case 6:\n return statistics.RbTwoStatisticMg.Max;\n case 7:\n return statistics.RbTwoStatisticCao.Max;\n default:\n return 0;\n }\n }\n return 0;\n }\n\n public getAverageRb(bandIdX: number, statistics: IRbStatistic): any {\n if (bandIdX >= 0 && !!statistics) {\n switch (bandIdX) {\n case 0:\n return statistics.RbOneAvgP;\n case 1:\n return statistics.RbOneAvgK;\n case 2:\n return statistics.RbOneAvgMg;\n case 3:\n return statistics.RbOneAvgCao;\n case 4:\n return statistics.RbTwoAvgP;\n case 5:\n return statistics.RbTwoAvgK;\n case 6:\n return statistics.RbTwoAvgMg;\n case 7:\n return statistics.RbTwoAvgCao;\n default:\n return '-';\n }\n }\n return '-';\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IBasicFertilisationSummaries = Data.TaskManagement.IBasicFertilisationSummaries;\n\nexport enum BasicFertilisationSummariesActions {\n LOAD_BASIC_FERTILISATION_SUMMARIES = '[basic_fertilisation_summaries] load',\n LOAD_BASIC_FERTILISATION_SUMMARIES_SUCCESS = '[basic_fertilisation_summaries] load success',\n LOAD_BASIC_FERTILISATION_SUMMARIES_FAIL = '[basic_fertilisation_summaries] load fail',\n BASIC_FERTILISATION_SUMMARIES_CREATE = '[basic_fertilisation_summaries] create',\n BASIC_FERTILISATION_SUMMARIES_UPDATE = '[basic_fertilisation_summaries] update',\n BASIC_FERTILISATION_SUMMARIES_SAVE_SUCCESS = '[basic_fertilisation_summaries] save success',\n BASIC_FERTILISATION_SUMMARIES_SAVE_FAIL = '[basic_fertilisation_summaries] save fail',\n BASIC_FERTILISATION_SUMMARIES_SET_STATUS = '[basic_fertilisation_summaries] set status',\n BASIC_FERTILISATION_SUMMARIES_DUPLICATE = '[basic_fertilisation_summaries] duplicate',\n BASIC_FERTILISATION_SUMMARIES_BOOKING = '[basic_fertilisation_summaries] booking',\n BASIC_FERTILISATION_SUMMARIES_RESET = '[basic_fertilisation_summaries] reset',\n BASIC_FERTILISATION_PLAN_BOOKS_UPDATE = '[basic_fertilisation_plan_books] update',\n BASIC_FERTILISATION_PLAN_BOOKS_SAVE_SUCCESS = '[basic_fertilisation_plan_books] save success',\n BASIC_FERTILISATION_PLAN_BOOKS_SAVE_FAIL = '[basic_fertilisation_plan_books] save fail',\n BASIC_FERTILISATION_PLAN_BOOKS_DELETE = '[basic_fertilisation_plan_books] delete',\n BASIC_FERTILISATION_SHOW_MAP = '[basic_fertilisation_summaries] show map',\n}\n\nexport class LoadBasicFertilisationSummaries implements IAction {\n readonly type = BasicFertilisationSummariesActions.LOAD_BASIC_FERTILISATION_SUMMARIES;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class LoadBasicFertilisationSummariesSuccess implements IAction {\n readonly type = BasicFertilisationSummariesActions.LOAD_BASIC_FERTILISATION_SUMMARIES_SUCCESS;\n\n constructor(public payload: IBasicFertilisationSummaries[]) {\n }\n}\n\nexport class LoadBasicFertilisationSummariesFail implements IAction {\n readonly type = BasicFertilisationSummariesActions.LOAD_BASIC_FERTILISATION_SUMMARIES_FAIL;\n}\n\nexport class BasicFertilisationSummariesCreate implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SUMMARIES_CREATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class BasicFertilisationSummariesUpdate implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SUMMARIES_UPDATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class BasicFertilisationsShowMap implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SHOW_MAP;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class BasicFertilisationSummariesSaveSuccess implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SUMMARIES_SAVE_SUCCESS;\n\n constructor(public payload: IBasicFertilisationSummaries) {\n }\n}\n\nexport class BasicFertilisationSummariesSaveFail implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SUMMARIES_SAVE_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class BasicFertilisationSummariesSetStatus implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SUMMARIES_SET_STATUS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class BasicFertilisationSummariesDuplicate implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SUMMARIES_DUPLICATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class BasicFertilisationSummariesBooking implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SUMMARIES_BOOKING;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class BasicFertilisationSummariesReset implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_SUMMARIES_RESET;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class BasicFertilisationPlanBooksUpdate implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_PLAN_BOOKS_UPDATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class BasicFertilisationPlanBooksSaveSuccess implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_PLAN_BOOKS_SAVE_SUCCESS;\n\n constructor(public payload: IBasicFertilisationSummaries) {\n }\n}\n\nexport class BasicFertilisationPlanBooksSaveFail implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_PLAN_BOOKS_SAVE_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class BasicFertilisationPlanBooksDelete implements IAction {\n readonly type = BasicFertilisationSummariesActions.BASIC_FERTILISATION_PLAN_BOOKS_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n ApplicationDatesData,\n TooltipsData\n} from '../components/configs/nutrient-management-common.types';\nimport {\n ApDateService,\n DateSort\n} from '../../ap-core/services/ap-date-service';\nimport {\n ApTooltipContentService\n} from '../../ap-utils/service/ap-tooltip-content.service';\nimport {\n CampaignYearService\n} from '../../services/data/campaign-year.service';\nimport {ObjectFactory} from 'ts-tooling';\nimport {\n ApNutrientPlanningComponent\n} from '../../entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning.component';\nimport {\n LoginStore\n} from '../../stores/login/login.store';\nimport {\n BasicFertilisationSummariesStore\n} from '../../stores/taskmanagement/basic.fertilisation.summaries.store';\nimport {\n FormStore\n} from '../../stores/layout/form.store';\nimport {\n MapStore\n} from '../../stores/map/map.store';\nimport {\n RouterStore\n} from '../../stores/router/router.store';\nimport {\n FieldStore\n} from '../../stores/farm/field.store';\nimport {\n StatisticStore\n} from '../../stores/statistic/statistic.store';\nimport {\n ApOperationMode\n} from '../../ap-interface/enums/ap-operation-mode.enum';\nimport {\n ApLegendScrollerService\n} from '../../map/components/layer-controller/ap-legend-scroller.service';\nimport {\n NutrientManagementService\n} from './nutrient-management.service';\nimport {\n ApNutrientBookingComponent\n} from '../../entry-components/ap-nutrients-management-entry-components/ap-nutrient-booking.component';\nimport {\n IApNutrientBookingComponentData\n} from '../../entry-components/ap-nutrients-management-entry-components/ap-nutrient-booking-configs/nutrient-booking-types';\nimport {skip} from 'rxjs/operators';\nimport {\n ModalDialogStore\n} from '../../stores/dialog/modal.dialog.store';\nimport {\n ModalDialogPresets\n} from '../../stores/dialog/modal.dialog.presets';\nimport {\n PlanningEntryComponentDataType\n} from '../../entry-components/ap-nutrients-management-entry-components/ap-nutrient-planning-configs/nutrient-planning-types';\nimport {BasicFertilisationPlanBooksSaveFail, BasicFertilisationPlanBooksSaveSuccess} from 'invoker-transport';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {\n BasicFertilisationSummariesSaveFail,\n BasicFertilisationSummariesSaveSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/taskmanagement';\nimport {\n GenericChartConfig,\n GenericSeriesConfig,\n GenericSeriesData,\n GenericYAxisConfig\n} from '../../statistics/components/charts/ap-generic-chart.types';\nimport {GetRoundNumericPipe} from '../../ap-utils';\nimport {\n CropGroupStore\n} from '../../stores/base-data/crop.groups.store';\nimport {\n FertilizerService\n} from '../../services/data/fertilizer.service';\nimport {\n GetRoundNumericService\n} from '../../ap-utils/service/get-round-numeric.service';\nimport {\n FertilizerStore\n} from '../../stores/base-data/fertilizer.store';\nimport {\n OperationModesEnum\n} from '../../stores/common/operation-modes.store';\nimport {\n GetElementService\n} from '../../ap-utils/service/ap-get-element.service';\nimport IGuid = System.IGuid;\nimport IBasicFertilisationSummaries = Data.TaskManagement.IBasicFertilisationSummaries;\nimport IBasicFertilisationPlanBooks = Data.TaskManagement.IBasicFertilisationPlanBooks;\n\n@Injectable({providedIn: 'root'})\nexport class BaseFertilizationCommonService {\n private _triggerGridUpdate = new BehaviorSubject(true);\n private _previouslySelectedSummaryId: IGuid | undefined;\n private _mainComponentSelectionAvailability = true;\n\n public gridUpdate$: Observable = this._triggerGridUpdate.asObservable();\n\n constructor(private mapStore: MapStore,\n private formStore: FormStore,\n private loginStore: LoginStore,\n private fieldStore: FieldStore,\n private routerStore: RouterStore,\n private statisticStore: StatisticStore,\n private modalDialogStore: ModalDialogStore,\n private modalDialogPresets: ModalDialogPresets,\n private basicFertilisationSummariesStore: BasicFertilisationSummariesStore,\n private dateService: ApDateService,\n private campaignYearService: CampaignYearService,\n private legendScrollerService: ApLegendScrollerService,\n private tooltipContentService: ApTooltipContentService,\n private nutrientManagementService: NutrientManagementService,\n private roundNumericPipe: GetRoundNumericPipe,\n private cropGroupStore: CropGroupStore,\n private fertilizerStore: FertilizerStore,\n private elementService: GetElementService,\n private fertilizerService: FertilizerService,\n private roundNumericService: GetRoundNumericService) {\n }\n\n public get selectedSummaryId(): IGuid | undefined {\n return this._previouslySelectedSummaryId;\n }\n\n public get mainComponentSelectionAvailability(): boolean {\n return this._mainComponentSelectionAvailability;\n }\n\n public setMainComponentSelectionAvailability(availableToUpdate: boolean): void {\n this._mainComponentSelectionAvailability = availableToUpdate;\n }\n\n public setIsAllowGridItemsUpdate(allow: boolean): void {\n this._triggerGridUpdate.next(allow);\n }\n\n public setSelectedSummaryKey(summaryId: IGuid | undefined): void {\n this._previouslySelectedSummaryId = summaryId;\n }\n\n public redirectSummaryToShowView(summaryId: IGuid, isBooked: boolean,\n returnUrl: string, fieldId: IGuid | null = null): void {\n this._redirectToTaskManagement(true, summaryId, isBooked, returnUrl, fieldId);\n }\n\n public redirectSummaryToExportView(summaryId: IGuid, isBooked: boolean,\n returnUrl: string, fieldId: IGuid | null = null): void {\n this._redirectToTaskManagement(false, summaryId, isBooked, returnUrl, fieldId);\n }\n\n public replanSummary(summary: IBasicFertilisationSummaries): void {\n const copiedSummary = ObjectFactory.Copy(summary);\n const planBooksToDelete = copiedSummary.BasicFertilisationPlanBooks.filter(x => !x.DeletedAt && !x.BookedAt).map(x => x.Id);\n if (!planBooksToDelete || planBooksToDelete.length <= 0) {\n return;\n }\n this.loginStore.setLongOperationStatus(true);\n this.setIsAllowGridItemsUpdate(false);\n this.basicFertilisationSummariesStore.deleteBasicFertilisationPlanBooks(copiedSummary.Id, planBooksToDelete, false, true)\n .watchStream({\n action: BasicFertilisationPlanBooksSaveSuccess,\n todo: payload => {\n this.loginStore.setLongOperationStatus(false);\n if (!payload.Error) {\n this.formStore.openForm({\n component: ApNutrientPlanningComponent,\n data: {\n Summary: copiedSummary,\n Type: PlanningEntryComponentDataType.Edit\n }\n });\n }\n },\n })\n .watchStream({\n action: BasicFertilisationPlanBooksSaveFail,\n todo: _ => {\n this.setIsAllowGridItemsUpdate(true);\n this.loginStore.setLongOperationStatus(false);\n }\n });\n }\n\n public saveSummary(summary: IBasicFertilisationSummaries): void {\n const copiedSummary = ObjectFactory.Copy(summary);\n this.setIsAllowGridItemsUpdate(false);\n this.basicFertilisationSummariesStore.createBasicFertilisation(copiedSummary, true, true)\n .watchStream({\n action: BasicFertilisationSummariesSaveSuccess,\n todo: _ => {\n this.setIsAllowGridItemsUpdate(true);\n },\n })\n .watchStream({\n action: BasicFertilisationSummariesSaveFail,\n todo: _ => {\n this.setIsAllowGridItemsUpdate(true);\n }\n });\n }\n\n public revertSummary(summary: IBasicFertilisationSummaries): void {\n const copiedSummary = ObjectFactory.Copy(summary);\n copiedSummary.DeletedAt = undefined;\n copiedSummary.DeletedBy = undefined;\n this.setIsAllowGridItemsUpdate(false);\n this.basicFertilisationSummariesStore.updateBasicFertilisation(copiedSummary, false, true)\n .watchStream({\n action: BasicFertilisationSummariesSaveSuccess,\n todo: _ => {\n this.setIsAllowGridItemsUpdate(true);\n },\n })\n .watchStream({\n action: BasicFertilisationSummariesSaveFail,\n todo: _ => {\n this.setIsAllowGridItemsUpdate(true);\n }\n });\n }\n\n public revertSummaryPlanBooks(planBooks: IBasicFertilisationPlanBooks[]): void {\n const copiedPlanBooks = ObjectFactory.Copy(planBooks);\n copiedPlanBooks.forEach(item => {\n item.DeletedAt = undefined;\n item.DeletedBy = undefined;\n });\n this.setIsAllowGridItemsUpdate(false);\n this.basicFertilisationSummariesStore.updateBasicFertilisationPlanBooks(copiedPlanBooks, false, true)\n .watchStream({\n action: BasicFertilisationPlanBooksSaveSuccess,\n todo: _ => {\n this.setIsAllowGridItemsUpdate(true);\n },\n })\n .watchStream({\n action: BasicFertilisationPlanBooksSaveFail,\n todo: _ => {\n this.setIsAllowGridItemsUpdate(true);\n }\n });\n }\n\n public bookPlanBooks(summary: IBasicFertilisationSummaries, fieldId: IGuid | null = null): void {\n this.formStore.openForm({\n component: ApNutrientBookingComponent,\n data: {\n Summary: summary,\n FieldIdToSelect: fieldId,\n IsBooked: false\n } as IApNutrientBookingComponentData\n });\n }\n\n public unbookPlanBooks(summary: IBasicFertilisationSummaries, fieldId: IGuid | null = null): void {\n this.formStore.openForm({\n component: ApNutrientBookingComponent,\n data: {\n Summary: summary,\n FieldIdToSelect: fieldId,\n IsBooked: true\n } as IApNutrientBookingComponentData\n });\n }\n\n public deleteSummary(summary: IBasicFertilisationSummaries): void {\n this._deleteDialog(summary, (dataItem: IBasicFertilisationSummaries) => {\n const deletedAt = new Date();\n const deletedBy = this.loginStore.UserId;\n let canSummaryDelete = true;\n const copiedSummary = ObjectFactory.Copy(dataItem);\n copiedSummary.BasicFertilisationPlanBooks.forEach(i => {\n if (i.DeletedAt) {\n return;\n }\n if (!i.BookedBy) {\n i.DeletedBy = deletedBy;\n i.DeletedAt = deletedAt;\n } else {\n canSummaryDelete = false;\n }\n });\n if (canSummaryDelete) {\n copiedSummary.DeletedAt = deletedAt;\n copiedSummary.DeletedBy = deletedBy;\n }\n this.basicFertilisationSummariesStore.updateBasicFertilisation(copiedSummary, true, true);\n });\n }\n\n public unbookSummaryPlanBook(summary: IBasicFertilisationSummaries, planBookId: IGuid): void {\n const planBook = summary.BasicFertilisationPlanBooks.find(x => x.Id === planBookId);\n if (!planBook) {\n return;\n }\n const copiedPlanBook = ObjectFactory.Copy(planBook);\n copiedPlanBook.BookedAt = undefined;\n copiedPlanBook.BookedBy = undefined;\n this.basicFertilisationSummariesStore.updateBasicFertilisationPlanBooks([copiedPlanBook]);\n }\n\n public deleteSummaryPlanBook(summary: IBasicFertilisationSummaries, planBookId: IGuid): void {\n this._deleteDialog(summary, (dataItem: IBasicFertilisationSummaries) => {\n const deletedAt = new Date();\n const deletedBy = this.loginStore.UserId;\n const copiedSummary = ObjectFactory.Copy(dataItem);\n copiedSummary.BasicFertilisationPlanBooks.forEach(planBook => {\n if (planBookId === planBook.Id && planBook.BookedBy === null) {\n planBook.DeletedBy = deletedBy;\n planBook.DeletedAt = deletedAt;\n }\n });\n const isAtLeastOnePlanBookExist = copiedSummary.BasicFertilisationPlanBooks.some(x => !x.DeletedAt);\n if (!isAtLeastOnePlanBookExist) {\n copiedSummary.DeletedAt = deletedAt;\n copiedSummary.DeletedBy = deletedBy;\n this.basicFertilisationSummariesStore.updateBasicFertilisation(copiedSummary);\n } else {\n const planBook = copiedSummary.BasicFertilisationPlanBooks.find(x => x.Id === planBookId && !x.BookedBy);\n this.basicFertilisationSummariesStore.updateBasicFertilisationPlanBooks([ObjectFactory.Copy(planBook)]);\n }\n });\n }\n\n public revertLegends(): void {\n const legends = [\n 'NutrientPlanningLegend',\n 'TaskMgmtLegend',\n 'NeedLegend'\n ];\n legends.forEach(legend => {\n this.mapStore.Legends.addLegend(this.mapStore.Legends[legend]);\n });\n }\n\n public handleLayers(disableLayers: string[], enableLayers: string[]): void {\n const layers = [\n 'NutrientPlanningLayer',\n 'TaskManagementLayer',\n 'NeedLayer'\n ];\n const toDisable = disableLayers?.filter(x => !!x) ?? [];\n const toEnable = enableLayers?.filter(x => !!x) ?? [];\n if (toDisable.length <= 0 && toEnable.length <= 0) {\n return;\n }\n layers.forEach(layer => {\n const layerName = this.mapStore.Layers[layer]?.name;\n if (!layerName) {\n return;\n }\n if (toDisable.includes(layerName)) {\n this.mapStore.Layers[layer].clear();\n this.mapStore.Layers[layer].Visibility = false;\n }\n if (toEnable.includes(layerName)) {\n this.mapStore.Layers[layer].Visibility = true;\n }\n });\n }\n\n public handleLegends(selectedItemsLength: number, disableLegends: string[] = []): void {\n const legends = [\n 'NutrientPlanningLegend',\n 'TaskMgmtLegend',\n 'NeedLegend',\n ];\n const layers = [\n 'NutrientPlanningLayer',\n 'TaskManagementLayer',\n 'NeedLayer'\n ];\n const toDisable = disableLegends?.filter(x => !!x) ?? [];\n if (!selectedItemsLength || selectedItemsLength <= 0) {\n legends.forEach(legend => {\n this.mapStore.Legends.removeLegend(this.mapStore.Legends[legend]);\n });\n } else {\n legends.forEach((legend, index) => {\n if (this.mapStore.Layers[layers[index]]?.Visibility\n && this.mapStore.Legends[legend]?.title\n && !toDisable.includes(legend)) {\n this.mapStore.Legends.addLegend(this.mapStore.Legends[legend]);\n }\n });\n }\n legends.forEach(legend => {\n if (toDisable.includes(legend)) {\n this.mapStore.Legends.removeLegend(this.mapStore.Legends[legend]);\n }\n });\n }\n\n public onSelectionChange(summary: IBasicFertilisationSummaries | null, isBooking: boolean): void {\n if (summary) {\n this.statisticStore.removeStatisticData();\n const currentUrl = this.routerStore.Listen(s => s.url).getValue();\n let planBooks: IBasicFertilisationPlanBooks[];\n if (isBooking) {\n planBooks = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy != null);\n } else {\n planBooks = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy == null);\n }\n const ids = planBooks.map(_ => _.Id);\n const fieldsIds = planBooks.map(_ => _.FieldId);\n const nutrient = planBooks[0].Element;\n const productId = planBooks[0].Product_Id;\n let n = nutrient.ShortDescription;\n if (n === 'CaO') {\n n = 'ph';\n }\n if (summary.Statistic != null) {\n this.mapStore.Legends.onNutrientPlanningChanged.emit({\n ProductId: productId,\n ElementId: nutrient.Id,\n Statistic: summary.Statistic,\n OperationModeId: planBooks[0].Operation_Mode.Id\n });\n this.mapStore.Layers.NutrientPlanningLayerSourceInit(currentUrl, n, ids);\n setTimeout(() => this._updateNutrientPlanningLayer(planBooks[0]), 1);\n }\n this.fieldStore.changeSelectedField(fieldsIds.map((item) => item.toString()));\n // bind visibility of taskmanagement layer (showing field border of planning) to the nutrient planning layer\n // Furthermore move the nutrient planning layer (contours) behind the field layer to see the current field geometry\n // as well as the planning geometry and contours\n this.mapStore.Legends.refreshLegend(this.mapStore.Legends.NutrientPlanningLegend, true);\n this.mapStore.Layers.NutrientPlanningLayer.layer.setZIndex(this.mapStore.Layers.FieldsLayer.layer.getZIndex() - 1);\n this.mapStore.Layers.TaskManagementLayer.replaceSource(planBooks, this.fieldStore);\n } else {\n this.mapStore.Legends.onNutrientPlanningChanged.emit(null);\n this.statisticStore.removeStatisticData();\n this.fieldStore.zoomFarmFields();\n }\n }\n\n public getPlanBooksFieldsCount(planBooks: IBasicFertilisationPlanBooks[], isBooked: boolean): string {\n if (!planBooks || planBooks.length <= 0) {\n return '0/0';\n }\n const nonDeletedPlanBooks = planBooks.filter(x => !x.DeletedAt);\n const filteredPlanBooks = nonDeletedPlanBooks.filter(x => isBooked ? x.BookedAt : !x.BookedAt);\n return filteredPlanBooks.length + '/' + nonDeletedPlanBooks.length;\n }\n\n public getFieldIds(planBooks: IBasicFertilisationPlanBooks[], isBooked: boolean): string[] {\n const nonDeletedPlanBooks = planBooks.filter(x => !x.DeletedAt);\n const filteredPlanBooks = nonDeletedPlanBooks.filter(x => isBooked ? x.BookedAt : !x.BookedAt);\n if (!filteredPlanBooks || filteredPlanBooks.length <= 0) {\n return [];\n }\n return filteredPlanBooks.map(x => x.FieldId?.toString());\n }\n\n public getApplicationDatesData(planBooks: IBasicFertilisationPlanBooks[], isBooked: boolean): ApplicationDatesData | null {\n const nonDeletedPlanBooks = planBooks.filter(x => !x.DeletedAt);\n const filteredPlanBooks = nonDeletedPlanBooks.filter(x => isBooked ? x.BookedAt : !x.BookedAt);\n if (!filteredPlanBooks || filteredPlanBooks.length <= 0) {\n return null;\n }\n const planBooksApplicationDates = this._getPlanBookApplicationDates(planBooks, isBooked);\n const uniqueApplicationDates = this.dateService.getUniqDates(planBooksApplicationDates, DateSort.Ascending);\n return {\n Tooltip: this.tooltipContentService.planBooksApplicationDatesTooltip(uniqueApplicationDates.map(x => ({ApplicationDate: x}))),\n IsMoreThanOneUniqDate: uniqueApplicationDates.length > 1,\n NewestDate: uniqueApplicationDates[uniqueApplicationDates.length - 1]\n };\n }\n\n public getFieldCropsTooltip(planBooks: IBasicFertilisationPlanBooks[], isBooked: boolean): string {\n const nonDeletedPlanBooks = planBooks.filter(x => !x.DeletedAt);\n const filteredPlanBooks = nonDeletedPlanBooks.filter(x => isBooked ? x.BookedAt : !x.BookedAt);\n if (!filteredPlanBooks || filteredPlanBooks.length <= 0) {\n return '';\n }\n const tooltipData = filteredPlanBooks.map(x => {\n const applicationDate = new Date(x.ApplicationDate);\n const campaignYear = this.campaignYearService.getCampaignYearByDate(applicationDate);\n const item: TooltipsData = {\n FieldId: x.FieldId,\n ApplicationDate: applicationDate,\n Year: campaignYear.CampaignYear\n };\n return item;\n });\n return this.tooltipContentService.getFieldsCropsTooltipForBaseFertilization(tooltipData);\n }\n\n /**\n * Generates a chartConfig and series data for all given planbooks\n * Grouped by product (=series)\n * Grouped by Month/Year (=category/y-axis)\n * @param planBooks the selected items\n * @private\n */\n public generateStatChartConfig(planBooks: IBasicFertilisationPlanBooks[]): GenericChartConfig {\n // setup basic chart configuration and its axes\n // even if we have a relation between amount and a date/month\n // we cannot use type 'date' here because it would generate gaps for all the\n // empty months between the plans. Therefore we need to use 'category' type\n const chartConfig = new GenericChartConfig();\n chartConfig.pannable = false;\n chartConfig.zoomable = false;\n chartConfig.xAxisConfig.type = 'category';\n chartConfig.axisCrossingValue = [];\n chartConfig.xAxisConfig.categories = [];\n chartConfig.noteDelegate = (item: GenericSeriesData, _: GenericChartConfig) =>\n `${this.roundNumericPipe.transform(item?.yValue, 0)} ${item?.additionalData}`;\n\n const productColors: { [productId: string]: string; } = {};\n\n planBooks = planBooks.sort((pB1, pB2) =>\n new Date(pB1.ApplicationDate).getTime() - new Date(pB2.ApplicationDate).getTime());\n const planBooksGroupedByMonth = planBooks.GroupBy(pB => {\n const applDate = new Date(pB.ApplicationDate);\n return `${applDate.getMonth() + 1}/${applDate.getFullYear()}`;\n });\n const planBooksGroupedByProduct = planBooks.GroupBy(pB => pB.Product_Id);\n const availableColors = this.cropGroupStore?.getCropGroups()?.map(c => c.Colordefault);\n\n for (const monthYearExpr of Object.keys(planBooksGroupedByMonth)) {\n const planBooksForMonth = planBooksGroupedByMonth[monthYearExpr] as IBasicFertilisationPlanBooks[];\n if (!chartConfig.xAxisConfig.categories.Any(c => c === monthYearExpr)) {\n chartConfig.xAxisConfig.categories.push(monthYearExpr);\n }\n\n for (const productId of Object.keys(planBooksGroupedByProduct)) {\n const seriesPlanBooksForMonthAndProduct = planBooksForMonth.FindAll(pB => pB.Product_Id.toString() === productId);\n // here we need the product even if it is not contained in the currently processed month\n // kendo charts require to have a value for every category (=month) for every series\n const product = this.fertilizerStore.getFertilizer(+productId);\n const productName = this.fertilizerService.getFertilizerProductName(product);\n const productUnit = this.fertilizerService.getFertilizerUnit(product);\n let seriesConfig = chartConfig.seriesConfigs.FirstOrDefault(s => s.name === productName);\n // if there is no series for this product => create a new one\n if (seriesConfig == null) {\n seriesConfig = new GenericSeriesConfig();\n seriesConfig.type = 'column';\n seriesConfig.name = productName;\n seriesConfig.axisId = productUnit;\n if (!Object.keys(productColors).Any(p => p === productId)) {\n productColors[productId] = availableColors[Object.keys(productColors).length % availableColors.length];\n }\n seriesConfig.color = productColors[productId];\n }\n\n // in case the product is not contained in the current month => 0\n const sumProductByMonth = seriesPlanBooksForMonthAndProduct?.reduce((sum, pB) =>\n sum + Math.abs(this.nutrientManagementService.getCalculateSumFertilizerBySinglePlanBook(pB)), 0);\n const seriesData = new GenericSeriesData();\n seriesData.xValue = monthYearExpr;\n seriesData.yValue = this.roundNumericService.roundAsNumber(sumProductByMonth, 0);\n seriesData.additionalData = productUnit;\n seriesConfig.seriesData.push(seriesData);\n\n // for each new unit we create a new y-axis\n if (!chartConfig.yAxisConfigs.Any(c => c.id === productUnit)) {\n const yAxisConfig = new GenericYAxisConfig();\n yAxisConfig.title = productUnit;\n yAxisConfig.id = productUnit;\n yAxisConfig.labelDelegate = (value) => this.roundNumericPipe.transform(value, 0);\n chartConfig.yAxisConfigs.push(yAxisConfig);\n chartConfig.axisCrossingValue.push(chartConfig.yAxisConfigs.length % 2 === 0 ? 0 : Number.MAX_SAFE_INTEGER);\n }\n // add or replace the series config and its data\n if (!chartConfig.seriesConfigs.Any(s => s.name === productName)) {\n chartConfig.seriesConfigs.push(seriesConfig);\n } else {\n chartConfig.seriesConfigs.Replace(s => s.name === seriesConfig.name, seriesConfig);\n }\n }\n }\n return chartConfig;\n }\n\n public getLeadNutrient(summary: IBasicFertilisationSummaries | undefined): string | undefined {\n const element = summary.BasicFertilisationPlanBooks[0]?.Element;\n const operationMode = summary?.User_Operation_Mode?.Key;\n if (operationMode === OperationModesEnum.Constant || !Number.isFinite(element?.Id)) {\n return undefined;\n }\n return this.elementService.GetElementStringByIElement(element);\n }\n\n // #region \"private Methods\"\n\n private _getPlanBookApplicationDates(planBooks: IBasicFertilisationPlanBooks[], isBooked: boolean): Date[] {\n if (!planBooks || planBooks.length <= 0) {\n return [];\n }\n const nonDeletedPlanBooks = planBooks.filter(x => !x.DeletedAt);\n const filteredPlanBooks = nonDeletedPlanBooks.filter(x => isBooked ? x.BookedAt : !x.BookedAt);\n const planBooksApplicationDates = filteredPlanBooks.filter(x => x.ApplicationDate)\n .map(x => x.ApplicationDate);\n return planBooksApplicationDates.map(x => {\n const farmDate = this.dateService.toFarmDate(new Date(x)).toDate();\n return this.dateService.getDateMidnight(farmDate);\n });\n }\n\n private _updateNutrientPlanningLayer(planBook: IBasicFertilisationPlanBooks): void {\n if (this.mapStore.Layers.NutrientPlanningLayer.Legend && this.mapStore.Layers.NutrientPlanningLayer?.Legend()?.selectionLists?.length > 0) {\n const legendItems = this.mapStore.Layers.NutrientPlanningLayer.Legend().selectionLists.FirstOrDefault();\n const selectedLegendElement = (legendItems.values as any[])\n .Find(_ => _?.value === this._getElementShort(planBook, planBook.Operation_Mode.Id === ApOperationMode.Const).toUpperCase()); // To upper case because we need product instead of element by default\n if (selectedLegendElement) {\n legendItems.selectedValue.next(selectedLegendElement);\n this.legendScrollerService.selectionChange.emit({\n legend: this.mapStore.Legends.NutrientPlanningLegend,\n selectionKeys: this.legendScrollerService.generateSelectionKey(this.mapStore.Legends.NutrientPlanningLegend).Split('_'),\n });\n }\n }\n }\n\n private _getElementShort(planBook: IBasicFertilisationPlanBooks, isConstant: boolean): string {\n if (isConstant) {\n const leadingElement = this.nutrientManagementService.getFertilizerLeadingElement(planBook.Product_Id);\n switch (leadingElement) {\n case 1:\n return 'p';\n case 2:\n return 'k';\n case 3:\n return 'mg';\n case 4:\n return 'ph';\n }\n return 'p';\n }\n let elementShort = planBook?.Element?.ShortDescription?.toLowerCase();\n if (!elementShort || elementShort === '') {\n elementShort = 'p';\n } else if (elementShort === 'cao') {\n elementShort = 'ph';\n }\n\n return elementShort;\n }\n\n private _deleteDialog(dataItem: any, deleteCallback: (dataItem: any) => any): void {\n this.modalDialogStore.setModalDialogData(this.modalDialogPresets.DeleteDialog());\n const modalDialogSubscription = this.modalDialogStore.Listen(s => s.result)\n .pipe(skip(1))\n .subscribe((result) => {\n modalDialogSubscription.unsubscribe();\n if (result.key === 'delete') {\n deleteCallback(dataItem);\n }\n });\n }\n\n private _redirectToTaskManagement(isShowView: boolean, summaryId: IGuid, isBooked: boolean, returnUrl: string, fieldId: IGuid | null): void {\n if (!returnUrl) {\n returnUrl = '';\n }\n const navigateObject = {\n id: summaryId,\n url: returnUrl\n };\n if (isShowView) {\n navigateObject['show'] = true;\n }\n if (isBooked) {\n navigateObject['bookings'] = true;\n }\n if (fieldId) {\n navigateObject['fieldId'] = fieldId;\n }\n this.routerStore.navigate(['task-management/overview'], navigateObject).then();\n }\n\n //#endregion \"private Methods\"\n}\n","import {Injectable} from '@angular/core';\nimport {FertilizerStore} from '../../stores/base-data/fertilizer.store';\nimport {ApOperationMode} from '../../ap-interface/enums/ap-operation-mode.enum';\nimport {ApNutrientService} from '../../ap-utils/service/ap-nutrient.service';\nimport IBasicFertilisationSummaries = Data.TaskManagement.IBasicFertilisationSummaries;\nimport IBasicFertilisationPlanBooks = Data.TaskManagement.IBasicFertilisationPlanBooks;\n\n@Injectable({providedIn: 'root'})\nexport class NutrientManagementService {\n constructor(private fertilizerStore: FertilizerStore,\n private nutrientService: ApNutrientService) {\n }\n\n public getArea(summary: IBasicFertilisationSummaries, isBooking: boolean): number {\n let s: IBasicFertilisationPlanBooks[] | null;\n if (isBooking) {\n s = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy !== null);\n } else {\n s = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy === null);\n }\n return s.reduce((a, b) => a + b.Area / 10000, 0);\n }\n\n /**\n * Method getCalculateSumFertilizer calculates Sum of Fertilizer product in Basic Fertilization\n * by all planbooks available in summary\n * @param summary Summary to take Planbooks from\n * @param isBooking Flag that indicates what should be calculated, planned or booked records of basic fertilization\n */\n public getCalculateSumFertilizer(summary: IBasicFertilisationSummaries, isBooking: boolean): number {\n if (!summary || !summary.BasicFertilisationPlanBooks || summary.BasicFertilisationPlanBooks.length <= 0) {\n return 0;\n }\n let planBooks: IBasicFertilisationPlanBooks[] | null;\n if (isBooking) {\n planBooks = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy !== null);\n } else {\n planBooks = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy === null);\n }\n let applSum = 0;\n planBooks.forEach(planBook => {\n let planBookAppl: number;\n const planArea = planBook.Area / 10000;\n // Workaround for summaries/planbooks with the wrong element (might be due to migration from 4.8)\n const element = summary.User_Operation_Mode?.Id === ApOperationMode.Const && planBook.Operation_Mode?.Id === ApOperationMode.Const\n ? this.getFertilizerLeadingElement(planBook.Product_Id)\n : planBook.Element?.Id;\n if (planBook.Product_Id > 0) {\n planBookAppl = this.nutrientService.convertNutrientToGoods(planBook.Product_Id, element, planBook.Appl_Rate * planArea);\n } else {\n planBookAppl = planBook.Appl_Rate * planArea;\n }\n applSum += planBookAppl;\n });\n return applSum;\n }\n\n /**\n * Method getCalculateSumFertilizerBySinglePlanBook calculates Sum of Fertilizer product in single PlanBook of Basic Fertilization\n */\n public getCalculateSumFertilizerBySinglePlanBook(planBook: IBasicFertilisationPlanBooks): number {\n if (!planBook) {\n return 0;\n }\n\n const planArea = planBook.Area / 10000;\n // Workaround for summaries/planbooks with the wrong element (might be due to migration from 4.8)\n const element = planBook.Operation_Mode?.Id === ApOperationMode.Const\n ? this.getFertilizerLeadingElement(planBook.Product_Id)\n : planBook.Element?.Id;\n if (planBook.Product_Id > 0) {\n return this.nutrientService.convertNutrientToGoods(planBook.Product_Id, element, planBook.Appl_Rate * planArea);\n } else {\n return planBook.Appl_Rate * planArea;\n }\n }\n\n public getNutrientName(band: number): string {\n switch (band) {\n case 0:\n return 'p';\n case 1:\n return 'k';\n case 2:\n return 'mg';\n case 3:\n return 'ph';\n default:\n return '';\n }\n }\n\n /**\n * Bestimmt den Leitnährstoff eines Düngers\n * → Element mit höchstem Gehalt\n * 1 - P\n * 2 - K\n * 3 - Mg\n * 4 - CaO\n * @param productId the id des Düngers\n */\n public getFertilizerLeadingElement(productId: number): number {\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!fertilizer) {\n return null;\n }\n\n const elementContents = [fertilizer.ContentP, fertilizer.ContentK, fertilizer.ContentMg, fertilizer.ContentCaO];\n const absElementContents = elementContents.map(value => Math.abs(value));\n const maxElementContentsIndex = elementContents.indexOf(Math.max(...elementContents));\n return elementContents[maxElementContentsIndex] > 0 ? maxElementContentsIndex + 1 : absElementContents.indexOf(Math.max(...absElementContents)) + 1;\n }\n\n public getMin(summary: IBasicFertilisationSummaries, isBooking: boolean): number {\n if (!summary || !summary.BasicFertilisationPlanBooks || summary.BasicFertilisationPlanBooks.length <= 0) {\n return 0;\n }\n if (summary.User_Appl_Min !== null) {\n return summary.User_Appl_Min;\n }\n let planBooks: Data.TaskManagement.IBasicFertilisationPlanBooks[];\n if (isBooking) {\n planBooks = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy !== null);\n } else {\n planBooks = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy === null);\n }\n if (!planBooks || planBooks.length <= 0) {\n return 0;\n }\n let min = 0;\n let result = 0;\n let content = 0;\n const elementId = this.getFertilizerLeadingElement(planBooks[0].Product_Id);\n planBooks.forEach(planBook => {\n const found = planBook?.Statistic?.Find(_ => _.Band === elementId - 1);\n if (found !== null && found !== undefined) {\n if (found.Min > min) {\n min = found.Min;\n }\n }\n });\n const fertilizer = this.fertilizerStore.getFertilizer(planBooks[0].Product_Id);\n if (fertilizer) {\n switch (elementId) {\n case 1:\n content = fertilizer.ContentP !== 0 ? fertilizer.ContentP : 1;\n break;\n case 2:\n content = fertilizer.ContentK !== 0 ? fertilizer.ContentK : 1;\n break;\n case 3:\n content = fertilizer.ContentMg !== 0 ? fertilizer.ContentMg : 1;\n break;\n case 4:\n content = fertilizer.ContentCaO !== 0 ? fertilizer.ContentCaO : 1;\n break;\n case 5:\n content = fertilizer.ContentN !== 0 ? fertilizer.ContentN : 1;\n break;\n }\n if (fertilizer.IsOrganic) {\n // Organic\n result = min / content;\n } else {\n // Inorganic\n result = min / content * 100;\n }\n }\n return result;\n }\n\n public getMax(summary: IBasicFertilisationSummaries, isBooking: boolean): number {\n if (!summary || !summary.BasicFertilisationPlanBooks || summary.BasicFertilisationPlanBooks.length <= 0) {\n return 0;\n }\n if (summary.User_Appl_Max !== null) {\n return summary.User_Appl_Max;\n }\n let planBooks: Data.TaskManagement.IBasicFertilisationPlanBooks[];\n if (isBooking) {\n planBooks = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy !== null);\n } else {\n planBooks = summary.BasicFertilisationPlanBooks.FindAll(_ => _.BookedBy === null);\n }\n if (!planBooks || planBooks.length <= 0) {\n return 0;\n }\n let max = 0;\n let result = 0;\n let content = 0;\n const elementId = this.getFertilizerLeadingElement(planBooks[0].Product_Id);\n planBooks.forEach(planBook => {\n const found = planBook?.Statistic?.Find(_ => _.Band === elementId - 1);\n if (found !== null && found !== undefined) {\n if (found.Max > max) {\n max = found.Max;\n }\n }\n });\n const fertilizer = this.fertilizerStore.getFertilizer(planBooks[0].Product_Id);\n if (fertilizer) {\n switch (elementId) {\n case 1:\n content = fertilizer.ContentP !== 0 ? fertilizer.ContentP : 1;\n break;\n case 2:\n content = fertilizer.ContentK !== 0 ? fertilizer.ContentK : 1;\n break;\n case 3:\n content = fertilizer.ContentMg !== 0 ? fertilizer.ContentMg : 1;\n break;\n case 4:\n content = fertilizer.ContentCaO !== 0 ? fertilizer.ContentCaO : 1;\n break;\n case 5:\n content = fertilizer.ContentN !== 0 ? fertilizer.ContentN : 1;\n break;\n }\n if (fertilizer.IsOrganic) {\n // Organic\n result = max / content;\n } else {\n // Inorganic\n result = max / content * 100;\n }\n }\n return result;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ServiceInjector} from '../../ap-utils/injector';\nimport {AgriportConstantsStore} from '../../stores/common/agriport-constants.store';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgriportConstantsService {\n AgriportConstants: { [key: string]: string } = {\n RasterNoValue : '-9999999999.0'\n };\n\n public static GetConstant(key: string): string {\n return ServiceInjector.instance.get(AgriportConstantsService).GetConstant(key);\n }\n\n constructor(private store: AgriportConstantsStore) {\n }\n\n public GetConstant(key: string): string {\n const value = this.AgriportConstants[key];\n if (value !== undefined) {\n return value;\n }\n return this.store.Listen((s) => s.constants).getValue()[key];\n }\n}\n","import {Injectable} from '@angular/core';\nimport IUser = Data.Authentication.IUser;\nimport UserRoleType = Data.Authentication.Enums.UserRoleType;\n\n/**\n * Service for handling user's RoleId and its assignment to different\n * agriport roles and permissions\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ApRoleTypeService {\n\n /**\n * Checks if the given user has AT LEAST the default (roleId=0) user permission/role\n * Every agriport user should have this permission\n * @param user the user to check\n */\n public static hasDefaultRole(user: IUser): boolean {\n return this.hasRole(user, UserRoleType.Default);\n }\n\n /**\n * Checks if the given user has AT LEAST the AGRICON-Backoffice (roldeId=1) user permission/role\n * Every agriport user should have this permission\n * @param user the user to check\n */\n public static hasAgriconRole(user: IUser): boolean {\n return this.hasRole(user, UserRoleType.Admin);\n }\n /**\n * Checks if the given user has AT LEAST the DEVELOPER (roldeId=10) user permission/role\n * @param user the user to check\n */\n public static hasDeveloperRole(user: IUser): boolean {\n return this.hasRole(user, UserRoleType.Developer);\n }\n\n /**\n * Generic method to check if the given user has AT LEAST the given role / permission\n * @param user the user to be checked\n * @param role the role to verify\n * @private\n */\n private static hasRole(user: IUser, role: UserRoleType): boolean {\n return user?.RoleType >= role;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {toByteArray} from 'base64-js';\nimport {FileType} from '../../types/file.types';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\n\n@Injectable({providedIn: 'root'})\nexport class FileService {\n constructor(private dateService: ApDateService) {\n }\n\n public readFileToDataUrl(file: File | undefined): Promise {\n return new Promise((resolve, reject) => {\n if (!file || file.size <= 0) {\n resolve(undefined);\n }\n const reader = new FileReader();\n reader.onload = (event: ProgressEvent) => {\n resolve(event.target.result as string);\n reader.onload = null;\n };\n reader.onerror = () => {\n reject(new Error('Failed to read file'));\n };\n reader.readAsDataURL(file);\n });\n }\n\n public getBase64FromDataUrl(dataUrl: string): string {\n return dataUrl.split(';base64,')[1];\n }\n\n public getFileType(mimeType: string): FileType {\n if (mimeType.includes('video/')) {\n return FileType.Video;\n }\n if (mimeType.startsWith('image/')) {\n return FileType.Image;\n }\n return FileType.Other;\n }\n\n public getFileExtensionByMimeType(mimeType: string): string {\n if (!mimeType) {\n return '';\n }\n const fileExtension = mimeType.split('/').pop();\n return fileExtension ?? '';\n }\n\n public base64StringToFileData(fileName: string, mimeType: string, base64String: string, lastModified?: number): File {\n const uint8Array = toByteArray(base64String);\n const blob = new Blob([uint8Array], {type: mimeType});\n const options = {\n type: mimeType,\n lastModified: lastModified ?? this.dateService.getNow()\n };\n return new File([blob], fileName, options);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {AgriportConstantsService} from './agriport-constants.service';\nimport INUptakeFactors = Data.Common.INUptakeFactors;\n\n@Injectable({providedIn: 'root'})\nexport class NuptakeCalculationService {\n constructor(private agriportConstantsService: AgriportConstantsService) {\n }\n\n public calculateNUptakeValue(nIndexValue: number, nUptakeFactor: INUptakeFactors): number | null {\n if (!nUptakeFactor) {\n return null;\n }\n const slopeConst = this.agriportConstantsService.GetConstant('slope_gbi_ndi');\n const intercConst = this.agriportConstantsService.GetConstant('interc_gbi_ndi');\n const powerConst = this.agriportConstantsService.GetConstant('power_gbi_nindex'); \n if (!slopeConst || !intercConst|| !powerConst) {\n return null;\n }\n const result = (+powerConst*Math.pow(nIndexValue, 2)+ +slopeConst * nIndexValue + +intercConst) * nUptakeFactor.Slope + nUptakeFactor.Interc;\n return Number.isFinite(result) && result >= 0 ? result : 0;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {UploadProgressOptions} from '../../types/common-types';\n\n/**\n * Service for simulating file upload progress\n */\n@Injectable({providedIn: 'root'})\nexport class UploadFileService {\n /**\n * Simulates file upload progress with incremental updates\n * @param callback - Progress update function, returns true when need to stop and false in case need to continue\n * @param options - Optional settings for increment speed and interval timing\n * @public\n */\n public controlUploadProgress(callback: (progress: number) => boolean, options?: UploadProgressOptions): void {\n let initialProgress = 0;\n const incrementValue = options?.Increment ?? 9;\n const intervalValue = options?.Interval ?? 100;\n const progressInterval = setInterval(() => {\n initialProgress += incrementValue;\n if (initialProgress >= 100) {\n initialProgress = 99;\n }\n const shouldContinueInterval = callback(initialProgress);\n // Stop if callback returns true or progress is complete\n if (shouldContinueInterval || initialProgress === 99) {\n clearInterval(progressInterval);\n }\n }, intervalValue);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {OperationModesEnum} from '../../stores/common/operation-modes.store';\nimport {ApplicationSettingsStore} from '../../stores/agronomic/application-settings-store.service';\nimport IApplicationSettings = Data.Agronomic.IApplicationSettings;\n\n@Injectable({providedIn: 'root'})\nexport class ApplicationSettingsService {\n constructor(private applicationSettingsStore: ApplicationSettingsStore) {\n }\n\n /**\n * Checks if an EC value falls within the valid range of application settings\n * @param ecValue The EC (growth stage) value to validate\n * @param applicationSettings The application settings containing EC range\n * @returns Boolean indicating whether the EC value is valid for the given application settings\n * @public\n */\n public isApplicationSettingValidForGrowthStage(ecValue: number | undefined,\n applicationSettings: IApplicationSettings | undefined): boolean {\n if (!applicationSettings || !Number.isFinite(ecValue)) {\n return false;\n }\n return applicationSettings.EcMin <= ecValue && ecValue <= applicationSettings.EcMax;\n }\n\n /**\n * Retrieves application settings for a specific operation mode and crop (EPPO code)\n * @param operationModeKey The operation mode to filter application settings\n * @param eppoCode The crop's EPPO code to match against application settings\n * @returns Matching application settings or undefined if no match is found\n * @public\n */\n public getApplicationSettings(operationModeKey: OperationModesEnum, eppoCode: string): IApplicationSettings | undefined {\n if (!this.isValidOperationMode(operationModeKey) || !eppoCode) {\n return undefined;\n }\n const applicationSettingsByOperationMode = this.applicationSettingsStore.Applications.filter(x => x.OperationMode.Key === operationModeKey);\n if (applicationSettingsByOperationMode.length <= 0) {\n return undefined;\n }\n return applicationSettingsByOperationMode.find(x => {\n return x.EppoGroup.EppoCodes.some(y => y === eppoCode);\n });\n }\n\n /**\n * Finds all agronomic.applicationSettings which apply for the given combination of eppoCode and ec-values (of selected fields/sensor data)\n * @param operationModeKey operation mode for the application settings\n * @param eppoCode the field's eppoCode\n * @param ecValues ec values of all selected fields\n * @public\n */\n public getApplicationSettingsForEppoAndEcRange(operationModeKey: OperationModesEnum, eppoCode: string, ecValues: number[]): IApplicationSettings[] {\n if (!this.isValidOperationMode(operationModeKey) || !eppoCode) {\n return [];\n }\n const applicationSettingsByOperationMode = this.applicationSettingsStore.Applications.filter(x => x.OperationMode.Key === operationModeKey);\n if (applicationSettingsByOperationMode.length <= 0) {\n return [];\n }\n return applicationSettingsByOperationMode.FindAll(x => {\n return x.EppoGroup.EppoCodes.some(y => y === eppoCode) && ecValues.some(y => y >= x.EcMin && y <= x.EcMax);\n });\n }\n\n /**\n * Validates if the given operation mode is supported for application settings\n * Checks against a predefined list of valid operation modes for specific agronomic applications\n * @param operationModeKey The operation mode to validate\n * @returns Boolean indicating whether the operation mode is valid for application settings\n * @private\n */\n private isValidOperationMode(operationModeKey: OperationModesEnum): boolean {\n return operationModeKey === OperationModesEnum.ApplicationMap\n || operationModeKey === OperationModesEnum.ApplicationMapAbsolute\n || operationModeKey === OperationModesEnum.PpTarget\n || operationModeKey === OperationModesEnum.PpTargetMapPerField\n || operationModeKey === OperationModesEnum.PPTargetMapPerPlan;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ApElementType} from '../../ap-interface/enums/ap-elements-type.enum';\nimport {FertilizerStore} from '../../stores/base-data/fertilizer.store';\nimport {IBaseFertStatistic} from '../../types/base-fertilization.types';\nimport {FertilizerService} from './fertilizer.service';\nimport IFieldNutrientPlanningStatistic = Data.Nutrients.IFieldNutrientPlanningStatistic;\nimport INutrientFertilisationStatisticValue = Data.TaskManagement.INutrientFertilisationStatisticValue;\nimport {ObjectFactory} from 'ts-tooling';\n\n@Injectable({providedIn: 'root'})\nexport class BaseFertilizationService {\n constructor(private fertilizerStore: FertilizerStore,\n private fertilizerService: FertilizerService) {\n }\n\n public calculateNElementByLeadElement(productId: number | null | undefined,\n statistics: IFieldNutrientPlanningStatistic[] | null | undefined): IBaseFertStatistic | null {\n if (!productId || !statistics || statistics.length <= 0) {\n return null;\n }\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!fertilizer) {\n return null;\n }\n const leadNutrient = this.fertilizerService.getFertilizerLeadingElement(fertilizer) ?? ApElementType.P;\n const leadNutrientStatistic = this._getStatisticValue(statistics.find(_ => _.Band === leadNutrient - 1));\n if (!leadNutrientStatistic) {\n return null;\n }\n const leadFertilizerContent = this.fertilizerService.getFertilizerContent(fertilizer, leadNutrient, true);\n const factor = fertilizer.ContentN / leadFertilizerContent;\n if (!Number.isFinite(factor)) {\n return null;\n }\n leadNutrientStatistic.Min = leadNutrientStatistic.Min * factor;\n leadNutrientStatistic.Max = leadNutrientStatistic.Max * factor;\n leadNutrientStatistic.Average = leadNutrientStatistic.Average * factor;\n return leadNutrientStatistic;\n }\n\n public addProductAmountStatistic(productId: number | null | undefined, targetElement: number | null | undefined,\n statistics: INutrientFertilisationStatisticValue[] | null | undefined): INutrientFertilisationStatisticValue[] | null {\n if (!productId || !statistics || statistics.length <= 0) {\n return null;\n }\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!fertilizer) {\n return null;\n }\n const leadNutrient = this.fertilizerService.getFertilizerLeadingElement(fertilizer) ?? ApElementType.P;\n const leadFertilizerContent = this.fertilizerService.getFertilizerContent(fertilizer, targetElement ?? leadNutrient);\n\n const stat = statistics.find(_ => _.ElementId === (targetElement ?? leadNutrient));\n const newStat = ObjectFactory.Copy(stat);\n newStat.Min = stat.Min / leadFertilizerContent;\n newStat.Max = stat.Max / leadFertilizerContent;\n\n // Corner case for negative content fertilizers\n if (newStat.Min > newStat.Max) {\n const tempMin = newStat.Min;\n newStat.Min = newStat.Max;\n newStat.Max = tempMin;\n }\n newStat.Average = stat.Average / leadFertilizerContent;\n newStat.ElementId = -stat.ElementId;\n statistics.unshift(newStat);\n\n return statistics;\n }\n\n public calculateProductAmount(productId: number, targetElement: number | null | undefined, elementValue: number): number {\n if (!productId) {\n return null;\n }\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n if (!fertilizer) {\n return null;\n }\n const leadNutrient = this.fertilizerService.getFertilizerLeadingElement(fertilizer) ?? ApElementType.P;\n const leadFertilizerContent = this.fertilizerService.getFertilizerContent(fertilizer, targetElement ?? leadNutrient);\n\n return Math.abs(elementValue / leadFertilizerContent);\n }\n\n private _getStatisticValue(statistic: {\n Min: number,\n Max: number,\n Mean: number\n } | null | undefined): IBaseFertStatistic {\n if (statistic && (statistic.Mean > 0 || statistic.Max > 0 || statistic.Min > 0)) {\n return {\n Min: statistic.Min,\n Max: statistic.Max,\n Average: statistic.Mean\n };\n }\n return null;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {CampaignYearRange} from '../../types/common-types';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {DateRange, DateTime} from 'ts-tooling';\n\n@Injectable({providedIn: 'root'})\nexport class CampaignYearService {\n\n constructor(private dateService: ApDateService) {\n }\n\n public isCampaignYearIntersects(from: Date, to: Date, campaignYear: CampaignYearRange): boolean {\n try {\n if (from > to) {\n console.warn(`'from' date is bigger then 'to; date`);\n return false;\n }\n const zoneName = DateTime.LocalZoneName();\n const campaignYearStart = DateTime.FromISOString(campaignYear.StartYear.toISOString(), zoneName);\n const campaignYearEnd = DateTime.FromISOString(campaignYear.EndYear.toISOString(), zoneName);\n const isoFrom = DateTime.FromISOString(from.toISOString(), zoneName);\n const isoTo = DateTime.FromISOString(to.toISOString(), zoneName);\n const range = new DateRange(isoFrom, isoTo);\n const yearRange = new DateRange(campaignYearStart, campaignYearEnd);\n return yearRange.Overlaps(range);\n } catch (ex) {\n console.warn(`Error in 'isCampaignYearIntersects'. Error object: ${JSON.stringify(ex)}`);\n return false;\n }\n }\n\n public getCampaignYearRange(year: number, endYear?: number): CampaignYearRange {\n const startYear = year - 1;\n const yearEnd = endYear ? endYear : year;\n return this._createCampaignYearRange(startYear, yearEnd);\n }\n\n public getCampaignYearByDate(date: Date): CampaignYearRange {\n if (!date) {\n const utcDate = this.dateService.getUtc();\n const farmDate = this.dateService.toFarmDateFromUtcGetJsDate(utcDate);\n return this.getCampaignYearByDate(farmDate);\n }\n const month = date.getMonth();\n const year = date.getFullYear();\n let yearStart: number;\n let yearEnd: number;\n if (month >= this._getCampaignYearStart(year).getMonth()) {\n yearStart = year;\n yearEnd = year + 1;\n } else {\n yearStart = year - 1;\n yearEnd = year;\n }\n return this._createCampaignYearRange(yearStart, yearEnd);\n }\n\n /**\n * Calculates the campaign year begin date from a given sample date.\n * Campaign years start on August 1st of each year.\n * If the sample date is before July, the campaign year starts on August 1st of the previous year.\n * If the sample date is July or later, the campaign year starts on August 1st of the current year.\n *\n * @param sampleDate - Input date to calculate campaign year start from\n * @returns Campaign year start date or null if input is null\n */\n public getCampaignYearBeginFromSampleDate(sampleDate: Date | undefined): Date | undefined {\n if (!sampleDate) {\n return undefined;\n }\n const year = sampleDate.getFullYear();\n const month = sampleDate.getMonth() + 1;\n const soilSampleCampaignYear = month < 7 ? year - 1 : year;\n return this._getCampaignYearStart(soilSampleCampaignYear);\n }\n\n private _createCampaignYearRange(yearStart: number, yearEnd: number): CampaignYearRange {\n const startCampaignYearDate = this._getCampaignYearStart(yearStart);\n const endCampaignYearDate = this._getCampaignYearEnd(yearEnd);\n return {\n CampaignYear: yearEnd,\n StartYear: startCampaignYearDate,\n EndYear: endCampaignYearDate\n };\n }\n\n private _getCampaignYearStart(year: number): Date {\n // month August\n return new Date(year, 7, 1, 0, 0, 0);\n }\n\n private _getCampaignYearEnd(year: number): Date {\n // month July\n return new Date(year, 6, 31, 23, 59, 59, 999);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FertilizerStore} from '../../stores/base-data/fertilizer.store';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FertilizationManagementService {\n constructor(private fertilizerStore: FertilizerStore) {\n }\n\n public getFertilizerContentN(fertilizerId: number | null): number {\n const fertilizer = this.fertilizerStore.getFertilizer(fertilizerId);\n if (!fertilizer) {\n return 1;\n }\n let content = fertilizer.ContentN ?? 1;\n if (!fertilizer.IsOrganic) {\n content /= 100;\n if (fertilizer.IsLiquid) {\n content *= fertilizer.Density ?? 1;\n }\n }\n return content;\n }\n\n public calculateProductAmountN(fertilizerId: number | null, rate: number | null, area: number, factor?: number): number | undefined {\n if (!fertilizerId || !rate) {\n return undefined;\n }\n const fertilizerContent = this.getFertilizerContentN(fertilizerId);\n if (!fertilizerContent) {\n return undefined;\n }\n if (factor) {\n return rate * factor * area / fertilizerContent;\n }\n return rate * area / fertilizerContent;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {CombinedFertilizer} from '../../types/common-types';\nimport {ApElementType} from '../../ap-interface/enums/ap-elements-type.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FertilizerService {\n constructor(private translationService: ApTranslationService) {\n }\n\n public getFertilizerProductName(fertilizer: CombinedFertilizer | null): string {\n if (!fertilizer) {\n return this.translationService.translate('Nutrient__PureNutrient');\n }\n return fertilizer?.Prodname ?? '-';\n }\n\n public getFertilizerUnit(fertilizer: CombinedFertilizer | null, perHa = false): string {\n if (!fertilizer) {\n return this.translationService.translate('Nutrient__PureNutrient');\n }\n const unit = this.translationService.translate(fertilizer.Unit.BaseUnit ? fertilizer.Unit.BaseUnit.Key : fertilizer.Unit.Key);\n if (perHa) {\n return `${unit}/${this.translationService.translate('Global__Unit_ha')}`;\n } else {\n return unit;\n }\n }\n\n /**\n * Defines the lead nutrient\n * → Element with the highest content\n * 1 -P\n * 2 - K\n * 3 - Mg\n * 4 - CaO\n * @param fertilizer the id of the fertiliser\n */\n public getFertilizerLeadingElement(fertilizer: CombinedFertilizer | null): ApElementType {\n if (!fertilizer) {\n return null;\n }\n const elementContents = [fertilizer.ContentP, fertilizer.ContentK, fertilizer.ContentMg, fertilizer.ContentCaO];\n return elementContents.indexOf(Math.max(...elementContents)) + 1;\n }\n\n public getFertilizerContent(fertilizer: CombinedFertilizer | null, contentElement: ApElementType, ignoreOrganicCalculation: boolean = false): number {\n let result = 0;\n if (!fertilizer) {\n return result;\n }\n switch (contentElement) {\n case ApElementType.P:\n result = fertilizer.ContentP;\n break;\n case ApElementType.K:\n result = fertilizer.ContentK;\n break;\n case ApElementType.Mg:\n result = fertilizer.ContentMg;\n break;\n case ApElementType.CaO:\n result = fertilizer.ContentCaO;\n break;\n case ApElementType.N:\n result = fertilizer.ContentN;\n break;\n }\n if (ignoreOrganicCalculation) {\n return result;\n }\n if (fertilizer.IsLiquid) {\n const density = fertilizer.Density ?? 1;\n result *= density;\n }\n if (!fertilizer.IsOrganic) {\n result /= 100;\n }\n return result;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {LicenseStore} from '../../../stores/farm/license.store';\nimport {CampaignYearService} from '../campaign-year.service';\nimport {CampaignYearStore} from '../../../stores/login/campaignyear.store';\nimport {ApFeatureModulKey} from '../../../ap-interface/enums/ap-feature-modul-key.enum';\nimport {LoginStore} from '../../../stores/login/login.store';\nimport {ApDateService, DateDiffType} from '../../../ap-core/services/ap-date-service';\nimport ILicense = Data.Licensing.ILicense;\n\n@Injectable({providedIn: 'root'})\nexport class LicenseService {\n constructor(private loginStore: LoginStore,\n private licenseStore: LicenseStore,\n private campaignYearStore: CampaignYearStore,\n private dateService: ApDateService,\n private campaignYearService: CampaignYearService) {\n }\n\n /**\n * Retrieves a valid satellite license\n * @returns Valid satellite license or undefined\n * @public\n */\n public getValidSatelliteLicense(): ILicense | undefined {\n return this._getLicense(ApFeatureModulKey.Satellite);\n }\n\n /**\n * Retrieves a valid base fertilization license\n * @returns Valid base fertilization license or undefined\n * @public\n */\n public getValidBaseFertilizationLicense(): ILicense | undefined {\n return this._getLicense(ApFeatureModulKey.BaseFertilization);\n }\n\n /**\n * Retrieves a valid nitrogen fertilization license\n * @returns Valid nitrogen fertilization license or undefined\n * @public\n */\n public getValidNFertilizationLicense(): ILicense | undefined {\n return this._getLicense(ApFeatureModulKey.NFertilization);\n }\n\n /**\n * Retrieves a valid plant protection license\n * @returns Valid plant protection license or undefined\n * @public\n */\n public getValidPlantProtectionLicense(): ILicense | undefined {\n return this._getLicense(ApFeatureModulKey.PlantProtection);\n }\n\n /**\n * Checks if the selected campaign year is the latest licensed year\n * Validates campaign year based on:\n * - Current farm date\n * - Campaign year range\n * - License validity period\n * @returns Boolean indicating if the selected year is the latest licensed year\n * @public\n */\n public isLatestLicensedYear(): boolean {\n const selectedCampaignYear = this.campaignYearStore.SelectedCampaignYear;\n if (!selectedCampaignYear) {\n return false;\n }\n const farmDate = this.dateService.getFarmDate();\n const campaignYearRange = this.campaignYearService.getCampaignYearByDate(farmDate);\n const selectedYearRange = this.campaignYearService.getCampaignYearRange(selectedCampaignYear.Year);\n return campaignYearRange.StartYear < campaignYearRange.EndYear\n && selectedCampaignYear.DefaultStart < selectedCampaignYear.DefaultEnd\n && selectedYearRange.StartYear < campaignYearRange.EndYear\n && this.campaignYearService.isCampaignYearIntersects(campaignYearRange.StartYear, campaignYearRange.EndYear, selectedYearRange);\n }\n\n /**\n * Retrieves a valid license for a specific feature module\n *\n * Filters licenses based on:\n * - Farm ID\n * - Feature module key\n *\n * License validation logic:\n * 1. Check trial expiration:\n * - If trial expiration date exists, verify if it's still valid\n * - Returns true if trial period is active\n * 2. Validate license period:\n * - Checks if license has a valid 'ValidTo' date\n * - Determines if license intersects with the current campaign year\n * - Verifies that the license is not expired (current date is before or on ValidTo date)\n *\n * Specific validation steps:\n * - Get current farm date at midnight\n * - Check trial expiration (if applicable)\n * - Validate license period against campaign year\n * - Ensure license is current and not expired\n *\n * @param featureModulKey Feature module key to find license for\n * @returns Valid license or undefined\n * @private\n */\n private _getLicense(featureModulKey: ApFeatureModulKey): ILicense | undefined {\n if (!featureModulKey || !this.campaignYearStore.SelectedCampaignYear || !this.loginStore.SelectedFarm) {\n return undefined;\n }\n const selectedYearRange = this.campaignYearService.getCampaignYearRange(\n this.campaignYearStore.SelectedCampaignYear.Year\n );\n return this.licenseStore.Licenses.filter(x => x.FarmId === this.loginStore.SelectedFarmId)\n .filter(x => x.FeatureModul.Key === featureModulKey)\n .find(x => {\n const todayDate = this.dateService.getDateMidnight(this.dateService.getFarmDate());\n if (!!x.TrialExpireAt) {\n const TrialExpiredAtDayDifference = this.dateService.getDateDiff(new Date(x.TrialExpireAt),\n todayDate, DateDiffType.Days);\n if (TrialExpiredAtDayDifference >= 0) {\n return true;\n }\n }\n if (!x.ValidTo) {\n return false;\n }\n const validTo = new Date(x.ValidTo);\n const isLicenseIntersectsWithLatestCampaignYear = this.campaignYearService.isCampaignYearIntersects(\n new Date(x.ValidFrom), new Date(x.ValidTo), selectedYearRange);\n if (isLicenseIntersectsWithLatestCampaignYear) {\n const validToDayDifference = this.dateService.getDateDiff(validTo, todayDate, DateDiffType.Days);\n return validToDayDifference >= 0;\n }\n return false;\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {AgriportConstantsService} from '../common/agriport-constants.service';\nimport {FertilizerStore} from '../../stores/base-data/fertilizer.store';\nimport INFertilizationPlanBook = Data.TaskManagement.INFertilizationPlanBook;\nimport IDatasetFieldMap = Data.Sensor.IDatasetFieldMap;\nimport INSensorLogHeaderData = Data.Import.INSensorLogHeaderData;\nimport IDataSet = Data.Import.IDataSet;\n\n@Injectable({providedIn: 'root'})\nexport class LogfileService {\n constructor(private fertilizationStore: FertilizerStore) {\n }\n\n public getPlanning(dataItem: IDatasetFieldMap, planBooks: INFertilizationPlanBook[]): INFertilizationPlanBook {\n if (!dataItem?.DataSet?.Created) {\n return undefined;\n }\n const headerValues: INSensorLogHeaderData = JSON.parse(dataItem.DataSet.HeaderValuesString);\n if (headerValues?.AgentContent === undefined || headerValues?.AgentContent === null || headerValues?.AgentContent === '') {\n return undefined;\n }\n const contentNDelta = +AgriportConstantsService.GetConstant('CONTENT_N_DELTA');\n const agent = +headerValues.AgentContent.Split(' ')[0].Replace(',', '.');\n if (!planBooks?.length) {\n return undefined;\n }\n return planBooks\n .filter((pb) => {\n return pb.DeletedBy == null &&\n pb.FieldGeomId === dataItem.FieldGeomId &&\n pb.LogFileOperationMode === headerValues.OperationMode &&\n agent - contentNDelta <= this.getContentN(pb) && agent + contentNDelta >= this.getContentN(pb) &&\n Math.abs(new Date(pb.ApplicationDate).valueOf() - new Date(dataItem.DataSet.Created).valueOf()) <\n +AgriportConstantsService.GetConstant('PLAN_DATE_DELTA') * 24 * 60 * 60 * 1000;\n })\n .sort((pb) =>\n Math.abs(this.getContentN(pb) - this.getNContentFromDataset(dataItem.DataSet)) * 1000 +\n Math.abs(new Date(pb.ApplicationDate).valueOf() - new Date(dataItem.DataSet.Created).valueOf())\n )\n .FirstOrDefault();\n }\n\n private getContentN(planBook: INFertilizationPlanBook): number {\n if (planBook?.ProductId == null) {\n return 0;\n }\n // Product Id = 0 means Pure Nutrient N (Reinnährstoff)\n if (planBook?.ProductId === 0) {\n return 100;\n }\n const fertilizer = this.fertilizationStore.getFertilizer(planBook.ProductId);\n if (!fertilizer?.ContentN) {\n return 0;\n }\n return (fertilizer.IsLiquid ? fertilizer.ContentN * fertilizer.Density : fertilizer.ContentN);\n }\n\n private getNContentFromDataset(dataset: IDataSet): number {\n const agentContent = dataset.HeaderValues['AgentContent'];\n if (agentContent) {\n return +agentContent.split(' ')[0].replace(',', '.');\n }\n return 0;\n }\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ApStringService {\n public format(template: string, ...args: (string | number)[]): string {\n try {\n if (!template) {\n return '';\n }\n const regexPattern = /\\{(\\d+)}/g;\n // Find all placeholders and their indices\n const placeholders: number[] = [];\n template.replace(regexPattern, (_, num) => {\n placeholders.push(parseInt(num, 10));\n return '';\n });\n // Create mapping based on sorted placeholder numbers\n const valueMap = new Map();\n placeholders\n .sort((a, b) => a - b)\n .forEach((num, index) => {\n if (index < args.length) {\n valueMap.set(num, String(args[index]));\n }\n });\n // Replace placeholders with mapped values\n return template.replace(regexPattern, (_, num) => {\n return valueMap.get(parseInt(num, 10)) || 'undefined';\n });\n } catch (ex) {\n console.warn(ex);\n return '';\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BestScanData} from '../../types/scan.types';\nimport {ApplicationSettingsService} from './application-settings.service';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {ApStringService} from '../../ap-utils/service/ap-string.service';\nimport {NotifyStore} from '../../stores/dialog/notify.store';\nimport {OperationModesEnum} from '../../stores/common/operation-modes.store';\nimport {ApplicationModesEnum} from '../../stores/common/appl-modes.store';\nimport {GetGrowthStageData} from '../../types/n-fertilization-plant-protection.types';\nimport {\n PpConstants\n} from '../../entry-components/plant-protection-entry-components/planning-wizard/pp-planning-wizard.types';\nimport {Create} from 'ts-tooling';\nimport {ApColumnState} from '../../ap-interface/enums/ap-column-state.enum';\nimport {IGridStatus} from '../../ap-interface/interfaces/ap-grid-status.interface';\nimport IApplicationSettings = Data.Agronomic.IApplicationSettings;\nimport ApValidationLevel = Data.Api.Validation.ApValidationLevel;\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\n\n@Injectable({providedIn: 'root'})\nexport class NFertilizationPlantProtectionService {\n constructor(private notifyStore: NotifyStore,\n private stringService: ApStringService,\n private translationService: ApTranslationService,\n private applicationSettingsService: ApplicationSettingsService) {\n }\n\n /**\n * Determines the grid status based on the operation mode\n * Returns yellow status for constant operation mode and green status for variable modes\n * @param operationModeEnum Operation mode to determine status for\n * @returns Grid status object with state, class and description\n * @private\n */\n public getStatusForItemOnOverviewStep(operationModeEnum: OperationModesEnum): IGridStatus {\n if (operationModeEnum === OperationModesEnum.Constant) {\n return {\n state: ApColumnState.Yellow,\n class: 'ap-status-yellow',\n description: 'Global__RateConst'\n };\n }\n return {\n state: ApColumnState.Green,\n class: 'ap-status-green',\n description: 'Global__RateVariable'\n };\n }\n\n /**\n * Converts operation mode to corresponding application mode\n * @param operationModeKey The current operation mode\n * @returns Corresponding application mode\n * @public\n */\n public getApplicationModeFromOperationMode(operationModeKey: OperationModesEnum | undefined): ApplicationModesEnum {\n if (!operationModeKey) {\n return undefined;\n }\n if (operationModeKey === OperationModesEnum.Constant) {\n return ApplicationModesEnum.Constant;\n }\n return ApplicationModesEnum.Variable;\n }\n\n /**\n * Determines the operation mode for planning based on scan data and application settings\n * @param operationMode Current operation mode\n * @param bestScanData Best scan data\n * @param applicationSettings Application-specific settings\n * @returns Adjusted operation mode for planning\n * @public\n */\n public getOperationModeForPlan(operationMode: OperationModesEnum, bestScanData: BestScanData,\n applicationSettings: IApplicationSettings | undefined): OperationModesEnum {\n if (applicationSettings && this.isOperationModeAnyOfMaps(operationMode)) {\n return this.applicationSettingsService.isApplicationSettingValidForGrowthStage(bestScanData.Ec, applicationSettings)\n ? operationMode\n : OperationModesEnum.Constant;\n }\n return this.isOperationModeAnyOfMapsOrConstant(operationMode) && bestScanData.Status.state !== 1\n ? OperationModesEnum.Constant\n : operationMode;\n }\n\n /**\n * Determines the application mode for planning based on operation mode and scan data\n * @param operationMode Current operation mode\n * @param applicationMode Current application mode\n * @param bestScanData Best scan data\n * @returns Adjusted application mode for planning\n * @public\n */\n public getApplicationModeForPlan(operationMode: OperationModesEnum, applicationMode: ApplicationModesEnum,\n bestScanData: BestScanData): ApplicationModesEnum {\n if (operationMode === OperationModesEnum.Constant\n || (this.isOperationModeAnyOfMaps(operationMode) && bestScanData.Status.state !== 1)) {\n return ApplicationModesEnum.Constant;\n }\n return applicationMode;\n }\n\n /**\n * Checks if the operation mode is a map-based or constant mode\n * @param operationMode Operation mode to check\n * @returns Boolean indicating if mode is map-based or constant\n * @public\n */\n public isOperationModeAnyOfMapsOrConstant(operationMode: OperationModesEnum): boolean {\n if (this.isOperationModeAnyOfMaps(operationMode)) {\n return true;\n }\n return operationMode === OperationModesEnum.Constant;\n }\n\n /**\n * Checks if the operation mode is an application map or absolute mode\n * @param operationModeKey Operation mode to check\n * @returns Boolean indicating if mode is an application map or absolute mode\n * @public\n */\n public isOperationModeAnyOfMaps(operationModeKey: OperationModesEnum): boolean {\n if (!operationModeKey) {\n return false;\n }\n return operationModeKey === OperationModesEnum.ApplicationMapAbsolute\n || operationModeKey === OperationModesEnum.ApplicationMap\n || operationModeKey === OperationModesEnum.PpTargetMapPerField\n || operationModeKey === OperationModesEnum.PPTargetMapPerPlan;\n }\n\n /**\n * Displays a warning notification if some scans are outside application settings\n * @param scansData Array of best scan data\n * @param applicationSettings Application-specific settings\n * @public\n */\n public onApplicationSettingsTextWarning(scansData: BestScanData[], applicationSettings: IApplicationSettings): void {\n if (!scansData || scansData.length <= 0 || !applicationSettings) {\n return;\n }\n let warningText: string;\n const validSelectedEcValues = scansData.filter(x => {\n return this.applicationSettingsService.isApplicationSettingValidForGrowthStage(x.Ec, applicationSettings);\n });\n if (validSelectedEcValues.length > 0 && scansData.length !== validSelectedEcValues.length) {\n const translatedText = this.translationService.translate('PlanCreationOutsideOfLimitation');\n warningText = this.stringService.format(translatedText, validSelectedEcValues.length, scansData.length);\n } else {\n return;\n }\n this.notifyStore.addMessage({\n Level: ApValidationLevel.Warning,\n Counter: 1,\n ErrorKey: warningText,\n DisplayTimeout: 5\n } as IApValidationResult);\n }\n\n /**\n * Filters best scans based on application settings\n * @param scansData Array of best scan data\n * @param applicationSettings Application-specific settings\n * @returns Filtered array of valid best scans\n * @public\n */\n public getValidBestScansByApplicationSettings(scansData: BestScanData[],\n applicationSettings: IApplicationSettings): BestScanData[] {\n return scansData?.filter(x => {\n return x.Status.state === ApColumnState.Green\n && this.applicationSettingsService.isApplicationSettingValidForGrowthStage(x.Ec, applicationSettings);\n }) ?? [];\n }\n\n /**\n * Extracts unique growth stages from items\n * @param items Array of growth stage data\n * @returns Array of unique EC values\n * @public\n */\n public getGrowStages(items: GetGrowthStageData[]): number[] {\n const ec: number[] = [];\n items.map(item => {\n if (item?.ScanData?.Ec != null && item.ScanData.Ec >= 0\n && ec.every(x => x !== item.ScanData.Ec)) {\n ec.push(item.ScanData.Ec);\n }\n if (item?.CropData?.EcValue != null && item.CropData.EcValue >= 0\n && ec.every(x => x !== item.CropData.EcValue)) {\n ec.push(item.CropData.EcValue);\n }\n });\n return ec;\n }\n\n /**\n * Calculates slope based on operation mode and other parameters\n * @param operationModeKey Current operation mode\n * @param controlFactor Slope value\n * @param isRape Flag indicating if the crop is rapeseed\n * @param applicationSettings Application-specific settings\n * @returns Calculated slope value\n * @public\n */\n public getSlope(operationModeKey: OperationModesEnum, controlFactor: number | undefined,\n isRape: boolean, applicationSettings: IApplicationSettings | undefined): number {\n if (!Number.isFinite(controlFactor)) {\n controlFactor = applicationSettings?.Parameter?.slope?.FirstOrDefault()?.Slope ?? 1;\n }\n if (applicationSettings && this.isOperationModeAnyOfMaps(operationModeKey)) {\n return controlFactor;\n }\n return operationModeKey === OperationModesEnum.Constant\n ? 0\n : isRape ? 1 : controlFactor;\n }\n\n /**\n * Calculates the area-weighted average of the provided items\n * @param items Array of items with area and average values\n * @returns Calculated area-weighted average\n * @public\n */\n public calculateAreaWeightedAverage(items: { Area: number | undefined, Average: number | undefined }[]): number {\n const filteredItems = items.filter(x => !!x.Average);\n const totalArea = filteredItems.reduce((areaSum, field) => areaSum + Create(field?.Area, 0), 0);\n const averageWithFieldsArea = filteredItems.reduce((sensorAvgSum, item) => {\n const sensorAvg = item.Average > -1 ? item.Average * Create(item?.Area, 0) : 0;\n return sensorAvgSum + sensorAvg;\n }, 0);\n if (!averageWithFieldsArea || !totalArea) {\n return 0;\n }\n return averageWithFieldsArea / totalArea;\n }\n\n /**\n * Generates a human-readable description of the control factor based on operation mode\n * Handles different scenarios:\n * - For map-based modes (Target Map, Application Map, Application Map Absolute), uses application settings\n * - For constant mode, returns a constant rate description\n * - For other modes, uses predefined control factor constants\n * @param operationMode The current operation mode (e.g., Constant, Target Map)\n * @param slope Numeric slope value used for determining the description\n * @param applicationSettings Optional settings that may influence the description\n * @param isPlantProtection Flag to differentiate between plant protection and other applications\n * @returns Translated string describing the control factor, or '-' if no description available\n * @public\n */\n public getControlFactorDescription(operationMode: OperationModesEnum, slope: number,\n applicationSettings: IApplicationSettings | undefined,\n isPlantProtection: boolean): string {\n if ((operationMode === OperationModesEnum.PpTargetMapPerField\n || operationMode === OperationModesEnum.PPTargetMapPerPlan\n || operationMode === OperationModesEnum.ApplicationMap\n || operationMode === OperationModesEnum.ApplicationMapAbsolute) && applicationSettings) {\n const parameters = applicationSettings.Parameter;\n if (!parameters || !parameters.slope?.Any()) {\n return '-';\n }\n const slopeKey = parameters.slope.FirstOrDefault(s => s.Slope === slope)?.Key;\n if (parameters.slopeType === 'dropDown' && !!slopeKey) {\n return this.translationService.translate(slopeKey);\n }\n return '-';\n } else if (operationMode === OperationModesEnum.Constant) {\n return this.translationService.translate('Global__RateConst');\n } else {\n const defaultSlopeKey = this.getDefaultSlopeKey(slope, isPlantProtection);\n if (!!defaultSlopeKey) {\n return this.translationService.translate(defaultSlopeKey);\n }\n return '-';\n }\n }\n\n /**\n * Retrieves the default slope key based on type of application\n * @param slope Slope value\n * @param isPlantProtection Flag indicating if it's plant protection\n * @returns Translated slope key\n * @private\n */\n private getDefaultSlopeKey(slope: number, isPlantProtection: boolean): string {\n if (isPlantProtection) {\n return PpConstants.PpControlFactors.FirstOrDefault(c => c.Id === slope)?.Key;\n } else {\n return slope === -1 ? 'Global__Quality_Oriented' : 'Global__Yield_Oriented';\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n ContentNRelatedPlanBookSourceType,\n IContentNRelatedPlanBook,\n IContentNRelatedPlanBookStatisticValue,\n} from '../../types/n-fertilization.types';\nimport {\n FertilizerStore\n} from '../../stores/base-data/fertilizer.store';\nimport {\n FieldStore\n} from '../../stores/farm/field.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n CropApplicationStore\n} from '../../stores/task-management/crop-application.store';\nimport {\n FertilizationManagementService\n} from './fertilization-management.service';\nimport {\n CampaignYearStore\n} from '../../stores/login/campaignyear.store';\nimport {\n BaseFertilizationService\n} from './base-fertilization.service';\nimport {\n CropTypeStore\n} from '../../stores/base-data/crop.types.store';\nimport INFertilizationPlanBook = Data.TaskManagement.INFertilizationPlanBook;\nimport IOperationMode = Data.Common.IOperationMode;\nimport IDatasetFieldMap = Data.Sensor.IDatasetFieldMap;\nimport IField = Data.FieldManagement.IField;\nimport IBasicFertilisationPlanBooks = Data.TaskManagement.IBasicFertilisationPlanBooks;\nimport IFieldNutrientPlanningStatistic = Data.Nutrients.IFieldNutrientPlanningStatistic;\n\n@Injectable({providedIn: 'root'})\nexport class NFertilizationService {\n constructor(private fieldStore: FieldStore,\n private cropTypeStore: CropTypeStore,\n private fertilizerStore: FertilizerStore,\n private translationStore: TranslationStore,\n private campaignYearStore: CampaignYearStore,\n private cropApplicationStore: CropApplicationStore,\n private baseFertilizationService: BaseFertilizationService,\n private fertilizationManagementService: FertilizationManagementService) {\n }\n\n // TODO refactoring\n public isRapeCrop(selectedCropIds: number[]): boolean {\n return selectedCropIds.every(cropId => [311, 312].includes(this.cropTypeStore.getDefaultCroptype(cropId)?.CropKey));\n }\n\n public getContentNRelatedPlanBooks(field: IField,\n nFertPlanBooks: INFertilizationPlanBook[],\n logfiles: IDatasetFieldMap[],\n baseFertPlanBooks: IBasicFertilisationPlanBooks[] | null | undefined): IContentNRelatedPlanBook[] {\n const nFertApplications = this._getNFertilizationApplicationValues(field, nFertPlanBooks, logfiles);\n const baseFertApplications = this._getBaseFertNRelatedContentFromPlanBooks(field, baseFertPlanBooks);\n if (baseFertApplications && baseFertApplications.length > 0) {\n nFertApplications.push(...baseFertApplications);\n }\n return nFertApplications;\n }\n\n public calculateAlreadyAppliedFromContentNPlanBooks(field: IField,\n nFertPlanBooks: INFertilizationPlanBook[],\n logfiles: IDatasetFieldMap[],\n baseFertPlanBooks: IBasicFertilisationPlanBooks[]): number | null {\n const contentNPlanBooks = this.getContentNRelatedPlanBooks(field, nFertPlanBooks, logfiles, baseFertPlanBooks);\n if (!contentNPlanBooks || contentNPlanBooks.length <= 0) {\n return null;\n }\n const alreadyAppliedValues = contentNPlanBooks.map(planBook => {\n return this.getAlreadyApplied(planBook?.NFertilization?.Average, planBook?.ProductId);\n });\n return alreadyAppliedValues.reduce((prev, current) => prev + current, 0);\n }\n\n public getAlreadyApplied(average: number | null, fertilizerId: number | null): number {\n if (!average || !fertilizerId) {\n return 0;\n }\n const fertilizer = this.fertilizerStore.getFertilizer(fertilizerId);\n if (!fertilizer) {\n return 0;\n }\n return average * ((fertilizer?.Efficiency ?? 100) / 100);\n }\n\n public calculateProductAmountFromPlanBooks(planBooks: INFertilizationPlanBook[] | null): number | undefined {\n if (!planBooks || planBooks.length <= 0) {\n return undefined;\n }\n const amountValues = planBooks.map(planBook => {\n const fieldGeom = this.fieldStore.getFieldGeomById(planBook.FieldGeomId);\n return this.fertilizationManagementService.calculateProductAmountN(\n planBook.ProductId,\n planBook.ApplicationRate,\n fieldGeom?.AreaHa ?? 0,\n planBook.Factor\n );\n });\n const filteredValues = amountValues.filter(x => Number.isFinite(x));\n if (filteredValues.length === 0) {\n return undefined;\n }\n return filteredValues.reduce((prev, current) => prev + current, 0);\n }\n\n public calculateRemainingValue(alreadyApplied: number | null, needValue: number | null): number | null {\n if (!needValue) {\n return null;\n }\n if (!alreadyApplied || alreadyApplied === 0) {\n return needValue - (alreadyApplied ?? 0);\n }\n return needValue - alreadyApplied;\n }\n\n public getNUpTakes(rasterStatistic: IFieldNutrientPlanningStatistic[]): IContentNRelatedPlanBookStatisticValue | null {\n return this._getStatisticValueFromRasterStatistic(rasterStatistic, 0);\n }\n\n public getNApplications(rasterStatistic: IFieldNutrientPlanningStatistic[]): IContentNRelatedPlanBookStatisticValue | null {\n return this._getStatisticValueFromRasterStatistic(rasterStatistic, 1);\n }\n\n public getApplicationRateName(eppoCode: string, ecValue: number, operationMode?: IOperationMode, shortVersion?: boolean): string {\n const application = this.cropApplicationStore.GetApplication(eppoCode, ecValue, operationMode);\n return this.getApplicationRateNameByApplication(application, shortVersion);\n }\n\n public getApplicationRateNameByApplication(application: number, shortVersion?: boolean): string {\n switch (application) {\n case -1:\n return `${this.translationStore.FindTranslationForSelectedLanguage('Global__Scan')}`;\n case 0:\n if (shortVersion) {\n return this.translationStore.FindTranslationForSelectedLanguage('Global__N0');\n } else {\n return `${this.translationStore.FindTranslationForSelectedLanguage('AgriConnect_ApplNum_0')}`;\n }\n case 1:\n if (shortVersion) {\n return this.translationStore.FindTranslationForSelectedLanguage('Global__N1');\n } else {\n return `${this.translationStore.FindTranslationForSelectedLanguage('Global__1st')} ${this.translationStore.FindTranslationForSelectedLanguage('Global__N_ApplNum')}`;\n }\n case 2:\n if (shortVersion) {\n return this.translationStore.FindTranslationForSelectedLanguage('Global__N2');\n } else {\n return `${this.translationStore.FindTranslationForSelectedLanguage('Global__2nd')} ${this.translationStore.FindTranslationForSelectedLanguage('Global__N_ApplNum')}`;\n }\n case 3:\n if (shortVersion) {\n return this.translationStore.FindTranslationForSelectedLanguage('Global__N3');\n } else {\n return `${this.translationStore.FindTranslationForSelectedLanguage('Global__3rd')} ${this.translationStore.FindTranslationForSelectedLanguage('Global__N_ApplNum')}`;\n }\n case 4:\n if (shortVersion) {\n return this.translationStore.FindTranslationForSelectedLanguage('Global__N4');\n } else {\n return `${this.translationStore.FindTranslationForSelectedLanguage('Global__4th')} ${this.translationStore.FindTranslationForSelectedLanguage('Global__N_ApplNum')}`;\n }\n }\n return '';\n }\n\n public getApplicationNScanRateName(): string {\n return `${this.translationStore.FindTranslationForSelectedLanguage('Global__Scan')}`;\n }\n\n /**\n * Extracts N-related content from basic fertilization plan books\n * @param field - Target field for content extraction\n * @param planBooks - Array of basic fertilization plan books\n * @returns Array of N-related content from valid plan books\n * Filters for:\n * - Matching field ID\n * - Non-deleted and booked entries\n * - Products with N content\n * - Dates within campaign year\n */\n private _getBaseFertNRelatedContentFromPlanBooks(field: IField, planBooks: IBasicFertilisationPlanBooks[]): IContentNRelatedPlanBook[] {\n if (!field || !planBooks || planBooks.length <= 0) {\n return [];\n }\n return planBooks.filter(x => x.FieldId === field.Id && !x.DeletedAt && x.BookedAt && x.Product_Id)\n .filter(x => {\n const currentFertilizer = this.fertilizerStore.getFertilizer(x.Product_Id);\n return currentFertilizer?.ContentN && this.campaignYearStore.isDateInSelectedCampaignYear(new Date(x.ApplicationDate));\n })\n .map(planBook => {\n const contentNStatistic = this.baseFertilizationService.calculateNElementByLeadElement(planBook.Product_Id, planBook.Statistic);\n let fertilization: IContentNRelatedPlanBookStatisticValue = null;\n if (contentNStatistic) {\n fertilization = {\n Min: contentNStatistic.Min,\n Max: contentNStatistic.Max,\n Average: contentNStatistic.Average\n };\n }\n const item: IContentNRelatedPlanBook = {\n PlanBookId: planBook.Id,\n FieldId: field.Id,\n OperationModeId: planBook.Operation_Mode?.Id,\n FieldGeomId: planBook.Field_Geom_Id,\n ProductId: planBook.Product_Id,\n CropTypeId: planBook.Croptype_Id,\n EcValue: 0,\n ApplicationDate: new Date(planBook.ApplicationDate),\n NUptake: null,\n NFertilization: fertilization,\n SourceType: ContentNRelatedPlanBookSourceType.BaseFertPlanBook,\n BookedAt: planBook.BookedAt,\n // here it is redundant, but in other places there is a difference between ApplicationDate and PlanBookApplicationDate\n PlanBookApplicationDate: new Date(planBook.ApplicationDate)\n };\n return item;\n });\n }\n\n /**\n * Processes N fertilization values from plan books and logfiles\n * @param field - Target field for value extraction\n * @param planBooks - Array of N fertilization plan books\n * @param logfiles - Array of dataset field mappings\n * @returns Combined array of N-related content from:\n * - Booked logfiles with valid field geometry\n * - Matching plan books with raster statistics\n * - Constant rate operations\n */\n private _getNFertilizationApplicationValues(field: IField, planBooks: INFertilizationPlanBook[], logfiles: IDatasetFieldMap[]): IContentNRelatedPlanBook[] {\n if (!field) {\n return [];\n }\n let bookedLogFiles: IContentNRelatedPlanBook[] = [];\n if (logfiles && logfiles?.length > 0) {\n bookedLogFiles = logfiles\n .filter(logFile => !!field && !!logFile && !logFile.NPlanBook?.DeletedBy && !!logFile.NPlanBook?.BookedBy && logFile.Status === 1 && logFile.FieldGeomId && this.fieldStore.getFieldByFieldGeomId(logFile.FieldGeomId)?.Id === field.Id)\n .map((logFile) => {\n const item: IContentNRelatedPlanBook = {\n PlanBookId: logFile.NPlanBook.Id,\n FieldId: field.Id,\n OperationModeId: logFile.NPlanBook.OperationMode?.Id,\n FieldGeomId: logFile.FieldGeomId,\n ProductId: logFile.NPlanBook.ProductId,\n CropTypeId: logFile.CropType,\n EcValue: logFile.Ec,\n ApplicationDate: new Date(logFile.DataSet.Created),\n NUptake: null,\n NFertilization: null,\n SourceType: ContentNRelatedPlanBookSourceType.LogFilePlanBook,\n BookedAt: logFile.NPlanBook?.BookedAt,\n PlanBookApplicationDate: new Date(logFile.NPlanBook?.ApplicationDate)\n };\n return item;\n });\n }\n\n if (!planBooks || planBooks.length <= 0) {\n return bookedLogFiles;\n }\n\n const result = bookedLogFiles\n .map(contentNPlanBook => contentNPlanBook.PlanBookId)\n .filter((v, i, a) => a.indexOf(v) === i)\n .map((planBookId) => planBooks.find((planBook) => planBook.Id === planBookId))\n .filter((planBook) => !!planBook)\n .map((planBook) => {\n const logFiles = bookedLogFiles.filter((contentNLogFile) => contentNLogFile.PlanBookId === planBook.Id);\n const nUpTake = this.getNUpTakes(planBook.RasterStatistics);\n const nApplications = this.getNApplications(planBook.RasterStatistics);\n const item: IContentNRelatedPlanBook = {\n PlanBookId: planBook.Id,\n FieldId: field.Id,\n OperationModeId: planBook.OperationMode.Id,\n FieldGeomId: planBook.FieldGeomId,\n ProductId: planBook.ProductId,\n CropTypeId: planBook.MainCropId,\n EcValue: logFiles.map((logFile) => logFile.EcValue).Min(),\n ApplicationDate: new Date(logFiles.map((logFile) => logFile.ApplicationDate.valueOf()).Min()),\n NUptake: nUpTake,\n NFertilization: nApplications,\n SourceType: ContentNRelatedPlanBookSourceType.NFertPlanBook,\n BookedAt: planBook.BookedAt,\n PlanBookApplicationDate: new Date(planBook.ApplicationDate)\n };\n return item;\n });\n\n bookedLogFiles.filter((l) => !l.PlanBookId).forEach((l) => {\n result.push(l);\n });\n\n planBooks\n .filter(planBook => !!planBook && planBook.FieldId === field.Id && !!planBook.BookedBy && planBook.OperationMode?.Key === 'Global__RateConst' && !result.map((r) => r.PlanBookId).includes(planBook.Id))\n .forEach(planBook => {\n const nUpTake = this.getNUpTakes(planBook.RasterStatistics);\n const nApplications = this.getNApplications(planBook.RasterStatistics);\n const item: IContentNRelatedPlanBook = {\n PlanBookId: planBook.Id,\n FieldId: field.Id,\n OperationModeId: planBook.OperationMode.Id,\n FieldGeomId: planBook.FieldGeomId,\n ProductId: planBook.ProductId,\n CropTypeId: planBook.MainCropId,\n EcValue: planBook.ECValue,\n ApplicationDate: new Date(planBook.ApplicationDate),\n NUptake: nUpTake,\n NFertilization: nApplications,\n SourceType: ContentNRelatedPlanBookSourceType.NFertPlanBook,\n BookedAt: planBook.BookedAt,\n // here it is redundant, but in other places there is a difference between ApplicationDate and PlanBookApplicationDate\n PlanBookApplicationDate: new Date(planBook.ApplicationDate)\n };\n result.push(item);\n });\n return result;\n }\n\n private _getStatisticValueFromRasterStatistic(rasterStatistic: IFieldNutrientPlanningStatistic[], index: number): IContentNRelatedPlanBookStatisticValue | null {\n if (!rasterStatistic || rasterStatistic.length <= 0 || rasterStatistic.length - 1 < index) {\n return null;\n }\n return this._getStatisticValue(rasterStatistic[index]);\n }\n\n private _getStatisticValue(statistic: {\n Min: number,\n Max: number,\n Mean: number\n } | null | undefined): IContentNRelatedPlanBookStatisticValue | null {\n if (statistic && (statistic.Mean > 0 || statistic.Max > 0 || statistic.Min > 0)) {\n return {\n Min: statistic.Min,\n Max: statistic.Max,\n Average: statistic.Mean\n };\n }\n return null;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FieldNutrientDistributionStore} from '../../stores/nutrients/field-nutrient-distributions.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {UnitsStore} from '../../stores/common/units.store';\n\n@Injectable({providedIn: 'root'})\nexport class SampleMethodService {\n constructor(private fieldNutrientDistributionStore: FieldNutrientDistributionStore,\n private translationStore: TranslationStore,\n private unitsStore: UnitsStore) {\n }\n\n public getUnitWithMethod(method: string, translateMethod: boolean = true): string {\n const sampleMethod = this.fieldNutrientDistributionStore.SampleMethods.Find(e => e.Method === method);\n if (sampleMethod && sampleMethod.Unit) {\n const unit = this.unitsStore.getUnitWithUnit(sampleMethod.Unit);\n return `[${unit.Description}] ${translateMethod ? this.translationStore.FindTranslationForSelectedLanguage(method) : method}`;\n } else {\n return translateMethod ? this.translationStore.FindTranslationForSelectedLanguage(method) : method;\n }\n }\n}\n","import {SoilSampleDates} from '../../stores/nutrients/soilsampledate.store';\nimport {Injectable} from '@angular/core';\nimport IField = Data.FieldManagement.IField;\n\n@Injectable({providedIn: 'root'})\nexport class SoilSampleDateService {\n public getFieldsWithValidSoilSampleDate(fields: IField[], soilSampleDates: SoilSampleDates): IField[] {\n if (!soilSampleDates || !fields || fields.length === 0) {\n return [];\n }\n return fields.filter(x => {\n const sampleDateObject = soilSampleDates[x.Id as string];\n return !!sampleDateObject;\n });\n }\n}\n","import {TranslationStore} from '../../stores/translation/translation.store';\nimport {Injectable} from '@angular/core';\nimport {Create} from 'ts-tooling';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport {GetRoundNumericService} from '../../ap-utils/service/get-round-numeric.service';\n\nexport interface FieldsAreaTitleItem {\n AreaHa: number | undefined;\n Selected: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class StatisticService {\n constructor(private settingsStore: SettingsStore,\n private translationStore: TranslationStore,\n private roundNumericService: GetRoundNumericService) {\n }\n\n public generateFieldsAreaTitle(items: FieldsAreaTitleItem[]): string {\n if (!items || items.length <= 0) {\n return this._generateFieldsAreaMessage(0, 0, 0, 0, 0);\n }\n const totalFieldsCount = items.length;\n const areaSum = this._getAreaSum(items);\n const selectedItems = items.filter(x => x.Selected);\n if (selectedItems.length > items.length) {\n return this._generateFieldsAreaMessage(totalFieldsCount, totalFieldsCount, areaSum, areaSum, 100);\n }\n const selectedFieldsCount = selectedItems.length;\n const percentBetweenFields = (selectedFieldsCount / totalFieldsCount) * 100;\n const selectedAreaSum = this._getAreaSum(selectedItems);\n return this._generateFieldsAreaMessage(totalFieldsCount, selectedFieldsCount, areaSum, selectedAreaSum, percentBetweenFields);\n }\n\n private _generateFieldsAreaMessage(total: number, selected: number,\n totalArea: number, selectedArea: number, percents: number): string {\n const globalFields = this.translationStore.FindTranslationForSelectedLanguage('Global__Fields');\n const globalHaUnit = this.translationStore.FindTranslationForSelectedLanguage('Global__ha_Unit');\n const digitsAfterDecimalPoint = this.settingsStore.FirstSetting.DigitsAfterDecimalPoint;\n const roundedTotal = this.roundNumericService.round(totalArea, digitsAfterDecimalPoint);\n const roundedSelected = this.roundNumericService.round(selectedArea, digitsAfterDecimalPoint);\n return `${selected} / ${total} ${globalFields} | ${roundedSelected} / ${roundedTotal} ${globalHaUnit} | ${Math.round(percents)} %`;\n }\n\n private _getAreaSum(items: FieldsAreaTitleItem[]): number {\n return items.Reduce((target, e) => Create(e.AreaHa, 0) + target, 0);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport IUnit = Data.Common.IUnit;\n\n@Injectable({providedIn: 'root'})\nexport class UnitService {\n constructor(private translationService: ApTranslationService) {\n }\n\n public getUnitWithLabelKey(unit: IUnit | null, labelKey: string, perHa: boolean = true, useDefaultUnit: boolean = true): string {\n const fertilizerUnitName = this._getUnitTranslation(unit, perHa, useDefaultUnit);\n const translatedLableKey = this.translationService.translate(labelKey);\n if (fertilizerUnitName) {\n return `${translatedLableKey} [${fertilizerUnitName}]`;\n }\n return `${translatedLableKey}`;\n }\n\n private _getUnitTranslation(unit: IUnit | null, perHa = false, defaultUnit: boolean = true): string {\n let unitValue: string;\n if (unit) {\n const unitKey = unit.BaseUnit ? unit.BaseUnit.Key : unit.Key;\n unitValue = this.translationService.translate(unitKey);\n } else {\n if (defaultUnit) {\n unitValue = this.translationService.translate('Global__Unit_kg');\n } else {\n return '';\n }\n }\n if (perHa) {\n return `${unitValue}/${this.translationService.translate('Global__Unit_ha')}`;\n } else {\n return unitValue;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoveUrlParamsService {\n\n constructor() {\n }\n\n removeUrlParams(url: string): string {\n return url.Split('?')[0];\n }\n}\n","import {Injectable} from '@angular/core';\nimport {StringFactory} from 'ts-tooling';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UrlEncoderService {\n\n private static _encode(value: string): string {\n return encodeURIComponent(btoa(value));\n }\n\n private static _decode(value: string): string {\n return atob(decodeURIComponent(value));\n }\n\n encode(queryParams: any): any {\n let paramStr = '';\n if (!queryParams || Object.keys(queryParams).length < 1) {\n return {};\n }\n for (const param of Object.keys(queryParams)) {\n if (StringFactory.IsNullOrEmpty(queryParams[param])) {\n continue;\n }\n if (paramStr.length > 0) {\n paramStr += '&';\n }\n paramStr += `${param}=${queryParams[param]}`;\n }\n return StringFactory.IsNullOrEmpty(paramStr) ? {} : {params: UrlEncoderService._encode(paramStr)};\n }\n\n decode(queryParams: any): any {\n if (!queryParams.params) {\n return queryParams;\n }\n const result = {};\n for (const p of UrlEncoderService._decode(queryParams.params).Split('&')) {\n const [key, value] = p.Split('=');\n result[key] = value;\n }\n return result;\n }\n}\n","import {RouterModule, Routes} from '@angular/router';\nimport {NgModule} from '@angular/core';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class ApStatisticsRoutes {\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {Create} from 'ts-tooling';\n\n@Pipe({\n name: 'nutrientStatsFields',\n})\nexport class NutrientStatsFieldsPipe implements PipeTransform {\n constructor(private fieldStore: FieldStore) {\n }\n\n transform(series: any, ...args: any[]): string {\n if (args.length < 1) {\n return '';\n }\n const category = args[0];\n const fieldNames: string[] = [];\n const values: { [key: string]: number } = {};\n let area = 0;\n for (const item of series.data.FindAll(e => e.category === category)) {\n for (const field of item.fields) {\n const geom = this.fieldStore.getCurrentFieldGeom(field);\n if (!fieldNames.Contains(field.Id)) {\n fieldNames.Add(field.Id);\n area += Create(geom?.AreaHa, 0);\n values[field.Id] = 0 + item.value;\n continue;\n }\n values[field.Id] += item.value;\n }\n }\n\n return fieldNames\n .Convert(item => this.fieldStore.getFieldName(this.fieldStore.getFieldById(item)))\n .Join(', ');\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {SimpleValue, SimpleValueSet} from '../charts/nutrients.stats.component';\n\n@Pipe({\n name: 'joinPropertyValue',\n})\nexport class JoinPropertyValuePipePipe implements PipeTransform {\n transform(value: SimpleValueSet, ...args: [(v: SimpleValue) => string]): string {\n if (!value || !args[0]) {\n return '';\n }\n return value.Convert(e => args[0](e)).Join(', ');\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {SimpleValue, SimpleValueSet} from '../charts/nutrients.stats.component';\nimport {GetRoundNumericService} from '../../../ap-utils/service/get-round-numeric.service';\n\n@Component({\n selector: 'nutrient-infos-view',\n template: `\n
\n
\n \n {{[item[0]] | joinPropertyValue:idParser | translate}}\n \n
\n
\n \n {{item | joinPropertyValue:categoryParser | translate}}\n \n
\n
\n `,\n styles: [\n `\n div.row {\n display: flex;\n }\n `,\n `\n div.head {\n padding: 5px;\n background-color: silver;\n font-weight: bold;\n width: calc(20% - 13px);\n }\n `,\n `\n div.data {\n padding: 5px;\n width: calc(80% - 13px);\n }\n `,\n ]\n})\nexport class NutrientInfosViewComponent {\n @Input()\n maxRows = 0;\n @Input()\n rowNum = 0;\n @Input()\n item: SimpleValueSet;\n\n constructor(private roundNumericService: GetRoundNumericService) {\n }\n\n idParser = (e: SimpleValue) => e?.id;\n categoryParser = (e: SimpleValue) => `${e?.category} (${this.roundNumericService.round(e.value, 2)} ha)`;\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {FieldSoilPlanningYear, SimpleValueSet} from '../charts/nutrients.stats.component';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {Create} from 'ts-tooling';\n\n@Pipe({\n name: 'fieldSoilPlanningYearToSimpleValueSet',\n})\nexport class FieldSoilPlanningYearToSimpleValueSetPipe implements PipeTransform {\n constructor(private fieldStore: FieldStore) {\n }\n\n transform(value: FieldSoilPlanningYear, ...args: any[]): SimpleValueSet {\n const result: SimpleValueSet = [];\n const field = this.fieldStore.getFieldById(value.fieldId);\n const geom = this.fieldStore.getCurrentFieldGeom(field);\n for (const year of value.dates) {\n result.Add({\n id: this.fieldStore.getFieldName(field),\n category: year.date,\n value: Create(geom?.AreaHa, 0) * year.percent / 100,\n meta: null,\n color: '',\n });\n }\n return result;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApStatisticsRoutes} from './ap-statistics.routes';\nimport {ApStatisticsComponent} from './components/ap-statistics.component';\nimport {ApBoxPlotChartComponent} from './components/charts/ap-box-plot-chart.component';\nimport {ChartsModule} from '@progress/kendo-angular-charts';\nimport {ApTranslationModule} from '../translation/ap-translation.module';\nimport {ApBarLineAreaChartComponent} from './components/charts/ap-bar-line-area-chart.component';\nimport {DropDownsModule} from '@progress/kendo-angular-dropdowns';\nimport {ApDonutPieChartComponent} from './components/charts/ap-donut-pie-chart.component';\nimport 'hammerjs';\nimport {ApBoxPlotChartPipe} from './components/pipes/ap-box-plot-chart.pipe';\nimport {ApDonutPieChartPipe} from './components/pipes/ap-donut-pie-chart.pipe';\nimport {ApUtilsModule} from '../ap-utils';\nimport {DropDownButtonModule} from '@progress/kendo-angular-buttons';\nimport {ApBarLineAreaChartPipe} from './components/pipes/ap-bar-line-area-chart.pipe';\nimport {ApMainSecondCropChartComponent} from './components/charts/ap-main-second-crop-chart.component';\nimport {ApDatetimeSelectionChartComponent} from './components/charts/ap-datetime-selection-chart.component';\nimport {AgriportStoreModule} from '../stores/stores.module';\nimport {HistogramComponent} from './components/charts/histogram.component';\nimport {GetDataKeysPipe} from './components/pipes/get-data-keys.pipe';\nimport {DynamicChartHeightPipe} from './components/pipes/dynamic-chart-height.pipe';\nimport {ApLineChartComponent} from './components/charts/ap-line-chart.component';\nimport {NutrientsStatsComponent} from './components/charts/nutrients.stats.component';\nimport {NutrientStatsFieldsPipe} from './components/pipes/nutrient-stats-fields.pipe';\nimport {NutrientInfosViewComponent} from './components/views/nutrient-infos-view.component';\nimport {JoinPropertyValuePipePipe} from './components/pipes/join-property-value.pipe';\nimport {StatisticChartAreaService} from './services/statistic-chart-area.service';\nimport {ApResponsiveTextModule} from '../ap-responsive-text/ap-responsive-text.module';\nimport {\n FieldSoilPlanningYearToSimpleValueSetPipe\n} from './components/pipes/field-soil-planning-year-to-simple-value-set.pipe';\nimport {PlanningStatsComponent} from './components/charts/planning.stats.component';\nimport {ApGenericBarChartComponent} from './components/charts/ap-generic-bar-chart.component';\nimport {ApBaseFertOverviewStatsComponent} from './components/charts/ap-base-fert-overview-stats.component';\nimport {ApDynComponentModule} from '../ap-dyncomponent/ap-dyncomponent.module';\nimport {\n ApNFertilizationNNeedStatsComponent\n} from './components/charts/n-fertilization-n-need-stats/n-fertilization-n-need-stats.component';\nimport {\n ApPlanningWizardOverviewStatsComponent\n} from './components/charts/planning-wizard-overview-stats/ap-planning-wizard-overview-stats.component';\nimport {\n ApFieldsCropRotationStatsComponent\n} from './components/charts/fields-crop-rotation-stats/fields-crop-rotation-stats.component';\nimport {ApDashboardStatsComponent} from './components/charts/dashboard-stats/dashboard-stats.component';\nimport {ApCoreModule} from '../ap-core/ap-core.module';\nimport {InfoRowViewComponent} from './components/views/info-row-view.component';\nimport {InfoViewStylePipe} from './components/pipes/info-view-style.pipe';\nimport {\n ApDottedHistogramChartComponent\n} from './components/charts/ap-dotted-histogram-chart/ap-dotted-histogram-chart.component';\nimport {\n ApNFertilizationLogfileStatsComponent\n} from './components/charts/n-fertilization-logfile-stats/n-fertilization-logfile-stats.component';\nimport {ApGenericChartComponent} from './components/charts/ap-generic-chart.component';\nimport {\n ApFieldsNdiStatsComponent\n} from './components/charts/fields-ndi-stats/fields-ndi-stats.component';\nimport {\n ApFieldScanDataTableStatsComponent\n} from './components/charts/field-scan-data-table-stats/ap-field-scan-data-table-stats.component';\nimport {\n ApPpPlanningWizardOverviewStatsComponent\n} from './components/charts/plant-protection/ap-pp-planning-wizard-overview-stats.component';\n\n@NgModule({\n declarations: [\n ApStatisticsComponent,\n ApBoxPlotChartComponent,\n ApBarLineAreaChartComponent,\n ApDonutPieChartComponent,\n ApBoxPlotChartPipe,\n ApDonutPieChartPipe,\n ApBarLineAreaChartPipe,\n NutrientStatsFieldsPipe,\n ApMainSecondCropChartComponent,\n ApDatetimeSelectionChartComponent,\n HistogramComponent,\n GetDataKeysPipe,\n DynamicChartHeightPipe,\n ApLineChartComponent,\n ApDottedHistogramChartComponent,\n NutrientsStatsComponent,\n NutrientInfosViewComponent,\n JoinPropertyValuePipePipe,\n InfoViewStylePipe,\n FieldSoilPlanningYearToSimpleValueSetPipe,\n PlanningStatsComponent,\n ApGenericBarChartComponent,\n ApBaseFertOverviewStatsComponent,\n ApFieldScanDataTableStatsComponent,\n ApPlanningWizardOverviewStatsComponent,\n ApNFertilizationNNeedStatsComponent,\n ApFieldsCropRotationStatsComponent,\n ApDashboardStatsComponent,\n ApNFertilizationLogfileStatsComponent,\n InfoRowViewComponent,\n ApGenericChartComponent,\n ApFieldsNdiStatsComponent,\n ApPpPlanningWizardOverviewStatsComponent\n ],\n providers: [\n StatisticChartAreaService,\n ],\n exports: [\n ApStatisticsComponent,\n ApBoxPlotChartComponent,\n ApBarLineAreaChartComponent,\n ApDonutPieChartComponent,\n ApMainSecondCropChartComponent,\n ApDatetimeSelectionChartComponent,\n ApLineChartComponent,\n ApDottedHistogramChartComponent,\n NutrientsStatsComponent,\n PlanningStatsComponent,\n ApGenericBarChartComponent,\n ApBaseFertOverviewStatsComponent,\n ApFieldScanDataTableStatsComponent,\n ApPlanningWizardOverviewStatsComponent,\n ApNFertilizationNNeedStatsComponent,\n ApFieldsCropRotationStatsComponent,\n ApDashboardStatsComponent,\n HistogramComponent,\n ApGenericChartComponent,\n ApFieldsNdiStatsComponent,\n ApPpPlanningWizardOverviewStatsComponent\n ],\n imports: [\n ApStatisticsRoutes,\n CommonModule,\n ChartsModule,\n ApTranslationModule,\n DropDownsModule,\n DropDownButtonModule,\n ApUtilsModule,\n AgriportStoreModule,\n ApResponsiveTextModule,\n ApDynComponentModule,\n ApCoreModule\n ],\n})\nexport class ApStatisticsModule {\n}\n","import {CategoryBaseUnit, SeriesType} from '@progress/kendo-angular-charts';\n\n/**\n * Generic chart configuration\n */\nexport class GenericChartConfig {\n /**\n * there can be multiple data series per chart. Each series might have a different color and type (line, column etc.)\n */\n seriesConfigs: Array = [];\n title = '';\n zoomable = true;\n transitions = false;\n pannable = true;\n tooltipDelegate?: (item: any, chart: GenericChartConfig) => string;\n noteDelegate?: (item: any, chart: GenericChartConfig) => string;\n noteField?: string;\n xAxisConfig = new GenericXAxisConfig();\n yAxisConfigs: GenericYAxisConfig[] = [];\n paddingLeftRight = 0;\n /**\n * Aligns the additional value axis to the left or right.\n * Example from telerik:\n * https://www.telerik.com/kendo-angular-ui/components/charts/elements/axes\n * Align the first two value axes to the left\n * and the last two to the right.\n *\n * Right alignment is done by specifying a\n * crossing value greater than or equal to\n * the number of categories.\n * public crossingValues: number[] = [0, 0, 10, 10];\n */\n axisCrossingValue: number[] = [];\n}\n\n/**\n * Generic chart's x-axis configuration.\n * This axis is also called category-axis and there is only 1 instance allowed.\n */\nexport class GenericXAxisConfig {\n title: string;\n type: 'category' | 'date';\n baseUnit: CategoryBaseUnit;\n min: number;\n max: number;\n categories: string[];\n labelDelegate?: (value: string, dataItem: GenericSeriesData, chartConfig: GenericChartConfig) => string;\n}\n\n/**\n * The configuration of y-/value axis.\n * Each chart may have multiple value axis.\n * Ref.: https://www.telerik.com/kendo-angular-ui/components/charts/elements/axes\n */\nexport class GenericYAxisConfig {\n id: string;\n title: string;\n type: 'log' | 'numeric';\n min: number;\n max: number;\n labelDelegate?: (value: number) => string;\n}\n\n/**\n * Generic chart's data series configuration.\n * This actually configures the series appearance and holds the series values\n */\nexport class GenericSeriesConfig {\n id: string;\n axisId: string;\n seriesData: Array = [];\n name: string;\n type: SeriesType = 'line';\n color: string;\n visible = true;\n hideLegend = false;\n markerVisible = true;\n lineWidth: number = undefined;\n style: 'normal' | 'step' | 'smooth' = 'smooth';\n}\n\n/**\n * The actual series data object.\n * It contains of the x and y value and an additionalValue (might be a json)\n * which might be necessary when showing more detailed information in a tooltip.\n */\nexport class GenericSeriesData {\n xValue: number | string;\n yValue: number;\n additionalData: string;\n note: string;\n}\n","export enum FieldCropRotationPriority {\n MainCrop = 0,\n SecondCrop = 1\n}\n\nexport type FieldsCropRotationStatsData = {\n CropPriority: FieldCropRotationPriority;\n CropTypesPerYear: IFieldsCropRotationPerYear;\n};\n\nexport type IFieldsCropRotationPerYear = {\n [year: number]: IFieldsCropRotationAggregated[];\n};\n\nexport type IFieldsCropRotationAggregated = {\n CropTypeName: string;\n Color: string;\n AreaHa: number;\n};\n\nexport type IFieldsCropRotationTableData = {\n CropTypeName: string;\n CropYearArea: { [key: number]: number };\n};\n\nexport type FieldCropRotationPrioritySelection = {\n Text: string;\n Value: FieldCropRotationPriority;\n};\n\nexport type ChartBarItemValue = {\n Name: string;\n Color: string;\n Data: BarDataType[];\n};\n\nexport type BarDataType = {\n Percent: number;\n AreaHa: number;\n};\n\nexport type CropTableData = {\n FieldCropsData: IFieldsCropRotationTableData[];\n ChartBarData: ChartBarItemValue[];\n};\n","
\n \n
\n

{{emptyMessage | translate}}

\n
\n
\n 0\">\n
\n \n
\n\n

{{title}}

\n\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n {{value | getRoundNumeric:chartP?.decimalPlaces}} ha\n (ca.{{value * 100 / chartP?.meta?.areaSum | getRoundNumeric:0}} %)\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 {{value | getRoundNumeric:chartMg?.decimalPlaces}} ha\n (ca.{{value * 100 / chartMg?.meta?.areaSum | getRoundNumeric:0}} %)\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 {{value | getRoundNumeric:chartK?.decimalPlaces}} ha\n (ca.{{value * 100 / chartK?.meta?.areaSum | getRoundNumeric:0}} %)\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 {{value | getRoundNumeric:chartPh?.decimalPlaces}} ha\n (ca.{{value * 100 / chartPh?.meta?.areaSum | getRoundNumeric:0}} %)\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 {{series | nutrientStatsFields:category}}\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 \n \n \n \n {{value | getRoundNumeric:2}} ha (ca.{{value * 100 / chartP?.meta?.areaSum | getRoundNumeric:0}} %)\n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n
\n\n
\n \n \n \n
\n\n
\n
\n","import {AfterContentInit, Component, Input, OnDestroy} from '@angular/core';\nimport {IChartSet} from '../../../stores/statistic/statistic.store';\nimport {TranslationStore} from '../../../stores/translation/translation.store';\nimport {Border} from '@progress/kendo-angular-charts';\nimport {StatisticChartAreaService} from '../../services/statistic-chart-area.service';\nimport {map} from 'rxjs/operators';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {ObjectFactory} from 'ts-tooling';\nimport {IBarLineAreaChartData} from '../../../ap-interface';\nimport IGuid = System.IGuid;\n\nexport type SimpleValue = { id: string, value: number, category: string, color: string, meta: any };\nexport type SimpleValueSet = SimpleValue[];\nexport type FieldSoilPlanningYear = { fieldId: IGuid, dates: { date: string, percent: number }[] };\n\n@Component({\n selector: 'ap-nutrients-stats',\n templateUrl: 'nutrients.stats.component.html',\n})\nexport class NutrientsStatsComponent implements AfterContentInit, OnDestroy {\n @Input()\n data: IChartSet[];\n @Input()\n title: string;\n @Input()\n emptyMessage = '';\n @Input()\n decimalPlaces = 2;\n public groups: { id: string, name: string }[] = [];\n public filteredGroups: { id: string, name: string }[] = [];\n public selectedGroup: { id: string, name: string } = {id: '', name: ''};\n public chartP: IChartSet = null;\n public chartK: IChartSet = null;\n public chartMg: IChartSet = null;\n public chartPh: IChartSet = null;\n public sampleDate: { value: number, category: string, color: string, fieldIds: IGuid[], years: string[] }[] = [];\n public fieldSoilPlanningYear: FieldSoilPlanningYear[] = [];\n public soilGroup: SimpleValueSet = [];\n public soilGroupCategories: string[] = ['1', '2', '3', '4', '5', '6'];\n public soilGroupMin = 0;\n public soilGroupMax = 1;\n public infos: SimpleValueSet[] = [];\n public backgroundColor = '#ffffffbf';\n public strokeColor = '#212529';\n public borderNone: Border = {\n color: this.strokeColor,\n dashType: 'solid',\n width: 0,\n };\n public border: Border = {\n color: this.strokeColor,\n dashType: 'solid',\n width: 1,\n };\n // scale the chart height and takes the minimum height of 120px\n public chartHeight = this.statisticChartAreaService.chartAreaHeight.pipe(\n map(v => v - 105 < 120 ? 120 : v - 105),\n );\n public chartHeightNoTitleHalf = this.statisticChartAreaService.chartAreaHeight.pipe(\n map(v => (v - 50) / 2 < 120 ? 120 : (v - 50) / 2),\n );\n public chartHeight4X4 = this.statisticChartAreaService.chartAreaHeight.pipe(\n map(v => (v / 2) - 52.5 < 120 ? 120 : (v / 2) - 52.5),\n );\n // scale the chart width and use the full width available\n public chartWidth = this.statisticChartAreaService.chartAreaWidth.pipe(\n map(v => v),\n );\n public chartWidthHalf = this.statisticChartAreaService.chartAreaWidth.pipe(\n map(v => v / 2),\n );\n\n constructor(private translationStore: TranslationStore,\n public statisticChartAreaService: StatisticChartAreaService,\n private fieldStore: FieldStore) {\n }\n\n ngAfterContentInit(): void {\n this.readData(this.data);\n }\n\n ngOnDestroy(): void {\n\n }\n\n filterChange(filter: any): void {\n this.filteredGroups = this.groups.FindAll(e => this.translationStore\n .FindTranslationForSelectedLanguage(e.id).Contains(filter));\n }\n\n onSelectionChange(item: { id: string, name: string }): void {\n if (!item) {\n return;\n }\n this.selectedGroup = item;\n }\n\n labelContentSamplingYear = (e: any): string => e.dataItem.years\n .FindAll((el: any) => el.category === e.dataItem.category)\n .Convert((el: any) => el.date)\n .Unique()\n .Join('\\n')\n\n private readData(d: IChartSet[]): void {\n this.groups.Clear();\n\n if (!d.Any()) {\n return;\n }\n\n this.groups.Add({\n id: '1',\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__Nutrient_Classes')\n });\n /*this.groups.Add({\n id: '2',\n name: this.translationStore.FindTranslationForSelectedLanguage('Nutrient__Band_SoilPlanningYear')\n });*/\n this.groups.Add({id: '3', name: this.translationStore.FindTranslationForSelectedLanguage('Nutrients__Soilgroups')});\n this.groups.Add({\n id: '4',\n name: this.translationStore.FindTranslationForSelectedLanguage('Global__More_Informations')\n });\n this.filterChange('');\n\n const dc = ObjectFactory.Copy(d);\n this.chartP = this.processClassData(dc, 'Nutrient__Band_ClassP');\n this.chartK = this.processClassData(dc, 'Nutrient__Band_ClassK');\n this.chartMg = this.processClassData(dc, 'Nutrient__Band_ClassMg');\n this.chartPh = this.processClassData(dc, 'Nutrient__Band_ClassPh');\n\n this.processSampleYearData(dc);\n\n this.soilGroup = this.processSimpleValueSetData(dc, 'Nutrient__Band_SoilGroup');\n // for some reason the kendo bar chart skips categories without any data object\n // => therefore we have to add dummy data objects for the missing soil groups\n for (const soilGroupCategory of this.soilGroupCategories) {\n if (!this.soilGroup.some(s => s.category === soilGroupCategory)) {\n this.soilGroup.Add({value: 0, category: soilGroupCategory, id: '', color: '', meta: undefined});\n }\n }\n this.soilGroup = this.soilGroup.sort((a, b) => a.category?.localeCompare(b.category));\n this.soilGroupMax = this.soilGroup.Convert((e: any) => e.value).Sum();\n this.infos.Clear();\n this.infos.Add(this.processSimpleValueSetData(dc, 'Nutrient__Band_TypeOfUse', 'Nutrients__Landuse'));\n this.infos.Add(this.processSimpleValueSetData(dc, 'Nutrient__Band_Region', 'Nutrients_Pages_Popups__Region'));\n this.infos.Add(this.processSimpleValueSetData(dc, 'Nutrient__Band_MethodP', 'Nutrient__Band_MethodP'));\n this.infos.Add(this.processSimpleValueSetData(dc, 'Nutrient__Band_MethodK', 'Nutrient__Band_MethodK'));\n this.infos.Add(this.processSimpleValueSetData(dc, 'Nutrient__Band_MethodMg', 'Nutrient__Band_MethodMg'));\n this.infos.Add(this.processSimpleValueSetData(dc, 'Nutrient__Band_MethodPh', 'Nutrient__Band_MethodPh'));\n\n if (!this.selectedGroup?.id) {\n this.selectedGroup = this.groups.FirstOrDefault() ?? {id: '', name: ''};\n }\n }\n\n private processClassData(d: IChartSet[], title: string): IChartSet {\n if (d === null || d === undefined) {\n return null;\n }\n let result: IChartSet = null;\n for (const dataset of d.FindAll(e => e.data?.title === title)) {\n if (!result) {\n result = this.getChartCopy(dataset);\n continue;\n }\n if (result.axes.maxX < dataset.axes.maxX) {\n result.axes.maxX = dataset.axes.maxX;\n }\n for (let i = 0, l = result.data.data.length; i < l; i++) {\n result.data.data[i].value += dataset.data.data[i] ? dataset.data.data[i].value || 0 : 0;\n }\n }\n return result;\n }\n\n private processSampleYearData(d: IChartSet[]): void {\n this.sampleDate = [];\n if (!d || d?.length < 1) {\n return;\n }\n this.fieldSoilPlanningYear = d[0]?.meta?.fieldYears?.Copy();\n this.fieldSoilPlanningYear?.sort((a, b) => this.fieldStore.getFieldNameById(a.fieldId)\n .localeCompare(this.fieldStore.getFieldNameById(b.fieldId)));\n for (const dataset of d.FindAll(e => e.data?.title === 'Nutrient__Band_SoilPlanningYear')) {\n for (let i = 0, l = dataset.data.categories.length; i < l; i++) {\n const found = this.sampleDate.Find(e => e.category === dataset.data.categories[i]);\n if (found) {\n found.fieldIds.Add(dataset.meta.fieldId);\n found.value += dataset.data.data[i].value;\n continue;\n }\n this.sampleDate.Add({\n category: dataset.data.categories[i],\n value: dataset.data.data[i].value,\n color: dataset.color(dataset.data.categories[i]),\n fieldIds: [dataset.meta.fieldId],\n years: dataset.meta.years,\n });\n }\n }\n }\n\n private processSimpleValueSetData(d: IChartSet[], title: string, id?: string): SimpleValueSet {\n const result = [];\n const filteredSets = d.FindAll(e => e.data?.title === title);\n const tmp: { [key: string]: { value: number, color: string } } = {};\n for (const item of filteredSets) {\n for (const key in item.data.categories) {\n if (!item.data.categories.hasOwnProperty(key)) {\n continue;\n }\n const category = item.data.categories[key];\n if (!tmp[category]) {\n tmp[category] = {\n value: item.data.data[key].value,\n color: item.color(category),\n };\n continue;\n }\n tmp[category].value += item.data.data[key].value;\n }\n }\n\n for (const key in tmp) {\n if (!tmp.hasOwnProperty(key)) {\n continue;\n }\n result.Add({\n id: id || '',\n value: tmp[key].value,\n category: key,\n color: tmp[key].color,\n meta: {\n areaSum: filteredSets[0].meta.areaSum,\n },\n });\n }\n\n const allValues = result.Convert((e: any) => e.value).Sum();\n if (allValues !== 0) {\n for (const item of result) {\n item.value = (item.value * 100 / allValues) * filteredSets[0].meta.areaSum / 100;\n }\n }\n return result;\n }\n\n private getChartCopy(dataset: IChartSet): IChartSet {\n if (!dataset) {\n return null;\n }\n return {\n valueType: dataset.valueType,\n axes: dataset.axes,\n decimalPlaces: dataset.decimalPlaces,\n meta: dataset.meta,\n step: dataset.step,\n noteField: dataset.noteField,\n color: dataset.color,\n visual: dataset.visual,\n tooltipDelegate: dataset.tooltipDelegate,\n noteDelegate: dataset.noteDelegate,\n data: {\n title: dataset.data?.title,\n name: dataset.data?.name,\n categories: dataset.data?.categories,\n data: [\n { value: dataset.data?.data[0]?.value ?? 0 },\n { value: dataset.data?.data[1]?.value ?? 0 },\n { value: dataset.data?.data[2]?.value ?? 0 },\n { value: dataset.data?.data[3]?.value ?? 0 },\n { value: dataset.data?.data[4]?.value ?? 0 },\n { value: dataset.data?.data[5]?.value ?? 0 },\n { value: dataset.data?.data[6]?.value ?? 0 },\n { value: dataset.data?.data[7]?.value ?? 0 },\n { value: dataset.data?.data[8]?.value ?? 0 }\n ]\n } as IBarLineAreaChartData\n } as IChartSet;\n }\n}\n","export interface IPlanningWizardOverviewStatsItem {\n Module: PlanningWizardOverviewModuleStats;\n OperationModeKey: string;\n NContent: number;\n Area: number;\n Min: number;\n Max: number;\n Average: number;\n ProductId?: number;\n}\n\nexport interface IPlanningWizardOverviewStatsTableData {\n OperationModeName: string;\n FieldsSum: number;\n AreaSum: number;\n ProductAmountSum: number;\n ProductMin: number;\n ProductMax: number;\n ProductAverage: number;\n Average: number;\n}\n\nexport enum PlanningWizardOverviewModuleStats {\n BaseFertilization = 0,\n NFertilization = 1,\n PlantProtection = 2\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'infoViewStyle',\n})\nexport class InfoViewStylePipe implements PipeTransform {\n transform(rowNum: number, ...args: [string, number]): any {\n const maxRows = args[1] - 1 || 0;\n switch (args[0]) {\n case 'row':\n const rowStyle = {\n 'margin-left': '5px',\n 'margin-right': '5px',\n };\n if (rowNum >= maxRows) {\n rowStyle['margin-bottom'] = '5px';\n return rowStyle;\n }\n if (rowNum === 0) {\n rowStyle['margin-top'] = '5px';\n return rowStyle;\n }\n return rowStyle;\n case 'head':\n const headStyle = {\n 'border-left': '1px solid rgba(0, 0, 0, 0.3)',\n 'border-bottom': '1px solid rgba(0, 0, 0, 0.3)',\n };\n if (rowNum === 0) {\n headStyle['border-top'] = '1px solid rgba(0, 0, 0, 0.3)';\n return headStyle;\n }\n return headStyle;\n case 'data':\n const dataStyle = {\n 'border-left': '1px solid rgba(0, 0, 0, 0.3)',\n 'border-right': '1px solid rgba(0, 0, 0, 0.3)',\n 'border-bottom': '1px solid rgba(0, 0, 0, 0.3)',\n };\n if (rowNum === 0) {\n dataStyle['border-top'] = '1px solid rgba(0, 0, 0, 0.3)';\n return dataStyle;\n }\n return dataStyle;\n default:\n return undefined;\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable()\nexport class StatisticChartAreaService {\n private _chartAreaWidth = new BehaviorSubject(0);\n private _chartAreaHeight = new BehaviorSubject(0);\n\n get chartAreaHeight(): BehaviorSubject {\n return this._chartAreaHeight;\n }\n\n get chartAreaWidth(): BehaviorSubject {\n return this._chartAreaWidth;\n }\n\n updateChartWidth(num: number): void {\n this._chartAreaWidth.next(num);\n }\n\n updateChartHeight(num: number): void {\n this._chartAreaHeight.next(num);\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IResultMessage = Invoker.IResultMessage;\n\nexport enum ApJobsActions {\n JOBS_LOAD = '[jobs] load',\n JOBS_LOAD_SUCCESS = '[jobs] load success',\n JOBS_FARM_LOAD = '[jobs] load farm',\n JOBS_FARM_LOAD_SUCCESS = '[jobs] load farm success',\n JOBS_FARM_LOAD_ALL = '[jobs] load farm all',\n JOBS_FARM_LOAD_ALL_SUCCESS = '[jobs] load farm all success',\n JOBS_CHANGE = '[jobs] change',\n}\n\nexport class JobsLoad implements IAction {\n readonly type = ApJobsActions.JOBS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class JobsLoadSuccess implements IAction {\n readonly type = ApJobsActions.JOBS_LOAD_SUCCESS;\n\n constructor(public payload: IResultMessage[]) {\n }\n}\n\nexport class JobsFarmLoad implements IAction {\n readonly type = ApJobsActions.JOBS_FARM_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class JobsFarmLoadSuccess implements IAction {\n readonly type = ApJobsActions.JOBS_FARM_LOAD_SUCCESS;\n\n constructor(public payload: IResultMessage) {\n }\n}\n\nexport class JobsAllFarmLoad implements IAction {\n readonly type = ApJobsActions.JOBS_FARM_LOAD_ALL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class JobsAllFarmLoadSuccess implements IAction {\n readonly type = ApJobsActions.JOBS_FARM_LOAD_ALL_SUCCESS;\n\n constructor(public payload: IResultMessage) {\n }\n}\n\nexport class JobsChange implements IAction {\n readonly type = ApJobsActions.JOBS_CHANGE;\n\n constructor(public payload: IResultMessage) {\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {IStateStore} from '../../ap-interface';\nimport {JobsChange, JobsLoadSuccess, NetTypes} from 'invoker-transport';\nimport {\n JobsAllFarmLoad,\n JobsAllFarmLoadSuccess,\n JobsFarmLoad,\n JobsFarmLoadSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/administration';\nimport {DateTime, SafeBehaviorSubject} from 'ts-tooling';\nimport {debounceTime, distinct, map} from 'rxjs/operators';\nimport {FieldStore} from '../farm/field.store';\nimport {Observable} from 'rxjs';\nimport {\n SoilSampleFieldStore\n} from '../evaluation/soilsample.field.store';\nimport IJobs = Data.Job.IJobs;\nimport IJobsChanges = Data.Job.IJobsChanges;\nimport DatabaseNotifyOperation = Agriport.Invoker.Api.Database.DatabaseNotifyOperation;\nimport JobStatus = Data.Job.JobStatus;\nimport IField = Data.FieldManagement.IField;\nimport ISoilSampleField = Data.Nutrients.ISoilSampleField;\nimport {ApMapInstance} from '../../ap-map';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\nexport const BU_JOB_NAME = 'REFRESH_BU_RASTER';\nexport const WSV_JOB_NAME = 'REFRESH_WSV_RASTER';\nexport const CE_JOB_NAME = 'REFRESH_CE_RASTER';\nexport const IR_JOB_NAME = 'REFRESH_IR_RASTER';\nexport const RB_JOB_NAME = 'RB_RASTER';\nexport const FIELD_RASTER_JOB_NAME = 'FIELD_RASTER';\nexport const N_PLANNING_JOB_NAME = 'N_PLANNING';\nexport const N_PLANNING_RASTER_JOB_NAME = 'N_PLANNING_RASTER';\nexport const N_TRANSFORM_JOB_NAME = 'N_TRANSFORM';\n\nconst JOB_DEBOUNCE_MS = 100;\nconst BU_WSV_JOB_NAMES = [BU_JOB_NAME, WSV_JOB_NAME];\nconst N_PLANNING_JOB_NAMES = [N_PLANNING_JOB_NAME, N_PLANNING_RASTER_JOB_NAME, N_TRANSFORM_JOB_NAME];\nconst BU_WSV_CE_IR_RUNNING_JOB_NAMES = [BU_JOB_NAME, WSV_JOB_NAME, CE_JOB_NAME, IR_JOB_NAME];\nconst RB_REFRESH_JOBS = [RB_JOB_NAME, FIELD_RASTER_JOB_NAME, WSV_JOB_NAME, CE_JOB_NAME, IR_JOB_NAME, BU_JOB_NAME];\n\nconst ALL_RUNNING_JOBS = (farmJobs: IFieldJobs) => farmJobs.job.Status === JobStatus.Pending || farmJobs.job.Status === JobStatus.Running;\nconst BU_RUNNING_JOBS = (farmJobs: IFieldJobs) => ALL_RUNNING_JOBS(farmJobs) && farmJobs.job.JobType.Name === BU_JOB_NAME;\nconst BU_WSV_RUNNING_JOBS = (farmJobs: IFieldJobs) => ALL_RUNNING_JOBS(farmJobs) && BU_WSV_JOB_NAMES.Contains(farmJobs.job.JobType.Name);\nconst CE_RUNNING_JOBS = (farmJobs: IFieldJobs) => ALL_RUNNING_JOBS(farmJobs) && farmJobs.job.JobType.Name === CE_JOB_NAME;\nconst BU_WSV_CE_IR_RUNNING_JOBS = (farmJobs: IFieldJobs) => ALL_RUNNING_JOBS(farmJobs) && BU_WSV_CE_IR_RUNNING_JOB_NAMES.Contains(farmJobs.job.JobType.Name);\nconst RB_RUNNING_JOBS = (farmJobs: IFieldJobs) => ALL_RUNNING_JOBS(farmJobs) && RB_JOB_NAME === farmJobs.job.JobType.Name;\nconst FIELD_RASTER_RUNNING_JOBS = (farmJobs: IFieldJobs) => ALL_RUNNING_JOBS(farmJobs) && FIELD_RASTER_JOB_NAME === farmJobs.job.JobType.Name;\n\nexport interface IJobsStoreState extends IStateStore {\n farmJobs: IJobs[];\n allFarmJobs: IJobs[];\n farmJobsLoaded: boolean;\n farmJobsLoading: boolean;\n}\n\nfunction getFieldIds(farmJobs: IFieldJobs, t: string[]): string[] {\n for (const field of farmJobs.fields) {\n if (!field || !field.Id) {\n continue;\n }\n const fieldId = field.Id.toString();\n if (t.Contains(fieldId)) {\n continue;\n }\n t = t.Add(fieldId);\n }\n return t;\n}\n\nfunction getSoilSampleFieldIds(farmJobs: IFieldJobs, t: number[]): number[] {\n for (const soilSampleField of farmJobs.soilSampleFields) {\n const soilSampleFieldId = soilSampleField.Id;\n if (t.Contains(soilSampleFieldId)) {\n continue;\n }\n t = t.Add(soilSampleFieldId);\n }\n return t;\n}\n\n@Injectable({providedIn: 'root'})\nexport class JobsStore extends Store {\n constructor(public backend: ApSignalrService,\n private fieldStore: FieldStore,\n private soilSampleFieldStore: SoilSampleFieldStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n farmJobs: [],\n allFarmJobs: [],\n farmJobsLoaded: false,\n farmJobsLoading: false,\n });\n\n backend.registerObservable(JobsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(JobsFarmLoadSuccess).subscribe(d => {\n super.Mutate(s => s.farmJobsLoading, () => false);\n super.Mutate(s => s.farmJobsLoaded, () => true);\n super.Mutate(s => s.farmJobs, () => d.Data);\n });\n\n backend.registerObservable(JobsAllFarmLoadSuccess).subscribe(d => {\n super.Mutate(s => s.farmJobsLoading, () => false);\n super.Mutate(s => s.farmJobsLoaded, () => true);\n super.Mutate(s => s.allFarmJobs, () => d.Data);\n });\n\n this.subscribeJobChanges();\n }\n\n public get AllJobs$(): SafeBehaviorSubject {\n return this.Listen(s => s.data);\n }\n\n public get AllJobs(): IJobs[] {\n return this.AllJobs$.getValue();\n }\n\n public get FarmJobs$(): Observable {\n return this.Listen(s => s.farmJobs).pipe(distinct());\n }\n\n public get FarmJobs(): IJobs[] {\n return this.Listen(s => s.farmJobs).getValue();\n }\n\n public BlockedFieldIdsBuWsvCeIrRbFieldRaster$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => connectJobWithFields(jobs, this.fieldStore).Reduce((t, farmJobs) => {\n if (!BU_WSV_CE_IR_RUNNING_JOBS(farmJobs) &&\n !RB_RUNNING_JOBS(farmJobs) &&\n !FIELD_RASTER_RUNNING_JOBS(farmJobs)) {\n return t;\n }\n return getFieldIds(farmJobs, t);\n }, [] as string[])));\n\n public BlockedFieldIdsBuWsvCeIrRbFieldRasterTooltip$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => connectJobWithFields(jobs, this.fieldStore).Reduce((t, farmJobs) => {\n if (t) {\n return t;\n }\n if (!BU_WSV_CE_IR_RUNNING_JOBS(farmJobs) &&\n !RB_RUNNING_JOBS(farmJobs) &&\n !FIELD_RASTER_RUNNING_JOBS(farmJobs)) {\n return t;\n }\n return farmJobs.job.Description;\n }, '')));\n\n public BlockedFieldIdsCe$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => connectJobWithFields(jobs, this.fieldStore).Reduce((t, farmJobs) => {\n if (!CE_RUNNING_JOBS(farmJobs)) {\n return t;\n }\n return getFieldIds(farmJobs, t);\n }, [] as string[])));\n\n public BlockedFieldIdsCeTooltip$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => connectJobWithFields(jobs, this.fieldStore).Reduce((t, farmJobs) => {\n if (t) {\n return t;\n }\n if (!CE_RUNNING_JOBS(farmJobs)) {\n return t;\n }\n return farmJobs.job.Description;\n }, '')));\n\n public BlockedFieldIdsBuWsv$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => connectJobWithFields(jobs, this.fieldStore).Reduce((t, farmJobs) => {\n if (!BU_WSV_RUNNING_JOBS(farmJobs)) {\n return t;\n }\n return getFieldIds(farmJobs, t);\n }, [] as string[])));\n\n public BlockedFieldIdsBuWsvTooltip$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => connectJobWithFields(jobs, this.fieldStore).Reduce((t, farmJobs) => {\n if (t) {\n return t;\n }\n if (!BU_WSV_RUNNING_JOBS(farmJobs)) {\n return t;\n }\n return farmJobs.job.Description;\n }, '')));\n\n public BlockedSoilSampleFieldIdsBu$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => connectJobWithSoilSampleFields(jobs, this.soilSampleFieldStore).Reduce((t, farmJobs) => {\n if (!BU_RUNNING_JOBS(farmJobs)) {\n return t;\n }\n return getSoilSampleFieldIds(farmJobs, t);\n }, [] as number[])));\n\n public BlockedSoilSampleFieldIdsBuTooltip$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => connectJobWithSoilSampleFields(jobs, this.soilSampleFieldStore).Reduce((t, farmJobs) => {\n if (t) {\n return t;\n }\n if (!BU_RUNNING_JOBS(farmJobs)) {\n return t;\n }\n return farmJobs.job.Description;\n }, '')));\n\n public FinishedNFertJobs$ = this.FarmJobs$.pipe(\n debounceTime(JOB_DEBOUNCE_MS),\n map(jobs => jobs.map(job => {\n return job.Status === JobStatus.Finished && N_PLANNING_JOB_NAMES.Contains(job.JobType.Name);\n }))\n );\n\n public loadFarmJobs(farmId: number, lastDays: number): void {\n super.Mutate(s => s.farmJobsLoaded, () => false);\n super.Mutate(s => s.farmJobsLoading, () => true);\n super.Mutate(s => s.farmJobs, () => []);\n this.DispatchBackend(new JobsFarmLoad([\n {Name: 'farmId', Type: NetTypes.INT, Value: farmId},\n {Name: 'lastDays', Type: NetTypes.INT, Value: lastDays},\n ]));\n }\n\n public loadAllFarmJobs(farmId: number, lastDays: number): void {\n super.Mutate(s => s.farmJobsLoaded, () => false);\n super.Mutate(s => s.farmJobsLoading, () => true);\n super.Mutate(s => s.allFarmJobs, () => []);\n this.DispatchBackend(new JobsAllFarmLoad([\n {Name: 'farmId', Type: NetTypes.INT, Value: farmId},\n {Name: 'lastDays', Type: NetTypes.INT, Value: lastDays},\n ]));\n }\n\n private subscribeJobChanges(): void {\n this.backend.registerObservable(JobsChange).subscribe(res => {\n const ch = res.Data as IJobsChanges;\n const existJob = this.AllJobs.FindIndex(j => j.Id === ch.JobId);\n const existsFarmJob = this.FarmJobs.FindIndex(j => j.Id === ch.JobId);\n if (ch.Operation === DatabaseNotifyOperation.Delete) {\n if (existJob >= 0) {\n this.Mutate(s => s.data, o => o.RemoveAt(existJob));\n }\n if (existsFarmJob >= 0) {\n this.Mutate(s => s.farmJobs, o => o.RemoveAt(existJob));\n }\n return;\n }\n if (existJob < 0) {\n this.Mutate(s => s.data, o => o.Add(ch.Job));\n } else {\n this.Mutate(s => s.data, o => o.Replace(j => j.Id === ch.Job.Id, ch.Job));\n }\n if (existsFarmJob < 0) {\n this.Mutate(s => s.farmJobs, o => o.Add(ch.Job));\n } else {\n this.Mutate(s => s.farmJobs, o => {\n const idx = o.FindIndex(j => j.Id === ch.Job.Id);\n if (idx < 0) {\n return o;\n }\n o[idx] = ch.Job;\n return o;\n });\n }\n\n // Force update of need-layer (RB1, RB2,...) after jobs which calculated RB have finished.\n // e.g.: after saving a new planning, modify a plan, delete a plan, run field_raster job, ...\n if (ch?.Operation === DatabaseNotifyOperation.Update &&\n ch?.Job?.Status === JobStatus.Finished && RB_REFRESH_JOBS.Contains(ch?.Job?.JobType?.Name)) {\n ApMapInstance.mapStore?.Layers?.NeedLayer?.forceUpdateDebounced();\n }\n });\n }\n}\n\nexport interface IFieldJobs {\n soilSampleFields: ISoilSampleField[];\n fields: IField[];\n job: IJobs;\n}\n\nexport function connectJobWithSoilSampleFields(jobs: IJobs[], soilSampleFieldStore: SoilSampleFieldStore): IFieldJobs[] {\n return jobs.Reduce((t, job) => {\n const res = {\n soilSampleFields: [],\n fields: [],\n job,\n } as IFieldJobs;\n if (job.JobType.Name !== BU_JOB_NAME) {\n return t;\n }\n if (!job.Input.StartsWith('{')) {\n return t;\n }\n let buInput = {} as { SampleFieldIds: number[] };\n try {\n buInput = JSON.parse(job.Input);\n } catch (e) {\n console.warn(`can't parse JSON buInput ${job.Input} for Job ${job.Id}`);\n return t;\n }\n if (!Array.isArray(buInput.SampleFieldIds)) {\n console.warn(`can't find SampleFieldIds in Job Input for Job ${job.Id}`);\n return t;\n }\n for (const soilSampleFieldId of buInput.SampleFieldIds) {\n const sampleField = soilSampleFieldStore.SoilSampleField.Find(sf => sf?.Id === soilSampleFieldId);\n if (!sampleField) {\n continue;\n }\n res.soilSampleFields = res.soilSampleFields.Add(sampleField);\n }\n t = t.Add(res);\n return t;\n }, [] as IFieldJobs[]);\n}\n\nlet _jobs: IJobs[] = [];\nlet _jobResult = null;\n\nexport function connectJobWithFields(jobs: IJobs[], fieldStore: FieldStore): IFieldJobs[] {\n if (JSON.stringify(_jobs) !== JSON.stringify(jobs) || _jobResult === null) {\n _jobs = jobs;\n if (!jobs.Any()) {\n _jobResult = [];\n } else {\n // group Jobs By State and sort by creation time\n const groupedJobs = jobs\n .GroupBy(_ => _.Status);\n for (const jobState in groupedJobs) {\n if (!groupedJobs.hasOwnProperty(jobState)) {\n continue;\n }\n groupedJobs[jobState] = groupedJobs[jobState].sort((a, b) => {\n const aCreatedAt = DateTime.FromISOString(a.CreatedAt.toString());\n const bCreatedAt = DateTime.FromISOString(b.CreatedAt.toString());\n return aCreatedAt.Equals(bCreatedAt) ? 0 : aCreatedAt.IsBefore(bCreatedAt) ? 1 : -1;\n });\n }\n _jobResult = [\n ...(groupedJobs[JobStatus.Running] ?? []),\n ...(groupedJobs[JobStatus.Pending] ?? []),\n ...(groupedJobs[JobStatus.Finished] ?? []),\n ...(groupedJobs[JobStatus.Error] ?? []),\n ].Reduce((t, job) => {\n const res = {\n soilSampleFields: [],\n fields: [],\n job,\n } as IFieldJobs;\n\n switch (job.JobType.Name) {\n case 'REFRESH_BU_RASTER':\n if (!job.Input.StartsWith('{')) {\n return t;\n }\n let buInput = {} as { FieldGeomIds: string[] };\n try {\n buInput = JSON.parse(job.Input);\n } catch (e) {\n console.warn(`can't parse JSON buInput ${job.Input} for Job ${job.Id}`);\n return t;\n }\n if (!Array.isArray(buInput.FieldGeomIds)) {\n console.warn(`can't find FieldGeomIds in Job Input for Job ${job.Id}`);\n return t;\n }\n for (const fieldGeomId of buInput.FieldGeomIds) {\n const foundField = fieldStore.getFieldByFieldGeomId(fieldGeomId);\n if (!foundField) {\n continue;\n }\n res.fields = res.fields.Add(foundField);\n }\n break;\n case 'FIELD_RASTER':\n case 'RB_RASTER':\n case 'REFRESH_CE_RASTER':\n case 'REFRESH_WSV_RASTER':\n if (!job.Input?.StartsWith('{')) {\n return t;\n }\n let input = {} as { FieldGeomId: string };\n try {\n input = JSON.parse(job.Input);\n } catch (e) {\n console.warn(`can't parse JSON input ${job.Input} for Job ${job.Id}`);\n return t;\n }\n if (!input.FieldGeomId) {\n console.warn(`can't find FieldGeomId in Job Input for Job ${job.Id}`);\n return t;\n }\n const field = fieldStore.getFieldByFieldGeomId(input.FieldGeomId);\n res.fields = res.fields.Add(field);\n break;\n default:\n return t;\n }\n\n t = t.Add(res);\n return t;\n }, [] as IFieldJobs[]);\n }\n }\n return _jobResult;\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {IStateStore} from '../../ap-interface/interfaces/store';\nimport {\n CreateAllRasters,\n CreateAllRastersSuccess,\n NetTypes,\n SoilSampleFieldInterpolate,\n SoilSampleFieldInterpolateSuccess,\n SoilSampleFieldStateLoad\n} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport ISoilSampleField = Data.Nutrients.ISoilSampleField;\nimport IGuid = System.IGuid;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IKrigingStore extends IStateStore {\n interpolatedFieldId: -1;\n pending: { [key: number]: boolean };\n}\n\n@Injectable({providedIn: 'root'})\nexport class KrigingStore extends Store {\n public OnInterpolationFinish = new EventEmitter(true);\n\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n interpolatedFieldId: -1,\n pending: {}\n });\n\n backend.registerObservable(SoilSampleFieldStateLoad).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(SoilSampleFieldInterpolateSuccess).subscribe(d => {\n super.Mutate(s => s.pending, (pending) => {\n delete pending[d.Data];\n return pending;\n });\n });\n backend.registerObservable(CreateAllRastersSuccess).subscribe(() => {\n this.OnInterpolationFinish.emit();\n });\n }\n\n get Pending$(): SafeBehaviorSubject<{ [key: number]: boolean }> {\n return this.Listen(s => s.pending);\n }\n\n loadSampleFieldState(): void {\n super.SetLoadState();\n super.Mutate(d => d.data, () => []);\n this.DispatchBackend(new SoilSampleFieldStateLoad([]));\n }\n\n startInterpolationForSampleField(sampleFieldIds: number[]): void {\n super.Mutate(s => s.pending, (pending) => {\n for (const sampleFieldId of sampleFieldIds) {\n pending[sampleFieldId] = true;\n }\n return pending;\n });\n this.DispatchBackend(new SoilSampleFieldInterpolate([\n {Name: 'sampleFieldIds', Type: NetTypes.INT + '[]', Value: sampleFieldIds}\n ]));\n }\n\n createAllRastersFor(fieldGeomId: string | IGuid): void {\n this.DispatchBackend(new CreateAllRasters([\n {Name: 'fieldGeomId', Type: NetTypes.GUID, Value: fieldGeomId},\n {Name: 'priority', Type: NetTypes.INT, Value: 10},\n {Name: 'notice', Type: NetTypes.STRING, Value: ''},\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {ApplicationSettingsLoad, ApplicationSettingsLoadFail, ApplicationSettingsLoadSuccess} from 'invoker-transport';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\nimport IApplicationSettings = Data.Agronomic.IApplicationSettings;\n\ninterface IApplicationSettingsStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class ApplicationSettingsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false\n });\n backend.registerObservable(ApplicationSettingsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(ApplicationSettingsLoadFail).subscribe(() => {\n super.Mutate(s => s.data, () => []);\n super.SetLoadFailState();\n });\n this.LoadApplications();\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n public get Applications$(): SafeBehaviorSubject {\n return this.Listen((s) => s.data);\n }\n\n public get Applications(): IApplicationSettings[] {\n return this.Applications$.getValue();\n }\n\n public LoadApplications(): void {\n super.SetLoadState();\n this.DispatchBackend(new ApplicationSettingsLoad([]));\n }\n}\n","import ICropGroups = Data.BaseData.ICropGroups;\nimport {IAction, IApInvokerArguments} from '../../interfaces';\n\n/**\n * Actions of the Cropgroup State\n */\nexport enum CropGroupsActions {\n CROP_GROUPS_LOAD = '[crop_groups] load',\n CROP_GROUPS_LOAD_SUCCESS = '[crop_groups] load success',\n CROP_GROUPS_LOAD_FAIL = '[crop_groups] load fail',\n CROP_GROUPS_SAVE = '[crop_groups] save',\n CROP_GROUPS_SAVE_SUCCESS = '[crop_groups] save success',\n CROP_GROUPS_SAVE_FAIL = '[crop_groups] save fail',\n CROP_GROUPS_DELETE = '[crop_groups] delete',\n CROP_GROUPS_DELETE_SUCCESS = '[crop_groups] delete success',\n CROP_GROUPS_DELETE_FAIL = '[crop_groups] delete fail',\n}\n\n/**\n * Start to Load Cropgroups\n */\nexport class CropGroupsLoad implements IAction {\n readonly type = CropGroupsActions.CROP_GROUPS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * Load of Cropgroups was successful\n */\nexport class CropGroupsLoadSuccess implements IAction {\n readonly type = CropGroupsActions.CROP_GROUPS_LOAD_SUCCESS;\n\n constructor(public payload: ICropGroups[]) {\n }\n}\n\n/**\n * Start to Save Cropgroups\n */\nexport class CropGroupsSave implements IAction {\n readonly type = CropGroupsActions.CROP_GROUPS_SAVE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * Save Cropgroups successful\n */\nexport class CropGroupsSaveSuccess implements IAction {\n readonly type = CropGroupsActions.CROP_GROUPS_SAVE_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * Start to Delete Cropgroups\n */\nexport class CropGroupsDelete implements IAction {\n readonly type = CropGroupsActions.CROP_GROUPS_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * Delete Cropgroups successful\n */\nexport class CropGroupsDeleteSuccess implements IAction {\n readonly type = CropGroupsActions.CROP_GROUPS_DELETE_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * Delete Cropgroups fails\n */\nexport class CropGroupsDeleteFail implements IAction {\n readonly type = CropGroupsActions.CROP_GROUPS_DELETE_FAIL;\n\n constructor(public payload: string) {\n }\n}\n","import {IStateStoreWritable} from '../../ap-interface/interfaces/store';\nimport {\n Store\n} from '../index';\nimport {\n Injectable\n} from '@angular/core';\nimport {\n ApCustomTypes,\n CropGroupsDelete,\n CropGroupsLoad,\n CropGroupsLoadSuccess,\n CropGroupsSave\n} from 'invoker-transport';\nimport {\n CropGroupsSaveSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/base-data';\nimport ICropGroups = Data.BaseData.ICropGroups;\nimport IFarmCropGroup = Data.BaseData.IFarmCropGroup;\nimport DatabaseNotifyOperation = Agriport.Invoker.Api.Database.DatabaseNotifyOperation;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ICropGroupStore extends IStateStoreWritable {\n}\n\n@Injectable({providedIn: 'root'})\nexport class CropGroupStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n saved: false,\n saving: false\n });\n\n backend.registerObservable(CropGroupsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(CropGroupsSaveSuccess).subscribe(d => {\n super.SetSaveSuccessState();\n });\n }\n\n getCropGroups(): ICropGroups[] {\n return super.Listen(s => s.data).getValue();\n }\n\n getNoCropColor(): string {\n const noCropGroup = this.getCropGroups().find(cg => cg.Key === 'Global__CropGroup_Nothing');\n if (noCropGroup?.FarmColor && noCropGroup?.FarmColor?.length > 0) {\n return noCropGroup.FarmColor;\n } else if (noCropGroup?.Colordefault && noCropGroup?.Colordefault?.length > 0) {\n return noCropGroup.Colordefault;\n } else {\n return 'rgba(216, 216, 216, 1)';\n }\n }\n\n getGroupColorByCropGroupName(key: string): string {\n if (!key) {\n return 'rgba(255, 255, 255, 0)';\n }\n const group: ICropGroups = super.Listen(s => s.data).getValue().Find(c => c?.Key === key);\n return group.Colordefault;\n }\n\n /**\n * load croptypes from Backend to the Store\n */\n public loadCropGroups(): void {\n this.DispatchBackend(new CropGroupsLoad([]));\n }\n\n /**\n * saved croptypes to the database\n */\n public saveFarmCropGroups(cropGroups: ICropGroups): void {\n super.SetSaveState();\n this.DispatchBackend(new CropGroupsSave([\n {Name: 'cropGroup', Type: ApCustomTypes.Data_BaseData_CropGroups, Value: cropGroups},\n ]));\n }\n\n /**\n * delete croptypes to the database\n */\n public deleteFarmCropGroups(cropGroups: ICropGroups): void {\n super.SetSaveState();\n this.DispatchBackend(new CropGroupsDelete([\n {Name: 'cropGroup', Type: ApCustomTypes.Data_BaseData_CropGroups, Value: cropGroups},\n ]));\n }\n\n /**\n * override the Update with a custom Update Strategy\n */\n UpdateSource(operation: DatabaseNotifyOperation, item: any, model: string): void {\n if (operation === DatabaseNotifyOperation.Delete) {\n this.loadCropGroups();\n return;\n }\n if (operation === DatabaseNotifyOperation.Update || operation === DatabaseNotifyOperation.Insert) {\n super.Mutate(s => s.data, o => {\n if (!o) {\n super.SetLoadFinishState();\n return o;\n }\n const backendItem = item as ICropGroups;\n if (!backendItem) {\n // fallback case reload the Source\n this.loadCropGroups();\n return o;\n }\n const position = o.FindIndex(i => i.Id === backendItem.Id);\n const oldItem = o[position];\n o[position] = {...oldItem, FarmColor: backendItem.FarmColor};\n super.SetLoadFinishState();\n return o;\n });\n return;\n }\n }\n\n SetColor(id: number, color: string): void {\n super.Mutate(s => s.data, o => {\n const found = o.Find(cg => cg?.Id === id);\n if (found) {\n found.FarmColor = color;\n found.FarmCropGroup[0].Colorcode = color;\n }\n return o;\n });\n }\n\n SetColorAndGroup(id: number, color: string, groupId: number): void {\n super.Mutate(s => s.data, o => {\n const found = o.Find(cg => cg?.Id === id);\n if (found) {\n found.FarmColor = color;\n found.FarmCropGroup.Add({\n Colorcode: color,\n Cropgroupid: groupId,\n } as IFarmCropGroup);\n }\n return o;\n });\n }\n}\n","import ICropTypes = Data.BaseData.ICropTypes;\nimport ICropGroups = Data.BaseData.ICropGroups;\nimport IResultMessage = Invoker.IResultMessage;\nimport ISelectableCrops = Data.BaseData.ISelectableCrops;\nimport DatabaseNotifyOperation = Agriport.Invoker.Api.Database.DatabaseNotifyOperation;\nimport {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApCustomTypes,\n CroptypesLoad,\n CroptypesLoadSuccess,\n CroptypesSave,\n HibernateModelNames,\n NetTypes\n} from 'invoker-transport';\nimport {TranslationStore} from '../translation/translation.store';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n\ninterface ICropTypeStore extends IStateStore {\n cropTypesNames: { [key: number]: string };\n}\n\nexport interface IDefaultCroptypeGetter {\n getDefaultCroptype(cropTypeId: number): ICropTypes;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CropTypeStore extends Store implements IDefaultCroptypeGetter {\n constructor(public backend: ApSignalrService,\n public translationStore: TranslationStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n cropTypesNames: {}\n });\n\n backend.registerObservable(CroptypesLoadSuccess)\n .subscribe(this.onLoadSuccess.bind(this));\n }\n\n public get CropTypes$(): SafeBehaviorSubject {\n return this.Listen(s => s.data);\n }\n\n public get CropTypes(): ICropTypes[] {\n return this.CropTypes$.getValue();\n }\n\n public get AvailableCropTypes(): ICropTypes[] {\n return this.CropTypes.FindAll(_ => _.Selected);\n }\n\n public get GetCropTypesNames$(): SafeBehaviorSubject<{ [key: number]: string }> {\n return this.Listen(s => s.cropTypesNames);\n }\n\n getDefaultCroptype(cropTypeId: number): ICropTypes {\n return super.Listen(s => s.data).getValue().Find(c => c?.Id === cropTypeId);\n }\n\n /**\n * start to loading all Croptypes\n */\n public loadCroptypes(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new CroptypesLoad([]));\n }\n\n /**\n * save the Croptype (only Yield are supported for now)\n */\n public saveCroptypes(cropType: ICropTypes[], yieldChanged: boolean): void {\n super.Mutate(s => s.loading, () => true);\n this.DispatchBackend(new CroptypesSave([\n {\n Name: 'cropTypes',\n Type: ApCustomTypes.Data_BaseData_CropTypes + '[]',\n Value: cropType\n },\n {\n Name: 'yieldChanged',\n Type: NetTypes.BOOL,\n Value: yieldChanged\n }\n ]));\n }\n\n public mapObjectValues(map): any {\n const result = {};\n if (map) {\n Object.keys(map).forEach((key) => {\n result[key] = this.Listen(s => s.cropTypesNames).getValue()[map[key]];\n });\n }\n return result;\n }\n\n /**\n * replace the CropGroup Color in the Croptypes List\n */\n public replaceGroupColor(group: ICropGroups): void {\n super.Mutate(s => s.data, o => o.Convert(i => {\n if (i.Groupname === group.Key) {\n return {\n ...i,\n Color: group.FarmColor,\n };\n }\n return i;\n }));\n }\n\n /**\n * override the Update with a custom Update Strategy\n */\n UpdateSource(operation: DatabaseNotifyOperation, item: any, model: string): void {\n item = this.translateCropType(item);\n switch (model) {\n case HibernateModelNames.CROP_TYPE_DETAILS:\n super.UpdateSource(operation, item, model);\n super.SetLoadFinishState();\n break;\n case HibernateModelNames.SELECTABLE_CROPS:\n if (operation === DatabaseNotifyOperation.Delete) {\n // can only refresh the complete CropType DataSource\n this.loadCroptypes();\n return;\n }\n if (operation === DatabaseNotifyOperation.Insert) {\n super.Mutate(s => s.data, o => {\n if (!o) {\n super.SetLoadFinishState();\n return o;\n }\n const backendItem = item as ISelectableCrops;\n if (!backendItem) {\n // fallback case reload the Source\n this.loadCroptypes();\n return o;\n }\n const position = o.FindIndex(i => i.Id === backendItem.CropkeyDetailId);\n const oldItem = o[position];\n o[position] = {...oldItem, Selected: true};\n super.SetLoadFinishState();\n return o;\n });\n return;\n }\n break;\n }\n }\n\n GetCropTypeName(cropTypeId: number | string): string {\n return super.Listen(s => s.cropTypesNames).getValue()[cropTypeId];\n }\n\n GetEppoCode(cropTypeId: number): string {\n return super.Listen(s => s.data).getValue().find((d) => d.Id === cropTypeId)?.Eppocode;\n }\n\n private onLoadSuccess(d: IResultMessage): void {\n const translatedCropTypes = d.Data.Convert(_ => this.translateCropType(_));\n super.Mutate(s => s.data, () => translatedCropTypes);\n super.Mutate(s => s.cropTypesNames, () => {\n const cropTypes: ICropTypes[] = translatedCropTypes;\n const result = {};\n cropTypes.forEach((c) => {\n result[c.Id] = c.Description;\n });\n return result;\n });\n super.SetLoadFinishState();\n }\n\n private translateCropType(item: ICropTypes): ICropTypes {\n const translatedItem = item as ICropTypes;\n if (!translatedItem) {\n return item;\n }\n translatedItem.Shortname = this.translationStore.FindTranslationForSelectedLanguage(translatedItem?.Shortname);\n translatedItem.Description = this.translationStore.FindTranslationForSelectedLanguage(translatedItem?.Description);\n return translatedItem;\n }\n\n public getCropTypeMapId(cropTypeDetailsId: number): number {\n const crop = this.getDefaultCroptype(cropTypeDetailsId);\n if (crop) {\n const resultCrop = this.Listen(s => s.data).getValue().Find(_ => _.CropKey === crop?.CropKey && _.FarmId === -1);\n if (resultCrop) {\n return resultCrop.SensorTypeId ?? -1;\n }\n }\n return -1;\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n FertilizerInorganicCreate,\n FertilizerInorganicLoad,\n FertilizerInorganicLoadSuccess,\n FertilizerInorganicSelectableUpdate,\n FertilizerInorganicUpdate\n} from 'invoker-transport';\nimport {TranslationStore} from '../translation/translation.store';\nimport IFertilizerInorganic = Data.BaseData.IFertilizerInorg;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFertilizerInorganicStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class FertilizerInorganicStore extends Store {\n constructor(public backend: ApSignalrService,\n public translationStore: TranslationStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n backend.registerObservable(FertilizerInorganicLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data.Convert(_ => {\n _.Prodname = this.translationStore.FindTranslationForSelectedLanguage(_.Prodname);\n _.Note = this.translationStore.FindTranslationForSelectedLanguage(_.Note);\n return _;\n }));\n super.SetLoadFinishState();\n });\n }\n\n public getFertilizerInorganic(): IFertilizerInorganic[] {\n return super.Listen(s => s.data).getValue();\n }\n\n /**\n * load fertilizer inorganic from Backend to the Store\n */\n public loadFertilizerInorganic(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new FertilizerInorganicLoad([]));\n }\n\n /**\n * create fertilizer inorganic via backend\n */\n public createFertilizerInorganic(fertilizerInorganic: IFertilizerInorganic): void {\n this.DispatchBackend(new FertilizerInorganicCreate([\n {\n Name: 'fertilizerInorganic',\n Type: ApCustomTypes.Data_BaseData_FertilizerInorg,\n Value: this._mapFertilizer(fertilizerInorganic)\n }\n ]));\n }\n\n /**\n * update fertilizer inorganic via backend\n */\n public updateFertilizerInorganic(fertilizerInorganic: IFertilizerInorganic): void {\n this.DispatchBackend(new FertilizerInorganicUpdate([\n {\n Name: 'fertilizerInorganic',\n Type: ApCustomTypes.Data_BaseData_FertilizerInorg,\n Value: this._mapFertilizer(fertilizerInorganic)\n }\n ]));\n }\n\n /**\n * updates selectableFertilizer via backend\n */\n public updateSelectableFertilizer(fertilizerInorganic: IFertilizerInorganic): void {\n this.DispatchBackend(new FertilizerInorganicSelectableUpdate([\n {Name: 'fertilizerInorganic', Type: ApCustomTypes.Data_BaseData_FertilizerInorg, Value: fertilizerInorganic},\n ]));\n }\n\n private _mapFertilizer(fertilizer: IFertilizerInorganic): IFertilizerInorganic {\n fertilizer.RealContentCaO = fertilizer.ContentCaO;\n if (fertilizer.AlkalineEff) {\n if (fertilizer['AlkalineCaO'] > 0) {\n fertilizer.ContentCaO = fertilizer['AlkalineCaO'];\n } else {\n fertilizer.ContentCaO = fertilizer['ContentNeutralisationValue'];\n }\n }\n return fertilizer;\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n FertilizerOrganicCreate,\n FertilizerOrganicLoad,\n FertilizerOrganicLoadSuccess,\n FertilizerOrganicSelectableUpdate,\n FertilizerOrganicUpdate\n} from 'invoker-transport';\nimport {TranslationStore} from '../translation/translation.store';\nimport IFertilizerOrganic = Data.BaseData.IFertilizerOrg;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFertilizerOrganicStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class FertilizerOrganicStore extends Store {\n constructor(public backend: ApSignalrService,\n public translationStore: TranslationStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n backend.registerObservable(FertilizerOrganicLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data.Convert(_ => {\n _.Prodname = this.translationStore.FindTranslationForSelectedLanguage(_.Prodname);\n _.Note = this.translationStore.FindTranslationForSelectedLanguage(_.Note);\n return _;\n }));\n super.SetLoadFinishState();\n });\n }\n\n public getFertilizerOrganic(): IFertilizerOrganic[] {\n return super.Listen(s => s.data).getValue();\n }\n\n /**\n * load fertilizer organic from Backend to the Store\n */\n public loadFertilizerOrganic(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new FertilizerOrganicLoad([]));\n }\n\n /**\n * create fertilizer organic via backend\n */\n public createFertilizerOrganic(fertilizerOrganic: IFertilizerOrganic): void {\n this.DispatchBackend(new FertilizerOrganicCreate([\n {\n Name: 'fertilizerOrganic',\n Type: ApCustomTypes.Data_BaseData_FertilizerOrg,\n Value: this._mapFertilizer(fertilizerOrganic)\n }\n ]));\n }\n\n /**\n * update fertilizer organic via backend\n */\n public updateFertilizerOrganic(fertilizerOrganic: IFertilizerOrganic): void {\n this.DispatchBackend(new FertilizerOrganicUpdate([\n {\n Name: 'fertilizerOrganic',\n Type: ApCustomTypes.Data_BaseData_FertilizerOrg,\n Value: this._mapFertilizer(fertilizerOrganic)\n }\n ]));\n }\n\n /**\n * updates selectableFertilizer via backend\n */\n public updateSelectableFertilizer(fertilizerOrganic: IFertilizerOrganic): void {\n this.DispatchBackend(new FertilizerOrganicSelectableUpdate([\n {Name: 'fertilizerOrganic', Type: ApCustomTypes.Data_BaseData_FertilizerOrg, Value: fertilizerOrganic},\n ]));\n }\n\n private _mapFertilizer(fertilizer: IFertilizerOrganic): IFertilizerOrganic {\n fertilizer.RealContentCaO = fertilizer.ContentCaO;\n if (fertilizer.AlkalineEff) {\n if (fertilizer['AlkalineCaO'] > 0) {\n fertilizer.ContentCaO = fertilizer['AlkalineCaO'];\n } else {\n fertilizer.ContentCaO = fertilizer['ContentNeutralisationValue'];\n }\n }\n return fertilizer;\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\n\nexport enum FertilizerActions {\n FERTILIZER_USE_LOAD = '[fertilizer_use] load',\n FERTILIZER_USE_LOAD_SUCCESS = '[fertilizer_use] load success',\n}\n\nexport class FertilizerUseLoad implements IAction {\n readonly type = FertilizerActions.FERTILIZER_USE_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FertilizerUseLoadSuccess implements IAction {\n readonly type = FertilizerActions.FERTILIZER_USE_LOAD_SUCCESS;\n\n constructor(public payload: number) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {FertilizerUseLoad, HibernateModelNames, NetTypes} from 'invoker-transport';\nimport {FertilizerOrganicStore} from './fertilizer.organic.store';\nimport {FertilizerInorganicStore} from './fertilizer.inorganic.store';\nimport {map} from 'rxjs/operators';\nimport {combineLatest, Observable} from 'rxjs';\nimport {\n FertilizerUseLoadSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/base-data';\nimport ISelectableFertilizer = Data.BaseData.ISelectableFertilizer;\nimport DatabaseNotifyOperation = Agriport.Invoker.Api.Database.DatabaseNotifyOperation;\nimport IFertilizerOrg = Data.BaseData.IFertilizerOrg;\nimport IFertilizerInorg = Data.BaseData.IFertilizerInorg;\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFertilizerStore extends IStateStore {\n CountInUse: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FertilizerStore extends Store {\n constructor(public backend: ApSignalrService,\n private fertilizerOrganicStore: FertilizerOrganicStore,\n private fertilizerInorganicStore: FertilizerInorganicStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n CountInUse: null\n });\n backend.registerObservable(FertilizerUseLoadSuccess).subscribe(d => {\n super.Mutate(s => s.CountInUse, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadFertilizerIsInUse(fertilizerId: number): void {\n super.Mutate(s => s.CountInUse, () => null);\n this.DispatchBackend(new FertilizerUseLoad([\n {Name: 'fertilizerId', Type: NetTypes.INT, Value: fertilizerId}\n ]));\n }\n\n public get Fertilizer(): Array {\n return [\n ...this.fertilizerOrganicStore.Listen(s => s.data).getValue().filter(f => f.Selectable),\n ...this.fertilizerInorganicStore.Listen(s => s.data).getValue().filter(f => f.Selectable)\n ];\n }\n\n public get Fertilizer$(): Observable> {\n return combineLatest([\n this.fertilizerOrganicStore.Listen(s => s.data),\n this.fertilizerInorganicStore.Listen(s => s.data)\n ]).pipe(\n map(([o, i]) => {\n return [...o.filter(f => f.Selectable), ...i.filter(f => f.Selectable)];\n })\n );\n }\n\n public get OrganicFertilizer$(): Observable> {\n return this.fertilizerOrganicStore.Listen(s => s.data).pipe(\n map((o) => {\n return o.filter(f => f.Selectable);\n })\n );\n }\n\n public get InorganicFertilizer$(): Observable> {\n return this.fertilizerInorganicStore.Listen(s => s.data).pipe(\n map((o) => {\n return o.filter(f => f.Selectable);\n })\n );\n }\n\n /**\n * override the Update with a custom Update Strategy\n */\n public UpdateSource(operation: DatabaseNotifyOperation, item: any, model: string): void {\n if (operation === DatabaseNotifyOperation.Insert || operation === DatabaseNotifyOperation.Delete) {\n if (model === HibernateModelNames.SELECTABLE_FERTILIZER) {\n super.Mutate(s => s.data, o => {\n if (!item) {\n // fallback case reload the Source\n this.fertilizerOrganicStore.loadFertilizerOrganic();\n this.fertilizerInorganicStore.loadFertilizerInorganic();\n return o;\n }\n this.fertilizerOrganicStore.loadFertilizerOrganic();\n this.fertilizerInorganicStore.loadFertilizerInorganic();\n return o;\n });\n }\n } else {\n this.fertilizerOrganicStore.loadFertilizerOrganic();\n this.fertilizerInorganicStore.loadFertilizerInorganic();\n }\n }\n\n public getFertilizer(productId: any): IFertilizerOrg | IFertilizerInorg {\n return [...this.fertilizerOrganicStore.Listen(s => s.data).getValue(),\n ...this.fertilizerInorganicStore.Listen(s => s.data).getValue()]\n .Find((d) => d?.Id === productId);\n }\n\n public getGroup(productId: number): number {\n return this.fertilizerInorganicStore.Listen(s => s.data).getValue().map((f) => f.Id).includes(productId)\n ? 0\n : this.fertilizerOrganicStore.Listen(s => s.data).getValue().map((f) => f.Id).includes(productId) ? 1 : -1;\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {LanduseLoad, LanduseLoadSuccess} from 'invoker-transport';\nimport {TranslationStore} from '../translation/translation.store';\nimport ILandUse = Data.BaseData.ILanduse;\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport ILanduse = Data.BaseData.ILanduse;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ILandUseStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class LandUseStore extends Store {\n constructor(public backend: ApSignalrService,\n private translationService: TranslationStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(LanduseLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data.Convert(i => {\n i.Key = this.translationService.FindTranslationForSelectedLanguage(i.Key);\n return i;\n }));\n super.SetLoadFinishState();\n });\n }\n\n public loadLandUse(): void {\n this.DispatchBackend(new LanduseLoad([]));\n }\n\n get LandUse$(): SafeBehaviorSubject {\n return super.Listen(s => s.data);\n }\n\n get LandUse(): ILanduse[] {\n return this.LandUse$.getValue();\n }\n}\n","import {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {ApCustomTypes, HibernateModelNames, NetTypes} from 'invoker-transport';\nimport {\n PlantProtectionProductsLoad,\n PlantProtectionProductsLoadFail,\n PlantProtectionProductsLoadSuccess,\n PlantProtectionProductsSelectableUpdate,\n PlantProtectionProductsSelectableUpdateFail,\n PlantProtectionProductsSelectableUpdateSuccess,\n PlantProtectionProductsCreateNewFail,\n PlantProtectionProductsCreateNewSuccess,\n PlantProtectionProductsCreateNew\n} from 'invoker-transport';\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\nimport {IStateStoreWritable} from '../../ap-interface';\nimport {LoginStore} from '../login/login.store';\nimport {debounceTime} from 'rxjs/operators';\nimport {NotifyStore} from '../dialog/notify.store';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport DatabaseNotifyOperation = Agriport.Invoker.Api.Database.DatabaseNotifyOperation;\nimport IPlantProtectionProduct = Data.BaseData.IPlantProtectionProduct;\nimport IPlantProtectionProductWriteable = Data.BaseData.IPlantProtectionProductWriteable;\nimport ISelectablePpProduct = Data.BaseData.ISelectablePpProduct;\n\nexport enum IPlantProtectionLoadLevel {\n SelectedProducts,\n AllProducts\n}\n\ninterface IPlantProtectionLoadState {\n farmId: number;\n loadLevel: IPlantProtectionLoadLevel;\n}\n\ninterface IPlantProtectionProductStore extends IStateStoreWritable {\n loadState: IPlantProtectionLoadState;\n}\n\n@Injectable({providedIn: 'root'})\nexport class PlantProtectionProductStore extends Store {\n private pendingDataLock = false;\n private pendingData: IPlantProtectionProduct[] = [];\n\n constructor(public backend: ApSignalrService,\n private notifyStore: NotifyStore,\n private loginStore: LoginStore) {\n super(backend, {\n loaded: false,\n loading: false,\n saved: false,\n saving: false,\n data: [],\n loadState: undefined\n });\n\n backend.registerObservable(PlantProtectionProductsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(PlantProtectionProductsLoadFail).subscribe(() => {\n super.Mutate(s => s.data, () => []);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(PlantProtectionProductsSelectableUpdateSuccess).subscribe(() => {\n this.notifyStore.showSaveSuccessMessage();\n super.SetSaveSuccessState();\n this.loadPlantProtectionProducts(false, true);\n });\n\n backend.registerObservable(PlantProtectionProductsSelectableUpdateFail).subscribe(() => {\n this.notifyStore.showSaveFailMessage();\n super.SetSaveFailState();\n this.loadPlantProtectionProducts(false, true);\n });\n\n backend.registerObservable(PlantProtectionProductsCreateNewSuccess).subscribe(() => {\n this.notifyStore.showSaveSuccessMessage();\n super.SetSaveSuccessState();\n });\n\n backend.registerObservable(PlantProtectionProductsCreateNewFail).subscribe(() => {\n this.notifyStore.showSaveFailMessage();\n super.SetSaveFailState();\n });\n\n // use of debounce in order to avoid performance issue when many records have been changed\n // otherwise many small updates trigger too many angular refresh events and everything gets really slow\n this.AfterDatabaseUpdate.pipe(\n debounceTime(500))\n .subscribe(() => {\n if (this.pendingDataLock) {\n // try again later\n this.AfterDatabaseUpdate.emit();\n return;\n }\n super.Mutate(s => s.data, () => this.pendingData);\n this.pendingData = [];\n });\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n public get Products$(): SafeBehaviorSubject {\n return this.Listen(x => x.data);\n }\n\n public get Products(): IPlantProtectionProduct[] {\n return this.Listen(x => x.data).getValue();\n }\n\n /**\n * load plant protection products from Backend to the Store\n * There was a change in design concept of loading plant protection products.\n * Only products get loaded which have an eppo_crop reference to one of the farm's selectableCrops.\n * As a consequence the products might need an explicit reload. LiveStores would not cover this use case.\n * Therefor we need the forceReload option.\n */\n public loadPlantProtectionProducts(selectedOnly = true, forceReload?: boolean): void {\n const farm = this.loginStore.SelectedFarm;\n const lastLoadState = this.Listen(s => s.loadState).getValue();\n const newLoadState: IPlantProtectionLoadState = {\n farmId: farm?.Id,\n loadLevel: selectedOnly ? IPlantProtectionLoadLevel.SelectedProducts : IPlantProtectionLoadLevel.AllProducts\n };\n\n // We have many plant protection products. Therefore, we need to\n // load them carefully. Once they are loaded for a specific region the\n // updates from database are provided by DatabaseNotify => no reload needed\n if (forceReload || !lastLoadState || lastLoadState.farmId !== newLoadState.farmId ||\n lastLoadState.loadLevel < newLoadState.loadLevel) {\n super.SetLoadState();\n super.Mutate(s => s.loadState, () => newLoadState);\n this.DispatchBackend(new PlantProtectionProductsLoad([\n {Name: 'region', Type: NetTypes.STRING, Value: farm?.Country?.Id},\n {Name: 'selectedOnly', Type: NetTypes.BOOL, Value: selectedOnly}\n ]));\n }\n }\n\n public createNewProduct(plantProtectionProduct: IPlantProtectionProductWriteable): void {\n this.SetSaveState();\n this.DispatchBackend(new PlantProtectionProductsCreateNew([\n {\n Name: 'plantProtectionProduct',\n Type: ApCustomTypes.Data_BaseData_PlantProtectionProductWriteable,\n Value: plantProtectionProduct\n }\n ]));\n }\n\n /**\n * updates selectable plant protection products\n */\n public updateSelectablePlantProtectionProduct(plantProtectionProducts: IPlantProtectionProduct[]): void {\n this.SetSaveState();\n this.DispatchBackend(new PlantProtectionProductsSelectableUpdate([\n {\n Name: 'plantProtectionProducts',\n Type: ApCustomTypes.Data_BaseData_PlantProtectionProduct + '[]',\n Value: plantProtectionProducts\n },\n ]));\n }\n\n /**\n * override the Update with a custom Update Strategy\n */\n UpdateSource(_: DatabaseNotifyOperation, item: any, model: string): void {\n // if we are currently in an active saving/loading process we do not need the live updates because\n // everything gets loaded after save/load.\n // Anyway this is useful if there is more than 1 user logged in on the same farm.\n if (this.Listen(s => s.saving).getValue() ||\n this.Listen(s => s.loading).getValue()) {\n return;\n }\n try {\n this.pendingDataLock = true;\n if (model === HibernateModelNames.SELECTABLE_PLANT_PROTECTION_PRODUCT) {\n if (!this.pendingData || this.pendingData?.length <= 0) {\n this.pendingData = this.Listen(s => s?.data).getValue();\n }\n if (!this.pendingData) {\n super.SetLoadFinishState();\n return;\n }\n const backendItem = item as ISelectablePpProduct;\n if (!backendItem) {\n // fallback case reload the Source based on last load state\n this.loadPlantProtectionProducts(\n this.Listen(s => s.loadState)\n .getValue()?.loadLevel === IPlantProtectionLoadLevel.SelectedProducts);\n return;\n }\n const position = this.pendingData.FindIndex(i => i.Id === backendItem.PpProductId);\n const oldItem = this.pendingData[position];\n this.pendingData = [...this.pendingData];\n this.pendingData[position] = {...oldItem, Selectable: backendItem.DeletedAt == null};\n this.AfterDatabaseUpdate?.emit();\n return;\n }\n } finally {\n this.pendingDataLock = false;\n }\n }\n\n public getProducts(): IPlantProtectionProduct[] {\n return super.Listen((s) => s.data).getValue();\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport ITimeZones = Data.BaseData.ITimeZones;\nimport ISettings = Data.BaseData.ISettings;\n\nexport enum SettingsActions {\n SETTINGS_LOAD = '[settings] load',\n SETTINGS_LOAD_SUCCESS = '[settings] load success',\n SETTINGS_LOAD_FAIL = '[settings] load fail',\n SETTINGS_UPDATE = '[settings] update',\n SETTINGS_UPDATE_SUCCESS = '[settings] update success',\n SETTINGS_UPDATE_FAIL = '[settings] update fail',\n SETTINGS_SAVE_SUCCESS = '[settings] save success',\n SETTINGS_SAVE_FAIL = '[settings] save fail',\n TIME_ZONE_LOAD = '[settings] available timezones load',\n TIME_ZONE_LOAD_SUCCESS = '[settings] available timezones load success',\n TIME_ZONE_LOAD_FAIL = '[settings] available timezones fail',\n}\n\nexport class SettingsLoad implements IAction {\n readonly type = SettingsActions.SETTINGS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SettingsLoadSuccess implements IAction {\n readonly type = SettingsActions.SETTINGS_LOAD_SUCCESS;\n\n constructor(public payload: ISettings[]) {\n }\n}\n\nexport class SettingsUpdate implements IAction {\n readonly type = SettingsActions.SETTINGS_UPDATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SettingsUpdateSuccess implements IAction {\n readonly type = SettingsActions.SETTINGS_UPDATE_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SettingsUpdateFail implements IAction {\n readonly type = SettingsActions.SETTINGS_UPDATE_FAIL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SettingsSaveSuccess implements IAction {\n readonly type = SettingsActions.SETTINGS_SAVE_SUCCESS;\n\n constructor(public payload: ISettings) {\n }\n}\n\nexport class TimeZoneLoad implements IAction {\n readonly type = SettingsActions.TIME_ZONE_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class TimeZoneLoadSuccess implements IAction {\n readonly type = SettingsActions.TIME_ZONE_LOAD_SUCCESS;\n\n constructor(public payload: ITimeZones[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n SettingsLoad,\n SettingsLoadSuccess,\n SettingsUpdate,\n TimeZoneLoad,\n TimeZoneLoadSuccess\n} from 'invoker-transport';\nimport {map} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\nimport {\n SettingsUpdateFail,\n SettingsUpdateSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/base-data';\nimport ISettings = Data.BaseData.ISettings;\nimport ITimeZones = Data.BaseData.ITimeZones;\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ISettingsStore extends IStateStore {\n timeZones: ITimeZones[];\n settingsSaved: boolean | undefined;\n}\n\n@Injectable({providedIn: 'root'})\nexport class SettingsStore extends Store {\n\n private static mapFarmSettings(d: ISettings[]): ISettings {\n return d.length ? d[0] : {\n CreatedAt: new Date(),\n CreatedBy: 0,\n ChangedAt: null,\n ChangedBy: null,\n DeletedAt: null,\n DeletedBy: null,\n Version: 0,\n UseMethodEuf: false,\n UnitElementOxyd: 1,\n IsOxidFarm: false,\n SelectedLanguageKey: 'en',\n FarmTime: 'UTC',\n DigitsAfterDecimalPoint: 2,\n FarmId: 0,\n Id: 0,\n };\n }\n\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n timeZones: [],\n settingsSaved: undefined\n });\n backend.registerObservable(SettingsLoad).subscribe(_ => {\n super.SetLoadState();\n });\n backend.registerObservable(SettingsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(TimeZoneLoadSuccess).subscribe(d => {\n super.Mutate(s => s.timeZones, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(SettingsUpdateSuccess).subscribe(_ => {\n super.Mutate(s => s.settingsSaved, () => true);\n super.Mutate(s => s.settingsSaved, () => undefined);\n });\n backend.registerObservable(SettingsUpdateFail).subscribe(_ => {\n super.Mutate(s => s.settingsSaved, () => false);\n super.Mutate(s => s.settingsSaved, () => undefined);\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return this.Listen(s => s.loading);\n }\n\n public get FirstSetting$(): Observable {\n return super.Listen(s => s.data).pipe(map(SettingsStore.mapFarmSettings));\n }\n\n public get IsOxidFarm(): boolean {\n return SettingsStore.mapFarmSettings(super.Listen(s => s.data).getValue()).UnitElementOxyd === 2;\n }\n\n public get FirstSetting(): ISettings {\n return SettingsStore.mapFarmSettings(super.Listen(s => s.data).getValue());\n }\n\n public getTimeZones(): ITimeZones[] {\n return super.Listen(s => s.timeZones).getValue();\n }\n\n public loadSettings(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new SettingsLoad([]));\n }\n\n public loadTimeZones(): void {\n this.DispatchBackend(new TimeZoneLoad([]));\n }\n\n public updateSettings(settings: ISettings): void {\n super.Mutate(s => s.settingsSaved, () => undefined);\n super.DispatchBackend(new SettingsUpdate([\n {Name: 'settings', Type: ApCustomTypes.Data_BaseData_Settings, Value: settings}\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n SubFarmCreate,\n SubFarmDelete,\n SubFarmsLoad,\n SubFarmsLoadSuccess,\n SubFarmUpdate\n} from 'invoker-transport';\nimport ISubFarms = Data.BaseData.ISubFarms;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ISubFarmStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class SubFarmStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(SubFarmsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadSubFarms(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new SubFarmsLoad([]));\n }\n\n public updateSubFarm(subFarm: ISubFarms): void {\n this.DispatchBackend(new SubFarmUpdate([\n {Name: 'subFarm', Type: ApCustomTypes.Data_BaseData_SubFarms, Value: subFarm}\n ]));\n }\n\n public createSubFarm(subFarm: ISubFarms): void {\n this.DispatchBackend(new SubFarmCreate([\n {Name: 'subFarm', Type: ApCustomTypes.Data_BaseData_SubFarms, Value: subFarm}\n ]));\n }\n\n public deleteSubFarm(subFarm: ISubFarms): void {\n this.DispatchBackend(new SubFarmDelete([\n {Name: 'subFarm', Type: ApCustomTypes.Data_BaseData_SubFarms, Value: subFarm}\n ]));\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport ITerminals = Data.BaseData.ITerminals;\n\nexport enum TerminalsActions {\n TERMINALS_LOAD = '[terminals] load',\n TERMINALS_LOAD_SUCCESS = '[terminals] load success',\n}\n\nexport class TerminalsLoad implements IAction {\n readonly type = TerminalsActions.TERMINALS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class TerminalsLoadSuccess implements IAction {\n readonly type = TerminalsActions.TERMINALS_LOAD_SUCCESS;\n\n constructor(public payload: ITerminals[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {TerminalsLoad, TerminalsLoadSuccess} from '../../../../projects/invoker-transport/src/lib/actions/base-data';\nimport ITerminals = Data.BaseData.ITerminals;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ITerminalsStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class TerminalsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: []\n });\n\n backend.registerObservable(TerminalsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => {\n this.ReloadSource();\n });\n }\n\n /**\n * load terminals from Backend to the Store\n */\n public loadTerminals(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new TerminalsLoad([]));\n }\n\n public get Terminals(): ITerminals[] {\n return this.Listen(s => s.data).getValue();\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IUserContacts = Data.BaseData.IUserContacts;\n\nexport enum UserContactsActions {\n USER_CONTACTS_LOAD = '[user_contacts] load',\n USER_CONTACTS_LOAD_SUCCESS = '[user_contacts] load success',\n USER_CONTACTS_UPDATE = '[user_contacts] update',\n USER_CONTACTS_CREATE = '[user_contacts] create',\n USER_CONTACTS_DELETE = '[user_contacts] delete',\n USER_CONTACTS_SAVE_SUCCESS = '[user_contacts] save success',\n USER_CONTACTS_SAVE_FAIL = '[user_contacts] save fail',\n}\n\nexport class UserContactsLoad implements IAction {\n readonly type = UserContactsActions.USER_CONTACTS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class UserContactsLoadSuccess implements IAction {\n readonly type = UserContactsActions.USER_CONTACTS_LOAD_SUCCESS;\n\n constructor(public payload: IUserContacts[]) {\n }\n}\n\nexport class UserContactsUpdate implements IAction {\n readonly type = UserContactsActions.USER_CONTACTS_UPDATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class UserContactsCreate implements IAction {\n readonly type = UserContactsActions.USER_CONTACTS_CREATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class UserContactsDelete implements IAction {\n readonly type = UserContactsActions.USER_CONTACTS_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class UserContactsSaveSuccess implements IAction {\n readonly type = UserContactsActions.USER_CONTACTS_SAVE_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class UserContactsSaveFail implements IAction {\n readonly type = UserContactsActions.USER_CONTACTS_SAVE_FAIL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {IStateStoreWritable} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {ApCustomTypes} from 'invoker-transport';\nimport {\n UserContactsCreate,\n UserContactsDelete,\n UserContactsLoad,\n UserContactsLoadSuccess,\n UserContactsSaveFail,\n UserContactsSaveSuccess,\n UserContactsUpdate\n} from '../../../../projects/invoker-transport/src/lib/actions/base-data';\nimport {NotifyStore} from '../dialog/notify.store';\nimport IUserContacts = Data.BaseData.IUserContacts;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IUserContactsStore extends IStateStoreWritable {\n}\n\n@Injectable({providedIn: 'root'})\nexport class UserContactsStore extends Store {\n constructor(public backend: ApSignalrService,\n private notifyStore: NotifyStore) {\n super(backend, {\n loaded: false,\n loading: false,\n saved: false,\n saving: false,\n data: []\n });\n\n backend.registerObservable(UserContactsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(UserContactsSaveSuccess).subscribe(d => {\n super.SetSaveSuccessState();\n });\n backend.registerObservable(UserContactsSaveFail).subscribe(() => {\n super.SetSaveFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => {\n this.ReloadSource();\n });\n }\n\n /**\n * load user_contacts from Backend to the Store\n */\n public loadUserContacts(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new UserContactsLoad([]));\n }\n\n /**\n * create user_contact\n */\n public createUserContact(userContact: IUserContacts): void {\n this.SetSaveState();\n this.DispatchBackend(new UserContactsCreate([\n {Name: 'userContact', Type: ApCustomTypes.Data_BaseData_UserContacts, Value: userContact}\n ]));\n }\n\n /**\n * updates user_contact\n */\n public updateUserContact(userContact: IUserContacts): void {\n this.SetSaveState();\n this.DispatchBackend(new UserContactsUpdate([\n {Name: 'userContact', Type: ApCustomTypes.Data_BaseData_UserContacts, Value: userContact}\n ]));\n }\n\n /**\n * deletes user_contact\n */\n public deleteUserContact(userContact: IUserContacts): void {\n this.DispatchBackend(new UserContactsDelete([\n {Name: 'userContact', Type: ApCustomTypes.Data_BaseData_UserContacts, Value: userContact}\n ]));\n }\n\n public get UserContacts(): IUserContacts[] {\n return this.Listen(s => s.data).getValue();\n }\n}\n","import {IStateStoreWritable} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n NetTypes,\n UserCheckUniqueEmail,\n UserCheckUniqueEmailResult,\n UserCheckUniqueUsername,\n UserCheckUniqueUsernameResult,\n UserCreate,\n UserCreateSuccess,\n UsersLoad,\n UsersLoadSuccess,\n UserUpdateFullName,\n UserUpdateFullNameSuccess,\n UserUpdateFullNameFail,\n UserResetRedirectToNews\n} from 'invoker-transport';\nimport IUser = Data.Authentication.IUser;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IUserStore extends IStateStoreWritable {\n isUniqueEmail: boolean;\n isUniqueUsername: boolean;\n isNewUserCreated: IUser;\n}\n\n@Injectable({providedIn: 'root'})\nexport class UserStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n saved: false,\n saving: false,\n data: [],\n isUniqueEmail: false,\n isUniqueUsername: false,\n isNewUserCreated: undefined,\n });\n backend.registerObservable(UsersLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(UserCheckUniqueEmailResult).subscribe(d => {\n super.Mutate(s => s.isUniqueEmail, () => d.Data);\n });\n backend.registerObservable(UserCheckUniqueUsernameResult).subscribe(d => {\n super.Mutate(s => s.isUniqueUsername, () => d.Data);\n });\n backend.registerObservable(UserCreateSuccess).subscribe(d => {\n // TODO s.data = ApLodash.replaceItem(s.data, savedUser, 'Id');\n super.Mutate(s => s.isNewUserCreated, () => d.Data);\n });\n backend.registerObservable(UserUpdateFullNameSuccess).subscribe(() => {\n this.SetSaveSuccessState();\n });\n backend.registerObservable(UserUpdateFullNameFail).subscribe(() => {\n this.SetSaveFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n /**\n * load users from Backend to the Store\n */\n public loadUsers(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new UsersLoad([]));\n }\n\n /**\n * create user\n */\n public createUser(user: IUser): void {\n this.DispatchBackend(new UserCreate([\n {Name: 'user', Type: ApCustomTypes.Data_Authentication_User, Value: user}\n ]));\n }\n\n public checkUniqueEmail(email: string): void {\n this.DispatchBackend(new UserCheckUniqueEmail([\n {Name: 'email', Type: NetTypes.STRING, Value: email}\n ]));\n }\n\n public checkUniqueUsername(username: string): void {\n this.DispatchBackend(new UserCheckUniqueUsername([\n {Name: 'username', Type: NetTypes.STRING, Value: username}\n ]));\n }\n\n public updateUserFullName(userId: number, forename: string, surname: string): void {\n this.SetSaveState();\n this.DispatchBackend(new UserUpdateFullName([\n {Name: 'userId', Type: NetTypes.INT, Value: userId},\n {Name: 'forename', Type: NetTypes.STRING, Value: forename},\n {Name: 'surname', Type: NetTypes.STRING, Value: surname},\n ]));\n }\n\n public resetRedirectToNews(userId: number): void {\n this.DispatchBackend(new UserResetRedirectToNews([\n {Name: 'userId', Type: NetTypes.INT, Value: userId}\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n HibernateModelNames,\n VarietyLoad,\n VarietyLoadSuccess,\n VarietySelectableUpdate\n} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IVariety = Data.BaseData.IVarieties;\nimport DatabaseNotifyOperation = Agriport.Invoker.Api.Database.DatabaseNotifyOperation;\nimport ISelectableVariety = Data.BaseData.ISelectableVariety;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IVarietyStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class VarietyStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(VarietyLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n get Loading(): boolean {\n return this.Loading$.getValue();\n }\n\n get Loaded$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n get Loaded(): boolean {\n return this.Loaded$.getValue();\n }\n\n /**\n * load varieties from Backend to the Store\n */\n public loadVarieties(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new VarietyLoad([]));\n }\n\n /**\n * updates selectableVariety via backend\n */\n public updateSelectableVariety(variety: IVariety): void {\n this.DispatchBackend(new VarietySelectableUpdate([\n {Name: 'variety', Type: ApCustomTypes.Data_BaseData_Varieties, Value: variety},\n ]));\n }\n\n /**\n * override the Update with a custom Update Strategy\n */\n UpdateSource(operation: DatabaseNotifyOperation, item: any, model: string): void {\n if (operation === DatabaseNotifyOperation.Insert || operation === DatabaseNotifyOperation.Delete) {\n if (model === HibernateModelNames.SELECTABLE_VARIETIES) {\n super.Mutate(s => s.data, o => {\n const backendItem = item as ISelectableVariety;\n if (!backendItem) {\n // fallback case reload the Source\n this.loadVarieties();\n return o;\n }\n if (operation === DatabaseNotifyOperation.Delete) {\n this.loadVarieties();\n return o;\n }\n if (operation === DatabaseNotifyOperation.Insert) {\n if (!o) {\n super.SetLoadFinishState();\n return o;\n }\n const position = o.FindIndex(i => i.Id === backendItem.Varietyid);\n const oldItem = o[position];\n o[position] = {...oldItem, Selectable: true};\n super.SetLoadFinishState();\n return o;\n }\n return undefined;\n });\n }\n } else {\n this.loadVarieties();\n }\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport IWorktypeUnit = Data.BaseData.IWorktypeUnit;\nimport {WorktypeUnitLoad, WorktypeUnitLoadSuccess} from 'invoker-transport';\nimport {UnitsStore} from '../common/units.store';\nimport IUnit = Data.Common.IUnit;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n@Injectable({providedIn: 'root'})\nexport class WorktypeUnitStore extends Store> {\n constructor(public backend: ApSignalrService,\n private unitStore: UnitsStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(WorktypeUnitLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n public loadWorktypeUnits(): void {\n this.DispatchBackend(new WorktypeUnitLoad([]));\n }\n\n public getWorktypeUnits(): IWorktypeUnit[] {\n return super.Listen(s => s.data).getValue();\n }\n\n public getUnitsByWorktype(worktypeId: number): IUnit[] {\n return super.Listen(s => s.data).getValue().FindAll(wu => wu?.WorktypeId === worktypeId).map(u => {\n return this.unitStore.getUnitWithUnit(u?.UnitId);\n });\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {WorktypeLoad, WorktypeLoadSuccess} from 'invoker-transport';\nimport {TranslationStore} from '../translation/translation.store';\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IWorkTypesStore extends IStateStore {\n}\n\nexport enum WorkTypeCategory {\n Soil_Cultivation\t= 0,\n Tillage =\t1,\n Fertilisation =\t2,\n PlantProtection =\t3,\n Valuation\t= 4,\n Harvest\t= 5,\n Others\t= 10,\n Transport\t= 13\n}\n\n /**\n * The workType ids are same over all systems\n * => lets use its id's to identify specific worktypes\n */\nexport enum WorkTypes {\n Spraying = 4\n}\n\n@Injectable({providedIn: 'root'})\nexport class WorkTypesStore extends Store {\n constructor(public backend: ApSignalrService,\n private translationStore: TranslationStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(WorktypeLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data.Convert(_ => {\n _.Shortname = this.translationStore.FindTranslationForSelectedLanguage(_.Shortname);\n _.Description = this.translationStore.FindTranslationForSelectedLanguage(_.Description);\n return _;\n }));\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n getWorkTypes(): IWorktypes[] {\n return super.Listen(s => s.data).getValue();\n }\n\n /**\n * load worktypes from Backend to the Store\n */\n public loadWorktypes(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new WorktypeLoad([]));\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {AgriportConstantsLoad, AgriportConstantsLoadSuccess} from 'invoker-transport';\nimport {Injectable} from '@angular/core';\nimport IAgriportConstants = Data.Common.IAgriportConstants;\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\n\ninterface IAgriportConstantsStore extends IStateStore {\n constants: { [key: string]: string };\n}\n\n@Injectable({providedIn: 'root'})\nexport class AgriportConstantsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loading: false,\n loaded: false,\n data: [],\n constants: {}\n });\n\n this.backend.registerObservable(AgriportConstantsLoadSuccess).subscribe((d) => {\n super.Mutate(s => s.constants, () => {\n const result = {};\n d.Data.forEach((entry) => {\n result[entry['Key']] = entry['Value'];\n });\n return result;\n });\n });\n }\n\n public LoadAgriportConstants(): void {\n this.DispatchBackend(new AgriportConstantsLoad([]));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {ApplModesLoad, ApplModesLoadSuccess} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport IApplicationMode = Data.Common.IApplicationMode;\n\ninterface IApplModesStore extends IStateStore {\n}\n\nexport enum ApplicationModesEnum {\n Constant = 'Global__RateConst',\n Variable = 'Global__RateVariable'\n}\n\n@Injectable({providedIn: 'root'})\nexport class ApplModesStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(ApplModesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public get ApplicationModes(): IApplicationMode[] {\n return this.Listen(x => x.data).getValue();\n }\n\n public loadApplModes(): void {\n this.DispatchBackend(new ApplModesLoad([]));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {CountryLoad, CountryLoadSuccess} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport ICountry = Data.Common.ICountry;\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n@Injectable({providedIn: 'root'})\nexport class CountryStore extends Store> {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(CountryLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n /**\n * Triggers load of all available countries\n */\n public loadAllCountries(): void {\n this.DispatchBackend(new CountryLoad([]));\n }\n\n /**\n * Gets all available countries as observable\n */\n get Countries$(): SafeBehaviorSubject {\n return super.Listen(s => s.data);\n }\n\n /**\n * Gets all available countries as array\n */\n get Countries(): ICountry[] {\n return this.Countries$.getValue();\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport IEffectiveRange = Data.BaseData.IEffectiveRange;\nimport {EffectiveRangesLoad, EffectiveRangesLoadSuccess} from 'invoker-transport';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n@Injectable({providedIn: 'root'})\nexport class EffectiveRangesStore extends Store> {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(EffectiveRangesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadEffectiveRanges(): void {\n this.DispatchBackend(new EffectiveRangesLoad([]));\n }\n\n public getEffectiveRangeByKey(key: string): IEffectiveRange {\n return super.Listen(s => s.data).getValue().find(x => x.Key === key);\n }\n\n public getEffectiveRangeById(id: string): IEffectiveRange {\n return super.Listen(s => s.data).getValue().find(x => x.Id === id);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {ElementsLoad, ElementsLoadSuccess} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport IElement = Data.Common.IElement;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IElementsStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class ElementsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(ElementsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public get Elements(): IElement[] {\n return this.Listen(x => x.data).getValue();\n }\n\n public loadElements(): void {\n this.DispatchBackend(new ElementsLoad([]));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {ExportFormatsLoad, ExportFormatsLoadSuccess} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport IExportFormat = Data.Common.IExportFormat;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IExportFormatsStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class ExportFormatsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(ExportFormatsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadExportFormats(): void {\n this.DispatchBackend(new ExportFormatsLoad([]));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {ExportTargetsLoad, ExportTargetsLoadSuccess} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport IExportTarget = Data.Common.IExportTarget;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IExportTargetsStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class ExportTargetsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(ExportTargetsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadExportTargets(): void {\n this.DispatchBackend(new ExportTargetsLoad([]));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {ApCustomTypes, FactorsLoad, FactorsLoadSuccess, FactorsMissing} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport {UnitsStore} from './units.store';\nimport IFactors = Data.Common.IFactors;\nimport IMissingFactors = Data.Tracelog.IMissingFactors;\nimport IUnit = Data.Common.IUnit;\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFactorsState extends IStateStore {\n}\n\nexport interface IFactorsStore {\n loadFactors(): void;\n\n getFactors(): IFactors[];\n\n getFactor(source: IUnit | string, target: IUnit | string): IFactors;\n\n sendMissingFactor(payload: IMissingFactors): void;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FactorsStore extends Store implements IFactorsStore {\n constructor(public backend: ApSignalrService,\n private unitsStore: UnitsStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(FactorsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadFactors(): void {\n this.DispatchBackend(new FactorsLoad([]));\n }\n\n getFactors(): IFactors[] {\n return super.Listen(s => s.data).getValue();\n }\n\n public getFactor(source: IUnit | string, target: IUnit | string): IFactors {\n let unitSource: IUnit;\n let unitTarget: IUnit;\n if (source.hasOwnProperty('Description')) {\n unitSource = source as IUnit;\n } else {\n unitSource = this.unitsStore.getUnit(source as string);\n }\n if (target.hasOwnProperty('Description')) {\n unitTarget = target as IUnit;\n } else {\n unitTarget = this.unitsStore.getUnit(target as string);\n }\n let factor = this.getFactors().find(_ => _.Source.Id === unitSource.Id && _.Target.Id === unitTarget.Id);\n if (factor === undefined) {\n factor = {Id: 0, Source: unitSource, Target: unitTarget, Factor: 1};\n this.sendMissingFactor({Id: 0, Source: unitSource.Id, Target: unitTarget.Id});\n }\n return factor;\n }\n\n public sendMissingFactor(payload: IMissingFactors): void {\n super.DispatchBackend(new FactorsMissing([\n {Name: 'missing', Type: ApCustomTypes.Data_Tracelog_MissingFactors, Value: payload}\n ]));\n }\n}\n","import INotifications = Data.Common.INotifications;\nimport {IAction, IApInvokerArguments} from '../../interfaces';\n\nexport enum NotificationActions {\n NOTIFICATION_LOAD = '[notification] load',\n NOTIFICATION_LOAD_SUCCESS = '[notification] load success',\n NOTIFICATION_ADD = '[notification] add',\n NOTIFICATION_DELETE = '[notification] delete',\n NOTIFICATION_UPDATE = '[notification] update',\n NOTIFICATION_INSERT = '[notification] insert',\n NOTIFICATION_DELETE_ALL = '[notification] delete all',\n}\n\nexport class NotificationLoad implements IAction {\n readonly type = NotificationActions.NOTIFICATION_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class NotificationLoadSuccess implements IAction {\n readonly type = NotificationActions.NOTIFICATION_LOAD_SUCCESS;\n\n constructor(public payload: INotifications[]) {\n }\n}\n\nexport class NotificationAdd implements IAction {\n readonly type = NotificationActions.NOTIFICATION_ADD;\n\n constructor(public payload: INotifications) {\n }\n}\n\nexport class NotificationDelete implements IAction {\n readonly type = NotificationActions.NOTIFICATION_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class NotificationUpdate implements IAction {\n readonly type = NotificationActions.NOTIFICATION_UPDATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class NotificationInsert implements IAction {\n readonly type = NotificationActions.NOTIFICATION_INSERT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class NotificationDeleteAll implements IAction {\n readonly type = NotificationActions.NOTIFICATION_DELETE_ALL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n NotificationAdd,\n NotificationDelete,\n NotificationInsert,\n NotificationLoad,\n NotificationLoadSuccess,\n NotificationUpdate\n} from 'invoker-transport';\nimport {NotificationDeleteAll} from '../../../../projects/invoker-transport/src/lib/actions/common';\nimport INotifications = Data.Common.INotifications;\nimport IGuid = System.IGuid;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface INotificationStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class NotificationStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n backend.registerObservable(NotificationLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(NotificationAdd).subscribe(d => {\n super.Mutate(s => s.data, o => {\n o.Add(d.Data);\n return o;\n });\n });\n this.AfterDatabaseUpdate.subscribe(() => {\n this.ReloadSource();\n });\n }\n\n public getNotifications(): INotifications[] {\n return super.Listen(s => s.data).getValue();\n }\n\n public loadNotification(): void {\n this.DispatchBackend(new NotificationLoad([]));\n }\n\n public deleteAllNotifications(): void {\n this.DispatchBackend(new NotificationDeleteAll([]));\n }\n\n public deleteNotification(notification: INotifications): void {\n this.DispatchBackend(new NotificationDelete([\n {Name: 'notification', Type: ApCustomTypes.Data_Common_Notifications, Value: notification},\n ]));\n }\n\n public updateNotification(notification: INotifications): void {\n this.DispatchBackend(new NotificationUpdate([\n {Name: 'notification', Type: ApCustomTypes.Data_Common_Notifications, Value: notification},\n ]));\n }\n\n public insertNotification(notification: INotifications): void {\n this.DispatchBackend(new NotificationInsert([\n {Name: 'notification', Type: ApCustomTypes.Data_Common_Notifications, Value: notification},\n ]));\n }\n\n public ChangeWasRead(index: number, value: boolean): void {\n super.Mutate(s => s.data, o => {\n o[index].WasRead = value;\n return o;\n });\n this.updateNotification(super.Listen(s => s.data).getValue()[index]);\n }\n\n public ChangeWasReadWithId(id: IGuid, value: boolean): void {\n super.Mutate(s => s.data, o => {\n o.Find(i => i?.Id === id).WasRead = value;\n return o;\n });\n this.updateNotification(super.Listen(s => s.data).getValue().Find(i => i?.Id === id));\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n NUptakeFactorsLoad,\n NUptakeFactorsLoadFailed,\n NUptakeFactorsLoadSuccess\n} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport INUptakeFactors = Data.Common.INUptakeFactors;\nimport IFieldCrop = Data.FieldManagement.IFieldCrop;\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface INUptakeFactorsState extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class NUptakeFactorsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n backend.registerObservable(NUptakeFactorsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(NUptakeFactorsLoadFailed).subscribe(_ => {\n super.Mutate(s => s.data, () => []);\n super.SetLoadFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public get nUptakeFactors$(): SafeBehaviorSubject {\n return this.Listen(x => x.data);\n }\n\n public get nUptakeFactors(): INUptakeFactors[] {\n return this.Listen(x => x.data).getValue();\n }\n\n public loadNUptakeFactors(): void {\n this.DispatchBackend(new NUptakeFactorsLoad([]));\n }\n\n public getNUptakeFactorByFieldCropAndCropType(fieldCrop: IFieldCrop | null, cropType: ICropTypes | null): INUptakeFactors | null {\n if (!fieldCrop || !cropType?.Eppocode) {\n return null;\n }\n const nUptakeFactorsByCropTypeId = this.nUptakeFactors.filter(factor => factor.EppoCode === cropType.Eppocode);\n if (!nUptakeFactorsByCropTypeId) {\n return null;\n }\n return nUptakeFactorsByCropTypeId.find(factor => factor.EcMin <= fieldCrop.EcValue && factor.EcMax >= fieldCrop.EcValue);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {OperationModesLoad, OperationModesLoadSuccess} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IOperationMode = Data.Common.IOperationMode;\n\ninterface IOperationModesStore extends IStateStore {\n}\n\nexport enum OperationModesEnum {\n ApplicationMap = 'AgriConnect__With_AppMap',\n ApplicationMapAbsolute = 'Tsk_Mgmt_AppMapAbs',\n TargetValue = 'OpMode_TargetRateN',\n NFertilization = 'Global__NFertilization',\n RapeFertilization = 'Tasks__Title_AbsN',\n Bonitur = 'Worktype_Category_Bonitur',\n Constant = 'Global__RateConst',\n PpAbsolut = 'Task_Mgmt_PS_Absolut',\n PpTarget = 'Task_Mgmt_PS_Target',\n PpTargetMapPerField = 'Task_Mgmt_PS_Target_Map_per_Field',\n PPTargetMapPerPlan = 'Task_Mgmt_PS_Target_Map_per_Plan'\n}\n\n@Injectable({providedIn: 'root'})\nexport class OperationModesStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n backend.registerObservable(OperationModesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return this.Listen(x => x.loading);\n }\n\n public get OperationModes(): IOperationMode[] {\n return this.Listen(x => x.data).getValue();\n }\n\n public loadOperationModes(): void {\n this.DispatchBackend(new OperationModesLoad([]));\n }\n\n public getIOperationModeByKey(dbKey: string): IOperationMode {\n return this.OperationModes.find(om => om.Key === dbKey);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {UnitsLoad, UnitsLoadSuccess} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport IUnit = Data.Common.IUnit;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IUnitsState extends IStateStore {\n}\n\nexport interface IUnitsStore {\n loadUnits(): void;\n\n getUnit(unit: string): IUnit;\n}\n\n@Injectable({providedIn: 'root'})\nexport class UnitsStore extends Store implements IUnitsStore {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(UnitsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadUnits(): void {\n this.DispatchBackend(new UnitsLoad([]));\n }\n\n public getUnit(unit: string): IUnit {\n return super.Listen(s => s.data).getValue().find(x => x.Description === unit);\n }\n\n public getUnitByKey(key: string): IUnit {\n return super.Listen(s => s.data).getValue().find(x => x.Key === key);\n }\n\n public getUnitWithUnit(unitId: number): IUnit {\n return super.Listen(s => s.data).getValue().find(x => x.Id === unitId);\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {NetTypes, NewsAdd, NewsLoad, NewsLoadSuccess} from 'invoker-transport';\nimport {NotifyStore} from '../dialog/notify.store';\nimport INews = Data.Dashboard.INews;\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\n\ninterface INewsStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class NewsStore extends Store {\n constructor(public backend: ApSignalrService,\n private notifyStore: NotifyStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(NewsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(NewsAdd).subscribe(d => {\n const newNews = {\n DisplayTimeout: 5,\n Level: Data.Api.Validation.ApValidationLevel.News,\n ErrorKey: 'Global_New_News'\n } as IApValidationResult;\n this.notifyStore.addMessage(newNews);\n super.Mutate(s => s.data, o => {\n o.Add(d.Data);\n return o;\n });\n });\n }\n\n public loadNews(region: string): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new NewsLoad([\n {Name: 'region', Type: NetTypes.STRING, Value: region}\n ]));\n }\n}\n","import {\n IModalDialogData, IModalDialogResult\n} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {Injectable} from '@angular/core';\nimport {TranslationStore} from '../translation/translation.store';\n\nexport enum ModalDialogButtonKeys {\n Delete = 'delete',\n Confirm = 'confirm'\n}\n\n@Injectable({providedIn: 'root'})\nexport class ModalDialogPresets {\n constructor(private translationStore: TranslationStore) {\n }\n\n DeleteDialog(options?: { title?: string, message?: string, resultDelegate?: (data: any, dialogResult: IModalDialogResult) => void }): IModalDialogData {\n return {\n title: this.translationStore.FindTranslationForSelectedLanguage(options?.title ?? 'Global__Dialog_Title_Delete'),\n message: this.translationStore.FindTranslationForSelectedLanguage(options?.message ?? 'Global__Dialog_Message_Delete'),\n show: true,\n resultDelegate: options?.resultDelegate,\n buttons: [\n {key: '', text: 'Global__Cancel', primary: false},\n {key: ModalDialogButtonKeys.Delete, text: 'Global__Delete', primary: true}\n ],\n } as IModalDialogData;\n }\n\n UnsavedChangesDialog(options?: { title?: string, message?: string, resultDelegate?: (data: any, dialogResult: IModalDialogResult) => void }): IModalDialogData {\n return {\n title: this.translationStore.FindTranslationForSelectedLanguage(options?.title ?? 'Global__Warning'),\n message: this.translationStore.FindTranslationForSelectedLanguage(options?.message ?? 'Global__Unsaved_Data'),\n show: true,\n resultDelegate: options?.resultDelegate,\n buttons: [\n {key: ModalDialogButtonKeys.Confirm, text: 'Global__Ok', primary: true},\n {key: '', text: 'Global__Cancel', primary: false}\n ],\n } as IModalDialogData;\n }\n\n ExistPlanBooksDialog(options?: { title?: string, message?: string, confirmKey?: string }): IModalDialogData {\n return {\n title: this.translationStore.FindTranslationForSelectedLanguage(options?.title ?? 'HdrConfirm'),\n message: this.translationStore.FindTranslationForSelectedLanguage(options?.message ?? 'Global__Dialog_Message_CheckPlanBooks'),\n show: true,\n buttons: [\n {key: '', text: 'Global__Cancel', primary: false},\n {key: options.confirmKey ?? ModalDialogButtonKeys.Confirm, text: 'Global__Confirm', primary: true}\n ],\n } as IModalDialogData;\n }\n\n public ExtendLicenseDialog(options?: { message?: string, resultDelegate?: (data: any, dialogResult: IModalDialogResult) => void }): IModalDialogData {\n return {\n title: this.translationStore.FindTranslationForSelectedLanguage('TextInfo__Adjust_License_Request'),\n message: this.translationStore.FindTranslationForSelectedLanguage(options?.message ?? ''),\n show: true,\n resultDelegate: options?.resultDelegate,\n buttons: [\n {key: '', text: 'Global__Ignore', primary: false},\n {key: ModalDialogButtonKeys.Confirm, text: 'Global__Adjust_License', primary: true}\n ],\n } as IModalDialogData;\n }\n}\n","import {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n IModalDialogButton,\n IModalDialogData,\n IModalDialogFormConfig,\n IModalDialogResult\n} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\nimport {ObjectFactory} from 'ts-tooling';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IModalDialogStore {\n title: string;\n busy: boolean;\n message: string;\n show: boolean;\n buttons: IModalDialogButton[];\n result: IModalDialogResult;\n formConfig: IModalDialogFormConfig;\n formValues: any;\n formChanges: any;\n resultDelegate: (dialogResult: IModalDialogResult) => void;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ModalDialogStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n title: '',\n busy: false,\n message: '',\n show: false,\n buttons: [],\n result: {key: undefined, formValues: undefined},\n formConfig: undefined,\n formValues: {},\n formChanges: {},\n resultDelegate: undefined\n }, true);\n }\n\n public setModalDialogData(data: IModalDialogData): void {\n super.Mutate(s => s.buttons, () => data.buttons);\n super.Mutate(s => s.formConfig, () => data.formConfig);\n super.Mutate(s => s.message, () => data.message);\n super.Mutate(s => s.show, () => data.show);\n super.Mutate(s => s.busy, () => data.busy === true);\n super.Mutate(s => s.title, () => data.title);\n super.Mutate(s => s.formChanges, () => data.values);\n super.Mutate(s => s.resultDelegate, () => data.resultDelegate);\n super.Mutate(s => s.result, () => ({key: undefined, formValues: undefined} as IModalDialogResult));\n }\n\n public setShow(show: boolean): void {\n super.Mutate(s => s.show, () => show);\n }\n\n public sendResult(key: string, formValues: any): void {\n super.Mutate(s => s.result, () => ({key, formValues}));\n // to get rid of subscribe/unsubscribe mess with modal dialogs, lets use a more robust delegate handling\n // for now the delegate is optional\n const resultDelegate = super.Listen(s => s.resultDelegate)?.getValue();\n if (resultDelegate) {\n resultDelegate({key, formValues} as IModalDialogResult);\n }\n }\n\n public getFormValues(): any {\n return super.Listen(s => s.formValues).getValue();\n }\n\n public setFormValues(value: any): void {\n super.Mutate(s => s.formValues, () => value);\n }\n\n public setFormChanges(value: any): void {\n super.Mutate(s => s.formChanges, () => value);\n }\n\n public listenChanges(): Observable {\n return super.Listen(s => s.formChanges).pipe(\n filter((v) => v != null),\n map(formChanges => ObjectFactory.Copy(formChanges))\n );\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {NotifyRecieveMessage, NotifySaveMessage} from 'invoker-transport';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\nimport ApValidationLevel = Data.Api.Validation.ApValidationLevel;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface INotifyStore extends IStateStore {\n displayMessages: IApValidationResult[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class NotifyStore extends Store {\n\n private maxNotifications = APP_CONFIGURATION.MaxNotifications;\n\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loading: false,\n loaded: false,\n displayMessages: [],\n });\n backend.registerObservable(NotifySaveMessage).subscribe(d => {\n if (d.Data === true) {\n this.showSaveSuccessMessage();\n } else {\n this.showSaveFailMessage();\n }\n });\n this.backend.registerObservable(NotifyRecieveMessage).subscribe(d => this.addMessage(d.Data));\n }\n\n public getNotify(): IApValidationResult[] {\n return super.Listen(s => s.data).getValue();\n }\n\n public getDisplayMessages(): IApValidationResult[] {\n return super.Listen(s => s.displayMessages).getValue();\n }\n\n public showSaveSuccessMessage(): void {\n const successMessage = {\n DisplayTimeout: 5,\n Level: ApValidationLevel.Success,\n ErrorKey: 'Global__Successfully_Saved'\n } as IApValidationResult;\n this.addMessage(successMessage);\n }\n\n public showSaveFailMessage(): void {\n const failMessage = {\n DisplayTimeout: 5,\n Level: ApValidationLevel.Error,\n ErrorKey: 'Global__SaveDataFailed'\n } as IApValidationResult;\n this.addMessage(failMessage);\n }\n\n public addMessage(note: IApValidationResult): void {\n if (this.getNotify().FindIndex(d => {\n return d.ErrorKey === note.ErrorKey;\n }) < 0) {\n this.add(note);\n }\n }\n\n /**\n * Removes the given notification from notify store.\n */\n public removeMessage(note: IApValidationResult): void {\n this.remove(note);\n }\n\n private add(p: IApValidationResult): void {\n const found = this.getNotify().Find(i => i?.ErrorKey + i?.UserId === p?.ErrorKey + p?.UserId);\n if (found) {\n found.Counter++;\n const data = [...this.getNotify().FindAll(i => i?.ErrorKey + i?.UserId !== p?.ErrorKey + p?.UserId), found];\n super.Mutate(s => s.data, () => data);\n const displayMessages = this.getNotify().slice(0, this.maxNotifications);\n super.Mutate(s => s.displayMessages, () => displayMessages);\n return;\n }\n super.Mutate(s => s.data, () => [...this.getNotify(), p]);\n super.Mutate(s => s.displayMessages, () => this.getNotify().slice(0, this.maxNotifications));\n }\n\n private remove(p: IApValidationResult): void {\n super.Mutate(s => s.data, () => this.getNotify().FindAll(i => i.ErrorKey + i.UserId !== p.ErrorKey + p.UserId));\n super.Mutate(s => s.displayMessages, () => this.getNotify().slice(0, this.maxNotifications));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ActionsApplicationAdd,\n ActionsApplicationDrop,\n FieldActionLoadSuccess,\n FieldActionsLoad,\n FleetActionLoadSuccess,\n FleetActionsLoad,\n FleetActionsUpdateSuccess,\n LocationsLoad,\n LocationsLoadSuccess,\n NetTypes\n} from 'invoker-transport';\nimport {MapStore} from '../map/map.store';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IFieldAction = Data.DocuContext.FleetManagement.IFieldAction;\nimport IFleetAction = Data.DocuContext.FleetManagement.IFleetAction;\nimport ILocationModel = Data.DocuContext.Location.ILocationModel;\nimport ILocationsEnvelop = Data.DocuContext.Location.ILocationsEnvelop;\nimport IGuid = System.IGuid;\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport IReadApplicationModel = Data.DocuContext.ApplicationData.IReadApplicationModel;\nimport {SettingsStore} from '../base-data/settings.store';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IActionStore extends IStateStore {\n fieldActions: IFieldAction[];\n fleetActions: IFleetAction[];\n locations: ILocationModel[];\n locationLoading: boolean;\n locationLoaded: boolean;\n selectedLocations: ILocationModel[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class ActionStore extends Store {\n constructor(public backend: ApSignalrService,\n private settingsStore: SettingsStore,\n private mapStore: MapStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n fieldActions: [],\n fleetActions: [],\n locations: [],\n selectedLocations: [],\n locationLoading: false,\n locationLoaded: false\n });\n\n backend.registerObservable(FieldActionLoadSuccess).subscribe(d => {\n super.Mutate(s => s.fieldActions, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(FleetActionLoadSuccess).subscribe(d => {\n super.Mutate(s => s.fleetActions, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(FleetActionsUpdateSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(LocationsLoadSuccess).subscribe(d => {\n const locationsEnvelop = d.Data as ILocationsEnvelop;\n // because of loading location within an interval there is a risk\n // that during the load-process of the interval the user switches to another farm.\n // Therefor we need to skip the load result whenever it differs to the currently selected farm\n // Have to use settingsStore to retrieve current farm because loginStore leads to circular dependency\n if (locationsEnvelop?.FarmId !== this.settingsStore.FirstSetting?.FarmId) {\n return;\n }\n\n this.mapStore.Layers.LocationsLayer.replaceSource(locationsEnvelop?.Locations ?? []);\n super.Mutate(s => s.locations, () => locationsEnvelop?.Locations ?? []);\n super.Mutate(s => s.locationLoaded, () => true);\n super.Mutate(s => s.locationLoading, () => false);\n super.SetLoadFinishState();\n });\n }\n\n /**\n * Subject which indicates if everything is currently loading\n */\n get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n /**\n * Indicates if everything is currently loading\n */\n get Loading(): boolean {\n return this.Loading$.getValue();\n }\n\n /**\n * Subject which indicates if everything has been loaded\n */\n get Loaded$(): SafeBehaviorSubject {\n return super.Listen(s => s.loaded);\n }\n\n /**\n * Indicates if everything has been loaded\n */\n get Loaded(): boolean {\n return this.Loaded$.getValue();\n }\n\n /**\n * Subject which indicates if locations (of machines) are currently loading from backend\n */\n get LocationsLoading$(): SafeBehaviorSubject {\n return super.Listen(s => s.locationLoading);\n }\n\n /**\n * Indicates if locations (of machines) are currently loading from backend\n */\n get LocationsLoading(): boolean {\n return this.LocationsLoading$.getValue();\n }\n\n getLocations(): ILocationModel[] {\n return super.Listen(s => s.locations).getValue();\n }\n\n /**\n * load fleet actions from Backend to the Store\n */\n public loadFieldActions(from: Date, to: Date, fields: IGuid[], cropType: ICropTypes,\n workType: IWorktypes, includeApproach: boolean): void {\n const cropKey = cropType ? cropType.CropKey : -1;\n const workTypeId = workType ? workType.Id : -1;\n super.SetLoadState();\n super.Mutate(s => s.fieldActions, () => []);\n this.DispatchBackend(new FieldActionsLoad([\n {Name: 'from', Type: NetTypes.DATETIME, Value: from},\n {Name: 'to', Type: NetTypes.DATETIME, Value: to},\n {Name: 'fieldIds', Type: NetTypes.GUID + '[]', Value: fields},\n {Name: 'cropKey', Type: NetTypes.INT, Value: cropKey},\n {Name: 'workTypeId', Type: NetTypes.INT, Value: workTypeId},\n {Name: 'includeApproach', Type: NetTypes.BOOL, Value: includeApproach},\n ]));\n }\n\n /**\n * load fleet actions from Backend to the Store\n */\n public loadFleetActions(): void {\n super.SetLoadState();\n super.Mutate(s => s.fleetActions, () => []);\n this.DispatchBackend(new FleetActionsLoad([]));\n }\n\n /**\n * load locations from Backend to the Store\n */\n public loadLocations(): void {\n super.SetLoadState();\n super.Mutate(s => s.locationLoaded, () => false);\n super.Mutate(s => s.locationLoading, () => true);\n this.DispatchBackend(new LocationsLoad([]));\n }\n\n /**\n * select locations in the Grid\n */\n public changeSelectedLocation(locationIds: IGuid[]): void {\n super.Mutate(s => s.selectedLocations, () => []);\n super.Mutate(s => s.selectedLocations, () => this.getLocations() ? this.getLocations().filter(loc => locationIds.indexOf(loc.Id) !== -1) : []);\n }\n\n public dropApplication(application: IReadApplicationModel, actionId: string): void {\n this.DispatchBackend(new ActionsApplicationDrop({\n application,\n actionId\n }));\n }\n\n public addApplication(application: IReadApplicationModel, actionId: string): void {\n this.DispatchBackend(new ActionsApplicationAdd({\n application,\n actionId\n }));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n DriverMachineLoad,\n DriverMachineLoadSuccess,\n DriversMachinesCreate,\n DriversMachinesDelete,\n DriversMachinesUpdate\n} from 'invoker-transport';\nimport IDriverMachine = Data.DocuContext.DriversMachines.IDriverMachine;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IDriverMachineStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class DriverMachineStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(DriverMachineLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n getDriverMachine(): IDriverMachine[] {\n return super.Listen(s => s.data).getValue();\n }\n\n /**\n * load drivers machines from Backend to the Store\n */\n public loadDriverMachine(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new DriverMachineLoad([]));\n }\n\n /**\n * updates driverMachines via backend\n */\n public updateDriverMachine(driverMachine: IDriverMachine): void {\n this.DispatchBackend(new DriversMachinesUpdate([\n {\n Name: 'driverMachine',\n Type: ApCustomTypes.Data_DocuContext_DriversMachines_DriverMachine,\n Value: driverMachine\n }\n ]));\n }\n\n /**\n * creates new driverMachines via backend\n */\n public createDriverMachine(driverMachine: IDriverMachine): void {\n this.DispatchBackend(new DriversMachinesCreate([\n {\n Name: 'driverMachine',\n Type: ApCustomTypes.Data_DocuContext_DriversMachines_DriverMachine,\n Value: driverMachine\n }\n ]));\n }\n\n /**\n * Deletes the driverMachine via backend.\n */\n public deleteDriverMachine(driverMachine: IDriverMachine): void {\n this.DispatchBackend(new DriversMachinesDelete([\n {\n Name: 'driverMachine',\n Type: ApCustomTypes.Data_DocuContext_DriversMachines_DriverMachine,\n Value: driverMachine\n }\n ]));\n }\n}\n","import {IStateStoreWritable} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApCustomTypes,\n DriversCreate,\n DriversDelete,\n DriversLoad,\n DriversLoadSuccess,\n DriversSaveFail,\n DriversSaveSuccess,\n DriversUpdate\n} from 'invoker-transport';\nimport {MachineStore} from './machine.store';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IResultMessage = Invoker.IResultMessage;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IDriverStore extends IStateStoreWritable {\n}\n\n@Injectable({providedIn: 'root'})\nexport class DriverStore extends Store {\n constructor(public backend: ApSignalrService,\n private machineStore: MachineStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n saving: false,\n saved: false\n });\n\n backend.registerObservable(DriversLoadSuccess)\n .subscribe(this.onDriverLoadSuccess.bind(this));\n backend.registerObservable(DriversSaveSuccess).subscribe(() => {\n super.SetSaveSuccessState();\n });\n backend.registerObservable(DriversSaveFail).subscribe(() => {\n super.SetSaveFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.machineStore.ReloadSource());\n }\n\n public get Drivers$(): SafeBehaviorSubject {\n return this.Listen(x => x.data);\n }\n\n /**\n * load drivers from Backend to the Store\n */\n public loadDrivers(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n super.DispatchBackend(new DriversLoad([]));\n }\n\n /**\n * updates driver via backend\n */\n public updateDriver(driver: IDriver): void {\n super.SetSaveState();\n this.DispatchBackend(new DriversUpdate([\n {Name: 'driver', Type: ApCustomTypes.Data_DocuContext_Driver_Driver, Value: driver}\n ]));\n }\n\n /**\n * creates new driver via backend\n */\n public createDriver(driver: IDriver): void {\n super.SetSaveState();\n this.DispatchBackend(new DriversCreate([\n {Name: 'driver', Type: ApCustomTypes.Data_DocuContext_Driver_Driver, Value: driver}\n ]));\n }\n\n /**\n * Deletes the driver via backend.\n */\n public deleteDriver(driver: IDriver): void {\n this.DispatchBackend(new DriversDelete([\n {Name: 'driver', Type: ApCustomTypes.Data_DocuContext_Driver_Driver, Value: driver}\n ]));\n }\n\n public getDriverById(guid: string | System.IGuid | null): IDriver | null {\n if (!guid) {\n return null;\n }\n return super.Listen(s => s.data).getValue().find(d => d.Id === guid);\n }\n\n private onDriverLoadSuccess(d: IResultMessage): void {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApCustomTypes,\n AttachmentDriverAssignmentGet,\n AttachmentDriverAssignmentGetSuccess,\n AttachmentInstrumentAssignmentGet,\n AttachmentInstrumentAssignmentGetSuccess,\n FleetActionAttachmentCreate,\n FleetActionAttachmentLoad,\n FleetActionAttachmentLoadSuccess,\n FleetActionAttachmentSave,\n FleetActionAttachmentSaveSuccess,\n FleetActionsAttachmentLoadByModified,\n FleetActionsAttachmentLoadByModifiedSuccess,\n NetTypes\n} from 'invoker-transport';\nimport {ApLodash} from '../../ap-utils';\nimport IDateRangeAssigment = Data.BaseData.IDateRangeAssigment;\nimport IFleetActionAttachment = Data.DocuContext.FleetManagement.IFleetActionAttachment;\nimport IGuid = System.IGuid;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFleetActionAttachmentStore extends IStateStore {\n driverDateRangeAssignments: IDateRangeAssigment[];\n instrumentDateRageAssignments: IDateRangeAssigment[];\n filter: (IFleetActionAttachment) => boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FleetActionAttachmentStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n driverDateRangeAssignments: [],\n instrumentDateRageAssignments: [],\n filter: () => true,\n });\n\n backend.registerObservable(AttachmentDriverAssignmentGetSuccess).subscribe(d => {\n super.Mutate(s => s.driverDateRangeAssignments, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(AttachmentInstrumentAssignmentGetSuccess).subscribe(d => {\n super.Mutate(s => s.instrumentDateRageAssignments, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(FleetActionAttachmentLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(FleetActionsAttachmentLoadByModifiedSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(FleetActionAttachmentSaveSuccess).subscribe(d => {\n super.Mutate(s => s.data,\n () => ApLodash.replaceItem(super.Listen(s => s.data).getValue(), d.Data,\n f => d.Data.map((i) => i.Id).indexOf(f.Id) !== -1));\n });\n }\n\n public getDriverAssignment(): void {\n super.DispatchBackend(new AttachmentDriverAssignmentGet([]));\n }\n\n public getInstrumentAssignments(): void {\n super.DispatchBackend(new AttachmentInstrumentAssignmentGet([]));\n }\n\n public loadFleetActionAttachments(fieldId: IGuid | IGuid[]): void {\n if (!(fieldId instanceof Array)) {\n fieldId = [fieldId];\n }\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n super.DispatchBackend(new FleetActionAttachmentLoad([\n {Name: 'fieldIds', Type: NetTypes.GUID + '?[]', Value: fieldId},\n ]));\n }\n\n public loadFleetActionAttachmentsByModified(modified: boolean): void {\n super.SetLoadState();\n super.DispatchBackend(new FleetActionsAttachmentLoadByModified([\n {Name: 'modified', Type: NetTypes.BOOL, Value: modified}\n ]));\n }\n\n public removeModifiedFleetActionAttachments(): void {\n const filter = (a: IFleetActionAttachment) => !a.Attachment.IsModified;\n super.Mutate(s => s.filter, () => filter);\n super.Mutate(s => s.data,\n () => super.Listen(s => s.data).getValue().filter(filter));\n }\n\n public removeUnmodifiedFleetActionAttachments(): void {\n const filter = (a: IFleetActionAttachment) => a.Attachment.IsModified;\n super.Mutate(s => s.filter, () => filter);\n super.Mutate(s => s.data,\n () => super.Listen(s => s.data).getValue().filter(filter));\n }\n\n public saveFleetActionAttachments(data: IFleetActionAttachment | IFleetActionAttachment[]): void {\n if (!(data instanceof Array)) {\n data = [data];\n }\n data.forEach((d) => {\n if (d.Attachment && typeof d.Attachment.Comment !== typeof '') {\n d.Attachment.Comment = '';\n }\n });\n super.DispatchBackend(new FleetActionAttachmentSave([\n {\n Name: 'fleetActionAttachments',\n Type: ApCustomTypes.Data_DocuContext_FleetManagement_FleetActionAttachment + '[]',\n Value: data\n }\n ]));\n }\n\n public createFleetActionAttachment(data: IFleetActionAttachment): void {\n super.DispatchBackend(new FleetActionAttachmentCreate([\n {\n Name: 'fleetActionAttachment',\n Type: ApCustomTypes.Data_DocuContext_FleetManagement_FleetActionAttachment,\n Value: data\n }\n ]));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n GeoJsonGenerateByField,\n GeoJsonGenerateByMachine,\n GeoJsonGenerateBySlice,\n GeoJsonGenerateMultipoint,\n GeoJsonGenerateSuccess,\n NetTypes\n} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {ApGuidUtil} from '../../ap-utils';\nimport IGuid = System.IGuid;\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport IWorktypes = Data.BaseData.IWorktypes;\nimport IField = Data.FieldManagement.IField;\nimport IAttachment = Data.DocuContext.Attachment.IAttachment;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n\ninterface IGeoJsonStore extends IStateStore {\n generating: boolean;\n generated: boolean;\n geoJson: {};\n pending: string[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class GeoJsonStore extends Store {\n constructor(private backend: ApSignalrService) {\n super(backend, {\n loading: false,\n loaded: false,\n data: [],\n generating: false,\n generated: false,\n geoJson: {},\n pending: [],\n });\n backend.registerObservable(GeoJsonGenerateSuccess).subscribe(d => {\n super.Mutate(s => s.pending, () => super.Listen(s => s.pending).getValue().filter(v => v !== d.Data.Key));\n super.Mutate(s => s.geoJson, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n generateGeoJsonBySlice(id: IGuid): void {\n if (!this.isPending(id as string)) {\n super.Mutate(s => s.generating, () => true);\n super.Mutate(s => s.generated, () => false);\n super.Mutate(s => s.geoJson, () => null);\n super.Mutate(s => s.pending, () => [...super.Listen(s => s.pending).getValue(), id.toString()]);\n this.DispatchBackend(new GeoJsonGenerateBySlice([\n {Name: 'sliceId', Type: NetTypes.GUID, Value: id}\n ]));\n }\n }\n\n generateGeoJsonByMachine(guid: IGuid, machine: IMachine, date: Date): void {\n if (!this.isPending(guid as string)) {\n super.Mutate(s => s.generating, () => true);\n super.Mutate(s => s.generated, () => false);\n super.Mutate(s => s.geoJson, () => null);\n super.Mutate(s => s.pending, () => [...super.Listen(s => s.pending).getValue(), guid]);\n this.DispatchBackend(new GeoJsonGenerateByMachine([\n {Name: 'guid', Type: NetTypes.GUID, Value: guid},\n {Name: 'machine', Type: ApCustomTypes.Data_DocuContext_Machine_Machine, Value: machine},\n {Name: 'date', Type: NetTypes.DATETIME, Value: date},\n ]));\n }\n }\n\n generateGeoJsonByField(attachment: IAttachment, field: IField, date: Date, workType: IWorktypes = null): void {\n if (!this.isPending(attachment.Id as string)) {\n super.Mutate(s => s.generating, () => true);\n super.Mutate(s => s.generated, () => false);\n super.Mutate(s => s.geoJson, () => null);\n super.Mutate(s => s.pending, () => [...super.Listen(s => s.pending).getValue(), attachment.Id]);\n this.DispatchBackend(new GeoJsonGenerateByField([\n {Name: 'attachmentId', Type: NetTypes.GUID, Value: attachment.Id},\n {Name: 'fieldId', Type: NetTypes.GUID, Value: field ? field.Id : ApGuidUtil.getEmptyGuid()},\n {Name: 'date', Type: NetTypes.DATETIME, Value: date},\n {Name: 'workType', Type: ApCustomTypes.Data_BaseData_Worktypes, Value: workType},\n ]));\n }\n }\n\n isPending(guid: string): boolean {\n return super.Listen(s => s.pending).getValue().indexOf(guid) !== -1;\n }\n\n clearGeoJson(): void {\n super.Mutate(s => s.generating, () => false);\n super.Mutate(s => s.generated, () => false);\n super.Mutate(s => s.geoJson, () => null);\n super.Mutate(s => s.pending, () => []);\n }\n\n generateGeoJson(datasetId: string, farmId: number): void {\n super.Mutate(s => s.generating, () => true);\n super.Mutate(s => s.generated, () => false);\n super.Mutate(s => s.geoJson, () => null);\n super.Mutate(s => s.pending, () => [...super.Listen(s => s.pending).getValue(), datasetId]);\n this.DispatchBackend(new GeoJsonGenerateMultipoint([\n {Name: 'datasetId', Type: NetTypes.GUID, Value: datasetId},\n {Name: 'farmId', Type: NetTypes.INT, Value: farmId},\n ]));\n }\n\n}\n","import {IStateStoreWritable} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n InstrumentsCreate,\n InstrumentsDelete,\n InstrumentsLoad,\n InstrumentsLoadSuccess,\n InstrumentsSaveFail,\n InstrumentsSaveSuccess,\n InstrumentsUpdate\n} from 'invoker-transport';\nimport {MachineStore} from './machine.store';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IResultMessage = Invoker.IResultMessage;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IInstrumentStore extends IStateStoreWritable {\n}\n\n@Injectable({providedIn: 'root'})\nexport class InstrumentStore extends Store {\n constructor(public backend: ApSignalrService,\n private machineStore: MachineStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n saving: false,\n saved: false\n });\n\n backend.registerObservable(InstrumentsLoadSuccess)\n .subscribe(this.onInstrumentLoadFinish.bind(this));\n backend.registerObservable(InstrumentsSaveSuccess).subscribe(() => {\n super.SetSaveSuccessState();\n });\n backend.registerObservable(InstrumentsSaveFail).subscribe(() => {\n super.SetSaveFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.machineStore.ReloadSource());\n }\n\n public get Instruments$(): SafeBehaviorSubject {\n return this.Listen(x => x.data);\n }\n\n /**\n * load instruments from Backend to the Store\n */\n public loadInstruments(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new InstrumentsLoad([]));\n }\n\n /**\n * Updates the instrument via backend.\n */\n public updateInstrument(instrument: IInstrument): void {\n super.SetSaveState();\n this.DispatchBackend(new InstrumentsUpdate([\n {Name: 'instrument', Type: ApCustomTypes.Data_DocuContext_Instrument_Instrument, Value: instrument}\n ]));\n }\n\n /**\n * Creates the instrument via backend.\n */\n public createInstrument(instrument: IInstrument): void {\n super.SetSaveState();\n this.DispatchBackend(new InstrumentsCreate([\n {Name: 'instrument', Type: ApCustomTypes.Data_DocuContext_Instrument_Instrument, Value: instrument}\n ]));\n }\n\n /**\n * Deletes the instrument via backend.\n */\n public deleteInstrument(instrument: IInstrument): void {\n this.DispatchBackend(new InstrumentsDelete([\n {Name: 'instrument', Type: ApCustomTypes.Data_DocuContext_Instrument_Instrument, Value: instrument}\n ]));\n }\n\n public getInstrumentById(guid: string | System.IGuid | null): IInstrument | null {\n if (!guid) {\n return null;\n }\n return super.Listen(s => s.data).getValue().find(i => i.Id === guid);\n }\n\n private onInstrumentLoadFinish(d: IResultMessage): void {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n }\n}\n","import {IStateStoreWritable} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n LoggerCreate,\n LoggerDelete,\n LoggerLoad,\n LoggerLoadSuccess,\n LoggerSaveFail,\n LoggerSaveSuccess,\n LoggerUpdate\n} from 'invoker-transport';\nimport ILogger = Data.DocuContext.Logger.ILogger;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n@Injectable({providedIn: 'root'})\nexport class LoggerStore extends Store> {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n saving: false,\n saved: false\n });\n\n backend.registerObservable(LoggerLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(LoggerSaveSuccess).subscribe(() => {\n super.SetSaveSuccessState();\n });\n backend.registerObservable(LoggerSaveFail).subscribe(() => {\n super.SetSaveFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n getLogger(): ILogger[] {\n return super.Listen(s => s.data).getValue();\n }\n\n public loadLogger(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new LoggerLoad([]));\n }\n\n /**\n * Updates the logger via backend.\n */\n public updateLogger(logger: ILogger): void {\n super.SetSaveState();\n this.DispatchBackend(new LoggerUpdate([\n {Name: 'logger', Type: ApCustomTypes.Data_DocuContext_Logger_Logger, Value: logger}\n ]));\n }\n\n /**\n * Updates the logger via backend.\n */\n public createLogger(logger: ILogger): void {\n super.SetSaveState();\n this.DispatchBackend(new LoggerCreate([\n {Name: 'logger', Type: ApCustomTypes.Data_DocuContext_Logger_Logger, Value: logger}\n ]));\n }\n\n /**\n * Sets delete flag of the logger the via backend.\n */\n public deleteLogger(logger: ILogger): void {\n this.DispatchBackend(new LoggerDelete([\n {Name: 'logger', Type: ApCustomTypes.Data_DocuContext_Logger_Logger, Value: logger}\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {MachineBreaksLoad, MachineBreaksLoadSuccess} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {MapStore} from '../map/map.store';\nimport IMachineBreak = Data.DocuContext.Machine.IMachineBreak;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IMachineBreaksStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class MachineBreaksStore extends Store {\n constructor(public backend: ApSignalrService,\n private mapStore: MapStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(MachineBreaksLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n this.mapStore.Legends.onMachineBreaksChanged.emit(d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public get MachineBreaks$(): SafeBehaviorSubject {\n return this.Listen(s => s.data);\n }\n\n public get MachineBreaks(): IMachineBreak[] {\n return this.MachineBreaks$.getValue();\n }\n\n public getMachineBraksForKind(machineKind: number): IMachineBreak[] {\n return this.MachineBreaks.FindAll(_ => _.Kind === machineKind);\n }\n\n public getMachineBraksForKindAndProperty(machineKind: number, property: string): IMachineBreak[] {\n return this.MachineBreaks.FindAll(_ => _.Kind === machineKind && _.Property === property);\n }\n\n loadMachineBreaks(): void {\n this.DispatchBackend(new MachineBreaksLoad([]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n MachinesLoggerCreate,\n MachinesLoggerDelete,\n MachinesLoggerLoad,\n MachinesLoggerLoadSuccess,\n MachinesLoggerUpdate\n} from 'invoker-transport';\nimport IMachineLogger = Data.DocuContext.MachinesLogger.IMachinesLogger;\nimport IMachinesLogger = Data.DocuContext.MachinesLogger.IMachinesLogger;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IMachineLoggerStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class MachineLoggerStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(MachinesLoggerLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n getMachineLogger(): IMachineLogger[] {\n return super.Listen(s => s.data).getValue();\n }\n\n /**\n * load machines logger from Backend to the Store\n */\n public loadMachinesLogger(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new MachinesLoggerLoad([]));\n }\n\n /**\n * Updates machinesLogger via backend graphql.\n */\n public updateMachinesLogger(machinesLogger: IMachineLogger): void {\n this.DispatchBackend(new MachinesLoggerUpdate([\n {\n Name: 'machinesLogger',\n Type: ApCustomTypes.Data_DocuContext_MachinesLogger_MachinesLogger,\n Value: machinesLogger\n }\n ]));\n }\n\n /**\n * Creates new machinesLogger via backend graphql.\n */\n public createMachinesLogger(machinesLogger: IMachinesLogger): void {\n this.DispatchBackend(new MachinesLoggerCreate([\n {\n Name: 'machinesLogger',\n Type: ApCustomTypes.Data_DocuContext_MachinesLogger_MachinesLogger,\n Value: machinesLogger\n }\n ]));\n }\n\n /**\n * Deletes machinesLogger via backend graphql.\n */\n public deleteMachinesLogger(machinesLogger: IMachinesLogger): void {\n this.DispatchBackend(new MachinesLoggerDelete([\n {\n Name: 'machinesLogger',\n Type: ApCustomTypes.Data_DocuContext_MachinesLogger_MachinesLogger,\n Value: machinesLogger\n }\n ]));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n MachinesCreate,\n MachinesDelete,\n MachinesGetInUseDays,\n MachinesGetInUseDaysSuccess,\n MachinesLoad,\n MachinesLoadSuccess,\n MachinesSaveFail,\n MachinesSaveSuccess,\n MachinesUpdate,\n MachineTypesLoad,\n MachineTypesLoadSuccess,\n NetTypes\n} from 'invoker-transport';\nimport {IStateStoreWritable} from '../../ap-interface';\nimport {Store} from '../index';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport IMachineType = Data.BaseData.IMachineType;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IMachineStore extends IStateStoreWritable {\n days: string[];\n machineTypes: IMachineType[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class MachineStore extends Store {\n constructor(private backend: ApSignalrService) {\n super(backend, {\n loading: false,\n loaded: false,\n data: [],\n days: [],\n machineTypes: [],\n saved: false,\n saving: false\n });\n\n // register Actions from Backend\n backend.registerObservable(MachineTypesLoadSuccess).subscribe(d => {\n super.Mutate((s) => s.machineTypes, () => d.Data);\n });\n backend.registerObservable(MachinesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(MachinesGetInUseDaysSuccess).subscribe(d => {\n super.Mutate(s => s.days, () => d.Data);\n });\n backend.registerObservable(MachinesSaveSuccess).subscribe(() => {\n super.SetSaveSuccessState();\n });\n backend.registerObservable(MachinesSaveFail).subscribe(() => {\n super.SetSaveFailState();\n });\n }\n\n public get Machines$(): SafeBehaviorSubject {\n return this.Listen(x => x.data);\n }\n\n /**\n * inform the Backend to load all Machines for this Session\n */\n public loadMachines(): void {\n super.SetLoadState();\n super.Mutate(d => d.data, () => []);\n super.DispatchBackend(new MachinesLoad([]));\n }\n\n /**\n * inform the Backend to load all Days of a Machine that have Data\n */\n public getDaysInUse(machine: IMachine, start: Date, end: Date): void {\n super.Mutate(d => d.days, () => []);\n super.DispatchBackend(new MachinesGetInUseDays([\n {Name: 'machine', Type: ApCustomTypes.Data_DocuContext_Machine_Machine, Value: machine},\n {Name: 'start', Type: NetTypes.DATETIME, Value: start},\n {Name: 'end', Type: NetTypes.DATETIME, Value: end}\n ]));\n }\n\n /**\n * inform the backend to save the given Machine\n */\n public updateMachine(machine: IMachine): void {\n super.SetSaveState();\n super.DispatchBackend(new MachinesUpdate([\n {Name: 'machine', Type: ApCustomTypes.Data_DocuContext_Machine_Machine, Value: machine}\n ]));\n }\n\n /**\n * inform the backend to create the given Machine\n */\n public createMachine(machine: IMachine): void {\n super.SetSaveState();\n super.DispatchBackend(new MachinesCreate([\n {Name: 'machine', Type: ApCustomTypes.Data_DocuContext_Machine_Machine, Value: machine}\n ]));\n }\n\n /**\n * inform the Backend to delete the given Machine\n * that means set isDeleted to true!\n */\n deleteMachine(machine: IMachine): void {\n super.DispatchBackend(new MachinesDelete([\n {Name: 'machine', Type: ApCustomTypes.Data_DocuContext_Machine_Machine, Value: machine}\n ]));\n }\n\n public loadMachineTypes(): void {\n super.DispatchBackend(new MachineTypesLoad([]));\n }\n\n public getMachineById(guid: string | System.IGuid | null): IMachine | null {\n if (!guid) {\n return null;\n }\n return super.Listen(s => s.data).getValue().find(m => m.Id === guid);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n NetTypes,\n SliceCalcBruttoNettoArea,\n SliceCombinedLoadByMachineAndDate,\n SliceCombinedLoadByMachineAndDateSuccess,\n SliceLoad,\n SliceLoadAll,\n SliceLoadSuccess\n} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {isDate} from 'lodash';\nimport ISliceFilter = Data.DocuContext.Slice.ISliceFilter;\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport ISlice = Data.DocuContext.Slice.ISlice;\nimport ICombinedSlice = Data.DocuContext.Slice.ICombinedSlice;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ISliceStore extends IStateStore {\n combinedSlices: ICombinedSlice[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class SliceStore extends Store {\n constructor(private backend: ApSignalrService) {\n super(backend, {\n loading: false,\n loaded: false,\n data: [],\n combinedSlices: []\n });\n backend.registerObservable(SliceLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(SliceCombinedLoadByMachineAndDateSuccess).subscribe(d => {\n super.Mutate(s => s.combinedSlices, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n public loadAllSlices(): void {\n super.SetLoadState();\n super.Mutate(d => d.data, () => []);\n super.DispatchBackend(new SliceLoadAll([]));\n }\n\n public loadSlicesCombinedByMachineAndDate(machine: IMachine, from, to): void {\n const dateFrom = isDate(from) ? from.toISOString() : from;\n const dateTo = isDate(to) ? to.toISOString() : to;\n super.SetLoadState();\n super.Mutate(d => d.data, () => []);\n super.DispatchBackend(new SliceCombinedLoadByMachineAndDate([\n {Name: 'machine', Type: ApCustomTypes.Data_DocuContext_Machine_Machine, Value: machine},\n {Name: 'from', Type: NetTypes.DATETIME, Value: dateFrom},\n {Name: 'to', Type: NetTypes.DATETIME, Value: dateTo}\n ]\n ));\n }\n\n public loadSlices(farmId: number, from: Date, to: Date, filter: ISliceFilter): void {\n super.SetLoadState();\n super.Mutate(d => d.data, () => []);\n super.DispatchBackend(new SliceLoad([\n {Name: 'from', Type: NetTypes.DATETIME, Value: from},\n {Name: 'to', Type: NetTypes.DATETIME, Value: to},\n {Name: 'sliceFilter', Type: ApCustomTypes.Data_DocuContext_Slice_SliceFilter, Value: filter},\n ]\n ));\n }\n\n public async calculateBruttoNettoArea(slices: ISlice[], workingWidth: number): Promise {\n return new Promise(resolve => {\n this.DispatchBackend(new SliceCalcBruttoNettoArea([\n {Name: 'slices', Type: ApCustomTypes.Data_DocuContext_Slice_Slice + '[]', Value: slices},\n {Name: 'workingWidth', Type: NetTypes.DOUBLE, Value: workingWidth},\n ])).watchStream({\n action: SliceCalcBruttoNettoArea,\n todo: res => {\n resolve(res.Data);\n }\n });\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n NetTypes,\n SoilSampleFieldDistributionLoad,\n SoilSampleFieldDistributionLoadSuccess,\n SoilSampleFieldLoad,\n SoilSampleFieldLoadSuccess,\n SoilSampleLoad,\n SoilSampleLoadSuccess\n} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport {IStreamWatch, Store} from '../index';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {MapStore} from '../map/map.store';\nimport {\n SamplePointsExcelExport,\n SamplePointsExcelExportSuccess, SampleTracksInfo,\n SampleTracksShapeExport,\n SampleTracksShapeExportSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/evaluation';\nimport * as download from 'downloadjs';\nimport ISoilSampleField = Data.Nutrients.ISoilSampleField;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n\ninterface ISoilSampleFieldStore extends IStateStore {\n selectedSampleFields: ISoilSampleField[];\n exportedShapeFile: ArrayBuffer;\n exportedExcelFile: ArrayBuffer;\n}\n\n// ToDo ApMapStateService ==> mapStore\n\n@Injectable({providedIn: 'root'})\nexport class SoilSampleFieldStore extends Store {\n constructor(private backend: ApSignalrService,\n private mapStore: MapStore) {\n super(backend, {\n loading: false,\n loaded: false,\n data: [],\n selectedSampleFields: [],\n exportedShapeFile: null,\n exportedExcelFile: null\n });\n\n backend.registerObservable(SoilSampleFieldLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n this.mapStore.Layers.SampleFieldLayer.replaceSource(d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(SoilSampleFieldDistributionLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(SoilSampleLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(SampleTracksShapeExportSuccess).subscribe(d => {\n super.Mutate(s => s.exportedShapeFile, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(SamplePointsExcelExportSuccess).subscribe(d => {\n super.Mutate(s => s.exportedExcelFile, () => d.Data);\n super.SetLoadFinishState();\n if (d.Data && d.Data[0] && d.Data[1]) {\n download(d.Data[1], `${d.Data[0]}.xlsx`, 'application/excel');\n }\n });\n }\n\n public get SoilSampleFields$(): SafeBehaviorSubject {\n return this.Listen(s => s.data);\n }\n\n public get SoilSampleField(): ISoilSampleField[] {\n return this.SoilSampleFields$.getValue();\n }\n\n public get SelectedSoilSampleFields$(): SafeBehaviorSubject {\n return this.Listen(s => s.selectedSampleFields);\n }\n\n public get Loaded$(): SafeBehaviorSubject {\n return this.Listen(s => s.loaded);\n }\n\n public get Loaded(): boolean {\n return this.Loaded$.getValue();\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return this.Listen(s => s.loading);\n }\n\n public get Loading(): boolean {\n return this.Loading$.getValue();\n }\n\n /**\n * It is necessary to reset downloads after they have been downloaded by user.\n * Otherwise, they remain in the store and once the component opens again the last/old\n * download is triggered again.\n */\n public resetDownloads(): void {\n super.Mutate(s => s.exportedShapeFile, () => null);\n super.Mutate(s => s.exportedExcelFile, () => null);\n }\n\n /**\n * load SampleFields they have BU-Raster into Map\n */\n public loadSoilSampleFields(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n super.Mutate(s => s.exportedShapeFile, () => null);\n super.Mutate(s => s.exportedExcelFile, () => null);\n this.DispatchBackend(new SoilSampleFieldLoad([]));\n }\n\n /**\n * load different SampleField Distributions of one Nutrient\n */\n public loadMultipleSampleFieldDistributions(sampleFieldIds: number[], nutrient: number): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new SoilSampleFieldDistributionLoad([\n {Name: 'sampleFieldIds', Type: NetTypes.INT + '[]', Value: sampleFieldIds},\n {Name: 'bandNumber', Type: NetTypes.INT, Value: nutrient}\n ]));\n }\n\n /**\n * load the Sample Points of a SampleField also used to display the Tracks!\n */\n public loadSoilSamples(sampleFieldId: number): void {\n this.loadMultipleSoilSamples([sampleFieldId]);\n }\n\n /**\n * load the Sample Points of different SampleFields\n */\n public loadMultipleSoilSamples(sampleFieldIds: number[]): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new SoilSampleLoad([\n {Name: 'sampleFieldIds', Type: NetTypes.INT + '[]', Value: sampleFieldIds},\n ]));\n }\n\n public changeSelectedSampleField(sampleFieldIds: number[]): void {\n const sampleFields = [];\n for (const sampleFieldId of sampleFieldIds) {\n const sampleField = this.SoilSampleField.Find(sf => sf?.Id === sampleFieldId);\n if (!sampleFields || sampleFields.Any(sf => sf.Id === sampleFieldId)) {\n continue;\n }\n sampleFields.push(sampleField);\n }\n this.Mutate(s => s.selectedSampleFields, () => sampleFields);\n }\n\n public sampleTracksShapeExport(sampleFieldIds: number[], dateExpr: string, customerExpr: string): void {\n super.SetLoadState();\n super.Mutate(s => s.exportedShapeFile, () => null);\n this.DispatchBackend(new SampleTracksShapeExport([\n {Name: 'sampleFieldIds', Type: NetTypes.INT + '[]', Value: sampleFieldIds},\n {Name: 'dateExpr', Type: NetTypes.STRING, Value: dateExpr},\n {Name: 'customerExpr', Type: NetTypes.STRING, Value: customerExpr},\n ]));\n }\n\n public samplePointsExcelExport(sampleFieldIds: number[], filename: string): void {\n super.SetLoadState();\n super.Mutate(s => s.exportedExcelFile, () => null);\n this.DispatchBackend(new SamplePointsExcelExport([\n {Name: 'sampleFieldIds', Type: NetTypes.INT + '[]', Value: sampleFieldIds},\n {Name: 'filename', Type: NetTypes.STRING, Value: filename},\n ]));\n }\n\n public sampleTracksInfo(sampleFieldIds: number[]): IStreamWatch {\n super.SetLoadState();\n super.Mutate(s => s.exportedExcelFile, () => null);\n return this.DispatchBackend(new SampleTracksInfo([\n {Name: 'sampleFieldIds', Type: NetTypes.INT + '[]', Value: sampleFieldIds}\n ]));\n }\n}\n","import IFieldCropRotation = Data.FieldManagement.IFieldCropRotation;\nimport ICropRotationCell = Data.FieldManagement.ICropRotationCell;\nimport IFieldCropRotationHistory = Data.FieldManagement.IFieldCropRotationHistory;\nimport {IAction, IApInvokerArguments} from '../../interfaces';\nimport ICropRotationAttributes = Data.FieldManagement.ICropRotationAttributes;\n\nexport enum ApCropRotationActions {\n LOAD = '[crop rotation] load',\n SUCCESS = '[crop rotation] load success',\n FAIL = '[crop rotation] load fail',\n LOAD_PAST = '[crop rotation] load past',\n LOAD_PAST_SUCCESS = '[crop rotation] load past success',\n MARK_FOR_SAVING = '[crop rotation] mark for saving',\n UNMARK_FROM_SAVING = '[crop rotation] unmark from saving',\n PROCESS_CELL = '[crop rotation] process cell',\n PROCESS_CELL_SUCCESS = '[crop rotation] process cell success',\n PROCESS_CELL_FAIL = '[crop rotation] process cell fail',\n LOAD_CROP_ROTATION_ATTRIBUTES= '[crop rotation] attributes load',\n LOAD_CROP_ROTATION_ATTRIBUTES_SUCCESS= '[crop rotation] attributes load success',\n LOAD_CROP_ROTATION_ATTRIBUTES_TRIGGER= '[crop rotation] attributes load trigger'\n}\n\nexport class ApCropRotationLoad implements IAction {\n readonly type = ApCropRotationActions.LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ApCropRotationLoadSuccess implements IAction {\n readonly type = ApCropRotationActions.SUCCESS;\n\n constructor(public payload: IFieldCropRotation[]) {\n }\n}\n\nexport class ApCropRotationLoadFail implements IAction {\n readonly type = ApCropRotationActions.FAIL;\n}\n\nexport class ApCropRotationPastLoad implements IAction {\n readonly type = ApCropRotationActions.LOAD_PAST;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ApCropPastRotationLoadSuccess implements IAction {\n readonly type = ApCropRotationActions.LOAD_PAST_SUCCESS;\n\n constructor(public payload: IFieldCropRotationHistory[]) {\n }\n}\n\nexport class ApCropRotationProcessCell implements IAction {\n readonly type = ApCropRotationActions.PROCESS_CELL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ApCropRotationProcessCellSuccess implements IAction {\n readonly type = ApCropRotationActions.PROCESS_CELL_SUCCESS;\n\n constructor(public payload: ICropRotationCell[]) {\n }\n}\n\nexport class ApCropRotationProcessCellFail implements IAction {\n readonly type = ApCropRotationActions.PROCESS_CELL_FAIL;\n}\n\nexport class ApCropRotationMarkForSaving implements IAction {\n readonly type = ApCropRotationActions.MARK_FOR_SAVING;\n\n constructor(public payload: ICropRotationCell[]) {\n }\n}\n\nexport class ApCropRotationUnMarkForSaving implements IAction {\n readonly type = ApCropRotationActions.UNMARK_FROM_SAVING;\n\n constructor(public payload: ICropRotationCell[]) {\n }\n}\nexport class ApCropRotationAttributesLoad implements IAction {\n readonly type = ApCropRotationActions.LOAD_CROP_ROTATION_ATTRIBUTES;\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ApCropRotationAttributesLoadSuccess implements IAction {\n readonly type = ApCropRotationActions.LOAD_CROP_ROTATION_ATTRIBUTES_SUCCESS;\n\n constructor(public payload: ICropRotationAttributes[]) {\n }\n}\n\nexport class ApCropRotationAttributesTrigger implements IAction {\n readonly type = ApCropRotationActions.LOAD_CROP_ROTATION_ATTRIBUTES_TRIGGER;\n\n constructor(public payload: ICropRotationAttributes[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {\n ApCropPastRotationLoadSuccess,\n ApCropRotationLoad,\n ApCropRotationLoadSuccess,\n ApCropRotationProcessCell,\n ApCropRotationProcessCellFail,\n ApCropRotationProcessCellSuccess,\n ApCustomTypes\n} from 'invoker-transport';\nimport {cloneDeep} from 'lodash';\nimport {distinctUntilChanged, filter} from 'rxjs/operators';\nimport {ObjectFactory, SafeBehaviorSubject} from 'ts-tooling';\nimport {LoginStore} from '../login/login.store';\nimport {\n ApCropRotationAttributesLoad,\n ApCropRotationAttributesLoadSuccess,\n ApCropRotationAttributesTrigger,\n ApCropRotationPastLoad\n} from '../../../../projects/invoker-transport/src/lib/actions/farm';\nimport {CropTypeStore} from '../base-data/crop.types.store';\nimport ICropRotationCell = Data.FieldManagement.ICropRotationCell;\nimport IFieldCropRotation = Data.FieldManagement.IFieldCropRotation;\nimport IFieldCropRotationHistory = Data.FieldManagement.IFieldCropRotationHistory;\nimport ICropRotationYield = Data.FieldManagement.ICropRotationYield;\nimport ICropRotationAttributes = Data.FieldManagement.ICropRotationAttributes;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\nexport class FieldCropRotationHistory {\n [key: string]: { [key: number]: CropRotationYield };\n}\n\nexport class CropRotationYield implements ICropRotationYield {\n MainCrop: number;\n MainCropStraw: boolean;\n MainCropYield: number;\n SecondCrop: number;\n SecondCropYield: number;\n MainCropName: string;\n SecondCropName: string;\n}\n\ninterface ICropRotationStore extends IStateStore {\n marked: ICropRotationCell[];\n saving: ICropRotationCell[];\n history: FieldCropRotationHistory;\n historyLoading: boolean;\n cropRotationAttributes: ICropRotationAttributes[];\n cropRotationAttributesLoading: false;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CropRotationStore extends Store {\n public loginStoreFinish = new EventEmitter();\n\n constructor(public backend: ApSignalrService,\n private cropTypeStore: CropTypeStore) {\n super(backend, {\n data: [],\n loading: false,\n loaded: false,\n marked: [],\n saving: [],\n history: {},\n historyLoading: false,\n cropRotationAttributes: [],\n cropRotationAttributesLoading: false,\n }, true);\n this.loginStoreFinish.subscribe(loginStore => {\n loginStore.FieldStore.Fields$.pipe(\n distinctUntilChanged((previous, current) =>\n previous.length === current.length &&\n previous.every((v, i) =>\n v.FieldName === current[i]?.FieldName &&\n v.FieldNumber === current[i]?.FieldNumber &&\n v.FieldSubnumber === current[i]?.FieldSubnumber)),\n filter((fields) => fields.length !== 0)\n ).subscribe(() => {\n this.LoadFieldCropRotationPast();\n this.LoadCropRotationAttributes();\n });\n\n loginStore.FieldStore.Fields$.pipe(\n distinctUntilChanged((previous, current) =>\n previous.length === current.length &&\n previous.every((v, i) =>\n v.FieldCrops.length === v.FieldCrops.length &&\n v.FieldCrops.every((fc, ifc) =>\n fc.Cropkey === current[i].FieldCrops[ifc]?.Cropkey &&\n fc.CroptypeSecondId === current[i]?.FieldCrops[ifc]?.CroptypeSecondId &&\n fc.StrawHarvested === current[i]?.FieldCrops[ifc]?.StrawHarvested &&\n fc.ExpectedYield === current[i]?.FieldCrops[ifc]?.ExpectedYield &&\n fc.ExpectedYieldSecond === current[i]?.FieldCrops[ifc]?.ExpectedYieldSecond\n )\n )\n )\n ).subscribe(() => {\n super.Mutate(s => s, o => {\n return o;\n });\n });\n backend.registerObservable(ApCropRotationProcessCellSuccess).subscribe(d => {\n const cells = d.Data as ICropRotationCell[];\n super.Mutate(s => s, o => {\n for (const cell of cells) {\n const line = o.data.Find((rotation) => rotation?.Id === cell.FieldId);\n if (line && line.Yields[cell.YearIndex + 1]) {\n this.fillCropRotationLine(line, cell);\n }\n const tmp = o.data.FindAll((rotation) => rotation.Id !== cell.FieldId);\n if (line) {\n tmp.AddRange([line]);\n }\n o.data = tmp;\n o.saving = o.saving.FindAll(i2 => i2.FieldId !== cell.FieldId && i2.Year !== cell.Year);\n }\n return o;\n });\n if (loginStore.CampaignYearStore.SelectedCampaignYear) {\n loginStore.FieldStore.loadFields(loginStore.CampaignYearStore.SelectedCampaignYear.DefaultStart);\n }\n });\n });\n backend.registerObservable(ApCropRotationProcessCellFail).subscribe(d => {\n const cells = d.Data as ICropRotationCell[];\n super.Mutate(s => s, o => {\n for (const cell of cells) {\n const line = o.data.Find(_ => _?.Id === cell.FieldId);\n const emptyValue = {\n MainCrop: null,\n MainCropYield: 0,\n MainCropStraw: false,\n SecondCrop: null,\n SecondCropYield: 0,\n YearIndex: cell.YearIndex,\n Year: cell.Year\n } as ICropRotationCell;\n if (line && line.Yields[cell.YearIndex + 1]) {\n this.fillCropRotationLine(line, emptyValue);\n } else {\n line?.Yields?.Add(emptyValue);\n }\n const tmp = o.data.FindAll(_ => _.Id !== cell.FieldId);\n if (line) {\n tmp.AddRange([line]);\n }\n o.data = tmp;\n o.saving = o.saving.FindAll(i2 => i2.FieldId !== cell.FieldId && i2.Year !== cell.Year);\n }\n return o;\n });\n });\n backend.registerObservable(ApCropRotationLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(ApCropRotationAttributesTrigger).subscribe(() => {\n this.LoadCropRotationAttributes();\n });\n backend.registerObservable(ApCropPastRotationLoadSuccess).subscribe(d => {\n super.Mutate(s => s.historyLoading, () => false);\n super.Mutate(s => s.history, () => {\n const history = {};\n d.Data.forEach((data: IFieldCropRotationHistory) => {\n const years = Object.keys(data.CropRotation);\n for (const year of years) {\n data.CropRotation[year].MainCropName = this.cropTypeStore.GetCropTypeName(data.CropRotation[year].MainCrop);\n data.CropRotation[year].SecondCropName = this.cropTypeStore.GetCropTypeName(data.CropRotation[year].SecondCrop);\n }\n history[data.FieldId as string] = data.CropRotation;\n });\n return history;\n });\n });\n backend.registerObservable(ApCropRotationAttributesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.cropRotationAttributes, () => d.Data);\n super.Mutate(s => s.cropRotationAttributesLoading, () => false);\n });\n }\n\n private fillCropRotationLine(line: IFieldCropRotation, cell: ICropRotationCell): void {\n line.Yields[cell.YearIndex + 1].MainCrop = cell.MainCrop;\n line.Yields[cell.YearIndex + 1].MainCropYield = cell.MainCropYield;\n line.Yields[cell.YearIndex + 1].MainCropStraw = cell.MainCropStraw;\n line.Yields[cell.YearIndex + 1].SecondCrop = cell.SecondCrop;\n line.Yields[cell.YearIndex + 1].SecondCropYield = cell.SecondCropYield;\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n public get GetAttributes$(): SafeBehaviorSubject {\n return this.Listen(s => s.cropRotationAttributes);\n }\n\n public get HistoryLoading$(): SafeBehaviorSubject {\n return super.Listen(s => s.historyLoading);\n }\n\n public get GetHistory$(): SafeBehaviorSubject {\n return this.Listen(s => s.history);\n }\n\n public get GetHistory(): FieldCropRotationHistory {\n return this.GetHistory$.getValue();\n }\n\n public get FieldCropRotations$(): SafeBehaviorSubject {\n return super.Listen(s => s.data);\n }\n\n public get FieldCropRotationsLoading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n public get FieldCropSaving$(): SafeBehaviorSubject {\n return super.Listen(s => s.saving);\n }\n\n public get CropRotation(): IFieldCropRotation[] {\n return super.Listen(s => s.data).getValue();\n }\n\n public get MarkedForSaving(): ICropRotationCell[] {\n return super.Listen(s => s.marked).getValue();\n }\n\n public LoadFieldCropRotation(): void {\n if (super.Listen(s => s.data).getValue().length === 0) {\n super.Mutate(s => s.loading, () => true);\n }\n this.DispatchBackend(new ApCropRotationLoad([]));\n }\n\n public LoadFieldCropRotationPast(): void {\n super.Mutate(s => s.historyLoading, () => true);\n super.Mutate(s => s.history, () => ({}));\n this.DispatchBackend(new ApCropRotationPastLoad([]));\n }\n\n public ProcessCells(cells: ICropRotationCell[]): void {\n super.Mutate(s => s.saving, () => cells);\n this.DispatchBackend(new ApCropRotationProcessCell([\n {Name: 'cells', Type: ApCustomTypes.Data_FieldManagement_CropRotationCell + '[]', Value: cells}\n ]));\n }\n\n public MarkForSaving(cells: ICropRotationCell[]): void {\n super.Mutate(s => s.marked, o => {\n const tmp = cloneDeep(o);\n for (const i of cells) {\n const idx = o.FindIndex(saving => saving.FieldId === i.FieldId && saving.Year === i.Year);\n if (idx !== -1) {\n tmp[idx] = i;\n } else {\n tmp.push(i);\n }\n }\n return tmp;\n });\n }\n\n public UnmarkFromSaving(cells: ICropRotationCell[]): void {\n super.Mutate(s => s.marked, o => {\n for (const i of cells) {\n o = o.FindAll(m => m.FieldId !== i.FieldId && m.Year !== i.Year);\n }\n return o;\n });\n }\n\n public LoadCropRotationAttributes(): void {\n super.Mutate(s => s.cropRotationAttributesLoading, () => true);\n this.DispatchBackend(new ApCropRotationAttributesLoad([]));\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n FarmLoad,\n FarmLoadFail,\n FarmLoadSuccess,\n FarmUpdateRegistryNumber,\n FarmUpdateRegistryNumberFail,\n FarmUpdateRegistryNumberSuccess,\n FarmUpdateCountry,\n FarmUpdateCountrySuccess,\n FarmUpdateCountryFail\n} from 'invoker-transport';\nimport {NetTypes, ApCustomTypes} from '../../../../projects/invoker-transport/src/lib/generated/backend.enums';\nimport IFarm = Data.Authentication.IFarm;\nimport ICountry = Data.Common.ICountry;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFarmStore extends IStateStore {\n registryNumberUpdated: boolean | undefined;\n countryUpdated: boolean | undefined;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FarmStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n registryNumberUpdated: undefined,\n countryUpdated: undefined\n });\n backend.registerObservable(FarmLoad).subscribe(_ => {\n super.SetLoadState();\n });\n backend.registerObservable(FarmLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(FarmLoadFail).subscribe(_ => {\n super.SetLoadFailState();\n });\n backend.registerObservable(FarmUpdateRegistryNumberSuccess).subscribe(_ => {\n super.Mutate(s => s.registryNumberUpdated, () => true);\n super.Mutate(s => s.registryNumberUpdated, () => undefined);\n });\n backend.registerObservable(FarmUpdateRegistryNumberFail).subscribe(_ => {\n super.Mutate(s => s.registryNumberUpdated, () => false);\n super.Mutate(s => s.registryNumberUpdated, () => undefined);\n });\n backend.registerObservable(FarmUpdateCountrySuccess).subscribe(_ => {\n super.Mutate(s => s.countryUpdated, () => true);\n super.Mutate(s => s.countryUpdated, () => undefined);\n });\n backend.registerObservable(FarmUpdateCountryFail).subscribe(_ => {\n super.Mutate(s => s.countryUpdated, () => false);\n super.Mutate(s => s.countryUpdated, () => undefined);\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadFarm(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new FarmLoad([]));\n }\n\n public updateRegistryNumber(registryNumber: string): void {\n super.Mutate(s => s.registryNumberUpdated, () => undefined);\n this.DispatchBackend(new FarmUpdateRegistryNumber([\n {Name: 'registryNumber', Type: NetTypes.STRING, Value: registryNumber}\n ]));\n }\n\n public updateFarmCountry(farmCountry: ICountry): void {\n super.Mutate(s => s.countryUpdated, () => undefined);\n this.DispatchBackend(new FarmUpdateCountry([\n {Name: 'country', Type: ApCustomTypes.Data_Common_Country, Value: farmCountry}\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n FarmUsersDelete,\n FarmUsersDeleteSuccess,\n FarmUsersLoad,\n FarmUsersLoadSuccess,\n FarmUsersUpdate,\n FarmUsersUpdateSuccess\n} from 'invoker-transport';\nimport {ApLodash} from '../../ap-utils';\nimport IFarmUsers = Data.Authentication.IFarmUsers;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFarmUsersStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class FarmUsersStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(FarmUsersLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(FarmUsersUpdateSuccess).subscribe(d => {\n super.Mutate(s => s.data, o => ApLodash.replaceItem(o, d.Data, 'Id'));\n super.SetLoadFinishState();\n });\n backend.registerObservable(FarmUsersDeleteSuccess).subscribe(d => {\n const deletedFarmUserId = d.Data;\n super.Mutate(s => s.data, o => {\n o.RemoveAll(e => e.Id === deletedFarmUserId);\n return o;\n });\n super.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n getFarmUsers(): IFarmUsers[] {\n return super.Listen(s => s.data).getValue();\n }\n\n\n public loadFarmUsers(): void {\n this.DispatchBackend(new FarmUsersLoad([]));\n }\n\n public update(farmUser: IFarmUsers): void {\n this.DispatchBackend(new FarmUsersUpdate([\n {Name: 'farmUser', Type: ApCustomTypes.Data_Authentication_FarmUsers, Value: farmUser}\n ]));\n }\n\n public delete(farmUser: IFarmUsers): void {\n this.DispatchBackend(new FarmUsersDelete([\n {Name: 'farmUser', Type: ApCustomTypes.Data_Authentication_FarmUsers, Value: farmUser}\n ]));\n }\n\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IFieldBase = Data.FieldManagement.IFieldBase;\n\nexport enum FieldArchiveActions {\n FIELD_ARCHIVE_LOAD = '[field archive] load',\n FIELD_ARCHIVE_LOAD_SUCCESS = '[field archive] load success',\n}\n\n/**\n * load deleted/archive fields (lightweight version of field) from backend\n */\nexport class FieldArchiveLoad implements IAction {\n readonly type = FieldArchiveActions.FIELD_ARCHIVE_LOAD;\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * success of load deleted/archive fields (lightweight version of field) from backend\n */\nexport class FieldArchiveLoadSuccess implements IAction {\n readonly type = FieldArchiveActions.FIELD_ARCHIVE_LOAD_SUCCESS;\n constructor(public payload: IFieldBase[]) {\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {IStateStore} from '../../ap-interface';\nimport IGuid = System.IGuid;\nimport IFieldBase = Data.FieldManagement.IFieldBase;\nimport {NetTypes} from 'invoker-transport';\nimport {\n FieldArchiveLoad,\n FieldArchiveLoadSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/farm/field-archive.action';\nimport {isDate} from 'moment';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n@Injectable({providedIn: 'root'})\nexport class FieldArchiveStore extends Store> {\n\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: []});\n\n backend.registerObservable(FieldArchiveLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n public loadFieldArchive(campaignYearStart: Date | string): void {\n super.SetLoadState();\n const campaignYearStartIso = isDate(campaignYearStart) ? (campaignYearStart as Date).toISOString() : campaignYearStart;\n super.Mutate(d => d.data, () => []);\n this.DispatchBackend(new FieldArchiveLoad([\n {Name: 'campaignYearStart', Type: NetTypes.DATETIME, Value: campaignYearStartIso},\n ]));\n }\n\n public getFieldArchiveById(fieldId: string | IGuid): IFieldBase {\n return super.Listen(s => s.data)?.value?.Find(e => e.Id?.toString() === fieldId?.toString());\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport {DataStateChangeEvent} from './progress.mapping';\nimport IField = Data.FieldManagement.IField;\nimport IFieldGrowth = Data.FieldManagement.IFieldGrowth;\nimport IFieldBase = Data.FieldManagement.IFieldBase;\nimport IGeoJsonPolygon = Data.Geometry.IGeoJsonPolygon;\nimport IResultMessage = Invoker.IResultMessage;\n\nexport enum FieldActions {\n FIELD_LOAD = '[field] load',\n FIELD_LOAD_FROM_DATERANGE = '[field] load from date range',\n FIELD_LOAD_FROM_DATERANGE_SUCCESS = '[field] load from date range success',\n FIELD_LOAD_FROM_DATERANGE_FAIL = '[field] load from date range fail',\n FIELD_LOAD_SUCCESS = '[field] load success',\n FIELD_LOAD_FAIL = '[field] load fail',\n FIELD_SELECT = '[field] select',\n FIELD_SELECT_CENTROID = '[field] selectcentroid',\n FIELD_SORT = '[field] sort',\n FIELD_SAVE = '[field] save',\n FIELD_DELETE = '[field] delete',\n FIELD_MERGE = '[field] merge',\n FIELD_MERGE_FAILED = '[field] merge failed',\n FIELD_MERGE_SUCCESS = '[field] merge success',\n FIELD_SPLIT = '[field] split',\n FIELD_SPLIT_SUCCESS = '[field] split success',\n FIELD_SPLIT_FAILED = '[field] split failed',\n FIELD_CROP_CREATE = '[field_crop] create',\n FIELD_CROP_LOAD = '[field_crop] load',\n FIELD_CROP_DELETE = '[field_crop] delete',\n FIELD_CROPS_SAVE = '[field_crops] save',\n FIELD_CROPS_SAVE_SUCCESS = '[field_crops] save success',\n FIELD_CROPS_SAVE_FAILED = '[field_crops] save failed',\n FIELD_UPDATE = '[field] update',\n FIELD_GROWTH_SAVE = '[field_growth] save',\n FIELD_GEOM_DELETE = '[field_geom] delete',\n FIELD_GROWTH_LOAD = '[growth] load',\n FIELD_GROWTH_LOAD_SUCCESS = '[growth] load success',\n FIELD_GROWTH_LOAD_FAIL = '[growth] load fail',\n FIELD_GROWTH_CREATE = '[field_growth] create',\n FIELD_CREATE = '[field] create',\n FIELD_INTEGRATE = '[field] integrate',\n FIELD_INTEGRATE_SUCCESS = '[field] integrate success',\n FIELD_SAVE_SUCCESS = '[field] save success',\n FIELD_SAVE_FAIL = '[field] save fail',\n FIELD_CROP_YEAR_LOAD = '[field] crops for year load',\n FIELD_CROP_YEAR_LOAD_SUCCESS = '[field] crops for year success',\n FIELD_CROP_YEAR_LOAD_FAIL = '[field] crops for year fail',\n FIELD_PLAN_BOOKS = '[field] check plannings',\n FIELD_PLAN_BOOKS_SUCCESS = '[field] check plannings success',\n}\n\n/**\n * load Fields from Backend\n */\nexport class FieldLoad implements IAction {\n readonly type = FieldActions.FIELD_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * load Fields from Backend success\n */\nexport class FieldLoadSuccess implements IAction {\n readonly type = FieldActions.FIELD_LOAD_SUCCESS;\n\n constructor(public payload: IField[]) {\n }\n}\n\n/**\n * load Fields from Backend fail\n */\nexport class FieldLoadFail implements IAction {\n readonly type = FieldActions.FIELD_LOAD_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class FieldLoadFromDateRange implements IAction {\n readonly type = FieldActions.FIELD_LOAD_FROM_DATERANGE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldLoadFromDateRangeSuccess implements IAction {\n readonly type = FieldActions.FIELD_LOAD_FROM_DATERANGE_SUCCESS;\n\n constructor(public payload: IFieldBase[]) {\n }\n}\n\nexport class FieldLoadFromDateRangeFail implements IAction {\n readonly type = FieldActions.FIELD_LOAD_FROM_DATERANGE_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\n/**\n * load Growths from Backend\n */\nexport class FieldGrowthLoad implements IAction {\n readonly type = FieldActions.FIELD_GROWTH_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * load Growths from Backend success\n */\nexport class FieldGrowthLoadSuccess implements IAction {\n readonly type = FieldActions.FIELD_GROWTH_LOAD_SUCCESS;\n\n constructor(public payload: IFieldGrowth[]) {\n }\n}\n\n/**\n * load Growths from Backend fail\n */\nexport class FieldGrowthLoadFail implements IAction {\n readonly type = FieldActions.FIELD_GROWTH_LOAD_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\n/**\n * set Centroid of selected Fields\n */\nexport class FieldsSelectCentroid implements IAction {\n readonly type = FieldActions.FIELD_SELECT_CENTROID;\n\n constructor() {\n }\n}\n\n/**\n * select Fields in Grid\n */\nexport class FieldSelect implements IAction {\n readonly type = FieldActions.FIELD_SELECT;\n\n constructor(public payload: string[]) {\n }\n}\n\n/**\n * sort Fields in Grid\n */\nexport class FieldSort implements IAction {\n readonly type = FieldActions.FIELD_SORT;\n\n constructor(public payload: DataStateChangeEvent) {\n }\n\n}\n\n/**\n * try save Fields\n */\nexport class FieldSave implements IAction {\n readonly type = FieldActions.FIELD_SAVE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * load FieldCrops from Backend\n */\nexport class FieldCropCreate implements IAction {\n readonly type = FieldActions.FIELD_CROP_CREATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * try delete Field Crop\n */\nexport class FieldCropDelete implements IAction {\n readonly type = FieldActions.FIELD_CROP_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * try save Fields Crops\n */\nexport class FieldCropsSave implements IAction {\n readonly type = FieldActions.FIELD_CROPS_SAVE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * when Fields Crops saved successfully\n */\nexport class FieldCropsSaveSuccess implements IAction {\n readonly type = FieldActions.FIELD_CROPS_SAVE_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * when Fields Crops saved failed\n */\nexport class FieldCropsSaveFailed implements IAction {\n readonly type = FieldActions.FIELD_CROPS_SAVE_FAILED;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * try save Fields Crops\n */\nexport class FieldUpdate implements IAction {\n readonly type = FieldActions.FIELD_UPDATE;\n\n constructor(public payload: IField) {\n }\n}\n\n/**\n * try save Fields Growths\n */\nexport class FieldGrowthSave implements IAction {\n readonly type = FieldActions.FIELD_GROWTH_SAVE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * try create Fields Growths\n */\nexport class FieldGrowthCreate implements IAction {\n readonly type = FieldActions.FIELD_GROWTH_CREATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * try delete Field Geoms\n */\nexport class FieldGeomDelete implements IAction {\n readonly type = FieldActions.FIELD_GEOM_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * try delete Field\n */\nexport class FieldDelete implements IAction {\n readonly type = FieldActions.FIELD_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldMerge implements IAction {\n readonly type = FieldActions.FIELD_MERGE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldMergeFailed implements IAction {\n readonly type = FieldActions.FIELD_MERGE_FAILED;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldMergeSuccess implements IAction {\n readonly type = FieldActions.FIELD_MERGE_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldSplit implements IAction {\n readonly type = FieldActions.FIELD_SPLIT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldSplitSuccess implements IAction {\n readonly type = FieldActions.FIELD_SPLIT_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldSplitFailed implements IAction {\n readonly type = FieldActions.FIELD_SPLIT_FAILED;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldCheckPlanBooks implements IAction {\n readonly type = FieldActions.FIELD_PLAN_BOOKS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldCheckPlanBooksSuccess implements IAction {\n readonly type = FieldActions.FIELD_PLAN_BOOKS_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldCreate implements IAction {\n readonly type = FieldActions.FIELD_CREATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldIntegrate implements IAction {\n readonly type = FieldActions.FIELD_INTEGRATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldIntegrateSuccess implements IAction {\n readonly type = FieldActions.FIELD_INTEGRATE_SUCCESS;\n\n constructor(public payload: IGeoJsonPolygon) {\n }\n}\n\nexport class FieldSaveFail implements IAction {\n readonly type = FieldActions.FIELD_SAVE_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class FieldSaveSuccess implements IAction {\n readonly type = FieldActions.FIELD_SAVE_SUCCESS;\n\n constructor(public payload: string) {\n }\n}\n\nexport class FieldCropYearLoad implements IAction {\n readonly type = FieldActions.FIELD_CROP_YEAR_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldCropYearLoadSuccess implements IAction {\n readonly type = FieldActions.FIELD_CROP_YEAR_LOAD_SUCCESS;\n\n constructor(public payload: IResultMessage) {\n }\n}\n\nexport class FieldCropYearLoadFail implements IAction {\n readonly type = FieldActions.FIELD_CROP_YEAR_LOAD_FAIL;\n\n constructor() {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n FieldCheckPlanBooks,\n FieldCheckPlanBooksSuccess,\n FieldCreate,\n FieldCropDelete,\n FieldCropsSave,\n FieldCropsSaveFailed,\n FieldCropsSaveSuccess,\n FieldCropYearLoad,\n FieldCropYearLoadSuccess,\n FieldDelete,\n FieldGeomDelete,\n FieldIntegrate,\n FieldIntegrateSuccess,\n FieldLoad,\n FieldLoadFromDateRange,\n FieldLoadFromDateRangeSuccess,\n FieldLoadSuccess,\n FieldMerge,\n FieldMergeFailed,\n FieldSave,\n FieldSaveFail,\n FieldSaveSuccess,\n FieldSplit,\n FieldSplitFailed,\n FieldSplitSuccess,\n FieldUpdate,\n HibernateModelNames,\n NetTypes,\n ParameterValuesSaveRequest\n} from 'invoker-transport';\nimport {isDate} from 'lodash';\nimport {MapStore} from '../map/map.store';\nimport {DateRange, DateTime, Guid, ObjectFactory, SafeBehaviorSubject, Throttle} from 'ts-tooling';\nimport {\n ApParameterComponent\n} from '../../entry-components/ap-parameter-entry-components/ap-parameter.component';\nimport {CropTypeStore} from '../base-data/crop.types.store';\nimport {SettingsStore} from '../base-data/settings.store';\nimport {BehaviorSubject} from 'rxjs';\nimport {CropRotationStore} from './crop.rotation.store';\nimport {NdiStore} from '../ndi/ndi.store';\nimport {CropGroupStore} from '../base-data/crop.groups.store';\nimport {FormStore} from '../layout/form.store';\nimport {\n ApTranslationService\n} from '../../ap-utils/service/ap-translation.service';\nimport {FieldArchiveStore} from './field-archive.store';\nimport {\n FieldMergeSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/farm';\nimport IField = Data.FieldManagement.IField;\nimport IFieldCrop = Data.FieldManagement.IFieldCrop;\nimport IGuid = System.IGuid;\nimport IFieldBase = Data.FieldManagement.IFieldBase;\nimport IFieldGeom = Data.FieldManagement.IFieldGeom;\nimport IResultMessage = Invoker.IResultMessage;\nimport IGeoJsonPolygon = Data.Geometry.IGeoJsonPolygon;\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport ICampaignYear = Data.Authentication.ICampaignYear;\nimport IFieldIntegrateResult = Data.FieldManagement.IFieldIntegrateResult;\nimport DatabaseNotifyOperation = Agriport.Invoker.Api.Database.DatabaseNotifyOperation;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFieldStore extends IStateStore {\n selectedFields: IField[];\n selectedFieldsRange: [];\n editFields: IGuid[];\n hashMap: {};\n growths: [];\n saving: boolean;\n saved: boolean;\n mergeFailed: boolean;\n mergeSuccess: boolean;\n splitFailed: boolean;\n splitSuccess: boolean;\n fieldPlanBooksResult: boolean;\n campaignYearCrops: { [key: string]: IFieldCrop };\n fieldCropsSaved: boolean | undefined;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FieldStore extends Store {\n public onSelectedCampaignYearChanged = new BehaviorSubject(null);\n public onFieldsLoadFinish = new EventEmitter();\n public fieldsToIgnoreInSnap: string[] = [];\n\n constructor(public backend: ApSignalrService,\n private cropTypeStore: CropTypeStore,\n private cropRotationStore: CropRotationStore,\n private settingsStore: SettingsStore,\n private mapStore: MapStore,\n private cropGroupsStore: CropGroupStore,\n private formStore: FormStore,\n private ndiStore: NdiStore,\n private fieldArchiveStore: FieldArchiveStore,\n private translationService: ApTranslationService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n selectedFields: [],\n selectedFieldsRange: [],\n editFields: [],\n hashMap: {},\n growths: [],\n saving: false,\n saved: false,\n mergeFailed: false,\n mergeSuccess: false,\n splitFailed: false,\n splitSuccess: false,\n fieldPlanBooksResult: null,\n campaignYearCrops: {},\n fieldCropsSaved: undefined\n });\n mapStore.FieldStore$.next(this);\n this.onSelectedCampaignYearChanged.subscribe(year => this.mapStore.Legends.onCampaignYearChange.emit(year));\n backend.registerObservable(FieldLoadSuccess).subscribe(d => {\n const message = d as IResultMessage;\n if (message) {\n const fields = message.Data as IField[];\n if (!Array.isArray(fields)) {\n return;\n }\n super.Mutate(s => s.data, () => fields);\n this.loadFieldCropsForYear(\n (message.Data as IField[]).Convert((f: IField) => f.Id),\n this.onSelectedCampaignYearChanged.getValue()?.Year);\n this.ndiStore.loadNStatistics(this.FieldGeomIdList);\n Throttle({Leading: true, Timeout: 10000}, () => {\n this.mapStore.Layers.FieldsLayer.replaceSource(message.Data, this);\n this.mapStore.Layers.FieldsLayer.ZoomIn(500);\n setTimeout(() => {\n this.onFieldsLoadFinish.emit();\n }, 250);\n });\n }\n });\n backend.registerObservable(FieldCropYearLoadSuccess).subscribe(d => {\n const message = d as IResultMessage;\n if (message) {\n super.Mutate(s => s.campaignYearCrops, () => d.Data);\n super.SetLoadFinishState();\n }\n });\n backend.registerObservable(FieldLoadFromDateRangeSuccess).subscribe(d => {\n super.Mutate(s => s.selectedFieldsRange, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(FieldDelete).subscribe(d => {\n if (d && d.Data) {\n const idsToRemove = d.Data as IGuid[];\n super.Mutate(\n s => s.data,\n o => {\n this.mapStore.Layers.RemoveFromFieldLayers(o.FindAll(field => idsToRemove.Contains(field.Id)), this);\n o = o.RemoveAll(field => idsToRemove.Contains(field.Id));\n return o;\n });\n }\n });\n backend.registerObservable(FieldCheckPlanBooksSuccess).subscribe(d => {\n super.Mutate(s => s.fieldPlanBooksResult, () => d.Data);\n });\n backend.registerObservable(FieldUpdate).subscribe(d => {\n const fieldsToAdd = d.Data as IField[];\n fieldsToAdd.forEach((fieldToAdd: IField) => {\n super.Mutate(s => s.data, o => {\n o = o.Replace(i => i.Id === fieldToAdd.Id, fieldToAdd);\n this.mapStore.Layers.RemoveFromFieldLayers([fieldToAdd], this);\n this.mapStore.Layers.AddToFieldLayers([fieldToAdd], this);\n return o;\n });\n super.Mutate(s => s.selectedFields, () => [fieldToAdd]);\n });\n this.cropRotationStore.LoadFieldCropRotation();\n this.cropRotationStore.LoadFieldCropRotationPast();\n this.formStore.closeForm();\n super.SetSaveSuccessState();\n this.mapStore.Layers.FieldsLayer.Visibility = true;\n this.mapStore.Layers.FieldsCropLayer.Visibility = true;\n this.Mutate(s => s.loading, () => false);\n });\n backend.registerObservable(FieldSaveSuccess).subscribe(() => {\n super.SetSaveSuccessState();\n });\n backend.registerObservable(FieldSaveFail).subscribe(() => {\n super.SetSaveFailState();\n });\n backend.registerObservable(FieldMergeFailed).subscribe(() => {\n this.Mutate(s => s.mergeFailed, () => true);\n });\n backend.registerObservable(FieldMergeSuccess).subscribe(() => {\n this.Mutate(s => s.mergeSuccess, () => true);\n });\n backend.registerObservable(FieldSplitFailed).subscribe(() => {\n this.Mutate(s => s.splitFailed, () => true);\n });\n backend.registerObservable(FieldSplitSuccess).subscribe(() => {\n this.Mutate(s => s.splitSuccess, () => true);\n });\n backend.registerObservable(FieldCropsSaveSuccess).subscribe(_ => {\n this.Mutate(s => s.fieldCropsSaved, () => true);\n this.Mutate(s => s.fieldCropsSaved, () => undefined);\n });\n backend.registerObservable(FieldCropsSaveFailed).subscribe(() => {\n this.Mutate(s => s.fieldCropsSaved, () => false);\n this.Mutate(s => s.fieldCropsSaved, () => undefined);\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n this.Fields$.subscribe((d) => {\n this.mapStore.Layers.FieldsLayer.replaceSource(d, this);\n this.mapStore.Legends.onCropTypesChanged.emit(this.AllCropsInFields.filter(c => c !== null));\n });\n }\n\n get FieldGeomIdList(): IGuid[] {\n return this.Fields.Convert((f: IField) => {\n const fg = this.getCurrentFieldGeom(f);\n return fg ? fg.Id : null;\n }).FindAll(f => !!f);\n }\n\n get YearFieldCrops$(): SafeBehaviorSubject<{ [key: string]: IFieldCrop }> {\n return super.Listen(s => s.campaignYearCrops);\n }\n\n get YearFieldCrops(): { [key: string]: IFieldCrop } {\n return this.YearFieldCrops$.getValue();\n }\n\n get Fields$(): SafeBehaviorSubject {\n return super.Listen(s => s.data);\n }\n\n get Fields(): IField[] {\n return this.Fields$.getValue();\n }\n\n get SelectedFields$(): SafeBehaviorSubject {\n return this.Listen(s => s.selectedFields);\n }\n\n get SelectedFields(): IField[] {\n return this.SelectedFields$.getValue();\n }\n\n get EditFields(): IGuid[] {\n return this.EditFields$.getValue();\n }\n\n get EditFields$(): SafeBehaviorSubject {\n return this.Listen(s => s.editFields);\n }\n\n get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n get Loaded$(): SafeBehaviorSubject {\n return super.Listen(s => s.loaded);\n }\n\n get AllCropsInFields(): ICropTypes[] {\n const tmp: ICropTypes[] = [];\n const cy = this.onSelectedCampaignYearChanged.getValue();\n if (cy === null) {\n return [];\n }\n const cyStart = DateTime.FromISOString(cy.DefaultStart.toString(), this.settingsStore.FirstSetting.FarmTime).ToZone('UTC');\n const cyEnd = DateTime.FromISOString(cy.DefaultEnd.toString(), this.settingsStore.FirstSetting.FarmTime).ToZone('UTC');\n for (const f of this.Fields) {\n for (const fc of f.FieldCrops.FindAll(fc2 => {\n const cropStart = DateTime.FromISOString(fc2.ValidFrom.toString(), 'UTC');\n const cropEnd = DateTime.FromISOString(fc2.ValidTo.toString(), 'UTC');\n return !(cropEnd.IsBefore(cyStart) || cropStart.IsAfter(cyEnd));\n })) {\n const cropType = this.cropTypeStore.CropTypes.Find(ct => ct.Id === fc.CroptypeId);\n if (!cropType || tmp.some(x => x.Description === cropType.Description)) {\n continue;\n }\n tmp.AddIfNotExists(cropType);\n }\n if (!f.FieldCrops || f.FieldCrops?.length === 0 && !tmp.Exists(_ => _?.Id === -1)) {\n tmp.AddIfNotExists({Id: -1, Description: '-', Color: this.cropGroupsStore.getNoCropColor()} as ICropTypes);\n }\n }\n return tmp;\n }\n\n /**\n * load fields from Backend to the Store\n */\n public loadFields(campaignYearStart: Date | string): void {\n super.SetLoadState();\n super.Mutate(d => d.data, () => []);\n const year = isDate(campaignYearStart) ? (campaignYearStart as Date).toISOString() : campaignYearStart;\n this.DispatchBackend(new FieldLoad([\n {Name: 'validDate', Type: NetTypes.DATETIME, Value: year},\n ]));\n }\n\n public async integrateFeature(fieldPolygon: IGeoJsonPolygon, epsgCode: string, fieldGeomId: string): Promise {\n const tmp = epsgCode.Split(':');\n if (tmp.length < 2) {\n throw new Error(`invalid epsg Code ${epsgCode}`);\n }\n const srId = parseInt(tmp[1], 10);\n if (isNaN(srId)) {\n throw new Error(`invalid epsg Code ${epsgCode}`);\n }\n return new Promise((resolve, reject) => {\n const ignoreIds: string[] = [fieldGeomId].concat(this.fieldsToIgnoreInSnap);\n super.DispatchBackend(new FieldIntegrate([\n {Name: 'fieldGeom', Type: ApCustomTypes.Data_Geometry_GeoJsonPolygon, Value: fieldPolygon},\n {Name: 'srId', Type: NetTypes.INT, Value: srId},\n {Name: 'skippingFieldGeomId', Type: NetTypes.GUID + '[]', Value: ignoreIds},\n ])).watchStream({\n action: FieldIntegrateSuccess,\n todo: payload => {\n if (payload.Error) {\n reject(payload.Error);\n return;\n }\n resolve(payload.Data);\n },\n });\n });\n }\n\n public loadFieldsFromRange(from: Date, to: Date): void {\n super.SetLoadState();\n super.Mutate(d => d.selectedFieldsRange, () => []);\n const dateFrom = isDate(from) ? from.toISOString() : from;\n const dateTo = isDate(to) ? to.toISOString() : to;\n this.DispatchBackend(new FieldLoadFromDateRange([\n {Name: 'validFrom', Type: NetTypes.DATETIME, Value: dateFrom},\n {Name: 'validTo', Type: NetTypes.DATETIME, Value: dateTo},\n ]));\n }\n\n /**\n * select Fields in the Grid\n */\n public changeSelectedField(fieldIds: string[]): void {\n const fields = [];\n fieldIds.forEach(id => {\n const found = this.Fields.Find(f => f.Id === id);\n if (found) {\n fields.Add(found);\n }\n });\n super.Mutate(s => s.selectedFields, () => fields);\n }\n\n public zoomFarmFields(): void {\n // in cases of initializations the zoomFarmFields might get\n // called even when the fieldsLayer is not yet filled (no fields)\n // in case the fieldsLayers does not have any feature it will lead to\n // an extent with geometry=Infinity => avoiding this with a return\n if (this.mapStore?.Layers?.FieldsLayer?.Features?.length <= 0) {\n return;\n }\n this.mapStore.Layers.FieldsLayer.ZoomIn(500);\n }\n\n public deselectField(fieldId: string): void {\n super.Mutate(s => s.selectedFields, (fields) => fields.filter((f) => f.Id !== fieldId));\n }\n\n /**\n * saved crop to the database\n */\n public saveFieldCrops(fieldCrops: IFieldCrop[]): void {\n this.Mutate(s => s.fieldCropsSaved, () => undefined);\n this.DispatchBackend(new FieldCropsSave([\n {Name: 'fieldCrops', Type: ApCustomTypes.Data_FieldManagement_FieldCrop + '[]', Value: fieldCrops}\n ]));\n }\n\n public editFields(fieldGeomIds: IGuid[]): void {\n this.Mutate(s => s.editFields, () => fieldGeomIds);\n }\n\n /**\n * delete crop to the database\n */\n public deleteFieldCrop(fieldCrop: IFieldCrop): void {\n this.DispatchBackend(new FieldCropDelete([\n {Name: 'fieldCrop', Type: ApCustomTypes.Data_FieldManagement_FieldCrop, Value: fieldCrop}\n ]));\n }\n\n /**\n * saved field to the database\n */\n public deleteFieldGeom(id: IGuid): void {\n super.SetSaveState();\n this.DispatchBackend(new FieldGeomDelete([\n {Name: 'id', Type: NetTypes.GUID, Value: id},\n ]));\n }\n\n /**\n * saved field to the database\n */\n public saveField(field: IField | IField[], start: Date, end: Date, fieldParameter?: ApParameterComponent): void {\n super.SetSaveState();\n field = Array.isArray(field) ? field : [field];\n // set real Crops\n field = field.Convert((f: IField) => {\n const originalField = ObjectFactory.Copy(this.Fields.Find(tmpF => tmpF.Id === f.Id));\n let fcIdx = originalField.FieldCrops.FindIndex(tmpFc => {\n const cyInterval = new DateRange(\n DateTime.FromISOString(start.toString(), 'UTC'),\n DateTime.FromISOString(end.toString(), 'UTC'));\n const fcInterval = new DateRange(\n DateTime.FromISOString(tmpFc.ValidFrom.toString(), 'UTC'),\n DateTime.FromISOString(tmpFc.ValidTo.toString(), 'UTC'),\n );\n return fcInterval.Overlaps(cyInterval);\n });\n const edited = f.FieldCrops.FirstOrDefault();\n if (edited) {\n if (fcIdx < 0) {\n originalField.FieldCrops.Add({\n Id: Guid.Empty.ToString(),\n FieldId: f.Id,\n CroptypeId: 0,\n ExpectedYield: 0,\n StrawHarvested: false,\n CroptypeSecondId: 0,\n ExpectedYieldSecond: 0,\n ValidFrom: start,\n ValidTo: end,\n ChangedAt: null,\n ChangedBy: 0,\n CreatedAt: null,\n CreatedBy: 0,\n DeletedAt: null,\n DeletedBy: 0,\n FarmId: f.FarmId,\n Version: 0,\n Variety: Guid.Empty.ToString(),\n ScenarioId: Guid.Empty.ToString(),\n Intercrop: 0,\n Note: '',\n HarvestAttachment: null,\n MainSecondCropType: 0,\n EppoCode: '',\n AdminArea: 0,\n Color: '',\n AreaHa: 0,\n Cropkey: 0,\n EcValue: null,\n CampaignYear: 0\n });\n fcIdx = 0;\n }\n originalField.FieldCrops[fcIdx].CroptypeId = edited.CroptypeId;\n originalField.FieldCrops[fcIdx].Cropkey = edited.Cropkey;\n originalField.FieldCrops[fcIdx].ExpectedYield = edited.ExpectedYield;\n originalField.FieldCrops[fcIdx].StrawHarvested = edited.StrawHarvested;\n originalField.FieldCrops[fcIdx].CroptypeSecondId = edited.CroptypeSecondId;\n originalField.FieldCrops[fcIdx].MainSecondCropType = edited.MainSecondCropType;\n originalField.FieldCrops[fcIdx].ExpectedYieldSecond = edited.ExpectedYieldSecond;\n originalField.FieldCrops[fcIdx].Note = edited.Note;\n f.FieldCrops = originalField.FieldCrops;\n }\n return f;\n });\n\n super.SetSaveState();\n this.DispatchBackend(new FieldSave([\n {Name: 'fields', Type: ApCustomTypes.Data_FieldManagement_Field + '[]', Value: field}\n ])).watchStream({\n action: ParameterValuesSaveRequest,\n todo: () => {\n // After successful saving fields (and their jobs etc.) the parameters are saved, too.\n fieldParameter?.Save();\n },\n });\n }\n\n public createField(field: IField, fieldParameter?: ApParameterComponent): void {\n this.DispatchBackend(new FieldCreate([\n {Name: 'field', Type: ApCustomTypes.Data_FieldManagement_Field, Value: field},\n {Name: 'fieldCrops', Type: ApCustomTypes.Data_FieldManagement_FieldCrop + '[]', Value: null},\n ])).watchStream({\n action: FieldUpdate,\n todo: () => {\n if (!fieldParameter) {\n return;\n }\n fieldParameter.Save();\n },\n });\n }\n\n /**\n * delete field to the database\n */\n public deleteFields(fieldIds: any): void {\n this.DispatchBackend(new FieldDelete([\n {Name: 'fieldIds', Type: NetTypes.GUID + '[]', Value: fieldIds},\n {Name: 'useCampaignYearForPlannings', Type: NetTypes.BOOL, Value: true}\n ]));\n }\n\n public mergeFields(newField: IField, fieldIds: any, takeCropRotationFrom: IGuid): void {\n this.Mutate(s => s.mergeFailed, () => false);\n this.Mutate(s => s.mergeSuccess, () => false);\n this.Mutate(s => s.saved, () => false);\n\n this.DispatchBackend(new FieldMerge([\n {Name: 'field', Type: ApCustomTypes.Data_FieldManagement_Field, Value: newField},\n {Name: 'fieldIds', Type: NetTypes.GUID + '[]', Value: fieldIds},\n {Name: 'takeCropRotationFrom', Type: NetTypes.GUID + '?', Value: takeCropRotationFrom}\n ]));\n }\n\n public splitFields(oldFieldId: IGuid, newFields: any, transferCrops: any): void {\n this.Mutate(s => s.saved, () => false);\n this.Mutate(s => s.splitFailed, () => false);\n this.Mutate(s => s.splitSuccess, () => false);\n\n this.DispatchBackend(new FieldSplit([\n {Name: 'oldFieldId', Type: NetTypes.GUID, Value: oldFieldId},\n {Name: 'newFields', Type: ApCustomTypes.Data_FieldManagement_Field + '[]', Value: newFields},\n {Name: 'transferCrops', Type: NetTypes.BOOL + '[]', Value: transferCrops},\n ]));\n }\n\n public checkFieldsPlanBook(fieldIds: any): void {\n this.DispatchBackend(new FieldCheckPlanBooks([\n {Name: 'fieldIds', Type: NetTypes.GUID + '[]', Value: fieldIds},\n ]));\n }\n\n /**\n * get from the current state the field\n */\n public getFieldById(fieldId: string | IGuid): IField {\n return this.Fields.Find(e => e.Id === fieldId);\n }\n\n public getFieldsById(fieldsId: IGuid[]): IField[] {\n return this.Fields.filter(x => fieldsId.some(id => id === x.Id));\n }\n\n public getFieldByFieldGeomId(fieldGeomId: string | IGuid): IField {\n return this.Fields.Find(e => Array.isArray(e.FieldGeoms) && e.FieldGeoms.Any(geom => geom.Id === fieldGeomId));\n }\n\n /**\n * Gets the field's full name or a nullValue representation\n * if the field could not be found\n * @param fieldId the field's id\n * @param nullValue nullValue substitute. Default: '-'\n */\n public getFieldNameById(fieldId: string | IGuid, nullValue = '-'): string {\n let field = this.getFieldById(fieldId) as IFieldBase;\n if (!field) {\n field = this.getFieldByFieldGeomId(fieldId);\n }\n if (!field) {\n field = this.fieldArchiveStore.getFieldArchiveById(fieldId);\n }\n return this.getFieldName(field, nullValue);\n }\n\n /**\n * Gets the field's full name or a nullValue representation\n * if the field could not be found\n * @param field the field object\n * @param nullValue nullValue substitute. Default: '-'\n */\n public getFieldName(field: {\n FieldName: string,\n FieldNumber: number,\n FieldSubnumber: number\n }, nullValue: string = '-'): string {\n if (!field) {\n return this.translationService.translate(nullValue);\n }\n const token = [];\n if (!!field.FieldNumber && !!field.FieldSubnumber) {\n token.push(`${field.FieldNumber}-${field.FieldSubnumber}`);\n } else if (!!field.FieldNumber) {\n token.push(field.FieldNumber);\n } else if (!!field.FieldSubnumber) {\n token.push(`-${field.FieldSubnumber}`);\n }\n if (!!field.FieldName) {\n token.push(field.FieldName);\n }\n return token.Join(' ');\n }\n\n /**\n * get a FieldGeom By Id\n */\n public getFieldGeomById(fieldGeomId: string | IGuid): IFieldGeom {\n for (const field of super.Listen(s => s.data).getValue()) {\n if (!field.FieldGeoms || field.FieldGeoms.length < 1) {\n continue;\n }\n for (const geom of field.FieldGeoms) {\n if (geom.Id === fieldGeomId) {\n return geom;\n }\n }\n }\n return null;\n }\n\n public getSelectedFields(): IField[] {\n const fields = super.Listen(s => s.selectedFields).getValue();\n if (fields === null || fields === undefined) {\n return [];\n }\n return fields;\n }\n\n public getSelectedFieldIds(): string[] {\n const fields = super.Listen(s => s.selectedFields).getValue();\n if (fields === null || fields === undefined) {\n return [];\n }\n const fieldIds = [];\n fields.forEach((f: IField) => {\n fieldIds.Add(f.Id.toString());\n });\n return fieldIds;\n }\n\n public getFieldNumberAndSubNumber(field: IFieldBase): string {\n if (!field?.FieldNumber && !field?.FieldSubnumber) {\n return '';\n }\n if (field.FieldNumber !== null) {\n if (field.FieldSubnumber !== null) {\n return `${field.FieldNumber} - ${field.FieldSubnumber}`;\n } else {\n return `${field.FieldNumber}`;\n }\n } else {\n if (field.FieldSubnumber !== null) {\n return ` - ${field.FieldSubnumber}`;\n } else {\n return '';\n }\n }\n }\n\n /**\n * get the Field Geom from the Field in a Campaign Year\n */\n public getFieldGeom(field: IField | string, year: ICampaignYear): IFieldGeom {\n if (typeof field === 'string') {\n field = this.getFieldById(field);\n }\n return field?.FieldGeoms?.FirstOrDefault((g) => {\n return g.ValidFrom <= year.DefaultStart &&\n g.ValidTo >= year.DefaultEnd &&\n // new Date('1970-01-01').getTime() === 0\n (g.DeletedAt?.valueOf() ?? new Date().getTime()) >= new Date().getTime();\n }) ?? field?.DefaultGeom;\n }\n\n /**\n * get the Field Geom from the Field in the current Campaign Year\n */\n public getCurrentFieldGeom(field: IField | string): IFieldGeom {\n return this.getFieldGeom(field, this.onSelectedCampaignYearChanged.getValue());\n }\n\n public clearFieldPlanBooksResult(): void {\n this.Mutate(s => s.fieldPlanBooksResult, () => null);\n }\n\n public loadFieldCropsForYear(fieldIds: IGuid[], year: number): void {\n this.Mutate(s => s.campaignYearCrops, () => ({}));\n this.backend.send(new FieldCropYearLoad([\n {Type: NetTypes.GUID + '[]', Name: 'fieldIds', Value: fieldIds},\n {Type: NetTypes.INT, Name: 'year', Value: year},\n ]));\n }\n\n public UpdateSource(operation: DatabaseNotifyOperation, item: any, model: string): void {\n if (model === HibernateModelNames.FIELD_CROPS) {\n if (!item?.Id) {\n return;\n }\n this._updateFieldCropsData([item as IFieldCrop], operation);\n } else {\n super.UpdateSource(operation, item, model);\n }\n }\n\n private _updateFieldCropsData(fieldCrops: IFieldCrop[], operation: DatabaseNotifyOperation): void {\n if (!fieldCrops) {\n return;\n }\n this.Mutate(s => s.data, fields => {\n const copiedFields = ObjectFactory.Copy(fields);\n copiedFields.forEach(field => {\n const fieldCropsForField = fieldCrops.filter(x => x.FieldId === field.Id);\n if (!fieldCropsForField || fieldCropsForField.length <= 0) {\n return;\n }\n if (!field.FieldCrops) {\n field.FieldCrops = [];\n }\n switch (operation) {\n case DatabaseNotifyOperation.Insert:\n fieldCropsForField.forEach((fieldCrop: IFieldCrop) => {\n field.FieldCrops.push(fieldCrop);\n });\n break;\n case DatabaseNotifyOperation.Update:\n field.FieldCrops = field.FieldCrops.map(filedCrop => {\n const fieldCropToReplace = fieldCropsForField.find(x => x.Id === filedCrop.Id);\n return fieldCropToReplace ?? filedCrop;\n });\n break;\n case DatabaseNotifyOperation.Delete:\n fieldCrops.forEach(fieldCrop => {\n field.FieldCrops = field.FieldCrops.filter(x => x.Id !== fieldCrop.Id);\n });\n break;\n }\n });\n return copiedFields;\n });\n }\n}\n","import {IStreamWatch, Store} from '../index';\nimport {\n ApCustomTypes,\n LicenseAdjustRequest,\n LicenseFarmLoad,\n LicenseFarmLoadError,\n LicenseFarmLoadSuccess,\n LicenseSaveFailed,\n LicenseSaveSuccess,\n LicenseUpdate\n} from 'invoker-transport';\nimport {IStateStoreWritable} from '../../ap-interface';\nimport {ObjectFactory, SafeBehaviorSubject} from 'ts-tooling';\nimport {Injectable} from '@angular/core';\nimport {\n NetTypes\n} from '../../../../projects/invoker-transport/src/lib/generated/backend.enums';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport ILicense = Data.Licensing.ILicense;\nimport LicenseAdjustAction = Data.Licensing.Enums.LicenseAdjustAction;\n\ninterface ILicenseStore extends IStateStoreWritable {\n}\n\n@Injectable({providedIn: 'root'})\nexport class LicenseStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n saved: false,\n saving: false\n });\n backend.registerObservable(LicenseFarmLoad).subscribe(_ => {\n super.Mutate(s => s.data, () => []);\n super.SetLoadState();\n });\n backend.registerObservable(LicenseFarmLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(LicenseFarmLoadError).subscribe(_ => {\n super.Mutate(s => s.data, () => []);\n super.SetLoadFinishState();\n });\n backend.registerObservable(LicenseSaveSuccess).subscribe(_ => {\n this.SetSaveSuccessState();\n });\n backend.registerObservable(LicenseSaveFailed).subscribe(_ => {\n this.SetSaveFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return this.Listen(s => s.loading);\n }\n\n public get licenseData$(): SafeBehaviorSubject {\n return this.Listen(s => s.data);\n }\n\n public get Licenses(): ILicense[] {\n return this.licenseData$.getValue();\n }\n\n public loadLicensesForFarm(): void {\n this.DispatchBackend(new LicenseFarmLoad([]));\n }\n\n public updateLicense(license: ILicense, isExtendLicense: boolean, removeTrialCount: boolean): void {\n this.SetSaveState();\n this.DispatchBackend(new LicenseUpdate([\n {Name: 'license', Type: ApCustomTypes.Data_Licensing_License, Value: license},\n {Name: 'isExtendLicense', Type: NetTypes.BOOL, Value: isExtendLicense},\n {Name: 'removeTrialCount', Type: NetTypes.BOOL, Value: removeTrialCount}\n ]));\n }\n\n public adjustLicenseRequest(featureModuleKey: string, adjustAction: LicenseAdjustAction): IStreamWatch {\n return this.DispatchBackend(new LicenseAdjustRequest([\n {Name: 'featureModuleKey', Type: NetTypes.STRING, Value: featureModuleKey},\n {Name: 'adjustAction', Type: ApCustomTypes.Data_Licensing_Enums_LicenseAdjustAction, Value: adjustAction}\n ]));\n }\n\n public setLicenseEmpty(): void {\n super.Mutate(s => s, () =>\n ({\n data: [],\n loaded: false,\n loading: false,\n saving: false,\n saved: false\n } as ILicenseStore));\n }\n\n /**\n * override the UpsertData with a custom UpsertData Strategy\n */\n UpsertData(position: number, item: any): void {\n this.Mutate(s => s.data, licenses => {\n if (position >= 0) {\n this._updateItems(licenses, item, position);\n } else {\n licenses.Add(item);\n }\n return licenses;\n });\n }\n\n private _updateItems(licenses: ILicense[], updatedLicense: ILicense, position: number): void {\n if (!licenses || !Array.isArray(licenses)) {\n return;\n }\n const itemToReplace = licenses[position];\n updatedLicense.TrialActivationsCount = itemToReplace.TrialActivationsCount;\n if (!ObjectFactory.Equal(itemToReplace, updatedLicense)) {\n updatedLicense.TrialActivationsCount += 1;\n }\n licenses[position] = updatedLicense;\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport {\n ApCustomTypes,\n MonitoringDetailAttachmentDownload,\n MonitoringDetailAttachmentDownloadFail,\n MonitoringDetailAttachmentDownloadSuccess,\n MonitoringDetailAttachmentUpload,\n MonitoringDetailAttachmentUploadFail,\n MonitoringDetailAttachmentUploadSuccess,\n MonitoringDetailCreate,\n MonitoringDetailDelete,\n MonitoringDetailEdit,\n MonitoringDetailLoad,\n MonitoringDetailLoadFail,\n MonitoringDetailLoadSuccess,\n NetTypes\n} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IGuid = System.IGuid;\nimport IMonitoringDetail = Data.Fields.IMonitoringDetail;\nimport IMonitoringDetailAttachment = Data.Fields.IMonitoringDetailAttachment;\n\ninterface IMonitoringDetailStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class MonitoringDetailStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: []\n });\n backend.registerObservable(MonitoringDetailLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(MonitoringDetailLoadFail).subscribe(_ => {\n super.SetLoadFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n /**\n * Gets the loading state observable\n * @returns Observable indicating whether data is being loaded\n * @public\n */\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n /**\n * Gets the monitoring details data stream\n * @returns Observable of monitoring details array\n * @public\n */\n public get MonitoringDetails$(): SafeBehaviorSubject {\n return this.Listen((s) => s.data);\n }\n\n /**\n * Gets the current value of monitoring details\n * @returns Loaded monitoring details\n * @public\n */\n public get MonitoringDetails(): IMonitoringDetail[] {\n return this.MonitoringDetails$.getValue();\n }\n\n /**\n * Initiates loading of monitoring details from backend\n * @public\n */\n public loadMonitoringDetails(): void {\n super.SetLoadState();\n this.DispatchBackend(new MonitoringDetailLoad([]));\n }\n\n /**\n * Creates a new monitoring detail record\n * @param monitoringDetail - Detail information to create\n * @public\n */\n public createMonitoringDetail(monitoringDetail: IMonitoringDetail): void {\n this.DispatchBackend(new MonitoringDetailCreate([\n {Name: 'monitoringDetail', Type: ApCustomTypes.Data_Fields_MonitoringDetail, Value: monitoringDetail}\n ]));\n }\n\n /**\n * Updates an existing monitoring detail record\n * @param monitoringDetail - Updated detail information\n * @public\n */\n public editMonitoringDetail(monitoringDetail: IMonitoringDetail): void {\n this.DispatchBackend(new MonitoringDetailEdit([\n {Name: 'monitoringDetail', Type: ApCustomTypes.Data_Fields_MonitoringDetail, Value: monitoringDetail}\n ]));\n }\n\n /**\n * Deletes a monitoring detail by its Id\n * @param monitoringDetailId - Unique identifier of the detail to delete\n * @public\n */\n public deleteMonitoringDetail(monitoringDetailId: IGuid): void {\n this.DispatchBackend(new MonitoringDetailDelete([\n {Name: 'monitoringDetailId', Type: NetTypes.GUID, Value: monitoringDetailId}\n ]));\n }\n\n /**\n * Uploads an attachment for a monitoring detail\n * @param attachment - Attachment information to upload\n * @returns Promise that resolves when upload is successful\n * @public\n */\n public uploadAttachment(attachment: IMonitoringDetailAttachment): Promise {\n return new Promise((resolve, reject) => {\n this.DispatchBackend(new MonitoringDetailAttachmentUpload([\n {Name: 'attachment', Type: ApCustomTypes.Data_Fields_MonitoringDetailAttachment, Value: attachment}\n ]))\n .watchStream({\n action: MonitoringDetailAttachmentUploadSuccess,\n todo: () => resolve()\n })\n .watchStream({\n action: MonitoringDetailAttachmentUploadFail,\n todo: _ => reject()\n });\n });\n }\n\n /**\n * Downloads an attachment by its Id\n * @param attachmentId - Unique identifier of the attachment to download\n * @returns Promise that resolves with the attachment data\n * @public\n */\n public downloadAttachment(attachmentId: IGuid): Promise {\n return new Promise((resolve, reject) => {\n this.DispatchBackend(new MonitoringDetailAttachmentDownload([\n {Name: 'attachmentId', Type: NetTypes.GUID, Value: attachmentId}\n ]))\n .watchStream({\n action: MonitoringDetailAttachmentDownloadSuccess,\n todo: (result) => resolve(result.Data)\n })\n .watchStream({\n action: MonitoringDetailAttachmentDownloadFail,\n todo: _ => reject()\n });\n });\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport {\n ApCustomTypes,\n MonitoringFieldCreate,\n MonitoringFieldDelete,\n MonitoringFieldLoad,\n MonitoringFieldLoadFail,\n MonitoringFieldLoadSuccess,\n NetTypes\n} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IMonitoringField = Data.Fields.IMonitoringField;\nimport IGuid = System.IGuid;\nimport IMonitoringDetail = Data.Fields.IMonitoringDetail;\n\ninterface IMonitoringFieldStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class MonitoringFieldStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: []\n });\n backend.registerObservable(MonitoringFieldLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(MonitoringFieldLoadFail).subscribe(_ => {\n super.SetLoadFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n /**\n * Gets the loading state observable\n * @returns Observable indicating whether data is being loaded\n * @public\n */\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n /**\n * Gets the monitoring fields data stream\n * @returns Observable of monitoring fields array\n * @public\n */\n public get MonitoringFields$(): SafeBehaviorSubject {\n return this.Listen((s) => s.data);\n }\n\n /**\n * Initiates loading of monitoring fields from backend\n * Sets loading state and dispatches load action\n * @public\n */\n public loadMonitoringFields(): void {\n super.SetLoadState();\n this.DispatchBackend(new MonitoringFieldLoad([]));\n }\n\n /**\n * Creates or updates a monitoring field with associated detail\n * @param fieldId - Unique identifier of the field\n * @param monitoringDetail - Detail information for the monitoring field\n * @public\n */\n public saveMonitoringFieldWithDetail(fieldId: IGuid, monitoringDetail: IMonitoringDetail): void {\n this.DispatchBackend(new MonitoringFieldCreate([\n {Name: 'fieldId', Type: NetTypes.GUID, Value: fieldId},\n {Name: 'monitoringDetail', Type: ApCustomTypes.Data_Fields_MonitoringDetail, Value: monitoringDetail}\n ]));\n }\n\n /**\n * Deletes a monitoring field by its Id\n * @param monitoringFieldId - Unique identifier of the monitoring field to delete\n * @public\n */\n public deleteMonitoringField(monitoringFieldId: IGuid): void {\n this.DispatchBackend(new MonitoringFieldDelete([\n {Name: 'monitoringFieldId', Type: NetTypes.GUID, Value: monitoringFieldId}\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\nimport {MonitoringTypeLoad, MonitoringTypeLoadFail, MonitoringTypeLoadSuccess} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IMonitoringType = Data.Fields.IMonitoringType;\n\ninterface IMonitoringTypeStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class MonitoringTypeStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: []\n });\n backend.registerObservable(MonitoringTypeLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(MonitoringTypeLoadFail).subscribe(_ => {\n super.SetLoadFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n /**\n * Gets the loading state observable\n * @returns Observable of boolean indicating loading state\n * @public\n */\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n /**\n * Gets the monitoring types data stream\n * @returns Observable of monitoring types array\n * @public\n */\n public get MonitoringTypes$(): SafeBehaviorSubject {\n return this.Listen((s) => s.data);\n }\n\n /**\n * Gets the loaded monitoring types\n * @returns Array of loaded monitoring types\n * @public\n */\n public get MonitoringTypes(): IMonitoringType[] {\n return this.MonitoringTypes$.getValue();\n }\n\n /**\n * Initiates loading of monitoring types from backend\n * Sets loading state and dispatches load action\n * @public\n */\n public loadMonitoringTypes(): void {\n super.SetLoadState();\n this.DispatchBackend(new MonitoringTypeLoad([]));\n }\n}\n","import IDataSetType = Data.Import.IDataSetType;\nimport IDataSetColumn = Data.Import.IDataSetColumn;\nimport IDataSet = Data.Import.IDataSet;\nimport ICsvType = Data.Import.ICsvType;\nimport {IAction, IApInvokerArguments} from '../../interfaces';\n\nexport enum ImportActions {\n IMPORT_DATASET_TYPES_LOAD = '[import_dataset_types] load',\n IMPORT_DATASET_TYPES_LOAD_SUCCESS = '[import_dataset_types] load success',\n IMPORT_DATASET_COLUMNS_LOAD = '[import_dataset_columns] load',\n IMPORT_DATASET_COLUMNS_LOAD_SUCCESS = '[import_dataset_columns] load success',\n IMPORT_DATASET_LOAD = '[import_dataset] load',\n IMPORT_DATASET_LOAD_SUCCESS = '[import_dataset] load success',\n LOAD_DATASET_MAP_PREVIEW = '[import_dataset] load map preview',\n LOAD_DATASET_MAP_PREVIEW_FAIL = '[import_dataset] load map preview fail',\n IMPORT_DATASET_DELETE = '[import_dataset] delete',\n IMPORT_DATASET_UPDATE = '[import_dataset] update',\n IMPORT_CSV_TYPES_LOAD = '[import_csv_types] load',\n IMPORT_CSV_TYPES_LOAD_SUCCESS = '[import_csv_types] load success',\n DOWNLOAD_CSV = '[download] csv',\n DOWNLOAD_CSV_SUCCESS = '[download] csv success',\n DOWNLOAD_CSV_ZIP = '[download] csv zip',\n DOWNLOAD_CSV_ZIP_SUCCESS = '[download] csv zip success',\n DOWNLOAD_LOG = '[download] log',\n DOWNLOAD_LOG_SUCCESS = '[download] log success',\n}\n\nexport class ImportDataSetTypesLoad implements IAction {\n readonly type = ImportActions.IMPORT_DATASET_TYPES_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ImportDataSetTypesLoadSuccess implements IAction {\n readonly type = ImportActions.IMPORT_DATASET_TYPES_LOAD_SUCCESS;\n\n constructor(public payload: IDataSetType[]) {\n }\n}\n\nexport class ImportDataSetColumnsLoad implements IAction {\n readonly type = ImportActions.IMPORT_DATASET_COLUMNS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ImportDataSetColumnsLoadSuccess implements IAction {\n readonly type = ImportActions.IMPORT_DATASET_COLUMNS_LOAD_SUCCESS;\n\n constructor(public payload: IDataSetColumn[]) {\n }\n}\n\nexport class ImportDataSetsLoad implements IAction {\n readonly type = ImportActions.IMPORT_DATASET_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ImportDataSetsLoadSuccess implements IAction {\n readonly type = ImportActions.IMPORT_DATASET_LOAD_SUCCESS;\n\n constructor(public payload: IDataSet[]) {\n }\n}\n\n/**\n * try delete import dataset\n */\nexport class ImportDataSetDelete implements IAction {\n readonly type = ImportActions.IMPORT_DATASET_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class LoadDatasetMapPreview implements IAction {\n readonly type = ImportActions.LOAD_DATASET_MAP_PREVIEW;\n\n constructor(public payload: string) {\n }\n}\n\nexport class LoadDatasetMapPreviewFail implements IAction {\n readonly type = ImportActions.LOAD_DATASET_MAP_PREVIEW_FAIL;\n}\n\nexport class ImportUpdate implements IAction {\n readonly type = ImportActions.IMPORT_DATASET_UPDATE;\n\n constructor(public payload: IDataSet) {\n }\n}\n\nexport class ImportCsvTypesLoad implements IAction {\n readonly type = ImportActions.IMPORT_CSV_TYPES_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ImportCsvTypesLoadSuccess implements IAction {\n readonly type = ImportActions.IMPORT_CSV_TYPES_LOAD_SUCCESS;\n\n constructor(public payload: ICsvType[]) {\n }\n}\n\nexport class DownloadCsv implements IAction {\n readonly type = ImportActions.DOWNLOAD_CSV;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class DownloadCsvSuccess implements IAction {\n readonly type = ImportActions.DOWNLOAD_CSV_SUCCESS;\n\n constructor(public payload: string[]) {\n }\n}\n\nexport class DownloadCsvZip implements IAction {\n readonly type = ImportActions.DOWNLOAD_CSV_ZIP;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class DownloadCsvZipSuccess implements IAction {\n readonly type = ImportActions.DOWNLOAD_CSV_ZIP_SUCCESS;\n\n constructor(public payload: string[]) {\n }\n}\n\nexport class DownloadLog implements IAction {\n readonly type = ImportActions.DOWNLOAD_LOG;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class DownloadLogSuccess implements IAction {\n readonly type = ImportActions.DOWNLOAD_LOG_SUCCESS;\n\n constructor(public payload: string[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ImportCsvTypesLoad,\n ImportCsvTypesLoadSuccess,\n ImportDataSetColumnsLoad,\n ImportDataSetColumnsLoadSuccess,\n ImportDataSetDelete,\n ImportDataSetsLoad,\n ImportDataSetsLoadSuccess,\n ImportDataSetTypesLoad,\n ImportDataSetTypesLoadSuccess,\n ImportUpdate,\n NetTypes\n} from 'invoker-transport';\nimport {\n DownloadCsv,\n DownloadCsvSuccess, DownloadCsvZip, DownloadCsvZipSuccess,\n DownloadLog,\n DownloadLogSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/import';\nimport * as download from 'downloadjs';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport IDataSetType = Data.Import.IDataSetType;\nimport IDataSetColumn = Data.Import.IDataSetColumn;\nimport ICsvType = Data.Import.ICsvType;\nimport IGuid = System.IGuid;\nimport IImportDataSet = Data.Import.IImportDataSet;\nimport ICampaignYear = Data.Authentication.ICampaignYear;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IImportStore extends IStateStore {\n types: IDataSetType[];\n columns: IDataSetColumn[];\n loadingMapPreview: string;\n csvTypes: ICsvType[];\n updatedDataSet: IImportDataSet;\n loadingImportDataSets: boolean;\n datasetsCampaignYear: ICampaignYear;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ImportStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loading: false,\n loaded: false,\n types: [],\n columns: [],\n loadingMapPreview: null,\n csvTypes: [],\n updatedDataSet: null,\n loadingImportDataSets: false,\n datasetsCampaignYear: null\n });\n\n backend.registerObservable(ImportDataSetTypesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.types, () => d.Data);\n });\n\n backend.registerObservable(ImportDataSetColumnsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.columns, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(ImportDataSetsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.loadingImportDataSets, () => false);\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(ImportCsvTypesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.csvTypes, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(ImportUpdate).subscribe(d => {\n super.Mutate(s => s.updatedDataSet, () => d.Data);\n });\n\n backend.registerObservable(DownloadCsvSuccess).subscribe(d => {\n download(d.Data[1], d.Data[0], 'text/csv');\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(DownloadCsvZipSuccess).subscribe(d => {\n download(d.Data[1], d.Data[0], 'application/zip');\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(DownloadLogSuccess).subscribe(d => {\n download(d.Data[1], d.Data[0]);\n super.SetLoadFinishState();\n });\n }\n\n public Loading$(): Observable {\n return combineLatest([\n super.Listen(s => s.loading),\n super.Listen(s => s.loadingImportDataSets)\n ]).pipe(map((loadings) => loadings.Any((l) => l)));\n }\n\n public loadImportDataSetTypes(): void {\n super.SetLoadState();\n this.DispatchBackend(new ImportDataSetTypesLoad([]));\n }\n\n public loadImportCsvTypes(): void {\n this.DispatchBackend(new ImportCsvTypesLoad([]));\n }\n\n public loadImportDataSetColumns(): void {\n this.DispatchBackend(new ImportDataSetColumnsLoad([]));\n }\n\n public loadImportDataSets(campaignYear: ICampaignYear): void {\n const currentCampaignYear = super.Listen(s => s.datasetsCampaignYear).getValue();\n if (currentCampaignYear?.Year === campaignYear?.Year && currentCampaignYear?.FarmId === campaignYear?.FarmId) {\n return;\n }\n super.Mutate(s => s.loadingImportDataSets, () => true);\n this.DispatchBackend(new ImportDataSetsLoad([]));\n }\n\n public deleteImportDataSet(id: IGuid): void {\n super.SetLoadState();\n this.DispatchBackend(new ImportDataSetDelete([\n {Name: 'dataSetId', Type: NetTypes.GUID, Value: id}\n ]));\n }\n\n public startLoadMapPreview(datasetId: string): void {\n super.Mutate(s => s.loadingMapPreview, () => datasetId);\n }\n\n public finishLoadMapPreview(): void {\n super.Mutate(s => s.loadingMapPreview, () => null);\n }\n\n public downloadCsv(mongoFileName: string | string[]): void {\n super.SetLoadState();\n if (Array.isArray(mongoFileName)) {\n this.DispatchBackend(new DownloadCsvZip([\n {Name: 'mongoFileIds', Type: NetTypes.STRING + '[]' , Value: mongoFileName}\n ]));\n } else {\n this.DispatchBackend(new DownloadCsv([\n {Name: 'mongoFileId', Type: NetTypes.STRING , Value: mongoFileName}\n ]));\n }\n }\n\n public downloadLog(mongoFileName: string): void {\n super.SetLoadState();\n this.DispatchBackend(new DownloadLog([\n {Name: 'mongoFileId', Type: NetTypes.STRING, Value: mongoFileName}\n ]));\n }\n}\n","import {IAction, IStoreBackend} from 'invoker-transport';\nimport {EventEmitter} from '@angular/core';\nimport {ReactiveStore, SafeBehaviorSubject} from 'ts-tooling';\nimport DatabaseNotifyOperation = Agriport.Invoker.Api.Database.DatabaseNotifyOperation;\nimport IGuid = System.IGuid;\n\nexport interface IStreamWatch {\n watchStream: (stream: { action: (new (payload?: any) => any), todo: (payload) => void }) => IStreamWatch;\n}\n\nexport class Store {\n AfterDatabaseUpdate = new EventEmitter();\n private reactiveStore: ReactiveStore = null;\n\n constructor(private b: IStoreBackend, defaultState: T, everyChange = false) {\n this.reactiveStore = new ReactiveStore(defaultState, everyChange);\n }\n\n Listen(selector: (d: T) => K): SafeBehaviorSubject {\n return this.reactiveStore.Listen(selector);\n }\n\n Mutate(selector: (d: T) => K, mutation: (s: K) => K): void {\n this.reactiveStore.Mutate(selector, mutation);\n }\n\n Clear(): void {\n this.Mutate(s => s['data'], () => []);\n this.Mutate(s => s['loading'], () => false);\n this.Mutate(s => s['loaded'], () => false);\n }\n\n DispatchBackend(action: IAction): IStreamWatch {\n this.b.send(action);\n const watcher: IStreamWatch = {\n watchStream: (stream) => {\n const obs = this.b.registerObservable(stream.action)\n .subscribe(d => {\n obs.unsubscribe();\n stream.todo(d);\n });\n return watcher;\n }\n };\n return watcher;\n }\n\n SetLoadState(): void {\n this.Mutate(s => s['loaded'], () => false);\n this.Mutate(s => s['loading'], () => true);\n }\n\n SetLoadFinishState(): void {\n this.Mutate(s => s['loaded'], () => true);\n this.Mutate(s => s['loading'], () => false);\n }\n\n SetLoadFailState(): void {\n this.Mutate(s => s['loaded'], () => false);\n this.Mutate(s => s['loading'], () => false);\n }\n\n SetSaveState(): void {\n this.Mutate(s => s['saved'], () => false);\n this.Mutate(s => s['saving'], () => true);\n }\n\n SetSaveSuccessState(): void {\n this.Mutate(s => s['saved'], () => true);\n this.Mutate(s => s['saving'], () => false);\n }\n\n SetSaveFailState(): void {\n this.Mutate(s => s['saved'], () => false);\n this.Mutate(s => s['saving'], () => false);\n }\n\n UpdateSource(operation: DatabaseNotifyOperation, item: any, model: string): void {\n const data = this.Listen(s => s['data']).getValue();\n const position = data?.FindIndex(i => !!i && !!item && i.Id === item.Id);\n const itemExistsInList = position >= 0;\n if (operation === Agriport.Invoker.Api.Database.DatabaseNotifyOperation.Insert || operation === DatabaseNotifyOperation.Update) {\n this.UpsertData(position, item);\n this.AfterDatabaseUpdate.emit();\n return;\n }\n if (operation === Agriport.Invoker.Api.Database.DatabaseNotifyOperation.Delete && itemExistsInList) {\n this.RemoveData(position);\n this.AfterDatabaseUpdate.emit();\n return;\n }\n }\n\n UpsertData(position: number, item: any): void {\n this.Mutate(s => s['data'], o => {\n if (position >= 0) {\n o[position] = item;\n } else {\n o.Add(item);\n }\n return o;\n });\n }\n\n RemoveData(position: number): void {\n if (position >= 0) {\n this.Mutate(s => s['data'], o => {\n o.RemoveAt(position);\n return o;\n });\n }\n }\n\n /**\n * refresh the Data in the Current Store\n */\n Reload(): void {\n this.Mutate(s => s, o => o);\n }\n\n /**\n * refresh the Data in the Current Store on data property\n */\n ReloadSource(): void {\n this.Mutate(s => s['data'], o => [...o]);\n }\n\n /**\n * select the Property with the name of key from the data Source of the given Id in the Store\n */\n public GetProperty(id: IGuid | string | number, selector: (element: K) => L): L {\n const instrument = this.Listen(s => s['data']).getValue().Find(i => i.Id === id);\n return instrument ? selector(instrument) : null;\n }\n}\n","import {ApVisibleStates, IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {Trace} from '../../debug-utils/ApplicationTracer';\nimport {filter, skip} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ModalDialogStore} from '../dialog/modal.dialog.store';\nimport {IModalDialogData, ModalDialogButtonDisable} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFormStore extends IStateStore {\n create: ApVisibleStates;\n update: ApVisibleStates;\n updateComponent: { component: any, data: any };\n}\n\n@Injectable({providedIn: 'root'})\nexport class FormStore extends Store {\n formCloseOnRequest = new EventEmitter();\n\n constructor(public backend: ApSignalrService,\n public modalDialogStore: ModalDialogStore,\n public translationService: ApTranslationService) {\n super(backend, {\n data: [],\n loading: false,\n loaded: false,\n create: ApVisibleStates.OUT,\n update: ApVisibleStates.OUT,\n updateComponent: null,\n }, true);\n }\n\n /**\n * triggers when the Form State switches to OUT\n */\n get FormClose$(): Observable {\n return super.Listen(s => s.update)\n .pipe(filter(state => state === ApVisibleStates.OUT));\n }\n\n /**\n * triggers when the Form tate switches to IN\n */\n get FormOpen$(): Observable {\n return super.Listen(s => s.update)\n .pipe(filter(state => state === ApVisibleStates.IN));\n }\n\n /**\n * triggers when the Form State changes\n */\n get FormState$(): SafeBehaviorSubject {\n return super.Listen(s => s.update);\n }\n\n get FormState(): ApVisibleStates {\n return this.FormState$.getValue();\n }\n\n /**\n * triggers when a new Component was passed in the Store\n */\n get NewComponent$(): SafeBehaviorSubject {\n return super.Listen(s => s.updateComponent);\n }\n\n @Trace()\n public switchComponent(component: { component: any, data: any }): void {\n super.Mutate(s => s.updateComponent, () => component);\n }\n\n @Trace()\n public openForm(component: { component: any, data: any }): void {\n if (component) {\n this.switchComponent(component);\n }\n super.Mutate(s => s.update, () => ApVisibleStates.IN);\n }\n\n @Trace()\n public closeForm(): void {\n super.Mutate(s => s.update, () => ApVisibleStates.OUT);\n }\n\n public tryCloseForm(): boolean {\n if (super.Listen(s => s.update).getValue() === ApVisibleStates.IN) {\n this.modalDialogStore.setModalDialogData({\n formConfig: undefined,\n show: true,\n buttons: [\n {\n disable: ModalDialogButtonDisable.Never,\n key: 'Y',\n primary: true,\n text: 'Global__Ok'\n },\n {\n disable: ModalDialogButtonDisable.Never,\n key: 'N',\n primary: false,\n text: 'Global__Cancel'\n },\n ],\n title: this.translationService.translate('Global__Warning'),\n message: this.translationService.translate('Global__Unsaved_Data')\n } as IModalDialogData);\n const subscription = this.modalDialogStore.Listen(s => s.result).pipe(skip(1)).subscribe((result) => {\n if (result.key === 'Y') {\n this.closeForm();\n }\n this.formCloseOnRequest.emit(result.key === 'Y');\n subscription.unsubscribe();\n });\n return true;\n }\n return false;\n }\n}\n","import {IStateStore, MapViewCurrentMenu, MapViewMode} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {ApMapInstance} from '../../ap-map';\nimport {Observable} from 'rxjs';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IMapViewStore extends IStateStore {\n mode: MapViewMode;\n currentMenu: MapViewCurrentMenu;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MapViewStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loading: false,\n loaded: false,\n mode: MapViewMode.NORMAL,\n currentMenu: MapViewCurrentMenu.MAP\n });\n }\n\n getMapViewMode$(): Observable {\n return super.Listen(s => s.mode);\n }\n\n getMapViewMode(): MapViewMode {\n return super.Listen(s => s.mode).getValue();\n }\n\n getMapViewCurrentMenu(): MapViewCurrentMenu {\n return super.Listen(s => s.currentMenu).getValue();\n }\n\n /**\n * Switches to normal-mode map in a synchronous mutation.\n * This improves performance of showing the map compared to the other mutations within a setTimeout\n */\n public goIntoMapMenuSync(): void {\n super.Mutate(s => s.mode, () => MapViewMode.NORMAL);\n super.Mutate(s => s.currentMenu, () => MapViewCurrentMenu.MAP);\n setTimeout(this.refreshMap.bind(this), 1);\n }\n\n public goIntoMapMenu(): void {\n super.Mutate(s => s.currentMenu, () => MapViewCurrentMenu.MAP);\n setTimeout(this.refreshMap.bind(this), 1);\n }\n\n public goIntoStatisticMenu(): void {\n super.Mutate(s => s.currentMenu, () => MapViewCurrentMenu.STATS);\n }\n\n public goIntoHelpMenu(): void {\n super.Mutate(s => s.currentMenu, () => MapViewCurrentMenu.HELP);\n }\n\n public hideMapView(): void {\n super.Mutate(s => s.mode, () => MapViewMode.HIDE);\n this.refreshMap();\n }\n\n public showMapView(): void {\n setTimeout(() => {\n super.Mutate(s => s.mode, () => MapViewMode.NORMAL);\n this.refreshMap();\n }, 1);\n }\n\n public refreshMap(): void {\n if (ApMapInstance.mapRef && ApMapInstance.mapRef.getTarget()) {\n ApMapInstance.updateView();\n }\n }\n\n public increaseMapViewMode(): void {\n switch (this.getMapViewMode()) {\n case MapViewMode.NORMAL:\n super.Mutate(s => s.mode, () => MapViewMode.MAXIMIZE);\n break;\n case MapViewMode.HIDE:\n super.Mutate(s => s.mode, () => MapViewMode.NORMAL);\n break;\n }\n }\n\n public decreaseMapViewMode(): void {\n switch (this.getMapViewMode()) {\n case MapViewMode.MAXIMIZE:\n super.Mutate(s => s.mode, () => MapViewMode.NORMAL);\n break;\n case MapViewMode.NORMAL:\n super.Mutate(s => s.mode, () => MapViewMode.HIDE);\n break;\n }\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {SidebarAddDatasource, SidebarAddDatasourceSuccess} from 'invoker-transport';\nimport {ApVisibleStates, SidebarMode} from '../../ap-interface/enums';\nimport {MapViewStore} from './mapview.store';\nimport IMenuEntry = Data.MenuStructure.IMenuEntry;\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\n\n\ninterface IMenuStore extends IStateStore {\n mode: SidebarMode;\n menuAnimationState: string;\n smallMenuAnimationState: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MenuStore extends Store {\n constructor(public backend: ApSignalrService,\n private mapViewStore: MapViewStore) {\n super(backend, {\n data: [],\n loading: false,\n loaded: false,\n mode: SidebarMode.OPEN,\n menuAnimationState: 'out',\n smallMenuAnimationState: 'out'\n });\n\n backend.registerObservable(SidebarAddDatasourceSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n getSidebarExpand(): boolean {\n return super.Listen(s => s.mode).getValue() === SidebarMode.OPEN;\n }\n\n getViewMode(): SidebarMode {\n return super.Listen(s => s.mode).getValue();\n }\n\n public fillMenuData(): void {\n super.SetLoadState();\n this.DispatchBackend(new SidebarAddDatasource([]));\n }\n\n public openSidebar(): void {\n super.Mutate(s => s.mode, () => SidebarMode.OPEN);\n this.smallMenuFlyOut();\n this.menuFlyIn();\n setTimeout(this.mapViewStore.refreshMap.bind(this.mapViewStore), 300);\n }\n\n public closeSidebar(): void {\n super.Mutate(s => s.mode, () => SidebarMode.CLOSE);\n this.smallMenuFlyOut();\n this.menuFlyOut();\n setTimeout(this.mapViewStore.refreshMap.bind(this.mapViewStore), 300);\n }\n\n public halfSidebar(): void {\n super.Mutate(s => s.mode, () => SidebarMode.HALF);\n this.smallMenuFlyIn();\n this.menuFlyOut();\n setTimeout(this.mapViewStore.refreshMap.bind(this.mapViewStore), 300);\n }\n\n public menuFlyIn(): void {\n super.Mutate(s => s.menuAnimationState, () => ApVisibleStates.IN);\n }\n\n public menuFlyOut(): void {\n super.Mutate(s => s.menuAnimationState, () => ApVisibleStates.OUT);\n }\n\n public smallMenuFlyIn(): void {\n super.Mutate(s => s.smallMenuAnimationState, () => ApVisibleStates.IN);\n }\n\n public smallMenuFlyOut(): void {\n super.Mutate(s => s.smallMenuAnimationState, () => ApVisibleStates.OUT);\n }\n}\n","export class ClientCache {\n static writeValue(key: string, value: any): void {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n static readValue(key: string): T {\n return JSON.parse(localStorage.getItem(key));\n }\n\n static deleteValue(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","import {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n CampaignYearLoad,\n CampaignYearLoadSuccess,\n CampaignYearSelect,\n InformCampaignYearChange\n} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport {FieldStore} from '../farm/field.store';\nimport {VarietyStore} from '../base-data/variety.store';\nimport {ActionStore} from '../docu/action.store';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {FormStore} from '../layout/form.store';\nimport {SoilSampleDateStore} from '../nutrients/soilsampledate.store';\nimport {CropRotationStore} from '../farm/crop.rotation.store';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ClientCache} from '../local-cache';\nimport {NFertilizationStore} from '../n-fertilization/n-fertilization.store';\nimport {combineLatest} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {RouterStore} from '../router/router.store';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport ICampaignYear = Data.Authentication.ICampaignYear;\nimport {FieldArchiveStore} from '../farm/field-archive.store';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ICampaignYearStore extends IStateStore {\n selectedYear: ICampaignYear;\n currentCampaignYear: number;\n farmWasChanged: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class CampaignYearStore extends Store {\n public onSelectCampaignYear = new EventEmitter();\n public onLoadingStoresComplete = new EventEmitter();\n\n public get IsCurrentCampaignYear(): boolean {\n if (!this.SelectedCampaignYear) {\n return false;\n }\n return this.SelectedCampaignYear.Year === (new Date().getMonth() < 7 ? new Date().getFullYear() : new Date().getFullYear() + 1);\n }\n\n public get IsHighestCampaignYear(): boolean {\n if (!this.SelectedCampaignYear) {\n return false;\n }\n\n const maxYear = this.getCampaignYears().map(x => x.Year).Max();\n return maxYear === this.SelectedCampaignYear.Year;\n }\n\n constructor(public backend: ApSignalrService,\n private cropRotationStore: CropRotationStore,\n private fieldStore: FieldStore,\n private actionStore: ActionStore,\n private varietyStore: VarietyStore,\n private soilSampleDateStore: SoilSampleDateStore,\n private nFertilizationStore: NFertilizationStore,\n private formStore: FormStore,\n private routerStore: RouterStore,\n private dateService: ApDateService,\n private fieldArchiveStore: FieldArchiveStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n selectedYear: null,\n currentCampaignYear: CampaignYearStore._calculateCurrentCampaignYear(),\n farmWasChanged: false,\n });\n backend.registerObservable(CampaignYearLoadSuccess).subscribe(d => {\n this.Mutate(s => s.data, () => d.Data);\n this.SetLoadFinishState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n\n this.backend.registerObservable(CampaignYearSelect)\n .subscribe(async (req) => {\n const d = this.Listen(s => s.data).getValue().Find(i => i.Year === req.Data);\n if (!d) {\n return;\n }\n ClientCache.writeValue(APP_CONFIGURATION.StoreKeys.LastVisitCampaignYear, req.Data);\n this.fieldStore.changeSelectedField([]);\n this.fieldStore.loadFields(d.DefaultStart);\n this.fieldArchiveStore.loadFieldArchive(d.DefaultStart);\n this.actionStore.loadFleetActions();\n this.varietyStore.loadVarieties();\n this.soilSampleDateStore.getFieldSampleDates();\n this.Mutate(s => s.selectedYear, () => d);\n this.nFertilizationStore.getFertilizationNeedValue();\n this.cropRotationStore.LoadFieldCropRotation();\n\n combineLatest([\n this.fieldStore.Loading$,\n this.actionStore.Loading$,\n this.varietyStore.Loading$,\n this.soilSampleDateStore.Loading$,\n this.nFertilizationStore.Loading$,\n this.cropRotationStore.Loading$,\n ]).pipe(\n filter(states => states.TrueForAll(state => state === false))\n ).subscribe(() => {\n this.onLoadingStoresComplete.emit();\n });\n this.SetLoadFinishState();\n });\n\n this.SelectedCampaignYear$.subscribe(cy => this.fieldStore.onSelectedCampaignYearChanged.next(cy));\n }\n\n public get SelectedCampaignYear$(): SafeBehaviorSubject {\n return this.Listen(s => s.selectedYear);\n }\n\n public get SelectedCampaignYear(): ICampaignYear {\n return this.SelectedCampaignYear$.getValue();\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return this.Listen(s => s.loading);\n }\n\n public get Loaded$(): SafeBehaviorSubject {\n return this.Listen(s => s.loaded);\n }\n\n public get FarmWasChanges$(): SafeBehaviorSubject {\n return this.Listen(s => s.farmWasChanged);\n }\n\n public get FarmWasChanged(): boolean {\n return this.FarmWasChanges$.getValue();\n }\n\n private static _calculateCurrentCampaignYear(): number {\n return new Date().getMonth() > 6 ? new Date().getFullYear() + 1 : new Date().getFullYear();\n }\n\n isSelectedCampaignYear(obj: { ValidFrom: Date, ValidTo: Date }): boolean { // TODO: it may not working correctly\n const selectedCampaignYear = this.getSelectedCampaignYear();\n return obj.ValidFrom <= selectedCampaignYear.DefaultStart && obj.ValidTo >= selectedCampaignYear.DefaultEnd;\n }\n\n isDateInSelectedCampaignYear(date: Date): boolean {\n const selectedCampaignYear = this.getSelectedCampaignYear();\n const dateToCompare = this.dateService.getDateMidnight(date);\n return dateToCompare >= new Date(selectedCampaignYear.DefaultStart) && dateToCompare <= new Date(selectedCampaignYear.DefaultEnd);\n }\n\n getSelectedCampaignYear(): ICampaignYear {\n return this.Listen(s => s.selectedYear).getValue();\n }\n\n getCampaignYears(): ICampaignYear[] {\n return this.Listen(s => s.data).getValue();\n }\n\n /**\n * Load all campaign years for a Farm\n */\n loadCampaignYears(): void {\n this.SetLoadState();\n this.Mutate(s => s.data, () => []);\n this.DispatchBackend(new CampaignYearLoad([]));\n }\n\n /**\n * Change the current campaign year\n */\n selectCampaignYear(selection: ICampaignYear): void {\n if (this.formStore.tryCloseForm()) {\n const subscription = this.formStore.formCloseOnRequest.subscribe((closed) => {\n if (closed) {\n this.onSelectCampaignYear.emit(selection);\n this.SetLoadState();\n this.DispatchBackend(new InformCampaignYearChange([\n {Name: 'campaignYear', Type: ApCustomTypes.Data_Authentication_CampaignYear, Value: selection}\n ]));\n }\n subscription.unsubscribe();\n });\n } else if (this.routerStore.tryNavigate()) {\n const subscription = this.routerStore.navigateRequest.subscribe((navigate) => {\n if (navigate) {\n this.onSelectCampaignYear.emit(selection);\n this.SetLoadState();\n this.DispatchBackend(new InformCampaignYearChange([\n {Name: 'campaignYear', Type: ApCustomTypes.Data_Authentication_CampaignYear, Value: selection}\n ]));\n }\n subscription.unsubscribe();\n });\n } else {\n this.onSelectCampaignYear.emit(selection);\n this.SetLoadState();\n this.DispatchBackend(new InformCampaignYearChange([\n {Name: 'campaignYear', Type: ApCustomTypes.Data_Authentication_CampaignYear, Value: selection}\n ]));\n }\n }\n\n getDefaultStart(year: number): Date {\n if (year) {\n return this.Listen(s => s.data).value.FirstOrDefault(\n (c) => c.Year === year, {DefaultStart: new Date(`${year - 1}-08-01`)} as ICampaignYear).DefaultStart;\n }\n return this.getSelectedCampaignYear().DefaultStart;\n }\n}\n","import IInvitations = Data.Authentication.IInvitations;\nimport {IAction, IApInvokerArguments} from '../../interfaces';\n\nexport enum InvitationsActions {\n INVITATIONS_DELETE = '[invitations] delete',\n INVITATIONS_DELETE_SUCCESS = '[invitations] delete success',\n INVITATIONS_LOAD = '[invitations] load',\n INVITATIONS_LOAD_BY_ID = '[invitations] load by id',\n INVITATIONS_LOAD_BY_ID_RESULT = '[invitations] load by id result',\n INVITATIONS_CHECK_BY_CODE = '[invitations] check by code',\n INVITATIONS_CHECK_BY_RESULT = '[invitations] check by code result',\n INVITATIONS_LOAD_SUCCESS = '[invitations] load success',\n INVITATIONS_LOAD_FAIL = '[invitations] load fail',\n INVITATIONS_CREATE = '[invitations] create',\n INVITATIONS_CREATE_SUCCESS = '[invitations] create success',\n INVITATIONS_CREATE_FAIL = '[invitations] create fail',\n INVITATIONS_CONFIRMED = '[invitations] confirmed',\n INVITATIONS_CONFIRMED_WITH_USER = '[invitations] confirmed with user',\n INVITATIONS_CONFIRMED_SUCCESS = '[invitations] confirmed success',\n INVITATIONS_CONFIRMED_FAIL = '[invitations] confirmed fail',\n INVITATIONS_CONFIRMED_CREATE_NEW_USER = '[invitations] confirmed create new user',\n INVITATIONS_UPDATE = '[invitations] update',\n INVITATIONS_UPDATE_SUCCESS = '[invitations] update success',\n INVITATIONS_RESEND = '[invitations] resend',\n INVITATIONS_RESEND_SUCCESS = '[invitations] resend success',\n INVITATIONS_RESEND_FAIL = '[invitations] resend fail'\n}\n\n/**\n * delete a existing User Invitation.\n *\n * @example\n * new InvitationsDelete([\n * {\n * Name: 'invitations',\n * Type: ApCustomTypes.Data_Authentication_Invitations,\n * Value: {\n * Activation_Code: 0,\n * Confirmation_Time: new Date(),\n * Created: new Date(),\n * Created_Userid: 0,\n * DriverId: '',\n * Email: '',\n * Farmid: 0,\n * Id: 0,\n * Isdriver: false,\n * Usergroupid: 0,\n * Version: 1,\n * },\n * }\n * ]);\n */\nexport class InvitationsDelete implements IAction {\n readonly type = InvitationsActions.INVITATIONS_DELETE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsCheckByCode implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CHECK_BY_CODE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsCheckByCodeResult implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CHECK_BY_RESULT;\n\n constructor(public payload: boolean) {\n }\n}\n\nexport class InvitationsLoadById implements IAction {\n readonly type = InvitationsActions.INVITATIONS_LOAD_BY_ID;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsLoadByIdResult implements IAction {\n readonly type = InvitationsActions.INVITATIONS_LOAD_BY_ID_RESULT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsDeleteSuccess implements IAction {\n readonly type = InvitationsActions.INVITATIONS_DELETE_SUCCESS;\n\n constructor(public payload: string) {\n }\n}\n\n/**\n * load all Invitations for the Farm. Data from the Session was used so it requires a valid Session with Farm ID.\n *\n * @example\n * new InvitationsLoad([]);\n */\nexport class InvitationsLoad implements IAction {\n readonly type = InvitationsActions.INVITATIONS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsLoadSuccess implements IAction {\n readonly type = InvitationsActions.INVITATIONS_LOAD_SUCCESS;\n\n constructor(public payload: IInvitations[]) {\n }\n}\n\nexport class InvitationsLoadFail implements IAction {\n readonly type = InvitationsActions.INVITATIONS_LOAD_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\n/**\n * create a new Invitation for a new User for the Farm.\n *\n * @example\n * new InvitationsCreate([\n * {\n * Name: 'invitation',\n * Type: NetTypes.OBJECT,\n * Value: {\n * Email: 'example@test.de',\n * UserGroupId: 1,\n * IsDriver: true,\n * DriverId: '9ba28b41-5e7e-4174-a89b-33443f646cba',\n * },\n * }\n * ]);\n */\nexport class InvitationsCreate implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CREATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsCreateSuccess implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CREATE_SUCCESS;\n\n constructor(public payload: boolean) {\n }\n}\n\nexport class InvitationsCreateFail implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CREATE_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\n/**\n * the User confirms a invitation via E-Mail\n *\n * @example\n * new InvitationsConfirmed([\n * {\n * Name: 'id',\n * Type: NetTypes.INT,\n * Value: id,\n * },\n * {\n * Name: 'activationCode',\n * Type: NetTypes.INT,\n * Value: activationCode,\n * }\n * ]);\n */\nexport class InvitationsConfirmed implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CONFIRMED;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * confirm the Invitation with a existing User\n *\n * @example\n * new InvitationsConfirmedWithUser([\n * {\n * Name: 'id',\n * Type: NetTypes.INT,\n * Value: id,\n * },\n * {\n * Name: 'activationCode',\n * Type: NetTypes.INT,\n * Value: activationCode,\n * },\n * {\n * Name: 'newUser',\n * Type: NetTypes.INT,\n * Value: userId,\n * }\n * ]);\n */\nexport class InvitationsConfirmedWithUser implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CONFIRMED_WITH_USER;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsConfirmedSuccess implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CONFIRMED_SUCCESS;\n\n constructor(public payload: boolean) {\n }\n}\n\nexport class InvitationsConfirmedFail implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CONFIRMED_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class InvitationsConfirmedCreateNewUser implements IAction {\n readonly type = InvitationsActions.INVITATIONS_CONFIRMED_CREATE_NEW_USER;\n\n constructor(public payload: boolean) {\n }\n}\n\n/**\n * change the data of a existing Invitation.\n *\n * @example\n * new InvitationsUpdate([\n * {\n * Name: 'invitation',\n * Type: NetTypes.OBJECT,\n * Value: {\n * Email: 'example@test.de',\n * },\n * },\n * ]);\n */\nexport class InvitationsUpdate implements IAction {\n readonly type = InvitationsActions.INVITATIONS_UPDATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsUpdateSuccess implements IAction {\n readonly type = InvitationsActions.INVITATIONS_UPDATE_SUCCESS;\n\n constructor(public payload: IInvitations) {\n }\n}\n\nexport class InvitationsResend implements IAction {\n readonly type = InvitationsActions.INVITATIONS_RESEND;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsResendSuccess implements IAction {\n readonly type = InvitationsActions.INVITATIONS_RESEND_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class InvitationsResendFail implements IAction {\n readonly type = InvitationsActions.INVITATIONS_RESEND_FAIL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n InvitationsConfirmed,\n InvitationsConfirmedCreateNewUser,\n InvitationsConfirmedSuccess,\n InvitationsConfirmedWithUser,\n InvitationsCreate,\n InvitationsDelete,\n InvitationsLoad,\n InvitationsLoadSuccess,\n InvitationsUpdate,\n NetTypes\n} from 'invoker-transport';\nimport {\n InvitationsCheckByCode,\n InvitationsCheckByCodeResult,\n InvitationsLoadById,\n InvitationsLoadByIdResult,\n InvitationsResend,\n InvitationsResendFail,\n InvitationsResendSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/login';\nimport {IApInvokerArguments} from '../../../../projects/invoker-transport/src/lib/interfaces';\nimport IInvitations = Data.Authentication.IInvitations;\nimport IResultMessage = Invoker.IResultMessage;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IInvitationStore extends IStateStore {\n isInvitationResend: boolean | undefined;\n isSuccessful: boolean;\n emailSend: boolean;\n message: string;\n createNewUser: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class InvitationStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n isSuccessful: false,\n message: '',\n emailSend: false,\n createNewUser: false,\n isInvitationResend: undefined\n });\n backend.registerObservable(InvitationsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(InvitationsConfirmedCreateNewUser).subscribe(d => {\n super.Mutate(s => s.createNewUser, () => d.Data);\n });\n backend.registerObservable(InvitationsConfirmedSuccess).subscribe(d => {\n super.Mutate(s => s.isSuccessful, () => d.Data);\n });\n backend.registerObservable(InvitationsResendSuccess).subscribe(_ => {\n super.Mutate(s => s.isInvitationResend, () => true);\n super.Mutate(s => s.isInvitationResend, () => undefined);\n });\n backend.registerObservable(InvitationsResendFail).subscribe(_ => {\n super.Mutate(s => s.isInvitationResend, () => false);\n super.Mutate(s => s.isInvitationResend, () => undefined);\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public getInvitation(): IInvitations[] {\n return super.Listen(s => s.data).getValue();\n }\n\n public loadInvitations(): void {\n this.DispatchBackend(new InvitationsLoad([]));\n }\n\n public async hasInvitation(code: number | string): Promise {\n return new Promise((res, rej) => {\n const params = [] as IApInvokerArguments[];\n if (typeof code === typeof '' && !isNaN(parseInt(code as string, 10))) {\n params.Add({Name: 'code', Type: NetTypes.INT, Value: parseInt(code as string, 10)});\n } else {\n params.Add({Name: 'code', Type: NetTypes.INT, Value: code});\n }\n this.DispatchBackend(new InvitationsCheckByCode(params)).watchStream({\n action: InvitationsCheckByCodeResult,\n todo: (exists: IResultMessage) => {\n if (exists.Error) {\n rej(exists.Error);\n return;\n }\n res(exists.Data);\n },\n });\n });\n }\n\n public async fetchInvitationById(id: number): Promise {\n return new Promise((res, rej) => {\n this.DispatchBackend(new InvitationsLoadById([\n {Name: 'id', Type: NetTypes.INT, Value: id},\n ])).watchStream({\n action: InvitationsLoadByIdResult,\n todo: (msg: IResultMessage) => {\n if (msg.Error) {\n rej(msg.Error);\n return;\n }\n res(msg.Data.FirstOrDefault());\n }\n });\n });\n }\n\n public create(invitation: any): void {\n this.DispatchBackend(new InvitationsCreate([\n {Name: 'invitation', Type: NetTypes.OBJECT, Value: invitation},\n ]));\n }\n\n public update(invitation: any): void {\n this.DispatchBackend(new InvitationsUpdate([\n {Name: 'invitation', Type: NetTypes.OBJECT, Value: invitation},\n ]));\n }\n\n public confirmed(id: number, activationCode: number): void {\n this.DispatchBackend(new InvitationsConfirmed([\n {Name: 'id', Type: NetTypes.INT, Value: id},\n {Name: 'activationCode', Type: NetTypes.INT, Value: activationCode}\n ]));\n }\n\n public confirmedWithUser(id: number, activationCode: number, user: number): void {\n this.DispatchBackend(new InvitationsConfirmedWithUser([\n {Name: 'id', Type: NetTypes.INT, Value: id},\n {Name: 'activationCode', Type: NetTypes.INT, Value: activationCode},\n {Name: 'newUser', Type: NetTypes.INT, Value: user}\n ]));\n }\n\n public delete(invitations: IInvitations): void {\n this.DispatchBackend(new InvitationsDelete([\n {Name: 'invitations', Type: ApCustomTypes.Data_Authentication_Invitations, Value: invitations}\n ]));\n }\n\n public resend(email: string): void {\n this.DispatchBackend(new InvitationsResend([\n {Name: 'email', Type: NetTypes.STRING, Value: email}\n ]));\n }\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*-------------------------------------------------------------------------------------------*/\n/* tslint:disable:no-bitwise max-line-length */\nimport { addDays, cloneDate, getDate, isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from './defaults';\nimport { EMPTY_SELECTIONRANGE } from './calendar/models/selection-range.interface';\nimport { isPresent } from './common/utils';\nconst isSet = (value) => value !== null && value !== undefined;\nconst ɵ0 = isSet;\nconst setter = (method) => (date, value) => {\n const clone = cloneDate(date);\n clone[method](value);\n return clone;\n};\nconst ɵ1 = setter;\n/**\n * @hidden\n */\nexport const 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});\nconst ɵ2 = normalizeTimes;\n/**\n * @hidden\n */\nexport const setYears = setter('setFullYear');\n/**\n * @hidden\n */\nexport const setHours = setter('setHours');\n/**\n * @hidden\n */\nexport const setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nexport const setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nexport const setMilliseconds = setter('setMilliseconds');\n/**\n * @hidden\n */\nexport const 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 */\nexport const isInRange = (candidate, min, max) => (!candidate || !((min && min > candidate) || (max && max < candidate)));\n/**\n * @hidden\n */\nexport const 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 */\nexport const isValidRange = (min, max) => (!isSet(min) || !isSet(max) || min <= max);\n/**\n * @hidden\n */\nexport const 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 */\nexport const 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 */\nexport const getNow = () => new Date();\n/**\n * @hidden\n */\nexport const getToday = () => getDate(new Date());\n/**\n * @hidden\n */\nexport const noop = (_) => { }; // tslint:disable-line:no-empty\n/**\n * @hidden\n */\nexport const isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nexport const 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 */\nexport const shiftWeekNames = (names, offset) => (names.slice(offset).concat(names.slice(0, offset)));\n/**\n * @hidden\n */\nexport const 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 */\nexport const 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 */\nexport const hasChange = (changes, field) => changes[field] !== undefined;\n/**\n * @hidden\n */\nexport const hasExistingValue = (changes, field) => changes[field] && changes[field].currentValue !== undefined && changes[field].currentValue !== null;\n/**\n * @hidden\n */\nexport const last = (list = []) => list && list[list.length - 1];\n/**\n * @hidden\n */\nexport const 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 */\nexport const either = (value1, value2) => value1 || value2;\n/**\n * @hidden\n */\nexport const clampRange = (value) => ({ start: value, end: value });\n/**\n * @hidden\n */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const 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 */\nexport const msPaddingFromFormat = (format) => {\n return Array(format.match(/S+(\\1)/)[0].length).join(\"0\");\n};\n/**\n * @hidden\n */\nexport const millisecondDigitsInFormat = (format) => {\n const result = format && format.match(/S+(\\1)/);\n return result ? result[0].length : 0;\n};\n/**\n * @hidden\n */\nexport const millisecondStepFor = (digits) => {\n return Math.pow(10, 3 - digits);\n};\nexport { ɵ0, ɵ1, ɵ2 };\n","import {Injectable} from '@angular/core';\nimport {CookieService} from 'ngx-cookie-service';\nimport {ApSignalrService} from './ap-signalr.service';\nimport {Config, LoginActions, NetTypes, UserLogin, UserLogout} from 'invoker-transport';\n\n/**\n * Service for cookies\n */\n@Injectable({providedIn: 'root'})\nexport class ApCookieService {\n public afterSetCookie: () => void = null;\n public onSetCookie: (arg: { data: string, durationHours: number }) => any;\n public onRemoveCookie: () => any;\n public onGetCookie: () => string;\n\n /**\n * connect to the stores\n */\n constructor(private cookieService: CookieService,\n private backend: ApSignalrService) {\n this.backend.cookieGetter = () => this.getCookie();\n this.backend.getListenerByActionType(LoginActions.SET_COOKIE)\n .subscribe((d) => {\n if (!d.Data) {\n return;\n }\n this.setCookie(d.Data, this.CalcAgriportSessionDurationHours());\n setTimeout(() => this.login(), 1);\n });\n this.backend.getListenerByActionType(LoginActions.UPDATE_COOKIE)\n .subscribe((d) => {\n if (!d.Data) {\n return;\n }\n this.setCookie(d.Data, this.CalcAgriportSessionDurationHours());\n });\n this.backend.getListenerByActionType(LoginActions.USER_LOGIN_SUCCESS)\n .subscribe(() => {\n ApSignalrService.isLoggedIn = true;\n });\n this.backend.getListenerByActionType(LoginActions.USER_LOGOUT_FROM_SYSTEM)\n .subscribe(() => {\n ApSignalrService.isLoggedIn = false;\n });\n }\n\n /**\n * Calculates the session/cookie expire date\n * The cookie expires after 365 approximately around midnight, but is extended\n * whenever user uses agriport in the meantime\n */\n public CalcAgriportSessionDurationHours(): number {\n // Let the session and cookie expire around midnight.\n // Anyway, we ignore the minutes here. The cookie should just expire around midnight\n // to minimize the chance of loosing sessions when the user works with Agriport\n const currentTime = new Date();\n const hoursUntilMidnight = currentTime.getHours() + 1;\n return 365 * 24 + hoursUntilMidnight;\n }\n\n public login(): void {\n const hash = this.getCookie();\n if (hash) {\n this.backend.send(new UserLogin([\n {Name: 'hash', Type: NetTypes.STRING, Value: hash}\n ]));\n }\n }\n\n public logout(): void {\n const hash = this.getCookie();\n if (hash) {\n this.backend.send(new UserLogout([\n {Name: 'hash', Type: NetTypes.STRING, Value: hash},\n ]));\n ApSignalrService.isLoggedIn = false;\n this.deleteCookie();\n }\n }\n\n /**\n * set the cookie\n */\n setCookie(data: string, durationHours: number): void {\n if (!this.onSetCookie || typeof this.onSetCookie !== 'function') {\n const needsSecureCookie = Config.BackendAddress.Contains('https:');\n const expireDate = new Date();\n expireDate.setHours(expireDate.getHours() + durationHours);\n this.cookieService.set('Agriport', data, expireDate, '/', null, needsSecureCookie, 'Strict');\n } else {\n this.onSetCookie({\n data, durationHours,\n });\n }\n }\n\n /**\n * delete the cookie\n */\n deleteCookie(): void {\n if (!this.onRemoveCookie || typeof this.onRemoveCookie !== 'function') {\n this.cookieService.delete('Agriport', '/');\n } else {\n this.onRemoveCookie();\n }\n }\n\n /**\n * get the cookie\n */\n getCookie(): string {\n if (!this.onGetCookie || typeof this.onGetCookie !== 'function') {\n return this.cookieService.get('Agriport');\n } else {\n return this.onGetCookie();\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {FieldStore} from '../farm/field.store';\nimport {ApGetCropService} from '../services/ap-get-crop.service';\nimport {NuptakeCalculationService} from '../../services/common/nuptake-calculation.service';\nimport {NUptakeFactorsStore} from '../common/nuptake-factors.store';\nimport {combineLatest} from 'rxjs';\nimport {MapStore} from '../map/map.store';\nimport {NdiStore} from './ndi.store';\nimport {MapFactoryStyler} from '../../map-factory/style';\nimport {NdiService} from '../../field-management/services/ndi.service';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport INdiStatistic = Data.NDI.INdiStatistic;\nimport IField = Data.FieldManagement.IField;\nimport INUptakeFactors = Data.Common.INUptakeFactors;\n\n/**\n * This store aggregates data from other stores and services to build\n * the dynamic legend for the current farm. Whenever farm, fields, n-index changes\n * the legend values are therefor recalculated\n */\n@Injectable({providedIn: 'root'})\nexport class NUptakeStore extends Store {\n // n-uptake statistics to provide dynamic legend colors\n public nUptakeMinMax = {Min: 0, Max: 0};\n\n constructor(public backend: ApSignalrService,\n private fieldStore: FieldStore,\n private cropService: ApGetCropService,\n private ndiStore: NdiStore,\n private mapStore: MapStore,\n private ndiService: NdiService,\n private nUptakeCalculationService: NuptakeCalculationService,\n private nUptakeFactorsStore: NUptakeFactorsStore) {\n super(backend);\n }\n\n /**\n * Initializes listeners for store data changes and map layer visibility changes.\n * Subscribes to combined changes in NDI data, fields, and N-uptake factors to update legends.\n * Also monitors map layer changes to update N-uptake legend when layer is visible.\n * @public\n */\n public listen(): void {\n combineLatest([\n this.ndiStore.Listen(s => s.data),\n this.fieldStore.Listen(s => s.data),\n this.fieldStore.Listen(s => s.selectedFields),\n this.nUptakeFactorsStore.Listen(s => s.data)\n ]).subscribe(([nIndexData, allFields, selectedFields, nUptakeFactors]) => {\n // Update nuptake legend and map colors based on the current selection\n this.updateNUptakeMinMaxLegend(nIndexData,\n (!!selectedFields && selectedFields.length > 0) ? selectedFields : allFields,\n nUptakeFactors);\n });\n this.mapStore.Layers.OnLayerChange.subscribe(() => {\n if (this.mapStore.Layers.NUptakeLayer?.Visibility) {\n this.updateNUptakeLegend();\n }\n });\n }\n\n /**\n * Updates the n-uptake min-max range and updates the n-uptake legend if it is visible\n * If not visible it will be updated by switching between n-index and n-uptake columns\n * @private\n */\n private updateNUptakeMinMaxLegend(nIndexData: INdiStatistic[], fields: IField[], nUptakeFactors: INUptakeFactors[]): void {\n if (!nIndexData || nIndexData?.length === 0 ||\n !fields || fields?.length === 0 ||\n !nUptakeFactors || nUptakeFactors?.length === 0) {\n this.nUptakeMinMax = {\n Min: 0,\n Max: 10\n };\n this.mapStore.Legends.onNUptakeChanged.emit(this.nUptakeMinMax);\n return;\n }\n let totalMin = Number.POSITIVE_INFINITY;\n let totalMax = 0;\n for (const field of fields) {\n let fieldCrop = this.cropService.getFieldCrop(field);\n const mainCrop = this.cropService.getCropType(fieldCrop, true);\n fieldCrop = mainCrop ? fieldCrop : null;\n const nUptakeFactor = this.nUptakeFactorsStore.getNUptakeFactorByFieldCropAndCropType(fieldCrop, mainCrop);\n const ndiStat = nIndexData?.Find(n => n.FieldGeomId === field.DefaultGeom?.Id);\n if (!this.ndiService.isNdiScanValid(ndiStat)) {\n continue;\n }\n const min = this.nUptakeCalculationService.calculateNUptakeValue(ndiStat?.Min, nUptakeFactor);\n const max = this.nUptakeCalculationService.calculateNUptakeValue(ndiStat?.Max, nUptakeFactor);\n if (min != null && min < totalMin) {\n totalMin = min;\n }\n if (max != null && max > totalMax) {\n totalMax = max;\n }\n }\n if (!isFinite(totalMin)) {\n totalMin = 0;\n }\n if (!isFinite(totalMax) || totalMax === 0) {\n totalMax = 10;\n }\n this.nUptakeMinMax = {\n Min: totalMin,\n Max: totalMax,\n };\n this.updateNUptakeLegend();\n }\n\n /**\n * Updates the n-uptake legend based on the calculated min/max values\n * @private\n */\n public updateNUptakeLegend(): void {\n MapFactoryStyler.Instance.clearStyleCache();\n this.mapStore.Legends.onNUptakeChanged.emit(this.nUptakeMinMax);\n }\n}\n","import {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n CampaignYearSelect,\n InformFarmChange,\n InformFarmChangeSuccess,\n LogoutFromSystem,\n MapFactoryAuthenticationLoad,\n MapFactoryAuthenticationSuccess,\n NetTypes,\n UserLeavePage,\n UserLogin,\n UserLoginDelay,\n UserLoginFail,\n UserLoginSuccess,\n UserResetRedirectToNewsSuccess,\n UserUpdateFullNameSuccess\n} from 'invoker-transport';\nimport {IApPermissionData, IStateStore} from '../../ap-interface';\nimport {\n getNow\n} from '@progress/kendo-angular-dateinputs/dist/es2015/util';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {NotifyStore} from '../dialog/notify.store';\nimport {EventHandler, ObjectFactory, SafeBehaviorSubject, StringFactory} from 'ts-tooling';\nimport {RouterStore} from '../router/router.store';\nimport {AccessPermissionsStore} from '../settings/access.permission.store';\nimport {FarmUsersStore} from '../farm/farm.users.store';\nimport {CampaignYearStore} from './campaignyear.store';\nimport {combineLatest} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\nimport {FertilizerInorganicStore} from '../base-data/fertilizer.inorganic.store';\nimport {FertilizerOrganicStore} from '../base-data/fertilizer.organic.store';\nimport {CropGroupStore} from '../base-data/crop.groups.store';\nimport {CropTypeStore} from '../base-data/crop.types.store';\nimport {MachineStore} from '../docu/machine.store';\nimport {InstrumentStore} from '../docu/instrument.store';\nimport {SubFarmStore} from '../base-data/subfarm.store';\nimport {MachineLoggerStore} from '../docu/machine.logger.store';\nimport {LoggerStore} from '../docu/logger.store';\nimport {DriverStore} from '../docu/driver.store';\nimport {DriverMachineStore} from '../docu/driver.machine.store';\nimport {WorkTypesStore} from '../base-data/worrktypes.store';\nimport {UserStore} from '../base-data/user.store';\nimport {SettingsStore} from '../base-data/settings.store';\nimport {MenuStore} from '../layout/menu.store';\nimport {UserGroupsUserStore} from '../settings/user.group.user.store';\nimport {UserGroupStore} from '../settings/user.group.store';\nimport {UserSettingsStore} from '../settings/usersettings.store';\nimport {ParameterDefinitionStore} from '../parameter/parameter.definition.store';\nimport {NotificationStore} from '../common/notification.store';\nimport {ApMapInstance} from '../../ap-map';\nimport {FormStore} from '../layout/form.store';\nimport {MapStore} from '../map/map.store';\nimport {MapFactoryAuthenticator} from '../../map-factory/authentication';\nimport {KrigingStore} from '../administration/kriging.store';\nimport {ClientCache} from '../local-cache';\nimport {ApplModesStore} from '../common/appl-modes.store';\nimport {ElementsStore} from '../common/elements.store';\nimport {ExportFormatsStore} from '../common/export-formats.store';\nimport {ExportTargetsStore} from '../common/export-targets.store';\nimport {FactorsStore} from '../common/factors.store';\nimport {OperationModesStore} from '../common/operation-modes.store';\nimport {UnitsStore} from '../common/units.store';\nimport {mapFactoryStyler} from '../../map-factory/style';\nimport {ApCookieService} from '../../ap-core/services/ap-cookie.service';\nimport {MachineBreaksStore} from '../docu/machine.breaks.store';\nimport {FieldStore} from '../farm/field.store';\nimport {CropRotationStore} from '../farm/crop.rotation.store';\nimport {JobsStore} from '../administration/jobs.store';\nimport {SoilSampleFieldStore} from '../evaluation/soilsample.field.store';\nimport {TranslationStore} from '../translation/translation.store';\nimport {FarmStore} from '../farm/farm.store';\nimport {\n ApRoleTypeService\n} from '../../services/common/ap-role-type.service';\nimport {LandUseStore} from '../base-data/landuse.store';\nimport {\n FieldNutrientDistributionStore\n} from '../nutrients/field-nutrient-distributions.store';\nimport {\n BasicFertilisationSummariesStore\n} from '../taskmanagement/basic.fertilisation.summaries.store';\nimport {LicenseStore} from '../farm/license.store';\nimport {NUptakeFactorsStore} from '../common/nuptake-factors.store';\nimport {LanguageStore} from '../translation/language.store';\nimport {NUptakeStore} from '../ndi/nuptake.store';\nimport {EffectiveRangesStore} from '../common/effective_ranges.store';\nimport {WorktypeUnitStore} from '../base-data/worktype-unit.store';\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\nimport {ApBase64Util} from '../../ap-utils/static/ap-base64-util';\nimport IUser = Data.Authentication.IUser;\nimport ILogin = Data.Authentication.ILogin;\nimport IFarm = Data.Authentication.IFarm;\nimport IActiveUser = Data.Authentication.IActiveUser;\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\nimport IFarmUsersBase = Data.Authentication.IFarmUsersBase;\n\ninterface ILoginState extends IStateStore {\n user: IUser;\n username: string;\n password: string;\n emailAddress: string;\n isLoggedIn: boolean;\n message: string;\n isEmailAddressSend: boolean;\n isSetPassword: boolean;\n loginTimestamp: string;\n loadingProgress: number;\n maxProgress: number;\n showProgressBar: boolean;\n delay: number;\n}\n\ninterface IFarmState extends IStateStore {\n selectedFarm: IFarm;\n}\n\ninterface ILoginStore {\n login: ILoginState;\n farm: IFarmState;\n activeUsers: IStateStore;\n dataLoading: boolean;\n longOperationInProgress: boolean;\n clientErrorOccurred: boolean;\n isDebugModeEnabled: boolean;\n userPermissions: IApPermissionData;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LoginStore extends Store {\n private _currentNutrient = 'p';\n private _stores: Store[] = [\n this.workTypeStore,\n this.fertilizerInorganicStore,\n this.fertilizerOrganicStore,\n this.cropGroupsStore,\n this.cropTypesStore,\n this.machineStore,\n this.instrumentStore,\n this.subFarmStore,\n this.machinesLoggerStore,\n this.loggerStore,\n this.driverStore,\n this.driverMachineStore,\n this.userStore,\n this.settingsStore,\n this.farmUsersStore,\n this.farmStore,\n this.accessPermissionsStore,\n this.menuStore,\n this.userGroupsUserStore,\n this.userGroupsStore,\n this.userSettingsStore,\n this.machineBreakStore,\n this.translationStore,\n this.landUseStore,\n this.licenseStore,\n this.nuptakeFactorsStore\n ];\n\n public BeforeNavigateToLogin = new EventHandler();\n public BaseDataLoaded = new EventHandler();\n public baseDataLoaded$ = combineLatest([\n ...this._stores.map(st => st.Listen(s => s.loaded)),\n ]).pipe(\n filter(d => d.TrueForAll(state => !!state))\n );\n public baseDataLoadedProgress$ = combineLatest([\n ...this._stores.map(st => st.Listen(s => s.loaded)),\n ]).pipe(\n map(stores => {\n if (stores?.length <= 0) {\n return 0;\n }\n return stores?.FindAll(loaded => loaded === true)?.length / stores?.length * 100;\n })\n );\n\n constructor(public backend: ApSignalrService,\n private cookieService: ApCookieService,\n private routerStore: RouterStore,\n private fieldStore: FieldStore,\n private permissionsStore: AccessPermissionsStore,\n private farmUsersStore: FarmUsersStore,\n private notifyStore: NotifyStore,\n private fertilizerInorganicStore: FertilizerInorganicStore,\n private fertilizerOrganicStore: FertilizerOrganicStore,\n private cropGroupsStore: CropGroupStore,\n private cropTypesStore: CropTypeStore,\n private machineStore: MachineStore,\n private instrumentStore: InstrumentStore,\n private subFarmStore: SubFarmStore,\n private machinesLoggerStore: MachineLoggerStore,\n private loggerStore: LoggerStore,\n private driverStore: DriverStore,\n private driverMachineStore: DriverMachineStore,\n private workTypeStore: WorkTypesStore,\n private userStore: UserStore,\n private campaignYearStore: CampaignYearStore,\n private settingsStore: SettingsStore,\n private accessPermissionsStore: AccessPermissionsStore,\n private menuStore: MenuStore,\n private userGroupsUserStore: UserGroupsUserStore,\n private userGroupsStore: UserGroupStore,\n private userSettingsStore: UserSettingsStore,\n private parameterDefinitionStore: ParameterDefinitionStore,\n private notificationStore: NotificationStore,\n private mapStore: MapStore,\n private formStore: FormStore,\n private krigingStore: KrigingStore,\n private applModesStore: ApplModesStore,\n private elementsStore: ElementsStore,\n private exportFormatsStore: ExportFormatsStore,\n private exportTargetsStore: ExportTargetsStore,\n private factorsStoreStore: FactorsStore,\n private operationModesStore: OperationModesStore,\n private unitsStore: UnitsStore,\n private machineBreakStore: MachineBreaksStore,\n private cropRotationStore: CropRotationStore,\n private soilSampleFieldStore: SoilSampleFieldStore,\n private jobStore: JobsStore,\n private translationStore: TranslationStore,\n private landUseStore: LandUseStore,\n private fieldNutrientDistributionStore: FieldNutrientDistributionStore,\n private basicFertilisationSummariesStore: BasicFertilisationSummariesStore,\n private farmStore: FarmStore,\n private licenseStore: LicenseStore,\n private nuptakeFactorsStore: NUptakeFactorsStore,\n private nuptakeStore: NUptakeStore,\n private languageStore: LanguageStore,\n private effectiveRangesStore: EffectiveRangesStore,\n private workTypeUnitStore: WorktypeUnitStore) {\n super(backend, {\n login: {\n data: [],\n loading: false,\n loaded: false,\n user: null,\n username: null,\n password: null,\n emailAddress: null,\n isLoggedIn: false,\n message: '',\n isEmailAddressSend: false,\n isSetPassword: false,\n loginTimestamp: null,\n loadingProgress: 0,\n maxProgress: 100,\n showProgressBar: false,\n delay: 0\n },\n farm: {\n data: [],\n loaded: false,\n loading: false,\n selectedFarm: null,\n },\n activeUsers: {\n data: [],\n loaded: false,\n loading: false\n },\n dataLoading: false,\n longOperationInProgress: false,\n clientErrorOccurred: false,\n isDebugModeEnabled: false,\n userPermissions: null\n });\n\n this.campaignYearStore.onLoadingStoresComplete.subscribe(() => {\n this.Mutate(s => s.dataLoading, () => false);\n });\n\n this.cropRotationStore.loginStoreFinish.emit(this);\n\n this.campaignYearStore.onSelectCampaignYear.subscribe(() => {\n if (this.routerStore.CurrentUrl !== '/login') {\n if (document.activeElement && typeof document.activeElement['blur'] === 'function') {\n document.activeElement['blur']();\n }\n this.Mutate(s => s.dataLoading, () => true);\n }\n });\n\n this.listenDatabaseUpdate();\n this.listenPermissions();\n this.listenCampaignYearSelect();\n this.listenFarmChange();\n this.listenFarmDataChange();\n this.listenSelectedFarmChange();\n this.listenBaseDataLoaded();\n this.listenLoginFail();\n this.listenLoginSuccess();\n this.listenLogout();\n this.listenSetCookie();\n this.listenLoginDelay();\n this.listenForCurrentUserFullNameUpdate();\n this.listenForResetRedirectToNews();\n this.nuptakeStore.listen();\n\n this.SelectedFarm$.subscribe(() => {\n this.campaignYearStore.Mutate(s => s.farmWasChanged, () => true);\n });\n\n this.User$.subscribe((user: IUser) => {\n this.mapStore.Legends.onNLogInterpolationLegendChanged.emit(user);\n this.mapStore.Legends.onPpLogInterpolationLegendChanged.emit(user);\n });\n\n this.campaignYearStore.SelectedCampaignYear$\n .pipe(filter(y => !!y && y.Year > 0))\n .subscribe(() => {\n this.soilSampleFieldStore.loadSoilSampleFields();\n });\n\n combineLatest([\n this.SelectedFarm$,\n this.campaignYearStore.SelectedCampaignYear$,\n this.routerStore.Listen(s => s.url),\n ]).subscribe(d => {\n if (!d || !d[0] || !d[1] || !d[2]) {\n return;\n }\n const farmId = d[0].Id;\n const year = d[1].Year;\n const url = d[2];\n this.mapStore.Layers.FieldDistributionLegendNutrientChange.emit('p');\n this.soilGroupLayerSourceInit(url, farmId, year);\n this.initialNdiLayerSource(url, farmId, year);\n this.initialNUptakeLayerSource(url, farmId, year);\n });\n\n this.mapStore.Layers.FieldDistributionLegendNutrientChange.subscribe(nutrient => {\n const farm = this.SelectedFarm$.getValue();\n const year = this.campaignYearStore.SelectedCampaignYear$.getValue();\n const currentUrl = this.routerStore.Listen(s => s.url).getValue();\n this._currentNutrient = nutrient;\n if (year && year.Year) {\n this.nutrientDistributionLayerSourceInit(currentUrl, farm.Id, year.Year, nutrient);\n this.soilSampleDistributionLayerSourceInit(currentUrl, farm.Id, year.Year, nutrient);\n }\n });\n\n this.mapStore.Layers.NutrientPlaningLegendChange.subscribe(event => {\n if (event === null) {\n return;\n }\n const nutrientPlanningUrl = this.mapStore.Layers.NutrientPlanningUrl;\n const split = nutrientPlanningUrl.split('?');\n const provider = `pro_nutrient_planning_${event.selectionKeys[0].ToLower()}`;\n const mapName = `map_nutrient_planning_${event.selectionKeys[0].ToLower()}`;\n let url = '';\n if (!StringFactory.IsNullOrEmpty(provider) && !StringFactory.IsNullOrEmpty(mapName)) {\n url = `/map/${provider}/${mapName}/{z}/{x}/{y}?${split[1]}`;\n }\n this.mapStore.Layers.ChangeMapFactoryLayerUrl('', '', 0, 0, (store, sourceUrl) => store.Mutate(s => s.layer.nutrientPlanningUrl, () => url));\n }\n );\n\n this.mapStore.Layers.NeedLegendChange.subscribe(event => {\n const farm = this.SelectedFarm$.getValue();\n const year = this.campaignYearStore.SelectedCampaignYear$.getValue();\n const currentUrl = this.routerStore.Listen(s => s.url).getValue();\n if (event === null) {\n this.initialNeedLayerSourceInit(currentUrl, farm.Id, year.Year, 'p');\n } else {\n switch (event.selectionKeys[0]) {\n case '1' :\n this.initialNeedLayerSourceInit(currentUrl, farm.Id, year.Year, event.selectionKeys[1]);\n break;\n case '2' :\n // Restbedarf 1\n this.needLeftLayerSourceInit(currentUrl, farm.Id, year.Year, false, event.selectionKeys[1]);\n break;\n case '3' :\n // Restbedarf 2\n this.needLeftLayerSourceInit(currentUrl, farm.Id, year.Year, true, event.selectionKeys[1]);\n break;\n }\n }\n });\n\n this.krigingStore.OnInterpolationFinish.subscribe(() => {\n this.mapStore.Layers.ChangeMapFactoryLayerUrl('', '', 0, 0, (store, url) => store.Mutate(s => s.layer.distributionUrl, () => url));\n const farm = this.SelectedFarm$.getValue();\n const year = this.campaignYearStore.SelectedCampaignYear$.getValue();\n const currentUrl = this.routerStore.Listen(s => s.url).getValue();\n if (year) {\n this.nutrientDistributionLayerSourceInit(currentUrl, farm.Id, year.Year, this._currentNutrient);\n this.soilSampleDistributionLayerSourceInit(currentUrl, farm.Id, year.Year, this._currentNutrient);\n this.soilGroupLayerSourceInit(currentUrl, farm.Id, year.Year);\n this.initialNeedLayerSourceInit(currentUrl, farm.Id, year.Year, this._currentNutrient);\n }\n });\n }\n\n public get FieldStore(): FieldStore {\n return this.fieldStore;\n }\n\n public get CampaignYearStore(): CampaignYearStore {\n return this.campaignYearStore;\n }\n\n public get UserPermissions$(): SafeBehaviorSubject {\n return this.Listen(s => s.userPermissions);\n }\n\n public get SelectedFarm$(): SafeBehaviorSubject {\n return this.Listen(s => s.farm.selectedFarm);\n }\n\n public get Farms$(): SafeBehaviorSubject {\n return this.Listen(s => s.farm.data);\n }\n\n public get IsLoggedIn$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.isLoggedIn);\n }\n\n public get Message$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.message);\n }\n\n public get LoginLoading$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.loading);\n }\n\n public get LoadingProgress$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.loadingProgress);\n }\n\n public get MaxProgress$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.maxProgress);\n }\n\n public get ShowProgressBar$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.showProgressBar);\n }\n\n public get Delay$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.delay);\n }\n\n public get EmailAddress$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.emailAddress);\n }\n\n public get IsEmailAddressSend$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.isEmailAddressSend);\n }\n\n public get User$(): SafeBehaviorSubject {\n return this.Listen(s => s.login.user);\n }\n\n public get Farms(): IFarm[] {\n return this.Farms$.getValue();\n }\n\n public get SelectedFarm(): IFarm {\n return this.SelectedFarm$.getValue();\n }\n\n public get SelectedFarmId(): number {\n return this.SelectedFarm$.getValue().Id;\n }\n\n public get User(): IUser {\n return this.Listen(s => s.login.user).getValue();\n }\n\n public get UserId(): number {\n return this.Listen(s => s.login.user).getValue().Id;\n }\n\n public setLongOperationStatus(status: boolean): void {\n this.Mutate(s => s.longOperationInProgress, _ => status);\n }\n\n public setClientErrorOccurred(status: boolean): void {\n this.Mutate(s => s.clientErrorOccurred, _ => status);\n }\n\n /**\n * try to change the selected farm\n */\n public changeSelectedFarm(farm: IFarm): void {\n if (this.formStore.tryCloseForm()) {\n const subscription = this.formStore.formCloseOnRequest.subscribe((close) => {\n if (close) {\n this.DispatchBackend(new InformFarmChange([\n {Name: 'farmId', Type: NetTypes.INT, Value: farm.Id},\n ]));\n }\n subscription.unsubscribe();\n });\n } else if (this.routerStore.tryNavigate()) {\n const subscription = this.routerStore.navigateRequest.subscribe((close) => {\n if (close) {\n this.DispatchBackend(new InformFarmChange([\n {Name: 'farmId', Type: NetTypes.INT, Value: farm.Id},\n ]));\n }\n subscription.unsubscribe();\n });\n } else {\n this.DispatchBackend(new InformFarmChange([\n {Name: 'farmId', Type: NetTypes.INT, Value: farm.Id},\n ]));\n }\n }\n\n /**\n * try to login the given User\n */\n public loginUser(email: string, password: string): void {\n this.updateProgressBarVisibility(true);\n this.Mutate(s => s.login.message, () => null);\n this.Mutate(s => s.login.delay, () => 0);\n this.DispatchBackend(new UserLogin([\n {\n Name: 'data',\n Type: ApCustomTypes.Data_Authentication_Login,\n Value: {\n Email: email,\n Password: ApBase64Util.stringToBase64(password),\n LoginTime: new Date().valueOf(),\n SessionDuration: this.cookieService.CalcAgriportSessionDurationHours()\n } as ILogin\n }\n ]));\n }\n\n /**\n * Some actions when user leaves agriport by closing window/tab\n * while being logged in.\n */\n public pageLeave(): void {\n this.DispatchBackend(new UserLeavePage());\n }\n\n /**\n * try to logout\n */\n public logoutUser(): void {\n this.cookieService.logout();\n\n // Do not clear translation store on logout\n // This store does not need a reload\n for (const store of this._stores.FindAll(_ => _ !== this.translationStore)) {\n store.Clear();\n }\n this.mapStore.Layers.Clear();\n ApMapInstance.clear();\n this.Mutate(s => s.login, () =>\n ({\n data: [],\n loading: false,\n loaded: false,\n user: null,\n username: null,\n password: null,\n emailAddress: null,\n isLoggedIn: false,\n message: '',\n isEmailAddressSend: false,\n isSetPassword: false,\n loginTimestamp: null,\n loadingProgress: 0,\n maxProgress: 100,\n showProgressBar: false,\n delay: 0\n } as ILoginState));\n\n super.Mutate(s => s.farm, () =>\n ({\n data: [],\n loaded: false,\n loading: false,\n selectedFarm: null\n } as IFarmState));\n\n this.licenseStore.setLicenseEmpty();\n\n this.routerStore.navigateToLogin().then(() => {\n });\n }\n\n public updateLoadingProgress(value: number): void {\n this.Mutate(s => s.login.loadingProgress, () => value);\n }\n\n public updateProgressBarVisibility(value: boolean): void {\n this.Mutate(s => s.login.showProgressBar, () => value);\n }\n\n public loginWithCookie(): void {\n if (this.cookieService.getCookie()) {\n this.updateProgressBarVisibility(true);\n }\n this.cookieService.login();\n }\n\n /**\n * Turns on/off debug mode of Agriport.\n * This feature enables additional output in console or showing all columns\n * in dataGrids.\n * It can be activated by Agricon-Admins with pressing Ctrl-Alt-Space.\n */\n public switchDebugMode(): void {\n if (!ApRoleTypeService.hasAgriconRole(this.User)) {\n return;\n }\n const isDebugModeEnabled = !this.Listen(s => s.isDebugModeEnabled).getValue();\n // ApMapInstance is no component but a static class\n // Therefor we have to enable/disable the debug output like this\n // MapDebug is only enabled for developer level\n if (ApRoleTypeService.hasDeveloperRole(this.User)) {\n ApMapInstance.isDebugModeEnabled = isDebugModeEnabled;\n ApSignalrService.isDebugMode = isDebugModeEnabled;\n }\n super.Mutate(s => s.isDebugModeEnabled, () => isDebugModeEnabled);\n }\n\n private nutrientDistributionLayerSourceInit(url: string, farmId: number, year: number, nutrient: string): void {\n const provider = `pro_wsv_${nutrient.ToLower()}`;\n const mapName = `map_wsv_${nutrient.ToLower()}`;\n const sampleMap = `map_sample_tracks_${nutrient.ToLower()}`;\n this.mapStore.Layers.ChangeMapFactoryLayerUrl(provider, mapName, farmId, year, (store, sourceUrl) => store.Mutate(s => s.layer.distributionUrl, () => sourceUrl));\n this.mapStore.Layers.ChangeMapFactoryLayerUrl('pro_sample_tracks', sampleMap, farmId, year, (store, sourceUrl) => store.Mutate(s => s.layer.soilSampleUrl, () => sourceUrl));\n }\n\n private soilSampleDistributionLayerSourceInit(url: string, farmId: number, year: number, nutrient: string): void {\n const provider = `pro_bu_${nutrient.ToLower()}`;\n const mapName = `map_bu_${nutrient.ToLower()}`;\n const sampleMap = `map_samples_${nutrient.ToLower()}`;\n this.mapStore.Layers.ChangeMapFactoryLayerUrl(provider, mapName, farmId, year, (store, sourceUrl) => store.Mutate(s => s.layer.soilSampleDistributionUrl, () => sourceUrl));\n }\n\n private soilGroupLayerSourceInit(url: string, farmId: number, year: number): void {\n let layerProvider = 'pro_wsv_soilgroup';\n let layerMap = 'map_wsv_soilgroup';\n if (url.Split('?').FirstOrDefault()?.EndsWith('/soil-sample-fields')) {\n layerProvider = 'pro_bu_soilgroup';\n layerMap = 'map_bu_soilgroup';\n }\n this.mapStore.Layers.ChangeMapFactoryLayerUrl(layerProvider, layerMap, farmId, year, (store, sourceUrl) => store.Mutate(s => s.layer.soilGroupUrl, () => sourceUrl));\n }\n\n private needLeftLayerSourceInit(url: string, farmId: number, year: number, isNeedLeftPlanned: boolean, nutrient: string): void {\n let provider = isNeedLeftPlanned === true ? 'pro_rb_planned_' : 'pro_rb_';\n let mapName = isNeedLeftPlanned === true ? 'map_rb_planned_' : 'map_rb_';\n provider = `${provider}${nutrient.ToLower()}`;\n mapName = `${mapName}${nutrient.ToLower()}`;\n\n this.fieldStore.Fields$.subscribe(fields => {\n if (fields == null) {\n return;\n }\n if (fields.length === 0) {\n return;\n }\n const tmp = [];\n for (const field of fields) {\n if (!field.FieldGeoms || typeof field.FieldGeoms !== typeof [] || field.FieldGeoms.length < 1) {\n continue;\n }\n for (const geom of field.FieldGeoms) {\n tmp.push(geom.Id);\n }\n }\n this.mapStore.Layers.NeedLeftLayerSourceInit(provider, mapName, tmp);\n });\n }\n\n private initialNeedLayerSourceInit(url: string, farmId: number, year: number, nutrient: string): void {\n const provider = `pro_ir_contours_${nutrient.ToLower()}`;\n const mapName = `map_ir_contours_${nutrient.ToLower()}`;\n this.mapStore.Layers.ChangeMapFactoryLayerUrl(provider, mapName, farmId, year, (store, sourceUrl) => store.Mutate(s => s.layer.rbUrl, () => sourceUrl));\n }\n\n private initialNdiLayerSource(url: string, farmId: number, year: number): void {\n this.mapStore.Layers.ChangeMapFactoryLayerUrlNdi('pro_ndi', 'map_ndi', farmId, year, (store, sourceUrl) => store.Mutate(s => s.layer.ndiLayerUrl, () => sourceUrl));\n }\n\n private initialNUptakeLayerSource(url: string, farmId: number, year: number): void {\n this.mapStore.Layers.ChangeMapFactoryLayerUrlNUptake('pro_nuptake', 'map_nuptake', farmId, year, (store, sourceUrl) => store.Mutate(s => s.layer.nUptakeUrl, () => sourceUrl));\n }\n\n private listenDatabaseUpdate(): void {\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n private listenPermissions(): void {\n combineLatest([\n this.farmUsersStore.Listen(s => s.data),\n this.Listen(s => s.login.user),\n this.permissionsStore.Listen(s => s.data),\n this.Listen(s => s.farm.selectedFarm),\n ]).subscribe(d => {\n this.Mutate(s => s.userPermissions, () => ({\n FarmUsers: d[0],\n User: d[1],\n Permissions: d[2],\n Farm: d[3]\n }));\n });\n }\n\n /**\n * when farm was changed in the Backend Session set the selected farm with the farm from the farm list find by id\n */\n private listenFarmChange(): void {\n this.backend.registerObservable(InformFarmChangeSuccess).subscribe(d => {\n if (d === null) {\n return;\n }\n this.mapStore.Layers.Reset();\n const selectedFarm = this.Farms.Find((f: IFarm) => f.Id === d.Data);\n this.Mutate(s => s.farm.selectedFarm, () => selectedFarm);\n });\n }\n\n /**\n * on farm data is load get the last selected farm from local cache and select the Farm when it was in the list\n * otherwise select the first farm in the farm list\n */\n private listenFarmDataChange(): void {\n this.Listen(s => s.farm.data).subscribe(async (d) => {\n if (d.length === 0) {\n return;\n }\n const farmId = ClientCache.readValue(APP_CONFIGURATION.StoreKeys.LastVisitFarmId);\n const matchFarm = (d.Find((e: IFarm) => e.Id === farmId) || d[0]);\n if (matchFarm !== undefined) {\n this.changeSelectedFarm(matchFarm);\n }\n });\n }\n\n /**\n * Loads all stores which contain non farm related data.\n * This load process should be triggered only once after login\n * @private\n */\n private loadFarmIndependentBaseData(): void {\n this.fieldNutrientDistributionStore.loadSampleMethods();\n this.fieldNutrientDistributionStore.loadSampleRegions();\n this.landUseStore.loadLandUse();\n this.factorsStoreStore.loadFactors();\n this.nuptakeFactorsStore.loadNUptakeFactors();\n this.unitsStore.loadUnits();\n this.operationModesStore.loadOperationModes();\n this.exportFormatsStore.loadExportFormats();\n this.exportTargetsStore.loadExportTargets();\n this.applModesStore.loadApplModes();\n this.elementsStore.loadElements();\n this.workTypeStore.loadWorktypes();\n this.effectiveRangesStore.loadEffectiveRanges();\n this.workTypeUnitStore.loadWorktypeUnits();\n }\n\n /**\n * when a farm was selected load all farm specific data\n */\n private listenSelectedFarmChange(): void {\n combineLatest([this.Listen(s => s.farm.selectedFarm),\n this.translationStore.Listen(s => s.loading)]).pipe(\n filter(([selectedFarm, translationsLoading]) => selectedFarm && !translationsLoading))\n .subscribe(async ([selectedFarm]) => {\n ClientCache.writeValue(APP_CONFIGURATION.StoreKeys.LastVisitFarmId, selectedFarm.Id);\n if (this.routerStore.CurrentUrl !== '/login') {\n if (document.activeElement && typeof document.activeElement['blur'] === 'function') {\n document.activeElement['blur']();\n }\n this.Mutate(s => s.dataLoading, () => true);\n }\n\n this.campaignYearStore.loadCampaignYears();\n this.licenseStore.loadLicensesForFarm();\n this.userStore.loadUsers();\n this.settingsStore.loadSettings();\n this.settingsStore.loadTimeZones();\n this.farmUsersStore.loadFarmUsers();\n this.accessPermissionsStore.loadAccessPermissions();\n this.menuStore.fillMenuData();\n this.userGroupsUserStore.loadUserGroupsUser();\n this.userGroupsStore.loadUserGroups();\n this.userSettingsStore.loadUserSettings();\n this.farmStore.loadFarm();\n this.fertilizerInorganicStore.loadFertilizerInorganic();\n this.fertilizerOrganicStore.loadFertilizerOrganic();\n this.cropGroupsStore.loadCropGroups();\n this.cropTypesStore.loadCroptypes();\n this.machineStore.loadMachines();\n this.machineStore.loadMachineTypes();\n this.instrumentStore.loadInstruments();\n this.subFarmStore.loadSubFarms();\n this.machinesLoggerStore.loadMachinesLogger();\n this.loggerStore.loadLogger();\n this.driverStore.loadDrivers();\n this.driverMachineStore.loadDriverMachine();\n this.parameterDefinitionStore.loadParameterDefinition();\n this.notificationStore.loadNotification();\n this.machineBreakStore.loadMachineBreaks();\n this.basicFertilisationSummariesStore.loadBasicFertilisationSummaries();\n });\n combineLatest([\n this.fieldStore.Loaded$,\n this.soilSampleFieldStore.Loaded$,\n ]).pipe(\n filter(args => args.TrueForAll(arg => arg))\n ).subscribe(() => {\n if (!this.SelectedFarm || this.SelectedFarm?.Id < 0) {\n return;\n }\n this.jobStore.loadFarmJobs(this.SelectedFarm?.Id, 30);\n });\n }\n\n private listenBaseDataLoaded(): void {\n this.baseDataLoadedProgress$.subscribe(baseDataLoadedPercentage => {\n this.Mutate(s => s.login.loadingProgress, () => baseDataLoadedPercentage);\n });\n\n this.baseDataLoaded$.subscribe(async () => {\n this.BaseDataLoaded.Invoke(null);\n const lastVisitCampaignYearId = ClientCache.readValue(APP_CONFIGURATION.StoreKeys.LastVisitCampaignYear);\n let year = this.campaignYearStore.getCampaignYears().Find(c => c.Id === lastVisitCampaignYearId);\n if (!year) {\n year = this.campaignYearStore.getCampaignYears()[0];\n }\n if (!this.campaignYearStore.FarmWasChanged && this.campaignYearStore.SelectedCampaignYear?.Year === year.Year) {\n return;\n }\n this.campaignYearStore.Mutate(s => s.farmWasChanged, () => false);\n this.campaignYearStore.selectCampaignYear(year);\n });\n }\n\n private listenLoginFail(): void {\n this.backend.registerObservable(UserLoginFail).subscribe(d => {\n this.Mutate(s => s.login.loading, () => false);\n this.Mutate(s => s.login.data, () => []);\n this.Mutate(s => s.login.user, () => null);\n this.Mutate(s => s.login.message, () => d.Data);\n this.Mutate(s => s.login.isLoggedIn, () => false);\n });\n }\n\n private listenLoginSuccess(): void {\n this.backend.registerObservable(UserLoginSuccess).subscribe(d => {\n this.loadFarmIndependentBaseData();\n this.DispatchBackend(new MapFactoryAuthenticationLoad()).watchStream({\n action: MapFactoryAuthenticationSuccess,\n todo: payload => {\n const keys = Object.keys(payload.Data);\n if (keys.length < 1) {\n console.warn(`invalid map factory authentication`);\n return;\n }\n MapFactoryAuthenticator.userInfo = {\n user: keys[0], password: payload.Data[keys[0]],\n };\n MapFactoryAuthenticator.getHash().then(() => {\n this.Mutate((s) => s.login.data, () => d.Data);\n this.Mutate((s) => s.login.user, () => d.Data[0].User);\n this.Mutate((s) => s.login.isLoggedIn, () => true);\n this.Mutate((s) => s.login.loginTimestamp, () => getNow().toJSON());\n this.Mutate((s) => s.farm.data, () => d.Data.Convert(e => e.Farm));\n\n // init map factory style needs a logged in user\n mapFactoryStyler().reloadServerStyles().then();\n }).catch(err => {\n console.warn('error on authenticate on map factory', err);\n });\n }\n });\n this.languageStore.saveSelectedLanguageToLocalStorage();\n });\n }\n\n private listenCampaignYearSelect(): void {\n this.backend.registerObservable(CampaignYearSelect).subscribe(async () => {\n this.Mutate(s => s.login.loadingProgress, () => 100);\n const res = ClientCache.readValue(APP_CONFIGURATION.StoreKeys.LastVisitUrl);\n const params = ClientCache.readValue(APP_CONFIGURATION.StoreKeys.LastVisitUrlParams);\n let url = [res || APP_CONFIGURATION.StartPage];\n let extras = params || {};\n if (this.User?.RedirectToNews) {\n url = ['/dashboard'];\n extras = {redirectToNews: true};\n }\n\n this.BeforeNavigateToLogin.Invoke(url);\n await this.routerStore.navigate(url, extras);\n });\n }\n\n private listenLogout(): void {\n this.backend.registerObservable(LogoutFromSystem).subscribe(() => {\n const message = {\n DisplayTimeout: 10,\n Level: Data.Api.Validation.ApValidationLevel.Info,\n ErrorKey: 'DataContext__SessionExpired'\n } as IApValidationResult;\n this.notifyStore.addMessage(message);\n this.logoutUser();\n });\n }\n\n private listenForCurrentUserFullNameUpdate(): void {\n this.backend.registerObservable(UserUpdateFullNameSuccess).subscribe(d => {\n if (!d?.Data && d.Data.Id !== this.UserId) {\n return;\n }\n this.Mutate(x => x.login, () => {\n const loginState = ObjectFactory.Copy(this.Listen(x => x.login).getValue());\n loginState.user = d.Data;\n return loginState;\n });\n });\n }\n\n private listenForResetRedirectToNews(): void {\n this.backend.registerObservable(UserResetRedirectToNewsSuccess).subscribe(d => {\n if (!d?.Data && d.Data.Id !== this.UserId) {\n return;\n }\n this.Mutate(x => x.login, () => {\n const loginState = ObjectFactory.Copy(this.Listen(x => x.login).getValue());\n loginState.user = d.Data;\n return loginState;\n });\n });\n }\n\n private listenSetCookie(): void {\n this.cookieService.afterSetCookie = () => {\n this.updateProgressBarVisibility(true);\n };\n }\n\n private listenLoginDelay(): void {\n this.backend.registerObservable(UserLoginDelay).subscribe(d => {\n this.Mutate(s => s.login.delay, () => d.Data);\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {BurgerMenuItem} from '../../ap-interface/interfaces/map/burger-menu-item';\nimport {MapLayerControlComponent} from '../../entry-components/burger-menu-entry-components/map-layer-control.component';\nimport 'ts-tooling';\nimport {ApDynamicComponentModel} from '../../entry-components/ap-dynamic-component-loader/ap-dynamic-component-loader.component';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IBurgerMenuState {\n data: BurgerMenuItem[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class BurgerMenuStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [\n {\n title: 'AgriConnect_Map',\n content: new ApDynamicComponentModel(MapLayerControlComponent),\n },\n ]\n });\n }\n\n addControl(title: string, component: any, data?: any): void {\n super.Mutate(s => s.data, (d) =>\n d.Insert(d.length, {\n title,\n content: new ApDynamicComponentModel(component, data),\n }));\n }\n\n removeControl(title): void {\n super.Mutate(s => s.data, (d) => d.RemoveAll(i => i.title === title));\n }\n}\n","import {IApMapColorLegend, IApMapColorLegendItem} from '../../ap-interface/interfaces';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {ApDynamicComponentModel} from '../../entry-components/ap-dynamic-component-loader/ap-dynamic-component-loader.component';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IColorLegendState {\n colorLegends: { [key: string]: IApMapColorLegend };\n selectedValue: any;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ColorLegendStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n colorLegends: {},\n selectedValue: {}\n });\n }\n\n private static _getColors(items: any[]): IApMapColorLegendItem[] {\n const colors: IApMapColorLegendItem[] = [];\n\n for (const item of items) {\n if (item instanceof Array && (item as []).length >= 2 &&\n typeof item[0] === typeof '' && typeof item[0] === typeof '') {\n\n colors.push({color: item[0], label: item[1]});\n\n } else if (typeof item === typeof {} && (item as {}).hasOwnProperty('color')) {\n\n if ((item as {}).hasOwnProperty('label')) {\n colors.push({color: item['color'], label: item['label']});\n } else if ((item as {}).hasOwnProperty('value')) {\n colors.push({color: item['color'], label: item['value']});\n }\n }\n }\n\n return colors;\n }\n\n public setColorLegend(layer: { Visibility: boolean, name: string }, items: any[], title: string, options: {\n unit?: string,\n component?: ApDynamicComponentModel,\n value?: string\n }): void {\n super.Mutate(s => s.colorLegends, (map) => {\n map[title] = {\n colors: ColorLegendStore._getColors(items),\n title,\n unit: options.unit ? options.unit : '',\n component: options.component ? options.component : undefined,\n value: options.value ? options.value : '',\n layerName: layer.name,\n };\n return map;\n });\n }\n\n public resetColorLegend(title?: string): void {\n if (title === undefined) {\n super.Mutate(s => s.colorLegends, () => ({}));\n super.Mutate(s => s.selectedValue, () => ({}));\n } else {\n super.Mutate(s => s.colorLegends, (map) => {\n delete map[title];\n return map;\n });\n }\n }\n\n public valueChange(key, value: any): void {\n super.Mutate(s => s.selectedValue, () => {\n const o = {};\n o[key] = value;\n return o;\n });\n }\n}\n","import {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {ILayerControlLayer} from '../../ap-interface/map/layer-control-layer.interface';\nimport {orderBy} from '@progress/kendo-data-query';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {BingImagery, LayerNames} from '../../ap-map';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface Map {\n value: BingImagery;\n text: string;\n}\n\ninterface LayerItem {\n text: string;\n layer: ILayerControlLayer;\n}\n\ninterface IMapLayerControlState {\n mapData: Map;\n maps: Map[];\n layers: ILayerControlLayer[];\n data: LayerItem[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class MapLayerControlStore extends Store {\n public onVisibilityChanged = new EventEmitter<{ layer: ILayerControlLayer, visibility: boolean }>();\n public onOrderChanged = new EventEmitter<{ layer: ILayerControlLayer, order: number }>();\n public onBackgroundMapChanged = new EventEmitter();\n\n private translationKeys = {\n [LayerNames.FIELDS]: 'Global__Fields',\n [LayerNames.SOIL_SAMPLE_FIELDS]: 'Base_Pages__SampleFields',\n [LayerNames.LOCATIONS]: 'Settings__Lbl_Menu_Devices',\n [LayerNames.TRACK]: 'Docu__Driving_Lanes',\n [LayerNames.SOIL_SAMPLES]: 'DataContext_InterfaceMapping__Samples',\n [LayerNames.SOIL_SAMPLE_DISTRIBUTIONS]: 'Global__SoilSample_NutrientDistribution',\n [LayerNames.DISTRIBUTIONS]: 'Global__NutrientDistribution',\n [LayerNames.SOIL_GROUP_MAP]: 'Nutrients__Soilgroup',\n [LayerNames.NEED]: 'Nutrients__Need',\n [LayerNames.FUNGIDETECT]: 'Global__Fungidetect',\n [LayerNames.CONTACT]: 'Tip_ContactText',\n [LayerNames.EDIT]: 'Base__Editor',\n [LayerNames.TASK_MANAGEMENT]: 'Base__TaskWriter',\n [LayerNames.TASK_MANAGEMENT_NUTRIENT]: 'Global__NutrientDistribution',\n [LayerNames.NUTRIENT_PLANNINGS]: 'Global__Planning',\n [LayerNames.FIELDS_CROP]: 'Global__Crops',\n [LayerNames.SENSOR_POINTS]: 'Global__SamplePoints',\n [LayerNames.N_RASTER]: 'N__Sensor',\n [LayerNames.N_APPLICATION_MAP]: 'Global__Planning',\n };\n\n constructor(private backend: ApSignalrService,\n private translationService: ApTranslationService) {\n super(backend, {\n mapData: null,\n maps: [],\n layers: [],\n data: [],\n }, true);\n }\n\n get Maps$(): SafeBehaviorSubject {\n return this.Listen(s => s.maps);\n }\n\n get Maps(): Map[] {\n return this.Maps$.getValue();\n }\n\n get MapData$(): SafeBehaviorSubject {\n return this.Listen(s => s.mapData);\n }\n\n get MapData(): Map {\n return this.MapData$.getValue();\n }\n\n get Data$(): SafeBehaviorSubject {\n return this.Listen(s => s.data);\n }\n\n get Data(): LayerItem[] {\n return this.Data$.getValue();\n }\n\n public refresh(param: {\n map: BingImagery,\n layers: ILayerControlLayer[],\n }): void {\n this.Mutate(s => s.maps, () => ([\n {value: BingImagery.GRAYSCALE_ROAD, text: this.translationService.translate('Base__Maps_Road')},\n {value: BingImagery.HYBRID, text: this.translationService.translate('Base__Maps_Hybrid')},\n {value: BingImagery.SATELLITE, text: this.translationService.translate('Base__Maps_Aerial')},\n ]));\n this.Mutate(s => s.mapData, () => this.Maps.Find(map => map.value === param.map));\n this.Mutate(s => s.layers, () => param.layers);\n this.Mutate(s => s.data, () => orderBy(this._layerControlLayerToLayerItem(param.layers), [{\n field: 'layer.Order',\n dir: 'asc'\n }]));\n }\n\n public reorder(sourceItem: LayerItem, destinationItem: LayerItem, step: number): void {\n const sourceOrder = sourceItem.layer.Order;\n const destinationOrder = destinationItem.layer.Order;\n if (sourceOrder < destinationOrder) {\n this.Data\n .FindAll(d => d.layer.Order > sourceOrder && d.layer.Order <= destinationOrder)\n .forEach(d => this.onOrderChanged.emit({\n layer: d.layer,\n order: d.layer.Order + step,\n }));\n } else if (sourceOrder > destinationOrder) {\n this.Data\n .FindAll(d => d.layer.Order < sourceOrder && d.layer.Order >= destinationOrder)\n .forEach(d => this.onOrderChanged.emit({\n layer: d.layer,\n order: d.layer.Order - step,\n }));\n }\n this.onOrderChanged.emit({\n layer: sourceItem.layer,\n order: destinationOrder,\n });\n }\n\n public move(item: LayerItem, dir: 1 | -1): void {\n const other = this.Data.FindAll(d => d.layer.Order === item.layer.Order + dir);\n if (other.Any()) {\n this.onOrderChanged.emit({\n layer: other[0].layer,\n order: other[0].layer.Order + dir,\n });\n\n this.onOrderChanged.emit({\n layer: item.layer,\n order: item.layer.Order - dir,\n });\n }\n }\n\n private _layerControlLayerToLayerItem(layers: ILayerControlLayer[]): LayerItem[] {\n return layers.map((layer) => ({\n text: this.translationService.translate(this.translationKeys[layer.name]),\n layer\n }));\n }\n}\n","import {MapLayerTooltipFunction} from '../../ap-map/layers/map-factory-layer';\nimport {Injectable} from '@angular/core';\nimport {GetRoundNumericService} from '../../ap-utils/service/get-round-numeric.service';\nimport {ISoilGroupFeature, ISoilSampleFeature} from './interfaces/soil-sample-feature.interface';\nimport * as moment from 'moment-timezone';\nimport {ApElementOxydTypeEnum} from '../../ap-interface';\nimport {ApElementType} from '../../ap-interface/enums/ap-elements-type.enum';\nimport {AgriportConstantsService} from '../../services/common/agriport-constants.service';\nimport {LanguageStore} from '../translation/language.store';\nimport {GetElementService} from '../../ap-utils/service/ap-get-element.service';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {ILegend} from './map.legend.store';\n\n@Injectable({providedIn: 'root'})\nexport class MapLayerTooltipStore {\n constructor(private languageStore: LanguageStore,\n private elementService: GetElementService,\n private translationService: ApTranslationService,\n private roundNumericService: GetRoundNumericService,\n private agriportConstantsService: AgriportConstantsService) {\n }\n\n public getNutrientPlanningsLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, legend: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const rawValue = +JSON.parse(featureProperties.data)?.value;\n let value = this.roundNumericService.roundValue(rawValue);\n const selectedLegendValue = legend.selectionLists[0]?.selectedValue.getValue();\n if (!value || value?.length <= 0) {\n return undefined;\n }\n if (selectedLegendValue.transformFunction) {\n value = this.roundNumericService.round(selectedLegendValue.transformFunction(rawValue), 0);\n }\n return `${selectedLegendValue.text}: ${value} ${selectedLegendValue.suffix ?? ''}`;\n };\n }\n\n public getSoilSamplesLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, _: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const soilSampleFeature: ISoilSampleFeature = JSON.parse(featureProperties.data);\n const sampleDate = moment(soilSampleFeature?.sampledate);\n let sampleDateFormatted = '-';\n if (sampleDate && sampleDate.isValid()) {\n sampleDateFormatted = sampleDate.format(this.languageStore.SelectedLanguage.DateFormat);\n }\n const pValue = soilSampleFeature ? this.elementService.convertElementOxid(soilSampleFeature?.p ?? 0, ApElementOxydTypeEnum.P, soilSampleFeature?.method_p) : 0;\n const kValue = soilSampleFeature ? this.elementService.convertElementOxid(soilSampleFeature?.k ?? 0, ApElementOxydTypeEnum.K, soilSampleFeature?.method_k) : 0;\n const mgValue = soilSampleFeature ? this.elementService.convertElementOxid(soilSampleFeature?.mg ?? 0, ApElementOxydTypeEnum.Mg, soilSampleFeature?.method_mg) : 0;\n const tooltipLines = [\n `${this.translationService.translate('Global__SampleDate')}: ${sampleDateFormatted}`,\n `${this.translationService.translate('GPS_Number')}: ${soilSampleFeature?.gpsnumber ?? '-'}`,\n `${this.elementService.GetElementStringByString(ApElementType.P)}: ${pValue} [${soilSampleFeature?.class_p ?? '-'}]`,\n `${this.elementService.GetElementStringByString(ApElementType.K)}: ${kValue} [${soilSampleFeature?.class_k ?? '-'}]`,\n `${this.elementService.GetElementStringByString(ApElementType.Mg)}: ${mgValue} [${soilSampleFeature?.class_mg ?? '-'}]`,\n `${this.translationService.translate('Global__Nutrient_pH_Short')}: ${soilSampleFeature?.ph ?? 0} [${soilSampleFeature?.class_ph ?? '-'}]`\n ];\n return tooltipLines.join('\\n');\n };\n }\n\n public getSoilGroupMapLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, _: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const soilGroupFeature: ISoilGroupFeature = JSON.parse(featureProperties.data);\n return `${this.translationService.translate('Nutrients__Soilgroup')}: ${soilGroupFeature?.group ?? '-'}`;\n };\n }\n\n public getNeedLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, legend: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n let rawValue = +JSON.parse(featureProperties.data)?.value;\n const mapLegendTypeElement = legend.selectionLists[1]?.selectedValue.getValue();\n if (!isFinite(rawValue) || !mapLegendTypeElement?.text) {\n return undefined;\n }\n if (mapLegendTypeElement.transformFunction) {\n rawValue = mapLegendTypeElement.transformFunction(rawValue);\n }\n const value = this.roundNumericService.roundValue(rawValue);\n return `${mapLegendTypeElement.text}: ${value} ${legend.unit}`;\n };\n }\n\n public getSensorPointsLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, _: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const value = this.roundNumericService.round(+JSON.parse(featureProperties.data)?.value, 0);\n if (!value || value?.length <= 0) {\n return undefined;\n }\n const logPoints = this.translationService.translate('Global__SamplePoints');\n const nUptake = this.translationService.translate('NUptake');\n const unit = this.translationService.translate('Global__Unit_kgN_ha');\n return `${logPoints} ${nUptake}: ${value} ${unit}`;\n };\n }\n\n public getNRasterLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, legend: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const rawValue = +JSON.parse(featureProperties.data)?.value;\n if (!isFinite(rawValue)) {\n return undefined;\n }\n const selectedLegendValue = legend.selectionLists[0]?.selectedValue.getValue();\n const text = this.translationService.translate(selectedLegendValue.text ?? '');\n if (rawValue === +this.agriportConstantsService.GetConstant('RasterNoValue')) {\n return `${text}: -`;\n }\n const value = this.roundNumericService.roundValue(rawValue);\n const suffix = this.translationService.translate(selectedLegendValue.suffix ?? '');\n return `${text}: ${value} ${suffix}`;\n };\n }\n\n public getNdiLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, _: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const tooltipLines = [];\n const nIndex = JSON.parse(featureProperties.data)?.ndi;\n if (nIndex) {\n tooltipLines.push(`${this.translationService.translate('Global__NDI_Name')}: ${nIndex}`);\n }\n const day = JSON.parse(featureProperties.data)?.day;\n if (day) {\n const date = moment(day);\n if (date.isValid()) {\n tooltipLines.push(`${this.translationService.translate('Global__Date')}: ${date.format(this.languageStore.CurrentDateFormat)}`);\n }\n }\n return tooltipLines.join('\\n');\n };\n }\n\n public getNApplicationMapLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, legend: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const rawValue = +JSON.parse(featureProperties.data)?.value;\n let value = this.roundNumericService.roundValue(rawValue);\n const selectedLegendValue = legend.selectionLists[0]?.selectedValue.getValue();\n if (!value || value?.length <= 0) {\n return undefined;\n }\n if (selectedLegendValue.transformFunction) {\n value = this.roundNumericService.round(selectedLegendValue.transformFunction(rawValue), 0);\n }\n if (rawValue === +this.agriportConstantsService.GetConstant('RasterNoValue')) {\n return `${selectedLegendValue.text}: -`;\n }\n return `${selectedLegendValue.text}: ${value} ${selectedLegendValue.suffix ?? ''}`;\n };\n }\n\n public getNUptakeLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, _: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const tooltipLines = [];\n const nUptake = +JSON.parse(featureProperties.data)?.nuptake;\n const tooltipValue = this.roundNumericService.round((nUptake < 0 ? 0 : nUptake), 0);\n if (tooltipValue && tooltipValue?.length > 0) {\n tooltipLines.push(`${this.translationService.translate('NUptake_Sat')}: ${tooltipValue}`);\n }\n const day = JSON.parse(featureProperties.data)?.day;\n if (day) {\n const date = moment(day);\n if (date.isValid()) {\n tooltipLines.push(`${this.translationService.translate('Global__Date')}: ${date.format(this.languageStore.SelectedLanguage.DateFormat)}`);\n }\n }\n return tooltipLines.join('\\n');\n };\n }\n\n public getPpRasterLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, legend: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const rawValue = +JSON.parse(featureProperties.data)?.value;\n if (!isFinite(rawValue)) {\n return undefined;\n }\n const value = this.roundNumericService.roundValue(rawValue);\n const selectedLegendValue = legend.selectionLists[0]?.selectedValue.getValue();\n const text = this.translationService.translate(selectedLegendValue.text ?? '');\n const suffix = this.translationService.translate(selectedLegendValue.suffix ?? '');\n if (rawValue === +this.agriportConstantsService.GetConstant('RasterNoValue')) {\n return `${selectedLegendValue.text}: -`;\n }\n return `${text}: ${value} ${suffix}`;\n };\n }\n\n public getPpApplicationMapLayerTooltip(): MapLayerTooltipFunction {\n return (featureProperties: { [key: string]: any }, legend: ILegend) => {\n if (!featureProperties) {\n return undefined;\n }\n const rawValue = +JSON.parse(featureProperties.data)?.value;\n const selectedLegendValue = legend.selectionLists[0]?.selectedValue.getValue();\n const value = this.roundNumericService.roundValue(rawValue);\n if (!value || value?.length <= 0) {\n return undefined;\n }\n if (rawValue === +this.agriportConstantsService.GetConstant('RasterNoValue')) {\n return `${selectedLegendValue.text}: -`;\n }\n return `${this.translationService.translate('Global__Plant_Protection')}: ${value}`;\n };\n }\n}\n","/**\n * @module ol/uri\n */\n/**\n * Appends query parameters to a URI.\n *\n * @param {string} uri The original URI, which may already have query data.\n * @param {!Object} params An object where keys are URI-encoded parameter keys,\n * and the values are arbitrary types or arrays.\n * @return {string} The new URI.\n */\nexport function appendParams(uri, params) {\n var keyParams = [];\n // Skip any null or undefined parameter values\n Object.keys(params).forEach(function (k) {\n if (params[k] !== null && params[k] !== undefined) {\n keyParams.push(k + '=' + encodeURIComponent(params[k]));\n }\n });\n var qs = keyParams.join('&');\n // remove any trailing ? or &\n uri = uri.replace(/[?&]$/, '');\n // append ? or & depending on whether uri has existing parameters\n uri = uri.indexOf('?') === -1 ? uri + '?' : uri + '&';\n return uri + qs;\n}\n","/**\n * @module ol/source/WMTS\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport TileImage from './TileImage.js';\nimport WMTSRequestEncoding from './WMTSRequestEncoding.js';\nimport { appendParams } from '../uri.js';\nimport { assign } from '../obj.js';\nimport { createFromCapabilitiesMatrixSet } from '../tilegrid/WMTS.js';\nimport { createFromTileUrlFunctions, expandUrl } from '../tileurlfunction.js';\nimport { equivalent, get as getProjection } from '../proj.js';\nimport { find, findIndex, includes } from '../array.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least the number of tiles in the viewport.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [imageSmoothing=true] Enable image smoothing.\n * @property {import(\"../tilegrid/WMTS.js\").default} tileGrid Tile grid.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {import(\"./WMTSRequestEncoding.js\").default|string} [requestEncoding='KVP'] Request encoding.\n * @property {string} layer Layer name as advertised in the WMTS capabilities.\n * @property {string} style Style name as advertised in the WMTS capabilities.\n * @property {typeof import(\"../ImageTile.js\").default} [tileClass] Class used to instantiate image tiles. Default is {@link module:ol/ImageTile~ImageTile}.\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service.\n * For example, if the tile service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {string} [format='image/jpeg'] Image format. Only used when `requestEncoding` is `'KVP'`.\n * @property {string} [version='1.0.0'] WMTS version.\n * @property {string} matrixSet Matrix set.\n * @property {!Object} [dimensions] Additional \"dimensions\" for tile requests.\n * This is an object with properties named like the advertised WMTS dimensions.\n * @property {string} [url] A URL for the service.\n * For the RESTful request encoding, this is a URL\n * template. For KVP encoding, it is normal URL. A `{?-?}` template pattern,\n * for example `subdomain{a-f}.domain.com`, may be used instead of defining\n * each one separately in the `urls` option.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n * imageTile.getImage().src = src;\n * };\n * ```\n * @property {Array} [urls] An array of URLs.\n * Requests will be distributed among the URLs in this array.\n * @property {boolean} [wrapX=false] Whether to wrap the world horizontally.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n */\n/**\n * @classdesc\n * Layer source for tile data from WMTS servers.\n * @api\n */\nvar WMTS = /** @class */ (function (_super) {\n __extends(WMTS, _super);\n /**\n * @param {Options} options WMTS options.\n */\n function WMTS(options) {\n // TODO: add support for TileMatrixLimits\n var _this = this;\n var requestEncoding = options.requestEncoding !== undefined\n ? /** @type {import(\"./WMTSRequestEncoding.js\").default} */ (options.requestEncoding)\n : WMTSRequestEncoding.KVP;\n // FIXME: should we create a default tileGrid?\n // we could issue a getCapabilities xhr to retrieve missing configuration\n var tileGrid = options.tileGrid;\n var urls = options.urls;\n if (urls === undefined && options.url !== undefined) {\n urls = expandUrl(options.url);\n }\n _this = _super.call(this, {\n attributions: options.attributions,\n cacheSize: options.cacheSize,\n crossOrigin: options.crossOrigin,\n imageSmoothing: options.imageSmoothing,\n projection: options.projection,\n reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n tileClass: options.tileClass,\n tileGrid: tileGrid,\n tileLoadFunction: options.tileLoadFunction,\n tilePixelRatio: options.tilePixelRatio,\n urls: urls,\n wrapX: options.wrapX !== undefined ? options.wrapX : false,\n transition: options.transition,\n }) || this;\n /**\n * @private\n * @type {string}\n */\n _this.version_ = options.version !== undefined ? options.version : '1.0.0';\n /**\n * @private\n * @type {string}\n */\n _this.format_ = options.format !== undefined ? options.format : 'image/jpeg';\n /**\n * @private\n * @type {!Object}\n */\n _this.dimensions_ =\n options.dimensions !== undefined ? options.dimensions : {};\n /**\n * @private\n * @type {string}\n */\n _this.layer_ = options.layer;\n /**\n * @private\n * @type {string}\n */\n _this.matrixSet_ = options.matrixSet;\n /**\n * @private\n * @type {string}\n */\n _this.style_ = options.style;\n // FIXME: should we guess this requestEncoding from options.url(s)\n // structure? that would mean KVP only if a template is not provided.\n /**\n * @private\n * @type {import(\"./WMTSRequestEncoding.js\").default}\n */\n _this.requestEncoding_ = requestEncoding;\n _this.setKey(_this.getKeyForDimensions_());\n if (urls && urls.length > 0) {\n _this.tileUrlFunction = createFromTileUrlFunctions(urls.map(_this.createFromWMTSTemplate.bind(_this)));\n }\n return _this;\n }\n /**\n * Set the URLs to use for requests.\n * URLs may contain OGC conform URL Template Variables: {TileMatrix}, {TileRow}, {TileCol}.\n * @param {Array} urls URLs.\n */\n WMTS.prototype.setUrls = function (urls) {\n this.urls = urls;\n var key = urls.join('\\n');\n this.setTileUrlFunction(createFromTileUrlFunctions(urls.map(this.createFromWMTSTemplate.bind(this))), key);\n };\n /**\n * Get the dimensions, i.e. those passed to the constructor through the\n * \"dimensions\" option, and possibly updated using the updateDimensions\n * method.\n * @return {!Object} Dimensions.\n * @api\n */\n WMTS.prototype.getDimensions = function () {\n return this.dimensions_;\n };\n /**\n * Return the image format of the WMTS source.\n * @return {string} Format.\n * @api\n */\n WMTS.prototype.getFormat = function () {\n return this.format_;\n };\n /**\n * Return the layer of the WMTS source.\n * @return {string} Layer.\n * @api\n */\n WMTS.prototype.getLayer = function () {\n return this.layer_;\n };\n /**\n * Return the matrix set of the WMTS source.\n * @return {string} MatrixSet.\n * @api\n */\n WMTS.prototype.getMatrixSet = function () {\n return this.matrixSet_;\n };\n /**\n * Return the request encoding, either \"KVP\" or \"REST\".\n * @return {import(\"./WMTSRequestEncoding.js\").default} Request encoding.\n * @api\n */\n WMTS.prototype.getRequestEncoding = function () {\n return this.requestEncoding_;\n };\n /**\n * Return the style of the WMTS source.\n * @return {string} Style.\n * @api\n */\n WMTS.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Return the version of the WMTS source.\n * @return {string} Version.\n * @api\n */\n WMTS.prototype.getVersion = function () {\n return this.version_;\n };\n /**\n * @private\n * @return {string} The key for the current dimensions.\n */\n WMTS.prototype.getKeyForDimensions_ = function () {\n var i = 0;\n var res = [];\n for (var key in this.dimensions_) {\n res[i++] = key + '-' + this.dimensions_[key];\n }\n return res.join('/');\n };\n /**\n * Update the dimensions.\n * @param {Object} dimensions Dimensions.\n * @api\n */\n WMTS.prototype.updateDimensions = function (dimensions) {\n assign(this.dimensions_, dimensions);\n this.setKey(this.getKeyForDimensions_());\n };\n /**\n * @param {string} template Template.\n * @return {import(\"../Tile.js\").UrlFunction} Tile URL function.\n */\n WMTS.prototype.createFromWMTSTemplate = function (template) {\n var requestEncoding = this.requestEncoding_;\n // context property names are lower case to allow for a case insensitive\n // replacement as some services use different naming conventions\n var context = {\n 'layer': this.layer_,\n 'style': this.style_,\n 'tilematrixset': this.matrixSet_,\n };\n if (requestEncoding == WMTSRequestEncoding.KVP) {\n assign(context, {\n 'Service': 'WMTS',\n 'Request': 'GetTile',\n 'Version': this.version_,\n 'Format': this.format_,\n });\n }\n // TODO: we may want to create our own appendParams function so that params\n // order conforms to wmts spec guidance, and so that we can avoid to escape\n // special template params\n template =\n requestEncoding == WMTSRequestEncoding.KVP\n ? appendParams(template, context)\n : template.replace(/\\{(\\w+?)\\}/g, function (m, p) {\n return p.toLowerCase() in context ? context[p.toLowerCase()] : m;\n });\n var tileGrid = /** @type {import(\"../tilegrid/WMTS.js\").default} */ (this\n .tileGrid);\n var dimensions = this.dimensions_;\n return (\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\n function (tileCoord, pixelRatio, projection) {\n if (!tileCoord) {\n return undefined;\n }\n else {\n var localContext_1 = {\n 'TileMatrix': tileGrid.getMatrixId(tileCoord[0]),\n 'TileCol': tileCoord[1],\n 'TileRow': tileCoord[2],\n };\n assign(localContext_1, dimensions);\n var url = template;\n if (requestEncoding == WMTSRequestEncoding.KVP) {\n url = appendParams(url, localContext_1);\n }\n else {\n url = url.replace(/\\{(\\w+?)\\}/g, function (m, p) {\n return localContext_1[p];\n });\n }\n return url;\n }\n });\n };\n return WMTS;\n}(TileImage));\nexport default WMTS;\n/**\n * Generate source options from a capabilities object.\n * @param {Object} wmtsCap An object representing the capabilities document.\n * @param {!Object} config Configuration properties for the layer. Defaults for\n * the layer will apply if not provided.\n *\n * Required config properties:\n * - layer - {string} The layer identifier.\n *\n * Optional config properties:\n * - matrixSet - {string} The matrix set identifier, required if there is\n * more than one matrix set in the layer capabilities.\n * - projection - {string} The desired CRS when no matrixSet is specified.\n * eg: \"EPSG:3857\". If the desired projection is not available,\n * an error is thrown.\n * - requestEncoding - {string} url encoding format for the layer. Default is\n * the first tile url format found in the GetCapabilities response.\n * - style - {string} The name of the style\n * - format - {string} Image format for the layer. Default is the first\n * format returned in the GetCapabilities response.\n * - crossOrigin - {string|null|undefined} Cross origin. Default is `undefined`.\n * @return {?Options} WMTS source options object or `null` if the layer was not found.\n * @api\n */\nexport function optionsFromCapabilities(wmtsCap, config) {\n var layers = wmtsCap['Contents']['Layer'];\n var l = find(layers, function (elt, index, array) {\n return elt['Identifier'] == config['layer'];\n });\n if (l === null) {\n return null;\n }\n var tileMatrixSets = wmtsCap['Contents']['TileMatrixSet'];\n var idx;\n if (l['TileMatrixSetLink'].length > 1) {\n if ('projection' in config) {\n idx = findIndex(l['TileMatrixSetLink'], function (elt, index, array) {\n var tileMatrixSet = find(tileMatrixSets, function (el) {\n return el['Identifier'] == elt['TileMatrixSet'];\n });\n var supportedCRS = tileMatrixSet['SupportedCRS'];\n var proj1 = getProjection(supportedCRS.replace(/urn:ogc:def:crs:(\\w+):(.*:)?(\\w+)$/, '$1:$3')) || getProjection(supportedCRS);\n var proj2 = getProjection(config['projection']);\n if (proj1 && proj2) {\n return equivalent(proj1, proj2);\n }\n else {\n return supportedCRS == config['projection'];\n }\n });\n }\n else {\n idx = findIndex(l['TileMatrixSetLink'], function (elt, index, array) {\n return elt['TileMatrixSet'] == config['matrixSet'];\n });\n }\n }\n else {\n idx = 0;\n }\n if (idx < 0) {\n idx = 0;\n }\n var matrixSet = \n /** @type {string} */\n (l['TileMatrixSetLink'][idx]['TileMatrixSet']);\n var matrixLimits = \n /** @type {Array} */\n (l['TileMatrixSetLink'][idx]['TileMatrixSetLimits']);\n var format = /** @type {string} */ (l['Format'][0]);\n if ('format' in config) {\n format = config['format'];\n }\n idx = findIndex(l['Style'], function (elt, index, array) {\n if ('style' in config) {\n return elt['Title'] == config['style'];\n }\n else {\n return elt['isDefault'];\n }\n });\n if (idx < 0) {\n idx = 0;\n }\n var style = /** @type {string} */ (l['Style'][idx]['Identifier']);\n var dimensions = {};\n if ('Dimension' in l) {\n l['Dimension'].forEach(function (elt, index, array) {\n var key = elt['Identifier'];\n var value = elt['Default'];\n if (value === undefined) {\n value = elt['Value'][0];\n }\n dimensions[key] = value;\n });\n }\n var matrixSets = wmtsCap['Contents']['TileMatrixSet'];\n var matrixSetObj = find(matrixSets, function (elt, index, array) {\n return elt['Identifier'] == matrixSet;\n });\n var projection;\n var code = matrixSetObj['SupportedCRS'];\n if (code) {\n projection =\n getProjection(code.replace(/urn:ogc:def:crs:(\\w+):(.*:)?(\\w+)$/, '$1:$3')) || getProjection(code);\n }\n if ('projection' in config) {\n var projConfig = getProjection(config['projection']);\n if (projConfig) {\n if (!projection || equivalent(projConfig, projection)) {\n projection = projConfig;\n }\n }\n }\n var wrapX = false;\n var switchOriginXY = projection.getAxisOrientation().substr(0, 2) == 'ne';\n var matrix = matrixSetObj.TileMatrix[0];\n // create default matrixLimit\n var selectedMatrixLimit = {\n MinTileCol: 0,\n MinTileRow: 0,\n // substract one to end up at tile top left\n MaxTileCol: matrix.MatrixWidth - 1,\n MaxTileRow: matrix.MatrixHeight - 1,\n };\n //in case of matrix limits, use matrix limits to calculate extent\n if (matrixLimits) {\n selectedMatrixLimit = matrixLimits[matrixLimits.length - 1];\n matrix = find(matrixSetObj.TileMatrix, function (value) { return value.Identifier === selectedMatrixLimit.TileMatrix; });\n }\n var resolution = (matrix.ScaleDenominator * 0.00028) / projection.getMetersPerUnit(); // WMTS 1.0.0: standardized rendering pixel size\n var origin = switchOriginXY\n ? [matrix.TopLeftCorner[1], matrix.TopLeftCorner[0]]\n : matrix.TopLeftCorner;\n var tileSpanX = matrix.TileWidth * resolution;\n var tileSpanY = matrix.TileHeight * resolution;\n var extent = [\n origin[0] + tileSpanX * selectedMatrixLimit.MinTileCol,\n // add one to get proper bottom/right coordinate\n origin[1] - tileSpanY * (1 + selectedMatrixLimit.MaxTileRow),\n origin[0] + tileSpanX * (1 + selectedMatrixLimit.MaxTileCol),\n origin[1] - tileSpanY * selectedMatrixLimit.MinTileRow,\n ];\n if (projection.getExtent() === null) {\n projection.setExtent(extent);\n }\n var tileGrid = createFromCapabilitiesMatrixSet(matrixSetObj, extent, matrixLimits);\n /** @type {!Array} */\n var urls = [];\n var requestEncoding = config['requestEncoding'];\n requestEncoding = requestEncoding !== undefined ? requestEncoding : '';\n if ('OperationsMetadata' in wmtsCap &&\n 'GetTile' in wmtsCap['OperationsMetadata']) {\n var gets = wmtsCap['OperationsMetadata']['GetTile']['DCP']['HTTP']['Get'];\n for (var i = 0, ii = gets.length; i < ii; ++i) {\n if (gets[i]['Constraint']) {\n var constraint = find(gets[i]['Constraint'], function (element) {\n return element['name'] == 'GetEncoding';\n });\n var encodings = constraint['AllowedValues']['Value'];\n if (requestEncoding === '') {\n // requestEncoding not provided, use the first encoding from the list\n requestEncoding = encodings[0];\n }\n if (requestEncoding === WMTSRequestEncoding.KVP) {\n if (includes(encodings, WMTSRequestEncoding.KVP)) {\n urls.push(/** @type {string} */ (gets[i]['href']));\n }\n }\n else {\n break;\n }\n }\n else if (gets[i]['href']) {\n requestEncoding = WMTSRequestEncoding.KVP;\n urls.push(/** @type {string} */ (gets[i]['href']));\n }\n }\n }\n if (urls.length === 0) {\n requestEncoding = WMTSRequestEncoding.REST;\n l['ResourceURL'].forEach(function (element) {\n if (element['resourceType'] === 'tile') {\n format = element['format'];\n urls.push(/** @type {string} */ (element['template']));\n }\n });\n }\n return {\n urls: urls,\n layer: config['layer'],\n matrixSet: matrixSet,\n format: format,\n projection: projection,\n requestEncoding: requestEncoding,\n tileGrid: tileGrid,\n style: style,\n dimensions: dimensions,\n wrapX: wrapX,\n crossOrigin: config['crossOrigin'],\n };\n}\n","/**\n * @module ol/source/WMTSRequestEncoding\n */\n/**\n * Request encoding. One of 'KVP', 'REST'.\n * @enum {string}\n */\nexport default {\n KVP: 'KVP',\n REST: 'REST',\n};\n","/**\n * @module ol/tilegrid/WMTS\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport TileGrid from './TileGrid.js';\nimport { find } from '../array.js';\nimport { get as getProjection } from '../proj.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../extent.js\").Extent} [extent] Extent for the tile grid. No tiles\n * outside this extent will be requested by {@link module:ol/source/Tile} sources.\n * When no `origin` or `origins` are configured, the `origin` will be set to the\n * top-left corner of the extent.\n * @property {import(\"../coordinate.js\").Coordinate} [origin] The tile grid origin, i.e.\n * where the `x` and `y` axes meet (`[z, 0, 0]`). Tile coordinates increase left\n * to right and downwards. If not specified, `extent` or `origins` must be provided.\n * @property {Array} [origins] Tile grid origins,\n * i.e. where the `x` and `y` axes meet (`[z, 0, 0]`), for each zoom level. If\n * given, the array length should match the length of the `resolutions` array, i.e.\n * each resolution can have a different origin. Tile coordinates increase left to\n * right and downwards. If not specified, `extent` or `origin` must be provided.\n * @property {!Array} resolutions Resolutions. The array index of each\n * resolution needs to match the zoom level. This means that even if a `minZoom`\n * is configured, the resolutions array will have a length of `maxZoom + 1`\n * @property {!Array} matrixIds matrix IDs. The length of this array needs\n * to match the length of the `resolutions` array.\n * @property {Array} [sizes] Number of tile rows and columns\n * of the grid for each zoom level. The values here are the `TileMatrixWidth` and\n * `TileMatrixHeight` advertised in the GetCapabilities response of the WMTS, and\n * define each zoom level's extent together with the `origin` or `origins`.\n * A grid `extent` can be configured in addition, and will further limit the extent for\n * which tile requests are made by sources. If the bottom-left corner of\n * an extent is used as `origin` or `origins`, then the `y` value must be\n * negative because OpenLayers tile coordinates use the top left as the origin.\n * @property {number|import(\"../size.js\").Size} [tileSize] Tile size.\n * @property {Array} [tileSizes] Tile sizes. The length of\n * this array needs to match the length of the `resolutions` array.\n */\n/**\n * @classdesc\n * Set the grid pattern for sources accessing WMTS tiled-image servers.\n * @api\n */\nvar WMTSTileGrid = /** @class */ (function (_super) {\n __extends(WMTSTileGrid, _super);\n /**\n * @param {Options} options WMTS options.\n */\n function WMTSTileGrid(options) {\n var _this = _super.call(this, {\n extent: options.extent,\n origin: options.origin,\n origins: options.origins,\n resolutions: options.resolutions,\n tileSize: options.tileSize,\n tileSizes: options.tileSizes,\n sizes: options.sizes,\n }) || this;\n /**\n * @private\n * @type {!Array}\n */\n _this.matrixIds_ = options.matrixIds;\n return _this;\n }\n /**\n * @param {number} z Z.\n * @return {string} MatrixId..\n */\n WMTSTileGrid.prototype.getMatrixId = function (z) {\n return this.matrixIds_[z];\n };\n /**\n * Get the list of matrix identifiers.\n * @return {Array} MatrixIds.\n * @api\n */\n WMTSTileGrid.prototype.getMatrixIds = function () {\n return this.matrixIds_;\n };\n return WMTSTileGrid;\n}(TileGrid));\nexport default WMTSTileGrid;\n/**\n * Create a tile grid from a WMTS capabilities matrix set and an\n * optional TileMatrixSetLimits.\n * @param {Object} matrixSet An object representing a matrixSet in the\n * capabilities document.\n * @param {import(\"../extent.js\").Extent=} opt_extent An optional extent to restrict the tile\n * ranges the server provides.\n * @param {Array=} opt_matrixLimits An optional object representing\n * the available matrices for tileGrid.\n * @return {WMTSTileGrid} WMTS tileGrid instance.\n * @api\n */\nexport function createFromCapabilitiesMatrixSet(matrixSet, opt_extent, opt_matrixLimits) {\n /** @type {!Array} */\n var resolutions = [];\n /** @type {!Array} */\n var matrixIds = [];\n /** @type {!Array} */\n var origins = [];\n /** @type {!Array} */\n var tileSizes = [];\n /** @type {!Array} */\n var sizes = [];\n var matrixLimits = opt_matrixLimits !== undefined ? opt_matrixLimits : [];\n var supportedCRSPropName = 'SupportedCRS';\n var matrixIdsPropName = 'TileMatrix';\n var identifierPropName = 'Identifier';\n var scaleDenominatorPropName = 'ScaleDenominator';\n var topLeftCornerPropName = 'TopLeftCorner';\n var tileWidthPropName = 'TileWidth';\n var tileHeightPropName = 'TileHeight';\n var code = matrixSet[supportedCRSPropName];\n var projection = getProjection(code.replace(/urn:ogc:def:crs:(\\w+):(.*:)?(\\w+)$/, '$1:$3')) || getProjection(code);\n var metersPerUnit = projection.getMetersPerUnit();\n // swap origin x and y coordinates if axis orientation is lat/long\n var switchOriginXY = projection.getAxisOrientation().substr(0, 2) == 'ne';\n matrixSet[matrixIdsPropName].sort(function (a, b) {\n return b[scaleDenominatorPropName] - a[scaleDenominatorPropName];\n });\n matrixSet[matrixIdsPropName].forEach(function (elt) {\n var matrixAvailable;\n // use of matrixLimits to filter TileMatrices from GetCapabilities\n // TileMatrixSet from unavailable matrix levels.\n if (matrixLimits.length > 0) {\n matrixAvailable = find(matrixLimits, function (elt_ml) {\n if (elt[identifierPropName] == elt_ml[matrixIdsPropName]) {\n return true;\n }\n // Fallback for tileMatrix identifiers that don't get prefixed\n // by their tileMatrixSet identifiers.\n if (elt[identifierPropName].indexOf(':') === -1) {\n return (matrixSet[identifierPropName] + ':' + elt[identifierPropName] ===\n elt_ml[matrixIdsPropName]);\n }\n return false;\n });\n }\n else {\n matrixAvailable = true;\n }\n if (matrixAvailable) {\n matrixIds.push(elt[identifierPropName]);\n var resolution = (elt[scaleDenominatorPropName] * 0.28e-3) / metersPerUnit;\n var tileWidth = elt[tileWidthPropName];\n var tileHeight = elt[tileHeightPropName];\n if (switchOriginXY) {\n origins.push([\n elt[topLeftCornerPropName][1],\n elt[topLeftCornerPropName][0],\n ]);\n }\n else {\n origins.push(elt[topLeftCornerPropName]);\n }\n resolutions.push(resolution);\n tileSizes.push(tileWidth == tileHeight ? tileWidth : [tileWidth, tileHeight]);\n sizes.push([elt['MatrixWidth'], elt['MatrixHeight']]);\n }\n });\n return new WMTSTileGrid({\n extent: opt_extent,\n origins: origins,\n resolutions: resolutions,\n matrixIds: matrixIds,\n tileSizes: tileSizes,\n sizes: sizes,\n });\n}\n","import {ApBaseTileLayer} from './ap-base-tile.layer';\nimport {MapStore} from '../../stores/map/map.store';\nimport WMTS from 'ol/source/WMTS';\nimport WMTSTileGrid from 'ol/tilegrid/WMTS';\nimport {getWidth, getTopLeft} from 'ol/extent';\nimport {get} from 'ol/proj';\n\nexport class ApWMTSLayer extends ApBaseTileLayer {\n constructor(mapStore: MapStore) {\n\n const projection = get('EPSG:3857');\n const projectionExtent = projection.getExtent();\n const size = getWidth(projectionExtent) / 256;\n const resolutions = new Array(14);\n const matrixIds = new Array(14);\n for (let z = 0; z < 14; ++z) {\n // generate resolutions and matrixIds arrays for this WMTS\n resolutions[z] = size / Math.pow(2, z);\n matrixIds[z] = z;\n }\n\n super(mapStore, 'WMTS', new WMTS({\n layer: 'WMTS',\n matrixSet: 'world_grid',\n style: 'default',\n tileGrid: new WMTSTileGrid({\n origin: getTopLeft(projectionExtent),\n matrixIds,\n resolutions,\n }),\n format: 'image/jpeg',\n requestEncoding: 'REST',\n }));\n }\n\n setUrl(url: string): void {\n this.source.setUrl(url);\n this.layer.setZIndex(2);\n this.Visibility = url !== '';\n }\n}\n","/**\n * @module ol/source/XYZ\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport TileImage from './TileImage.js';\nimport { createXYZ, extentFromProjection } from '../tilegrid.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least the number of tiles in the viewport.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [imageSmoothing=true] Enable image smoothing.\n * @property {boolean} [opaque=false] Whether the layer is opaque.\n * @property {import(\"../proj.js\").ProjectionLike} [projection='EPSG:3857'] Projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {number} [maxZoom=42] Optional max zoom level. Not used if `tileGrid` is provided.\n * @property {number} [minZoom=0] Optional min zoom level. Not used if `tileGrid` is provided.\n * @property {number} [maxResolution] Optional tile grid resolution at level zero. Not used if `tileGrid` is provided.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n * imageTile.getImage().src = src;\n * };\n * ```\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service.\n * For example, if the tile service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {number|import(\"../size.js\").Size} [tileSize=[256, 256]] The tile size used by the tile service.\n * Not used if `tileGrid` is provided.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Optional function to get\n * tile URL given a tile coordinate and the projection.\n * Required if `url` or `urls` are not provided.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`,\n * and `{z}` placeholders. A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`,\n * may be used instead of defining each one separately in the `urls` option.\n * @property {Array} [urls] An array of URL templates.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {number} [zDirection=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n */\n/**\n * @classdesc\n * Layer source for tile data with URLs in a set XYZ format that are\n * defined in a URL template. By default, this follows the widely-used\n * Google grid where `x` 0 and `y` 0 are in the top left. Grids like\n * TMS where `x` 0 and `y` 0 are in the bottom left can be used by\n * using the `{-y}` placeholder in the URL template, so long as the\n * source does not have a custom tile grid. In this case,\n * {@link module:ol/source/TileImage} can be used with a `tileUrlFunction`\n * such as:\n *\n * tileUrlFunction: function(coordinate) {\n * return 'http://mapserver.com/' + coordinate[0] + '/' +\n * coordinate[1] + '/' + coordinate[2] + '.png';\n * }\n *\n * @api\n */\nvar XYZ = /** @class */ (function (_super) {\n __extends(XYZ, _super);\n /**\n * @param {Options=} opt_options XYZ options.\n */\n function XYZ(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var projection = options.projection !== undefined ? options.projection : 'EPSG:3857';\n var tileGrid = options.tileGrid !== undefined\n ? options.tileGrid\n : createXYZ({\n extent: extentFromProjection(projection),\n maxResolution: options.maxResolution,\n maxZoom: options.maxZoom,\n minZoom: options.minZoom,\n tileSize: options.tileSize,\n });\n _this = _super.call(this, {\n attributions: options.attributions,\n cacheSize: options.cacheSize,\n crossOrigin: options.crossOrigin,\n imageSmoothing: options.imageSmoothing,\n opaque: options.opaque,\n projection: projection,\n reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n tileGrid: tileGrid,\n tileLoadFunction: options.tileLoadFunction,\n tilePixelRatio: options.tilePixelRatio,\n tileUrlFunction: options.tileUrlFunction,\n url: options.url,\n urls: options.urls,\n wrapX: options.wrapX !== undefined ? options.wrapX : true,\n transition: options.transition,\n attributionsCollapsible: options.attributionsCollapsible,\n zDirection: options.zDirection,\n }) || this;\n return _this;\n }\n return XYZ;\n}(TileImage));\nexport default XYZ;\n","import {ApBaseTileLayer} from './ap-base-tile.layer';\nimport {MapStore} from '../../stores/map/map.store';\nimport XYZ from 'ol/source/XYZ';\n\nexport class ApXYZLayer extends ApBaseTileLayer {\n constructor(mapStore: MapStore) {\n super(mapStore, 'XYZ', new XYZ());\n }\n\n setUrl(url: string): void {\n this.source.setUrl(url);\n this.layer.setZIndex(2);\n this.Visibility = url !== '';\n }\n}\n","import {filter, isString, map} from 'lodash';\nimport {ApGeoJsonPolygon} from '../../interfaces/ap-geojson.interface';\nimport {LayerGroupNames, LayerNames} from '../layer-names';\nimport {ApBaseVectorLayer} from '../ap-base-vector.layer';\nimport OlFeature from 'ol/Feature';\nimport OlStyle from 'ol/style/Style';\nimport OlFormatGeoJSON from 'ol/format/GeoJSON';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport {MAP_PROJECTION} from '../ap-map.settings';\nimport {MapStore} from '../../../stores/map/map.store';\nimport OlStyleFill from 'ol/style/Fill';\nimport OlStyleText from 'ol/style/Text';\nimport {ApMapInstance} from '../../ap-map.instance';\nimport {asString} from 'ol/color';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {BehaviorSubject} from 'rxjs';\nimport ITaskManagementPlanBook = Data.TaskManagement.ITaskManagementPlanBook;\nimport {LayerZIndex} from '../layer-z-index';\n\n\nexport interface ITaskManagementLayerSource {\n FieldId: System.IGuid;\n Id: System.IGuid;\n Geom: NetTopologySuite.Geometries.IGeometry;\n}\n\nconst color = [176, 203, 31, 1];\n\n/**\n * the TaskManagement layer shows fields of planning (might be outdated geometries) and optional raster\n */\nexport class ApTaskManagementLayer extends ApBaseVectorLayer {\n /**\n * the Projection of the task management fields\n */\n static readonly projection: string = 'EPSG:4326';\n\n private mapSubscriptionComplete = false;\n /**\n * the Default Style\n */\n static readonly defaultStyle = function (p): OlStyle {\n return new OlStyle({\n stroke: new OlStyleStroke({\n color: asString(color),\n width: 7,\n lineCap: 'round'\n }),\n text: new OlStyleText({\n font: '14px/14px Titillium Web',\n text: ApMapInstance.mapStore.Layers.FieldDescriptionLayer.layer.getVisible() ? p.get('label') : '',\n overflow: true,\n stroke: new OlStyleStroke({\n color: '#fff',\n width: 11\n }),\n fill: new OlStyleFill({\n color: '#000'\n }),\n padding: [-5, -15, -5, -15] // [top, right, bottom, left].\n })\n });\n };\n\n /**\n * create a new Layer\n */\n constructor(mapStore: MapStore, fieldStore$: BehaviorSubject, data: ITaskManagementPlanBook[] = []) {\n super(LayerNames.TASK_MANAGEMENT, LayerGroupNames.TASK_MANAGEMENT, mapStore);\n this.FixedZIndex = LayerZIndex.TASK_MANAGEMENT;\n fieldStore$.subscribe(fs => this.replaceSource(data, fs));\n\n // when map is fully initialized subscribe to layer events\n this.mapStore.mapInitialized.subscribe(() => {\n // avoid multiple subscriptions\n if (this.mapSubscriptionComplete) {\n return;\n }\n this.mapSubscriptionComplete = true;\n this.mapStore.Layers.FieldDescriptionLayer.layer.on('change:visible', () => {\n if (this.layer?.getVisible()) {\n this.setStyle(ApTaskManagementLayer.defaultStyle);\n }\n });\n // Update nutrient layer visibility whenever this layer's visibility changes.\n this.layer.on('change:visible', () => {\n this.updateNutrientLayerVisibility();\n });\n\n // Update nutrient layer visibility whenever nutrient layer map-url(Source) changes.\n this.mapStore.Layers.TaskManagementNutrientLayer.layer.getSource().on('change', () => {\n this.updateNutrientLayerVisibility();\n });\n });\n }\n\n /**\n * Updates visibility of corresponding nutrient distribution layer depending\n * on visibility of this layer and if nutrient-layer has valid map urls.\n */\n private updateNutrientLayerVisibility(): void {\n const nutrientLayerUrls = this.mapStore.Layers.TaskManagementNutrientLayer.layer?.getSource()?.getUrls();\n const hasValidUrl = !!nutrientLayerUrls && nutrientLayerUrls.length > 0 && nutrientLayerUrls[0] !== '';\n // Show nutrient layer only when this layer is visible and when nutrient layer has a valid url.\n this.mapStore.Layers.TaskManagementNutrientLayer.Visibility = this.Visibility && hasValidUrl;\n }\n\n /**\n * replace the Data Source of the Layer\n */\n replaceSource(data: ITaskManagementLayerSource[], fieldStore: FieldStore): void {\n const features = this._read(data, fieldStore);\n if (!features || features.length === 0) {\n this.clear();\n } else {\n this.readFeatures(this._read(data, fieldStore), ApTaskManagementLayer.defaultStyle);\n }\n }\n\n /**\n * add the Data to the Source of the Layer\n */\n appendSource(data: ITaskManagementLayerSource[], fieldStore: FieldStore): void {\n if (this.Features.length > 0) {\n super.extentSource(this._read(data, fieldStore));\n } else {\n this.replaceSource(data, fieldStore);\n }\n }\n\n ZoomIn(duration?: number): void {\n if (this.Features.length > 0) {\n super.ZoomIn(duration);\n }\n }\n\n /**\n * read the Geometry Data from the List of Task-Management plans into Openlayers Layer\n */\n private _read(data: ITaskManagementLayerSource[], fieldStore: FieldStore): OlFeature[] {\n const withGeometry = filter(data, d => d && d.Geom && isString(d.Geom));\n return map(withGeometry, plan => {\n const field = ApMapInstance.fieldStore.Fields.find(f => f.Id === plan.FieldId);\n const geom = new OlFormatGeoJSON({\n dataProjection: ApTaskManagementLayer.projection,\n featureProjection: MAP_PROJECTION\n });\n const feat = geom.readFeature({\n type: 'Feature',\n geometry: this._parseJson(plan.Geom),\n properties: {\n label: this.getFieldExpressionByField(field, fieldStore),\n layerName: LayerNames.TASK_MANAGEMENT\n }\n });\n feat.setId(`${plan.Id}`);\n return feat;\n });\n }\n\n /**\n * parse the GeoJson String\n */\n private _parseJson(data: string): ApGeoJsonPolygon {\n try {\n return JSON.parse(data);\n } catch (err) {\n return null;\n }\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IFieldNutrientsDistribution = Data.Nutrients.IFieldNutrientsDistribution;\nimport ISampleMethod = Data.Nutrients.ISampleMethod;\nimport ISampleRegion = Data.Nutrients.ISampleRegion;\n\nexport enum FieldNutrientActions {\n FIELD_NUTRIENT_DISTRIBUTIONS_LOAD = '[field] nutrient distributions load',\n FIELD_NUTRIENT_DISTRIBUTIONS_LOAD_SUCCESS = '[field] nutrient distributions load success',\n FIELD_NUTRIENT_DISTRIBUTIONS_REFRESH = '[field] nutrient distributions refresh',\n FIELD_NUTRIENT_DISTRIBUTIONS_LOAD_FAIL = '[field] nutrient distributions load fail',\n FIELD_NUTRIENT_SAMPLE_METHOD_LOAD = '[sample] methods load',\n FIELD_NUTRIENT_SAMPLE_METHOD_LOAD_SUCCESS = '[sample] methods load success',\n FIELD_NUTRIENT_SAMPLE_REGION_LOAD = '[sample] regions load',\n FIELD_NUTRIENT_SAMPLE_REGION_LOAD_SUCCESS = '[sample] regions load success',\n FIELD_NUTRIENT_DISTRIBUTION_CHANGED = '[nutrient distribution] changed',\n FIELD_NUTRIENT_NEED_CHANGED = '[nutrient need] changed',\n FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT = '[field] excel export statistic data',\n FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT_SUCCESS = '[field] excel export statistic data success',\n FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT_FAIL = '[field] excel export statistic data fail',\n}\n\nexport class FieldNutrientDistributionChanged implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_DISTRIBUTION_CHANGED;\n}\n\nexport class FieldNutrientNeedChanged implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_NEED_CHANGED;\n}\n\nexport class FieldNutrientDistributionsLoad implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_DISTRIBUTIONS_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldNutrientDistributionsLoadSuccess implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_DISTRIBUTIONS_LOAD_SUCCESS;\n\n constructor(public payload: IFieldNutrientsDistribution[]) {\n }\n}\n\nexport class SampleMethodsLoad implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_SAMPLE_METHOD_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SampleMethodsLoadSuccess implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_SAMPLE_METHOD_LOAD_SUCCESS;\n\n constructor(public payload: ISampleMethod[]) {\n }\n}\n\nexport class SampleRegionsLoad implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_SAMPLE_REGION_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SampleRegionsLoadSuccess implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_SAMPLE_REGION_LOAD_SUCCESS;\n\n constructor(public payload: ISampleRegion[]) {\n }\n}\n\nexport class FieldNutrientDistributionsRefresh implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_DISTRIBUTIONS_REFRESH;\n}\n\nexport class FieldNutrientDistributionStatisticDataExcelExport implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldNutrientDistributionStatisticDataExcelExportSuccess implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class FieldNutrientDistributionStatisticDataExcelExportFail implements IAction {\n readonly type = FieldNutrientActions.FIELD_NUTRIENT_DISTRIBUTIONS_STATISTIC_DATA_EXCEL_EXPORT_FAIL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {concat, difference} from 'lodash';\nimport {ApGeoJsonPolygon} from '../interfaces/ap-geojson.interface';\nimport {LayerGroupNames, LayerNames} from './layer-names';\nimport {ApBaseVectorLayer, IVectorLayerOptions, LayerSyncStrategy} from './ap-base-vector.layer';\nimport OlFeature from 'ol/Feature';\nimport OlFormatGeoJSON from 'ol/format/GeoJSON';\nimport {MAP_PROJECTION} from './ap-map.settings';\nimport {ApMapControlStream} from './ap-map-control.stream';\nimport {ApMapInstance} from '../ap-map.instance';\nimport {ApMenuUrls} from '../../ap-interface';\nimport MapBrowserEvent from 'ol/MapBrowserEvent';\nimport {MapStore} from '../../stores/map/map.store';\nimport {defaultStyle, defaultStyleLabelOnly, selectedStyle} from './ap-fields.style';\nimport Style from 'ol/style/Style';\nimport ISoilSampleField = Data.Nutrients.ISoilSampleField;\nimport {LayerZIndex} from './layer-z-index';\n\nfunction _parseJson(data: string): ApGeoJsonPolygon {\n try {\n return JSON.parse(data);\n } catch (err) {\n return null;\n }\n}\n\nfunction _parseColor(field: ISoilSampleField): string {\n return 'rgba(55, 55, 55, 0.1)';\n}\n\nclass ApBaseSampleFieldsLayer extends ApBaseVectorLayer {\n static readonly projection: string = 'EPSG:4326';\n\n constructor(layerName: string, mapStore: MapStore, data: ISoilSampleField[] = [], style: (f: OlFeature) => Style | Style[], options: IVectorLayerOptions = {}) {\n super(layerName, LayerGroupNames.BASIC, mapStore, options);\n this.FixedZIndex = LayerZIndex.SAMPLE_FIELDS;\n this.replaceSource(data, style);\n }\n\n replaceSource(data: ISoilSampleField[], style: (f: OlFeature) => Style | Style[]): OlFeature[] {\n const features = this.read(data);\n this.readFeatures(features, style);\n return features;\n }\n\n read(data: ISoilSampleField[]): OlFeature[] {\n const withGeometry = data.FindAll(f => f.Geom && typeof f.Geom === typeof '');\n\n return withGeometry.Convert((f: ISoilSampleField) => {\n const geom = new OlFormatGeoJSON({\n dataProjection: ApSampleFieldsLayer.projection,\n featureProjection: MAP_PROJECTION\n });\n const feat = geom.readFeature({\n type: 'Feature',\n geometry: _parseJson(f.Geom.toString()),\n properties: {\n label: this.getSoilFieldExpressionByValues(f, f.Area),\n layerName: LayerNames.SOIL_SAMPLE_FIELDS,\n color: _parseColor(f)\n }\n });\n feat.setId(f.Id.toString(10));\n return feat;\n });\n }\n}\n\nexport class ApSampleFieldsDescriptionLayer extends ApBaseSampleFieldsLayer {\n static readonly projection: string = 'EPSG:4326';\n\n constructor(mapStore: MapStore, data: ISoilSampleField[] = []) {\n super(LayerNames.SOIL_SAMPLE_FIELDS_DESCRIPTION, mapStore, data, ApSampleFieldsDescriptionLayer.defaultStyle,\n {\n declutter: true,\n minZoom: 15\n });\n this.Order = 99999;\n }\n\n static readonly defaultStyle = function (f): Style {\n return defaultStyleLabelOnly(f);\n };\n}\n\n/**\n * the Fields Layer represent the Fields of a Farm\n */\nexport class ApSampleFieldsLayer extends ApBaseSampleFieldsLayer {\n /**\n * the Projection of the Fields Layer Data comes from the Backend\n */\n static readonly projection: string = 'EPSG:4326';\n static drawSelectedStyle = true;\n\n /**\n * create a new Layer of Fields from a List of Fields\n */\n constructor(mapStore: MapStore, data: ISoilSampleField[] = []) {\n super(LayerNames.SOIL_SAMPLE_FIELDS, mapStore, data, ApSampleFieldsLayer.defaultStyle);\n ApMapControlStream.listenClick$.subscribe(event => this._selectFields(event));\n }\n\n /**\n * the Default Style of a Field Feature in the Map\n */\n static readonly defaultStyle = function (f): Style | Style[] {\n return defaultStyle(f);\n };\n\n /**\n * the Style of a selected Field Feature in the Map\n */\n static readonly selectedStyle = function (f): Style | Style[] {\n return ApSampleFieldsLayer.drawSelectedStyle ?\n selectedStyle(f) :\n ApSampleFieldsLayer.defaultStyle(f);\n };\n\n /**\n * read the Geometry Data from the List of Fields into Openlayers Layer\n */\n public ReadFeature(data: ISoilSampleField[]): OlFeature[] {\n return super.replaceSource(data, ApSampleFieldsLayer.defaultStyle);\n }\n\n public replaceSource(data: ISoilSampleField[]): OlFeature[] {\n if (this.mapStore.Layers) {\n this.mapStore.Layers.SampleFieldDescriptionLayer.replaceSource(data, ApSampleFieldsDescriptionLayer.defaultStyle);\n }\n return super.replaceSource(data, ApSampleFieldsLayer.defaultStyle);\n }\n\n public SyncFeatures(features: OlFeature[], strategy = LayerSyncStrategy.FORCE): void {\n if (this.mapStore.Layers) {\n this.mapStore.Layers.SampleFieldDescriptionLayer.SyncFeatures(features, strategy);\n }\n super.SyncFeatures(features, strategy);\n }\n\n /**\n * select a Field by Id from Fields Layer\n */\n selectField(id: number): void {\n this.selectFeature(id.toString(10), ApSampleFieldsLayer.selectedStyle);\n }\n\n /**\n * Set layer visibility\n */\n public set Visibility(value: boolean) {\n this.mapStore.Layers.SampleFieldDescriptionLayer.Visibility = value;\n super.Visibility = value;\n }\n\n /**\n * Gets layer visibility\n */\n public get Visibility(): boolean {\n return super.Visibility;\n }\n\n /**\n * deselect a Field in Fields Layer\n */\n deselectField(id: string): void {\n this.deselectFeature(id);\n }\n\n /**\n * select Fields in Map and Grid\n */\n private _selectFields(event: MapBrowserEvent): void {\n if (ApMapInstance.routerStore.CurrentUrl !== ApMenuUrls.FIELD_MANAGEMENT_OVERVIEW &&\n ApMapInstance.routerStore.CurrentUrl !== ApMenuUrls.NUTRIENTS_OVERVIEW) {\n return;\n }\n const myFeatures = event.map.getFeaturesAtPixel(event.pixel);\n const layerFeatures = myFeatures.FindAll(f => f.get('layerName') === LayerNames.SOIL_SAMPLE_FIELDS);\n const layerFeatureIds = layerFeatures.Convert(f => f.getId());\n if (layerFeatureIds.length > 0) {\n const currentSelected = ApMapInstance.fieldStore.getSelectedFields().Convert(f => f.Id);\n const notSelectedBefore = [];\n for (const id of layerFeatureIds) {\n const isInSelection = !!currentSelected.Find(c => c === id);\n if (!isInSelection) {\n notSelectedBefore.push(id);\n }\n }\n const notSelectedNow = difference(currentSelected, layerFeatureIds);\n const newSelection = concat(notSelectedBefore, notSelectedNow);\n ApMapInstance.fieldStore.changeSelectedField(newSelection);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Geolocation\n */\nimport BaseEvent from './events/Event.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport EventType from './events/EventType.js';\nimport { circular as circularPolygon } from './geom/Polygon.js';\nimport { get as getProjection, getTransformFromProjections, identityTransform, } from './proj.js';\nimport { toRadians } from './math.js';\n/**\n * @enum {string}\n */\nvar Property = {\n ACCURACY: 'accuracy',\n ACCURACY_GEOMETRY: 'accuracyGeometry',\n ALTITUDE: 'altitude',\n ALTITUDE_ACCURACY: 'altitudeAccuracy',\n HEADING: 'heading',\n POSITION: 'position',\n PROJECTION: 'projection',\n SPEED: 'speed',\n TRACKING: 'tracking',\n TRACKING_OPTIONS: 'trackingOptions',\n};\n/**\n * @classdesc\n * Events emitted on Geolocation error.\n */\nvar GeolocationError = /** @class */ (function (_super) {\n __extends(GeolocationError, _super);\n /**\n * @param {PositionError} error error object.\n */\n function GeolocationError(error) {\n var _this = _super.call(this, EventType.ERROR) || this;\n /**\n * @type {number}\n */\n _this.code = error.code;\n /**\n * @type {string}\n */\n _this.message = error.message;\n return _this;\n }\n return GeolocationError;\n}(BaseEvent));\n/**\n * @typedef {Object} Options\n * @property {boolean} [tracking=false] Start Tracking right after\n * instantiation.\n * @property {PositionOptions} [trackingOptions] Tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position_options_interface.\n * @property {import(\"./proj.js\").ProjectionLike} [projection] The projection the position\n * is reported in.\n */\n/**\n * @classdesc\n * Helper class for providing HTML5 Geolocation capabilities.\n * The [Geolocation API](http://www.w3.org/TR/geolocation-API/)\n * is used to locate a user's position.\n *\n * To get notified of position changes, register a listener for the generic\n * `change` event on your instance of {@link module:ol/Geolocation~Geolocation}.\n *\n * Example:\n *\n * var geolocation = new Geolocation({\n * // take the projection to use from the map's view\n * projection: view.getProjection()\n * });\n * // listen to changes in position\n * geolocation.on('change', function(evt) {\n * window.console.log(geolocation.getPosition());\n * });\n *\n * @fires module:ol/events/Event~BaseEvent#event:error\n * @api\n */\nvar Geolocation = /** @class */ (function (_super) {\n __extends(Geolocation, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Geolocation(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * The unprojected (EPSG:4326) device position.\n * @private\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.position_ = null;\n /**\n * @private\n * @type {import(\"./proj.js\").TransformFunction}\n */\n _this.transform_ = identityTransform;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.watchId_ = undefined;\n _this.addEventListener(getChangeEventType(Property.PROJECTION), _this.handleProjectionChanged_);\n _this.addEventListener(getChangeEventType(Property.TRACKING), _this.handleTrackingChanged_);\n if (options.projection !== undefined) {\n _this.setProjection(options.projection);\n }\n if (options.trackingOptions !== undefined) {\n _this.setTrackingOptions(options.trackingOptions);\n }\n _this.setTracking(options.tracking !== undefined ? options.tracking : false);\n return _this;\n }\n /**\n * Clean up.\n */\n Geolocation.prototype.disposeInternal = function () {\n this.setTracking(false);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * @private\n */\n Geolocation.prototype.handleProjectionChanged_ = function () {\n var projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(getProjection('EPSG:4326'), projection);\n if (this.position_) {\n this.set(Property.POSITION, this.transform_(this.position_));\n }\n }\n };\n /**\n * @private\n */\n Geolocation.prototype.handleTrackingChanged_ = function () {\n if ('geolocation' in navigator) {\n var tracking = this.getTracking();\n if (tracking && this.watchId_ === undefined) {\n this.watchId_ = navigator.geolocation.watchPosition(this.positionChange_.bind(this), this.positionError_.bind(this), this.getTrackingOptions());\n }\n else if (!tracking && this.watchId_ !== undefined) {\n navigator.geolocation.clearWatch(this.watchId_);\n this.watchId_ = undefined;\n }\n }\n };\n /**\n * @private\n * @param {Position} position position event.\n */\n Geolocation.prototype.positionChange_ = function (position) {\n var coords = position.coords;\n this.set(Property.ACCURACY, coords.accuracy);\n this.set(Property.ALTITUDE, coords.altitude === null ? undefined : coords.altitude);\n this.set(Property.ALTITUDE_ACCURACY, coords.altitudeAccuracy === null ? undefined : coords.altitudeAccuracy);\n this.set(Property.HEADING, coords.heading === null ? undefined : toRadians(coords.heading));\n if (!this.position_) {\n this.position_ = [coords.longitude, coords.latitude];\n }\n else {\n this.position_[0] = coords.longitude;\n this.position_[1] = coords.latitude;\n }\n var projectedPosition = this.transform_(this.position_);\n this.set(Property.POSITION, projectedPosition);\n this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);\n var geometry = circularPolygon(this.position_, coords.accuracy);\n geometry.applyTransform(this.transform_);\n this.set(Property.ACCURACY_GEOMETRY, geometry);\n this.changed();\n };\n /**\n * @private\n * @param {PositionError} error error object.\n */\n Geolocation.prototype.positionError_ = function (error) {\n this.dispatchEvent(new GeolocationError(error));\n };\n /**\n * Get the accuracy of the position in meters.\n * @return {number|undefined} The accuracy of the position measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ACCURACY));\n };\n /**\n * Get a geometry of the position accuracy.\n * @return {?import(\"./geom/Polygon.js\").default} A geometry of the position accuracy.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracyGeometry = function () {\n return /** @type {?import(\"./geom/Polygon.js\").default} */ (this.get(Property.ACCURACY_GEOMETRY) || null);\n };\n /**\n * Get the altitude associated with the position.\n * @return {number|undefined} The altitude of the position in meters above mean\n * sea level.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitude = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));\n };\n /**\n * Get the altitude accuracy of the position.\n * @return {number|undefined} The accuracy of the altitude measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitudeAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE_ACCURACY));\n };\n /**\n * Get the heading as radians clockwise from North.\n * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`\n * is set to `true` in the tracking options.\n * @return {number|undefined} The heading of the device in radians from north.\n * @observable\n * @api\n */\n Geolocation.prototype.getHeading = function () {\n return /** @type {number|undefined} */ (this.get(Property.HEADING));\n };\n /**\n * Get the position of the device.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The current position of the device reported\n * in the current projection.\n * @observable\n * @api\n */\n Geolocation.prototype.getPosition = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(Property.POSITION));\n };\n /**\n * Get the projection associated with the position.\n * @return {import(\"./proj/Projection.js\").default|undefined} The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.getProjection = function () {\n return /** @type {import(\"./proj/Projection.js\").default|undefined} */ (this.get(Property.PROJECTION));\n };\n /**\n * Get the speed in meters per second.\n * @return {number|undefined} The instantaneous speed of the device in meters\n * per second.\n * @observable\n * @api\n */\n Geolocation.prototype.getSpeed = function () {\n return /** @type {number|undefined} */ (this.get(Property.SPEED));\n };\n /**\n * Determine if the device location is being tracked.\n * @return {boolean} The device location is being tracked.\n * @observable\n * @api\n */\n Geolocation.prototype.getTracking = function () {\n return /** @type {boolean} */ (this.get(Property.TRACKING));\n };\n /**\n * Get the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @return {PositionOptions|undefined} PositionOptions as defined by\n * the [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.getTrackingOptions = function () {\n return /** @type {PositionOptions|undefined} */ (this.get(Property.TRACKING_OPTIONS));\n };\n /**\n * Set the projection to use for transforming the coordinates.\n * @param {import(\"./proj.js\").ProjectionLike} projection The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.setProjection = function (projection) {\n this.set(Property.PROJECTION, getProjection(projection));\n };\n /**\n * Enable or disable tracking.\n * @param {boolean} tracking Enable tracking.\n * @observable\n * @api\n */\n Geolocation.prototype.setTracking = function (tracking) {\n this.set(Property.TRACKING, tracking);\n };\n /**\n * Set the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @param {PositionOptions} options PositionOptions as defined by the\n * [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.setTrackingOptions = function (options) {\n this.set(Property.TRACKING_OPTIONS, options);\n };\n return Geolocation;\n}(BaseObject));\nexport default Geolocation;\n","import {MapStore} from '../../stores/map/map.store';\nimport {LayerGroupNames, LayerNames} from './layer-names';\nimport OlGeolocation from 'ol/Geolocation';\nimport {ApMapViews} from './ap-map.views';\nimport Feature from 'ol/Feature';\nimport Style from 'ol/style/Style';\nimport Fill from 'ol/style/Fill';\nimport Point from 'ol/geom/Point';\nimport {ApMapInstance} from '../ap-map.instance';\nimport OlIcon from 'ol/style/Icon';\nimport {ApBaseVectorLayer} from './ap-base-vector.layer';\nimport {LayerZIndex} from './layer-z-index';\n\nexport class ApUserLocationLayer extends ApBaseVectorLayer {\n private geolocation: OlGeolocation;\n private accuracyFeature: Feature;\n private positionFeature: Feature;\n private userTrackingEnabled = false;\n\n constructor(mapStore: MapStore) {\n super(LayerNames.USER_LOCATION, LayerGroupNames.NONE, mapStore);\n this.FixedZIndex = LayerZIndex.USER_LOCATION;\n\n this.accuracyFeature = new Feature();\n this.accuracyFeature.setStyle(\n new Style({\n fill: new Fill({\n color: 'rgba(216,216,216,0.5)',\n })\n })\n );\n this.positionFeature = new Feature();\n this.positionFeature.setStyle(\n new Style({\n image: new OlIcon(({\n src: '/assets/svg/position_pin.svg',\n scale: 1,\n opacity: 1,\n offset: [0, 0],\n anchor: [0.5, 0.94] // X offset in fraction (0-1) - half to the right, Y offset - full icon height to the top.\n // need to take into account small outer border and svg not taking whole height\n // Icon size is defined on SVG level inside width/height attributes because OpenLayers\n // sometimes working bad with size/width/height on style level\n }))\n }),\n );\n }\n\n public initUserPositionTracking(): void {\n this.userTrackingEnabled = true;\n\n if (this.layer.getSource().getFeatures().length === 0) {\n this.geolocation = new OlGeolocation({\n trackingOptions: {\n enableHighAccuracy: true,\n },\n projection: ApMapViews.olView.getProjection(),\n });\n\n this.layer.getSource().addFeatures([this.accuracyFeature, this.positionFeature]);\n\n if (ApMapInstance.mapRef) {\n this.initializeEventHandlers();\n } else {\n setTimeout(() => this.initializeEventHandlers(), 300);\n }\n }\n\n this.mapStore.Layers.UserLocationLayer.Visibility = true;\n\n this.geolocation.setTracking(true);\n this.geolocation.dispatchEvent('change:position');\n this.geolocation.dispatchEvent('change:accuracyGeometry');\n }\n\n private initializeEventHandlers(): void {\n this.geolocation.on('change:position', () => {\n if (this.userTrackingEnabled) {\n const coordinates = this.geolocation.getPosition();\n this.positionFeature.setGeometry(coordinates ? new Point(coordinates) : null);\n if (coordinates && ApMapInstance.mapRef) {\n ApMapViews.olView.setCenter(this.geolocation.getPosition());\n ApMapInstance.displayTooltipAt(ApMapInstance.mapRef.getPixelFromCoordinate(coordinates), { showFieldName: false, style: 'font-size: 5vh;' });\n }\n }\n });\n\n this.geolocation.on('change:accuracyGeometry', () => {\n if (this.userTrackingEnabled) {\n this.accuracyFeature.setGeometry(this.geolocation.getAccuracyGeometry());\n }\n });\n }\n\n public disableUserPositionTracking(): void {\n this.userTrackingEnabled = false;\n this.geolocation.setTracking(false);\n this.clearPositionRelatedGeometry();\n }\n\n private clearPositionRelatedGeometry(): void {\n this.positionFeature.setGeometry(undefined);\n this.accuracyFeature.setGeometry(undefined);\n }\n}\n","import {MapStore} from './map.store';\nimport {\n ApContactLayer,\n ApFieldsCropLayer,\n ApFieldsDescriptionLayer,\n ApFieldsLayer,\n ApFungiDetectLayer,\n ApLocationLayer,\n ApMapInstance,\n BingImagery,\n LayerGroupNames,\n LayerNames,\n LayerSyncStrategy\n} from '../../ap-map';\nimport {MapFactoryLayer} from '../../ap-map/layers/map-factory-layer';\nimport {ApPolygonEditLayer} from '../../ap-map/layers/ap-polygon-edit.layer';\nimport {ApWMTSLayer} from '../../ap-map/layers/ap-wmts-layer';\nimport {ApXYZLayer} from '../../ap-map/layers/ap-xyz-layer';\nimport {\n ApTaskManagementLayer\n} from '../../ap-map/layers/nutrients/ap-task-management.layer';\nimport {MapLayerControlStore} from './map.layer.control.store';\nimport {\n ILayerControlLayer,\n ILayerGroup\n} from '../../ap-interface/map/layer-control-layer.interface';\nimport {ObjectFactory, SafeBehaviorSubject, StringFactory} from 'ts-tooling';\nimport {BehaviorSubject, combineLatest} from 'rxjs';\nimport {TranslationStore} from '../translation/translation.store';\nimport {LanguageStore} from '../translation/language.store';\nimport {EventEmitter} from '@angular/core';\nimport {delay, filter} from 'rxjs/operators';\nimport {\n FieldDistributionLegendSelectorComponent\n} from '../../entry-components/color-legend-entry-components/field-distribution-legend-selector.component';\nimport {ColorLegendStore} from './color.legend.store';\nimport {\n GetSoilSampleClassColorService\n} from '../../ap-utils/service/get-soil-sample-class-color.service';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {SelectAllCheckboxState} from '@progress/kendo-angular-grid';\nimport {\n ISelectionChangeEvent\n} from '../../map/components/layer-controller/ap-legend-scroller-item.component';\nimport OlStyle from 'ol/style/Style';\nimport OlIcon from 'ol/style/Icon';\nimport IconAnchorUnits from 'ol/style/IconAnchorUnits';\nimport {\n FieldNutrientDistributionChanged,\n FieldNutrientNeedChanged\n} from '../../../../projects/invoker-transport/src/lib/actions/nutrients';\nimport {ApMenuUrls} from '../../ap-interface';\nimport {ApSampleFieldsDescriptionLayer, ApSampleFieldsLayer} from '../../ap-map/layers/ap-sample-fields.layer';\nimport {GeometryEditorTool} from '../../map/components/edit/ap-edit-tooltype';\nimport {ILegend} from './map.legend.store';\nimport {FieldStore} from '../farm/field.store';\nimport {ApUserLocationLayer} from '../../ap-map/layers/ap-user-location-layer';\nimport {LayerZIndex} from '../../ap-map/layers/layer-z-index';\nimport {ApGeoPointsLayer} from '../../ap-map/layers/ap-geo-points.layer';\nimport {MapLayerTooltipStore} from './map.layer.tooltip.store';\nimport IField = Data.FieldManagement.IField;\nimport IGuid = System.IGuid;\n\nexport type MapLayerControlItem = {\n groups: ILayerGroup[];\n activeLayers: ILayerControlLayer[];\n};\n\nexport type MapLayerControlItemsMap = {\n [key: string]: MapLayerControlItem;\n};\n\nexport interface ILayerState {\n backgroundMap: BingImagery;\n nutrientPlanningUrl: string;\n distributionUrl: string;\n soilSampleDistributionUrl: string;\n rbUrl: string;\n soilGroupUrl: string;\n soilSampleUrl: string;\n nSensorLogPointsUrl: string;\n trackUrl: string;\n ndiLayerUrl: string;\n nRasterUrl: string;\n ppRasterUrl: string;\n activeLayerGroups: ILayerGroup[];\n layerMapControlItems: MapLayerControlItemsMap;\n nPlanningUrl: string;\n ppApplicationUrl: string;\n nUptakeUrl: string;\n}\n\nexport class MapLayerStore {\n public static DefaultState: ILayerState = {\n backgroundMap: BingImagery.HYBRID,\n distributionUrl: '',\n soilSampleDistributionUrl: '',\n nutrientPlanningUrl: '',\n rbUrl: '',\n soilGroupUrl: '',\n soilSampleUrl: '',\n nSensorLogPointsUrl: '',\n trackUrl: '',\n ndiLayerUrl: '',\n nRasterUrl: '',\n ppRasterUrl: '',\n activeLayerGroups: [],\n layerMapControlItems: {},\n nPlanningUrl: '',\n ppApplicationUrl: '',\n nUptakeUrl: '',\n };\n\n public OnLayerChange = new EventEmitter();\n public FieldDistributionLegendNutrientChange = new EventEmitter();\n public NeedLegendChange = new EventEmitter();\n public NutrientPlaningLegendChange = new EventEmitter();\n public onChangeTrackLayerStyle = new EventEmitter();\n\n private _fieldLayer: ApFieldsLayer = null;\n private _fieldDescriptionLayer: ApFieldsDescriptionLayer = null;\n private _fieldCropLayer: ApFieldsCropLayer = null;\n private _sampleFieldLayer: ApSampleFieldsLayer = null;\n private _sampleFieldDescriptionLayer: ApSampleFieldsDescriptionLayer = null;\n private _locationLayer: ApLocationLayer = null;\n private _userLocationLayer: ApUserLocationLayer = null;\n private _geoPointsLayer: ApGeoPointsLayer = null;\n private _trackLayer: MapFactoryLayer = null;\n private _fungiDetectLayer: ApFungiDetectLayer = null;\n private _contactLayer: ApContactLayer = null;\n private _taskManagementLayer: ApTaskManagementLayer = null;\n private _polygonEditLayer: ApPolygonEditLayer = null;\n private _polygonEditViewLayer: ApPolygonEditLayer = null;\n private _wmtsLayer: ApWMTSLayer = null;\n private _xyzLayer: ApXYZLayer = null;\n private _soilSampleLayer: MapFactoryLayer = null;\n private _soilGroupLayer: MapFactoryLayer = null;\n private _needLayer: MapFactoryLayer = null;\n private _distributionLayer: MapFactoryLayer = null;\n private _soilSampleDistributionLayer: MapFactoryLayer = null;\n private _nutrientPlanningLayer: MapFactoryLayer = null;\n private _sensorPointLayer: MapFactoryLayer = null;\n private _nRaster: MapFactoryLayer = null;\n private _taskManagementNutrientLayer: MapFactoryLayer = null;\n private _ndiLayer: MapFactoryLayer = null;\n private _nApplicationMapLayer: MapFactoryLayer = null;\n private _nUptakeLayer: MapFactoryLayer = null;\n private _ppRaster: MapFactoryLayer = null;\n private _ppApplicationMapLayer: MapFactoryLayer = null;\n\n constructor(private mapStore: MapStore,\n fieldStore$: BehaviorSubject,\n private mapLayerControl: MapLayerControlStore,\n private colorLegendStore: ColorLegendStore,\n private getSoilSampleClassColorService: GetSoilSampleClassColorService,\n private languageStore: LanguageStore,\n private translationStore: TranslationStore,\n private mapLayerTooltipStore: MapLayerTooltipStore) {\n this._fieldLayer = new ApFieldsLayer(mapStore, fieldStore$);\n this._fieldCropLayer = new ApFieldsCropLayer(mapStore, fieldStore$);\n this._fieldDescriptionLayer = new ApFieldsDescriptionLayer(mapStore, fieldStore$);\n this._sampleFieldLayer = new ApSampleFieldsLayer(mapStore);\n this._sampleFieldDescriptionLayer = new ApSampleFieldsDescriptionLayer(mapStore);\n this._locationLayer = new ApLocationLayer(mapStore);\n this._userLocationLayer = new ApUserLocationLayer(mapStore);\n this._geoPointsLayer = new ApGeoPointsLayer(mapStore);\n this._fungiDetectLayer = new ApFungiDetectLayer(mapStore);\n this._contactLayer = new ApContactLayer(mapStore);\n this._taskManagementLayer = new ApTaskManagementLayer(mapStore, fieldStore$);\n this._polygonEditLayer = new ApPolygonEditLayer(mapStore);\n this._polygonEditViewLayer = new ApPolygonEditLayer(mapStore, [], LayerNames.EDIT_VIEW);\n this._wmtsLayer = new ApWMTSLayer(mapStore);\n this._xyzLayer = new ApXYZLayer(mapStore);\n\n this._nutrientPlanningLayer = new MapFactoryLayer(LayerNames.NUTRIENT_PLANNINGS, LayerGroupNames.BASE_FERTILISATION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.NutrientPlanningLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getNutrientPlanningsLayerTooltip()\n });\n this._distributionLayer = new MapFactoryLayer(LayerNames.DISTRIBUTIONS, LayerGroupNames.BASE_FERTILISATION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.NutrientDistributionLegend\n });\n this._soilSampleDistributionLayer = new MapFactoryLayer(LayerNames.SOIL_SAMPLE_DISTRIBUTIONS, LayerGroupNames.BASE_FERTILISATION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.NutrientDistributionLegend\n });\n this._soilSampleLayer = new MapFactoryLayer(LayerNames.SOIL_SAMPLES, LayerGroupNames.BASE_FERTILISATION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => null,\n tooltipGenerator: this.mapLayerTooltipStore.getSoilSamplesLayerTooltip()\n });\n this._soilGroupLayer = new MapFactoryLayer(LayerNames.SOIL_GROUP_MAP, LayerGroupNames.BASIC, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.SoilGroupLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getSoilGroupMapLayerTooltip()\n }, LayerZIndex.SOIL_GROUPS);\n this._needLayer = new MapFactoryLayer(LayerNames.NEED, LayerGroupNames.BASE_FERTILISATION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.NeedLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getNeedLayerTooltip()\n });\n this._taskManagementNutrientLayer = new MapFactoryLayer(LayerNames.TASK_MANAGEMENT_NUTRIENT, null, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => null\n });\n this._trackLayer = new MapFactoryLayer(LayerNames.TRACK, LayerGroupNames.FIELD_WORK, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.TrackLegend,\n featureFilter: f => f.getGeometry().getType() === 'LineString'\n });\n this._sensorPointLayer = new MapFactoryLayer(LayerNames.SENSOR_POINTS, LayerGroupNames.LOGFILES, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.LogLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getSensorPointsLayerTooltip()\n });\n this._nRaster = new MapFactoryLayer(LayerNames.N_RASTER, LayerGroupNames.N_FERTILISATION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.nLogInterpolationLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getNRasterLayerTooltip()\n });\n this._ndiLayer = new MapFactoryLayer(LayerNames.NDI, LayerGroupNames.BASIC, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.NdiLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getNdiLayerTooltip()\n }, LayerZIndex.N_INDEX);\n this._nApplicationMapLayer = new MapFactoryLayer(LayerNames.N_APPLICATION_MAP, LayerGroupNames.N_FERTILISATION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.NPlanningLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getNApplicationMapLayerTooltip()\n });\n this._nUptakeLayer = new MapFactoryLayer(LayerNames.N_UPTAKE, LayerGroupNames.BASIC, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.NUptakeLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getNUptakeLayerTooltip()\n }, LayerZIndex.N_UPTAKE);\n this._ppRaster = new MapFactoryLayer(LayerNames.PP_RASTER, LayerGroupNames.PLANT_PROTECTION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.PpLogInterpolationLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getPpRasterLayerTooltip()\n });\n this._ppApplicationMapLayer = new MapFactoryLayer(LayerNames.PP_APPLICATION_MAP, LayerGroupNames.PLANT_PROTECTION, APP_CONFIGURATION.MapFactory.Address, '', this.mapStore,\n {\n legendGetter: () => this.mapStore.Legends.PpApplicationLegend,\n tooltipGenerator: this.mapLayerTooltipStore.getPpApplicationMapLayerTooltip()\n });\n\n this._trackLayer.featureLayer.setStyle(f => {\n const props = f.getProperties();\n let url = '/assets/img/start_drop.png';\n if (props?.data && typeof props?.data === typeof '') {\n const d = JSON.parse(props.data);\n url = d.data.markerType === 'startMarker' ? '/assets/img/start_drop.png' : '/assets/img/stop_drop.png';\n }\n return new OlStyle({\n image: new OlIcon({\n anchor: [0.5, 73],\n anchorXUnits: IconAnchorUnits.FRACTION,\n anchorYUnits: IconAnchorUnits.PIXELS,\n src: url,\n }),\n });\n });\n\n // start the Listeners\n this.listenChangeTranslation();\n this.listenChangeVisibility();\n this.listenChangeOrder();\n this.listenChangeBackgroundMap();\n this.listenChangeLayer();\n this.listenChangeFieldDistributionUrl();\n this.listenContoursChanges();\n this.AllLayers$.pipe(filter(v => Array.isArray(v) && v.length > 0)).subscribe(() => this.loadLayerMapControlItems());\n }\n\n public AllLayerGroups$ = new BehaviorSubject([\n {id: 100, name: LayerGroupNames.BACKGROUND, visibility: 'unchecked'},\n {id: 200, name: LayerGroupNames.BASIC, visibility: 'unchecked'},\n {id: 300, name: LayerGroupNames.BASE_FERTILISATION, visibility: 'unchecked'},\n {id: 400, name: LayerGroupNames.LOGFILES, visibility: 'unchecked'},\n {id: 500, name: LayerGroupNames.PLANT_PROTECTION, visibility: 'unchecked'},\n {id: 600, name: LayerGroupNames.SEED_MAPS, visibility: 'unchecked'},\n {id: 700, name: LayerGroupNames.FIELD_WORK, visibility: 'unchecked'},\n {id: 800, name: LayerGroupNames.TASK_MANAGEMENT, visibility: 'unchecked'},\n {id: 900, name: LayerGroupNames.FUNGIDETECT, visibility: 'unchecked'},\n {id: 1000, name: LayerGroupNames.N_FERTILISATION, visibility: 'unchecked'},\n ]);\n\n public AllLayers$ = new BehaviorSubject([]);\n\n public get AllLayers(): ILayerControlLayer[] {\n return this.AllLayers$.getValue();\n }\n\n public get VisibleLegendLayer(): ILegend[] {\n const result = this.AllLayers\n .filter((layer) => (layer instanceof MapFactoryLayer)).map((layer) => layer as MapFactoryLayer)\n .filter((layer: MapFactoryLayer) => layer.Visibility && !!layer.legend())\n .map((layer: MapFactoryLayer) => layer.legend());\n if (this._fieldCropLayer.Visibility && !!this.mapStore.Legends && !!this.mapStore.Legends.CropTypeLegend) {\n result.push(this.mapStore.Legends.CropTypeLegend);\n }\n if (this._taskManagementLayer.Visibility && this.mapStore.Legends && !!this.mapStore.Legends.TaskMgmtLegend) {\n result.push(this.mapStore.Legends.TaskMgmtLegend);\n }\n return result;\n }\n\n public get LayerMapControlItems$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.layerMapControlItems);\n }\n\n public get LayerMapControlItems(): MapLayerControlItemsMap {\n return this.LayerMapControlItems$.getValue();\n }\n\n public get ActiveLayerGroups$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.activeLayerGroups);\n }\n\n public get ActiveLayerGroups(): ILayerGroup[] {\n return this.ActiveLayerGroups$.getValue();\n }\n\n public get BackgroundMap$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.backgroundMap);\n }\n\n public get NdiLayer(): MapFactoryLayer {\n return this._ndiLayer;\n }\n\n public get SoilGroupLayer(): MapFactoryLayer {\n return this._soilGroupLayer;\n }\n\n public set SoilGroupLayer(value: MapFactoryLayer) {\n this._soilGroupLayer = value;\n }\n\n public get ContactLayer(): ApContactLayer {\n return this._contactLayer;\n }\n\n /**\n * get the Fungi Detect Layer\n */\n public get FungiDetectLayer(): ApFungiDetectLayer {\n return this._fungiDetectLayer;\n }\n\n public get NutrientPlanningLayer(): MapFactoryLayer {\n return this._nutrientPlanningLayer;\n }\n\n public set NutrientPlanningLayer(value: MapFactoryLayer) {\n this._nutrientPlanningLayer = value;\n }\n\n public get NutrientPlanningUrl(): string {\n return this.NutrientPlanningUrl$.getValue();\n }\n\n public get NutrientPlanningUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.nutrientPlanningUrl);\n }\n\n public get NPlanningUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.nPlanningUrl);\n }\n\n public get PPApplicationUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.ppApplicationUrl);\n }\n\n public get NApplicationMapLayer(): MapFactoryLayer {\n return this._nApplicationMapLayer;\n }\n\n public get NRaster(): MapFactoryLayer {\n return this._nRaster;\n }\n\n public get NRasterUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.nRasterUrl);\n }\n\n public get PpRasterUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.ppRasterUrl);\n }\n\n public get SensorPoints(): MapFactoryLayer {\n return this._sensorPointLayer;\n }\n\n public get SensorPointsUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.nSensorLogPointsUrl);\n }\n\n public get PpApplicationMapLayer(): MapFactoryLayer {\n return this._ppApplicationMapLayer;\n }\n\n public get PpRaster(): MapFactoryLayer {\n return this._ppRaster;\n }\n\n public get DistributionLayer(): MapFactoryLayer {\n return this._distributionLayer;\n }\n\n public set DistributionLayer(value: MapFactoryLayer) {\n this._distributionLayer = value;\n }\n\n public get SoilSampleDistributionLayer(): MapFactoryLayer {\n return this._soilSampleDistributionLayer;\n }\n\n public set SoilSampleDistributionLayer(value: MapFactoryLayer) {\n this._soilSampleDistributionLayer = value;\n }\n\n public get DistributionUrl(): string {\n return this.DistributionUrl$.getValue();\n }\n\n public get DistributionUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.distributionUrl);\n }\n\n public get SoilSampleDistributionUrl(): string {\n return this.SoilSampleDistributionUrl$.getValue();\n }\n\n public get SoilSampleDistributionUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.soilSampleDistributionUrl);\n }\n\n /**\n * get the Fields Layer\n */\n public get FieldsLayer(): ApFieldsLayer {\n return this._fieldLayer;\n }\n\n public get FieldsCropLayer(): ApFieldsCropLayer {\n return this._fieldCropLayer;\n }\n\n public get FieldDescriptionLayer(): ApFieldsDescriptionLayer {\n return this._fieldDescriptionLayer;\n }\n\n public get SampleFieldLayer(): ApSampleFieldsLayer {\n return this._sampleFieldLayer;\n }\n\n public get SampleFieldDescriptionLayer(): ApSampleFieldsDescriptionLayer {\n return this._sampleFieldDescriptionLayer;\n }\n\n public get NeedLayer(): MapFactoryLayer {\n return this._needLayer;\n }\n\n public set NeedLayer(value: MapFactoryLayer) {\n this._needLayer = value;\n }\n\n public get NeedUrl(): string {\n return this.NeedUrl$.getValue();\n }\n\n public get NeedUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.rbUrl);\n }\n\n public get NdiUrl(): string {\n return this.NdiUrl$.getValue();\n }\n\n public get NdiUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.ndiLayerUrl);\n }\n\n public get NUptakeLayer(): MapFactoryLayer {\n return this._nUptakeLayer;\n }\n\n public get NUptakeUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.nUptakeUrl);\n }\n\n /**\n * get the Locations Layer\n */\n public get LocationsLayer(): ApLocationLayer {\n return this._locationLayer;\n }\n\n /**\n * User location layer (the one that displays user/client position)\n */\n public get UserLocationLayer(): ApUserLocationLayer {\n return this._userLocationLayer;\n }\n\n /**\n * Layer with geo points\n */\n public get GeoPointsLayer(): ApGeoPointsLayer {\n return this._geoPointsLayer;\n }\n\n /**\n * get the polygon edit layer\n */\n public get PolygonEditLayer(): ApPolygonEditLayer {\n return this._polygonEditLayer;\n }\n\n public get PolygonEditViewLayer(): ApPolygonEditLayer {\n return this._polygonEditViewLayer;\n }\n\n public get SoilGroupUrl(): string {\n return this.SoilGroupUrl$.getValue();\n }\n\n public get SoilGroupUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.soilGroupUrl);\n }\n\n public get TrackUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.trackUrl);\n }\n\n public get TrackUrl(): string {\n return this.TrackUrl$.getValue();\n }\n\n /**\n * get the SoilSampleLayer\n */\n public get SoilSampleLayer(): MapFactoryLayer {\n return this._soilSampleLayer;\n }\n\n public set SoilSampleLayer(value: MapFactoryLayer) {\n this._soilSampleLayer = value;\n }\n\n public get SoilSampleUrl(): string {\n return this.SoilSampleUrl$.getValue();\n }\n\n public get SoilSampleUrl$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.layer.soilSampleUrl);\n }\n\n /**\n * get the Task-Management Layer\n */\n public get TaskManagementLayer(): ApTaskManagementLayer {\n return this._taskManagementLayer;\n }\n\n /**\n * get the Task-Management nutrients Layer\n */\n public get TaskManagementNutrientLayer(): MapFactoryLayer {\n return this._taskManagementNutrientLayer;\n }\n\n public get TrackLayer(): MapFactoryLayer {\n return this._trackLayer;\n }\n\n public set TrackLayer(value: MapFactoryLayer) {\n this._trackLayer = value;\n }\n\n public get WMTSLayer(): ApWMTSLayer {\n return this._wmtsLayer;\n }\n\n public get XYZLayer(): ApXYZLayer {\n return this._xyzLayer;\n }\n\n /**\n * write new Field Geometries into the Field Layers with Field Model\n *\n * @param data the list of new Fields\n * @param fieldStore the fieldStore instance\n */\n public AddToFieldLayers(data: IField[], fieldStore: FieldStore): void {\n this.FieldsLayer.SyncFeatures(this.FieldsLayer.ReadFeature(data, fieldStore), LayerSyncStrategy.RESTRAINED);\n if ((this.mapStore.Editor.ActiveTool !== GeometryEditorTool.NONE)\n && (this.mapStore.Editor.ActiveTool !== GeometryEditorTool.SPLIT)\n && (this.mapStore.Editor.ActiveTool !== GeometryEditorTool.PREPARE_MODIFY)) {\n // call ReadFeature again to have copy of Fields for Polygonedit Layer\n this.mapStore.Editor.InsertInPolygonEdit(this.FieldsLayer.ReadFeature(data, fieldStore));\n }\n }\n\n public ChangeMapFactoryLayerUrl(provider: string, map: string, farmId: number, year: number, mutate: (s: MapStore, url: string) => void): void {\n let url = '';\n if (!StringFactory.IsNullOrEmpty(provider) && !StringFactory.IsNullOrEmpty(map) && farmId > 0 && year > 0) {\n url = `/map/${provider}/${map}/{z}/{x}/{y}?params=${farmId}#${year}`;\n }\n this.tryMutateUrl(url, mutate);\n }\n\n public ChangeMapFactoryLayerUrlNdi(provider: string, map: string, farmId: number, year: number, mutate: (s: MapStore, url: string) => void): void {\n let url = '';\n if (!StringFactory.IsNullOrEmpty(provider) && !StringFactory.IsNullOrEmpty(map) && farmId > 0 && year > 0) {\n url = `/map/${provider}/${map}/{z}/{x}/{y}?params=${farmId}#${year}#${1}`;\n }\n this.tryMutateUrl(url, mutate);\n }\n\n public ChangeMapFactoryLayerUrlNUptake(provider: string, map: string, farmId: number, year: number, mutate: (s: MapStore, url: string) => void): void {\n let url = '';\n if (!StringFactory.IsNullOrEmpty(provider) && !StringFactory.IsNullOrEmpty(map) && farmId > 0 && year > 0) {\n url = `/map/${provider}/${map}/{z}/{x}/{y}?params=${farmId}#${year}#${1}`;\n }\n this.tryMutateUrl(url, mutate);\n }\n\n public ChangeMapFactoryLayerUrlTrack(farmId: number,\n machines: { machineId: string, fieldId?: string, from: string, to: string }[],\n mutate: (s: MapStore, url: string) => void): void {\n let url = '';\n if (farmId > 0) {\n url = `/map/pro_slice/map_slice/{z}/{x}/{y}?params=${farmId}#${JSON.stringify(machines)}`;\n }\n this.tryMutateUrl(url, mutate);\n }\n\n public NeedLeftLayerSourceInit(provider: string, map: string, fieldGeomIds: IGuid[]): void {\n this.changePlanningMapFactoryLayerUrl(provider, map, fieldGeomIds, (store, sourceUrl) => store.Mutate(s => s.layer.rbUrl, () => sourceUrl));\n }\n\n private changePlanningMapFactoryLayerUrl(provider: string, map: string, planIds: IGuid[], mutate: (s: MapStore, url: string) => void): void {\n let url = '';\n if (!StringFactory.IsNullOrEmpty(provider) && !StringFactory.IsNullOrEmpty(map) && planIds.Count() > 0) {\n url = `/map/${provider}/${map}/{z}/{x}/{y}?params=${JSON.stringify(planIds)}`;\n }\n this.tryMutateUrl(url, mutate);\n }\n\n /**\n * Validates the given mapFactory url and mutates the mapStore's url\n * @param url to switch to\n * @param mutate the mutation delegate\n * @private\n */\n private tryMutateUrl(url: string, mutate: (s: MapStore, url: string) => void): void {\n // APV49-4550: There are rare cases when mapFactory url contains 'undefined'\n // The reason is unknown for now. In order to get an idea of when this happens\n // ==> console error for developers for such usecases.\n if (url?.Contains('undefined')) {\n if (ApMapInstance.hasDeveloperRole) {\n console.error(`Invalid map factory url: ${url} at ${Error().stack}`);\n }\n return;\n }\n mutate(this.mapStore, url);\n }\n\n public NutrientPlanningLayerSourceInit(url: string, nutrient: string, planIds: IGuid[]): void {\n let provider = '';\n let map = '';\n if (url.EndsWith('nutrients/planning') || url.EndsWith('nutrients/booking') || url.EndsWith('nutrients/overview')) {\n provider = `pro_nutrient_planning_${nutrient.ToLower()}`;\n map = `map_nutrient_planning_${nutrient.ToLower()}`;\n } else {\n return;\n }\n this.changePlanningMapFactoryLayerUrl(provider, map, planIds, (store, sourceUrl) => store.Mutate(s => s.layer.nutrientPlanningUrl, () => sourceUrl));\n }\n\n public NPlanningLayerSourceInit(url: string, planIds: IGuid[]): void {\n let provider = '';\n let map = '';\n if (url.Contains('/n-fertilization/')) {\n provider = `pro_n_planning`;\n map = `map_n_planning`;\n } else {\n return;\n }\n this.changeNPlanningMapFactoryLayerUrl(provider, map, planIds, (store, sourceUrl) => store.Mutate(s => s.layer.nPlanningUrl, () => sourceUrl));\n }\n\n public PPApplicationLayerSourceInit(url: string, planIds: IGuid[]): void {\n let provider = '';\n let map = '';\n if (url.Contains('/plant-protection/')) {\n provider = `pro_pp_application_map`;\n map = `map_pp_application_map`;\n } else {\n return;\n }\n this.changeNPlanningMapFactoryLayerUrl(provider, map, planIds, (store, sourceUrl) => store.Mutate(s => s.layer.ppApplicationUrl, () => sourceUrl));\n }\n\n private changeNPlanningMapFactoryLayerUrl(provider: string, map: string, planIds: IGuid[], mutate: (s: MapStore, url: string) => void): void {\n let url = '';\n if (!StringFactory.IsNullOrEmpty(provider) && !StringFactory.IsNullOrEmpty(map) && planIds.Count() > 0) {\n url = `/map/${provider}/${map}/{z}/{x}/{y}?params=${JSON.stringify(planIds)}`;\n }\n this.tryMutateUrl(url, mutate);\n }\n\n public RemoveContactLayer(): void {\n if (this.ContactLayer && typeof this.ContactLayer.clear === typeof function (): void {\n }) {\n this.ContactLayer.clear();\n }\n }\n\n /**\n * remove Field Geometries from Field Layers with Field Model\n */\n public RemoveFromFieldLayers(data: IField[], fieldStore: FieldStore): void {\n const tmp = this.FieldsLayer.ReadFeature(data, fieldStore);\n this.FieldsLayer.SyncFeatures(tmp, LayerSyncStrategy.DELETE);\n this.FieldDescriptionLayer.SyncFeatures(tmp, LayerSyncStrategy.DELETE);\n if ((this.mapStore.Editor.ActiveTool !== GeometryEditorTool.NONE)\n && (this.mapStore.Editor.ActiveTool !== GeometryEditorTool.SPLIT)\n && (this.mapStore.Editor.ActiveTool !== GeometryEditorTool.PREPARE_MODIFY)) {\n this.mapStore.Editor.RemoveFromPolygonEditLayer(tmp);\n }\n }\n\n public async setActiveLayerGroups(groups: ILayerGroup[]): Promise {\n groups = ObjectFactory.Copy(groups);\n for (const g of groups) {\n g.visibility = await this.getLayerGroupCheckboxState(g.name);\n }\n this.mapStore.Mutate(s => s.layer.activeLayerGroups, () => groups);\n }\n\n public async refreshActiveLayerGroups(layer: ILayerControlLayer): Promise {\n const tmp = [];\n for (const activeGroup of ObjectFactory.Copy(this.ActiveLayerGroups)) {\n if (activeGroup.name === layer.Group) {\n activeGroup.visibility = await this.getLayerGroupCheckboxState(layer.Group);\n }\n tmp.Add(activeGroup);\n }\n this.setActiveLayerGroups(tmp).then();\n }\n\n public getLayerByName(name: string): ILayerControlLayer {\n if (!name) {\n return null;\n }\n return this.AllLayers.Find(l => l.name === name);\n }\n\n public async getLayerGroupCheckboxState(group: string): Promise {\n return new Promise(resolve => {\n setTimeout(() => {\n const groupLayers = this.mapStore.Layers.getLayersByGroup(group);\n let allLayersChecked = true;\n let allLayersUnchecked = true;\n for (const l of groupLayers) {\n if (!l.Visibility) {\n allLayersChecked = false;\n } else {\n allLayersUnchecked = false;\n }\n }\n if (groupLayers.length < 1) {\n allLayersChecked = false;\n allLayersUnchecked = false;\n }\n resolve(allLayersChecked ? 'checked' : allLayersUnchecked ? 'unchecked' : 'indeterminate');\n }, 0);\n });\n }\n\n public getLayersByGroup(group: string): ILayerControlLayer[] {\n return !group ? [] : this.AllLayers.FindAll(l => l.Group === group);\n }\n\n private setBackgroundMap(layer: BingImagery): void {\n this.mapStore.Mutate(s => s.layer.backgroundMap, () => layer);\n }\n\n private listenChangeBackgroundMap(): void {\n this.mapLayerControl.onBackgroundMapChanged.subscribe(v => {\n this.setBackgroundMap(v);\n });\n // refresh the Data in the Layer Control\n this.BackgroundMap$.subscribe(() => {\n /*\n this.mapLayerControl.refresh({\n map,\n layers: this.AllLayers,\n });\n */\n });\n }\n\n private listenChangeFieldDistributionUrl(): void {\n this.DistributionUrl$.pipe(delay(50)).subscribe(url => {\n if (url) {\n this.colorLegendStore.setColorLegend(this.DistributionLayer, [\n {label: 'A-', color: this.getSoilSampleClassColorService.getColor('A-')},\n {label: 'A+', color: this.getSoilSampleClassColorService.getColor('A+')},\n {label: 'B-', color: this.getSoilSampleClassColorService.getColor('B-')},\n {label: 'B+', color: this.getSoilSampleClassColorService.getColor('B+')},\n {label: 'C-', color: this.getSoilSampleClassColorService.getColor('C-')},\n {label: 'C+', color: this.getSoilSampleClassColorService.getColor('C+')},\n {label: 'D-', color: this.getSoilSampleClassColorService.getColor('D-')},\n {label: 'D+', color: this.getSoilSampleClassColorService.getColor('D+')},\n {label: 'E', color: this.getSoilSampleClassColorService.getColor('E')},\n ], '', {\n component: {\n type: FieldDistributionLegendSelectorComponent.type,\n data: {\n currentNutrient: 'P',\n selectionChanged: nutrient => this.FieldDistributionLegendNutrientChange.emit(nutrient),\n },\n },\n });\n return;\n }\n this.colorLegendStore.resetColorLegend();\n });\n }\n\n private listenChangeLayer(): void {\n this.OnLayerChange.subscribe(() => {\n this.initBaseMaps();\n });\n }\n\n public initBaseMaps(): void {\n this.mapLayerControl.refresh({\n map: this.BackgroundMap$.getValue(),\n layers: this.AllLayers,\n });\n }\n\n private listenChangeTranslation(): void {\n combineLatest([\n this.languageStore.Listen(s => s.selectedLanguage),\n this.translationStore.Listen(s => s.loading)\n ]).subscribe(([language, translationLoading]) => {\n if (language && !translationLoading) {\n this.LocationsLayer.setUnknown(this.translationStore.FindTranslationForSelectedLanguage('Docu_Ini__Unknown'));\n }\n });\n }\n\n private listenChangeOrder(): void {\n this.mapLayerControl.onOrderChanged.subscribe(v => {\n const layer = this.AllLayers.Find(l => l.name === v.layer.name);\n if (!layer) {\n return;\n }\n layer.Order = v.order;\n this.OnLayerChange.emit();\n });\n }\n\n private listenChangeVisibility(): void {\n this.mapLayerControl.onVisibilityChanged.subscribe(v => {\n const layer = this.AllLayers.Find(l => l.name === v.layer.name);\n if (!layer) {\n return;\n }\n if (layer.name === LayerNames.FIELDS) {\n this.FieldDescriptionLayer.Visibility = v.visibility;\n }\n layer.Visibility = v.visibility;\n this.OnLayerChange.emit();\n });\n }\n\n /**\n * Clean up map from dynamic maps (like plans, tracks etc.)\n * static maps like distributions or soilgroups will remain\n */\n public Clear(): void {\n this.mapStore.Mutate(s => s.layer.trackUrl, () => '');\n this.mapStore.Layers.TrackLayer.clear();\n this.mapStore.Mutate(s => s.layer.nutrientPlanningUrl, () => '');\n this.mapStore.Layers.NutrientPlanningLayer.clear();\n this.mapStore.Mutate(s => s.layer.nPlanningUrl, () => '');\n this.mapStore.Layers.NApplicationMapLayer.clear();\n this.mapStore.Mutate(s => s.layer.ppApplicationUrl, () => '');\n this.mapStore.Layers.PpApplicationMapLayer.clear();\n }\n\n /**\n * Resets all farm specific layers\n */\n public Reset(): void {\n this.mapStore.Mutate(s => s.layer.trackUrl, () => '');\n this.mapStore.Layers.TrackLayer.clear();\n this.mapStore.Mutate(s => s.layer.distributionUrl, () => '');\n this.mapStore.Layers.DistributionLayer.clear();\n this.mapStore.Mutate(s => s.layer.soilGroupUrl, () => '');\n this.mapStore.Layers.SoilGroupLayer.clear();\n this.mapStore.Mutate(s => s.layer.soilSampleUrl, () => '');\n this.mapStore.Layers.SoilSampleLayer.clear();\n this.mapStore.Mutate(s => s.layer.rbUrl, () => '');\n this.mapStore.Layers.NeedLayer.clear();\n this.mapStore.Mutate(s => s.layer.nutrientPlanningUrl, () => '');\n this.mapStore.Layers.NutrientPlanningLayer.clear();\n this.mapStore.Mutate(s => s.layer.nPlanningUrl, () => '');\n this.mapStore.Layers.NApplicationMapLayer.clear();\n this.mapStore.Mutate(s => s.layer.ppApplicationUrl, () => '');\n this.mapStore.Layers.PpApplicationMapLayer.clear();\n this.mapStore.Mutate(s => s.layer.ndiLayerUrl, () => '');\n this.mapStore.Layers.NdiLayer.clear();\n this.mapStore.Mutate(s => s.layer.nUptakeUrl, () => '');\n this.mapStore.Layers.NUptakeLayer.clear();\n this.mapStore.Mutate(s => s.layer.nSensorLogPointsUrl, () => '');\n this.mapStore.Layers.SensorPoints.clear();\n }\n\n private listenContoursChanges(): void {\n this.mapStore.backend.registerObservable(FieldNutrientNeedChanged).subscribe(() => {\n this.mapStore.Layers.NeedLayer.reload();\n });\n this.mapStore.backend.registerObservable(FieldNutrientDistributionChanged).subscribe(() => {\n this.mapStore.Layers.DistributionLayer.reload();\n });\n }\n\n private loadLayerMapControlItems(): void {\n this.mapStore.Mutate(s => s.layer.layerMapControlItems, () => ({\n [ApMenuUrls.FIELD_MANAGEMENT_OVERVIEW]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_CROP),\n ],\n },\n [ApMenuUrls.FIELD_MANAGEMENT_CROP_ROTATION]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_CROP),\n ],\n },\n // TODO: hier müsste eigentlich Bodengruppe stehen aber den Menüpunkt gibt es gar nicht\n [ApMenuUrls.FIELD_MANAGEMENT_SOIL_SAMPLE_FIELDS]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASE_FERTILISATION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.SOIL_SAMPLE_FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.SOIL_GROUP_MAP),\n this.AllLayers.Find(l => l.name === LayerNames.SOIL_SAMPLE_DISTRIBUTIONS),\n ],\n },\n [ApMenuUrls.FIELD_MANAGEMENT_SOIL_SCANNER]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n // TODO: Anbindung des Bodenscannerlayers fehlt noch da noch keine Daten vorliegen\n ],\n },\n [ApMenuUrls.FIELD_MANAGEMENT_ELEVATION]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n // TODO: Anbindung des Höhendatenlayers fehlt noch da die Daten noch nicht vorliegen\n ],\n },\n [ApMenuUrls.FIELD_MANAGEMENT_MONITORING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC)\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION)\n ]\n },\n [ApMenuUrls.FIELD_MANAGEMENT_SATELLITE]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.NDI),\n ],\n },\n [ApMenuUrls.FIELD_WORK_LIVE_VIEW]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.FIELD_WORK),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.LOCATIONS),\n ],\n },\n [ApMenuUrls.FIELD_WORK_OVERVIEW]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.FIELD_WORK),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.TRACK),\n ],\n },\n [ApMenuUrls.FIELD_WORK_PLANNING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.FIELD_WORK),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.TRACK),\n ],\n },\n [ApMenuUrls.FIELD_WORK_MEASURES]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.FIELD_WORK),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.TRACK),\n ],\n },\n [ApMenuUrls.FIELD_WORK_BOOKING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.FIELD_WORK),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.TRACK),\n ],\n },\n [ApMenuUrls.FIELD_WORK_ACTION_LOOKUP]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.FIELD_WORK),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.TRACK),\n ],\n },\n [ApMenuUrls.NUTRIENTS_OVERVIEW]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASE_FERTILISATION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.NEED),\n ],\n },\n [ApMenuUrls.NUTRIENTS_PLANNING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASE_FERTILISATION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.NUTRIENT_PLANNINGS),\n ],\n },\n [ApMenuUrls.NUTRIENTS_LOG_FILES]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASE_FERTILISATION),\n ],\n activeLayers: [],\n },\n [ApMenuUrls.NUTRIENTS_BOOKING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASE_FERTILISATION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.NUTRIENT_PLANNINGS),\n ],\n },\n [ApMenuUrls.NUTRIENTS_DISTRIBUTION]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASE_FERTILISATION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.DISTRIBUTIONS),\n ],\n },\n [ApMenuUrls.NUTRIENTS_P_NEED]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASE_FERTILISATION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_CROP),\n ],\n },\n [ApMenuUrls.NUTRIENTS_SOIL_SAMPLE_PLANNING_OVERVIEW]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASE_FERTILISATION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_CROP),\n this.AllLayers.Find(l => l.name === LayerNames.SOIL_SAMPLES),\n ],\n },\n [ApMenuUrls.N_FERTILIZATION_OVERVIEW]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.N_FERTILISATION)\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.N_RASTER)\n ]\n },\n [ApMenuUrls.N_FERTILIZATION_PLANNING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.N_FERTILISATION)\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.N_APPLICATION_MAP),\n ]\n },\n [ApMenuUrls.N_FERTILIZATION_BOOKING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.N_FERTILISATION)\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n ]\n },\n [ApMenuUrls.N_FERTILIZATION_LOG_FILES]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.LOGFILES),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n ],\n },\n [ApMenuUrls.N_FERTILIZATION_N_NEED]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.N_FERTILISATION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_CROP),\n ],\n },\n [ApMenuUrls.PLANT_PROTECTION_OVERVIEW]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.PLANT_PROTECTION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.PP_RASTER),\n ],\n },\n [ApMenuUrls.PLANT_PROTECTION_PLANNING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.PLANT_PROTECTION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.PP_APPLICATION_MAP),\n ],\n },\n [ApMenuUrls.PLANT_PROTECTION_LOG_FILES]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.LOGFILES),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n ],\n },\n [ApMenuUrls.PLANT_PROTECTION_BOOKING]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.PLANT_PROTECTION),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.PP_RASTER),\n ],\n },\n [ApMenuUrls.TASK_MANAGEMENT_OVERVIEW]: {\n groups: [\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.BASIC),\n this.AllLayerGroups$.getValue().Find(gl => gl.name === LayerGroupNames.TASK_MANAGEMENT),\n ],\n activeLayers: [\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS),\n this.AllLayers.Find(l => l.name === LayerNames.FIELDS_DESCRIPTION),\n this.AllLayers.Find(l => l.name === LayerNames.TASK_MANAGEMENT_NUTRIENT),\n this.AllLayers.Find(l => l.name === LayerNames.TASK_MANAGEMENT),\n ],\n },\n }));\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IResultMessage = Invoker.IResultMessage;\n\nexport enum MapActions {\n LOAD_FUNGI_DETECT_BY_DATASET = '[map] load fungi detect by dataset',\n GEOMETRY_EDITOR_INFORM_STATE_CHANGE = '[geometryeditor] inform state change',\n GEOMETRY_EDITOR_SET_OPEN_STATE = '[geometryeditor] set open state',\n GEOMETRY_EDITOR_SEND_UPDATE = '[geometryeditor] update send',\n GEOMETRY_EDITOR_UPDATE = '[geometryeditor] update',\n GEOMETRY_EDITOR_MERGE = '[geometryeditor] merge',\n GEOMETRY_EDITOR_MERGE_DONE = '[geometryeditor] merge done',\n GEOMETRY_EDITOR_SPLIT = '[geometryeditor] split',\n GEOMETRY_EDITOR_SPLIT_DONE = '[geometryeditor] split done',\n}\n\nexport class MapLoadFungiDetect implements IAction {\n readonly type = MapActions.LOAD_FUNGI_DETECT_BY_DATASET;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class GeometryEditorInformStateChange implements IAction {\n readonly type = MapActions.GEOMETRY_EDITOR_INFORM_STATE_CHANGE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class GeometryEditorSetOpenState implements IAction {\n readonly type = MapActions.GEOMETRY_EDITOR_SET_OPEN_STATE;\n\n constructor(public payload: IResultMessage) {\n }\n}\n\nexport class GeometryEditorSendUpdate implements IAction {\n readonly type = MapActions.GEOMETRY_EDITOR_SEND_UPDATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class GeometryEditorUpdate implements IAction {\n readonly type = MapActions.GEOMETRY_EDITOR_UPDATE;\n\n constructor(public payload: IResultMessage) {\n }\n}\n\nexport class GeometryEditorMerge implements IAction {\n readonly type = MapActions.GEOMETRY_EDITOR_MERGE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class GeometryEditorMergeDone implements IAction {\n readonly type = MapActions.GEOMETRY_EDITOR_MERGE_DONE;\n\n constructor(public payload: IResultMessage) {\n }\n}\n\nexport class GeometryEditorSplit implements IAction {\n readonly type = MapActions.GEOMETRY_EDITOR_SPLIT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class GeometryEditorSplitDone implements IAction {\n readonly type = MapActions.GEOMETRY_EDITOR_SPLIT_DONE;\n\n constructor(public payload: IResultMessage) {\n }\n}\n","import {MapStore} from './map.store';\nimport {\n GeometryEditorTool,\n GeometryEditorToolGroup\n} from '../../map/components/edit/ap-edit-tooltype';\nimport {\n ApCustomTypes,\n GeometryEditorInformStateChange,\n GeometryEditorSendUpdate,\n GeometryEditorUpdate,\n NetTypes\n} from 'invoker-transport';\nimport Feature from 'ol/Feature';\nimport {\n ApEditStyles\n} from '../../ap-map/layers/ap-edit-styles';\nimport {\n Guid,\n SafeBehaviorSubject\n} from 'ts-tooling';\nimport Geometry from 'ol/geom/Geometry';\nimport {\n LayerSyncStrategy,\n MAP_PROJECTION\n} from '../../ap-map';\nimport {\n EventEmitter\n} from '@angular/core';\nimport {\n GeoJSONConverter\n} from '../../ap-map/utils/geojson.converter';\nimport {\n FieldStore\n} from '../farm/field.store';\nimport {\n delay\n} from 'rxjs/operators';\nimport {\n GeometryEditorMerge,\n GeometryEditorMergeDone,\n GeometryEditorSplit,\n GeometryEditorSplitDone\n} from '../../../../projects/invoker-transport/src/lib/actions/map';\nimport Polygon from 'ol/geom/Polygon';\nimport {\n Coordinate\n} from 'ol/coordinate';\nimport IGeometryUpdate = Data.GeometryEditor.IGeometryUpdate;\nimport IField = Data.FieldManagement.IField;\nimport GeometryUpdateType = Data.GeometryEditor.GeometryUpdateType;\nimport IGuid = System.IGuid;\n\nexport interface IGeometryEditorState {\n activeTool: GeometryEditorTool;\n activeToolGroup: GeometryEditorToolGroup;\n deleteButtonVisible: boolean;\n showEditbar: boolean;\n editFeature: Feature;\n deleteGeometry: IField[];\n currentArea: number;\n selectedFeature: Feature;\n featureLocked: boolean;\n}\n\nexport class MapEditStore {\n\n constructor(private mapStore: MapStore) {\n this.listenBackendGeometryMerge();\n }\n\n public get ActiveToolGroup(): GeometryEditorToolGroup {\n return this.ActiveToolGroup$.getValue();\n }\n\n public get ActiveToolGroup$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.editor.activeToolGroup);\n }\n\n public get CurrentArea$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.editor.currentArea);\n }\n\n public get DeleteButtonVisible$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.editor.deleteButtonVisible);\n }\n\n public get DeleteGeometry$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.editor.deleteGeometry);\n }\n\n public get EditBarVisibility$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.editor.showEditbar);\n }\n\n public get EditedFeature$(): SafeBehaviorSubject> {\n return this.mapStore.Listen(s => s.editor.editFeature);\n }\n\n public get FeatureLocked(): boolean {\n return this.FeatureLocked$.getValue();\n }\n\n public get FeatureLocked$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.editor.featureLocked);\n }\n\n public get SelectedFeature$(): SafeBehaviorSubject> {\n return this.mapStore.Listen(s => s.editor.selectedFeature);\n }\n\n public get ActiveTool(): GeometryEditorTool {\n return this.ActiveTool$.getValue();\n }\n\n public get ActiveTool$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.editor.activeTool);\n }\n\n public static DefaultState: IGeometryEditorState = {\n deleteButtonVisible: false,\n activeTool: GeometryEditorTool.NONE,\n activeToolGroup: GeometryEditorToolGroup.NONE,\n showEditbar: false,\n currentArea: 0,\n deleteGeometry: [],\n editFeature: null,\n selectedFeature: null,\n featureLocked: false,\n };\n\n public PolygonEditLayerChange$ = new EventEmitter();\n private gridSelectedFields: any[] = [];\n\n public onDrawNew = new EventEmitter(true);\n public onSplit = new EventEmitter(true);\n public onSplitEnd = new EventEmitter(true);\n public onModify = new EventEmitter(true);\n public onDrawNewEnd = new EventEmitter(true);\n public onModifyEnd = new EventEmitter(true);\n public onDrawNewHole = new EventEmitter(true);\n public onDrawNewHoleEnd = new EventEmitter(true);\n public onDeleteHole = new EventEmitter(true);\n public onDeleteHoleEnd = new EventEmitter(true);\n public onCloseEditor = new EventEmitter(true);\n public onDeleteSketchGeometry = new EventEmitter(true);\n\n private fieldCropsVisibleBefore : boolean | undefined = undefined;\n\n public CancelEditFeature(featId: Guid): void {\n this.mapStore.Layers.PolygonEditLayer.removeApFeature(featId.toString());\n }\n\n public startListening(): void {\n this.listenActiveToolChange();\n this.listenBackendGeometryUpdate();\n }\n\n /**\n * set the Visibility of the Map Delete Button to false\n */\n public HideDeleteButton(): void {\n this.mapStore.Mutate(s => s.editor.deleteButtonVisible, () => false);\n }\n\n public InsertInPolygonEdit(features: Feature[]): void {\n this.mapStore.Layers.PolygonEditLayer.SyncFeatures(features, LayerSyncStrategy.RESTRAINED);\n this.PolygonEditLayerChange$.emit();\n }\n\n public LockFeature(state: boolean): void {\n this.mapStore.Mutate(s => s.editor.featureLocked, () => state);\n }\n\n public RemoveFromPolygonEditLayer(features: Feature[]): void {\n this.mapStore.Layers.PolygonEditLayer.SyncFeatures(features, LayerSyncStrategy.DELETE);\n this.PolygonEditLayerChange$.emit();\n }\n\n public SendGeometryUpdate(update: IGeometryUpdate): void {\n this.mapStore.DispatchBackend(new GeometryEditorSendUpdate([\n {Name: 'update', Type: ApCustomTypes.Data_GeometryEditor_GeometryUpdate, Value: update}\n ]));\n }\n\n public SetActiveTool(ttype: GeometryEditorTool): void {\n this.mapStore.Mutate(s => s.editor.activeTool, () => ttype);\n }\n\n public SetDeleteGeometry(fields: IField[]): void {\n this.mapStore.Mutate(s => s.editor.deleteGeometry, () => fields);\n }\n\n public SetEditBarVisibility(value: boolean): void {\n this.mapStore.Mutate(s => s.editor.showEditbar, () => value);\n }\n\n public SetEditFeature(feat: Feature): void {\n const tag = feat.get('tag');\n if (tag === 'modify') {\n this.mapStore.Layers.PolygonEditLayer\n .selectFeature(feat.getId().toString(), ApEditStyles.selectedStyle);\n }\n }\n\n public SetFeatureArea(area: number): void {\n this.mapStore.Mutate(s => s.editor.currentArea, () => area);\n }\n\n /**\n * set the Visibility of the Map Delete Button to true\n */\n public ShowDeleteButton(): void {\n this.mapStore.Mutate(s => s.editor.deleteButtonVisible, () => true);\n }\n\n public ShowEditbar(value: boolean): void {\n this.mapStore.Mutate(s => s.editor.showEditbar, () => value);\n }\n\n private listenBackendGeometryUpdate(): void {\n this.mapStore.backend.registerObservable(GeometryEditorUpdate).subscribe(msg => {\n const update = msg.Data as IGeometryUpdate;\n switch (update.Type) {\n case GeometryUpdateType.INSERT:\n const features = GeoJSONConverter.GeometryStringToFeature([update.Geom], MAP_PROJECTION);\n this.InsertInPolygonEdit(features);\n break;\n case GeometryUpdateType.DELETE:\n break;\n case GeometryUpdateType.UPDATE:\n break;\n }\n });\n }\n\n private listenBackendGeometryMerge(): void {\n this.mapStore.backend.registerObservable(GeometryEditorMergeDone).subscribe(msg => {\n this.mapStore.Mutate(s => s.mergeFieldResult, () => msg.Data);\n });\n }\n\n public ClearMergeFieldResult(): void {\n this.mapStore.Mutate(s => s.mergeFieldResult, () => null);\n }\n\n public PrepareNewField(gridSelectedFields: IGuid[], fieldStore: FieldStore): void {\n this.prepareEditLayers(fieldStore);\n this.mapStore.Mutate(s => s.editor.activeToolGroup, () => GeometryEditorToolGroup.NEW);\n this.openEditBar(GeometryEditorTool.DRAW_NEW);\n }\n\n public PrepareOpenEditBar(): void {\n this.mapStore.Mutate(s => s.editor.activeTool, () => GeometryEditorTool.PREPARE_MODIFY);\n }\n\n public PrepareModifyField(fieldStore: FieldStore, prepareLayers = true): void {\n fieldStore.fieldsToIgnoreInSnap = [];\n if (prepareLayers) {\n this.prepareEditLayers(fieldStore);\n }\n this.selectEditField(fieldStore);\n this.mapStore.Mutate(s => s.editor.activeToolGroup, () => GeometryEditorToolGroup.MODIFY);\n this.openEditBar(GeometryEditorTool.MODIFY);\n }\n\n public PrepareSplitField(gridSelectedFieldGeomId: IGuid, fieldStore: FieldStore): void {\n fieldStore.fieldsToIgnoreInSnap = [];\n\n this.prepareEditLineLayers(gridSelectedFieldGeomId);\n // this.selectEditField(fieldStore);\n this.mapStore.Mutate(s => s.editor.activeToolGroup, () => GeometryEditorToolGroup.NEW);\n this.openEditBar(GeometryEditorTool.SPLIT);\n }\n\n public UpdateSplitData(data: any[]): void {\n this.mapStore.Mutate(s => s.splitFieldResult, () => data);\n }\n\n public PrepareModifyMergedField(selectedFields: IGuid[], geometryCoordinates: Coordinate[][], fieldStore: FieldStore): void {\n this.prepareEditLayers(fieldStore, geometryCoordinates, selectedFields);\n\n this.selectEditField(fieldStore);\n this.mapStore.Mutate(s => s.editor.activeToolGroup, () => GeometryEditorToolGroup.MODIFY);\n this.openEditBar(GeometryEditorTool.MODIFY);\n }\n\n public PrepareDrawNewHole(): void {\n this.openEditBar(GeometryEditorTool.DRAW_HOLE);\n }\n\n public PrepareDeleteHole(): void {\n this.openEditBar(GeometryEditorTool.DELETE_HOLE);\n }\n\n public CloseEditor(fieldStore: FieldStore): void {\n if (this.mapStore.Editor.ActiveTool !== GeometryEditorTool.PREPARE_MODIFY) {\n this.removeEditLayers(fieldStore);\n }\n this.cancelActions();\n this.mapStore.Mutate(s => s.editor.activeToolGroup, () => GeometryEditorToolGroup.NONE);\n this.closeEditBar();\n }\n\n public MergeFieldGeometries(geom1: IGuid, geom2: IGuid): void {\n this.mapStore.DispatchBackend(new GeometryEditorMerge([\n {Name: 'geomIds', Type: NetTypes.GUID + '[]', Value: [geom1, geom2]}\n ]));\n }\n\n public SplitFieldGeometry(geomId: IGuid, splitLine: object, onDone: any): void {\n this.mapStore.DispatchBackend(new GeometryEditorSplit([\n {Name: 'geomId', Type: NetTypes.GUID, Value: geomId},\n {Name: 'splitLine', Type: ApCustomTypes.Data_Geometry_GeoJsonLine, Value: splitLine}\n ])).watchStream({\n action: GeometryEditorSplitDone,\n todo: payload => {\n if (payload.Error) {\n console.warn(payload.Error);\n return;\n }\n\n onDone(payload.Data);\n },\n });\n }\n\n private prepareEditLayers(fieldStore: FieldStore, replaceWith: Coordinate[][] = null, replaceId: IGuid[] = null): void {\n this.mapStore.Layers.PolygonEditLayer.clear();\n this.mapStore.Layers.PolygonEditViewLayer.clear();\n if (Array.isArray(this.mapStore.Layers.FieldsLayer?.Source?.getFeatures())) {\n const editFields: Feature[] = [];\n const otherFields: Feature[] = [];\n for (const feat of this.mapStore.Layers.FieldsLayer.Source.getFeatures()) {\n const id = feat.getId();\n if (replaceId != null && replaceId[0] === id) {\n this.mapStore.Layers.FieldsLayer.Source.removeFeature(feat);\n feat.setGeometry(new Polygon(replaceWith));\n this.mapStore.Layers.FieldsLayer.Source.addFeature(feat);\n }\n\n if (replaceId != null && replaceId[1] === id) {\n this.mapStore.Layers.FieldsLayer.Source.removeFeature(feat);\n } else if (fieldStore.EditFields.Contains(id)) {\n editFields.push(feat);\n } else {\n otherFields.push(feat);\n }\n }\n\n this.mapStore.Layers.PolygonEditLayer.replaceSource(editFields);\n this.mapStore.Layers.PolygonEditViewLayer.replaceSource(otherFields);\n }\n\n this.fieldCropsVisibleBefore = this.mapStore.Layers.FieldsCropLayer.Visibility === true;\n this.mapStore.Layers.FieldsLayer.Visibility = false;\n this.mapStore.Layers.FieldsCropLayer.Visibility = false;\n this.mapStore.Layers.PolygonEditLayer.Visibility = true;\n this.mapStore.Layers.PolygonEditViewLayer.Visibility = true;\n }\n\n private prepareEditLineLayers(fieldId: IGuid): void {\n this.mapStore.Layers.PolygonEditViewLayer.clearSelection();\n this.mapStore.Layers.PolygonEditViewLayer.clear();\n this.mapStore.Layers.PolygonEditLayer.clearSelection();\n this.mapStore.Layers.PolygonEditLayer.clear();\n\n if (Array.isArray(this.mapStore.Layers.FieldsLayer?.Source?.getFeatures())) {\n for (const feat of this.mapStore.Layers.FieldsLayer.Source.getFeatures()) {\n if (feat.getId() === fieldId) {\n this.mapStore.Layers.PolygonEditViewLayer.replaceSource([feat]);\n this.mapStore.Layers.PolygonEditViewLayer.selectPolygon(feat.getId().toString());\n break;\n }\n }\n }\n\n this.fieldCropsVisibleBefore = this.mapStore.Layers.FieldsCropLayer.Visibility === true;\n this.mapStore.Layers.FieldsLayer.Visibility = false;\n this.mapStore.Layers.FieldsCropLayer.Visibility = false;\n this.mapStore.Layers.PolygonEditViewLayer.Visibility = true;\n this.mapStore.Layers.PolygonEditViewLayer.fitSelection(150, () => {\n this.mapStore.Layers.FieldDescriptionLayer.clear();\n this.mapStore.Layers.FieldDescriptionLayer.SyncFeatures(this.mapStore.Layers.PolygonEditViewLayer.innerSource.getFeatures(), LayerSyncStrategy.FORCE);\n });\n this.mapStore.Layers.PolygonEditViewLayer.clearSelection();\n }\n\n private removeEditLayers(fieldStore: FieldStore): void {\n this.mapStore.Layers.PolygonEditLayer.Visibility = false;\n this.mapStore.Layers.PolygonEditViewLayer.Visibility = false;\n if (this.fieldCropsVisibleBefore !== undefined) {\n this.mapStore.Layers.FieldsCropLayer.Visibility = this.fieldCropsVisibleBefore;\n // reset variable to avoid side effects on next edit\n this.fieldCropsVisibleBefore = undefined;\n }\n this.mapStore.Layers.PolygonEditLayer.clear();\n this.mapStore.Layers.PolygonEditViewLayer.clear();\n this.mapStore.Layers.FieldsLayer.replaceSource(fieldStore.Fields, fieldStore);\n }\n\n private selectEditField(fieldStore: FieldStore): void {\n for (const id of fieldStore.EditFields) {\n this.mapStore.Layers.PolygonEditLayer.selectPolygon(id.toString());\n }\n this.mapStore.Layers.PolygonEditLayer.fitSelection(150);\n }\n\n private openEditBar(tool: GeometryEditorTool, hideBar = false): void {\n this.mapStore.DispatchBackend(new GeometryEditorInformStateChange([\n {Name: 'state', Type: NetTypes.BOOL, Value: true},\n ]));\n this.mapStore.Mutate(s => s.editor.showEditbar, () => hideBar);\n this.mapStore.Mutate(s => s.editor.activeTool, () => tool);\n }\n\n private closeEditBar(): void {\n this.mapStore.DispatchBackend(new GeometryEditorInformStateChange([\n {Name: 'state', Type: NetTypes.BOOL, Value: false},\n ]));\n this.mapStore.Mutate(s => s.editor.showEditbar, () => false);\n this.mapStore.Mutate(s => s.editor.activeTool, () => GeometryEditorTool.NONE);\n this.onCloseEditor.emit();\n }\n\n private listenActiveToolChange(): void {\n this.mapStore.Editor.ActiveTool$.pipe(delay(1)).subscribe(tool => {\n switch (tool) {\n case GeometryEditorTool.DRAW_NEW:\n this.onDrawNew.emit();\n break;\n case GeometryEditorTool.SPLIT:\n this.onSplit.emit();\n break;\n case GeometryEditorTool.MODIFY:\n this.onModify.emit();\n break;\n case GeometryEditorTool.DRAW_HOLE:\n this.onDrawNewHole.emit();\n break;\n case GeometryEditorTool.DELETE_HOLE:\n this.onDeleteHole.emit();\n break;\n }\n });\n }\n\n private cancelActions(): void {\n switch (this.mapStore.Editor.ActiveTool) {\n case GeometryEditorTool.DRAW_NEW:\n this.onDrawNewEnd.emit();\n break;\n case GeometryEditorTool.SPLIT:\n this.onSplitEnd.emit();\n break;\n case GeometryEditorTool.MODIFY:\n this.onModifyEnd.emit();\n break;\n case GeometryEditorTool.DRAW_HOLE:\n this.onDrawNewHoleEnd.emit();\n break;\n case GeometryEditorTool.DELETE_HOLE:\n this.onDeleteHoleEnd.emit();\n break;\n }\n }\n\n DeleteSketchGeometry(): void {\n this.onDeleteSketchGeometry.emit();\n }\n}\n","import {ProjectionLike} from 'ol/proj';\nimport {GeoJSON} from 'ol/format';\nimport {MAP_PROJECTION} from '..';\n\nexport class GeoJSONConverter {\n /**\n * convert a list of Geometry GeoJSON Strings into Openlayers Features\n *\n * @param geoms the geometry strings\n * @param projection the projection of the geometry strings\n * @param props the optional properties to write into the Features when undefined null was set into properties\n */\n static GeometryStringToFeature(geoms: string[], projection: ProjectionLike, props?: any[]): any[] {\n const format = new GeoJSON({\n dataProjection: projection,\n featureProjection: MAP_PROJECTION,\n });\n const result = [];\n for (let i = 0; i < geoms.length; i++) {\n const geometry = geoms[i];\n const properties = props ? props[i] || null : null;\n result.Add(format.readFeature({\n type: 'Feature',\n geometry: JSON.parse(geometry),\n properties,\n }));\n }\n return result;\n }\n}\n","import {EventEmitter} from '@angular/core';\nimport {BehaviorSubject, combineLatest} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {ListSortOrder, SafeBehaviorSubject} from 'ts-tooling';\nimport {MapStore} from './map.store';\nimport {\n CROP_TYPE_LEGEND,\n LOG_LEGEND,\n N_LOG_INTERPOLATION_LEGEND,\n N_PLANNING,\n N_UPTAKE_LEGEND,\n NDI_LEGEND,\n NEED_LEGEND,\n NUTRIENT_DISTRIBUTION,\n NUTRIENT_PLANNING, PP_APPLICATION_LEGEND,\n PP_LOG_INTERPOLATION_LEGEND,\n SOIL_GROUP_LEGEND,\n TRACK_LEGEND\n} from '../../ap-map/layers/layer.legends';\nimport {TranslationStore} from '../translation/translation.store';\nimport {GetElementService} from '../../ap-utils/service/ap-get-element.service';\nimport {BaseFertilizationService} from '../../services/data/base-fertilization.service';\nimport {FertilizerStore} from '../base-data/fertilizer.store';\nimport {FertilizationManagementService} from '../../services/data/fertilization-management.service';\nimport {SettingsStore} from '../base-data/settings.store';\nimport {BaseFertilizationPlansLegendData} from '../../ap-map/layers/types/nutrient-planning.types';\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport IMachineBreak = Data.DocuContext.Machine.IMachineBreak;\nimport ICampaignYear = Data.Authentication.ICampaignYear;\nimport IUser = Data.Authentication.IUser;\n\nexport interface ILegendValue {\n title: string;\n color: string;\n value?: number;\n}\n\nexport interface ILegendSelectionItem {\n value: string;\n text: string;\n transformFunction?: (value: number) => number;\n suffix?: string;\n}\n\nexport interface ILegendSelection {\n selectedValue: BehaviorSubject;\n values: ILegendSelectionItem[] | ((...args: string[]) => ILegendSelectionItem[]);\n disabled?: boolean;\n}\n\nexport interface ILegend {\n id: number;\n title: string;\n selectionLists: ILegendSelection[];\n subjects: BehaviorSubject[];\n unit: { [key: string]: string } | string;\n values: { [key: string]: ILegendValue[] } | ILegendValue[] | ((...args: string[]) => ILegendValue[]);\n updateValues: (...args: any[]) => void;\n\n getLastValueElement(): ILegendValue;\n\n getFirstValueElement(): ILegendValue;\n\n getValueElementAt(index: number): ILegendValue | null;\n\n /**\n * Returns all current values from the legend\n */\n getValuesList(): ILegendValue[];\n}\n\nexport interface ILegendState {\n Legends: ILegend[];\n}\n\nexport class MapLegendStore {\n public static DefaultState: ILegendState = {\n Legends: [],\n };\n public onCropTypesChanged = new EventEmitter();\n public onMachineBreaksChanged = new EventEmitter(true);\n public onCampaignYearChange = new EventEmitter(true);\n public onNutrientPlanningChanged = new EventEmitter(undefined);\n public onNPlanningChanged = new EventEmitter(true);\n public onPPApplicationChanged = new EventEmitter(true);\n public onNUptakeChanged = new EventEmitter<{ Min: number, Max: number }>(true);\n public onNdiLegendShow = new EventEmitter(true);\n public onNLogInterpolationLegendChanged = new EventEmitter();\n public onPpLogInterpolationLegendChanged = new EventEmitter();\n\n private readonly _LogLegend: ILegend = null;\n private _nLogInterpolationLegend: ILegend = null;\n private _ppLogInterpolationLegend: ILegend = null;\n private _ndiLegend: ILegend = null;\n private _cropTypeLegend: ILegend = null;\n private _soilGroupLegend: ILegend = null;\n private _trackLegend: ILegend = null;\n private _needLegend: ILegend = null;\n private _nutrientDistributionLegend: ILegend = null;\n private _nutrientPlanningLegend: ILegend = null;\n private _nNeedLegend: ILegend = null;\n private _tskMgmtLegend: ILegend = null;\n private _nPlanningLegend: ILegend = null;\n private _ppApplicationLegend: ILegend = null;\n private _nUptakeLegend: ILegend = null;\n\n constructor(private mapStore: MapStore,\n private settingsStore: SettingsStore,\n private translationStore: TranslationStore,\n private baseFertilizationService: BaseFertilizationService,\n private fertilizerStore: FertilizerStore,\n private elementService: GetElementService,\n public fertilizationManagementService: FertilizationManagementService) {\n this.createNutrientDistributionLegend();\n this.listenRefreshSoilGroupLegend();\n this.listenRefreshTrackLegend();\n this.listenRefreshNeedLegend();\n this.listenRefreshCropTypeLegend();\n this.listenRefreshNutrientPlanningLegend();\n this.listenRefreshNPlanningLegend();\n this.listenRefreshPPApplicationLegend();\n this.listenRefreshNUptakeLegend();\n this.listenRefreshNdiLegend();\n this.listenRefreshNLogInterpolationLegend();\n this.listenRefreshPpLogInterpolationLegend();\n this._LogLegend = LOG_LEGEND();\n }\n\n public get All$(): SafeBehaviorSubject {\n return this.mapStore.Listen(s => s.legends.Legends);\n }\n\n public get All(): ILegend[] {\n return this.All$.getValue();\n }\n\n public get CropTypeLegend(): ILegend {\n return this._cropTypeLegend;\n }\n\n public get CropTypeLegendHasElements(): boolean {\n return Array.isArray(this.CropTypeLegend.values) && this.CropTypeLegend.values.length > 0;\n }\n\n public get SoilGroupLegend(): ILegend {\n return this._soilGroupLegend;\n }\n\n public get NutrientPlanningLegend(): ILegend {\n return this._nutrientPlanningLegend;\n }\n\n public get NPlanningLegend(): ILegend {\n return this._nPlanningLegend;\n }\n\n public get PpApplicationLegend(): ILegend {\n return this._ppApplicationLegend;\n }\n\n public get NutrientDistributionLegend(): ILegend {\n return this._nutrientDistributionLegend;\n }\n\n public get TrackLegend(): ILegend {\n return this._trackLegend;\n }\n\n public get NeedLegend(): ILegend {\n return this._needLegend;\n }\n\n public get LogLegend(): ILegend {\n return this._LogLegend;\n }\n\n public get nLogInterpolationLegend(): ILegend {\n return this._nLogInterpolationLegend;\n }\n\n public get PpLogInterpolationLegend(): ILegend {\n return this._ppLogInterpolationLegend;\n }\n\n public get NNeedLegend(): ILegend {\n return this._nNeedLegend;\n }\n\n public get NdiLegend(): ILegend {\n return this._ndiLegend;\n }\n\n public get NUptakeLegend(): ILegend {\n return this._nUptakeLegend;\n }\n\n public get TaskMgmtLegend(): ILegend {\n return this._tskMgmtLegend;\n }\n\n public set TaskMgmtLegend(value: ILegend) {\n this._tskMgmtLegend = value;\n }\n\n public addLegend(l: ILegend): void {\n if (!l) {\n return;\n }\n this.mapStore.Mutate(s => s.legends.Legends, (o) => {\n o.Replace((d) => d.id === l.id, l);\n return o;\n });\n }\n\n public removeLegend(l: ILegend): void {\n if (!l) {\n return;\n }\n this.mapStore.Mutate(s => s.legends.Legends, (o) => {\n o.RemoveAll((cl) => cl.title === l.title);\n return o;\n });\n }\n\n public refreshLegend(l: ILegend, state: boolean): void {\n if (!l) {\n return;\n }\n this.removeLegend(l);\n if (state) {\n this.addLegend(l);\n }\n }\n\n private listenRefreshCropTypeLegend(): void {\n this.onCropTypesChanged.subscribe((ct) => {\n this._cropTypeLegend = CROP_TYPE_LEGEND(ct.SortBy(['Description'], [ListSortOrder.ASC]));\n this.refreshLegend(this.CropTypeLegend, this.mapStore.Layers.FieldsCropLayer.Visibility && this.CropTypeLegendHasElements);\n });\n }\n\n private createNutrientDistributionLegend(): void {\n this._nutrientDistributionLegend = NUTRIENT_DISTRIBUTION();\n this.refreshLegend(this.NutrientDistributionLegend, this.mapStore.Layers.DistributionLayer.Visibility);\n }\n\n private listenRefreshNutrientPlanningLegend(): void {\n this.onNutrientPlanningChanged\n .subscribe(data => {\n if (!!data) {\n this._nutrientPlanningLegend = NUTRIENT_PLANNING(this.translationStore.FindTranslationForSelectedLanguage.bind(this.translationStore), this.elementService, this.baseFertilizationService, this.fertilizerStore, data);\n this.refreshLegend(this.NutrientPlanningLegend, this.mapStore.Layers.NutrientPlanningLayer.Visibility || this.mapStore.Layers.TaskManagementNutrientLayer.Visibility);\n } else {\n this.removeLegend(this.NutrientPlanningLegend);\n this._nutrientPlanningLegend = null;\n }\n });\n }\n\n private listenRefreshNdiLegend(): void {\n this.onNdiLegendShow\n .subscribe(data => {\n if (!!data) {\n this._ndiLegend = NDI_LEGEND();\n this.refreshLegend(this.NdiLegend, this.mapStore.Layers.NdiLayer.Visibility);\n } else {\n this.removeLegend(this.NdiLegend);\n this._ndiLegend = null;\n }\n });\n }\n\n private listenRefreshNUptakeLegend(): void {\n this.onNUptakeChanged\n .pipe(filter(stats => !!stats))\n .subscribe(stats => {\n this._nUptakeLegend = N_UPTAKE_LEGEND(stats);\n this.refreshLegend(this.NUptakeLegend, this.mapStore.Layers.NUptakeLayer.Visibility);\n });\n }\n\n private listenRefreshTrackLegend(): void {\n combineLatest([\n this.onMachineBreaksChanged.asObservable(),\n this.translationStore.Listen(s => s.loading),\n ])\n .pipe(\n filter(([, translationLoading]) => !translationLoading)\n )\n .subscribe(([machineBreaks]) => {\n this._trackLegend = TRACK_LEGEND(this.mapStore, machineBreaks, this.translationStore.FindTranslationForSelectedLanguage.bind(this.translationStore));\n this.refreshLegend(this.TrackLegend, this.mapStore.Layers.TrackLayer.Visibility);\n });\n }\n\n private listenRefreshNeedLegend(): void {\n combineLatest([\n this.onCampaignYearChange.asObservable(),\n this.settingsStore.FirstSetting$\n ]).pipe(filter(([year, settings]) => !!year && !!settings))\n .subscribe(([year, _]) => {\n this._needLegend = NEED_LEGEND(this.mapStore, this.elementService, year.MaxInitialNeedP, year.MaxInitialNeedK, year.MaxInitialNeedMg, year.MaxInitialNeedPh);\n this.refreshLegend(this.NeedLegend, this.mapStore.Layers.NeedLayer.Visibility);\n });\n }\n\n private listenRefreshNPlanningLegend(): void {\n this.onNPlanningChanged\n .pipe(filter(stats => !!stats))\n .subscribe(stats => {\n this._nPlanningLegend = N_PLANNING(this.translationStore.FindTranslationForSelectedLanguage.bind(this.translationStore), this.fertilizationManagementService, this.fertilizerStore, stats);\n this.refreshLegend(this.NPlanningLegend, this.mapStore.Layers.NApplicationMapLayer.Visibility);\n });\n }\n\n private listenRefreshPPApplicationLegend(): void {\n this.onPPApplicationChanged\n .pipe(filter(stats => !!stats))\n .subscribe(stats => {\n this._ppApplicationLegend = PP_APPLICATION_LEGEND(stats);\n this.refreshLegend(this.PpApplicationLegend, this.mapStore.Layers.PpApplicationMapLayer.Visibility);\n });\n }\n\n private listenRefreshSoilGroupLegend(): void {\n this.translationStore.Listen(s => s.loading)\n .pipe(filter((translationLoading) => !translationLoading))\n .subscribe(_ => {\n this._soilGroupLegend = SOIL_GROUP_LEGEND(this.translationStore.FindTranslationForSelectedLanguage.bind(this.translationStore));\n this.refreshLegend(this.SoilGroupLegend, this.mapStore.Layers.SoilGroupLayer.Visibility);\n });\n }\n\n private listenRefreshNLogInterpolationLegend(): void {\n this.onNLogInterpolationLegendChanged\n .pipe(filter(user => !!user))\n .subscribe(user => {\n this._nLogInterpolationLegend = N_LOG_INTERPOLATION_LEGEND(user);\n this.refreshLegend(this.nLogInterpolationLegend, this.mapStore.Layers.NRaster.Visibility);\n });\n }\n\n private listenRefreshPpLogInterpolationLegend(): void {\n this.onPpLogInterpolationLegendChanged\n .pipe(filter(user => !!user))\n .subscribe(user => {\n this._ppLogInterpolationLegend = PP_LOG_INTERPOLATION_LEGEND(user);\n this.refreshLegend(this.PpLogInterpolationLegend, this.mapStore.Layers.PpRaster.Visibility);\n });\n }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {IStateStore} from '../../ap-interface';\nimport {ApMapInstance} from '../../ap-map';\nimport {ILastView} from '../../ap-interface/interfaces/map/lastview';\nimport {LanguageStore} from '../translation/language.store';\nimport {TranslationStore} from '../translation/translation.store';\nimport Map from 'ol/Map';\nimport {Coordinate} from 'ol/coordinate';\nimport {ColorLegendStore} from './color.legend.store';\nimport {GetSoilSampleClassColorService} from '../../ap-utils/service/get-soil-sample-class-color.service';\nimport {MapLayerControlStore} from './map.layer.control.store';\nimport {ILayerState, MapLayerStore} from './map.layer.store';\nimport {IGeometryEditorState, MapEditStore} from './map.edit.store';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ILegendState, MapLegendStore} from './map.legend.store';\nimport {FieldStore} from '../farm/field.store';\nimport {BehaviorSubject} from 'rxjs';\nimport {GetElementService} from '../../ap-utils/service/ap-get-element.service';\nimport {BaseFertilizationService} from '../../services/data/base-fertilization.service';\nimport {FertilizerStore} from '../base-data/fertilizer.store';\nimport {FertilizationManagementService} from '../../services/data/fertilization-management.service';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport {SettingsStore} from '../base-data/settings.store';\nimport {MapLayerTooltipStore} from './map.layer.tooltip.store';\nimport IField = Data.FieldManagement.IField;\n\nexport interface IMapStore extends IStateStore {\n lastView: ILastView;\n fieldSelectionOn: boolean;\n fieldSelection: IField[];\n drawCropColor: boolean;\n drawSelectedStyle: boolean;\n layer: ILayerState;\n editor: IGeometryEditorState;\n legends: ILegendState;\n mergeFieldResult: string;\n splitFieldResult: any[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class MapStore extends Store {\n public Layers: MapLayerStore = null;\n public Editor: MapEditStore = null;\n public Legends: MapLegendStore = null;\n public FieldStore$ = new BehaviorSubject(null);\n public isMap = false;\n public mapInitialized = new EventEmitter();\n\n constructor(public backend: ApSignalrService,\n private languageStore: LanguageStore,\n private settingsStore: SettingsStore,\n private translationStore: TranslationStore,\n private colorLegendStore: ColorLegendStore,\n private mapLayerControl: MapLayerControlStore,\n private fertilizerStore: FertilizerStore,\n private mapLayerTooltipStore: MapLayerTooltipStore,\n private elementService: GetElementService,\n private baseFertilizationService: BaseFertilizationService,\n private getSoilSampleClassColorService: GetSoilSampleClassColorService,\n public fertilizationManagementService: FertilizationManagementService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n lastView: null,\n fieldSelectionOn: false,\n fieldSelection: [],\n drawCropColor: true,\n drawSelectedStyle: true,\n layer: MapLayerStore.DefaultState,\n editor: MapEditStore.DefaultState,\n legends: MapLegendStore.DefaultState,\n mergeFieldResult: null,\n splitFieldResult: null\n }, true);\n this.Layers = new MapLayerStore(this, this.FieldStore$, this.mapLayerControl, this.colorLegendStore,\n this.getSoilSampleClassColorService, this.languageStore, this.translationStore, this.mapLayerTooltipStore);\n this.Editor = new MapEditStore(this);\n this.Legends = new MapLegendStore(this, this.settingsStore, this.translationStore,\n this.baseFertilizationService, this.fertilizerStore, this.elementService,\n this.fertilizationManagementService);\n }\n\n /**\n * get the Center Point of the Map\n */\n public get Center(): Coordinate {\n return ApMapInstance.mapRef ? ApMapInstance.mapRef.getView().getCenter() : null;\n }\n\n public get DrawCropColor$(): SafeBehaviorSubject {\n return this.Listen(s => s.drawCropColor);\n }\n\n public get DrawSelectedStyle$(): SafeBehaviorSubject {\n return this.Listen(s => s.drawSelectedStyle);\n }\n\n public get LastView(): ILastView {\n return super.Listen(s => s.lastView).getValue();\n }\n\n public get Map(): Map {\n return ApMapInstance.mapRef;\n }\n\n public EnableDistributionView(): void {\n this.DrawCropColor(false);\n this.DrawSelectedStyle(false);\n }\n\n public DisableDistributionView(): void {\n this.DrawCropColor(true);\n this.DrawSelectedStyle(true);\n }\n\n public DrawCropColor(value: boolean): void {\n this.Mutate(s => s.drawCropColor, () => value);\n }\n\n public DrawSelectedStyle(value: boolean): void {\n this.Mutate(s => s.drawSelectedStyle, () => value);\n }\n\n public SetLastView(view: ILastView): void {\n super.Mutate(s => s.lastView, () => view);\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {\n ApCustomTypes,\n NetTypes,\n NFertilizationBookingsLoad,\n NFertilizationBookingsLoadSuccess,\n NFertilizationBookingsSave,\n NFertilizationBookingsUpdate,\n NFertilizationBookingsUpdateSuccess,\n NFertilizationBookPlanBook,\n NFertilizationDetailsLoadSuccess,\n NFertilizationLoadSuccess,\n NFertilizationLogfilesLoad,\n NFertilizationLogfilesLoadSuccess,\n NFertilizationLogfilesRemap,\n NFertilizationLogfilesRemapComplete,\n NFertilizationLogfilesSave,\n NFertilizationLogfilesUpdate,\n NFertilizationLogfilesUpdateSuccess,\n NFertilizationNeedValueGet,\n NFertilizationNeedValueGetSuccess,\n NFertilizationNeedValueSet,\n NFertilizationNRestrictionReportDownload,\n NFertilizationNRestrictionReportDownloadFail,\n NFertilizationNRestrictionReportDownloadSuccess,\n NFertilizationPlanBooksDelete,\n NFertilizationSummaryDelete,\n NFertilizationUnBookPlanBook,\n NPlanningCropEcN,\n NPlanningCropEcNSuccess,\n NPlanningCropEcSn,\n NPlanningCropEcSnSuccess,\n NPlanningRasterCreateJob,\n NPlanningRasterStatisticFail,\n NPlanningRasterStatisticRefresh\n} from 'invoker-transport';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {ObjectFactory, SafeBehaviorSubject} from 'ts-tooling';\nimport * as download from 'downloadjs';\nimport INFertilizationDetail = Data.NFertilization.INFertilizationDetail;\nimport INFertilizationNeedValue = Data.NFertilization.INFertilizationNeedValue;\nimport INFertilizationPlanBook = Data.TaskManagement.INFertilizationPlanBook;\nimport INFertilizationSummary = Data.TaskManagement.INFertilizationSummary;\nimport IDatasetFieldMap = Data.Sensor.IDatasetFieldMap;\nimport IGuid = System.IGuid;\nimport ICropEcN = Data.NFertilization.ICropEcN;\nimport ICropEcSn = Data.NFertilization.ICropEcSn;\nimport IFieldNutrientPlanningStatistic = Data.Nutrients.IFieldNutrientPlanningStatistic;\nimport IRasterCreationResult = Data.Nutrients.IRasterCreationResult;\nimport IReportData = Agriport.Excel.Factory.InputData.NRestriction.IReportData;\nimport INPlanningData = Data.NFertilization.INPlanningData;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface INFertilizationStore extends IStateStore {\n details: INFertilizationDetail[];\n planBooks: INFertilizationPlanBook[];\n fertilizationNeedValue: INFertilizationNeedValue[];\n logfiles: IDatasetFieldMap[];\n logfilesLoading: boolean;\n planBooksLoading: boolean;\n cropEcSn: ICropEcSn[];\n cropEcN: ICropEcN[];\n fieldNPlanningStatistic: IFieldNutrientPlanningStatistic[];\n nRestrictionsReportDownloadSuccess: boolean | undefined;\n}\n\n@Injectable({providedIn: 'root'})\nexport class NFertilizationStore extends Store {\n static CropEcNeedLegend = new BehaviorSubject<{\n [key: number]: { min: number, max: number, values: number[] }[]\n }>({});\n static CropEcUptakeLegend = new BehaviorSubject<{\n [key: number]: { min: number, max: number, values: number[] }[]\n }>({});\n\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n details: [],\n fertilizationNeedValue: [],\n planBooks: [],\n logfiles: [],\n logfilesLoading: false,\n planBooksLoading: false,\n cropEcSn: [],\n cropEcN: [],\n fieldNPlanningStatistic: [],\n nRestrictionsReportDownloadSuccess: undefined\n });\n\n backend.registerObservable(NFertilizationLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(NFertilizationDetailsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.details, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(NFertilizationNeedValueGetSuccess).subscribe(d => {\n super.Mutate(s => s.fertilizationNeedValue, () => d.Data);\n });\n\n backend.registerObservable(NFertilizationBookingsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.planBooks, () => d.Data);\n super.Mutate(s => s.planBooksLoading, () => false);\n });\n\n backend.registerObservable(NFertilizationLogfilesLoadSuccess).subscribe((d) => {\n super.Mutate(s => s.logfiles, () => d.Data);\n super.Mutate(s => s.logfilesLoading, () => false);\n });\n\n backend.registerObservable(NFertilizationLogfilesUpdateSuccess).subscribe((d) => {\n if (!d.Data || d.Data.length <= 0) {\n return;\n }\n this.Mutate(s => s['logfiles'], o => {\n for (const updatedLogfile of d.Data) {\n const position = o?.FindIndex(i => !!i && !!updatedLogfile && i.Id === updatedLogfile.Id);\n if (position >= 0) {\n o[position] = updatedLogfile;\n } else {\n o.Add(updatedLogfile);\n }\n }\n return o.filter((logfile) => logfile != null);\n });\n });\n\n backend.registerObservable(NFertilizationBookingsUpdateSuccess).subscribe((d) => {\n if (!d.Data || d.Data.length <= 0) {\n return;\n }\n this.Mutate(s => s['planBooks'], o => {\n for (const updatedPlanBook of d.Data) {\n if (updatedPlanBook == null) {\n continue;\n }\n const position = o?.FindIndex(i => !!i && !!updatedPlanBook && i.Id === updatedPlanBook.Id);\n if (position >= 0) {\n o[position] = updatedPlanBook;\n } else {\n o.Add(updatedPlanBook);\n }\n }\n return o;\n });\n });\n\n backend.registerObservable(NPlanningCropEcNSuccess).subscribe((d) => {\n super.Mutate(s => s.cropEcN, () => d.Data);\n });\n\n backend.registerObservable(NPlanningCropEcSnSuccess).subscribe((d) => {\n super.Mutate(s => s.cropEcSn, () => d.Data);\n });\n\n super.Listen(s => s.cropEcN).subscribe((n) => {\n const legend = this.getCropEcNeedLegend(n);\n NFertilizationStore.CropEcNeedLegend.next(legend);\n });\n\n super.Listen(s => s.cropEcSn).subscribe((sn) => {\n const legend = this.getCropEcUptakeLegend(sn);\n NFertilizationStore.CropEcUptakeLegend.next(legend);\n });\n\n backend.registerObservable(NPlanningRasterStatisticRefresh).subscribe(d => {\n const statisticsToAdd = JSON.parse(d.Data) as IFieldNutrientPlanningStatistic[];\n super.Mutate(s => s.fieldNPlanningStatistic, o => {\n if (o.Find(i => i?.FieldGeomId === statisticsToAdd[0]?.FieldGeomId)) {\n o = o.RemoveAll(i => i.FieldGeomId === statisticsToAdd[0].FieldGeomId);\n o = o.AddRange(statisticsToAdd);\n } else {\n o = o.AddRange(statisticsToAdd);\n }\n return o;\n });\n });\n\n backend.registerObservable(NPlanningRasterStatisticFail).subscribe(d => {\n const result = JSON.parse(d.Data) as IRasterCreationResult;\n super.Mutate(s => s.fieldNPlanningStatistic, o => {\n if (o.Find(i => i?.FieldGeomId === result?.Id)) {\n const stat = o.Find(i => i?.FieldGeomId === result?.Id)[0];\n stat.ErrorText = result.Message;\n o = o.Replace(i => i.FieldGeomId === result.Id, stat);\n } else {\n const err = {FieldGeomId: result.Id, ErrorText: result.Message} as IFieldNutrientPlanningStatistic;\n o = o.Add(err);\n }\n return o;\n });\n });\n\n backend.registerObservable(NFertilizationLogfilesRemapComplete).subscribe(() => {\n this.LoadLogfiles();\n });\n\n backend.registerObservable(NFertilizationNRestrictionReportDownloadSuccess).subscribe(d => {\n super.Mutate(s => s.nRestrictionsReportDownloadSuccess, () => true);\n super.Mutate(s => s.nRestrictionsReportDownloadSuccess, () => undefined);\n download(d.Data[1], d.Data[0], 'application/excel');\n });\n\n backend.registerObservable(NFertilizationNRestrictionReportDownloadFail).subscribe(() => {\n super.Mutate(s => s.nRestrictionsReportDownloadSuccess, () => false);\n super.Mutate(s => s.nRestrictionsReportDownloadSuccess, () => undefined);\n });\n\n this.LoadCropEcUptake();\n this.LoadCropEcNeed();\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n public get LogfilesLoading$(): SafeBehaviorSubject {\n return super.Listen(s => s.logfilesLoading);\n }\n\n public get PlanBooks$(): SafeBehaviorSubject {\n return this.Listen((s) => s.planBooks);\n }\n\n public get PlanBooks(): INFertilizationPlanBook[] {\n return this.Listen((s) => s.planBooks).getValue();\n }\n\n public get Logfiles$(): SafeBehaviorSubject {\n return this.Listen((s) => s.logfiles);\n }\n\n public get Logfiles(): IDatasetFieldMap[] {\n return this.Listen((s) => s.logfiles).getValue();\n }\n\n public LoadCropEcUptake(): void {\n this.DispatchBackend(new NPlanningCropEcSn([]));\n }\n\n public LoadCropEcNeed(): void {\n this.DispatchBackend(new NPlanningCropEcN([]));\n }\n\n public LoadNFertilizationPlanningSummaries(): void {\n if (super.Listen(s => s.planBooksLoading).getValue()) {\n return;\n }\n super.Mutate(s => s.planBooksLoading, () => true);\n super.Mutate(s => s.planBooks, () => []);\n this.DispatchBackend(new NFertilizationBookingsLoad([]));\n }\n\n public LoadLogfiles(): void {\n if (super.Listen(s => s.logfilesLoading).getValue()) {\n return;\n }\n super.Mutate(s => s.logfilesLoading, () => true);\n super.Mutate(s => s.logfiles, () => []);\n this.DispatchBackend(new NFertilizationLogfilesLoad([]));\n }\n\n public GetPlanningById(id: string): INFertilizationPlanBook {\n return ObjectFactory.Copy(\n this.Listen(s => s.planBooks).getValue().Find((pB) => pB?.Id === id));\n }\n\n public GetPlanningBySummaryId(id: string): INFertilizationPlanBook[] {\n return ObjectFactory.Copy(\n this.Listen(s => s.planBooks).getValue().FindAll((pB) => pB.Summary?.Id === id));\n }\n\n public GetNeeds$(campaignYear: number): Observable {\n return super.Listen(s => s.fertilizationNeedValue).pipe(\n map((needs) =>\n needs.filter((need) =>\n need.CampaignYear === campaignYear)\n )\n );\n }\n\n public GetNeeds(campaignYear: number): INFertilizationNeedValue[] {\n return super.Listen(s => s.fertilizationNeedValue).getValue().filter(\n (need) => need.CampaignYear === campaignYear);\n }\n\n public Planning$(): Observable {\n return super.Listen(s => s.planBooks).pipe(\n map((planBooks) =>\n planBooks.filter((planBook) => {\n return !planBook.DeletedBy && !planBook.BookedBy;\n })\n )\n );\n }\n\n public Bookings$(): Observable {\n return super.Listen(s => s.planBooks).pipe(\n map((planBooks) =>\n planBooks.filter((planBook) => planBook && !planBook.DeletedBy && !!planBook.BookedBy)\n )\n );\n }\n\n public getFertilizationNeedValue(): void {\n this.DispatchBackend(new NFertilizationNeedValueGet([]));\n }\n\n public setFertilizationNeedValue(values: INFertilizationNeedValue[]): void {\n this.DispatchBackend(new NFertilizationNeedValueSet([\n {Name: 'values', Type: ApCustomTypes.Data_NFertilization_NFertilizationNeedValue + '[]', Value: values}\n ]));\n }\n\n public SaveNFertilizationPlanning(planBooks: INFertilizationPlanBook[]): void {\n this.DispatchBackend(new NFertilizationBookingsSave([\n {Name: 'planBooks', Type: ApCustomTypes.Data_TaskManagement_NFertilizationPlanBook + '[]', Value: planBooks}\n ]));\n }\n\n public UpdateNFertilizationPlanning(planBooks: INFertilizationPlanBook[]): void {\n this.DispatchBackend(new NFertilizationBookingsUpdate([\n {Name: 'planBooks', Type: ApCustomTypes.Data_TaskManagement_NFertilizationPlanBook + '[]', Value: planBooks}\n ]));\n }\n\n public DeleteNFertilizationSummaries(summaries: INFertilizationSummary[]): void {\n this.DispatchBackend(new NFertilizationSummaryDelete([\n {Name: 'summaries', Type: ApCustomTypes.Data_TaskManagement_NFertilizationSummary + '[]', Value: summaries}\n ]));\n }\n\n public DeleteNFertilizationPlanBooks(planBooks: INFertilizationPlanBook[]): void {\n this.DispatchBackend(new NFertilizationPlanBooksDelete([\n {Name: 'planBooks', Type: ApCustomTypes.Data_TaskManagement_NFertilizationPlanBook + '[]', Value: planBooks}\n ]));\n }\n\n public SaveLogfiles(datasetFieldMaps: IDatasetFieldMap[]): void {\n super.Mutate(s => s.logfilesLoading, () => true);\n this.DispatchBackend(new NFertilizationLogfilesSave([\n {Name: 'datasetFieldMaps', Type: ApCustomTypes.Data_Sensor_DatasetFieldMap + '[]', Value: datasetFieldMaps}\n ]));\n }\n\n public UpdateLogfiles(datasetFieldMaps: IDatasetFieldMap[]): void {\n this.DispatchBackend(new NFertilizationLogfilesUpdate([\n {Name: 'datasetFieldMaps', Type: ApCustomTypes.Data_Sensor_DatasetFieldMap + '[]', Value: datasetFieldMaps}\n ]));\n }\n\n public GetLogfilesByPlanBookId(id: string): IDatasetFieldMap[] {\n return super.Listen(s => s.logfiles).getValue().filter(l => l.NPlanBook?.Id === id);\n }\n\n public BookPlanBooks(data: { planBook: INFertilizationPlanBook, logfile: IDatasetFieldMap }[]): void {\n const planBooks = data.map((d) => d.planBook);\n const logfiles = data.map((d) => d.logfile);\n this.DispatchBackend(new NFertilizationBookPlanBook([\n {Name: 'planBooks', Type: ApCustomTypes.Data_TaskManagement_NFertilizationPlanBook + '[]', Value: planBooks},\n {Name: 'logfiles', Type: ApCustomTypes.Data_Sensor_DatasetFieldMap + '[]', Value: logfiles}\n ]));\n }\n\n public UnBookPlanBooks(data: { planBook: INFertilizationPlanBook, logfile: IDatasetFieldMap }[]): void {\n const planBooks = data.map((d) => d.planBook);\n const logfiles = data.map((d) => d.logfile);\n this.DispatchBackend(new NFertilizationUnBookPlanBook([\n {Name: 'planBooks', Type: ApCustomTypes.Data_TaskManagement_NFertilizationPlanBook + '[]', Value: planBooks},\n {Name: 'logfiles', Type: ApCustomTypes.Data_Sensor_DatasetFieldMap + '[]', Value: logfiles}\n ]));\n }\n\n public getCropEcUptakeLegend(sn: ICropEcSn[]): { [key: number]: { min: number, max: number, values: number[] }[] } {\n const result: { [key: number]: ({ min: number, max: number, values: number[] })[] } = {};\n for (const cropEcSn of sn) {\n for (const key of cropEcSn.CropKeys) {\n if (result[key] === undefined) {\n result[key] = [];\n }\n result[key].push(({\n min: cropEcSn.EcMin,\n max: cropEcSn.EcMax,\n values: [\n cropEcSn.Sn1, cropEcSn.Sn2, cropEcSn.Sn3,\n cropEcSn.Sn4, cropEcSn.Sn5, cropEcSn.Sn6,\n cropEcSn.Sn7, cropEcSn.Sn8, cropEcSn.Sn9\n ]\n }));\n result[key] = result[key].sort((p, n) => p.min - n.min);\n }\n }\n return result;\n }\n\n public getPlanningsBySummaryId(summaryId: string | IGuid): INFertilizationPlanBook[] {\n return this.Listen(s => s.planBooks).getValue().filter((pB) => pB.Summary?.Id === summaryId);\n }\n\n public getCropEcNeedLegend(n: ICropEcN[]): { [key: number]: { min: number, max: number, values: number[] }[] } {\n const result: { [key: number]: ({ min: number, max: number, values: number[] })[] } = {};\n for (const cropEcN of n) {\n for (const key of cropEcN.CropKeys) {\n if (result[key] === undefined) {\n result[key] = [];\n }\n result[key].push(({\n min: cropEcN.EcMin,\n max: cropEcN.EcMax,\n values: [\n cropEcN.N1, cropEcN.N2, cropEcN.N3,\n cropEcN.N4, cropEcN.N5, cropEcN.N6,\n cropEcN.N7, cropEcN.N8, cropEcN.N9\n ]\n }));\n result[key] = result[key].sort((prev, next) => prev.min - next.min);\n }\n }\n return result;\n }\n\n public CreateNPlanningRasterJob(planningData: INPlanningData): void {\n super.Mutate(s => s.fieldNPlanningStatistic, o => {\n return o.RemoveAll(i => i.FieldGeomId === planningData.FieldGeomId);\n });\n this.DispatchBackend(new NPlanningRasterCreateJob([\n {Name: 'planningData', Type: ApCustomTypes.Data_NFertilization_NPlanningData, Value: planningData}\n ]));\n }\n\n public clearNPlanningStatistic(): void {\n super.Mutate(s => s.fieldNPlanningStatistic, () => []);\n }\n\n public remapLogfile(datasetIds: any | any[]): void {\n if (!Array.isArray(datasetIds)) {\n datasetIds = [datasetIds];\n }\n this.DispatchBackend(new NFertilizationLogfilesRemap([\n {\n Name: 'datasetIds',\n Type: NetTypes.GUID + '[]',\n Value: datasetIds.filter((v: any, i: any, a: any) => a.indexOf(v) === i)\n }\n ]));\n }\n\n public downloadNRestrictionReport(headline: string, bookName: string, reportData: IReportData): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new NFertilizationNRestrictionReportDownload([\n {Name: 'headline', Type: NetTypes.STRING, Value: headline},\n {Name: 'bookName', Type: NetTypes.STRING, Value: bookName},\n {\n Name: 'reportData',\n Type: ApCustomTypes.Agriport_Excel_Factory_InputData_NRestriction_ReportData,\n Value: reportData\n }\n ]));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {IStateStore} from '../../ap-interface';\nimport {NetTypes, NStatisticLoad, NStatisticLoadSuccess} from 'invoker-transport';\nimport {filter} from 'rxjs/operators';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport INdiStatistic = Data.NDI.INdiStatistic;\nimport IGuid = System.IGuid;\n\nexport interface INdiState extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class NdiStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n });\n\n backend.registerObservable(NStatisticLoadSuccess)\n .pipe(filter(d => !!d && Array.isArray(d.Data)))\n .subscribe(d => {\n this.Mutate(s => s.data, () => d.Data as INdiStatistic[]);\n this.SetLoadFinishState();\n });\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return this.Listen(s => s.loading);\n }\n\n public get NdiStatistics$(): SafeBehaviorSubject {\n return this.Listen(s => s.data);\n }\n\n public get NdiStatistics(): INdiStatistic[] {\n return this.NdiStatistics$.getValue();\n }\n\n public loadNStatistics(fieldGeomIds: IGuid[]): void {\n this.Mutate(s => s.data, () => []);\n this.SetLoadState();\n this.backend.send(new NStatisticLoad([\n {Type: NetTypes.GUID + '[]', Name: 'fieldGeomIds', Value: fieldGeomIds},\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n FieldNutrientDistributionsLoad,\n FieldNutrientDistributionsLoadSuccess,\n FieldNutrientDistributionStatisticDataExcelExport,\n FieldNutrientDistributionStatisticDataExcelExportFail,\n FieldNutrientDistributionStatisticDataExcelExportSuccess,\n NetTypes,\n SampleMethodsLoad,\n SampleMethodsLoadSuccess,\n SampleRegionsLoad,\n SampleRegionsLoadSuccess\n} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport * as download from 'downloadjs';\nimport IFieldNutrientsDistribution = Data.Nutrients.IFieldNutrientsDistribution;\nimport ISampleMethod = Data.Nutrients.ISampleMethod;\nimport ISampleRegion = Data.Nutrients.ISampleRegion;\nimport IGuid = System.IGuid;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IFieldNutrientDistributionStore extends IStateStore {\n sampleMethods: ISampleMethod[];\n sampleRegions: ISampleRegion[];\n exportedStatisticFile: ArrayBuffer;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FieldNutrientDistributionStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n sampleMethods: [],\n sampleRegions: [],\n exportedStatisticFile: null\n });\n backend.registerObservable(FieldNutrientDistributionsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(SampleMethodsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.sampleMethods, () => d.Data);\n });\n backend.registerObservable(SampleRegionsLoadSuccess).subscribe(d => {\n super.Mutate(s => s.sampleRegions, () => d.Data);\n });\n backend.registerObservable(FieldNutrientDistributionStatisticDataExcelExportSuccess).subscribe(d => {\n super.Mutate(s => s.exportedStatisticFile, () => d.Data);\n super.SetLoadFinishState();\n if (d.Data && d.Data[0] && d.Data[1]) {\n download(d.Data[1], `${d.Data[0]}.xlsx`, 'application/excel');\n }\n });\n backend.registerObservable(FieldNutrientDistributionStatisticDataExcelExportFail).subscribe(() => {\n super.Mutate(s => s.exportedStatisticFile, () => null);\n super.SetLoadFailState();\n });\n }\n\n public get Distributions$(): SafeBehaviorSubject {\n return super.Listen(s => s.data);\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n public get SampleMethods$(): SafeBehaviorSubject {\n return super.Listen(s => s.sampleMethods);\n }\n\n public get SampleMethods(): ISampleMethod[] {\n return this.SampleMethods$.getValue();\n }\n\n public get SampleRegions$(): SafeBehaviorSubject {\n return super.Listen(s => s.sampleRegions);\n }\n\n public get SampleRegions(): ISampleRegion[] {\n return this.SampleRegions$.getValue();\n }\n\n public loadFieldNutrientDistributions(fieldGeomIds: string[]): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new FieldNutrientDistributionsLoad([\n {Name: 'fieldGeomIds', Type: NetTypes.GUID + '[]', Value: fieldGeomIds},\n ]));\n }\n\n public loadSampleMethods(): void {\n this.DispatchBackend(new SampleMethodsLoad([]));\n }\n\n public loadSampleRegions(): void {\n this.DispatchBackend(new SampleRegionsLoad([]));\n }\n\n public statisticDataExcelExport(fileName: string, fieldGeometryIds: IGuid[]): void {\n super.Mutate(s => s.exportedStatisticFile, () => null);\n super.SetLoadState();\n this.DispatchBackend(new FieldNutrientDistributionStatisticDataExcelExport([\n {Name: 'fileName', Type: NetTypes.STRING, Value: fileName},\n {Name: 'fieldGeometryIds', Type: NetTypes.GUID + '[]', Value: fieldGeometryIds},\n ]));\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IFieldNutrientPlanningStatistic = Data.Nutrients.IFieldNutrientPlanningStatistic;\nimport IRasterCreationResult = Data.Nutrients.IRasterCreationResult;\n\nexport enum ApNutrientActions {\n NUTRIENT_PLANNING_START = '[nutrient_planning] start',\n NUTRIENT_PLANNING_FAIL = '[nutrient_planning] fail',\n NUTRIENT_PLANNING_SUCCESS = '[nutrient_planning] success',\n NUTRIENT_PLANNING_RASTER_STATISTIC_LOAD = '[nutrient_planning] get raster statistic load',\n NUTRIENT_PLANNING_RASTER_STATISTIC_LOAD_SUCCESS = '[nutrient_planning] get raster statistic load success',\n NUTRIENT_PLANNING_RASTER_STATISTIC_REFRESH = '[nutrient_planning] raster statistic refresh',\n NUTRIENT_PLANNING_RASTER_STATISTIC_FAIL = '[nutrient_planning] raster statistic fail',\n NUTRIENT_PLANNING_PACKAGE_START = '[nutrient_planning] start package',\n NUTRIENT_PLANNING_PACKAGE_FAIL = '[nutrient_planning] fail package',\n NUTRIENT_PLANNING_PACKAGE_SUCCESS = '[nutrient_planning] success package',\n}\n\nexport class NutrientPlanningPackageStart implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_PACKAGE_START;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class NutrientPlanningPackageFail implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_PACKAGE_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class NutrientPlanningPackageSuccess implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_PACKAGE_SUCCESS;\n\n constructor(public payload: string) {\n }\n}\n\nexport class NutrientPlanningStart implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_START;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class NutrientPlanningFail implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class NutrientPlanningSuccess implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_SUCCESS;\n\n constructor(public payload: string) {\n }\n}\n\nexport class NutrientPlanningRasterStatisticLoad implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_RASTER_STATISTIC_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class NutrientPlanningRasterStatisticLoadSuccess implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_RASTER_STATISTIC_LOAD_SUCCESS;\n\n constructor(public payload: IFieldNutrientPlanningStatistic[]) {\n }\n}\n\nexport class NutrientPlanningRasterStatisticRefresh implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_RASTER_STATISTIC_REFRESH;\n\n constructor(public payload: IFieldNutrientPlanningStatistic[]) {\n }\n}\n\nexport class NutrientPlanningRasterStatisticFail implements IAction {\n readonly type = ApNutrientActions.NUTRIENT_PLANNING_RASTER_STATISTIC_FAIL;\n\n constructor(public payload: IRasterCreationResult) {\n }\n}\n","import {Injectable} from '@angular/core';\nimport * as download from 'downloadjs';\nimport {\n NetTypes,\n NutrientPlanningFail,\n NutrientPlanningPackageSuccess,\n NutrientPlanningRasterStatisticFail,\n NutrientPlanningRasterStatisticLoadSuccess,\n NutrientPlanningRasterStatisticRefresh,\n NutrientPlanningStart,\n NutrientPlanningSuccess\n} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {Store} from '../index';\nimport {IStateStore} from '../../ap-interface';\nimport {NutrientPlanningPackageStart} from '../../../../projects/invoker-transport/src/lib/actions/nutrients';\nimport {MapFactoryRequestor} from '../../map-factory/map-factory-requestor';\nimport IFieldNutrientPlanningStatistic = Data.Nutrients.IFieldNutrientPlanningStatistic;\nimport IRasterCreationResult = Data.Nutrients.IRasterCreationResult;\nimport IGuid = System.IGuid;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface INutrientStore extends IStateStore {\n fieldNutrientPlanningStatistic: IFieldNutrientPlanningStatistic[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class NutrientStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n fieldNutrientPlanningStatistic: [],\n });\n backend.registerObservable(NutrientPlanningPackageSuccess).subscribe(d => {\n MapFactoryRequestor.getPackage(d.Data).then(s => {\n download(s, `${d.Data}.zip`, 'application/zip');\n }).catch(err => console.warn(`download of package ${d.Data} fails`, err));\n });\n backend.registerObservable(NutrientPlanningSuccess).subscribe(_ => {\n });\n backend.registerObservable(NutrientPlanningRasterStatisticRefresh).subscribe(d => {\n const statisticsToAdd = JSON.parse(d.Data) as IFieldNutrientPlanningStatistic[];\n super.Mutate(s => s.fieldNutrientPlanningStatistic, o => {\n if (o.Find(i => i?.FieldGeomId === statisticsToAdd[0]?.FieldGeomId)) {\n o = o.RemoveAll(i => i.FieldGeomId === statisticsToAdd[0].FieldGeomId);\n o = o.AddRange(statisticsToAdd);\n } else {\n o = o.AddRange(statisticsToAdd);\n }\n return o;\n });\n });\n backend.registerObservable(NutrientPlanningRasterStatisticFail).subscribe(d => {\n const result = JSON.parse(d.Data) as IRasterCreationResult;\n super.Mutate(s => s.fieldNutrientPlanningStatistic, o => {\n if (o.Find(i => !!i && !!result && i.FieldGeomId === result.Id)) {\n const stat = o.Find(i => i.FieldGeomId === result.Id)[0];\n if (stat) {\n stat.ErrorText = result.Message;\n o = o.Replace(i => i.FieldGeomId === result.Id, stat);\n }\n } else {\n const err = {FieldGeomId: result.Id, ErrorText: result.Message} as IFieldNutrientPlanningStatistic;\n o = o.Add(err);\n }\n return o;\n });\n });\n backend.registerObservable(NutrientPlanningFail).subscribe(_ => {\n });\n backend.registerObservable(NutrientPlanningRasterStatisticLoadSuccess).subscribe(d => {\n const statisticsToAdd = d.Data as IFieldNutrientPlanningStatistic[];\n super.Mutate(s => s.fieldNutrientPlanningStatistic, o => {\n for (const stat of statisticsToAdd) {\n o.Replace(i => i.FieldGeomId === stat.FieldGeomId, stat);\n }\n return o;\n });\n });\n }\n\n public get FieldNutrientPlanningStatistic$(): SafeBehaviorSubject {\n return super.Listen(s => s.fieldNutrientPlanningStatistic);\n }\n\n public startNutrientPlanning(planId: IGuid, fieldGeomId: IGuid, leadNutrient: number, fertilizerId: number, operationMode: number, amount: number, amountPercent: number, minValue: number, hasMinValue: boolean, maxValue: number, hasMaxValue: boolean, defaultValue: number, constantValue: number): void {\n this.removeNutrientPlanningStatisticFromStore(planId);\n this.DispatchBackend(new NutrientPlanningStart([\n {Name: 'planId', Type: NetTypes.GUID, Value: planId},\n {Name: 'fieldGeomId', Type: NetTypes.GUID, Value: fieldGeomId},\n {Name: 'leadNutrient', Type: NetTypes.INT, Value: leadNutrient},\n {Name: 'fertilizerId', Type: NetTypes.INT, Value: fertilizerId},\n {Name: 'operationMode', Type: NetTypes.INT, Value: operationMode},\n {Name: 'amount', Type: NetTypes.FLOAT, Value: amount},\n {Name: 'amountPercent', Type: NetTypes.FLOAT, Value: amountPercent},\n {Name: 'minValue', Type: NetTypes.FLOAT, Value: minValue},\n {Name: 'hasMinValue', Type: NetTypes.BOOL, Value: hasMinValue},\n {Name: 'maxValue', Type: NetTypes.FLOAT, Value: maxValue},\n {Name: 'hasMaxValue', Type: NetTypes.BOOL, Value: hasMaxValue},\n {Name: 'defaultValue', Type: NetTypes.FLOAT, Value: defaultValue},\n {Name: 'constantValue', Type: NetTypes.FLOAT, Value: constantValue}\n ]));\n }\n\n public removeNutrientPlanningStatisticFromStore(planId: IGuid): void {\n super.Mutate(s => s.fieldNutrientPlanningStatistic, o => {\n return o.RemoveAll(i => i.PlanId === planId);\n });\n }\n\n public clearNutrientPlanningStatistic(): void {\n super.Mutate(s => s.fieldNutrientPlanningStatistic, () => []);\n }\n\n public createNutrientPlanningPackage(summaryId: IGuid): void {\n this.DispatchBackend(new NutrientPlanningPackageStart([\n {Name: 'summaryId', Type: NetTypes.GUID, Value: summaryId}\n ]));\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IRbStatistic = Data.Nutrients.IRbStatistic;\n\nexport enum ApRbActions {\n RB_CREATE = '[rb] create',\n RB_CREATE_FAIL = '[rb] create fail',\n RB_CREATE_SUCCESS = '[rb] create success',\n RB_LOAD = '[rb] load',\n RB_LOAD_SUCCESS = '[rb] load success',\n RB_LOAD_FAIL = '[rb] load fail',\n RB_CHECK_FIELD = '[rb] check',\n RB_CHECK_FIELD_SUCCESS = '[rb] check success',\n RB_CHECK_FIELD_FAIL = '[rb] check fail',\n RB_REFRESH = '[rb] refresh'\n}\n\nexport class RbCreate implements IAction {\n readonly type = ApRbActions.RB_CREATE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class RbCreateFail implements IAction {\n readonly type = ApRbActions.RB_CREATE_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class RbCreateSuccess implements IAction {\n readonly type = ApRbActions.RB_CREATE_SUCCESS;\n\n constructor(public payload: string) {\n }\n}\n\nexport class RbLoad implements IAction {\n readonly type = ApRbActions.RB_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class RbLoadSuccess implements IAction {\n readonly type = ApRbActions.RB_LOAD_SUCCESS;\n\n constructor(public payload: IRbStatistic[]) {\n }\n}\n\nexport class RbRefresh implements IAction {\n readonly type = ApRbActions.RB_REFRESH;\n\n constructor(public payload: IRbStatistic[]) {\n }\n}\n\nexport class RbLoadFail implements IAction {\n readonly type = ApRbActions.RB_LOAD_FAIL;\n\n constructor(public payload: string) {\n }\n}\n\nexport class RbCheckField implements IAction {\n readonly type = ApRbActions.RB_CHECK_FIELD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class RbCheckFieldSuccess implements IAction {\n readonly type = ApRbActions.RB_CHECK_FIELD_SUCCESS;\n\n constructor(public payload: string) {\n }\n}\n\n\nexport class RbCheckFieldFail implements IAction {\n readonly type = ApRbActions.RB_CHECK_FIELD_FAIL;\n\n constructor(public payload: string) {\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {IStateStore} from '../../ap-interface';\nimport {NetTypes} from 'invoker-transport';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {\n RbCheckField,\n RbCheckFieldSuccess,\n RbCreate,\n RbCreateFail,\n RbCreateSuccess,\n RbLoad,\n RbLoadFail,\n RbLoadSuccess,\n RbRefresh\n} from '../../../../projects/invoker-transport/src/lib/actions/nutrients/rb.action';\nimport IGuid = System.IGuid;\nimport IRbStatistic = Data.Nutrients.IRbStatistic;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IRbStore extends IStateStore {\n rb: IRbStatistic[];\n checkResult: string;\n checkLoaded: boolean;\n checkLoading: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class RbStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n rb: [],\n checkResult: null,\n checkLoaded: false,\n checkLoading: false,\n });\n\n backend.registerObservable(RbRefresh).subscribe(d => {\n const statisticsToAdd = JSON.parse(d.Data) as IRbStatistic;\n if (statisticsToAdd == null) {\n return;\n }\n super.Mutate(s => s.rb, o => {\n if (o.Find(i => !!i && !!statisticsToAdd && i.FieldGeomId === statisticsToAdd.FieldGeomId)) {\n o = o.RemoveAll(i => i.FieldGeomId === statisticsToAdd.FieldGeomId);\n o = o.Add(statisticsToAdd);\n } else {\n o = o.Add(statisticsToAdd);\n }\n return o;\n });\n });\n\n backend.registerObservable(RbCheckFieldSuccess).subscribe(d => {\n this.Mutate(s => s.checkLoaded, () => true);\n this.Mutate(s => s.checkLoading, () => false);\n super.Mutate(s => s.checkResult, () => JSON.parse(d.Data));\n });\n\n backend.registerObservable(RbCheckFieldSuccess).subscribe(_ => {\n this.Mutate(s => s.checkLoaded, () => false);\n this.Mutate(s => s.checkLoading, () => false);\n super.Mutate(s => s.checkResult, () => '');\n });\n\n backend.registerObservable(RbCreateSuccess).subscribe(_ => {\n });\n backend.registerObservable(RbLoadFail).subscribe(_ => {\n this.SetLoadFailState();\n // const result = JSON.parse(d.Data) as IRasterCreationResult;\n // super.Mutate(s => s.needLeftStatistic, o => {\n // if (o.Find(i => i.FieldGeomId === result.Id)) {\n // const stat = o.Find(i => i.FieldGeomId === result.Id)[0];\n // stat.ErrorText = result.Message;\n // o = o.Replace(i => i.FieldGeomId === result.Id, stat);\n // } else {\n // const err = {FieldGeomId: result.Id, ErrorText: result.Message} as IFieldNutrientPlanningStatistic;\n // o = o.Add(err);\n // }\n // return o;\n // });\n //\n // });\n });\n\n backend.registerObservable(RbCreateFail).subscribe(_ => {\n\n });\n backend.registerObservable(RbLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n const statisticsToAdd = d.Data as IRbStatistic[];\n super.Mutate(s => s.rb, o => {\n for (const stat of statisticsToAdd) {\n o.Replace(i => i.FieldGeomId === stat.FieldGeomId, stat);\n }\n return o;\n });\n super.SetLoadFinishState();\n });\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n createRb(fieldGeomId: IGuid): void {\n super.Mutate(s => s.rb, o => {\n if (o.Find(i => i?.FieldGeomId === fieldGeomId)) {\n o = o.RemoveAll(i => i.FieldGeomId === fieldGeomId);\n } else {\n }\n return o;\n });\n this.DispatchBackend(new RbCreate([\n {Name: 'fieldGeomId', Type: NetTypes.GUID, Value: fieldGeomId},\n ]));\n }\n\n loadRb(fieldGeomIds: string[]): void {\n super.SetLoadState();\n this.DispatchBackend(new RbLoad([\n {Name: 'fieldGeomIds', Type: NetTypes.GUID + '[]', Value: fieldGeomIds}\n ]));\n }\n\n checkField(fieldGeomId: IGuid): void {\n this.Mutate(s => s.checkLoaded, () => false);\n this.Mutate(s => s.checkLoading, () => true);\n this.DispatchBackend(new RbCheckField([\n {Name: 'fieldGeomId', Type: NetTypes.GUID, Value: fieldGeomId}\n ]));\n }\n\n get RbStatistic$(): SafeBehaviorSubject {\n return super.Listen(s => s.rb);\n }\n\n get RbStatistic(): IRbStatistic[] {\n return this.RbStatistic$.getValue();\n }\n\n public getRbStatisticByFieldGeomId(fieldGeomId: string): IRbStatistic {\n return this.RbStatistic$.getValue().Find(e => e?.FieldGeomId === fieldGeomId);\n }\n}\n","import {Store} from '../index';\nimport {IStateStore} from '../../ap-interface';\nimport {SoilSampleDatesGet, SoilSampleDatesGetSuccess} from 'invoker-transport';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {Injectable} from '@angular/core';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\nexport type SampleDateObject = {\n Date: Date | undefined;\n Region: string | undefined;\n};\n\nexport type SoilSampleDates = {\n [key: string]: SampleDateObject;\n};\n\ninterface ISoilSampleFieldStore extends IStateStore {\n dates: SoilSampleDates;\n}\n\n@Injectable({providedIn: 'root'})\nexport class SoilSampleDateStore extends Store {\n constructor(public backend: ApSignalrService,\n private dateService: ApDateService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n dates: {}\n });\n\n backend.registerObservable(SoilSampleDatesGetSuccess).subscribe((d) => {\n super.Mutate(s => s.dates, () => {\n const o = {};\n d.Data.forEach((v: any) => {\n o[v[0]] = {\n Date: !!v[1] ? this.dateService.toFarmDateFromUtcGetJsDate(v[1]) : undefined,\n Region: v[2],\n };\n });\n return o;\n });\n this.SetLoadFinishState();\n });\n }\n\n public get Dates$(): SafeBehaviorSubject {\n return super.Listen(s => s.dates);\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n public getFieldSampleDates(): void {\n this.SetLoadState();\n this.DispatchBackend(new SoilSampleDatesGet([]));\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport ISoilSamplePlanning = Data.IpsPlanning.ISoilSamplePlanning;\n\nexport enum ApSoilSamplePlanningActions {\n LOAD_SOIL_SAMPLE_PLANNING = '[soilsampleplanning] load',\n LOAD_SOIL_SAMPLE_PLANNING_SUCCESS = '[soilsampleplanning] load success',\n LOAD_SOIL_SAMPLE_PLANNING_FAIL = '[soilsampleplanning] load fail',\n SAVE_SOIL_SAMPLE_PLANNING = '[soilsampleplanning] save',\n SAVE_SOIL_SAMPLE_PLANNING_SUCCESS = '[soilsampleplanning] save success',\n EXPORT_SHAPE_SOIL_SAMPLE_PLANNING = '[soilsampleplanning] exportshape',\n EXPORT_SHAPE_SOILSAMPLE_PLANNING_SUCCESS = '[soilsampleplanning] exportshape success',\n EXPORT_SHAPE_SOILSAMPLE_PLANNING_FAIL = '[soilsampleplanning] exportshape fail',\n}\n\nexport class LoadSoilSamplePlanning implements IAction {\n readonly type = ApSoilSamplePlanningActions.LOAD_SOIL_SAMPLE_PLANNING;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class LoadSoilSamplePlanningSuccess implements IAction {\n readonly type = ApSoilSamplePlanningActions.LOAD_SOIL_SAMPLE_PLANNING_SUCCESS;\n\n constructor(public payload: ISoilSamplePlanning[]) {\n }\n}\n\nexport class SaveSoilSamplePlanning implements IAction {\n readonly type = ApSoilSamplePlanningActions.SAVE_SOIL_SAMPLE_PLANNING;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SaveSoilSamplePlanningSaveSuccess implements IAction {\n readonly type = ApSoilSamplePlanningActions.SAVE_SOIL_SAMPLE_PLANNING_SUCCESS;\n\n constructor(public payload: ISoilSamplePlanning[]) {\n }\n}\n\nexport class ExportShapeSoilSamplePlanning implements IAction {\n readonly type = ApSoilSamplePlanningActions.EXPORT_SHAPE_SOIL_SAMPLE_PLANNING;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class ExportShapeSoilSamplePlanningSuccess implements IAction {\n readonly type = ApSoilSamplePlanningActions.EXPORT_SHAPE_SOILSAMPLE_PLANNING_SUCCESS;\n\n constructor(public payload: ArrayBuffer) {\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApCustomTypes,\n ExportShapeSoilSamplePlanning,\n ExportShapeSoilSamplePlanningSuccess,\n LoadSoilSamplePlanning,\n LoadSoilSamplePlanningSuccess,\n NetTypes,\n SaveSoilSamplePlanning\n} from 'invoker-transport';\nimport {SaveSoilSamplePlanningSaveSuccess} from '../../../../projects/invoker-transport/src/lib/actions/nutrients';\nimport ISoilSamplePlanning = Data.IpsPlanning.ISoilSamplePlanning;\nimport ISoilSamplePlanningExportData = Data.IpsPlanning.ISoilSamplePlanningExportData;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ISoilSamplePlanningStore extends IStateStore {\n shapeExport: ArrayBuffer;\n}\n\n@Injectable({providedIn: 'root'})\nexport class SoilSamplePlanningStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n shapeExport: null\n });\n\n backend.registerObservable(LoadSoilSamplePlanningSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(ExportShapeSoilSamplePlanningSuccess).subscribe(d => {\n super.Mutate(s => s.shapeExport, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(SaveSoilSamplePlanningSaveSuccess).subscribe(d => {\n if (d.Error) {\n console.warn(`error on save ${d.Error}`);\n return;\n }\n if (!Array.isArray(d.Data)) {\n console.warn(`expect array but was `, d.Data);\n return;\n }\n super.Mutate(s => s.data, o => {\n for (const plan of d.Data) {\n o.Replace(p => p.Id === plan.Id, plan, true);\n }\n return o;\n });\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadSoilSamplePlanning(): void {\n super.SetLoadState();\n super.Mutate(s => s.shapeExport, () => null);\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new LoadSoilSamplePlanning([]));\n }\n\n public saveSoilSamplePlannings(soilSamplePlannings: ISoilSamplePlanning[]): void {\n this.DispatchBackend(new SaveSoilSamplePlanning([\n {\n Name: 'soilSamplePlannings',\n Type: ApCustomTypes.Data_IpsPlanning_SoilSamplePlanning + '[]',\n Value: soilSamplePlannings\n }\n ]));\n }\n\n public exportShape(exportItems: ISoilSamplePlanningExportData[], targetDate: Date, filename: string, countryCode: string): void {\n super.SetLoadState();\n super.Mutate(s => s.shapeExport, () => null);\n this.DispatchBackend(new ExportShapeSoilSamplePlanning([\n {\n Name: 'exportItems',\n Type: ApCustomTypes.Data_IpsPlanning_SoilSamplePlanningExportData + '[]',\n Value: exportItems\n },\n {Name: 'targetDate', Type: NetTypes.DATETIME, Value: targetDate},\n {Name: 'filename', Type: NetTypes.STRING, Value: filename},\n {Name: 'countryCode', Type: NetTypes.STRING, Value: countryCode}\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApCustomTypes,\n ParameterDefinitionAdd,\n ParameterDefinitionCreate,\n ParameterDefinitionLoad,\n ParameterDefinitionLoadSuccess,\n ParameterDefinitionUpdate\n} from 'invoker-transport';\nimport IParameterDefinition = Data.Parameter.IParameterDefinition;\nimport IGuid = System.IGuid;\nimport ParameterRefObjectType = Data.Parameter.Enums.ParameterRefObjectType;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IParameterDefinitionStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class ParameterDefinitionStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n });\n\n backend.registerObservable(ParameterDefinitionLoadSuccess).subscribe(d => {\n this.SetLoadFinishState();\n super.Mutate(s => s.data, () => d.Data);\n });\n backend.registerObservable(ParameterDefinitionAdd).subscribe(d => {\n super.Mutate(s => s.data, o => {\n o.Add(d.Data);\n return o;\n });\n });\n }\n\n public loadParameterDefinition(): void {\n this.SetLoadState();\n this.DispatchBackend(new ParameterDefinitionLoad([]));\n }\n\n public getParameterDefinitionByRefObjectType(refObjectType: ParameterRefObjectType): IParameterDefinition {\n return super.Listen(s => s.data).getValue().Find(_ => _.ParameterRefObjectType === refObjectType);\n }\n\n public getParameterDefinitionById(definitionId: IGuid): IParameterDefinition {\n return super.Listen(s => s.data).getValue().Find(e => e.Id === definitionId);\n }\n\n public updateParameterDefinition(parameterDefinition: IParameterDefinition): void {\n this.DispatchBackend(new ParameterDefinitionUpdate([\n {Name: 'parameterDefinition', Type: ApCustomTypes.Data_Parameter_ParameterDefinition, Value: parameterDefinition},\n ]));\n }\n\n public createParameterDefinition(parameterDefinition: IParameterDefinition): void {\n this.DispatchBackend(new ParameterDefinitionCreate([\n {Name: 'parameterDefinition', Type: ApCustomTypes.Data_Parameter_ParameterDefinition, Value: parameterDefinition},\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n NetTypes,\n ParameterValueHistoryLoad,\n ParameterValueHistoryLoadSuccess\n} from 'invoker-transport';\nimport IGuid = System.IGuid;\nimport IParameterValueHistory = Data.Parameter.IParameterValueHistory;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IParameterValuesHistoryStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class ParameterValuesHistoryStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n });\n\n backend.registerObservable(ParameterValueHistoryLoadSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadParameterValueHistory(refId: IGuid): void {\n this.DispatchBackend(new ParameterValueHistoryLoad([\n {Name: 'refId', Type: NetTypes.GUID, Value: refId},\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApCustomTypes,\n NetTypes,\n ParameterValueCreate,\n ParameterValueDelete,\n ParameterValueLoad,\n ParameterValueLoadSuccess,\n ParameterValuesSaveOrUpdate,\n ParameterValueUpdate\n} from 'invoker-transport';\nimport IParameterValue = Data.Parameter.IParameterValue;\nimport IGuid = System.IGuid;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IParameterValuesStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class ParameterValuesStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n });\n\n backend.registerObservable(ParameterValueLoadSuccess).subscribe(d => {\n this.SetLoadFinishState();\n super.Mutate(s => s.data, () => d.Data);\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public loadParameterValue(refId: IGuid): void {\n this.SetLoadState();\n this.DispatchBackend(new ParameterValueLoad([\n {Name: 'refId', Type: NetTypes.GUID, Value: refId},\n ]));\n }\n\n public updateParameterValue(parameterValue: IParameterValue): void {\n this.DispatchBackend(new ParameterValueUpdate([\n {Name: 'parameterValue', Type: ApCustomTypes.Data_Parameter_ParameterValue, Value: parameterValue},\n ]));\n }\n\n public deleteParameterValue(parameterValue: IParameterValue): void {\n this.DispatchBackend(new ParameterValueDelete([\n {Name: 'parameterValue', Type: ApCustomTypes.Data_Parameter_ParameterValue, Value: parameterValue},\n ]));\n }\n\n public createParameterValue(parameterValue: IParameterValue): void {\n this.DispatchBackend(new ParameterValueCreate([\n {Name: 'parameterValue', Type: ApCustomTypes.Data_Parameter_ParameterValue, Value: parameterValue},\n ]));\n }\n\n public updateParameterValues(parameterValues: IParameterValue[]): void {\n this.DispatchBackend(new ParameterValuesSaveOrUpdate([\n {Name: 'parameterValues', Type: ApCustomTypes.Data_Parameter_ParameterValue + '[]', Value: parameterValues},\n ]));\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {UserGroupsUserStore} from '../settings/user.group.user.store';\nimport {TranslationStore} from '../translation/translation.store';\nimport {ObjectFactory} from 'ts-tooling';\nimport IUsergroup = Data.AccessPermission.IUsergroup;\n\n@Pipe({\n name: 'getAssignedUserGroups'\n})\nexport class ApGetAssignedUserGroupsPipe implements PipeTransform {\n public listUserGroupsUserItems: Array<{ text: string, value: number }> = [];\n\n constructor(private userGroupsUserStore: UserGroupsUserStore,\n private translationStore: TranslationStore) {\n }\n\n public transform(): Array<{ text: string, value: number }> {\n this.listUserGroupsUserItems = [];\n const userGroups: IUsergroup[] = this.userGroupsUserStore.getUserGroupsUser();\n let copiedUserGroups = ObjectFactory.Copy(userGroups);\n copiedUserGroups = copiedUserGroups.sort((a, b) => a.Group_Id !== b.Group_Id ? a.Group_Id < b.Group_Id ? -1 : 1 : 0);\n if (copiedUserGroups && copiedUserGroups.length > 0) {\n for (const userGroup of copiedUserGroups) {\n this.listUserGroupsUserItems.push({\n text: this.translationStore.FindTranslationForSelectedLanguage(userGroup.Group?.Key),\n value: userGroup.Id\n });\n }\n }\n return this.listUserGroupsUserItems;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {UserGroupStore} from '../settings/user.group.store';\nimport {TranslationStore} from '../translation/translation.store';\nimport {ObjectFactory} from 'ts-tooling';\n\n@Pipe({\n name: 'getAvailableUserGroups'\n})\n\nexport class ApGetAvailableUserGroupsPipe implements PipeTransform {\n public listUserGroupItems: Array<{ text: string, value: number }> = [];\n\n constructor(private userGroupsStore: UserGroupStore,\n private translationStore: TranslationStore) {\n }\n\n transform(): Array<{ text: string, value: number }> {\n this.listUserGroupItems = [];\n const userGroups = ObjectFactory.Copy(this.userGroupsStore.getUserGroups());\n userGroups.sort((a, b) => a.Group_Id !== b.Group_Id ? a.Group_Id < b.Group_Id ? -1 : 1 : 0);\n for (const ug of userGroups) {\n this.listUserGroupItems.push({\n text: this.translationStore.FindTranslationForSelectedLanguage(ug.Name),\n value: ug.Id\n });\n }\n return this.listUserGroupItems;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Moment} from 'moment';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\n\n\n@Pipe({\n name: 'getLocalDate'\n})\nexport class ApGetLocalDatePipe implements PipeTransform {\n constructor(private dateService: ApDateService) {\n }\n\n transform(date: Date | string = null, ...args: string[]): Moment {\n return this.dateService.toFarmDateFromUtc(date, args[0]);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApGetCropStatisticService} from '../services/ap-get-crop-statistic.service';\nimport {IMainSecondCropChartData} from '../../ap-interface/interfaces/charts/ap-main-second-crop-chart-data.interface';\n\n@Pipe({\n name: 'getMainCropStatistic'\n})\nexport class GetMainCropStatisticPipe implements PipeTransform {\n constructor(private cropStatistic: ApGetCropStatisticService) {\n }\n\n transform(): IMainSecondCropChartData[] {\n return this.cropStatistic.getForMainCrop();\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport ParameterRefObjectType = Data.Parameter.Enums.ParameterRefObjectType;\n\n\n@Pipe({\n name: 'getParameterRefObjectType'\n})\nexport class GetParameterRefObjectTypePipe implements PipeTransform {\n transform(parameterRefObjectType: ParameterRefObjectType): string {\n switch (parameterRefObjectType) {\n case Data.Parameter.Enums.ParameterRefObjectType.Field:\n // ToDo\n // return this.translationStore.FindTranslationForSelectedLanguage('');\n return 'Field';\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {TranslationStore} from '../translation/translation.store';\nimport ParameterType = Data.Parameter.Enums.ParameterType;\n\n\n@Pipe({\n name: 'getParameterType'\n})\nexport class GetParameterTypePipe implements PipeTransform {\n constructor(private translationStore: TranslationStore) {\n }\n\n transform(parameterType: ParameterType): string {\n switch (parameterType) {\n case Data.Parameter.Enums.ParameterType.Boolean:\n return this.translationStore.FindTranslationForSelectedLanguage('Global_Yes_No');\n case Data.Parameter.Enums.ParameterType.List:\n return this.translationStore.FindTranslationForSelectedLanguage('Global__ListShort');\n case Data.Parameter.Enums.ParameterType.Number:\n return this.translationStore.FindTranslationForSelectedLanguage('Admin_Data_Collections__Number');\n case Data.Parameter.Enums.ParameterType.Text:\n return this.translationStore.FindTranslationForSelectedLanguage('Global_Text');\n case Data.Parameter.Enums.ParameterType.TimeStamp:\n return this.translationStore.FindTranslationForSelectedLanguage('Global_Timestamp');\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ApGetCropStatisticService, ISecondCropStatistic} from '../services/ap-get-crop-statistic.service';\n\n@Pipe({\n name: 'getSecondCropStatistic'\n})\nexport class GetSecondCropStatisticPipe implements PipeTransform {\n constructor(private cropStatistic: ApGetCropStatisticService) {\n }\n\n transform(): ISecondCropStatistic[] {\n return this.cropStatistic.getForSecondCrop();\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport * as moment from 'moment';\nimport {TimeSpan} from 'ts-tooling';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {TranslationStore} from '../translation/translation.store';\n\n@Pipe({\n name: 'getTimeDurationString'\n})\nexport class ApGetTimeDurationStringPipe implements PipeTransform {\n constructor(private dateService: ApDateService,\n private translationStore: TranslationStore) {\n }\n\n transform(date: Date): string {\n const convertedDate = this.dateService.toFarmDate(date);\n const farmZone = 'UTC';\n const diff = moment.tz(farmZone).valueOf() - convertedDate.valueOf();\n const duration = TimeSpan.FromMilliseconds(diff);\n if (duration.Hour === 0) {\n return duration.TotalMinutes.Floor() + ' ' + this.translationStore.FindTranslationForSelectedLanguage('Global__Min_Short');\n }\n if (duration.Hour < 24 && duration.Day === 0) {\n return duration.Hour + ' ' + this.translationStore.FindTranslationForSelectedLanguage('Global_Hour_Short');\n }\n if (duration.Day === 1) {\n return duration.Day + ' ' + this.translationStore.FindTranslationForSelectedLanguage('Global__Day');\n }\n if (duration.Day > 1 && duration.Day < 7) {\n return duration.Day + ' ' + this.translationStore.FindTranslationForSelectedLanguage('Global__Days');\n }\n return duration.TotalWeeks.Floor() + ' ' + this.translationStore.FindTranslationForSelectedLanguage('Global_Week_Short');\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Moment} from 'moment';\nimport {SettingsStore} from '../base-data/settings.store';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\n\n@Pipe({\n name: 'getUtcDate'\n})\nexport class ApGetUtcDatePipe implements PipeTransform {\n constructor(private settingsStore: SettingsStore,\n private dateService: ApDateService) {\n }\n\n transform(date: Date | string = null, ...args: string[]): Moment {\n return this.dateService.getUtcDate(date, args[0], this.settingsStore.FirstSetting);\n }\n}\n","import {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, Data, Params, Router, RouterStateSnapshot, RoutesRecognized} from '@angular/router';\nimport {\n Trace\n} from '../../debug-utils/ApplicationTracer';\nimport {ApMenuUrls} from '../../ap-interface';\nimport {\n APP_CONFIGURATION\n} from '../../ap-core/config';\nimport {\n RemoveUrlParamsService\n} from '../../services/router/remove-url-params.service';\nimport {\n UrlEncoderService\n} from '../../services/router/url-encoder.service';\nimport {ClientCache} from '../local-cache';\nimport {\n FormStore\n} from '../layout/form.store';\nimport {Subscription} from 'rxjs';\nimport {\n ApDeveloperGuard\n} from '../../guards/ap-developer-guard';\nimport {MapStore} from '../map/map.store';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {FieldStore} from '../farm/field.store';\nimport {filter, skip} from 'rxjs/operators';\nimport {IModalDialogData, ModalDialogButtonDisable} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {ModalDialogStore} from '../dialog/modal.dialog.store';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\nexport interface IRouterStateUrl {\n url: string;\n changeMainModule: boolean;\n queryParams: Params;\n params: Params;\n data: Data;\n}\n\n@Injectable({providedIn: 'root'})\nexport class RouterStore extends Store {\n private _navigationSubscription: Subscription;\n private _mapLoadCompleteSubscription: Subscription;\n private _layerMapControlItemsSubscription: Subscription;\n private _blockNavigation = false;\n private _blockMessage: string;\n\n navigateRequest = new EventEmitter();\n\n constructor(public backend: ApSignalrService,\n private formStore: FormStore,\n private fieldStore: FieldStore,\n private removeUrlParams: RemoveUrlParamsService,\n private router: Router,\n private developerGuard: ApDeveloperGuard,\n private urlEncoder: UrlEncoderService,\n private mapStore: MapStore,\n private modalDialogStore: ModalDialogStore,\n private translationService: ApTranslationService) {\n super(backend, {\n data: [],\n url: '',\n changeMainModule: false,\n queryParams: null,\n params: null,\n });\n router.events.subscribe(e => {\n if (e instanceof RoutesRecognized) {\n this.serialize(e.state);\n }\n });\n }\n\n get CurrentUrl$(): SafeBehaviorSubject {\n return super.Listen(s => s.url);\n }\n\n get CurrentUrl(): string {\n return this.CurrentUrl$.getValue();\n }\n\n get QueryParams$(): SafeBehaviorSubject {\n return super.Listen(s => s.queryParams);\n }\n\n get QueryParams(): any {\n return this.QueryParams$.getValue();\n }\n\n @Trace()\n public async loadContactPage(): Promise {\n await this.router.navigate([ApMenuUrls.CONTACT]);\n }\n\n @Trace()\n public async navigateToLogin(): Promise {\n await this.router.navigate([ApMenuUrls.LOGIN]);\n }\n\n @Trace()\n public async navigateToPasswordRecovery(): Promise {\n await this.router.navigate(([ApMenuUrls.LOGIN_PASSWORD_RECOVER]));\n }\n\n public blockNavigation(messageKey: string): void {\n this._blockMessage = messageKey;\n this._blockNavigation = true;\n }\n\n public releaseNavigation(): void {\n this._blockNavigation = false;\n }\n\n public tryNavigate(): boolean {\n if (this._blockNavigation) {\n this.modalDialogStore.setModalDialogData({\n formConfig: undefined,\n show: true,\n buttons: [\n {\n disable: ModalDialogButtonDisable.Never,\n key: 'Y',\n primary: true,\n text: 'Global__Ok'\n },\n {\n disable: ModalDialogButtonDisable.Never,\n key: 'N',\n primary: false,\n text: 'Global__Cancel'\n },\n ],\n title: this.translationService.translate('Global__Warning'),\n message: this.translationService.translate(this._blockMessage)\n } as IModalDialogData);\n const subscription = this.modalDialogStore.Listen(s => s.result).pipe(skip(1)).subscribe((result) => {\n this.navigateRequest.emit(result.key === 'Y');\n subscription.unsubscribe();\n });\n return true;\n }\n return false;\n }\n\n @Trace()\n public async navigate(url: string[], extras = {}): Promise {\n if (this.formStore.tryCloseForm()) {\n this._navigationSubscription?.unsubscribe();\n this._navigationSubscription = this.formStore.formCloseOnRequest.subscribe(async (closed) => {\n if (closed) {\n await this.router.navigate(url, {queryParams: this.urlEncoder.encode(extras)});\n }\n this._navigationSubscription?.unsubscribe();\n });\n } else if (this.tryNavigate()) {\n this._navigationSubscription?.unsubscribe();\n this._navigationSubscription = this.navigateRequest.subscribe(async (navigate) => {\n if (navigate) {\n await this.router.navigate(url, {queryParams: this.urlEncoder.encode(extras)});\n }\n this._navigationSubscription?.unsubscribe();\n });\n } else {\n await this.router.navigate(url, {queryParams: this.urlEncoder.encode(extras)});\n }\n }\n\n private serialize(routerState: RouterStateSnapshot): void {\n const {url} = routerState;\n const queryParams = this.urlEncoder.decode(routerState.root.queryParams);\n\n let state: ActivatedRouteSnapshot = routerState.root;\n while (state.firstChild) {\n state = state.firstChild;\n }\n const {params} = state;\n const {data} = state;\n\n if (data.login && data.login === true) {\n ClientCache.writeValue(APP_CONFIGURATION.StoreKeys.LastVisitUrl,\n this.removeUrlParams.removeUrlParams(url));\n ClientCache.writeValue(APP_CONFIGURATION.StoreKeys.LastVisitUrlParams, queryParams);\n }\n this.handleLayerGroups();\n\n super.Mutate(s => s, o => {\n const mainModuleBefore = o.url.Split('/')[0];\n const mainModuleAfter = url.Split('/')[0];\n o.changeMainModule = mainModuleBefore !== mainModuleAfter;\n if (o.changeMainModule) {\n this.fieldStore.changeSelectedField([]);\n }\n o.url = url;\n o.queryParams = queryParams;\n o.params = params;\n o.data = data;\n return o;\n });\n }\n\n private handleLayerGroups(): void {\n for (const layer of this.mapStore.Layers.AllLayers$.getValue()) {\n layer.Visibility = false;\n }\n this.mapStore.Layers.setActiveLayerGroups([]).then();\n if (!this._layerMapControlItemsSubscription) {\n this._layerMapControlItemsSubscription = this.mapStore.Layers.LayerMapControlItems$\n .pipe(filter(v => !!v && Object.keys(v).length > 0))\n .subscribe(() => {\n this.readLayerMapControlItems();\n });\n }\n this.readLayerMapControlItems();\n }\n\n private readLayerMapControlItems(): void {\n if (!this._mapLoadCompleteSubscription) {\n this._mapLoadCompleteSubscription = this.mapStore.mapInitialized.subscribe(() => {\n this.forceModulLayerState();\n });\n }\n this.forceModulLayerState();\n }\n\n private forceModulLayerState(): void {\n setTimeout(() => {\n let url = super.Listen(d => d.url).getValue();\n // do not take optional route parameters into consideration\n url = url?.split('?')[0];\n const modulLayers = this.mapStore.Layers.LayerMapControlItems$.getValue()[url];\n if (!modulLayers) {\n return;\n }\n // hide all Layers\n for (const layer of this.mapStore.Layers.AllLayers$.getValue()) {\n layer.Visibility = false;\n }\n // add needed groups to control\n this.mapStore.Layers.setActiveLayerGroups(modulLayers.groups).then();\n // show active Layers\n for (const layer of modulLayers.activeLayers) {\n if (!layer) {\n continue;\n }\n layer.Visibility = true;\n }\n for (const g of this.mapStore.Layers.AllLayerGroups$.getValue()) {\n let id = g.id;\n for (const l of this.mapStore.Layers.getLayersByGroup(g.name)) {\n\n if (l.FixedZIndex > 0) {\n l.Order = l.FixedZIndex;\n } else {\n l.Order = --id;\n }\n }\n }\n }, 0);\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport ISensorFieldData = Data.Sensor.ISensorFieldData;\n\nexport enum SensorActions {\n SENSOR_FIELD_DATA_LOAD = '[sensor] field data load',\n SENSOR_FIELD_DATA_LOAD_SUCCESS = '[sensor] field data load success',\n SENSOR_RASTER_VALUES_LOAD = '[sensor] raster values load',\n SENSOR_RASTER_VALUES_LOAD_SUCCESS = '[sensor] raster values load success',\n SENSOR_RASTER_VALUES_LOAD_FAIL = '[sensor] raster values load fail',\n}\n\nexport class SensorFieldDataLoad implements IAction {\n readonly type = SensorActions.SENSOR_FIELD_DATA_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SensorFieldDataLoadSuccess implements IAction {\n readonly type = SensorActions.SENSOR_FIELD_DATA_LOAD_SUCCESS;\n\n constructor(public payload: ISensorFieldData[]) {\n }\n}\n\nexport class SensorRasterValuesLoad implements IAction {\n readonly type = SensorActions.SENSOR_RASTER_VALUES_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SensorRasterValuesLoadSuccess implements IAction {\n readonly type = SensorActions.SENSOR_RASTER_VALUES_LOAD_SUCCESS;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class SensorRasterValuesLoadFail implements IAction {\n readonly type = SensorActions.SENSOR_RASTER_VALUES_LOAD_FAIL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport {\n SensorFieldDataLoad,\n SensorFieldDataLoadSuccess, SensorRasterValuesLoad, SensorRasterValuesLoadSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/sensor';\nimport {\n NetTypes,\n} from 'invoker-transport';\nimport ISensorFieldData = Data.Sensor.ISensorFieldData;\nimport IGuid = System.IGuid;\n\ninterface INFertilizationStore extends IStateStore {\n sensorRasterValues: number[][];\n}\n\n@Injectable({providedIn: 'root'})\nexport class SensorStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n sensorRasterValues: []\n });\n\n backend.registerObservable(SensorFieldDataLoadSuccess).subscribe(d => {\n this.SetLoadFinishState();\n super.Mutate(s => s.data, () => d.Data);\n });\n\n backend.registerObservable(SensorRasterValuesLoadSuccess).subscribe(d => {\n let result: number[][] = [];\n if (d.Data) {\n result = JSON.parse(d.Data);\n }\n super.Mutate(s => s.sensorRasterValues, () => result);\n });\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n public get SensorFieldData$(): SafeBehaviorSubject {\n return super.Listen(s => s.data);\n }\n\n public get SensorFieldData(): ISensorFieldData[] {\n return this.SensorFieldData$.getValue();\n }\n\n public loadSensorFieldData(): void {\n this.SetLoadState();\n this.DispatchBackend(new SensorFieldDataLoad([]));\n }\n\n public loadSensorRasterValues(planBookIds: IGuid[]): void {\n super.Mutate(s => s.sensorRasterValues, () => []);\n this.DispatchBackend(new SensorRasterValuesLoad([\n {Name: 'planBookIds', Type: NetTypes.GUID + '[]', Value: planBookIds}\n ]));\n }\n\n public getSensorFieldData(fieldGeomId: IGuid): ISensorFieldData {\n return super.Listen(s => s.data).getValue()?.Find(_ => _?.FieldGeomId === fieldGeomId) as ISensorFieldData;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n CropTypeStore\n} from '../base-data/crop.types.store';\nimport {\n CropGroupStore\n} from '../base-data/crop.groups.store';\nimport {\n TranslationStore\n} from '../translation/translation.store';\nimport {FieldStore} from '../farm/field.store';\nimport {\n IMainSecondCropChartData,\n IMainSecondCropChartDataValue\n} from '../../ap-interface/interfaces/charts/ap-main-second-crop-chart-data.interface';\nimport {Create} from 'ts-tooling';\nimport {\n ApGetCropService\n} from './ap-get-crop.service';\nimport {\n FieldCropRotationPriority,\n FieldsCropRotationStatsData,\n IFieldsCropRotationPerYear\n} from '../../statistics/components/charts/fields-crop-rotation-stats/fields-crop-rotation-stats.types';\nimport ICropGroups = Data.BaseData.ICropGroups;\nimport IField = Data.FieldManagement.IField;\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport IFieldCropRotation = Data.FieldManagement.IFieldCropRotation;\n\nexport interface ISecondCropStatistic {\n prio: number;\n name: string;\n data: {\n category: string,\n color: string,\n value: number,\n }[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class ApGetCropStatisticService {\n constructor(private cropTypeStore: CropTypeStore,\n private cropGroupStore: CropGroupStore,\n private translationService: TranslationStore,\n private fieldStore: FieldStore,\n private cropService: ApGetCropService) {\n }\n\n public gatherFieldCropsChartData(fields: IField[]): IMainSecondCropChartData[] {\n const statisticData: IMainSecondCropChartData[] = [];\n const mainCropData: IMainSecondCropChartDataValue[] = [];\n const secondCropData: IMainSecondCropChartDataValue[] = [];\n for (const field of fields) {\n const geom = this.fieldStore.getCurrentFieldGeom(field);\n const fieldCrop = this.cropService.getFieldCrop(field);\n const mainCropType = this.cropTypeStore.getDefaultCroptype(fieldCrop?.CroptypeId);\n const secondCropType = this.cropTypeStore.getDefaultCroptype(fieldCrop?.CroptypeSecondId);\n this._updateCropDataCollection(mainCropData, mainCropType, geom?.AreaHa ?? 0);\n this._updateCropDataCollection(secondCropData, secondCropType, geom?.AreaHa ?? 0);\n }\n statisticData.push({\n prio: 0,\n name: this.translationService.FindTranslationForSelectedLanguage('SecondCrop'),\n data: secondCropData\n });\n statisticData.push({\n prio: 1,\n name: this.translationService.FindTranslationForSelectedLanguage('MainCrop'),\n data: mainCropData\n });\n return statisticData;\n }\n\n public gatherFieldCropRotationData(fieldCropRotations: IFieldCropRotation[], startYear: number, endYear: number): FieldsCropRotationStatsData[] {\n const mainCropData: IFieldsCropRotationPerYear = {};\n const secondCropData: IFieldsCropRotationPerYear = {};\n const statsData: FieldsCropRotationStatsData[] = [];\n for (const fieldCropRotation of fieldCropRotations) {\n for (let year = startYear; year <= endYear; year++) {\n const index = year - startYear;\n const currentYield = fieldCropRotation?.Yields[index];\n const mainCrop = this.cropTypeStore.getDefaultCroptype(currentYield?.MainCrop);\n const secondCrop = this.cropTypeStore.getDefaultCroptype(currentYield?.SecondCrop);\n this._updateCropDataObjectWithCropTypeInfo(mainCropData, mainCrop, year, fieldCropRotation.AreaHa);\n this._updateCropDataObjectWithCropTypeInfo(secondCropData, secondCrop, year, fieldCropRotation.AreaHa);\n }\n }\n statsData.push({\n CropPriority: FieldCropRotationPriority.MainCrop,\n CropTypesPerYear: mainCropData\n });\n statsData.push({\n CropPriority: FieldCropRotationPriority.SecondCrop,\n CropTypesPerYear: secondCropData\n });\n return statsData;\n }\n\n public getForMainCrop(): IMainSecondCropChartData[] {\n const groupArea = this._groupCropAreas();\n const statisticData = [];\n const dataMainCrop = [];\n for (const key of Object.keys(groupArea)) {\n const cropgroup = this.cropGroupStore.getCropGroups().Find((cg: ICropGroups) => cg.Key === key);\n if (cropgroup && cropgroup.Colordefault) {\n let color = cropgroup.Colordefault;\n if (cropgroup.FarmColor) {\n color = cropgroup.FarmColor;\n }\n dataMainCrop.push({\n category: this.translationService.FindTranslationForSelectedLanguage(key),\n color,\n value: groupArea[key],\n } as IMainSecondCropChartDataValue);\n }\n }\n statisticData.push({\n prio: 0,\n name: this.translationService.FindTranslationForSelectedLanguage('MainCrop'),\n data: dataMainCrop\n } as IMainSecondCropChartData);\n return statisticData;\n }\n\n public getForSecondCrop(): ISecondCropStatistic[] {\n const groupArea = this._groupCropAreas(true);\n const statisticDataSecondCrop = [];\n const dataSecondCrop = [];\n for (const key of Object.keys(groupArea)) {\n const cropgroup = this.cropGroupStore.getCropGroups().Find((cg: ICropGroups) => cg.Key === key);\n if (cropgroup && cropgroup.Colordefault) {\n let color = cropgroup.Colordefault;\n if (cropgroup.FarmColor) {\n color = cropgroup.FarmColor;\n }\n dataSecondCrop.push({\n category: this.translationService.FindTranslationForSelectedLanguage(key),\n color,\n value: groupArea[key],\n });\n }\n }\n statisticDataSecondCrop.push({\n prio: 1,\n name: this.translationService.FindTranslationForSelectedLanguage('SecondCrop'),\n data: dataSecondCrop\n });\n return statisticDataSecondCrop;\n }\n\n private _updateCropDataCollection(cropData: IMainSecondCropChartDataValue[], cropType: ICropTypes, areaHa: number): void {\n const cropTypeName = cropType?.Description ?? this.translationService.FindTranslationForSelectedLanguage('Global__CropGroup_Nothing');\n const cropTypeColor = cropType?.Color ?? '#ffffff';\n const cropTypeArea = Create(areaHa, 0);\n const cropItemIndex = cropData.findIndex(x => x.category === cropTypeName);\n if (cropItemIndex >= 0) {\n cropData[cropItemIndex].value += cropTypeArea;\n } else {\n cropData.push({\n category: cropTypeName,\n color: cropTypeColor,\n value: cropTypeArea,\n explode: false\n });\n }\n }\n\n private _updateCropDataObjectWithCropTypeInfo(cropData: IFieldsCropRotationPerYear | undefined,\n cropType: ICropTypes, year: number, areaHa: number): void {\n const cropTypeName = cropType?.Description ?? this.translationService.FindTranslationForSelectedLanguage('Global__CropGroup_Nothing');\n const cropTypeColor = cropType?.Color ?? '#ffffff';\n const cropTypeArea = Create(areaHa, 0);\n if (!cropData[year]) {\n cropData[year] = [];\n }\n const itemIndex = cropData[year].findIndex(x => x.CropTypeName === cropTypeName);\n if (itemIndex >= 0) {\n cropData[year][itemIndex].AreaHa += areaHa;\n } else {\n cropData[year].push({\n CropTypeName: cropTypeName,\n Color: cropTypeColor,\n AreaHa: cropTypeArea\n });\n }\n }\n\n private _groupCropAreas(second = false): { [key: string]: number } {\n const groupArea = {};\n const fields = this.fieldStore.Fields;\n const yearCrops = this.fieldStore.YearFieldCrops;\n for (const f of fields) {\n const geom = this.fieldStore.getCurrentFieldGeom(f);\n const fieldCrop = yearCrops[f.Id.toString()];\n if (!fieldCrop) {\n if (!groupArea['Global__CropGroup_Nothing']) {\n groupArea['Global__CropGroup_Nothing'] = 0;\n }\n groupArea['Global__CropGroup_Nothing'] += Create(geom?.AreaHa, 0);\n continue;\n }\n const groupName = this.cropTypeStore.getDefaultCroptype(second ? fieldCrop.CroptypeSecondId : fieldCrop.CroptypeId);\n const name = groupName && groupName.Groupname ? groupName.Groupname : 'Global__CropGroup_Nothing';\n if (!groupArea.hasOwnProperty(name)) {\n groupArea[name] = 0;\n }\n groupArea[name] += Create(geom?.AreaHa, 0);\n }\n return groupArea;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {CropTypeStore} from '../base-data/crop.types.store';\nimport {CampaignYearStore} from '../login/campaignyear.store';\nimport {DateRange, DateTime} from 'ts-tooling';\nimport {CampaignYearService} from '../../services/data/campaign-year.service';\nimport {CropRotationStore, CropRotationYield} from '../farm/crop.rotation.store';\nimport IField = Data.FieldManagement.IField;\nimport IFieldCrop = Data.FieldManagement.IFieldCrop;\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport IGuid = System.IGuid;\n\n@Injectable({providedIn: 'root'})\nexport class ApGetCropService {\n constructor(private cropTypeStore: CropTypeStore,\n private campaignYearStore: CampaignYearStore,\n private campaignYearService: CampaignYearService,\n private cropRotationStore: CropRotationStore) {\n }\n\n public getFieldCrop(field: IField): IFieldCrop | null {\n const campaignYear = this.campaignYearStore.getSelectedCampaignYear();\n return this.getFieldCropByDate(field, new Date(campaignYear.DefaultStart));\n }\n\n public getFieldCropByDate(field: IField, applicationDate: Date): IFieldCrop | null {\n if (!field?.FieldCrops || field.FieldCrops.length <= 0) {\n return null;\n }\n const campaignYear = this.campaignYearService.getCampaignYearByDate(applicationDate);\n return field.FieldCrops.find(_ => {\n if (!_) {\n return false;\n }\n return this.campaignYearService.isCampaignYearIntersects(new Date(_.ValidFrom), new Date(_.ValidTo), campaignYear);\n });\n }\n\n public getCropRotationByYear(fieldId: IGuid | null, year: number): CropRotationYield | null {\n if (!fieldId) {\n return null;\n }\n const fieldCropRotations = this.cropRotationStore.GetHistory[fieldId.toString()];\n if (!fieldCropRotations) {\n return null;\n }\n const cropRotationYear = fieldCropRotations[year];\n if (!cropRotationYear) {\n return null;\n }\n return cropRotationYear;\n }\n\n public getCropNameFromCropRotationYield(crop: CropRotationYield | null): string {\n if (!crop) {\n return '';\n }\n if (crop?.MainCropName) {\n return crop?.MainCropName;\n }\n if (crop?.SecondCropName) {\n return crop?.SecondCropName;\n }\n return '';\n }\n\n public getCropType(fieldCrop: IFieldCrop, getMainCrop: boolean): ICropTypes | null {\n if (!fieldCrop || !this._getCropTypeId(fieldCrop, getMainCrop)) {\n return null;\n }\n const cropTypeId = this._getCropTypeId(fieldCrop, getMainCrop);\n if (!cropTypeId) {\n return null;\n }\n const cropType: ICropTypes = this.cropTypeStore.getDefaultCroptype(cropTypeId);\n return cropType ?? null;\n }\n\n public getCrop(field: IField, getMainCrop: boolean, returns: 'object' | 'description' | 'shortname'): any {\n const DEFAULT_RESULT = undefined;\n const crop = this.getFieldCrop(field);\n if (!field || !field.FieldCrops || !Array.isArray(field.FieldCrops) || field.FieldCrops.length < 1 || !crop) {\n return returns === 'object' ? null : DEFAULT_RESULT;\n }\n const cropType = this.getCropType(crop, getMainCrop);\n switch (returns) {\n case 'description':\n return cropType?.Description ?? DEFAULT_RESULT;\n case 'object':\n return cropType ?? null;\n case 'shortname':\n return cropType?.Shortname ?? DEFAULT_RESULT;\n }\n }\n\n public parseMainCrop(item: IField): string {\n return this.getCrop(item, true, 'description');\n }\n\n public parseMainCropExpectedYield(item: IField): string {\n if (!item || !item.FieldCrops || !Array.isArray(item.FieldCrops) || item.FieldCrops.length < 1 || !item.FieldCrops[0].CroptypeId) {\n return '';\n }\n const campaignYear = this.campaignYearStore.getSelectedCampaignYear();\n const crop = item.FieldCrops.Find(fc => this.overlapsRanges(\n campaignYear.DefaultStart, campaignYear.DefaultEnd, fc?.ValidFrom, fc?.ValidTo));\n return (crop?.ExpectedYield != null && crop?.ExpectedYield >= 0) ?\n crop.ExpectedYield.toString() : '';\n }\n\n public parseSecondCropExpectedYield(item: IField): string {\n if (!item || !item.FieldCrops || !Array.isArray(item.FieldCrops) || item.FieldCrops.length < 1 || !item.FieldCrops[0].CroptypeSecondId) {\n return '';\n }\n const campaignYear = this.campaignYearStore.getSelectedCampaignYear();\n const crop = item.FieldCrops.Find(fc => this.overlapsRanges(\n campaignYear.DefaultStart, campaignYear.DefaultEnd, fc?.ValidFrom, fc?.ValidTo));\n return (crop?.ExpectedYieldSecond != null && crop?.ExpectedYieldSecond >= 0) ?\n crop?.ExpectedYieldSecond.toString() : '';\n }\n\n public parseSecondCrop(item: IField): string {\n return this.getCrop(item, false, 'description');\n }\n\n public parseStrawHarvested(item: IField): boolean {\n const DEFAULT_RESULT = false;\n if (!item || !item.FieldCrops || !Array.isArray(item.FieldCrops) || item.FieldCrops.length < 1 || !item.FieldCrops[0].StrawHarvested) {\n return DEFAULT_RESULT;\n }\n return item.FieldCrops[0].StrawHarvested ? item.FieldCrops[0].StrawHarvested : DEFAULT_RESULT;\n }\n\n private overlapsRanges(startA: Date, endA: Date, startB: Date, endB: Date): boolean {\n const cyInterval = new DateRange(\n DateTime.FromISOString(startA.toString(), 'UTC'),\n DateTime.FromISOString(endA.toString(), 'UTC'),\n );\n const fcInterval = new DateRange(\n DateTime.FromISOString(startB.toString(), 'UTC'),\n DateTime.FromISOString(endB.toString(), 'UTC'),\n );\n return fcInterval.Overlaps(cyInterval);\n }\n\n private _getCropTypeId(crop: IFieldCrop, mainCrop: boolean): number {\n return mainCrop ? crop.CroptypeId : crop.CroptypeSecondId;\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n DeleteAccessPermissions,\n InsertAccessPermissions,\n LoadAccessPermissions,\n LoadAccessPermissionsSuccess,\n NetTypes\n} from 'invoker-transport';\nimport IAccessPermissions = Data.AccessPermission.IAccessPermissions;\nimport IUsergroup = Data.AccessPermission.IUsergroup;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IAccessPermissionsStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class AccessPermissionsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(LoadAccessPermissionsSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n getAccessPermissions(): IAccessPermissions[] {\n return super.Listen(s => s.data).getValue();\n }\n\n loadAccessPermissions(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new LoadAccessPermissions([]));\n }\n\n insertPermission(farmId: number, userGroup: IUsergroup, featureId: number): void {\n this.DispatchBackend(new InsertAccessPermissions([\n {Name: 'farmId', Type: NetTypes.INT, Value: farmId},\n {Name: 'userGroup', Type: ApCustomTypes.Data_AccessPermission_Usergroup, Value: userGroup},\n {Name: 'featureId', Type: NetTypes.INT, Value: featureId}\n ]));\n }\n\n deletePermission(farmId: number, userGroup: IUsergroup, featureId: number): void {\n this.DispatchBackend(new DeleteAccessPermissions([\n {Name: 'farmId', Type: NetTypes.INT, Value: farmId},\n {Name: 'userGroup', Type: ApCustomTypes.Data_AccessPermission_Usergroup, Value: userGroup},\n {Name: 'featureId', Type: NetTypes.INT, Value: featureId}\n ]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {LoadUsergroups, LoadUsergroupsSuccess} from 'invoker-transport';\nimport IUserGroup = Data.AccessPermission.IUsergroup;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IUserGroupsStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class UserGroupStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(LoadUsergroupsSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n public getUserGroups(): IUserGroup[] {\n return super.Listen(s => s.data).getValue();\n }\n\n loadUserGroups(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new LoadUsergroups([]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n LoadUsergroupsUser,\n LoadUsergroupsUserSuccess,\n NetTypes,\n UpdateUsergroupsUser\n} from 'invoker-transport';\nimport IUsergroup = Data.AccessPermission.IUsergroup;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IUserGroupsUserStore extends IStateStore {\n}\n\n@Injectable({providedIn: 'root'})\nexport class UserGroupsUserStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n });\n\n backend.registerObservable(LoadUsergroupsUserSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n loadUserGroupsUser(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new LoadUsergroupsUser([]));\n }\n\n updateUserGroupsUser(list: IUsergroup[], userId: number): void {\n this.DispatchBackend(new UpdateUsergroupsUser([\n {Name: 'list', Type: ApCustomTypes.Data_AccessPermission_Usergroup + '[]', Value: list},\n {Name: 'userId', Type: NetTypes.INT, Value: userId},\n ]));\n }\n\n public getUserGroupsUser(): IUsergroup[] {\n return super.Listen(s => s.data).getValue();\n }\n}\n","import {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {LoadUserSettings, LoadUserSettingsSuccess} from 'invoker-transport';\nimport IUserSettings = Data.Authentication.IUserSettings;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IUserSettingsStore {\n loaded: boolean;\n loading: boolean;\n data: IUserSettings;\n}\n\n@Injectable({providedIn: 'root'})\nexport class UserSettingsStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: null,\n });\n\n backend.registerObservable(LoadUserSettingsSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n public loadUserSettings(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => null);\n this.DispatchBackend(new LoadUserSettings([]));\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {ApStatsType} from '../../ap-interface/enums';\nimport {AxisLabelVisualArgs} from '@progress/kendo-angular-charts';\nimport {drawing} from '@progress/kendo-drawing';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport {map} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\nexport enum ChartSetValueType {\n CLASS,\n DATE,\n SOIL_GROUP,\n REGION,\n LANDUSE,\n METHOD,\n DEFAULT,\n}\n\nexport interface IChartAxesOptions {\n titleX: string;\n titleY: string;\n maxX: number;\n minX: number;\n}\n\nexport interface IChartSet {\n valueType: ChartSetValueType;\n axes: IChartAxesOptions;\n data: T;\n visual?: (item: IChartSet) => (e: AxisLabelVisualArgs) => drawing.Element;\n decimalPlaces?: number;\n color?: (p: any) => string;\n meta: { [key: string]: any };\n step: number;\n tooltipDelegate?: (item: any, charSet: IChartSet) => string;\n noteDelegate?: (item: any, charSet: IChartSet) => string;\n noteField?: string;\n}\n\nexport interface IStatisticStoreItem {\n chartData: any;\n type: ApStatsType;\n title: string;\n emptyMessage: string;\n}\n\ninterface IStatisticStore extends IStateStore {\n selection: { text: string, value: number }[];\n selectedValue: number;\n}\n\n@Injectable({providedIn: 'root'})\nexport class StatisticStore extends Store {\n public selectedValueChange = new EventEmitter<{ text: string, value: number }>();\n\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loading: true,\n loaded: false,\n selection: [],\n selectedValue: 0,\n });\n }\n\n get Selection$(): SafeBehaviorSubject<{ text: string, value: number }[]> {\n return super.Listen(s => s.selection);\n }\n\n get SelectedValue$(): Observable<{ text: string, value: number }> {\n return super.Listen(s => s.selectedValue).pipe(\n map(v => ({text: v.toString(), value: v})),\n );\n }\n\n get Data$(): SafeBehaviorSubject {\n return super.Listen(s => s.data);\n }\n\n get Data(): IStatisticStoreItem[] {\n return this.Data$.getValue();\n }\n\n get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n get Loading(): boolean {\n return this.Loading$.getValue();\n }\n\n /**\n * Assigns a single statistic type to the statistic section\n * @param data the statistic type's data (different for every type of statistic)\n * @param statType the statistic type\n * @param title the statistic's title\n * @param emptyMessage optional text when statistic is empty\n */\n setStatisticData(data: T[], statType: ApStatsType, title: string, emptyMessage = ''): void {\n super.Mutate(s => s.data, () => [{chartData: data, type: statType, title, emptyMessage}]);\n }\n\n /**\n * Adds another statistic type to the statistic section\n * @param data the statistic type's data (different for every type of statistic)\n * @param statType the statistic type\n * @param title the statistic's title\n * @param emptyMessage optional text when statistic is empty\n */\n addStatisticData(data: T[], statType: ApStatsType, title: string, emptyMessage = ''): void {\n super.Mutate(s => s.data, storeObject => {\n if (!storeObject) {\n storeObject = [];\n }\n storeObject.push({chartData: data, type: statType, title, emptyMessage});\n return storeObject;\n });\n }\n\n /**\n * Die Funktion wird benötigt, um sicherzustellen,\n * dass die Statistik, die entfernt wird auch genau diesem Type entspricht.\n * Der Usecase, der das notwendig macht:\n * - Statistik wird in einer entry-component angezeigt (z.B. neue N-Planung)\n * - Nutzer navigiert über das Menü zu einer anderen Komponente mit Statistik (z.B. Feldübersicht)\n * - Im destroy der entry-component wird die Statistik sauber entfernt\n * - Allerdings wird das ngDestroy erst nach dem Init der neuen Komponente aufgerufen\n * - Dadurch wird im ngDestroy die neue Statistik der anderen Komponente entfernt\n */\n removeStatisticDataByType(typeToRemove: ApStatsType): void {\n super.Mutate(s => s.data, storeObject => {\n if (!storeObject) {\n storeObject = [];\n return storeObject;\n }\n storeObject.RemoveAll(s => s.type === typeToRemove);\n return storeObject;\n });\n }\n\n removeStatisticData(): void {\n super.Mutate(s => s.data, () => []);\n }\n\n addSelection(selection: { text: string, value: number }[]): void {\n super.Mutate(s => s.selection, () => selection);\n }\n\n clearSelection(): void {\n super.Mutate(s => s.selection, () => []);\n }\n\n selectFromSelection(value: number): void {\n if (!this.Selection$.getValue().Find(s => s?.value === value)) {\n return;\n }\n super.Mutate(s => s.selectedValue, () => value);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Trace} from '../../debug-utils/ApplicationTracer';\nimport {ApGetCropService} from '../services/ap-get-crop.service';\nimport IField = Data.FieldManagement.IField;\n\n@Pipe({\n name: 'getCrop'\n})\nexport class GetCropPipe implements PipeTransform {\n constructor(private service: ApGetCropService) {\n }\n\n @Trace()\n transform(item: IField, getMainCrop: boolean, returns: 'object' | 'description' | 'shortname'): any {\n return this.service.getCrop(item, getMainCrop, returns);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {ApGetAvailableUserGroupsPipe} from './pipes/ap-get-available-usergroups.pipe';\nimport {ApGetAssignedUserGroupsPipe} from './pipes/ap-get-assigned-usergroups.pipe';\nimport {GetCropPipe} from './pipes/ap-get-crop.pipe';\nimport {GetSecondCropStatisticPipe} from './pipes/ap-get-second-crop-statistic.pipe';\nimport {GetMainCropStatisticPipe} from './pipes/ap-get-main-crop-statistic.pipe';\nimport {ApGetLocalDatePipe} from './pipes/ap-get-local-date.pipe';\nimport {ApGetUtcDatePipe} from './pipes/ap-get-utc-date.pipe';\nimport {GetParameterTypePipe} from './pipes/ap-get-parameter-type.pipe';\nimport {GetParameterRefObjectTypePipe} from './pipes/ap-get-parameter-ref-object-type.pipe';\nimport {ApGetTimeDurationStringPipe} from './pipes/ap-get-time-duration-string.pipe';\n\n@NgModule({\n declarations: [\n ApGetAvailableUserGroupsPipe,\n ApGetAssignedUserGroupsPipe,\n GetCropPipe,\n GetMainCropStatisticPipe,\n GetSecondCropStatisticPipe,\n ApGetLocalDatePipe,\n ApGetUtcDatePipe,\n GetParameterTypePipe,\n GetParameterRefObjectTypePipe,\n ApGetTimeDurationStringPipe,\n ],\n exports: [\n ApGetAvailableUserGroupsPipe,\n ApGetAssignedUserGroupsPipe,\n GetCropPipe,\n GetMainCropStatisticPipe,\n GetSecondCropStatisticPipe,\n ApGetLocalDatePipe,\n ApGetUtcDatePipe,\n GetParameterTypePipe,\n GetParameterRefObjectTypePipe,\n ApGetTimeDurationStringPipe,\n ],\n providers: [\n ApGetAvailableUserGroupsPipe,\n ApGetAssignedUserGroupsPipe,\n GetCropPipe,\n GetMainCropStatisticPipe,\n GetSecondCropStatisticPipe,\n ApGetLocalDatePipe,\n ApGetUtcDatePipe,\n GetParameterTypePipe,\n GetParameterRefObjectTypePipe,\n ApGetTimeDurationStringPipe,\n ]\n})\nexport class AgriportStoreModule {\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport ICropApplNum = Data.PfBox.ICropApplNum;\n\nexport enum CropApplicationActions {\n CROP_APPLICATION_LOAD = '[crop application] load',\n CROP_APPLICATION_LOAD_SUCCESS = '[crop application] load success',\n}\n\nexport class CropApplicationLoad implements IAction {\n readonly type = CropApplicationActions.CROP_APPLICATION_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class CropApplicationLoadSuccess implements IAction {\n readonly type = CropApplicationActions.CROP_APPLICATION_LOAD_SUCCESS;\n\n constructor(public payload: ICropApplNum[]) {\n }\n}\n","import {IStateStoreWritable} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\nimport {\n CropApplicationLoad,\n CropApplicationLoadSuccess\n} from '../../../../projects/invoker-transport/src/lib/actions/task-management';\nimport {CropTypeStore} from '../base-data/crop.types.store';\nimport {NFertilizationStore} from '../n-fertilization/n-fertilization.store';\nimport ICropApplNum = Data.PfBox.ICropApplNum;\nimport IDatasetFieldMap = Data.Sensor.IDatasetFieldMap;\nimport INFertilizationSummary = Data.TaskManagement.INFertilizationSummary;\nimport IOperationMode = Data.Common.IOperationMode;\n\ninterface ITaskManagementStore extends IStateStoreWritable {\n}\n\n@Injectable({providedIn: 'root'})\nexport class CropApplicationStore extends Store {\n public static _getMost(arr: any[]): any {\n return (arr || []).reduce((acc, el) => {\n acc.k[el] = acc.k[el] ? acc.k[el] + 1 : 1;\n acc.max = acc.max ? acc.max < acc.k[el] ? el : acc.max : el;\n return acc;\n }, {k: {}, max: undefined}).max;\n }\n\n constructor(public backend: ApSignalrService,\n private cropTypeStore: CropTypeStore,\n private nFertilizationStore: NFertilizationStore) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n saved: false,\n saving: false\n });\n\n backend.registerObservable(CropApplicationLoadSuccess).subscribe((d) => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n setTimeout(() => {\n super.SetLoadState();\n this.DispatchBackend(new CropApplicationLoad([]));\n }, 100);\n }\n\n GetApplication(eppoCode: string, ec: number, operatonMode?: IOperationMode): number {\n if (operatonMode?.Key === 'Worktype_Category_Bonitur') {\n return -1;\n }\n if (ec === 0 || super.Listen(s => s.data).getValue().every(v => ec < v.EcMin)) {\n return 0;\n }\n return super.Listen(s => s.data).getValue()\n .Find(v => v?.EppoCode === eppoCode && v?.EcMin <= ec && ec <= v?.EcMax)?.ApplNum ?? undefined;\n }\n\n GetApplicationFromLogfile(logfile: IDatasetFieldMap): number {\n return this.GetApplication(this.cropTypeStore.getDefaultCroptype(logfile.CropType).Eppocode, logfile.Ec);\n }\n\n GetApplicationFromSummary(summary: INFertilizationSummary): number {\n if (!summary) {\n return 0;\n }\n const planBooks = this.nFertilizationStore.getPlanningsBySummaryId(summary.Id);\n const cropKey = CropApplicationStore._getMost(planBooks.map((pB) => this.cropTypeStore.getDefaultCroptype(pB?.MainCropId)?.CropKey));\n return this.GetApplication(cropKey, summary.ECValue, summary.OperationMode);\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport ITaskManagementPlanSummary = Data.TaskManagement.ITaskManagementPlanSummary;\n\nexport enum TaskManagementActions {\n TASK_MANAGEMENT_PLAN_SUMMARIES_LOAD = '[task_management_plan_summaries] load',\n TASK_MANAGEMENT_PLAN_SUMMARY_LOAD_BY_ID = '[task_management_plan_summaries] load by id',\n TASK_MANAGEMENT_PLAN_SUMMARIES_LOAD_SUCCESS = '[task_management_plan_summaries] load success',\n TASK_MANAGEMENT_PLAN_EXPORT = '[task_management_plan] export',\n TASK_MANAGEMENT_PLAN_PLAN_EXPORT_SUCCESS = '[task_management_plan] export success',\n TASK_MANAGEMENT_PLAN_PLAN_EXPORT_FAIL = '[task_management_plan] export fail',\n TASK_MANAGEMENT_REPORT_SEND = '[task_management_plan] send email report'\n}\n\n\nexport class TaskManagementPlanSummariesLoad implements IAction {\n readonly type = TaskManagementActions.TASK_MANAGEMENT_PLAN_SUMMARIES_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class TaskManagementPlanSummariesLoadById implements IAction {\n readonly type = TaskManagementActions.TASK_MANAGEMENT_PLAN_SUMMARY_LOAD_BY_ID;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class TaskManagementPlanSummariesLoadSuccess implements IAction {\n readonly type = TaskManagementActions.TASK_MANAGEMENT_PLAN_SUMMARIES_LOAD_SUCCESS;\n\n constructor(public payload: ITaskManagementPlanSummary[]) {\n }\n}\n\nexport class TaskManagementPlanExport implements IAction {\n readonly type = TaskManagementActions.TASK_MANAGEMENT_PLAN_EXPORT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class TaskManagementPlanExportSuccess implements IAction {\n readonly type = TaskManagementActions.TASK_MANAGEMENT_PLAN_PLAN_EXPORT_SUCCESS;\n\n constructor(public payload: ArrayBuffer) {\n }\n}\n\nexport class TaskManagementPlanExportFail implements IAction {\n readonly type = TaskManagementActions.TASK_MANAGEMENT_PLAN_PLAN_EXPORT_FAIL;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class TaskManagementSendEmailReport implements IAction {\n readonly type = TaskManagementActions.TASK_MANAGEMENT_REPORT_SEND;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {IStateStoreWritable} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {\n ApCustomTypes,\n NetTypes,\n TaskManagementPlanExport,\n TaskManagementPlanExportFail,\n TaskManagementPlanExportSuccess,\n TaskManagementPlanSummariesLoad,\n TaskManagementPlanSummariesLoadSuccess\n} from 'invoker-transport';\nimport {\n TaskManagementPlanSummariesLoadById, TaskManagementSendEmailReport\n} from '../../../../projects/invoker-transport/src/lib/actions/task-management';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport ITaskManagementPlanSummary = Data.TaskManagement.ITaskManagementPlanSummary;\nimport ITaskManagementPlanBook = Data.TaskManagement.ITaskManagementPlanBook;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ITaskManagementStore extends IStateStoreWritable {\n exportSuccess: boolean;\n exportFail: boolean;\n exportedFile: ArrayBuffer;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TaskManagementStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n exportedFile: null,\n loaded: false,\n loading: false,\n saved: false,\n saving: false,\n exportSuccess: false,\n exportFail: false\n });\n\n backend.registerObservable(TaskManagementPlanSummariesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.exportedFile, () => null);\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n\n backend.registerObservable(TaskManagementPlanExportSuccess).subscribe(d => {\n super.SetSaveSuccessState();\n super.Mutate(s => s.exportSuccess, () => true);\n super.Mutate(s => s.exportedFile, () => d.Data);\n });\n\n backend.registerObservable(TaskManagementPlanExportFail).subscribe(d => {\n super.SetSaveFailState();\n super.Mutate(s => s.exportFail, () => true);\n });\n }\n\n public get Tasks$(): SafeBehaviorSubject {\n return this.Listen(x => x.data);\n }\n\n public get Tasks(): ITaskManagementPlanSummary[] {\n return this.Listen(x => x.data).getValue();\n }\n\n /**\n * load task management plan summaries from backend\n */\n public loadTaskManagementPlanSummaries(guid?: string | System.IGuid, bookings?: boolean): void {\n super.SetLoadState();\n super.Mutate(s => s.exportedFile, () => null);\n super.Mutate(s => s.data, () => []);\n\n // load plan for single plan-id\n if (guid?.toString()?.length > 0) {\n this.DispatchBackend(new TaskManagementPlanSummariesLoadById([\n {\n Name: 'planId',\n Type: NetTypes.GUID,\n Value: guid\n },\n {\n Name: 'bookings',\n Type: NetTypes.BOOL,\n Value: bookings\n }\n ]));\n } else {\n // load all\n this.DispatchBackend(new TaskManagementPlanSummariesLoad([]));\n }\n }\n\n public export(plansForExport: ITaskManagementPlanBook[]): void {\n super.SetSaveState();\n super.Mutate(s => s.exportSuccess, () => false);\n super.Mutate(s => s.exportFail, () => false);\n super.DispatchBackend(new TaskManagementPlanExport([\n {\n Name: 'plansForExport',\n Type: ApCustomTypes.Data_TaskManagement_TaskManagementPlanBook + '[]',\n Value: plansForExport\n }\n ]));\n }\n\n public sendReport(planBook: ITaskManagementPlanBook, data: string, email: string): void {\n super.DispatchBackend(new TaskManagementSendEmailReport([\n {\n Name: 'plan',\n Type: ApCustomTypes.Data_TaskManagement_TaskManagementPlanBook,\n Value: planBook\n },\n {\n Name: 'fileContent',\n Type: NetTypes.STRING,\n Value: data\n },\n {\n Name: 'email',\n Type: NetTypes.STRING,\n Value: email\n },\n ]));\n }\n}\n","import {IStreamWatch, Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {\n ApCustomTypes,\n BasicFertilisationPlanBooksDelete,\n BasicFertilisationPlanBooksSaveFail,\n BasicFertilisationPlanBooksSaveSuccess,\n BasicFertilisationPlanBooksUpdate,\n BasicFertilisationSummariesCreate,\n BasicFertilisationSummariesSaveFail,\n BasicFertilisationSummariesSaveSuccess,\n BasicFertilisationSummariesUpdate,\n LoadBasicFertilisationSummaries,\n LoadBasicFertilisationSummariesSuccess,\n NetTypes\n} from 'invoker-transport';\nimport {IStateStore} from '../../ap-interface';\nimport {SafeBehaviorSubject} from 'ts-tooling';\nimport IGuid = System.IGuid;\nimport IBasicFertilisationSummaries = Data.TaskManagement.IBasicFertilisationSummaries;\nimport IBasicFertilisationPlanBooks = Data.TaskManagement.IBasicFertilisationPlanBooks;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IBasicFertilisationSummariesStore extends IStateStore {\n saving: boolean;\n saved: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class BasicFertilisationSummariesStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n saving: false,\n saved: false\n });\n backend.registerObservable(LoadBasicFertilisationSummariesSuccess).subscribe(d => {\n super.Mutate(s => s.data, () => d.Data);\n super.SetLoadFinishState();\n });\n backend.registerObservable(BasicFertilisationSummariesSaveSuccess).subscribe(d => {\n super.SetSaveSuccessState();\n if (d.Data) {\n super.Mutate(s => s.data, o => {\n o = o.Replace(i => i.Id === d.Data.Id, d.Data);\n return o;\n });\n }\n });\n backend.registerObservable(BasicFertilisationSummariesSaveFail).subscribe(_ => {\n super.SetSaveFailState();\n });\n backend.registerObservable(BasicFertilisationPlanBooksSaveSuccess).subscribe(d => {\n super.SetSaveSuccessState();\n super.Mutate(s => s.data, o => {\n for (const iBasicFertilisationSummary of o) {\n const idx = iBasicFertilisationSummary.BasicFertilisationPlanBooks.FindIndex(planBook => planBook.Id === d.Data?.Id);\n if (idx >= 0) {\n iBasicFertilisationSummary.BasicFertilisationPlanBooks[idx] = d.Data;\n }\n }\n return o;\n });\n });\n backend.registerObservable(BasicFertilisationPlanBooksSaveFail).subscribe(_ => {\n super.SetSaveFailState();\n });\n this.AfterDatabaseUpdate.subscribe(() => this.ReloadSource());\n }\n\n public get Summaries$(): SafeBehaviorSubject {\n return this.Listen((s) => s.data);\n }\n\n public get Summaries(): IBasicFertilisationSummaries[] {\n return this.Summaries$.getValue();\n }\n\n public get PlanBooks$(): SafeBehaviorSubject {\n return this.Listen((s) => s.data.map(summary => summary.BasicFertilisationPlanBooks).flat());\n }\n\n public loadBasicFertilisationSummaries(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new LoadBasicFertilisationSummaries([]));\n }\n\n public createBasicFertilisation(basicFertilisationSummaries: IBasicFertilisationSummaries,\n withNotification: boolean = true,\n needRefreshSummaries: boolean = false): IStreamWatch {\n super.SetSaveState();\n return this.DispatchBackend(new BasicFertilisationSummariesCreate([\n {\n Name: 'summary',\n Type: ApCustomTypes.Data_TaskManagement_BasicFertilisationSummaries,\n Value: basicFertilisationSummaries\n },\n {Name: 'withNotification', Type: NetTypes.BOOL, Value: withNotification},\n {Name: 'needRefreshSummaries', Type: NetTypes.BOOL, Value: needRefreshSummaries}\n ]));\n }\n\n public updateBasicFertilisation(basicFertilisationSummaries: IBasicFertilisationSummaries,\n withNotification: boolean = true,\n needRefreshSummaries: boolean = true): IStreamWatch {\n super.SetSaveState();\n return this.DispatchBackend(new BasicFertilisationSummariesUpdate([\n {\n Name: 'summary',\n Type: ApCustomTypes.Data_TaskManagement_BasicFertilisationSummaries,\n Value: basicFertilisationSummaries\n },\n {Name: 'withNotification', Type: NetTypes.BOOL, Value: withNotification},\n {Name: 'needRefreshSummaries', Type: NetTypes.BOOL, Value: needRefreshSummaries}\n ]));\n }\n\n public updateBasicFertilisationPlanBooks(basicFertilisationPlanBooks: IBasicFertilisationPlanBooks[],\n withNotification: boolean = true,\n needRefreshSummaries: boolean = true): IStreamWatch {\n super.SetSaveState();\n return this.DispatchBackend(new BasicFertilisationPlanBooksUpdate([\n {\n Name: 'planBooks',\n Type: ApCustomTypes.Data_TaskManagement_BasicFertilisationPlanBooks + '[]',\n Value: basicFertilisationPlanBooks\n },\n {Name: 'withNotification', Type: NetTypes.BOOL, Value: withNotification},\n {Name: 'needRefreshSummaries', Type: NetTypes.BOOL, Value: needRefreshSummaries}\n ]));\n }\n\n public deleteBasicFertilisationPlanBooks(summaryId: IGuid | string, planBookIds: IGuid[] | string[],\n withNotification: boolean = true,\n needRefreshSummaries: boolean = false): IStreamWatch {\n super.SetSaveState();\n return super.DispatchBackend(new BasicFertilisationPlanBooksDelete([\n {Name: 'summaryId', Type: NetTypes.GUID, Value: summaryId},\n {Name: 'planBookIds', Type: NetTypes.GUID + '[]', Value: planBookIds},\n {Name: 'withNotification', Type: NetTypes.BOOL, Value: withNotification},\n {Name: 'needRefreshSummaries', Type: NetTypes.BOOL, Value: needRefreshSummaries}\n ]));\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport ILanguage = Data.Language.ILanguage;\n\nexport enum LanguageActions {\n LANGUAGE_LOAD = '[language] load',\n LANGUAGE_LOAD_SUCCESS = '[language] load success',\n LANGUAGE_SELECT = '[language] select',\n}\n\n/**\n * load the supported Languages from Gateway\n */\nexport class LanguageLoad implements IAction {\n readonly type = LanguageActions.LANGUAGE_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\n/**\n * Language request was ok and has the List of available Languages\n */\nexport class LanguageLoadSuccess implements IAction {\n readonly type = LanguageActions.LANGUAGE_LOAD_SUCCESS;\n\n constructor(public payload: ILanguage[]) {\n }\n}\n\n/**\n * the User select a Language from List of available Languages\n */\nexport class LanguageSelect implements IAction {\n readonly type = LanguageActions.LANGUAGE_SELECT;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {\n LanguageLoad,\n LanguageLoadSuccess,\n UserLoginSuccess,\n NetTypes\n} from 'invoker-transport';\nimport {filter} from 'rxjs/operators';\nimport {combineLatest, Observable} from 'rxjs';\nimport {ClientCache} from '../local-cache';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {LanguageSelect} from '../../../../projects/invoker-transport/src/lib/actions/translation';\nimport ILanguage = Data.Language.ILanguage;\nimport IResultMessage = Invoker.IResultMessage;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface ILanguageState extends IStateStore {\n selectedLanguage: ILanguage;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LanguageStore extends Store {\n\n constructor(public backend: ApSignalrService) {\n super(backend, {\n data: [],\n loaded: false,\n loading: false,\n selectedLanguage: null,\n });\n\n backend.registerObservable(LanguageLoadSuccess).subscribe((l: IResultMessage) => {\n super.Mutate(s => s.data, () => l.Data);\n this._setDefaultBrowserLanguage(l ? l.Data : []);\n this._setLanguageFromLocalStorage(l.Data);\n super.SetLoadFinishState();\n this.languageLoadComplete.emit();\n });\n\n combineLatest([\n super.Listen(s => s.selectedLanguage),\n backend.registerObservable(UserLoginSuccess)])\n .pipe(filter(([selectedLanguage]) => selectedLanguage != null))\n .subscribe(([selectedLanguage]) => {\n super.DispatchBackend(new LanguageSelect([\n {Name: 'selectedLanguageKey', Type: NetTypes.STRING, Value: selectedLanguage?.Key}\n ]));\n });\n }\n\n public get Loading$(): Observable {\n return super.Listen(s => s.loading);\n }\n\n public get SelectedLanguage$(): Observable {\n return super.Listen(s => s.selectedLanguage)\n .pipe(filter(e => !!e));\n }\n\n public get SelectedLanguage(): ILanguage {\n return super.Listen(s => s.selectedLanguage).getValue();\n }\n\n public get CurrentDateFormat(): string {\n return this.SelectedLanguage.DateFormat;\n }\n\n public get IsoDateFormat(): string {\n return 'YYYY-MM-DD';\n }\n\n public get CurrentTimeFormat(): string {\n return this.SelectedLanguage.TimeFormat;\n }\n\n public get IsoTimeFormat(): string {\n return 'HH:mm:ss';\n }\n\n public get CurrentDateTimeFormat(): string {\n return `${this.CurrentDateFormat} ${this.CurrentTimeFormat}`;\n }\n\n public get IsoDateTimeFormat(): string {\n return `${this.IsoDateFormat}T${this.IsoTimeFormat}`;\n }\n\n public get LanguageList(): ILanguage[] {\n return super.Listen(s => s.data).getValue();\n }\n\n public static DefaultLanguage = {\n Key: 'en',\n DateFormat: '',\n TimeFormat: '',\n LanguageName: 'English',\n Order: 1,\n ThousandSeperator: ',',\n DecimalSeperator: '.'\n } as ILanguage;\n\n public languageLoadComplete = new EventEmitter();\n\n public Load(): void {\n super.SetLoadState();\n super.Mutate(s => s.data, () => []);\n super.DispatchBackend(new LanguageLoad([]));\n }\n\n public SelectLanguage(language: ILanguage): void {\n super.Mutate(s => s.selectedLanguage, () => language);\n }\n\n public FormatNumber(value: number): string {\n const language = this.SelectedLanguage || LanguageStore.DefaultLanguage;\n const isNegative: boolean = value < 0;\n const valueInString: string = Math.abs(value).toString();\n const parts: string[] = valueInString.split('.');\n const wholePart: string = parts[0];\n const decimalPart: string = parts[1] || '';\n let formattedWhole = '';\n let count = 0;\n for (let i = wholePart.length - 1; i >= 0; i--) {\n count++;\n formattedWhole = wholePart.charAt(i) + formattedWhole;\n if (count % 3 === 0 && i !== 0) {\n formattedWhole = language.ThousandSeperator + formattedWhole;\n }\n }\n let formattedStr: string = decimalPart ? formattedWhole + language.DecimalSeperator + decimalPart : formattedWhole;\n if (isNegative) {\n formattedStr = '-' + formattedStr;\n }\n return formattedStr;\n }\n\n public saveSelectedLanguageToLocalStorage(): void {\n if (this.SelectedLanguage?.Key) {\n ClientCache.writeValue(APP_CONFIGURATION.StoreKeys.LastUsedLanguageKey, this.SelectedLanguage?.Key);\n }\n }\n\n /**\n * set the default browser language\n */\n private _setDefaultBrowserLanguage(data: ILanguage[]): void {\n let lang = window.navigator.languages ? window.navigator.languages[0] : null;\n lang = lang || window.navigator.language;\n if (lang.indexOf('-') !== -1) {\n lang = lang.split('-')[0];\n }\n if (lang.indexOf('_') !== -1) {\n lang = lang.split('_')[0];\n }\n const found = data.filter(_ => _.Key === lang);\n this.SelectLanguage(found ? found[0] : data[0]);\n }\n\n private _setLanguageFromLocalStorage(languages: ILanguage[]): void {\n const savedLanguageKey = ClientCache.readValue(APP_CONFIGURATION.StoreKeys.LastUsedLanguageKey);\n if (!savedLanguageKey) {\n return;\n }\n if (savedLanguageKey === this.SelectedLanguage?.Key) {\n return;\n }\n const language = languages.find(x => x.Key === savedLanguageKey);\n if (!language) {\n return;\n }\n this.SelectLanguage(language);\n }\n}\n","import {Store} from '../index';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {\n NetTypes,\n TranslationCreate,\n TranslationSaveSuccess,\n TranslationUpdate\n} from 'invoker-transport';\nimport {\n APP_CONFIGURATION\n} from '../../ap-core/config';\nimport {\n LanguageStore\n} from './language.store';\nimport * as axios from 'axios';\nimport IMissingTranslations = Data.Tracelog.IMissingTranslations;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\nimport {SafeBehaviorSubject} from 'ts-tooling';\n\nexport interface ITranslationState {\n loaded: boolean;\n loading: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class TranslationStore extends Store {\n public translationsLoaded = new EventEmitter();\n /**\n * For performance reasons we keep translations in a simple datastructure\n * without observables\n * @private\n */\n private _translationCache: Map = new Map();\n\n constructor(public backend: ApSignalrService,\n public languageStore: LanguageStore) {\n super(backend, {\n loaded: false,\n loading: false\n });\n\n backend.registerObservable(TranslationSaveSuccess).subscribe(d => {\n super.Mutate(s => s.loading, () => false);\n const savedTranslation = d.Data;\n if (savedTranslation) {\n const key = `${savedTranslation.CountryCode}_${savedTranslation.TranslationKey}`;\n this._translationCache.set(key, savedTranslation.translation);\n }\n });\n }\n\n private static _fillParameter(value: string, params: string[] = []): string {\n for (let pIdx = 0; pIdx < params?.length; pIdx++) {\n if (!params.hasOwnProperty(pIdx)) {\n continue;\n }\n const findResult = '{' + pIdx + '}';\n const replacer = params[pIdx];\n if (!value) {\n continue;\n }\n value = value.split(findResult).join(replacer);\n }\n return value;\n }\n\n public get Loading$(): SafeBehaviorSubject {\n return super.Listen(s => s.loading);\n }\n\n /**\n * 1. request all Translation Versions mapped by Translation ID from the Backend\n * 2. get the Difference from the IndexDB\n * 3. update IndexDB Translations\n * 4. load IndexDB Translations into the State\n */\n public LoadTranslations(key: string): void {\n this._translationCache = new Map();\n this.Mutate(s => s.loaded, () => false);\n this.Mutate(s => s.loading, () => true);\n axios.default.get('/translations/' + key).then(d => {\n if (d.status >= 400) {\n this.Mutate(s => s.loaded, () => false);\n this.Mutate(s => s.loading, () => false);\n this.translationsLoaded.emit();\n return;\n }\n for (const k of Object.getOwnPropertyNames(d.data)) {\n this._translationCache.set(k, d.data[k]?.translation);\n }\n this.Mutate(s => s.loaded, () => true);\n this.Mutate(s => s.loading, () => false);\n this.translationsLoaded.emit();\n });\n }\n\n\n /**\n * looking for a Translation in the State and returns the Translation in de or en or as Translation Key\n */\n public FindTranslation(value: string, countryCode: string, params: string[] = []): string {\n if (!value || !value.trim()) {\n return '';\n }\n const key = `${countryCode}_${value}`;\n const defaultKey = `${APP_CONFIGURATION.DefaultLanguage}_${value}`;\n let translation = this.GetTranslationByKey(key);\n if (!translation) {\n translation = this.GetTranslationByKey(defaultKey);\n if (!translation) {\n // disabled for performance testing\n // if (APP_CONFIGURATION.WriteMissingTranslations && (value?.includes('_') || value?.includes('kendo'))) {\n // this._missingTranslations[key] = {\n // Id: 0,\n // TranslationKey: value,\n // CountryCode: countryCode || 'en',\n // LastUsed: new Date(),\n // UsedCount: -1\n // };\n // this.SendMissingTranslation(this._missingTranslations[key]);\n // }\n return value;\n }\n }\n return TranslationStore._fillParameter(translation, params);\n }\n\n /**\n * informs the Backend for a missing Translation Key\n */\n public SendMissingTranslation(payload: IMissingTranslations): void {\n // disabled for performance testing\n // super.DispatchBackend(new TranslationMissing([\n // {Name: 'missing', Type: ApCustomTypes.Data_Tracelog_MissingTranslations, Value: payload}\n // ]));\n }\n\n /**\n * find the Translation for the Selected Language\n */\n public FindTranslationForSelectedLanguage(value: string, params: string[] = []): string {\n if (!this.languageStore?.SelectedLanguage) {\n return value;\n }\n return this.FindTranslation(value, this.languageStore?.SelectedLanguage?.Key, params);\n }\n\n /**\n * returns the Translation by the Translation Key\n * it must exist otherwise an Error was thrown\n */\n public GetTranslationByKey(key: string): string {\n if (this._translationCache) {\n return this._translationCache.get(key);\n } else {\n return undefined;\n }\n }\n\n public UpdateTranslation(translation: any): void {\n super.DispatchBackend(new TranslationUpdate([\n {Name: 'translation', Type: NetTypes.OBJECT, Value: translation}\n ]));\n }\n\n public CreateTranslation(translation: any): void {\n super.DispatchBackend(new TranslationCreate([\n {Name: 'translation', Type: NetTypes.OBJECT, Value: translation}\n ]));\n }\n}\n","import {NgModule} from '@angular/core';\nimport {ApTranslationPipe} from './pipes/ap-translation.pipe';\nimport {ApTranslationArrayPipe} from './pipes/ap-translation-array.pipe';\nimport {ApTranslationAsyncPipe} from './pipes/ap-translation-async.pipe';\n\n@NgModule({\n declarations: [\n ApTranslationPipe,\n ApTranslationAsyncPipe,\n ApTranslationArrayPipe\n ],\n exports: [\n ApTranslationPipe,\n ApTranslationAsyncPipe,\n ApTranslationArrayPipe\n ],\n providers: [\n ApTranslationPipe,\n ApTranslationAsyncPipe,\n ApTranslationArrayPipe\n ]\n})\nexport class ApTranslationModule {\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {ObjectFactory} from 'ts-tooling';\n\n@Pipe({\n name: 'translate_array'\n})\nexport class ApTranslationArrayPipe implements PipeTransform {\n\n constructor(private languageStore: LanguageStore,\n private translationStore: TranslationStore) {\n }\n\n transform(values: any[], textField = ''): Observable {\n if (textField !== '') {\n return this.getObservableObject(values, textField);\n } else {\n return this.getObservableString(values);\n }\n }\n\n private getObservableObject(values: any[], textField: string): Observable {\n const stream = new BehaviorSubject(\n values.map(value => this.updateTextField(value, textField))\n );\n\n this.translationStore.translationsLoaded.subscribe(() => {\n stream.next(values.map(value => this.updateTextField(value, textField)));\n });\n\n return stream;\n }\n\n private updateTextField(o: any, textField: string): any {\n o = ObjectFactory.Copy(o);\n o[textField] = this.translationStore.FindTranslation(o[textField], this.languageStore?.SelectedLanguage?.Key);\n return o;\n }\n\n private getObservableString(values: string[]): Observable {\n const stream = new BehaviorSubject(\n values.map(value => this.translationStore.FindTranslation(value, this.languageStore?.SelectedLanguage?.Key))\n );\n\n this.translationStore.translationsLoaded.subscribe(() => {\n stream.next(values.map(value => this.translationStore.FindTranslation(value, this.languageStore?.SelectedLanguage?.Key)));\n });\n\n return stream;\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Trace} from '../../debug-utils/ApplicationTracer';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n\n/**\n * Translation Pipe\n */\n@Pipe({\n name: 'translateAsync'\n})\nexport class ApTranslationAsyncPipe implements PipeTransform {\n constructor(private languageStore: LanguageStore,\n private translationStore: TranslationStore) {\n }\n\n @Trace()\n transform(value: string): Observable {\n return this.getObservable(value);\n }\n\n private getObservable(value: string): Observable {\n const language = this.languageStore.SelectedLanguage;\n const stream = new BehaviorSubject(\n this.translationStore.FindTranslation(value, language ? language.Key : 'en')\n );\n\n this.translationStore.translationsLoaded.subscribe(() => {\n stream.next(this.translationStore.FindTranslation(value, this.languageStore?.SelectedLanguage?.Key));\n });\n return stream;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Trace} from '../../debug-utils/ApplicationTracer';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\n\n/**\n * Translation Pipe Interface\n */\nexport interface IApTranslationPipe {\n transform(value: string): string;\n}\n\n/**\n * Translation Pipe\n */\n@Pipe({\n name: 'translate'\n})\nexport class ApTranslationPipe implements PipeTransform, IApTranslationPipe {\n constructor(private languageStore: LanguageStore,\n private translationStore: TranslationStore) {\n }\n\n @Trace()\n transform(value: string): string {\n return this.translationStore.FindTranslation(value, this.languageStore?.SelectedLanguage?.Key);\n }\n}\n","export type ThumbnailParam = {\n Name: string;\n Width: number,\n Height: number,\n Quality: number,\n MimeType: string\n};\n\nexport enum FileType {\n Other = 0,\n Image = 1,\n Video = 2\n}\n","import IGuid = System.IGuid;\n\n/**\n * Represents N-application entry with field, fertilization and uptake data\n */\nexport interface IContentNRelatedPlanBook {\n PlanBookId: IGuid;\n FieldId: IGuid;\n OperationModeId: number | null;\n ProductId: number | null;\n FieldGeomId: IGuid;\n CropTypeId: number | null;\n EcValue: number;\n ApplicationDate: Date;\n NUptake: IContentNRelatedPlanBookStatisticValue | null;\n NFertilization: IContentNRelatedPlanBookStatisticValue | null;\n SourceType: ContentNRelatedPlanBookSourceType;\n BookedAt: Date | null;\n PlanBookApplicationDate: Date | null;\n}\n\n/**\n * Statistical values for N-application measurements\n */\nexport interface IContentNRelatedPlanBookStatisticValue {\n Min: number;\n Max: number;\n Average: number;\n}\n\n/**\n * Defines the origin source of the plan book data\n */\nexport enum ContentNRelatedPlanBookSourceType {\n LogFilePlanBook = 0,\n NFertPlanBook = 1,\n BaseFertPlanBook = 2\n}\n","import {ApMenuUrls} from '../app/ap-interface';\n\nexport const environment = {\n Production: true,\n BackendAddress: 'https://www.agriport.com',\n StartRoute: ApMenuUrls.FIELD_MANAGEMENT_OVERVIEW,\n UploadSaveUrl: 'uploadSaveUrl',\n UploadRemoveUrl: 'uploadRemoveUrl',\n ButtonZoomToMapImage: '../assets/img/zoomtomap_small.png',\n AcademyUrl: 'https://academy.scrollhelp.site/academy/',\n TeamViewerUrl: 'https://get.teamviewer.com/68f6t3e',\n ParallelFileUpload: 1,\n RoundNumericPlaces: 2,\n Debug: false,\n LongRunningFunctionTimeout: 0,\n GridPageSize: 100,\n GridPageSizeOptions: [100, 250, 500],\n MaxNotifications: 1,\n WriteMissingTranslations: false,\n SpecialDecimalPlaces: {\n SoilGroups: 0,\n Distributions: 1,\n CropExtraction: 2,\n InorgFertContent: 1,\n InorgFertCaO: 1,\n InorgFertDensity: 2,\n OrgFertContent: 2,\n OrgFertDryMatter: 2,\n OrgFertDensity: 2,\n OrgFertNEff: 0\n },\n StoreKeys: {\n LastUsedLanguageKey: 'last_used_language_key',\n LastVisitFarmId: 'last_visit_farm_id',\n LastVisitUrl: 'last_visit_url',\n LastVisitUrlParams: 'last_visit_url_params',\n LastVisitCampaignYear: 'last_visit_campaignyear',\n },\n MapFactory: {\n Address: 'https://maps.agriport.com',\n StoreKey: 'map-factory-session',\n }\n};\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {SidebarMode} from '../ap-interface';\n\nexport const LOGO_SCALE = trigger('logoScale', [\n state(SidebarMode.OPEN, style({\n top: '15px',\n left: '30px',\n height: '45px',\n width: '131px',\n 'font-size': '45px'\n })),\n state(SidebarMode.HALF, style({\n top: '8px',\n left: '15px',\n height: '22px',\n width: '65px',\n 'font-size': '22px'\n })),\n state(SidebarMode.CLOSE, style({\n top: '8px',\n left: '15px',\n height: '22px',\n width: '65px',\n 'font-size': '22px'\n })),\n transition(`${SidebarMode.OPEN} => ${SidebarMode.HALF}`, animate(200)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.OPEN}`, animate(200)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.CLOSE}`, animate(200)),\n transition(`${SidebarMode.OPEN} => ${SidebarMode.CLOSE}`, animate(200)),\n transition(`${SidebarMode.CLOSE} => ${SidebarMode.OPEN}`, animate(200))\n]);\n","import {animate, animateChild, query, state, style, transition, trigger} from '@angular/animations';\nimport {SidebarMode} from '../ap-interface';\n\nconst DURATION = 200;\nconst SIDEBAR_TRANSLATE_TEXT_IN = style({\n transform: 'translateX(0px)',\n opacity: '1',\n});\nconst SIDEBAR_TRANSLATE_TEXT_OUT = style({\n transform: 'translateX(-250px)',\n opacity: '0',\n});\n\nconst SIDEBAR_TOGGLE_ICON_ROTATE_LEFT = style({\n transform: 'rotateZ(0deg)'\n});\nconst SIDEBAR_TOGGLE_ICON_ROTATE_RIGHT = style({\n transform: 'rotateZ(180deg)'\n});\n\nconst SIDEBAR_WIDTH_FULL = style({\n 'flex-basis': '233px',\n width: '233px',\n});\nconst SIDEBAR_WIDTH_HALF = style({\n 'flex-basis': '38px',\n width: '38px',\n});\nconst SIDEBAR_WIDTH_NONE = style({\n 'flex-basis': '0px',\n width: '0px',\n});\n\nexport const SIDEBAR_TRANSLATE = trigger('sidebarTranslate', [\n state(SidebarMode.OPEN, SIDEBAR_WIDTH_FULL),\n state(SidebarMode.HALF, SIDEBAR_WIDTH_HALF),\n state(SidebarMode.CLOSE, SIDEBAR_WIDTH_NONE),\n state(SidebarMode.MOBILE, SIDEBAR_WIDTH_NONE),\n transition(`${SidebarMode.CLOSE} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.MOBILE} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.OPEN} => ${SidebarMode.HALF}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.CLOSE}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.MOBILE}`, animate(DURATION)),\n ])\n;\n\nexport const SIDEBAR_TRANSLATE_TEXT = trigger('translateText', [\n state(SidebarMode.OPEN, SIDEBAR_TRANSLATE_TEXT_IN),\n state(SidebarMode.HALF, SIDEBAR_TRANSLATE_TEXT_OUT),\n state(SidebarMode.CLOSE, SIDEBAR_TRANSLATE_TEXT_OUT),\n state(SidebarMode.MOBILE, SIDEBAR_TRANSLATE_TEXT_OUT),\n transition(`${SidebarMode.CLOSE} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.MOBILE} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.OPEN} => ${SidebarMode.HALF}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.CLOSE}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.MOBILE}`, animate(DURATION)),\n]);\n\nexport const SIDEBAR_ROTATE_ICON = trigger('rotateIcon', [\n state(SidebarMode.OPEN, SIDEBAR_TOGGLE_ICON_ROTATE_LEFT),\n state(SidebarMode.HALF, SIDEBAR_TOGGLE_ICON_ROTATE_RIGHT),\n state(SidebarMode.CLOSE, SIDEBAR_TOGGLE_ICON_ROTATE_RIGHT),\n state(SidebarMode.MOBILE, SIDEBAR_TOGGLE_ICON_ROTATE_RIGHT),\n transition(`${SidebarMode.CLOSE} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.MOBILE} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.OPEN} => ${SidebarMode.HALF}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.OPEN}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.CLOSE}`, animate(DURATION)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.MOBILE}`, animate(DURATION)),\n]);\n\nexport const ANIMATE_CHILD = trigger('animateChild', [\n transition('* => *', [query('@*', animateChild(), {optional: true})])\n]);\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {MapViewMode, SidebarMode} from '../ap-interface';\n\nexport const CHANGE_WIDTH = trigger('changeWidth', [\n state(SidebarMode.OPEN, style({\n 'flex-basis': '233px',\n width: '233px',\n })),\n state(SidebarMode.HALF, style({\n 'flex-basis': '38px',\n width: '38px',\n })),\n state(SidebarMode.CLOSE, style({\n 'flex-basis': '0px',\n width: '0px',\n })),\n state(SidebarMode.MOBILE, style({\n 'flex-basis': '0px',\n width: '0px',\n })),\n transition(`${SidebarMode.CLOSE} => ${SidebarMode.OPEN}`, animate(200)),\n transition(`${SidebarMode.MOBILE} => ${SidebarMode.OPEN}`, animate(200)),\n transition(`${SidebarMode.OPEN} => ${SidebarMode.HALF}`, animate(200)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.OPEN}`, animate(200)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.CLOSE}`, animate(200)),\n transition(`${SidebarMode.HALF} => ${SidebarMode.MOBILE}`, animate(200)),\n]);\n\nexport const CHANGE_WIDTH_MAP_VIEW = trigger('changeWidthMapView', [\n state(MapViewMode.MAXIMIZE, style({\n width: '95%',\n })),\n state(MapViewMode.NORMAL, style({\n width: '50%',\n })),\n state(MapViewMode.HIDE, style({\n width: '0%',\n })),\n transition(`${MapViewMode.MAXIMIZE} => ${MapViewMode.NORMAL}`, animate(200)),\n transition(`${MapViewMode.NORMAL} => ${MapViewMode.HIDE}`, animate(200)),\n transition(`${MapViewMode.HIDE} => ${MapViewMode.NORMAL}`, animate(200)),\n transition(`${MapViewMode.NORMAL} => ${MapViewMode.MAXIMIZE}`, animate(200)),\n]);\n\nexport const CHANGE_WIDTH_MAIN_VIEW = trigger('changeWidthMainView', [\n state(MapViewMode.MAXIMIZE, style({\n width: '5%',\n })),\n state(MapViewMode.NORMAL, style({\n width: '50%',\n })),\n state(MapViewMode.HIDE, style({\n width: '100%',\n })),\n transition(`${MapViewMode.MAXIMIZE} => ${MapViewMode.NORMAL}`, animate(200)),\n transition(`${MapViewMode.NORMAL} => ${MapViewMode.HIDE}`, animate(200)),\n transition(`${MapViewMode.HIDE} => ${MapViewMode.NORMAL}`, animate(200)),\n transition(`${MapViewMode.NORMAL} => ${MapViewMode.MAXIMIZE}`, animate(200)),\n]);\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {ApVisibleStates} from '../ap-interface/enums';\n\nexport const TRANSLATE_COMPONENT = trigger('translateComponent', [\n state(ApVisibleStates.IN, style({\n display: 'none'\n })),\n state(ApVisibleStates.OUT, style({\n display: 'unset'\n })),\n transition(`${ApVisibleStates.IN} => ${ApVisibleStates.OUT}`, animate(100)),\n transition(`${ApVisibleStates.OUT} => ${ApVisibleStates.IN}`, animate(100)),\n]);\n","import {IAction} from '../../interfaces';\n\nexport class ClientOutdated implements IAction {\n readonly type = '[system] client outdated';\n\n constructor() {\n }\n}\n\nexport class SessionOutdated implements IAction {\n readonly type = '[system] session outdated';\n\n constructor() {\n }\n}\n\nexport class SessionLost implements IAction {\n readonly type = '[system] session lost';\n\n constructor() {\n }\n}\n\nexport class SessionPing implements IAction {\n readonly type = '[system] session ping';\n\n constructor() {\n }\n}\n","import {IStateStore} from '../../ap-interface/interfaces/store';\nimport {Store} from '../index';\nimport {Injectable} from '@angular/core';\nimport {ApMenuUrls, PageMode} from '../../ap-interface/enums';\nimport {LoginStore} from '../login/login.store';\nimport {LanguageStore} from '../translation/language.store';\nimport {TranslationStore} from '../translation/translation.store';\nimport {IRouterStateUrl, RouterStore} from '../router/router.store';\nimport {merge} from 'rxjs';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n\ninterface IPageStore extends IStateStore {\n mode: PageMode;\n}\n\n@Injectable({providedIn: 'root'})\nexport class PageStore extends Store {\n constructor(public backend: ApSignalrService,\n private loginStore: LoginStore,\n private routerStore: RouterStore,\n private translationStore: TranslationStore,\n private languageStore: LanguageStore) {\n super(backend, {\n data: [],\n loading: false,\n loaded: false,\n mode: PageMode.LOADINGSCREEN,\n });\n\n this.loginStore.BeforeNavigateToLogin.Subscribe('PageStore', () => {\n super.Mutate(s => s.mode, () => PageMode.HALFSCREEN);\n });\n\n merge(\n this.routerStore.Listen(s => s),\n this.translationStore.Listen(s => s.loaded),\n this.languageStore.Listen(s => s.loaded),\n ).subscribe(d => {\n if (!d) {\n return;\n }\n this._redirect(d as IRouterStateUrl);\n // wait for Mutation to be complete\n setTimeout(() => this._setPageMode(), 1);\n });\n }\n\n private _redirect(routerState: IRouterStateUrl): void {\n if (routerState && routerState.url === ApMenuUrls.LOGIN) {\n this.loginStore.loginWithCookie();\n }\n if (routerState && routerState.data && routerState.data.login === true &&\n this.loginStore.IsLoggedIn$.getValue() === false) {\n this.routerStore.navigateToLogin().then(() => {\n });\n }\n }\n\n private _setPageMode(): void {\n const ROUTER_DATA = this.routerStore.Listen(s => s.data).getValue();\n const TRANSLATION_LOADED = this.translationStore.Listen(s => s.loaded).getValue();\n const LANGUAGE_LOADED = this.languageStore.Listen(s => s.loaded).getValue();\n if (!ROUTER_DATA) {\n return;\n }\n\n if (TRANSLATION_LOADED && LANGUAGE_LOADED) {\n if (ROUTER_DATA.layout === PageMode.FULLSCREEN) {\n super.Mutate(s => s.mode, () => PageMode.FULLSCREEN);\n } else {\n super.Mutate(s => s.mode, () => PageMode.HALFSCREEN);\n }\n } else {\n super.Mutate(s => s.mode, () => PageMode.LOADINGSCREEN);\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {combineLatest, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\nimport {Create} from 'ts-tooling';\nimport {AgriportConstantsEnum, BaseFertLicenseAmountAbs} from '../../../ap-interface/enums/ap-agriport-constants.enum';\nimport {\n IModalDialogResult\n} from '../../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {ModalDialogButtonKeys, ModalDialogPresets} from '../../../stores/dialog/modal.dialog.presets';\nimport {SoilSampleDateStore} from '../../../stores/nutrients/soilsampledate.store';\nimport {SoilSampleDateService} from '../soil-sample-date.service';\nimport {CampaignYearStore} from '../../../stores/login/campaignyear.store';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {AgriportConstantsService} from '../../common/agriport-constants.service';\nimport {TranslationStore} from '../../../stores/translation/translation.store';\nimport {GetRoundNumericService} from '../../../ap-utils/service/get-round-numeric.service';\nimport {LicenseStore} from '../../../stores/farm/license.store';\nimport {ModalDialogStore} from '../../../stores/dialog/modal.dialog.store';\nimport {ApDateService, DateDiffType} from '../../../ap-core/services/ap-date-service';\nimport {LicenseService} from './license.service';\nimport {LoginStore} from '../../../stores/login/login.store';\nimport {ApFeatureModulKey} from '../../../ap-interface/enums/ap-feature-modul-key.enum';\nimport ILicense = Data.Licensing.ILicense;\nimport IField = Data.FieldManagement.IField;\nimport ICampaignYear = Data.Authentication.ICampaignYear;\nimport LicenseAdjustAction = Data.Licensing.Enums.LicenseAdjustAction;\n\n@Injectable({providedIn: 'root'})\nexport class LicenseNotificationService {\n private _baseFertilizationLicenseSubscription: Subscription;\n\n constructor(private fieldStore: FieldStore,\n private loginStore: LoginStore,\n private licenseStore: LicenseStore,\n private modalDialogStore: ModalDialogStore,\n private translationStore: TranslationStore,\n private campaignYearStore: CampaignYearStore,\n private soilSampleDateStore: SoilSampleDateStore,\n private dateService: ApDateService,\n private licenseService: LicenseService,\n private roundService: GetRoundNumericService,\n private soilSampleDatesService: SoilSampleDateService,\n private agriportConstantsService: AgriportConstantsService,\n private modalDialogPresets: ModalDialogPresets) {\n }\n\n /**\n * Checks the base fertilization license and triggers adjustment logic\n * This method:\n * - Monitors license and field data\n * - Compares licensed area with actual field area\n * - Displays a modal dialog if area exceeds license threshold\n * - Allows user to extend or skip license adjustment\n * Subscription is managed to prevent multiple concurrent checks\n * @public\n */\n public invokeBaseFertilisationLicenseAdjustmentLogic(): void {\n // Here we show modal window about license information with an ability to extend it.\n // It shows in case when the amount of area for current campaign year is > or < 10 % from the licensed base fertilisation modul feature area\n if (!!this._baseFertilizationLicenseSubscription) {\n return;\n }\n this._baseFertilizationLicenseSubscription = combineLatest([\n this.loginStore.baseDataLoaded$,\n this.licenseStore.licenseData$,\n this.fieldStore.Fields$,\n this.campaignYearStore.SelectedCampaignYear$,\n this.soilSampleDateStore.Dates$,\n this.loginStore.SelectedFarm$\n ]).pipe(\n // Filter data presence, data loading and is campaign year latest\n filter(([loadedData, licenses, fields, selectedCampaignYear, _, selectedFarm]) => {\n return loadedData.every(loaded => loaded) && !!selectedFarm?.Id && !!selectedCampaignYear?.Year\n && licenses?.length > 0 && fields?.length > 0 && this.licenseService.isLatestLicensedYear();\n }),\n // Map needed data for filtering and data usage for calculations\n map(([, , fields, selectedCampaignYear, soilSampleDates, selectedFarm]) => {\n const fieldsWithValidSoilSample = this.soilSampleDatesService.getFieldsWithValidSoilSampleDate(fields, soilSampleDates)\n .filter(x => x.FarmId === selectedFarm.Id);\n const license = this.licenseService.getValidBaseFertilizationLicense();\n return ([license, fieldsWithValidSoilSample, selectedCampaignYear] as [ILicense, IField[], ICampaignYear]);\n }),\n // Filter data to be sure that it meets conditions to check license\n filter(([license, fields, _]) => {\n return !!license && !this._checkIsTrialPeriodValid(license?.TrialExpireAt)\n && fields.length > 0\n && license.QuantityErp && !license.NoCheck;\n })\n ).subscribe(([license, fields, selectedCampaignYear]) => {\n const fieldsAreaHaSum = fields.map(x => this.fieldStore.getFieldGeom(x, selectedCampaignYear))\n .reduce((total, current) => total + Create(current?.AreaHa, 0), 0);\n let quantityForConditionActivation = 0;\n const licenseComparisonType = this.agriportConstantsService.GetConstant(AgriportConstantsEnum.BaseFertLicenseAmountAbs);\n const licenseComparisonAmount = +this.agriportConstantsService.GetConstant(AgriportConstantsEnum.BaseFertLicenseAmountDiff);\n if (!isFinite(licenseComparisonAmount) || licenseComparisonAmount <= 0) {\n this._baseFertilizationLicenseSubscription.unsubscribe();\n this._baseFertilizationLicenseSubscription = undefined;\n return;\n }\n switch (licenseComparisonType) {\n case BaseFertLicenseAmountAbs.Hectare:\n quantityForConditionActivation = licenseComparisonAmount;\n break;\n case BaseFertLicenseAmountAbs.Percent:\n quantityForConditionActivation = fieldsAreaHaSum * licenseComparisonAmount / 100;\n break;\n }\n let modalWindowMessage = '';\n switch (true) {\n case fieldsAreaHaSum >= license.QuantityErp + quantityForConditionActivation:\n modalWindowMessage = this.translationStore.FindTranslationForSelectedLanguage('InfoText__Base_Fert_Feature_Area_Lower');\n break;\n default:\n this._baseFertilizationLicenseSubscription.unsubscribe();\n this._baseFertilizationLicenseSubscription = undefined;\n return;\n }\n const farmQuantityTranslation = this.translationStore.FindTranslationForSelectedLanguage('InfoText__Farm_Area_Quantity');\n const licenseQuantityTranslation = this.translationStore.FindTranslationForSelectedLanguage('InfoText__Licensed_Area_Quantity');\n modalWindowMessage += `\\r\\n\\r\\n${farmQuantityTranslation}: ${this.roundService.round(fieldsAreaHaSum)} ha` +\n `\\r\\n${licenseQuantityTranslation}: ${license.QuantityErp} ha`;\n this.modalDialogStore.setModalDialogData(this.modalDialogPresets.ExtendLicenseDialog({\n message: modalWindowMessage,\n resultDelegate: (dialogResult: IModalDialogResult): void => {\n let adjustAction = LicenseAdjustAction.Skip;\n if (dialogResult?.key === ModalDialogButtonKeys.Confirm) {\n adjustAction = LicenseAdjustAction.Adjust;\n }\n this.licenseStore.adjustLicenseRequest(ApFeatureModulKey.BaseFertilization, adjustAction);\n this._baseFertilizationLicenseSubscription.unsubscribe();\n this._baseFertilizationLicenseSubscription = undefined;\n }\n }));\n });\n }\n\n /**\n * Determines if the trial period for a license is still valid\n * Checks if the trial expiration date is for today or in the future\n * @param trialExpireAt Optional trial expiration date\n * @returns Boolean indicating if trial period is still valid\n * @private\n */\n private _checkIsTrialPeriodValid(trialExpireAt?: Date): boolean {\n if (trialExpireAt) {\n const currentDate = this.dateService.getDateMidnight(this.dateService.getFarmDate());\n const dayDifference = this.dateService.getDateDiff(new Date(trialExpireAt), currentDate,\n DateDiffType.Days);\n if (dayDifference >= 0) {\n return true;\n }\n }\n return false;\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\n@Component({\n selector: 'ap-tooltip',\n templateUrl: './ap-tooltip.component.html',\n styles: []\n})\nexport class ApTooltipComponent {\n @Input() text: string;\n token: string[];\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n getHtml(text: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(text);\n }\n}\n","\n","import {Component, EventEmitter, Output} from '@angular/core';\n\n@Component({\n selector: 'notify-message',\n template: `\n {{ message }}\n \n `\n})\n\nexport class ApNotifyMessageComponent {\n // (dirty) workaround for passing the message to the message-component.\n // if passing the message after creation of the component kendo position calculation\n // does not consider the new message -> notifcation not centered.\n public static InitialMessage: string;\n @Output() public hide: EventEmitter = new EventEmitter();\n public message = '';\n\n constructor() {\n this.message = ApNotifyMessageComponent.InitialMessage;\n }\n\n public hideNotification(event: Event): void {\n event.preventDefault();\n this.hide.emit();\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, ViewChild, ViewContainerRef, Input, TemplateRef, HostBinding, Component, ChangeDetectorRef, ElementRef, Renderer2, ComponentFactoryResolver, InjectionToken, ApplicationRef, Injectable, Inject, Optional, Injector, Directive, forwardRef, NgModule } from '@angular/core';\nimport { style, animate, AnimationBuilder } from '@angular/animations';\nimport { take } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/animations';\nimport * as ɵngcc2 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc3 from '@angular/common';\n\nconst _c0 = [\"container\"];\nfunction NotificationComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 9);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.typeIconClass());\n} }\nfunction NotificationComponent_ng_template_5_Template(rf, ctx) { }\nfunction NotificationComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r2.templateString, \" \");\n} }\nfunction NotificationComponent_a_9_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NotificationComponent_a_9_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.onCloseClick(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"title\", ctx_r4.closeButtonTitle);\n} }\nconst _c3 = [\"group\"];\nclass NotificationSettings {\n constructor() {\n /**\n * Specifies the time in milliseconds after which the\n * Notification will hide\n * ([see example]({% slug hiding_notifications %}#toc-definig-a-delay-before-hiding)).\n * Defaults to `5000`.\n */\n this.hideAfter = 5000;\n /**\n * Defines the position of the Notification\n * ([see example]({% slug positioning_notification %})).\n *\n * The possible values are:\n * * `horizontal: 'left'|'center'|'right'`\n * * `vertical: 'top'|'bottom'`\n */\n this.position = { horizontal: 'right', vertical: 'top' };\n /**\n * Specifies the animation settings of the Notification\n * ([see example]({% slug animations_notification %})).\n *\n * The possible values are:\n * * `duration`—Accepts a number in milliseconds. Defaults to `500ms`.\n * * `type?: 'slide'| (Default) 'fade'`\n */\n this.animation = { type: 'fade', duration: 500 };\n /**\n * Specifies if the Notification will require a user action to hide.\n * If the property is set to `true`, the Notification renders a **Close** button\n * ([see example]({% slug hiding_notifications %}#toc-defining-a-closable-notification)).\n *\n * The possible values are:\n * * (Default) `false`\n * * `true`\n */\n this.closable = false;\n /**\n * Specifies the type of the Notification\n * ([see example]({% slug types_notification %})).\n *\n * The possible values are:\n * * `style: (Default) 'none'|'success'|'error'|'warning'|'info'`\n * * `icon: 'true'|'false'`\n */\n this.type = { style: 'none', icon: true };\n }\n}\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-notification',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635939877,\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 */\nfunction slideAnimation(height, duration) {\n return [\n style({ overflow: 'hidden', height: 0 }),\n animate(`${duration}ms ease-in`, style({ height: `${height}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction slideCloseAnimation(height, duration) {\n return [\n style({ height: `${height}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', height: 0 }))\n ];\n}\n/**\n * @hidden\n */\nfunction fadeAnimation(duration) {\n return [\n style({ opacity: 0 }),\n animate(`${duration}ms ease-in`, style({ opacity: 1 }))\n ];\n}\n/**\n * @hidden\n */\nfunction fadeCloseAnimation(duration) {\n return [\n style({ opacity: 1 }),\n animate(`${duration}ms ease-in`, style({ opacity: 0 }))\n ];\n}\n\n/**\n * @hidden\n *\n */\nlet NotificationComponent = class NotificationComponent {\n constructor(cdr, element, renderer, builder, localizationService) {\n this.cdr = cdr;\n this.element = element;\n this.renderer = renderer;\n this.builder = builder;\n this.localizationService = localizationService;\n this.close = new EventEmitter();\n this.width = null;\n this.height = null;\n this.defaultHideAfter = 5000;\n this.animationEnd = new EventEmitter();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get containerClass() {\n return true;\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n notificationClasses() {\n return `${this.type ? this.typeClass() : ''}\n ${this.closable ? 'k-notification-closable' : ''}`;\n }\n ngOnInit() {\n clearTimeout(this.hideTimeout);\n }\n ngOnDestroy() {\n clearTimeout(this.hideTimeout);\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (!this.closable && !this.animation) {\n this.setHideTimeout();\n }\n if (!this.closable && this.animation) {\n this.animationEnd.pipe(take(1))\n .subscribe(() => this.setHideTimeout());\n }\n if (this.animation) {\n this.animate(this.animation);\n }\n }\n typeClass() {\n return {\n 'none': '',\n 'success': 'k-notification-success',\n 'warning': 'k-notification-warning',\n 'error': 'k-notification-error',\n 'info': 'k-notification-info'\n }[this.type.style];\n }\n typeIconClass() {\n return {\n 'none': '',\n 'success': 'k-i-success',\n 'warning': 'k-i-warning',\n 'error': 'k-i-error',\n 'info': 'k-i-info'\n }[this.type.style];\n }\n onCloseClick() {\n clearTimeout(this.hideTimeout);\n this.hide();\n }\n hide(customComponent) {\n const elementHeight = getComputedStyle(this.element.nativeElement).height;\n if (this.animation && elementHeight) {\n this.animate(this.animation, true);\n this.animationEnd.subscribe(() => {\n this.emitClose(customComponent);\n });\n return;\n }\n this.emitClose(customComponent);\n }\n setHideTimeout() {\n const hideAfter = this.hideAfter || this.defaultHideAfter;\n this.hideTimeout = window.setTimeout(() => this.onCloseClick(), hideAfter);\n }\n emitClose(customComponent) {\n if (customComponent) {\n customComponent.destroy();\n }\n this.close.emit();\n }\n play(animation, animatedElement) {\n const factory = this.builder.build(animation);\n const element = this.element.nativeElement;\n this.renderer.addClass(element, 'k-notification-container-animating');\n let player = factory.create(animatedElement);\n player.onDone(() => {\n this.renderer.removeClass(element, 'k-notification-container-animating');\n this.animationEnd.emit();\n if (player) {\n player.destroy();\n player = null;\n }\n });\n player.play();\n }\n animate(animation, onclose) {\n const element = this.element.nativeElement;\n const duration = animation.duration;\n const height = element.offsetHeight;\n const generatedAnimation = animation.type === 'slide' ?\n this.slideAnimation(height, duration, onclose) :\n this.fadeAnimation(duration, onclose);\n this.play(generatedAnimation, element);\n }\n slideAnimation(height, duration, onclose) {\n return onclose ? slideCloseAnimation(height, duration) : slideAnimation(height, duration);\n }\n fadeAnimation(duration, onclose) {\n return onclose ? fadeCloseAnimation(duration) : fadeAnimation(duration);\n }\n};\nNotificationComponent.ɵfac = function NotificationComponent_Factory(t) { return new (t || NotificationComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.AnimationBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nNotificationComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NotificationComponent, selectors: [[\"kendo-notification\"]], viewQuery: function NotificationComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7, ViewContainerRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n } }, hostVars: 3, hostBindings: function NotificationComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-notification-container\", ctx.containerClass);\n } }, inputs: { width: \"width\", height: \"height\", templateRef: \"templateRef\", templateString: \"templateString\", cssClass: \"cssClass\", hideAfter: \"hideAfter\", closable: \"closable\", type: \"type\", animation: \"animation\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.notification'\n }\n ])], decls: 10, vars: 13, consts: function () { let i18n_1; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the close button\n * @meaning kendo.notification.closeTitle\n */\n const MSG_EXTERNAL_2647775058951488820$$DIST_FESM2015_INDEX_JS_2 = goog.getMsg(\"Close\");\n i18n_1 = MSG_EXTERNAL_2647775058951488820$$DIST_FESM2015_INDEX_JS_2;\n }\n else {\n i18n_1 = $localize `:kendo.notification.closeTitle|The title of the close button␟ec4f6e0c77992a6dd3518cec396079fd0bd06d53␟2647775058951488820:Close`;\n } return [[\"kendoNotificationLocalizedMessages\", \"\", \"closeTitle\", i18n_1], [3, \"ngClass\"], [1, \"k-notification-wrap\", \"k-hstack\"], [\"class\", \"k-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-notification-content\"], [3, \"ngIf\", \"ngTemplateOutlet\"], [3, \"ngIf\"], [\"container\", \"\"], [\"class\", \"k-icon k-i-close\", 3, \"click\", 4, \"ngIf\"], [1, \"k-icon\", 3, \"ngClass\"], [1, \"k-icon\", \"k-i-close\", 3, \"click\"]]; }, template: function NotificationComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NotificationComponent_span_3_Template, 1, 1, \"span\", 3);\n ɵngcc0.ɵɵelementStart(4, \"div\", 4);\n ɵngcc0.ɵɵtemplate(5, NotificationComponent_ng_template_5_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(6, NotificationComponent_ng_template_6_Template, 1, 1, \"ng-template\", 6);\n ɵngcc0.ɵɵelementContainer(7, null, 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, NotificationComponent_a_9_Template, 1, 1, \"a\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"k-widget k-notification \", ctx.notificationClasses(), \"\");\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.height, \"px\")(\"width\", ctx.width, \"px\");\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.cssClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.type && ctx.type.icon && ctx.type.style !== \"none\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.templateRef)(\"ngTemplateOutlet\", ctx.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.templateString);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.closable);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, ɵngcc3.NgIf, ɵngcc3.NgTemplateOutlet]; }, encapsulation: 2 });\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], NotificationComponent.prototype, \"container\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], NotificationComponent.prototype, \"templateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NotificationComponent.prototype, \"templateString\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NotificationComponent.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NotificationComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NotificationComponent.prototype, \"cssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NotificationComponent.prototype, \"hideAfter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NotificationComponent.prototype, \"closable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NotificationComponent.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NotificationComponent.prototype, \"animation\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], NotificationComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-notification-container'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], NotificationComponent.prototype, \"containerClass\", null);\nNotificationComponent = __decorate([ __metadata(\"design:paramtypes\", [ChangeDetectorRef,\n ElementRef,\n Renderer2,\n AnimationBuilder,\n LocalizationService])\n], NotificationComponent);\n\n/**\n * @hidden\n *\n */\nlet NotificationContainerComponent = class NotificationContainerComponent {\n constructor(element, renderer, resolver) {\n this.element = element;\n this.renderer = renderer;\n this.resolver = resolver;\n this.id = '';\n this.notifications = [];\n }\n ngOnDestroy() {\n this.notifications.forEach((notification) => {\n if (notification.closeClickSubscription) {\n notification.closeClickSubscription.unsubscribe();\n }\n });\n this.notifications = [];\n }\n addNotification(settings) {\n this.position = settings.position;\n this.id = `${this.position.horizontal} ${this.position.vertical}`;\n const factory = this.resolver.resolveComponentFactory(NotificationComponent);\n const notificationRef = this.container.createComponent(factory);\n this.applySettings(notificationRef, settings);\n let customComponent = null;\n if (typeof settings.content === 'function') {\n const customFactory = this.resolver.resolveComponentFactory(settings.content);\n customComponent = notificationRef.instance.container.createComponent(customFactory);\n }\n notificationRef.changeDetectorRef.detectChanges();\n this.notifications.push(notificationRef.instance);\n if (settings.appendTo) {\n this.applyAbsolutePosition(settings.appendTo);\n }\n this.applyPosition();\n this.applyContainerWrap();\n return {\n afterHide: notificationRef.instance.close,\n hide: () => notificationRef.instance.hide(customComponent),\n notification: notificationRef,\n content: customComponent || null\n };\n }\n hide(notificationRef) {\n const instance = notificationRef.instance;\n const index = this.notifications.indexOf(instance);\n this.notifications.splice(index, 1);\n if (instance.closeClickSubscription) {\n instance.closeClickSubscription.unsubscribe();\n }\n instance.templateRef = null;\n instance.templateString = null;\n notificationRef.destroy();\n }\n applyContainerWrap() {\n const value = this.position.horizontal === 'right' ? 'wrap-reverse' : 'wrap';\n this.renderer.setStyle(this.group.nativeElement, 'flex-wrap', value);\n }\n applySettings(notificationRef, settings) {\n const notification = notificationRef.instance;\n const content = settings.content;\n const animation = settings.animation || null;\n notification.closeClickSubscription = notification.close\n .subscribe(() => this.hide(notificationRef));\n if (typeof content === 'string') {\n notification.templateString = content;\n }\n if (content instanceof TemplateRef) {\n notification.templateRef = content;\n }\n notification.animation = animation;\n let type = settings.type;\n if (type && type.style === undefined) {\n type.style = 'none';\n }\n if (type && type.icon === undefined) {\n type.icon = true;\n }\n notification.type = type;\n notification.closeTitle = settings.closeTitle;\n if (settings.cssClass) {\n notification.cssClass = settings.cssClass;\n }\n notification.closable = settings.closable;\n notification.hideAfter = settings.hideAfter;\n notification.width = settings.width;\n notification.height = settings.height;\n }\n applyAbsolutePosition(appendToContainer) {\n const appendTo = appendToContainer.element.nativeElement;\n const el = this.element.nativeElement.children[0];\n if (window.getComputedStyle(appendTo).position === 'static') {\n this.renderer.setStyle(appendTo, 'position', 'relative');\n }\n this.renderer.setStyle(el, 'position', 'absolute');\n }\n applyPosition() {\n const element = this.element.nativeElement.children[0];\n const elementHalfWidth = element.getBoundingClientRect().width / 2;\n const positionStyles = this.setContainerPosition(this.position, elementHalfWidth);\n Object.keys(positionStyles).forEach((cssStyle) => {\n element.style[cssStyle] = positionStyles[cssStyle];\n });\n }\n setContainerPosition(position, offsetMargin) {\n const positionLayout = {\n horizontal: {\n left: { left: 0, alignItems: 'flex-start' },\n right: { right: 0, alignItems: 'flex-start' },\n center: { left: '50%', marginLeft: `${-offsetMargin}px`, alignItems: 'center' }\n },\n vertical: {\n top: { top: 0 },\n bottom: { bottom: 0 }\n }\n };\n const horizontal = positionLayout.horizontal[position.horizontal];\n const vertical = positionLayout.vertical[position.vertical];\n return Object.assign({}, horizontal, vertical);\n }\n};\nNotificationContainerComponent.ɵfac = function NotificationContainerComponent_Factory(t) { return new (t || NotificationContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver)); };\nNotificationContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NotificationContainerComponent, selectors: [[\"kendo-notification-container\"]], viewQuery: function NotificationContainerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c3, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.group = _t.first);\n } }, inputs: { id: \"id\" }, decls: 4, vars: 0, consts: [[1, \"k-notification-group\"], [\"group\", \"\"], [\"container\", \"\"]], template: function NotificationContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵelementContainer(2, null, 2);\n ɵngcc0.ɵɵelementEnd();\n } }, encapsulation: 2 });\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], NotificationContainerComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('group', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], NotificationContainerComponent.prototype, \"group\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NotificationContainerComponent.prototype, \"id\", void 0);\nNotificationContainerComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ComponentFactoryResolver])\n], NotificationContainerComponent);\n\n/**\n * Used to inject the Notification container. If not provided, the first root component of\n * the application is used.\n *\n * > The `NOTIFICATION_CONTAINER` can be used only with the [`NotificationService`]({% slug api_notification_notificationservice %}) class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Notification module\n * import { NotificationModule, NOTIFICATION_CONTAINER } from '@progress/kendo-angular-notification';\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, NotificationModule], // import Notification module\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: NOTIFICATION_CONTAINER,\n * useFactory: () => {\n * //return the container ElementRef, where the notification 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 NOTIFICATION_CONTAINER = new InjectionToken('Notification Container');\n/**\n * A service for opening Notification components dynamically\n * ([see example]({% slug overview_notification %})).\n *\n * @export\n * @class NotificationService\n */\nlet NotificationService = class NotificationService {\n /**\n * @hidden\n */\n constructor(resolver, injector, container) {\n this.resolver = resolver;\n this.injector = injector;\n this.container = container;\n this.notificationContainers = [];\n this.position = { horizontal: 'right', vertical: 'top' };\n }\n /**\n * Opens a Notification component. Created Notification are mounted\n * in the DOM directly in the root application component.\n *\n * @param {NotificationSettings} settings - The settings which define the Notification.\n *\n * @returns {NotificationRef} - A reference to the Notification object and the convenience properties.\n */\n show(settings) {\n if (!settings) {\n throw new Error('NotificationSettings settings are required');\n }\n let target = this.findGroupContainer(settings);\n const position = settings.position || this.position;\n const currentId = `${position.horizontal} ${position.vertical}`;\n let container;\n let notificationRef;\n let notificationContainer = this.notificationContainers.find(c => target.nativeElement.contains(c.element.nativeElement) && c.id === currentId);\n if (!notificationContainer) {\n container = this.resolver\n .resolveComponentFactory(NotificationContainerComponent)\n .create(this.injector);\n notificationContainer = container.instance;\n this.appRef.attachView(container.hostView);\n const hostViewElement = container.location.nativeElement;\n let groupContainer = this.findGroupContainer(settings);\n if (!groupContainer) {\n throw new Error(`\n View Container not found! Inject the NOTIFICATION_CONTAINER or define a specific ViewContainerRef via\n the appendTo option. See http://www.telerik.com/kendo-angular-ui/components/notification/api/NOTIFICATION_CONTAINER/\n for more details.\n `);\n }\n groupContainer.nativeElement.appendChild(hostViewElement);\n this.notificationContainers.push(notificationContainer);\n }\n settings.position = position;\n notificationRef = notificationContainer.addNotification(settings);\n return notificationRef;\n }\n get appRef() {\n if (!this.applicationRef) {\n this.applicationRef = this.injector.get(ApplicationRef);\n }\n return this.applicationRef;\n }\n findGroupContainer(settings) {\n let container;\n if (settings.appendTo) {\n container = settings.appendTo.element;\n }\n else if (this.container) {\n container = this.container;\n }\n else {\n const appRoot = this.appRef.components && this.appRef.components[0];\n container = appRoot ? appRoot.location : null;\n }\n return container;\n }\n};\nNotificationService.ɵfac = function NotificationService_Factory(t) { return new (t || NotificationService)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(NOTIFICATION_CONTAINER, 8)); };\nNotificationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NotificationService, factory: function (t) { return NotificationService.ɵfac(t); } });\nNotificationService = __decorate([ __param(2, Inject(NOTIFICATION_CONTAINER)), __param(2, Optional()),\n __metadata(\"design:paramtypes\", [ComponentFactoryResolver,\n Injector,\n ElementRef])\n], NotificationService);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends ComponentMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoNotificationLocalizedMessages\", \"\"]], inputs: { closeTitle: \"closeTitle\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LocalizedMessagesDirective.prototype, \"closeTitle\", void 0);\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Notification component.\n *\n * The package exports:\n * - `NotificationService`—The Notification service class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Notification module\n * import { NotificationModule } from '@progress/kendo-angular-notification';\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 * _@NgModule{{\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NotificationModule], // import NotificationModule module\n * bootstrap: [AppComponent]\n * }}\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nlet NotificationModule = class NotificationModule {\n};\nNotificationModule.ɵfac = function NotificationModule_Factory(t) { return new (t || NotificationModule)(); };\nNotificationModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NotificationModule });\nNotificationModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [NotificationService], imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NotificationComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-notification',\n template: `\n \n \n
\n
\n \n\n
\n \n \n \n {{ templateString }}\n \n \n
\n\n \n
\n
\n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.notification'\n }\n ]\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.AnimationBuilder }, { type: ɵngcc2.LocalizationService }]; }, { width: [{\n type: Input\n }], height: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], containerClass: [{\n type: HostBinding,\n args: ['class.k-notification-container']\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], templateRef: [{\n type: Input\n }], templateString: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], hideAfter: [{\n type: Input\n }], closable: [{\n type: Input\n }], type: [{\n type: Input\n }], animation: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NotificationContainerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-notification-container',\n template: `\n
\n \n
\n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }]; }, { id: [{\n type: Input\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], group: [{\n type: ViewChild,\n args: ['group', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NotificationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ElementRef, decorators: [{\n type: Inject,\n args: [NOTIFICATION_CONTAINER]\n }, {\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: `[kendoNotificationLocalizedMessages]`\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, { closeTitle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NotificationModule, [{\n type: NgModule,\n args: [{\n declarations: [NotificationComponent, NotificationContainerComponent, LocalizedMessagesDirective],\n entryComponents: [NotificationComponent, NotificationContainerComponent],\n imports: [CommonModule],\n exports: [NotificationComponent, NotificationContainerComponent],\n providers: [NotificationService]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NotificationModule, { declarations: function () { return [NotificationComponent, NotificationContainerComponent, LocalizedMessagesDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NotificationComponent, NotificationContainerComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LocalizedMessagesDirective, NotificationContainerComponent, NotificationSettings, NotificationComponent, NotificationService, NOTIFICATION_CONTAINER, NotificationModule };\n\n","import {ChangeDetectionStrategy, Component, OnDestroy, TemplateRef, ViewChild} from '@angular/core';\nimport {\n NotifyStore\n} from '../../../stores/dialog/notify.store';\nimport {\n NotificationRef,\n NotificationService\n} from '@progress/kendo-angular-notification';\nimport {Subscription} from 'rxjs';\nimport {\n ChipType\n} from '@progress/kendo-angular-buttons/dist/es2015/chip/models/type';\nimport {\n ApNotifyMessageComponent\n} from '../ap-notify-message/ap-notify-message.component';\nimport {\n TranslationStore\n} from '../../../stores/translation/translation.store';\nimport {filter} from 'rxjs/operators';\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\nimport ApValidationLevel = Data.Api.Validation.ApValidationLevel;\n\n/**\n * Component for displaying notifications from backend.\n */\n@Component({\n selector: 'ap-notify',\n template: '',\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class ApNotifyComponent implements OnDestroy {\n\n @ViewChild('notificationTemplate', {read: TemplateRef})\n public notificationTemplate: TemplateRef;\n private _subscriptions: Array = [];\n public notes: Array = [];\n public notificationTypeMapping: Map = new Map([\n [ApValidationLevel.Info, 'info'],\n [ApValidationLevel.Warning, 'warning'],\n [ApValidationLevel.News, 'info'],\n [ApValidationLevel.Success, 'success'],\n [ApValidationLevel.Error, 'error'],\n ]);\n private currentlyDisplayedMessages: Array = [];\n private notifications: NotificationRef[] = [];\n\n\n /**\n * the actual notes displayed on screen.\n */\n constructor(private notifyStore: NotifyStore,\n private notificationService: NotificationService,\n private translationStore: TranslationStore) {\n\n this._subscriptions.push(this.notifyStore\n .Listen(n => n.displayMessages)\n .subscribe(messages => {\n for (const n of this.notifications) {\n n.hide();\n }\n this.notifications = [];\n messages.forEach(message => {\n this.handleNotificationMessage(message);\n });\n }));\n }\n\n private static calcNotificationTimeout(message: IApValidationResult): number {\n let notificationTimeout = message.DisplayTimeout;\n // if no timeout is set => whole day.\n if (!notificationTimeout || notificationTimeout <= 0) {\n notificationTimeout = 24 * 60 * 60;\n }\n notificationTimeout = notificationTimeout * 1000;\n return notificationTimeout;\n }\n\n private handleNotificationMessage(message: IApValidationResult): void {\n this.translationStore.Listen(_ => _.loading).pipe(filter(translationsLoading => !translationsLoading)).subscribe(() => {\n if (!this.notifyStore.getDisplayMessages().Contains(message) ||\n !message || !message.ErrorKey || message.ErrorKey === '') {\n return;\n }\n\n if (this.currentlyDisplayedMessages.Contains(message)) {\n return;\n }\n\n this.currentlyDisplayedMessages.push(message);\n // (dirty) workaround for passing the message to the message-component.\n // if passing the message after creation of the component kendo position calculation\n // does not consider the new message -> notifcation not centered.\n ApNotifyMessageComponent.InitialMessage = this.translationStore.FindTranslationForSelectedLanguage(message.ErrorKey, message.Parameters);\n // ApTranslationService.translate(message.ErrorKey);\n\n const notificationRef: NotificationRef = this.notificationService.show({\n content: ApNotifyMessageComponent,\n position: {horizontal: 'center', vertical: 'top'},\n animation: {type: 'fade', duration: 300},\n hideAfter: ApNotifyComponent.calcNotificationTimeout(message),\n type: {style: this.notificationTypeMapping.get(message.Level) as ChipType, icon: true},\n });\n this.notifications.push(notificationRef);\n\n if (notificationRef) {\n this._subscriptions.push(notificationRef.afterHide\n .subscribe(() => {\n this.notifyStore.removeMessage(message);\n if (this.currentlyDisplayedMessages.Contains(message)) {\n this.currentlyDisplayedMessages.Remove(message);\n }\n }));\n this._subscriptions.push(notificationRef.content.instance.hide\n .subscribe(() => notificationRef.hide()));\n }\n });\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n}\n","import {Component} from '@angular/core';\n\nconst CONTENT = `\n \n \n \n \n`;\n\n/**\n * The Agriport Logo as SVG Image\n */\n@Component({\n selector: 'ap-logo',\n template: CONTENT\n})\nexport class ApLogoIconComponent {\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {ModalDialogButtonDisable} from '../../../ap-interface/interfaces/ap-modaldialog-data.interface';\n\n@Pipe({\n name: 'apModalDialogButtonDisable'\n})\nexport class ApModalDialogButtonDisablePipe implements PipeTransform {\n\n transform(value: ModalDialogButtonDisable, formValid: boolean): any {\n switch (value) {\n case ModalDialogButtonDisable.Never:\n return false;\n case ModalDialogButtonDisable.Always:\n return true;\n case ModalDialogButtonDisable.FormInvalid:\n return !formValid;\n }\n return false;\n }\n\n}\n","\n

{{message$ | async}}

\n \n \n \n \n \n \n
\n","import {AfterContentInit, Component, EventEmitter, OnDestroy, ViewChild} from '@angular/core';\nimport {\n ApDynformsComponent\n} from '../../../ap-dynforms/ap-dynforms.component';\nimport {\n ModalDialogStore\n} from '../../../stores/dialog/modal.dialog.store';\nimport {combineLatest, Subscription} from 'rxjs';\nimport {distinctUntilChanged, filter, map, mergeMap} from 'rxjs/operators';\nimport {ObjectFactory} from 'ts-tooling';\nimport {FormGroup} from '@angular/forms';\n\n@Component({\n selector: 'ap-modal-dialog',\n templateUrl: 'ap-modal-dialog.component.html'\n})\nexport class ApModalDialogComponent implements AfterContentInit, OnDestroy {\n @ViewChild(ApDynformsComponent, {static: false}) form: ApDynformsComponent;\n public title$ = this.modalDialogStore.Listen(s => s.title);\n public busy$ = this.modalDialogStore.Listen(s => s.busy);\n public message$ = this.modalDialogStore.Listen(s => s.message);\n public dialogOpened$ = this.modalDialogStore.Listen(s => s.show);\n public dynFormConfig$ = this.modalDialogStore.Listen(s => s.formConfig);\n public buttons$ = this.modalDialogStore.Listen(s => s.buttons);\n public formValid: EventEmitter;\n\n private _subscriptions: Subscription[] = [];\n\n constructor(private modalDialogStore: ModalDialogStore) {\n }\n\n public ngAfterContentInit(): void {\n this._subscriptions.push(combineLatest([this.dialogOpened$, this.dynFormConfig$])\n .pipe(\n map(([o, f]) => o && !!f),\n filter((b: boolean) => b)\n )\n .subscribe((): void => {\n setTimeout((): void => {\n if (this.form) {\n this.formValid = this.form.validChanges;\n this._subscriptions.push(this.form.form$.pipe(\n filter((form: FormGroup) => !!form),\n mergeMap((form: FormGroup) => form.valueChanges),\n distinctUntilChanged((previous, current) => ObjectFactory.Equal(previous, current)),\n ).subscribe((value): void => {\n this.modalDialogStore.setFormValues(this.form.form.getRawValue());\n this.modalDialogStore.setFormChanges(value);\n })\n );\n }\n }, 1);\n }));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach(x => x.unsubscribe());\n }\n\n public close(key: string): void {\n const formValues = this.form ? this.form.form.getRawValue() : undefined;\n this.modalDialogStore.setShow(false);\n this.modalDialogStore.setFormValues(formValues);\n this.modalDialogStore.sendResult(key, formValues);\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'inner-loading',\n template: `\n
\n
\n \n

{{text | translate}}

\n \n {{button?.text | translate}}\n \n
\n
\n `,\n styles: [\n `\n .inner-loading-modal {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n background: rgba(255, 255, 255, 0.7);\n z-index: 9999;\n }\n .inner-loading-modal .modal-content {\n position: fixed;\n min-width: 220px;\n width: 30%;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 10px;\n text-align: center;\n background: transparent;\n }\n `\n ],\n})\nexport class InnerLoadingComponent {\n @Input()\n public visible = false;\n @Input()\n public text = '';\n @Input()\n public iconClass = 'k-i-loading k-icon';\n @Input()\n public button: { text: string, action: () => void } | undefined;\n}\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ComboBoxComponent} from '@progress/kendo-angular-dropdowns';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {ApRoleTypeService} from '../../services/common/ap-role-type.service';\nimport {ObjectFactory} from 'ts-tooling';\nimport IFarm = Data.Authentication.IFarm;\n\n@Component({\n selector: 'ap-farm-selection',\n templateUrl: 'ap-farm-selection.component.html'\n})\nexport class ApFarmSelectionComponent implements OnInit, OnDestroy {\n public farm: IFarm;\n public farmFilter: IFarm[];\n\n private _farms: IFarm[];\n private _subscriptions = [];\n\n constructor(private loginStore: LoginStore,\n private translationStore: TranslationStore) {\n }\n\n public ngOnInit(): void {\n this._subscriptions.push(this.loginStore.SelectedFarm$.subscribe(selectedFarms => {\n this.farm = selectedFarms;\n }));\n this._subscriptions.push(this.loginStore.Farms$.subscribe(farms => {\n this._farms = this._sortFarms(ObjectFactory.Copy(farms));\n this.farmFilter = this._sortFarms(this._farms);\n }));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach(d => d?.unsubscribe());\n }\n\n public onItemClicked(e: any): void {\n if (e) {\n this.loginStore.changeSelectedFarm(e);\n this.farmFilter = this._farms;\n } else {\n this.farm = this.loginStore.SelectedFarm;\n }\n }\n\n public getToolTip(): string {\n let toolTip = this.translationStore.FindTranslationForSelectedLanguage('Global__CustomerNumber')\n + ': '\n + this.farm?.CustomerNumber;\n if (ApRoleTypeService.hasAgriconRole(this.loginStore.User)) {\n toolTip = toolTip + '
' + this.translationStore.FindTranslationForSelectedLanguage('Global__FarmId')\n + ': '\n + this.farm?.Id;\n }\n return toolTip + '
' + this.translationStore.FindTranslationForSelectedLanguage('Global__Country')\n + ': '\n + this.farm?.Country?.Id;\n }\n\n /**\n * Search for customer number, farm name or farm town\n */\n public filterChange($event: string): void {\n const searchValue = $event?.toLowerCase();\n this.farmFilter = this._farms.filter(f =>\n f?.FarmName?.toLowerCase()?.includes(searchValue) ||\n f?.CustomerNumber?.toLowerCase()?.includes(searchValue) ||\n f?.Location?.toLowerCase()?.includes(searchValue) ||\n f?.Id?.toString()?.includes(searchValue)\n );\n }\n\n public blur(comboBox: ComboBoxComponent): void {\n comboBox.writeValue(this.farm);\n }\n\n public focus(): void {\n this.farmFilter = this._farms;\n }\n\n private _sortFarms(farms: IFarm[]): IFarm[] {\n if (!farms) {\n return [];\n }\n return farms.sort((firstFarm, secondFarm) => firstFarm.FarmName.localeCompare(secondFarm.FarmName));\n }\n}\n","
\n \n \n
\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {combineLatest, Subscription} from 'rxjs';\nimport {ComboBoxComponent} from '@progress/kendo-angular-dropdowns';\nimport {ObjectFactory} from 'ts-tooling';\nimport {CampaignYearStore} from '../../stores/login/campaignyear.store';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport {CampaignYearService} from '../../services/data/campaign-year.service';\nimport ICampaignYear = Data.Authentication.ICampaignYear;\nimport {filter} from 'rxjs/operators';\n\n@Component({\n selector: 'ap-harvest-selection',\n templateUrl: 'ap-harvest-selection.component.html',\n styleUrls: ['ap-harvest-selection.component.scss']\n})\n\nexport class ApHarvestSelectionComponent implements OnInit, OnDestroy {\n public harvestYearFilter: ICampaignYear[];\n public selectedYear: ICampaignYear;\n public tooltip: string;\n\n private _harvestYears: ICampaignYear[];\n private _subscriptions: Subscription[] = [];\n\n constructor(private campaignYearStore: CampaignYearStore,\n private languageStore: LanguageStore,\n private dateService: ApDateService,\n private campaignYearService: CampaignYearService) {\n }\n\n public ngOnInit(): void {\n this._subscriptions.push(this.campaignYearStore.Listen(s => s.data).subscribe(years => {\n this._harvestYears = years;\n this.harvestYearFilter = this._harvestYears;\n }));\n\n this._subscriptions.push(combineLatest([\n this.campaignYearStore.Listen(s => s.selectedYear),\n this.languageStore.SelectedLanguage$\n ]).pipe(\n filter(([selectedYear, selectedLanguage]) =>\n selectedYear != null && selectedLanguage != null\n )).subscribe(([year]) => {\n this._setSelectedCampaignYear(year);\n }));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach(d => d.unsubscribe());\n }\n\n public onHarvestYearClick(select: ICampaignYear): void {\n if (select) {\n if (!ObjectFactory.Equal(this.campaignYearStore.getSelectedCampaignYear(), select)) {\n this.campaignYearStore.selectCampaignYear(select);\n this.harvestYearFilter = this._harvestYears;\n } else {\n this._setSelectedCampaignYear(this.campaignYearStore.getSelectedCampaignYear());\n }\n }\n }\n\n public filterChange($event: string): void {\n this.harvestYearFilter = this._harvestYears.filter(f => f.Year.toString().toLowerCase().indexOf($event.toLowerCase()) !== -1);\n }\n\n public blur(comboBox: ComboBoxComponent): void {\n comboBox.writeValue(this.selectedYear);\n }\n\n public focus(): void {\n this.harvestYearFilter = this._harvestYears;\n }\n\n private _setSelectedCampaignYear(campaignYear: ICampaignYear): void {\n this.selectedYear = campaignYear;\n this.tooltip = this._generateTooltip(campaignYear?.Year);\n }\n\n private _generateTooltip(year: number): string {\n const campaignYearRange = this.campaignYearService.getCampaignYearRange(year);\n const currentFormat = this.languageStore.CurrentDateFormat;\n const startDate = this.dateService.dateToMoment(campaignYearRange.StartYear).format(currentFormat);\n const endDate = this.dateService.dateToMoment(campaignYearRange.EndYear).format(currentFormat);\n return `${startDate} - ${endDate}`;\n }\n}\n","
\n \n
\n","import {AfterContentInit, ChangeDetectionStrategy, Component, OnDestroy} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport * as moment from 'moment';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {ApDateService} from '../../ap-core/services/ap-date-service';\nimport ISettings = Data.BaseData.ISettings;\nimport ILanguage = Data.Language.ILanguage;\n\n@Component({\n selector: 'ap-current-time',\n templateUrl: 'ap-current-time.component.html',\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class ApCurrentTimeComponent implements OnDestroy, AfterContentInit {\n private _subscriptions: Subscription[] = [];\n private _settings: ISettings;\n private _language: ILanguage = null;\n private _interval;\n\n time = this.dateService.toJsDate(moment.utc());\n\n get FarmSettings(): ISettings {\n return this._settings || ({\n FarmTime: 'UTC'\n } as ISettings);\n }\n\n get FormatDate(): string {\n if (!this._language) {\n return 'YYYY-MM-DD';\n }\n return this._language.DateFormat;\n }\n\n get FormatTime(): string {\n return 'HH:mm';\n }\n\n constructor(private dateService: ApDateService,\n private settingsStore: SettingsStore,\n private languageStore: LanguageStore) {\n }\n\n ngAfterContentInit(): void {\n this._subscriptions.push(this.settingsStore.FirstSetting$.subscribe(s => this._settings = s));\n this._subscriptions.push(this.languageStore.Listen(s => s.selectedLanguage)\n .subscribe(l => this._language = l));\n setTimeout(() => {\n this._interval = setInterval(() => {\n this.time = this.dateService.toJsDate(moment.utc());\n }, 10000);\n }, 1000);\n }\n\n ngOnDestroy(): void {\n for (const s of this._subscriptions) {\n s.unsubscribe();\n }\n clearInterval(this._interval);\n }\n}\n","
\n
\n {{(time | getLocalDate).format(FormatTime)}}\n
\n
\n","import {Component} from '@angular/core';\nimport {map} from 'rxjs/operators';\nimport {JobsStore} from '../../stores/administration/jobs.store';\nimport {Observable, of} from 'rxjs';\nimport {ApTranslationService} from '../../ap-utils/service/ap-translation.service';\nimport JobStatus = Data.Job.JobStatus;\n\n\nexport interface IJobListItem {\n Count: number;\n Description: string;\n Status: number;\n}\n\n@Component({\n selector: 'ap-farm-job-list',\n template: `\n
{{ 'Global__TaskList' | translate }}
\n \n
\n {{ 'no_open_tasks' | translate }}\n
\n
\n
\n
\n
\n \n \n 1\" [themeColor]=\"'success'\" [name]=\"'check'\">\n \n
\n
\n {{ jobItem.Count }} {{ jobItem.Description }}\n
\n
\n
\n
\n \n `\n})\nexport class ApFarmJobListComponent {\n public jobListItems$: Observable = of([]);\n private PopupLineHeight = 53;\n private MaxPopupHeight = 530;\n\n constructor(private jobStore: JobsStore,\n private translationService: ApTranslationService) {\n this.jobListItems$ = this.jobStore.Listen(s => s.farmJobs).pipe(\n map((jobs) => {\n const jobListItems = new Array();\n const countPending = jobs.FindAll(j => j.Status === JobStatus.Pending)?.length;\n const countRunning = jobs.FindAll(j => j.Status === JobStatus.Running)?.length;\n if (countPending > 0) {\n jobListItems.push(\n {\n Count: countPending,\n Status: JobStatus.Pending,\n Description: this.translationService.translate('Pending_Jobs')\n });\n }\n if (countRunning > 0) {\n jobListItems.push(\n {\n Count: countRunning,\n Status: JobStatus.Running,\n Description:\n this.translationService.translate('Running_Jobs')\n });\n }\n return jobListItems;\n }));\n }\n\n public calcHeight(jobs: IJobListItem[] | null): number {\n if (!jobs || jobs.length === 0) {\n return 66; // dummy row\n }\n return Math.min(jobs.length * this.PopupLineHeight, this.MaxPopupHeight);\n }\n}\n","import {AfterViewInit, Component, ElementRef, OnDestroy, ViewChild} from '@angular/core';\nimport {map} from 'rxjs/operators';\nimport {JobsStore} from '../../stores/administration/jobs.store';\nimport JobStatus = Data.Job.JobStatus;\n\n@Component({\n selector: 'ap-task-list',\n template: `\n
\n \n \n \n \n
\n `,\n})\nexport class ApTaskListComponent implements AfterViewInit, OnDestroy {\n @ViewChild('apToolbarTaskList', {static: false}) private apToolbarTaskList: ElementRef;\n @ViewChild('taskListButton', {static: false}) public taskListButtonRef: ElementRef;\n public show = false;\n public outsideClickHandlerRef = this.outsideClickHandler.bind(this);\n public jobsCount$ = this.jobsStore.FarmJobs$.pipe(\n map(jobs =>\n jobs.FindAll(job => job.Status === JobStatus.Pending || job.Status === JobStatus.Running)?.length\n )\n );\n\n constructor(private jobsStore: JobsStore) {\n }\n\n ngAfterViewInit(): void {\n document.addEventListener('click', this.outsideClickHandlerRef);\n }\n\n public outsideClickHandler($event: any): void {\n if (!this.show) {\n return;\n }\n // close popup on outside button-click:\n if (!this.apToolbarTaskList?.nativeElement?.contains($event.target)) {\n this.show = false;\n }\n }\n\n public onClick(): void {\n this.show = !this.show;\n }\n\n ngOnDestroy(): void {\n document.removeEventListener('click', this.outsideClickHandlerRef);\n }\n\n public getJobCountBadge(jobsCount: number | null): string {\n if (jobsCount === null || !(jobsCount > 0)) {\n return '0';\n }\n if (jobsCount > 9) {\n return '9+';\n }\n return String(jobsCount);\n }\n}\n","
\n \n \n \n \n
{{'Global_Notifications' | translate}}
\n
0\" style=\"text-align: left; padding: 2px 18px 2px;\">\n {{'Global__New' | translate}}\n
\n 0\"\n [id]=\"'notificationNewGrid'\"\n [data]=\"itemNewView | async\"\n [scrollable]=\"'virtual'\"\n [height]=\"itemNewHeight\"\n [skip]=\"newSkip | async\"\n [pageSize]=\"9\"\n [rowHeight]=\"45\"\n [hideHeader]=\"true\"\n [navigable]=\"true\"\n (cellClick)=\"cellClick($event)\"\n (pageChange)=\"newPageChange($event)\"\n [loading]=\"notificationLoading$ | async\"\n [sort]=\"[{field:'Timestamp', dir: 'asc'}]\"\n style=\"overflow-y: hidden !important; max-height: 300px;\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
0\" style=\"text-align: left\">\n {{'Global_Formerly' | translate}}\n
\n 0\"\n [id]=\"'notificationFormerlyGrid'\"\n [data]=\"itemOldView | async\"\n [hideHeader]=\"true\"\n [scrollable]=\"'virtual'\"\n [height]=\"itemOldHeight\"\n [skip]=\"oldSkip | async\"\n [navigable]=\"true\"\n [pageSize]=\"9\"\n [rowHeight]=\"45\"\n (cellClick)=\"cellClick($event)\"\n (pageChange)=\"oldPageChange($event)\"\n [loading]=\"notificationLoading$ | async\"\n style=\"overflow-y: hidden !important; max-height: 300px;\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
0 || (itemOldView | async).total > 0\" style=\"text-align: right; padding: 8px 12px 6px;\">\n \n {{'Global_Mark_All_As_Read' | translate}}\n \n · \n \n {{'Global_Delete_All' | translate}}\n \n
\n
\n {{'Global_No_Notifications_Available' | translate}}\n
\n
\n \n
\n
\n","import {AfterViewInit, Component, ElementRef, OnDestroy, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {\n NotificationStore\n} from '../../stores/common/notification.store';\nimport {filter, map} from 'rxjs/operators';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport * as moment from 'moment';\nimport {\n RouterStore\n} from '../../stores/router/router.store';\nimport {\n CellClickEvent,\n GridDataResult,\n PageChangeEvent\n} from '@progress/kendo-angular-grid';\nimport {DateTime, ListSortOrder, ObjectFactory, Throttle} from 'ts-tooling';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {\n process\n} from '@progress/kendo-data-query';\nimport {\n PanelBarItemModel\n} from '@progress/kendo-angular-layout';\nimport INotifications = Data.Common.INotifications;\nimport IGuid = System.IGuid;\n\ninterface INotify {\n Id: IGuid;\n SourceItem: INotifications;\n Timestamp: Date;\n Link?: string;\n}\n\n@Component({\n selector: 'ap-notification',\n templateUrl: 'ap-notification.component.html',\n styleUrls: ['ap-notification.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApNotificationComponent implements AfterViewInit, OnDestroy {\n @ViewChild('apToolbarNotifications', {static: false}) private apToolbarNotifications: ElementRef;\n public show = false;\n bellRings = false;\n moment = moment;\n public outsideClickHandlerRef = this.outsideClickHandler.bind(this);\n notificationLoading$ = this.notificationStore.Listen(s => s.loading);\n public items: Array = [\n {\n title: this.translationStore.FindTranslationForSelectedLanguage('Global_Notifications'),\n content: 'First item content',\n expanded: true\n } as PanelBarItemModel\n ];\n itemsNew = new BehaviorSubject([]);\n itemsOld = new BehaviorSubject([]);\n itemNewHeight = 0;\n itemOldHeight = 0;\n newSkip = new BehaviorSubject(0);\n oldSkip = new BehaviorSubject(0);\n onNewMessages = this.notificationStore.Listen(s => s.data)\n .pipe(\n filter(d => !!d),\n ).subscribe(notifies => {\n const itemsNew = [];\n const itemsOld = [];\n for (const notify of ObjectFactory.Copy(notifies).SortBy(['Timestamp'], [ListSortOrder.DESC])) {\n if (notify.WasRead) {\n itemsOld.Add({\n Id: notify.Id,\n SourceItem: notify,\n Timestamp: notify.Timestamp,\n Link: notify.Link !== '' ? notify.Link : null\n });\n } else {\n itemsNew.Add({\n Id: notify.Id,\n SourceItem: notify,\n Timestamp: notify.Timestamp,\n Link: notify.Link !== '' ? notify.Link : null\n });\n }\n const current = new DateTime('UTC').ToUnixTimestamp(true);\n const actual = DateTime.FromISOString(notify.Timestamp.toString(), 'UTC').ToUnixTimestamp(true);\n const age = current - actual;\n if (age / 1000 < 5) {\n this.ringBell(1000);\n }\n }\n this.itemNewHeight = Math.min(138, itemsNew.length * 45) + 2;\n this.itemOldHeight = Math.min(138, itemsOld.length * 45) + 2;\n this.itemsNew.next(itemsNew);\n this.itemsOld.next(itemsOld);\n });\n\n itemNewView = this._toView(this.itemsNew, this.newSkip);\n itemOldView = this._toView(this.itemsOld, this.oldSkip);\n\n constructor(private notificationStore: NotificationStore,\n private translationStore: TranslationStore,\n private routerStore: RouterStore) {\n }\n\n ngAfterViewInit(): void {\n document.addEventListener('click', this.outsideClickHandlerRef);\n }\n\n public outsideClickHandler($event: any): void {\n if (!this.show) {\n return;\n }\n // close popup on outside of button-click:\n if (!this.apToolbarNotifications?.nativeElement?.contains($event.target)) {\n this.show = false;\n }\n };\n\n ngOnDestroy(): void {\n this.onNewMessages.unsubscribe();\n document.removeEventListener('click', this.outsideClickHandlerRef);\n }\n\n public onClick(): void {\n this.show = !this.show;\n }\n\n async onItemClick(item: INotifications): Promise {\n if (item.Link !== undefined) {\n if (item.Link !== null) {\n await this.routerStore.navigate([item.Link]);\n }\n }\n }\n\n onDeleteClick(item: INotifications): void {\n this.notificationStore.deleteNotification(item);\n }\n\n onAllNotificationReadClick(): void {\n this.notificationStore.getNotifications().forEach((i: any, idx: number) => {\n const source = i as INotifications;\n if (!source.WasRead) {\n this.notificationStore.ChangeWasRead(idx, true);\n }\n });\n }\n\n onAllNotificationDeleteClick(): void {\n this.notificationStore.deleteAllNotifications();\n // this.notificationStore.getNotifications().forEach((i: any) => {\n // const source = i as INotifications;\n // this.notificationStore.deleteNotification(source);\n // });\n }\n\n cellClick(cell: CellClickEvent): void {\n if (!cell) {\n return;\n }\n if (!cell.dataItem) {\n return;\n }\n if (!cell.dataItem.WasRead) {\n this.notificationStore.ChangeWasReadWithId(cell.dataItem.Id, true);\n }\n }\n\n private ringBell(duration = 3000): void {\n Throttle({\n Leading: true,\n Timeout: duration,\n }, () => {\n this.bellRings = true;\n setTimeout(() => {\n this.bellRings = false;\n }, duration);\n });\n }\n\n newPageChange(event: PageChangeEvent): void {\n this.newSkip.next(event.skip);\n }\n\n oldPageChange(event: PageChangeEvent): void {\n this.oldSkip.next(event.skip);\n }\n\n private _toView(items$: BehaviorSubject, skip$: BehaviorSubject): Observable {\n return combineLatest([items$, skip$]).pipe(map(([items, skip]) => process(items, {skip, take: 9})));\n }\n}\n","
\n \n \n {{dataItem.text}}\n \n \n
\n","import {AfterContentInit, Component, ViewEncapsulation} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {ApMenuUrls} from '../../ap-interface';\nimport {ApPermissions} from 'invoker-transport';\nimport {AccessPermissionsStore} from '../../stores/settings/access.permission.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {GetPermissionPipe} from '../../ap-permission/pipes/get-permission.pipe';\nimport {ApWindowHelperService} from '../../ap-core/services/ap-window-helper.service';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport IUser = Data.Authentication.IUser;\n\nexport interface IUserProfile {\n id: string;\n text: string;\n data_cy: string;\n}\n\n@Component({\n selector: 'ap-user-profile',\n templateUrl: 'ap-user-profile.component.html',\n styleUrls: ['ap-user-profile.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApUserProfileComponent implements AfterContentInit {\n public user: IUser;\n public editProfile = '';\n public logout = '';\n public academy = '';\n public teamViewer = '';\n public legal = '';\n public userProfile: Array;\n public ApPermissions = ApPermissions;\n public popupSettings = {popupClass: 'user-profile-buttons'};\n\n constructor(private loginStore: LoginStore,\n private router: Router,\n private translationStore: TranslationStore,\n private permissionsStore: AccessPermissionsStore,\n private permissionPipe: GetPermissionPipe,\n private windowHelper: ApWindowHelperService) {\n this.user = this.loginStore.User;\n this.editProfile = this.translationStore.FindTranslationForSelectedLanguage('Global_User_Profile');\n this.logout = this.translationStore.FindTranslationForSelectedLanguage('Base__Logout');\n this.academy = this.translationStore.FindTranslationForSelectedLanguage('Permission_FeatureModul_Academy');\n this.teamViewer = this.translationStore.FindTranslationForSelectedLanguage('Global__Remote_Maintenance');\n this.legal = this.translationStore.FindTranslationForSelectedLanguage('Lbl_ImprintText');\n this.permissionsStore.Listen(s => s.data).subscribe(() => this.afterChangePermission());\n }\n\n ngAfterContentInit(): void {\n this.fillDropDown();\n }\n\n private afterChangePermission(): void {\n this.fillDropDown();\n }\n\n public onItemClicked(e: any): void {\n switch (e.id) {\n case '[data-cy=ap_user_profile_logout_button]':\n this.loginStore.logoutUser();\n break;\n case '[data-cy=ap_user_profile_edit_profile]':\n this.router.navigate([ApMenuUrls.SETTINGS_USER_PROFILE]).then();\n break;\n case '[data-cy=ap_user_profile_academy_button]':\n this.windowHelper.openSite(APP_CONFIGURATION.AcademyUrl);\n break;\n case '[data-cy=ap_user_profile_teamviewer_button]':\n this.windowHelper.openSite(APP_CONFIGURATION.TeamViewerUrl);\n break;\n case '[data-cy=ap_user_profile_legal_button]':\n const fullPathToLegalInfo = `${this.windowHelper.getLocationOrigin()}/${ApMenuUrls.INFO_LEGAL}`;\n this.windowHelper.openSite(fullPathToLegalInfo, '_blank');\n break;\n }\n }\n\n private fillDropDown(): void {\n this.permissionPipe.transform(ApPermissions.EDIT_USER_PROFILE).subscribe(permission => {\n this.userProfile = [{\n id: 'user_profile_header_dummy',\n text: this.user?.EMail,\n data_cy: ''\n }];\n if (permission) {\n this.userProfile.push({\n id: '[data-cy=ap_user_profile_edit_profile]',\n text: this.editProfile,\n data_cy: '[ap_user_profile_edit_profile]'\n });\n }\n this.userProfile.push({\n id: '[data-cy=ap_user_profile_academy_button]',\n text: this.academy,\n data_cy: '[ap_user_profile_academy_button]'\n });\n this.userProfile.push({\n id: '[data-cy=ap_user_profile_teamviewer_button]',\n text: this.teamViewer,\n data_cy: '[ap_user_profile_teamviewer_button]'\n });\n this.userProfile.push({\n id: '[data-cy=ap_user_profile_legal_button]',\n text: this.legal,\n data_cy: '[ap_user_profile_legal_button]'\n });\n this.userProfile.push({\n id: '[data-cy=ap_user_profile_logout_button]',\n text: this.logout,\n data_cy: '[ap_user_profile_logout_button]'\n });\n });\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {SidebarMode} from '../../../ap-interface/enums';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\nimport {FilterByStringPipe} from './filter-by-string.pipe';\nimport IMenuEntry = Data.MenuStructure.IMenuEntry;\n\n@Pipe({\n name: 'isMainExpanded'\n})\nexport class IsMainExpandedPipe implements PipeTransform {\n\n constructor(private filterByString: FilterByStringPipe) {\n }\n\n @Trace()\n transform(main: IMenuEntry, ...args: [string, SidebarMode, boolean, string]): boolean {\n // while switching to half-mode nothing\n if (args[1] === SidebarMode.HALF && args[2]) {\n return false;\n }\n\n if (args[2]) {\n // Check for big menu\n // user did not select any id => use default preselect\n if (args[3] !== '') {\n return main.Url === args[3] || this.filterByString.transform(main, args[3], 'Url');\n } else {\n return this.filterByString.transform(main, args[0], 'Url');\n }\n\n } else {\n // Check for collapsed menu\n return main.Url === args[3];\n }\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {RemoveUrlParamsService} from '../../../services/router/remove-url-params.service';\n\n@Pipe({\n name: 'removeUrlParams'\n})\nexport class RemoveUrlParamsPipe implements PipeTransform {\n\n constructor(private removeUrlParams: RemoveUrlParamsService) {\n }\n\n transform(value: string, ...args: any[]): any {\n return this.removeUrlParams.removeUrlParams(value);\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\nimport {FilterByStringPipe} from './filter-by-string.pipe';\nimport IMenuEntry = Data.MenuStructure.IMenuEntry;\n\n@Pipe({\n name: 'isMainSelected'\n})\nexport class IsMainSelectedPipe implements PipeTransform {\n\n constructor(private filterByString: FilterByStringPipe) {\n }\n\n @Trace()\n transform(main: IMenuEntry, ...args: [string, string]): boolean {\n // user did not select any id => use default preselect\n if (args[1] !== '') {\n return (this.filterByString.transform(main, args[0], 'Url') || main.Url === args[0]) ||\n (main.Url === args[1] || this.filterByString.transform(main, args[1], 'Url'));\n } else {\n return this.filterByString.transform(main, args[0], 'Url') || main.Url === args[0];\n }\n }\n\n}\n","\n \n\n\n
\n \n
\n \n
\n
\n \n \n \n \n
\n \n {{main.Title | translate}}\n
\n
\n\n \n \n \n
\n {{sub.Title | translate}}\n
\n
\n
\n\n
\n
\n \n \n \n \n \n
\n \n {{bottom.Title | translate}}\n
\n
\n\n \n \n \n
\n {{sub.Title | translate}}\n
\n
\n
\n
\n
\n
\n
\n
\n","import {ChangeDetectionStrategy, Component, Input, ViewChild} from '@angular/core';\nimport {SidebarMode} from '../../ap-interface';\nimport {SIDEBAR_ROTATE_ICON, SIDEBAR_TRANSLATE_TEXT} from '../../ap-animation/sidbar.animation';\nimport {PanelBarExpandMode, PanelBarItemModel} from '@progress/kendo-angular-layout';\nimport {Trace} from '../../debug-utils/ApplicationTracer';\nimport {MenuStore} from '../../stores/layout/menu.store';\nimport {RouterStore} from '../../stores/router/router.store';\nimport {filter, map} from 'rxjs/operators';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {NgScrollbar} from 'ngx-scrollbar';\nimport IMenuEntry = Data.MenuStructure.IMenuEntry;\nimport IMenuChildren = Data.MenuStructure.IMenuChildren;\nimport {ApRoleTypeService} from '../../services/common/ap-role-type.service';\n\n@Component({\n selector: 'ap-menu',\n templateUrl: 'ap-menu.component.html',\n animations: [\n SIDEBAR_TRANSLATE_TEXT,\n SIDEBAR_ROTATE_ICON\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ApMenuComponent {\n @ViewChild(NgScrollbar) ngScrollbar;\n @Input()\n public visiblePanel = true;\n public sidebarMode$ = this.menuStore.Listen(s => s.mode);\n public menuData = this.menuStore.Listen(s => s.data)\n .pipe(\n filter(d => !!d),\n map(menu =>\n this.loginStore.User && ApRoleTypeService.hasAgriconRole(this.loginStore.User) ?\n menu.FindAll(m => m.Order > 0) : menu.FindAll(m => m.Order > 0 && m.Id !== 1)));\n public bottomMenuData = this.menuStore.Listen(s => s.data)\n .pipe(\n filter(d => !!d),\n map(menu => menu.FindAll(m => m.Order < 0))\n );\n public url$ = this.routerStore.Listen(s => s.url);\n public userSelectedUrl = '';\n public panelBarExpandMode = PanelBarExpandMode;\n public pageViewMode$ = this.menuStore.Listen(s => s.mode);\n\n constructor(public menuStore: MenuStore,\n private routerStore: RouterStore,\n private loginStore: LoginStore) {\n }\n\n /**\n * Angular ngFor trackBy implementation to avoid flickering of menu when\n * menu items have changed\n */\n @Trace()\n public menuTrackBy(index: number, item): string {\n return item.Id;\n }\n\n /**\n * change the Sidebar Mode from Half to Open and otherwise\n */\n @Trace()\n public toggleSidebar(): void {\n if (this.menuStore.getViewMode() === SidebarMode.OPEN) {\n this.userSelectedUrl = '';\n this.menuStore.halfSidebar();\n } else {\n this.menuStore.openSidebar();\n }\n }\n\n /**\n * as per kendo documentation this is the recommended way to\n * track menu user selections\n */\n @Trace()\n public menuStateChange(data: Array): void {\n const focusedMenuItem: PanelBarItemModel = data.FindAll(item => item.focused === true).FirstOrDefault();\n if (focusedMenuItem) {\n this.userSelectedUrl = focusedMenuItem.id;\n } else {\n this.userSelectedUrl = '';\n }\n\n // refresh scrollbar with timeout => necessary because menu-animation takes 200ms\n setTimeout(() => this.ngScrollbar?.update(), 300);\n }\n\n /**\n * Expands a main menu item\n * (only for collapsed menu)\n */\n @Trace()\n public expandItem(main: IMenuEntry): void {\n if (!this.visiblePanel) {\n if (main) {\n this.userSelectedUrl = main.Url;\n } else {\n this.userSelectedUrl = '';\n }\n }\n }\n\n /**\n * navigate to the Target with the Angular Router\n */\n @Trace()\n public async navigate(menu: IMenuEntry | IMenuChildren): Promise {\n if (menu.CanNavigate) {\n this.routerStore.navigate([menu.Url]).then(() => {\n });\n }\n }\n}\n","import {Directive, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[adHost]',\n})\nexport class ApViewContainerRefDirective {\n constructor(public viewContainerRef: ViewContainerRef) {\n }\n}\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {ApVisibleStates} from '../ap-interface';\n\nexport const TRANSLATE_PANEL_TEXT = trigger('translatePanelText', [\n state('in', style({\n transform: 'translateX(0px)'\n })),\n state('out', style({\n transform: 'translateX(-250px)'\n })),\n transition(`in => out`, animate(200)),\n transition(`out => in`, animate(200)),\n]);\n\nexport const TRANSLATE_EDIT_FORM = trigger('transalteEditForm', [\n state(ApVisibleStates.OUT, style({\n transform: 'translateX(-100%)',\n display: 'none'\n })),\n state(ApVisibleStates.IN, style({\n transform: 'translateX(0%)',\n display: 'block'\n })),\n transition(`${ApVisibleStates.IN} => ${ApVisibleStates.OUT}`, animate(200)),\n transition(`${ApVisibleStates.OUT} => ${ApVisibleStates.IN}`, animate(200)),\n]);\n","import {Component, ComponentFactoryResolver, ViewChild} from '@angular/core';\nimport {ApViewContainerRefDirective} from '../../directives/ap-view-container-ref.directive';\nimport {ApViewContainerData, ApVisibleStates} from '../../../ap-interface';\nimport {TRANSLATE_EDIT_FORM} from '../../../ap-animation/translate-panel-text.animation';\nimport {Observable} from 'rxjs';\nimport {FormStore} from '../../../stores/layout/form.store';\nimport {Trace} from '../../../debug-utils/ApplicationTracer';\nimport {ObjectFactory} from 'ts-tooling';\n\n@Component({\n selector: 'ap-view-container',\n templateUrl: 'ap-view-container.component.html',\n animations: [TRANSLATE_EDIT_FORM]\n})\nexport class AdViewContainerComponent {\n public formState$: Observable;\n @ViewChild(ApViewContainerRefDirective, {static: true}) adHost: ApViewContainerRefDirective;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\n private formStore: FormStore) {\n this.formState$ = this.formStore.FormState$;\n this.formStore.NewComponent$.subscribe(d => {\n this.loadComponent(d);\n });\n }\n\n @Trace()\n loadComponent(component: any): void {\n if (!component || !this.adHost) {\n return;\n }\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component.component);\n\n const viewContainerRef = this.adHost.viewContainerRef;\n viewContainerRef.clear();\n\n const componentRef = viewContainerRef.createComponent(componentFactory);\n if (component.passReference === true) {\n (componentRef.instance as ApViewContainerData).data = component.data;\n } else {\n (componentRef.instance as ApViewContainerData).data = ObjectFactory.Copy(component.data);\n }\n }\n\n @Trace()\n destroyComponent(): void {\n if (this.adHost && this.adHost.viewContainerRef && this.formStore.FormState$.getValue() === ApVisibleStates.OUT) {\n this.adHost.viewContainerRef.clear();\n }\n }\n}\n","
\n \n
\n","
\n {{name}}\n

{{speed}} {{'Unit__km_h' | translate}}

\n

{{date}}

\n
\n","import {ChangeDetectorRef, Component, ElementRef} from '@angular/core';\nimport {IApMachinePopup} from '../../ap-map';\n\n/**\n * Machine popup component (popup used in location layer on map)\n */\n@Component({\n selector: 'ap-machine-popup',\n templateUrl: 'ap-machine-popup.component.html',\n styleUrls: ['ap-machine-popup.component.scss']\n})\nexport class ApMachinePopupComponent implements IApMachinePopup {\n\n /**\n * shows or hides the popup with the use of *ngIf\n */\n public visible = false;\n\n /**\n * name to be displayed in popup\n */\n public name: string;\n\n /**\n * speed to be displayed in popup\n */\n public speed: string;\n\n /**\n * date to be displayed in popup\n */\n public date: string;\n\n /**\n * Initializes this instance\n */\n constructor(private elementRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n }\n\n /**\n * Gets the component's element for further use in other classes/components.\n */\n public getHTMLElement(): HTMLElement {\n return this.elementRef.nativeElement as HTMLElement;\n }\n\n /**\n * Refreshes component data (Change detection)\n */\n public refreshComponent(): void {\n this.changeDetection.detectChanges();\n }\n\n /**\n * Displays the popup\n */\n public show(): void {\n this.visible = true;\n this.refreshComponent();\n }\n\n /**\n * Hides the popup\n */\n public hide(): void {\n this.visible = false;\n this.refreshComponent();\n }\n}\n","
\n
\n \n {{key}}: {{valueMap[key]}}\n
\n
\n","import {ChangeDetectorRef, Component, ElementRef} from '@angular/core';\nimport {IApDynamicPointDataPopup} from '../../../ap-map';\nimport {unset} from 'lodash';\nimport {ApMenuUrls} from '../../../ap-interface';\nimport {RouterStore} from '../../../stores/router/router.store';\nimport {MapStore} from '../../../stores/map/map.store';\n\n@Component({\n selector: 'ap-sensor-point-popup',\n templateUrl: './ap-sensor-point-popup.component.html',\n styleUrls: ['./ap-sensor-point-popup.component.scss']\n})\nexport class ApSensorPointPopupComponent implements IApDynamicPointDataPopup {\n /**\n * holds all the Point Data in a Label => Value Map\n */\n valueMap: { [p: string]: string } = {};\n\n /**\n * shows or hides the popup with the use of *ngIf\n */\n visible = false;\n\n get classifyButtonVisible(): boolean {\n return this.routerStore.CurrentUrl === ApMenuUrls.IMPORT_OVERVIEW;\n }\n\n /**\n * Initializes this instance\n */\n constructor(private elementRef: ElementRef,\n private changeDetection: ChangeDetectorRef,\n private mapStore: MapStore,\n private routerStore: RouterStore) {\n }\n\n getKeys(): string[] {\n return Object.keys(this.valueMap);\n }\n\n /**\n * add a Value to the valueMap\n * @param key the Text that renders as label for the Value\n * @param value the Value represent as String\n */\n addValue(key: string, value: string): void {\n this.valueMap[key] = value;\n }\n\n /**\n * remove a Value from valueMap\n * @param key the Key of the Value to remove from valueMap\n */\n removeValue(key: string): void {\n unset(this.valueMap, key);\n }\n\n clear(): void {\n this.valueMap = {};\n }\n\n /**\n * Gets the component's element for further use in other classes/components.\n */\n getHTMLElement(): HTMLElement {\n return this.elementRef.nativeElement as HTMLElement;\n }\n\n /**\n * Refreshes component data (Change detection)\n */\n refreshComponent(): void {\n this.changeDetection.detectChanges();\n }\n\n /**\n * Displays the popup\n */\n show(): void {\n this.visible = true;\n this.refreshComponent();\n }\n\n /**\n * Hides the popup\n */\n hide(): void {\n this.visible = false;\n this.refreshComponent();\n }\n\n classify(key: string): void {\n this.mapStore.Layers.FungiDetectLayer.classify(key);\n }\n}\n","
\n

{{classificationProperty}}

\n
\n
\n
{{value}}
\n
\n
\n","import {ChangeDetectorRef, Component} from '@angular/core';\nimport OlStyle from 'ol/style/Style';\nimport {keys} from 'lodash';\nimport {IApLengend} from '../../../ap-map';\nimport {Color} from 'ol/color';\n\ntype IColor = string | Color | CanvasPattern | CanvasGradient;\n\n@Component({\n selector: 'ap-sensor-point-legend',\n templateUrl: './sensor-point-legend.component.html',\n styleUrls: ['./sensor-point-legend.component.scss']\n})\nexport class SensorPointLegendComponent implements IApLengend {\n visible = false;\n classification: { [key: string]: OlStyle };\n classificationProperty: string;\n\n constructor(private changeDetection: ChangeDetectorRef) {\n }\n\n getClassValues(): string[] {\n return keys(this.classification);\n }\n\n getColorStyleByKey(key: string): IColor {\n const defaultStyle = '#fff';\n if (this.classification) {\n const style = this.classification[key];\n return style ? style.getFill().getColor() : defaultStyle;\n }\n return defaultStyle;\n }\n\n fillClassification(property: string, classification: { [key: string]: OlStyle }): void {\n this.classification = classification;\n this.classificationProperty = property;\n this.changeDetection.detectChanges();\n }\n\n show(): void {\n this.visible = true;\n this.changeDetection.detectChanges();\n }\n\n hide(): void {\n this.visible = false;\n this.changeDetection.detectChanges();\n }\n}\n","
\n
\n \n \n \n \n \n
\n
{{colorLegend.title | translate}}
\n
{{'Global__in' | translate}} {{colorLegend.unit | translate}}
\n
\n
    \n
  • \n \n {{getLabel(color, colorLegend.colors, i)}}\n
  • \n
\n
\n
\n \n
\n
\n
\n
\n
\n","import {Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {isNumber, isString} from 'lodash';\nimport {combineLatest, Observable} from 'rxjs';\nimport {IApMapColorLegend} from '../../ap-interface';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {ColorLegendStore} from '../../stores/map/color.legend.store';\nimport {map, tap} from 'rxjs/operators';\nimport {MapStore} from '../../stores/map/map.store';\nimport {ObjectFactory} from 'ts-tooling';\n\n@Component({\n selector: 'ap-map-color-legend',\n templateUrl: './ap-map-color-legend.component.html',\n styleUrls: ['./ap-map-color-legend.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: []\n})\nexport class ApMapColorLegendComponent implements OnInit {\n colorLegends$: Observable;\n show = new Map();\n\n constructor(private store: ColorLegendStore,\n private mapStore: MapStore,\n private translationStore: TranslationStore) {\n }\n\n ngOnInit(): void {\n this.colorLegends$ =\n combineLatest([this.store.Listen(s => s.colorLegends)])\n .pipe(\n map(([colorLegends]) =>\n ObjectFactory.Copy(Object.values(colorLegends).FindAll(legend => this.mapStore.Layers.AllLayers$.getValue().Find(l => l.name === legend.layerName)?.Visibility))),\n tap((colorLegends) => colorLegends.forEach(legend => this._setAnchorWidth(legend.title))),\n tap((colorLegends) => colorLegends.forEach(legend => {\n if (!this.show[legend.title]) {\n this.show[legend.title] = true;\n }\n }))\n );\n }\n\n escapeTitle(title: string): string {\n return CSS.escape(title.split(' ').join(''));\n }\n\n getLabel(color, colors, i): string {\n if (isNumber(color.label)) {\n if (+colors[0].label < +colors[1].label) {\n if (i === colors.length - 1) {\n if (+colors[i - 1].label + 1 !== +color.label) {\n return `>= ${color.label}`;\n }\n } else if (+color.label !== +colors[i + 1].label - 1) {\n return `${color.label} - ${(colors[i + 1].label - 1)}`;\n }\n } else if (+colors[0].label > +colors[1].label) {\n if (i === 0) {\n return `>= ${color.label}`;\n } else if (i === colors.length - 1) {\n if (+color.label > 0) {\n return `${color.label} - 0`;\n }\n } else if (+color.label !== +colors[i + 1].label + 1) {\n return `${colors[i].label} - ${(+colors[i + 1].label + 1)}`;\n }\n }\n } else if (isString(color.label)) {\n return this.translationStore.FindTranslationForSelectedLanguage(color.label);\n }\n\n return color.label;\n }\n\n open(title: string): void {\n const show = this.show.get(title);\n this.show.set(title, !show);\n this._setAnchorWidth(title);\n }\n\n private _setAnchorWidth(title: string): void {\n setTimeout(() => {\n const anchor = document.querySelector('#ColorLegendAnchor' + this.escapeTitle(title));\n if (!anchor) {\n return;\n }\n const popup = document.querySelector('#ColorLegendPopup' + this.escapeTitle(title));\n if (popup) {\n anchor.style.minWidth = 'min-content';\n anchor.style.width = window.getComputedStyle(popup).width;\n } else {\n anchor.style.minWidth = '';\n anchor.style.width = '';\n }\n }, 1);\n }\n\n close(layerName: string): void {\n this.mapStore.Layers.AllLayers$.getValue().filter(layer => layer.name === layerName).forEach(layer => layer.Visibility = false);\n }\n}\n","import {Component, ElementRef, ViewChild} from '@angular/core';\nimport {ContextMenuComponent, ContextMenuSelectEvent} from '@progress/kendo-angular-menu';\nimport {ApMenuUrls} from '../../ap-interface';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {TranslationStore} from '../../stores/translation/translation.store';\nimport {Offset} from '@progress/kendo-angular-popup';\nimport {ApMapInstance, LayerNames} from '../../ap-map';\nimport {RouterStore} from '../../stores/router/router.store';\nimport {ApShowTrackOnMapService} from '../../ap-utils/service/ap-show-track-on-map.service';\nimport {KrigingStore} from '../../stores/administration/kriging.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {FieldService} from '../../field-management/components/field.service';\nimport {ApRoleTypeService} from '../../services/common/ap-role-type.service';\n\nexport interface IFieldContextMenuItem {\n text: string;\n key: string;\n args: any[];\n}\n\nexport interface IFieldContextMenuItems {\n text: string;\n items: IFieldContextMenuItem[];\n}\n\n@Component({\n selector: 'ap-map-context-menu',\n template: `\n \n `,\n})\nexport class ApMapContextMenuComponent {\n\n @ViewChild(ContextMenuComponent, {static: true})\n contextMenu: ContextMenuComponent;\n\n constructor(private fieldStore: FieldStore,\n private fieldService: FieldService,\n private krigingStore: KrigingStore,\n private loginStore: LoginStore,\n private routerStore: RouterStore,\n private showTrackOnMapService: ApShowTrackOnMapService,\n private translationStore: TranslationStore) {\n }\n\n async onSelect($event: ContextMenuSelectEvent): Promise {\n const args = $event.item.args;\n switch ($event.item.key) {\n case 'interpolate':\n if (ApRoleTypeService.hasAgriconRole(this.loginStore.User)) {\n // only the Admin can interpolate the Fields\n this.krigingStore.createAllRastersFor(args[1].id);\n }\n break;\n case 'navigate':\n await this.routerStore.navigate([args[0]], args[1].id);\n break;\n case 'execute':\n args[0](...args[1]);\n break;\n case 'newfield':\n this.fieldService.OpenCreateForm();\n break;\n }\n }\n\n setContextMenu(features: { layer: string, id: string | number }[]): void {\n this.contextMenu.items = [];\n features.forEach(f => {\n switch (f.layer) {\n case LayerNames.FIELDS:\n this.contextMenu.items.AddRange(this._getFieldContextMenu(f.id.toString()));\n break;\n case LayerNames.TRACK:\n this.contextMenu.items.AddRange(this._getTrackContextMenu());\n break;\n }\n });\n\n this._createFieldContextMenu();\n }\n\n /**\n * Extends the existing contextMenu items\n * @param item to be added to contextMenu\n */\n extendContextMenu(item: IFieldContextMenuItem): void {\n if (!this.contextMenu.items) {\n this.contextMenu.items = [];\n }\n this.contextMenu.items.push(item);\n }\n\n private _createFieldContextMenu(): void {\n if (ApMapInstance.routerStore.CurrentUrl === ApMenuUrls.N_FERTILIZATION_LOG_FILES\n || ApMapInstance.routerStore.CurrentUrl === ApMenuUrls.FIELD_WORK_ACTION_LOOKUP) {\n this.contextMenu.items.AddRange([{\n text: this.translationStore.FindTranslationForSelectedLanguage('Global_Create_Field'),\n key: 'newfield',\n args: []\n }]);\n }\n }\n\n hide(): void {\n this.contextMenu.hide();\n }\n\n show(target: Offset | HTMLElement | ElementRef): void {\n if (this.contextMenu.items.length > 0) {\n this.contextMenu.show(target);\n }\n }\n\n private _getFieldContextMenu(id: string): IFieldContextMenuItems[] {\n const field = this.fieldStore.getFieldByFieldGeomId(id);\n const name = this.fieldStore.getFieldNameById(id);\n const fieldTranslation = this.translationStore.FindTranslationForSelectedLanguage('Global__Field');\n const items: IFieldContextMenuItem[] = [];\n items.Add({\n text: this.translationStore.FindTranslationForSelectedLanguage('Docu_Ini__FieldDiary'),\n key: 'navigate',\n args: [ApMenuUrls.EVALUATION_FIELD_DIARY, {id: field.Id.toString()}],\n });\n if (ApRoleTypeService.hasAgriconRole(this.loginStore.User)) {\n // add Admin Operations\n items.Add({\n text: this.translationStore.FindTranslationForSelectedLanguage('Nutrients__Create_Nutrient_Distribution_Map'),\n key: 'interpolate',\n args: [ApMenuUrls.EVALUATION_FIELD_DIARY, {id}],\n });\n }\n return [\n {\n text: name ? `${fieldTranslation}: ${name}` : fieldTranslation,\n items,\n }\n ];\n }\n\n private _getTrackContextMenu(): IFieldContextMenuItems[] {\n return [{\n text: this.translationStore.FindTranslationForSelectedLanguage('Global__Track'), items: [\n {\n text: this.translationStore.FindTranslationForSelectedLanguage('Api_Enums__Speed'),\n key: 'execute',\n args: [(s: ApShowTrackOnMapService) => s.setType(0), [this.showTrackOnMapService]]\n },\n {\n text: this.translationStore.FindTranslationForSelectedLanguage('Api_Enums__FuelRate'),\n key: 'execute',\n args: [(s: ApShowTrackOnMapService) => s.setType(1), [this.showTrackOnMapService]]\n },\n {\n text: this.translationStore.FindTranslationForSelectedLanguage('Api_Enums__EngineSpeed'),\n key: 'execute',\n args: [(s: ApShowTrackOnMapService) => s.setType(2), [this.showTrackOnMapService]]\n },\n {\n text: this.translationStore.FindTranslationForSelectedLanguage('Api_Enums__ApplicationRate'),\n key: 'execute',\n args: [(s: ApShowTrackOnMapService) => s.setType(3), [this.showTrackOnMapService]]\n },\n {\n text: this.translationStore.FindTranslationForSelectedLanguage('Api_Enums__Tank'),\n key: 'execute',\n args: [(s: ApShowTrackOnMapService) => s.setType(4), [this.showTrackOnMapService]]\n },\n {\n text: this.translationStore.FindTranslationForSelectedLanguage('Api_Enums__WorkState'),\n key: 'execute',\n args: [(s: ApShowTrackOnMapService) => s.setType(5), [this.showTrackOnMapService]]\n }\n ]\n }];\n }\n}\n","import {AfterViewInit, Component, EventEmitter, Output} from '@angular/core';\nimport {MapStore} from '../../../stores/map/map.store';\nimport {MapLayerControlStore} from '../../../stores/map/map.layer.control.store';\nimport {FormControl, FormGroup} from '@angular/forms';\nimport {BingImagery} from '../../../ap-map';\n\n@Component({\n selector: 'layer-controller-map-selector',\n template: `\n
\n
\n \n \n
\n
\n `,\n styles: [\n `\n div.ap-layer-control-base-map-item {\n display: flex;\n padding: 5px;\n cursor: pointer;\n }\n\n div.ap-layer-control-base-map-item > input {\n margin-right: 5px;\n }\n `,\n ],\n})\nexport class LayerControllerMapSelectorComponent implements AfterViewInit {\n @Output()\n public selectedMap = new EventEmitter();\n public maps$ = this.mapLayerControlStore.Maps$;\n public mapSelectControl = new FormControl(null);\n public mapGroup = new FormGroup({\n map: this.mapSelectControl,\n });\n\n constructor(private mapStore: MapStore,\n private mapLayerControlStore: MapLayerControlStore) {\n }\n\n ngAfterViewInit(): void {\n this.mapStore.Layers.BackgroundMap$.subscribe(v => this.mapSelectControl.setValue(v));\n }\n\n select(value: BingImagery): void {\n this.selectedMap.emit(value);\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ILayerControlLayer} from '../../../ap-interface/map/layer-control-layer.interface';\nimport {SelectAllCheckboxState} from '@progress/kendo-angular-grid';\n\nexport interface ISelectionEvent {\n id: string;\n selected: boolean;\n}\n\nexport interface ILayerPanelBarItem {\n group: string;\n layers: ILayerControlLayer[];\n}\n\n@Component({\n selector: 'layer-panel-bar-item',\n template: `\n
\n \n

{{translationKeys[id] | translate}}

\n
\n `,\n styles: [\n `\n div.ap-layer-control-item {\n display: flex;\n cursor: pointer;\n }\n\n div.ap-layer-control-item > p {\n padding: 0 0 0 5px;\n margin: 0;\n }\n\n div.ap-layer-control-item > input {\n margin-top: 1px;\n }\n `,\n ],\n})\nexport class LayerPanelBarItemComponent {\n @Input()\n public id = '';\n @Input()\n public visibility: SelectAllCheckboxState = 'unchecked';\n @Input()\n public translationKeys: { [key: string]: string } = {};\n @Input()\n public padding = '0';\n\n @Output()\n public visibilityChanged = new EventEmitter();\n\n public select(): void {\n this.visibility = this.visibility === 'checked' ? 'unchecked' : this.visibility === 'indeterminate' ? 'unchecked' : 'checked';\n this.visibilityChanged.emit({id: this.id, selected: this.visibility === 'checked'});\n }\n}\n","import {AfterContentInit, AfterViewInit, Component, ElementRef, ViewChild} from '@angular/core';\nimport {MapStore} from '../../../stores/map/map.store';\nimport {BingImagery, LayerGroupNames, LayerNames} from '../../../ap-map';\nimport {map} from 'rxjs/operators';\nimport {ISelectionEvent} from './layer-panel-bar-item.component';\nimport {\n MapLayerControlStore\n} from '../../../stores/map/map.layer.control.store';\nimport {\n ILayerControlLayer\n} from '../../../ap-interface/map/layer-control-layer.interface';\nimport {SelectAllCheckboxState} from '@progress/kendo-angular-grid';\n\ninterface ILayerGroupItem {\n group: {\n id: number;\n name: string;\n visibility: SelectAllCheckboxState;\n };\n layers: ILayerControlLayer[];\n}\n\n@Component({\n selector: 'layer-controller',\n template: `\n
\n \n \n \n {{layerGroupTranslations[(BackgroundLayerGroups$ | async).name] | translate}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
`,\n})\nexport class LayerControllerComponent implements AfterViewInit, AfterContentInit {\n @ViewChild('mapSelector', {static: true, read: ElementRef}) mapSelector: ElementRef;\n\n constructor(private mapStore: MapStore,\n private mapLayerControlStore: MapLayerControlStore) {\n }\n\n public BackgroundLayerGroups$ = this.mapStore.Layers.AllLayerGroups$.pipe(\n map(g => g.Find(v => v?.name === LayerGroupNames.BACKGROUND))\n );\n public LayerGroups$ = this.mapStore.Layers.ActiveLayerGroups$.pipe(\n map(g => g.Convert(v => {\n let layers = this.mapStore.Layers.getLayersByGroup(v.name);\n if (layers) {\n layers = layers.sort((a, b) => a.Order > b.Order ? 1 : a.Order === b.Order ? 0 : -1);\n }\n return {\n group: {\n id: v.id,\n name: v.name,\n visibility: v.visibility,\n },\n layers,\n } as ILayerGroupItem;\n })),\n );\n\n public layerNameTranslations = {\n [LayerNames.FIELDS_DESCRIPTION]: 'Global__Fields',\n [LayerNames.SOIL_SAMPLE_FIELDS]: 'Base_Pages__SampleFields',\n [LayerNames.LOCATIONS]: 'Settings__Lbl_Menu_Devices',\n [LayerNames.TRACK]: 'Docu__Driving_Lanes',\n [LayerNames.SOIL_SAMPLES]: 'DataContext_InterfaceMapping__Samples',\n [LayerNames.SOIL_SAMPLE_DISTRIBUTIONS]: 'Global__SoilSample_NutrientDistribution',\n [LayerNames.DISTRIBUTIONS]: 'Global__NutrientDistribution',\n [LayerNames.SOIL_GROUP_MAP]: 'Nutrients__Soilgroup',\n [LayerNames.NEED]: 'Nutrients__Need',\n [LayerNames.FUNGIDETECT]: 'Global__Fungidetect',\n [LayerNames.CONTACT]: 'Tip_ContactText',\n [LayerNames.EDIT]: 'Base__Editor',\n [LayerNames.TASK_MANAGEMENT]: 'Base__TaskWriter',\n [LayerNames.TASK_MANAGEMENT_NUTRIENT]: 'Global__NutrientDistribution',\n [LayerNames.NUTRIENT_PLANNINGS]: 'Global__Planning',\n [LayerNames.FIELDS_CROP]: 'Global__Crops',\n [LayerNames.SENSOR_POINTS]: 'NUptake',\n [LayerNames.N_RASTER]: 'Lbl_NSensor',\n [LayerNames.PP_RASTER]: 'Base_PP_Type',\n [LayerNames.NDI]: 'Global__NDI_Name',\n [LayerNames.N_APPLICATION_MAP]: 'Global__Planning',\n [LayerNames.PP_APPLICATION_MAP]: 'Global__Planning',\n [LayerNames.N_UPTAKE]: 'NUptake_Sat',\n };\n\n public layerGroupTranslations = {\n [LayerGroupNames.NONE]: 'Global__Nothing',\n [LayerGroupNames.BACKGROUND]: 'AgriConnect_Map',\n [LayerGroupNames.BASIC]: 'Global_BaseData',\n [LayerGroupNames.BASE_FERTILISATION]: 'Global__BasicFertilization',\n [LayerGroupNames.LOGFILES]: 'Global__Logfiles',\n [LayerGroupNames.PLANT_PROTECTION]: 'Global__PlantProtection',\n [LayerGroupNames.SEED_MAPS]: 'Global__Seedmaps',\n [LayerGroupNames.FIELD_WORK]: 'Global__Documentation',\n [LayerGroupNames.TASK_MANAGEMENT]: 'Global_AgriConnect',\n [LayerGroupNames.FUNGIDETECT]: 'Global__Fungidetect',\n [LayerGroupNames.N_FERTILISATION]: 'Global__NFertilization',\n };\n\n private currentDragLayer: ILayerControlLayer = null;\n private currentDropLayer: ILayerControlLayer = null;\n\n ngAfterViewInit(): void {\n this.mapLayerControlStore.refresh({\n map: this.mapStore.Layers.BackgroundMap$.getValue(),\n layers: this.mapStore.Layers.AllLayers$.getValue(),\n });\n }\n\n ngAfterContentInit(): void {\n setTimeout(() => {\n const mapSelector = this.mapSelector.nativeElement;\n mapSelector.click();\n }, 0);\n }\n\n public layerSelectionChange(e: ISelectionEvent): void {\n const layer = this.mapStore.Layers.getLayerByName(e.id);\n if (!layer) {\n return;\n }\n this.mapLayerControlStore.onVisibilityChanged.emit({layer, visibility: e.selected});\n this.mapStore.Layers.refreshActiveLayerGroups(layer).then();\n }\n\n public layerGroupSelectionChange(e: ISelectionEvent): void {\n for (const layer of this.mapStore.Layers.getLayersByGroup(e.id)) {\n this.mapLayerControlStore.onVisibilityChanged.emit({layer, visibility: e.selected});\n this.mapStore.Layers.refreshActiveLayerGroups(layer).then();\n }\n }\n\n dropLayer(): void {\n if (!this.currentDragLayer || !this.currentDropLayer) {\n this.currentDragLayer = null;\n this.currentDropLayer = null;\n return;\n }\n if (this.currentDragLayer.name === this.currentDropLayer.name) {\n this.currentDragLayer = null;\n this.currentDropLayer = null;\n return;\n }\n const group = this.mapStore.Layers.ActiveLayerGroups.Find(g => g.name === this.currentDragLayer.Group);\n if (!group) {\n this.currentDragLayer = null;\n this.currentDropLayer = null;\n return;\n }\n let id = group.id;\n const layers = this.mapStore.Layers.getLayersByGroup(group.name);\n const before = layers.FindAll(l => l.Order > this.currentDragLayer.Order && l.name !== this.currentDragLayer.name && l.name !== this.currentDropLayer.name);\n const between = layers.FindAll(l => l.Order < this.currentDragLayer.Order && l.Order > this.currentDropLayer.Order && l.name !== this.currentDragLayer.name && l.name !== this.currentDropLayer.name);\n const after = layers.FindAll(l => l.Order < this.currentDropLayer.Order && l.name !== this.currentDragLayer.name && l.name !== this.currentDropLayer.name);\n for (const layer of this.currentDragLayer.Order < this.currentDropLayer.Order ? [\n ...before,\n ...between,\n this.currentDragLayer,\n this.currentDropLayer,\n ...after,\n ] : [\n ...before,\n ...between,\n this.currentDropLayer,\n this.currentDragLayer,\n ...after,\n ]) {\n layer.Order = --id;\n }\n setTimeout(() => {\n this.mapStore.Layers.refreshActiveLayerGroups(this.currentDragLayer).then();\n this.currentDragLayer = null;\n this.currentDropLayer = null;\n }, 0);\n }\n\n dragLayer(l: ILayerControlLayer): void {\n this.currentDragLayer = l;\n }\n\n allowDropLayer(e: DragEvent, l: ILayerControlLayer): void {\n if (!this.currentDragLayer) {\n return;\n }\n if (l.Group === this.currentDragLayer.Group) {\n this.currentDropLayer = l;\n e.preventDefault();\n return;\n }\n this.currentDropLayer = null;\n }\n\n layerGroupTrackBy(idx: number, item: ILayerGroupItem): string {\n return `${item.group.id}_${item.group.name}_${item.group.visibility}_${item.layers\n .Convert(l => `${l.Group}_${l.name}_${l.Order}_${l.Visibility}`).Join('_')}`;\n }\n\n selectMap(m: BingImagery): void {\n this.mapLayerControlStore.onBackgroundMapChanged.emit(m);\n }\n\n clickLayer(e: MouseEvent, l: ILayerControlLayer): void {\n this.layerSelectionChange({\n id: l.name,\n selected: !l.Visibility,\n });\n e.preventDefault();\n }\n}\n","
\n \n \n \n \n
\n","import {ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {\n PanelBarItemModel\n} from '@progress/kendo-angular-layout';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n BurgerMenuStore\n} from '../../stores/map/burger.menu.store';\nimport {map} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\nimport {\n ApDynamicComponentModel\n} from '../../entry-components/ap-dynamic-component-loader/ap-dynamic-component-loader.component';\nimport {\n MapViewStore\n} from '../../stores/layout/mapview.store';\nimport {MapViewMode} from '../../ap-interface/enums';\n\n@Component({\n selector: 'ap-map-burger-menu',\n templateUrl: './ap-map-burger-menu.component.html',\n styleUrls: ['./ap-map-burger-menu.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApMapBurgerMenuComponent implements OnInit {\n @ViewChild('apMapBurgerMenu', {static: false}) private apMapBurgerMenu: ElementRef;\n\n public show = false;\n public showMap$: Observable;\n public items$: Observable;\n\n constructor(private store: BurgerMenuStore,\n private translationStore: TranslationStore,\n private mapView: MapViewStore,\n private changeDetectorRef: ChangeDetectorRef) {\n this.showMap$ = this.mapView.Listen(s => s.mode).pipe(\n map(m => m !== MapViewMode.HIDE)\n );\n }\n\n ngOnInit(): void {\n this.items$ = this.store.Listen(s => s.data).pipe(\n map(d => this._toPanelBarItemModel(d))\n );\n }\n\n asComponent(content: string | ArrayBuffer | DocumentFragment): ApDynamicComponentModel {\n return content as unknown as ApDynamicComponentModel;\n }\n\n isComponent(content: string | ArrayBuffer | DocumentFragment): boolean {\n return content instanceof ApDynamicComponentModel;\n }\n\n isString(content: string | ArrayBuffer | DocumentFragment): boolean {\n return typeof content === 'string';\n }\n\n private _toPanelBarItemModel(data: any[]): PanelBarItemModel[] {\n return data.map(d => ({\n title: this.translationStore.FindTranslationForSelectedLanguage(d.title),\n id: d.title,\n content: d.content ? d.content : undefined,\n children: d.children ? this._toPanelBarItemModel(d.children) : [],\n expanded: d.expanded ? d.expanded : false\n } as PanelBarItemModel));\n }\n\n public onClick(): void {\n this.show = !this.show;\n }\n}\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {ApMapInstance, ApMapViews} from '../../ap-map';\nimport {MapStore} from '../../stores/map/map.store';\n\n/**\n * Component for map's zoom and info controls.\n */\n@Component({\n selector: 'ap-map-zoom',\n templateUrl: 'ap-map-zoom.component.html',\n styleUrls: ['ap-map-zoom.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\n\n/**\n * Component for map's zoom and info controls.\n */\nexport class ApMapZoomComponent {\n\n public showInfo = false;\n private userPositionPressed = false;\n\n constructor(private mapStore: MapStore) {\n }\n\n /**\n * User clicked info button\n */\n infoClicked(): void {\n this.showInfo = !this.showInfo;\n }\n\n /**\n * eventhandler for click of (+) button\n */\n zoomInClicked(): void {\n ApMapViews.olView.setZoom(this.mapStore.LastView.zoom + 1);\n }\n\n /**\n * eventhandler for click of (-) button\n */\n zoomOutClicked(): void {\n ApMapViews.olView.setZoom(this.mapStore.LastView.zoom - 1);\n }\n\n setNorthOrientation(): void {\n ApMapViews.olView.setRotation(0);\n }\n\n showUserPosition(): void {\n if (!this.userPositionPressed) {\n document.getElementById('ap-map-showLocation')?.classList.add('toggled');\n this.mapStore.Layers.UserLocationLayer.initUserPositionTracking();\n } else {\n document.getElementById('ap-map-showLocation')?.classList.remove('toggled');\n this.mapStore.Layers.UserLocationLayer.disableUserPositionTracking();\n }\n\n this.userPositionPressed = !this.userPositionPressed;\n }\n}\n","\n\n\n
\"Zoom
\n
\"Zoom
\n
\"North\"
\n
\"Show
\n
\n<>\n","import {AfterContentInit, Component, OnDestroy, OnInit} from '@angular/core';\nimport {map} from 'rxjs/operators';\nimport {GeometryEditorTool} from '../ap-edit-tooltype';\nimport {EditorService} from '../editor.service';\nimport {FieldStore} from '../../../../stores/farm/field.store';\nimport {ModalDialogStore} from '../../../../stores/dialog/modal.dialog.store';\nimport {\n IModalDialogData,\n ModalDialogButtonDisable\n} from '../../../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {filter, Observable, of, Subscription} from 'rxjs';\nimport {ApTranslationService} from '../../../../ap-utils/service/ap-translation.service';\n\n@Component({\n selector: 'ap-new-field-toolbar',\n template: `\n
\n \n
\n
\n \n \n \n \n \n
\n `,\n styles: [\n `\n .field_edit_toolbar {\n color: white;\n }\n\n .ap-active {\n background-color: #76E11D !important;\n }\n\n .field_edit_toolbar button {\n margin-right: 2px;\n }\n `,\n ]\n})\nexport class NewFieldToolbarComponent implements OnInit, OnDestroy {\n IsNewFieldDisabled$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => tool !== GeometryEditorTool.DRAW_NEW));\n IsNewFieldActive$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => tool === GeometryEditorTool.DRAW_NEW));\n IsEditDisabled$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => ![\n GeometryEditorTool.MODIFY,\n GeometryEditorTool.DRAW_HOLE,\n GeometryEditorTool.DELETE_HOLE,\n ].Contains(tool)));\n IsEditFieldActive$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => tool === GeometryEditorTool.MODIFY));\n IsDrawHoleDisabled$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => ![\n GeometryEditorTool.MODIFY,\n GeometryEditorTool.DRAW_HOLE,\n GeometryEditorTool.DELETE_HOLE,\n ].Contains(tool)));\n IsDrawHoleFieldActive$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => tool === GeometryEditorTool.DRAW_HOLE));\n IsDeleteHoleDisabled$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => ![\n GeometryEditorTool.MODIFY,\n GeometryEditorTool.DRAW_HOLE,\n GeometryEditorTool.DELETE_HOLE,\n ].Contains(tool)));\n IsDeleteHoleActive$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => tool === GeometryEditorTool.DELETE_HOLE));\n IsDeleteDisabled$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => ![\n GeometryEditorTool.DRAW_NEW,\n GeometryEditorTool.SPLIT\n ].Contains(tool)));\n IsFinishDisabled$ = this.editorService.mapStore.Editor.ActiveTool$.pipe(map(tool => ![\n GeometryEditorTool.DRAW_NEW,\n GeometryEditorTool.DRAW_HOLE,\n GeometryEditorTool.SPLIT\n ].Contains(tool)));\n IsUndoDisabled$ = this.editorService.mapStore.Editor.ActiveTool$\n .pipe(map(tool => ![\n GeometryEditorTool.DRAW_NEW,\n GeometryEditorTool.DRAW_HOLE,\n GeometryEditorTool.SPLIT\n ].Contains(tool)));\n private listenSketchGeometry: Subscription = null;\n public IsEditModeActive$: Observable = of(false);\n\n constructor(private editorService: EditorService,\n private fieldStore: FieldStore,\n private modalDialogStore: ModalDialogStore,\n private translationService: ApTranslationService) {\n }\n\n ngOnInit(): void {\n this.IsEditModeActive$ = of(this.editorService.mapStore.Editor.ActiveTool !== GeometryEditorTool.PREPARE_MODIFY);\n this.listenSketchGeometry = this.modalDialogStore.Listen(s => s.result)\n .pipe(filter(v => [\n 'editor_delete_geometry',\n 'editor_delete_hole_geometry',\n ].Contains(v.key)))\n .subscribe(() => {\n this.editorService.mapStore.Editor.DeleteSketchGeometry();\n });\n }\n\n ngOnDestroy(): void {\n if (this.listenSketchGeometry) {\n this.listenSketchGeometry.unsubscribe();\n this.listenSketchGeometry = null;\n }\n }\n\n public EditNewFieldClick(): void {\n if (this.editorService.mapStore.Editor.ActiveTool === GeometryEditorTool.MODIFY) {\n return;\n }\n const prepareEditLayer = ![\n GeometryEditorTool.DRAW_HOLE,\n GeometryEditorTool.DELETE_HOLE,\n ].Contains(this.editorService.mapStore.Editor.ActiveTool);\n this.editorService.mapStore.Editor.PrepareModifyField(this.fieldStore, prepareEditLayer);\n }\n\n public FinalizeGeometryClick(): void {\n if (![\n GeometryEditorTool.DRAW_NEW,\n GeometryEditorTool.SPLIT\n ].Contains(this.editorService.mapStore.Editor.ActiveTool)) {\n return;\n }\n\n this.editorService.FinalizeDrawing();\n }\n\n public DeleteNewFieldClick(): void {\n if (this.editorService.mapStore.Editor.ActiveTool === GeometryEditorTool.DRAW_HOLE) {\n this.modalDialogStore.setModalDialogData({\n buttons: [\n {\n key: 'editor_delete_hole_geometry',\n text: 'Global__Ok',\n primary: true,\n disable: ModalDialogButtonDisable.Never,\n },\n {\n key: 'editor_cancel_delete_hole_geometry',\n text: 'Global__Cancel',\n primary: true,\n disable: ModalDialogButtonDisable.Never,\n },\n ],\n busy: false,\n show: true,\n title: 'Global__Delete_Hole_Cancel_Title',\n message: 'Global__Delete_Hole_Cancel_Text',\n } as IModalDialogData);\n } else if (this.editorService.mapStore.Editor.ActiveTool === GeometryEditorTool.DRAW_NEW) {\n this.modalDialogStore.setModalDialogData({\n buttons: [\n {\n key: 'editor_delete_geometry',\n text: 'Global__Ok',\n primary: true,\n disable: ModalDialogButtonDisable.Never,\n },\n {\n key: 'editor_cancel_delete_geometry',\n text: 'Global__Cancel',\n primary: true,\n disable: ModalDialogButtonDisable.Never,\n },\n ],\n busy: false,\n show: true,\n title: this.translationService.translate('Global__New_Geometry_Cancel_Title'),\n message: this.translationService.translate('Global__New_Geometry_Cancel_Text'),\n } as IModalDialogData);\n } else if (this.editorService.mapStore.Editor.ActiveTool === GeometryEditorTool.SPLIT) {\n this.editorService.RestartSplit();\n }\n }\n\n public NewHoleFieldClick(): void {\n if (this.editorService.mapStore.Editor.ActiveTool === GeometryEditorTool.DRAW_HOLE) {\n return;\n }\n this.editorService.mapStore.Editor.PrepareDrawNewHole();\n }\n\n public DeleteHoleFieldClick(): void {\n if (this.editorService.mapStore.Editor.ActiveTool === GeometryEditorTool.DELETE_HOLE) {\n return;\n }\n this.editorService.mapStore.Editor.PrepareDeleteHole();\n }\n\n public NewFieldClick(): void {\n if (this.editorService.mapStore.Editor.ActiveTool === GeometryEditorTool.DRAW_NEW) {\n return;\n }\n this.editorService.mapStore.Editor.PrepareNewField(this.fieldStore.SelectedFields.Convert(f => this.fieldStore.getCurrentFieldGeom(f)?.Id).FindAll(id => !!id), this.fieldStore);\n }\n\n public UndoLastPointClick(): void {\n if (![\n GeometryEditorTool.DRAW_NEW,\n GeometryEditorTool.DRAW_HOLE,\n GeometryEditorTool.SPLIT\n ].Contains(this.editorService.mapStore.Editor.ActiveTool)) {\n return;\n }\n this.editorService.RemoveLastPointFromDrawing();\n }\n\n public ActivateEditToolbar(): void {\n if (this.editorService.mapStore.Editor.ActiveTool === GeometryEditorTool.PREPARE_MODIFY) {\n this.editorService.mapStore.Editor.PrepareModifyField(this.fieldStore);\n }\n\n this.IsEditModeActive$ = of(true);\n }\n}\n","
\n \n
\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {IApPermissionData} from '../../ap-interface';\nimport {ApPermissions} from 'invoker-transport';\nimport {MapStore} from '../../stores/map/map.store';\nimport {map} from 'rxjs/operators';\nimport {GeometryEditorTool} from './edit/ap-edit-tooltype';\n\n/**\n * Component for map's zoom and info controls.\n */\n@Component({\n selector: 'ap-map-edit',\n templateUrl: 'ap-map-edit.component.html',\n styleUrls: ['ap-map-edit.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\n\n/**\n * Component for map's zoom and info controls.\n */\nexport class ApMapEditComponent {\n public apPermissionData: IApPermissionData;\n public ApPermissions = ApPermissions;\n public IsEditing$ = this.mapStore.Editor.ActiveTool$.pipe(map(tool => tool !== GeometryEditorTool.NONE));\n\n constructor(private mapStore: MapStore) {\n }\n}\n","import {AfterContentInit, Component, ElementRef, ViewChild} from '@angular/core';\nimport {BehaviorSubject, Observable, of} from 'rxjs';\nimport {NgScrollbar} from 'ngx-scrollbar';\nimport {MapStore} from '../../../stores/map/map.store';\nimport {debounceTime, map} from 'rxjs/operators';\nimport {ListSortOrder, StringFactory} from 'ts-tooling';\nimport {TranslationStore} from '../../../stores/translation/translation.store';\nimport {ISelectionChangeEvent} from './ap-legend-scroller-item.component';\nimport OlStyle from 'ol/style/Style';\nimport OlStyleStroke from 'ol/style/Stroke';\nimport {ApLegendScrollerService} from './ap-legend-scroller.service';\nimport OlIcon from 'ol/style/Icon';\nimport IconAnchorUnits from 'ol/style/IconAnchorUnits';\nimport {ILegend} from '../../../stores/map/map.legend.store';\nimport {LEGEND_IDS} from 'src/app/ap-interface/enums/ap-legend-ids.enum';\n\n@Component({\n selector: 'ap-legend-scroller',\n template: `\n
\n \n\n
\n \n
\n \n \n \n
\n
\n
\n\n \n
\n `,\n})\nexport class ApLegendScrollerComponent implements AfterContentInit {\n\n @ViewChild('scrollBar', {static: true}) scrollBar: NgScrollbar;\n @ViewChild('scrollableView', {static: true, read: ElementRef}) scrollableView: ElementRef;\n @ViewChild('scrollerContent', {static: true, read: ElementRef}) scrollerContent: ElementRef;\n public contentScrollable = new BehaviorSubject(false);\n public states: { [key: string]: boolean } = {};\n public legends$: Observable = of([]);\n\n constructor(private mapStore: MapStore,\n private translationStore: TranslationStore,\n private legendScrollerService: ApLegendScrollerService) {\n this.mapStore.Layers.onChangeTrackLayerStyle.subscribe(e => this.selectionChange(e));\n }\n\n public ngAfterContentInit(): void {\n this.legendScrollerService.selectionChange.subscribe(e => this.selectionChange(e));\n this.legends$ = this.mapStore.Legends.All$\n .pipe(\n debounceTime(250), // without delay we often get 'ExpressionHasBeenChanged...' exception\n map(l => {\n l = l.Convert(_ => ({\n ..._,\n title: this.translationStore.FindTranslationForSelectedLanguage(_.title),\n }));\n l.SortBy(['title'], [ListSortOrder.ASC]);\n return l;\n }));\n }\n\n updateScrollbar(): void {\n if (!this.scrollerContent || !this.scrollableView) {\n return;\n }\n setTimeout(() => {\n this.contentScrollable.next(this.scrollerContent.nativeElement.scrollWidth > this.scrollableView.nativeElement.scrollWidth);\n }, 1);\n }\n\n moveRight(): void {\n if (!this.contentScrollable.getValue() || !this.scrollBar) {\n return;\n }\n this.scrollBar.scrollTo({\n right: 1,\n }).then();\n }\n\n moveLeft(): void {\n if (!this.contentScrollable.getValue() || !this.scrollBar) {\n return;\n }\n this.scrollBar.scrollTo({\n left: 1,\n }).then();\n }\n\n selectionChange($event: ISelectionChangeEvent): void {\n switch ($event.legend?.id) {\n case LEGEND_IDS.NUTRIENT_DISTRIBUTION:\n this.mapStore.Layers.FieldDistributionLegendNutrientChange.emit($event.selectionKeys[0]);\n break;\n case LEGEND_IDS.TRACK:\n if (this.mapStore.Layers.TrackLayer) {\n this.mapStore.Layers.TrackLayer.layer.setStyle(f => {\n const props = f.getProperties();\n if (props?.data && typeof props?.data === typeof '') {\n const d = JSON.parse(props.data);\n if (!StringFactory.IsNullOrEmpty(d?.data?.markerType)) {\n return new OlStyle({\n image: new OlIcon({\n anchor: [0.5, 73],\n anchorXUnits: IconAnchorUnits.FRACTION,\n anchorYUnits: IconAnchorUnits.PIXELS,\n src: d.data.markerType === 'startMarker' ? '/assets/img/start_drop.png' : '/assets/img/stop_drop.png',\n }),\n });\n }\n }\n return new OlStyle({\n stroke: new OlStyleStroke({\n color: this.getTrackColor(JSON.parse(props.data).data.data, $event, '#ffffff'),\n width: 2,\n }),\n });\n });\n }\n break;\n case LEGEND_IDS.NEED:\n this.mapStore.Layers.NeedLegendChange.emit($event);\n break;\n case LEGEND_IDS.NUTRIENT_PLANNING:\n this.mapStore.Layers.NutrientPlaningLegendChange.emit($event);\n break;\n }\n }\n\n private getTrackColor(data: any, e: ISelectionChangeEvent, defaultColor: string): string {\n if (!data.hasOwnProperty(this.translateDataKeys(e.selectionKeys[1]))) {\n return defaultColor;\n }\n const value = parseFloat(data[this.translateDataKeys(e.selectionKeys[1])]);\n if (isNaN(value)) {\n return defaultColor;\n }\n let breaks;\n if (typeof (e.legend.values) === 'function') {\n breaks = e.legend.values(...e.selectionKeys);\n } else {\n breaks = e.legend.values[e.selectionKeys.Join('_')];\n }\n for (const br of breaks) {\n const legendValue = parseFloat(br.title);\n if (isNaN(legendValue)) {\n continue;\n }\n if (value <= legendValue) {\n return br.color;\n }\n }\n return breaks[breaks.length - 1].color;\n }\n\n private translateDataKeys(key: string): string {\n switch (key) {\n case 'Speed':\n return 'speed';\n case 'Tank':\n return 'Fuel-Total-Used';\n case 'WorkState':\n return 'Work-State';\n case 'Fuel Rate':\n return 'Fuel-Rate';\n case 'Engine Speed':\n return 'Engine-Speed';\n case 'ApplicationRate':\n return 'Engine-Actual-Percent-Torque';\n default:\n return key;\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {IStateStore} from '../../ap-interface/interfaces/store';\nimport {ApTreeViewItem} from '../../ap-interface/interfaces/layout/ap-tree-view-item';\nimport {CheckableSettings, SelectableSettings} from '@progress/kendo-angular-treeview';\nimport {MapStore} from './map.store';\nimport {EventHandler} from 'ts-tooling';\nimport {ILayerControlLayer} from '../../ap-interface/map/layer-control-layer.interface';\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IMapTreeViewStore extends IStateStore {\n checkSettings: CheckableSettings;\n selectSettings: SelectableSettings;\n}\n\n@Injectable({providedIn: 'root'})\nexport class MapTreeViewStore extends Store {\n constructor(public backend: ApSignalrService,\n private mapStore: MapStore) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n checkSettings: {},\n selectSettings: {},\n });\n }\n\n setup(data: ApTreeViewItem[]): void {\n this.cleanup();\n super.Mutate(s => s.data, () => data);\n }\n\n cleanup(): void {\n super.Mutate(s => s.data, () => []);\n }\n\n getLayers(): ApTreeViewItem {\n return {\n text: 'Layer',\n items: [\n this._getLayerTreeViewItem('FieldsLayer', this.mapStore.Layers.FieldsLayer),\n this._getLayerTreeViewItem('LocationsLayer', this.mapStore.Layers.LocationsLayer),\n this._getLayerTreeViewItem('TrackLayer', this.mapStore.Layers.TrackLayer),\n this._getLayerTreeViewItem('SoilSampleLayer', this.mapStore.Layers.SoilSampleLayer),\n this._getLayerTreeViewItem('FieldDistributionLayer', this.mapStore.Layers.DistributionLayer),\n this._getLayerTreeViewItem('FungiDetectLayer', this.mapStore.Layers.FungiDetectLayer),\n this._getLayerTreeViewItem('ContactLayer', this.mapStore.Layers.ContactLayer),\n this._getLayerTreeViewItem('PolygonEditLayer', this.mapStore.Layers.PolygonEditLayer),\n this._getLayerTreeViewItem('TaskManagementLayer', this.mapStore.Layers.TaskManagementLayer),\n ]\n };\n }\n\n private _getLayerTreeViewItem(text: string, layer: ILayerControlLayer): ApTreeViewItem {\n const result = {\n text,\n value: (() => layer.Visibility),\n onChange: new EventHandler(),\n };\n result.onChange.Subscribe(text, (b) => layer.Visibility = b);\n return result;\n }\n}\n","import {\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges\n} from '@angular/core';\nimport {ApTreeViewItem} from '../../ap-interface/interfaces/layout/ap-tree-view-item';\nimport {\n TreeItemLookup,\n TreeViewComponent\n} from '@progress/kendo-angular-treeview';\nimport {\n Observable,\n of,\n Subscription\n} from 'rxjs';\n\n@Directive({\n selector: '[mapTreeView]'\n})\nexport class MapTreeViewDirective implements OnInit, OnChanges, OnDestroy {\n @Input()\n items: ApTreeViewItem[] = [];\n\n private _subscriptions: Subscription[] = [];\n\n constructor(private kendoTreeView: TreeViewComponent) {\n }\n\n ngOnInit(): void {\n this.kendoTreeView.textField = 'text';\n this.kendoTreeView.children = (dataItem: any): Observable => of(dataItem.items);\n this.kendoTreeView.hasChildren = (dataItem: any): boolean => !!dataItem.items;\n this.kendoTreeView.isChecked = (dataItem: any) => dataItem.value && dataItem.value() ? 'checked' : 'none';\n this._subscriptions.push(this.kendoTreeView.checkedChange.subscribe((e: TreeItemLookup) => {\n const item: ApTreeViewItem = e.item.dataItem;\n if (item.onChange && item.value) {\n item.onChange.Invoke(!item.value());\n }\n }));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items']) {\n this.kendoTreeView.nodes = this.items;\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n}\n","import {Component, OnInit} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ApTreeViewItem} from '../../ap-interface/interfaces/layout/ap-tree-view-item';\nimport {MapTreeViewStore} from '../../stores/map/map.treeview.store';\nimport 'ts-tooling';\n\n@Component({\n selector: 'ap-map-tree-view',\n templateUrl: './ap-map-tree-view.component.html',\n})\nexport class ApMapTreeViewComponent implements OnInit {\n\n nodes$: Observable;\n\n constructor(private store: MapTreeViewStore) {\n }\n\n ngOnInit(): void {\n this.nodes$ = this.store.Listen(s => s.data);\n }\n}\n","\n\n","
\n \n \n \n \n \n \n \n \n \n \n
\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef, HostListener,\n NgZone,\n OnDestroy,\n ViewChild\n} from '@angular/core';\nimport {combineLatest, Observable, sample, Subscription} from 'rxjs';\nimport {concat} from 'lodash';\nimport {ApMapInstance} from '../../ap-map';\nimport {ApMachinePopupComponent} from './ap-machine-popup.component';\nimport {ApSensorPointPopupComponent} from './ap-sensor-point-popup/ap-sensor-point-popup.component';\nimport {SensorPointLegendComponent} from './sensor-point-legend/sensor-point-legend.component';\nimport {ApMapColorLegendComponent} from './ap-map-color-legend.component';\nimport {DrawerItem} from '@progress/kendo-angular-layout';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {ActionStore} from '../../stores/docu/action.store';\nimport {RouterStore} from '../../stores/router/router.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {ApMapContextMenuComponent} from './ap-map-context-menu.component';\nimport {MapViewStore} from '../../stores/layout/mapview.store';\nimport {delay, distinctUntilChanged} from 'rxjs/operators';\nimport {MapViewMode} from '../../ap-interface';\nimport {ApMapTooltipComponent} from './ap-map-tooltip.component';\n\n/**\n * holds the Openlayers Map Instance\n */\n@Component({\n selector: 'ap-map',\n templateUrl: 'ap-map.component.html',\n styleUrls: ['ap-map.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class ApMapComponent implements OnDestroy, AfterContentInit {\n @ViewChild('apMap', {static: true})\n map: ElementRef;\n @ViewChild(ApMachinePopupComponent, {static: true})\n machinePopup: ApMachinePopupComponent;\n @ViewChild(ApSensorPointPopupComponent, {static: true})\n sensorPointPopup: ApSensorPointPopupComponent;\n @ViewChild(SensorPointLegendComponent, {static: true})\n sensorPointLegend: SensorPointLegendComponent;\n @ViewChild(ApMapColorLegendComponent, {static: true})\n colorLegend: ApMapColorLegendComponent;\n @ViewChild(ApMapContextMenuComponent, {static: true})\n contextmenu: ApMapContextMenuComponent;\n @ViewChild(ApMapTooltipComponent, {static: true})\n tooltip: ApMapTooltipComponent;\n deleteButtonVisible$: Observable;\n public expanded = false;\n public items: DrawerItem[] = [\n {text: 'Inbox', icon: 'k-i-inbox'},\n {text: 'Notifications', icon: 'k-i-bell'},\n {text: 'Favourites', icon: 'k-i-star-outline'},\n {text: 'Date', icon: 'k-i-calendar'}\n ];\n private _subscriptions: Subscription[] = [];\n\n constructor(private mapStore: MapStore,\n private mapViewStore: MapViewStore,\n private fieldStore: FieldStore,\n private actionStore: ActionStore,\n private routerStore: RouterStore,\n private ngZone: NgZone) {\n }\n /**\n * Triggers hiding the tooltip.\n */\n @HostListener('mouseleave')\n onMouseLeave(): void {\n ApMapInstance?.hideTooltip();\n }\n\n public switchExpanded(): void {\n this.expanded = !this.expanded;\n }\n\n ngAfterContentInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.deleteButtonVisible$ = this.mapStore.Editor.DeleteButtonVisible$;\n ApMapInstance.register(this.map.nativeElement);\n this._subscriptions = concat(this._subscriptions, [\n combineLatest([\n this.fieldStore.SelectedFields$,\n this.mapViewStore.getMapViewMode$().pipe(\n distinctUntilChanged((previous, current) =>\n previous !== MapViewMode.MAXIMIZE || current === MapViewMode.MAXIMIZE),\n sample(this.mapStore.mapInitialized.pipe(delay(500)))\n )\n ]).subscribe(([field]) => ApMapInstance.selectField(field)),\n this.actionStore.Listen(s => s.selectedLocations)\n .subscribe((location) => ApMapInstance.selectLocation(location)),\n ]);\n\n ApMapInstance.registerMachinePopup(this.machinePopup);\n ApMapInstance.registerSensorPointPopup(this.sensorPointPopup);\n ApMapInstance.registerSensorLegend(this.sensorPointLegend);\n ApMapInstance.registerContextMenu(this.contextmenu);\n ApMapInstance.registerTooltip(this.tooltip);\n setTimeout(() => ApMapInstance.registerMapHTMLElement(this.map.nativeElement));\n });\n }\n\n ngOnDestroy(): void {\n ApMapInstance.clear();\n for (const s of this._subscriptions) {\n s.unsubscribe();\n }\n }\n\n clearSensorPoints(): void {\n this.mapStore.Layers.FungiDetectLayer.clear();\n this.mapStore.Editor.HideDeleteButton();\n if (ApMapInstance.sensorPointPopup) {\n ApMapInstance.sensorPointPopup.hide();\n ApMapInstance.sensorPointPopup.clear();\n }\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import {Component, Input} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport ISettings = Data.BaseData.ISettings;\nimport {SettingsStore} from '../../../stores/base-data/settings.store';\nimport {BoxPlotChartDataItem} from '../../../ap-interface';\nimport {IChartSet} from '../../../stores/statistic/statistic.store';\n\n@Component({\n selector: 'ap-box-plot-chart',\n templateUrl: 'ap-box-plot-chart.component.html',\n styleUrls: ['ap-box-plot-chart.component.scss']\n})\n\n/**\n * Box-Plot chart component (example in Fields=> Sat)\n */\nexport class ApBoxPlotChartComponent {\n @Input()\n data: IChartSet[];\n @Input()\n title = '';\n\n public settings$: Observable;\n\n constructor(private settingsStore: SettingsStore) {\n this.settings$ = this.settingsStore.FirstSetting$;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'apBarLineAreaChart'\n})\nexport class ApBarLineAreaChartPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n const statstic = {};\n for (const sd of value) {\n if (!statstic[sd.category]) {\n statstic[sd.category] = [];\n }\n statstic[sd.category].push(sd);\n }\n return statstic;\n }\n\n}\n","
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
\n
\n {{'Global__NoData' | translate}}\n
\n
\n
\n
\n","import {AfterContentInit, Component, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {IBarLineAreaChartData} from '../../../ap-interface';\nimport {GetRoundNumericPipe} from '../../../ap-utils';\nimport {SettingsStore} from '../../../stores/base-data/settings.store';\nimport {StatisticStore} from '../../../stores/statistic/statistic.store';\nimport {TranslationStore} from '../../../stores/translation/translation.store';\nimport ISettings = Data.BaseData.ISettings;\nimport {SeriesType} from '@progress/kendo-angular-charts';\n\n@Component({\n selector: 'ap-bar-line-area-chart',\n templateUrl: 'ap-bar-line-area-chart.component.html',\n styleUrls: ['ap-bar-line-area-chart.component.scss']\n})\nexport class ApBarLineAreaChartComponent implements OnDestroy, AfterContentInit {\n @Input()\n data: IBarLineAreaChartData[];\n @Input()\n title: string;\n @Output()\n dataChange = new EventEmitter();\n private subscriptions: Array = [];\n public types = ['bar', 'line', 'area', 'waterfall'];\n public strokeColor = '#212529';\n public inactiveColor = 'rgba(33, 37, 41, 0.4)';\n public typesFilter = this.types;\n public type: SeriesType = 'bar';\n public settings: ISettings;\n\n public categories: [] = [];\n\n public statstic: { [key: string]: IBarLineAreaChartData[] } = {};\n\n constructor(private settingsStore: SettingsStore,\n private roundNumericPipe: GetRoundNumericPipe,\n private translationStore: TranslationStore,\n private statisticStore: StatisticStore) {\n this.subscriptions.Add(this.settingsStore.FirstSetting$.subscribe(s => this.settings = s));\n }\n\n getStatisticKeys(): string[] {\n return Object.keys(this.statstic || {});\n }\n\n /**\n * when the component is loaded\n */\n ngAfterContentInit(): void {\n this.subscriptions.Add(this.statisticStore.Data$.subscribe(statisticData => {\n if (statisticData == null) {\n this.statstic = {};\n return;\n }\n this.statstic = {};\n for (const sd of statisticData) {\n if (!sd.chartData) {\n console.warn(`sd.data is missing: `, sd);\n continue;\n }\n if (!Object.keys(this.categories).Contains(sd.chartData.categories)) {\n this.categories = sd.chartData.categories;\n }\n if (!this.statstic[sd.chartData.category]) {\n this.statstic[sd.chartData.category] = [];\n }\n this.statstic[sd.chartData.category].Add(sd.chartData );\n }\n }));\n\n }\n\n /**\n * cleanup subscriptions\n */\n ngOnDestroy(): void {\n for (const sub of this.subscriptions) {\n sub.unsubscribe();\n }\n }\n\n /**\n * on column dropdown value changed\n */\n selectedValueChanged($event): void {\n this.type = $event;\n }\n\n filterChange($event: string): void {\n this.typesFilter = this.types.FindAll((f: string) => f.toLowerCase().indexOf($event.toLowerCase()) !== -1);\n }\n\n public labelContent(e: any): string {\n if (e == null) {\n return '';\n }\n if (e.value === undefined) {\n return '';\n }\n const category = e.series.name;\n const value = this.roundNumericPipe.transform(e.value, this.settings.DigitsAfterDecimalPoint);\n const unit = this.translationStore.FindTranslationForSelectedLanguage('Base__UnitHa');\n return `${category}: ${value} ` + unit;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'apDonutPieChart'\n})\nexport class ApDonutPieChartPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n const statstic = {};\n for (const sd of value) {\n if (!statstic[sd.kind]) {\n statstic[sd.kind] = [];\n }\n statstic[sd.kind].push(sd);\n }\n return statstic;\n }\n\n}\n","
\n \n \n \n \n {{'Nutrients__TotalArea' | translate}}\n

{{centerCount}} {{centerUnit}}

\n
\n \n \n \n \n \n \n \n \n \n
\n
\n {{'Global__NoData' | translate}}\n
\n
\n
\n
\n","import {AfterContentInit, ChangeDetectionStrategy, Component, Input, OnDestroy, ViewChild} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {IDonutPieChartData} from '../../../ap-interface';\nimport {\n ChartComponent\n} from '@progress/kendo-angular-charts';\nimport {\n SettingsStore\n} from '../../../stores/base-data/settings.store';\nimport {\n StatisticStore\n} from '../../../stores/statistic/statistic.store';\nimport {\n TranslationStore\n} from '../../../stores/translation/translation.store';\nimport {\n GetRoundNumericService\n} from '../../../ap-utils/service/get-round-numeric.service';\nimport ISettings = Data.BaseData.ISettings;\n\n@Component({\n selector: 'ap-donut-pie-chart',\n templateUrl: 'ap-donut-pie-chart.component.html',\n styleUrls: ['ap-donut-pie-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class ApDonutPieChartComponent implements AfterContentInit, OnDestroy {\n @Input()\n data: IDonutPieChartData[];\n @Input()\n title: string;\n public types: Array<{ text: string, value: string }> = [];\n public type: any;\n public settings: ISettings;\n public centerUnit: string;\n public centerCount = 0;\n public strokeColor = '#212529';\n public inactiveColor = 'rgba(33, 37, 41, 0.4)';\n @ViewChild('chart', {static: false})\n private chart: ChartComponent;\n private _subscriptions: Array = [];\n\n constructor(private settingsStore: SettingsStore,\n private roundNumericService: GetRoundNumericService,\n private translationStore: TranslationStore,\n private statisticStore: StatisticStore) {\n this._subscriptions.push(this.settingsStore.FirstSetting$.subscribe(s => this.settings = s));\n this._subscriptions.push(this.statisticStore.Listen(s => s.data).subscribe(d => this.createChart(d)));\n this.types.push({\n value: 'donut',\n text: this.translationStore.FindTranslationForSelectedLanguage('Global_Charttype_Pie')\n }, {\n value: 'pie',\n text: this.translationStore.FindTranslationForSelectedLanguage('Global_Charttype_Donut')\n });\n this.type = this.types[0].value;\n }\n\n ngAfterContentInit(): void {\n\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n\n selectedValueChanged(value): void {\n if (this.type !== value) {\n this.type = value;\n }\n }\n\n public labelContent(e: any): string {\n const category = e.category;\n const value = this.roundNumericService.round(e.value, this.settings.DigitsAfterDecimalPoint);\n const unit = this.translationStore.FindTranslationForSelectedLanguage('Base__UnitHa');\n return `${category}: \\n ${value} ` + unit;\n }\n\n private createChart(d): void {\n if (!d) {\n return;\n }\n this.centerUnit = this.translationStore.FindTranslationForSelectedLanguage('Base__UnitHa');\n let values = 0;\n for (const item of d) {\n values += item.value;\n }\n this.centerCount = this.roundNumericService.roundAsNumber(values, this.settings.DigitsAfterDecimalPoint);\n }\n}\n"," 1\"\n [data]=\"selection$ | async\"\n [textField]=\"'text'\"\n [valueField]=\"'value'\"\n [allowCustom]=\"false\"\n [clearButton]=\"false\"\n [value]=\"selected$ | async\"\n (valueChange)=\"selectedChange.emit($event)\">\n 1 ? {'height': 'calc(100% - 30px)'} : {}\">\n \n {{'Nutrients__TotalArea' | translate}}\n

{{getCenterCount(data)}} {{centerUnit}}

\n
\n \n \n \n \n \n {{ category }}:
{{ value | getRoundNumeric:(settings$ | async).DigitsAfterDecimalPoint }} {{centerUnit}} ({{value / getCenterCount(data) * 100 | getRoundNumeric:(settings$ | async).DigitsAfterDecimalPoint}}%)\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {ChartComponent, LegendTitle} from '@progress/kendo-angular-charts';\nimport {\n IMainSecondCropChartData\n} from '../../../ap-interface/interfaces/charts/ap-main-second-crop-chart-data.interface';\nimport {SettingsStore} from '../../../stores/base-data/settings.store';\nimport {StatisticStore} from '../../../stores/statistic/statistic.store';\nimport {TranslationStore} from '../../../stores/translation/translation.store';\nimport {GetRoundNumericService} from '../../../ap-utils/service/get-round-numeric.service';\n\n@Component({\n selector: 'ap-main-second-crop-chart',\n templateUrl: 'ap-main-second-crop-chart.component.html',\n styleUrls: ['ap-main-second-crop-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class ApMainSecondCropChartComponent implements AfterContentInit, OnDestroy {\n @Input()\n data: IMainSecondCropChartData[];\n @Input()\n title: string;\n @Input()\n selection$: Observable<{ text: string, value: number }[]>;\n @Input()\n selected$: Observable<{ text: string, value: number }>;\n @Output()\n selectedChange = new EventEmitter<{ text: string, value: number }>();\n public settings$ = this.settingsStore.FirstSetting$;\n public centerUnit: string;\n public strokeColor = '#212529';\n public inactiveColor = 'rgba(33, 37, 41, 0.4)';\n public legendTitle: LegendTitle = {\n text: this.translationStore.FindTranslationForSelectedLanguage('Global__Legend'),\n font: '18px Arial',\n };\n @ViewChild('chart', {static: false})\n private chart: ChartComponent;\n private _subscriptions: Array = [];\n\n constructor(private settingsStore: SettingsStore,\n private roundNumericService: GetRoundNumericService,\n private translationStore: TranslationStore,\n private statisticStore: StatisticStore) {\n this.centerUnit = this.translationStore.FindTranslationForSelectedLanguage('Base__UnitHa');\n }\n\n public ngAfterContentInit(): void {\n this._subscriptions.push(this.selectedChange.subscribe(\n (v) => this.statisticStore.selectFromSelection(v.value))\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach(d => d.unsubscribe());\n }\n\n public tooltipTextColor(data: any): string {\n return this._isWhiteColor(data.color) ? '#000000' : data.color;\n }\n\n public labelContent = (e: any) => {\n const value = this.roundNumericService.roundAsNumber(e.value, this.settingsStore.FirstSetting.DigitsAfterDecimalPoint);\n const unit = this.translationStore.FindTranslationForSelectedLanguage('Base__UnitHa');\n const percentPerValue = value / this.getCenterCount(this.data);\n const percent = this.roundNumericService.roundAsNumber(percentPerValue * 100, this.settingsStore.FirstSetting.DigitsAfterDecimalPoint);\n return `${e.category}: \\n ${value} ` + unit + ` (${percent}%)`;\n }\n\n public getCenterCount(d: any): number {\n if (!d) {\n return 0;\n }\n let values = 0;\n for (const item of d) {\n if (item.prio === 0) {\n for (const val of item.data) {\n values += val.value;\n }\n }\n }\n return this.roundNumericService.roundAsNumber(values, this.settingsStore.FirstSetting.DigitsAfterDecimalPoint);\n }\n\n private _isWhiteColor(color: string): boolean {\n return color === '#ffffff' || color === '#fff' || color === 'white';\n }\n}\n","\n \n \n {{ category }}: {{ value }}\n \n \n \n \n \n \n \n \n \n \n\n","import {AfterContentInit, Component, Input, OnDestroy} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {StatisticStore} from '../../../stores/statistic/statistic.store';\nimport {IDonutPieChartData} from '../../../ap-interface/interfaces';\n\n@Component({\n selector: 'ap-datetime-selection-chart',\n templateUrl: 'ap-datetime-selection-chart.component.html',\n styleUrls: ['ap-datetime-selection-chart.component.scss']\n})\nexport class ApDatetimeSelectionChartComponent implements OnDestroy, AfterContentInit {\n @Input()\n data: IDonutPieChartData[];\n @Input()\n title: string;\n\n private subscriptions: Array = [];\n\n public dataArray: number[] = [];\n categories: Date[] = [];\n\n public transitions = false;\n public strokeColor = '#212529';\n public inactiveColor = 'rgba(33, 37, 41, 0.4)';\n public navigatorStep: number;\n public step: number;\n public min = 0;\n public max = 20;\n\n constructor(private statisticStore: StatisticStore) {\n this.navigatorStep = Math.floor(this.categories.length / 10);\n }\n\n ngAfterContentInit(): void {\n this.subscriptions.push(this.statisticStore.Listen(s => s.data).subscribe(stats => {\n if (!stats) {\n return;\n }\n stats.forEach(stat => {\n this.categories.push(stat.chartData.date);\n this.dataArray.push(stat.chartData.count);\n });\n }));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(d => {\n d.unsubscribe();\n });\n }\n\n public onSelectEnd(args: any): void {\n this.min = args.from;\n this.max = args.to;\n this.transitions = false;\n this.step = Math.floor((this.max - this.min) / 10);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'dynamicChartHeight',\n})\nexport class DynamicChartHeightPipe implements PipeTransform {\n transform(value: number, ...args: [number, number]): any {\n return value * (args[0] || 65) + (args[1] || 82);\n }\n}\n","
\n \n
\n

{{emptyMessage | translate}}

\n
\n
\n 0\">\n
\n \n
\n \n \n \n \n\n \n \n \n \n {{value | getRoundNumeric:calculatedData[selectedBand?.id]?.decimalPlaces}}\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n
\n
\n","import {AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {ObjectFactory} from 'ts-tooling';\nimport {TranslationStore} from '../../../stores/translation/translation.store';\nimport {IChartSet} from '../../../stores/statistic/statistic.store';\nimport {GetSoilSampleClassColorService} from '../../../ap-utils/service/get-soil-sample-class-color.service';\nimport {\n IBarLineAreaChartData\n} from '../../../ap-interface';\n\n@Component({\n selector: 'ap-histogram',\n templateUrl: 'histogram.component.html',\n styleUrls: ['histogram.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HistogramComponent implements AfterContentInit, OnDestroy {\n @Input()\n data: IChartSet[];\n @Input()\n title: string;\n @Input()\n emptyMessage = '';\n @Input()\n decimalPlaces = 2;\n\n public calculatedData: { [key: string]: IChartSet } = {};\n public bands: { id: string, name: string }[] = [];\n public bandsFilter: { id: string, name: string }[] = [];\n public selectedBand: { id: string, name: string } = {id: '', name: ''};\n public strokeColor = '#212529';\n\n private subscriptions: Subscription[] = [];\n private activeFilter = '';\n\n constructor(private changeDetectionRef: ChangeDetectorRef,\n private classColorService: GetSoilSampleClassColorService,\n private translationStore: TranslationStore) {\n }\n\n ngAfterContentInit(): void {\n this.readData(this.data);\n }\n\n ngOnDestroy(): void {\n for (const sub of this.subscriptions) {\n sub.unsubscribe();\n }\n }\n\n filterChange(filter: any): void {\n this.activeFilter = filter;\n this.bandsFilter = this.bands.FindAll(e => this.translationStore\n .FindTranslationForSelectedLanguage(e.id).Contains(filter));\n }\n\n onSelectionChange(item: { id: string, name: string }): void {\n if (!item) {\n return;\n }\n this.selectedBand = item;\n }\n\n private readData(data: IChartSet[]): void {\n this.calculatedData = {};\n for (const d of ObjectFactory.Copy(data)) {\n if (!this.calculatedData[d.data.title]) {\n this.calculatedData[d.data.title] = {\n meta: null,\n step: d.step,\n valueType: d.valueType,\n axes: this.classColorService.getStatisticAxesConfig(d.valueType, d.axes.minX, d.axes.maxX),\n data: {\n data: d.data.data,\n categories: d.data.categories,\n title: this.translationStore.FindTranslationForSelectedLanguage(d.data.title),\n name: d.data.name,\n },\n decimalPlaces: d.decimalPlaces,\n color: d.color,\n visual: d.visual,\n };\n continue;\n }\n\n for (const cat of d.data.categories) {\n const idx = d.data.categories.IndexOf(cat);\n const count = d.data.data[idx];\n if (this.calculatedData[d.data.title].data.categories.Contains(cat)) {\n this.calculatedData[d.data.title].data.data[idx].value += count.value;\n continue;\n }\n this.calculatedData[d.data.title].data.categories.Add(cat);\n this.calculatedData[d.data.title].data.data.Add(count);\n }\n }\n\n this.bands = Object.keys(this.calculatedData).Convert(e => ({\n id: e,\n name: this.translationStore.FindTranslationForSelectedLanguage(e),\n }));\n if (this.activeFilter) {\n this.filterChange(this.activeFilter);\n } else {\n this.bandsFilter = this.bands;\n }\n if (!this.selectedBand.id) {\n this.selectedBand = this.bands[0] || {id: '', name: ''};\n }\n this.changeDetectionRef.detectChanges();\n }\n}\n","
\n \n
\n

{{emptyMessage | translate}}

\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\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\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\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\n\n\n\n\n\n\n\n\n
\n
\n \n

{{summaryString}}

\n
\n
\n
\n","import {AfterContentInit, Component, Input, OnDestroy} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {IChartSet} from '../../../stores/statistic/statistic.store';\nimport {Border} from '@progress/kendo-angular-charts';\nimport {map} from 'rxjs/operators';\nimport {TranslationStore} from '../../../stores/translation/translation.store';\nimport {StatisticChartAreaService} from '../../services/statistic-chart-area.service';\nimport {FieldStore} from '../../../stores/farm/field.store';\nimport {ObjectFactory} from 'ts-tooling';\nimport {GetElementService} from '../../../ap-utils/service/ap-get-element.service';\nimport {ApElementType} from '../../../ap-interface/enums/ap-elements-type.enum';\nimport {IBarLineAreaChartData} from '../../../ap-interface';\n\n@Component({\n selector: 'ap-planning-stats',\n templateUrl: 'planning.stats.component.html',\n styleUrls: ['planning.stats.component.scss']\n})\nexport class PlanningStatsComponent implements AfterContentInit, OnDestroy {\n @Input()\n data: IChartSet[];\n @Input()\n title: string;\n @Input()\n decimalPlaces = 2;\n @Input()\n public emptyMessage = 'Global__Please_Select_Planning';\n public chartP: IChartSet = null;\n public chartK: IChartSet = null;\n public chartMg: IChartSet = null;\n public chartPh: IChartSet = null;\n public strokeColor = '#212529';\n public border: Border = {\n color: this.strokeColor,\n dashType: 'solid',\n width: 1,\n };\n public summaryString = '';\n // scale the chart height and takes the minimum height of 120px\n public chartHeight = this.statisticChartAreaService.chartAreaHeight.pipe(\n map(v => v - 105 < 120 ? 120 : v - 105),\n );\n public chartHeightNoTitle = this.statisticChartAreaService.chartAreaHeight.pipe(\n map(v => v - 50 < 120 ? 120 : v - 50),\n );\n public chartHeightNoTitleHalf = this.statisticChartAreaService.chartAreaHeight.pipe(\n map(v => (v - 50) / 2 < 120 ? 120 : (v - 50) / 2),\n );\n public chartHeight4X4 = this.statisticChartAreaService.chartAreaHeight.pipe(\n map(v => (v / 2) - 52.5 < 120 ? 120 : (v / 2) - 52.5),\n );\n // scale the chart width and use the full width available\n public chartWidth = this.statisticChartAreaService.chartAreaWidth.pipe(\n map(v => v),\n );\n public chartWidthHalf = this.statisticChartAreaService.chartAreaWidth.pipe(\n map(v => v / 2),\n );\n private subscriptions: Subscription[] = [];\n private activeFilter = '';\n\n public titlePP2O5: string;\n public titleKK2O: string;\n public titleMgMgO: string;\n public titleCaO: string;\n\n constructor(private translationStore: TranslationStore,\n public statisticChartAreaService: StatisticChartAreaService,\n private fieldStore: FieldStore,\n private elementService: GetElementService) {\n }\n\n ngAfterContentInit(): void {\n this.readData(this.data);\n this.titlePP2O5 = this.elementService.GetElementStringByString(ApElementType.P);\n this.titleKK2O = this.elementService.GetElementStringByString(ApElementType.K);\n this.titleMgMgO = this.elementService.GetElementStringByString(ApElementType.Mg);\n this.titleCaO = this.elementService.GetElementStringByString(ApElementType.CaO);\n }\n\n ngOnDestroy(): void {\n for (const s of this.subscriptions) {\n s.unsubscribe();\n }\n }\n\n filterChange(filter: any): void {\n this.activeFilter = filter;\n }\n\n private readData(d: IChartSet[]): void {\n if (!d.Any()) {\n this.summaryString = '';\n return;\n }\n const dc = ObjectFactory.Copy(d);\n this.chartP = this.processClassData(dc, 'p');\n this.chartK = this.processClassData(dc, 'k');\n this.chartMg = this.processClassData(dc, 'mg');\n this.chartPh = this.processClassData(dc, 'ph');\n this.createDescription(dc);\n }\n\n private createDescription(d: IChartSet[]): any {\n const chartSet = d.FirstOrDefault();\n const averageSymbol = this.translationStore.FindTranslationForSelectedLanguage('Global__Avg_Symbol');\n const minString = this.translationStore.FindTranslationForSelectedLanguage('Global__Min_Short');\n const maxString = this.translationStore.FindTranslationForSelectedLanguage('Global__Max_Short');\n const sumString = this.translationStore.FindTranslationForSelectedLanguage('Global__Sum');\n const productString = this.translationStore.FindTranslationForSelectedLanguage('Global__Product');\n if (chartSet.meta) {\n if (chartSet.meta?.min !== '-' && chartSet.meta?.max !== '-') {\n this.summaryString = `${productString}: ${chartSet.meta?.product} ${averageSymbol}${chartSet.meta?.average} ${minString}: ${chartSet.meta?.min} ${maxString}: ${chartSet.meta?.max} ${sumString}: ${chartSet.meta?.sum}`;\n } else {\n this.summaryString = `${productString}: ${chartSet.meta?.product} ${averageSymbol}${chartSet.meta?.average} ${sumString}: ${chartSet.meta?.sum}`;\n }\n } else {\n this.summaryString = '';\n }\n }\n\n private processClassData(d: IChartSet[], title: string): IChartSet {\n let result: IChartSet = null;\n for (const dataset of d.FindAll(e => e.data?.title === title)) {\n if (!result) {\n result = dataset;\n continue;\n }\n if (result.axes.maxX < dataset.axes.maxX) {\n result.axes.maxX = dataset.axes.maxX;\n }\n for (let i = 0, l = result.data?.data?.length; i < l; i++) {\n result.data.data[i].value += dataset.data.data[i] ? dataset.data.data[i].value || 0 : 0;\n }\n }\n return result;\n }\n}\n","\n
\n

{{emptyMessage | translate}}

\n
\n
\n\n 0\">\n

{{ title | translate }}

\n \n \n \n \n\n \n \n \n \n {{getTooltip(dataItem, chartSeries.chartSet)}}\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n","import {AfterContentInit, Component, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {IChartSet} from '../../../stores/statistic/statistic.store';\nimport {geometry} from '@progress/kendo-drawing';\nimport {SeriesVisualArgs} from '@progress/kendo-angular-charts';\nimport {IBarLineAreaChartData, IBarLineAreaChartDataValue} from '../../../ap-interface';\n\nexport interface ChartSeriesData {\n chartSet: IChartSet;\n seriesValues: Array>;\n}\n\nconst GENERIC_BAR_SIZE = 25;\n\n@Component({\n selector: 'ap-generic-bar-chart',\n templateUrl: 'ap-generic-bar-chart.component.html',\n styleUrls: ['ap-generic-bar-chart.component.scss']\n})\nexport class ApGenericBarChartComponent implements AfterContentInit, OnChanges {\n @Input() data: IChartSet[];\n @Input() title = '';\n @Input() emptyMessage = '';\n @Input() zoomable = true;\n @Input() transitions = true;\n @Input() pannable = true;\n\n public strokeColor = '#212529';\n public backgroundColor = '#ffffffbf';\n public chartSeriesData: Array = [];\n\n public ngAfterContentInit(): void {\n this.generateData();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const inputData = changes['data'];\n if (!!inputData && !inputData.firstChange) {\n this.generateData();\n }\n }\n\n /**\n * Re-organize chart data: for one-bar diagrams each category is supposed to have one value.\n * If the series contain multiple values for one category a second, third,... bar is created.\n * @param chartSet the charset of a single diagram\n */\n public getSeriesValues(chartSet: IChartSet): Array> {\n const seriesValues = new Array>(0);\n seriesValues[0] = [];\n\n if (!chartSet || !chartSet.data || !chartSet.data.data) {\n return seriesValues;\n }\n\n for (const dataValue of chartSet.data.data) {\n let dataAdded = false;\n const categoryIdx = chartSet?.data?.categories?.indexOf(dataValue.category);\n if (categoryIdx < 0) {\n continue;\n }\n for (const seriesValue of seriesValues) {\n if (!seriesValue.find(_ => _?.category === dataValue.category)) {\n seriesValue[categoryIdx] = dataValue;\n dataAdded = true;\n break;\n }\n }\n if (!dataAdded) {\n const seriesValue = new Array(chartSet.data.categories.length);\n seriesValue[categoryIdx] = dataValue;\n seriesValues.Add(seriesValue);\n }\n }\n return seriesValues;\n }\n\n /**\n * Defines some basic appearance parameters\n * @param e the series visual arguments\n */\n public visual(e: SeriesVisualArgs): any {\n // create the default visual\n const visual = e.createVisual();\n // scale it so that it has the predefined size\n visual.transform(geometry.transform().scale(GENERIC_BAR_SIZE / e.rect.size.width, 1, e.rect.center()));\n return visual;\n }\n\n /**\n * method to retrieve content of the tooltip (if defined)\n * @param dataItem the current bar dataItem\n * @param chartSet the current chart\n */\n public getTooltip(dataItem: any, chartSet: IChartSet): string {\n if (chartSet?.tooltipDelegate) {\n return chartSet?.tooltipDelegate(dataItem, chartSet);\n }\n return dataItem?.value ?? '';\n }\n\n /**\n * method to retrieve content of the note (if defined)\n * @param chartSet the current chart\n */\n public getNote(chartSet: IChartSet): (p1: any) => string {\n return (item: any) => {\n if (item && chartSet?.noteDelegate) {\n return chartSet.noteDelegate(item?.dataItem, chartSet);\n } else if (item && chartSet?.noteField !== '') {\n return item?.dataItem[chartSet?.noteField];\n }\n return '';\n };\n }\n\n /**\n * Generates chart series data from input data\n * Creates new array of ChartSeriesData containing chartSet and corresponding series values\n * @private\n */\n private generateData(): void {\n this.chartSeriesData = new Array();\n for (const chartSet of this.data) {\n this.chartSeriesData.Add({\n chartSet,\n seriesValues: this.getSeriesValues(chartSet)\n });\n }\n }\n}\n","\n
\n

{{ emptyMessage | translate }}

\n
\n
\n 0\">\n
\n

{{ title | translate }}

\n
\n

{{ 'Global__Demands' | translate }}*

\n
\n \n \n *{{ 'Global__Demands_Note' | translate }}\n
\n
\n
\n

{{ 'Global__Plannings' | translate }}

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

{{ 'Global__Bookings' | translate }}

\n
\n \n \n
\n
\n
\n
\n","import {AfterContentInit, Component, Input, OnDestroy} from '@angular/core';\nimport {Observable, of, Subscription} from 'rxjs';\nimport {\n SelectableSettings\n} from '@progress/kendo-angular-grid';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApTranslationService\n} from '../../../ap-utils/service/ap-translation.service';\nimport {\n CampaignYearStore\n} from '../../../stores/login/campaignyear.store';\nimport {\n GetElementService\n} from '../../../ap-utils/service/ap-get-element.service';\nimport {\n GetRoundNumericPipe\n} from '../../../ap-utils';\nimport {\n ApElementOxydTypeEnum\n} from '../../../ap-interface';\nimport {\n FertilizerStore\n} from '../../../stores/base-data/fertilizer.store';\nimport {\n SettingsStore\n} from '../../../stores/base-data/settings.store';\nimport {\n ApElementType\n} from 'src/app/ap-interface/enums/ap-elements-type.enum';\nimport {\n ApNutrientService\n} from '../../../ap-utils/service/ap-nutrient.service';\nimport {\n INutrientOverviewApplGridData,\n INutrientOverviewGridData,\n INutrientOverviewRemainGridData\n} from '../../../nutrient-management/types/base-fertilization-overview.types';\n\nexport interface INutrientOverviewStat1Data {\n Element: string;\n CropRotationNeed: number;\n BookingsSum: number;\n Remain1: number;\n Remain2: number;\n PlanningsSum: number;\n}\n\nexport interface INutrientOverviewStat2Data {\n RowHeaderText: string;\n ProductId: number;\n SubId?: number;\n AmountByYear: { [key: number]: number };\n}\n\n@Component({\n selector: 'ap-base-fert-overview-stats',\n templateUrl: 'ap-base-fert-overview-stats.component.html',\n styleUrls: ['ap-base-fert-overview-stats.component.scss']\n})\nexport class ApBaseFertOverviewStatsComponent implements AfterContentInit, OnDestroy {\n @Input()\n public data: INutrientOverviewGridData[];\n @Input()\n public title: string;\n @Input()\n public emptyMessage = '';\n public gridSelectableSettings: SelectableSettings = {\n enabled: false,\n checkboxOnly: false,\n mode: 'single',\n cell: false,\n drag: false\n };\n\n public stat1columns = [];\n public stat2columns = [];\n public stat3columns = [];\n public itemsStat1$: Observable;\n public itemsStat2$: Observable;\n public itemsStat3$: Observable;\n private subscriptions: Subscription[] = [];\n private elements: ApElementType[] = [ApElementType.P, ApElementType.K, ApElementType.Mg, ApElementType.CaO];\n private yearsBooking: { [key: number]: { From: Date, To: Date } } = {};\n private yearsPlanning: { [key: number]: { From: Date, To: Date } } = {};\n private rowHeaderColor = 'silver';\n\n constructor(private translationService: ApTranslationService,\n private campaignYearStore: CampaignYearStore,\n private elementService: GetElementService,\n private roundNumericPipe: GetRoundNumericPipe,\n private fertilizerStore: FertilizerStore,\n private nutrientService: ApNutrientService,\n private settingsStore: SettingsStore) {\n\n this.subscriptions.push(this.campaignYearStore.Listen(s => s.selectedYear).subscribe(selectedYear => {\n const numberOfYears = 6;\n this.yearsPlanning = {};\n this.yearsBooking = {};\n for (let i = 0; i < numberOfYears; i++) {\n const yearPlanning = selectedYear.Year - 1 + i;\n const fromPlanning = new Date(yearPlanning - 1, 7, 1); // starts 01.08. 00:00\n const toPlanning = new Date(yearPlanning, 6, 31, 23, 59, 59); // ends 31.07. 23:59\n this.yearsPlanning[yearPlanning] = {From: fromPlanning, To: toPlanning}; // .push(currentYear + i);\n\n const yearBooking = selectedYear.Year - numberOfYears + 1 + i;\n const fromBooking = new Date(yearBooking - 1, 7, 1); // starts 01.08. 00:00\n const toBooking = new Date(yearBooking, 6, 31, 23, 59, 59); // ends 31.07. 23:59\n this.yearsBooking[yearBooking] = {From: fromBooking, To: toBooking};\n }\n this.buildGrids();\n }));\n }\n\n private buildGrids(): void {\n this.stat1columns = [\n new ApDynGridPropertyColumnConfig(\n {\n title: '',\n field: 'Element',\n style: {'font-weight': 600, 'background-color': this.rowHeaderColor},\n cssClass: 'right',\n width: 100,\n filterable: false,\n sortable: false\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Global__Crop_Rotation_Need',\n field: 'CropRotationNeed',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [0]\n }\n ]\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: `${this.translationService.translate('Global__Sum')} ${this.translationService.translate('Global__Bookings')}`,\n field: 'BookingsSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [0]\n }\n ]\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Global__Remaining_Need_One_Short',\n field: 'Remain1',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [0]\n }\n ]\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: `${this.translationService.translate('Global__Sum')} ${this.translationService.translate('Global__Plannings')}`,\n field: 'PlanningsSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [0]\n }\n ]\n }),\n new ApDynGridPropertyColumnConfig(\n {\n title: 'Global__Remaining_Need_Two_Short',\n field: 'Remain2',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [0]\n }\n ]\n })];\n\n this.stat2columns = [\n new ApDynGridPropertyColumnConfig(\n {\n title: '',\n field: 'RowHeaderText',\n style: {'font-weight': 600, 'background-color': this.rowHeaderColor},\n cssClass: 'left',\n width: 150,\n filterable: false,\n sortable: false\n })];\n\n\n this.stat3columns = [\n new ApDynGridPropertyColumnConfig(\n {\n title: '',\n field: 'RowHeaderText',\n style: {'font-weight': 600, 'background-color': this.rowHeaderColor},\n cssClass: 'left',\n width: 150,\n filterable: false,\n sortable: false\n })];\n\n // Create dynamic year columns\n for (const year of Object.keys(this.yearsPlanning)) {\n this.stat2columns.push(new ApDynGridPropertyColumnConfig(\n {\n title: year.toString(),\n field: 'AmountByYear.' + year,\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 80,\n filterable: false,\n sortable: false,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [0]\n }\n ]\n }));\n }\n\n for (const year of Object.keys(this.yearsBooking)) {\n this.stat3columns.push(new ApDynGridPropertyColumnConfig(\n {\n title: year.toString(),\n field: 'AmountByYear.' + year,\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 80,\n filterable: false,\n sortable: false,\n pipes: [\n {\n pipe: this.roundNumericPipe,\n args: [0]\n }\n ]\n }));\n }\n }\n\n private getElementOxidType(element: ApElementType): ApElementOxydTypeEnum {\n switch (element) {\n case ApElementType.P:\n return ApElementOxydTypeEnum.P;\n case ApElementType.K:\n return ApElementOxydTypeEnum.K;\n case ApElementType.Mg:\n return ApElementOxydTypeEnum.Mg;\n default:\n return undefined;\n }\n }\n\n ngAfterContentInit(): void {\n if (!this.data) {\n return;\n }\n // this.subscriptions.push(this.data$.subscribe(data => {\n if (!this.data || this.data?.length === 0) {\n\n this.itemsStat1$ = of([]);\n this.itemsStat2$ = of([]);\n this.itemsStat3$ = of([]);\n }\n\n this.itemsStat1$ = of(this.elements.map(e => {\n // Nach Absprache mit Florian werden Einträge, die keinen Fruchtfolgebedarf haben\n // nicht in der Statistik beachtet. Auch rote Felder werden nun ausgeschlossen aus\n // der 1. Statistik (APV49-2393\n const dataWithCrNeed = this.data.FindAll(_ => !!_.CrNeeds && _.Status === 1);\n const cropRotationNeed = this.getCropRotationNeedSum(dataWithCrNeed, e);\n const remain1 = dataWithCrNeed.reduce((result, value) => {\n let rb = this.getRemainByElement(value.Remain1, e);\n if (!isNaN(parseFloat(value.Area?.toString()))) {\n rb = rb * value.Area;\n }\n return this.convertToTons(rb) + result;\n }, 0);\n const remain2 = dataWithCrNeed.reduce((result, value) => {\n let rb = this.getRemainByElement(value.Remain2, e);\n if (!isNaN(parseFloat(value.Area?.toString()))) {\n rb = rb * value.Area;\n }\n return this.convertToTons(rb) + result;\n }, 0);\n return {\n Element: `${this.translationService.translate(this.elementService.GetElementStringByString(e))} ${this.translationService.translate('Global__t_Unit')}`,\n CropRotationNeed: this.getValue(cropRotationNeed),\n BookingsSum: this.getValue(cropRotationNeed - remain1),\n Remain1: this.getValue(remain1),\n PlanningsSum: this.getValue(remain1 - remain2),\n Remain2: this.getValue(remain2)\n };\n }));\n\n\n this.itemsStat2$ = of([...this.elements.map(e => {\n return {\n RowHeaderText: `${this.translationService.translate(this.elementService.GetElementStringByString(e))} ${this.translationService.translate('Global__t_Unit')}`,\n ProductId: -1,\n AmountByYear: this.getAmountByYear(this.data, e, false)\n };\n }), ...this.getProductItems(this.data, false)]);\n\n this.itemsStat3$ = of([...this.elements.map(e => {\n return {\n RowHeaderText: `${this.translationService.translate(this.elementService.GetElementStringByString(e))} ${this.translationService.translate('Global__t_Unit')}`,\n ProductId: -1,\n AmountByYear: this.getAmountByYear(this.data, e, true)\n };\n }), ...this.getProductItems(this.data, true)]);\n }\n\n private getCropRotationNeedSum(data: INutrientOverviewGridData[], e: ApElementType): number {\n if (!data || data?.length <= 0) {\n return 0;\n }\n\n return this.elementService.CalculateElementOxidValueByGivenElementValue(data.reduce((result, d) => {\n let area = 1;\n if (!isNaN(parseFloat(d.Area?.toString()))) {\n area = d.Area;\n }\n switch (e) {\n case ApElementType.P:\n return this.convertToTons(d.CrNeeds.CropRotationNeedP * area) + result;\n case ApElementType.K:\n return this.convertToTons(d.CrNeeds.CropRotationNeedK * area) + result;\n case ApElementType.Mg:\n return this.convertToTons(d.CrNeeds.CropRotationNeedMg * area) + result;\n case ApElementType.CaO:\n return this.convertToTons(d.CrNeeds.CropRotationNeedCaO * area) + result;\n default:\n return result;\n }\n }, 0), this.getElementOxidType(e));\n }\n\n private getRemainByElement(data: INutrientOverviewRemainGridData, element: ApElementType): number {\n let remainValue: number;\n switch (element) {\n case ApElementType.P:\n remainValue = !isNaN(parseFloat(data?.P?.toString())) ? parseFloat(data?.P?.toString()) : 0;\n break;\n case ApElementType.K:\n remainValue = !isNaN(parseFloat(data?.K?.toString())) ? parseFloat(data?.K?.toString()) : 0;\n break;\n case ApElementType.Mg:\n remainValue = !isNaN(parseFloat(data?.Mg?.toString())) ? parseFloat(data?.Mg?.toString()) : 0;\n break;\n case ApElementType.CaO:\n remainValue = !isNaN(parseFloat(data?.CaO?.toString())) ? parseFloat(data?.CaO?.toString()) : 0;\n break;\n default:\n remainValue = 0;\n }\n return remainValue;\n }\n\n private convertToTons(valueInKg: number): number {\n if (!valueInKg || isNaN(parseFloat(valueInKg.toString()))) {\n return 0;\n }\n return valueInKg / 1000;\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private calculateBookingPlanningSum(data: INutrientOverviewGridData[], element: ApElementType, productId: number, isBooked: boolean, from: Date = null, to: Date = null, subId?: number): number {\n let sum = 0;\n const processedPlanBookIds: string[] = [];\n for (const d of data) {\n if (!d.Applications || d.Applications?.length <= 0) {\n continue;\n }\n\n let applications: INutrientOverviewApplGridData[] = [];\n if (from !== null && to !== null) {\n applications = d.Applications.FindAll(a => a.IsBooked === isBooked && a.OutputDate >= from && a.OutputDate < to);\n } else {\n applications = d.Applications.FindAll(a => a.IsBooked === isBooked);\n }\n\n if (productId === 0) {\n applications = applications.FindAll(a => a.ProductId === productId && this._getPureNutrientSubId(a) === subId);\n } else if (!isNaN(productId) && productId >= -1) {\n applications = applications.FindAll(a => a.ProductId === productId);\n }\n\n sum += applications.reduce((result, appl) => {\n if ( processedPlanBookIds.Any(a => a === appl?.Id?.toString())) {\n return result;\n }\n processedPlanBookIds.push(appl.Id?.toString());\n let goodsAmount: number;\n if (!isNaN(productId) && productId >= -1) {\n const value = this.getRemainByElement(appl.Remain2, appl.LeadNutrient);\n const nutrientAmount = this.elementService.CalculateToElementByGivenValue(value, appl.LeadNutrient,\n this.settingsStore.IsOxidFarm, this.settingsStore.IsOxidFarm);\n goodsAmount = this.nutrientService.convertNutrientToGoods(productId, appl.LeadNutrient, nutrientAmount);\n } else {\n goodsAmount = this.convertToTons(this.getRemainByElement(appl.Remain2, element));\n }\n if (!isNaN(parseFloat(appl.Area?.toString()))) {\n goodsAmount = goodsAmount * appl.Area;\n }\n return goodsAmount + result;\n }, 0);\n }\n\n return sum;\n }\n\n private getProductItems(data: INutrientOverviewGridData[], isBooked: boolean): INutrientOverviewStat2Data[] {\n const items: INutrientOverviewStat2Data[] = [];\n const years = isBooked ? this.yearsBooking : this.yearsPlanning;\n const firstYear = years[Math.min(...Object.keys(years).map(y => parseFloat(y)))];\n const lastYear = years[Math.max(...Object.keys(years).map(y => parseFloat(y)))];\n for (const d of data) {\n if (!d?.Applications || d.Applications?.length <= 0) {\n continue;\n }\n for (const application of d.Applications) {\n // list products only if they have plannings or bookings within the displayed period of years\n if (application.IsBooked !== isBooked ||\n application.OutputDate > lastYear.To || application.OutputDate < firstYear.From) {\n continue;\n }\n\n const productItem = this._findProductItem(items, application);\n // if product not in list, yet\n if (!productItem) {\n if (application.ProductId !== 0) {\n let productUnitKey = this.fertilizerStore.getFertilizer(application.ProductId)?.Unit?.Key;\n let convertKgToTons = false;\n if (productUnitKey === 'Global__Unit_kg') {\n productUnitKey = 'Global__Unit_t';\n convertKgToTons = true;\n }\n items.push({\n RowHeaderText: `${application.Product} [${this.translationService.translate(productUnitKey)}]`,\n ProductId: application.ProductId,\n AmountByYear: this.getProductByYear(data, application.ProductId, isBooked, convertKgToTons)\n });\n } else {\n const subId = this._getPureNutrientSubId(application);\n items.push({\n RowHeaderText: `${application.Product}-${this.elementService.GetElementStringById(subId)} [${this.translationService.translate('Global__Unit_t')}]`,\n ProductId: 0,\n SubId: subId,\n AmountByYear: this.getProductByYear(data, application.ProductId, isBooked, true, subId)\n });\n }\n }\n }\n }\n // return items plus placeholder row\n if (items.length > 0) {\n return [...[{RowHeaderText: undefined, AmountByYear: undefined, ProductId: undefined}], ...items];\n }\n return items;\n }\n\n private getAmountByYear(data: INutrientOverviewGridData[], element: ApElementType, isBooked: boolean): {\n [key: number]: number\n } {\n const amountByYear = {};\n const years = isBooked ? this.yearsBooking : this.yearsPlanning;\n for (const year of Object.keys(years)) {\n amountByYear[year] = this.getValue(this.calculateBookingPlanningSum(data, element, undefined, isBooked, years[year].From, years[year].To));\n }\n return amountByYear;\n }\n\n private getProductByYear(data: INutrientOverviewGridData[], productId: number, isBooked: boolean, convertKgToTons: boolean, subId?: number): {\n [key: number]: number\n } {\n const amountByYear = {};\n const years = isBooked ? this.yearsBooking : this.yearsPlanning;\n for (const year of Object.keys(years)) {\n amountByYear[year] = this.getValue(this.calculateBookingPlanningSum(data, undefined, productId, isBooked, years[year].From, years[year].To, subId), convertKgToTons);\n }\n return amountByYear;\n }\n\n private getValue(value: number, convertKgToTons?: boolean): number {\n if (!value || value === 0) {\n return undefined;\n }\n if (convertKgToTons) {\n return this.convertToTons(value);\n }\n return value;\n }\n\n private _findProductItem(items: INutrientOverviewStat2Data[], application: INutrientOverviewApplGridData): INutrientOverviewStat2Data {\n if (application.ProductId !== 0) {\n return items.Find(_ => _.ProductId === application.ProductId);\n } else {\n return items.Find(_ => _.SubId === this._getPureNutrientSubId(application));\n }\n }\n\n private _getPureNutrientSubId(application: INutrientOverviewApplGridData): number {\n if (typeof application.Remain2.P === 'number') {\n return 1;\n } else if (typeof application.Remain2.K === 'number') {\n return 2;\n } else if (typeof application.Remain2.Mg === 'number') {\n return 3;\n } else if (typeof application.Remain2.CaO === 'number') {\n return 4;\n } else if (typeof application.Remain2.N === 'number') {\n return 5;\n }\n return undefined;\n }\n}\n","\n
\n

{{ emptyMessage | translate }}

\n
\n
\n 0\">\n
\n
\n

{{ title | translate }}

\n
\n \n \n
\n
\n
\n
\n","import {AfterContentInit, Component, Input} from '@angular/core';\nimport {\n Observable,\n of\n} from 'rxjs';\nimport {\n SelectableSettings\n} from '@progress/kendo-angular-grid';\nimport {\n GetRoundNumericPipe\n} from '../../../../ap-utils';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n IPlanningWizardOverviewStatsItem,\n IPlanningWizardOverviewStatsTableData,\n PlanningWizardOverviewModuleStats\n} from './ap-planning-wizard-overview-stats-types';\nimport {\n ApDynGridColumnConfigBase\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n ApTranslationService\n} from '../../../../ap-utils/service/ap-translation.service';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {\n FertilizerStore\n} from '../../../../stores/base-data/fertilizer.store';\nimport {\n UnitService\n} from '../../../../services/data/unit.service';\n\n@Component({\n selector: 'ap-planning-wizard-overview-stats',\n templateUrl: 'ap-planning-wizard-overview-stats.component.html',\n styleUrls: ['ap-planning-wizard-overview-stats.scss']\n})\nexport class ApPlanningWizardOverviewStatsComponent implements AfterContentInit {\n @Input() public data: IPlanningWizardOverviewStatsItem[];\n @Input() public title: string;\n @Input() public emptyMessage = '';\n public gridSelectableSettings: SelectableSettings = {\n enabled: false,\n checkboxOnly: false,\n mode: 'single',\n cell: false,\n drag: false\n };\n\n public statColumns: ApDynGridColumnConfigBase[] = [];\n public itemsStat$: Observable;\n\n constructor(private fertilizerStore: FertilizerStore,\n private unitService: UnitService,\n private translationService: ApTranslationService,\n private roundNumericPipe: GetRoundNumericPipe) {\n }\n\n public ngAfterContentInit(): void {\n if (!this.data || this.data.length <= 0) {\n return;\n }\n this.statColumns = this._getSumValuesStatsColumns(this.data[0]?.ProductId);\n this.itemsStat$ = of(this._getTotalData());\n }\n\n private _getTotalData(): IPlanningWizardOverviewStatsTableData[] {\n return this.data.reduce((gridData, currentItem, currentIndex, array) => {\n if (!currentItem?.OperationModeKey) {\n return gridData;\n }\n const items = array.filter(x => x.OperationModeKey === currentItem.OperationModeKey);\n const translatedOperationMode = this.translationService.translate(currentItem.OperationModeKey);\n if (items && items.length > 0 && gridData.every(x => x.OperationModeName !== translatedOperationMode)) {\n gridData.push({\n OperationModeName: translatedOperationMode,\n FieldsSum: items.length,\n AreaSum: this._getAreaSum(items),\n ProductAmountSum: this._getProductAmount(items),\n ProductMin: this._getProductMin(items),\n ProductMax: this._getProductMax(items),\n ProductAverage: this._getProductAverage(items),\n Average: this._getStatisticAverage(items)\n });\n }\n if (gridData && gridData.length > 0 && currentIndex === array.length - 1) {\n const totalArea = gridData.reduce((total, item) => total + (item.AreaSum ?? 0), 0);\n gridData.push({\n OperationModeName: '',\n FieldsSum: gridData.reduce((total, item) => total + item.FieldsSum, 0),\n AreaSum: gridData.reduce((total, item) => total + item.AreaSum, 0),\n ProductAmountSum: gridData.reduce((total, item) => total + item.ProductAmountSum, 0),\n ProductMin: gridData.reduce((prev, curr) => prev.ProductMin < curr.ProductMin ? prev : curr).ProductMin,\n ProductMax: gridData.reduce((prev, curr) => prev.ProductMax > curr.ProductMax ? prev : curr).ProductMax,\n ProductAverage: gridData.reduce((total, item) => total + (item.ProductAverage * item.AreaSum), 0) / totalArea,\n Average: gridData.reduce((total, item) => total + (item.Average * item.AreaSum), 0) / totalArea\n });\n }\n return gridData;\n }, [] as IPlanningWizardOverviewStatsTableData[]);\n }\n\n private _getAreaSum(items: IPlanningWizardOverviewStatsItem[]): number {\n return items.reduce((total, item) => total + (item.Area ?? 0), 0);\n }\n\n private _getProductAmount(items: IPlanningWizardOverviewStatsItem[]): number {\n return items.reduce((total, curr) => {\n let productAmount = (curr.Average ?? 0) * (curr.Area ?? 0);\n if (curr.Module === PlanningWizardOverviewModuleStats.NFertilization) {\n productAmount = productAmount / (curr?.NContent ?? 0);\n }\n return Number.isFinite(productAmount) ? total + productAmount : total;\n }, 0);\n }\n\n private _getProductMin(items: IPlanningWizardOverviewStatsItem[]): number {\n const minItem = items.reduce((prev, curr) => prev.Min < curr.Min ? prev : curr);\n let productMin = (minItem?.Min ?? 0);\n if (minItem.Module === PlanningWizardOverviewModuleStats.NFertilization) {\n productMin = productMin / (minItem?.NContent ?? 0);\n }\n return Number.isFinite(productMin) ? productMin : 0;\n }\n\n private _getProductMax(items: IPlanningWizardOverviewStatsItem[]): number {\n const maxItem = items.reduce((prev, curr) => prev.Max > curr.Max ? prev : curr);\n let productMax = (maxItem?.Max ?? 0);\n if (maxItem.Module === PlanningWizardOverviewModuleStats.NFertilization) {\n productMax = productMax / (maxItem?.NContent ?? 0);\n }\n return Number.isFinite(productMax) ? productMax : 0;\n }\n\n private _getProductAverage(items: IPlanningWizardOverviewStatsItem[]): number {\n const firstItem = items[0];\n const totalArea = this._getAreaSum(items);\n const productAverage = items.reduce((total, curr) => {\n const average = (curr.Average ?? 0) * (curr.Area ?? 0);\n return Number.isFinite(average) ? total + average : total;\n }, 0);\n let result = productAverage / totalArea;\n if (firstItem.Module === PlanningWizardOverviewModuleStats.NFertilization) {\n result = result / (firstItem.NContent ?? 0);\n }\n return Number.isFinite(result) ? result : 0;\n }\n\n private _getStatisticAverage(items: IPlanningWizardOverviewStatsItem[]): number {\n const totalArea = this._getAreaSum(items);\n const product = items.reduce((total, curr) => {\n if (curr.Module === PlanningWizardOverviewModuleStats.BaseFertilization) {\n return total + ((curr.NContent ?? 0) * (curr.Area ?? 0));\n }\n const productAmount = (curr.Average ?? 0) * (curr.Area ?? 0);\n return total + productAmount;\n }, 0);\n const result = product / totalArea;\n return Number.isFinite(result) ? result : 0;\n }\n\n private _getSumValuesStatsColumns(productId?: number): ApDynGridColumnConfigBase[] {\n const fertilizer = this.fertilizerStore.getFertilizer(productId);\n const productTitle = fertilizer\n ? this.unitService.getUnitWithLabelKey(fertilizer?.Unit, 'Global__Product', false)\n : 'Task_Mgmt_Product_kgha';\n return [\n new ApDynGridPropertyColumnConfig({\n field: 'OperationModeName',\n headerStyle: {'text-align': 'left'},\n style: {'font-weight': 600, 'background-color': 'silver'},\n cssClass: 'left',\n width: 100,\n filterable: false,\n sortable: false\n }),\n new ApDynGridGroupColumnConfig({\n title: 'Global__Sum',\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: 'Base__Fields',\n field: 'FieldsSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 60,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Area',\n field: 'AreaSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 70,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: productTitle,\n field: 'ProductAmountSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n })\n ]\n }),\n new ApDynGridGroupColumnConfig({\n title: productTitle,\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Min',\n field: 'ProductMin',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Max',\n field: 'ProductMax',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: `Global__Avg_Symbol`,\n field: 'ProductAverage',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n })\n ]\n }),\n new ApDynGridPropertyColumnConfig({\n title: `Base_NSensor_NFieldView__Average`,\n field: 'Average',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n })\n ];\n }\n}\n","import IGuid = System.IGuid;\nimport IDatasetFieldMap = Data.Sensor.IDatasetFieldMap;\nimport IFieldNutrientPlanningStatistic = Data.Nutrients.IFieldNutrientPlanningStatistic;\n\nexport interface NFertilizationLogfileStatsData {\n Area: number;\n PlanBookId: IGuid;\n Logfiles: IDatasetFieldMap[];\n RasterStatistics: IFieldNutrientPlanningStatistic[];\n}\n\nexport type MinAndMaxForLegend = {\n Min: number;\n Max: number;\n};\n\nexport type ParticularStatisticItem = {\n Area: number;\n Statistic: IFieldNutrientPlanningStatistic;\n};\n\nexport type FieldStatisticsForFiltering = {\n Key: number;\n Value: number,\n ItemBehavior: HistogramItemBehavior\n};\n\nexport enum HistogramItemBehavior {\n Include = 0,\n Exclude = 1\n}\n","import {Injectable} from '@angular/core';\nimport {IChartSet} from '../../../stores/statistic/statistic.store';\nimport {IBarLineAreaChartData, IBarLineAreaChartDataValue} from '../../../ap-interface';\nimport {ILegendValue} from '../../../stores/map/map.legend.store';\nimport {ApTranslationService} from '../../../ap-utils/service/ap-translation.service';\nimport {GetRoundNumericService} from '../../../ap-utils/service/get-round-numeric.service';\nimport {SettingsStore} from '../../../stores/base-data/settings.store';\n\nexport type DiagramTableData = {\n AxesTitleX: string;\n AxesTitleY: string;\n DiagramTitle: string;\n RoundAreaNoteToFarmSettings: boolean;\n TotalArea: number;\n TotalCells: number;\n Categories: ILegendValue[];\n Statistics: DiagramTableStatisticObject[];\n};\n\nexport type DiagramTableStatisticObject = {\n Histogram: { Key: number, Value: number }[]\n};\n\n@Injectable({providedIn: 'root'})\nexport class DiagramForHistogramStatisticsService {\n constructor(private settingsStore: SettingsStore,\n private translationService: ApTranslationService,\n private roundNumericService: GetRoundNumericService) {\n }\n\n public generateDiagram(diagramTableData: DiagramTableData): IChartSet[] {\n if (!diagramTableData) {\n return [];\n }\n const diagram: IChartSet = {\n axes: {\n titleX: diagramTableData?.AxesTitleX,\n titleY: diagramTableData?.AxesTitleY\n },\n data: {\n title: diagramTableData?.DiagramTitle,\n categories: [],\n data: []\n },\n noteField: 'note'\n } as IChartSet;\n\n if (!diagramTableData.Categories || diagramTableData.Categories.length <= 0\n || diagramTableData.TotalCells <= 0 || diagramTableData.TotalArea <= 0) {\n return [diagram];\n }\n\n for (let i = 0; i < diagramTableData.Categories.length; i++) {\n const currentLegendValue = diagramTableData.Categories[i];\n const previousLegendValue = diagramTableData.Categories[i - 1];\n let classCells = 0;\n\n if (i === 0) {\n // first class => value is smaller or equals the class value\n classCells = diagramTableData.Statistics.reduce((sumTotalPercentageForClass, item) =>\n this._countHistogramValueCells(sumTotalPercentageForClass, item, (histKey) => {\n return histKey <= currentLegendValue.value;\n }), 0);\n\n } else if (i === diagramTableData.Categories.length - 1) {\n // last class => value is bigger or equals the class value\n // OR histKey bigger than previous value (for cases when histKey in a middle, higher than previous but lower than current)\n classCells = diagramTableData.Statistics.reduce((sumTotalPercentageForClass, item) =>\n this._countHistogramValueCells(sumTotalPercentageForClass, item, (histKey) => {\n return histKey >= currentLegendValue.value || histKey > previousLegendValue.value;\n }), 0);\n\n } else {\n // regular class => value bigger than previous class value and same or smaller than current class value\n classCells = diagramTableData.Statistics.reduce((sumTotalPercentageForClass, item) =>\n this._countHistogramValueCells(sumTotalPercentageForClass, item, (histKey) => {\n return histKey > previousLegendValue.value && histKey <= currentLegendValue.value;\n }), 0);\n }\n diagram.data.data.Add({\n category: currentLegendValue.title,\n value: (classCells / diagramTableData.TotalCells) * diagramTableData.TotalArea,\n color: currentLegendValue.color,\n note: ''\n } as IBarLineAreaChartDataValue);\n diagram.data.categories.AddIfNotExists(currentLegendValue.title);\n }\n\n const rounding = diagramTableData.RoundAreaNoteToFarmSettings\n ? this.settingsStore.FirstSetting.DigitsAfterDecimalPoint\n : 0;\n\n // calculate chart note texts\n // this needs to be done as part of the post-processing\n // when rounding the note's value it might lead to inconsistent results\n // e.g. instead of 100% the sum of all % values might be 101% or 99%\n // Here we adjust the values, so it matches the expectations\n this._calculateNoteTexts(diagram, diagramTableData.TotalArea, rounding);\n\n // calculate min/max of charts\n diagram.axes.minX = 0;\n diagram.axes.maxX = Math.max(...diagram.data.data.map(_ => _.value)) * 1.2;\n\n return [diagram];\n }\n\n /**\n * Counts the histogram cells for each n-index classification\n * This is need to calculate percentage and area for each n-index\n * @param sumTotalPercentageForClass\n * @param item an array item\n * @param comparer comparer for the n-index class. There are different comparisons if it's the first, the last or any other n-index class\n * @private\n */\n private _countHistogramValueCells(sumTotalPercentageForClass: number, item: DiagramTableStatisticObject, comparer: (histValue: number) => boolean): number {\n if (!item?.Histogram || item.Histogram.length <= 0) {\n return sumTotalPercentageForClass;\n }\n let sumItemPercentageForClass = 0;\n for (const histValue of item.Histogram) {\n // if histogram value matches the current n-index class => add it\n if (comparer(histValue.Key)) {\n sumItemPercentageForClass += histValue.Value;\n }\n }\n return sumTotalPercentageForClass + sumItemPercentageForClass;\n }\n\n /**\n * Generates the bar chart note shown on top of each bar\n * @param chartData the generated chart set\n * @param selectedArea the selected area\n * @param areaRounding define how much numbers will be after . in are property.\n * @private\n */\n private _calculateNoteTexts(chartData: IChartSet, selectedArea: number, areaRounding: number = 0): void {\n if (chartData?.data?.data?.length <= 0) {\n return;\n }\n let percentSum = 0;\n let areaSum = 0;\n let biggestValueIdx = 0;\n let biggestArea = 0;\n const showExtendedArea = areaRounding > 0;\n // we are going to adjust the element with the biggest value\n for (let i = 0; i < chartData.data.data.length; i++) {\n const area = this.roundNumericService.roundAsNumber(chartData.data.data[i].value, areaRounding);\n const percent = this.roundNumericService.roundAsNumber(area / selectedArea * 100, 0);\n if (area > biggestArea) {\n biggestArea = area;\n biggestValueIdx = i;\n }\n percentSum += percent;\n areaSum += area;\n chartData.data.data[i].note = this._createNote(percent, area, showExtendedArea);\n }\n const selectedAreaRounding = this.roundNumericService.roundAsNumber(selectedArea, areaRounding);\n // Adjust the biggest value that total sum matches 100% and the selected area\n chartData.data.data[biggestValueIdx].note = this._createNote(\n this.roundNumericService.roundAsNumber(biggestArea / selectedArea * 100, 0) + 100 - percentSum,\n this.roundNumericService.roundAsNumber(biggestArea + selectedAreaRounding - areaSum, areaRounding),\n showExtendedArea);\n }\n\n /**\n * Creates the actual note text containing percentage and area values\n * @param percentage the percentage value of the bar\n * @param area the area value of the bar\n * @param showExtendedArea show full values of area, without '<' sign\n * @private\n */\n private _createNote(percentage: number, area: number, showExtendedArea: boolean): string {\n let areaNote: string;\n if (showExtendedArea) {\n areaNote = `${area} ${this.translationService.translate('Global__Area')}\\n`;\n } else {\n areaNote = `${(area < 1 ? '<1' : area)} ${this.translationService.translate('Global__Area')}\\n`;\n }\n return `${areaNote} (${(percentage < 1 ? '<1' : percentage)} %)`;\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import {Component, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {GetRoundNumericService} from '../../../../ap-utils/service/get-round-numeric.service';\nimport {CssValueParser} from '../../../../ap-core/utils/ap-css-value.parser';\nimport {DottedChart} from './ap-dotted-histogram-chart.types';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\n@Component({\n selector: 'ap-dotted-histogram-chart',\n templateUrl: 'ap-dotted-histogram-chart.component.html',\n styleUrls: ['ap-dotted-histogram-chart.component.scss']\n})\nexport class ApDottedHistogramChartComponent implements OnChanges {\n @Input() data: DottedChart;\n\n public basicStyles = {\n StrokeColor: '#212529',\n TooltipBackground: '#ffffffbf',\n TooltipTextColor: '#000'\n };\n public markers = {\n size: 8,\n background: CssValueParser.hexToRGBA(CssValueParser.getCssVariable('--accent-color'), 0.5),\n border: {width: 0}\n };\n public selectedMarker = {\n size: 8,\n background: 'red',\n border: {width: 0}\n };\n\n constructor(private sanitizer: DomSanitizer,\n private getRoundNumericService: GetRoundNumericService) {\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this._updateData(changes['data'].currentValue);\n }\n }\n\n public getSafeHtml(text: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(text);\n }\n\n private _updateData(data: DottedChart | undefined): void {\n const updateData = this._generateDefaultObject(data);\n this.markers.background = updateData.Styles.MarkerColor;\n this.selectedMarker.background = updateData.Styles.PointerColor;\n this.data = updateData;\n }\n\n private _generateDefaultObject(data: DottedChart | undefined): DottedChart {\n const charData = data?.Data ?? [];\n const getXValues = charData.map(x => x.X);\n const getYValues = charData.map(x => x.Y);\n return {\n ChartTitle: data?.ChartTitle ?? '',\n AxisX: {\n Title: data?.AxisX?.Title ?? '',\n Min: data?.AxisX?.Min ?? this._getMin(getXValues),\n Max: data?.AxisX?.Max ?? this._getMax(getXValues)\n },\n AxisY: {\n Title: data?.AxisY?.Title ?? '',\n Min: data?.AxisY?.Min ?? this._getMin(getYValues),\n Max: data?.AxisY?.Max ?? this._getMax(getYValues)\n },\n Styles: {\n Transition: data?.Styles?.Transition ?? false,\n Zoomable: data?.Styles?.Zoomable ?? false,\n Pannable: data?.Styles?.Pannable ?? false,\n MarkerColor: data?.Styles?.MarkerColor ?? this.markers.background,\n PointerColor: data?.Styles?.PointerColor ?? this.selectedMarker.background,\n ShowTooltip: data?.Styles?.ShowTooltip ?? false\n },\n Data: charData\n };\n }\n\n private _getMin(values: number[] | undefined): number | undefined {\n if (!values || values.length === 0) {\n return undefined;\n }\n const minValue = values.reduce((result, value) => Math.min(result, value), values[0]);\n const percent = minValue * 0.1;\n return this.getRoundNumericService.roundAsNumber(minValue - percent, 0);\n }\n\n private _getMax(values: number[] | undefined): number | undefined {\n if (!values || values.length === 0) {\n return undefined;\n }\n const maxValue = values.reduce((result, value) => Math.max(result, value), values[0]);\n const percent = maxValue * 0.1;\n return this.getRoundNumericService.roundAsNumber(maxValue + percent, 0);\n }\n}\n","import {Component, Input} from '@angular/core';\n\nexport type InfoRowViewObjectData = {\n Text: string;\n Link?: () => void | undefined;\n};\n\nexport type InfoRowViewObject = {\n Head: string;\n Data: InfoRowViewObjectData[];\n};\n\n@Component({\n selector: 'info-row-view',\n template: `\n
\n
\n \n {{ item.Head | translate }}\n \n
\n
\n \n \n \n \n {{ value.Text }}\n \n \n \n \n \n {{ value.Text }}\n \n \n \n
\n
\n `,\n styles: [\n `\n div.row {\n display: flex;\n }\n `,\n `\n div.head {\n padding: 5px;\n background-color: silver;\n font-weight: bold;\n width: calc(20% - 13px);\n }\n `,\n `\n div.data {\n padding: 5px;\n width: calc(80% - 13px);\n }\n `,\n `\n a.link {\n cursor: pointer;\n color: #b0cb1f;\n text-decoration: underline;\n }\n `\n ]\n})\nexport class InfoRowViewComponent {\n @Input() maxRows = 0;\n @Input() rowNum = 0;\n @Input() item: InfoRowViewObject;\n}\n","\n
\n

{{emptyMessage | translate}}

\n
\n
\n 0\">\n

{{title | translate}}

\n
\n \n
0\">\n \n
\n
\n \n
0\">\n \n
\n
\n \n
0\">\n \n
\n
\n \n
0\">\n \n \n \n
\n
\n
\n
\n","import {Component, Input, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {\n FieldStatisticsForFiltering,\n HistogramItemBehavior,\n MinAndMaxForLegend,\n NFertilizationLogfileStatsData,\n ParticularStatisticItem\n} from './n-fertilization-logfile-stats.types';\nimport {InfoRowViewObject} from '../../views/info-row-view.component';\nimport {IChartSet} from '../../../../stores/statistic/statistic.store';\nimport {IBarLineAreaChartData} from '../../../../ap-interface';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {Create} from 'ts-tooling';\nimport {ILegendValue} from '../../../../stores/map/map.legend.store';\nimport {NFertilizationLegend} from '../../../../ap-map/utils/n-fertilization-legend';\nimport {\n DottedChart\n} from '../ap-dotted-histogram-chart/ap-dotted-histogram-chart.types';\nimport {\n ApTranslationService\n} from '../../../../ap-utils/service/ap-translation.service';\nimport {\n GetRoundNumericService\n} from '../../../../ap-utils/service/get-round-numeric.service';\nimport {\n DiagramForHistogramStatisticsService,\n DiagramTableData\n} from '../../services/diagram-for-histogram-statistics.service';\nimport {\n AgriportConstantsService\n} from '../../../../services/common/agriport-constants.service';\nimport {\n AgriportConstantsEnum\n} from '../../../../ap-interface/enums/ap-agriport-constants.enum';\nimport {ImportStore} from '../../../../stores/import/import.store';\nimport {SensorStore} from '../../../../stores/sensor/sensor.store';\n\n@Component({\n selector: 'ap-n-fertilization-logfile-stats',\n templateUrl: 'n-fertilization-logfile-stats.component.html',\n styleUrls: ['n-fertilization-logfile-stats.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ApNFertilizationLogfileStatsComponent implements OnInit, OnDestroy {\n @Input() public data: NFertilizationLogfileStatsData[];\n @Input() public title: string;\n @Input() public emptyMessage = '';\n\n public nUptakeBars$: BehaviorSubject[]> = new BehaviorSubject[]>([]);\n public nApplicationBars$: BehaviorSubject[]> = new BehaviorSubject[]>([]);\n public histogramData$: BehaviorSubject = new BehaviorSubject(undefined);\n public infoItems$: BehaviorSubject = new BehaviorSubject([]);\n\n private _subscriptions: Subscription[] = [];\n\n constructor(private importStore: ImportStore,\n private sensorStore: SensorStore,\n private translationService: ApTranslationService,\n private roundNumericService: GetRoundNumericService,\n private agriportConstantsService: AgriportConstantsService,\n private diagramForHistogramStatisticsService: DiagramForHistogramStatisticsService) {\n }\n\n public ngOnInit(): void {\n if (this.data.length <= 0) {\n return;\n }\n if (!this.title) {\n this.title = 'Logfile__Statistic__Title';\n }\n this.sensorStore.loadSensorRasterValues(this.data.map(item => item.PlanBookId));\n this.nUptakeBars$.next(this._generateNUptakeData());\n this.nApplicationBars$.next(this._generateNApplicationData());\n this.infoItems$.next(this._generateInfoItems());\n this._subscriptions.push(this.sensorStore.Listen(x => x.sensorRasterValues).subscribe(data => {\n this.histogramData$.next(this._generateHistogramData(data));\n }));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions?.forEach(x => x?.unsubscribe());\n }\n\n private _generateInfoItems(): InfoRowViewObject[] {\n const logfiles = this.data?.map(x => x.Logfiles).flat() ?? [];\n if (!logfiles || logfiles.length <= 0) {\n return [];\n }\n const infoRowViewObjects: InfoRowViewObject[] = [];\n logfiles.forEach(logfile => {\n if (!logfile?.DataSet) {\n return;\n }\n const fileName = logfile.DataSet.DataSetName;\n const headerValuesObject = JSON.parse(logfile.DataSet.HeaderValuesString);\n const headerValuesObjectKeys = Object.keys(headerValuesObject);\n if (!fileName && headerValuesObjectKeys.length <= 0) {\n return;\n }\n // Introduce Logfile name of file in table\n const fileNameRow = infoRowViewObjects.find(x => x.Head === 'Logfile');\n const actionToDownloadFile = () => this.importStore.downloadCsv(logfile.DataSet.MongoFileId);\n if (fileNameRow) {\n fileNameRow.Data.push({Text: fileName, Link: actionToDownloadFile});\n } else {\n infoRowViewObjects.push({\n Head: 'Logfile',\n Data: [{Text: fileName, Link: actionToDownloadFile}]\n });\n }\n if (headerValuesObject) {\n Object.keys(headerValuesObject).forEach(key => {\n const infoRowViewObject = infoRowViewObjects.find(x => x.Head === key);\n if (infoRowViewObject) {\n infoRowViewObject.Data.push(headerValuesObject[key]);\n } else {\n infoRowViewObjects.push({\n Head: key,\n Data: [{Text: headerValuesObject[key]}]\n });\n }\n });\n }\n });\n return infoRowViewObjects;\n }\n\n private _generateHistogramData(data: number[][]): DottedChart {\n const chart: DottedChart = {\n ChartTitle: '\\u200B',\n AxisY: {\n Title: 'N__ChartTitleY',\n Min: 0\n },\n AxisX: {\n Title: 'N__ChartTitleX'\n },\n Data: [],\n Styles: {\n ShowTooltip: true\n }\n };\n const xValues = data[0];\n const yValues = data[1];\n if (!xValues || !yValues) {\n return chart;\n }\n const xTranslate = this.translationService.translate('N__Uptake');\n const yTranslate = this.translationService.translate('N__Application');\n for (let i = 0; i < Math.min(xValues.length, yValues.length); i++) {\n chart.Data.push({\n X: xValues[i],\n Y: yValues[i],\n TooltipText: `${yTranslate}: ${this.roundNumericService.roundAsNumber(yValues[i])}
` +\n `${xTranslate}: ${this.roundNumericService.roundAsNumber(xValues[i])}`\n });\n }\n return chart;\n }\n\n private _generateNUptakeData(): IChartSet[] {\n const statistics = this._getStatistics(this.data, 0);\n return this._generateHistogram('uptake', statistics, 'N__ChartTitleX');\n }\n\n private _generateNApplicationData(): IChartSet[] {\n const statistics = this._getStatistics(this.data, 1);\n return this._generateHistogram('application', statistics, 'N__ChartTitleY');\n }\n\n private _getStatistics(data: NFertilizationLogfileStatsData[], index: number): ParticularStatisticItem[] {\n if (!data || data.length <= 0) {\n return [];\n }\n return data.filter(x => x?.Area && x?.RasterStatistics[index])\n .filter(x => x.RasterStatistics[index].FieldStatistic && x.RasterStatistics[index].FieldStatistic.length > 0)\n .map(x => ({Area: x.Area, Statistic: x.RasterStatistics[index]}))\n .filter(x => x);\n }\n\n private _generateHistogram(kind: 'uptake' | 'application',\n items: ParticularStatisticItem[],\n axesYTitle: string): IChartSet[] {\n if (!items || items.length <= 0) {\n return [];\n }\n const totalArea = items.reduce((total, current) => total + Create(current?.Area, 0), 0);\n const totalCells = items.reduce((sum, current) => sum + Create(current?.Statistic?.Cells, 0), 0);\n const minAndMaxForLegend = this._getMinAndMaxForLegend(items);\n const min = minAndMaxForLegend.reduce((lowest, current) => current.Min < lowest ? current.Min : lowest, minAndMaxForLegend[0]?.Min ?? 0);\n const max = minAndMaxForLegend.reduce((highest, current) => current.Max > highest ? current.Max : highest, 0);\n const legendValues = NFertilizationLegend.getDynamicColorLegend(kind, min, max, 1) as ILegendValue[] ?? [];\n const diagramStatistics = items.map(x => ({Histogram: x?.Statistic?.FieldStatistic ?? []}));\n const diagramTableData: DiagramTableData = {\n AxesTitleX: 'Global_ha_Unit',\n AxesTitleY: axesYTitle,\n DiagramTitle: '\\u200B',\n RoundAreaNoteToFarmSettings: true,\n TotalArea: totalArea,\n TotalCells: totalCells,\n Categories: legendValues,\n Statistics: diagramStatistics\n };\n return this.diagramForHistogramStatisticsService.generateDiagram(diagramTableData);\n }\n\n private _getMinAndMaxForLegend(items: ParticularStatisticItem[]): MinAndMaxForLegend[] {\n return items?.map(item => {\n if (!item?.Statistic || item.Statistic.FieldStatistic.length <= 0) {\n return undefined;\n }\n const copiedFieldStatistic: FieldStatisticsForFiltering[] = item.Statistic.FieldStatistic.map(x => {\n return {\n Key: x.Key,\n Value: x.Value,\n ItemBehavior: HistogramItemBehavior.Include // Indicates is item should be included for defining Min and Max values\n };\n });\n let sortedStatistics = copiedFieldStatistic.sort((a, b) => a.Key - b.Key);\n // Filter ordered (from lowest to highest by Key) items from start of an array\n this._filterFieldStatisticsValues(sortedStatistics, item);\n sortedStatistics = sortedStatistics.reverse();\n // Filter reversed items from start of an array (from the end of an array before reverse)\n this._filterFieldStatisticsValues(sortedStatistics, item);\n sortedStatistics = sortedStatistics.filter(x => x.ItemBehavior === HistogramItemBehavior.Include);\n if (sortedStatistics.length <= 0) {\n return undefined;\n }\n const minItem = sortedStatistics.reduce((lowest, current) =>\n current.Key < lowest.Key ? current : lowest,\n sortedStatistics[0]\n );\n const maxItem = sortedStatistics.reduce((highest, current) =>\n current.Key > highest.Key ? current : highest,\n sortedStatistics[0]\n );\n return {\n Min: minItem.Key,\n Max: maxItem.Key\n };\n })?.filter(x => x) ?? [];\n }\n\n private _filterFieldStatisticsValues(fieldStatistics: FieldStatisticsForFiltering[], item: ParticularStatisticItem): void {\n const minItem = item.Statistic.FieldStatistic.reduce((lowest, current) => current.Key < lowest.Key ? current : lowest, item.Statistic.FieldStatistic[0]);\n const maxItem = item.Statistic.FieldStatistic.reduce((highest, current) => current.Key > highest.Key ? current : highest, item.Statistic.FieldStatistic[0]);\n const multiplier = +(this.agriportConstantsService.GetConstant(AgriportConstantsEnum.HistogrammExcludeLimit) ?? 0.01);\n const multiplierCellValue = multiplier * item.Statistic.Cells;\n const highestValue = Math.max(minItem.Value, maxItem.Value);\n // Value that indicates is item should be HistogramItemBehavior.Include or HistogramItemBehavior.Exclude\n const valueToCompare = multiplierCellValue >= highestValue ? multiplierCellValue : highestValue;\n for (let i = 0; i <= fieldStatistics.length - 1; i++) {\n if (i === 0) {\n if (fieldStatistics[i].Value >= valueToCompare) {\n break;\n }\n fieldStatistics[i].ItemBehavior = HistogramItemBehavior.Exclude;\n continue;\n }\n if (fieldStatistics[i].Value < valueToCompare) {\n fieldStatistics[i].Value += fieldStatistics[i - 1].Value;\n }\n if (fieldStatistics[i].Value >= valueToCompare) {\n fieldStatistics[i - 1].ItemBehavior = HistogramItemBehavior.Include;\n break;\n }\n fieldStatistics[i].ItemBehavior = HistogramItemBehavior.Exclude;\n }\n }\n}\n","\n
\n

{{emptyMessage | translate}}

\n
\n
\n 0\">\n
\n
\n

{{title | translate}}*

\n
\n \n \n
\n
\n
\n \n
\n
\n
\n","import {AfterContentInit, Component, Input, OnInit} from '@angular/core';\nimport {SelectableSettings} from '@progress/kendo-angular-grid';\nimport {Observable, of} from 'rxjs';\nimport {\n INFertilizerNNeedGridItem\n} from '../../../../n-fertilization/types/ap-n-fertilization-n-need-types';\nimport {INFertilizationNNeedStatsSumValuesData} from './n-fertilization-n-need-stats-types';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {ApTranslationService} from '../../../../ap-utils/service/ap-translation.service';\nimport {GetRoundNumericPipe} from '../../../../ap-utils';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {IBarLineAreaChartData} from '../../../../ap-interface';\nimport {IChartSet} from '../../../../stores/statistic/statistic.store';\nimport {\n ApDynGridColumnConfigBase\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {GetRoundNumericService} from '../../../../ap-utils/service/get-round-numeric.service';\n\n@Component({\n selector: 'ap-n-fertilization-n-need-stats',\n templateUrl: 'n-fertilization-n-need-stats.component.html',\n styleUrls: ['n-fertilization-n-need-stats.component.scss']\n})\nexport class ApNFertilizationNNeedStatsComponent implements OnInit, AfterContentInit {\n @Input() public data: INFertilizerNNeedGridItem[];\n @Input() public title: string;\n @Input() public emptyMessage = '';\n\n public sumValuesStatsColumns: ApDynGridColumnConfigBase[] = [];\n public sumValuesStatsItems$: Observable;\n public barsData: IChartSet[] = [];\n public gridSelectableSettings: SelectableSettings = {\n enabled: false,\n checkboxOnly: false,\n mode: 'single',\n cell: false,\n drag: false\n };\n\n private _zeroValuesToHandleOnChart: string[] = [];\n\n constructor(private translationService: ApTranslationService,\n private roundService: GetRoundNumericService,\n private roundNumericPipe: GetRoundNumericPipe) {\n }\n\n public ngOnInit(): void {\n this.sumValuesStatsColumns = this._getSumValuesStatsColumns();\n }\n\n public ngAfterContentInit(): void {\n const data = this._getTotalData();\n if (data && data.length > 0) {\n this.sumValuesStatsItems$ = of(data);\n const barsData = this._getTotalSumBarsData(data);\n this.barsData = [barsData];\n }\n }\n\n private _getSumValuesStatsColumns(): ApDynGridColumnConfigBase[] {\n return [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Crop',\n field: 'CropType',\n headerStyle: {'text-align': 'left'},\n style: {'font-weight': 600, 'background-color': 'silver'},\n cssClass: 'left',\n width: 100,\n filterable: false,\n sortable: false\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Base__Fields',\n field: 'FieldsSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 60,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: `${this.translationService.translate('Global__Sum')} ${this.translationService.translate('Docu_Ini__Area')}`,\n field: 'AreaSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 60,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridGroupColumnConfig({\n title: `${this.translationService.translate('Global__Sum')} kg N`,\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: 'Settings__Label_Detraction',\n field: 'RemovalSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Nutrients__already_applied',\n field: 'AlreadyAppliedSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: `Global__Balance`,\n field: 'BalanceSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Nutrients__Need_FNV',\n field: 'MaxAllowanceSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Nutrients__Remaining',\n field: 'RemainingSum',\n cssClass: 'right',\n headerStyle: {'text-align': 'center'},\n width: 100,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [0]\n }]\n })\n ]\n })\n ];\n }\n\n private _getTotalData(): INFertilizationNNeedStatsSumValuesData[] {\n return this.data?.reduce((gridData, currentItem, currentIndex, array) => {\n if (currentItem.MainCropType) {\n const existingGroup = gridData.find(item => item.CropType === currentItem.MainCropType);\n const removalSum = currentItem.Removal ? currentItem.Removal * currentItem.Area : 0;\n const alreadyAppliedSum = currentItem.AlreadyApplied ? currentItem.AlreadyApplied * currentItem.Area : 0;\n const balanceSum = currentItem.Balance ? currentItem.Balance * currentItem.Area : 0;\n const maxAllowanceSum = currentItem.MaxAllowance ? currentItem.MaxAllowance * currentItem.Area : 0;\n const remainingSum = currentItem.Remaining ? currentItem.Remaining * currentItem.Area : 0;\n if (existingGroup) {\n existingGroup.FieldsSum += 1;\n existingGroup.AreaSum += currentItem.Area;\n existingGroup.RemovalSum += removalSum;\n existingGroup.AlreadyAppliedSum += alreadyAppliedSum;\n existingGroup.BalanceSum += balanceSum;\n existingGroup.MaxAllowanceSum += maxAllowanceSum;\n existingGroup.RemainingSum += remainingSum;\n } else {\n gridData.push({\n CropType: currentItem.MainCropType,\n FieldsSum: 1,\n AreaSum: currentItem.Area,\n RemovalSum: removalSum,\n AlreadyAppliedSum: alreadyAppliedSum,\n BalanceSum: balanceSum,\n MaxAllowanceSum: maxAllowanceSum,\n RemainingSum: remainingSum\n });\n }\n }\n // Add total sum for each value\n if (currentIndex === array.length - 1) {\n gridData.push({\n CropType: '',\n FieldsSum: gridData.reduce((total, item) => total + item.FieldsSum, 0),\n AreaSum: gridData.reduce((total, item) => total + item.AreaSum, 0),\n RemovalSum: gridData.reduce((total, item) => total + item.RemovalSum, 0),\n AlreadyAppliedSum: gridData.reduce((total, item) => total + item.AlreadyAppliedSum, 0),\n BalanceSum: gridData.reduce((total, item) => total + item.BalanceSum, 0),\n MaxAllowanceSum: gridData.reduce((total, item) => total + item.MaxAllowanceSum, 0),\n RemainingSum: gridData.reduce((total, item) => total + item.RemainingSum, 0)\n });\n }\n return gridData;\n }, [] as INFertilizationNNeedStatsSumValuesData[]) ?? [];\n }\n\n private _getTotalSumBarsData(data: INFertilizationNNeedStatsSumValuesData[]): IChartSet | null {\n const lastItemWithTotal = data[data.length - 1];\n this._saveItemsNamesWithZeroValues(lastItemWithTotal);\n const minAndMaxValue = this._getMinAndMaxScalesFromObject(lastItemWithTotal);\n const alreadyAppliedName = this.translationService.translate('Nutrients__already_applied');\n const removalName = this.translationService.translate('Settings__Label_Detraction');\n const balanceName = this.translationService.translate('Global__Balance');\n const maxAllowanceName = this.translationService.translate('Nutrients__Need_FNV');\n const remainingName = this.translationService.translate('Nutrients__Remaining');\n return {\n axes: {\n titleX: `${this.translationService.translate('Global__Sum')} kg N`,\n minX: minAndMaxValue?.min,\n maxX: minAndMaxValue?.max\n },\n noteDelegate: (item, _) => {\n let amount = '0';\n if (!this._zeroValuesToHandleOnChart.some(x => x === item.note)) {\n amount = this.roundNumericPipe.transform(item.value, 0);\n }\n return `${item.note}\\n${amount}`;\n },\n data: {\n data: [\n {\n category: balanceName,\n value: lastItemWithTotal.RemovalSum ? lastItemWithTotal.RemovalSum : -1,\n color: 'rgb(214, 112, 0)',\n note: removalName\n },\n {\n category: balanceName,\n value: lastItemWithTotal.AlreadyAppliedSum ? lastItemWithTotal.AlreadyAppliedSum : -1,\n color: 'rgb(38, 115, 0)',\n note: alreadyAppliedName\n },\n {\n category: balanceName,\n value: lastItemWithTotal.BalanceSum ? lastItemWithTotal.BalanceSum : -1,\n color: 'rgb(0, 130, 255)',\n note: balanceName\n },\n {\n category: maxAllowanceName,\n value: lastItemWithTotal.MaxAllowanceSum ? lastItemWithTotal.MaxAllowanceSum : -1,\n color: 'rgb(214, 112, 0)',\n note: maxAllowanceName\n },\n {\n category: maxAllowanceName,\n value: lastItemWithTotal.AlreadyAppliedSum ? lastItemWithTotal.AlreadyAppliedSum : -1,\n color: 'rgb(38, 115, 0)',\n note: alreadyAppliedName\n },\n {\n category: maxAllowanceName,\n value: lastItemWithTotal.RemainingSum ? lastItemWithTotal.RemainingSum : -1,\n color: 'rgb(0, 130, 255)',\n note: remainingName\n }\n ],\n categories: [\n balanceName,\n maxAllowanceName\n ]\n }\n } as IChartSet;\n }\n\n private _getMinAndMaxScalesFromObject(obj: INFertilizationNNeedStatsSumValuesData): {\n min: number | null,\n max: number | null\n } | null {\n if (!obj) {\n return {min: -100, max: 100};\n }\n const numberValues = Object.keys(obj).reduce((acc, key) => {\n const value = obj[key];\n if (typeof value === 'number') {\n acc.push(value);\n }\n return acc;\n }, [] as number[]);\n if (!numberValues || numberValues.length < 1) {\n return {min: -100, max: 100};\n }\n const maxValue = Math.max(...numberValues);\n const minAbsValue = Math.abs(Math.min(...numberValues));\n if (maxValue === 0 || minAbsValue === 0) {\n return {\n min: minAbsValue === 0 ? -maxValue : null,\n max: maxValue === 0 ? minAbsValue : null\n };\n }\n const roundedMinAbsValue = this.roundService.roundAsNumber(minAbsValue, 0);\n let roundedMaxValue = this.roundService.roundAsNumber(maxValue, 0);\n if (roundedMaxValue * 3 < roundedMinAbsValue) {\n roundedMaxValue = this.roundService.roundAsNumber(roundedMinAbsValue / 2, 0);\n }\n return {\n min: -(roundedMinAbsValue + this.roundService.roundAsNumber(roundedMinAbsValue * 10 / 100, 0)),\n max: roundedMaxValue + this.roundService.roundAsNumber(roundedMaxValue / 2, 0)\n };\n }\n\n private _saveItemsNamesWithZeroValues(sumValuesData: INFertilizationNNeedStatsSumValuesData): void {\n this._zeroValuesToHandleOnChart = [];\n if (sumValuesData.RemovalSum === 0) {\n this._zeroValuesToHandleOnChart.push(this.translationService.translate('Settings__Label_Detraction'));\n }\n if (sumValuesData.AlreadyAppliedSum === 0) {\n this._zeroValuesToHandleOnChart.push(this.translationService.translate('Nutrients__already_applied'));\n }\n if (sumValuesData.BalanceSum === 0) {\n this._zeroValuesToHandleOnChart.push(this.translationService.translate('Global__Balance'));\n }\n if (sumValuesData.MaxAllowanceSum === 0) {\n this._zeroValuesToHandleOnChart.push(this.translationService.translate('Nutrients__Need_FNV'));\n }\n if (sumValuesData.RemainingSum === 0) {\n this._zeroValuesToHandleOnChart.push(this.translationService.translate('Nutrients__Remaining'));\n }\n }\n}\n","\n
\n

{{ emptyMessage | translate }}

\n
\n
\n 0\">\n
\n
\n

{{ title }}

\n
\n \n \n
\n
\n
\n
\n","import {AfterContentInit, Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {Observable, of, Subscription} from 'rxjs';\nimport {SelectableSettings} from '@progress/kendo-angular-grid';\nimport {CampaignYearStore} from '../../../../stores/login/campaignyear.store';\nimport {GetRoundNumericPipe} from '../../../../ap-utils';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {LanguageStore} from '../../../../stores/translation/language.store';\nimport {SettingsStore} from '../../../../stores/base-data/settings.store';\nimport {Create, ObjectFactory} from 'ts-tooling';\nimport {\n ApDynGridGroupColumnConfig\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-group-column-config';\nimport {TranslationStore} from '../../../../stores/translation/translation.store';\nimport {IFieldScanDataStatsTableItem} from './ap-field-scan-data-table-stats.types';\nimport {\n NFertilizationPlantProtectionService\n} from '../../../../services/data/n-fertilization-plant-protection.service';\nimport {nameOf} from '../../../../ap-core/utils/ap-name-of';\nimport {\n GetRoundNumericPipeConfig\n} from '../../../../ap-utils/pipes/configs/get-round-numeric.pipe.config';\n\n@Component({\n selector: 'ap-field-scan-data-table-stats',\n templateUrl: 'ap-field-scan-data-table-stats.component.html',\n styleUrls: ['ap-field-scan-data-table-stats.component.scss']\n})\nexport class ApFieldScanDataTableStatsComponent implements OnInit, AfterContentInit, OnDestroy {\n @Input() public data: IFieldScanDataStatsTableItem[];\n @Input() public title: string;\n @Input() public emptyMessage = '';\n public gridSelectableSettings: SelectableSettings = {\n enabled: false,\n checkboxOnly: false,\n mode: 'single',\n cell: false,\n drag: false\n };\n\n public readonly MAX_STAT_ITEMS = 25;\n public statColumns = [];\n public itemsStat$: Observable;\n\n private subscriptions: Subscription[] = [];\n\n constructor(private translationStore: TranslationStore,\n private campaignYearStore: CampaignYearStore,\n private languageStore: LanguageStore,\n private settingsStore: SettingsStore,\n private roundNumericPipe: GetRoundNumericPipe,\n private nFertilizationPlantProtectionService: NFertilizationPlantProtectionService) {\n }\n\n public ngOnInit(): void {\n this.subscriptions.push(\n this.campaignYearStore.Listen(s => s.selectedYear).subscribe(_ => {\n this._buildGrids();\n })\n );\n }\n\n public ngAfterContentInit(): void {\n if (!this.data) {\n return;\n }\n if (!this.data || this.data?.length === 0) {\n this.itemsStat$ = of([]);\n return;\n }\n // Cannot use 'SortBy' here because it has problems if fieldname is undefined\n let statGridDataItems: IFieldScanDataStatsTableItem[] = ObjectFactory.Copy(this.data).sort((a, b) => {\n return (a.FieldName?.toLowerCase() < b.FieldName?.toLowerCase()) ? -1\n : ((b.FieldName?.toLowerCase() > a.FieldName?.toLowerCase()) ? 1 : 0);\n });\n if (statGridDataItems.length > this.MAX_STAT_ITEMS) {\n statGridDataItems = ObjectFactory.Copy(statGridDataItems.slice(0, this.MAX_STAT_ITEMS));\n statGridDataItems.push({\n FieldNumber: undefined,\n FieldName: this.translationStore.FindTranslationForSelectedLanguage('Nutrient__Param_ManyMore', [`${(this.data.length - this.MAX_STAT_ITEMS)}`]),\n FieldSubNumber: undefined,\n ScanDate: undefined,\n Area: undefined,\n ScanNUptakeMin: undefined,\n ScanNUptakeMax: undefined,\n ScanNUptakeAvg: undefined\n });\n }\n const filteredItemsBySensor = this.data.filter(item => Number.isFinite(item.ScanNUptakeAvg));\n const selectedFieldsAreaAndAverage = filteredItemsBySensor.map(item => ({\n Area: Create(item.Area, 0),\n Average: item.ScanNUptakeAvg\n }));\n const sumDataRow: IFieldScanDataStatsTableItem = {\n FieldNumber: undefined,\n FieldName: undefined,\n FieldSubNumber: undefined,\n ScanDate: undefined,\n Area: this.data.reduce((a, b) => a + Create(b?.Area, 0), 0),\n ScanNUptakeMin: filteredItemsBySensor.reduce((a, b) => (b.ScanNUptakeMin < a) || (a === 0 && b.ScanNUptakeMin > -1) ? b.ScanNUptakeMin : a, 0),\n ScanNUptakeMax: filteredItemsBySensor.reduce((a, b) => b.ScanNUptakeMax > a && b.ScanNUptakeMax > -1 ? b.ScanNUptakeMax : a, 0),\n ScanNUptakeAvg: this.nFertilizationPlantProtectionService.calculateAreaWeightedAverage(selectedFieldsAreaAndAverage)\n };\n statGridDataItems.push(sumDataRow);\n this.itemsStat$ = of(statGridDataItems);\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.forEach(s => s?.unsubscribe());\n }\n\n private _buildGrids(): void {\n this.statColumns = [\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Number',\n field: nameOf('FieldNumber'),\n width: 60,\n filterable: false,\n sortable: false\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini_Subnumber',\n field: nameOf('FieldSubNumber'),\n width: 60,\n filterable: false,\n sortable: false\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Name',\n field: nameOf('FieldName'),\n width: 150,\n filterable: false,\n sortable: false\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Docu_Ini__Area',\n field: nameOf('Area'),\n width: 60,\n filterable: false,\n sortable: false,\n cssClass: 'center',\n headerStyle: {'text-align': 'center', padding: '6px 6px 6px 5px'},\n tooltip: (dataItem) => dataItem['Area'],\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [\n this.settingsStore.FirstSetting?.DigitsAfterDecimalPoint ?? 0,\n ]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Date',\n field: nameOf('ScanDate'),\n format: this.languageStore.CurrentDateFormat,\n width: 70,\n cssClass: 'center',\n headerStyle: {'text-align': 'center', padding: '6px 6px 6px 5px'},\n filterable: false,\n sortable: false,\n }),\n new ApDynGridGroupColumnConfig({\n title: 'N__Uptake',\n groupColumns: [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__AvgShort',\n field: nameOf('ScanNUptakeAvg'),\n cssClass: 'center',\n headerStyle: {'text-align': 'center', padding: '6px 6px 6px 5px'},\n width: 105,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [\n this.settingsStore.FirstSetting?.DigitsAfterDecimalPoint ?? 0,\n GetRoundNumericPipeConfig.NullAndZeroToEmptyReplaceConfig\n ]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Min',\n field: nameOf('ScanNUptakeMin'),\n cssClass: 'center',\n headerStyle: {'text-align': 'center', padding: '6px 6px 6px 5px'},\n width: 105,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [\n this.settingsStore.FirstSetting?.DigitsAfterDecimalPoint ?? 0,\n GetRoundNumericPipeConfig.NullToEmptyReplaceConfig\n ]\n }]\n }),\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Max',\n field: nameOf('ScanNUptakeMax'),\n cssClass: 'center',\n headerStyle: {'text-align': 'center', padding: '6px 6px 6px 5px'},\n width: 105,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [\n this.settingsStore.FirstSetting?.DigitsAfterDecimalPoint ?? 0,\n GetRoundNumericPipeConfig.NullToEmptyReplaceConfig\n ]\n }]\n })\n ]\n })\n ];\n }\n}\n","\n
\n

{{emptyMessage | translate}}

\n
\n
\n 0\">\n
\n \n
\n
\n
\n

{{title | translate}}

\n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","import {AfterContentInit, Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {SelectableSettings} from '@progress/kendo-angular-grid';\nimport {\n BarDataType,\n ChartBarItemValue,\n CropTableData,\n FieldCropRotationPriority,\n FieldCropRotationPrioritySelection,\n FieldsCropRotationStatsData,\n IFieldsCropRotationAggregated,\n IFieldsCropRotationTableData\n} from './fields-crop-rotation-stats.types';\nimport {\n ApDynGridPropertyColumnConfig\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {\n ApTranslationService\n} from '../../../../ap-utils/service/ap-translation.service';\nimport {GetRoundNumericPipe} from '../../../../ap-utils';\nimport {\n ApDynGridColumnConfigBase\n} from '../../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {\n GetRoundNumericService\n} from '../../../../ap-utils/service/get-round-numeric.service';\nimport {CampaignYearStore} from '../../../../stores/login/campaignyear.store';\nimport {SettingsStore} from '../../../../stores/base-data/settings.store';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {Border} from '@progress/kendo-angular-charts';\nimport {map} from 'rxjs/operators';\nimport {StatisticChartAreaService} from '../../../services/statistic-chart-area.service';\nimport {\n GetRoundNumericPipeConfig\n} from '../../../../ap-utils/pipes/configs/get-round-numeric.pipe.config';\n\n@Component({\n selector: 'ap-fields-crop-rotation-stats',\n templateUrl: 'fields-crop-rotation-stats.component.html',\n styleUrls: ['fields-crop-rotation-stats.component.scss']\n})\nexport class ApFieldsCropRotationStatsComponent implements OnInit, AfterContentInit, OnDestroy {\n @Input() public data: FieldsCropRotationStatsData[] = [];\n @Input() public title = '';\n @Input() public emptyMessage = '';\n\n public dropdownSelectionItems: FieldCropRotationPrioritySelection[] = [];\n public selectedCropPriority = new BehaviorSubject(null);\n public cropStatsColumns: ApDynGridColumnConfigBase[] = [];\n public cropTableData$ = new BehaviorSubject([]);\n public chartBarData$ = new BehaviorSubject([]);\n public cropYears: number[] = [];\n public chartBarRange: { min: number, max: number } = {min: 0, max: 100};\n public gridSelectableSettings: SelectableSettings = {\n enabled: false,\n checkboxOnly: false,\n mode: 'single',\n cell: false,\n drag: false\n };\n public backgroundColor = '#ffffffbf';\n public strokeColor = '#212529';\n public inactiveColor = 'rgba(33, 37, 41, 0.4)';\n public border: Border = {\n color: this.strokeColor,\n dashType: 'solid',\n width: 1\n };\n public decimalsAfterDigit = 0;\n public chartWidth = this.statisticChartAreaService.chartAreaWidth.pipe(\n map(v => v - 100),\n );\n public chartHeight = this.statisticChartAreaService.chartAreaHeight.pipe(\n map(v => v > 599 ? v / 2 : 600),\n );\n\n private _subscriptions: Subscription[] = [];\n\n constructor(private translationService: ApTranslationService,\n private roundService: GetRoundNumericService,\n private roundNumericPipe: GetRoundNumericPipe,\n private settingsStore: SettingsStore,\n private statisticChartAreaService: StatisticChartAreaService,\n private campaignYearStore: CampaignYearStore) {\n }\n\n public ngOnInit(): void {\n this.decimalsAfterDigit = this.settingsStore.FirstSetting.DigitsAfterDecimalPoint;\n this.cropYears = this._getCropYears(this.data);\n this.dropdownSelectionItems = this._getItemsForSelectionDropdown();\n this.selectedCropPriority.next(this.dropdownSelectionItems[0]);\n this.cropStatsColumns = this._getCropStatsColumns();\n }\n\n public ngAfterContentInit(): void {\n this._subscriptions.push(this.selectedCropPriority.subscribe(selectedCrop => {\n const dataResult = this._getCropTableData(this.data, selectedCrop.Value);\n this.cropTableData$.next(dataResult.FieldCropsData);\n this.chartBarData$.next(dataResult.ChartBarData);\n }));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions?.forEach(x => x?.unsubscribe());\n }\n\n public getTooltipText(categoryName: string, value: BarDataType): string {\n const roundedPercent = this.roundService.roundAsNumber(value.Percent, 2);\n const roundedValue = this.roundService.roundAsNumber(value.AreaHa, this.decimalsAfterDigit);\n return `${categoryName}:
${roundedValue} ha (${roundedPercent} %)`;\n }\n\n private _getCropTableData(data: FieldsCropRotationStatsData[], selectedPriority: FieldCropRotationPriority): CropTableData {\n const fieldsCropRotationTableData: IFieldsCropRotationTableData[] = [];\n const chartBarItemValues: ChartBarItemValue[] = [];\n const startYear = this.cropYears[0];\n const endYear = this.cropYears[this.cropYears.length - 1];\n data.filter(x => x.CropPriority === selectedPriority).forEach((item) => {\n this.cropYears.forEach(year => {\n const yearIndex = year - startYear;\n item.CropTypesPerYear[year].forEach((crop: IFieldsCropRotationAggregated) => {\n let cropTypeIndex = fieldsCropRotationTableData.findIndex(x => x.CropTypeName === crop.CropTypeName);\n if (cropTypeIndex < 0) {\n fieldsCropRotationTableData.push({\n CropTypeName: crop.CropTypeName,\n CropYearArea: {}\n });\n cropTypeIndex = fieldsCropRotationTableData.length - 1;\n }\n const areaHa = crop?.AreaHa ?? 0;\n if (!fieldsCropRotationTableData[cropTypeIndex].CropYearArea[year]) {\n fieldsCropRotationTableData[cropTypeIndex].CropYearArea[year] = areaHa;\n } else {\n fieldsCropRotationTableData[cropTypeIndex].CropYearArea[year] += areaHa;\n }\n let chartBarValueIndex = chartBarItemValues.findIndex(x => x.Name === crop.CropTypeName);\n if (chartBarValueIndex < 0) {\n const charBarObject: ChartBarItemValue = {\n Name: crop.CropTypeName,\n Color: crop.Color,\n Data: []\n };\n for (let index = 0; index <= (endYear - startYear); index++) {\n charBarObject.Data[index] = {AreaHa: 0, Percent: 0};\n }\n chartBarItemValues.push(charBarObject);\n chartBarValueIndex = chartBarItemValues.length - 1;\n }\n chartBarItemValues[chartBarValueIndex].Data[yearIndex].AreaHa += areaHa;\n });\n const totalArea = chartBarItemValues.reduce((accumulator, currentValue) => accumulator + currentValue.Data[yearIndex].AreaHa, 0);\n chartBarItemValues.forEach(chartBarItem => {\n chartBarItem.Data[yearIndex].Percent = (chartBarItem.Data[yearIndex].AreaHa / totalArea) * 100;\n });\n });\n });\n const currentYear = this.campaignYearStore.SelectedCampaignYear.Year;\n const sortedResultMap = fieldsCropRotationTableData.sort((first, second) => {\n const firstAreaHa = first.CropYearArea[currentYear] ?? 0;\n const secondAreaHa = second.CropYearArea[currentYear] ?? 0;\n return secondAreaHa - firstAreaHa;\n });\n return {FieldCropsData: sortedResultMap, ChartBarData: chartBarItemValues};\n }\n\n private _getCropStatsColumns(): ApDynGridColumnConfigBase[] {\n const columns: ApDynGridColumnConfigBase[] = [\n new ApDynGridPropertyColumnConfig({\n title: 'Global__Crop',\n field: 'CropTypeName',\n headerStyle: {'text-align': 'left'},\n style: {'font-weight': 600, 'background-color': 'silver'},\n cssClass: 'left',\n width: 100,\n filterable: false,\n sortable: false\n })\n ];\n this.cropYears.forEach(year => {\n columns.push(new ApDynGridPropertyColumnConfig({\n title: `${year}`,\n field: `CropYearArea.${year}`,\n headerStyle: {'text-align': 'center'},\n cssClass: 'right',\n width: 60,\n filterable: false,\n sortable: false,\n pipes: [{\n pipe: this.roundNumericPipe,\n args: [\n this.decimalsAfterDigit,\n GetRoundNumericPipeConfig.NullAndZeroToEmptyReplaceConfig\n ]\n }]\n }));\n });\n return columns;\n }\n\n private _getItemsForSelectionDropdown(): FieldCropRotationPrioritySelection[] {\n return [\n {\n Text: this.translationService.translate('MainCrop'),\n Value: FieldCropRotationPriority.MainCrop\n },\n {\n Text: this.translationService.translate('SecondCrop'),\n Value: FieldCropRotationPriority.SecondCrop\n }\n ];\n }\n\n private _getCropYears(data: FieldsCropRotationStatsData[]): number[] {\n return !data || data.length <= 0\n ? []\n : Object.keys(data[0].CropTypesPerYear).map(x => Number(x)).sort((a, b) => a - b);\n }\n}\n","import IGuid = System.IGuid;\n\nexport enum FieldsNdiStatsDataType {\n NIndex = 0,\n NUptake = 1\n}\n\nexport interface IFieldsNdiStatsData {\n FieldId: IGuid;\n FieldName: string | undefined;\n AreaHa: number | undefined;\n Cells: number | undefined;\n NIndexAvg: number | undefined;\n NIndexMin: number | undefined;\n NIndexMax: number | undefined;\n NUptakeAvg: number | undefined;\n NUptakeMin: number | undefined;\n NUptakeMax: number | undefined;\n NIndexHistogram: { [key: string]: number } | undefined;\n NUptakeHistogram: { [key: string]: number } | undefined;\n}\n\nexport type FieldsNdiStatsDropDownItem = {\n Id: FieldsNdiStatsDataType;\n Text: string;\n};\n\nexport type DataPresence = {\n IsGenericBarsDataPresent: boolean,\n IsPlotBoxDataPresent: boolean\n};\n","/**\n * Data Definition for a Box Plot Chart\n */\nexport class BoxPlotChartDataItem {\n lower: number;\n q1: number;\n median: number;\n q3: number;\n upper: number;\n mean: number;\n outliers: number[];\n category: string;\n color: string;\n}\n","
\n
\n \n
\n \n
\n

{{emptyMessage | translate}}

\n
\n
\n \n

{{title | translate}}

\n \n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n","import {AfterContentInit, Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {\n DataPresence,\n FieldsNdiStatsDataType,\n FieldsNdiStatsDropDownItem,\n IFieldsNdiStatsData\n} from './fields-ndi-stats.types';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {\n ApTranslationService\n} from '../../../../ap-utils/service/ap-translation.service';\nimport {\n IChartSet\n} from '../../../../stores/statistic/statistic.store';\nimport {\n BoxPlotChartDataItem,\n IBarLineAreaChartData\n} from '../../../../ap-interface';\nimport {\n N_UPTAKE_LEGEND,\n NDI_LEGEND\n} from '../../../../ap-map/layers/layer.legends';\nimport {\n ILegendValue\n} from '../../../../stores/map/map.legend.store';\nimport {\n DiagramForHistogramStatisticsService,\n DiagramTableData,\n DiagramTableStatisticObject\n} from '../../services/diagram-for-histogram-statistics.service';\nimport {\n GetRoundNumericService\n} from '../../../../ap-utils/service/get-round-numeric.service';\nimport {Create} from 'ts-tooling';\n\n@Component({\n selector: 'ap-fields-ndi-stats',\n templateUrl: 'fields-ndi-stats.component.html',\n styleUrls: ['fields-ndi-stats.component.scss']\n})\nexport class ApFieldsNdiStatsComponent implements OnInit, AfterContentInit, OnDestroy {\n @Input() public data: IFieldsNdiStatsData[] = [];\n @Input() public title = '';\n @Input() public emptyMessage = '';\n\n public plotBoxTitle: string;\n public dropdownSelectionItems: FieldsNdiStatsDropDownItem[] = [];\n public selectedDropDownItem = new BehaviorSubject(undefined);\n public genericBarsData = new BehaviorSubject[]>([]);\n public plotBoxData = new BehaviorSubject[]>([]);\n public dataPresence = new BehaviorSubject({} as DataPresence);\n\n private _subscriptions: Subscription[] = [];\n\n constructor(private translationService: ApTranslationService,\n private roundNumericService: GetRoundNumericService,\n private diagramForHistogramStatisticService: DiagramForHistogramStatisticsService) {\n }\n\n public ngOnInit(): void {\n this.dropdownSelectionItems = this.getItemsForSelectionDropdown();\n this.selectedDropDownItem.next(this.dropdownSelectionItems[1]);\n }\n\n public ngAfterContentInit(): void {\n this._subscriptions.push(this.selectedDropDownItem.subscribe((selectedItem: FieldsNdiStatsDropDownItem) => {\n const generatedBarsData = this.generateHistogram(selectedItem, this.data);\n const generatedPlotBoxData = this.generateBoxplot(selectedItem, this.data);\n const dataPresence: DataPresence = {\n IsGenericBarsDataPresent: generatedBarsData[0]?.data?.data?.length > 0,\n IsPlotBoxDataPresent: generatedPlotBoxData[0]?.data?.length > 0\n };\n if (dataPresence.IsGenericBarsDataPresent && dataPresence.IsPlotBoxDataPresent) {\n this.setPlotBoxTitle(selectedItem);\n this.genericBarsData.next(generatedBarsData);\n this.plotBoxData.next(generatedPlotBoxData);\n this.emptyMessage = '';\n } else {\n this.emptyMessage = this.getEmptyTitle(selectedItem);\n }\n this.dataPresence.next(dataPresence);\n }));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions?.forEach(x => x?.unsubscribe());\n }\n\n /**\n * Generates bar chart configuration for last sampling date per year\n * @param selectedItem\n * @param items the selected items\n * @private\n */\n private generateHistogram(selectedItem: FieldsNdiStatsDropDownItem,\n items: IFieldsNdiStatsData[]): IChartSet[] | undefined {\n let nDataTitle = '';\n let legendValues: ILegendValue[] = [];\n let filteredItems: IFieldsNdiStatsData[] = [];\n switch (selectedItem.Id) {\n case FieldsNdiStatsDataType.NIndex:\n nDataTitle = 'Global__NDI_Name';\n legendValues = NDI_LEGEND().values as ILegendValue[];\n filteredItems = items;\n break;\n case FieldsNdiStatsDataType.NUptake:\n nDataTitle = 'NUptake';\n filteredItems = this.getNUptakeItems(items);\n const minAndMax = this.getMinAndMaxFromNUptake(filteredItems);\n legendValues = N_UPTAKE_LEGEND(minAndMax).values as ILegendValue[];\n break;\n }\n if (!legendValues || legendValues?.length < 0) {\n return undefined;\n }\n const selectedArea = filteredItems.reduce((sum, item) => sum + Create(item?.AreaHa, 0), 0);\n const selectedFieldCells = filteredItems.reduce((sum, item) => sum + Create(item?.Cells, 0), 0);\n const diagramStatisticsObject = filteredItems?.map(x => {\n const statisticsObject: DiagramTableStatisticObject = {Histogram: []};\n let histogram: { [key: string]: number } | undefined;\n switch (selectedItem.Id) {\n case FieldsNdiStatsDataType.NIndex:\n histogram = x.NIndexHistogram;\n break;\n case FieldsNdiStatsDataType.NUptake:\n histogram = x.NUptakeHistogram;\n break;\n }\n if (histogram) {\n Object.keys(histogram).forEach(key => {\n const histKey = parseFloat(key);\n if (isNaN(histKey)) {\n return;\n }\n statisticsObject.Histogram.push({Key: histKey, Value: histogram[key]});\n });\n }\n return statisticsObject;\n }) ?? [];\n const diagramTableData: DiagramTableData = {\n TotalArea: selectedArea,\n TotalCells: selectedFieldCells,\n Categories: legendValues,\n AxesTitleX: 'Global__Area',\n AxesTitleY: nDataTitle,\n DiagramTitle: `${this.translationService.translate('Global__Area')} / ${this.translationService.translate(nDataTitle)}`,\n RoundAreaNoteToFarmSettings: false,\n Statistics: diagramStatisticsObject\n };\n return this.diagramForHistogramStatisticService.generateDiagram(diagramTableData);\n }\n\n /**\n * Generates bar chart configuration for last sampling date per year\n * @param selectedItem\n * @param items the selected items\n * @private\n */\n private generateBoxplot(selectedItem: FieldsNdiStatsDropDownItem, items: IFieldsNdiStatsData[]): IChartSet[] {\n const boxPlotData: BoxPlotChartDataItem[] = [];\n let nDataTitle = '';\n let filteredItems: IFieldsNdiStatsData[] = [];\n switch (selectedItem.Id) {\n case FieldsNdiStatsDataType.NIndex:\n nDataTitle = 'Global__NDI_Name';\n filteredItems = items;\n break;\n case FieldsNdiStatsDataType.NUptake:\n nDataTitle = 'NUptake';\n filteredItems = this.getNUptakeItems(items);\n break;\n }\n for (const item of filteredItems) {\n let categoryName = item.FieldName;\n if (categoryName?.length > 12) {\n categoryName = `${categoryName.slice(0, 12)}...`;\n }\n let min = 0;\n let max = 0;\n let average = 0;\n switch (selectedItem.Id) {\n case FieldsNdiStatsDataType.NIndex:\n min = item.NIndexMin;\n max = item.NIndexMax;\n average = item.NIndexAvg;\n break;\n case FieldsNdiStatsDataType.NUptake:\n min = item.NUptakeMin;\n max = item.NUptakeMax;\n average = item.NUptakeAvg;\n break;\n }\n const boxPlotItem = new BoxPlotChartDataItem();\n boxPlotItem.category = categoryName;\n boxPlotItem.median = this.roundNumericService.roundAsNumber(average);\n boxPlotItem.lower = this.roundNumericService.roundAsNumber(min);\n boxPlotItem.q1 = this.roundNumericService.roundAsNumber(min);\n boxPlotItem.upper = this.roundNumericService.roundAsNumber(max);\n boxPlotItem.q3 = this.roundNumericService.roundAsNumber(max);\n boxPlotItem.color = '#18CC33';\n boxPlotData.push(boxPlotItem);\n }\n return [{\n axes: {titleX: nDataTitle},\n step: items?.length < 40 ? 1 : Math.ceil(items.length / 40),\n data: boxPlotData\n } as IChartSet];\n }\n\n /**\n * Sets the plot box title based on the selected item type\n * @param selectedItem the currently selected dropdown item\n * @private\n */\n private setPlotBoxTitle(selectedItem: FieldsNdiStatsDropDownItem): void {\n let translatedFirstPart: string;\n switch (selectedItem.Id) {\n case FieldsNdiStatsDataType.NIndex:\n translatedFirstPart = this.translationService.translate('Global__NDI_Name');\n break;\n case FieldsNdiStatsDataType.NUptake:\n translatedFirstPart = this.translationService.translate('NUptake');\n break;\n }\n const translatedSecondPart = this.translationService.translate('Global__Field');\n if (!!translatedFirstPart) {\n this.plotBoxTitle = `${translatedFirstPart} / ${translatedSecondPart}`;\n } else {\n this.plotBoxTitle = translatedSecondPart;\n }\n }\n\n /**\n * Gets empty message title based on selected data type\n * @param selectedItem Currently selected dropdown item\n * @returns Formatted empty message string\n * @private\n */\n private getEmptyTitle(selectedItem: FieldsNdiStatsDropDownItem): string {\n let dataType = '';\n switch (selectedItem.Id) {\n case FieldsNdiStatsDataType.NIndex:\n dataType = this.translationService.translate('Global__NDI_Name');\n break;\n case FieldsNdiStatsDataType.NUptake:\n dataType = this.translationService.translate('NUptake');\n break;\n }\n return `${this.translationService.translate('Nutrients__StatisticsTitle')}\\n${dataType}`;\n }\n\n /**\n * Calculates the minimum and maximum N uptake values from the data\n * @param data array of fields NDI stats data\n * @returns object containing Min and Max values\n * @private\n */\n private getMinAndMaxFromNUptake(data: IFieldsNdiStatsData[]): { Min: number; Max: number } {\n const filteredItems = data.filter(x => Number.isFinite(x.NUptakeMin) && Number.isFinite(x.NUptakeMax));\n const lowestMin = Math.min(...filteredItems.map(item => item.NUptakeMin));\n const highestMax = Math.max(...filteredItems.map(item => item.NUptakeMax));\n return {Min: lowestMin, Max: highestMax};\n }\n\n /**\n * Filters items to only include those with finite N uptake average values\n * @param data array of fields NDI stats data\n * @returns filtered array of items\n * @private\n */\n private getNUptakeItems(data: IFieldsNdiStatsData[]): IFieldsNdiStatsData[] {\n return data.filter(x => Number.isFinite(x.NUptakeAvg));\n }\n\n /**\n * Creates dropdown selection items with translated text\n * @returns array of dropdown items for NDI stats selection\n * @private\n */\n private getItemsForSelectionDropdown(): FieldsNdiStatsDropDownItem[] {\n return [\n {\n Id: FieldsNdiStatsDataType.NIndex,\n Text: this.translationService.translate('Global__NDI_Name')\n },\n {\n Id: FieldsNdiStatsDataType.NUptake,\n Text: this.translationService.translate('NUptake')\n }\n ];\n }\n}\n","import IField = Data.FieldManagement.IField;\nimport IFieldGeom = Data.FieldManagement.IFieldGeom;\n\nexport type DashboardData = {\n UserForename: string;\n General: GeneralFieldsData;\n BaseFertilisation: BaseFertilisationData;\n NFertilization: NFertilizationData;\n Tasks: TasksData;\n BaseData: BaseDataData;\n};\n\nexport type GeneralFieldsData = {\n AreaHa: number;\n CropRotationAreaText: string;\n CropRotationPercent: number;\n FieldsWithSamplingAreaText: string;\n FieldsWithSamplingPercent: number;\n};\n\nexport type BaseFertilisationData = {\n Elements: string[];\n PlanningData: FieldDemandChartData[];\n};\n\nexport type NFertilizationData = {\n FieldsWithApplicationsText: string;\n FieldsWithApplicationsPercent: number;\n LogfilesTotalAmount: number;\n LogfilesPercent: number;\n};\n\nexport type TasksData = {\n OpenFieldsCount: number;\n OpenFieldsAreaHa: number;\n ExportedTasksPercent: number;\n};\n\nexport type BaseDataData = {\n CropTypes: number;\n FertiliserMineral: number;\n FertiliserOrganic: number;\n PlantProtectionProducts: number;\n Machines: number;\n Implements: number;\n Workers: number;\n};\n\nexport type FieldDemandChartData = {\n Key: FieldDemandChartDataKey;\n TranslationKey: string;\n Color: string;\n Data: number[];\n};\n\nexport type FieldDemandData = {\n Need: Elements,\n Remain1: Elements,\n Remain2: Elements,\n};\n\nexport type ElementDemandSum = {\n Initial: number,\n Recorded: number,\n Planned: number,\n};\n\nexport type Elements = {\n P: number,\n K: number,\n Mg: number,\n CaO: number\n};\n\nexport type FieldWithFieldGeom = {\n Field: IField;\n FieldGeom: IFieldGeom | undefined;\n};\n\nexport enum FieldDemandChartDataKey {\n 'Empty' = 0,\n 'Planned' = 1,\n 'Recorded'= 2\n}\n","
\n
\n {{valueText ?? value}}\n
\n
\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'ap-percent-bar',\n templateUrl: 'ap-percent-bar.component.html',\n})\nexport class ApPercentBarComponent {\n @Input() value: number;\n @Input() valueText: string;\n @Input() maximum = 100;\n @Input() showValue = true;\n @Input() containerStyles = this._getContainerStyles();\n @Input() barStyles = this._getBarStyles();\n @Input() enableTooltip = false;\n @Input() tooltipValue = '';\n\n private _getContainerStyles(): any {\n return {\n backgroundColor: 'grey',\n borderRight: 'solid 1px'\n };\n }\n\n private _getBarStyles(): any {\n return {\n backgroundColor: '#b0cb1f',\n color: '#000000'\n };\n }\n}\n","\n
\n

{{ emptyTitle | translate }}

\n
\n
\n\n
\n

{{ 'InfoText_Greetings' | translate }} {{ (data | async).UserForename }}

\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 \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
{{ 'Global__General_Information' | translate }}\n {{ 'Nutrients_Pages__FieldArea' | translate }}\n \n {{ (data | async)?.General.AreaHa | getRoundNumeric }} ha
\n {{ 'Nutrients__CropRotation' | translate }}\n \n \n \n
\n {{ 'InfoText__Fields_With_Sampling' | translate }}\n \n \n \n
\n {{ 'Global__BasicFertilization' | translate }}\n \n
\n (% ha)\n
\n \n \n \n \n \n \n {{ value }}%\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ 'Global__NFertilization' | translate }}\n {{ 'InfoText__Fields_With_Applications' | translate }}\n \n \n \n
\n {{ 'Global__Logfiles' | translate }}\n \n {{ (data | async)?.NFertilization.LogfilesTotalAmount }}
{{ 'Logfiles_booked' | translate }}\n \n
\n {{ 'Base__TaskWriter' | translate }}\n \n {{ 'Open_Tasks' | translate }}\n {{ (data | async)?.Tasks.OpenFieldsCount }}\n {{ 'Global__Fields' | translate }}\n ({{ (data | async)?.Tasks.OpenFieldsAreaHa | getRoundNumeric }} ha)\n
{{ 'Exported_Tasks' | translate }}\n \n
{{ 'Base__BasicData' | translate }}\n {{ 'Global__CropTypes' | translate }}\n \n \n \n
\n {{ 'Settings__Lbl_Menu_Inorganicfertilizers' | translate }}\n \n \n \n
\n {{ 'Settings__Lbl_Menu_Organicfertilizers' | translate }}\n \n \n \n
\n {{ 'InfoText__Plant_Protection_Products' | translate }}\n \n \n \n
\n {{ 'Docu_Ini__Engines' | translate }}\n \n \n \n
\n {{ 'Docu_Ini__Implement' | translate }}\n \n \n \n
\n {{ 'Docu_Ini__Workers' | translate }}\n \n \n \n
\n
\n
\n\n\n
\n \n
\n {{ value }}%\n
\n
\n
\n\n\n {{ value }}\n\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {\n BaseDataData,\n BaseFertilisationData,\n DashboardData,\n ElementDemandSum,\n Elements,\n FieldDemandChartData,\n FieldDemandChartDataKey,\n FieldDemandData,\n FieldWithFieldGeom,\n GeneralFieldsData,\n NFertilizationData,\n TasksData\n} from './dashboard-stats.types';\nimport {FieldStore} from '../../../../stores/farm/field.store';\nimport {NFertilizationStore} from '../../../../stores/n-fertilization/n-fertilization.store';\nimport {LoginStore} from '../../../../stores/login/login.store';\nimport {CampaignYearStore} from '../../../../stores/login/campaignyear.store';\nimport {Create, ObjectFactory} from 'ts-tooling';\nimport {ApElementType} from '../../../../ap-interface/enums/ap-elements-type.enum';\nimport {GetRoundNumericService} from '../../../../ap-utils/service/get-round-numeric.service';\nimport {CropTypeStore} from '../../../../stores/base-data/crop.types.store';\nimport {FertilizerStore} from '../../../../stores/base-data/fertilizer.store';\nimport {CombinedFertilizer} from '../../../../types/common-types';\nimport {DriverStore} from '../../../../stores/docu/driver.store';\nimport {MachineStore} from '../../../../stores/docu/machine.store';\nimport {InstrumentStore} from '../../../../stores/docu/instrument.store';\nimport {PlantProtectionProductStore} from '../../../../stores/base-data/plantprotection.product.store';\nimport {ApGetCropService} from '../../../../stores/services/ap-get-crop.service';\nimport {debounceTime, filter, map} from 'rxjs/operators';\nimport {NFertilizationService} from '../../../../services/data/n-fertilization.service';\nimport {CampaignYearService} from '../../../../services/data/campaign-year.service';\nimport {CropRotationStore} from '../../../../stores/farm/crop.rotation.store';\nimport {RbStore} from '../../../../stores/nutrients/rb.store';\nimport {\n ApNutrientStatisticService\n} from '../../../../nutrient-management/service/ap-nutrient-statistic.service';\nimport {ApNutrientService} from '../../../../ap-utils/service/ap-nutrient.service';\nimport {SoilSampleDates, SoilSampleDateStore} from '../../../../stores/nutrients/soilsampledate.store';\nimport {TranslationStore} from '../../../../stores/translation/translation.store';\nimport {CssValueParser} from '../../../../ap-core/utils/ap-css-value.parser';\nimport {TaskManagementStore} from '../../../../stores/task-management/task-management.store';\nimport {\n FieldNutrientDistributionStore\n} from '../../../../stores/nutrients/field-nutrient-distributions.store';\nimport {SoilSampleDateService} from '../../../../services/data/soil-sample-date.service';\nimport {LogfileService} from '../../../../services/data/logfiles.service';\nimport IGuid = System.IGuid;\nimport IField = Data.FieldManagement.IField;\nimport ICropTypes = Data.BaseData.ICropTypes;\nimport IDriver = Data.DocuContext.Driver.IDriver;\nimport IRbStatistic = Data.Nutrients.IRbStatistic;\nimport IMachine = Data.DocuContext.Machine.IMachine;\nimport ISampleRegion = Data.Nutrients.ISampleRegion;\nimport IDatasetFieldMap = Data.Sensor.IDatasetFieldMap;\nimport ICampaignYear = Data.Authentication.ICampaignYear;\nimport IInstrument = Data.DocuContext.Instrument.IInstrument;\nimport IPlantProtectionProduct = Data.BaseData.IPlantProtectionProduct;\nimport INFertilizationPlanBook = Data.TaskManagement.INFertilizationPlanBook;\nimport ICropRotationAttributes = Data.FieldManagement.ICropRotationAttributes;\nimport ITaskManagementPlanBook = Data.TaskManagement.ITaskManagementPlanBook;\n\n@Component({\n selector: 'ap-dashboard-stats',\n templateUrl: 'dashboard-stats.component.html',\n styleUrls: ['dashboard-stats.component.scss']\n})\nexport class ApDashboardStatsComponent implements OnInit, OnDestroy {\n\n constructor(private rbStore: RbStore,\n private fieldStore: FieldStore,\n private loginStore: LoginStore,\n private driverStore: DriverStore,\n private machineStore: MachineStore,\n private cropTypesStore: CropTypeStore,\n private instrumentStore: InstrumentStore,\n private fertilizerStore: FertilizerStore,\n private translationStore: TranslationStore,\n private campaignYearStore: CampaignYearStore,\n private cropRotationStore: CropRotationStore,\n private taskManagementStore: TaskManagementStore,\n private soilSampleDateStore: SoilSampleDateStore,\n private nFertilizationStore: NFertilizationStore,\n private plantProtectionProductStore: PlantProtectionProductStore,\n private fieldNutrientDistributionStore: FieldNutrientDistributionStore,\n private cropService: ApGetCropService,\n private logfileService: LogfileService,\n private nutrientService: ApNutrientService,\n private campaignYearService: CampaignYearService,\n private roundNumericService: GetRoundNumericService,\n private nFertilizationService: NFertilizationService,\n private soilSampleDatesService: SoilSampleDateService,\n private nutrientStatisticService: ApNutrientStatisticService) {\n }\n\n public data = new BehaviorSubject(undefined);\n public readonly emptyTitle = 'Global__Dashboard';\n public readonly strokeColor = '#212529';\n public inactiveColor = 'rgba(33, 37, 41, 0.4)';\n public readonly borderColor = 'gray';\n public readonly linkTitle = this.translationStore.FindTranslationForSelectedLanguage('InfoText__Follow_Here_To_Fill_Up_Bars');\n\n private _subscriptions: Subscription[] = [];\n private readonly _defaultElementCategory: Elements = {P: 0, K: 0, Mg: 0, CaO: 0};\n private readonly _greenStatusColor = CssValueParser.getCssVariable('--accent-color');\n private readonly _yellowStatusColor = CssValueParser.getCssVariable('--warning-color');\n private readonly _redStatusColor = CssValueParser.getCssVariable('--error-color');\n private readonly _haName = this.translationStore.FindTranslationForSelectedLanguage('Global__Unit_ha');\n\n public ngOnInit(): void {\n this._subscriptions.push(combineLatest([\n this.campaignYearStore.SelectedCampaignYear$,\n this.fieldStore.Fields$\n ]).subscribe(([selectedYear, fields]) => {\n // TODO: Remove force reload when mechanism of clearing data will be introduced after changing selected year or farm\n this._loadData(fields, selectedYear, true);\n }));\n this._subscriptions.push(combineLatest([\n this.loginStore.User$, this.campaignYearStore.SelectedCampaignYear$, this.fieldStore.Fields$,\n this.fieldNutrientDistributionStore.SampleRegions$, this.rbStore.RbStatistic$, this.cropRotationStore.GetAttributes$,\n this.nFertilizationStore.PlanBooks$, this.nFertilizationStore.Logfiles$, this.taskManagementStore.Tasks$,\n this.soilSampleDateStore.Dates$, this.cropTypesStore.CropTypes$, this.plantProtectionProductStore.Products$,\n this.fertilizerStore.Fertilizer$, this.driverStore.Drivers$, this.machineStore.Machines$, this.instrumentStore.Instruments$,\n combineLatest([\n this.rbStore.Loading$, this.nFertilizationStore.Loading$,\n this.nFertilizationStore.LogfilesLoading$, this.plantProtectionProductStore.Loading$\n ]).pipe(\n map(loadingItems => loadingItems.some(x => x))\n )\n ]).pipe(\n debounceTime(500),\n filter(([, , , , , , , , , , , , , , , , loading]) => !loading)\n ).subscribe(([user, selectedCampaignYear, fields, sampleRegions,\n rbStatistics, cropRotationAttributes,\n nFertilizationPlanBooks, nFertilizationLogfiles, tasks,\n soilSampleDates, cropTypes, plantProtectionProducts,\n fertilizers, drivers, machines, instruments]) => {\n const fieldsWithFieldGeoms = fields.map(field => this._getFieldWithFieldGeom(field, selectedCampaignYear));\n const campaignYearRange = this.campaignYearService.getCampaignYearRange(selectedCampaignYear.Year);\n const filteredNFertPlanBooks = nFertilizationPlanBooks?.filter(x => {\n const applicationDate = new Date(x.ApplicationDate);\n return !x.DeletedAt\n && this.campaignYearService.isCampaignYearIntersects(applicationDate, applicationDate, campaignYearRange);\n }) ?? [];\n const filteredNFertLogfiles = nFertilizationLogfiles?.filter(x => {\n const dataSet = x?.DataSet;\n const dataSetCreated = new Date(dataSet?.Created);\n return dataSet\n && this.campaignYearService.isCampaignYearIntersects(dataSetCreated, dataSetCreated, campaignYearRange);\n }) ?? [];\n const filteredTasks = tasks?.map(x => x.PlanBooks).flat().filter(x => {\n const applDate = new Date(x.ApplDate);\n return this.campaignYearService.isCampaignYearIntersects(applDate, applDate, campaignYearRange);\n }) ?? [];\n this.data.next({\n UserForename: user.Forename,\n General: this._generateGeneral(fieldsWithFieldGeoms, soilSampleDates),\n BaseFertilisation: this._generateBaseFertilisationData(fieldsWithFieldGeoms, rbStatistics,\n cropRotationAttributes, soilSampleDates, sampleRegions),\n NFertilization: this._generaNFertilization(fieldsWithFieldGeoms, filteredNFertPlanBooks, filteredNFertLogfiles),\n Tasks: this._generateTasks(fieldsWithFieldGeoms, filteredTasks),\n BaseData: this._generateBaseData(cropTypes, plantProtectionProducts, fertilizers, drivers, machines, instruments)\n });\n }\n ));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.forEach(x => x?.unsubscribe());\n }\n\n public setBarColorDependingOnValue(value: number): string {\n switch (true) {\n case value >= 90:\n return this._greenStatusColor;\n case value >= 50 && value <= 90:\n return this._yellowStatusColor;\n default:\n return this._redStatusColor;\n }\n }\n\n public setStylesForAmountValues(value: number): any {\n if (value <= 0) {\n return {\n color: this._redStatusColor,\n fontWeight: 'bold'\n };\n }\n return {\n color: this.strokeColor,\n };\n }\n\n //#region \"Generate data\"\n\n private _generateGeneral(fieldsWithFieldGeoms: FieldWithFieldGeom[],\n soilSampleDates: SoilSampleDates): GeneralFieldsData {\n const totalFieldsAreaHa = this._getFieldsArea(fieldsWithFieldGeoms);\n const fieldsWithCropRotation = fieldsWithFieldGeoms?.filter(fieldWithFieldGeom => {\n const fieldCrop = this.cropService.getFieldCrop(fieldWithFieldGeom.Field);\n const mainCrop = this.cropService.getCropType(fieldCrop, true);\n const secondCrop = this.cropService.getCropType(fieldCrop, false);\n return mainCrop || secondCrop;\n }) ?? [];\n const cropRotationFieldsAreaHa = this._getFieldsArea(fieldsWithCropRotation);\n const validFieldsWithFieldGeoms = this._getFieldsWithFieldGeomsWithValidSoilSampleDates(fieldsWithFieldGeoms, soilSampleDates);\n let soilSampleFieldsAreaHa = 0;\n if (Object.keys(soilSampleDates).length > 0) {\n soilSampleFieldsAreaHa = validFieldsWithFieldGeoms?.reduce((totalArea, fieldWithFieldGeom) => {\n const sampleDateObject = soilSampleDates[fieldWithFieldGeom.Field.Id as string];\n if (sampleDateObject) {\n return totalArea + Create(fieldWithFieldGeom.FieldGeom?.AreaHa, 0);\n }\n return totalArea;\n }, 0) ?? 0;\n }\n return {\n AreaHa: totalFieldsAreaHa,\n CropRotationAreaText: `${this.roundNumericService.roundAsNumber(cropRotationFieldsAreaHa, 2)} ${this._haName}`,\n CropRotationPercent: this._getPercent(cropRotationFieldsAreaHa, totalFieldsAreaHa),\n FieldsWithSamplingAreaText: `${this.roundNumericService.roundAsNumber(soilSampleFieldsAreaHa, 2)} ${this._haName}`,\n FieldsWithSamplingPercent: this._getPercent(soilSampleFieldsAreaHa, totalFieldsAreaHa)\n };\n }\n\n private _generateBaseFertilisationData(fieldsWithFieldGeoms: FieldWithFieldGeom[], rbStatistics: IRbStatistic[],\n cropRotationAttributes: ICropRotationAttributes[],\n soilSampleDates: SoilSampleDates,\n sampleRegions: ISampleRegion[]): BaseFertilisationData {\n const elements = Object.keys(ApElementType).filter(k => isNaN(Number(k)) && k !== 'N');\n const fieldsCropRotationDemand = fieldsWithFieldGeoms.filter(fieldGeom => fieldGeom)\n .map(item => {\n const rbResult = rbStatistics.find(x => x?.FieldGeomId === item.FieldGeom?.Id);\n const cropRotationAttribute = cropRotationAttributes.find(x => x?.FieldGeomId === item.FieldGeom?.Id);\n const sampleDateObject = Object.keys(soilSampleDates).length > 0\n ? soilSampleDates[item.Field.Id as string]\n : undefined;\n const status = this.nutrientService.getGDStatusByCrAttribute(sampleDateObject, sampleRegions, cropRotationAttribute);\n const area = item.FieldGeom?.AreaHa ?? 0;\n const fieldCropRotationDemand: FieldDemandData = {\n Need: status[0] === 1 ? {\n P: this.roundNumericService.roundAsNumber((cropRotationAttribute?.CropRotationNeed?.CropRotationNeedP ?? 0)) * area,\n K: this.roundNumericService.roundAsNumber((cropRotationAttribute?.CropRotationNeed?.CropRotationNeedK ?? 0)) * area,\n Mg: this.roundNumericService.roundAsNumber((cropRotationAttribute?.CropRotationNeed?.CropRotationNeedMg ?? 0)) * area,\n CaO: this.roundNumericService.roundAsNumber((cropRotationAttribute?.CropRotationNeed?.CropRotationNeedCaO ?? 0)) * area\n } : this._defaultElementCategory,\n Remain1: status[0] === 1 ? {\n P: this._getAverageRb(0, rbResult) * area,\n K: this._getAverageRb(1, rbResult) * area,\n Mg: this._getAverageRb(2, rbResult) * area,\n CaO: this._getAverageRb(3, rbResult) * area\n } : this._defaultElementCategory,\n Remain2: status[0] === 1 ? {\n P: this._getAverageRb(4, rbResult) * area,\n K: this._getAverageRb(5, rbResult) * area,\n Mg: this._getAverageRb(6, rbResult) * area,\n CaO: this._getAverageRb(7, rbResult) * area\n } : this._defaultElementCategory\n };\n return fieldCropRotationDemand;\n });\n const statisticData = this._getStatisticData(elements.length);\n const restStatisticItem = statisticData.find(x => x.Key === FieldDemandChartDataKey.Empty);\n const recordedStatisticItem = statisticData.find(x => x.Key === FieldDemandChartDataKey.Recorded);\n const plannedStatisticItem = statisticData.find(x => x.Key === FieldDemandChartDataKey.Planned);\n let index = 0;\n elements.forEach(element => {\n const elementDemand = fieldsCropRotationDemand.reduce((current, previous) => {\n current.Initial += previous.Need[element];\n current.Recorded += previous.Remain1[element];\n current.Planned += previous.Remain2[element];\n return current;\n }, {Initial: 0, Recorded: 0, Planned: 0} as ElementDemandSum);\n const recorded = (elementDemand.Initial - elementDemand.Recorded) / elementDemand.Initial;\n const planned = ((elementDemand.Initial - elementDemand.Planned) / elementDemand.Initial) - recorded;\n const rest = restStatisticItem.Data[index] = elementDemand.Planned / elementDemand.Initial;\n recordedStatisticItem.Data[index] = this.roundNumericService.roundAsNumber(recorded * 100, 2);\n plannedStatisticItem.Data[index] = this.roundNumericService.roundAsNumber(planned * 100, 2);\n restStatisticItem.Data[index] = this.roundNumericService.roundAsNumber(rest * 100, 2);\n index += 1;\n });\n return {\n Elements: elements,\n PlanningData: statisticData\n };\n }\n\n private _generaNFertilization(fieldsWithFieldGeoms: FieldWithFieldGeom[], planBooks: INFertilizationPlanBook[],\n logFiles: IDatasetFieldMap[]): NFertilizationData {\n const filteredLogfiles = logFiles.filter(logfile => logfile?.DataSet?.DataSetType?.DataSetName === 'Yara N-Sensor')\n .map(logfile => {\n const copiedLogfile = ObjectFactory.Copy(logfile);\n copiedLogfile.NPlanBook = copiedLogfile.NPlanBook ?? this.logfileService.getPlanning(copiedLogfile, planBooks);\n return copiedLogfile;\n });\n const noneDeclinedLogFilesWithPlanBooks = filteredLogfiles.filter(x => x.Status !== -1);\n const recordedLogFilesWithPlanBooks = filteredLogfiles.filter(x => x?.Status === 1 && x?.NPlanBook?.BookedAt);\n const fieldsWithApplication: FieldWithFieldGeom[] = [];\n planBooks.filter(x => x.BookedAt).forEach(planBook => {\n const application = this.nFertilizationService.getNApplications(planBook.RasterStatistics);\n const fieldWithFieldGeom = fieldsWithFieldGeoms.find(item => item.Field.Id === planBook.FieldId);\n if (application && fieldWithFieldGeom && !fieldsWithApplication.some(x => x.Field.Id === planBook.FieldId)) {\n fieldsWithApplication.push(fieldWithFieldGeom);\n }\n });\n const totalArea = this._getFieldsArea(fieldsWithFieldGeoms);\n const fieldsWithApplicationsArea = this._getFieldsArea(fieldsWithApplication);\n return {\n FieldsWithApplicationsText: `${this.roundNumericService.roundAsNumber(fieldsWithApplicationsArea, 2)} ${this._haName}`,\n FieldsWithApplicationsPercent: this._getPercent(fieldsWithApplicationsArea, totalArea),\n LogfilesTotalAmount: noneDeclinedLogFilesWithPlanBooks.length,\n LogfilesPercent: this._getPercent(recordedLogFilesWithPlanBooks.length, noneDeclinedLogFilesWithPlanBooks.length)\n };\n }\n\n private _generateTasks(fieldsWithFieldGeoms: FieldWithFieldGeom[], tasks: ITaskManagementPlanBook[]): TasksData {\n const plannedFieldIds: IGuid[] = tasks.filter(x => !x.BookedAt).map(x => x.FieldId);\n const openedFields = plannedFieldIds.map(fieldId => fieldsWithFieldGeoms.find(x => x.Field.Id === fieldId));\n const openedFieldsArea = this._getFieldsArea(openedFields);\n const exportedTasks = tasks.filter(x => x.ExportedAt);\n return {\n OpenFieldsCount: openedFields.length,\n OpenFieldsAreaHa: openedFieldsArea,\n ExportedTasksPercent: this._getPercent(exportedTasks.length, tasks.length)\n };\n }\n\n private _generateBaseData(cropTypes: ICropTypes[], plantProtectionProducts: IPlantProtectionProduct[],\n fertilizers: CombinedFertilizer[], drivers: IDriver[],\n machines: IMachine[], instruments: IInstrument[]): BaseDataData {\n return {\n CropTypes: cropTypes?.filter(x => !x.DeletedAt && x.Selected)?.length ?? 0,\n FertiliserMineral: fertilizers?.filter(x => !x.DeletedAt && !x.IsOrganic && x.Selectable)?.length ?? 0,\n FertiliserOrganic: fertilizers?.filter(x => !x.DeletedAt && x.IsOrganic && x.Selectable)?.length ?? 0,\n PlantProtectionProducts: plantProtectionProducts?.filter(x => !x.DeletedAt && x.Selectable)?.length ?? 0,\n Machines: machines?.filter(x => !x.DeletedAt)?.length ?? 0,\n Implements: instruments?.filter(x => !x.DeletedAt)?.length ?? 0,\n Workers: drivers?.filter(x => !x.DeletedAt)?.length ?? 0\n };\n }\n\n //#endregion \"Generate data\"\n\n //#region \"Private methods\"\n\n private _loadData(fields: IField[], selectedCampaignYear: ICampaignYear, forceReload: boolean): void {\n if (!fields || fields.length <= 0) {\n return;\n }\n const rbStatistics = this.rbStore.RbStatistic;\n const plantProtectionProducts = this.plantProtectionProductStore.Products;\n const nFertilizationPlanBooks = this.nFertilizationStore.PlanBooks;\n const nFertilizationLogfiles = this.nFertilizationStore.Logfiles;\n const tasks = this.taskManagementStore.Tasks;\n if (!rbStatistics || rbStatistics.length <= 0 || forceReload) {\n const fieldsWithFieldGeoms = fields.map(field => this._getFieldWithFieldGeom(field, selectedCampaignYear));\n const fieldGeomsId = fieldsWithFieldGeoms.filter(x => x.FieldGeom)\n .map(x => x.FieldGeom.Id.toString());\n this.rbStore.loadRb(fieldGeomsId);\n }\n if (!plantProtectionProducts || plantProtectionProducts.length <= 0 || forceReload) {\n this.plantProtectionProductStore.loadPlantProtectionProducts(true, false);\n }\n if (!nFertilizationPlanBooks || nFertilizationPlanBooks.length <= 0 || forceReload) {\n this.nFertilizationStore.LoadNFertilizationPlanningSummaries();\n }\n if (!nFertilizationLogfiles || nFertilizationLogfiles.length <= 0 || forceReload) {\n this.nFertilizationStore.LoadLogfiles();\n }\n if (!tasks || tasks.length <= 0 || forceReload) {\n this.taskManagementStore.loadTaskManagementPlanSummaries();\n }\n }\n\n private _getAverageRb(bandIdX: number, statistic: IRbStatistic): number {\n const averageRb = this.nutrientStatisticService.getAverageRb(bandIdX, statistic);\n if (!averageRb || averageRb === '-') {\n return 0;\n }\n return this.roundNumericService.roundAsNumber(averageRb, 5);\n }\n\n private _getFieldsArea(fieldsWithFieldGeoms: FieldWithFieldGeom[]): number {\n if (!fieldsWithFieldGeoms || fieldsWithFieldGeoms.length <= 0) {\n return 0;\n }\n return fieldsWithFieldGeoms.reduce((totalAreaHa, fieldWithFieldGeom) => {\n if (!fieldWithFieldGeom?.FieldGeom) {\n return totalAreaHa;\n }\n return totalAreaHa + Create(fieldWithFieldGeom.FieldGeom.AreaHa, 0);\n }, 0);\n }\n\n private _getFieldsWithFieldGeomsWithValidSoilSampleDates(fieldsWithFieldGeoms: FieldWithFieldGeom[],\n soilSampleDates: SoilSampleDates): FieldWithFieldGeom[] {\n const fields = fieldsWithFieldGeoms.map(x => x.Field);\n const fieldsWithValidSoilSampleDates = this.soilSampleDatesService.getFieldsWithValidSoilSampleDate(fields,\n soilSampleDates);\n return fieldsWithFieldGeoms.filter(x => fieldsWithValidSoilSampleDates.some(y => y.Id === x.Field.Id));\n }\n\n private _getPercent(value: number, totalAmount: number): number {\n if (!value || !totalAmount) {\n return 0;\n }\n return this.roundNumericService.roundAsNumber(value / totalAmount * 100, 2);\n }\n\n private _getStatisticData(elementsCount: number): FieldDemandChartData[] {\n return [\n {\n Key: FieldDemandChartDataKey.Recorded,\n TranslationKey: 'Nutrients__Booked',\n Color: CssValueParser.getCssVariable('--accent-color'),\n Data: Array.from({length: elementsCount}, (_, _1) => 0)\n },\n {\n Key: FieldDemandChartDataKey.Planned,\n TranslationKey: 'Nutrients__Scheduled',\n Color: CssValueParser.getCssVariable('--warning-color'),\n Data: Array.from({length: elementsCount}, (_, _1) => 0)\n },\n {\n Key: FieldDemandChartDataKey.Empty,\n TranslationKey: '',\n Color: CssValueParser.getCssVariable('--unknown-color'),\n Data: Array.from({length: elementsCount}, (_, _1) => 0)\n }\n ];\n }\n\n private _getFieldWithFieldGeom(field: IField, selectedCampaignYear: ICampaignYear): FieldWithFieldGeom {\n const fieldGeom = this.fieldStore.getFieldGeom(field, selectedCampaignYear);\n return {\n Field: field,\n FieldGeom: fieldGeom ?? undefined\n };\n }\n\n //#endregion \"Private methods\"\n}\n","\n
\n

{{emptyMessage | translate}}

\n
\n
\n\n
\n 0 && !!title\">\n

{{ title | translate }}

\n
\n \n
{{tooltipText}}
\n 1 ? {column:{gap:0, spacing: 0}} : {}\"\n [pannable]=\"chartConfig.pannable\"\n (seriesHover)=\"onSeriesHover($event, chartConfig)\"\n (seriesLeave)=\"onSeriesLeave()\">\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","import {Component, Input} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {GenericChartConfig, GenericXAxisConfig, GenericYAxisConfig} from './ap-generic-chart.types';\nimport {ChartComponent, LegendItemClickEvent, SeriesHoverEvent} from '@progress/kendo-angular-charts';\nimport {StatisticStore} from '../../../stores/statistic/statistic.store';\n\n/**\n * Generic chart allows display of\n * - multiple charts\n * - each chart with multiple data series\n * - each series may have a different type (line, column, point, ...)\n * - multiple value axes to display complex data connections\n * https://www.telerik.com/kendo-angular-ui/components/charts/elements/axes\n */\n@Component({\n selector: 'ap-generic-chart',\n templateUrl: 'ap-generic-chart.component.html',\n styleUrls: ['ap-generic-chart.component.scss']\n})\nexport class ApGenericChartComponent {\n @Input() chartConfigs: Array = [];\n @Input() title = '';\n @Input() emptyMessage = '';\n public strokeColor = 'rgba(33, 37, 41, 1)';\n public inactiveColor = 'rgba(33, 37, 41, 0.4)';\n public backgroundColor = '#ffffffbf';\n public isTooltipVisible = false;\n public tooltipX = 0;\n public tooltipY = 0;\n public tooltipText = '';\n\n constructor(private sanitizer: DomSanitizer,\n private statisticStore: StatisticStore) {\n }\n\n /**\n * method to retrieve content of the tooltip (if defined)\n * @param dataItem the current bar dataItem\n * @param chart the current chart\n */\n public getTooltip(dataItem: any, chart: GenericChartConfig): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(\n chart?.tooltipDelegate ? chart?.tooltipDelegate(dataItem, chart) : dataItem?.value ?? '');\n }\n\n /**\n * method to retrieve content of the note (if defined)\n * @param chartConfig the current chart\n */\n public getNote(chartConfig: GenericChartConfig): (p1: any) => string {\n return (item: any) => {\n if (item && chartConfig?.noteDelegate) {\n return chartConfig.noteDelegate(item?.dataItem, chartConfig);\n } else if (item && chartConfig?.noteField !== '') {\n return item?.dataItem[chartConfig?.noteField];\n }\n return '';\n };\n }\n\n /**\n * method to retrieve label of value axis (y-axis)\n * @param yAxisConfig the current yAxisConfig\n */\n public getLabel(yAxisConfig: GenericYAxisConfig): (p1: any) => string {\n return (item: any) => {\n if (item && yAxisConfig?.labelDelegate) {\n return yAxisConfig.labelDelegate(item?.value);\n }\n return item?.value?.toString() ?? '';\n };\n }\n\n /**\n * method to retrieve label of category axis (x-axis)\n * @param xAxisConfig the current xAxisConfig\n * @param chartConfig the current chartConfig\n */\n public getXAxisLabel(xAxisConfig: GenericXAxisConfig, chartConfig: GenericChartConfig): (p1: any) => string {\n return (item: any) => {\n if (item && xAxisConfig?.labelDelegate) {\n return xAxisConfig.labelDelegate(item?.text, item?.dataItem, chartConfig);\n }\n return item?.text?.toString() ?? '';\n };\n }\n\n /**\n * Calculates the chart's height depending on the amount of charts to be displayed.\n */\n public calculateChartHeight(): number {\n // calculate height of the chart. If it is a single chart we are checking if the statistic\n // tab shows anything else (data.length > 1) => Then the chart will use 100% of the remaining space.\n // If only the chart is shown, its height is decreased to 75% for aesthetic reasons :)\n switch (this.chartConfigs?.length) {\n case 1: return this.statisticStore.Listen(s => s.data).getValue()?.length > 1 ? 90 : 75;\n case 2: return 50;\n default: return 33;\n }\n }\n\n /**\n * Handles click event on a legend item to show/hide series\n * @param event the click eventArgs\n * @param chartConfig the current chart's config\n */\n public onLegendItemClick(event: LegendItemClickEvent, chartConfig: GenericChartConfig): void {\n // Prevent the default behavior (toggling only one series)\n event.preventDefault();\n\n // In case we have multiple series for the same legend item,\n // we want to disable them all at once\n for (const seriesConfig of chartConfig.seriesConfigs) {\n if (seriesConfig.name === event.text) {\n seriesConfig.visible = !seriesConfig.visible;\n }\n }\n }\n\n /**\n * EventHandler for seriesHover event which creates a custom tooltip\n * because kendo tooltip has a bug and is not shown (or flashing) in\n * case of scatter-charts or if the chart has visible notes\n * @param e SeriesHover eventArgs\n * @param chartConfig the current chartConfig\n */\n public onSeriesHover(e: SeriesHoverEvent, chartConfig: GenericChartConfig): void {\n if (!chartConfig || !chartConfig.tooltipDelegate) {\n return;\n }\n this.tooltipText = chartConfig?.tooltipDelegate(e.dataItem, chartConfig);\n const chartComponent = e?.sender as ChartComponent;\n const chartElement = chartComponent?.surfaceElement?.nativeElement as HTMLElement;\n const chartBoundingBox = chartElement?.getBoundingClientRect();\n this.tooltipX = e?.originalEvent?.clientX - chartBoundingBox?.left + 15;\n this.tooltipY = e?.originalEvent?.clientY - chartBoundingBox?.top + 15;\n this.isTooltipVisible = true;\n }\n\n /**\n * Hide tooltip when mouse leaves series\n */\n public onSeriesLeave(): void {\n this.isTooltipVisible = false;\n }\n}\n","import {AfterContentInit, Component, Input} from '@angular/core';\nimport {ApPpPlanningWizardOverviewStatsItem} from './types/ap-pp-planning-wizard-overview-stats.types';\nimport {ApDynGridColumnConfigBase} from '../../../../ap-dyngrids/config/ap-dyn-grid-column-config-base';\nimport {Observable, of} from 'rxjs';\nimport {ApDynGridPropertyColumnConfig} from '../../../../ap-dyngrids/config/ap-dyn-grid-property-column-config';\nimport {nameOf} from '../../../../ap-core/utils/ap-name-of';\n\n@Component({\n selector: 'ap-pp-planning-wizard-overview-stats',\n templateUrl: 'ap-pp-planning-wizard-overview-stats.component.html',\n styleUrls: ['ap-pp-planning-wizard-overview-stats.component.scss']\n})\nexport class ApPpPlanningWizardOverviewStatsComponent implements AfterContentInit {\n @Input() public data: ApPpPlanningWizardOverviewStatsItem[];\n @Input() public title: string;\n @Input() public emptyMessage = '';\n\n public statColumns: ApDynGridColumnConfigBase[] = [];\n public statItems$: Observable;\n\n public ngAfterContentInit(): void {\n if (!this.data || this.data.length <= 0) {\n return;\n }\n this.statColumns = this.getStatColumns();\n this.statItems$ = of(this.data);\n }\n\n private getStatColumns(): ApDynGridColumnConfigBase[] {\n return [\n new ApDynGridPropertyColumnConfig({\n field: nameOf('key'),\n style: {'font-weight': 600, 'background-color': 'silver'},\n cssClass: 'left',\n width: 100,\n filterable: false,\n sortable: false\n }),\n new ApDynGridPropertyColumnConfig({\n field: nameOf('value'),\n cssClass: 'left',\n filterable: false,\n sortable: false,\n multiline: true\n })];\n }\n}\n","
\n

{{ title | translate }}

\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","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport {ApStatsType} from '../../ap-interface';\nimport {IStatisticStoreItem, StatisticStore} from '../../stores/statistic/statistic.store';\nimport {StatisticChartAreaService} from '../services/statistic-chart-area.service';\nimport {Subscription} from 'rxjs';\n\n/**\n * Component for the statistics\n */\n@Component({\n selector: 'ap-statistics',\n templateUrl: 'ap-statistics.component.html',\n styleUrls: ['ap-statistics.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ApStatisticsComponent implements OnInit, AfterContentInit, OnDestroy {\n @ViewChild('apStatisticArea', {static: true})\n public apChartArea: ElementRef;\n public apChartType = ApStatsType;\n public data$ = this.statisticStore.Data$;\n public loading$ = this.statisticStore.Loading$;\n public selection$ = this.statisticStore.Selection$;\n public selected$ = this.statisticStore.SelectedValue$;\n public statisticsStyles: object;\n\n private _observer: ResizeObserver = null;\n private _subscriptions: Subscription[] = [];\n\n constructor(private statisticStore: StatisticStore,\n private statisticChartAreaService: StatisticChartAreaService) {\n }\n\n public ngOnInit(): void {\n this._setStatisticsStyles();\n }\n\n public ngAfterContentInit(): void {\n this._observer = new ResizeObserver((entries) => {\n const entry = entries.FirstOrDefault();\n if (!entry) {\n return;\n }\n if (this.statisticChartAreaService.chartAreaWidth.getValue() !== entry.target.clientWidth) {\n this.statisticChartAreaService.updateChartWidth(entry.target.clientWidth);\n }\n if (this.statisticChartAreaService.chartAreaHeight.getValue() !== entry.target.clientHeight) {\n this.statisticChartAreaService.updateChartHeight(entry.target.clientHeight);\n }\n });\n if (!this.apChartArea?.nativeElement) {\n console.warn('missing chart area div');\n return;\n }\n this._observer.observe(this.apChartArea.nativeElement);\n this._subscriptions.push(this.data$.subscribe(data => {\n if (data) {\n this._setStatisticsStyles();\n }\n }));\n }\n\n public ngOnDestroy(): void {\n if (!this.apChartArea?.nativeElement) {\n return;\n }\n this._observer.unobserve(this.apChartArea.nativeElement);\n this._subscriptions.forEach(x => x.unsubscribe());\n }\n\n public yearChange(e: { text: string; value: number }): void {\n this.statisticStore.selectedValueChange.emit(e);\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize(): void {\n this._setStatisticsStyles();\n }\n\n private _setStatisticsStyles(): void {\n const statisticItems = this.data$?.value;\n const styleObject = {};\n styleObject['width'] = '100%';\n styleObject['position'] = 'relative';\n styleObject['display'] = 'flex';\n styleObject['flex-direction'] = 'column';\n styleObject['height'] = '100%';\n styleObject['overflow-y'] = 'hidden';\n if (this._isNeedEnableScroll(statisticItems)) {\n styleObject['overflow-y'] = 'auto';\n }\n this.statisticsStyles = styleObject;\n }\n\n public getStatisticItemStyle(chart: IStatisticStoreItem): {} {\n // custom height for some statistics\n // e.g. PP planning wizard overview stat should not take 50% but only as much as it needs\n if (chart?.type === ApStatsType.PpPlanningWizardOverviewStats) {\n return {};\n }\n const statisticItems = this.data$?.value;\n const itemCount = statisticItems?.length;\n const styleObject = {};\n if (!itemCount || itemCount === 0) {\n styleObject['height'] = '100vH';\n return styleObject;\n }\n styleObject['height'] = `${(100 / itemCount)}vH`;\n return styleObject;\n }\n\n private _isNeedEnableScroll(statisticItems: any[]): boolean {\n return statisticItems.length === 1\n && (statisticItems[0].type === ApStatsType.BaseFertStats\n || statisticItems[0].type === ApStatsType.PlanningWizardOverviewStats\n || statisticItems[0].type === ApStatsType.NFertilizationLogfileStats\n || statisticItems[0].type === ApStatsType.NFertilizationNNeedStats\n || statisticItems[0].type === ApStatsType.FieldScanDataTableStats\n || statisticItems[0].type === ApStatsType.FieldsCropRotationStats\n || statisticItems[0].type === ApStatsType.DashboardStats);\n }\n}\n","import {IAction, IApInvokerArguments} from '../../interfaces';\nimport IHelpArticles = Data.Common.IHelpArticles;\n\nexport enum HelpArticlesActions {\n HELP_ARTICLES_LOAD = '[helparticle] load',\n HELP_ARTICLES_LOAD_SUCCESS = '[helparticle] load success',\n HELP_ARTICLES_SAVE = '[helparticle] save',\n}\n\nexport class HelpArticlesLoad implements IAction {\n readonly type = HelpArticlesActions.HELP_ARTICLES_LOAD;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n\nexport class HelpArticlesLoadSuccess implements IAction {\n readonly type = HelpArticlesActions.HELP_ARTICLES_LOAD_SUCCESS;\n\n constructor(public payload: IHelpArticles) {\n }\n}\n\nexport class HelpArticlesSave implements IAction {\n readonly type = HelpArticlesActions.HELP_ARTICLES_SAVE;\n\n constructor(public payload: IApInvokerArguments[]) {\n }\n}\n","import {IStateStore} from '../../ap-interface';\nimport {Injectable} from '@angular/core';\nimport {Store} from '../index';\nimport {NetTypes} from 'invoker-transport';\nimport {\n HelpArticlesLoad,\n HelpArticlesLoadSuccess,\n HelpArticlesSave\n} from '../../../../projects/invoker-transport/src/lib/actions/common/help-articles.action';\nimport IHelpArticles = Data.Common.IHelpArticles;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\ninterface IHelpArticlesStore extends IStateStore {\n latestHelpArticle: IHelpArticles;\n latestTargetComponent: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class HelpArticlesStore extends Store {\n constructor(public backend: ApSignalrService) {\n super(backend, {\n loaded: false,\n loading: false,\n data: [],\n latestHelpArticle: null,\n latestTargetComponent: null\n });\n\n backend.registerObservable(HelpArticlesLoadSuccess).subscribe(d => {\n super.Mutate(s => s.latestHelpArticle, () => d.Data);\n super.SetLoadFinishState();\n });\n }\n\n public loadHelpArticle(targetComponent: string, languageKey: string): void {\n super.Mutate(s => s.latestHelpArticle, () => null);\n super.Mutate(s => s.latestTargetComponent, () => targetComponent);\n super.Mutate(s => s.data, () => []);\n this.DispatchBackend(new HelpArticlesLoad([\n {Name: 'targetComponent', Type: NetTypes.STRING, Value: targetComponent},\n {Name: 'languageKey', Type: NetTypes.STRING, Value: languageKey}\n ]));\n }\n\n public saveHelpArticle(targetComponent: string, languageKey: string, contentHtml: string): void {\n this.DispatchBackend(new HelpArticlesSave([\n {Name: 'targetComponent', Type: NetTypes.STRING, Value: targetComponent},\n {Name: 'languageKey', Type: NetTypes.STRING, Value: languageKey},\n {Name: 'contentHtml', Type: NetTypes.STRING, Value: contentHtml}\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnDestroy, OnInit,\n ViewChild\n} from '@angular/core';\nimport {\n RouterStore\n} from '../../stores/router/router.store';\nimport {\n HttpClient\n} from '@angular/common/http';\nimport {\n EditorComponent,\n Schema\n} from '@progress/kendo-angular-editor';\nimport {\n HelpArticlesStore\n} from '../../stores/common/help-articles.store';\nimport {\n LanguageStore\n} from '../../stores/translation/language.store';\nimport {combineLatest, Subscription} from 'rxjs';\nimport {debounceTime, filter} from 'rxjs/operators';\nimport {\n FormStore\n} from '../../stores/layout/form.store';\nimport {\n ApVisibleStates\n} from '../../ap-interface';\nimport {\n ApEditorSchema\n} from './ap-editor.schema';\nimport {\n FileState,\n UploadEvent\n} from '@progress/kendo-angular-upload';\nimport {\n DialogService\n} from '@progress/kendo-angular-dialog';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {\n ModalDialogStore\n} from '../../stores/dialog/modal.dialog.store';\nimport {\n IModalDialogData,\n ModalDialogButtonDisable\n} from '../../ap-interface/interfaces/ap-modaldialog-data.interface';\nimport {\n ApDynformsConfigFieldset\n} from '../../ap-dynforms/config/ap-dynforms-config-fieldset';\nimport {\n ApDynformsConfigTextbox, ApDynformsConfigTextboxType\n} from '../../ap-dynforms/config/ap-dynforms-config-textbox';\nimport {\n ApDynformsValidator\n} from '../../ap-dynforms/ap-dynforms-validator';\nimport {Validators} from '@angular/forms';\nimport {\n ApDynformsConfigUpload\n} from '../../ap-dynforms/config/ap-dynforms-config-upload';\nimport {\n ApDynformsConfigPlaceholder\n} from '../../ap-dynforms/config/ap-dynforms-config-placeholder';\nimport {\n ApPermissions\n} from 'invoker-transport';\nimport {\n GetPermissionPipe\n} from '../../ap-permission/pipes/get-permission.pipe';\nimport {\n Plugin\n} from '@progress/kendo-editor-common';\nimport {\n ApHelpImageUpload\n} from './ap-help-image.upload';\nimport ILanguage = Data.Language.ILanguage;\n\n/**\n * DialogType definition\n */\nexport enum IHelpDialogType {\n Youtube,\n Image,\n Save\n}\n\n/**\n * Custom dialog data for different modal dialogs (youtube, image, ...)\n */\nexport interface IHelpDialogData {\n DialogType: IHelpDialogType;\n YoutubeLink: string;\n YoutubeWidth: number;\n YoutubeHeight: number;\n AllowedExtensions: Array;\n}\n\n/**\n * Component for the help\n */\n@Component({\n selector: 'ap-help',\n templateUrl: 'ap-help.component.html',\n styleUrls: ['ap-help.component.scss']\n})\nexport class ApHelpComponent implements OnDestroy, AfterContentInit, OnInit {\n @ViewChild(EditorComponent, {static: true}) editor: EditorComponent;\n public isEditMode = false;\n public apEditorSchema: Schema = ApEditorSchema;\n public languageData: Array = [];\n public hasEditPermission = false;\n public selectedLanguage: ILanguage;\n\n private _subscriptions: Subscription[] = [];\n private dialogApplyKey = 'applyDialog';\n private currentBase64Image: string | ArrayBuffer;\n private targetComponent: string;\n\n private defaultDialogData: IHelpDialogData = {\n DialogType: undefined,\n YoutubeLink: '',\n YoutubeWidth: 560,\n YoutubeHeight: 315,\n AllowedExtensions: ApHelpImageUpload.AllowedExtensions\n };\n public apHelpEditorPlugins = (defaultPlugins: Plugin[]): Plugin[] => [\n ...defaultPlugins,\n ApHelpImageUpload.EditorImagePastePlugin,\n ]\n\n constructor(private routerStore: RouterStore,\n private formStore: FormStore,\n private helpArticlesStore: HelpArticlesStore,\n private languageStore: LanguageStore,\n private _elementRef: ElementRef,\n private translationStore: TranslationStore,\n private modalDialogStore: ModalDialogStore,\n private permissionPipe: GetPermissionPipe) {\n }\n\n /**\n * Some initialization logic\n * Check if user has permission to edit\n */\n ngOnInit(): void {\n // Checks if user has the right to edit help articles\n let hasEditHelpPermission = false;\n this.permissionPipe.transform(ApPermissions.EDIT_HELP_ARTICLES).subscribe(permission => {\n hasEditHelpPermission = permission;\n });\n this.hasEditPermission = hasEditHelpPermission;\n }\n\n /**\n * Some more initialization logic\n * Subscriptions, languages, etc.\n */\n ngAfterContentInit(): void {\n /**\n * Inject css and fonts for editor's iframe\n */\n setTimeout(() => this.injectIFrameCss());\n\n /**\n * Listen for loading help article\n */\n this._subscriptions.push(this.helpArticlesStore.Listen(s => s.latestHelpArticle)\n .subscribe(helpArticle => {\n if (helpArticle && helpArticle.TargetComponent === this.helpArticlesStore.Listen(s => s.latestTargetComponent).value &&\n helpArticle.LanguageKey === this.languageStore.Listen(s => s.selectedLanguage).value?.Key) {\n this.targetComponent = this.helpArticlesStore.Listen(s => s.latestTargetComponent).value;\n // there are rare cases where updating the editor's value does not work properly (within kendo editor component).\n // not sure about the reason but it might be an inconsistent state of the client/kendo editor?!\n // that's why we explicitly use kendo API to set HTML content and catch possible errors\n try {\n this.editor.value = helpArticle?.ContentHtml;\n } catch (ex) {\n console.warn(`updating help failed: ${JSON.stringify(ex)}`);\n }\n }\n }));\n\n /**\n * Listen for loading all languages and handle language-change for editor\n */\n this._subscriptions.push(this.languageStore.Listen(s => s.data).subscribe(languages => {\n this.languageData = new Array();\n if (languages && languages.length > 0) {\n languages.forEach(l => {\n this.languageData.Add({\n languageKey: l.Key,\n languageName: l.LanguageName,\n language: l,\n click: (dataItem) => {\n this.selectedLanguage = dataItem.language;\n this.helpArticlesStore.loadHelpArticle(this.targetComponent, this.selectedLanguage.Key);\n }\n });\n }\n );\n }\n }));\n\n /**\n * Listen to component, route or language changes to load corresponding help article\n */\n this._subscriptions.push(combineLatest([\n this.languageStore.Listen(s => s.selectedLanguage),\n this.routerStore.Listen(s => s),\n this.formStore.Listen(s => s.updateComponent),\n this.formStore.Listen(s => s.update)\n ]).pipe(\n filter(([lang, route, component, compVisibleState]) => !!lang && !!route)\n ).subscribe(([lang, route, component, compVisibleState]) => {\n this.selectedLanguage = lang;\n let newTargetComponent = route?.url;\n\n // remove optional parameters from URL to have the plain URL as reference for help articles\n if (this.targetComponent?.includes('?')) {\n newTargetComponent = this.targetComponent.slice(0, this.targetComponent.indexOf('?'));\n }\n\n // in case there is a 'fly-in'/entrycomponent we need to reference this as well\n // to have different help for this components/wizards\n if (compVisibleState === ApVisibleStates.IN &&\n component?.component?.ɵcmp?.selectors?.length > 0 &&\n component?.component?.ɵcmp?.selectors[0]?.length > 0) {\n newTargetComponent += `@${component.component.ɵcmp.selectors[0][0]}`;\n }\n\n // we need to check if the targetComponent actually changed.\n // there are cases where this subscription gets triggered because user navigated to another component (which sometimes includes closing forms)\n // therefore the targetComponent did not change => no reload of help\n if (!newTargetComponent || newTargetComponent.length <= 0 || newTargetComponent === this.targetComponent ||\n this.helpArticlesStore.Listen(s => s.latestTargetComponent).value === newTargetComponent) {\n return;\n }\n this.targetComponent = newTargetComponent;\n this.helpArticlesStore.loadHelpArticle(this.targetComponent, this.selectedLanguage.Key);\n }));\n\n /**\n * Listen to 'Close' of custom modal dialogs\n */\n this._subscriptions.push(this.modalDialogStore.Listen(s => s.result).subscribe(dialogResult => {\n if (dialogResult?.key !== this.dialogApplyKey) {\n return;\n }\n const dialogData = dialogResult.formValues as IHelpDialogData;\n switch (dialogData?.DialogType) {\n case IHelpDialogType.Image:\n ApHelpImageUpload.insertImage(this.editor?.view, this.currentBase64Image); // base64 encoded image is stored in temporary variable\n break;\n case IHelpDialogType.Youtube:\n this.insertYoutubeVideo(dialogData);\n break;\n case IHelpDialogType.Save:\n this.saveArticle();\n break;\n }\n this.modalDialogStore.sendResult('', undefined); // reset dialog\n }));\n }\n\n /**\n * User clicks 'Edit-Button' to open Toolbar and enable editing.\n */\n public edit(): void {\n if (!this.hasEditPermission) {\n return;\n }\n this.isEditMode = true;\n }\n\n /**\n * Injects/Updates editor's iframe css classes to have Agriport styles and fonts\n * @private\n */\n private injectIFrameCss(): void {\n const apFontCssLink = document.createElement('link');\n apFontCssLink.href = 'assets/agriport-fonts.css';\n apFontCssLink.rel = 'stylesheet';\n apFontCssLink.type = 'text/css';\n\n const apHelpCssLink = document.createElement('link');\n apHelpCssLink.href = 'assets/style/kendo-help.css';\n apHelpCssLink.rel = 'stylesheet';\n apHelpCssLink.type = 'text/css';\n\n this._elementRef.nativeElement.querySelector('iframe').contentDocument?.head?.appendChild(apFontCssLink);\n this._elementRef.nativeElement.querySelector('iframe').contentDocument?.head?.appendChild(apHelpCssLink);\n }\n\n /**\n * Ask if user really wants to save help-article for the selected language\n */\n public openDialogSave(): void {\n const dialogData = this.defaultDialogData;\n dialogData.DialogType = IHelpDialogType.Save;\n const modalDialogData: IModalDialogData = {\n title: `${this.translationStore.FindTranslationForSelectedLanguage('Global__Save')}`,\n formConfig: {\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: '',\n columns: 2,\n label: 'Base_Nsensor__WouldSaveChanges',\n useMaxWidth: true,\n config: [\n new ApDynformsConfigTextbox({\n label: `\\t${this.translationStore.FindTranslationForSelectedLanguage('Admin_Pages_Popups__Language')}: ${this.selectedLanguage.LanguageName}`,\n key: 'DialogType',\n value: dialogData.DialogType,\n type: ApDynformsConfigTextboxType.Hidden\n }),\n new ApDynformsConfigPlaceholder()\n ]\n })\n ]\n },\n show: true,\n buttons: [\n {\n key: 'cancel',\n text: 'Global__Cancel',\n primary: false\n },\n {\n key: this.dialogApplyKey,\n text: 'Global__Save',\n primary: true\n }\n ],\n } as IModalDialogData;\n this.modalDialogStore.setModalDialogData(modalDialogData);\n }\n\n /**\n * Actually saves the article\n * @private\n */\n private saveArticle(): void {\n if (!this.editor || !this.selectedLanguage || !this.hasEditPermission) {\n return;\n }\n this.helpArticlesStore.saveHelpArticle(this.targetComponent, this.selectedLanguage.Key, this.editor.value);\n this.isEditMode = false;\n }\n\n /**\n * Ask for youtube link and video dimensions\n */\n public openDialogYoutube(): void {\n const dialogData = this.defaultDialogData;\n dialogData.DialogType = IHelpDialogType.Youtube;\n const modalDialogData: IModalDialogData = {\n title: this.translationStore.FindTranslationForSelectedLanguage('kendo.dialog.insertYoutube'),\n formConfig: {\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: '',\n columns: 1,\n useMaxWidth: true,\n config: [\n new ApDynformsConfigTextbox({\n key: 'YoutubeLink',\n label: 'Youtube Link',\n value: null,\n type: ApDynformsConfigTextboxType.Url,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n }),\n new ApDynformsValidator({\n validator: Validators.pattern('^((?:https?:)?\\\\/\\\\/)?((?:www|m)\\\\.)?((?:youtube(-nocookie)?\\\\.com|youtu.be))(\\\\/(?:[\\\\w\\\\-]+\\\\?v=|embed\\\\/|v\\\\/)?)([\\\\w\\\\-]+)(\\\\S+)?$'),\n errorKey: 'Text_ValueInvalid'\n })]\n }),\n new ApDynformsConfigTextbox({\n key: 'YoutubeWidth',\n label: 'kendo.editor.width',\n type: ApDynformsConfigTextboxType.Number,\n value: dialogData.YoutubeWidth,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n new ApDynformsConfigTextbox({\n key: 'YoutubeHeight',\n label: 'kendo.editor.width',\n type: ApDynformsConfigTextboxType.Number,\n value: dialogData.YoutubeHeight,\n validators: [new ApDynformsValidator({\n validator: Validators.required,\n errorKey: 'Settings__Msg_Vali_Value_Required'\n })]\n }),\n new ApDynformsConfigTextbox({\n key: 'DialogType',\n value: dialogData.DialogType,\n type: ApDynformsConfigTextboxType.Hidden\n })\n ]\n })\n ]\n },\n show: true,\n buttons: [\n {\n key: 'cancel',\n text: 'Global__Cancel',\n primary: false\n },\n {\n key: this.dialogApplyKey,\n text: 'Global__Insert',\n primary: true,\n disable: ModalDialogButtonDisable.FormInvalid\n }\n ],\n } as IModalDialogData;\n this.modalDialogStore.setModalDialogData(modalDialogData);\n }\n\n /**\n * Actually embeds the youtube video as iframe into the DOM of the editor.\n * @param dialogData\n */\n public insertYoutubeVideo(dialogData: IHelpDialogData): void {\n if (!dialogData.YoutubeLink || dialogData.YoutubeLink === '') {\n return;\n }\n const youtubeEmbedLink = dialogData.YoutubeLink.replace('watch?v=', 'embed/');\n const editorTransaction = this.editor?.view?.state?.tr;\n if (!editorTransaction) {\n return;\n }\n editorTransaction.insert(editorTransaction.selection.from, this.editor.schema.nodes.iframe.create({\n src: youtubeEmbedLink,\n width: dialogData.YoutubeWidth,\n height: dialogData.YoutubeHeight,\n }));\n this.editor?.view?.dispatch(editorTransaction);\n }\n\n /**\n * Ask for image to be uploaded\n */\n public openDialogImage(): void {\n const dialogData = this.defaultDialogData;\n this.currentBase64Image = undefined;\n dialogData.DialogType = IHelpDialogType.Image;\n const modalDialogData: IModalDialogData = {\n title: this.translationStore.FindTranslationForSelectedLanguage('kendo.dialog.uploadInsertImage'),\n formConfig: {\n fieldSets: [\n new ApDynformsConfigFieldset({\n key: '',\n columns: 2,\n useMaxWidth: true,\n label: `${this.translationStore.FindTranslationForSelectedLanguage('UploadCaptionSelect')}\n (${this.translationStore.FindTranslationForSelectedLanguage('UploadRestrictionSize')}: ${(ApHelpImageUpload.MaxFileSizeBytes / 1024 / 1024)} MB)`,\n config: [\n new ApDynformsConfigUpload({\n key: 'Image',\n autoUpload: true,\n multiple: false,\n restrictions: dialogData.AllowedExtensions,\n maxFileSize: ApHelpImageUpload.MaxFileSizeBytes,\n uploadEventHandler: this.onUploadImage.bind(this)\n }),\n new ApDynformsConfigTextbox({\n key: 'DialogType',\n value: dialogData.DialogType,\n type: ApDynformsConfigTextboxType.Hidden\n })\n ]\n })\n ]\n },\n show: true,\n buttons: [\n {\n key: 'cancel',\n text: 'Global__Cancel',\n primary: false\n },\n {\n key: this.dialogApplyKey,\n text: 'Global__Insert',\n primary: true\n }\n ],\n } as IModalDialogData;\n this.modalDialogStore.setModalDialogData(modalDialogData);\n }\n\n /**\n * Custom upload implementation: Selected file is converted to base64 content\n * @param e\n */\n public onUploadImage(e: UploadEvent): void {\n if (e?.files?.length <= 0) {\n return;\n }\n const component = this;\n const file = e?.files[0].rawFile;\n ApHelpImageUpload.readImageToBase64(file, (base64Image) => {\n if (base64Image) {\n component.currentBase64Image = base64Image;\n e.files[0].state = FileState.Uploaded;\n } else {\n component.currentBase64Image = undefined;\n e.files[0].state = FileState.Failed;\n }\n });\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\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
\n
\n
\n
\n
\n
\n
\n","import {AfterContentInit, Component, Input, OnInit} from '@angular/core';\n\nimport {ApPermissions} from 'invoker-transport';\nimport {Observable} from 'rxjs';\nimport {MapViewCurrentMenu, MapViewMode} from '../../ap-interface';\nimport {MapViewStore} from '../../stores/layout/mapview.store';\n\n\nexport enum ApMainTabs {\n MaximizeMap = 0,\n Map = 1,\n Statistic = 2,\n Help = 3,\n MinimizeMap = 4\n}\n\n@Component({\n selector: 'ap-tabstrip',\n templateUrl: 'ap-tabstrip.component.html'\n})\nexport class ApTabStripComponent implements OnInit, AfterContentInit {\n @Input()\n public hasArrows: boolean;\n public mapViewMenus = MapViewCurrentMenu;\n public mapViewModes = MapViewMode;\n public mapViewMode$: Observable;\n public currentMapViewMenu$: Observable;\n public ApPermissions = ApPermissions;\n\n constructor(private mapViewStore: MapViewStore) {\n }\n\n ngOnInit(): void {\n this.currentMapViewMenu$ = this.mapViewStore.Listen(s => s.currentMenu);\n this.mapViewMode$ = this.mapViewStore.Listen(s => s.mode);\n }\n\n ngAfterContentInit(): void {\n if (this.mapViewStore.getMapViewCurrentMenu() === MapViewCurrentMenu.MAP) {\n setTimeout(this.mapViewStore.refreshMap.bind(this.mapViewStore), 1);\n }\n }\n\n public selectTab(e): void {\n switch (e.index) {\n case ApMainTabs.MaximizeMap:\n this.onMaximizeMap();\n e.preventDefault();\n break;\n case ApMainTabs.Map:\n this.mapViewStore.goIntoMapMenu();\n break;\n case ApMainTabs.Statistic:\n this.mapViewStore.goIntoStatisticMenu();\n break;\n case ApMainTabs.Help:\n this.mapViewStore.goIntoHelpMenu();\n break;\n case ApMainTabs.MinimizeMap:\n this.onMinimizeMap();\n e.preventDefault();\n break;\n }\n }\n\n onMaximizeMap(): void {\n this.mapViewStore.increaseMapViewMode();\n }\n\n onMinimizeMap(): void {\n this.mapViewStore.decreaseMapViewMode();\n }\n}\n","
\n
\n
\n \n

Waiting for network....

\n
\n
\n\n \n\n\n
DEBUG
\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

Loading....

\n
\n
\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n NgZone,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {ApMenuUrls, ApVisibleStates, MapViewMode, PageMode, SidebarMode} from '../../ap-interface';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {LOGO_SCALE} from '../../ap-animation/logo-scale.animation';\nimport {ANIMATE_CHILD, SIDEBAR_TRANSLATE} from '../../ap-animation/sidbar.animation';\nimport {\n CHANGE_WIDTH_MAIN_VIEW,\n CHANGE_WIDTH_MAP_VIEW\n} from '../../ap-animation/change-width.animation';\nimport {\n ApWindowHelperService,\n NetworkStatus\n} from '../../ap-core/services/ap-window-helper.service';\nimport {ApMapInstance} from '../../ap-map';\nimport {\n TRANSLATE_COMPONENT\n} from '../../ap-animation/translate-component.animation';\nimport {GetRoundNumericPipe} from '../../ap-utils';\nimport {ApMetricService} from '../../modules/metrics/ap-metric.service';\nimport {CropTypeStore} from '../../stores/base-data/crop.types.store';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {\n UserSettingsStore\n} from '../../stores/settings/usersettings.store';\nimport {SettingsStore} from '../../stores/base-data/settings.store';\nimport {FieldStore} from '../../stores/farm/field.store';\nimport {PageStore} from '../../stores/layout/page.store';\nimport {MenuStore} from '../../stores/layout/menu.store';\nimport {FormStore} from '../../stores/layout/form.store';\nimport {MapViewStore} from '../../stores/layout/mapview.store';\nimport {ActionStore} from '../../stores/docu/action.store';\nimport {LanguageStore} from '../../stores/translation/language.store';\nimport {\n TranslationStore\n} from '../../stores/translation/translation.store';\nimport {RouterStore} from '../../stores/router/router.store';\nimport {MapStore} from '../../stores/map/map.store';\nimport {PopupService} from '@progress/kendo-angular-popup';\nimport {TooltipDirective} from '@progress/kendo-angular-tooltip';\nimport {ApTooltipService} from '../../ap-tooltip/ap-tooltip.service';\nimport {LoginStore} from '../../stores/login/login.store';\nimport {\n AgriportConstantsStore\n} from '../../stores/common/agriport-constants.store';\nimport {\n CropGroupStore\n} from '../../stores/base-data/crop.groups.store';\nimport {APP_CONFIGURATION} from '../../ap-core/config';\nimport {\n ClientOutdated,\n SessionLost,\n SessionOutdated,\n SessionPing\n} from '../../../../projects/invoker-transport/src/lib/actions/administration/system.action';\nimport {NotifyStore} from '../../stores/dialog/notify.store';\nimport {debounceTime, delay, map} from 'rxjs/operators';\nimport {\n ApRoleTypeService\n} from '../../services/common/ap-role-type.service';\nimport {\n ApSignalrService\n} from '../../ap-core/services/ap-signalr.service';\nimport {Clipboard} from '@angular/cdk/clipboard';\nimport {\n LicenseNotificationService\n} from '../../services/data/license/license-notification.service';\nimport ILanguage = Data.Language.ILanguage;\nimport ApValidationLevel = Data.Api.Validation.ApValidationLevel;\nimport IApValidationResult = Data.Api.Validation.IApValidationResult;\n\nconst SIDEBAR_MAX_WINDOW_WIDTH = 992;\n\n/**\n * Main Component for the Application Layout\n */\n@Component({\n selector: 'ap-root',\n templateUrl: 'ap-layout.component.html',\n animations: [\n LOGO_SCALE,\n SIDEBAR_TRANSLATE,\n ANIMATE_CHILD,\n CHANGE_WIDTH_MAP_VIEW,\n CHANGE_WIDTH_MAIN_VIEW,\n TRANSLATE_COMPONENT\n ]\n})\nexport class ApLayoutComponent implements OnInit, AfterViewInit {\n private static OutdatedClientMessageErrorKey = 'Global__ClientOutdated';\n private static OutdatedSessionMessageErrorKey = 'Global__SessionOutdated';\n private static LostSessionMessageErrorKey = 'Global__SessionLost';\n\n /**\n * bind the PageModes to use it in the View\n */\n public pageModes = PageMode;\n public mapViewModes = MapViewMode;\n public sidebarMode$: Observable;\n public mapViewMode$: Observable;\n public pageMode$: Observable;\n public menuAnimationState$: Observable;\n public language$: Observable;\n public languages$: Observable>;\n public formState$: Observable;\n public tabViewVisible = true;\n public networkStatusChanged: BehaviorSubject = new BehaviorSubject(NetworkStatus.Online);\n public networkIsOffline = false;\n\n public disableLegalInfoButton = false;\n public disableLangaugeDropDown = false;\n public windowInnerHeight: number;\n public windowOuterHeight: number;\n public windowInnerWidth: number;\n public windowOuterWidth: number;\n public visiblePanel = true;\n public innerLoadingVisible$ = this.loginStore.Listen(s => s.dataLoading);\n public longOperationOverlayVisible$ = combineLatest([\n this.loginStore.Listen(s => s.longOperationInProgress),\n this.loginStore.Listen(s => s.dataLoading)]).pipe(map(([lop, data]) => lop && !data));\n public clientErrorOverlayVisible$ = this.loginStore.Listen(s => s.clientErrorOccurred)\n .pipe(map((clientError) => clientError && !ApRoleTypeService.hasDeveloperRole(this.loginStore.User)));\n public isDebugMode = false;\n\n /**\n * The tooltip's template\n */\n @ViewChild('toolTipTemplate') public toolTipTemplateRef: TemplateRef;\n /**\n * host binding for 'kendotooltip' attribute/directive. Otherwise,\n * it is not possible to set the kendotooltip directive at root level.\n * Tooltip needs to be set at root-level to have tooltips on kendo popups(dropdown, ...)\n * working.\n */\n @HostBinding('attr.kendotooltip') kendoTooltip: TooltipDirective;\n\n private static OutdatedMessage(errorKey: string): IApValidationResult {\n return {\n ErrorKey: errorKey,\n Level: ApValidationLevel.Warning,\n UserId: 0,\n UserName: '',\n Parameters: [],\n Counter: 1,\n DisplayTimeout: 0,\n };\n }\n\n /**\n * Listen to special key shortcut to enable and disable Debug mode for Agriport\n * (available only for Agricon admin users)\n */\n @HostListener('document:keydown.control.alt.space', ['$event']) onKeydownControlAltSpaceHandler(_: KeyboardEvent): void {\n if (ApRoleTypeService.hasAgriconRole(this.loginStore.User)) {\n this.loginStore.switchDebugMode();\n }\n }\n\n constructor(private languageStore: LanguageStore,\n private translationStore: TranslationStore,\n private mapViewStore: MapViewStore,\n private menuStore: MenuStore,\n private pageStore: PageStore,\n private windowHelper: ApWindowHelperService,\n private routerStore: RouterStore,\n private formStore: FormStore,\n private actionStore: ActionStore,\n private fieldStore: FieldStore,\n private mapSore: MapStore,\n private croptypeStore: CropTypeStore,\n private settingsStore: SettingsStore,\n private roundNumericPipe: GetRoundNumericPipe,\n private metric: ApMetricService,\n private userSettingStore: UserSettingsStore,\n private dom: DomSanitizer,\n private apTooltipService: ApTooltipService,\n private tooltipWrapper: ElementRef,\n private ngZone: NgZone,\n private renderer: Renderer2,\n private popupService: PopupService,\n private loginStore: LoginStore,\n private agriportConstants: AgriportConstantsStore,\n private cropGroupsStore: CropGroupStore,\n private backend: ApSignalrService,\n private notifyStore: NotifyStore,\n private clipboardService: Clipboard,\n private licenseNotificationService: LicenseNotificationService) {\n this.backend.versionGetter = () => APP_CONFIGURATION.Revision;\n this.backend.registerObservable(ClientOutdated).subscribe(() =>\n this.handleSystemReloadMessage(ApLayoutComponent.OutdatedClientMessageErrorKey));\n this.backend.registerObservable(SessionOutdated).subscribe(() =>\n this.handleSystemReloadMessage(ApLayoutComponent.OutdatedSessionMessageErrorKey));\n this.backend.registerObservable(SessionLost).subscribe(() =>\n this.handleSystemReloadMessage(ApLayoutComponent.LostSessionMessageErrorKey));\n // When backend is restarted (e.g. due to a release), all AgriportSessions get lost.\n // The client does not get notified about this.\n // Only when the user triggers a backend message (e.g. farm change or save operations)\n // the client would receive an error from the backend that the AgriportSession was lost.\n // To avoid this, we introduced a regular ping to our backend.\n // In case the AgriportSession got lost the client will receive a message (and reload)\n // latest after this interval of currently 5 minutes.\n setInterval(() => this.backend.send(new SessionPing()), 5 * 60 * 1000);\n\n this.kendoTooltip = this.apTooltipService.CreateKendoDirective(this.tooltipWrapper, this.ngZone, this.renderer, this.popupService);\n this.formState$ = this.formStore.Listen(s => s.update);\n this.listenRouterUrlChanges();\n ApMapInstance.mapStore = this.mapSore;\n ApMapInstance.fieldStore = this.fieldStore;\n ApMapInstance.actionStore = this.actionStore;\n ApMapInstance.routerStore = this.routerStore;\n ApMapInstance.croptypeStore = this.croptypeStore;\n ApMapInstance.cropGroupsStore = this.cropGroupsStore;\n ApMapInstance.domSD = this.dom;\n ApMapInstance.userSettingsStore = this.userSettingStore;\n ApMapInstance.settingsStore = this.settingsStore;\n ApMapInstance.translationService = this.translationStore;\n ApMapInstance.roundNumericPipe = this.roundNumericPipe;\n ApMapInstance.clipboardService = this.clipboardService;\n this.loginStore.Listen(s => s.isDebugModeEnabled).subscribe(isDebugModeEnabled => {\n if (ApRoleTypeService.hasDeveloperRole(this.loginStore.User)) {\n this.isDebugMode = isDebugModeEnabled;\n }\n });\n this.loginStore.Listen(s => s.login).subscribe(_ => {\n ApMapInstance.hasAgriconRole = ApRoleTypeService.hasAgriconRole(this.loginStore.User);\n ApMapInstance.hasDeveloperRole = ApRoleTypeService.hasDeveloperRole(this.loginStore.User);\n });\n this.loginStore.SelectedFarm$.subscribe(selectedFarm => {\n if (!!selectedFarm) {\n this.licenseNotificationService.invokeBaseFertilisationLicenseAdjustmentLogic();\n }\n });\n this.networkStatusChanged.pipe(debounceTime(1000)).subscribe((networkStatus) => {\n this.networkIsOffline = networkStatus === NetworkStatus.Offline;\n });\n }\n\n /**\n * Handles system messages which should trigger a client reload.\n * @param messageKey\n * @private\n */\n private handleSystemReloadMessage(messageKey: string): void {\n if (this.notifyStore.getNotify().Any(n => n.ErrorKey === messageKey)) {\n return;\n }\n this.restartClient(messageKey);\n }\n\n /**\n * when Component is loaded\n */\n ngOnInit(): void {\n this.agriportConstants.LoadAgriportConstants();\n this.bindStoreValues();\n this.localize();\n this.hookWindowResizeEvent();\n this.prepareView();\n this.bindNetworkStatus();\n }\n\n /**\n * After view is initialized.\n * Initialize tooltip as well. (once and never again)\n * There is only one kendo tooltip instance for the whole application\n */\n ngAfterViewInit(): void {\n this.apTooltipService.Init(this.toolTipTemplateRef);\n }\n\n /**\n * Backend might need to know when user left page.\n * SignalR 'disconnected' event might be delayed.\n */\n @HostListener('window:beforeunload')\n beforeunloadHandler(): void {\n this.loginStore.pageLeave();\n }\n\n public onFinishChangeWidth($event: any): void {\n switch ($event.toState) {\n case SidebarMode.HALF:\n case SidebarMode.CLOSE:\n case SidebarMode.MOBILE:\n this.visiblePanel = false;\n break;\n }\n }\n\n public onStartChangeWidth($event: any): void {\n if ($event.fromState === SidebarMode.HALF && $event.toState === SidebarMode.OPEN) {\n this.visiblePanel = true;\n }\n }\n\n onMapViewChangeStart(): void {\n const mapViewMode = this.mapViewStore.Listen(s => s.mode).getValue();\n if (mapViewMode !== MapViewMode.HIDE) {\n this.tabViewVisible = true;\n }\n }\n\n onMapViewChangeFinish(): void {\n const mapViewMode = this.mapViewStore.Listen(s => s.mode).getValue();\n if (mapViewMode === MapViewMode.HIDE) {\n this.tabViewVisible = false;\n return;\n }\n this.mapViewStore.refreshMap();\n }\n\n private bindStoreValues(): void {\n this.sidebarMode$ = this.menuStore.Listen(s => s.mode);\n this.mapViewMode$ = this.mapViewStore.Listen(s => s.mode).pipe(delay(1));\n this.pageMode$ = this.pageStore.Listen(s => s.mode);\n this.languages$ = this.languageStore.Listen(s => s.data);\n this.language$ = this.languageStore.Listen(s => s.selectedLanguage);\n this.menuAnimationState$ = this.menuStore.Listen(s => s.menuAnimationState);\n }\n\n private localize(): void {\n this.languageStore.Load();\n this.languageStore.languageLoadComplete.subscribe(() => {\n this.translationStore.LoadTranslations(this.languageStore?.SelectedLanguage?.Key);\n });\n }\n\n /**\n * set default Values for the Layout\n */\n private prepareView(): void {\n if (this.windowInnerWidth >= SIDEBAR_MAX_WINDOW_WIDTH) {\n this.menuStore.openSidebar();\n } else {\n this.menuStore.halfSidebar();\n }\n }\n\n /**\n * hook on the Window resize Event\n */\n private hookWindowResizeEvent(): void {\n this.windowHelper.registerOnResize(this.onResizeWindow.bind(this));\n this.onResizeWindow();\n }\n\n /**\n * when Window Size is changed we have to refresh the Size Values and\n * change the View when the Window is too small\n */\n private onResizeWindow(): void {\n this.windowInnerHeight = window.innerHeight;\n this.windowOuterHeight = window.outerHeight;\n this.windowInnerWidth = window.innerWidth;\n this.windowOuterWidth = window.outerWidth;\n\n if (this.windowInnerWidth < SIDEBAR_MAX_WINDOW_WIDTH && this.menuStore.getViewMode() !== SidebarMode.CLOSE) {\n this.menuStore.halfSidebar();\n } else if (this.menuStore.getSidebarExpand()) {\n this.menuStore.openSidebar();\n } else {\n this.menuStore.halfSidebar();\n }\n ApMapInstance.updateView();\n }\n\n public onChange(selectedLanguage: ILanguage): void {\n this.languageStore.SelectLanguage(selectedLanguage);\n this.translationStore.LoadTranslations(selectedLanguage.Key);\n }\n\n public onLegalNoticeClick(): void {\n const fullLegalInfoPath = `${this.windowHelper.getLocationOrigin()}/${ApMenuUrls.INFO_LEGAL}`;\n this.windowHelper.openSite(fullLegalInfoPath, '_blank');\n }\n\n public onContactClick(): void {\n this.windowHelper.openSite('https://www.agricon.de/ansprechpartner');\n }\n\n public onTeamViewerClick(): void {\n this.windowHelper.openSite(APP_CONFIGURATION.TeamViewerUrl);\n }\n\n public generateButtonForInnerError(): { text: string, action: () => void } {\n return {\n text: 'Back_To_Start',\n action: () => window.location.replace(ApMenuUrls.DASHBOARD)\n };\n }\n\n private listenRouterUrlChanges(): void {\n this.routerStore.Listen(s => s).subscribe(d => {\n if (!d) {\n return;\n }\n if (d.url.includes(ApMenuUrls.INFO_LEGAL)) {\n this.disableLegalInfoButton = true;\n this.disableLangaugeDropDown = true;\n } else {\n this.disableLegalInfoButton = false;\n this.disableLangaugeDropDown = false;\n }\n this.formStore.closeForm();\n // send the module change to the backend\n this.metric.moduleChange(d.url);\n });\n }\n\n private restartClient(errorKey: string): void {\n if (this.notifyStore.getNotify().Any(n => n.ErrorKey === errorKey)) {\n window.location.reload();\n }\n this.notifyStore.addMessage(ApLayoutComponent.OutdatedMessage(errorKey));\n setTimeout(() => {\n this.restartClient(errorKey);\n }, 3 * 1000);\n }\n\n private bindNetworkStatus(): void {\n this.windowHelper.registerNetworkStatus((networkStatus) => {\n this.networkStatusChanged.next(networkStatus);\n });\n }\n}\n","/**\n * @license Angular v13.2.1\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { Injectable } 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 */\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n}\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes(driver, normalizer, element, keyframes, preStyles = {}, postStyles = {}) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf['offset'];\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || {};\n Object.keys(kf).forEach(prop => {\n let normalizedProp = prop;\n let normalizedValue = kf[prop];\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles[prop];\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles[prop];\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe[normalizedProp] = normalizedValue;\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n const LINE_START = '\\n - ';\n throw new Error(`Unable to animate due to the following errors:${LINE_START}${errors.join(LINE_START)}`);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetAsInMap(map, key, defaultValue) {\n let value;\n if (map instanceof Map) {\n value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n }\n else {\n value = map[key];\n if (!value) {\n value = map[key] = defaultValue;\n }\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.substr(separatorPos + 1);\n return [id, action];\n}\nlet _contains = (elm1, elm2) => false;\nlet _query = (element, selector, multi) => {\n return [];\n};\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n if (!isBrowser()) {\n _contains = (elm1, elm2) => elm1.contains(elm2);\n }\n else {\n _contains = (elm1, elm2) => {\n while (elm2 && elm2 !== document.documentElement) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = elm2.parentNode || elm2.host; // consider host to support shadow DOM\n }\n return false;\n };\n }\n _query = (element, selector, multi) => {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n };\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.substr(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nconst containsElement = _contains;\nconst invokeQuery = _query;\nfunction hypenatePropsObject(object) {\n const newObj = {};\n Object.keys(object).forEach(prop => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newObj[newProp] = object[prop];\n });\n return newObj;\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 NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\nNoopAnimationDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopAnimationDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: NoopAnimationDriver });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = ( /* @__PURE__ */new NoopAnimationDriver());\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 ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(`The provided timing value \"${exp}\" is invalid.`);\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(`Duration values below 0 are not allowed for this animation step.`);\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(`Delay values below 0 are not allowed for this animation step.`);\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, `The provided timing value \"${exp}\" is invalid.`);\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = {};\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, false, normalizedStyles));\n }\n else {\n copyStyles(styles, false, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, readPrototype, destination = {}) {\n if (readPrototype) {\n // we make use of a for-in loop so that the\n // prototypically inherited properties are\n // revealed from the backFill map\n for (let prop in styles) {\n destination[prop] = styles[prop];\n }\n }\n else {\n copyObj(styles, destination);\n }\n return destination;\n}\nfunction getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.hasOwnProperty(prop)) {\n formerStyles[prop] = element.style[camelProp];\n }\n element.style[camelProp] = styles[prop];\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(`Unable to resolve the local animation param ${varName} in the given list of values`);\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (!params.hasOwnProperty(varName)) {\n errors.push(`Please provide a value for the animation param ${varName}`);\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n const previousStyleProps = Object.keys(previousStyles);\n if (previousStyleProps.length && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyleProps.forEach(prop => {\n if (!startingKeyframe.hasOwnProperty(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe[prop] = previousStyles[prop];\n });\n if (missingStyleProps.length) {\n // tslint:disable-next-line\n for (var i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(function (prop) {\n kf[prop] = computeStyle(element, prop);\n });\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* State */:\n return visitor.visitState(node, context);\n case 1 /* Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* Group */:\n return visitor.visitGroup(node, context);\n case 4 /* Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* Style */:\n return visitor.visitStyle(node, context);\n case 8 /* Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* Query */:\n return visitor.visitQuery(node, context);\n case 12 /* Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw new Error(`Unable to resolve animation metadata node #${node.type}`);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\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 ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(`The provided transition expression \"${eventStr}\" is not supported`);\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(`The transition alias value \"${alias}\" is not supported`);\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\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 SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n return visitDslNode(this, normalizeAnimationEntry(metadata), context);\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = {};\n context.collectedStyles[ROOT_SELECTOR] = {};\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push('animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push('only state() and transition() definitions can sit inside of a trigger()');\n }\n });\n return {\n type: 7 /* Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(value => {\n if (isObject(value)) {\n const stylesObj = value;\n Object.keys(stylesObj).forEach(prop => {\n extractStyleParams(stylesObj[prop]).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(`state(\"${metadata\n .name}\", ...) must define default values for all the following style substitutions: ${missingSubsArr.join(', ')}`);\n }\n }\n return {\n type: 0 /* State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n if (Array.isArray(metadata.styles)) {\n metadata.styles.forEach(styleTuple => {\n if (typeof styleTuple == 'string') {\n if (styleTuple == AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(`The provided style string value ${styleTuple} is not allowed.`);\n }\n }\n else {\n styles.push(styleTuple);\n }\n });\n }\n else {\n styles.push(metadata.styles);\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (isObject(styleData)) {\n const styleMap = styleData;\n const easing = styleMap['easing'];\n if (easing) {\n collectedEasing = easing;\n delete styleMap['easing'];\n }\n if (!containsDynamicStyles) {\n for (let prop in styleMap) {\n const value = styleMap[prop];\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple == 'string')\n return;\n Object.keys(tuple).forEach(prop => {\n if (!this._driver.validateStyleProperty(prop)) {\n context.errors.push(`The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n return;\n }\n const collectedStyles = context.collectedStyles[context.currentQuerySelector];\n const collectedEntry = collectedStyles[prop];\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(`The CSS property \"${prop}\" that exists between the times of \"${collectedEntry.startTime}ms\" and \"${collectedEntry\n .endTime}ms\" is also being animated in a parallel animation between the times of \"${startTime}ms\" and \"${endTime}ms\"`);\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles[prop] = { startTime, endTime };\n }\n if (context.options) {\n validateStyleParams(tuple[prop], context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(`keyframes() must be placed inside of a call to animate()`);\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(`Please ensure that all keyframe offsets are between 0 and 1`);\n }\n if (offsetsOutOfOrder) {\n context.errors.push(`Please ensure that all keyframe offsets are in order`);\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(`Not all style() steps within the declared keyframes() contain offsets`);\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetAsInMap(context.collectedStyles, context.currentQuerySelector, {});\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(`stagger() can only be used inside of query()`);\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.substr(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = {};\n this.options = null;\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (isObject(styleTuple) && styleTuple.hasOwnProperty('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n });\n }\n else if (isObject(styles) && styles.hasOwnProperty('offset')) {\n const obj = styles;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n return offset;\n}\nfunction isObject(value) {\n return !Array.isArray(value) && typeof value == 'object';\n}\nfunction constructTimingAst(value, errors) {\n let timings = null;\n if (value.hasOwnProperty('duration')) {\n timings = value;\n }\n else if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n timings = timings || resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\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 ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of prototypical inheritance, AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill object. Given that each of the keyframe\n * styles is an object that prototypically inherits from the backFill object, this means that if a\n * value is added into the backFill then it will automatically propagate any missing values to all\n * keyframes. Therefore the missing `height` value will be properly filled into the already\n * processed keyframes.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * (For prototypically-inherited contents to be detected a `for(i in obj)` loop must be used.)\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = {}, finalStyles = {}, options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n if (Object.keys(finalStyles).length) {\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ? timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, 0, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.getCurrentStyleProperties().length) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* Style */ ||\n (startTime == 0 && context.currentTimeline.getCurrentStyleProperties().length))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(`\\`query(\"${originalSelector}\")\\` returned zero elements. (Use \\`query(\"${originalSelector}\", { optional: true })\\` if you wish to allow this.)`);\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this._previousKeyframe = {};\n this._currentKeyframe = {};\n this._keyframes = new Map();\n this._styleSummary = {};\n this._pendingStyles = {};\n this._backFill = {};\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._localTimelineStyles = Object.create(this._backFill, {});\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.getCurrentStyleProperties().length > 0;\n default:\n return true;\n }\n }\n getCurrentStyleProperties() {\n return Object.keys(this._currentKeyframe);\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size == 1 && Object.keys(this._pendingStyles).length;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = Object.create(this._backFill, {});\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles[prop] = value;\n this._globalTimelineStyles[prop] = value;\n this._styleSummary[prop] = { time: this.currentTime, value };\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n Object.keys(this._globalTimelineStyles).forEach(prop => {\n this._backFill[prop] = this._globalTimelineStyles[prop] || AUTO_STYLE;\n this._currentKeyframe[prop] = AUTO_STYLE;\n });\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n Object.keys(styles).forEach(prop => {\n const val = interpolateParams(styles[prop], params, errors);\n this._pendingStyles[prop] = val;\n if (!this._localTimelineStyles.hasOwnProperty(prop)) {\n this._backFill[prop] = this._globalTimelineStyles.hasOwnProperty(prop) ?\n this._globalTimelineStyles[prop] :\n AUTO_STYLE;\n }\n this._updateStyle(prop, val);\n });\n }\n applyStylesToKeyframe() {\n const styles = this._pendingStyles;\n const props = Object.keys(styles);\n if (props.length == 0)\n return;\n this._pendingStyles = {};\n props.forEach(prop => {\n const val = styles[prop];\n this._currentKeyframe[prop] = val;\n });\n Object.keys(this._localTimelineStyles).forEach(prop => {\n if (!this._currentKeyframe.hasOwnProperty(prop)) {\n this._currentKeyframe[prop] = this._localTimelineStyles[prop];\n }\n });\n }\n snapshotCurrentStyles() {\n Object.keys(this._localTimelineStyles).forEach(prop => {\n const val = this._localTimelineStyles[prop];\n this._pendingStyles[prop] = val;\n this._updateStyle(prop, val);\n });\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n Object.keys(timeline._styleSummary).forEach(prop => {\n const details0 = this._styleSummary[prop];\n const details1 = timeline._styleSummary[prop];\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, true);\n Object.keys(finalKeyframe).forEach(prop => {\n const value = finalKeyframe[prop];\n if (value == ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value == AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe['offset'] = time / this.duration;\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = copyObj(kf0);\n kf0['offset'] = 0;\n kf1['offset'] = 1;\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0], false);\n newFirstKeyframe['offset'] = 0;\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0], false);\n oldFirstKeyframe['offset'] = roundOffset(startingGap);\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i], false);\n const oldOffset = kf['offset'];\n const timeAtKeyframe = delay + oldOffset * duration;\n kf['offset'] = roundOffset(timeAtKeyframe / totalTime);\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = {};\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || Object.keys(allStyles);\n allProperties.forEach(prop => {\n styles[prop] = AUTO_STYLE;\n });\n }\n else {\n copyStyles(token, false, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const ast = buildAnimationAst(_driver, input, errors);\n if (errors.length) {\n const errorMessage = `animation validation failed:\\n${errors.join('\\n')}`;\n throw new Error(errorMessage);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n const errorMessage = `animation building failed:\\n${errors.join('\\n')}`;\n throw new Error(errorMessage);\n }\n return result;\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 * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\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 WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_MAP[normalizedProperty] && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(`Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n }\n }\n }\n return strVal + unit;\n }\n}\nconst DIMENSIONAL_PROP_MAP = (() => makeBooleanMap('width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective'\n .split(',')))();\nfunction makeBooleanMap(keys) {\n const map = {};\n keys.forEach(key => map[key] = true);\n return map;\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n const backupStateStyler = this._stateStyles['*'];\n const stateStyler = this._stateStyles[stateName];\n const backupStyles = backupStateStyler ? backupStateStyler.buildStyles(params, errors) : {};\n return stateStyler ? stateStyler.buildStyles(params, errors) : backupStyles;\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = { params: Object.assign(Object.assign({}, transitionAnimationParams), nextAnimationParams) };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetAsInMap(preStyleMap, elm, {});\n tl.preStyleProps.forEach(prop => preProps[prop] = true);\n const postProps = getOrSetAsInMap(postStyleMap, elm, {});\n tl.postStyleProps.forEach(prop => postProps[prop] = true);\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = {};\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value != null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n const styleObj = value;\n Object.keys(styleObj).forEach(prop => {\n let val = styleObj[prop];\n if (val.length > 1) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles[normalizedProp] = val;\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = {};\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states[ast.name] = new AnimationStateStyles(ast.style, defaultParams, _normalizer);\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(obj, key1, key2) {\n if (obj.hasOwnProperty(key1)) {\n if (!obj.hasOwnProperty(key2)) {\n obj[key2] = obj[key1];\n }\n }\n else if (obj.hasOwnProperty(key2)) {\n obj[key1] = obj[key2];\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 EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = {};\n this._playersById = {};\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const ast = buildAnimationAst(this._driver, metadata, errors);\n if (errors.length) {\n throw new Error(`Unable to build the animation due to the following errors: ${errors.join('\\n')}`);\n }\n else {\n this._animations[id] = ast;\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes(this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations[id];\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, {}, {}, options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetAsInMap(autoStylesMap, inst.element, {});\n inst.postStyleProps.forEach(prop => styles[prop] = null);\n });\n }\n else {\n errors.push('The requested animation doesn\\'t exist or has already been destroyed');\n instructions = [];\n }\n if (errors.length) {\n throw new Error(`Unable to create the animation due to the following errors: ${errors.join('\\n')}`);\n }\n autoStylesMap.forEach((styles, element) => {\n Object.keys(styles).forEach(prop => {\n styles[prop] = this._driver.computeStyle(element, prop, AUTO_STYLE);\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, {}, styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById[id] = player;\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n delete this._playersById[id];\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById[id];\n if (!player) {\n throw new Error(`Unable to find the timeline player referenced by ${id}`);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\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 */\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n get params() {\n return this.options.params;\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = {};\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.hasOwnProperty(name)) {\n throw new Error(`Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n }\n if (phase == null || phase.length == 0) {\n throw new Error(`Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n }\n if (!isTriggerEventValid(phase)) {\n throw new Error(`The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n }\n const listeners = getOrSetAsInMap(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetAsInMap(this._engine.statesByElement, element, {});\n if (!triggersWithStates.hasOwnProperty(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates[name] = DEFAULT_STATE_VALUE;\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers[name]) {\n delete triggersWithStates[name];\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers[name]) {\n // throw\n return false;\n }\n else {\n this._triggers[name] = ast;\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers[name];\n if (!trigger) {\n throw new Error(`The provided animation trigger \"${name}\" has not been registered!`);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = {});\n }\n let fromState = triggersWithStates[triggerName];\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates[triggerName] = toState;\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetAsInMap(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n delete this._triggers[name];\n this._engine.statesByElement.forEach((stateMap, element) => {\n delete stateMap[name];\n });\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n Object.keys(triggerStates).forEach(triggerName => {\n previousTriggersValues.set(triggerName, triggerStates[triggerName].value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers[triggerName]) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers[triggerName];\n const transition = trigger.fallbackTransition;\n const fromState = elementStates[triggerName] || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n elementContainsData(element) {\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find(entry => entry.element === element) ? true : false) || containsData;\n return containsData;\n }\n}\nclass TransitionAnimationEngine {\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const limit = this._namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n for (let i = limit; i >= 0; i--) {\n const nextNamespace = this._namespaceList[i];\n if (this.driver.containsElement(nextNamespace.hostElement, hostElement)) {\n this._namespaceList.splice(i + 1, 0, ns);\n found = true;\n break;\n }\n }\n if (!found) {\n this._namespaceList.splice(0, 0, ns);\n }\n }\n else {\n this._namespaceList.push(ns);\n }\n this.namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n const ns = this._fetchNamespace(namespaceId);\n this.afterFlush(() => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n });\n this.afterFlushAnimationsDone(() => ns.destroy(context));\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n const keys = Object.keys(elementStates);\n for (let i = 0; i < keys.length; i++) {\n const nsId = elementStates[keys[i]].namespaceId;\n if (nsId) {\n const ns = this._fetchNamespace(nsId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, isHostElement, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n if (isHostElement) {\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n var _a;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if ((_a = element.classList) === null || _a === void 0 ? void 0 : _a.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw new Error(`Unable to process animations due to the following failed trigger transitions\\n ${errors.join('\\n')}`);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates[entry.triggerName]) {\n triggersWithStates[entry.triggerName].value = previousValue;\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetAsInMap(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n if (props.length) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(`@${instruction.triggerName} has failed due to:\\n`);\n instruction.errors.forEach(error => errors.push(`- ${error}\\n`));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetAsInMap(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, Object.assign(Object.assign({}, post), pre));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n elementContainsData(namespaceId, element) {\n let containsData = false;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetAsInMap(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes(this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetAsInMap(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetAsInMap(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = {};\n this.destroyed = false;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n Object.keys(this._queuedCallbacks).forEach(phase => {\n this._queuedCallbacks[phase].forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks = {};\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetAsInMap(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues;\n if (map instanceof Map) {\n currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n }\n else {\n currentValues = map[key];\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n delete map[key];\n }\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = {};\n props.forEach(prop => {\n const value = styles[prop] = driver.computeStyle(element, prop, defaultStyle);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n var _a;\n (_a = element.classList) === null || _a === void 0 ? void 0 : _a.add(className);\n}\nfunction removeClass(element, className) {\n var _a;\n (_a = element.classList) === null || _a === void 0 ? void 0 : _a.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const ast = buildAnimationAst(this._driver, metadata, errors);\n if (errors.length) {\n throw new Error(`The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.join('\\n - ')}`);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return this._transitionEngine.players\n .concat(this._timelineEngine.players);\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\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 instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = {});\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* Destroyed */;\n }\n }\n}\nSpecialCasedStyles.initialStylesByElement = ( /* @__PURE__ */new WeakMap());\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n const props = Object.keys(styles);\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (isNonAnimatableStyle(prop)) {\n result = result || {};\n result[prop] = styles[prop];\n }\n }\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = {};\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n this.domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : {};\n this.domPlayer.addEventListener('finish', () => this._onFinish());\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return element['animate'](keyframes, options);\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n return this.domPlayer.currentTime / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = {};\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n Object.keys(finalKeyframe).forEach(prop => {\n if (prop != 'offset') {\n styles[prop] = this._finished ? finalKeyframe[prop] : computeStyle(this.element, prop);\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = {};\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n let styles = player.currentSnapshot;\n Object.keys(styles).forEach(prop => previousStyles[prop] = styles[prop]);\n });\n }\n keyframes = keyframes.map(styles => copyStyles(styles, false));\n keyframes = balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, keyframes);\n return new WebAnimationsPlayer(element, keyframes, playerOptions, specialStyles);\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 * @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 { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, invokeQuery as ɵinvokeQuery, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v13.2.1\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ViewEncapsulation, Injectable, Inject, InjectionToken, RendererFactory2, NgZone, NgModule } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';\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 */\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\nBrowserAnimationBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserAnimationBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: BrowserAnimationBuilder });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n var _a, _b;\n return (_b = (_a = this._renderer.engine.players[+this.id]) === null || _a === void 0 ? void 0 : _a.getPosition()) !== null && _b !== void 0 ? _b : 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n this.promise = Promise.resolve(0);\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate === null || delegate === void 0 ? void 0 : delegate.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n // always use promise to schedule microtask instead of use Zone\n this.promise.then(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n Promise.resolve(null).then(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\nAnimationRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: AnimationRendererFactory });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: AnimationRendererFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode(n) : null;\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.delegate.destroy();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine) {\n super(namespaceId, delegate, engine);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.substr(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.substr(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.substr(dotIndex + 1);\n return [trigger, phase];\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 InjectableAnimationEngine extends ɵAnimationEngine {\n constructor(doc, driver, normalizer) {\n super(doc.body, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n}\nInjectableAnimationEngine.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }], target: i0.ɵɵFactoryTarget.Injectable });\nInjectableAnimationEngine.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: InjectableAnimationEngine });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }];\n } });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\n/**\n * @publicApi\n */\nconst ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\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 * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see `BrowserAnimationsModuleConfig`\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n}\nBrowserAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBrowserAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });\nBrowserAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n}\nNoopAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNoopAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });\nNoopAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\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 * @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 { ANIMATION_MODULE_TYPE, BrowserAnimationsModule, NoopAnimationsModule, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import {ErrorHandler, Injectable, isDevMode} from '@angular/core';\nimport {ApErrorhandlerService} from './ap-errorhandler.service';\nimport {has} from 'lodash';\nimport {NotifyStore} from '../../stores/dialog/notify.store';\nimport {LoginStore} from '../../stores/login/login.store';\nimport IResultMessage = Invoker.IResultMessage;\n\n// TODO: introduce configuration to switch fullreport option.\nconst isFullReport = false;\nconst errorBucket: Array = [];\n\n@Injectable({providedIn: 'root'})\nexport class ApErrorHandler implements ErrorHandler {\n constructor(private loginStore: LoginStore,\n private errorHandlerService: ApErrorhandlerService,\n private notifyStore: NotifyStore) {\n\n errorHandlerService.confirmedError$.subscribe((data: IResultMessage) => {\n try {\n errorBucket.push({farmId: data.Data.FarmId, message: data.Data.Message});\n } catch (error) {\n console.log(error.message);\n }\n });\n }\n\n /***\n * Tries to determin the current farmId\n */\n tryGetFarmId(): number {\n try {\n return this.loginStore.SelectedFarm.Id;\n } catch {\n return 0;\n }\n }\n\n /**\n * Handles an exception/error which was either raised on client side\n * or passed from backend to client.\n */\n handleError(error): void {\n // use innerException if any.\n // this is needed in case of exception within promises.\n if (has(error, 'rejection')) {\n error = error.rejection;\n }\n\n const IS_VALIDATION_ERROR = has(error, 'ValidationResults');\n try {\n if (IS_VALIDATION_ERROR) {\n error.ValidationResults.forEach(note => {\n this.notifyStore.addMessage(note);\n });\n } else {\n this.loginStore.setClientErrorOccurred(true);\n }\n\n const meta = {\n Url: window?.location?.href,\n Browser: this._getBrowser(),\n UserAgent: window.navigator?.userAgent\n };\n const farmId = this.tryGetFarmId();\n // TODO: implement send full store data when wanted (use circular safe stringifier)\n const errorState = JSON.stringify(error);\n\n // whenever the error has not yet been confirmed(=logged by server) the error will be sent to the gateway.\n if (errorBucket.filter(e => e.farmId === farmId && e.message === error.message).length < 1) {\n this.errorHandlerService.LogClientError(error.message, farmId, error.stack, errorState, JSON.stringify(meta));\n }\n } catch (error) {\n // in case error cannot be sent to gateway we are logging this particular error to console, only.\n // otherwise we might create an infinite loop\n }\n\n if (isDevMode() && !IS_VALIDATION_ERROR) {\n throw error;\n }\n }\n\n private _getBrowser(): string {\n const agent = window.navigator.userAgent.toLowerCase();\n switch (true) {\n case agent.indexOf('edge') > -1 || agent.indexOf('edg') > -1:\n return 'edge';\n case agent.indexOf('opr') > -1:\n return 'opera';\n case agent.indexOf('chrome') > -1:\n return 'chrome';\n case agent.indexOf('trident') > -1:\n return 'ie';\n case agent.indexOf('firefox') > -1:\n return 'firefox';\n case agent.indexOf('safari') > -1:\n return 'safari';\n default:\n return 'other';\n }\n }\n}\n","import {NgModule} from '@angular/core';\nimport {PreloadAllModules, RouterModule, Routes} from '@angular/router';\nimport {ApMenuUrls, PageMode} from './ap-interface';\nimport {ApPageNotFoundComponent} from './layout/components/ap-page-not-found.component';\n\n// @ts-ignore\nconst ROUTES: Routes = [\n {\n path: 'login',\n loadChildren: () => import('./login/ap-login.module').then(m => m.ApLoginModule),\n data: {\n login: false,\n layout: PageMode.FULLSCREEN\n }\n },\n {\n path: 'administration',\n loadChildren: () => import('./administration/ap-administration.module').then(m => m.ApAdministrationModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'settings',\n loadChildren: () => import('./settings/ap-settings.module').then(m => m.ApSettingsModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN,\n }\n },\n {\n path: 'dashboard',\n loadChildren: () => import('./dashboard/ap-dashboard.module').then(m => m.ApDashboardModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'basedata',\n loadChildren: () => import('./basedata/ap-basedata.module').then(m => m.ApBaseDataModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'fieldwork',\n loadChildren: () => import('./docu/ap-docu.module').then(m => m.ApDocuModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'evaluation',\n loadChildren: () => import('./evaluation/ap-evaluation.module').then(m => m.ApEvaluationModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'fieldmanagement',\n loadChildren: () => import('./field-management/ap-field-management.module').then(m => m.ApFieldManagementModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'nutrients',\n loadChildren: () => import('./nutrient-management/ap-nutrient-management.module').then(m => m.ApNutrientManagementModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'n-fertilization',\n loadChildren: () => import('./n-fertilization/ap-n-fertilization.module').then(m => m.ApNFertilizationModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'plant-protection',\n loadChildren: () => import('./plant-protection/plant-protection.module').then(m => m.PlantProtectionModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'booking',\n loadChildren: () => import('./booking/ap-booking.module').then(m => m.ApBookingModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'task-management',\n loadChildren: () => import('./task-management/task-management.module').then(m => m.TaskManagementModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'import',\n loadChildren: () => import('./import/ap-import.module').then(m => m.ApImportModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'info',\n loadChildren: () => import('./info/ap-info.module').then(m => m.ApInfoModule),\n data: {\n login: false,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'reports',\n loadChildren: () => import('./ap-reports/ap-reports.module').then(m => m.ApReportsModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: 'farm-records',\n loadChildren: () => import('./ap-farm-records/ap-farm-records.module').then(m => m.ApFarmRecordsModule),\n data: {\n login: true,\n layout: PageMode.HALFSCREEN\n }\n },\n {\n path: '',\n redirectTo: ApMenuUrls.LOGIN,\n pathMatch: 'full'\n },\n {\n path: '**',\n component: ApPageNotFoundComponent,\n data: {\n login: false,\n layout: PageMode.HALFSCREEN\n }\n }\n\n];\n\n@NgModule({\n imports: [\n RouterModule.forRoot(ROUTES, {\n relativeLinkResolution: 'legacy',\n preloadingStrategy: PreloadAllModules,\n })\n ],\n exports: [\n RouterModule\n ]\n})\nexport class RoutesModule {\n}\n","import {MessageService} from '@progress/kendo-angular-l10n';\nimport {Injectable} from '@angular/core';\n// load the language packages from Kendo UI\nimport '@progress/kendo-angular-intl/locales/de/calendar';\nimport '@progress/kendo-angular-intl/locales/en/calendar';\nimport '@progress/kendo-angular-intl/locales/pl/calendar';\nimport '@progress/kendo-angular-intl/locales/lt/calendar';\nimport '@progress/kendo-angular-intl/locales/lv/calendar';\nimport '@progress/kendo-angular-intl/locales/et/calendar';\nimport '@progress/kendo-angular-intl/locales/sk/calendar';\nimport '@progress/kendo-angular-intl/locales/sr/calendar';\nimport '@progress/kendo-angular-intl/locales/uk/calendar';\nimport '@progress/kendo-angular-intl/locales/hu/calendar';\nimport '@progress/kendo-angular-intl/locales/hr/calendar';\nimport '@progress/kendo-angular-intl/locales/cs/calendar';\nimport '@progress/kendo-angular-intl/locales/ru/calendar';\nimport '@progress/kendo-angular-intl/locales/ro/calendar';\n\nimport '@progress/kendo-angular-intl/locales/de/numbers';\nimport '@progress/kendo-angular-intl/locales/en/numbers';\nimport '@progress/kendo-angular-intl/locales/pl/numbers';\nimport '@progress/kendo-angular-intl/locales/lt/numbers';\nimport '@progress/kendo-angular-intl/locales/lv/numbers';\nimport '@progress/kendo-angular-intl/locales/et/numbers';\nimport '@progress/kendo-angular-intl/locales/sk/numbers';\nimport '@progress/kendo-angular-intl/locales/sr/numbers';\nimport '@progress/kendo-angular-intl/locales/uk/numbers';\nimport '@progress/kendo-angular-intl/locales/hu/numbers';\nimport '@progress/kendo-angular-intl/locales/hr/numbers';\nimport '@progress/kendo-angular-intl/locales/cs/numbers';\nimport '@progress/kendo-angular-intl/locales/ru/numbers';\nimport '@progress/kendo-angular-intl/locales/ro/numbers';\nimport {LanguageStore} from '../stores/translation/language.store';\nimport {TranslationStore} from '../stores/translation/translation.store';\n\n@Injectable({providedIn: 'root'})\nexport class ApKendoMessageService extends MessageService {\n\n countryCode: string;\n\n constructor(private languageStore: LanguageStore,\n private translationStore: TranslationStore) {\n super();\n this.languageStore.Listen(s => s.selectedLanguage).subscribe(d => {\n if (!d) {\n return;\n }\n this.countryCode = d.Key;\n super.notify();\n });\n }\n\n public get(key: string): string {\n return this.translationStore.FindTranslation(key, this.countryCode);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApLoggerEditComponent} from './ap-logger-edit.component';\nimport {ApMachinesLoggerEditComponent} from './ap-machines-logger-edit.component';\nimport {ApSettingsEditComponent} from './ap-settings-edit.component';\nimport {ApDynformsModule} from '../../ap-dynforms/ap-dynforms.module';\nimport {ApTranslationModule} from '../../translation/ap-translation.module';\nimport {ButtonModule} from '@progress/kendo-angular-buttons';\nimport {ApUtilsModule} from '../../ap-utils';\nimport {ApUsersEditComponent} from './ap-users-edit.component';\nimport {ApPermissionModule} from '../../ap-permission/ap-permission.module';\n\nconst COMPONENTS = [\n ApLoggerEditComponent,\n ApMachinesLoggerEditComponent,\n ApSettingsEditComponent,\n ApUsersEditComponent,\n];\n\n@NgModule({\n declarations: COMPONENTS,\n entryComponents: COMPONENTS,\n imports: [\n CommonModule,\n ApDynformsModule,\n ApTranslationModule,\n ButtonModule,\n ApUtilsModule,\n ApPermissionModule\n ],\n exports: COMPONENTS\n})\nexport class ApSettingsEntryComponentsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApEditFieldComponent} from './ap-edit-field.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {DatePickerModule} from '@progress/kendo-angular-dateinputs';\nimport {TabStripModule} from '@progress/kendo-angular-layout';\nimport {ApTranslationModule} from '../../translation/ap-translation.module';\nimport {ApCoreModule} from '../../ap-core/ap-core.module';\nimport {ComboBoxModule} from '@progress/kendo-angular-dropdowns';\nimport {ButtonModule} from '@progress/kendo-angular-buttons';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {ApDynformsModule} from '../../ap-dynforms/ap-dynforms.module';\nimport {ApDynComponentModule} from '../../ap-dyncomponent/ap-dyncomponent.module';\nimport {ApUtilsModule} from '../../ap-utils';\nimport {ApSectionHeaderModule} from '../../ap-section-header/ap-section-header.module';\nimport {ApParameterEntryComponentsModule} from '../ap-parameter-entry-components/ap-parameter-entry-components.module';\nimport {ApMergeFieldComponent} from './ap-merge-field.component';\nimport {ApSplitFieldComponent} from './ap-split-field.component';\nimport {ApMonitoringFieldEntryComponent} from './ap-monitoring-field/ap-monitoring-field-entry.component';\nimport {ApMonitoringDetailEntryComponent} from './ap-monitoring-detail/ap-monitoring-detail-entry.component';\n\nconst COMPONENTS = [\n ApEditFieldComponent,\n ApMergeFieldComponent,\n ApSplitFieldComponent,\n ApMonitoringFieldEntryComponent,\n ApMonitoringDetailEntryComponent\n];\n\n@NgModule({\n declarations: COMPONENTS,\n entryComponents: COMPONENTS,\n imports: [\n CommonModule,\n FormsModule,\n DatePickerModule,\n TabStripModule,\n ReactiveFormsModule,\n ApTranslationModule,\n ApCoreModule,\n ComboBoxModule,\n ButtonModule,\n ApResponsiveTextModule,\n ApDynformsModule,\n ApDynComponentModule,\n ApUtilsModule,\n ApSectionHeaderModule,\n ApParameterEntryComponentsModule,\n ],\n exports: COMPONENTS\n})\nexport class ApFieldManagementEntryComponentsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApDriversEditComponent} from './ap-drivers-edit.component';\nimport {ApMachinesEditComponent} from './ap-machines-edit.component';\nimport {ApInstrumentsEditComponent} from './ap-instruments-edit.component';\nimport {ApFertilizerInorgsEditComponent} from './ap-fertilizer-inorgs-edit.component';\nimport {ApFertilizerOrgsEditComponent} from './ap-fertilizer-orgs-edit.component';\nimport {ApDynformsModule} from '../../ap-dynforms/ap-dynforms.module';\nimport {ApTranslationModule} from '../../translation/ap-translation.module';\nimport {ApDynComponentModule} from '../../ap-dyncomponent/ap-dyncomponent.module';\nimport {ApSubFarmsEditComponent} from './ap-subfarms-edit.component';\nimport {ApUsersAssignmentFarmEditComponent} from './ap-users-assignment-farm-edit.component';\nimport {ApUsersInvitationEditComponent} from './ap-users-invitation-edit.component';\nimport {ApTooltipModule} from '../../ap-tooltip/ap-tooltip.module';\nimport {ApUserContactsEditComponent} from './ap-user-contacts-edit.component';\n\nconst COMPONENTS = [\n ApDriversEditComponent,\n ApMachinesEditComponent,\n ApInstrumentsEditComponent,\n ApFertilizerInorgsEditComponent,\n ApFertilizerOrgsEditComponent,\n ApSubFarmsEditComponent,\n ApUsersAssignmentFarmEditComponent,\n ApUsersInvitationEditComponent,\n ApUserContactsEditComponent\n];\n\n@NgModule({\n declarations: COMPONENTS,\n entryComponents: COMPONENTS,\n imports: [\n CommonModule,\n ApDynformsModule,\n ApTranslationModule,\n ApDynComponentModule,\n ApTooltipModule\n ],\n exports: COMPONENTS,\n})\nexport class ApBasedataEntryComponentsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApTranslationsEditComponent} from './ap-translations-edit.component';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ApTranslationModule} from '../../translation/ap-translation.module';\nimport {ApCoreModule} from '../../ap-core/ap-core.module';\nimport {DropDownListModule} from '@progress/kendo-angular-dropdowns';\nimport {BodyModule, GridModule} from '@progress/kendo-angular-grid';\nimport {ApDynformsModule} from '../../ap-dynforms/ap-dynforms.module';\nimport {ApDynComponentModule} from '../../ap-dyncomponent/ap-dyncomponent.module';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {ApTooltipModule} from '../../ap-tooltip/ap-tooltip.module';\nimport {TextBoxModule} from '@progress/kendo-angular-inputs';\nimport {ApJobsEditComponent} from './ap-jobs-edit.component';\nimport {ApParameterDefinitionEditComponent} from './ap-parameter-definition-edit.component';\nimport {ApDynGridsModule} from '../../ap-dyngrids/ap-dyngrids.module';\n\nconst COMPONENTS = [ApTranslationsEditComponent, ApJobsEditComponent, ApParameterDefinitionEditComponent];\n\n@NgModule({\n declarations: COMPONENTS,\n entryComponents: COMPONENTS,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ApTranslationModule,\n ApCoreModule,\n DropDownListModule,\n GridModule,\n ApDynformsModule,\n ApDynGridsModule,\n ApDynComponentModule,\n ApResponsiveTextModule,\n ApTooltipModule,\n BodyModule,\n TextBoxModule,\n ],\n exports: COMPONENTS,\n})\nexport class ApAdministrationEntryComponentsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApEditActionComponent} from './ap-edit-action.component';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ApTranslationModule} from '../../translation/ap-translation.module';\nimport {ApCoreModule} from '../../ap-core/ap-core.module';\nimport {DatePickerModule, TimePickerModule} from '@progress/kendo-angular-dateinputs';\nimport {ComboBoxModule} from '@progress/kendo-angular-dropdowns';\nimport {NumericTextBoxModule} from '@progress/kendo-angular-inputs';\nimport {ApDocuModule} from '../../docu/ap-docu.module';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {ApDynComponentModule} from '../../ap-dyncomponent/ap-dyncomponent.module';\n\nconst COMPONENTS = [\n ApEditActionComponent\n];\n\n@NgModule({\n declarations: COMPONENTS,\n entryComponents: COMPONENTS,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ApTranslationModule,\n ApCoreModule,\n DatePickerModule,\n TimePickerModule,\n ComboBoxModule,\n NumericTextBoxModule,\n ApDocuModule,\n ApResponsiveTextModule,\n ApDynComponentModule\n ],\n exports: COMPONENTS,\n})\nexport class ApDocuEntryComponentsModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {ApNutrientPlanningComponent} from './ap-nutrient-planning.component';\nimport {ButtonModule} from '@progress/kendo-angular-buttons';\nimport {ApDynComponentModule} from '../../ap-dyncomponent/ap-dyncomponent.module';\nimport {ApCoreModule} from '../../ap-core/ap-core.module';\nimport {ApNutrientBookingComponent} from './ap-nutrient-booking.component';\nimport {ApGetCropTypeNamePipe} from '../../nutrient-management/pipes/ap-get-croptype-name.pipe';\n\nconst COMPONENTS = [ApNutrientPlanningComponent, ApNutrientBookingComponent];\n\n@NgModule({\n imports: [\n CommonModule,\n ApResponsiveTextModule,\n ButtonModule,\n ApDynComponentModule,\n ApCoreModule\n ],\n declarations: COMPONENTS,\n exports: COMPONENTS,\n providers: [ApGetCropTypeNamePipe]\n})\nexport class ApNutrientsManagementEntryComponentsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApNFertilizationPlanningEntryComponent} from './ap-n-fertilization-planning-entry.component';\nimport {ApDynComponentModule} from '../../ap-dyncomponent/ap-dyncomponent.module';\nimport {ApStatisticsModule} from '../../statistics/ap-statistics.module';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {ApCoreModule} from '../../ap-core/ap-core.module';\nimport {ButtonModule} from '@progress/kendo-angular-buttons';\nimport {ApNFertilizationBookingComponent} from './ap-n-fertilization-booking.component';\nimport {ApNFertilizationEditComponent} from './ap-n-fertilization-edit.component';\nimport {ApNFertilizationLogfileEditComponent} from './ap-n-fertilization-logfile-edit.component';\nimport {ApNFertilizationShowComponent} from './ap-n-fertilization-show.component';\nimport {ApTranslationModule} from '../../translation/ap-translation.module';\nimport {NFertilizationCommonEntryService} from './services/n-fertilization-common-entry.service';\n\n@NgModule({\n declarations: [\n ApNFertilizationPlanningEntryComponent,\n ApNFertilizationBookingComponent,\n ApNFertilizationEditComponent,\n ApNFertilizationLogfileEditComponent,\n ApNFertilizationShowComponent\n ],\n imports: [\n CommonModule,\n ApDynComponentModule,\n ApStatisticsModule,\n ApResponsiveTextModule,\n ApCoreModule,\n ButtonModule,\n ApTranslationModule\n ],\n providers: [\n NFertilizationCommonEntryService\n ]\n})\nexport class ApNFertilizationEntryComponentsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ApDynComponentModule} from '../../ap-dyncomponent/ap-dyncomponent.module';\nimport {ApStatisticsModule} from '../../statistics/ap-statistics.module';\nimport {ApResponsiveTextModule} from '../../ap-responsive-text/ap-responsive-text.module';\nimport {ApCoreModule} from '../../ap-core/ap-core.module';\nimport {ButtonModule} from '@progress/kendo-angular-buttons';\nimport {PpPlanningWizardComponent} from './planning-wizard/pp-planning-wizard.component';\nimport {PpPlanShowComponent} from './pp-plan-show.component';\nimport {PpPlanBookingComponent} from './pp-plan-booking.component';\nimport {PpPlanBookingShowComponent} from './pp-plan-booking-show.component';\nimport {PpLogfileEditComponent} from './pp-logfile-edit.component';\nimport {PpProductWizardComponent} from './pp-product-wizard/pp-product-wizard.component';\nimport {\n DetailsCommonUiProvider\n} from './planning-wizard/configs/ui-providers/details.common.ui-provider';\nimport {\n DetailsTargetRateUiProvider\n} from './planning-wizard/configs/ui-providers/details.target-rate.ui-provider';\nimport {\n DetailsTargetRateMapPerPlanUiProvider\n} from './planning-wizard/configs/ui-providers/details.target-rate-map-per-plan.ui-provider';\nimport {\n DetailsTargetRateMapPerFieldUiProvider\n} from './planning-wizard/configs/ui-providers/details.target-rate-map-per-field.ui-provider';\nimport {\n DetailsUniformUiProvider\n} from './planning-wizard/configs/ui-providers/details.uniform.ui-provider';\nimport {\n OverviewGridColumnsUiProvider\n} from './planning-wizard/configs/ui-providers/overview.grid-columns.ui-provider';\nimport {\n SelectionGridColumnsUiProvider\n} from './planning-wizard/configs/ui-providers/selection.grid-columns.ui-provider';\n\n@NgModule({\n declarations: [\n PpLogfileEditComponent,\n PpPlanningWizardComponent,\n PpPlanShowComponent,\n PpPlanBookingComponent,\n PpPlanBookingShowComponent,\n PpProductWizardComponent\n ],\n imports: [\n CommonModule,\n ApDynComponentModule,\n ApStatisticsModule,\n ApResponsiveTextModule,\n ApCoreModule,\n ButtonModule\n ],\n providers: [\n SelectionGridColumnsUiProvider,\n DetailsCommonUiProvider,\n DetailsUniformUiProvider,\n DetailsTargetRateUiProvider,\n DetailsTargetRateMapPerFieldUiProvider,\n DetailsTargetRateMapPerPlanUiProvider,\n OverviewGridColumnsUiProvider\n ]\n})\nexport class PpEntryComponentsModule {\n}\n","import {Injectable} from '@angular/core';\nimport {DatabaseNotify} from 'invoker-transport';\nimport {CropGroupStore} from '../base-data/crop.groups.store';\nimport {PlantProtectionProductStore} from '../base-data/plantprotection.product.store';\nimport {MachineStore} from '../docu/machine.store';\nimport {DriverStore} from '../docu/driver.store';\nimport {InstrumentStore} from '../docu/instrument.store';\nimport {CropTypeStore} from '../base-data/crop.types.store';\nimport {SettingsStore} from '../base-data/settings.store';\nimport {SubFarmStore} from '../base-data/subfarm.store';\nimport {MachineLoggerStore} from '../docu/machine.logger.store';\nimport {FertilizerStore} from '../base-data/fertilizer.store';\nimport {VarietyStore} from '../base-data/variety.store';\nimport {SoilSamplePlanningStore} from '../nutrients/soilsampleplanning.store';\nimport {TranslationStore} from '../translation/translation.store';\nimport {LoginStore} from '../login/login.store';\nimport {NewsStore} from '../dashboard/news.store';\nimport {ParameterDefinitionStore} from '../parameter/parameter.definition.store';\nimport {ParameterValuesStore} from '../parameter/parameter.values.store';\nimport {ParameterValuesHistoryStore} from '../parameter/parameter.values.history.store';\nimport {UserContactsStore} from '../base-data/user.contacts.store';\nimport {TerminalsStore} from '../base-data/terminals.store';\nimport {BasicFertilisationSummariesStore} from '../taskmanagement/basic.fertilisation.summaries.store';\nimport {LicenseStore} from '../farm/license.store';\nimport {FieldStore} from '../farm/field.store';\nimport IUpdateResultMessage = Invoker.IUpdateResultMessage;\nimport IResultMessage = Invoker.IResultMessage;\nimport {ApSignalrService} from '../../ap-core/services/ap-signalr.service';\n\n@Injectable({providedIn: 'root'})\nexport class DatabaseNotifyStore {\n static connected = false;\n\n constructor(private backend: ApSignalrService,\n private machineStore: MachineStore,\n private driverStore: DriverStore,\n private instrumentStore: InstrumentStore,\n private cropTypeStore: CropTypeStore,\n private settingsStore: SettingsStore,\n private subFarmStore: SubFarmStore,\n private licenseStore: LicenseStore,\n private machineLoggerStore: MachineLoggerStore,\n private fertilizerStore: FertilizerStore,\n private varietyStore: VarietyStore,\n private plantProtectionProductStore: PlantProtectionProductStore,\n private cropGroupStore: CropGroupStore,\n private soilSamplePlanningStore: SoilSamplePlanningStore,\n private translationStore: TranslationStore,\n private newsStore: NewsStore,\n private parameterDefinitionStore: ParameterDefinitionStore,\n private parameterValuesStore: ParameterValuesStore,\n private parameterValuesHistoryStore: ParameterValuesHistoryStore,\n private loginStore: LoginStore,\n private userContactsStore: UserContactsStore,\n private terminalsStore: TerminalsStore,\n private basicFertilisationSummariesStore: BasicFertilisationSummariesStore,\n private fieldStore: FieldStore) {\n loginStore.BaseDataLoaded.Subscribe('NotifyStore', () => {\n if (DatabaseNotifyStore.connected !== true) {\n this.connect();\n DatabaseNotifyStore.connected = true;\n }\n });\n }\n\n connect(): void {\n this.backend.registerObservable(DatabaseNotify)\n .subscribe((input: IResultMessage) => {\n const d = input.Data as IUpdateResultMessage;\n const selectedStore = this[d.StoreName];\n if (!selectedStore) {\n return;\n }\n const updateMethod = selectedStore['UpdateSource'];\n if (typeof updateMethod !== typeof function (): void {\n }) {\n return;\n }\n updateMethod.call(selectedStore, d.Operation, d.Item, d.ModelName);\n });\n }\n}\n","import {BrowserModule} from '@angular/platform-browser';\nimport {APP_INITIALIZER, ErrorHandler, Injector, LOCALE_ID, NgModule} from '@angular/core';\nimport {ApLayoutComponent} from './layout/components/ap-layout.component';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {BlockCopyDirective} from './ap-core/directives/block-copy.directive';\nimport {ApErrorHandler} from './ap-core/error-handling/ap-errorhandler';\nimport {ApLayoutModule} from './layout/ap-layout.module';\nimport {RoutesModule} from './routes.module';\nimport {ApTranslationPipe} from './translation/pipes/ap-translation.pipe';\nimport {MessageService} from '@progress/kendo-angular-l10n';\nimport {ApKendoMessageService} from './translation/ap-kendomessage.service';\nimport {\n ApSettingsEntryComponentsModule\n} from './entry-components/ap-settings-entry-components/ap-settings-entry-components.module';\nimport {\n ApFieldManagementEntryComponentsModule\n} from './entry-components/ap-field-management-entry-components/ap-field-management-entry-components.module';\nimport {\n ApBasedataEntryComponentsModule\n} from './entry-components/ap-basedata-entry-components/ap-basedata-entry-components.module';\nimport {\n ApAdministrationEntryComponentsModule\n} from './entry-components/ap-administration-entry-components/ap-administration-entry-components.module';\nimport {\n ApDocuEntryComponentsModule\n} from './entry-components/ap-docu-entry-components/ap-docu-entry-components.module';\nimport {ApPermissionGuard} from './guards/ap-permission-guard.service';\nimport {ApDeactivateGuard} from './guards/ap-deactivate.guard';\nimport {PopupModule} from '@progress/kendo-angular-popup';\nimport {NgScrollbarModule} from 'ngx-scrollbar';\nimport {AgriportStoreModule} from './stores/stores.module';\nimport {DatabaseNotifyStore} from './stores/database/notify.store';\nimport {GaugesModule} from '@progress/kendo-angular-gauges';\nimport {\n ApParameterEntryComponentsModule\n} from './entry-components/ap-parameter-entry-components/ap-parameter-entry-components.module';\nimport {ServiceInjector} from './ap-utils/injector';\nimport {\n BurgerMenuEntryComponentsModule\n} from './entry-components/burger-menu-entry-components/burger-menu-entry-components.module';\nimport {TreeViewModule} from '@progress/kendo-angular-treeview';\nimport {\n ColorLegendEntryComponentsModule\n} from './entry-components/color-legend-entry-components/color-legend-entry-components.module';\nimport {\n ApDynamicComponentLoaderModule\n} from './entry-components/ap-dynamic-component-loader/ap-dynamic-component-loader.module';\nimport {TooltipModule} from '@progress/kendo-angular-tooltip';\nimport {\n ApNutrientsManagementEntryComponentsModule\n} from './entry-components/ap-nutrients-management-entry-components/ap-nutrients-management-entry-components.module';\nimport {NotificationModule} from '@progress/kendo-angular-notification';\nimport {\n ApNFertilizationEntryComponentsModule\n} from './entry-components/ap-n-fertilization-entry-components/ap-n-fertilization-entry-components.module';\nimport {ApDeveloperGuard} from './guards/ap-developer-guard';\nimport {Config} from 'invoker-transport';\nimport {APP_CONFIGURATION} from './ap-core/config';\nimport {EditorModule} from '@progress/kendo-angular-editor';\nimport {ApInvitationsGuard} from './guards/ap-invitations-guard';\nimport {\n PpEntryComponentsModule\n} from './entry-components/plant-protection-entry-components/pp-entry-components.module';\nimport {ApSignalrService} from './ap-core/services/ap-signalr.service';\n\n// export function initializeSignalr(signalrService: ApSignalrService): () => Promise {\n// return () => signalrService.initializeConnection();\n// }\n\n@NgModule({\n declarations: [BlockCopyDirective],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n AgriportStoreModule,\n ApFieldManagementEntryComponentsModule, // load Entry Components for FieldManagement\n ApBasedataEntryComponentsModule, // load Entry Components for BaseData\n ApDocuEntryComponentsModule, // load Entry Components for Docu\n ApSettingsEntryComponentsModule, // load Entry Components for Settings\n ApAdministrationEntryComponentsModule, // load Entry Components for Administration\n ApNutrientsManagementEntryComponentsModule, // load Entry Components for Nutrients\n ApNFertilizationEntryComponentsModule, // load Entry Components for Nutrients\n PpEntryComponentsModule, // load entry components for plant protection\n ApParameterEntryComponentsModule,\n ApLayoutModule,\n BurgerMenuEntryComponentsModule,\n ColorLegendEntryComponentsModule,\n RoutesModule, // Application Routes for Lazy Loading Modules\n PopupModule,\n NgScrollbarModule,\n GaugesModule,\n TreeViewModule,\n ApDynamicComponentLoaderModule,\n TooltipModule,\n NotificationModule,\n EditorModule\n ],\n providers: [\n // {\n // provide: APP_INITIALIZER,\n // useFactory: initializeSignalr,\n // deps: [ApSignalrService],\n // multi: false\n // },\n {\n provide: ErrorHandler,\n useClass: ApErrorHandler\n },\n {\n provide: MessageService,\n useClass: ApKendoMessageService\n },\n {\n provide: LOCALE_ID,\n useValue: 'en'\n },\n ApTranslationPipe,\n ApPermissionGuard,\n ApDeactivateGuard,\n ApInvitationsGuard,\n ApDeveloperGuard\n ],\n bootstrap: [\n ApLayoutComponent\n ]\n})\nexport class AppModule {\n // import the DatabaseNotifyStore to connect when Agriport was loaded\n // this Service was not used on components it runs in the Background\n constructor(private databaseNotifyStore: DatabaseNotifyStore,\n private injector: Injector) {\n // register the Angular Injector to inject Angular Services in Typescript Classes\n // outside of Angular\n ServiceInjector.instance = injector;\n Config.BackendAddress = APP_CONFIGURATION.BackendAddress;\n }\n}\n","import {ApplicationRef, enableProdMode} from '@angular/core';\nimport {platformBrowserDynamic} from '@angular/platform-browser-dynamic';\nimport {AppModule} from './app/app.module';\nimport {environment} from './environments/environment';\nimport {enableDebugTools} from '@angular/platform-browser';\nimport './app/debug-utils/ApplicationTracer';\nimport 'invoker-transport';\n\nif (environment.Production) {\n enableProdMode();\n} else {\n window['mapFunctions'] = {};\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .then(moduleRef => {\n if (window.location.host === '127.0.0.1:9030' && !environment.Production) {\n const applicationRef = moduleRef.injector.get(ApplicationRef);\n const componentRef = applicationRef.components[0];\n enableDebugTools(componentRef);\n console.log('Angular Profiler active');\n }\n })\n .catch(err => console.log(err));\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { Injectable, EventEmitter, Input, Output, HostBinding, HostListener, Directive, Optional, ElementRef, Renderer2, NgZone, isDevMode, ContentChildren, QueryList, Component, NgModule, TemplateRef, ViewContainerRef, InjectionToken, Inject, ContentChild, ViewChild, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { BehaviorSubject, Subject, fromEvent, merge, Subscription } from 'rxjs';\nimport { Keys, isChanged, isDocumentAvailable, hasObservers, guid, EventsModule } from '@progress/kendo-angular-common';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { filter, take } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { CommonModule } from '@angular/common';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport { sequence, query, style, stagger, animate, AnimationBuilder } from '@angular/animations';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@progress/kendo-angular-popup';\nimport * as ɵngcc4 from '@angular/animations';\nimport * as ɵngcc5 from '@progress/kendo-angular-common';\n\nconst _c0 = [[[\"\", \"kendoButton\", \"\"]]];\nconst _c1 = [\"[kendoButton]\"];\nfunction ListComponent_li_1_1_ng_template_0_Template(rf, ctx) { }\nconst _c2 = function (a0, a1) { return { templateRef: a0, $implicit: a1 }; };\nfunction ListComponent_li_1_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_li_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n} if (rf & 2) {\n const dataItem_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c2, ctx_r3.itemTemplate == null ? null : ctx_r3.itemTemplate.templateRef, dataItem_r1));\n} }\nfunction ListComponent_li_1_ng_template_2_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 8);\n} if (rf & 2) {\n const dataItem_r1 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r7.getIconClasses(dataItem_r1));\n} }\nfunction ListComponent_li_1_ng_template_2_img_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"img\", 9);\n} if (rf & 2) {\n const dataItem_r1 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵproperty(\"src\", dataItem_r1.imageUrl, ɵngcc0.ɵɵsanitizeUrl);\n} }\nfunction ListComponent_li_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_li_1_ng_template_2_span_0_Template, 1, 1, \"span\", 6);\n ɵngcc0.ɵɵtemplate(1, ListComponent_li_1_ng_template_2_img_1_Template, 1, 1, \"img\", 7);\n ɵngcc0.ɵɵtext(2);\n} if (rf & 2) {\n const dataItem_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", dataItem_r1.icon || dataItem_r1.iconClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", dataItem_r1.imageUrl);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.getText(dataItem_r1), \" \");\n} }\nconst _c3 = function (a1) { return { \"k-item\": true, \"k-state-disabled\": a1 }; };\nfunction ListComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function ListComponent_li_1_Template_li_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const index_r2 = restoredCtx.index; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onClick(index_r2); })(\"blur\", function ListComponent_li_1_Template_li_blur_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.onBlur(); });\n ɵngcc0.ɵɵtemplate(1, ListComponent_li_1_1_Template, 1, 4, null, 3);\n ɵngcc0.ɵɵtemplate(2, ListComponent_li_1_ng_template_2_Template, 3, 3, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r1 = ctx.$implicit;\n const index_r2 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"index\", index_r2)(\"ngClass\", ɵngcc0.ɵɵpureFunction1(5, _c3, dataItem_r1.disabled));\n ɵngcc0.ɵɵattribute(\"aria-disabled\", dataItem_r1.disabled ? true : false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.itemTemplate == null ? null : ctx_r0.itemTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !(ctx_r0.itemTemplate == null ? null : ctx_r0.itemTemplate.templateRef));\n} }\nconst _c4 = [\"button\"];\nconst _c5 = [\"arrowButton\"];\nconst _c6 = [\"popupTemplate\"];\nconst _c7 = [\"container\"];\nfunction SplitButtonComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-button-list\", 8);\n ɵngcc0.ɵɵlistener(\"onItemClick\", function SplitButtonComponent_ng_template_8_Template_kendo_button_list_onItemClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.onItemClick($event); })(\"keydown\", function SplitButtonComponent_ng_template_8_Template_kendo_button_list_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.keyDownHandler($event); })(\"keypress\", function SplitButtonComponent_ng_template_8_Template_kendo_button_list_keypress_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.keyPressHandler($event); })(\"keyup\", function SplitButtonComponent_ng_template_8_Template_kendo_button_list_keyup_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.keyUpHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"id\", ctx_r3.listId)(\"data\", ctx_r3.data)(\"textField\", ctx_r3.textField)(\"itemTemplate\", ctx_r3.itemTemplate);\n ɵngcc0.ɵɵattribute(\"dir\", ctx_r3.dir);\n} }\nconst _c10 = [\"*\"];\nconst _c11 = [\"buttonList\"];\nfunction DropDownButtonComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-button-list\", 4, 5);\n ɵngcc0.ɵɵlistener(\"onItemClick\", function DropDownButtonComponent_ng_template_3_Template_kendo_button_list_onItemClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.onItemClick($event); })(\"keydown\", function DropDownButtonComponent_ng_template_3_Template_kendo_button_list_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.keyDownHandler($event); })(\"keypress\", function DropDownButtonComponent_ng_template_3_Template_kendo_button_list_keypress_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.keyPressHandler($event); })(\"keyup\", function DropDownButtonComponent_ng_template_3_Template_kendo_button_list_keyup_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.keyUpHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"id\", ctx_r2.listId)(\"data\", ctx_r2.data)(\"textField\", ctx_r2.textField)(\"itemTemplate\", ctx_r2.itemTemplate);\n ɵngcc0.ɵɵattribute(\"dir\", ctx_r2.dir);\n} }\nfunction ChipComponent_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 7);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.selectedIconClasses);\n} }\nfunction ChipComponent_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 8);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r1.iconClasses);\n} }\nfunction ChipComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r2.label, \" \");\n} }\nfunction ChipComponent_ng_content_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngIf\", \"!label\"]);\n} }\nfunction ChipComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function ChipComponent_span_6_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.onRemoveClick($event); });\n ɵngcc0.ɵɵelement(1, \"span\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.removeIconClasses);\n} }\nfunction FloatingActionButtonComponent_2_ng_template_0_Template(rf, ctx) { }\nfunction FloatingActionButtonComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FloatingActionButtonComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.fabTemplate == null ? null : ctx_r1.fabTemplate.templateRef);\n} }\nfunction FloatingActionButtonComponent_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 7);\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r6.iconClasses);\n} }\nfunction FloatingActionButtonComponent_ng_container_3_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r7.text);\n} }\nfunction FloatingActionButtonComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, FloatingActionButtonComponent_ng_container_3_span_1_Template, 1, 1, \"span\", 5);\n ɵngcc0.ɵɵtemplate(2, FloatingActionButtonComponent_ng_container_3_span_2_Template, 2, 1, \"span\", 6);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.icon || ctx_r2.iconClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.text);\n} }\nfunction FloatingActionButtonComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ul\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function FloatingActionButtonComponent_ng_template_4_Template_ul_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onItemClick($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.dialClass)(\"dialItems\", ctx_r4.dialItems)(\"dialItemTemplate\", ctx_r4.dialItemTemplate == null ? null : ctx_r4.dialItemTemplate.templateRef)(\"align\", ctx_r4.align);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", ctx_r4.id);\n} }\nconst _c12 = function (a0, a1) { return { keydown: a0, click: a1 }; };\nconst _c13 = [\"kendoDialList\", \"\"];\nfunction DialListComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"li\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const idx_r2 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"item\", ctx_r0.dialItems[idx_r2])(\"index\", idx_r2)(\"dialItemTemplate\", ctx_r0.dialItemTemplate)(\"isFocused\", ctx_r0.isFocused(idx_r2))(\"ngClass\", item_r1.cssClass)(\"ngStyle\", item_r1.cssStyle)(\"align\", ctx_r0.align);\n} }\nconst _c14 = [\"kendoDialItem\", \"\"];\nfunction DialItemComponent_0_ng_template_0_Template(rf, ctx) { }\nconst _c15 = function (a0, a1, a2) { return { $implicit: a0, index: a1, isFocused: a2 }; };\nfunction DialItemComponent_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DialItemComponent_0_ng_template_0_Template, 0, 0, \"ng-template\", 1);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.dialItemTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c15, ctx_r0.item, ctx_r0.index, ctx_r0.isFocused));\n} }\nfunction DialItemComponent_ng_container_1_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.item.label);\n} }\nfunction DialItemComponent_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 5);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.iconClasses);\n} }\nfunction DialItemComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, DialItemComponent_ng_container_1_span_1_Template, 2, 1, \"span\", 2);\n ɵngcc0.ɵɵtemplate(2, DialItemComponent_ng_container_1_span_2_Template, 1, 1, \"span\", 3);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.item.label);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.item.icon || ctx_r1.item.iconClass);\n} }\nlet KendoButtonService = class KendoButtonService {\n /**\n * @hidden\n */\n constructor() {\n this.buttonLookChange = new BehaviorSubject('default');\n this.buttonClicked = new Subject();\n this.buttonClicked$ = this.buttonClicked.asObservable();\n }\n click(button) {\n this.buttonClicked.next(button);\n }\n setButtonLook(look) {\n this.buttonLookChange.next(look);\n }\n};\nKendoButtonService.ɵfac = function KendoButtonService_Factory(t) { return new (t || KendoButtonService)(); };\nKendoButtonService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: KendoButtonService, factory: function (t) { return KendoButtonService.ɵfac(t); } });\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: 1635937762,\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 SPAN_TAG_NAME = 'SPAN';\n/**\n * Represents the Kendo UI Button component for Angular.\n */\nlet ButtonDirective = class 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 * Adds visual weight to the Button and makes it primary.\n */\n this.primary = false;\n /**\n * Changes the visual appearance by using alternative styling options\n * ([more information and examples]({% slug appearance_button %})).\n *\n * The available values are:\n * * [`ButtonLook`]({% slug api_buttons_buttonlook %}) = `flat` | `outline`\n * * `clear`\n */\n this.look = 'default';\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._focused = false;\n this.domEvents = [];\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.localizationChangeSubscription = localization.changes\n .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-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 this.addIcon(iconClassName);\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 this.isDisabled = disabled;\n this.renderer.setProperty(this.element, 'disabled', disabled);\n }\n get disabled() {\n return this.isDisabled;\n }\n set isFocused(isFocused) {\n this.toggleClass('k-state-focused', isFocused);\n this._focused = isFocused;\n }\n get isFocused() {\n return this._focused;\n }\n get classButton() {\n return true;\n }\n get classPrimary() {\n return this.primary;\n }\n get isToggleable() {\n return this.toggleable;\n }\n get isFlat() {\n return this.look === 'flat';\n }\n get isBare() {\n return this.look === 'bare';\n }\n get isOutline() {\n return this.look === 'outline';\n }\n get isClear() {\n return this.look === 'clear';\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 ngOnInit() {\n const isSpan = this.element.tagName === SPAN_TAG_NAME;\n if (this.service) {\n this.buttonLookChangeSubscription = this.service.buttonLookChange\n .pipe(filter((look) => look !== 'default'))\n .subscribe((look) => this.look = look);\n }\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.domEvents.push(this.renderer.listen(this.element, 'click', this._onButtonClick.bind(this)));\n this.domEvents.push(this.renderer.listen(this.element, 'keydown', (event) => {\n if (isSpan && (event.keyCode === Keys.Space || event.keyCode === Keys.Enter)) {\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 ngAfterViewChecked() {\n this.setIconTextClasses();\n }\n ngOnDestroy() {\n this.imageNode = null;\n this.iconNode = null;\n this.renderer = null;\n this.localizationChangeSubscription.unsubscribe();\n if (this.service && this.buttonLookChangeSubscription) {\n this.buttonLookChangeSubscription.unsubscribe();\n }\n clearTimeout(this.deferTimeout);\n this.domEvents.forEach(unbindHandler => unbindHandler());\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-state-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 if (isDocumentAvailable()) {\n return String(this.element.textContent).trim().length > 0;\n }\n else {\n return false;\n }\n }\n addImgIcon(imageUrl) {\n let renderer = this.renderer;\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 this.prependChild(this.imageNode);\n }\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 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.imageNode = 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 }\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 const hasText = this.hasText();\n this.toggleClass('k-button-icon', hasIcon && !hasText);\n this.toggleClass('k-button-icontext', hasIcon && 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};\nButtonDirective.ɵfac = function ButtonDirective_Factory(t) { return new (t || ButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(KendoButtonService, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ButtonDirective, selectors: [[\"button\", \"kendoButton\", \"\"], [\"span\", \"kendoButton\", \"\"]], hostVars: 21, hostBindings: function ButtonDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focus\", function ButtonDirective_focus_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function ButtonDirective_blur_HostBindingHandler() { return ctx.onBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.roleSetter)(\"aria-disabled\", ctx.classDisabled)(\"dir\", ctx.getDirection);\n ɵngcc0.ɵɵclassProp(\"k-button\", ctx.classButton)(\"k-primary\", ctx.classPrimary)(\"k-toggle-button\", ctx.isToggleable)(\"k-flat\", ctx.isFlat)(\"k-bare\", ctx.isBare)(\"k-outline\", ctx.isOutline)(\"k-button-clear\", ctx.isClear)(\"k-state-disabled\", ctx.classDisabled)(\"k-state-selected\", ctx.classActive);\n } }, inputs: { toggleable: \"toggleable\", primary: \"primary\", look: \"look\", role: \"role\", togglable: \"togglable\", selected: \"selected\", tabIndex: \"tabIndex\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\" }, outputs: { selectedChange: \"selectedChange\", click: \"click\" }, exportAs: [\"kendoButton\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ButtonDirective.prototype, \"toggleable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ButtonDirective.prototype, \"togglable\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ButtonDirective.prototype, \"primary\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ButtonDirective.prototype, \"look\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ButtonDirective.prototype, \"selected\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ButtonDirective.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ButtonDirective.prototype, \"icon\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ButtonDirective.prototype, \"iconClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ButtonDirective.prototype, \"imageUrl\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ButtonDirective.prototype, \"disabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ButtonDirective.prototype, \"role\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ButtonDirective.prototype, \"selectedChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ButtonDirective.prototype, \"click\", void 0);\n__decorate([\n HostBinding('class.k-button'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"classButton\", null);\n__decorate([\n HostBinding('class.k-primary'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"classPrimary\", null);\n__decorate([\n HostBinding('class.k-toggle-button'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"isToggleable\", null);\n__decorate([\n HostBinding('class.k-flat'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"isFlat\", null);\n__decorate([\n HostBinding('class.k-bare'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"isBare\", null);\n__decorate([\n HostBinding('class.k-outline'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"isOutline\", null);\n__decorate([\n HostBinding('class.k-button-clear'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"isClear\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"roleSetter\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"classDisabled\", null);\n__decorate([\n HostBinding('class.k-state-selected'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"classActive\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ButtonDirective.prototype, \"getDirection\", null);\n__decorate([\n HostListener('focus'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ButtonDirective.prototype, \"onFocus\", null);\n__decorate([\n HostListener('blur'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ButtonDirective.prototype, \"onBlur\", null);\nButtonDirective = __decorate([ __param(2, Optional()),\n __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n KendoButtonService,\n LocalizationService,\n NgZone])\n], ButtonDirective);\n\n/* tslint:disable:no-null-keyword */\n/* tslint:disable:no-bitwise */\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/**\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 */\nlet ButtonGroupComponent = class 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 * Changes the visual appearance by using alternative styling options\n * ([more information and examples]({% slug styling_buttongroup %})).\n * The `look` property of the ButtonGroup takes precedence over the `look` property\n * of the individual buttons that are part of the group.\n *\n * The available values are:\n * * `flat`\n * * `outline`\n */\n this.look = 'default';\n /**\n * Fires every time keyboard navigation occurs.\n */\n this.navigate = new EventEmitter();\n this._tabIndex = 0;\n this.currentTabIndex = 0;\n this.localizationChangeSubscription = 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 isFlat() {\n return this.look === 'flat';\n }\n get isBare() {\n return this.look === 'bare';\n }\n get isOutline() {\n return this.look === 'outline';\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.service.setButtonLook(this.look);\n this.subscription = 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.subscription.unsubscribe();\n this.localizationChangeSubscription.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 = function ButtonGroupComponent_Factory(t) { return new (t || ButtonGroupComponent)(ɵngcc0.ɵɵdirectiveInject(KendoButtonService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nButtonGroupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ButtonGroupComponent, selectors: [[\"kendo-buttongroup\"]], contentQueries: function ButtonGroupComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ButtonDirective, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.buttons = _t);\n } }, hostVars: 18, hostBindings: function ButtonGroupComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function ButtonGroupComponent_keydown_HostBindingHandler($event) { return ctx.keydown($event); })(\"focus\", function ButtonGroupComponent_focus_HostBindingHandler() { return ctx.onFocus(); })(\"focusout\", function ButtonGroupComponent_focusout_HostBindingHandler($event) { return ctx.focusout($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.getRole)(\"dir\", ctx.dir)(\"aria-disabled\", ctx.ariaDisabled)(\"tabindex\", ctx.wrapperTabIndex);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.wrapperWidth);\n ɵngcc0.ɵɵclassProp(\"k-button-group\", ctx.wrapperClass)(\"k-state-disabled\", ctx.disabledClass)(\"k-button-group-stretched\", ctx.stretchedClass)(\"k-button-group-flat\", ctx.isFlat)(\"k-button-group-bare\", ctx.isBare)(\"k-button-group-outline\", ctx.isOutline);\n } }, inputs: { selection: \"selection\", look: \"look\", tabIndex: \"tabIndex\", disabled: \"disabled\", width: \"width\" }, outputs: { navigate: \"navigate\" }, exportAs: [\"kendoButtonGroup\"], features: [ɵngcc0.ɵɵProvidersFeature([\n KendoButtonService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.buttongroup'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c1, decls: 1, vars: 0, template: function ButtonGroupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c0);\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n Input('disabled'),\n __metadata(\"design:type\", Boolean)\n], ButtonGroupComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input('selection'),\n __metadata(\"design:type\", String)\n], ButtonGroupComponent.prototype, \"selection\", void 0);\n__decorate([\n Input('width'),\n __metadata(\"design:type\", String)\n], ButtonGroupComponent.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ButtonGroupComponent.prototype, \"look\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ButtonGroupComponent.prototype, \"tabIndex\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ButtonGroupComponent.prototype, \"navigate\", void 0);\n__decorate([\n ContentChildren(ButtonDirective),\n __metadata(\"design:type\", QueryList)\n], ButtonGroupComponent.prototype, \"buttons\", void 0);\n__decorate([\n HostBinding('class.k-button-group'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"wrapperClass\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('class.k-button-group-stretched'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"stretchedClass\", null);\n__decorate([\n HostBinding('class.k-button-group-flat'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"isFlat\", null);\n__decorate([\n HostBinding('class.k-button-group-bare'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"isBare\", null);\n__decorate([\n HostBinding('class.k-button-group-outline'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"isOutline\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"getRole\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"ariaDisabled\", null);\n__decorate([\n HostBinding('style.width'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"wrapperWidth\", null);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], ButtonGroupComponent.prototype, \"wrapperTabIndex\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ButtonGroupComponent.prototype, \"keydown\", null);\n__decorate([\n HostListener('focus'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ButtonGroupComponent.prototype, \"onFocus\", null);\n__decorate([\n HostListener('focusout', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ButtonGroupComponent.prototype, \"focusout\", null);\nButtonGroupComponent = __decorate([ __metadata(\"design:paramtypes\", [KendoButtonService,\n LocalizationService,\n ElementRef])\n], ButtonGroupComponent);\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 */\nlet ButtonModule = class ButtonModule {\n};\nButtonModule.ɵfac = function ButtonModule_Factory(t) { return new (t || ButtonModule)(); };\nButtonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ButtonModule });\nButtonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ButtonGroupComponent`—The ButtonGroupComponent component class.\n */\nlet ButtonGroupModule = class ButtonGroupModule {\n};\nButtonGroupModule.ɵfac = function ButtonGroupModule_Factory(t) { return new (t || ButtonGroupModule)(); };\nButtonGroupModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ButtonGroupModule });\nButtonGroupModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, ButtonModule]] });\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 */\nlet ButtonItemTemplateDirective = class ButtonItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nButtonItemTemplateDirective.ɵfac = function ButtonItemTemplateDirective_Factory(t) { return new (t || ButtonItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nButtonItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ButtonItemTemplateDirective, selectors: [[\"\", \"kendoDropDownButtonItemTemplate\", \"\"], [\"\", \"kendoSplitButtonItemTemplate\", \"\"]] });\nButtonItemTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ButtonItemTemplateDirective);\n\n/**\n * @hidden\n */\nlet ListComponent = class ListComponent {\n constructor() {\n this.onItemClick = new EventEmitter();\n this.onItemBlur = new EventEmitter();\n validatePackage(packageMetadata);\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 = function ListComponent_Factory(t) { return new (t || ListComponent)(); };\nListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ListComponent, selectors: [[\"kendo-button-list\"]], inputs: { data: \"data\", textField: \"textField\", itemTemplate: \"itemTemplate\" }, outputs: { onItemClick: \"onItemClick\", onItemBlur: \"onItemBlur\" }, decls: 2, vars: 1, consts: [[\"unselectable\", \"on\", \"role\", \"menu\", 1, \"k-list\", \"k-reset\"], [\"role\", \"menuitem\", \"unselectable\", \"on\", \"tabindex\", \"-1\", \"kendoButtonFocusable\", \"\", 3, \"index\", \"ngClass\", \"click\", \"blur\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"menuitem\", \"unselectable\", \"on\", \"tabindex\", \"-1\", \"kendoButtonFocusable\", \"\", 3, \"index\", \"ngClass\", \"click\", \"blur\"], [4, \"ngIf\"], [3, \"ngIf\"], [3, \"templateContext\"], [3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"k-image\", \"alt\", \"\", 3, \"src\", 4, \"ngIf\"], [3, \"ngClass\"], [\"alt\", \"\", 1, \"k-image\", 3, \"src\"]], template: function ListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵtemplate(1, ListComponent_li_1_Template, 3, 7, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data);\n } }, directives: function () { return [ɵngcc2.NgForOf, FocusableDirective, ɵngcc2.NgClass, ɵngcc2.NgIf, TemplateContextDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ListComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ButtonItemTemplateDirective)\n], ListComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"onItemClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"onItemBlur\", void 0);\nListComponent = __decorate([ __metadata(\"design:paramtypes\", [])\n], ListComponent);\n\n/**\n * @hidden\n */\nlet FocusService = class FocusService {\n /**\n * @hidden\n */\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 = function FocusService_Factory(t) { return new (t || FocusService)(); };\nFocusService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FocusService, factory: function (t) { return FocusService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet FocusableDirective = class FocusableDirective {\n constructor(focusService, elementRef, renderer) {\n this.focusService = focusService;\n this.renderer = renderer;\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-state-focused');\n }\n else {\n this.renderer.removeClass(this.element, 'k-state-focused');\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.unsubscribeEvents();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.focusSubscription = this.focusService.onFocus.subscribe((index) => {\n if (this.index === index) {\n this.renderer.addClass(this.element, 'k-state-focused');\n this.element.focus();\n }\n else {\n this.renderer.removeClass(this.element, 'k-state-focused');\n }\n });\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.focusSubscription) {\n this.focusSubscription.unsubscribe();\n }\n }\n};\nFocusableDirective.ɵfac = function FocusableDirective_Factory(t) { return new (t || FocusableDirective)(ɵngcc0.ɵɵdirectiveInject(FocusService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nFocusableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FocusableDirective, selectors: [[\"\", \"kendoButtonFocusable\", \"\"]], inputs: { index: \"index\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FocusableDirective.prototype, \"index\", void 0);\nFocusableDirective = __decorate([ __metadata(\"design:paramtypes\", [FocusService, ElementRef, Renderer2])\n], FocusableDirective);\n\n/**\n * @hidden\n */\nlet TemplateContextDirective = class 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 = function TemplateContextDirective_Factory(t) { return new (t || TemplateContextDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nTemplateContextDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TemplateContextDirective, selectors: [[\"\", \"templateContext\", \"\"]], inputs: { templateContext: \"templateContext\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TemplateContextDirective.prototype, \"templateContext\", null);\nTemplateContextDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef])\n], TemplateContextDirective);\n\nconst EXPORTED_DIRECTIVES = [\n ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective\n];\n/**\n * @hidden\n */\nlet ListModule = class ListModule {\n};\nListModule.ɵfac = function ListModule_Factory(t) { return new (t || ListModule)(); };\nListModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ListModule });\nListModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\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 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/* tslint:disable:deprecation */\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.focusService = focusService;\n this.navigationService = navigationService;\n this.wrapper = wrapperRef.nativeElement;\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr'));\n this.subscribeEvents();\n }\n get popupClasses() {\n const popupClasses = ['k-list-container', 'k-reset', 'k-group'];\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 this.unsubscribeEvents();\n clearTimeout(this.focusFirstTimeout);\n clearTimeout(this.blurTimeout);\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subscribeListItemFocusEvent();\n this.subscribeComponentBlurredEvent();\n this.subscribeNavigationEvents();\n }\n subscribeListItemFocusEvent() {\n this.focusSubscription = this.focusService.onFocus.subscribe(() => {\n this._isFocused = true;\n });\n }\n subscribeComponentBlurredEvent() {\n this._zone.runOutsideAngular(() => {\n this.tabSubscription = this.navigationService.tab.pipe(filter(() => this._isFocused)).subscribe(this.handleTab.bind(this));\n this.componentBlurredSubscription = 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.navigationSubscription = this.navigationService.navigate.subscribe(this.focusService.focus.bind(this.focusService));\n this.enterUpSubscription = this.navigationService.enterup.subscribe(() => {\n this.enterHandler();\n this.focusWrapper();\n });\n this.openSubscription = this.navigationService.open.subscribe(() => {\n if (!this._open) {\n this.togglePopupVisibility();\n this.focusFirstItem();\n }\n else {\n this.focusWrapper();\n }\n });\n this.closeSubscription = merge(this.navigationService.close, this.navigationService.esc).subscribe(() => this.focusWrapper());\n }\n enterHandler() { } // tslint:disable-line\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.unsubscribe(this.componentBlurredSubscription);\n this.unsubscribe(this.focusSubscription);\n this.unsubscribe(this.navigationSubscription);\n this.unsubscribe(this.enterPressSubscription);\n this.unsubscribe(this.enterUpSubscription);\n this.unsubscribe(this.openSubscription);\n this.unsubscribe(this.closeSubscription);\n this.unsubscribe(this.tabSubscription);\n }\n unsubscribe(subscription) {\n if (subscription) {\n subscription.unsubscribe();\n }\n }\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 = function ListButton_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nListButton.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ListButton });\n\n/**\n * @hidden\n */\nconst NAVIGATION_CONFIG = new InjectionToken('navigation.config');\n\n/**\n * @hidden\n */\nlet NavigationService = class 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 = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(NAVIGATION_CONFIG)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __param(0, Inject(NAVIGATION_CONFIG)),\n __metadata(\"design:paramtypes\", [Object])\n], NavigationService);\n\nconst NAVIGATION_SETTINGS = {\n useLeftRightArrows: true\n};\nconst ɵ0 = NAVIGATION_SETTINGS;\nconst NAVIGATION_SETTINGS_PROVIDER = {\n provide: NAVIGATION_CONFIG,\n useValue: ɵ0\n};\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 */\nlet SplitButtonComponent = class SplitButtonComponent 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 this.localization = localization;\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 * Changes the visual appearance by using alternative styling options.\n *\n * The available values are:\n * * `flat`\n * * `outline`\n */\n this.look = 'default';\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(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the SplitButton gets blurred.\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\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 this.listId = guid();\n /**\n * @hidden\n */\n this.activeArrow = false;\n this.buttonText = '';\n this.lockFocus = false;\n this._itemClick = this.itemClick;\n this._blur = this.onBlur;\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 isFlat() {\n return this.look === 'flat';\n }\n get isOutline() {\n return this.look === 'outline';\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 }\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.popupRef.popupAnchorViewportLeave.subscribe(() => (this.openState = false));\n this.popupRef.popupOpen.subscribe(this.focusFirstItem.bind(this));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n};\nSplitButtonComponent.ɵfac = function SplitButtonComponent_Factory(t) { return new (t || SplitButtonComponent)(ɵngcc0.ɵɵdirectiveInject(FocusService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSplitButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SplitButtonComponent, selectors: [[\"kendo-splitbutton\"]], contentQueries: function SplitButtonComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ButtonItemTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);\n } }, viewQuery: function SplitButtonComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, 7);\n ɵngcc0.ɵɵviewQuery(_c5, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c6, 7);\n ɵngcc0.ɵɵviewQuery(_c7, 7, ViewContainerRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.button = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.arrowButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.containerRef = _t.first);\n } }, hostVars: 11, hostBindings: function SplitButtonComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function SplitButtonComponent_keydown_HostBindingHandler($event) { return ctx.keydown($event); })(\"keypress\", function SplitButtonComponent_keypress_HostBindingHandler($event) { return ctx.keypress($event); })(\"keyup\", function SplitButtonComponent_keyup_HostBindingHandler($event) { return ctx.keyup($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-state-focused\", ctx.isFocused)(\"k-flat\", ctx.isFlat)(\"k-outline\", ctx.isOutline)(\"k-split-button\", ctx.widgetClasses)(\"k-button-group\", ctx.widgetClasses);\n } }, inputs: { text: \"text\", icon: \"icon\", iconClass: \"iconClass\", type: \"type\", imageUrl: \"imageUrl\", look: \"look\", tabIndex: \"tabIndex\", arrowButtonIcon: \"arrowButtonIcon\", disabled: \"disabled\", popupSettings: \"popupSettings\", data: \"data\", textField: \"textField\", buttonClass: \"buttonClass\", arrowButtonClass: \"arrowButtonClass\" }, outputs: { buttonClick: \"buttonClick\", itemClick: \"itemClick\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, exportAs: [\"kendoSplitButton\"], features: [ɵngcc0.ɵɵProvidersFeature([\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.splitbutton'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c10, decls: 12, vars: 24, consts: function () { let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the SplitButton aria-label\n * @meaning kendo.splitbutton.splitButtonLabel\n */\n const MSG_EXTERNAL_109169670915733361$$DIST_FESM2015_INDEX_JS_9 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_8 = MSG_EXTERNAL_109169670915733361$$DIST_FESM2015_INDEX_JS_9;\n }\n else {\n i18n_8 = $localize `:kendo.splitbutton.splitButtonLabel|The text for the SplitButton aria-label␟ee2d4273142c9694614c71170691ca688717ef31␟109169670915733361:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[\"kendoSplitButtonLocalizedMessages\", \"\", 6, \"splitButtonLabel\"], [\"splitButtonLabel\", i18n_8], [\"kendoButton\", \"\", 3, \"type\", \"look\", \"tabindex\", \"disabled\", \"icon\", \"iconClass\", \"imageUrl\", \"ngClass\", \"focus\", \"click\", \"blur\", \"mousedown\", \"mouseup\"], [\"button\", \"\"], [\"kendoButton\", \"\", \"type\", \"button\", 3, \"disabled\", \"icon\", \"look\", \"tabindex\", \"ngClass\", \"click\", \"mousedown\", \"mouseup\"], [\"arrowButton\", \"\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [3, \"id\", \"data\", \"textField\", \"itemTemplate\", \"onItemClick\", \"keydown\", \"keypress\", \"keyup\"]]; }, template: function SplitButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵi18nAttributes(1, 1);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵelementStart(2, \"button\", 2, 3);\n ɵngcc0.ɵɵlistener(\"focus\", function SplitButtonComponent_Template_button_focus_2_listener() { return ctx.onButtonFocus(); })(\"click\", function SplitButtonComponent_Template_button_click_2_listener() { return ctx.onButtonClick(); })(\"blur\", function SplitButtonComponent_Template_button_blur_2_listener() { return ctx.onButtonBlur(); })(\"mousedown\", function SplitButtonComponent_Template_button_mousedown_2_listener() { return ctx.toggleButtonActiveState(true); })(\"mouseup\", function SplitButtonComponent_Template_button_mouseup_2_listener() { return ctx.toggleButtonActiveState(false); });\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵprojection(5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"button\", 4, 5);\n ɵngcc0.ɵɵlistener(\"click\", function SplitButtonComponent_Template_button_click_6_listener() { return ctx.onArrowButtonClick(); })(\"mousedown\", function SplitButtonComponent_Template_button_mousedown_6_listener() { return ctx.toggleArrowButtonActiveState(true); })(\"mouseup\", function SplitButtonComponent_Template_button_mouseup_6_listener() { return ctx.toggleArrowButtonActiveState(false); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, SplitButtonComponent_ng_template_8_Template, 1, 5, \"ng-template\", null, 6, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(10, null, 7);\n } if (rf & 2) {\n ɵngcc0.ɵɵi18nExp(\"{buttonText} splitbutton\");\n ɵngcc0.ɵɵi18nApply(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx.active);\n ɵngcc0.ɵɵproperty(\"type\", ctx.type)(\"look\", ctx.look)(\"tabindex\", ctx.componentTabIndex)(\"disabled\", ctx.disabled)(\"icon\", ctx.icon)(\"iconClass\", ctx.iconClass)(\"imageUrl\", ctx.imageUrl)(\"ngClass\", ctx.buttonClass);\n ɵngcc0.ɵɵattribute(\"aria-disabled\", ctx.disabled)(\"aria-expanded\", ctx.openState)(\"aria-haspopup\", true)(\"aria-owns\", ctx.listId)(\"aria-label\", ctx.ariaLabel);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.text, \"\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx.activeArrow);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled)(\"icon\", ctx.arrowButtonIcon)(\"look\", ctx.look)(\"tabindex\", -1)(\"ngClass\", ctx.arrowButtonClass);\n } }, directives: function () { return [LocalizedSplitButtonMessagesDirective, ButtonDirective, ɵngcc2.NgClass, ListComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitButtonComponent.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitButtonComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitButtonComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitButtonComponent.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitButtonComponent.prototype, \"imageUrl\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitButtonComponent.prototype, \"look\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], SplitButtonComponent.prototype, \"disabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], SplitButtonComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SplitButtonComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitButtonComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], SplitButtonComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SplitButtonComponent.prototype, \"buttonClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SplitButtonComponent.prototype, \"arrowButtonClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitButtonComponent.prototype, \"arrowButtonIcon\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SplitButtonComponent.prototype, \"buttonClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SplitButtonComponent.prototype, \"itemClick\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], SplitButtonComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], SplitButtonComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SplitButtonComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SplitButtonComponent.prototype, \"close\", void 0);\n__decorate([\n ContentChild(ButtonItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ButtonItemTemplateDirective)\n], SplitButtonComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n ViewChild('button', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SplitButtonComponent.prototype, \"button\", void 0);\n__decorate([\n ViewChild('arrowButton', { static: true, read: ElementRef }),\n __metadata(\"design:type\", ElementRef)\n], SplitButtonComponent.prototype, \"arrowButton\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], SplitButtonComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], SplitButtonComponent.prototype, \"containerRef\", void 0);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], SplitButtonComponent.prototype, \"isFocused\", null);\n__decorate([\n HostBinding('class.k-flat'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SplitButtonComponent.prototype, \"isFlat\", null);\n__decorate([\n HostBinding('class.k-outline'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SplitButtonComponent.prototype, \"isOutline\", null);\n__decorate([\n HostBinding('class.k-split-button'),\n HostBinding('class.k-button-group'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SplitButtonComponent.prototype, \"widgetClasses\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], SplitButtonComponent.prototype, \"dir\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], SplitButtonComponent.prototype, \"keydown\", null);\n__decorate([\n HostListener('keypress', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], SplitButtonComponent.prototype, \"keypress\", null);\n__decorate([\n HostListener('keyup', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], SplitButtonComponent.prototype, \"keyup\", null);\nSplitButtonComponent = __decorate([ __metadata(\"design:paramtypes\", [FocusService,\n NavigationService,\n ElementRef,\n NgZone,\n PopupService,\n ElementRef,\n LocalizationService,\n ChangeDetectorRef])\n], SplitButtonComponent);\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { splitButtonLabel: \"splitButtonLabel\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"splitButtonLabel\", void 0);\n\nvar LocalizedSplitButtonMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedSplitButtonMessagesDirective = LocalizedSplitButtonMessagesDirective_1 = class LocalizedSplitButtonMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedSplitButtonMessagesDirective.ɵfac = function LocalizedSplitButtonMessagesDirective_Factory(t) { return new (t || LocalizedSplitButtonMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedSplitButtonMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedSplitButtonMessagesDirective, selectors: [[\"\", \"kendoSplitButtonLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSplitButtonMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedSplitButtonMessagesDirective = LocalizedSplitButtonMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedSplitButtonMessagesDirective);\n\nvar SplitButtonCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_buttons %}).\n */\nlet SplitButtonCustomMessagesComponent = SplitButtonCustomMessagesComponent_1 = class SplitButtonCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nSplitButtonCustomMessagesComponent.ɵfac = function SplitButtonCustomMessagesComponent_Factory(t) { return new (t || SplitButtonCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nSplitButtonCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SplitButtonCustomMessagesComponent, selectors: [[\"kendo-splitbutton-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => SplitButtonCustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SplitButtonCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nSplitButtonCustomMessagesComponent = SplitButtonCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], SplitButtonCustomMessagesComponent);\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `SplitButtonComponent`—The SplitButtonComponent component class.\n */\nlet SplitButtonModule = class SplitButtonModule {\n};\nSplitButtonModule.ɵfac = function SplitButtonModule_Factory(t) { return new (t || SplitButtonModule)(); };\nSplitButtonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SplitButtonModule });\nSplitButtonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, PopupModule, ButtonModule, ListModule], ListModule] });\n\nconst NAVIGATION_SETTINGS$1 = {\n useLeftRightArrows: true\n};\nconst ɵ0$1 = NAVIGATION_SETTINGS$1;\nconst NAVIGATION_SETTINGS_PROVIDER$1 = {\n provide: NAVIGATION_CONFIG,\n useValue: ɵ0$1\n};\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 */\nlet DropDownButtonComponent = class 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 * Adds visual weight to the default button and makes it primary.\n */\n this.primary = false;\n /**\n * Changes the visual appearance by using alternative styling options.\n *\n * The available values are:\n * * `flat`\n * * `outline`\n */\n this.look = 'default';\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(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the DropDownButton gets blurred.\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\n this.listId = guid();\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 * @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 isFlat() {\n return this.look === 'flat';\n }\n get isOutline() {\n return this.look === 'outline';\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.navigationSubscription = this.navigationService.navigate\n .subscribe(this.onArrowKeyNavigate.bind(this));\n this.enterUpSubscription = this.navigationService.enterup.subscribe(this.onNavigationEnterUp.bind(this));\n this.openSubscription = this.navigationService.open.subscribe(this.onNavigationOpen.bind(this));\n this.closeSubscription = 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.popupRef.popupAnchorViewportLeave.subscribe(() => this.openState = false);\n this.popupRef.popupOpen.subscribe(this.focusFirstItem.bind(this));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n};\nDropDownButtonComponent.ɵfac = function DropDownButtonComponent_Factory(t) { return new (t || DropDownButtonComponent)(ɵngcc0.ɵɵdirectiveInject(FocusService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nDropDownButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DropDownButtonComponent, selectors: [[\"kendo-dropdownbutton\"]], contentQueries: function DropDownButtonComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ButtonItemTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);\n } }, viewQuery: function DropDownButtonComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 5);\n ɵngcc0.ɵɵviewQuery(_c6, 7);\n ɵngcc0.ɵɵviewQuery(_c7, 7, ViewContainerRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.button = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.buttonList = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n } }, hostVars: 9, hostBindings: function DropDownButtonComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function DropDownButtonComponent_keydown_HostBindingHandler($event) { return ctx.keydown($event); })(\"keypress\", function DropDownButtonComponent_keypress_HostBindingHandler($event) { return ctx.keypress($event); })(\"keyup\", function DropDownButtonComponent_keyup_HostBindingHandler($event) { return ctx.keyup($event); })(\"mousedown\", function DropDownButtonComponent_mousedown_HostBindingHandler($event) { return ctx.mousedown($event); })(\"mouseup\", function DropDownButtonComponent_mouseup_HostBindingHandler($event) { return ctx.mouseup($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-state-focused\", ctx.focused)(\"k-flat\", ctx.isFlat)(\"k-outline\", ctx.isOutline)(\"k-dropdown-button\", ctx.widgetClasses);\n } }, inputs: { icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", primary: \"primary\", look: \"look\", tabIndex: \"tabIndex\", popupSettings: \"popupSettings\", disabled: \"disabled\", data: \"data\", textField: \"textField\", buttonClass: \"buttonClass\" }, outputs: { itemClick: \"itemClick\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoDropDownButton\"], features: [ɵngcc0.ɵɵProvidersFeature([\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$1,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownbutton'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c10, decls: 7, vars: 14, consts: [[\"kendoButton\", \"\", \"role\", \"menu\", \"type\", \"button\", 3, \"tabindex\", \"disabled\", \"icon\", \"iconClass\", \"imageUrl\", \"ngClass\", \"look\", \"primary\", \"click\", \"focus\", \"blur\"], [\"button\", \"\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [3, \"id\", \"data\", \"textField\", \"itemTemplate\", \"onItemClick\", \"keydown\", \"keypress\", \"keyup\"], [\"buttonList\", \"\"]], template: function DropDownButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"button\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function DropDownButtonComponent_Template_button_click_0_listener() { return ctx.openPopup(); })(\"focus\", function DropDownButtonComponent_Template_button_focus_0_listener() { return ctx.handleFocus(); })(\"blur\", function DropDownButtonComponent_Template_button_blur_0_listener() { return ctx.onButtonBlur(); });\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, DropDownButtonComponent_ng_template_3_Template, 2, 5, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(5, null, 3);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx.active);\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx.componentTabIndex)(\"disabled\", ctx.disabled)(\"icon\", ctx.icon)(\"iconClass\", ctx.iconClass)(\"imageUrl\", ctx.imageUrl)(\"ngClass\", ctx.buttonClass)(\"look\", ctx.look)(\"primary\", ctx.primary);\n ɵngcc0.ɵɵattribute(\"aria-disabled\", ctx.disabled)(\"aria-expanded\", ctx.openState)(\"aria-haspopup\", true)(\"aria-owns\", ctx.listId);\n } }, directives: [ButtonDirective, ɵngcc2.NgClass, ListComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownButtonComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownButtonComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownButtonComponent.prototype, \"imageUrl\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownButtonComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownButtonComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], DropDownButtonComponent.prototype, \"disabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownButtonComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownButtonComponent.prototype, \"primary\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownButtonComponent.prototype, \"look\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropDownButtonComponent.prototype, \"buttonClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownButtonComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownButtonComponent.prototype, \"itemClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownButtonComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownButtonComponent.prototype, \"close\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownButtonComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownButtonComponent.prototype, \"onBlur\", void 0);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DropDownButtonComponent.prototype, \"focused\", null);\n__decorate([\n HostBinding('class.k-flat'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DropDownButtonComponent.prototype, \"isFlat\", null);\n__decorate([\n HostBinding('class.k-outline'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DropDownButtonComponent.prototype, \"isOutline\", null);\n__decorate([\n HostBinding('class.k-dropdown-button'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DropDownButtonComponent.prototype, \"widgetClasses\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], DropDownButtonComponent.prototype, \"dir\", null);\n__decorate([\n ContentChild(ButtonItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ButtonItemTemplateDirective)\n], DropDownButtonComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n ViewChild('button', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], DropDownButtonComponent.prototype, \"button\", void 0);\n__decorate([\n ViewChild('buttonList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], DropDownButtonComponent.prototype, \"buttonList\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], DropDownButtonComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], DropDownButtonComponent.prototype, \"container\", void 0);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], DropDownButtonComponent.prototype, \"keydown\", null);\n__decorate([\n HostListener('keypress', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], DropDownButtonComponent.prototype, \"keypress\", null);\n__decorate([\n HostListener('keyup', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], DropDownButtonComponent.prototype, \"keyup\", null);\n__decorate([\n HostListener('mousedown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], DropDownButtonComponent.prototype, \"mousedown\", null);\n__decorate([\n HostListener('mouseup', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], DropDownButtonComponent.prototype, \"mouseup\", null);\nDropDownButtonComponent = __decorate([ __metadata(\"design:paramtypes\", [FocusService,\n NavigationService,\n ElementRef,\n NgZone,\n PopupService,\n ElementRef,\n LocalizationService,\n ChangeDetectorRef])\n], DropDownButtonComponent);\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownButtonComponent`—The DropDownButtonComponent component class.\n */\nlet DropDownButtonModule = class DropDownButtonModule {\n};\nDropDownButtonModule.ɵfac = function DropDownButtonModule_Factory(t) { return new (t || DropDownButtonModule)(); };\nDropDownButtonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DropDownButtonModule });\nDropDownButtonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, PopupModule, ListModule, ButtonModule], ListModule] });\n\n/**\n * Displays a Chip that represents an input, attribute or an action.\n */\nlet ChipComponent = class 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 * Changes the visual appearance by using alternative styling options.\n *\n * The available values are:\n * * `solid`\n * * `outline`\n * * `filled` (The `filled` option will be deprecated. To apply identical styling, use `solid` instead).\n * * `outlined` (The `outlined` option will be deprecated. To apply identical styling, use `outline` instead).\n */\n this.look = 'solid';\n /**\n * Specifies the selected state of the Chip.\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 */\n this.removable = false;\n /**\n * Specifies the Chip type.\n *\n * The possible values are:\n * - `none` (default)\n * - `success`\n * - `error`\n * - `warning`\n * - `info`\n */\n this.type = 'none';\n /**\n * If set to `true`, the Chip will be disabled.\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.focused = false;\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get ariaChecked() {\n return this.selected;\n }\n get outlineClass() {\n return this.look === 'outline' || this.look === 'outlined';\n }\n get solidClass() {\n return this.look === 'solid' || this.look === 'filled';\n }\n get hasIconClass() {\n return this.icon || this.iconClass ? 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.dynamicRTLSubscription = this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n if (this.detachDomEvents) {\n this.detachDomEvents();\n }\n }\n ngAfterViewInit() {\n const chip = this.element.nativeElement;\n const typeClass = this.typeClass();\n if (this.type !== 'none') {\n this.renderer.addClass(chip, typeClass);\n }\n this.attachElementEventHandlers(chip);\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-icon k-i-${this.icon}`);\n }\n return classes;\n }\n /**\n * @hidden\n */\n get selectedIconClasses() {\n if (this.selectedIcon) {\n return `${this.selectedIcon}`;\n }\n return `k-icon k-i-check`;\n }\n /**\n * @hidden\n */\n get removeIconClasses() {\n if (this.removeIcon) {\n return `${this.removeIcon}`;\n }\n return `k-icon k-i-close-circle`;\n }\n /**\n * @hidden\n */\n typeClass() {\n return {\n 'none': '',\n 'success': 'k-chip-success',\n 'warning': 'k-chip-warning',\n 'error': 'k-chip-error',\n 'info': 'k-chip-info'\n }[this.type];\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 const focusListener = this.renderer.listen(chip, 'focus', () => {\n this.renderer.addClass(chip, 'k-focus');\n });\n const blurListener = this.renderer.listen(chip, 'blur', () => {\n this.renderer.removeClass(chip, 'k-focus');\n });\n const contentClickListener = this.renderer.listen(chip, 'click', (e) => {\n const isRemoveClicked = closest(e.target, '.k-remove-icon');\n if (!isRemoveClicked) {\n this.ngZone.run(() => {\n this.contentClick.emit({ sender: this, originalEvent: e });\n });\n }\n });\n this.detachDomEvents = () => {\n focusListener();\n blurListener();\n contentClickListener();\n };\n });\n }\n};\nChipComponent.ɵfac = function ChipComponent_Factory(t) { return new (t || ChipComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nChipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ChipComponent, selectors: [[\"kendo-chip\"]], hostVars: 18, hostBindings: function ChipComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.tabIndex)(\"dir\", ctx.direction)(\"aria-checked\", ctx.ariaChecked)(\"aria-disabled\", ctx.disabledClass);\n ɵngcc0.ɵɵclassProp(\"k-chip\", ctx.hostClass)(\"k-chip-outline\", ctx.outlineClass)(\"k-chip-solid\", ctx.solidClass)(\"k-chip-has-icon\", ctx.hasIconClass)(\"k-disabled\", ctx.disabledClass)(\"k-selected\", ctx.selectedClass)(\"k-focus\", ctx.focusedClass);\n } }, inputs: { look: \"look\", selected: \"selected\", removable: \"removable\", type: \"type\", disabled: \"disabled\", label: \"label\", icon: \"icon\", iconClass: \"iconClass\", selectedIcon: \"selectedIcon\", removeIcon: \"removeIcon\" }, outputs: { remove: \"remove\", contentClick: \"contentClick\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip'\n }\n ])], ngContentSelectors: _c10, decls: 7, vars: 5, consts: [[1, \"k-selected-icon-wrapper\"], [\"class\", \"k-selected-icon\", 3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"k-chip-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-chip-content\"], [\"class\", \"k-chip-label\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"k-remove-icon\", 3, \"click\", 4, \"ngIf\"], [1, \"k-selected-icon\", 3, \"ngClass\"], [1, \"k-chip-icon\", 3, \"ngClass\"], [1, \"k-chip-label\"], [1, \"k-remove-icon\", 3, \"click\"], [3, \"ngClass\"]], template: function ChipComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵtemplate(1, ChipComponent_span_1_Template, 1, 1, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, ChipComponent_span_2_Template, 1, 1, \"span\", 2);\n ɵngcc0.ɵɵelementStart(3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, ChipComponent_span_4_Template, 2, 1, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, ChipComponent_ng_content_5_Template, 1, 0, \"ng-content\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, ChipComponent_span_6_Template, 2, 1, \"span\", 6);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.selected);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.iconClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.label);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.label);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.removable);\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChipComponent.prototype, \"look\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChipComponent.prototype, \"label\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChipComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChipComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ChipComponent.prototype, \"selected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChipComponent.prototype, \"selectedIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ChipComponent.prototype, \"removable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChipComponent.prototype, \"removeIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChipComponent.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ChipComponent.prototype, \"disabled\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChipComponent.prototype, \"remove\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChipComponent.prototype, \"contentClick\", void 0);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number)\n], ChipComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n HostBinding('attr.aria-checked'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipComponent.prototype, \"ariaChecked\", null);\n__decorate([\n HostBinding('class.k-chip'),\n __metadata(\"design:type\", Boolean)\n], ChipComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-chip-outline'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipComponent.prototype, \"outlineClass\", null);\n__decorate([\n HostBinding('class.k-chip-solid'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipComponent.prototype, \"solidClass\", null);\n__decorate([\n HostBinding('class.k-chip-has-icon'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipComponent.prototype, \"hasIconClass\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('class.k-selected'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipComponent.prototype, \"selectedClass\", null);\n__decorate([\n HostBinding('class.k-focus'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipComponent.prototype, \"focusedClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ChipComponent.prototype, \"direction\", void 0);\nChipComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n NgZone,\n LocalizationService])\n], ChipComponent);\n\nlet ChipListComponent = class ChipListComponent {\n constructor(localizationService, renderer) {\n this.localizationService = localizationService;\n this.renderer = renderer;\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.direction = localizationService.rtl ? 'rtl' : 'ltr';\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-remove-icon');\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 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};\nChipListComponent.ɵfac = function ChipListComponent_Factory(t) { return new (t || ChipListComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nChipListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ChipListComponent, selectors: [[\"kendo-chip-list\"], [\"kendo-chiplist\"]], contentQueries: function ChipListComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ChipComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.chips = _t);\n } }, hostVars: 8, hostBindings: function ChipListComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function ChipListComponent_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-chip-list\", ctx.hostClass)(\"k-selection-single\", ctx.single)(\"k-selection-multiple\", ctx.multiple);\n } }, inputs: { selection: \"selection\" }, outputs: { selectedChange: \"selectedChange\", remove: \"remove\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip-list'\n }\n ])], ngContentSelectors: _c10, decls: 1, vars: 0, template: function ChipListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-chip-list'),\n __metadata(\"design:type\", Boolean)\n], ChipListComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ChipListComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChipListComponent.prototype, \"selection\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChipListComponent.prototype, \"selectedChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChipListComponent.prototype, \"remove\", void 0);\n__decorate([\n ContentChildren(ChipComponent),\n __metadata(\"design:type\", QueryList)\n], ChipListComponent.prototype, \"chips\", void 0);\n__decorate([\n HostBinding('class.k-selection-single'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipListComponent.prototype, \"single\", null);\n__decorate([\n HostBinding('class.k-selection-multiple'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ChipListComponent.prototype, \"multiple\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], ChipListComponent.prototype, \"role\", void 0);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ChipListComponent.prototype, \"onClick\", null);\nChipListComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService, Renderer2])\n], ChipListComponent);\n\nconst exportedModules = [\n ChipComponent,\n ChipListComponent\n];\nconst declarations = [\n ...exportedModules\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 */\nlet ChipModule = class ChipModule {\n};\nChipModule.ɵfac = function ChipModule_Factory(t) { return new (t || ChipModule)(); };\nChipModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ChipModule });\nChipModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\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 */\nlet DialItemTemplateDirective = class DialItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDialItemTemplateDirective.ɵfac = function DialItemTemplateDirective_Factory(t) { return new (t || DialItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDialItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DialItemTemplateDirective, selectors: [[\"\", \"kendoDialItemTemplate\", \"\"]] });\nDialItemTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DialItemTemplateDirective);\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 */\nlet FloatingActionButtonTemplateDirective = class FloatingActionButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFloatingActionButtonTemplateDirective.ɵfac = function FloatingActionButtonTemplateDirective_Factory(t) { return new (t || FloatingActionButtonTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nFloatingActionButtonTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FloatingActionButtonTemplateDirective, selectors: [[\"\", \"kendoFloatingActionButtonTemplate\", \"\"]] });\nFloatingActionButtonTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], FloatingActionButtonTemplateDirective);\n\nconst NAVIGATION_SETTINGS$2 = {\n useLeftRightArrows: false\n};\nconst ɵ0$2 = NAVIGATION_SETTINGS$2;\nconst NAVIGATION_SETTINGS_PROVIDER$2 = {\n provide: NAVIGATION_CONFIG,\n useValue: ɵ0$2\n};\nconst SIZE_CLASSES = {\n small: 'k-fab-sm',\n medium: 'k-fab-md',\n large: 'k-fab-lg'\n};\nconst SHAPE_CLASSES = {\n pill: 'k-fab-pill',\n circle: 'k-fab-circle',\n rectangle: 'k-fab-rectangle',\n square: 'k-fab-square',\n rounded: 'k-fab-rounded'\n};\nconst DEFAULT_DURATION = 180;\nconst DEFAULT_ITEM_GAP = 90;\nconst DEFAULT_OFFSET = '16px';\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 */\nlet FloatingActionButtonComponent = class 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 = 'primary';\n this._size = 'medium';\n this._shape = 'pill';\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 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 * * `inherit`— Applies inherited coloring value.\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 *\n */\n set themeColor(themeColor) {\n this.handleClasses(themeColor, 'themeColor');\n this._themeColor = themeColor;\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 *\n */\n set size(size) {\n this.handleClasses(size, 'size');\n this._size = size;\n }\n get size() {\n return this._size;\n }\n /**\n * Specifies the shape of the FloatingActionButton\n * ([see example]({% slug appearance_floatingactionbutton %}#toc-shape)).\n *\n * The possible values are:\n * * `pill` (Default)—Applies border radius equal to half of the height of the FloatingActionButton.\n * * `circle`—Applies circle shape on the FloatingActionButton.\n * * `rectangle`—Applies rectangular shape on the FloatingActionButton.\n * * `rounded`—Applies rounded shape on the FloatingActionButton.\n * * `square`—Applies square shape on the FloatingActionButton.\n *\n */\n set shape(shape) {\n this.handleClasses(shape, 'shape');\n this._shape = shape;\n }\n get shape() {\n return this._shape;\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 this.applyClasses();\n this.offsetStyles();\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 shouldOpen ? setTimeout(() => this.openDial()) : this.closeDial();\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)) {\n const button = this.button.nativeElement;\n const classesToRemove = {\n themeColor: `k-fab-${this.themeColor}`,\n size: SIZE_CLASSES[this.size],\n shape: SHAPE_CLASSES[this.shape]\n };\n const classesToAdd = {\n themeColor: `k-fab-${inputValue}`,\n size: SIZE_CLASSES[inputValue],\n shape: SHAPE_CLASSES[inputValue]\n };\n this.renderer.removeClass(button, classesToRemove[input]);\n this.renderer.addClass(button, classesToAdd[input]);\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 applyClasses() {\n const hostElement = this.element.nativeElement;\n const button = this.button.nativeElement;\n this.renderer.addClass(button, SHAPE_CLASSES[this.shape]);\n this.renderer.addClass(button, `k-fab-${this.themeColor}`);\n this.renderer.addClass(button, SIZE_CLASSES[this.size]);\n this.renderer.addClass(hostElement, this.alignClass());\n }\n toggleDialWithEvents(open) {\n if (open === this.isOpen) {\n return;\n }\n const event = new PreventableEvent();\n open ? this.open.emit(event) : this.close.emit(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n open ? this.openDial() : this.closeDial();\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 = function FloatingActionButtonComponent_Factory(t) { return new (t || FloatingActionButtonComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(FocusService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.AnimationBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nFloatingActionButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FloatingActionButtonComponent, selectors: [[\"kendo-floatingactionbutton\"]], contentQueries: function FloatingActionButtonComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DialItemTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FloatingActionButtonTemplateDirective, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dialItemTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fabTemplate = _t.first);\n } }, viewQuery: function FloatingActionButtonComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, 7);\n ɵngcc0.ɵɵviewQuery(_c6, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.button = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n } }, hostVars: 5, hostBindings: function FloatingActionButtonComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-pos-fixed\", ctx.fixedClass)(\"k-pos-absolute\", ctx.absoluteClass);\n } }, inputs: { positionMode: \"positionMode\", dialItemAnimation: \"dialItemAnimation\", tabIndex: \"tabIndex\", dialItems: \"dialItems\", themeColor: \"themeColor\", size: \"size\", shape: \"shape\", disabled: \"disabled\", align: \"align\", offset: \"offset\", icon: \"icon\", iconClass: \"iconClass\", buttonClass: \"buttonClass\", dialClass: \"dialClass\", text: \"text\" }, outputs: { onBlur: \"blur\", onFocus: \"focus\", dialItemClick: \"dialItemClick\", open: \"open\", close: \"close\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$2,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatingactionbutton'\n }\n ])], decls: 6, vars: 19, consts: [[\"type\", \"button\", 3, \"tabIndex\", \"ngClass\", \"disabled\", \"kendoEventsOutsideAngular\", \"scope\", \"focus\", \"blur\"], [\"button\", \"\"], [4, \"ngIf\"], [\"popupTemplate\", \"\"], [3, \"ngTemplateOutlet\"], [3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"k-fab-text\", 4, \"ngIf\"], [3, \"ngClass\"], [1, \"k-fab-text\"], [\"kendoDialList\", \"\", 3, \"ngClass\", \"dialItems\", \"dialItemTemplate\", \"align\", \"click\"]], template: function FloatingActionButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 0, 1);\n ɵngcc0.ɵɵlistener(\"focus\", function FloatingActionButtonComponent_Template_button_focus_0_listener() { return ctx.focusHandler(); })(\"blur\", function FloatingActionButtonComponent_Template_button_blur_0_listener() { return ctx.blurHandler(); });\n ɵngcc0.ɵɵtemplate(2, FloatingActionButtonComponent_2_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵtemplate(3, FloatingActionButtonComponent_ng_container_3_Template, 3, 2, \"ng-container\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, FloatingActionButtonComponent_ng_template_4_Template, 1, 5, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-fab\", true)(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"tabIndex\", ctx.componentTabIndex)(\"ngClass\", ctx.buttonClass)(\"disabled\", ctx.disabled)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(16, _c12, ctx.keyDownHandler, ctx.clickHandler))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"id\", ctx.id)(\"role\", ctx.role)(\"aria-disabled\", ctx.disabled)(\"aria-expanded\", ctx.ariaExpanded)(\"aria-haspopup\", ctx.ariaHasPopup);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.fabTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.fabTemplate);\n } }, directives: function () { return [ɵngcc2.NgClass, ɵngcc5.EventsOutsideAngularDirective, ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet, DialListComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-pos-fixed'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FloatingActionButtonComponent.prototype, \"fixedClass\", null);\n__decorate([\n HostBinding('class.k-pos-absolute'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FloatingActionButtonComponent.prototype, \"absoluteClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], FloatingActionButtonComponent.prototype, \"direction\", void 0);\n__decorate([\n ViewChild('button', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], FloatingActionButtonComponent.prototype, \"button\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], FloatingActionButtonComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ContentChild(DialItemTemplateDirective, { static: true }),\n __metadata(\"design:type\", DialItemTemplateDirective)\n], FloatingActionButtonComponent.prototype, \"dialItemTemplate\", void 0);\n__decorate([\n ContentChild(FloatingActionButtonTemplateDirective, { static: true }),\n __metadata(\"design:type\", FloatingActionButtonTemplateDirective)\n], FloatingActionButtonComponent.prototype, \"fabTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FloatingActionButtonComponent.prototype, \"themeColor\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FloatingActionButtonComponent.prototype, \"size\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FloatingActionButtonComponent.prototype, \"shape\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], FloatingActionButtonComponent.prototype, \"disabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FloatingActionButtonComponent.prototype, \"align\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FloatingActionButtonComponent.prototype, \"offset\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FloatingActionButtonComponent.prototype, \"positionMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FloatingActionButtonComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FloatingActionButtonComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FloatingActionButtonComponent.prototype, \"buttonClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FloatingActionButtonComponent.prototype, \"dialClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FloatingActionButtonComponent.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FloatingActionButtonComponent.prototype, \"dialItemAnimation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FloatingActionButtonComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FloatingActionButtonComponent.prototype, \"dialItems\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], FloatingActionButtonComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], FloatingActionButtonComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('dialItemClick'),\n __metadata(\"design:type\", EventEmitter)\n], FloatingActionButtonComponent.prototype, \"dialItemClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FloatingActionButtonComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FloatingActionButtonComponent.prototype, \"close\", void 0);\nFloatingActionButtonComponent = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n FocusService,\n NavigationService,\n NgZone,\n PopupService,\n AnimationBuilder,\n LocalizationService])\n], FloatingActionButtonComponent);\n\n/**\n * @hidden\n */\nlet DialListComponent = class 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 = function DialListComponent_Factory(t) { return new (t || DialListComponent)(ɵngcc0.ɵɵdirectiveInject(FocusService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nDialListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DialListComponent, selectors: [[\"\", \"kendoDialList\", \"\"]], hostVars: 6, hostBindings: function DialListComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-fab-items\", ctx.hostClass)(\"k-fab-items-bottom\", ctx.bottomClass)(\"k-fab-items-top\", ctx.topClass);\n } }, inputs: { dialItems: \"dialItems\", dialItemTemplate: \"dialItemTemplate\", align: \"align\" }, attrs: _c13, decls: 1, vars: 1, consts: [[4, \"ngFor\", \"ngForOf\"], [\"kendoButtonFocusable\", \"\", \"kendoDialItem\", \"\", 3, \"item\", \"index\", \"dialItemTemplate\", \"isFocused\", \"ngClass\", \"ngStyle\", \"align\"]], template: function DialListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DialListComponent_ng_container_0_Template, 2, 7, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.dialItems);\n } }, directives: function () { return [ɵngcc2.NgForOf, FocusableDirective, DialItemComponent, ɵngcc2.NgClass, ɵngcc2.NgStyle]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-fab-items'),\n __metadata(\"design:type\", Boolean)\n], DialListComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-fab-items-bottom'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DialListComponent.prototype, \"bottomClass\", null);\n__decorate([\n HostBinding('class.k-fab-items-top'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DialListComponent.prototype, \"topClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], DialListComponent.prototype, \"dialItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], DialListComponent.prototype, \"dialItemTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialListComponent.prototype, \"align\", void 0);\nDialListComponent = __decorate([ __metadata(\"design:paramtypes\", [FocusService, ChangeDetectorRef])\n], DialListComponent);\n\n/**\n * @hidden\n */\nlet DialItemComponent = class 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 = function DialItemComponent_Factory(t) { return new (t || DialItemComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nDialItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DialItemComponent, selectors: [[\"\", \"kendoDialItem\", \"\"]], hostVars: 9, hostBindings: function DialItemComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"aria-disabled\", ctx.disabledClass)(\"title\", ctx.title)(\"aria-label\", ctx.title)(\"data-fab-item-index\", ctx.indexAttr);\n ɵngcc0.ɵɵclassProp(\"k-fab-item\", ctx.hostClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { cssClass: \"cssClass\", cssStyle: \"cssStyle\", isFocused: \"isFocused\", index: \"index\", item: \"item\", dialItemTemplate: \"dialItemTemplate\", align: \"align\" }, attrs: _c14, decls: 2, vars: 2, consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"k-fab-item-text\", 4, \"ngIf\"], [3, \"ngClass\", 4, \"ngIf\"], [1, \"k-fab-item-text\"], [3, \"ngClass\"]], template: function DialItemComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DialItemComponent_0_Template, 1, 6, null, 0);\n ɵngcc0.ɵɵtemplate(1, DialItemComponent_ng_container_1_Template, 3, 2, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dialItemTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.dialItemTemplate);\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet, ɵngcc2.NgClass], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-fab-item'),\n __metadata(\"design:type\", Boolean)\n], DialItemComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], DialItemComponent.prototype, \"role\", void 0);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DialItemComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.title'),\n HostBinding('attr.aria-label'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], DialItemComponent.prototype, \"title\", null);\n__decorate([\n HostBinding('attr.data-fab-item-index'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], DialItemComponent.prototype, \"indexAttr\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialItemComponent.prototype, \"cssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialItemComponent.prototype, \"cssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DialItemComponent.prototype, \"isFocused\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialItemComponent.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialItemComponent.prototype, \"item\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], DialItemComponent.prototype, \"dialItemTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialItemComponent.prototype, \"align\", void 0);\nDialItemComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n LocalizationService])\n], DialItemComponent);\n\nconst exportedModules$1 = [\n FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective\n];\nconst declarations$1 = [\n ...exportedModules$1,\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 */\nlet FloatingActionButtonModule = class FloatingActionButtonModule {\n};\nFloatingActionButtonModule.ɵfac = function FloatingActionButtonModule_Factory(t) { return new (t || FloatingActionButtonModule)(); };\nFloatingActionButtonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FloatingActionButtonModule });\nFloatingActionButtonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, PopupModule, ListModule, EventsModule]] });\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 */\nlet ButtonsModule = class ButtonsModule {\n};\nButtonsModule.ɵfac = function ButtonsModule_Factory(t) { return new (t || ButtonsModule)(); };\nButtonsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ButtonsModule });\nButtonsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(KendoButtonService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ButtonDirective, [{\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]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: KendoButtonService, decorators: [{\n type: Optional\n }] }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { toggleable: [{\n type: Input\n }], primary: [{\n type: Input\n }], look: [{\n type: Input\n }], role: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], click: [{\n type: Output\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 }], classButton: [{\n type: HostBinding,\n args: ['class.k-button']\n }], classPrimary: [{\n type: HostBinding,\n args: ['class.k-primary']\n }], isToggleable: [{\n type: HostBinding,\n args: ['class.k-toggle-button']\n }], isFlat: [{\n type: HostBinding,\n args: ['class.k-flat']\n }], isBare: [{\n type: HostBinding,\n args: ['class.k-bare']\n }], isOutline: [{\n type: HostBinding,\n args: ['class.k-outline']\n }], isClear: [{\n type: HostBinding,\n args: ['class.k-button-clear']\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-state-disabled']\n }], classActive: [{\n type: HostBinding,\n args: ['class.k-state-selected']\n }], getDirection: [{\n type: HostBinding,\n args: ['attr.dir']\n }], \n /**\n * @hidden\n */\n onFocus: [{\n type: HostListener,\n args: ['focus']\n }], \n /**\n * @hidden\n */\n onBlur: [{\n type: HostListener,\n args: ['blur']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ButtonGroupComponent, [{\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 }], function () { return [{ type: KendoButtonService }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ElementRef }]; }, { selection: [{\n type: Input,\n args: ['selection']\n }], look: [{\n type: Input\n }], navigate: [{\n type: Output\n }], tabIndex: [{\n type: Input\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-button-group']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], stretchedClass: [{\n type: HostBinding,\n args: ['class.k-button-group-stretched']\n }], isFlat: [{\n type: HostBinding,\n args: ['class.k-button-group-flat']\n }], isBare: [{\n type: HostBinding,\n args: ['class.k-button-group-bare']\n }], isOutline: [{\n type: HostBinding,\n args: ['class.k-button-group-outline']\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 }], \n /**\n * @hidden\n */\n keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], \n /**\n * @hidden\n */\n onFocus: [{\n type: HostListener,\n args: ['focus']\n }], \n /**\n * @hidden\n */\n focusout: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }], disabled: [{\n type: Input,\n args: ['disabled']\n }], width: [{\n type: Input,\n args: ['width']\n }], buttons: [{\n type: ContentChildren,\n args: [ButtonDirective]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ButtonModule, [{\n type: NgModule,\n args: [{\n declarations: [ButtonDirective],\n exports: [ButtonDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ButtonModule, { declarations: [ButtonDirective], exports: [ButtonDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ButtonGroupModule, [{\n type: NgModule,\n args: [{\n declarations: [ButtonGroupComponent],\n exports: [ButtonGroupComponent],\n imports: [CommonModule, ButtonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ButtonGroupModule, { declarations: function () { return [ButtonGroupComponent]; }, imports: function () { return [CommonModule, ButtonModule]; }, exports: function () { return [ButtonGroupComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ButtonItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-button-list',\n template: `\n
    \n
  • \n \n \n \n \n \n {{ getText(dataItem) }}\n \n
  • \n
\n `\n }]\n }], function () { return []; }, { onItemClick: [{\n type: Output\n }], onItemBlur: [{\n type: Output\n }], data: [{\n type: Input\n }], textField: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusableDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoButtonFocusable]'\n }]\n }], function () { return [{ type: FocusService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { index: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplateContextDirective, [{\n type: Directive,\n args: [{\n selector: '[templateContext]' // tslint:disable-line:directive-selector\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { templateContext: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListModule, [{\n type: NgModule,\n args: [{\n declarations: [EXPORTED_DIRECTIVES],\n exports: [EXPORTED_DIRECTIVES],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ListModule, { declarations: function () { return [ListComponent, FocusableDirective, ButtonItemTemplateDirective, TemplateContextDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ListComponent, FocusableDirective, ButtonItemTemplateDirective, TemplateContextDirective]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [NAVIGATION_CONFIG]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SplitButtonComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitButton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.splitbutton'\n }\n ],\n selector: 'kendo-splitbutton',\n template: `\n \n \n \n {{ text }}\n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: FocusService }, { type: NavigationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc3.PopupService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { 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 }], look: [{\n type: Input\n }], tabIndex: [{\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 }], disabled: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], data: [{\n type: Input\n }], isFocused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], isFlat: [{\n type: HostBinding,\n args: ['class.k-flat']\n }], isOutline: [{\n type: HostBinding,\n args: ['class.k-outline']\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 }], \n /**\n * @hidden\n */\n keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], \n /**\n * @hidden\n */\n keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], \n /**\n * @hidden\n */\n keyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }], textField: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], arrowButtonClass: [{\n type: Input\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 }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedSplitButtonMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSplitButtonMessagesDirective_1)\n }\n ],\n selector: '[kendoSplitButtonLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SplitButtonCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SplitButtonCustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-splitbutton-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SplitButtonModule, [{\n type: NgModule,\n args: [{\n declarations: [SplitButtonComponent, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent],\n exports: [SplitButtonComponent, ListModule, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent],\n imports: [CommonModule, PopupModule, ButtonModule, ListModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SplitButtonModule, { declarations: function () { return [SplitButtonComponent, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent]; }, imports: function () { return [CommonModule, PopupModule, ButtonModule, ListModule]; }, exports: function () { return [SplitButtonComponent, ListModule, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownButtonComponent, [{\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 }], function () { return [{ type: FocusService }, { type: NavigationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc3.PopupService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], primary: [{\n type: Input\n }], look: [{\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 }], popupSettings: [{\n type: Input\n }], disabled: [{\n type: Input\n }], data: [{\n type: Input\n }], focused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], isFlat: [{\n type: HostBinding,\n args: ['class.k-flat']\n }], isOutline: [{\n type: HostBinding,\n args: ['class.k-outline']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-dropdown-button']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], \n /**\n * @hidden\n */\n keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], \n /**\n * @hidden\n */\n keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], \n /**\n * @hidden\n */\n keyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }], \n /**\n * @hidden\n */\n mousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], \n /**\n * @hidden\n */\n mouseup: [{\n type: HostListener,\n args: ['mouseup', ['$event']]\n }], textField: [{\n type: Input\n }], buttonClass: [{\n type: Input\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownButtonModule, [{\n type: NgModule,\n args: [{\n declarations: [DropDownButtonComponent],\n exports: [DropDownButtonComponent, ListModule],\n imports: [CommonModule, PopupModule, ListModule, ButtonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DropDownButtonModule, { declarations: function () { return [DropDownButtonComponent]; }, imports: function () { return [CommonModule, PopupModule, ListModule, ButtonModule]; }, exports: function () { return [DropDownButtonComponent, ListModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChipComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-chip',\n template: `\n \n \n \n \n\n \n \n\n \n \n {{ label }}\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 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ɵngcc1.LocalizationService }]; }, { look: [{\n type: Input\n }], selected: [{\n type: Input\n }], removable: [{\n type: Input\n }], type: [{\n type: Input\n }], disabled: [{\n type: Input\n }], remove: [{\n type: Output\n }], contentClick: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-chip']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], ariaChecked: [{\n type: HostBinding,\n args: ['attr.aria-checked']\n }], outlineClass: [{\n type: HostBinding,\n args: ['class.k-chip-outline']\n }], solidClass: [{\n type: HostBinding,\n args: ['class.k-chip-solid']\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 }], label: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], selectedIcon: [{\n type: Input\n }], removeIcon: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChipListComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-chip-list, kendo-chiplist',\n template: `\n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip-list'\n }\n ]\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Renderer2 }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-chip-list']\n }], selection: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], remove: [{\n type: Output\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], single: [{\n type: HostBinding,\n args: ['class.k-selection-single']\n }], multiple: [{\n type: HostBinding,\n args: ['class.k-selection-multiple']\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], chips: [{\n type: ContentChildren,\n args: [ChipComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChipModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ChipModule, { declarations: function () { return [ChipComponent, ChipListComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ChipComponent, ChipListComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDialItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FloatingActionButtonTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoFloatingActionButtonTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FloatingActionButtonComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-floatingactionbutton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$2,\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 }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: FocusService }, { type: NavigationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc3.PopupService }, { type: ɵngcc4.AnimationBuilder }, { type: ɵngcc1.LocalizationService }]; }, { positionMode: [{\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 }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], fixedClass: [{\n type: HostBinding,\n args: ['class.k-pos-fixed']\n }], absoluteClass: [{\n type: HostBinding,\n args: ['class.k-pos-absolute']\n }], themeColor: [{\n type: Input\n }], size: [{\n type: Input\n }], shape: [{\n type: Input\n }], disabled: [{\n type: Input\n }], align: [{\n type: Input\n }], offset: [{\n type: Input\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: true }]\n }], fabTemplate: [{\n type: ContentChild,\n args: [FloatingActionButtonTemplateDirective, { static: true }]\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialListComponent, [{\n type: Component,\n args: [{\n selector: '[kendoDialList]',\n template: `\n \n \n \n \n `\n }]\n }], function () { return [{ type: FocusService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialItemComponent, [{\n type: Component,\n args: [{\n selector: '[kendoDialItem]',\n template: `\n \n \n\n \n {{ item.label }}\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }]; }, { 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-state-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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FloatingActionButtonModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule, PopupModule, ListModule, EventsModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FloatingActionButtonModule, { declarations: function () { return [FloatingActionButtonComponent, DialItemTemplateDirective, FloatingActionButtonTemplateDirective, DialListComponent, DialItemComponent]; }, imports: function () { return [CommonModule, PopupModule, ListModule, EventsModule]; }, exports: function () { return [FloatingActionButtonComponent, DialItemTemplateDirective, FloatingActionButtonTemplateDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ButtonsModule, [{\n type: NgModule,\n args: [{\n exports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ButtonsModule, { exports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { KendoButtonService, DialItemComponent, DialListComponent, FocusService, FocusableDirective, ButtonItemTemplateDirective, ListButton, ListComponent, ListModule, TemplateContextDirective, NAVIGATION_CONFIG, NavigationService, LocalizedSplitButtonMessagesDirective, Messages, ButtonDirective, ButtonDirective as Button, ButtonGroupComponent, ButtonGroupComponent as ButtonGroup, ButtonGroupModule, ButtonModule, ButtonsModule, SplitButtonComponent, SplitButtonComponent as SplitButton, SplitButtonModule, SplitButtonCustomMessagesComponent, DropDownButtonComponent, DropDownButtonComponent as DropDownButton, DropDownButtonModule, ChipComponent, ChipListComponent, ChipModule, FloatingActionButtonModule, FloatingActionButtonComponent, FloatingActionButtonTemplateDirective, DialItemTemplateDirective };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, Input, Output, Injectable, NgZone, Directive, Optional, TemplateRef, SimpleChange, ContentChild, Component, ChangeDetectionStrategy, ElementRef, ViewChild, ViewChildren, QueryList, isDevMode, ContentChildren, ChangeDetectorRef, Renderer2, Inject, LOCALE_ID, InjectionToken, NgModule } from '@angular/core';\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { auditTime, tap } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { chartBaseTheme, InstanceObserver, DateCategoryAxis, DateValueAxis, DomEventsBuilder, Chart, StockChart, Sparkline } from '@progress/kendo-charts';\nimport { isDocumentAvailable, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-popup';\nimport * as ɵngcc2 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@progress/kendo-angular-intl';\nimport * as ɵngcc5 from '@progress/kendo-angular-common';\n\nconst _c0 = [\"content\"];\nfunction TooltipPopupComponent_ng_template_0_1_ng_template_0_Template(rf, ctx) { }\nfunction TooltipPopupComponent_ng_template_0_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TooltipPopupComponent_ng_template_0_1_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.seriesTooltipTemplateRef)(\"ngTemplateOutletContext\", ctx_r4.seriesTooltipContext);\n} }\nfunction TooltipPopupComponent_ng_template_0_2_ng_template_0_Template(rf, ctx) { }\nfunction TooltipPopupComponent_ng_template_0_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TooltipPopupComponent_ng_template_0_2_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.seriesSharedTooltipTemplateRef)(\"ngTemplateOutletContext\", ctx_r5.seriesSharedTooltipContext);\n} }\nfunction TooltipPopupComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵtemplate(1, TooltipPopupComponent_ng_template_0_1_Template, 1, 2, null, 4);\n ɵngcc0.ɵɵtemplate(2, TooltipPopupComponent_ng_template_0_2_Template, 1, 2, null, 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r1.popupClasses)(\"ngStyle\", ctx_r1.style);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.shared);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.shared);\n} }\nfunction TooltipPopupComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 6);\n} if (rf & 2) {\n const formattedValue_r8 = ctx.formattedValue;\n ɵngcc0.ɵɵproperty(\"innerHTML\", formattedValue_r8, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction TooltipPopupComponent_ng_template_3_tr_4_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵelement(1, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const point_r15 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-color\", point_r15.series.color);\n} }\nfunction TooltipPopupComponent_ng_template_3_tr_4_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const point_r15 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(point_r15.series.name);\n} }\nfunction TooltipPopupComponent_ng_template_3_tr_4_td_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1, \"\\u00A0\");\n ɵngcc0.ɵɵelementContainerEnd();\n} }\nfunction TooltipPopupComponent_ng_template_3_tr_4_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtemplate(1, TooltipPopupComponent_ng_template_3_tr_4_td_2_ng_container_1_Template, 2, 1, \"ng-container\", 4);\n ɵngcc0.ɵɵtemplate(2, TooltipPopupComponent_ng_template_3_tr_4_td_2_ng_container_2_Template, 2, 0, \"ng-container\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const point_r15 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", point_r15.series.name !== undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", point_r15.series.name === undefined);\n} }\nfunction TooltipPopupComponent_ng_template_3_tr_4_ng_template_4_Template(rf, ctx) { }\nfunction TooltipPopupComponent_ng_template_3_tr_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, TooltipPopupComponent_ng_template_3_tr_4_td_1_Template, 2, 2, \"td\", 4);\n ɵngcc0.ɵɵtemplate(2, TooltipPopupComponent_ng_template_3_tr_4_td_2_Template, 3, 2, \"td\", 4);\n ɵngcc0.ɵɵelementStart(3, \"td\");\n ɵngcc0.ɵɵtemplate(4, TooltipPopupComponent_ng_template_3_tr_4_ng_template_4_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const point_r15 = ctx.$implicit;\n const ctx_r24 = ɵngcc0.ɵɵnextContext();\n const colorMarker_r12 = ctx_r24.colorMarker;\n const nameColumn_r13 = ctx_r24.nameColumn;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", colorMarker_r12);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", nameColumn_r13);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", point_r15.template)(\"ngTemplateOutletContext\", point_r15);\n} }\nfunction TooltipPopupComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\");\n ɵngcc0.ɵɵelementStart(1, \"tr\");\n ɵngcc0.ɵɵelementStart(2, \"th\");\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, TooltipPopupComponent_ng_template_3_tr_4_Template, 5, 4, \"tr\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const points_r9 = ctx.points;\n const categoryText_r10 = ctx.categoryText;\n const colspan_r11 = ctx.colspan;\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"colspan\", colspan_r11);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", categoryText_r10, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", points_r9);\n} }\nfunction CrosshairTooltipComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 1);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx_r1.style);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.value, \" \");\n} }\nfunction CrosshairTooltipsContainerComponent_kendo_chart_crosshair_tooltip_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-chart-crosshair-tooltip\", 1);\n} if (rf & 2) {\n const key_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"key\", key_r1)(\"popupSettings\", ctx_r0.popupSettings);\n} }\nconst _c1 = [\"surface\"];\nfunction ChartComponent_div_5_ng_template_1_Template(rf, ctx) { }\nfunction ChartComponent_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵtemplate(1, ChartComponent_div_5_ng_template_1_Template, 0, 0, \"ng-template\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx_r1.donutCenterStyle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.donutCenterTemplate.templateRef);\n} }\nexport { ResizeSensorComponent } from '@progress/kendo-angular-common';\nimport { PopupService, POPUP_CONTAINER, PopupModule } from '@progress/kendo-angular-popup';\nexport { PopupComponent } from '@progress/kendo-angular-popup';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { IntlService } from '@progress/kendo-angular-intl';\nimport { exportImage, exportSVG } from '@progress/kendo-drawing';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-charts',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635940682,\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 ChartComponentGenerated {\n constructor(configurationService) {\n this.configurationService = configurationService;\n /**\n * Fires when the user clicks an axis label ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.axisLabelClick = new EventEmitter();\n /**\n * Fires as long as the user is dragging the Chart with the mouse or through swipe gestures.\n */\n this.drag = new EventEmitter();\n /**\n * Fires when the user stops dragging the Chart.\n */\n this.dragEnd = new EventEmitter();\n /**\n * Fires when the user starts dragging the Chart.\n */\n this.dragStart = new EventEmitter();\n /**\n * Fires when the user hovers over a legend item ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.legendItemHover = new EventEmitter();\n /**\n * Fires when the cursor leaves a legend item.\n */\n this.legendItemLeave = new EventEmitter();\n /**\n * Fires when the user clicks a note.\n */\n this.noteClick = new EventEmitter();\n /**\n * Fires when the user hovers over a note.\n */\n this.noteHover = new EventEmitter();\n /**\n * Fires when the cursor leaves a note.\n */\n this.noteLeave = new EventEmitter();\n /**\n * Fires when a pane is rendered because the Chart:\n * * Is rendered.\n * * Performs panning or zooming.\n * * Is exported with different options.\n * The event is used to render custom visuals in the panes.\n */\n this.paneRender = new EventEmitter();\n /**\n * Fires when the user clicks the plot area ([see example]({% slug overview_chart_charts %}#toc-events)).\n * The `click` event is triggered by the `tap` and `contextmenu` events.\n * To distinguish between the original events, inspect the `e.originalEvent.type` field.\n */\n this.plotAreaClick = new EventEmitter();\n /**\n * Fires when the user hovers the plot area ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.plotAreaHover = new EventEmitter();\n /**\n * Fires when the cursor leaves the plot area.\n */\n this.plotAreaLeave = new EventEmitter();\n /**\n * Fires when the Chart is ready to render on screen ([see example]({% slug overview_chart_charts %}#toc-events)).\n * For example, you can use it to remove loading indicators.\n * Any changes made to the options are ignored.\n */\n this.render = new EventEmitter();\n /**\n * Fires when the user modifies the selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.select = new EventEmitter();\n /**\n * Fires when the user completes the modification of the selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.selectEnd = new EventEmitter();\n /**\n * Fires when the user starts modifying the axis selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.selectStart = new EventEmitter();\n /**\n * Fires when the user clicks the Chart series.\n *\n * The `click` event will be triggered by the `tap` and `contextmenu` events ([see example]({% slug overview_chart_charts %}#toc-events)).\n * To distinguish between the original events, inspect the `e.originalEvent.type` field.\n */\n this.seriesClick = new EventEmitter();\n /**\n * Fires when the user hovers the Chart series ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.seriesHover = new EventEmitter();\n /**\n * Fires when the cursor enters a series.\n */\n this.seriesOver = new EventEmitter();\n /**\n * Fires when the cursor leaves a series.\n */\n this.seriesLeave = new EventEmitter();\n /**\n * Fires as long as the user is zooming the Chart by using the mousewheel operation.\n */\n this.zoom = new EventEmitter();\n /**\n * Fires when the user stops zooming the Chart.\n */\n this.zoomEnd = new EventEmitter();\n /**\n * Fires when the user uses the mousewheel to zoom the Chart.\n */\n this.zoomStart = new EventEmitter();\n }\n}\nChartComponentGenerated.ɵfac = function ChartComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nChartComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ChartComponentGenerated, inputs: { pannable: \"pannable\", renderAs: \"renderAs\", seriesColors: \"seriesColors\", title: \"title\", transitions: \"transitions\", zoomable: \"zoomable\", axisDefaults: \"axisDefaults\", categoryAxis: \"categoryAxis\", chartArea: \"chartArea\", legend: \"legend\", panes: \"panes\", paneDefaults: \"paneDefaults\", plotArea: \"plotArea\", series: \"series\", seriesDefaults: \"seriesDefaults\", tooltip: \"tooltip\", valueAxis: \"valueAxis\", xAxis: \"xAxis\", yAxis: \"yAxis\" }, outputs: { axisLabelClick: \"axisLabelClick\", drag: \"drag\", dragEnd: \"dragEnd\", dragStart: \"dragStart\", legendItemHover: \"legendItemHover\", legendItemLeave: \"legendItemLeave\", noteClick: \"noteClick\", noteHover: \"noteHover\", noteLeave: \"noteLeave\", paneRender: \"paneRender\", plotAreaClick: \"plotAreaClick\", plotAreaHover: \"plotAreaHover\", plotAreaLeave: \"plotAreaLeave\", render: \"render\", select: \"select\", selectEnd: \"selectEnd\", selectStart: \"selectStart\", seriesClick: \"seriesClick\", seriesHover: \"seriesHover\", seriesOver: \"seriesOver\", seriesLeave: \"seriesLeave\", zoom: \"zoom\", zoomEnd: \"zoomEnd\", zoomStart: \"zoomStart\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"pannable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChartComponentGenerated.prototype, \"renderAs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ChartComponentGenerated.prototype, \"seriesColors\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ChartComponentGenerated.prototype, \"transitions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"zoomable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"axisDefaults\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"categoryAxis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"chartArea\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"legend\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ChartComponentGenerated.prototype, \"panes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"paneDefaults\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"plotArea\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ChartComponentGenerated.prototype, \"series\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"seriesDefaults\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"tooltip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"valueAxis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"xAxis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponentGenerated.prototype, \"yAxis\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"axisLabelClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"drag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"dragEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"dragStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"legendItemHover\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"legendItemLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"noteClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"noteHover\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"noteLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"paneRender\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"plotAreaClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"plotAreaHover\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"plotAreaLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"render\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"select\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"selectEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"selectStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"seriesClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"seriesHover\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"seriesOver\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"seriesLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"zoom\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"zoomEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponentGenerated.prototype, \"zoomStart\", void 0);\n\n/**\n * @hidden\n */\nconst THROTTLE_MS = 1000 / 60;\n/**\n * @hidden\n */\nclass Change {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n }\n}\n/**\n * @hidden\n */\nlet ConfigurationService = class ConfigurationService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.store = {};\n this.source = new BehaviorSubject({});\n this.initSource();\n }\n initSource() {\n this.onFastChange$ = this.source.asObservable();\n this.onChange$ = this.onFastChange$.pipe(auditTime(THROTTLE_MS));\n }\n push(store) {\n this.store = store;\n this.next();\n }\n notify(change) {\n this.set(change.key, change.value);\n this.next();\n }\n set(field, value) {\n let store = this.store;\n const parts = field.split('.');\n let key = parts.shift();\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n store[key] = value;\n }\n next() {\n this.ngZone.runOutsideAngular(() => {\n this.source.next(this.store);\n });\n }\n};\nConfigurationService.ɵfac = function ConfigurationService_Factory(t) { return new (t || ConfigurationService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nConfigurationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ConfigurationService, factory: function (t) { return ConfigurationService.ɵfac(t); } });\nConfigurationService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], ConfigurationService);\n\n/**\n * @hidden\n */\nclass BaseEvent {\n /**\n * @hidden\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\n\n/**\n * @hidden\n */\nclass PreventableEvent extends BaseEvent {\n constructor() {\n super(...arguments);\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 * @hidden\n */\nclass LegendEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.series = e.series;\n this.seriesIndex = e.seriesIndex;\n this.pointIndex = e.pointIndex;\n this.text = e.text;\n }\n}\n\n/**\n * Arguments for the `legendItemClick` event.\n */\nclass LegendItemClickEvent extends LegendEvent {\n /**\n * If called, the series visibility is not toggled as a result of clicking the legend item.\n */\n preventDefault() {\n super.preventDefault();\n }\n}\n\n/**\n * Arguments for the `axisLabelClick` event.\n */\nclass AxisLabelClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.dataItem = e.dataItem;\n this.index = e.index;\n this.text = e.text;\n this.value = e.value;\n }\n}\n\n/**\n * Arguments for the `drag` event.\n */\nclass DragEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `dragEnd` event.\n */\nclass DragEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `dragStart` event.\n */\nclass DragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `legendItemHover` event.\n */\nclass LegendItemHoverEvent extends LegendEvent {\n /**\n * If called, the series highlight is not shown as a result of hovering over the legend item.\n */\n preventDefault() {\n super.preventDefault();\n }\n}\n\n/* tslint:disable:no-empty */\n/**\n * Arguments for the `legendItemLeave` event.\n */\nclass LegendItemLeaveEvent extends LegendEvent {\n /**\n * @hidden\n */\n preventDefault() {\n }\n /**\n * @hidden\n */\n isDefaultPrevented() {\n return false;\n }\n}\n\n/**\n * @hidden\n */\nclass NoteEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.series = e.series;\n this.value = e.value;\n this.visual = e.visual;\n }\n}\n\n/**\n * Arguments for the `noteClick` event.\n */\nclass NoteClickEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `noteHover` event.\n */\nclass NoteHoverEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `noteLeave` event.\n */\nclass NoteLeaveEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `paneRender` event.\n */\nclass PaneRenderEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(args, sender) {\n super(sender);\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `plotAreaClick` event.\n */\nclass PlotAreaClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.originalEvent = e.originalEvent;\n this.value = e.value;\n this.x = e.x;\n this.y = e.y;\n }\n}\n\n/**\n * Arguments for the `plotAreaHover` event.\n */\nclass PlotAreaHoverEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.originalEvent = e.originalEvent;\n this.value = e.value;\n this.x = e.x;\n this.y = e.y;\n }\n}\n\nclass PlotAreaLeaveEvent extends BaseEvent {\n}\n\n/**\n * Arguments for the `render` event.\n */\nclass RenderEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(_e, sender) {\n super(sender);\n }\n}\n\n/**\n * Arguments for the `select` event.\n */\nclass SelectEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `selectEnd` event.\n */\nclass SelectEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `selectStart` event.\n */\nclass SelectStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `seriesClick` event.\n */\nclass SeriesClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.originalEvent = e.originalEvent;\n this.percentage = e.percentage;\n this.point = e.point;\n this.series = e.series;\n this.stackValue = e.stackValue;\n this.value = e.value;\n }\n}\n\n/**\n * @hidden\n */\nclass SeriesEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.originalEvent = e.originalEvent;\n this.percentage = e.percentage;\n this.point = e.point;\n this.series = e.series;\n this.stackValue = e.stackValue;\n this.value = e.value;\n }\n}\n\n/**\n * Arguments for the `seriesHover` event.\n */\nclass SeriesHoverEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `seriesOver` event.\n */\nclass SeriesOverEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `seriesLeave` event.\n */\nclass SeriesLeaveEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `zoom` event.\n */\nclass ZoomEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.delta = e.delta;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `zoomEnd` event.\n */\nclass ZoomEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `zoomStart` event.\n */\nclass ZoomStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\nconst EVENT_MAP = {\n axisLabelClick: AxisLabelClickEvent,\n drag: DragEvent,\n dragEnd: DragEndEvent,\n dragStart: DragStartEvent,\n legendItemHover: LegendItemHoverEvent,\n legendItemLeave: LegendItemLeaveEvent,\n noteClick: NoteClickEvent,\n noteHover: NoteHoverEvent,\n noteLeave: NoteLeaveEvent,\n paneRender: PaneRenderEvent,\n plotAreaClick: PlotAreaClickEvent,\n plotAreaHover: PlotAreaHoverEvent,\n plotAreaLeave: PlotAreaLeaveEvent,\n render: RenderEvent,\n select: SelectEvent,\n selectEnd: SelectEndEvent,\n selectStart: SelectStartEvent,\n seriesClick: SeriesClickEvent,\n seriesHover: SeriesHoverEvent,\n seriesOver: SeriesOverEvent,\n seriesLeave: SeriesLeaveEvent,\n zoom: ZoomEvent,\n zoomEnd: ZoomEndEvent,\n zoomStart: ZoomStartEvent\n};\n/**\n * @hidden\n */\nclass InstanceEventService {\n create(name, args, sender) {\n if (EVENT_MAP[name]) {\n return new EVENT_MAP[name](args, sender);\n }\n }\n}\nInstanceEventService.ɵfac = function InstanceEventService_Factory(t) { return new (t || InstanceEventService)(); };\nInstanceEventService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: InstanceEventService, factory: InstanceEventService.ɵfac });\n\n/**\n * A directive which selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [Donut center template]({% slug donut_seriestypes_charts %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

22.5%

\n * of which renewables\n *
\n * \n * \n * \n * \n * \n *
\n * `\n * })\n * export class AppComponent {\n * public data: any[] = [{\n * kind: 'Hydroelectric', share: 0.175\n * }, {\n * kind: 'Nuclear', share: 0.238\n * }, {\n * kind: 'Coal', share: 0.118\n * }, {\n * kind: 'Solar', share: 0.052\n * }, {\n * kind: 'Wind', share: 0.225\n * }, {\n * kind: 'Other', share: 0.192\n * }];\n * }\n *\n * ```\n */\nlet DonutCenterTemplateDirective = class DonutCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDonutCenterTemplateDirective.ɵfac = function DonutCenterTemplateDirective_Factory(t) { return new (t || DonutCenterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDonutCenterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DonutCenterTemplateDirective, selectors: [[\"\", \"kendoChartDonutCenterTemplate\", \"\"]] });\nDonutCenterTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DonutCenterTemplateDirective);\n\n/**\n * @hidden\n */\nclass ItemChange {\n constructor(sender, options) {\n this.sender = sender;\n this.options = options;\n }\n}\n/**\n * @hidden\n */\nlet CollectionService = class CollectionService {\n constructor() {\n this.source = new Subject();\n this.onItemChange$ = this.source.asObservable();\n }\n notify(change) {\n this.source.next(change);\n }\n};\nCollectionService.ɵfac = function CollectionService_Factory(t) { return new (t || CollectionService)(); };\nCollectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CollectionService, factory: function (t) { return CollectionService.ɵfac(t); } });\nCollectionService = __decorate([ __metadata(\"design:paramtypes\", [])\n], CollectionService);\n\n/**\n * @hidden\n */\nfunction copyChanges(changes, options) {\n for (const propertyName in changes) {\n if (!changes.hasOwnProperty(propertyName)) {\n continue;\n }\n const value = changes[propertyName].currentValue;\n if (value === undefined) {\n delete options[propertyName];\n }\n else {\n options[propertyName] = value;\n }\n }\n}\n\n/**\n * @hidden\n */\nfunction toSimpleChanges(changes) {\n const result = {};\n for (const propertyName in changes) {\n if (!changes.hasOwnProperty(propertyName)) {\n continue;\n }\n result[propertyName] = new SimpleChange(null, changes[propertyName], false);\n }\n return result;\n}\n\n/**\n * @hidden\n */\nclass CollectionItemComponent {\n constructor(configurationService, collectionService) {\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.options = {};\n this.subscription = configurationService.onFastChange$.subscribe(store => {\n this.options = store;\n this.notify();\n });\n }\n ngOnChanges(changes) {\n const store = this.configurationService.store;\n copyChanges(changes, store);\n this.configurationService.push(store);\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * item.notifyChanges({ visible: true });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n notify() {\n if (!this.collectionService) {\n return;\n }\n this.collectionService.notify(new ItemChange(this, this.options));\n }\n}\nCollectionItemComponent.ɵfac = function CollectionItemComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCollectionItemComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CollectionItemComponent, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n\n/**\n * @hidden\n */\nclass SeriesItemComponentGenerated extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nSeriesItemComponentGenerated.ɵfac = function SeriesItemComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesItemComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesItemComponentGenerated, inputs: { aggregate: \"aggregate\", autoFit: \"autoFit\", axis: \"axis\", border: \"border\", categoryAxis: \"categoryAxis\", categoryField: \"categoryField\", closeField: \"closeField\", color: \"color\", colorField: \"colorField\", connectors: \"connectors\", currentField: \"currentField\", dashType: \"dashType\", data: \"data\", downColor: \"downColor\", downColorField: \"downColorField\", dynamicHeight: \"dynamicHeight\", dynamicSlope: \"dynamicSlope\", errorHighField: \"errorHighField\", errorLowField: \"errorLowField\", explodeField: \"explodeField\", field: \"field\", fromField: \"fromField\", gap: \"gap\", highField: \"highField\", holeSize: \"holeSize\", line: \"line\", lowField: \"lowField\", lowerField: \"lowerField\", margin: \"margin\", maxSize: \"maxSize\", mean: \"mean\", meanField: \"meanField\", median: \"median\", medianField: \"medianField\", minSize: \"minSize\", missingValues: \"missingValues\", name: \"name\", neckRatio: \"neckRatio\", negativeColor: \"negativeColor\", negativeValues: \"negativeValues\", noteTextField: \"noteTextField\", opacity: \"opacity\", openField: \"openField\", outliersField: \"outliersField\", overlay: \"overlay\", padding: \"padding\", q1Field: \"q1Field\", q3Field: \"q3Field\", segmentSpacing: \"segmentSpacing\", size: \"size\", sizeField: \"sizeField\", spacing: \"spacing\", stack: \"stack\", startAngle: \"startAngle\", style: \"style\", summaryField: \"summaryField\", target: \"target\", toField: \"toField\", type: \"type\", upperField: \"upperField\", visible: \"visible\", visibleInLegend: \"visibleInLegend\", visibleInLegendField: \"visibleInLegendField\", visual: \"visual\", width: \"width\", whiskers: \"whiskers\", xAxis: \"xAxis\", xErrorHighField: \"xErrorHighField\", xErrorLowField: \"xErrorLowField\", xField: \"xField\", yAxis: \"yAxis\", yErrorHighField: \"yErrorHighField\", yErrorLowField: \"yErrorLowField\", yField: \"yField\", zIndex: \"zIndex\", errorBars: \"errorBars\", extremes: \"extremes\", highlight: \"highlight\", labels: \"labels\", markers: \"markers\", notes: \"notes\", outliers: \"outliers\", tooltip: \"tooltip\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"aggregate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesItemComponentGenerated.prototype, \"autoFit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"axis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"categoryAxis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"categoryField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"closeField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"colorField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"connectors\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"currentField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"dashType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], SeriesItemComponentGenerated.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"downColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"downColorField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesItemComponentGenerated.prototype, \"dynamicHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesItemComponentGenerated.prototype, \"dynamicSlope\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"errorHighField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"errorLowField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"explodeField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"fromField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"gap\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"highField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"holeSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"lowField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"lowerField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"maxSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"mean\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"meanField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"median\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"medianField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"minSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"missingValues\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"name\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"neckRatio\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"negativeColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"negativeValues\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"noteTextField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"openField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"outliersField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"overlay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"q1Field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"q3Field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"segmentSpacing\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"sizeField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"spacing\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"stack\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"startAngle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"style\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"summaryField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"target\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"toField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"upperField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesItemComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesItemComponentGenerated.prototype, \"visibleInLegend\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"visibleInLegendField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesItemComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"whiskers\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"xAxis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"xErrorHighField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"xErrorLowField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"xField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"yAxis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"yErrorHighField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"yErrorLowField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesItemComponentGenerated.prototype, \"yField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesItemComponentGenerated.prototype, \"zIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"errorBars\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"extremes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"highlight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"markers\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"notes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"outliers\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesItemComponentGenerated.prototype, \"tooltip\", void 0);\n\n/**\n * @hidden\n */\nclass SettingsComponent {\n constructor(configKey, configurationService) {\n this.configKey = configKey;\n this.configurationService = configurationService;\n this.store = {};\n if (configKey === undefined) {\n throw new Error('Configuration key not set');\n }\n }\n ngOnDestroy() {\n this.store = undefined;\n this.notify();\n }\n ngOnChanges(changes) {\n copyChanges(changes, this.store);\n this.notify();\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * item.notifyChanges({ visible: true });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n markAsVisible() {\n this.store.visible = true;\n this.notify();\n }\n notify() {\n this.configurationService.notify(new Change(this.configKey, this.store));\n }\n}\nSettingsComponent.ɵfac = function SettingsComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSettingsComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SettingsComponent, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n\n/**\n * @hidden\n */\nclass SeriesTooltipComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('tooltip', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesTooltipComponentGenerated.ɵfac = function SeriesTooltipComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesTooltipComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesTooltipComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesTooltipComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesTooltipComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesTooltipComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesTooltipComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesTooltipComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesTooltipComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesTooltipComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The configuration options of the Chart series tooltip\n * ([see example]({% slug tooltips_chart_charts %})).\n */\nlet SeriesTooltipComponent = class SeriesTooltipComponent extends SeriesTooltipComponentGenerated {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n get seriesTooltipTemplateRef() {\n return this.seriesTooltipTemplate;\n }\n};\nSeriesTooltipComponent.ɵfac = function SeriesTooltipComponent_Factory(t) { return new (t || SeriesTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesTooltipComponent, selectors: [[\"kendo-chart-series-item-tooltip\"]], contentQueries: function SeriesTooltipComponent_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.seriesTooltipTemplate = _t.first);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n ContentChild(TemplateRef, { static: false }),\n __metadata(\"design:type\", TemplateRef)\n], SeriesTooltipComponent.prototype, \"seriesTooltipTemplate\", void 0);\nSeriesTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesTooltipComponent);\n\nconst toggle = (flag) => flag === undefined ? false : !flag;\n/**\n * The configuration component for a series item.\n */\nlet SeriesItemComponent = class SeriesItemComponent extends SeriesItemComponentGenerated {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n /**\n * Toggles the series visibility and updates the parent Chart\n * without animated transitions.\n */\n toggleVisibility() {\n this.options.visible = toggle(this.options.visible);\n this.notify();\n }\n /**\n * Toggles the visibility of a point with the given index.\n * Applicable for the Pie, Donut, and Funnel series.\n *\n * @param pointIndex - The zero-based index of the point to toggle.\n */\n togglePointVisibility(pointIndex) {\n const pv = this.options.pointVisibility = this.options.pointVisibility || {};\n pv[pointIndex] = toggle(pv[pointIndex]);\n this.notify();\n }\n get seriesTooltipTemplateRef() {\n if (this.seriesTooltip) {\n return this.seriesTooltip.seriesTooltipTemplateRef;\n }\n }\n};\nSeriesItemComponent.ɵfac = function SeriesItemComponent_Factory(t) { return new (t || SeriesItemComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nSeriesItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesItemComponent, selectors: [[\"kendo-chart-series-item\"]], contentQueries: function SeriesItemComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, SeriesTooltipComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltip = _t.first);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesItemComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n ContentChild(SeriesTooltipComponent, { static: false }),\n __metadata(\"design:type\", SeriesTooltipComponent)\n], SeriesItemComponent.prototype, \"seriesTooltip\", void 0);\nSeriesItemComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], SeriesItemComponent);\n\n/**\n * Fallback theme in case the Theme Service fails\n * to read the variables from the main theme.\n *\n * @hidden\n */\nconst chartDefaultTheme = () => Object.assign({}, chartBaseTheme(), {\n axisDefaults: {\n crosshair: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n labels: {\n color: 'rgb(101, 101, 101)',\n font: '12px serif'\n },\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n },\n majorGridLines: {\n color: 'rgba(0, 0, 0, 0.08)'\n },\n minorGridLines: {\n color: 'rgba(0, 0, 0, 0.04)'\n },\n notes: {\n icon: {\n background: 'rgba(0, 0, 0, 0.5)',\n border: {\n color: 'rgba(0, 0, 0, 0.5)'\n }\n },\n line: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n label: {\n font: '14px serif'\n }\n },\n title: {\n color: 'rgb(101, 101, 101)',\n font: '14px serif'\n }\n },\n chartArea: {\n background: 'rgb(255, 255, 255)'\n },\n legend: {\n inactiveItems: {\n labels: {\n color: 'rgba(102, 102, 102, 0.5)'\n },\n markers: {\n color: 'rgba(102, 102, 102, 0.5)'\n }\n },\n labels: {\n color: 'rgb(101, 101, 101)',\n font: '14px serif'\n }\n },\n seriesDefaults: {\n boxPlot: {\n downColor: 'rgba(0, 0, 0, 0.08)',\n mean: {\n color: 'rgb(246, 246, 246)'\n },\n median: {\n color: 'rgb(246, 246, 246)'\n },\n whiskers: {\n color: 'rgb(255, 99, 88)'\n }\n },\n bullet: {\n target: {\n color: 'rgb(101, 101, 101)'\n }\n },\n candlestick: {\n downColor: 'rgb(101, 101, 101)',\n line: {\n color: 'rgb(101, 101, 101)'\n }\n },\n errorBars: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n horizontalWaterfall: {\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n icon: {\n border: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n labels: {\n background: 'rgb(255, 255, 255)',\n color: 'rgb(101, 101, 101)',\n opacity: 0.8,\n font: '12px serif'\n },\n notes: {\n icon: {\n background: 'rgba(0, 0, 0, 0.5)',\n border: {\n color: 'rgba(0, 0, 0, 0.5)'\n }\n },\n line: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n label: {\n font: '14px serif'\n }\n },\n overlay: {\n gradient: \"none\"\n },\n verticalBoxPlot: {\n downColor: 'rgba(0, 0, 0, 0.08)',\n mean: {\n color: 'rgb(246, 246, 246)'\n },\n median: {\n color: 'rgb(246, 246, 246)'\n },\n whiskers: {\n color: 'rgb(255, 99, 88)'\n }\n },\n verticalBullet: {\n target: {\n color: 'rgb(101, 101, 101)'\n }\n },\n waterfall: {\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n area: {\n opacity: 0.8\n }\n },\n title: {\n color: 'rgb(101, 101, 101)',\n font: '16px serif'\n },\n seriesColors: [\n 'rgb(255, 99, 88)',\n 'rgb(255, 210, 70)',\n 'rgb(120, 210, 55)',\n 'rgb(40, 180, 200)',\n 'rgb(45, 115, 245)',\n 'rgb(170, 70, 190)'\n ]\n});\n\nconst font = (style) => `${style.fontWeight} ${style.fontSize} ${style.fontFamily}`;\nconst computedBackgroundColor = (element) => window.getComputedStyle(element).backgroundColor;\nconst letterPos = (letter) => letter.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0);\nconst seriesPos = (name) => {\n const alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n const num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n};\nconst SERIES_COLORS = 30;\nconst seriesTemplate = () => {\n let template = `\n
\n
\n
\n
\n
\n
\n `;\n for (let i = 0; i < SERIES_COLORS; i++) {\n template += `\n
`;\n }\n return template;\n};\nconst 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 ${seriesTemplate()}\n
\n`;\n/**\n * @hidden\n */\nlet ThemeService = class ThemeService extends ConfigurationService {\n constructor(ngZone) {\n super(ngZone);\n this.loaded = false;\n }\n loadTheme() {\n if (this.loaded || !isDocumentAvailable()) {\n return;\n }\n if (!this.readTheme()) {\n this.readDefaultTheme();\n }\n this.loaded = true;\n this.next();\n }\n readTheme() {\n this.createElement();\n const available = this.queryColor('accent') !==\n this.queryColor('accent-contrast');\n try {\n if (available) {\n this.push(chartBaseTheme());\n this.setColors();\n this.setFonts();\n this.setSeriesColors();\n }\n }\n finally {\n this.destroyElement();\n }\n return available;\n }\n readDefaultTheme() {\n this.push(chartDefaultTheme());\n }\n createElement() {\n const container = this.element = document.createElement('div');\n container.style.display = 'none';\n container.innerHTML = template();\n document.body.appendChild(container);\n }\n destroyElement() {\n if (this.element) {\n document.body.removeChild(this.element);\n this.element = undefined;\n }\n }\n setStyle(key, value) {\n this.set(key, value);\n }\n setColors() {\n this.mapColor('axisDefaults.crosshair.color', 'chart-crosshair-background');\n this.mapColor('axisDefaults.labels.color', 'normal-text-color');\n this.mapColor('axisDefaults.line.color', 'chart-major-lines');\n this.mapColor('axisDefaults.majorGridLines.color', 'chart-major-lines');\n this.mapColor('axisDefaults.minorGridLines.color', 'chart-minor-lines');\n this.mapColor('axisDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('axisDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('axisDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('axisDefaults.title.color', 'normal-text-color');\n this.mapColor('chartArea.background', 'background');\n this.mapColor('legend.inactiveItems.labels.color', 'chart-inactive');\n this.mapColor('legend.inactiveItems.markers.color', 'chart-inactive');\n this.mapColor('legend.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.boxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.boxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.whiskers.color', 'accent');\n this.mapColor('seriesDefaults.bullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.downColor', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.line.color', 'normal-text-color');\n this.mapColor('seriesDefaults.errorBars.color', 'chart-error-bars-background');\n this.mapColor('seriesDefaults.horizontalWaterfall.line.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.icon.border.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.labels.background', 'background');\n this.mapColor('seriesDefaults.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('seriesDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('seriesDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.whiskers.color', 'accent');\n this.mapColor('seriesDefaults.verticalBullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.waterfall.line.color', 'chart-major-lines');\n this.mapColor('title.color', 'normal-text-color');\n const opacity = parseFloat(this.queryStyle('chart-area-opacity').opacity);\n if (!isNaN(opacity)) {\n this.setStyle('seriesDefaults.area.opacity', opacity);\n this.setStyle('seriesDefaults.radarArea.opacity', opacity);\n this.setStyle('seriesDefaults.verticalArea.opacity', opacity);\n this.setStyle('seriesDefaults.labels.opacity', opacity);\n }\n this.setInactiveOpacity(['area', 'verticalArea'], 'chart-area-inactive-opacity');\n this.setInactiveOpacity(['line', 'verticalLine'], 'chart-line-inactive-opacity');\n }\n setInactiveOpacity(seriesTypes, selector) {\n const inactiveOpacity = parseFloat(this.queryStyle(selector).opacity);\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(type => this.setStyle(`seriesDefaults.${type}.highlight.inactiveOpacity`, inactiveOpacity));\n }\n }\n setFonts() {\n const defaultFont = font(this.queryStyle('chart-font'));\n const titleFont = font(this.queryStyle('chart-title-font'));\n const paneTitleFont = font(this.queryStyle('chart-pane-title-font'));\n const labelFont = font(this.queryStyle('chart-label-font'));\n this.setStyle('axisDefaults.labels.font', labelFont);\n this.setStyle('axisDefaults.notes.label.font', defaultFont);\n this.setStyle('axisDefaults.title.font', defaultFont);\n this.setStyle('legend.labels.font', defaultFont);\n this.setStyle('seriesDefaults.labels.font', labelFont);\n this.setStyle('seriesDefaults.notes.label.font', defaultFont);\n this.setStyle('title.font', titleFont);\n this.setStyle('paneDefaults.title.font', paneTitleFont);\n }\n setSeriesColors() {\n const element = this.element;\n const series = [].slice.call(element.querySelectorAll('.k-var--series div'));\n const unsetColor = computedBackgroundColor(element.querySelector('.k-var--series-unset'));\n const seriesColors = series.reduce((arr, el) => {\n const pos = seriesPos(el.className);\n const color = computedBackgroundColor(el);\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n return arr;\n }, [] // Will populate the series colors in this array\n );\n this.setStyle('seriesColors', seriesColors);\n }\n mapColor(key, varName) {\n this.setStyle(key, this.queryColor(varName));\n }\n queryColor(varName) {\n return this.queryStyle(varName).backgroundColor;\n }\n queryStyle(varName) {\n const element = this.element.querySelector(`.k-var--${varName}`);\n return window.getComputedStyle(element);\n }\n};\nThemeService.ɵfac = function ThemeService_Factory(t) { return new (t || ThemeService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nThemeService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ThemeService, factory: function (t) { return ThemeService.ɵfac(t); } });\nThemeService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], ThemeService);\n\n/**\n * @hidden\n */\nclass ChartInstanceObserver extends InstanceObserver {\n constructor(instance) {\n super(instance);\n this.handlerMap = {\n hideTooltip: 'onHideTooltip',\n legendItemClick: 'onLegendItemClick',\n render: 'onRender',\n showTooltip: 'onShowTooltip',\n init: 'onInit'\n };\n }\n}\n\n/**\n * @hidden\n */\nlet TooltipTemplateService = class TooltipTemplateService {\n setTemplate(template) {\n this.template = template;\n }\n getTemplate(seriesIndex) {\n if (this.seriesTemplates && this.seriesTemplates[seriesIndex]) {\n return this.seriesTemplates[seriesIndex];\n }\n return this.template;\n }\n setSeriesTemplates(seriesTemplates) {\n this.seriesTemplates = seriesTemplates;\n }\n setSharedTemplate(sharedTemplate) {\n this.sharedTemplate = sharedTemplate;\n }\n getSharedTemplate() {\n return this.sharedTemplate;\n }\n};\nTooltipTemplateService.ɵfac = function TooltipTemplateService_Factory(t) { return new (t || TooltipTemplateService)(); };\nTooltipTemplateService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TooltipTemplateService, factory: function (t) { return TooltipTemplateService.ɵfac(t); } });\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [series tooltip]({% slug tooltips_chart_charts %}#toc-series-tooltip).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Value is {{value}}\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nlet SeriesTooltipTemplateDirective = class SeriesTooltipTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nSeriesTooltipTemplateDirective.ɵfac = function SeriesTooltipTemplateDirective_Factory(t) { return new (t || SeriesTooltipTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nSeriesTooltipTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesTooltipTemplateDirective, selectors: [[\"\", \"kendoChartSeriesTooltipTemplate\", \"\"]] });\nSeriesTooltipTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], SeriesTooltipTemplateDirective);\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [shared series tooltip]({% slug tooltips_chart_charts %}#toc-shared-tooltip).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *
{{ category }}
\n *
\n * {{ point.series.name }} : {{ point.value }}\n *
\n *
\n *
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
\n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nlet SharedTooltipTemplateDirective = class SharedTooltipTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nSharedTooltipTemplateDirective.ɵfac = function SharedTooltipTemplateDirective_Factory(t) { return new (t || SharedTooltipTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nSharedTooltipTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SharedTooltipTemplateDirective, selectors: [[\"\", \"kendoChartSharedTooltipTemplate\", \"\"]] });\nSharedTooltipTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], SharedTooltipTemplateDirective);\n\n/**\n * The point that is passed to the tooltip template.\n */\nclass TooltipTemplatePoint {\n /**\n * @hidden\n */\n constructor(point, format, template) {\n this.value = point.value;\n this.category = point.category;\n this.categoryIndex = point.categoryIx;\n this.series = point.series;\n this.dataItem = point.dataItem;\n this.percentage = point.percentage;\n this.runningTotal = point.runningTotal;\n this.total = point.total;\n this.low = point.low;\n this.high = point.high;\n this.xLow = point.xLow;\n this.xHigh = point.xHigh;\n this.yLow = point.yLow;\n this.yHigh = point.yHigh;\n this.template = template;\n this.point = point;\n this.format = format;\n }\n /**\n * @hidden\n */\n get formattedValue() {\n return this.format ? this.point.formatValue(this.format) : String(this.value);\n }\n}\n\n/* tslint:disable:align no-empty */\nconst POSITION_MODE = 'absolute';\nconst COLLISION = { horizontal: \"fit\", vertical: \"fit\" };\n/**\n * @hidden\n */\nclass BaseTooltip {\n constructor(popupService, localizationService) {\n this.popupService = popupService;\n this.localizationService = localizationService;\n this.style = {};\n this.popupRef = null;\n }\n get active() {\n return this.popupRef !== null;\n }\n show(e) {\n const align = e.anchor.align;\n const offset = this.position(e.anchor.point);\n this.style = e.style;\n if (!this.popupRef) {\n this.popupRef = this.popupService.open(Object.assign({\n offset: offset,\n popupAlign: align,\n animate: this.animate,\n content: this.templateRef,\n collision: COLLISION,\n positionMode: POSITION_MODE\n }, this.popupSettings));\n if (this.localizationService.rtl) {\n this.popupRef.popupElement.setAttribute('dir', 'rtl');\n }\n this.onInit();\n }\n else {\n const popup = this.popupRef.popup.instance;\n popup.offset = offset;\n popup.popupAlign = align;\n }\n }\n hide() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n onInit() {\n }\n ngOnDestroy() {\n this.hide();\n }\n position(offset) {\n if (!this.popupSettings || !this.popupSettings.appendTo) {\n return offset;\n }\n const appendTo = this.popupSettings.appendTo.element.nativeElement;\n console.log('appendTo', appendTo);\n const bbox = appendTo.getBoundingClientRect();\n const { scrollLeft, scrollTop } = this.scrollOffset(appendTo);\n return {\n left: offset.left - bbox.left - scrollLeft,\n top: offset.top - bbox.top - scrollTop\n };\n }\n scrollOffset(element) {\n if (!element) {\n return null;\n }\n let scrollLeft = element.scrollLeft;\n let scrollTop = element.scrollTop;\n let parent = element.parentElement;\n while (parent) {\n scrollLeft += parent.scrollLeft;\n scrollTop += parent.scrollTop;\n parent = parent.parentElement;\n }\n return { scrollLeft, scrollTop };\n }\n}\nBaseTooltip.ɵfac = function BaseTooltip_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nBaseTooltip.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BaseTooltip });\n\n/**\n * @hidden\n */\nfunction hasParent(element, parent) {\n let current = element;\n while (current && current !== parent) {\n current = current.parentNode;\n }\n return current ? true : false;\n}\n\n/**\n * @hidden\n */\nfunction bodyFactory() {\n if (isDocumentAvailable()) {\n return new ElementRef(document.body);\n }\n}\n\nconst SHARED_TOOLTIP_CLASS = 'k-chart-shared-tooltip';\nconst TOOLTIP_CLASS = \"k-chart-tooltip\";\nconst ɵ0$2 = bodyFactory;\n// Codelyzer 2.0.0-beta2 doesn't handle inherited members\n/* tslint:disable:no-access-missing-member */\n/**\n * @hidden\n */\nlet TooltipPopupComponent = class TooltipPopupComponent extends BaseTooltip {\n constructor(popupService, templateService, localizationService, ngZone) {\n super(popupService, localizationService);\n this.popupService = popupService;\n this.templateService = templateService;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.seriesTooltipContext = {};\n this.seriesSharedTooltipContext = {};\n this.animate = true;\n this.wrapperClass = 'k-chart-tooltip-wrapper';\n this.leave = new EventEmitter();\n this.popupClasses = {};\n }\n show(e) {\n this.shared = e.shared;\n this.popupClasses = Object.assign({\n [SHARED_TOOLTIP_CLASS]: e.shared,\n [TOOLTIP_CLASS]: true,\n [e.className]: !!e.className\n }, this.classNames);\n if (!e.shared) {\n this.seriesTooltipContext = new TooltipTemplatePoint(e.point, e.format);\n this.seriesTooltipTemplateRef = this.pointTemplateRef(e.point);\n }\n else {\n this.seriesSharedTooltipTemplateRef = this.templateService.getSharedTemplate()\n || this.defaultSharedTooltipTemplate.templateRef;\n this.seriesSharedTooltipContext = this.sharedTemplateContext(e);\n }\n super.show(e);\n }\n containsElement(element) {\n if (this.popupRef) {\n return hasParent(element, this.popupRef.popupElement);\n }\n }\n sharedTemplateContext(e) {\n const points = e.points;\n const nameColumn = points.filter((point) => typeof point.series.name !== 'undefined').length > 0;\n const colorMarker = e.series.length > 1;\n let colspan = 1;\n if (nameColumn) {\n colspan++;\n }\n if (colorMarker) {\n colspan++;\n }\n return {\n category: e.category,\n categoryText: e.categoryText,\n colorMarker: colorMarker,\n colspan: colspan,\n nameColumn: nameColumn,\n points: this.wrapPoints(e.points, e.format)\n };\n }\n pointTemplateRef(point) {\n return this.templateService.getTemplate(point.series.index) || this.defaultSeriesTooltipTemplate.templateRef;\n }\n wrapPoints(points, format) {\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n const template = this.pointTemplateRef(point);\n const pointFormat = ((point.options || {}).tooltip || {}).format || format;\n result.push(new TooltipTemplatePoint(point, pointFormat, template));\n }\n return result;\n }\n onInit() {\n this.ngZone.runOutsideAngular(() => {\n this.mouseleaveSubscription = this.popupRef.popupElement.addEventListener('mouseleave', (args) => {\n this.leave.emit(args);\n });\n });\n this.popupRef.popupElement.className += ` ${this.wrapperClass}`;\n }\n hide() {\n if (this.mouseleaveSubscription) {\n this.mouseleaveSubscription();\n this.mouseleaveSubscription = null;\n }\n super.hide();\n }\n};\nTooltipPopupComponent.ɵfac = function TooltipPopupComponent_Factory(t) { return new (t || TooltipPopupComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.PopupService), ɵngcc0.ɵɵdirectiveInject(TooltipTemplateService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nTooltipPopupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TooltipPopupComponent, selectors: [[\"kendo-chart-tooltip-popup\"]], viewQuery: function TooltipPopupComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(SeriesTooltipTemplateDirective, 5);\n ɵngcc0.ɵɵviewQuery(SharedTooltipTemplateDirective, 5);\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.defaultSeriesTooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.defaultSharedTooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n } }, inputs: { animate: \"animate\", wrapperClass: \"wrapperClass\", classNames: \"classNames\", popupSettings: \"popupSettings\" }, outputs: { leave: \"leave\" }, features: [ɵngcc0.ɵɵProvidersFeature([PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: ɵ0$2\n }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 0, consts: [[\"content\", \"\"], [\"kendoChartSeriesTooltipTemplate\", \"\"], [\"kendoChartSharedTooltipTemplate\", \"\"], [3, \"ngClass\", \"ngStyle\"], [4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"innerHTML\"], [4, \"ngFor\", \"ngForOf\"], [1, \"k-chart-shared-tooltip-marker\"]], template: function TooltipPopupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TooltipPopupComponent_ng_template_0_Template, 3, 4, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, TooltipPopupComponent_ng_template_2_Template, 1, 1, \"ng-template\", 1);\n ɵngcc0.ɵɵtemplate(3, TooltipPopupComponent_ng_template_3_Template, 5, 3, \"ng-template\", 2);\n } }, directives: [ɵngcc3.NgClass, ɵngcc3.NgStyle, ɵngcc3.NgIf, ɵngcc3.NgTemplateOutlet, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, ɵngcc3.NgForOf], encapsulation: 2 });\n__decorate([\n ViewChild(SeriesTooltipTemplateDirective, { static: false }),\n __metadata(\"design:type\", SeriesTooltipTemplateDirective)\n], TooltipPopupComponent.prototype, \"defaultSeriesTooltipTemplate\", void 0);\n__decorate([\n ViewChild(SharedTooltipTemplateDirective, { static: false }),\n __metadata(\"design:type\", SharedTooltipTemplateDirective)\n], TooltipPopupComponent.prototype, \"defaultSharedTooltipTemplate\", void 0);\n__decorate([\n ViewChild('content', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], TooltipPopupComponent.prototype, \"templateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TooltipPopupComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TooltipPopupComponent.prototype, \"classNames\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TooltipPopupComponent.prototype, \"popupSettings\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipPopupComponent.prototype, \"wrapperClass\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TooltipPopupComponent.prototype, \"leave\", void 0);\nTooltipPopupComponent = __decorate([ __metadata(\"design:paramtypes\", [PopupService,\n TooltipTemplateService,\n LocalizationService,\n NgZone])\n], TooltipPopupComponent);\n\nconst ɵ0$3 = bodyFactory;\n// Codelyzer 2.0.0-beta2 doesn't handle inherited members\n/* tslint:disable:no-access-missing-member */\n/**\n * @hidden\n */\nlet CrosshairTooltipComponent = class CrosshairTooltipComponent extends BaseTooltip {\n constructor(popupService, localizationService) {\n super(popupService, localizationService);\n this.animate = false;\n }\n show(e) {\n super.show(e);\n this.value = e.value;\n this.popupRef.popup.changeDetectorRef.detectChanges();\n }\n};\nCrosshairTooltipComponent.ɵfac = function CrosshairTooltipComponent_Factory(t) { return new (t || CrosshairTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nCrosshairTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CrosshairTooltipComponent, selectors: [[\"kendo-chart-crosshair-tooltip\"]], viewQuery: function CrosshairTooltipComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n } }, inputs: { key: \"key\", popupSettings: \"popupSettings\" }, features: [ɵngcc0.ɵɵProvidersFeature([PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: ɵ0$3\n }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 0, consts: [[\"content\", \"\"], [1, \"k-chart-tooltip\", \"k-chart-crosshair-tooltip\", 3, \"ngStyle\"]], template: function CrosshairTooltipComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CrosshairTooltipComponent_ng_template_0_Template, 2, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [ɵngcc3.NgStyle], encapsulation: 2 });\n__decorate([\n ViewChild('content', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], CrosshairTooltipComponent.prototype, \"templateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CrosshairTooltipComponent.prototype, \"key\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CrosshairTooltipComponent.prototype, \"popupSettings\", void 0);\nCrosshairTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [PopupService, LocalizationService])\n], CrosshairTooltipComponent);\n\nconst AXES = [\"categoryAxis\", \"valueAxis\", \"xAxis\", \"yAxis\"];\n/**\n * @hidden\n */\nlet CrosshairTooltipsContainerComponent = class CrosshairTooltipsContainerComponent {\n /**\n * @hidden\n */\n constructor() {\n this.tooltipKeys = [];\n this.tooltipsMap = {};\n }\n show(e) {\n const tooltipComponents = this.crossahirTooltipComponents.toArray();\n const axisName = e.axisName;\n const axisIndex = e.axisIndex;\n for (let idx = 0; idx < tooltipComponents.length; idx++) {\n if (tooltipComponents[idx].key === axisName + axisIndex) {\n tooltipComponents[idx].show(e);\n break;\n }\n }\n }\n hide() {\n const tooltipComponents = this.crossahirTooltipComponents.toArray();\n for (let idx = 0; idx < tooltipComponents.length; idx++) {\n tooltipComponents[idx].hide();\n }\n }\n get active() {\n return this.tooltipKeys.length > 0;\n }\n createCrosshairTooltips(options) {\n const newMap = this.mapTooltips(options);\n const map = this.tooltipsMap;\n for (let key in map) {\n if (!newMap[key]) {\n this.removeTooltip(key);\n delete map[key];\n }\n }\n for (let key in newMap) {\n if (!map[key]) {\n map[key] = newMap[key];\n this.tooltipKeys.push(key);\n }\n }\n }\n removeTooltip(key) {\n const keys = this.tooltipKeys;\n for (let idx = 0; idx < keys.length; idx++) {\n if (keys[idx] === key) {\n keys.splice(idx, 1);\n break;\n }\n }\n }\n mapTooltips(options) {\n const map = {};\n for (let idx = 0; idx < AXES.length; idx++) {\n const tooltips = this.axesCrosshairTooltipOptions(options, AXES[idx]);\n for (let tooltipIdx = 0; tooltipIdx < tooltips.length; tooltipIdx++) {\n const tooltip = tooltips[tooltipIdx];\n map[tooltip.name + tooltip.index] = tooltip;\n }\n }\n return map;\n }\n axesCrosshairTooltipOptions(options, name) {\n const result = [];\n if (options[name]) {\n const axes = [].concat(options[name]);\n for (let idx = 0; idx < axes.length; idx++) {\n const tooltip = (axes[idx].crosshair || {}).tooltip;\n if (tooltip && tooltip.visible) {\n result.push({\n index: idx,\n name: name\n });\n }\n }\n }\n return result;\n }\n};\nCrosshairTooltipsContainerComponent.ɵfac = function CrosshairTooltipsContainerComponent_Factory(t) { return new (t || CrosshairTooltipsContainerComponent)(); };\nCrosshairTooltipsContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CrosshairTooltipsContainerComponent, selectors: [[\"kendo-chart-crosshair-tooltips-container\"]], viewQuery: function CrosshairTooltipsContainerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(CrosshairTooltipComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.crossahirTooltipComponents = _t);\n } }, inputs: { popupSettings: \"popupSettings\" }, decls: 1, vars: 1, consts: [[3, \"key\", \"popupSettings\", 4, \"ngFor\", \"ngForOf\"], [3, \"key\", \"popupSettings\"]], template: function CrosshairTooltipsContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CrosshairTooltipsContainerComponent_kendo_chart_crosshair_tooltip_0_Template, 1, 2, \"kendo-chart-crosshair-tooltip\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.tooltipKeys);\n } }, directives: [ɵngcc3.NgForOf, CrosshairTooltipComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CrosshairTooltipsContainerComponent.prototype, \"popupSettings\", void 0);\n__decorate([\n ViewChildren(CrosshairTooltipComponent),\n __metadata(\"design:type\", QueryList)\n], CrosshairTooltipsContainerComponent.prototype, \"crossahirTooltipComponents\", void 0);\n\nconst getTouch = (domEvent) => {\n return {\n x: {\n location: domEvent.pageX\n },\n y: {\n location: domEvent.pageY\n }\n };\n};\nconst eventArgs = (e, previousArgs) => {\n const pointers = e.pointers;\n const pointer = pointers[0];\n const xLocation = pointer.pageX;\n const yLocation = pointer.pageY;\n let distance = 0;\n if (pointers.length > 1) {\n const pointer1 = pointers[0];\n const pointer2 = pointers[1];\n distance = Math.sqrt(Math.pow(pointer1.pageX - pointer2.pageX, 2) + Math.pow(pointer1.pageY - pointer2.pageY, 2));\n }\n return {\n distance: distance,\n event: e.srcEvent,\n preventDefault: function () {\n e.preventDefault();\n },\n target: e.target,\n touches: pointers.map(getTouch),\n type: e.type,\n x: {\n delta: previousArgs ? xLocation - previousArgs.x.location : 0,\n initialDelta: e.deltaX,\n location: xLocation,\n startLocation: xLocation - e.deltaX\n },\n y: {\n delta: previousArgs ? yLocation - previousArgs.y.location : 0,\n initialDelta: e.deltaY,\n location: yLocation,\n startLocation: yLocation - e.deltaY\n }\n };\n};\nfunction shouldBindGroup(groupNames, events) {\n for (let idx = 0; idx < groupNames.length; idx++) {\n if (events[groupNames[idx]]) {\n return true;\n }\n }\n return false;\n}\nconst eventGroups = [{\n end: 'panend',\n move: 'panmove',\n start: 'panstart'\n }, {\n gesturechange: 'pinchmove',\n gestureend: 'pinchend',\n gesturestart: 'pinchstart'\n }, {\n press: 'press'\n }, {\n tap: 'tap'\n }];\n/**\n * @hidden\n */\nclass DomEvents {\n constructor(hammerInstance, events) {\n this.hammerInstance = hammerInstance;\n this.eventHandlers = {};\n this.tap = this.tap.bind(this);\n this.press = this.press.bind(this);\n this.panstart = this.panstart.bind(this);\n this.panmove = this.panmove.bind(this);\n this.panend = this.panend.bind(this);\n this.pinchstart = this.pinchstart.bind(this);\n this.pinchmove = this.pinchmove.bind(this);\n this.pinchend = this.pinchend.bind(this);\n if (events) {\n this.bind(events);\n }\n }\n tap(e) {\n this.trigger('tap', e);\n }\n press(e) {\n this.trigger('press', e);\n }\n panstart(e) {\n delete this.previous;\n this.previous = this.trigger('start', e);\n }\n panmove(e) {\n this.previous = this.trigger('move', e);\n }\n panend(e) {\n this.trigger('end', e);\n delete this.previous;\n }\n pinchstart(e) {\n this.trigger('gesturestart', e);\n }\n pinchmove(e) {\n this.trigger('gesturechange', e);\n }\n pinchend(e) {\n this.trigger('gestureend', e);\n }\n trigger(name, e) {\n const args = eventArgs(e, this.previous);\n if (this.eventHandlers[name]) {\n this.eventHandlers[name](args);\n }\n return args;\n }\n bind(events = {}) {\n this.unbind();\n this.eventHandlers = events;\n for (let idx = 0; idx < eventGroups.length; idx++) {\n const eventGroup = eventGroups[idx];\n const groupNames = Object.keys(eventGroup);\n if (shouldBindGroup(groupNames, events)) {\n for (let nameIdx = 0; nameIdx < groupNames.length; nameIdx++) {\n const name = eventGroup[groupNames[nameIdx]];\n this.hammerInstance.on(name, this[name]);\n }\n }\n }\n }\n unbind() {\n if (this.hammerInstance) {\n this.hammerInstance.off();\n }\n this.eventHandlers = {};\n }\n destroy() {\n if (this.hammerInstance) {\n this.hammerInstance.destroy();\n delete this.hammerInstance;\n }\n delete this.eventHandlers;\n }\n toggleDrag(enable) {\n this.toggle('pan', enable);\n }\n toggleZoom(enable) {\n this.toggle('pinch', enable);\n }\n toggle(recognizer, enable) {\n if (this.hammerInstance) {\n const instanceRecognizer = this.hammerInstance.get(recognizer);\n instanceRecognizer.set({\n enable: enable\n });\n }\n }\n}\n\nconst MISSING_HAMMER_MESSAGE = 'Hammerjs is not loaded.' +\n 'Solution: http://www.telerik.com/kendo-angular-ui/components/charts/troubleshooting/#toc-hammerjs-is-not-loaded';\n/**\n * @hidden\n */\nclass DomEventsBuilder$1 {\n static create(element, events) {\n if (typeof window !== 'undefined') {\n const HAMMER = window.Hammer;\n if (!HAMMER) {\n if (isDevMode()) {\n throw new Error(MISSING_HAMMER_MESSAGE);\n }\n return;\n }\n const hammerInstance = new HAMMER(element, {\n recognizers: [\n [HAMMER.Tap],\n [HAMMER.Pan],\n [HAMMER.Pinch],\n [HAMMER.Press, { time: 0 }]\n ]\n });\n return new DomEvents(hammerInstance, events);\n }\n }\n}\n\nconst dateCategoryAxisFormats = DateCategoryAxis.prototype.options.labels.dateFormats;\nconst dateValueAxisFormats = DateValueAxis.prototype.options.labels.dateFormats;\nconst dateFormats = {\n milliseconds: \"HH:mm:ss.SSS\",\n seconds: { time: 'medium' },\n minutes: { time: 'short' },\n hours: { time: 'short' },\n days: { skeleton: 'Md' },\n weeks: { skeleton: 'Md' },\n months: { skeleton: 'yyMMM' },\n years: { skeleton: 'y' }\n};\nObject.assign(dateCategoryAxisFormats, dateFormats);\nObject.assign(dateValueAxisFormats, dateFormats);\nDomEventsBuilder.register(DomEventsBuilder$1);\n\nfunction hasObservers(emitter) {\n return emitter.observers.length > 0;\n}\n/**\n * The root Chart component.\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 * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public legendVisible: boolean = true;\n * public seriesVisible: boolean = true;\n *\n * public toggleSeries(): void {\n * this.seriesVisible = !this.seriesVisible;\n * }\n *\n * public toggleLegend(): void {\n * this.legendVisible = !this.legendVisible;\n * }\n * }\n *\n * ```\n */\nlet ChartComponent = class ChartComponent extends ChartComponentGenerated {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n super(configurationService);\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * Fires when a legend item is clicked before the selected series visibility is toggled.\n * Can be prevented.\n */\n this.legendItemClick = new EventEmitter();\n /**\n * Limits the automatic resizing of the Chart. Sets the maximum number of times per second\n * that the component redraws its content when the size of its container changes.\n * Defaults to `10`. To disable the automatic resizing, set it to `0`.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * seriesData: number[] = [1, 2, 3, 5];\n * }\n * ```\n */\n this.resizeRateLimit = 10;\n this.theme = null;\n this.suppressTransitions = false;\n this.rtl = false;\n this.hostClasses = ['k-chart', 'k-widget'];\n validatePackage(packageMetadata);\n this.themeService.loadTheme();\n this.refreshWait();\n }\n ngOnInit() {\n if (this.element) {\n this.hostClasses.forEach(name => {\n this.renderer.addClass(this.element.nativeElement, name);\n });\n this.renderer.setStyle(this.element.nativeElement, 'position', 'relative');\n }\n }\n ngAfterViewInit() {\n if (this.canRender) {\n this.ngZone.runOutsideAngular(() => {\n const chartMouseleave = this.renderer.listen(this.surfaceElement.nativeElement, 'mouseleave', this.chartMouseleave.bind(this));\n this.domSubscriptions = () => {\n chartMouseleave();\n };\n });\n }\n this.setDirection();\n this.subscriptions = this.intl.changes.subscribe(this.intlChange.bind(this));\n this.subscriptions.add(this.localizationService.changes.subscribe(this.rtlChange.bind(this)));\n }\n ngAfterViewChecked() {\n if (this.instance && this.autoResize) {\n this.ngZone.runOutsideAngular(() => {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.resize();\n }, 0);\n });\n }\n }\n ngOnChanges(changes) {\n const store = this.configurationService.store;\n copyChanges(changes, store);\n store.popupSettings = null;\n this.configurationService.push(store);\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * chart.notifyChanges({ title: { text: 'New Title' } });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n ngOnDestroy() {\n this.destroyed = true;\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.domSubscriptions) {\n this.domSubscriptions();\n this.domSubscriptions = null;\n }\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n clearTimeout(this.resizeTimeout);\n clearTimeout(this.redrawTimeout);\n }\n createInstance(element, observer) {\n this.instance = new Chart(element, this.options, this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n /**\n * Exports the Chart as an image. The export operation is asynchronous and returns a promise.\n *\n * @param {ImageExportOptions} options - The parameters for the exported image.\n * @returns {Promise} - A promise that will be resolved with a PNG image encoded as a Data URI.\n */\n exportImage(options = {}) {\n return exportImage(this.exportVisual(options), options);\n }\n /**\n * Exports the Chart as an SVG document. The export operation is asynchronous and returns a promise.\n *\n * @param options - The parameters for the exported file.\n * @returns - A promise that will be resolved with an SVG document that is encoded as a Data URI.\n */\n exportSVG(options = {}) {\n return exportSVG(this.exportVisual(options), options);\n }\n /**\n * Exports the Chart as a Drawing `Scene`.\n *\n * @param options - The parameters for the export operation.\n * @returns - The root Group of the scene.\n */\n exportVisual(options = {}) {\n return this.instance.exportVisual(options);\n }\n /**\n * Returns the axis with the specified name.\n *\n * @param {string} name - The axis name.\n * @returns {ChartAxis} - The axis with a corresponding name.\n */\n findAxisByName(name) {\n if (this.instance) {\n return this.instance.findAxisByName(name);\n }\n }\n /**\n * Returns the pane at the specified index.\n *\n * @param {number} index - The pane index.\n * @returns {ChartPane} - The pane at the specified index.\n */\n findPaneByIndex(index) {\n if (this.instance) {\n return this.instance.findPaneByIndex(index);\n }\n }\n /**\n * Returns the pane with the specified name.\n *\n * @param {string} name - The name of the pane.\n * @returns {ChartPane} - The pane with the provided name.\n */\n findPaneByName(name) {\n if (this.instance) {\n return this.instance.findPaneByName(name);\n }\n }\n /**\n * Returns the plot area of the Chart.\n * @returns {ChartPlotArea} - The plot area of the Chart.\n */\n getPlotArea() {\n if (this.instance) {\n return this.instance.plotArea();\n }\n }\n /**\n * Highlights the series points or the segments of a Pie, Donut, or Funnel charts.\n *\n * See [Series Highlight]({% slug serieshighlight_chart_charts %}) for more details.\n *\n * In the following example, the callback is evaluated for each data point.\n * If the function returns `true`, the point is highlighted.\n *\n * {% meta height:500 %}\n * {% embed_file elements/highlight/api/app.component.ts preview %}\n * {% embed_file shared/app.module.ts hidden %}\n * {% embed_file shared/main.ts hidden %}\n * {% endmeta %}\n *\n * @param show - A Boolean value that indicates whether the highlight is shown or hidden.\n * @param filter - A string that represents the series or category name, an object with the series and category name, or a function which will be called for each point. The function should return `true` for the points for which the highlight is toggled.\n */\n toggleHighlight(show, filter) {\n if (this.instance) {\n this.instance.toggleHighlight(show, filter);\n }\n }\n /**\n * Hides the tooltip of the Chart.\n */\n hideTooltip() {\n if (this.instance) {\n this.instance.hideTooltip();\n }\n }\n /**\n * Shows the Chart tooltip of a specific point or the shared tooltip of a specific category.\n *\n * @param filter - The category for a shared tooltip or a function which will be called for each point until the function returns `true`.\n */\n showTooltip(filter) {\n if (this.instance) {\n this.instance.showTooltip(filter);\n }\n }\n init() {\n if (!this.canRender) {\n return;\n }\n const element = this.surfaceElement.nativeElement;\n const instanceObserver = new ChartInstanceObserver(this);\n this.createInstance(element, instanceObserver);\n }\n /**\n * Detects the size of the container and redraws the Chart.\n * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.\n */\n resize() {\n if (this.instance) {\n this.instance.resize();\n }\n }\n /**\n * @hidden\n */\n onResize(_event) {\n if (this.autoResize) {\n this.resize();\n }\n }\n onLegendItemClick(e) {\n this.run(() => {\n const args = new LegendItemClickEvent(e, this);\n this.legendItemClick.emit(args);\n if (!args.isDefaultPrevented()) {\n const series = this.seriesComponents.toArray()[e.series.index];\n if (!series) {\n return;\n }\n if (e.pointIndex === undefined) {\n series.toggleVisibility();\n }\n else {\n series.togglePointVisibility(e.pointIndex);\n }\n this.suppressTransitions = true;\n }\n }, hasObservers(this.legendItemClick), this.seriesComponents.length > 0);\n }\n onInit(e) {\n this.instance = e.sender;\n }\n onRender(e) {\n const donutCenterStyle = this.getDonutCenterStyle();\n this.run(() => {\n const args = new RenderEvent(e, this);\n this.surface = e.sender.surface;\n this.render.emit(args);\n this.donutCenterStyle = donutCenterStyle;\n }, hasObservers(this.render), this.donutCenterStyle !== donutCenterStyle);\n }\n onShowTooltip(e) {\n this.run(() => {\n if (!e.crosshair) {\n this.tooltipInstance.show(e);\n }\n else {\n this.crossahirTooltips.show(e);\n }\n }, !e.crosshair, true);\n }\n onHideTooltip(e) {\n if (!e.crosshair) {\n if (this.tooltipInstance.active) {\n this.tooltipInstance.hide();\n this.detectChanges();\n }\n }\n else if (this.crossahirTooltips.active) {\n this.crossahirTooltips.hide();\n this.detectChanges();\n }\n }\n trigger(name, e) {\n if (name === 'resize') {\n return;\n }\n const emitter = this.activeEmitter(name);\n if (emitter) {\n const args = this.instanceEventService.create(name, e, this);\n this.run(() => {\n emitter.emit(args);\n });\n return args.isDefaultPrevented && args.isDefaultPrevented();\n }\n }\n requiresHandlers(names) {\n for (let idx = 0; idx < names.length; idx++) {\n if (this.activeEmitter(names[idx])) {\n return true;\n }\n }\n return false;\n }\n refresh() {\n clearTimeout(this.redrawTimeout);\n this.updateDirection();\n this.crossahirTooltips.createCrosshairTooltips(this.options);\n this.setChartAreaSize();\n if (!this.instance) {\n this.init();\n return;\n }\n const transitions = this.options.transitions;\n if (this.suppressTransitions) {\n this.options.transitions = false;\n }\n this.updateOptions();\n if (this.suppressTransitions) {\n this.options.transitions = transitions;\n this.suppressTransitions = false;\n }\n }\n setChartAreaSize() {\n if (!this.element) {\n return;\n }\n const element = this.element.nativeElement;\n const chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n element.style.width = `${chartArea.width}px`;\n }\n if (chartArea.height) {\n element.style.height = `${chartArea.height}px`;\n }\n }\n updateOptions() {\n this.instance.setOptions(this.options);\n }\n /**\n * @hidden\n */\n tooltipMouseleave(e) {\n const relatedTarget = e.relatedTarget;\n const chartElement = this.element.nativeElement;\n if (this.instance && (!relatedTarget || !hasParent(relatedTarget, chartElement))) {\n this.instance.hideElements();\n }\n }\n /**\n * @hidden\n */\n chartMouseleave(e) {\n const relatedTarget = e.relatedTarget;\n const chartElement = this.element.nativeElement;\n if (this.instance && (!relatedTarget || !(this.tooltipInstance.containsElement(relatedTarget) || hasParent(relatedTarget, chartElement))) &&\n !this.instance.handlingTap) {\n this.instance.hideElements();\n }\n }\n get canRender() {\n return isDocumentAvailable() && Boolean(this.surfaceElement);\n }\n get autoResize() {\n return this.resizeRateLimit > 0;\n }\n activeEmitter(name) {\n const emitter = this[name];\n if (emitter && emitter.emit && hasObservers(emitter)) {\n return emitter;\n }\n }\n getDonutCenterStyle() {\n if (!this.instance || !this.options || !this.options.series) {\n return;\n }\n const firstSeries = this.options.series[0];\n const charts = this.instance._plotArea.charts;\n if (!firstSeries || firstSeries.type !== 'donut' || !charts || charts[0].points.length === 0) {\n return;\n }\n const firstPoint = charts[0].points[0];\n const center = firstPoint.box.center();\n const radius = firstPoint.sector.innerRadius;\n const top = center.y - radius;\n const left = center.x - radius;\n const size = radius * 2;\n return {\n height: size + 'px',\n left: left + 'px',\n top: top + 'px',\n width: size + 'px'\n };\n }\n refreshWait() {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = combineLatest(this.configurationService.onChange$, this.themeService.onChange$).pipe(tap((result) => {\n this.options = result[0];\n this.theme = result[1];\n }), auditTime(THROTTLE_MS))\n .subscribe(() => {\n this.refresh();\n });\n });\n }\n run(callback, inZone = true, detectChanges) {\n if (inZone) {\n if (detectChanges) {\n this.changeDetector.markForCheck();\n }\n this.ngZone.run(callback);\n }\n else {\n callback();\n if (detectChanges) {\n this.detectChanges();\n }\n }\n }\n detectChanges() {\n if (!this.destroyed) {\n this.changeDetector.detectChanges();\n }\n }\n intlChange() {\n if (this.instance) {\n this.deferredRedraw();\n }\n }\n rtlChange() {\n if (this.instance && this.rtl !== this.isRTL) {\n this.deferredRedraw();\n }\n }\n deferredRedraw() {\n this.ngZone.runOutsideAngular(() => {\n clearTimeout(this.redrawTimeout);\n this.redrawTimeout = setTimeout(() => {\n this.updateDirection();\n this.instance.noTransitionsRedraw();\n }, 0);\n });\n }\n updateDirection() {\n const current = this.isRTL;\n if (this.rtl !== current) {\n this.setDirection();\n if (this.instance) {\n this.instance.setDirection(current);\n }\n }\n }\n setDirection() {\n this.rtl = this.isRTL;\n if (this.element) {\n this.renderer.setAttribute(this.element.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n }\n get isRTL() {\n return Boolean(this.localizationService.rtl);\n }\n};\nChartComponent.ɵfac = function ChartComponent_Factory(t) { return new (t || ChartComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(ThemeService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(InstanceEventService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ChartComponent, selectors: [[\"kendo-chart\"]], contentQueries: function ChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DonutCenterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, SeriesItemComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.donutCenterTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesComponents = _t);\n } }, viewQuery: function ChartComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(TooltipPopupComponent, 7);\n ɵngcc0.ɵɵviewQuery(CrosshairTooltipsContainerComponent, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipInstance = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.crossahirTooltips = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.surfaceElement = _t.first);\n } }, inputs: { resizeRateLimit: \"resizeRateLimit\", popupSettings: \"popupSettings\" }, outputs: { legendItemClick: \"legendItemClick\" }, exportAs: [\"kendoChart\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], decls: 6, vars: 4, consts: [[1, \"k-chart-surface\"], [\"surface\", \"\"], [3, \"popupSettings\"], [3, \"popupSettings\", \"leave\"], [3, \"rateLimit\", \"resize\"], [\"class\", \"k-chart-donut-center\", 3, \"ngStyle\", 4, \"ngIf\"], [1, \"k-chart-donut-center\", 3, \"ngStyle\"], [3, \"ngTemplateOutlet\"]], template: function ChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0, 1);\n ɵngcc0.ɵɵelement(2, \"kendo-chart-crosshair-tooltips-container\", 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-chart-tooltip-popup\", 3);\n ɵngcc0.ɵɵlistener(\"leave\", function ChartComponent_Template_kendo_chart_tooltip_popup_leave_3_listener($event) { return ctx.tooltipMouseleave($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"kendo-resize-sensor\", 4);\n ɵngcc0.ɵɵlistener(\"resize\", function ChartComponent_Template_kendo_resize_sensor_resize_4_listener($event) { return ctx.onResize($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, ChartComponent_div_5_Template, 2, 2, \"div\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"popupSettings\", ctx.popupSettings);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"popupSettings\", ctx.popupSettings);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"rateLimit\", ctx.resizeRateLimit);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.donutCenterStyle && ctx.donutCenterTemplate);\n } }, directives: [CrosshairTooltipsContainerComponent, TooltipPopupComponent, ɵngcc5.ResizeSensorComponent, ɵngcc3.NgIf, ɵngcc3.NgStyle, ɵngcc3.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ChartComponent.prototype, \"legendItemClick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ChartComponent.prototype, \"resizeRateLimit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartComponent.prototype, \"popupSettings\", void 0);\n__decorate([\n ContentChildren(SeriesItemComponent, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], ChartComponent.prototype, \"seriesComponents\", void 0);\n__decorate([\n ContentChild(DonutCenterTemplateDirective, { static: false }),\n __metadata(\"design:type\", DonutCenterTemplateDirective)\n], ChartComponent.prototype, \"donutCenterTemplate\", void 0);\n__decorate([\n ViewChild(TooltipPopupComponent, { static: true }),\n __metadata(\"design:type\", TooltipPopupComponent)\n], ChartComponent.prototype, \"tooltipInstance\", void 0);\n__decorate([\n ViewChild(CrosshairTooltipsContainerComponent, { static: true }),\n __metadata(\"design:type\", CrosshairTooltipsContainerComponent)\n], ChartComponent.prototype, \"crossahirTooltips\", void 0);\n__decorate([\n ViewChild('surface', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ChartComponent.prototype, \"surfaceElement\", void 0);\nChartComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n ThemeService,\n ElementRef,\n IntlService,\n LocalizationService,\n NgZone,\n InstanceEventService,\n ChangeDetectorRef,\n Renderer2])\n], ChartComponent);\n\n/**\n * @hidden\n */\nclass AxisDefaultsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsComponentGenerated.ɵfac = function AxisDefaultsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nAxisDefaultsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: AxisDefaultsComponentGenerated, inputs: { background: \"background\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", startAngle: \"startAngle\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", title: \"title\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsComponentGenerated.prototype, \"majorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsComponentGenerated.prototype, \"majorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsComponentGenerated.prototype, \"minorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsComponentGenerated.prototype, \"minorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AxisDefaultsComponentGenerated.prototype, \"narrowRange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsComponentGenerated.prototype, \"pane\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], AxisDefaultsComponentGenerated.prototype, \"plotBands\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AxisDefaultsComponentGenerated.prototype, \"reverse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AxisDefaultsComponentGenerated.prototype, \"startAngle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AxisDefaultsComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsComponentGenerated.prototype, \"crosshair\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsComponentGenerated.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsComponentGenerated.prototype, \"title\", void 0);\n\n/**\n * The default options for all Chart axes.\n * Accepts the options which are supported by [`categoryAxis`]({% slug api_charts_categoryaxisitemcomponent %}),\n * [`valueAxis`]({% slug api_charts_valueaxisitemcomponent %}),\n * [`xAxis`]({% slug api_charts_xaxisitemcomponent %}),\n * and [`yAxis`]({% slug api_charts_yaxisitemcomponent %}).\n *\n * @example\n * ```ts-preview\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
\n * `\n * })\n * export class AppComponent {\n * public series: any[] = [{\n * name: \"India\",\n * data: [4, 8, 8, 9, 9, 9, 3, 8, 9, 6]\n * }, {\n * name: \"Russian Federation\",\n * data: [4, 7, 7, 6, 8, 8, 5, 8, 4, 4]\n * }, {\n * name: \"Germany\",\n * data: [0, 0, 1, 1, 4, 3, 1, 5, 4, 3]\n * },{\n * name: \"World\",\n * data: [2, 3, 4, 4, 4, 4, 1, 2, 4, 3]\n * }];\n *\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n *\n * public background = 'white';\n * // public color = 'cyan'; // will override the line.color option\n * public crosshair = {\n * visible: true\n * };\n * public labels = {\n * font: 'bold 12px/30px Helvetica, Arial, sans-serif',\n * color: '#4CAF50',\n * padding: 5,\n * rotation: 45,\n * background: 'white',\n * border: {\n * color: '#4CAF50',\n * width: 2\n * },\n * };\n * public line = {\n * color: 'black',\n * width: 3\n * };\n *\n * public majorGridLines = {\n * color: 'black',\n * visible: true\n * }\n *\n * public minorGridLines = {\n * color: 'lightgray',\n * visible: true\n * }\n *\n * public majorTicks = {\n * color: 'black',\n * size: 15\n * }\n *\n * public minorTicks = {\n * color: 'lightgray',\n * size: 10\n * }\n *\n * public title = {\n * text: 'Default Axis Title',\n * color: 'black',\n * background: 'white',\n * border: {\n * color: 'black',\n * width: 2\n * },\n * padding: 10\n * }\n * }\n * ```\n */\nlet AxisDefaultsComponent = class AxisDefaultsComponent extends AxisDefaultsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nAxisDefaultsComponent.ɵfac = function AxisDefaultsComponent_Factory(t) { return new (t || AxisDefaultsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nAxisDefaultsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AxisDefaultsComponent, selectors: [[\"kendo-chart-axis-defaults\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function AxisDefaultsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nAxisDefaultsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], AxisDefaultsComponent);\n\n/**\n * @hidden\n */\nclass AxisDefaultsCrosshairComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.crosshair', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsCrosshairComponentGenerated.ɵfac = function AxisDefaultsCrosshairComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nAxisDefaultsCrosshairComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: AxisDefaultsCrosshairComponentGenerated, inputs: { color: \"color\", dashType: \"dashType\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsCrosshairComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsCrosshairComponentGenerated.prototype, \"dashType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AxisDefaultsCrosshairComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AxisDefaultsCrosshairComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AxisDefaultsCrosshairComponentGenerated.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsCrosshairComponentGenerated.prototype, \"tooltip\", void 0);\n\n/**\n * The crosshair configuration options ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nlet AxisDefaultsCrosshairComponent = class AxisDefaultsCrosshairComponent extends AxisDefaultsCrosshairComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nAxisDefaultsCrosshairComponent.ɵfac = function AxisDefaultsCrosshairComponent_Factory(t) { return new (t || AxisDefaultsCrosshairComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nAxisDefaultsCrosshairComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AxisDefaultsCrosshairComponent, selectors: [[\"kendo-chart-axis-defaults-crosshair\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function AxisDefaultsCrosshairComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nAxisDefaultsCrosshairComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], AxisDefaultsCrosshairComponent);\n\n/**\n * @hidden\n */\nclass AxisDefaultsCrosshairTooltipComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsCrosshairTooltipComponentGenerated.ɵfac = function AxisDefaultsCrosshairTooltipComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nAxisDefaultsCrosshairTooltipComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: AxisDefaultsCrosshairTooltipComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsCrosshairTooltipComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsCrosshairTooltipComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsCrosshairTooltipComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsCrosshairTooltipComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsCrosshairTooltipComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsCrosshairTooltipComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AxisDefaultsCrosshairTooltipComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the [`axisDefaults.crosshair.tooltip.visible`]({% slug api_charts_axisdefaultscrosshairtooltipcomponent %}#toc-visible)\n * option is set to `true`.\n */\nlet AxisDefaultsCrosshairTooltipComponent = class AxisDefaultsCrosshairTooltipComponent extends AxisDefaultsCrosshairTooltipComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nAxisDefaultsCrosshairTooltipComponent.ɵfac = function AxisDefaultsCrosshairTooltipComponent_Factory(t) { return new (t || AxisDefaultsCrosshairTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nAxisDefaultsCrosshairTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AxisDefaultsCrosshairTooltipComponent, selectors: [[\"kendo-chart-axis-defaults-crosshair-tooltip\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function AxisDefaultsCrosshairTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nAxisDefaultsCrosshairTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], AxisDefaultsCrosshairTooltipComponent);\n\n/**\n * @hidden\n */\nclass AxisDefaultsLabelsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsLabelsComponentGenerated.ɵfac = function AxisDefaultsLabelsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nAxisDefaultsLabelsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: AxisDefaultsLabelsComponentGenerated, inputs: { content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"mirror\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], AxisDefaultsLabelsComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The configuration of the axis labels ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nlet AxisDefaultsLabelsComponent = class AxisDefaultsLabelsComponent extends AxisDefaultsLabelsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nAxisDefaultsLabelsComponent.ɵfac = function AxisDefaultsLabelsComponent_Factory(t) { return new (t || AxisDefaultsLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nAxisDefaultsLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AxisDefaultsLabelsComponent, selectors: [[\"kendo-chart-axis-defaults-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function AxisDefaultsLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nAxisDefaultsLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], AxisDefaultsLabelsComponent);\n\n/**\n * @hidden\n */\nclass AxisDefaultsTitleComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.title', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsTitleComponentGenerated.ɵfac = function AxisDefaultsTitleComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nAxisDefaultsTitleComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: AxisDefaultsTitleComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsTitleComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsTitleComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsTitleComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsTitleComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsTitleComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AxisDefaultsTitleComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsTitleComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AxisDefaultsTitleComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AxisDefaultsTitleComponentGenerated.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AxisDefaultsTitleComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], AxisDefaultsTitleComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The configuration of the axis title ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nlet AxisDefaultsTitleComponent = class AxisDefaultsTitleComponent extends AxisDefaultsTitleComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nAxisDefaultsTitleComponent.ɵfac = function AxisDefaultsTitleComponent_Factory(t) { return new (t || AxisDefaultsTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nAxisDefaultsTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AxisDefaultsTitleComponent, selectors: [[\"kendo-chart-axis-defaults-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function AxisDefaultsTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nAxisDefaultsTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], AxisDefaultsTitleComponent);\n\n/**\n * @hidden\n */\nclass CollectionComponent {\n constructor(configKey, configurationService, collectionService) {\n this.configKey = configKey;\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.items = [];\n this.subscription = collectionService.onItemChange$.subscribe(changes => this.processChanges(changes));\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n ngAfterContentInit() {\n this.readItems();\n this.children.changes.subscribe(() => this.readItems());\n }\n processChanges(changes) {\n if (!this.children) {\n return;\n }\n const index = this.children.toArray().indexOf(changes.sender);\n if (index < 0) {\n return;\n }\n this.items[index] = changes.options;\n this.change();\n }\n readItems() {\n this.items = this.children.map(s => s.options);\n this.change();\n }\n change() {\n this.configurationService.notify(new Change(this.configKey, this.items.length === 0 ? undefined : this.items));\n }\n}\nCollectionComponent.ɵfac = function CollectionComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCollectionComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CollectionComponent });\n\n/**\n * Specifies the `weekStartDay` of a [CategoryAxisItemComponent]({% slug api_charts_categoryaxisitemcomponent %}).\n */\nvar WeekStartDay;\n(function (WeekStartDay) {\n /**\n * Specifies Sunday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * Specifies Monday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Monday\"] = 1] = \"Monday\";\n /**\n * Specifies Tuesday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * Specifies Wednesday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * Specifies Thursday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * Specifies Friday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Friday\"] = 5] = \"Friday\";\n /**\n * Specifies Saturday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekStartDay || (WeekStartDay = {}));\n\n/**\n * @hidden\n */\nclass CategoryAxisItemComponentGenerated extends CollectionItemComponent {\n constructor(configurationService, collectionService, intl, localeId) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.notifyChanges({ weekStartDay: intl.firstDay(localeId) });\n }\n}\nCategoryAxisItemComponentGenerated.ɵfac = function CategoryAxisItemComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisItemComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisItemComponentGenerated, inputs: { autoBaseUnitSteps: \"autoBaseUnitSteps\", axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", baseUnitStep: \"baseUnitStep\", categories: \"categories\", color: \"color\", justified: \"justified\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", max: \"max\", maxDateGroups: \"maxDateGroups\", maxDivisions: \"maxDivisions\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", name: \"name\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", roundToBaseUnit: \"roundToBaseUnit\", startAngle: \"startAngle\", type: \"type\", visible: \"visible\", weekStartDay: \"weekStartDay\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", select: \"select\", title: \"title\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"autoBaseUnitSteps\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"axisCrossingValue\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisItemComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisItemComponentGenerated.prototype, \"baseUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"baseUnitStep\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CategoryAxisItemComponentGenerated.prototype, \"categories\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisItemComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisItemComponentGenerated.prototype, \"justified\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"majorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"majorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisItemComponentGenerated.prototype, \"maxDateGroups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisItemComponentGenerated.prototype, \"maxDivisions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"minorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"minorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisItemComponentGenerated.prototype, \"name\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisItemComponentGenerated.prototype, \"pane\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CategoryAxisItemComponentGenerated.prototype, \"plotBands\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisItemComponentGenerated.prototype, \"reverse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisItemComponentGenerated.prototype, \"roundToBaseUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisItemComponentGenerated.prototype, \"startAngle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisItemComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisItemComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisItemComponentGenerated.prototype, \"weekStartDay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"crosshair\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"notes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"select\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponentGenerated.prototype, \"title\", void 0);\n\n/**\n * The configuration component for a category axis ([see example]({% slug axes_chart_charts %})).\n */\nlet CategoryAxisItemComponent = class CategoryAxisItemComponent extends CategoryAxisItemComponentGenerated {\n constructor(configurationService, collectionService, intl, localeId) {\n super(configurationService, collectionService, intl, localeId);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nCategoryAxisItemComponent.ɵfac = function CategoryAxisItemComponent_Factory(t) { return new (t || CategoryAxisItemComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.IntlService), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID)); };\nCategoryAxisItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisItemComponent, selectors: [[\"kendo-chart-category-axis-item\"]], inputs: { rangeLabels: \"rangeLabels\" }, features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisItemComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisItemComponent.prototype, \"rangeLabels\", void 0);\nCategoryAxisItemComponent = __decorate([ __param(3, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService,\n IntlService, String])\n], CategoryAxisItemComponent);\n\n/**\n * @hidden\n */\nclass CategoryAxisComponentGenerated extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('categoryAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nCategoryAxisComponentGenerated.ɵfac = function CategoryAxisComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisComponentGenerated, contentQueries: function CategoryAxisComponentGenerated_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CategoryAxisItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n ContentChildren(CategoryAxisItemComponent),\n __metadata(\"design:type\", QueryList)\n], CategoryAxisComponentGenerated.prototype, \"children\", void 0);\n\n/**\n * A collection of one or more category axis items.\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 * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n * ```\n */\nlet CategoryAxisComponent = class CategoryAxisComponent extends CategoryAxisComponentGenerated {\n // Place custom properties here\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nCategoryAxisComponent.ɵfac = function CategoryAxisComponent_Factory(t) { return new (t || CategoryAxisComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nCategoryAxisComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisComponent, selectors: [[\"kendo-chart-category-axis\"]], features: [ɵngcc0.ɵɵProvidersFeature([CollectionService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], CategoryAxisComponent);\n\n/**\n * @hidden\n */\nclass CategoryAxisCrosshairComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisCrosshairComponentGenerated.ɵfac = function CategoryAxisCrosshairComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisCrosshairComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisCrosshairComponentGenerated, inputs: { color: \"color\", dashType: \"dashType\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisCrosshairComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisCrosshairComponentGenerated.prototype, \"dashType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisCrosshairComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisCrosshairComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisCrosshairComponentGenerated.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisCrosshairComponentGenerated.prototype, \"tooltip\", void 0);\n\n/**\n * The crosshair configuration options ([see example]({% slug crosshairs_chart_charts %})).\n */\nlet CategoryAxisCrosshairComponent = class CategoryAxisCrosshairComponent extends CategoryAxisCrosshairComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nCategoryAxisCrosshairComponent.ɵfac = function CategoryAxisCrosshairComponent_Factory(t) { return new (t || CategoryAxisCrosshairComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisCrosshairComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisCrosshairComponent, selectors: [[\"kendo-chart-category-axis-item-crosshair\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisCrosshairComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisCrosshairComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisCrosshairComponent);\n\n/**\n * @hidden\n */\nclass CategoryAxisCrosshairTooltipComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisCrosshairTooltipComponentGenerated.ɵfac = function CategoryAxisCrosshairTooltipComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisCrosshairTooltipComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisCrosshairTooltipComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisCrosshairTooltipComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisCrosshairTooltipComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisCrosshairTooltipComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisCrosshairTooltipComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisCrosshairTooltipComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisCrosshairTooltipComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisCrosshairTooltipComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nlet CategoryAxisCrosshairTooltipComponent = class CategoryAxisCrosshairTooltipComponent extends CategoryAxisCrosshairTooltipComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nCategoryAxisCrosshairTooltipComponent.ɵfac = function CategoryAxisCrosshairTooltipComponent_Factory(t) { return new (t || CategoryAxisCrosshairTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisCrosshairTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisCrosshairTooltipComponent, selectors: [[\"kendo-chart-category-axis-item-crosshair-tooltip\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisCrosshairTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisCrosshairTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisCrosshairTooltipComponent);\n\n/**\n * The configuration of the axis labels ([see example]({% slug labels_chart_charts %})).\n */\nlet CategoryAxisLabelsComponent = class CategoryAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n};\nCategoryAxisLabelsComponent.ɵfac = function CategoryAxisLabelsComponent_Factory(t) { return new (t || CategoryAxisLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisLabelsComponent, selectors: [[\"kendo-chart-category-axis-item-labels\"]], inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisLabelsComponent.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisLabelsComponent.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisLabelsComponent.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], CategoryAxisLabelsComponent.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisLabelsComponent.prototype, \"culture\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisLabelsComponent.prototype, \"dateFormats\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisLabelsComponent.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisLabelsComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisLabelsComponent.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisLabelsComponent.prototype, \"mirror\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisLabelsComponent.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisLabelsComponent.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisLabelsComponent.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisLabelsComponent.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisLabelsComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisLabelsComponent.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], CategoryAxisLabelsComponent.prototype, \"visual\", void 0);\nCategoryAxisLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisLabelsComponent);\n\n/**\n * The configuration of the axis date range labels ([see example]({% slug labels_chart_charts %})).\n */\nlet CategoryAxisRangeLabelsComponent = class CategoryAxisRangeLabelsComponent extends CategoryAxisLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.configKey = 'rangeLabels';\n this.markAsVisible();\n }\n};\nCategoryAxisRangeLabelsComponent.ɵfac = function CategoryAxisRangeLabelsComponent_Factory(t) { return new (t || CategoryAxisRangeLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisRangeLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisRangeLabelsComponent, selectors: [[\"kendo-chart-category-axis-item-range-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisRangeLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisRangeLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisRangeLabelsComponent);\n\n/**\n * @hidden\n */\nclass CategoryAxisNotesComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesComponentGenerated.ɵfac = function CategoryAxisNotesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisNotesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisNotesComponentGenerated, inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CategoryAxisNotesComponentGenerated.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisNotesComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisNotesComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], CategoryAxisNotesComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisNotesComponentGenerated.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisNotesComponentGenerated.prototype, \"label\", void 0);\n\n/**\n * The configuration of the category axis notes ([see example]({% slug notes_chart_charts %}#toc-axis-notes)).\n */\nlet CategoryAxisNotesComponent = class CategoryAxisNotesComponent extends CategoryAxisNotesComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nCategoryAxisNotesComponent.ɵfac = function CategoryAxisNotesComponent_Factory(t) { return new (t || CategoryAxisNotesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisNotesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisNotesComponent, selectors: [[\"kendo-chart-category-axis-item-notes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisNotesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisNotesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisNotesComponent);\n\n/**\n * @hidden\n */\nclass CategoryAxisNotesIconComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesIconComponentGenerated.ɵfac = function CategoryAxisNotesIconComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisNotesIconComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisNotesIconComponentGenerated, inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisNotesIconComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisNotesIconComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisNotesIconComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisNotesIconComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisNotesIconComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The icon of the notes.\n */\nlet CategoryAxisNotesIconComponent = class CategoryAxisNotesIconComponent extends CategoryAxisNotesIconComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nCategoryAxisNotesIconComponent.ɵfac = function CategoryAxisNotesIconComponent_Factory(t) { return new (t || CategoryAxisNotesIconComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisNotesIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisNotesIconComponent, selectors: [[\"kendo-chart-category-axis-item-notes-icon\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisNotesIconComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisNotesIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisNotesIconComponent);\n\n/**\n * @hidden\n */\nclass CategoryAxisNotesLabelComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesLabelComponentGenerated.ɵfac = function CategoryAxisNotesLabelComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisNotesLabelComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisNotesLabelComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisNotesLabelComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The label of the notes.\n */\nlet CategoryAxisNotesLabelComponent = class CategoryAxisNotesLabelComponent extends CategoryAxisNotesLabelComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nCategoryAxisNotesLabelComponent.ɵfac = function CategoryAxisNotesLabelComponent_Factory(t) { return new (t || CategoryAxisNotesLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisNotesLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisNotesLabelComponent, selectors: [[\"kendo-chart-category-axis-item-notes-label\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisNotesLabelComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisNotesLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisNotesLabelComponent);\n\n/**\n * @hidden\n */\nclass CategoryAxisSelectComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('select', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisSelectComponentGenerated.ɵfac = function CategoryAxisSelectComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisSelectComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisSelectComponentGenerated, inputs: { from: \"from\", max: \"max\", min: \"min\", mousewheel: \"mousewheel\", to: \"to\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisSelectComponentGenerated.prototype, \"from\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisSelectComponentGenerated.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisSelectComponentGenerated.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisSelectComponentGenerated.prototype, \"mousewheel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisSelectComponentGenerated.prototype, \"to\", void 0);\n\n/**\n * The selected axis range. If set, the axis selection is enabled. The range is index-based and starts from zero.\n * Categories with indexes in the\n * ([`select.from`]({% slug api_charts_categoryaxisselectcomponent %}#toc-from)\n * —[`select.to`]({% slug api_charts_categoryaxisselectcomponent %}#toc-to)) range will be selected.\n * This means that the last category in the range will not be included in the selection.\n * If the categories are dates, the range has to be also specified with date values.\n */\nlet CategoryAxisSelectComponent = class CategoryAxisSelectComponent extends CategoryAxisSelectComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nCategoryAxisSelectComponent.ɵfac = function CategoryAxisSelectComponent_Factory(t) { return new (t || CategoryAxisSelectComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisSelectComponent, selectors: [[\"kendo-chart-category-axis-item-select\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisSelectComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisSelectComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisSelectComponent);\n\n/**\n * @hidden\n */\nclass CategoryAxisTitleComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisTitleComponentGenerated.ɵfac = function CategoryAxisTitleComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCategoryAxisTitleComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CategoryAxisTitleComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisTitleComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisTitleComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisTitleComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisTitleComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisTitleComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CategoryAxisTitleComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisTitleComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CategoryAxisTitleComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CategoryAxisTitleComponentGenerated.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CategoryAxisTitleComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], CategoryAxisTitleComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The configuration of the category axis title.\n */\nlet CategoryAxisTitleComponent = class CategoryAxisTitleComponent extends CategoryAxisTitleComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nCategoryAxisTitleComponent.ɵfac = function CategoryAxisTitleComponent_Factory(t) { return new (t || CategoryAxisTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nCategoryAxisTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CategoryAxisTitleComponent, selectors: [[\"kendo-chart-category-axis-item-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CategoryAxisTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nCategoryAxisTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], CategoryAxisTitleComponent);\n\n/**\n * @hidden\n */\nclass ChartAreaComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('chartArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nChartAreaComponentGenerated.ɵfac = function ChartAreaComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nChartAreaComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ChartAreaComponentGenerated, inputs: { background: \"background\", border: \"border\", height: \"height\", margin: \"margin\", opacity: \"opacity\", width: \"width\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ChartAreaComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartAreaComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ChartAreaComponentGenerated.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChartAreaComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ChartAreaComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ChartAreaComponentGenerated.prototype, \"width\", void 0);\n\n/**\n * The configuration options of the Chart area.\n * Represents the entire visible area of the Chart\n * ([see example]({% slug chartarea_chart_charts %})).\n */\nlet ChartAreaComponent = class ChartAreaComponent extends ChartAreaComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nChartAreaComponent.ɵfac = function ChartAreaComponent_Factory(t) { return new (t || ChartAreaComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nChartAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ChartAreaComponent, selectors: [[\"kendo-chart-area\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ChartAreaComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nChartAreaComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ChartAreaComponent);\n\n/**\n * @hidden\n */\nclass LegendComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('legend', configurationService);\n this.configurationService = configurationService;\n }\n}\nLegendComponentGenerated.ɵfac = function LegendComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nLegendComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LegendComponentGenerated, inputs: { align: \"align\", background: \"background\", border: \"border\", height: \"height\", labels: \"labels\", margin: \"margin\", offsetX: \"offsetX\", offsetY: \"offsetY\", orientation: \"orientation\", padding: \"padding\", position: \"position\", reverse: \"reverse\", visible: \"visible\", width: \"width\", markers: \"markers\", spacing: \"spacing\", inactiveItems: \"inactiveItems\", item: \"item\", title: \"title\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LegendComponentGenerated.prototype, \"align\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LegendComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LegendComponentGenerated.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendComponentGenerated.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LegendComponentGenerated.prototype, \"offsetX\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LegendComponentGenerated.prototype, \"offsetY\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LegendComponentGenerated.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LegendComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LegendComponentGenerated.prototype, \"reverse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LegendComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LegendComponentGenerated.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendComponentGenerated.prototype, \"markers\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LegendComponentGenerated.prototype, \"spacing\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendComponentGenerated.prototype, \"inactiveItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendComponentGenerated.prototype, \"item\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendComponentGenerated.prototype, \"title\", void 0);\n\n/**\n * The configuration options of the Chart legend\n * ([see example]({% slug legend_chart_charts %})).\n */\nlet LegendComponent = class LegendComponent extends LegendComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nLegendComponent.ɵfac = function LegendComponent_Factory(t) { return new (t || LegendComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nLegendComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LegendComponent, selectors: [[\"kendo-chart-legend\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LegendComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nLegendComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], LegendComponent);\n\n/**\n * @hidden\n */\nclass LegendInactiveItemsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('legend.inactiveItems', configurationService);\n this.configurationService = configurationService;\n }\n}\nLegendInactiveItemsComponentGenerated.ɵfac = function LegendInactiveItemsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nLegendInactiveItemsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LegendInactiveItemsComponentGenerated, inputs: { labels: \"labels\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LegendInactiveItemsComponentGenerated.prototype, \"labels\", void 0);\n\n/**\n * The configuration of the inactive Chart legend items.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * ```\n */\nlet LegendInactiveItemsComponent = class LegendInactiveItemsComponent extends LegendInactiveItemsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nLegendInactiveItemsComponent.ɵfac = function LegendInactiveItemsComponent_Factory(t) { return new (t || LegendInactiveItemsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nLegendInactiveItemsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LegendInactiveItemsComponent, selectors: [[\"kendo-chart-legend-inactive-items\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LegendInactiveItemsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nLegendInactiveItemsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], LegendInactiveItemsComponent);\n\n/**\n * @hidden\n */\nclass LegendItemComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('legend.item', configurationService);\n this.configurationService = configurationService;\n }\n}\nLegendItemComponentGenerated.ɵfac = function LegendItemComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nLegendItemComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LegendItemComponentGenerated, inputs: { cursor: \"cursor\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LegendItemComponentGenerated.prototype, \"cursor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], LegendItemComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The configuration of the Chart legend item.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * ```\n */\nlet LegendItemComponent = class LegendItemComponent extends LegendItemComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nLegendItemComponent.ɵfac = function LegendItemComponent_Factory(t) { return new (t || LegendItemComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nLegendItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LegendItemComponent, selectors: [[\"kendo-chart-legend-item\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LegendItemComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nLegendItemComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], LegendItemComponent);\n\n/**\n * @hidden\n */\nclass PaneComponentGenerated extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nPaneComponentGenerated.ɵfac = function PaneComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nPaneComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PaneComponentGenerated, inputs: { background: \"background\", border: \"border\", clip: \"clip\", height: \"height\", margin: \"margin\", name: \"name\", padding: \"padding\", title: \"title\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PaneComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PaneComponentGenerated.prototype, \"clip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PaneComponentGenerated.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PaneComponentGenerated.prototype, \"name\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneComponentGenerated.prototype, \"title\", void 0);\n\n/**\n * The configuration component for a Chart pane.\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 * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public seriesData: number[][] = [[1, 2, 3, 5], [0, 1, 0, 1]];\n * }\n * ```\n */\nlet PaneComponent = class PaneComponent extends PaneComponentGenerated {\n // Place custom properties here\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nPaneComponent.ɵfac = function PaneComponent_Factory(t) { return new (t || PaneComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nPaneComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PaneComponent, selectors: [[\"kendo-chart-pane\"], [\"kendo-chart-panes-item\"]], features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PaneComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nPaneComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], PaneComponent);\n\n/**\n * The default options for all chart panes,\n * ([see example]({% slug panes_chart_charts %}#toc-default-panes-configuration)).\n */\nlet PaneDefaultsComponent = class PaneDefaultsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('paneDefaults', configurationService);\n this.configurationService = configurationService;\n }\n};\nPaneDefaultsComponent.ɵfac = function PaneDefaultsComponent_Factory(t) { return new (t || PaneDefaultsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nPaneDefaultsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PaneDefaultsComponent, selectors: [[\"kendo-chart-pane-defaults\"]], inputs: { background: \"background\", border: \"border\", clip: \"clip\", height: \"height\", margin: \"margin\", padding: \"padding\", title: \"title\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PaneDefaultsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PaneDefaultsComponent.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneDefaultsComponent.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PaneDefaultsComponent.prototype, \"clip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PaneDefaultsComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneDefaultsComponent.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneDefaultsComponent.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneDefaultsComponent.prototype, \"title\", void 0);\nPaneDefaultsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], PaneDefaultsComponent);\n\n/**\n * The configuration of the pane default title.\n */\nlet PaneDefaultsTitleComponent = class PaneDefaultsTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('paneDefaults.title', configurationService);\n this.configurationService = configurationService;\n }\n};\nPaneDefaultsTitleComponent.ɵfac = function PaneDefaultsTitleComponent_Factory(t) { return new (t || PaneDefaultsTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nPaneDefaultsTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PaneDefaultsTitleComponent, selectors: [[\"kendo-chart-pane-defaults-title\"]], inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", position: \"position\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PaneDefaultsTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PaneDefaultsTitleComponent.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneDefaultsTitleComponent.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PaneDefaultsTitleComponent.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PaneDefaultsTitleComponent.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PaneDefaultsTitleComponent.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PaneDefaultsTitleComponent.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PaneDefaultsTitleComponent.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], PaneDefaultsTitleComponent.prototype, \"visual\", void 0);\nPaneDefaultsTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], PaneDefaultsTitleComponent);\n\n/**\n * @hidden\n */\nclass PanesComponentGenerated extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('panes', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nPanesComponentGenerated.ɵfac = function PanesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nPanesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PanesComponentGenerated, contentQueries: function PanesComponentGenerated_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, PaneComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n ContentChildren(PaneComponent),\n __metadata(\"design:type\", QueryList)\n], PanesComponentGenerated.prototype, \"children\", void 0);\n\n/**\n * A collection of one or more pane configuration components.\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 * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nlet PanesComponent = class PanesComponent extends PanesComponentGenerated {\n // Place custom properties here\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nPanesComponent.ɵfac = function PanesComponent_Factory(t) { return new (t || PanesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nPanesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PanesComponent, selectors: [[\"kendo-chart-panes\"]], features: [ɵngcc0.ɵɵProvidersFeature([CollectionService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PanesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nPanesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], PanesComponent);\n\n/**\n * @hidden\n */\nclass PanesTitleComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nPanesTitleComponentGenerated.ɵfac = function PanesTitleComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nPanesTitleComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PanesTitleComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", position: \"position\", text: \"text\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanesTitleComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PanesTitleComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanesTitleComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanesTitleComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PanesTitleComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanesTitleComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanesTitleComponentGenerated.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PanesTitleComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], PanesTitleComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The configuration of the Chart pane title.\n */\nlet PanesTitleComponent = class PanesTitleComponent extends PanesTitleComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nPanesTitleComponent.ɵfac = function PanesTitleComponent_Factory(t) { return new (t || PanesTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nPanesTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PanesTitleComponent, selectors: [[\"kendo-chart-pane-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PanesTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nPanesTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], PanesTitleComponent);\n\n/**\n * @hidden\n */\nclass PlotAreaComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('plotArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nPlotAreaComponentGenerated.ɵfac = function PlotAreaComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nPlotAreaComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PlotAreaComponentGenerated, inputs: { background: \"background\", border: \"border\", margin: \"margin\", opacity: \"opacity\", padding: \"padding\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PlotAreaComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PlotAreaComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PlotAreaComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PlotAreaComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PlotAreaComponentGenerated.prototype, \"padding\", void 0);\n\n/**\n * The configuration options of the plot area\n * ([see example]({% slug plotarea_chart_charts %})).\n * The plot area is the area which displays the series.\n */\nlet PlotAreaComponent = class PlotAreaComponent extends PlotAreaComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nPlotAreaComponent.ɵfac = function PlotAreaComponent_Factory(t) { return new (t || PlotAreaComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nPlotAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PlotAreaComponent, selectors: [[\"kendo-chart-plot-area\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PlotAreaComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nPlotAreaComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], PlotAreaComponent);\n\n/**\n * @hidden\n */\nclass SeriesComponentGenerated extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('series', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nSeriesComponentGenerated.ɵfac = function SeriesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesComponentGenerated, contentQueries: function SeriesComponentGenerated_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, SeriesItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n ContentChildren(SeriesItemComponent),\n __metadata(\"design:type\", QueryList)\n], SeriesComponentGenerated.prototype, \"children\", void 0);\n\n/**\n * A collection of one or more series items.\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 * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nlet SeriesComponent = class SeriesComponent extends SeriesComponentGenerated {\n // Place custom properties here\n constructor(configurationService, collectionService, tooltipTemplateService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.tooltipTemplateService = tooltipTemplateService;\n }\n ngAfterContentChecked() {\n this.readTooltipTemplates();\n }\n readTooltipTemplates() {\n const templates = this.children.map((item) => item.seriesTooltipTemplateRef);\n this.tooltipTemplateService.setSeriesTemplates(templates);\n }\n};\nSeriesComponent.ɵfac = function SeriesComponent_Factory(t) { return new (t || SeriesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService), ɵngcc0.ɵɵdirectiveInject(TooltipTemplateService)); };\nSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesComponent, selectors: [[\"kendo-chart-series\"]], features: [ɵngcc0.ɵɵProvidersFeature([CollectionService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService,\n TooltipTemplateService])\n], SeriesComponent);\n\n/**\n * @hidden\n */\nclass SeriesDefaultsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsComponentGenerated.ɵfac = function SeriesDefaultsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesDefaultsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesDefaultsComponentGenerated, inputs: { border: \"border\", gap: \"gap\", highlight: \"highlight\", overlay: \"overlay\", spacing: \"spacing\", stack: \"stack\", type: \"type\", visual: \"visual\", labels: \"labels\", notes: \"notes\", tooltip: \"tooltip\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesDefaultsComponentGenerated.prototype, \"gap\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsComponentGenerated.prototype, \"highlight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsComponentGenerated.prototype, \"overlay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesDefaultsComponentGenerated.prototype, \"spacing\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsComponentGenerated.prototype, \"stack\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesDefaultsComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsComponentGenerated.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsComponentGenerated.prototype, \"notes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsComponentGenerated.prototype, \"tooltip\", void 0);\n\n/**\n * The default options for all series\n * ([see example]({% slug series_chart_charts %}#toc-default-series-configuration)).\n */\nlet SeriesDefaultsComponent = class SeriesDefaultsComponent extends SeriesDefaultsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesDefaultsComponent.ɵfac = function SeriesDefaultsComponent_Factory(t) { return new (t || SeriesDefaultsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesDefaultsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesDefaultsComponent, selectors: [[\"kendo-chart-series-defaults\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesDefaultsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesDefaultsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesDefaultsComponent);\n\n/**\n * @hidden\n */\nclass SeriesDefaultsLabelsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsLabelsComponentGenerated.ɵfac = function SeriesDefaultsLabelsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesDefaultsLabelsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesDefaultsLabelsComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"from\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsComponentGenerated.prototype, \"to\", void 0);\n\n/**\n * The configuration of the Chart series label.\n */\nlet SeriesDefaultsLabelsComponent = class SeriesDefaultsLabelsComponent extends SeriesDefaultsLabelsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nSeriesDefaultsLabelsComponent.ɵfac = function SeriesDefaultsLabelsComponent_Factory(t) { return new (t || SeriesDefaultsLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesDefaultsLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesDefaultsLabelsComponent, selectors: [[\"kendo-chart-series-defaults-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesDefaultsLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesDefaultsLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesDefaultsLabelsComponent);\n\n/**\n * @hidden\n */\nclass SeriesDefaultsLabelsFromComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels.from', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsLabelsFromComponentGenerated.ɵfac = function SeriesDefaultsLabelsFromComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesDefaultsLabelsFromComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesDefaultsLabelsFromComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesDefaultsLabelsFromComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The `from` label configuration of the Chart series.\n */\nlet SeriesDefaultsLabelsFromComponent = class SeriesDefaultsLabelsFromComponent extends SeriesDefaultsLabelsFromComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nSeriesDefaultsLabelsFromComponent.ɵfac = function SeriesDefaultsLabelsFromComponent_Factory(t) { return new (t || SeriesDefaultsLabelsFromComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesDefaultsLabelsFromComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesDefaultsLabelsFromComponent, selectors: [[\"kendo-chart-series-defaults-labels-from\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesDefaultsLabelsFromComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesDefaultsLabelsFromComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesDefaultsLabelsFromComponent);\n\n/**\n * @hidden\n */\nclass SeriesDefaultsLabelsToComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels.to', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsLabelsToComponentGenerated.ɵfac = function SeriesDefaultsLabelsToComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesDefaultsLabelsToComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesDefaultsLabelsToComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesDefaultsLabelsToComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The `to` label configuration of the Chart series.\n */\nlet SeriesDefaultsLabelsToComponent = class SeriesDefaultsLabelsToComponent extends SeriesDefaultsLabelsToComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nSeriesDefaultsLabelsToComponent.ɵfac = function SeriesDefaultsLabelsToComponent_Factory(t) { return new (t || SeriesDefaultsLabelsToComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesDefaultsLabelsToComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesDefaultsLabelsToComponent, selectors: [[\"kendo-chart-series-defaults-labels-to\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesDefaultsLabelsToComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesDefaultsLabelsToComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesDefaultsLabelsToComponent);\n\n/**\n * @hidden\n */\nclass SeriesDefaultsNotesComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesComponentGenerated.ɵfac = function SeriesDefaultsNotesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesDefaultsNotesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesDefaultsNotesComponentGenerated, inputs: { line: \"line\", visual: \"visual\", icon: \"icon\", label: \"label\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsNotesComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesDefaultsNotesComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsNotesComponentGenerated.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsNotesComponentGenerated.prototype, \"label\", void 0);\n\n/**\n * The configuration of the [`seriesDefaults`]({% slug api_charts_seriesdefaultscomponent %}) notes.\n */\nlet SeriesDefaultsNotesComponent = class SeriesDefaultsNotesComponent extends SeriesDefaultsNotesComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesDefaultsNotesComponent.ɵfac = function SeriesDefaultsNotesComponent_Factory(t) { return new (t || SeriesDefaultsNotesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesDefaultsNotesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesDefaultsNotesComponent, selectors: [[\"kendo-chart-series-defaults-notes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesDefaultsNotesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesDefaultsNotesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesDefaultsNotesComponent);\n\n/**\n * @hidden\n */\nclass SeriesDefaultsNotesIconComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesIconComponentGenerated.ɵfac = function SeriesDefaultsNotesIconComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesDefaultsNotesIconComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesDefaultsNotesIconComponentGenerated, inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsNotesIconComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsNotesIconComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesDefaultsNotesIconComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsNotesIconComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesDefaultsNotesIconComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The icon of the notes.\n */\nlet SeriesDefaultsNotesIconComponent = class SeriesDefaultsNotesIconComponent extends SeriesDefaultsNotesIconComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesDefaultsNotesIconComponent.ɵfac = function SeriesDefaultsNotesIconComponent_Factory(t) { return new (t || SeriesDefaultsNotesIconComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesDefaultsNotesIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesDefaultsNotesIconComponent, selectors: [[\"kendo-chart-series-defaults-notes-icon\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesDefaultsNotesIconComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesDefaultsNotesIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesDefaultsNotesIconComponent);\n\n/**\n * @hidden\n */\nclass SeriesDefaultsNotesLabelComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesLabelComponentGenerated.ɵfac = function SeriesDefaultsNotesLabelComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesDefaultsNotesLabelComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesDefaultsNotesLabelComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesDefaultsNotesLabelComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The label of the notes.\n */\nlet SeriesDefaultsNotesLabelComponent = class SeriesDefaultsNotesLabelComponent extends SeriesDefaultsNotesLabelComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesDefaultsNotesLabelComponent.ɵfac = function SeriesDefaultsNotesLabelComponent_Factory(t) { return new (t || SeriesDefaultsNotesLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesDefaultsNotesLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesDefaultsNotesLabelComponent, selectors: [[\"kendo-chart-series-defaults-notes-label\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesDefaultsNotesLabelComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesDefaultsNotesLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesDefaultsNotesLabelComponent);\n\n/**\n * @hidden\n */\nclass SeriesDefaultsTooltipComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.tooltip', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsTooltipComponentGenerated.ɵfac = function SeriesDefaultsTooltipComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesDefaultsTooltipComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesDefaultsTooltipComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsTooltipComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsTooltipComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsTooltipComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsTooltipComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesDefaultsTooltipComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesDefaultsTooltipComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesDefaultsTooltipComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The configuration options of the Chart series tooltip.\n */\nlet SeriesDefaultsTooltipComponent = class SeriesDefaultsTooltipComponent extends SeriesDefaultsTooltipComponentGenerated {\n // Place custom properties here.\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nSeriesDefaultsTooltipComponent.ɵfac = function SeriesDefaultsTooltipComponent_Factory(t) { return new (t || SeriesDefaultsTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesDefaultsTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesDefaultsTooltipComponent, selectors: [[\"kendo-chart-series-defaults-tooltip\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesDefaultsTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesDefaultsTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesDefaultsTooltipComponent);\n\n/**\n * @hidden\n */\nclass SeriesErrorBarsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('errorBars', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesErrorBarsComponentGenerated.ɵfac = function SeriesErrorBarsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesErrorBarsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesErrorBarsComponentGenerated, inputs: { color: \"color\", endCaps: \"endCaps\", line: \"line\", value: \"value\", visual: \"visual\", xValue: \"xValue\", yValue: \"yValue\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesErrorBarsComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesErrorBarsComponentGenerated.prototype, \"endCaps\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesErrorBarsComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesErrorBarsComponentGenerated.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesErrorBarsComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesErrorBarsComponentGenerated.prototype, \"xValue\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesErrorBarsComponentGenerated.prototype, \"yValue\", void 0);\n\n/**\n * The error bars of the Chart series\n * ([see example]({% slug errorbars_chart_charts %})).\n */\nlet SeriesErrorBarsComponent = class SeriesErrorBarsComponent extends SeriesErrorBarsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesErrorBarsComponent.ɵfac = function SeriesErrorBarsComponent_Factory(t) { return new (t || SeriesErrorBarsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesErrorBarsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesErrorBarsComponent, selectors: [[\"kendo-chart-series-item-error-bars\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesErrorBarsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesErrorBarsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesErrorBarsComponent);\n\n/**\n * @hidden\n */\nclass SeriesExtremesComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('extremes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesExtremesComponentGenerated.ɵfac = function SeriesExtremesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesExtremesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesExtremesComponentGenerated, inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesExtremesComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesExtremesComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesExtremesComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesExtremesComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesExtremesComponentGenerated.prototype, \"type\", void 0);\n\n/**\n * The configuration of the Chart series extremes.\n * Applies to extreme outliers.\n * For more information, refer to [`series.outliers`]({% slug api_charts_seriesitemcomponent %}#toc-outliers).\n */\nlet SeriesExtremesComponent = class SeriesExtremesComponent extends SeriesExtremesComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesExtremesComponent.ɵfac = function SeriesExtremesComponent_Factory(t) { return new (t || SeriesExtremesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesExtremesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesExtremesComponent, selectors: [[\"kendo-chart-series-item-extremes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesExtremesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesExtremesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesExtremesComponent);\n\n/**\n * @hidden\n */\nclass SeriesHighlightComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('highlight', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesHighlightComponentGenerated.ɵfac = function SeriesHighlightComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesHighlightComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesHighlightComponentGenerated, inputs: { border: \"border\", color: \"color\", line: \"line\", markers: \"markers\", opacity: \"opacity\", toggle: \"toggle\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesHighlightComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesHighlightComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesHighlightComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesHighlightComponentGenerated.prototype, \"markers\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesHighlightComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesHighlightComponentGenerated.prototype, \"toggle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesHighlightComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesHighlightComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The Chart series highlighting configuration options.\n */\nlet SeriesHighlightComponent = class SeriesHighlightComponent extends SeriesHighlightComponentGenerated {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesHighlightComponent.ɵfac = function SeriesHighlightComponent_Factory(t) { return new (t || SeriesHighlightComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesHighlightComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesHighlightComponent, selectors: [[\"kendo-chart-series-item-highlight\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesHighlightComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesHighlightComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesHighlightComponent);\n\n/**\n * @hidden\n */\nclass SeriesLabelsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesLabelsComponentGenerated.ɵfac = function SeriesLabelsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesLabelsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesLabelsComponentGenerated, inputs: { align: \"align\", background: \"background\", border: \"border\", color: \"color\", content: \"content\", distance: \"distance\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsComponentGenerated.prototype, \"align\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesLabelsComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesLabelsComponentGenerated.prototype, \"distance\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesLabelsComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesLabelsComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesLabelsComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsComponentGenerated.prototype, \"from\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsComponentGenerated.prototype, \"to\", void 0);\n\n/**\n * The configuration of the Chart series label\n * ([see example]({% slug labels_chart_charts %})).\n */\nlet SeriesLabelsComponent = class SeriesLabelsComponent extends SeriesLabelsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nSeriesLabelsComponent.ɵfac = function SeriesLabelsComponent_Factory(t) { return new (t || SeriesLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesLabelsComponent, selectors: [[\"kendo-chart-series-item-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesLabelsComponent);\n\n/**\n * @hidden\n */\nclass SeriesLabelsFromComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('labels.from', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesLabelsFromComponentGenerated.ɵfac = function SeriesLabelsFromComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesLabelsFromComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesLabelsFromComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsFromComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsFromComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsFromComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesLabelsFromComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsFromComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsFromComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsFromComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsFromComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsFromComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesLabelsFromComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The `from` label configuration of the Chart series.\n */\nlet SeriesLabelsFromComponent = class SeriesLabelsFromComponent extends SeriesLabelsFromComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nSeriesLabelsFromComponent.ɵfac = function SeriesLabelsFromComponent_Factory(t) { return new (t || SeriesLabelsFromComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesLabelsFromComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesLabelsFromComponent, selectors: [[\"kendo-chart-series-item-labels-from\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesLabelsFromComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesLabelsFromComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesLabelsFromComponent);\n\n/**\n * @hidden\n */\nclass SeriesLabelsToComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('labels.to', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesLabelsToComponentGenerated.ɵfac = function SeriesLabelsToComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesLabelsToComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesLabelsToComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsToComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsToComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsToComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesLabelsToComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsToComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsToComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsToComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesLabelsToComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesLabelsToComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesLabelsToComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The `to` label configuration of the Chart series.\n */\nlet SeriesLabelsToComponent = class SeriesLabelsToComponent extends SeriesLabelsToComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nSeriesLabelsToComponent.ɵfac = function SeriesLabelsToComponent_Factory(t) { return new (t || SeriesLabelsToComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesLabelsToComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesLabelsToComponent, selectors: [[\"kendo-chart-series-item-labels-to\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesLabelsToComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesLabelsToComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesLabelsToComponent);\n\n/**\n * @hidden\n */\nclass SeriesMarkersComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('markers', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesMarkersComponentGenerated.ɵfac = function SeriesMarkersComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesMarkersComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesMarkersComponentGenerated, inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesMarkersComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesMarkersComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesMarkersComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesMarkersComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesMarkersComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesMarkersComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesMarkersComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesMarkersComponentGenerated.prototype, \"from\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesMarkersComponentGenerated.prototype, \"to\", void 0);\n\n/**\n * The configuration of the Chart series marker.\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 * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public series: any[] = [{\n * name: \"India\",\n * data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855],\n * markers: {\n * background: 'red',\n * size: 20,\n * type: 'circle'\n * }\n * }, {\n * name: \"Russian Federation\",\n * data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3],\n * markers: {\n * background: 'yellow',\n * size: 10,\n * type: 'square',\n * rotation: 45\n * }\n * }, {\n * name: \"Germany\",\n * data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995],\n * markers: {\n * background: 'green',\n * size: 20,\n * type: 'triangle'\n * }\n * },{\n * name: \"World\",\n * data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727],\n * markers: {\n * background: 'blue',\n * size: 10,\n * type: 'cross'\n * }\n * }];\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n * }\n * ```\n */\nlet SeriesMarkersComponent = class SeriesMarkersComponent extends SeriesMarkersComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesMarkersComponent.ɵfac = function SeriesMarkersComponent_Factory(t) { return new (t || SeriesMarkersComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesMarkersComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesMarkersComponent, selectors: [[\"kendo-chart-series-item-markers\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesMarkersComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesMarkersComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesMarkersComponent);\n\n/**\n * @hidden\n */\nclass SeriesNotesComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesComponentGenerated.ɵfac = function SeriesNotesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesNotesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesNotesComponentGenerated, inputs: { line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesNotesComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesNotesComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesNotesComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesNotesComponentGenerated.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesNotesComponentGenerated.prototype, \"label\", void 0);\n\n/**\n * The series notes configuration\n * ([see example]({% slug notes_chart_charts %})).\n */\nlet SeriesNotesComponent = class SeriesNotesComponent extends SeriesNotesComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesNotesComponent.ɵfac = function SeriesNotesComponent_Factory(t) { return new (t || SeriesNotesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesNotesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesNotesComponent, selectors: [[\"kendo-chart-series-item-notes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesNotesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesNotesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesNotesComponent);\n\n/**\n * @hidden\n */\nclass SeriesNotesIconComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesIconComponentGenerated.ɵfac = function SeriesNotesIconComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesNotesIconComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesNotesIconComponentGenerated, inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesNotesIconComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesNotesIconComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesNotesIconComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesNotesIconComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesNotesIconComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The icon of the notes.\n */\nlet SeriesNotesIconComponent = class SeriesNotesIconComponent extends SeriesNotesIconComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesNotesIconComponent.ɵfac = function SeriesNotesIconComponent_Factory(t) { return new (t || SeriesNotesIconComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesNotesIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesNotesIconComponent, selectors: [[\"kendo-chart-series-item-notes-icon\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesNotesIconComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesNotesIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesNotesIconComponent);\n\n/**\n * @hidden\n */\nclass SeriesNotesLabelComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesLabelComponentGenerated.ɵfac = function SeriesNotesLabelComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesNotesLabelComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesNotesLabelComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesNotesLabelComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesNotesLabelComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesNotesLabelComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SeriesNotesLabelComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesNotesLabelComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesNotesLabelComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesNotesLabelComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesNotesLabelComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SeriesNotesLabelComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The label of the notes.\n */\nlet SeriesNotesLabelComponent = class SeriesNotesLabelComponent extends SeriesNotesLabelComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesNotesLabelComponent.ɵfac = function SeriesNotesLabelComponent_Factory(t) { return new (t || SeriesNotesLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesNotesLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesNotesLabelComponent, selectors: [[\"kendo-chart-series-item-notes-label\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesNotesLabelComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesNotesLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesNotesLabelComponent);\n\n/**\n * @hidden\n */\nclass SeriesOutliersComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('outliers', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesOutliersComponentGenerated.ɵfac = function SeriesOutliersComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSeriesOutliersComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SeriesOutliersComponentGenerated, inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesOutliersComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SeriesOutliersComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesOutliersComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SeriesOutliersComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SeriesOutliersComponentGenerated.prototype, \"type\", void 0);\n\n/**\n * The configuration of the Chart series outliers.\n * Applies to mild outliers.\n * For more information, refer to the [`series.extremes`]({% slug api_charts_seriesitemcomponent %}#toc-extremes) option.\n */\nlet SeriesOutliersComponent = class SeriesOutliersComponent extends SeriesOutliersComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nSeriesOutliersComponent.ɵfac = function SeriesOutliersComponent_Factory(t) { return new (t || SeriesOutliersComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nSeriesOutliersComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesOutliersComponent, selectors: [[\"kendo-chart-series-item-outliers\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SeriesOutliersComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nSeriesOutliersComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], SeriesOutliersComponent);\n\n/**\n * @hidden\n */\nclass TitleComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nTitleComponentGenerated.ɵfac = function TitleComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nTitleComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TitleComponentGenerated, inputs: { align: \"align\", background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", text: \"text\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TitleComponentGenerated.prototype, \"align\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TitleComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TitleComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TitleComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TitleComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TitleComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TitleComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TitleComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TitleComponentGenerated.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TitleComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The configuration options of the Chart title or text\n * ([see example]({% slug title_chart_charts %})).\n *\n * @example\n * ```ts-preview\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n *

\n * \n * `\n * })\n * export class AppComponent {\n * public isVisible = true;\n * public borderOptions = {\n * color: \"rgba(255, 0, 0, 0.8)\",\n * dashType: 'dash',\n * width: 2\n * };\n *\n * public series: any[] = [{\n * name: \"India\",\n * data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855]\n * }, {\n * name: \"Russian Federation\",\n * data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3]\n * }, {\n * name: \"Germany\",\n * data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995]\n * },{\n * name: \"World\",\n * data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727]\n * }];\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n * }\n * ```\n */\nlet TitleComponent = class TitleComponent extends TitleComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nTitleComponent.ɵfac = function TitleComponent_Factory(t) { return new (t || TitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TitleComponent, selectors: [[\"kendo-chart-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function TitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], TitleComponent);\n\n/**\n * @hidden\n */\nclass TooltipComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('tooltip', configurationService);\n this.configurationService = configurationService;\n }\n}\nTooltipComponentGenerated.ɵfac = function TooltipComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nTooltipComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TooltipComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", opacity: \"opacity\", padding: \"padding\", shared: \"shared\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TooltipComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TooltipComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TooltipComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TooltipComponentGenerated.prototype, \"shared\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TooltipComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The configuration options of the Chart series tooltip\n * ([see example]({% slug tooltips_chart_charts %})).\n */\nlet TooltipComponent = class TooltipComponent extends TooltipComponentGenerated {\n constructor(configurationService, templateService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.templateService = templateService;\n this.markAsVisible();\n }\n ngAfterContentChecked() {\n this.templateService.setTemplate(this.seriesTooltipTemplate ? this.seriesTooltipTemplate.templateRef : null);\n this.templateService.setSharedTemplate(this.sharedTooltipTemplate ? this.sharedTooltipTemplate.templateRef : null);\n }\n};\nTooltipComponent.ɵfac = function TooltipComponent_Factory(t) { return new (t || TooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(TooltipTemplateService)); };\nTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TooltipComponent, selectors: [[\"kendo-chart-tooltip\"]], contentQueries: function TooltipComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, SeriesTooltipTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, SharedTooltipTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.sharedTooltipTemplate = _t.first);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function TooltipComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChild(SeriesTooltipTemplateDirective, { static: false }),\n __metadata(\"design:type\", SeriesTooltipTemplateDirective)\n], TooltipComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n ContentChild(SharedTooltipTemplateDirective, { static: false }),\n __metadata(\"design:type\", SharedTooltipTemplateDirective)\n], TooltipComponent.prototype, \"sharedTooltipTemplate\", void 0);\nTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n TooltipTemplateService])\n], TooltipComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisItemComponentGenerated extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nValueAxisItemComponentGenerated.ɵfac = function ValueAxisItemComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisItemComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisItemComponentGenerated, inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", type: \"type\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"axisCrossingValue\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisItemComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisItemComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"majorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"majorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisItemComponentGenerated.prototype, \"majorUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"minorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"minorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisItemComponentGenerated.prototype, \"minorUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisItemComponentGenerated.prototype, \"name\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisItemComponentGenerated.prototype, \"narrowRange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisItemComponentGenerated.prototype, \"pane\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ValueAxisItemComponentGenerated.prototype, \"plotBands\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisItemComponentGenerated.prototype, \"reverse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisItemComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisItemComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"crosshair\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"notes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisItemComponentGenerated.prototype, \"title\", void 0);\n\n/**\n * The configuration component for a value axis.\n */\nlet ValueAxisItemComponent = class ValueAxisItemComponent extends ValueAxisItemComponentGenerated {\n // Place custom properties here\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nValueAxisItemComponent.ɵfac = function ValueAxisItemComponent_Factory(t) { return new (t || ValueAxisItemComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nValueAxisItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisItemComponent, selectors: [[\"kendo-chart-value-axis-item\"]], features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisItemComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisItemComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], ValueAxisItemComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisComponentGenerated extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('valueAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nValueAxisComponentGenerated.ɵfac = function ValueAxisComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisComponentGenerated, contentQueries: function ValueAxisComponentGenerated_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ValueAxisItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n ContentChildren(ValueAxisItemComponent),\n __metadata(\"design:type\", QueryList)\n], ValueAxisComponentGenerated.prototype, \"children\", void 0);\n\n/**\n * A collection of one or more value axis configuration components.\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 * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nlet ValueAxisComponent = class ValueAxisComponent extends ValueAxisComponentGenerated {\n // Place custom properties here\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nValueAxisComponent.ɵfac = function ValueAxisComponent_Factory(t) { return new (t || ValueAxisComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nValueAxisComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisComponent, selectors: [[\"kendo-chart-value-axis\"]], features: [ɵngcc0.ɵɵProvidersFeature([CollectionService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], ValueAxisComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisCrosshairComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisCrosshairComponentGenerated.ɵfac = function ValueAxisCrosshairComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisCrosshairComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisCrosshairComponentGenerated, inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisCrosshairComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisCrosshairComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisCrosshairComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisCrosshairComponentGenerated.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisCrosshairComponentGenerated.prototype, \"tooltip\", void 0);\n\n/**\n * The crosshair configuration options ([see example]({% slug crosshairs_chart_charts %})).\n */\nlet ValueAxisCrosshairComponent = class ValueAxisCrosshairComponent extends ValueAxisCrosshairComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nValueAxisCrosshairComponent.ɵfac = function ValueAxisCrosshairComponent_Factory(t) { return new (t || ValueAxisCrosshairComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nValueAxisCrosshairComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisCrosshairComponent, selectors: [[\"kendo-chart-value-axis-item-crosshair\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisCrosshairComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisCrosshairComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ValueAxisCrosshairComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisCrosshairTooltipComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisCrosshairTooltipComponentGenerated.ɵfac = function ValueAxisCrosshairTooltipComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisCrosshairTooltipComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisCrosshairTooltipComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisCrosshairTooltipComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisCrosshairTooltipComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisCrosshairTooltipComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisCrosshairTooltipComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisCrosshairTooltipComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisCrosshairTooltipComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisCrosshairTooltipComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The configuration options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nlet ValueAxisCrosshairTooltipComponent = class ValueAxisCrosshairTooltipComponent extends ValueAxisCrosshairTooltipComponentGenerated {\n // Place custom properties here.\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nValueAxisCrosshairTooltipComponent.ɵfac = function ValueAxisCrosshairTooltipComponent_Factory(t) { return new (t || ValueAxisCrosshairTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nValueAxisCrosshairTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisCrosshairTooltipComponent, selectors: [[\"kendo-chart-value-axis-item-crosshair-tooltip\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisCrosshairTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisCrosshairTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ValueAxisCrosshairTooltipComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisLabelsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisLabelsComponentGenerated.ɵfac = function ValueAxisLabelsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisLabelsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisLabelsComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisLabelsComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisLabelsComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisLabelsComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ValueAxisLabelsComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisLabelsComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisLabelsComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisLabelsComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisLabelsComponentGenerated.prototype, \"mirror\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisLabelsComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisLabelsComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisLabelsComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisLabelsComponentGenerated.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisLabelsComponentGenerated.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisLabelsComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ValueAxisLabelsComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The axis labels configuration.\n */\nlet ValueAxisLabelsComponent = class ValueAxisLabelsComponent extends ValueAxisLabelsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nValueAxisLabelsComponent.ɵfac = function ValueAxisLabelsComponent_Factory(t) { return new (t || ValueAxisLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nValueAxisLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisLabelsComponent, selectors: [[\"kendo-chart-value-axis-item-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ValueAxisLabelsComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisNotesComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesComponentGenerated.ɵfac = function ValueAxisNotesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisNotesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisNotesComponentGenerated, inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ValueAxisNotesComponentGenerated.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisNotesComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisNotesComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ValueAxisNotesComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisNotesComponentGenerated.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisNotesComponentGenerated.prototype, \"label\", void 0);\n\n/**\n * The configuration of the value axis notes ([see example]({% slug notes_chart_charts %}#toc-axis-notes)).\n */\nlet ValueAxisNotesComponent = class ValueAxisNotesComponent extends ValueAxisNotesComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nValueAxisNotesComponent.ɵfac = function ValueAxisNotesComponent_Factory(t) { return new (t || ValueAxisNotesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nValueAxisNotesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisNotesComponent, selectors: [[\"kendo-chart-value-axis-item-notes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisNotesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisNotesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ValueAxisNotesComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisNotesIconComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesIconComponentGenerated.ɵfac = function ValueAxisNotesIconComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisNotesIconComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisNotesIconComponentGenerated, inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisNotesIconComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisNotesIconComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisNotesIconComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisNotesIconComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisNotesIconComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The icon of the notes.\n */\nlet ValueAxisNotesIconComponent = class ValueAxisNotesIconComponent extends ValueAxisNotesIconComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nValueAxisNotesIconComponent.ɵfac = function ValueAxisNotesIconComponent_Factory(t) { return new (t || ValueAxisNotesIconComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nValueAxisNotesIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisNotesIconComponent, selectors: [[\"kendo-chart-value-axis-item-notes-icon\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisNotesIconComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisNotesIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ValueAxisNotesIconComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisNotesLabelComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesLabelComponentGenerated.ɵfac = function ValueAxisNotesLabelComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisNotesLabelComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisNotesLabelComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisNotesLabelComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The label of the notes.\n */\nlet ValueAxisNotesLabelComponent = class ValueAxisNotesLabelComponent extends ValueAxisNotesLabelComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nValueAxisNotesLabelComponent.ɵfac = function ValueAxisNotesLabelComponent_Factory(t) { return new (t || ValueAxisNotesLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nValueAxisNotesLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisNotesLabelComponent, selectors: [[\"kendo-chart-value-axis-item-notes-label\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisNotesLabelComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisNotesLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ValueAxisNotesLabelComponent);\n\n/**\n * @hidden\n */\nclass ValueAxisTitleComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisTitleComponentGenerated.ɵfac = function ValueAxisTitleComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nValueAxisTitleComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueAxisTitleComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisTitleComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisTitleComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisTitleComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisTitleComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisTitleComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ValueAxisTitleComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisTitleComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ValueAxisTitleComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ValueAxisTitleComponentGenerated.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ValueAxisTitleComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ValueAxisTitleComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The title configuration of the value axis.\n */\nlet ValueAxisTitleComponent = class ValueAxisTitleComponent extends ValueAxisTitleComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nValueAxisTitleComponent.ɵfac = function ValueAxisTitleComponent_Factory(t) { return new (t || ValueAxisTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nValueAxisTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ValueAxisTitleComponent, selectors: [[\"kendo-chart-value-axis-item-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ValueAxisTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nValueAxisTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ValueAxisTitleComponent);\n\n/**\n * @hidden\n */\nclass XAxisItemComponentGenerated extends CollectionItemComponent {\n constructor(configurationService, collectionService, intl, localeId) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.notifyChanges({ weekStartDay: intl.firstDay(localeId) });\n }\n}\nXAxisItemComponentGenerated.ɵfac = function XAxisItemComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisItemComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisItemComponentGenerated, inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", startAngle: \"startAngle\", type: \"type\", visible: \"visible\", weekStartDay: \"weekStartDay\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"axisCrossingValue\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisItemComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisItemComponentGenerated.prototype, \"baseUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisItemComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"majorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"majorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisItemComponentGenerated.prototype, \"majorUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"minorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"minorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisItemComponentGenerated.prototype, \"minorUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisItemComponentGenerated.prototype, \"name\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisItemComponentGenerated.prototype, \"narrowRange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisItemComponentGenerated.prototype, \"pane\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], XAxisItemComponentGenerated.prototype, \"plotBands\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisItemComponentGenerated.prototype, \"reverse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisItemComponentGenerated.prototype, \"startAngle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisItemComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisItemComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisItemComponentGenerated.prototype, \"weekStartDay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"crosshair\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"notes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisItemComponentGenerated.prototype, \"title\", void 0);\n\n/**\n * The configuration component for an X axis\n * ([see example]({% slug api_charts_xaxiscomponent %})).\n */\nlet XAxisItemComponent = class XAxisItemComponent extends XAxisItemComponentGenerated {\n constructor(configurationService, collectionService, intl, localeId) {\n super(configurationService, collectionService, intl, localeId);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.intl = intl;\n }\n};\nXAxisItemComponent.ɵfac = function XAxisItemComponent_Factory(t) { return new (t || XAxisItemComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.IntlService), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID)); };\nXAxisItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisItemComponent, selectors: [[\"kendo-chart-x-axis-item\"]], inputs: { categories: \"categories\" }, features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisItemComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], XAxisItemComponent.prototype, \"categories\", void 0);\nXAxisItemComponent = __decorate([ __param(3, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService,\n IntlService, String])\n], XAxisItemComponent);\n\n/**\n * @hidden\n */\nclass XAxisComponentGenerated extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('xAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nXAxisComponentGenerated.ɵfac = function XAxisComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisComponentGenerated, contentQueries: function XAxisComponentGenerated_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, XAxisItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n ContentChildren(XAxisItemComponent),\n __metadata(\"design:type\", QueryList)\n], XAxisComponentGenerated.prototype, \"children\", void 0);\n\n/**\n * A collection of one or more X-axis configuration components.\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 * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public notesConfig = {\n * data: [{\n * value: 0.2,\n * text: \"foo\"\n * }, {\n * value: 0.8,\n * text: \"bar\"\n * }],\n * label: {\n * content: (args: any) => args.dataItem.text,\n * background: 'red',\n * color: 'white'\n * },\n * line: {\n * color: 'blue',\n * dashType: 'dash',\n * length: 150,\n * width: 2\n * },\n * position: 'top'\n * };\n *\n * public crosshairConfig = {\n * color: 'green',\n * opacity: 0.8,\n * visible: true,\n * width: 3\n * };\n * }\n *\n * ```\n */\nlet XAxisComponent = class XAxisComponent extends XAxisComponentGenerated {\n // Place custom properties here\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nXAxisComponent.ɵfac = function XAxisComponent_Factory(t) { return new (t || XAxisComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nXAxisComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisComponent, selectors: [[\"kendo-chart-x-axis\"]], features: [ɵngcc0.ɵɵProvidersFeature([CollectionService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nXAxisComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], XAxisComponent);\n\n/**\n * @hidden\n */\nclass XAxisCrosshairComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisCrosshairComponentGenerated.ɵfac = function XAxisCrosshairComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisCrosshairComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisCrosshairComponentGenerated, inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisCrosshairComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisCrosshairComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisCrosshairComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisCrosshairComponentGenerated.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisCrosshairComponentGenerated.prototype, \"tooltip\", void 0);\n\n/**\n * The crosshair configuration options\n * ([see example]({% slug api_charts_xaxiscomponent %})).\n */\nlet XAxisCrosshairComponent = class XAxisCrosshairComponent extends XAxisCrosshairComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nXAxisCrosshairComponent.ɵfac = function XAxisCrosshairComponent_Factory(t) { return new (t || XAxisCrosshairComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nXAxisCrosshairComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisCrosshairComponent, selectors: [[\"kendo-chart-x-axis-item-crosshair\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisCrosshairComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nXAxisCrosshairComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], XAxisCrosshairComponent);\n\n/**\n * @hidden\n */\nclass XAxisCrosshairTooltipComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisCrosshairTooltipComponentGenerated.ɵfac = function XAxisCrosshairTooltipComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisCrosshairTooltipComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisCrosshairTooltipComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisCrosshairTooltipComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisCrosshairTooltipComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisCrosshairTooltipComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisCrosshairTooltipComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisCrosshairTooltipComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisCrosshairTooltipComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisCrosshairTooltipComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nlet XAxisCrosshairTooltipComponent = class XAxisCrosshairTooltipComponent extends XAxisCrosshairTooltipComponentGenerated {\n // Place custom properties here.\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nXAxisCrosshairTooltipComponent.ɵfac = function XAxisCrosshairTooltipComponent_Factory(t) { return new (t || XAxisCrosshairTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nXAxisCrosshairTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisCrosshairTooltipComponent, selectors: [[\"kendo-chart-x-axis-item-crosshair-tooltip\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisCrosshairTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nXAxisCrosshairTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], XAxisCrosshairTooltipComponent);\n\n/**\n * @hidden\n */\nclass XAxisLabelsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisLabelsComponentGenerated.ɵfac = function XAxisLabelsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisLabelsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisLabelsComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisLabelsComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisLabelsComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisLabelsComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], XAxisLabelsComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisLabelsComponentGenerated.prototype, \"culture\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisLabelsComponentGenerated.prototype, \"dateFormats\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisLabelsComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisLabelsComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisLabelsComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisLabelsComponentGenerated.prototype, \"mirror\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisLabelsComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisLabelsComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisLabelsComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisLabelsComponentGenerated.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisLabelsComponentGenerated.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisLabelsComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], XAxisLabelsComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The axis labels configuration.\n */\nlet XAxisLabelsComponent = class XAxisLabelsComponent extends XAxisLabelsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nXAxisLabelsComponent.ɵfac = function XAxisLabelsComponent_Factory(t) { return new (t || XAxisLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nXAxisLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisLabelsComponent, selectors: [[\"kendo-chart-x-axis-item-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nXAxisLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], XAxisLabelsComponent);\n\n/**\n * @hidden\n */\nclass XAxisNotesComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesComponentGenerated.ɵfac = function XAxisNotesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisNotesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisNotesComponentGenerated, inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], XAxisNotesComponentGenerated.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisNotesComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisNotesComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], XAxisNotesComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisNotesComponentGenerated.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisNotesComponentGenerated.prototype, \"label\", void 0);\n\n/**\n * The configuration of the X-axis notes.\n * For an example on the basic usage of the XAxisNotesComponent,\n * refer to the [demo on the XAxisComponent]({% slug api_charts_xaxiscomponent %})\n * or to the documentation about the\n * [axis notes]({% slug notes_chart_charts %}#toc-axis-notes).\n */\nlet XAxisNotesComponent = class XAxisNotesComponent extends XAxisNotesComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nXAxisNotesComponent.ɵfac = function XAxisNotesComponent_Factory(t) { return new (t || XAxisNotesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nXAxisNotesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisNotesComponent, selectors: [[\"kendo-chart-x-axis-item-notes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisNotesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nXAxisNotesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], XAxisNotesComponent);\n\n/**\n * @hidden\n */\nclass XAxisNotesIconComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesIconComponentGenerated.ɵfac = function XAxisNotesIconComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisNotesIconComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisNotesIconComponentGenerated, inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisNotesIconComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisNotesIconComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisNotesIconComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisNotesIconComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisNotesIconComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The icon of the notes.\n */\nlet XAxisNotesIconComponent = class XAxisNotesIconComponent extends XAxisNotesIconComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nXAxisNotesIconComponent.ɵfac = function XAxisNotesIconComponent_Factory(t) { return new (t || XAxisNotesIconComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nXAxisNotesIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisNotesIconComponent, selectors: [[\"kendo-chart-x-axis-item-notes-icon\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisNotesIconComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nXAxisNotesIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], XAxisNotesIconComponent);\n\n/**\n * @hidden\n */\nclass XAxisNotesLabelComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesLabelComponentGenerated.ɵfac = function XAxisNotesLabelComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisNotesLabelComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisNotesLabelComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisNotesLabelComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisNotesLabelComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisNotesLabelComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], XAxisNotesLabelComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisNotesLabelComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisNotesLabelComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisNotesLabelComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisNotesLabelComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisNotesLabelComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The label of the notes.\n */\nlet XAxisNotesLabelComponent = class XAxisNotesLabelComponent extends XAxisNotesLabelComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nXAxisNotesLabelComponent.ɵfac = function XAxisNotesLabelComponent_Factory(t) { return new (t || XAxisNotesLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nXAxisNotesLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisNotesLabelComponent, selectors: [[\"kendo-chart-x-axis-item-notes-label\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisNotesLabelComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nXAxisNotesLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], XAxisNotesLabelComponent);\n\n/**\n * @hidden\n */\nclass XAxisTitleComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisTitleComponentGenerated.ɵfac = function XAxisTitleComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nXAxisTitleComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: XAxisTitleComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisTitleComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisTitleComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisTitleComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisTitleComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisTitleComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], XAxisTitleComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisTitleComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], XAxisTitleComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], XAxisTitleComponentGenerated.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], XAxisTitleComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], XAxisTitleComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The title configuration of the Scatter Chart X axis.\n */\nlet XAxisTitleComponent = class XAxisTitleComponent extends XAxisTitleComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nXAxisTitleComponent.ɵfac = function XAxisTitleComponent_Factory(t) { return new (t || XAxisTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nXAxisTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisTitleComponent, selectors: [[\"kendo-chart-x-axis-item-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function XAxisTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nXAxisTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], XAxisTitleComponent);\n\n/**\n * @hidden\n */\nclass YAxisItemComponentGenerated extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nYAxisItemComponentGenerated.ɵfac = function YAxisItemComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisItemComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisItemComponentGenerated, inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", type: \"type\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"axisCrossingValue\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisItemComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisItemComponentGenerated.prototype, \"baseUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisItemComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"majorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"majorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisItemComponentGenerated.prototype, \"majorUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"minorGridLines\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"minorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisItemComponentGenerated.prototype, \"minorUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisItemComponentGenerated.prototype, \"name\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisItemComponentGenerated.prototype, \"narrowRange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisItemComponentGenerated.prototype, \"pane\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], YAxisItemComponentGenerated.prototype, \"plotBands\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisItemComponentGenerated.prototype, \"reverse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisItemComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisItemComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"crosshair\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"notes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisItemComponentGenerated.prototype, \"title\", void 0);\n\n/**\n * The configuration component for the Y axis\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nlet YAxisItemComponent = class YAxisItemComponent extends YAxisItemComponentGenerated {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nYAxisItemComponent.ɵfac = function YAxisItemComponent_Factory(t) { return new (t || YAxisItemComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nYAxisItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisItemComponent, selectors: [[\"kendo-chart-y-axis-item\"]], inputs: { categories: \"categories\" }, features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisItemComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], YAxisItemComponent.prototype, \"categories\", void 0);\nYAxisItemComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], YAxisItemComponent);\n\n/**\n * @hidden\n */\nclass YAxisComponentGenerated extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('yAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nYAxisComponentGenerated.ɵfac = function YAxisComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisComponentGenerated, contentQueries: function YAxisComponentGenerated_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, YAxisItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n ContentChildren(YAxisItemComponent),\n __metadata(\"design:type\", QueryList)\n], YAxisComponentGenerated.prototype, \"children\", void 0);\n\n/**\n * A collection of one or more Y-axis configuration components.\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 * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public notesConfig = {\n * data: [{\n * value: 0.2,\n * text: \"foo\"\n * }, {\n * value: 0.8,\n * text: \"bar\"\n * }],\n * label: {\n * content: (args: any) => args.dataItem.text,\n * background: 'red',\n * color: 'white'\n * },\n * line: {\n * color: 'blue',\n * dashType: 'dash',\n * length: 150,\n * width: 2\n * },\n * position: 'top'\n * };\n *\n * public crosshairConfig = {\n * color: 'green',\n * opacity: 0.8,\n * visible: true,\n * width: 3\n * };\n * }\n *\n * ```\n */\nlet YAxisComponent = class YAxisComponent extends YAxisComponentGenerated {\n // Place custom properties here\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nYAxisComponent.ɵfac = function YAxisComponent_Factory(t) { return new (t || YAxisComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nYAxisComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisComponent, selectors: [[\"kendo-chart-y-axis\"]], features: [ɵngcc0.ɵɵProvidersFeature([CollectionService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nYAxisComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], YAxisComponent);\n\n/**\n * @hidden\n */\nclass YAxisCrosshairComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisCrosshairComponentGenerated.ɵfac = function YAxisCrosshairComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisCrosshairComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisCrosshairComponentGenerated, inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisCrosshairComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisCrosshairComponentGenerated.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisCrosshairComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisCrosshairComponentGenerated.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisCrosshairComponentGenerated.prototype, \"tooltip\", void 0);\n\n/**\n * The crosshair configuration options\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nlet YAxisCrosshairComponent = class YAxisCrosshairComponent extends YAxisCrosshairComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nYAxisCrosshairComponent.ɵfac = function YAxisCrosshairComponent_Factory(t) { return new (t || YAxisCrosshairComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nYAxisCrosshairComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisCrosshairComponent, selectors: [[\"kendo-chart-y-axis-item-crosshair\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisCrosshairComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nYAxisCrosshairComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], YAxisCrosshairComponent);\n\n/**\n * @hidden\n */\nclass YAxisCrosshairTooltipComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisCrosshairTooltipComponentGenerated.ɵfac = function YAxisCrosshairTooltipComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisCrosshairTooltipComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisCrosshairTooltipComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisCrosshairTooltipComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisCrosshairTooltipComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisCrosshairTooltipComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisCrosshairTooltipComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisCrosshairTooltipComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisCrosshairTooltipComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisCrosshairTooltipComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nlet YAxisCrosshairTooltipComponent = class YAxisCrosshairTooltipComponent extends YAxisCrosshairTooltipComponentGenerated {\n // Place custom properties here.\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nYAxisCrosshairTooltipComponent.ɵfac = function YAxisCrosshairTooltipComponent_Factory(t) { return new (t || YAxisCrosshairTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nYAxisCrosshairTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisCrosshairTooltipComponent, selectors: [[\"kendo-chart-y-axis-item-crosshair-tooltip\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisCrosshairTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nYAxisCrosshairTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], YAxisCrosshairTooltipComponent);\n\n/**\n * @hidden\n */\nclass YAxisLabelsComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisLabelsComponentGenerated.ɵfac = function YAxisLabelsComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisLabelsComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisLabelsComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisLabelsComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisLabelsComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisLabelsComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], YAxisLabelsComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisLabelsComponentGenerated.prototype, \"culture\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisLabelsComponentGenerated.prototype, \"dateFormats\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisLabelsComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisLabelsComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisLabelsComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisLabelsComponentGenerated.prototype, \"mirror\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisLabelsComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisLabelsComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisLabelsComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisLabelsComponentGenerated.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisLabelsComponentGenerated.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisLabelsComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], YAxisLabelsComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The axis labels configuration.\n */\nlet YAxisLabelsComponent = class YAxisLabelsComponent extends YAxisLabelsComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nYAxisLabelsComponent.ɵfac = function YAxisLabelsComponent_Factory(t) { return new (t || YAxisLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nYAxisLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisLabelsComponent, selectors: [[\"kendo-chart-y-axis-item-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nYAxisLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], YAxisLabelsComponent);\n\n/**\n * @hidden\n */\nclass YAxisNotesComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesComponentGenerated.ɵfac = function YAxisNotesComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisNotesComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisNotesComponentGenerated, inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], YAxisNotesComponentGenerated.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisNotesComponentGenerated.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisNotesComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], YAxisNotesComponentGenerated.prototype, \"visual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisNotesComponentGenerated.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisNotesComponentGenerated.prototype, \"label\", void 0);\n\n/**\n * The configuration of the Y axis notes\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nlet YAxisNotesComponent = class YAxisNotesComponent extends YAxisNotesComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nYAxisNotesComponent.ɵfac = function YAxisNotesComponent_Factory(t) { return new (t || YAxisNotesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nYAxisNotesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisNotesComponent, selectors: [[\"kendo-chart-y-axis-item-notes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisNotesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nYAxisNotesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], YAxisNotesComponent);\n\n/**\n * @hidden\n */\nclass YAxisNotesIconComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesIconComponentGenerated.ɵfac = function YAxisNotesIconComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisNotesIconComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisNotesIconComponentGenerated, inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisNotesIconComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisNotesIconComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisNotesIconComponentGenerated.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisNotesIconComponentGenerated.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisNotesIconComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The icon of the notes.\n */\nlet YAxisNotesIconComponent = class YAxisNotesIconComponent extends YAxisNotesIconComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nYAxisNotesIconComponent.ɵfac = function YAxisNotesIconComponent_Factory(t) { return new (t || YAxisNotesIconComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nYAxisNotesIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisNotesIconComponent, selectors: [[\"kendo-chart-y-axis-item-notes-icon\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisNotesIconComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nYAxisNotesIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], YAxisNotesIconComponent);\n\n/**\n * @hidden\n */\nclass YAxisNotesLabelComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesLabelComponentGenerated.ɵfac = function YAxisNotesLabelComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisNotesLabelComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisNotesLabelComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisNotesLabelComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisNotesLabelComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisNotesLabelComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], YAxisNotesLabelComponentGenerated.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisNotesLabelComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisNotesLabelComponentGenerated.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisNotesLabelComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisNotesLabelComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisNotesLabelComponentGenerated.prototype, \"visible\", void 0);\n\n/**\n * The label of the notes.\n */\nlet YAxisNotesLabelComponent = class YAxisNotesLabelComponent extends YAxisNotesLabelComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nYAxisNotesLabelComponent.ɵfac = function YAxisNotesLabelComponent_Factory(t) { return new (t || YAxisNotesLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nYAxisNotesLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisNotesLabelComponent, selectors: [[\"kendo-chart-y-axis-item-notes-label\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisNotesLabelComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nYAxisNotesLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], YAxisNotesLabelComponent);\n\n/**\n * @hidden\n */\nclass YAxisTitleComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisTitleComponentGenerated.ɵfac = function YAxisTitleComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nYAxisTitleComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YAxisTitleComponentGenerated, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisTitleComponentGenerated.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisTitleComponentGenerated.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisTitleComponentGenerated.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisTitleComponentGenerated.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisTitleComponentGenerated.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], YAxisTitleComponentGenerated.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisTitleComponentGenerated.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], YAxisTitleComponentGenerated.prototype, \"rotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], YAxisTitleComponentGenerated.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], YAxisTitleComponentGenerated.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], YAxisTitleComponentGenerated.prototype, \"visual\", void 0);\n\n/**\n * The title configuration of the Scatter Chart Y axis.\n */\nlet YAxisTitleComponent = class YAxisTitleComponent extends YAxisTitleComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nYAxisTitleComponent.ɵfac = function YAxisTitleComponent_Factory(t) { return new (t || YAxisTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nYAxisTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisTitleComponent, selectors: [[\"kendo-chart-y-axis-item-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function YAxisTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nYAxisTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], YAxisTitleComponent);\n\n/**\n * @hidden\n */\nclass ZoomableComponentGenerated extends SettingsComponent {\n constructor(configurationService) {\n super('zoomable', configurationService);\n this.configurationService = configurationService;\n }\n}\nZoomableComponentGenerated.ɵfac = function ZoomableComponentGenerated_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nZoomableComponentGenerated.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ZoomableComponentGenerated, inputs: { mousewheel: \"mousewheel\", selection: \"selection\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ZoomableComponentGenerated.prototype, \"mousewheel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ZoomableComponentGenerated.prototype, \"selection\", void 0);\n\n/**\n * Specifies if the Chart can be zoomed.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * ```\n */\nlet ZoomableComponent = class ZoomableComponent extends ZoomableComponentGenerated {\n // Place custom properties here\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nZoomableComponent.ɵfac = function ZoomableComponent_Factory(t) { return new (t || ZoomableComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nZoomableComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ZoomableComponent, selectors: [[\"kendo-chart-zoomable\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ZoomableComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nZoomableComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ZoomableComponent);\n\n/**\n * @hidden\n */\nconst CHART_DIRECTIVES = [\n ChartComponent,\n TooltipPopupComponent,\n SeriesTooltipTemplateDirective,\n SharedTooltipTemplateDirective,\n CrosshairTooltipsContainerComponent,\n CrosshairTooltipComponent,\n DonutCenterTemplateDirective,\n AxisDefaultsComponent,\n AxisDefaultsCrosshairComponent,\n AxisDefaultsCrosshairTooltipComponent,\n AxisDefaultsLabelsComponent,\n AxisDefaultsTitleComponent,\n CategoryAxisComponent,\n CategoryAxisCrosshairComponent,\n CategoryAxisCrosshairTooltipComponent,\n CategoryAxisItemComponent,\n CategoryAxisLabelsComponent,\n CategoryAxisRangeLabelsComponent,\n CategoryAxisNotesComponent,\n CategoryAxisNotesIconComponent,\n CategoryAxisNotesLabelComponent,\n CategoryAxisSelectComponent,\n CategoryAxisTitleComponent,\n ChartAreaComponent,\n LegendComponent,\n LegendInactiveItemsComponent,\n LegendItemComponent,\n PaneComponent,\n PaneDefaultsComponent,\n PaneDefaultsTitleComponent,\n PanesComponent,\n PanesTitleComponent,\n PlotAreaComponent,\n SeriesComponent,\n SeriesDefaultsComponent,\n SeriesDefaultsLabelsComponent,\n SeriesDefaultsLabelsFromComponent,\n SeriesDefaultsLabelsToComponent,\n SeriesDefaultsNotesComponent,\n SeriesDefaultsNotesIconComponent,\n SeriesDefaultsNotesLabelComponent,\n SeriesDefaultsTooltipComponent,\n SeriesErrorBarsComponent,\n SeriesExtremesComponent,\n SeriesHighlightComponent,\n SeriesItemComponent,\n SeriesLabelsComponent,\n SeriesLabelsFromComponent,\n SeriesLabelsToComponent,\n SeriesMarkersComponent,\n SeriesNotesComponent,\n SeriesNotesIconComponent,\n SeriesNotesLabelComponent,\n SeriesOutliersComponent,\n SeriesTooltipComponent,\n TitleComponent,\n TooltipComponent,\n ValueAxisComponent,\n ValueAxisCrosshairComponent,\n ValueAxisCrosshairTooltipComponent,\n ValueAxisItemComponent,\n ValueAxisLabelsComponent,\n ValueAxisNotesComponent,\n ValueAxisNotesIconComponent,\n ValueAxisNotesLabelComponent,\n ValueAxisTitleComponent,\n XAxisComponent,\n XAxisCrosshairComponent,\n XAxisCrosshairTooltipComponent,\n XAxisItemComponent,\n XAxisLabelsComponent,\n XAxisNotesComponent,\n XAxisNotesIconComponent,\n XAxisNotesLabelComponent,\n XAxisTitleComponent,\n YAxisComponent,\n YAxisCrosshairComponent,\n YAxisCrosshairTooltipComponent,\n YAxisItemComponent,\n YAxisLabelsComponent,\n YAxisNotesComponent,\n YAxisNotesIconComponent,\n YAxisNotesLabelComponent,\n YAxisTitleComponent,\n ZoomableComponent\n];\n\n// Re-export event types\n\n/**\n * The arguments for the `navigatorFilter` event.\n */\nclass NavigatorFilterEvent extends BaseEvent {\n /**\n * Constructs the event arguments from a raw object.\n */\n constructor(e, sender) {\n super(sender);\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n// Re-export event types\n\n/**\n * @hidden\n */\nlet RootConfigurationService = class RootConfigurationService extends ConfigurationService {\n};\nRootConfigurationService.ɵfac = /*@__PURE__*/ function () { let ɵRootConfigurationService_BaseFactory; return function RootConfigurationService_Factory(t) { return (ɵRootConfigurationService_BaseFactory || (ɵRootConfigurationService_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(RootConfigurationService)))(t || RootConfigurationService); }; }();\nRootConfigurationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: RootConfigurationService, factory: function (t) { return RootConfigurationService.ɵfac(t); } });\n\nconst EVENT_MAP$1 = {\n navigatorFilter: NavigatorFilterEvent\n};\n/**\n * @hidden\n */\nclass StockInstanceEventService extends InstanceEventService {\n create(name, args, sender) {\n if (EVENT_MAP$1[name]) {\n return new EVENT_MAP$1[name](args, sender);\n }\n return super.create(name, args, sender);\n }\n}\nStockInstanceEventService.ɵfac = /*@__PURE__*/ function () { let ɵStockInstanceEventService_BaseFactory; return function StockInstanceEventService_Factory(t) { return (ɵStockInstanceEventService_BaseFactory || (ɵStockInstanceEventService_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(StockInstanceEventService)))(t || StockInstanceEventService); }; }();\nStockInstanceEventService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: StockInstanceEventService, factory: StockInstanceEventService.ɵfac });\n\nconst NAVIGATOR_DEFAULTS = {\n autoBindElements: true,\n liveDrag: false,\n partialRedraw: true\n};\n/* tslint:disable:no-access-missing-member */\n/**\n * The root StockChart component.\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 * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = [];\n *\n * constructor() {\n * for (let idx = 0; idx < 100; idx++) {\n * this.data.push({\n * date: new Date(2017, 0, idx),\n * value: Math.random() * 100\n * });\n * }\n * }\n * }\n *\n * ```\n */\nlet StockChartComponent = class StockChartComponent extends ChartComponent {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n super(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer);\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * Fires when the navigator range is changed.\n */\n this.navigatorFilter = new EventEmitter();\n this.redrawSlaves = false;\n this.hostClasses = ['k-chart', 'k-stockchart'];\n validatePackage(packageMetadata);\n }\n /**\n * If called, the navigator pane is not redrawn the next time the StockChart options are updated.\n * The method is useful if you need to update only the main series data for the selected period.\n */\n skipNavigatorRedraw() {\n this.redrawSlaves = true;\n }\n createInstance(element, observer) {\n this.applyNavigatorDefaults();\n if (this.isDevMode() && (this.options.zoomable || this.options.pannable)) {\n throw new Error('The pannable and zoomable options are not supported by the StockChart component.');\n }\n this.instance = new StockChart(element, this.options, this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n updateOptions() {\n this.applyNavigatorDefaults();\n if (this.redrawSlaves) {\n this.instance.applyOptions(this.options);\n this.instance.bindCategories();\n this.instance.navigator.redrawSlaves();\n }\n else {\n this.instance.setOptions(this.options);\n }\n this.redrawSlaves = false;\n }\n applyNavigatorDefaults() {\n this.options.navigator = Object.assign({}, this.options.navigator, NAVIGATOR_DEFAULTS);\n }\n isDevMode() {\n return isDevMode();\n }\n};\nStockChartComponent.ɵfac = function StockChartComponent_Factory(t) { return new (t || StockChartComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(ThemeService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(StockInstanceEventService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nStockChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StockChartComponent, selectors: [[\"kendo-stockchart\"]], inputs: { navigator: \"navigator\", pannable: \"pannable\", zoomable: \"zoomable\" }, outputs: { navigatorFilter: \"navigatorFilter\" }, exportAs: [\"kendoStockChart\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ConfigurationService,\n TooltipTemplateService,\n { provide: RootConfigurationService, useExisting: ConfigurationService },\n StockInstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 2, consts: [[1, \"k-chart-surface\"], [\"surface\", \"\"], [3, \"popupSettings\"], [3, \"popupSettings\", \"leave\"], [3, \"resize\"]], template: function StockChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0, 1);\n ɵngcc0.ɵɵelement(2, \"kendo-chart-crosshair-tooltips-container\", 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-chart-tooltip-popup\", 3);\n ɵngcc0.ɵɵlistener(\"leave\", function StockChartComponent_Template_kendo_chart_tooltip_popup_leave_3_listener($event) { return ctx.tooltipMouseleave($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"kendo-resize-sensor\", 4);\n ɵngcc0.ɵɵlistener(\"resize\", function StockChartComponent_Template_kendo_resize_sensor_resize_4_listener($event) { return ctx.onResize($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"popupSettings\", ctx.popupSettings);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"popupSettings\", ctx.popupSettings);\n } }, directives: [CrosshairTooltipsContainerComponent, TooltipPopupComponent, ɵngcc5.ResizeSensorComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StockChartComponent.prototype, \"navigator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StockChartComponent.prototype, \"pannable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StockChartComponent.prototype, \"zoomable\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], StockChartComponent.prototype, \"navigatorFilter\", void 0);\nStockChartComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n ThemeService,\n ElementRef,\n IntlService,\n LocalizationService,\n NgZone,\n StockInstanceEventService,\n ChangeDetectorRef,\n Renderer2])\n], StockChartComponent);\n\n/**\n * @hidden\n */\nconst PREFIX = new InjectionToken('configuration prefix');\n/**\n * @hidden\n */\nlet PrefixConfigurationService = class PrefixConfigurationService extends ConfigurationService {\n constructor(rootService, prefix, ngZone) {\n super(ngZone);\n this.rootService = rootService;\n this.prefix = prefix;\n }\n push(store) {\n this.rootService.notify(new Change(this.prefix, store));\n }\n notify(change) {\n change.key = this.prefix + (change.key ? `.${change.key}` : '');\n this.rootService.notify(change);\n }\n};\nPrefixConfigurationService.ɵfac = function PrefixConfigurationService_Factory(t) { return new (t || PrefixConfigurationService)(ɵngcc0.ɵɵinject(RootConfigurationService), ɵngcc0.ɵɵinject(PREFIX), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nPrefixConfigurationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PrefixConfigurationService, factory: function (t) { return PrefixConfigurationService.ɵfac(t); } });\nPrefixConfigurationService = __decorate([ __param(0, Inject(RootConfigurationService)),\n __param(1, Inject(PREFIX)),\n __metadata(\"design:paramtypes\", [RootConfigurationService, String, NgZone])\n], PrefixConfigurationService);\n\n/**\n * The configuration options of the navigator\n * ([see runnable example]({% slug overview_stockchart_charts %}#toc-navigator)).\n *\n * @example\n * ```ts-no-run\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 */\nlet NavigatorComponent = class NavigatorComponent extends SettingsComponent {\n constructor(configurationService) {\n super('', configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorComponent.ɵfac = function NavigatorComponent_Factory(t) { return new (t || NavigatorComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorComponent, selectors: [[\"kendo-chart-navigator\"]], inputs: { visible: \"visible\", categoryAxis: \"categoryAxis\", hint: \"hint\", pane: \"pane\", select: \"select\", series: \"series\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: PREFIX, useValue: 'navigator' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NavigatorComponent.prototype, \"visible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NavigatorComponent.prototype, \"categoryAxis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NavigatorComponent.prototype, \"hint\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NavigatorComponent.prototype, \"pane\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NavigatorComponent.prototype, \"select\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NavigatorComponent.prototype, \"series\", void 0);\nNavigatorComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorComponent);\n\n/**\n * The configuration component of the navigator category axis.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet NavigatorCategoryAxisComponent = class NavigatorCategoryAxisComponent extends CategoryAxisItemComponent {\n constructor(configurationService, intl, localeId) {\n super(configurationService, null, intl, localeId);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisComponent.ɵfac = function NavigatorCategoryAxisComponent_Factory(t) { return new (t || NavigatorCategoryAxisComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.IntlService), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID)); };\nNavigatorCategoryAxisComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisComponent, selectors: [[\"kendo-chart-navigator-category-axis\"]], features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: PREFIX,\n useValue: 'navigator.categoryAxis'\n }, {\n provide: ConfigurationService,\n useClass: PrefixConfigurationService\n }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisComponent = __decorate([ __param(2, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [ConfigurationService,\n IntlService, String])\n], NavigatorCategoryAxisComponent);\n\n/**\n * The configuration options of the crosshair.\n */\nlet NavigatorCategoryAxisCrosshairComponent = class NavigatorCategoryAxisCrosshairComponent extends CategoryAxisCrosshairComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisCrosshairComponent.ɵfac = function NavigatorCategoryAxisCrosshairComponent_Factory(t) { return new (t || NavigatorCategoryAxisCrosshairComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorCategoryAxisCrosshairComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisCrosshairComponent, selectors: [[\"kendo-chart-navigator-category-axis-crosshair\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisCrosshairComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisCrosshairComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorCategoryAxisCrosshairComponent);\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nlet NavigatorCategoryAxisCrosshairTooltipComponent = class NavigatorCategoryAxisCrosshairTooltipComponent extends CategoryAxisCrosshairTooltipComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisCrosshairTooltipComponent.ɵfac = function NavigatorCategoryAxisCrosshairTooltipComponent_Factory(t) { return new (t || NavigatorCategoryAxisCrosshairTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorCategoryAxisCrosshairTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisCrosshairTooltipComponent, selectors: [[\"kendo-chart-navigator-category-axis-crosshair-tooltip\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisCrosshairTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisCrosshairTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorCategoryAxisCrosshairTooltipComponent);\n\n/**\n * The configuration of the axis labels.\n */\nlet NavigatorCategoryAxisLabelsComponent = class NavigatorCategoryAxisLabelsComponent extends CategoryAxisLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisLabelsComponent.ɵfac = function NavigatorCategoryAxisLabelsComponent_Factory(t) { return new (t || NavigatorCategoryAxisLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorCategoryAxisLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisLabelsComponent, selectors: [[\"kendo-chart-navigator-category-axis-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorCategoryAxisLabelsComponent);\n\n/**\n * The configuration of the category axis notes.\n */\nlet NavigatorCategoryAxisNotesComponent = class NavigatorCategoryAxisNotesComponent extends CategoryAxisNotesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisNotesComponent.ɵfac = function NavigatorCategoryAxisNotesComponent_Factory(t) { return new (t || NavigatorCategoryAxisNotesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorCategoryAxisNotesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisNotesComponent, selectors: [[\"kendo-chart-navigator-category-axis-notes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisNotesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisNotesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorCategoryAxisNotesComponent);\n\n/**\n * The icon of the notes.\n */\nlet NavigatorCategoryAxisNotesIconComponent = class NavigatorCategoryAxisNotesIconComponent extends CategoryAxisNotesIconComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisNotesIconComponent.ɵfac = function NavigatorCategoryAxisNotesIconComponent_Factory(t) { return new (t || NavigatorCategoryAxisNotesIconComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorCategoryAxisNotesIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisNotesIconComponent, selectors: [[\"kendo-chart-navigator-category-axis-notes-icon\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisNotesIconComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisNotesIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorCategoryAxisNotesIconComponent);\n\n/**\n * The label of the notes.\n */\nlet NavigatorCategoryAxisNotesLabelComponent = class NavigatorCategoryAxisNotesLabelComponent extends CategoryAxisNotesLabelComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisNotesLabelComponent.ɵfac = function NavigatorCategoryAxisNotesLabelComponent_Factory(t) { return new (t || NavigatorCategoryAxisNotesLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorCategoryAxisNotesLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisNotesLabelComponent, selectors: [[\"kendo-chart-navigator-category-axis-notes-label\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisNotesLabelComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisNotesLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorCategoryAxisNotesLabelComponent);\n\n/**\n * The selected axis range. If set, the axis selection is enabled. The range is index-based and starts from zero.\n * Categories with indexes in the range (`select.from`, `select.to`) will be selected.\n * This means that the last category in the range will not be included in the selection.\n * If the categories are dates, the range has also to be specified with date values.\n */\nlet NavigatorCategoryAxisSelectComponent = class NavigatorCategoryAxisSelectComponent extends CategoryAxisSelectComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisSelectComponent.ɵfac = function NavigatorCategoryAxisSelectComponent_Factory(t) { return new (t || NavigatorCategoryAxisSelectComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorCategoryAxisSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisSelectComponent, selectors: [[\"kendo-chart-navigator-category-axis-select\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisSelectComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisSelectComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorCategoryAxisSelectComponent);\n\n/**\n * The title configuration of the navigator category axis.\n */\nlet NavigatorCategoryAxisTitleComponent = class NavigatorCategoryAxisTitleComponent extends CategoryAxisTitleComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorCategoryAxisTitleComponent.ɵfac = function NavigatorCategoryAxisTitleComponent_Factory(t) { return new (t || NavigatorCategoryAxisTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorCategoryAxisTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorCategoryAxisTitleComponent, selectors: [[\"kendo-chart-navigator-category-axis-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorCategoryAxisTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorCategoryAxisTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorCategoryAxisTitleComponent);\n\n/**\n * The default options of the navigator hint\n * ([see example]({% slug overview_stockchart_charts %}#toc-navigator)).\n */\nlet NavigatorHintComponent = class NavigatorHintComponent extends SettingsComponent {\n constructor(configurationService) {\n super('hint', configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorHintComponent.ɵfac = function NavigatorHintComponent_Factory(t) { return new (t || NavigatorHintComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorHintComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorHintComponent, selectors: [[\"kendo-chart-navigator-hint\"]], inputs: { content: \"content\", format: \"format\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorHintComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], NavigatorHintComponent.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NavigatorHintComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NavigatorHintComponent.prototype, \"visible\", void 0);\nNavigatorHintComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorHintComponent);\n\n/**\n * The configuration component of the navigator pane\n * ([see example]({% slug overview_stockchart_charts %}#toc-navigator)).\n */\nlet NavigatorPaneComponent = class NavigatorPaneComponent extends PaneComponentGenerated {\n constructor(configurationService) {\n super(configurationService, null);\n this.configurationService = configurationService;\n }\n};\nNavigatorPaneComponent.ɵfac = function NavigatorPaneComponent_Factory(t) { return new (t || NavigatorPaneComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorPaneComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorPaneComponent, selectors: [[\"kendo-chart-navigator-pane\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: PREFIX, useValue: 'navigator.pane' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorPaneComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorPaneComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorPaneComponent);\n\n/**\n * The title configuration of the StockChart navigator pane.\n */\nlet NavigatorPaneTitleComponent = class NavigatorPaneTitleComponent extends PanesTitleComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorPaneTitleComponent.ɵfac = function NavigatorPaneTitleComponent_Factory(t) { return new (t || NavigatorPaneTitleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorPaneTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorPaneTitleComponent, selectors: [[\"kendo-chart-navigator-pane-title\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorPaneTitleComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorPaneTitleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorPaneTitleComponent);\n\n/**\n * Specifies the initially selected range.\n * If no range is specified, the full range of values is rendered.\n */\nlet NavigatorSelectComponent = class NavigatorSelectComponent extends SettingsComponent {\n constructor(configurationService) {\n super('select', configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSelectComponent.ɵfac = function NavigatorSelectComponent_Factory(t) { return new (t || NavigatorSelectComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSelectComponent, selectors: [[\"kendo-chart-navigator-select\"]], inputs: { from: \"from\", to: \"to\", mousewheel: \"mousewheel\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSelectComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], NavigatorSelectComponent.prototype, \"from\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], NavigatorSelectComponent.prototype, \"to\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NavigatorSelectComponent.prototype, \"mousewheel\", void 0);\nNavigatorSelectComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSelectComponent);\n\n/**\n * The configuration component of a navigator series item\n * ([see example]({% slug navigator_stockchart_charts %})).\n */\nlet NavigatorSeriesItemComponent = class NavigatorSeriesItemComponent extends SeriesItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n};\nNavigatorSeriesItemComponent.ɵfac = function NavigatorSeriesItemComponent_Factory(t) { return new (t || NavigatorSeriesItemComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService)); };\nNavigatorSeriesItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesItemComponent, selectors: [[\"kendo-chart-navigator-series-item\"]], features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesItemComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesItemComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService])\n], NavigatorSeriesItemComponent);\n\n/**\n * A collection of one or more navigator series items.\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 * \n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = [];\n *\n * constructor() {\n * for (let idx = 0; idx < 100; idx++) {\n * this.data.push({\n * date: new Date(2017, 0, idx),\n * value: Math.random() * 100\n * });\n * }\n * }\n * }\n *\n * ```\n */\nlet NavigatorSeriesComponent = class NavigatorSeriesComponent extends SeriesComponent {\n constructor(configurationService, collectionService, tooltipTemplateService) {\n super(configurationService, collectionService, tooltipTemplateService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.tooltipTemplateService = tooltipTemplateService;\n }\n readTooltipTemplates() {\n }\n};\nNavigatorSeriesComponent.ɵfac = function NavigatorSeriesComponent_Factory(t) { return new (t || NavigatorSeriesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionService), ɵngcc0.ɵɵdirectiveInject(TooltipTemplateService)); };\nNavigatorSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesComponent, selectors: [[\"kendo-chart-navigator-series\"]], contentQueries: function NavigatorSeriesComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NavigatorSeriesItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([CollectionService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n ContentChildren(NavigatorSeriesItemComponent),\n __metadata(\"design:type\", QueryList)\n], NavigatorSeriesComponent.prototype, \"children\", void 0);\nNavigatorSeriesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionService,\n TooltipTemplateService])\n], NavigatorSeriesComponent);\n\n/**\n * The error bars of the StockChart navigator series.\n */\nlet NavigatorSeriesErrorBarsComponent = class NavigatorSeriesErrorBarsComponent extends SeriesErrorBarsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesErrorBarsComponent.ɵfac = function NavigatorSeriesErrorBarsComponent_Factory(t) { return new (t || NavigatorSeriesErrorBarsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesErrorBarsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesErrorBarsComponent, selectors: [[\"kendo-chart-navigator-series-item-error-bars\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesErrorBarsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesErrorBarsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesErrorBarsComponent);\n\n/**\n * The extremes configuration of the StockChart navigator series. Applies to extreme outliers.\n */\nlet NavigatorSeriesExtremesComponent = class NavigatorSeriesExtremesComponent extends SeriesExtremesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesExtremesComponent.ɵfac = function NavigatorSeriesExtremesComponent_Factory(t) { return new (t || NavigatorSeriesExtremesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesExtremesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesExtremesComponent, selectors: [[\"kendo-chart-navigator-series-item-extremes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesExtremesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesExtremesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesExtremesComponent);\n\n/**\n * The configuration options of the StockChart series highlight.\n */\nlet NavigatorSeriesHighlightComponent = class NavigatorSeriesHighlightComponent extends SeriesHighlightComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesHighlightComponent.ɵfac = function NavigatorSeriesHighlightComponent_Factory(t) { return new (t || NavigatorSeriesHighlightComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesHighlightComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesHighlightComponent, selectors: [[\"kendo-chart-navigator-series-item-highlight\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesHighlightComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesHighlightComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesHighlightComponent);\n\n/**\n * The label configuration of the StockChart navigator series.\n */\nlet NavigatorSeriesLabelsComponent = class NavigatorSeriesLabelsComponent extends SeriesLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nNavigatorSeriesLabelsComponent.ɵfac = function NavigatorSeriesLabelsComponent_Factory(t) { return new (t || NavigatorSeriesLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesLabelsComponent, selectors: [[\"kendo-chart-navigator-series-item-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesLabelsComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesLabelsComponent);\n\n/**\n * The `from` label configuration of the StockChart navigator series.\n */\nlet NavigatorSeriesLabelsFromComponent = class NavigatorSeriesLabelsFromComponent extends SeriesLabelsFromComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nNavigatorSeriesLabelsFromComponent.ɵfac = function NavigatorSeriesLabelsFromComponent_Factory(t) { return new (t || NavigatorSeriesLabelsFromComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesLabelsFromComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesLabelsFromComponent, selectors: [[\"kendo-chart-navigator-series-item-labels-from\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesLabelsFromComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesLabelsFromComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesLabelsFromComponent);\n\n/**\n * The `to` label configuration of the StockChart navigator series.\n */\nlet NavigatorSeriesLabelsToComponent = class NavigatorSeriesLabelsToComponent extends SeriesLabelsToComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n};\nNavigatorSeriesLabelsToComponent.ɵfac = function NavigatorSeriesLabelsToComponent_Factory(t) { return new (t || NavigatorSeriesLabelsToComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesLabelsToComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesLabelsToComponent, selectors: [[\"kendo-chart-navigator-series-item-labels-to\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesLabelsToComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesLabelsToComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesLabelsToComponent);\n\n/**\n * The marker configuration of the StockChart navigator series.\n */\nlet NavigatorSeriesMarkersComponent = class NavigatorSeriesMarkersComponent extends SeriesMarkersComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesMarkersComponent.ɵfac = function NavigatorSeriesMarkersComponent_Factory(t) { return new (t || NavigatorSeriesMarkersComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesMarkersComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesMarkersComponent, selectors: [[\"kendo-chart-navigator-series-item-markers\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesMarkersComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesMarkersComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesMarkersComponent);\n\n/**\n * The notes configuration of the StockChart navigator series.\n */\nlet NavigatorSeriesNotesComponent = class NavigatorSeriesNotesComponent extends SeriesNotesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesNotesComponent.ɵfac = function NavigatorSeriesNotesComponent_Factory(t) { return new (t || NavigatorSeriesNotesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesNotesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesNotesComponent, selectors: [[\"kendo-chart-navigator-series-item-notes\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesNotesComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesNotesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesNotesComponent);\n\n/**\n * The icon of the notes.\n */\nlet NavigatorSeriesNotesIconComponent = class NavigatorSeriesNotesIconComponent extends SeriesNotesIconComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesNotesIconComponent.ɵfac = function NavigatorSeriesNotesIconComponent_Factory(t) { return new (t || NavigatorSeriesNotesIconComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesNotesIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesNotesIconComponent, selectors: [[\"kendo-chart-navigator-series-item-notes-icon\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesNotesIconComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesNotesIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesNotesIconComponent);\n\n/**\n * The label of the notes.\n */\nlet NavigatorSeriesNotesLabelComponent = class NavigatorSeriesNotesLabelComponent extends SeriesNotesLabelComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesNotesLabelComponent.ɵfac = function NavigatorSeriesNotesLabelComponent_Factory(t) { return new (t || NavigatorSeriesNotesLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesNotesLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesNotesLabelComponent, selectors: [[\"kendo-chart-navigator-series-item-notes-label\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesNotesLabelComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesNotesLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesNotesLabelComponent);\n\n/**\n * The outliers configuration of the StockChart navigator series. Applies to mild outliers.\n */\nlet NavigatorSeriesOutliersComponent = class NavigatorSeriesOutliersComponent extends SeriesOutliersComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesOutliersComponent.ɵfac = function NavigatorSeriesOutliersComponent_Factory(t) { return new (t || NavigatorSeriesOutliersComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesOutliersComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesOutliersComponent, selectors: [[\"kendo-chart-navigator-series-item-outliers\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesOutliersComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesOutliersComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesOutliersComponent);\n\n/**\n * The tooltip configuration of the StockChart navigator series.\n * The StockChart navigator series tooltip is displayed when the `navigator.series.tooltip.visible` option is set to `true`.\n */\nlet NavigatorSeriesTooltipComponent = class NavigatorSeriesTooltipComponent extends SeriesTooltipComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n};\nNavigatorSeriesTooltipComponent.ɵfac = function NavigatorSeriesTooltipComponent_Factory(t) { return new (t || NavigatorSeriesTooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nNavigatorSeriesTooltipComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigatorSeriesTooltipComponent, selectors: [[\"kendo-chart-navigator-series-item-tooltip\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NavigatorSeriesTooltipComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\nNavigatorSeriesTooltipComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], NavigatorSeriesTooltipComponent);\n\n/**\n * @hidden\n */\nconst STOCK_CHART_DIRECTIVES = [\n StockChartComponent,\n NavigatorComponent,\n NavigatorCategoryAxisComponent,\n NavigatorCategoryAxisCrosshairComponent,\n NavigatorCategoryAxisCrosshairTooltipComponent,\n NavigatorCategoryAxisLabelsComponent,\n NavigatorCategoryAxisNotesComponent,\n NavigatorCategoryAxisNotesIconComponent,\n NavigatorCategoryAxisNotesLabelComponent,\n NavigatorCategoryAxisSelectComponent,\n NavigatorCategoryAxisTitleComponent,\n NavigatorHintComponent,\n NavigatorPaneComponent,\n NavigatorPaneTitleComponent,\n NavigatorSelectComponent,\n NavigatorSeriesComponent,\n NavigatorSeriesItemComponent,\n NavigatorSeriesErrorBarsComponent,\n NavigatorSeriesExtremesComponent,\n NavigatorSeriesHighlightComponent,\n NavigatorSeriesLabelsComponent,\n NavigatorSeriesLabelsFromComponent,\n NavigatorSeriesLabelsToComponent,\n NavigatorSeriesMarkersComponent,\n NavigatorSeriesNotesComponent,\n NavigatorSeriesNotesIconComponent,\n NavigatorSeriesNotesLabelComponent,\n NavigatorSeriesOutliersComponent,\n NavigatorSeriesTooltipComponent\n];\n\n/* tslint:disable:no-access-missing-member */\n/**\n * The root Chart component.\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 * class AppComponent {\n * public data: any[] = [\n * 936, 968, 1025, 999, 998, 1014, 1017, 1010, 1010, 1007,\n * 1004, 988, 990, 988, 987, 995, 946, 954, 991, 984,\n * 974, 956, 986, 936, 955, 1021, 1013, 1005, 958, 953,\n * 952, 940, 937, 980, 966, 965, 928, 916, 910, 980\n * ];\n * }\n *\n * ```\n */\nlet SparklineComponent = class SparklineComponent extends ChartComponent {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n super(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer);\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.tooltipWrapperClass = 'k-sparkline-tooltip-wrapper';\n /**\n * @hidden\n */\n this.tooltipContentClasses = {\n 'k-sparkline-tooltip': true\n };\n this.hostClasses = ['k-sparkline', 'k-widget'];\n validatePackage(packageMetadata);\n }\n createInstance(element, observer) {\n this.instance = new Sparkline(element, Sparkline.normalizeOptions(this.options), this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n updateOptions() {\n this.instance.setOptions(Sparkline.normalizeOptions(this.options));\n }\n};\nSparklineComponent.ɵfac = function SparklineComponent_Factory(t) { return new (t || SparklineComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(ThemeService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(InstanceEventService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nSparklineComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SparklineComponent, selectors: [[\"kendo-sparkline\"]], inputs: { type: \"type\", data: \"data\" }, exportAs: [\"kendoSparkline\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 5, consts: [[1, \"k-chart-surface\"], [\"surface\", \"\"], [3, \"popupSettings\"], [3, \"animate\", \"wrapperClass\", \"classNames\", \"popupSettings\", \"leave\"], [3, \"resize\"]], template: function SparklineComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 0, 1);\n ɵngcc0.ɵɵelement(2, \"kendo-chart-crosshair-tooltips-container\", 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-chart-tooltip-popup\", 3);\n ɵngcc0.ɵɵlistener(\"leave\", function SparklineComponent_Template_kendo_chart_tooltip_popup_leave_3_listener($event) { return ctx.tooltipMouseleave($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"kendo-resize-sensor\", 4);\n ɵngcc0.ɵɵlistener(\"resize\", function SparklineComponent_Template_kendo_resize_sensor_resize_4_listener($event) { return ctx.onResize($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"popupSettings\", ctx.popupSettings);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"animate\", false)(\"wrapperClass\", ctx.tooltipWrapperClass)(\"classNames\", ctx.tooltipContentClasses)(\"popupSettings\", ctx.popupSettings);\n } }, directives: [CrosshairTooltipsContainerComponent, TooltipPopupComponent, ɵngcc5.ResizeSensorComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SparklineComponent.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], SparklineComponent.prototype, \"data\", void 0);\nSparklineComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n ThemeService,\n ElementRef,\n IntlService,\n LocalizationService,\n NgZone,\n InstanceEventService,\n ChangeDetectorRef,\n Renderer2])\n], SparklineComponent);\n\n/**\n * @hidden\n */\nconst SPARKLINE_DIRECTIVES = [\n SparklineComponent\n];\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the Chart component and directives.\n *\n * Imports the ChartModule into your application\n * [root module]({{ site.data.url.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Chart component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { ChartModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, ChartModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet ChartModule = class ChartModule {\n};\nChartModule.ɵfac = function ChartModule_Factory(t) { return new (t || ChartModule)(); };\nChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ChartModule });\nChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n ThemeService\n ], imports: [[CommonModule, PopupModule, ResizeSensorModule]] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the StockChart component and directives.\n *\n * Imports the StockChartModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the StockChart component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { StockChartModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, StockChartModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet StockChartModule = class StockChartModule {\n};\nStockChartModule.ɵfac = function StockChartModule_Factory(t) { return new (t || StockChartModule)(); };\nStockChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: StockChartModule });\nStockChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartModule, CommonModule, PopupModule, ResizeSensorModule], ChartModule] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the Sparkline component and directives.\n *\n * Imports the SparklineModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Sparkline component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { SparklineModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, SparklineModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet SparklineModule = class SparklineModule {\n};\nSparklineModule.ɵfac = function SparklineModule_Factory(t) { return new (t || SparklineModule)(); };\nSparklineModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SparklineModule });\nSparklineModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartModule, CommonModule, PopupModule, ResizeSensorModule], ChartModule] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes all Chart components and directives.\n *\n * Imports the ChartsModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Charts components.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { ChartsModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, ChartsModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet ChartsModule = class ChartsModule {\n};\nChartsModule.ɵfac = function ChartsModule_Factory(t) { return new (t || ChartsModule)(); };\nChartsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ChartsModule });\nChartsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [ChartModule, SparklineModule, StockChartModule] });\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ConfigurationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DonutCenterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoChartDonutCenterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CollectionService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\n\n\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { seriesTooltipTemplate: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesItemComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-series-item',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, { seriesTooltip: [{\n type: ContentChild,\n args: [SeriesTooltipComponent, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ThemeService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipTemplateService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesTooltipTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoChartSeriesTooltipTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedTooltipTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoChartSharedTooltipTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipPopupComponent, [{\n type: Component,\n args: [{\n providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: ɵ0$2\n }],\n selector: 'kendo-chart-tooltip-popup',\n template: `\n \n
\n \n \n \n \n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n
{{ categoryText }}
\n {{ point.series.name }}\n  \n \n \n \n
\n
\n `\n }]\n }], function () { return [{ type: ɵngcc1.PopupService }, { type: TooltipTemplateService }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { animate: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], leave: [{\n type: Output\n }], defaultSeriesTooltipTemplate: [{\n type: ViewChild,\n args: [SeriesTooltipTemplateDirective, { static: false }]\n }], defaultSharedTooltipTemplate: [{\n type: ViewChild,\n args: [SharedTooltipTemplateDirective, { static: false }]\n }], templateRef: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], classNames: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CrosshairTooltipComponent, [{\n type: Component,\n args: [{\n providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: ɵ0$3\n }],\n selector: 'kendo-chart-crosshair-tooltip',\n template: `\n \n
\n {{ value }}\n
\n
\n `\n }]\n }], function () { return [{ type: ɵngcc1.PopupService }, { type: ɵngcc2.LocalizationService }]; }, { templateRef: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], key: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CrosshairTooltipsContainerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-chart-crosshair-tooltips-container',\n template: `\n \n \n `\n }]\n }], function () { return []; }, { popupSettings: [{\n type: Input\n }], crossahirTooltipComponents: [{\n type: ViewChildren,\n args: [CrosshairTooltipComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChartComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoChart',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-chart',\n template: `\n
\n \n \n \n \n \n
\n \n
\n `\n }]\n }], function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc4.IntlService }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }, { type: InstanceEventService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }]; }, { legendItemClick: [{\n type: Output\n }], resizeRateLimit: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], seriesComponents: [{\n type: ContentChildren,\n args: [SeriesItemComponent, { descendants: true }]\n }], donutCenterTemplate: [{\n type: ContentChild,\n args: [DonutCenterTemplateDirective, { static: false }]\n }], tooltipInstance: [{\n type: ViewChild,\n args: [TooltipPopupComponent, { static: true }]\n }], crossahirTooltips: [{\n type: ViewChild,\n args: [CrosshairTooltipsContainerComponent, { static: true }]\n }], surfaceElement: [{\n type: ViewChild,\n args: ['surface', { static: true }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AxisDefaultsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AxisDefaultsCrosshairComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-crosshair',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AxisDefaultsCrosshairTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-crosshair-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AxisDefaultsLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AxisDefaultsTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisItemComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-category-axis-item',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: ɵngcc4.IntlService }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, { rangeLabels: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-category-axis',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisCrosshairComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-crosshair',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisCrosshairTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], culture: [{\n type: Input\n }], dateFormats: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisRangeLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-range-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisNotesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisNotesIconComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes-icon',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisNotesLabelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes-label',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisSelectComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-select',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CategoryAxisTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChartAreaComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-area',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LegendComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LegendInactiveItemsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend-inactive-items',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LegendItemComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend-item',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PaneComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-pane, kendo-chart-panes-item',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PaneDefaultsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-defaults',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { background: [{\n type: Input\n }], border: [{\n type: Input\n }], clip: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], title: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PaneDefaultsTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-defaults-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], position: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-panes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanesTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PlotAreaComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-plot-area',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-series',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: TooltipTemplateService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesDefaultsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesDefaultsLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesDefaultsLabelsFromComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels-from',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesDefaultsLabelsToComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels-to',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesDefaultsNotesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesDefaultsNotesIconComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes-icon',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesDefaultsNotesLabelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes-label',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesDefaultsTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesErrorBarsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-error-bars',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesExtremesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-extremes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesHighlightComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-highlight',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesLabelsFromComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels-from',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesLabelsToComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels-to',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesMarkersComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-markers',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesNotesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesNotesIconComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes-icon',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesNotesLabelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes-label',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesOutliersComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-outliers',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-chart-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: TooltipTemplateService }]; }, { seriesTooltipTemplate: [{\n type: ContentChild,\n args: [SeriesTooltipTemplateDirective, { static: false }]\n }], sharedTooltipTemplate: [{\n type: ContentChild,\n args: [SharedTooltipTemplateDirective, { static: false }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisItemComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-value-axis-item',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-value-axis',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisCrosshairComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-crosshair',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisCrosshairTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisNotesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisNotesIconComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes-icon',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisNotesLabelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes-label',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueAxisTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisItemComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-x-axis-item',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: ɵngcc4.IntlService }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, { categories: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-x-axis',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisCrosshairComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-crosshair',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisCrosshairTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisNotesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisNotesIconComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes-icon',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisNotesLabelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes-label',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisItemComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-y-axis-item',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, { categories: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-y-axis',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisCrosshairComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-crosshair',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisCrosshairTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisNotesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisNotesIconComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes-icon',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisNotesLabelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes-label',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ZoomableComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-zoomable',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RootConfigurationService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StockChartComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoStockChart',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n { provide: RootConfigurationService, useExisting: ConfigurationService },\n StockInstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-stockchart',\n template: `\n
\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc4.IntlService }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }, { type: StockInstanceEventService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }]; }, { navigatorFilter: [{\n type: Output\n }], navigator: [{\n type: Input\n }], pannable: [{\n type: Input\n }], zoomable: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PrefixConfigurationService, [{\n type: Injectable\n }], function () { return [{ type: RootConfigurationService, decorators: [{\n type: Inject,\n args: [RootConfigurationService]\n }] }, { type: String, decorators: [{\n type: Inject,\n args: [PREFIX]\n }] }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: PREFIX, useValue: 'navigator' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }],\n selector: 'kendo-chart-navigator',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { visible: [{\n type: Input\n }], categoryAxis: [{\n type: Input\n }], hint: [{\n type: Input\n }], pane: [{\n type: Input\n }], select: [{\n type: Input\n }], series: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: PREFIX,\n useValue: 'navigator.categoryAxis'\n }, {\n provide: ConfigurationService,\n useClass: PrefixConfigurationService\n }],\n selector: 'kendo-chart-navigator-category-axis',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: ɵngcc4.IntlService }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisCrosshairComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-crosshair',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisCrosshairTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-crosshair-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisNotesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisNotesIconComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes-icon',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisNotesLabelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes-label',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisSelectComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-select',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorCategoryAxisTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorHintComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-hint',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { content: [{\n type: Input\n }], format: [{\n type: Input\n }], visible: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorPaneComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: PREFIX, useValue: 'navigator.pane' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }],\n selector: 'kendo-chart-navigator-pane',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorPaneTitleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-pane-title',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSelectComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-select',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { from: [{\n type: Input\n }], to: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesItemComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-navigator-series-item',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-navigator-series',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: TooltipTemplateService }]; }, { children: [{\n type: ContentChildren,\n args: [NavigatorSeriesItemComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesErrorBarsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-error-bars',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesExtremesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-extremes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesHighlightComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-highlight',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesLabelsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesLabelsFromComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels-from',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesLabelsToComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels-to',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesMarkersComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-markers',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesNotesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesNotesIconComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes-icon',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesNotesLabelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes-label',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesOutliersComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-outliers',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigatorSeriesTooltipComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-tooltip',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SparklineComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoSparkline',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-sparkline',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc4.IntlService }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }, { type: InstanceEventService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }]; }, { type: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChartModule, [{\n type: NgModule,\n args: [{\n declarations: [CHART_DIRECTIVES],\n exports: [CHART_DIRECTIVES],\n imports: [CommonModule, PopupModule, ResizeSensorModule],\n providers: [\n ThemeService\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ChartModule, { declarations: function () { return [ChartComponent, TooltipPopupComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, CrosshairTooltipsContainerComponent, CrosshairTooltipComponent, DonutCenterTemplateDirective, AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisRangeLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, LegendComponent, LegendInactiveItemsComponent, LegendItemComponent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PanesComponent, PanesTitleComponent, PlotAreaComponent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, TitleComponent, TooltipComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomableComponent]; }, imports: function () { return [CommonModule, PopupModule, ResizeSensorModule]; }, exports: function () { return [ChartComponent, TooltipPopupComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, CrosshairTooltipsContainerComponent, CrosshairTooltipComponent, DonutCenterTemplateDirective, AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisRangeLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, LegendComponent, LegendInactiveItemsComponent, LegendItemComponent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PanesComponent, PanesTitleComponent, PlotAreaComponent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, TitleComponent, TooltipComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomableComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StockChartModule, [{\n type: NgModule,\n args: [{\n declarations: [STOCK_CHART_DIRECTIVES],\n exports: [STOCK_CHART_DIRECTIVES, ChartModule],\n imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(StockChartModule, { declarations: function () { return [StockChartComponent, NavigatorComponent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesComponent, NavigatorSeriesItemComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent]; }, imports: function () { return [ChartModule, CommonModule, PopupModule, ResizeSensorModule]; }, exports: function () { return [StockChartComponent, NavigatorComponent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesComponent, NavigatorSeriesItemComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent, ChartModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SparklineModule, [{\n type: NgModule,\n args: [{\n declarations: [SPARKLINE_DIRECTIVES],\n exports: [SPARKLINE_DIRECTIVES, ChartModule],\n imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SparklineModule, { declarations: function () { return [SparklineComponent]; }, imports: function () { return [ChartModule, CommonModule, PopupModule, ResizeSensorModule]; }, exports: function () { return [SparklineComponent, ChartModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChartsModule, [{\n type: NgModule,\n args: [{\n exports: [ChartModule, SparklineModule, StockChartModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ChartsModule, { exports: [ChartModule, SparklineModule, StockChartModule] }); })();\n\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ChartComponentGenerated, AxisDefaultsComponentGenerated, AxisDefaultsCrosshairComponentGenerated, AxisDefaultsCrosshairTooltipComponentGenerated, AxisDefaultsLabelsComponentGenerated, AxisDefaultsTitleComponentGenerated, CategoryAxisItemComponentGenerated, CategoryAxisCrosshairComponentGenerated, CategoryAxisCrosshairTooltipComponentGenerated, CategoryAxisNotesComponentGenerated, CategoryAxisNotesIconComponentGenerated, CategoryAxisNotesLabelComponentGenerated, CategoryAxisSelectComponentGenerated, CategoryAxisTitleComponentGenerated, CategoryAxisComponentGenerated, ChartAreaComponentGenerated, DonutCenterTemplateDirective, LegendComponentGenerated, LegendInactiveItemsComponentGenerated, LegendItemComponentGenerated, PaneComponentGenerated, PanesTitleComponentGenerated, PanesComponentGenerated, PlotAreaComponentGenerated, SeriesDefaultsComponentGenerated, SeriesDefaultsLabelsComponentGenerated, SeriesDefaultsLabelsFromComponentGenerated, SeriesDefaultsLabelsToComponentGenerated, SeriesDefaultsNotesComponentGenerated, SeriesDefaultsNotesIconComponentGenerated, SeriesDefaultsNotesLabelComponentGenerated, SeriesDefaultsTooltipComponentGenerated, SeriesItemComponentGenerated, SeriesErrorBarsComponentGenerated, SeriesExtremesComponentGenerated, SeriesHighlightComponentGenerated, SeriesLabelsComponentGenerated, SeriesLabelsFromComponentGenerated, SeriesLabelsToComponentGenerated, SeriesMarkersComponentGenerated, SeriesNotesComponentGenerated, SeriesNotesIconComponentGenerated, SeriesNotesLabelComponentGenerated, SeriesOutliersComponentGenerated, SeriesTooltipComponentGenerated, SeriesComponentGenerated, TitleComponentGenerated, TooltipComponentGenerated, BaseTooltip, bodyFactory, CrosshairTooltipComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, ValueAxisItemComponentGenerated, ValueAxisCrosshairComponentGenerated, ValueAxisCrosshairTooltipComponentGenerated, ValueAxisLabelsComponentGenerated, ValueAxisNotesComponentGenerated, ValueAxisNotesIconComponentGenerated, ValueAxisNotesLabelComponentGenerated, ValueAxisTitleComponentGenerated, ValueAxisComponentGenerated, XAxisItemComponentGenerated, XAxisCrosshairComponentGenerated, XAxisCrosshairTooltipComponentGenerated, XAxisLabelsComponentGenerated, XAxisNotesComponentGenerated, XAxisNotesIconComponentGenerated, XAxisNotesLabelComponentGenerated, XAxisTitleComponentGenerated, XAxisComponentGenerated, YAxisItemComponentGenerated, YAxisCrosshairComponentGenerated, YAxisCrosshairTooltipComponentGenerated, YAxisLabelsComponentGenerated, YAxisNotesComponentGenerated, YAxisNotesIconComponentGenerated, YAxisNotesLabelComponentGenerated, YAxisTitleComponentGenerated, YAxisComponentGenerated, ZoomableComponentGenerated, CollectionItemComponent, CollectionComponent, CollectionService, ConfigurationService, PREFIX, PrefixConfigurationService, RootConfigurationService, SettingsComponent, ThemeService, TooltipTemplateService, BaseEvent, InstanceEventService, LegendEvent, NoteEvent, PreventableEvent, SeriesEvent, StockInstanceEventService, NavigatorComponent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesItemComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent, NavigatorSeriesComponent, ChartModule, StockChartModule, SparklineModule, ChartsModule, TooltipPopupComponent, CrosshairTooltipsContainerComponent, ChartComponent, AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisRangeLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, LegendComponent, LegendInactiveItemsComponent, LegendItemComponent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PanesComponent, PanesTitleComponent, PlotAreaComponent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, TitleComponent, TooltipComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomableComponent, CHART_DIRECTIVES, AxisLabelClickEvent, DragEndEvent, DragEvent, DragStartEvent, LegendItemClickEvent, LegendItemHoverEvent, NoteClickEvent, NoteHoverEvent, PaneRenderEvent, PlotAreaClickEvent, PlotAreaHoverEvent, RenderEvent, SelectEndEvent, SelectEvent, SelectStartEvent, SeriesClickEvent, SeriesHoverEvent, ZoomEndEvent, ZoomEvent, ZoomStartEvent, WeekStartDay, NavigatorFilterEvent, StockChartComponent, STOCK_CHART_DIRECTIVES, SparklineComponent, SPARKLINE_DIRECTIVES };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata } from 'tslib';\nimport { EventEmitter, Input, Output, Directive, ElementRef, NgZone, NgModule, Renderer2, 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\nimport * as ɵngcc0 from '@angular/core';\nconst isDocumentAvailable = () => typeof document !== 'undefined';\n\nconst isChanged = (propertyName, changes, skipFirstChange = true) => (typeof changes[propertyName] !== 'undefined' &&\n (!changes[propertyName].isFirstChange() || !skipFirstChange) &&\n changes[propertyName].previousValue !== changes[propertyName].currentValue);\n\nconst anyChanged = (propertyNames, changes, skipFirstChange = true) => propertyNames.some(name => isChanged(name, changes, skipFirstChange));\n\nconst hasObservers = (emitter) => emitter && emitter.observers.length > 0;\n\nconst guid = () => {\n let id = \"\";\n for (let i = 0; i < 32; i++) {\n const random = Math.random() * 16 | 0; // tslint:disable-line:no-bitwise\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n // tslint:disable-next-line:no-bitwise\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n\nlet DraggableDirective = class 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 = function DraggableDirective_Factory(t) { return new (t || DraggableDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nDraggableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DraggableDirective, selectors: [[\"\", \"kendoDraggable\", \"\"]], inputs: { enableDrag: \"enableDrag\" }, outputs: { kendoPress: \"kendoPress\", kendoDrag: \"kendoDrag\", kendoRelease: \"kendoRelease\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DraggableDirective.prototype, \"enableDrag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DraggableDirective.prototype, \"kendoPress\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DraggableDirective.prototype, \"kendoDrag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DraggableDirective.prototype, \"kendoRelease\", void 0);\nDraggableDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, NgZone])\n], DraggableDirective);\n\n/**\n * @hidden\n */\nlet DraggableModule = class DraggableModule {\n};\nDraggableModule.ɵfac = function DraggableModule_Factory(t) { return new (t || DraggableModule)(); };\nDraggableModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DraggableModule });\nDraggableModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\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/* tslint:disable:no-input-rename */\n/**\n * @hidden\n */\nlet EventsOutsideAngularDirective = class 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 = function EventsOutsideAngularDirective_Factory(t) { return new (t || EventsOutsideAngularDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nEventsOutsideAngularDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EventsOutsideAngularDirective, selectors: [[\"\", \"kendoEventsOutsideAngular\", \"\"]], inputs: { events: [\"kendoEventsOutsideAngular\", \"events\"], scope: \"scope\" } });\n__decorate([\n Input('kendoEventsOutsideAngular'),\n __metadata(\"design:type\", Object)\n], EventsOutsideAngularDirective.prototype, \"events\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], EventsOutsideAngularDirective.prototype, \"scope\", void 0);\nEventsOutsideAngularDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n Renderer2])\n], EventsOutsideAngularDirective);\n\n/**\n * @hidden\n */\nlet EventsModule = class EventsModule {\n};\nEventsModule.ɵfac = function EventsModule_Factory(t) { return new (t || EventsModule)(); };\nEventsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: EventsModule });\nEventsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\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// tslint:disable:deprecation\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 */\nlet ResizeBatchService = class 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 = function ResizeBatchService_Factory(t) { return new (t || ResizeBatchService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nResizeBatchService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ResizeBatchService, factory: function (t) { return ResizeBatchService.ɵfac(t); } });\nResizeBatchService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], ResizeBatchService);\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 */\nlet ResizeSensorComponent = class 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 = function ResizeSensorComponent_Factory(t) { return new (t || ResizeSensorComponent)(ɵngcc0.ɵɵdirectiveInject(ResizeBatchService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nResizeSensorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ResizeSensorComponent, selectors: [[\"kendo-resize-sensor\"]], inputs: { rateLimit: \"rateLimit\" }, outputs: { resize: \"resize\" }, decls: 0, vars: 0, template: function ResizeSensorComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ResizeSensorComponent.prototype, \"rateLimit\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ResizeSensorComponent.prototype, \"resize\", void 0);\nResizeSensorComponent = __decorate([ __metadata(\"design:paramtypes\", [ResizeBatchService, ElementRef, NgZone])\n], ResizeSensorComponent);\n\nconst COMPONENT_DIRECTIVES = [ResizeSensorComponent];\n/**\n * Resize Sensor module\n */\nlet ResizeSensorModule = class ResizeSensorModule {\n};\nResizeSensorModule.ɵfac = function ResizeSensorModule_Factory(t) { return new (t || ResizeSensorModule)(); };\nResizeSensorModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ResizeSensorModule });\nResizeSensorModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [ResizeBatchService] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDraggable]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { enableDrag: [{\n type: Input\n }], kendoPress: [{\n type: Output\n }], kendoDrag: [{\n type: Output\n }], kendoRelease: [{\n type: Output\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableModule, [{\n type: NgModule,\n args: [{\n declarations: [DraggableDirective],\n exports: [DraggableDirective],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DraggableModule, { declarations: function () { return [DraggableDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [DraggableDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EventsOutsideAngularDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoEventsOutsideAngular]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { events: [{\n type: Input,\n args: ['kendoEventsOutsideAngular']\n }], scope: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EventsModule, [{\n type: NgModule,\n args: [{\n declarations: [EventsOutsideAngularDirective],\n exports: [EventsOutsideAngularDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(EventsModule, { declarations: [EventsOutsideAngularDirective], exports: [EventsOutsideAngularDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeBatchService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeSensorComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-resize-sensor',\n template: ''\n }]\n }], function () { return [{ type: ResizeBatchService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { rateLimit: [{\n type: Input\n }], resize: [{\n type: Output\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeSensorModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n providers: [ResizeBatchService]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ResizeSensorModule, { declarations: [ResizeSensorComponent], exports: [ResizeSensorComponent] }); })();\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\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ResizeService, PreventableEvent, DraggableDirective, DraggableModule, closestInScope, closest, contains, findElement, findFocusableChild, findFocusable, hasClasses, isFocusableWithTabKey, isFocusable, isVisible, matchesClasses, matchesNodeName, rtlScrollPosition, EventsOutsideAngularDirective, EventsModule, ResizeSensorComponent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorModule, KendoInput, isDocumentAvailable, isChanged, anyChanged, hasObservers, guid, Keys };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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","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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { setYear } from './set-year';\n/**\n * @hidden\n */\nexport const normalizeYear = (value, year) => (setYear(value, year(value.getFullYear())));\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 { 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 { 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 { 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 { 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 { 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 { 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","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 { 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","// 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 { 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 * 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","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","/**\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","/**\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","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 { 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","/**\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","/**-----------------------------------------------------------------------------------------\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 { __decorate, __metadata, __param } from 'tslib';\nimport { Injectable, EventEmitter, Injector, InjectionToken, Input, Output, HostBinding, Component, Inject, ElementRef, Renderer2, NgZone, TemplateRef, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef, isDevMode, Directive, forwardRef, ContentChild, Optional, ViewContainerRef, HostListener, ViewChildren, QueryList, ContentChildren, IterableDiffers, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';\nimport { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { getDate, isEqual, cloneDate, addDays, 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 { isDocumentAvailable, KendoInput, guid, hasObservers, Keys, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { IntlService, IntlModule } from '@progress/kendo-angular-intl';\nimport { ReplaySubject, Observable, Subject, combineLatest, of, interval, animationFrameScheduler, fromEvent, EMPTY, from, Subscription, BehaviorSubject, merge } from 'rxjs';\nimport { map, scan, takeWhile, tap, filter, debounceTime } from 'rxjs/operators';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport { CommonModule } from '@angular/common';\nimport { touchEnabled } from '@progress/kendo-common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-intl';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@progress/kendo-angular-common';\nimport * as ɵngcc4 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc5 from '@progress/kendo-angular-popup';\n\nconst _c0 = [\"*\"];\nconst _c1 = [\"list\"];\nfunction NavigationComponent_li_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const date_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate(ctx_r4.service.navigationTitle(date_r2));\n} }\nfunction NavigationComponent_li_4_ng_template_3_Template(rf, ctx) { }\nconst _c2 = function (a0, a1, a2) { return { $implicit: a0, activeView: a1, date: a2 }; };\nfunction NavigationComponent_li_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\");\n ɵngcc0.ɵɵelementStart(1, \"span\");\n ɵngcc0.ɵɵtemplate(2, NavigationComponent_li_4_ng_template_2_Template, 1, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(3, NavigationComponent_li_4_ng_template_3_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const date_r2 = ctx.$implicit;\n const index_r3 = ctx.index;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"data-date-index\", index_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-calendar-navigation-marker\", ctx_r1.service.isRangeStart(date_r2));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.templateRef)(\"ngTemplateOutlet\", ctx_r1.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(7, _c2, ctx_r1.service.navigationTitle(date_r2), ctx_r1.activeViewValue, date_r2));\n} }\nconst _c3 = function (a0) { return { click: a0 }; };\nfunction ViewListComponent_table_1_th_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const name_r5 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r4.colWidth, \"%\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(name_r5);\n} }\nfunction ViewListComponent_table_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\", 7);\n ɵngcc0.ɵɵelementStart(1, \"thead\", 8);\n ɵngcc0.ɵɵelementStart(2, \"tr\", 9);\n ɵngcc0.ɵɵtemplate(3, ViewListComponent_table_1_th_3_Template, 2, 3, \"th\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.weekNames);\n} }\nfunction ViewListComponent_col_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"col\");\n} }\nfunction ViewListComponent_tbody_7_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"tbody\", 12);\n ɵngcc0.ɵɵlistener(\"cellClick\", function ViewListComponent_tbody_7_Template_tbody_cellClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.cellClick.emit($event); })(\"weekNumberCellClick\", function ViewListComponent_tbody_7_Template_tbody_weekNumberCellClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.weekNumberCellClick.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const date_r7 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"activeView\", ctx_r3.activeView)(\"isActive\", ctx_r3.isActive)(\"min\", ctx_r3.min)(\"max\", ctx_r3.max)(\"cellUID\", ctx_r3.cellUID)(\"focusedDate\", ctx_r3.focusedDate)(\"selectedDates\", ctx_r3.selectedDates)(\"weekNumber\", ctx_r3.weekNumber)(\"templateRef\", ctx_r3.cellTemplateRef)(\"weekNumberTemplateRef\", ctx_r3.weekNumberTemplateRef)(\"viewDate\", date_r7);\n} }\nfunction CalendarComponent_ng_container_1_kendo_calendar_navigation_1_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-calendar-navigation\", 5);\n ɵngcc0.ɵɵlistener(\"valueChange\", function CalendarComponent_ng_container_1_kendo_calendar_navigation_1_Template_kendo_calendar_navigation_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(2); return ctx_r3.handleNavigation($event); })(\"pageChange\", function CalendarComponent_ng_container_1_kendo_calendar_navigation_1_Template_kendo_calendar_navigation_pageChange_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(2); return ctx_r5.onPageChange(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"activeView\", ctx_r2.activeViewEnum)(\"focusedDate\", ctx_r2.focusedDate)(\"min\", ctx_r2.min)(\"max\", ctx_r2.max)(\"templateRef\", ctx_r2.navigationItemTemplate == null ? null : ctx_r2.navigationItemTemplate.templateRef);\n} }\nfunction CalendarComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CalendarComponent_ng_container_1_kendo_calendar_navigation_1_Template, 1, 5, \"kendo-calendar-navigation\", 2);\n ɵngcc0.ɵɵelementStart(2, \"kendo-calendar-viewlist\", 3);\n ɵngcc0.ɵɵlistener(\"todayButtonClick\", function CalendarComponent_ng_container_1_Template_kendo_calendar_viewlist_todayButtonClick_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.handleDateChange({ selectedDates: [$event], focusedDate: $event }); })(\"cellClick\", function CalendarComponent_ng_container_1_Template_kendo_calendar_viewlist_cellClick_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleCellClick($event); })(\"weekNumberCellClick\", function CalendarComponent_ng_container_1_Template_kendo_calendar_viewlist_weekNumberCellClick_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.handleWeekNumberClick($event); })(\"activeDateChange\", function CalendarComponent_ng_container_1_Template_kendo_calendar_viewlist_activeDateChange_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.handleActiveDateChange($event); })(\"pageChange\", function CalendarComponent_ng_container_1_Template_kendo_calendar_viewlist_pageChange_2_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onPageChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"kendo-resize-sensor\", 4);\n ɵngcc0.ɵɵlistener(\"resize\", function CalendarComponent_ng_container_1_Template_kendo_resize_sensor_resize_3_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n let tmp_3_0;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.navigation);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"activeView\", ctx_r0.activeViewEnum)(\"isActive\", ctx_r0.isActive)(\"cellTemplateRef\", (tmp_3_0 = ctx_r0.activeCellTemplate()) == null ? null : tmp_3_0.templateRef)(\"headerTitleTemplateRef\", ctx_r0.headerTitleTemplate == null ? null : ctx_r0.headerTitleTemplate.templateRef)(\"weekNumberTemplateRef\", ctx_r0.weekNumberTemplate == null ? null : ctx_r0.weekNumberTemplate.templateRef)(\"cellUID\", ctx_r0.cellUID)(\"min\", ctx_r0.min)(\"max\", ctx_r0.max)(\"focusedDate\", ctx_r0.focusedDate)(\"weekNumber\", ctx_r0.weekNumber)(\"selectedDates\", ctx_r0.selectedDates);\n} }\nfunction CalendarComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-multiviewcalendar\", 6, 7);\n ɵngcc0.ɵɵlistener(\"activeViewChange\", function CalendarComponent_ng_container_2_Template_kendo_multiviewcalendar_activeViewChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.handleActiveViewChange($event); })(\"navigate\", function CalendarComponent_ng_container_2_Template_kendo_multiviewcalendar_navigate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.navigate.emit($event); })(\"valueChange\", function CalendarComponent_ng_container_2_Template_kendo_multiviewcalendar_valueChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const _r13 = ɵngcc0.ɵɵreference(2); const ctx_r17 = ɵngcc0.ɵɵnextContext(); return ctx_r17.handleMultiViewCalendarValueChange($event, _r13.focusedDate); });\n ɵngcc0.ɵɵelement(3, \"kendo-multiviewcalendar-messages\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"views\", 1)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"isActive\", ctx_r1.isActive)(\"activeView\", ctx_r1.activeView)(\"bottomView\", ctx_r1.bottomView)(\"topView\", ctx_r1.topView)(\"weekNumber\", ctx_r1.weekNumber)(\"animateNavigation\", ctx_r1.animateNavigation)(\"cellTemplate\", ctx_r1.activeCellTemplate())(\"monthCellTemplate\", ctx_r1.monthCellTemplate)(\"yearCellTemplate\", ctx_r1.yearCellTemplate)(\"decadeCellTemplate\", ctx_r1.decadeCellTemplate)(\"centuryCellTemplate\", ctx_r1.centuryCellTemplate)(\"headerTitleTemplate\", ctx_r1.headerTitleTemplate)(\"weekNumberTemplate\", ctx_r1.weekNumberTemplate)(\"focusedDate\", ctx_r1.focusedDate)(\"selection\", ctx_r1.selection)(\"value\", ctx_r1.value)(\"disabledDates\", ctx_r1.disabledDates);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"today\", ctx_r1.localization.get(\"today\"))(\"prevButtonTitle\", ctx_r1.localization.get(\"prevButtonTitle\"))(\"nextButtonTitle\", ctx_r1.localization.get(\"nextButtonTitle\"));\n} }\nconst _c10 = [\"dateInput\"];\nconst _c11 = [\"wrap\"];\nfunction DateInputComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 6);\n ɵngcc0.ɵɵlistener(\"mousedown\", function DateInputComponent_span_5_Template_span_mousedown_0_listener($event) { return $event.preventDefault(); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 7);\n ɵngcc0.ɵɵlistener(\"mousedown\", function DateInputComponent_span_5_Template_span_mousedown_1_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.arrowDirection = ctx_r4.arrow.Up; })(\"mouseleave\", function DateInputComponent_span_5_Template_span_mouseleave_1_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.arrowDirection = ctx_r6.arrow.None; })(\"click\", function DateInputComponent_span_5_Template_span_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.handleButtonClick(1); });\n ɵngcc0.ɵɵelement(2, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function DateInputComponent_span_5_Template_span_click_3_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleButtonClick(-1); })(\"mousedown\", function DateInputComponent_span_5_Template_span_mousedown_3_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.arrowDirection = ctx_r9.arrow.Down; })(\"mouseleave\", function DateInputComponent_span_5_Template_span_mouseleave_3_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.arrowDirection = ctx_r10.arrow.None; });\n ɵngcc0.ɵɵelement(4, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r2.arrowDirection === ctx_r2.arrow.Up);\n ɵngcc0.ɵɵproperty(\"title\", ctx_r2.localization.get(\"increment\"));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.localization.get(\"increment\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r2.arrowDirection === ctx_r2.arrow.Down);\n ɵngcc0.ɵɵproperty(\"title\", ctx_r2.localization.get(\"decrement\"));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.localization.get(\"decrement\"));\n} }\nconst _c16 = function (a0, a1, a2, a3, a4, a5, a6) { return { click: a0, focus: a1, mousedown: a2, touchstart: a3, dragstart: a4, drop: a5, blur: a6 }; };\nconst _c17 = [\"container\"];\nconst _c18 = [\"popupTemplate\"];\nconst _c19 = [\"wrapper\"];\nfunction DatePickerComponent_ng_template_9_ng_template_3_Template(rf, ctx) { }\nconst _c28 = function (a0) { return { keydown: a0 }; };\nfunction DatePickerComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-calendar\", 9, 10);\n ɵngcc0.ɵɵlistener(\"valueChange\", function DatePickerComponent_ng_template_9_Template_kendo_calendar_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.handleChange(ctx_r7.mergeTime($event)); });\n ɵngcc0.ɵɵelement(2, \"kendo-calendar-messages\", 11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, DatePickerComponent_ng_template_9_ng_template_3_Template, 0, 0, \"ng-template\");\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"type\", ctx_r4.calendarType)(\"min\", ctx_r4.min)(\"max\", ctx_r4.max)(\"navigation\", ctx_r4.navigation)(\"animateNavigation\", ctx_r4.animateCalendarNavigation)(\"activeView\", ctx_r4.activeView)(\"bottomView\", ctx_r4.bottomView)(\"topView\", ctx_r4.topView)(\"weekNumber\", ctx_r4.weekNumber)(\"cellTemplate\", ctx_r4.cellTemplate)(\"monthCellTemplate\", ctx_r4.monthCellTemplate)(\"yearCellTemplate\", ctx_r4.yearCellTemplate)(\"decadeCellTemplate\", ctx_r4.decadeCellTemplate)(\"centuryCellTemplate\", ctx_r4.centuryCellTemplate)(\"weekNumberTemplate\", ctx_r4.weekNumberTemplate)(\"headerTitleTemplate\", ctx_r4.headerTitleTemplate)(\"navigationItemTemplate\", ctx_r4.navigationItemTemplate)(\"focusedDate\", ctx_r4.focusedDate)(\"value\", ctx_r4.value)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(25, _c28, ctx_r4.handleKeydown))(\"scope\", ctx_r4)(\"disabledDates\", ctx_r4.disabledDates);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"today\", ctx_r4.localization.get(\"today\"))(\"prevButtonTitle\", ctx_r4.localization.get(\"prevButtonTitle\"))(\"nextButtonTitle\", ctx_r4.localization.get(\"nextButtonTitle\"));\n} }\nconst _c29 = function (a0, a1) { return { click: a0, mousedown: a1 }; };\nconst _c44 = function (a0, a1) { return { keydown: a0, mousedown: a1 }; };\nfunction TimePickerComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-timeselector\", 9, 10);\n ɵngcc0.ɵɵlistener(\"valueChange\", function TimePickerComponent_ng_template_7_Template_kendo_timeselector_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.handleChange($event); })(\"valueReject\", function TimePickerComponent_ng_template_7_Template_kendo_timeselector_valueReject_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleReject(); });\n ɵngcc0.ɵɵelement(2, \"kendo-timeselector-messages\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"cancelButton\", ctx_r3.cancelButton)(\"nowButton\", ctx_r3.nowButton)(\"format\", ctx_r3.format)(\"min\", ctx_r3.min)(\"max\", ctx_r3.max)(\"steps\", ctx_r3.steps)(\"value\", ctx_r3.value)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(15, _c44, ctx_r3.handleKeydown, ctx_r3.handleMousedown))(\"scope\", ctx_r3);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"acceptLabel\", ctx_r3.localization.get(\"acceptLabel\"))(\"accept\", ctx_r3.localization.get(\"accept\"))(\"cancelLabel\", ctx_r3.localization.get(\"cancelLabel\"))(\"cancel\", ctx_r3.localization.get(\"cancel\"))(\"nowLabel\", ctx_r3.localization.get(\"nowLabel\"))(\"now\", ctx_r3.localization.get(\"now\"));\n} }\nfunction DateTimePickerComponent_ng_template_9_button_16_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 25);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(5, _c3, ctx_r5.handleCancel))(\"scope\", ctx_r5);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r5.localization.get(\"cancelLabel\"))(\"aria-label\", ctx_r5.localization.get(\"cancelLabel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r5.localization.get(\"cancel\"), \" \");\n} }\nconst _c73 = function (a0, a1) { return { mousedown: a0, keydown: a1 }; };\nconst _c74 = function (a0, a1) { return { focusin: a0, focusout: a1 }; };\nconst _c75 = function (a0, a1) { return { click: a0, keydown: a1 }; };\nconst _c76 = function (a0) { return { transitionend: a0 }; };\nconst _c77 = function (a0, a1, a2) { return { keydown: a0, focusin: a1, focusout: a2 }; };\nfunction DateTimePickerComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵelementStart(1, \"div\", 10);\n ɵngcc0.ɵɵelementStart(2, \"div\", 11);\n ɵngcc0.ɵɵelementStart(3, \"button\", 12);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"button\", 13);\n ɵngcc0.ɵɵtext(6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"div\", 14, 15);\n ɵngcc0.ɵɵelementStart(9, \"div\", 16);\n ɵngcc0.ɵɵelementStart(10, \"kendo-calendar\", 17);\n ɵngcc0.ɵɵlistener(\"valueChange\", function DateTimePickerComponent_ng_template_9_Template_kendo_calendar_valueChange_10_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.calendarValue = $event; })(\"valueChange\", function DateTimePickerComponent_ng_template_9_Template_kendo_calendar_valueChange_10_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleCalendarValueChange(); });\n ɵngcc0.ɵɵelement(11, \"kendo-calendar-messages\", 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(12, \"div\", 19);\n ɵngcc0.ɵɵelementStart(13, \"kendo-timeselector\", 20);\n ɵngcc0.ɵɵelement(14, \"kendo-timeselector-messages\", 21);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(15, \"div\", 22);\n ɵngcc0.ɵɵtemplate(16, DateTimePickerComponent_ng_template_9_button_16_Template, 2, 7, \"button\", 23);\n ɵngcc0.ɵɵelementStart(17, \"button\", 24);\n ɵngcc0.ɵɵtext(18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r4 = ɵngcc0.ɵɵreference(8);\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMapInterpolate1(\"k-datetime-wrap k-\", ctx_r3.activeTab, \"-tab\");\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(62, _c73, ctx_r3.preventMouseDown, ctx_r3.handleKeyDown))(\"scope\", ctx_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(65, _c74, ctx_r3.handleFocus, ctx_r3.handleBlur))(\"scope\", ctx_r3);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r3.activeTab === \"date\");\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(68, _c75, ctx_r3.changeActiveTab.bind(ctx_r3, \"date\"), ctx_r3.handleBackTabOut))(\"scope\", ctx_r3);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.localization.get(\"dateTabLabel\"))(\"aria-label\", ctx_r3.localization.get(\"dateTabLabel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.localization.get(\"dateTab\"), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r3.activeTab === \"time\");\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(71, _c3, ctx_r3.changeActiveTab.bind(ctx_r3, \"time\")));\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.localization.get(\"timeTabLabel\"))(\"aria-label\", ctx_r3.localization.get(\"timeTabLabel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.localization.get(\"timeTab\"), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transition\", ctx_r3.tabSwitchTransition);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(73, _c76, ctx_r3.handleTabChangeTransitionEnd.bind(ctx_r3, _r4)));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r3.calendarValue)(\"type\", ctx_r3.calendarType)(\"min\", ctx_r3.calendarMin)(\"max\", ctx_r3.calendarMax)(\"focusedDate\", ctx_r3.focusedDate)(\"weekNumber\", ctx_r3.weekNumber)(\"navigation\", false)(\"animateNavigation\", ctx_r3.animateCalendarNavigation)(\"cellTemplate\", ctx_r3.cellTemplate)(\"monthCellTemplate\", ctx_r3.monthCellTemplate)(\"yearCellTemplate\", ctx_r3.yearCellTemplate)(\"decadeCellTemplate\", ctx_r3.decadeCellTemplate)(\"centuryCellTemplate\", ctx_r3.centuryCellTemplate)(\"weekNumberTemplate\", ctx_r3.weekNumberTemplate)(\"headerTitleTemplate\", ctx_r3.headerTitleTemplate)(\"disabled\", ctx_r3.disableCalendar)(\"disabledDates\", ctx_r3.disabledDates);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"today\", ctx_r3.localization.get(\"today\"))(\"prevButtonTitle\", ctx_r3.localization.get(\"prevButtonTitle\"))(\"nextButtonTitle\", ctx_r3.localization.get(\"nextButtonTitle\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r3.value)(\"format\", ctx_r3.timeSelectorFormat)(\"min\", ctx_r3.timeSelectorMin)(\"max\", ctx_r3.timeSelectorMax)(\"setButton\", false)(\"cancelButton\", false)(\"steps\", ctx_r3.steps)(\"disabled\", ctx_r3.disableTimeSelector);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"now\", ctx_r3.localization.get(\"now\"))(\"nowLabel\", ctx_r3.localization.get(\"nowLabel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction3(75, _c77, ctx_r3.handleTabOut, ctx_r3.handleFocus, ctx_r3.handleBlur))(\"scope\", ctx_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r3.cancelButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", !ctx_r3.calendarValue)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(79, _c3, ctx_r3.handleAccept))(\"scope\", ctx_r3);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.localization.get(\"acceptLabel\"))(\"aria-label\", ctx_r3.localization.get(\"acceptLabel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.localization.get(\"accept\"), \" \");\n} }\nconst _c78 = function (a0, a1) { return { mousedown: a0, click: a1 }; };\nfunction HorizontalViewListComponent_ng_template_0_caption_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"caption\", 7);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const date_r5 = ɵngcc0.ɵɵnextContext().date;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r7.getCaptionClass());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r7.getCaptionTitle(date_r5));\n} }\nfunction HorizontalViewListComponent_ng_template_0_thead_2_th_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const name_r11 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(name_r11);\n} }\nfunction HorizontalViewListComponent_ng_template_0_thead_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"thead\", 8);\n ɵngcc0.ɵɵelementStart(1, \"tr\", 9);\n ɵngcc0.ɵɵtemplate(2, HorizontalViewListComponent_ng_template_0_thead_2_th_2_Template, 2, 1, \"th\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r8.weekNames);\n} }\nfunction HorizontalViewListComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"table\", 3);\n ɵngcc0.ɵɵtemplate(1, HorizontalViewListComponent_ng_template_0_caption_1_Template, 2, 2, \"caption\", 4);\n ɵngcc0.ɵɵtemplate(2, HorizontalViewListComponent_ng_template_0_thead_2_Template, 3, 1, \"thead\", 5);\n ɵngcc0.ɵɵelementStart(3, \"tbody\", 6);\n ɵngcc0.ɵɵlistener(\"cellClick\", function HorizontalViewListComponent_ng_template_0_Template_tbody_cellClick_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.cellClick.emit($event); })(\"weekNumberCellClick\", function HorizontalViewListComponent_ng_template_0_Template_tbody_weekNumberCellClick_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.weekNumberCellClick.emit($event); })(\"cellEnter\", function HorizontalViewListComponent_ng_template_0_Template_tbody_cellEnter_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.cellEnter.emit($event); })(\"cellLeave\", function HorizontalViewListComponent_ng_template_0_Template_tbody_cellLeave_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.cellLeave.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const date_r5 = ctx.date;\n const class_r6 = ctx.className;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", class_r6);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.showViewHeader);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.isMonthView());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"activeView\", ctx_r1.activeView)(\"isActive\", ctx_r1.isActive)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"cellUID\", ctx_r1.cellUID)(\"focusedDate\", ctx_r1.focusedDate)(\"selectedDates\", ctx_r1.selectedDates)(\"selectionRange\", ctx_r1.selectionRange)(\"activeRangeEnd\", ctx_r1.activeRangeEnd)(\"weekNumber\", ctx_r1.weekNumber)(\"templateRef\", ctx_r1.cellTemplateRef)(\"weekNumberTemplateRef\", ctx_r1.weekNumberTemplateRef)(\"viewDate\", date_r5);\n} }\nfunction HorizontalViewListComponent_2_ng_template_0_Template(rf, ctx) { }\nconst _c79 = function (a0) { return { date: a0, className: \"k-pointer-events-none\" }; };\nfunction HorizontalViewListComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HorizontalViewListComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c79, ctx_r2.nextAnimationDate));\n} }\nfunction HorizontalViewListComponent_3_ng_template_0_Template(rf, ctx) { }\nconst _c80 = function (a0) { return { date: a0 }; };\nfunction HorizontalViewListComponent_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HorizontalViewListComponent_3_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n} if (rf & 2) {\n const date_r18 = ctx.$implicit;\n ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c80, date_r18));\n} }\nfunction HorizontalViewListComponent_4_ng_template_0_Template(rf, ctx) { }\nfunction HorizontalViewListComponent_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HorizontalViewListComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c79, ctx_r4.prevAnimationDate));\n} }\nconst _c87 = [\"defaultTemplate\"];\nfunction DateRangePopupComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-multiviewcalendar\", 2);\n} }\nfunction DateRangeComponent_kendo_daterange_popup_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-daterange-popup\");\n} }\nfunction HeaderComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n} }\nfunction HeaderComponent_ng_template_2_Template(rf, ctx) { }\nfunction HeaderComponent_button_5_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function HeaderComponent_button_5_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.prevButtonClick.emit(); });\n ɵngcc0.ɵɵelement(1, \"span\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.isPrevDisabled)(\"title\", ctx_r2.prevButtonTitle);\n ɵngcc0.ɵɵattribute(\"aria-disabled\", ctx_r2.isPrevDisabled);\n} }\nfunction HeaderComponent_button_8_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function HeaderComponent_button_8_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.nextButtonClick.emit(); });\n ɵngcc0.ɵɵelement(1, \"span\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.isNextDisabled)(\"title\", ctx_r3.nextButtonTitle);\n ɵngcc0.ɵɵattribute(\"aria-disabled\", ctx_r3.isNextDisabled);\n} }\nconst _c88 = [\"kendoCalendarView\", \"\"];\nfunction ViewComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 3);\n ɵngcc0.ɵɵtext(1, \"\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction ViewComponent_tr_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 4);\n ɵngcc0.ɵɵelementStart(1, \"th\", 5);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colSpan\", ctx_r2.colSpan);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.title);\n} }\nfunction ViewComponent_tr_3_ng_template_1_td_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const row_r4 = ɵngcc0.ɵɵnextContext(3).$implicit;\n const ctx_r9 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r9.getWeekNumber(ctx_r9.firstDate(row_r4)), \" \");\n} }\nfunction ViewComponent_tr_3_ng_template_1_td_0_ng_template_2_Template(rf, ctx) { }\nconst _c89 = function (a0, a1) { return { $implicit: a0, cellContext: a1 }; };\nfunction ViewComponent_tr_3_ng_template_1_td_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 9);\n ɵngcc0.ɵɵtemplate(1, ViewComponent_tr_3_ng_template_1_td_0_ng_template_1_Template, 1, 1, \"ng-template\", 6);\n ɵngcc0.ɵɵtemplate(2, ViewComponent_tr_3_ng_template_1_td_0_ng_template_2_Template, 0, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const row_r4 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(5, _c3, ctx_r8.handleWeekNumberClick.bind(ctx_r8, row_r4)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r8.weekNumberTemplateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r8.weekNumberTemplateRef)(\"ngTemplateOutlet\", ctx_r8.weekNumberTemplateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(7, _c89, ctx_r8.firstDate(row_r4), ctx_r8.getWeekNumberContext(row_r4)));\n} }\nfunction ViewComponent_tr_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ViewComponent_tr_3_ng_template_1_td_0_Template, 3, 10, \"td\", 8);\n} if (rf & 2) {\n const row_r4 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.firstDate(row_r4))(\"ngIfElse\", _r0);\n} }\nfunction ViewComponent_tr_3_ng_container_2_td_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const cell_r14 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵtextInterpolate(cell_r14.formattedValue);\n} }\nfunction ViewComponent_tr_3_ng_container_2_td_1_3_ng_template_0_Template(rf, ctx) { }\nfunction ViewComponent_tr_3_ng_container_2_td_1_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ViewComponent_tr_3_ng_container_2_td_1_3_ng_template_0_Template, 0, 0, \"ng-template\", 15);\n} if (rf & 2) {\n const cell_r14 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r18 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r18.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c89, cell_r14.value, cell_r14));\n} }\nfunction ViewComponent_tr_3_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 12);\n ɵngcc0.ɵɵelementStart(1, \"span\", 13);\n ɵngcc0.ɵɵtemplate(2, ViewComponent_tr_3_ng_container_2_td_1_ng_template_2_Template, 1, 1, \"ng-template\", 6);\n ɵngcc0.ɵɵtemplate(3, ViewComponent_tr_3_ng_container_2_td_1_3_Template, 1, 5, null, 14);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r22 = ɵngcc0.ɵɵnextContext();\n const cell_r14 = ctx_r22.$implicit;\n const cellIndex_r15 = ctx_r22.index;\n const rowIndex_r5 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r16 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r16.getStyles(cell_r14))(\"title\", cell_r14.title);\n ɵngcc0.ɵɵattribute(\"id\", cell_r14.id)(\"data-cell-index\", ctx_r16.tableCellIndex(rowIndex_r5, cellIndex_r15))(\"aria-selected\", cell_r14.isSelected || cell_r14.isRangeStart || cell_r14.isRangeMid || cell_r14.isRangeEnd)(\"aria-disabled\", cell_r14.isDisabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r16.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r16.templateRef);\n} }\nfunction ViewComponent_tr_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, ViewComponent_tr_3_ng_container_2_td_1_Template, 4, 8, \"td\", 11);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const cell_r14 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.shouldRenderCellContent(cell_r14))(\"ngIfElse\", _r0);\n} }\nfunction ViewComponent_tr_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 4);\n ɵngcc0.ɵɵtemplate(1, ViewComponent_tr_3_ng_template_1_Template, 1, 2, \"ng-template\", 6);\n ɵngcc0.ɵɵtemplate(2, ViewComponent_tr_3_ng_container_2_Template, 2, 2, \"ng-container\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const row_r4 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r3.weekNumber);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kForOf\", row_r4);\n} }\nfunction TimeListComponent_li_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 3);\n ɵngcc0.ɵɵelementStart(1, \"span\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const index_r2 = ctx.index;\n ɵngcc0.ɵɵattribute(\"data-timelist-item-index\", index_r2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(item_r1.text);\n} }\nconst _c90 = [\"accept\"];\nconst _c91 = [\"cancel\"];\nconst _c92 = [\"now\"];\nconst _c93 = [\"listWrapper\"];\nconst _c106 = function (a0, a1, a2) { return { click: a0, focus: a1, blur: a2 }; };\nfunction TimeSelectorComponent_button_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 8, 9);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction3(6, _c106, ctx_r0.handleNow, ctx_r0.handleFocus, ctx_r0.handleBlur))(\"scope\", ctx_r0)(\"disabled\", ctx_r0.disabled);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r0.localization.get(\"nowLabel\"))(\"aria-label\", ctx_r0.localization.get(\"nowLabel\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.localization.get(\"now\"));\n} }\nconst _c107 = function (a0, a1) { return { focus: a0, blur: a1 }; };\nfunction TimeSelectorComponent_ng_template_7_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 12, 13);\n ɵngcc0.ɵɵelementStart(2, \"span\", 2);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"kendo-timelist\", 14);\n ɵngcc0.ɵɵlistener(\"valueChange\", function TimeSelectorComponent_ng_template_7_div_0_Template_kendo_timelist_valueChange_4_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(2); return ctx_r9.current = $event; });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext();\n const part_r4 = ctx_r11.$implicit;\n const idx_r5 = ctx_r11.index;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx_r6.intl.dateFieldName(part_r4));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"min\", ctx_r6.min)(\"max\", ctx_r6.max)(\"part\", part_r4)(\"step\", ctx_r6.partStep(part_r4))(\"disabled\", ctx_r6.disabled)(\"value\", ctx_r6.current)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(10, _c107, ctx_r6.handleListFocus, ctx_r6.handleBlur))(\"scope\", ctx_r6);\n ɵngcc0.ɵɵattribute(\"data-timelist-index\", idx_r5);\n} }\nfunction TimeSelectorComponent_ng_template_7_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 15);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const part_r4 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", part_r4.pattern, \" \");\n} }\nfunction TimeSelectorComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TimeSelectorComponent_ng_template_7_div_0_Template, 5, 13, \"div\", 10);\n ɵngcc0.ɵɵtemplate(1, TimeSelectorComponent_ng_template_7_div_1_Template, 2, 1, \"div\", 11);\n} if (rf & 2) {\n const part_r4 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", part_r4.type !== \"literal\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", part_r4.type === \"literal\");\n} }\nfunction TimeSelectorComponent_div_8_button_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 19, 20);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction3(6, _c106, ctx_r13.handleReject, ctx_r13.handleFocus, ctx_r13.handleBlur))(\"scope\", ctx_r13)(\"disabled\", ctx_r13.disabled);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r13.localization.get(\"cancelLabel\"))(\"aria-label\", ctx_r13.localization.get(\"cancelLabel\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r13.localization.get(\"cancel\"));\n} }\nfunction TimeSelectorComponent_div_8_button_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 21, 22);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction3(6, _c106, ctx_r14.handleAccept, ctx_r14.handleFocus, ctx_r14.handleBlur))(\"scope\", ctx_r14)(\"disabled\", ctx_r14.disabled);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r14.localization.get(\"acceptLabel\"))(\"aria-label\", ctx_r14.localization.get(\"acceptLabel\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r14.localization.get(\"accept\"));\n} }\nfunction TimeSelectorComponent_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 16);\n ɵngcc0.ɵɵtemplate(1, TimeSelectorComponent_div_8_button_1_Template, 3, 10, \"button\", 17);\n ɵngcc0.ɵɵtemplate(2, TimeSelectorComponent_div_8_button_2_Template, 3, 10, \"button\", 18);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.cancelButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.setButton);\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-dateinputs',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635945725,\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 */\nconst EMPTY_SELECTIONRANGE = { start: null, end: null };\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 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\n/* tslint:disable:no-bitwise max-line-length */\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 = 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 = (_) => { }; // tslint: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\nconst EMPTY_DATA = [[]];\nconst CELLS_LENGTH = 4;\nconst ROWS_LENGTH = 3;\nconst ACTIONS = {\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 */\nlet CenturyViewService = class CenturyViewService {\n /**\n * @hidden\n */\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;\n }\n const cells = range(0, CELLS_LENGTH);\n const firstDate = firstDecadeOfCentury(viewDate);\n const lastDate = lastDecadeOfCentury(viewDate);\n const today = getToday();\n return range(0, ROWS_LENGTH).map(rowOffset => {\n const baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH);\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[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;\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 = function CenturyViewService_Factory(t) { return new (t || CenturyViewService)(); };\nCenturyViewService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CenturyViewService, factory: function (t) { return CenturyViewService.ɵfac(t); } });\n\nconst EMPTY_DATA$1 = [[]];\nconst CELLS_LENGTH$1 = 4;\nconst ROWS_LENGTH$1 = 3;\nconst ACTIONS$1 = {\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 */\nlet DecadeViewService = class DecadeViewService {\n /**\n * @hidden\n */\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$1;\n }\n const cells = range(0, CELLS_LENGTH$1);\n const firstDate = firstYearOfDecade(viewDate);\n const lastDate = lastYearOfDecade(viewDate);\n const today = getToday();\n return range(0, ROWS_LENGTH$1).map(rowOffset => {\n const baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH$1);\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$1[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$1;\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 = function DecadeViewService_Factory(t) { return new (t || DecadeViewService)(); };\nDecadeViewService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DecadeViewService, factory: function (t) { return DecadeViewService.ɵfac(t); } });\n\nconst EMPTY_DATA$2 = [[]];\nconst CELLS_LENGTH$2 = 7;\nconst ROWS_LENGTH$2 = 6;\nconst ACTIONS$2 = {\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 */\nlet MonthViewService = class 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$2;\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$2);\n const today = getToday();\n return range(0, ROWS_LENGTH$2).map(rowOffset => {\n const baseDate = addDays(date, rowOffset * CELLS_LENGTH$2);\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$2[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$2 + (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 = function MonthViewService_Factory(t) { return new (t || MonthViewService)(ɵngcc0.ɵɵinject(ɵngcc1.IntlService)); };\nMonthViewService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MonthViewService, factory: function (t) { return MonthViewService.ɵfac(t); } });\nMonthViewService = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], MonthViewService);\n\nconst EMPTY_DATA$3 = [[]];\nconst CELLS_LENGTH$3 = 4;\nconst ROWS_LENGTH$3 = 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$3 = {\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 */\nlet YearViewService = class 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$3;\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$3);\n const today = getToday();\n return range(0, ROWS_LENGTH$3).map(rowOffset => {\n const baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH$3);\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$3[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$3;\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 = function YearViewService_Factory(t) { return new (t || YearViewService)(ɵngcc0.ɵɵinject(ɵngcc1.IntlService)); };\nYearViewService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: YearViewService, factory: function (t) { return YearViewService.ɵfac(t); } });\nYearViewService = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], YearViewService);\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\nconst services = {\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 */\nlet BusViewService = class 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[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 = function BusViewService_Factory(t) { return new (t || BusViewService)(ɵngcc0.ɵɵinject(ɵngcc0.Injector)); };\nBusViewService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BusViewService, factory: function (t) { return BusViewService.ɵfac(t); } });\nBusViewService = __decorate([ __metadata(\"design:paramtypes\", [Injector])\n], BusViewService);\n\nconst div = domContainerFactory('div');\nconst ul = domContainerFactory('ul');\nconst li = 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(`\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 = (children) => div(children, 'k-flex k-content k-calendar-content k-scrollable');\nconst view = (contentElement, className, renderWeekHeader) => (div([\n monthHeader(),\n renderWeekHeader ? monthWeekHeader() : null,\n scrollable([contentElement, contentElement])\n], className, { left: '-10000px', position: 'absolute' }));\nconst ɵ6 = () => {\n let navElement;\n return () => {\n if (!isDocumentAvailable) {\n return null;\n }\n if (!navElement) {\n navElement = div([scrollable([ul([li('FEB')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n }\n return navElement;\n };\n};\nconst navigationList = (ɵ6)();\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 */\nlet CalendarDOMService = class 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 = function CalendarDOMService_Factory(t) { return new (t || CalendarDOMService)(); };\nCalendarDOMService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarDOMService, factory: function (t) { return CalendarDOMService.ɵfac(t); } });\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); // tslint:disable-line:align\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/**\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 */\nlet VirtualizationComponent = class 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 = function VirtualizationComponent_Factory(t) { return new (t || VirtualizationComponent)(ɵngcc0.ɵɵdirectiveInject(SCROLLER_FACTORY_TOKEN), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nVirtualizationComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: VirtualizationComponent, selectors: [[\"kendo-virtualization\"]], hostVars: 10, hostBindings: function VirtualizationComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-flex\", ctx.wrapperClasses)(\"k-content\", ctx.wrapperClasses)(\"k-calendar-content\", ctx.wrapperClasses)(\"k-scrollable\", ctx.wrapperClasses)(\"k-scrollable-horizontal\", ctx.horizontalClass);\n } }, 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\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 2, vars: 3, consts: [[1, \"k-scrollable-placeholder\", 3, \"ngStyle\"]], template: function VirtualizationComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelement(1, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-scrollable-horizontal-placeholder\", ctx.direction === \"horizontal\");\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.totalVertexLength);\n } }, directives: [ɵngcc2.NgStyle], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], VirtualizationComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"itemHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"itemWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"topOffset\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"bottomOffset\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"maxScrollDifference\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"scrollOffsetSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"scrollDuration\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"take\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], VirtualizationComponent.prototype, \"total\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], VirtualizationComponent.prototype, \"activeIndexChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], VirtualizationComponent.prototype, \"pageChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], VirtualizationComponent.prototype, \"scrollChange\", void 0);\n__decorate([\n HostBinding('class.k-flex'),\n HostBinding('class.k-content'),\n HostBinding('class.k-calendar-content'),\n HostBinding('class.k-scrollable'),\n __metadata(\"design:type\", Boolean)\n], VirtualizationComponent.prototype, \"wrapperClasses\", void 0);\n__decorate([\n HostBinding('class.k-scrollable-horizontal'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], VirtualizationComponent.prototype, \"horizontalClass\", null);\nVirtualizationComponent = __decorate([ __param(0, Inject(SCROLLER_FACTORY_TOKEN)),\n __metadata(\"design:paramtypes\", [Object, ElementRef,\n Renderer2,\n NgZone])\n], VirtualizationComponent);\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 ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nlet NavigationComponent = class 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 = function NavigationComponent_Factory(t) { return new (t || NavigationComponent)(ɵngcc0.ɵɵdirectiveInject(BusViewService), ɵngcc0.ɵɵdirectiveInject(CalendarDOMService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNavigationComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NavigationComponent, selectors: [[\"kendo-calendar-navigation\"]], viewQuery: function NavigationComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(VirtualizationComponent, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.virtualization = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.list = _t.first);\n } }, hostVars: 2, hostBindings: function NavigationComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-calendar-navigation\", ctx.getComponentClass);\n } }, inputs: { min: \"min\", max: \"max\", focusedDate: \"focusedDate\", activeView: \"activeView\", templateRef: \"templateRef\" }, outputs: { valueChange: \"valueChange\", pageChange: \"pageChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 12, consts: [[1, \"k-calendar-navigation-highlight\"], [3, \"skip\", \"take\", \"total\", \"itemHeight\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"pageChange\", \"scrollChange\"], [1, \"k-reset\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [\"list\", \"\"], [4, \"kFor\", \"kForOf\"], [3, \"ngIf\"], [3, \"ngIf\", \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NavigationComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-virtualization\", 1);\n ɵngcc0.ɵɵlistener(\"pageChange\", function NavigationComponent_Template_kendo_virtualization_pageChange_1_listener($event) { return ctx.onPageChange($event); })(\"scrollChange\", function NavigationComponent_Template_kendo_virtualization_scrollChange_1_listener($event) { return ctx.scrollChange($event); });\n ɵngcc0.ɵɵelementStart(2, \"ul\", 2, 3);\n ɵngcc0.ɵɵtemplate(4, NavigationComponent_li_4_Template, 4, 11, \"li\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"skip\", ctx.skip)(\"take\", ctx.take)(\"total\", ctx.total)(\"itemHeight\", ctx.itemHeight)(\"topOffset\", ctx.topOffset)(\"bottomOffset\", ctx.bottomOffset)(\"maxScrollDifference\", ctx.maxViewHeight);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(10, _c3, ctx.handleDateChange))(\"scope\", ctx);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"kForOf\", ctx.dates);\n } }, directives: function () { return [VirtualizationComponent, ɵngcc3.EventsOutsideAngularDirective, KForOf, ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NavigationComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], NavigationComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], NavigationComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], NavigationComponent.prototype, \"focusedDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], NavigationComponent.prototype, \"templateRef\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], NavigationComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], NavigationComponent.prototype, \"pageChange\", void 0);\n__decorate([\n ViewChild(VirtualizationComponent, { static: false }),\n __metadata(\"design:type\", VirtualizationComponent)\n], NavigationComponent.prototype, \"virtualization\", void 0);\n__decorate([\n ViewChild('list', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], NavigationComponent.prototype, \"list\", void 0);\n__decorate([\n HostBinding(\"class.k-calendar-navigation\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], NavigationComponent.prototype, \"getComponentClass\", null);\nNavigationComponent = __decorate([ __metadata(\"design:paramtypes\", [BusViewService,\n CalendarDOMService,\n IntlService,\n ChangeDetectorRef,\n Renderer2])\n], NavigationComponent);\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 */\nlet ViewListComponent = class 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 = function ViewListComponent_Factory(t) { return new (t || ViewListComponent)(ɵngcc0.ɵɵdirectiveInject(BusViewService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(CalendarDOMService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nViewListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ViewListComponent, selectors: [[\"kendo-calendar-viewlist\"]], viewQuery: function ViewListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(VirtualizationComponent, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.virtualization = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.list = _t.first);\n } }, hostVars: 12, hostBindings: function ViewListComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-vstack\", ctx.getComponentClass)(\"k-calendar-view\", ctx.getComponentClass)(\"k-calendar-monthview\", ctx.getComponentMonthClass)(\"k-calendar-yearview\", ctx.getComponentYearClass)(\"k-calendar-decadeview\", ctx.getComponentDecadeClass)(\"k-calendar-centuryview\", ctx.getComponentCenturyClass);\n } }, inputs: { isActive: \"isActive\", min: \"min\", max: \"max\", selectedDates: \"selectedDates\", weekNumber: \"weekNumber\", cellTemplateRef: \"cellTemplateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\", headerTitleTemplateRef: \"headerTitleTemplateRef\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", activeDateChange: \"activeDateChange\", todayButtonClick: \"todayButtonClick\", pageChange: \"pageChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 17, consts: [[3, \"currentDate\", \"min\", \"max\", \"activeView\", \"templateRef\", \"todayButtonClick\"], [\"class\", \"k-calendar-weekdays k-calendar-table\", \"style\", \"table-layout: auto;\", 4, \"ngIf\"], [3, \"tabindex\", \"skip\", \"take\", \"total\", \"itemHeight\", \"topOffset\", \"bottomOffset\", \"scrollOffsetSize\", \"maxScrollDifference\", \"pageChange\", \"scrollChange\", \"activeIndexChange\"], [1, \"k-calendar-table\"], [\"list\", \"\"], [4, \"ngFor\", \"ngForOf\"], [\"class\", \"k-calendar-tbody\", \"kendoCalendarView\", \"\", \"role\", \"rowgroup\", 3, \"activeView\", \"isActive\", \"min\", \"max\", \"cellUID\", \"focusedDate\", \"selectedDates\", \"weekNumber\", \"templateRef\", \"weekNumberTemplateRef\", \"viewDate\", \"cellClick\", \"weekNumberCellClick\", 4, \"kFor\", \"kForOf\"], [1, \"k-calendar-weekdays\", \"k-calendar-table\", 2, \"table-layout\", \"auto\"], [1, \"k-calendar-thead\"], [1, \"k-calendar-tr\"], [\"class\", \"k-calendar-th\", 3, \"width\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-calendar-th\"], [\"kendoCalendarView\", \"\", \"role\", \"rowgroup\", 1, \"k-calendar-tbody\", 3, \"activeView\", \"isActive\", \"min\", \"max\", \"cellUID\", \"focusedDate\", \"selectedDates\", \"weekNumber\", \"templateRef\", \"weekNumberTemplateRef\", \"viewDate\", \"cellClick\", \"weekNumberCellClick\"]], template: function ViewListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-calendar-header\", 0);\n ɵngcc0.ɵɵlistener(\"todayButtonClick\", function ViewListComponent_Template_kendo_calendar_header_todayButtonClick_0_listener($event) { return ctx.todayButtonClick.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(1, ViewListComponent_table_1_Template, 4, 1, \"table\", 1);\n ɵngcc0.ɵɵelementStart(2, \"kendo-virtualization\", 2);\n ɵngcc0.ɵɵlistener(\"pageChange\", function ViewListComponent_Template_kendo_virtualization_pageChange_2_listener($event) { return ctx.onPageChange($event); })(\"scrollChange\", function ViewListComponent_Template_kendo_virtualization_scrollChange_2_listener($event) { return ctx.scrollChange($event); })(\"activeIndexChange\", function ViewListComponent_Template_kendo_virtualization_activeIndexChange_2_listener($event) { return ctx.setActiveDate($event); });\n ɵngcc0.ɵɵelementStart(3, \"table\", 3, 4);\n ɵngcc0.ɵɵelementStart(5, \"colgroup\");\n ɵngcc0.ɵɵtemplate(6, ViewListComponent_col_6_Template, 1, 0, \"col\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, ViewListComponent_tbody_7_Template, 1, 11, \"tbody\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"currentDate\", ctx.activeDate)(\"min\", ctx.min)(\"max\", ctx.max)(\"activeView\", ctx.activeView)(\"templateRef\", ctx.headerTitleTemplateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isMonthView());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"tabindex\", -1)(\"skip\", ctx.skip)(\"take\", ctx.take)(\"total\", ctx.total)(\"itemHeight\", ctx.viewHeight)(\"topOffset\", ctx.viewOffset)(\"bottomOffset\", ctx.bottomOffset)(\"scrollOffsetSize\", ctx.viewOffset)(\"maxScrollDifference\", ctx.viewHeight);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cols);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kForOf\", ctx.dates);\n } }, directives: function () { return [HeaderComponent, ɵngcc2.NgIf, ɵngcc2.NgForOf, VirtualizationComponent, KForOf, ViewComponent]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ViewListComponent.prototype, \"cellTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ViewListComponent.prototype, \"weekNumberTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ViewListComponent.prototype, \"headerTitleTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ViewListComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ViewListComponent.prototype, \"cellUID\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ViewListComponent.prototype, \"focusedDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ViewListComponent.prototype, \"isActive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ViewListComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ViewListComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ViewListComponent.prototype, \"selectedDates\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ViewListComponent.prototype, \"weekNumber\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewListComponent.prototype, \"cellClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewListComponent.prototype, \"weekNumberCellClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewListComponent.prototype, \"activeDateChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewListComponent.prototype, \"todayButtonClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewListComponent.prototype, \"pageChange\", void 0);\n__decorate([\n ViewChild(VirtualizationComponent, { static: false }),\n __metadata(\"design:type\", VirtualizationComponent)\n], ViewListComponent.prototype, \"virtualization\", void 0);\n__decorate([\n ViewChild('list', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ViewListComponent.prototype, \"list\", void 0);\n__decorate([\n HostBinding(\"class.k-vstack\"),\n HostBinding(\"class.k-calendar-view\"),\n __metadata(\"design:type\", Boolean)\n], ViewListComponent.prototype, \"getComponentClass\", void 0);\n__decorate([\n HostBinding(\"class.k-calendar-monthview\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ViewListComponent.prototype, \"getComponentMonthClass\", null);\n__decorate([\n HostBinding(\"class.k-calendar-yearview\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ViewListComponent.prototype, \"getComponentYearClass\", null);\n__decorate([\n HostBinding(\"class.k-calendar-decadeview\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ViewListComponent.prototype, \"getComponentDecadeClass\", null);\n__decorate([\n HostBinding(\"class.k-calendar-centuryview\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ViewListComponent.prototype, \"getComponentCenturyClass\", null);\nViewListComponent = __decorate([ __metadata(\"design:paramtypes\", [BusViewService,\n ChangeDetectorRef,\n IntlService,\n CalendarDOMService,\n Renderer2])\n], ViewListComponent);\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 */\nlet NavigationService = class 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 = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(BusViewService)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [BusViewService])\n], NavigationService);\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 */\nlet DisabledDatesService = class DisabledDatesService {\n /**\n * @hidden\n */\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 = function DisabledDatesService_Factory(t) { return new (t || DisabledDatesService)(); };\nDisabledDatesService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DisabledDatesService, factory: function (t) { return DisabledDatesService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet SelectionService = class 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 = function SelectionService_Factory(t) { return new (t || SelectionService)(ɵngcc0.ɵɵinject(BusViewService)); };\nSelectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SelectionService, factory: function (t) { return SelectionService.ɵfac(t); } });\nSelectionService = __decorate([ __metadata(\"design:paramtypes\", [BusViewService])\n], SelectionService);\n\nconst divideByMagnitude = (magnitude) => x => Math.floor(x / magnitude);\nconst powerByMagnitude = (magnitude) => x => x * magnitude;\n/**\n * @hidden\n */\nlet ScrollSyncService = class 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 = function ScrollSyncService_Factory(t) { return new (t || ScrollSyncService)(ɵngcc0.ɵɵinject(CalendarDOMService), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nScrollSyncService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ScrollSyncService, factory: function (t) { return ScrollSyncService.ɵfac(t); } });\nScrollSyncService = __decorate([ __metadata(\"design:paramtypes\", [CalendarDOMService, NgZone])\n], ScrollSyncService);\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 */\nlet CellTemplateDirective = class CellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nCellTemplateDirective.ɵfac = function CellTemplateDirective_Factory(t) { return new (t || CellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CellTemplateDirective, selectors: [[\"\", \"kendoCalendarCellTemplate\", \"\"]] });\nCellTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], CellTemplateDirective);\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 */\nlet MonthCellTemplateDirective = class MonthCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nMonthCellTemplateDirective.ɵfac = function MonthCellTemplateDirective_Factory(t) { return new (t || MonthCellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nMonthCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MonthCellTemplateDirective, selectors: [[\"\", \"kendoCalendarMonthCellTemplate\", \"\"]] });\nMonthCellTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], MonthCellTemplateDirective);\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 */\nlet YearCellTemplateDirective = class YearCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nYearCellTemplateDirective.ɵfac = function YearCellTemplateDirective_Factory(t) { return new (t || YearCellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nYearCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: YearCellTemplateDirective, selectors: [[\"\", \"kendoCalendarYearCellTemplate\", \"\"]] });\nYearCellTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], YearCellTemplateDirective);\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 */\nlet DecadeCellTemplateDirective = class DecadeCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDecadeCellTemplateDirective.ɵfac = function DecadeCellTemplateDirective_Factory(t) { return new (t || DecadeCellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nDecadeCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DecadeCellTemplateDirective, selectors: [[\"\", \"kendoCalendarDecadeCellTemplate\", \"\"]] });\nDecadeCellTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], DecadeCellTemplateDirective);\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 */\nlet CenturyCellTemplateDirective = class CenturyCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nCenturyCellTemplateDirective.ɵfac = function CenturyCellTemplateDirective_Factory(t) { return new (t || CenturyCellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCenturyCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CenturyCellTemplateDirective, selectors: [[\"\", \"kendoCalendarCenturyCellTemplate\", \"\"]] });\nCenturyCellTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], CenturyCellTemplateDirective);\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 */\nlet WeekNumberCellTemplateDirective = class WeekNumberCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nWeekNumberCellTemplateDirective.ɵfac = function WeekNumberCellTemplateDirective_Factory(t) { return new (t || WeekNumberCellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nWeekNumberCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WeekNumberCellTemplateDirective, selectors: [[\"\", \"kendoCalendarWeekNumberCellTemplate\", \"\"]] });\nWeekNumberCellTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], WeekNumberCellTemplateDirective);\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 */\nlet HeaderTitleTemplateDirective = class HeaderTitleTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nHeaderTitleTemplateDirective.ɵfac = function HeaderTitleTemplateDirective_Factory(t) { return new (t || HeaderTitleTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nHeaderTitleTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: HeaderTitleTemplateDirective, selectors: [[\"\", \"kendoCalendarHeaderTitleTemplate\", \"\"]] });\nHeaderTitleTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], HeaderTitleTemplateDirective);\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 */\nlet NavigationItemTemplateDirective = class NavigationItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNavigationItemTemplateDirective.ɵfac = function NavigationItemTemplateDirective_Factory(t) { return new (t || NavigationItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNavigationItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NavigationItemTemplateDirective, selectors: [[\"\", \"kendoCalendarNavigationItemTemplate\", \"\"]] });\nNavigationItemTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], NavigationItemTemplateDirective);\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}\nPickerService.ɵfac = function PickerService_Factory(t) { return new (t || PickerService)(); };\nPickerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PickerService, factory: PickerService.ɵfac });\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 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 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-min';\nconst MAX_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-max';\nconst VALUE_DOC_LINK = '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) //tslint:disable-line:no-use-before-declare\n};\n/**\n * @hidden\n */\nconst CALENDAR_RANGE_VALIDATORS = {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CalendarComponent) //tslint:disable-line:no-use-before-declare\n};\n/**\n * @hidden\n */\nconst KENDO_INPUT_PROVIDER = {\n provide: KendoInput,\n useExisting: forwardRef(() => CalendarComponent) //tslint:disable-line:no-use-before-declare\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 */\nlet CalendarComponent = class 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;\n this.onControlTouched = noop;\n this.onValidatorChange = noop;\n this.minValidateFn = noop;\n this.maxValidateFn = noop;\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 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 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 widgetRole() {\n return 'grid';\n }\n get calendarTabIndex() {\n return this.disabled || this.type === 'classic' ? undefined : this.tabIndex;\n }\n get ariaDisabled() {\n return 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;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop;\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.viewChangeSubscription.unsubscribe();\n this.domEvents.forEach(unbindCallback => unbindCallback());\n if (this.pickerService) {\n this.pickerService.calendar = null;\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 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 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.monthCellTemplate || this.cellTemplate;\n case CalendarViewEnum.year:\n return this.yearCellTemplate;\n case CalendarViewEnum.decade:\n return this.decadeCellTemplate;\n case CalendarViewEnum.century:\n return this.centuryCellTemplate;\n default:\n return null;\n }\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 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 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} and ${MAX_DOC_LINK}.`);\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} 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} 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 handleBlur(args) {\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 handleFocus() {\n this.isActive = true;\n if (!NgZone.isInAngularZone()) {\n this.detectChanges();\n }\n this.emitFocus();\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 // 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 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 if (!isPresent(this.element)) {\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 = function CalendarComponent_Factory(t) { return new (t || CalendarComponent)(ɵngcc0.ɵɵdirectiveInject(BusViewService), ɵngcc0.ɵɵdirectiveInject(CalendarDOMService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ScrollSyncService), ɵngcc0.ɵɵdirectiveInject(DisabledDatesService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(PickerService, 8)); };\nCalendarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarComponent, selectors: [[\"kendo-calendar\"]], contentQueries: function CalendarComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MonthCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, YearCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DecadeCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CenturyCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, WeekNumberCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTitleTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NavigationItemTemplateDirective, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.decadeCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.centuryCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.weekNumberTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTitleTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.navigationItemTemplate = _t.first);\n } }, viewQuery: function CalendarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NavigationComponent, 5);\n ɵngcc0.ɵɵviewQuery(ViewListComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.navigationView = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthView = _t.first);\n } }, hostVars: 8, hostBindings: function CalendarComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.widgetId)(\"role\", ctx.widgetRole)(\"tabindex\", ctx.calendarTabIndex)(\"aria-disabled\", ctx.ariaDisabled);\n ɵngcc0.ɵɵclassProp(\"k-week-number\", ctx.weekNumber)(\"k-state-disabled\", ctx.ariaDisabled);\n } }, inputs: { id: \"id\", rangeValidation: \"rangeValidation\", selection: \"selection\", disabled: \"disabled\", tabindex: \"tabindex\", navigation: \"navigation\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", focusedDate: \"focusedDate\", min: \"min\", max: \"max\", value: \"value\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", type: \"type\", 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\" }, exportAs: [\"kendo-calendar\"], features: [ɵngcc0.ɵɵProvidersFeature([\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 ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: function () { let i18n_4; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the today button in the calendar header\n * @meaning kendo.calendar.today\n */\n const MSG_EXTERNAL_4715594042078324085$$DIST_FESM2015_INDEX_JS_5 = goog.getMsg(\"Today\");\n i18n_4 = MSG_EXTERNAL_4715594042078324085$$DIST_FESM2015_INDEX_JS_5;\n }\n else {\n i18n_4 = $localize `:kendo.calendar.today|The label for the today button in the calendar header␟7a8b7961a5c754397897f39a824bdec621719040␟4715594042078324085:Today`;\n } let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the previous button in the Classic calendar\n * @meaning kendo.calendar.prevButtonTitle\n */\n const MSG_EXTERNAL_9114031309296786030$$DIST_FESM2015_INDEX_JS_7 = goog.getMsg(\"Navigate to previous view\");\n i18n_6 = MSG_EXTERNAL_9114031309296786030$$DIST_FESM2015_INDEX_JS_7;\n }\n else {\n i18n_6 = $localize `:kendo.calendar.prevButtonTitle|The title of the previous button in the Classic calendar␟031715cd6a995d5dd1f62365cfe1b9e6226ca185␟9114031309296786030:Navigate to previous view`;\n } let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the next button in the Classic calendar\n * @meaning kendo.calendar.nextButtonTitle\n */\n const MSG_EXTERNAL_7248948899360601102$$DIST_FESM2015_INDEX_JS_9 = goog.getMsg(\"Navigate to next view\");\n i18n_8 = MSG_EXTERNAL_7248948899360601102$$DIST_FESM2015_INDEX_JS_9;\n }\n else {\n i18n_8 = $localize `:kendo.calendar.nextButtonTitle|The title of the next button in the Classic calendar␟cd8c0952c72306cccf0973c8fd1957ef9da1f569␟7248948899360601102:Navigate to next view`;\n } return [[\"kendoCalendarLocalizedMessages\", \"\", \"today\", i18n_4, \"prevButtonTitle\", i18n_6, \"nextButtonTitle\", i18n_8], [4, \"ngIf\"], [3, \"activeView\", \"focusedDate\", \"min\", \"max\", \"templateRef\", \"valueChange\", \"pageChange\", 4, \"ngIf\"], [3, \"activeView\", \"isActive\", \"cellTemplateRef\", \"headerTitleTemplateRef\", \"weekNumberTemplateRef\", \"cellUID\", \"min\", \"max\", \"focusedDate\", \"weekNumber\", \"selectedDates\", \"todayButtonClick\", \"cellClick\", \"weekNumberCellClick\", \"activeDateChange\", \"pageChange\"], [3, \"resize\"], [3, \"activeView\", \"focusedDate\", \"min\", \"max\", \"templateRef\", \"valueChange\", \"pageChange\"], [3, \"views\", \"min\", \"max\", \"isActive\", \"activeView\", \"bottomView\", \"topView\", \"weekNumber\", \"animateNavigation\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"headerTitleTemplate\", \"weekNumberTemplate\", \"focusedDate\", \"selection\", \"value\", \"disabledDates\", \"activeViewChange\", \"navigate\", \"valueChange\"], [\"multiviewcalendar\", \"\"], [3, \"today\", \"prevButtonTitle\", \"nextButtonTitle\"]]; }, template: function CalendarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵtemplate(1, CalendarComponent_ng_container_1_Template, 4, 12, \"ng-container\", 1);\n ɵngcc0.ɵɵtemplate(2, CalendarComponent_ng_container_2_Template, 4, 23, \"ng-container\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.type === \"infinite\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.type === \"classic\");\n } }, directives: function () { return [CalendarLocalizedMessagesDirective, ɵngcc2.NgIf, NavigationComponent, ViewListComponent, ɵngcc3.ResizeSensorComponent, MultiViewCalendarComponent, MultiViewCalendarCustomMessagesComponent]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], CalendarComponent.prototype, \"focusedDate\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], CalendarComponent.prototype, \"min\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], CalendarComponent.prototype, \"max\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarComponent.prototype, \"rangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarComponent.prototype, \"selection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], CalendarComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], CalendarComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], CalendarComponent.prototype, \"disabledDates\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarComponent.prototype, \"navigation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarComponent.prototype, \"bottomView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarComponent.prototype, \"topView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], CalendarComponent.prototype, \"type\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarComponent.prototype, \"animateNavigation\", void 0);\n__decorate([\n Input(),\n HostBinding('class.k-week-number'),\n __metadata(\"design:type\", Boolean)\n], CalendarComponent.prototype, \"weekNumber\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarComponent.prototype, \"activeViewChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarComponent.prototype, \"navigate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarComponent.prototype, \"activeViewDateChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ContentChild(CellTemplateDirective, { static: true }),\n __metadata(\"design:type\", CellTemplateDirective)\n], CalendarComponent.prototype, \"cellTemplate\", void 0);\n__decorate([\n Input('cellTemplate'),\n __metadata(\"design:type\", CellTemplateDirective),\n __metadata(\"design:paramtypes\", [CellTemplateDirective])\n], CalendarComponent.prototype, \"cellTemplateRef\", null);\n__decorate([\n ContentChild(MonthCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", MonthCellTemplateDirective)\n], CalendarComponent.prototype, \"monthCellTemplate\", void 0);\n__decorate([\n Input('monthCellTemplate'),\n __metadata(\"design:type\", MonthCellTemplateDirective),\n __metadata(\"design:paramtypes\", [MonthCellTemplateDirective])\n], CalendarComponent.prototype, \"monthCellTemplateRef\", null);\n__decorate([\n ContentChild(YearCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", YearCellTemplateDirective)\n], CalendarComponent.prototype, \"yearCellTemplate\", void 0);\n__decorate([\n Input('yearCellTemplate'),\n __metadata(\"design:type\", YearCellTemplateDirective),\n __metadata(\"design:paramtypes\", [YearCellTemplateDirective])\n], CalendarComponent.prototype, \"yearCellTemplateRef\", null);\n__decorate([\n ContentChild(DecadeCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", DecadeCellTemplateDirective)\n], CalendarComponent.prototype, \"decadeCellTemplate\", void 0);\n__decorate([\n Input('decadeCellTemplate'),\n __metadata(\"design:type\", DecadeCellTemplateDirective),\n __metadata(\"design:paramtypes\", [DecadeCellTemplateDirective])\n], CalendarComponent.prototype, \"decadeCellTemplateRef\", null);\n__decorate([\n ContentChild(CenturyCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", CenturyCellTemplateDirective)\n], CalendarComponent.prototype, \"centuryCellTemplate\", void 0);\n__decorate([\n Input('centuryCellTemplate'),\n __metadata(\"design:type\", CenturyCellTemplateDirective),\n __metadata(\"design:paramtypes\", [CenturyCellTemplateDirective])\n], CalendarComponent.prototype, \"centuryCellTemplateRef\", null);\n__decorate([\n ContentChild(WeekNumberCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", WeekNumberCellTemplateDirective)\n], CalendarComponent.prototype, \"weekNumberTemplate\", void 0);\n__decorate([\n Input('weekNumberTemplate'),\n __metadata(\"design:type\", WeekNumberCellTemplateDirective),\n __metadata(\"design:paramtypes\", [WeekNumberCellTemplateDirective])\n], CalendarComponent.prototype, \"weekNumberTemplateRef\", null);\n__decorate([\n ContentChild(HeaderTitleTemplateDirective, { static: true }),\n __metadata(\"design:type\", HeaderTitleTemplateDirective)\n], CalendarComponent.prototype, \"headerTitleTemplate\", void 0);\n__decorate([\n Input('headerTitleTemplate'),\n __metadata(\"design:type\", HeaderTitleTemplateDirective),\n __metadata(\"design:paramtypes\", [HeaderTitleTemplateDirective])\n], CalendarComponent.prototype, \"headerTitleTemplateRef\", null);\n__decorate([\n ContentChild(NavigationItemTemplateDirective, { static: true }),\n __metadata(\"design:type\", NavigationItemTemplateDirective)\n], CalendarComponent.prototype, \"navigationItemTemplate\", void 0);\n__decorate([\n Input('navigationItemTemplate'),\n __metadata(\"design:type\", NavigationItemTemplateDirective),\n __metadata(\"design:paramtypes\", [NavigationItemTemplateDirective])\n], CalendarComponent.prototype, \"navigationItemTemplateRef\", null);\n__decorate([\n ViewChild(NavigationComponent, { static: false }),\n __metadata(\"design:type\", NavigationComponent)\n], CalendarComponent.prototype, \"navigationView\", void 0);\n__decorate([\n ViewChild(ViewListComponent, { static: false }),\n __metadata(\"design:type\", ViewListComponent)\n], CalendarComponent.prototype, \"monthView\", void 0);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], CalendarComponent.prototype, \"widgetId\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], CalendarComponent.prototype, \"widgetRole\", null);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], CalendarComponent.prototype, \"calendarTabIndex\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CalendarComponent.prototype, \"ariaDisabled\", null);\nCalendarComponent = __decorate([ __param(12, Optional()),\n __metadata(\"design:paramtypes\", [BusViewService,\n CalendarDOMService,\n ElementRef,\n NavigationService,\n Renderer2,\n ChangeDetectorRef,\n NgZone,\n Injector,\n ScrollSyncService,\n DisabledDatesService,\n LocalizationService,\n SelectionService,\n PickerService])\n], CalendarComponent);\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\nvar DateInputComponent_1;\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$1 = '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 = 68;\nconst PREVIOUS_CENTURY_BASE = 1900;\nconst CURRENT_CENTURY_BASE = 2000;\nconst DEFAULT_FORMAT = '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) {\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 */\nlet DateInputComponent = DateInputComponent_1 = class DateInputComponent {\n constructor(cdr, intl, renderer, element, ngZone, injector, localization, pickerService) {\n this.cdr = cdr;\n this.intl = intl;\n this.renderer = renderer;\n this.element = element;\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;\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;\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(); //tslint:disable-line:no-output-rename\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(); //tslint:disable-line:no-output-rename\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;\n this.maxValidator = noop;\n this.incompleteValidator = noop;\n this._value = null;\n this._active = false;\n this.kendoDate = null;\n this.paste = false;\n this.domEvents = [];\n this.onControlChange = noop;\n this.onControlTouched = noop;\n this.onValidatorChange = noop;\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 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.wrap) {\n return;\n }\n if (!isPresent(this.pickerService)) {\n const element = this.wrap.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-state-focused');\n }\n else {\n this.renderer.removeClass(element, 'k-state-focused');\n }\n }\n }\n get inputFormat() {\n if (!this.format) {\n return DEFAULT_FORMAT;\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;\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.element.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;\n this.maxValidator = this.rangeValidation ? maxValidator(this.max) : noop;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop;\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.element) {\n this.renderer.removeAttribute(this.element.nativeElement, 'tabindex');\n this.ngZone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\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$$1, part) => {\n map$$1[part.pattern[0]] = part.type;\n return map$$1;\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$1} 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.element.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 /* tslint:disable-next-line:deprecation */\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};\nDateInputComponent.ɵfac = function DateInputComponent_Factory(t) { return new (t || DateInputComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService), ɵngcc0.ɵɵdirectiveInject(PickerService, 8)); };\nDateInputComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateInputComponent, selectors: [[\"kendo-dateinput\"]], viewQuery: function DateInputComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c10, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dateInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrap = _t.first);\n } }, hostVars: 6, hostBindings: function DateInputComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.wrapperClass)(\"k-dateinput\", ctx.wrapperClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", tabindex: \"tabindex\", role: \"role\", ariaReadOnly: \"ariaReadOnly\", format: \"format\", placeholder: \"placeholder\", steps: \"steps\", rangeValidation: \"rangeValidation\", autoCorrect: \"autoCorrect\", incompleteDateValidation: \"incompleteDateValidation\", twoDigitYearMax: \"twoDigitYearMax\", spinners: \"spinners\", isPopupOpen: \"isPopupOpen\", hasPopup: \"hasPopup\", tabIndex: \"tabIndex\", value: \"value\", formatPlaceholder: \"formatPlaceholder\", max: \"max\", min: \"min\" }, outputs: { valueChange: \"valueChange\", valueUpdate: \"valueUpdate\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendo-dateinput\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent_1), multi: true },\n { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },\n { provide: KendoInput, useExisting: forwardRef(() => DateInputComponent_1) },\n LocalizationService\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 6, vars: 21, consts: function () { let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the **Increment** button in the DateInput\n * @meaning kendo.dateinput.increment\n */\n const MSG_EXTERNAL_589112377451589685$$DIST_FESM2015_INDEX_JS_13 = goog.getMsg(\"Increase value\");\n i18n_12 = MSG_EXTERNAL_589112377451589685$$DIST_FESM2015_INDEX_JS_13;\n }\n else {\n i18n_12 = $localize `:kendo.dateinput.increment|The label for the **Increment** button in the DateInput␟a55944f9de69e7cc86b91200fe96f980a947d704␟589112377451589685:Increase value`;\n } let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the **Decrement** button in the DateInput\n * @meaning kendo.dateinput.decrement\n */\n const MSG_EXTERNAL_6980524091606682769$$DIST_FESM2015_INDEX_JS_15 = goog.getMsg(\"Decrease value\");\n i18n_14 = MSG_EXTERNAL_6980524091606682769$$DIST_FESM2015_INDEX_JS_15;\n }\n else {\n i18n_14 = $localize `:kendo.dateinput.decrement|The label for the **Decrement** button in the DateInput␟0eded761107e6dad120997006a7f915bade9b15c␟6980524091606682769:Decrease value`;\n } return [[\"kendoDateInputLocalizedMessages\", \"\", \"increment\", i18n_12, \"decrement\", i18n_14], [1, \"k-dateinput-wrap\"], [\"wrap\", \"\"], [\"autocomplete\", \"off\", \"autocorrect\", \"off\", \"autocapitalize\", \"off\", \"spellcheck\", \"false\", 1, \"k-input\", 3, \"id\", \"title\", \"tabindex\", \"disabled\", \"readonly\", \"placeholder\", \"kendoEventsOutsideAngular\", \"scope\"], [\"dateInput\", \"\"], [\"class\", \"k-select\", 3, \"mousedown\", 4, \"ngIf\"], [1, \"k-select\", 3, \"mousedown\"], [1, \"k-link\", \"k-link-increase\", 3, \"title\", \"mousedown\", \"mouseleave\", \"click\"], [1, \"k-icon\", \"k-i-arrow-n\"], [1, \"k-link\", \"k-link-decrease\", 3, \"title\", \"click\", \"mousedown\", \"mouseleave\"], [1, \"k-icon\", \"k-i-arrow-s\"]]; }, template: function DateInputComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelement(3, \"input\", 3, 4);\n ɵngcc0.ɵɵtemplate(5, DateInputComponent_span_5_Template, 5, 8, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"title\", ctx.title)(\"tabindex\", ctx.tabindex)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"placeholder\", ctx.placeholder)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction7(13, _c16, ctx.handleClick, ctx.handleFocus, ctx.handleMousedown, ctx.handleMousedown, ctx.handleDragAndDrop, ctx.handleDragAndDrop, ctx.handleBlur))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"aria-readonly\", ctx.ariaReadOnly)(\"aria-expanded\", ctx.isPopupOpen)(\"aria-haspopup\", ctx.hasPopup);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n } }, directives: function () { return [DateInputLocalizedMessagesDirective, ɵngcc3.EventsOutsideAngularDirective, ɵngcc2.NgIf]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateInputComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateInputComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DateInputComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateInputComponent.prototype, \"role\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"ariaReadOnly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DateInputComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateInputComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateInputComponent.prototype, \"formatPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateInputComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateInputComponent.prototype, \"steps\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DateInputComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DateInputComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"rangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"autoCorrect\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"incompleteDateValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DateInputComponent.prototype, \"twoDigitYearMax\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], DateInputComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"spinners\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"isPopupOpen\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateInputComponent.prototype, \"hasPopup\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateInputComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateInputComponent.prototype, \"valueUpdate\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DateInputComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DateInputComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ViewChild('dateInput', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], DateInputComponent.prototype, \"dateInput\", void 0);\n__decorate([\n ViewChild('wrap', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], DateInputComponent.prototype, \"wrap\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-dateinput'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DateInputComponent.prototype, \"wrapperClass\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DateInputComponent.prototype, \"disabledClass\", null);\nDateInputComponent = DateInputComponent_1 = __decorate([ __param(7, Optional()),\n __metadata(\"design:paramtypes\", [ChangeDetectorRef,\n IntlService,\n Renderer2,\n ElementRef,\n NgZone,\n Injector,\n LocalizationService,\n PickerService])\n], DateInputComponent);\n\n/**\n * A preventable event instance which is triggered by the `open` and `close` events.\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 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/* tslint:disable:max-line-length */\nvar DatePickerComponent_1;\nconst MIN_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-min';\nconst MAX_DOC_LINK$2 = '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$1 = '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 */\nlet DatePickerComponent = DatePickerComponent_1 = class DatePickerComponent {\n constructor(zone, localization, cdr, popupService, element, renderer, injector, pickerService, disabledDatesService, touchEnabled$$1) {\n this.zone = zone;\n this.localization = localization;\n this.cdr = cdr;\n this.popupService = popupService;\n this.element = element;\n this.renderer = renderer;\n this.injector = injector;\n this.pickerService = pickerService;\n this.disabledDatesService = disabledDatesService;\n this.touchEnabled = touchEnabled$$1;\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 */\n this.min = cloneDate(MIN_DATE);\n /**\n * Specifies the biggest valid date\n * ([see example]({% slug dateranges_datepicker %})).\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$1;\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(); //tslint:disable-line:no-output-rename\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(); //tslint:disable-line:no-output-rename\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;\n this.onControlTouched = noop;\n this.onValidatorChange = noop;\n this.minValidateFn = noop;\n this.maxValidateFn = noop;\n this.disabledDatesValidateFn = noop;\n this.incompleteValidator = noop;\n this.resolvedPromise = Promise.resolve(null);\n this.domEvents = [];\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 * @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-state-focused');\n }\n else {\n this.renderer.removeClass(element, 'k-state-focused');\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.element) {\n this.renderer.removeAttribute(this.element.nativeElement, 'tabindex');\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\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;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop;\n this.disabledDatesValidateFn = this.disabledDatesValidation ? disabledDatesValidator(this.disabledDatesService.isDateDisabled) : noop;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop;\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'](); //tslint:disable-line:no-string-literal\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, keyCode } = 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) {\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$2} and ${MAX_DOC_LINK$2}.`);\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.element.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};\nDatePickerComponent.ɵfac = function DatePickerComponent_Factory(t) { return new (t || DatePickerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(PickerService), ɵngcc0.ɵɵdirectiveInject(DisabledDatesService), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nDatePickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DatePickerComponent, selectors: [[\"kendo-datepicker\"]], contentQueries: function DatePickerComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MonthCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, YearCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DecadeCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CenturyCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, WeekNumberCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTitleTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NavigationItemTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.decadeCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.centuryCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.weekNumberTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTitleTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.navigationItemTemplate = _t.first);\n } }, viewQuery: function DatePickerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c17, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c18, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n } }, hostVars: 6, hostBindings: function DatePickerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.wrapperClasses)(\"k-datepicker\", ctx.wrapperClasses)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", calendarType: \"calendarType\", animateCalendarNavigation: \"animateCalendarNavigation\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", navigation: \"navigation\", min: \"min\", max: \"max\", incompleteDateValidation: \"incompleteDateValidation\", focusedDate: \"focusedDate\", format: \"format\", twoDigitYearMax: \"twoDigitYearMax\", placeholder: \"placeholder\", tabindex: \"tabindex\", title: \"title\", rangeValidation: \"rangeValidation\", disabledDatesValidation: \"disabledDatesValidation\", 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\"], popupSettings: \"popupSettings\", value: \"value\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", formatPlaceholder: \"formatPlaceholder\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, exportAs: [\"kendo-datepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent_1) },\n LocalizationService,\n PickerService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.datepicker'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 11, vars: 26, consts: function () { let i18n_20; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the today button in the calendar header\n * @meaning kendo.datepicker.today\n */\n const MSG_EXTERNAL_5799873230514803381$$DIST_FESM2015_INDEX_JS_21 = goog.getMsg(\"Today\");\n i18n_20 = MSG_EXTERNAL_5799873230514803381$$DIST_FESM2015_INDEX_JS_21;\n }\n else {\n i18n_20 = $localize `:kendo.datepicker.today|The label for the today button in the calendar header␟c8af34428eb25c8f689f0c19a9300394b07b5be3␟5799873230514803381:Today`;\n } let i18n_22; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the toggle button in the datepicker component\n * @meaning kendo.datepicker.toggle\n */\n const MSG_EXTERNAL_4817467473728423164$$DIST_FESM2015_INDEX_JS_23 = goog.getMsg(\"Toggle calendar\");\n i18n_22 = MSG_EXTERNAL_4817467473728423164$$DIST_FESM2015_INDEX_JS_23;\n }\n else {\n i18n_22 = $localize `:kendo.datepicker.toggle|The title of the toggle button in the datepicker component␟f6c28c2d80dbe993c4b33f4dc4010364f41cc2ae␟4817467473728423164:Toggle calendar`;\n } let i18n_24; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the previous button in the Classic calendar\n * @meaning kendo.datepicker.prevButtonTitle\n */\n const MSG_EXTERNAL_1741914107549506055$$DIST_FESM2015_INDEX_JS_25 = goog.getMsg(\"Navigate to previous view\");\n i18n_24 = MSG_EXTERNAL_1741914107549506055$$DIST_FESM2015_INDEX_JS_25;\n }\n else {\n i18n_24 = $localize `:kendo.datepicker.prevButtonTitle|The title of the previous button in the Classic calendar␟b24bedd31916ff8439cd7e3c46cbdabea3409dd1␟1741914107549506055:Navigate to previous view`;\n } let i18n_26; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the next button in the Classic calendar\n * @meaning kendo.datepicker.nextButtonTitle\n */\n const MSG_EXTERNAL_3363484587807059211$$DIST_FESM2015_INDEX_JS_27 = goog.getMsg(\"Navigate to next view\");\n i18n_26 = MSG_EXTERNAL_3363484587807059211$$DIST_FESM2015_INDEX_JS_27;\n }\n else {\n i18n_26 = $localize `:kendo.datepicker.nextButtonTitle|The title of the next button in the Classic calendar␟2f0e2a91beb7149035e42bd0d6663e8903dc3852␟3363484587807059211:Navigate to next view`;\n } return [[\"kendoDatePickerLocalizedMessages\", \"\", \"today\", i18n_20, \"toggle\", i18n_22, \"prevButtonTitle\", i18n_24, \"nextButtonTitle\", i18n_26], [1, \"k-picker-wrap\"], [\"wrapper\", \"\"], [3, \"role\", \"focusableId\", \"hasPopup\", \"isPopupOpen\", \"disabled\", \"readonly\", \"ariaReadOnly\", \"tabindex\", \"title\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"incompleteDateValidation\", \"value\", \"valueChange\"], [\"input\", \"\"], [\"role\", \"button\", 1, \"k-select\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [1, \"k-icon\", \"k-i-calendar\"], [\"container\", \"\"], [\"popupTemplate\", \"\"], [3, \"type\", \"min\", \"max\", \"navigation\", \"animateNavigation\", \"activeView\", \"bottomView\", \"topView\", \"weekNumber\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusedDate\", \"value\", \"kendoEventsOutsideAngular\", \"scope\", \"disabledDates\", \"valueChange\"], [\"calendar\", \"\"], [3, \"today\", \"prevButtonTitle\", \"nextButtonTitle\"]]; }, template: function DatePickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-dateinput\", 3, 4);\n ɵngcc0.ɵɵlistener(\"valueChange\", function DatePickerComponent_Template_kendo_dateinput_valueChange_3_listener($event) { return ctx.handleInputChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"span\", 5);\n ɵngcc0.ɵɵelement(6, \"span\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainer(7, null, 7);\n ɵngcc0.ɵɵtemplate(9, DatePickerComponent_ng_template_9_Template, 4, 27, \"ng-template\", null, 8, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"role\", ctx.inputRole)(\"focusableId\", ctx.focusableId)(\"hasPopup\", true)(\"isPopupOpen\", ctx.show)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly || ctx.readOnlyInput)(\"ariaReadOnly\", ctx.readonly)(\"tabindex\", ctx.tabindex)(\"title\", ctx.title)(\"format\", ctx.format)(\"twoDigitYearMax\", ctx.twoDigitYearMax)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"placeholder\", ctx.placeholder)(\"min\", ctx.min)(\"max\", ctx.max)(\"incompleteDateValidation\", ctx.incompleteDateValidation)(\"value\", ctx.value);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(23, _c29, ctx.handleIconClick, ctx.handleMousedown))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"title\", ctx.localization.get(\"toggle\"))(\"aria-label\", ctx.localization.get(\"toggle\"));\n } }, directives: function () { return [DatePickerLocalizedMessagesDirective, DateInputComponent, ɵngcc3.EventsOutsideAngularDirective, CalendarComponent, CalendarCustomMessagesComponent]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], DatePickerComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], DatePickerComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], DatePickerComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ContentChild(CellTemplateDirective, { static: false }),\n __metadata(\"design:type\", CellTemplateDirective)\n], DatePickerComponent.prototype, \"cellTemplate\", void 0);\n__decorate([\n Input('cellTemplate'),\n __metadata(\"design:type\", CellTemplateDirective),\n __metadata(\"design:paramtypes\", [CellTemplateDirective])\n], DatePickerComponent.prototype, \"cellTemplateRef\", null);\n__decorate([\n ContentChild(MonthCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", MonthCellTemplateDirective)\n], DatePickerComponent.prototype, \"monthCellTemplate\", void 0);\n__decorate([\n Input('monthCellTemplate'),\n __metadata(\"design:type\", MonthCellTemplateDirective),\n __metadata(\"design:paramtypes\", [MonthCellTemplateDirective])\n], DatePickerComponent.prototype, \"monthCellTemplateRef\", null);\n__decorate([\n ContentChild(YearCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", YearCellTemplateDirective)\n], DatePickerComponent.prototype, \"yearCellTemplate\", void 0);\n__decorate([\n Input('yearCellTemplate'),\n __metadata(\"design:type\", YearCellTemplateDirective),\n __metadata(\"design:paramtypes\", [YearCellTemplateDirective])\n], DatePickerComponent.prototype, \"yearCellTemplateRef\", null);\n__decorate([\n ContentChild(DecadeCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", DecadeCellTemplateDirective)\n], DatePickerComponent.prototype, \"decadeCellTemplate\", void 0);\n__decorate([\n Input('decadeCellTemplate'),\n __metadata(\"design:type\", DecadeCellTemplateDirective),\n __metadata(\"design:paramtypes\", [DecadeCellTemplateDirective])\n], DatePickerComponent.prototype, \"decadeCellTemplateRef\", null);\n__decorate([\n ContentChild(CenturyCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", CenturyCellTemplateDirective)\n], DatePickerComponent.prototype, \"centuryCellTemplate\", void 0);\n__decorate([\n Input('centuryCellTemplate'),\n __metadata(\"design:type\", CenturyCellTemplateDirective),\n __metadata(\"design:paramtypes\", [CenturyCellTemplateDirective])\n], DatePickerComponent.prototype, \"centuryCellTemplateRef\", null);\n__decorate([\n ContentChild(WeekNumberCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", WeekNumberCellTemplateDirective)\n], DatePickerComponent.prototype, \"weekNumberTemplate\", void 0);\n__decorate([\n Input('weekNumberTemplate'),\n __metadata(\"design:type\", WeekNumberCellTemplateDirective),\n __metadata(\"design:paramtypes\", [WeekNumberCellTemplateDirective])\n], DatePickerComponent.prototype, \"weekNumberTemplateRef\", null);\n__decorate([\n ContentChild(HeaderTitleTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTitleTemplateDirective)\n], DatePickerComponent.prototype, \"headerTitleTemplate\", void 0);\n__decorate([\n Input('headerTitleTemplate'),\n __metadata(\"design:type\", HeaderTitleTemplateDirective),\n __metadata(\"design:paramtypes\", [HeaderTitleTemplateDirective])\n], DatePickerComponent.prototype, \"headerTitleTemplateRef\", null);\n__decorate([\n ContentChild(NavigationItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", NavigationItemTemplateDirective)\n], DatePickerComponent.prototype, \"navigationItemTemplate\", void 0);\n__decorate([\n Input('navigationItemTemplate'),\n __metadata(\"design:type\", NavigationItemTemplateDirective),\n __metadata(\"design:paramtypes\", [NavigationItemTemplateDirective])\n], DatePickerComponent.prototype, \"navigationItemTemplateRef\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerComponent.prototype, \"bottomView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerComponent.prototype, \"topView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerComponent.prototype, \"calendarType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"animateCalendarNavigation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"readOnlyInput\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DatePickerComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"navigation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DatePickerComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DatePickerComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"incompleteDateValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DatePickerComponent.prototype, \"focusedDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], DatePickerComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DatePickerComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DatePickerComponent.prototype, \"twoDigitYearMax\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DatePickerComponent.prototype, \"formatPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DatePickerComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DatePickerComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DatePickerComponent.prototype, \"disabledDates\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"rangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"disabledDatesValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"weekNumber\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DatePickerComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DatePickerComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DatePickerComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DatePickerComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DatePickerComponent.prototype, \"close\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-datepicker'),\n __metadata(\"design:type\", Boolean)\n], DatePickerComponent.prototype, \"wrapperClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DatePickerComponent.prototype, \"disabledClass\", null);\nDatePickerComponent = DatePickerComponent_1 = __decorate([ __param(9, Optional()), __param(9, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [NgZone,\n LocalizationService,\n ChangeDetectorRef,\n PopupService,\n ElementRef,\n Renderer2,\n Injector,\n PickerService,\n DisabledDatesService, Boolean])\n], DatePickerComponent);\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\nvar TimePickerComponent_1;\nconst VALUE_DOC_LINK$3 = '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 */\nlet TimePickerComponent = TimePickerComponent_1 = class TimePickerComponent {\n constructor(zone, localization, cdr, popupService, element, renderer, injector, pickerService, intl, touchEnabled$$1) {\n this.zone = zone;\n this.localization = localization;\n this.cdr = cdr;\n this.popupService = popupService;\n this.element = element;\n this.renderer = renderer;\n this.injector = injector;\n this.pickerService = pickerService;\n this.intl = intl;\n this.touchEnabled = touchEnabled$$1;\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(); //tslint:disable-line:no-output-rename\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(); //tslint:disable-line:no-output-rename\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;\n this.onControlTouched = noop;\n this.onValidatorChange = noop;\n this.resolvedPromise = Promise.resolve(null);\n this.timeRangeValidateFn = noop;\n this.incompleteValidator = noop;\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 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 * @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-state-focused');\n }\n else {\n this.renderer.removeClass(element, 'k-state-focused');\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.element) {\n this.renderer.removeAttribute(this.element.nativeElement, 'tabindex');\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\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;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop;\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'](); //tslint:disable-line:no-string-literal\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$3} 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.element.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};\nTimePickerComponent.ɵfac = function TimePickerComponent_Factory(t) { return new (t || TimePickerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(PickerService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nTimePickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TimePickerComponent, selectors: [[\"kendo-timepicker\"]], viewQuery: function TimePickerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c17, 5, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c18, 5);\n ɵngcc0.ɵɵviewQuery(_c19, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n } }, hostVars: 6, hostBindings: function TimePickerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.wrapperClasses)(\"k-timepicker\", ctx.wrapperClasses)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", format: \"format\", placeholder: \"placeholder\", incompleteDateValidation: \"incompleteDateValidation\", cancelButton: \"cancelButton\", nowButton: \"nowButton\", tabindex: \"tabindex\", title: \"title\", rangeValidation: \"rangeValidation\", min: \"min\", max: \"max\", steps: \"steps\", popupSettings: \"popupSettings\", tabIndex: \"tabIndex\", value: \"value\", formatPlaceholder: \"formatPlaceholder\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, exportAs: [\"kendo-timepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent_1) },\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timepicker'\n },\n PickerService\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 11, vars: 26, consts: function () { let i18n_30; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Accept button text in the timepicker component\n * @meaning kendo.timepicker.accept\n */\n const MSG_EXTERNAL_7519663530416240229$$DIST_FESM2015_INDEX_JS_31 = goog.getMsg(\"Set\");\n i18n_30 = MSG_EXTERNAL_7519663530416240229$$DIST_FESM2015_INDEX_JS_31;\n }\n else {\n i18n_30 = $localize `:kendo.timepicker.accept|The Accept button text in the timepicker component␟4c3bf42192220c7611c09ece1c5de14855139dd0␟7519663530416240229:Set`;\n } let i18n_32; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Accept button in the timepicker component\n * @meaning kendo.timepicker.acceptLabel\n */\n const MSG_EXTERNAL_4355879331538595758$$DIST_FESM2015_INDEX_JS_33 = goog.getMsg(\"Set time\");\n i18n_32 = MSG_EXTERNAL_4355879331538595758$$DIST_FESM2015_INDEX_JS_33;\n }\n else {\n i18n_32 = $localize `:kendo.timepicker.acceptLabel|The label for the Accept button in the timepicker component␟93c2a9c3aa49f56e452c0aecbaabe3bb33fa4222␟4355879331538595758:Set time`;\n } let i18n_34; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Cancel button text in the timepicker component\n * @meaning kendo.timepicker.cancel\n */\n const MSG_EXTERNAL_1086687567255473060$$DIST_FESM2015_INDEX_JS_35 = goog.getMsg(\"Cancel\");\n i18n_34 = MSG_EXTERNAL_1086687567255473060$$DIST_FESM2015_INDEX_JS_35;\n }\n else {\n i18n_34 = $localize `:kendo.timepicker.cancel|The Cancel button text in the timepicker component␟132eefca16bd41d489b4647724b91e93793603aa␟1086687567255473060:Cancel`;\n } let i18n_36; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Cancel button in the timepicker component\n * @meaning kendo.timepicker.cancelLabel\n */\n const MSG_EXTERNAL_83621966901491941$$DIST_FESM2015_INDEX_JS_37 = goog.getMsg(\"Cancel changes\");\n i18n_36 = MSG_EXTERNAL_83621966901491941$$DIST_FESM2015_INDEX_JS_37;\n }\n else {\n i18n_36 = $localize `:kendo.timepicker.cancelLabel|The label for the Cancel button in the timepicker component␟2cf6f4ca4470810944b4016c9b6f87943d3390ab␟83621966901491941:Cancel changes`;\n } let i18n_38; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Now button text in the timepicker component\n * @meaning kendo.timepicker.now\n */\n const MSG_EXTERNAL_5912507758515138116$$DIST_FESM2015_INDEX_JS_39 = goog.getMsg(\"Now\");\n i18n_38 = MSG_EXTERNAL_5912507758515138116$$DIST_FESM2015_INDEX_JS_39;\n }\n else {\n i18n_38 = $localize `:kendo.timepicker.now|The Now button text in the timepicker component␟bbc99bb74ae75a503bd813aad0c7253d3553e923␟5912507758515138116:Now`;\n } let i18n_40; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Now button in the timepicker component\n * @meaning kendo.timepicker.nowLabel\n */\n const MSG_EXTERNAL_371982627910576599$$DIST_FESM2015_INDEX_JS_41 = goog.getMsg(\"Select now\");\n i18n_40 = MSG_EXTERNAL_371982627910576599$$DIST_FESM2015_INDEX_JS_41;\n }\n else {\n i18n_40 = $localize `:kendo.timepicker.nowLabel|The label for the Now button in the timepicker component␟df1a696f318275aa934e27850920889d494c2740␟371982627910576599:Select now`;\n } let i18n_42; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the toggle button in the timepicker component\n * @meaning kendo.timepicker.toggle\n */\n const MSG_EXTERNAL_6938407659294495526$$DIST_FESM2015_INDEX_JS_43 = goog.getMsg(\"Toggle time list\");\n i18n_42 = MSG_EXTERNAL_6938407659294495526$$DIST_FESM2015_INDEX_JS_43;\n }\n else {\n i18n_42 = $localize `:kendo.timepicker.toggle|The label for the toggle button in the timepicker component␟f2c196786ed2d3ecb2369750c36aac9a4053fb30␟6938407659294495526:Toggle time list`;\n } return [[\"kendoTimePickerLocalizedMessages\", \"\", \"accept\", i18n_30, \"acceptLabel\", i18n_32, \"cancel\", i18n_34, \"cancelLabel\", i18n_36, \"now\", i18n_38, \"nowLabel\", i18n_40, \"toggle\", i18n_42], [1, \"k-picker-wrap\"], [\"wrapper\", \"\"], [3, \"focusableId\", \"hasPopup\", \"isPopupOpen\", \"disabled\", \"readonly\", \"role\", \"ariaReadOnly\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"incompleteDateValidation\", \"steps\", \"tabindex\", \"title\", \"value\", \"valueChange\"], [\"input\", \"\"], [\"role\", \"button\", 1, \"k-select\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [1, \"k-icon\", \"k-i-clock\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [3, \"cancelButton\", \"nowButton\", \"format\", \"min\", \"max\", \"steps\", \"value\", \"kendoEventsOutsideAngular\", \"scope\", \"valueChange\", \"valueReject\"], [\"timeSelector\", \"\"], [3, \"acceptLabel\", \"accept\", \"cancelLabel\", \"cancel\", \"nowLabel\", \"now\"]]; }, template: function TimePickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-dateinput\", 3, 4);\n ɵngcc0.ɵɵlistener(\"valueChange\", function TimePickerComponent_Template_kendo_dateinput_valueChange_3_listener($event) { return ctx.handleInputChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"span\", 5);\n ɵngcc0.ɵɵelement(6, \"span\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, TimePickerComponent_ng_template_7_Template, 3, 18, \"ng-template\", null, 7, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainer(9, null, 8);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"focusableId\", ctx.focusableId)(\"hasPopup\", true)(\"isPopupOpen\", ctx.show)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly || ctx.readOnlyInput)(\"role\", ctx.inputRole)(\"ariaReadOnly\", ctx.readonly)(\"format\", ctx.format)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"placeholder\", ctx.placeholder)(\"min\", ctx.normalizeTime(ctx.min))(\"max\", ctx.normalizeTime(ctx.max))(\"incompleteDateValidation\", ctx.incompleteDateValidation)(\"steps\", ctx.steps)(\"tabindex\", !ctx.show ? ctx.tabindex : -1)(\"title\", ctx.title)(\"value\", ctx.value);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(23, _c29, ctx.handleIconClick, ctx.handleMousedown))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"title\", ctx.localization.get(\"toggle\"))(\"aria-label\", ctx.localization.get(\"toggle\"));\n } }, directives: function () { return [TimePickerLocalizedMessagesDirective, DateInputComponent, ɵngcc3.EventsOutsideAngularDirective, TimeSelectorComponent, TimeSelectorCustomMessagesComponent]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: false }),\n __metadata(\"design:type\", ViewContainerRef)\n], TimePickerComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: false }),\n __metadata(\"design:type\", TemplateRef)\n], TimePickerComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], TimePickerComponent.prototype, \"wrapper\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimePickerComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimePickerComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimePickerComponent.prototype, \"readOnlyInput\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TimePickerComponent.prototype, \"formatPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], TimePickerComponent.prototype, \"min\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], TimePickerComponent.prototype, \"max\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimePickerComponent.prototype, \"incompleteDateValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimePickerComponent.prototype, \"cancelButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimePickerComponent.prototype, \"nowButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TimePickerComponent.prototype, \"steps\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TimePickerComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TimePickerComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], TimePickerComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimePickerComponent.prototype, \"rangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], TimePickerComponent.prototype, \"value\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TimePickerComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], TimePickerComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], TimePickerComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TimePickerComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TimePickerComponent.prototype, \"close\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-timepicker'),\n __metadata(\"design:type\", Boolean)\n], TimePickerComponent.prototype, \"wrapperClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TimePickerComponent.prototype, \"disabledClass\", null);\nTimePickerComponent = TimePickerComponent_1 = __decorate([ __param(9, Optional()), __param(9, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [NgZone,\n LocalizationService,\n ChangeDetectorRef,\n PopupService,\n ElementRef,\n Renderer2,\n Injector,\n PickerService,\n IntlService, Boolean])\n], TimePickerComponent);\n\nvar DateTimePickerComponent_1;\nconst timeFormatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.dayperiod}|literal`);\nconst VALUE_DOC_LINK$4 = '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$2 = 68;\n/**\n * Represents the [Kendo UI DateTimePicker component for Angular]({% slug overview_datetimepicker %}).\n */\nlet DateTimePickerComponent = DateTimePickerComponent_1 = class DateTimePickerComponent {\n constructor(popupService, intl, cdr, pickerService, ngZone, host, touchEnabled$$1, 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.host = host;\n this.touchEnabled = touchEnabled$$1;\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$2;\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;\n this.onControlChange = noop;\n this.onValidatorChange = noop;\n this.minValidateFn = noop;\n this.maxValidateFn = noop;\n this.disabledDatesValidateFn = noop;\n this.incompleteValidator = noop;\n this.subscriptions = new Subscription();\n validatePackage(packageMetadata);\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-state-focused');\n }\n else {\n this.renderer.removeClass(this.wrapper.nativeElement, 'k-state-focused');\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 * @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 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;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop;\n this.disabledDatesValidateFn = this.disabledDatesValidation ? disabledDatesValidator(this.disabledDatesService.isDateDisabled) : noop;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop;\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.host.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 * 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$4} 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 open ? this.open.emit(event) : this.close.emit(event);\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 wrapper 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};\nDateTimePickerComponent.ɵfac = function DateTimePickerComponent_Factory(t) { return new (t || DateTimePickerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc5.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(PickerService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService), ɵngcc0.ɵɵdirectiveInject(DisabledDatesService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nDateTimePickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateTimePickerComponent, selectors: [[\"kendo-datetimepicker\"]], contentQueries: function DateTimePickerComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MonthCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, YearCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DecadeCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CenturyCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, WeekNumberCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTitleTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.decadeCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.centuryCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.weekNumberTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTitleTemplate = _t.first);\n } }, viewQuery: function DateTimePickerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c17, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c18, 7, TemplateRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n } }, hostVars: 4, hostBindings: function DateTimePickerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-datetimepicker\", ctx.hostClasses);\n } }, inputs: { twoDigitYearMax: \"twoDigitYearMax\", focusableId: \"focusableId\", title: \"title\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", cancelButton: \"cancelButton\", steps: \"steps\", calendarType: \"calendarType\", animateCalendarNavigation: \"animateCalendarNavigation\", weekNumber: \"weekNumber\", rangeValidation: \"rangeValidation\", disabledDatesValidation: \"disabledDatesValidation\", incompleteDateValidation: \"incompleteDateValidation\", value: \"value\", format: \"format\", tabindex: \"tabindex\", disabledDates: \"disabledDates\", popupSettings: \"popupSettings\", min: \"min\", max: \"max\", defaultTab: \"defaultTab\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", focusedDate: \"focusedDate\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendo-datetimepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([\n PickerService,\n LocalizationService,\n DisabledDatesService,\n { provide: L10N_PREFIX, useValue: 'kendo.datetimepicker' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent_1) }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 11, vars: 35, consts: function () { let i18n_45; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Date tab text in the datetimepicker popup header\n * @meaning kendo.datetimepicker.dateTab\n */\n const MSG_EXTERNAL_3360129034450596425$$DIST_FESM2015_INDEX_JS_46 = goog.getMsg(\"Date\");\n i18n_45 = MSG_EXTERNAL_3360129034450596425$$DIST_FESM2015_INDEX_JS_46;\n }\n else {\n i18n_45 = $localize `:kendo.datetimepicker.dateTab|The Date tab text in the datetimepicker popup header␟5bb17f81ae8dbc109499ce3792afffa6b7cef855␟3360129034450596425:Date`;\n } let i18n_47; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Date tab in the datetimepicker popup header\n * @meaning kendo.datetimepicker.dateTabLabel\n */\n const MSG_EXTERNAL_1810540079817643910$$DIST_FESM2015_INDEX_JS_48 = goog.getMsg(\"Date tab\");\n i18n_47 = MSG_EXTERNAL_1810540079817643910$$DIST_FESM2015_INDEX_JS_48;\n }\n else {\n i18n_47 = $localize `:kendo.datetimepicker.dateTabLabel|The label for the Date tab in the datetimepicker popup header␟2a400c9e364a4c6d83ac39b5513c962805db54b2␟1810540079817643910:Date tab`;\n } let i18n_49; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Time tab text in the datetimepicker popup header\n * @meaning kendo.datetimepicker.timeTab\n */\n const MSG_EXTERNAL_3807284594201983607$$DIST_FESM2015_INDEX_JS_50 = goog.getMsg(\"Time\");\n i18n_49 = MSG_EXTERNAL_3807284594201983607$$DIST_FESM2015_INDEX_JS_50;\n }\n else {\n i18n_49 = $localize `:kendo.datetimepicker.timeTab|The Time tab text in the datetimepicker popup header␟e9b2b760a6916040e7520a9a2926d65de175944d␟3807284594201983607:Time`;\n } let i18n_51; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Time tab in the datetimepicker popup header\n * @meaning kendo.datetimepicker.timeTabLabel\n */\n const MSG_EXTERNAL_2577682127494513393$$DIST_FESM2015_INDEX_JS_52 = goog.getMsg(\"Time tab\");\n i18n_51 = MSG_EXTERNAL_2577682127494513393$$DIST_FESM2015_INDEX_JS_52;\n }\n else {\n i18n_51 = $localize `:kendo.datetimepicker.timeTabLabel|The label for the Time tab in the datetimepicker popup header␟13bf7e3a1036140119732c6d5952f7a20c22999e␟2577682127494513393:Time tab`;\n } let i18n_53; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the toggle button in the datetimepicker component\n * @meaning kendo.datetimepicker.toggle\n */\n const MSG_EXTERNAL_3159207801887264026$$DIST_FESM2015_INDEX_JS_54 = goog.getMsg(\"Toggle popup\");\n i18n_53 = MSG_EXTERNAL_3159207801887264026$$DIST_FESM2015_INDEX_JS_54;\n }\n else {\n i18n_53 = $localize `:kendo.datetimepicker.toggle|The title of the toggle button in the datetimepicker component␟60296a83f0d3e3d07aaba87c4f8e91b0aca3c22a␟3159207801887264026:Toggle popup`;\n } let i18n_55; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Accept button text in the datetimepicker component\n * @meaning kendo.datetimepicker.accept\n */\n const MSG_EXTERNAL_3915774704336012538$$DIST_FESM2015_INDEX_JS_56 = goog.getMsg(\"Set\");\n i18n_55 = MSG_EXTERNAL_3915774704336012538$$DIST_FESM2015_INDEX_JS_56;\n }\n else {\n i18n_55 = $localize `:kendo.datetimepicker.accept|The Accept button text in the datetimepicker component␟4359b59db7ded88e106ada877e744c71b188f8f9␟3915774704336012538:Set`;\n } let i18n_57; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Accept button in the datetimepicker component\n * @meaning kendo.datetimepicker.acceptLabel\n */\n const MSG_EXTERNAL_4770689705864890748$$DIST_FESM2015_INDEX_JS_58 = goog.getMsg(\"Set\");\n i18n_57 = MSG_EXTERNAL_4770689705864890748$$DIST_FESM2015_INDEX_JS_58;\n }\n else {\n i18n_57 = $localize `:kendo.datetimepicker.acceptLabel|The label for the Accept button in the datetimepicker component␟cbea4571cca81ad9767a6b29f0287d1f3f6372dc␟4770689705864890748:Set`;\n } let i18n_59; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Cancel button text in the datetimepicker component\n * @meaning kendo.datetimepicker.cancel\n */\n const MSG_EXTERNAL_5100781969600382158$$DIST_FESM2015_INDEX_JS_60 = goog.getMsg(\"Cancel\");\n i18n_59 = MSG_EXTERNAL_5100781969600382158$$DIST_FESM2015_INDEX_JS_60;\n }\n else {\n i18n_59 = $localize `:kendo.datetimepicker.cancel|The Cancel button text in the datetimepicker component␟17ab795d6f7527dd962a309759ca58cb4edd7e52␟5100781969600382158:Cancel`;\n } let i18n_61; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Cancel button in the datetimepicker component\n * @meaning kendo.datetimepicker.cancelLabel\n */\n const MSG_EXTERNAL_3535986227615756275$$DIST_FESM2015_INDEX_JS_62 = goog.getMsg(\"Cancel\");\n i18n_61 = MSG_EXTERNAL_3535986227615756275$$DIST_FESM2015_INDEX_JS_62;\n }\n else {\n i18n_61 = $localize `:kendo.datetimepicker.cancelLabel|The label for the Cancel button in the datetimepicker component␟ba26795ab9f4c21d66b17549ba854a96fcdac1f9␟3535986227615756275:Cancel`;\n } let i18n_63; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Now button text in the timepicker component\n * @meaning kendo.datetimepicker.now\n */\n const MSG_EXTERNAL_5497093725885127701$$DIST_FESM2015_INDEX_JS_64 = goog.getMsg(\"NOW\");\n i18n_63 = MSG_EXTERNAL_5497093725885127701$$DIST_FESM2015_INDEX_JS_64;\n }\n else {\n i18n_63 = $localize `:kendo.datetimepicker.now|The Now button text in the timepicker component␟7172e7e9a1741f6b63439ec89e498c995cb23b0d␟5497093725885127701:NOW`;\n } let i18n_65; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Now button in the timepicker component\n * @meaning kendo.datetimepicker.nowLabel\n */\n const MSG_EXTERNAL_5046379108717037514$$DIST_FESM2015_INDEX_JS_66 = goog.getMsg(\"Select now\");\n i18n_65 = MSG_EXTERNAL_5046379108717037514$$DIST_FESM2015_INDEX_JS_66;\n }\n else {\n i18n_65 = $localize `:kendo.datetimepicker.nowLabel|The label for the Now button in the timepicker component␟52d90641b26b1ce4c011cadf0437ce36c1dac1d5␟5046379108717037514:Select now`;\n } let i18n_67; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the today button in the calendar header\n * @meaning kendo.datetimepicker.today\n */\n const MSG_EXTERNAL_2570147067439993260$$DIST_FESM2015_INDEX_JS_68 = goog.getMsg(\"Today\");\n i18n_67 = MSG_EXTERNAL_2570147067439993260$$DIST_FESM2015_INDEX_JS_68;\n }\n else {\n i18n_67 = $localize `:kendo.datetimepicker.today|The label for the today button in the calendar header␟9ef9db9ac4951523d519b989d223f507878c612d␟2570147067439993260:Today`;\n } let i18n_69; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the previous button in the Classic calendar\n * @meaning kendo.datetimepicker.prevButtonTitle\n */\n const MSG_EXTERNAL_6176055232586065404$$DIST_FESM2015_INDEX_JS_70 = goog.getMsg(\"Navigate to previous view\");\n i18n_69 = MSG_EXTERNAL_6176055232586065404$$DIST_FESM2015_INDEX_JS_70;\n }\n else {\n i18n_69 = $localize `:kendo.datetimepicker.prevButtonTitle|The title of the previous button in the Classic calendar␟447d09c4ecfc2ab2b84d708f4c07fa0fcda85167␟6176055232586065404:Navigate to previous view`;\n } let i18n_71; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the next button in the Classic calendar\n * @meaning kendo.datetimepicker.nextButtonTitle\n */\n const MSG_EXTERNAL_6424339255333594510$$DIST_FESM2015_INDEX_JS_72 = goog.getMsg(\"Navigate to next view\");\n i18n_71 = MSG_EXTERNAL_6424339255333594510$$DIST_FESM2015_INDEX_JS_72;\n }\n else {\n i18n_71 = $localize `:kendo.datetimepicker.nextButtonTitle|The title of the next button in the Classic calendar␟80fd3325bfe94a180fd27391f2245c024472ec58␟6424339255333594510:Navigate to next view`;\n } return [[\"kendoDateTimePickerLocalizedMessages\", \"\", \"dateTab\", i18n_45, \"dateTabLabel\", i18n_47, \"timeTab\", i18n_49, \"timeTabLabel\", i18n_51, \"toggle\", i18n_53, \"accept\", i18n_55, \"acceptLabel\", i18n_57, \"cancel\", i18n_59, \"cancelLabel\", i18n_61, \"now\", i18n_63, \"nowLabel\", i18n_65, \"today\", i18n_67, \"prevButtonTitle\", i18n_69, \"nextButtonTitle\", i18n_71], [1, \"k-picker-wrap\"], [\"wrapper\", \"\"], [3, \"value\", \"format\", \"twoDigitYearMax\", \"min\", \"max\", \"incompleteDateValidation\", \"formatPlaceholder\", \"placeholder\", \"disabled\", \"readonly\", \"role\", \"ariaReadOnly\", \"steps\", \"tabindex\", \"title\", \"focusableId\", \"hasPopup\", \"isPopupOpen\", \"kendoEventsOutsideAngular\", \"scope\", \"valueChange\"], [1, \"k-select\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [1, \"k-link\", \"k-link-date\"], [1, \"k-icon\"], [\"container\", \"\"], [\"popupTemplate\", \"\"], [3, \"kendoEventsOutsideAngular\", \"scope\"], [1, \"k-datetime-buttongroup\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [1, \"k-button-group\", \"k-button-group-stretched\"], [\"type\", \"button\", 1, \"k-button\", \"k-date-tab\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [\"type\", \"button\", 1, \"k-button\", \"k-time-tab\", 3, \"kendoEventsOutsideAngular\"], [1, \"k-datetime-selector\", 3, \"kendoEventsOutsideAngular\"], [\"dateTimeSelector\", \"\"], [1, \"k-datetime-calendar-wrap\"], [3, \"value\", \"type\", \"min\", \"max\", \"focusedDate\", \"weekNumber\", \"navigation\", \"animateNavigation\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"disabled\", \"disabledDates\", \"valueChange\"], [3, \"today\", \"prevButtonTitle\", \"nextButtonTitle\"], [1, \"k-datetime-time-wrap\"], [3, \"value\", \"format\", \"min\", \"max\", \"setButton\", \"cancelButton\", \"steps\", \"disabled\"], [3, \"now\", \"nowLabel\"], [1, \"k-datetime-footer\", \"k-action-buttons\", \"k-actions\", \"k-hstack\", \"k-justify-content-stretch\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [\"type\", \"button\", \"class\", \"k-button k-time-cancel\", 3, \"kendoEventsOutsideAngular\", \"scope\", 4, \"ngIf\"], [\"type\", \"button\", 1, \"k-time-accept\", \"k-button\", \"k-primary\", 3, \"disabled\", \"kendoEventsOutsideAngular\", \"scope\"], [\"type\", \"button\", 1, \"k-button\", \"k-time-cancel\", 3, \"kendoEventsOutsideAngular\", \"scope\"]]; }, template: function DateTimePickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-dateinput\", 3);\n ɵngcc0.ɵɵlistener(\"valueChange\", function DateTimePickerComponent_Template_kendo_dateinput_valueChange_3_listener($event) { return ctx.handleInputValueChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"span\", 4);\n ɵngcc0.ɵɵelementStart(5, \"span\", 5);\n ɵngcc0.ɵɵelement(6, \"span\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainer(7, null, 7);\n ɵngcc0.ɵɵtemplate(9, DateTimePickerComponent_ng_template_9_Template, 19, 81, \"ng-template\", null, 8, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"value\", ctx.value)(\"format\", ctx.format)(\"twoDigitYearMax\", ctx.twoDigitYearMax)(\"min\", ctx.min)(\"max\", ctx.max)(\"incompleteDateValidation\", ctx.incompleteDateValidation)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"placeholder\", ctx.placeholder)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly || ctx.readOnlyInput)(\"role\", ctx.inputRole)(\"ariaReadOnly\", ctx.readonly)(\"steps\", ctx.steps)(\"tabindex\", ctx.tabindex)(\"title\", ctx.title)(\"focusableId\", ctx.focusableId)(\"hasPopup\", true)(\"isPopupOpen\", ctx.isOpen)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(30, _c28, ctx.handleKeyDown))(\"scope\", ctx);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(32, _c78, ctx.preventMouseDown, ctx.handleIconClick))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"title\", ctx.localization.get(\"toggle\"))(\"aria-label\", ctx.localization.get(\"toggle\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-i-calendar\", ctx.activeTab === \"date\")(\"k-i-clock\", ctx.activeTab === \"time\");\n } }, directives: function () { return [LocalizedMessagesDirective, DateInputComponent, ɵngcc3.EventsOutsideAngularDirective, CalendarComponent, CalendarCustomMessagesComponent, TimeSelectorComponent, TimeSelectorCustomMessagesComponent, ɵngcc2.NgIf]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-datetimepicker'),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], DateTimePickerComponent.prototype, \"wrapper\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], DateTimePickerComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DateTimePickerComponent.prototype, \"format\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DateTimePickerComponent.prototype, \"twoDigitYearMax\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DateTimePickerComponent.prototype, \"tabindex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DateTimePickerComponent.prototype, \"disabledDates\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DateTimePickerComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateTimePickerComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateTimePickerComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"readOnlyInput\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"cancelButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateTimePickerComponent.prototype, \"formatPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateTimePickerComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateTimePickerComponent.prototype, \"steps\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DateTimePickerComponent.prototype, \"focusedDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateTimePickerComponent.prototype, \"calendarType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"animateCalendarNavigation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"weekNumber\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], DateTimePickerComponent.prototype, \"min\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], DateTimePickerComponent.prototype, \"max\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"rangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"disabledDatesValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateTimePickerComponent.prototype, \"incompleteDateValidation\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateTimePickerComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateTimePickerComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateTimePickerComponent.prototype, \"close\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DateTimePickerComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DateTimePickerComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], DateTimePickerComponent.prototype, \"defaultTab\", null);\n__decorate([\n ContentChild(CellTemplateDirective, { static: false }),\n __metadata(\"design:type\", CellTemplateDirective)\n], DateTimePickerComponent.prototype, \"cellTemplate\", void 0);\n__decorate([\n ContentChild(MonthCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", MonthCellTemplateDirective)\n], DateTimePickerComponent.prototype, \"monthCellTemplate\", void 0);\n__decorate([\n ContentChild(YearCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", YearCellTemplateDirective)\n], DateTimePickerComponent.prototype, \"yearCellTemplate\", void 0);\n__decorate([\n ContentChild(DecadeCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", DecadeCellTemplateDirective)\n], DateTimePickerComponent.prototype, \"decadeCellTemplate\", void 0);\n__decorate([\n ContentChild(CenturyCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", CenturyCellTemplateDirective)\n], DateTimePickerComponent.prototype, \"centuryCellTemplate\", void 0);\n__decorate([\n ContentChild(WeekNumberCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", WeekNumberCellTemplateDirective)\n], DateTimePickerComponent.prototype, \"weekNumberTemplate\", void 0);\n__decorate([\n ContentChild(HeaderTitleTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTitleTemplateDirective)\n], DateTimePickerComponent.prototype, \"headerTitleTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], DateTimePickerComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { read: TemplateRef, static: true }),\n __metadata(\"design:type\", TemplateRef)\n], DateTimePickerComponent.prototype, \"popupTemplate\", void 0);\nDateTimePickerComponent = DateTimePickerComponent_1 = __decorate([ __param(6, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [PopupService,\n IntlService,\n ChangeDetectorRef,\n PickerService,\n NgZone,\n ElementRef, Boolean, LocalizationService,\n DisabledDatesService,\n Renderer2])\n], DateTimePickerComponent);\n\n/**\n * @hidden\n */\nlet WeekNamesService = class 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 = function WeekNamesService_Factory(t) { return new (t || WeekNamesService)(ɵngcc0.ɵɵinject(ɵngcc1.IntlService)); };\nWeekNamesService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: WeekNamesService, factory: function (t) { return WeekNamesService.ɵfac(t); } });\nWeekNamesService = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], WeekNamesService);\n\nconst DEFAULT_VIEWS_LENGTH = 2;\n/**\n * @hidden\n */\nlet HorizontalViewListComponent = class 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 = function HorizontalViewListComponent_Factory(t) { return new (t || HorizontalViewListComponent)(ɵngcc0.ɵɵdirectiveInject(BusViewService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(WeekNamesService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nHorizontalViewListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HorizontalViewListComponent, selectors: [[\"kendo-calendar-horizontal\"]], hostVars: 16, hostBindings: function HorizontalViewListComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-calendar-view\", ctx.getComponentClass)(\"k-hstack\", ctx.getComponentClass)(\"k-align-items-start\", ctx.getComponentClass)(\"k-justify-content-center\", ctx.getComponentClass)(\"k-calendar-monthview\", ctx.getComponentMonthClass)(\"k-calendar-yearview\", ctx.getComponentYearClass)(\"k-calendar-decadeview\", ctx.getComponentDecadeClass)(\"k-calendar-centuryview\", ctx.getComponentCenturyClass);\n } }, inputs: { activeView: \"activeView\", isActive: \"isActive\", min: \"min\", max: \"max\", selectedDates: \"selectedDates\", views: \"views\", showViewHeader: \"showViewHeader\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", focusedDate: \"focusedDate\", cellTemplateRef: \"cellTemplateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\", activeRangeEnd: \"activeRangeEnd\", cellUID: \"cellUID\", selectionRange: \"selectionRange\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\", activeDateChange: \"activeDateChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 3, consts: [[\"tableTemplate\", \"\"], [4, \"ngIf\"], [4, \"kFor\", \"kForOf\"], [1, \"k-content\", \"k-calendar-content\", \"k-calendar-table\", 3, \"ngClass\"], [3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"k-calendar-thead\", 4, \"ngIf\"], [\"kendoCalendarView\", \"\", \"role\", \"rowgroup\", \"direction\", \"horizontal\", 1, \"k-calendar-tbody\", 3, \"activeView\", \"isActive\", \"min\", \"max\", \"cellUID\", \"focusedDate\", \"selectedDates\", \"selectionRange\", \"activeRangeEnd\", \"weekNumber\", \"templateRef\", \"weekNumberTemplateRef\", \"viewDate\", \"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\"], [3, \"ngClass\"], [1, \"k-calendar-thead\"], [\"role\", \"row\", 1, \"k-calendar-tr\"], [\"class\", \"k-calendar-th\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-calendar-th\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function HorizontalViewListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HorizontalViewListComponent_ng_template_0_Template, 4, 16, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, HorizontalViewListComponent_2_Template, 1, 4, null, 1);\n ɵngcc0.ɵɵtemplate(3, HorizontalViewListComponent_3_Template, 1, 4, null, 2);\n ɵngcc0.ɵɵtemplate(4, HorizontalViewListComponent_4_Template, 1, 4, null, 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.nextAnimationDate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kForOf\", ctx.dates);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.prevAnimationDate);\n } }, directives: function () { return [ɵngcc2.NgClass, ɵngcc2.NgIf, ɵngcc2.NgForOf, ViewComponent, ɵngcc2.NgTemplateOutlet, KForOf]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], HorizontalViewListComponent.prototype, \"cellTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], HorizontalViewListComponent.prototype, \"weekNumberTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], HorizontalViewListComponent.prototype, \"activeRangeEnd\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], HorizontalViewListComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], HorizontalViewListComponent.prototype, \"cellUID\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], HorizontalViewListComponent.prototype, \"focusedDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HorizontalViewListComponent.prototype, \"isActive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], HorizontalViewListComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], HorizontalViewListComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HorizontalViewListComponent.prototype, \"selectionRange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], HorizontalViewListComponent.prototype, \"selectedDates\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], HorizontalViewListComponent.prototype, \"views\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HorizontalViewListComponent.prototype, \"showViewHeader\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HorizontalViewListComponent.prototype, \"animateNavigation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], HorizontalViewListComponent.prototype, \"weekNumber\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], HorizontalViewListComponent.prototype, \"cellClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], HorizontalViewListComponent.prototype, \"weekNumberCellClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], HorizontalViewListComponent.prototype, \"cellEnter\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], HorizontalViewListComponent.prototype, \"cellLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], HorizontalViewListComponent.prototype, \"activeDateChange\", void 0);\n__decorate([\n HostBinding(\"class.k-calendar-view\"),\n HostBinding(\"class.k-hstack\"),\n HostBinding(\"class.k-align-items-start\"),\n HostBinding(\"class.k-justify-content-center\"),\n __metadata(\"design:type\", Boolean)\n], HorizontalViewListComponent.prototype, \"getComponentClass\", void 0);\n__decorate([\n HostBinding(\"class.k-calendar-monthview\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HorizontalViewListComponent.prototype, \"getComponentMonthClass\", null);\n__decorate([\n HostBinding(\"class.k-calendar-yearview\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HorizontalViewListComponent.prototype, \"getComponentYearClass\", null);\n__decorate([\n HostBinding(\"class.k-calendar-decadeview\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HorizontalViewListComponent.prototype, \"getComponentDecadeClass\", null);\n__decorate([\n HostBinding(\"class.k-calendar-centuryview\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HorizontalViewListComponent.prototype, \"getComponentCenturyClass\", null);\nHorizontalViewListComponent = __decorate([ __metadata(\"design:paramtypes\", [BusViewService,\n IntlService,\n WeekNamesService,\n ChangeDetectorRef,\n ElementRef,\n Renderer2])\n], HorizontalViewListComponent);\n\nconst noop$2 = () => null;\n/**\n * @hidden\n */\nconst disabledDatesRangeValidator = (isDateDisabled) => {\n if (!isPresent(isDateDisabled)) {\n return noop$2;\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\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) //tslint:disable-line:no-use-before-declare\n};\n/**\n * @hidden\n */\nconst RANGE_CALENDAR_RANGE_VALIDATORS = {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MultiViewCalendarComponent) //tslint:disable-line:no-use-before-declare\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 */\nlet MultiViewCalendarComponent = class 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 * 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 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;\n this.onControlTouched = noop;\n this.onValidatorChange = noop;\n this.minValidateFn = noop;\n this.maxValidateFn = noop;\n this.disabledDatesRangeValidateFn = noop;\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$$1) {\n this._selectionRange = range$$1;\n if (this.disabledDatesRangeValidation) {\n this.onValidatorChange();\n }\n }\n get selectionRange() {\n return this._selectionRange;\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 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 widgetRole() {\n return 'grid';\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 handleBlur() {\n this.onControlTouched();\n this.isActive = false;\n this.isHovered = false; //ensure that hovered is also not active\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isActive = true;\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 (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;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop;\n this.disabledDatesRangeValidateFn = this.disabledDatesRangeValidation ? disabledDatesRangeValidator(this.disabledDatesService.isDateDisabled) : noop;\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 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.monthCellTemplate || this.cellTemplate;\n case CalendarViewEnum.year:\n return this.yearCellTemplate;\n case CalendarViewEnum.decade:\n return this.decadeCellTemplate;\n case CalendarViewEnum.century:\n return this.centuryCellTemplate;\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 = function MultiViewCalendarComponent_Factory(t) { return new (t || MultiViewCalendarComponent)(ɵngcc0.ɵɵdirectiveInject(BusViewService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DisabledDatesService), ɵngcc0.ɵɵdirectiveInject(SelectionService)); };\nMultiViewCalendarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MultiViewCalendarComponent, selectors: [[\"kendo-multiviewcalendar\"]], contentQueries: function MultiViewCalendarComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MonthCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, YearCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DecadeCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CenturyCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, WeekNumberCellTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTitleTemplateDirective, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.decadeCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.centuryCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.weekNumberTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTitleTemplate = _t.first);\n } }, viewQuery: function MultiViewCalendarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(HorizontalViewListComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.viewList = _t.first);\n } }, hostVars: 7, hostBindings: function MultiViewCalendarComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function MultiViewCalendarComponent_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"focus\", function MultiViewCalendarComponent_focus_HostBindingHandler() { return ctx.handleFocus(); })(\"mouseenter\", function MultiViewCalendarComponent_mouseenter_HostBindingHandler() { return ctx.handleMouseEnter(); })(\"mouseleave\", function MultiViewCalendarComponent_mouseleave_HostBindingHandler() { return ctx.handleMouseLeave(); })(\"mousedown\", function MultiViewCalendarComponent_mousedown_HostBindingHandler($event) { return ctx.handleMousedown($event); })(\"click\", function MultiViewCalendarComponent_click_HostBindingHandler() { return ctx.handleClick(); })(\"keydown\", function MultiViewCalendarComponent_keydown_HostBindingHandler($event) { return ctx.keydown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.widgetId)(\"role\", ctx.widgetRole)(\"tabindex\", ctx.calendarTabIndex)(\"aria-disabled\", ctx.ariaDisabled)(\"aria-activedescendant\", ctx.ariaActivedescendant);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.ariaDisabled);\n } }, inputs: { id: \"id\", rangeValidation: \"rangeValidation\", disabledDatesRangeValidation: \"disabledDatesRangeValidation\", selection: \"selection\", disabled: \"disabled\", tabindex: \"tabindex\", isActive: \"isActive\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", showViewHeader: \"showViewHeader\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", views: \"views\", focusedDate: \"focusedDate\", min: \"min\", max: \"max\", value: \"value\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", selectionRange: \"selectionRange\", cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"], activeRangeEnd: \"activeRangeEnd\" }, outputs: { activeViewChange: \"activeViewChange\", navigate: \"navigate\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\", valueChange: \"valueChange\" }, exportAs: [\"kendo-multiviewcalendar\"], features: [ɵngcc0.ɵɵProvidersFeature([\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 ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 24, consts: function () { let i18n_81; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the today button in the calendar header\n * @meaning kendo.multiviewcalendar.today\n */\n const MSG_EXTERNAL_7780927771207785084$$DIST_FESM2015_INDEX_JS_82 = goog.getMsg(\"Today\");\n i18n_81 = MSG_EXTERNAL_7780927771207785084$$DIST_FESM2015_INDEX_JS_82;\n }\n else {\n i18n_81 = $localize `:kendo.multiviewcalendar.today|The label for the today button in the calendar header␟c237cef31a55d762ecfdcac701d283313f30bbfc␟7780927771207785084:Today`;\n } let i18n_83; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the previous button in the Multiview calendar\n * @meaning kendo.multiviewcalendar.prevButtonTitle\n */\n const MSG_EXTERNAL_9101635325676663492$$DIST_FESM2015_INDEX_JS_84 = goog.getMsg(\"Navigate to previous view\");\n i18n_83 = MSG_EXTERNAL_9101635325676663492$$DIST_FESM2015_INDEX_JS_84;\n }\n else {\n i18n_83 = $localize `:kendo.multiviewcalendar.prevButtonTitle|The label for the previous button in the Multiview calendar␟e783e2af4828224b846fa92148ea1cc52b21bb13␟9101635325676663492:Navigate to previous view`;\n } let i18n_85; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the next button in the Multiview calendar\n * @meaning kendo.multiviewcalendar.nextButtonTitle\n */\n const MSG_EXTERNAL_3994336778698343633$$DIST_FESM2015_INDEX_JS_86 = goog.getMsg(\"Navigate to next view\");\n i18n_85 = MSG_EXTERNAL_3994336778698343633$$DIST_FESM2015_INDEX_JS_86;\n }\n else {\n i18n_85 = $localize `:kendo.multiviewcalendar.nextButtonTitle|The label for the next button in the Multiview calendar␟3e3a529a242f39d22f841c3bd8045ec75b696b7a␟3994336778698343633:Navigate to next view`;\n } return [[\"kendoMultiViewCalendarLocalizedMessages\", \"\", \"today\", i18n_81, \"prevButtonTitle\", i18n_83, \"nextButtonTitle\", i18n_85], [3, \"activeView\", \"currentDate\", \"min\", \"max\", \"rangeLength\", \"templateRef\", \"isPrevDisabled\", \"isNextDisabled\", \"showNavigationButtons\", \"todayButtonClick\", \"prevButtonClick\", \"nextButtonClick\"], [3, \"activeView\", \"isActive\", \"cellTemplateRef\", \"weekNumberTemplateRef\", \"cellUID\", \"views\", \"min\", \"max\", \"focusedDate\", \"animateNavigation\", \"showViewHeader\", \"weekNumber\", \"activeRangeEnd\", \"selectionRange\", \"selectedDates\", \"valueChange\", \"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\", \"activeDateChange\"]]; }, template: function MultiViewCalendarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-calendar-header\", 1);\n ɵngcc0.ɵɵlistener(\"todayButtonClick\", function MultiViewCalendarComponent_Template_kendo_calendar_header_todayButtonClick_1_listener($event) { return ctx.handleTodayButtonClick({ selectedDates: [$event], focusedDate: $event }); })(\"prevButtonClick\", function MultiViewCalendarComponent_Template_kendo_calendar_header_prevButtonClick_1_listener() { return ctx.navigateView(ctx.prevView); })(\"nextButtonClick\", function MultiViewCalendarComponent_Template_kendo_calendar_header_nextButtonClick_1_listener() { return ctx.navigateView(ctx.nextView); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"kendo-calendar-horizontal\", 2);\n ɵngcc0.ɵɵlistener(\"valueChange\", function MultiViewCalendarComponent_Template_kendo_calendar_horizontal_valueChange_2_listener($event) { return ctx.handleDateChange($event); })(\"cellClick\", function MultiViewCalendarComponent_Template_kendo_calendar_horizontal_cellClick_2_listener($event) { return ctx.handleCellClick($event); })(\"weekNumberCellClick\", function MultiViewCalendarComponent_Template_kendo_calendar_horizontal_weekNumberCellClick_2_listener($event) { return ctx.handleWeekNumberClick($event); })(\"cellEnter\", function MultiViewCalendarComponent_Template_kendo_calendar_horizontal_cellEnter_2_listener($event) { return ctx.emitCellEvent(ctx.cellEnter, $event); })(\"cellLeave\", function MultiViewCalendarComponent_Template_kendo_calendar_horizontal_cellLeave_2_listener($event) { return ctx.emitCellEvent(ctx.cellLeave, $event); })(\"activeDateChange\", function MultiViewCalendarComponent_Template_kendo_calendar_horizontal_activeDateChange_2_listener($event) { return ctx.setActiveDate($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n let tmp_11_0;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"activeView\", ctx.activeViewEnum)(\"currentDate\", ctx.activeDate)(\"min\", ctx.min)(\"max\", ctx.max)(\"rangeLength\", ctx.views)(\"templateRef\", ctx.headerTitleTemplate == null ? null : ctx.headerTitleTemplate.templateRef)(\"isPrevDisabled\", ctx.isPrevDisabled)(\"isNextDisabled\", ctx.isNextDisabled)(\"showNavigationButtons\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"activeView\", ctx.activeViewEnum)(\"isActive\", ctx.isActive || ctx.isHovered)(\"cellTemplateRef\", (tmp_11_0 = ctx.activeCellTemplate()) == null ? null : tmp_11_0.templateRef)(\"weekNumberTemplateRef\", ctx.weekNumberTemplate == null ? null : ctx.weekNumberTemplate.templateRef)(\"cellUID\", ctx.cellUID)(\"views\", ctx.views)(\"min\", ctx.min)(\"max\", ctx.max)(\"focusedDate\", ctx.focusedDate)(\"animateNavigation\", ctx.animateNavigation)(\"showViewHeader\", ctx.showViewHeader)(\"weekNumber\", ctx.weekNumber)(\"activeRangeEnd\", ctx.activeRangeEnd)(\"selectionRange\", ctx.selectionRange)(\"selectedDates\", ctx.selectedDates);\n } }, directives: function () { return [MultiViewCalendarLocalizedMessagesDirective, HeaderComponent, HorizontalViewListComponent]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiViewCalendarComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], MultiViewCalendarComponent.prototype, \"focusedDate\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], MultiViewCalendarComponent.prototype, \"min\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date),\n __metadata(\"design:paramtypes\", [Date])\n], MultiViewCalendarComponent.prototype, \"max\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiViewCalendarComponent.prototype, \"rangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiViewCalendarComponent.prototype, \"disabledDatesRangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiViewCalendarComponent.prototype, \"selection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiViewCalendarComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiViewCalendarComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MultiViewCalendarComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], MultiViewCalendarComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiViewCalendarComponent.prototype, \"isActive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiViewCalendarComponent.prototype, \"disabledDates\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiViewCalendarComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiViewCalendarComponent.prototype, \"bottomView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiViewCalendarComponent.prototype, \"topView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiViewCalendarComponent.prototype, \"showViewHeader\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiViewCalendarComponent.prototype, \"animateNavigation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiViewCalendarComponent.prototype, \"weekNumber\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiViewCalendarComponent.prototype, \"activeRangeEnd\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiViewCalendarComponent.prototype, \"selectionRange\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MultiViewCalendarComponent.prototype, \"views\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiViewCalendarComponent.prototype, \"activeViewChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiViewCalendarComponent.prototype, \"navigate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiViewCalendarComponent.prototype, \"cellEnter\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiViewCalendarComponent.prototype, \"cellLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiViewCalendarComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ContentChild(CellTemplateDirective, { static: true }),\n __metadata(\"design:type\", CellTemplateDirective)\n], MultiViewCalendarComponent.prototype, \"cellTemplate\", void 0);\n__decorate([\n Input('cellTemplate'),\n __metadata(\"design:type\", CellTemplateDirective),\n __metadata(\"design:paramtypes\", [CellTemplateDirective])\n], MultiViewCalendarComponent.prototype, \"cellTemplateRef\", null);\n__decorate([\n ContentChild(MonthCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", MonthCellTemplateDirective)\n], MultiViewCalendarComponent.prototype, \"monthCellTemplate\", void 0);\n__decorate([\n Input('monthCellTemplate'),\n __metadata(\"design:type\", MonthCellTemplateDirective),\n __metadata(\"design:paramtypes\", [MonthCellTemplateDirective])\n], MultiViewCalendarComponent.prototype, \"monthCellTemplateRef\", null);\n__decorate([\n ContentChild(YearCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", YearCellTemplateDirective)\n], MultiViewCalendarComponent.prototype, \"yearCellTemplate\", void 0);\n__decorate([\n Input('yearCellTemplate'),\n __metadata(\"design:type\", YearCellTemplateDirective),\n __metadata(\"design:paramtypes\", [YearCellTemplateDirective])\n], MultiViewCalendarComponent.prototype, \"yearCellTemplateRef\", null);\n__decorate([\n ContentChild(DecadeCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", DecadeCellTemplateDirective)\n], MultiViewCalendarComponent.prototype, \"decadeCellTemplate\", void 0);\n__decorate([\n Input('decadeCellTemplate'),\n __metadata(\"design:type\", DecadeCellTemplateDirective),\n __metadata(\"design:paramtypes\", [DecadeCellTemplateDirective])\n], MultiViewCalendarComponent.prototype, \"decadeCellTemplateRef\", null);\n__decorate([\n ContentChild(CenturyCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", CenturyCellTemplateDirective)\n], MultiViewCalendarComponent.prototype, \"centuryCellTemplate\", void 0);\n__decorate([\n Input('centuryCellTemplate'),\n __metadata(\"design:type\", CenturyCellTemplateDirective),\n __metadata(\"design:paramtypes\", [CenturyCellTemplateDirective])\n], MultiViewCalendarComponent.prototype, \"centuryCellTemplateRef\", null);\n__decorate([\n ContentChild(WeekNumberCellTemplateDirective, { static: true }),\n __metadata(\"design:type\", WeekNumberCellTemplateDirective)\n], MultiViewCalendarComponent.prototype, \"weekNumberTemplate\", void 0);\n__decorate([\n Input('weekNumberTemplate'),\n __metadata(\"design:type\", WeekNumberCellTemplateDirective),\n __metadata(\"design:paramtypes\", [WeekNumberCellTemplateDirective])\n], MultiViewCalendarComponent.prototype, \"weekNumberTemplateRef\", null);\n__decorate([\n ContentChild(HeaderTitleTemplateDirective, { static: true }),\n __metadata(\"design:type\", HeaderTitleTemplateDirective)\n], MultiViewCalendarComponent.prototype, \"headerTitleTemplate\", void 0);\n__decorate([\n Input('headerTitleTemplate'),\n __metadata(\"design:type\", HeaderTitleTemplateDirective),\n __metadata(\"design:paramtypes\", [HeaderTitleTemplateDirective])\n], MultiViewCalendarComponent.prototype, \"headerTitleTemplateRef\", null);\n__decorate([\n ViewChild(HorizontalViewListComponent, { static: false }),\n __metadata(\"design:type\", HorizontalViewListComponent)\n], MultiViewCalendarComponent.prototype, \"viewList\", void 0);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], MultiViewCalendarComponent.prototype, \"widgetId\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], MultiViewCalendarComponent.prototype, \"widgetRole\", null);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], MultiViewCalendarComponent.prototype, \"calendarTabIndex\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], MultiViewCalendarComponent.prototype, \"ariaDisabled\", null);\n__decorate([\n HostBinding('attr.aria-activedescendant'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], MultiViewCalendarComponent.prototype, \"ariaActivedescendant\", null);\n__decorate([\n HostListener(\"blur\"),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], MultiViewCalendarComponent.prototype, \"handleBlur\", null);\n__decorate([\n HostListener(\"focus\"),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], MultiViewCalendarComponent.prototype, \"handleFocus\", null);\n__decorate([\n HostListener(\"mouseenter\"),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], MultiViewCalendarComponent.prototype, \"handleMouseEnter\", null);\n__decorate([\n HostListener(\"mouseleave\"),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], MultiViewCalendarComponent.prototype, \"handleMouseLeave\", null);\n__decorate([\n HostListener(\"mousedown\", ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MultiViewCalendarComponent.prototype, \"handleMousedown\", null);\n__decorate([\n HostListener(\"click\"),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], MultiViewCalendarComponent.prototype, \"handleClick\", null);\n__decorate([\n HostListener(\"keydown\", [\"$event\"]),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MultiViewCalendarComponent.prototype, \"keydown\", null);\nMultiViewCalendarComponent = __decorate([ __metadata(\"design:paramtypes\", [BusViewService,\n ElementRef,\n NavigationService,\n Renderer2,\n ChangeDetectorRef,\n NgZone,\n DisabledDatesService,\n SelectionService])\n], MultiViewCalendarComponent);\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 */\nlet DateRangePopupTemplateDirective = class DateRangePopupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDateRangePopupTemplateDirective.ɵfac = function DateRangePopupTemplateDirective_Factory(t) { return new (t || DateRangePopupTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nDateRangePopupTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DateRangePopupTemplateDirective, selectors: [[\"\", \"kendoDateRangePopupTemplate\", \"\"]] });\nDateRangePopupTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], DateRangePopupTemplateDirective);\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 */\nlet DateRangeService = class DateRangeService {\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 */\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 = function DateRangeService_Factory(t) { return new (t || DateRangeService)(); };\nDateRangeService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DateRangeService, factory: function (t) { return DateRangeService.ɵfac(t); } });\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 */\nlet DateRangePopupComponent = class 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(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the calendar element is focused.\n */\n this.onFocus = new EventEmitter(); //tslint:disable-line:no-output-rename\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 = function DateRangePopupComponent_Factory(t) { return new (t || DateRangePopupComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc5.PopupService), ɵngcc0.ɵɵdirectiveInject(DateRangeService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(RTL, 8)); };\nDateRangePopupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateRangePopupComponent, selectors: [[\"kendo-daterange-popup\"]], contentQueries: function DateRangePopupComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DateRangePopupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MultiViewCalendarComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentCalendar = _t);\n } }, viewQuery: function DateRangePopupComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c17, 5, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c87, 5);\n ɵngcc0.ɵɵviewQuery(MultiViewCalendarComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.defaultTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.viewCalendar = _t);\n } }, inputs: { animate: \"animate\", collision: \"collision\", anchor: \"anchor\", anchorAlign: \"anchorAlign\", appendTo: \"appendTo\", popupAlign: \"popupAlign\", margin: \"margin\" }, outputs: { open: \"open\", close: \"close\", onBlur: \"blur\", onFocus: \"focus\", cancel: \"cancel\" }, exportAs: [\"kendo-daterange-popup\"], decls: 4, vars: 0, consts: [[\"container\", \"\"], [\"defaultTemplate\", \"\"], [\"kendoDateRangeSelection\", \"\"]], template: function DateRangePopupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, null, 0);\n ɵngcc0.ɵɵtemplate(2, DateRangePopupComponent_ng_template_2_Template, 1, 0, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: function () { return [MultiViewCalendarComponent, DateRangeSelectionDirective]; }, encapsulation: 2 });\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: false }),\n __metadata(\"design:type\", ViewContainerRef)\n], DateRangePopupComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('defaultTemplate', { static: false }),\n __metadata(\"design:type\", TemplateRef)\n], DateRangePopupComponent.prototype, \"defaultTemplate\", void 0);\n__decorate([\n ContentChild(DateRangePopupTemplateDirective, { static: false }),\n __metadata(\"design:type\", DateRangePopupTemplateDirective)\n], DateRangePopupComponent.prototype, \"contentTemplate\", void 0);\n__decorate([\n ViewChildren(MultiViewCalendarComponent),\n __metadata(\"design:type\", QueryList)\n], DateRangePopupComponent.prototype, \"viewCalendar\", void 0);\n__decorate([\n ContentChildren(MultiViewCalendarComponent),\n __metadata(\"design:type\", QueryList)\n], DateRangePopupComponent.prototype, \"contentCalendar\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateRangePopupComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ElementRef)\n], DateRangePopupComponent.prototype, \"anchor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateRangePopupComponent.prototype, \"anchorAlign\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateRangePopupComponent.prototype, \"appendTo\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateRangePopupComponent.prototype, \"collision\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateRangePopupComponent.prototype, \"popupAlign\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateRangePopupComponent.prototype, \"margin\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateRangePopupComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateRangePopupComponent.prototype, \"close\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DateRangePopupComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DateRangePopupComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateRangePopupComponent.prototype, \"cancel\", void 0);\nDateRangePopupComponent = __decorate([ __param(4, Optional()), __param(4, Inject(RTL)),\n __metadata(\"design:paramtypes\", [PopupService,\n DateRangeService,\n ChangeDetectorRef,\n NgZone, Boolean])\n], DateRangePopupComponent);\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 */\nlet DateRangeComponent = class DateRangeComponent {\n constructor() {\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 = function DateRangeComponent_Factory(t) { return new (t || DateRangeComponent)(); };\nDateRangeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateRangeComponent, selectors: [[\"kendo-daterange\"]], contentQueries: function DateRangeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DateRangePopupComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentPopup = _t);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([DateRangeService])], ngContentSelectors: _c0, decls: 2, vars: 1, consts: [[4, \"ngIf\"]], template: function DateRangeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, DateRangeComponent_kendo_daterange_popup_1_Template, 1, 0, \"kendo-daterange-popup\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDefault);\n } }, directives: [ɵngcc2.NgIf, DateRangePopupComponent], encapsulation: 2 });\n__decorate([\n ContentChildren(DateRangePopupComponent),\n __metadata(\"design:type\", QueryList)\n], DateRangeComponent.prototype, \"contentPopup\", void 0);\nDateRangeComponent = __decorate([ __metadata(\"design:paramtypes\", [])\n], DateRangeComponent);\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.querySelector('.k-dateinput-wrap'), 'k-state-focused');\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 */\nlet DateRangeEndInputDirective = class 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$$1) {\n const { end } = range$$1 || 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 = function DateRangeEndInputDirective_Factory(t) { return new (t || DateRangeEndInputDirective)(ɵngcc0.ɵɵdirectiveInject(DateRangeService), ɵngcc0.ɵɵdirectiveInject(DateInputComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nDateRangeEndInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DateRangeEndInputDirective, selectors: [[\"\", \"kendoDateRangeEndInput\", \"\"]], inputs: { navigateCalendarOnFocus: \"navigateCalendarOnFocus\", autoCorrectOn: \"autoCorrectOn\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateRangeEndInputDirective.prototype, \"autoCorrectOn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateRangeEndInputDirective.prototype, \"navigateCalendarOnFocus\", void 0);\nDateRangeEndInputDirective = __decorate([ __metadata(\"design:paramtypes\", [DateRangeService,\n DateInputComponent,\n ElementRef,\n Renderer2,\n NgZone])\n], DateRangeEndInputDirective);\n\n/**\n * A directive which manages the start selection range.\n *\n * > You can use the DateRangeStartInputDirective only with a DateInput component.\n */\nlet DateRangeStartInputDirective = class 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$$1) {\n const { start } = range$$1 || 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 = function DateRangeStartInputDirective_Factory(t) { return new (t || DateRangeStartInputDirective)(ɵngcc0.ɵɵdirectiveInject(DateRangeService), ɵngcc0.ɵɵdirectiveInject(DateInputComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nDateRangeStartInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DateRangeStartInputDirective, selectors: [[\"\", \"kendoDateRangeStartInput\", \"\"]], inputs: { navigateCalendarOnFocus: \"navigateCalendarOnFocus\", autoCorrectOn: \"autoCorrectOn\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateRangeStartInputDirective.prototype, \"autoCorrectOn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateRangeStartInputDirective.prototype, \"navigateCalendarOnFocus\", void 0);\nDateRangeStartInputDirective = __decorate([ __metadata(\"design:paramtypes\", [DateRangeService,\n DateInputComponent,\n ElementRef,\n Renderer2,\n NgZone])\n], DateRangeStartInputDirective);\n\n/**\n * A directive which manages the MultiViewCalendar range selection.\n */\nlet DateRangeSelectionDirective = class 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$$1) {\n if (!this.isEqualCalendarRange(range$$1)) {\n this.setSelectionRange(range$$1);\n }\n if (!isEqualRange(this.dateRangeService.selectionRange, range$$1)) {\n this.dateRangeService.setRange(range$$1);\n }\n this.updateFocusedDate(range$$1);\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$$1 => {\n if (!this.isEqualCalendarRange(range$$1)) {\n this.acceptAndEmit(range$$1);\n }\n this.updateFocusedDate(range$$1);\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$$1) {\n return isEqualRange(this.calendar.selectionRange, range$$1);\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$$1 = autoCorrect ? clampRange(value) : this.updateRange(value);\n if (!isEqualRange(service.selectionRange, range$$1)) {\n this.acceptAndEmit(range$$1);\n service.setActiveRangeEnd(activeEnd);\n service.setRange(range$$1);\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$$1) {\n if (!range$$1 || this.dateRangeService.focusedDate) {\n return;\n }\n this.dateRangeService.setFocusedDate(range$$1.start || range$$1.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$$1) {\n this.calendar.selectionRange = range$$1;\n this.calendar.writeValue(null);\n }\n acceptAndEmit(range$$1) {\n this.setSelectionRange(range$$1);\n this.selectionRangeChange.emit(range$$1);\n }\n};\nDateRangeSelectionDirective.ɵfac = function DateRangeSelectionDirective_Factory(t) { return new (t || DateRangeSelectionDirective)(ɵngcc0.ɵɵdirectiveInject(MultiViewCalendarComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DateRangeService, 8)); };\nDateRangeSelectionDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DateRangeSelectionDirective, selectors: [[\"\", \"kendoDateRangeSelection\", \"\"]], inputs: { autoCorrectOn: \"autoCorrectOn\", selectionRange: \"selectionRange\", activeRangeEnd: \"activeRangeEnd\" }, outputs: { activeRangeEndChange: \"activeRangeEndChange\", selectionRangeChange: \"selectionRangeChange\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateRangeSelectionDirective.prototype, \"autoCorrectOn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DateRangeSelectionDirective.prototype, \"selectionRange\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], DateRangeSelectionDirective.prototype, \"activeRangeEnd\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateRangeSelectionDirective.prototype, \"activeRangeEndChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DateRangeSelectionDirective.prototype, \"selectionRangeChange\", void 0);\nDateRangeSelectionDirective = __decorate([ __param(4, Optional()),\n __metadata(\"design:paramtypes\", [MultiViewCalendarComponent,\n ChangeDetectorRef,\n ElementRef,\n Renderer2,\n DateRangeService])\n], DateRangeSelectionDirective);\n\n/* tslint:disable:directive-class-suffix directive-selector */\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 */\nlet KForOf = class 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 = function KForOf_Factory(t) { return new (t || KForOf)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers)); };\nKForOf.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: KForOf, selectors: [[\"\", \"kFor\", \"\", \"kForOf\", \"\"]], inputs: { kForTemplate: \"kForTemplate\", kForOf: \"kForOf\", kForTrackBy: \"kForTrackBy\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], KForOf.prototype, \"kForOf\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], KForOf.prototype, \"kForTrackBy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], KForOf.prototype, \"kForTemplate\", null);\nKForOf = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef,\n TemplateRef,\n IterableDiffers])\n], KForOf);\n/**\n * @hidden\n */\nfunction getTypeNameForDebugging(type) {\n return type.name || typeof type;\n}\n\n/**\n * @hidden\n */\nlet HeaderComponent = class 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 = function HeaderComponent_Factory(t) { return new (t || HeaderComponent)(ɵngcc0.ɵɵdirectiveInject(BusViewService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(DisabledDatesService)); };\nHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HeaderComponent, selectors: [[\"kendo-calendar-header\"]], hostVars: 4, hostBindings: function HeaderComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-calendar-header\", ctx.getComponentClass)(\"k-hstack\", ctx.getComponentClass);\n } }, inputs: { min: \"min\", max: \"max\", rangeLength: \"rangeLength\", isPrevDisabled: \"isPrevDisabled\", isNextDisabled: \"isNextDisabled\", showNavigationButtons: \"showNavigationButtons\", activeView: \"activeView\", currentDate: \"currentDate\", templateRef: \"templateRef\" }, outputs: { todayButtonClick: \"todayButtonClick\", prevButtonClick: \"prevButtonClick\", nextButtonClick: \"nextButtonClick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 9, vars: 23, consts: [[1, \"k-button\", \"k-flat\", \"k-title\", \"k-calendar-title\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [3, \"ngIf\"], [3, \"ngIf\", \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"k-spacer\"], [1, \"k-calendar-nav\", \"k-hstack\"], [\"class\", \"k-button k-flat k-icon-button k-prev-view\", \"type\", \"button\", 3, \"disabled\", \"title\", \"click\", 4, \"ngIf\"], [1, \"k-today\", \"k-nav-today\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [\"class\", \"k-button k-flat k-icon-button k-next-view\", \"type\", \"button\", 3, \"disabled\", \"title\", \"click\", 4, \"ngIf\"], [\"type\", \"button\", 1, \"k-button\", \"k-flat\", \"k-icon-button\", \"k-prev-view\", 3, \"disabled\", \"title\", \"click\"], [1, \"k-icon\", \"k-i-arrow-60-left\"], [\"type\", \"button\", 1, \"k-button\", \"k-flat\", \"k-icon-button\", \"k-next-view\", 3, \"disabled\", \"title\", \"click\"], [1, \"k-icon\", \"k-i-arrow-60-right\"]], template: function HeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵtemplate(1, HeaderComponent_ng_template_1_Template, 1, 1, \"ng-template\", 1);\n ɵngcc0.ɵɵtemplate(2, HeaderComponent_ng_template_2_Template, 0, 0, \"ng-template\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"span\", 3);\n ɵngcc0.ɵɵelementStart(4, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, HeaderComponent_button_5_Template, 2, 3, \"button\", 5);\n ɵngcc0.ɵɵelementStart(6, \"span\", 6);\n ɵngcc0.ɵɵtext(7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, HeaderComponent_button_8_Template, 2, 3, \"button\", 7);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", !ctx.navigate);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(15, _c3, ctx.handleNavigation))(\"scope\", ctx);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.templateRef)(\"ngTemplateOutlet\", ctx.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(17, _c2, ctx.title, ctx.activeViewValue, ctx.currentDate));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationButtons);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", !ctx.todayAvailable);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(21, _c3, ctx.handleTodayClick))(\"scope\", ctx);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.todayMessage, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationButtons);\n } }, directives: [ɵngcc3.EventsOutsideAngularDirective, ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], HeaderComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], HeaderComponent.prototype, \"currentDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], HeaderComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], HeaderComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], HeaderComponent.prototype, \"rangeLength\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], HeaderComponent.prototype, \"templateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"isPrevDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"isNextDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"showNavigationButtons\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], HeaderComponent.prototype, \"todayButtonClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], HeaderComponent.prototype, \"prevButtonClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], HeaderComponent.prototype, \"nextButtonClick\", void 0);\n__decorate([\n HostBinding(\"class.k-calendar-header\"),\n HostBinding(\"class.k-hstack\"),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"getComponentClass\", void 0);\nHeaderComponent = __decorate([ __metadata(\"design:paramtypes\", [BusViewService,\n ChangeDetectorRef,\n LocalizationService,\n IntlService,\n DisabledDatesService])\n], HeaderComponent);\n\n/**\n * @hidden\n */\nlet ViewComponent = class 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-state-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 = function ViewComponent_Factory(t) { return new (t || ViewComponent)(ɵngcc0.ɵɵdirectiveInject(BusViewService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DisabledDatesService)); };\nViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ViewComponent, selectors: [[\"\", \"kendoCalendarView\", \"\"]], inputs: { direction: \"direction\", isActive: \"isActive\", selectedDates: \"selectedDates\", weekNumber: \"weekNumber\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", viewDate: \"viewDate\", activeRangeEnd: \"activeRangeEnd\", selectionRange: \"selectionRange\", min: \"min\", max: \"max\", viewIndex: \"viewIndex\", templateRef: \"templateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c88, decls: 4, vars: 2, consts: [[\"emptyCell\", \"\"], [\"class\", \"k-calendar-tr\", \"role\", \"row\", 4, \"ngIf\"], [\"class\", \"k-calendar-tr\", \"role\", \"row\", 4, \"kFor\", \"kForOf\"], [1, \"k-empty\", \"k-calendar-td\"], [\"role\", \"row\", 1, \"k-calendar-tr\"], [\"scope\", \"col\", 1, \"k-calendar-caption\", 3, \"colSpan\"], [3, \"ngIf\"], [4, \"kFor\", \"kForOf\"], [\"class\", \"k-alt k-calendar-td\", 3, \"kendoEventsOutsideAngular\", 4, \"ngIf\", \"ngIfElse\"], [1, \"k-alt\", \"k-calendar-td\", 3, \"kendoEventsOutsideAngular\"], [3, \"ngIf\", \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"k-calendar-td\", \"role\", \"gridcell\", 3, \"ngClass\", \"title\", 4, \"ngIf\", \"ngIfElse\"], [\"role\", \"gridcell\", 1, \"k-calendar-td\", 3, \"ngClass\", \"title\"], [1, \"k-link\"], [4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function ViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ViewComponent_ng_template_0_Template, 2, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, ViewComponent_tr_2_Template, 3, 2, \"tr\", 1);\n ɵngcc0.ɵɵtemplate(3, ViewComponent_tr_3_Template, 3, 2, \"tr\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.isHorizontal());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kForOf\", ctx.data);\n } }, directives: [ɵngcc2.NgIf, KForOf, ɵngcc3.EventsOutsideAngularDirective, ɵngcc2.NgTemplateOutlet, ɵngcc2.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ViewComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ViewComponent.prototype, \"isActive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ViewComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ViewComponent.prototype, \"cellUID\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ViewComponent.prototype, \"focusedDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ViewComponent.prototype, \"viewDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ViewComponent.prototype, \"activeRangeEnd\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ViewComponent.prototype, \"selectionRange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ViewComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ViewComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ViewComponent.prototype, \"selectedDates\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ViewComponent.prototype, \"weekNumber\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ViewComponent.prototype, \"viewIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ViewComponent.prototype, \"templateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ViewComponent.prototype, \"weekNumberTemplateRef\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewComponent.prototype, \"cellClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewComponent.prototype, \"weekNumberCellClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewComponent.prototype, \"cellEnter\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ViewComponent.prototype, \"cellLeave\", void 0);\nViewComponent = __decorate([ __metadata(\"design:paramtypes\", [BusViewService,\n IntlService,\n ChangeDetectorRef,\n ElementRef,\n NgZone,\n Renderer2,\n DisabledDatesService])\n], ViewComponent);\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 */\nlet CalendarCommonModule = class CalendarCommonModule {\n};\nCalendarCommonModule.ɵfac = function CalendarCommonModule_Factory(t) { return new (t || CalendarCommonModule)(); };\nCalendarCommonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarCommonModule });\nCalendarCommonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule]] });\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 */\nlet TemplatesModule = class TemplatesModule {\n};\nTemplatesModule.ɵfac = function TemplatesModule_Factory(t) { return new (t || TemplatesModule)(); };\nTemplatesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TemplatesModule });\nTemplatesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { today: \"today\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"today\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"prevButtonTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"nextButtonTitle\", void 0);\n\nvar MultiViewCalendarLocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet MultiViewCalendarLocalizedMessagesDirective = MultiViewCalendarLocalizedMessagesDirective_1 = class MultiViewCalendarLocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nMultiViewCalendarLocalizedMessagesDirective.ɵfac = function MultiViewCalendarLocalizedMessagesDirective_Factory(t) { return new (t || MultiViewCalendarLocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nMultiViewCalendarLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MultiViewCalendarLocalizedMessagesDirective, selectors: [[\"\", \"kendoMultiViewCalendarLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => MultiViewCalendarLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nMultiViewCalendarLocalizedMessagesDirective = MultiViewCalendarLocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], MultiViewCalendarLocalizedMessagesDirective);\n\nvar MultiViewCalendarCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nlet MultiViewCalendarCustomMessagesComponent = MultiViewCalendarCustomMessagesComponent_1 = class MultiViewCalendarCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nMultiViewCalendarCustomMessagesComponent.ɵfac = function MultiViewCalendarCustomMessagesComponent_Factory(t) { return new (t || MultiViewCalendarCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nMultiViewCalendarCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MultiViewCalendarCustomMessagesComponent, selectors: [[\"kendo-multiviewcalendar-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => MultiViewCalendarCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function MultiViewCalendarCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nMultiViewCalendarCustomMessagesComponent = MultiViewCalendarCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], MultiViewCalendarCustomMessagesComponent);\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 */\nlet MultiViewCalendarModule = class MultiViewCalendarModule {\n};\nMultiViewCalendarModule.ɵfac = function MultiViewCalendarModule_Factory(t) { return new (t || MultiViewCalendarModule)(); };\nMultiViewCalendarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MultiViewCalendarModule });\nMultiViewCalendarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n NavigationService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ], imports: [[CommonModule, CalendarCommonModule, IntlModule, TemplatesModule, PopupModule], CalendarCommonModule, TemplatesModule] });\n\n/**\n * @hidden\n */\nclass CalendarMessages extends ComponentMessages {\n}\nCalendarMessages.ɵfac = /*@__PURE__*/ function () { let ɵCalendarMessages_BaseFactory; return function CalendarMessages_Factory(t) { return (ɵCalendarMessages_BaseFactory || (ɵCalendarMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(CalendarMessages)))(t || CalendarMessages); }; }();\nCalendarMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarMessages, inputs: { today: \"today\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarMessages.prototype, \"today\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarMessages.prototype, \"prevButtonTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarMessages.prototype, \"nextButtonTitle\", void 0);\n\nvar CalendarLocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet CalendarLocalizedMessagesDirective = CalendarLocalizedMessagesDirective_1 = class CalendarLocalizedMessagesDirective extends CalendarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nCalendarLocalizedMessagesDirective.ɵfac = function CalendarLocalizedMessagesDirective_Factory(t) { return new (t || CalendarLocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nCalendarLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarLocalizedMessagesDirective, selectors: [[\"\", \"kendoCalendarLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nCalendarLocalizedMessagesDirective = CalendarLocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CalendarLocalizedMessagesDirective);\n\nvar CalendarCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nlet CalendarCustomMessagesComponent = CalendarCustomMessagesComponent_1 = class CalendarCustomMessagesComponent extends CalendarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nCalendarCustomMessagesComponent.ɵfac = function CalendarCustomMessagesComponent_Factory(t) { return new (t || CalendarCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nCalendarCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarCustomMessagesComponent, selectors: [[\"kendo-calendar-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarCustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CalendarCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nCalendarCustomMessagesComponent = CalendarCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CalendarCustomMessagesComponent);\n\nconst COMPONENT_DIRECTIVES = [\n VirtualizationComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Virtualization component.\n */\nlet VirtualizationModule = class VirtualizationModule {\n};\nVirtualizationModule.ɵfac = function VirtualizationModule_Factory(t) { return new (t || VirtualizationModule)(); };\nVirtualizationModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: VirtualizationModule });\nVirtualizationModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\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 */\nlet CalendarModule = class CalendarModule {\n};\nCalendarModule.ɵfac = function CalendarModule_Factory(t) { return new (t || CalendarModule)(); };\nCalendarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarModule });\nCalendarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ 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, TemplatesModule] });\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 */\nlet CalendarsModule = class CalendarsModule {\n};\nCalendarsModule.ɵfac = function CalendarsModule_Factory(t) { return new (t || CalendarsModule)(); };\nCalendarsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarsModule });\nCalendarsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CalendarModule,\n MultiViewCalendarModule\n ], CalendarModule, MultiViewCalendarModule] });\n\n/**\n * @hidden\n */\nclass DateInputMessages extends ComponentMessages {\n}\nDateInputMessages.ɵfac = /*@__PURE__*/ function () { let ɵDateInputMessages_BaseFactory; return function DateInputMessages_Factory(t) { return (ɵDateInputMessages_BaseFactory || (ɵDateInputMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DateInputMessages)))(t || DateInputMessages); }; }();\nDateInputMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DateInputMessages, inputs: { decrement: \"decrement\", increment: \"increment\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateInputMessages.prototype, \"decrement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateInputMessages.prototype, \"increment\", void 0);\n\nvar DateInputLocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet DateInputLocalizedMessagesDirective = DateInputLocalizedMessagesDirective_1 = class DateInputLocalizedMessagesDirective extends DateInputMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nDateInputLocalizedMessagesDirective.ɵfac = function DateInputLocalizedMessagesDirective_Factory(t) { return new (t || DateInputLocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nDateInputLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DateInputLocalizedMessagesDirective, selectors: [[\"\", \"kendoDateInputLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nDateInputLocalizedMessagesDirective = DateInputLocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], DateInputLocalizedMessagesDirective);\n\nvar DateInputCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nlet DateInputCustomMessagesComponent = DateInputCustomMessagesComponent_1 = class DateInputCustomMessagesComponent extends DateInputMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nDateInputCustomMessagesComponent.ɵfac = function DateInputCustomMessagesComponent_Factory(t) { return new (t || DateInputCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nDateInputCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateInputCustomMessagesComponent, selectors: [[\"kendo-dateinput-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function DateInputCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nDateInputCustomMessagesComponent = DateInputCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], DateInputCustomMessagesComponent);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DateInput component.\n */\nlet DateInputModule = class DateInputModule {\n};\nDateInputModule.ɵfac = function DateInputModule_Factory(t) { return new (t || DateInputModule)(); };\nDateInputModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DateInputModule });\nDateInputModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, IntlModule, EventsModule]] });\n\n/**\n * @hidden\n */\nclass DatePickerMessages extends ComponentMessages {\n}\nDatePickerMessages.ɵfac = /*@__PURE__*/ function () { let ɵDatePickerMessages_BaseFactory; return function DatePickerMessages_Factory(t) { return (ɵDatePickerMessages_BaseFactory || (ɵDatePickerMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DatePickerMessages)))(t || DatePickerMessages); }; }();\nDatePickerMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DatePickerMessages, inputs: { today: \"today\", toggle: \"toggle\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerMessages.prototype, \"today\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerMessages.prototype, \"toggle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerMessages.prototype, \"prevButtonTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DatePickerMessages.prototype, \"nextButtonTitle\", void 0);\n\nvar DatePickerLocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet DatePickerLocalizedMessagesDirective = DatePickerLocalizedMessagesDirective_1 = class DatePickerLocalizedMessagesDirective extends DatePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nDatePickerLocalizedMessagesDirective.ɵfac = function DatePickerLocalizedMessagesDirective_Factory(t) { return new (t || DatePickerLocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nDatePickerLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DatePickerLocalizedMessagesDirective, selectors: [[\"\", \"kendoDatePickerLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nDatePickerLocalizedMessagesDirective = DatePickerLocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], DatePickerLocalizedMessagesDirective);\n\nvar DatePickerCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nlet DatePickerCustomMessagesComponent = DatePickerCustomMessagesComponent_1 = class DatePickerCustomMessagesComponent extends DatePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nDatePickerCustomMessagesComponent.ɵfac = function DatePickerCustomMessagesComponent_Factory(t) { return new (t || DatePickerCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nDatePickerCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DatePickerCustomMessagesComponent, selectors: [[\"kendo-datepicker-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function DatePickerCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nDatePickerCustomMessagesComponent = DatePickerCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], DatePickerCustomMessagesComponent);\n\nconst ɵ0$e = touchEnabled;\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DatePicker component.\n */\nlet DatePickerModule = class DatePickerModule {\n};\nDatePickerModule.ɵfac = function DatePickerModule_Factory(t) { return new (t || DatePickerModule)(); };\nDatePickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DatePickerModule });\nDatePickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$e }], imports: [[\n CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule\n ], TemplatesModule] });\n\nconst COMPONENT_DIRECTIVES$1 = [\n DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective\n];\nconst COMPONENT_MODULES = [\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 * - `MultiViewCalendarModule`—The MultiViewCalendar module.\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 */\nlet DateRangeModule = class DateRangeModule {\n};\nDateRangeModule.ɵfac = function DateRangeModule_Factory(t) { return new (t || DateRangeModule)(); };\nDateRangeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DateRangeModule });\nDateRangeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, COMPONENT_MODULES]] });\n\nconst div$1 = domContainerFactory('div');\nconst ul$1 = domContainerFactory('ul');\nconst li$1 = domContainerFactory('li');\nconst listItem = () => li$1('02', 'k-item');\nconst list = () => ul$1([listItem()], 'k-reset');\nconst scrollable$1 = () => (div$1([list()], 'k-time-container k-content k-scrollable'));\nconst timeListWrapper = () => {\n if (!isDocumentAvailable()) {\n return null;\n }\n return div$1([div$1([scrollable$1()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });\n};\nconst TIMELIST_WRAPPER = timeListWrapper();\n/**\n * @hidden\n */\nlet TimePickerDOMService = class 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 = function TimePickerDOMService_Factory(t) { return new (t || TimePickerDOMService)(); };\nTimePickerDOMService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TimePickerDOMService, factory: function (t) { return TimePickerDOMService.ɵfac(t); } });\n\nconst HOURS_IN_DAY = 24;\nconst clampToRange = (rangeValue) => (value) => value % rangeValue;\nconst clamp = clampToRange(HOURS_IN_DAY);\nconst stepper = (start, step) => (idx) => clamp(start + (idx * step));\nconst distanceFromMin = (value, min) => clamp(HOURS_IN_DAY + value - min);\nconst limit = (borderValue) => (barrier, value) => {\n const useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n return useBarrier ? barrier : setHours(barrier, borderValue);\n};\nconst limitDown = limit(0);\nconst limitUp = limit(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\nlet HoursService = class HoursService {\n constructor(intl) {\n this.intl = intl;\n this.boundRange = false;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setHours(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(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(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(min, value), limitUp(max, value)] : [min, max];\n }\n total(value) {\n const last$$1 = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last$$1;\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(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(this.max, this.lastHour(value)));\n }\n divideByStep(value) {\n return distanceFromMin(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 = function HoursService_Factory(t) { return new (t || HoursService)(ɵngcc0.ɵɵinject(ɵngcc1.IntlService)); };\nHoursService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HoursService, factory: function (t) { return HoursService.ɵfac(t); } });\nHoursService = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], HoursService);\n\nconst MINUTES_IN_HOUR = 60;\nconst clampToRange$1 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$1 = clampToRange$1(MINUTES_IN_HOUR);\nconst stepper$1 = (start, step) => (idx) => clamp$1(start + (idx * step));\nconst distanceFromMin$1 = (value, min) => clamp$1(MINUTES_IN_HOUR + value - min);\nconst limit$1 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setMinutes(barrier, borderValue);\n};\nconst limitDown$1 = limit$1(0);\nconst limitUp$1 = limit$1(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\nlet MinutesService = class 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$1(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$1(min, value), limitUp$1(max, value)];\n }\n total(value) {\n const last$$1 = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last$$1;\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$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(setMinutes(this.max, this.lastMinute(value)));\n }\n divideByStep(value) {\n return distanceFromMin$1(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 = function MinutesService_Factory(t) { return new (t || MinutesService)(ɵngcc0.ɵɵinject(ɵngcc1.IntlService)); };\nMinutesService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MinutesService, factory: function (t) { return MinutesService.ɵfac(t); } });\nMinutesService = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], MinutesService);\n\nconst SECONDS_IN_HOUR = 60;\nconst clampToRange$2 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$2 = clampToRange$2(SECONDS_IN_HOUR);\nconst stepper$2 = (start, step) => (idx) => clamp$2(start + (idx * step));\nconst distanceFromMin$2 = (value, min) => clamp$2(SECONDS_IN_HOUR + value - min);\nconst limit$2 = (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$2 = limit$2(0);\nconst limitUp$2 = limit$2(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\nlet SecondsService = class 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$2(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$2(min, value), limitUp$2(max, value)];\n }\n total(value) {\n const last$$1 = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last$$1;\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$2(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$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(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 = function SecondsService_Factory(t) { return new (t || SecondsService)(ɵngcc0.ɵɵinject(ɵngcc1.IntlService)); };\nSecondsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SecondsService, factory: function (t) { return SecondsService.ɵfac(t); } });\nSecondsService = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], SecondsService);\n\nconst MILLISECONDS_IN_SECOND = 1000;\nconst clampToRange$3 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$3 = clampToRange$3(MILLISECONDS_IN_SECOND);\nconst stepper$3 = (start, step) => (idx) => clamp$3(start + (idx * step));\nconst distanceFromMin$3 = (value, min) => clamp$3(MILLISECONDS_IN_SECOND + value - min);\nconst limit$3 = (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$3 = limit$3(0);\nconst limitUp$3 = limit$3(MILLISECONDS_IN_SECOND - 1);\n/**\n * @hidden\n */\nlet MillisecondsService = class 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$3(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$3(min, value), limitUp$3(max, value)];\n }\n total(value) {\n const last$$1 = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last$$1;\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$3(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$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(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 = function MillisecondsService_Factory(t) { return new (t || MillisecondsService)(ɵngcc0.ɵɵinject(ɵngcc1.IntlService)); };\nMillisecondsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MillisecondsService, factory: function (t) { return MillisecondsService.ɵfac(t); } });\nMillisecondsService = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], MillisecondsService);\n\nconst setHours$1 = (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 */\nlet DayPeriodService = class 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$1(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$1(this.min, min) });\n }\n if (isPM(max)) {\n data.push({ text: dayPeriod.pm, value: setHours$1(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 = function DayPeriodService_Factory(t) { return new (t || DayPeriodService)(ɵngcc0.ɵɵinject(ɵngcc1.IntlService)); };\nDayPeriodService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DayPeriodService, factory: function (t) { return DayPeriodService.ɵfac(t); } });\nDayPeriodService = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], DayPeriodService);\n\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$1 = {\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 */\nlet TimeListComponent = class 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$1[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 = function TimeListComponent_Factory(t) { return new (t || TimeListComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(TimePickerDOMService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nTimeListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TimeListComponent, selectors: [[\"kendo-timelist\"]], viewQuery: function TimeListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(VirtualizationComponent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.virtualization = _t.first);\n } }, hostVars: 3, hostBindings: function TimeListComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.tabIndex);\n ɵngcc0.ɵɵclassProp(\"k-time-list\", ctx.componentClass);\n } }, inputs: { min: \"min\", max: \"max\", step: \"step\", disabled: \"disabled\", value: \"value\", part: \"part\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 13, consts: [[\"role\", \"presentation\", \"tabindex\", \"-1\", 1, \"k-time-container\", 3, \"skip\", \"take\", \"total\", \"itemHeight\", \"maxScrollDifference\", \"topOffset\", \"bottomOffset\"], [1, \"k-reset\", 3, \"ngStyle\", \"kendoEventsOutsideAngular\", \"scope\"], [\"class\", \"k-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-item\"]], template: function TimeListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-virtualization\", 0);\n ɵngcc0.ɵɵelementStart(1, \"ul\", 1);\n ɵngcc0.ɵɵtemplate(2, TimeListComponent_li_2_Template, 3, 2, \"li\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"skip\", ctx.skip)(\"take\", ctx.total)(\"total\", ctx.total)(\"itemHeight\", ctx.itemHeight)(\"maxScrollDifference\", ctx.listHeight)(\"topOffset\", ctx.topOffset)(\"bottomOffset\", ctx.bottomOffset);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.style)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(11, _c3, ctx.handleItemClick))(\"scope\", ctx);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data);\n } }, directives: [VirtualizationComponent, ɵngcc2.NgStyle, ɵngcc3.EventsOutsideAngularDirective, ɵngcc2.NgForOf], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], TimeListComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], TimeListComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TimeListComponent.prototype, \"part\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TimeListComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimeListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], TimeListComponent.prototype, \"value\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TimeListComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild(VirtualizationComponent, { static: true }),\n __metadata(\"design:type\", VirtualizationComponent)\n], TimeListComponent.prototype, \"virtualization\", void 0);\n__decorate([\n HostBinding(\"attr.tabindex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], TimeListComponent.prototype, \"tabIndex\", null);\n__decorate([\n HostBinding(\"class.k-time-list\"),\n __metadata(\"design:type\", Boolean)\n], TimeListComponent.prototype, \"componentClass\", void 0);\nTimeListComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Injector,\n TimePickerDOMService,\n Renderer2,\n NgZone])\n], TimeListComponent);\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 ɵ3$7 = (value) => value.getHours(), ɵ4$2 = (_, min) => min.getHours(), ɵ5$1 = (value) => value.getMinutes(), ɵ6$1 = (value, min) => isEqualTillMinute(value, min) ? min.getMinutes() : 0, ɵ7$1 = (value) => value.getSeconds(), ɵ8$1 = (value, min) => isEqualTillSecond(value, min) ? min.getSeconds() : 0, ɵ9$1 = (value) => value.getMilliseconds(), ɵ10$1 = (value, min) => isEqualTillMillisecond(value, min) ? min.getMilliseconds() : 0;\nconst defaultGetters = [\n {\n type: TIME_PART.hour,\n getter: ɵ3$7,\n minGetter: ɵ4$2\n }, {\n type: TIME_PART.minute,\n getter: ɵ5$1,\n minGetter: ɵ6$1\n }, {\n type: TIME_PART.second,\n getter: ɵ7$1,\n minGetter: ɵ8$1\n }, {\n type: TIME_PART.millisecond,\n getter: ɵ9$1,\n minGetter: ɵ10$1\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\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 */\nlet TimeSelectorComponent = class 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 * @hidden\n */\n this.componentClass = true;\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.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 = function TimeSelectorComponent_Factory(t) { return new (t || TimeSelectorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(TimePickerDOMService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(PickerService, 8)); };\nTimeSelectorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TimeSelectorComponent, selectors: [[\"kendo-timeselector\"]], viewQuery: function TimeSelectorComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c90, 5);\n ɵngcc0.ɵɵviewQuery(_c91, 5);\n ɵngcc0.ɵɵviewQuery(_c92, 5);\n ɵngcc0.ɵɵviewQuery(TimeListComponent, 5);\n ɵngcc0.ɵɵviewQuery(_c93, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.accept = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cancel = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.now = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.timeLists = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.timeListWrappers = _t);\n } }, hostVars: 4, hostBindings: function TimeSelectorComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-timeselector\", ctx.componentClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { format: \"format\", min: \"min\", max: \"max\", cancelButton: \"cancelButton\", setButton: \"setButton\", nowButton: \"nowButton\", disabled: \"disabled\", value: \"value\", steps: \"steps\" }, outputs: { valueChange: \"valueChange\", valueReject: \"valueReject\" }, exportAs: [\"kendo-timeselector\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timeselector'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 9, vars: 4, consts: function () { let i18n_94; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Accept button text in the timeselector component\n * @meaning kendo.timeselector.accept\n */\n const MSG_EXTERNAL_5362895271044573681$$DIST_FESM2015_INDEX_JS_95 = goog.getMsg(\"Set\");\n i18n_94 = MSG_EXTERNAL_5362895271044573681$$DIST_FESM2015_INDEX_JS_95;\n }\n else {\n i18n_94 = $localize `:kendo.timeselector.accept|The Accept button text in the timeselector component␟801811aa1609e3f173c86baa82cee037f75a215f␟5362895271044573681:Set`;\n } let i18n_96; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Accept button in the timeselector component\n * @meaning kendo.timeselector.acceptLabel\n */\n const MSG_EXTERNAL_3417396278000787211$$DIST_FESM2015_INDEX_JS_97 = goog.getMsg(\"Set time\");\n i18n_96 = MSG_EXTERNAL_3417396278000787211$$DIST_FESM2015_INDEX_JS_97;\n }\n else {\n i18n_96 = $localize `:kendo.timeselector.acceptLabel|The label for the Accept button in the timeselector component␟b4b1e5ac55f0330f6c4e32b866ae4339ad969978␟3417396278000787211:Set time`;\n } let i18n_98; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Cancel button text in the timeselector component\n * @meaning kendo.timeselector.cancel\n */\n const MSG_EXTERNAL_1890188482755567622$$DIST_FESM2015_INDEX_JS_99 = goog.getMsg(\"Cancel\");\n i18n_98 = MSG_EXTERNAL_1890188482755567622$$DIST_FESM2015_INDEX_JS_99;\n }\n else {\n i18n_98 = $localize `:kendo.timeselector.cancel|The Cancel button text in the timeselector component␟3004d7704ffa6202a3b3925fcea490e486203a3e␟1890188482755567622:Cancel`;\n } let i18n_100; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Cancel button in the timeselector component\n * @meaning kendo.timeselector.cancelLabel\n */\n const MSG_EXTERNAL_5738120209397145846$$DIST_FESM2015_INDEX_JS_101 = goog.getMsg(\"Cancel changes\");\n i18n_100 = MSG_EXTERNAL_5738120209397145846$$DIST_FESM2015_INDEX_JS_101;\n }\n else {\n i18n_100 = $localize `:kendo.timeselector.cancelLabel|The label for the Cancel button in the timeselector component␟08dfbdfffd662371a6ff4c0b6ed82b9faa48143b␟5738120209397145846:Cancel changes`;\n } let i18n_102; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Now button text in the timeselector component\n * @meaning kendo.timeselector.now\n */\n const MSG_EXTERNAL_1926162752852226109$$DIST_FESM2015_INDEX_JS_103 = goog.getMsg(\"Now\");\n i18n_102 = MSG_EXTERNAL_1926162752852226109$$DIST_FESM2015_INDEX_JS_103;\n }\n else {\n i18n_102 = $localize `:kendo.timeselector.now|The Now button text in the timeselector component␟98cba1ae36a7bbe15e1bac1837e07922ec109e7d␟1926162752852226109:Now`;\n } let i18n_104; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Now button in the timeselector component\n * @meaning kendo.timeselector.nowLabel\n */\n const MSG_EXTERNAL_7789175884909488647$$DIST_FESM2015_INDEX_JS_105 = goog.getMsg(\"Select now\");\n i18n_104 = MSG_EXTERNAL_7789175884909488647$$DIST_FESM2015_INDEX_JS_105;\n }\n else {\n i18n_104 = $localize `:kendo.timeselector.nowLabel|The label for the Now button in the timeselector component␟08e6a8a51d970609e138950fdd89c5cf201869f3␟7789175884909488647:Select now`;\n } return [[\"kendoTimeSelectorLocalizedMessages\", \"\", \"accept\", i18n_94, \"acceptLabel\", i18n_96, \"cancel\", i18n_98, \"cancelLabel\", i18n_100, \"now\", i18n_102, \"nowLabel\", i18n_104], [1, \"k-time-header\"], [1, \"k-title\", \"k-timeselector-title\"], [\"class\", \"k-button k-flat k-time-now\", \"type\", \"button\", 3, \"kendoEventsOutsideAngular\", \"scope\", \"disabled\", 4, \"ngIf\"], [1, \"k-time-list-container\"], [1, \"k-time-highlight\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"class\", \"k-time-footer k-action-buttons\", 4, \"ngIf\"], [\"type\", \"button\", 1, \"k-button\", \"k-flat\", \"k-time-now\", 3, \"kendoEventsOutsideAngular\", \"scope\", \"disabled\"], [\"now\", \"\"], [\"class\", \"k-time-list-wrapper\", \"role\", \"presentation\", \"tabindex\", \"-1\", 4, \"ngIf\"], [\"class\", \"k-time-separator\", 4, \"ngIf\"], [\"role\", \"presentation\", \"tabindex\", \"-1\", 1, \"k-time-list-wrapper\"], [\"listWrapper\", \"\"], [3, \"min\", \"max\", \"part\", \"step\", \"disabled\", \"value\", \"kendoEventsOutsideAngular\", \"scope\", \"valueChange\"], [1, \"k-time-separator\"], [1, \"k-time-footer\", \"k-action-buttons\"], [\"class\", \"k-button k-time-cancel\", \"type\", \"button\", 3, \"kendoEventsOutsideAngular\", \"scope\", \"disabled\", 4, \"ngIf\"], [\"type\", \"button\", \"class\", \"k-time-accept k-button k-primary\", 3, \"kendoEventsOutsideAngular\", \"scope\", \"disabled\", 4, \"ngIf\"], [\"type\", \"button\", 1, \"k-button\", \"k-time-cancel\", 3, \"kendoEventsOutsideAngular\", \"scope\", \"disabled\"], [\"cancel\", \"\"], [\"type\", \"button\", 1, \"k-time-accept\", \"k-button\", \"k-primary\", 3, \"kendoEventsOutsideAngular\", \"scope\", \"disabled\"], [\"accept\", \"\"]]; }, template: function TimeSelectorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"span\", 2);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, TimeSelectorComponent_button_4_Template, 3, 10, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"div\", 4);\n ɵngcc0.ɵɵelement(6, \"span\", 5);\n ɵngcc0.ɵɵtemplate(7, TimeSelectorComponent_ng_template_7_Template, 2, 2, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, TimeSelectorComponent_div_8_Template, 3, 2, \"div\", 7);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.intl.formatDate(ctx.current, ctx.format), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNowButton);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.dateFormatParts);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.setButton || ctx.cancelButton);\n } }, directives: function () { return [TimeSelectorLocalizedMessagesDirective, ɵngcc2.NgIf, ɵngcc3.EventsOutsideAngularDirective, ɵngcc2.NgForOf, TimeListComponent]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n ViewChild('accept', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], TimeSelectorComponent.prototype, \"accept\", void 0);\n__decorate([\n ViewChild('cancel', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], TimeSelectorComponent.prototype, \"cancel\", void 0);\n__decorate([\n ViewChild('now', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], TimeSelectorComponent.prototype, \"now\", void 0);\n__decorate([\n ViewChildren(TimeListComponent),\n __metadata(\"design:type\", QueryList)\n], TimeSelectorComponent.prototype, \"timeLists\", void 0);\n__decorate([\n ViewChildren('listWrapper'),\n __metadata(\"design:type\", QueryList)\n], TimeSelectorComponent.prototype, \"timeListWrappers\", void 0);\n__decorate([\n HostBinding('class.k-timeselector'),\n __metadata(\"design:type\", Boolean)\n], TimeSelectorComponent.prototype, \"componentClass\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TimeSelectorComponent.prototype, \"disabledClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimeSelectorComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], TimeSelectorComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], TimeSelectorComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimeSelectorComponent.prototype, \"cancelButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimeSelectorComponent.prototype, \"setButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimeSelectorComponent.prototype, \"nowButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TimeSelectorComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TimeSelectorComponent.prototype, \"steps\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], TimeSelectorComponent.prototype, \"value\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TimeSelectorComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TimeSelectorComponent.prototype, \"valueReject\", void 0);\nTimeSelectorComponent = __decorate([ __param(7, Optional()),\n __metadata(\"design:paramtypes\", [LocalizationService,\n ChangeDetectorRef,\n ElementRef,\n IntlService,\n TimePickerDOMService,\n NgZone,\n Renderer2,\n PickerService])\n], TimeSelectorComponent);\n\n/**\n * @hidden\n */\nclass TimePickerMessages extends ComponentMessages {\n}\nTimePickerMessages.ɵfac = /*@__PURE__*/ function () { let ɵTimePickerMessages_BaseFactory; return function TimePickerMessages_Factory(t) { return (ɵTimePickerMessages_BaseFactory || (ɵTimePickerMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TimePickerMessages)))(t || TimePickerMessages); }; }();\nTimePickerMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TimePickerMessages, inputs: { accept: \"accept\", acceptLabel: \"acceptLabel\", cancel: \"cancel\", cancelLabel: \"cancelLabel\", now: \"now\", nowLabel: \"nowLabel\", toggle: \"toggle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerMessages.prototype, \"accept\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerMessages.prototype, \"acceptLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerMessages.prototype, \"cancel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerMessages.prototype, \"cancelLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerMessages.prototype, \"now\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerMessages.prototype, \"nowLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TimePickerMessages.prototype, \"toggle\", void 0);\n\nvar TimePickerLocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet TimePickerLocalizedMessagesDirective = TimePickerLocalizedMessagesDirective_1 = class TimePickerLocalizedMessagesDirective extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nTimePickerLocalizedMessagesDirective.ɵfac = function TimePickerLocalizedMessagesDirective_Factory(t) { return new (t || TimePickerLocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nTimePickerLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TimePickerLocalizedMessagesDirective, selectors: [[\"\", \"kendoTimePickerLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nTimePickerLocalizedMessagesDirective = TimePickerLocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], TimePickerLocalizedMessagesDirective);\n\nvar TimePickerCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nlet TimePickerCustomMessagesComponent = TimePickerCustomMessagesComponent_1 = class TimePickerCustomMessagesComponent extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nTimePickerCustomMessagesComponent.ɵfac = function TimePickerCustomMessagesComponent_Factory(t) { return new (t || TimePickerCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nTimePickerCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TimePickerCustomMessagesComponent, selectors: [[\"kendo-timepicker-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function TimePickerCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nTimePickerCustomMessagesComponent = TimePickerCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], TimePickerCustomMessagesComponent);\n\nvar TimeSelectorLocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet TimeSelectorLocalizedMessagesDirective = TimeSelectorLocalizedMessagesDirective_1 = class TimeSelectorLocalizedMessagesDirective extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nTimeSelectorLocalizedMessagesDirective.ɵfac = function TimeSelectorLocalizedMessagesDirective_Factory(t) { return new (t || TimeSelectorLocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nTimeSelectorLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TimeSelectorLocalizedMessagesDirective, selectors: [[\"\", \"kendoTimeSelectorLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nTimeSelectorLocalizedMessagesDirective = TimeSelectorLocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], TimeSelectorLocalizedMessagesDirective);\n\nvar TimeSelectorCustomMessagesComponent_1;\n/**\n * @hidden\n *\n * Custom component messages override default component messages.\n */\nlet TimeSelectorCustomMessagesComponent = TimeSelectorCustomMessagesComponent_1 = class TimeSelectorCustomMessagesComponent extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nTimeSelectorCustomMessagesComponent.ɵfac = function TimeSelectorCustomMessagesComponent_Factory(t) { return new (t || TimeSelectorCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nTimeSelectorCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TimeSelectorCustomMessagesComponent, selectors: [[\"kendo-timeselector-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function TimeSelectorCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nTimeSelectorCustomMessagesComponent = TimeSelectorCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], TimeSelectorCustomMessagesComponent);\n\nconst COMPONENT_DIRECTIVES$2 = [\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 ɵ0$o = touchEnabled;\nconst providers = [\n TimePickerDOMService,\n HoursService,\n MinutesService,\n SecondsService,\n MillisecondsService,\n DayPeriodService,\n {\n provide: TOUCH_ENABLED,\n useValue: ɵ0$o\n }\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TimePicker component.\n */\nlet TimePickerModule = class TimePickerModule {\n};\nTimePickerModule.ɵfac = function TimePickerModule_Factory(t) { return new (t || TimePickerModule)(); };\nTimePickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TimePickerModule });\nTimePickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: providers, imports: [[CommonModule, ...COMPONENT_MODULES$1]] });\n\n/**\n * @hidden\n */\nclass Messages$1 extends ComponentMessages {\n}\nMessages$1.ɵfac = /*@__PURE__*/ function () { let ɵMessages$1_BaseFactory; return function Messages$1_Factory(t) { return (ɵMessages$1_BaseFactory || (ɵMessages$1_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages$1)))(t || Messages$1); }; }();\nMessages$1.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages$1, 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\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"toggle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"dateTab\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"dateTabLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"timeTab\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"timeTabLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"accept\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"acceptLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"cancel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"cancelLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"today\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"now\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"nowLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"prevButtonTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages$1.prototype, \"nextButtonTitle\", void 0);\n\nvar DateTimePickerCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nlet DateTimePickerCustomMessagesComponent = DateTimePickerCustomMessagesComponent_1 = class DateTimePickerCustomMessagesComponent extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nDateTimePickerCustomMessagesComponent.ɵfac = function DateTimePickerCustomMessagesComponent_Factory(t) { return new (t || DateTimePickerCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nDateTimePickerCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateTimePickerCustomMessagesComponent, selectors: [[\"kendo-datetimepicker-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages$1,\n useExisting: forwardRef(() => DateTimePickerCustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function DateTimePickerCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nDateTimePickerCustomMessagesComponent = DateTimePickerCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], DateTimePickerCustomMessagesComponent);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoDateTimePickerLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages$1,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\nconst COMPONENT_DIRECTIVES$3 = [\n DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective\n];\nconst ɵ0$p = touchEnabled;\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DateTimePicker component.\n */\nlet DateTimePickerModule = class DateTimePickerModule {\n};\nDateTimePickerModule.ɵfac = function DateTimePickerModule_Factory(t) { return new (t || DateTimePickerModule)(); };\nDateTimePickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DateTimePickerModule });\nDateTimePickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n { provide: TOUCH_ENABLED, useValue: ɵ0$p }\n ], imports: [[\n CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule\n ], TemplatesModule] });\n\nconst COMPONENT_MODULES$2 = [\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 */\nlet DateInputsModule = class DateInputsModule {\n};\nDateInputsModule.ɵfac = function DateInputsModule_Factory(t) { return new (t || DateInputsModule)(); };\nDateInputsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DateInputsModule });\nDateInputsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [COMPONENT_MODULES$2, CalendarsModule, DateInputModule, DatePickerModule, TimePickerModule, DateRangeModule, DateTimePickerModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CenturyViewService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DecadeViewService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MonthViewService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YearViewService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BusViewService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.Injector }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDOMService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(VirtualizationComponent, [{\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 }], function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [SCROLLER_FACTORY_TOKEN]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { 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 }], 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 }], skip: [{\n type: Input\n }], take: [{\n type: Input\n }], total: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationComponent, [{\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 }], function () { return [{ type: BusViewService }, { type: CalendarDOMService }, { type: ɵngcc1.IntlService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }]; }, { min: [{\n type: Input\n }], max: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-navigation\"]\n }], activeView: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: false }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ViewListComponent, [{\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 }], function () { return [{ type: BusViewService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.IntlService }, { type: CalendarDOMService }, { type: ɵngcc0.Renderer2 }]; }, { isActive: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectedDates: [{\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 }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-vstack\"]\n }, {\n type: HostBinding,\n args: [\"class.k-calendar-view\"]\n }], weekNumber: [{\n type: Input\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 }], 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 }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: false }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: BusViewService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DisabledDatesService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectionService, [{\n type: Injectable\n }], function () { return [{ type: BusViewService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollSyncService, [{\n type: Injectable\n }], function () { return [{ type: CalendarDOMService }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MonthCellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarMonthCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YearCellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarYearCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DecadeCellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarDecadeCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CenturyCellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarCenturyCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WeekNumberCellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarWeekNumberCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeaderTitleTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarHeaderTitleTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarNavigationItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarComponent, [{\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 }], function () { return [{ type: BusViewService }, { type: CalendarDOMService }, { type: ɵngcc0.ElementRef }, { type: NavigationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Injector }, { type: ScrollSyncService }, { type: DisabledDatesService }, { type: ɵngcc4.LocalizationService }, { type: SelectionService }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, { id: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], selection: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], navigation: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\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 }], focusedDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], type: [{\n type: Input\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: true }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: true }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: true }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: true }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: true }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: true }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: true }]\n }], navigationItemTemplateRef: [{\n type: Input,\n args: ['navigationItemTemplate']\n }], navigationItemTemplate: [{\n type: ContentChild,\n args: [NavigationItemTemplateDirective, { static: true }]\n }], widgetId: [{\n type: HostBinding,\n args: ['attr.id']\n }], widgetRole: [{\n type: HostBinding,\n args: ['attr.role']\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-state-disabled']\n }], navigationView: [{\n type: ViewChild,\n args: [NavigationComponent, { static: false }]\n }], monthView: [{\n type: ViewChild,\n args: [ViewListComponent, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateInputComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-dateinput',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent_1), multi: true },\n { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },\n { provide: KendoInput, useExisting: forwardRef(() => DateInputComponent_1) },\n LocalizationService\n ],\n selector: 'kendo-dateinput',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.IntlService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Injector }, { type: ɵngcc4.LocalizationService }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, { 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 }], format: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], steps: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], autoCorrect: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], spinners: [{\n type: Input\n }], isPopupOpen: [{\n type: Input\n }], hasPopup: [{\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 }], tabIndex: [{\n type: Input\n }], value: [{\n type: Input\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-dateinput']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], formatPlaceholder: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], dateInput: [{\n type: ViewChild,\n args: ['dateInput', { static: true }]\n }], wrap: [{\n type: ViewChild,\n args: ['wrap', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePickerComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-datepicker',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent_1) },\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 `\n }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc4.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc5.PopupService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: PickerService }, { type: DisabledDatesService }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\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 }], 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 }], format: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesValidation: [{\n type: Input\n }], weekNumber: [{\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-widget']\n }, {\n type: HostBinding,\n args: ['class.k-datepicker']\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], navigationItemTemplateRef: [{\n type: Input,\n args: ['navigationItemTemplate']\n }], navigationItemTemplate: [{\n type: ContentChild,\n args: [NavigationItemTemplateDirective, { static: false }]\n }], popupSettings: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: false }]\n }], formatPlaceholder: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimePickerComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-timepicker',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent_1) },\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 `\n }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc4.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc5.PopupService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: PickerService }, { type: ɵngcc1.IntlService }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\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 }], placeholder: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], nowButton: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeValidation: [{\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-widget']\n }, {\n type: HostBinding,\n args: ['class.k-timepicker']\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], steps: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], value: [{\n type: Input\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: false }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: false }]\n }], formatPlaceholder: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateTimePickerComponent, [{\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_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent_1) }\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 {{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 }], function () { return [{ type: ɵngcc5.PopupService }, { type: ɵngcc1.IntlService }, { type: ɵngcc0.ChangeDetectorRef }, { type: PickerService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: Boolean, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }, { type: ɵngcc4.LocalizationService }, { type: DisabledDatesService }, { type: ɵngcc0.Renderer2 }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-datetimepicker']\n }], twoDigitYearMax: [{\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 }], steps: [{\n type: Input\n }], calendarType: [{\n type: Input\n }], animateCalendarNavigation: [{\n type: Input\n }], weekNumber: [{\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 }], value: [{\n type: Input\n }], format: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], defaultTab: [{\n type: Input\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], focusedDate: [{\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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WeekNamesService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HorizontalViewListComponent, [{\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 }], function () { return [{ type: BusViewService }, { type: ɵngcc1.IntlService }, { type: WeekNamesService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { activeView: [{\n type: Input\n }], isActive: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], views: [{\n type: Input\n }], showViewHeader: [{\n type: Input\n }], animateNavigation: [{\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 }], weekNumber: [{\n type: Input\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 }], focusedDate: [{\n type: Input\n }], cellTemplateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiViewCalendarComponent, [{\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 }], function () { return [{ type: BusViewService }, { type: ɵngcc0.ElementRef }, { type: NavigationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: DisabledDatesService }, { type: SelectionService }]; }, { id: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesRangeValidation: [{\n type: Input\n }], selection: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], isActive: [{\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 }], 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 }], focusedDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: true }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: true }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: true }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: true }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: true }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: true }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: true }]\n }], widgetId: [{\n type: HostBinding,\n args: ['attr.id']\n }], widgetRole: [{\n type: HostBinding,\n args: ['attr.role']\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-state-disabled']\n }], ariaActivedescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], \n /**\n * @hidden\n */\n handleBlur: [{\n type: HostListener,\n args: [\"blur\"]\n }], \n /**\n * @hidden\n */\n handleFocus: [{\n type: HostListener,\n args: [\"focus\"]\n }], \n /**\n * @hidden\n */\n handleMouseEnter: [{\n type: HostListener,\n args: [\"mouseenter\"]\n }], \n /**\n * @hidden\n */\n handleMouseLeave: [{\n type: HostListener,\n args: [\"mouseleave\"]\n }], \n /**\n * @hidden\n */\n handleMousedown: [{\n type: HostListener,\n args: [\"mousedown\", ['$event']]\n }], \n /**\n * @hidden\n */\n handleClick: [{\n type: HostListener,\n args: [\"click\"]\n }], \n /**\n * @hidden\n */\n keydown: [{\n type: HostListener,\n args: [\"keydown\", [\"$event\"]]\n }], activeRangeEnd: [{\n type: Input\n }], viewList: [{\n type: ViewChild,\n args: [HorizontalViewListComponent, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateRangePopupTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangePopupTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateRangeService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateRangePopupComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendo-daterange-popup',\n selector: 'kendo-daterange-popup',\n template: `\n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc5.PopupService }, { type: DateRangeService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, { animate: [{\n type: Input\n }], collision: [{\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 }], 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 }], anchor: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], margin: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateRangeComponent, [{\n type: Component,\n args: [{\n providers: [DateRangeService],\n selector: 'kendo-daterange',\n template: `\n \n \n `\n }]\n }], function () { return []; }, { contentPopup: [{\n type: ContentChildren,\n args: [DateRangePopupComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateRangeEndInputDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeEndInput]'\n }]\n }], function () { return [{ type: DateRangeService }, { type: DateInputComponent }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { navigateCalendarOnFocus: [{\n type: Input\n }], autoCorrectOn: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateRangeStartInputDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeStartInput]'\n }]\n }], function () { return [{ type: DateRangeService }, { type: DateInputComponent }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { navigateCalendarOnFocus: [{\n type: Input\n }], autoCorrectOn: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateRangeSelectionDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeSelection]'\n }]\n }], function () { return [{ type: MultiViewCalendarComponent }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DateRangeService, decorators: [{\n type: Optional\n }] }]; }, { autoCorrectOn: [{\n type: Input\n }], activeRangeEndChange: [{\n type: Output\n }], selectionRangeChange: [{\n type: Output\n }], selectionRange: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(KForOf, [{\n type: Directive,\n args: [{ selector: '[kFor][kForOf]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }]; }, { kForTemplate: [{\n type: Input\n }], kForOf: [{\n type: Input\n }], kForTrackBy: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeaderComponent, [{\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 }], function () { return [{ type: BusViewService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc4.LocalizationService }, { type: ɵngcc1.IntlService }, { type: DisabledDatesService }]; }, { min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeLength: [{\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 }], activeView: [{\n type: Input\n }], currentDate: [{\n type: Input\n }], templateRef: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ViewComponent, [{\n type: Component,\n args: [{\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 }], function () { return [{ type: BusViewService }, { type: ɵngcc1.IntlService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: DisabledDatesService }]; }, { direction: [{\n type: Input\n }], isActive: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }], weekNumber: [{\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 }], viewIndex: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarCommonModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarCommonModule, { declarations: function () { return [KForOf, HeaderComponent, ViewComponent]; }, imports: function () { return [CommonModule, EventsModule]; }, exports: function () { return [KForOf, HeaderComponent, ViewComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplatesModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TemplatesModule, { declarations: [CellTemplateDirective, MonthCellTemplateDirective, YearCellTemplateDirective, DecadeCellTemplateDirective, CenturyCellTemplateDirective, WeekNumberCellTemplateDirective, HeaderTitleTemplateDirective, NavigationItemTemplateDirective], exports: [CellTemplateDirective, MonthCellTemplateDirective, YearCellTemplateDirective, DecadeCellTemplateDirective, CenturyCellTemplateDirective, WeekNumberCellTemplateDirective, HeaderTitleTemplateDirective, NavigationItemTemplateDirective] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiViewCalendarLocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => MultiViewCalendarLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoMultiViewCalendarLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiViewCalendarCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => MultiViewCalendarCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-multiviewcalendar-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiViewCalendarModule, [{\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: [CommonModule, CalendarCommonModule, IntlModule, TemplatesModule, PopupModule],\n providers: [\n NavigationService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MultiViewCalendarModule, { declarations: function () { return [HorizontalViewListComponent, MultiViewCalendarLocalizedMessagesDirective, MultiViewCalendarCustomMessagesComponent, MultiViewCalendarComponent]; }, imports: function () { return [CommonModule, CalendarCommonModule, IntlModule, TemplatesModule, PopupModule]; }, exports: function () { return [HorizontalViewListComponent, MultiViewCalendarLocalizedMessagesDirective, MultiViewCalendarCustomMessagesComponent, MultiViewCalendarComponent, CalendarCommonModule, TemplatesModule]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarLocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoCalendarLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarCustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-calendar-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(VirtualizationModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(VirtualizationModule, { declarations: function () { return [VirtualizationComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [VirtualizationComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarModule, { declarations: function () { return [CalendarComponent, NavigationComponent, CalendarCustomMessagesComponent, CalendarLocalizedMessagesDirective, ViewListComponent]; }, imports: function () { return [CommonModule, CalendarCommonModule, MultiViewCalendarModule, IntlModule, TemplatesModule, VirtualizationModule, EventsModule,\n ResizeSensorModule]; }, exports: function () { return [CalendarComponent, NavigationComponent, CalendarCustomMessagesComponent, CalendarLocalizedMessagesDirective, ViewListComponent, CalendarCommonModule, TemplatesModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarsModule, [{\n type: NgModule,\n args: [{\n exports: [\n CalendarModule,\n MultiViewCalendarModule\n ],\n imports: [\n CalendarModule,\n MultiViewCalendarModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarsModule, { imports: [CalendarModule, MultiViewCalendarModule], exports: [CalendarModule, MultiViewCalendarModule] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateInputLocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoDateInputLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateInputCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-dateinput-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateInputModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DateInputModule, { declarations: function () { return [DateInputComponent, DateInputCustomMessagesComponent, DateInputLocalizedMessagesDirective]; }, imports: function () { return [CommonModule, IntlModule, EventsModule]; }, exports: function () { return [DateInputComponent, DateInputCustomMessagesComponent, DateInputLocalizedMessagesDirective]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePickerLocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoDatePickerLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePickerCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-datepicker-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePickerModule, [{\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: ɵ0$e }]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DatePickerModule, { declarations: function () { return [DatePickerComponent, DatePickerCustomMessagesComponent, DatePickerLocalizedMessagesDirective]; }, imports: function () { return [CommonModule, DateInputModule, CalendarModule, IntlModule,\n PopupModule, TemplatesModule, EventsModule]; }, exports: function () { return [DatePickerComponent, DatePickerCustomMessagesComponent, DatePickerLocalizedMessagesDirective, TemplatesModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateRangeModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1],\n imports: [CommonModule, COMPONENT_MODULES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DateRangeModule, { declarations: function () { return [DateRangeComponent, DateRangePopupComponent, DateRangePopupTemplateDirective, DateRangeSelectionDirective, DateRangeStartInputDirective, DateRangeEndInputDirective]; }, imports: function () { return [CommonModule, MultiViewCalendarModule, DateInputModule, PopupModule,\n EventsModule]; }, exports: function () { return [DateRangeComponent, DateRangePopupComponent, DateRangePopupTemplateDirective, DateRangeSelectionDirective, DateRangeStartInputDirective, DateRangeEndInputDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimePickerDOMService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HoursService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MinutesService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SecondsService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MillisecondsService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DayPeriodService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimeListComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-timelist',\n template: `\n \n
    \n
  • \n {{item.text}}\n
  • \n
\n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Injector }, { type: TimePickerDOMService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { min: [{\n type: Input\n }], max: [{\n type: Input\n }], step: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], componentClass: [{\n type: HostBinding,\n args: [\"class.k-time-list\"]\n }], tabIndex: [{\n type: HostBinding,\n args: [\"attr.tabindex\"]\n }], value: [{\n type: Input\n }], part: [{\n type: Input\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimeSelectorComponent, [{\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 }], function () { return [{ type: ɵngcc4.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: ɵngcc1.IntlService }, { type: TimePickerDOMService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, { componentClass: [{\n type: HostBinding,\n args: ['class.k-timeselector']\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 }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], valueReject: [{\n type: Output\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], steps: [{\n type: Input\n }], 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 }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimePickerLocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoTimePickerLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimePickerCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-timepicker-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimeSelectorLocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorLocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoTimeSelectorLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimeSelectorCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-timeselector-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimePickerModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$2],\n exports: [COMPONENT_DIRECTIVES$2],\n imports: [CommonModule, ...COMPONENT_MODULES$1],\n providers: providers\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TimePickerModule, { declarations: function () { return [TimePickerLocalizedMessagesDirective, TimeListComponent, TimePickerCustomMessagesComponent, TimePickerComponent, TimeSelectorLocalizedMessagesDirective, TimeSelectorCustomMessagesComponent, TimeSelectorComponent]; }, imports: function () { return [CommonModule, DateInputModule, IntlModule,\n PopupModule, VirtualizationModule, EventsModule]; }, exports: function () { return [TimePickerLocalizedMessagesDirective, TimeListComponent, TimePickerCustomMessagesComponent, TimePickerComponent, TimeSelectorLocalizedMessagesDirective, TimeSelectorCustomMessagesComponent, TimeSelectorComponent]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateTimePickerCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => DateTimePickerCustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-datetimepicker-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: '[kendoDateTimePickerLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc4.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateTimePickerModule, [{\n type: NgModule,\n args: [{\n declarations: [\n ...COMPONENT_DIRECTIVES$3\n ],\n exports: [\n ...COMPONENT_DIRECTIVES$3,\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: ɵ0$p }\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DateTimePickerModule, { declarations: function () { return [DateTimePickerComponent, DateTimePickerCustomMessagesComponent, LocalizedMessagesDirective]; }, imports: function () { return [CommonModule,\n IntlModule, DateInputModule, CalendarModule, TimePickerModule, PopupModule,\n EventsModule, TemplatesModule]; }, exports: function () { return [DateTimePickerComponent, DateTimePickerCustomMessagesComponent, LocalizedMessagesDirective, TemplatesModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateInputsModule, [{\n type: NgModule,\n args: [{\n exports: COMPONENT_MODULES$2,\n imports: COMPONENT_MODULES$2\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DateInputsModule, { imports: [CalendarsModule, DateInputModule, DatePickerModule, TimePickerModule, DateRangeModule, DateTimePickerModule], exports: [CalendarsModule, DateInputModule, DatePickerModule, TimePickerModule, DateRangeModule, DateTimePickerModule] }); })();\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CalendarCommonModule, CALENDAR_RANGE_VALIDATORS, CALENDAR_VALUE_ACCESSOR, KENDO_INPUT_PROVIDER, KForOf, KForOfContext, HeaderComponent, HorizontalViewListComponent, CalendarMessages, MultiViewCalendarCustomMessagesComponent, Messages, RANGE_CALENDAR_RANGE_VALIDATORS, RANGE_CALENDAR_VALUE_ACCESSOR, NavigationComponent, BusViewService, CenturyViewService, DecadeViewService, DisabledDatesService, CalendarDOMService, MonthViewService, NavigationService, ScrollSyncService, SelectionService, WeekNamesService, YearViewService, TemplatesModule, CellTemplateDirective, CenturyCellTemplateDirective, DecadeCellTemplateDirective, HeaderTitleTemplateDirective, MonthCellTemplateDirective, NavigationItemTemplateDirective, WeekNumberCellTemplateDirective, YearCellTemplateDirective, ViewListComponent, ViewComponent, PickerService, DateInputMessages, DatePickerMessages, DateRangeInput, DateRangePopupTemplateDirective, DateTimePickerCustomMessagesComponent, LocalizedMessagesDirective, Messages$1, TimePickerMessages, TimePickerCustomMessagesComponent, TimeSelectorCustomMessagesComponent, DayPeriodService, TimePickerDOMService, HoursService, MillisecondsService, MinutesService, SecondsService, TimeListComponent, TimeSelectorComponent, TOUCH_ENABLED, ScrollerService, DEFAULT_SCROLLER_FACTORY, SCROLLER_FACTORY_TOKEN, VirtualizationComponent, VirtualizationModule, CalendarComponent, DateInputComponent, DatePickerComponent, TimePickerComponent, DateTimePickerComponent, MultiViewCalendarComponent, DateRangeComponent, DateRangePopupComponent, DateRangeEndInputDirective, DateRangeStartInputDirective, DateRangeSelectionDirective, CalendarModule, CalendarsModule, DateInputModule, DatePickerModule, DateInputsModule, TimePickerModule, DateTimePickerModule, MultiViewCalendarModule, DateRangeModule, DateRangeService, CalendarCustomMessagesComponent, DateInputCustomMessagesComponent, DatePickerCustomMessagesComponent, PreventableEvent, CalendarLocalizedMessagesDirective, MultiViewCalendarLocalizedMessagesDirective, DateInputLocalizedMessagesDirective, DatePickerLocalizedMessagesDirective, TimePickerLocalizedMessagesDirective, TimeSelectorLocalizedMessagesDirective };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, TemplateRef, Input, Output, HostBinding, Component, ElementRef, InjectionToken, Inject, Optional, NgZone, ContentChildren, QueryList, ViewChildren, ViewChild, HostListener, Renderer2, ChangeDetectorRef, Injectable, isDevMode, ComponentFactoryResolver, Directive, Host, ContentChild, ViewContainerRef, forwardRef, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { LocalizationService, L10N_PREFIX, RTL, MessageService, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { take, filter, map, share, tap, switchMap, takeUntil } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { Subject, merge, Subscription, of } from 'rxjs';\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';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Specifies the action buttons of the Dialog\n * ([see example]({% slug actionbuttons_dialog %})).\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc3 from '@progress/kendo-angular-common';\n\nfunction DialogActionsComponent_ng_content_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngIf\", \"!actions\"]);\n} }\nfunction DialogActionsComponent_ng_container_1_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function DialogActionsComponent_ng_container_1_button_1_Template_button_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const action_r4 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(2); return ctx_r5.onButtonClick(action_r4, $event); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const action_r4 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r3.buttonClass(action_r4));\n ɵngcc0.ɵɵattribute(\"aria-label\", action_r4.text);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", action_r4.text, \" \");\n} }\nfunction DialogActionsComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, DialogActionsComponent_ng_container_1_button_1_Template, 2, 3, \"button\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.actions);\n} }\nfunction DialogActionsComponent_2_ng_template_0_Template(rf, ctx) { }\nfunction DialogActionsComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DialogActionsComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 3);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.actions);\n} }\nconst _c0 = [\"*\"];\nfunction DialogComponent_kendo_dialog_titlebar_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 7);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"closeTitle\", ctx_r0.closeTitle)(\"id\", ctx_r0.titleId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n} }\nfunction DialogComponent_ng_content_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngIf\", \"!title\"]);\n} }\nfunction DialogComponent_ng_content_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 1, [\"*ngIf\", \"!contentTemplate\"]);\n} }\nfunction DialogComponent_7_ng_template_0_Template(rf, ctx) { }\nfunction DialogComponent_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DialogComponent_7_ng_template_0_Template, 0, 0, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.contentTemplate);\n} }\nfunction DialogComponent_ng_content_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 2, [\"*ngIf\", \"!actions\"]);\n} }\nfunction DialogComponent_kendo_dialog_actions_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-dialog-actions\", 9);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"actions\", ctx_r5.actions)(\"layout\", ctx_r5.actionsLayout);\n} }\nconst _c5 = [[[\"kendo-dialog-titlebar\"]], \"*\", [[\"kendo-dialog-actions\"]]];\nconst _c6 = [\"kendo-dialog-titlebar\", \"*\", \"kendo-dialog-actions\"];\nfunction WindowTitleBarComponent_ng_content_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngIf\", \"!template\"]);\n} }\nfunction WindowTitleBarComponent_1_ng_template_0_Template(rf, ctx) { }\nconst _c7 = function (a0) { return { \"$implicit\": a0 }; };\nfunction WindowTitleBarComponent_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, WindowTitleBarComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 1);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c7, ctx_r1.service));\n} }\nfunction WindowComponent_kendo_window_titlebar_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-window-titlebar\", 5);\n ɵngcc0.ɵɵelementStart(1, \"div\", 6);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"div\", 7);\n ɵngcc0.ɵɵelement(4, \"button\", 8);\n ɵngcc0.ɵɵelement(5, \"button\", 9);\n ɵngcc0.ɵɵelement(6, \"button\", 10);\n ɵngcc0.ɵɵelement(7, \"button\", 11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"template\", ctx_r0.titleBarTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r0.minimizeButtonTitle)(\"aria-label\", ctx_r0.minimizeButtonTitle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r0.maximizeButtonTitle)(\"aria-label\", ctx_r0.maximizeButtonTitle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r0.restoreButtonTitle)(\"aria-label\", ctx_r0.restoreButtonTitle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r0.closeButtonTitle)(\"aria-label\", ctx_r0.closeButtonTitle);\n} }\nfunction WindowComponent_ng_content_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngIf\", \"!showDefaultTitleBar\"]);\n} }\nfunction WindowComponent_div_4_ng_content_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 1, [\"*ngIf\", \"!contentTemplate\"]);\n} }\nfunction WindowComponent_div_4_2_ng_template_0_Template(rf, ctx) { }\nfunction WindowComponent_div_4_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, WindowComponent_div_4_2_ng_template_0_Template, 0, 0, \"ng-template\", 13);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.contentTemplate);\n} }\nfunction WindowComponent_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtemplate(1, WindowComponent_div_4_ng_content_1_Template, 1, 0, \"ng-content\", 2);\n ɵngcc0.ɵɵtemplate(2, WindowComponent_div_4_2_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"hidden\", ctx_r2.state === \"minimized\" && ctx_r2.keepContent);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.contentTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.contentTemplate);\n} }\nfunction WindowComponent_ng_template_5_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 15);\n} if (rf & 2) {\n const dir_r8 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"direction\", dir_r8);\n} }\nfunction WindowComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, WindowComponent_ng_template_5_div_0_Template, 1, 1, \"div\", 14);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.resizeDirections);\n} }\nconst _c16 = [[[\"kendo-window-titlebar\"]], \"*\"];\nconst _c17 = [\"kendo-window-titlebar\", \"*\"];\nlet DialogActionsComponent = class 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 get className() {\n return this.layout === 'stretched';\n }\n /**\n * @hidden\n */\n actionTemplate() {\n return this.actions instanceof TemplateRef;\n }\n /**\n * @hidden\n */\n onButtonClick(action, _e) {\n this.action.emit(action);\n }\n /**\n * @hidden\n */\n buttonClass(action) {\n const classes = ['k-button'];\n if (action.primary) {\n classes.push('k-primary');\n }\n return classes.join(' ');\n }\n};\nDialogActionsComponent.ɵfac = function DialogActionsComponent_Factory(t) { return new (t || DialogActionsComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nDialogActionsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DialogActionsComponent, selectors: [[\"kendo-dialog-actions\"]], hostVars: 6, hostBindings: function DialogActionsComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-dialog-buttongroup\", ctx.buttonGroupClassName)(\"k-actions\", ctx.buttonGroupClassName)(\"k-actions-stretched\", ctx.className);\n } }, inputs: { layout: \"layout\", actions: \"actions\" }, outputs: { action: \"action\" }, ngContentSelectors: _c0, decls: 3, vars: 3, consts: [[4, \"ngIf\"], [\"type\", \"button\", 3, \"ngClass\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", 3, \"ngClass\", \"click\"], [3, \"ngTemplateOutlet\"]], template: function DialogActionsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, DialogActionsComponent_ng_content_0_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵtemplate(1, DialogActionsComponent_ng_container_1_Template, 2, 1, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(2, DialogActionsComponent_2_Template, 1, 1, null, 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.actions);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.actionTemplate());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.actionTemplate());\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgClass, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialogActionsComponent.prototype, \"actions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DialogActionsComponent.prototype, \"layout\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DialogActionsComponent.prototype, \"action\", void 0);\n__decorate([\n HostBinding('class.k-dialog-buttongroup'),\n HostBinding('class.k-actions'),\n __metadata(\"design:type\", Boolean)\n], DialogActionsComponent.prototype, \"buttonGroupClassName\", void 0);\n__decorate([\n HostBinding('class.k-actions-stretched'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DialogActionsComponent.prototype, \"className\", null);\nDialogActionsComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef])\n], DialogActionsComponent);\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 DIALOG_LOCALIZATION_SERVICE = new InjectionToken('Dialog LocalizationService');\n\n/**\n * @hidden\n */\nlet TitleBarLocalizationService = class 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 = function TitleBarLocalizationService_Factory(t) { return new (t || TitleBarLocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(ɵngcc2.MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8), ɵngcc0.ɵɵinject(DIALOG_LOCALIZATION_SERVICE, 8)); };\nTitleBarLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TitleBarLocalizationService, factory: function (t) { return TitleBarLocalizationService.ɵfac(t); } });\nTitleBarLocalizationService = __decorate([\n __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __param(3, Optional()), __param(3, Inject(DIALOG_LOCALIZATION_SERVICE)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean, LocalizationService])\n], TitleBarLocalizationService);\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 */\nlet DialogTitleBarComponent = class 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 = function DialogTitleBarComponent_Factory(t) { return new (t || DialogTitleBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService, 8)); };\nDialogTitleBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DialogTitleBarComponent, selectors: [[\"kendo-dialog-titlebar\"]], hostVars: 4, hostBindings: function DialogTitleBarComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-window-titlebar\", ctx.className)(\"k-dialog-titlebar\", ctx.className);\n } }, inputs: { id: \"id\", closeTitle: \"closeTitle\" }, outputs: { close: \"close\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n TitleBarLocalizationService,\n {\n provide: LocalizationService,\n useExisting: TitleBarLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ])], ngContentSelectors: _c0, decls: 6, vars: 2, consts: function () { let i18n_1; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the close button\n * @meaning kendo.dialog.closeTitle\n */\n const MSG_EXTERNAL_7499923323865444383$$DIST_FESM2015_INDEX_JS_2 = goog.getMsg(\"Close\");\n i18n_1 = MSG_EXTERNAL_7499923323865444383$$DIST_FESM2015_INDEX_JS_2;\n }\n else {\n i18n_1 = $localize `:kendo.dialog.closeTitle|The title of the close button␟9b2bd34897f127e69e5f02f64692fca98a5a7572␟7499923323865444383:Close`;\n } return [[\"kendoDialogTitleBarLocalizedMessages\", \"\", \"closeTitle\", i18n_1], [1, \"k-window-title\", \"k-dialog-title\"], [1, \"k-window-actions\", \"k-dialog-actions\"], [\"href\", \"#\", \"role\", \"button\", 1, \"k-button\", \"k-flat\", \"k-button-icon\", \"k-window-action\", \"k-dialog-action\", \"k-dialog-close\", 3, \"click\"], [1, \"k-icon\", \"k-i-x\"]]; }, template: function DialogTitleBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵelementStart(4, \"a\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function DialogTitleBarComponent_Template_a_click_4_listener($event) { return ctx.onCloseClick($event); });\n ɵngcc0.ɵɵelement(5, \"span\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵattribute(\"title\", ctx.closeButtonTitle)(\"aria-label\", ctx.closeButtonTitle);\n } }, directives: function () { return [LocalizedMessagesDirective]; }, encapsulation: 2 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DialogTitleBarComponent.prototype, \"close\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DialogTitleBarComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DialogTitleBarComponent.prototype, \"closeTitle\", void 0);\n__decorate([\n HostBinding('class.k-window-titlebar'),\n HostBinding('class.k-dialog-titlebar'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DialogTitleBarComponent.prototype, \"className\", null);\nDialogTitleBarComponent = __decorate([ __param(2, Optional()),\n __metadata(\"design:paramtypes\", [NgZone, ElementRef, LocalizationService])\n], DialogTitleBarComponent);\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: 1635940433,\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 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 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/**\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 * 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 * 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 * 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 * Represents the [Kendo UI Dialog component for Angular]({% slug overview_dialog_dialogs %}).\n */\nlet DialogComponent = class DialogComponent {\n constructor(_elRef, _renderer, localization, cdr, zone) {\n this._elRef = _elRef;\n this._renderer = _renderer;\n this.cdr = cdr;\n this.zone = zone;\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 * @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 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._elRef.nativeElement);\n const el = this._elRef.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 * @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 /**\n * @hidden\n */\n onComponentKeydown(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.close.emit(new DialogCloseResult());\n }\n }\n if (hasClasses(target, 'k-button') &&\n hasClasses(parent, DIALOG_ELEMENTS_HANDLING_ARROWS) &&\n (event.keyCode === Keys.left || event.keyCode === Keys.right)) {\n this.handleActionButtonFocus(parent, event.keyCode);\n }\n if (event.keyCode === Keys.tab) {\n this.keepFocusWithinComponent(target, event);\n }\n }\n ngAfterContentInit() {\n this.bubble('close', this.titlebarContent.first);\n this._renderer.setAttribute(this._elRef.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.zone.onStable.pipe(take(1)).subscribe(() => {\n this.bubble('close', this.titlebarContent.first);\n this._renderer.setAttribute(this._elRef.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._elRef.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.zone.onStable.pipe(take(1)).subscribe(() => {\n this.bubble('close', this.titlebarView.first);\n this._renderer.setAttribute(this._elRef.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n });\n }\n }));\n }\n }\n ngOnInit() {\n this._renderer.removeAttribute(this._elRef.nativeElement, 'title');\n this.cdr.detectChanges();\n }\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subscriptions = [];\n }\n /**\n * Focuses the wrapper of the Dialog component.\n */\n focus() {\n const wrapper = this._elRef.nativeElement;\n if (isPresent(wrapper)) {\n wrapper.focus();\n }\n }\n setServiceClasses(prevValue, value) {\n const el = this._elRef.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._elRef.nativeElement;\n const primaryButton = wrapper.querySelector('.k-primary');\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 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._elRef.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 = function DialogComponent_Factory(t) { return new (t || DialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DialogComponent, selectors: [[\"kendo-dialog\"]], contentQueries: function DialogComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DialogTitleBarComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titlebarContent = _t);\n } }, viewQuery: function DialogComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(DialogActionsComponent, 5);\n ɵngcc0.ɵɵviewQuery(DialogTitleBarComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.actionsView = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titlebarView = _t);\n } }, hostVars: 4, hostBindings: function DialogComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function DialogComponent_keydown_HostBindingHandler($event) { return ctx.onComponentKeydown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabIndex\", ctx.tabIndex)(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-dialog-wrapper\", ctx.wrapperClass);\n } }, inputs: { actionsLayout: \"actionsLayout\", actions: \"actions\", autoFocusedElement: \"autoFocusedElement\", title: \"title\", width: \"width\", minWidth: \"minWidth\", maxWidth: \"maxWidth\", height: \"height\", minHeight: \"minHeight\", maxHeight: \"maxHeight\" }, outputs: { action: \"action\", close: \"close\" }, exportAs: [\"kendoDialog\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: DIALOG_LOCALIZATION_SERVICE,\n useExisting: LocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ])], ngContentSelectors: _c6, decls: 10, vars: 10, consts: function () { let i18n_3; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the close button\n * @meaning kendo.dialog.closeTitle\n */\n const MSG_EXTERNAL_7499923323865444383$$DIST_FESM2015_INDEX_JS_4 = goog.getMsg(\"Close\");\n i18n_3 = MSG_EXTERNAL_7499923323865444383$$DIST_FESM2015_INDEX_JS_4;\n }\n else {\n i18n_3 = $localize `:kendo.dialog.closeTitle|The title of the close button␟9b2bd34897f127e69e5f02f64692fca98a5a7572␟7499923323865444383:Close`;\n } return [[\"kendoDialogLocalizedMessages\", \"\", \"closeTitle\", i18n_3], [1, \"k-overlay\"], [\"role\", \"dialog\", \"aria-modal\", \"true\", 1, \"k-window\", \"k-dialog\", 3, \"ngStyle\"], [3, \"closeTitle\", \"id\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"k-content\", \"k-window-content\", \"k-dialog-content\", 3, \"id\"], [3, \"actions\", \"layout\", 4, \"ngIf\"], [3, \"closeTitle\", \"id\"], [3, \"ngTemplateOutlet\"], [3, \"actions\", \"layout\"]]; }, template: function DialogComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c5);\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelement(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, DialogComponent_kendo_dialog_titlebar_3_Template, 2, 3, \"kendo-dialog-titlebar\", 3);\n ɵngcc0.ɵɵtemplate(4, DialogComponent_ng_content_4_Template, 1, 0, \"ng-content\", 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5);\n ɵngcc0.ɵɵtemplate(6, DialogComponent_ng_content_6_Template, 1, 0, \"ng-content\", 4);\n ɵngcc0.ɵɵtemplate(7, DialogComponent_7_Template, 1, 1, null, 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, DialogComponent_ng_content_8_Template, 1, 0, \"ng-content\", 4);\n ɵngcc0.ɵɵtemplate(9, DialogComponent_kendo_dialog_actions_9_Template, 1, 2, \"kendo-dialog-actions\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"@overlayAppear\", undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.styles)(\"@dialogSlideInAppear\", undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.contentId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.contentTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contentTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.actions);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.actions);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc1.NgStyle, ɵngcc1.NgIf, DialogTitleBarComponent, ɵngcc1.NgTemplateOutlet, DialogActionsComponent]; }, encapsulation: 2, data: { animation: [\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 trigger('dialogSlideInAppear', [\n state('in', style({ transform: 'translate(0, 0)' })),\n transition('void => *', [style({ transform: 'translate(0, -10%)' }), animate('.3s cubic-bezier(.2, 1, .2, 1)')])\n ])\n ] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], DialogComponent.prototype, \"actions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DialogComponent.prototype, \"actionsLayout\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DialogComponent.prototype, \"autoFocusedElement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DialogComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialogComponent.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialogComponent.prototype, \"minWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialogComponent.prototype, \"maxWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialogComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialogComponent.prototype, \"minHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DialogComponent.prototype, \"maxHeight\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DialogComponent.prototype, \"action\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DialogComponent.prototype, \"close\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], DialogComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('attr.tabIndex'),\n __metadata(\"design:type\", Number)\n], DialogComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n ContentChildren(DialogTitleBarComponent, { descendants: false }),\n __metadata(\"design:type\", QueryList)\n], DialogComponent.prototype, \"titlebarContent\", void 0);\n__decorate([\n ViewChildren(DialogTitleBarComponent),\n __metadata(\"design:type\", QueryList)\n], DialogComponent.prototype, \"titlebarView\", void 0);\n__decorate([\n ViewChild(DialogActionsComponent, { static: false }),\n __metadata(\"design:type\", DialogActionsComponent)\n], DialogComponent.prototype, \"actionsView\", void 0);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], DialogComponent.prototype, \"onComponentKeydown\", null);\n__decorate([\n HostBinding('class.k-dialog-wrapper'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DialogComponent.prototype, \"wrapperClass\", null);\nDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n LocalizationService,\n ChangeDetectorRef,\n NgZone])\n], DialogComponent);\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 = function DialogContentBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nDialogContentBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DialogContentBase, viewQuery: function DialogContentBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(DialogTitleBarComponent, 5);\n ɵngcc0.ɵɵviewQuery(DialogActionsComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dialogTitleBar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dialogActions = _t.first);\n } } });\n__decorate([\n ViewChild(DialogTitleBarComponent, { static: false }),\n __metadata(\"design:type\", DialogTitleBarComponent)\n], DialogContentBase.prototype, \"dialogTitleBar\", void 0);\n__decorate([\n ViewChild(DialogActionsComponent, { static: false }),\n __metadata(\"design:type\", DialogActionsComponent)\n], DialogContentBase.prototype, \"dialogActions\", void 0);\n\nvar DialogContainerService_1;\n/**\n * @hidden\n */\nlet DialogContainerService = DialogContainerService_1 = class DialogContainerService {\n set container(container) {\n DialogContainerService_1.container = container;\n }\n get container() {\n return DialogContainerService_1.container;\n }\n};\nDialogContainerService.ɵfac = function DialogContainerService_Factory(t) { return new (t || DialogContainerService)(); };\nDialogContainerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DialogContainerService, factory: function (t) { return DialogContainerService.ɵfac(t); } });\nDialogContainerService.container = null;\n\nconst isNotComponent = (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 */\nlet DialogService = class 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\", primary: true }\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(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 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 = function DialogService_Factory(t) { return new (t || DialogService)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(DialogContainerService)); };\nDialogService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DialogService, factory: function (t) { return DialogService.ɵfac(t); } });\nDialogService = __decorate([ __param(1, Inject(DialogContainerService)),\n __metadata(\"design:paramtypes\", [ComponentFactoryResolver,\n DialogContainerService])\n], DialogService);\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 */\nlet DragResizeService = class 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$$1 = this.options.state;\n let options = this.options;\n this.window = el;\n if (state$$1 !== 'default') {\n this.restoreOptions = Object.assign({}, options);\n }\n if (state$$1 === 'minimized') {\n options.height = 0;\n options.minHeight = 0;\n }\n if (state$$1 === '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$$1) => {\n if (isPresent(ev[style$$1])) {\n this.options[style$$1] = ev[style$$1];\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$$1 = this.options.state;\n switch (state$$1) {\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$$1, value) {\n if (isPresent(this.restoreOptions)) {\n this.restoreOptions[style$$1] = 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 = function DragResizeService_Factory(t) { return new (t || DragResizeService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nDragResizeService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DragResizeService, factory: function (t) { return DragResizeService.ɵfac(t); } });\nDragResizeService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], DragResizeService);\n\n/**\n * @hidden\n */\nlet ResizeHandleDirective = class 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$$1) => {\n this.setDisplay(state$$1 === '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 = function ResizeHandleDirective_Factory(t) { return new (t || ResizeHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.DraggableDirective, 1), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DragResizeService)); };\nResizeHandleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResizeHandleDirective, selectors: [[\"\", \"kendoWindowResizeHandle\", \"\"]], hostVars: 2, hostBindings: function ResizeHandleDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-resize-handle\", ctx.hostClass);\n } }, inputs: { direction: \"direction\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ResizeHandleDirective.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-resize-handle'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ResizeHandleDirective.prototype, \"hostClass\", null);\nResizeHandleDirective = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [DraggableDirective,\n ElementRef,\n Renderer2,\n DragResizeService])\n], ResizeHandleDirective);\n\nlet WindowTitleBarComponent = class 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$$1) => {\n if (this.service.options.draggable) {\n if (state$$1 === '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$$1 = this.service.options.state;\n if (!hasClasses(target, 'k-icon') && !isFocusable(target, false) && this.service.options.resizable) {\n if (state$$1 === 'default') {\n this.service.maximizeAction();\n }\n else if (state$$1 === '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 = function WindowTitleBarComponent_Factory(t) { return new (t || WindowTitleBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DragResizeService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nWindowTitleBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: WindowTitleBarComponent, selectors: [[\"kendo-window-titlebar\"]], hostVars: 6, hostBindings: function WindowTitleBarComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"dblclick\", function WindowTitleBarComponent_dblclick_HostBindingHandler($event) { return ctx.handle($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx.touchAction);\n ɵngcc0.ɵɵclassProp(\"k-window-titlebar\", ctx.className)(\"k-dialog-titlebar\", ctx.className);\n } }, inputs: { template: \"template\" }, ngContentSelectors: _c0, decls: 2, vars: 2, consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function WindowTitleBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, WindowTitleBarComponent_ng_content_0_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵtemplate(1, WindowTitleBarComponent_1_Template, 1, 4, null, 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.template);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], WindowTitleBarComponent.prototype, \"template\", void 0);\n__decorate([\n HostBinding('class.k-window-titlebar'),\n HostBinding('class.k-dialog-titlebar'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], WindowTitleBarComponent.prototype, \"className\", null);\n__decorate([\n HostBinding('style.touch-action'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], WindowTitleBarComponent.prototype, \"touchAction\", null);\n__decorate([\n HostListener('dblclick', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], WindowTitleBarComponent.prototype, \"handle\", null);\nWindowTitleBarComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, DragResizeService, NgZone])\n], WindowTitleBarComponent);\n\n/**\n * @hidden\n */\nlet NavigationService = class NavigationService {\n constructor(window) {\n this.window = window;\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.handleArrow(key, ev);\n break;\n }\n case Keys.esc:\n this.handleEscape();\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$$1 = 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$$1.x + delta;\n options.left = ev.left;\n break;\n }\n case Keys.up:\n case Keys.down: {\n ev.top = offset$$1.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$$1 = 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$$1.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$$1.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$$1) => {\n if (isPresent(ev[style$$1])) {\n this.window.options[style$$1] = ev[style$$1];\n }\n });\n this.window.change.emit(ev);\n }\n }\n handleStateChange(key, state$$1) {\n if ((state$$1 === 'minimized' && key === Keys.up) ||\n (state$$1 === 'maximized' && key === Keys.down)) {\n this.window.restoreAction();\n return;\n }\n if (state$$1 === '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 = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(DragResizeService)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [DragResizeService])\n], NavigationService);\n\n/**\n * Represents the [Kendo UI Window component for Angular]({% slug overview_window_dialogs %}).\n */\nlet WindowComponent = class 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 this.tabIndex = 0;\n this.draged = false;\n this.resized = false;\n this.windowSubscription = 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 }\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$$1) => {\n if (isChanged(style$$1, changes)) {\n this.setStyle(style$$1, this.options[style$$1]);\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 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$$1, value) {\n this.setOption(offset$$1, value);\n this.setStyle(offset$$1, 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 onComponentKeydown(event) {\n if (hasClasses(event.target, WINDOW_CLASSES)) {\n this.navigation.process(event);\n }\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n this.renderer.addClass(this.el.nativeElement, 'k-state-focused');\n this.setNextZIndex();\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n this.renderer.removeClass(this.el.nativeElement, 'k-state-focused');\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$$1) => {\n if (isPresent(ev[style$$1])) {\n this.setStyle(style$$1, ev[style$$1]);\n if (this.state !== 'maximized') {\n const emitter = this[style$$1 + 'Change'];\n if (emitter.observers.length) {\n this.ngZone.run(() => {\n emitter.emit(ev[style$$1]);\n });\n }\n }\n }\n });\n }));\n this.windowSubscription.add(this.service.stateChange.subscribe((state$$1) => {\n if (isPresent(this.service.lastAction)) {\n this.updateAllOffset();\n this.stateChange.emit(state$$1);\n }\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$$1) => {\n if (isPresent(this[style$$1])) {\n this.setStyle(style$$1, this[style$$1]);\n }\n else {\n this.removeStyle(style$$1);\n }\n });\n }\n setStyle(style$$1, value) {\n this.renderer.setStyle(this.el.nativeElement, style$$1, value + 'px');\n }\n removeStyle(style$$1) {\n this.renderer.removeStyle(this.el.nativeElement, style$$1);\n }\n get options() {\n return this.service.options;\n }\n setOption(style$$1, 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$$1] = parsedValue;\n this.service.setRestoreOption(style$$1, 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 = function WindowComponent_Factory(t) { return new (t || WindowComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DragResizeService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nWindowComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: WindowComponent, selectors: [[\"kendo-window\"]], contentQueries: function WindowComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, WindowTitleBarComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleBarContent = _t.first);\n } }, viewQuery: function WindowComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(WindowTitleBarComponent, 5);\n ɵngcc0.ɵɵviewQuery(ResizeHandleDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleBarView = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.resizeHandles = _t);\n } }, hostVars: 14, hostBindings: function WindowComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function WindowComponent_keydown_HostBindingHandler($event) { return ctx.onComponentKeydown($event); })(\"focus\", function WindowComponent_focus_HostBindingHandler() { return ctx.onComponentFocus(); })(\"blur\", function WindowComponent_blur_HostBindingHandler() { return ctx.onComponentBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabIndex\", ctx.tabIndex)(\"dir\", ctx.dir);\n ɵngcc0.ɵɵstyleProp(\"min-width\", ctx.styleMinWidth)(\"min-height\", ctx.styleMinHeight)(\"position\", ctx.stylePosition);\n ɵngcc0.ɵɵclassProp(\"k-window\", ctx.hostClasses)(\"k-window-maximized\", ctx.wrapperMaximizedClass)(\"k-window-minimized\", ctx.wrapperMinimizedClass);\n } }, inputs: { keepContent: \"keepContent\", draggable: \"draggable\", resizable: \"resizable\", state: \"state\", minWidth: \"minWidth\", minHeight: \"minHeight\", width: \"width\", height: \"height\", top: \"top\", left: \"left\", autoFocusedElement: \"autoFocusedElement\", title: \"title\" }, outputs: { dragStart: \"dragStart\", dragEnd: \"dragEnd\", resizeStart: \"resizeStart\", resizeEnd: \"resizeEnd\", close: \"close\", widthChange: \"widthChange\", heightChange: \"heightChange\", topChange: \"topChange\", leftChange: \"leftChange\", stateChange: \"stateChange\" }, exportAs: [\"kendoWindow\"], features: [ɵngcc0.ɵɵProvidersFeature([\n DragResizeService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.window'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c17, decls: 6, vars: 4, consts: function () { let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the close button\n * @meaning kendo.window.closeTitle\n */\n const MSG_EXTERNAL_2849207436137160812$$DIST_FESM2015_INDEX_JS_9 = goog.getMsg(\"Close\");\n i18n_8 = MSG_EXTERNAL_2849207436137160812$$DIST_FESM2015_INDEX_JS_9;\n }\n else {\n i18n_8 = $localize `:kendo.window.closeTitle|The title of the close button␟bb50cb526949482fc976fd868573ab283580ee69␟2849207436137160812:Close`;\n } let i18n_10; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the restore button\n * @meaning kendo.window.restoreTitle\n */\n const MSG_EXTERNAL_3443120027481340803$$DIST_FESM2015_INDEX_JS_11 = goog.getMsg(\"Restore\");\n i18n_10 = MSG_EXTERNAL_3443120027481340803$$DIST_FESM2015_INDEX_JS_11;\n }\n else {\n i18n_10 = $localize `:kendo.window.restoreTitle|The title of the restore button␟9a9ce231f0396e40adcfa80bfa76e546e0085be0␟3443120027481340803:Restore`;\n } let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the maximize button\n * @meaning kendo.window.maximizeTitle\n */\n const MSG_EXTERNAL_7793415109119115257$$DIST_FESM2015_INDEX_JS_13 = goog.getMsg(\"Maximize\");\n i18n_12 = MSG_EXTERNAL_7793415109119115257$$DIST_FESM2015_INDEX_JS_13;\n }\n else {\n i18n_12 = $localize `:kendo.window.maximizeTitle|The title of the maximize button␟42bc654ef8767c5df5277aa88941b94f8d373b4d␟7793415109119115257:Maximize`;\n } let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the minimize button\n * @meaning kendo.window.minimizeTitle\n */\n const MSG_EXTERNAL_7581084655285341827$$DIST_FESM2015_INDEX_JS_15 = goog.getMsg(\"Minimize\");\n i18n_14 = MSG_EXTERNAL_7581084655285341827$$DIST_FESM2015_INDEX_JS_15;\n }\n else {\n i18n_14 = $localize `:kendo.window.minimizeTitle|The title of the minimize button␟7ca9f9b41a23760f7f74e91ee4c76d5a5f4a706c␟7581084655285341827:Minimize`;\n } return [[\"kendoWindowLocalizedMessages\", \"\", \"closeTitle\", i18n_8, \"restoreTitle\", i18n_10, \"maximizeTitle\", i18n_12, \"minimizeTitle\", i18n_14], [3, \"template\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"k-content k-window-content\", 3, \"hidden\", 4, \"ngIf\"], [3, \"ngIf\"], [3, \"template\"], [1, \"k-window-title\"], [1, \"k-window-actions\"], [\"kendoWindowMinimizeAction\", \"\"], [\"kendoWindowMaximizeAction\", \"\"], [\"kendoWindowRestoreAction\", \"\"], [\"kendoWindowCloseAction\", \"\"], [1, \"k-content\", \"k-window-content\", 3, \"hidden\"], [3, \"ngTemplateOutlet\"], [\"kendoWindowResizeHandle\", \"\", \"kendoDraggable\", \"\", 3, \"direction\", 4, \"ngFor\", \"ngForOf\"], [\"kendoWindowResizeHandle\", \"\", \"kendoDraggable\", \"\", 3, \"direction\"]]; }, template: function WindowComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c16);\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelementContainerStart(1);\n ɵngcc0.ɵɵtemplate(2, WindowComponent_kendo_window_titlebar_2_Template, 8, 10, \"kendo-window-titlebar\", 1);\n ɵngcc0.ɵɵtemplate(3, WindowComponent_ng_content_3_Template, 1, 0, \"ng-content\", 2);\n ɵngcc0.ɵɵtemplate(4, WindowComponent_div_4_Template, 3, 3, \"div\", 3);\n ɵngcc0.ɵɵtemplate(5, WindowComponent_ng_template_5_Template, 1, 1, \"ng-template\", 4);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDefaultTitleBar);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.showDefaultTitleBar);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.state !== \"minimized\" || ctx.keepContent);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.resizable);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc1.NgIf, WindowTitleBarComponent, WindowMinimizeActionDirective, WindowMaximizeActionDirective, WindowRestoreActionDirective, WindowCloseActionDirective, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf, ResizeHandleDirective, ɵngcc3.DraggableDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], WindowComponent.prototype, \"autoFocusedElement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], WindowComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], WindowComponent.prototype, \"draggable\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], WindowComponent.prototype, \"resizable\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], WindowComponent.prototype, \"keepContent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], WindowComponent.prototype, \"state\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], WindowComponent.prototype, \"minWidth\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], WindowComponent.prototype, \"minHeight\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], WindowComponent.prototype, \"width\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], WindowComponent.prototype, \"height\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], WindowComponent.prototype, \"top\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], WindowComponent.prototype, \"left\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"dragStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"dragEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"resizeStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"resizeEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"widthChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"heightChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"topChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"leftChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], WindowComponent.prototype, \"stateChange\", void 0);\n__decorate([\n HostBinding('attr.tabIndex'),\n __metadata(\"design:type\", Number)\n], WindowComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n HostBinding('class.k-window'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], WindowComponent.prototype, \"hostClasses\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], WindowComponent.prototype, \"dir\", null);\n__decorate([\n ViewChild(WindowTitleBarComponent, { static: false }),\n __metadata(\"design:type\", WindowTitleBarComponent)\n], WindowComponent.prototype, \"titleBarView\", void 0);\n__decorate([\n ContentChild(WindowTitleBarComponent, { static: false }),\n __metadata(\"design:type\", WindowTitleBarComponent)\n], WindowComponent.prototype, \"titleBarContent\", void 0);\n__decorate([\n ViewChildren(ResizeHandleDirective),\n __metadata(\"design:type\", QueryList)\n], WindowComponent.prototype, \"resizeHandles\", void 0);\n__decorate([\n HostBinding('style.minWidth'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], WindowComponent.prototype, \"styleMinWidth\", null);\n__decorate([\n HostBinding('style.minHeight'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], WindowComponent.prototype, \"styleMinHeight\", null);\n__decorate([\n HostBinding('style.position'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], WindowComponent.prototype, \"stylePosition\", null);\n__decorate([\n HostBinding('class.k-window-maximized'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], WindowComponent.prototype, \"wrapperMaximizedClass\", null);\n__decorate([\n HostBinding('class.k-window-minimized'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], WindowComponent.prototype, \"wrapperMinimizedClass\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], WindowComponent.prototype, \"onComponentKeydown\", null);\n__decorate([\n HostListener('focus'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], WindowComponent.prototype, \"onComponentFocus\", null);\n__decorate([\n HostListener('blur'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], WindowComponent.prototype, \"onComponentBlur\", null);\nWindowComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n DragResizeService,\n NavigationService,\n NgZone,\n LocalizationService])\n], WindowComponent);\n\nlet WindowMaximizeActionDirective = class 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.look = 'bare';\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 = function WindowMaximizeActionDirective_Factory(t) { return new (t || WindowMaximizeActionDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DragResizeService, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nWindowMaximizeActionDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WindowMaximizeActionDirective, selectors: [[\"button\", \"kendoWindowMaximizeAction\", \"\"]], hostVars: 3, hostBindings: function WindowMaximizeActionDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function WindowMaximizeActionDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"type\", ctx.buttonType);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.visible);\n } }, inputs: { window: \"window\" }, exportAs: [\"kendoWindowMaximizeAction\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], WindowMaximizeActionDirective.prototype, \"window\", void 0);\n__decorate([\n HostBinding('attr.type'),\n __metadata(\"design:type\", String)\n], WindowMaximizeActionDirective.prototype, \"buttonType\", void 0);\n__decorate([\n HostListener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], WindowMaximizeActionDirective.prototype, \"onClick\", null);\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], WindowMaximizeActionDirective.prototype, \"visible\", null);\nWindowMaximizeActionDirective = __decorate([ __param(2, Optional()),\n __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n DragResizeService,\n LocalizationService,\n NgZone])\n], WindowMaximizeActionDirective);\n\nlet WindowMinimizeActionDirective = class 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.look = 'bare';\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 = function WindowMinimizeActionDirective_Factory(t) { return new (t || WindowMinimizeActionDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DragResizeService, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nWindowMinimizeActionDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WindowMinimizeActionDirective, selectors: [[\"button\", \"kendoWindowMinimizeAction\", \"\"]], hostVars: 3, hostBindings: function WindowMinimizeActionDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function WindowMinimizeActionDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"type\", ctx.buttonType);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.visible);\n } }, inputs: { window: \"window\" }, exportAs: [\"kendoWindowMinimizeAction\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], WindowMinimizeActionDirective.prototype, \"window\", void 0);\n__decorate([\n HostBinding('attr.type'),\n __metadata(\"design:type\", String)\n], WindowMinimizeActionDirective.prototype, \"buttonType\", void 0);\n__decorate([\n HostListener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], WindowMinimizeActionDirective.prototype, \"onClick\", null);\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], WindowMinimizeActionDirective.prototype, \"visible\", null);\nWindowMinimizeActionDirective = __decorate([ __param(2, Optional()),\n __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n DragResizeService,\n LocalizationService,\n NgZone])\n], WindowMinimizeActionDirective);\n\nlet WindowCloseActionDirective = class 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.look = 'bare';\n this.icon = 'close';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.closeAction();\n }\n }\n};\nWindowCloseActionDirective.ɵfac = function WindowCloseActionDirective_Factory(t) { return new (t || WindowCloseActionDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DragResizeService, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nWindowCloseActionDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WindowCloseActionDirective, selectors: [[\"button\", \"kendoWindowCloseAction\", \"\"]], hostVars: 1, hostBindings: function WindowCloseActionDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function WindowCloseActionDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"type\", ctx.buttonType);\n } }, inputs: { window: \"window\" }, exportAs: [\"kendoWindowCloseAction\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], WindowCloseActionDirective.prototype, \"window\", void 0);\n__decorate([\n HostBinding('attr.type'),\n __metadata(\"design:type\", String)\n], WindowCloseActionDirective.prototype, \"buttonType\", void 0);\n__decorate([\n HostListener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], WindowCloseActionDirective.prototype, \"onClick\", null);\nWindowCloseActionDirective = __decorate([ __param(2, Optional()),\n __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n DragResizeService,\n LocalizationService,\n NgZone])\n], WindowCloseActionDirective);\n\nlet WindowRestoreActionDirective = class 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.look = 'bare';\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 = function WindowRestoreActionDirective_Factory(t) { return new (t || WindowRestoreActionDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DragResizeService, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nWindowRestoreActionDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WindowRestoreActionDirective, selectors: [[\"button\", \"kendoWindowRestoreAction\", \"\"]], hostVars: 3, hostBindings: function WindowRestoreActionDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function WindowRestoreActionDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"type\", ctx.buttonType);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.visible);\n } }, inputs: { window: \"window\" }, exportAs: [\"kendoWindowRestoreAction\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], WindowRestoreActionDirective.prototype, \"window\", void 0);\n__decorate([\n HostBinding('attr.type'),\n __metadata(\"design:type\", String)\n], WindowRestoreActionDirective.prototype, \"buttonType\", void 0);\n__decorate([\n HostListener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], WindowRestoreActionDirective.prototype, \"onClick\", null);\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], WindowRestoreActionDirective.prototype, \"visible\", null);\nWindowRestoreActionDirective = __decorate([ __param(2, Optional()),\n __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n DragResizeService,\n LocalizationService,\n NgZone])\n], WindowRestoreActionDirective);\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 * Indicates that the **Close** button of a Window that is opened through `WindowService` is clicked.\n */\nclass WindowCloseResult {\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\nvar WindowContainerService_1;\n/**\n * @hidden\n */\nlet WindowContainerService = WindowContainerService_1 = class WindowContainerService {\n set container(container) {\n WindowContainerService_1.container = container;\n }\n get container() {\n return WindowContainerService_1.container;\n }\n};\nWindowContainerService.ɵfac = function WindowContainerService_Factory(t) { return new (t || WindowContainerService)(); };\nWindowContainerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: WindowContainerService, factory: function (t) { return WindowContainerService.ɵfac(t); } });\nWindowContainerService.container = null;\n\nconst isNotComponent$1 = (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 */\nlet WindowService = class 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$1(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 = function WindowService_Factory(t) { return new (t || WindowService)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(WindowContainerService)); };\nWindowService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: WindowService, factory: function (t) { return WindowService.ɵfac(t); } });\nWindowService = __decorate([ __param(1, Inject(WindowContainerService)),\n __metadata(\"design:paramtypes\", [ComponentFactoryResolver,\n WindowContainerService])\n], WindowService);\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 */\nlet DialogContainerDirective = class DialogContainerDirective {\n constructor(container, service) {\n service.container = container;\n }\n};\nDialogContainerDirective.ɵfac = function DialogContainerDirective_Factory(t) { return new (t || DialogContainerDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DialogContainerService)); };\nDialogContainerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DialogContainerDirective, selectors: [[\"\", \"kendoDialogContainer\", \"\"]] });\nDialogContainerDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef,\n DialogContainerService])\n], DialogContainerDirective);\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { closeTitle: \"closeTitle\", restoreTitle: \"restoreTitle\", maximizeTitle: \"maximizeTitle\", minimizeTitle: \"minimizeTitle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"closeTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"restoreTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"maximizeTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"minimizeTitle\", void 0);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoDialogLocalizedMessages\", \"\"], [\"\", \"kendoWindowLocalizedMessages\", \"\"], [\"\", \"kendoDialogTitleBarLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\nvar CustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_dialogs %}#toc-localization)).\n */\nlet CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nCustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(t) { return new (t || CustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CustomMessagesComponent, selectors: [[\"kendo-dialog-messages\"], [\"kendo-window-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nCustomMessagesComponent = CustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CustomMessagesComponent);\n\n/**\n * @hidden\n */\nconst SHARED_DIRECTIVES = [\n DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective\n];\n/**\n * @hidden\n */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule], CommonModule] });\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 */\nlet DialogModule = class DialogModule {\n};\nDialogModule.ɵfac = function DialogModule_Factory(t) { return new (t || DialogModule)(); };\nDialogModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DialogModule });\nDialogModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [DialogContainerService, DialogService], imports: [[SharedModule]] });\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 */\nlet WindowContainerDirective = class WindowContainerDirective {\n constructor(container, service) {\n service.container = container;\n }\n};\nWindowContainerDirective.ɵfac = function WindowContainerDirective_Factory(t) { return new (t || WindowContainerDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(WindowContainerService)); };\nWindowContainerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WindowContainerDirective, selectors: [[\"\", \"kendoWindowContainer\", \"\"]] });\nWindowContainerDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef,\n WindowContainerService])\n], WindowContainerDirective);\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 */\nlet WindowModule = class WindowModule {\n};\nWindowModule.ɵfac = function WindowModule_Factory(t) { return new (t || WindowModule)(); };\nWindowModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: WindowModule });\nWindowModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [WindowContainerService, WindowService], imports: [[SharedModule, DraggableModule]] });\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 */\nlet DialogsModule = class DialogsModule {\n};\nDialogsModule.ɵfac = function DialogsModule_Factory(t) { return new (t || DialogsModule)(); };\nDialogsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DialogsModule });\nDialogsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [DialogModule, WindowModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialogActionsComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-dialog-actions',\n template: `\n \n \n \n {{ action.text }}\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { 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 }], actions: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialogTitleBarComponent, [{\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 }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc2.LocalizationService, decorators: [{\n type: Optional\n }] }]; }, { close: [{\n type: Output\n }], className: [{\n type: HostBinding,\n args: ['class.k-window-titlebar']\n }, {\n type: HostBinding,\n args: ['class.k-dialog-titlebar']\n }], id: [{\n type: Input\n }], closeTitle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialogComponent, [{\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 trigger('dialogSlideInAppear', [\n state('in', style({ transform: 'translate(0, 0)' })),\n transition('void => *', [style({ transform: 'translate(0, -10%)' }), animate('.3s cubic-bezier(.2, 1, .2, 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 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { actionsLayout: [{\n type: Input\n }], action: [{\n type: Output\n }], close: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], \n /**\n * @hidden\n */\n onComponentKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-dialog-wrapper']\n }], actions: [{\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 }], 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 }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialogContainerService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialogService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: DialogContainerService, decorators: [{\n type: Inject,\n args: [DialogContainerService]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragResizeService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoWindowResizeHandle]'\n }]\n }], function () { return [{ type: ɵngcc3.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DragResizeService }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-resize-handle']\n }], direction: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowTitleBarComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-window-titlebar',\n template: `\n \n \n
\n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: DragResizeService }, { type: ɵngcc0.NgZone }]; }, { 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 }], \n /**\n * @hidden\n */\n handle: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }], template: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: DragResizeService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowComponent, [{\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 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DragResizeService }, { type: NavigationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc2.LocalizationService }]; }, { keepContent: [{\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 }], draggable: [{\n type: Input\n }], resizable: [{\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 }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-window']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\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 }], \n /**\n * @hidden\n */\n onComponentKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], \n /**\n * @hidden\n */\n onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }], \n /**\n * @hidden\n */\n onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }], autoFocusedElement: [{\n type: Input\n }], title: [{\n type: Input\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowMaximizeActionDirective, [{\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]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], window: [{\n type: Input\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowMinimizeActionDirective, [{\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]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], window: [{\n type: Input\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowCloseActionDirective, [{\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]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], window: [{\n type: Input\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowRestoreActionDirective, [{\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]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], window: [{\n type: Input\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowContainerService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: WindowContainerService, decorators: [{\n type: Inject,\n args: [WindowContainerService]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialogContainerDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDialogContainer]'\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: DialogContainerService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: `\n [kendoDialogLocalizedMessages],\n [kendoWindowLocalizedMessages],\n [kendoDialogTitleBarLocalizedMessages]\n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-dialog-messages, kendo-window-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES, CommonModule],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: function () { return [DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, CommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialogModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DialogModule, { declarations: [DialogComponent, DialogTitleBarComponent, DialogContainerDirective], imports: [SharedModule], exports: [DialogComponent, DialogTitleBarComponent, DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, DialogContainerDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowContainerDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoWindowContainer]'\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: WindowContainerService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WindowModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(WindowModule, { declarations: function () { return [ResizeHandleDirective, WindowComponent, WindowTitleBarComponent, WindowCloseActionDirective, WindowMinimizeActionDirective, WindowMaximizeActionDirective, WindowRestoreActionDirective, WindowContainerDirective]; }, imports: function () { return [SharedModule, DraggableModule]; }, exports: function () { return [WindowComponent, WindowCloseActionDirective, WindowMinimizeActionDirective, WindowMaximizeActionDirective, WindowRestoreActionDirective, WindowTitleBarComponent, DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, WindowContainerDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DialogsModule, [{\n type: NgModule,\n args: [{\n exports: [DialogModule, WindowModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DialogsModule, { exports: [DialogModule, WindowModule] }); })();\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DIALOG_DIRECTIVES, DialogContainerDirective, DialogContainerService, CustomMessagesComponent, DIALOG_LOCALIZATION_SERVICE, LocalizedMessagesDirective, Messages, TitleBarLocalizationService, SHARED_DIRECTIVES, SharedModule, DragResizeService, NavigationService, WindowContainerDirective, WindowContainerService, ResizeHandleDirective, DialogComponent, DialogTitleBarComponent, DialogContentBase, DialogActionsComponent, DialogService, DialogCloseResult, DialogRef, DialogSettings, DialogAction, WindowComponent, WindowTitleBarComponent, WindowMaximizeActionDirective, WindowMinimizeActionDirective, WindowCloseActionDirective, WindowRestoreActionDirective, WindowSettings, WindowRef, WindowCloseResult, WindowService, DialogModule, WindowModule, DialogsModule };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, Input, Output, ViewChild, ElementRef, HostBinding, Component, Renderer2, Directive, TemplateRef, Injectable, ViewChildren, QueryList, ChangeDetectorRef, NgZone, InjectionToken, forwardRef, isDevMode, ContentChild, ViewContainerRef, Optional, Inject, KeyValueDiffers, ContentChildren, ChangeDetectionStrategy, NgModule, HostListener } from '@angular/core';\nimport { isDocumentAvailable, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter, pointers, touchEnabled } from '@progress/kendo-common';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { merge, fromEvent, Subject, Subscription, of, interval } from 'rxjs';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@progress/kendo-angular-common';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@progress/kendo-angular-popup';\nimport * as ɵngcc5 from '@angular/forms';\nimport * as ɵngcc6 from '@progress/kendo-angular-treeview';\n\nconst _c0 = [\"input\"];\nconst _c1 = function (a0, a1) { return { focus: a0, blur: a1 }; };\nconst _c2 = [\"content\"];\nconst _c3 = [\"list\"];\nconst _c4 = [\"virtualContainer\"];\nfunction ListComponent_div_0_1_ng_template_0_Template(rf, ctx) { }\nconst _c5 = function (a0, a1) { return { templateRef: a0, $implicit: a1 }; };\nfunction ListComponent_div_0_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_div_0_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r7.fixedGroupTemplate.templateRef, ctx_r7.currentGroup));\n} }\nfunction ListComponent_div_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r8.currentGroup);\n} }\nconst _c6 = function (a0) { return { \"k-virtual-item\": a0 }; };\nconst _c7 = function (a0, a1, a2) { return { \"height.px\": a0, \"minHeight.px\": a1, \"boxSizing\": a2 }; };\nfunction ListComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, ListComponent_div_0_1_Template, 1, 4, null, 5);\n ɵngcc0.ɵɵtemplate(2, ListComponent_div_0_ng_template_2_Template, 2, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(4, _c6, ctx_r0.virtual))(\"ngStyle\", ɵngcc0.ɵɵpureFunction3(6, _c7, ctx_r0.virtual == null ? null : ctx_r0.virtual.itemHeight, ctx_r0.virtual == null ? null : ctx_r0.virtual.itemHeight, ctx_r0.virtual ? \"border-box\" : \"inherit\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.fixedGroupTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.fixedGroupTemplate);\n} }\nfunction ListComponent_5_ng_template_0_label_1_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"label\", 14);\n ɵngcc0.ɵɵelementStart(1, \"input\", 15);\n ɵngcc0.ɵɵlistener(\"change\", function ListComponent_5_ng_template_0_label_1_Template_input_change_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r18); const itemIndex_r12 = ɵngcc0.ɵɵnextContext().index; const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.onCheckedChange($event, itemIndex_r12); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const itemIndex_r12 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"checked\", ctx_r13.isChecked(itemIndex_r12));\n} }\nfunction ListComponent_5_ng_template_0_2_ng_template_0_Template(rf, ctx) { }\nfunction ListComponent_5_ng_template_0_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_5_ng_template_0_2_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const dataItem_r11 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r14.template.templateRef, dataItem_r11));\n} }\nfunction ListComponent_5_ng_template_0_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const dataItem_r11 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r15 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r15.getText(dataItem_r11));\n} }\nconst _c8 = function (a0, a1) { return { \"k-virtual-item\": a0, \"k-state-disabled\": a1 }; };\nfunction ListComponent_5_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 12);\n ɵngcc0.ɵɵtemplate(1, ListComponent_5_ng_template_0_label_1_Template, 2, 1, \"label\", 13);\n ɵngcc0.ɵɵtemplate(2, ListComponent_5_ng_template_0_2_Template, 1, 4, null, 5);\n ɵngcc0.ɵɵtemplate(3, ListComponent_5_ng_template_0_ng_template_3_Template, 1, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r11 = ctx.$implicit;\n const itemIndex_r12 = ctx.index;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"checkboxes\", ctx_r10.checkboxes)(\"height\", ctx_r10.virtual == null ? null : ctx_r10.virtual.itemHeight)(\"index\", itemIndex_r12 + ctx_r10.startFrom)(\"multipleSelection\", ctx_r10.multipleSelection)(\"ngClass\", ɵngcc0.ɵɵpureFunction2(10, _c8, ctx_r10.virtual, ctx_r10.isDisabled(itemIndex_r12)));\n ɵngcc0.ɵɵattribute(\"id\", ctx_r10.optionPrefix + \"-\" + ctx_r10.getValue(dataItem_r11))(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r10.checkboxes.enabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r10.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r10.template);\n} }\nfunction ListComponent_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_5_ng_template_0_Template, 4, 13, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.data);\n} }\nfunction ListComponent_6_ng_template_0_li_0_1_ng_template_0_Template(rf, ctx) { }\nfunction ListComponent_6_ng_template_0_li_0_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_0_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r28 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r28.groupTemplate.templateRef, dataItem_r24.value));\n} }\nfunction ListComponent_6_ng_template_0_li_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r24.value, \"\");\n} }\nfunction ListComponent_6_ng_template_0_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 18);\n ɵngcc0.ɵɵtemplate(1, ListComponent_6_ng_template_0_li_0_1_Template, 1, 4, null, 5);\n ɵngcc0.ɵɵtemplate(2, ListComponent_6_ng_template_0_li_0_ng_template_2_Template, 2, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(7, _c6, ctx_r26.virtual))(\"ngStyle\", ɵngcc0.ɵɵpureFunction3(9, _c7, ctx_r26.virtual == null ? null : ctx_r26.virtual.itemHeight, ctx_r26.virtual == null ? null : ctx_r26.virtual.itemHeight, ctx_r26.virtual ? \"border-box\" : \"inherit\"));\n ɵngcc0.ɵɵattribute(\"group-index\", dataItem_r24.index)(\"id\", ctx_r26.optionPrefix + \"-\" + ctx_r26.getValue(dataItem_r24.value))(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r26.groupTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r26.groupTemplate);\n} }\nfunction ListComponent_6_ng_template_0_li_1_1_ng_template_0_Template(rf, ctx) { }\nfunction ListComponent_6_ng_template_0_li_1_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r34 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r34.template.templateRef, dataItem_r24.value));\n} }\nfunction ListComponent_6_ng_template_0_li_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r35 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r35.getText(dataItem_r24.value));\n} }\nfunction ListComponent_6_ng_template_0_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 19);\n ɵngcc0.ɵɵtemplate(1, ListComponent_6_ng_template_0_li_1_1_Template, 1, 4, null, 5);\n ɵngcc0.ɵɵtemplate(2, ListComponent_6_ng_template_0_li_1_ng_template_2_Template, 1, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r24 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r27 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"height\", ctx_r27.virtual == null ? null : ctx_r27.virtual.itemHeight)(\"index\", dataItem_r24.offsetIndex)(\"multipleSelection\", ctx_r27.multipleSelection)(\"ngClass\", ɵngcc0.ɵɵpureFunction2(9, _c8, ctx_r27.virtual, ctx_r27.isDisabled(dataItem_r24.offsetIndex)));\n ɵngcc0.ɵɵattribute(\"absolute-index\", dataItem_r24.index)(\"id\", ctx_r27.optionPrefix + \"-\" + ctx_r27.getValue(dataItem_r24.value))(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r27.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r27.template);\n} }\nfunction ListComponent_6_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_0_Template, 3, 13, \"li\", 16);\n ɵngcc0.ɵɵtemplate(1, ListComponent_6_ng_template_0_li_1_Template, 3, 12, \"li\", 17);\n} if (rf & 2) {\n const dataItem_r24 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", dataItem_r24.header && dataItem_r24.index > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !dataItem_r24.header);\n} }\nfunction ListComponent_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_6_ng_template_0_Template, 2, 2, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.data);\n} }\nfunction ListComponent_kendo_resize_sensor_7_Template(rf, ctx) { if (rf & 1) {\n const _r41 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 20);\n ɵngcc0.ɵɵlistener(\"resize\", function ListComponent_kendo_resize_sensor_7_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r41); const ctx_r40 = ɵngcc0.ɵɵnextContext(); return ctx_r40.listResize.emit(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction ListComponent_div_8_Template(rf, ctx) { if (rf & 1) {\n const _r44 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 21, 22);\n ɵngcc0.ɵɵelementStart(2, \"div\");\n ɵngcc0.ɵɵelementStart(3, \"kendo-resize-sensor\", 20);\n ɵngcc0.ɵɵlistener(\"resize\", function ListComponent_div_8_Template_kendo_resize_sensor_resize_3_listener() { ɵngcc0.ɵɵrestoreView(_r44); const ctx_r43 = ɵngcc0.ɵɵnextContext(); return ctx_r43.listResize.emit(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r6.scrollHeight, \"px\");\n} }\nconst _c9 = function (a0, a1) { return { \"k-virtual-content\": a0, \"k-list-scroller\": a1 }; };\nconst _c10 = function (a0) { return { \"k-virtual-list\": a0 }; };\nconst _c11 = [\"container\"];\nconst _c12 = [\"popupTemplate\"];\nconst _c13 = [\"optionsList\"];\nfunction AutoCompleteComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function AutoCompleteComponent_span_3_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.clearValue($event); })(\"mousedown\", function AutoCompleteComponent_span_3_Template_span_mousedown_0_listener($event) { return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r1.clearButtonVisiblity);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r1.clearTitle);\n} }\nfunction AutoCompleteComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 9);\n} }\nfunction AutoCompleteComponent_ng_template_5_0_ng_template_0_Template(rf, ctx) { }\nconst _c18 = function (a0) { return { templateRef: a0 }; };\nfunction AutoCompleteComponent_ng_template_5_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_5_0_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate.templateRef));\n} }\nfunction AutoCompleteComponent_ng_template_5_div_3_ng_template_1_Template(rf, ctx) { }\nfunction AutoCompleteComponent_ng_template_5_div_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r16.noDataText);\n} }\nfunction AutoCompleteComponent_ng_template_5_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 15);\n ɵngcc0.ɵɵtemplate(1, AutoCompleteComponent_ng_template_5_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 16);\n ɵngcc0.ɵɵtemplate(2, AutoCompleteComponent_ng_template_5_div_3_ng_template_2_Template, 2, 1, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r12.noDataTemplate == null ? null : ctx_r12.noDataTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r12.noDataTemplate);\n} }\nfunction AutoCompleteComponent_ng_template_5_4_ng_template_0_Template(rf, ctx) { }\nfunction AutoCompleteComponent_ng_template_5_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_5_4_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r13.footerTemplate.templateRef));\n} }\nfunction AutoCompleteComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_5_0_Template, 1, 3, null, 10);\n ɵngcc0.ɵɵelementStart(1, \"kendo-list\", 11, 12);\n ɵngcc0.ɵɵlistener(\"pageChange\", function AutoCompleteComponent_ng_template_5_Template_kendo_list_pageChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, AutoCompleteComponent_ng_template_5_div_3_Template, 3, 5, \"div\", 13);\n ɵngcc0.ɵɵtemplate(4, AutoCompleteComponent_ng_template_5_4_Template, 1, 3, null, 10);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r4.listBoxId)(\"optionPrefix\", ctx_r4.optionPrefix)(\"data\", ctx_r4.data)(\"textField\", ctx_r4.valueField)(\"valueField\", ctx_r4.valueField)(\"template\", ctx_r4.template)(\"groupTemplate\", ctx_r4.groupTemplate)(\"fixedGroupTemplate\", ctx_r4.fixedGroupTemplate)(\"height\", ctx_r4.listHeight)(\"show\", ctx_r4.isOpen)(\"virtual\", ctx_r4.virtual);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.footerTemplate);\n} }\nfunction AutoCompleteComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 17);\n ɵngcc0.ɵɵlistener(\"resize\", function AutoCompleteComponent_ng_template_7_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c19 = [\"wrapper\"];\nconst _c20 = [\"select\"];\nconst _c25 = function (a0) { return { mousedown: a0 }; };\nfunction ComboBoxComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function ComboBoxComponent_span_5_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.clearValue($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r2.clearButtonVisiblity);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(4, _c25, ctx_r2.preventEventDefault));\n ɵngcc0.ɵɵattribute(\"title\", ctx_r2.clearTitle);\n} }\nfunction ComboBoxComponent_ng_template_9_0_ng_template_0_Template(rf, ctx) { }\nfunction ComboBoxComponent_ng_template_9_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ComboBoxComponent_ng_template_9_0_ng_template_0_Template, 0, 0, \"ng-template\", 17);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate.templateRef));\n} }\nfunction ComboBoxComponent_ng_template_9_div_3_ng_template_1_Template(rf, ctx) { }\nfunction ComboBoxComponent_ng_template_9_div_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r16.noDataText);\n} }\nfunction ComboBoxComponent_ng_template_9_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18);\n ɵngcc0.ɵɵtemplate(1, ComboBoxComponent_ng_template_9_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 19);\n ɵngcc0.ɵɵtemplate(2, ComboBoxComponent_ng_template_9_div_3_ng_template_2_Template, 2, 1, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r12.noDataTemplate ? ctx_r12.noDataTemplate.templateRef : undefined));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r12.noDataTemplate);\n} }\nfunction ComboBoxComponent_ng_template_9_4_ng_template_0_Template(rf, ctx) { }\nfunction ComboBoxComponent_ng_template_9_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ComboBoxComponent_ng_template_9_4_ng_template_0_Template, 0, 0, \"ng-template\", 17);\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r13.footerTemplate.templateRef));\n} }\nfunction ComboBoxComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, ComboBoxComponent_ng_template_9_0_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵelementStart(1, \"kendo-list\", 14, 15);\n ɵngcc0.ɵɵlistener(\"pageChange\", function ComboBoxComponent_ng_template_9_Template_kendo_list_pageChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ComboBoxComponent_ng_template_9_div_3_Template, 3, 5, \"div\", 16);\n ɵngcc0.ɵɵtemplate(4, ComboBoxComponent_ng_template_9_4_Template, 1, 3, null, 13);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r5.listBoxId)(\"optionPrefix\", ctx_r5.optionPrefix)(\"data\", ctx_r5.data)(\"textField\", ctx_r5.textField)(\"valueField\", ctx_r5.valueField)(\"template\", ctx_r5.template)(\"groupTemplate\", ctx_r5.groupTemplate)(\"fixedGroupTemplate\", ctx_r5.fixedGroupTemplate)(\"height\", ctx_r5.listHeight)(\"show\", ctx_r5.isOpen)(\"virtual\", ctx_r5.virtual);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n} }\nfunction ComboBoxComponent_ng_template_11_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 20);\n ɵngcc0.ɵɵlistener(\"resize\", function ComboBoxComponent_ng_template_11_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c26 = function (a0) { return { \"k-state-disabled\": a0 }; };\nfunction DropDownListComponent_4_ng_template_0_Template(rf, ctx) { }\nfunction DropDownListComponent_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownListComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r1.valueTemplate.templateRef, ctx_r1.dataItem));\n} }\nfunction DropDownListComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.getText());\n} }\nfunction DropDownListComponent_ng_template_8_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function DropDownListComponent_ng_template_8_ng_template_0_Template_span_click_0_listener($event) { return $event.stopImmediatePropagation(); });\n ɵngcc0.ɵɵelementStart(1, \"input\", 15);\n ɵngcc0.ɵɵlistener(\"ngModelChange\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_ngModelChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.filterText = $event; })(\"keydown\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_keydown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.keydown($event); })(\"input\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_input_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.handleFilter($event); })(\"focus\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_focus_1_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.onFilterFocus(); })(\"blur\", function DropDownListComponent_ng_template_8_ng_template_0_Template_input_blur_1_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r21 = ɵngcc0.ɵɵnextContext(2); return ctx_r21.blurFilterInput(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"span\", 16);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"filterInput\", ctx_r8.isFocused && !ctx_r8.touchEnabled)(\"dir\", ctx_r8.direction)(\"ngModel\", ctx_r8.filterText);\n ɵngcc0.ɵɵattribute(\"aria-owns\", ctx_r8.ariaOwns)(\"aria-activedescendant\", ctx_r8.ariaActivedescendant)(\"aria-label\", ctx_r8.noDataLabel);\n} }\nfunction DropDownListComponent_ng_template_8_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 17);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(3, _c26, ctx_r9.isDisabledDefaultItem))(\"index\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r9.getDefaultItemText(), \" \");\n} }\nfunction DropDownListComponent_ng_template_8_ng_template_2_ng_template_1_Template(rf, ctx) { }\nfunction DropDownListComponent_ng_template_8_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 17);\n ɵngcc0.ɵɵtemplate(1, DropDownListComponent_ng_template_8_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(3, _c26, ctx_r10.isDisabledDefaultItem))(\"index\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(5, _c5, ctx_r10.itemTemplate.templateRef, ctx_r10.defaultItem));\n} }\nfunction DropDownListComponent_ng_template_8_3_ng_template_0_Template(rf, ctx) { }\nfunction DropDownListComponent_ng_template_8_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownListComponent_ng_template_8_3_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r11.headerTemplate.templateRef));\n} }\nfunction DropDownListComponent_ng_template_8_div_6_ng_template_1_Template(rf, ctx) { }\nfunction DropDownListComponent_ng_template_8_div_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r25 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r25.noDataText);\n} }\nfunction DropDownListComponent_ng_template_8_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18);\n ɵngcc0.ɵɵtemplate(1, DropDownListComponent_ng_template_8_div_6_ng_template_1_Template, 0, 0, \"ng-template\", 19);\n ɵngcc0.ɵɵtemplate(2, DropDownListComponent_ng_template_8_div_6_ng_template_2_Template, 2, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r13.noDataTemplate ? ctx_r13.noDataTemplate.templateRef : undefined));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r13.noDataTemplate);\n} }\nfunction DropDownListComponent_ng_template_8_7_ng_template_0_Template(rf, ctx) { }\nfunction DropDownListComponent_ng_template_8_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownListComponent_ng_template_8_7_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r14.footerTemplate.templateRef));\n} }\nfunction DropDownListComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n const _r28 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, DropDownListComponent_ng_template_8_ng_template_0_Template, 3, 6, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(1, DropDownListComponent_ng_template_8_ng_template_1_Template, 2, 5, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(2, DropDownListComponent_ng_template_8_ng_template_2_Template, 2, 8, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(3, DropDownListComponent_ng_template_8_3_Template, 1, 3, null, 4);\n ɵngcc0.ɵɵelementStart(4, \"kendo-list\", 11, 12);\n ɵngcc0.ɵɵlistener(\"pageChange\", function DropDownListComponent_ng_template_8_Template_kendo_list_pageChange_4_listener($event) { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r27 = ɵngcc0.ɵɵnextContext(); return ctx_r27.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, DropDownListComponent_ng_template_8_div_6_Template, 3, 5, \"div\", 13);\n ɵngcc0.ɵɵtemplate(7, DropDownListComponent_ng_template_8_7_Template, 1, 3, null, 4);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.filterable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.defaultItem && !ctx_r4.itemTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.defaultItem && ctx_r4.itemTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r4.listBoxId)(\"optionPrefix\", ctx_r4.optionPrefix)(\"data\", ctx_r4.data)(\"textField\", ctx_r4.textField)(\"valueField\", ctx_r4.valueField)(\"template\", ctx_r4.itemTemplate)(\"groupTemplate\", ctx_r4.groupTemplate)(\"fixedGroupTemplate\", ctx_r4.fixedGroupTemplate)(\"height\", ctx_r4.listHeight)(\"show\", ctx_r4.isOpen)(\"virtual\", ctx_r4.virtual);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.footerTemplate);\n} }\nfunction DropDownListComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n const _r30 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 20);\n ɵngcc0.ɵɵlistener(\"resize\", function DropDownListComponent_ng_template_10_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r30); const ctx_r29 = ɵngcc0.ɵɵnextContext(); return ctx_r29.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c29 = function (a1) { return { \"k-dropdown-wrap\": true, \"k-state-disabled\": a1 }; };\nfunction MultiSelectComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 11);\n ɵngcc0.ɵɵlistener(\"mousedown\", function MultiSelectComponent_span_6_Template_span_mousedown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.clearAll($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r2.clearButtonVisiblity);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r2.clearTitle);\n} }\nfunction MultiSelectComponent_span_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 12);\n} }\nfunction MultiSelectComponent_ng_template_8_0_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectComponent_ng_template_8_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectComponent_ng_template_8_0_ng_template_0_Template, 0, 0, \"ng-template\", 18);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate.templateRef));\n} }\nfunction MultiSelectComponent_ng_template_8_div_1_2_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectComponent_ng_template_8_div_1_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectComponent_ng_template_8_div_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 18);\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r16.customItemTemplate.templateRef, ctx_r16.text));\n} }\nfunction MultiSelectComponent_ng_template_8_div_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵtextInterpolate(ctx_r18.text);\n} }\nfunction MultiSelectComponent_ng_template_8_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵelementStart(1, \"div\", 20);\n ɵngcc0.ɵɵtemplate(2, MultiSelectComponent_ng_template_8_div_1_2_Template, 1, 4, null, 21);\n ɵngcc0.ɵɵtemplate(3, MultiSelectComponent_ng_template_8_div_1_ng_template_3_Template, 1, 1, \"ng-template\", null, 22, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelement(5, \"span\", 23);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r17 = ɵngcc0.ɵɵreference(4);\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"multipleSelection\", true)(\"index\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r11.customItemTemplate)(\"ngIfElse\", _r17);\n} }\nfunction MultiSelectComponent_ng_template_8_div_4_ng_template_1_Template(rf, ctx) { }\nfunction MultiSelectComponent_ng_template_8_div_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r21 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r21.noDataText);\n} }\nfunction MultiSelectComponent_ng_template_8_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 24);\n ɵngcc0.ɵɵtemplate(1, MultiSelectComponent_ng_template_8_div_4_ng_template_1_Template, 0, 0, \"ng-template\", 25);\n ɵngcc0.ɵɵtemplate(2, MultiSelectComponent_ng_template_8_div_4_ng_template_2_Template, 2, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r13.noDataTemplate ? ctx_r13.noDataTemplate.templateRef : undefined));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r13.noDataTemplate);\n} }\nfunction MultiSelectComponent_ng_template_8_5_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectComponent_ng_template_8_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectComponent_ng_template_8_5_ng_template_0_Template, 0, 0, \"ng-template\", 18);\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r14.footerTemplate.templateRef));\n} }\nfunction MultiSelectComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n const _r24 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, MultiSelectComponent_ng_template_8_0_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵtemplate(1, MultiSelectComponent_ng_template_8_div_1_Template, 6, 4, \"div\", 14);\n ɵngcc0.ɵɵelementStart(2, \"kendo-list\", 15, 16);\n ɵngcc0.ɵɵlistener(\"pageChange\", function MultiSelectComponent_ng_template_8_Template_kendo_list_pageChange_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r23 = ɵngcc0.ɵɵnextContext(); return ctx_r23.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, MultiSelectComponent_ng_template_8_div_4_Template, 3, 5, \"div\", 17);\n ɵngcc0.ɵɵtemplate(5, MultiSelectComponent_ng_template_8_5_Template, 1, 3, null, 13);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.allowCustom && ctx_r5.text);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r5.listBoxId)(\"optionPrefix\", ctx_r5.optionPrefix)(\"data\", ctx_r5.data)(\"textField\", ctx_r5.textField)(\"valueField\", ctx_r5.valueField)(\"height\", ctx_r5.listHeight)(\"template\", ctx_r5.template)(\"groupTemplate\", ctx_r5.groupTemplate)(\"fixedGroupTemplate\", ctx_r5.fixedGroupTemplate)(\"show\", ctx_r5.isOpen)(\"multipleSelection\", true)(\"virtual\", ctx_r5.virtual)(\"checkboxes\", ctx_r5.checkboxes);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n} }\nfunction MultiSelectComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n const _r26 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 26);\n ɵngcc0.ɵɵlistener(\"resize\", function MultiSelectComponent_ng_template_10_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r26); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c34 = [\"header\"];\nfunction MultiColumnComboBoxComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function MultiColumnComboBoxComponent_span_5_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.clearValue($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r2.clearButtonVisiblity);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(4, _c25, ctx_r2.preventEventDefault));\n ɵngcc0.ɵɵattribute(\"title\", ctx_r2.clearTitle);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_0_ng_template_0_Template(rf, ctx) { }\nfunction MultiColumnComboBoxComponent_ng_template_9_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_0_ng_template_0_Template, 0, 0, \"ng-template\", 23);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate == null ? null : ctx_r10.headerTemplate.templateRef));\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_6_col_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"col\");\n} if (rf & 2) {\n const column_r20 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵstyleProp(\"width\", column_r20.width, \"px\");\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_container_6_col_1_Template, 1, 2, \"col\", 24);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r20 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r20.hidden && column_r20.matchesMedia);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r23 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", column_r23.title || column_r23.field, \" \");\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_ng_template_0_Template(rf, ctx) { }\nconst _c39 = function (a0, a1, a2) { return { templateRef: a0, $implicit: a1, column: a2 }; };\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 23);\n} if (rf & 2) {\n const column_r23 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction3(1, _c39, column_r23.headerTemplate == null ? null : column_r23.headerTemplate.templateRef, column_r23, column_r23));\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 26);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_ng_container_1_Template, 2, 1, \"ng-container\", 13);\n ɵngcc0.ɵɵtemplate(2, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_2_Template, 1, 5, null, 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r23 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"ngStyle\", column_r23.headerStyle)(\"ngClass\", column_r23.headerClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r23.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", column_r23.headerTemplate);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_th_1_Template, 3, 4, \"th\", 25);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r23 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r23.hidden && column_r23.matchesMedia);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r33 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const dataItem_r31 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r35 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r35.textFrom(dataItem_r31, column_r33.field), \" \");\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_ng_template_0_Template(rf, ctx) { }\nconst _c40 = function (a0, a1, a2, a3) { return { templateRef: a0, $implicit: a1, dataItem: a2, column: a3 }; };\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 23);\n} if (rf & 2) {\n const column_r33 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const dataItem_r31 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction4(1, _c40, column_r33.cellTemplate == null ? null : column_r33.cellTemplate.templateRef, dataItem_r31, dataItem_r31, column_r33));\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 28);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_ng_container_1_Template, 2, 1, \"ng-container\", 13);\n ɵngcc0.ɵɵtemplate(2, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_2_Template, 1, 6, null, 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r33 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵstyleProp(\"width\", column_r33.width, \"px\");\n ɵngcc0.ɵɵproperty(\"ngClass\", column_r33.class)(\"ngStyle\", column_r33.style);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r33.cellTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", column_r33.cellTemplate);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_span_1_Template, 3, 6, \"span\", 27);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const column_r33 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r33.hidden && column_r33.matchesMedia);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_ng_container_0_Template, 2, 1, \"ng-container\", 18);\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r15.columns);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_1_Template(rf, ctx) { }\nfunction MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r44 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r44.noDataText);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_div_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 29);\n ɵngcc0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_1_Template, 0, 0, \"ng-template\", 30);\n ɵngcc0.ɵɵtemplate(2, MultiColumnComboBoxComponent_ng_template_9_div_14_ng_template_2_Template, 2, 1, \"ng-template\", 31);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r17.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r17.noDataTemplate == null ? null : ctx_r17.noDataTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r17.noDataTemplate);\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_15_ng_template_2_Template(rf, ctx) { }\nfunction MultiColumnComboBoxComponent_ng_template_9_ng_container_15_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 32);\n ɵngcc0.ɵɵtemplate(2, MultiColumnComboBoxComponent_ng_template_9_ng_container_15_ng_template_2_Template, 0, 0, \"ng-template\", 23);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r18.footerTemplate.templateRef));\n} }\nfunction MultiColumnComboBoxComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {\n const _r47 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_9_0_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵelementStart(1, \"div\", 14, 15);\n ɵngcc0.ɵɵelementStart(3, \"div\", 16);\n ɵngcc0.ɵɵelementStart(4, \"table\", 17);\n ɵngcc0.ɵɵelementStart(5, \"colgroup\");\n ɵngcc0.ɵɵtemplate(6, MultiColumnComboBoxComponent_ng_template_9_ng_container_6_Template, 2, 1, \"ng-container\", 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"tbody\");\n ɵngcc0.ɵɵelementStart(8, \"tr\");\n ɵngcc0.ɵɵtemplate(9, MultiColumnComboBoxComponent_ng_template_9_ng_container_9_Template, 2, 1, \"ng-container\", 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, MultiColumnComboBoxComponent_ng_template_9_ng_template_10_Template, 1, 1, \"ng-template\", null, 19, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(12, \"kendo-list\", 20, 21);\n ɵngcc0.ɵɵlistener(\"pageChange\", function MultiColumnComboBoxComponent_ng_template_9_Template_kendo_list_pageChange_12_listener($event) { ɵngcc0.ɵɵrestoreView(_r47); const ctx_r46 = ɵngcc0.ɵɵnextContext(); return ctx_r46.pageChange($event); })(\"listResize\", function MultiColumnComboBoxComponent_ng_template_9_Template_kendo_list_listResize_12_listener() { ɵngcc0.ɵɵrestoreView(_r47); const _r11 = ɵngcc0.ɵɵreference(2); const ctx_r48 = ɵngcc0.ɵɵnextContext(); return ctx_r48.updateHeaderPadding(_r11); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(14, MultiColumnComboBoxComponent_ng_template_9_div_14_Template, 3, 5, \"div\", 22);\n ɵngcc0.ɵɵtemplate(15, MultiColumnComboBoxComponent_ng_template_9_ng_container_15_Template, 3, 3, \"ng-container\", 13);\n} if (rf & 2) {\n const _r14 = ɵngcc0.ɵɵreference(11);\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r5.columns);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r5.columns);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r5.listBoxId)(\"optionPrefix\", ctx_r5.optionPrefix)(\"data\", ctx_r5.data)(\"textField\", ctx_r5.textField)(\"valueField\", ctx_r5.valueField)(\"template\", ɵngcc0.ɵɵpureFunction1(17, _c18, _r14))(\"groupTemplate\", ctx_r5.groupTemplate)(\"fixedGroupTemplate\", ctx_r5.fixedGroupTemplate)(\"height\", ctx_r5.listHeight)(\"show\", ctx_r5.isOpen)(\"virtual\", ctx_r5.virtual)(\"listClass\", \"k-reset k-grid-list\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n} }\nfunction MultiColumnComboBoxComponent_kendo_resize_sensor_11_Template(rf, ctx) { if (rf & 1) {\n const _r50 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 33);\n ɵngcc0.ɵɵlistener(\"resize\", function MultiColumnComboBoxComponent_kendo_resize_sensor_11_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r50); const ctx_r49 = ɵngcc0.ɵɵnextContext(); return ctx_r49.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c41 = [\"treeview\"];\nconst _c42 = [\"filterInput\"];\nfunction DropDownTreeComponent_4_ng_template_0_Template(rf, ctx) { }\nfunction DropDownTreeComponent_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownTreeComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r1.valueTemplate.templateRef, ctx_r1.dataItem));\n} }\nfunction DropDownTreeComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r2.text || ctx_r2.placeholder, \" \");\n} }\nfunction DropDownTreeComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function DropDownTreeComponent_span_6_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.clearValue($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r3.clearButtonVisiblity);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.messageFor(\"clearTitle\"));\n} }\nconst _c47 = function (a0) { return { blur: a0 }; };\nfunction DropDownTreeComponent_ng_template_9_span_0_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 16);\n ɵngcc0.ɵɵelementStart(1, \"input\", 17, 18);\n ɵngcc0.ɵɵlistener(\"input\", function DropDownTreeComponent_ng_template_9_span_0_Template_input_input_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.handleFilterInputChange($event.target.value); })(\"keydown.arrowdown\", function DropDownTreeComponent_ng_template_9_span_0_Template_input_keydown_arrowdown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.handleKeydown($event); })(\"keydown.alt.arrowup\", function DropDownTreeComponent_ng_template_9_span_0_Template_input_keydown_alt_arrowup_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.handleKeydown($event); })(\"ngModelChange\", function DropDownTreeComponent_ng_template_9_span_0_Template_input_ngModelChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.filter = $event; });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"span\", 19);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"filterInput\", ctx_r10.filterable && !ctx_r10.touchEnabled)(\"ngModel\", ctx_r10.filter)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(4, _c47, ctx_r10.handleBlur))(\"scope\", ctx_r10);\n} }\nfunction DropDownTreeComponent_ng_template_9_1_ng_template_0_Template(rf, ctx) { }\nfunction DropDownTreeComponent_ng_template_9_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_9_1_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r11.headerTemplate == null ? null : ctx_r11.headerTemplate.templateRef));\n} }\nfunction DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template(rf, ctx) { if (rf & 1) {\n const _r24 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-treeview\", 20, 21);\n ɵngcc0.ɵɵlistener(\"selectedKeysChange\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_selectedKeysChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r23 = ɵngcc0.ɵɵnextContext(2); return ctx_r23.selectedKeys = $event; })(\"focusout\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_focusout_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r25 = ɵngcc0.ɵɵnextContext(2); return ctx_r25.handleBlur($event); })(\"keydown\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r26 = ɵngcc0.ɵɵnextContext(2); return ctx_r26.handleKeydown($event); })(\"selectionChange\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_selectionChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r27 = ɵngcc0.ɵɵnextContext(2); return ctx_r27.onSelectionChange($event); })(\"expand\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_expand_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r28 = ɵngcc0.ɵɵnextContext(2); return ctx_r28.nodeExpand.emit($event); })(\"collapse\", function DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template_kendo_treeview_collapse_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r29 = ɵngcc0.ɵɵnextContext(2); return ctx_r29.nodeCollapse.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"max-height\", ctx_r12.listHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"nodes\", ctx_r12.data)(\"animate\", false)(\"selectedKeys\", ctx_r12.selectedKeys)(\"selectBy\", ctx_r12.selectBy)(\"textField\", ctx_r12.textField)(\"children\", ctx_r12.children)(\"hasChildren\", ctx_r12.hasChildren)(\"loadOnDemand\", ctx_r12.loadOnDemand)(\"isExpanded\", ctx_r12.isNodeExpanded)(\"isDisabled\", ctx_r12.itemDisabled)(\"nodeTemplate\", ctx_r12.nodeTemplate)(\"filter\", ctx_r12.filter)(\"isVisible\", ctx_r12.isNodeVisible);\n} }\nfunction DropDownTreeComponent_ng_template_9_3_ng_template_0_Template(rf, ctx) { }\nfunction DropDownTreeComponent_ng_template_9_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_9_3_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r13.footerTemplate == null ? null : ctx_r13.footerTemplate.templateRef));\n} }\nfunction DropDownTreeComponent_ng_template_9_div_4_ng_template_1_Template(rf, ctx) { }\nfunction DropDownTreeComponent_ng_template_9_div_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r32 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r32.messageFor(\"noDataText\"));\n} }\nfunction DropDownTreeComponent_ng_template_9_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 22);\n ɵngcc0.ɵɵtemplate(1, DropDownTreeComponent_ng_template_9_div_4_ng_template_1_Template, 0, 0, \"ng-template\", 23);\n ɵngcc0.ɵɵtemplate(2, DropDownTreeComponent_ng_template_9_div_4_ng_template_2_Template, 2, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r14.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r14.noDataTemplate == null ? null : ctx_r14.noDataTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r14.noDataTemplate);\n} }\nfunction DropDownTreeComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_9_span_0_Template, 4, 6, \"span\", 13);\n ɵngcc0.ɵɵtemplate(1, DropDownTreeComponent_ng_template_9_1_Template, 1, 3, null, 4);\n ɵngcc0.ɵɵtemplate(2, DropDownTreeComponent_ng_template_9_kendo_treeview_2_Template, 2, 15, \"kendo-treeview\", 14);\n ɵngcc0.ɵɵtemplate(3, DropDownTreeComponent_ng_template_9_3_Template, 1, 3, null, 4);\n ɵngcc0.ɵɵtemplate(4, DropDownTreeComponent_ng_template_9_div_4_Template, 3, 5, \"div\", 15);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.filterable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length !== 0 && !ctx_r5.allNodesHidden);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.data.length === 0 || ctx_r5.allNodesHidden);\n} }\nconst _c48 = [\"checkAllInput\"];\nfunction MultiSelectTreeComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.placeholder, \" \");\n} }\nfunction MultiSelectTreeComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function MultiSelectTreeComponent_span_5_Template_span_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.clearAll($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"title\", ctx_r2.messageFor(\"clearTitle\"));\n} }\nfunction MultiSelectTreeComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 11);\n} }\nfunction MultiSelectTreeComponent_ng_template_7_span_0_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 18);\n ɵngcc0.ɵɵelementStart(1, \"input\", 19, 20);\n ɵngcc0.ɵɵlistener(\"input\", function MultiSelectTreeComponent_ng_template_7_span_0_Template_input_input_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.handleFilterInputChange($event.target.value); })(\"keydown\", function MultiSelectTreeComponent_ng_template_7_span_0_Template_input_keydown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.handleKeydown($event); })(\"ngModelChange\", function MultiSelectTreeComponent_ng_template_7_span_0_Template_input_ngModelChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.filter = $event; });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"span\", 21);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"filterInput\", ctx_r9.filterable && !ctx_r9.touchEnabled)(\"ngModel\", ctx_r9.filter)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(4, _c47, ctx_r9.handleBlur))(\"scope\", ctx_r9);\n} }\nfunction MultiSelectTreeComponent_ng_template_7_1_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectTreeComponent_ng_template_7_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_7_1_ng_template_0_Template, 0, 0, \"ng-template\", 22);\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r10.headerTemplate == null ? null : ctx_r10.headerTemplate.templateRef));\n} }\nfunction MultiSelectTreeComponent_ng_template_7_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23);\n ɵngcc0.ɵɵelementStart(1, \"input\", 24, 25);\n ɵngcc0.ɵɵlistener(\"checkedItemsChange\", function MultiSelectTreeComponent_ng_template_7_div_2_Template_input_checkedItemsChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r22 = ɵngcc0.ɵɵnextContext(2); return ctx_r22.handleCheckedItemsChange($event); })(\"keydown\", function MultiSelectTreeComponent_ng_template_7_div_2_Template_input_keydown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r24 = ɵngcc0.ɵɵnextContext(2); return ctx_r24.handleKeydown($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 26);\n ɵngcc0.ɵɵlistener(\"click\", function MultiSelectTreeComponent_ng_template_7_div_2_Template_span_click_3_listener() { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r25 = ɵngcc0.ɵɵnextContext(2); return ctx_r25.toggleCheckAll(); })(\"mousedown\", function MultiSelectTreeComponent_ng_template_7_div_2_Template_span_mousedown_3_listener($event) { return $event.preventDefault(); });\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n ɵngcc0.ɵɵnextContext();\n const _r12 = ɵngcc0.ɵɵreference(4);\n const ctx_r11 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"checkAll\", !ctx_r11.filterable && !ctx_r11.touchEnabled)(\"treeview\", _r12)(\"checkedItems\", ctx_r11.checkedItems)(\"valueField\", ctx_r11.valueField)(\"lastAction\", ctx_r11.lastAction)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(8, _c47, ctx_r11.handleBlur))(\"scope\", ctx_r11);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r11.messageFor(\"checkAllText\"), \" \");\n} }\nfunction MultiSelectTreeComponent_ng_template_7_5_ng_template_0_Template(rf, ctx) { }\nfunction MultiSelectTreeComponent_ng_template_7_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_7_5_ng_template_0_Template, 0, 0, \"ng-template\", 22);\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction1(1, _c18, ctx_r13.footerTemplate == null ? null : ctx_r13.footerTemplate.templateRef));\n} }\nfunction MultiSelectTreeComponent_ng_template_7_div_6_ng_template_1_Template(rf, ctx) { }\nfunction MultiSelectTreeComponent_ng_template_7_div_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r29 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r29.messageFor(\"noDataText\"));\n} }\nfunction MultiSelectTreeComponent_ng_template_7_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 27);\n ɵngcc0.ɵɵtemplate(1, MultiSelectTreeComponent_ng_template_7_div_6_ng_template_1_Template, 0, 0, \"ng-template\", 28);\n ɵngcc0.ɵɵtemplate(2, MultiSelectTreeComponent_ng_template_7_div_6_ng_template_2_Template, 2, 1, \"ng-template\", 29);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r14.noDataTemplate)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(3, _c18, ctx_r14.noDataTemplate == null ? null : ctx_r14.noDataTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r14.noDataTemplate);\n} }\nconst _c55 = function (a0) { return { focusout: a0 }; };\nfunction MultiSelectTreeComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n const _r31 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_7_span_0_Template, 4, 6, \"span\", 12);\n ɵngcc0.ɵɵtemplate(1, MultiSelectTreeComponent_ng_template_7_1_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵtemplate(2, MultiSelectTreeComponent_ng_template_7_div_2_Template, 5, 10, \"div\", 14);\n ɵngcc0.ɵɵelementStart(3, \"kendo-treeview\", 15, 16);\n ɵngcc0.ɵɵlistener(\"keydown\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_keydown_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r30 = ɵngcc0.ɵɵnextContext(); return ctx_r30.handleKeydown($event); })(\"nodeClick\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_nodeClick_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r32 = ɵngcc0.ɵɵnextContext(); return ctx_r32.handleNodeClick($event); })(\"expand\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_expand_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r33 = ɵngcc0.ɵɵnextContext(); return ctx_r33.nodeExpand.emit($event); })(\"collapse\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_collapse_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r34 = ɵngcc0.ɵɵnextContext(); return ctx_r34.nodeCollapse.emit($event); })(\"checkedItemsChange\", function MultiSelectTreeComponent_ng_template_7_Template_kendo_treeview_checkedItemsChange_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r35 = ɵngcc0.ɵɵnextContext(); return ctx_r35.handleCheckedItemsChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, MultiSelectTreeComponent_ng_template_7_5_Template, 1, 3, null, 13);\n ɵngcc0.ɵɵtemplate(6, MultiSelectTreeComponent_ng_template_7_div_6_Template, 3, 5, \"div\", 17);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.filterable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.checkAll);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"max-height\", ctx_r5.listHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"nodes\", ctx_r5.data)(\"animate\", false)(\"checkable\", ctx_r5.checkableSettings)(\"checkedItems\", ctx_r5.checkedItems)(\"valueField\", ctx_r5.valueField)(\"textField\", ctx_r5.textField)(\"children\", ctx_r5.children)(\"hasChildren\", ctx_r5.hasChildren)(\"isExpanded\", ctx_r5.isNodeExpanded)(\"isDisabled\", ctx_r5.itemDisabled)(\"nodeTemplate\", ctx_r5.nodeTemplate)(\"loadOnDemand\", ctx_r5.loadOnDemand)(\"filter\", ctx_r5.filter)(\"isVisible\", ctx_r5.isNodeVisible)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(23, _c55, ctx_r5.handleBlur))(\"scope\", ctx_r5);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.footerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (ctx_r5.data == null ? null : ctx_r5.data.length) === 0 || ctx_r5.allNodesHidden);\n} }\nconst _c56 = function (a2) { return { \"k-multiselect-wrap\": true, \"k-floatwrap\": true, \"k-state-disabled\": a2 }; };\nfunction TagListComponent_li_1_1_ng_template_0_Template(rf, ctx) { }\nfunction TagListComponent_li_1_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TagListComponent_li_1_1_ng_template_0_Template, 0, 0, \"ng-template\");\n} }\nfunction TagListComponent_li_1_ng_template_2_1_ng_template_0_Template(rf, ctx) { }\nfunction TagListComponent_li_1_ng_template_2_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TagListComponent_li_1_ng_template_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const tag_r1 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r9 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r9.groupTemplate.templateRef, tag_r1));\n} }\nfunction TagListComponent_li_1_ng_template_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const tag_r1 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵtextInterpolate2(\"\", tag_r1.length, \" \", tag_r1.length === 1 ? \"item\" : \"items\", \" selected\");\n} }\nfunction TagListComponent_li_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtemplate(1, TagListComponent_li_1_ng_template_2_1_Template, 1, 4, null, 8);\n ɵngcc0.ɵɵtemplate(2, TagListComponent_li_1_ng_template_2_ng_template_2_Template, 1, 2, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.groupTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r5.groupTemplate);\n} }\nfunction TagListComponent_li_1_ng_template_4_1_ng_template_0_Template(rf, ctx) { }\nfunction TagListComponent_li_1_ng_template_4_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TagListComponent_li_1_ng_template_4_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const tag_r1 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction2(1, _c5, ctx_r14.template.templateRef, tag_r1));\n} }\nfunction TagListComponent_li_1_ng_template_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext(2);\n const tag_r1 = ctx_r18.$implicit;\n const index_r2 = ctx_r18.index;\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate(ctx_r15.tagProp(tag_r1, ctx_r15.textField, index_r2));\n} }\nfunction TagListComponent_li_1_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtemplate(1, TagListComponent_li_1_ng_template_4_1_Template, 1, 4, null, 8);\n ɵngcc0.ɵɵtemplate(2, TagListComponent_li_1_ng_template_4_ng_template_2_Template, 1, 1, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r7.template);\n} }\nconst _c57 = function (a0, a1) { return { \"k-state-focused\": a0, \"k-state-disabled\": a1 }; };\nfunction TagListComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 2);\n ɵngcc0.ɵɵtemplate(1, TagListComponent_li_1_1_Template, 1, 0, null, 3);\n ɵngcc0.ɵɵtemplate(2, TagListComponent_li_1_ng_template_2_Template, 3, 2, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(4, TagListComponent_li_1_ng_template_4_Template, 3, 2, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(6, \"span\", 6);\n ɵngcc0.ɵɵelementStart(7, \"span\", 7);\n ɵngcc0.ɵɵlistener(\"mousedown\", function TagListComponent_li_1_Template_span_mousedown_7_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r20); const tag_r1 = restoredCtx.$implicit; const index_r2 = restoredCtx.index; const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ctx_r19.deleteTag($event, tag_r1, index_r2); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tag_r1 = ctx.$implicit;\n const index_r2 = ctx.index;\n const _r4 = ɵngcc0.ɵɵreference(3);\n const _r6 = ɵngcc0.ɵɵreference(5);\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(8, _c57, index_r2 === ctx_r0.focused, ctx_r0.isTagDisabled(tag_r1, index_r2)));\n ɵngcc0.ɵɵattribute(\"id\", ctx_r0.itemId(tag_r1, index_r2))(\"aria-hidden\", ctx_r0.tagAriaHidden(index_r2))(\"aria-setsize\", ctx_r0.tags == null ? null : ctx_r0.tags.length);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.isGroupTag(tag_r1))(\"ngIfThen\", _r4)(\"ngIfElse\", _r6);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", index_r2 !== ctx_r0.focused);\n} }\nexport { PopupComponent } from '@progress/kendo-angular-popup';\nimport { map, switchMap, take, auditTime, tap, filter, partition, throttleTime, catchError, skipWhile, concatMap, takeUntil } from 'rxjs/operators';\nimport { TreeViewComponent, DataBoundComponent, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, ExpandDirective, TreeViewModule } from '@progress/kendo-angular-treeview';\nimport { CommonModule } from '@angular/common';\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: 1639043976,\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/* tslint: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$1 = () => {\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 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$1(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$1(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$1(item, valueField)) ? getter$1(item, valueField) : item;\n });\n return values.reduce((arr, item) => {\n const value = isPresent(item) && isPresent(getter$1(item, valueField)) ? getter$1(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$1 = (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(field);\n return valueFrom(dataItem);\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 *\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(field)(dataItem);\n};\n\n/* tslint:disable:member-ordering */\n/**\n * @hidden\n */\nlet SearchBarComponent = class 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 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 = function SearchBarComponent_Factory(t) { return new (t || SearchBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nSearchBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SearchBarComponent, selectors: [[\"kendo-searchbar\"]], viewQuery: function SearchBarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, hostVars: 2, hostBindings: function SearchBarComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-searchbar\", ctx.searchBarClass);\n } }, inputs: { userInput: \"userInput\", placeholder: \"placeholder\", id: \"id\", listId: \"listId\", tagListId: \"tagListId\", activeDescendant: \"activeDescendant\", noDataLabel: \"noDataLabel\", disabled: \"disabled\", readonly: \"readonly\", tabIndex: \"tabIndex\", popupOpen: \"popupOpen\", role: \"role\", suggestedText: \"suggestedText\" }, outputs: { valueChange: \"valueChange\", onBlur: \"onBlur\", onFocus: \"onFocus\", onClick: \"onClick\", onNavigate: \"onNavigate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 21, consts: [[\"autocomplete\", \"off\", \"aria-haspopup\", \"listbox\", 3, \"id\", \"disabled\", \"readonly\", \"placeholder\", \"kendoEventsOutsideAngular\", \"scope\", \"input\", \"keydown\"], [\"input\", \"\"]], template: function SearchBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"input\", 0, 1);\n ɵngcc0.ɵɵlistener(\"input\", function SearchBarComponent_Template_input_input_0_listener($event) { return ctx.handleInput($event); })(\"keydown\", function SearchBarComponent_Template_input_keydown_0_listener($event) { return ctx.handleKeydown($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"k-input\");\n ɵngcc0.ɵɵproperty(\"id\", ctx.id)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"placeholder\", ctx.placeholder)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(18, _c1, ctx.handleFocus, ctx.handleBlur))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"tabIndex\", ctx.tabIndex)(\"dir\", ctx.direction)(\"role\", ctx.role)(\"aria-disabled\", ctx.disabled)(\"aria-readonly\", ctx.readonly)(\"aria-expanded\", ctx.popupOpen)(\"aria-owns\", ctx.listId)(\"aria-describedby\", ctx.tagListId)(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-label\", ctx.noDataLabel);\n } }, directives: [ɵngcc2.EventsOutsideAngularDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"listId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"tagListId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"activeDescendant\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"noDataLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SearchBarComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SearchBarComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SearchBarComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SearchBarComponent.prototype, \"popupOpen\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"role\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], SearchBarComponent.prototype, \"userInput\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SearchBarComponent.prototype, \"suggestedText\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"onClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SearchBarComponent.prototype, \"onNavigate\", void 0);\n__decorate([\n ViewChild('input', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SearchBarComponent.prototype, \"input\", void 0);\n__decorate([\n HostBinding('class.k-searchbar'),\n __metadata(\"design:type\", Boolean)\n], SearchBarComponent.prototype, \"searchBarClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], SearchBarComponent.prototype, \"placeholder\", null);\nSearchBarComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n Renderer2])\n], SearchBarComponent);\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 */\nlet ItemTemplateDirective = class ItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nItemTemplateDirective.ɵfac = function ItemTemplateDirective_Factory(t) { return new (t || ItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ItemTemplateDirective, selectors: [[\"\", \"kendoDropDownListItemTemplate\", \"\"], [\"\", \"kendoComboBoxItemTemplate\", \"\"], [\"\", \"kendoAutoCompleteItemTemplate\", \"\"], [\"\", \"kendoMultiSelectItemTemplate\", \"\"]] });\nItemTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ItemTemplateDirective);\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 */\nlet HeaderTemplateDirective = class HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nHeaderTemplateDirective.ɵfac = function HeaderTemplateDirective_Factory(t) { return new (t || HeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: HeaderTemplateDirective, selectors: [[\"\", \"kendoDropDownListHeaderTemplate\", \"\"], [\"\", \"kendoComboBoxHeaderTemplate\", \"\"], [\"\", \"kendoDropDownTreeHeaderTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxHeaderTemplate\", \"\"], [\"\", \"kendoAutoCompleteHeaderTemplate\", \"\"], [\"\", \"kendoMultiSelectHeaderTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeHeaderTemplate\", \"\"]] });\nHeaderTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], HeaderTemplateDirective);\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 */\nlet FooterTemplateDirective = class FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFooterTemplateDirective.ɵfac = function FooterTemplateDirective_Factory(t) { return new (t || FooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FooterTemplateDirective, selectors: [[\"\", \"kendoDropDownListFooterTemplate\", \"\"], [\"\", \"kendoComboBoxFooterTemplate\", \"\"], [\"\", \"kendoDropDownTreeFooterTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxFooterTemplate\", \"\"], [\"\", \"kendoAutoCompleteFooterTemplate\", \"\"], [\"\", \"kendoMultiSelectFooterTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeFooterTemplate\", \"\"]] });\nFooterTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], FooterTemplateDirective);\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 */\nlet GroupTemplateDirective = class GroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupTemplateDirective.ɵfac = function GroupTemplateDirective_Factory(t) { return new (t || GroupTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nGroupTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupTemplateDirective, selectors: [[\"\", \"kendoDropDownListGroupTemplate\", \"\"], [\"\", \"kendoComboBoxGroupTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxGroupTemplate\", \"\"], [\"\", \"kendoAutoCompleteGroupTemplate\", \"\"], [\"\", \"kendoMultiSelectGroupTemplate\", \"\"]] });\nGroupTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupTemplateDirective);\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 */\nlet FixedGroupTemplateDirective = class FixedGroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFixedGroupTemplateDirective.ɵfac = function FixedGroupTemplateDirective_Factory(t) { return new (t || FixedGroupTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nFixedGroupTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FixedGroupTemplateDirective, selectors: [[\"\", \"kendoDropDownListFixedGroupTemplate\", \"\"], [\"\", \"kendoComboBoxFixedGroupTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxFixedGroupTemplate\", \"\"], [\"\", \"kendoAutoCompleteFixedGroupTemplate\", \"\"], [\"\", \"kendoMultiSelectFixedGroupTemplate\", \"\"]] });\nFixedGroupTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], FixedGroupTemplateDirective);\n\n/**\n * @hidden\n */\nlet SelectionService = class SelectionService {\n /**\n * @hidden\n */\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 = function SelectionService_Factory(t) { return new (t || SelectionService)(); };\nSelectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SelectionService, factory: function (t) { return SelectionService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nvar NavigationAction;\n(function (NavigationAction) {\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 */\nlet DataService = class DataService {\n /**\n * @hidden\n */\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$1(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 = function DataService_Factory(t) { return new (t || DataService)(); };\nDataService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DataService, factory: function (t) { return DataService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet DisabledItemsService = class 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 = function DisabledItemsService_Factory(t) { return new (t || DisabledItemsService)(ɵngcc0.ɵɵinject(DataService)); };\nDisabledItemsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DisabledItemsService, factory: function (t) { return DisabledItemsService.ɵfac(t); } });\nDisabledItemsService = __decorate([ __metadata(\"design:paramtypes\", [DataService])\n], DisabledItemsService);\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 */\nlet NavigationService = class 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 = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(DisabledItemsService), ɵngcc0.ɵɵinject(SelectionService)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [DisabledItemsService,\n SelectionService])\n], NavigationService);\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 */\nlet NoDataTemplateDirective = class NoDataTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNoDataTemplateDirective.ɵfac = function NoDataTemplateDirective_Factory(t) { return new (t || NoDataTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNoDataTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NoDataTemplateDirective, selectors: [[\"\", \"kendoDropDownListNoDataTemplate\", \"\"], [\"\", \"kendoDropDownTreeNoDataTemplate\", \"\"], [\"\", \"kendoComboBoxNoDataTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxNoDataTemplate\", \"\"], [\"\", \"kendoAutoCompleteNoDataTemplate\", \"\"], [\"\", \"kendoMultiSelectNoDataTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeNoDataTemplate\", \"\"]] });\nNoDataTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], NoDataTemplateDirective);\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 */\nlet ListItemDirective = class ListItemDirective {\n constructor(element) {\n this.element = element;\n }\n};\nListItemDirective.ɵfac = function ListItemDirective_Factory(t) { return new (t || ListItemDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nListItemDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ListItemDirective, selectors: [[\"li\", \"role\", \"option\"], [\"li\", \"role\", \"group\"]] });\nListItemDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef])\n], ListItemDirective);\n\n/**\n * @hidden\n */\nlet ListComponent = class 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.listClass = 'k-list k-reset';\n this.checkboxes = { enabled: false };\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.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 }\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 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 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 }\n ngAfterViewInit() {\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 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-state-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$1(dataItem, this.textField);\n }\n getValue(dataItem) {\n return getter$1(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 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};\nListComponent.ɵfac = function ListComponent_Factory(t) { return new (t || ListComponent)(ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ListComponent, selectors: [[\"kendo-list\"]], viewQuery: function ListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c2, 7);\n ɵngcc0.ɵɵviewQuery(_c3, 7);\n ɵngcc0.ɵɵviewQuery(_c4, 5);\n ɵngcc0.ɵɵviewQuery(ListItemDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.content = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.list = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.virtualContainer = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n } }, inputs: { selected: \"selected\", focused: \"focused\", show: \"show\", multipleSelection: \"multipleSelection\", listClass: \"listClass\", checkboxes: \"checkboxes\", data: \"data\", textField: \"textField\", valueField: \"valueField\", height: \"height\", template: \"template\", groupTemplate: \"groupTemplate\", fixedGroupTemplate: \"fixedGroupTemplate\", id: \"id\", optionPrefix: \"optionPrefix\", virtual: \"virtual\" }, outputs: { onClick: \"onClick\", pageChange: \"pageChange\", listResize: \"listResize\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 9, vars: 20, consts: [[\"class\", \"k-outer-group-header k-first\", 3, \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"unselectable\", \"on\", 3, \"ngClass\"], [\"content\", \"\"], [\"role\", \"listbox\", 3, \"ngClass\"], [\"list\", \"\"], [4, \"ngIf\"], [3, \"resize\", 4, \"ngIf\"], [\"class\", \"k-height-container\", \"role\", \"presentation\", 4, \"ngIf\"], [1, \"k-outer-group-header\", \"k-first\", 3, \"ngClass\", \"ngStyle\"], [3, \"ngIf\"], [3, \"templateContext\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", 1, \"k-item\", 3, \"checkboxes\", \"height\", \"index\", \"multipleSelection\", \"ngClass\"], [\"class\", \"k-checkbox-label\", 4, \"ngIf\"], [1, \"k-checkbox-label\"], [\"type\", \"checkbox\", 1, \"k-checkbox\", 3, \"checked\", \"change\"], [\"role\", \"group\", \"class\", \"k-outer-group-header\", 3, \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", \"class\", \"k-item\", 3, \"height\", \"index\", \"multipleSelection\", \"ngClass\", 4, \"ngIf\"], [\"role\", \"group\", 1, \"k-outer-group-header\", 3, \"ngClass\", \"ngStyle\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", 1, \"k-item\", 3, \"height\", \"index\", \"multipleSelection\", \"ngClass\"], [3, \"resize\"], [\"role\", \"presentation\", 1, \"k-height-container\"], [\"virtualContainer\", \"\"]], template: function ListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_div_0_Template, 3, 10, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵelementStart(3, \"ul\", 3, 4);\n ɵngcc0.ɵɵtemplate(5, ListComponent_5_Template, 1, 1, null, 5);\n ɵngcc0.ɵɵtemplate(6, ListComponent_6_Template, 1, 1, null, 5);\n ɵngcc0.ɵɵtemplate(7, ListComponent_kendo_resize_sensor_7_Template, 1, 0, \"kendo-resize-sensor\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, ListComponent_div_8_Template, 4, 2, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dataService.grouped);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"overscroll-behavior\", \"none\")(\"max-height\", ctx.height, \"px\");\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(15, _c9, ctx.virtual, !ctx.virtual));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassMap(ctx.listClass);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(18, _c10, ctx.virtual));\n ɵngcc0.ɵɵattribute(\"id\", ctx.id)(\"aria-hidden\", !ctx.show);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.dataService.grouped && ctx.show);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dataService.grouped);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.virtual);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.virtual);\n } }, directives: function () { return [ɵngcc3.NgIf, ɵngcc3.NgClass, ɵngcc3.NgStyle, TemplateContextDirective, ɵngcc3.NgForOf, ListItemDirective, SelectableDirective, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ListComponent.prototype, \"selected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"focused\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ItemTemplateDirective)\n], ListComponent.prototype, \"template\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", GroupTemplateDirective)\n], ListComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], ListComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"show\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"optionPrefix\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"multipleSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"virtual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"listClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"checkboxes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], ListComponent.prototype, \"data\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"onClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"pageChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"listResize\", void 0);\n__decorate([\n ViewChildren(ListItemDirective),\n __metadata(\"design:type\", QueryList)\n], ListComponent.prototype, \"items\", void 0);\n__decorate([\n ViewChild('content', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"content\", void 0);\n__decorate([\n ViewChild('list', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"list\", void 0);\n__decorate([\n ViewChild('virtualContainer', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"virtualContainer\", void 0);\nListComponent = __decorate([ __metadata(\"design:paramtypes\", [DataService,\n ElementRef,\n SelectionService,\n DisabledItemsService,\n ChangeDetectorRef,\n NgZone,\n Renderer2])\n], ListComponent);\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/* tslint:disable:member-ordering */\nvar AutoCompleteComponent_1;\nconst NO_VALUE = \"\";\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 */\nlet AutoCompleteComponent = AutoCompleteComponent_1 = class AutoCompleteComponent {\n constructor(localization, dataService, popupService, selectionService, navigationService, disabledItemsService, _zone, cdr, renderer, hostElement, touchEnabled$$1) {\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$$1;\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$1()}`;\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$1();\n this.optionPrefix = guid$1();\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 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$1(dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.noDataText;\n }\n }\n get clearTitle() {\n return this.localization.get('clearTitle');\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$1(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 get isFocused() {\n return this._isFocused;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper, \"k-state-focused\");\n this._isFocused = isFocused;\n }\n get isDisabled() {\n return this.disabled;\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.setMessages();\n });\n this.setMessages();\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n clearTimeout(this.messagesTimeout);\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 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$1(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$1(this.dataService.itemAt(focused), this.valueField);\n }\n else {\n const match = this.suggest && this.suggestedText && this.data.length &&\n getter$1(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$1(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$1(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$1(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$1(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$1(item, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n setMessages() {\n this._zone.runOutsideAngular(() => {\n clearTimeout(this.messagesTimeout);\n this.messagesTimeout = setTimeout(() => {\n this.noDataText = this.localization.get('noDataText');\n this.cdr.detectChanges();\n });\n });\n }\n};\nAutoCompleteComponent.ɵfac = function AutoCompleteComponent_Factory(t) { return new (t || AutoCompleteComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nAutoCompleteComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AutoCompleteComponent, selectors: [[\"kendo-autocomplete\"]], contentQueries: function AutoCompleteComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _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.noDataTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n } }, viewQuery: function AutoCompleteComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(SearchBarComponent, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n } }, hostVars: 7, hostBindings: function AutoCompleteComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-autocomplete\", ctx.widgetClasses)(\"k-state-disabled\", ctx.isDisabled);\n } }, inputs: { highlightFirst: \"highlightFirst\", focusableId: \"focusableId\", placeholder: \"placeholder\", listHeight: \"listHeight\", clearButton: \"clearButton\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", filterable: \"filterable\", data: \"data\", value: \"value\", popupSettings: \"popupSettings\", itemDisabled: \"itemDisabled\", tabIndex: \"tabIndex\", virtual: \"virtual\", valueField: \"valueField\", loading: \"loading\", suggest: \"suggest\" }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoAutoComplete\"], features: [ɵngcc0.ɵɵProvidersFeature([\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_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 10, vars: 15, consts: function () { let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.autocomplete.noDataText\n */\n const MSG_EXTERNAL_2690656529626907484$$DIST_FESM2015_INDEX_JS_15 = goog.getMsg(\"NO DATA FOUND\");\n i18n_14 = MSG_EXTERNAL_2690656529626907484$$DIST_FESM2015_INDEX_JS_15;\n }\n else {\n i18n_14 = $localize `:kendo.autocomplete.noDataText|The text displayed in the popup when there are no items␟4e9993e088a293543eb0c2801343518c115b6f20␟2690656529626907484:NO DATA FOUND`;\n } let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.autocomplete.clearTitle\n */\n const MSG_EXTERNAL_4821453594854847070$$DIST_FESM2015_INDEX_JS_17 = goog.getMsg(\"clear\");\n i18n_16 = MSG_EXTERNAL_4821453594854847070$$DIST_FESM2015_INDEX_JS_17;\n }\n else {\n i18n_16 = $localize `:kendo.autocomplete.clearTitle|The title of the clear button␟7cf49cc2d50eebd29f8d61564512383caaaac7a6␟4821453594854847070:clear`;\n } return [[\"kendoAutoCompleteLocalizedMessages\", \"\", \"noDataText\", i18n_14, \"clearTitle\", i18n_16], [3, \"role\", \"id\", \"listId\", \"activeDescendant\", \"noDataLabel\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"placeholder\", \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\"], [\"searchbar\", \"\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"visibility\", \"click\", \"mousedown\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading\", 4, \"ngIf\"], [\"popupTemplate\", \"\"], [3, \"ngIf\"], [\"container\", \"\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"click\", \"mousedown\"], [1, \"k-icon\", \"k-i-loading\"], [4, \"ngIf\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"pageChange\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]]; }, template: function AutoCompleteComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-searchbar\", 1, 2);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function AutoCompleteComponent_Template_kendo_searchbar_onNavigate_1_listener($event) { return ctx.handleNavigate($event); })(\"valueChange\", function AutoCompleteComponent_Template_kendo_searchbar_valueChange_1_listener($event) { return ctx.searchBarChange($event); })(\"onBlur\", function AutoCompleteComponent_Template_kendo_searchbar_onBlur_1_listener() { return ctx.handleBlur(); })(\"onFocus\", function AutoCompleteComponent_Template_kendo_searchbar_onFocus_1_listener() { return ctx.handleFocus(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, AutoCompleteComponent_span_3_Template, 1, 3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, AutoCompleteComponent_span_4_Template, 1, 0, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, AutoCompleteComponent_ng_template_5_Template, 5, 14, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(7, AutoCompleteComponent_ng_template_7_Template, 1, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementContainer(8, null, 7);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"role\", \"combobox\")(\"id\", ctx.focusableId)(\"listId\", ctx.listBoxId)(\"activeDescendant\", ctx.activeDescendant)(\"noDataLabel\", ctx.noDataLabel)(\"userInput\", ctx.text)(\"suggestedText\", ctx.suggestion)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"popupOpen\", ctx.isOpen)(\"placeholder\", ctx.placeholder);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && (ctx.clearButton && (ctx.text == null ? null : ctx.text.length)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, SearchBarComponent, ɵngcc3.NgIf, TemplateContextDirective, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"highlightFirst\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AutoCompleteComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], AutoCompleteComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], AutoCompleteComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AutoCompleteComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AutoCompleteComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], AutoCompleteComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AutoCompleteComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"suggest\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], AutoCompleteComponent.prototype, \"itemDisabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], AutoCompleteComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(\"tabIndex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], AutoCompleteComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], AutoCompleteComponent.prototype, \"virtual\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"closed\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], AutoCompleteComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ContentChild(ItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ItemTemplateDirective)\n], AutoCompleteComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], AutoCompleteComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], AutoCompleteComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], AutoCompleteComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ContentChild(GroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTemplateDirective)\n], AutoCompleteComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n ContentChild(FixedGroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], AutoCompleteComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], AutoCompleteComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], AutoCompleteComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild(SearchBarComponent, { static: true }),\n __metadata(\"design:type\", SearchBarComponent)\n], AutoCompleteComponent.prototype, \"searchbar\", void 0);\n__decorate([\n ViewChild('optionsList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], AutoCompleteComponent.prototype, \"optionsList\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-autocomplete'),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteComponent.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], AutoCompleteComponent.prototype, \"isDisabled\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], AutoCompleteComponent.prototype, \"dir\", null);\nAutoCompleteComponent = AutoCompleteComponent_1 = __decorate([ __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n DataService,\n PopupService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n ElementRef, Boolean])\n], AutoCompleteComponent);\n\n/* tslint:disable:variable-name */\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/* tslint:disable:member-ordering */\nvar ComboBoxComponent_1;\n/**\n * @hidden\n */\nconst COMBOBOX_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboBoxComponent)\n};\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 */\nlet ComboBoxComponent = ComboBoxComponent_1 = class ComboBoxComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, hostElement, touchEnabled$$1) {\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.hostElement = hostElement;\n this.touchEnabled = touchEnabled$$1;\n this.selected = [];\n /**\n * @hidden\n */\n this.focusableId = `k-${guid$1()}`;\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$1();\n this.optionPrefix = guid$1();\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 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$1(dataItem, this.valueField) : \"\");\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.noDataText;\n }\n }\n get clearTitle() {\n return this.localization.get('clearTitle');\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$1(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 get clearable() {\n return this.clearButton;\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-state-focused\");\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.hostElement.nativeElement, 'tabindex');\n this.attachStreams();\n this.createValueStream();\n this.subscribeTouchEvents();\n this.attachSelectClickHandler();\n this.setMessages();\n }\n createValueStream() {\n const valueStream = this.valueSubject.pipe(filter((candidate) => {\n const current = getter$1(this.value, this.valueField);\n const newValue = getter$1(candidate, this.valueField);\n let newText = getter$1(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$1(candidate, this.valueField);\n const newText = getter$1(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$1(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$1(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$1(this.dataItem, this.valueField) !== getter$1(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.setMessages();\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$1(dataItem, this.valueField) !== getter$1(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 clearTimeout(this.messagesTimeout);\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 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' : this.iconClass || 'k-i-arrow-s';\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$1(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$1(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$1(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$1(dataItem, valueField) === getter$1(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$1(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$1(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$1(this._previousDataItem, this.textField) || \"\";\n const focusedItemText = getter$1(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$1(this.dataItem, this.valueField) !== getter$1(this.value, this.valueField);\n const currentText = this.searchbar.value;\n const textHasChanged = currentText !== (getter$1(this.dataItem, this.textField) || '');\n const valueHasChanged = unresolvedSelection || textHasChanged;\n const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.hostElement.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$1(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$1(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 setMessages() {\n this.zone.runOutsideAngular(() => {\n clearTimeout(this.messagesTimeout);\n this.messagesTimeout = setTimeout(() => {\n this.noDataText = this.localization.get('noDataText');\n this.cdr.detectChanges();\n });\n });\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.hostElement, 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};\nComboBoxComponent.ɵfac = function ComboBoxComponent_Factory(t) { return new (t || ComboBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nComboBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ComboBoxComponent, selectors: [[\"kendo-combobox\"]], contentQueries: function ComboBoxComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _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.noDataTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n } }, viewQuery: function ComboBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(SearchBarComponent, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c20, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.select = _t.first);\n } }, hostVars: 7, hostBindings: function ComboBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-combobox\", ctx.widgetClasses)(\"k-combobox-clearable\", ctx.clearable);\n } }, inputs: { focusableId: \"focusableId\", allowCustom: \"allowCustom\", valueNormalizer: \"valueNormalizer\", placeholder: \"placeholder\", listHeight: \"listHeight\", suggest: \"suggest\", clearButton: \"clearButton\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", filterable: \"filterable\", data: \"data\", value: \"value\", valuePrimitive: \"valuePrimitive\", popupSettings: \"popupSettings\", itemDisabled: \"itemDisabled\", tabIndex: \"tabIndex\", virtual: \"virtual\", loading: \"loading\", textField: \"textField\", valueField: \"valueField\", iconClass: \"iconClass\" }, outputs: { valueChange: \"valueChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoComboBox\"], features: [ɵngcc0.ɵɵProvidersFeature([\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_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 21, consts: function () { let i18n_21; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.combobox.noDataText\n */\n const MSG_EXTERNAL_7708502966028483300$$DIST_FESM2015_INDEX_JS_22 = goog.getMsg(\"NO DATA FOUND\");\n i18n_21 = MSG_EXTERNAL_7708502966028483300$$DIST_FESM2015_INDEX_JS_22;\n }\n else {\n i18n_21 = $localize `:kendo.combobox.noDataText|The text displayed in the popup when there are no items␟2b6e00c74a6d9c98c03a6274d0224e9bd457ff89␟7708502966028483300:NO DATA FOUND`;\n } let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.combobox.clearTitle\n */\n const MSG_EXTERNAL_2025597431468961462$$DIST_FESM2015_INDEX_JS_24 = goog.getMsg(\"clear\");\n i18n_23 = MSG_EXTERNAL_2025597431468961462$$DIST_FESM2015_INDEX_JS_24;\n }\n else {\n i18n_23 = $localize `:kendo.combobox.clearTitle|The title of the clear button␟069e8fae80677e3e785861123bef446b3ff41ab4␟2025597431468961462:clear`;\n } return [[\"kendoComboBoxLocalizedMessages\", \"\", \"noDataText\", i18n_21, \"clearTitle\", i18n_23], [\"unselectable\", \"on\", 1, \"k-dropdown-wrap\", 3, \"ngClass\"], [\"wrapper\", \"\"], [3, \"role\", \"id\", \"listId\", \"activeDescendant\", \"noDataLabel\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"placeholder\", \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\"], [\"searchbar\", \"\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"aria-hidden\", \"true\", 3, \"visibility\", \"kendoEventsOutsideAngular\", \"click\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", \"unselectable\", \"on\", 1, \"k-select\", 3, \"kendoEventsOutsideAngular\"], [\"select\", \"\"], [1, \"k-icon\", 3, \"ngClass\"], [\"popupTemplate\", \"\"], [3, \"ngIf\"], [\"container\", \"\"], [\"aria-hidden\", \"true\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"kendoEventsOutsideAngular\", \"click\"], [4, \"ngIf\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"pageChange\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]]; }, template: function ComboBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-searchbar\", 3, 4);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function ComboBoxComponent_Template_kendo_searchbar_onNavigate_3_listener($event) { return ctx.handleNavigate($event); })(\"valueChange\", function ComboBoxComponent_Template_kendo_searchbar_valueChange_3_listener($event) { return ctx.searchBarChange($event); })(\"onBlur\", function ComboBoxComponent_Template_kendo_searchbar_onBlur_3_listener() { return ctx.handleBlur(); })(\"onFocus\", function ComboBoxComponent_Template_kendo_searchbar_onFocus_3_listener() { return ctx.handleFocus(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, ComboBoxComponent_span_5_Template, 1, 6, \"span\", 5);\n ɵngcc0.ɵɵelementStart(6, \"span\", 6, 7);\n ɵngcc0.ɵɵelement(8, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, ComboBoxComponent_ng_template_9_Template, 5, 14, \"ng-template\", null, 9, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(11, ComboBoxComponent_ng_template_11_Template, 1, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementContainer(12, null, 11);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(17, _c26, ctx.disabled));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"role\", \"combobox\")(\"id\", ctx.focusableId)(\"listId\", ctx.listBoxId)(\"activeDescendant\", ctx.activeDescendant)(\"noDataLabel\", ctx.noDataLabel)(\"userInput\", ctx.text)(\"suggestedText\", ctx.getSuggestion())(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"popupOpen\", ctx.isOpen)(\"placeholder\", ctx.placeholder);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.clearButton && !ctx.loading && !ctx.disabled && !ctx.readonly && (ctx.text == null ? null : ctx.text.length));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(19, _c25, ctx.preventEventDefault));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.buttonClasses);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, SearchBarComponent, ɵngcc3.NgIf, ɵngcc2.EventsOutsideAngularDirective, TemplateContextDirective, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"allowCustom\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ComboBoxComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ComboBoxComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ComboBoxComponent.prototype, \"valuePrimitive\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ComboBoxComponent.prototype, \"valueNormalizer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ComboBoxComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ComboBoxComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"suggest\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], ComboBoxComponent.prototype, \"itemDisabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ComboBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(\"tabIndex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ComboBoxComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ComboBoxComponent.prototype, \"virtual\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"closed\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], ComboBoxComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ContentChild(ItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ItemTemplateDirective)\n], ComboBoxComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], ComboBoxComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], ComboBoxComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], ComboBoxComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ContentChild(GroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTemplateDirective)\n], ComboBoxComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n ContentChild(FixedGroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], ComboBoxComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], ComboBoxComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ComboBoxComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild(SearchBarComponent, { static: true }),\n __metadata(\"design:type\", SearchBarComponent)\n], ComboBoxComponent.prototype, \"searchbar\", void 0);\n__decorate([\n ViewChild('optionsList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], ComboBoxComponent.prototype, \"optionsList\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ComboBoxComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('select', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ComboBoxComponent.prototype, \"select\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-combobox'),\n __metadata(\"design:type\", Boolean)\n], ComboBoxComponent.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('class.k-combobox-clearable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ComboBoxComponent.prototype, \"clearable\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ComboBoxComponent.prototype, \"dir\", null);\nComboBoxComponent = ComboBoxComponent_1 = __decorate([ __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n DataService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n ElementRef, Boolean])\n], ComboBoxComponent);\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 */\nlet ValueTemplateDirective = class ValueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nValueTemplateDirective.ɵfac = function ValueTemplateDirective_Factory(t) { return new (t || ValueTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nValueTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ValueTemplateDirective, selectors: [[\"\", \"kendoDropDownListValueTemplate\", \"\"], [\"\", \"kendoDropDownTreeValueTemplate\", \"\"]] });\nValueTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ValueTemplateDirective);\n\n/* tslint:disable:member-ordering */\nvar DropDownListComponent_1;\n/**\n * @hidden\n */\nconst DROPDOWNLIST_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownListComponent)\n};\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 */\nlet DropDownListComponent = DropDownListComponent_1 = class DropDownListComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, hostElement, cdr, touchEnabled$$1) {\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.hostElement = hostElement;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled$$1;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid$1()}`;\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.widgetClasses = true;\n this.groupIndices = [];\n this.listBoxId = guid$1();\n this.optionPrefix = guid$1();\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.wrapperFocused = new EventEmitter();\n this.wrapperBlurred = new EventEmitter();\n this.selectionSubscription = new Subscription();\n this._open = false;\n this._popupSettings = { animate: true };\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\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)) {\n return;\n }\n return this.optionPrefix + \"-\" + getter$1(this.dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.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 * @hidden\n */\n blurComponent() {\n this.wrapperBlurred.emit();\n }\n /**\n * @hidden\n */\n blurFilterInput() {\n this.filterBlurred.emit();\n }\n /**\n * @hidden\n */\n focusComponent() {\n this.wrapperFocused.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 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 /**\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 dir() {\n return this.direction;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-state-focused');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n this.localizationChangesSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.setMessages();\n });\n this.setMessages();\n this.assignAriaDescribedBy();\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 clearTimeout(this.messagesTimeout);\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 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' : this.iconClass || 'k-i-arrow-s';\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$1(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$1(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$1(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.wrapperFocused))))\n .subscribe(() => {\n this.wrapperBlurred.emit();\n });\n this._zone.runOutsideAngular(() => {\n this.componentBlurredSubscription =\n merge(this.wrapperBlurred.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.hostElement, 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 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 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$1(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$1(this.value, this.valueField) !== getter$1(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.hostElement.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(() => { this.word = \"\"; }, 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$1(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$1(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$1(this.defaultItem, valueField);\n const currentValue = getter$1(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 setMessages() {\n this._zone.runOutsideAngular(() => {\n clearTimeout(this.messagesTimeout);\n this.messagesTimeout = setTimeout(() => {\n this.noDataText = this.localization.get('noDataText');\n this.cdr.detectChanges();\n });\n });\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$1();\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};\nDropDownListComponent.ɵfac = function DropDownListComponent_Factory(t) { return new (t || DropDownListComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nDropDownListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DropDownListComponent, selectors: [[\"kendo-dropdownlist\"]], contentQueries: function DropDownListComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ValueTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.valueTemplate = _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.noDataTemplate = _t.first);\n } }, viewQuery: function DropDownListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n } }, hostVars: 5, hostBindings: function DropDownListComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-dropdown\", ctx.widgetClasses);\n } }, inputs: { focusableId: \"focusableId\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", filterable: \"filterable\", ignoreCase: \"ignoreCase\", delay: \"delay\", tabindex: \"tabindex\", data: \"data\", value: \"value\", popupSettings: \"popupSettings\", itemDisabled: \"itemDisabled\", virtual: \"virtual\", valuePrimitive: \"valuePrimitive\", tabIndex: \"tabIndex\", iconClass: \"iconClass\", loading: \"loading\", textField: \"textField\", valueField: \"valueField\", defaultItem: \"defaultItem\" }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", selectionChange: \"selectionChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoDropDownList\"], features: [ɵngcc0.ɵɵProvidersFeature([\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_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 23, consts: function () { let i18n_27; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.dropdownlist.noDataText\n */\n const MSG_EXTERNAL_8289552890585138350$$DIST_FESM2015_INDEX_JS_28 = goog.getMsg(\"NO DATA FOUND\");\n i18n_27 = MSG_EXTERNAL_8289552890585138350$$DIST_FESM2015_INDEX_JS_28;\n }\n else {\n i18n_27 = $localize `:kendo.dropdownlist.noDataText|The text displayed in the popup when there are no items␟4fc2f70c9c8cf7b18affd6b938105996d6ac3306␟8289552890585138350:NO DATA FOUND`;\n } return [[\"kendoDropDownListLocalizedMessages\", \"\", \"noDataText\", i18n_27], [\"unselectable\", \"on\", \"role\", \"listbox\", \"aria-haspopup\", \"listbox\", 3, \"id\", \"ngClass\", \"kendoEventsOutsideAngular\", \"scope\", \"keydown\", \"keypress\", \"click\"], [\"wrapper\", \"\"], [\"unselectable\", \"on\", 1, \"k-input\", 3, \"id\"], [4, \"ngIf\"], [3, \"ngIf\"], [\"unselectable\", \"on\", 1, \"k-select\"], [\"unselectable\", \"on\", 1, \"k-icon\", 3, \"ngClass\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [3, \"templateContext\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"pageChange\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [1, \"k-list-filter\", 3, \"click\"], [\"tabindex\", \"-1\", 1, \"k-textbox\", 3, \"filterInput\", \"dir\", \"ngModel\", \"ngModelChange\", \"keydown\", \"input\", \"focus\", \"blur\"], [\"unselectable\", \"on\", 1, \"k-icon\", \"k-i-search\"], [\"kendoDropDownsSelectable\", \"\", 1, \"k-list-optionlabel\", 3, \"ngClass\", \"index\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]]; }, template: function DropDownListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵlistener(\"keydown\", function DropDownListComponent_Template_span_keydown_1_listener($event) { return ctx.keydown($event); })(\"keypress\", function DropDownListComponent_Template_span_keypress_1_listener($event) { return ctx.keypress($event); })(\"click\", function DropDownListComponent_Template_span_click_1_listener($event) { return ctx.click($event); });\n ɵngcc0.ɵɵelementStart(3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, DropDownListComponent_4_Template, 1, 4, null, 4);\n ɵngcc0.ɵɵtemplate(5, DropDownListComponent_ng_template_5_Template, 1, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"span\", 6);\n ɵngcc0.ɵɵelement(7, \"span\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, DropDownListComponent_ng_template_8_Template, 8, 17, \"ng-template\", null, 8, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, DropDownListComponent_ng_template_10_Template, 1, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementContainer(11, null, 9);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"ngClass\", ɵngcc0.ɵɵpureFunction1(18, _c29, ctx.disabled))(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(20, _c1, ctx.focusComponent, ctx.blurComponent))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction)(\"readonly\", ctx.readonly)(\"tabindex\", ctx.widgetTabIndex)(\"aria-disabled\", ctx.disabled)(\"aria-readonly\", ctx.readonly)(\"aria-expanded\", ctx.ariaExpanded)(\"aria-owns\", ctx.ariaOwns)(\"aria-activedescendant\", ctx.ariaActivedescendant)(\"aria-label\", ctx.noDataLabel);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.valueLabelId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.valueTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.valueTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.buttonClasses);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf, TemplateContextDirective, ɵngcc5.DefaultValueAccessor, FilterInputDirective, ɵngcc5.NgControlStatus, ɵngcc5.NgModel, SelectableDirective, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownListComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownListComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownListComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownListComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownListComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownListComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownListComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownListComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropDownListComponent.prototype, \"defaultItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], DropDownListComponent.prototype, \"itemDisabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownListComponent.prototype, \"virtual\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"ignoreCase\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownListComponent.prototype, \"delay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], DropDownListComponent.prototype, \"valuePrimitive\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownListComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(\"tabIndex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DropDownListComponent.prototype, \"tabIndex\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"closed\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownListComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ContentChild(ItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ItemTemplateDirective)\n], DropDownListComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n ContentChild(GroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTemplateDirective)\n], DropDownListComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n ContentChild(FixedGroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], DropDownListComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n ContentChild(ValueTemplateDirective, { static: false }),\n __metadata(\"design:type\", ValueTemplateDirective)\n], DropDownListComponent.prototype, \"valueTemplate\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], DropDownListComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], DropDownListComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], DropDownListComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], DropDownListComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], DropDownListComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], DropDownListComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('optionsList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], DropDownListComponent.prototype, \"optionsList\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-dropdown'),\n __metadata(\"design:type\", Boolean)\n], DropDownListComponent.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], DropDownListComponent.prototype, \"dir\", null);\nDropDownListComponent = DropDownListComponent_1 = __decorate([ __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n DataService,\n NgZone,\n Renderer2,\n ElementRef,\n ChangeDetectorRef, Boolean])\n], DropDownListComponent);\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 */\nlet CustomItemTemplateDirective = class CustomItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nCustomItemTemplateDirective.ɵfac = function CustomItemTemplateDirective_Factory(t) { return new (t || CustomItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCustomItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CustomItemTemplateDirective, selectors: [[\"\", \"kendoMultiSelectCustomItemTemplate\", \"\"]] });\nCustomItemTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], CustomItemTemplateDirective);\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 */\nlet TagTemplateDirective = class TagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nTagTemplateDirective.ɵfac = function TagTemplateDirective_Factory(t) { return new (t || TagTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nTagTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TagTemplateDirective, selectors: [[\"\", \"kendoMultiSelectTagTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeTagTemplate\", \"\"]] });\nTagTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], TagTemplateDirective);\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 */\nlet GroupTagTemplateDirective = class GroupTagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupTagTemplateDirective.ɵfac = function GroupTagTemplateDirective_Factory(t) { return new (t || GroupTagTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nGroupTagTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupTagTemplateDirective, selectors: [[\"\", \"kendoMultiSelectGroupTagTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeGroupTagTemplate\", \"\"]] });\nGroupTagTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupTagTemplateDirective);\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/* tslint:disable:member-ordering */\nvar MultiSelectComponent_1;\nconst MULTISELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => MultiSelectComponent)\n};\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 */\nlet MultiSelectComponent = MultiSelectComponent_1 = class MultiSelectComponent {\n constructor(localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, hostElement, _zone, touchEnabled$$1) {\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.hostElement = hostElement;\n this._zone = _zone;\n this.touchEnabled = touchEnabled$$1;\n this.listBoxId = guid$1();\n this.tagListId = guid$1();\n this.tagPrefix = \"tag-\" + guid$1();\n this.optionPrefix = \"option-\" + guid$1();\n this.focusedTagIndex = undefined;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid$1()}`;\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 *\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(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the MultiSelect gets blurred.\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time a tag is about to be removed.\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n this.widgetClasses = true;\n this.initialized = false;\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.hostElement.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 wrapperMousedown(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 /**\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 * 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 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 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$1(item, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.noDataText;\n }\n }\n get clearTitle() {\n return this.localization.get('clearTitle');\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$$1 = (item) => getter$1(item, this.valueField) !== getter$1(dataItem, this.valueField);\n this.value = this.value.filter(filter$$1);\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$1(item, this.valueField) === getter$1(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.hostElement.nativeElement, \"tabindex\");\n this.createCustomValueStream();\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.setMessages();\n });\n this.setMessages();\n this.setState(this.value);\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 clearTimeout(this.messagesTimeout);\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 // 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.hostElement.nativeElement, 'k-state-focused');\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.hostElement, 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$1(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$1(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$$1 = item => getter$1(item, this.valueField) !== getter$1(dataItem, this.valueField);\n this.value = this.value.filter(filter$$1);\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$1(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$1(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$1(item.value, this.textField);\n }\n else {\n itemText = getter$1(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$1(tag, this.valueField) === getter$1(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 setMessages() {\n this._zone.runOutsideAngular(() => {\n clearTimeout(this.messagesTimeout);\n this.messagesTimeout = setTimeout(() => {\n this.noDataText = this.localization.get('noDataText');\n this.cdr.detectChanges();\n });\n });\n }\n};\nMultiSelectComponent.ɵfac = function MultiSelectComponent_Factory(t) { return new (t || MultiSelectComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nMultiSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MultiSelectComponent, selectors: [[\"kendo-multiselect\"]], contentQueries: function MultiSelectComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CustomItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TagTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTagTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.customItemTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _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.tagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n } }, viewQuery: function MultiSelectComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(SearchBarComponent, 7);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n } }, hostVars: 7, hostBindings: function MultiSelectComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-multiselect\", ctx.widgetClasses)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", autoClose: \"autoClose\", tabindex: \"tabindex\", disabled: \"disabled\", readonly: \"readonly\", filterable: \"filterable\", listHeight: \"listHeight\", clearButton: \"clearButton\", tagMapper: \"tagMapper\", allowCustom: \"allowCustom\", valueNormalizer: \"valueNormalizer\", data: \"data\", value: \"value\", tabIndex: \"tabIndex\", placeholder: \"placeholder\", itemDisabled: \"itemDisabled\", checkboxes: \"checkboxes\", virtual: \"virtual\", popupSettings: \"popupSettings\", valuePrimitive: \"valuePrimitive\", loading: \"loading\", valueField: \"valueField\", textField: \"textField\" }, outputs: { filterChange: \"filterChange\", valueChange: \"valueChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\", removeTag: \"removeTag\" }, exportAs: [\"kendoMultiSelect\"], features: [ɵngcc0.ɵɵProvidersFeature([\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_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 24, consts: function () { let i18n_30; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multiselect.noDataText\n */\n const MSG_EXTERNAL_1450213984397806503$$DIST_FESM2015_INDEX_JS_31 = goog.getMsg(\"NO DATA FOUND\");\n i18n_30 = MSG_EXTERNAL_1450213984397806503$$DIST_FESM2015_INDEX_JS_31;\n }\n else {\n i18n_30 = $localize `:kendo.multiselect.noDataText|The text displayed in the popup when there are no items␟3cc1323f79a5fe012960578e513f8a35b2af1e96␟1450213984397806503:NO DATA FOUND`;\n } let i18n_32; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.combobox.clearTitle\n */\n const MSG_EXTERNAL_2025597431468961462$$DIST_FESM2015_INDEX_JS_33 = goog.getMsg(\"clear\");\n i18n_32 = MSG_EXTERNAL_2025597431468961462$$DIST_FESM2015_INDEX_JS_33;\n }\n else {\n i18n_32 = $localize `:kendo.combobox.clearTitle|The title of the clear button␟069e8fae80677e3e785861123bef446b3ff41ab4␟2025597431468961462:clear`;\n } return [[\"kendoMultiSelectLocalizedMessages\", \"\", \"noDataText\", i18n_30, \"clearTitle\", i18n_32], [1, \"k-multiselect-wrap\", \"k-floatwrap\", 3, \"mousedown\"], [\"wrapper\", \"\"], [3, \"id\", \"tags\", \"textField\", \"valueField\", \"focused\", \"disabled\", \"template\", \"groupTemplate\", \"tagPrefix\", \"disabledIndices\", \"removeTag\"], [3, \"id\", \"role\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"userInput\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"placeholder\", \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\"], [\"searchbar\", \"\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"visibility\", \"mousedown\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading\", 4, \"ngIf\"], [\"popupTemplate\", \"\"], [3, \"ngIf\"], [\"container\", \"\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"mousedown\"], [1, \"k-icon\", \"k-i-loading\"], [4, \"ngIf\"], [\"class\", \"k-list\", 4, \"ngIf\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"multipleSelection\", \"virtual\", \"checkboxes\", \"pageChange\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-list\"], [\"kendoDropDownsSelectable\", \"\", 1, \"k-item\", \"k-custom-item\", 3, \"multipleSelection\", \"index\"], [4, \"ngIf\", \"ngIfElse\"], [\"default_custom_item_template\", \"\"], [1, \"k-icon\", \"k-i-plus\", 2, \"float\", \"right\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]]; }, template: function MultiSelectComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵlistener(\"mousedown\", function MultiSelectComponent_Template_div_mousedown_1_listener($event) { return ctx.wrapperMousedown($event); });\n ɵngcc0.ɵɵelementStart(3, \"kendo-taglist\", 3);\n ɵngcc0.ɵɵlistener(\"removeTag\", function MultiSelectComponent_Template_kendo_taglist_removeTag_3_listener($event) { return ctx.handleRemoveTag($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"kendo-searchbar\", 4, 5);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function MultiSelectComponent_Template_kendo_searchbar_onNavigate_4_listener($event) { return ctx.handleNavigate($event); })(\"valueChange\", function MultiSelectComponent_Template_kendo_searchbar_valueChange_4_listener($event) { return ctx.handleFilter($event); })(\"onBlur\", function MultiSelectComponent_Template_kendo_searchbar_onBlur_4_listener() { return ctx.onSearchBarBlur(); })(\"onFocus\", function MultiSelectComponent_Template_kendo_searchbar_onFocus_4_listener() { return ctx.onSearchBarFocus(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, MultiSelectComponent_span_6_Template, 1, 3, \"span\", 6);\n ɵngcc0.ɵɵtemplate(7, MultiSelectComponent_span_7_Template, 1, 0, \"span\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, MultiSelectComponent_ng_template_8_Template, 6, 17, \"ng-template\", null, 8, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(10, MultiSelectComponent_ng_template_10_Template, 1, 0, \"ng-template\", 9);\n ɵngcc0.ɵɵelementContainer(11, null, 10);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", ctx.tagListId)(\"tags\", ctx.tags)(\"textField\", ctx.textField)(\"valueField\", ctx.valueField)(\"focused\", ctx.focusedTagIndex)(\"disabled\", ctx.disabled)(\"template\", ctx.tagTemplate)(\"groupTemplate\", ctx.groupTagTemplate)(\"tagPrefix\", ctx.tagPrefix)(\"disabledIndices\", ctx.disabledIndices);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"role\", \"listbox\")(\"tagListId\", ctx.tagListId)(\"activeDescendant\", ctx.activeDescendant)(\"noDataLabel\", ctx.noDataLabel)(\"userInput\", ctx.text)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"popupOpen\", ctx.isOpen)(\"placeholder\", ctx.placeholder);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && ctx.clearButton && ((ctx.tags == null ? null : ctx.tags.length) || (ctx.text == null ? null : ctx.text.length)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, TagListComponent, SearchBarComponent, ɵngcc3.NgIf, TemplateContextDirective, SelectableDirective, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"autoClose\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MultiSelectComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(\"tabIndex\"),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], MultiSelectComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], MultiSelectComponent.prototype, \"placeholder\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], MultiSelectComponent.prototype, \"itemDisabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectComponent.prototype, \"checkboxes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectComponent.prototype, \"virtual\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MultiSelectComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], MultiSelectComponent.prototype, \"valuePrimitive\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MultiSelectComponent.prototype, \"tagMapper\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"allowCustom\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectComponent.prototype, \"valueNormalizer\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"closed\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectComponent.prototype, \"removeTag\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], MultiSelectComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild(SearchBarComponent, { static: true }),\n __metadata(\"design:type\", SearchBarComponent)\n], MultiSelectComponent.prototype, \"searchbar\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], MultiSelectComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], MultiSelectComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('optionsList', { static: false }),\n __metadata(\"design:type\", ListComponent)\n], MultiSelectComponent.prototype, \"optionsList\", void 0);\n__decorate([\n ContentChild(ItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", ItemTemplateDirective)\n], MultiSelectComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChild(CustomItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", CustomItemTemplateDirective)\n], MultiSelectComponent.prototype, \"customItemTemplate\", void 0);\n__decorate([\n ContentChild(GroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTemplateDirective)\n], MultiSelectComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n ContentChild(FixedGroupTemplateDirective, { static: false }),\n __metadata(\"design:type\", FixedGroupTemplateDirective)\n], MultiSelectComponent.prototype, \"fixedGroupTemplate\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], MultiSelectComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], MultiSelectComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(TagTemplateDirective, { static: false }),\n __metadata(\"design:type\", TagTemplateDirective)\n], MultiSelectComponent.prototype, \"tagTemplate\", void 0);\n__decorate([\n ContentChild(GroupTagTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTagTemplateDirective)\n], MultiSelectComponent.prototype, \"groupTagTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], MultiSelectComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-multiselect'),\n __metadata(\"design:type\", Boolean)\n], MultiSelectComponent.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], MultiSelectComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], MultiSelectComponent.prototype, \"disabledClass\", null);\nMultiSelectComponent = MultiSelectComponent_1 = __decorate([ __param(11, Optional()), __param(11, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n ChangeDetectorRef,\n KeyValueDiffers,\n Renderer2,\n ElementRef,\n NgZone, Boolean])\n], MultiSelectComponent);\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 */\nlet ColumnCellTemplateDirective = class ColumnCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nColumnCellTemplateDirective.ɵfac = function ColumnCellTemplateDirective_Factory(t) { return new (t || ColumnCellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nColumnCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnCellTemplateDirective, selectors: [[\"\", \"kendoMultiColumnComboBoxColumnCellTemplate\", \"\"]] });\nColumnCellTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ColumnCellTemplateDirective);\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 */\nlet ColumnHeaderTemplateDirective = class ColumnHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nColumnHeaderTemplateDirective.ɵfac = function ColumnHeaderTemplateDirective_Factory(t) { return new (t || ColumnHeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nColumnHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnHeaderTemplateDirective, selectors: [[\"\", \"kendoMultiColumnComboBoxColumnHeaderTemplate\", \"\"]] });\nColumnHeaderTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], ColumnHeaderTemplateDirective);\n\n/**\n * Represents the column definition of the [MultiColumnComboBox]({% slug overview_multicolumncombobox %})\n * ([see example]({% slug columns_multicolumncombobox %})).\n */\nlet ComboBoxColumnComponent = class ComboBoxColumnComponent {\n /**\n * Represents the column definition of the [MultiColumnComboBox]({% slug overview_multicolumncombobox %})\n * ([see example]({% slug columns_multicolumncombobox %})).\n */\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 = function ComboBoxColumnComponent_Factory(t) { return new (t || ComboBoxColumnComponent)(); };\nComboBoxColumnComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ComboBoxColumnComponent, selectors: [[\"kendo-combobox-column\"]], contentQueries: function ComboBoxColumnComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnHeaderTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n } }, inputs: { hidden: \"hidden\", field: \"field\", title: \"title\", width: \"width\", style: \"style\", headerStyle: \"headerStyle\", class: \"class\", headerClass: \"headerClass\", media: \"media\" }, decls: 0, vars: 0, template: function ComboBoxColumnComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChild(ColumnCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", ColumnCellTemplateDirective)\n], ComboBoxColumnComponent.prototype, \"cellTemplate\", void 0);\n__decorate([\n ContentChild(ColumnHeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", ColumnHeaderTemplateDirective)\n], ComboBoxColumnComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxColumnComponent.prototype, \"field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxColumnComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ComboBoxColumnComponent.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ComboBoxColumnComponent.prototype, \"hidden\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ComboBoxColumnComponent.prototype, \"style\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ComboBoxColumnComponent.prototype, \"headerStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ComboBoxColumnComponent.prototype, \"class\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ComboBoxColumnComponent.prototype, \"headerClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ComboBoxColumnComponent.prototype, \"media\", void 0);\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\nvar MultiColumnComboBoxComponent_1;\n/**\n * Represents the [Kendo UI MultiColumnComboBox component for Angular]({% slug overview_multicolumncombobox %}).\n */\nlet MultiColumnComboBoxComponent = MultiColumnComboBoxComponent_1 = class MultiColumnComboBoxComponent extends ComboBoxComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, hostElement, touchEnabled$$1) {\n super(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, hostElement, touchEnabled$$1);\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 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 listContainerClasses() {\n return [\n 'k-list-container',\n 'k-popup',\n 'k-reset',\n 'k-group',\n 'k-dropdowngrid-popup',\n 'k-popup-flush',\n 'k-state-border-up'\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$1(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 = function MultiColumnComboBoxComponent_Factory(t) { return new (t || MultiColumnComboBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DisabledItemsService), ɵngcc0.ɵɵdirectiveInject(DataService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED)); };\nMultiColumnComboBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MultiColumnComboBoxComponent, selectors: [[\"kendo-multicolumncombobox\"]], contentQueries: function MultiColumnComboBoxComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ComboBoxColumnComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columns = _t);\n } }, viewQuery: function MultiColumnComboBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c34, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.header = _t.first);\n } }, hostVars: 2, hostBindings: function MultiColumnComboBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-dropdowngrid\", ctx.hostClasses);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([\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_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 14, vars: 20, consts: function () { let i18n_35; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multicolumncombobox.noDataText\n */\n const MSG_EXTERNAL_3227251500690942605$$DIST_FESM2015_INDEX_JS_36 = goog.getMsg(\"NO DATA FOUND\");\n i18n_35 = MSG_EXTERNAL_3227251500690942605$$DIST_FESM2015_INDEX_JS_36;\n }\n else {\n i18n_35 = $localize `:kendo.multicolumncombobox.noDataText|The text displayed in the popup when there are no items␟23a18095f2c16d40a04251fa2fb15d3927e7a79a␟3227251500690942605:NO DATA FOUND`;\n } let i18n_37; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.multicolumncombobox.clearTitle\n */\n const MSG_EXTERNAL_326603149056291198$$DIST_FESM2015_INDEX_JS_38 = goog.getMsg(\"clear\");\n i18n_37 = MSG_EXTERNAL_326603149056291198$$DIST_FESM2015_INDEX_JS_38;\n }\n else {\n i18n_37 = $localize `:kendo.multicolumncombobox.clearTitle|The title of the clear button␟6b371962a2564e2e50986f7ec238e513b466d553␟326603149056291198:clear`;\n } return [[\"kendoMultiColumnComboBoxLocalizedMessages\", \"\", \"noDataText\", i18n_35, \"clearTitle\", i18n_37], [\"unselectable\", \"on\", 1, \"k-dropdown-wrap\"], [\"wrapper\", \"\"], [3, \"role\", \"id\", \"listId\", \"activeDescendant\", \"noDataLabel\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"placeholder\", \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\"], [\"searchbar\", \"\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"aria-hidden\", \"true\", 3, \"visibility\", \"kendoEventsOutsideAngular\", \"click\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", \"unselectable\", \"on\", 1, \"k-select\", 3, \"kendoEventsOutsideAngular\"], [\"select\", \"\"], [1, \"k-icon\", 3, \"ngClass\"], [\"popupTemplate\", \"\"], [3, \"resize\", 4, \"ngIf\"], [\"container\", \"\"], [\"aria-hidden\", \"true\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"kendoEventsOutsideAngular\", \"click\"], [4, \"ngIf\"], [1, \"k-grid-header\"], [\"header\", \"\"], [1, \"k-grid-header-wrap\"], [\"role\", \"presentation\"], [4, \"ngFor\", \"ngForOf\"], [\"rowTemplate\", \"\"], [3, \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"listClass\", \"pageChange\", \"listResize\"], [\"optionsList\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [3, \"templateContext\"], [3, \"width\", 4, \"ngIf\"], [\"class\", \"k-header\", 3, \"ngStyle\", \"ngClass\", 4, \"ngIf\"], [1, \"k-header\", 3, \"ngStyle\", \"ngClass\"], [\"class\", \"k-cell\", 3, \"ngClass\", \"width\", \"ngStyle\", 4, \"ngIf\"], [1, \"k-cell\", 3, \"ngClass\", \"ngStyle\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"], [1, \"k-footer\"], [3, \"resize\"]]; }, template: function MultiColumnComboBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-searchbar\", 3, 4);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function MultiColumnComboBoxComponent_Template_kendo_searchbar_onNavigate_3_listener($event) { return ctx.handleNavigate($event); })(\"valueChange\", function MultiColumnComboBoxComponent_Template_kendo_searchbar_valueChange_3_listener($event) { return ctx.searchBarChange($event); })(\"onBlur\", function MultiColumnComboBoxComponent_Template_kendo_searchbar_onBlur_3_listener() { return ctx.handleBlur(); })(\"onFocus\", function MultiColumnComboBoxComponent_Template_kendo_searchbar_onFocus_3_listener() { return ctx.handleFocus(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, MultiColumnComboBoxComponent_span_5_Template, 1, 6, \"span\", 5);\n ɵngcc0.ɵɵelementStart(6, \"span\", 6, 7);\n ɵngcc0.ɵɵelement(8, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, MultiColumnComboBoxComponent_ng_template_9_Template, 16, 19, \"ng-template\", null, 9, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(11, MultiColumnComboBoxComponent_kendo_resize_sensor_11_Template, 1, 0, \"kendo-resize-sensor\", 10);\n ɵngcc0.ɵɵelementContainer(12, null, 11);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"role\", \"combobox\")(\"id\", ctx.focusableId)(\"listId\", ctx.listBoxId)(\"activeDescendant\", ctx.activeDescendant)(\"noDataLabel\", ctx.noDataLabel)(\"userInput\", ctx.text)(\"suggestedText\", ctx.getSuggestion())(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"popupOpen\", ctx.isOpen)(\"placeholder\", ctx.placeholder);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.clearButton && !ctx.loading && !ctx.disabled && !ctx.readonly && (ctx.text == null ? null : ctx.text.length));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(18, _c25, ctx.preventEventDefault));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.buttonClasses);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: function () { return [LocalizedMessagesDirective, SearchBarComponent, ɵngcc3.NgIf, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgClass, TemplateContextDirective, ɵngcc3.NgForOf, ɵngcc3.NgStyle, ListComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-dropdowngrid'),\n __metadata(\"design:type\", Boolean)\n], MultiColumnComboBoxComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n ContentChildren(ComboBoxColumnComponent),\n __metadata(\"design:type\", QueryList)\n], MultiColumnComboBoxComponent.prototype, \"columns\", void 0);\n__decorate([\n ViewChild('header', { static: false }),\n __metadata(\"design:type\", ElementRef),\n __metadata(\"design:paramtypes\", [ElementRef])\n], MultiColumnComboBoxComponent.prototype, \"header\", null);\nMultiColumnComboBoxComponent = MultiColumnComboBoxComponent_1 = __decorate([ __param(10, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n DataService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n ElementRef, Boolean])\n], MultiColumnComboBoxComponent);\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 */\nlet NodeTemplateDirective = class NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNodeTemplateDirective.ɵfac = function NodeTemplateDirective_Factory(t) { return new (t || NodeTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNodeTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NodeTemplateDirective, selectors: [[\"\", \"kendoDropDownTreeNodeTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeNodeTemplate\", \"\"]] });\nNodeTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], NodeTemplateDirective);\n\nvar DropDownTreeComponent_1;\n/* tslint:disable:member-ordering */\nconst DEFAULT_POPUP_SETTINGS = { animate: true };\nconst hasChildren = () => false;\nconst fetchChildren = () => of([]);\nconst itemDisabled = () => false;\nconst isNodeVisible = () => true;\n/**\n * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).\n */\nlet DropDownTreeComponent = DropDownTreeComponent_1 = class DropDownTreeComponent {\n constructor(popupService, navigationService, renderer, hostElement, _zone, cdr, localization, touchEnabled$$1) {\n this.popupService = popupService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this._zone = _zone;\n this.cdr = cdr;\n this.localization = localization;\n this.touchEnabled = touchEnabled$$1;\n this.hostClasses = true;\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;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren;\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;\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 * 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()}`;\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()}`;\n this._popupSettings = DEFAULT_POPUP_SETTINGS;\n this._tabindex = 0;\n this._isFocused = false;\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 }\n get clearable() {\n return this.clearButton;\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, 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 set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-state-focused');\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.hostElement.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 }\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 open ?\n this.createPopup() :\n this.destroyPopup();\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\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.hostElement.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.hostElement.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 * @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 /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\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', 'k-reset', 'k-group', 'k-list-container'];\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(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(term) {\n this.filterChange.next(term);\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-i-arrow-s';\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(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(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.hostElement, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.isOpen) {\n this.treeview.blur();\n }\n this.blur();\n });\n }\n }));\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\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};\nDropDownTreeComponent.ɵfac = function DropDownTreeComponent_Factory(t) { return new (t || DropDownTreeComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nDropDownTreeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DropDownTreeComponent, selectors: [[\"kendo-dropdowntree\"]], contentQueries: function DropDownTreeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ValueTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _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.nodeTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.valueTemplate = _t.first);\n } }, viewQuery: function DropDownTreeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c41, 5);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c42, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.treeview = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.filterInput = _t.first);\n } }, hostVars: 7, hostBindings: function DropDownTreeComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-dropdowntree\", ctx.hostClasses)(\"k-dropdowntree-clearable\", ctx.clearable);\n } }, inputs: { clearButton: \"clearButton\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", placeholder: \"placeholder\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", itemDisabled: \"itemDisabled\", isNodeVisible: \"isNodeVisible\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", focusableId: \"focusableId\", data: \"data\", value: \"value\", popupSettings: \"popupSettings\", dataItem: \"dataItem\", tabindex: \"tabindex\", isNodeExpanded: \"isNodeExpanded\", valueDepth: \"valueDepth\", loading: \"loading\", textField: \"textField\", valueField: \"valueField\" }, outputs: { open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\", filterChange: \"filterChange\" }, exportAs: [\"kendoDropDownTree\"], features: [ɵngcc0.ɵɵProvidersFeature([\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_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 18, consts: function () { let i18n_43; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.dropdowntree.noDataText\n */\n const MSG_EXTERNAL_8377764809518564323$$DIST_FESM2015_INDEX_JS_44 = goog.getMsg(\"NO DATA FOUND\");\n i18n_43 = MSG_EXTERNAL_8377764809518564323$$DIST_FESM2015_INDEX_JS_44;\n }\n else {\n i18n_43 = $localize `:kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items␟b5507b240a829a596159da3600ea1c73810d8708␟8377764809518564323:NO DATA FOUND`;\n } let i18n_45; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.dropdowntree.clearTitle\n */\n const MSG_EXTERNAL_5091538317194981642$$DIST_FESM2015_INDEX_JS_46 = goog.getMsg(\"clear\");\n i18n_45 = MSG_EXTERNAL_5091538317194981642$$DIST_FESM2015_INDEX_JS_46;\n }\n else {\n i18n_45 = $localize `:kendo.dropdowntree.clearTitle|The title of the clear button␟549a21c02a5be9711c5297a917390d5f4c06448b␟5091538317194981642:clear`;\n } return [[\"kendoDropDownTreeLocalizedMessages\", \"\", \"noDataText\", i18n_43, \"clearTitle\", i18n_45], [\"role\", \"listbox\", \"aria-haspopup\", \"tree\", 3, \"ngClass\", \"kendoEventsOutsideAngular\", \"scope\", \"click\", \"keydown\"], [\"wrapper\", \"\"], [1, \"k-input\"], [4, \"ngIf\"], [3, \"ngIf\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"aria-hidden\", \"true\", 3, \"visibility\", \"click\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", 1, \"k-select\"], [1, \"k-icon\", \"k-i-arrow-60-down\", 3, \"ngClass\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [3, \"templateContext\"], [\"aria-hidden\", \"true\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"click\"], [\"class\", \"k-list-filter\", 4, \"ngIf\"], [\"kendoTreeViewSelectable\", \"\", 3, \"nodes\", \"maxHeight\", \"animate\", \"selectedKeys\", \"selectBy\", \"textField\", \"children\", \"hasChildren\", \"loadOnDemand\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"filter\", \"isVisible\", \"selectedKeysChange\", \"focusout\", \"keydown\", \"selectionChange\", \"expand\", \"collapse\", 4, \"ngIf\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [1, \"k-list-filter\"], [\"role\", \"textbox\", \"aria-haspopup\", \"true\", \"aria-expanded\", \"false\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"aria-readonly\", \"false\", 1, \"k-textbox\", 3, \"filterInput\", \"ngModel\", \"kendoEventsOutsideAngular\", \"scope\", \"input\", \"keydown.arrowdown\", \"keydown.alt.arrowup\", \"ngModelChange\"], [\"filterInput\", \"\"], [1, \"k-icon\", \"k-i-zoom\"], [\"kendoTreeViewSelectable\", \"\", 3, \"nodes\", \"animate\", \"selectedKeys\", \"selectBy\", \"textField\", \"children\", \"hasChildren\", \"loadOnDemand\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"filter\", \"isVisible\", \"selectedKeysChange\", \"focusout\", \"keydown\", \"selectionChange\", \"expand\", \"collapse\"], [\"treeview\", \"\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"]]; }, template: function DropDownTreeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵlistener(\"click\", function DropDownTreeComponent_Template_span_click_1_listener() { return ctx.handleClick(); })(\"keydown\", function DropDownTreeComponent_Template_span_keydown_1_listener($event) { return ctx.handleKeydown($event); });\n ɵngcc0.ɵɵelementStart(3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, DropDownTreeComponent_4_Template, 1, 4, null, 4);\n ɵngcc0.ɵɵtemplate(5, DropDownTreeComponent_ng_template_5_Template, 1, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, DropDownTreeComponent_span_6_Template, 1, 3, \"span\", 6);\n ɵngcc0.ɵɵelementStart(7, \"span\", 7);\n ɵngcc0.ɵɵelement(8, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, DropDownTreeComponent_ng_template_9_Template, 5, 5, \"ng-template\", null, 9, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(11, null, 10);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(13, _c29, ctx.disabled))(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(15, _c1, ctx.handleFocus, ctx.handleBlur))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"id\", ctx.focusableId)(\"aria-expanded\", ctx.isOpen)(\"aria-readonly\", ctx.readonly)(\"tabindex\", ctx.tabindex)(\"dir\", ctx.direction);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.valueLabelId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.valueTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.valueTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && ctx.clearButton && (ctx.text == null ? null : ctx.text.length) && !ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.buttonClasses);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf, TemplateContextDirective, ɵngcc5.DefaultValueAccessor, FilterInputDirective, ɵngcc5.NgControlStatus, ɵngcc5.NgModel, ɵngcc6.TreeViewComponent, ɵngcc6.SelectDirective]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-dropdowntree'),\n HostBinding('class.k-dropdowntree-clearable'),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], DropDownTreeComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-dropdowntree-clearable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DropDownTreeComponent.prototype, \"clearable\", null);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], DropDownTreeComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], DropDownTreeComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], DropDownTreeComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NodeTemplateDirective, { static: false }),\n __metadata(\"design:type\", NodeTemplateDirective)\n], DropDownTreeComponent.prototype, \"nodeTemplate\", void 0);\n__decorate([\n ContentChild(ValueTemplateDirective, { static: false }),\n __metadata(\"design:type\", ValueTemplateDirective)\n], DropDownTreeComponent.prototype, \"valueTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], DropDownTreeComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], DropDownTreeComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], DropDownTreeComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('treeview', { static: false }),\n __metadata(\"design:type\", TreeViewComponent),\n __metadata(\"design:paramtypes\", [TreeViewComponent])\n], DropDownTreeComponent.prototype, \"treeview\", null);\n__decorate([\n ViewChild('filterInput', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], DropDownTreeComponent.prototype, \"filterInput\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"closed\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"nodeExpand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"nodeCollapse\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropDownTreeComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DropDownTreeComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownTreeComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropDownTreeComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropDownTreeComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownTreeComponent.prototype, \"valueDepth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"hasChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"fetchChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownTreeComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownTreeComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DropDownTreeComponent.prototype, \"dataItem\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DropDownTreeComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"valuePrimitive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DropDownTreeComponent.prototype, \"tabindex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"itemDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"isNodeExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], DropDownTreeComponent.prototype, \"isNodeVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropDownTreeComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownTreeComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DropDownTreeComponent.prototype, \"focusableId\", void 0);\nDropDownTreeComponent = DropDownTreeComponent_1 = __decorate([ __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [PopupService,\n NavigationService,\n Renderer2,\n ElementRef,\n NgZone,\n ChangeDetectorRef,\n LocalizationService, Boolean])\n], DropDownTreeComponent);\n\nvar MultiSelectTreeComponent_1;\n/* tslint:disable:member-ordering */\nconst DEFAULT_POPUP_SETTINGS$1 = { animate: true };\nconst DEFAULT_CHECKABLE_SETTINGS = { checkChildren: true, checkOnClick: true };\nconst hasChildren$1 = () => false;\nconst fetchChildren$1 = () => of([]);\nconst itemDisabled$1 = () => false;\nconst isNodeVisible$1 = () => true;\n/**\n * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).\n */\nlet MultiSelectTreeComponent = MultiSelectTreeComponent_1 = class MultiSelectTreeComponent {\n constructor(popupService, renderer, hostElement, navigationService, _zone, localization, cdr, touchEnabled$$1) {\n this.popupService = popupService;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.navigationService = navigationService;\n this._zone = _zone;\n this.localization = localization;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled$$1;\n this.hostClasses = true;\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()}`;\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$1;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren$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 * 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 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.\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();\n this.tagPrefix = \"tag-\" + guid();\n this.focusedTagIndex = undefined;\n this._value = [];\n this._tabindex = 0;\n this._popupSettings = DEFAULT_POPUP_SETTINGS$1;\n this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;\n this._isFocused = false;\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 }\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 * 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$1, 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.hostElement.nativeElement, 'k-state-focused');\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', 'k-reset', 'k-group', 'k-list-container'];\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.hostElement.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 }\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({}, 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() {\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 this.lastNodeOnFocus.setAttribute('tabindex', '0');\n this.treeview.focus();\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.hostElement.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.hostElement.nativeElement)) {\n this._zone.run(() => {\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\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 /**\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 open ?\n this.createPopup() :\n this.destroyPopup();\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(term) {\n this.filterChange.next(term);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\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 open ?\n this.open.emit(eventArgs) :\n this.close.emit(eventArgs);\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 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 this.filterable ?\n this.filterInput.nativeElement.focus() :\n this.focus();\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 }\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};\nMultiSelectTreeComponent.ɵfac = function MultiSelectTreeComponent_Factory(t) { return new (t || MultiSelectTreeComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(TOUCH_ENABLED, 8)); };\nMultiSelectTreeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MultiSelectTreeComponent, selectors: [[\"kendo-multiselecttree\"]], contentQueries: function MultiSelectTreeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TagTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupTagTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\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.nodeTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupTagTemplate = _t.first);\n } }, viewQuery: function MultiSelectTreeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c41, 5);\n ɵngcc0.ɵɵviewQuery(_c12, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c42, 5);\n ɵngcc0.ɵɵviewQuery(_c48, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.treeview = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.filterInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.checkAllInput = _t.first);\n } }, hostVars: 5, hostBindings: function MultiSelectTreeComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-dropdowntree\", ctx.hostClasses);\n } }, inputs: { valueDepth: \"valueDepth\", placeholder: \"placeholder\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", loadOnDemand: \"loadOnDemand\", focusableId: \"focusableId\", clearButton: \"clearButton\", filterable: \"filterable\", checkAll: \"checkAll\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", isNodeVisible: \"isNodeVisible\", itemDisabled: \"itemDisabled\", tagMapper: \"tagMapper\", tabindex: \"tabindex\", popupSettings: \"popupSettings\", checkableSettings: \"checkableSettings\", data: \"data\", value: \"value\", dataItems: \"dataItems\", isNodeExpanded: \"isNodeExpanded\", textField: \"textField\", valueField: \"valueField\", loading: \"loading\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", valueChange: \"valueChange\", removeTag: \"removeTag\", filterChange: \"filterChange\" }, exportAs: [\"kendoMultiSelectTree\"], features: [ɵngcc0.ɵɵProvidersFeature([\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_1)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 11, vars: 28, consts: function () { let i18n_49; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multiselecttree.noDataText\n */\n const MSG_EXTERNAL_5589893825114548617$$DIST_FESM2015_INDEX_JS_50 = goog.getMsg(\"NO DATA FOUND\");\n i18n_49 = MSG_EXTERNAL_5589893825114548617$$DIST_FESM2015_INDEX_JS_50;\n }\n else {\n i18n_49 = $localize `:kendo.multiselecttree.noDataText|The text displayed in the popup when there are no items␟1689309191709bbbb071c889072707cb3f12dc93␟5589893825114548617:NO DATA FOUND`;\n } let i18n_51; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.multiselecttree.clearTitle\n */\n const MSG_EXTERNAL_7268188619735862842$$DIST_FESM2015_INDEX_JS_52 = goog.getMsg(\"clear\");\n i18n_51 = MSG_EXTERNAL_7268188619735862842$$DIST_FESM2015_INDEX_JS_52;\n }\n else {\n i18n_51 = $localize `:kendo.multiselecttree.clearTitle|The title of the clear button␟f99cf5ed2ae05c7d1df8dc97f56176a4934c8db9␟7268188619735862842:clear`;\n } let i18n_53; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed for the check-all checkbox\n * @meaning kendo.multiselecttree.checkAllText\n */\n const MSG_EXTERNAL_4511060501589211517$$DIST_FESM2015_INDEX_JS_54 = goog.getMsg(\"Check all\");\n i18n_53 = MSG_EXTERNAL_4511060501589211517$$DIST_FESM2015_INDEX_JS_54;\n }\n else {\n i18n_53 = $localize `:kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox␟7213da1304801b92c6dd35231b5305408e2734e3␟4511060501589211517:Check all`;\n } return [[\"kendoMultiSelectTreeLocalizedMessages\", \"\", \"noDataText\", i18n_49, \"clearTitle\", i18n_51, \"checkAllText\", i18n_53], [\"role\", \"listbox\", \"aria-haspopup\", \"tree\", 3, \"ngClass\", \"kendoEventsOutsideAngular\", \"scope\", \"click\", \"keydown\"], [\"wrapper\", \"\"], [3, \"id\", \"tags\", \"focused\", \"textField\", \"valueField\", \"valueDepth\", \"disabled\", \"tagPrefix\", \"template\", \"groupTemplate\", \"disabledIndices\", \"removeTag\"], [\"class\", \"k-input k-readonly\", 4, \"ngIf\"], [\"class\", \"k-icon k-clear-value k-i-close\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading\", 4, \"ngIf\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [1, \"k-input\", \"k-readonly\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-icon\", \"k-clear-value\", \"k-i-close\", 3, \"click\"], [1, \"k-icon\", \"k-i-loading\"], [\"class\", \"k-list-filter\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"k-check-all\", 4, \"ngIf\"], [\"kendoMultiSelectTreeCheckable\", \"\", 3, \"nodes\", \"animate\", \"checkable\", \"checkedItems\", \"valueField\", \"textField\", \"children\", \"hasChildren\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"loadOnDemand\", \"filter\", \"isVisible\", \"kendoEventsOutsideAngular\", \"scope\", \"keydown\", \"nodeClick\", \"expand\", \"collapse\", \"checkedItemsChange\"], [\"treeview\", \"\"], [\"class\", \"k-nodata\", 4, \"ngIf\"], [1, \"k-list-filter\"], [\"role\", \"textbox\", \"aria-haspopup\", \"true\", \"aria-expanded\", \"false\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"aria-readonly\", \"false\", 1, \"k-textbox\", 3, \"filterInput\", \"ngModel\", \"kendoEventsOutsideAngular\", \"scope\", \"input\", \"keydown\", \"ngModelChange\"], [\"filterInput\", \"\"], [1, \"k-icon\", \"k-i-zoom\"], [3, \"templateContext\"], [1, \"k-check-all\"], [\"type\", \"checkbox\", \"role\", \"checkbox\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"aria-readonly\", \"false\", 1, \"k-checkbox\", 3, \"checkAll\", \"treeview\", \"checkedItems\", \"valueField\", \"lastAction\", \"kendoEventsOutsideAngular\", \"scope\", \"checkedItemsChange\", \"keydown\"], [\"checkAllInput\", \"\"], [1, \"k-checkbox-label\", 3, \"click\", \"mousedown\"], [1, \"k-nodata\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"]]; }, template: function MultiSelectTreeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵlistener(\"click\", function MultiSelectTreeComponent_Template_div_click_1_listener() { return ctx.handleClick(); })(\"keydown\", function MultiSelectTreeComponent_Template_div_keydown_1_listener($event) { return ctx.handleKeydown($event); });\n ɵngcc0.ɵɵelementStart(3, \"kendo-taglist\", 3);\n ɵngcc0.ɵɵlistener(\"removeTag\", function MultiSelectTreeComponent_Template_kendo_taglist_removeTag_3_listener($event) { return ctx.handleRemoveTag($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, MultiSelectTreeComponent_span_4_Template, 2, 1, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, MultiSelectTreeComponent_span_5_Template, 1, 1, \"span\", 5);\n ɵngcc0.ɵɵtemplate(6, MultiSelectTreeComponent_span_6_Template, 1, 0, \"span\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, MultiSelectTreeComponent_ng_template_7_Template, 7, 25, \"ng-template\", null, 7, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(9, null, 8);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(23, _c56, ctx.disabled))(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(25, _c1, ctx.handleFocus, ctx.handleBlur))(\"scope\", ctx);\n ɵngcc0.ɵɵattribute(\"aria-describedby\", ctx.tagListId)(\"aria-readonly\", ctx.readonly)(\"aria-activedescendant\", ctx.focusedTagId)(\"tabindex\", ctx.tabindex)(\"id\", ctx.focusableId)(\"dir\", ctx.direction);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.tagListId)(\"tags\", ctx.tags)(\"focused\", ctx.focusedTagIndex)(\"textField\", ctx.textField)(\"valueField\", ctx.valueField)(\"valueDepth\", ctx.valueDepth)(\"disabled\", ctx.disabled)(\"tagPrefix\", ctx.tagPrefix)(\"template\", ctx.tagTemplate)(\"groupTemplate\", ctx.groupTagTemplate)(\"disabledIndices\", ctx.disabledIndices);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tags || !ctx.tags.length);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.disabled && !ctx.loading && !ctx.readonly && ctx.clearButton && (ctx.tags == null ? null : ctx.tags.length));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc3.NgClass, ɵngcc2.EventsOutsideAngularDirective, TagListComponent, ɵngcc3.NgIf, ɵngcc5.DefaultValueAccessor, FilterInputDirective, ɵngcc5.NgControlStatus, ɵngcc5.NgModel, TemplateContextDirective, CheckAllDirective, ɵngcc6.TreeViewComponent, CheckDirective]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-dropdowntree'),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], MultiSelectTreeComponent.prototype, \"direction\", void 0);\n__decorate([\n ContentChild(HeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", HeaderTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(NodeTemplateDirective, { static: false }),\n __metadata(\"design:type\", NodeTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"nodeTemplate\", void 0);\n__decorate([\n ContentChild(NoDataTemplateDirective, { static: false }),\n __metadata(\"design:type\", NoDataTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"noDataTemplate\", void 0);\n__decorate([\n ContentChild(TagTemplateDirective, { static: false }),\n __metadata(\"design:type\", TagTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"tagTemplate\", void 0);\n__decorate([\n ContentChild(GroupTagTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupTagTemplateDirective)\n], MultiSelectTreeComponent.prototype, \"groupTagTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], MultiSelectTreeComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], MultiSelectTreeComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], MultiSelectTreeComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('treeview', { static: false }),\n __metadata(\"design:type\", TreeViewComponent),\n __metadata(\"design:paramtypes\", [TreeViewComponent])\n], MultiSelectTreeComponent.prototype, \"treeview\", null);\n__decorate([\n ViewChild('filterInput', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], MultiSelectTreeComponent.prototype, \"filterInput\", void 0);\n__decorate([\n ViewChild('checkAllInput', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], MultiSelectTreeComponent.prototype, \"checkAllInput\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], MultiSelectTreeComponent.prototype, \"tabindex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectTreeComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MultiSelectTreeComponent.prototype, \"checkableSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectTreeComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectTreeComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectTreeComponent.prototype, \"dataItems\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MultiSelectTreeComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MultiSelectTreeComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], MultiSelectTreeComponent.prototype, \"valueDepth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectTreeComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MultiSelectTreeComponent.prototype, \"listHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"valuePrimitive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MultiSelectTreeComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MultiSelectTreeComponent.prototype, \"checkAll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"hasChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"fetchChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"isNodeExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"isNodeVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], MultiSelectTreeComponent.prototype, \"itemDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MultiSelectTreeComponent.prototype, \"tagMapper\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"opened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"closed\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"nodeExpand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"nodeCollapse\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"removeTag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MultiSelectTreeComponent.prototype, \"filterChange\", void 0);\nMultiSelectTreeComponent = MultiSelectTreeComponent_1 = __decorate([ __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),\n __metadata(\"design:paramtypes\", [PopupService,\n Renderer2,\n ElementRef,\n NavigationService,\n NgZone,\n LocalizationService,\n ChangeDetectorRef, Boolean])\n], MultiSelectTreeComponent);\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nlet DropDownTreeFlatBindingDirective = class DropDownTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n }\n};\nDropDownTreeFlatBindingDirective.ɵfac = function DropDownTreeFlatBindingDirective_Factory(t) { return new (t || DropDownTreeFlatBindingDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.DataBoundComponent)); };\nDropDownTreeFlatBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropDownTreeFlatBindingDirective, selectors: [[\"\", \"kendoDropDownTreeFlatBinding\", \"\"]], inputs: { nodes: [\"kendoDropDownTreeFlatBinding\", \"nodes\"], idField: [\"valueField\", \"idField\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoDropDownTreeFlatBinding'),\n __metadata(\"design:type\", Array)\n], DropDownTreeFlatBindingDirective.prototype, \"nodes\", void 0);\n__decorate([\n Input('valueField'),\n __metadata(\"design:type\", String)\n], DropDownTreeFlatBindingDirective.prototype, \"idField\", void 0);\nDropDownTreeFlatBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], DropDownTreeFlatBindingDirective);\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nlet DropDownTreeHierarchyBindingDirective = class 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};\nDropDownTreeHierarchyBindingDirective.ɵfac = function DropDownTreeHierarchyBindingDirective_Factory(t) { return new (t || DropDownTreeHierarchyBindingDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.DataBoundComponent)); };\nDropDownTreeHierarchyBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropDownTreeHierarchyBindingDirective, selectors: [[\"\", \"kendoDropDownTreeHierarchyBinding\", \"\"]], inputs: { data: [\"kendoDropDownTreeHierarchyBinding\", \"data\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoDropDownTreeHierarchyBinding'),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DropDownTreeHierarchyBindingDirective.prototype, \"data\", null);\nDropDownTreeHierarchyBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], DropDownTreeHierarchyBindingDirective);\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nlet MultiSelectTreeFlatBindingDirective = class MultiSelectTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n }\n};\nMultiSelectTreeFlatBindingDirective.ɵfac = function MultiSelectTreeFlatBindingDirective_Factory(t) { return new (t || MultiSelectTreeFlatBindingDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.DataBoundComponent)); };\nMultiSelectTreeFlatBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MultiSelectTreeFlatBindingDirective, selectors: [[\"\", \"kendoMultiSelectTreeFlatBinding\", \"\"]], inputs: { nodes: [\"kendoMultiSelectTreeFlatBinding\", \"nodes\"], idField: [\"valueField\", \"idField\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoMultiSelectTreeFlatBinding'),\n __metadata(\"design:type\", Array)\n], MultiSelectTreeFlatBindingDirective.prototype, \"nodes\", void 0);\n__decorate([\n Input('valueField'),\n __metadata(\"design:type\", String)\n], MultiSelectTreeFlatBindingDirective.prototype, \"idField\", void 0);\nMultiSelectTreeFlatBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], MultiSelectTreeFlatBindingDirective);\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nlet MultiSelectTreeHierarchyBindingDirective = class 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};\nMultiSelectTreeHierarchyBindingDirective.ɵfac = function MultiSelectTreeHierarchyBindingDirective_Factory(t) { return new (t || MultiSelectTreeHierarchyBindingDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.DataBoundComponent)); };\nMultiSelectTreeHierarchyBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MultiSelectTreeHierarchyBindingDirective, selectors: [[\"\", \"kendoMultiSelectTreeHierarchyBinding\", \"\"]], inputs: { data: [\"kendoMultiSelectTreeHierarchyBinding\", \"data\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoMultiSelectTreeHierarchyBinding'),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], MultiSelectTreeHierarchyBindingDirective.prototype, \"data\", null);\nMultiSelectTreeHierarchyBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], MultiSelectTreeHierarchyBindingDirective);\n\n/**\n * A directive which manages the expanded state of the popup TreeView.\n */\nlet DropDownTreesExpandDirective = class DropDownTreesExpandDirective extends ExpandDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n }\n};\nDropDownTreesExpandDirective.ɵfac = function DropDownTreesExpandDirective_Factory(t) { return new (t || DropDownTreesExpandDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ExpandableComponent)); };\nDropDownTreesExpandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropDownTreesExpandDirective, selectors: [[\"\", \"kendoDropDownTreeExpandable\", \"\"], [\"\", \"kendoMultiSelectTreeExpandable\", \"\"]], inputs: { isExpanded: [\"isNodeExpanded\", \"isExpanded\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('isNodeExpanded'),\n __metadata(\"design:type\", Function)\n], DropDownTreesExpandDirective.prototype, \"isExpanded\", void 0);\nDropDownTreesExpandDirective = __decorate([ __metadata(\"design:paramtypes\", [ExpandableComponent])\n], DropDownTreesExpandDirective);\n\n/**\n * @hidden\n */\nlet TagListComponent = class TagListComponent {\n /**\n * @hidden\n */\n constructor() {\n /**\n * A collection with the disabled tags' indices.\n */\n this.disabledIndices = new Set();\n this.removeTag = new EventEmitter();\n }\n tagProp(tag, prop, index) {\n const propField = prop && this.getPropField(tag, prop, index);\n return getter$1(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 = function TagListComponent_Factory(t) { return new (t || TagListComponent)(); };\nTagListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TagListComponent, selectors: [[\"kendo-taglist\"]], inputs: { disabledIndices: \"disabledIndices\", tags: \"tags\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", focused: \"focused\", template: \"template\", groupTemplate: \"groupTemplate\", disabled: \"disabled\", tagPrefix: \"tagPrefix\", id: \"id\" }, outputs: { removeTag: \"removeTag\" }, decls: 2, vars: 2, consts: [[1, \"k-reset\"], [\"role\", \"option\", \"aria-selected\", \"true\", \"class\", \"k-button\", 3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"option\", \"aria-selected\", \"true\", 1, \"k-button\", 3, \"ngClass\"], [4, \"ngIf\", \"ngIfThen\", \"ngIfElse\"], [\"groupTag\", \"\"], [\"singleTag\", \"\"], [\"aria-label\", \"delete\", 1, \"k-select\"], [1, \"k-icon\", \"k-i-close\", 3, \"mousedown\"], [4, \"ngIf\"], [3, \"ngIf\"], [3, \"templateContext\"]], template: function TagListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵtemplate(1, TagListComponent_li_1_Template, 8, 11, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.tags);\n } }, directives: function () { return [ɵngcc3.NgForOf, ListItemDirective, ɵngcc3.NgClass, ɵngcc3.NgIf, TemplateContextDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], TagListComponent.prototype, \"tags\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TagListComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TagListComponent.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], TagListComponent.prototype, \"valueDepth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TagListComponent.prototype, \"focused\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TagTemplateDirective)\n], TagListComponent.prototype, \"template\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", GroupTagTemplateDirective)\n], TagListComponent.prototype, \"groupTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TagListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TagListComponent.prototype, \"tagPrefix\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TagListComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Set)\n], TagListComponent.prototype, \"disabledIndices\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TagListComponent.prototype, \"removeTag\", void 0);\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { noDataText: \"noDataText\", clearTitle: \"clearTitle\", checkAllText: \"checkAllText\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"noDataText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"clearTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"checkAllText\", void 0);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoDropDownListLocalizedMessages\", \"\"], [\"\", \"kendoDropDownTreeLocalizedMessages\", \"\"], [\"\", \"kendoComboBoxLocalizedMessages\", \"\"], [\"\", \"kendoMultiColumnComboBoxLocalizedMessages\", \"\"], [\"\", \"kendoAutoCompleteLocalizedMessages\", \"\"], [\"\", \"kendoMultiSelectLocalizedMessages\", \"\"], [\"\", \"kendoMultiSelectTreeLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\nvar CustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_dropdowns %}#toc-messages)).\n */\nlet CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nCustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(t) { return new (t || CustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CustomMessagesComponent, selectors: [[\"kendo-dropdownlist-messages\"], [\"kendo-combobox-messages\"], [\"kendo-multicolumncombobox-messages\"], [\"kendo-autocomplete-messages\"], [\"kendo-multiselect-messages\"], [\"kendo-dropdowntree-messages\"], [\"kendo-multiselecttree-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nCustomMessagesComponent = CustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CustomMessagesComponent);\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 */\nlet FilterDirective = class 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$1(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 = function FilterDirective_Factory(t) { return new (t || FilterDirective)(ɵngcc0.ɵɵdirectiveInject(FilterableComponent)); };\nFilterDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterDirective, selectors: [[\"\", \"kendoDropDownFilter\", \"\"]], inputs: { filterable: \"filterable\", data: \"data\", rawSettings: [\"kendoDropDownFilter\", \"rawSettings\"] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], FilterDirective.prototype, \"data\", null);\n__decorate([\n Input('kendoDropDownFilter'),\n __metadata(\"design:type\", Object)\n], FilterDirective.prototype, \"rawSettings\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FilterDirective.prototype, \"filterable\", void 0);\nFilterDirective = __decorate([ __metadata(\"design:paramtypes\", [FilterableComponent])\n], FilterDirective);\n\n/**\n * @hidden\n */\nlet FilterInputDirective = class 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 = function FilterInputDirective_Factory(t) { return new (t || FilterInputDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nFilterInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterInputDirective, selectors: [[\"\", \"filterInput\", \"\"]], inputs: { focused: [\"filterInput\", \"focused\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input('filterInput'),\n __metadata(\"design:type\", Boolean)\n], FilterInputDirective.prototype, \"focused\", void 0);\nFilterInputDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone])\n], FilterInputDirective);\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 */\nlet SharedDirectivesModule = class SharedDirectivesModule {\n};\nSharedDirectivesModule.ɵfac = function SharedDirectivesModule_Factory(t) { return new (t || SharedDirectivesModule)(); };\nSharedDirectivesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedDirectivesModule });\nSharedDirectivesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * @hidden\n */\nlet SelectableDirective = class 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 = function SelectableDirective_Factory(t) { return new (t || SelectableDirective)(ɵngcc0.ɵɵdirectiveInject(SelectionService)); };\nSelectableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SelectableDirective, selectors: [[\"\", \"kendoDropDownsSelectable\", \"\"]], hostVars: 9, hostBindings: function SelectableDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function SelectableDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"index\", ctx.index);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.height, \"px\")(\"min-height\", ctx.height, \"px\");\n ɵngcc0.ɵɵclassProp(\"k-state-focused\", ctx.focusedClassName)(\"k-state-selected\", ctx.selectedClassName);\n } }, inputs: { checkboxes: \"checkboxes\", multipleSelection: \"multipleSelection\", index: \"index\", height: \"height\" } });\n__decorate([\n HostBinding('attr.index'),\n Input(),\n __metadata(\"design:type\", Number)\n], SelectableDirective.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SelectableDirective.prototype, \"checkboxes\", void 0);\n__decorate([\n HostBinding('style.height.px'),\n HostBinding('style.minHeight.px'),\n Input(),\n __metadata(\"design:type\", Number)\n], SelectableDirective.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SelectableDirective.prototype, \"multipleSelection\", void 0);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SelectableDirective.prototype, \"focusedClassName\", null);\n__decorate([\n HostBinding('class.k-state-selected'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SelectableDirective.prototype, \"selectedClassName\", null);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], SelectableDirective.prototype, \"onClick\", null);\nSelectableDirective = __decorate([ __metadata(\"design:paramtypes\", [SelectionService])\n], SelectableDirective);\n\n/**\n * @hidden\n */\nlet TemplateContextDirective = class 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 = function TemplateContextDirective_Factory(t) { return new (t || TemplateContextDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nTemplateContextDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TemplateContextDirective, selectors: [[\"\", \"templateContext\", \"\"]], inputs: { templateContext: \"templateContext\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TemplateContextDirective.prototype, \"templateContext\", null);\nTemplateContextDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef])\n], TemplateContextDirective);\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({}, item, { level });\n this.checkedItems.push(candidate);\n this.checkedKeys.add(valueFrom(candidate, this.valueField));\n }\n removeItem(item) {\n if (!this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign({}, item, { level });\n this.checkedItems = this.checkedItems\n .filter(item => valueFrom(item, this.valueField) !== valueFrom(candidate, this.valueField));\n this.checkedKeys.delete(valueFrom(candidate, this.valueField));\n }\n isItemChecked(item) {\n return this.checkedKeys.has(valueFrom(item, this.valueField));\n }\n updateItems() {\n this.checkedItems = this.checkedItems || [];\n this.checkedKeys = new Set(this.checkedItems.map(item => valueFrom(item, this.valueField)));\n }\n}\nBaseCheckDirective.ɵfac = function BaseCheckDirective_Factory(t) { return new (t || BaseCheckDirective)(); };\nBaseCheckDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BaseCheckDirective, inputs: { checkedItems: \"checkedItems\", valueField: \"valueField\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], BaseCheckDirective.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], BaseCheckDirective.prototype, \"checkedItems\", void 0);\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nlet CheckDirective = class 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$$1 = (item) => this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index);\n fetchDescendentNodes(lookup, filter$$1)\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 = function CheckDirective_Factory(t) { return new (t || CheckDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.TreeViewComponent)); };\nCheckDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CheckDirective, selectors: [[\"\", \"kendoMultiSelectTreeCheckable\", \"\"]], inputs: { checkable: \"checkable\", valueField: \"valueField\", checkedItems: \"checkedItems\" }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckDirective.prototype, \"checkable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckDirective.prototype, \"valueField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CheckDirective.prototype, \"checkedItems\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CheckDirective.prototype, \"checkedItemsChange\", void 0);\nCheckDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent])\n], CheckDirective);\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nlet CheckAllDirective = class 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$$1 = (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$$1)\n .forEach(lookup => pendingCheck.push(lookup.item));\n pendingCheck.forEach(item => {\n if (this.currentIndeterminateState) {\n this.lastAction === 'check' ?\n this.addItem(item) :\n this.removeItem(item);\n return;\n }\n this.currentCheckedState ?\n this.addItem(item) :\n this.removeItem(item);\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 = function CheckAllDirective_Factory(t) { return new (t || CheckAllDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nCheckAllDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CheckAllDirective, selectors: [[\"\", \"checkAll\", \"\"]], hostBindings: function CheckAllDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function CheckAllDirective_change_HostBindingHandler($event) { return ctx.handleChange($event.target); });\n } }, inputs: { lastAction: \"lastAction\", treeview: \"treeview\", checkedItems: \"checkedItems\", valueField: \"valueField\", focused: [\"checkAll\", \"focused\"] }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CheckAllDirective.prototype, \"lastAction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TreeViewComponent)\n], CheckAllDirective.prototype, \"treeview\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CheckAllDirective.prototype, \"checkedItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckAllDirective.prototype, \"valueField\", void 0);\n__decorate([\n Input('checkAll'),\n __metadata(\"design:type\", Boolean)\n], CheckAllDirective.prototype, \"focused\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CheckAllDirective.prototype, \"checkedItemsChange\", void 0);\n__decorate([\n HostListener('change', ['$event.target']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], CheckAllDirective.prototype, \"handleChange\", null);\nCheckAllDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, NgZone, ChangeDetectorRef, Renderer2])\n], CheckAllDirective);\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 */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });\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 */\nlet MultiSelectTreeSummaryTagDirective = class 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 = function MultiSelectTreeSummaryTagDirective_Factory(t) { return new (t || MultiSelectTreeSummaryTagDirective)(ɵngcc0.ɵɵdirectiveInject(MultiSelectTreeComponent)); };\nMultiSelectTreeSummaryTagDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MultiSelectTreeSummaryTagDirective, selectors: [[\"\", \"kendoMultiSelectTreeSummaryTag\", \"\"]], inputs: { showAfter: [\"kendoMultiSelectTreeSummaryTag\", \"showAfter\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input('kendoMultiSelectTreeSummaryTag'),\n __metadata(\"design:type\", Object)\n], MultiSelectTreeSummaryTagDirective.prototype, \"showAfter\", void 0);\nMultiSelectTreeSummaryTagDirective = __decorate([ __metadata(\"design:paramtypes\", [MultiSelectTreeComponent])\n], MultiSelectTreeSummaryTagDirective);\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 */\nlet DropDownTreesModule = class DropDownTreesModule {\n};\nDropDownTreesModule.ɵfac = function DropDownTreesModule_Factory(t) { return new (t || DropDownTreesModule)(); };\nDropDownTreesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DropDownTreesModule });\nDropDownTreesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule, TreeViewModule], SharedDirectivesModule] });\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 */\nlet SummaryTagDirective = class 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 = function SummaryTagDirective_Factory(t) { return new (t || SummaryTagDirective)(ɵngcc0.ɵɵdirectiveInject(MultiSelectComponent)); };\nSummaryTagDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SummaryTagDirective, selectors: [[\"\", \"kendoMultiSelectSummaryTag\", \"\"]], inputs: { showAfter: [\"kendoMultiSelectSummaryTag\", \"showAfter\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input('kendoMultiSelectSummaryTag'),\n __metadata(\"design:type\", Object)\n], SummaryTagDirective.prototype, \"showAfter\", void 0);\nSummaryTagDirective = __decorate([ __metadata(\"design:paramtypes\", [MultiSelectComponent])\n], SummaryTagDirective);\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 */\nlet AutoCompleteModule = class AutoCompleteModule {\n};\nAutoCompleteModule.ɵfac = function AutoCompleteModule_Factory(t) { return new (t || AutoCompleteModule)(); };\nAutoCompleteModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AutoCompleteModule });\nAutoCompleteModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule], SharedDirectivesModule] });\n\nconst COMBOBOX_DIRECTIVES = [\n ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective\n];\nconst ɵ0$4 = touchEnabled;\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 */\nlet ComboBoxModule = class ComboBoxModule {\n};\nComboBoxModule.ɵfac = function ComboBoxModule_Factory(t) { return new (t || ComboBoxModule)(); };\nComboBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ComboBoxModule });\nComboBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$4 }], imports: [[SharedModule], SharedDirectivesModule] });\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 */\nlet DropDownListModule = class DropDownListModule {\n};\nDropDownListModule.ɵfac = function DropDownListModule_Factory(t) { return new (t || DropDownListModule)(); };\nDropDownListModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DropDownListModule });\nDropDownListModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule], SharedDirectivesModule] });\n\nconst MULTISELECT_DIRECTIVES = [\n MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective\n];\nconst ɵ0$5 = touchEnabled;\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 */\nlet MultiSelectModule = class MultiSelectModule {\n};\nMultiSelectModule.ɵfac = function MultiSelectModule_Factory(t) { return new (t || MultiSelectModule)(); };\nMultiSelectModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MultiSelectModule });\nMultiSelectModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$5 }], imports: [[SharedModule], SharedDirectivesModule] });\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 */\nlet DropDownsModule = class DropDownsModule {\n};\nDropDownsModule.ɵfac = function DropDownsModule_Factory(t) { return new (t || DropDownsModule)(); };\nDropDownsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DropDownsModule });\nDropDownsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SearchBarComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-searchbar',\n template: `\n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Renderer2 }]; }, { 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 }], searchBarClass: [{\n type: HostBinding,\n args: ['class.k-searchbar']\n }], userInput: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], 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 }], suggestedText: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListHeaderTemplate],[kendoComboBoxHeaderTemplate],[kendoDropDownTreeHeaderTemplate],[kendoMultiColumnComboBoxHeaderTemplate],[kendoAutoCompleteHeaderTemplate],[kendoMultiSelectHeaderTemplate],[kendoMultiSelectTreeHeaderTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListGroupTemplate],[kendoComboBoxGroupTemplate],[kendoMultiColumnComboBoxGroupTemplate],[kendoAutoCompleteGroupTemplate],[kendoMultiSelectGroupTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FixedGroupTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListFixedGroupTemplate],[kendoComboBoxFixedGroupTemplate],[kendoMultiColumnComboBoxFixedGroupTemplate],[kendoAutoCompleteFixedGroupTemplate],[kendoMultiSelectFixedGroupTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectionService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DataService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DisabledItemsService, [{\n type: Injectable\n }], function () { return [{ type: DataService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: DisabledItemsService }, { type: SelectionService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NoDataTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListItemDirective, [{\n type: Directive,\n args: [{\n selector: '\"li[role=option], li[role=group]\"' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListComponent, [{\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='k-outer-group-header'\n [ngClass]=\"{ 'k-virtual-item': virtual }\"\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 {{ dataItem.value }} \n \n \n \n \n {{ getText(dataItem.value) }}\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n `\n }]\n }], function () { return [{ type: DataService }, { type: ɵngcc0.ElementRef }, { type: SelectionService }, { type: DisabledItemsService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { selected: [{\n type: Input\n }], focused: [{\n type: Input\n }], show: [{\n type: Input\n }], multipleSelection: [{\n type: Input\n }], listClass: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], onClick: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], listResize: [{\n type: Output\n }], data: [{\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 }], id: [{\n type: Input\n }], optionPrefix: [{\n type: Input\n }], virtual: [{\n type: Input\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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AutoCompleteComponent, [{\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_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent_1)\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
{{ noDataText }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: DataService }, { type: ɵngcc4.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { highlightFirst: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], filterable: [{\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 }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-autocomplete']\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], virtual: [{\n type: Input\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], valueField: [{\n type: Input\n }], loading: [{\n type: Input\n }], suggest: [{\n type: Input\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ComboBoxComponent, [{\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_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent_1)\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 \n
{{ noDataText }}
\n
\n
\n \n \n \n
\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc4.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { focusableId: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], suggest: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], filterable: [{\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 }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-combobox']\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], virtual: [{\n type: Input\n }], clearable: [{\n type: HostBinding,\n args: ['class.k-combobox-clearable']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], loading: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], iconClass: [{\n type: Input\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 }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], select: [{\n type: ViewChild,\n args: ['select', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ValueTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownListComponent, [{\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_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent_1)\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 {{ getDefaultItemText() }}\n
\n
\n \n
\n \n \n
\n
\n \n \n \n \n \n \n \n
\n \n \n \n
{{ noDataText }}
\n
\n
\n \n \n \n
\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc4.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { focusableId: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], ignoreCase: [{\n type: Input\n }], delay: [{\n type: Input\n }], tabindex: [{\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 }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-dropdown']\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], virtual: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], iconClass: [{\n type: Input\n }], loading: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], defaultItem: [{\n type: Input\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 }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectCustomItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupTagTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectGroupTagTemplate],[kendoMultiSelectTreeGroupTagTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectComponent, [{\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_1)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent_1)\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
{{ noDataText }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc4.PopupService }, { type: DataService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { focusableId: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], listHeight: [{\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 }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-multiselect']\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], placeholder: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], virtual: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], loading: [{\n type: Input\n }], valueField: [{\n type: Input\n }], textField: [{\n type: Input\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 }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { 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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnCellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnHeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnHeaderTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ComboBoxColumnComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-combobox-column',\n template: ''\n }]\n }], function () { return []; }, { hidden: [{\n type: Input\n }], 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 }], 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiColumnComboBoxComponent, [{\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_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent_1)\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 {{ 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
{{ noDataText }}
\n
\n \n\n \n \n
\n \n \n
\n
\n
\n\n \n \n\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc4.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: Boolean, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowngrid']\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], columns: [{\n type: ContentChildren,\n args: [ComboBoxColumnComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NodeTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeNodeTemplate], [kendoMultiSelectTreeNodeTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreeComponent, [{\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_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent_1)\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
{{ messageFor('noDataText') }}
\n
\n
\n
\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc4.PopupService }, { type: NavigationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }, {\n type: HostBinding,\n args: ['class.k-dropdowntree-clearable']\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 }], clearButton: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\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 }], itemDisabled: [{\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 }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], clearable: [{\n type: HostBinding,\n args: ['class.k-dropdowntree-clearable']\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], valueDepth: [{\n type: Input\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 }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], loading: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectTreeComponent, [{\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_1)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent_1)\n }\n ],\n selector: 'kendo-multiselecttree',\n template: `\n \n \n
\n \n \n \n {{ placeholder }}\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 }], function () { return [{ type: ɵngcc4.PopupService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: NavigationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }], valueDepth: [{\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 }], 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 }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], tabindex: [{\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 }], isNodeExpanded: [{\n type: Input\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 }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], checkAllInput: [{\n type: ViewChild,\n args: ['checkAllInput', { static: false }]\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], loading: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreeFlatBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeFlatBinding]'\n }]\n }], function () { return [{ type: ɵngcc6.DataBoundComponent }]; }, { nodes: [{\n type: Input,\n args: ['kendoDropDownTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreeHierarchyBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeHierarchyBinding]'\n }]\n }], function () { return [{ type: ɵngcc6.DataBoundComponent }]; }, { data: [{\n type: Input,\n args: ['kendoDropDownTreeHierarchyBinding']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectTreeFlatBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeFlatBinding]'\n }]\n }], function () { return [{ type: ɵngcc6.DataBoundComponent }]; }, { nodes: [{\n type: Input,\n args: ['kendoMultiSelectTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectTreeHierarchyBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeHierarchyBinding]'\n }]\n }], function () { return [{ type: ɵngcc6.DataBoundComponent }]; }, { data: [{\n type: Input,\n args: ['kendoMultiSelectTreeHierarchyBinding']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreesExpandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]'\n }]\n }], function () { return [{ type: ɵngcc6.ExpandableComponent }]; }, { isExpanded: [{\n type: Input,\n args: ['isNodeExpanded']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagListComponent, [{\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 }], function () { return []; }, { disabledIndices: [{\n type: Input\n }], removeTag: [{\n type: Output\n }], 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 }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: `\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1)\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 }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownFilter]'\n }]\n }], function () { return [{ type: FilterableComponent }]; }, { filterable: [{\n type: Input\n }], data: [{\n type: Input\n }], rawSettings: [{\n type: Input,\n args: ['kendoDropDownFilter']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterInputDirective, [{\n type: Directive,\n args: [{\n selector: '[filterInput]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { focused: [{\n type: Input,\n args: ['filterInput']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedDirectivesModule, [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedDirectivesModule, { declarations: [HeaderTemplateDirective, FooterTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, NoDataTemplateDirective, ValueTemplateDirective, TagTemplateDirective, GroupTagTemplateDirective, LocalizedMessagesDirective, CustomMessagesComponent, FilterDirective, FilterInputDirective], exports: [HeaderTemplateDirective, FooterTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, NoDataTemplateDirective, ValueTemplateDirective, TagTemplateDirective, GroupTagTemplateDirective, LocalizedMessagesDirective, CustomMessagesComponent, FilterDirective, FilterInputDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectableDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownsSelectable]'\n }]\n }], function () { return [{ type: SelectionService }]; }, { checkboxes: [{\n type: Input\n }], multipleSelection: [{\n type: Input\n }], focusedClassName: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], selectedClassName: [{\n type: HostBinding,\n args: ['class.k-state-selected']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], index: [{\n type: HostBinding,\n args: ['attr.index']\n }, {\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplateContextDirective, [{\n type: Directive,\n args: [{\n selector: '[templateContext]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { templateContext: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeCheckable]'\n }]\n }], function () { return [{ type: ɵngcc6.TreeViewComponent }]; }, { checkedItemsChange: [{\n type: Output\n }], checkable: [{\n type: Input\n }], valueField: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckAllDirective, [{\n type: Directive,\n args: [{\n selector: '[checkAll]' // tslint:disable-line\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }]; }, { checkedItemsChange: [{\n type: Output\n }], handleChange: [{\n type: HostListener,\n args: ['change', ['$event.target']]\n }], 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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: function () { return [ListComponent, ListItemDirective, SelectableDirective, SearchBarComponent, TemplateContextDirective, TagListComponent, CheckDirective, CheckAllDirective]; }, imports: function () { return [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]; }, exports: function () { return [ListComponent, ListItemDirective, SelectableDirective, SearchBarComponent, TemplateContextDirective, TagListComponent, CheckDirective, CheckAllDirective, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectTreeSummaryTagDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeSummaryTag]'\n }]\n }], function () { return [{ type: MultiSelectTreeComponent }]; }, { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectTreeSummaryTag']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownTreesModule, [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNTREE_DIRECTIVES],\n exports: [DROPDOWNTREE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule, TreeViewModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DropDownTreesModule, { declarations: function () { return [DropDownTreeComponent, MultiSelectTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, NodeTemplateDirective, MultiSelectTreeSummaryTagDirective]; }, imports: function () { return [SharedModule, TreeViewModule]; }, exports: function () { return [DropDownTreeComponent, MultiSelectTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, NodeTemplateDirective, MultiSelectTreeSummaryTagDirective, SharedDirectivesModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SummaryTagDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectSummaryTag]'\n }]\n }], function () { return [{ type: MultiSelectComponent }]; }, { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectSummaryTag']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AutoCompleteModule, [{\n type: NgModule,\n args: [{\n declarations: [AUTOCOMPLETE_DIRECTIVES],\n exports: [AUTOCOMPLETE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AutoCompleteModule, { declarations: [AutoCompleteComponent], imports: [SharedModule], exports: [AutoCompleteComponent, SharedDirectivesModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ComboBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [COMBOBOX_DIRECTIVES],\n exports: [COMBOBOX_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$4 }]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ComboBoxModule, { declarations: [ComboBoxComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnHeaderTemplateDirective, ColumnCellTemplateDirective], imports: [SharedModule], exports: [ComboBoxComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnHeaderTemplateDirective, ColumnCellTemplateDirective, SharedDirectivesModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownListModule, [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNLIST_DIRECTIVES],\n exports: [DROPDOWNLIST_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DropDownListModule, { declarations: [DropDownListComponent], imports: [SharedModule], exports: [DropDownListComponent, SharedDirectivesModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MultiSelectModule, [{\n type: NgModule,\n args: [{\n declarations: [MULTISELECT_DIRECTIVES],\n exports: [MULTISELECT_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: ɵ0$5 }]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MultiSelectModule, { declarations: [MultiSelectComponent, SummaryTagDirective, CustomItemTemplateDirective], imports: [SharedModule], exports: [MultiSelectComponent, SummaryTagDirective, CustomItemTemplateDirective, SharedDirectivesModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownsModule, [{\n type: NgModule,\n args: [{\n exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DropDownsModule, { exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTOCOMPLETE_VALUE_ACCESSOR, COMBOBOX_VALUE_ACCESSOR, TOUCH_ENABLED, DataService, DisabledItemsService, FilterInputDirective, FilterableComponent, ListItemDirective, CustomMessagesComponent, LocalizedMessagesDirective, Messages, NavigationService, SearchBarComponent, SelectionService, TagListComponent, NoDataTemplateDirective, TagTemplateDirective, DROPDOWNLIST_VALUE_ACCESSOR, BaseCheckDirective, CheckAllDirective, CheckDirective, MultiSelectTreeSummaryTagDirective, AutoCompleteComponent, ComboBoxComponent, DropDownListComponent, MultiSelectComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnCellTemplateDirective, ColumnHeaderTemplateDirective, DropDownTreeComponent, MultiSelectTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, DropDownTreesModule, NodeTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, CustomItemTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ValueTemplateDirective, TemplateContextDirective, GroupTagTemplateDirective, SelectableDirective, SummaryTagDirective, FilterDirective, DropDownsModule, MultiSelectModule, SharedModule, AutoCompleteModule, ComboBoxModule, DropDownListModule, SharedDirectivesModule, ListComponent, PreventableEvent, RemoveTagEvent };\n\n","import { not } from '../util/not';\nimport { filter } from './filter';\nexport function partition(predicate, thisArg) {\n return (source) => [filter(predicate, thisArg)(source), filter(not(predicate, thisArg))(source)];\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __param, __metadata } from 'tslib';\nimport { Inject, Optional, Input, ViewChild, ElementRef, Component, Injectable, EventEmitter, isDevMode, Output, HostBinding, ContentChild, ViewContainerRef, forwardRef, ChangeDetectorRef, NgZone, TemplateRef, Host, Directive, NgModule } from '@angular/core';\nimport { FormControl, Validators, FormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, BehaviorSubject, zip, fromEvent, merge, interval } from 'rxjs';\nimport { take, filter, auditTime, map, concatMap, takeUntil } from 'rxjs/operators';\nimport { ToolBarComponent, ToolBarToolComponent, ToolBarButtonComponent, ToolBarModule } from '@progress/kendo-angular-toolbar';\nimport { DialogContentBase, DialogRef, DialogService, DialogModule } from '@progress/kendo-angular-dialog';\nimport { isDocumentAvailable, guid, KendoInput, Keys } from '@progress/kendo-angular-common';\nimport { nodes, Schema, marks, Selection, SelectionRange, TextSelection, Fragment, Slice, NodeSelection, insertNode, expandToWordWrap, toggleInlineFormat, bold, cleanFormatting, applyLink, applyInlineStyle, insertText, italic, strikethrough, subscript, superscript, underline, removeLink, link, selectAll, isAligned, alignCenterRules, alignBlocks, alignRemoveRules, alignJustifyRules, alignLeftRules, alignRightRules, formatBlockElements, getHtml, indent, insertImage, toggleOrderedList, toggleUnorderedList, outdent, redo, setHtml, undo, hasMark, activeNode, canIndentAsListItem, canBeIndented, indentRules, hasNode, canOutdentAsListItem, outdentRules, getActiveMarks, expandSelection, addColumnBefore, addColumnAfter, addRowBefore, addRowAfter, deleteRow, deleteColumn, mergeCells, splitCell, deleteTable, getNodeFromSelection, getMark, getSelectionText, parseContent, Plugin, PluginKey, history, keymap, buildListKeymap, buildKeymap, baseKeymap, gapCursor, imageResizing, placeholder, EditorState, EditorView, hasSameMarkup, pasteCleanup, removeComments, sanitize, removeAttribute, sanitizeStyleAttr, sanitizeClassAttr } from '@progress/kendo-editor-common';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-dialog';\nimport * as ɵngcc2 from '@progress/kendo-angular-buttons';\nimport * as ɵngcc3 from '@angular/forms';\nimport * as ɵngcc4 from '@angular/common';\nimport * as ɵngcc5 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc6 from '@progress/kendo-angular-toolbar';\nimport * as ɵngcc7 from '@progress/kendo-angular-dropdowns';\nimport * as ɵngcc8 from '@progress/kendo-angular-inputs';\nimport * as ɵngcc9 from '@progress/kendo-angular-popup';\n\nconst _c0 = [\"textarea\"];\nconst _c1 = [\"srcInput\"];\nconst _c2 = [\"hrefInput\"];\nfunction FileLinkDialogComponent_ng_container_24_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"div\", 5);\n ɵngcc0.ɵɵelementStart(2, \"div\", 7);\n ɵngcc0.ɵɵelement(3, \"input\", 17);\n ɵngcc0.ɵɵelementStart(4, \"label\", 18);\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.textForWithPrefix(\"OpenInNewWindow\"));\n} }\nconst _c3 = [\"dialogsContainer\"];\nconst _c4 = [\"content\"];\nconst _c5 = [\"defaultToolbar\"];\nfunction EditorComponent_kendo_toolbar_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-toolbar\", 4, 5);\n ɵngcc0.ɵɵelementStart(2, \"kendo-toolbar-buttongroup\");\n ɵngcc0.ɵɵelement(3, \"kendo-toolbar-button\", 6);\n ɵngcc0.ɵɵelement(4, \"kendo-toolbar-button\", 7);\n ɵngcc0.ɵɵelement(5, \"kendo-toolbar-button\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(6, \"kendo-toolbar-dropdownlist\", 9);\n ɵngcc0.ɵɵelementStart(7, \"kendo-toolbar-buttongroup\");\n ɵngcc0.ɵɵelement(8, \"kendo-toolbar-button\", 10);\n ɵngcc0.ɵɵelement(9, \"kendo-toolbar-button\", 11);\n ɵngcc0.ɵɵelement(10, \"kendo-toolbar-button\", 12);\n ɵngcc0.ɵɵelement(11, \"kendo-toolbar-button\", 13);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(12, \"kendo-toolbar-buttongroup\");\n ɵngcc0.ɵɵelement(13, \"kendo-toolbar-button\", 14);\n ɵngcc0.ɵɵelement(14, \"kendo-toolbar-button\", 15);\n ɵngcc0.ɵɵelement(15, \"kendo-toolbar-button\", 16);\n ɵngcc0.ɵɵelement(16, \"kendo-toolbar-button\", 17);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(17, \"kendo-toolbar-buttongroup\");\n ɵngcc0.ɵɵelement(18, \"kendo-toolbar-button\", 18);\n ɵngcc0.ɵɵelement(19, \"kendo-toolbar-button\", 19);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(20, \"kendo-toolbar-button\", 20);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"overflow\", true)(\"tabindex\", ctx_r0.readonly ? -1 : 0);\n} }\nfunction EditorComponent_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 21, 22);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"dir\", ctx_r1.direction);\n} }\nfunction EditorComponent_div_4_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 21);\n ɵngcc0.ɵɵelementStart(1, \"iframe\", 23, 22);\n ɵngcc0.ɵɵlistener(\"load\", function EditorComponent_div_4_Template_iframe_load_1_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.iframeOnLoad(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c110 = [[[\"kendo-toolbar\"]]];\nconst _c111 = [\"kendo-toolbar\"];\nconst _c112 = [\"element\"];\nfunction FormatDropDownListComponent_ng_template_2_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nfunction FormatDropDownListComponent_ng_template_2_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 13);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nfunction FormatDropDownListComponent_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 14);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nfunction FormatDropDownListComponent_ng_template_2_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nfunction FormatDropDownListComponent_ng_template_2_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 16);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nfunction FormatDropDownListComponent_ng_template_2_span_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 17);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nfunction FormatDropDownListComponent_ng_template_2_span_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 18);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nfunction FormatDropDownListComponent_ng_template_2_span_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 18);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nfunction FormatDropDownListComponent_ng_template_2_span_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(dataItem_r2.text);\n} }\nfunction FormatDropDownListComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 3);\n ɵngcc0.ɵɵtemplate(1, FormatDropDownListComponent_ng_template_2_span_1_Template, 2, 1, \"span\", 4);\n ɵngcc0.ɵɵtemplate(2, FormatDropDownListComponent_ng_template_2_span_2_Template, 2, 1, \"span\", 5);\n ɵngcc0.ɵɵtemplate(3, FormatDropDownListComponent_ng_template_2_span_3_Template, 2, 1, \"span\", 6);\n ɵngcc0.ɵɵtemplate(4, FormatDropDownListComponent_ng_template_2_span_4_Template, 2, 1, \"span\", 7);\n ɵngcc0.ɵɵtemplate(5, FormatDropDownListComponent_ng_template_2_span_5_Template, 2, 1, \"span\", 8);\n ɵngcc0.ɵɵtemplate(6, FormatDropDownListComponent_ng_template_2_span_6_Template, 2, 1, \"span\", 9);\n ɵngcc0.ɵɵtemplate(7, FormatDropDownListComponent_ng_template_2_span_7_Template, 2, 1, \"span\", 10);\n ɵngcc0.ɵɵtemplate(8, FormatDropDownListComponent_ng_template_2_span_8_Template, 2, 1, \"span\", 10);\n ɵngcc0.ɵɵtemplate(9, FormatDropDownListComponent_ng_template_2_span_9_Template, 2, 1, \"span\", 11);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const dataItem_r2 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngSwitch\", dataItem_r2.tag);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"h1\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"h2\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"h3\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"h4\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"h5\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"h6\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"p\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"blockquote\");\n} }\nconst _c113 = [\"formatDropDownList\"];\nconst _c114 = [\"colorpicker\"];\nconst _c115 = function (a0) { return { \"font-family\": a0 }; };\nfunction FontFamilyDropDownListComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dataItem_r2 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngStyle\", ɵngcc0.ɵɵpureFunction1(2, _c115, dataItem_r2.fontName));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", dataItem_r2.text, \" \");\n} }\nconst _c116 = [\"fontFamilyDropDownList\"];\nconst _c117 = [\"toolbarTemplate\"];\nconst _c118 = [\"popupTemplate\"];\nconst _c119 = [\"formatButton\"];\nconst _c120 = [\"kendoEditorFormat\", \"\"];\nfunction EditorFormatComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-editor-format-dropdownlist\", 2, 3);\n ɵngcc0.ɵɵlistener(\"valueChange\", function EditorFormatComponent_ng_template_0_Template_kendo_editor_format_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.value = $event; })(\"valueChange\", function EditorFormatComponent_ng_template_0_Template_kendo_editor_format_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onValueChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx_r1.defaultItem)(\"data\", ctx_r1.data)(\"value\", ctx_r1.value)(\"itemDisabled\", ctx_r1.itemDisabled)(\"title\", ctx_r1.title)(\"disabled\", ctx_r1.disabled)(\"tabindex\", ctx_r1.tabindex);\n} }\nfunction EditorFormatComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4, 5);\n ɵngcc0.ɵɵlistener(\"click\", function EditorFormatComponent_ng_template_2_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.openDialog(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx_r3.tabindex)(\"icon\", \"apply-format\")(\"disabled\", ctx_r3.disabled)(\"tabindex\", ctx_r3.tabindex);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.title, \" \");\n} }\nconst _c121 = [\"fontSizeDropDownList\"];\nconst _c122 = [\"fontSizeButton\"];\nconst _c123 = [\"kendoEditorFontSize\", \"\"];\nfunction EditorFontSizeComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-editor-fontsize-dropdownlist\", 2, 3);\n ɵngcc0.ɵɵlistener(\"valueChange\", function EditorFontSizeComponent_ng_template_0_Template_kendo_editor_fontsize_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.value = $event; })(\"valueChange\", function EditorFontSizeComponent_ng_template_0_Template_kendo_editor_fontsize_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onValueChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx_r1.defaultItem)(\"data\", ctx_r1.data)(\"value\", ctx_r1.value)(\"itemDisabled\", ctx_r1.itemDisabled)(\"title\", ctx_r1.title)(\"disabled\", ctx_r1.disabled)(\"tabindex\", ctx_r1.tabindex);\n} }\nfunction EditorFontSizeComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4, 5);\n ɵngcc0.ɵɵlistener(\"click\", function EditorFontSizeComponent_ng_template_2_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.openDialog(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", \"font-size\")(\"disabled\", ctx_r3.disabled)(\"tabindex\", ctx_r3.tabindex);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.title, \" \");\n} }\nconst _c124 = [\"fontFamilyButton\"];\nconst _c125 = [\"kendoEditorFontFamily\", \"\"];\nfunction EditorFontFamilyComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-editor-fontfamily-dropdownlist\", 2, 3);\n ɵngcc0.ɵɵlistener(\"valueChange\", function EditorFontFamilyComponent_ng_template_0_Template_kendo_editor_fontfamily_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.value = $event; })(\"valueChange\", function EditorFontFamilyComponent_ng_template_0_Template_kendo_editor_fontfamily_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onValueChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx_r1.defaultItem)(\"data\", ctx_r1.data)(\"value\", ctx_r1.value)(\"itemDisabled\", ctx_r1.itemDisabled)(\"title\", ctx_r1.title)(\"disabled\", ctx_r1.disabled)(\"tabindex\", ctx_r1.tabindex);\n} }\nfunction EditorFontFamilyComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4, 5);\n ɵngcc0.ɵɵlistener(\"click\", function EditorFontFamilyComponent_ng_template_2_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.openDialog(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", \"font-family\")(\"disabled\", ctx_r3.disabled)(\"tabindex\", ctx_r3.tabindex);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.title, \" \");\n} }\nconst _c126 = [\"colorPickerButton\"];\nfunction EditorColorPickerComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-colorpicker\", 2, 3);\n ɵngcc0.ɵɵlistener(\"valueChange\", function EditorColorPickerComponent_ng_template_0_Template_kendo_colorpicker_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.handleValueChange($event); })(\"activeColorClick\", function EditorColorPickerComponent_ng_template_0_Template_kendo_colorpicker_activeColorClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.handleActiveColorClick($event); })(\"open\", function EditorColorPickerComponent_ng_template_0_Template_kendo_colorpicker_open_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const _r4 = ɵngcc0.ɵɵreference(1); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onOpen(_r4); })(\"close\", function EditorColorPickerComponent_ng_template_0_Template_kendo_colorpicker_close_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const _r4 = ɵngcc0.ɵɵreference(1); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClose(_r4); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"view\", ctx_r1.view)(\"format\", \"hex\")(\"icon\", ctx_r1.icon)(\"value\", ctx_r1.value)(\"paletteSettings\", ctx_r1.paletteSettings)(\"disabled\", ctx_r1.disabled)(\"tabindex\", ctx_r1.tabindex);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r1.title);\n} }\nfunction EditorColorPickerComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4, 5);\n ɵngcc0.ɵɵlistener(\"click\", function EditorColorPickerComponent_ng_template_2_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.openDialog(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", ctx_r3.icon)(\"disabled\", ctx_r3.disabled)(\"tabindex\", ctx_r3.tabindex);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.title, \" \");\n} }\nconst _c127 = [\"overflowElement\"];\nconst _c128 = [\"popupGridTemplate\"];\nfunction EditorInsertTableButtonComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 3, 4);\n ɵngcc0.ɵɵlistener(\"click\", function EditorInsertTableButtonComponent_ng_template_0_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.toggle(); })(\"blur\", function EditorInsertTableButtonComponent_ng_template_0_Template_button_blur_0_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onBlur(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", \"table-insert\")(\"disabled\", ctx_r1.disabled);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r1.title)(\"tabindex\", ctx_r1.tabIndex);\n} }\nfunction EditorInsertTableButtonComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 5, 6);\n ɵngcc0.ɵɵlistener(\"click\", function EditorInsertTableButtonComponent_ng_template_2_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.openDialog(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", \"table-insert\")(\"disabled\", ctx_r3.disabled);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.title)(\"tabindex\", ctx_r3.tabIndex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.title, \" \");\n} }\nfunction EditorInsertTableButtonComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n const _r14 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-popup-table-grid\", 7);\n ɵngcc0.ɵɵlistener(\"cellClick\", function EditorInsertTableButtonComponent_ng_template_4_Template_kendo_popup_table_grid_cellClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onCellClick($event); })(\"tableWizardClick\", function EditorInsertTableButtonComponent_ng_template_4_Template_kendo_popup_table_grid_tableWizardClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.onTableWizardClick(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction PopupTableGridComponent_span_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function PopupTableGridComponent_span_1_Template_span_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const i_r1 = restoredCtx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.setState(i_r1); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const i_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-state-selected\", ctx_r0.selected(i_r1))(\"k-state-disabled\", !ctx_r0.selected(i_r1));\n} }\nexport { Schema, EditorState, Plugin, PluginKey, Transaction, EditorView, Decoration, DecorationSet, NodeType, Node, MarkType, Mark, InputRule, inputRules, wrappingInputRule, textblockTypeInputRule, keymap, baseKeymap, history, dropCursor, gapCursor, tableNodes, getSelectionText } from '@progress/kendo-editor-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { LocalizationService, L10N_PREFIX, RTL, MessageService, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { CommonModule } from '@angular/common';\nimport { DropDownListComponent, DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { ButtonModule } from '@progress/kendo-angular-buttons';\nimport { ColorPickerComponent, ColorPickerModule, NumericTextBoxModule, TextBoxModule } from '@progress/kendo-angular-inputs';\nimport { PopupService } from '@progress/kendo-angular-popup';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-editor',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1638198421,\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 hasAttrs = (attrs, exclude) => {\n for (let attr in attrs) {\n if (attr && attrs[attr] !== null && attr !== exclude) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n */\nconst getAttrs = (attrs, exclude) => {\n const result = {};\n for (let attr in attrs) {\n if (attr && attrs[attr] !== null && attr !== exclude) {\n result[attr] = attrs[attr];\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nconst getAttributes = (dom) => {\n const result = {};\n let attributes = dom.attributes, attr;\n for (let i = 0; i < attributes.length; i++) {\n attr = attributes[i];\n result[attr.name] = attr.value;\n }\n return result;\n};\n/**\n * @hidden\n */\nconst serializeDOMAttrs = (el) => Array.from(el.attributes)\n .reduce((acc, curr) => Object.assign({}, acc, { [curr.name]: curr.value }), {});\n/**\n * @hidden\n */\nconst commonAttributes = () => {\n return Object.assign({}, createDefaultAttributes(['class', 'id', 'style']));\n};\n/**\n * @hidden\n */\nconst createDefaultAttributes = (attrs = []) => {\n return Object.assign({}, attrs.reduce((acc, curr) => (Object.assign({}, acc, { [curr]: { default: null } })), {}));\n};\n/**\n * @hidden\n */\nconst hole = 0;\n/**\n * @hidden\n */\nconst isSchemaNode = (schemaNodeName) => (node) => node.type.name === schemaNodeName;\n/**\n * @hidden\n */\nconst isTable = isSchemaNode('table');\n/**\n * @hidden\n */\nconst isTableBody = isSchemaNode('table_body');\n/**\n * @hidden\n */\nconst isTableHead = isSchemaNode('table_head');\n/**\n * @hidden\n */\nconst isTableFoot = isSchemaNode('table_foot');\n/**\n * @hidden\n */\nconst isTableRow = isSchemaNode('table_row');\n/**\n * @hidden\n */\nconst isTableCell = isSchemaNode('table_cell');\n/**\n * @hidden\n */\nconst isTableHeaderCell = isSchemaNode('table_header');\n\nconst createSemanticNode = (tagName) => ({\n // Uncaught SyntaxError: Mixing inline and block content (in content expression '(block | inline)*')\n // content: '(block | inline)*',\n content: 'block*',\n group: 'block',\n attrs: Object.assign({}, commonAttributes()),\n parseDOM: [{\n tag: tagName,\n getAttrs: getAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? [tagName, getAttrs(node.attrs), hole] : [tagName, hole]\n});\n/**\n * @hidden\n */\nconst semanticTagNames = ['article', 'main', 'nav', 'header', 'footer', 'aside', 'section'];\nconst ɵ1 = (acc, curr) => Object.assign(acc, { [curr]: createSemanticNode(curr) });\n/**\n * @hidden\n */\nconst semanticNodes = semanticTagNames.reduce(ɵ1, {});\n\n/**\n * @hidden\n */\nfunction outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseFloat(style.marginLeft) || 0 + parseFloat(style.marginRight) || 0;\n return width;\n}\n/**\n * @hidden\n */\nconst removeEntries = (obj, predicate) => Object.keys(obj)\n .filter(key => predicate(key))\n .reduce((acc, curr) => Object.assign(acc, { [curr]: obj[curr] }), {});\n/**\n * @hidden\n */\nconst removeEmptyEntries = (obj) => {\n const predicate = key => obj[key] !== null && obj[key] !== undefined && obj[key] !== '';\n return removeEntries(obj, predicate);\n};\n/**\n * @hidden\n */\nconst isNullOrUndefined = (value) => value === undefined || value === null;\n/**\n * @hidden\n */\nconst isPresent = (value) => !isNullOrUndefined(value);\n/**\n * @hidden\n */\nconst detectIE = () => {\n if (!isDocumentAvailable()) {\n return false;\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 safeString = (value) => (isNullOrUndefined(value) ? '' : value.toString());\n/**\n * @hidden\n */\nconst first = (arr) => arr[0];\n/**\n * @hidden\n */\nconst last = (arr) => arr[arr.length - 1];\n/**\n * @hidden\n */\nconst split = (splitter) => (value) => value.split(splitter);\n/**\n * @hidden\n */\nconst trim = (value) => value.trim();\n/**\n * @hidden\n */\nconst filter$1 = (predicate) => (arr) => arr.filter(predicate);\n/**\n * @hidden\n */\nconst getUniqueStyleValues = (style, cssStyle) => {\n if (style.hasNodesWithoutMarks) {\n return '';\n }\n const uniqueMarkValues = style.marks\n .filter(m => m.type.name === 'style')\n .map(m => m.attrs.style)\n .map(safeString)\n .map(split(';'))\n .map(filter$1((m) => m.includes(cssStyle)))\n // guards against empty array\n .map((cssStyleValues) => (cssStyleValues.length !== 0 ? cssStyleValues : [`${cssStyle}: INVALID`]))\n .map(first)\n .map(split(':'))\n .map(last)\n .map(trim)\n .reduce((acc, curr) => (acc.indexOf(curr) > -1 ? acc : [...acc, curr]), []);\n if (uniqueMarkValues.indexOf('INVALID') > -1 || uniqueMarkValues.length !== 1) {\n return '';\n }\n return uniqueMarkValues[0];\n};\n/**\n * @hidden\n */\nconst conditionallyExecute = (fn) => (condition) => (param) => (condition ? fn(param) : param);\n/**\n * @hidden\n */\nconst pipe = (...fns) => x => fns.reduce((y, f) => f(y), x);\n\nconst setCellAttrs = nodeAttributes => {\n let attrs = Object.assign({}, nodeAttributes);\n if (nodeAttributes.colspan !== 1) {\n attrs.colspan = nodeAttributes.colspan;\n }\n else {\n attrs.colspan = null;\n }\n if (nodeAttributes.rowspan !== 1) {\n attrs.rowspan = nodeAttributes.rowspan;\n }\n else {\n attrs.rowspan = null;\n }\n return removeEmptyEntries(attrs);\n};\nconst ɵ1$1 = node => ['table', removeEmptyEntries(node.attrs), 0], ɵ2 = node => ['tr', removeEmptyEntries(node.attrs), 0], ɵ3 = node => ['td', setCellAttrs(node.attrs), 0], ɵ4 = node => ['th', setCellAttrs(node.attrs), 0], ɵ5 = node => ['tbody', removeEmptyEntries(node.attrs), 0], ɵ6 = node => ['tfoot', removeEmptyEntries(node.attrs), 0], ɵ7 = node => ['thead', removeEmptyEntries(node.attrs), 0], ɵ8 = node => ['col', removeEmptyEntries(node.attrs)], ɵ9 = node => ['colgroup', removeEmptyEntries(node.attrs), 0];\n/**\n * @hidden\n */\nconst tableNodes = {\n // all table node names must start with table - this is needed for the commands to work properly\n table: {\n attrs: Object.assign({}, commonAttributes(), createDefaultAttributes(['cellspacing', 'cellpadding'])),\n content: '(table_body | table_head | table_foot | table_colgroup)+',\n tableRole: 'table',\n isolating: true,\n group: 'block',\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'table'\n }\n ],\n toDOM: ɵ1$1\n },\n table_row: {\n content: '(table_cell | table_header)*',\n attrs: Object.assign({}, commonAttributes()),\n tableRole: 'row',\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'tr'\n }\n ],\n toDOM: ɵ2\n },\n table_cell: {\n content: 'block+',\n attrs: Object.assign({}, commonAttributes(), createDefaultAttributes(['headers']), { \n // this is needed for the commands\n colspan: { default: 1 }, rowspan: { default: 1 } }),\n tableRole: 'cell',\n isolating: true,\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'td'\n }\n ],\n toDOM: ɵ3\n },\n table_header: {\n content: 'block+',\n attrs: Object.assign({}, commonAttributes(), createDefaultAttributes(['headers', 'abbr', 'scope']), { colspan: { default: 1 }, rowspan: { default: 1 } }),\n tableRole: 'header_cell',\n isolating: true,\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'th'\n }\n ],\n toDOM: ɵ4\n },\n table_body: {\n attrs: Object.assign({}, commonAttributes()),\n content: 'table_row+',\n isolating: true,\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'tbody'\n }\n ],\n toDOM: ɵ5\n },\n table_foot: {\n attrs: Object.assign({}, commonAttributes()),\n content: 'table_row+',\n isolating: true,\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'tfoot'\n }\n ],\n toDOM: ɵ6\n },\n table_head: {\n attrs: Object.assign({}, commonAttributes()),\n content: 'table_row+',\n isolating: true,\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'thead'\n }\n ],\n toDOM: ɵ7\n },\n table_col: {\n attrs: Object.assign({}, commonAttributes(), createDefaultAttributes(['span'])),\n selectable: false,\n atom: true,\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'col'\n }\n ],\n toDOM: ɵ8\n },\n table_colgroup: {\n attrs: Object.assign({}, commonAttributes(), createDefaultAttributes(['span'])),\n content: 'table_col*',\n selectable: false,\n parseDOM: [\n {\n getAttrs: serializeDOMAttrs,\n tag: 'colgroup'\n }\n ],\n toDOM: ɵ9\n }\n};\n\n/**\n * @hidden\n */\nconst marks$1 = marks;\nconst nodes$1 = Object.assign(nodes, tableNodes, semanticNodes);\n/**\n * @hidden\n */\nconst schema = new Schema({\n marks: marks$1,\n nodes: Object.assign({}, nodes$1, { blockquote: Object.assign({}, nodes$1.blockquote, { content: 'inline*' }) })\n});\n\n// Because working with row and column-spanning cells is not quite\n// trivial, this code builds up a descriptive structure for a given\n// table node. The structures are cached with the (persistent) table\n// nodes as key, so that they only have to be recomputed when the\n// content of the table changes.\n//\n// This does mean that they have to store table-relative, not\n// document-relative positions. So code that uses them will typically\n// compute the start position of the table and offset positions passed\n// to or gotten from this structure by that amount.\nlet readFromCache;\nlet addToCache;\n// Prefer using a weak map to cache table maps. Fall back on a\n// fixed-size cache if that's not supported.\nif (typeof WeakMap !== 'undefined') {\n let cache = new WeakMap();\n readFromCache = key => cache.get(key);\n addToCache = (key, value) => {\n cache.set(key, value);\n return value;\n };\n}\nelse {\n let cache = [];\n let cacheSize = 10;\n let cachePos = 0;\n readFromCache = key => {\n for (let i = 0; i < cache.length; i += 2) {\n if (cache[i] === key) {\n return cache[i + 1];\n }\n }\n };\n addToCache = (key, value) => {\n if (cachePos === cacheSize) {\n cachePos = 0;\n }\n cache[cachePos++] = key;\n return (cache[cachePos++] = value);\n };\n}\nconst findWidth = (table) => {\n let width = -1;\n let hasRowSpan = false;\n for (let row = 0; row < table.childCount; row++) {\n const rowNode = table.child(row);\n let rowWidth = 0;\n if (hasRowSpan) {\n for (let j = 0; j < row; j++) {\n const prevRow = table.child(j);\n for (let i = 0; i < prevRow.childCount; i++) {\n const cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row) {\n rowWidth += cell.attrs.colspan;\n }\n }\n }\n }\n // check if the cell spans accross multiple columns\n for (let i = 0; i < rowNode.childCount; i++) {\n const cell = rowNode.child(i);\n rowWidth += cell.attrs.colspan;\n if (cell.attrs.rowspan > 1) {\n hasRowSpan = true;\n }\n }\n if (width === -1) {\n width = rowWidth;\n }\n else if (width !== rowWidth) {\n width = Math.max(width, rowWidth);\n }\n }\n return width;\n};\nconst freshColWidth = attrs => {\n if (attrs.colwidth) {\n return attrs.colwidth.slice();\n }\n const result = [];\n for (let i = 0; i < attrs.colspan; i++) {\n result.push(0);\n }\n return result;\n};\nconst findBadColWidths = (map$$1, colWidths, table) => {\n if (!map$$1.problems) {\n map$$1.problems = [];\n }\n for (let i = 0, seen = {}; i < map$$1.map.length; i++) {\n const pos = map$$1.map[i];\n if (seen[pos]) {\n continue;\n }\n seen[pos] = true;\n let node = table.nodeAt(pos);\n let updated = null;\n for (let j = 0; j < node.attrs.colspan; j++) {\n const col = (i + j) % map$$1.width;\n const colWidth = colWidths[col * 2];\n if (colWidth != null && (!node.attrs.colwidth || node.attrs.colwidth[j] !== colWidth)) {\n (updated || (updated = freshColWidth(node.attrs)))[j] = colWidth;\n }\n }\n if (updated) {\n map$$1.problems.unshift({ type: 'colwidth mismatch', pos, colwidth: updated });\n }\n }\n};\n// Compute a table map.\nconst computeMap = tableNode => {\n if (!isTable(tableNode) && !isTableBody(tableNode) && !isTableHead(tableNode) && !isTableFoot(tableNode)) {\n throw new RangeError('Not a table node: ' + tableNode.type.name);\n }\n const width = findWidth(tableNode);\n const height = tableNode.childCount;\n const map$$1 = [];\n let mapPos = 0;\n let problems = null;\n const colWidths = [];\n for (let i = 0, e = width * height; i < e; i++) {\n map$$1[i] = 0;\n }\n for (let row = 0, pos = 0; row < height; row++) {\n const rowNode = tableNode.child(row);\n pos++;\n for (let i = 0;; i++) {\n while (mapPos < map$$1.length && map$$1[mapPos] !== 0) {\n mapPos++;\n }\n if (i === rowNode.childCount) {\n break;\n }\n const cellNode = rowNode.child(i);\n const { colspan, rowspan, colwidth } = cellNode.attrs;\n for (let h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({ type: 'overlong_rowspan', pos, n: rowspan - h });\n break;\n }\n const start = mapPos + h * width;\n for (let w = 0; w < colspan; w++) {\n if (map$$1[start + w] === 0) {\n map$$1[start + w] = pos;\n }\n else {\n (problems || (problems = [])).push({ type: 'collision', row, pos, n: colspan - w });\n }\n const colW = colwidth && colwidth[w];\n if (colW) {\n const widthIndex = ((start + w) % width) * 2, prev = colWidths[widthIndex];\n if (prev == null || (prev !== colW && colWidths[widthIndex + 1] === 1)) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n }\n else if (prev === colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n const expectedPos = (row + 1) * width;\n let missing = 0;\n while (mapPos < expectedPos) {\n if (map$$1[mapPos++] === 0) {\n missing++;\n }\n }\n if (missing) {\n (problems || (problems = [])).push({ type: 'missing', row, n: missing });\n }\n pos++;\n }\n const tableMap = new TableMap(width, height, map$$1, problems);\n let badWidths = false;\n // For columns that have defined widths, but whose widths disagree\n // between rows, fix up the cells whose width doesn't match the\n // computed one.\n for (let i = 0; !badWidths && i < colWidths.length; i += 2) {\n if (colWidths[i] != null && colWidths[i + 1] < height) {\n badWidths = true;\n }\n }\n if (badWidths) {\n findBadColWidths(tableMap, colWidths, tableNode);\n }\n return tableMap;\n};\n/**\n * @hidden\n */\nclass Rect {\n constructor(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n}\n/**\n * @hidden\n */\nclass TableMap {\n // :: (Node) → TableMap\n // Find the table map for the given table node.\n static get(table) {\n return readFromCache(table) || addToCache(table, computeMap(table));\n }\n constructor(width, height, map$$1, problems) {\n // :: number The width of the table\n this.width = width;\n // :: number The table's height\n this.height = height;\n // :: [number] A width * height array with the start position of\n // the cell covering that part of the table in each slot\n this.map = map$$1;\n // An optional array of problems (cell overlap or non-rectangular\n // shape) for the table, used by the table normalizer.\n this.problems = problems;\n }\n // :: (number) → Rect\n // Find the dimensions of the cell at the given position.\n findCell(pos) {\n for (let i = 0; i < this.map.length; i++) {\n const curPos = this.map[i];\n if (curPos !== pos) {\n continue;\n }\n const left = i % this.width;\n const top = Math.floor(i / this.width);\n let right = left + 1;\n let bottom = top + 1;\n for (let j = 1; right < this.width && this.map[i + j] === curPos; j++) {\n right++;\n }\n for (let j = 1; bottom < this.height && this.map[i + this.width * j] === curPos; j++) {\n bottom++;\n }\n return new Rect(left, top, right, bottom);\n }\n throw new RangeError('No cell with offset ' + pos + ' found');\n }\n // :: (number) → number\n // Find the left side of the cell at the given position.\n colCount(pos) {\n for (let i = 0; i < this.map.length; i++) {\n if (this.map[i] === pos) {\n return i % this.width;\n }\n }\n throw new RangeError('No cell with offset ' + pos + ' found');\n }\n // :: (number, string, number) → ?number\n // Find the next cell in the given direction, starting from the cell\n // at `pos`, if any.\n nextCell(pos, axis, dir) {\n const { left, right, top, bottom } = this.findCell(pos);\n if (axis === 'horiz') {\n if (dir < 0 ? left === 0 : right === this.width) {\n return null;\n }\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)];\n }\n else {\n if (dir < 0 ? top === 0 : bottom === this.height) {\n return null;\n }\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)];\n }\n }\n // :: (number, number) → Rect\n // Get the rectangle spanning the two given cells.\n rectBetween(a, b) {\n const { left: leftA, right: rightA, top: topA, bottom: bottomA } = this.findCell(a);\n const { left: leftB, right: rightB, top: topB, bottom: bottomB } = this.findCell(b);\n return new Rect(Math.min(leftA, leftB), Math.min(topA, topB), Math.max(rightA, rightB), Math.max(bottomA, bottomB));\n }\n // :: (Rect) → [number]\n // Return the position of all cells that have the top left corner in\n // the given rectangle.\n cellsInRect(rect) {\n const result = [];\n const seen = {};\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const index = row * this.width + col, pos = this.map[index];\n if (seen[pos]) {\n continue;\n }\n seen[pos] = true;\n if ((col !== rect.left || !col || this.map[index - 1] !== pos) &&\n (row !== rect.top || !row || this.map[index - this.width] !== pos)) {\n result.push(pos);\n }\n }\n }\n return result;\n }\n // :: (number, number, Node) → number\n // Return the position at which the cell at the given row and column\n // starts, or would start, if a cell started there.\n positionAt(row, col, table) {\n for (let i = 0, rowStart = 0;; i++) {\n const rowEnd = rowStart + table.child(i).nodeSize;\n if (i === row) {\n let index = col + row * this.width, rowEndIndex = (row + 1) * this.width;\n // Skip past cells from previous rows (via rowspan)\n while (index < rowEndIndex && this.map[index] < rowStart) {\n index++;\n }\n return index === rowEndIndex ? rowEnd - 1 : this.map[index];\n }\n rowStart = rowEnd;\n }\n }\n}\n\n/**\n * @hidden\n */\n// ::- A [`Selection`](http://prosemirror.net/docs/ref/#state.Selection)\n// subclass that represents a cell selection spanning part of a table.\n// With the plugin enabled, these will be created when the user\n// selects across cells, and will be drawn by giving selected cells a\n// `selectedCell` CSS class.\nclass CellSelection extends Selection {\n // :: (ResolvedPos, ?ResolvedPos) → CellSelection\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n static colSelection($anchorCell, $headCell = $anchorCell) {\n let map$$1 = TableMap.get($anchorCell.node(-1));\n let start = $anchorCell.start(-1);\n let anchorRect = map$$1.findCell($anchorCell.pos - start);\n let headRect = map$$1.findCell($headCell.pos - start);\n let doc = $anchorCell.node(0);\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0) {\n $anchorCell = doc.resolve(start + map$$1.map[anchorRect.left]);\n }\n if (headRect.bottom < map$$1.height) {\n $headCell = doc.resolve(start + map$$1.map[map$$1.width * (map$$1.height - 1) + headRect.right - 1]);\n }\n }\n else {\n if (headRect.top > 0) {\n $headCell = doc.resolve(start + map$$1.map[headRect.left]);\n }\n if (anchorRect.bottom < map$$1.height) {\n $anchorCell = doc.resolve(start + map$$1.map[map$$1.width * (map$$1.height - 1) + anchorRect.right - 1]);\n }\n }\n return new CellSelection($anchorCell, $headCell);\n }\n // :: (ResolvedPos, ?ResolvedPos) → CellSelection\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n static rowSelection($anchorCell, $headCell = $anchorCell) {\n let map$$1 = TableMap.get($anchorCell.node(-1));\n let start = $anchorCell.start(-1);\n let anchorRect = map$$1.findCell($anchorCell.pos - start);\n let headRect = map$$1.findCell($headCell.pos - start);\n let doc = $anchorCell.node(0);\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0) {\n $anchorCell = doc.resolve(start + map$$1.map[anchorRect.top * map$$1.width]);\n }\n if (headRect.right < map$$1.width) {\n $headCell = doc.resolve(start + map$$1.map[map$$1.width * (headRect.top + 1) - 1]);\n }\n }\n else {\n if (headRect.left > 0) {\n $headCell = doc.resolve(start + map$$1.map[headRect.top * map$$1.width]);\n }\n if (anchorRect.right < map$$1.width) {\n $anchorCell = doc.resolve(start + map$$1.map[map$$1.width * (anchorRect.top + 1) - 1]);\n }\n }\n return new CellSelection($anchorCell, $headCell);\n }\n static fromJSON(doc, json) {\n return new CellSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n // :: (Node, number, ?number) → CellSelection\n static create(doc, anchorCell, headCell = anchorCell) {\n return new CellSelection(doc.resolve(anchorCell), doc.resolve(headCell));\n }\n // :: (ResolvedPos, ?ResolvedPos)\n // A table selection is identified by its anchor and head cells. The\n // positions given to this constructor should point _before_ two\n // cells in the same table. They may be the same, to select a single\n // cell.\n constructor($anchorCell, $headCell = $anchorCell) {\n let table = $anchorCell.node(-1), map$$1 = TableMap.get(table), start = $anchorCell.start(-1);\n let rect = map$$1.rectBetween($anchorCell.pos - start, $headCell.pos - start);\n let doc = $anchorCell.node(0);\n let cells = map$$1.cellsInRect(rect).filter(p => p !== $headCell.pos - start);\n // Make the head cell the first range, so that it counts as the\n // primary part of the selection\n cells.unshift($headCell.pos - start);\n let ranges = cells.map(pos => {\n let cell = table.nodeAt(pos), from = pos + start + 1;\n return new SelectionRange(doc.resolve(from), doc.resolve(from + cell.content.size));\n });\n super(ranges[0].$from, ranges[0].$to, ranges);\n // :: ResolvedPos\n // A resolved position pointing _in front of_ the anchor cell (the one\n // that doesn't move when extending the selection).\n this.$anchorCell = $anchorCell;\n // :: ResolvedPos\n // A resolved position pointing in front of the head cell (the one\n // moves when extending the selection).\n this.$headCell = $headCell;\n }\n map(doc, mapping) {\n let $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n let $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (pointsAtCell($anchorCell) && pointsAtCell($headCell) && inSameTable($anchorCell, $headCell)) {\n let tableChanged = this.$anchorCell.node(-1) !== $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection()) {\n return CellSelection.rowSelection($anchorCell, $headCell);\n }\n else {\n if (tableChanged && this.isColSelection()) {\n return CellSelection.colSelection($anchorCell, $headCell);\n }\n else {\n return new CellSelection($anchorCell, $headCell);\n }\n }\n }\n return TextSelection.between($anchorCell, $headCell);\n }\n // :: () → Slice\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n content() {\n let table = this.$anchorCell.node(-1), map$$1 = TableMap.get(table), start = this.$anchorCell.start(-1);\n let rect = map$$1.rectBetween(this.$anchorCell.pos - start, this.$headCell.pos - start);\n let seen = {}, rows = [];\n for (let row = rect.top; row < rect.bottom; row++) {\n let rowContent = [];\n for (let index = row * map$$1.width + rect.left, col = rect.left; col < rect.right; col++, index++) {\n let pos = map$$1.map[index];\n if (!seen[pos]) {\n seen[pos] = true;\n let cellRect = map$$1.findCell(pos), cell = table.nodeAt(pos);\n let extraLeft = rect.left - cellRect.left, extraRight = cellRect.right - rect.right;\n if (extraLeft > 0 || extraRight > 0) {\n let attrs = cell.attrs;\n if (extraLeft > 0) {\n attrs = removeColSpan(attrs, 0, extraLeft);\n }\n if (extraRight > 0) {\n attrs = removeColSpan(attrs, attrs.colspan - extraRight, extraRight);\n }\n if (cellRect.left < rect.left) {\n cell = cell.type.createAndFill(attrs);\n }\n else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n let attrs = setAttr(cell.attrs, 'rowspan', Math.min(cellRect.bottom, rect.bottom) - Math.max(cellRect.top, rect.top));\n if (cellRect.top < rect.top) {\n cell = cell.type.createAndFill(attrs);\n }\n else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n rowContent.push(cell);\n }\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n const fragment = this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1);\n }\n replace(tr, content = Slice.empty) {\n let mapFrom = tr.steps.length;\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let mapping = tr.mapping.slice(mapFrom);\n tr.replace(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n }\n let sel = Selection.findFrom(tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)), -1);\n if (sel) {\n tr.setSelection(sel);\n }\n }\n replaceWith(tr, node) {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n }\n forEachCell(f) {\n let table = this.$anchorCell.node(-1);\n let map$$1 = TableMap.get(table);\n let start = this.$anchorCell.start(-1);\n let cells = map$$1.cellsInRect(map$$1.rectBetween(this.$anchorCell.pos - start, this.$headCell.pos - start));\n for (let i = 0; i < cells.length; i++) {\n f(table.nodeAt(cells[i]), start + cells[i]);\n }\n }\n // :: () → bool\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n isColSelection() {\n let anchorTop = this.$anchorCell.index(-1), headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0) {\n return false;\n }\n let anchorBot = anchorTop + this.$anchorCell.nodeAfter.attrs.rowspan;\n let headBot = headTop + this.$headCell.nodeAfter.attrs.rowspan;\n return Math.max(anchorBot, headBot) === this.$headCell.node(-1).childCount;\n }\n // :: () → bool\n // True if this selection goes all the way from the left to the\n // right of the table.\n isRowSelection() {\n let map$$1 = TableMap.get(this.$anchorCell.node(-1));\n let start = this.$anchorCell.start(-1);\n let anchorLeft = map$$1.colCount(this.$anchorCell.pos - start);\n let headLeft = map$$1.colCount(this.$headCell.pos - start);\n if (Math.min(anchorLeft, headLeft) > 0) {\n return false;\n }\n let anchorRight = anchorLeft + this.$anchorCell.nodeAfter.attrs.colspan;\n let headRight = headLeft + this.$headCell.nodeAfter.attrs.colspan;\n return Math.max(anchorRight, headRight) === map$$1.width;\n }\n eq(other) {\n return (other instanceof CellSelection && other.$anchorCell.pos === this.$anchorCell.pos && other.$headCell.pos === this.$headCell.pos);\n }\n toJSON() {\n return { type: 'cell', anchor: this.$anchorCell.pos, head: this.$headCell.pos };\n }\n getBookmark() {\n return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos);\n }\n}\nCellSelection.prototype.visible = false;\nSelection.jsonID('table_cell', CellSelection);\nclass CellBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new CellBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n let $anchorCell = doc.resolve(this.anchor), $headCell = doc.resolve(this.head);\n if ($anchorCell.parent.type.spec.tableRole === 'row' &&\n $headCell.parent.type.spec.tableRole === 'row' &&\n $anchorCell.index() < $anchorCell.parent.childCount &&\n $headCell.index() < $headCell.parent.childCount &&\n inSameTable($anchorCell, $headCell)) {\n return new CellSelection($anchorCell, $headCell);\n }\n else {\n return Selection.near($headCell, 1);\n }\n }\n}\n\n/**\n * @hidden\n */\nconst findParentNodeClosestToPos = ($pos, predicate) => {\n for (let i = $pos.depth; i > 0; i--) {\n const node = $pos.node(i);\n if (predicate(node)) {\n return {\n start: $pos.start(i),\n pos: i > 0 ? $pos.before(i) : 0,\n depth: i,\n node\n };\n }\n }\n};\n/**\n * @hidden\n */\nconst createTable = (nodes$$1, rows, columns) => {\n const { table, table_body, table_row, table_cell } = nodes$$1;\n const tableRows = [];\n let cells;\n for (let r = 0; r < rows + 1; r++) {\n cells = [];\n for (let c = 0; c < columns + 1; c++) {\n cells.push(table_cell.createAndFill());\n }\n tableRows.push(table_row.createAndFill(undefined, cells));\n }\n const body = table_body.createAndFill(undefined, tableRows);\n return table.createAndFill(undefined, body);\n};\n/**\n * @hidden\n */\nconst isInTable = (state) => {\n const $head = state.selection.$head;\n for (let d = $head.depth; d > 0; d--) {\n if (isTableRow($head.node(d))) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n */\nconst setAttr = (attrs, name, value) => {\n const result = {};\n // tslint:disable-next-line\n for (const prop in attrs) {\n result[prop] = attrs[prop];\n }\n result[name] = value;\n return result;\n};\nconst cellNear = ($pos) => {\n for (let after = $pos.nodeAfter, pos = $pos.pos; after; after = after.firstChild, pos++) {\n const role = after.type.spec.tableRole;\n if (role === 'cell' || role === 'header_cell') {\n return $pos.doc.resolve(pos);\n }\n }\n for (let before = $pos.nodeBefore, pos = $pos.pos; before; before = before.lastChild, pos--) {\n const role = before.type.spec.tableRole;\n if (role === 'cell' || role === 'header_cell') {\n return $pos.doc.resolve(pos - before.nodeSize);\n }\n }\n};\nconst cellAround = ($pos) => {\n for (let d = $pos.depth - 1; d > 0; d--) {\n if (isTableRow($pos.node(d))) {\n return $pos.node(0).resolve($pos.before(d + 1));\n }\n }\n return null;\n};\nconst selectionCell = (sel) => {\n if (sel instanceof CellSelection && sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos ? sel.$anchorCell : sel.$headCell;\n }\n else if (sel instanceof NodeSelection && sel.node && isTableCell(sel.node)) {\n return sel.$anchor;\n }\n return cellAround(sel.$head) || cellNear(sel.$head);\n};\n/**\n * @hidden\n */\n// Helper to get the selected rectangle in a table, if any. Adds table\n// map, table node, and table start offset to the object for\n// convenience.\nconst selectedRect = (sel) => {\n // create arr of rect for each table section\n // there has to be a rect for thead, tbody and tfoot(if each exists)\n // and NOT for colgroups\n const $pos = selectionCell(sel);\n const table = $pos.node(-1);\n const tableStart = $pos.start(-1);\n const map$$1 = TableMap.get(table);\n const rect = sel instanceof CellSelection\n ? map$$1.rectBetween(sel.$anchorCell.pos - tableStart, sel.$headCell.pos - tableStart)\n : map$$1.findCell($pos.pos - tableStart);\n rect.tableStart = tableStart;\n rect.map = map$$1;\n rect.table = table;\n return rect;\n};\n/**\n * @hidden\n */\n// this has to be removed since the schema should not have roles inside NodeSpec.\nconst tableNodeTypes = (schema) => {\n let result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n // tslint:disable-next-line\n for (const name in schema.nodes) {\n const type = schema.nodes[name];\n const role = type.spec.tableRole;\n if (role) {\n result[role] = type;\n }\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nconst rowIsHeader = (map$$1, table, row) => {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let col = 0; col < map$$1.width; col++) {\n if (table.nodeAt(map$$1.map[col + row * map$$1.width]).type !== headerCell) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nconst addColSpan = (attrs, pos, n = 1) => {\n const result = setAttr(attrs, 'colspan', attrs.colspan + n);\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (let i = 0; i < n; i++) {\n result.colwidth.splice(pos, 0, 0);\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nconst removeColSpan = (attrs, pos, n = 1) => {\n const result = setAttr(attrs, 'colspan', attrs.colspan - n);\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some(w => w > 0)) {\n result.colwidth = null;\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nconst isCellEmpty = cell => {\n const c = cell.content;\n return c.childCount === 1 && c.firstChild.isTextblock && c.firstChild.childCount === 0;\n};\nconst cellWrapping = ($pos) => {\n for (let d = $pos.depth; d > 0; d--) {\n // Sometimes the cell can be in the same depth.\n const role = $pos.node(d).type.spec.tableRole;\n if (role === 'cell' || role === 'header_cell') {\n return $pos.node(d);\n }\n }\n return null;\n};\n/**\n * @hidden\n */\n// Split a selected cell, whose rowpan or colspan is greater than one,\n// into smaller cells with the cell type (th, td) returned by getType function.\nconst splitCellWithType = getCellType => {\n return (state, dispatch) => {\n const sel = state.selection;\n let cellNode;\n let cellPos;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode) {\n return false;\n }\n cellPos = cellAround(sel.$from).pos;\n }\n else {\n if (sel.$anchorCell.pos !== sel.$headCell.pos) {\n return false;\n }\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode.attrs.colspan === 1 && cellNode.attrs.rowspan === 1) {\n return false;\n }\n if (dispatch) {\n let baseAttrs = cellNode.attrs;\n const attrs = [];\n const colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1) {\n baseAttrs = setAttr(baseAttrs, 'rowspan', 1);\n }\n if (baseAttrs.colspan > 1) {\n baseAttrs = setAttr(baseAttrs, 'colspan', 1);\n }\n const rect = selectedRect(state);\n const tr = state.tr;\n for (let i = 0; i < rect.right - rect.left; i++) {\n attrs.push(colwidth ? setAttr(baseAttrs, 'colwidth', colwidth && colwidth[i] ? [colwidth[i]] : null) : baseAttrs);\n }\n let lastCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n let pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row === rect.top) {\n pos += cellNode.nodeSize;\n }\n for (let col = rect.left, i = 0; col < rect.right; col++, i++) {\n if (col === rect.left && row === rect.top) {\n continue;\n }\n tr.insert((lastCell = tr.mapping.map(pos + rect.tableStart, 1)), getCellType({ node: cellNode, row, col }).createAndFill(attrs[i]));\n }\n }\n tr.setNodeMarkup(cellPos, getCellType({ node: cellNode, row: rect.top, col: rect.left }), attrs[0]);\n if (sel instanceof CellSelection) {\n tr.setSelection(new CellSelection(tr.doc.resolve(sel.$anchorCell.pos), lastCell && tr.doc.resolve(lastCell)));\n }\n dispatch(tr);\n }\n return true;\n };\n};\n/**\n * @hidden\n */\nconst pointsAtCell = ($pos) => {\n return isTableRow($pos.parent) && $pos.nodeAfter;\n};\n/**\n * @hidden\n */\nconst inSameTable = ($a, $b) => {\n return $a.depth === $b.depth && $a.pos >= $b.start(-1) && $a.pos <= $b.end(-1);\n};\n/**\n * @hidden\n */\nconst cellsOverlapRectangle = ({ width, height, map: map$$1 }, rect) => {\n let indexTop = rect.top * width + rect.left;\n let indexLeft = indexTop;\n let indexBottom = (rect.bottom - 1) * width + rect.left;\n let indexRight = indexTop + (rect.right - rect.left - 1);\n for (let i = rect.top; i < rect.bottom; i++) {\n if ((rect.left > 0 && map$$1[indexLeft] === map$$1[indexLeft - 1]) || (rect.right < width && map$$1[indexRight] === map$$1[indexRight + 1])) {\n return true;\n }\n indexLeft += width;\n indexRight += width;\n }\n for (let i = rect.left; i < rect.right; i++) {\n if ((rect.top > 0 && map$$1[indexTop] === map$$1[indexTop - width]) ||\n (rect.bottom < height && map$$1[indexBottom] === map$$1[indexBottom + width])) {\n return true;\n }\n indexTop++;\n indexBottom++;\n }\n return false;\n};\n\n/**\n * @hidden\n */\nconst insertTable = (attrs) => (state, dispatch) => {\n const newTable = createTable(state.schema.nodes, attrs.rows, attrs.cols);\n if (newTable) {\n insertNode(newTable, true)(state, dispatch);\n }\n};\nconst addTableGroupColumn = (tr, { left, right }, col, mainTable, requiredGroup, doc) => {\n let refColumn = col > 0 ? -1 : 0;\n // not sure if this should be deleted\n // if (columnIsHeader(map, table, col + refColumn)) {\n // refColumn = col === 0 || col === map.width ? null : 0;\n // }\n let rect;\n mainTable.node.descendants((tableChildNode, offset) => {\n if (requiredGroup(tableChildNode)) {\n let i = -1;\n tableChildNode.firstChild.descendants((childNode, pos) => {\n if (isTableCell(childNode) || isTableHeaderCell(childNode)) {\n i = i + 1;\n if (i === right || i === left) {\n const selection = new Selection(doc.resolve(pos + offset + mainTable.start), doc.resolve(pos + offset + mainTable.start));\n rect = selectedRect(selection);\n }\n }\n });\n }\n });\n // Do nothing if thead, tfoot or tbody is missing\n if (!rect) {\n return tr;\n }\n for (let row = 0; row < rect.map.height; row++) {\n const index = row * rect.map.width + col;\n // If this position falls inside a col-spanning cell\n if (col > 0 && col < rect.map.width && rect.map.map[index - 1] === rect.map.map[index]) {\n const pos = rect.map.map[index];\n const cell = rect.table.nodeAt(pos);\n tr.setNodeMarkup(tr.mapping.map(rect.tableStart + pos), null, addColSpan(cell.attrs, col - rect.map.colCount(pos)));\n // Skip ahead if rowspan > 1\n row += cell.attrs.rowspan - 1;\n }\n else {\n const type = rect.table.nodeAt(rect.map.map[index + refColumn]).type;\n const pos = rect.map.positionAt(row, col, rect.table);\n tr.insert(tr.mapping.map(rect.tableStart + pos), type.createAndFill());\n }\n }\n return tr;\n};\nconst removeTableGroupColumn = (tr, { right, left }, mainTable, requiredGroup, doc) => {\n let rect;\n mainTable.node.descendants((tableChildNode, offset) => {\n if (requiredGroup(tableChildNode)) {\n let i = -1;\n tableChildNode.firstChild.descendants((childNode, pos) => {\n if (isTableCell(childNode) || isTableHeaderCell(childNode)) {\n i = i + 1;\n if (i >= left && i < right) {\n const resolvedPos = doc.resolve(pos + offset + mainTable.start + childNode.nodeSize);\n const selection = new Selection(resolvedPos, resolvedPos);\n rect = selectedRect(selection);\n }\n }\n });\n }\n });\n // Do nothing if thead, tfoot or tbody is missing\n if (!rect) {\n return;\n }\n for (let i = rect.right - 1;; i--) {\n removeColumn(tr, rect, i);\n if (i === rect.left) {\n break;\n }\n rect.table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n rect.map = TableMap.get(rect.table);\n }\n return;\n};\nconst removeColumn = (tr, { map: map$$1, table, tableStart }, col) => {\n for (let row = 0; row < map$$1.height;) {\n const index = row * map$$1.width + col;\n const pos = map$$1.map[index];\n const cell = table.nodeAt(pos);\n // If this is part of a col-spanning cell\n if ((col > 0 && map$$1.map[index - 1] === pos) || (col < map$$1.width - 1 && map$$1.map[index + 1] === pos)) {\n tr.setNodeMarkup(tr.mapping.map(tableStart + pos), null, removeColSpan(cell.attrs, col - map$$1.colCount(pos)));\n }\n else {\n const start = tr.mapping.map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += cell.attrs.rowspan;\n }\n};\n/**\n * @hidden\n */\n// Command to add a column before the column with the selection.\nconst addColumnBefore$1 = (state, dispatch) => {\n if (!isInTable(state)) {\n return false;\n }\n if (dispatch) {\n const rect = selectedRect(state.selection);\n const mainTable = findParentNodeClosestToPos(state.selection.$anchor, isTable);\n const tHeadTr = addTableGroupColumn(state.tr, rect, rect.left, mainTable, isTableHead, state.doc);\n const tBodyTr = addTableGroupColumn(tHeadTr, rect, rect.left, mainTable, isTableBody, state.doc);\n const tFootTr = addTableGroupColumn(tBodyTr, rect, rect.left, mainTable, isTableFoot, state.doc);\n dispatch(tFootTr);\n }\n return true;\n};\n/**\n * @hidden\n */\n// Command to add a column after the column with the selection.\nconst addColumnAfter$1 = (state, dispatch) => {\n if (!isInTable(state)) {\n return false;\n }\n if (dispatch) {\n const rect = selectedRect(state.selection);\n const mainTable = findParentNodeClosestToPos(state.selection.$anchor, isTable);\n const theadTr = addTableGroupColumn(state.tr, rect, rect.right, mainTable, isTableHead, state.doc);\n const tBodyTr = addTableGroupColumn(theadTr, rect, rect.right, mainTable, isTableBody, state.doc);\n const tFootTr = addTableGroupColumn(tBodyTr, rect, rect.right, mainTable, isTableFoot, state.doc);\n dispatch(tFootTr);\n }\n return true;\n};\nconst addRow = (tr, { map: map$$1, tableStart, table }, row) => {\n let rowPos = tableStart;\n for (let i = 0; i < row; i++) {\n rowPos += table.child(i).nodeSize;\n }\n const cells = [];\n let refRow = row > 0 ? -1 : 0;\n if (rowIsHeader(map$$1, table, row + refRow)) {\n refRow = row === 0 || row === map$$1.height ? null : 0;\n }\n for (let col = 0, index = map$$1.width * row; col < map$$1.width; col++, index++) {\n // Covered by a rowspan cell\n if (row > 0 && row < map$$1.height && map$$1.map[index] === map$$1.map[index - map$$1.width]) {\n const pos = map$$1.map[index];\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tableStart + pos, null, setAttr(attrs, 'rowspan', attrs.rowspan + 1));\n col += attrs.colspan - 1;\n }\n else {\n const type = refRow == null ? tableNodeTypes(table.type.schema).cell : table.nodeAt(map$$1.map[index + refRow * map$$1.width]).type;\n cells.push(type.createAndFill());\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr;\n};\n/**\n * @hidden\n */\n// Add a table row before the selection.\nconst addRowBefore$1 = (state, dispatch) => {\n if (!isInTable(state)) {\n return false;\n }\n if (dispatch) {\n const rect = selectedRect(state.selection);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true;\n};\n/**\n * @hidden\n */\n// Add a table row after the selection.\nconst addRowAfter$1 = (state, dispatch) => {\n if (!isInTable(state)) {\n return false;\n }\n if (dispatch) {\n const rect = selectedRect(state.selection);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true;\n};\n/**\n * @hidden\n */\n// Command function that removes the selected columns from a table.\nconst deleteColumn$1 = (state, dispatch) => {\n if (!isInTable(state)) {\n return false;\n }\n if (dispatch) {\n const rect = selectedRect(state.selection);\n // if only one column left - delete the whole table\n if (rect.left === 0 && rect.right === rect.map.width) {\n return deleteTable$1(state, dispatch);\n }\n const mainTable = findParentNodeClosestToPos(state.selection.$anchor, isTable);\n const tr = state.tr;\n removeTableGroupColumn(tr, rect, mainTable, isTableFoot, tr.doc);\n removeTableGroupColumn(tr, rect, mainTable, isTableBody, tr.doc);\n removeTableGroupColumn(tr, rect, mainTable, isTableHead, tr.doc);\n dispatch(tr);\n }\n return true;\n};\nconst removeRow = (tr, { map: map$$1, table, tableStart }, row) => {\n let rowPos = 0;\n for (let i = 0; i < row; i++) {\n rowPos += table.child(i).nodeSize;\n }\n const nextRow = rowPos + table.child(row).nodeSize;\n const mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n for (let col = 0, index = row * map$$1.width; col < map$$1.width; col++, index++) {\n const pos = map$$1.map[index];\n if (row > 0 && pos === map$$1.map[index - map$$1.width]) {\n // If this cell starts in the row above, simply reduce its rowspan\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, setAttr(attrs, 'rowspan', attrs.rowspan - 1));\n col += attrs.colspan - 1;\n }\n else if (row < map$$1.width && pos === map$$1.map[index + map$$1.width]) {\n // Else, if it continues in the row below, it has to be moved down\n const cell = table.nodeAt(pos);\n const copy = cell.type.create(setAttr(cell.attrs, 'rowspan', cell.attrs.rowspan - 1), cell.content);\n const newPos = map$$1.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += cell.attrs.colspan - 1;\n }\n }\n};\n/**\n * @hidden\n */\n// Remove the selected rows from a table.\nconst deleteRow$1 = (state, dispatch) => {\n if (!isInTable(state)) {\n return false;\n }\n if (dispatch) {\n const rect = selectedRect(state.selection);\n const tr = state.tr;\n if (rect.top === 0 && rect.bottom === rect.map.height) {\n const mainTable = findParentNodeClosestToPos(state.selection.$anchor, isTable);\n if (mainTable.node.childCount === 1) {\n deleteTable$1(state, dispatch);\n }\n else {\n deleteTableElement(n => n.type.name === rect.table.type.name)(state, dispatch);\n }\n return true;\n }\n for (let i = rect.bottom - 1;; i--) {\n removeRow(tr, rect, i);\n if (i === rect.top) {\n break;\n }\n rect.table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true;\n};\n/**\n * @hidden\n */\n// Merge the selected cells into a single cell. Only available when\n// the selected cells' outline forms a rectangle.\nconst mergeCells$1 = (state, dispatch) => {\n const sel = state.selection;\n if (!(sel instanceof CellSelection) || sel.$anchorCell.pos === sel.$headCell.pos) {\n return false;\n }\n const rect = selectedRect(state.selection);\n const { map: map$$1 } = rect;\n if (cellsOverlapRectangle(map$$1, rect)) {\n return false;\n }\n if (dispatch) {\n const tr = state.tr;\n const seen = {};\n let content = Fragment.empty;\n let mergedPos;\n let mergedCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const cellPos = map$$1.map[row * map$$1.width + col], cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos]) {\n continue;\n }\n seen[cellPos] = true;\n if (mergedPos === null) {\n mergedPos = cellPos;\n mergedCell = cell;\n }\n else {\n if (!isCellEmpty(cell)) {\n content = content.append(cell.content);\n }\n const mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n tr.setNodeMarkup(mergedPos + rect.tableStart, null, setAttr(addColSpan(mergedCell.attrs, mergedCell.attrs.colspan, rect.right - rect.left - mergedCell.attrs.colspan), 'rowspan', rect.bottom - rect.top));\n if (content.size) {\n const end = mergedPos + 1 + mergedCell.content.size;\n const start = isCellEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart)));\n dispatch(tr);\n }\n return true;\n};\n/**\n * @hidden\n */\n// Split a selected cell, whose rowpan or colspan is greater than one,\n// into smaller cells. Use the first cell type for the new cells.\nconst splitCell$1 = (state, dispatch) => {\n const nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(({ node }) => {\n return nodeTypes[node.type.spec.tableRole];\n })(state, dispatch);\n};\nconst deleteTableElement = (selector) => (state, dispatch) => {\n const $pos = state.selection.$anchor;\n for (let d = $pos.depth; d > 0; d--) {\n const node = $pos.node(d);\n if (selector(node)) {\n if (dispatch) {\n const tr = state.tr;\n tr.delete($pos.before(d), $pos.after(d)).scrollIntoView();\n dispatch(tr);\n }\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n */\n// Deletes the table around the selection, if any.\nconst deleteTable$1 = deleteTableElement(isTable);\n\nconst alignRemove = (state, dispatch) => alignBlocks(alignRemoveRules)(state, dispatch);\nconst ɵ1$5 = (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign({}, bold, { applyToWord })), ɵ2$4 = (options) => cleanFormatting(options), ɵ3$4 = attrs => expandToWordWrap(applyLink, { mark: 'link', attrs: attrs.value, applyToWord: attrs.applyToWord }), ɵ4$2 = attrs => expandToWordWrap(applyInlineStyle, { style: 'font-family', value: attrs.value, applyToWord: attrs.applyToWord }), ɵ5$2 = attrs => expandToWordWrap(applyInlineStyle, { style: 'font-size', value: attrs.value + 'px', applyToWord: attrs.applyToWord }), ɵ6$1 = attrs => expandToWordWrap(applyLink, { mark: 'link', attrs: attrs, applyToWord: attrs.applyToWord }), ɵ7$1 = text => insertText(text), ɵ8$1 = (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign({}, italic, { applyToWord })), ɵ9$1 = (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign({}, strikethrough, { applyToWord })), ɵ10 = (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign({}, subscript, { applyToWord })), ɵ11 = (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign({}, superscript, { applyToWord })), ɵ12 = (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign({}, underline, { applyToWord })), ɵ13 = () => removeLink(link), ɵ14 = attrs => expandToWordWrap(applyInlineStyle, { style: 'color', value: attrs.value, applyToWord: attrs.applyToWord }), ɵ15 = attrs => expandToWordWrap(applyInlineStyle, { style: 'background-color', value: attrs.value, applyToWord: attrs.applyToWord }), ɵ16 = () => (state, dispatch) => selectAll(state, dispatch);\nconst inlineCommand = {\n bold: ɵ1$5,\n cleanFormatting: ɵ2$4,\n createLink: ɵ3$4,\n fontFamily: ɵ4$2,\n fontSize: ɵ5$2,\n insertFile: ɵ6$1,\n insertText: ɵ7$1,\n italic: ɵ8$1,\n strikethrough: ɵ9$1,\n subscript: ɵ10,\n superscript: ɵ11,\n underline: ɵ12,\n unlink: ɵ13,\n foreColor: ɵ14,\n backColor: ɵ15,\n selectAll: ɵ16\n};\nconst ɵ17 = () => (state, dispatch) => isAligned(state, alignCenterRules) ? alignRemove(state, dispatch) : alignBlocks(alignCenterRules)(state, dispatch), ɵ18 = () => (state, dispatch) => isAligned(state, alignJustifyRules) ? alignRemove(state, dispatch) : alignBlocks(alignJustifyRules)(state, dispatch), ɵ19 = () => (state, dispatch) => isAligned(state, alignLeftRules) ? alignRemove(state, dispatch) : alignBlocks(alignLeftRules)(state, dispatch), ɵ20 = () => (state, dispatch) => isAligned(state, alignRightRules) ? alignRemove(state, dispatch) : alignBlocks(alignRightRules)(state, dispatch), ɵ21 = formatAttr => formatBlockElements(formatAttr.tag), ɵ22 = () => getHtml, ɵ23 = () => indent, ɵ24 = attrs => insertImage(attrs), ɵ25 = () => toggleOrderedList, ɵ26 = () => toggleUnorderedList, ɵ27 = () => outdent, ɵ28 = () => redo, ɵ29 = ({ content, parseOptions }) => setHtml(content, 'setHTML', parseOptions), ɵ30 = () => undo;\nconst blockCommand = {\n alignCenter: ɵ17,\n alignJustify: ɵ18,\n alignLeft: ɵ19,\n alignRight: ɵ20,\n format: ɵ21,\n getHTML: ɵ22,\n indent: ɵ23,\n insertImage: ɵ24,\n // think about changing the command name.\n insertOrderedList: ɵ25,\n // think about changing the command name.\n insertUnorderedList: ɵ26,\n outdent: ɵ27,\n redo: ɵ28,\n setHTML: ɵ29,\n undo: ɵ30\n};\nconst ɵ31 = attr => insertTable(attr), ɵ32 = () => addColumnBefore$1, ɵ33 = () => addColumnAfter$1, ɵ34 = () => addRowBefore$1, ɵ35 = () => addRowAfter$1, ɵ36 = () => deleteRow$1, ɵ37 = () => deleteColumn$1, ɵ38 = () => mergeCells$1, ɵ39 = () => splitCell$1, ɵ40 = () => deleteTable$1;\nconst tableCommand = {\n insertTable: ɵ31,\n addColumnBefore: ɵ32,\n addColumnAfter: ɵ33,\n addRowBefore: ɵ34,\n addRowAfter: ɵ35,\n deleteRow: ɵ36,\n deleteColumn: ɵ37,\n mergeCells: ɵ38,\n splitCell: ɵ39,\n deleteTable: ɵ40\n};\n/**\n * @hidden\n */\nconst editorCommands = Object.assign({}, inlineCommand, blockCommand, tableCommand);\n\n/**\n * @hidden\n */\nconst getToolbarState = (state, options) => ({\n alignCenter: {\n selected: isAligned(state, alignCenterRules),\n disabled: false\n },\n alignJustify: {\n selected: isAligned(state, alignJustifyRules),\n disabled: false\n },\n alignLeft: {\n selected: isAligned(state, alignLeftRules),\n disabled: false\n },\n alignRight: {\n selected: isAligned(state, alignRightRules),\n disabled: false\n },\n bold: {\n selected: hasMark(state, bold),\n disabled: false\n },\n cleanFormatting: {\n selected: false,\n disabled: !cleanFormatting()(state)\n },\n format: {\n selected: activeNode(state),\n disabled: false\n },\n indent: {\n selected: false,\n disabled: !(canIndentAsListItem(state, state.schema.nodes.list_item) || canBeIndented(state, indentRules))\n },\n insertOrderedList: {\n selected: hasNode(state, state.schema.nodes.ordered_list),\n disabled: false\n },\n insertUnorderedList: {\n selected: hasNode(state, state.schema.nodes.bullet_list),\n disabled: false\n },\n italic: {\n selected: hasMark(state, italic),\n disabled: false\n },\n unlink: {\n selected: false,\n disabled: !hasMark(state, link)\n },\n outdent: {\n selected: false,\n disabled: !(canOutdentAsListItem(state, outdentRules) || canBeIndented(state, outdentRules))\n },\n redo: {\n selected: false,\n disabled: !redo(state)\n },\n selectAll: {\n selected: false,\n disabled: false\n },\n strikethrough: {\n selected: hasMark(state, strikethrough),\n disabled: false\n },\n style: {\n selected: getActiveMarks(state, state.schema.marks.style),\n disabled: false\n },\n subscript: {\n selected: hasMark(state, subscript),\n disabled: false\n },\n superscript: {\n selected: hasMark(state, superscript),\n disabled: false\n },\n underline: {\n selected: hasMark(state, underline),\n disabled: false\n },\n undo: {\n selected: false,\n disabled: !undo(state)\n },\n //dialogs\n createLink: {\n selected: false,\n get disabled() {\n const empty = state.selection.empty;\n const applyToWord = options && options.applyToWord;\n if (applyToWord && empty) {\n const extendedState = expandSelection(state, () => { }, options).state;\n return extendedState.selection.empty;\n }\n return empty;\n }\n },\n insertFile: {\n selected: false,\n disabled: state.selection.empty\n },\n insertImage: {\n selected: false,\n disabled: false\n },\n viewSource: {\n selected: false,\n disabled: false\n },\n // print\n print: {\n selected: false,\n disabled: false\n },\n // table\n insertTable: {\n selected: false,\n disabled: false\n },\n addColumnBefore: {\n selected: false,\n disabled: !addColumnBefore(state)\n },\n addColumnAfter: {\n selected: false,\n disabled: !addColumnAfter(state)\n },\n addRowBefore: {\n selected: false,\n disabled: !addRowBefore(state)\n },\n addRowAfter: {\n selected: false,\n disabled: !addRowAfter(state)\n },\n deleteRow: {\n selected: false,\n disabled: !deleteRow(state)\n },\n deleteColumn: {\n selected: false,\n disabled: !deleteColumn(state)\n },\n mergeCells: {\n selected: false,\n disabled: !mergeCells(state)\n },\n splitCell: {\n selected: false,\n disabled: !splitCell(state)\n },\n deleteTable: {\n selected: false,\n disabled: !deleteTable(state)\n }\n});\n/**\n * @hidden\n */\nconst initialToolBarState = {\n //alignment\n alignCenter: { selected: false, disabled: false },\n alignJustify: { selected: false, disabled: false },\n alignLeft: { selected: false, disabled: false },\n alignRight: { selected: false, disabled: false },\n //marks\n bold: { selected: false, disabled: false },\n italic: { selected: false, disabled: false },\n underline: { selected: false, disabled: false },\n strikethrough: { selected: false, disabled: false },\n subscript: { selected: false, disabled: false },\n superscript: { selected: false, disabled: false },\n //tools\n format: { selected: { text: 'Format', tag: null }, disabled: false },\n style: { selected: { marks: [], hasNodesWithoutMarks: false }, disabled: false },\n cleanFormatting: { selected: false, disabled: true },\n //indent\n indent: { selected: false, disabled: false },\n outdent: { selected: false, disabled: false },\n //lists\n insertOrderedList: { selected: false, disabled: false },\n insertUnorderedList: { selected: false, disabled: false },\n //links\n unlink: { selected: false, disabled: true },\n //history\n redo: { selected: false, disabled: true },\n undo: { selected: false, disabled: true },\n // print\n print: { selected: false, disabled: false },\n //dialogs\n createLink: { selected: false, disabled: true },\n insertFile: { selected: false, disabled: true },\n insertImage: { selected: false, disabled: false },\n viewSource: { selected: false, disabled: false },\n //table\n insertTable: { selected: false, disabled: false },\n addColumnBefore: { selected: false, disabled: true },\n addColumnAfter: { selected: false, disabled: true },\n addRowBefore: { selected: false, disabled: true },\n addRowAfter: { selected: false, disabled: true },\n deleteRow: { selected: false, disabled: true },\n deleteColumn: { selected: false, disabled: true },\n mergeCells: { selected: false, disabled: true },\n splitCell: { selected: false, disabled: true },\n deleteTable: { selected: false, disabled: true },\n // select all\n selectAll: { selected: false, disabled: false }\n};\n/**\n * @hidden\n */\nconst disabledToolBarState = {\n //alignment\n alignCenter: { selected: false, disabled: true },\n alignJustify: { selected: false, disabled: true },\n alignLeft: { selected: false, disabled: true },\n alignRight: { selected: false, disabled: true },\n //marks\n bold: { selected: false, disabled: true },\n italic: { selected: false, disabled: true },\n underline: { selected: false, disabled: true },\n strikethrough: { selected: false, disabled: true },\n subscript: { selected: false, disabled: true },\n superscript: { selected: false, disabled: true },\n //tools\n format: { selected: { text: 'Format', tag: null }, disabled: true },\n style: { selected: { marks: [], hasNodesWithoutMarks: false }, disabled: true },\n cleanFormatting: { selected: false, disabled: true },\n //indent\n indent: { selected: false, disabled: true },\n outdent: { selected: false, disabled: true },\n //lists\n insertOrderedList: { selected: false, disabled: true },\n insertUnorderedList: { selected: false, disabled: true },\n //links\n unlink: { selected: false, disabled: true },\n //history\n redo: { selected: false, disabled: true },\n undo: { selected: false, disabled: true },\n // print\n print: { selected: false, disabled: true },\n //dialogs\n createLink: { selected: false, disabled: true },\n insertFile: { selected: false, disabled: true },\n insertImage: { selected: false, disabled: true },\n viewSource: { selected: false, disabled: true },\n //table\n insertTable: { selected: false, disabled: true },\n addColumnBefore: { selected: false, disabled: true },\n addColumnAfter: { selected: false, disabled: true },\n addRowBefore: { selected: false, disabled: true },\n addRowAfter: { selected: false, disabled: true },\n deleteRow: { selected: false, disabled: true },\n deleteColumn: { selected: false, disabled: true },\n mergeCells: { selected: false, disabled: true },\n splitCell: { selected: false, disabled: true },\n deleteTable: { selected: false, disabled: true },\n // select all\n selectAll: { selected: false, disabled: true }\n};\n\n/**\n * @hidden\n */\nlet EditorLocalizationService = class EditorLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl) {\n super(prefix, messageService, _rtl);\n }\n};\nEditorLocalizationService.ɵfac = function EditorLocalizationService_Factory(t) { return new (t || EditorLocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(ɵngcc5.MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8)); };\nEditorLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: EditorLocalizationService, factory: function (t) { return EditorLocalizationService.ɵfac(t); } });\nEditorLocalizationService = __decorate([\n __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean])\n], EditorLocalizationService);\n\n/**\n * @hidden\n */\nlet SourceDialogComponent = class SourceDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.data = '';\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.textarea.nativeElement.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n this.editor.exec('setHTML', this.getData());\n this.dialog.close();\n this.editor.view.focus();\n }\n getData() {\n return this.textarea.nativeElement.value;\n }\n setData() {\n this.data = this.indent(this.editor.getSource());\n }\n textFor(key) {\n return this.localization.get(key);\n }\n indent(content) {\n return content\n .replace(/<\\/(p|li|ul|ol|h[1-6]|table|tr|td|th)>/gi, '\\n')\n .replace(/<(ul|ol)([^>]*)>
  • \\n/gi, '
    \\n')\n .replace(/\\n$/, '');\n }\n};\nSourceDialogComponent.ɵfac = function SourceDialogComponent_Factory(t) { return new (t || SourceDialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogRef), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService)); };\nSourceDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SourceDialogComponent, selectors: [[\"ng-component\"]], viewQuery: function SourceDialogComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textarea = _t.first);\n } }, inputs: { editor: \"editor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 9, vars: 5, consts: [[3, \"close\"], [1, \"k-textarea\", \"k-editor-textarea\", 3, \"value\"], [\"textarea\", \"\"], [\"kendoButton\", \"\", 3, \"click\"], [\"kendoButton\", \"\", 3, \"primary\", \"click\"]], template: function SourceDialogComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 0);\n ɵngcc0.ɵɵlistener(\"close\", function SourceDialogComponent_Template_kendo_dialog_titlebar_close_0_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"textarea\", 1, 2);\n ɵngcc0.ɵɵelementStart(4, \"kendo-dialog-actions\");\n ɵngcc0.ɵɵelementStart(5, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function SourceDialogComponent_Template_button_click_5_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function SourceDialogComponent_Template_button_click_7_listener() { return ctx.onConfirmAction(); });\n ɵngcc0.ɵɵtext(8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"viewSource\"), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"value\", ctx.data);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogCancel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"primary\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogUpdate\"));\n } }, directives: [ɵngcc1.DialogTitleBarComponent, ɵngcc1.DialogActionsComponent, ɵngcc2.ButtonDirective], styles: [\".k-editor-textarea {\\n height: 100%;\\n }\"] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], SourceDialogComponent.prototype, \"editor\", void 0);\n__decorate([\n ViewChild('textarea', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SourceDialogComponent.prototype, \"textarea\", void 0);\nSourceDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [DialogRef,\n EditorLocalizationService])\n], SourceDialogComponent);\n\n/**\n * @hidden\n */\nlet ImageDialogComponent = class ImageDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.src = new FormControl('', Validators.required);\n this.alt = new FormControl('');\n this.width = new FormControl('', Validators.min(1));\n this.height = new FormControl('', Validators.min(1));\n this.data = {\n alt: '',\n height: '',\n src: '',\n width: ''\n };\n this.imageData = new FormGroup({\n alt: this.alt,\n height: this.height,\n src: this.src,\n width: this.width\n });\n }\n ngOnInit() {\n this.srcInputId = `k-${guid()}`;\n this.altTextInputId = `k-${guid()}`;\n this.widthInputId = `k-${guid()}`;\n this.heightInputId = `k-${guid()}`;\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.srcInput.nativeElement.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.src.value) {\n this.editor.exec('insertImage', this.getData());\n this.dialog.close();\n this.editor.view.focus();\n }\n }\n setData(state) {\n const node = getNodeFromSelection(state);\n if (node) {\n this.src.patchValue(node.attrs.src);\n this.alt.patchValue(node.attrs.alt);\n this.width.patchValue(node.attrs.width);\n this.height.patchValue(node.attrs.height);\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n getData() {\n return {\n alt: this.alt.value,\n height: this.normalizeDimension(this.height.value),\n src: this.src.value,\n width: this.normalizeDimension(this.width.value)\n };\n }\n normalizeDimension(value) {\n return Number.isNaN(parseInt(value, 10)) || parseInt(value, 10) <= 0 ? '' : safeString(parseInt(value, 10));\n }\n};\nImageDialogComponent.ɵfac = function ImageDialogComponent_Factory(t) { return new (t || ImageDialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogRef), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService)); };\nImageDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ImageDialogComponent, selectors: [[\"ng-component\"]], viewQuery: function ImageDialogComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c1, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.srcInput = _t.first);\n } }, inputs: { editor: \"editor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 31, vars: 21, consts: [[3, \"close\"], [1, \"k-editor-dialog\"], [1, \"k-editor-dialog\", \"k-popup-edit-form\", \"k-window-content\", \"k-content\"], [1, \"k-edit-form-container\", \"k-window-content\"], [1, \"k-edit-label\"], [3, \"for\"], [1, \"k-edit-field\"], [\"type\", \"text\", 1, \"k-textbox\", 3, \"id\", \"formControl\"], [\"srcInput\", \"\"], [\"kendoButton\", \"\", 3, \"click\"], [\"kendoButton\", \"\", 3, \"disabled\", \"primary\", \"click\"]], template: function ImageDialogComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 0);\n ɵngcc0.ɵɵlistener(\"close\", function ImageDialogComponent_Template_kendo_dialog_titlebar_close_0_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵelementStart(4, \"div\", 3);\n ɵngcc0.ɵɵelementStart(5, \"div\", 4);\n ɵngcc0.ɵɵelementStart(6, \"label\", 5);\n ɵngcc0.ɵɵtext(7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"div\", 6);\n ɵngcc0.ɵɵelement(9, \"input\", 7, 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(11, \"div\", 4);\n ɵngcc0.ɵɵelementStart(12, \"label\", 5);\n ɵngcc0.ɵɵtext(13);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(14, \"div\", 6);\n ɵngcc0.ɵɵelement(15, \"input\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(16, \"div\", 4);\n ɵngcc0.ɵɵelementStart(17, \"label\", 5);\n ɵngcc0.ɵɵtext(18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(19, \"div\", 6);\n ɵngcc0.ɵɵelement(20, \"input\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(21, \"div\", 4);\n ɵngcc0.ɵɵelementStart(22, \"label\", 5);\n ɵngcc0.ɵɵtext(23);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(24, \"div\", 6);\n ɵngcc0.ɵɵelement(25, \"input\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(26, \"kendo-dialog-actions\");\n ɵngcc0.ɵɵelementStart(27, \"button\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function ImageDialogComponent_Template_button_click_27_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(28);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(29, \"button\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function ImageDialogComponent_Template_button_click_29_listener() { return ctx.onConfirmAction(); });\n ɵngcc0.ɵɵtext(30);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"insertImage\"), \" \");\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"for\", ctx.srcInputId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"imageWebAddress\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.srcInputId)(\"formControl\", ctx.src);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"for\", ctx.altTextInputId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"imageAltText\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.altTextInputId)(\"formControl\", ctx.alt);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", ctx.widthInputId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"imageWidth\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.widthInputId)(\"formControl\", ctx.width);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", ctx.heightInputId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"imageHeight\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.heightInputId)(\"formControl\", ctx.height);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogCancel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.imageData.invalid)(\"primary\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogInsert\"));\n } }, directives: [ɵngcc1.DialogTitleBarComponent, ɵngcc3.DefaultValueAccessor, ɵngcc3.NgControlStatus, ɵngcc3.FormControlDirective, ɵngcc1.DialogActionsComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ImageDialogComponent.prototype, \"editor\", void 0);\n__decorate([\n ViewChild('srcInput', { read: ElementRef, static: true }),\n __metadata(\"design:type\", ElementRef)\n], ImageDialogComponent.prototype, \"srcInput\", void 0);\nImageDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [DialogRef,\n EditorLocalizationService])\n], ImageDialogComponent);\n\n/**\n * @hidden\n */\nlet FileLinkDialogComponent = class FileLinkDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.linkForm = new FormGroup({\n 'href': new FormControl('', Validators.required),\n 'text': new FormControl({ value: '', disabled: true }, Validators.required),\n 'title': new FormControl('')\n });\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.hrefInput.nativeElement.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n const linkData = this.getData();\n this.editor.exec(this.command, linkData);\n this.dialog.close();\n this.editor.view.focus();\n }\n get titleText() {\n return this.localization.get(this.command);\n }\n setData(state, options) {\n if (this.command === 'createLink') {\n this.linkForm.addControl('target', new FormControl());\n }\n const linkMark = getMark(state, state.schema.marks.link);\n if (linkMark) {\n // const linkMarkRange = getMarkRange(state.selection.$cursor, schema.marks.link);\n // const mark = parentNode.child(cursorNodeIndex).marks.find(m => m.type === markType);\n this.linkForm.reset({\n href: linkMark.attrs.href,\n title: linkMark.attrs.title,\n target: isPresent(linkMark.attrs.target),\n text: this.setLinkText(state)\n });\n return;\n }\n if (state.selection.empty) {\n const currentState = options.applyToWord ? expandSelection(state, () => { }, options).state : state;\n if (!currentState.selection.empty) {\n this.linkForm.patchValue({\n 'text': getSelectionText(currentState)\n });\n }\n }\n else {\n this.linkForm.patchValue({\n 'text': getSelectionText(state)\n });\n }\n }\n textForWithPrefix(key) {\n const prefix = this.command === 'createLink' ? 'link' : 'file';\n return this.textFor(prefix + key);\n }\n textFor(key) {\n return this.localization.get(key);\n }\n setLinkText(state) {\n const selection = state.selection;\n if (selection.empty && selection.$cursor) {\n const cursor = selection.$cursor;\n const cursorNodeIndex = cursor.index();\n const parentNode = cursor.parent;\n return parentNode.child(cursorNodeIndex).text;\n }\n else {\n return getSelectionText(state);\n }\n }\n getData() {\n let linkData = this.linkForm.value;\n if (isPresent(this.linkForm.controls.target)) {\n linkData.target = linkData.target ? '_blank' : null;\n }\n return linkData;\n }\n};\nFileLinkDialogComponent.ɵfac = function FileLinkDialogComponent_Factory(t) { return new (t || FileLinkDialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogRef), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService)); };\nFileLinkDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FileLinkDialogComponent, selectors: [[\"ng-component\"]], viewQuery: function FileLinkDialogComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c2, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.hrefInput = _t.first);\n } }, inputs: { editor: \"editor\", command: \"command\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 30, vars: 10, consts: [[3, \"close\"], [1, \"k-editor-dialog\"], [1, \"k-editor-dialog\", \"k-popup-edit-form\", \"k-window-content\", \"k-content\"], [1, \"k-edit-form-container\", \"k-window-content\"], [\"novalidate\", \"\", 3, \"formGroup\"], [1, \"k-edit-label\"], [3, \"click\"], [1, \"k-edit-field\"], [\"formControlName\", \"href\", \"type\", \"text\", 1, \"k-textbox\"], [\"hrefInput\", \"\"], [\"formControlName\", \"text\", \"type\", \"text\", 1, \"k-textbox\"], [\"textInput\", \"\"], [\"formControlName\", \"title\", \"type\", \"text\", 1, \"k-textbox\"], [\"titleInput\", \"\"], [4, \"ngIf\"], [\"kendoButton\", \"\", 3, \"click\"], [\"kendoButton\", \"\", 3, \"disabled\", \"primary\", \"click\"], [\"type\", \"checkbox\", \"id\", \"k-target-blank\", \"formControlName\", \"target\", 1, \"k-checkbox\"], [\"for\", \"k-target-blank\", 1, \"k-checkbox-label\"]], template: function FileLinkDialogComponent_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 0);\n ɵngcc0.ɵɵlistener(\"close\", function FileLinkDialogComponent_Template_kendo_dialog_titlebar_close_0_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵelementStart(4, \"div\", 3);\n ɵngcc0.ɵɵelementStart(5, \"form\", 4);\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵelementStart(7, \"label\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function FileLinkDialogComponent_Template_label_click_7_listener() { ɵngcc0.ɵɵrestoreView(_r4); const _r0 = ɵngcc0.ɵɵreference(11); return _r0.focus(); });\n ɵngcc0.ɵɵtext(8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"div\", 7);\n ɵngcc0.ɵɵelement(10, \"input\", 8, 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(12, \"div\", 5);\n ɵngcc0.ɵɵelementStart(13, \"label\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function FileLinkDialogComponent_Template_label_click_13_listener() { ɵngcc0.ɵɵrestoreView(_r4); const _r1 = ɵngcc0.ɵɵreference(17); return _r1.focus(); });\n ɵngcc0.ɵɵtext(14);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(15, \"div\", 7);\n ɵngcc0.ɵɵelement(16, \"input\", 10, 11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(18, \"div\", 5);\n ɵngcc0.ɵɵelementStart(19, \"label\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function FileLinkDialogComponent_Template_label_click_19_listener() { ɵngcc0.ɵɵrestoreView(_r4); const _r2 = ɵngcc0.ɵɵreference(23); return _r2.focus(); });\n ɵngcc0.ɵɵtext(20);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(21, \"div\", 7);\n ɵngcc0.ɵɵelement(22, \"input\", 12, 13);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(24, FileLinkDialogComponent_ng_container_24_Template, 6, 1, \"ng-container\", 14);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(25, \"kendo-dialog-actions\");\n ɵngcc0.ɵɵelementStart(26, \"button\", 15);\n ɵngcc0.ɵɵlistener(\"click\", function FileLinkDialogComponent_Template_button_click_26_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(27);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(28, \"button\", 16);\n ɵngcc0.ɵɵlistener(\"click\", function FileLinkDialogComponent_Template_button_click_28_listener() { return ctx.onConfirmAction(); });\n ɵngcc0.ɵɵtext(29);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.titleText, \" \");\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"formGroup\", ctx.linkForm);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.textForWithPrefix(\"WebAddress\"));\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵtextInterpolate(ctx.textForWithPrefix(\"Text\"));\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵtextInterpolate(ctx.textForWithPrefix(\"Title\"));\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.command === \"createLink\");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogCancel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.linkForm.invalid)(\"primary\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"dialogInsert\"), \" \");\n } }, directives: [ɵngcc1.DialogTitleBarComponent, ɵngcc3.ɵNgNoValidate, ɵngcc3.NgControlStatusGroup, ɵngcc3.FormGroupDirective, ɵngcc3.DefaultValueAccessor, ɵngcc3.NgControlStatus, ɵngcc3.FormControlName, ɵngcc4.NgIf, ɵngcc3.CheckboxControlValueAccessor, ɵngcc1.DialogActionsComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FileLinkDialogComponent.prototype, \"editor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FileLinkDialogComponent.prototype, \"command\", void 0);\n__decorate([\n ViewChild('hrefInput', { read: ElementRef, static: true }),\n __metadata(\"design:type\", ElementRef)\n], FileLinkDialogComponent.prototype, \"hrefInput\", void 0);\nFileLinkDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [DialogRef, EditorLocalizationService])\n], FileLinkDialogComponent);\n\n/**\n * @hidden\n */\nconst defaultStyle = `\nhtml, body {\n margin: 0;\n height: 100%;\n padding: 0;\n}\n\nhtml {\n min-height: 100%;\n}\n\nbody {\n box-sizing: border-box;\n position: relative;\n padding: 8px;\n}\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\ndiv.ProseMirror {\n position: relative;\n min-height: 100%;\n word-wrap: break-word;\n white-space: pre-wrap;\n white-space: break-spaces;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n}\n\ndiv.ProseMirror:focus {\n outline: none;\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\n.ProseMirror-hideselection *::selection { background: transparent; }\n.ProseMirror-hideselection *::-moz-selection { background: transparent; }\n.ProseMirror-hideselection { caret-color: transparent; }\n\n.ProseMirror li {\n position: relative;\n}\n\nli.ProseMirror-selectednode {\n outline: none;\n}\n\nli.ProseMirror-selectednode:after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n.ProseMirror .k-placeholder::before {\n content: attr(data-placeholder);\n height: 0;\n color: #8a8a8a;\n float: left;\n opacity: 1;\n cursor: text;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n/* image resizing */\n.k-editor-resize-handles-wrapper {\n position: absolute;\n visibility: hidden;\n}\n\n.k-editor-resize-handle {\n position: absolute;\n visibility: visible;\n background-color: #fff;\n border: 1px solid #000;\n z-index: 100;\n width: 5px;\n height: 5px;\n}\n\n.k-editor-resize-handle.northwest {\n top: 0;\n left: 0;\n transform: translate(-50%, -50%);\n cursor: nw-resize;\n}\n\n.k-editor-resize-handle.north {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n cursor: n-resize;\n}\n\n.k-editor-resize-handle.northeast {\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n cursor: ne-resize;\n}\n\n.k-editor-resize-handle.southwest {\n left: 0;\n bottom: 0;\n transform: translate(-50%, 50%);\n cursor: sw-resize;\n}\n\n.k-editor-resize-handle.south {\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 50%);\n cursor: s-resize;\n}\n\n.k-editor-resize-handle.southeast {\n right: 0;\n bottom: 0;\n transform: translate(50%, 50%);\n cursor: se-resize;\n}\n\n.k-editor-resize-handle.west {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n cursor: w-resize;\n}\n\n.k-editor-resize-handle.east {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n cursor: e-resize;\n}\n`;\n/**\n * @hidden\n */\nconst tablesStyles = `\n .ProseMirror .tableWrapper {\n overflow-x: auto;\n margin: 1em 0;\n }\n\n .ProseMirror table {\n margin: 0;\n border-collapse: collapse;\n table-layout: fixed;\n width: 100%;\n overflow: hidden;\n }\n\n .ProseMirror td, .ProseMirror th {\n min-width: 1em;\n border: 1px solid #ddd;\n padding: 3px 5px;\n vertical-align: top;\n box-sizing: border-box;\n position: relative;\n }\n\n .ProseMirror th {\n font-weight: bold;\n text-align: left;\n }\n\n .ProseMirror .column-resize-handle {\n position: absolute;\n right: -2px;\n top: 0;\n bottom: 0;\n width: 4px;\n z-index: 20;\n background-color: #adf;\n pointer-events: none;\n }\n\n .ProseMirror.resize-cursor {\n cursor: ew-resize;\n cursor: col-resize;\n }\n\n /* Give selected cells a blue overlay */\n .ProseMirror .selectedCell:after {\n z-index: 2;\n position: absolute;\n content: \"\";\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background: rgba(200, 200, 255, 0.4);\n pointer-events: none;\n }\n`;\n/**\n * @hidden\n */\nconst rtlStyles = 'body { direction: rtl }';\n\nconst ɵ0$6 = (arg) => `plugins must be a function, but received ${JSON.stringify(arg)}.`;\n/* tslint:disable:variable-name */\n/**\n * @hidden\n */\nconst EditorErrorMessages = {\n schemaType: 'Expected value of type Schema. See http://www.telerik.com/kendo-angular-ui/components/editor/schema/',\n setSchemaOnce: 'The Schema cannot be changed dynamically. See http://www.telerik.com/kendo-angular-ui/components/editor/schema/',\n pluginsCallbackType: ɵ0$6,\n setPluginsOnce: 'The plugins cannot be changed dynamically. See http://www.telerik.com/kendo-angular-ui/components/editor/plugins/',\n setPlaceHolderOnce: 'The placeholder cannot be changed dynamically. See http://www.telerik.com/kendo-angular-ui/components/editor/placeholder/',\n printTool: 'The Print tool and functionality are supported only in iframe mode. See https://www.telerik.com/kendo-angular-ui-develop/components/editor/api/EditorPrintButtonDirective/'\n};\n\n/**\n * @hidden\n */\nlet EditorToolsService = class EditorToolsService {\n /**\n * @hidden\n */\n constructor() {\n this.needsCheck = new Subject();\n }\n};\nEditorToolsService.ɵfac = function EditorToolsService_Factory(t) { return new (t || EditorToolsService)(); };\nEditorToolsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: EditorToolsService, factory: function (t) { return EditorToolsService.ɵfac(t); } });\n\nvar EditorComponent_1;\nconst EMPTY_PARAGRAPH = '

    ';\nconst defaultPasteCleanupSettings = {\n convertMsLists: false,\n removeAttributes: [],\n removeHtmlComments: false,\n removeInvalidHTML: false,\n removeMsClasses: false,\n removeMsStyles: false,\n stripTags: ['']\n};\nconst removeCommentsIf = conditionallyExecute(removeComments);\nconst removeInvalidHTMLIf = conditionallyExecute(sanitize);\nconst getPasteCleanupAttributes = (config) => {\n if (config.removeAttributes === 'all') {\n return { '*': removeAttribute };\n }\n const initial = removeEmptyEntries({\n style: config.removeMsStyles ? sanitizeStyleAttr : undefined,\n class: config.removeMsClasses ? sanitizeClassAttr : undefined\n });\n return config.removeAttributes.reduce((acc, curr) => (Object.assign({}, acc, { [curr]: removeAttribute })), initial);\n};\n/**\n * Represents the [Kendo UI Editor component for Angular]({% slug overview_editor %}).\n */\nlet EditorComponent = EditorComponent_1 = class EditorComponent {\n constructor(dialogService, localization, cdr, ngZone, element, toolsService) {\n this.dialogService = dialogService;\n this.localization = localization;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.element = element;\n this.toolsService = toolsService;\n /**\n * If set to `false`, the Editor will run in style non-encapsulated mode. This means\n * that the styles of the page will be persisted in the Editor and its content will be affected by them.\n * @default true\n */\n this.iframe = true;\n /**\n * If set to `true` or `ApplyToWordOptions` object, commands that apply emphasis or inline styles will be applied to the whole word the cursor is in.\n * @default false\n */\n this.applyToWord = false;\n /**\n * By design, the Editor emits `valueChange`, updates the model and the ToolBar state on each keystroke.\n * When you are interested in ignoring the new values for a given amout of time and take only the most recent one, you can use the `updateInterval` property.\n * A possible use case is to get the new values and to update the ToolBar state at a maximum rate per second in order to speed up your application.\n * The specified interval (in milliseconds) should be a positive number.\n * By default the `updateInterval` is set to 100 miliseconds. If set to zero the delay will be disabled entirely.\n */\n this.updateInterval = 100;\n /**\n * By default, whitespace is collapsed as per HTML's rules.\n * Set to `true` to preserve whitespace, but normalize newlines to spaces.\n * Set to `'full'` to preserve whitespace entirely. In this case the default ProseMirror behavior is to parse white space into nodes.\n *\n * @default false\n */\n this.preserveWhitespace = false;\n /**\n * Determines whether the Editor can be resized ([see example]({% slug styling_editor %}#toc-resizable-editor)).\n * @default false\n */\n this.resizable = false;\n /**\n * Fires each time the value of the Editor is changed upon user interaction—\n * for example, when the value is updated through typing in the content area or using some of the Editor tools ([see example]({% slug overview_editor %}#toc-events)).\n * When the value of the Editor is programmatically changed through its API (`ngModel`) or form binding (`formControl`),\n * the `valueChange` event is not triggered because it might cause a mix-up with the\n * built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the content area of the Editor is focused ([see example]({% slug overview_editor %}#toc-events)).\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the content area of the Editor is blurred ([see example]({% slug overview_editor %}#toc-events)).\n */\n this.onBlur = new EventEmitter();\n this.hostClass = true;\n /**\n * @hidden\n */\n this.stateChange = new BehaviorSubject(initialToolBarState);\n /**\n * @hidden\n */\n this.valueModified = new Subject();\n this._readonly = false;\n this._placeholder = '';\n this.afterViewInit = new Subject();\n this.contentAreaLoaded = new Subject();\n this.onChangeCallback = (_) => { }; // tslint:disable-line:no-empty\n this.onTouchedCallback = (_) => { }; // tslint:disable-line:no-empty\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n // https://stackoverflow.com/questions/56572483/chrome-is-synchronously-handling-iframe-loading-whereas-firefox-handles-it-asyn\n this.subs = zip(this.afterViewInit.asObservable(), this.contentAreaLoaded.asObservable()).subscribe(() => this.initialize());\n }\n /**\n * Sets the value of the Editor ([see example]({% slug overview_editor %}#toc-basic-usage)).\n */\n set value(value) {\n if (this._previousValue === value) {\n return;\n }\n this._value = value;\n this._previousValue = value;\n if (this._view) {\n const iframeContentWindowNotPresent = this.iframe && !this.container.element.nativeElement.contentWindow;\n if (iframeContentWindowNotPresent) {\n return;\n }\n this.exec('setHTML', {\n content: this._value || '',\n parseOptions: {\n preserveWhitespace: this.preserveWhitespace\n }\n });\n }\n }\n get value() {\n let value = this._view ? this.getSource() : this._value;\n if (value === EMPTY_PARAGRAPH) {\n return this._value ? '' : this._value;\n }\n else {\n return value;\n }\n }\n /**\n * Sets the disabled state of the component.\n */\n set disabled(value) {\n this._disabled = value || false;\n if (this._view) {\n this._view.updateState(this._view.state);\n }\n if (this._disabled) {\n this.readonly = false;\n }\n if (this._disabled || this._readonly) {\n this.stateChange.next(disabledToolBarState);\n }\n else {\n this.stateChange.next(initialToolBarState);\n }\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Sets the read-only state of the component.\n */\n set readonly(value) {\n this._readonly = value || false;\n if (this._view) {\n // remove DOM selection\n let win;\n if (this.iframe) {\n win = this.container.element.nativeElement.contentWindow;\n }\n else {\n win = window;\n }\n const focusedNode = win.getSelection().focusNode;\n if (this._view.dom.contains(focusedNode)) {\n win.getSelection().removeAllRanges();\n }\n // remove ProseMirror selection\n const doc = this._view.state.doc;\n const tr = this._view.state.tr.setSelection(TextSelection.create(doc, 1));\n this._view.dispatch(tr);\n }\n if (this._readonly) {\n if (this.toolbar) {\n this.toolbar.tabindex = -1;\n }\n this.stateChange.next(disabledToolBarState);\n }\n else {\n if (this.toolbar) {\n this.toolbar.tabindex = 0;\n }\n this.stateChange.next(initialToolBarState);\n }\n }\n get readonly() {\n return this._readonly;\n }\n /**\n * Allows providing a custom schema. ([see example]({% slug schema_editor %}))\n */\n set schema(value) {\n if (isDevMode) {\n if (!(value instanceof Schema)) {\n throw new Error(EditorErrorMessages.schemaType);\n }\n if (this._view) {\n throw new Error(EditorErrorMessages.setSchemaOnce);\n }\n }\n this._schema = value;\n }\n get schema() {\n return this._schema;\n }\n /**\n * Defines a function which determines the plugins that will be used when initializing the Editor.\n * It exposes the default plugins collection as an argument, and returns\n * the plugins collection that will be used when creating the Editor component. ([see example]({% slug plugins_editor %}))\n *\n * ```ts-no-run\n * pluginsCallback(defaultPlugins: Plugin[]): Plugin[] {\n * const myPlugin = new Plugin({/custom plugin code/});\n * return [...defaultPlugins, myPlugin];\n * }\n * ```\n */\n set plugins(fn) {\n if (isDevMode) {\n if (typeof fn !== 'function') {\n throw new Error(EditorErrorMessages.pluginsCallbackType(fn));\n }\n if (this._view) {\n throw new Error(EditorErrorMessages.setPluginsOnce);\n }\n }\n this._plugins = fn;\n }\n get plugins() {\n return this._plugins;\n }\n /**\n * The hint, which is displayed when the component is empty.\n */\n set placeholder(value) {\n if (isDevMode && this._view) {\n throw new Error(EditorErrorMessages.setPlaceHolderOnce);\n }\n this._placeholder = value;\n }\n get placeholder() {\n return this._placeholder;\n }\n get resizableClass() {\n return !!this.resizable;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isReadonly() {\n return this.readonly;\n }\n get isIE() {\n return this.iframe && detectIE();\n }\n get dir() {\n return this.direction;\n }\n get ariaDisabled() {\n return this.disabled;\n }\n get minWidth() {\n const resizableOptions = this.resizable;\n return resizableOptions.minWidth ? resizableOptions.minWidth + 'px' : undefined;\n }\n get maxWidth() {\n const resizableOptions = this.resizable;\n return resizableOptions.maxWidth ? resizableOptions.maxWidth + 'px' : undefined;\n }\n get minHeight() {\n const resizableOptions = this.resizable;\n return resizableOptions.minHeight ? resizableOptions.minHeight + 'px' : undefined;\n }\n get maxHeight() {\n const resizableOptions = this.resizable;\n return resizableOptions.maxHeight ? resizableOptions.maxHeight + 'px' : undefined;\n }\n get toolbar() {\n return this.defaultToolbarComponent || this.userToolBarComponent;\n }\n /**\n * Returns the ProseMirror [EditorView](https://prosemirror.net/docs/ref/#view.EditorView) object\n * that manages the DOM structure that represents an editable document.\n */\n get view() {\n return this._view;\n }\n /**\n * Returns the text which the current Editor selection contains ([see example]({% slug selection_editor %}#toc-retrieve-the-selected-text)).\n */\n get selectionText() {\n return this._view && this._view.state ? getSelectionText(this._view.state) : '';\n }\n ngOnInit() {\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n this.subs.add(this.toolsService.needsCheck.subscribe(() => this.cdr.markForCheck()));\n }\n ngAfterViewInit() {\n this.afterViewInit.next();\n if (!this.iframe) {\n this.contentAreaLoaded.next();\n }\n if (this.resizable) {\n this.normalizeSize();\n }\n }\n ngOnChanges(changes) {\n if (changes.iframe && !changes.iframe.isFirstChange()) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialize());\n }\n if (changes.resizable && !changes.resizable.isFirstChange()) {\n this.normalizeSize();\n }\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n iframeOnLoad() {\n this.contentAreaLoaded.next();\n }\n /**\n * Executes a command on the currently selected text\n * ([more information and example]({% slug toolbartools_editor %}#toc-custom-tools)).\n *\n * @param {EditorCommand} commandName - The command that will be executed.\n * @param {any} attr - Optional parameters for the command. Apart from the following list,\n * the parameters do not expect specific attributes when you call them:\n * - `format` - Accepts an object with the `tag` property.\n * The supported tags are `p`, `blockquote`, and any of the `h1` to `h6` heading tags.\n * - `createLink` - Accepts an object with the `href`, `title`, and `target` properties. The `href` property is mandatory.\n * - `setHTML` - Accepts a `string` parameter.\n * - `insertTable` - Accepts an object with the `rows` and `cols` properties. The number values are zero based.\n *\n * @example\n * ```ts-no-run\n * // Toggles the bold styling.\n * editor.exec('bold');\n *\n * // Creates a bullet list.\n * editor.exec('insertUnorderedList');\n *\n * // Creates a link.\n * editor.exec('createLink', { href: 'www.progress.com', title: 'Progress', target: 'window' });\n *\n * // Inserts a file.\n * editor.exec('insertFile', { href: 'www.progress.com/resources/myfile.doc', title: 'My file', target: 'window' });\n *\n * // Inserts a image.\n * editor.exec('insertImage', { src: 'www.progress.com/resources/logo.jpg', title: 'Progress', target: 'window' });\n *\n * // Inserts a text at a given position. If no position is specified, the text will be inserted after the cursor.\n * editor.exec('insertText', { text: 'Hello World!', from: 0, to: 0 });\n *\n * // Changes the format of a text block.\n * editor.exec('format', { tag: 'h2' });\n *\n * // Changes the font size of the selected text.\n * editor.exec('fontSize', 24);\n *\n * // Changes the content of the Editor.\n * editor.exec('setHTML', '

    HTML content

    ');\n *\n * // Creates and inserts a table with the specified number of rows and columns. Numbers are zero based.\n * this.editor.exec(\"insertTable\", { rows: 3, cols: 5 });\n * ```\n */\n exec(commandName, attr) {\n // normalizes setHTML attributes\n if (commandName === 'setHTML' && typeof attr === 'string') {\n attr = {\n content: attr,\n parseOptions: {\n preserveWhitespace: this.preserveWhitespace\n }\n };\n }\n else if (['fontFamily', 'fontSize', 'foreColor', 'backColor', 'createLink'].some(name => name === commandName)) {\n attr = {\n value: attr,\n applyToWord: this.applyToWord\n };\n }\n // Finds a command and applies the attributes.\n const command = editorCommands[commandName](attr);\n // Executes a ProseMirror command.\n command(this._view.state, this._view.dispatch, this._view);\n // See the `dispatchTransaction` comments.\n // this.stateChange.emit(updateToolBar(this.view));\n }\n /**\n * Opens a dialog.\n * @param {DialogCommand} dialogName - The name of the dialog that will open.\n *\n * The supported values are:\n * * `createLink`\n * * `viewSource`\n * * `insertFile`\n * * `insertImage`\n * * `tableWizard`\n *\n * @example\n * ```ts-no-run\n * // Opens a `createLink` dialog.\n * editor.openDialog('createLink');\n *\n * // Opens a `viewSource` dialog.\n * editor.openDialog('viewSource');\n * ```\n */\n openDialog(dialogName) {\n const editorDialogs = {\n createLink: {\n content: FileLinkDialogComponent\n },\n insertFile: {\n content: FileLinkDialogComponent\n },\n insertImage: {\n content: ImageDialogComponent\n },\n viewSource: {\n content: SourceDialogComponent,\n height: 400,\n width: 500\n }\n // tableWizard: {\n // content: TableWizardDialogComponent\n // }\n };\n const dialog = Object.assign({ appendTo: this.dialogContainer }, editorDialogs[dialogName]);\n this.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialog).content.instance;\n if (dialogName === 'createLink' || dialogName === 'insertFile') {\n dialogContent.command = dialogName;\n }\n dialogContent.editor = this;\n dialogContent.setData(this._view.state, { applyToWord: this.applyToWord });\n }\n /**\n * Manually focus the Editor.\n */\n focus() {\n this.focusChangedProgrammatically = true;\n this._view.focus();\n this.focusChangedProgrammatically = false;\n }\n /**\n * Manually blur the Editor.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n this._view.dom.blur();\n this.focusChangedProgrammatically = false;\n }\n /**\n * @hidden\n */\n getSource() {\n return getHtml(this._view.state);\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n if (this._styleObserver) {\n this._styleObserver.disconnect();\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n // To avoid confusion, non-existent values are always undefined.\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 * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n initialize() {\n if (!isDocumentAvailable()) {\n return;\n }\n const currentSchema = this.schema || schema;\n const that = this;\n const containerNativeElement = this.container.element.nativeElement;\n const contentNode = parseContent((this.value || '').trim(), currentSchema, { preserveWhitespace: this.preserveWhitespace });\n if (this.iframe) {\n const iframeDoc = containerNativeElement.contentDocument;\n const meta = iframeDoc.createElement('meta');\n meta.setAttribute('charset', 'utf-8');\n iframeDoc.head.appendChild(meta);\n [defaultStyle, tablesStyles, this.dir === 'rtl' ? rtlStyles : undefined].forEach(styles => {\n if (styles) {\n const style = iframeDoc.createElement('style');\n style.appendChild(iframeDoc.createTextNode(styles));\n iframeDoc.head.appendChild(style);\n }\n });\n const element = iframeDoc.createElement('div');\n iframeDoc.body.appendChild(element);\n }\n else {\n const element = document.createElement('div');\n containerNativeElement.appendChild(element);\n }\n const defaultPlugins = [\n new Plugin({\n key: new PluginKey('editor-tabindex'),\n props: {\n attributes: () => ({\n // set tabindex when contenteditable is false, so that the content area can be selected\n tabIndex: this.readonly ? '0' : ''\n })\n }\n }),\n new Plugin({\n key: new PluginKey('toolbar-tools-update'),\n view: () => ({\n update: editorView => {\n if (!this.disabled) {\n this.stateChange.next(this.readonly ? disabledToolBarState : getToolbarState(editorView.state, { applyToWord: this.applyToWord }));\n }\n }\n })\n }),\n new Plugin({\n key: new PluginKey('editor-filter-disabled-state'),\n filterTransaction: () => !this.disabled\n }),\n history(),\n keymap(buildListKeymap(currentSchema)),\n keymap(buildKeymap(currentSchema, { applyToWord: this.applyToWord })),\n keymap(baseKeymap),\n gapCursor(),\n imageResizing()\n ];\n if (this.placeholder) {\n defaultPlugins.push(placeholder(this.placeholder));\n }\n const state = EditorState.create({\n schema: currentSchema,\n doc: contentNode,\n plugins: isPresent(this.plugins) ? this.plugins(defaultPlugins) : defaultPlugins\n });\n if (this.iframe) {\n this.viewMountElement = containerNativeElement.contentDocument.querySelector('div');\n }\n else {\n this.viewMountElement = containerNativeElement.querySelector('div');\n }\n this.ngZone.runOutsideAngular(() => {\n this._view = new EditorView({ mount: this.viewMountElement }, {\n state,\n editable: () => !this.readonly,\n dispatchTransaction: function (tr) {\n // `this` is bound to the view instance.\n this.updateState(this.state.apply(tr));\n // that.cdr.detectChanges();\n // When the user utilizes keyboard shortcuts—for example, `Ctrl`+`b`—\n // `tr.docChanged` is `true` and the toolbar is not updated.\n // A possible future solution is to move the keymaps to the service.\n // if (!tr.docChanged) {\n // that.stateChange.emit(updateToolBar(that.view));\n // }\n const value = that.value;\n if (!hasSameMarkup(value, that._previousValue, this.state.schema)) {\n that._previousValue = value;\n that.ngZone.run(() => that.valueModified.next(value));\n }\n },\n transformPastedHTML: (html) => {\n const pasteCleanupSettings = Object.assign({}, defaultPasteCleanupSettings, this.pasteCleanupSettings);\n const clean = pipe(removeCommentsIf(pasteCleanupSettings.removeHtmlComments), removeInvalidHTMLIf(pasteCleanupSettings.removeInvalidHTML))(html);\n const attributes = getPasteCleanupAttributes(pasteCleanupSettings);\n return pasteCleanup(clean, {\n convertMsLists: pasteCleanupSettings.convertMsLists,\n stripTags: pasteCleanupSettings.stripTags.join('|'),\n attributes\n });\n }\n });\n });\n if (this._view) {\n let containerElement;\n const contentAreaClasslist = this.element.nativeElement.querySelector('.k-editor-content').classList;\n if (this.iframe) {\n containerElement = this.container.element.nativeElement.contentDocument;\n }\n else {\n containerElement = this.container.element.nativeElement;\n }\n this.subs.add(fromEvent(containerElement, 'focusin')\n .subscribe(() => {\n if (this.readonly) {\n contentAreaClasslist.add('k-state-focused');\n }\n if (!this.focusChangedProgrammatically || this.shouldEmitFocus) {\n this.ngZone.run(() => this.onFocus.emit());\n this.shouldEmitFocus = false;\n }\n }));\n this.subs.add(fromEvent(containerElement, 'focusout')\n .subscribe(() => {\n if (this.readonly) {\n contentAreaClasslist.remove('k-state-focused');\n }\n if (!this.focusChangedProgrammatically) {\n this.ngZone.run(() => this.onBlur.emit());\n }\n }));\n }\n this.subs.add(this.stateChange.subscribe(() => {\n if (this.userToolBarComponent) {\n this.userToolBarComponent.cdr.detectChanges();\n }\n else {\n this.cdr.detectChanges();\n }\n }));\n this.subs.add(merge(this.valueModified.pipe(filter(() => this.updateInterval > 0), auditTime(this.updateInterval)), this.valueModified.pipe(filter(() => this.updateInterval === 0))).subscribe((value) => {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n this.cdr.markForCheck();\n }));\n this.subs.add(fromEvent(this.viewMountElement, 'keyup')\n .pipe(map((e) => e.keyCode), filter((code) => code === 121), // F10\n map(() => this.userToolBarElement || this.defaultToolbar))\n .subscribe((toolbar) => toolbar.nativeElement.focus()));\n this.subs.add(fromEvent(this.viewMountElement, 'blur')\n .pipe(filter((event) => !this.viewMountElement.contains(event.relatedTarget)))\n .subscribe(() => this.onTouchedCallback()));\n }\n normalizeSize() {\n if (typeof this.resizable === 'object' && !this._styleObserver) {\n const element = this.element.nativeElement;\n this._styleObserver = new MutationObserver(() => {\n this.ngZone.runOutsideAngular(() => this.normalizeProperties(element));\n });\n this._styleObserver.observe(element, { attributeFilter: ['style'] });\n }\n }\n normalizeProperties(element) {\n const props = Object.keys(this.resizable);\n const pixelWidth = parseInt(element.style.width, 10);\n const pixelHeight = parseInt(element.style.height, 10);\n const resizable = this.resizable;\n props.forEach(prop => {\n const isMinProp = prop.startsWith('min');\n const isMaxProp = !isMinProp;\n const isWidthProp = prop.endsWith('Width');\n const isHeightProp = !isWidthProp;\n if (isMinProp && isWidthProp) {\n if (pixelWidth < resizable.minWidth) {\n element.style.width = resizable.minWidth + 'px';\n }\n }\n else if (isMinProp && isHeightProp) {\n if (pixelHeight < resizable.minHeight) {\n element.style.height = resizable.minHeight + 'px';\n }\n }\n else if (isMaxProp && isWidthProp) {\n if (pixelWidth > resizable.maxWidth) {\n element.style.width = resizable.maxWidth + 'px';\n }\n }\n else {\n if (pixelHeight > resizable.maxHeight) {\n element.style.height = resizable.maxHeight + 'px';\n }\n }\n });\n }\n};\nEditorComponent.ɵfac = function EditorComponent_Factory(t) { return new (t || EditorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogService), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: EditorComponent, selectors: [[\"kendo-editor\"]], contentQueries: function EditorComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ToolBarComponent, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ToolBarComponent, 5, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.userToolBarComponent = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.userToolBarElement = _t.first);\n } }, viewQuery: function EditorComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c3, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c4, 5, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c5, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c5, 5, ToolBarComponent);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dialogContainer = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.defaultToolbar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.defaultToolbarComponent = _t.first);\n } }, hostVars: 20, hostBindings: function EditorComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir)(\"ariaDisabled\", ctx.ariaDisabled);\n ɵngcc0.ɵɵstyleProp(\"min-width\", ctx.minWidth)(\"max-width\", ctx.maxWidth)(\"min-height\", ctx.minHeight)(\"max-height\", ctx.maxHeight);\n ɵngcc0.ɵɵclassProp(\"k-editor\", ctx.hostClass)(\"k-editor-resizable\", ctx.resizableClass)(\"k-state-disabled\", ctx.isDisabled)(\"k-readonly\", ctx.isReadonly)(\"k-ie\", ctx.isIE);\n } }, inputs: { iframe: \"iframe\", applyToWord: \"applyToWord\", updateInterval: \"updateInterval\", preserveWhitespace: \"preserveWhitespace\", resizable: \"resizable\", value: \"value\", disabled: \"disabled\", readonly: \"readonly\", schema: \"schema\", plugins: \"plugins\", placeholder: \"placeholder\", pasteCleanupSettings: \"pasteCleanupSettings\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n EditorLocalizationService,\n EditorToolsService,\n {\n provide: LocalizationService,\n useExisting: EditorLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.editor'\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent_1),\n multi: true\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => EditorComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c111, decls: 7, vars: 3, consts: function () { let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that aligns text in the center.\n * @meaning kendo.editor.alignCenter\n */\n const MSG_EXTERNAL_4529292660735098393$$DIST_FESM2015_INDEX_JS_7 = goog.getMsg(\"Center text\");\n i18n_6 = MSG_EXTERNAL_4529292660735098393$$DIST_FESM2015_INDEX_JS_7;\n }\n else {\n i18n_6 = $localize `:kendo.editor.alignCenter|The title of the tool that aligns text in the center.␟c19b9de1395639d8d6906083e06a682537d548b8␟4529292660735098393:Center text`;\n } let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that justifies text both left and right.\n * @meaning kendo.editor.alignJustify\n */\n const MSG_EXTERNAL_4684700365643535728$$DIST_FESM2015_INDEX_JS_9 = goog.getMsg(\"Justify\");\n i18n_8 = MSG_EXTERNAL_4684700365643535728$$DIST_FESM2015_INDEX_JS_9;\n }\n else {\n i18n_8 = $localize `:kendo.editor.alignJustify|The title of the tool that justifies text both left and right.␟6fd8af3052680f0e8af558f02aafbdae846763ad␟4684700365643535728:Justify`;\n } let i18n_10; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that aligns text on the left.\n * @meaning kendo.editor.alignLeft\n */\n const MSG_EXTERNAL_154382826604788564$$DIST_FESM2015_INDEX_JS_11 = goog.getMsg(\"Align text left\");\n i18n_10 = MSG_EXTERNAL_154382826604788564$$DIST_FESM2015_INDEX_JS_11;\n }\n else {\n i18n_10 = $localize `:kendo.editor.alignLeft|The title of the tool that aligns text on the left.␟0e6294e25d0445bf78814703fc3db0f9275cdfaf␟154382826604788564:Align text left`;\n } let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that aligns text on the right.\n * @meaning kendo.editor.alignRight\n */\n const MSG_EXTERNAL_947503876024297122$$DIST_FESM2015_INDEX_JS_13 = goog.getMsg(\"Align text right\");\n i18n_12 = MSG_EXTERNAL_947503876024297122$$DIST_FESM2015_INDEX_JS_13;\n }\n else {\n i18n_12 = $localize `:kendo.editor.alignRight|The title of the tool that aligns text on the right.␟e42635af2f5e2255fe4e5e4259139bed6771d5b0␟947503876024297122:Align text right`;\n } let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that changes the text background color.\n * @meaning kendo.editor.backColor\n */\n const MSG_EXTERNAL_6855434377775366481$$DIST_FESM2015_INDEX_JS_15 = goog.getMsg(\"Background color\");\n i18n_14 = MSG_EXTERNAL_6855434377775366481$$DIST_FESM2015_INDEX_JS_15;\n }\n else {\n i18n_14 = $localize `:kendo.editor.backColor|The title of the tool that changes the text background color.␟94feffd30b062ee0ef8aac49af5faebc986b79ee␟6855434377775366481:Background color`;\n } let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that makes text bold.\n * @meaning kendo.editor.bold\n */\n const MSG_EXTERNAL_2189266817166266173$$DIST_FESM2015_INDEX_JS_17 = goog.getMsg(\"Bold\");\n i18n_16 = MSG_EXTERNAL_2189266817166266173$$DIST_FESM2015_INDEX_JS_17;\n }\n else {\n i18n_16 = $localize `:kendo.editor.bold|The title of the tool that makes text bold.␟e1a1b567ad44320e7949153f90b735a000e0dd54␟2189266817166266173:Bold`;\n } let i18n_18; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Clean Formatting tool.\n * @meaning kendo.editor.cleanFormatting\n */\n const MSG_EXTERNAL_6409775087646476318$$DIST_FESM2015_INDEX_JS_19 = goog.getMsg(\"Clean formatting\");\n i18n_18 = MSG_EXTERNAL_6409775087646476318$$DIST_FESM2015_INDEX_JS_19;\n }\n else {\n i18n_18 = $localize `:kendo.editor.cleanFormatting|The title of the Clean Formatting tool.␟6ee3ea0c48aeb94e9ed4b728391edc424c5b2b90␟6409775087646476318:Clean formatting`;\n } let i18n_20; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that creates hyperlinks.\n * @meaning kendo.editor.createLink\n */\n const MSG_EXTERNAL_2895696791468415067$$DIST_FESM2015_INDEX_JS_21 = goog.getMsg(\"Insert link\");\n i18n_20 = MSG_EXTERNAL_2895696791468415067$$DIST_FESM2015_INDEX_JS_21;\n }\n else {\n i18n_20 = $localize `:kendo.editor.createLink|The title of the tool that creates hyperlinks.␟a0857ff55fd21727d74e873d164f6785c4a1d2a4␟2895696791468415067:Insert link`;\n } let i18n_22; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the **Apply** button in all editor dialogs.\n * @meaning kendo.editor.dialogApply\n */\n const MSG_EXTERNAL_3478270206890847719$$DIST_FESM2015_INDEX_JS_23 = goog.getMsg(\"Apply\");\n i18n_22 = MSG_EXTERNAL_3478270206890847719$$DIST_FESM2015_INDEX_JS_23;\n }\n else {\n i18n_22 = $localize `:kendo.editor.dialogApply|The label of the **Apply** button in all editor dialogs.␟0205d0783c43657539254c5d8cd37d4a88911f1d␟3478270206890847719:Apply`;\n } let i18n_24; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the **Cancel** button in all editor dialogs.\n * @meaning kendo.editor.dialogCancel\n */\n const MSG_EXTERNAL_1436637880389464255$$DIST_FESM2015_INDEX_JS_25 = goog.getMsg(\"Cancel\");\n i18n_24 = MSG_EXTERNAL_1436637880389464255$$DIST_FESM2015_INDEX_JS_25;\n }\n else {\n i18n_24 = $localize `:kendo.editor.dialogCancel|The label of the **Cancel** button in all editor dialogs.␟62c847eb7dfe44fa70224659b77a69e04ad24e98␟1436637880389464255:Cancel`;\n } let i18n_26; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the **Insert** button in all editor dialogs.\n * @meaning kendo.editor.dialogInsert\n */\n const MSG_EXTERNAL_1902538342017591848$$DIST_FESM2015_INDEX_JS_27 = goog.getMsg(\"Insert\");\n i18n_26 = MSG_EXTERNAL_1902538342017591848$$DIST_FESM2015_INDEX_JS_27;\n }\n else {\n i18n_26 = $localize `:kendo.editor.dialogInsert|The label of the **Insert** button in all editor dialogs.␟e2897c2d92e5b0f60dbc34568ea63ee29aac72b1␟1902538342017591848:Insert`;\n } let i18n_28; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the **Update** button in all editor dialogs.\n * @meaning kendo.editor.dialogUpdate\n */\n const MSG_EXTERNAL_3131813297607973618$$DIST_FESM2015_INDEX_JS_29 = goog.getMsg(\"Update\");\n i18n_28 = MSG_EXTERNAL_3131813297607973618$$DIST_FESM2015_INDEX_JS_29;\n }\n else {\n i18n_28 = $localize `:kendo.editor.dialogUpdate|The label of the **Update** button in all editor dialogs.␟da599b240288c66d5682ecf53647fae17b1f255d␟3131813297607973618:Update`;\n } let i18n_30; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the file text in the insertFile dialog.\n * @meaning kendo.editor.fileText\n */\n const MSG_EXTERNAL_2994440335095238335$$DIST_FESM2015_INDEX_JS_31 = goog.getMsg(\"Text\");\n i18n_30 = MSG_EXTERNAL_2994440335095238335$$DIST_FESM2015_INDEX_JS_31;\n }\n else {\n i18n_30 = $localize `:kendo.editor.fileText|The caption for the file text in the insertFile dialog.␟b9e9c0726907339811d576fbecf9ee7ef25228dd␟2994440335095238335:Text`;\n } let i18n_32; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the file Title in the insertFile dialog.\n * @meaning kendo.editor.fileTitle\n */\n const MSG_EXTERNAL_2270852727137392864$$DIST_FESM2015_INDEX_JS_33 = goog.getMsg(\"Title\");\n i18n_32 = MSG_EXTERNAL_2270852727137392864$$DIST_FESM2015_INDEX_JS_33;\n }\n else {\n i18n_32 = $localize `:kendo.editor.fileTitle|The caption for the file Title in the insertFile dialog.␟773650e91245315dd99ba76678b651035d896449␟2270852727137392864:Title`;\n } let i18n_34; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the file URL in the insertFile dialog.\n * @meaning kendo.editor.fileWebAddress\n */\n const MSG_EXTERNAL_272090133902355251$$DIST_FESM2015_INDEX_JS_35 = goog.getMsg(\"Web address\");\n i18n_34 = MSG_EXTERNAL_272090133902355251$$DIST_FESM2015_INDEX_JS_35;\n }\n else {\n i18n_34 = $localize `:kendo.editor.fileWebAddress|The caption for the file URL in the insertFile dialog.␟920e262f27d93e37174869fe53fbda129edd6220␟272090133902355251:Web address`;\n } let i18n_36; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that changes the text font.\n * @meaning kendo.editor.fontFamily\n */\n const MSG_EXTERNAL_2242101754750506857$$DIST_FESM2015_INDEX_JS_37 = goog.getMsg(\"Select font family\");\n i18n_36 = MSG_EXTERNAL_2242101754750506857$$DIST_FESM2015_INDEX_JS_37;\n }\n else {\n i18n_36 = $localize `:kendo.editor.fontFamily|The title of the tool that changes the text font.␟b3c7dd6b566ab94cbad12176f608f617394069a5␟2242101754750506857:Select font family`;\n } let i18n_38; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that changes the text size.\n * @meaning kendo.editor.fontSize\n */\n const MSG_EXTERNAL_3134383620280891369$$DIST_FESM2015_INDEX_JS_39 = goog.getMsg(\"Select font size\");\n i18n_38 = MSG_EXTERNAL_3134383620280891369$$DIST_FESM2015_INDEX_JS_39;\n }\n else {\n i18n_38 = $localize `:kendo.editor.fontSize|The title of the tool that changes the text size.␟1e36b676782998a979c662191a815b60e212b1e4␟3134383620280891369:Select font size`;\n } let i18n_40; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that changes the text color.\n * @meaning kendo.editor.foreColor\n */\n const MSG_EXTERNAL_5478978124365341523$$DIST_FESM2015_INDEX_JS_41 = goog.getMsg(\"Color\");\n i18n_40 = MSG_EXTERNAL_5478978124365341523$$DIST_FESM2015_INDEX_JS_41;\n }\n else {\n i18n_40 = $localize `:kendo.editor.foreColor|The title of the tool that changes the text color.␟6b7246584279a0e44d9bd9cb953a0c701696d059␟5478978124365341523:Color`;\n } let i18n_42; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that lets users choose block formats.\n * @meaning kendo.editor.format\n */\n const MSG_EXTERNAL_7573626268088286043$$DIST_FESM2015_INDEX_JS_43 = goog.getMsg(\"Format\");\n i18n_42 = MSG_EXTERNAL_7573626268088286043$$DIST_FESM2015_INDEX_JS_43;\n }\n else {\n i18n_42 = $localize `:kendo.editor.format|The title of the tool that lets users choose block formats.␟27423769f36c1e1662739fe78b0a29f8449ca2ed␟7573626268088286043:Format`;\n } let i18n_44; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the image alternate text in the insertImage dialog.\n * @meaning kendo.editor.imageAltText\n */\n const MSG_EXTERNAL_2605419586703055723$$DIST_FESM2015_INDEX_JS_45 = goog.getMsg(\"Alternate text\");\n i18n_44 = MSG_EXTERNAL_2605419586703055723$$DIST_FESM2015_INDEX_JS_45;\n }\n else {\n i18n_44 = $localize `:kendo.editor.imageAltText|The caption for the image alternate text in the insertImage dialog.␟588c2538a305890410558065bbb376099873f059␟2605419586703055723:Alternate text`;\n } let i18n_46; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the image height in the insertImage dialog.\n * @meaning kendo.editor.imageHeight\n */\n const MSG_EXTERNAL_7389256657313538937$$DIST_FESM2015_INDEX_JS_47 = goog.getMsg(\"Height (px)\");\n i18n_46 = MSG_EXTERNAL_7389256657313538937$$DIST_FESM2015_INDEX_JS_47;\n }\n else {\n i18n_46 = $localize `:kendo.editor.imageHeight|The caption for the image height in the insertImage dialog.␟1f22b7da203eebe3e1efd22cc86aa9b990b0c16f␟7389256657313538937:Height (px)`;\n } let i18n_48; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the image URL in the insertImage dialog.\n * @meaning kendo.editor.imageWebAddress\n */\n const MSG_EXTERNAL_6975958345731927150$$DIST_FESM2015_INDEX_JS_49 = goog.getMsg(\"Web address\");\n i18n_48 = MSG_EXTERNAL_6975958345731927150$$DIST_FESM2015_INDEX_JS_49;\n }\n else {\n i18n_48 = $localize `:kendo.editor.imageWebAddress|The caption for the image URL in the insertImage dialog.␟31537a903057886e7fb1a79cd5cde73a649a8ed6␟6975958345731927150:Web address`;\n } let i18n_50; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the image width in the insertImage dialog.\n * @meaning kendo.editor.imageWidth\n */\n const MSG_EXTERNAL_8309100232203036921$$DIST_FESM2015_INDEX_JS_51 = goog.getMsg(\"Width (px)\");\n i18n_50 = MSG_EXTERNAL_8309100232203036921$$DIST_FESM2015_INDEX_JS_51;\n }\n else {\n i18n_50 = $localize `:kendo.editor.imageWidth|The caption for the image width in the insertImage dialog.␟4f26f47317f5b69c192fbc9cafecb432e8fa8ee5␟8309100232203036921:Width (px)`;\n } let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that indents the content.\n * @meaning kendo.editor.indent\n */\n const MSG_EXTERNAL_5647108364628468094$$DIST_FESM2015_INDEX_JS_53 = goog.getMsg(\"Indent\");\n i18n_52 = MSG_EXTERNAL_5647108364628468094$$DIST_FESM2015_INDEX_JS_53;\n }\n else {\n i18n_52 = $localize `:kendo.editor.indent|The title of the tool that indents the content.␟332319db3aabf32cd56e64e1569276c5f878fd5d␟5647108364628468094:Indent`;\n } let i18n_54; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that inserts links to files.\n * @meaning kendo.editor.insertFile\n */\n const MSG_EXTERNAL_539957110154874519$$DIST_FESM2015_INDEX_JS_55 = goog.getMsg(\"Insert file\");\n i18n_54 = MSG_EXTERNAL_539957110154874519$$DIST_FESM2015_INDEX_JS_55;\n }\n else {\n i18n_54 = $localize `:kendo.editor.insertFile|The title of the tool that inserts links to files.␟f57591626833e959e88b177754c2e996119a3c1a␟539957110154874519:Insert file`;\n } let i18n_56; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that inserts images.\n * @meaning kendo.editor.insertImage\n */\n const MSG_EXTERNAL_3091202802113261385$$DIST_FESM2015_INDEX_JS_57 = goog.getMsg(\"Insert image\");\n i18n_56 = MSG_EXTERNAL_3091202802113261385$$DIST_FESM2015_INDEX_JS_57;\n }\n else {\n i18n_56 = $localize `:kendo.editor.insertImage|The title of the tool that inserts images.␟759c8463401821450bfa80fd9106314adab25ca3␟3091202802113261385:Insert image`;\n } let i18n_58; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that inserts an ordered list.\n * @meaning kendo.editor.insertOrderedList\n */\n const MSG_EXTERNAL_4334727692818265844$$DIST_FESM2015_INDEX_JS_59 = goog.getMsg(\"Insert ordered list\");\n i18n_58 = MSG_EXTERNAL_4334727692818265844$$DIST_FESM2015_INDEX_JS_59;\n }\n else {\n i18n_58 = $localize `:kendo.editor.insertOrderedList|The title of the tool that inserts an ordered list.␟9de4d5df2c52ec20dda585ddf9046b64042a63dc␟4334727692818265844:Insert ordered list`;\n } let i18n_60; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that inserts an unordered list.\n * @meaning kendo.editor.insertUnorderedList\n */\n const MSG_EXTERNAL_6391583758449842507$$DIST_FESM2015_INDEX_JS_61 = goog.getMsg(\"Insert unordered list\");\n i18n_60 = MSG_EXTERNAL_6391583758449842507$$DIST_FESM2015_INDEX_JS_61;\n }\n else {\n i18n_60 = $localize `:kendo.editor.insertUnorderedList|The title of the tool that inserts an unordered list.␟2c56625f542e63a0fcb2cdfff32ac7958a773131␟6391583758449842507:Insert unordered list`;\n } let i18n_62; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that makes text italicized.\n * @meaning kendo.editor.italic\n */\n const MSG_EXTERNAL_7054357458452689543$$DIST_FESM2015_INDEX_JS_63 = goog.getMsg(\"Italic\");\n i18n_62 = MSG_EXTERNAL_7054357458452689543$$DIST_FESM2015_INDEX_JS_63;\n }\n else {\n i18n_62 = $localize `:kendo.editor.italic|The title of the tool that makes text italicized.␟0c2f657b2d63906813f0d999c34639d6703d29fe␟7054357458452689543:Italic`;\n } let i18n_64; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the checkbox for opening the link in a new window in the createLink dialog.\n * @meaning kendo.editor.linkOpenInNewWindow\n */\n const MSG_EXTERNAL_6304412528521452300$$DIST_FESM2015_INDEX_JS_65 = goog.getMsg(\"Open link in new window\");\n i18n_64 = MSG_EXTERNAL_6304412528521452300$$DIST_FESM2015_INDEX_JS_65;\n }\n else {\n i18n_64 = $localize `:kendo.editor.linkOpenInNewWindow|The caption for the checkbox for opening the link in a new window in the createLink dialog.␟7ddbe5ff681ec56e0a1d47f55baf03aae43143f0␟6304412528521452300:Open link in new window`;\n } let i18n_66; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the link text in the createLink dialog.\n * @meaning kendo.editor.linkText\n */\n const MSG_EXTERNAL_8060045722754477150$$DIST_FESM2015_INDEX_JS_67 = goog.getMsg(\"Text\");\n i18n_66 = MSG_EXTERNAL_8060045722754477150$$DIST_FESM2015_INDEX_JS_67;\n }\n else {\n i18n_66 = $localize `:kendo.editor.linkText|The caption for the link text in the createLink dialog.␟bc5096e9fa3fd49769d041a4734d5d5d8e6fd0e9␟8060045722754477150:Text`;\n } let i18n_68; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the link title in the createLink dialog.\n * @meaning kendo.editor.linkTitle\n */\n const MSG_EXTERNAL_330780229810449102$$DIST_FESM2015_INDEX_JS_69 = goog.getMsg(\"Title\");\n i18n_68 = MSG_EXTERNAL_330780229810449102$$DIST_FESM2015_INDEX_JS_69;\n }\n else {\n i18n_68 = $localize `:kendo.editor.linkTitle|The caption for the link title in the createLink dialog.␟e5c8208c08928222b713afcf80de78633236349d␟330780229810449102:Title`;\n } let i18n_70; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The caption for the URL in the createLink dialog.\n * @meaning kendo.editor.linkWebAddress\n */\n const MSG_EXTERNAL_6362180643798508446$$DIST_FESM2015_INDEX_JS_71 = goog.getMsg(\"Web address\");\n i18n_70 = MSG_EXTERNAL_6362180643798508446$$DIST_FESM2015_INDEX_JS_71;\n }\n else {\n i18n_70 = $localize `:kendo.editor.linkWebAddress|The caption for the URL in the createLink dialog.␟19f853c2933a9a1b71d96accf814e4f9e9e6e8dd␟6362180643798508446:Web address`;\n } let i18n_72; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that outdents the content.\n * @meaning kendo.editor.outdent\n */\n const MSG_EXTERNAL_8474960686200350213$$DIST_FESM2015_INDEX_JS_73 = goog.getMsg(\"Outdent\");\n i18n_72 = MSG_EXTERNAL_8474960686200350213$$DIST_FESM2015_INDEX_JS_73;\n }\n else {\n i18n_72 = $localize `:kendo.editor.outdent|The title of the tool that outdents the content.␟33a49dc9bce8c37c9c957a6cdb7fcd0b82b8bf58␟8474960686200350213:Outdent`;\n } let i18n_74; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the print tool.\n * @meaning kendo.editor.print\n */\n const MSG_EXTERNAL_80847516738809405$$DIST_FESM2015_INDEX_JS_75 = goog.getMsg(\"Print\");\n i18n_74 = MSG_EXTERNAL_80847516738809405$$DIST_FESM2015_INDEX_JS_75;\n }\n else {\n i18n_74 = $localize `:kendo.editor.print|The title of the print tool.␟9d52f416bc1f1a35c55906e927a19befea8a2b84␟80847516738809405:Print`;\n } let i18n_76; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that undos the last action.\n * @meaning kendo.editor.redo\n */\n const MSG_EXTERNAL_6526989398460728046$$DIST_FESM2015_INDEX_JS_77 = goog.getMsg(\"Redo\");\n i18n_76 = MSG_EXTERNAL_6526989398460728046$$DIST_FESM2015_INDEX_JS_77;\n }\n else {\n i18n_76 = $localize `:kendo.editor.redo|The title of the tool that undos the last action.␟117c237ef9fa6ff04fb4447fc233fe846ed366c1␟6526989398460728046:Redo`;\n } let i18n_78; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that selects all content.\n * @meaning kendo.editor.selectAll\n */\n const MSG_EXTERNAL_7460989834038782177$$DIST_FESM2015_INDEX_JS_79 = goog.getMsg(\"Select All\");\n i18n_78 = MSG_EXTERNAL_7460989834038782177$$DIST_FESM2015_INDEX_JS_79;\n }\n else {\n i18n_78 = $localize `:kendo.editor.selectAll|The title of the tool that selects all content.␟f2421e26609d5f0e84c4db8da0d8990a764eb604␟7460989834038782177:Select All`;\n } let i18n_80; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that strikes through text.\n * @meaning kendo.editor.strikethrough\n */\n const MSG_EXTERNAL_2488604920377820272$$DIST_FESM2015_INDEX_JS_81 = goog.getMsg(\"Strikethrough\");\n i18n_80 = MSG_EXTERNAL_2488604920377820272$$DIST_FESM2015_INDEX_JS_81;\n }\n else {\n i18n_80 = $localize `:kendo.editor.strikethrough|The title of the tool that strikes through text.␟6e38a1450b5d50601f44a665fbb329feca31e97b␟2488604920377820272:Strikethrough`;\n } let i18n_82; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that makes text subscript.\n * @meaning kendo.editor.subscript\n */\n const MSG_EXTERNAL_7270994954007735302$$DIST_FESM2015_INDEX_JS_83 = goog.getMsg(\"Subscript\");\n i18n_82 = MSG_EXTERNAL_7270994954007735302$$DIST_FESM2015_INDEX_JS_83;\n }\n else {\n i18n_82 = $localize `:kendo.editor.subscript|The title of the tool that makes text subscript.␟2bd31b9317a43ee8fb808b0c254b1bb200f908fa␟7270994954007735302:Subscript`;\n } let i18n_84; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that makes text superscript.\n * @meaning kendo.editor.superscript\n */\n const MSG_EXTERNAL_7596297815131300603$$DIST_FESM2015_INDEX_JS_85 = goog.getMsg(\"Superscript\");\n i18n_84 = MSG_EXTERNAL_7596297815131300603$$DIST_FESM2015_INDEX_JS_85;\n }\n else {\n i18n_84 = $localize `:kendo.editor.superscript|The title of the tool that makes text superscript.␟825050144d6680f962bf7ec296c42e08e6ac09d9␟7596297815131300603:Superscript`;\n } let i18n_86; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that underlines text.\n * @meaning kendo.editor.underline\n */\n const MSG_EXTERNAL_8473045911658532041$$DIST_FESM2015_INDEX_JS_87 = goog.getMsg(\"Underline\");\n i18n_86 = MSG_EXTERNAL_8473045911658532041$$DIST_FESM2015_INDEX_JS_87;\n }\n else {\n i18n_86 = $localize `:kendo.editor.underline|The title of the tool that underlines text.␟67eb1cff18f5e9a2e7d47aae052c666583bab261␟8473045911658532041:Underline`;\n } let i18n_88; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that removes hyperlinks.\n * @meaning kendo.editor.unlink\n */\n const MSG_EXTERNAL_1024469129593792947$$DIST_FESM2015_INDEX_JS_89 = goog.getMsg(\"Remove Link\");\n i18n_88 = MSG_EXTERNAL_1024469129593792947$$DIST_FESM2015_INDEX_JS_89;\n }\n else {\n i18n_88 = $localize `:kendo.editor.unlink|The title of the tool that removes hyperlinks.␟ad3a3c5c713542df87373b77cae8a124edb29c22␟1024469129593792947:Remove Link`;\n } let i18n_90; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that undos the last action.\n * @meaning kendo.editor.undo\n */\n const MSG_EXTERNAL_3987002812814489417$$DIST_FESM2015_INDEX_JS_91 = goog.getMsg(\"Undo\");\n i18n_90 = MSG_EXTERNAL_3987002812814489417$$DIST_FESM2015_INDEX_JS_91;\n }\n else {\n i18n_90 = $localize `:kendo.editor.undo|The title of the tool that undos the last action.␟18b488b145eeea939eecd65716bc3578939dcc0f␟3987002812814489417:Undo`;\n } let i18n_92; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that shows the editor value as HTML.\n * @meaning kendo.editor.viewSource\n */\n const MSG_EXTERNAL_3825180996241734650$$DIST_FESM2015_INDEX_JS_93 = goog.getMsg(\"View source\");\n i18n_92 = MSG_EXTERNAL_3825180996241734650$$DIST_FESM2015_INDEX_JS_93;\n }\n else {\n i18n_92 = $localize `:kendo.editor.viewSource|The title of the tool that shows the editor value as HTML.␟3caea7fc81a53a3e225561af33a56902f642ac26␟3825180996241734650:View source`;\n } let i18n_94; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that inserts table.\n * @meaning kendo.editor.insertTable\n */\n const MSG_EXTERNAL_5261534950694067764$$DIST_FESM2015_INDEX_JS_95 = goog.getMsg(\"Insert Table\");\n i18n_94 = MSG_EXTERNAL_5261534950694067764$$DIST_FESM2015_INDEX_JS_95;\n }\n else {\n i18n_94 = $localize `:kendo.editor.insertTable|The title of the tool that inserts table.␟32de5e66d4b2073bded7114d8a1ea1411cd7ceec␟5261534950694067764:Insert Table`;\n } let i18n_96; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that adds new column before currently selected column.\n * @meaning kendo.editor.addColumnBefore\n */\n const MSG_EXTERNAL_2967496815045471366$$DIST_FESM2015_INDEX_JS_97 = goog.getMsg(\"Add column before\");\n i18n_96 = MSG_EXTERNAL_2967496815045471366$$DIST_FESM2015_INDEX_JS_97;\n }\n else {\n i18n_96 = $localize `:kendo.editor.addColumnBefore|The title of the tool that adds new column before currently selected column.␟66c68280830690c0ebd374fd34dead01df2e7057␟2967496815045471366:Add column before`;\n } let i18n_98; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that adds new column after currently selected column.\n * @meaning kendo.editor.addColumnAfter\n */\n const MSG_EXTERNAL_1046762424668985150$$DIST_FESM2015_INDEX_JS_99 = goog.getMsg(\"Add column after\");\n i18n_98 = MSG_EXTERNAL_1046762424668985150$$DIST_FESM2015_INDEX_JS_99;\n }\n else {\n i18n_98 = $localize `:kendo.editor.addColumnAfter|The title of the tool that adds new column after currently selected column.␟24d531a9e3507a6ad02bff394c5030a25a731d66␟1046762424668985150:Add column after`;\n } let i18n_100; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that adds new row before currently selected row.\n * @meaning kendo.editor.addRowBefore\n */\n const MSG_EXTERNAL_5531388093960518917$$DIST_FESM2015_INDEX_JS_101 = goog.getMsg(\"Add row before\");\n i18n_100 = MSG_EXTERNAL_5531388093960518917$$DIST_FESM2015_INDEX_JS_101;\n }\n else {\n i18n_100 = $localize `:kendo.editor.addRowBefore|The title of the tool that adds new row before currently selected row.␟c42641b164ae5711cb01b88bcde664031cc230bf␟5531388093960518917:Add row before`;\n } let i18n_102; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that adds new row after currently selected row.\n * @meaning kendo.editor.addRowAfter\n */\n const MSG_EXTERNAL_6647582145372406524$$DIST_FESM2015_INDEX_JS_103 = goog.getMsg(\"Add row after\");\n i18n_102 = MSG_EXTERNAL_6647582145372406524$$DIST_FESM2015_INDEX_JS_103;\n }\n else {\n i18n_102 = $localize `:kendo.editor.addRowAfter|The title of the tool that adds new row after currently selected row.␟c852853beee80e68e673421fd4bc57fa49d417d9␟6647582145372406524:Add row after`;\n } let i18n_104; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that deletes a table column.\n * @meaning kendo.editor.deleteColumn\n */\n const MSG_EXTERNAL_7009319757848972360$$DIST_FESM2015_INDEX_JS_105 = goog.getMsg(\"Delete column\");\n i18n_104 = MSG_EXTERNAL_7009319757848972360$$DIST_FESM2015_INDEX_JS_105;\n }\n else {\n i18n_104 = $localize `:kendo.editor.deleteColumn|The title of the tool that deletes a table column.␟233fbf121ca8b9ea127211a83ab72f0daf01593a␟7009319757848972360:Delete column`;\n } let i18n_106; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that deletes a table row.\n * @meaning kendo.editor.deleteRow\n */\n const MSG_EXTERNAL_8410650025259601548$$DIST_FESM2015_INDEX_JS_107 = goog.getMsg(\"Delete row\");\n i18n_106 = MSG_EXTERNAL_8410650025259601548$$DIST_FESM2015_INDEX_JS_107;\n }\n else {\n i18n_106 = $localize `:kendo.editor.deleteRow|The title of the tool that deletes a table row.␟a7bf50c04d3769d4bde61bab60e6aaa0e982a488␟8410650025259601548:Delete row`;\n } let i18n_108; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the tool that deletes a table.\n * @meaning kendo.editor.deleteTable\n */\n const MSG_EXTERNAL_3609415533235721295$$DIST_FESM2015_INDEX_JS_109 = goog.getMsg(\"Delete table\");\n i18n_108 = MSG_EXTERNAL_3609415533235721295$$DIST_FESM2015_INDEX_JS_109;\n }\n else {\n i18n_108 = $localize `:kendo.editor.deleteTable|The title of the tool that deletes a table.␟2694410604d01084a49e5225a60fbe3eda3af5cc␟3609415533235721295:Delete table`;\n } return [[\"kendoEditorLocalizedMessages\", \"\", \"alignCenter\", i18n_6, \"alignJustify\", i18n_8, \"alignLeft\", i18n_10, \"alignRight\", i18n_12, \"backColor\", i18n_14, \"bold\", i18n_16, \"cleanFormatting\", i18n_18, \"createLink\", i18n_20, \"dialogApply\", i18n_22, \"dialogCancel\", i18n_24, \"dialogInsert\", i18n_26, \"dialogUpdate\", i18n_28, \"fileText\", i18n_30, \"fileTitle\", i18n_32, \"fileWebAddress\", i18n_34, \"fontFamily\", i18n_36, \"fontSize\", i18n_38, \"foreColor\", i18n_40, \"format\", i18n_42, \"imageAltText\", i18n_44, \"imageHeight\", i18n_46, \"imageWebAddress\", i18n_48, \"imageWidth\", i18n_50, \"indent\", i18n_52, \"insertFile\", i18n_54, \"insertImage\", i18n_56, \"insertOrderedList\", i18n_58, \"insertUnorderedList\", i18n_60, \"italic\", i18n_62, \"linkOpenInNewWindow\", i18n_64, \"linkText\", i18n_66, \"linkTitle\", i18n_68, \"linkWebAddress\", i18n_70, \"outdent\", i18n_72, \"print\", i18n_74, \"redo\", i18n_76, \"selectAll\", i18n_78, \"strikethrough\", i18n_80, \"subscript\", i18n_82, \"superscript\", i18n_84, \"underline\", i18n_86, \"unlink\", i18n_88, \"undo\", i18n_90, \"viewSource\", i18n_92, \"insertTable\", i18n_94, \"addColumnBefore\", i18n_96, \"addColumnAfter\", i18n_98, \"addRowBefore\", i18n_100, \"addRowAfter\", i18n_102, \"deleteColumn\", i18n_104, \"deleteRow\", i18n_106, \"deleteTable\", i18n_108], [3, \"overflow\", \"tabindex\", 4, \"ngIf\"], [\"class\", \"k-editor-content\", 4, \"ngIf\"], [\"dialogsContainer\", \"\"], [3, \"overflow\", \"tabindex\"], [\"defaultToolbar\", \"\"], [\"kendoEditorBoldButton\", \"\"], [\"kendoEditorItalicButton\", \"\"], [\"kendoEditorUnderlineButton\", \"\"], [\"kendoEditorFormat\", \"\"], [\"kendoEditorAlignLeftButton\", \"\"], [\"kendoEditorAlignCenterButton\", \"\"], [\"kendoEditorAlignRightButton\", \"\"], [\"kendoEditorAlignJustifyButton\", \"\"], [\"kendoEditorInsertUnorderedListButton\", \"\"], [\"kendoEditorInsertOrderedListButton\", \"\"], [\"kendoEditorIndentButton\", \"\"], [\"kendoEditorOutdentButton\", \"\"], [\"kendoEditorCreateLinkButton\", \"\"], [\"kendoEditorUnlinkButton\", \"\"], [\"kendoEditorInsertImageButton\", \"\"], [1, \"k-editor-content\"], [\"content\", \"\"], [\"frameborder\", \"0\", 1, \"k-iframe\", 3, \"load\"]]; }, template: function EditorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c110);\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵtemplate(2, EditorComponent_kendo_toolbar_2_Template, 21, 2, \"kendo-toolbar\", 1);\n ɵngcc0.ɵɵtemplate(3, EditorComponent_div_3_Template, 2, 1, \"div\", 2);\n ɵngcc0.ɵɵtemplate(4, EditorComponent_div_4_Template, 3, 0, \"div\", 2);\n ɵngcc0.ɵɵelementContainer(5, null, 3);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.userToolBarElement);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.iframe);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.iframe);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc4.NgIf, ɵngcc6.ToolBarComponent, ɵngcc6.ToolBarButtonGroupComponent, ɵngcc6.ToolBarButtonComponent, EditorBoldButtonDirective, EditorItalicButtonDirective, EditorUnderlineButtonDirective, EditorFormatComponent, EditorAlignLeftButtonDirective, EditorAlignCenterButtonDirective, EditorAlignRightButtonDirective, EditorAlignJustifyButtonDirective, EditorInsertUnorderedListButtonDirective, EditorInsertOrderedListButtonDirective, EditorIndentButtonDirective, EditorOutdentButtonDirective, EditorCreateLinkButtonDirective, EditorUnlinkButtonDirective, EditorInsertImageButtonDirective]; }, styles: [\".k-editor-content > .ProseMirror {\\n height: 100%;\\n width: 100%;\\n box-sizing: border-box;\\n outline: none;\\n overflow: auto;\\n }\\n\\n .k-iframe[_ngcontent-%COMP%] {\\n width: 100%;\\n height: 100%;\\n display: block;\\n }\"] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], EditorComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], EditorComponent.prototype, \"disabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], EditorComponent.prototype, \"readonly\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], EditorComponent.prototype, \"iframe\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], EditorComponent.prototype, \"applyToWord\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Schema),\n __metadata(\"design:paramtypes\", [Schema])\n], EditorComponent.prototype, \"schema\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], EditorComponent.prototype, \"plugins\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], EditorComponent.prototype, \"placeholder\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], EditorComponent.prototype, \"updateInterval\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], EditorComponent.prototype, \"preserveWhitespace\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], EditorComponent.prototype, \"pasteCleanupSettings\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], EditorComponent.prototype, \"resizable\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], EditorComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], EditorComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], EditorComponent.prototype, \"onBlur\", void 0);\n__decorate([\n HostBinding('class.k-editor'),\n __metadata(\"design:type\", Boolean)\n], EditorComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-editor-resizable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"resizableClass\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"isDisabled\", null);\n__decorate([\n HostBinding('class.k-readonly'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"isReadonly\", null);\n__decorate([\n HostBinding('class.k-ie'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"isIE\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('attr.ariaDisabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"ariaDisabled\", null);\n__decorate([\n HostBinding('style.minWidth'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"minWidth\", null);\n__decorate([\n HostBinding('style.maxWidth'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"maxWidth\", null);\n__decorate([\n HostBinding('style.minHeight'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"minHeight\", null);\n__decorate([\n HostBinding('style.maxHeight'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], EditorComponent.prototype, \"maxHeight\", null);\n__decorate([\n ContentChild(ToolBarComponent, { static: false }),\n __metadata(\"design:type\", ToolBarComponent)\n], EditorComponent.prototype, \"userToolBarComponent\", void 0);\n__decorate([\n ContentChild(ToolBarComponent, { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorComponent.prototype, \"userToolBarElement\", void 0);\n__decorate([\n ViewChild('dialogsContainer', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], EditorComponent.prototype, \"dialogContainer\", void 0);\n__decorate([\n ViewChild('content', { read: ViewContainerRef, static: false }),\n __metadata(\"design:type\", ViewContainerRef)\n], EditorComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('defaultToolbar', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorComponent.prototype, \"defaultToolbar\", void 0);\n__decorate([\n ViewChild('defaultToolbar', { read: ToolBarComponent, static: false }),\n __metadata(\"design:type\", ToolBarComponent)\n], EditorComponent.prototype, \"defaultToolbarComponent\", void 0);\nEditorComponent = EditorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [DialogService,\n LocalizationService,\n ChangeDetectorRef,\n NgZone,\n ElementRef,\n EditorToolsService])\n], EditorComponent);\n\n/**\n * @hidden\n */\nlet FormatDropDownListComponent = class FormatDropDownListComponent {\n /**\n * @hidden\n */\n constructor() {\n this.valueChange = new EventEmitter();\n }\n onValueChange(tag) {\n this.valueChange.emit(tag);\n }\n focus() {\n this.dropDownList.focus();\n }\n};\nFormatDropDownListComponent.ɵfac = function FormatDropDownListComponent_Factory(t) { return new (t || FormatDropDownListComponent)(); };\nFormatDropDownListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormatDropDownListComponent, selectors: [[\"kendo-editor-format-dropdownlist\"]], viewQuery: function FormatDropDownListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c112, 7);\n ɵngcc0.ɵɵviewQuery(_c112, 7, DropDownListComponent);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.element = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropDownList = _t.first);\n } }, inputs: { data: \"data\", value: \"value\", defaultItem: \"defaultItem\", itemDisabled: \"itemDisabled\", title: \"title\", disabled: \"disabled\", tabindex: \"tabindex\" }, outputs: { valueChange: \"valueChange\" }, decls: 3, vars: 10, consts: [[\"kendoEditorDropDownTool\", \"\", 3, \"defaultItem\", \"textField\", \"valueField\", \"data\", \"value\", \"valuePrimitive\", \"itemDisabled\", \"disabled\", \"tabindex\", \"valueChange\"], [\"element\", \"\"], [\"kendoDropDownListItemTemplate\", \"\"], [3, \"ngSwitch\"], [\"style\", \"display: block; font-size: 2em; margin-left: 0; font-weight: bold;\", 4, \"ngSwitchCase\"], [\"style\", \"display: block; font-size: 1.5em; margin-left: 0; font-weight: bold;\", 4, \"ngSwitchCase\"], [\"style\", \"display: block; font-size: 1.17em; margin-left: 0; font-weight: bold;\", 4, \"ngSwitchCase\"], [\"style\", \"display: block; font-size: 1em; margin-left: 0; font-weight: bold;\", 4, \"ngSwitchCase\"], [\"style\", \"display: block; font-size: .83em; margin-left: 0; font-weight: bold;\", 4, \"ngSwitchCase\"], [\"style\", \"display: block; font-size: .67em; margin-left: 0; font-weight: bold;\", 4, \"ngSwitchCase\"], [\"style\", \"display: block; margin-left: 0;\", 4, \"ngSwitchCase\"], [4, \"ngSwitchDefault\"], [2, \"display\", \"block\", \"font-size\", \"2em\", \"margin-left\", \"0\", \"font-weight\", \"bold\"], [2, \"display\", \"block\", \"font-size\", \"1.5em\", \"margin-left\", \"0\", \"font-weight\", \"bold\"], [2, \"display\", \"block\", \"font-size\", \"1.17em\", \"margin-left\", \"0\", \"font-weight\", \"bold\"], [2, \"display\", \"block\", \"font-size\", \"1em\", \"margin-left\", \"0\", \"font-weight\", \"bold\"], [2, \"display\", \"block\", \"font-size\", \".83em\", \"margin-left\", \"0\", \"font-weight\", \"bold\"], [2, \"display\", \"block\", \"font-size\", \".67em\", \"margin-left\", \"0\", \"font-weight\", \"bold\"], [2, \"display\", \"block\", \"margin-left\", \"0\"]], template: function FormatDropDownListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 0, 1);\n ɵngcc0.ɵɵlistener(\"valueChange\", function FormatDropDownListComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) { return ctx.value = $event; })(\"valueChange\", function FormatDropDownListComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) { return ctx.onValueChange($event); });\n ɵngcc0.ɵɵtemplate(2, FormatDropDownListComponent_ng_template_2_Template, 10, 9, \"ng-template\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx.defaultItem)(\"textField\", \"text\")(\"valueField\", \"tag\")(\"data\", ctx.data)(\"value\", ctx.value)(\"valuePrimitive\", true)(\"itemDisabled\", ctx.itemDisabled)(\"disabled\", ctx.disabled)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵattribute(\"title\", ctx.title);\n } }, directives: function () { return [ɵngcc7.DropDownListComponent, DropDownToolDirective, ɵngcc7.ItemTemplateDirective, ɵngcc4.NgSwitch, ɵngcc4.NgSwitchCase, ɵngcc4.NgSwitchDefault]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FormatDropDownListComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FormatDropDownListComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FormatDropDownListComponent.prototype, \"defaultItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], FormatDropDownListComponent.prototype, \"itemDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FormatDropDownListComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FormatDropDownListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FormatDropDownListComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FormatDropDownListComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('element', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], FormatDropDownListComponent.prototype, \"element\", void 0);\n__decorate([\n ViewChild('element', { read: DropDownListComponent, static: true }),\n __metadata(\"design:type\", DropDownListComponent)\n], FormatDropDownListComponent.prototype, \"dropDownList\", void 0);\n\n/**\n * @hidden\n */\nlet FormatDialogComponent = class FormatDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.data = [];\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.formatDropDownList.dropDownList.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.value) {\n this.editor.exec('format', { tag: this.value });\n }\n this.dialog.close();\n }\n setData(args) {\n this.editor = args.editor;\n this.data = args.data;\n this.defaultItem = args.defaultItem;\n this.value = args.value;\n this.itemDisabled = args.itemDisabled;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n};\nFormatDialogComponent.ɵfac = function FormatDialogComponent_Factory(t) { return new (t || FormatDialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogRef), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService)); };\nFormatDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormatDialogComponent, selectors: [[\"ng-component\"]], viewQuery: function FormatDialogComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c113, 7, FormatDropDownListComponent);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.formatDropDownList = _t.first);\n } }, inputs: { editor: \"editor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 12, vars: 8, consts: [[3, \"close\"], [1, \"k-editor-dialog\"], [1, \"k-editor-dialog\", \"k-popup-edit-form\", \"k-window-content\", \"k-content\"], [1, \"k-edit-form-container\", \"k-window-content\", 2, \"text-align\", \"center\"], [3, \"defaultItem\", \"data\", \"value\", \"itemDisabled\", \"valueChange\"], [\"formatDropDownList\", \"\"], [\"kendoButton\", \"\", 3, \"click\"], [\"kendoButton\", \"\", 3, \"primary\", \"click\"]], template: function FormatDialogComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 0);\n ɵngcc0.ɵɵlistener(\"close\", function FormatDialogComponent_Template_kendo_dialog_titlebar_close_0_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵelementStart(4, \"div\", 3);\n ɵngcc0.ɵɵelementStart(5, \"kendo-editor-format-dropdownlist\", 4, 5);\n ɵngcc0.ɵɵlistener(\"valueChange\", function FormatDialogComponent_Template_kendo_editor_format_dropdownlist_valueChange_5_listener($event) { return ctx.value = $event; });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"kendo-dialog-actions\");\n ɵngcc0.ɵɵelementStart(8, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function FormatDialogComponent_Template_button_click_8_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"button\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function FormatDialogComponent_Template_button_click_10_listener() { return ctx.onConfirmAction(); });\n ɵngcc0.ɵɵtext(11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"format\"), \" \");\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx.defaultItem)(\"data\", ctx.data)(\"value\", ctx.value)(\"itemDisabled\", ctx.itemDisabled);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogCancel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"primary\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogApply\"));\n } }, directives: [ɵngcc1.DialogTitleBarComponent, FormatDropDownListComponent, ɵngcc1.DialogActionsComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", EditorComponent)\n], FormatDialogComponent.prototype, \"editor\", void 0);\n__decorate([\n ViewChild('formatDropDownList', { read: FormatDropDownListComponent, static: true }),\n __metadata(\"design:type\", FormatDropDownListComponent)\n], FormatDialogComponent.prototype, \"formatDropDownList\", void 0);\nFormatDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [DialogRef,\n EditorLocalizationService])\n], FormatDialogComponent);\n\n/**\n * @hidden\n */\nlet ColorPickerDialogComponent = class ColorPickerDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.colorPicker.focus();\n });\n }\n handleActiveColorClick(event) {\n event.preventOpen();\n this.value = event.color;\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.value) {\n this.editor.exec(this.editorCommand, this.value);\n }\n this.dialog.close();\n }\n setData(args) {\n this.editor = args.editor;\n this.value = args.value;\n this.editorCommand = args.editorCommand;\n this.paletteSettings = args.paletteSettings;\n this.icon = args.icon;\n this.view = args.view;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n};\nColorPickerDialogComponent.ɵfac = function ColorPickerDialogComponent_Factory(t) { return new (t || ColorPickerDialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogRef), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService)); };\nColorPickerDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorPickerDialogComponent, selectors: [[\"ng-component\"]], viewQuery: function ColorPickerDialogComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c114, 7, ColorPickerComponent);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.colorPicker = _t.first);\n } }, inputs: { editor: \"editor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 12, vars: 10, consts: [[3, \"close\"], [1, \"k-editor-dialog\"], [1, \"k-editor-dialog\", \"k-popup-edit-form\", \"k-window-content\", \"k-content\"], [1, \"k-edit-form-container\", \"k-window-content\", 2, \"text-align\", \"center\"], [3, \"view\", \"format\", \"icon\", \"value\", \"paletteSettings\", \"valueChange\", \"activeColorClick\"], [\"colorpicker\", \"\"], [\"kendoButton\", \"\", 3, \"click\"], [\"kendoButton\", \"\", 3, \"primary\", \"click\"]], template: function ColorPickerDialogComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 0);\n ɵngcc0.ɵɵlistener(\"close\", function ColorPickerDialogComponent_Template_kendo_dialog_titlebar_close_0_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵelementStart(4, \"div\", 3);\n ɵngcc0.ɵɵelementStart(5, \"kendo-colorpicker\", 4, 5);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorPickerDialogComponent_Template_kendo_colorpicker_valueChange_5_listener($event) { return ctx.value = $event; })(\"activeColorClick\", function ColorPickerDialogComponent_Template_kendo_colorpicker_activeColorClick_5_listener($event) { return ctx.handleActiveColorClick($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"kendo-dialog-actions\");\n ɵngcc0.ɵɵelementStart(8, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPickerDialogComponent_Template_button_click_8_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"button\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPickerDialogComponent_Template_button_click_10_listener() { return ctx.onConfirmAction(); });\n ɵngcc0.ɵɵtext(11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(ctx.editorCommand), \" \");\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"view\", ctx.view)(\"format\", \"hex\")(\"icon\", ctx.icon)(\"value\", ctx.value)(\"paletteSettings\", ctx.paletteSettings);\n ɵngcc0.ɵɵattribute(\"title\", ctx.title);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogCancel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"primary\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogApply\"));\n } }, directives: [ɵngcc1.DialogTitleBarComponent, ɵngcc8.ColorPickerComponent, ɵngcc1.DialogActionsComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", EditorComponent)\n], ColorPickerDialogComponent.prototype, \"editor\", void 0);\n__decorate([\n ViewChild('colorpicker', { read: ColorPickerComponent, static: true }),\n __metadata(\"design:type\", ColorPickerComponent)\n], ColorPickerDialogComponent.prototype, \"colorPicker\", void 0);\nColorPickerDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [DialogRef,\n EditorLocalizationService])\n], ColorPickerDialogComponent);\n\n/**\n * @hidden\n */\nlet FontFamilyDropDownListComponent = class FontFamilyDropDownListComponent {\n /**\n * @hidden\n */\n constructor() {\n this.valueChange = new EventEmitter();\n }\n onValueChange(tag) {\n this.valueChange.emit(tag);\n }\n focus() {\n this.dropDownList.focus();\n }\n};\nFontFamilyDropDownListComponent.ɵfac = function FontFamilyDropDownListComponent_Factory(t) { return new (t || FontFamilyDropDownListComponent)(); };\nFontFamilyDropDownListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FontFamilyDropDownListComponent, selectors: [[\"kendo-editor-fontfamily-dropdownlist\"]], viewQuery: function FontFamilyDropDownListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c112, 7);\n ɵngcc0.ɵɵviewQuery(_c112, 7, DropDownListComponent);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.element = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropDownList = _t.first);\n } }, inputs: { data: \"data\", value: \"value\", defaultItem: \"defaultItem\", itemDisabled: \"itemDisabled\", title: \"title\", disabled: \"disabled\", tabindex: \"tabindex\" }, outputs: { valueChange: \"valueChange\" }, decls: 3, vars: 10, consts: [[\"kendoEditorDropDownTool\", \"\", 3, \"defaultItem\", \"textField\", \"valueField\", \"data\", \"value\", \"valuePrimitive\", \"itemDisabled\", \"disabled\", \"tabindex\", \"valueChange\"], [\"element\", \"\"], [\"kendoDropDownListItemTemplate\", \"\"], [3, \"ngStyle\"]], template: function FontFamilyDropDownListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 0, 1);\n ɵngcc0.ɵɵlistener(\"valueChange\", function FontFamilyDropDownListComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) { return ctx.value = $event; })(\"valueChange\", function FontFamilyDropDownListComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) { return ctx.onValueChange($event); });\n ɵngcc0.ɵɵtemplate(2, FontFamilyDropDownListComponent_ng_template_2_Template, 2, 4, \"ng-template\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx.defaultItem)(\"textField\", \"text\")(\"valueField\", \"fontName\")(\"data\", ctx.data)(\"value\", ctx.value)(\"valuePrimitive\", true)(\"itemDisabled\", ctx.itemDisabled)(\"disabled\", ctx.disabled)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵattribute(\"title\", ctx.title);\n } }, directives: function () { return [ɵngcc7.DropDownListComponent, DropDownToolDirective, ɵngcc7.ItemTemplateDirective, ɵngcc4.NgStyle]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FontFamilyDropDownListComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FontFamilyDropDownListComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FontFamilyDropDownListComponent.prototype, \"defaultItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], FontFamilyDropDownListComponent.prototype, \"itemDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FontFamilyDropDownListComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FontFamilyDropDownListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FontFamilyDropDownListComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FontFamilyDropDownListComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('element', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], FontFamilyDropDownListComponent.prototype, \"element\", void 0);\n__decorate([\n ViewChild('element', { read: DropDownListComponent, static: true }),\n __metadata(\"design:type\", DropDownListComponent)\n], FontFamilyDropDownListComponent.prototype, \"dropDownList\", void 0);\n\n/**\n * @hidden\n */\nlet FontFamilyDialogComponent = class FontFamilyDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.data = [];\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.fontFamilyDropDownList.dropDownList.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.value) {\n this.editor.exec('fontFamily', this.value);\n }\n this.dialog.close();\n }\n setData(args) {\n this.editor = args.editor;\n this.data = args.data;\n this.defaultItem = args.defaultItem;\n this.value = args.value;\n this.itemDisabled = args.itemDisabled;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n};\nFontFamilyDialogComponent.ɵfac = function FontFamilyDialogComponent_Factory(t) { return new (t || FontFamilyDialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogRef), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService)); };\nFontFamilyDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FontFamilyDialogComponent, selectors: [[\"ng-component\"]], viewQuery: function FontFamilyDialogComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c116, 7, FontFamilyDropDownListComponent);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fontFamilyDropDownList = _t.first);\n } }, inputs: { editor: \"editor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 12, vars: 8, consts: [[3, \"close\"], [1, \"k-editor-dialog\"], [1, \"k-editor-dialog\", \"k-popup-edit-form\", \"k-window-content\", \"k-content\"], [1, \"k-edit-form-container\", \"k-window-content\", 2, \"text-align\", \"center\"], [3, \"defaultItem\", \"data\", \"value\", \"itemDisabled\", \"valueChange\"], [\"fontFamilyDropDownList\", \"\"], [\"kendoButton\", \"\", 3, \"click\"], [\"kendoButton\", \"\", 3, \"primary\", \"click\"]], template: function FontFamilyDialogComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 0);\n ɵngcc0.ɵɵlistener(\"close\", function FontFamilyDialogComponent_Template_kendo_dialog_titlebar_close_0_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵelementStart(4, \"div\", 3);\n ɵngcc0.ɵɵelementStart(5, \"kendo-editor-fontfamily-dropdownlist\", 4, 5);\n ɵngcc0.ɵɵlistener(\"valueChange\", function FontFamilyDialogComponent_Template_kendo_editor_fontfamily_dropdownlist_valueChange_5_listener($event) { return ctx.value = $event; });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"kendo-dialog-actions\");\n ɵngcc0.ɵɵelementStart(8, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function FontFamilyDialogComponent_Template_button_click_8_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"button\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function FontFamilyDialogComponent_Template_button_click_10_listener() { return ctx.onConfirmAction(); });\n ɵngcc0.ɵɵtext(11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"fontFamily\"), \" \");\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx.defaultItem)(\"data\", ctx.data)(\"value\", ctx.value)(\"itemDisabled\", ctx.itemDisabled);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogCancel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"primary\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogApply\"));\n } }, directives: [ɵngcc1.DialogTitleBarComponent, FontFamilyDropDownListComponent, ɵngcc1.DialogActionsComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", EditorComponent)\n], FontFamilyDialogComponent.prototype, \"editor\", void 0);\n__decorate([\n ViewChild('fontFamilyDropDownList', { read: FontFamilyDropDownListComponent, static: true }),\n __metadata(\"design:type\", FontFamilyDropDownListComponent)\n], FontFamilyDialogComponent.prototype, \"fontFamilyDropDownList\", void 0);\nFontFamilyDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [DialogRef,\n EditorLocalizationService])\n], FontFamilyDialogComponent);\n\n/**\n * @hidden\n */\nlet InsertTableDialogComponent = class InsertTableDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n }\n onCancelAction() {\n this.dialog.close();\n this.editor.view.focus();\n }\n onCellClick(args) {\n this.dialog.close();\n this.editor.exec(\"insertTable\", args);\n this.editor.view.focus();\n }\n setData(args) {\n this.editor = args.editor;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n};\nInsertTableDialogComponent.ɵfac = function InsertTableDialogComponent_Factory(t) { return new (t || InsertTableDialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogRef), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService)); };\nInsertTableDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: InsertTableDialogComponent, selectors: [[\"ng-component\"]], inputs: { editor: \"editor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 9, vars: 2, consts: [[3, \"close\"], [1, \"k-editor-dialog\"], [1, \"k-editor-dialog\", \"k-popup-edit-form\", \"k-window-content\", \"k-content\"], [1, \"k-ct-popup\", \"k-window-content\", 2, \"text-align\", \"center\"], [3, \"cellClick\"], [\"kendoButton\", \"\", 3, \"click\"]], template: function InsertTableDialogComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 0);\n ɵngcc0.ɵɵlistener(\"close\", function InsertTableDialogComponent_Template_kendo_dialog_titlebar_close_0_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵelementStart(4, \"div\", 3);\n ɵngcc0.ɵɵelementStart(5, \"kendo-popup-table-grid\", 4);\n ɵngcc0.ɵɵlistener(\"cellClick\", function InsertTableDialogComponent_Template_kendo_popup_table_grid_cellClick_5_listener($event) { return ctx.onCellClick($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"kendo-dialog-actions\");\n ɵngcc0.ɵɵelementStart(7, \"button\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function InsertTableDialogComponent_Template_button_click_7_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"insertTable\"), \" \");\n ɵngcc0.ɵɵadvance(7);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogCancel\"));\n } }, directives: function () { return [ɵngcc1.DialogTitleBarComponent, PopupTableGridComponent, ɵngcc1.DialogActionsComponent, ɵngcc2.ButtonDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", EditorComponent)\n], InsertTableDialogComponent.prototype, \"editor\", void 0);\nInsertTableDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [DialogRef,\n EditorLocalizationService])\n], InsertTableDialogComponent);\n\nvar EditorFormatComponent_1;\n/**\n * A component which configures an existing `DropDownListComponent` as an Editor tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The component associates a `kendo-dropdownlist` with an Editor command that changes the format of a content block and\n * automatically defines the options of the drop-down list and sets its values.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorFormatComponent = EditorFormatComponent_1 = class EditorFormatComponent extends ToolBarToolComponent {\n constructor(editor, dialogService, localization, toolsService) {\n super();\n this.editor = editor;\n this.dialogService = dialogService;\n this.localization = localization;\n this.toolsService = toolsService;\n this.disabled = false;\n this.tabindex = -1;\n /**\n * Fires when the user updates the value of the drop-down list.\n */\n this.valueChange = new EventEmitter();\n this._data = [\n { text: 'Paragraph', tag: 'p' },\n { text: 'Quotation', tag: 'blockquote' },\n { text: 'Heading 1', tag: 'h1' },\n { text: 'Heading 2', tag: 'h2' },\n { text: 'Heading 3', tag: 'h3' },\n { text: 'Heading 4', tag: 'h4' },\n { text: 'Heading 5', tag: 'h5' },\n { text: 'Heading 6', tag: 'h6' }\n ];\n }\n /**\n * Overrides the default format items list.\n */\n set data(formatItems) {\n this._data = formatItems || this._data;\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.itemDisabled = (itemArgs) => {\n if (!this.overflows && this.formatDropDownList && !this.formatDropDownList.dropDownList.isOpen) {\n return true; //disable all items in order to prevent navigation when DDL is closed\n }\n else {\n return itemArgs.dataItem.tag === null;\n }\n };\n setTimeout(() => {\n this.defaultItem = { text: this.title, tag: null };\n this.toolsService.needsCheck.next();\n });\n this.subs = this.editor.stateChange.subscribe(({ format }) => {\n const index = this.data.findIndex(item => item.tag === format.selected.tag);\n this.value = index !== -1 ? format.selected.tag : null;\n this.disabled = format.disabled;\n });\n }\n /**\n * @hidden\n */\n onValueChange(ev) {\n if (isPresent(ev)) {\n this.editor.exec('format', { tag: ev });\n this.editor.view.focus();\n this.valueChange.emit(this.data.find(d => d.tag === ev));\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get outerWidth() {\n const element = this.formatDropDownList.element;\n if (element) {\n return outerWidth(element.nativeElement);\n }\n }\n get title() {\n return this.localization.get('format');\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: FormatDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor,\n data: this.data,\n defaultItem: this.defaultItem,\n value: this.value,\n itemDisabled: this.itemDisabled\n });\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabindex = 0;\n if (this.overflows) {\n this.formatButton.nativeElement.focus();\n }\n else {\n this.formatDropDownList.focus();\n }\n }\n /**\n * @hidden\n */\n handleKey() {\n this.tabindex = -1;\n return false;\n }\n};\nEditorFormatComponent.ɵfac = function EditorFormatComponent_Factory(t) { return new (t || EditorFormatComponent)(ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogService), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorFormatComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: EditorFormatComponent, selectors: [[\"kendo-toolbar-dropdownlist\", \"kendoEditorFormat\", \"\"]], viewQuery: function EditorFormatComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c117, 7);\n ɵngcc0.ɵɵviewQuery(_c118, 7);\n ɵngcc0.ɵɵviewQuery(_c113, 5);\n ɵngcc0.ɵɵviewQuery(_c119, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.formatDropDownList = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.formatButton = _t.first);\n } }, inputs: { data: \"data\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFormatComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], attrs: _c120, decls: 4, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [3, \"defaultItem\", \"data\", \"value\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\", \"valueChange\"], [\"formatDropDownList\", \"\"], [\"type\", \"button\", \"kendoButton\", \"\", 1, \"k-overflow-button\", 3, \"tabindex\", \"icon\", \"disabled\", \"click\"], [\"formatButton\", \"\"]], template: function EditorFormatComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, EditorFormatComponent_ng_template_0_Template, 2, 7, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, EditorFormatComponent_ng_template_2_Template, 3, 6, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [FormatDropDownListComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], EditorFormatComponent.prototype, \"data\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], EditorFormatComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorFormatComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorFormatComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('formatDropDownList', { static: false }),\n __metadata(\"design:type\", FormatDropDownListComponent)\n], EditorFormatComponent.prototype, \"formatDropDownList\", void 0);\n__decorate([\n ViewChild('formatButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorFormatComponent.prototype, \"formatButton\", void 0);\nEditorFormatComponent = EditorFormatComponent_1 = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [EditorComponent,\n DialogService,\n EditorLocalizationService,\n EditorToolsService])\n], EditorFormatComponent);\n\n/**\n * @hidden\n */\nlet FontSizeDropDownListComponent = class FontSizeDropDownListComponent {\n /**\n * @hidden\n */\n constructor() {\n this.valueChange = new EventEmitter();\n }\n onValueChange(size) {\n this.valueChange.emit(size);\n }\n focus() {\n this.dropDownList.focus();\n }\n};\nFontSizeDropDownListComponent.ɵfac = function FontSizeDropDownListComponent_Factory(t) { return new (t || FontSizeDropDownListComponent)(); };\nFontSizeDropDownListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FontSizeDropDownListComponent, selectors: [[\"kendo-editor-fontsize-dropdownlist\"]], viewQuery: function FontSizeDropDownListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c112, 7);\n ɵngcc0.ɵɵviewQuery(_c112, 7, DropDownListComponent);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.element = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropDownList = _t.first);\n } }, inputs: { data: \"data\", value: \"value\", defaultItem: \"defaultItem\", itemDisabled: \"itemDisabled\", title: \"title\", disabled: \"disabled\", tabindex: \"tabindex\" }, outputs: { valueChange: \"valueChange\" }, decls: 2, vars: 10, consts: [[\"kendoEditorDropDownTool\", \"\", 3, \"defaultItem\", \"textField\", \"valueField\", \"data\", \"value\", \"valuePrimitive\", \"itemDisabled\", \"disabled\", \"tabindex\", \"valueChange\"], [\"element\", \"\"]], template: function FontSizeDropDownListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 0, 1);\n ɵngcc0.ɵɵlistener(\"valueChange\", function FontSizeDropDownListComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) { return ctx.value = $event; })(\"valueChange\", function FontSizeDropDownListComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) { return ctx.onValueChange($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx.defaultItem)(\"textField\", \"text\")(\"valueField\", \"size\")(\"data\", ctx.data)(\"value\", ctx.value)(\"valuePrimitive\", true)(\"itemDisabled\", ctx.itemDisabled)(\"disabled\", ctx.disabled)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵattribute(\"title\", ctx.title);\n } }, directives: function () { return [ɵngcc7.DropDownListComponent, DropDownToolDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FontSizeDropDownListComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FontSizeDropDownListComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FontSizeDropDownListComponent.prototype, \"defaultItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], FontSizeDropDownListComponent.prototype, \"itemDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FontSizeDropDownListComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FontSizeDropDownListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FontSizeDropDownListComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FontSizeDropDownListComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('element', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], FontSizeDropDownListComponent.prototype, \"element\", void 0);\n__decorate([\n ViewChild('element', { read: DropDownListComponent, static: true }),\n __metadata(\"design:type\", DropDownListComponent)\n], FontSizeDropDownListComponent.prototype, \"dropDownList\", void 0);\n\n/**\n * @hidden\n */\nlet FontSizeDialogComponent = class FontSizeDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.data = [];\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.fontSizeDropDownList.dropDownList.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.value) {\n this.editor.exec('fontSize', this.value);\n }\n this.dialog.close();\n }\n setData(args) {\n this.editor = args.editor;\n this.data = args.data;\n this.defaultItem = args.defaultItem;\n this.value = args.value;\n this.itemDisabled = args.itemDisabled;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n};\nFontSizeDialogComponent.ɵfac = function FontSizeDialogComponent_Factory(t) { return new (t || FontSizeDialogComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogRef), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService)); };\nFontSizeDialogComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FontSizeDialogComponent, selectors: [[\"ng-component\"]], viewQuery: function FontSizeDialogComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c121, 7, FontSizeDropDownListComponent);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fontSizeDropDownList = _t.first);\n } }, inputs: { editor: \"editor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 12, vars: 8, consts: [[3, \"close\"], [1, \"k-editor-dialog\"], [1, \"k-editor-dialog\", \"k-popup-edit-form\", \"k-window-content\", \"k-content\"], [1, \"k-edit-form-container\", \"k-window-content\", 2, \"text-align\", \"center\"], [3, \"defaultItem\", \"data\", \"value\", \"itemDisabled\", \"valueChange\"], [\"fontSizeDropDownList\", \"\"], [\"kendoButton\", \"\", 3, \"click\"], [\"kendoButton\", \"\", 3, \"primary\", \"click\"]], template: function FontSizeDialogComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dialog-titlebar\", 0);\n ɵngcc0.ɵɵlistener(\"close\", function FontSizeDialogComponent_Template_kendo_dialog_titlebar_close_0_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵelementStart(4, \"div\", 3);\n ɵngcc0.ɵɵelementStart(5, \"kendo-editor-fontsize-dropdownlist\", 4, 5);\n ɵngcc0.ɵɵlistener(\"valueChange\", function FontSizeDialogComponent_Template_kendo_editor_fontsize_dropdownlist_valueChange_5_listener($event) { return ctx.value = $event; });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"kendo-dialog-actions\");\n ɵngcc0.ɵɵelementStart(8, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function FontSizeDialogComponent_Template_button_click_8_listener() { return ctx.onCancelAction(); });\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"button\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function FontSizeDialogComponent_Template_button_click_10_listener() { return ctx.onConfirmAction(); });\n ɵngcc0.ɵɵtext(11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"fontSize\"), \" \");\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"defaultItem\", ctx.defaultItem)(\"data\", ctx.data)(\"value\", ctx.value)(\"itemDisabled\", ctx.itemDisabled);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogCancel\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"primary\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dialogApply\"));\n } }, directives: [ɵngcc1.DialogTitleBarComponent, FontSizeDropDownListComponent, ɵngcc1.DialogActionsComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", EditorComponent)\n], FontSizeDialogComponent.prototype, \"editor\", void 0);\n__decorate([\n ViewChild('fontSizeDropDownList', { read: FontSizeDropDownListComponent, static: true }),\n __metadata(\"design:type\", FontSizeDropDownListComponent)\n], FontSizeDialogComponent.prototype, \"fontSizeDropDownList\", void 0);\nFontSizeDialogComponent = __decorate([ __metadata(\"design:paramtypes\", [DialogRef,\n EditorLocalizationService])\n], FontSizeDialogComponent);\n\nvar EditorFontSizeComponent_1;\n/**\n * A component which configures an existing `DropDownListComponent` as an Editor tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The component associates a `kendo-dropdownlist` with an Editor command that changes the font size of a content block and\n * automatically defines the options of the drop-down list and sets its values.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorFontSizeComponent = EditorFontSizeComponent_1 = class EditorFontSizeComponent extends ToolBarToolComponent {\n constructor(editor, dialogService, localization, toolsService) {\n super();\n this.editor = editor;\n this.dialogService = dialogService;\n this.localization = localization;\n this.toolsService = toolsService;\n this.disabled = false;\n this.tabindex = -1;\n /**\n * Fires when the user updates the value of the drop-down list.\n */\n this.valueChange = new EventEmitter();\n this._data = [\n { text: '8px', size: 8 },\n { text: '10px', size: 10 },\n { text: '12px', size: 12 },\n { text: '14px', size: 14 },\n { text: '18px', size: 18 },\n { text: '24px', size: 24 },\n { text: '36px', size: 36 }\n ];\n }\n /**\n * Overrides the default font size list.\n */\n set data(sizes) {\n this._data = sizes || this._data;\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.itemDisabled = itemArgs => {\n if (!this.overflows && this.fontSizeDropDownList && !this.fontSizeDropDownList.dropDownList.isOpen) {\n return true; //disable all items in order to prevent navigation when DDL is closed\n }\n else {\n return itemArgs.dataItem.size === null;\n }\n };\n setTimeout(() => {\n this.defaultItem = { text: this.title, size: null };\n this.toolsService.needsCheck.next();\n });\n this.subs = this.editor.stateChange.subscribe(({ style }) => {\n // remove units(px, em, rem...)\n // string#match returns array\n this.value = (getUniqueStyleValues(style.selected, 'font-size').match(/\\d+/g) || [null])[0];\n this.disabled = style.disabled;\n });\n }\n /**\n * @hidden\n */\n onValueChange(ev) {\n if (isPresent(ev)) {\n this.editor.exec('fontSize', ev);\n this.editor.view.focus();\n this.valueChange.emit(this.data.find(d => d.size === parseInt(ev, 10)));\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get outerWidth() {\n if (this.element) {\n return outerWidth(this.element.nativeElement);\n }\n }\n get title() {\n return this.localization.get('fontSize');\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: FontSizeDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor,\n data: this.data,\n defaultItem: this.defaultItem,\n value: this.value,\n itemDisabled: this.itemDisabled\n });\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabindex = 0;\n if (this.overflows) {\n this.fontSizeButton.nativeElement.focus();\n }\n else {\n this.fontSizeDropDownList.focus();\n }\n }\n /**\n * @hidden\n */\n handleKey() {\n this.tabindex = -1;\n return false;\n }\n};\nEditorFontSizeComponent.ɵfac = function EditorFontSizeComponent_Factory(t) { return new (t || EditorFontSizeComponent)(ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogService), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorFontSizeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: EditorFontSizeComponent, selectors: [[\"kendo-toolbar-dropdownlist\", \"kendoEditorFontSize\", \"\"]], viewQuery: function EditorFontSizeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c117, 7);\n ɵngcc0.ɵɵviewQuery(_c118, 7);\n ɵngcc0.ɵɵviewQuery(_c112, 5);\n ɵngcc0.ɵɵviewQuery(_c112, 5, FontSizeDropDownListComponent);\n ɵngcc0.ɵɵviewQuery(_c122, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.element = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fontSizeDropDownList = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fontSizeButton = _t.first);\n } }, inputs: { data: \"data\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFontSizeComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], attrs: _c123, decls: 4, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [3, \"defaultItem\", \"data\", \"value\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\", \"valueChange\"], [\"element\", \"\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"kendoButton\", \"\", 1, \"k-overflow-button\", 3, \"icon\", \"disabled\", \"tabindex\", \"click\"], [\"fontSizeButton\", \"\"]], template: function EditorFontSizeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, EditorFontSizeComponent_ng_template_0_Template, 2, 7, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, EditorFontSizeComponent_ng_template_2_Template, 3, 5, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [FontSizeDropDownListComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], EditorFontSizeComponent.prototype, \"data\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], EditorFontSizeComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorFontSizeComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorFontSizeComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('element', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorFontSizeComponent.prototype, \"element\", void 0);\n__decorate([\n ViewChild('element', { read: FontSizeDropDownListComponent, static: false }),\n __metadata(\"design:type\", FontSizeDropDownListComponent)\n], EditorFontSizeComponent.prototype, \"fontSizeDropDownList\", void 0);\n__decorate([\n ViewChild('fontSizeButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorFontSizeComponent.prototype, \"fontSizeButton\", void 0);\nEditorFontSizeComponent = EditorFontSizeComponent_1 = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [EditorComponent,\n DialogService,\n EditorLocalizationService,\n EditorToolsService])\n], EditorFontSizeComponent);\n\nvar EditorFontFamilyComponent_1;\n/**\n * A component which configures an existing `DropDownListComponent` as an Editor tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The component associates a `kendo-toolbar-dropdownlist` with an Editor command that changes the font family of a content block and\n * automatically defines the options of the drop-down list and sets its values.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorFontFamilyComponent = EditorFontFamilyComponent_1 = class EditorFontFamilyComponent extends ToolBarToolComponent {\n constructor(editor, dialogService, localization, toolsService) {\n super();\n this.editor = editor;\n this.dialogService = dialogService;\n this.localization = localization;\n this.toolsService = toolsService;\n this.disabled = false;\n this.tabindex = -1;\n /**\n * Fires when the user updates the value of the drop-down list.\n */\n this.valueChange = new EventEmitter();\n this._data = [\n { text: 'Arial', fontName: 'Arial,\"Helvetica Neue\",Helvetica,sans-serif' },\n { text: 'Courier New', fontName: '\"Courier New\",Courier,\"Lucida Sans Typewriter\",\"Lucida Typewriter\",monospace' },\n { text: 'Georgia', fontName: 'Georgia,Times,\"Times New Roman\",serif' },\n {\n fontName: \n // tslint:disable-next-line:max-line-length\n 'Impact,Haettenschweiler,\"Franklin Gothic Bold\",Charcoal,\"Helvetica Inserat\",\"Bitstream Vera Sans Bold\",\"Arial Black\",\"sans serif\"',\n text: 'Impact'\n },\n { text: 'Lucida Console', fontName: '\"Lucida Console\",\"Lucida Sans Typewriter\",monaco,\"Bitstream Vera Sans Mono\",monospace' },\n { text: 'Tahoma', fontName: 'Tahoma,Verdana,Segoe,sans-serif' },\n { text: 'Times New Roman', fontName: 'TimesNewRoman,\"Times New Roman\",Times,Baskerville,Georgia,serif' },\n { text: 'Trebuchet MS', fontName: '\"Trebuchet MS\",\"Lucida Grande\",\"Lucida Sans Unicode\",\"Lucida Sans\",Tahoma,sans-serif' },\n { text: 'Verdana', fontName: 'Verdana,Geneva,sans-serif' }\n ];\n }\n /**\n * Overrides the default font list.\n */\n set data(fonts) {\n this._data = fonts || this._data;\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.itemDisabled = (itemArgs) => {\n if (!this.overflows && this.fontFamilyDropDownList && !this.fontFamilyDropDownList.dropDownList.isOpen) {\n return true; //disable all items in order to prevent navigation when DDL is closed\n }\n else {\n return itemArgs.dataItem.fontName === null;\n }\n };\n setTimeout(() => {\n this.defaultItem = { text: this.title, fontName: null };\n this.toolsService.needsCheck.next();\n });\n this.subs = this.editor.stateChange.subscribe(({ style }) => {\n this.value = getUniqueStyleValues(style.selected, 'font-family') || null;\n this.disabled = style.disabled;\n });\n }\n /**\n * @hidden\n */\n onValueChange(ev) {\n if (isPresent(ev)) {\n this.editor.exec('fontFamily', ev);\n this.editor.view.focus();\n this.valueChange.emit(this.data.find(f => f.fontName === ev));\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get outerWidth() {\n if (this.element) {\n return outerWidth(this.element.nativeElement);\n }\n }\n get title() {\n return this.localization.get('fontFamily');\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: FontFamilyDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor,\n data: this.data,\n defaultItem: this.defaultItem,\n value: this.value,\n itemDisabled: this.itemDisabled\n });\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabindex = 0;\n if (this.overflows) {\n this.fontFamilyButton.nativeElement.focus();\n }\n else {\n this.fontFamilyDropDownList.focus();\n }\n }\n /**\n * @hidden\n */\n handleKey() {\n this.tabindex = -1;\n return false;\n }\n};\nEditorFontFamilyComponent.ɵfac = function EditorFontFamilyComponent_Factory(t) { return new (t || EditorFontFamilyComponent)(ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogService), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorFontFamilyComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: EditorFontFamilyComponent, selectors: [[\"kendo-toolbar-dropdownlist\", \"kendoEditorFontFamily\", \"\"]], viewQuery: function EditorFontFamilyComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c117, 7);\n ɵngcc0.ɵɵviewQuery(_c118, 7);\n ɵngcc0.ɵɵviewQuery(_c112, 5);\n ɵngcc0.ɵɵviewQuery(_c112, 5, FontFamilyDropDownListComponent);\n ɵngcc0.ɵɵviewQuery(_c124, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.element = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fontFamilyDropDownList = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fontFamilyButton = _t.first);\n } }, inputs: { data: \"data\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFontFamilyComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], attrs: _c125, decls: 4, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [3, \"defaultItem\", \"data\", \"value\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\", \"valueChange\"], [\"element\", \"\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"kendoButton\", \"\", 1, \"k-overflow-button\", 3, \"icon\", \"disabled\", \"tabindex\", \"click\"], [\"fontFamilyButton\", \"\"]], template: function EditorFontFamilyComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, EditorFontFamilyComponent_ng_template_0_Template, 2, 7, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, EditorFontFamilyComponent_ng_template_2_Template, 3, 5, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [FontFamilyDropDownListComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], EditorFontFamilyComponent.prototype, \"data\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], EditorFontFamilyComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorFontFamilyComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorFontFamilyComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('element', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorFontFamilyComponent.prototype, \"element\", void 0);\n__decorate([\n ViewChild('element', { read: FontFamilyDropDownListComponent, static: false }),\n __metadata(\"design:type\", FontFamilyDropDownListComponent)\n], EditorFontFamilyComponent.prototype, \"fontFamilyDropDownList\", void 0);\n__decorate([\n ViewChild('fontFamilyButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorFontFamilyComponent.prototype, \"fontFamilyButton\", void 0);\nEditorFontFamilyComponent = EditorFontFamilyComponent_1 = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [EditorComponent,\n DialogService,\n EditorLocalizationService,\n EditorToolsService])\n], EditorFontFamilyComponent);\n\n// tslint:disable:no-forward-ref\nvar EditorColorPickerComponent_1;\n/**\n * A component which configures an existing ColorPickerComponent as a ToolBar tool.\n * To associate a `kendo-toolbar-colorpicker` with an Editor command that changes the\n * foreground or the background color of the text, use the `kendoEditorForeColor` or `kendoEditorBackColor` directive.\n */\nlet EditorColorPickerComponent = EditorColorPickerComponent_1 = class EditorColorPickerComponent extends ToolBarToolComponent {\n constructor(editor, localization, dialogService, ngZone) {\n super();\n this.editor = editor;\n this.localization = localization;\n this.dialogService = dialogService;\n this.ngZone = ngZone;\n this.tabindex = -1;\n /**\n * Specifies if the component should be disabled.\n */\n this.disabled = false;\n /**\n * Specifies whether the ColorPicker will render a gradient, palette or combo view.\n *\n * @default 'palette'\n */\n this.view = 'palette';\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get(this.editorCommand);\n }\n ngOnInit() {\n this.subs = this.editor.stateChange.subscribe(({ style }) => {\n this.disabled = style.disabled;\n });\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleValueChange(color) {\n this.editor.exec(this.editorCommand, color);\n }\n /**\n * @hidden\n */\n handleActiveColorClick(event) {\n event.preventOpen();\n this.handleValueChange(event.color);\n }\n /**\n * @hidden\n */\n onOpen(picker) {\n this.valueCache = picker.value;\n picker.reset();\n }\n /**\n * @hidden\n */\n onClose(picker) {\n if (!picker.value) {\n picker.value = this.valueCache;\n }\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.editor.view.focus());\n }\n /**\n * @hidden\n */\n get outerWidth() {\n if (this.element) {\n return outerWidth(this.element.nativeElement);\n }\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: ColorPickerDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor,\n value: this.value,\n title: this.title,\n editorCommand: this.editorCommand,\n paletteSettings: this.paletteSettings,\n icon: this.icon,\n view: this.view\n });\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabindex = 0;\n if (this.overflows) {\n this.colorPickerButton.nativeElement.focus();\n }\n else {\n this.colorPicker.focus();\n }\n }\n /**\n * @hidden\n */\n handleKey() {\n this.tabindex = -1;\n return false;\n }\n};\nEditorColorPickerComponent.ɵfac = function EditorColorPickerComponent_Factory(t) { return new (t || EditorColorPickerComponent)(ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nEditorColorPickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: EditorColorPickerComponent, selectors: [[\"kendo-toolbar-colorpicker\"]], viewQuery: function EditorColorPickerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c117, 7);\n ɵngcc0.ɵɵviewQuery(_c118, 7);\n ɵngcc0.ɵɵviewQuery(_c114, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c114, 5, ColorPickerComponent);\n ɵngcc0.ɵɵviewQuery(_c126, 5, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.element = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.colorPicker = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.colorPickerButton = _t.first);\n } }, inputs: { disabled: \"disabled\", view: \"view\", value: \"value\", icon: \"icon\", paletteSettings: \"paletteSettings\", editorCommand: \"editorCommand\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorColorPickerComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [3, \"view\", \"format\", \"icon\", \"value\", \"paletteSettings\", \"disabled\", \"tabindex\", \"valueChange\", \"activeColorClick\", \"open\", \"close\"], [\"colorpicker\", \"\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"kendoButton\", \"\", 1, \"k-overflow-button\", 3, \"icon\", \"disabled\", \"tabindex\", \"click\"], [\"colorPickerButton\", \"\"]], template: function EditorColorPickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, EditorColorPickerComponent_ng_template_0_Template, 2, 8, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, EditorColorPickerComponent_ng_template_2_Template, 3, 5, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [ɵngcc8.ColorPickerComponent, ɵngcc2.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], EditorColorPickerComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], EditorColorPickerComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], EditorColorPickerComponent.prototype, \"paletteSettings\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], EditorColorPickerComponent.prototype, \"editorCommand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], EditorColorPickerComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], EditorColorPickerComponent.prototype, \"view\", void 0);\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorColorPickerComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorColorPickerComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('colorpicker', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorColorPickerComponent.prototype, \"element\", void 0);\n__decorate([\n ViewChild('colorpicker', { read: ColorPickerComponent, static: false }),\n __metadata(\"design:type\", ColorPickerComponent)\n], EditorColorPickerComponent.prototype, \"colorPicker\", void 0);\n__decorate([\n ViewChild('colorPickerButton', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorColorPickerComponent.prototype, \"colorPickerButton\", void 0);\nEditorColorPickerComponent = EditorColorPickerComponent_1 = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [EditorComponent,\n EditorLocalizationService,\n DialogService,\n NgZone])\n], EditorColorPickerComponent);\n\nvar EditorInsertTableButtonComponent_1;\nconst popupWrapperWidth = '190px';\nconst popupWrapperHeight = '164px'; // Set to '192px' when TableWizard button is added;\n/**\n * A toolbar component which allows the user to create and insert a table in the Editor's content.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorInsertTableButtonComponent = EditorInsertTableButtonComponent_1 = class EditorInsertTableButtonComponent extends ToolBarToolComponent {\n constructor(editor, localization, popupService, dialogService) {\n super();\n this.editor = editor;\n this.localization = localization;\n this.popupService = popupService;\n this.dialogService = dialogService;\n this.open = false;\n this.buttonBlurred = new EventEmitter();\n this.cellClicked = new EventEmitter();\n this.subs = this.editor.stateChange.subscribe(({ insertTable }) => {\n this.disabled = insertTable.disabled;\n });\n this.subs.add(this.buttonBlurred.pipe(concatMap(() => interval(200).pipe(take(1), takeUntil(this.cellClicked)))).subscribe(() => {\n this.toggle(false);\n }));\n }\n ngOnDestroy() {\n this.destroyPopup();\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get outerWidth() {\n if (this.element) {\n return outerWidth(this.element.nativeElement);\n }\n }\n get title() {\n return this.localization.get('insertTable');\n }\n /**\n * @hidden\n */\n toggle(open) {\n this.open = open === undefined ? !this.open : open;\n this.destroyPopup();\n if (this.open) {\n this.createPopup();\n }\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: InsertTableDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor\n });\n }\n /**\n * @hidden\n */\n onBlur() {\n this.tabIndex = -1;\n this.buttonBlurred.emit();\n }\n /**\n * @hidden\n */\n onCellClick(args) {\n this.cellClicked.emit();\n this.toggle(false);\n this.editor.exec('insertTable', args);\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabIndex = 0;\n this.getButton().focus();\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (ev.keyCode === Keys.Space || ev.keyCode === Keys.Enter) {\n return true;\n }\n this.tabIndex = -1;\n return false;\n }\n /**\n * @hidden\n */\n onTableWizardClick() {\n // this.toggle(false);\n // this.editor.openDialog(\"tableWizard\");\n }\n createPopup() {\n const horizontalAlign = this.editor.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.element,\n anchorAlign: anchorPosition,\n animate: true,\n content: this.popupGridTemplate,\n popupAlign: popupPosition,\n popupClass: 'k-ct-popup k-group k-reset k-state-border-up',\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n popupWrapper.style.width = popupWrapperWidth;\n popupWrapper.style.height = popupWrapperHeight;\n popupWrapper.setAttribute('dir', this.editor.direction);\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n getButton() {\n return (this.overflows ? this.overflowElement : this.element).nativeElement;\n }\n};\nEditorInsertTableButtonComponent.ɵfac = function EditorInsertTableButtonComponent_Factory(t) { return new (t || EditorInsertTableButtonComponent)(ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc9.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DialogService)); };\nEditorInsertTableButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: EditorInsertTableButtonComponent, selectors: [[\"kendo-editor-insert-table-button\"]], viewQuery: function EditorInsertTableButtonComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c117, 7);\n ɵngcc0.ɵɵviewQuery(_c118, 5);\n ɵngcc0.ɵɵviewQuery(_c112, 5);\n ɵngcc0.ɵɵviewQuery(_c127, 5);\n ɵngcc0.ɵɵviewQuery(_c128, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.element = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overflowElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupGridTemplate = _t.first);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorInsertTableButtonComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [\"popupGridTemplate\", \"\"], [\"type\", \"button\", \"kendoButton\", \"\", 3, \"icon\", \"disabled\", \"click\", \"blur\"], [\"element\", \"\"], [\"kendoButton\", \"\", 3, \"icon\", \"disabled\", \"click\"], [\"overflowElement\", \"\"], [3, \"cellClick\", \"tableWizardClick\"]], template: function EditorInsertTableButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, EditorInsertTableButtonComponent_ng_template_0_Template, 2, 4, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, EditorInsertTableButtonComponent_ng_template_2_Template, 3, 5, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(4, EditorInsertTableButtonComponent_ng_template_4_Template, 1, 0, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: function () { return [ɵngcc2.ButtonDirective, PopupTableGridComponent]; }, encapsulation: 2 });\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorInsertTableButtonComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: false }),\n __metadata(\"design:type\", TemplateRef)\n], EditorInsertTableButtonComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('element', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorInsertTableButtonComponent.prototype, \"element\", void 0);\n__decorate([\n ViewChild('overflowElement', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], EditorInsertTableButtonComponent.prototype, \"overflowElement\", void 0);\n__decorate([\n ViewChild('popupGridTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], EditorInsertTableButtonComponent.prototype, \"popupGridTemplate\", void 0);\nEditorInsertTableButtonComponent = EditorInsertTableButtonComponent_1 = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [EditorComponent,\n EditorLocalizationService,\n PopupService,\n DialogService])\n], EditorInsertTableButtonComponent);\n\n/**\n * @hidden\n */\nlet PopupTableGridComponent = class PopupTableGridComponent {\n /**\n * @hidden\n */\n constructor() {\n this.cellClick = new EventEmitter();\n this.tableWizardClick = new EventEmitter();\n this.state = { rows: -1, cols: -1 };\n this.rows = 6;\n this.cols = 8;\n }\n get message() {\n const { rows, cols } = this.state;\n return `Create a ${rows > -1 ? rows + 1 : ''} ${cols > -1 ? 'x' : ''} ${cols > -1 ? cols + 1 : ''} table`;\n }\n get cells() {\n return Array.from(Array(this.rows * this.cols).keys());\n }\n selected(index) {\n const { rows, cols } = this.state;\n const cellRow = Math.floor(index / this.cols);\n const cellCol = index % this.cols;\n return cellRow <= rows && cellCol <= cols;\n }\n setState(index) {\n const rows = Math.floor(index / this.cols);\n const cols = index % this.cols;\n this.state = { rows: rows, cols: cols };\n }\n resetState() {\n this.state = { rows: -1, cols: -1 };\n }\n insertTable() {\n this.cellClick.emit(this.state);\n }\n openTableWizard() {\n this.tableWizardClick.emit();\n }\n};\nPopupTableGridComponent.ɵfac = function PopupTableGridComponent_Factory(t) { return new (t || PopupTableGridComponent)(); };\nPopupTableGridComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PopupTableGridComponent, selectors: [[\"kendo-popup-table-grid\"]], outputs: { cellClick: \"cellClick\", tableWizardClick: \"tableWizardClick\" }, decls: 4, vars: 2, consts: [[2, \"border-color\", \"inherit\", 3, \"mouseleave\", \"click\"], [\"class\", \"k-ct-cell\", 3, \"k-state-selected\", \"k-state-disabled\", \"mouseenter\", 4, \"ngFor\", \"ngForOf\"], [\"unselectable\", \"on\", 1, \"k-status\"], [1, \"k-ct-cell\", 3, \"mouseenter\"]], template: function PopupTableGridComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function PopupTableGridComponent_Template_div_mouseleave_0_listener() { return ctx.resetState(); })(\"click\", function PopupTableGridComponent_Template_div_click_0_listener() { return ctx.insertTable(); });\n ɵngcc0.ɵɵtemplate(1, PopupTableGridComponent_span_1_Template, 1, 4, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cells);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.message);\n } }, directives: [ɵngcc4.NgForOf], encapsulation: 2 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupTableGridComponent.prototype, \"cellClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupTableGridComponent.prototype, \"tableWizardClick\", void 0);\n\n/**\n * @hidden\n */\nconst commandIcons = {\n alignCenter: 'align-center',\n alignJustify: 'align-justify',\n alignLeft: 'align-left',\n alignRight: 'align-right',\n backColor: 'background',\n bold: 'bold',\n cleanFormatting: 'clear-css',\n createLink: 'link-horizontal',\n foreColor: 'foreground-color',\n indent: 'indent-increase',\n insertFile: 'file-add',\n insertImage: 'image',\n insertOrderedList: 'list-ordered',\n insertUnorderedList: 'list-unordered',\n italic: 'italic',\n outdent: 'indent-decrease',\n print: 'print',\n redo: 'redo',\n selectAll: 'select-all',\n strikethrough: 'strikethrough',\n subscript: 'sub-script',\n superscript: 'sup-script',\n underline: 'underline',\n undo: 'undo',\n unlink: 'unlink-horizontal',\n viewSource: 'html',\n //table\n insertTable: 'table-insert',\n addColumnBefore: 'table-column-insert-left',\n addColumnAfter: 'table-column-insert-right',\n addRowBefore: 'table-row-insert-above',\n addRowAfter: 'table-row-insert-below',\n deleteRow: 'table-row-delete',\n deleteColumn: 'table-column-delete',\n mergeCells: 'cells-merge',\n splitCell: 'cell-split-horizontally',\n deleteTable: 'table-delete'\n // tableWizard: 'table-wizard'\n};\n\n/**\n * @hidden\n */\nclass EditorCommandBase {\n constructor(command, button, editor, localization, toolsService) {\n this.command = command;\n this.button = button;\n this.editor = editor;\n this.localization = localization;\n this.toolsService = toolsService;\n setTimeout(() => {\n const text = this.localization.get(this.command);\n if (text) {\n this.button.showText = 'overflow';\n this.button.showIcon = 'both';\n this.button.text = text;\n }\n if (!this.button.toolbarOptions.icon) {\n this.button.icon = commandIcons[this.command];\n }\n this.button.title = text;\n this.toolsService.needsCheck.next();\n });\n }\n ngOnInit() {\n this.subs = this.editor.stateChange.subscribe(this.onStateChange.bind(this));\n this.subs.add(this.button.click.subscribe((this.clickHandler.bind(this))));\n this.subs.add(this.button.pointerdown.subscribe((this.pointerdownHandler.bind(this))));\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n // tslint:disable-next-line\n clickHandler() { }\n // tslint:disable-next-line\n pointerdownHandler(_event) { }\n // tslint:disable-next-line\n onStateChange(_toolBarState) { }\n}\nEditorCommandBase.ɵfac = function EditorCommandBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nEditorCommandBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorCommandBase });\n\n/**\n * @hidden\n */\nclass EditorCommandButton extends EditorCommandBase {\n constructor(command, button, editor, localization, toolsService) {\n super(command, button, editor, localization, toolsService);\n this.command = command;\n this.button = button;\n this.editor = editor;\n this.localization = localization;\n this.toolsService = toolsService;\n }\n clickHandler() {\n this.editor.exec(this.command, this.editor.applyToWord);\n this.editor.focus();\n }\n pointerdownHandler(e) {\n e.preventDefault();\n }\n onStateChange(toolBarState) {\n this.button.selected = toolBarState[this.command].selected;\n this.button.disabled = toolBarState[this.command].disabled;\n }\n}\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AlignLeft tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorAlignLeftButtonDirective = class EditorAlignLeftButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('alignLeft', button, editor, localization, toolsService);\n }\n};\nEditorAlignLeftButtonDirective.ɵfac = function EditorAlignLeftButtonDirective_Factory(t) { return new (t || EditorAlignLeftButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorAlignLeftButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorAlignLeftButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorAlignLeftButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorAlignLeftButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorAlignLeftButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AlignCenter tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorAlignCenterButtonDirective = class EditorAlignCenterButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('alignCenter', button, editor, localization, toolsService);\n }\n};\nEditorAlignCenterButtonDirective.ɵfac = function EditorAlignCenterButtonDirective_Factory(t) { return new (t || EditorAlignCenterButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorAlignCenterButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorAlignCenterButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorAlignCenterButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorAlignCenterButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorAlignCenterButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AlignRight tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorAlignRightButtonDirective = class EditorAlignRightButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('alignRight', button, editor, localization, toolsService);\n }\n};\nEditorAlignRightButtonDirective.ɵfac = function EditorAlignRightButtonDirective_Factory(t) { return new (t || EditorAlignRightButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorAlignRightButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorAlignRightButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorAlignRightButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorAlignRightButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorAlignRightButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AlignJustify tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorAlignJustifyButtonDirective = class EditorAlignJustifyButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('alignJustify', button, editor, localization, toolsService);\n }\n};\nEditorAlignJustifyButtonDirective.ɵfac = function EditorAlignJustifyButtonDirective_Factory(t) { return new (t || EditorAlignJustifyButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorAlignJustifyButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorAlignJustifyButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorAlignJustifyButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorAlignJustifyButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorAlignJustifyButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Redo tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorRedoButtonDirective = class EditorRedoButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('redo', button, editor, localization, toolsService);\n }\n};\nEditorRedoButtonDirective.ɵfac = function EditorRedoButtonDirective_Factory(t) { return new (t || EditorRedoButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorRedoButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorRedoButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorRedoButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorRedoButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorRedoButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Undo tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorUndoButtonDirective = class EditorUndoButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('undo', button, editor, localization, toolsService);\n }\n};\nEditorUndoButtonDirective.ɵfac = function EditorUndoButtonDirective_Factory(t) { return new (t || EditorUndoButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorUndoButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorUndoButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorUndoButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorUndoButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorUndoButtonDirective);\n\n/**\n * @hidden\n */\nclass EditorCommandDialog extends EditorCommandBase {\n constructor(dialog, button, editor, localization, toolsService) {\n super(dialog, button, editor, localization, toolsService);\n this.dialog = dialog;\n this.button = button;\n this.editor = editor;\n this.localization = localization;\n this.toolsService = toolsService;\n }\n clickHandler() {\n this.editor.openDialog(this.dialog);\n }\n onStateChange(toolBarState) {\n this.button.selected = toolBarState[this.command].selected;\n this.button.disabled = toolBarState[this.command].disabled;\n }\n}\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor InsertImage tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorInsertImageButtonDirective = class EditorInsertImageButtonDirective extends EditorCommandDialog {\n constructor(button, editor, localization, toolsService) {\n super('insertImage', button, editor, localization, toolsService);\n }\n};\nEditorInsertImageButtonDirective.ɵfac = function EditorInsertImageButtonDirective_Factory(t) { return new (t || EditorInsertImageButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorInsertImageButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorInsertImageButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorInsertImageButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorInsertImageButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorInsertImageButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Indent tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorIndentButtonDirective = class EditorIndentButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('indent', button, editor, localization, toolsService);\n }\n};\nEditorIndentButtonDirective.ɵfac = function EditorIndentButtonDirective_Factory(t) { return new (t || EditorIndentButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorIndentButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorIndentButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorIndentButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorIndentButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorIndentButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Outdent tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorOutdentButtonDirective = class EditorOutdentButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('outdent', button, editor, localization, toolsService);\n }\n};\nEditorOutdentButtonDirective.ɵfac = function EditorOutdentButtonDirective_Factory(t) { return new (t || EditorOutdentButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorOutdentButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorOutdentButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorOutdentButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorOutdentButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorOutdentButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor CreateLink tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorCreateLinkButtonDirective = class EditorCreateLinkButtonDirective extends EditorCommandDialog {\n constructor(button, editor, localization, toolsService) {\n super('createLink', button, editor, localization, toolsService);\n }\n};\nEditorCreateLinkButtonDirective.ɵfac = function EditorCreateLinkButtonDirective_Factory(t) { return new (t || EditorCreateLinkButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorCreateLinkButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorCreateLinkButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorCreateLinkButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorCreateLinkButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorCreateLinkButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Unlink tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorUnlinkButtonDirective = class EditorUnlinkButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('unlink', button, editor, localization, toolsService);\n }\n};\nEditorUnlinkButtonDirective.ɵfac = function EditorUnlinkButtonDirective_Factory(t) { return new (t || EditorUnlinkButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorUnlinkButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorUnlinkButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorUnlinkButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorUnlinkButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorUnlinkButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor InsertOrderedList tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorInsertOrderedListButtonDirective = class EditorInsertOrderedListButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('insertOrderedList', button, editor, localization, toolsService);\n }\n};\nEditorInsertOrderedListButtonDirective.ɵfac = function EditorInsertOrderedListButtonDirective_Factory(t) { return new (t || EditorInsertOrderedListButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorInsertOrderedListButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorInsertOrderedListButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorInsertOrderedListButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorInsertOrderedListButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorInsertOrderedListButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor InsertUnorderedList tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorInsertUnorderedListButtonDirective = class EditorInsertUnorderedListButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('insertUnorderedList', button, editor, localization, toolsService);\n }\n};\nEditorInsertUnorderedListButtonDirective.ɵfac = function EditorInsertUnorderedListButtonDirective_Factory(t) { return new (t || EditorInsertUnorderedListButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorInsertUnorderedListButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorInsertUnorderedListButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorInsertUnorderedListButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorInsertUnorderedListButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorInsertUnorderedListButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor ViewSource tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorViewSourceButtonDirective = class EditorViewSourceButtonDirective extends EditorCommandDialog {\n constructor(button, editor, localization, toolsService) {\n super('viewSource', button, editor, localization, toolsService);\n }\n};\nEditorViewSourceButtonDirective.ɵfac = function EditorViewSourceButtonDirective_Factory(t) { return new (t || EditorViewSourceButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorViewSourceButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorViewSourceButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorViewSourceButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorViewSourceButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorViewSourceButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Bold tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorBoldButtonDirective = class EditorBoldButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('bold', button, editor, localization, toolsService);\n }\n};\nEditorBoldButtonDirective.ɵfac = function EditorBoldButtonDirective_Factory(t) { return new (t || EditorBoldButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorBoldButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorBoldButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorBoldButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorBoldButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorBoldButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Italic tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorItalicButtonDirective = class EditorItalicButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('italic', button, editor, localization, toolsService);\n }\n};\nEditorItalicButtonDirective.ɵfac = function EditorItalicButtonDirective_Factory(t) { return new (t || EditorItalicButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorItalicButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorItalicButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorItalicButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorItalicButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorItalicButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Underline tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorUnderlineButtonDirective = class EditorUnderlineButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('underline', button, editor, localization, toolsService);\n }\n};\nEditorUnderlineButtonDirective.ɵfac = function EditorUnderlineButtonDirective_Factory(t) { return new (t || EditorUnderlineButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorUnderlineButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorUnderlineButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorUnderlineButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorUnderlineButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorUnderlineButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Strikethrough tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorStrikethroughButtonDirective = class EditorStrikethroughButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('strikethrough', button, editor, localization, toolsService);\n }\n};\nEditorStrikethroughButtonDirective.ɵfac = function EditorStrikethroughButtonDirective_Factory(t) { return new (t || EditorStrikethroughButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorStrikethroughButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorStrikethroughButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorStrikethroughButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorStrikethroughButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorStrikethroughButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Subscript tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorSubscriptButtonDirective = class EditorSubscriptButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('subscript', button, editor, localization, toolsService);\n }\n};\nEditorSubscriptButtonDirective.ɵfac = function EditorSubscriptButtonDirective_Factory(t) { return new (t || EditorSubscriptButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorSubscriptButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorSubscriptButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorSubscriptButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorSubscriptButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorSubscriptButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Superscript tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorSuperscriptButtonDirective = class EditorSuperscriptButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('superscript', button, editor, localization, toolsService);\n }\n};\nEditorSuperscriptButtonDirective.ɵfac = function EditorSuperscriptButtonDirective_Factory(t) { return new (t || EditorSuperscriptButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorSuperscriptButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorSuperscriptButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorSuperscriptButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorSuperscriptButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorSuperscriptButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor 'Insert File' tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorInsertFileButtonDirective = class EditorInsertFileButtonDirective extends EditorCommandDialog {\n constructor(button, editor, localization, toolsService) {\n super('insertFile', button, editor, localization, toolsService);\n }\n};\nEditorInsertFileButtonDirective.ɵfac = function EditorInsertFileButtonDirective_Factory(t) { return new (t || EditorInsertFileButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorInsertFileButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorInsertFileButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorInsertFileButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorInsertFileButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorInsertFileButtonDirective);\n\n/**\n * A directive which configures an `EditorColorPickerComponent`\n * for manipulating the foreground color of the text\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n */\nlet EditorForeColorDirective = class EditorForeColorDirective {\n constructor(colorPicker) {\n this.colorPicker = colorPicker;\n this.colorPicker.icon = commandIcons.foreColor;\n this.colorPicker.editorCommand = 'foreColor';\n }\n};\nEditorForeColorDirective.ɵfac = function EditorForeColorDirective_Factory(t) { return new (t || EditorForeColorDirective)(ɵngcc0.ɵɵdirectiveInject(EditorColorPickerComponent)); };\nEditorForeColorDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorForeColorDirective, selectors: [[\"\", \"kendoEditorForeColor\", \"\"]] });\nEditorForeColorDirective = __decorate([ __metadata(\"design:paramtypes\", [EditorColorPickerComponent])\n], EditorForeColorDirective);\n\n/**\n * A directive which configures an `EditorColorPickerComponent`\n * for manipulating the background color of the text\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n */\nlet EditorBackColorDirective = class EditorBackColorDirective {\n constructor(colorPicker) {\n this.colorPicker = colorPicker;\n this.colorPicker.icon = commandIcons.backColor;\n this.colorPicker.editorCommand = 'backColor';\n }\n};\nEditorBackColorDirective.ɵfac = function EditorBackColorDirective_Factory(t) { return new (t || EditorBackColorDirective)(ɵngcc0.ɵɵdirectiveInject(EditorColorPickerComponent)); };\nEditorBackColorDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorBackColorDirective, selectors: [[\"\", \"kendoEditorBackColor\", \"\"]] });\nEditorBackColorDirective = __decorate([ __metadata(\"design:paramtypes\", [EditorColorPickerComponent])\n], EditorBackColorDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Clean Formatting tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorCleanFormattingButtonDirective = class EditorCleanFormattingButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('cleanFormatting', button, editor, localization, toolsService);\n }\n};\nEditorCleanFormattingButtonDirective.ɵfac = function EditorCleanFormattingButtonDirective_Factory(t) { return new (t || EditorCleanFormattingButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorCleanFormattingButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorCleanFormattingButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorCleanFormattingButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorCleanFormattingButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorCleanFormattingButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AddColumnBefore tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorAddColumnBeforeButtonDirective = class EditorAddColumnBeforeButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('addColumnBefore', button, editor, localization, toolsService);\n }\n};\nEditorAddColumnBeforeButtonDirective.ɵfac = function EditorAddColumnBeforeButtonDirective_Factory(t) { return new (t || EditorAddColumnBeforeButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorAddColumnBeforeButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorAddColumnBeforeButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorAddColumnBeforeButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorAddColumnBeforeButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorAddColumnBeforeButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AddColumnAfter tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorAddColumnAfterButtonDirective = class EditorAddColumnAfterButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('addColumnAfter', button, editor, localization, toolsService);\n }\n};\nEditorAddColumnAfterButtonDirective.ɵfac = function EditorAddColumnAfterButtonDirective_Factory(t) { return new (t || EditorAddColumnAfterButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorAddColumnAfterButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorAddColumnAfterButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorAddColumnAfterButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorAddColumnAfterButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorAddColumnAfterButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AddRowBefore tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorAddRowBeforeButtonDirective = class EditorAddRowBeforeButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('addRowBefore', button, editor, localization, toolsService);\n }\n};\nEditorAddRowBeforeButtonDirective.ɵfac = function EditorAddRowBeforeButtonDirective_Factory(t) { return new (t || EditorAddRowBeforeButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorAddRowBeforeButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorAddRowBeforeButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorAddRowBeforeButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorAddRowBeforeButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorAddRowBeforeButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AddRowAfter tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorAddRowAfterButtonDirective = class EditorAddRowAfterButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('addRowAfter', button, editor, localization, toolsService);\n }\n};\nEditorAddRowAfterButtonDirective.ɵfac = function EditorAddRowAfterButtonDirective_Factory(t) { return new (t || EditorAddRowAfterButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorAddRowAfterButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorAddRowAfterButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorAddRowAfterButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorAddRowAfterButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorAddRowAfterButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor DeleteColumn tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorDeleteColumnButtonDirective = class EditorDeleteColumnButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('deleteColumn', button, editor, localization, toolsService);\n }\n};\nEditorDeleteColumnButtonDirective.ɵfac = function EditorDeleteColumnButtonDirective_Factory(t) { return new (t || EditorDeleteColumnButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorDeleteColumnButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorDeleteColumnButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorDeleteColumnButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorDeleteColumnButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorDeleteColumnButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor DeleteRow tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorDeleteRowButtonDirective = class EditorDeleteRowButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('deleteRow', button, editor, localization, toolsService);\n }\n};\nEditorDeleteRowButtonDirective.ɵfac = function EditorDeleteRowButtonDirective_Factory(t) { return new (t || EditorDeleteRowButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorDeleteRowButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorDeleteRowButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorDeleteRowButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorDeleteRowButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorDeleteRowButtonDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor DeleteTable tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorDeleteTableButtonDirective = class EditorDeleteTableButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('deleteTable', button, editor, localization, toolsService);\n }\n};\nEditorDeleteTableButtonDirective.ɵfac = function EditorDeleteTableButtonDirective_Factory(t) { return new (t || EditorDeleteTableButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorDeleteTableButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorDeleteTableButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorDeleteTableButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorDeleteTableButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorDeleteTableButtonDirective);\n\n/**\n * @hidden\n *\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor MergeCells tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorMergeCellsButtonDirective = class EditorMergeCellsButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('mergeCells', button, editor, localization, toolsService);\n }\n};\nEditorMergeCellsButtonDirective.ɵfac = function EditorMergeCellsButtonDirective_Factory(t) { return new (t || EditorMergeCellsButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorMergeCellsButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorMergeCellsButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorMergeCellsButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorMergeCellsButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorMergeCellsButtonDirective);\n\n/**\n * @hidden\n *\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor SplitCell tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorSplitCellButtonDirective = class EditorSplitCellButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('splitCell', button, editor, localization, toolsService);\n }\n};\nEditorSplitCellButtonDirective.ɵfac = function EditorSplitCellButtonDirective_Factory(t) { return new (t || EditorSplitCellButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorSplitCellButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorSplitCellButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorSplitCellButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorSplitCellButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorSplitCellButtonDirective);\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { alignCenter: \"alignCenter\", alignJustify: \"alignJustify\", alignLeft: \"alignLeft\", alignRight: \"alignRight\", backColor: \"backColor\", bold: \"bold\", cleanFormatting: \"cleanFormatting\", createLink: \"createLink\", fontFamily: \"fontFamily\", fontSize: \"fontSize\", foreColor: \"foreColor\", format: \"format\", indent: \"indent\", insertFile: \"insertFile\", insertImage: \"insertImage\", insertOrderedList: \"insertOrderedList\", insertUnorderedList: \"insertUnorderedList\", italic: \"italic\", outdent: \"outdent\", print: \"print\", redo: \"redo\", selectAll: \"selectAll\", strikethrough: \"strikethrough\", subscript: \"subscript\", superscript: \"superscript\", underline: \"underline\", undo: \"undo\", unlink: \"unlink\", viewSource: \"viewSource\", insertTable: \"insertTable\", addColumnBefore: \"addColumnBefore\", addColumnAfter: \"addColumnAfter\", addRowBefore: \"addRowBefore\", addRowAfter: \"addRowAfter\", deleteColumn: \"deleteColumn\", deleteRow: \"deleteRow\", deleteTable: \"deleteTable\", dialogApply: \"dialogApply\", dialogCancel: \"dialogCancel\", dialogInsert: \"dialogInsert\", dialogUpdate: \"dialogUpdate\", fileText: \"fileText\", fileTitle: \"fileTitle\", fileWebAddress: \"fileWebAddress\", imageAltText: \"imageAltText\", imageHeight: \"imageHeight\", imageWebAddress: \"imageWebAddress\", imageWidth: \"imageWidth\", linkOpenInNewWindow: \"linkOpenInNewWindow\", linkText: \"linkText\", linkTitle: \"linkTitle\", linkWebAddress: \"linkWebAddress\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"alignCenter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"alignJustify\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"alignLeft\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"alignRight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"backColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"bold\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"cleanFormatting\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"createLink\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"fontFamily\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"fontSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"foreColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"indent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"insertFile\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"insertImage\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"insertOrderedList\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"insertUnorderedList\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"italic\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"outdent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"print\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"redo\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"selectAll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"strikethrough\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"subscript\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"superscript\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"underline\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"undo\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"unlink\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"viewSource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"insertTable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"addColumnBefore\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"addColumnAfter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"addRowBefore\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"addRowAfter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"deleteColumn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"deleteRow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"deleteTable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"dialogApply\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"dialogCancel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"dialogInsert\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"dialogUpdate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"fileText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"fileTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"fileWebAddress\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"imageAltText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"imageHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"imageWebAddress\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"imageWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"linkOpenInNewWindow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"linkText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"linkTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"linkWebAddress\", void 0);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc5.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoEditorLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n // tslint:disable-next-line:no-forward-ref\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\nvar CustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_editor %}#toc-localization)).\n */\nlet CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nCustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(t) { return new (t || CustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc5.LocalizationService)); };\nCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CustomMessagesComponent, selectors: [[\"kendo-editor-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n // tslint:disable-next-line:no-forward-ref\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nCustomMessagesComponent = CustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CustomMessagesComponent);\n\n/**\n * @hidden\n */\nlet DropDownToolDirective = class DropDownToolDirective {\n constructor(hostEl, zone) {\n this.hostEl = hostEl;\n this.zone = zone;\n this.preventDefault = (event) => {\n event.preventDefault();\n };\n }\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.hostEl.nativeElement.addEventListener('pointerdown', this.preventDefault);\n });\n }\n ngOnDestroy() {\n this.hostEl.nativeElement.removeEventListener('pointerdown', this.preventDefault);\n }\n};\nDropDownToolDirective.ɵfac = function DropDownToolDirective_Factory(t) { return new (t || DropDownToolDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nDropDownToolDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropDownToolDirective, selectors: [[\"\", \"kendoEditorDropDownTool\", \"\"]] });\nDropDownToolDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone])\n], DropDownToolDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Print tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * > The Editor Print tool is supported in the default [`iframe`](https://www.telerik.com/kendo-angular-ui-develop/components/editor/api/EditorComponent/#toc-iframe) mode only.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorPrintDirective = class EditorPrintDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('print', button, editor, localization, toolsService);\n this.editor = editor;\n }\n ngAfterViewInit() {\n if (isDevMode) {\n if (!this.editor.iframe) {\n throw new Error(EditorErrorMessages.printTool);\n }\n }\n }\n clickHandler() {\n if (this.editor.iframe) {\n const view = this.editor.view;\n const dom = view && view.dom;\n const doc = dom && dom.ownerDocument;\n const editorWindow = doc && doc.defaultView;\n if (editorWindow) {\n editorWindow.print();\n }\n }\n }\n};\nEditorPrintDirective.ɵfac = function EditorPrintDirective_Factory(t) { return new (t || EditorPrintDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorPrintDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorPrintDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorPrintButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorPrintDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorPrintDirective);\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor SelectAll tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet EditorSelectAllButtonDirective = class EditorSelectAllButtonDirective extends EditorCommandButton {\n constructor(button, editor, localization, toolsService) {\n super('selectAll', button, editor, localization, toolsService);\n }\n clickHandler() {\n this.editor.shouldEmitFocus = true;\n super.clickHandler();\n }\n};\nEditorSelectAllButtonDirective.ɵfac = function EditorSelectAllButtonDirective_Factory(t) { return new (t || EditorSelectAllButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.ToolBarButtonComponent), ɵngcc0.ɵɵdirectiveInject(EditorComponent, 1), ɵngcc0.ɵɵdirectiveInject(EditorLocalizationService), ɵngcc0.ɵɵdirectiveInject(EditorToolsService)); };\nEditorSelectAllButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditorSelectAllButtonDirective, selectors: [[\"kendo-toolbar-button\", \"kendoEditorSelectAllButton\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nEditorSelectAllButtonDirective = __decorate([ __param(1, Host()),\n __metadata(\"design:paramtypes\", [ToolBarButtonComponent,\n EditorComponent,\n EditorLocalizationService,\n EditorToolsService])\n], EditorSelectAllButtonDirective);\n\nconst COMPONENT_DIRECTIVES = [\n //alignment\n EditorAlignLeftButtonDirective,\n EditorAlignCenterButtonDirective,\n EditorAlignRightButtonDirective,\n EditorAlignJustifyButtonDirective,\n //file\n EditorInsertFileButtonDirective,\n //history\n EditorRedoButtonDirective,\n EditorUndoButtonDirective,\n //image\n EditorInsertImageButtonDirective,\n //indent\n EditorIndentButtonDirective,\n EditorOutdentButtonDirective,\n //link\n EditorCreateLinkButtonDirective,\n EditorUnlinkButtonDirective,\n //list\n EditorInsertOrderedListButtonDirective,\n EditorInsertUnorderedListButtonDirective,\n //source\n EditorViewSourceButtonDirective,\n //typographical emphasis\n EditorBoldButtonDirective,\n EditorItalicButtonDirective,\n EditorUnderlineButtonDirective,\n EditorStrikethroughButtonDirective,\n EditorSubscriptButtonDirective,\n EditorSuperscriptButtonDirective,\n //color\n EditorForeColorDirective,\n EditorBackColorDirective,\n //clear format\n EditorCleanFormattingButtonDirective,\n //table\n EditorAddColumnBeforeButtonDirective,\n EditorAddColumnAfterButtonDirective,\n EditorAddRowBeforeButtonDirective,\n EditorAddRowAfterButtonDirective,\n EditorDeleteColumnButtonDirective,\n EditorDeleteRowButtonDirective,\n EditorDeleteTableButtonDirective,\n EditorMergeCellsButtonDirective,\n EditorSplitCellButtonDirective,\n // EditorTableWizardButtonDirective,\n //localization\n CustomMessagesComponent,\n LocalizedMessagesDirective,\n // dropdown tools\n DropDownToolDirective,\n // print\n EditorPrintDirective,\n // select all\n EditorSelectAllButtonDirective\n];\nconst TOOLBAR_TOOLS = [\n EditorFontSizeComponent,\n EditorFontFamilyComponent,\n EditorFormatComponent,\n EditorColorPickerComponent,\n EditorInsertTableButtonComponent\n];\nconst TOOLBAR_DIALOGS = [\n FileLinkDialogComponent,\n ImageDialogComponent,\n SourceDialogComponent,\n FormatDialogComponent,\n ColorPickerDialogComponent,\n FontFamilyDialogComponent,\n FontSizeDialogComponent,\n InsertTableDialogComponent\n // TableWizardDialogComponent\n // Table Wizard Building Blocks\n // TableSettingsComponent,\n // CellSettingsComponent,\n // AccessibilitySettingsComponent\n];\nconst INTERNAL_COMPONENTS = [\n PopupTableGridComponent,\n FormatDropDownListComponent,\n FontFamilyDropDownListComponent,\n FontSizeDropDownListComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the Editor component.\n *\n * The package exports:\n * - `EditorComponent`—The `EditorComponent` class.\n * - `EditorButtonDirective`—The `EditorButton` directive class.\n * - `EditorDropDownDirective`—The `EditorDropDown` directive class.\n * - `EditorDialogDirective`—The `EditorDialog` directive class.\n * - `ToolBarDropDownListComponent`—The `ToolBarDropDownListComponent` directive class.\n * - `ButtonModule`—The `KendoButton` module.\n * - `ToolBarModule`—The `KendoToolBar` module.\n *\n * * @example\n *\n * ```ts-no-run\n * // Import the Editor module\n * import { EditorModule } from '@progress/kendo-angular-editor';\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, EditorModule], // import the Editor module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet EditorModule = class EditorModule {\n};\nEditorModule.ɵfac = function EditorModule_Factory(t) { return new (t || EditorModule)(); };\nEditorModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: EditorModule });\nEditorModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n //Kendo UI Angular Modules\n ButtonModule,\n ColorPickerModule,\n DialogModule,\n DropDownsModule,\n NumericTextBoxModule,\n ToolBarModule,\n TextBoxModule\n ], ToolBarModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SourceDialogComponent, [{\n type: Component,\n args: [{\n styles: [\n `\n >>> .k-editor-textarea {\n height: 100%;\n }\n `\n ],\n template: `\n \n {{ textFor('viewSource') }}\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.DialogRef }, { type: EditorLocalizationService }]; }, { editor: [{\n type: Input\n }], textarea: [{\n type: ViewChild,\n args: ['textarea', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ImageDialogComponent, [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('insertImage') }}\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 }], function () { return [{ type: ɵngcc1.DialogRef }, { type: EditorLocalizationService }]; }, { editor: [{\n type: Input\n }], srcInput: [{\n type: ViewChild,\n args: ['srcInput', { read: ElementRef, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileLinkDialogComponent, [{\n type: Component,\n args: [{\n template: `\n \n {{ titleText }}\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 }], function () { return [{ type: ɵngcc1.DialogRef }, { type: EditorLocalizationService }]; }, { editor: [{\n type: Input\n }], command: [{\n type: Input\n }], hrefInput: [{\n type: ViewChild,\n args: ['hrefInput', { read: ElementRef, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorToolsService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-editor',\n providers: [\n EditorLocalizationService,\n EditorToolsService,\n {\n provide: LocalizationService,\n useExisting: EditorLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.editor'\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent_1),\n multi: true\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => EditorComponent_1)\n }\n ],\n /* tslint:disable:max-line-length */\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\n \n `,\n styles: [\n `\n >>> .k-editor-content > .ProseMirror {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n outline: none;\n overflow: auto;\n }\n\n .k-iframe {\n width: 100%;\n height: 100%;\n display: block;\n }\n `\n ]\n }]\n }], function () { return [{ type: ɵngcc1.DialogService }, { type: ɵngcc5.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: EditorToolsService }]; }, { iframe: [{\n type: Input\n }], applyToWord: [{\n type: Input\n }], updateInterval: [{\n type: Input\n }], preserveWhitespace: [{\n type: Input\n }], resizable: [{\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 }], hostClass: [{\n type: HostBinding,\n args: ['class.k-editor']\n }], value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], schema: [{\n type: Input\n }], plugins: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], resizableClass: [{\n type: HostBinding,\n args: ['class.k-editor-resizable']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], isReadonly: [{\n type: HostBinding,\n args: ['class.k-readonly']\n }], isIE: [{\n type: HostBinding,\n args: ['class.k-ie']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.ariaDisabled']\n }], minWidth: [{\n type: HostBinding,\n args: ['style.minWidth']\n }], maxWidth: [{\n type: HostBinding,\n args: ['style.maxWidth']\n }], minHeight: [{\n type: HostBinding,\n args: ['style.minHeight']\n }], maxHeight: [{\n type: HostBinding,\n args: ['style.maxHeight']\n }], pasteCleanupSettings: [{\n type: Input\n }], userToolBarComponent: [{\n type: ContentChild,\n args: [ToolBarComponent, { static: false }]\n }], userToolBarElement: [{\n type: ContentChild,\n args: [ToolBarComponent, { read: ElementRef, static: false }]\n }], dialogContainer: [{\n type: ViewChild,\n args: ['dialogsContainer', { read: ViewContainerRef, static: true }]\n }], container: [{\n type: ViewChild,\n args: ['content', { read: ViewContainerRef, static: false }]\n }], defaultToolbar: [{\n type: ViewChild,\n args: ['defaultToolbar', { read: ElementRef, static: false }]\n }], defaultToolbarComponent: [{\n type: ViewChild,\n args: ['defaultToolbar', { read: ToolBarComponent, static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormatDropDownListComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:no-forward-ref\n selector: 'kendo-editor-format-dropdownlist',\n template: `\n \n \n \n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n {{ dataItem.text }}\n \n \n \n `\n }]\n }], function () { return []; }, { valueChange: [{\n type: Output\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], element: [{\n type: ViewChild,\n args: ['element', { static: true }]\n }], dropDownList: [{\n type: ViewChild,\n args: ['element', { read: DropDownListComponent, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormatDialogComponent, [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('format') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.DialogRef }, { type: EditorLocalizationService }]; }, { editor: [{\n type: Input\n }], formatDropDownList: [{\n type: ViewChild,\n args: ['formatDropDownList', { read: FormatDropDownListComponent, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPickerDialogComponent, [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor(editorCommand) }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.DialogRef }, { type: EditorLocalizationService }]; }, { editor: [{\n type: Input\n }], colorPicker: [{\n type: ViewChild,\n args: ['colorpicker', { read: ColorPickerComponent, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FontFamilyDropDownListComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:no-forward-ref\n selector: 'kendo-editor-fontfamily-dropdownlist',\n template: `\n \n \n \n {{ dataItem.text }}\n \n \n \n `\n }]\n }], function () { return []; }, { valueChange: [{\n type: Output\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], element: [{\n type: ViewChild,\n args: ['element', { static: true }]\n }], dropDownList: [{\n type: ViewChild,\n args: ['element', { read: DropDownListComponent, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FontFamilyDialogComponent, [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('fontFamily') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.DialogRef }, { type: EditorLocalizationService }]; }, { editor: [{\n type: Input\n }], fontFamilyDropDownList: [{\n type: ViewChild,\n args: ['fontFamilyDropDownList', { read: FontFamilyDropDownListComponent, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InsertTableDialogComponent, [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('insertTable') }}\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.DialogRef }, { type: EditorLocalizationService }]; }, { editor: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorFormatComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFormatComponent_1) }],\n selector: 'kendo-toolbar-dropdownlist[kendoEditorFormat]',\n template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `\n }]\n }], function () { return [{ type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: ɵngcc1.DialogService }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, { valueChange: [{\n type: Output\n }], data: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], formatDropDownList: [{\n type: ViewChild,\n args: ['formatDropDownList', { static: false }]\n }], formatButton: [{\n type: ViewChild,\n args: ['formatButton', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FontSizeDropDownListComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:no-forward-ref\n selector: 'kendo-editor-fontsize-dropdownlist',\n template: `\n \n \n `\n }]\n }], function () { return []; }, { valueChange: [{\n type: Output\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], element: [{\n type: ViewChild,\n args: ['element', { static: true }]\n }], dropDownList: [{\n type: ViewChild,\n args: ['element', { read: DropDownListComponent, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FontSizeDialogComponent, [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('fontSize') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.DialogRef }, { type: EditorLocalizationService }]; }, { editor: [{\n type: Input\n }], fontSizeDropDownList: [{\n type: ViewChild,\n args: ['fontSizeDropDownList', { read: FontSizeDropDownListComponent, static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorFontSizeComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFontSizeComponent_1) }],\n selector: 'kendo-toolbar-dropdownlist[kendoEditorFontSize]',\n template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `\n }]\n }], function () { return [{ type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: ɵngcc1.DialogService }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, { valueChange: [{\n type: Output\n }], data: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], element: [{\n type: ViewChild,\n args: ['element', { static: false }]\n }], fontSizeDropDownList: [{\n type: ViewChild,\n args: ['element', { read: FontSizeDropDownListComponent, static: false }]\n }], fontSizeButton: [{\n type: ViewChild,\n args: ['fontSizeButton', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorFontFamilyComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFontFamilyComponent_1) }],\n selector: 'kendo-toolbar-dropdownlist[kendoEditorFontFamily]',\n template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `\n }]\n }], function () { return [{ type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: ɵngcc1.DialogService }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, { valueChange: [{\n type: Output\n }], data: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], element: [{\n type: ViewChild,\n args: ['element', { static: false }]\n }], fontFamilyDropDownList: [{\n type: ViewChild,\n args: ['element', { read: FontFamilyDropDownListComponent, static: false }]\n }], fontFamilyButton: [{\n type: ViewChild,\n args: ['fontFamilyButton', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorColorPickerComponent, [{\n type: Component,\n args: [{\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorColorPickerComponent_1) }],\n selector: 'kendo-toolbar-colorpicker',\n template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `\n }]\n }], function () { return [{ type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: ɵngcc1.DialogService }, { type: ɵngcc0.NgZone }]; }, { disabled: [{\n type: Input\n }], view: [{\n type: Input\n }], value: [{\n type: Input\n }], icon: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], editorCommand: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], element: [{\n type: ViewChild,\n args: ['colorpicker', { read: ElementRef, static: false }]\n }], colorPicker: [{\n type: ViewChild,\n args: ['colorpicker', { read: ColorPickerComponent, static: false }]\n }], colorPickerButton: [{\n type: ViewChild,\n args: ['colorPickerButton', { read: ElementRef, static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorInsertTableButtonComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorInsertTableButtonComponent_1) }],\n selector: 'kendo-editor-insert-table-button',\n template: `\n \n \n \n \n \n {{ title }}\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: ɵngcc9.PopupService }, { type: ɵngcc1.DialogService }]; }, { toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: false }]\n }], element: [{\n type: ViewChild,\n args: ['element', { static: false }]\n }], overflowElement: [{\n type: ViewChild,\n args: ['overflowElement', { static: false }]\n }], popupGridTemplate: [{\n type: ViewChild,\n args: ['popupGridTemplate', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopupTableGridComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-popup-table-grid',\n template: `\n
    \n \n \n
    \n
    {{ message }}
    \n \n `\n }]\n }], function () { return []; }, { cellClick: [{\n type: Output\n }], tableWizardClick: [{\n type: Output\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorAlignLeftButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAlignLeftButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorAlignCenterButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAlignCenterButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorAlignRightButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAlignRightButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorAlignJustifyButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAlignJustifyButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorRedoButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorRedoButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorUndoButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorUndoButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorInsertImageButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorInsertImageButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorIndentButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorIndentButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorOutdentButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorOutdentButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorCreateLinkButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorCreateLinkButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorUnlinkButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorUnlinkButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorInsertOrderedListButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorInsertOrderedListButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorInsertUnorderedListButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorInsertUnorderedListButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorViewSourceButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorViewSourceButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorBoldButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorBoldButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorItalicButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorItalicButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorUnderlineButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorUnderlineButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorStrikethroughButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorStrikethroughButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorSubscriptButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorSubscriptButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorSuperscriptButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorSuperscriptButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorInsertFileButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorInsertFileButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorForeColorDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoEditorForeColor]'\n }]\n }], function () { return [{ type: EditorColorPickerComponent }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorBackColorDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoEditorBackColor]'\n }]\n }], function () { return [{ type: EditorColorPickerComponent }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorCleanFormattingButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorCleanFormattingButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorAddColumnBeforeButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAddColumnBeforeButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorAddColumnAfterButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAddColumnAfterButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorAddRowBeforeButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAddRowBeforeButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorAddRowAfterButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAddRowAfterButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorDeleteColumnButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorDeleteColumnButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorDeleteRowButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorDeleteRowButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorDeleteTableButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorDeleteTableButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorMergeCellsButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorMergeCellsButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorSplitCellButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorSplitCellButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n // tslint:disable-next-line:no-forward-ref\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: '[kendoEditorLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc5.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n // tslint:disable-next-line:no-forward-ref\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-editor-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc5.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropDownToolDirective, [{\n type: Directive,\n args: [{ selector: '[kendoEditorDropDownTool]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorPrintDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorPrintButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorSelectAllButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorSelectAllButton]'\n }]\n }], function () { return [{ type: ɵngcc6.ToolBarButtonComponent }, { type: EditorComponent, decorators: [{\n type: Host\n }] }, { type: EditorLocalizationService }, { type: EditorToolsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditorModule, [{\n type: NgModule,\n args: [{\n declarations: [\n EditorComponent,\n COMPONENT_DIRECTIVES,\n TOOLBAR_TOOLS,\n TOOLBAR_DIALOGS,\n INTERNAL_COMPONENTS\n ],\n entryComponents: [\n TOOLBAR_DIALOGS\n ],\n exports: [\n EditorComponent,\n COMPONENT_DIRECTIVES,\n TOOLBAR_TOOLS,\n ToolBarModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n //needed for unit tests\n INTERNAL_COMPONENTS\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n //Kendo UI Angular Modules\n ButtonModule,\n ColorPickerModule,\n DialogModule,\n DropDownsModule,\n NumericTextBoxModule,\n ToolBarModule,\n TextBoxModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(EditorModule, { declarations: function () { return [EditorComponent, EditorAlignLeftButtonDirective, EditorAlignCenterButtonDirective, EditorAlignRightButtonDirective, EditorAlignJustifyButtonDirective, EditorInsertFileButtonDirective, EditorRedoButtonDirective, EditorUndoButtonDirective, EditorInsertImageButtonDirective, EditorIndentButtonDirective, EditorOutdentButtonDirective, EditorCreateLinkButtonDirective, EditorUnlinkButtonDirective, EditorInsertOrderedListButtonDirective, EditorInsertUnorderedListButtonDirective, EditorViewSourceButtonDirective, EditorBoldButtonDirective, EditorItalicButtonDirective, EditorUnderlineButtonDirective, EditorStrikethroughButtonDirective, EditorSubscriptButtonDirective, EditorSuperscriptButtonDirective, EditorForeColorDirective, EditorBackColorDirective, EditorCleanFormattingButtonDirective, EditorAddColumnBeforeButtonDirective, EditorAddColumnAfterButtonDirective, EditorAddRowBeforeButtonDirective, EditorAddRowAfterButtonDirective, EditorDeleteColumnButtonDirective, EditorDeleteRowButtonDirective, EditorDeleteTableButtonDirective, EditorMergeCellsButtonDirective, EditorSplitCellButtonDirective, CustomMessagesComponent, LocalizedMessagesDirective, DropDownToolDirective, EditorPrintDirective, EditorSelectAllButtonDirective, EditorFontSizeComponent, EditorFontFamilyComponent, EditorFormatComponent, EditorColorPickerComponent, EditorInsertTableButtonComponent, FileLinkDialogComponent, ImageDialogComponent, SourceDialogComponent, FormatDialogComponent, ColorPickerDialogComponent, FontFamilyDialogComponent, FontSizeDialogComponent, InsertTableDialogComponent, PopupTableGridComponent, FormatDropDownListComponent, FontFamilyDropDownListComponent, FontSizeDropDownListComponent]; }, imports: function () { return [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n //Kendo UI Angular Modules\n ButtonModule,\n ColorPickerModule,\n DialogModule,\n DropDownsModule,\n NumericTextBoxModule,\n ToolBarModule,\n TextBoxModule]; }, exports: function () { return [EditorComponent, EditorAlignLeftButtonDirective, EditorAlignCenterButtonDirective, EditorAlignRightButtonDirective, EditorAlignJustifyButtonDirective, EditorInsertFileButtonDirective, EditorRedoButtonDirective, EditorUndoButtonDirective, EditorInsertImageButtonDirective, EditorIndentButtonDirective, EditorOutdentButtonDirective, EditorCreateLinkButtonDirective, EditorUnlinkButtonDirective, EditorInsertOrderedListButtonDirective, EditorInsertUnorderedListButtonDirective, EditorViewSourceButtonDirective, EditorBoldButtonDirective, EditorItalicButtonDirective, EditorUnderlineButtonDirective, EditorStrikethroughButtonDirective, EditorSubscriptButtonDirective, EditorSuperscriptButtonDirective, EditorForeColorDirective, EditorBackColorDirective, EditorCleanFormattingButtonDirective, EditorAddColumnBeforeButtonDirective, EditorAddColumnAfterButtonDirective, EditorAddRowBeforeButtonDirective, EditorAddRowAfterButtonDirective, EditorDeleteColumnButtonDirective, EditorDeleteRowButtonDirective, EditorDeleteTableButtonDirective, EditorMergeCellsButtonDirective, EditorSplitCellButtonDirective, CustomMessagesComponent, LocalizedMessagesDirective, DropDownToolDirective, EditorPrintDirective, EditorSelectAllButtonDirective, EditorFontSizeComponent, EditorFontFamilyComponent, EditorFormatComponent, EditorColorPickerComponent, EditorInsertTableButtonComponent, ToolBarModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule, PopupTableGridComponent, FormatDropDownListComponent, FontFamilyDropDownListComponent, FontSizeDropDownListComponent]; } }); })();\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ColorPickerDialogComponent, FileLinkDialogComponent, FontFamilyDialogComponent, FontSizeDialogComponent, FormatDialogComponent, ImageDialogComponent, InsertTableDialogComponent, SourceDialogComponent, CustomMessagesComponent, EditorLocalizationService, LocalizedMessagesDirective, Messages, EditorAlignCenterButtonDirective, EditorAlignJustifyButtonDirective, EditorAlignLeftButtonDirective, EditorAlignRightButtonDirective, EditorBackColorDirective, EditorColorPickerComponent, EditorForeColorDirective, EditorCleanFormattingButtonDirective, FontFamilyDropDownListComponent, EditorFontFamilyComponent, FontSizeDropDownListComponent, EditorFontSizeComponent, FormatDropDownListComponent, EditorFormatComponent, EditorRedoButtonDirective, EditorUndoButtonDirective, EditorInsertImageButtonDirective, EditorIndentButtonDirective, EditorOutdentButtonDirective, EditorCreateLinkButtonDirective, EditorInsertFileButtonDirective, EditorUnlinkButtonDirective, EditorInsertOrderedListButtonDirective, EditorInsertUnorderedListButtonDirective, EditorPrintDirective, EditorSelectAllButtonDirective, DropDownToolDirective, EditorCommandBase, EditorCommandButton, EditorCommandDialog, EditorViewSourceButtonDirective, EditorAddColumnAfterButtonDirective, EditorAddColumnBeforeButtonDirective, EditorAddRowAfterButtonDirective, EditorAddRowBeforeButtonDirective, EditorDeleteColumnButtonDirective, EditorDeleteRowButtonDirective, EditorDeleteTableButtonDirective, EditorInsertTableButtonComponent, EditorMergeCellsButtonDirective, EditorSplitCellButtonDirective, PopupTableGridComponent, EditorToolsService, EditorBoldButtonDirective, EditorItalicButtonDirective, EditorStrikethroughButtonDirective, EditorSubscriptButtonDirective, EditorSuperscriptButtonDirective, EditorUnderlineButtonDirective, EditorComponent, EditorModule, schema };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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;","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}","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","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","// 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","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","import JSZip from '@progress/jszip-esm';\n\nexport default function createZip() {\n return new JSZip();\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 { __decorate, __metadata, __param } from 'tslib';\nimport { Input, ContentChildren, QueryList, Component, NgZone, Directive, Optional, TemplateRef, ContentChild, forwardRef, SkipSelf, Host, NgModule } from '@angular/core';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { IntlService, ExcelExporter, Workbook } from '@progress/kendo-ooxml';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nexport * from '@progress/kendo-ooxml';\nimport { toString } from '@telerik/kendo-intl';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\n\n/* tslint:disable align */\n/* tslint:disable:no-use-before-declare */\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 = function ColumnBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nColumnBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnBase, contentQueries: function ColumnBase_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnBase, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, inputs: { title: \"title\", width: \"width\", locked: \"locked\", hidden: \"hidden\", headerCellOptions: \"headerCellOptions\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnBase.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ColumnBase.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase.prototype, \"locked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase.prototype, \"hidden\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnBase.prototype, \"headerCellOptions\", void 0);\n__decorate([\n ContentChildren(ColumnBase),\n __metadata(\"design:type\", QueryList)\n], ColumnBase.prototype, \"children\", void 0);\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: 1635940177,\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 [Kendo UI Excel Export component for Angular]({% slug overview_excelexport %}).\n * Configures the settings for the Excel export of the Kendo UI Grid.\n */\nlet ExcelExportComponent = class 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 = function ExcelExportComponent_Factory(t) { return new (t || ExcelExportComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nExcelExportComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ExcelExportComponent, selectors: [[\"kendo-excelexport\"]], contentQueries: function ExcelExportComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnBase, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columns = _t);\n } }, inputs: { fileName: \"fileName\", filterable: \"filterable\", collapsible: \"collapsible\", creator: \"creator\", date: \"date\", forceProxy: \"forceProxy\", proxyURL: \"proxyURL\", data: \"data\", group: \"group\", paddingCellOptions: \"paddingCellOptions\", headerPaddingCellOptions: \"headerPaddingCellOptions\" }, exportAs: [\"kendoExcelExport\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.excelexport'\n }\n ])], decls: 0, vars: 0, template: function ExcelExportComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExcelExportComponent.prototype, \"fileName\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExcelExportComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExcelExportComponent.prototype, \"collapsible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExcelExportComponent.prototype, \"creator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ExcelExportComponent.prototype, \"date\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExcelExportComponent.prototype, \"forceProxy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExcelExportComponent.prototype, \"proxyURL\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ExcelExportComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ExcelExportComponent.prototype, \"group\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ExcelExportComponent.prototype, \"paddingCellOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ExcelExportComponent.prototype, \"headerPaddingCellOptions\", void 0);\n__decorate([\n ContentChildren(ColumnBase, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], ExcelExportComponent.prototype, \"columns\", void 0);\nExcelExportComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService, NgZone])\n], ExcelExportComponent);\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 */\nlet GroupHeaderTemplateDirective = class GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupHeaderTemplateDirective.ɵfac = function GroupHeaderTemplateDirective_Factory(t) { return new (t || GroupHeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nGroupHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupHeaderTemplateDirective, selectors: [[\"\", \"kendoExcelExportGroupHeaderTemplate\", \"\"]] });\nGroupHeaderTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupHeaderTemplateDirective);\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 */\nlet GroupHeaderColumnTemplateDirective = class GroupHeaderColumnTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupHeaderColumnTemplateDirective.ɵfac = function GroupHeaderColumnTemplateDirective_Factory(t) { return new (t || GroupHeaderColumnTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nGroupHeaderColumnTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupHeaderColumnTemplateDirective, selectors: [[\"\", \"kendoExcelExportGroupHeaderColumnTemplate\", \"\"]] });\nGroupHeaderColumnTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupHeaderColumnTemplateDirective);\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 */\nlet GroupFooterTemplateDirective = class GroupFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupFooterTemplateDirective.ɵfac = function GroupFooterTemplateDirective_Factory(t) { return new (t || GroupFooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nGroupFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupFooterTemplateDirective, selectors: [[\"\", \"kendoExcelExportGroupFooterTemplate\", \"\"]] });\nGroupFooterTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupFooterTemplateDirective);\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 */\nlet FooterTemplateDirective = class FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFooterTemplateDirective.ɵfac = function FooterTemplateDirective_Factory(t) { return new (t || FooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FooterTemplateDirective, selectors: [[\"\", \"kendoExcelExportFooterTemplate\", \"\"]] });\nFooterTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], FooterTemplateDirective);\n\nvar ColumnComponent_1;\n/**\n * Represents the columns of the Kendo UI Excel Export component for Angular.\n */\nlet ColumnComponent = ColumnComponent_1 = class ColumnComponent extends ColumnBase {\n constructor(parent) {\n super(parent);\n }\n};\nColumnComponent.ɵfac = function ColumnComponent_Factory(t) { return new (t || ColumnComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnBase, 13)); };\nColumnComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnComponent, selectors: [[\"kendo-excelexport-column\"]], contentQueries: function ColumnComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupHeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupHeaderColumnTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupFooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupHeaderTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupHeaderColumnTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupFooterTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n } }, inputs: { field: \"field\", cellOptions: \"cellOptions\", groupHeaderCellOptions: \"groupHeaderCellOptions\", groupFooterCellOptions: \"groupFooterCellOptions\", footerCellOptions: \"footerCellOptions\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ColumnComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnComponent.prototype, \"field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnComponent.prototype, \"cellOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnComponent.prototype, \"groupHeaderCellOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnComponent.prototype, \"groupFooterCellOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnComponent.prototype, \"footerCellOptions\", void 0);\n__decorate([\n ContentChild(GroupHeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupHeaderTemplateDirective)\n], ColumnComponent.prototype, \"groupHeaderTemplate\", void 0);\n__decorate([\n ContentChild(GroupHeaderColumnTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupHeaderColumnTemplateDirective)\n], ColumnComponent.prototype, \"groupHeaderColumnTemplate\", void 0);\n__decorate([\n ContentChild(GroupFooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupFooterTemplateDirective)\n], ColumnComponent.prototype, \"groupFooterTemplate\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], ColumnComponent.prototype, \"footerTemplate\", void 0);\nColumnComponent = ColumnComponent_1 = __decorate([ __param(0, SkipSelf()), __param(0, Host()), __param(0, Optional()),\n __metadata(\"design:paramtypes\", [ColumnBase])\n], ColumnComponent);\n\nvar ColumnGroupComponent_1;\n/**\n * Represents the column group component of the Kendo UI Excel Export component.\n */\nlet ColumnGroupComponent = ColumnGroupComponent_1 = class ColumnGroupComponent extends ColumnBase {\n constructor(parent) {\n super(parent);\n this.parent = parent;\n }\n};\nColumnGroupComponent.ɵfac = function ColumnGroupComponent_Factory(t) { return new (t || ColumnGroupComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnBase, 13)); };\nColumnGroupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnGroupComponent, selectors: [[\"kendo-excelexport-column-group\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ColumnGroupComponent_Template(rf, ctx) { }, encapsulation: 2 });\nColumnGroupComponent = ColumnGroupComponent_1 = __decorate([ __param(0, SkipSelf()), __param(0, Host()), __param(0, Optional()),\n __metadata(\"design:paramtypes\", [ColumnBase])\n], ColumnGroupComponent);\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 */\nlet ExcelExportModule = class ExcelExportModule {\n};\nExcelExportModule.ɵfac = function ExcelExportModule_Factory(t) { return new (t || ExcelExportModule)(); };\nExcelExportModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ExcelExportModule });\nExcelExportModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExcelExportComponent, [{\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { fileName: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase, { descendants: true }]\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupHeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupHeaderTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupHeaderColumnTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupHeaderColumnTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupFooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupFooterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportFooterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-excelexport-column',\n template: ``\n }]\n }], function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnGroupComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-excelexport-column-group',\n template: ``\n }]\n }], function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExcelExportModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [declarations]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ExcelExportModule, { declarations: [ExcelExportComponent, ColumnComponent, ColumnGroupComponent, FooterTemplateDirective, GroupFooterTemplateDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective], exports: [ExcelExportComponent, ColumnComponent, ColumnGroupComponent, FooterTemplateDirective, GroupFooterTemplateDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { GroupHeaderColumnTemplateDirective, ExcelExportComponent, ExcelExportModule, ColumnBase, ColumnComponent, ColumnGroupComponent, FooterTemplateDirective, GroupFooterTemplateDirective, GroupHeaderTemplateDirective, workbookOptions, toDataURL, isWorkbookOptions };\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 { __decorate, __metadata, __param } from 'tslib';\nimport { Injectable, NgModule, Input, ViewChild, ElementRef, HostBinding, Directive, Optional, TemplateRef, ContentChild, Component, ChangeDetectionStrategy, ChangeDetectorRef, Renderer2, NgZone, ContentChildren, QueryList } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResizeSensorModule, ResizeSensorComponent } from '@progress/kendo-angular-common';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-intl';\nimport * as ɵngcc2 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@progress/kendo-angular-common';\n\nconst _c0 = [\"surface\"];\nconst _c1 = [\"label\"];\nfunction ArcGaugeComponent_div_2_ng_template_2_Template(rf, ctx) { }\nfunction ArcGaugeComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 4, 5);\n ɵngcc0.ɵɵtemplate(2, ArcGaugeComponent_div_2_ng_template_2_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.centerTemplate.templateRef)(\"ngTemplateOutletContext\", ctx_r1.centerTemplateContext);\n} }\nfunction CircularGaugeComponent_div_2_ng_template_2_Template(rf, ctx) { }\nfunction CircularGaugeComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 4, 5);\n ɵngcc0.ɵɵtemplate(2, CircularGaugeComponent_div_2_ng_template_2_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.centerTemplate.templateRef)(\"ngTemplateOutletContext\", ctx_r1.centerTemplateContext);\n} }\nexport { ResizeSensorComponent } from '@progress/kendo-angular-common';\nimport { IntlService } from '@progress/kendo-angular-intl';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { exportImage, exportSVG, drawDOM } from '@progress/kendo-drawing';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { ArcGauge, LinearGauge, RadialGauge, CircularGauge } from '@progress/kendo-charts';\n\nfunction isObject(value) {\n return typeof value === \"object\";\n}\nfunction diffOptions(original, current) {\n if (Object.keys(original).length !== Object.keys(current).length) {\n return true;\n }\n for (let field in original) {\n if (field !== 'value' && original.hasOwnProperty(field)) {\n const originalValue = original[field];\n const currentValue = current[field];\n const diff = isObject(originalValue) && isObject(currentValue) ?\n diffOptions(originalValue, currentValue) : originalValue !== currentValue;\n if (diff) {\n return true;\n }\n }\n }\n}\nfunction diffPointerOptions(original, current) {\n if (!original || !current) {\n return true;\n }\n original = [].concat(original);\n current = [].concat(current);\n if (original.length !== current.length) {\n return true;\n }\n for (let idx = 0; idx < original.length; idx++) {\n if (diffOptions(original[idx], current[idx])) {\n return true;\n }\n }\n}\n/**\n * @hidden\n */\nlet ConfigurationService = class ConfigurationService {\n /**\n * @hidden\n */\n constructor() {\n this.options = {};\n }\n copyChanges(prefix, changes) {\n for (let propertyName in changes) {\n if (!changes.hasOwnProperty(propertyName)) {\n continue;\n }\n const value = changes[propertyName].currentValue;\n const optionName = (prefix ? prefix + '.' : '') + propertyName;\n this.set(optionName, value);\n }\n }\n read() {\n this.hasChanges = false;\n this.valueChange = false;\n return this.options;\n }\n readValues() {\n this.valueChange = false;\n const pointers = [].concat(this.options.pointer);\n return pointers.map((pointer) => pointer.value);\n }\n readValue() {\n this.valueChange = false;\n return this.options.value;\n }\n set(field, value) {\n const { key, options } = this.optionContext(field);\n if (!this.hasChanges && (key === 'value' || (key === 'pointer' && !diffPointerOptions(this.options.pointer, value)))) {\n this.valueChange = true;\n }\n else {\n this.hasChanges = true;\n this.valueChange = false;\n }\n options[key] = value;\n }\n optionContext(field) {\n const parts = field.split('.');\n let options = this.options;\n let key = parts.shift();\n while (parts.length > 0) {\n options = options[key] = options[key] || {};\n key = parts.shift();\n }\n return { key: key, options: options };\n }\n};\nConfigurationService.ɵfac = function ConfigurationService_Factory(t) { return new (t || ConfigurationService)(); };\nConfigurationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ConfigurationService, factory: function (t) { return ConfigurationService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet CollectionChangesService = class CollectionChangesService {\n};\nCollectionChangesService.ɵfac = function CollectionChangesService_Factory(t) { return new (t || CollectionChangesService)(); };\nCollectionChangesService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CollectionChangesService, factory: function (t) { return CollectionChangesService.ɵfac(t); } });\n\nconst template = `\n
    \n
    \n
    \n`;\n/**\n * @hidden\n */\nlet ThemeService = class ThemeService {\n read() {\n if (!this.options) {\n this.load();\n }\n return this.options;\n }\n load() {\n if (typeof document === 'undefined') {\n this.options = {};\n return;\n }\n const container = document.createElement('div');\n container.style.display = 'none';\n container.innerHTML = template;\n document.body.appendChild(container);\n try {\n const pointerColor = this.getColor(container, 'gauge-pointer');\n const rangePlaceholder = this.getColor(container, 'gauge-track');\n const textColor = this.getColor(container, 'normal-text-color');\n this.options = {\n pointer: {\n color: pointerColor\n },\n scale: {\n labels: {\n color: textColor\n },\n rangePlaceholderColor: rangePlaceholder,\n minorTicks: {\n color: textColor\n },\n majorTicks: {\n color: textColor\n },\n line: {\n color: textColor\n }\n }\n };\n }\n finally {\n document.body.removeChild(container);\n }\n }\n getColor(container, varName) {\n return window.getComputedStyle(container.querySelector(`.k-var--${varName}`)).backgroundColor;\n }\n};\nThemeService.ɵfac = function ThemeService_Factory(t) { return new (t || ThemeService)(); };\nThemeService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ThemeService, factory: function (t) { return ThemeService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n ThemeService\n ], imports: [ResizeSensorModule] });\n\n/**\n * @hidden\n */\nclass CollectionComponent {\n constructor(key, configurationService, collectionChangesService) {\n this.key = key;\n this.configurationService = configurationService;\n this.collectionChangesService = collectionChangesService;\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.configurationService.set(this.key, []);\n }\n ngAfterContentInit() {\n this.subscription = this.children.changes.subscribe(() => this.collectionChangesService.hasChanges = true);\n }\n ngAfterContentChecked() {\n if (this.collectionChangesService.hasChanges) {\n this.configurationService.set(this.key, this.readItems());\n this.collectionChangesService.hasChanges = false;\n }\n }\n readItems() {\n return this.children.map(child => Object.assign({}, child.configurationService.read()));\n }\n}\nCollectionComponent.ɵfac = function CollectionComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCollectionComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CollectionComponent });\n\n/**\n * @hidden\n */\nclass CollectionItemComponent {\n constructor(configurationService, collectionChangesService) {\n this.configurationService = configurationService;\n this.collectionChangesService = collectionChangesService;\n }\n ngOnChanges(changes) {\n this.configurationService.copyChanges('', changes);\n this.collectionChangesService.hasChanges = true;\n }\n}\nCollectionItemComponent.ɵfac = function CollectionItemComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nCollectionItemComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CollectionItemComponent, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-gauges',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635940663,\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 inDocument = (element) => {\n let node = element;\n while (node && node !== document.body) {\n node = node.parentNode;\n }\n return Boolean(node);\n};\n/**\n * @hidden\n */\nclass GaugeComponent {\n constructor(configurationService, themeService, intlService, localizationService, element, renderer, ngZone) {\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.intlService = intlService;\n this.localizationService = localizationService;\n this.element = element;\n this.renderer = renderer;\n this.ngZone = ngZone;\n /**\n * The maximum number of times the Gauge resizes per second.\n * Defaults to `10`. To disable the automatic resizing, set `resizeRateLimit` to `0`.\n */\n this.resizeRateLimit = 10;\n this.className = true;\n this.theme = null;\n this.rtl = false;\n validatePackage(packageMetadata);\n }\n ngOnInit() {\n this.setDirection();\n this.subscriptions = this.intlService.changes.subscribe(this.intlChange.bind(this));\n this.subscriptions.add(this.localizationService.changes.subscribe(this.rtlChange.bind(this)));\n }\n ngAfterViewChecked() {\n if (typeof document === 'undefined') {\n return;\n }\n let updateMethod;\n if (!this.instance) {\n updateMethod = this.init;\n }\n else if (this.configurationService.hasChanges) {\n updateMethod = this.updateOptions;\n }\n else if (this.configurationService.valueChange) {\n updateMethod = this.setValues;\n }\n if (updateMethod) {\n clearTimeout(this.redrawTimeout);\n if (!this.instance && !inDocument(this.element.nativeElement)) { // required in case the gauge is initialized by ng-content outside of the DOM\n this.defer(() => {\n this.updateCall(updateMethod);\n });\n }\n else {\n this.updateCall(updateMethod);\n }\n }\n }\n updateCall(updateMethod) {\n this.updateDirection();\n updateMethod.call(this);\n this.updateSize();\n }\n updateOptions() {\n this.instance.setOptions(this.configurationService.read());\n }\n setValues() {\n this.instance.allValues(this.configurationService.readValues());\n }\n ngOnChanges(changes) {\n this.configurationService.copyChanges('', changes);\n }\n ngOnDestroy() {\n if (this.instance) {\n this.instance.destroy();\n }\n this.subscriptions.unsubscribe();\n clearTimeout(this.redrawTimeout);\n }\n /**\n * Exports the Gauge as an image. The export operation is asynchronous and returns a promise.\n *\n * @param {ImageExportOptions} options - The parameters for the exported image.\n * @returns {Promise} - A promise that will be resolved with a PNG image that is encoded as a Data URI.\n */\n exportImage(options = {}) {\n return this.exportVisual().then((visual) => {\n return exportImage(visual, options);\n });\n }\n /**\n * Exports the Gauge as an SVG document. The export operation is asynchronous and returns a promise.\n *\n * @param {SVGExportOptions} options - The parameters for the exported file.\n * @returns {Promise} - A promise that will be resolved with an SVG document that is encoded as a Data URI.\n */\n exportSVG(options = {}) {\n return this.exportVisual().then((visual) => {\n return exportSVG(visual, options);\n });\n }\n /**\n * Exports the Gauge as a Drawing `Scene`.\n *\n * @returns {Promise} - A promise that will be resolved with the export visual.\n */\n exportVisual() {\n return Promise.resolve(this.instance.exportVisual());\n }\n /**\n * @hidden\n */\n onResize(_event) {\n if (this.autoResize) {\n this.resize();\n }\n }\n /**\n * Detects the size of the container and redraws the Gauge.\n * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.\n */\n resize() {\n if (this.instance) {\n this.instance.resize();\n }\n }\n init() {\n if (!this.surfaceElement) {\n return;\n }\n this.createInstance(this.surfaceElement.nativeElement, this.configurationService.read(), this.themeService.read(), {\n intlService: this.intlService,\n rtl: this.rtl\n });\n }\n get autoResize() {\n return this.resizeRateLimit > 0;\n }\n updateSize() {\n this.resizeSensor.acceptSize();\n }\n intlChange() {\n if (this.instance) {\n this.deferredRedraw();\n }\n }\n rtlChange() {\n if (this.instance && this.rtl !== this.isRTL) {\n this.deferredRedraw();\n }\n }\n deferredRedraw() {\n this.defer(() => {\n this.updateDirection();\n this.instance.noTransitionsRedraw();\n });\n }\n defer(callback) {\n this.ngZone.runOutsideAngular(() => {\n clearTimeout(this.redrawTimeout);\n this.redrawTimeout = setTimeout(callback, 0);\n });\n }\n updateDirection() {\n const current = this.isRTL;\n if (this.rtl !== current) {\n this.setDirection();\n if (this.instance) {\n this.instance.setDirection(current);\n }\n }\n }\n setDirection() {\n this.rtl = this.isRTL;\n if (this.element) {\n this.renderer.setAttribute(this.element.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n }\n get isRTL() {\n return Boolean(this.localizationService.rtl);\n }\n}\nGaugeComponent.ɵfac = function GaugeComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nGaugeComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GaugeComponent, viewQuery: function GaugeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n ɵngcc0.ɵɵviewQuery(ResizeSensorComponent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.surfaceElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.resizeSensor = _t.first);\n } }, hostVars: 2, hostBindings: function GaugeComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-gauge\", ctx.className);\n } }, inputs: { resizeRateLimit: \"resizeRateLimit\", gaugeArea: \"gaugeArea\", renderAs: \"renderAs\", scale: \"scale\", transitions: \"transitions\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GaugeComponent.prototype, \"gaugeArea\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], GaugeComponent.prototype, \"renderAs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GaugeComponent.prototype, \"resizeRateLimit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GaugeComponent.prototype, \"scale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GaugeComponent.prototype, \"transitions\", void 0);\n__decorate([\n ViewChild('surface', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], GaugeComponent.prototype, \"surfaceElement\", void 0);\n__decorate([\n ViewChild(ResizeSensorComponent, { static: true }),\n __metadata(\"design:type\", ResizeSensorComponent)\n], GaugeComponent.prototype, \"resizeSensor\", void 0);\n__decorate([\n HostBinding('class.k-gauge'),\n __metadata(\"design:type\", Boolean)\n], GaugeComponent.prototype, \"className\", void 0);\n\n/**\n * @hidden\n */\nclass SettingsComponent {\n constructor(key, configurationService) {\n this.key = key;\n this.configurationService = configurationService;\n }\n ngOnChanges(changes) {\n this.configurationService.copyChanges(this.key, changes);\n }\n ngOnDestroy() {\n this.configurationService.set(this.key, null);\n }\n}\nSettingsComponent.ɵfac = function SettingsComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSettingsComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SettingsComponent, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n\n/**\n * @hidden\n */\nclass GaugeAreaComponent extends SettingsComponent {\n}\nGaugeAreaComponent.ɵfac = /*@__PURE__*/ function () { let ɵGaugeAreaComponent_BaseFactory; return function GaugeAreaComponent_Factory(t) { return (ɵGaugeAreaComponent_BaseFactory || (ɵGaugeAreaComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GaugeAreaComponent)))(t || GaugeAreaComponent); }; }();\nGaugeAreaComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GaugeAreaComponent, inputs: { background: \"background\", border: \"border\", height: \"height\", margin: \"margin\", width: \"width\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], GaugeAreaComponent.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GaugeAreaComponent.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GaugeAreaComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GaugeAreaComponent.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GaugeAreaComponent.prototype, \"width\", void 0);\n\n/**\n * @hidden\n */\nclass LabelsComponent extends SettingsComponent {\n}\nLabelsComponent.ɵfac = /*@__PURE__*/ function () { let ɵLabelsComponent_BaseFactory; return function LabelsComponent_Factory(t) { return (ɵLabelsComponent_BaseFactory || (ɵLabelsComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LabelsComponent)))(t || LabelsComponent); }; }();\nLabelsComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LabelsComponent, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", content: \"content\", visible: \"visible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LabelsComponent.prototype, \"background\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LabelsComponent.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LabelsComponent.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LabelsComponent.prototype, \"font\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LabelsComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LabelsComponent.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LabelsComponent.prototype, \"padding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], LabelsComponent.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LabelsComponent.prototype, \"visible\", void 0);\n\n/**\n * @hidden\n */\nclass RangeComponent extends CollectionItemComponent {\n}\nRangeComponent.ɵfac = /*@__PURE__*/ function () { let ɵRangeComponent_BaseFactory; return function RangeComponent_Factory(t) { return (ɵRangeComponent_BaseFactory || (ɵRangeComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(RangeComponent)))(t || RangeComponent); }; }();\nRangeComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: RangeComponent, inputs: { from: \"from\", to: \"to\", opacity: \"opacity\", color: \"color\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], RangeComponent.prototype, \"from\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], RangeComponent.prototype, \"to\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], RangeComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], RangeComponent.prototype, \"color\", void 0);\n\n/**\n * @hidden\n */\nclass ScaleComponent extends SettingsComponent {\n}\nScaleComponent.ɵfac = /*@__PURE__*/ function () { let ɵScaleComponent_BaseFactory; return function ScaleComponent_Factory(t) { return (ɵScaleComponent_BaseFactory || (ɵScaleComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ScaleComponent)))(t || ScaleComponent); }; }();\nScaleComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ScaleComponent, inputs: { labels: \"labels\", majorTicks: \"majorTicks\", minorTicks: \"minorTicks\", min: \"min\", max: \"max\", minorUnit: \"minorUnit\", majorUnit: \"majorUnit\", reverse: \"reverse\", rangeSize: \"rangeSize\", rangePlaceholderColor: \"rangePlaceholderColor\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ScaleComponent.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ScaleComponent.prototype, \"majorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ScaleComponent.prototype, \"minorTicks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ScaleComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ScaleComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ScaleComponent.prototype, \"minorUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ScaleComponent.prototype, \"majorUnit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ScaleComponent.prototype, \"reverse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ScaleComponent.prototype, \"rangeSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ScaleComponent.prototype, \"rangePlaceholderColor\", void 0);\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component which will be used for the center template\n * ([more information and example]({% slug centertemplate_arcgauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ value }}%\n * \n * \n *\n * `\n * })\n * export class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nlet ArcCenterTemplateDirective = class ArcCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nArcCenterTemplateDirective.ɵfac = function ArcCenterTemplateDirective_Factory(t) { return new (t || ArcCenterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nArcCenterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ArcCenterTemplateDirective, selectors: [[\"\", \"kendoArcGaugeCenterTemplate\", \"\"]] });\nArcCenterTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ArcCenterTemplateDirective);\n\n/* tslint:disable:use-life-cycle-interface */\n/**\n * Represents the [Kendo UI ArcGauge component for Angular]({% slug overview_arcgauge_gauges %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ value }}%\n * \n * \n * `\n * })\n * class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nlet ArcGaugeComponent = class ArcGaugeComponent extends GaugeComponent {\n constructor(changeDetector, configurationService, themeService, intlService, localizationService, element, renderer, ngZone) {\n super(configurationService, themeService, intlService, localizationService, element, renderer, ngZone);\n this.changeDetector = changeDetector;\n this.className = true;\n this.centerTemplateContext = {};\n }\n ngOnInit() {\n super.ngOnInit();\n if (this.element) {\n this.renderer.setStyle(this.element.nativeElement, 'position', 'relative');\n }\n }\n ngAfterViewChecked() {\n super.ngAfterViewChecked();\n if (this.labelElement && !this.centerTemplate) {\n this.changeDetector.detectChanges();\n }\n else if (!this.labelElement && this.centerTemplate) {\n this.updateCenterTemplate();\n }\n }\n /**\n * Exports the gauge as a Drawing `Scene`.\n *\n * @returns {Promise} - A promise that will be resolved with the export visual.\n */\n exportVisual() {\n return drawDOM(this.element.nativeElement);\n }\n /**\n * Detects the size of the container and redraws the Gauge.\n * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.\n */\n resize() {\n super.resize();\n this.updateCenterTemplate();\n }\n createInstance(element, options, theme, context) {\n this.instance = new ArcGauge(element, options, theme, context);\n this.updateElements();\n }\n updateOptions() {\n super.updateOptions();\n this.updateElements();\n }\n setValues() {\n const value = this.configurationService.readValue();\n this.instance.value(value);\n this.updateCenterTemplate();\n }\n updateElements() {\n this.resizeSensor.acceptSize();\n this.updateCenterTemplate();\n }\n updateCenterTemplate() {\n if (!this.instance || !this.centerTemplate) {\n return;\n }\n this.centerTemplateContext.value = this.instance.value();\n this.centerTemplateContext.color = this.instance.currentColor();\n this.changeDetector.detectChanges();\n this.positionLabel();\n }\n positionLabel() {\n if (!this.labelElement) {\n return;\n }\n const element = this.labelElement.nativeElement;\n const width = element.offsetWidth;\n const height = element.offsetHeight;\n const position = this.instance.centerLabelPosition(width, height);\n element.style.top = `${position.top}px`;\n element.style.left = `${position.left}px`;\n }\n //tslint:disable-next-line: no-empty\n updateSize() {\n }\n};\nArcGaugeComponent.ɵfac = function ArcGaugeComponent_Factory(t) { return new (t || ArcGaugeComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(ThemeService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nArcGaugeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ArcGaugeComponent, selectors: [[\"kendo-arcgauge\"]], contentQueries: function ArcGaugeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ArcCenterTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.centerTemplate = _t.first);\n } }, viewQuery: function ArcGaugeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c1, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelElement = _t.first);\n } }, hostVars: 2, hostBindings: function ArcGaugeComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-arcgauge\", ctx.className);\n } }, inputs: { value: \"value\", color: \"color\", colors: \"colors\", opacity: \"opacity\", scale: \"scale\" }, exportAs: [\"kendoArcGauge\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.arcgauge'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 2, consts: [[1, \"k-chart-surface\"], [\"surface\", \"\"], [\"class\", \"k-arcgauge-label\", 4, \"ngIf\"], [3, \"rateLimit\", \"resize\"], [1, \"k-arcgauge-label\"], [\"label\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function ArcGaugeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0, 1);\n ɵngcc0.ɵɵtemplate(2, ArcGaugeComponent_div_2_Template, 3, 2, \"div\", 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-resize-sensor\", 3);\n ɵngcc0.ɵɵlistener(\"resize\", function ArcGaugeComponent_Template_kendo_resize_sensor_resize_3_listener($event) { return ctx.onResize($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.centerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"rateLimit\", ctx.resizeRateLimit);\n } }, directives: [ɵngcc3.NgIf, ɵngcc3.NgTemplateOutlet, ɵngcc4.ResizeSensorComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ArcGaugeComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ArcGaugeComponent.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ArcGaugeComponent.prototype, \"colors\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ArcGaugeComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ArcGaugeComponent.prototype, \"scale\", void 0);\n__decorate([\n ContentChild(ArcCenterTemplateDirective, { static: false }),\n __metadata(\"design:type\", ArcCenterTemplateDirective)\n], ArcGaugeComponent.prototype, \"centerTemplate\", void 0);\n__decorate([\n ViewChild(\"label\", { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ArcGaugeComponent.prototype, \"labelElement\", void 0);\n__decorate([\n HostBinding('class.k-arcgauge'),\n __metadata(\"design:type\", Boolean)\n], ArcGaugeComponent.prototype, \"className\", void 0);\nArcGaugeComponent = __decorate([ __metadata(\"design:paramtypes\", [ChangeDetectorRef,\n ConfigurationService,\n ThemeService,\n IntlService,\n LocalizationService,\n ElementRef,\n Renderer2,\n NgZone])\n], ArcGaugeComponent);\n\n/**\n * The configuration options of the ArcGauge area.\n * Represents the entire visible area of the ArcGauge.\n */\nlet ArcGaugeAreaComponent = class ArcGaugeAreaComponent extends GaugeAreaComponent {\n constructor(configurationService) {\n super('gaugeArea', configurationService);\n this.configurationService = configurationService;\n }\n};\nArcGaugeAreaComponent.ɵfac = function ArcGaugeAreaComponent_Factory(t) { return new (t || ArcGaugeAreaComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nArcGaugeAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ArcGaugeAreaComponent, selectors: [[\"kendo-arcgauge-area\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ArcGaugeAreaComponent_Template(rf, ctx) { }, encapsulation: 2 });\nArcGaugeAreaComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ArcGaugeAreaComponent);\n\n/**\n * The configuration options for the scale of the ArcGauge\n * ([see example]({% slug scaleoptions_arcgauge %})).\n */\nlet ArcScaleComponent = class ArcScaleComponent extends ScaleComponent {\n constructor(configurationService) {\n super('scale', configurationService);\n this.configurationService = configurationService;\n }\n};\nArcScaleComponent.ɵfac = function ArcScaleComponent_Factory(t) { return new (t || ArcScaleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nArcScaleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ArcScaleComponent, selectors: [[\"kendo-arcgauge-scale\"]], inputs: { labels: \"labels\", rangeDistance: \"rangeDistance\", rangeLineCap: \"rangeLineCap\", startAngle: \"startAngle\", endAngle: \"endAngle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ArcScaleComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ArcScaleComponent.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ArcScaleComponent.prototype, \"rangeDistance\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ArcScaleComponent.prototype, \"rangeLineCap\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ArcScaleComponent.prototype, \"startAngle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ArcScaleComponent.prototype, \"endAngle\", void 0);\nArcScaleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ArcScaleComponent);\n\n/**\n * The configuration options for the scale labels of the RadialGauge.\n */\nlet RadialLabelsComponent = class RadialLabelsComponent extends LabelsComponent {\n constructor(configurationService) {\n super('scale.labels', configurationService);\n this.configurationService = configurationService;\n }\n};\nRadialLabelsComponent.ɵfac = function RadialLabelsComponent_Factory(t) { return new (t || RadialLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nRadialLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RadialLabelsComponent, selectors: [[\"kendo-radialgauge-scale-labels\"]], inputs: { position: \"position\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RadialLabelsComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], RadialLabelsComponent.prototype, \"position\", void 0);\nRadialLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], RadialLabelsComponent);\n\n/**\n * The configuration options for the scale labels of the ArcGauge.\n */\nlet ArcLabelsComponent = class ArcLabelsComponent extends RadialLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n configurationService.set(`${this.key}.visible`, true);\n }\n};\nArcLabelsComponent.ɵfac = function ArcLabelsComponent_Factory(t) { return new (t || ArcLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nArcLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ArcLabelsComponent, selectors: [[\"kendo-arcgauge-scale-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ArcLabelsComponent_Template(rf, ctx) { }, encapsulation: 2 });\nArcLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], ArcLabelsComponent);\n\n/**\n * The configuration options for an ArcGauge color item.\n */\nlet ColorComponent = class ColorComponent extends CollectionItemComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n};\nColorComponent.ɵfac = function ColorComponent_Factory(t) { return new (t || ColorComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nColorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorComponent, selectors: [[\"kendo-arcgauge-color\"]], inputs: { color: \"color\", opacity: \"opacity\", from: \"from\", to: \"to\" }, features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ColorComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorComponent.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ColorComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ColorComponent.prototype, \"from\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ColorComponent.prototype, \"to\", void 0);\nColorComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], ColorComponent);\n\n/**\n * A collection of one or more ArcGauge colors\n * ([more information and example]({% slug colorranges_arcgauge %})).\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 * \n * `\n * })\n * export class AppComponent {\n * public value: number = 10;\n *\n * public colors: any[] = [{\n * to: 25,\n * color: '#0058e9'\n * }, {\n * from: 25,\n * to: 50,\n * color: '#37b400'\n * }, {\n * from: 50,\n * to: 75,\n * color: '#ffc000'\n * }, {\n * from: 75,\n * color: '#f31700'\n * }];\n * }\n *\n * ```\n */\nlet ColorsComponent = class ColorsComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('colors', configurationService, collectionChangesService);\n }\n};\nColorsComponent.ɵfac = function ColorsComponent_Factory(t) { return new (t || ColorsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nColorsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorsComponent, selectors: [[\"kendo-arcgauge-colors\"]], contentQueries: function ColorsComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColorComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([CollectionChangesService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ColorsComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(ColorComponent),\n __metadata(\"design:type\", QueryList)\n], ColorsComponent.prototype, \"children\", void 0);\nColorsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], ColorsComponent);\n\nconst DIRECTIVES = [ArcGaugeComponent, ArcCenterTemplateDirective, ArcGaugeAreaComponent, ArcScaleComponent, ArcLabelsComponent,\n ColorsComponent, ColorComponent];\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes the ArcGauge component and its directives.\n * Imports the `ArcGaugeModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the ArcGauge component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { ArcGaugeModule } from '@progress/kendo-angular-gauges';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, ArcGaugeModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet ArcGaugeModule = class ArcGaugeModule {\n};\nArcGaugeModule.ɵfac = function ArcGaugeModule_Factory(t) { return new (t || ArcGaugeModule)(); };\nArcGaugeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ArcGaugeModule });\nArcGaugeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule, CommonModule]] });\n\n/**\n * Represents the [Kendo UI LinearGauge component for Angular]({% slug overview_lineargauge_gauges %}).\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 * class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nlet LinearGaugeComponent = class LinearGaugeComponent extends GaugeComponent {\n constructor(configurationService, themeService, intlService, localizationService, element, renderer, ngZone) {\n super(configurationService, themeService, intlService, localizationService, element, renderer, ngZone);\n }\n createInstance(element, options, theme, context) {\n this.instance = new LinearGauge(element, options, theme, context);\n }\n};\nLinearGaugeComponent.ɵfac = function LinearGaugeComponent_Factory(t) { return new (t || LinearGaugeComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(ThemeService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nLinearGaugeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearGaugeComponent, selectors: [[\"kendo-lineargauge\"]], inputs: { pointer: \"pointer\", scale: \"scale\" }, exportAs: [\"kendoLinearGauge\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.lineargauge'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [[1, \"k-chart-surface\"], [\"surface\", \"\"], [3, \"rateLimit\", \"resize\"]], template: function LinearGaugeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0, 1);\n ɵngcc0.ɵɵelementStart(2, \"kendo-resize-sensor\", 2);\n ɵngcc0.ɵɵlistener(\"resize\", function LinearGaugeComponent_Template_kendo_resize_sensor_resize_2_listener($event) { return ctx.onResize($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"rateLimit\", ctx.resizeRateLimit);\n } }, directives: [ɵngcc4.ResizeSensorComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LinearGaugeComponent.prototype, \"pointer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LinearGaugeComponent.prototype, \"scale\", void 0);\nLinearGaugeComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n ThemeService,\n IntlService,\n LocalizationService,\n ElementRef,\n Renderer2,\n NgZone])\n], LinearGaugeComponent);\n\n/**\n * The configuration options for the LinearGauge area.\n * Represents the entire visible area of the LinearGauge.\n */\nlet LinearGaugeAreaComponent = class LinearGaugeAreaComponent extends GaugeAreaComponent {\n constructor(configurationService) {\n super('gaugeArea', configurationService);\n this.configurationService = configurationService;\n }\n};\nLinearGaugeAreaComponent.ɵfac = function LinearGaugeAreaComponent_Factory(t) { return new (t || LinearGaugeAreaComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nLinearGaugeAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearGaugeAreaComponent, selectors: [[\"kendo-lineargauge-area\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LinearGaugeAreaComponent_Template(rf, ctx) { }, encapsulation: 2 });\nLinearGaugeAreaComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], LinearGaugeAreaComponent);\n\n/**\n * The configuration options for the scale of the LinearGauge\n * ([see example]({% slug scaleoptions_lineargauge %})).\n */\nlet LinearScaleComponent = class LinearScaleComponent extends ScaleComponent {\n constructor(configurationService) {\n super('scale', configurationService);\n this.configurationService = configurationService;\n }\n};\nLinearScaleComponent.ɵfac = function LinearScaleComponent_Factory(t) { return new (t || LinearScaleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nLinearScaleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearScaleComponent, selectors: [[\"kendo-lineargauge-scale\"]], inputs: { line: \"line\", ranges: \"ranges\", mirror: \"mirror\", vertical: \"vertical\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LinearScaleComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LinearScaleComponent.prototype, \"line\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], LinearScaleComponent.prototype, \"ranges\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LinearScaleComponent.prototype, \"mirror\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LinearScaleComponent.prototype, \"vertical\", void 0);\nLinearScaleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], LinearScaleComponent);\n\n/**\n * The configuration options for the scale labels of the LinearGauge.\n */\nlet LinearLabelsComponent = class LinearLabelsComponent extends LabelsComponent {\n constructor(configurationService) {\n super('scale.labels', configurationService);\n this.configurationService = configurationService;\n }\n};\nLinearLabelsComponent.ɵfac = function LinearLabelsComponent_Factory(t) { return new (t || LinearLabelsComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nLinearLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearLabelsComponent, selectors: [[\"kendo-lineargauge-scale-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LinearLabelsComponent_Template(rf, ctx) { }, encapsulation: 2 });\nLinearLabelsComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], LinearLabelsComponent);\n\n/**\n * The configuration options for a pointer item of a LinearGauge.\n */\nlet LinearPointerComponent = class LinearPointerComponent extends CollectionItemComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n};\nLinearPointerComponent.ɵfac = function LinearPointerComponent_Factory(t) { return new (t || LinearPointerComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nLinearPointerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearPointerComponent, selectors: [[\"kendo-lineargauge-pointer\"]], inputs: { border: \"border\", color: \"color\", margin: \"margin\", opacity: \"opacity\", shape: \"shape\", size: \"size\", value: \"value\" }, features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LinearPointerComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LinearPointerComponent.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LinearPointerComponent.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LinearPointerComponent.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LinearPointerComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LinearPointerComponent.prototype, \"shape\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LinearPointerComponent.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LinearPointerComponent.prototype, \"value\", void 0);\nLinearPointerComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], LinearPointerComponent);\n\n/**\n * A collection of one or more LinearGauge pointers\n * ([more information]({% slug multiplepointers_lineargauge %})).\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 * \n * `\n * })\n * export class AppComponent {\n * public pointers: any[] = [{\n * value: 10,\n * color: '#ff4500'\n * }, {\n * value: 12,\n * color: '#28b4c8'\n * }, {\n * value: 20,\n * color: '#8b0000'\n * }];\n * }\n *\n * ```\n */\nlet LinearPointersComponent = class LinearPointersComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('pointer', configurationService, collectionChangesService);\n }\n};\nLinearPointersComponent.ɵfac = function LinearPointersComponent_Factory(t) { return new (t || LinearPointersComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nLinearPointersComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearPointersComponent, selectors: [[\"kendo-lineargauge-pointers\"]], contentQueries: function LinearPointersComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, LinearPointerComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([CollectionChangesService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LinearPointersComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(LinearPointerComponent),\n __metadata(\"design:type\", QueryList)\n], LinearPointersComponent.prototype, \"children\", void 0);\nLinearPointersComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], LinearPointersComponent);\n\n/**\n * The configuration options for a scale range item of a LinearGauge.\n */\nlet LinearRangeComponent = class LinearRangeComponent extends RangeComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n};\nLinearRangeComponent.ɵfac = function LinearRangeComponent_Factory(t) { return new (t || LinearRangeComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nLinearRangeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearRangeComponent, selectors: [[\"kendo-lineargauge-scale-range\"]], features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LinearRangeComponent_Template(rf, ctx) { }, encapsulation: 2 });\nLinearRangeComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], LinearRangeComponent);\n\n/**\n * A collection of one or more LinearGauge scale ranges\n * ([more information and example]({% slug scaleranghes_lineargauge %})).\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 * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public ranges: any[] = [{\n * from: 0,\n * to: 15,\n * color: '#ffd246'\n * }, {\n * from: 15,\n * to: 30,\n * color: '#28b4c8'\n * }, {\n * from: 30,\n * to: 50,\n * color: '#78d237'\n * }];\n * }\n *\n * ```\n */\nlet LinearRangesComponent = class LinearRangesComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('scale.ranges', configurationService, collectionChangesService);\n }\n};\nLinearRangesComponent.ɵfac = function LinearRangesComponent_Factory(t) { return new (t || LinearRangesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nLinearRangesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearRangesComponent, selectors: [[\"kendo-lineargauge-scale-ranges\"]], contentQueries: function LinearRangesComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, LinearRangeComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([CollectionChangesService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LinearRangesComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(LinearRangeComponent),\n __metadata(\"design:type\", QueryList)\n], LinearRangesComponent.prototype, \"children\", void 0);\nLinearRangesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], LinearRangesComponent);\n\nconst DIRECTIVES$1 = [LinearGaugeComponent, LinearGaugeAreaComponent, LinearScaleComponent, LinearLabelsComponent,\n LinearPointersComponent, LinearPointerComponent, LinearRangeComponent, LinearRangesComponent];\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes the LinearGauge component and its directives.\n * Imports the `LinearGaugeModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the LinearGauge component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { LinearGaugeModule } from '@progress/kendo-angular-gauges';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, LinearGaugeModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet LinearGaugeModule = class LinearGaugeModule {\n};\nLinearGaugeModule.ɵfac = function LinearGaugeModule_Factory(t) { return new (t || LinearGaugeModule)(); };\nLinearGaugeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: LinearGaugeModule });\nLinearGaugeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule]] });\n\n/**\n * Represents the [Kendo UI RadialGauge component for Angular]({% slug overview_radialgauge_gauges %}).\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 * class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nlet RadialGaugeComponent = class RadialGaugeComponent extends GaugeComponent {\n constructor(configurationService, themeService, intlService, localizationService, element, renderer, ngZone) {\n super(configurationService, themeService, intlService, localizationService, element, renderer, ngZone);\n }\n createInstance(element, options, theme, context) {\n this.instance = new RadialGauge(element, options, theme, context);\n }\n};\nRadialGaugeComponent.ɵfac = function RadialGaugeComponent_Factory(t) { return new (t || RadialGaugeComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(ThemeService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nRadialGaugeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RadialGaugeComponent, selectors: [[\"kendo-radialgauge\"]], inputs: { pointer: \"pointer\", scale: \"scale\" }, exportAs: [\"kendoRadialGauge\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.radialgauge'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [[1, \"k-chart-surface\"], [\"surface\", \"\"], [3, \"rateLimit\", \"resize\"]], template: function RadialGaugeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0, 1);\n ɵngcc0.ɵɵelementStart(2, \"kendo-resize-sensor\", 2);\n ɵngcc0.ɵɵlistener(\"resize\", function RadialGaugeComponent_Template_kendo_resize_sensor_resize_2_listener($event) { return ctx.onResize($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"rateLimit\", ctx.resizeRateLimit);\n } }, directives: [ɵngcc4.ResizeSensorComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], RadialGaugeComponent.prototype, \"pointer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], RadialGaugeComponent.prototype, \"scale\", void 0);\nRadialGaugeComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n ThemeService,\n IntlService,\n LocalizationService,\n ElementRef,\n Renderer2,\n NgZone])\n], RadialGaugeComponent);\n\n/**\n * The configuration options for the RadialGauge area.\n * Represents the entire visible area of the RadialGauge.\n */\nlet RadialGaugeAreaComponent = class RadialGaugeAreaComponent extends GaugeAreaComponent {\n constructor(configurationService) {\n super('gaugeArea', configurationService);\n this.configurationService = configurationService;\n }\n};\nRadialGaugeAreaComponent.ɵfac = function RadialGaugeAreaComponent_Factory(t) { return new (t || RadialGaugeAreaComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nRadialGaugeAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RadialGaugeAreaComponent, selectors: [[\"kendo-radialgauge-area\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RadialGaugeAreaComponent_Template(rf, ctx) { }, encapsulation: 2 });\nRadialGaugeAreaComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], RadialGaugeAreaComponent);\n\n/**\n * The configuration options for the scale of the RadialGauge\n * ([more information and example]({% slug scaleoptions_radialgauge %})).\n */\nlet RadialScaleComponent = class RadialScaleComponent extends ScaleComponent {\n constructor(configurationService) {\n super('scale', configurationService);\n this.configurationService = configurationService;\n }\n};\nRadialScaleComponent.ɵfac = function RadialScaleComponent_Factory(t) { return new (t || RadialScaleComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService)); };\nRadialScaleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RadialScaleComponent, selectors: [[\"kendo-radialgauge-scale\"]], inputs: { labels: \"labels\", rangeDistance: \"rangeDistance\", ranges: \"ranges\", startAngle: \"startAngle\", endAngle: \"endAngle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RadialScaleComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], RadialScaleComponent.prototype, \"labels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], RadialScaleComponent.prototype, \"rangeDistance\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], RadialScaleComponent.prototype, \"ranges\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], RadialScaleComponent.prototype, \"startAngle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], RadialScaleComponent.prototype, \"endAngle\", void 0);\nRadialScaleComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService])\n], RadialScaleComponent);\n\n/**\n * The configuration options for a pointer item of a RadialGauge.\n */\nlet RadialPointerComponent = class RadialPointerComponent extends CollectionItemComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n};\nRadialPointerComponent.ɵfac = function RadialPointerComponent_Factory(t) { return new (t || RadialPointerComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nRadialPointerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RadialPointerComponent, selectors: [[\"kendo-radialgauge-pointer\"]], inputs: { cap: \"cap\", color: \"color\", length: \"length\", value: \"value\" }, features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RadialPointerComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], RadialPointerComponent.prototype, \"cap\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], RadialPointerComponent.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], RadialPointerComponent.prototype, \"length\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], RadialPointerComponent.prototype, \"value\", void 0);\nRadialPointerComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], RadialPointerComponent);\n\n/**\n * A collection of one or more RadialGauge pointers\n * ([more information and example]({% slug multiplepointers_radialgauge %})).\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 * \n * `\n * })\n * export class AppComponent {\n * public pointers: any[] = [{\n * value: 10,\n * color: '#ffd246'\n * }, {\n * value: 20,\n * color: '#28b4c8'\n * }, {\n * value: 30,\n * color: '#78d237'\n * }];\n * }\n *\n * ```\n */\nlet RadialPointersComponent = class RadialPointersComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('pointer', configurationService, collectionChangesService);\n }\n};\nRadialPointersComponent.ɵfac = function RadialPointersComponent_Factory(t) { return new (t || RadialPointersComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nRadialPointersComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RadialPointersComponent, selectors: [[\"kendo-radialgauge-pointers\"]], contentQueries: function RadialPointersComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, RadialPointerComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([CollectionChangesService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RadialPointersComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(RadialPointerComponent),\n __metadata(\"design:type\", QueryList)\n], RadialPointersComponent.prototype, \"children\", void 0);\nRadialPointersComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], RadialPointersComponent);\n\n/**\n * The configuration options for a scale range item of a RadialGauge.\n */\nlet RadialRangeComponent = class RadialRangeComponent extends RangeComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n};\nRadialRangeComponent.ɵfac = function RadialRangeComponent_Factory(t) { return new (t || RadialRangeComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nRadialRangeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RadialRangeComponent, selectors: [[\"kendo-radialgauge-scale-range\"]], features: [ɵngcc0.ɵɵProvidersFeature([ConfigurationService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RadialRangeComponent_Template(rf, ctx) { }, encapsulation: 2 });\nRadialRangeComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], RadialRangeComponent);\n\n/**\n * A collection of one or more RadialGauge scale ranges\n * ([more information and example]({% slug scaleranghes_radialgauge %})).\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 * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public ranges: any[] = [{\n * from: 0,\n * to: 15,\n * color: '#ffd246'\n * }, {\n * from: 15,\n * to: 30,\n * color: '#28b4c8'\n * }, {\n * from: 30,\n * to: 50,\n * color: '#78d237'\n * }];\n * }\n *\n * ```\n */\nlet RadialRangesComponent = class RadialRangesComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('scale.ranges', configurationService, collectionChangesService);\n }\n};\nRadialRangesComponent.ɵfac = function RadialRangesComponent_Factory(t) { return new (t || RadialRangesComponent)(ɵngcc0.ɵɵdirectiveInject(ConfigurationService), ɵngcc0.ɵɵdirectiveInject(CollectionChangesService)); };\nRadialRangesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RadialRangesComponent, selectors: [[\"kendo-radialgauge-scale-ranges\"]], contentQueries: function RadialRangesComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, RadialRangeComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([CollectionChangesService]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RadialRangesComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(RadialRangeComponent),\n __metadata(\"design:type\", QueryList)\n], RadialRangesComponent.prototype, \"children\", void 0);\nRadialRangesComponent = __decorate([ __metadata(\"design:paramtypes\", [ConfigurationService,\n CollectionChangesService])\n], RadialRangesComponent);\n\nconst DIRECTIVES$2 = [RadialGaugeComponent, RadialGaugeAreaComponent, RadialScaleComponent, RadialLabelsComponent,\n RadialPointersComponent, RadialPointerComponent, RadialRangeComponent, RadialRangesComponent];\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes the RadialGauge component and its directives.\n * Imports the `RadialGaugeModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the RadialGauge component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { RadialGaugeModule } from '@progress/kendo-angular-gauges';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, RadialGaugeModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet RadialGaugeModule = class RadialGaugeModule {\n};\nRadialGaugeModule.ɵfac = function RadialGaugeModule_Factory(t) { return new (t || RadialGaugeModule)(); };\nRadialGaugeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: RadialGaugeModule });\nRadialGaugeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule]] });\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component which will be used for the center template\n * ([more information and example]({% slug centertemplate_circulargauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ value }}%\n * \n * \n *\n * `\n * })\n * export class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nlet CircularGaugeCenterTemplateDirective = class CircularGaugeCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nCircularGaugeCenterTemplateDirective.ɵfac = function CircularGaugeCenterTemplateDirective_Factory(t) { return new (t || CircularGaugeCenterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nCircularGaugeCenterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CircularGaugeCenterTemplateDirective, selectors: [[\"\", \"kendoCircularGaugeCenterTemplate\", \"\"]] });\nCircularGaugeCenterTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], CircularGaugeCenterTemplateDirective);\n\n/**\n * Represents the [Kendo UI CircularGauge component for Angular]({% slug overview_circulargauge_gauges %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ value }}%\n * \n * \n * `\n * })\n * class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nlet CircularGaugeComponent = class CircularGaugeComponent extends ArcGaugeComponent {\n createInstance(element, options, theme, context) {\n this.instance = new CircularGauge(element, options, theme, context);\n this.updateElements();\n }\n};\nCircularGaugeComponent.ɵfac = /*@__PURE__*/ function () { let ɵCircularGaugeComponent_BaseFactory; return function CircularGaugeComponent_Factory(t) { return (ɵCircularGaugeComponent_BaseFactory || (ɵCircularGaugeComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(CircularGaugeComponent)))(t || CircularGaugeComponent); }; }();\nCircularGaugeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CircularGaugeComponent, selectors: [[\"kendo-circulargauge\"]], contentQueries: function CircularGaugeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CircularGaugeCenterTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.centerTemplate = _t.first);\n } }, inputs: { scale: \"scale\" }, exportAs: [\"kendoCircularGauge\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.circulargauge'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 2, consts: [[1, \"k-chart-surface\"], [\"surface\", \"\"], [\"class\", \"k-arcgauge-label\", 4, \"ngIf\"], [3, \"rateLimit\", \"resize\"], [1, \"k-arcgauge-label\"], [\"label\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function CircularGaugeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0, 1);\n ɵngcc0.ɵɵtemplate(2, CircularGaugeComponent_div_2_Template, 3, 2, \"div\", 2);\n ɵngcc0.ɵɵelementStart(3, \"kendo-resize-sensor\", 3);\n ɵngcc0.ɵɵlistener(\"resize\", function CircularGaugeComponent_Template_kendo_resize_sensor_resize_3_listener($event) { return ctx.onResize($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.centerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"rateLimit\", ctx.resizeRateLimit);\n } }, directives: [ɵngcc3.NgIf, ɵngcc3.NgTemplateOutlet, ɵngcc4.ResizeSensorComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CircularGaugeComponent.prototype, \"scale\", void 0);\n__decorate([\n ContentChild(CircularGaugeCenterTemplateDirective, { static: false }),\n __metadata(\"design:type\", CircularGaugeCenterTemplateDirective)\n], CircularGaugeComponent.prototype, \"centerTemplate\", void 0);\n\n/**\n * The configuration options of the Circular Gauge area.\n * Represents the entire visible area of the Circular Gauge.\n */\nlet CircularGaugeAreaComponent = class CircularGaugeAreaComponent extends ArcGaugeAreaComponent {\n};\nCircularGaugeAreaComponent.ɵfac = /*@__PURE__*/ function () { let ɵCircularGaugeAreaComponent_BaseFactory; return function CircularGaugeAreaComponent_Factory(t) { return (ɵCircularGaugeAreaComponent_BaseFactory || (ɵCircularGaugeAreaComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(CircularGaugeAreaComponent)))(t || CircularGaugeAreaComponent); }; }();\nCircularGaugeAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CircularGaugeAreaComponent, selectors: [[\"kendo-circulargauge-area\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CircularGaugeAreaComponent_Template(rf, ctx) { }, encapsulation: 2 });\n\n/**\n * The configuration options for the scale of the Circular Gauge\n * ([see example]({% slug scaleoptions_circulargauge %})).\n */\nlet CircularGaugeScaleComponent = class CircularGaugeScaleComponent extends ArcScaleComponent {\n};\nCircularGaugeScaleComponent.ɵfac = /*@__PURE__*/ function () { let ɵCircularGaugeScaleComponent_BaseFactory; return function CircularGaugeScaleComponent_Factory(t) { return (ɵCircularGaugeScaleComponent_BaseFactory || (ɵCircularGaugeScaleComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(CircularGaugeScaleComponent)))(t || CircularGaugeScaleComponent); }; }();\nCircularGaugeScaleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CircularGaugeScaleComponent, selectors: [[\"kendo-circulargauge-scale\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CircularGaugeScaleComponent_Template(rf, ctx) { }, encapsulation: 2 });\n\n/**\n * The configuration options for the scale labels of the Circular Gauge.\n */\nlet CircularGaugeLabelsComponent = class CircularGaugeLabelsComponent extends ArcLabelsComponent {\n};\nCircularGaugeLabelsComponent.ɵfac = /*@__PURE__*/ function () { let ɵCircularGaugeLabelsComponent_BaseFactory; return function CircularGaugeLabelsComponent_Factory(t) { return (ɵCircularGaugeLabelsComponent_BaseFactory || (ɵCircularGaugeLabelsComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(CircularGaugeLabelsComponent)))(t || CircularGaugeLabelsComponent); }; }();\nCircularGaugeLabelsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CircularGaugeLabelsComponent, selectors: [[\"kendo-circulargauge-scale-labels\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CircularGaugeLabelsComponent_Template(rf, ctx) { }, encapsulation: 2 });\n\nconst DIRECTIVES$3 = [\n CircularGaugeComponent,\n CircularGaugeCenterTemplateDirective,\n CircularGaugeAreaComponent,\n CircularGaugeScaleComponent,\n CircularGaugeLabelsComponent\n];\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes the CircularGauge component and its directives.\n * Imports the `CircularGaugeModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the CircularGauge component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { CircularGaugeModule } from '@progress/kendo-angular-gauges';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, CircularGaugeModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet CircularGaugeModule = class CircularGaugeModule {\n};\nCircularGaugeModule.ɵfac = function CircularGaugeModule_Factory(t) { return new (t || CircularGaugeModule)(); };\nCircularGaugeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CircularGaugeModule });\nCircularGaugeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule, CommonModule]] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes all Gauge components and directives.\n *\n * Imports the `GaugesModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Gauge components.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { GaugesModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, GaugesModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet GaugesModule = class GaugesModule {\n};\nGaugesModule.ɵfac = function GaugesModule_Factory(t) { return new (t || GaugesModule)(); };\nGaugesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: GaugesModule });\nGaugesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [ArcGaugeModule, CircularGaugeModule, LinearGaugeModule, RadialGaugeModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ConfigurationService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CollectionChangesService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ThemeService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n exports: [ResizeSensorModule],\n providers: [\n ThemeService\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { exports: function () { return [ResizeSensorModule]; } }); })();\n\n\n\n\n\n\n\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ArcCenterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoArcGaugeCenterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ArcGaugeComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoArcGauge',\n providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.arcgauge'\n }\n ],\n selector: 'kendo-arcgauge',\n template: `\n
    \n
    \n \n
    \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ConfigurationService }, { type: ThemeService }, { type: ɵngcc1.IntlService }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { className: [{\n type: HostBinding,\n args: ['class.k-arcgauge']\n }], value: [{\n type: Input\n }], color: [{\n type: Input\n }], colors: [{\n type: Input\n }], opacity: [{\n type: Input\n }], scale: [{\n type: Input\n }], centerTemplate: [{\n type: ContentChild,\n args: [ArcCenterTemplateDirective, { static: false }]\n }], labelElement: [{\n type: ViewChild,\n args: [\"label\", { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ArcGaugeAreaComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-arcgauge-area',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ArcScaleComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-arcgauge-scale',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { labels: [{\n type: Input\n }], rangeDistance: [{\n type: Input\n }], rangeLineCap: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], endAngle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialLabelsComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-radialgauge-scale-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { position: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ArcLabelsComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-arcgauge-scale-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorComponent, [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-arcgauge-color',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, { color: [{\n type: Input\n }], opacity: [{\n type: Input\n }], from: [{\n type: Input\n }], to: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorsComponent, [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-arcgauge-colors',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, { children: [{\n type: ContentChildren,\n args: [ColorComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ArcGaugeModule, [{\n type: NgModule,\n args: [{\n declarations: [DIRECTIVES],\n exports: [DIRECTIVES],\n imports: [SharedModule, CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ArcGaugeModule, { declarations: function () { return [ArcGaugeComponent, ArcCenterTemplateDirective, ArcGaugeAreaComponent, ArcScaleComponent, ArcLabelsComponent, ColorsComponent, ColorComponent]; }, imports: function () { return [SharedModule, CommonModule]; }, exports: function () { return [ArcGaugeComponent, ArcCenterTemplateDirective, ArcGaugeAreaComponent, ArcScaleComponent, ArcLabelsComponent, ColorsComponent, ColorComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearGaugeComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoLinearGauge',\n providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.lineargauge'\n }\n ],\n selector: 'kendo-lineargauge',\n template: `\n
    \n \n `\n }]\n }], function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: ɵngcc1.IntlService }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { pointer: [{\n type: Input\n }], scale: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearGaugeAreaComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-lineargauge-area',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearScaleComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-lineargauge-scale',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { line: [{\n type: Input\n }], ranges: [{\n type: Input\n }], mirror: [{\n type: Input\n }], vertical: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearLabelsComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-lineargauge-scale-labels',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearPointerComponent, [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-lineargauge-pointer',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, { border: [{\n type: Input\n }], color: [{\n type: Input\n }], margin: [{\n type: Input\n }], opacity: [{\n type: Input\n }], shape: [{\n type: Input\n }], size: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearPointersComponent, [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-lineargauge-pointers',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, { children: [{\n type: ContentChildren,\n args: [LinearPointerComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearRangeComponent, [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-lineargauge-scale-range',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearRangesComponent, [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-lineargauge-scale-ranges',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, { children: [{\n type: ContentChildren,\n args: [LinearRangeComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearGaugeModule, [{\n type: NgModule,\n args: [{\n declarations: [DIRECTIVES$1],\n exports: [DIRECTIVES$1],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LinearGaugeModule, { declarations: [LinearGaugeComponent, LinearGaugeAreaComponent, LinearScaleComponent, LinearLabelsComponent, LinearPointersComponent, LinearPointerComponent, LinearRangeComponent, LinearRangesComponent], imports: [SharedModule], exports: [LinearGaugeComponent, LinearGaugeAreaComponent, LinearScaleComponent, LinearLabelsComponent, LinearPointersComponent, LinearPointerComponent, LinearRangeComponent, LinearRangesComponent] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialGaugeComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoRadialGauge',\n providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.radialgauge'\n }\n ],\n selector: 'kendo-radialgauge',\n template: `\n
    \n \n `\n }]\n }], function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: ɵngcc1.IntlService }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { pointer: [{\n type: Input\n }], scale: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialGaugeAreaComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-radialgauge-area',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialScaleComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-radialgauge-scale',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }]; }, { labels: [{\n type: Input\n }], rangeDistance: [{\n type: Input\n }], ranges: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], endAngle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialPointerComponent, [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-radialgauge-pointer',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, { cap: [{\n type: Input\n }], color: [{\n type: Input\n }], length: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialPointersComponent, [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-radialgauge-pointers',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, { children: [{\n type: ContentChildren,\n args: [RadialPointerComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialRangeComponent, [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-radialgauge-scale-range',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialRangesComponent, [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-radialgauge-scale-ranges',\n template: ''\n }]\n }], function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, { children: [{\n type: ContentChildren,\n args: [RadialRangeComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadialGaugeModule, [{\n type: NgModule,\n args: [{\n declarations: [DIRECTIVES$2],\n exports: [DIRECTIVES$2],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(RadialGaugeModule, { declarations: [RadialGaugeComponent, RadialGaugeAreaComponent, RadialScaleComponent, RadialLabelsComponent, RadialPointersComponent, RadialPointerComponent, RadialRangeComponent, RadialRangesComponent], imports: [SharedModule], exports: [RadialGaugeComponent, RadialGaugeAreaComponent, RadialScaleComponent, RadialLabelsComponent, RadialPointersComponent, RadialPointerComponent, RadialRangeComponent, RadialRangesComponent] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircularGaugeCenterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCircularGaugeCenterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircularGaugeComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoCircularGauge',\n providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.circulargauge'\n }\n ],\n selector: 'kendo-circulargauge',\n template: `\n
    \n
    \n \n
    \n \n `\n }]\n }], null, { scale: [{\n type: Input\n }], centerTemplate: [{\n type: ContentChild,\n args: [CircularGaugeCenterTemplateDirective, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircularGaugeAreaComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-circulargauge-area',\n template: ''\n }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircularGaugeScaleComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-circulargauge-scale',\n template: ''\n }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircularGaugeLabelsComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-circulargauge-scale-labels',\n template: ''\n }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircularGaugeModule, [{\n type: NgModule,\n args: [{\n declarations: [DIRECTIVES$3],\n exports: [DIRECTIVES$3],\n imports: [SharedModule, CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CircularGaugeModule, { declarations: function () { return [CircularGaugeComponent, CircularGaugeCenterTemplateDirective, CircularGaugeAreaComponent, CircularGaugeScaleComponent, CircularGaugeLabelsComponent]; }, imports: function () { return [SharedModule, CommonModule]; }, exports: function () { return [CircularGaugeComponent, CircularGaugeCenterTemplateDirective, CircularGaugeAreaComponent, CircularGaugeScaleComponent, CircularGaugeLabelsComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GaugesModule, [{\n type: NgModule,\n args: [{\n exports: [ArcGaugeModule, CircularGaugeModule, LinearGaugeModule, RadialGaugeModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(GaugesModule, { exports: [ArcGaugeModule, CircularGaugeModule, LinearGaugeModule, RadialGaugeModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CircularGaugeCenterTemplateDirective, CircularGaugeComponent, CircularGaugeModule, CircularGaugeAreaComponent, CircularGaugeLabelsComponent, CircularGaugeScaleComponent, SharedModule, ArcGaugeModule, LinearGaugeModule, RadialGaugeModule, GaugesModule, CollectionComponent, CollectionItemComponent, GaugeComponent, GaugeAreaComponent, LabelsComponent, RangeComponent, ScaleComponent, SettingsComponent, ConfigurationService, CollectionChangesService, ThemeService, ArcGaugeComponent, ArcGaugeAreaComponent, ArcScaleComponent, ArcLabelsComponent, ArcCenterTemplateDirective, ColorsComponent, ColorComponent, LinearGaugeComponent, LinearGaugeAreaComponent, LinearScaleComponent, LinearLabelsComponent, LinearPointersComponent, LinearPointerComponent, LinearRangeComponent, LinearRangesComponent, RadialGaugeComponent, RadialGaugeAreaComponent, RadialScaleComponent, RadialLabelsComponent, RadialPointersComponent, RadialPointerComponent, RadialRangeComponent, RadialRangesComponent };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata } from 'tslib';\nimport { Input, HostBinding, Directive, ElementRef, Renderer2, NgZone, forwardRef, Component, NgModule, EventEmitter, isDevMode, Output, ContentChild, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { isDocumentAvailable, guid, hasObservers, KendoInput } from '@progress/kendo-angular-common';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\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 */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@angular/common';\n\nfunction FloatingLabelComponent_label_2_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"(\", ctx_r1.textFor(\"optional\"), \")\");\n} }\nfunction FloatingLabelComponent_label_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"label\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, FloatingLabelComponent_label_2_span_2_Template, 2, 1, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.labelCssClass)(\"ngStyle\", ctx_r0.labelCssStyle)(\"for\", ctx_r0.id);\n ɵngcc0.ɵɵattribute(\"id\", ctx_r0.labelId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.text, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.optional);\n} }\nconst _c2 = [\"*\"];\nfunction LabelComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"(\", ctx_r0.textFor(\"optional\"), \")\");\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 */\nlet LabelDirective = class 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 = function LabelDirective_Factory(t) { return new (t || LabelDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nLabelDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LabelDirective, selectors: [[\"label\", \"for\", \"\"]], hostVars: 3, hostBindings: function LabelDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"for\", ctx.labelFor);\n ɵngcc0.ɵɵclassProp(\"k-label\", ctx.labelClass);\n } }, inputs: { for: \"for\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LabelDirective.prototype, \"for\", void 0);\n__decorate([\n HostBinding('attr.for'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], LabelDirective.prototype, \"labelFor\", null);\n__decorate([\n HostBinding('class.k-label'),\n __metadata(\"design:type\", Boolean)\n], LabelDirective.prototype, \"labelClass\", void 0);\nLabelDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, Renderer2, NgZone])\n], LabelDirective);\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { optional: \"optional\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"optional\", void 0);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoLabelLocalizedMessages\", \"\"], [\"\", \"kendoFloatingLabelLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\nvar CustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug label_globalization %}#toc-localization)).\n */\nlet CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nCustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(t) { return new (t || CustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CustomMessagesComponent, selectors: [[\"kendo-label-messages\"], [\"kendo-floatinglabel-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nCustomMessagesComponent = CustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CustomMessagesComponent);\n\nconst SHARED_DIRECTIVES = [\n LocalizedMessagesDirective,\n CustomMessagesComponent\n];\n/**\n * @hidden\n */\nlet SharedDirectivesModule = class SharedDirectivesModule {\n};\nSharedDirectivesModule.ɵfac = function SharedDirectivesModule_Factory(t) { return new (t || SharedDirectivesModule)(); };\nSharedDirectivesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedDirectivesModule });\nSharedDirectivesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\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: 1635940028,\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 */\nlet FloatingLabelComponent = class 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-state-empty');\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-state-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-state-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-state-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 = function FloatingLabelComponent_Factory(t) { return new (t || FloatingLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nFloatingLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FloatingLabelComponent, selectors: [[\"kendo-floatinglabel\"]], contentQueries: function FloatingLabelComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, KendoInput, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgControl, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.kendoInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.formControl = _t.first);\n } }, hostVars: 7, hostBindings: function FloatingLabelComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-floating-label-container\", ctx.hostClasses)(\"k-state-focused\", ctx.focusedClass)(\"k-state-invalid\", ctx.invalidClass);\n } }, inputs: { id: \"id\", labelCssStyle: \"labelCssStyle\", labelCssClass: \"labelCssClass\", text: \"text\", optional: \"optional\" }, outputs: { positionChange: \"positionChange\" }, exportAs: [\"kendoFloatingLabel\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatinglabel'\n }\n ])], ngContentSelectors: _c2, decls: 3, vars: 1, consts: function () { let i18n_0; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the optional segment of a FloatingLabel component\n * @meaning kendo.floatinglabel.optional\n */\n const MSG_EXTERNAL_356911862062553631$$DIST_FESM2015_INDEX_JS_1 = goog.getMsg(\"Optional\");\n i18n_0 = MSG_EXTERNAL_356911862062553631$$DIST_FESM2015_INDEX_JS_1;\n }\n else {\n i18n_0 = $localize `:kendo.floatinglabel.optional|The text for the optional segment of a FloatingLabel component␟d6b1dd6fb7530bd600b430042425d10b22163d1f␟356911862062553631:Optional`;\n } return [[\"kendoFloatingLabelLocalizedMessages\", \"\", \"optional\", i18n_0], [\"class\", \"k-label\", 3, \"ngClass\", \"ngStyle\", \"for\", 4, \"ngIf\"], [1, \"k-label\", 3, \"ngClass\", \"ngStyle\", \"for\"], [\"class\", \"k-label-optional\", 4, \"ngIf\"], [1, \"k-label-optional\"]]; }, template: function FloatingLabelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵtemplate(2, FloatingLabelComponent_label_2_Template, 3, 6, \"label\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.text);\n } }, directives: [LocalizedMessagesDirective, ɵngcc2.NgIf, ɵngcc2.NgClass, ɵngcc2.NgStyle], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-floating-label-container'),\n __metadata(\"design:type\", Boolean)\n], FloatingLabelComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FloatingLabelComponent.prototype, \"focusedClass\", null);\n__decorate([\n HostBinding('class.k-state-invalid'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FloatingLabelComponent.prototype, \"invalidClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], FloatingLabelComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FloatingLabelComponent.prototype, \"labelCssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FloatingLabelComponent.prototype, \"labelCssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FloatingLabelComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FloatingLabelComponent.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FloatingLabelComponent.prototype, \"optional\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FloatingLabelComponent.prototype, \"positionChange\", void 0);\n__decorate([\n ContentChild(KendoInput, { static: false }),\n __metadata(\"design:type\", Object)\n], FloatingLabelComponent.prototype, \"kendoInput\", void 0);\n__decorate([\n ContentChild(NgControl, { static: false }),\n __metadata(\"design:type\", NgControl)\n], FloatingLabelComponent.prototype, \"formControl\", void 0);\nFloatingLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ChangeDetectorRef,\n LocalizationService])\n], FloatingLabelComponent);\n\nconst COMPONENT_DIRECTIVES = [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 */\nlet FloatingLabelModule = class FloatingLabelModule {\n};\nFloatingLabelModule.ɵfac = function FloatingLabelModule_Factory(t) { return new (t || FloatingLabelModule)(); };\nFloatingLabelModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FloatingLabelModule });\nFloatingLabelModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, SharedDirectivesModule], SharedDirectivesModule] });\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 */\nlet LabelComponent = class 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 = function LabelComponent_Factory(t) { return new (t || LabelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LabelComponent, selectors: [[\"kendo-label\"]], contentQueries: function LabelComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, KendoInput, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.kendoInput = _t.first);\n } }, viewQuery: function LabelComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(LabelDirective, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelDirective = _t.first);\n } }, hostVars: 1, hostBindings: function LabelComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n } }, inputs: { text: \"text\", for: \"for\", optional: \"optional\" }, exportAs: [\"kendoLabel\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.label'\n }\n ])], ngContentSelectors: _c2, decls: 5, vars: 5, consts: function () { let i18n_3; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the optional segment of a Label component\n * @meaning kendo.label.optional\n */\n const MSG_EXTERNAL_3476218486854814180$$DIST_FESM2015_INDEX_JS_4 = goog.getMsg(\"Optional\");\n i18n_3 = MSG_EXTERNAL_3476218486854814180$$DIST_FESM2015_INDEX_JS_4;\n }\n else {\n i18n_3 = $localize `:kendo.label.optional|The text for the optional segment of a Label component␟a1cd4a8f359a22151d7e73f2887fbb2967cd389a␟3476218486854814180:Optional`;\n } return [[\"kendoLabelLocalizedMessages\", \"\", \"optional\", i18n_3], [3, \"for\"], [\"class\", \"k-label-optional\", 4, \"ngIf\"], [1, \"k-label-optional\"]]; }, template: function LabelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"label\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵtemplate(3, LabelComponent_span_3_Template, 2, 1, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵprojection(4);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-label-empty\", !ctx.text);\n ɵngcc0.ɵɵproperty(\"for\", ctx.control);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.text, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.optional);\n } }, directives: [LocalizedMessagesDirective, LabelDirective, ɵngcc2.NgIf], encapsulation: 2 });\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], LabelComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LabelComponent.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LabelComponent.prototype, \"for\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LabelComponent.prototype, \"optional\", void 0);\n__decorate([\n ViewChild(LabelDirective, { static: true }),\n __metadata(\"design:type\", LabelDirective)\n], LabelComponent.prototype, \"labelDirective\", void 0);\n__decorate([\n ContentChild(KendoInput, { static: true }),\n __metadata(\"design:type\", Object)\n], LabelComponent.prototype, \"kendoInput\", void 0);\nLabelComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n LocalizationService])\n], LabelComponent);\n\nconst COMPONENT_DIRECTIVES$1 = [\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 */\nlet LabelModule = class LabelModule {\n};\nLabelModule.ɵfac = function LabelModule_Factory(t) { return new (t || LabelModule)(); };\nLabelModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: LabelModule });\nLabelModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, SharedDirectivesModule], FloatingLabelModule, SharedDirectivesModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LabelDirective, [{\n type: Directive,\n args: [{\n selector: 'label[for]' //tslint:disable-line:directive-selector\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { labelClass: [{\n type: HostBinding,\n args: ['class.k-label']\n }], labelFor: [{\n type: HostBinding,\n args: ['attr.for']\n }], for: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: `\n [kendoLabelLocalizedMessages],\n [kendoFloatingLabelLocalizedMessages]\n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-label-messages, kendo-floatinglabel-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedDirectivesModule, [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedDirectivesModule, { declarations: [LocalizedMessagesDirective, CustomMessagesComponent], exports: [LocalizedMessagesDirective, CustomMessagesComponent] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FloatingLabelComponent, [{\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 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-floating-label-container']\n }], positionChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], invalidClass: [{\n type: HostBinding,\n args: ['class.k-state-invalid']\n }], id: [{\n type: Input\n }], labelCssStyle: [{\n type: Input\n }], labelCssClass: [{\n type: Input\n }], text: [{\n type: Input\n }], optional: [{\n type: Input\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: false }]\n }], formControl: [{\n type: ContentChild,\n args: [NgControl, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FloatingLabelModule, [{\n type: NgModule,\n args: [{\n declarations: [...COMPONENT_DIRECTIVES],\n exports: [...COMPONENT_DIRECTIVES, SharedDirectivesModule],\n imports: [CommonModule, SharedDirectivesModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FloatingLabelModule, { declarations: function () { return [FloatingLabelComponent]; }, imports: function () { return [CommonModule, SharedDirectivesModule]; }, exports: function () { return [FloatingLabelComponent, SharedDirectivesModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LabelComponent, [{\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 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LabelModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedDirectivesModule],\n declarations: [...COMPONENT_DIRECTIVES$1],\n exports: [...COMPONENT_DIRECTIVES$1, FloatingLabelModule, SharedDirectivesModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LabelModule, { declarations: function () { return [LabelDirective, LabelComponent]; }, imports: function () { return [CommonModule, SharedDirectivesModule]; }, exports: function () { return [LabelDirective, LabelComponent, FloatingLabelModule, SharedDirectivesModule]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LocalizedMessagesDirective, Messages, SharedDirectivesModule, LabelDirective, LabelModule, FloatingLabelModule, FloatingLabelComponent, LabelComponent, CustomMessagesComponent };\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 { __decorate, __metadata, __param } from 'tslib';\nimport { InjectionToken, HostBinding, Input, Component, EventEmitter, Injectable, Optional, Inject, Directive, SkipSelf, ElementRef, Renderer2, NgZone, ChangeDetectorRef, TemplateRef, QueryList, ContentChildren, ContentChild, forwardRef, Host, Output, isDevMode, SecurityContext, ViewChild, ViewChildren, ViewEncapsulation, Self, ViewContainerRef, Pipe, NgModule, ComponentFactoryResolver, HostListener, ChangeDetectionStrategy } from '@angular/core';\nimport { isDocumentAvailable, Keys, DraggableDirective, isChanged, anyChanged, hasObservers, ResizeSensorComponent, KendoInput, DraggableModule, EventsModule, ResizeSensorModule, guid } from '@progress/kendo-angular-common';\nimport { merge, of, Subject, Subscription, from, interval, fromEvent, zip, BehaviorSubject, Observable } from 'rxjs';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { switchMap, take, filter, takeUntil, map, switchMapTo, delay, auditTime, distinctUntilChanged, tap, throttleTime, debounceTime, bufferCount } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { orderBy, process, isCompositeFilterDescriptor, filterBy } from '@progress/kendo-data-query';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { getter } from '@progress/kendo-common';\nimport { DropDownListComponent, DropDownListModule, AutoCompleteModule, DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { InputsModule, NumericTextBoxComponent, NumericTextBoxModule } from '@progress/kendo-angular-inputs';\nimport { DatePickerModule } from '@progress/kendo-angular-dateinputs';\nimport { IntlService } from '@progress/kendo-angular-intl';\nimport { LabelModule } from '@progress/kendo-angular-label';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\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, ExcelExportModule } from '@progress/kendo-angular-excel-export';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@progress/kendo-angular-common';\nimport * as ɵngcc3 from '@progress/kendo-angular-popup';\nimport * as ɵngcc4 from '@angular/platform-browser';\nimport * as ɵngcc5 from '@angular/common';\nimport * as ɵngcc6 from '@progress/kendo-angular-inputs';\nimport * as ɵngcc7 from '@angular/forms';\nimport * as ɵngcc8 from '@progress/kendo-angular-dropdowns';\nimport * as ɵngcc9 from '@progress/kendo-angular-dateinputs';\nimport * as ɵngcc10 from '@progress/kendo-angular-intl';\nimport * as ɵngcc11 from '@progress/kendo-angular-label';\n\nconst _c0 = [\"lockedHeader\"];\nconst _c1 = [\"header\"];\nconst _c2 = [\"ariaRoot\"];\nconst _c3 = [\"footer\"];\nfunction GridComponent_kendo_grid_toolbar_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-toolbar\", 10);\n} }\nfunction GridComponent_kendo_pager_3_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-pager\", 11);\n ɵngcc0.ɵɵlistener(\"pageChange\", function GridComponent_kendo_pager_3_Template_kendo_pager_pageChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.notifyPageChange(\"pager\", $event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx_r1.navigable ? \"0\" : \"-1\")(\"template\", ctx_r1.pagerTemplate)(\"pageSize\", ctx_r1.pageSize)(\"total\", ctx_r1.view.total)(\"skip\", ctx_r1.skip)(\"options\", ctx_r1.pageable);\n ɵngcc0.ɵɵattribute(\"role\", ctx_r1.navigable ? \"navigation\" : undefined);\n} }\nfunction GridComponent_kendo_grid_group_panel_4_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-group-panel\", 12);\n ɵngcc0.ɵɵlistener(\"change\", function GridComponent_kendo_grid_group_panel_4_Template_kendo_grid_group_panel_change_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.groupChange.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"text\", ctx_r2.groupableEmptyText)(\"groups\", ctx_r2.group);\n} }\nfunction GridComponent_ng_template_7_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 24, 25);\n ɵngcc0.ɵɵelementStart(2, \"table\", 26);\n ɵngcc0.ɵɵelement(3, \"colgroup\", 21);\n ɵngcc0.ɵɵelement(4, \"thead\", 27);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r14.lockedWidth, \"px\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r14.lockedWidth, \"px\");\n ɵngcc0.ɵɵproperty(\"locked\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columns\", ctx_r14.lockedLeafColumns)(\"groups\", ctx_r14.group)(\"detailTemplate\", ctx_r14.detailTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"resizable\", ctx_r14.resizable)(\"scrollable\", true)(\"columns\", ctx_r14.lockedColumns)(\"totalColumnLevels\", ctx_r14.totalColumnLevels)(\"sort\", ctx_r14.sort)(\"groups\", ctx_r14.group)(\"filter\", ctx_r14.filter)(\"filterable\", ctx_r14.filterable)(\"groupable\", ctx_r14.showGroupPanel)(\"reorderable\", ctx_r14.reorderable)(\"sortable\", ctx_r14.sortable)(\"columnMenu\", ctx_r14.columnMenuOptions)(\"columnMenuTemplate\", ctx_r14.columnMenuTemplate)(\"totalColumnsCount\", ctx_r14.leafColumns.length)(\"detailTemplate\", ctx_r14.detailTemplate)(\"tabIndex\", ctx_r14.navigable ? \"-1\" : \"0\");\n} }\nfunction GridComponent_ng_template_7_div_0_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 28);\n ɵngcc0.ɵɵelement(1, \"div\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r16.columnsContainer.unlockedWidth, \"px\");\n} }\nconst _c138 = function () { return []; };\nfunction GridComponent_ng_template_7_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 16);\n ɵngcc0.ɵɵtemplate(1, GridComponent_ng_template_7_div_0_div_1_Template, 5, 24, \"div\", 17);\n ɵngcc0.ɵɵelementStart(2, \"div\", 18, 19);\n ɵngcc0.ɵɵelementStart(4, \"table\", 20);\n ɵngcc0.ɵɵelement(5, \"colgroup\", 21);\n ɵngcc0.ɵɵelement(6, \"thead\", 22);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, GridComponent_ng_template_7_div_0_div_7_Template, 2, 2, \"div\", 23);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"padding\", ctx_r12.headerPadding);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.isLocked);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoGridResizableContainer\", ctx_r12.lockedLeafColumns.length)(\"lockedWidth\", ctx_r12.lockedWidth + ctx_r12.scrollbarWidth + 2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r12.nonLockedWidth, \"px\");\n ɵngcc0.ɵɵproperty(\"virtualColumns\", ctx_r12.virtualColumns);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columns\", ctx_r12.headerLeafColumns)(\"groups\", ctx_r12.isLocked ? ɵngcc0.ɵɵpureFunction0(29, _c138) : ctx_r12.group)(\"detailTemplate\", ctx_r12.detailTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"resizable\", ctx_r12.resizable)(\"scrollable\", true)(\"columns\", ctx_r12.headerColumns)(\"totalColumnLevels\", ctx_r12.totalColumnLevels)(\"sort\", ctx_r12.sort)(\"filter\", ctx_r12.filter)(\"filterable\", ctx_r12.filterable)(\"groupable\", ctx_r12.showGroupPanel)(\"reorderable\", ctx_r12.reorderable)(\"groups\", ctx_r12.isLocked ? ɵngcc0.ɵɵpureFunction0(30, _c138) : ctx_r12.group)(\"sortable\", ctx_r12.sortable)(\"columnMenu\", ctx_r12.columnMenuOptions)(\"columnMenuTemplate\", ctx_r12.columnMenuTemplate)(\"lockedColumnsCount\", ctx_r12.lockedLeafColumns.length)(\"totalColumnsCount\", ctx_r12.leafColumns.length)(\"detailTemplate\", ctx_r12.detailTemplate)(\"tabIndex\", ctx_r12.navigable ? \"-1\" : \"0\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.virtualColumns);\n} }\nfunction GridComponent_ng_template_7_div_2_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 36);\n ɵngcc0.ɵɵelementStart(1, \"table\", 26);\n ɵngcc0.ɵɵelement(2, \"colgroup\", 34);\n ɵngcc0.ɵɵelement(3, \"tfoot\", 37);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r18.lockedWidth, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r18.lockedWidth, \"px\");\n ɵngcc0.ɵɵproperty(\"locked\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columns\", ctx_r18.lockedLeafColumns)(\"groups\", ctx_r18.group)(\"detailTemplate\", ctx_r18.detailTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"scrollable\", true)(\"groups\", ctx_r18.group)(\"columns\", ctx_r18.lockedLeafColumns)(\"detailTemplate\", ctx_r18.detailTemplate)(\"logicalRowIndex\", ctx_r18.ariaRowCount);\n} }\nfunction GridComponent_ng_template_7_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 29);\n ɵngcc0.ɵɵtemplate(1, GridComponent_ng_template_7_div_2_div_1_Template, 4, 13, \"div\", 30);\n ɵngcc0.ɵɵelementStart(2, \"div\", 31, 32);\n ɵngcc0.ɵɵelementStart(4, \"table\", 33);\n ɵngcc0.ɵɵelement(5, \"colgroup\", 34);\n ɵngcc0.ɵɵelement(6, \"tfoot\", 35);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"padding\", ctx_r13.headerPadding);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.lockedLeafColumns.length);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoGridResizableContainer\", ctx_r13.lockedLeafColumns.length)(\"lockedWidth\", ctx_r13.lockedWidth + ctx_r13.scrollbarWidth + 3);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r13.nonLockedWidth, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columns\", ctx_r13.nonLockedLeafColumns)(\"groups\", ctx_r13.isLocked ? ɵngcc0.ɵɵpureFunction0(16, _c138) : ctx_r13.group)(\"detailTemplate\", ctx_r13.detailTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r13.ariaRowCount)(\"scrollable\", true)(\"groups\", ctx_r13.isLocked ? ɵngcc0.ɵɵpureFunction0(17, _c138) : ctx_r13.group)(\"columns\", ctx_r13.nonLockedLeafColumns)(\"lockedColumnsCount\", ctx_r13.lockedLeafColumns.length)(\"detailTemplate\", ctx_r13.detailTemplate);\n} }\nfunction GridComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵtemplate(0, GridComponent_ng_template_7_div_0_Template, 8, 31, \"div\", 13);\n ɵngcc0.ɵɵelementStart(1, \"kendo-grid-list\", 14);\n ɵngcc0.ɵɵlistener(\"pageChange\", function GridComponent_ng_template_7_Template_kendo_grid_list_pageChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.notifyPageChange(\"list\", $event); })(\"scrollBottom\", function GridComponent_ng_template_7_Template_kendo_grid_list_scrollBottom_1_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.notifyScrollBottom(); })(\"contentScroll\", function GridComponent_ng_template_7_Template_kendo_grid_list_contentScroll_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r23 = ɵngcc0.ɵɵnextContext(); return ctx_r23.contentScroll.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, GridComponent_ng_template_7_div_2_Template, 7, 18, \"div\", 15);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r4.hideHeader);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"data\", ctx_r4.view)(\"rowHeight\", ctx_r4.rowHeight)(\"detailRowHeight\", ctx_r4.detailRowHeight)(\"total\", ctx_r4.totalCount)(\"take\", ctx_r4.pageSize)(\"groups\", ctx_r4.group)(\"groupable\", ctx_r4.groupable)(\"skip\", ctx_r4.skip)(\"trackBy\", ctx_r4.trackBy)(\"columns\", ctx_r4.columnsContainer)(\"selectable\", ctx_r4.selectable)(\"filterable\", ctx_r4.filterable)(\"detailTemplate\", ctx_r4.detailTemplate)(\"noRecordsTemplate\", ctx_r4.noRecordsTemplate)(\"rowClass\", ctx_r4.rowClass)(\"rowSticky\", ctx_r4.rowSticky)(\"loading\", ctx_r4.loading)(\"isVirtual\", ctx_r4.isVirtual)(\"loadingTemplate\", ctx_r4.loadingTemplate == null ? null : ctx_r4.loadingTemplate.templateRef)(\"virtualColumns\", ctx_r4.virtualColumns)(\"enableDrag\", ctx_r4.marqueeSelection);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.showFooter);\n} }\nfunction GridComponent_ng_template_8_thead_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"thead\", 42);\n} if (rf & 2) {\n const ctx_r24 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"resizable\", ctx_r24.resizable)(\"scrollable\", false)(\"columns\", ctx_r24.visibleColumns)(\"totalColumnLevels\", ctx_r24.totalColumnLevels)(\"groups\", ctx_r24.group)(\"groupable\", ctx_r24.showGroupPanel)(\"reorderable\", ctx_r24.reorderable)(\"sort\", ctx_r24.sort)(\"sortable\", ctx_r24.sortable)(\"filter\", ctx_r24.filter)(\"filterable\", ctx_r24.filterable)(\"columnMenu\", ctx_r24.columnMenuOptions)(\"columnMenuTemplate\", ctx_r24.columnMenuTemplate)(\"detailTemplate\", ctx_r24.detailTemplate)(\"tabIndex\", ctx_r24.navigable ? \"-1\" : \"0\");\n} }\nfunction GridComponent_ng_template_8_tfoot_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"tfoot\", 43);\n} if (rf & 2) {\n const ctx_r25 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"scrollable\", false)(\"logicalRowIndex\", ctx_r25.ariaRowCount)(\"groups\", ctx_r25.group)(\"columns\", ctx_r25.leafColumns)(\"detailTemplate\", ctx_r25.detailTemplate);\n} }\nfunction GridComponent_ng_template_8_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 44);\n} }\nfunction GridComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\");\n ɵngcc0.ɵɵelement(1, \"colgroup\", 34);\n ɵngcc0.ɵɵtemplate(2, GridComponent_ng_template_8_thead_2_Template, 1, 15, \"thead\", 38);\n ɵngcc0.ɵɵelement(3, \"tbody\", 39);\n ɵngcc0.ɵɵtemplate(4, GridComponent_ng_template_8_tfoot_4_Template, 1, 5, \"tfoot\", 40);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, GridComponent_ng_template_8_div_5_Template, 1, 0, \"div\", 41);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"table-layout\", ctx_r5.resizable ? \"fixed\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columns\", ctx_r5.leafColumns)(\"groups\", ctx_r5.group)(\"detailTemplate\", ctx_r5.detailTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r5.hideHeader);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"isLoading\", ctx_r5.loading)(\"groups\", ctx_r5.group)(\"data\", ctx_r5.view)(\"skip\", ctx_r5.skip)(\"columns\", ctx_r5.leafColumns)(\"selectable\", ctx_r5.selectable)(\"filterable\", ctx_r5.filterable)(\"noRecordsTemplate\", ctx_r5.noRecordsTemplate)(\"detailTemplate\", ctx_r5.detailTemplate)(\"showGroupFooters\", ctx_r5.showGroupFooters)(\"trackBy\", ctx_r5.trackBy)(\"rowClass\", ctx_r5.rowClass)(\"enableDrag\", ctx_r5.marqueeSelection);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showFooter);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.loading);\n} }\nfunction GridComponent_kendo_pager_9_Template(rf, ctx) { if (rf & 1) {\n const _r28 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-pager\", 45);\n ɵngcc0.ɵɵlistener(\"pageChange\", function GridComponent_kendo_pager_9_Template_kendo_pager_pageChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r27 = ɵngcc0.ɵɵnextContext(); return ctx_r27.notifyPageChange(\"pager\", $event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx_r6.navigable ? \"0\" : \"-1\")(\"template\", ctx_r6.pagerTemplate)(\"pageSize\", ctx_r6.pageSize)(\"total\", ctx_r6.view.total)(\"skip\", ctx_r6.skip)(\"options\", ctx_r6.pageable);\n ɵngcc0.ɵɵattribute(\"role\", ctx_r6.navigable ? \"navigation\" : undefined);\n} }\nfunction GridComponent_kendo_grid_toolbar_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-toolbar\", 46);\n} }\nconst _c139 = [\"container\"];\nconst _c140 = [\"lockedContainer\"];\nconst _c141 = [\"lockedTable\"];\nconst _c142 = [\"table\"];\nconst _c143 = function (a0, a1, a2, a3) { return { keydown: a0, scroll: a1, mousewheel: a2, DOMMouseScroll: a3 }; };\nfunction ListComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12, 13);\n ɵngcc0.ɵɵelementStart(2, \"div\", 3);\n ɵngcc0.ɵɵelementStart(3, \"table\", 14, 15);\n ɵngcc0.ɵɵelement(5, \"colgroup\", 6);\n ɵngcc0.ɵɵelement(6, \"tbody\", 16);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(7, \"kendo-resize-sensor\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"div\", 9);\n ɵngcc0.ɵɵelement(9, \"div\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r0.lockedWidth, \"px\");\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction4(28, _c143, ctx_r0.lockedKeydown, ctx_r0.lockedScroll, ctx_r0.lockedMousewheel, ctx_r0.lockedMousewheel))(\"scope\", ctx_r0);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r0.lockedWidth, \"px\");\n ɵngcc0.ɵɵproperty(\"locked\", true);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"groups\", ctx_r0.groups)(\"columns\", ctx_r0.lockedLeafColumns)(\"detailTemplate\", ctx_r0.detailTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"groups\", ctx_r0.groups)(\"isLocked\", true)(\"data\", ctx_r0.data)(\"noRecordsText\", \"\")(\"columns\", ctx_r0.lockedLeafColumns)(\"totalColumnsCount\", ctx_r0.leafColumns.length)(\"detailTemplate\", ctx_r0.detailTemplate)(\"showGroupFooters\", ctx_r0.showFooter)(\"skip\", ctx_r0.skip)(\"selectable\", ctx_r0.selectable)(\"trackBy\", ctx_r0.trackBy)(\"filterable\", ctx_r0.filterable)(\"rowClass\", ctx_r0.rowClass)(\"isLoading\", ctx_r0.loading)(\"isVirtual\", ctx_r0.isVirtual)(\"loadingTemplate\", ctx_r0.loadingTemplate);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r0.totalHeight, \"px\");\n} }\nfunction ListComponent_kendo_resize_sensor_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-resize-sensor\");\n} }\nfunction ListComponent_kendo_resize_sensor_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-resize-sensor\");\n} }\nfunction ListComponent_div_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 17);\n ɵngcc0.ɵɵelement(1, \"div\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r5.totalWidth, \"px\");\n} }\nfunction ListComponent_div_13_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 18);\n} }\nconst _c144 = [\"kendoGridFilterRow\", \"\"];\nfunction FilterRowComponent_td_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 3);\n} if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-group-cell\", true);\n} }\nfunction FilterRowComponent_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 3);\n} if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-hierarchy-cell\", true);\n} }\nfunction FilterRowComponent_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 4);\n} if (rf & 2) {\n const column_r4 = ctx.$implicit;\n const columnIndex_r5 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-grid-header-sticky\", column_r4.sticky);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx_r2.addStickyStyles(column_r4))(\"ngClass\", column_r4.filterClass)(\"column\", column_r4)(\"filter\", ctx_r2.filter)(\"logicalRowIndex\", ctx_r2.logicalRowIndex)(\"logicalColIndex\", ctx_r2.lockedColumnsCount + columnIndex_r5);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.filterLabel(column_r4));\n} }\nconst _c145 = [\"kendoGridFilterCell\", \"\"];\nfunction FilterCellComponent_ng_template_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementContainer(1, 3);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"column\", ctx_r1.column)(\"filter\", ctx_r1.filter);\n} }\nfunction FilterCellComponent_ng_template_0_ng_container_2_1_ng_template_0_Template(rf, ctx) { }\nfunction FilterCellComponent_ng_template_0_ng_container_2_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FilterCellComponent_ng_template_0_ng_container_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.column.filterCellTemplateRef)(\"ngTemplateOutletContext\", ctx_r3.templateContext);\n} }\nfunction FilterCellComponent_ng_template_0_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, FilterCellComponent_ng_template_0_ng_container_2_1_Template, 1, 2, null, 4);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.column.filterCellTemplateRef);\n} }\nfunction FilterCellComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 1);\n ɵngcc0.ɵɵtemplate(1, FilterCellComponent_ng_template_0_ng_container_1_Template, 2, 2, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(2, FilterCellComponent_ng_template_0_ng_container_2_Template, 2, 1, \"ng-container\", 2);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx_r0.hasTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n} }\nconst _c146 = [\"*\"];\nconst _c147 = [\"dropdown\"];\nconst _c148 = function () { return { width: \"auto\" }; };\nfunction FilterCellOperatorsComponent_kendo_dropdownlist_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 3, 4);\n ɵngcc0.ɵɵlistener(\"valueChange\", function FilterCellOperatorsComponent_kendo_dropdownlist_0_Template_kendo_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onChange($event); })(\"keydown\", function FilterCellOperatorsComponent_kendo_dropdownlist_0_Template_kendo_dropdownlist_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.dropdownKeydown($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"data\", ctx_r0.operators)(\"value\", ctx_r0.value)(\"valuePrimitive\", true)(\"popupSettings\", ɵngcc0.ɵɵpureFunction0(4, _c148));\n} }\nconst _c149 = function (a0) { return { \"k-clear-button-visible\": a0 }; };\nconst _c150 = [\"kendoGridColGroup\", \"\"];\nfunction ColGroupComponent_ng_template_0_col_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"col\");\n} if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-group-col\", true);\n} }\nfunction ColGroupComponent_ng_template_0_col_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"col\");\n} if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-hierarchy-col\", true);\n} }\nfunction ColGroupComponent_ng_template_0_col_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"col\");\n} if (rf & 2) {\n const column_r5 = ctx.$implicit;\n ɵngcc0.ɵɵstyleProp(\"width\", column_r5.width, \"px\");\n} }\nfunction ColGroupComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ColGroupComponent_ng_template_0_col_0_Template, 1, 2, \"col\", 1);\n ɵngcc0.ɵɵtemplate(1, ColGroupComponent_ng_template_0_col_1_Template, 1, 2, \"col\", 2);\n ɵngcc0.ɵɵtemplate(2, ColGroupComponent_ng_template_0_col_2_Template, 1, 2, \"col\", 3);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.groups);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.detailTemplate == null ? null : ctx_r0.detailTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.columnsToRender)(\"ngForTrackBy\", ctx_r0.trackBy);\n} }\nconst _c151 = [\"kendoGridLoading\", \"\"];\nfunction PagerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵlistener(\"focusin\", function PagerComponent_div_0_Template_div_focusin_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.onInnerFocusIn($event, \"start\"); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx_r0.focusTrapTabIndex);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n} }\nfunction PagerComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 5);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template.templateRef)(\"ngTemplateOutletContext\", ctx_r1.templateContext);\n} }\nfunction PagerComponent_ng_container_2_kendo_pager_prev_buttons_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-pager-prev-buttons\");\n} }\nfunction PagerComponent_ng_container_2_kendo_pager_numeric_buttons_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-pager-numeric-buttons\", 8);\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"buttonCount\", ctx_r8.settings.buttonCount);\n} }\nfunction PagerComponent_ng_container_2_kendo_pager_input_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-pager-input\");\n} }\nfunction PagerComponent_ng_container_2_kendo_pager_next_buttons_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-pager-next-buttons\");\n} }\nfunction PagerComponent_ng_container_2_kendo_pager_info_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-pager-info\");\n} }\nfunction PagerComponent_ng_container_2_kendo_pager_page_sizes_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-pager-page-sizes\", 9, 10);\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"pageSizes\", ctx_r12.settings.pageSizes);\n} }\nfunction PagerComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, PagerComponent_ng_container_2_kendo_pager_prev_buttons_1_Template, 1, 0, \"kendo-pager-prev-buttons\", 2);\n ɵngcc0.ɵɵtemplate(2, PagerComponent_ng_container_2_kendo_pager_numeric_buttons_2_Template, 1, 1, \"kendo-pager-numeric-buttons\", 6);\n ɵngcc0.ɵɵtemplate(3, PagerComponent_ng_container_2_kendo_pager_input_3_Template, 1, 0, \"kendo-pager-input\", 2);\n ɵngcc0.ɵɵtemplate(4, PagerComponent_ng_container_2_kendo_pager_next_buttons_4_Template, 1, 0, \"kendo-pager-next-buttons\", 2);\n ɵngcc0.ɵɵtemplate(5, PagerComponent_ng_container_2_kendo_pager_info_5_Template, 1, 0, \"kendo-pager-info\", 2);\n ɵngcc0.ɵɵtemplate(6, PagerComponent_ng_container_2_kendo_pager_page_sizes_6_Template, 2, 1, \"kendo-pager-page-sizes\", 7);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.settings.previousNext);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.settings.type === \"numeric\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.settings.type === \"input\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.settings.previousNext);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.settings.info);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.settings.pageSizes);\n} }\nfunction PagerComponent_div_3_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵlistener(\"focusin\", function PagerComponent_div_3_Template_div_focusin_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.onInnerFocusIn($event, \"end\"); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx_r3.focusTrapTabIndex);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n} }\nfunction PagerComponent_kendo_resize_sensor_4_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 11);\n ɵngcc0.ɵɵlistener(\"resize\", function PagerComponent_kendo_resize_sensor_4_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.resizeHandler(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c152 = function (a2) { return { \"k-link\": true, \"k-pager-nav\": true, \"k-state-disabled\": a2, \"k-pager-first\": true }; };\nconst _c153 = function () { return { \"k-icon\": true, \"k-i-seek-w\": true }; };\nconst _c154 = function (a2) { return { \"k-link\": true, \"k-pager-nav\": true, \"k-state-disabled\": a2, \"\": true }; };\nconst _c155 = function () { return { \"k-icon\": true, \"k-i-arrow-w\": true }; };\nconst _c156 = function () { return { \"k-icon\": true, \"k-i-arrow-e\": true }; };\nconst _c157 = function (a2) { return { \"k-link\": true, \"k-pager-nav\": true, \"k-state-disabled\": a2, \"k-pager-last\": true }; };\nconst _c158 = function () { return { \"k-icon\": true, \"k-i-seek-e\": true }; };\nfunction PagerNumericButtonsComponent_option_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 7);\n ɵngcc0.ɵɵtext(1, \"... \");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r0.pageLabel(ctx_r0.start - 1));\n} }\nconst _c159 = function (a1) { return { \"k-link\": true, \"k-state-selected\": a1 }; };\nfunction PagerNumericButtonsComponent_option_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const num_r6 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", num_r6.toString())(\"ngClass\", ɵngcc0.ɵɵpureFunction1(5, _c159, ctx_r1.currentPage == num_r6));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.pageLabel(num_r6))(\"aria-current\", ctx_r1.currentPage == num_r6 ? \"page\" : undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", num_r6, \" \");\n} }\nfunction PagerNumericButtonsComponent_option_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 9);\n ɵngcc0.ɵɵtext(1, \"... \");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.pageLabel(ctx_r2.end + 1));\n} }\nfunction PagerNumericButtonsComponent_li_5_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\");\n ɵngcc0.ɵɵelementStart(1, \"span\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function PagerNumericButtonsComponent_li_5_Template_span_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.changePage(ctx_r7.start - 2); })(\"keydown.enter\", function PagerNumericButtonsComponent_li_5_Template_span_keydown_enter_1_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.changePage(ctx_r9.start - 2); });\n ɵngcc0.ɵɵtext(2, \"...\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r3.pageLabel(ctx_r3.start - 1));\n} }\nconst _c160 = function (a1) { return { \"k-link\": true, \"k-state-selected\": a1, \"k-pager-nav\": true }; };\nfunction PagerNumericButtonsComponent_li_6_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\");\n ɵngcc0.ɵɵelementStart(1, \"span\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function PagerNumericButtonsComponent_li_6_Template_span_click_1_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const num_r10 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.changePage(num_r10 - 1); })(\"keydown.enter\", function PagerNumericButtonsComponent_li_6_Template_span_keydown_enter_1_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const num_r10 = restoredCtx.$implicit; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.changePage(num_r10 - 1); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const num_r10 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(3, _c160, ctx_r4.currentPage == num_r10));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r4.pageLabel(num_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", num_r10, \" \");\n} }\nfunction PagerNumericButtonsComponent_li_7_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\");\n ɵngcc0.ɵɵelementStart(1, \"span\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function PagerNumericButtonsComponent_li_7_Template_span_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.changePage(ctx_r14.end); })(\"keydown.enter\", function PagerNumericButtonsComponent_li_7_Template_span_keydown_enter_1_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.changePage(ctx_r16.end); });\n ɵngcc0.ɵɵtext(2, \"...\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r5.pageLabel(ctx_r5.end + 1));\n} }\nconst _c161 = function () { return { \"k-pager-numbers\": true, \"k-reset\": true }; };\nconst _c162 = function () { return { \"k-pager-input\": true, \"k-label\": true }; };\nconst _c163 = function (a0, a1) { return { keydown: a0, focusout: a1 }; };\nconst _c164 = [\"kendoGridGroupHeader\", \"\"];\nfunction GroupHeaderComponent_ng_template_0_td_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 4);\n} }\nfunction GroupHeaderComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, GroupHeaderComponent_ng_template_0_td_0_Template, 1, 0, \"td\", 3);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.prefixGroupCell(ctx_r0.item));\n} }\nfunction GroupHeaderComponent_td_1_ng_template_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵpipe(1, \"valueOf\");\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵtextInterpolate2(\" \", ctx_r6.groupTitle(ctx_r6.item), \": \", ɵngcc0.ɵɵpipeBind3(1, 2, ctx_r6.item.data, \"value\", ctx_r6.formatForGroup(ctx_r6.item)), \" \");\n} }\nfunction GroupHeaderComponent_td_1_ng_template_2_ng_template_2_Template(rf, ctx) { }\nconst _c165 = function (a0, a1) { return { \"k-i-collapse\": a0, \"k-i-expand\": a1 }; };\nconst _c166 = function (a0, a1, a2, a3, a4, a5, a6, a7) { return { templateRef: a0, group: a1, aggregates: a2, value: a3, field: a4, index: a5, expanded: a6, $implicit: a7 }; };\nfunction GroupHeaderComponent_td_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function GroupHeaderComponent_td_1_ng_template_2_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.toggleGroup(ctx_r8.item); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(1, GroupHeaderComponent_td_1_ng_template_2_ng_template_1_Template, 2, 6, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(2, GroupHeaderComponent_td_1_ng_template_2_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(3, _c165, ctx_r5.isExpanded, !ctx_r5.isExpanded));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r5.groupHeaderTemplate(ctx_r5.item));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction8(6, _c166, ctx_r5.groupHeaderTemplate(ctx_r5.item), ctx_r5.item.data, ctx_r5.item.data == null ? null : ctx_r5.item.data.aggregates, ctx_r5.item.data == null ? null : ctx_r5.item.data.value, ctx_r5.item.data == null ? null : ctx_r5.item.data.field, ctx_r5.item.index, ctx_r5.isExpanded, ctx_r5.item.data));\n} }\nfunction GroupHeaderComponent_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 5);\n ɵngcc0.ɵɵelementStart(1, \"p\", 6);\n ɵngcc0.ɵɵtemplate(2, GroupHeaderComponent_td_1_ng_template_2_Template, 3, 15, \"ng-template\", 0);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r1.logicalRowIndex)(\"logicalColIndex\", 0)(\"logicalSlaveCell\", ctx_r1.skipGroupDecoration)(\"groupItem\", ctx_r1.item)(\"colSpan\", ctx_r1.logicalColSpan());\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r1.groupSpan(ctx_r1.item))(\"role\", ctx_r1.ariaRole())(\"aria-expanded\", ctx_r1.isExpanded);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.skipGroupDecoration);\n} }\nconst _c167 = function (a0, a1, a2, a3, a4, a5) { return { group: a0, aggregates: a1, value: a2, field: a3, index: a4, $implicit: a5 }; };\nfunction GroupHeaderComponent_ng_container_2_td_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 12);\n} if (rf & 2) {\n const column_r11 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", column_r11.groupHeaderColumnTemplateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction6(2, _c167, ctx_r13.item.data, ctx_r13.item.data == null ? null : ctx_r13.item.data.aggregates, ctx_r13.item.data == null ? null : ctx_r13.item.data.value, ctx_r13.item.data == null ? null : ctx_r13.item.data.field, ctx_r13.item.index, ctx_r13.item.data));\n} }\nfunction GroupHeaderComponent_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 10);\n ɵngcc0.ɵɵtemplate(1, GroupHeaderComponent_ng_container_2_td_1_ng_container_1_Template, 1, 9, \"ng-container\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r11 = ctx.$implicit;\n const index_r12 = ctx.index;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r10.logicalRowIndex)(\"logicalColIndex\", index_r12 + 1)(\"logicalSlaveCell\", false)(\"groupItem\", ctx_r10.item)(\"colSpan\", 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", column_r11.groupHeaderColumnTemplateRef);\n} }\nfunction GroupHeaderComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, GroupHeaderComponent_ng_container_2_td_1_Template, 2, 6, \"td\", 9);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r2.groupHeaderColumns);\n} }\nconst _c168 = function () { return { lastTarget: true }; };\nfunction GroupPanelComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"context\", ɵngcc0.ɵɵpureFunction0(2, _c168));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.text, \" \");\n} }\nconst _c169 = function (a0) { return { field: a0 }; };\nconst _c170 = function (a0, a2) { return { field: a0, type: \"groupIndicator\", hint: a2 }; };\nfunction GroupPanelComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵelementStart(1, \"div\", 4);\n ɵngcc0.ɵɵlistener(\"directionChange\", function GroupPanelComponent_div_1_Template_div_directionChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.directionChange($event); })(\"remove\", function GroupPanelComponent_div_1_Template_div_remove_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.remove($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const group_r3 = ctx.$implicit;\n const index_r4 = ctx.index;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"context\", ɵngcc0.ɵɵpureFunction1(5, _c169, group_r3.field));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"enableDrag\", true)(\"context\", ɵngcc0.ɵɵpureFunction2(7, _c170, group_r3.field, ctx_r1.groupTitles[index_r4]))(\"group\", group_r3)(\"groupTitle\", ctx_r1.groupTitles[index_r4]);\n} }\nfunction GroupPanelComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵtext(1, \"\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"context\", ɵngcc0.ɵɵpureFunction0(1, _c168));\n} }\nconst _c171 = [\"kendoGroupIndicator\", \"\"];\nconst _c172 = [\"anchor\"];\nconst _c173 = [\"template\"];\nfunction FilterMenuComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-menu-container\", 4);\n ɵngcc0.ɵɵlistener(\"close\", function FilterMenuComponent_ng_template_3_Template_kendo_grid_filter_menu_container_close_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.close(); })(\"keydown.escape\", function FilterMenuComponent_ng_template_3_Template_kendo_grid_filter_menu_container_keydown_escape_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.close(); })(\"keydown.enter\", function FilterMenuComponent_ng_template_3_Template_kendo_grid_filter_menu_container_keydown_enter_0_listener($event) { return $event.stopImmediatePropagation(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"column\", ctx_r2.column)(\"filter\", ctx_r2.filter);\n} }\nconst _c174 = function (a1) { return { \"k-grid-filter\": true, \"k-state-active\": a1 }; };\nconst _c175 = function (a0, a1) { return { service: a0, column: a1 }; };\nfunction ColumnMenuComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 5);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r3 = ɵngcc0.ɵɵreference(6);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.column.columnMenuTemplateRef || ctx_r2.columnMenuTemplate || _r3)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c175, ctx_r2.service, ctx_r2.column));\n} }\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_sort_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-columnmenu-sort\", 10, 11);\n} if (rf & 2) {\n const _r11 = ɵngcc0.ɵɵreference(1);\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"kendoGridColumnMenuItem\", _r11)(\"service\", ctx_r5.service);\n} }\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_lock_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-columnmenu-lock\", 10, 12);\n} if (rf & 2) {\n const _r12 = ɵngcc0.ɵɵreference(1);\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"kendoGridColumnMenuItem\", _r12)(\"service\", ctx_r6.service);\n} }\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_stick_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-columnmenu-stick\", 10, 13);\n} if (rf & 2) {\n const _r13 = ɵngcc0.ɵɵreference(1);\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"kendoGridColumnMenuItem\", _r13)(\"service\", ctx_r7.service);\n} }\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_position_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-columnmenu-position\", 14, 15);\n} if (rf & 2) {\n const _r14 = ɵngcc0.ɵɵreference(1);\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"showLock\", ctx_r8.hasLock)(\"showStick\", ctx_r8.hasStick)(\"kendoGridColumnMenuItem\", _r14)(\"service\", ctx_r8.service)(\"expanded\", ctx_r8.expandedPosition);\n} }\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_chooser_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-columnmenu-chooser\", 16, 17);\n} if (rf & 2) {\n const _r15 = ɵngcc0.ɵɵreference(1);\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"kendoGridColumnMenuItem\", _r15)(\"service\", ctx_r9.service)(\"expanded\", ctx_r9.expandedColumns);\n} }\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_filter_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-columnmenu-filter\", 16, 18);\n} if (rf & 2) {\n const _r16 = ɵngcc0.ɵɵreference(1);\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"kendoGridColumnMenuItem\", _r16)(\"service\", ctx_r10.service)(\"expanded\", ctx_r10.expandedFilter);\n} }\nfunction ColumnMenuComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-container\", 6);\n ɵngcc0.ɵɵlistener(\"keydown.escape\", function ColumnMenuComponent_ng_template_5_Template_kendo_grid_columnmenu_container_keydown_escape_0_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r17 = ɵngcc0.ɵɵnextContext(); return ctx_r17.close(); })(\"keydown.enter\", function ColumnMenuComponent_ng_template_5_Template_kendo_grid_columnmenu_container_keydown_enter_0_listener($event) { return $event.stopImmediatePropagation(); });\n ɵngcc0.ɵɵtemplate(1, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_sort_1_Template, 2, 2, \"kendo-grid-columnmenu-sort\", 7);\n ɵngcc0.ɵɵtemplate(2, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_lock_2_Template, 2, 2, \"kendo-grid-columnmenu-lock\", 7);\n ɵngcc0.ɵɵtemplate(3, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_stick_3_Template, 2, 2, \"kendo-grid-columnmenu-stick\", 7);\n ɵngcc0.ɵɵtemplate(4, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_position_4_Template, 2, 5, \"kendo-grid-columnmenu-position\", 8);\n ɵngcc0.ɵɵtemplate(5, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_chooser_5_Template, 2, 3, \"kendo-grid-columnmenu-chooser\", 9);\n ɵngcc0.ɵɵtemplate(6, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_filter_6_Template, 2, 3, \"kendo-grid-columnmenu-filter\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.hasSort);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.hasLock && !ctx_r4.hasPosition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.hasStick && !ctx_r4.hasPosition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.hasPosition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.hasColumnChooser);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.hasFilter);\n} }\nconst _c176 = function (a0) { return { \"k-state-active\": a0 }; };\nconst _c177 = [\"kendoGridHeader\", \"\"];\nfunction HeaderComponent_ng_template_0_tr_0_th_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"th\", 7);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_th_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"th\", 8);\n} if (rf & 2) {\n const levelIndex_r4 = ɵngcc0.ɵɵnextContext().index;\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", levelIndex_r4)(\"logicalColIndex\", 0);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_kendo_grid_filter_menu_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-filter-menu\", 16);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(3).$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"column\", column_r10)(\"filter\", ctx_r19.filter)(\"tabIndex\", ctx_r19.tabIndex);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_kendo_grid_column_menu_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-column-menu\", 17);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(3).$implicit;\n const ctx_r20 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"standalone\", false)(\"settings\", ctx_r20.columnMenu)(\"column\", column_r10)(\"columnMenuTemplate\", ctx_r20.columnMenuTemplate)(\"sort\", ctx_r20.sort)(\"filter\", ctx_r20.filter)(\"sortable\", ctx_r20.sortable)(\"tabIndex\", ctx_r20.tabIndex);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_ng_template_2_Template(rf, ctx) { }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(3).$implicit;\n ɵngcc0.ɵɵtextInterpolate(column_r10.displayTitle);\n} }\nconst _c178 = function (a0, a1, a2, a3) { return { templateRef: a0, columnIndex: a1, column: a2, $implicit: a3 }; };\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_kendo_grid_filter_menu_0_Template, 1, 3, \"kendo-grid-filter-menu\", 13);\n ɵngcc0.ɵɵtemplate(1, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_kendo_grid_column_menu_1_Template, 1, 8, \"kendo-grid-column-menu\", 14);\n ɵngcc0.ɵɵtemplate(2, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_ng_template_2_Template, 0, 0, \"ng-template\", 15);\n ɵngcc0.ɵɵtemplate(3, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_ng_template_3_Template, 1, 1, \"ng-template\", 0);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r15 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r15.showFilterMenu && ctx_r15.isFilterable(column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r15.showColumnMenu(column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction4(4, _c178, column_r10.headerTemplateRef, column_r10.leafIndex, column_r10, column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r10.headerTemplateRef);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_ng_template_3_Template(rf, ctx) { }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 24);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(3).$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(column_r10.displayTitle);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_span_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 25);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(3).$implicit;\n const ctx_r30 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r30.sortOrder(column_r10.field));\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_kendo_grid_filter_menu_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-filter-menu\", 16);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(3).$implicit;\n const ctx_r31 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"column\", column_r10)(\"filter\", ctx_r31.filter)(\"tabIndex\", ctx_r31.tabIndex);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_kendo_grid_column_menu_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-column-menu\", 17);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(3).$implicit;\n const ctx_r32 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"standalone\", false)(\"settings\", ctx_r32.columnMenu)(\"column\", column_r10)(\"columnMenuTemplate\", ctx_r32.columnMenuTemplate)(\"sort\", ctx_r32.sort)(\"filter\", ctx_r32.filter)(\"sortable\", ctx_r32.sortable)(\"tabIndex\", ctx_r32.tabIndex);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r39 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 18);\n ɵngcc0.ɵɵelementStart(1, \"span\", 19, 20);\n ɵngcc0.ɵɵlistener(\"click\", function HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_Template_span_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r39); const _r27 = ɵngcc0.ɵɵreference(2); const column_r10 = ɵngcc0.ɵɵnextContext(2).$implicit; const ctx_r37 = ɵngcc0.ɵɵnextContext(3); return ctx_r37.onSortClick(column_r10, $event, _r27); });\n ɵngcc0.ɵɵtemplate(3, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_ng_template_3_Template, 0, 0, \"ng-template\", 15);\n ɵngcc0.ɵɵtemplate(4, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_ng_template_4_Template, 2, 1, \"ng-template\", 0);\n ɵngcc0.ɵɵelement(5, \"span\", 21);\n ɵngcc0.ɵɵtemplate(6, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_span_6_Template, 2, 1, \"span\", 22);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(7, \"span\", 23);\n ɵngcc0.ɵɵtemplate(8, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_kendo_grid_filter_menu_8_Template, 1, 3, \"kendo-grid-filter-menu\", 13);\n ɵngcc0.ɵɵtemplate(9, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_kendo_grid_column_menu_9_Template, 1, 8, \"kendo-grid-column-menu\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction4(8, _c178, column_r10.headerTemplateRef, column_r10.leafIndex, column_r10, column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r10.headerTemplateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r16.sortIcon(column_r10.field));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r16.sortableLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r16.showSortNumbering(column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"innerHtml\", ctx_r16.sortStatus(column_r10), ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r16.showFilterMenu && ctx_r16.isFilterable(column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r16.showColumnMenu(column_r10));\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"input\", 26);\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(5);\n ɵngcc0.ɵɵattribute(\"id\", ctx_r17.selectAllCheckboxId())(\"aria-label\", ctx_r17.selectAllCheckboxLabel);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 27);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r18 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"column\", column_r10)(\"columns\", ctx_r18.columns);\n} }\nconst _c179 = function (a0, a2, a3, a4) { return { field: a0, type: \"column\", column: a2, hint: a3, lastColumn: a4 }; };\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_Template(rf, ctx) { if (rf & 1) {\n const _r44 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"th\", 11);\n ɵngcc0.ɵɵlistener(\"keydown\", function HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_Template_th_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r44); const column_r10 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r42 = ɵngcc0.ɵɵnextContext(3); return ctx_r42.onHeaderKeydown(column_r10, $event); });\n ɵngcc0.ɵɵtemplate(1, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_1_Template, 4, 9, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(2, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_2_Template, 10, 13, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(3, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_ng_template_3_Template, 1, 2, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(4, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_span_4_Template, 1, 2, \"span\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r45 = ɵngcc0.ɵɵnextContext();\n const column_r10 = ctx_r45.$implicit;\n const columnIndex_r11 = ctx_r45.index;\n const last_r12 = ctx_r45.last;\n const levelIndex_r4 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"k-filterable\", ctx_r13.showFilterMenu && ctx_r13.isFilterable(column_r10) || ctx_r13.showColumnMenu(column_r10))(\"k-first\", ctx_r13.isFirstOnRow(column_r10, columnIndex_r11))(\"k-grid-header-sticky\", column_r10.sticky);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", levelIndex_r4)(\"logicalColIndex\", ctx_r13.logicalColumnIndex(column_r10))(\"headerLabelText\", column_r10.title || column_r10.field)(\"colSpan\", column_r10.colspan)(\"rowSpan\", column_r10.rowspan(ctx_r13.totalColumnLevels))(\"enableDrag\", ctx_r13.shouldActivate(column_r10))(\"context\", ɵngcc0.ɵɵpureFunction4(22, _c179, column_r10.field, column_r10, column_r10.title || column_r10.field, last_r12 && columnIndex_r11 === 0))(\"ngClass\", column_r10.headerClass)(\"ngStyle\", column_r10.sticky ? ctx_r13.addStickyStyles(column_r10) : column_r10.headerStyle);\n ɵngcc0.ɵɵattribute(\"aria-sort\", ctx_r13.sortState(column_r10))(\"rowspan\", column_r10.rowspan(ctx_r13.totalColumnLevels))(\"colspan\", column_r10.colspan);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r13.isSortable(column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.isSortable(column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.isCheckboxColumn(column_r10) && !column_r10.headerTemplateRef && column_r10.showSelectAll);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.resizable);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_kendo_grid_column_menu_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-column-menu\", 30);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r47 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"standalone\", false)(\"settings\", ctx_r47.columnMenu)(\"column\", column_r10)(\"columnMenuTemplate\", ctx_r47.columnMenuTemplate);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_ng_template_2_Template(rf, ctx) { }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n ɵngcc0.ɵɵtextInterpolate(column_r10.displayTitle);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 27);\n} if (rf & 2) {\n const column_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r50 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"column\", column_r10)(\"columns\", ctx_r50.columns);\n} }\nconst _c180 = function (a1, a2, a3) { return { type: \"columnGroup\", column: a1, hint: a2, lastColumn: a3 }; };\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 28);\n ɵngcc0.ɵɵtemplate(1, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_kendo_grid_column_menu_1_Template, 1, 4, \"kendo-grid-column-menu\", 29);\n ɵngcc0.ɵɵtemplate(2, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_ng_template_2_Template, 0, 0, \"ng-template\", 15);\n ɵngcc0.ɵɵtemplate(3, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_ng_template_3_Template, 1, 1, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(4, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_span_4_Template, 1, 2, \"span\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r54 = ɵngcc0.ɵɵnextContext();\n const column_r10 = ctx_r54.$implicit;\n const columnIndex_r11 = ctx_r54.index;\n const last_r12 = ctx_r54.last;\n const levelIndex_r4 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"k-first\", ctx_r14.isFirstOnRow(column_r10, columnIndex_r11))(\"k-filterable\", ctx_r14.showColumnMenu(column_r10))(\"k-grid-content-sticky\", column_r10.sticky);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", levelIndex_r4)(\"logicalColIndex\", ctx_r14.logicalColumnIndex(column_r10))(\"rowSpan\", column_r10.rowspan(ctx_r14.totalColumnLevels))(\"colSpan\", column_r10.colspan)(\"headerLabelText\", column_r10.title || column_r10.field)(\"enableDrag\", ctx_r14.shouldActivate(column_r10))(\"context\", ɵngcc0.ɵɵpureFunction3(21, _c180, column_r10, column_r10.title, last_r12 && columnIndex_r11 === 0))(\"ngClass\", column_r10.headerClass)(\"ngStyle\", column_r10.headerStyle);\n ɵngcc0.ɵɵattribute(\"rowspan\", column_r10.rowspan(ctx_r14.totalColumnLevels))(\"colspan\", column_r10.colspan);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r14.showColumnMenu(column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction4(25, _c178, column_r10.headerTemplateRef, ctx_r14.lockedColumnsCount + columnIndex_r11, column_r10, column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !column_r10.headerTemplateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r14.resizable);\n} }\nfunction HeaderComponent_ng_template_0_tr_0_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_0_Template, 5, 27, \"th\", 9);\n ɵngcc0.ɵɵtemplate(1, HeaderComponent_ng_template_0_tr_0_ng_template_3_th_1_Template, 5, 30, \"th\", 10);\n} if (rf & 2) {\n const column_r10 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r7.isColumnGroupComponent(column_r10));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.isColumnGroupComponent(column_r10));\n} }\nfunction HeaderComponent_ng_template_0_tr_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 3);\n ɵngcc0.ɵɵtemplate(1, HeaderComponent_ng_template_0_tr_0_th_1_Template, 1, 0, \"th\", 4);\n ɵngcc0.ɵɵtemplate(2, HeaderComponent_ng_template_0_tr_0_th_2_Template, 1, 2, \"th\", 5);\n ɵngcc0.ɵɵtemplate(3, HeaderComponent_ng_template_0_tr_0_ng_template_3_Template, 2, 2, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const levelIndex_r4 = ctx.index;\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", levelIndex_r4)(\"logicalSlaveRow\", ctx_r1.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r1.columns.length)(\"logicalSlaveCellsCount\", ctx_r1.unlockedColumnsCount);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.groups);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.detailTemplate == null ? null : ctx_r1.detailTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.columnsForLevel(levelIndex_r4))(\"ngForTrackBy\", ctx_r1.trackByIndex);\n} }\nfunction HeaderComponent_ng_template_0_tr_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"tr\", 31);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"columns\", ctx_r2.leafColumns)(\"filter\", ctx_r2.filter)(\"groups\", ctx_r2.groups)(\"detailTemplate\", ctx_r2.detailTemplate)(\"lockedColumnsCount\", ctx_r2.lockedColumnsCount)(\"logicalRowIndex\", ctx_r2.totalColumnLevels + 1)(\"logicalSlaveRow\", ctx_r2.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r2.columns.length)(\"logicalSlaveCellsCount\", ctx_r2.unlockedColumnsCount);\n} }\nfunction HeaderComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HeaderComponent_ng_template_0_tr_0_Template, 4, 8, \"tr\", 1);\n ɵngcc0.ɵɵtemplate(1, HeaderComponent_ng_template_0_tr_1_Template, 1, 9, \"tr\", 2);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.columnLevels);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showFilterRow);\n} }\nconst _c181 = [\"resetButton\"];\nconst _c182 = [\"filterButton\"];\nfunction FilterMenuContainerComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementContainer(1, 9);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"filterService\", ctx_r0.childService)(\"column\", ctx_r0.column)(\"filter\", ctx_r0.childFilter)(\"menuTabbingService\", ctx_r0.menuTabbingService);\n} }\nfunction FilterMenuContainerComponent_ng_container_4_1_ng_template_0_Template(rf, ctx) { }\nfunction FilterMenuContainerComponent_ng_container_4_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FilterMenuContainerComponent_ng_container_4_1_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.column.filterMenuTemplateRef)(\"ngTemplateOutletContext\", ctx_r4.templateContext);\n} }\nfunction FilterMenuContainerComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, FilterMenuContainerComponent_ng_container_4_1_Template, 1, 2, null, 10);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.column.filterMenuTemplateRef);\n} }\nfunction StringFilterMenuComponent_kendo_dropdownlist_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 3);\n ɵngcc0.ɵɵlistener(\"valueChange\", function StringFilterMenuComponent_kendo_dropdownlist_1_Template_kendo_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.logicChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"filterMenuDropDownLabel\", ctx_r0.filterMenuDropDownLabel)(\"data\", ctx_r0.logicOperators)(\"valuePrimitive\", true)(\"value\", ctx_r0.filter == null ? null : ctx_r0.filter.logic);\n} }\nfunction StringFilterMenuComponent_kendo_grid_string_filter_menu_input_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-string-filter-menu-input\", 4);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"operators\", ctx_r1.operators)(\"currentFilter\", ctx_r1.secondFilter)(\"filterService\", ctx_r1.filterService)(\"column\", ctx_r1.column)(\"filter\", ctx_r1.filter)(\"menuTabbingService\", ctx_r1.menuTabbingService);\n} }\nfunction NumericFilterMenuComponent_kendo_dropdownlist_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 3);\n ɵngcc0.ɵɵlistener(\"valueChange\", function NumericFilterMenuComponent_kendo_dropdownlist_1_Template_kendo_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.logicChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"filterMenuDropDownLabel\", ctx_r0.filterMenuDropDownLabel)(\"data\", ctx_r0.logicOperators)(\"valuePrimitive\", true)(\"value\", ctx_r0.filter == null ? null : ctx_r0.filter.logic);\n} }\nfunction NumericFilterMenuComponent_kendo_grid_numeric_filter_menu_input_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-numeric-filter-menu-input\", 4);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"operators\", ctx_r1.operators)(\"currentFilter\", ctx_r1.secondFilter)(\"filterService\", ctx_r1.filterService)(\"column\", ctx_r1.column)(\"filter\", ctx_r1.filter)(\"format\", ctx_r1.format)(\"decimals\", ctx_r1.decimals)(\"spinners\", ctx_r1.spinners)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"step\", ctx_r1.step)(\"menuTabbingService\", ctx_r1.menuTabbingService);\n} }\nfunction DateFilterMenuComponent_kendo_dropdownlist_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 3);\n ɵngcc0.ɵɵlistener(\"valueChange\", function DateFilterMenuComponent_kendo_dropdownlist_1_Template_kendo_dropdownlist_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.logicChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"filterMenuDropDownLabel\", ctx_r0.filterMenuDropDownLabel)(\"data\", ctx_r0.logicOperators)(\"valuePrimitive\", true)(\"value\", ctx_r0.filter == null ? null : ctx_r0.filter.logic);\n} }\nfunction DateFilterMenuComponent_kendo_grid_date_filter_menu_input_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-date-filter-menu-input\", 4);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"operators\", ctx_r1.operators)(\"currentFilter\", ctx_r1.secondFilter)(\"filterService\", ctx_r1.filterService)(\"column\", ctx_r1.column)(\"filter\", ctx_r1.filter)(\"activeView\", ctx_r1.activeView)(\"bottomView\", ctx_r1.bottomView)(\"topView\", ctx_r1.topView)(\"format\", ctx_r1.format)(\"formatPlaceholder\", ctx_r1.formatPlaceholder)(\"placeholder\", ctx_r1.placeholder)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"weekNumber\", ctx_r1.weekNumber)(\"menuTabbingService\", ctx_r1.menuTabbingService);\n} }\nfunction BooleanFilterMenuComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\");\n ɵngcc0.ɵɵelementStart(1, \"input\", 2, 3);\n ɵngcc0.ɵɵlistener(\"change\", function BooleanFilterMenuComponent_li_1_Template_input_change_1_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r4); const item_r1 = restoredCtx.$implicit; const _r2 = ɵngcc0.ɵɵreference(2); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.onChange(item_r1.value, _r2); })(\"keydown.shift.tab\", function BooleanFilterMenuComponent_li_1_Template_input_keydown_shift_tab_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.onShiftTab($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"label\", 4);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnLabel\", ctx_r0.columnLabel)(\"name\", ctx_r0.idPrefix)(\"checked\", ctx_r0.isSelected(item_r1.value));\n ɵngcc0.ɵɵattribute(\"id\", ctx_r0.radioId(item_r1.value));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"for\", ctx_r0.radioId(item_r1.value));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(item_r1.text);\n} }\nconst _c183 = [\"applyButton\"];\nfunction ColumnListComponent_label_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"label\", 3);\n ɵngcc0.ɵɵelement(1, \"input\", 4);\n ɵngcc0.ɵɵelementStart(2, \"span\", 5);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r2 = ctx.$implicit;\n const index_r3 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"checked\", !column_r2.hidden)(\"disabled\", ctx_r0.isDisabled(column_r2));\n ɵngcc0.ɵɵattribute(\"data-index\", index_r3);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(column_r2.displayTitle);\n} }\nfunction ColumnListComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵelementStart(1, \"button\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function ColumnListComponent_div_2_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.cancelChanges(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"button\", 8, 9);\n ɵngcc0.ɵɵlistener(\"keydown.tab\", function ColumnListComponent_div_2_Template_button_keydown_tab_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onTab($event); })(\"click\", function ColumnListComponent_div_2_Template_button_click_3_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.applyChanges(); });\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r1.actionsClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.resetText);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.applyText);\n} }\nfunction ColumnChooserComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"kendo-grid-columnlist\", 5);\n ɵngcc0.ɵɵlistener(\"apply\", function ColumnChooserComponent_ng_template_3_Template_kendo_grid_columnlist_apply_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.onApply($event); })(\"columnChange\", function ColumnChooserComponent_ng_template_3_Template_kendo_grid_columnlist_columnChange_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.onChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.localization.get(\"columns\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columns\", ctx_r2.columns)(\"applyText\", ctx_r2.localization.get(\"columnsApply\"))(\"resetText\", ctx_r2.localization.get(\"columnsReset\"))(\"autoSync\", ctx_r2.autoSync)(\"allowHideAll\", ctx_r2.allowHideAll);\n} }\nfunction ColumnMenuChooserComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnlist\", 2);\n ɵngcc0.ɵɵlistener(\"apply\", function ColumnMenuChooserComponent_ng_template_1_Template_kendo_grid_columnlist_apply_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.onApply($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"applyText\", ctx_r0.localization.get(\"columnsApply\"))(\"resetText\", ctx_r0.localization.get(\"columnsReset\"))(\"columns\", ctx_r0.columns)(\"autoSync\", false)(\"allowHideAll\", false)(\"actionsClass\", ctx_r0.actionsClass)(\"isLast\", ctx_r0.isLast)(\"isExpanded\", ctx_r0.expanded)(\"service\", ctx_r0.service);\n} }\nfunction ColumnMenuFilterComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-menu-container\", 2);\n ɵngcc0.ɵɵlistener(\"keydown.shift.tab\", function ColumnMenuFilterComponent_ng_template_1_Template_kendo_grid_filter_menu_container_keydown_shift_tab_0_listener($event) { return $event.stopImmediatePropagation(); })(\"close\", function ColumnMenuFilterComponent_ng_template_1_Template_kendo_grid_filter_menu_container_close_0_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.close(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"column\", ctx_r0.service.column)(\"menuTabbingService\", ctx_r0.service.menuTabbingService)(\"filter\", ctx_r0.service.filter)(\"actionsClass\", ctx_r0.actionsClass)(\"isLast\", ctx_r0.isLast)(\"isExpanded\", ctx_r0.expanded);\n} }\nfunction ColumnMenuItemComponent_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 3);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.iconClass);\n} }\nfunction ColumnMenuItemComponent_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵelementContainer(1, 5);\n ɵngcc0.ɵɵelement(2, \"div\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@state\", ctx_r1.contentState);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.contentTemplate.templateRef);\n} }\nfunction ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-lock\", 3);\n ɵngcc0.ɵɵlistener(\"keydown.tab\", function ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template_kendo_grid_columnmenu_lock_keydown_tab_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(2); return ctx_r3.onTab($event, !ctx_r3.showStick); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"service\", ctx_r1.service);\n} }\nfunction ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-stick\", 3);\n ɵngcc0.ɵɵlistener(\"keydown.tab\", function ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template_kendo_grid_columnmenu_stick_keydown_tab_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(2); return ctx_r5.onTab($event, true); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"service\", ctx_r2.service);\n} }\nfunction ColumnMenuPositionComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template, 1, 1, \"kendo-grid-columnmenu-lock\", 2);\n ɵngcc0.ɵɵtemplate(1, ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template, 1, 1, \"kendo-grid-columnmenu-stick\", 2);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showLock);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showStick);\n} }\nconst _c184 = [\"kendoGridTableBody\", \"\"];\nfunction TableBodyComponent_ng_template_0_ng_template_1_td_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 8);\n} }\nfunction TableBodyComponent_ng_template_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TableBodyComponent_ng_template_0_ng_template_1_td_0_Template, 1, 0, \"td\", 7);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.groups);\n} }\nfunction TableBodyComponent_ng_template_0_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 9);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r5.addRowLogicalIndex())(\"logicalColIndex\", 0);\n} }\nfunction TableBodyComponent_ng_template_0_td_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 10);\n} if (rf & 2) {\n const column_r9 = ctx.$implicit;\n const columnIndex_r10 = ctx.index;\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"left\", column_r9.sticky ? \"0\" : undefined);\n ɵngcc0.ɵɵclassProp(\"k-grid-content-sticky\", column_r9.sticky);\n ɵngcc0.ɵɵproperty(\"rowIndex\", -1)(\"columnIndex\", ctx_r6.lockedColumnsCount + columnIndex_r10)(\"isNew\", true)(\"column\", column_r9)(\"dataItem\", ctx_r6.newDataItem)(\"ngClass\", column_r9.cssClass)(\"ngStyle\", column_r9.sticky ? ctx_r6.addStickyColumnStyles(column_r9) : column_r9.style)(\"logicalRowIndex\", ctx_r6.addRowLogicalIndex())(\"logicalColIndex\", ctx_r6.logicalColIndex(column_r9))(\"colSpan\", column_r9.colspan);\n ɵngcc0.ɵɵattribute(\"colspan\", column_r9.colspan);\n} }\nfunction TableBodyComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 4);\n ɵngcc0.ɵɵtemplate(1, TableBodyComponent_ng_template_0_ng_template_1_Template, 1, 1, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(2, TableBodyComponent_ng_template_0_td_2_Template, 1, 2, \"td\", 5);\n ɵngcc0.ɵɵtemplate(3, TableBodyComponent_ng_template_0_td_3_Template, 1, 15, \"td\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.addRowLogicalIndex())(\"logicalSlaveRow\", ctx_r0.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r0.columns.length)(\"logicalSlaveCellsCount\", ctx_r0.unlockedColumnsCount);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.skipGroupDecoration);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.detailTemplate == null ? null : ctx_r0.detailTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.columns)(\"ngForTrackBy\", ctx_r0.trackByColumns);\n} }\nfunction TableBodyComponent_tr_1_ng_template_2_Template(rf, ctx) { }\nfunction TableBodyComponent_tr_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r12.noRecordsText, \" \");\n} }\nconst _c185 = function (a0) { return { templateRef: a0 }; };\nfunction TableBodyComponent_tr_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 11);\n ɵngcc0.ɵɵelementStart(1, \"td\");\n ɵngcc0.ɵɵtemplate(2, TableBodyComponent_tr_1_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n ɵngcc0.ɵɵtemplate(3, TableBodyComponent_tr_1_ng_container_3_Template, 2, 1, \"ng-container\", 13);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r1.colSpan);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.noRecordsTemplate == null ? null : ctx_r1.noRecordsTemplate.templateRef)(\"templateContext\", ɵngcc0.ɵɵpureFunction1(4, _c185, ctx_r1.noRecordsTemplate == null ? null : ctx_r1.noRecordsTemplate.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !(ctx_r1.noRecordsTemplate == null ? null : ctx_r1.noRecordsTemplate.templateRef));\n} }\nfunction TableBodyComponent_ng_template_2_tr_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"tr\", 18);\n} if (rf & 2) {\n const ctx_r19 = ɵngcc0.ɵɵnextContext();\n const item_r13 = ctx_r19.$implicit;\n const rowIndex_r14 = ctx_r19.index;\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"columns\", ctx_r15.columns)(\"groups\", ctx_r15.groups)(\"item\", item_r13)(\"hasDetails\", ctx_r15.detailTemplate == null ? null : ctx_r15.detailTemplate.templateRef)(\"skipGroupDecoration\", ctx_r15.skipGroupDecoration)(\"hasGroupHeaderColumn\", ctx_r15.hasGroupHeaderColumn)(\"groupHeaderColumns\", ctx_r15.groupHeaderColumns)(\"rowIndex\", rowIndex_r14 + 1)(\"totalColumnsCount\", ctx_r15.totalColumnsCount)(\"logicalRowIndex\", ctx_r15.logicalRowIndex(rowIndex_r14))(\"logicalSlaveRow\", ctx_r15.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r15.columns.length)(\"logicalSlaveCellsCount\", ctx_r15.groupHeaderSlaveCellsCount);\n} }\nfunction TableBodyComponent_ng_template_2_tr_1_ng_template_1_td_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 8);\n} }\nfunction TableBodyComponent_ng_template_2_tr_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TableBodyComponent_ng_template_2_tr_1_ng_template_1_td_0_Template, 1, 0, \"td\", 7);\n} if (rf & 2) {\n const ctx_r20 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r20.groups);\n} }\nfunction TableBodyComponent_ng_template_2_tr_1_td_2_a_1_Template(rf, ctx) { if (rf & 1) {\n const _r28 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function TableBodyComponent_ng_template_2_tr_1_td_2_a_1_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r28); const item_r13 = ɵngcc0.ɵɵnextContext(3).$implicit; const ctx_r26 = ɵngcc0.ɵɵnextContext(); return ctx_r26.toggleRow(item_r13.index, item_r13.data); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r13 = ɵngcc0.ɵɵnextContext(3).$implicit;\n const ctx_r25 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r25.detailButtonStyles(item_r13));\n ɵngcc0.ɵɵattribute(\"title\", ctx_r25.detailButtonTitle(item_r13));\n} }\nfunction TableBodyComponent_ng_template_2_tr_1_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 22);\n ɵngcc0.ɵɵtemplate(1, TableBodyComponent_ng_template_2_tr_1_td_2_a_1_Template, 1, 2, \"a\", 23);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r30 = ɵngcc0.ɵɵnextContext(2);\n const rowIndex_r14 = ctx_r30.index;\n const item_r13 = ctx_r30.$implicit;\n const ctx_r21 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r21.logicalRowIndex(rowIndex_r14))(\"logicalColIndex\", 0)(\"dataRowIndex\", item_r13.index)(\"dataItem\", item_r13.data)(\"detailExpandCell\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r21.detailTemplate.showIf(item_r13.data, item_r13.index));\n} }\nfunction TableBodyComponent_ng_template_2_tr_1_td_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 25);\n} if (rf & 2) {\n const column_r31 = ctx.$implicit;\n const columnIndex_r32 = ctx.index;\n const ctx_r33 = ɵngcc0.ɵɵnextContext(2);\n const item_r13 = ctx_r33.$implicit;\n const rowIndex_r14 = ctx_r33.index;\n const ctx_r22 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-grid-content-sticky\", column_r31.sticky)(\"k-touch-action-none\", ctx_r22.isSelectable() && ctx_r22.selectable.drag)(\"k-touch-action-auto\", !(ctx_r22.isSelectable() && ctx_r22.selectable.drag))(\"k-grid-edit-cell\", ctx_r22.isEditingCell(item_r13.index, column_r31))(\"k-state-selected\", ctx_r22.isSelectable && ctx_r22.cellSelectionService.isCellSelected(item_r13, column_r31));\n ɵngcc0.ɵɵproperty(\"rowIndex\", item_r13.index)(\"columnIndex\", ctx_r22.lockedColumnsCount + columnIndex_r32)(\"column\", column_r31)(\"dataItem\", item_r13.data)(\"isLoading\", ctx_r22.isLoading)(\"isVirtual\", ctx_r22.isVirtual)(\"loadingTemplate\", ctx_r22.loadingTemplate)(\"logicalRowIndex\", ctx_r22.logicalRowIndex(rowIndex_r14))(\"logicalColIndex\", ctx_r22.logicalColIndex(column_r31))(\"dataRowIndex\", item_r13.index)(\"dataItem\", item_r13.data)(\"colIndex\", columnIndex_r32)(\"colSpan\", column_r31.colspan)(\"ngClass\", column_r31.cssClass)(\"ngStyle\", column_r31.sticky ? ctx_r22.addStickyColumnStyles(column_r31) : column_r31.style);\n ɵngcc0.ɵɵattribute(\"data-kendo-grid-column-index\", ctx_r22.lockedColumnsCount + columnIndex_r32)(\"aria-selected\", ctx_r22.isSelectable() ? ctx_r22.isAriaSelected(item_r13, column_r31) : undefined)(\"colspan\", column_r31.colspan);\n} }\nconst _c186 = function (a0, a1) { return { dataItem: a0, index: a1 }; };\nfunction TableBodyComponent_ng_template_2_tr_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 19);\n ɵngcc0.ɵɵtemplate(1, TableBodyComponent_ng_template_2_tr_1_ng_template_1_Template, 1, 1, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(2, TableBodyComponent_ng_template_2_tr_1_td_2_Template, 2, 6, \"td\", 20);\n ɵngcc0.ɵɵtemplate(3, TableBodyComponent_ng_template_2_tr_1_td_3_Template, 1, 28, \"td\", 21);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r34 = ɵngcc0.ɵɵnextContext();\n const item_r13 = ctx_r34.$implicit;\n const rowIndex_r14 = ctx_r34.index;\n const ctx_r16 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-grid-row-sticky\", ctx_r16.rowSticky ? ctx_r16.rowSticky(ɵngcc0.ɵɵpureFunction2(22, _c186, item_r13.data, item_r13.index)) : false)(\"k-alt\", ctx_r16.isOdd(item_r13))(\"k-master-row\", ctx_r16.detailTemplate == null ? null : ctx_r16.detailTemplate.templateRef)(\"k-grid-edit-row\", ctx_r16.isEditingRow(item_r13.index))(\"k-state-selected\", ctx_r16.isSelectable() && ctx_r16.isRowSelected(item_r13));\n ɵngcc0.ɵɵproperty(\"dataRowIndex\", item_r13.index)(\"dataItem\", item_r13.data)(\"logicalRowIndex\", ctx_r16.logicalRowIndex(rowIndex_r14))(\"logicalSlaveRow\", ctx_r16.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r16.columns.length)(\"logicalSlaveCellsCount\", ctx_r16.unlockedColumnsCount)(\"ngClass\", ctx_r16.rowClass(ɵngcc0.ɵɵpureFunction2(25, _c186, item_r13.data, item_r13.index)));\n ɵngcc0.ɵɵattribute(\"data-kendo-grid-item-index\", item_r13.index);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r16.skipGroupDecoration);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r16.detailTemplate == null ? null : ctx_r16.detailTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r16.columns)(\"ngForTrackBy\", ctx_r16.trackByColumns);\n} }\nfunction TableBodyComponent_ng_template_2_tr_2_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 31);\n} }\nfunction TableBodyComponent_ng_template_2_tr_2_ng_template_4_Template(rf, ctx) { }\nconst _c187 = function (a0, a1, a2) { return { dataItem: a0, rowIndex: a1, $implicit: a2 }; };\nfunction TableBodyComponent_ng_template_2_tr_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 26);\n ɵngcc0.ɵɵtemplate(1, TableBodyComponent_ng_template_2_tr_2_td_1_Template, 1, 0, \"td\", 27);\n ɵngcc0.ɵɵelement(2, \"td\", 28);\n ɵngcc0.ɵɵelementStart(3, \"td\", 29);\n ɵngcc0.ɵɵtemplate(4, TableBodyComponent_ng_template_2_tr_2_ng_template_4_Template, 0, 0, \"ng-template\", 30);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r38 = ɵngcc0.ɵɵnextContext();\n const item_r13 = ctx_r38.$implicit;\n const rowIndex_r14 = ctx_r38.index;\n const ctx_r17 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-alt\", ctx_r17.isOdd(item_r13));\n ɵngcc0.ɵɵproperty(\"dataRowIndex\", item_r13.index)(\"dataItem\", item_r13.data)(\"logicalRowIndex\", ctx_r17.logicalRowIndex(rowIndex_r14) + 1)(\"logicalSlaveRow\", false)(\"logicalCellsCount\", 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r17.groups);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r17.logicalRowIndex(rowIndex_r14) + 1)(\"logicalColIndex\", 0)(\"dataRowIndex\", item_r13.index)(\"dataItem\", item_r13.data)(\"colIndex\", 0)(\"colSpan\", ctx_r17.allColumnsSpan + 1);\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r17.columnsSpan);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r17.detailTemplate.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(17, _c187, item_r13.data, item_r13.index, item_r13.data));\n} }\nfunction TableBodyComponent_ng_template_2_tr_3_ng_template_1_td_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 31);\n} }\nfunction TableBodyComponent_ng_template_2_tr_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TableBodyComponent_ng_template_2_tr_3_ng_template_1_td_0_Template, 1, 0, \"td\", 27);\n} if (rf & 2) {\n const ctx_r39 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r39.groups);\n} }\nfunction TableBodyComponent_ng_template_2_tr_3_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 9);\n} if (rf & 2) {\n const rowIndex_r14 = ɵngcc0.ɵɵnextContext(2).index;\n const ctx_r40 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r40.logicalRowIndex(rowIndex_r14))(\"logicalColIndex\", 0);\n} }\nfunction TableBodyComponent_ng_template_2_tr_3_td_3_ng_template_1_Template(rf, ctx) { }\nconst _c188 = function (a0, a1, a2, a3, a4, a5) { return { templateRef: a0, group: a1, field: a2, column: a3, aggregates: a4, $implicit: a5 }; };\nfunction TableBodyComponent_ng_template_2_tr_3_td_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 34);\n ɵngcc0.ɵɵtemplate(1, TableBodyComponent_ng_template_2_tr_3_td_3_ng_template_1_Template, 0, 0, \"ng-template\", 35);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r45 = ctx.$implicit;\n const ctx_r48 = ɵngcc0.ɵɵnextContext(2);\n const rowIndex_r14 = ctx_r48.index;\n const item_r13 = ctx_r48.$implicit;\n const ctx_r41 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r41.logicalRowIndex(rowIndex_r14))(\"logicalColIndex\", ctx_r41.logicalColIndex(column_r45));\n ɵngcc0.ɵɵattribute(\"data-skip\", ctx_r41.skipGroupDecoration);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction6(4, _c188, column_r45.groupFooterTemplateRef, item_r13.data, column_r45.field, column_r45, item_r13.data == null ? null : item_r13.data.aggregates, item_r13.data == null ? null : item_r13.data.aggregates));\n} }\nfunction TableBodyComponent_ng_template_2_tr_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 32);\n ɵngcc0.ɵɵtemplate(1, TableBodyComponent_ng_template_2_tr_3_ng_template_1_Template, 1, 1, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(2, TableBodyComponent_ng_template_2_tr_3_td_2_Template, 1, 2, \"td\", 5);\n ɵngcc0.ɵɵtemplate(3, TableBodyComponent_ng_template_2_tr_3_td_3_Template, 2, 11, \"td\", 33);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const rowIndex_r14 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r18 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r18.logicalRowIndex(rowIndex_r14))(\"logicalSlaveRow\", ctx_r18.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r18.columns.length)(\"logicalSlaveCellsCount\", ctx_r18.unlockedColumnsCount);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r18.skipGroupDecoration);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r18.detailTemplate == null ? null : ctx_r18.detailTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r18.footerColumns)(\"ngForTrackBy\", ctx_r18.trackByColumns);\n} }\nfunction TableBodyComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TableBodyComponent_ng_template_2_tr_0_Template, 1, 13, \"tr\", 14);\n ɵngcc0.ɵɵtemplate(1, TableBodyComponent_ng_template_2_tr_1_Template, 4, 28, \"tr\", 15);\n ɵngcc0.ɵɵtemplate(2, TableBodyComponent_ng_template_2_tr_2_Template, 5, 21, \"tr\", 16);\n ɵngcc0.ɵɵtemplate(3, TableBodyComponent_ng_template_2_tr_3_Template, 4, 8, \"tr\", 17);\n} if (rf & 2) {\n const item_r13 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.isGroup(item_r13) && ctx_r2.isParentGroupExpanded(item_r13) && ctx_r2.showGroupHeader(item_r13));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.isDataItem(item_r13) && (!item_r13.group || ctx_r2.isDataItemInExpandedGroup(item_r13)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.isDataItem(item_r13) && (!item_r13.group || ctx_r2.isDataItemInExpandedGroup(item_r13)) && (ctx_r2.detailTemplate == null ? null : ctx_r2.detailTemplate.templateRef) && ctx_r2.detailTemplate.showIf(item_r13.data, item_r13.index) && ctx_r2.isExpanded(item_r13));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.isFooter(item_r13) && item_r13.group && (ctx_r2.isFooterItemInExpandedGroup(item_r13) || ctx_r2.showGroupFooters && ctx_r2.isParentGroupExpanded(item_r13.group)) && !item_r13.data.hideFooter);\n} }\nfunction TableBodyComponent_kendo_resize_sensor_3_Template(rf, ctx) { if (rf & 1) {\n const _r51 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 36);\n ɵngcc0.ɵɵlistener(\"resize\", function TableBodyComponent_kendo_resize_sensor_3_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r51); const ctx_r50 = ɵngcc0.ɵɵnextContext(); return ctx_r50.resizeHandler(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c189 = [\"kendoGridCell\", \"\"];\nfunction CellComponent_ng_container_1_ng_container_1_ng_template_1_Template(rf, ctx) { }\nfunction CellComponent_ng_container_1_ng_container_1_ng_template_2_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵpipe(1, \"valueOf\");\n} if (rf & 2) {\n const childColumn_r10 = ctx.$implicit;\n const ctx_r9 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ɵngcc0.ɵɵpipeBind3(1, 1, ctx_r9.dataItem, childColumn_r10.field, childColumn_r10.format), \" \");\n} }\nfunction CellComponent_ng_container_1_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CellComponent_ng_container_1_ng_container_1_ng_template_2_ng_template_0_Template, 2, 5, \"ng-template\", 6);\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r6.childColumns);\n} }\nfunction CellComponent_ng_container_1_ng_container_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵpipe(1, \"valueOf\");\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind3(1, 1, ctx_r7.dataItem, ctx_r7.column.field, ctx_r7.column.format));\n} }\nfunction CellComponent_ng_container_1_ng_container_1_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"input\", 7);\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"kendoGridSelectionCheckbox\", ctx_r8.rowIndex);\n ɵngcc0.ɵɵattribute(\"id\", ctx_r8.selectionCheckboxId)(\"aria-label\", ctx_r8.selectionCheckboxLabel);\n} }\nfunction CellComponent_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CellComponent_ng_container_1_ng_container_1_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵtemplate(2, CellComponent_ng_container_1_ng_container_1_ng_template_2_Template, 1, 1, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(3, CellComponent_ng_container_1_ng_container_1_ng_template_3_Template, 2, 5, \"ng-template\", 5);\n ɵngcc0.ɵɵtemplate(4, CellComponent_ng_container_1_ng_container_1_ng_template_4_Template, 1, 3, \"ng-template\", 5);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.column.templateRef)(\"ngTemplateOutlet\", ctx_r2.column.templateRef)(\"ngTemplateOutletContext\", ctx_r2.templateContext);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.isSpanColumn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.isBoundColumn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.isCheckboxColumn && !ctx_r2.isNew);\n} }\nfunction CellComponent_ng_container_1_ng_template_2_0_ng_template_0_Template(rf, ctx) { }\nconst _c190 = function (a0) { return { $implicit: a0 }; };\nfunction CellComponent_ng_container_1_ng_template_2_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CellComponent_ng_container_1_ng_template_2_0_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r11.loadingTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c190, ctx_r11.column));\n} }\nfunction CellComponent_ng_container_1_ng_template_2_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 11);\n} }\nfunction CellComponent_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CellComponent_ng_container_1_ng_template_2_0_Template, 1, 4, null, 8);\n ɵngcc0.ɵɵtemplate(1, CellComponent_ng_container_1_ng_template_2_div_1_Template, 1, 0, \"div\", 9);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.loadingTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r4.loadingTemplate);\n} }\nfunction CellComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CellComponent_ng_container_1_ng_container_1_Template, 5, 6, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(2, CellComponent_ng_container_1_ng_template_2_Template, 2, 2, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r3 = ɵngcc0.ɵɵreference(3);\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.showLoading)(\"ngIfElse\", _r3);\n} }\nfunction CellComponent_ng_container_2_1_ng_template_0_Template(rf, ctx) { }\nfunction CellComponent_ng_container_2_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CellComponent_ng_container_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r14.column.editTemplateRef)(\"ngTemplateOutletContext\", ctx_r14.editTemplateContext);\n} }\nfunction CellComponent_ng_container_2_ng_container_2_kendo_numerictextbox_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-numerictextbox\", 16);\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"format\", ctx_r17.format)(\"formControl\", ctx_r17.formGroup.get(ctx_r17.column.field));\n} }\nfunction CellComponent_ng_container_2_ng_container_2_kendo_datepicker_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-datepicker\", 16);\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"format\", ctx_r18.format)(\"formControl\", ctx_r18.formGroup.get(ctx_r18.column.field));\n} }\nfunction CellComponent_ng_container_2_ng_container_2_input_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"input\", 17);\n} if (rf & 2) {\n const ctx_r19 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"formControl\", ctx_r19.formGroup.get(ctx_r19.column.field));\n} }\nfunction CellComponent_ng_container_2_ng_container_2_input_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"input\", 18);\n} if (rf & 2) {\n const ctx_r20 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"formControl\", ctx_r20.formGroup.get(ctx_r20.column.field));\n} }\nfunction CellComponent_ng_container_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵtemplate(1, CellComponent_ng_container_2_ng_container_2_kendo_numerictextbox_1_Template, 1, 2, \"kendo-numerictextbox\", 13);\n ɵngcc0.ɵɵtemplate(2, CellComponent_ng_container_2_ng_container_2_kendo_datepicker_2_Template, 1, 2, \"kendo-datepicker\", 13);\n ɵngcc0.ɵɵtemplate(3, CellComponent_ng_container_2_ng_container_2_input_3_Template, 1, 1, \"input\", 14);\n ɵngcc0.ɵɵtemplate(4, CellComponent_ng_container_2_ng_container_2_input_4_Template, 1, 1, \"input\", 15);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx_r15.column.editor);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"numeric\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"date\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"boolean\");\n} }\nfunction CellComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CellComponent_ng_container_2_1_Template, 1, 2, null, 8);\n ɵngcc0.ɵɵtemplate(2, CellComponent_ng_container_2_ng_container_2_Template, 5, 4, \"ng-container\", 12);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.column.editTemplateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.column.editTemplateRef);\n} }\nconst _c191 = [\"kendoGridFooter\", \"\"];\nfunction FooterComponent_ng_template_0_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 5);\n} if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-group-cell\", true);\n} }\nfunction FooterComponent_ng_template_0_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 5);\n} if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-hierarchy-cell\", true);\n} }\nfunction FooterComponent_ng_template_0_td_3_ng_template_1_Template(rf, ctx) { }\nfunction FooterComponent_ng_template_0_td_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 6);\n ɵngcc0.ɵɵtemplate(1, FooterComponent_ng_template_0_td_3_ng_template_1_Template, 0, 0, \"ng-template\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r5 = ctx.$implicit;\n const columnIndex_r6 = ctx.index;\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"k-grid-footer-sticky\", column_r5.sticky);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r3.logicalRowIndex)(\"logicalColIndex\", ctx_r3.logicalColumnIndex(column_r5))(\"ngClass\", column_r5.footerClass)(\"ngStyle\", column_r5.sticky ? ctx_r3.addStickyStyles(column_r5) : column_r5.footerStyle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction4(7, _c178, column_r5.footerTemplateRef, ctx_r3.lockedColumnsCount + columnIndex_r6, column_r5, column_r5));\n} }\nfunction FooterComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 1);\n ɵngcc0.ɵɵtemplate(1, FooterComponent_ng_template_0_td_1_Template, 1, 2, \"td\", 2);\n ɵngcc0.ɵɵtemplate(2, FooterComponent_ng_template_0_td_2_Template, 1, 2, \"td\", 3);\n ɵngcc0.ɵɵtemplate(3, FooterComponent_ng_template_0_td_3_Template, 2, 12, \"td\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-footer-template\", true);\n ɵngcc0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.logicalRowIndex)(\"logicalSlaveRow\", ctx_r0.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r0.columns.length)(\"logicalSlaveCellsCount\", ctx_r0.columns.length - ctx_r0.lockedColumnsCount);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.groups);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.detailTemplate == null ? null : ctx_r0.detailTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.columnsToRender);\n} }\nfunction ToolbarComponent_0_ng_template_0_Template(rf, ctx) { }\nfunction ToolbarComponent_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolbarComponent_0_ng_template_0_Template, 0, 0, \"ng-template\", 1);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.toolbarTemplateRef)(\"ngTemplateOutletContext\", ctx_r0.context);\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\"); // tslint:disable-line:variable-name\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();\n// TODO: Move to kendo-common\nfunction getIterator() {\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 */\nlet GridSpacerComponent = class GridSpacerComponent {\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 */\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 = function GridSpacerComponent_Factory(t) { return new (t || GridSpacerComponent)(); };\nGridSpacerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GridSpacerComponent, selectors: [[\"kendo-grid-spacer\"], [\"kendo-pager-spacer\"]], hostVars: 6, hostBindings: function GridSpacerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"flex-basis\", ctx.flexBasisStyle);\n ɵngcc0.ɵɵclassProp(\"k-spacer\", ctx.hostClass)(\"k-spacer-sized\", ctx.sizedClass);\n } }, inputs: { width: \"width\" }, decls: 0, vars: 0, template: function GridSpacerComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-spacer'),\n __metadata(\"design:type\", Boolean)\n], GridSpacerComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-spacer-sized'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GridSpacerComponent.prototype, \"sizedClass\", null);\n__decorate([\n HostBinding('style.flexBasis'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], GridSpacerComponent.prototype, \"flexBasisStyle\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], GridSpacerComponent.prototype, \"width\", void 0);\n\n/**\n * @hidden\n */\nlet DomEventsService = class DomEventsService {\n /**\n * @hidden\n */\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 = function DomEventsService_Factory(t) { return new (t || DomEventsService)(); };\nDomEventsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DomEventsService, factory: function (t) { return DomEventsService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet LocalDataChangesService = class LocalDataChangesService {\n /**\n * @hidden\n */\n constructor() {\n this.changes = new EventEmitter();\n }\n};\nLocalDataChangesService.ɵfac = function LocalDataChangesService_Factory(t) { return new (t || LocalDataChangesService)(); };\nLocalDataChangesService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LocalDataChangesService, factory: function (t) { return LocalDataChangesService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nconst FOCUS_ROOT_ACTIVE = new InjectionToken('focus-root-initial-active-state');\n/**\n * @hidden\n */\nlet FocusRoot = class 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 = function FocusRoot_Factory(t) { return new (t || FocusRoot)(ɵngcc0.ɵɵinject(FOCUS_ROOT_ACTIVE, 8)); };\nFocusRoot.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FocusRoot, factory: function (t) { return FocusRoot.ɵfac(t); } });\nFocusRoot = __decorate([ __param(0, Optional()), __param(0, Inject(FOCUS_ROOT_ACTIVE)),\n __metadata(\"design:paramtypes\", [Boolean])\n], FocusRoot);\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 = (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\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 */\nlet FocusableDirective = class 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 = function FocusableDirective_Factory(t) { return new (t || FocusableDirective)(ɵngcc0.ɵɵdirectiveInject(CELL_CONTEXT, 12), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nFocusableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FocusableDirective, selectors: [[\"\", \"kendoGridFocusable\", \"\"], [\"\", \"kendoGridEditCommand\", \"\"], [\"\", \"kendoGridRemoveCommand\", \"\"], [\"\", \"kendoGridSaveCommand\", \"\"], [\"\", \"kendoGridCancelCommand\", \"\"], [\"\", \"kendoGridSelectionCheckbox\", \"\"]], inputs: { enabled: [\"kendoGridFocusable\", \"enabled\"] } });\n__decorate([\n Input('kendoGridFocusable'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FocusableDirective.prototype, \"enabled\", null);\nFocusableDirective = __decorate([ __param(0, Optional()), __param(0, Inject(CELL_CONTEXT)), __param(0, SkipSelf()),\n __metadata(\"design:paramtypes\", [Object, ElementRef,\n Renderer2])\n], FocusableDirective);\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\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 `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 */\nlet EditService = class 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); // tslint:disable-line:align\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 = function EditService_Factory(t) { return new (t || EditService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nEditService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: EditService, factory: function (t) { return EditService.ɵfac(t); } });\nEditService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], EditService);\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 */\nlet GroupsService = class GroupsService {\n /**\n * @hidden\n */\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 = function GroupsService_Factory(t) { return new (t || GroupsService)(); };\nGroupsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: GroupsService, factory: function (t) { return GroupsService.ɵfac(t); } });\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}\nPagerContextService.ɵfac = function PagerContextService_Factory(t) { return new (t || PagerContextService)(); };\nPagerContextService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PagerContextService, factory: PagerContextService.ɵfac });\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 */\nlet DetailsService = class DetailsService {\n /**\n * @hidden\n */\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 = function DetailsService_Factory(t) { return new (t || DetailsService)(); };\nDetailsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DetailsService, factory: function (t) { return DetailsService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet ScrollRequestService = class ScrollRequestService {\n /**\n * @hidden\n */\n constructor() {\n this.requests = new Subject();\n }\n scrollTo(request) {\n this.requests.next(request);\n }\n};\nScrollRequestService.ɵfac = function ScrollRequestService_Factory(t) { return new (t || ScrollRequestService)(); };\nScrollRequestService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ScrollRequestService, factory: function (t) { return ScrollRequestService.ɵfac(t); } });\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 */\nlet NavigationService = class 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(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.cancelCell();\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 = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DomEventsService), ɵngcc0.ɵɵinject(PagerContextService), ɵngcc0.ɵɵinject(ScrollRequestService), ɵngcc0.ɵɵinject(GroupsService), ɵngcc0.ɵɵinject(DetailsService), ɵngcc0.ɵɵinject(FocusRoot), ɵngcc0.ɵɵinject(EditService), ɵngcc0.ɵɵinject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵinject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵinject(FocusableDirective, 8)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __param(10, Optional()),\n __metadata(\"design:paramtypes\", [NgZone,\n DomEventsService,\n PagerContextService,\n ScrollRequestService,\n GroupsService,\n DetailsService,\n FocusRoot,\n EditService,\n ChangeDetectorRef,\n LocalizationService,\n FocusableDirective])\n], NavigationService);\n\n/**\n * @hidden\n */\nlet SelectionService = class 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$$1 = this.getIterator();\n this._selectAllState = true;\n let item = iterator$$1.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$$1.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$$1 = this.getIterator();\n if (this.selectAllChecked && this.isSelected(index)) {\n this.selectAllChecked = false;\n }\n let item = iterator$$1.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$$1.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$$1 = this.getIterator();\n let item = iterator$$1.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$$1.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$$1 = this.getIterator();\n let next = iterator$$1.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$$1.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$$1 = this.getIterator();\n let next = iterator$$1.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$$1.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$$1 = this.getIterator();\n let next = iterator$$1.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$$1.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 = function SelectionService_Factory(t) { return new (t || SelectionService)(ɵngcc0.ɵɵinject(DomEventsService), ɵngcc0.ɵɵinject(LocalDataChangesService), ɵngcc0.ɵɵinject(NavigationService)); };\nSelectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SelectionService, factory: function (t) { return SelectionService.ɵfac(t); } });\nSelectionService = __decorate([ __metadata(\"design:paramtypes\", [DomEventsService,\n LocalDataChangesService,\n NavigationService])\n], SelectionService);\n\n/**\n * @hidden\n */\nlet CellSelectionService = class 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$$1 = this.getIterator();\n let item = iterator$$1.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$$1.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$$1 = this.getIterator();\n let item = iterator$$1.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$$1.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$$1 = this.getIterator();\n let next = iterator$$1.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$$1.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 = function CellSelectionService_Factory(t) { return new (t || CellSelectionService)(ɵngcc0.ɵɵinject(DomEventsService), ɵngcc0.ɵɵinject(LocalDataChangesService), ɵngcc0.ɵɵinject(NavigationService)); };\nCellSelectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CellSelectionService, factory: function (t) { return CellSelectionService.ɵfac(t); } });\nCellSelectionService = __decorate([ __metadata(\"design:paramtypes\", [DomEventsService,\n LocalDataChangesService,\n NavigationService])\n], CellSelectionService);\n\nconst createElement = () => {\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 */\nlet GridMarqueeDirective = class 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 this.cellSelection.active ? this.cellSelection.dragging = false : this.selection.dragging = false;\n }\n initMarquee() {\n if (!this.marqueeElement) {\n this.marqueeElement = createElement();\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 = function GridMarqueeDirective_Factory(t) { return new (t || GridMarqueeDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.DraggableDirective), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(CellSelectionService), ɵngcc0.ɵɵdirectiveInject(DomEventsService)); };\nGridMarqueeDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridMarqueeDirective, selectors: [[\"\", \"kendoGridSelectionMarquee\", \"\"]], hostVars: 4, hostBindings: function GridMarqueeDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"-webkit-user-select\", ctx.webkitUserSelection);\n ɵngcc0.ɵɵclassProp(\"user-select-none\", ctx.userSelection);\n } } });\n__decorate([\n HostBinding('style.-webkit-user-select'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], GridMarqueeDirective.prototype, \"webkitUserSelection\", null);\n__decorate([\n HostBinding('class.user-select-none'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GridMarqueeDirective.prototype, \"userSelection\", null);\nGridMarqueeDirective = __decorate([ __metadata(\"design:paramtypes\", [DraggableDirective,\n SelectionService,\n CellSelectionService,\n DomEventsService])\n], GridMarqueeDirective);\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: 1635941151,\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 */\nlet CellTemplateDirective = class CellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nCellTemplateDirective.ɵfac = function CellTemplateDirective_Factory(t) { return new (t || CellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CellTemplateDirective, selectors: [[\"\", \"kendoGridCellTemplate\", \"\"]] });\nCellTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], CellTemplateDirective);\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 */\nlet GroupHeaderTemplateDirective = class GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupHeaderTemplateDirective.ɵfac = function GroupHeaderTemplateDirective_Factory(t) { return new (t || GroupHeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nGroupHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupHeaderTemplateDirective, selectors: [[\"\", \"kendoGridGroupHeaderTemplate\", \"\"]] });\nGroupHeaderTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupHeaderTemplateDirective);\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 */\nlet GroupHeaderColumnTemplateDirective = class GroupHeaderColumnTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupHeaderColumnTemplateDirective.ɵfac = function GroupHeaderColumnTemplateDirective_Factory(t) { return new (t || GroupHeaderColumnTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nGroupHeaderColumnTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupHeaderColumnTemplateDirective, selectors: [[\"\", \"kendoGridGroupHeaderColumnTemplate\", \"\"]] });\nGroupHeaderColumnTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupHeaderColumnTemplateDirective);\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 */\nlet EditTemplateDirective = class EditTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nEditTemplateDirective.ɵfac = function EditTemplateDirective_Factory(t) { return new (t || EditTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nEditTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditTemplateDirective, selectors: [[\"\", \"kendoGridEditTemplate\", \"\"]] });\nEditTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], EditTemplateDirective);\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 */\nlet GroupFooterTemplateDirective = class GroupFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nGroupFooterTemplateDirective.ɵfac = function GroupFooterTemplateDirective_Factory(t) { return new (t || GroupFooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nGroupFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupFooterTemplateDirective, selectors: [[\"\", \"kendoGridGroupFooterTemplate\", \"\"]] });\nGroupFooterTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], GroupFooterTemplateDirective);\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 */\nlet HeaderTemplateDirective = class HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nHeaderTemplateDirective.ɵfac = function HeaderTemplateDirective_Factory(t) { return new (t || HeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: HeaderTemplateDirective, selectors: [[\"\", \"kendoGridHeaderTemplate\", \"\"]] });\nHeaderTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], HeaderTemplateDirective);\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 */\nlet FooterTemplateDirective = class FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFooterTemplateDirective.ɵfac = function FooterTemplateDirective_Factory(t) { return new (t || FooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FooterTemplateDirective, selectors: [[\"\", \"kendoGridFooterTemplate\", \"\"]] });\nFooterTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], FooterTemplateDirective);\n\n/* tslint:disable:max-line-length */\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 */\nlet ColumnMenuTemplateDirective = class ColumnMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nColumnMenuTemplateDirective.ɵfac = function ColumnMenuTemplateDirective_Factory(t) { return new (t || ColumnMenuTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nColumnMenuTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnMenuTemplateDirective, selectors: [[\"\", \"kendoGridColumnMenuTemplate\", \"\"]] });\nColumnMenuTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ColumnMenuTemplateDirective);\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$1 {\n constructor(parent) {\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 /**\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 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 if (parent && !isColumnContainer(parent)) {\n throw new Error('Columns can be nested only inside ColumnGroupComponent');\n }\n }\n /**\n * The width of the column (in pixels).\n */\n set width(value) {\n this._width = parseInt(value, 10);\n }\n get width() { return this._width; }\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$1.ɵfac = function ColumnBase$1_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nColumnBase$1.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnBase$1, contentQueries: function ColumnBase$1_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnMenuTemplateDirective, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplates = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columnMenuTemplates = _t);\n } }, inputs: { resizable: \"resizable\", reorderable: \"reorderable\", minResizableWidth: \"minResizableWidth\", locked: \"locked\", sticky: \"sticky\", lockable: \"lockable\", stickable: \"stickable\", columnMenu: \"columnMenu\", includeInChooser: \"includeInChooser\", width: \"width\", title: \"title\", autoSize: \"autoSize\", hidden: \"hidden\", media: \"media\", style: \"style\", headerStyle: \"headerStyle\", filterStyle: \"filterStyle\", footerStyle: \"footerStyle\", cssClass: [\"class\", \"cssClass\"], headerClass: \"headerClass\", filterClass: \"filterClass\", footerClass: \"footerClass\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"resizable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"reorderable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ColumnBase$1.prototype, \"minResizableWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnBase$1.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColumnBase$1.prototype, \"width\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"autoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"locked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"sticky\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"hidden\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnBase$1.prototype, \"media\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"lockable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"stickable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"columnMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnBase$1.prototype, \"includeInChooser\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnBase$1.prototype, \"style\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnBase$1.prototype, \"headerStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnBase$1.prototype, \"filterStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnBase$1.prototype, \"footerStyle\", void 0);\n__decorate([\n Input('class'),\n __metadata(\"design:type\", Object)\n], ColumnBase$1.prototype, \"cssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnBase$1.prototype, \"headerClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnBase$1.prototype, \"filterClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnBase$1.prototype, \"footerClass\", void 0);\n__decorate([\n ContentChildren(HeaderTemplateDirective, { descendants: false }),\n __metadata(\"design:type\", QueryList)\n], ColumnBase$1.prototype, \"headerTemplates\", void 0);\n__decorate([\n ContentChild(FooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", FooterTemplateDirective)\n], ColumnBase$1.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChildren(ColumnMenuTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], ColumnBase$1.prototype, \"columnMenuTemplates\", void 0);\n\n/**\n * Represents the filter-cell template ([see example]({% slug builtinfiltertemplate_grid %}#toc-customizing-filter-rows)).\n */\nlet FilterCellTemplateDirective = class FilterCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFilterCellTemplateDirective.ɵfac = function FilterCellTemplateDirective_Factory(t) { return new (t || FilterCellTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nFilterCellTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterCellTemplateDirective, selectors: [[\"\", \"kendoGridFilterCellTemplate\", \"\"]] });\nFilterCellTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], FilterCellTemplateDirective);\n\n/**\n * Represents the filter-menu template\n * ([see example]({% slug builtinfiltertemplate_grid %}#toc-customizing-filter-menus)).\n */\nlet FilterMenuTemplateDirective = class FilterMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFilterMenuTemplateDirective.ɵfac = function FilterMenuTemplateDirective_Factory(t) { return new (t || FilterMenuTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nFilterMenuTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterMenuTemplateDirective, selectors: [[\"\", \"kendoGridFilterMenuTemplate\", \"\"]] });\nFilterMenuTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], FilterMenuTemplateDirective);\n\nvar ColumnComponent_1;\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 */\nlet ColumnComponent = ColumnComponent_1 = class ColumnComponent extends ColumnBase$1 {\n constructor(parent) {\n super(parent);\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 = function ColumnComponent_Factory(t) { return new (t || ColumnComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnBase$1, 13)); };\nColumnComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnComponent, selectors: [[\"kendo-grid-column\"]], contentQueries: function ColumnComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupHeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupHeaderColumnTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, GroupFooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, EditTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FilterCellTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FilterMenuTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupHeaderTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupHeaderColumnTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.groupFooterTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.editTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.filterCellTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.filterMenuTemplate = _t.first);\n } }, inputs: { sortable: \"sortable\", groupable: \"groupable\", editor: \"editor\", filter: \"filter\", filterable: \"filterable\", editable: \"editable\", field: \"field\", format: \"format\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => ColumnComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ColumnComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnComponent.prototype, \"field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnComponent.prototype, \"sortable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnComponent.prototype, \"groupable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnComponent.prototype, \"editor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnComponent.prototype, \"editable\", void 0);\n__decorate([\n ContentChild(CellTemplateDirective, { static: false }),\n __metadata(\"design:type\", CellTemplateDirective)\n], ColumnComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChild(GroupHeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupHeaderTemplateDirective)\n], ColumnComponent.prototype, \"groupHeaderTemplate\", void 0);\n__decorate([\n ContentChild(GroupHeaderColumnTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupHeaderColumnTemplateDirective)\n], ColumnComponent.prototype, \"groupHeaderColumnTemplate\", void 0);\n__decorate([\n ContentChild(GroupFooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", GroupFooterTemplateDirective)\n], ColumnComponent.prototype, \"groupFooterTemplate\", void 0);\n__decorate([\n ContentChild(EditTemplateDirective, { static: false }),\n __metadata(\"design:type\", EditTemplateDirective)\n], ColumnComponent.prototype, \"editTemplate\", void 0);\n__decorate([\n ContentChild(FilterCellTemplateDirective, { static: false }),\n __metadata(\"design:type\", FilterCellTemplateDirective)\n], ColumnComponent.prototype, \"filterCellTemplate\", void 0);\n__decorate([\n ContentChild(FilterMenuTemplateDirective, { static: false }),\n __metadata(\"design:type\", FilterMenuTemplateDirective)\n], ColumnComponent.prototype, \"filterMenuTemplate\", void 0);\nColumnComponent = ColumnComponent_1 = __decorate([ __param(0, SkipSelf()), __param(0, Host()), __param(0, Optional()),\n __metadata(\"design:paramtypes\", [ColumnBase$1])\n], ColumnComponent);\n\nvar SpanColumnComponent_1;\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 */\nlet SpanColumnComponent = SpanColumnComponent_1 = class SpanColumnComponent extends ColumnBase$1 {\n constructor(parent) {\n super(parent);\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 this._locked = false;\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 = function SpanColumnComponent_Factory(t) { return new (t || SpanColumnComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnBase$1, 13)); };\nSpanColumnComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SpanColumnComponent, selectors: [[\"kendo-grid-span-column\"]], contentQueries: function SpanColumnComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, EditTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.editTemplate = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.childColumns = _t);\n } }, inputs: { editable: \"editable\", locked: \"locked\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => SpanColumnComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SpanColumnComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(CellTemplateDirective, { descendants: false }),\n __metadata(\"design:type\", QueryList)\n], SpanColumnComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChildren(EditTemplateDirective, { descendants: false }),\n __metadata(\"design:type\", QueryList)\n], SpanColumnComponent.prototype, \"editTemplate\", void 0);\n__decorate([\n ContentChildren(ColumnComponent),\n __metadata(\"design:type\", QueryList)\n], SpanColumnComponent.prototype, \"childColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], SpanColumnComponent.prototype, \"editable\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], SpanColumnComponent.prototype, \"locked\", null);\nSpanColumnComponent = SpanColumnComponent_1 = __decorate([ __param(0, SkipSelf()), __param(0, Host()), __param(0, Optional()),\n __metadata(\"design:paramtypes\", [ColumnBase$1])\n], SpanColumnComponent);\n\n/**\n * @hidden\n */\nconst expandColumns = (columns) => (columns.reduce((acc, column) => acc.concat(isSpanColumnComponent(column) ? column.childrenArray : [column]), []) // tslint:disable-line:align\n);\n/**\n * @hidden\n */\nconst expandColumnsWithSpan = (columns) => (columns.reduce((acc, column) => acc.concat(isSpanColumnComponent(column) ?\n [column].concat(column.childrenArray) :\n [column]), []) // tslint:disable-line:align\n);\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');\n// tslint:disable-next-line:max-line-length\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); // tslint:disable-line:align\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 = (column) => isTruthy(column.parent) && isSpanColumnComponent(column.parent);\n\nvar ColumnGroupComponent_1;\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 */\nlet ColumnGroupComponent = ColumnGroupComponent_1 = class ColumnGroupComponent extends ColumnBase$1 {\n constructor(parent) {\n super(parent);\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 = function ColumnGroupComponent_Factory(t) { return new (t || ColumnGroupComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnBase$1, 13)); };\nColumnGroupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnGroupComponent, selectors: [[\"kendo-grid-column-group\"]], contentQueries: function ColumnGroupComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnBase$1, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => ColumnGroupComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ColumnGroupComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(ColumnBase$1),\n __metadata(\"design:type\", QueryList)\n], ColumnGroupComponent.prototype, \"children\", void 0);\nColumnGroupComponent = ColumnGroupComponent_1 = __decorate([ __param(0, SkipSelf()), __param(0, Host()), __param(0, Optional()),\n __metadata(\"design:paramtypes\", [ColumnBase$1])\n], ColumnGroupComponent);\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 */\nlet DetailTemplateDirective = class 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 = function DetailTemplateDirective_Factory(t) { return new (t || DetailTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDetailTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DetailTemplateDirective, selectors: [[\"\", \"kendoGridDetailTemplate\", \"\"]], inputs: { showIf: [\"kendoGridDetailTemplateShowIf\", \"showIf\"] } });\n__decorate([\n Input(\"kendoGridDetailTemplateShowIf\"),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], DetailTemplateDirective.prototype, \"showIf\", null);\nDetailTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DetailTemplateDirective);\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 */\nlet BrowserSupportService = class 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 = function BrowserSupportService_Factory(t) { return new (t || BrowserSupportService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc0.ChangeDetectorRef)); };\nBrowserSupportService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BrowserSupportService, factory: function (t) { return BrowserSupportService.ɵfac(t); } });\nBrowserSupportService = __decorate([ __metadata(\"design:paramtypes\", [NgZone, ChangeDetectorRef])\n], BrowserSupportService);\n\n/* tslint:disable:use-life-cycle-interface */\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}, []) // tslint:disable-line:align\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$1 = (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 //tslint:disable-next-line:no-use-before-declare\n return new GroupIterator(data, footers, level, dataIndex, parentGroupIndex, groupIndex, parentGroup);\n }\n //tslint:disable-next-line:no-use-before-declare\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$1(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$$1 = this.innerIterator(group);\n const result = iterator$$1.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$1(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 */\nclass Selection {\n constructor(grid, cd) {\n this.grid = grid;\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.init();\n }\n init() {\n if (!isPresent(this.grid.rowSelected)) {\n this.grid.rowSelected = (row) => {\n return this.selectedKeys.indexOf(this.getItemKey(row)) >= 0;\n };\n }\n if (!isPresent(this.grid.cellSelected)) {\n this.grid.cellSelected = (row, column, colIndex) => {\n const contender = this.getSelectionItem(row, column, colIndex);\n return {\n selected: this.selectedKeys.some(item => item.columnKey === contender.columnKey && item.itemKey === contender.itemKey),\n item: contender\n };\n };\n }\n this.selectionChangeSubscription = this.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.selectedKeys = [];\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 const itemIndex = this.selectedKeys.indexOf(itemKey);\n if (itemIndex >= 0) {\n this.selectedKeys.splice(itemIndex, 1);\n }\n });\n if (this.grid.selectableSettings.mode === \"single\" && this.selectedKeys.length > 0) {\n this.reset();\n }\n selection.selectedRows.forEach((item) => {\n const itemKey = this.getItemKey(item);\n if (this.selectedKeys.indexOf(itemKey) < 0) {\n this.selectedKeys.push(itemKey);\n }\n });\n }\n else {\n selection.deselectedCells.forEach((item) => {\n const itemIndex = this.getCellSelectionItemIndex(item);\n if (itemIndex >= 0) {\n this.selectedKeys.splice(itemIndex, 1);\n }\n });\n if (this.grid.selectableSettings.mode === \"single\" && this.selectedKeys.length > 0) {\n this.reset();\n }\n selection.selectedCells.forEach((item) => {\n const itemIndex = this.getCellSelectionItemIndex(item);\n if (itemIndex < 0) {\n this.selectedKeys.push(item);\n }\n });\n }\n this.cd.markForCheck();\n this.selectedKeysChange.emit(this.selectedKeys);\n }\n getCellSelectionItemIndex(item) {\n return this.selectedKeys.findIndex(selectedItem => selectedItem.itemKey === item.itemKey && selectedItem.columnKey === item.columnKey);\n }\n}\nSelection.ɵfac = function Selection_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSelection.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Selection, inputs: { selectedKeys: \"selectedKeys\", selectionKey: [\"kendoGridSelectBy\", \"selectionKey\"], columnKey: \"columnKey\" }, outputs: { selectedKeysChange: \"selectedKeysChange\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], Selection.prototype, \"selectedKeys\", void 0);\n__decorate([\n Input(\"kendoGridSelectBy\"),\n __metadata(\"design:type\", Object)\n], Selection.prototype, \"selectionKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], Selection.prototype, \"columnKey\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], Selection.prototype, \"selectedKeysChange\", void 0);\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$$1 = 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$$1.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$$1], [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$$1 = filterHierarchy(column.childrenArray, predicate);\n if (children$$1.length) {\n result.push(column, ...children$$1);\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}\nGroupInfoService.ɵfac = function GroupInfoService_Factory(t) { return new (t || GroupInfoService)(); };\nGroupInfoService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: GroupInfoService, factory: GroupInfoService.ɵfac });\n\n/**\n * @hidden\n */\nlet ChangeNotificationService = class 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 = function ChangeNotificationService_Factory(t) { return new (t || ChangeNotificationService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nChangeNotificationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ChangeNotificationService, factory: function (t) { return ChangeNotificationService.ɵfac(t); } });\nChangeNotificationService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], ChangeNotificationService);\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 */\nlet NoRecordsTemplateDirective = class NoRecordsTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNoRecordsTemplateDirective.ɵfac = function NoRecordsTemplateDirective_Factory(t) { return new (t || NoRecordsTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nNoRecordsTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NoRecordsTemplateDirective, selectors: [[\"\", \"kendoGridNoRecordsTemplate\", \"\"]] });\nNoRecordsTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], NoRecordsTemplateDirective);\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$1 = (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 = 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$1(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(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 */\nlet MenuTabbingService = class MenuTabbingService {\n /**\n * @hidden\n */\n constructor() {\n this.isColumnMenu = false;\n this.isPopupOpen = false;\n }\n};\nMenuTabbingService.ɵfac = function MenuTabbingService_Factory(t) { return new (t || MenuTabbingService)(); };\nMenuTabbingService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MenuTabbingService, factory: function (t) { return MenuTabbingService.ɵfac(t); } });\n\n/**\n * Represents a service to set the filter descriptor\n * ([see example]({% slug reusablecustomfilters_grid %})).\n */\nlet FilterService = class 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 = function FilterService_Factory(t) { return new (t || FilterService)(ɵngcc0.ɵɵinject(MenuTabbingService, 8)); };\nFilterService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FilterService, factory: function (t) { return FilterService.ɵfac(t); } });\nFilterService = __decorate([\n __param(0, Optional()),\n __metadata(\"design:paramtypes\", [MenuTabbingService])\n], FilterService);\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 */\nlet PagerTemplateDirective = class PagerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nPagerTemplateDirective.ɵfac = function PagerTemplateDirective_Factory(t) { return new (t || PagerTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nPagerTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PagerTemplateDirective, selectors: [[\"\", \"kendoPagerTemplate\", \"\"]] });\nPagerTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], PagerTemplateDirective);\n\n/**\n * @hidden\n */\nlet PDFService = class PDFService {\n /**\n * @hidden\n */\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 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 = function PDFService_Factory(t) { return new (t || PDFService)(); };\nPDFService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PDFService, factory: function (t) { return PDFService.ɵfac(t); } });\n\n/**\n * Arguments for the `pdfExport` event.\n */\nclass PDFExportEvent extends PreventableEvent {\n}\n\n/**\n * @hidden\n */\nlet SuspendService = class SuspendService {\n /**\n * @hidden\n */\n constructor() {\n this.scroll = false;\n }\n};\nSuspendService.ɵfac = function SuspendService_Factory(t) { return new (t || SuspendService)(); };\nSuspendService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SuspendService, factory: function (t) { return SuspendService.ɵfac(t); } });\n\n/* tslint:disable: object-literal-sort-keys */\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);\n/* tslint:enable: object-literal-sort-keys */\nconst browserMatchMedia = (media) => window.matchMedia(media).matches;\n/**\n * @hidden\n */\nlet ResponsiveService = class ResponsiveService {\n /**\n * @hidden\n */\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 = function ResponsiveService_Factory(t) { return new (t || ResponsiveService)(); };\nResponsiveService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ResponsiveService, factory: function (t) { return ResponsiveService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet ExcelService = class ExcelService {\n /**\n * @hidden\n */\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 = function ExcelService_Factory(t) { return new (t || ExcelService)(); };\nExcelService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ExcelService, factory: function (t) { return ExcelService.ɵfac(t); } });\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 */\nlet ToolbarTemplateDirective = class 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 = function ToolbarTemplateDirective_Factory(t) { return new (t || ToolbarTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nToolbarTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ToolbarTemplateDirective, selectors: [[\"\", \"kendoGridToolbarTemplate\", \"\"]], inputs: { position: \"position\" } });\n__decorate([\n Input(\"position\"),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolbarTemplateDirective.prototype, \"position\", null);\nToolbarTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ToolbarTemplateDirective);\n\n/**\n * @hidden\n */\nlet ScrollSyncService = class 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 = function ScrollSyncService_Factory(t) { return new (t || ScrollSyncService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nScrollSyncService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ScrollSyncService, factory: function (t) { return ScrollSyncService.ɵfac(t); } });\nScrollSyncService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], ScrollSyncService);\n\n/**\n * @hidden\n */\nlet ResizeService = class ResizeService {\n /**\n * @hidden\n */\n constructor() {\n this.resizeSubscription = new Subscription(() => { });\n this.dispatcher = new Subject();\n // tslint:disable-next-line:member-ordering\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 = function ResizeService_Factory(t) { return new (t || ResizeService)(); };\nResizeService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ResizeService, factory: function (t) { return ResizeService.ɵfac(t); } });\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); // tslint:disable-line:align\n/**\n * @hidden\n */\nlet ColumnResizingService = class ColumnResizingService {\n /**\n * @hidden\n */\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$$1) {\n this.resizedColumns.push(state$$1);\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(...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 = function ColumnResizingService_Factory(t) { return new (t || ColumnResizingService)(); };\nColumnResizingService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColumnResizingService, factory: function (t) { return ColumnResizingService.ɵfac(t); } });\n\n/**\n * @hidden\n */\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 */\nlet SinglePopupService = class 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 = function SinglePopupService_Factory(t) { return new (t || SinglePopupService)(ɵngcc0.ɵɵinject(ɵngcc3.PopupService), ɵngcc0.ɵɵinject(ɵngcc0.Renderer2), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ScrollSyncService), ɵngcc0.ɵɵinject(ɵngcc1.LocalizationService)); };\nSinglePopupService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SinglePopupService, factory: function (t) { return SinglePopupService.ɵfac(t); } });\nSinglePopupService = __decorate([ __metadata(\"design:paramtypes\", [PopupService,\n Renderer2,\n NgZone,\n ScrollSyncService,\n LocalizationService])\n], SinglePopupService);\n\n/* tslint: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$2 = (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 */\nlet DragAndDropService = class DragAndDropService {\n /**\n * @hidden\n */\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$2.bind(null, element);\n return this.register.find(({ element: { nativeElement } }) => comparer(nativeElement));\n }\n};\nDragAndDropService.ɵfac = function DragAndDropService_Factory(t) { return new (t || DragAndDropService)(); };\nDragAndDropService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DragAndDropService, factory: function (t) { return DragAndDropService.ɵfac(t); } });\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 */\nlet DragHintService = class 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 = function DragHintService_Factory(t) { return new (t || DragHintService)(ɵngcc0.ɵɵinject(ɵngcc4.DomSanitizer)); };\nDragHintService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DragHintService, factory: function (t) { return DragHintService.ɵfac(t); } });\nDragHintService = __decorate([ __metadata(\"design:paramtypes\", [DomSanitizer])\n], DragHintService);\n\n/**\n * @hidden\n */\nlet DropCueService = class 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 = function DropCueService_Factory(t) { return new (t || DropCueService)(); };\nDropCueService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DropCueService, factory: function (t) { return DropCueService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet ColumnReorderService = class ColumnReorderService {\n /**\n * @hidden\n */\n constructor() {\n this.changes = new EventEmitter();\n }\n reorder(e) {\n this.changes.emit(e);\n }\n};\nColumnReorderService.ɵfac = function ColumnReorderService_Factory(t) { return new (t || ColumnReorderService)(); };\nColumnReorderService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColumnReorderService, factory: function (t) { return ColumnReorderService.ɵfac(t); } });\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\n// Incremented each time the service is instantiated.\nlet sequence = 0;\n/**\n * @hidden\n */\nlet IdService = class IdService {\n constructor() {\n this.prefix = `k-grid${sequence++}`;\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 = function IdService_Factory(t) { return new (t || IdService)(); };\nIdService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: IdService, factory: function (t) { return IdService.ɵfac(t); } });\nIdService = __decorate([ __metadata(\"design:paramtypes\", [])\n], IdService);\n\nconst NO_STICKY = { left: '0px', right: '0px' };\n/**\n * @hidden\n */\nlet ColumnInfoService = class ColumnInfoService {\n /**\n * @hidden\n */\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 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 = function ColumnInfoService_Factory(t) { return new (t || ColumnInfoService)(); };\nColumnInfoService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColumnInfoService, factory: function (t) { return ColumnInfoService.ɵfac(t); } });\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}\nSortService.ɵfac = function SortService_Factory(t) { return new (t || SortService)(); };\nSortService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SortService, factory: SortService.ɵfac });\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 */\nlet CellLoadingTemplateDirective = class CellLoadingTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nCellLoadingTemplateDirective.ɵfac = function CellLoadingTemplateDirective_Factory(t) { return new (t || CellLoadingTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nCellLoadingTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CellLoadingTemplateDirective, selectors: [[\"\", \"kendoGridCellLoadingTemplate\", \"\"]] });\nCellLoadingTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], CellLoadingTemplateDirective);\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$$1) => (service.changes.pipe(filter(({ group }) => isPresent(group)))\n .subscribe((x) => x.expand ? expandEmitter.emit(map$$1(x)) : collapseEmitter.emit(map$$1(x))));\nconst handleExpandCollapseDetailsService = (service, expandEmitter, collapseEmitter, map$$1) => (service.changes.pipe(filter(({ dataItem }) => isPresent(dataItem)))\n .subscribe((x) => x.expand ? expandEmitter.emit(map$$1(x)) : collapseEmitter.emit(map$$1(x))));\nconst isInEditedCell = (element, gridElement) => closest(element, matchesClasses('k-grid-edit-cell')) &&\n closest(element, matchesNodeName('kendo-grid')) === gridElement;\nconst ɵ5$1 = EMPTY_CELL_CONTEXT;\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 */\nlet GridComponent = class 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) {\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 /**\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.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 (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 loadingTemplate() {\n if (this._customLoadingTemplate) {\n return this._customDetailTemplate;\n }\n return this.loadingTemplateChildren ? this.loadingTemplateChildren.first : undefined;\n }\n set loadingTemplate(loadingTemplate) {\n this._customLoadingTemplate = 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(\"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(\"virtualColumns\", changes)) {\n this.viewportColumns = this.leafViewportColumns = null;\n }\n if (isChanged(\"height\", changes, false)) {\n this.renderer.setStyle(this.wrapper.nativeElement, 'height', `${this.height}px`);\n }\n if (isChanged(\"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); // tslint:disable-line:align\n }\n if (isChanged(\"scrollable\", changes) && this.isScrollable) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.attachScrollSync());\n }\n if (isChanged(\"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('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, 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 (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$$1 => ({\n filter: filter$$1, 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 // tslint: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$1(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 = function GridComponent_Factory(t) { return new (t || GridComponent)(ɵngcc0.ɵɵdirectiveInject(BrowserSupportService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(CellSelectionService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GroupInfoService), ɵngcc0.ɵɵdirectiveInject(GroupsService), ɵngcc0.ɵɵdirectiveInject(ChangeNotificationService), ɵngcc0.ɵɵdirectiveInject(DetailsService), ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(FilterService), ɵngcc0.ɵɵdirectiveInject(PDFService), ɵngcc0.ɵɵdirectiveInject(ResponsiveService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ExcelService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ScrollSyncService), ɵngcc0.ɵɵdirectiveInject(DomEventsService), ɵngcc0.ɵɵdirectiveInject(ColumnResizingService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ColumnReorderService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(SortService), ɵngcc0.ɵɵdirectiveInject(ScrollRequestService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nGridComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GridComponent, selectors: [[\"kendo-grid\"]], contentQueries: function GridComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnBase$1, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DetailTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellLoadingTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NoRecordsTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, PagerTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ToolbarTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnMenuTemplateDirective, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columns = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.detailTemplateChildren = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadingTemplateChildren = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.noRecordsTemplateChildren = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.pagerTemplateChildren = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplateChildren = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columnMenuTemplates = _t);\n } }, viewQuery: function GridComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 5);\n ɵngcc0.ɵɵviewQuery(_c2, 7);\n ɵngcc0.ɵɵviewQuery(_c3, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.lockedHeader = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.header = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ariaRoot = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footer = _t);\n } }, hostVars: 11, hostBindings: function GridComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-grid\", ctx.hostClasses)(\"k-grid-lockedcolumns\", ctx.lockedClasses)(\"k-grid-virtual\", ctx.virtualClasses)(\"k-grid-no-scrollbar\", ctx.noScrollbarClass);\n } }, inputs: { data: \"data\", scrollable: \"scrollable\", selectable: \"selectable\", trackBy: \"trackBy\", virtualColumns: \"virtualColumns\", filterable: \"filterable\", sortable: \"sortable\", pageable: \"pageable\", groupable: \"groupable\", navigable: \"navigable\", autoSize: \"autoSize\", resizable: \"resizable\", reorderable: \"reorderable\", loading: \"loading\", columnMenu: \"columnMenu\", hideHeader: \"hideHeader\", skip: \"skip\", sort: \"sort\", group: \"group\", navigatable: \"navigatable\", rowClass: \"rowClass\", rowSticky: \"rowSticky\", rowSelected: \"rowSelected\", cellSelected: \"cellSelected\", isDetailExpanded: \"isDetailExpanded\", isGroupExpanded: \"isGroupExpanded\", pageSize: \"pageSize\", height: \"height\", rowHeight: \"rowHeight\", detailRowHeight: \"detailRowHeight\", filter: \"filter\" }, 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\" }, exportAs: [\"kendoGrid\"], features: [ɵngcc0.ɵɵProvidersFeature([\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: ɵ5$1\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 ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 11, vars: 16, consts: function () { let i18n_4; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label visible in the Grid group panel when it is empty\n * @meaning kendo.grid.groupPanelEmpty\n */\n const MSG_EXTERNAL_1430663748859427158$$DIST_FESM2015_INDEX_JS_5 = goog.getMsg(\"Drag a column header and drop it here to group by that column\");\n i18n_4 = MSG_EXTERNAL_1430663748859427158$$DIST_FESM2015_INDEX_JS_5;\n }\n else {\n i18n_4 = $localize `:kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty␟30bcb3a2fbc22fcab6ca805e74b90adb8ba1ae96␟1430663748859427158:Drag a column header and drop it here to group by that column`;\n } let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label visible in the Grid when there are no records\n * @meaning kendo.grid.noRecords\n */\n const MSG_EXTERNAL_1243399825085142134$$DIST_FESM2015_INDEX_JS_7 = goog.getMsg(\"No records available.\");\n i18n_6 = MSG_EXTERNAL_1243399825085142134$$DIST_FESM2015_INDEX_JS_7;\n }\n else {\n i18n_6 = $localize `:kendo.grid.noRecords|The label visible in the Grid when there are no records␟ff9cfd4bf3e40305db251f2b6961796c0550b4b0␟1243399825085142134:No records available.`;\n } let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the first page button in Grid pager\n * @meaning kendo.grid.pagerFirstPage\n */\n const MSG_EXTERNAL_5647145449685906398$$DIST_FESM2015_INDEX_JS_9 = goog.getMsg(\"Go to the first page\");\n i18n_8 = MSG_EXTERNAL_5647145449685906398$$DIST_FESM2015_INDEX_JS_9;\n }\n else {\n i18n_8 = $localize `:kendo.grid.pagerFirstPage|The label for the first page button in Grid pager␟b405dfc5ee42415daa08d54847d3010de1821111␟5647145449685906398:Go to the first page`;\n } let i18n_10; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the previous page button in Grid pager\n * @meaning kendo.grid.pagerPreviousPage\n */\n const MSG_EXTERNAL_6745088753482690847$$DIST_FESM2015_INDEX_JS_11 = goog.getMsg(\"Go to the previous page\");\n i18n_10 = MSG_EXTERNAL_6745088753482690847$$DIST_FESM2015_INDEX_JS_11;\n }\n else {\n i18n_10 = $localize `:kendo.grid.pagerPreviousPage|The label for the previous page button in Grid pager␟47aa4fe05f5a2577d3336971d7c44ce48802b860␟6745088753482690847:Go to the previous page`;\n } let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the next page button in Grid pager\n * @meaning kendo.grid.pagerNextPage\n */\n const MSG_EXTERNAL_5510985262435270859$$DIST_FESM2015_INDEX_JS_13 = goog.getMsg(\"Go to the next page\");\n i18n_12 = MSG_EXTERNAL_5510985262435270859$$DIST_FESM2015_INDEX_JS_13;\n }\n else {\n i18n_12 = $localize `:kendo.grid.pagerNextPage|The label for the next page button in Grid pager␟90031133fca899b4e491d9fc51128c1a184afb30␟5510985262435270859:Go to the next page`;\n } let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the last page button in Grid pager\n * @meaning kendo.grid.pagerLastPage\n */\n const MSG_EXTERNAL_4539768510520419313$$DIST_FESM2015_INDEX_JS_15 = goog.getMsg(\"Go to the last page\");\n i18n_14 = MSG_EXTERNAL_4539768510520419313$$DIST_FESM2015_INDEX_JS_15;\n }\n else {\n i18n_14 = $localize `:kendo.grid.pagerLastPage|The label for the last page button in Grid pager␟fe84f2ea868286ce03e50b6e55558c16d675c753␟4539768510520419313:Go to the last page`;\n } let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label before the current page number in the Grid pager\n * @meaning kendo.grid.pagerPage\n */\n const MSG_EXTERNAL_5228228287003939680$$DIST_FESM2015_INDEX_JS_17 = goog.getMsg(\"Page\");\n i18n_16 = MSG_EXTERNAL_5228228287003939680$$DIST_FESM2015_INDEX_JS_17;\n }\n else {\n i18n_16 = $localize `:kendo.grid.pagerPage|The label before the current page number in the Grid pager␟89c1f616c25bb610824cd8a26473a03921df48bd␟5228228287003939680:Page`;\n } let i18n_18; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label before the total pages number in the Grid pager\n * @meaning kendo.grid.pagerOf\n */\n const MSG_EXTERNAL_7004642096327889102$$DIST_FESM2015_INDEX_JS_19 = goog.getMsg(\"of\");\n i18n_18 = MSG_EXTERNAL_7004642096327889102$$DIST_FESM2015_INDEX_JS_19;\n }\n else {\n i18n_18 = $localize `:kendo.grid.pagerOf|The label before the total pages number in the Grid pager␟0c9abe48f5d4bd2cb51846712e41864fc64aad6a␟7004642096327889102:of`;\n } let i18n_20; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label after the total pages number in the Grid pager\n * @meaning kendo.grid.pagerItems\n */\n const MSG_EXTERNAL_700193548223931835$$DIST_FESM2015_INDEX_JS_21 = goog.getMsg(\"items\");\n i18n_20 = MSG_EXTERNAL_700193548223931835$$DIST_FESM2015_INDEX_JS_21;\n }\n else {\n i18n_20 = $localize `:kendo.grid.pagerItems|The label after the total pages number in the Grid pager␟7c1704d11bfb77340485acd891439c2b6c6616ca␟700193548223931835:items`;\n } let i18n_22; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the pager input in the Grid pager\n * @meaning kendo.grid.pagerPageNumberInputTitle\n */\n const MSG_EXTERNAL_2090461908134774363$$DIST_FESM2015_INDEX_JS_23 = goog.getMsg(\"Page Number\");\n i18n_22 = MSG_EXTERNAL_2090461908134774363$$DIST_FESM2015_INDEX_JS_23;\n }\n else {\n i18n_22 = $localize `:kendo.grid.pagerPageNumberInputTitle|The label for the pager input in the Grid pager␟f8bad8f2c7345e4fe531480e3034f7d3e954d383␟2090461908134774363:Page Number`;\n } let i18n_24; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the page size chooser in the Grid pager\n * @meaning kendo.grid.pagerItemsPerPage\n */\n const MSG_EXTERNAL_8838594644885628398$$DIST_FESM2015_INDEX_JS_25 = goog.getMsg(\"items per page\");\n i18n_24 = MSG_EXTERNAL_8838594644885628398$$DIST_FESM2015_INDEX_JS_25;\n }\n else {\n i18n_24 = $localize `:kendo.grid.pagerItemsPerPage|The label for the page size chooser in the Grid pager␟3331fe7ec45f299afaa4c1e08ea25c493eda9144␟8838594644885628398:items per page`;\n } let i18n_26; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter cell or icon\n * @meaning kendo.grid.filter\n */\n const MSG_EXTERNAL_7977992299945497789$$DIST_FESM2015_INDEX_JS_27 = goog.getMsg(\"Filter\");\n i18n_26 = MSG_EXTERNAL_7977992299945497789$$DIST_FESM2015_INDEX_JS_27;\n }\n else {\n i18n_26 = $localize `:kendo.grid.filter|The label of the filter cell or icon␟21a04b7b090dac60e0449cb6e435b7e879173c75␟7977992299945497789:Filter`;\n } let i18n_28; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the equal filter operator\n * @meaning kendo.grid.filterEqOperator\n */\n const MSG_EXTERNAL_4328959145426393682$$DIST_FESM2015_INDEX_JS_29 = goog.getMsg(\"Is equal to\");\n i18n_28 = MSG_EXTERNAL_4328959145426393682$$DIST_FESM2015_INDEX_JS_29;\n }\n else {\n i18n_28 = $localize `:kendo.grid.filterEqOperator|The text of the equal filter operator␟8b31e1604d10a2f8709dcb1ed5c237e33cffc135␟4328959145426393682:Is equal to`;\n } let i18n_30; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the not equal filter operator\n * @meaning kendo.grid.filterNotEqOperator\n */\n const MSG_EXTERNAL_8497658332767349737$$DIST_FESM2015_INDEX_JS_31 = goog.getMsg(\"Is not equal to\");\n i18n_30 = MSG_EXTERNAL_8497658332767349737$$DIST_FESM2015_INDEX_JS_31;\n }\n else {\n i18n_30 = $localize `:kendo.grid.filterNotEqOperator|The text of the not equal filter operator␟d46e14d35d89d2fadf5c852abf5557643510a013␟8497658332767349737:Is not equal to`;\n } let i18n_32; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the is null filter operator\n * @meaning kendo.grid.filterIsNullOperator\n */\n const MSG_EXTERNAL_1298299704757177797$$DIST_FESM2015_INDEX_JS_33 = goog.getMsg(\"Is null\");\n i18n_32 = MSG_EXTERNAL_1298299704757177797$$DIST_FESM2015_INDEX_JS_33;\n }\n else {\n i18n_32 = $localize `:kendo.grid.filterIsNullOperator|The text of the is null filter operator␟078c50eb1fe8b2b43fcc40c5e7f4493152310c2f␟1298299704757177797:Is null`;\n } let i18n_34; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the is not null filter operator\n * @meaning kendo.grid.filterIsNotNullOperator\n */\n const MSG_EXTERNAL_8362279767336741540$$DIST_FESM2015_INDEX_JS_35 = goog.getMsg(\"Is not null\");\n i18n_34 = MSG_EXTERNAL_8362279767336741540$$DIST_FESM2015_INDEX_JS_35;\n }\n else {\n i18n_34 = $localize `:kendo.grid.filterIsNotNullOperator|The text of the is not null filter operator␟70b39eeaf2674907b2e59b414baf17e032b464dc␟8362279767336741540:Is not null`;\n } let i18n_36; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the is empty filter operator\n * @meaning kendo.grid.filterIsEmptyOperator\n */\n const MSG_EXTERNAL_4762263229995523226$$DIST_FESM2015_INDEX_JS_37 = goog.getMsg(\"Is empty\");\n i18n_36 = MSG_EXTERNAL_4762263229995523226$$DIST_FESM2015_INDEX_JS_37;\n }\n else {\n i18n_36 = $localize `:kendo.grid.filterIsEmptyOperator|The text of the is empty filter operator␟a4e77e444b4e9b63851ac818e20136212b06c750␟4762263229995523226:Is empty`;\n } let i18n_38; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the is not empty filter operator\n * @meaning kendo.grid.filterIsNotEmptyOperator\n */\n const MSG_EXTERNAL_8245213618709258015$$DIST_FESM2015_INDEX_JS_39 = goog.getMsg(\"Is not empty\");\n i18n_38 = MSG_EXTERNAL_8245213618709258015$$DIST_FESM2015_INDEX_JS_39;\n }\n else {\n i18n_38 = $localize `:kendo.grid.filterIsNotEmptyOperator|The text of the is not empty filter operator␟dee7553c341248e90aef4a8e7438c52e667e68be␟8245213618709258015:Is not empty`;\n } let i18n_40; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the starts with filter operator\n * @meaning kendo.grid.filterStartsWithOperator\n */\n const MSG_EXTERNAL_6087783423599420507$$DIST_FESM2015_INDEX_JS_41 = goog.getMsg(\"Starts with\");\n i18n_40 = MSG_EXTERNAL_6087783423599420507$$DIST_FESM2015_INDEX_JS_41;\n }\n else {\n i18n_40 = $localize `:kendo.grid.filterStartsWithOperator|The text of the starts with filter operator␟da43b363b636156e3ccdbb64a0788bdeab51e992␟6087783423599420507:Starts with`;\n } let i18n_42; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the contains filter operator\n * @meaning kendo.grid.filterContainsOperator\n */\n const MSG_EXTERNAL_3831180413287131758$$DIST_FESM2015_INDEX_JS_43 = goog.getMsg(\"Contains\");\n i18n_42 = MSG_EXTERNAL_3831180413287131758$$DIST_FESM2015_INDEX_JS_43;\n }\n else {\n i18n_42 = $localize `:kendo.grid.filterContainsOperator|The text of the contains filter operator␟5b568a46d2e34ebde7dd53a7e599cbbb7dc6bae1␟3831180413287131758:Contains`;\n } let i18n_44; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the does not contain filter operator\n * @meaning kendo.grid.filterNotContainsOperator\n */\n const MSG_EXTERNAL_7331253838216904826$$DIST_FESM2015_INDEX_JS_45 = goog.getMsg(\"Does not contain\");\n i18n_44 = MSG_EXTERNAL_7331253838216904826$$DIST_FESM2015_INDEX_JS_45;\n }\n else {\n i18n_44 = $localize `:kendo.grid.filterNotContainsOperator|The text of the does not contain filter operator␟be06aa4fde7fa722c9de5a45f241ff595071d718␟7331253838216904826:Does not contain`;\n } let i18n_46; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the ends with filter operator\n * @meaning kendo.grid.filterEndsWithOperator\n */\n const MSG_EXTERNAL_3662435311670509156$$DIST_FESM2015_INDEX_JS_47 = goog.getMsg(\"Ends with\");\n i18n_46 = MSG_EXTERNAL_3662435311670509156$$DIST_FESM2015_INDEX_JS_47;\n }\n else {\n i18n_46 = $localize `:kendo.grid.filterEndsWithOperator|The text of the ends with filter operator␟a54b2ecffb41f0603ceedc7ea5a40b7d130e2fa1␟3662435311670509156:Ends with`;\n } let i18n_48; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the greater than or equal filter operator\n * @meaning kendo.grid.filterGteOperator\n */\n const MSG_EXTERNAL_4542824413455511831$$DIST_FESM2015_INDEX_JS_49 = goog.getMsg(\"Is greater than or equal to\");\n i18n_48 = MSG_EXTERNAL_4542824413455511831$$DIST_FESM2015_INDEX_JS_49;\n }\n else {\n i18n_48 = $localize `:kendo.grid.filterGteOperator|The text of the greater than or equal filter operator␟68471603db771d0304d02fe086da9701c16911c3␟4542824413455511831:Is greater than or equal to`;\n } let i18n_50; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the greater than filter operator\n * @meaning kendo.grid.filterGtOperator\n */\n const MSG_EXTERNAL_1527483349261806183$$DIST_FESM2015_INDEX_JS_51 = goog.getMsg(\"Is greater than\");\n i18n_50 = MSG_EXTERNAL_1527483349261806183$$DIST_FESM2015_INDEX_JS_51;\n }\n else {\n i18n_50 = $localize `:kendo.grid.filterGtOperator|The text of the greater than filter operator␟ae68acc0e18252a348bdfb32112996d81e5305de␟1527483349261806183:Is greater than`;\n } let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the less than or equal filter operator\n * @meaning kendo.grid.filterLteOperator\n */\n const MSG_EXTERNAL_4840714404733417604$$DIST_FESM2015_INDEX_JS_53 = goog.getMsg(\"Is less than or equal to\");\n i18n_52 = MSG_EXTERNAL_4840714404733417604$$DIST_FESM2015_INDEX_JS_53;\n }\n else {\n i18n_52 = $localize `:kendo.grid.filterLteOperator|The text of the less than or equal filter operator␟e48d50a6422c616a00b95025adc5283aff4fa8cb␟4840714404733417604:Is less than or equal to`;\n } let i18n_54; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the less than filter operator\n * @meaning kendo.grid.filterLtOperator\n */\n const MSG_EXTERNAL_498627126459578706$$DIST_FESM2015_INDEX_JS_55 = goog.getMsg(\"Is less than\");\n i18n_54 = MSG_EXTERNAL_498627126459578706$$DIST_FESM2015_INDEX_JS_55;\n }\n else {\n i18n_54 = $localize `:kendo.grid.filterLtOperator|The text of the less than filter operator␟c4d58f0e509cb7e37014715dd91546a724210d70␟498627126459578706:Is less than`;\n } let i18n_56; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the IsTrue boolean filter option\n * @meaning kendo.grid.filterIsTrue\n */\n const MSG_EXTERNAL_2361673238316312251$$DIST_FESM2015_INDEX_JS_57 = goog.getMsg(\"Is True\");\n i18n_56 = MSG_EXTERNAL_2361673238316312251$$DIST_FESM2015_INDEX_JS_57;\n }\n else {\n i18n_56 = $localize `:kendo.grid.filterIsTrue|The text of the IsTrue boolean filter option␟d5f1e9028bc60c30e8f8e0f9cfeb872512446cea␟2361673238316312251:Is True`;\n } let i18n_58; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the IsFalse boolean filter option\n * @meaning kendo.grid.filterIsFalse\n */\n const MSG_EXTERNAL_7759366406135608407$$DIST_FESM2015_INDEX_JS_59 = goog.getMsg(\"Is False\");\n i18n_58 = MSG_EXTERNAL_7759366406135608407$$DIST_FESM2015_INDEX_JS_59;\n }\n else {\n i18n_58 = $localize `:kendo.grid.filterIsFalse|The text of the IsFalse boolean filter option␟6d34731320e2536fd78f4a9e08f0b8dcd01edf3d␟7759366406135608407:Is False`;\n } let i18n_60; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the (All) boolean filter option\n * @meaning kendo.grid.filterBooleanAll\n */\n const MSG_EXTERNAL_9215343856736761875$$DIST_FESM2015_INDEX_JS_61 = goog.getMsg(\"(All)\");\n i18n_60 = MSG_EXTERNAL_9215343856736761875$$DIST_FESM2015_INDEX_JS_61;\n }\n else {\n i18n_60 = $localize `:kendo.grid.filterBooleanAll|The text of the (All) boolean filter option␟4da1456a62bafe2614ed2bc05a2c790a64a4dd0b␟9215343856736761875:(All)`;\n } let i18n_62; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the after or equal date filter operator\n * @meaning kendo.grid.filterAfterOrEqualOperator\n */\n const MSG_EXTERNAL_1964413288176201979$$DIST_FESM2015_INDEX_JS_63 = goog.getMsg(\"Is after or equal to\");\n i18n_62 = MSG_EXTERNAL_1964413288176201979$$DIST_FESM2015_INDEX_JS_63;\n }\n else {\n i18n_62 = $localize `:kendo.grid.filterAfterOrEqualOperator|The text of the after or equal date filter operator␟d7dac1bbc2372d578a9d2bca099de766043aed7e␟1964413288176201979:Is after or equal to`;\n } let i18n_64; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the after date filter operator\n * @meaning kendo.grid.filterAfterOperator\n */\n const MSG_EXTERNAL_3078502182807244703$$DIST_FESM2015_INDEX_JS_65 = goog.getMsg(\"Is after\");\n i18n_64 = MSG_EXTERNAL_3078502182807244703$$DIST_FESM2015_INDEX_JS_65;\n }\n else {\n i18n_64 = $localize `:kendo.grid.filterAfterOperator|The text of the after date filter operator␟bff777df0d0831cc02679227422fab4ef2763fa9␟3078502182807244703:Is after`;\n } let i18n_66; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the before date filter operator\n * @meaning kendo.grid.filterBeforeOperator\n */\n const MSG_EXTERNAL_3348865631071358219$$DIST_FESM2015_INDEX_JS_67 = goog.getMsg(\"Is before\");\n i18n_66 = MSG_EXTERNAL_3348865631071358219$$DIST_FESM2015_INDEX_JS_67;\n }\n else {\n i18n_66 = $localize `:kendo.grid.filterBeforeOperator|The text of the before date filter operator␟35ef5cf367670f15432c9f8761bc85fbdb2b1830␟3348865631071358219:Is before`;\n } let i18n_68; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the before or equal date filter operator\n * @meaning kendo.grid.filterBeforeOrEqualOperator\n */\n const MSG_EXTERNAL_6582064037090631388$$DIST_FESM2015_INDEX_JS_69 = goog.getMsg(\"Is before or equal to\");\n i18n_68 = MSG_EXTERNAL_6582064037090631388$$DIST_FESM2015_INDEX_JS_69;\n }\n else {\n i18n_68 = $localize `:kendo.grid.filterBeforeOrEqualOperator|The text of the before or equal date filter operator␟27a6b29ffbc1eb498de8d7af20051461a2e842ec␟6582064037090631388:Is before or equal to`;\n } let i18n_70; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the filter button\n * @meaning kendo.grid.filterFilterButton\n */\n const MSG_EXTERNAL_5185263258022896121$$DIST_FESM2015_INDEX_JS_71 = goog.getMsg(\"Filter\");\n i18n_70 = MSG_EXTERNAL_5185263258022896121$$DIST_FESM2015_INDEX_JS_71;\n }\n else {\n i18n_70 = $localize `:kendo.grid.filterFilterButton|The text of the filter button␟4f1c08d0b056646cdb668da669e2e15825adfe4d␟5185263258022896121:Filter`;\n } let i18n_72; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the clear filter button\n * @meaning kendo.grid.filterClearButton\n */\n const MSG_EXTERNAL_3031209415830321799$$DIST_FESM2015_INDEX_JS_73 = goog.getMsg(\"Clear\");\n i18n_72 = MSG_EXTERNAL_3031209415830321799$$DIST_FESM2015_INDEX_JS_73;\n }\n else {\n i18n_72 = $localize `:kendo.grid.filterClearButton|The text of the clear filter button␟06e4e4dadede6f91f261cdbb7fb174246a135238␟3031209415830321799:Clear`;\n } let i18n_74; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the And filter logic\n * @meaning kendo.grid.filterAndLogic\n */\n const MSG_EXTERNAL_512662285155477884$$DIST_FESM2015_INDEX_JS_75 = goog.getMsg(\"And\");\n i18n_74 = MSG_EXTERNAL_512662285155477884$$DIST_FESM2015_INDEX_JS_75;\n }\n else {\n i18n_74 = $localize `:kendo.grid.filterAndLogic|The text of the And filter logic␟f73fbcc2f813d469e4a34491950ca01ea1ac8f60␟512662285155477884:And`;\n } let i18n_76; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the Or filter logic\n * @meaning kendo.grid.filterOrLogic\n */\n const MSG_EXTERNAL_1964926727342405367$$DIST_FESM2015_INDEX_JS_77 = goog.getMsg(\"Or\");\n i18n_76 = MSG_EXTERNAL_1964926727342405367$$DIST_FESM2015_INDEX_JS_77;\n }\n else {\n i18n_76 = $localize `:kendo.grid.filterOrLogic|The text of the Or filter logic␟04e64780de0fc1c3a9986997e0808ec53a5f2a63␟1964926727342405367:Or`;\n } let i18n_78; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The loading text\n * @meaning kendo.grid.loading\n */\n const MSG_EXTERNAL_5425510787229531767$$DIST_FESM2015_INDEX_JS_79 = goog.getMsg(\"Loading\");\n i18n_78 = MSG_EXTERNAL_5425510787229531767$$DIST_FESM2015_INDEX_JS_79;\n }\n else {\n i18n_78 = $localize `:kendo.grid.loading|The loading text␟781c049cc69efc30bc8053af9ace3cb4b04bd438␟5425510787229531767:Loading`;\n } let i18n_80; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Grid aria-label\n * @meaning kendo.grid.gridLabel\n */\n const MSG_EXTERNAL_1756559638952980203$$DIST_FESM2015_INDEX_JS_81 = goog.getMsg(\"Data table\");\n i18n_80 = MSG_EXTERNAL_1756559638952980203$$DIST_FESM2015_INDEX_JS_81;\n }\n else {\n i18n_80 = $localize `:kendo.grid.gridLabel|The Grid aria-label␟03316b5e0c6e91f110c8f015ca63318ced71b1ab␟1756559638952980203:Data table`;\n } let i18n_82; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the columns item\n * @meaning kendo.grid.columns\n */\n const MSG_EXTERNAL_5332162737795508854$$DIST_FESM2015_INDEX_JS_83 = goog.getMsg(\"Columns\");\n i18n_82 = MSG_EXTERNAL_5332162737795508854$$DIST_FESM2015_INDEX_JS_83;\n }\n else {\n i18n_82 = $localize `:kendo.grid.columns|The text shown in the column menu for the columns item␟9b841399fbb3d81f2401f98b4f4763834b72a1e5␟5332162737795508854:Columns`;\n } let i18n_84; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the lock item\n * @meaning kendo.grid.lock\n */\n const MSG_EXTERNAL_5849203148124173556$$DIST_FESM2015_INDEX_JS_85 = goog.getMsg(\"Lock\");\n i18n_84 = MSG_EXTERNAL_5849203148124173556$$DIST_FESM2015_INDEX_JS_85;\n }\n else {\n i18n_84 = $localize `:kendo.grid.lock|The text shown in the column menu for the lock item␟f356cae509dec3dc1b7156326b9a0328a79c62a8␟5849203148124173556:Lock`;\n } let i18n_86; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the unlock item\n * @meaning kendo.grid.unlock\n */\n const MSG_EXTERNAL_6968586378603932789$$DIST_FESM2015_INDEX_JS_87 = goog.getMsg(\"Unlock\");\n i18n_86 = MSG_EXTERNAL_6968586378603932789$$DIST_FESM2015_INDEX_JS_87;\n }\n else {\n i18n_86 = $localize `:kendo.grid.unlock|The text shown in the column menu for the unlock item␟f33355540003068372e39ba7f3def794869ea9f8␟6968586378603932789:Unlock`;\n } let i18n_88; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the set column position item\n * @meaning kendo.grid.setColumnPosition\n */\n const MSG_EXTERNAL_4152513791950180353$$DIST_FESM2015_INDEX_JS_89 = goog.getMsg(\"Set Column Position\");\n i18n_88 = MSG_EXTERNAL_4152513791950180353$$DIST_FESM2015_INDEX_JS_89;\n }\n else {\n i18n_88 = $localize `:kendo.grid.setColumnPosition|The text shown in the column menu for the set column position item␟e5b09fd8ecea276841b1018a376a43d5f26cf187␟4152513791950180353:Set Column Position`;\n } let i18n_90; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the stick item\n * @meaning kendo.grid.stick\n */\n const MSG_EXTERNAL_2051035907018784050$$DIST_FESM2015_INDEX_JS_91 = goog.getMsg(\"Stick\");\n i18n_90 = MSG_EXTERNAL_2051035907018784050$$DIST_FESM2015_INDEX_JS_91;\n }\n else {\n i18n_90 = $localize `:kendo.grid.stick|The text shown in the column menu for the stick item␟31d7229bfb18a112e19a6e8040d7d2e261293dca␟2051035907018784050:Stick`;\n } let i18n_92; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the unstick item\n * @meaning kendo.grid.unstick\n */\n const MSG_EXTERNAL_7237321134369658080$$DIST_FESM2015_INDEX_JS_93 = goog.getMsg(\"Unstick\");\n i18n_92 = MSG_EXTERNAL_7237321134369658080$$DIST_FESM2015_INDEX_JS_93;\n }\n else {\n i18n_92 = $localize `:kendo.grid.unstick|The text shown in the column menu for the unstick item␟01d4c7e75b7fadc09544cf2277208d39b4eef86a␟7237321134369658080:Unstick`;\n } let i18n_94; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the sort icon\n * @meaning kendo.grid.sortable\n */\n const MSG_EXTERNAL_3824304972336788145$$DIST_FESM2015_INDEX_JS_95 = goog.getMsg(\"Sortable\");\n i18n_94 = MSG_EXTERNAL_3824304972336788145$$DIST_FESM2015_INDEX_JS_95;\n }\n else {\n i18n_94 = $localize `:kendo.grid.sortable|The label of the sort icon␟a692ba271be066ce379f942ff67094e1ea989f4c␟3824304972336788145:Sortable`;\n } let i18n_96; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the sort ascending item\n * @meaning kendo.grid.sortAscending\n */\n const MSG_EXTERNAL_6297762560864270240$$DIST_FESM2015_INDEX_JS_97 = goog.getMsg(\"Sort Ascending\");\n i18n_96 = MSG_EXTERNAL_6297762560864270240$$DIST_FESM2015_INDEX_JS_97;\n }\n else {\n i18n_96 = $localize `:kendo.grid.sortAscending|The text shown in the column menu for the sort ascending item␟96beffd8446c5455f3bbdc313c946db32df7dcc2␟6297762560864270240:Sort Ascending`;\n } let i18n_98; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the sort descending item\n * @meaning kendo.grid.sortDescending\n */\n const MSG_EXTERNAL_5605073536641230977$$DIST_FESM2015_INDEX_JS_99 = goog.getMsg(\"Sort Descending\");\n i18n_98 = MSG_EXTERNAL_5605073536641230977$$DIST_FESM2015_INDEX_JS_99;\n }\n else {\n i18n_98 = $localize `:kendo.grid.sortDescending|The text shown in the column menu for the sort descending item␟208d0538d4c2537a1cbf456941e34a2884053d52␟5605073536641230977:Sort Descending`;\n } let i18n_100; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The status announcement when a column is sorted ascending\n * @meaning kendo.grid.sortedAscending\n */\n const MSG_EXTERNAL_6275944032047713540$$DIST_FESM2015_INDEX_JS_101 = goog.getMsg(\"Sorted Ascending\");\n i18n_100 = MSG_EXTERNAL_6275944032047713540$$DIST_FESM2015_INDEX_JS_101;\n }\n else {\n i18n_100 = $localize `:kendo.grid.sortedAscending|The status announcement when a column is sorted ascending␟947c64329461efd9f8a9aa2c51acbbd099170aa5␟6275944032047713540:Sorted Ascending`;\n } let i18n_102; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The status announcement when a column is sorted descending\n * @meaning kendo.grid.sortedDescending\n */\n const MSG_EXTERNAL_8155280769473236383$$DIST_FESM2015_INDEX_JS_103 = goog.getMsg(\"Sorted Descending\");\n i18n_102 = MSG_EXTERNAL_8155280769473236383$$DIST_FESM2015_INDEX_JS_103;\n }\n else {\n i18n_102 = $localize `:kendo.grid.sortedDescending|The status announcement when a column is sorted descending␟092a688d1b2b6d873bdc29beaaf43c3f45336581␟8155280769473236383:Sorted Descending`;\n } let i18n_104; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The status announcement when a column is no longer sorted\n * @meaning kendo.grid.sortedDefault\n */\n const MSG_EXTERNAL_5229177293891232538$$DIST_FESM2015_INDEX_JS_105 = goog.getMsg(\"Not Sorted\");\n i18n_104 = MSG_EXTERNAL_5229177293891232538$$DIST_FESM2015_INDEX_JS_105;\n }\n else {\n i18n_104 = $localize `:kendo.grid.sortedDefault|The status announcement when a column is no longer sorted␟66e99ea340974022c07c52a6f668f5573e7edab0␟5229177293891232538:Not Sorted`;\n } let i18n_106; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu or column chooser for the columns apply button\n * @meaning kendo.grid.columnsApply\n */\n const MSG_EXTERNAL_34213208292862969$$DIST_FESM2015_INDEX_JS_107 = goog.getMsg(\"Apply\");\n i18n_106 = MSG_EXTERNAL_34213208292862969$$DIST_FESM2015_INDEX_JS_107;\n }\n else {\n i18n_106 = $localize `:kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button␟04600bd6e362cf9da9f7f9c4666eab2c88eb6a90␟34213208292862969:Apply`;\n } let i18n_108; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu or column chooser for the columns reset button\n * @meaning kendo.grid.columnsReset\n */\n const MSG_EXTERNAL_4465838259914958827$$DIST_FESM2015_INDEX_JS_109 = goog.getMsg(\"Reset\");\n i18n_108 = MSG_EXTERNAL_4465838259914958827$$DIST_FESM2015_INDEX_JS_109;\n }\n else {\n i18n_108 = $localize `:kendo.grid.columnsReset|The text shown in the column menu or column chooser for the columns reset button␟94d3b472d99994a5cca9930afd4cf0ac2774c382␟4465838259914958827:Reset`;\n } let i18n_110; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the expand icon of detail rows.\n * @meaning kendo.grid.detailExpand\n */\n const MSG_EXTERNAL_6952757249912226136$$DIST_FESM2015_INDEX_JS_111 = goog.getMsg(\"Expand Details\");\n i18n_110 = MSG_EXTERNAL_6952757249912226136$$DIST_FESM2015_INDEX_JS_111;\n }\n else {\n i18n_110 = $localize `:kendo.grid.detailExpand|The title of the expand icon of detail rows.␟ad6629bb6e79235623cfce486ef48087dbe96fb5␟6952757249912226136:Expand Details`;\n } let i18n_112; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the collapse icon of detail rows.\n * @meaning kendo.grid.detailCollapse\n */\n const MSG_EXTERNAL_6065477639036399169$$DIST_FESM2015_INDEX_JS_113 = goog.getMsg(\"Collapse Details\");\n i18n_112 = MSG_EXTERNAL_6065477639036399169$$DIST_FESM2015_INDEX_JS_113;\n }\n else {\n i18n_112 = $localize `:kendo.grid.detailCollapse|The title of the collapse icon of detail rows.␟ace0c0a58fbb211e8678efb3bd6ac9bb587144c3␟6065477639036399169:Collapse Details`;\n } let i18n_114; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the Today button of the Date filter.\n * @meaning kendo.grid.filterDateToday\n */\n const MSG_EXTERNAL_1656723147090613075$$DIST_FESM2015_INDEX_JS_115 = goog.getMsg(\"TODAY\");\n i18n_114 = MSG_EXTERNAL_1656723147090613075$$DIST_FESM2015_INDEX_JS_115;\n }\n else {\n i18n_114 = $localize `:kendo.grid.filterDateToday|The text of the Today button of the Date filter.␟745058f85d92ee5228977277195262978828c4c8␟1656723147090613075:TODAY`;\n } let i18n_116; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Toggle button of the Date filter.\n * @meaning kendo.grid.filterDateToggle\n */\n const MSG_EXTERNAL_15438307630389352$$DIST_FESM2015_INDEX_JS_117 = goog.getMsg(\"Toggle Calendar\");\n i18n_116 = MSG_EXTERNAL_15438307630389352$$DIST_FESM2015_INDEX_JS_117;\n }\n else {\n i18n_116 = $localize `:kendo.grid.filterDateToggle|The title of the Toggle button of the Date filter.␟2c916ea2cbd37665e512219650c37dc17b9ef0c0␟15438307630389352:Toggle Calendar`;\n } let i18n_118; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Decrement button of the Numeric filter.\n * @meaning kendo.grid.filterNumericDecrement\n */\n const MSG_EXTERNAL_534533728304192410$$DIST_FESM2015_INDEX_JS_119 = goog.getMsg(\"Decrement\");\n i18n_118 = MSG_EXTERNAL_534533728304192410$$DIST_FESM2015_INDEX_JS_119;\n }\n else {\n i18n_118 = $localize `:kendo.grid.filterNumericDecrement|The title of the Decrement button of the Numeric filter.␟7f991d698abebb2e50570f9aef14126ae931c513␟534533728304192410:Decrement`;\n } let i18n_120; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Increment button of the Numeric filter.\n * @meaning kendo.grid.filterNumericIncrement\n */\n const MSG_EXTERNAL_5462143714591662391$$DIST_FESM2015_INDEX_JS_121 = goog.getMsg(\"Increment\");\n i18n_120 = MSG_EXTERNAL_5462143714591662391$$DIST_FESM2015_INDEX_JS_121;\n }\n else {\n i18n_120 = $localize `:kendo.grid.filterNumericIncrement|The title of the Increment button of the Numeric filter.␟25bc8b86968819d3f687aa6dde652800bd4b6b2a␟5462143714591662391:Increment`;\n } let i18n_122; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The labels of the checkbox column checkboxes.\n * @meaning kendo.grid.selectionCheckboxLabel\n */\n const MSG_EXTERNAL_8181603152758207780$$DIST_FESM2015_INDEX_JS_123 = goog.getMsg(\"Select Row\");\n i18n_122 = MSG_EXTERNAL_8181603152758207780$$DIST_FESM2015_INDEX_JS_123;\n }\n else {\n i18n_122 = $localize `:kendo.grid.selectionCheckboxLabel|The labels of the checkbox column checkboxes.␟be92546944c9cb75e92f8b968456d82a101fc35b␟8181603152758207780:Select Row`;\n } let i18n_124; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the checkbox column select all checkbox.\n * @meaning kendo.grid.selectAllCheckboxLabel\n */\n const MSG_EXTERNAL_6136285170059274319$$DIST_FESM2015_INDEX_JS_125 = goog.getMsg(\"Select All Rows\");\n i18n_124 = MSG_EXTERNAL_6136285170059274319$$DIST_FESM2015_INDEX_JS_125;\n }\n else {\n i18n_124 = $localize `:kendo.grid.selectAllCheckboxLabel|The label of the checkbox column select all checkbox.␟20fbea69eff950cbfcf690203ca6104e8346fa48␟6136285170059274319:Select All Rows`;\n } let i18n_126; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Grid pager\n * @meaning kendo.grid.pagerLabel\n */\n const MSG_EXTERNAL_941504587982751782$$DIST_FESM2015_INDEX_JS_127 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_126 = MSG_EXTERNAL_941504587982751782$$DIST_FESM2015_INDEX_JS_127;\n }\n else {\n i18n_126 = $localize `:kendo.grid.pagerLabel|The label for the Grid pager␟03a0df03d11d80b3aeca50cf4827096a51a853fc␟941504587982751782:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_128; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter row and menu inputs\n * @meaning kendo.grid.filterInputLabel\n */\n const MSG_EXTERNAL_3836147469421132954$$DIST_FESM2015_INDEX_JS_129 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_128 = MSG_EXTERNAL_3836147469421132954$$DIST_FESM2015_INDEX_JS_129;\n }\n else {\n i18n_128 = $localize `:kendo.grid.filterInputLabel|The label of the filter row and menu inputs␟491dbf44b1ca040395b94229d00d4109af48e64c␟3836147469421132954:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_130; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the filter menu icon\n * @meaning kendo.grid.filterMenuTitle\n */\n const MSG_EXTERNAL_7968307322474586314$$DIST_FESM2015_INDEX_JS_131 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_130 = MSG_EXTERNAL_7968307322474586314$$DIST_FESM2015_INDEX_JS_131;\n }\n else {\n i18n_130 = $localize `:kendo.grid.filterMenuTitle|The title of the filter menu icon␟04e8a1bee6d2dd6edfc921e890fae44a01ceb18c␟7968307322474586314:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_132; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter menu operators dropdown\n * @meaning kendo.grid.filterMenuOperatorsDropDownLabel\n */\n const MSG_EXTERNAL_1505989735336544615$$DIST_FESM2015_INDEX_JS_133 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_132 = MSG_EXTERNAL_1505989735336544615$$DIST_FESM2015_INDEX_JS_133;\n }\n else {\n i18n_132 = $localize `:kendo.grid.filterMenuOperatorsDropDownLabel|The label of the filter menu operators dropdown␟884eac0bb5b4a01ea36fea20ffa29c6dfe1987e0␟1505989735336544615:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_134; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter menu logic dropdown\n * @meaning kendo.grid.filterMenuLogicDropDownLabel\n */\n const MSG_EXTERNAL_7212349983175276206$$DIST_FESM2015_INDEX_JS_135 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_134 = MSG_EXTERNAL_7212349983175276206$$DIST_FESM2015_INDEX_JS_135;\n }\n else {\n i18n_134 = $localize `:kendo.grid.filterMenuLogicDropDownLabel|The label of the filter menu logic dropdown␟c9ba4917588987b943dc414dc6ca108392d8cb40␟7212349983175276206:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_136; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the column menu icon\n * @meaning kendo.grid.columnMenu\n */\n const MSG_EXTERNAL_8738132440639204439$$DIST_FESM2015_INDEX_JS_137 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_136 = MSG_EXTERNAL_8738132440639204439$$DIST_FESM2015_INDEX_JS_137;\n }\n else {\n i18n_136 = $localize `:kendo.grid.columnMenu|The title of the column menu icon␟28d8b294e285a6c34641eb1c7982870b412ef106␟8738132440639204439:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[\"kendoGridLocalizedMessages\", \"\", \"groupPanelEmpty\", i18n_4, \"noRecords\", i18n_6, \"pagerFirstPage\", i18n_8, \"pagerPreviousPage\", i18n_10, \"pagerNextPage\", i18n_12, \"pagerLastPage\", i18n_14, \"pagerPage\", i18n_16, \"pagerOf\", i18n_18, \"pagerItems\", i18n_20, \"pagerPageNumberInputTitle\", i18n_22, \"pagerItemsPerPage\", i18n_24, \"filter\", i18n_26, \"filterEqOperator\", i18n_28, \"filterNotEqOperator\", i18n_30, \"filterIsNullOperator\", i18n_32, \"filterIsNotNullOperator\", i18n_34, \"filterIsEmptyOperator\", i18n_36, \"filterIsNotEmptyOperator\", i18n_38, \"filterStartsWithOperator\", i18n_40, \"filterContainsOperator\", i18n_42, \"filterNotContainsOperator\", i18n_44, \"filterEndsWithOperator\", i18n_46, \"filterGteOperator\", i18n_48, \"filterGtOperator\", i18n_50, \"filterLteOperator\", i18n_52, \"filterLtOperator\", i18n_54, \"filterIsTrue\", i18n_56, \"filterIsFalse\", i18n_58, \"filterBooleanAll\", i18n_60, \"filterAfterOrEqualOperator\", i18n_62, \"filterAfterOperator\", i18n_64, \"filterBeforeOperator\", i18n_66, \"filterBeforeOrEqualOperator\", i18n_68, \"filterFilterButton\", i18n_70, \"filterClearButton\", i18n_72, \"filterAndLogic\", i18n_74, \"filterOrLogic\", i18n_76, \"loading\", i18n_78, \"gridLabel\", i18n_80, \"columns\", i18n_82, \"lock\", i18n_84, \"unlock\", i18n_86, \"setColumnPosition\", i18n_88, \"stick\", i18n_90, \"unstick\", i18n_92, \"sortable\", i18n_94, \"sortAscending\", i18n_96, \"sortDescending\", i18n_98, \"sortedAscending\", i18n_100, \"sortedDescending\", i18n_102, \"sortedDefault\", i18n_104, \"columnsApply\", i18n_106, \"columnsReset\", i18n_108, \"detailExpand\", i18n_110, \"detailCollapse\", i18n_112, \"filterDateToday\", i18n_114, \"filterDateToggle\", i18n_116, \"filterNumericDecrement\", i18n_118, \"filterNumericIncrement\", i18n_120, \"selectionCheckboxLabel\", i18n_122, \"selectAllCheckboxLabel\", i18n_124, 6, \"pagerLabel\", \"filterInputLabel\", \"filterMenuTitle\", \"filterMenuOperatorsDropDownLabel\", \"filterMenuLogicDropDownLabel\", \"columnMenu\"], [\"pagerLabel\", i18n_126, \"filterInputLabel\", i18n_128, \"filterMenuTitle\", i18n_130, \"filterMenuOperatorsDropDownLabel\", i18n_132, \"filterMenuLogicDropDownLabel\", i18n_134, \"columnMenu\", i18n_136], [\"class\", \"k-toolbar k-grid-toolbar\", \"position\", \"top\", 4, \"ngIf\"], [\"class\", \"k-grid-pager-top\", 3, \"tabindex\", \"template\", \"pageSize\", \"total\", \"skip\", \"options\", \"pageChange\", 4, \"ngIf\"], [3, \"text\", \"groups\", \"change\", 4, \"ngIf\"], [\"role\", \"grid\", 1, \"k-grid-aria-root\"], [\"ariaRoot\", \"\"], [3, \"ngIf\"], [3, \"tabindex\", \"template\", \"pageSize\", \"total\", \"skip\", \"options\", \"pageChange\", 4, \"ngIf\"], [\"class\", \"k-toolbar k-grid-toolbar k-grid-toolbar-bottom\", \"position\", \"bottom\", 4, \"ngIf\"], [\"position\", \"top\", 1, \"k-toolbar\", \"k-grid-toolbar\"], [1, \"k-grid-pager-top\", 3, \"tabindex\", \"template\", \"pageSize\", \"total\", \"skip\", \"options\", \"pageChange\"], [3, \"text\", \"groups\", \"change\"], [\"class\", \"k-grid-header\", \"role\", \"presentation\", 3, \"padding\", 4, \"ngIf\"], [\"kendoDraggable\", \"\", \"kendoGridSelectionMarquee\", \"\", 3, \"data\", \"rowHeight\", \"detailRowHeight\", \"total\", \"take\", \"groups\", \"groupable\", \"skip\", \"trackBy\", \"columns\", \"selectable\", \"filterable\", \"detailTemplate\", \"noRecordsTemplate\", \"rowClass\", \"rowSticky\", \"loading\", \"isVirtual\", \"loadingTemplate\", \"virtualColumns\", \"enableDrag\", \"pageChange\", \"scrollBottom\", \"contentScroll\"], [\"class\", \"k-grid-footer\", 3, \"padding\", 4, \"ngIf\"], [\"role\", \"presentation\", 1, \"k-grid-header\"], [\"role\", \"presentation\", \"class\", \"k-grid-header-locked\", 3, \"width\", 4, \"ngIf\"], [\"role\", \"presentation\", \"data-scrollable\", \"\", 1, \"k-grid-header-wrap\", 3, \"kendoGridResizableContainer\", \"lockedWidth\"], [\"header\", \"\"], [\"role\", \"presentation\", 3, \"virtualColumns\"], [\"kendoGridColGroup\", \"\", \"role\", \"presentation\", 3, \"columns\", \"groups\", \"detailTemplate\"], [\"kendoGridHeader\", \"\", \"role\", \"presentation\", 3, \"resizable\", \"scrollable\", \"columns\", \"totalColumnLevels\", \"sort\", \"filter\", \"filterable\", \"groupable\", \"reorderable\", \"groups\", \"sortable\", \"columnMenu\", \"columnMenuTemplate\", \"lockedColumnsCount\", \"totalColumnsCount\", \"detailTemplate\", \"tabIndex\"], [\"class\", \"k-width-container\", \"role\", \"presentation\", 4, \"ngIf\"], [\"role\", \"presentation\", 1, \"k-grid-header-locked\"], [\"lockedHeader\", \"\"], [\"role\", \"presentation\", 3, \"locked\"], [\"kendoGridHeader\", \"\", 3, \"resizable\", \"scrollable\", \"columns\", \"totalColumnLevels\", \"sort\", \"groups\", \"filter\", \"filterable\", \"groupable\", \"reorderable\", \"sortable\", \"columnMenu\", \"columnMenuTemplate\", \"totalColumnsCount\", \"detailTemplate\", \"tabIndex\"], [\"role\", \"presentation\", 1, \"k-width-container\"], [1, \"k-grid-footer\"], [\"class\", \"k-grid-footer-locked\", 3, \"width\", 4, \"ngIf\"], [\"data-scrollable\", \"\", 1, \"k-grid-footer-wrap\", 3, \"kendoGridResizableContainer\", \"lockedWidth\"], [\"footer\", \"\"], [\"role\", \"presentation\"], [\"kendoGridColGroup\", \"\", 3, \"columns\", \"groups\", \"detailTemplate\"], [\"kendoGridFooter\", \"\", 3, \"logicalRowIndex\", \"scrollable\", \"groups\", \"columns\", \"lockedColumnsCount\", \"detailTemplate\"], [1, \"k-grid-footer-locked\"], [\"kendoGridFooter\", \"\", 3, \"scrollable\", \"groups\", \"columns\", \"detailTemplate\", \"logicalRowIndex\"], [\"kendoGridHeader\", \"\", 3, \"resizable\", \"scrollable\", \"columns\", \"totalColumnLevels\", \"groups\", \"groupable\", \"reorderable\", \"sort\", \"sortable\", \"filter\", \"filterable\", \"columnMenu\", \"columnMenuTemplate\", \"detailTemplate\", \"tabIndex\", 4, \"ngIf\"], [\"kendoGridTableBody\", \"\", \"kendoDraggable\", \"\", \"kendoGridSelectionMarquee\", \"\", 3, \"isLoading\", \"groups\", \"data\", \"skip\", \"columns\", \"selectable\", \"filterable\", \"noRecordsTemplate\", \"detailTemplate\", \"showGroupFooters\", \"trackBy\", \"rowClass\", \"enableDrag\"], [\"kendoGridFooter\", \"\", 3, \"scrollable\", \"logicalRowIndex\", \"groups\", \"columns\", \"detailTemplate\", 4, \"ngIf\"], [\"kendoGridLoading\", \"\", 4, \"ngIf\"], [\"kendoGridHeader\", \"\", 3, \"resizable\", \"scrollable\", \"columns\", \"totalColumnLevels\", \"groups\", \"groupable\", \"reorderable\", \"sort\", \"sortable\", \"filter\", \"filterable\", \"columnMenu\", \"columnMenuTemplate\", \"detailTemplate\", \"tabIndex\"], [\"kendoGridFooter\", \"\", 3, \"scrollable\", \"logicalRowIndex\", \"groups\", \"columns\", \"detailTemplate\"], [\"kendoGridLoading\", \"\"], [3, \"tabindex\", \"template\", \"pageSize\", \"total\", \"skip\", \"options\", \"pageChange\"], [\"position\", \"bottom\", 1, \"k-toolbar\", \"k-grid-toolbar\", \"k-grid-toolbar-bottom\"]]; }, template: function GridComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵi18nAttributes(1, 1);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵtemplate(2, GridComponent_kendo_grid_toolbar_2_Template, 1, 0, \"kendo-grid-toolbar\", 2);\n ɵngcc0.ɵɵtemplate(3, GridComponent_kendo_pager_3_Template, 1, 7, \"kendo-pager\", 3);\n ɵngcc0.ɵɵtemplate(4, GridComponent_kendo_grid_group_panel_4_Template, 1, 2, \"kendo-grid-group-panel\", 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5, 6);\n ɵngcc0.ɵɵtemplate(7, GridComponent_ng_template_7_Template, 3, 23, \"ng-template\", 7);\n ɵngcc0.ɵɵtemplate(8, GridComponent_ng_template_8_Template, 6, 21, \"ng-template\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, GridComponent_kendo_pager_9_Template, 1, 7, \"kendo-pager\", 8);\n ɵngcc0.ɵɵtemplate(10, GridComponent_kendo_grid_toolbar_10_Template, 1, 0, \"kendo-grid-toolbar\", 9);\n } if (rf & 2) {\n ɵngcc0.ɵɵi18nExp(\"Page navigation, page {currentPage} of {totalPages}\")(\"{columnName} Filter\")(\"{columnName} Filter Menu\")(\"{columnName} Filter Operators\")(\"{columnName} Filter Logic\")(\"{columnName} Column Menu\");\n ɵngcc0.ɵɵi18nApply(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showTopToolbar);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showTopPager);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showGroupPanel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.ariaLabel)(\"aria-rowcount\", ctx.ariaRowCount)(\"aria-colcount\", ctx.ariaColCount);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isScrollable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.isScrollable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showBottomPager);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showBottomToolbar);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc5.NgIf, ToolbarComponent, PagerComponent, GroupPanelComponent, TableDirective, ColGroupComponent, HeaderComponent, ResizableContainerDirective, ListComponent, ɵngcc2.DraggableDirective, GridMarqueeDirective, FooterComponent, TableBodyComponent, LoadingComponent]; }, 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 }\"], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GridComponent.prototype, \"pageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GridComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GridComponent.prototype, \"rowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GridComponent.prototype, \"detailRowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], GridComponent.prototype, \"skip\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], GridComponent.prototype, \"scrollable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"selectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], GridComponent.prototype, \"sort\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], GridComponent.prototype, \"trackBy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], GridComponent.prototype, \"group\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GridComponent.prototype, \"virtualColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"sortable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"pageable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"groupable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GridComponent.prototype, \"navigable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], GridComponent.prototype, \"navigatable\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GridComponent.prototype, \"autoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], GridComponent.prototype, \"rowClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], GridComponent.prototype, \"rowSticky\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], GridComponent.prototype, \"rowSelected\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], GridComponent.prototype, \"cellSelected\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GridComponent.prototype, \"resizable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GridComponent.prototype, \"reorderable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GridComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"columnMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GridComponent.prototype, \"hideHeader\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"pageChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"groupChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"sortChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"dataStateChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"groupExpand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"groupCollapse\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"detailExpand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"detailCollapse\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"edit\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"cancel\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"save\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"remove\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"add\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"cellClose\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"cellClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"pdfExport\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"excelExport\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"columnResize\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"columnReorder\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"columnVisibilityChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"columnLockedChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"columnStickyChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"scrollBottom\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GridComponent.prototype, \"contentScroll\", void 0);\n__decorate([\n ContentChildren(ColumnBase$1),\n __metadata(\"design:type\", QueryList)\n], GridComponent.prototype, \"columns\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], GridComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-grid'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GridComponent.prototype, \"hostClasses\", null);\n__decorate([\n HostBinding('class.k-grid-lockedcolumns'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GridComponent.prototype, \"lockedClasses\", null);\n__decorate([\n HostBinding('class.k-grid-virtual'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GridComponent.prototype, \"virtualClasses\", null);\n__decorate([\n HostBinding('class.k-grid-no-scrollbar'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GridComponent.prototype, \"noScrollbarClass\", null);\n__decorate([\n ContentChildren(DetailTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], GridComponent.prototype, \"detailTemplateChildren\", void 0);\n__decorate([\n ContentChildren(CellLoadingTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], GridComponent.prototype, \"loadingTemplateChildren\", void 0);\n__decorate([\n ContentChildren(NoRecordsTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], GridComponent.prototype, \"noRecordsTemplateChildren\", void 0);\n__decorate([\n ContentChildren(PagerTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], GridComponent.prototype, \"pagerTemplateChildren\", void 0);\n__decorate([\n ContentChildren(ToolbarTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], GridComponent.prototype, \"toolbarTemplateChildren\", void 0);\n__decorate([\n ContentChildren(ColumnMenuTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], GridComponent.prototype, \"columnMenuTemplates\", void 0);\n__decorate([\n ViewChild('lockedHeader', { static: false }),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"lockedHeader\", void 0);\n__decorate([\n ViewChild('header', { static: false }),\n __metadata(\"design:type\", Object)\n], GridComponent.prototype, \"header\", void 0);\n__decorate([\n ViewChildren('footer'),\n __metadata(\"design:type\", QueryList)\n], GridComponent.prototype, \"footer\", void 0);\n__decorate([\n ViewChild('ariaRoot', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], GridComponent.prototype, \"ariaRoot\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], GridComponent.prototype, \"isDetailExpanded\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], GridComponent.prototype, \"isGroupExpanded\", null);\nGridComponent = __decorate([ __metadata(\"design:paramtypes\", [BrowserSupportService,\n SelectionService,\n CellSelectionService,\n ElementRef,\n GroupInfoService,\n GroupsService,\n ChangeNotificationService,\n DetailsService,\n EditService,\n FilterService,\n PDFService,\n ResponsiveService,\n Renderer2,\n ExcelService,\n NgZone,\n ScrollSyncService,\n DomEventsService,\n ColumnResizingService,\n ChangeDetectorRef,\n ColumnReorderService,\n ColumnInfoService,\n NavigationService,\n SortService,\n ScrollRequestService,\n LocalizationService])\n], GridComponent);\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); // tslint:disable-line:align\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$$1) {\n this.skip = skip;\n this.take = take$$1;\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$$1, total) {\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take$$1;\n this.take = take$$1;\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-widget k-grid-ignore-click';\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$1 = renderer => ({ el, height }) => renderer.setStyle(el, \"height\", `${height}px`);\nconst bufferSize = 1;\n/**\n * @hidden\n */\nlet ListComponent = class 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(\"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$1(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$1();\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$$1 = 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$$1.length; idx++) {\n const column = leafColumns$$1[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 = function ListComponent_Factory(t) { return new (t || ListComponent)(ɵngcc0.ɵɵdirectiveInject(SCROLLER_FACTORY_TOKEN), ɵngcc0.ɵɵdirectiveInject(DetailsService), ɵngcc0.ɵɵdirectiveInject(ChangeNotificationService), ɵngcc0.ɵɵdirectiveInject(SuspendService), ɵngcc0.ɵɵdirectiveInject(GroupsService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ScrollSyncService), ɵngcc0.ɵɵdirectiveInject(ResizeService), ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(BrowserSupportService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ScrollRequestService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ColumnResizingService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(PDFService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService)); };\nListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ListComponent, selectors: [[\"kendo-grid-list\"]], viewQuery: function ListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c139, 7);\n ɵngcc0.ɵɵviewQuery(_c140, 5);\n ɵngcc0.ɵɵviewQuery(_c141, 5);\n ɵngcc0.ɵɵviewQuery(_c142, 7);\n ɵngcc0.ɵɵviewQuery(ResizeSensorComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.lockedContainer = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.lockedTable = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.table = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.resizeSensors = _t);\n } }, hostVars: 3, hostBindings: function ListComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.hostRole);\n ɵngcc0.ɵɵclassProp(\"k-grid-container\", ctx.hostClass);\n } }, inputs: { groups: \"groups\", skip: \"skip\", columns: \"columns\", selectable: \"selectable\", groupable: \"groupable\", trackBy: \"trackBy\", data: \"data\", total: \"total\", rowHeight: \"rowHeight\", stickyRowHeight: \"stickyRowHeight\", detailRowHeight: \"detailRowHeight\", take: \"take\", detailTemplate: \"detailTemplate\", noRecordsTemplate: \"noRecordsTemplate\", filterable: \"filterable\", rowClass: \"rowClass\", rowSticky: \"rowSticky\", loading: \"loading\", virtualColumns: \"virtualColumns\", isVirtual: \"isVirtual\", loadingTemplate: \"loadingTemplate\" }, outputs: { contentScroll: \"contentScroll\", pageChange: \"pageChange\", scrollBottom: \"scrollBottom\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 36, consts: [[\"class\", \"k-grid-content-locked\", \"role\", \"presentation\", 3, \"width\", \"kendoEventsOutsideAngular\", \"scope\", 4, \"ngIf\"], [\"role\", \"presentation\", \"tabindex\", \"-1\", 1, \"k-grid-content\", \"k-virtual-content\", 3, \"kendoGridResizableContainer\", \"lockedWidth\"], [\"container\", \"\"], [\"role\", \"presentation\", 1, \"k-grid-table-wrap\"], [\"role\", \"presentation\", 1, \"k-grid-table\", 3, \"virtualColumns\"], [\"table\", \"\"], [\"kendoGridColGroup\", \"\", \"role\", \"presentation\", 3, \"groups\", \"columns\", \"detailTemplate\"], [\"kendoGridTableBody\", \"\", \"role\", \"presentation\", 3, \"skipGroupDecoration\", \"data\", \"groups\", \"showGroupFooters\", \"columns\", \"allColumns\", \"detailTemplate\", \"noRecordsTemplate\", \"lockedColumnsCount\", \"totalColumnsCount\", \"skip\", \"selectable\", \"trackBy\", \"filterable\", \"rowClass\", \"rowSticky\", \"virtualColumns\", \"isLoading\", \"isVirtual\", \"loadingTemplate\"], [4, \"ngIf\"], [\"role\", \"presentation\", 1, \"k-height-container\"], [\"class\", \"k-width-container\", \"role\", \"presentation\", 4, \"ngIf\"], [\"kendoGridLoading\", \"\", 4, \"ngIf\"], [\"role\", \"presentation\", 1, \"k-grid-content-locked\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [\"lockedContainer\", \"\"], [\"role\", \"presentation\", 1, \"k-grid-table\", 3, \"locked\"], [\"lockedTable\", \"\"], [\"kendoGridTableBody\", \"\", \"role\", \"presentation\", 3, \"groups\", \"isLocked\", \"data\", \"noRecordsText\", \"columns\", \"totalColumnsCount\", \"detailTemplate\", \"showGroupFooters\", \"skip\", \"selectable\", \"trackBy\", \"filterable\", \"rowClass\", \"isLoading\", \"isVirtual\", \"loadingTemplate\"], [\"role\", \"presentation\", 1, \"k-width-container\"], [\"kendoGridLoading\", \"\"]], template: function ListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_div_0_Template, 10, 33, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵelementStart(3, \"div\", 3);\n ɵngcc0.ɵɵelementStart(4, \"table\", 4, 5);\n ɵngcc0.ɵɵelement(6, \"colgroup\", 6);\n ɵngcc0.ɵɵelement(7, \"tbody\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, ListComponent_kendo_resize_sensor_8_Template, 1, 0, \"kendo-resize-sensor\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, ListComponent_kendo_resize_sensor_9_Template, 1, 0, \"kendo-resize-sensor\", 8);\n ɵngcc0.ɵɵelementStart(10, \"div\", 9);\n ɵngcc0.ɵɵelement(11, \"div\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(12, ListComponent_div_12_Template, 2, 2, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(13, ListComponent_div_13_Template, 1, 0, \"div\", 11);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isLocked);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoGridResizableContainer\", ctx.lockedLeafColumns.length)(\"lockedWidth\", ctx.lockedWidth + 1);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.nonLockedWidth, \"px\");\n ɵngcc0.ɵɵproperty(\"virtualColumns\", ctx.virtualColumns);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"groups\", ctx.isLocked ? ɵngcc0.ɵɵpureFunction0(35, _c138) : ctx.groups)(\"columns\", ctx.nonLockedColumnsToRender)(\"detailTemplate\", ctx.detailTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"skipGroupDecoration\", ctx.isLocked)(\"data\", ctx.data)(\"groups\", ctx.groups)(\"showGroupFooters\", ctx.showFooter)(\"columns\", ctx.nonLockedColumnsToRender)(\"allColumns\", ctx.nonLockedLeafColumns)(\"detailTemplate\", ctx.detailTemplate)(\"noRecordsTemplate\", ctx.noRecordsTemplate)(\"lockedColumnsCount\", ctx.lockedLeafColumns.length)(\"totalColumnsCount\", ctx.leafColumns.length)(\"skip\", ctx.skip)(\"selectable\", ctx.selectable)(\"trackBy\", ctx.trackBy)(\"filterable\", ctx.filterable)(\"rowClass\", ctx.rowClass)(\"rowSticky\", ctx.rowSticky)(\"virtualColumns\", ctx.virtualColumns)(\"isLoading\", ctx.loading)(\"isVirtual\", ctx.isVirtual)(\"loadingTemplate\", ctx.loadingTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isLocked);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isLocked || ctx.virtualColumns);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.totalHeight, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.virtualColumns);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n } }, directives: function () { return [ɵngcc5.NgIf, ɵngcc2.EventsOutsideAngularDirective, TableDirective, ColGroupComponent, TableBodyComponent, ɵngcc2.ResizeSensorComponent, ResizableContainerDirective, LoadingComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding(\"class.k-grid-container\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ListComponent.prototype, \"hostClass\", null);\n__decorate([\n HostBinding(\"attr.role\"),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ListComponent.prototype, \"hostRole\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ListComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ListComponent.prototype, \"groups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"total\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"rowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"stickyRowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"detailRowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"take\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnsContainer)\n], ListComponent.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", DetailTemplateDirective)\n], ListComponent.prototype, \"detailTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", NoRecordsTemplateDirective)\n], ListComponent.prototype, \"noRecordsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"selectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"groupable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ListComponent.prototype, \"rowClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ListComponent.prototype, \"rowSticky\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ListComponent.prototype, \"trackBy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"virtualColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"isVirtual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ListComponent.prototype, \"loadingTemplate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"contentScroll\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"pageChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ListComponent.prototype, \"scrollBottom\", void 0);\n__decorate([\n ViewChild('container', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('lockedContainer', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"lockedContainer\", void 0);\n__decorate([\n ViewChild('lockedTable', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"lockedTable\", void 0);\n__decorate([\n ViewChild('table', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ListComponent.prototype, \"table\", void 0);\n__decorate([\n ViewChildren(ResizeSensorComponent),\n __metadata(\"design:type\", QueryList)\n], ListComponent.prototype, \"resizeSensors\", void 0);\nListComponent = __decorate([ __param(0, Inject(SCROLLER_FACTORY_TOKEN)),\n __metadata(\"design:paramtypes\", [Object, DetailsService,\n ChangeNotificationService,\n SuspendService,\n GroupsService,\n NgZone,\n Renderer2,\n ScrollSyncService,\n ResizeService,\n EditService,\n BrowserSupportService,\n NavigationService,\n ScrollRequestService,\n LocalizationService,\n ColumnResizingService,\n ChangeDetectorRef,\n PDFService,\n ColumnInfoService])\n], ListComponent);\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 */\nlet DataBindingDirective = class 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$$1) {\n this.applyState(state$$1);\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$$1) {\n return process(this.originalData, state$$1);\n }\n applyState({ skip, take: take$$1, sort, group, filter: filter$$1 }) {\n this.skip = skip;\n this.pageSize = take$$1;\n this.sort = sort;\n this.group = group;\n this.filter = filter$$1;\n }\n updateGridData() {\n this.grid.data = this.process(this.state);\n this.dataChanged = false;\n }\n};\nDataBindingDirective.ɵfac = function DataBindingDirective_Factory(t) { return new (t || DataBindingDirective)(ɵngcc0.ɵɵdirectiveInject(GridComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(LocalDataChangesService)); };\nDataBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DataBindingDirective, selectors: [[\"\", \"kendoGridBinding\", \"\"]], inputs: { skip: \"skip\", sort: \"sort\", filter: \"filter\", pageSize: \"pageSize\", group: \"group\", data: [\"kendoGridBinding\", \"data\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DataBindingDirective.prototype, \"skip\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DataBindingDirective.prototype, \"sort\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DataBindingDirective.prototype, \"filter\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], DataBindingDirective.prototype, \"pageSize\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DataBindingDirective.prototype, \"group\", null);\n__decorate([\n Input(\"kendoGridBinding\"),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DataBindingDirective.prototype, \"data\", null);\nDataBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [GridComponent,\n ChangeDetectorRef,\n LocalDataChangesService])\n], DataBindingDirective);\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 */\nlet SelectionDirective = class SelectionDirective extends Selection {\n constructor(grid, cd) {\n super(grid, cd);\n this.grid = grid;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.grid.selectable === false) {\n this.grid.selectable = true;\n }\n this.grid.selectionDirective = this;\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n super.destroy();\n }\n};\nSelectionDirective.ɵfac = function SelectionDirective_Factory(t) { return new (t || SelectionDirective)(ɵngcc0.ɵɵdirectiveInject(GridComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSelectionDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SelectionDirective, selectors: [[\"\", \"kendoGridSelectBy\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nSelectionDirective = __decorate([ __metadata(\"design:paramtypes\", [GridComponent, ChangeDetectorRef])\n], SelectionDirective);\n\n/**\n * A directive which controls the expanded state of the master detail rows.\n */\nlet ExpandDetailsDirective = class 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 * @default false\n */\n this.initiallyExpanded = false;\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 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 return this.expandedDetailKeys.indexOf(key) > -1 ? !this.initiallyExpanded : this.initiallyExpanded;\n }\n toggleState(args) {\n const key = this.keyGetter(args.dataItem);\n if (Boolean(this.initiallyExpanded) !== args.expand) {\n this.expandedDetailKeys.push(key);\n }\n else {\n const index = this.expandedDetailKeys.indexOf(key);\n this.expandedDetailKeys.splice(index, 1);\n }\n this.expandedDetailKeysChange.emit(this.expandedDetailKeys);\n }\n};\nExpandDetailsDirective.ɵfac = function ExpandDetailsDirective_Factory(t) { return new (t || ExpandDetailsDirective)(ɵngcc0.ɵɵdirectiveInject(GridComponent)); };\nExpandDetailsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ExpandDetailsDirective, selectors: [[\"\", \"kendoGridExpandDetailsBy\", \"\"]], inputs: { expandedDetailKeys: \"expandedDetailKeys\", initiallyExpanded: \"initiallyExpanded\", expandDetailsKey: [\"kendoGridExpandDetailsBy\", \"expandDetailsKey\"], expandDetailBy: \"expandDetailBy\" }, outputs: { expandedDetailKeysChange: \"expandedDetailKeysChange\" }, exportAs: [\"kendoGridExpandDetailsBy\"] });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ExpandDetailsDirective.prototype, \"expandedDetailKeysChange\", void 0);\n__decorate([\n Input('kendoGridExpandDetailsBy'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ExpandDetailsDirective.prototype, \"expandDetailsKey\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ExpandDetailsDirective.prototype, \"expandDetailBy\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ExpandDetailsDirective.prototype, \"expandedDetailKeys\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExpandDetailsDirective.prototype, \"initiallyExpanded\", void 0);\nExpandDetailsDirective = __decorate([ __metadata(\"design:paramtypes\", [GridComponent])\n], ExpandDetailsDirective);\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 */\nlet ExpandGroupDirective = class 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 = function ExpandGroupDirective_Factory(t) { return new (t || ExpandGroupDirective)(ɵngcc0.ɵɵdirectiveInject(GridComponent)); };\nExpandGroupDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ExpandGroupDirective, selectors: [[\"\", \"kendoGridExpandGroupBy\", \"\"]], inputs: { groupsInitiallyExpanded: \"groupsInitiallyExpanded\", expandGroupBy: [\"kendoGridExpandGroupBy\", \"expandGroupBy\"], expandedGroupKeys: \"expandedGroupKeys\" }, outputs: { expandedGroupKeysChange: \"expandedGroupKeysChange\" }, exportAs: [\"kendoGridExpandGroupBy\"] });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ExpandGroupDirective.prototype, \"expandedGroupKeysChange\", void 0);\n__decorate([\n Input('kendoGridExpandGroupBy'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ExpandGroupDirective.prototype, \"expandGroupBy\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], ExpandGroupDirective.prototype, \"expandedGroupKeys\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExpandGroupDirective.prototype, \"groupsInitiallyExpanded\", void 0);\nExpandGroupDirective = __decorate([ __metadata(\"design:paramtypes\", [GridComponent])\n], ExpandGroupDirective);\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, 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\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"groupPanelEmpty\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"noRecords\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerFirstPage\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerLastPage\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerPreviousPage\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerNextPage\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerPage\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerItemsPerPage\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerOf\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pagerPageNumberInputTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterInputLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterMenuTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterMenuOperatorsDropDownLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterMenuLogicDropDownLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterEqOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterNotEqOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterIsNullOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterIsNotNullOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterIsEmptyOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterIsNotEmptyOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterStartsWithOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterContainsOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterNotContainsOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterEndsWithOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterGteOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterGtOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterLteOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterLtOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterIsTrue\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterIsFalse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterBooleanAll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterAfterOrEqualOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterAfterOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterBeforeOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterBeforeOrEqualOperator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterFilterButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterClearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterAndLogic\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterOrLogic\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"loading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"gridLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"columnMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"setColumnPosition\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"lock\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"unlock\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"stick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"unstick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"sortable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"sortAscending\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"sortDescending\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"sortedAscending\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"sortedDescending\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"sortedDefault\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"columnsApply\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"columnsReset\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"detailExpand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"detailCollapse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterDateToday\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterDateToggle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterNumericDecrement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filterNumericIncrement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"selectionCheckboxLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"selectAllCheckboxLabel\", void 0);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoGridLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\nvar CustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_grid %}#toc-localization)).\n */\nlet CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nCustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(t) { return new (t || CustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CustomMessagesComponent, selectors: [[\"kendo-grid-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nCustomMessagesComponent = CustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CustomMessagesComponent);\n\n/**\n * @hidden\n */\nlet FilterRowComponent = class 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({}, 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 = function FilterRowComponent_Factory(t) { return new (t || FilterRowComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService)); };\nFilterRowComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FilterRowComponent, selectors: [[\"\", \"kendoGridFilterRow\", \"\"]], hostVars: 2, hostBindings: function FilterRowComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filter-row\", ctx.filterRowClass);\n } }, inputs: { columns: \"columns\", groups: \"groups\", filter: \"filter\", detailTemplate: \"detailTemplate\", logicalRowIndex: \"logicalRowIndex\", lockedColumnsCount: \"lockedColumnsCount\" }, attrs: _c144, decls: 3, vars: 3, consts: [[\"role\", \"presentation\", 3, \"k-group-cell\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\", 3, \"k-hierarchy-cell\", 4, \"ngIf\"], [\"kendoGridFilterCell\", \"\", \"kendoGridLogicalCell\", \"\", 3, \"k-grid-header-sticky\", \"ngStyle\", \"ngClass\", \"column\", \"filter\", \"logicalRowIndex\", \"logicalColIndex\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\"], [\"kendoGridFilterCell\", \"\", \"kendoGridLogicalCell\", \"\", 3, \"ngStyle\", \"ngClass\", \"column\", \"filter\", \"logicalRowIndex\", \"logicalColIndex\"]], template: function FilterRowComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FilterRowComponent_td_0_Template, 1, 2, \"td\", 0);\n ɵngcc0.ɵɵtemplate(1, FilterRowComponent_td_1_Template, 1, 2, \"td\", 1);\n ɵngcc0.ɵɵtemplate(2, FilterRowComponent_td_2_Template, 1, 9, \"td\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.groups);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.detailTemplate == null ? null : ctx.detailTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.columns);\n } }, directives: function () { return [ɵngcc5.NgForOf, ɵngcc5.NgIf, FilterCellComponent, LogicalCellDirective, ɵngcc5.NgStyle, ɵngcc5.NgClass]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FilterRowComponent.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FilterRowComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FilterRowComponent.prototype, \"groups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", DetailTemplateDirective)\n], FilterRowComponent.prototype, \"detailTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FilterRowComponent.prototype, \"logicalRowIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FilterRowComponent.prototype, \"lockedColumnsCount\", void 0);\n__decorate([\n HostBinding('class.k-filter-row'),\n __metadata(\"design:type\", Boolean)\n], FilterRowComponent.prototype, \"filterRowClass\", void 0);\nFilterRowComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ColumnInfoService])\n], FilterRowComponent);\n\nconst areDifferent = (a, b) => a.field !== b.field || a.operator !== b.operator || a.value !== b.value;\nconst isChanged$1 = (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 // tslint:disable-next-line:no-use-before-declare\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$$1) => copyObject(filter$$1);\n/**\n * @hidden\n */\nconst cloneFilters = (filter$$1) => {\n if (!filter$$1) {\n return;\n }\n if (isCompositeFilterDescriptor(filter$$1)) {\n return {\n filters: cloneFilters(filter$$1.filters),\n logic: filter$$1.logic\n };\n }\n else if (Array.isArray(filter$$1)) {\n return filter$$1.map(cloneFilters);\n }\n return cloneFilter(filter$$1);\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$1(a.filters, b.filters);\n};\n\n/**\n * @hidden\n */\nlet FilterCellComponent = class FilterCellComponent {\n /**\n * @hidden\n */\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 // tslint:disable-next-line:no-string-literal\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 = function FilterCellComponent_Factory(t) { return new (t || FilterCellComponent)(); };\nFilterCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FilterCellComponent, selectors: [[\"\", \"kendoGridFilterCell\", \"\"]], inputs: { filter: \"filter\", column: \"column\" }, attrs: _c145, decls: 1, vars: 1, consts: [[3, \"ngIf\"], [3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [\"kendoFilterCellHost\", \"\", 3, \"column\", \"filter\"], [4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function FilterCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FilterCellComponent_ng_template_0_Template, 3, 3, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isFilterable);\n } }, directives: function () { return [ɵngcc5.NgIf, ɵngcc5.NgSwitch, ɵngcc5.NgSwitchCase, FilterCellHostDirective, ɵngcc5.NgTemplateOutlet]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], FilterCellComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FilterCellComponent.prototype, \"filter\", null);\n\nconst localizeOperators = operators => localization => Object.keys(operators).reduce((acc, key) => {\n acc[operators[key]] = localization.get(key);\n return acc;\n}, {}); // tslint:disable-line:align\nconst operatorTexts = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n // tslint:disable-next-line:object-literal-sort-keys\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 /**\n *\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 = function FilterOperatorBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nFilterOperatorBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterOperatorBase, inputs: { text: \"text\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FilterOperatorBase.prototype, \"text\", null);\n\nconst insertDefaultFilter = (index, rootFilter, filter$$1) => {\n rootFilter = (rootFilter || { filters: [], logic: \"and\" });\n rootFilter.filters[index] = filter$$1;\n return filter$$1;\n};\n/**\n * @hidden\n */\nconst setFilter = (index, filter$$1, field, defaultOperator) => {\n if (isPresent(filter$$1) && isPresent(filter$$1.filters) && filter$$1.filters.length > index) {\n return filter$$1.filters[index];\n }\n else {\n return insertDefaultFilter(index, filter$$1, {\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$$1) => {\n if (isPresent(filter$$1.filters)) {\n return filter$$1.filters.reduce((acc, curr) => acc.concat(isCompositeFilterDescriptor(curr) ? flatten(curr) : [curr]), []);\n }\n return [];\n};\nconst trimFilterByField = (filter$$1, field) => {\n if (isPresent(filter$$1) && isPresent(filter$$1.filters)) {\n filter$$1.filters = filter$$1.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$$1, field) => flatten(filter$$1 || {}).filter(x => x.field === field);\n/**\n * @hidden\n */\nconst filterByField = (filter$$1, field) => {\n let [currentFilter] = filtersByField(filter$$1, field);\n return currentFilter;\n};\n/**\n * @hidden\n */\nconst removeFilter = (filter$$1, field) => {\n trimFilterByField(filter$$1, field);\n return filter$$1;\n};\n/**\n * @hidden\n */\nconst localizeOperators$1 = 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 */\nclass BaseFilterCellComponent {\n constructor(filterService) {\n this.filterService = filterService;\n this.operatorList = new QueryList();\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return true;\n }\n get operators() {\n return this._operators.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$$1) {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n let [currentFilter] = flatten(root).filter(x => x.field === filter$$1.field);\n if (!isPresent(currentFilter)) {\n root.filters.push(filter$$1);\n }\n else {\n Object.assign(currentFilter, filter$$1);\n }\n return root;\n }\n applyFilter(filter$$1) {\n this.filterService.filter(filter$$1);\n }\n}\nBaseFilterCellComponent.ɵfac = function BaseFilterCellComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nBaseFilterCellComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BaseFilterCellComponent, contentQueries: function BaseFilterCellComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, FilterOperatorBase, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.operatorList = _t);\n } }, hostVars: 2, hostBindings: function BaseFilterCellComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n } } });\n__decorate([\n HostBinding('class.k-filtercell'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], BaseFilterCellComponent.prototype, \"hostClasses\", null);\n__decorate([\n ContentChildren(FilterOperatorBase),\n __metadata(\"design:type\", QueryList)\n], BaseFilterCellComponent.prototype, \"operatorList\", void 0);\n\nconst numericOperators = localizeOperators$1({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n // tslint:disable-next-line:object-literal-sort-keys\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 = function NumericFilterComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nNumericFilterComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NumericFilterComponent, inputs: { operator: \"operator\", step: \"step\", spinners: \"spinners\", format: \"format\", column: \"column\", filter: \"filter\", min: \"min\", max: \"max\", decimals: \"decimals\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], NumericFilterComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NumericFilterComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericFilterComponent.prototype, \"operator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericFilterComponent.prototype, \"spinners\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterComponent.prototype, \"decimals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], NumericFilterComponent.prototype, \"format\", null);\n\n/**\n * Represents a numeric filter cell.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet NumericFilterCellComponent = class 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 = function NumericFilterCellComponent_Factory(t) { return new (t || NumericFilterCellComponent)(ɵngcc0.ɵɵdirectiveInject(FilterService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nNumericFilterCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NumericFilterCellComponent, selectors: [[\"kendo-grid-numeric-filter-cell\"]], inputs: { filterDelay: \"filterDelay\", showOperators: \"showOperators\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 17, consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"showOperators\"], [\"kendoGridFocusable\", \"\", \"kendoFilterInput\", \"\", 3, \"columnLabel\", \"filterDelay\", \"autoCorrect\", \"value\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\"], [3, \"increment\", \"decrement\"]], template: function NumericFilterCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-numerictextbox\", 1);\n ɵngcc0.ɵɵelement(2, \"kendo-numerictextbox-messages\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"showOperators\", ctx.showOperators);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", ctx.filterDelay)(\"autoCorrect\", true)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value)(\"format\", ctx.format)(\"decimals\", ctx.decimals)(\"spinners\", ctx.spinners)(\"min\", ctx.min)(\"max\", ctx.max)(\"step\", ctx.step);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"increment\", ctx.messageFor(\"filterNumericIncrement\"))(\"decrement\", ctx.messageFor(\"filterNumericDecrement\"));\n } }, directives: function () { return [FilterCellWrapperComponent, ɵngcc6.NumericTextBoxComponent, FocusableDirective, FilterInputDirective, ɵngcc6.NumericTextBoxCustomMessagesComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterCellComponent.prototype, \"filterDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericFilterCellComponent.prototype, \"showOperators\", void 0);\nNumericFilterCellComponent = __decorate([ __metadata(\"design:paramtypes\", [FilterService,\n LocalizationService])\n], NumericFilterCellComponent);\n\n/**\n * @hidden\n */\nlet FilterInputDirective = class 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('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.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);\n }\n else {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-label', ariaValue);\n }\n }\n};\nFilterInputDirective.ɵfac = function FilterInputDirective_Factory(t) { return new (t || FilterInputDirective)(ɵngcc0.ɵɵdirectiveInject(NG_VALUE_ACCESSOR, 2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nFilterInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterInputDirective, selectors: [[\"\", \"kendoFilterInput\", \"\"]], contentQueries: function FilterInputDirective_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, KendoInput, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.kendoInput = _t.first);\n } }, inputs: { filterDelay: \"filterDelay\", value: \"value\", columnLabel: \"columnLabel\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n ContentChild(KendoInput, { static: true }),\n __metadata(\"design:type\", Object)\n], FilterInputDirective.prototype, \"kendoInput\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FilterInputDirective.prototype, \"filterDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FilterInputDirective.prototype, \"columnLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FilterInputDirective.prototype, \"value\", null);\nFilterInputDirective = __decorate([ __param(0, Self()), __param(0, Inject(NG_VALUE_ACCESSOR)),\n __metadata(\"design:paramtypes\", [Array, NgZone,\n ElementRef,\n Renderer2])\n], FilterInputDirective);\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 this.operators = [];\n }\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n get currentOperator() {\n const filter$$1 = this.currentFilter;\n if (!this._operator) {\n this._operator = filter$$1 ? filter$$1.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(\"filter\", changes, false)) {\n this._operator = null;\n this.filterInputDisabled = isEmptyValueOperator(this.currentOperator);\n }\n }\n}\nFilterInputWrapperComponent.ɵfac = function FilterInputWrapperComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nFilterInputWrapperComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterInputWrapperComponent, contentQueries: function FilterInputWrapperComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, FilterInputDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, inputs: { operators: \"operators\", defaultOperator: \"defaultOperator\", column: \"column\", filter: \"filter\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FilterInputWrapperComponent.prototype, \"operators\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], FilterInputWrapperComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FilterInputWrapperComponent.prototype, \"filter\", void 0);\n__decorate([\n ContentChild(FilterInputDirective, { static: false }),\n __metadata(\"design:type\", FilterInputDirective)\n], FilterInputWrapperComponent.prototype, \"input\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FilterInputWrapperComponent.prototype, \"defaultOperator\", null);\n\nconst EMPTY_FILTER_OPERATORS = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];\n/**\n * @hidden\n */\nlet FilterCellWrapperComponent = class 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$$1 = this.currentFilter;\n return isPresent(filter$$1) && (!isNullOrEmptyString(filter$$1.value) ||\n EMPTY_FILTER_OPERATORS.indexOf(String(filter$$1.operator)) >= 0);\n }\n filterChange(filter$$1) {\n this.applyFilter(filter$$1);\n }\n};\nFilterCellWrapperComponent.ɵfac = function FilterCellWrapperComponent_Factory(t) { return new (t || FilterCellWrapperComponent)(ɵngcc0.ɵɵdirectiveInject(FilterService)); };\nFilterCellWrapperComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FilterCellWrapperComponent, selectors: [[\"kendo-grid-filter-wrapper-cell\"]], hostVars: 4, hostBindings: function FilterCellWrapperComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filtercell-wrapper\", ctx.hostClasses)(\"k-filtercell\", ctx.overrideBaseClasses);\n } }, inputs: { showOperators: \"showOperators\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c146, decls: 2, vars: 4, consts: [[3, \"showOperators\", \"operators\", \"showButton\", \"value\", \"clear\", \"valueChange\"]], template: function FilterCellWrapperComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-grid-filter-cell-operators\", 0);\n ɵngcc0.ɵɵlistener(\"clear\", function FilterCellWrapperComponent_Template_kendo_grid_filter_cell_operators_clear_1_listener() { return ctx.onClear(); })(\"valueChange\", function FilterCellWrapperComponent_Template_kendo_grid_filter_cell_operators_valueChange_1_listener($event) { return ctx.currentOperator = $event; });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"showOperators\", ctx.showOperators)(\"operators\", ctx.operators)(\"showButton\", ctx.showButton)(\"value\", ctx.currentOperator);\n } }, directives: function () { return [FilterCellOperatorsComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-filtercell-wrapper'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FilterCellWrapperComponent.prototype, \"hostClasses\", null);\n__decorate([\n HostBinding('class.k-filtercell'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FilterCellWrapperComponent.prototype, \"overrideBaseClasses\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FilterCellWrapperComponent.prototype, \"showOperators\", void 0);\nFilterCellWrapperComponent = __decorate([ __metadata(\"design:paramtypes\", [FilterService])\n], FilterCellWrapperComponent);\n\n// tslint:disable:no-access-missing-member\nconst stringOperators = localizeOperators$1({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n // tslint:disable-next-line:object-literal-sort-keys\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(this.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n}\nStringFilterComponent.ɵfac = function StringFilterComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nStringFilterComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: StringFilterComponent, inputs: { operator: \"operator\", column: \"column\", filter: \"filter\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], StringFilterComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StringFilterComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StringFilterComponent.prototype, \"operator\", void 0);\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 */\nlet StringFilterCellComponent = class 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 = function StringFilterCellComponent_Factory(t) { return new (t || StringFilterCellComponent)(ɵngcc0.ɵɵdirectiveInject(FilterService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nStringFilterCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StringFilterCellComponent, selectors: [[\"kendo-grid-string-filter-cell\"]], inputs: { filterDelay: \"filterDelay\", showOperators: \"showOperators\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 8, consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"showOperators\"], [\"kendoGridFocusable\", \"\", \"kendoFilterInput\", \"\", 1, \"k-textbox\", 3, \"columnLabel\", \"filterDelay\", \"ngModel\"]], template: function StringFilterCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0);\n ɵngcc0.ɵɵelement(1, \"input\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"showOperators\", ctx.showOperators);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", ctx.filterDelay)(\"ngModel\", ctx.currentFilter == null ? null : ctx.currentFilter.value);\n } }, directives: [FilterCellWrapperComponent, ɵngcc7.DefaultValueAccessor, FocusableDirective, FilterInputDirective, ɵngcc7.NgControlStatus, ɵngcc7.NgModel], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], StringFilterCellComponent.prototype, \"filterDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], StringFilterCellComponent.prototype, \"showOperators\", void 0);\nStringFilterCellComponent = __decorate([ __metadata(\"design:paramtypes\", [FilterService,\n LocalizationService])\n], StringFilterCellComponent);\n\n/**\n * Represents a component which accommodates the filter operators.\n */\nlet FilterCellOperatorsComponent = class 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 = function FilterCellOperatorsComponent_Factory(t) { return new (t || FilterCellOperatorsComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nFilterCellOperatorsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FilterCellOperatorsComponent, selectors: [[\"kendo-grid-filter-cell-operators\"]], viewQuery: function FilterCellOperatorsComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c147, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropdown = _t.first);\n } }, hostVars: 2, hostBindings: function FilterCellOperatorsComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filtercell-operator\", ctx.hostClasses);\n } }, inputs: { operators: \"operators\", showOperators: \"showOperators\", showButton: \"showButton\", value: \"value\" }, outputs: { valueChange: \"valueChange\", clear: \"clear\" }, decls: 3, vars: 5, consts: [[\"kendoGridFocusable\", \"\", \"class\", \"k-dropdown-operator\", \"iconClass\", \"k-i-filter\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"data\", \"value\", \"valuePrimitive\", \"popupSettings\", \"valueChange\", \"keydown\", 4, \"ngIf\"], [\"type\", \"button\", \"kendoGridFocusable\", \"\", 1, \"k-button\", \"k-button-icon\", 3, \"ngClass\", \"title\", \"click\", \"keydown\"], [1, \"k-icon\", \"k-i-filter-clear\"], [\"kendoGridFocusable\", \"\", \"iconClass\", \"k-i-filter\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-dropdown-operator\", 3, \"data\", \"value\", \"valuePrimitive\", \"popupSettings\", \"valueChange\", \"keydown\"], [\"dropdown\", \"\"]], template: function FilterCellOperatorsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FilterCellOperatorsComponent_kendo_dropdownlist_0_Template, 2, 5, \"kendo-dropdownlist\", 0);\n ɵngcc0.ɵɵelementStart(1, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function FilterCellOperatorsComponent_Template_button_click_1_listener() { return ctx.clearClick(); })(\"keydown\", function FilterCellOperatorsComponent_Template_button_keydown_1_listener($event) { return ctx.clearKeydown($event); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showOperators);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(3, _c149, ctx.showButton))(\"title\", ctx.clearText);\n } }, directives: [ɵngcc5.NgIf, ɵngcc8.DropDownListComponent, FocusableDirective, ɵngcc5.NgClass], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-filtercell-operator'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FilterCellOperatorsComponent.prototype, \"hostClasses\", null);\n__decorate([\n ViewChild('dropdown', { static: false }),\n __metadata(\"design:type\", DropDownListComponent)\n], FilterCellOperatorsComponent.prototype, \"dropdown\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FilterCellOperatorsComponent.prototype, \"operators\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FilterCellOperatorsComponent.prototype, \"showButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FilterCellOperatorsComponent.prototype, \"showOperators\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FilterCellOperatorsComponent.prototype, \"value\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FilterCellOperatorsComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FilterCellOperatorsComponent.prototype, \"clear\", void 0);\nFilterCellOperatorsComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], FilterCellOperatorsComponent);\n\n// tslint:disable:no-access-missing-member\nconst stringOperators$1 = localizeOperators$1({\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n // tslint:disable-next-line:object-literal-sort-keys\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 */\nlet AutoCompleteFilterCellComponent = class AutoCompleteFilterCellComponent extends BaseFilterCellComponent {\n constructor(filterService, column, localization) {\n super(filterService);\n this.localization = localization;\n this.showOperators = true;\n this.defaultOperators = stringOperators$1(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 = function AutoCompleteFilterCellComponent_Factory(t) { return new (t || AutoCompleteFilterCellComponent)(ɵngcc0.ɵɵdirectiveInject(FilterService), ɵngcc0.ɵɵdirectiveInject(ColumnComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nAutoCompleteFilterCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AutoCompleteFilterCellComponent, selectors: [[\"kendo-grid-autocomplete-filter-cell\"]], inputs: { showOperators: \"showOperators\", column: \"column\", valueField: \"valueField\", filter: \"filter\", data: \"data\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 7, consts: [[3, \"column\", \"filter\", \"operators\", \"showOperators\"], [\"kendoFilterInput\", \"\", 3, \"data\", \"valueField\", \"value\"]], template: function AutoCompleteFilterCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0);\n ɵngcc0.ɵɵelement(1, \"kendo-autocomplete\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"showOperators\", ctx.showOperators);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"valueField\", ctx.valueField)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value);\n } }, directives: [FilterCellWrapperComponent, ɵngcc8.AutoCompleteComponent, FilterInputDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AutoCompleteFilterCellComponent.prototype, \"showOperators\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], AutoCompleteFilterCellComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AutoCompleteFilterCellComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], AutoCompleteFilterCellComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], AutoCompleteFilterCellComponent.prototype, \"valueField\", null);\nAutoCompleteFilterCellComponent = __decorate([ __metadata(\"design:paramtypes\", [FilterService,\n ColumnComponent,\n LocalizationService])\n], AutoCompleteFilterCellComponent);\n\n// tslint: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 = function BooleanFilterComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nBooleanFilterComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BooleanFilterComponent, hostVars: 2, hostBindings: function BooleanFilterComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filtercell-boolean\", ctx.hostClasses);\n } }, inputs: { column: \"column\", filter: \"filter\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n HostBinding('class.k-filtercell-boolean'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], BooleanFilterComponent.prototype, \"hostClasses\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], BooleanFilterComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], BooleanFilterComponent.prototype, \"filter\", void 0);\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 */\nlet BooleanFilterCellComponent = class 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 = function BooleanFilterCellComponent_Factory(t) { return new (t || BooleanFilterCellComponent)(ɵngcc0.ɵɵdirectiveInject(FilterService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nBooleanFilterCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BooleanFilterCellComponent, selectors: [[\"kendo-grid-boolean-filter-cell\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 11, consts: [[3, \"column\", \"filter\", \"showOperators\", \"defaultOperator\"], [\"kendoFilterInput\", \"\", \"kendoGridFocusable\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"columnLabel\", \"defaultItem\", \"data\", \"popupSettings\", \"valuePrimitive\", \"value\"]], template: function BooleanFilterCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0);\n ɵngcc0.ɵɵelement(1, \"kendo-dropdownlist\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"showOperators\", false)(\"defaultOperator\", ctx.operator);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"defaultItem\", ctx.defaultItem)(\"data\", ctx.items)(\"popupSettings\", ɵngcc0.ɵɵpureFunction0(10, _c148))(\"valuePrimitive\", true)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value);\n } }, directives: [FilterCellWrapperComponent, ɵngcc8.DropDownListComponent, FilterInputDirective, FocusableDirective], encapsulation: 2 });\nBooleanFilterCellComponent = __decorate([ __metadata(\"design:paramtypes\", [FilterService,\n LocalizationService,\n ChangeDetectorRef])\n], BooleanFilterCellComponent);\n\n// tslint:disable:no-access-missing-member\nconst dateOperators = localizeOperators$1({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n // tslint:disable-next-line:object-literal-sort-keys\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 = function DateFilterComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nDateFilterComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DateFilterComponent, inputs: { operator: \"operator\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", weekNumber: \"weekNumber\", format: \"format\", column: \"column\", filter: \"filter\", min: \"min\", max: \"max\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], DateFilterComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateFilterComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterComponent.prototype, \"operator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], DateFilterComponent.prototype, \"format\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DateFilterComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DateFilterComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateFilterComponent.prototype, \"formatPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterComponent.prototype, \"bottomView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterComponent.prototype, \"topView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateFilterComponent.prototype, \"weekNumber\", void 0);\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 */\nlet DateFilterCellComponent = class 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 = function DateFilterCellComponent_Factory(t) { return new (t || DateFilterCellComponent)(ɵngcc0.ɵɵdirectiveInject(FilterService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nDateFilterCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateFilterCellComponent, selectors: [[\"kendo-grid-date-filter-cell\"]], inputs: { showOperators: \"showOperators\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 18, consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"showOperators\"], [\"kendoFilterInput\", \"\", \"kendoGridFocusable\", \"\", 3, \"columnLabel\", \"value\", \"format\", \"formatPlaceholder\", \"placeholder\", \"activeView\", \"bottomView\", \"topView\", \"min\", \"max\", \"weekNumber\"], [3, \"toggle\", \"today\"]], template: function DateFilterCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-datepicker\", 1);\n ɵngcc0.ɵɵelement(2, \"kendo-datepicker-messages\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"showOperators\", ctx.showOperators);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value)(\"format\", ctx.format)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"placeholder\", ctx.placeholder)(\"activeView\", ctx.activeView)(\"bottomView\", ctx.bottomView)(\"topView\", ctx.topView)(\"min\", ctx.min)(\"max\", ctx.max)(\"weekNumber\", ctx.weekNumber);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"toggle\", ctx.messageFor(\"filterDateToggle\"))(\"today\", ctx.messageFor(\"filterDateToday\"));\n } }, directives: [FilterCellWrapperComponent, ɵngcc9.DatePickerComponent, FilterInputDirective, FocusableDirective, ɵngcc9.DatePickerCustomMessagesComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateFilterCellComponent.prototype, \"showOperators\", void 0);\nDateFilterCellComponent = __decorate([ __metadata(\"design:paramtypes\", [FilterService,\n LocalizationService])\n], DateFilterCellComponent);\n\n/**\n * @hidden\n */\nlet ColGroupComponent = class ColGroupComponent {\n /**\n * @hidden\n */\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 = function ColGroupComponent_Factory(t) { return new (t || ColGroupComponent)(); };\nColGroupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColGroupComponent, selectors: [[\"\", \"kendoGridColGroup\", \"\"]], inputs: { columns: \"columns\", groups: \"groups\", detailTemplate: \"detailTemplate\" }, attrs: _c150, decls: 1, vars: 1, consts: [[3, \"ngIf\"], [3, \"k-group-col\", 4, \"ngFor\", \"ngForOf\"], [3, \"k-hierarchy-col\", 4, \"ngIf\"], [3, \"width\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"]], template: function ColGroupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ColGroupComponent_ng_template_0_Template, 3, 4, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", true);\n } }, directives: [ɵngcc5.NgIf, ɵngcc5.NgForOf], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ColGroupComponent.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ColGroupComponent.prototype, \"groups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", DetailTemplateDirective)\n], ColGroupComponent.prototype, \"detailTemplate\", void 0);\n\n/**\n * @hidden\n */\nlet LoadingComponent = class 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 = function LoadingComponent_Factory(t) { return new (t || LoadingComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLoadingComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LoadingComponent, selectors: [[\"\", \"kendoGridLoading\", \"\"]], hostVars: 2, hostBindings: function LoadingComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-loading-mask\", ctx.hostClass);\n } }, attrs: _c151, decls: 4, vars: 1, consts: [[1, \"k-loading-text\"], [1, \"k-loading-image\"], [1, \"k-loading-color\"]], template: function LoadingComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"div\", 1);\n ɵngcc0.ɵɵelement(3, \"div\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.loadingText);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-loading-mask'),\n __metadata(\"design:type\", Boolean)\n], LoadingComponent.prototype, \"hostClass\", void 0);\nLoadingComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LoadingComponent);\n\n/**\n * @hidden\n */\nlet ResizableContainerDirective = class ResizableContainerDirective {\n constructor(el, renderer, resizeService, grid) {\n this.el = el;\n this.renderer = renderer;\n this.resizeService = resizeService;\n this.grid = grid;\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.grid && this.grid.wrapper) {\n const containerElement = this.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 = function ResizableContainerDirective_Factory(t) { return new (t || ResizableContainerDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ResizeService), ɵngcc0.ɵɵdirectiveInject(GridComponent, 8)); };\nResizableContainerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResizableContainerDirective, selectors: [[\"\", \"kendoGridResizableContainer\", \"\"]], inputs: { lockedWidth: \"lockedWidth\", kendoGridResizableContainer: \"kendoGridResizableContainer\" } });\n__decorate([\n Input('lockedWidth'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ResizableContainerDirective.prototype, \"lockedWidth\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ResizableContainerDirective.prototype, \"kendoGridResizableContainer\", null);\nResizableContainerDirective = __decorate([ __param(3, Optional()),\n __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ResizeService,\n GridComponent])\n], ResizableContainerDirective);\n\n/**\n * @hidden\n */\nlet TemplateContextDirective = class 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 = function TemplateContextDirective_Factory(t) { return new (t || TemplateContextDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nTemplateContextDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TemplateContextDirective, selectors: [[\"\", \"templateContext\", \"\"]], inputs: { templateContext: \"templateContext\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TemplateContextDirective.prototype, \"templateContext\", null);\nTemplateContextDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef])\n], TemplateContextDirective);\n\n/**\n * @hidden\n */\nlet FocusGroup = class 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 = function FocusGroup_Factory(t) { return new (t || FocusGroup)(ɵngcc0.ɵɵinject(FocusRoot)); };\nFocusGroup.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FocusGroup, factory: function (t) { return FocusGroup.ɵfac(t); } });\nFocusGroup = __decorate([ __metadata(\"design:paramtypes\", [FocusRoot])\n], FocusGroup);\n\nlet id = 0;\nfunction nextId() {\n return id++;\n}\n/**\n * @hidden\n */\nlet LogicalCellDirective = class 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();\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 = function LogicalCellDirective_Factory(t) { return new (t || LogicalCellDirective)(ɵngcc0.ɵɵdirectiveInject(FocusGroup), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService), ɵngcc0.ɵɵdirectiveInject(IdService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(CELL_CONTEXT, 8)); };\nLogicalCellDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LogicalCellDirective, selectors: [[\"\", \"kendoGridLogicalCell\", \"\"]], hostVars: 2, hostBindings: function LogicalCellDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.id)(\"aria-colindex\", ctx.ariaColIndex);\n } }, inputs: { logicalSlaveCell: \"logicalSlaveCell\", colSpan: \"colSpan\", rowSpan: \"rowSpan\", dataRowIndex: \"dataRowIndex\", detailExpandCell: \"detailExpandCell\", logicalColIndex: \"logicalColIndex\", logicalRowIndex: \"logicalRowIndex\", colIndex: \"colIndex\", groupItem: \"groupItem\", dataItem: \"dataItem\", headerLabelText: \"headerLabelText\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }]), ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalCellDirective.prototype, \"logicalColIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalCellDirective.prototype, \"logicalRowIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LogicalCellDirective.prototype, \"logicalSlaveCell\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalCellDirective.prototype, \"colIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalCellDirective.prototype, \"colSpan\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalCellDirective.prototype, \"rowSpan\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LogicalCellDirective.prototype, \"groupItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalCellDirective.prototype, \"dataRowIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LogicalCellDirective.prototype, \"dataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LogicalCellDirective.prototype, \"detailExpandCell\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LogicalCellDirective.prototype, \"headerLabelText\", void 0);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], LogicalCellDirective.prototype, \"id\", null);\n__decorate([\n HostBinding('attr.aria-colindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], LogicalCellDirective.prototype, \"ariaColIndex\", null);\nLogicalCellDirective = __decorate([ __param(7, Optional()), __param(7, Inject(CELL_CONTEXT)),\n __metadata(\"design:paramtypes\", [FocusGroup,\n ElementRef,\n ColumnInfoService,\n IdService,\n NavigationService,\n Renderer2,\n NgZone, Object])\n], LogicalCellDirective);\n\nlet id$1 = 0;\nfunction nextId$1() {\n return id$1++;\n}\n/**\n * @hidden\n */\nlet LogicalRowDirective = class 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$1();\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 = function LogicalRowDirective_Factory(t) { return new (t || LogicalRowDirective)(ɵngcc0.ɵɵdirectiveInject(IdService), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nLogicalRowDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LogicalRowDirective, selectors: [[\"\", \"kendoGridLogicalRow\", \"\"]], hostVars: 3, hostBindings: function LogicalRowDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.hostRole)(\"aria-rowindex\", ctx.ariaRowIndex)(\"aria-owns\", ctx.ariaOwns);\n } }, inputs: { logicalSlaveRow: \"logicalSlaveRow\", logicalSlaveCellsCount: \"logicalSlaveCellsCount\", dataRowIndex: \"dataRowIndex\", logicalRowIndex: \"logicalRowIndex\", logicalCellsCount: \"logicalCellsCount\", dataItem: \"dataItem\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalRowDirective.prototype, \"logicalRowIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], LogicalRowDirective.prototype, \"logicalSlaveRow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalRowDirective.prototype, \"logicalCellsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalRowDirective.prototype, \"logicalSlaveCellsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LogicalRowDirective.prototype, \"dataRowIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], LogicalRowDirective.prototype, \"dataItem\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], LogicalRowDirective.prototype, \"hostRole\", null);\n__decorate([\n HostBinding('attr.aria-rowindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], LogicalRowDirective.prototype, \"ariaRowIndex\", null);\n__decorate([\n HostBinding('attr.aria-owns'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], LogicalRowDirective.prototype, \"ariaOwns\", null);\nLogicalRowDirective = __decorate([ __metadata(\"design:paramtypes\", [IdService,\n NavigationService])\n], LogicalRowDirective);\n\nconst FORMAT_REGEX = /\\{\\d+:?/;\n/**\n * @hidden\n */\nlet FieldAccessorPipe = class 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 = function FieldAccessorPipe_Factory(t) { return new (t || FieldAccessorPipe)(ɵngcc0.ɵɵdirectiveInject(ɵngcc10.IntlService, 16)); };\nFieldAccessorPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"valueOf\", type: FieldAccessorPipe, pure: false });\nFieldAccessorPipe = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], FieldAccessorPipe);\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$$1, fn) => state$$1 ? fn(state$$1) : 0, data);\n/**\n * @hidden\n */\nlet TableDirective = class 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$$1) => obs.pipe(filter(e => e.type === 'resizeTable'), map(e => e.delta), bufferCount(take$$1)))).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 = function TableDirective_Factory(t) { return new (t || TableDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ColumnResizingService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TableDirective, selectors: [[\"table\"]], hostVars: 2, hostBindings: function TableDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"min-width\", ctx.minWidth);\n } }, inputs: { locked: \"locked\", virtualColumns: \"virtualColumns\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TableDirective.prototype, \"locked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TableDirective.prototype, \"virtualColumns\", void 0);\n__decorate([\n HostBinding('style.min-width'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], TableDirective.prototype, \"minWidth\", null);\nTableDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ColumnResizingService,\n NgZone,\n ChangeDetectorRef])\n], TableDirective);\n\nconst exportedModules = [\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 */\nlet SharedModule = class SharedModule {\n static exports() {\n return [\n ColumnComponent,\n SpanColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n DetailTemplateDirective,\n FocusableDirective\n ];\n }\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule], DraggableModule, EventsModule] });\n\nvar ContainsFilterOperatorComponent_1;\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 */\nlet ContainsFilterOperatorComponent = ContainsFilterOperatorComponent_1 = class ContainsFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"contains\", localization); }\n};\nContainsFilterOperatorComponent.ɵfac = function ContainsFilterOperatorComponent_Factory(t) { return new (t || ContainsFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nContainsFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ContainsFilterOperatorComponent, selectors: [[\"kendo-filter-contains-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => ContainsFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ContainsFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nContainsFilterOperatorComponent = ContainsFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ContainsFilterOperatorComponent);\n\nvar DoesNotContainFilterOperatorComponent_1;\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 */\nlet DoesNotContainFilterOperatorComponent = DoesNotContainFilterOperatorComponent_1 = class DoesNotContainFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"doesnotcontain\", localization); }\n};\nDoesNotContainFilterOperatorComponent.ɵfac = function DoesNotContainFilterOperatorComponent_Factory(t) { return new (t || DoesNotContainFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nDoesNotContainFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DoesNotContainFilterOperatorComponent, selectors: [[\"kendo-filter-not-contains-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => DoesNotContainFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function DoesNotContainFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nDoesNotContainFilterOperatorComponent = DoesNotContainFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], DoesNotContainFilterOperatorComponent);\n\nvar EndsWithFilterOperatorComponent_1;\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 */\nlet EndsWithFilterOperatorComponent = EndsWithFilterOperatorComponent_1 = class EndsWithFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"endswith\", localization); }\n};\nEndsWithFilterOperatorComponent.ɵfac = function EndsWithFilterOperatorComponent_Factory(t) { return new (t || EndsWithFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nEndsWithFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: EndsWithFilterOperatorComponent, selectors: [[\"kendo-filter-endswith-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EndsWithFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function EndsWithFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nEndsWithFilterOperatorComponent = EndsWithFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], EndsWithFilterOperatorComponent);\n\nvar EqualFilterOperatorComponent_1;\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 */\nlet EqualFilterOperatorComponent = EqualFilterOperatorComponent_1 = class EqualFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"eq\", localization); }\n};\nEqualFilterOperatorComponent.ɵfac = function EqualFilterOperatorComponent_Factory(t) { return new (t || EqualFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nEqualFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: EqualFilterOperatorComponent, selectors: [[\"kendo-filter-eq-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EqualFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function EqualFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nEqualFilterOperatorComponent = EqualFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], EqualFilterOperatorComponent);\n\nvar IsEmptyFilterOperatorComponent_1;\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 */\nlet IsEmptyFilterOperatorComponent = IsEmptyFilterOperatorComponent_1 = class IsEmptyFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isempty\", localization); }\n};\nIsEmptyFilterOperatorComponent.ɵfac = function IsEmptyFilterOperatorComponent_Factory(t) { return new (t || IsEmptyFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nIsEmptyFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: IsEmptyFilterOperatorComponent, selectors: [[\"kendo-filter-isempty-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsEmptyFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function IsEmptyFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nIsEmptyFilterOperatorComponent = IsEmptyFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], IsEmptyFilterOperatorComponent);\n\nvar IsNotEmptyFilterOperatorComponent_1;\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 */\nlet IsNotEmptyFilterOperatorComponent = IsNotEmptyFilterOperatorComponent_1 = class IsNotEmptyFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnotempty\", localization); }\n};\nIsNotEmptyFilterOperatorComponent.ɵfac = function IsNotEmptyFilterOperatorComponent_Factory(t) { return new (t || IsNotEmptyFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nIsNotEmptyFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: IsNotEmptyFilterOperatorComponent, selectors: [[\"kendo-filter-isnotempty-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotEmptyFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function IsNotEmptyFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nIsNotEmptyFilterOperatorComponent = IsNotEmptyFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], IsNotEmptyFilterOperatorComponent);\n\nvar IsNotNullFilterOperatorComponent_1;\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 */\nlet IsNotNullFilterOperatorComponent = IsNotNullFilterOperatorComponent_1 = class IsNotNullFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnotnull\", localization); }\n};\nIsNotNullFilterOperatorComponent.ɵfac = function IsNotNullFilterOperatorComponent_Factory(t) { return new (t || IsNotNullFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nIsNotNullFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: IsNotNullFilterOperatorComponent, selectors: [[\"kendo-filter-isnotnull-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotNullFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function IsNotNullFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nIsNotNullFilterOperatorComponent = IsNotNullFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], IsNotNullFilterOperatorComponent);\n\nvar IsNullFilterOperatorComponent_1;\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 */\nlet IsNullFilterOperatorComponent = IsNullFilterOperatorComponent_1 = class IsNullFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnull\", localization); }\n};\nIsNullFilterOperatorComponent.ɵfac = function IsNullFilterOperatorComponent_Factory(t) { return new (t || IsNullFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nIsNullFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: IsNullFilterOperatorComponent, selectors: [[\"kendo-filter-isnull-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNullFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function IsNullFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nIsNullFilterOperatorComponent = IsNullFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], IsNullFilterOperatorComponent);\n\nvar NotEqualFilterOperatorComponent_1;\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 */\nlet NotEqualFilterOperatorComponent = NotEqualFilterOperatorComponent_1 = class NotEqualFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"neq\", localization); }\n};\nNotEqualFilterOperatorComponent.ɵfac = function NotEqualFilterOperatorComponent_Factory(t) { return new (t || NotEqualFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nNotEqualFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NotEqualFilterOperatorComponent, selectors: [[\"kendo-filter-neq-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => NotEqualFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NotEqualFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nNotEqualFilterOperatorComponent = NotEqualFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], NotEqualFilterOperatorComponent);\n\nvar StartsWithFilterOperatorComponent_1;\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 */\nlet StartsWithFilterOperatorComponent = StartsWithFilterOperatorComponent_1 = class StartsWithFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"startswith\", localization); }\n};\nStartsWithFilterOperatorComponent.ɵfac = function StartsWithFilterOperatorComponent_Factory(t) { return new (t || StartsWithFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nStartsWithFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StartsWithFilterOperatorComponent, selectors: [[\"kendo-filter-startswith-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => StartsWithFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function StartsWithFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nStartsWithFilterOperatorComponent = StartsWithFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], StartsWithFilterOperatorComponent);\n\nvar GreaterFilterOperatorComponent_1;\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 */\nlet GreaterFilterOperatorComponent = GreaterFilterOperatorComponent_1 = class GreaterFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"gt\", localization); }\n};\nGreaterFilterOperatorComponent.ɵfac = function GreaterFilterOperatorComponent_Factory(t) { return new (t || GreaterFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nGreaterFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GreaterFilterOperatorComponent, selectors: [[\"kendo-filter-gt-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function GreaterFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nGreaterFilterOperatorComponent = GreaterFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], GreaterFilterOperatorComponent);\n\nvar GreaterOrEqualToFilterOperatorComponent_1;\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 */\nlet GreaterOrEqualToFilterOperatorComponent = GreaterOrEqualToFilterOperatorComponent_1 = class GreaterOrEqualToFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"gte\", localization); }\n};\nGreaterOrEqualToFilterOperatorComponent.ɵfac = function GreaterOrEqualToFilterOperatorComponent_Factory(t) { return new (t || GreaterOrEqualToFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nGreaterOrEqualToFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GreaterOrEqualToFilterOperatorComponent, selectors: [[\"kendo-filter-gte-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterOrEqualToFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function GreaterOrEqualToFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nGreaterOrEqualToFilterOperatorComponent = GreaterOrEqualToFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], GreaterOrEqualToFilterOperatorComponent);\n\nvar LessFilterOperatorComponent_1;\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 */\nlet LessFilterOperatorComponent = LessFilterOperatorComponent_1 = class LessFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"lt\", localization); }\n};\nLessFilterOperatorComponent.ɵfac = function LessFilterOperatorComponent_Factory(t) { return new (t || LessFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLessFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LessFilterOperatorComponent, selectors: [[\"kendo-filter-lt-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LessFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nLessFilterOperatorComponent = LessFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LessFilterOperatorComponent);\n\nvar LessOrEqualToFilterOperatorComponent_1;\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 */\nlet LessOrEqualToFilterOperatorComponent = LessOrEqualToFilterOperatorComponent_1 = class LessOrEqualToFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"lte\", localization); }\n};\nLessOrEqualToFilterOperatorComponent.ɵfac = function LessOrEqualToFilterOperatorComponent_Factory(t) { return new (t || LessOrEqualToFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLessOrEqualToFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LessOrEqualToFilterOperatorComponent, selectors: [[\"kendo-filter-lte-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessOrEqualToFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function LessOrEqualToFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nLessOrEqualToFilterOperatorComponent = LessOrEqualToFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LessOrEqualToFilterOperatorComponent);\n\nvar AfterFilterOperatorComponent_1;\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 */\nlet AfterFilterOperatorComponent = AfterFilterOperatorComponent_1 = class 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 = function AfterFilterOperatorComponent_Factory(t) { return new (t || AfterFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nAfterFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AfterFilterOperatorComponent, selectors: [[\"kendo-filter-after-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function AfterFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nAfterFilterOperatorComponent = AfterFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], AfterFilterOperatorComponent);\n\nvar AfterEqFilterOperatorComponent_1;\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 */\nlet AfterEqFilterOperatorComponent = AfterEqFilterOperatorComponent_1 = class 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 = function AfterEqFilterOperatorComponent_Factory(t) { return new (t || AfterEqFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nAfterEqFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AfterEqFilterOperatorComponent, selectors: [[\"kendo-filter-after-eq-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterEqFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function AfterEqFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nAfterEqFilterOperatorComponent = AfterEqFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], AfterEqFilterOperatorComponent);\n\nvar BeforeEqFilterOperatorComponent_1;\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 */\nlet BeforeEqFilterOperatorComponent = BeforeEqFilterOperatorComponent_1 = class 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 = function BeforeEqFilterOperatorComponent_Factory(t) { return new (t || BeforeEqFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nBeforeEqFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BeforeEqFilterOperatorComponent, selectors: [[\"kendo-filter-before-eq-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeEqFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function BeforeEqFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nBeforeEqFilterOperatorComponent = BeforeEqFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], BeforeEqFilterOperatorComponent);\n\nvar BeforeFilterOperatorComponent_1;\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 */\nlet BeforeFilterOperatorComponent = BeforeFilterOperatorComponent_1 = class 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 = function BeforeFilterOperatorComponent_Factory(t) { return new (t || BeforeFilterOperatorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nBeforeFilterOperatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BeforeFilterOperatorComponent, selectors: [[\"kendo-filter-before-operator\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeFilterOperatorComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function BeforeFilterOperatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\nBeforeFilterOperatorComponent = BeforeFilterOperatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], BeforeFilterOperatorComponent);\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 = [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule\n];\nconst COMPONENTS = [\n FilterInputDirective\n];\n/**\n * @hidden\n */\nlet SharedFilterModule = class SharedFilterModule {\n static exports() {\n return [\n ...FILTER_OPERATORS\n ];\n }\n};\nSharedFilterModule.ɵfac = function SharedFilterModule_Factory(t) { return new (t || SharedFilterModule)(); };\nSharedFilterModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedFilterModule });\nSharedFilterModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[...importedModules], CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule, SharedModule] });\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: filter$$1 }) {\n const instance = this.component.instance;\n instance.column = column;\n instance.filter = filter$$1;\n }\n}\nFilterHostDirective.ɵfac = function FilterHostDirective_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nFilterHostDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterHostDirective, inputs: { column: \"column\", filter: \"filter\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], FilterHostDirective.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FilterHostDirective.prototype, \"filter\", void 0);\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 */\nlet FilterCellHostDirective = class 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 = function FilterCellHostDirective_Factory(t) { return new (t || FilterCellHostDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver)); };\nFilterCellHostDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterCellHostDirective, selectors: [[\"\", \"kendoFilterCellHost\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nFilterCellHostDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef,\n ComponentFactoryResolver])\n], FilterCellHostDirective);\n\nconst INTERNAL_COMPONENTS = [\n FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n FilterCellHostDirective,\n FilterCellWrapperComponent,\n DateFilterCellComponent\n];\nconst ENTRY_COMPONENTS = [\n StringFilterCellComponent,\n NumericFilterCellComponent,\n BooleanFilterCellComponent,\n DateFilterCellComponent\n];\n/**\n * @hidden\n */\nlet RowFilterModule = class 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 = function RowFilterModule_Factory(t) { return new (t || RowFilterModule)(); };\nRowFilterModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: RowFilterModule });\nRowFilterModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedFilterModule], SharedFilterModule] });\n\n/**\n * @hidden\n */\nlet PagerInputDirective = class 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 = function PagerInputDirective_Factory(t) { return new (t || PagerInputDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc6.NumericTextBoxComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nPagerInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PagerInputDirective, selectors: [[\"\", \"kendoGridPagerInput\", \"\"]] });\nPagerInputDirective = __decorate([ __metadata(\"design:paramtypes\", [NumericTextBoxComponent,\n Renderer2])\n], PagerInputDirective);\n\n/**\n * @hidden\n */\nlet PagerDropDownListDirective = class PagerDropDownListDirective {\n constructor(host, renderer) {\n this.host = host;\n this.renderer = renderer;\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 this.renderer.addClass(wrapperElement, 'k-pager-nav');\n wrapperElement.addEventListener('keydown', this.keydownHandler, true);\n }\n ngOnDestroy() {\n this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);\n }\n};\nPagerDropDownListDirective.ɵfac = function PagerDropDownListDirective_Factory(t) { return new (t || PagerDropDownListDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc8.DropDownListComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nPagerDropDownListDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PagerDropDownListDirective, selectors: [[\"\", \"kendoGridPagerDropDown\", \"\"]] });\nPagerDropDownListDirective = __decorate([ __metadata(\"design:paramtypes\", [DropDownListComponent,\n Renderer2])\n], PagerDropDownListDirective);\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 = (settings) => normalizeSettings(settings === true ? {} : settings);\n\n/**\n * @hidden\n */\nlet PagerComponent = class 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.widgetClass = true;\n this.settings = normalize({});\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(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 changes.template.currentValue ? this.clearResponsiveClasses() : this.resizeHandler();\n }\n if (changes.options) {\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 = function PagerComponent_Factory(t) { return new (t || PagerComponent)(ɵngcc0.ɵɵdirectiveInject(PagerContextService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(CELL_CONTEXT, 8), ɵngcc0.ɵɵdirectiveInject(FocusRoot), ɵngcc0.ɵɵdirectiveInject(FocusGroup)); };\nPagerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PagerComponent, selectors: [[\"kendo-pager\"]], hostVars: 9, hostBindings: function PagerComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focusin\", function PagerComponent_focusin_HostBindingHandler($event) { return ctx.onFocusIn($event); })(\"focusout\", function PagerComponent_focusout_HostBindingHandler() { return ctx.onFocusOut(); })(\"keydown.escape\", function PagerComponent_keydown_escape_HostBindingHandler() { return ctx.onEscape(); })(\"keydown.enter\", function PagerComponent_keydown_enter_HostBindingHandler($event) { return ctx.onEnter($event); })(\"keydown.arrowleft\", function PagerComponent_keydown_arrowleft_HostBindingHandler($event) { return ctx.navigateToPreviousPage($event); })(\"keydown.pageup\", function PagerComponent_keydown_pageup_HostBindingHandler($event) { return ctx.navigateToPreviousPage($event); })(\"keydown.arrowright\", function PagerComponent_keydown_arrowright_HostBindingHandler($event) { return ctx.navigateToNextPage($event); })(\"keydown.pagedown\", function PagerComponent_keydown_pagedown_HostBindingHandler($event) { return ctx.navigateToNextPage($event); })(\"keydown.home\", function PagerComponent_keydown_home_HostBindingHandler($event) { return ctx.navigateToFirstPage($event); })(\"keydown.end\", function PagerComponent_keydown_end_HostBindingHandler($event) { return ctx.navigateToLastPage($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.pagerAriaLabel);\n ɵngcc0.ɵɵclassProp(\"k-pager-wrap\", ctx.pagerWrapClass)(\"k-grid-pager\", ctx.gridPagerClass)(\"k-widget\", ctx.widgetClass)(\"k-state-focused\", ctx.isFocused);\n } }, inputs: { total: \"total\", skip: \"skip\", options: \"options\", pageSize: \"pageSize\", template: \"template\" }, outputs: { pageChange: \"pageChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\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 }]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 5, consts: [[\"class\", \"k-sr-only\", 3, \"tabindex\", \"focusin\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\", 4, \"ngIf\"], [4, \"ngIf\"], [3, \"resize\", 4, \"ngIf\"], [1, \"k-sr-only\", 3, \"tabindex\", \"focusin\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"buttonCount\", 4, \"ngIf\"], [3, \"pageSizes\", 4, \"ngIf\"], [3, \"buttonCount\"], [3, \"pageSizes\"], [\"pageSizes\", \"\"], [3, \"resize\"]], template: function PagerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, PagerComponent_div_0_Template, 1, 2, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, PagerComponent_ng_container_1_Template, 1, 2, \"ng-container\", 1);\n ɵngcc0.ɵɵtemplate(2, PagerComponent_ng_container_2_Template, 7, 6, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(3, PagerComponent_div_3_Template, 1, 2, \"div\", 0);\n ɵngcc0.ɵɵtemplate(4, PagerComponent_kendo_resize_sensor_4_Template, 1, 0, \"kendo-resize-sensor\", 3);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navigationService.enabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.template == null ? null : ctx.template.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !(ctx.template == null ? null : ctx.template.templateRef));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navigationService.enabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.settings.responsive);\n } }, directives: function () { return [ɵngcc5.NgIf, ɵngcc5.NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerInfoComponent, PagerPageSizesComponent, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PagerComponent.prototype, \"total\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PagerComponent.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PagerComponent.prototype, \"pageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], PagerComponent.prototype, \"options\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", PagerTemplateDirective)\n], PagerComponent.prototype, \"template\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PagerComponent.prototype, \"pageChange\", void 0);\n__decorate([\n HostBinding('class.k-pager-wrap'),\n __metadata(\"design:type\", Boolean)\n], PagerComponent.prototype, \"pagerWrapClass\", void 0);\n__decorate([\n HostBinding('class.k-grid-pager'),\n __metadata(\"design:type\", Boolean)\n], PagerComponent.prototype, \"gridPagerClass\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n __metadata(\"design:type\", Boolean)\n], PagerComponent.prototype, \"widgetClass\", void 0);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PagerComponent.prototype, \"isFocused\", null);\n__decorate([\n HostBinding('attr.aria-label'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], PagerComponent.prototype, \"pagerAriaLabel\", null);\n__decorate([\n HostListener('focusin', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PagerComponent.prototype, \"onFocusIn\", null);\n__decorate([\n HostListener('focusout'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], PagerComponent.prototype, \"onFocusOut\", null);\n__decorate([\n HostListener('keydown.escape'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], PagerComponent.prototype, \"onEscape\", null);\n__decorate([\n HostListener('keydown.enter', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PagerComponent.prototype, \"onEnter\", null);\n__decorate([\n HostListener('keydown.arrowleft', ['$event']),\n HostListener('keydown.pageup', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PagerComponent.prototype, \"navigateToPreviousPage\", null);\n__decorate([\n HostListener('keydown.arrowright', ['$event']),\n HostListener('keydown.pagedown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PagerComponent.prototype, \"navigateToNextPage\", null);\n__decorate([\n HostListener('keydown.home', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PagerComponent.prototype, \"navigateToFirstPage\", null);\n__decorate([\n HostListener('keydown.end', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PagerComponent.prototype, \"navigateToLastPage\", null);\nPagerComponent = __decorate([ __param(6, Optional()), __param(6, Inject(CELL_CONTEXT)),\n __metadata(\"design:paramtypes\", [PagerContextService,\n NavigationService,\n ElementRef,\n Renderer2,\n NgZone,\n LocalizationService, Object, FocusRoot,\n FocusGroup])\n], PagerComponent);\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 = function PagerElementComponent_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nPagerElementComponent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PagerElementComponent });\n\n/**\n * Displays buttons for navigating to the first and to the previous page ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nlet PagerPrevButtonsComponent = class 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 = function PagerPrevButtonsComponent_Factory(t) { return new (t || PagerPrevButtonsComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(PagerContextService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nPagerPrevButtonsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PagerPrevButtonsComponent, selectors: [[\"kendo-pager-prev-buttons\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 16, consts: [[3, \"kendoGridFocusable\", \"title\", \"ngClass\", \"click\", \"keydown.enter\"], [3, \"ngClass\"]], template: function PagerPrevButtonsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function PagerPrevButtonsComponent_Template_span_click_0_listener() { return ctx.currentPage !== 1 ? ctx.changePage(0) : false; })(\"keydown.enter\", function PagerPrevButtonsComponent_Template_span_keydown_enter_0_listener() { return ctx.currentPage !== 1 ? ctx.changePage(0) : false; });\n ɵngcc0.ɵɵelement(1, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function PagerPrevButtonsComponent_Template_span_click_2_listener() { return ctx.currentPage !== 1 ? ctx.changePage(ctx.currentPage - 2) : false; })(\"keydown.enter\", function PagerPrevButtonsComponent_Template_span_keydown_enter_2_listener() { return ctx.currentPage !== 1 ? ctx.changePage(ctx.currentPage - 2) : false; });\n ɵngcc0.ɵɵelement(3, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"kendoGridFocusable\", !ctx.disabled)(\"title\", ctx.textFor(\"pagerFirstPage\"))(\"ngClass\", ɵngcc0.ɵɵpureFunction1(10, _c152, ctx.disabled));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction0(12, _c153));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.textFor(\"pagerFirstPage\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoGridFocusable\", !ctx.disabled)(\"title\", ctx.textFor(\"pagerPreviousPage\"))(\"ngClass\", ɵngcc0.ɵɵpureFunction1(13, _c154, ctx.disabled));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction0(15, _c155));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.textFor(\"pagerPreviousPage\"));\n } }, directives: [FocusableDirective, ɵngcc5.NgClass], encapsulation: 2, changeDetection: 0 });\nPagerPrevButtonsComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n PagerContextService,\n ChangeDetectorRef,\n NavigationService])\n], PagerPrevButtonsComponent);\n\n/**\n * Displays buttons for navigating to the next and to the last page ([see example]({% slug paging_grid %}#toc-pager-template)).\n */\nlet PagerNextButtonsComponent = class 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 = function PagerNextButtonsComponent_Factory(t) { return new (t || PagerNextButtonsComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(PagerContextService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nPagerNextButtonsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PagerNextButtonsComponent, selectors: [[\"kendo-pager-next-buttons\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 16, consts: [[\"tabindex\", \"0\", 3, \"kendoGridFocusable\", \"title\", \"ngClass\", \"click\", \"keydown.enter\"], [3, \"ngClass\"]], template: function PagerNextButtonsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function PagerNextButtonsComponent_Template_span_click_0_listener() { return ctx.currentPage !== ctx.totalPages ? ctx.changePage(ctx.currentPage) : false; })(\"keydown.enter\", function PagerNextButtonsComponent_Template_span_keydown_enter_0_listener() { return ctx.currentPage !== ctx.totalPages ? ctx.changePage(ctx.currentPage) : false; });\n ɵngcc0.ɵɵelement(1, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function PagerNextButtonsComponent_Template_span_click_2_listener() { return ctx.currentPage !== ctx.totalPages ? ctx.changePage(ctx.totalPages - 1) : false; })(\"keydown.enter\", function PagerNextButtonsComponent_Template_span_keydown_enter_2_listener() { return ctx.currentPage !== ctx.totalPages ? ctx.changePage(ctx.totalPages - 1) : false; });\n ɵngcc0.ɵɵelement(3, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"kendoGridFocusable\", !ctx.disabled)(\"title\", ctx.textFor(\"pagerNextPage\"))(\"ngClass\", ɵngcc0.ɵɵpureFunction1(10, _c154, ctx.disabled));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction0(12, _c156));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.textFor(\"pagerNextPage\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoGridFocusable\", !ctx.disabled)(\"title\", ctx.textFor(\"pagerLastPage\"))(\"ngClass\", ɵngcc0.ɵɵpureFunction1(13, _c157, ctx.disabled));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction0(15, _c158));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.textFor(\"pagerLastPage\"));\n } }, directives: [FocusableDirective, ɵngcc5.NgClass], encapsulation: 2, changeDetection: 0 });\nPagerNextButtonsComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n PagerContextService,\n ChangeDetectorRef,\n NavigationService])\n], PagerNextButtonsComponent);\n\n/**\n * Displays numeric buttons to enable navigation between the pages.\n */\nlet PagerNumericButtonsComponent = class 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 = function PagerNumericButtonsComponent_Factory(t) { return new (t || PagerNumericButtonsComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(PagerContextService)); };\nPagerNumericButtonsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PagerNumericButtonsComponent, selectors: [[\"kendo-pager-numeric-buttons\"]], hostVars: 2, hostBindings: function PagerNumericButtonsComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-pager-numbers-wrap\", ctx.numbersWrapClass);\n } }, inputs: { buttonCount: \"buttonCount\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 8, vars: 9, consts: [[\"kendoGridFocusable\", \"\", \"tabindex\", \"0\", 1, \"k-dropdown\", \"k-pager-nav\", 3, \"value\", \"change\"], [\"class\", \"k-link\", \"value\", \"previousButtons\", 4, \"ngIf\"], [3, \"value\", \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [\"value\", \"nextButtons\", \"class\", \"k-link\", 4, \"ngIf\"], [3, \"ngClass\"], [4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [\"value\", \"previousButtons\", 1, \"k-link\"], [3, \"value\", \"ngClass\"], [\"value\", \"nextButtons\", 1, \"k-link\"], [\"kendoGridFocusable\", \"\", \"tabindex\", \"0\", 1, \"k-link\", \"k-pager-nav\", 3, \"click\", \"keydown.enter\"], [\"kendoGridFocusable\", \"\", \"tabindex\", \"0\", 3, \"ngClass\", \"click\", \"keydown.enter\"]], template: function PagerNumericButtonsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"select\", 0);\n ɵngcc0.ɵɵlistener(\"change\", function PagerNumericButtonsComponent_Template_select_change_0_listener($event) { return ctx.onSelectChange($event); });\n ɵngcc0.ɵɵtemplate(1, PagerNumericButtonsComponent_option_1_Template, 2, 1, \"option\", 1);\n ɵngcc0.ɵɵtemplate(2, PagerNumericButtonsComponent_option_2_Template, 2, 7, \"option\", 2);\n ɵngcc0.ɵɵtemplate(3, PagerNumericButtonsComponent_option_3_Template, 2, 1, \"option\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"ul\", 4);\n ɵngcc0.ɵɵtemplate(5, PagerNumericButtonsComponent_li_5_Template, 3, 1, \"li\", 5);\n ɵngcc0.ɵɵtemplate(6, PagerNumericButtonsComponent_li_6_Template, 3, 5, \"li\", 6);\n ɵngcc0.ɵɵtemplate(7, PagerNumericButtonsComponent_li_7_Template, 3, 1, \"li\", 5);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"value\", ctx.currentPage.toString());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.start > 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.buttons);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.end < ctx.totalPages);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction0(8, _c161));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.start > 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.buttons);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.end < ctx.totalPages);\n } }, directives: [FocusableDirective, ɵngcc5.NgIf, ɵngcc5.NgForOf, ɵngcc5.NgClass], encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding('class.k-pager-numbers-wrap'),\n __metadata(\"design:type\", Boolean)\n], PagerNumericButtonsComponent.prototype, \"numbersWrapClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PagerNumericButtonsComponent.prototype, \"buttonCount\", void 0);\nPagerNumericButtonsComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ChangeDetectorRef,\n PagerContextService])\n], PagerNumericButtonsComponent);\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 */\nlet PagerInputComponent = class 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 = function PagerInputComponent_Factory(t) { return new (t || PagerInputComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(PagerContextService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nPagerInputComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PagerInputComponent, selectors: [[\"kendo-pager-input\"]], viewQuery: function PagerInputComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NumericTextBoxComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.numericInput = _t.first);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 18, consts: [[3, \"ngClass\"], [\"kendoGridPagerInput\", \"\", \"tabindex\", \"0\", \"format\", \"n0\", 3, \"kendoGridFocusable\", \"spinners\", \"decimals\", \"disabled\", \"value\", \"min\", \"max\", \"autoCorrect\", \"title\", \"kendoEventsOutsideAngular\"]], template: function PagerInputComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelement(2, \"kendo-numerictextbox\", 1);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction0(14, _c162));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"pagerPage\"), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoGridFocusable\", ctx.hasPages)(\"spinners\", false)(\"decimals\", 0)(\"disabled\", !ctx.hasPages)(\"value\", ctx.current)(\"min\", ctx.hasPages ? 1 : 0)(\"max\", ctx.totalPages)(\"autoCorrect\", true)(\"title\", ctx.textFor(\"pagerPageNumberInputTitle\"))(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(15, _c163, ctx.handleKeyDown, ctx.handleBlur));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate2(\" \", ctx.textFor(\"pagerOf\"), \" \", ctx.totalPages, \" \");\n } }, directives: [ɵngcc5.NgClass, ɵngcc6.NumericTextBoxComponent, PagerInputDirective, FocusableDirective, ɵngcc2.EventsOutsideAngularDirective], encapsulation: 2 });\n__decorate([\n ViewChild(NumericTextBoxComponent, { static: false }),\n __metadata(\"design:type\", NumericTextBoxComponent)\n], PagerInputComponent.prototype, \"numericInput\", void 0);\nPagerInputComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n PagerContextService,\n NgZone,\n NavigationService,\n ChangeDetectorRef])\n], PagerInputComponent);\n\n/**\n * Displays information about the current page and the total number of records ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nlet PagerInfoComponent = class 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 = function PagerInfoComponent_Factory(t) { return new (t || PagerInfoComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(PagerContextService)); };\nPagerInfoComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PagerInfoComponent, selectors: [[\"kendo-pager-info\"]], hostVars: 4, hostBindings: function PagerInfoComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-pager-info\", ctx.classes)(\"k-label\", ctx.classes);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 5, template: function PagerInfoComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate5(\"\", ctx.currentPageText, \" - \", ctx.maxItems, \" \", ctx.textFor(\"pagerOf\"), \" \", ctx.total, \" \", ctx.textFor(\"pagerItems\"), \"\");\n } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding(\"class.k-pager-info\"),\n HostBinding(\"class.k-label\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PagerInfoComponent.prototype, \"classes\", null);\nPagerInfoComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ChangeDetectorRef,\n PagerContextService])\n], PagerInfoComponent);\n\n/**\n * Displays a drop-down list for the page size selection ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nlet PagerPageSizesComponent = class 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 get pageSizes() {\n return 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 /**\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 = function PagerPageSizesComponent_Factory(t) { return new (t || PagerPageSizesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(PagerContextService), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nPagerPageSizesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PagerPageSizesComponent, selectors: [[\"kendo-pager-page-sizes\"]], hostVars: 4, hostBindings: function PagerPageSizesComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-pager-sizes\", ctx.classes)(\"k-label\", ctx.classes);\n } }, inputs: { pageSizes: \"pageSizes\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 5, consts: [[\"kendoGridPagerDropDown\", \"\", \"tabindex\", \"0\", \"kendoGridFocusable\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"data\", \"valuePrimitive\", \"value\", \"valueChange\"], [\"dropdownlist\", \"\"], [3, \"for\", \"text\"]], template: function PagerPageSizesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 0, 1);\n ɵngcc0.ɵɵlistener(\"valueChange\", function PagerPageSizesComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) { return ctx.pageSizeChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"kendo-label\", 2);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵproperty(\"data\", ctx.pageSizes)(\"valuePrimitive\", true)(\"value\", ctx.pageSize);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", _r0)(\"text\", ctx.textFor(\"pagerItemsPerPage\"));\n } }, directives: [ɵngcc8.DropDownListComponent, PagerDropDownListDirective, FocusableDirective, ɵngcc11.LabelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], PagerPageSizesComponent.prototype, \"pageSizes\", null);\n__decorate([\n HostBinding('class.k-pager-sizes'),\n HostBinding('class.k-label'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PagerPageSizesComponent.prototype, \"classes\", null);\nPagerPageSizesComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ChangeDetectorRef,\n PagerContextService,\n NavigationService])\n], PagerPageSizesComponent);\n\nconst importedModules$1 = [\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 */\nlet PagerModule = class 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 = function PagerModule_Factory(t) { return new (t || PagerModule)(); };\nPagerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PagerModule });\nPagerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[...importedModules$1]] });\n\n/**\n * @hidden\n */\nlet GroupHeaderComponent = class GroupHeaderComponent {\n constructor(groupsService, groupInfoService) {\n this.groupsService = groupsService;\n this.groupInfoService = groupInfoService;\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};\nGroupHeaderComponent.ɵfac = function GroupHeaderComponent_Factory(t) { return new (t || GroupHeaderComponent)(ɵngcc0.ɵɵdirectiveInject(GroupsService), ɵngcc0.ɵɵdirectiveInject(GroupInfoService)); };\nGroupHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GroupHeaderComponent, selectors: [[\"\", \"kendoGridGroupHeader\", \"\"]], hostVars: 2, hostBindings: function GroupHeaderComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grouping-row\", ctx.groupItemClass);\n } }, inputs: { skipGroupDecoration: \"skipGroupDecoration\", hasDetails: \"hasDetails\", totalColumnsCount: \"totalColumnsCount\", groups: \"groups\", rowIndex: \"rowIndex\", logicalRowIndex: \"logicalRowIndex\", item: \"item\", hasGroupHeaderColumn: \"hasGroupHeaderColumn\", groupHeaderColumns: \"groupHeaderColumns\", columns: \"columns\" }, attrs: _c164, decls: 3, vars: 3, consts: [[3, \"ngIf\"], [\"aria-selected\", \"false\", \"kendoGridLogicalCell\", \"\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"logicalSlaveCell\", \"groupItem\", \"colSpan\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"k-group-cell\", \"role\", \"presentation\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\", 1, \"k-group-cell\"], [\"aria-selected\", \"false\", \"kendoGridLogicalCell\", \"\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"logicalSlaveCell\", \"groupItem\", \"colSpan\"], [1, \"k-reset\"], [\"href\", \"#\", \"tabindex\", \"-1\", \"role\", \"presentation\", 1, \"k-icon\", 3, \"ngClass\", \"click\"], [3, \"templateContext\"], [\"role\", \"gridcell\", \"aria-selected\", \"false\", \"kendoGridLogicalCell\", \"\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"logicalSlaveCell\", \"groupItem\", \"colSpan\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", \"aria-selected\", \"false\", \"kendoGridLogicalCell\", \"\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"logicalSlaveCell\", \"groupItem\", \"colSpan\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function GroupHeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, GroupHeaderComponent_ng_template_0_Template, 1, 1, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(1, GroupHeaderComponent_td_1_Template, 3, 9, \"td\", 1);\n ɵngcc0.ɵɵtemplate(2, GroupHeaderComponent_ng_container_2_Template, 2, 1, \"ng-container\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.skipGroupDecoration);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !(ctx.skipGroupDecoration && ctx.hasGroupHeaderColumn));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGroupHeaderColumn);\n } }, directives: [ɵngcc5.NgIf, ɵngcc5.NgForOf, LogicalCellDirective, ɵngcc5.NgClass, TemplateContextDirective, ɵngcc5.NgTemplateOutlet], pipes: [FieldAccessorPipe], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GroupHeaderComponent.prototype, \"rowIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GroupHeaderComponent.prototype, \"logicalRowIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GroupHeaderComponent.prototype, \"item\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GroupHeaderComponent.prototype, \"skipGroupDecoration\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GroupHeaderComponent.prototype, \"hasDetails\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], GroupHeaderComponent.prototype, \"totalColumnsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], GroupHeaderComponent.prototype, \"hasGroupHeaderColumn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], GroupHeaderComponent.prototype, \"groupHeaderColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GroupHeaderComponent.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], GroupHeaderComponent.prototype, \"groups\", void 0);\n__decorate([\n HostBinding('class.k-grouping-row'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GroupHeaderComponent.prototype, \"groupItemClass\", null);\nGroupHeaderComponent = __decorate([ __metadata(\"design:paramtypes\", [GroupsService,\n GroupInfoService])\n], GroupHeaderComponent);\n\n/**\n * @hidden\n */\nlet DropTargetDirective = class 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 = function DropTargetDirective_Factory(t) { return new (t || DropTargetDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DragAndDropService)); };\nDropTargetDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropTargetDirective, selectors: [[\"\", \"kendoDropTarget\", \"\"]], inputs: { context: \"context\" }, outputs: { enter: \"enter\", leave: \"leave\", drop: \"drop\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropTargetDirective.prototype, \"context\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropTargetDirective.prototype, \"enter\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropTargetDirective.prototype, \"leave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DropTargetDirective.prototype, \"drop\", void 0);\nDropTargetDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n DragAndDropService])\n], DropTargetDirective);\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 */\nlet GroupPanelComponent = class 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 = function GroupPanelComponent_Factory(t) { return new (t || GroupPanelComponent)(ɵngcc0.ɵɵdirectiveInject(DragHintService), ɵngcc0.ɵɵdirectiveInject(DropCueService), ɵngcc0.ɵɵdirectiveInject(GroupInfoService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nGroupPanelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GroupPanelComponent, selectors: [[\"kendo-grid-group-panel\"]], viewQuery: function GroupPanelComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(DropTargetDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropTargets = _t);\n } }, hostVars: 4, hostBindings: function GroupPanelComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grouping-header\", ctx.groupHeaderClass)(\"k-grouping-header-flex\", ctx.groupHeaderClass);\n } }, inputs: { groups: \"groups\", text: \"text\" }, outputs: { change: \"change\" }, decls: 3, vars: 3, consts: [[3, \"ngIf\"], [\"class\", \"k-indicator-container\", \"kendoDropTarget\", \"\", 3, \"context\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"k-indicator-container\", \"kendoDropTarget\", \"\", 3, \"context\", 4, \"ngIf\"], [\"kendoDropTarget\", \"\", 1, \"k-indicator-container\", 3, \"context\"], [\"kendoDraggableColumn\", \"\", \"kendoGroupIndicator\", \"\", \"kendoDraggable\", \"\", 3, \"enableDrag\", \"context\", \"group\", \"groupTitle\", \"directionChange\", \"remove\"]], template: function GroupPanelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, GroupPanelComponent_ng_template_0_Template, 2, 3, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(1, GroupPanelComponent_div_1_Template, 2, 10, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, GroupPanelComponent_div_2_Template, 2, 2, \"div\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.groups.length === 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.groups);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.groups.length !== 0);\n } }, directives: function () { return [ɵngcc5.NgIf, DropTargetDirective, ɵngcc5.NgForOf, DraggableColumnDirective, GroupIndicatorComponent, ɵngcc2.DraggableDirective]; }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GroupPanelComponent.prototype, \"change\", void 0);\n__decorate([\n HostBinding(\"class.k-grouping-header\"),\n HostBinding(\"class.k-grouping-header-flex\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GroupPanelComponent.prototype, \"groupHeaderClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], GroupPanelComponent.prototype, \"text\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], GroupPanelComponent.prototype, \"groups\", void 0);\n__decorate([\n ViewChildren(DropTargetDirective),\n __metadata(\"design:type\", QueryList)\n], GroupPanelComponent.prototype, \"dropTargets\", void 0);\nGroupPanelComponent = __decorate([ __metadata(\"design:paramtypes\", [DragHintService,\n DropCueService,\n GroupInfoService,\n LocalizationService,\n ChangeDetectorRef])\n], GroupPanelComponent);\n\n/**\n * @hidden\n */\nlet GroupIndicatorComponent = class GroupIndicatorComponent {\n /**\n * @hidden\n */\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 = function GroupIndicatorComponent_Factory(t) { return new (t || GroupIndicatorComponent)(); };\nGroupIndicatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GroupIndicatorComponent, selectors: [[\"\", \"kendoGroupIndicator\", \"\"]], hostVars: 2, hostBindings: function GroupIndicatorComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-group-indicator\", ctx.groupIndicatorClass);\n } }, inputs: { group: \"group\", groupTitle: \"groupTitle\" }, outputs: { directionChange: \"directionChange\", remove: \"remove\" }, attrs: _c171, decls: 5, vars: 5, consts: [[\"href\", \"#\", \"tabindex\", \"-1\", 1, \"k-link\", 3, \"click\"], [1, \"k-icon\"], [\"tabindex\", \"-1\", 1, \"k-button\", \"k-button-icon\", \"k-bare\", 3, \"click\"], [1, \"k-icon\", \"k-i-group-delete\"]], template: function GroupIndicatorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function GroupIndicatorComponent_Template_a_click_0_listener() { return ctx.toggleDirection(); });\n ɵngcc0.ɵɵelement(1, \"span\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"a\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function GroupIndicatorComponent_Template_a_click_3_listener() { return ctx.removeDescriptor(); });\n ɵngcc0.ɵɵelement(4, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-i-sort-asc-sm\", ctx.dir === \"asc\")(\"k-i-sort-desc-sm\", ctx.dir === \"desc\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.groupTitle, \"\");\n } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GroupIndicatorComponent.prototype, \"directionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], GroupIndicatorComponent.prototype, \"remove\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], GroupIndicatorComponent.prototype, \"group\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], GroupIndicatorComponent.prototype, \"groupTitle\", void 0);\n__decorate([\n HostBinding(\"class.k-group-indicator\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], GroupIndicatorComponent.prototype, \"groupIndicatorClass\", null);\n\n// TODO\n// tslint:disable:rxjs-no-unsafe-takeuntil\n/**\n * @hidden\n */\nconst preventOnDblClick = 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-button-icon\"));\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 */\nlet DraggableColumnDirective = class 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(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()), 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 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 = function DraggableColumnDirective_Factory(t) { return new (t || DraggableColumnDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.DraggableDirective, 1), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DragAndDropService), ɵngcc0.ɵɵdirectiveInject(DragHintService), ɵngcc0.ɵɵdirectiveInject(DropCueService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nDraggableColumnDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DraggableColumnDirective, selectors: [[\"\", \"kendoDraggableColumn\", \"\"]], hostVars: 2, hostBindings: function DraggableColumnDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grid-draggable-header\", ctx.hostClass);\n } }, inputs: { context: \"context\", enableDrag: \"enableDrag\" }, outputs: { drag: \"drag\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DraggableColumnDirective.prototype, \"context\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], DraggableColumnDirective.prototype, \"enableDrag\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DraggableColumnDirective.prototype, \"drag\", void 0);\n__decorate([\n HostBinding('class.k-grid-draggable-header'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DraggableColumnDirective.prototype, \"hostClass\", null);\nDraggableColumnDirective = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [DraggableDirective,\n ElementRef,\n NgZone,\n DragAndDropService,\n DragHintService,\n DropCueService,\n NavigationService,\n Renderer2])\n], DraggableColumnDirective);\n\nconst exported = [\n DraggableColumnDirective,\n DropTargetDirective\n];\n/**\n * @hidden\n */\nlet DragAndDropModule = class DragAndDropModule {\n};\nDragAndDropModule.ɵfac = function DragAndDropModule_Factory(t) { return new (t || DragAndDropModule)(); };\nDragAndDropModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DragAndDropModule });\nDragAndDropModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\nconst exportedModules$1 = [\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderComponent,\n GroupPanelComponent,\n GroupIndicatorComponent\n];\n/**\n * @hidden\n */\nlet GroupModule = class GroupModule {\n static exports() {\n return [\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective\n ];\n }\n};\nGroupModule.ɵfac = function GroupModule_Factory(t) { return new (t || GroupModule)(); };\nGroupModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: GroupModule });\nGroupModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, SharedModule, DragAndDropModule]] });\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n allowUnsort: true,\n mode: 'single',\n showIndexes: true,\n initialDirection: 'asc'\n};\n/**\n * @hidden\n */\nconst normalize$1 = (...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\n/**\n * @hidden\n */\nlet FilterMenuComponent = class 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 = function FilterMenuComponent_Factory(t) { return new (t || FilterMenuComponent)(ɵngcc0.ɵɵdirectiveInject(FilterService), ɵngcc0.ɵɵdirectiveInject(SinglePopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nFilterMenuComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FilterMenuComponent, selectors: [[\"kendo-grid-filter-menu\"]], viewQuery: function FilterMenuComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c172, 7);\n ɵngcc0.ɵɵviewQuery(_c173, 7, TemplateRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.anchor = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n } }, inputs: { tabIndex: \"tabIndex\", column: \"column\", filter: \"filter\" }, decls: 5, vars: 5, consts: [[\"href\", \"#\", 3, \"ngClass\", \"tabindex\", \"click\", \"keydown.enter\"], [\"anchor\", \"\"], [1, \"k-icon\", \"k-i-filter\"], [\"template\", \"\"], [3, \"column\", \"filter\", \"close\", \"keydown.escape\", \"keydown.enter\"]], template: function FilterMenuComponent_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function FilterMenuComponent_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const _r0 = ɵngcc0.ɵɵreference(1); const _r1 = ɵngcc0.ɵɵreference(4); return ctx.toggle(_r0, _r1); })(\"keydown.enter\", function FilterMenuComponent_Template_a_keydown_enter_0_listener($event) { return $event.stopImmediatePropagation(); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, FilterMenuComponent_ng_template_3_Template, 1, 2, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(3, _c174, ctx.hasFilters))(\"tabindex\", ctx.tabIndex);\n ɵngcc0.ɵɵattribute(\"title\", ctx.filterLabel);\n } }, directives: function () { return [ɵngcc5.NgClass, FilterMenuContainerComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], FilterMenuComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FilterMenuComponent.prototype, \"filter\", void 0);\n__decorate([\n ViewChild('anchor', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], FilterMenuComponent.prototype, \"anchor\", void 0);\n__decorate([\n ViewChild('template', { static: true, read: TemplateRef }),\n __metadata(\"design:type\", TemplateRef)\n], FilterMenuComponent.prototype, \"template\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FilterMenuComponent.prototype, \"tabIndex\", void 0);\nFilterMenuComponent = __decorate([ __metadata(\"design:paramtypes\", [FilterService,\n SinglePopupService,\n LocalizationService,\n NavigationService])\n], FilterMenuComponent);\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 */\nlet ColumnMenuService = class 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 = function ColumnMenuService_Factory(t) { return new (t || ColumnMenuService)(ɵngcc0.ɵɵinject(MenuTabbingService)); };\nColumnMenuService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColumnMenuService, factory: function (t) { return ColumnMenuService.ɵfac(t); } });\nColumnMenuService = __decorate([ __metadata(\"design:paramtypes\", [MenuTabbingService])\n], ColumnMenuService);\n\nconst POPUP_CLASS = 'k-grid-columnmenu-popup';\n/**\n * Represents the [column menu]({% slug columnmenu_grid %}) component.\n */\nlet ColumnMenuComponent = class 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 = function ColumnMenuComponent_Factory(t) { return new (t || ColumnMenuComponent)(ɵngcc0.ɵɵdirectiveInject(SinglePopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ColumnMenuService), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nColumnMenuComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuComponent, selectors: [[\"kendo-grid-column-menu\"]], viewQuery: function ColumnMenuComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c172, 7);\n ɵngcc0.ɵɵviewQuery(_c173, 7, TemplateRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.anchor = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n } }, hostVars: 2, hostBindings: function ColumnMenuComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grid-column-menu-standalone\", ctx.standalone);\n } }, inputs: { standalone: \"standalone\", settings: \"settings\", sortable: \"sortable\", tabIndex: \"tabIndex\", column: \"column\", sort: \"sort\", filter: \"filter\", columnMenuTemplate: \"columnMenuTemplate\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n ColumnMenuService,\n MenuTabbingService\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 7, vars: 5, consts: [[\"href\", \"#\", 1, \"k-grid-column-menu\", \"k-grid-filter\", 3, \"ngClass\", \"tabindex\", \"click\", \"keydown.enter\"], [\"anchor\", \"\"], [1, \"k-icon\", \"k-i-more-vertical\"], [\"template\", \"\"], [\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"keydown.escape\", \"keydown.enter\"], [3, \"kendoGridColumnMenuItem\", \"service\", 4, \"ngIf\"], [3, \"showLock\", \"showStick\", \"kendoGridColumnMenuItem\", \"service\", \"expanded\", 4, \"ngIf\"], [3, \"kendoGridColumnMenuItem\", \"service\", \"expanded\", 4, \"ngIf\"], [3, \"kendoGridColumnMenuItem\", \"service\"], [\"sortItem\", \"\"], [\"lockItem\", \"\"], [\"stickItem\", \"\"], [3, \"showLock\", \"showStick\", \"kendoGridColumnMenuItem\", \"service\", \"expanded\"], [\"positionItem\", \"\"], [3, \"kendoGridColumnMenuItem\", \"service\", \"expanded\"], [\"chooserItem\", \"\"], [\"filterItem\", \"\"]], template: function ColumnMenuComponent_Template(rf, ctx) { if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function ColumnMenuComponent_Template_a_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r20); const _r0 = ɵngcc0.ɵɵreference(1); const _r1 = ɵngcc0.ɵɵreference(4); return ctx.toggle($event, _r0, _r1); })(\"keydown.enter\", function ColumnMenuComponent_Template_a_keydown_enter_0_listener($event) { return $event.stopImmediatePropagation(); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ColumnMenuComponent_ng_template_3_Template, 1, 5, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(5, ColumnMenuComponent_ng_template_5_Template, 7, 6, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(3, _c176, ctx.isActive))(\"tabindex\", ctx.tabIndex);\n ɵngcc0.ɵɵattribute(\"title\", ctx.columnMenuTitle);\n } }, directives: function () { return [ɵngcc5.NgClass, ɵngcc5.NgTemplateOutlet, ColumnMenuContainerComponent, ɵngcc5.NgIf, ColumnMenuSortComponent, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-grid-column-menu-standalone'),\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuComponent.prototype, \"standalone\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnMenuComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnMenuComponent.prototype, \"settings\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnMenuComponent.prototype, \"sort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnMenuComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColumnMenuComponent.prototype, \"sortable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ColumnMenuComponent.prototype, \"columnMenuTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnMenuComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n ViewChild('anchor', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ColumnMenuComponent.prototype, \"anchor\", void 0);\n__decorate([\n ViewChild('template', { static: true, read: TemplateRef }),\n __metadata(\"design:type\", TemplateRef)\n], ColumnMenuComponent.prototype, \"template\", void 0);\nColumnMenuComponent = __decorate([ __metadata(\"design:paramtypes\", [SinglePopupService,\n LocalizationService,\n ColumnMenuService,\n NavigationService])\n], ColumnMenuComponent);\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(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(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);\n/**\n * @hidden\n */\nlet HeaderComponent = class 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 // 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(column) {\n this.sortService.sort(this.toggleSort(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 this.sortColumn(column);\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 this.sortService.sort(this.toggleSort(column));\n }\n }\n showSortNumbering(column) {\n const { showIndexes } = normalize$1(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$$1 = this.sortDescriptor(field);\n return {\n 'k-icon': isPresent(state$$1.dir),\n 'k-i-sort-desc-sm': state$$1.dir === \"desc\",\n 'k-i-sort-asc-sm': state$$1.dir === \"asc\"\n };\n }\n sortState(column) {\n if (!this.isSortable(column)) {\n return;\n }\n const state$$1 = this.sortDescriptor(column.field);\n if (state$$1.dir === 'asc') {\n return 'ascending';\n }\n if (state$$1.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$$1 = this.sortDescriptor(column.field);\n if (state$$1.dir === 'asc') {\n msg = 'sortedAscending';\n }\n else if (state$$1.dir === 'desc') {\n msg = 'sortedDescending';\n }\n return this.localization.get(msg);\n }\n toggleSort(column) {\n const { allowUnsort, mode, initialDirection } = normalize$1(this.sortable, column.sortable);\n const descriptor = this.toggleDirection(column.field, allowUnsort, initialDirection);\n if (mode === 'single') {\n return [descriptor];\n }\n return [...this.sort.filter(desc => desc.field !== column.field), descriptor];\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({}, 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 = function HeaderComponent_Factory(t) { return new (t || HeaderComponent)(ɵngcc0.ɵɵdirectiveInject(SinglePopupService), ɵngcc0.ɵɵdirectiveInject(DragHintService), ɵngcc0.ɵɵdirectiveInject(DropCueService), ɵngcc0.ɵɵdirectiveInject(ColumnReorderService), ɵngcc0.ɵɵdirectiveInject(IdService), ɵngcc0.ɵɵdirectiveInject(SortService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HeaderComponent, selectors: [[\"\", \"kendoGridHeader\", \"\"]], viewQuery: function HeaderComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(DropTargetDirective, 5);\n ɵngcc0.ɵɵviewQuery(FilterMenuComponent, 5);\n ɵngcc0.ɵɵviewQuery(ColumnMenuComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropTargets = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.filterMenus = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columnMenus = _t);\n } }, hostVars: 2, hostBindings: function HeaderComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grid-header\", ctx.headerClass);\n } }, inputs: { columns: \"columns\", groups: \"groups\", sort: \"sort\", sortable: \"sortable\", groupable: \"groupable\", lockedColumnsCount: \"lockedColumnsCount\", resizable: \"resizable\", reorderable: \"reorderable\", columnMenu: \"columnMenu\", totalColumnsCount: \"totalColumnsCount\", totalColumnLevels: \"totalColumnLevels\", detailTemplate: \"detailTemplate\", scrollable: \"scrollable\", filterable: \"filterable\", filter: \"filter\", columnMenuTemplate: \"columnMenuTemplate\", tabIndex: \"tabIndex\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c177, decls: 1, vars: 1, consts: [[3, \"ngIf\"], [\"kendoGridLogicalRow\", \"\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", 4, \"ngFor\", \"ngForOf\"], [\"kendoGridFilterRow\", \"\", \"kendoGridLogicalRow\", \"\", 3, \"columns\", \"filter\", \"groups\", \"detailTemplate\", \"lockedColumnsCount\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", 4, \"ngIf\"], [\"kendoGridLogicalRow\", \"\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\"], [\"class\", \"k-group-cell k-header\", \"role\", \"presentation\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"k-hierarchy-cell k-header\", \"role\", \"presentation\", \"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", 3, \"logicalRowIndex\", \"logicalColIndex\", 4, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"presentation\", 1, \"k-group-cell\", \"k-header\"], [\"role\", \"presentation\", \"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", 1, \"k-hierarchy-cell\", \"k-header\", 3, \"logicalRowIndex\", \"logicalColIndex\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"columnheader\", \"aria-selected\", \"false\", \"kendoDropTarget\", \"\", \"kendoDraggable\", \"\", \"kendoDraggableColumn\", \"\", \"class\", \"k-header\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"headerLabelText\", \"colSpan\", \"rowSpan\", \"enableDrag\", \"context\", \"k-filterable\", \"k-first\", \"k-grid-header-sticky\", \"ngClass\", \"ngStyle\", \"keydown\", 4, \"ngIf\"], [\"kendoGridLogicalCell\", \"\", \"kendoDropTarget\", \"\", \"kendoDraggable\", \"\", \"kendoDraggableColumn\", \"\", \"class\", \"k-header\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"rowSpan\", \"colSpan\", \"headerLabelText\", \"enableDrag\", \"context\", \"k-first\", \"k-filterable\", \"k-grid-content-sticky\", \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"columnheader\", \"aria-selected\", \"false\", \"kendoDropTarget\", \"\", \"kendoDraggable\", \"\", \"kendoDraggableColumn\", \"\", 1, \"k-header\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"headerLabelText\", \"colSpan\", \"rowSpan\", \"enableDrag\", \"context\", \"ngClass\", \"ngStyle\", \"keydown\"], [\"kendoGridColumnHandle\", \"\", \"kendoDraggable\", \"\", \"class\", \"k-column-resizer\", 3, \"column\", \"columns\", 4, \"ngIf\"], [3, \"column\", \"filter\", \"tabIndex\", 4, \"ngIf\"], [3, \"standalone\", \"settings\", \"column\", \"columnMenuTemplate\", \"sort\", \"filter\", \"sortable\", \"tabIndex\", 4, \"ngIf\"], [3, \"templateContext\"], [3, \"column\", \"filter\", \"tabIndex\"], [3, \"standalone\", \"settings\", \"column\", \"columnMenuTemplate\", \"sort\", \"filter\", \"sortable\", \"tabIndex\"], [1, \"k-cell-inner\"], [1, \"k-link\", 3, \"click\"], [\"link\", \"\"], [3, \"ngClass\"], [\"class\", \"k-sort-order\", 4, \"ngIf\"], [\"role\", \"status\", 1, \"k-sort-status\", 2, \"position\", \"absolute\", \"left\", \"-10000px\", 3, \"innerHtml\"], [1, \"k-column-title\"], [1, \"k-sort-order\"], [\"kendoGridSelectAllCheckbox\", \"\", \"kendoGridFocusable\", \"\", 1, \"k-checkbox\"], [\"kendoGridColumnHandle\", \"\", \"kendoDraggable\", \"\", 1, \"k-column-resizer\", 3, \"column\", \"columns\"], [\"kendoGridLogicalCell\", \"\", \"kendoDropTarget\", \"\", \"kendoDraggable\", \"\", \"kendoDraggableColumn\", \"\", 1, \"k-header\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"rowSpan\", \"colSpan\", \"headerLabelText\", \"enableDrag\", \"context\", \"ngClass\", \"ngStyle\"], [3, \"standalone\", \"settings\", \"column\", \"columnMenuTemplate\", 4, \"ngIf\"], [3, \"standalone\", \"settings\", \"column\", \"columnMenuTemplate\"], [\"kendoGridFilterRow\", \"\", \"kendoGridLogicalRow\", \"\", 3, \"columns\", \"filter\", \"groups\", \"detailTemplate\", \"lockedColumnsCount\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\"]], template: function HeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HeaderComponent_ng_template_0_Template, 2, 2, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", true);\n } }, directives: function () { return [ɵngcc5.NgIf, ɵngcc5.NgForOf, LogicalRowDirective, LogicalCellDirective, DropTargetDirective, ɵngcc2.DraggableDirective, DraggableColumnDirective, ɵngcc5.NgClass, ɵngcc5.NgStyle, FilterMenuComponent, ColumnMenuComponent, TemplateContextDirective, SelectAllCheckboxDirective, FocusableDirective, ColumnHandleDirective, FilterRowComponent]; }, styles: [\".k-column-resizer[_ngcontent-%COMP%] {\\n cursor: col-resize;\\n display: block;\\n height: 1000%;\\n position: absolute;\\n top: 0;\\n width: .5em;\\n }\"] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], HeaderComponent.prototype, \"totalColumnLevels\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], HeaderComponent.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], HeaderComponent.prototype, \"groups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", DetailTemplateDirective)\n], HeaderComponent.prototype, \"detailTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"scrollable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HeaderComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], HeaderComponent.prototype, \"sort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HeaderComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HeaderComponent.prototype, \"sortable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"groupable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], HeaderComponent.prototype, \"lockedColumnsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"resizable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"reorderable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HeaderComponent.prototype, \"columnMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], HeaderComponent.prototype, \"columnMenuTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], HeaderComponent.prototype, \"totalColumnsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], HeaderComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n HostBinding('class.k-grid-header'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HeaderComponent.prototype, \"headerClass\", null);\n__decorate([\n ViewChildren(DropTargetDirective),\n __metadata(\"design:type\", QueryList)\n], HeaderComponent.prototype, \"dropTargets\", void 0);\n__decorate([\n ViewChildren(FilterMenuComponent),\n __metadata(\"design:type\", QueryList)\n], HeaderComponent.prototype, \"filterMenus\", void 0);\n__decorate([\n ViewChildren(ColumnMenuComponent),\n __metadata(\"design:type\", QueryList)\n], HeaderComponent.prototype, \"columnMenus\", void 0);\nHeaderComponent = __decorate([ __metadata(\"design:paramtypes\", [SinglePopupService,\n DragHintService,\n DropCueService,\n ColumnReorderService,\n IdService,\n SortService,\n LocalizationService,\n ColumnInfoService,\n ChangeDetectorRef])\n], HeaderComponent);\n\n// TODO\n// tslint:disable:rxjs-no-unsafe-takeuntil\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(takeUntil(draggable.kendoRelease.pipe(tap(() => service.end()))), map(({ pageX }) => ({\n originalX: mouseDown.pageX,\n pageX\n})));\n/**\n * @hidden\n */\nconst preventOnDblClick$1 = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\n/**\n * @hidden\n */\nconst isInSpanColumn$1 = 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$1(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 */\nlet ColumnHandleDirective = class ColumnHandleDirective {\n constructor(draggable, element, service, zone, cdr, localization) {\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.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$1(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 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$1(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.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 = function ColumnHandleDirective_Factory(t) { return new (t || ColumnHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.DraggableDirective, 1), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ColumnResizingService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nColumnHandleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnHandleDirective, selectors: [[\"\", \"kendoGridColumnHandle\", \"\"]], hostVars: 6, hostBindings: function ColumnHandleDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"dblclick\", function ColumnHandleDirective_dblclick_HostBindingHandler() { return ctx.autoFit(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.visible)(\"left\", ctx.leftStyle)(\"right\", ctx.rightStyle);\n } }, inputs: { columns: \"columns\", column: \"column\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ColumnHandleDirective.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnBase$1)\n], ColumnHandleDirective.prototype, \"column\", void 0);\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ColumnHandleDirective.prototype, \"visible\", null);\n__decorate([\n HostBinding('style.left'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], ColumnHandleDirective.prototype, \"leftStyle\", null);\n__decorate([\n HostBinding('style.right'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], ColumnHandleDirective.prototype, \"rightStyle\", null);\n__decorate([\n HostListener('dblclick'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ColumnHandleDirective.prototype, \"autoFit\", null);\nColumnHandleDirective = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [DraggableDirective,\n ElementRef,\n ColumnResizingService,\n NgZone,\n ChangeDetectorRef,\n LocalizationService])\n], ColumnHandleDirective);\n\n/**\n * Represents the select-all checkbox feature of the Grid ([see example]({% slug selection_grid %}#toc-select-all-feature)).\n */\nlet SelectAllCheckboxDirective = class 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 this.selectAllChange.emit(isChecked ? \"checked\" : \"unchecked\");\n if (options.enabled && options.mode === \"multiple\") {\n this.ngZone.run(() => {\n this.selectionService.updateAll(isChecked);\n });\n }\n }\n /**\n * @hidden\n */\n setState() {\n const state$$1 = this.stateSet ? this.stateToBool() : this.selectionService.selectAllState;\n const elem = this.el.nativeElement;\n this.renderer.setProperty(elem, \"indeterminate\", !isPresent(state$$1));\n this.renderer.setProperty(elem, \"checked\", isPresent(state$$1) ? state$$1 : 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 = function SelectAllCheckboxDirective_Factory(t) { return new (t || SelectAllCheckboxDirective)(ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nSelectAllCheckboxDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SelectAllCheckboxDirective, selectors: [[\"\", \"kendoGridSelectAllCheckbox\", \"\"]], hostVars: 1, hostBindings: function SelectAllCheckboxDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"type\", ctx.type);\n } }, inputs: { state: \"state\" }, outputs: { selectAllChange: \"selectAllChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SelectAllCheckboxDirective.prototype, \"state\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SelectAllCheckboxDirective.prototype, \"selectAllChange\", void 0);\n__decorate([\n HostBinding('attr.type'),\n __metadata(\"design:type\", String)\n], SelectAllCheckboxDirective.prototype, \"type\", void 0);\nSelectAllCheckboxDirective = __decorate([ __metadata(\"design:paramtypes\", [SelectionService,\n ElementRef,\n Renderer2,\n NgZone])\n], SelectAllCheckboxDirective);\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$$1 => {\n filter$$1.filters = filter$$1.filters.filter(validFilters);\n return filter$$1;\n};\nconst findParent = (filters, field, parent) => {\n return filters.reduce((acc, filter$$1) => {\n if (acc) {\n return acc;\n }\n if (filter$$1.filters) {\n return findParent(filter$$1.filters, field, filter$$1);\n }\n else if (filter$$1.field === field) {\n return parent;\n }\n return acc;\n }, undefined); // tslint:disable-line:align\n};\nconst parentLogicOfDefault = (filter$$1, field, def = \"and\") => {\n const parent = findParent(((filter$$1 || {}).filters || []), field);\n return isPresent(parent) ? parent.logic : def;\n};\n/**\n * @hidden\n */\nlet FilterMenuContainerComponent = class 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$$1 => this._childFilter = filter$$1);\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 // tslint:disable-next-line:no-string-literal\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$$1 = trimFilters(this.childFilter);\n if (filter$$1.filters.length) {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n removeFilter(root, this.column.field);\n root.filters.push(filter$$1);\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 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 = function FilterMenuContainerComponent_Factory(t) { return new (t || FilterMenuContainerComponent)(ɵngcc0.ɵɵdirectiveInject(FilterService, 4), ɵngcc0.ɵɵdirectiveInject(FilterService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(MenuTabbingService)); };\nFilterMenuContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FilterMenuContainerComponent, selectors: [[\"kendo-grid-filter-menu-container\"]], viewQuery: function FilterMenuContainerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c181, 5);\n ɵngcc0.ɵɵviewQuery(_c182, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.resetButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.filterButton = _t.first);\n } }, inputs: { actionsClass: \"actionsClass\", menuTabbingService: \"menuTabbingService\", filter: \"filter\", column: \"column\", isLast: \"isLast\", isExpanded: \"isExpanded\" }, outputs: { close: \"close\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n FilterService,\n MenuTabbingService\n ])], decls: 12, vars: 7, consts: [[1, \"k-filter-menu\", \"k-group\", \"k-reset\", \"k-state-border-up\", 3, \"submit\", \"reset\"], [1, \"k-filter-menu-container\"], [3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [3, \"ngClass\"], [\"type\", \"reset\", 1, \"k-button\", 3, \"keydown.tab\"], [\"resetButton\", \"\"], [\"type\", \"submit\", 1, \"k-button\", \"k-primary\", 3, \"disabled\", \"keydown.tab\"], [\"filterButton\", \"\"], [\"kendoFilterMenuHost\", \"\", 3, \"filterService\", \"column\", \"filter\", \"menuTabbingService\"], [4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function FilterMenuContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"form\", 0);\n ɵngcc0.ɵɵlistener(\"submit\", function FilterMenuContainerComponent_Template_form_submit_0_listener() { return ctx.submit(); })(\"reset\", function FilterMenuContainerComponent_Template_form_reset_0_listener() { return ctx.reset(); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementContainerStart(2, 2);\n ɵngcc0.ɵɵtemplate(3, FilterMenuContainerComponent_ng_container_3_Template, 2, 4, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(4, FilterMenuContainerComponent_ng_container_4_Template, 2, 1, \"ng-container\", 3);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵelementStart(5, \"div\", 4);\n ɵngcc0.ɵɵelementStart(6, \"button\", 5, 6);\n ɵngcc0.ɵɵlistener(\"keydown.tab\", function FilterMenuContainerComponent_Template_button_keydown_tab_6_listener($event) { return ctx.onTab($event, \"reset\"); });\n ɵngcc0.ɵɵtext(8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"button\", 7, 8);\n ɵngcc0.ɵɵlistener(\"keydown.tab\", function FilterMenuContainerComponent_Template_button_keydown_tab_9_listener($event) { return ctx.onTab($event, \"filter\"); });\n ɵngcc0.ɵɵtext(11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.hasTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.actionsClass);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.clearText);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.filterText);\n } }, directives: function () { return [ɵngcc7.ɵNgNoValidate, ɵngcc7.NgControlStatusGroup, ɵngcc7.NgForm, ɵngcc5.NgSwitch, ɵngcc5.NgSwitchCase, FilterMenuHostDirective, ɵngcc5.NgIf, ɵngcc5.NgTemplateOutlet, ɵngcc5.NgClass]; }, encapsulation: 2 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FilterMenuContainerComponent.prototype, \"close\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], FilterMenuContainerComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FilterMenuContainerComponent.prototype, \"isLast\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FilterMenuContainerComponent.prototype, \"isExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], FilterMenuContainerComponent.prototype, \"menuTabbingService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FilterMenuContainerComponent.prototype, \"filter\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FilterMenuContainerComponent.prototype, \"actionsClass\", void 0);\n__decorate([\n ViewChild('resetButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], FilterMenuContainerComponent.prototype, \"resetButton\", void 0);\n__decorate([\n ViewChild('filterButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], FilterMenuContainerComponent.prototype, \"filterButton\", void 0);\nFilterMenuContainerComponent = __decorate([ __param(0, SkipSelf()),\n __metadata(\"design:paramtypes\", [FilterService,\n FilterService,\n LocalizationService,\n ChangeDetectorRef,\n MenuTabbingService])\n], FilterMenuContainerComponent);\n\n/**\n * @hidden\n */\nlet FilterMenuInputWrapperComponent = class 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$$1) {\n this.applyFilter(filter$$1);\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$$1) {\n Object.assign(this.currentFilter, filter$$1);\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 = function FilterMenuInputWrapperComponent_Factory(t) { return new (t || FilterMenuInputWrapperComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nFilterMenuInputWrapperComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FilterMenuInputWrapperComponent, selectors: [[\"kendo-grid-filter-menu-input-wrapper\"]], viewQuery: function FilterMenuInputWrapperComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(DropDownListComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.firstOperatorDropDown = _t.first);\n } }, inputs: { currentFilter: \"currentFilter\", filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c146, decls: 2, vars: 4, consts: [[\"kendoFilterMenuDropDown\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"filterMenuDropDownLabel\", \"data\", \"value\", \"valuePrimitive\", \"valueChange\", \"keydown.shift.tab\"]], template: function FilterMenuInputWrapperComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownlist\", 0);\n ɵngcc0.ɵɵlistener(\"valueChange\", function FilterMenuInputWrapperComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) { return ctx.operatorChange($event); })(\"keydown.shift.tab\", function FilterMenuInputWrapperComponent_Template_kendo_dropdownlist_keydown_shift_tab_0_listener($event) { return ctx.onShiftTab($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵprojection(1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"filterMenuDropDownLabel\", ctx.filterMenuDropDownLabel)(\"data\", ctx.operators)(\"value\", ctx.currentOperator)(\"valuePrimitive\", true);\n } }, directives: function () { return [ɵngcc8.DropDownListComponent, FilterMenuDropDownListDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], FilterMenuInputWrapperComponent.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FilterMenuInputWrapperComponent.prototype, \"isFirstDropDown\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], FilterMenuInputWrapperComponent.prototype, \"menuTabbingService\", void 0);\n__decorate([\n ViewChild(DropDownListComponent, { static: false }),\n __metadata(\"design:type\", DropDownListComponent)\n], FilterMenuInputWrapperComponent.prototype, \"firstOperatorDropDown\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FilterMenuInputWrapperComponent.prototype, \"currentFilter\", null);\nFilterMenuInputWrapperComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], FilterMenuInputWrapperComponent);\n\n/**\n * @hidden\n */\nlet StringFilterMenuInputComponent = class 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 = function StringFilterMenuInputComponent_Factory(t) { return new (t || StringFilterMenuInputComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nStringFilterMenuInputComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StringFilterMenuInputComponent, selectors: [[\"kendo-grid-string-filter-menu-input\"]], inputs: { operators: \"operators\", column: \"column\", filter: \"filter\", operator: \"operator\", currentFilter: \"currentFilter\", filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\" }, decls: 2, vars: 11, consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterInput\", \"\", 1, \"k-textbox\", 3, \"columnLabel\", \"filterDelay\", \"ngModel\"]], template: function StringFilterMenuInputComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-menu-input-wrapper\", 0);\n ɵngcc0.ɵɵelement(1, \"input\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"currentFilter\", ctx.currentFilter)(\"filterService\", ctx.filterService)(\"isFirstDropDown\", ctx.isFirstDropDown)(\"menuTabbingService\", ctx.menuTabbingService);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", 0)(\"ngModel\", ctx.currentFilter == null ? null : ctx.currentFilter.value);\n } }, directives: [FilterMenuInputWrapperComponent, ɵngcc7.DefaultValueAccessor, FilterInputDirective, ɵngcc7.NgControlStatus, ɵngcc7.NgModel], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], StringFilterMenuInputComponent.prototype, \"operators\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], StringFilterMenuInputComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StringFilterMenuInputComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StringFilterMenuInputComponent.prototype, \"operator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StringFilterMenuInputComponent.prototype, \"currentFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], StringFilterMenuInputComponent.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], StringFilterMenuInputComponent.prototype, \"isFirstDropDown\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], StringFilterMenuInputComponent.prototype, \"menuTabbingService\", void 0);\nStringFilterMenuInputComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], StringFilterMenuInputComponent);\n\n/**\n * Represents a string-filter menu component.\n * ([see example]({% slug builtinfiltertemplate_grid %}#toc-configuration-components-for-filter-templates)).\n */\nlet StringFilterMenuComponent = class 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 = function StringFilterMenuComponent_Factory(t) { return new (t || StringFilterMenuComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nStringFilterMenuComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StringFilterMenuComponent, selectors: [[\"kendo-grid-string-filter-menu\"]], hostVars: 2, hostBindings: function StringFilterMenuComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n } }, inputs: { filter: \"filter\", extra: \"extra\", column: \"column\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 9, consts: [[3, \"currentFilter\", \"operators\", \"filterService\", \"column\", \"filter\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterMenuDropDown\", \"\", \"class\", \"k-filter-and\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\", 4, \"ngIf\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"menuTabbingService\", 4, \"ngIf\"], [\"kendoFilterMenuDropDown\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-filter-and\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"menuTabbingService\"]], template: function StringFilterMenuComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-string-filter-menu-input\", 0);\n ɵngcc0.ɵɵtemplate(1, StringFilterMenuComponent_kendo_dropdownlist_1_Template, 1, 4, \"kendo-dropdownlist\", 1);\n ɵngcc0.ɵɵtemplate(2, StringFilterMenuComponent_kendo_grid_string_filter_menu_input_2_Template, 1, 6, \"kendo-grid-string-filter-menu-input\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"currentFilter\", ctx.firstFilter)(\"operators\", ctx.operators)(\"filterService\", ctx.filterService)(\"column\", ctx.column)(\"filter\", ctx.filter)(\"isFirstDropDown\", true)(\"menuTabbingService\", ctx.menuTabbingService);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.extra);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.extra);\n } }, directives: function () { return [StringFilterMenuInputComponent, ɵngcc5.NgIf, ɵngcc8.DropDownListComponent, FilterMenuDropDownListDirective]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-filtercell'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], StringFilterMenuComponent.prototype, \"hostClasses\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], StringFilterMenuComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StringFilterMenuComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], StringFilterMenuComponent.prototype, \"extra\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], StringFilterMenuComponent.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], StringFilterMenuComponent.prototype, \"menuTabbingService\", void 0);\nStringFilterMenuComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], StringFilterMenuComponent);\n\n/**\n * Represents a numeric-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet NumericFilterMenuComponent = class 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 = function NumericFilterMenuComponent_Factory(t) { return new (t || NumericFilterMenuComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nNumericFilterMenuComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NumericFilterMenuComponent, selectors: [[\"kendo-grid-numeric-filter-menu\"]], hostVars: 2, hostBindings: function NumericFilterMenuComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n } }, inputs: { filter: \"filter\", extra: \"extra\", column: \"column\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 15, consts: [[3, \"currentFilter\", \"operators\", \"filterService\", \"column\", \"filter\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\", \"menuTabbingService\", \"isFirstDropDown\"], [\"kendoFilterMenuDropDown\", \"\", \"class\", \"k-filter-and\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\", 4, \"ngIf\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\", \"menuTabbingService\", 4, \"ngIf\"], [\"kendoFilterMenuDropDown\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-filter-and\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\", \"menuTabbingService\"]], template: function NumericFilterMenuComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-numeric-filter-menu-input\", 0);\n ɵngcc0.ɵɵtemplate(1, NumericFilterMenuComponent_kendo_dropdownlist_1_Template, 1, 4, \"kendo-dropdownlist\", 1);\n ɵngcc0.ɵɵtemplate(2, NumericFilterMenuComponent_kendo_grid_numeric_filter_menu_input_2_Template, 1, 12, \"kendo-grid-numeric-filter-menu-input\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"currentFilter\", ctx.firstFilter)(\"operators\", ctx.operators)(\"filterService\", ctx.filterService)(\"column\", ctx.column)(\"filter\", ctx.filter)(\"format\", ctx.format)(\"decimals\", ctx.decimals)(\"spinners\", ctx.spinners)(\"min\", ctx.min)(\"max\", ctx.max)(\"step\", ctx.step)(\"menuTabbingService\", ctx.menuTabbingService)(\"isFirstDropDown\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.extra);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.extra);\n } }, directives: function () { return [NumericFilterMenuInputComponent, ɵngcc5.NgIf, ɵngcc8.DropDownListComponent, FilterMenuDropDownListDirective]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-filtercell'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], NumericFilterMenuComponent.prototype, \"hostClasses\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], NumericFilterMenuComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NumericFilterMenuComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericFilterMenuComponent.prototype, \"extra\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], NumericFilterMenuComponent.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], NumericFilterMenuComponent.prototype, \"menuTabbingService\", void 0);\nNumericFilterMenuComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], NumericFilterMenuComponent);\n\n/**\n * @hidden\n */\nlet NumericFilterMenuInputComponent = class 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 = function NumericFilterMenuInputComponent_Factory(t) { return new (t || NumericFilterMenuInputComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nNumericFilterMenuInputComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NumericFilterMenuInputComponent, selectors: [[\"kendo-grid-numeric-filter-menu-input\"]], inputs: { operators: \"operators\", step: \"step\", spinners: \"spinners\", column: \"column\", filter: \"filter\", operator: \"operator\", currentFilter: \"currentFilter\", filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\", min: \"min\", max: \"max\", decimals: \"decimals\", format: \"format\" }, decls: 3, vars: 20, consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterInput\", \"\", 3, \"columnLabel\", \"filterDelay\", \"autoCorrect\", \"value\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\"], [3, \"increment\", \"decrement\"]], template: function NumericFilterMenuInputComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-menu-input-wrapper\", 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-numerictextbox\", 1);\n ɵngcc0.ɵɵelement(2, \"kendo-numerictextbox-messages\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"currentFilter\", ctx.currentFilter)(\"filterService\", ctx.filterService)(\"isFirstDropDown\", ctx.isFirstDropDown)(\"menuTabbingService\", ctx.menuTabbingService);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", 0)(\"autoCorrect\", true)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value)(\"format\", ctx.format)(\"decimals\", ctx.decimals)(\"spinners\", ctx.spinners)(\"min\", ctx.min)(\"max\", ctx.max)(\"step\", ctx.step);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"increment\", ctx.messageFor(\"filterNumericIncrement\"))(\"decrement\", ctx.messageFor(\"filterNumericDecrement\"));\n } }, directives: [FilterMenuInputWrapperComponent, ɵngcc6.NumericTextBoxComponent, FilterInputDirective, ɵngcc6.NumericTextBoxCustomMessagesComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], NumericFilterMenuInputComponent.prototype, \"operators\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], NumericFilterMenuInputComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NumericFilterMenuInputComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericFilterMenuInputComponent.prototype, \"operator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], NumericFilterMenuInputComponent.prototype, \"currentFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], NumericFilterMenuInputComponent.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericFilterMenuInputComponent.prototype, \"isFirstDropDown\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], NumericFilterMenuInputComponent.prototype, \"menuTabbingService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterMenuInputComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterMenuInputComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterMenuInputComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericFilterMenuInputComponent.prototype, \"spinners\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericFilterMenuInputComponent.prototype, \"decimals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericFilterMenuInputComponent.prototype, \"format\", void 0);\nNumericFilterMenuInputComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], NumericFilterMenuInputComponent);\n\n/**\n * Represents a date-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet DateFilterMenuComponent = class 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 = function DateFilterMenuComponent_Factory(t) { return new (t || DateFilterMenuComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nDateFilterMenuComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateFilterMenuComponent, selectors: [[\"kendo-grid-date-filter-menu\"]], hostVars: 2, hostBindings: function DateFilterMenuComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n } }, inputs: { filter: \"filter\", extra: \"extra\", column: \"column\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 18, consts: [[3, \"currentFilter\", \"operators\", \"filterService\", \"column\", \"filter\", \"activeView\", \"bottomView\", \"topView\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"weekNumber\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterMenuDropDown\", \"\", \"class\", \"k-filter-and\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\", 4, \"ngIf\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"activeView\", \"bottomView\", \"topView\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"weekNumber\", \"menuTabbingService\", 4, \"ngIf\"], [\"kendoFilterMenuDropDown\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-filter-and\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"activeView\", \"bottomView\", \"topView\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"weekNumber\", \"menuTabbingService\"]], template: function DateFilterMenuComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-grid-date-filter-menu-input\", 0);\n ɵngcc0.ɵɵtemplate(1, DateFilterMenuComponent_kendo_dropdownlist_1_Template, 1, 4, \"kendo-dropdownlist\", 1);\n ɵngcc0.ɵɵtemplate(2, DateFilterMenuComponent_kendo_grid_date_filter_menu_input_2_Template, 1, 15, \"kendo-grid-date-filter-menu-input\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"currentFilter\", ctx.firstFilter)(\"operators\", ctx.operators)(\"filterService\", ctx.filterService)(\"column\", ctx.column)(\"filter\", ctx.filter)(\"activeView\", ctx.activeView)(\"bottomView\", ctx.bottomView)(\"topView\", ctx.topView)(\"format\", ctx.format)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"placeholder\", ctx.placeholder)(\"min\", ctx.min)(\"max\", ctx.max)(\"weekNumber\", ctx.weekNumber)(\"isFirstDropDown\", true)(\"menuTabbingService\", ctx.menuTabbingService);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.extra);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.extra);\n } }, directives: function () { return [DateFilterMenuInputComponent, ɵngcc5.NgIf, ɵngcc8.DropDownListComponent, FilterMenuDropDownListDirective]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-filtercell'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DateFilterMenuComponent.prototype, \"hostClasses\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], DateFilterMenuComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateFilterMenuComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateFilterMenuComponent.prototype, \"extra\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], DateFilterMenuComponent.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], DateFilterMenuComponent.prototype, \"menuTabbingService\", void 0);\nDateFilterMenuComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], DateFilterMenuComponent);\n\n/**\n * @hidden\n */\nlet BooleanFilterRadioButtonDirective = class 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 = function BooleanFilterRadioButtonDirective_Factory(t) { return new (t || BooleanFilterRadioButtonDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nBooleanFilterRadioButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BooleanFilterRadioButtonDirective, selectors: [[\"\", \"kendoFilterMenuRadioButton\", \"\"]], inputs: { columnLabel: \"columnLabel\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], BooleanFilterRadioButtonDirective.prototype, \"columnLabel\", void 0);\nBooleanFilterRadioButtonDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2])\n], BooleanFilterRadioButtonDirective);\n\n/**\n * Represents a Boolean-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet BooleanFilterMenuComponent = class 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 = function BooleanFilterMenuComponent_Factory(t) { return new (t || BooleanFilterMenuComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nBooleanFilterMenuComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BooleanFilterMenuComponent, selectors: [[\"kendo-grid-boolean-filter-menu\"]], viewQuery: function BooleanFilterMenuComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(BooleanFilterRadioButtonDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.radioButtons = _t);\n } }, hostVars: 2, hostBindings: function BooleanFilterMenuComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n } }, inputs: { filter: \"filter\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, \"k-radio-list\", \"k-reset\"], [4, \"ngFor\", \"ngForOf\"], [\"type\", \"radio\", \"kendoFilterMenuRadioButton\", \"\", 1, \"k-radio\", 3, \"columnLabel\", \"name\", \"checked\", \"change\", \"keydown.shift.tab\"], [\"input\", \"\"], [1, \"k-radio-label\"]], template: function BooleanFilterMenuComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵtemplate(1, BooleanFilterMenuComponent_li_1_Template, 5, 6, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.items);\n } }, directives: [ɵngcc5.NgForOf, BooleanFilterRadioButtonDirective], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-filtercell'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], BooleanFilterMenuComponent.prototype, \"hostClasses\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], BooleanFilterMenuComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], BooleanFilterMenuComponent.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], BooleanFilterMenuComponent.prototype, \"menuTabbingService\", void 0);\n__decorate([\n ViewChildren(BooleanFilterRadioButtonDirective),\n __metadata(\"design:type\", QueryList)\n], BooleanFilterMenuComponent.prototype, \"radioButtons\", void 0);\nBooleanFilterMenuComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], BooleanFilterMenuComponent);\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 */\nlet FilterMenuHostDirective = class 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 = function FilterMenuHostDirective_Factory(t) { return new (t || FilterMenuHostDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver)); };\nFilterMenuHostDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterMenuHostDirective, selectors: [[\"\", \"kendoFilterMenuHost\", \"\"]], inputs: { filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], FilterMenuHostDirective.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], FilterMenuHostDirective.prototype, \"menuTabbingService\", void 0);\nFilterMenuHostDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef,\n ComponentFactoryResolver])\n], FilterMenuHostDirective);\n\n/**\n * @hidden\n */\nlet DateFilterMenuInputComponent = class 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 = function DateFilterMenuInputComponent_Factory(t) { return new (t || DateFilterMenuInputComponent)(ɵngcc0.ɵɵdirectiveInject(SinglePopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nDateFilterMenuInputComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DateFilterMenuInputComponent, selectors: [[\"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\" }, decls: 4, vars: 22, consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterInput\", \"\", 3, \"columnLabel\", \"filterDelay\", \"value\", \"placeholder\", \"formatPlaceholder\", \"format\", \"min\", \"max\", \"activeView\", \"bottomView\", \"topView\", \"weekNumber\", \"open\"], [\"picker\", \"\"], [3, \"toggle\", \"today\"]], template: function DateFilterMenuInputComponent_Template(rf, ctx) { if (rf & 1) {\n const _r1 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-filter-menu-input-wrapper\", 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-datepicker\", 1, 2);\n ɵngcc0.ɵɵlistener(\"open\", function DateFilterMenuInputComponent_Template_kendo_datepicker_open_1_listener() { ɵngcc0.ɵɵrestoreView(_r1); const _r0 = ɵngcc0.ɵɵreference(2); return ctx.open(_r0); });\n ɵngcc0.ɵɵelement(3, \"kendo-datepicker-messages\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"currentFilter\", ctx.currentFilter)(\"filterService\", ctx.filterService)(\"isFirstDropDown\", ctx.isFirstDropDown)(\"menuTabbingService\", ctx.menuTabbingService);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", 0)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value)(\"placeholder\", ctx.placeholder)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"format\", ctx.format)(\"min\", ctx.min)(\"max\", ctx.max)(\"activeView\", ctx.activeView)(\"bottomView\", ctx.bottomView)(\"topView\", ctx.topView)(\"weekNumber\", ctx.weekNumber);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"toggle\", ctx.messageFor(\"filterDateToggle\"))(\"today\", ctx.messageFor(\"filterDateToday\"));\n } }, directives: [FilterMenuInputWrapperComponent, ɵngcc9.DatePickerComponent, FilterInputDirective, ɵngcc9.DatePickerCustomMessagesComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], DateFilterMenuInputComponent.prototype, \"operators\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnComponent)\n], DateFilterMenuInputComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateFilterMenuInputComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterMenuInputComponent.prototype, \"operator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateFilterMenuInputComponent.prototype, \"currentFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FilterService)\n], DateFilterMenuInputComponent.prototype, \"filterService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", MenuTabbingService)\n], DateFilterMenuInputComponent.prototype, \"menuTabbingService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterMenuInputComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DateFilterMenuInputComponent.prototype, \"formatPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterMenuInputComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DateFilterMenuInputComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], DateFilterMenuInputComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterMenuInputComponent.prototype, \"activeView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterMenuInputComponent.prototype, \"bottomView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DateFilterMenuInputComponent.prototype, \"topView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateFilterMenuInputComponent.prototype, \"weekNumber\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DateFilterMenuInputComponent.prototype, \"isFirstDropDown\", void 0);\nDateFilterMenuInputComponent = __decorate([ __metadata(\"design:paramtypes\", [SinglePopupService,\n LocalizationService])\n], DateFilterMenuInputComponent);\n\n/**\n * @hidden\n */\nlet FilterMenuDropDownListDirective = class 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 = function FilterMenuDropDownListDirective_Factory(t) { return new (t || FilterMenuDropDownListDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc8.DropDownListComponent)); };\nFilterMenuDropDownListDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilterMenuDropDownListDirective, selectors: [[\"\", \"kendoFilterMenuDropDown\", \"\"]], inputs: { filterMenuDropDownLabel: \"filterMenuDropDownLabel\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FilterMenuDropDownListDirective.prototype, \"filterMenuDropDownLabel\", void 0);\nFilterMenuDropDownListDirective = __decorate([ __metadata(\"design:paramtypes\", [DropDownListComponent])\n], FilterMenuDropDownListDirective);\n\nconst INTERNAL_COMPONENTS$2 = [\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$1 = [\n StringFilterMenuComponent,\n NumericFilterMenuComponent,\n DateFilterMenuComponent,\n BooleanFilterMenuComponent\n];\n/**\n * @hidden\n */\nlet FilterMenuModule = class 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 = function FilterMenuModule_Factory(t) { return new (t || FilterMenuModule)(); };\nFilterMenuModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FilterMenuModule });\nFilterMenuModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedFilterModule], SharedFilterModule] });\n\n/**\n * @hidden\n */\nlet ColumnListComponent = class 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 = function ColumnListComponent_Factory(t) { return new (t || ColumnListComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nColumnListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnListComponent, selectors: [[\"kendo-grid-columnlist\"]], viewQuery: function ColumnListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c183, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.applyButton = _t.first);\n } }, hostVars: 2, hostBindings: function ColumnListComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-column-list-wrapper\", ctx.className);\n } }, inputs: { autoSync: \"autoSync\", allowHideAll: \"allowHideAll\", actionsClass: \"actionsClass\", columns: \"columns\", applyText: \"applyText\", resetText: \"resetText\", isLast: \"isLast\", isExpanded: \"isExpanded\", service: \"service\" }, outputs: { reset: \"reset\", apply: \"apply\", columnChange: \"columnChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: [[1, \"k-column-list\"], [\"class\", \"k-column-list-item\", 4, \"ngFor\", \"ngForOf\"], [3, \"ngClass\", 4, \"ngIf\"], [1, \"k-column-list-item\"], [\"type\", \"checkbox\", 1, \"k-checkbox\", 3, \"checked\", \"disabled\"], [1, \"k-checkbox-label\"], [3, \"ngClass\"], [\"type\", \"button\", 1, \"k-button\", 3, \"click\"], [\"type\", \"button\", 1, \"k-button\", \"k-primary\", 3, \"keydown.tab\", \"click\"], [\"applyButton\", \"\"]], template: function ColumnListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, ColumnListComponent_label_1_Template, 4, 4, \"label\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, ColumnListComponent_div_2_Template, 6, 3, \"div\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.columns);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.autoSync);\n } }, directives: [ɵngcc5.NgForOf, ɵngcc5.NgIf, ɵngcc5.NgClass], encapsulation: 2 });\n__decorate([\n HostBinding(\"class.k-column-list-wrapper\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColumnListComponent.prototype, \"className\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnListComponent.prototype, \"reset\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnListComponent.prototype, \"apply\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnListComponent.prototype, \"columnChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], ColumnListComponent.prototype, \"columns\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnListComponent.prototype, \"autoSync\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnListComponent.prototype, \"allowHideAll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnListComponent.prototype, \"applyText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnListComponent.prototype, \"resetText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnListComponent.prototype, \"actionsClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnListComponent.prototype, \"isLast\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnListComponent.prototype, \"isExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnMenuService)\n], ColumnListComponent.prototype, \"service\", void 0);\n__decorate([\n ViewChild('applyButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColumnListComponent.prototype, \"applyButton\", void 0);\nColumnListComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n Renderer2])\n], ColumnListComponent);\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 * {% 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 * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n * {% endmeta %}\n */\nlet ColumnChooserComponent = class 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 = function ColumnChooserComponent_Factory(t) { return new (t || ColumnChooserComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nColumnChooserComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnChooserComponent, selectors: [[\"kendo-grid-column-chooser\"]], inputs: { autoSync: \"autoSync\", allowHideAll: \"allowHideAll\" }, decls: 5, vars: 1, consts: [[\"type\", \"button\", 1, \"k-button\", \"k-bare\", \"k-button-icon\", 3, \"click\"], [\"anchor\", \"\"], [1, \"k-icon\", \"k-i-columns\"], [\"template\", \"\"], [1, \"k-column-chooser-title\"], [3, \"columns\", \"applyText\", \"resetText\", \"autoSync\", \"allowHideAll\", \"apply\", \"columnChange\"]], template: function ColumnChooserComponent_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function ColumnChooserComponent_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const _r0 = ɵngcc0.ɵɵreference(1); const _r1 = ɵngcc0.ɵɵreference(4); return ctx.toggle(_r0, _r1); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ColumnChooserComponent_ng_template_3_Template, 3, 6, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"title\", ctx.localization.get(\"columns\"));\n } }, directives: [ColumnListComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnChooserComponent.prototype, \"autoSync\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnChooserComponent.prototype, \"allowHideAll\", void 0);\nColumnChooserComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ColumnInfoService,\n PopupService,\n NgZone,\n Renderer2,\n ChangeDetectorRef])\n], ColumnChooserComponent);\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 = function ColumnMenuItemBase_Factory(t) { return new (t || ColumnMenuItemBase)(); };\nColumnMenuItemBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnMenuItemBase, hostVars: 2, hostBindings: function ColumnMenuItemBase_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-columnmenu-item-wrapper\", ctx.hostClass);\n } }, inputs: { service: \"service\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", ColumnMenuService)\n], ColumnMenuItemBase.prototype, \"service\", void 0);\n__decorate([\n HostBinding('class.k-columnmenu-item-wrapper'),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuItemBase.prototype, \"hostClass\", void 0);\n\n/* tslint:disable:max-line-length */\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 */\nlet ColumnMenuChooserComponent = class 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 = function ColumnMenuChooserComponent_Factory(t) { return new (t || ColumnMenuChooserComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nColumnMenuChooserComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuChooserComponent, selectors: [[\"kendo-grid-columnmenu-chooser\"]], inputs: { expanded: \"expanded\", isLast: \"isLast\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [[\"icon\", \"columns\", 3, \"text\", \"expanded\", \"collapse\", \"expand\"], [\"kendoGridColumnMenuItemContentTemplate\", \"\"], [3, \"applyText\", \"resetText\", \"columns\", \"autoSync\", \"allowHideAll\", \"actionsClass\", \"isLast\", \"isExpanded\", \"service\", \"apply\"]], template: function ColumnMenuChooserComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n ɵngcc0.ɵɵlistener(\"collapse\", function ColumnMenuChooserComponent_Template_kendo_grid_columnmenu_item_collapse_0_listener() { return ctx.onCollapse(); })(\"expand\", function ColumnMenuChooserComponent_Template_kendo_grid_columnmenu_item_expand_0_listener() { return ctx.onExpand(); });\n ɵngcc0.ɵɵtemplate(1, ColumnMenuChooserComponent_ng_template_1_Template, 1, 9, \"ng-template\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"text\", ctx.localization.get(\"columns\"))(\"expanded\", ctx.expanded);\n } }, directives: function () { return [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnListComponent]; }, encapsulation: 2 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuChooserComponent.prototype, \"expand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuChooserComponent.prototype, \"collapse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuChooserComponent.prototype, \"expanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuChooserComponent.prototype, \"isLast\", void 0);\nColumnMenuChooserComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ColumnInfoService,\n ChangeDetectorRef,\n ElementRef])\n], ColumnMenuChooserComponent);\n\n/* tslint:disable:max-line-length */\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 */\nlet ColumnMenuFilterComponent = class 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 = function ColumnMenuFilterComponent_Factory(t) { return new (t || ColumnMenuFilterComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nColumnMenuFilterComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuFilterComponent, selectors: [[\"kendo-grid-columnmenu-filter\"]], inputs: { expanded: \"expanded\", isLast: \"isLast\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [[\"icon\", \"filter\", 3, \"text\", \"expanded\", \"collapse\", \"expand\"], [\"kendoGridColumnMenuItemContentTemplate\", \"\"], [3, \"column\", \"menuTabbingService\", \"filter\", \"actionsClass\", \"isLast\", \"isExpanded\", \"keydown.shift.tab\", \"close\"]], template: function ColumnMenuFilterComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n ɵngcc0.ɵɵlistener(\"collapse\", function ColumnMenuFilterComponent_Template_kendo_grid_columnmenu_item_collapse_0_listener() { return ctx.onCollapse(); })(\"expand\", function ColumnMenuFilterComponent_Template_kendo_grid_columnmenu_item_expand_0_listener() { return ctx.onExpand(); });\n ɵngcc0.ɵɵtemplate(1, ColumnMenuFilterComponent_ng_template_1_Template, 1, 6, \"ng-template\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"text\", ctx.localization.get(\"filter\"))(\"expanded\", ctx.expanded);\n } }, directives: function () { return [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, FilterMenuContainerComponent]; }, encapsulation: 2 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuFilterComponent.prototype, \"expand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuFilterComponent.prototype, \"collapse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuFilterComponent.prototype, \"expanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuFilterComponent.prototype, \"isLast\", void 0);\nColumnMenuFilterComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ElementRef])\n], ColumnMenuFilterComponent);\n\n/* tslint:disable:max-line-length */\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 */\nlet ColumnMenuItemContentTemplateDirective = class ColumnMenuItemContentTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nColumnMenuItemContentTemplateDirective.ɵfac = function ColumnMenuItemContentTemplateDirective_Factory(t) { return new (t || ColumnMenuItemContentTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nColumnMenuItemContentTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnMenuItemContentTemplateDirective, selectors: [[\"\", \"kendoGridColumnMenuItemContentTemplate\", \"\"]] });\nColumnMenuItemContentTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ColumnMenuItemContentTemplateDirective);\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 */\nlet ColumnMenuItemComponent = class ColumnMenuItemComponent {\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 */\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 = function ColumnMenuItemComponent_Factory(t) { return new (t || ColumnMenuItemComponent)(); };\nColumnMenuItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuItemComponent, selectors: [[\"kendo-grid-columnmenu-item\"]], contentQueries: function ColumnMenuItemComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnMenuItemContentTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n } }, inputs: { expanded: \"expanded\", icon: \"icon\", text: \"text\", selected: \"selected\", disabled: \"disabled\" }, outputs: { itemClick: \"itemClick\", expand: \"expand\", collapse: \"collapse\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 4, vars: 8, consts: [[\"role\", \"button\", 1, \"k-columnmenu-item\", 3, \"click\", \"keydown.enter\"], [\"class\", \"k-icon\", 3, \"ngClass\", 4, \"ngIf\"], [\"style\", \"overflow:hidden;\", \"class\", \"k-columnmenu-item-content\", 4, \"ngIf\"], [1, \"k-icon\", 3, \"ngClass\"], [1, \"k-columnmenu-item-content\", 2, \"overflow\", \"hidden\"], [3, \"ngTemplateOutlet\"]], template: function ColumnMenuItemComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function ColumnMenuItemComponent_Template_div_click_0_listener($event) { return ctx.onClick($event); })(\"keydown.enter\", function ColumnMenuItemComponent_Template_div_keydown_enter_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵtemplate(1, ColumnMenuItemComponent_span_1_Template, 1, 1, \"span\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ColumnMenuItemComponent_div_3_Template, 3, 2, \"div\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-state-selected\", ctx.selected)(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.expanded);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.icon);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.text, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contentTemplate);\n } }, directives: [ɵngcc5.NgIf, ɵngcc5.NgClass, ɵngcc5.NgTemplateOutlet], encapsulation: 2, data: { animation: [\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__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuItemComponent.prototype, \"itemClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuItemComponent.prototype, \"expand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuItemComponent.prototype, \"collapse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnMenuItemComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColumnMenuItemComponent.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuItemComponent.prototype, \"selected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuItemComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuItemComponent.prototype, \"expanded\", void 0);\n__decorate([\n ContentChild(ColumnMenuItemContentTemplateDirective, { static: false }),\n __metadata(\"design:type\", ColumnMenuItemContentTemplateDirective)\n], ColumnMenuItemComponent.prototype, \"contentTemplate\", void 0);\n\n/* tslint:disable:max-line-length */\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 */\nlet ColumnMenuSortComponent = class 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$1(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 = function ColumnMenuSortComponent_Factory(t) { return new (t || ColumnMenuSortComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(SortService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nColumnMenuSortComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuSortComponent, selectors: [[\"kendo-grid-columnmenu-sort\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 4, consts: [[\"icon\", \"sort-asc-sm\", 3, \"text\", \"selected\", \"itemClick\"], [\"icon\", \"sort-desc-sm\", 3, \"text\", \"selected\", \"itemClick\"]], template: function ColumnMenuSortComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n ɵngcc0.ɵɵlistener(\"itemClick\", function ColumnMenuSortComponent_Template_kendo_grid_columnmenu_item_itemClick_0_listener() { return ctx.toggleSort(\"asc\"); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(1, \"kendo-grid-columnmenu-item\", 1);\n ɵngcc0.ɵɵlistener(\"itemClick\", function ColumnMenuSortComponent_Template_kendo_grid_columnmenu_item_itemClick_1_listener() { return ctx.toggleSort(\"desc\"); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"text\", ctx.localization.get(\"sortAscending\"))(\"selected\", ctx.sortedAsc);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"text\", ctx.localization.get(\"sortDescending\"))(\"selected\", ctx.sortedDesc);\n } }, directives: [ColumnMenuItemComponent], encapsulation: 2 });\nColumnMenuSortComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n SortService,\n Renderer2])\n], ColumnMenuSortComponent);\n\n/* tslint:disable:max-line-length */\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 */\nlet ColumnMenuLockComponent = class 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 = function ColumnMenuLockComponent_Factory(t) { return new (t || ColumnMenuLockComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nColumnMenuLockComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuLockComponent, selectors: [[\"kendo-grid-columnmenu-lock\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 3, consts: [[3, \"text\", \"icon\", \"disabled\", \"itemClick\"]], template: function ColumnMenuLockComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n ɵngcc0.ɵɵlistener(\"itemClick\", function ColumnMenuLockComponent_Template_kendo_grid_columnmenu_item_itemClick_0_listener() { return ctx.toggleColumn(); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"text\", ctx.text)(\"icon\", ctx.icon)(\"disabled\", ctx.disabled);\n } }, directives: [ColumnMenuItemComponent], encapsulation: 2 });\nColumnMenuLockComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ColumnInfoService,\n ChangeDetectorRef])\n], ColumnMenuLockComponent);\n\n/* tslint:disable:max-line-length */\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 */\nlet ColumnMenuPositionComponent = class 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 = function ColumnMenuPositionComponent_Factory(t) { return new (t || ColumnMenuPositionComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nColumnMenuPositionComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuPositionComponent, selectors: [[\"kendo-grid-columnmenu-position\"]], inputs: { expanded: \"expanded\", isLast: \"isLast\", showLock: \"showLock\", showStick: \"showStick\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [[\"icon\", \"set-column-position\", 3, \"text\", \"expanded\", \"keydown.tab\", \"collapse\", \"expand\"], [\"kendoGridColumnMenuItemContentTemplate\", \"\"], [3, \"service\", \"keydown.tab\", 4, \"ngIf\"], [3, \"service\", \"keydown.tab\"]], template: function ColumnMenuPositionComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n ɵngcc0.ɵɵlistener(\"keydown.tab\", function ColumnMenuPositionComponent_Template_kendo_grid_columnmenu_item_keydown_tab_0_listener($event) { return ctx.onTab($event, !ctx.expanded); })(\"collapse\", function ColumnMenuPositionComponent_Template_kendo_grid_columnmenu_item_collapse_0_listener() { return ctx.onCollapse(); })(\"expand\", function ColumnMenuPositionComponent_Template_kendo_grid_columnmenu_item_expand_0_listener() { return ctx.onExpand(); });\n ɵngcc0.ɵɵtemplate(1, ColumnMenuPositionComponent_ng_template_1_Template, 2, 2, \"ng-template\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"text\", ctx.localization.get(\"setColumnPosition\"))(\"expanded\", ctx.expanded);\n } }, directives: function () { return [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ɵngcc5.NgIf, ColumnMenuLockComponent, ColumnMenuStickComponent]; }, encapsulation: 2 });\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuPositionComponent.prototype, \"expand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColumnMenuPositionComponent.prototype, \"collapse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuPositionComponent.prototype, \"expanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuPositionComponent.prototype, \"showLock\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColumnMenuPositionComponent.prototype, \"showStick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ColumnMenuPositionComponent.prototype, \"isLast\", null);\nColumnMenuPositionComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ElementRef])\n], ColumnMenuPositionComponent);\n\n/**\n * @hidden\n */\nlet ColumnMenuItemDirective = class 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 = function ColumnMenuItemDirective_Factory(t) { return new (t || ColumnMenuItemDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nColumnMenuItemDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColumnMenuItemDirective, selectors: [[\"\", \"kendoGridColumnMenuItem\", \"\"]], inputs: { menuItemComponent: [\"kendoGridColumnMenuItem\", \"menuItemComponent\"] } });\n__decorate([\n Input('kendoGridColumnMenuItem'),\n __metadata(\"design:type\", Object)\n], ColumnMenuItemDirective.prototype, \"menuItemComponent\", void 0);\nColumnMenuItemDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n NgZone])\n], ColumnMenuItemDirective);\n\n/**\n * @hidden\n */\nlet ColumnMenuContainerComponent = class 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 = function ColumnMenuContainerComponent_Factory(t) { return new (t || ColumnMenuContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnMenuService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nColumnMenuContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuContainerComponent, selectors: [[\"kendo-grid-columnmenu-container\"]], contentQueries: function ColumnMenuContainerComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnMenuItemDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columnMenuItems = _t);\n } }, ngContentSelectors: _c146, decls: 1, vars: 0, template: function ColumnMenuContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n ContentChildren(ColumnMenuItemDirective, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], ColumnMenuContainerComponent.prototype, \"columnMenuItems\", void 0);\nColumnMenuContainerComponent = __decorate([ __metadata(\"design:paramtypes\", [ColumnMenuService,\n NgZone])\n], ColumnMenuContainerComponent);\n\n/* tslint:disable:max-line-length */\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 */\nlet ColumnMenuStickComponent = class 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 = function ColumnMenuStickComponent_Factory(t) { return new (t || ColumnMenuStickComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nColumnMenuStickComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColumnMenuStickComponent, selectors: [[\"kendo-grid-columnmenu-stick\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 3, consts: [[3, \"text\", \"icon\", \"disabled\", \"itemClick\"]], template: function ColumnMenuStickComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n ɵngcc0.ɵɵlistener(\"itemClick\", function ColumnMenuStickComponent_Template_kendo_grid_columnmenu_item_itemClick_0_listener() { return ctx.toggleColumn(); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"text\", ctx.text)(\"icon\", ctx.icon)(\"disabled\", ctx.disabled);\n } }, directives: [ColumnMenuItemComponent], encapsulation: 2 });\nColumnMenuStickComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ColumnInfoService,\n ChangeDetectorRef])\n], ColumnMenuStickComponent);\n\nconst COMPONENTS$1 = [\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 */\nlet ColumnMenuModule = class 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 = function ColumnMenuModule_Factory(t) { return new (t || ColumnMenuModule)(); };\nColumnMenuModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ColumnMenuModule });\nColumnMenuModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FilterMenuModule]] });\n\nconst exportedModules$2 = [\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 */\nlet HeaderModule = class HeaderModule {\n static exports() {\n return [\n HeaderTemplateDirective,\n SelectAllCheckboxDirective\n ];\n }\n};\nHeaderModule.ɵfac = function HeaderModule_Factory(t) { return new (t || HeaderModule)(); };\nHeaderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: HeaderModule });\nHeaderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[...importedModules$2]] });\n\nvar CommandColumnComponent_1;\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 */\nlet CommandColumnComponent = CommandColumnComponent_1 = class CommandColumnComponent extends ColumnBase$1 {\n constructor(parent) {\n super(parent);\n this.parent = parent;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n};\nCommandColumnComponent.ɵfac = function CommandColumnComponent_Factory(t) { return new (t || CommandColumnComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnBase$1, 13)); };\nCommandColumnComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CommandColumnComponent, selectors: [[\"kendo-grid-command-column\"]], contentQueries: function CommandColumnComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => CommandColumnComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CommandColumnComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChild(CellTemplateDirective, { static: false }),\n __metadata(\"design:type\", CellTemplateDirective)\n], CommandColumnComponent.prototype, \"template\", void 0);\nCommandColumnComponent = CommandColumnComponent_1 = __decorate([ __param(0, SkipSelf()), __param(0, Host()), __param(0, Optional()),\n __metadata(\"design:paramtypes\", [ColumnBase$1])\n], CommandColumnComponent);\n\nvar CheckboxColumnComponent_1;\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 */\nlet CheckboxColumnComponent = CheckboxColumnComponent_1 = class CheckboxColumnComponent extends ColumnBase$1 {\n constructor(parent) {\n super(parent);\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 = function CheckboxColumnComponent_Factory(t) { return new (t || CheckboxColumnComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnBase$1, 13)); };\nCheckboxColumnComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CheckboxColumnComponent, selectors: [[\"kendo-grid-checkbox-column\"]], contentQueries: function CheckboxColumnComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n } }, inputs: { showSelectAll: \"showSelectAll\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => CheckboxColumnComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CheckboxColumnComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CheckboxColumnComponent.prototype, \"showSelectAll\", void 0);\n__decorate([\n ContentChild(CellTemplateDirective, { static: false }),\n __metadata(\"design:type\", CellTemplateDirective)\n], CheckboxColumnComponent.prototype, \"template\", void 0);\nCheckboxColumnComponent = CheckboxColumnComponent_1 = __decorate([ __param(0, SkipSelf()), __param(0, Host()), __param(0, Optional()),\n __metadata(\"design:paramtypes\", [ColumnBase$1])\n], CheckboxColumnComponent);\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 */\nlet SelectionCheckboxDirective = class 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 = function SelectionCheckboxDirective_Factory(t) { return new (t || SelectionCheckboxDirective)(ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nSelectionCheckboxDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SelectionCheckboxDirective, selectors: [[\"\", \"kendoGridSelectionCheckbox\", \"\"]], hostVars: 1, hostBindings: function SelectionCheckboxDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"type\", ctx.type);\n } }, inputs: { itemIndex: [\"kendoGridSelectionCheckbox\", \"itemIndex\"] } });\n__decorate([\n Input(\"kendoGridSelectionCheckbox\"),\n __metadata(\"design:type\", Number)\n], SelectionCheckboxDirective.prototype, \"itemIndex\", void 0);\n__decorate([\n HostBinding('attr.type'),\n __metadata(\"design:type\", String)\n], SelectionCheckboxDirective.prototype, \"type\", void 0);\nSelectionCheckboxDirective = __decorate([ __metadata(\"design:paramtypes\", [SelectionService,\n ElementRef,\n Renderer2,\n NgZone])\n], SelectionCheckboxDirective);\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 */\nlet TableBodyComponent = class 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('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({}, 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 = function TableBodyComponent_Factory(t) { return new (t || TableBodyComponent)(ɵngcc0.ɵɵdirectiveInject(DetailsService), ɵngcc0.ɵɵdirectiveInject(GroupsService), ɵngcc0.ɵɵdirectiveInject(ChangeNotificationService), ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DomEventsService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(CellSelectionService), ɵngcc0.ɵɵdirectiveInject(ColumnInfoService), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nTableBodyComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TableBodyComponent, selectors: [[\"\", \"kendoGridTableBody\", \"\"]], inputs: { columns: \"columns\", groups: \"groups\", skip: \"skip\", noRecordsText: \"noRecordsText\", isLocked: \"isLocked\", skipGroupDecoration: \"skipGroupDecoration\", showGroupFooters: \"showGroupFooters\", lockedColumnsCount: \"lockedColumnsCount\", totalColumnsCount: \"totalColumnsCount\", trackBy: \"trackBy\", rowClass: \"rowClass\", allColumns: \"allColumns\", detailTemplate: \"detailTemplate\", noRecordsTemplate: \"noRecordsTemplate\", data: \"data\", selectable: \"selectable\", filterable: \"filterable\", isLoading: \"isLoading\", isVirtual: \"isVirtual\", loadingTemplate: \"loadingTemplate\", virtualColumns: \"virtualColumns\", rowSticky: \"rowSticky\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c184, decls: 4, vars: 5, consts: [[3, \"ngIf\"], [\"class\", \"k-grid-norecords\", 4, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\", \"ngForTrackBy\"], [3, \"resize\", 4, \"ngIf\"], [\"kendoGridLogicalRow\", \"\", 1, \"k-grid-add-row\", \"k-grid-edit-row\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\"], [\"class\", \"k-hierarchy-cell\", \"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", 3, \"logicalRowIndex\", \"logicalColIndex\", 4, \"ngIf\"], [\"kendoGridCell\", \"\", \"kendoGridLogicalCell\", \"\", \"role\", \"gridcell\", 3, \"rowIndex\", \"columnIndex\", \"isNew\", \"column\", \"dataItem\", \"k-grid-content-sticky\", \"ngClass\", \"left\", \"ngStyle\", \"logicalRowIndex\", \"logicalColIndex\", \"colSpan\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"k-group-cell\", \"role\", \"presentation\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\", 1, \"k-group-cell\"], [\"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", 1, \"k-hierarchy-cell\", 3, \"logicalRowIndex\", \"logicalColIndex\"], [\"kendoGridCell\", \"\", \"kendoGridLogicalCell\", \"\", \"role\", \"gridcell\", 3, \"rowIndex\", \"columnIndex\", \"isNew\", \"column\", \"dataItem\", \"ngClass\", \"ngStyle\", \"logicalRowIndex\", \"logicalColIndex\", \"colSpan\"], [1, \"k-grid-norecords\"], [3, \"ngIf\", \"templateContext\"], [4, \"ngIf\"], [\"kendoGridGroupHeader\", \"\", \"kendoGridLogicalRow\", \"\", 3, \"columns\", \"groups\", \"item\", \"hasDetails\", \"skipGroupDecoration\", \"hasGroupHeaderColumn\", \"groupHeaderColumns\", \"rowIndex\", \"totalColumnsCount\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", 4, \"ngIf\"], [\"kendoGridLogicalRow\", \"\", 3, \"dataRowIndex\", \"dataItem\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"k-grid-row-sticky\", \"ngClass\", \"k-alt\", \"k-master-row\", \"k-grid-edit-row\", \"k-state-selected\", 4, \"ngIf\"], [\"class\", \"k-detail-row\", \"kendoGridLogicalRow\", \"\", 3, \"k-alt\", \"dataRowIndex\", \"dataItem\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", 4, \"ngIf\"], [\"class\", \"k-group-footer\", \"kendoGridLogicalRow\", \"\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", 4, \"ngIf\"], [\"kendoGridGroupHeader\", \"\", \"kendoGridLogicalRow\", \"\", 3, \"columns\", \"groups\", \"item\", \"hasDetails\", \"skipGroupDecoration\", \"hasGroupHeaderColumn\", \"groupHeaderColumns\", \"rowIndex\", \"totalColumnsCount\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\"], [\"kendoGridLogicalRow\", \"\", 3, \"dataRowIndex\", \"dataItem\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"ngClass\"], [\"class\", \"k-hierarchy-cell\", \"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", 4, \"ngIf\"], [\"kendoGridCell\", \"\", \"kendoGridLogicalCell\", \"\", \"role\", \"gridcell\", 3, \"rowIndex\", \"columnIndex\", \"column\", \"dataItem\", \"isLoading\", \"isVirtual\", \"loadingTemplate\", \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"colIndex\", \"colSpan\", \"k-grid-content-sticky\", \"k-touch-action-none\", \"k-touch-action-auto\", \"ngClass\", \"k-grid-edit-cell\", \"ngStyle\", \"k-state-selected\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", 1, \"k-hierarchy-cell\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\"], [\"class\", \"k-icon\", \"href\", \"#\", \"tabindex\", \"-1\", 3, \"ngClass\", \"click\", 4, \"ngIf\"], [\"href\", \"#\", \"tabindex\", \"-1\", 1, \"k-icon\", 3, \"ngClass\", \"click\"], [\"kendoGridCell\", \"\", \"kendoGridLogicalCell\", \"\", \"role\", \"gridcell\", 3, \"rowIndex\", \"columnIndex\", \"column\", \"dataItem\", \"isLoading\", \"isVirtual\", \"loadingTemplate\", \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"colIndex\", \"colSpan\", \"ngClass\", \"ngStyle\"], [\"kendoGridLogicalRow\", \"\", 1, \"k-detail-row\", 3, \"dataRowIndex\", \"dataItem\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\"], [\"class\", \"k-group-cell\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-hierarchy-cell\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"gridcell\", \"aria-selected\", \"false\", 1, \"k-detail-cell\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"dataItem\", \"colIndex\", \"colSpan\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"k-group-cell\"], [\"kendoGridLogicalRow\", \"\", 1, \"k-group-footer\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\"], [\"kendoGridLogicalCell\", \"\", 3, \"logicalRowIndex\", \"logicalColIndex\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"kendoGridLogicalCell\", \"\", 3, \"logicalRowIndex\", \"logicalColIndex\"], [3, \"templateContext\"], [3, \"resize\"]], template: function TableBodyComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TableBodyComponent_ng_template_0_Template, 4, 8, \"ng-template\", 0);\n ɵngcc0.ɵɵtemplate(1, TableBodyComponent_tr_1_Template, 4, 6, \"tr\", 1);\n ɵngcc0.ɵɵtemplate(2, TableBodyComponent_ng_template_2_Template, 4, 4, \"ng-template\", 2);\n ɵngcc0.ɵɵtemplate(3, TableBodyComponent_kendo_resize_sensor_3_Template, 1, 0, \"kendo-resize-sensor\", 3);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.editService.hasNewItem);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (ctx.data == null ? null : ctx.data.length) === 0 || ctx.data == null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackByWrapper);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.rowSticky);\n } }, directives: function () { return [ɵngcc5.NgIf, LogicalRowDirective, ɵngcc5.NgForOf, LogicalCellDirective, CellComponent, ɵngcc5.NgClass, ɵngcc5.NgStyle, TemplateContextDirective, GroupHeaderComponent, ɵngcc5.NgTemplateOutlet, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], TableBodyComponent.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], TableBodyComponent.prototype, \"allColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], TableBodyComponent.prototype, \"groups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", DetailTemplateDirective)\n], TableBodyComponent.prototype, \"detailTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", NoRecordsTemplateDirective)\n], TableBodyComponent.prototype, \"noRecordsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], TableBodyComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TableBodyComponent.prototype, \"skip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TableBodyComponent.prototype, \"selectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TableBodyComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TableBodyComponent.prototype, \"noRecordsText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TableBodyComponent.prototype, \"isLocked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TableBodyComponent.prototype, \"isLoading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TableBodyComponent.prototype, \"isVirtual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], TableBodyComponent.prototype, \"loadingTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TableBodyComponent.prototype, \"skipGroupDecoration\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TableBodyComponent.prototype, \"showGroupFooters\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TableBodyComponent.prototype, \"lockedColumnsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TableBodyComponent.prototype, \"totalColumnsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TableBodyComponent.prototype, \"virtualColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TableBodyComponent.prototype, \"trackBy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TableBodyComponent.prototype, \"rowSticky\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TableBodyComponent.prototype, \"rowClass\", void 0);\nTableBodyComponent = __decorate([ __metadata(\"design:paramtypes\", [DetailsService,\n GroupsService,\n ChangeNotificationService,\n EditService,\n LocalizationService,\n NgZone,\n Renderer2,\n ElementRef,\n DomEventsService,\n SelectionService,\n CellSelectionService,\n ColumnInfoService,\n NavigationService])\n], TableBodyComponent);\n\n/**\n * @hidden\n */\nlet CellComponent = class 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 = function CellComponent_Factory(t) { return new (t || CellComponent)(ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(IdService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(CELL_CONTEXT, 8)); };\nCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CellComponent, selectors: [[\"\", \"kendoGridCell\", \"\"]], hostVars: 2, hostBindings: function CellComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-command-cell\", ctx.commandCellClass);\n } }, inputs: { isNew: \"isNew\", isLoading: \"isLoading\", isVirtual: \"isVirtual\", rowIndex: \"rowIndex\", column: \"column\", columnIndex: \"columnIndex\", loadingTemplate: \"loadingTemplate\", dataItem: \"dataItem\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c189, decls: 3, vars: 3, consts: [[3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [4, \"ngIf\", \"ngIfElse\"], [\"loading\", \"\"], [3, \"ngIf\", \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"k-checkbox\", 3, \"kendoGridSelectionCheckbox\"], [4, \"ngIf\"], [\"class\", \"k-skeleton-text k-skeleton\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"k-skeleton-text\", \"k-skeleton\"], [3, \"ngSwitch\", 4, \"ngIf\"], [\"kendoGridFocusable\", \"\", 3, \"format\", \"formControl\", 4, \"ngSwitchCase\"], [\"type\", \"checkbox\", \"class\", \"k-checkbox\", \"kendoGridFocusable\", \"\", 3, \"formControl\", 4, \"ngSwitchCase\"], [\"type\", \"text\", \"class\", \"k-textbox\", \"kendoGridFocusable\", \"\", 3, \"formControl\", 4, \"ngSwitchDefault\"], [\"kendoGridFocusable\", \"\", 3, \"format\", \"formControl\"], [\"type\", \"checkbox\", \"kendoGridFocusable\", \"\", 1, \"k-checkbox\", 3, \"formControl\"], [\"type\", \"text\", \"kendoGridFocusable\", \"\", 1, \"k-textbox\", 3, \"formControl\"]], template: function CellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵtemplate(1, CellComponent_ng_container_1_Template, 4, 2, \"ng-container\", 1);\n ɵngcc0.ɵɵtemplate(2, CellComponent_ng_container_2_Template, 3, 2, \"ng-container\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.isEdited);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n } }, directives: [ɵngcc5.NgSwitch, ɵngcc5.NgSwitchCase, ɵngcc5.NgIf, ɵngcc5.NgTemplateOutlet, ɵngcc5.NgForOf, FocusableDirective, SelectionCheckboxDirective, ɵngcc6.NumericTextBoxComponent, ɵngcc7.NgControlStatus, ɵngcc7.FormControlDirective, ɵngcc9.DatePickerComponent, ɵngcc7.CheckboxControlValueAccessor, ɵngcc5.NgSwitchDefault, ɵngcc7.DefaultValueAccessor], pipes: [FieldAccessorPipe], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-command-cell'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CellComponent.prototype, \"commandCellClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CellComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CellComponent.prototype, \"columnIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CellComponent.prototype, \"isNew\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CellComponent.prototype, \"isLoading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CellComponent.prototype, \"isVirtual\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CellComponent.prototype, \"loadingTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], CellComponent.prototype, \"rowIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CellComponent.prototype, \"dataItem\", void 0);\nCellComponent = __decorate([ __param(3, Optional()), __param(3, Inject(CELL_CONTEXT)),\n __metadata(\"design:paramtypes\", [EditService,\n IdService,\n LocalizationService, Object])\n], CellComponent);\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 */\nlet EditCommandDirective = class 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 = function EditCommandDirective_Factory(t) { return new (t || EditCommandDirective)(ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(CELL_CONTEXT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nEditCommandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditCommandDirective, selectors: [[\"\", \"kendoGridEditCommand\", \"\"]], hostVars: 4, hostBindings: function EditCommandDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function EditCommandDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.visible);\n ɵngcc0.ɵɵclassProp(\"k-grid-edit-command\", ctx.commandClass);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], EditCommandDirective.prototype, \"visible\", null);\n__decorate([\n HostBinding('class.k-grid-edit-command'),\n __metadata(\"design:type\", Boolean)\n], EditCommandDirective.prototype, \"commandClass\", void 0);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], EditCommandDirective.prototype, \"onClick\", null);\nEditCommandDirective = __decorate([ __param(1, Inject(CELL_CONTEXT)),\n __metadata(\"design:paramtypes\", [EditService, Object, ElementRef,\n Renderer2,\n LocalizationService,\n NgZone])\n], EditCommandDirective);\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 */\nlet CancelCommandDirective = class 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 = function CancelCommandDirective_Factory(t) { return new (t || CancelCommandDirective)(ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(CELL_CONTEXT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCancelCommandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CancelCommandDirective, selectors: [[\"\", \"kendoGridCancelCommand\", \"\"]], hostVars: 4, hostBindings: function CancelCommandDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CancelCommandDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.visible);\n ɵngcc0.ɵɵclassProp(\"k-grid-cancel-command\", ctx.commandClass);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], CancelCommandDirective.prototype, \"visible\", null);\n__decorate([\n HostBinding('class.k-grid-cancel-command'),\n __metadata(\"design:type\", Boolean)\n], CancelCommandDirective.prototype, \"commandClass\", void 0);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], CancelCommandDirective.prototype, \"onClick\", null);\nCancelCommandDirective = __decorate([ __param(1, Inject(CELL_CONTEXT)),\n __metadata(\"design:paramtypes\", [EditService, Object, ElementRef,\n Renderer2,\n LocalizationService,\n NgZone])\n], CancelCommandDirective);\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 */\nlet SaveCommandDirective = class 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 = function SaveCommandDirective_Factory(t) { return new (t || SaveCommandDirective)(ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(CELL_CONTEXT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nSaveCommandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SaveCommandDirective, selectors: [[\"\", \"kendoGridSaveCommand\", \"\"]], hostVars: 4, hostBindings: function SaveCommandDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function SaveCommandDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.visible);\n ɵngcc0.ɵɵclassProp(\"k-grid-save-command\", ctx.commandClass);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], SaveCommandDirective.prototype, \"visible\", null);\n__decorate([\n HostBinding('class.k-grid-save-command'),\n __metadata(\"design:type\", Boolean)\n], SaveCommandDirective.prototype, \"commandClass\", void 0);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], SaveCommandDirective.prototype, \"onClick\", null);\nSaveCommandDirective = __decorate([ __param(1, Inject(CELL_CONTEXT)),\n __metadata(\"design:paramtypes\", [EditService, Object, ElementRef,\n Renderer2,\n LocalizationService,\n NgZone])\n], SaveCommandDirective);\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 */\nlet RemoveCommandDirective = class 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 = function RemoveCommandDirective_Factory(t) { return new (t || RemoveCommandDirective)(ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(CELL_CONTEXT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nRemoveCommandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: RemoveCommandDirective, selectors: [[\"\", \"kendoGridRemoveCommand\", \"\"]], hostVars: 4, hostBindings: function RemoveCommandDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function RemoveCommandDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.visible);\n ɵngcc0.ɵɵclassProp(\"k-grid-remove-command\", ctx.commandClass);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], RemoveCommandDirective.prototype, \"visible\", null);\n__decorate([\n HostBinding('class.k-grid-remove-command'),\n __metadata(\"design:type\", Boolean)\n], RemoveCommandDirective.prototype, \"commandClass\", void 0);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], RemoveCommandDirective.prototype, \"onClick\", null);\nRemoveCommandDirective = __decorate([ __param(1, Inject(CELL_CONTEXT)),\n __metadata(\"design:paramtypes\", [EditService, Object, ElementRef,\n Renderer2,\n LocalizationService,\n NgZone])\n], RemoveCommandDirective);\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 */\nlet AddCommandDirective = class 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 = function AddCommandDirective_Factory(t) { return new (t || AddCommandDirective)(ɵngcc0.ɵɵdirectiveInject(EditService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nAddCommandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: AddCommandDirective, selectors: [[\"\", \"kendoGridAddCommand\", \"\"]], hostVars: 2, hostBindings: function AddCommandDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function AddCommandDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grid-add-command\", ctx.commandClass);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], AddCommandDirective.prototype, \"onClick\", null);\n__decorate([\n HostBinding('class.k-grid-add-command'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], AddCommandDirective.prototype, \"commandClass\", null);\nAddCommandDirective = __decorate([ __metadata(\"design:paramtypes\", [EditService,\n ElementRef,\n Renderer2,\n LocalizationService,\n NgZone])\n], AddCommandDirective);\n\nconst exported$1 = [\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];\nconst importedModules$3 = [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n SharedModule,\n GroupModule,\n NumericTextBoxModule,\n DatePickerModule,\n ResizeSensorModule\n];\n/**\n * @hidden\n */\nlet BodyModule = class 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 ];\n }\n};\nBodyModule.ɵfac = function BodyModule_Factory(t) { return new (t || BodyModule)(); };\nBodyModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BodyModule });\nBodyModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[...importedModules$3]] });\n\n/**\n * @hidden\n */\nlet FooterComponent = class 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({}, column.style, stickyStyles);\n }\n};\nFooterComponent.ɵfac = function FooterComponent_Factory(t) { return new (t || FooterComponent)(ɵngcc0.ɵɵdirectiveInject(ColumnInfoService)); };\nFooterComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FooterComponent, selectors: [[\"\", \"kendoGridFooter\", \"\"]], hostVars: 2, hostBindings: function FooterComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grid-footer\", ctx.footerClass);\n } }, inputs: { columns: \"columns\", groups: \"groups\", lockedColumnsCount: \"lockedColumnsCount\", logicalRowIndex: \"logicalRowIndex\", detailTemplate: \"detailTemplate\", scrollable: \"scrollable\" }, attrs: _c191, decls: 1, vars: 1, consts: [[3, \"ngIf\"], [\"kendoGridLogicalRow\", \"\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\"], [\"role\", \"presentation\", 3, \"k-group-cell\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\", 3, \"k-hierarchy-cell\", 4, \"ngIf\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"columnfooter\", \"aria-selected\", \"false\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"k-grid-footer-sticky\", \"ngClass\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"columnfooter\", \"aria-selected\", \"false\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"ngClass\", \"ngStyle\"], [3, \"templateContext\"]], template: function FooterComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FooterComponent_ng_template_0_Template, 4, 9, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", true);\n } }, directives: [ɵngcc5.NgIf, LogicalRowDirective, ɵngcc5.NgForOf, LogicalCellDirective, ɵngcc5.NgClass, ɵngcc5.NgStyle, TemplateContextDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FooterComponent.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FooterComponent.prototype, \"groups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", DetailTemplateDirective)\n], FooterComponent.prototype, \"detailTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FooterComponent.prototype, \"scrollable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FooterComponent.prototype, \"lockedColumnsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FooterComponent.prototype, \"logicalRowIndex\", void 0);\n__decorate([\n HostBinding('class.k-grid-footer'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FooterComponent.prototype, \"footerClass\", null);\nFooterComponent = __decorate([ __metadata(\"design:paramtypes\", [ColumnInfoService])\n], FooterComponent);\n\nconst exportedModules$3 = [\n FooterComponent\n];\nconst importedModules$4 = [\n CommonModule,\n SharedModule\n];\n/**\n * @hidden\n */\nlet FooterModule = class FooterModule {\n static exports() {\n return [];\n }\n};\nFooterModule.ɵfac = function FooterModule_Factory(t) { return new (t || FooterModule)(); };\nFooterModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FooterModule });\nFooterModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[...importedModules$4]] });\n\n/**\n * @hidden\n */\nlet ToolbarComponent = class ToolbarComponent {\n constructor(grid) {\n this.grid = grid;\n this.context = {};\n }\n set position(value) {\n this.context.position = value;\n }\n get toolbarTemplateRef() {\n return this.grid.toolbarTemplate ? this.grid.toolbarTemplate.templateRef : undefined;\n }\n};\nToolbarComponent.ɵfac = function ToolbarComponent_Factory(t) { return new (t || ToolbarComponent)(ɵngcc0.ɵɵdirectiveInject(GridComponent)); };\nToolbarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolbarComponent, selectors: [[\"kendo-grid-toolbar\"]], inputs: { position: \"position\" }, decls: 1, vars: 1, consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function ToolbarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolbarComponent_0_Template, 1, 2, null, 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.toolbarTemplateRef);\n } }, directives: [ɵngcc5.NgIf, ɵngcc5.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolbarComponent.prototype, \"position\", null);\nToolbarComponent = __decorate([ __metadata(\"design:paramtypes\", [GridComponent])\n], ToolbarComponent);\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) { } // tslint: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 = function EditingDirectiveBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nEditingDirectiveBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EditingDirectiveBase, inputs: { editService: \"editService\", removeConfirmation: \"removeConfirmation\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], EditingDirectiveBase.prototype, \"editService\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], EditingDirectiveBase.prototype, \"removeConfirmation\", void 0);\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 = /*@__PURE__*/ function () { let ɵRowEditingDirectiveBase_BaseFactory; return function RowEditingDirectiveBase_Factory(t) { return (ɵRowEditingDirectiveBase_BaseFactory || (ɵRowEditingDirectiveBase_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(RowEditingDirectiveBase)))(t || RowEditingDirectiveBase); }; }();\nRowEditingDirectiveBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: RowEditingDirectiveBase, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\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 */\nlet TemplateEditingDirective = class 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 = function TemplateEditingDirective_Factory(t) { return new (t || TemplateEditingDirective)(ɵngcc0.ɵɵdirectiveInject(GridComponent), ɵngcc0.ɵɵdirectiveInject(LocalDataChangesService)); };\nTemplateEditingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TemplateEditingDirective, selectors: [[\"\", \"kendoGridTemplateEditing\", \"\"]], inputs: { createNewItem: [\"kendoGridTemplateEditing\", \"createNewItem\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoGridTemplateEditing'),\n __metadata(\"design:type\", Function)\n], TemplateEditingDirective.prototype, \"createNewItem\", void 0);\nTemplateEditingDirective = __decorate([ __metadata(\"design:paramtypes\", [GridComponent, LocalDataChangesService])\n], TemplateEditingDirective);\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 */\nlet ReactiveEditingDirective = class 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 = function ReactiveEditingDirective_Factory(t) { return new (t || ReactiveEditingDirective)(ɵngcc0.ɵɵdirectiveInject(GridComponent), ɵngcc0.ɵɵdirectiveInject(LocalDataChangesService)); };\nReactiveEditingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ReactiveEditingDirective, selectors: [[\"\", \"kendoGridReactiveEditing\", \"\"]], inputs: { createFormGroup: [\"kendoGridReactiveEditing\", \"createFormGroup\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoGridReactiveEditing'),\n __metadata(\"design:type\", Function)\n], ReactiveEditingDirective.prototype, \"createFormGroup\", void 0);\nReactiveEditingDirective = __decorate([ __metadata(\"design:paramtypes\", [GridComponent, LocalDataChangesService])\n], ReactiveEditingDirective);\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 */\nlet InCellEditingDirective = class 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 this.editService.assignValues(dataItem, formGroup.value);\n this.editService.update(dataItem);\n }\n }\n};\nInCellEditingDirective.ɵfac = function InCellEditingDirective_Factory(t) { return new (t || InCellEditingDirective)(ɵngcc0.ɵɵdirectiveInject(GridComponent), ɵngcc0.ɵɵdirectiveInject(LocalDataChangesService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nInCellEditingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: InCellEditingDirective, selectors: [[\"\", \"kendoGridInCellEditing\", \"\"]], inputs: { createFormGroup: [\"kendoGridInCellEditing\", \"createFormGroup\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input('kendoGridInCellEditing'),\n __metadata(\"design:type\", Function)\n], InCellEditingDirective.prototype, \"createFormGroup\", void 0);\nInCellEditingDirective = __decorate([ __metadata(\"design:paramtypes\", [GridComponent,\n LocalDataChangesService,\n ChangeDetectorRef])\n], InCellEditingDirective);\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$$1) => process(data, state$$1).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) // tslint:disable-line:align\n);\n/**\n * @hidden\n */\nconst slice = (groups, skip, take$$1, includeFooters = false) => {\n if (!isPresent(take$$1)) {\n return groups;\n }\n const result = [];\n for (let idx = 0, length = groups.length; idx < length; idx++) {\n if (take$$1 <= 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$$1--;\n }\n if (take$$1) {\n if (hasGroups(groupItems)) {\n const children = slice(groupItems, skip, take$$1, includeFooters);\n items.push(...children);\n take$$1 -= count(children, includeFooters);\n }\n else {\n items.push(...groupItems.slice(skip, Math.min(skip + take$$1, groupItems.length)));\n take$$1 -= items.length;\n }\n if (take$$1 && includeFooters) {\n hideFooter = false;\n take$$1--;\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 */\nlet GroupBindingDirective = class 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$$1) {\n if (state$$1.group && state$$1.group.length) {\n const groups = this.processGroups(state$$1);\n this.grid.skip -= skippedHeaders(groups.data[0]);\n return groups;\n }\n else {\n this.groups = null;\n }\n return super.process(state$$1);\n }\n processGroups(state$$1) {\n if (!this.groups || !this.groups.length) {\n this.groups = processGroups(this.originalData, {\n filter: state$$1.filter,\n group: state$$1.group,\n sort: state$$1.sort\n });\n }\n return this.dataResult(state$$1.skip, state$$1.take);\n }\n dataResult(skip, take$$1) {\n const includeFooters = this.grid.showGroupFooters;\n return {\n data: slice(this.groups, skip, take$$1, includeFooters),\n total: count(this.groups, includeFooters)\n };\n }\n applyState({ skip, take: take$$1, sort, group, filter: filter$$1 }) {\n this.skip = skip;\n this.state.take = take$$1;\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$$1;\n }\n};\nGroupBindingDirective.ɵfac = function GroupBindingDirective_Factory(t) { return new (t || GroupBindingDirective)(ɵngcc0.ɵɵdirectiveInject(GridComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(LocalDataChangesService)); };\nGroupBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GroupBindingDirective, selectors: [[\"\", \"kendoGridGroupBinding\", \"\"]], inputs: { kendoGridGroupBinding: \"kendoGridGroupBinding\", sort: \"sort\", filter: \"filter\", group: \"group\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(\"kendoGridGroupBinding\"),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], GroupBindingDirective.prototype, \"kendoGridGroupBinding\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], GroupBindingDirective.prototype, \"sort\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], GroupBindingDirective.prototype, \"filter\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], GroupBindingDirective.prototype, \"group\", null);\nGroupBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [GridComponent, ChangeDetectorRef, LocalDataChangesService])\n], GroupBindingDirective);\n\nconst exportedModules$4 = [\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 = [\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 */\nlet GridModule = class GridModule {\n};\nGridModule.ɵfac = function GridModule_Factory(t) { return new (t || GridModule)(); };\nGridModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: GridModule });\nGridModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ 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\nlet PDFMarginComponent = class PDFMarginComponent extends PDFExportMarginComponent {\n};\nPDFMarginComponent.ɵfac = /*@__PURE__*/ function () { let ɵPDFMarginComponent_BaseFactory; return function PDFMarginComponent_Factory(t) { return (ɵPDFMarginComponent_BaseFactory || (ɵPDFMarginComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PDFMarginComponent)))(t || PDFMarginComponent); }; }();\nPDFMarginComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PDFMarginComponent, selectors: [[\"kendo-grid-pdf-margin\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PDFMarginComponent_Template(rf, ctx) { }, encapsulation: 2 });\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 */\nlet PDFTemplateDirective = class PDFTemplateDirective extends PDFExportTemplateDirective {\n constructor(templateRef) {\n super(templateRef);\n }\n};\nPDFTemplateDirective.ɵfac = function PDFTemplateDirective_Factory(t) { return new (t || PDFTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nPDFTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PDFTemplateDirective, selectors: [[\"\", \"kendoGridPDFTemplate\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nPDFTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], PDFTemplateDirective);\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-widget 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$1 = (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$1('div', className);\n};\n/**\n * Configures the settings for the export of Grid in PDF ([see example]({% slug pdfexport_grid %})).\n */\nlet PDFComponent = class 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$1('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); // tslint:disable-line: align\n }\n};\nPDFComponent.ɵfac = function PDFComponent_Factory(t) { return new (t || PDFComponent)(ɵngcc0.ɵɵdirectiveInject(PDFService), ɵngcc0.ɵɵdirectiveInject(SuspendService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPDFComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PDFComponent, selectors: [[\"kendo-grid-pdf\"]], contentQueries: function PDFComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, PDFMarginComponent, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, PDFTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnBase$1, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.marginComponent = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.pageTemplateDirective = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columns = _t);\n } }, inputs: { delay: \"delay\", allPages: \"allPages\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PDFComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFComponent.prototype, \"allPages\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PDFComponent.prototype, \"delay\", void 0);\n__decorate([\n ContentChildren(ColumnBase$1),\n __metadata(\"design:type\", QueryList)\n], PDFComponent.prototype, \"columns\", void 0);\n__decorate([\n ContentChild(PDFMarginComponent, { static: false }),\n __metadata(\"design:type\", PDFMarginComponent)\n], PDFComponent.prototype, \"marginComponent\", void 0);\n__decorate([\n ContentChild(PDFTemplateDirective, { static: false }),\n __metadata(\"design:type\", PDFTemplateDirective)\n], PDFComponent.prototype, \"pageTemplateDirective\", void 0);\nPDFComponent = __decorate([ __metadata(\"design:paramtypes\", [PDFService,\n SuspendService,\n NgZone,\n ElementRef])\n], PDFComponent);\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 */\nlet PDFCommandDirective = class 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 = function PDFCommandDirective_Factory(t) { return new (t || PDFCommandDirective)(ɵngcc0.ɵɵdirectiveInject(PDFService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nPDFCommandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PDFCommandDirective, selectors: [[\"\", \"kendoGridPDFCommand\", \"\"]], hostVars: 2, hostBindings: function PDFCommandDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function PDFCommandDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grid-pdf\", ctx.pdfClass);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PDFCommandDirective.prototype, \"onClick\", null);\n__decorate([\n HostBinding('class.k-grid-pdf'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PDFCommandDirective.prototype, \"pdfClass\", null);\nPDFCommandDirective = __decorate([ __metadata(\"design:paramtypes\", [PDFService,\n ElementRef,\n Renderer2,\n LocalizationService,\n NgZone])\n], PDFCommandDirective);\n\nconst exportedModules$5 = [\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 */\nlet PDFModule = class PDFModule {\n};\nPDFModule.ɵfac = function PDFModule_Factory(t) { return new (t || PDFModule)(); };\nPDFModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PDFModule });\nPDFModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\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\n/* tslint:disable object-literal-sort-keys */\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 */\nlet ExcelComponent = class 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 = function ExcelComponent_Factory(t) { return new (t || ExcelComponent)(ɵngcc0.ɵɵdirectiveInject(ExcelService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nExcelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ExcelComponent, selectors: [[\"kendo-grid-excel\"]], contentQueries: function ExcelComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ColumnBase, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columns = _t);\n } }, inputs: { fileName: \"fileName\", filterable: \"filterable\", creator: \"creator\", date: \"date\", forceProxy: \"forceProxy\", proxyURL: \"proxyURL\", fetchData: \"fetchData\", paddingCellOptions: \"paddingCellOptions\", headerPaddingCellOptions: \"headerPaddingCellOptions\", collapsible: \"collapsible\" }, decls: 0, vars: 0, template: function ExcelComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExcelComponent.prototype, \"fileName\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExcelComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExcelComponent.prototype, \"creator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], ExcelComponent.prototype, \"date\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExcelComponent.prototype, \"forceProxy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExcelComponent.prototype, \"proxyURL\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], ExcelComponent.prototype, \"fetchData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ExcelComponent.prototype, \"paddingCellOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ExcelComponent.prototype, \"headerPaddingCellOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExcelComponent.prototype, \"collapsible\", void 0);\n__decorate([\n ContentChildren(ColumnBase, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], ExcelComponent.prototype, \"columns\", void 0);\nExcelComponent = __decorate([ __metadata(\"design:paramtypes\", [ExcelService,\n LocalizationService,\n NgZone])\n], ExcelComponent);\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 */\nlet ExcelCommandDirective = class 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 = function ExcelCommandDirective_Factory(t) { return new (t || ExcelCommandDirective)(ɵngcc0.ɵɵdirectiveInject(ExcelService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nExcelCommandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ExcelCommandDirective, selectors: [[\"\", \"kendoGridExcelCommand\", \"\"]], hostVars: 2, hostBindings: function ExcelCommandDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function ExcelCommandDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-grid-excel\", ctx.excelClass);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ExcelCommandDirective.prototype, \"onClick\", null);\n__decorate([\n HostBinding('class.k-grid-excel'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ExcelCommandDirective.prototype, \"excelClass\", null);\nExcelCommandDirective = __decorate([ __metadata(\"design:paramtypes\", [ExcelService,\n ElementRef,\n Renderer2,\n LocalizationService,\n NgZone])\n], ExcelCommandDirective);\n\nconst declarations$2 = [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 */\nlet ExcelModule = class ExcelModule {\n};\nExcelModule.ɵfac = function ExcelModule_Factory(t) { return new (t || ExcelModule)(); };\nExcelModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ExcelModule });\nExcelModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [ExcelExportModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridSpacerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-spacer, kendo-pager-spacer',\n template: ``\n }]\n }], function () { return []; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DomEventsService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalDataChangesService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusRoot, [{\n type: Injectable\n }], function () { return [{ type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_ROOT_ACTIVE]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusableDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridFocusable]' + `,\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n `\n }]\n }], function () { return [{ type: Object, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }, {\n type: SkipSelf\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { enabled: [{\n type: Input,\n args: ['kendoGridFocusable']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupsService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DetailsService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollRequestService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: DomEventsService }, { type: PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }, { type: FocusableDirective, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectionService, [{\n type: Injectable\n }], function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CellSelectionService, [{\n type: Injectable\n }], function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridMarqueeDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectionMarquee]'\n }]\n }], function () { return [{ type: ɵngcc2.DraggableDirective }, { type: SelectionService }, { type: CellSelectionService }, { type: DomEventsService }]; }, { webkitUserSelection: [{\n type: HostBinding,\n args: ['style.-webkit-user-select']\n }], userSelection: [{\n type: HostBinding,\n args: ['class.user-select-none']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupHeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupHeaderTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupHeaderColumnTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupHeaderColumnTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridEditTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupFooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupFooterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridHeaderTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridFooterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnMenuTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterCellTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridFilterCellTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterMenuTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridFilterMenuTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => ColumnComponent_1)\n }\n ],\n selector: 'kendo-grid-column',\n template: ``\n }]\n }], function () { return [{ type: ColumnBase$1, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\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 }], field: [{\n type: Input\n }], format: [{\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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SpanColumnComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => SpanColumnComponent_1)\n }\n ],\n selector: 'kendo-grid-span-column',\n template: ``\n }]\n }], function () { return [{ type: ColumnBase$1, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnGroupComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => ColumnGroupComponent_1)\n }\n ],\n selector: 'kendo-grid-column-group',\n template: ``\n }]\n }], function () { return [{ type: ColumnBase$1, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; }, { children: [{\n type: ContentChildren,\n args: [ColumnBase$1]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DetailTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridDetailTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, { showIf: [{\n type: Input,\n args: [\"kendoGridDetailTemplateShowIf\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BrowserSupportService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChangeNotificationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NoRecordsTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridNoRecordsTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MenuTabbingService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoPagerTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SuspendService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResponsiveService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExcelService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolbarTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridToolbarTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, { position: [{\n type: Input,\n args: [\"position\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollSyncService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnResizingService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SinglePopupService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc3.PopupService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ScrollSyncService }, { type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragAndDropService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragHintService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc4.DomSanitizer }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropCueService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnReorderService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IdService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnInfoService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CellLoadingTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridCellLoadingTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridComponent, [{\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: ɵ5$1\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 ],\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
    \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 }], function () { return [{ type: BrowserSupportService }, { type: SelectionService }, { type: CellSelectionService }, { type: ɵngcc0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: ɵngcc0.Renderer2 }, { type: ExcelService }, { type: ɵngcc0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: ɵngcc1.LocalizationService }]; }, { data: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], trackBy: [{\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 }], autoSize: [{\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$1]\n }], footer: [{\n type: ViewChildren,\n args: ['footer']\n }], skip: [{\n type: Input\n }], sort: [{\n type: Input\n }], group: [{\n type: Input\n }], navigatable: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }], rowSelected: [{\n type: Input\n }], cellSelected: [{\n type: Input\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\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 }], isDetailExpanded: [{\n type: Input\n }], isGroupExpanded: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], height: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], filter: [{\n type: Input\n }], detailTemplateChildren: [{\n type: ContentChildren,\n args: [DetailTemplateDirective]\n }], loadingTemplateChildren: [{\n type: ContentChildren,\n args: [CellLoadingTemplateDirective]\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 }], ariaRoot: [{\n type: ViewChild,\n args: ['ariaRoot', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListComponent, [{\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
    \n
    \n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [SCROLLER_FACTORY_TOKEN]\n }] }, { type: DetailsService }, { type: ChangeNotificationService }, { type: SuspendService }, { type: GroupsService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ScrollSyncService }, { type: ResizeService }, { type: EditService }, { type: BrowserSupportService }, { type: NavigationService }, { type: ScrollRequestService }, { type: ɵngcc1.LocalizationService }, { type: ColumnResizingService }, { type: ɵngcc0.ChangeDetectorRef }, { type: PDFService }, { type: ColumnInfoService }]; }, { groups: [{\n type: Input\n }], skip: [{\n type: Input\n }], columns: [{\n type: Input\n }], selectable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], contentScroll: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], scrollBottom: [{\n type: Output\n }], resizeSensors: [{\n type: ViewChildren,\n args: [ResizeSensorComponent]\n }], 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 }], 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 }], detailTemplate: [{\n type: Input\n }], noRecordsTemplate: [{\n type: Input\n }], filterable: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }], loading: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DataBindingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridBinding]'\n }]\n }], function () { return [{ type: GridComponent }, { type: ɵngcc0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectionDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectBy]'\n }]\n }], function () { return [{ type: GridComponent }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandDetailsDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridExpandDetailsBy]',\n exportAs: 'kendoGridExpandDetailsBy'\n }]\n }], function () { return [{ type: GridComponent }]; }, { expandedDetailKeysChange: [{\n type: Output\n }], expandedDetailKeys: [{\n type: Input\n }], initiallyExpanded: [{\n type: Input\n }], expandDetailsKey: [{\n type: Input,\n args: ['kendoGridExpandDetailsBy']\n }], expandDetailBy: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandGroupDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridExpandGroupBy]',\n exportAs: 'kendoGridExpandGroupBy'\n }]\n }], function () { return [{ type: GridComponent }]; }, { expandedGroupKeysChange: [{\n type: Output\n }], groupsInitiallyExpanded: [{\n type: Input\n }], expandGroupBy: [{\n type: Input,\n args: ['kendoGridExpandGroupBy']\n }], expandedGroupKeys: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: '[kendoGridLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-grid-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterRowComponent, [{\n type: Component,\n args: [{\n selector: '[kendoGridFilterRow]',\n template: `\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ColumnInfoService }]; }, { columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], filterRowClass: [{\n type: HostBinding,\n args: ['class.k-filter-row']\n }], filter: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterCellComponent, [{\n type: Component,\n args: [{\n selector: '[kendoGridFilterCell]',\n template: `\n \n \n \n \n \n \n \n \n \n \n
    \n `\n }]\n }], function () { return []; }, { filter: [{\n type: Input\n }], column: [{\n type: Input\n }] }); })();\n\n\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericFilterCellComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-cell',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: FilterService }, { type: ɵngcc1.LocalizationService }]; }, { filterDelay: [{\n type: Input\n }], showOperators: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterInputDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoFilterInput]'\n }]\n }], function () { return [{ type: Array, decorators: [{\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { filterDelay: [{\n type: Input\n }], value: [{\n type: Input\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }], columnLabel: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterCellWrapperComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-wrapper-cell',\n template: `\n \n \n \n `\n }]\n }], function () { return [{ type: FilterService }]; }, { showOperators: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell-wrapper']\n }], overrideBaseClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StringFilterCellComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-cell',\n template: `\n \n \n \n `\n }]\n }], function () { return [{ type: FilterService }, { type: ɵngcc1.LocalizationService }]; }, { filterDelay: [{\n type: Input\n }], showOperators: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterCellOperatorsComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-cell-operators',\n template: `\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { operators: [{\n type: Input\n }], showOperators: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], clear: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell-operator']\n }], dropdown: [{\n type: ViewChild,\n args: ['dropdown', { static: false }]\n }], showButton: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AutoCompleteFilterCellComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-autocomplete-filter-cell',\n template: `\n \n \n \n \n `\n }]\n }], function () { return [{ type: FilterService }, { type: ColumnComponent }, { type: ɵngcc1.LocalizationService }]; }, { showOperators: [{\n type: Input\n }], column: [{\n type: Input\n }], valueField: [{\n type: Input\n }], filter: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BooleanFilterCellComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-boolean-filter-cell',\n template: `\n \n \n \n \n `\n }]\n }], function () { return [{ type: FilterService }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateFilterCellComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-cell',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: FilterService }, { type: ɵngcc1.LocalizationService }]; }, { showOperators: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColGroupComponent, [{\n type: Component,\n args: [{\n selector: '[kendoGridColGroup]',\n template: `\n \n \n \n \n \n `\n }]\n }], function () { return []; }, { columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadingComponent, [{\n type: Component,\n args: [{\n selector: '[kendoGridLoading]',\n template: `\n {{ loadingText }}\n
    \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-loading-mask']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableContainerDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridResizableContainer]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ResizeService }, { type: GridComponent, decorators: [{\n type: Optional\n }] }]; }, { lockedWidth: [{\n type: Input,\n args: ['lockedWidth']\n }], kendoGridResizableContainer: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplateContextDirective, [{\n type: Directive,\n args: [{\n selector: '[templateContext]' // tslint:disable-line:directive-selector\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { templateContext: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusGroup, [{\n type: Injectable\n }], function () { return [{ type: FocusRoot }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LogicalCellDirective, [{\n type: Directive,\n args: [{\n providers: [{\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }],\n selector: '[kendoGridLogicalCell]'\n }]\n }], function () { return [{ type: FocusGroup }, { type: ɵngcc0.ElementRef }, { type: ColumnInfoService }, { type: IdService }, { type: NavigationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: Object, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }]; }, { logicalSlaveCell: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], dataRowIndex: [{\n type: Input\n }], detailExpandCell: [{\n type: Input\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], ariaColIndex: [{\n type: HostBinding,\n args: ['attr.aria-colindex']\n }], logicalColIndex: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], colIndex: [{\n type: Input\n }], groupItem: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], headerLabelText: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LogicalRowDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridLogicalRow]'\n }]\n }], function () { return [{ type: IdService }, { type: NavigationService }]; }, { logicalSlaveRow: [{\n type: Input\n }], logicalSlaveCellsCount: [{\n type: Input\n }], dataRowIndex: [{\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 }], logicalRowIndex: [{\n type: Input\n }], logicalCellsCount: [{\n type: Input\n }], dataItem: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FieldAccessorPipe, [{\n type: Pipe,\n args: [{\n name: 'valueOf',\n pure: false\n }]\n }], function () { return [{ type: ɵngcc10.IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TableDirective, [{\n type: Directive,\n args: [{\n selector: 'table' // tslint:disable-line:directive-selector\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ColumnResizingService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, { locked: [{\n type: Input\n }], minWidth: [{\n type: HostBinding,\n args: ['style.min-width']\n }], virtualColumns: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n declarations: [exportedModules],\n exports: [exportedModules, DraggableModule, EventsModule],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: function () { return [ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, TableDirective, LoadingComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, TableDirective, LoadingComponent, DraggableModule, EventsModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContainsFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => ContainsFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-contains-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DoesNotContainFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => DoesNotContainFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-not-contains-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EndsWithFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EndsWithFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-endswith-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EqualFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EqualFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-eq-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IsEmptyFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsEmptyFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-isempty-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IsNotEmptyFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotEmptyFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-isnotempty-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IsNotNullFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotNullFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-isnotnull-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IsNullFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNullFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-isnull-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NotEqualFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => NotEqualFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-neq-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StartsWithFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => StartsWithFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-startswith-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GreaterFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-gt-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GreaterOrEqualToFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterOrEqualToFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-gte-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LessFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-lt-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LessOrEqualToFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessOrEqualToFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-lte-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AfterFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-after-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AfterEqFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterEqFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-after-eq-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BeforeEqFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeEqFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-before-eq-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BeforeFilterOperatorComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeFilterOperatorComponent_1)\n }\n ],\n selector: 'kendo-filter-before-operator',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedFilterModule, [{\n type: NgModule,\n args: [{\n declarations: [FILTER_OPERATORS, COMPONENTS],\n exports: [FILTER_OPERATORS, importedModules, COMPONENTS],\n imports: [...importedModules]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedFilterModule, { declarations: [FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective], imports: [CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule, SharedModule], exports: [FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule, SharedModule, FilterInputDirective] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterCellHostDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoFilterCellHost]'\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ComponentFactoryResolver }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RowFilterModule, [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS],\n entryComponents: ENTRY_COMPONENTS,\n exports: [INTERNAL_COMPONENTS, SharedFilterModule],\n imports: [SharedFilterModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(RowFilterModule, { declarations: [FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent], imports: [SharedFilterModule], exports: [FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, SharedFilterModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerInputDirective, [{\n type: Directive,\n args: [{ selector: '[kendoGridPagerInput]' }]\n }], function () { return [{ type: ɵngcc6.NumericTextBoxComponent }, { type: ɵngcc0.Renderer2 }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerDropDownListDirective, [{\n type: Directive,\n args: [{ selector: '[kendoGridPagerDropDown]' }]\n }], function () { return [{ type: ɵngcc8.DropDownListComponent }, { type: ɵngcc0.Renderer2 }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerComponent, [{\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 }], function () { return [{ type: PagerContextService }, { type: NavigationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ɵngcc1.LocalizationService }, { type: Object, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: FocusRoot }, { type: FocusGroup }]; }, { total: [{\n type: Input\n }], skip: [{\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 }], widgetClass: [{\n type: HostBinding,\n args: ['class.k-widget']\n }], options: [{\n type: Input\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 }], pageSize: [{\n type: Input\n }], template: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerPrevButtonsComponent, [{\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: PagerContextService }, { type: ɵngcc0.ChangeDetectorRef }, { type: NavigationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerNextButtonsComponent, [{\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: PagerContextService }, { type: ɵngcc0.ChangeDetectorRef }, { type: NavigationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerNumericButtonsComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-numeric-buttons',\n template: `\n \n \n \n \n \n
      \n
    • 1\">\n ...\n
    • \n
    • \n \n {{num}}\n \n
    • \n
    • \n ...\n
    • \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: PagerContextService }]; }, { numbersWrapClass: [{\n type: HostBinding,\n args: ['class.k-pager-numbers-wrap']\n }], buttonCount: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerInputComponent, [{\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: PagerContextService }, { type: ɵngcc0.NgZone }, { type: NavigationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { numericInput: [{\n type: ViewChild,\n args: [NumericTextBoxComponent, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerInfoComponent, [{\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: PagerContextService }]; }, { classes: [{\n type: HostBinding,\n args: [\"class.k-pager-info\"]\n }, {\n type: HostBinding,\n args: [\"class.k-label\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerPageSizesComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-page-sizes',\n template: `\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: PagerContextService }, { type: NavigationService }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PagerModule, [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS$1],\n exports: [INTERNAL_COMPONENTS$1],\n imports: [...importedModules$1]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PagerModule, { declarations: [PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective], imports: [CommonModule,\n InputsModule,\n LabelModule,\n DropDownsModule,\n ResizeSensorModule, SharedModule], exports: [PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupHeaderComponent, [{\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 }], function () { return [{ type: GroupsService }, { type: GroupInfoService }]; }, { skipGroupDecoration: [{\n type: Input\n }], hasDetails: [{\n type: Input\n }], totalColumnsCount: [{\n type: Input\n }], groups: [{\n type: Input\n }], groupItemClass: [{\n type: HostBinding,\n args: ['class.k-grouping-row']\n }], rowIndex: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], item: [{\n type: Input\n }], hasGroupHeaderColumn: [{\n type: Input\n }], groupHeaderColumns: [{\n type: Input\n }], columns: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropTargetDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDropTarget]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: DragAndDropService }]; }, { context: [{\n type: Input\n }], enter: [{\n type: Output\n }], leave: [{\n type: Output\n }], drop: [{\n type: Output\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupPanelComponent, [{\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 }], function () { return [{ type: DragHintService }, { type: DropCueService }, { type: GroupInfoService }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { change: [{\n type: Output\n }], groups: [{\n type: Input\n }], dropTargets: [{\n type: ViewChildren,\n args: [DropTargetDirective]\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupIndicatorComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[kendoGroupIndicator]',\n template: `\n \n \n {{groupTitle}}\n \n \n \n `\n }]\n }], function () { return []; }, { directionChange: [{\n type: Output\n }], remove: [{\n type: Output\n }], groupIndicatorClass: [{\n type: HostBinding,\n args: [\"class.k-group-indicator\"]\n }], group: [{\n type: Input\n }], groupTitle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableColumnDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDraggableColumn]'\n }]\n }], function () { return [{ type: ɵngcc2.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: DragAndDropService }, { type: DragHintService }, { type: DropCueService }, { type: NavigationService }, { type: ɵngcc0.Renderer2 }]; }, { context: [{\n type: Input\n }], drag: [{\n type: Output\n }], enableDrag: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-grid-draggable-header']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragAndDropModule, [{\n type: NgModule,\n args: [{\n declarations: [exported],\n exports: [exported]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DragAndDropModule, { declarations: [DraggableColumnDirective, DropTargetDirective], exports: [DraggableColumnDirective, DropTargetDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupModule, [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$1],\n exports: [exportedModules$1],\n imports: [CommonModule, SharedModule, DragAndDropModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(GroupModule, { declarations: function () { return [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, GroupIndicatorComponent]; }, imports: function () { return [CommonModule, SharedModule, DragAndDropModule]; }, exports: function () { return [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, GroupIndicatorComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterMenuComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-menu',\n template: `\n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: FilterService }, { type: SinglePopupService }, { type: ɵngcc1.LocalizationService }, { type: NavigationService }]; }, { tabIndex: [{\n type: Input\n }], 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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuService, [{\n type: Injectable\n }], function () { return [{ type: MenuTabbingService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuComponent, [{\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 }], function () { return [{ type: SinglePopupService }, { type: ɵngcc1.LocalizationService }, { type: ColumnMenuService }, { type: NavigationService }]; }, { standalone: [{\n type: HostBinding,\n args: ['class.k-grid-column-menu-standalone']\n }, {\n type: Input\n }], settings: [{\n type: Input\n }], sortable: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], column: [{\n type: Input\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], columnMenuTemplate: [{\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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeaderComponent, [{\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(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 }], function () { return [{ type: SinglePopupService }, { type: DragHintService }, { type: DropCueService }, { type: ColumnReorderService }, { type: IdService }, { type: SortService }, { type: ɵngcc1.LocalizationService }, { type: ColumnInfoService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], sort: [{\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 }], totalColumnsCount: [{\n type: Input\n }], dropTargets: [{\n type: ViewChildren,\n args: [DropTargetDirective]\n }], headerClass: [{\n type: HostBinding,\n args: ['class.k-grid-header']\n }], totalColumnLevels: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], columnMenuTemplate: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], filterMenus: [{\n type: ViewChildren,\n args: [FilterMenuComponent]\n }], columnMenus: [{\n type: ViewChildren,\n args: [ColumnMenuComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnHandle]'\n }]\n }], function () { return [{ type: ɵngcc2.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: ɵngcc0.ElementRef }, { type: ColumnResizingService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }]; }, { columns: [{\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 }], column: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectAllCheckboxDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectAllCheckbox]'\n }]\n }], function () { return [{ type: SelectionService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { selectAllChange: [{\n type: Output\n }], type: [{\n type: HostBinding,\n args: ['attr.type']\n }], state: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterMenuContainerComponent, [{\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 }], function () { return [{ type: FilterService, decorators: [{\n type: SkipSelf\n }] }, { type: FilterService }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: MenuTabbingService }]; }, { close: [{\n type: Output\n }], actionsClass: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], filter: [{\n type: Input\n }], column: [{\n type: Input\n }], isLast: [{\n type: Input\n }], isExpanded: [{\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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterMenuInputWrapperComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-menu-input-wrapper',\n template: `\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { currentFilter: [{\n type: Input\n }], 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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StringFilterMenuInputComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-menu-input',\n template: `\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StringFilterMenuComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericFilterMenuComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericFilterMenuInputComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-menu-input',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { operators: [{\n type: Input\n }], step: [{\n type: Input\n }], spinners: [{\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 }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], decimals: [{\n type: Input\n }], format: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateFilterMenuComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BooleanFilterRadioButtonDirective, [{\n type: Directive,\n args: [{ selector: '[kendoFilterMenuRadioButton]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { columnLabel: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BooleanFilterMenuComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-boolean-filter-menu',\n template: `\n
      \n
    • \n \n \n
    • \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { filter: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], radioButtons: [{\n type: ViewChildren,\n args: [BooleanFilterRadioButtonDirective]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterMenuHostDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoFilterMenuHost]'\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ComponentFactoryResolver }]; }, { filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DateFilterMenuInputComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-menu-input',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: SinglePopupService }, { type: ɵngcc1.LocalizationService }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterMenuDropDownListDirective, [{\n type: Directive,\n args: [{ selector: '[kendoFilterMenuDropDown]' }]\n }], function () { return [{ type: ɵngcc8.DropDownListComponent }]; }, { filterMenuDropDownLabel: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FilterMenuModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FilterMenuModule, { declarations: [FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective], imports: [SharedFilterModule], exports: [FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, SharedFilterModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnListComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnlist',\n template: `\n
    \n \n
    \n
    \n \n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { reset: [{\n type: Output\n }], apply: [{\n type: Output\n }], columnChange: [{\n type: Output\n }], autoSync: [{\n type: Input\n }], allowHideAll: [{\n type: Input\n }], actionsClass: [{\n type: Input\n }], className: [{\n type: HostBinding,\n args: [\"class.k-column-list-wrapper\"]\n }], columns: [{\n type: Input\n }], applyText: [{\n type: Input\n }], resetText: [{\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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnChooserComponent, [{\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ColumnInfoService }, { type: ɵngcc3.PopupService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { autoSync: [{\n type: Input\n }], allowHideAll: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuChooserComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-chooser',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ColumnInfoService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], isLast: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuFilterComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-filter',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ElementRef }]; }, { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], isLast: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuItemContentTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnMenuItemContentTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuItemComponent, [{\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 }], function () { return []; }, { itemClick: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], icon: [{\n type: Input\n }], text: [{\n type: Input\n }], selected: [{\n type: Input\n }], disabled: [{\n type: Input\n }], contentTemplate: [{\n type: ContentChild,\n args: [ColumnMenuItemContentTemplateDirective, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuSortComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-sort',\n template: `\n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: SortService }, { type: ɵngcc0.Renderer2 }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuLockComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-lock',\n template: `\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ColumnInfoService }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuPositionComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-position',\n template: `\n \n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ElementRef }]; }, { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], isLast: [{\n type: Input\n }], showLock: [{\n type: Input\n }], showStick: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuItemDirective, [{\n type: Directive,\n args: [{ selector: '[kendoGridColumnMenuItem]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { menuItemComponent: [{\n type: Input,\n args: ['kendoGridColumnMenuItem']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuContainerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-container',\n template: `\n \n `\n }]\n }], function () { return [{ type: ColumnMenuService }, { type: ɵngcc0.NgZone }]; }, { columnMenuItems: [{\n type: ContentChildren,\n args: [ColumnMenuItemDirective, { descendants: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuStickComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-stick',\n template: `\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ColumnInfoService }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColumnMenuModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENTS$1],\n imports: [CommonModule, FilterMenuModule],\n exports: [COMPONENTS$1]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ColumnMenuModule, { declarations: function () { return [ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent]; }, imports: function () { return [CommonModule, FilterMenuModule]; }, exports: function () { return [ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeaderModule, [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$2],\n exports: [exportedModules$2],\n imports: [...importedModules$2]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(HeaderModule, { declarations: [HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective], imports: [CommonModule, GroupModule, RowFilterModule, FilterMenuModule, SharedModule, DragAndDropModule, ColumnMenuModule], exports: [HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CommandColumnComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => CommandColumnComponent_1)\n }\n ],\n selector: 'kendo-grid-command-column',\n template: ``\n }]\n }], function () { return [{ type: ColumnBase$1, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; }, { template: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckboxColumnComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase$1,\n useExisting: forwardRef(() => CheckboxColumnComponent_1)\n }\n ],\n selector: 'kendo-grid-checkbox-column',\n template: ``\n }]\n }], function () { return [{ type: ColumnBase$1, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; }, { showSelectAll: [{\n type: Input\n }], template: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectionCheckboxDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectionCheckbox]'\n }]\n }], function () { return [{ type: SelectionService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { type: [{\n type: HostBinding,\n args: ['attr.type']\n }], itemIndex: [{\n type: Input,\n args: [\"kendoGridSelectionCheckbox\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TableBodyComponent, [{\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 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: item.index }) : false\"\n [ngClass]=\"rowClass({ dataItem: item.data, index: item.index })\"\n [class.k-alt]=\"isOdd(item)\"\n [class.k-master-row]=\"detailTemplate?.templateRef\"\n [class.k-grid-edit-row]=\"isEditingRow(item.index)\"\n [attr.data-kendo-grid-item-index]=\"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 }], function () { return [{ type: DetailsService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: EditService }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: DomEventsService }, { type: SelectionService }, { type: CellSelectionService }, { type: ColumnInfoService }, { type: NavigationService }]; }, { columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], skip: [{\n type: Input\n }], noRecordsText: [{\n type: Input\n }], isLocked: [{\n type: Input\n }], skipGroupDecoration: [{\n type: Input\n }], showGroupFooters: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], totalColumnsCount: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], allColumns: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], noRecordsTemplate: [{\n type: Input\n }], data: [{\n type: Input\n }], selectable: [{\n type: Input\n }], filterable: [{\n type: Input\n }], isLoading: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CellComponent, [{\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 }], function () { return [{ type: EditService }, { type: IdService }, { type: ɵngcc1.LocalizationService }, { type: Object, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }]; }, { isNew: [{\n type: Input\n }], isLoading: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], commandCellClass: [{\n type: HostBinding,\n args: ['class.k-command-cell']\n }], rowIndex: [{\n type: Input\n }], column: [{\n type: Input\n }], columnIndex: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\n }], dataItem: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EditCommandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridEditCommand]'\n }]\n }], function () { return [{ type: EditService }, { type: Object, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-edit-command']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CancelCommandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridCancelCommand]'\n }]\n }], function () { return [{ type: EditService }, { type: Object, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-cancel-command']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SaveCommandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridSaveCommand]'\n }]\n }], function () { return [{ type: EditService }, { type: Object, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-save-command']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RemoveCommandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridRemoveCommand]'\n }]\n }], function () { return [{ type: EditService }, { type: Object, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-remove-command']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AddCommandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridAddCommand]'\n }]\n }], function () { return [{ type: EditService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-add-command']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BodyModule, [{\n type: NgModule,\n args: [{\n declarations: [exported$1],\n exports: [exported$1],\n imports: [...importedModules$3]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BodyModule, { declarations: [CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective], imports: [CommonModule,\n ReactiveFormsModule,\n FormsModule, SharedModule, GroupModule, NumericTextBoxModule,\n DatePickerModule,\n ResizeSensorModule], exports: [CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FooterComponent, [{\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 }], function () { return [{ type: ColumnInfoService }]; }, { columns: [{\n type: Input\n }], groups: [{\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 }], detailTemplate: [{\n type: Input\n }], scrollable: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FooterModule, [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$3],\n exports: [exportedModules$3],\n imports: [...importedModules$4]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FooterModule, { declarations: [FooterComponent], imports: [CommonModule, SharedModule], exports: [FooterComponent] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolbarComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-toolbar',\n template: `\n \n \n `\n }]\n }], function () { return [{ type: GridComponent }]; }, { position: [{\n type: Input\n }] }); })();\n\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplateEditingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridTemplateEditing]'\n }]\n }], function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, { createNewItem: [{\n type: Input,\n args: ['kendoGridTemplateEditing']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ReactiveEditingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridReactiveEditing]'\n }]\n }], function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, { createFormGroup: [{\n type: Input,\n args: ['kendoGridReactiveEditing']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InCellEditingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridInCellEditing]'\n }]\n }], function () { return [{ type: GridComponent }, { type: LocalDataChangesService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { createFormGroup: [{\n type: Input,\n args: ['kendoGridInCellEditing']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GroupBindingDirective, [{\n type: Directive,\n args: [{ selector: '[kendoGridGroupBinding]' }]\n }], function () { return [{ type: GridComponent }, { type: ɵngcc0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, { kendoGridGroupBinding: [{\n type: Input,\n args: [\"kendoGridGroupBinding\"]\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], group: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules$4],\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(GridModule, { declarations: function () { return [GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GroupBindingDirective, GridMarqueeDirective, GridSpacerComponent]; }, imports: function () { return [CommonModule, GroupModule, SharedModule, BodyModule, HeaderModule, FooterModule, PagerModule, RowFilterModule, FilterMenuModule, ResizeSensorModule, ColumnMenuModule]; }, exports: function () { return [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, DataBindingDirective, SelectionDirective, CustomMessagesComponent, GroupBindingDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, 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]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFMarginComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-pdf-margin',\n template: ''\n }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridPDFTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-pdf',\n template: ''\n }]\n }], function () { return [{ type: PDFService }, { type: SuspendService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }]; }, { delay: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase$1]\n }], allPages: [{\n type: Input\n }], marginComponent: [{\n type: ContentChild,\n args: [PDFMarginComponent, { static: false }]\n }], pageTemplateDirective: [{\n type: ContentChild,\n args: [PDFTemplateDirective, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFCommandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridPDFCommand]'\n }]\n }], function () { return [{ type: PDFService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], pdfClass: [{\n type: HostBinding,\n args: ['class.k-grid-pdf']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$5]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PDFModule, { declarations: [PDFComponent, PDFMarginComponent, PDFCommandDirective, PDFTemplateDirective], exports: [PDFComponent, PDFMarginComponent, PDFCommandDirective, PDFTemplateDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExcelComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-grid-excel',\n template: ``\n }]\n }], function () { return [{ type: ExcelService }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { fileName: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase, { descendants: true }]\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExcelCommandDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoGridExcelCommand]'\n }]\n }], function () { return [{ type: ExcelService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], excelClass: [{\n type: HostBinding,\n args: ['class.k-grid-excel']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExcelModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$2],\n exports: [declarations$2, ExcelExportModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ExcelModule, { declarations: function () { return [ExcelComponent, ExcelCommandDirective]; }, exports: function () { return [ExcelComponent, ExcelCommandDirective, ExcelExportModule]; } }); })();\n\n\n\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ColumnChooserComponent, ColumnListComponent, ColumnMenuChooserComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemBase, ColumnMenuItemContentTemplateDirective, ColumnMenuItemComponent, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnMenuModule, ColumnMenuService, ColumnHandleDirective, ColumnResizingService, TableDirective, ColumnInfoService, DomEventsService, IdService, PreventableEvent, SortService, ChangeNotificationService, ColumnReorderService, DragAndDropModule, DragAndDropService, DragHintService, DraggableColumnDirective, DropCueService, DropTargetDirective, EditingDirectiveBase, RowEditingDirectiveBase, AddCommandDirective, CancelCommandDirective, EditCommandDirective, EditService as EditService$1, LocalDataChangesService, RemoveCommandDirective, SaveCommandDirective, ExcelCommandDirective, BooleanFilterComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellWrapperComponent, DateFilterComponent, FilterHostDirective, FilterInputWrapperComponent, FilterInputDirective, FilterRowComponent, DateFilterMenuInputComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuComponent, BooleanFilterRadioButtonDirective, MenuTabbingService, NumericFilterMenuInputComponent, StringFilterMenuInputComponent, NumericFilterComponent, FilterOperatorBase, SharedFilterModule, StringFilterComponent, GroupHeaderComponent, GroupIndicatorComponent, GroupInfoService, GroupPanelComponent, GroupsService, BrowserSupportService, ResizeService, ResponsiveService, LocalizedMessagesDirective, Messages, FocusGroup, FOCUS_ROOT_ACTIVE, FocusRoot, LogicalCellDirective, LogicalRowDirective, NavigationService, PagerContextService, PagerDropDownListDirective, PagerElementComponent, PagerInputDirective, PDFCommandDirective, PDFTemplateDirective, CellComponent, CELL_CONTEXT, EMPTY_CELL_CONTEXT, FieldAccessorPipe, DetailsService, DEFAULT_SCROLLER_FACTORY, SCROLLER_FACTORY_TOKEN, ScrollRequestService, ScrollSyncService, ScrollerService, CellSelectionService, GridMarqueeDirective, SelectAllCheckboxDirective, SelectionCheckboxDirective, Selection, SelectionService, GridModule, SharedModule, GridComponent, ColumnBase$1 as ColumnBase, ColumnComponent, CommandColumnComponent, SpanColumnComponent, ColumnGroupComponent, CheckboxColumnComponent, ToolbarComponent, ToolbarTemplateDirective, CellTemplateDirective, CellLoadingTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, PagerTemplateDirective, GridSpacerComponent, ExpandDetailsDirective, ExpandGroupDirective, DetailTemplateDirective, DetailExpandEvent, DetailCollapseEvent, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ResizableContainerDirective, TemplateContextDirective, NoRecordsTemplateDirective, DataBindingDirective, SelectionDirective, FilterService, FilterCellTemplateDirective, FilterCellComponent, StringFilterCellComponent, DateFilterCellComponent, BaseFilterCellComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, StringFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, RowFilterModule, FilterMenuModule, BodyModule, GroupModule, HeaderModule, FooterModule, PagerModule, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, EditTemplateDirective, ColGroupComponent, HeaderComponent, ListComponent, FooterComponent, TableBodyComponent, PagerComponent, CustomMessagesComponent, LoadingComponent, PDFModule, PDFComponent, PDFMarginComponent, PDFService, ExcelModule, ExcelComponent, ExcelService, ExcelExportEvent, CellCloseEvent, SuspendService, GroupBindingDirective, slice, count, Skip, ColumnReorderEvent, FocusableDirective, ColumnVisibilityChangeEvent, ColumnMenuComponent, ColumnLockedChangeEvent, ColumnStickyChangeEvent, SinglePopupService, PopupCloseEvent };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata } from 'tslib';\nimport { HostBinding, Input, Component, ElementRef, Renderer2, isDevMode, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { isDocumentAvailable } from '@progress/kendo-angular-common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/platform-browser';\nimport * as ɵngcc2 from '@angular/common';\n\nfunction SVGIconComponent__svg_svg_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"svg\", 1);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r0.content, ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵattribute(\"viewBox\", ctx_r0.icon.viewBox);\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-icons',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635940307,\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 sizeClasses = {\n 'default': 'k-icon',\n 'xsmall': 'k-icon-xs',\n 'small': 'k-icon-sm',\n 'medium': 'k-icon-md',\n 'large': 'k-icon-lg',\n 'xlarge': 'k-icon-xl'\n};\n/**\n * @hidden\n */\nclass IconBase {\n constructor(element, renderer) {\n this.element = element;\n this.renderer = renderer;\n validatePackage(packageMetadata);\n }\n get horizontalFlip() {\n return this.flip === 'horizontal' || this.flip === 'both';\n }\n get verticalFlip() {\n return this.flip === 'vertical' || this.flip === 'both';\n }\n /**\n * Specifies the theme color for the Icon.\n *\n * The possible values are:\n * * `inherit` (Default)—Applies coloring based on the current color.\n * * `primary` —Applies coloring based on primary theme color.\n * * `secondary`—Applies coloring based on secondary theme color.\n * * `tertiary`— Applies coloring based on tertiary theme color.\n * * `info`—Applies coloring based on info theme color.\n * * `success`— Applies coloring based on success theme color.\n * * `warning`— Applies coloring based on warning theme color.\n * * `error`— Applies coloring based on error theme color.\n * * `dark`— Applies coloring based on dark theme color.\n * * `light`— Applies coloring based on light theme color.\n * * `inverse`— Applies coloring based on inverse theme color.\n *\n */\n set themeColor(themeColor) {\n const element = this.element.nativeElement;\n this._themeColor = themeColor;\n this.renderer.removeClass(element, `k-color-${themeColor}`);\n if (themeColor) {\n this.renderer.addClass(element, `k-color-${themeColor}`);\n }\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * Specifies the size of the Icon.\n *\n * The possible values are:\n * * `default` (Default) (Font-size: 16px; Width: 16px; Height: 16px)\n * * `xsmall` (Font-size: 8px; Width: 8px; Height: 8px;)\n * * `small` (Font-size: 12px; Width: 12px; Height: 12px;)\n * * `medium` (Font-size: 32px; Width: 32px; Height: 32px;)\n * * `large` (Font-size: 48px; Width: 48px; Height: 48px;)\n * * `xlarge` (Font-size: 64px; Width: 64px; Height: 64px;)\n *\n */\n set size(size) {\n const element = this.element.nativeElement;\n this._size = size;\n const sizeClass = sizeClasses[this.size];\n this.renderer.removeClass(element, sizeClass);\n if (size !== 'default') {\n this.renderer.addClass(element, sizeClass);\n }\n }\n get size() {\n return this._size;\n }\n}\nIconBase.ɵfac = function IconBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nIconBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: IconBase, hostVars: 4, hostBindings: function IconBase_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-flip-h\", ctx.horizontalFlip)(\"k-flip-v\", ctx.verticalFlip);\n } }, inputs: { themeColor: \"themeColor\", size: \"size\", flip: \"flip\" } });\n__decorate([\n HostBinding('class.k-flip-h'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], IconBase.prototype, \"horizontalFlip\", null);\n__decorate([\n HostBinding('class.k-flip-v'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], IconBase.prototype, \"verticalFlip\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], IconBase.prototype, \"flip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], IconBase.prototype, \"themeColor\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], IconBase.prototype, \"size\", null);\n\n/**\n * Represents the Kendo UI Icon component for Angular.\n */\nlet IconComponent = class IconComponent extends IconBase {\n constructor(element, renderer) {\n super(element, renderer);\n this.element = element;\n this.renderer = renderer;\n this.hostClass = true;\n }\n /**\n * Defines the name for an existing icon in a Kendo UI theme, which will be rendered.\n * All [Kendo UI Icons]({% slug icons %}#toc-list-of-font-icons) are supported.\n */\n set name(name) {\n const element = this.element.nativeElement;\n this.renderer.removeClass(element, `k-i-${this.name}`);\n this._name = name;\n if (name) {\n this.renderer.addClass(element, `k-i-${this.name}`);\n }\n }\n get name() {\n return this._name;\n }\n};\nIconComponent.ɵfac = function IconComponent_Factory(t) { return new (t || IconComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: IconComponent, selectors: [[\"kendo-icon\"]], hostVars: 2, hostBindings: function IconComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-icon\", ctx.hostClass);\n } }, inputs: { name: \"name\" }, exportAs: [\"kendoIcon\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function IconComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-icon'),\n __metadata(\"design:type\", Boolean)\n], IconComponent.prototype, \"hostClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], IconComponent.prototype, \"name\", null);\nIconComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, Renderer2])\n], IconComponent);\n\n/**\n * Represents the Kendo UI SVG Icon component for Angular.\n */\nlet SVGIconComponent = class SVGIconComponent extends IconBase {\n constructor(domSanitizer, element, renderer) {\n super(element, renderer);\n this.domSanitizer = domSanitizer;\n this.element = element;\n this.renderer = renderer;\n this.hostClass = true;\n }\n /**\n * Defines the SVG icon, which will be rendered.\n */\n set icon(icon) {\n const element = this.element.nativeElement;\n if (this._icon && this._icon.name) {\n this.renderer.removeClass(element, `k-svg-i-${this._icon.name}`);\n }\n this._icon = icon;\n this.renderer.addClass(element, `k-svg-i-${this._icon.name}`);\n }\n get icon() {\n return this._icon;\n }\n get content() {\n this.safeContent = this.safeContent || this.domSanitizer.bypassSecurityTrustHtml(this.icon.content);\n return this.safeContent;\n }\n get visible() {\n return this.icon && isDocumentAvailable();\n }\n ngOnInit() {\n this.verifyIconProperty();\n }\n verifyIconProperty() {\n if (!isDevMode()) {\n return;\n }\n if (!this._icon) {\n throw new Error(`\n Invalid configuration.\n The input [icon] is required for the Kendo UI SVG Icon component for Angular.\n See https://www.telerik.com/kendo-angular-ui/components/icons/svg-icon\n `);\n }\n }\n};\nSVGIconComponent.ɵfac = function SVGIconComponent_Factory(t) { return new (t || SVGIconComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DomSanitizer), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nSVGIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SVGIconComponent, selectors: [[\"kendo-svg-icon\"]], hostVars: 2, hostBindings: function SVGIconComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-svg-icon\", ctx.hostClass);\n } }, inputs: { icon: \"icon\" }, exportAs: [\"kendoSVGIcon\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[\"xmlns\", \"http://www.w3.org/2000/svg\", 0, \"xmlns\", \"xlink\", \"http://www.w3.org/1999/xlink\", 3, \"innerHTML\", 4, \"ngIf\"], [\"xmlns\", \"http://www.w3.org/2000/svg\", 0, \"xmlns\", \"xlink\", \"http://www.w3.org/1999/xlink\", 3, \"innerHTML\"]], template: function SVGIconComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, SVGIconComponent__svg_svg_0_Template, 1, 2, \"svg\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.visible);\n } }, directives: [ɵngcc2.NgIf], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-svg-icon'),\n __metadata(\"design:type\", Boolean)\n], SVGIconComponent.prototype, \"hostClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], SVGIconComponent.prototype, \"icon\", null);\nSVGIconComponent = __decorate([ __metadata(\"design:paramtypes\", [DomSanitizer, ElementRef, Renderer2])\n], SVGIconComponent);\n\nconst exportedModules = [\n IconComponent\n];\nconst declarations = [\n ...exportedModules\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Icon component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Icon module\n * import { IconModule } from '@progress/kendo-angular-icons';\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, IconModule], // import Icon module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet IconModule = class IconModule {\n};\nIconModule.ɵfac = function IconModule_Factory(t) { return new (t || IconModule)(); };\nIconModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: IconModule });\nIconModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nconst exportedModules$1 = [\n SVGIconComponent\n];\nconst declarations$1 = [\n ...exportedModules$1\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the SVG Icon component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the SVG Icon module\n * import { SVGIconModule } from '@progress/kendo-angular-icons';\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, SVGIconModule], // import SVG Icon module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet SVGIconModule = class SVGIconModule {\n};\nSVGIconModule.ɵfac = function SVGIconModule_Factory(t) { return new (t || SVGIconModule)(); };\nSVGIconModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SVGIconModule });\nSVGIconModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Icons components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Icons module\n * import { IconsModule } from '@progress/kendo-angular-icons';\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, IconsModule], // import Icons module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet IconsModule = class IconsModule {\n};\nIconsModule.ɵfac = function IconsModule_Factory(t) { return new (t || IconsModule)(); };\nIconsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: IconsModule });\nIconsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [IconModule, SVGIconModule] });\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IconComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoIcon',\n selector: 'kendo-icon',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-icon']\n }], name: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SVGIconComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoSVGIcon',\n selector: 'kendo-svg-icon',\n template: `\n \n `\n }]\n }], function () { return [{ type: ɵngcc1.DomSanitizer }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-svg-icon']\n }], icon: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IconModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(IconModule, { declarations: function () { return [IconComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [IconComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SVGIconModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SVGIconModule, { declarations: function () { return [SVGIconComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [SVGIconComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IconsModule, [{\n type: NgModule,\n args: [{\n exports: [\n IconModule,\n SVGIconModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(IconsModule, { exports: [IconModule, SVGIconModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { IconBase, IconComponent, SVGIconComponent, IconModule, SVGIconModule, IconsModule };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata } from 'tslib';\nimport { HostBinding, Input, Component, ElementRef, Renderer2, NgModule, isDevMode, ChangeDetectionStrategy } from '@angular/core';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@angular/common';\n\nconst _c0 = [\"*\"];\nfunction LoaderComponent_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 2);\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-indicators',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635940306,\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 SIZE_CLASSES = {\n 'small': 'k-badge-sm',\n 'medium': 'k-badge-md',\n 'large': 'k-badge-lg'\n};\n/**\n * Represents the [Kendo UI Badge component for Angular]({% slug overview_badge %}).\n * Used to display additional information or status that is related to an element.\n */\nlet BadgeComponent = class BadgeComponent {\n constructor(element, renderer, localizationService) {\n this.element = element;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.hostClass = true;\n /**\n * Specifies the size of the Badge.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n *\n */\n this.size = 'medium';\n /**\n * Specifies the appearance fill style of the Badge.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `outline`\n *\n */\n this.fill = 'solid';\n /**\n * Specifies the theme color of the Badge.\n * The theme color will be applied as background and border color, while also amending the text color accordingly.\n *\n * The possible values are:\n * * `primary` (Default)—Applies coloring based on primary theme color.\n * * `secondary`—Applies coloring based on secondary theme color.\n * * `tertiary`— Applies coloring based on tertiary theme color.\n * * `inherit`— Applies inherited coloring value.\n * * `info`—Applies coloring based on info theme color.\n * * `success`— Applies coloring based on success theme color.\n * * `warning`— Applies coloring based on warning theme color.\n * * `error`— Applies coloring based on error theme color.\n * * `dark`— Applies coloring based on dark theme color.\n * * `light`— Applies coloring based on light theme color.\n * * `inverse`— Applies coloring based on inverted theme color.\n *\n */\n this.themeColor = 'primary';\n /**\n * Specifies the shape of the Badge.\n *\n * The possible values are:\n * * `circle` (Default)—Applies circular shape on the Badge.\n * * `rectangle`—Applies rectangular shape on the Badge.\n * * `rounded`—Applies rounded shape on the Badge.\n * * `dot`—Applies dot shape on the Badge.\n * * `pill`—Applies border radius equal to half of the height of the Badge.\n *\n */\n this.shape = 'circle';\n /**\n * Specifies the position of the Badge relative to the edge of the parent container element.\n *\n * The possible values are:\n * * `edge` (Default)—The center of the Badge is positioned on the edge of the parent container element.\n * * `inside`—The Badge is entirely positioned inside the edge of the parent container element.\n * * `outside`—The Badge is entirely positioned outside the edge of the parent container element.\n *\n */\n this.position = 'edge';\n /**\n * Specifies whether or not to render additional `cutout` border around the Badge.\n *\n * The possible values are:\n * * `true`\n * * `false` (Default)\n *\n */\n this.cutoutBorder = false;\n this.badgeClasses = [];\n this.badgeAlign = { vertical: 'top', horizontal: 'end' };\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get cutoutBorderClass() {\n return this.cutoutBorder;\n }\n /**\n * Specifies the alignment of the Badge.\n *\n * The possible values are:\n * * `{ vertical: 'top', horizontal: 'end' }` (Default)\n * * `{ vertical: 'top', horizontal: 'start' }`\n * * `{ vertical: 'bottom', horizontal: 'start' }`\n * * `{ vertical: 'bottom', horizontal: 'end' }`\n *\n */\n get align() {\n return this.badgeAlign;\n }\n set align(align) {\n this.badgeAlign = Object.assign(this.badgeAlign, align);\n }\n ngAfterViewInit() {\n if (!this.badgeClasses.length) {\n this.setBadgeClasses();\n }\n }\n ngOnChanges() {\n this.setBadgeClasses();\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n alignClass() {\n return `k-${this.badgeAlign.vertical}-${this.badgeAlign.horizontal}`;\n }\n positionClass() {\n return `k-badge-${this.position}`;\n }\n sizeClass() {\n return SIZE_CLASSES[this.size];\n }\n shapeClass() {\n return `k-badge-${this.shape}`;\n }\n themeColorClass() {\n return `k-badge-${this.themeColor}`;\n }\n fillClass() {\n return `k-badge-${this.fill}`;\n }\n setBadgeClasses() {\n const element = this.element.nativeElement;\n this.badgeClasses.forEach((className) => {\n this.renderer.removeClass(element, className);\n });\n this.badgeClasses = [\n this.themeColorClass(),\n this.fillClass(),\n this.sizeClass(),\n this.shapeClass(),\n this.alignClass(),\n this.positionClass()\n ];\n this.badgeClasses.forEach((className) => {\n this.renderer.addClass(element, className);\n });\n }\n};\nBadgeComponent.ɵfac = function BadgeComponent_Factory(t) { return new (t || BadgeComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nBadgeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BadgeComponent, selectors: [[\"kendo-badge\"]], hostVars: 5, hostBindings: function BadgeComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-badge\", ctx.hostClass)(\"k-badge-border-cutout\", ctx.cutoutBorderClass);\n } }, inputs: { size: \"size\", fill: \"fill\", themeColor: \"themeColor\", shape: \"shape\", position: \"position\", cutoutBorder: \"cutoutBorder\", align: \"align\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.badge.component'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function BadgeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-badge'),\n __metadata(\"design:type\", Boolean)\n], BadgeComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-badge-border-cutout'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], BadgeComponent.prototype, \"cutoutBorderClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], BadgeComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], BadgeComponent.prototype, \"align\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], BadgeComponent.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], BadgeComponent.prototype, \"fill\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], BadgeComponent.prototype, \"themeColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], BadgeComponent.prototype, \"shape\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], BadgeComponent.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], BadgeComponent.prototype, \"cutoutBorder\", void 0);\nBadgeComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n LocalizationService])\n], BadgeComponent);\n\nlet BadgeContainerComponent = class BadgeContainerComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClass = true;\n this.rtl = false;\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n};\nBadgeContainerComponent.ɵfac = function BadgeContainerComponent_Factory(t) { return new (t || BadgeContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nBadgeContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BadgeContainerComponent, selectors: [[\"kendo-badge-container\"]], hostVars: 3, hostBindings: function BadgeContainerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-badge-container\", ctx.hostClass);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.badge.component'\n }\n ])], ngContentSelectors: _c0, decls: 1, vars: 0, template: function BadgeContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-badge-container'),\n __metadata(\"design:type\", Boolean)\n], BadgeContainerComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], BadgeContainerComponent.prototype, \"direction\", void 0);\nBadgeContainerComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], BadgeContainerComponent);\n\nconst SIZE_CLASSES$1 = {\n 'small': 'k-loader-sm',\n 'medium': 'k-loader-md',\n 'large': 'k-loader-lg'\n};\nconst SEGMENT_COUNT = {\n 'pulsing': 2,\n 'infinite-spinner': 3,\n 'converging-spinner': 4\n};\nconst TYPE_CLASSES = {\n 'pulsing': 'k-loader-pulsing-2',\n 'infinite-spinner': 'k-loader-spinner-3',\n 'converging-spinner': 'k-loader-spinner-4'\n};\n/**\n * Represents the [Kendo UI Loader component for Angular]({% slug overview_loader %}).\n * Displays a Loader that represents an indeterminate wait time.\n */\nlet LoaderComponent = class LoaderComponent {\n constructor(element, renderer) {\n this.element = element;\n this.renderer = renderer;\n this.hostClass = true;\n this._type = 'pulsing';\n this._themeColor = 'primary';\n this._size = 'medium';\n this.loader = this.element.nativeElement;\n validatePackage(packageMetadata);\n }\n /**\n * Specifies the Loader animation type.\n *\n * The possible values are:\n * - `pulsing` (default)\n * - `infinite-spinner`\n * - `converging-spinner`\n */\n set type(type) {\n this.renderer.removeClass(this.loader, TYPE_CLASSES[this.type]);\n this.renderer.addClass(this.loader, TYPE_CLASSES[type]);\n this._type = type;\n }\n get type() {\n return this._type;\n }\n /**\n * Specifies the theme color of the Loader.\n *\n * The possible values are:\n * * `primary` (Default)—Applies coloring based on primary theme color.\n * * `secondary`—Applies coloring based on secondary theme color.\n * * `tertiary`— Applies coloring based on tertiary theme color.\n * * `info`—Applies coloring based on info theme color.\n * * `success`— Applies coloring based on success theme color.\n * * `warning`— Applies coloring based on warning theme color.\n * * `error`— Applies coloring based on error theme color.\n * * `dark`— Applies coloring based on dark theme color.\n * * `light`— Applies coloring based on light theme color.\n * * `inverse`— Applies coloring based on inverted theme color.\n *\n */\n set themeColor(themeColor) {\n this.renderer.removeClass(this.loader, `k-loader-${this.themeColor}`);\n this.renderer.addClass(this.loader, `k-loader-${themeColor}`);\n this._themeColor = themeColor;\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * Specifies the size of the Loader.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.loader, SIZE_CLASSES$1[this.size]);\n this.renderer.addClass(this.loader, SIZE_CLASSES$1[size]);\n this._size = size;\n }\n get size() {\n return this._size;\n }\n ngAfterViewInit() {\n this.setLoaderClasses();\n }\n /**\n * @hidden\n */\n get segmentCount() {\n return new Array(SEGMENT_COUNT[this.type]);\n }\n setLoaderClasses() {\n this.renderer.addClass(this.loader, TYPE_CLASSES[this.type]);\n this.renderer.addClass(this.loader, `k-loader-${this.themeColor}`);\n this.renderer.addClass(this.loader, SIZE_CLASSES$1[this.size]);\n }\n};\nLoaderComponent.ɵfac = function LoaderComponent_Factory(t) { return new (t || LoaderComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nLoaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LoaderComponent, selectors: [[\"kendo-loader\"]], hostVars: 2, hostBindings: function LoaderComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-loader\", ctx.hostClass);\n } }, inputs: { type: \"type\", themeColor: \"themeColor\", size: \"size\" }, decls: 2, vars: 1, consts: [[1, \"k-loader-canvas\"], [\"class\", \"k-loader-segment\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-loader-segment\"]], template: function LoaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, LoaderComponent_span_1_Template, 1, 0, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.segmentCount);\n } }, directives: [ɵngcc2.NgForOf], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-loader'),\n __metadata(\"design:type\", Boolean)\n], LoaderComponent.prototype, \"hostClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], LoaderComponent.prototype, \"type\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], LoaderComponent.prototype, \"themeColor\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], LoaderComponent.prototype, \"size\", null);\nLoaderComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2])\n], LoaderComponent);\n\nconst exportedModules = [\n LoaderComponent\n];\nconst declarations = [\n ...exportedModules\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Loader component.\n */\nlet LoaderModule = class LoaderModule {\n};\nLoaderModule.ɵfac = function LoaderModule_Factory(t) { return new (t || LoaderModule)(); };\nLoaderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: LoaderModule });\nLoaderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * @hidden\n */\nconst validAnimations = [false, 'pulse', 'wave'];\n/**\n * @hidden\n */\nconst validShapes = ['circle', 'rectangle', 'text'];\n\n/**\n * @hidden\n */\nconst ANIMATION_CLASSES = {\n pulse: 'k-skeleton-pulse',\n wave: 'k-skeleton-wave'\n};\n/**\n * @hidden\n */\nconst SHAPE_CLASSES = {\n rectangle: 'k-skeleton-rect',\n circle: 'k-skeleton-circle',\n text: 'k-skeleton-text'\n};\n/**\n * @hidden\n */\nconst skeletonShapeError = (input) => `\"${input}\" is not a valid kendo-skeleton shape. Valid shapes are: ${validShapes.map(s => `\"${s}\"`).join(\" | \")}.`;\n/**\n * @hidden\n */\nconst skeletonAnimationError = (input) => `\"${input}\" is not a valid kendo-skeleton animation. Valid values are: 'pulse' | 'wave' | false.`;\n\n/**\n * Represents the [Kendo UI Skeleton component for Angular]({% slug overview_skeleton %}).\n * Displays a Skeleton that represents loading content.\n */\nlet SkeletonComponent = class SkeletonComponent {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this._animation = \"pulse\";\n this._shape = 'text';\n }\n /**\n * Specifies the animation settings of the Skeleton.\n *\n * The possible values are:\n * * `pulse` — (Default) Shows a pulse animation effect.\n * * `wave` — Shows a wave animation effect.\n * * `false` — Disables the animation. Note that it's a boolean, not a string.\n */\n set animation(animation) {\n if (isDevMode() && validAnimations.indexOf(animation) === -1) {\n throw new Error(skeletonAnimationError(animation));\n }\n if (this.animation) {\n this.renderer.removeClass(this.hostElement.nativeElement, ANIMATION_CLASSES[this.animation]);\n }\n if (animation) {\n this.renderer.addClass(this.hostElement.nativeElement, ANIMATION_CLASSES[animation]);\n }\n this._animation = animation;\n }\n get animation() {\n return this._animation;\n }\n /**\n * Specifies the shape of the Skeleton.\n *\n * The possible values are:\n * * `text` — (Default) Renders a line Skeleton.\n * * `circle` — Renders a circular Skeleton.\n * * `rectangle` — Renders a rectangular Skeleton.\n */\n set shape(shape) {\n if (isDevMode() && validShapes.indexOf(shape) === -1) {\n throw new Error(skeletonShapeError(shape));\n }\n this.renderer.removeClass(this.hostElement.nativeElement, SHAPE_CLASSES[this.shape]);\n this.renderer.addClass(this.hostElement.nativeElement, SHAPE_CLASSES[shape]);\n this._shape = shape;\n }\n get shape() {\n return this._shape;\n }\n /**\n * Specifies the width of the Skeleton component.\n * * Required for all Skeleton shapes.\n * * Can be set to a string, e.g. '100px', '3em', '50%'.\n * * Can be set to an integer number (will be read as width in pixels).\n */\n set width(width) {\n this.renderer.setStyle(this.hostElement.nativeElement, \"width\", typeof width === \"string\" ? width : width + \"px\");\n }\n /**\n * Specifies the height of the Skeleton component.\n * * Required for 'circle' and 'rectangle' shapes.\n * * Not required for 'text', as it is derived from the current CSS font-size.\n * * Can be set to a string, e.g. '100px', '3em', '50%'.\n * * Can be set to an integer number (will be read as height in pixels).\n */\n set height(height) {\n this.renderer.setStyle(this.hostElement.nativeElement, \"height\", typeof height === \"string\" ? height : height + \"px\");\n }\n ngAfterViewInit() {\n const hostElement = this.hostElement.nativeElement;\n hostElement.classList.add(\"k-skeleton\", SHAPE_CLASSES[this.shape]);\n if (this.animation) {\n hostElement.classList.add(ANIMATION_CLASSES[this.animation]);\n }\n }\n};\nSkeletonComponent.ɵfac = function SkeletonComponent_Factory(t) { return new (t || SkeletonComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nSkeletonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SkeletonComponent, selectors: [[\"kendo-skeleton\"]], inputs: { animation: \"animation\", shape: \"shape\", width: \"width\", height: \"height\" }, decls: 0, vars: 0, template: function SkeletonComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], SkeletonComponent.prototype, \"animation\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], SkeletonComponent.prototype, \"shape\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], SkeletonComponent.prototype, \"width\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], SkeletonComponent.prototype, \"height\", null);\nSkeletonComponent = __decorate([ __metadata(\"design:paramtypes\", [Renderer2, ElementRef])\n], SkeletonComponent);\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Skeleton component.\n */\nlet SkeletonModule = class SkeletonModule {\n};\nSkeletonModule.ɵfac = function SkeletonModule_Factory(t) { return new (t || SkeletonModule)(); };\nSkeletonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SkeletonModule });\nSkeletonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nconst exportedModules$1 = [\n BadgeComponent,\n BadgeContainerComponent\n];\nconst declarations$1 = [\n ...exportedModules$1\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Badge component.\n */\nlet BadgeModule = class BadgeModule {\n};\nBadgeModule.ɵfac = function BadgeModule_Factory(t) { return new (t || BadgeModule)(); };\nBadgeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BadgeModule });\nBadgeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Indicators components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Indicators module\n * import { IndicatorsModule } from '@progress/kendo-angular-indicators';\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, IndicatorsModule], // import Indicators module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet IndicatorsModule = class IndicatorsModule {\n};\nIndicatorsModule.ɵfac = function IndicatorsModule_Factory(t) { return new (t || IndicatorsModule)(); };\nIndicatorsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: IndicatorsModule });\nIndicatorsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [BadgeModule, LoaderModule, SkeletonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BadgeComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-badge',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.badge.component'\n }\n ],\n template: ``\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-badge']\n }], size: [{\n type: Input\n }], fill: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], shape: [{\n type: Input\n }], position: [{\n type: Input\n }], cutoutBorder: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], cutoutBorderClass: [{\n type: HostBinding,\n args: ['class.k-badge-border-cutout']\n }], align: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BadgeContainerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-badge-container',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.badge.component'\n }\n ],\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-badge-container']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoaderComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-loader',\n template: `\n
    \n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-loader']\n }], type: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], size: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoaderModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LoaderModule, { declarations: function () { return [LoaderComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [LoaderComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SkeletonComponent, [{\n type: Component,\n args: [{\n selector: \"kendo-skeleton\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, { animation: [{\n type: Input\n }], shape: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SkeletonModule, [{\n type: NgModule,\n args: [{\n declarations: [SkeletonComponent],\n exports: [SkeletonComponent],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SkeletonModule, { declarations: function () { return [SkeletonComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [SkeletonComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BadgeModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BadgeModule, { declarations: function () { return [BadgeComponent, BadgeContainerComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [BadgeComponent, BadgeContainerComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IndicatorsModule, [{\n type: NgModule,\n args: [{\n exports: [\n BadgeModule,\n LoaderModule,\n SkeletonModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(IndicatorsModule, { exports: [BadgeModule, LoaderModule, SkeletonModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BadgeModule, BadgeComponent, BadgeContainerComponent, LoaderComponent, LoaderModule, SkeletonModule, SkeletonComponent, IndicatorsModule };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __param, __metadata } from 'tslib';\nimport { isDevMode, Directive, Optional, TemplateRef, EventEmitter, Input, Output, HostBinding, ViewChild, ElementRef, ContentChild, Component, forwardRef, Injector, Renderer2, NgZone, ChangeDetectorRef, Inject, Injectable, HostListener, ViewChildren, QueryList, NgModule, ViewContainerRef, ContentChildren } from '@angular/core';\nimport { NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, RadioControlValueAccessor } from '@angular/forms';\nimport { Subscription, fromEvent, interval, merge, Observable, Subject } from 'rxjs';\nimport { take, filter, concatMap, startWith, takeUntil, skip, debounceTime, throttleTime } from 'rxjs/operators';\nimport { LocalizationService, L10N_PREFIX, RTL, ComponentMessages, MessageService } from '@progress/kendo-angular-l10n';\nimport { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, isChanged, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { browser, mobileOS } from '@progress/kendo-common';\nimport { IntlService } from '@progress/kendo-angular-intl';\nimport { CommonModule } from '@angular/common';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport { Color, parseColor, 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 */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@progress/kendo-angular-common';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@progress/kendo-angular-intl';\nimport * as ɵngcc5 from '@progress/kendo-angular-popup';\n\nconst _c0 = [\"wrap\"];\nconst _c1 = [\"track\"];\nconst _c2 = [\"sliderSelection\"];\nconst _c3 = [\"ticks\"];\nconst _c4 = [\"draghandle\"];\nconst _c5 = [\"decreaseButton\"];\nconst _c6 = [\"increaseButton\"];\nfunction SliderComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 13, 14);\n ɵngcc0.ɵɵelement(2, \"span\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"title\", ctx_r1.decrementMessage);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-i-arrow-w\", !ctx_r1.vertical)(\"k-i-arrow-s\", ctx_r1.vertical);\n} }\nfunction SliderComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 16, 17);\n ɵngcc0.ɵɵlistener(\"click\", function SliderComponent_span_4_Template_span_click_0_listener($event) { return $event.preventDefault(); });\n ɵngcc0.ɵɵelement(2, \"span\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"title\", ctx_r2.incrementMessage);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.currentValue);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-i-arrow-e\", !ctx_r2.vertical)(\"k-i-arrow-n\", ctx_r2.vertical);\n} }\nfunction SliderComponent_ul_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 18, 19);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tickTitle\", ctx_r3.title)(\"vertical\", ctx_r3.vertical)(\"step\", ctx_r3.smallStep)(\"largeStep\", ctx_r3.largeStep)(\"min\", ctx_r3.min)(\"max\", ctx_r3.max)(\"labelTemplate\", ctx_r3.labelTemplate == null ? null : ctx_r3.labelTemplate.templateRef);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n} }\nconst _c13 = function (a0, a1) { return { click: a0, keydown: a1 }; };\nconst _c14 = [\"draghandleStart\"];\nconst _c15 = [\"draghandleEnd\"];\nfunction RangeSliderComponent_ul_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 12, 13);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tickTitle\", ctx_r1.title)(\"vertical\", ctx_r1.vertical)(\"step\", ctx_r1.smallStep)(\"largeStep\", ctx_r1.largeStep)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"labelTemplate\", ctx_r1.labelTemplate == null ? null : ctx_r1.labelTemplate.templateRef);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n} }\nconst _c20 = [\"wrapper\"];\nconst _c25 = function (a0, a1, a2, a3) { return { click: a0, keydown: a1, focus: a2, blur: a3 }; };\nfunction TextBoxContainerComponent_label_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"label\", 1);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"for\", ctx_r0.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.floatingLabel);\n} }\nconst _c26 = [\"*\"];\nconst _c27 = [\"numericInput\"];\nconst _c28 = [\"numericWrap\"];\nconst _c33 = function (a0, a1) { return { mouseup: a0, mouseleave: a1 }; };\nconst _c34 = function (a0) { return { mousedown: a0 }; };\nfunction NumericTextBoxComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6);\n ɵngcc0.ɵɵelementStart(1, \"span\", 7);\n ɵngcc0.ɵɵelement(2, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 9);\n ɵngcc0.ɵɵelement(4, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(11, _c33, ctx_r2.releaseArrow, ctx_r2.releaseArrow));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r2.arrowDirection === ctx_r2.ArrowDirection.Up);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(14, _c34, ctx_r2.increasePress))(\"title\", ctx_r2.incrementTitle);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.incrementTitle);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r2.arrowDirection === ctx_r2.ArrowDirection.Down);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction1(16, _c34, ctx_r2.decreasePress))(\"title\", ctx_r2.decrementTitle);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.decrementTitle);\n} }\nconst _c35 = function (a0, a1) { return { mousewheel: a0, DOMMouseScroll: a1 }; };\nconst _c36 = function (a0, a1, a2, a3, a4, a5, a6) { return { mousedown: a0, dragenter: a1, keydown: a2, input: a3, focus: a4, blur: a5, paste: a6 }; };\nconst _c37 = [\"input\"];\nconst _c38 = function (a0, a1, a2, a3, a4) { return { focus: a0, blur: a1, click: a2, dragstart: a3, drop: a4 }; };\nconst _c39 = [\"tickElement\"];\nconst _c40 = [\"kendoSliderTicks\", \"\"];\nfunction SliderTicksComponent_li_0_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 7);\n ɵngcc0.ɵɵelementContainer(1, 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n const _r1 = ɵngcc0.ɵɵreference(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.labelTemplate || _r1)(\"ngTemplateOutletContext\", tick_r3);\n} }\nfunction SliderTicksComponent_li_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1, \"\\u00A0\");\n ɵngcc0.ɵɵelementContainerEnd();\n} }\nfunction SliderTicksComponent_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 2, 3);\n ɵngcc0.ɵɵelementContainerStart(2, 4);\n ɵngcc0.ɵɵtemplate(3, SliderTicksComponent_li_0_span_3_Template, 2, 2, \"span\", 5);\n ɵngcc0.ɵɵtemplate(4, SliderTicksComponent_li_0_ng_container_4_Template, 2, 0, \"ng-container\", 6);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r3 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵpropertyInterpolate(\"title\", ctx_r0.tickTitle(tick_r3.value));\n ɵngcc0.ɵɵproperty(\"ngClass\", tick_r3.classes);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", tick_r3.large);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n} }\nfunction SliderTicksComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const value_r8 = ctx.value;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r2.tickTitle(value_r8), \" \");\n} }\nfunction TextBoxComponent_2_ng_template_0_Template(rf, ctx) { }\nfunction TextBoxComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TextBoxComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.prefixTemplate == null ? null : ctx_r0.prefixTemplate.templateRef);\n} }\nfunction TextBoxComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 9);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r2.errorIconClasses);\n} }\nfunction TextBoxComponent_span_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 9);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r3.successIconClasses);\n} }\nfunction TextBoxComponent_span_8_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function TextBoxComponent_span_8_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.clearValue(); })(\"mousedown\", function TextBoxComponent_span_8_Template_span_mousedown_0_listener($event) { return $event.preventDefault(); })(\"keydown.enter\", function TextBoxComponent_span_8_Template_span_keydown_enter_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.clearValue($event); })(\"keydown.space\", function TextBoxComponent_span_8_Template_span_keydown_space_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.clearValue($event); });\n ɵngcc0.ɵɵelement(1, \"span\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx_r4.tabIndex)(\"title\", ctx_r4.clearTitle());\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r4.clearTitle());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.clearButtonClasses);\n} }\nfunction TextBoxComponent_9_ng_template_0_Template(rf, ctx) { }\nfunction TextBoxComponent_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TextBoxComponent_9_ng_template_0_Template, 0, 0, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.suffixTemplate == null ? null : ctx_r5.suffixTemplate.templateRef);\n} }\nconst _c43 = function (a0, a1, a2) { return { focus: a0, blur: a1, input: a2 }; };\nconst _c44 = [[[\"kendo-textarea-suffix\"]]];\nconst _c45 = [\"kendo-textarea-suffix\"];\nconst _c46 = [\"opacityInput\"];\nconst _c47 = [\"toggleFormatButton\"];\nfunction ColorInputComponent_input_4_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"input\", 6, 7);\n ɵngcc0.ɵɵlistener(\"blur\", function ColorInputComponent_input_4_Template_input_blur_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.handleHexInputBlur(); })(\"input\", function ColorInputComponent_input_4_Template_input_input_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const _r3 = ɵngcc0.ɵɵreference(1); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.handleHexValueChange(_r3.value); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r1.disabled)(\"readonly\", ctx_r1.readonly)(\"value\", ctx_r1.hex || \"\")(\"placeholder\", ctx_r1.textFor(\"hexInputPlaceholder\"));\n} }\nfunction ColorInputComponent_ng_container_5_div_16_Template(rf, ctx) { if (rf & 1) {\n const _r14 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-numerictextbox\", 14, 15);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorInputComponent_ng_container_5_div_16_Template_kendo_numerictextbox_valueChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r13 = ɵngcc0.ɵɵnextContext(2); return ctx_r13.rgba.a = $event; })(\"blur\", function ColorInputComponent_ng_container_5_div_16_Template_kendo_numerictextbox_blur_1_listener() { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.handleRgbaInputBlur(); })(\"valueChange\", function ColorInputComponent_ng_container_5_div_16_Template_kendo_numerictextbox_valueChange_1_listener() { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.handleRgbaValueChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"label\", 10);\n ɵngcc0.ɵɵtext(5, \"A\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r12 = ɵngcc0.ɵɵreference(3);\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r10.disabled)(\"readonly\", ctx_r10.readonly)(\"min\", 0)(\"max\", 1)(\"placeholder\", ctx_r10.textFor(\"alphaInputPlaceholder\"))(\"value\", ctx_r10.rgba.a)(\"autoCorrect\", true)(\"spinners\", false)(\"step\", 0.01)(\"format\", \"n2\")(\"decimals\", 2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"for\", _r12.focusableId);\n} }\nfunction ColorInputComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 0);\n ɵngcc0.ɵɵelementStart(2, \"kendo-numerictextbox\", 8, 9);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r17 = ɵngcc0.ɵɵnextContext(); return ctx_r17.rgba.r = $event; })(\"blur\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_blur_2_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ctx_r19.handleRgbaInputBlur(); })(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_2_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.handleRgbaValueChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"label\", 10);\n ɵngcc0.ɵɵtext(5, \"R\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 0);\n ɵngcc0.ɵɵelementStart(7, \"kendo-numerictextbox\", 8, 11);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_7_listener($event) { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.rgba.g = $event; })(\"blur\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_blur_7_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.handleRgbaInputBlur(); })(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_7_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r23 = ɵngcc0.ɵɵnextContext(); return ctx_r23.handleRgbaValueChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"label\", 10);\n ɵngcc0.ɵɵtext(10, \"G\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(11, \"div\", 0);\n ɵngcc0.ɵɵelementStart(12, \"kendo-numerictextbox\", 8, 12);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_12_listener($event) { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.rgba.b = $event; })(\"blur\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_blur_12_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.handleRgbaInputBlur(); })(\"valueChange\", function ColorInputComponent_ng_container_5_Template_kendo_numerictextbox_valueChange_12_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r26 = ɵngcc0.ɵɵnextContext(); return ctx_r26.handleRgbaValueChange(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(14, \"label\", 10);\n ɵngcc0.ɵɵtext(15, \"B\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(16, ColorInputComponent_ng_container_5_div_16_Template, 6, 12, \"div\", 13);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r7 = ɵngcc0.ɵɵreference(3);\n const _r8 = ɵngcc0.ɵɵreference(8);\n const _r9 = ɵngcc0.ɵɵreference(13);\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled)(\"readonly\", ctx_r2.readonly)(\"min\", 0)(\"max\", 255)(\"placeholder\", ctx_r2.textFor(\"redInputPlaceholder\"))(\"value\", ctx_r2.rgba.r)(\"autoCorrect\", true)(\"spinners\", false)(\"format\", \"n\")(\"decimals\", 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", _r7.focusableId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled)(\"readonly\", ctx_r2.readonly)(\"min\", 0)(\"max\", 255)(\"placeholder\", ctx_r2.textFor(\"greenInputPlaceholder\"))(\"value\", ctx_r2.rgba.g)(\"autoCorrect\", true)(\"spinners\", false)(\"format\", \"n\")(\"decimals\", 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", _r8.focusableId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled)(\"readonly\", ctx_r2.readonly)(\"min\", 0)(\"max\", 255)(\"placeholder\", ctx_r2.textFor(\"blueInputPlaceholder\"))(\"value\", ctx_r2.rgba.b)(\"autoCorrect\", true)(\"spinners\", false)(\"format\", \"n\")(\"decimals\", 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"for\", _r9.focusableId);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.opacity);\n} }\nconst _c48 = [\"gradientDragHandle\"];\nconst _c49 = [\"inputs\"];\nconst _c50 = [\"alphaSlider\"];\nconst _c51 = [\"gradientWrapper\"];\nfunction ColorGradientComponent_span_8_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 13);\n ɵngcc0.ɵɵlistener(\"click\", function ColorGradientComponent_span_8_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.reset(); })(\"keydown.enter\", function ColorGradientComponent_span_8_Template_span_keydown_enter_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.reset(); })(\"keydown.space\", function ColorGradientComponent_span_8_Template_span_keydown_space_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.reset(); });\n ɵngcc0.ɵɵelement(1, \"span\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.clearButtonTitle)(\"title\", ctx_r2.clearButtonTitle);\n} }\nconst _c78 = function (a0) { return { \"k-align-self-end\": a0 }; };\nfunction ColorGradientComponent_kendo_slider_10_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-slider\", 15, 16);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorGradientComponent_kendo_slider_10_Template_kendo_slider_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.handleAlphaSliderChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(12, _c78, ctx_r3.clearButton))(\"dragHandleTitle\", ctx_r3.opacitySliderTitle)(\"disabled\", ctx_r3.disabled)(\"readonly\", ctx_r3.readonly)(\"showButtons\", false)(\"tickPlacement\", \"none\")(\"vertical\", true)(\"min\", 0)(\"max\", 100)(\"smallStep\", 1)(\"largeStep\", 10)(\"value\", ctx_r3.alphaSliderValue);\n} }\nfunction ColorGradientComponent_div_13_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 17);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", ctx_r5.value)(\"ratio\", ctx_r5.contrastTool);\n} }\nconst _c79 = [\"palette\"];\nconst _c80 = [\"container\"];\nconst _c81 = [\"popupTemplate\"];\nconst _c82 = [\"colorGradient\"];\nfunction ColorPickerComponent_span_3_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 11);\n} }\nfunction ColorPickerComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPickerComponent_span_3_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.handleActiveColorClick(); });\n ɵngcc0.ɵɵtemplate(1, ColorPickerComponent_span_3_span_1_Template, 1, 0, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx_r1.value);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.value);\n} }\nfunction ColorPickerComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPickerComponent_span_4_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.handleActiveColorClick(); });\n ɵngcc0.ɵɵelement(1, \"span\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r2.iconStyles);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx_r2.value);\n} }\nfunction ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-colorgradient\", 16, 17);\n ɵngcc0.ɵɵlistener(\"focusout\", function ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template_kendo_colorgradient_focusout_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.handlePopupBlur($event); })(\"valueChange\", function ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template_kendo_colorgradient_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.handleValueChange($event, false); })(\"keydown\", function ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template_kendo_colorgradient_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r17 = ɵngcc0.ɵɵnextContext(2); return ctx_r17.handlePopupKeyDown($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r11.value)(\"format\", ctx_r11.format)(\"opacity\", ctx_r11.gradientSettings.opacity)(\"clearButton\", ctx_r11.gradientSettings.clearButton)(\"delay\", ctx_r11.gradientSettings.delay);\n} }\nfunction ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template(rf, ctx) { if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-colorpalette\", 18, 19);\n ɵngcc0.ɵɵlistener(\"blur\", function ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template_kendo_colorpalette_blur_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.handlePopupBlur($event); })(\"cellSelection\", function ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template_kendo_colorpalette_cellSelection_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r21 = ɵngcc0.ɵɵnextContext(2); return ctx_r21.handleValueChange($event, true); })(\"mousedown\", function ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template_kendo_colorpalette_mousedown_0_listener($event) { return $event.preventDefault(); })(\"keydown\", function ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template_kendo_colorpalette_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r23 = ɵngcc0.ɵɵnextContext(2); return ctx_r23.handlePopupKeyDown($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"palette\", ctx_r12.paletteSettings.palette)(\"columns\", ctx_r12.paletteSettings.columns)(\"tileSize\", ctx_r12.paletteSettings.tileSize)(\"format\", ctx_r12.format)(\"value\", ctx_r12.value);\n} }\nfunction ColorPickerComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ColorPickerComponent_ng_template_7_kendo_colorgradient_0_Template, 2, 5, \"kendo-colorgradient\", 14);\n ɵngcc0.ɵɵtemplate(1, ColorPickerComponent_ng_template_7_kendo_colorpalette_1_Template, 2, 5, \"kendo-colorpalette\", 15);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.view === \"gradient\" || ctx_r4.view === \"combo\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.view === \"palette\" || ctx_r4.view === \"combo\");\n} }\nconst _c101 = function (a1, a2) { return { \"k-picker-wrap\": true, \"k-state-disabled\": a1, \"k-state-focused\": a2 }; };\nconst _c104 = function (a0, a1, a2, a3) { return { backgroundColor: a0, width: a1, height: a2, minWidth: a3 }; };\nfunction ColorPaletteComponent_tr_4_td_1_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPaletteComponent_tr_4_td_1_Template_td_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const color_r4 = restoredCtx.$implicit; const colIndex_r5 = restoredCtx.index; const rowIndex_r2 = ɵngcc0.ɵɵnextContext().index; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.handleCellSelection(color_r4, { row: rowIndex_r2, col: colIndex_r5 }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const color_r4 = ctx.$implicit;\n const colIndex_r5 = ctx.index;\n const rowIndex_r2 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-state-selected\", (ctx_r3.selectedCell == null ? null : ctx_r3.selectedCell.row) === rowIndex_r2 && (ctx_r3.selectedCell == null ? null : ctx_r3.selectedCell.col) === colIndex_r5)(\"k-state-focus\", ctx_r3.focusInComponent && (ctx_r3.focusedCell == null ? null : ctx_r3.focusedCell.row) === rowIndex_r2 && (ctx_r3.focusedCell == null ? null : ctx_r3.focusedCell.col) === colIndex_r5);\n ɵngcc0.ɵɵproperty(\"id\", rowIndex_r2 + \"-\" + colIndex_r5)(\"ngStyle\", ɵngcc0.ɵɵpureFunction4(9, _c104, color_r4, ctx_r3.tileLayout.width + \"px\", ctx_r3.tileLayout.height + \"px\", ctx_r3.tileLayout.width + \"px\"));\n ɵngcc0.ɵɵattribute(\"aria-selected\", (ctx_r3.selectedCell == null ? null : ctx_r3.selectedCell.row) === rowIndex_r2 && (ctx_r3.selectedCell == null ? null : ctx_r3.selectedCell.col) === colIndex_r5)(\"aria-label\", color_r4)(\"value\", color_r4);\n} }\nfunction ColorPaletteComponent_tr_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, ColorPaletteComponent_tr_4_td_1_Template, 1, 14, \"td\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const row_r1 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", row_r1);\n} }\nconst _c105 = [\"kendoContrastValidation\", \"\"];\nfunction ContrastValidationComponent_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelement(2, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.passMessage, \" \");\n} }\nfunction ContrastValidationComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelement(2, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.failMessage, \" \");\n} }\nconst _c106 = [\"kendoContrastTool\", \"\"];\nfunction ContrastComponent_span_3_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 7);\n} }\nfunction ContrastComponent_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6);\n ɵngcc0.ɵɵelement(1, \"span\", 7);\n ɵngcc0.ɵɵtemplate(2, ContrastComponent_span_3_span_2_Template, 1, 0, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.satisfiesAAACondition);\n} }\nfunction ContrastComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵelement(1, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction FormFieldComponent_ng_content_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 2, [\"*ngIf\", \"hasHints\"]);\n} }\nfunction FormFieldComponent_ng_content_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 3, [\"*ngIf\", \"hasErrors\"]);\n} }\nconst _c107 = [[[\"label\"], [\"kendo-label\"]], \"*\", [[\"kendo-formhint\"]], [[\"kendo-formerror\"]]];\nconst _c108 = [\"label, kendo-label\", \"*\", \"kendo-formhint\", \"kendo-formerror\"];\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};\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 = ({ handleWidth, trackWidth, min, max, reverse, value }) => {\n const halfHandleWidth = Math.floor(handleWidth / 2);\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 - halfHandleWidth);\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/**\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 trackWidth = this.trackWidth();\n this.track.style[orientation] = `${trackWidth}px`;\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 wrapperSize = this.elementSize(this.wrapper);\n const trackWidth = calculateTrackSize(wrapperSize, this.elementOffset(this.track));\n const fixedTrackWidth = calculateFixedTrackSize(this.props);\n const wrapperParentEl = this.wrapper.parentElement;\n if (trackWidth > fixedTrackWidth) {\n wrapperParentEl.style[dimension] = `${wrapperSize - (trackWidth - fixedTrackWidth)}px`;\n }\n else {\n wrapperParentEl.style[dimension] = `${wrapperSize + (fixedTrackWidth - trackWidth)}px`;\n }\n }\n trackWidth() {\n if (this.props.fixedTickWidth) {\n return calculateFixedTrackSize(this.props);\n }\n return calculateTrackSize(this.elementSize(this.wrapper), this.elementOffset(this.track), this.props.buttons);\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 handleWidth: dragHandle.offsetWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.handlePosition}px`);\n }\n positionSelection(dragHandle, selection) {\n const { reverse, vertical } = this.props;\n const dimension = vertical ? 'height' : 'width';\n const handleWidth = Math.floor(dragHandle.offsetWidth / 2);\n let size = this.handlePosition + handleWidth;\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: 1635940293,\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 */\nlet LabelTemplateDirective = class LabelTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nLabelTemplateDirective.ɵfac = function LabelTemplateDirective_Factory(t) { return new (t || LabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LabelTemplateDirective, selectors: [[\"\", \"kendoSliderLabelTemplate\", \"\"]] });\nLabelTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], LabelTemplateDirective);\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(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the component is blurred.\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n this.sliderClass = true;\n this.widgetClass = 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 = function SliderBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nSliderBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderBase, contentQueries: function SliderBase_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, LabelTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n } }, viewQuery: function SliderBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c2, 7);\n ɵngcc0.ɵɵviewQuery(_c3, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c3, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.track = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.sliderSelection = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksContainer = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticks = _t.first);\n } }, hostVars: 11, hostBindings: function SliderBase_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-slider\", ctx.sliderClass)(\"k-widget\", ctx.widgetClass)(\"k-slider-horizontal\", ctx.horizontalClass)(\"k-slider-vertical\", ctx.verticalClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { title: \"title\", tickPlacement: \"tickPlacement\", vertical: \"vertical\", min: \"min\", max: \"max\", smallStep: \"smallStep\", largeStep: \"largeStep\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", fixedTickWidth: \"fixedTickWidth\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SliderBase.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderBase.prototype, \"tickPlacement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"vertical\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"smallStep\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"largeStep\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"fixedTickWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderBase.prototype, \"tabindex\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], SliderBase.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], SliderBase.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SliderBase.prototype, \"valueChange\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], SliderBase.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-slider-horizontal'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SliderBase.prototype, \"horizontalClass\", null);\n__decorate([\n HostBinding('class.k-slider-vertical'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SliderBase.prototype, \"verticalClass\", null);\n__decorate([\n HostBinding('class.k-slider'),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"sliderClass\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n __metadata(\"design:type\", Boolean)\n], SliderBase.prototype, \"widgetClass\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SliderBase.prototype, \"disabledClass\", null);\n__decorate([\n ViewChild('wrap', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SliderBase.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('track', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SliderBase.prototype, \"track\", void 0);\n__decorate([\n ViewChild('sliderSelection', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SliderBase.prototype, \"sliderSelection\", void 0);\n__decorate([\n ViewChild('ticks', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], SliderBase.prototype, \"ticksContainer\", void 0);\n__decorate([\n ViewChild('ticks', { static: false }),\n __metadata(\"design:type\", Object)\n], SliderBase.prototype, \"ticks\", void 0);\n__decorate([\n ContentChild(LabelTemplateDirective, { static: false }),\n __metadata(\"design:type\", LabelTemplateDirective)\n], SliderBase.prototype, \"labelTemplate\", void 0);\n\nvar SliderComponent_1;\nconst PRESSED = 'k-pressed';\n/**\n * Represents the [Kendo UI Slider component for Angular]({% slug overview_slider %}).\n */\nlet SliderComponent = SliderComponent_1 = class 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(dragHandleEl, 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);\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 = 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 = function SliderComponent_Factory(t) { return new (t || SliderComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nSliderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SliderComponent, selectors: [[\"kendo-slider\"]], viewQuery: function SliderComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, 7);\n ɵngcc0.ɵɵviewQuery(_c5, 5);\n ɵngcc0.ɵɵviewQuery(_c6, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.draghandle = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.decreaseButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.increaseButton = _t.first);\n } }, inputs: { focusableId: \"focusableId\", animate: \"animate\", showButtons: \"showButtons\", value: \"value\", tabIndex: \"tabIndex\", dragHandleTitle: \"dragHandleTitle\", incrementTitle: \"incrementTitle\", decrementTitle: \"decrementTitle\" }, exportAs: [\"kendoSlider\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.slider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent_1) },\n { provide: KendoInput, useExisting: forwardRef(() => SliderComponent_1) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 25, consts: function () { let i18n_7; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **Increase** button of the Slider.\n * @meaning kendo.slider.increment\n */\n const MSG_EXTERNAL_8302125540024939132$$DIST_FESM2015_INDEX_JS_8 = goog.getMsg(\"increment\");\n i18n_7 = MSG_EXTERNAL_8302125540024939132$$DIST_FESM2015_INDEX_JS_8;\n }\n else {\n i18n_7 = $localize `:kendo.slider.increment|The title of the **Increase** button of the Slider.␟0fa71630d40c425b9c366afd7f6c3cecc5bef59d␟8302125540024939132:increment`;\n } let i18n_9; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **Decrease** button of the Slider.\n * @meaning kendo.slider.decrement\n */\n const MSG_EXTERNAL_652458644240352212$$DIST_FESM2015_INDEX_JS_10 = goog.getMsg(\"decrement\");\n i18n_9 = MSG_EXTERNAL_652458644240352212$$DIST_FESM2015_INDEX_JS_10;\n }\n else {\n i18n_9 = $localize `:kendo.slider.decrement|The title of the **Decrease** button of the Slider.␟042c26f68d78afd6834ea46a5f7533850fe8c800␟652458644240352212:decrement`;\n } let i18n_11; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the drag handle of the Slider.\n * @meaning kendo.slider.dragHandle\n */\n const MSG_EXTERNAL_9117416417579607469$$DIST_FESM2015_INDEX_JS_12 = goog.getMsg(\"Drag\");\n i18n_11 = MSG_EXTERNAL_9117416417579607469$$DIST_FESM2015_INDEX_JS_12;\n }\n else {\n i18n_11 = $localize `:kendo.slider.dragHandle|The title of the drag handle of the Slider.␟481eb98e9cd8ef8e8b22051796441901e883763d␟9117416417579607469:Drag`;\n } return [[\"kendoSliderLocalizedMessages\", \"\", \"increment\", i18n_7, \"decrement\", i18n_9, \"dragHandle\", i18n_11], [1, \"k-slider-wrap\", 3, \"kendoEventsOutsideAngular\"], [\"wrap\", \"\"], [\"class\", \"k-button k-button-decrease\", \"role\", \"presentation\", 3, \"title\", 4, \"ngIf\"], [\"class\", \"k-button k-button-increase\", 3, \"title\", \"click\", 4, \"ngIf\"], [\"kendoSliderTicks\", \"\", 3, \"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\", 4, \"ngIf\"], [1, \"k-slider-track\"], [\"track\", \"\"], [1, \"k-slider-selection\"], [\"sliderSelection\", \"\"], [\"role\", \"slider\", \"kendoDraggable\", \"\", 1, \"k-draghandle\", 3, \"title\", \"id\", \"kendoPress\", \"kendoDrag\", \"kendoRelease\"], [\"draghandle\", \"\"], [3, \"resize\"], [\"role\", \"presentation\", 1, \"k-button\", \"k-button-decrease\", 3, \"title\"], [\"decreaseButton\", \"\"], [1, \"k-icon\"], [1, \"k-button\", \"k-button-increase\", 3, \"title\", \"click\"], [\"increaseButton\", \"\"], [\"kendoSliderTicks\", \"\", 3, \"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\"], [\"ticks\", \"\"]]; }, template: function SliderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵtemplate(3, SliderComponent_span_3_Template, 3, 5, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, SliderComponent_span_4_Template, 3, 6, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, SliderComponent_ul_5_Template, 2, 8, \"ul\", 5);\n ɵngcc0.ɵɵelementStart(6, \"div\", 6, 7);\n ɵngcc0.ɵɵelement(8, \"div\", 8, 9);\n ɵngcc0.ɵɵelementStart(10, \"a\", 10, 11);\n ɵngcc0.ɵɵlistener(\"kendoPress\", function SliderComponent_Template_a_kendoPress_10_listener($event) { return ctx.ifEnabled(ctx.handleDragPress, $event); })(\"kendoDrag\", function SliderComponent_Template_a_kendoDrag_10_listener($event) { return ctx.ifEnabled(ctx.onHandleDrag, $event); })(\"kendoRelease\", function SliderComponent_Template_a_kendoRelease_10_listener($event) { return ctx.ifEnabled(ctx.onHandleRelease, $event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(12, \"kendo-resize-sensor\", 12);\n ɵngcc0.ɵɵlistener(\"resize\", function SliderComponent_Template_kendo_resize_sensor_resize_12_listener() { return ctx.sizeComponent(false); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-slider-buttons\", ctx.showButtons)(\"k-slider-topleft\", ctx.tickPlacement === \"before\")(\"k-slider-bottomright\", ctx.tickPlacement === \"after\");\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(22, _c13, ctx.onWrapClick, ctx.onKeyDown));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showButtons);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showButtons);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.tickPlacement !== \"none\");\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx.isDisabled ? \"\" : \"none\");\n ɵngcc0.ɵɵproperty(\"title\", ctx.dragHandleMessage)(\"id\", ctx.focusableId);\n ɵngcc0.ɵɵattribute(\"aria-valuemin\", ctx.min)(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.currentValue)(\"aria-valuetext\", ctx.currentValue)(\"aria-disabled\", ctx.disabled ? true : undefined)(\"aria-readonly\", ctx.readonly ? true : undefined)(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\")(\"tabindex\", ctx.disabled ? \"-1\" : ctx.tabIndex);\n } }, directives: function () { return [LocalizedSliderMessagesDirective, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf, SliderTicksComponent, ɵngcc2.DraggableDirective, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderComponent.prototype, \"dragHandleTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderComponent.prototype, \"incrementTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderComponent.prototype, \"decrementTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderComponent.prototype, \"showButtons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], SliderComponent.prototype, \"tabIndex\", null);\n__decorate([\n ViewChild('draghandle', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], SliderComponent.prototype, \"draghandle\", void 0);\n__decorate([\n ViewChild('decreaseButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], SliderComponent.prototype, \"decreaseButton\", void 0);\n__decorate([\n ViewChild('increaseButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], SliderComponent.prototype, \"increaseButton\", void 0);\nSliderComponent = SliderComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n Injector,\n Renderer2,\n NgZone,\n ChangeDetectorRef,\n ElementRef])\n], SliderComponent);\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 handleWidth: dragHandle.offsetWidth\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 handleWidth: dragHandle.offsetWidth\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 handleWidth = Math.floor(dragHandle.offsetWidth / 2);\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) - handleWidth + 'px'\n : parseFloat(currentSelectionPosition) + handleWidth + 'px');\n }\n}\n\nvar RangeSliderComponent_1;\nconst PRESSED$1 = 'k-pressed';\n/**\n * Represents the [Kendo UI RangeSlider component for Angular]({% slug overview_rangeslider %}).\n */\nlet RangeSliderComponent = RangeSliderComponent_1 = class 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({}, 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 left = args.pageX < this.lastHandlePosition.x;\n const right = args.pageX > this.lastHandlePosition.x;\n const up = args.pageY > 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 forward = (this.reverse ? (!this.vertical && !left) : (!this.vertical && left)) || (this.vertical && up);\n if (this.value[0] === this.value[1]) {\n if (forward) {\n activeStartHandle ? moveStartHandle() : moveBothHandles();\n }\n else {\n activeStartHandle ? moveBothHandles() : moveEndHandle();\n }\n }\n else {\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$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 = 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 = function RangeSliderComponent_Factory(t) { return new (t || RangeSliderComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nRangeSliderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RangeSliderComponent, selectors: [[\"kendo-rangeslider\"]], viewQuery: function RangeSliderComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c14, 7);\n ɵngcc0.ɵɵviewQuery(_c15, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.draghandleStart = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.draghandleEnd = _t.first);\n } }, inputs: { value: \"value\" }, exportAs: [\"kendoRangeSlider\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rangeslider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RangeSliderComponent_1) },\n { provide: KendoInput, useExisting: forwardRef(() => RangeSliderComponent_1) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 33, consts: function () { let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **Start** drag handle of the Slider.\n * @meaning kendo.rangeslider.dragHandleStart\n */\n const MSG_EXTERNAL_1512034289801794423$$DIST_FESM2015_INDEX_JS_17 = goog.getMsg(\"Drag\");\n i18n_16 = MSG_EXTERNAL_1512034289801794423$$DIST_FESM2015_INDEX_JS_17;\n }\n else {\n i18n_16 = $localize `:kendo.rangeslider.dragHandleStart|The title of the **Start** drag handle of the Slider.␟4487c64285c2d8cdb336be783b6cb9304ce86007␟1512034289801794423:Drag`;\n } let i18n_18; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **End** drag handle of the Slider.\n * @meaning kendo.rangeslider.dragHandleEnd\n */\n const MSG_EXTERNAL_6915505327582510906$$DIST_FESM2015_INDEX_JS_19 = goog.getMsg(\"Drag\");\n i18n_18 = MSG_EXTERNAL_6915505327582510906$$DIST_FESM2015_INDEX_JS_19;\n }\n else {\n i18n_18 = $localize `:kendo.rangeslider.dragHandleEnd|The title of the **End** drag handle of the Slider.␟d6af522570cc1aff06104cee4b7780d6835e01d1␟6915505327582510906:Drag`;\n } return [[\"kendoSliderLocalizedMessages\", \"\", \"dragHandleStart\", i18n_16, \"dragHandleEnd\", i18n_18], [1, \"k-slider-wrap\", 3, \"kendoEventsOutsideAngular\"], [\"wrap\", \"\"], [\"kendoSliderTicks\", \"\", 3, \"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\", 4, \"ngIf\"], [1, \"k-slider-track\"], [\"track\", \"\"], [1, \"k-slider-selection\"], [\"sliderSelection\", \"\"], [\"role\", \"slider\", \"kendoDraggable\", \"\", 1, \"k-draghandle\", 3, \"id\", \"title\", \"kendoPress\", \"kendoDrag\", \"kendoRelease\"], [\"draghandleStart\", \"\"], [\"draghandleEnd\", \"\"], [3, \"resize\"], [\"kendoSliderTicks\", \"\", 3, \"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\"], [\"ticks\", \"\"]]; }, template: function RangeSliderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵtemplate(3, RangeSliderComponent_ul_3_Template, 2, 8, \"ul\", 3);\n ɵngcc0.ɵɵelementStart(4, \"div\", 4, 5);\n ɵngcc0.ɵɵelement(6, \"div\", 6, 7);\n ɵngcc0.ɵɵelementStart(8, \"a\", 8, 9);\n ɵngcc0.ɵɵlistener(\"kendoPress\", function RangeSliderComponent_Template_a_kendoPress_8_listener($event) { return ctx.ifEnabled(ctx.handleDragPress, $event); })(\"kendoDrag\", function RangeSliderComponent_Template_a_kendoDrag_8_listener($event) { return ctx.ifEnabled(ctx.onHandleDrag, $event); })(\"kendoRelease\", function RangeSliderComponent_Template_a_kendoRelease_8_listener($event) { return ctx.ifEnabled(ctx.onHandleRelease, $event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"a\", 8, 10);\n ɵngcc0.ɵɵlistener(\"kendoPress\", function RangeSliderComponent_Template_a_kendoPress_10_listener($event) { return ctx.ifEnabled(ctx.handleDragPress, $event); })(\"kendoDrag\", function RangeSliderComponent_Template_a_kendoDrag_10_listener($event) { return ctx.ifEnabled(ctx.onHandleDrag, $event); })(\"kendoRelease\", function RangeSliderComponent_Template_a_kendoRelease_10_listener($event) { return ctx.ifEnabled(ctx.onHandleRelease, $event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(12, \"kendo-resize-sensor\", 11);\n ɵngcc0.ɵɵlistener(\"resize\", function RangeSliderComponent_Template_kendo_resize_sensor_resize_12_listener() { return ctx.sizeComponent(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-slider-topleft\", ctx.tickPlacement === \"before\")(\"k-slider-bottomright\", ctx.tickPlacement === \"after\");\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(30, _c13, ctx.onWrapClick, ctx.onKeyDown));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.tickPlacement !== \"none\");\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx.isDisabled ? \"\" : \"none\");\n ɵngcc0.ɵɵproperty(\"id\", ctx.startHandleId)(\"title\", ctx.textFor(\"dragHandleStart\"));\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.disabled ? undefined : ctx.tabindex)(\"aria-valuemin\", ctx.min)(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.value ? ctx.value[0] : null)(\"aria-valuetext\", ctx.valueText)(\"aria-disabled\", ctx.disabled ? true : undefined)(\"aria-readonly\", ctx.readonly ? true : undefined)(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx.isDisabled ? \"\" : \"none\");\n ɵngcc0.ɵɵproperty(\"id\", ctx.endHandleId)(\"title\", ctx.textFor(\"dragHandleEnd\"));\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.disabled ? undefined : ctx.tabindex)(\"aria-valuemin\", ctx.min)(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.value ? ctx.value[1] : null)(\"aria-valuetext\", ctx.valueText)(\"aria-disabled\", ctx.disabled ? true : undefined)(\"aria-readonly\", ctx.readonly ? true : undefined)(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\");\n } }, directives: function () { return [LocalizedRangeSliderMessagesDirective, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf, SliderTicksComponent, ɵngcc2.DraggableDirective, ɵngcc2.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], RangeSliderComponent.prototype, \"value\", void 0);\n__decorate([\n ViewChild('draghandleStart', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], RangeSliderComponent.prototype, \"draghandleStart\", void 0);\n__decorate([\n ViewChild('draghandleEnd', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], RangeSliderComponent.prototype, \"draghandleEnd\", void 0);\nRangeSliderComponent = RangeSliderComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n Injector,\n Renderer2,\n NgZone,\n ChangeDetectorRef,\n ElementRef])\n], RangeSliderComponent);\n\nvar SwitchComponent_1;\nconst FOCUSED = 'k-state-focused';\n/**\n * Represents the [Kendo UI Switch component for Angular]({% slug overview_switch %}).\n */\nlet SwitchComponent = SwitchComponent_1 = class 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(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.onBlur = new EventEmitter(); //tslint:disable-line:no-output-rename\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._checked = false;\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n /**\n * @hidden\n */\n this.handleFocus = () => {\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 = () => {\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 * @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 ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.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.wrapper) {\n return;\n }\n this.wrapper.nativeElement.focus();\n }\n /**\n * Blurs the Switch.\n */\n blur() {\n if (!this.wrapper) {\n return;\n }\n this.wrapper.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 TextBoxContainer 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 element = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(element, FOCUSED);\n }\n else {\n this.renderer.removeClass(element, FOCUSED);\n }\n this.isFocused = value;\n }\n }\n setHostClasses(value) {\n if (value) {\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-switch-off');\n this.renderer.addClass(this.hostElement.nativeElement, 'k-switch-on');\n }\n else {\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-switch-on');\n this.renderer.addClass(this.hostElement.nativeElement, 'k-switch-off');\n }\n }\n};\nSwitchComponent.ɵfac = function SwitchComponent_Factory(t) { return new (t || SwitchComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nSwitchComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SwitchComponent, selectors: [[\"kendo-switch\"]], viewQuery: function SwitchComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c20, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n } }, hostVars: 9, hostBindings: function SwitchComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction)(\"aria-disabled\", ctx.ariaDisabled)(\"aria-readonly\", ctx.ariaReadonly);\n ɵngcc0.ɵɵclassProp(\"k-switch\", ctx.hostClasses)(\"k-ie\", ctx.ieClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", checked: \"checked\", tabIndex: \"tabIndex\", onLabel: \"onLabel\", offLabel: \"offLabel\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, exportAs: [\"kendoSwitch\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.switch' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent_1) /* tslint:disable-line */\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => SwitchComponent_1)\n }\n ])], decls: 8, vars: 17, consts: function () { let i18n_21; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The **On** label of the Switch.\n * @meaning kendo.switch.on\n */\n const MSG_EXTERNAL_818154782831456441$$DIST_FESM2015_INDEX_JS_22 = goog.getMsg(\"ON\");\n i18n_21 = MSG_EXTERNAL_818154782831456441$$DIST_FESM2015_INDEX_JS_22;\n }\n else {\n i18n_21 = $localize `:kendo.switch.on|The **On** label of the Switch.␟155f0a38198ffbf0429c5dbf9765e74f246a8617␟818154782831456441:ON`;\n } let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The **Off** label of the Switch.\n * @meaning kendo.switch.off\n */\n const MSG_EXTERNAL_759820891948194060$$DIST_FESM2015_INDEX_JS_24 = goog.getMsg(\"OFF\");\n i18n_23 = MSG_EXTERNAL_759820891948194060$$DIST_FESM2015_INDEX_JS_24;\n }\n else {\n i18n_23 = $localize `:kendo.switch.off|The **Off** label of the Switch.␟79df1a6d2b35c32b2948e3cee56dd3ffe28127bc␟759820891948194060:OFF`;\n } return [[\"kendoSwitchLocalizedMessages\", \"\", \"on\", i18n_21, \"off\", i18n_23], [\"role\", \"switch\", 1, \"k-switch-container\", 3, \"id\", \"kendoEventsOutsideAngular\"], [\"wrapper\", \"\"], [1, \"k-switch-label-on\"], [1, \"k-switch-label-off\"], [1, \"k-switch-handle\"]]; }, template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelementStart(3, \"span\", 3);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"span\", 4);\n ɵngcc0.ɵɵtext(6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(7, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transition-duration\", ctx.initialized ? \"200ms\" : \"0ms\");\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction4(12, _c25, ctx.clickHandler, ctx.keyDownHandler, ctx.handleFocus, ctx.handleBlur));\n ɵngcc0.ɵɵattribute(\"aria-checked\", ctx.checked)(\"tabindex\", ctx.disabled ? undefined : ctx.tabIndex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.onLabelMessage);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.offLabelMessage);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transition-duration\", ctx.initialized ? \"200ms\" : \"0ms\");\n } }, directives: function () { return [LocalizedSwitchMessagesDirective, ɵngcc2.EventsOutsideAngularDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SwitchComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SwitchComponent.prototype, \"onLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SwitchComponent.prototype, \"offLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], SwitchComponent.prototype, \"checked\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SwitchComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SwitchComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SwitchComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], SwitchComponent.prototype, \"tabIndex\", null);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], SwitchComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], SwitchComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SwitchComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", Object)\n], SwitchComponent.prototype, \"wrapper\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], SwitchComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-ie'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SwitchComponent.prototype, \"ieClass\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SwitchComponent.prototype, \"ariaDisabled\", null);\n__decorate([\n HostBinding('attr.aria-readonly'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SwitchComponent.prototype, \"ariaReadonly\", null);\n__decorate([\n HostBinding('class.k-switch'),\n __metadata(\"design:type\", Boolean)\n], SwitchComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SwitchComponent.prototype, \"disabledClass\", null);\nSwitchComponent = SwitchComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n LocalizationService,\n Injector,\n ChangeDetectorRef,\n NgZone])\n], SwitchComponent);\n\nvar TextAreaDirective_1;\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 */\nlet TextAreaDirective = TextAreaDirective_1 = class 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.elementClass = 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.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 = function TextAreaDirective_Factory(t) { return new (t || TextAreaDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(RTL, 8)); };\nTextAreaDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextAreaDirective, selectors: [[\"textarea\", \"kendoTextArea\", \"\"]], hostVars: 5, hostBindings: function TextAreaDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-textarea\", ctx.elementClass)(\"k-autofill\", ctx.autofillClass);\n } }, inputs: { autoSize: \"autoSize\", value: \"value\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaDirective_1),\n multi: true\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => TextAreaDirective_1)\n }]), ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n HostBinding('class.k-textarea'),\n __metadata(\"design:type\", Boolean)\n], TextAreaDirective.prototype, \"elementClass\", void 0);\n__decorate([\n HostBinding('class.k-autofill'),\n __metadata(\"design:type\", Boolean)\n], TextAreaDirective.prototype, \"autofillClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TextAreaDirective.prototype, \"direction\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextAreaDirective.prototype, \"valueChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextAreaDirective.prototype, \"autoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextAreaDirective.prototype, \"value\", void 0);\nTextAreaDirective = TextAreaDirective_1 = __decorate([ __param(5, Optional()), __param(5, Inject(RTL)),\n __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n NgZone,\n ChangeDetectorRef,\n Injector, Boolean])\n], TextAreaDirective);\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 * @hidden\n */\nlet TextBoxContainerComponent = class TextBoxContainerComponent {\n constructor(elementRef, renderer, changeDetectorRef, rtl) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.changeDetectorRef = changeDetectorRef;\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 this._subscriptions = [];\n this.autoFillStarted = false;\n this.direction = rtl ? 'rtl' : 'ltr';\n this.renderer.removeAttribute(this.elementRef.nativeElement, \"id\");\n }\n get hostClasses() {\n return true;\n }\n get textareaElementClass() {\n return !!this.textarea;\n }\n get focusedClass() {\n return this.focused;\n }\n get invalidClass() {\n return this.invalid;\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n if (!this.formControl && !this.kendoInput) {\n if (isDevMode()) {\n throw new Error(\"The TextBoxContainer requires a Kendo Input component\" +\n \" or a forms-bound component to function properly.\");\n }\n return;\n }\n // add focus/blur/valueChange handlers\n const control = new FloatingLabelInputAdapter(this.kendoInput || this.formControl.valueAccessor, this.formControl);\n const setFocus = (isFocused) => () => {\n this.focused = isFocused;\n this.updateState();\n };\n this.subscribe(control, 'onFocus', setFocus(true));\n this.subscribe(control, 'onBlur', setFocus(false));\n this.subscribe(control, 'autoFillStart', () => {\n this.autoFillStarted = true;\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-state-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-state-empty');\n }\n }\n });\n const updateState = () => this.updateState();\n updateState();\n this.subscribe(control, 'onValueChange', updateState);\n // set label id for floating label\n if (this.id && control.focusableId) {\n // input wins\n this.id = control.focusableId;\n }\n else if (this.id) {\n control.focusableId = this.id;\n }\n else if (control.focusableId) {\n this.id = control.focusableId;\n }\n else {\n const id = \"_\" + guid();\n control.focusableId = id;\n this.id = id;\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this._subscriptions.forEach(s => s.unsubscribe());\n this._subscriptions = [];\n }\n subscribe(control, eventName, handler) {\n if (control[eventName] instanceof EventEmitter) {\n const subscription = control[eventName].subscribe(handler);\n this._subscriptions.push(subscription);\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-state-empty');\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-state-empty');\n }\n this.changeDetectorRef.markForCheck();\n }\n};\nTextBoxContainerComponent.ɵfac = function TextBoxContainerComponent_Factory(t) { return new (t || TextBoxContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(RTL, 8)); };\nTextBoxContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextBoxContainerComponent, selectors: [[\"kendo-textbox-container\"]], contentQueries: function TextBoxContainerComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, KendoInput, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TextAreaDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgControl, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.kendoInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textarea = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.formControl = _t.first);\n } }, hostVars: 9, hostBindings: function TextBoxContainerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-textbox-container\", ctx.hostClasses)(\"k-textarea-wrapper\", ctx.textareaElementClass)(\"k-state-focused\", ctx.focusedClass)(\"k-state-invalid\", ctx.invalidClass);\n } }, inputs: { id: \"id\", floatingLabel: \"floatingLabel\" }, ngContentSelectors: _c26, decls: 2, vars: 1, consts: [[\"class\", \"k-label\", 3, \"for\", 4, \"ngIf\"], [1, \"k-label\", 3, \"for\"]], template: function TextBoxContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, TextBoxContainerComponent_label_1_Template, 2, 2, \"label\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.floatingLabel);\n } }, directives: [ɵngcc3.NgIf], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-textbox-container'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxContainerComponent.prototype, \"hostClasses\", null);\n__decorate([\n HostBinding('class.k-textarea-wrapper'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxContainerComponent.prototype, \"textareaElementClass\", null);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxContainerComponent.prototype, \"focusedClass\", null);\n__decorate([\n HostBinding('class.k-state-invalid'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxContainerComponent.prototype, \"invalidClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TextBoxContainerComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxContainerComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxContainerComponent.prototype, \"floatingLabel\", void 0);\n__decorate([\n ContentChild(KendoInput, { static: false }),\n __metadata(\"design:type\", Object)\n], TextBoxContainerComponent.prototype, \"kendoInput\", void 0);\n__decorate([\n ContentChild(TextAreaDirective, { static: false }),\n __metadata(\"design:type\", TextAreaDirective)\n], TextBoxContainerComponent.prototype, \"textarea\", void 0);\n__decorate([\n ContentChild(NgControl, { static: false }),\n __metadata(\"design:type\", NgControl)\n], TextBoxContainerComponent.prototype, \"formControl\", void 0);\nTextBoxContainerComponent = __decorate([ __param(3, Optional()), __param(3, Inject(RTL)),\n __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ChangeDetectorRef, Boolean])\n], TextBoxContainerComponent);\n\nvar TextBoxDirective_1;\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 */\nlet TextBoxDirective = TextBoxDirective_1 = class TextBoxDirective {\n constructor(renderer, inputElement, ngZone) {\n this.renderer = renderer;\n this.inputElement = inputElement;\n this.ngZone = ngZone;\n this.hostClass = 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 = function TextBoxDirective_Factory(t) { return new (t || TextBoxDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nTextBoxDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextBoxDirective, selectors: [[\"input\", \"kendoTextBox\", \"\"]], hostVars: 2, hostBindings: function TextBoxDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-textbox\", ctx.hostClass);\n } }, inputs: { value: \"value\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: KendoInput,\n useExisting: forwardRef(() => TextBoxDirective_1)\n }])] });\n__decorate([\n HostBinding('class.k-textbox'),\n __metadata(\"design:type\", Boolean)\n], TextBoxDirective.prototype, \"hostClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], TextBoxDirective.prototype, \"value\", null);\nTextBoxDirective = TextBoxDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n NgZone])\n], TextBoxDirective);\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 = (_) => { }; // tslint: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\nvar NumericTextBoxComponent_1;\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$1 = 'k-state-focused';\nconst FORMATTED_VALUE = 'k-formatted-value';\n/**\n * Represents the [Kendo UI NumericTextBox component for Angular]({% slug overview_numerictextbox %}).\n */\nlet NumericTextBoxComponent = NumericTextBoxComponent_1 = class 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.inputValue = '';\n this.minValidateFn = noop;\n this.maxValidateFn = noop;\n this._format = \"n2\";\n this.isPasted = false;\n this.mouseDown = false;\n this.ngChange = noop;\n this.ngTouched = noop;\n this.ngValidatorChange = noop;\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 get widgetClasses() {\n return true;\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 }\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 }\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.numericWrap) {\n const wrap = this.numericWrap.nativeElement;\n const input = this.numericInput.nativeElement;\n if (value) {\n this.renderer.addClass(wrap, FOCUSED$1);\n if (!this.isDisabled) {\n this.renderer.removeClass(input, FORMATTED_VALUE);\n }\n }\n else {\n this.renderer.removeClass(wrap, FOCUSED$1);\n this.renderer.addClass(input, FORMATTED_VALUE);\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 = 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};\nNumericTextBoxComponent.ɵfac = function NumericTextBoxComponent_Factory(t) { return new (t || NumericTextBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.IntlService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNumericTextBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NumericTextBoxComponent, selectors: [[\"kendo-numerictextbox\"]], viewQuery: function NumericTextBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c27, 7);\n ɵngcc0.ɵɵviewQuery(_c28, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.numericInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.numericWrap = _t.first);\n } }, hostVars: 5, hostBindings: function NumericTextBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-numerictextbox\", ctx.widgetClasses);\n } }, inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", autoCorrect: \"autoCorrect\", decimals: \"decimals\", step: \"step\", spinners: \"spinners\", rangeValidation: \"rangeValidation\", tabindex: \"tabindex\", changeValueOnScroll: \"changeValueOnScroll\", selectOnFocus: \"selectOnFocus\", value: \"value\", format: \"format\", tabIndex: \"tabIndex\", max: \"max\", min: \"min\", placeholder: \"placeholder\", maxlength: \"maxlength\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoNumericTextBox\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent_1) }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 6, vars: 26, consts: function () { let i18n_29; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Increment** button in the NumericTextBox\n * @meaning kendo.numerictextbox.increment\n */\n const MSG_EXTERNAL_4467784268438010275$$DIST_FESM2015_INDEX_JS_30 = goog.getMsg(\"Increase value\");\n i18n_29 = MSG_EXTERNAL_4467784268438010275$$DIST_FESM2015_INDEX_JS_30;\n }\n else {\n i18n_29 = $localize `:kendo.numerictextbox.increment|The title for the **Increment** button in the NumericTextBox␟0fc68540ffa04fdc246cf6cf8a1fed085f8b19a5␟4467784268438010275:Increase value`;\n } let i18n_31; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Decrement** button in the NumericTextBox\n * @meaning kendo.numerictextbox.decrement\n */\n const MSG_EXTERNAL_3960022057994897997$$DIST_FESM2015_INDEX_JS_32 = goog.getMsg(\"Decrease value\");\n i18n_31 = MSG_EXTERNAL_3960022057994897997$$DIST_FESM2015_INDEX_JS_32;\n }\n else {\n i18n_31 = $localize `:kendo.numerictextbox.decrement|The title for the **Decrement** button in the NumericTextBox␟df4751834075bf970c77d0da2c960b4e19a6b0dd␟3960022057994897997:Decrease value`;\n } return [[\"kendoNumericTextBoxLocalizedMessages\", \"\", \"increment\", i18n_29, \"decrement\", i18n_31], [1, \"k-numeric-wrap\", 3, \"kendoEventsOutsideAngular\"], [\"numericWrap\", \"\"], [\"role\", \"spinbutton\", \"autocomplete\", \"off\", \"autocorrect\", \"off\", 1, \"k-input\", \"k-formatted-value\", 3, \"id\", \"tabindex\", \"disabled\", \"readonly\", \"kendoEventsOutsideAngular\"], [\"numericInput\", \"\"], [\"class\", \"k-select\", 3, \"kendoEventsOutsideAngular\", 4, \"ngIf\"], [1, \"k-select\", 3, \"kendoEventsOutsideAngular\"], [\"role\", \"button\", 1, \"k-link\", \"k-link-increase\", 3, \"kendoEventsOutsideAngular\", \"title\"], [1, \"k-icon\", \"k-i-arrow-n\"], [\"role\", \"button\", 1, \"k-link\", \"k-link-decrease\", 3, \"kendoEventsOutsideAngular\", \"title\"], [1, \"k-icon\", \"k-i-arrow-s\"]]; }, template: function NumericTextBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵelement(3, \"input\", 3, 4);\n ɵngcc0.ɵɵtemplate(5, NumericTextBoxComponent_span_5_Template, 5, 18, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction2(15, _c35, ctx.handleWheel, ctx.handleWheel));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"tabindex\", ctx.tabIndex)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction7(18, _c36, ctx.handleMouseDown, ctx.handleDragEnter, ctx.handleKeyDown, ctx.handleInput, ctx.handleFocus, ctx.handleBlur, ctx.handlePaste));\n ɵngcc0.ɵɵattribute(\"aria-valuemin\", ctx.min)(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.value)(\"title\", ctx.title)(\"placeholder\", ctx.placeholder)(\"maxLength\", ctx.maxlength);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n } }, directives: function () { return [LocalizedNumericTextBoxMessagesDirective, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgIf]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"autoCorrect\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], NumericTextBoxComponent.prototype, \"format\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"decimals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"spinners\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"rangeValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], NumericTextBoxComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"changeValueOnScroll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NumericTextBoxComponent.prototype, \"selectOnFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NumericTextBoxComponent.prototype, \"maxlength\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], NumericTextBoxComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], NumericTextBoxComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], NumericTextBoxComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ViewChild('numericInput', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], NumericTextBoxComponent.prototype, \"numericInput\", void 0);\n__decorate([\n ViewChild('numericWrap', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], NumericTextBoxComponent.prototype, \"numericWrap\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], NumericTextBoxComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-numerictextbox'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], NumericTextBoxComponent.prototype, \"widgetClasses\", null);\nNumericTextBoxComponent = NumericTextBoxComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [IntlService,\n Renderer2,\n LocalizationService,\n Injector,\n NgZone,\n ChangeDetectorRef,\n ElementRef])\n], NumericTextBoxComponent);\n\n/**\n * @hidden\n */\nclass NumericTextBoxMessages extends ComponentMessages {\n}\nNumericTextBoxMessages.ɵfac = /*@__PURE__*/ function () { let ɵNumericTextBoxMessages_BaseFactory; return function NumericTextBoxMessages_Factory(t) { return (ɵNumericTextBoxMessages_BaseFactory || (ɵNumericTextBoxMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NumericTextBoxMessages)))(t || NumericTextBoxMessages); }; }();\nNumericTextBoxMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NumericTextBoxMessages, inputs: { decrement: \"decrement\", increment: \"increment\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxMessages.prototype, \"decrement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NumericTextBoxMessages.prototype, \"increment\", void 0);\n\nvar NumericTextBoxCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet NumericTextBoxCustomMessagesComponent = NumericTextBoxCustomMessagesComponent_1 = class NumericTextBoxCustomMessagesComponent extends NumericTextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nNumericTextBoxCustomMessagesComponent.ɵfac = function NumericTextBoxCustomMessagesComponent_Factory(t) { return new (t || NumericTextBoxCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nNumericTextBoxCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NumericTextBoxCustomMessagesComponent, selectors: [[\"kendo-numerictextbox-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => NumericTextBoxCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function NumericTextBoxCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nNumericTextBoxCustomMessagesComponent = NumericTextBoxCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], NumericTextBoxCustomMessagesComponent);\n\n/**\n * @hidden\n */\nvar ResultType;\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\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 */\nlet MaskingService = class MaskingService {\n /**\n * @hidden\n */\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: mask$$1 = '', prompt = '', promptPlaceholder = ' ', rules = {}, includeLiterals = false }) {\n this.mask = mask$$1;\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$$1 = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take$$1))\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 = function MaskingService_Factory(t) { return new (t || MaskingService)(); };\nMaskingService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MaskingService, factory: function (t) { return MaskingService.ɵfac(t); } });\n\nvar MaskedTextBoxComponent_1;\nconst resolvedPromise = Promise.resolve(null);\nconst FOCUSED$2 = 'k-state-focused';\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 */\nlet MaskedTextBoxComponent = MaskedTextBoxComponent_1 = class 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 this.hostClasses = true;\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(); //tslint:disable-line:no-output-rename\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(); //tslint:disable-line:no-output-rename\n /**\n * Fires each time the value changes.\n */\n this.valueChange = new EventEmitter();\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 /**\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 get hostDisabledClass() {\n return this.disabled;\n }\n /**\n * Exposes the RegExp-based mask validation array ([see example]({% slug masks_maskedtextbox %})).\n */\n get rules() {\n return this._rules || this.defaultRules;\n }\n set rules(value) {\n this._rules = Object.assign({}, this.defaultRules, value);\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\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 /**\n * @hidden\n * Used by the TextBoxContainer 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.updateValue(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.updateValue(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 if (isChanged('value', changes)) {\n const maskedValue = this.service.maskRaw(this.value);\n if (maskedValue !== this.maskedValue) {\n this.updateInput(maskedValue);\n }\n }\n else if (anyChanged(['promptPlaceholder', 'includeLiterals'], changes)) {\n resolvedPromise.then(() => {\n this.updateValue(this.maskedValue);\n });\n }\n else {\n this.updateInput(this.service.maskRaw(this.value));\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 }\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 updateValue(maskedValue) {\n if (this.mask && !this.service.validationValue(maskedValue)) {\n this.value = '';\n }\n else {\n this.value = this.service.rawValue(maskedValue);\n }\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n }\n updateInput(maskedValue = '', selection) {\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 }, {}); // tslint:disable-line:align\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); // tslint:disable-line:align\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};\nMaskedTextBoxComponent.ɵfac = function MaskedTextBoxComponent_Factory(t) { return new (t || MaskedTextBoxComponent)(ɵngcc0.ɵɵdirectiveInject(MaskingService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(RTL, 8)); };\nMaskedTextBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MaskedTextBoxComponent, selectors: [[\"kendo-maskedtextbox\"]], viewQuery: function MaskedTextBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c37, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, hostVars: 7, hostBindings: function MaskedTextBoxComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"paste\", function MaskedTextBoxComponent_paste_HostBindingHandler($event) { return ctx.pasteHandler($event); })(\"input\", function MaskedTextBoxComponent_input_HostBindingHandler($event) { return ctx.inputHandler($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-maskedtextbox\", ctx.hostClasses)(\"k-state-disabled\", ctx.hostDisabledClass);\n } }, inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", prompt: \"prompt\", promptPlaceholder: \"promptPlaceholder\", includeLiterals: \"includeLiterals\", maskOnFocus: \"maskOnFocus\", maskValidation: \"maskValidation\", tabindex: \"tabindex\", rules: \"rules\", tabIndex: \"tabIndex\", value: \"value\", title: \"title\", mask: \"mask\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, exportAs: [\"kendoMaskedTextBox\"], features: [ɵngcc0.ɵɵProvidersFeature([\n MaskingService,\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1) /* tslint:disable-line */\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1) /* tslint:disable-line */\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 12, consts: [[\"type\", \"text\", \"autocomplete\", \"off\", \"autocorrect\", \"off\", \"autocapitalize\", \"off\", \"spellcheck\", \"false\", 1, \"k-textbox\", 3, \"id\", \"tabindex\", \"disabled\", \"readonly\", \"kendoEventsOutsideAngular\"], [\"input\", \"\"]], template: function MaskedTextBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"input\", 0, 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"tabindex\", ctx.tabIndex)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction5(6, _c38, ctx.handleFocus, ctx.handleBlur, ctx.handleClick, ctx.handleDragDrop, ctx.handleDragDrop));\n ɵngcc0.ɵɵattribute(\"title\", ctx.title);\n } }, directives: [ɵngcc2.EventsOutsideAngularDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"title\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-maskedtextbox'),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], MaskedTextBoxComponent.prototype, \"hostDisabledClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"mask\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], MaskedTextBoxComponent.prototype, \"rules\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"prompt\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MaskedTextBoxComponent.prototype, \"promptPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"includeLiterals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"maskOnFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MaskedTextBoxComponent.prototype, \"maskValidation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MaskedTextBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], MaskedTextBoxComponent.prototype, \"tabIndex\", null);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], MaskedTextBoxComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], MaskedTextBoxComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MaskedTextBoxComponent.prototype, \"valueChange\", void 0);\n__decorate([\n ViewChild('input', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], MaskedTextBoxComponent.prototype, \"input\", void 0);\n__decorate([\n HostListener('paste', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MaskedTextBoxComponent.prototype, \"pasteHandler\", null);\n__decorate([\n HostListener('input', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MaskedTextBoxComponent.prototype, \"inputHandler\", null);\nMaskedTextBoxComponent = MaskedTextBoxComponent_1 = __decorate([ __param(6, Optional()), __param(6, Inject(RTL)),\n __metadata(\"design:paramtypes\", [MaskingService,\n Renderer2,\n ElementRef,\n NgZone,\n Injector,\n ChangeDetectorRef, Boolean])\n], MaskedTextBoxComponent);\n\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 */\nlet SliderTicksComponent = class SliderTicksComponent {\n constructor(rtl) {\n this.rtl = rtl;\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 (this.rtl || this.vertical) {\n result = result.reverse();\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 = function SliderTicksComponent_Factory(t) { return new (t || SliderTicksComponent)(ɵngcc0.ɵɵdirectiveInject(RTL, 8)); };\nSliderTicksComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SliderTicksComponent, selectors: [[\"\", \"kendoSliderTicks\", \"\"]], viewQuery: function SliderTicksComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c39, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tickElements = _t);\n } }, hostVars: 2, hostBindings: function SliderTicksComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.wrapperClasses);\n } }, inputs: { tickTitle: \"tickTitle\", vertical: \"vertical\", step: \"step\", largeStep: \"largeStep\", min: \"min\", max: \"max\", labelTemplate: \"labelTemplate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c40, decls: 3, vars: 1, consts: [[\"role\", \"presentation\", 3, \"ngClass\", \"title\", 4, \"ngFor\", \"ngForOf\"], [\"defaultLabel\", \"\"], [\"role\", \"presentation\", 3, \"ngClass\", \"title\"], [\"tickElement\", \"\"], [3, \"ngSwitch\"], [\"class\", \"k-label\", 4, \"ngSwitchCase\"], [4, \"ngSwitchCase\"], [1, \"k-label\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function SliderTicksComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, SliderTicksComponent_li_0_Template, 5, 5, \"li\", 0);\n ɵngcc0.ɵɵtemplate(1, SliderTicksComponent_ng_template_1_Template, 1, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n } }, directives: [ɵngcc3.NgForOf, ɵngcc3.NgClass, ɵngcc3.NgSwitch, ɵngcc3.NgSwitchCase, ɵngcc3.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n HostBinding('class'),\n __metadata(\"design:type\", String)\n], SliderTicksComponent.prototype, \"wrapperClasses\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], SliderTicksComponent.prototype, \"tickTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SliderTicksComponent.prototype, \"vertical\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderTicksComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderTicksComponent.prototype, \"largeStep\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderTicksComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SliderTicksComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], SliderTicksComponent.prototype, \"labelTemplate\", void 0);\n__decorate([\n ViewChildren('tickElement'),\n __metadata(\"design:type\", QueryList)\n], SliderTicksComponent.prototype, \"tickElements\", void 0);\nSliderTicksComponent = __decorate([ __param(0, Optional()), __param(0, Inject(RTL)),\n __metadata(\"design:paramtypes\", [Boolean])\n], SliderTicksComponent);\n\n/**\n * @hidden\n */\nlet SlidersCommonModule = class SlidersCommonModule {\n};\nSlidersCommonModule.ɵfac = function SlidersCommonModule_Factory(t) { return new (t || SlidersCommonModule)(); };\nSlidersCommonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SlidersCommonModule });\nSlidersCommonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, DraggableModule, EventsModule, ResizeSensorModule], DraggableModule,\n EventsModule,\n ResizeSensorModule] });\n\n/**\n * @hidden\n */\nclass SliderMessages extends ComponentMessages {\n}\nSliderMessages.ɵfac = /*@__PURE__*/ function () { let ɵSliderMessages_BaseFactory; return function SliderMessages_Factory(t) { return (ɵSliderMessages_BaseFactory || (ɵSliderMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(SliderMessages)))(t || SliderMessages); }; }();\nSliderMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderMessages, inputs: { decrement: \"decrement\", increment: \"increment\", dragHandle: \"dragHandle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderMessages.prototype, \"decrement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderMessages.prototype, \"increment\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SliderMessages.prototype, \"dragHandle\", void 0);\n\nvar LocalizedSliderMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedSliderMessagesDirective = LocalizedSliderMessagesDirective_1 = class LocalizedSliderMessagesDirective extends SliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedSliderMessagesDirective.ɵfac = function LocalizedSliderMessagesDirective_Factory(t) { return new (t || LocalizedSliderMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedSliderMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedSliderMessagesDirective, selectors: [[\"\", \"kendoSliderLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => LocalizedSliderMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedSliderMessagesDirective = LocalizedSliderMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedSliderMessagesDirective);\n\nvar SliderCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet SliderCustomMessagesComponent = SliderCustomMessagesComponent_1 = class SliderCustomMessagesComponent extends SliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nSliderCustomMessagesComponent.ɵfac = function SliderCustomMessagesComponent_Factory(t) { return new (t || SliderCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nSliderCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SliderCustomMessagesComponent, selectors: [[\"kendo-slider-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => SliderCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SliderCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nSliderCustomMessagesComponent = SliderCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], SliderCustomMessagesComponent);\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 */\nlet SliderModule = class SliderModule {\n};\nSliderModule.ɵfac = function SliderModule_Factory(t) { return new (t || SliderModule)(); };\nSliderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SliderModule });\nSliderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, SlidersCommonModule]] });\n\n/**\n * @hidden\n */\nclass RangeSliderMessages extends ComponentMessages {\n}\nRangeSliderMessages.ɵfac = /*@__PURE__*/ function () { let ɵRangeSliderMessages_BaseFactory; return function RangeSliderMessages_Factory(t) { return (ɵRangeSliderMessages_BaseFactory || (ɵRangeSliderMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(RangeSliderMessages)))(t || RangeSliderMessages); }; }();\nRangeSliderMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: RangeSliderMessages, inputs: { dragHandleStart: \"dragHandleStart\", dragHandleEnd: \"dragHandleEnd\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], RangeSliderMessages.prototype, \"dragHandleStart\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], RangeSliderMessages.prototype, \"dragHandleEnd\", void 0);\n\nvar LocalizedRangeSliderMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedRangeSliderMessagesDirective = LocalizedRangeSliderMessagesDirective_1 = class LocalizedRangeSliderMessagesDirective extends RangeSliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedRangeSliderMessagesDirective.ɵfac = function LocalizedRangeSliderMessagesDirective_Factory(t) { return new (t || LocalizedRangeSliderMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedRangeSliderMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedRangeSliderMessagesDirective, selectors: [[\"\", \"kendoSliderLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => LocalizedRangeSliderMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedRangeSliderMessagesDirective = LocalizedRangeSliderMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedRangeSliderMessagesDirective);\n\nvar RangeSliderCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet RangeSliderCustomMessagesComponent = RangeSliderCustomMessagesComponent_1 = class RangeSliderCustomMessagesComponent extends RangeSliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nRangeSliderCustomMessagesComponent.ɵfac = function RangeSliderCustomMessagesComponent_Factory(t) { return new (t || RangeSliderCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nRangeSliderCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RangeSliderCustomMessagesComponent, selectors: [[\"kendo-rangeslider-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => RangeSliderCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function RangeSliderCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nRangeSliderCustomMessagesComponent = RangeSliderCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], RangeSliderCustomMessagesComponent);\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 */\nlet RangeSliderModule = class RangeSliderModule {\n};\nRangeSliderModule.ɵfac = function RangeSliderModule_Factory(t) { return new (t || RangeSliderModule)(); };\nRangeSliderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: RangeSliderModule });\nRangeSliderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, SlidersCommonModule]] });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { on: \"on\", off: \"off\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"on\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"off\", void 0);\n\nvar LocalizedSwitchMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedSwitchMessagesDirective = LocalizedSwitchMessagesDirective_1 = class LocalizedSwitchMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedSwitchMessagesDirective.ɵfac = function LocalizedSwitchMessagesDirective_Factory(t) { return new (t || LocalizedSwitchMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedSwitchMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedSwitchMessagesDirective, selectors: [[\"\", \"kendoSwitchLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSwitchMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedSwitchMessagesDirective = LocalizedSwitchMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedSwitchMessagesDirective);\n\nvar SwitchCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet SwitchCustomMessagesComponent = SwitchCustomMessagesComponent_1 = class SwitchCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nSwitchCustomMessagesComponent.ɵfac = function SwitchCustomMessagesComponent_Factory(t) { return new (t || SwitchCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nSwitchCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SwitchCustomMessagesComponent, selectors: [[\"kendo-switch-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => SwitchCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SwitchCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nSwitchCustomMessagesComponent = SwitchCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], SwitchCustomMessagesComponent);\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 */\nlet SwitchModule = class SwitchModule {\n};\nSwitchModule.ɵfac = function SwitchModule_Factory(t) { return new (t || SwitchModule)(); };\nSwitchModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SwitchModule });\nSwitchModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule, ResizeSensorModule]] });\n\nvar LocalizedNumericTextBoxMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedNumericTextBoxMessagesDirective = LocalizedNumericTextBoxMessagesDirective_1 = class LocalizedNumericTextBoxMessagesDirective extends NumericTextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedNumericTextBoxMessagesDirective.ɵfac = function LocalizedNumericTextBoxMessagesDirective_Factory(t) { return new (t || LocalizedNumericTextBoxMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedNumericTextBoxMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedNumericTextBoxMessagesDirective, selectors: [[\"\", \"kendoNumericTextBoxLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => LocalizedNumericTextBoxMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedNumericTextBoxMessagesDirective = LocalizedNumericTextBoxMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedNumericTextBoxMessagesDirective);\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 */\nlet NumericTextBoxModule = class NumericTextBoxModule {\n};\nNumericTextBoxModule.ɵfac = function NumericTextBoxModule_Factory(t) { return new (t || NumericTextBoxModule)(); };\nNumericTextBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NumericTextBoxModule });\nNumericTextBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule]] });\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 */\nlet MaskedTextBoxModule = class MaskedTextBoxModule {\n};\nMaskedTextBoxModule.ɵfac = function MaskedTextBoxModule_Factory(t) { return new (t || MaskedTextBoxModule)(); };\nMaskedTextBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MaskedTextBoxModule });\nMaskedTextBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule]] });\n\n/**\n * Specifies the adornments in the suffix container ([see examples]({% slug adornments_textbox %}#toc-suffixadornments)).\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 */\nlet TextBoxSuffixTemplateDirective = class TextBoxSuffixTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nTextBoxSuffixTemplateDirective.ɵfac = function TextBoxSuffixTemplateDirective_Factory(t) { return new (t || TextBoxSuffixTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nTextBoxSuffixTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextBoxSuffixTemplateDirective, selectors: [[\"\", \"kendoTextBoxSuffixTemplate\", \"\"]] });\nTextBoxSuffixTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], TextBoxSuffixTemplateDirective);\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 */\nlet TextBoxPrefixTemplateDirective = class TextBoxPrefixTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nTextBoxPrefixTemplateDirective.ɵfac = function TextBoxPrefixTemplateDirective_Factory(t) { return new (t || TextBoxPrefixTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nTextBoxPrefixTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextBoxPrefixTemplateDirective, selectors: [[\"\", \"kendoTextBoxPrefixTemplate\", \"\"]] });\nTextBoxPrefixTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], TextBoxPrefixTemplateDirective);\n\nvar TextBoxComponent_1;\nconst FOCUSED$3 = 'k-state-focused';\nlet TextBoxComponent = TextBoxComponent_1 = class 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.hostClass = true;\n this._isFocused = false;\n this.focusChangedProgrammatically = false;\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 let incomingValue = ev.target.value;\n this.updateValue(incomingValue);\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\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 }\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 ? `k-text-success ${this.successIcon}`\n : `k-text-success k-icon k-i-check-outline`;\n }\n /**\n * @hidden\n */\n get errorIconClasses() {\n return this.errorIcon\n ? `k-text-error ${this.errorIcon}`\n : `k-text-error 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-close-circle`;\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$3);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$3);\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};\nTextBoxComponent.ɵfac = function TextBoxComponent_Factory(t) { return new (t || TextBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nTextBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextBoxComponent, selectors: [[\"kendo-textbox\"]], contentQueries: function TextBoxComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TextBoxSuffixTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TextBoxPrefixTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.suffixTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.prefixTemplate = _t.first);\n } }, viewQuery: function TextBoxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c37, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, hostVars: 5, hostBindings: function TextBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-textbox\", ctx.hostClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { focusableId: \"focusableId\", title: \"title\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", value: \"value\", selectOnFocus: \"selectOnFocus\", showSuccessIcon: \"showSuccessIcon\", showErrorIcon: \"showErrorIcon\", clearButton: \"clearButton\", tabIndex: \"tabIndex\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", clearButtonIcon: \"clearButtonIcon\", placeholder: \"placeholder\", maxlength: \"maxlength\" }, outputs: { valueChange: \"valueChange\", inputFocus: \"inputFocus\", inputBlur: \"inputBlur\", onFocus: \"focus\", onBlur: \"blur\" }, exportAs: [\"kendoTextBox\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textbox' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextBoxComponent_1),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent_1) }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 10, vars: 18, consts: function () { let i18n_41; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Clear** button in the TextBox.\n * @meaning kendo.textbox.clear\n */\n const MSG_EXTERNAL_2651889799249671820$$DIST_FESM2015_INDEX_JS_42 = goog.getMsg(\"Clear\");\n i18n_41 = MSG_EXTERNAL_2651889799249671820$$DIST_FESM2015_INDEX_JS_42;\n }\n else {\n i18n_41 = $localize `:kendo.textbox.clear|The title for the **Clear** button in the TextBox.␟e6edd360fd0d3c873c0d94a3aecd3c407d31da5a␟2651889799249671820:Clear`;\n } return [[\"kendoTextBoxLocalizedMessages\", \"\", \"clear\", i18n_41], [1, \"k-input-prefix\"], [4, \"ngIf\"], [1, \"k-input\", 3, \"id\", \"disabled\", \"readonly\", \"value\", \"kendoEventsOutsideAngular\"], [\"input\", \"\"], [1, \"k-input-suffix\"], [3, \"ngClass\", 4, \"ngIf\"], [\"role\", \"button\", \"class\", \"k-clear-value\", 3, \"tabindex\", \"title\", \"click\", \"mousedown\", \"keydown.enter\", \"keydown.space\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\"], [3, \"ngClass\"], [\"role\", \"button\", 1, \"k-clear-value\", 3, \"tabindex\", \"title\", \"click\", \"mousedown\", \"keydown.enter\", \"keydown.space\"]]; }, template: function TextBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1);\n ɵngcc0.ɵɵtemplate(2, TextBoxComponent_2_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"input\", 3, 4);\n ɵngcc0.ɵɵelementStart(5, \"span\", 5);\n ɵngcc0.ɵɵtemplate(6, TextBoxComponent_span_6_Template, 1, 1, \"span\", 6);\n ɵngcc0.ɵɵtemplate(7, TextBoxComponent_span_7_Template, 1, 1, \"span\", 6);\n ɵngcc0.ɵɵtemplate(8, TextBoxComponent_span_8_Template, 2, 4, \"span\", 7);\n ɵngcc0.ɵɵtemplate(9, TextBoxComponent_9_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"value\", ctx.value)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction3(14, _c43, ctx.handleInputFocus, ctx.handleInputBlur, ctx.handleInput));\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.disabled ? undefined : ctx.tabindex)(\"placeholder\", ctx.placeholder)(\"title\", ctx.title)(\"maxlength\", ctx.maxlength);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasErrors);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isSuccessful);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showClearButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate);\n } }, directives: function () { return [LocalizedTextBoxMessagesDirective, ɵngcc3.NgIf, ɵngcc3.NgTemplateOutlet, ɵngcc2.EventsOutsideAngularDirective, ɵngcc3.NgClass]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"selectOnFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TextBoxComponent.prototype, \"showSuccessIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TextBoxComponent.prototype, \"showErrorIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"successIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"errorIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"clearButtonIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], TextBoxComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextBoxComponent.prototype, \"maxlength\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"inputFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"inputBlur\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], TextBoxComponent.prototype, \"onBlur\", void 0);\n__decorate([\n ViewChild('input', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], TextBoxComponent.prototype, \"input\", void 0);\n__decorate([\n ContentChild(TextBoxSuffixTemplateDirective, { static: false }),\n __metadata(\"design:type\", TextBoxSuffixTemplateDirective)\n], TextBoxComponent.prototype, \"suffixTemplate\", void 0);\n__decorate([\n ContentChild(TextBoxPrefixTemplateDirective, { static: false }),\n __metadata(\"design:type\", TextBoxPrefixTemplateDirective)\n], TextBoxComponent.prototype, \"prefixTemplate\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextBoxComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('class.k-textbox'),\n __metadata(\"design:type\", Boolean)\n], TextBoxComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TextBoxComponent.prototype, \"direction\", void 0);\nTextBoxComponent = TextBoxComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n Injector,\n ElementRef])\n], TextBoxComponent);\n\n/**\n * @hidden\n */\nclass TextBoxMessages extends ComponentMessages {\n}\nTextBoxMessages.ɵfac = /*@__PURE__*/ function () { let ɵTextBoxMessages_BaseFactory; return function TextBoxMessages_Factory(t) { return (ɵTextBoxMessages_BaseFactory || (ɵTextBoxMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TextBoxMessages)))(t || TextBoxMessages); }; }();\nTextBoxMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextBoxMessages, inputs: { clear: \"clear\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextBoxMessages.prototype, \"clear\", void 0);\n\nvar TextBoxCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet TextBoxCustomMessagesComponent = TextBoxCustomMessagesComponent_1 = class TextBoxCustomMessagesComponent extends TextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nTextBoxCustomMessagesComponent.ɵfac = function TextBoxCustomMessagesComponent_Factory(t) { return new (t || TextBoxCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nTextBoxCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextBoxCustomMessagesComponent, selectors: [[\"kendo-textbox-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => TextBoxCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function TextBoxCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nTextBoxCustomMessagesComponent = TextBoxCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], TextBoxCustomMessagesComponent);\n\nvar LocalizedTextBoxMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedTextBoxMessagesDirective = LocalizedTextBoxMessagesDirective_1 = class LocalizedTextBoxMessagesDirective extends TextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedTextBoxMessagesDirective.ɵfac = function LocalizedTextBoxMessagesDirective_Factory(t) { return new (t || LocalizedTextBoxMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedTextBoxMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedTextBoxMessagesDirective, selectors: [[\"\", \"kendoTextBoxLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => LocalizedTextBoxMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedTextBoxMessagesDirective = LocalizedTextBoxMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedTextBoxMessagesDirective);\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 */\nlet InputSeparatorComponent = class InputSeparatorComponent {\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 */\n constructor() {\n this.hostClass = true;\n }\n};\nInputSeparatorComponent.ɵfac = function InputSeparatorComponent_Factory(t) { return new (t || InputSeparatorComponent)(); };\nInputSeparatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: InputSeparatorComponent, selectors: [[\"kendo-input-separator\"], [\"kendo-textbox-separator\"]], hostVars: 2, hostBindings: function InputSeparatorComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-input-separator\", ctx.hostClass);\n } }, decls: 0, vars: 0, template: function InputSeparatorComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-input-separator'),\n __metadata(\"design:type\", Boolean)\n], InputSeparatorComponent.prototype, \"hostClass\", void 0);\n\n/**\n * @hidden\n */\nconst SHARED_DIRECTIVES = [\n InputSeparatorComponent,\n TextAreaDirective\n];\n/**\n * @hidden\n */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\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 */\nlet TextBoxModule = class TextBoxModule {\n};\nTextBoxModule.ɵfac = function TextBoxModule_Factory(t) { return new (t || TextBoxModule)(); };\nTextBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TextBoxModule });\nTextBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });\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 = function TextFieldsBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nTextFieldsBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TextFieldsBase, viewQuery: function TextFieldsBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c37, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, hostVars: 3, hostBindings: function TextFieldsBase_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { title: \"title\", disabled: \"disabled\", readonly: \"readonly\", value: \"value\", selectOnFocus: \"selectOnFocus\", placeholder: \"placeholder\" }, outputs: { inputFocus: \"inputFocus\", inputBlur: \"inputBlur\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextFieldsBase.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextFieldsBase.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextFieldsBase.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextFieldsBase.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TextFieldsBase.prototype, \"selectOnFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextFieldsBase.prototype, \"placeholder\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextFieldsBase.prototype, \"inputFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextFieldsBase.prototype, \"inputBlur\", void 0);\n__decorate([\n ViewChild('input', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], TextFieldsBase.prototype, \"input\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextFieldsBase.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TextFieldsBase.prototype, \"direction\", void 0);\n\nvar TextAreaComponent_1;\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$4 = 'k-state-focus';\n/**\n * Represents the [Kendo UI TextArea component for Angular]({% slug overview_textarea %}).\n */\nlet TextAreaComponent = TextAreaComponent_1 = class 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.hostClass = 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 /**\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 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 });\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.resizable) {\n if (this.resizable === 'auto') {\n this.initialHeight = element.offsetHeight;\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 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, 'overflow-y', 'hidden');\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$4);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$4);\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};\nTextAreaComponent.ɵfac = function TextAreaComponent_Factory(t) { return new (t || TextAreaComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nTextAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextAreaComponent, selectors: [[\"kendo-textarea\"]], hostVars: 6, hostBindings: function TextAreaComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-textarea\", ctx.hostClass)(\"k-flex-col\", ctx.flowCol)(\"k-flex-row\", ctx.flowRow);\n } }, inputs: { focusableId: \"focusableId\", flow: \"flow\", tabindex: \"tabindex\", resizable: \"resizable\", tabIndex: \"tabIndex\", rows: \"rows\", cols: \"cols\", maxlength: \"maxlength\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, exportAs: [\"kendoTextArea\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textarea' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent_1),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent_1) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c45, decls: 4, vars: 19, consts: [[1, \"k-input\", 3, \"ngClass\", \"id\", \"value\", \"disabled\", \"readonly\", \"kendoEventsOutsideAngular\"], [\"input\", \"\"]], template: function TextAreaComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c44);\n ɵngcc0.ɵɵelementStart(0, \"textarea\", 0, 1);\n ɵngcc0.ɵɵtext(2, \" \");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵprojection(3);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.resizableClass)(\"id\", ctx.focusableId)(\"value\", ctx.value)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"kendoEventsOutsideAngular\", ɵngcc0.ɵɵpureFunction3(15, _c43, ctx.handleInputFocus, ctx.handleInputBlur, ctx.handleInput));\n ɵngcc0.ɵɵattribute(\"aria-multiline\", true)(\"aria-disabled\", ctx.disabled ? true : undefined)(\"aria-readonly\", ctx.readonly ? true : undefined)(\"placeholder\", ctx.placeholder)(\"rows\", ctx.rows)(\"cols\", ctx.cols)(\"tabindex\", ctx.tabIndex)(\"title\", ctx.title)(\"maxlength\", ctx.maxlength);\n } }, directives: [ɵngcc3.NgClass, ɵngcc2.EventsOutsideAngularDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextAreaComponent.prototype, \"focusableId\", void 0);\n__decorate([\n HostBinding('class.k-textarea'),\n __metadata(\"design:type\", Boolean)\n], TextAreaComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-flex-col'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextAreaComponent.prototype, \"flowCol\", null);\n__decorate([\n HostBinding('class.k-flex-row'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TextAreaComponent.prototype, \"flowRow\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextAreaComponent.prototype, \"flow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextAreaComponent.prototype, \"rows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextAreaComponent.prototype, \"cols\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextAreaComponent.prototype, \"maxlength\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TextAreaComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], TextAreaComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TextAreaComponent.prototype, \"resizable\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], TextAreaComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], TextAreaComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TextAreaComponent.prototype, \"valueChange\", void 0);\nTextAreaComponent = TextAreaComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n NgZone,\n ChangeDetectorRef,\n Renderer2,\n Injector,\n ElementRef])\n], TextAreaComponent);\n\n/**\n * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %}).\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 */\nlet TextAreaSuffixComponent = class TextAreaSuffixComponent {\n /**\n * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %}).\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 */\n constructor() {\n this.hostClass = true;\n }\n};\nTextAreaSuffixComponent.ɵfac = function TextAreaSuffixComponent_Factory(t) { return new (t || TextAreaSuffixComponent)(); };\nTextAreaSuffixComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TextAreaSuffixComponent, selectors: [[\"kendo-textarea-suffix\"]], hostVars: 2, hostBindings: function TextAreaSuffixComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-textarea-suffix\", ctx.hostClass);\n } }, exportAs: [\"kendoTextAreaSuffix\"], ngContentSelectors: _c26, decls: 1, vars: 0, template: function TextAreaSuffixComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-textarea-suffix'),\n __metadata(\"design:type\", Boolean)\n], TextAreaSuffixComponent.prototype, \"hostClass\", void 0);\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 */\nlet TextAreaModule = class TextAreaModule {\n};\nTextAreaModule.ɵfac = function TextAreaModule_Factory(t) { return new (t || TextAreaModule)(); };\nTextAreaModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TextAreaModule });\nTextAreaModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });\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 * 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$1 = (value, format, 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(value.trim(), safe);\n if (!isPresent(parsedColor)) {\n return;\n }\n return format === 'hex' ? parsedColor.toCss() : parsedColor.toCssRgba();\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(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(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) => {\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 return Color.fromHSV(hue, saturation, value, alpha).toCssRgba();\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(value, safe)) {\n value = parseColor(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 shoud 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// tslint: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 * @hidden\n */\nlet ColorPickerLocalizationService = class ColorPickerLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl) {\n super(prefix, messageService, _rtl);\n }\n};\nColorPickerLocalizationService.ɵfac = function ColorPickerLocalizationService_Factory(t) { return new (t || ColorPickerLocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(ɵngcc1.MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8)); };\nColorPickerLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColorPickerLocalizationService, factory: function (t) { return ColorPickerLocalizationService.ɵfac(t); } });\nColorPickerLocalizationService = __decorate([\n __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean])\n], ColorPickerLocalizationService);\n\n/**\n * @hidden\n */\nlet ColorGradientLocalizationService = class ColorGradientLocalizationService 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};\nColorGradientLocalizationService.ɵfac = function ColorGradientLocalizationService_Factory(t) { return new (t || ColorGradientLocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(ɵngcc1.MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8), ɵngcc0.ɵɵinject(ColorPickerLocalizationService, 8)); };\nColorGradientLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColorGradientLocalizationService, factory: function (t) { return ColorGradientLocalizationService.ɵfac(t); } });\nColorGradientLocalizationService = __decorate([\n __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __param(3, Optional()), __param(3, Inject(ColorPickerLocalizationService)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean, ColorPickerLocalizationService])\n], ColorGradientLocalizationService);\n\n/**\n * @hidden\n */\nlet ColorInputComponent = class ColorInputComponent {\n constructor(localization, host, renderer) {\n this.localization = localization;\n this.host = host;\n this.renderer = renderer;\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$1(this.value, 'hex');\n this.rgba = getRGBA(this.value);\n this.rgba.a = parseColor$1(this.value, 'rgba') ? this.rgba.a : 1;\n }\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$1(color, 'hex');\n this.valueChange.emit(color);\n }\n handleHexValueChange(hex) {\n this.hex = hex;\n const color = parseColor$1(hex, 'rgba');\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$1(this.value, 'hex');\n }\n textFor(key) {\n return this.localization.get(key);\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 = function ColorInputComponent_Factory(t) { return new (t || ColorInputComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nColorInputComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorInputComponent, selectors: [[\"kendo-colorinput\"]], viewQuery: function ColorInputComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c46, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c47, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.opacityInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toggleFormatButton = _t.first);\n } }, hostVars: 4, hostBindings: function ColorInputComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-colorgradient-inputs\", ctx.colorInputClass)(\"k-hstack\", ctx.colorInputClass);\n } }, inputs: { opacity: \"opacity\", disabled: \"disabled\", readonly: \"readonly\", value: \"value\", formatView: \"formatView\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 6, vars: 2, consts: [[1, \"k-vstack\"], [1, \"k-colorgradient-toggle-mode\", \"k-button\", \"k-icon-button\", \"k-flat\"], [\"toggleFormatButton\", \"\"], [1, \"k-button-icon\", \"k-icon\", \"k-i-arrows-kpi\"], [\"class\", \"k-textbox k-hex-value\", 3, \"disabled\", \"readonly\", \"value\", \"placeholder\", \"blur\", \"input\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"k-textbox\", \"k-hex-value\", 3, \"disabled\", \"readonly\", \"value\", \"placeholder\", \"blur\", \"input\"], [\"hexInput\", \"\"], [3, \"disabled\", \"readonly\", \"min\", \"max\", \"placeholder\", \"value\", \"autoCorrect\", \"spinners\", \"format\", \"decimals\", \"valueChange\", \"blur\"], [\"red\", \"\"], [1, \"k-colorgradient-input-label\", 3, \"for\"], [\"green\", \"\"], [\"blue\", \"\"], [\"class\", \"k-vstack\", 4, \"ngIf\"], [3, \"disabled\", \"readonly\", \"min\", \"max\", \"placeholder\", \"value\", \"autoCorrect\", \"spinners\", \"step\", \"format\", \"decimals\", \"valueChange\", \"blur\"], [\"opacityInput\", \"\", \"alpha\", \"\"]], template: function ColorInputComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"button\", 1, 2);\n ɵngcc0.ɵɵelement(3, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, ColorInputComponent_input_4_Template, 2, 4, \"input\", 4);\n ɵngcc0.ɵɵtemplate(5, ColorInputComponent_ng_container_5_Template, 17, 34, \"ng-container\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.formatView === \"hex\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.formatView === \"rgba\");\n } }, directives: [ɵngcc3.NgIf, NumericTextBoxComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorInputComponent.prototype, \"formatView\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorInputComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorInputComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorInputComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorInputComponent.prototype, \"readonly\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorInputComponent.prototype, \"valueChange\", void 0);\n__decorate([\n HostBinding('class.k-colorgradient-inputs'),\n HostBinding('class.k-hstack'),\n __metadata(\"design:type\", Boolean)\n], ColorInputComponent.prototype, \"colorInputClass\", void 0);\n__decorate([\n ViewChild('opacityInput', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorInputComponent.prototype, \"opacityInput\", void 0);\n__decorate([\n ViewChild('toggleFormatButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorInputComponent.prototype, \"toggleFormatButton\", void 0);\nColorInputComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n ElementRef,\n Renderer2])\n], ColorInputComponent);\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\nvar ColorGradientComponent_1;\nlet serial = 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 */\nlet ColorGradientComponent = ColorGradientComponent_1 = class 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 /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.id = `k-colorgradient-${serial++}`;\n /**\n * Defines whether the alpha slider will be displayed.\n */\n this.opacity = true;\n /**\n * Sets the disabled state of the ColorGradient.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorGradient.\n */\n this.readonly = false;\n /**\n * Specifies whether the ColorGradient should display a 'Clear color' button.\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 * 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 = {};\n /**\n * Specifies the output format of the ColorGradientComponent.\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) `rgba`\n * * `hex`\n */\n this.format = DEFAULT_OUTPUT_FORMAT;\n this._tabindex = 0;\n this.listeners = [];\n this.updateValues = new Subject();\n this.notifyNgChanged = () => { };\n this.notifyNgTouched = () => { };\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * @hidden\n */\n get readonlyAttribute() {\n return this.readonly;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get hostTabindex() {\n return this.tabindex;\n }\n /**\n * @hidden\n */\n get gradientId() {\n return this.id;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor$1(value, this.format);\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 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 * 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) && isPresent(this.hsva.a))) {\n return;\n }\n return this.hsva.a * 100;\n }\n get gradientRect() {\n return this.gradientWrapper.nativeElement.getBoundingClientRect();\n }\n /**\n * @hidden\n */\n get contrastToolVisible() {\n return typeof this.contrastTool === 'string' && this.contrastTool !== '';\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.host.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));\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 newX = position.clientX - this.gradientRect.left;\n const newY = position.clientY - this.gradientRect.top;\n this.ngZone.run(() => this.moveDragHandle(newX, newY));\n }\n /**\n * @hidden\n */\n handleHueSliderChange(hue) {\n this.handleValueChange(getColorFromHSV(this.hsva));\n this.backgroundColor = getColorFromHue(hue);\n this.setAlphaSliderBackground(this.backgroundColor);\n }\n /**\n * @hidden\n */\n handleAlphaSliderChange(alpha) {\n this.hsva.a = alpha / 100;\n this.handleValueChange(getColorFromHSV(this.hsva));\n }\n /**\n * @hidden\n */\n handleInputsValueChange(color) {\n const parsed = parseColor$1(color, this.format);\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$1(this.value, this.format);\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 TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n moveDragHandle(positionX, positionY) {\n const top = fitIntoBounds(positionY, 0, this.gradientRect.height);\n const left = fitIntoBounds(positionX, 0, this.gradientRect.width);\n this.setDragHandleElementPosition(top, left);\n this.hsva.s = left / this.gradientRect.width;\n this.hsva.v = 1 - top / this.gradientRect.height;\n this.updateValues.next(getColorFromHSV(this.hsva));\n this.setAlphaSliderBackground(getColorFromHSV(Object.assign({}, this.hsva, { a: 1 })));\n }\n updateUI() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.hsva = this.value ? getHSV(this.value) : { h: 0, s: 0, v: 1, a: 1 };\n const top = (1 - this.hsva.v) * this.gradientRect.height;\n const left = this.hsva.s * this.gradientRect.width;\n this.setDragHandleElementPosition(top, left);\n this.backgroundColor = getColorFromHue(this.hsva.h);\n this.setAlphaSliderBackground(this.backgroundColor);\n this.setHostElementAriaLabel();\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$1(this.value, this.format);\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', `${this.value ? parsed : this.localizationService.get('colorGradientNoColor')}`);\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)));\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 = function ColorGradientComponent_Factory(t) { return new (t || ColorGradientComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nColorGradientComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorGradientComponent, selectors: [[\"kendo-colorgradient\"]], viewQuery: function ColorGradientComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c48, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c49, 5);\n ɵngcc0.ɵɵviewQuery(_c50, 5);\n ɵngcc0.ɵɵviewQuery(_c51, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.gradientDragHandle = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.inputs = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.alphaSlider = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.gradientWrapper = _t.first);\n } }, hostVars: 8, hostBindings: function ColorGradientComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction)(\"aria-readonly\", ctx.readonlyAttribute)(\"tabindex\", ctx.hostTabindex)(\"id\", ctx.gradientId);\n ɵngcc0.ɵɵclassProp(\"k-colorgradient\", ctx.hostClasses)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { id: \"id\", opacity: \"opacity\", disabled: \"disabled\", readonly: \"readonly\", clearButton: \"clearButton\", delay: \"delay\", format: \"format\", value: \"value\", tabindex: \"tabindex\", contrastTool: \"contrastTool\" }, outputs: { valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent_1)\n },\n ColorGradientLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorGradientLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorgradient'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 29, consts: function () { let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The aria-label applied to the ColorGradient component when the value is empty.\n * @meaning kendo.colorgradient.colorGradientNoColor\n */\n const MSG_EXTERNAL_3796155240301823948$$DIST_FESM2015_INDEX_JS_53 = goog.getMsg(\"Colorgradient no color chosen\");\n i18n_52 = MSG_EXTERNAL_3796155240301823948$$DIST_FESM2015_INDEX_JS_53;\n }\n else {\n i18n_52 = $localize `:kendo.colorgradient.colorGradientNoColor|The aria-label applied to the ColorGradient component when the value is empty.␟136a6a537523c480df0e58c17cc6d4c2dda8e626␟3796155240301823948:Colorgradient no color chosen`;\n } let i18n_54; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the gradient color drag handle chooser.\n * @meaning kendo.colorgradient.colorGradientHandle\n */\n const MSG_EXTERNAL_8537406358423916512$$DIST_FESM2015_INDEX_JS_55 = goog.getMsg(\"Choose color\");\n i18n_54 = MSG_EXTERNAL_8537406358423916512$$DIST_FESM2015_INDEX_JS_55;\n }\n else {\n i18n_54 = $localize `:kendo.colorgradient.colorGradientHandle|The title for the gradient color drag handle chooser.␟462ab46551fd64dca63ba38254e46a52aeb05205␟8537406358423916512:Choose color`;\n } let i18n_56; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the clear button.\n * @meaning kendo.colorgradient.clearButton\n */\n const MSG_EXTERNAL_7605097752673642325$$DIST_FESM2015_INDEX_JS_57 = goog.getMsg(\"Clear value\");\n i18n_56 = MSG_EXTERNAL_7605097752673642325$$DIST_FESM2015_INDEX_JS_57;\n }\n else {\n i18n_56 = $localize `:kendo.colorgradient.clearButton|The title for the clear button.␟6dc40c4a4ff302d1fe29e7bf9eadf1440b4654cf␟7605097752673642325:Clear value`;\n } let i18n_58; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the hue slider handle.\n * @meaning kendo.colorgradient.hueSliderHandle\n */\n const MSG_EXTERNAL_8568799441668530127$$DIST_FESM2015_INDEX_JS_59 = goog.getMsg(\"Set hue\");\n i18n_58 = MSG_EXTERNAL_8568799441668530127$$DIST_FESM2015_INDEX_JS_59;\n }\n else {\n i18n_58 = $localize `:kendo.colorgradient.hueSliderHandle|The title for the hue slider handle.␟22a98afddf46223dce8a3e122f4fe84ca76488b9␟8568799441668530127:Set hue`;\n } let i18n_60; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the opacity slider handle.\n * @meaning kendo.colorgradient.opacitySliderHandle\n */\n const MSG_EXTERNAL_2665102430468067218$$DIST_FESM2015_INDEX_JS_61 = goog.getMsg(\"Set opacity\");\n i18n_60 = MSG_EXTERNAL_2665102430468067218$$DIST_FESM2015_INDEX_JS_61;\n }\n else {\n i18n_60 = $localize `:kendo.colorgradient.opacitySliderHandle|The title for the opacity slider handle.␟ad3087c7bf139a41bf6a7fc454f4e857492c9d22␟2665102430468067218:Set opacity`;\n } let i18n_62; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the HEX color input.\n * @meaning kendo.colorgradient.hexInputPlaceholder\n */\n const MSG_EXTERNAL_1551996638068326100$$DIST_FESM2015_INDEX_JS_63 = goog.getMsg(\"HEX Color\");\n i18n_62 = MSG_EXTERNAL_1551996638068326100$$DIST_FESM2015_INDEX_JS_63;\n }\n else {\n i18n_62 = $localize `:kendo.colorgradient.hexInputPlaceholder|The placeholder for the HEX color input.␟0223abe5dc060383b58df6d9f83dc98b08ba8e2b␟1551996638068326100:HEX Color`;\n } let i18n_64; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the red color input.\n * @meaning kendo.colorgradient.redInputPlaceholder\n */\n const MSG_EXTERNAL_865798719701025148$$DIST_FESM2015_INDEX_JS_65 = goog.getMsg(\"Red\");\n i18n_64 = MSG_EXTERNAL_865798719701025148$$DIST_FESM2015_INDEX_JS_65;\n }\n else {\n i18n_64 = $localize `:kendo.colorgradient.redInputPlaceholder|The placeholder for the red color input.␟ec8e6ab816ff2b3686ad6594068d26e3c72e49d3␟865798719701025148:Red`;\n } let i18n_66; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the green color input.\n * @meaning kendo.colorgradient.greenInputPlaceholder\n */\n const MSG_EXTERNAL_7119549617208224702$$DIST_FESM2015_INDEX_JS_67 = goog.getMsg(\"Green\");\n i18n_66 = MSG_EXTERNAL_7119549617208224702$$DIST_FESM2015_INDEX_JS_67;\n }\n else {\n i18n_66 = $localize `:kendo.colorgradient.greenInputPlaceholder|The placeholder for the green color input.␟50e5480cded07f92356e43143800db6b44dce024␟7119549617208224702:Green`;\n } let i18n_68; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the blue color input.\n * @meaning kendo.colorgradient.blueInputPlaceholder\n */\n const MSG_EXTERNAL_8925567330503382499$$DIST_FESM2015_INDEX_JS_69 = goog.getMsg(\"Blue\");\n i18n_68 = MSG_EXTERNAL_8925567330503382499$$DIST_FESM2015_INDEX_JS_69;\n }\n else {\n i18n_68 = $localize `:kendo.colorgradient.blueInputPlaceholder|The placeholder for the blue color input.␟f07b6e271e4cb957c512029298715c8f4970eca8␟8925567330503382499:Blue`;\n } let i18n_70; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the alpha input.\n * @meaning kendo.colorgradient.alphaInputPlaceholder\n */\n const MSG_EXTERNAL_6303797935938211585$$DIST_FESM2015_INDEX_JS_71 = goog.getMsg(\"Alpha\");\n i18n_70 = MSG_EXTERNAL_6303797935938211585$$DIST_FESM2015_INDEX_JS_71;\n }\n else {\n i18n_70 = $localize `:kendo.colorgradient.alphaInputPlaceholder|The placeholder for the alpha input.␟122a5434fa0f1ee3ef735e859c1db1606542c995␟6303797935938211585:Alpha`;\n } let i18n_72; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The pass message for the contrast tool.\n * @meaning kendo.colorgradient.passContrast\n */\n const MSG_EXTERNAL_200461871469242251$$DIST_FESM2015_INDEX_JS_73 = goog.getMsg(\"Pass\");\n i18n_72 = MSG_EXTERNAL_200461871469242251$$DIST_FESM2015_INDEX_JS_73;\n }\n else {\n i18n_72 = $localize `:kendo.colorgradient.passContrast|The pass message for the contrast tool.␟ec167f04d318f2b1f1edbca6318a74fddf436c76␟200461871469242251:Pass`;\n } let i18n_74; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The fail message for the contrast tool.\n * @meaning kendo.colorgradient.failContrast\n */\n const MSG_EXTERNAL_2780397365913372676$$DIST_FESM2015_INDEX_JS_75 = goog.getMsg(\"Fail\");\n i18n_74 = MSG_EXTERNAL_2780397365913372676$$DIST_FESM2015_INDEX_JS_75;\n }\n else {\n i18n_74 = $localize `:kendo.colorgradient.failContrast|The fail message for the contrast tool.␟79015428999551ebe50f69bb5a1ebd31de4c3bdf␟2780397365913372676:Fail`;\n } let i18n_76; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The contrast ratio message for the contrast tool.\n * @meaning kendo.colorgradient.contrastRatio\n */\n const MSG_EXTERNAL_713630549826115578$$DIST_FESM2015_INDEX_JS_77 = goog.getMsg(\"Contrast ratio\");\n i18n_76 = MSG_EXTERNAL_713630549826115578$$DIST_FESM2015_INDEX_JS_77;\n }\n else {\n i18n_76 = $localize `:kendo.colorgradient.contrastRatio|The contrast ratio message for the contrast tool.␟408650dd85473f406520edd1d60c8df0c475a8fa␟713630549826115578:Contrast ratio`;\n } return [[\"kendoColorGradientLocalizedMessages\", \"\", \"colorGradientNoColor\", i18n_52, \"colorGradientHandle\", i18n_54, \"clearButton\", i18n_56, \"hueSliderHandle\", i18n_58, \"opacitySliderHandle\", i18n_60, \"hexInputPlaceholder\", i18n_62, \"redInputPlaceholder\", i18n_64, \"greenInputPlaceholder\", i18n_66, \"blueInputPlaceholder\", i18n_68, \"alphaInputPlaceholder\", i18n_70, \"passContrast\", i18n_72, \"failContrast\", i18n_74, \"contrastRatio\", i18n_76], [1, \"k-colorgradient-canvas\", \"k-hstack\"], [1, \"k-hsv-rectangle\"], [\"kendoDraggable\", \"\", 1, \"k-hsv-gradient\", 3, \"click\", \"kendoPress\", \"kendoDrag\", \"kendoRelease\"], [\"gradientWrapper\", \"\"], [\"tabindex\", \"0\", 1, \"k-hsv-draghandle\", \"k-draghandle\"], [\"gradientDragHandle\", \"\"], [\"class\", \"k-clear-color k-button k-flat k-button-icon\", \"tabindex\", \"0\", 3, \"click\", \"keydown.enter\", \"keydown.space\", 4, \"ngIf\"], [1, \"k-hue-slider\", \"k-colorgradient-slider\", 3, \"ngClass\", \"dragHandleTitle\", \"disabled\", \"readonly\", \"showButtons\", \"tickPlacement\", \"vertical\", \"min\", \"max\", \"smallStep\", \"largeStep\", \"value\", \"valueChange\"], [\"class\", \"k-alpha-slider k-colorgradient-slider\", 3, \"ngClass\", \"dragHandleTitle\", \"disabled\", \"readonly\", \"showButtons\", \"tickPlacement\", \"vertical\", \"min\", \"max\", \"smallStep\", \"largeStep\", \"value\", \"valueChange\", 4, \"ngIf\"], [3, \"opacity\", \"formatView\", \"value\", \"disabled\", \"readonly\", \"valueChange\"], [\"inputs\", \"\"], [\"class\", \"k-colorgradient-color-contrast k-vbox\", \"kendoContrastTool\", \"\", 3, \"value\", \"ratio\", 4, \"ngIf\"], [\"tabindex\", \"0\", 1, \"k-clear-color\", \"k-button\", \"k-flat\", \"k-button-icon\", 3, \"click\", \"keydown.enter\", \"keydown.space\"], [1, \"k-icon\", \"k-i-reset-color\"], [1, \"k-alpha-slider\", \"k-colorgradient-slider\", 3, \"ngClass\", \"dragHandleTitle\", \"disabled\", \"readonly\", \"showButtons\", \"tickPlacement\", \"vertical\", \"min\", \"max\", \"smallStep\", \"largeStep\", \"value\", \"valueChange\"], [\"alphaSlider\", \"\"], [\"kendoContrastTool\", \"\", 1, \"k-colorgradient-color-contrast\", \"k-vbox\", 3, \"value\", \"ratio\"]]; }, template: function ColorGradientComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵelementStart(3, \"div\", 3, 4);\n ɵngcc0.ɵɵlistener(\"click\", function ColorGradientComponent_Template_div_click_3_listener($event) { return ctx.changePosition($event); })(\"kendoPress\", function ColorGradientComponent_Template_div_kendoPress_3_listener($event) { return ctx.handleDragPress($event); })(\"kendoDrag\", function ColorGradientComponent_Template_div_kendoDrag_3_listener($event) { return ctx.onHandleDrag($event); })(\"kendoRelease\", function ColorGradientComponent_Template_div_kendoRelease_3_listener() { return ctx.onHandleRelease(); });\n ɵngcc0.ɵɵelement(5, \"div\", 5, 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"div\");\n ɵngcc0.ɵɵtemplate(8, ColorGradientComponent_span_8_Template, 2, 2, \"span\", 7);\n ɵngcc0.ɵɵelementStart(9, \"kendo-slider\", 8);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorGradientComponent_Template_kendo_slider_valueChange_9_listener($event) { return ctx.hsva.h = $event; })(\"valueChange\", function ColorGradientComponent_Template_kendo_slider_valueChange_9_listener($event) { return ctx.handleHueSliderChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, ColorGradientComponent_kendo_slider_10_Template, 2, 14, \"kendo-slider\", 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(11, \"kendo-colorinput\", 10, 11);\n ɵngcc0.ɵɵlistener(\"valueChange\", function ColorGradientComponent_Template_kendo_colorinput_valueChange_11_listener($event) { return ctx.handleInputsValueChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(13, ColorGradientComponent_div_13_Template, 1, 2, \"div\", 12);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"background\", ctx.backgroundColor);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵattribute(\"title\", ctx.colorGradientHandleTitle)(\"aria-label\", ctx.colorGradientHandleAriaLabel);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassMapInterpolate1(\"k-hsv-controls k-hstack \", ctx.clearButton ? \"k-sliders-wrap-clearable\" : \"\", \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.clearButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(27, _c78, ctx.clearButton))(\"dragHandleTitle\", ctx.hueSliderTitle)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"showButtons\", false)(\"tickPlacement\", \"none\")(\"vertical\", true)(\"min\", 0)(\"max\", 360)(\"smallStep\", 5)(\"largeStep\", 10)(\"value\", ctx.hsva.h);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.opacity && ctx.format === \"rgba\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"opacity\", ctx.opacity)(\"formatView\", ctx.format)(\"value\", ctx.value)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contrastToolVisible);\n } }, directives: function () { return [LocalizedColorPickerMessagesDirective, ɵngcc2.DraggableDirective, ɵngcc3.NgIf, SliderComponent, ɵngcc3.NgClass, ColorInputComponent, ContrastComponent]; }, styles: [\".k-clear-color[_ngcontent-%COMP%] {\\n position: absolute;\\n left: 50%;\\n transform: translateX(-50%);\\n }\\n .k-align-self-end[_ngcontent-%COMP%] {\\n height: 140px;\\n }\"] });\n__decorate([\n HostBinding('class.k-colorgradient'),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.aria-readonly'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColorGradientComponent.prototype, \"readonlyAttribute\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColorGradientComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], ColorGradientComponent.prototype, \"hostTabindex\", null);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ColorGradientComponent.prototype, \"gradientId\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorGradientComponent.prototype, \"id\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ColorGradientComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorGradientComponent.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ColorGradientComponent.prototype, \"delay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ColorGradientComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorGradientComponent.prototype, \"contrastTool\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColorGradientComponent.prototype, \"tabindex\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorGradientComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorGradientComponent.prototype, \"format\", void 0);\n__decorate([\n ViewChild('gradientDragHandle', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorGradientComponent.prototype, \"gradientDragHandle\", void 0);\n__decorate([\n ViewChild('inputs', { static: false }),\n __metadata(\"design:type\", ColorInputComponent)\n], ColorGradientComponent.prototype, \"inputs\", void 0);\n__decorate([\n ViewChild('alphaSlider', { static: false }),\n __metadata(\"design:type\", SliderComponent)\n], ColorGradientComponent.prototype, \"alphaSlider\", void 0);\n__decorate([\n ViewChild('gradientWrapper', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorGradientComponent.prototype, \"gradientWrapper\", void 0);\nColorGradientComponent = ColorGradientComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n Renderer2,\n ChangeDetectorRef,\n LocalizationService])\n], ColorGradientComponent);\n\nvar ColorPickerComponent_1;\nconst DEFAULT_PRESET = 'office';\nconst DEFAULT_ACCESSIBLE_PRESET = 'accessible';\nlet serial$1 = 0;\n/**\n * Represents the [Kendo UI ColorPicker component for Angular]({% slug overview_colorpicker %}).\n * Designed to replace the `` HTML5 tag which is not widely supported in browsers.\n */\nlet ColorPickerComponent = ColorPickerComponent_1 = class ColorPickerComponent {\n constructor(popupService, cdr, localizationService, ngZone) {\n this.popupService = popupService;\n this.cdr = cdr;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.focusableId = `k-colorpicker-${serial$1++}`;\n /**\n * Sets what view the ColorPicker will render in the popup.\n */\n this.view = 'gradient';\n /**\n * Sets the read-only state of the ColorPicker.\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the ColorPicker.\n */\n this.disabled = false;\n /**\n * Specifies the output format of the ColorPicker.\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 * If the `gradient` view is used with the `opacity` option set to true, this setting will be ignored and `rgba` will be used instead.\n *\n * The supported values are:\n * * `rgba` (default)\n * * `hex`\n * * [name](https://www.w3.org/wiki/CSS/Properties/color/keywords)\n */\n this.format = 'rgba';\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 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 this._tabindex = 0;\n this._popupSettings = { animate: true };\n this._paletteSettings = {};\n this._gradientSettings = { opacity: true, clearButton: false, delay: 0 };\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor$1(value, this.format);\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 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 * 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 : DEFAULT_ACCESSIBLE_PRESET;\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 ngOnChanges(changes) {\n if (changes.format && changes.format.currentValue === 'name') {\n this.view = 'palette';\n }\n if (this.view === 'gradient' && this.gradientSettings.opacity) {\n this.format = 'rgba';\n this.value = parseColor$1(this.value, this.format);\n }\n }\n ngOnDestroy() {\n this.closePopup();\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleWrapperClick() {\n this.toggleWithEvents(!this.isOpen);\n this.focus();\n }\n /**\n * @hidden\n */\n handleActiveColorClick() {\n this.focus();\n const event = new ActiveColorClickEvent(this.value);\n this.activeColorClick.emit(event);\n if (!event.isOpenPrevented() || this.isOpen) {\n this.handleWrapperClick();\n }\n }\n /**\n * Focuses the wrapper of the ColorPicker.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n this.wrapper.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleWrapperFocus() {\n if (isPresent(this.palette)) {\n this.palette.nativeElement.focus();\n }\n if (this.isFocused) {\n return;\n }\n this.isFocused = true;\n this.onFocus.emit();\n }\n /**\n * Blurs the ColorPicker.\n */\n blur() {\n this.wrapper.nativeElement.blur();\n }\n /**\n * @hidden\n */\n handleWrapperBlur() {\n if (this.isOpen) {\n return;\n }\n this.isFocused = false;\n this.onBlur.emit();\n this.notifyNgTouched();\n }\n /**\n * Clears the color value of the ColorPicker.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this._value = undefined;\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.closePopup();\n open = isPresent(open) ? open : !this.isOpen;\n if (open) {\n this.openPopup();\n }\n }\n /**\n * @hidden\n */\n handleValueChange(color, closePopup) {\n const parsedColor = parseColor$1(color, this.format);\n const valueChange = parsedColor !== this.value;\n if (closePopup) {\n this.toggleWithEvents(false);\n this.focus();\n }\n if (valueChange) {\n this.value = parsedColor;\n this.valueChange.emit(parsedColor);\n this.notifyNgChanged(parsedColor);\n }\n }\n /**\n * @hidden\n */\n handlePopupBlur(event) {\n const focusInPopupElement = this.popupRef.popupElement.contains(event.relatedTarget);\n const wrapperClicked = event.relatedTarget === this.wrapper.nativeElement;\n if (!this.isFocused || wrapperClicked || focusInPopupElement) {\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.toggleWithEvents(true);\n }\n }\n /**\n * @hidden\n */\n handlePopupKeyDown(event) {\n if (event.keyCode === Keys.Escape) {\n this.toggleWithEvents(false);\n this.wrapper.nativeElement.focus();\n }\n if (event.keyCode === Keys.Tab) {\n const firstElement = this.colorGradient ? this.colorGradient.gradientDragHandle.nativeElement : this.palette.nativeElement;\n const lastElement = this.palette ? this.palette.nativeElement :\n this.colorGradient.inputs.opacityInput.nativeElement.childNodes[1].children[0];\n if (event.shiftKey) {\n if (event.target === firstElement) {\n event.preventDefault();\n lastElement.focus();\n return;\n }\n }\n else {\n if (event.target === lastElement) {\n event.preventDefault();\n firstElement.focus();\n return;\n }\n }\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n toggleWithEvents(open) {\n const sameState = this.isOpen === open;\n if (this.disabled || this.readonly || sameState) {\n return;\n }\n const eventArgs = new PreventableEvent();\n open ? this.open.emit(eventArgs) : this.close.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.toggle(open);\n }\n if (open) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n if (this.colorGradient) {\n this.colorGradient.gradientDragHandle.nativeElement.focus();\n }\n });\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.wrapper,\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.wrapper.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 this.palette = null;\n }\n};\nColorPickerComponent.ɵfac = function ColorPickerComponent_Factory(t) { return new (t || ColorPickerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc5.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nColorPickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorPickerComponent, selectors: [[\"kendo-colorpicker\"]], viewQuery: function ColorPickerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c79, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c80, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c20, 7);\n ɵngcc0.ɵɵviewQuery(_c81, 7);\n ɵngcc0.ɵɵviewQuery(_c82, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.palette = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.colorGradient = _t.first);\n } }, hostVars: 5, hostBindings: function ColorPickerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-colorpicker\", ctx.hostClasses);\n } }, inputs: { focusableId: \"focusableId\", view: \"view\", readonly: \"readonly\", disabled: \"disabled\", format: \"format\", value: \"value\", popupSettings: \"popupSettings\", paletteSettings: \"paletteSettings\", gradientSettings: \"gradientSettings\", tabindex: \"tabindex\", icon: \"icon\", iconClass: \"iconClass\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\", activeColorClick: \"activeColorClick\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent_1)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent_1)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 11, vars: 12, consts: function () { let i18n_83; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the gradient color drag handle chooser.\n * @meaning kendo.colorpicker.colorGradientHandle\n */\n const MSG_EXTERNAL_8067778471922495440$$DIST_FESM2015_INDEX_JS_84 = goog.getMsg(\"Choose color\");\n i18n_83 = MSG_EXTERNAL_8067778471922495440$$DIST_FESM2015_INDEX_JS_84;\n }\n else {\n i18n_83 = $localize `:kendo.colorpicker.colorGradientHandle|The title for the gradient color drag handle chooser.␟8d537502a437254763c963398484bd362820af61␟8067778471922495440:Choose color`;\n } let i18n_85; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the clear button.\n * @meaning kendo.colorpicker.clearButton\n */\n const MSG_EXTERNAL_935472034136733879$$DIST_FESM2015_INDEX_JS_86 = goog.getMsg(\"Clear value\");\n i18n_85 = MSG_EXTERNAL_935472034136733879$$DIST_FESM2015_INDEX_JS_86;\n }\n else {\n i18n_85 = $localize `:kendo.colorpicker.clearButton|The title for the clear button.␟aae9caf1dbc689cd51ace5c265cbf45552a580b6␟935472034136733879:Clear value`;\n } let i18n_87; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the hue slider handle.\n * @meaning kendo.colorpicker.hueSliderHandle\n */\n const MSG_EXTERNAL_1739045502529621844$$DIST_FESM2015_INDEX_JS_88 = goog.getMsg(\"Set hue\");\n i18n_87 = MSG_EXTERNAL_1739045502529621844$$DIST_FESM2015_INDEX_JS_88;\n }\n else {\n i18n_87 = $localize `:kendo.colorpicker.hueSliderHandle|The title for the hue slider handle.␟7af8ad339d09d41bfa8fa5f4e44d16e326cafd54␟1739045502529621844:Set hue`;\n } let i18n_89; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the opacity slider handle.\n * @meaning kendo.colorpicker.opacitySliderHandle\n */\n const MSG_EXTERNAL_1818720388700598438$$DIST_FESM2015_INDEX_JS_90 = goog.getMsg(\"Set opacity\");\n i18n_89 = MSG_EXTERNAL_1818720388700598438$$DIST_FESM2015_INDEX_JS_90;\n }\n else {\n i18n_89 = $localize `:kendo.colorpicker.opacitySliderHandle|The title for the opacity slider handle.␟21883ee2927bd4cde8071c9cbec41901a0bc4bd2␟1818720388700598438:Set opacity`;\n } let i18n_91; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the HEX color input.\n * @meaning kendo.colorpicker.hexInputPlaceholder\n */\n const MSG_EXTERNAL_67581802130075115$$DIST_FESM2015_INDEX_JS_92 = goog.getMsg(\"HEX Color\");\n i18n_91 = MSG_EXTERNAL_67581802130075115$$DIST_FESM2015_INDEX_JS_92;\n }\n else {\n i18n_91 = $localize `:kendo.colorpicker.hexInputPlaceholder|The placeholder for the HEX color input.␟88c518588be223639d20666430d42b88990166c9␟67581802130075115:HEX Color`;\n } let i18n_93; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the red color input.\n * @meaning kendo.colorpicker.redInputPlaceholder\n */\n const MSG_EXTERNAL_1242921922786989001$$DIST_FESM2015_INDEX_JS_94 = goog.getMsg(\"Red\");\n i18n_93 = MSG_EXTERNAL_1242921922786989001$$DIST_FESM2015_INDEX_JS_94;\n }\n else {\n i18n_93 = $localize `:kendo.colorpicker.redInputPlaceholder|The placeholder for the red color input.␟60f46a6db83b89c15885de76451bb26478637d2c␟1242921922786989001:Red`;\n } let i18n_95; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the green color input.\n * @meaning kendo.colorpicker.greenInputPlaceholder\n */\n const MSG_EXTERNAL_564969508273982379$$DIST_FESM2015_INDEX_JS_96 = goog.getMsg(\"Green\");\n i18n_95 = MSG_EXTERNAL_564969508273982379$$DIST_FESM2015_INDEX_JS_96;\n }\n else {\n i18n_95 = $localize `:kendo.colorpicker.greenInputPlaceholder|The placeholder for the green color input.␟0c1eef35af82330d89cacecb2aa482d9da1e3a4b␟564969508273982379:Green`;\n } let i18n_97; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the blue color input.\n * @meaning kendo.colorpicker.blueInputPlaceholder\n */\n const MSG_EXTERNAL_2815824305218491249$$DIST_FESM2015_INDEX_JS_98 = goog.getMsg(\"Blue\");\n i18n_97 = MSG_EXTERNAL_2815824305218491249$$DIST_FESM2015_INDEX_JS_98;\n }\n else {\n i18n_97 = $localize `:kendo.colorpicker.blueInputPlaceholder|The placeholder for the blue color input.␟c8f1ad22547f56cec39eb563a9a1bfe5a85cc14a␟2815824305218491249:Blue`;\n } let i18n_99; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The placeholder for the alpha input.\n * @meaning kendo.colorpicker.alphaInputPlaceholder\n */\n const MSG_EXTERNAL_7522085117867122625$$DIST_FESM2015_INDEX_JS_100 = goog.getMsg(\"Alpha\");\n i18n_99 = MSG_EXTERNAL_7522085117867122625$$DIST_FESM2015_INDEX_JS_100;\n }\n else {\n i18n_99 = $localize `:kendo.colorpicker.alphaInputPlaceholder|The placeholder for the alpha input.␟4e4aed4804d59e87f4f96959d0113c5ca292d98c␟7522085117867122625:Alpha`;\n } return [[\"kendoColorPickerLocalizedMessages\", \"\", \"colorGradientNoColor\", \"Colorgradient no color chosen\", \"colorPaletteNoColor\", \"Colorpalette no color chosen\", \"colorGradientHandle\", i18n_83, \"clearButton\", i18n_85, \"hueSliderHandle\", i18n_87, \"opacitySliderHandle\", i18n_89, \"hexInputPlaceholder\", i18n_91, \"redInputPlaceholder\", i18n_93, \"greenInputPlaceholder\", i18n_95, \"blueInputPlaceholder\", i18n_97, \"alphaInputPlaceholder\", i18n_99], [\"role\", \"listbox\", 3, \"ngClass\", \"id\", \"focus\", \"blur\", \"mousedown\", \"keydown\"], [\"wrapper\", \"\"], [\"class\", \"k-selected-color\", 3, \"background-color\", \"click\", 4, \"ngIf\"], [\"class\", \"k-tool-icon\", 3, \"ngClass\", \"click\", 4, \"ngIf\"], [1, \"k-select\", 3, \"click\"], [1, \"k-icon\", \"k-i-arrow-s\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [1, \"k-selected-color\", 3, \"click\"], [\"class\", \"k-icon k-i-line\", 4, \"ngIf\"], [1, \"k-icon\", \"k-i-line\"], [1, \"k-tool-icon\", 3, \"ngClass\", \"click\"], [1, \"k-selected-color\"], [3, \"value\", \"format\", \"opacity\", \"clearButton\", \"delay\", \"focusout\", \"valueChange\", \"keydown\", 4, \"ngIf\"], [\"kendoFocusOnDomReady\", \"\", 3, \"palette\", \"columns\", \"tileSize\", \"format\", \"value\", \"blur\", \"cellSelection\", \"mousedown\", \"keydown\", 4, \"ngIf\"], [3, \"value\", \"format\", \"opacity\", \"clearButton\", \"delay\", \"focusout\", \"valueChange\", \"keydown\"], [\"colorGradient\", \"\"], [\"kendoFocusOnDomReady\", \"\", 3, \"palette\", \"columns\", \"tileSize\", \"format\", \"value\", \"blur\", \"cellSelection\", \"mousedown\", \"keydown\"], [\"palette\", \"\"]]; }, template: function ColorPickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1, 2);\n ɵngcc0.ɵɵlistener(\"focus\", function ColorPickerComponent_Template_span_focus_1_listener() { return ctx.handleWrapperFocus(); })(\"blur\", function ColorPickerComponent_Template_span_blur_1_listener() { return ctx.handleWrapperBlur(); })(\"mousedown\", function ColorPickerComponent_Template_span_mousedown_1_listener($event) { return $event.preventDefault(); })(\"keydown\", function ColorPickerComponent_Template_span_keydown_1_listener($event) { return ctx.handleWrapperKeyDown($event); });\n ɵngcc0.ɵɵtemplate(3, ColorPickerComponent_span_3_Template, 2, 3, \"span\", 3);\n ɵngcc0.ɵɵtemplate(4, ColorPickerComponent_span_4_Template, 2, 3, \"span\", 4);\n ɵngcc0.ɵɵelementStart(5, \"span\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function ColorPickerComponent_Template_span_click_5_listener() { return ctx.handleWrapperClick(); });\n ɵngcc0.ɵɵelement(6, \"span\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, ColorPickerComponent_ng_template_7_Template, 2, 2, \"ng-template\", null, 7, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(9, null, 8);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(9, _c101, ctx.disabled, ctx.isFocused))(\"id\", ctx.focusableId);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.isOpen)(\"aria-readonly\", ctx.readonly)(\"aria-disabled\", ctx.disabled)(\"aria-label\", ctx.value)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.iconStyles);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.iconStyles);\n } }, directives: function () { return [LocalizedColorPickerMessagesDirective, ɵngcc3.NgClass, ɵngcc3.NgIf, ColorGradientComponent, ColorPaletteComponent, FocusOnDomReadyDirective]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-colorpicker'),\n __metadata(\"design:type\", Boolean)\n], ColorPickerComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"view\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorPickerComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorPickerComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ColorPickerComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ColorPickerComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ColorPickerComponent.prototype, \"paletteSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ColorPickerComponent.prototype, \"gradientSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColorPickerComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColorPickerComponent.prototype, \"tabindex\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"close\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPickerComponent.prototype, \"activeColorClick\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], ColorPickerComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChild('wrapper', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ColorPickerComponent.prototype, \"wrapper\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ColorPickerComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('palette', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ColorPickerComponent.prototype, \"palette\", void 0);\n__decorate([\n ViewChild('colorGradient', { static: false }),\n __metadata(\"design:type\", ColorGradientComponent)\n], ColorPickerComponent.prototype, \"colorGradient\", void 0);\nColorPickerComponent = ColorPickerComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [PopupService,\n ChangeDetectorRef,\n LocalizationService,\n NgZone])\n], ColorPickerComponent);\n\n/**\n * @hidden\n */\nlet ColorPaletteService = class ColorPaletteService {\n /**\n * @hidden\n */\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 = function ColorPaletteService_Factory(t) { return new (t || ColorPaletteService)(); };\nColorPaletteService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColorPaletteService, factory: function (t) { return ColorPaletteService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet ColorPaletteLocalizationService = class ColorPaletteLocalizationService 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};\nColorPaletteLocalizationService.ɵfac = function ColorPaletteLocalizationService_Factory(t) { return new (t || ColorPaletteLocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(ɵngcc1.MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8), ɵngcc0.ɵɵinject(ColorPickerLocalizationService, 8)); };\nColorPaletteLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ColorPaletteLocalizationService, factory: function (t) { return ColorPaletteLocalizationService.ɵfac(t); } });\nColorPaletteLocalizationService = __decorate([\n __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __param(3, Optional()), __param(3, Inject(ColorPickerLocalizationService)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean, ColorPickerLocalizationService])\n], ColorPaletteLocalizationService);\n\nvar ColorPaletteComponent_1;\nconst DEFAULT_TILE_SIZE = 24;\nconst DEFAULT_COLUMNS_COUNT = 10;\nconst DEFAULT_PRESET$1 = 'office';\nconst DEFAULT_ACCESSIBLE_PRESET$1 = '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 */\nlet ColorPaletteComponent = ColorPaletteComponent_1 = class ColorPaletteComponent {\n constructor(host, service, cdr, renderer, localizationService) {\n this.host = host;\n this.service = service;\n this.cdr = cdr;\n this.renderer = renderer;\n this.localizationService = localizationService;\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 this._tabindex = 0;\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\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$1(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$1;\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$1(color, this.format, 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$1 : DEFAULT_ACCESSIBLE_PRESET$1;\n this.palette = this.palette || defaultPreset;\n this.setRows();\n this.focusedCell = this.service.getCellCoordsFor(this.value);\n }\n }\n ngAfterViewInit() {\n this.setHostElementAriaLabel();\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.focusedCell = this.service.getCellCoordsFor(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, cell) {\n if (this.readonly) {\n return;\n }\n this.selectedCell = cell;\n this.focusedCell = this.selectedCell;\n this.focusInComponent = true;\n const parsedColor = parseColor$1(value, this.format, false);\n this.cellSelection.emit(parsedColor);\n if (this.value !== parsedColor) {\n this.value = parsedColor;\n this.valueChange.emit(parsedColor);\n this.notifyNgChanged(parsedColor);\n this.setHostElementAriaLabel();\n }\n if (this.selection !== parsedColor) {\n this.selection = parsedColor;\n this.selectionChange.emit(parsedColor);\n }\n if (cell) {\n this.activeCellId = `${this.selectedCell.row}-${this.selectedCell.col}`;\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.focusedCell = this.service.getCellCoordsFor(this.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 TextBoxContainer 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._value = undefined;\n this.notifyNgChanged(undefined);\n }\n }\n handleCellFocusOnBlur() {\n this.focusInComponent = false;\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$1(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 = function ColorPaletteComponent_Factory(t) { return new (t || ColorPaletteComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ColorPaletteService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nColorPaletteComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorPaletteComponent, selectors: [[\"kendo-colorpalette\"]], hostVars: 9, hostBindings: function ColorPaletteComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function ColorPaletteComponent_keydown_HostBindingHandler($event) { return ctx.handleKeydown($event); })(\"blur\", function ColorPaletteComponent_blur_HostBindingHandler() { return ctx.handleHostBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction)(\"id\", ctx.paletteId)(\"tabindex\", ctx.hostTabindex)(\"aria-disabled\", ctx.disabledClass)(\"aria-readonly\", ctx.readonlyAttribute);\n ɵngcc0.ɵɵclassProp(\"k-colorpalette\", ctx.hostClasses)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { id: \"id\", format: \"format\", disabled: \"disabled\", readonly: \"readonly\", tileSize: \"tileSize\", value: \"value\", columns: \"columns\", palette: \"palette\", tabindex: \"tabindex\" }, outputs: { selectionChange: \"selectionChange\", valueChange: \"valueChange\", cellSelection: \"cellSelection\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent_1) // tslint:disable-line:no-forward-ref\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent_1)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 2, consts: function () { let i18n_102; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The aria-label applied to the ColorPalette component when the value is empty.\n * @meaning kendo.colorpalette.colorPaletteNoColor\n */\n const MSG_EXTERNAL_4885193165402402447$$DIST_FESM2015_INDEX_JS_103 = goog.getMsg(\"Colorpalette no color chosen\");\n i18n_102 = MSG_EXTERNAL_4885193165402402447$$DIST_FESM2015_INDEX_JS_103;\n }\n else {\n i18n_102 = $localize `:kendo.colorpalette.colorPaletteNoColor|The aria-label applied to the ColorPalette component when the value is empty.␟9828bb7d78de6289366052cdc37cf0bc74577313␟4885193165402402447:Colorpalette no color chosen`;\n } return [[\"kendoColorPaletteLocalizedMessages\", \"\", \"colorPaletteNoColor\", i18n_102], [\"role\", \"listbox\", 1, \"k-colorpalette-table-wrap\"], [1, \"k-colorpalette-table\", \"k-palette\"], [4, \"ngFor\", \"ngForOf\"], [\"role\", \"option\", \"class\", \"k-colorpalette-tile\", 3, \"k-state-selected\", \"k-state-focus\", \"id\", \"ngStyle\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"option\", 1, \"k-colorpalette-tile\", 3, \"id\", \"ngStyle\", \"click\"]]; }, template: function ColorPaletteComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"table\", 2);\n ɵngcc0.ɵɵelementStart(3, \"tbody\");\n ɵngcc0.ɵɵtemplate(4, ColorPaletteComponent_tr_4_Template, 2, 1, \"tr\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-activedescendant\", ctx.activeCellId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.colorRows);\n } }, directives: function () { return [LocalizedColorPickerMessagesDirective, ɵngcc3.NgForOf, ɵngcc3.NgStyle]; }, encapsulation: 2 });\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ColorPaletteComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ColorPaletteComponent.prototype, \"paletteId\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPaletteComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPaletteComponent.prototype, \"format\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ColorPaletteComponent.prototype, \"value\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColorPaletteComponent.prototype, \"columns\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ColorPaletteComponent.prototype, \"palette\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ColorPaletteComponent.prototype, \"tabindex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorPaletteComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ColorPaletteComponent.prototype, \"readonly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ColorPaletteComponent.prototype, \"tileSize\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPaletteComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPaletteComponent.prototype, \"valueChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ColorPaletteComponent.prototype, \"cellSelection\", void 0);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], ColorPaletteComponent.prototype, \"hostTabindex\", null);\n__decorate([\n HostBinding('class.k-colorpalette'),\n __metadata(\"design:type\", Boolean)\n], ColorPaletteComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColorPaletteComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.aria-readonly'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ColorPaletteComponent.prototype, \"readonlyAttribute\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ColorPaletteComponent.prototype, \"handleKeydown\", null);\n__decorate([\n HostListener('blur'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ColorPaletteComponent.prototype, \"handleHostBlur\", null);\nColorPaletteComponent = ColorPaletteComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ColorPaletteService,\n ChangeDetectorRef,\n Renderer2,\n LocalizationService])\n], ColorPaletteComponent);\n\n/**\n * @hidden\n */\nclass ColorPickerMessages extends ComponentMessages {\n}\nColorPickerMessages.ɵfac = /*@__PURE__*/ function () { let ɵColorPickerMessages_BaseFactory; return function ColorPickerMessages_Factory(t) { return (ɵColorPickerMessages_BaseFactory || (ɵColorPickerMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ColorPickerMessages)))(t || ColorPickerMessages); }; }();\nColorPickerMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ColorPickerMessages, inputs: { colorPaletteNoColor: \"colorPaletteNoColor\", colorGradientNoColor: \"colorGradientNoColor\", colorGradientHandle: \"colorGradientHandle\", clearButton: \"clearButton\", hueSliderHandle: \"hueSliderHandle\", opacitySliderHandle: \"opacitySliderHandle\", hexInputPlaceholder: \"hexInputPlaceholder\", redInputPlaceholder: \"redInputPlaceholder\", greenInputPlaceholder: \"greenInputPlaceholder\", blueInputPlaceholder: \"blueInputPlaceholder\", alphaInputPlaceholder: \"alphaInputPlaceholder\", passContrast: \"passContrast\", failContrast: \"failContrast\", contrastRatio: \"contrastRatio\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"colorPaletteNoColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"colorGradientNoColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"colorGradientHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"clearButton\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"hueSliderHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"opacitySliderHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"hexInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"redInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"greenInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"blueInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"alphaInputPlaceholder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"passContrast\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"failContrast\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ColorPickerMessages.prototype, \"contrastRatio\", void 0);\n\nvar ColorPickerCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet ColorPickerCustomMessagesComponent = ColorPickerCustomMessagesComponent_1 = class ColorPickerCustomMessagesComponent extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nColorPickerCustomMessagesComponent.ɵfac = function ColorPickerCustomMessagesComponent_Factory(t) { return new (t || ColorPickerCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nColorPickerCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ColorPickerCustomMessagesComponent, selectors: [[\"kendo-colorpicker-messages\"], [\"kendo-colorgradient-messages\"], [\"kendo-colorpalette-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ColorPickerCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nColorPickerCustomMessagesComponent = ColorPickerCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ColorPickerCustomMessagesComponent);\n\nvar LocalizedColorPickerMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedColorPickerMessagesDirective = LocalizedColorPickerMessagesDirective_1 = class LocalizedColorPickerMessagesDirective extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedColorPickerMessagesDirective.ɵfac = function LocalizedColorPickerMessagesDirective_Factory(t) { return new (t || LocalizedColorPickerMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedColorPickerMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedColorPickerMessagesDirective, selectors: [[\"\", \"kendoColorPickerLocalizedMessages\", \"\"], [\"\", \"kendoColorGradientLocalizedMessages\", \"\"], [\"\", \"kendoColorPaletteLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => LocalizedColorPickerMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedColorPickerMessagesDirective = LocalizedColorPickerMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedColorPickerMessagesDirective);\n\n/**\n * @hidden\n */\nlet FocusOnDomReadyDirective = class 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 = function FocusOnDomReadyDirective_Factory(t) { return new (t || FocusOnDomReadyDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nFocusOnDomReadyDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FocusOnDomReadyDirective, selectors: [[\"\", \"kendoFocusOnDomReady\", \"\"]] });\nFocusOnDomReadyDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone])\n], FocusOnDomReadyDirective);\n\n/**\n * @hidden\n */\nlet ContrastValidationComponent = class 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 return `${this.type}: ${this.ratio.toFixed(1)}`;\n }\n};\nContrastValidationComponent.ɵfac = function ContrastValidationComponent_Factory(t) { return new (t || ContrastValidationComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nContrastValidationComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ContrastValidationComponent, selectors: [[\"\", \"kendoContrastValidation\", \"\"]], inputs: { type: \"type\", ratio: \"ratio\", pass: \"pass\" }, attrs: _c105, decls: 4, vars: 3, consts: [[\"class\", \"k-contrast-validation k-text-success\", 4, \"ngIf\"], [\"class\", \"k-contrast-validation k-text-error\", 4, \"ngIf\"], [1, \"k-contrast-validation\", \"k-text-success\"], [1, \"k-icon\", \"k-i-check\"], [1, \"k-contrast-validation\", \"k-text-error\"], [1, \"k-icon\", \"k-i-close\"]], template: function ContrastValidationComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, ContrastValidationComponent_span_2_Template, 3, 1, \"span\", 0);\n ɵngcc0.ɵɵtemplate(3, ContrastValidationComponent_span_3_Template, 3, 1, \"span\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.contrastText);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.pass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.pass);\n } }, directives: [ɵngcc3.NgIf], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContrastValidationComponent.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ContrastValidationComponent.prototype, \"ratio\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ContrastValidationComponent.prototype, \"pass\", void 0);\nContrastValidationComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ContrastValidationComponent);\n\n/**\n * @hidden\n */\nlet ContrastComponent = class ContrastComponent {\n constructor(localization) {\n this.localization = localization;\n this.aaRatio = AA_RATIO;\n this.aaaRatio = AAA_RATIO;\n }\n get formatedRatio() {\n return this.contrastRatio.toFixed(2);\n }\n get contrastRatioMessage() {\n return this.localization.get('contrastRatio');\n }\n get satisfiesAACondition() {\n return this.contrastRatio >= this.aaRatio;\n }\n get satisfiesAAACondition() {\n return this.contrastRatio >= this.aaaRatio;\n }\n get contrastRatio() {\n let contrast = getContrastFromTwoRGBAs(getRGBA(this.value), getRGBA(this.ratio));\n return contrast;\n }\n};\nContrastComponent.ɵfac = function ContrastComponent_Factory(t) { return new (t || ContrastComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nContrastComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ContrastComponent, selectors: [[\"\", \"kendoContrastTool\", \"\"]], inputs: { value: \"value\", ratio: \"ratio\" }, attrs: _c106, decls: 7, vars: 8, consts: [[1, \"k-contrast-ratio\"], [1, \"k-contrast-ratio-text\"], [\"class\", \"k-contrast-validation k-text-success\", 4, \"ngIf\"], [\"class\", \"k-contrast-validation k-text-error\", 4, \"ngIf\"], [\"kendoContrastValidation\", \"\", \"type\", \"AA\", 3, \"ratio\", \"pass\"], [\"kendoContrastValidation\", \"\", \"type\", \"AAA\", 3, \"ratio\", \"pass\"], [1, \"k-contrast-validation\", \"k-text-success\"], [1, \"k-icon\", \"k-i-check\"], [\"class\", \"k-icon k-i-check\", 4, \"ngIf\"], [1, \"k-contrast-validation\", \"k-text-error\"], [1, \"k-icon\", \"k-i-close\"]], template: function ContrastComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ContrastComponent_span_3_Template, 3, 1, \"span\", 2);\n ɵngcc0.ɵɵtemplate(4, ContrastComponent_span_4_Template, 2, 0, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(5, \"div\", 4);\n ɵngcc0.ɵɵelement(6, \"div\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate2(\"\", ctx.contrastRatioMessage, \": \", ctx.formatedRatio, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.satisfiesAACondition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.satisfiesAACondition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ratio\", ctx.aaaRatio)(\"pass\", ctx.satisfiesAACondition);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ratio\", ctx.aaaRatio)(\"pass\", ctx.satisfiesAAACondition);\n } }, directives: [ɵngcc3.NgIf, ContrastValidationComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContrastComponent.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContrastComponent.prototype, \"ratio\", void 0);\nContrastComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ContrastComponent);\n\nconst PUBLIC_DIRECTIVES = [\n ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent\n];\nconst INTERNAL_DIRECTIVES = [\n ColorInputComponent,\n FocusOnDomReadyDirective,\n ContrastComponent,\n ContrastValidationComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ColorPicker.\n */\nlet ColorPickerModule = class ColorPickerModule {\n};\nColorPickerModule.ɵfac = function ColorPickerModule_Factory(t) { return new (t || ColorPickerModule)(); };\nColorPickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ColorPickerModule });\nColorPickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule\n ]] });\n\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 */\nlet CheckBoxDirective = class CheckBoxDirective {\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 */\n constructor() {\n this.kendoClass = true;\n }\n};\nCheckBoxDirective.ɵfac = function CheckBoxDirective_Factory(t) { return new (t || CheckBoxDirective)(); };\nCheckBoxDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CheckBoxDirective, selectors: [[\"input\", \"kendoCheckBox\", \"\"]], hostVars: 2, hostBindings: function CheckBoxDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-checkbox\", ctx.kendoClass);\n } } });\n__decorate([\n HostBinding('class.k-checkbox'),\n __metadata(\"design:type\", Boolean)\n], CheckBoxDirective.prototype, \"kendoClass\", void 0);\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 */\nlet CheckBoxModule = class CheckBoxModule {\n};\nCheckBoxModule.ɵfac = function CheckBoxModule_Factory(t) { return new (t || CheckBoxModule)(); };\nCheckBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CheckBoxModule });\nCheckBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\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 */\nlet RadioButtonDirective = class RadioButtonDirective {\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 */\n constructor() {\n this.kendoClass = true;\n }\n};\nRadioButtonDirective.ɵfac = function RadioButtonDirective_Factory(t) { return new (t || RadioButtonDirective)(); };\nRadioButtonDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: RadioButtonDirective, selectors: [[\"input\", \"kendoRadioButton\", \"\"]], hostVars: 2, hostBindings: function RadioButtonDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-radio\", ctx.kendoClass);\n } } });\n__decorate([\n HostBinding('class.k-radio'),\n __metadata(\"design:type\", Boolean)\n], RadioButtonDirective.prototype, \"kendoClass\", void 0);\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 */\nlet RadioButtonModule = class RadioButtonModule {\n};\nRadioButtonModule.ɵfac = function RadioButtonModule_Factory(t) { return new (t || RadioButtonModule)(); };\nRadioButtonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: RadioButtonModule });\nRadioButtonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nlet serial$3 = 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 */\nlet ErrorComponent = class ErrorComponent {\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 */\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$3++}`;\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 = function ErrorComponent_Factory(t) { return new (t || ErrorComponent)(); };\nErrorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ErrorComponent, selectors: [[\"kendo-formerror\"]], hostVars: 8, hostBindings: function ErrorComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.roleAttribute)(\"id\", ctx.idAttribute);\n ɵngcc0.ɵɵclassProp(\"k-form-error\", ctx.hostClass)(\"k-text-start\", ctx.startClass)(\"k-text-end\", ctx.endClass);\n } }, inputs: { align: \"align\" }, ngContentSelectors: _c26, decls: 1, vars: 0, template: function ErrorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-form-error'),\n __metadata(\"design:type\", Boolean)\n], ErrorComponent.prototype, \"hostClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ErrorComponent.prototype, \"align\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], ErrorComponent.prototype, \"roleAttribute\", void 0);\n__decorate([\n HostBinding('class.k-text-start'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ErrorComponent.prototype, \"startClass\", null);\n__decorate([\n HostBinding('class.k-text-end'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ErrorComponent.prototype, \"endClass\", null);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ErrorComponent.prototype, \"idAttribute\", null);\n\nlet serial$4 = 0;\n/**\n * Represents a hint message that will be shown underneath a form-bound component.\n */\nlet HintComponent = class HintComponent {\n /**\n * Represents a hint message that will be shown underneath a form-bound component.\n */\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$4++}`;\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 = function HintComponent_Factory(t) { return new (t || HintComponent)(); };\nHintComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HintComponent, selectors: [[\"kendo-formhint\"]], hostVars: 7, hostBindings: function HintComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.idAttribute);\n ɵngcc0.ɵɵclassProp(\"k-form-hint\", ctx.hostClass)(\"k-text-start\", ctx.startClass)(\"k-text-end\", ctx.endClass);\n } }, inputs: { align: \"align\" }, ngContentSelectors: _c26, decls: 1, vars: 0, template: function HintComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], HintComponent.prototype, \"align\", void 0);\n__decorate([\n HostBinding('class.k-form-hint'),\n __metadata(\"design:type\", Boolean)\n], HintComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-text-start'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HintComponent.prototype, \"startClass\", null);\n__decorate([\n HostBinding('class.k-text-end'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], HintComponent.prototype, \"endClass\", null);\n__decorate([\n HostBinding('attr.id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], HintComponent.prototype, \"idAttribute\", null);\n\n/**\n * Specifies a container for form-bound controls (Kendo controls or native HTML controls).\n * Applies styling and behavior rules.\n */\nlet FormFieldComponent = class 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 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 this.renderer.setAttribute(control, 'aria-describedby', ariaIds);\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 if (control.hasAttribute('aria-describedby')) {\n const attributes = control.getAttribute('aria-describedby').split(' ');\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 this.errorChildren.forEach((error) => {\n ids.add(error.id);\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 = function FormFieldComponent_Factory(t) { return new (t || FormFieldComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nFormFieldComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormFieldComponent, selectors: [[\"kendo-formfield\"]], contentQueries: function FormFieldComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, KendoInput, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgControl, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgControl, 5, ElementRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ErrorComponent, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, HintComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.kendoInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.formControls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.controlElementRefs = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.errorChildren = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.hintChildren = _t);\n } }, hostVars: 7, hostBindings: function FormFieldComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-form-field\", ctx.hostClass)(\"k-form-field-error\", ctx.errorClass)(\"k-form-field-disabled\", ctx.disabledClass);\n } }, inputs: { showHints: \"showHints\", orientation: \"orientation\", showErrors: \"showErrors\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ])], ngContentSelectors: _c108, decls: 5, vars: 4, consts: [[4, \"ngIf\"]], template: function FormFieldComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c107);\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelementStart(1, \"div\");\n ɵngcc0.ɵɵprojection(2, 1);\n ɵngcc0.ɵɵtemplate(3, FormFieldComponent_ng_content_3_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵtemplate(4, FormFieldComponent_ng_content_4_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-form-field-wrap\", ctx.horizontal);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasHints);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasErrors);\n } }, directives: [ɵngcc3.NgIf], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-form-field'),\n __metadata(\"design:type\", Boolean)\n], FormFieldComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], FormFieldComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('class.k-form-field-error'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FormFieldComponent.prototype, \"errorClass\", null);\n__decorate([\n HostBinding('class.k-form-field-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FormFieldComponent.prototype, \"disabledClass\", null);\n__decorate([\n ContentChildren(NgControl, { descendants: true }),\n __metadata(\"design:type\", QueryList),\n __metadata(\"design:paramtypes\", [QueryList])\n], FormFieldComponent.prototype, \"formControls\", null);\n__decorate([\n ContentChildren(NgControl, { read: ElementRef, descendants: true }),\n __metadata(\"design:type\", QueryList)\n], FormFieldComponent.prototype, \"controlElementRefs\", void 0);\n__decorate([\n ContentChild(KendoInput, { static: true }),\n __metadata(\"design:type\", Object)\n], FormFieldComponent.prototype, \"kendoInput\", void 0);\n__decorate([\n ContentChildren(ErrorComponent, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], FormFieldComponent.prototype, \"errorChildren\", void 0);\n__decorate([\n ContentChildren(HintComponent, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], FormFieldComponent.prototype, \"hintChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FormFieldComponent.prototype, \"showHints\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FormFieldComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FormFieldComponent.prototype, \"showErrors\", void 0);\nFormFieldComponent = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n LocalizationService,\n ElementRef])\n], FormFieldComponent);\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 */\nlet FormFieldModule = class FormFieldModule {\n};\nFormFieldModule.ɵfac = function FormFieldModule_Factory(t) { return new (t || FormFieldModule)(); };\nFormFieldModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FormFieldModule });\nFormFieldModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\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 */\nlet InputsModule = class InputsModule {\n};\nInputsModule.ɵfac = function InputsModule_Factory(t) { return new (t || InputsModule)(); };\nInputsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: InputsModule });\nInputsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule], TextAreaModule, TextBoxModule, SliderModule, RangeSliderModule, SwitchModule, NumericTextBoxModule, MaskedTextBoxModule, ColorPickerModule, CheckBoxModule, RadioButtonModule, FormFieldModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LabelTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoSliderLabelTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderComponent, [{\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_1) },\n { provide: KendoInput, useExisting: forwardRef(() => SliderComponent_1) }\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 \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Injector }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { focusableId: [{\n type: Input\n }], animate: [{\n type: Input\n }], showButtons: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], dragHandleTitle: [{\n type: Input\n }], incrementTitle: [{\n type: Input\n }], decrementTitle: [{\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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RangeSliderComponent, [{\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_1) },\n { provide: KendoInput, useExisting: forwardRef(() => RangeSliderComponent_1) }\n ],\n selector: 'kendo-rangeslider',\n template: `\n \n\n
    \n
      \n
    \n
    \n
    \n
    \n \n \n
    \n\n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Injector }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwitchComponent, [{\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_1) /* tslint:disable-line */\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => SwitchComponent_1)\n }\n ],\n selector: 'kendo-switch',\n template: `\n \n\n \n {{onLabelMessage}}\n {{offLabelMessage}}\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { focusableId: [{\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 }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-switch']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], checked: [{\n type: Input\n }], tabIndex: [{\n type: Input\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 }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], onLabel: [{\n type: Input\n }], offLabel: [{\n type: Input\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextAreaDirective, [{\n type: Directive,\n args: [{\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaDirective_1),\n multi: true\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => TextAreaDirective_1)\n }],\n selector: 'textarea[kendoTextArea]'\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Injector }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, { elementClass: [{\n type: HostBinding,\n args: ['class.k-textarea']\n }], autofillClass: [{\n type: HostBinding,\n args: ['class.k-autofill']\n }], valueChange: [{\n type: Output\n }], autoSize: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], value: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxContainerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-textbox-container',\n template: `\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-textbox-container']\n }], textareaElementClass: [{\n type: HostBinding,\n args: ['class.k-textarea-wrapper']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], invalidClass: [{\n type: HostBinding,\n args: ['class.k-state-invalid']\n }], id: [{\n type: Input\n }], floatingLabel: [{\n type: Input\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: false }]\n }], textarea: [{\n type: ContentChild,\n args: [TextAreaDirective, { static: false }]\n }], formControl: [{\n type: ContentChild,\n args: [NgControl, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxDirective, [{\n type: Directive,\n args: [{\n selector: 'input[kendoTextBox]',\n providers: [{\n provide: KendoInput,\n useExisting: forwardRef(() => TextBoxDirective_1)\n }]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-textbox']\n }], value: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericTextBoxComponent, [{\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_1), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent_1), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent_1) }\n ],\n selector: 'kendo-numerictextbox',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc4.IntlService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.Injector }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { 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 }], decimals: [{\n type: Input\n }], step: [{\n type: Input\n }], spinners: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], changeValueOnScroll: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], value: [{\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 }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], format: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-numerictextbox']\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], numericInput: [{\n type: ViewChild,\n args: ['numericInput', { static: true }]\n }], numericWrap: [{\n type: ViewChild,\n args: ['numericWrap', { static: true }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericTextBoxCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => NumericTextBoxCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-numerictextbox-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskingService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskedTextBoxComponent, [{\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_1) /* tslint:disable-line */\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1) /* tslint:disable-line */\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MaskedTextBoxComponent_1)\n }\n ],\n selector: 'kendo-maskedtextbox',\n template: `\n \n `\n }]\n }], function () { return [{ type: MaskingService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ChangeDetectorRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-maskedtextbox']\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 }], 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 }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], rules: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], \n /**\n * @hidden\n */\n pasteHandler: [{\n type: HostListener,\n args: ['paste', ['$event']]\n }], \n /**\n * @hidden\n */\n inputHandler: [{\n type: HostListener,\n args: ['input', ['$event']]\n }], value: [{\n type: Input\n }], title: [{\n type: Input\n }], mask: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderTicksComponent, [{\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 }], function () { return [{ type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SlidersCommonModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SlidersCommonModule, { declarations: function () { return [SliderTicksComponent, LabelTemplateDirective]; }, imports: function () { return [CommonModule, DraggableModule, EventsModule, ResizeSensorModule]; }, exports: function () { return [LabelTemplateDirective, SliderTicksComponent, DraggableModule,\n EventsModule,\n ResizeSensorModule]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedSliderMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => LocalizedSliderMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoSliderLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => SliderCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-slider-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SliderModule, { declarations: function () { return [SliderComponent, SliderCustomMessagesComponent, LocalizedSliderMessagesDirective]; }, imports: function () { return [CommonModule, SlidersCommonModule]; }, exports: function () { return [SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, LocalizedSliderMessagesDirective]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedRangeSliderMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => LocalizedRangeSliderMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoSliderLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RangeSliderCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => RangeSliderCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-rangeslider-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RangeSliderModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(RangeSliderModule, { declarations: function () { return [RangeSliderComponent, RangeSliderCustomMessagesComponent, LocalizedRangeSliderMessagesDirective]; }, imports: function () { return [CommonModule, SlidersCommonModule]; }, exports: function () { return [RangeSliderComponent, RangeSliderCustomMessagesComponent, LocalizedRangeSliderMessagesDirective, LabelTemplateDirective]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedSwitchMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSwitchMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoSwitchLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwitchCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SwitchCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-switch-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwitchModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SwitchModule, { declarations: function () { return [SwitchComponent, SwitchCustomMessagesComponent, LocalizedSwitchMessagesDirective]; }, imports: function () { return [CommonModule, EventsModule, ResizeSensorModule]; }, exports: function () { return [SwitchComponent, SwitchCustomMessagesComponent, LocalizedSwitchMessagesDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedNumericTextBoxMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => LocalizedNumericTextBoxMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoNumericTextBoxLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumericTextBoxModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NumericTextBoxModule, { declarations: function () { return [LocalizedNumericTextBoxMessagesDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent]; }, imports: function () { return [CommonModule, EventsModule]; }, exports: function () { return [NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskedTextBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [MaskedTextBoxComponent],\n exports: [MaskedTextBoxComponent],\n imports: [CommonModule, EventsModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MaskedTextBoxModule, { declarations: function () { return [MaskedTextBoxComponent]; }, imports: function () { return [CommonModule, EventsModule]; }, exports: function () { return [MaskedTextBoxComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxSuffixTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTextBoxSuffixTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxPrefixTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTextBoxPrefixTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxComponent, [{\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_1),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent_1) }\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ElementRef }]; }, { 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 }], 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 }], hostClass: [{\n type: HostBinding,\n args: ['class.k-textbox']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabIndex: [{\n type: Input\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], clearButtonIcon: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], maxlength: [{\n type: Input\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 }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => TextBoxCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-textbox-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedTextBoxMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => LocalizedTextBoxMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoTextBoxLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InputSeparatorComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-input-separator, kendo-textbox-separator',\n template: ``\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-input-separator']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: [InputSeparatorComponent, TextAreaDirective], exports: [InputSeparatorComponent, TextAreaDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [\n TextBoxDirective,\n TextBoxContainerComponent,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective\n ],\n exports: [\n TextBoxDirective,\n TextBoxContainerComponent,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n EventsModule,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective,\n SHARED_DIRECTIVES\n ],\n imports: [CommonModule, EventsModule, SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TextBoxModule, { declarations: function () { return [TextBoxDirective, TextBoxContainerComponent, TextBoxComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, LocalizedTextBoxMessagesDirective]; }, imports: function () { return [CommonModule, EventsModule, SharedModule]; }, exports: function () { return [TextBoxDirective, TextBoxContainerComponent, TextBoxComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, EventsModule, TextBoxCustomMessagesComponent, LocalizedTextBoxMessagesDirective, InputSeparatorComponent, TextAreaDirective]; } }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextAreaComponent, [{\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_1),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent_1) }\n ],\n selector: 'kendo-textarea',\n template: `\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ElementRef }]; }, { focusableId: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-textarea']\n }], flow: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], resizable: [{\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 }], flowCol: [{\n type: HostBinding,\n args: ['class.k-flex-col']\n }], flowRow: [{\n type: HostBinding,\n args: ['class.k-flex-row']\n }], tabIndex: [{\n type: Input\n }], rows: [{\n type: Input\n }], cols: [{\n type: Input\n }], maxlength: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextAreaSuffixComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoTextAreaSuffix',\n selector: 'kendo-textarea-suffix',\n template: ``\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-textarea-suffix']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextAreaModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TextAreaModule, { declarations: function () { return [TextAreaComponent, TextAreaSuffixComponent]; }, imports: function () { return [CommonModule, EventsModule, SharedModule]; }, exports: function () { return [TextAreaComponent, EventsModule, TextAreaSuffixComponent, InputSeparatorComponent, TextAreaDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorInputComponent, [{\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 }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { 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 }], value: [{\n type: Input\n }], formatView: [{\n type: Input\n }], opacityInput: [{\n type: ViewChild,\n args: ['opacityInput', { read: ElementRef, static: false }]\n }], toggleFormatButton: [{\n type: ViewChild,\n args: ['toggleFormatButton', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorGradientComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-colorgradient',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent_1)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent_1)\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 styles: [`\n .k-clear-color {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n }\n .k-align-self-end {\n height: 140px;\n }\n `]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorgradient']\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 }], valueChange: [{\n type: Output\n }], format: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], gradientId: [{\n type: HostBinding,\n args: ['attr.id']\n }], value: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], contrastTool: [{\n type: Input\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPickerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-colorpicker',\n providers: [{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent_1)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent_1)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\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 }], function () { return [{ type: ɵngcc5.PopupService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-colorpicker']\n }], focusableId: [{\n type: Input\n }], view: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], format: [{\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 }], activeColorClick: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], gradientSettings: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], palette: [{\n type: ViewChild,\n args: ['palette', { read: ElementRef, static: false }]\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], colorGradient: [{\n type: ViewChild,\n args: ['colorGradient', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPaletteService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPaletteComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-colorpalette',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent_1) // tslint:disable-line:no-forward-ref\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent_1)\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 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ColorPaletteService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }]; }, { id: [{\n type: Input\n }], format: [{\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 }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorpalette']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], paletteId: [{\n type: HostBinding,\n args: ['attr.id']\n }], value: [{\n type: Input\n }], columns: [{\n type: Input\n }], palette: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\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 }], \n /**\n * @hidden\n */\n handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], \n /**\n * @hidden\n */\n handleHostBlur: [{\n type: HostListener,\n args: ['blur']\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPickerCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-colorpicker-messages, kendo-colorgradient-messages, kendo-colorpalette-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedColorPickerMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => LocalizedColorPickerMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusOnDomReadyDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoFocusOnDomReady]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContrastValidationComponent, [{\n type: Component,\n args: [{\n selector: '[kendoContrastValidation]',\n template: `\n {{contrastText}}\n \n {{passMessage}}\n \n \n \n {{failMessage}}\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { type: [{\n type: Input\n }], ratio: [{\n type: Input\n }], pass: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContrastComponent, [{\n type: Component,\n args: [{\n selector: '[kendoContrastTool]',\n template: `\n
    \n {{contrastRatioMessage}}: {{formatedRatio}}\n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { value: [{\n type: Input\n }], ratio: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ColorPickerModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ColorPickerModule, { declarations: function () { return [ColorPickerComponent, ColorPaletteComponent, ColorGradientComponent, LocalizedColorPickerMessagesDirective, ColorPickerCustomMessagesComponent, ColorInputComponent, FocusOnDomReadyDirective, ContrastComponent, ContrastValidationComponent]; }, imports: function () { return [SliderModule, NumericTextBoxModule, CommonModule,\n PopupModule,\n DraggableModule]; }, exports: function () { return [ColorPickerComponent, ColorPaletteComponent, ColorGradientComponent, LocalizedColorPickerMessagesDirective, ColorPickerCustomMessagesComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckBoxDirective, [{\n type: Directive,\n args: [{\n selector: 'input[kendoCheckBox]'\n }]\n }], function () { return []; }, { kendoClass: [{\n type: HostBinding,\n args: ['class.k-checkbox']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [CheckBoxDirective],\n exports: [CheckBoxDirective],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CheckBoxModule, { declarations: function () { return [CheckBoxDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [CheckBoxDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadioButtonDirective, [{\n type: Directive,\n args: [{\n selector: 'input[kendoRadioButton]'\n }]\n }], function () { return []; }, { kendoClass: [{\n type: HostBinding,\n args: ['class.k-radio']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RadioButtonModule, [{\n type: NgModule,\n args: [{\n declarations: [RadioButtonDirective],\n exports: [RadioButtonDirective],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(RadioButtonModule, { declarations: function () { return [RadioButtonDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [RadioButtonDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ErrorComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-formerror',\n template: `\n \n `\n }]\n }], function () { return []; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HintComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-formhint',\n template: `\n \n `\n }]\n }], function () { return []; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormFieldComponent, [{\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 }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.ElementRef }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-field']\n }], showHints: [{\n type: Input\n }], orientation: [{\n type: Input\n }], showErrors: [{\n type: Input\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormFieldModule, [{\n type: NgModule,\n args: [{\n declarations: [HintComponent, ErrorComponent, FormFieldComponent],\n exports: [HintComponent, ErrorComponent, FormFieldComponent],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FormFieldModule, { declarations: function () { return [HintComponent, ErrorComponent, FormFieldComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [HintComponent, ErrorComponent, FormFieldComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InputsModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(InputsModule, { imports: function () { return [CommonModule]; }, exports: function () { return [TextAreaModule, TextBoxModule, SliderModule, RangeSliderModule, SwitchModule, NumericTextBoxModule, MaskedTextBoxModule, ColorPickerModule, CheckBoxModule, RadioButtonModule, FormFieldModule]; } }); })();\n\n\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CheckBoxModule, ColorInputComponent, ContrastValidationComponent, ContrastComponent, FocusOnDomReadyDirective, ColorGradientLocalizationService, ColorPaletteLocalizationService, ColorPickerLocalizationService, ColorPickerCustomMessagesComponent, ColorPickerMessages, ColorPaletteService, MaskingService, NumericTextBoxMessages, RadioButtonModule, RangeSliderCustomMessagesComponent, RangeSliderMessages, SHARED_DIRECTIVES, SliderCustomMessagesComponent, SliderMessages, SliderBase, SlidersCommonModule, SwitchCustomMessagesComponent, Messages, TextFieldsBase, TextBoxCustomMessagesComponent, TextBoxMessages, SliderComponent, RangeSliderComponent, LabelTemplateDirective, SwitchComponent, TextBoxContainerComponent, TextBoxDirective, TextAreaDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, MaskedTextBoxComponent, InputsModule, SliderTicksComponent, SliderModule, RangeSliderModule, SwitchModule, NumericTextBoxModule, MaskedTextBoxModule, TextBoxModule, TextAreaModule, ColorPickerComponent, ColorPaletteComponent, ColorGradientComponent, ColorPickerModule, ActiveColorClickEvent, CheckBoxDirective, RadioButtonDirective, HintComponent, ErrorComponent, FormFieldComponent, FormFieldModule, TextBoxComponent, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective, TextAreaComponent, TextAreaSuffixComponent, InputSeparatorComponent, SharedModule, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedTextBoxMessagesDirective, LocalizedSliderMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSwitchMessagesDirective };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, ɵɵdefineInjectable, ɵɵinject, LOCALE_ID, Injectable, Inject, Pipe, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { dateFormatNames, dateFieldName, firstDay, format, formatDate, formatNumber, load, numberSymbols, parseDate, parseNumber, splitDateFormat, toString, weekendRange, setData, localeInfo } from '@telerik/kendo-intl';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nconst packageMetadata = {\n name: '@progress/kendo-angular-intl',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635938345,\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$1 = intlMethod(dateFormatNames);\n/**\n * @hidden\n */\nconst dateFieldName$1 = intlMethod(dateFieldName);\n/**\n * @hidden\n */\nconst firstDay$1 = intlMethod(firstDay);\n/**\n * @hidden\n */\nconst format$1 = intlMethod(format);\n/**\n * @hidden\n */\nconst formatDate$1 = intlMethod(formatDate);\n/**\n * @hidden\n */\nconst formatNumber$1 = intlMethod(formatNumber);\n/**\n * @hidden\n */\nconst load$1 = intlMethod(load);\n/**\n * @hidden\n */\nconst numberSymbols$1 = intlMethod(numberSymbols);\n/**\n * @hidden\n */\nconst parseDate$1 = intlMethod(parseDate);\n/**\n * @hidden\n */\nconst parseNumber$1 = intlMethod(parseNumber);\n/**\n * @hidden\n */\nconst splitDateFormat$1 = intlMethod(splitDateFormat);\n/**\n * @hidden\n */\nconst toString$1 = intlMethod(toString);\n/**\n * @hidden\n */\nconst weekendRange$1 = intlMethod(weekendRange);\n/**\n * Sets a pre-built locale.\n *\n * @params data - The pre-built locale data.\n */\nconst setData$1 = (data) => 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 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 */\nlet IntlService = class 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 = function IntlService_Factory(t) { return new (t || IntlService)(); };\nIntlService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: IntlService, factory: function IntlService_Factory(t) { let r = null; if (t) {\n r = new t();\n }\n else {\n r = cldrServiceFactory(ɵngcc0.ɵɵinject(LOCALE_ID));\n } return r; }, providedIn: 'root' });\nIntlService.ngInjectableDef = ɵɵdefineInjectable({ factory: function IntlService_Factory() { return cldrServiceFactory(ɵɵinject(LOCALE_ID)); }, token: IntlService, providedIn: \"root\" });\nIntlService = __decorate([ __metadata(\"design:paramtypes\", [])\n], IntlService);\n/**\n * The Internationalization service implemented by using\n * the CLDR Database via the `@telerik/kendo-intl` package.\n */\nlet CldrIntlService = class 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$1(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$$1, localeId) {\n return toString$1(value, format$$1, 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$$1, localeId) {\n return formatDate$1(value, format$$1, 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$$1, localeId) {\n return parseDate$1(value, format$$1, 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$$1, localeId) {\n return parseNumber$1(value, localeId || this.localeId, format$$1);\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$$1, localeId) {\n return formatNumber$1(value, format$$1, 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$1(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$1(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$$1, localeId) {\n return splitDateFormat$1(format$$1, 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$1(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$1(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$1(localeId || this.localeId);\n }\n};\nCldrIntlService.ɵfac = function CldrIntlService_Factory(t) { return new (t || CldrIntlService)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nCldrIntlService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CldrIntlService, factory: function (t) { return CldrIntlService.ɵfac(t); } });\nCldrIntlService = __decorate([ __param(0, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [String])\n], CldrIntlService);\n\nconst isNumeric = (value) => !isNaN(value - parseFloat(value));\nconst ɵ0 = isNumeric;\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 */\nlet DatePipe = class 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$$1 = \"\", localeId) {\n value = this.normalize(value);\n if (value) {\n return this.intlService.formatDate(value, format$$1, 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 = function DatePipe_Factory(t) { return new (t || DatePipe)(ɵngcc0.ɵɵdirectiveInject(IntlService, 16)); };\nDatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"kendoDate\", type: DatePipe, pure: true });\nDatePipe = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], DatePipe);\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 */\nlet NumberPipe = class 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$$1, 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$$1, localeId);\n }\n return value;\n }\n};\nNumberPipe.ɵfac = function NumberPipe_Factory(t) { return new (t || NumberPipe)(ɵngcc0.ɵɵdirectiveInject(IntlService, 16)); };\nNumberPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"kendoNumber\", type: NumberPipe, pure: true });\nNumberPipe = __decorate([ __metadata(\"design:paramtypes\", [IntlService])\n], NumberPipe);\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 */\nlet IntlModule = class IntlModule {\n};\nIntlModule.ɵfac = function IntlModule_Factory(t) { return new (t || IntlModule)(); };\nIntlModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: IntlModule });\nIntlModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IntlService, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: cldrServiceFactory,\n deps: [LOCALE_ID]\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CldrIntlService, [{\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(DatePipe, [{\n type: Pipe,\n args: [{\n name: 'kendoDate'\n }]\n }], function () { return [{ type: IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumberPipe, [{\n type: Pipe,\n args: [{\n name: 'kendoNumber'\n }]\n }], function () { return [{ type: IntlService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IntlModule, [{\n type: NgModule,\n args: [{\n declarations: [pipes],\n exports: [pipes]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(IntlModule, { declarations: [DatePipe, NumberPipe], exports: [DatePipe, NumberPipe] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { cldrServiceFactory, IntlService, CldrIntlService, DatePipe, ɵ0, NumberPipe, IntlModule, dateFormatNames$1 as dateFormatNames, dateFieldName$1 as dateFieldName, firstDay$1 as firstDay, format$1 as format, formatDate$1 as formatDate, formatNumber$1 as formatNumber, load$1 as load, numberSymbols$1 as numberSymbols, parseDate$1 as parseDate, parseNumber$1 as parseNumber, splitDateFormat$1 as splitDateFormat, toString$1 as toString, weekendRange$1 as weekendRange, setData$1 as setData, localeData };\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"cs\",\n likelySubtags: {\n cs: \"cs-Latn-CZ\"\n },\n identity: {\n language: \"cs\"\n },\n territory: \"CZ\",\n calendar: {\n patterns: {\n d: \"dd.MM.y\",\n D: \"EEEE d. MMMM y\",\n m: \"d. M.\",\n M: \"d. MMMM\",\n y: \"LLLL y\",\n Y: \"LLLL y\",\n F: \"EEEE d. MMMM y H:mm:ss\",\n g: \"d. M. y H:mm\",\n G: \"d. M. y H:mm:ss\",\n t: \"H:mm\",\n T: \"H:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} {0}\",\n long: \"{1} {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: \"E d.\",\n Ehm: \"E h:mm a\",\n EHm: \"E H:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E H:mm:ss\",\n Gy: \"y G\",\n GyMMM: \"LLLL y G\",\n GyMMMd: \"d. M. y G\",\n GyMMMEd: \"E d. M. y G\",\n GyMMMMd: \"d. MMMM y G\",\n GyMMMMEd: \"E d. MMMM y G\",\n h: \"h a\",\n H: \"H\",\n hm: \"h:mm a\",\n Hm: \"H:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"H:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"H:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"H:mm v\",\n M: \"L\",\n Md: \"d. M.\",\n MEd: \"E d. M.\",\n MMM: \"LLL\",\n MMMd: \"d. M.\",\n MMMEd: \"E d. M.\",\n MMMMd: \"d. MMMM\",\n MMMMEd: \"E d. MMMM\",\n \"MMMMW-count-one\": \"W. 'týden' MMMM\",\n \"MMMMW-count-few\": \"W. 'týden' MMMM\",\n \"MMMMW-count-many\": \"W. 'týden' MMMM\",\n \"MMMMW-count-other\": \"W. 'týden' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"d. M. y\",\n yMEd: \"E d. M. y\",\n yMMM: \"LLLL y\",\n yMMMd: \"d. M. y\",\n yMMMEd: \"E d. M. y\",\n yMMMM: \"LLLL y\",\n yMMMMd: \"d. MMMM y\",\n yMMMMEd: \"E d. MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"w. 'týden' 'roku' Y\",\n \"yw-count-few\": \"w. 'týden' 'roku' Y\",\n \"yw-count-many\": \"w. 'týden' 'roku' Y\",\n \"yw-count-other\": \"w. 'týden' 'roku' Y\"\n }\n },\n timeFormats: {\n full: \"H:mm:ss zzzz\",\n long: \"H:mm:ss z\",\n medium: \"H:mm:ss\",\n short: \"H:mm\"\n },\n dateFormats: {\n full: \"EEEE d. MMMM y\",\n long: \"d. MMMM y\",\n medium: \"d. M. y\",\n short: \"dd.MM.yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"ne\",\n \"po\",\n \"út\",\n \"st\",\n \"čt\",\n \"pá\",\n \"so\"\n ],\n narrow: [\n \"N\",\n \"P\",\n \"Ú\",\n \"S\",\n \"Č\",\n \"P\",\n \"S\"\n ],\n short: [\n \"ne\",\n \"po\",\n \"út\",\n \"st\",\n \"čt\",\n \"pá\",\n \"so\"\n ],\n wide: [\n \"neděle\",\n \"pondělí\",\n \"úterý\",\n \"středa\",\n \"čtvrtek\",\n \"pátek\",\n \"sobota\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"ne\",\n \"po\",\n \"út\",\n \"st\",\n \"čt\",\n \"pá\",\n \"so\"\n ],\n narrow: [\n \"N\",\n \"P\",\n \"Ú\",\n \"S\",\n \"Č\",\n \"P\",\n \"S\"\n ],\n short: [\n \"ne\",\n \"po\",\n \"út\",\n \"st\",\n \"čt\",\n \"pá\",\n \"so\"\n ],\n wide: [\n \"neděle\",\n \"pondělí\",\n \"úterý\",\n \"středa\",\n \"čtvrtek\",\n \"pátek\",\n \"sobota\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"led\",\n \"úno\",\n \"bře\",\n \"dub\",\n \"kvě\",\n \"čvn\",\n \"čvc\",\n \"srp\",\n \"zář\",\n \"říj\",\n \"lis\",\n \"pro\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\"\n ],\n wide: [\n \"ledna\",\n \"února\",\n \"března\",\n \"dubna\",\n \"května\",\n \"června\",\n \"července\",\n \"srpna\",\n \"září\",\n \"října\",\n \"listopadu\",\n \"prosince\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"led\",\n \"úno\",\n \"bře\",\n \"dub\",\n \"kvě\",\n \"čvn\",\n \"čvc\",\n \"srp\",\n \"zář\",\n \"říj\",\n \"lis\",\n \"pro\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\"\n ],\n wide: [\n \"leden\",\n \"únor\",\n \"březen\",\n \"duben\",\n \"květen\",\n \"červen\",\n \"červenec\",\n \"srpen\",\n \"září\",\n \"říjen\",\n \"listopad\",\n \"prosinec\"\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 \"1. čtvrtletí\",\n \"2. čtvrtletí\",\n \"3. čtvrtletí\",\n \"4. čtvrtletí\"\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 \"1. čtvrtletí\",\n \"2. čtvrtletí\",\n \"3. čtvrtletí\",\n \"4. čtvrtletí\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"půln.\",\n am: \"dop.\",\n noon: \"pol.\",\n pm: \"odp.\",\n morning1: \"r.\",\n morning2: \"dop.\",\n afternoon1: \"odp.\",\n evening1: \"več.\",\n night1: \"v n.\"\n },\n narrow: {\n midnight: \"půl.\",\n am: \"dop.\",\n noon: \"pol.\",\n pm: \"odp.\",\n morning1: \"r.\",\n morning2: \"d.\",\n afternoon1: \"o.\",\n evening1: \"v.\",\n night1: \"n.\"\n },\n wide: {\n midnight: \"půlnoc\",\n am: \"dop.\",\n noon: \"poledne\",\n pm: \"odp.\",\n morning1: \"ráno\",\n morning2: \"dopoledne\",\n afternoon1: \"odpoledne\",\n evening1: \"večer\",\n night1: \"v noci\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"půlnoc\",\n am: \"dop.\",\n noon: \"poledne\",\n pm: \"odp.\",\n morning1: \"ráno\",\n morning2: \"dopoledne\",\n afternoon1: \"odpoledne\",\n evening1: \"večer\",\n night1: \"noc\"\n },\n narrow: {\n midnight: \"půl.\",\n am: \"dop.\",\n noon: \"pol.\",\n pm: \"odp.\",\n morning1: \"ráno\",\n morning2: \"dop.\",\n afternoon1: \"odp.\",\n evening1: \"več.\",\n night1: \"noc\"\n },\n wide: {\n midnight: \"půlnoc\",\n am: \"dop.\",\n noon: \"poledne\",\n pm: \"odp.\",\n morning1: \"ráno\",\n morning2: \"dopoledne\",\n afternoon1: \"odpoledne\",\n evening1: \"večer\",\n night1: \"noc\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"před naším letopočtem\",\n \"1\": \"našeho letopočtu\",\n \"0-alt-variant\": \"před naším letopočtem\",\n \"1-alt-variant\": \"našeho letopočtu\"\n },\n abbreviated: {\n \"0\": \"př. n. l.\",\n \"1\": \"n. l.\",\n \"0-alt-variant\": \"př. n. l.\",\n \"1-alt-variant\": \"n. l.\"\n },\n narrow: {\n \"0\": \"př.n.l.\",\n \"1\": \"n.l.\",\n \"0-alt-variant\": \"př. n. l.\",\n \"1-alt-variant\": \"n. l.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"letopočet\",\n short: \"letop.\",\n narrow: \"let.\"\n },\n year: {\n wide: \"rok\",\n short: \"r.\",\n narrow: \"r.\"\n },\n quarter: {\n wide: \"čtvrtletí\",\n short: \"Q\",\n narrow: \"Q\"\n },\n month: {\n wide: \"měsíc\",\n short: \"měs.\",\n narrow: \"měs.\"\n },\n week: {\n wide: \"týden\",\n short: \"týd.\",\n narrow: \"týd.\"\n },\n weekOfMonth: {\n wide: \"týden v měsíci\",\n short: \"týd. v m.\",\n narrow: \"týd. v m.\"\n },\n day: {\n wide: \"den\",\n short: \"den\",\n narrow: \"den\"\n },\n dayOfYear: {\n wide: \"den v roce\",\n short: \"den v r.\",\n narrow: \"d. v r.\"\n },\n weekday: {\n wide: \"den v týdnu\",\n short: \"den v týd.\",\n narrow: \"d. v týd.\"\n },\n weekdayOfMonth: {\n wide: \"den týdne v měsíci\",\n short: \"den týd. v měs.\",\n narrow: \"d. týd. v měs.\"\n },\n dayperiod: {\n short: \"část dne\",\n wide: \"část dne\",\n narrow: \"část d.\"\n },\n hour: {\n wide: \"hodina\",\n short: \"h\",\n narrow: \"h\"\n },\n minute: {\n wide: \"minuta\",\n short: \"min\",\n narrow: \"min\"\n },\n second: {\n wide: \"sekunda\",\n short: \"s\",\n narrow: \"s\"\n },\n zone: {\n wide: \"časové pásmo\",\n short: \"čas. pásmo\",\n narrow: \"pásmo\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"cs\",\n likelySubtags: {\n cs: \"cs-Latn-CZ\"\n },\n identity: {\n language: \"cs\"\n },\n territory: \"CZ\",\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-few\": \"n $\",\n \"unitPattern-count-many\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n currencyData: {\n CZK: {\n _rounding: \"0\",\n _digits: \"2\",\n _cashRounding: \"0\",\n _cashDigits: \"0\"\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"de\",\n likelySubtags: {\n de: \"de-Latn-DE\"\n },\n identity: {\n language: \"de\"\n },\n territory: \"DE\",\n calendar: {\n patterns: {\n d: \"dd.MM.y\",\n D: \"EEEE, d. MMMM y\",\n m: \"d. MMM\",\n M: \"d. MMMM\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, d. MMMM y HH:mm:ss\",\n g: \"d.M.y HH:mm\",\n G: \"d.M.y HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'um' {0}\",\n long: \"{1} 'um' {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: \"E, d.\",\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: \"d. MMM y G\",\n GyMMMEd: \"E, d. MMM y G\",\n h: \"h 'Uhr' a\",\n H: \"HH 'Uhr'\",\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: \"d.M.\",\n MEd: \"E, d.M.\",\n MMd: \"d.MM.\",\n MMdd: \"dd.MM.\",\n MMM: \"LLL\",\n MMMd: \"d. MMM\",\n MMMEd: \"E, d. MMM\",\n MMMMd: \"d. MMMM\",\n MMMMEd: \"E, d. MMMM\",\n \"MMMMW-count-one\": \"'Woche' W 'im' MMMM\",\n \"MMMMW-count-other\": \"'Woche' W 'im' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M.y\",\n yMd: \"d.M.y\",\n yMEd: \"E, d.M.y\",\n yMM: \"MM.y\",\n yMMdd: \"dd.MM.y\",\n yMMM: \"MMM y\",\n yMMMd: \"d. MMM y\",\n yMMMEd: \"E, d. MMM y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'Woche' w 'des' 'Jahres' Y\",\n \"yw-count-other\": \"'Woche' w 'des' 'Jahres' Y\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, d. MMMM y\",\n long: \"d. MMMM y\",\n medium: \"dd.MM.y\",\n short: \"dd.MM.yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"So.\",\n \"Mo.\",\n \"Di.\",\n \"Mi.\",\n \"Do.\",\n \"Fr.\",\n \"Sa.\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"D\",\n \"M\",\n \"D\",\n \"F\",\n \"S\"\n ],\n short: [\n \"So.\",\n \"Mo.\",\n \"Di.\",\n \"Mi.\",\n \"Do.\",\n \"Fr.\",\n \"Sa.\"\n ],\n wide: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"So\",\n \"Mo\",\n \"Di\",\n \"Mi\",\n \"Do\",\n \"Fr\",\n \"Sa\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"D\",\n \"M\",\n \"D\",\n \"F\",\n \"S\"\n ],\n short: [\n \"So.\",\n \"Mo.\",\n \"Di.\",\n \"Mi.\",\n \"Do.\",\n \"Fr.\",\n \"Sa.\"\n ],\n wide: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan.\",\n \"Feb.\",\n \"März\",\n \"Apr.\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"Aug.\",\n \"Sept.\",\n \"Okt.\",\n \"Nov.\",\n \"Dez.\"\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 \"Januar\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mär\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\"\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 \"Januar\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\"\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 \"1. Quartal\",\n \"2. Quartal\",\n \"3. Quartal\",\n \"4. Quartal\"\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 \"1. Quartal\",\n \"2. Quartal\",\n \"3. Quartal\",\n \"4. Quartal\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"Mitternacht\",\n am: \"AM\",\n pm: \"PM\",\n morning1: \"morgens\",\n morning2: \"vorm.\",\n afternoon1: \"mittags\",\n afternoon2: \"nachm.\",\n evening1: \"abends\",\n night1: \"nachts\"\n },\n narrow: {\n midnight: \"Mitternacht\",\n am: \"AM\",\n pm: \"PM\",\n morning1: \"morgens\",\n morning2: \"vorm.\",\n afternoon1: \"mittags\",\n afternoon2: \"nachm.\",\n evening1: \"abends\",\n night1: \"nachts\"\n },\n wide: {\n midnight: \"Mitternacht\",\n am: \"AM\",\n pm: \"PM\",\n morning1: \"morgens\",\n morning2: \"vormittags\",\n afternoon1: \"mittags\",\n afternoon2: \"nachmittags\",\n evening1: \"abends\",\n night1: \"nachts\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"Mitternacht\",\n am: \"AM\",\n pm: \"PM\",\n morning1: \"Morgen\",\n morning2: \"Vorm.\",\n afternoon1: \"Mittag\",\n afternoon2: \"Nachm.\",\n evening1: \"Abend\",\n night1: \"Nacht\"\n },\n narrow: {\n midnight: \"Mitternacht\",\n am: \"AM\",\n pm: \"PM\",\n morning1: \"Morgen\",\n morning2: \"Vorm.\",\n afternoon1: \"Mittag\",\n afternoon2: \"Nachm.\",\n evening1: \"Abend\",\n night1: \"Nacht\"\n },\n wide: {\n midnight: \"Mitternacht\",\n am: \"AM\",\n pm: \"PM\",\n morning1: \"Morgen\",\n morning2: \"Vormittag\",\n afternoon1: \"Mittag\",\n afternoon2: \"Nachmittag\",\n evening1: \"Abend\",\n night1: \"Nacht\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"v. Chr.\",\n \"1\": \"n. Chr.\",\n \"0-alt-variant\": \"vor unserer Zeitrechnung\",\n \"1-alt-variant\": \"unserer Zeitrechnung\"\n },\n abbreviated: {\n \"0\": \"v. Chr.\",\n \"1\": \"n. Chr.\",\n \"0-alt-variant\": \"v. u. Z.\",\n \"1-alt-variant\": \"u. Z.\"\n },\n narrow: {\n \"0\": \"v. Chr.\",\n \"1\": \"n. Chr.\",\n \"0-alt-variant\": \"v. u. Z.\",\n \"1-alt-variant\": \"u. Z.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"Epoche\",\n short: \"Epoche\",\n narrow: \"E\"\n },\n year: {\n wide: \"Jahr\",\n short: \"Jahr\",\n narrow: \"J\"\n },\n quarter: {\n wide: \"Quartal\",\n short: \"Quart.\",\n narrow: \"Q\"\n },\n month: {\n wide: \"Monat\",\n short: \"Monat\",\n narrow: \"M\"\n },\n week: {\n wide: \"Woche\",\n short: \"Woche\",\n narrow: \"W\"\n },\n weekOfMonth: {\n wide: \"Woche des Monats\",\n short: \"W/M\",\n narrow: \"Wo. des Monats\"\n },\n day: {\n wide: \"Tag\",\n short: \"Tag\",\n narrow: \"Tag\"\n },\n dayOfYear: {\n wide: \"Tag des Jahres\",\n short: \"Tag des Jahres\",\n narrow: \"T/J\"\n },\n weekday: {\n wide: \"Wochentag\",\n short: \"Wochentag\",\n narrow: \"Wochent.\"\n },\n weekdayOfMonth: {\n wide: \"Wochentag\",\n short: \"Wochentag\",\n narrow: \"WT\"\n },\n dayperiod: {\n short: \"Tageshälfte\",\n wide: \"Tageshälfte\",\n narrow: \"Tagesh.\"\n },\n hour: {\n wide: \"Stunde\",\n short: \"Std.\",\n narrow: \"Std.\"\n },\n minute: {\n wide: \"Minute\",\n short: \"Min.\",\n narrow: \"Min.\"\n },\n second: {\n wide: \"Sekunde\",\n short: \"Sek.\",\n narrow: \"Sek.\"\n },\n zone: {\n wide: \"Zeitzone\",\n short: \"Zeitzone\",\n narrow: \"Zeitz.\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"de\",\n likelySubtags: {\n de: \"de-Latn-DE\"\n },\n identity: {\n language: \"de\"\n },\n territory: \"DE\",\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 accounting: {\n patterns: [\n \"n $\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"en\",\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n identity: {\n language: \"en\"\n },\n territory: \"US\",\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 short: \"era\",\n narrow: \"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 weekOfMonth: {\n wide: \"week of month\",\n short: \"wk. of mo.\",\n narrow: \"wk. of mo.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n dayOfYear: {\n wide: \"day of year\",\n short: \"day of yr.\",\n narrow: \"day of yr.\"\n },\n weekday: {\n wide: \"day of the week\",\n short: \"day of wk.\",\n narrow: \"day of wk.\"\n },\n weekdayOfMonth: {\n wide: \"weekday of the month\",\n short: \"wkday. of mo.\",\n narrow: \"wkday. of mo.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"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 zone: {\n wide: \"time zone\",\n short: \"zone\",\n narrow: \"zone\"\n }\n }\n },\n firstDay: 0\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"en\",\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n identity: {\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 accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"et\",\n likelySubtags: {\n et: \"et-Latn-EE\"\n },\n identity: {\n language: \"et\"\n },\n territory: \"EE\",\n calendar: {\n patterns: {\n d: \"dd.MM.y\",\n D: \"EEEE, d. MMMM y\",\n m: \"d. MMM\",\n M: \"d. MMMM\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, d. MMMM y HH:mm:ss\",\n g: \"d.M.y HH:mm\",\n G: \"d.M.y HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} {0}\",\n long: \"{1} {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: \"E, d\",\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: \"d. MMM y G\",\n GyMMMEd: \"E, d. MMMM 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: \"M\",\n Md: \"d.M\",\n MEd: \"E, d.M\",\n MMM: \"MMMM\",\n MMMd: \"d. MMM\",\n MMMEd: \"E, d. MMM\",\n MMMMd: \"d. MMMM\",\n MMMMEd: \"E, d. MMMM\",\n \"MMMMW-count-one\": \"MMMM (W. 'nädal')\",\n \"MMMMW-count-other\": \"MMMM (W. 'nädal')\",\n mmss: \"mm:ss\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M.y\",\n yMd: \"d.M.y\",\n yMEd: \"E, d.M.y\",\n yMMM: \"MMM y\",\n yMMMd: \"d. MMM y\",\n yMMMEd: \"E, d. MMMM y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"w. 'nädal' (Y)\",\n \"yw-count-other\": \"w. 'nädal' (Y)\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, d. MMMM y\",\n long: \"d. MMMM y\",\n medium: \"d. MMM y\",\n short: \"dd.MM.yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"P\",\n \"E\",\n \"T\",\n \"K\",\n \"N\",\n \"R\",\n \"L\"\n ],\n narrow: [\n \"P\",\n \"E\",\n \"T\",\n \"K\",\n \"N\",\n \"R\",\n \"L\"\n ],\n short: [\n \"P\",\n \"E\",\n \"T\",\n \"K\",\n \"N\",\n \"R\",\n \"L\"\n ],\n wide: [\n \"pühapäev\",\n \"esmaspäev\",\n \"teisipäev\",\n \"kolmapäev\",\n \"neljapäev\",\n \"reede\",\n \"laupäev\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"P\",\n \"E\",\n \"T\",\n \"K\",\n \"N\",\n \"R\",\n \"L\"\n ],\n narrow: [\n \"P\",\n \"E\",\n \"T\",\n \"K\",\n \"N\",\n \"R\",\n \"L\"\n ],\n short: [\n \"P\",\n \"E\",\n \"T\",\n \"K\",\n \"N\",\n \"R\",\n \"L\"\n ],\n wide: [\n \"pühapäev\",\n \"esmaspäev\",\n \"teisipäev\",\n \"kolmapäev\",\n \"neljapäev\",\n \"reede\",\n \"laupäev\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"jaan\",\n \"veebr\",\n \"märts\",\n \"apr\",\n \"mai\",\n \"juuni\",\n \"juuli\",\n \"aug\",\n \"sept\",\n \"okt\",\n \"nov\",\n \"dets\"\n ],\n narrow: [\n \"J\",\n \"V\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"jaanuar\",\n \"veebruar\",\n \"märts\",\n \"aprill\",\n \"mai\",\n \"juuni\",\n \"juuli\",\n \"august\",\n \"september\",\n \"oktoober\",\n \"november\",\n \"detsember\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"jaan\",\n \"veebr\",\n \"märts\",\n \"apr\",\n \"mai\",\n \"juuni\",\n \"juuli\",\n \"aug\",\n \"sept\",\n \"okt\",\n \"nov\",\n \"dets\"\n ],\n narrow: [\n \"J\",\n \"V\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"jaanuar\",\n \"veebruar\",\n \"märts\",\n \"aprill\",\n \"mai\",\n \"juuni\",\n \"juuli\",\n \"august\",\n \"september\",\n \"oktoober\",\n \"november\",\n \"detsember\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"K1\",\n \"K2\",\n \"K3\",\n \"K4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1. kvartal\",\n \"2. kvartal\",\n \"3. kvartal\",\n \"4. kvartal\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"K1\",\n \"K2\",\n \"K3\",\n \"K4\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\"\n ],\n wide: [\n \"1. kvartal\",\n \"2. kvartal\",\n \"3. kvartal\",\n \"4. kvartal\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"keskööl\",\n am: \"AM\",\n noon: \"keskpäeval\",\n pm: \"PM\",\n morning1: \"hommikul\",\n afternoon1: \"pärastlõunal\",\n evening1: \"õhtul\",\n night1: \"öösel\"\n },\n narrow: {\n midnight: \"keskööl\",\n am: \"AM\",\n noon: \"keskpäeval\",\n pm: \"PM\",\n morning1: \"hommikul\",\n afternoon1: \"pärastlõunal\",\n evening1: \"õhtul\",\n night1: \"öösel\"\n },\n wide: {\n midnight: \"keskööl\",\n am: \"AM\",\n noon: \"keskpäeval\",\n pm: \"PM\",\n morning1: \"hommikul\",\n afternoon1: \"pärastlõunal\",\n evening1: \"õhtul\",\n night1: \"öösel\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"kesköö\",\n am: \"AM\",\n noon: \"keskpäev\",\n pm: \"PM\",\n morning1: \"hommik\",\n afternoon1: \"pärastlõuna\",\n evening1: \"õhtu\",\n night1: \"öö\"\n },\n narrow: {\n midnight: \"kesköö\",\n am: \"AM\",\n noon: \"keskpäev\",\n pm: \"PM\",\n morning1: \"hommik\",\n afternoon1: \"pärastlõuna\",\n evening1: \"õhtu\",\n night1: \"öö\"\n },\n wide: {\n midnight: \"kesköö\",\n am: \"AM\",\n noon: \"keskpäev\",\n pm: \"PM\",\n morning1: \"hommik\",\n afternoon1: \"pärastlõuna\",\n evening1: \"õhtu\",\n night1: \"öö\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"enne Kristust\",\n \"1\": \"pärast Kristust\",\n \"0-alt-variant\": \"enne meie ajaarvamist\",\n \"1-alt-variant\": \"meie ajaarvamise järgi\"\n },\n abbreviated: {\n \"0\": \"eKr\",\n \"1\": \"pKr\",\n \"0-alt-variant\": \"e.m.a\",\n \"1-alt-variant\": \"m.a.j\"\n },\n narrow: {\n \"0\": \"eKr\",\n \"1\": \"pKr\",\n \"0-alt-variant\": \"e.m.a\",\n \"1-alt-variant\": \"m.a.j\"\n }\n }\n },\n gmtFormat: \"GMT {0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"ajastu\",\n short: \"ajastu\",\n narrow: \"ajastu\"\n },\n year: {\n wide: \"aasta\",\n short: \"a\",\n narrow: \"a\"\n },\n quarter: {\n wide: \"kvartal\",\n short: \"kv\",\n narrow: \"kv\"\n },\n month: {\n wide: \"kuu\",\n short: \"k\",\n narrow: \"k\"\n },\n week: {\n wide: \"nädal\",\n short: \"näd\",\n narrow: \"näd\"\n },\n weekOfMonth: {\n wide: \"kuu nädal\",\n short: \"kuu näd\",\n narrow: \"kuu näd\"\n },\n day: {\n wide: \"päev\",\n short: \"p\",\n narrow: \"p\"\n },\n dayOfYear: {\n wide: \"aasta päev\",\n short: \"aasta p\",\n narrow: \"aasta p\"\n },\n weekday: {\n wide: \"nädalapäev\",\n short: \"nädalap.\",\n narrow: \"nädalap.\"\n },\n weekdayOfMonth: {\n wide: \"kuu nädalapäev\",\n short: \"kuu nädalap.\",\n narrow: \"kuu nädalap.\"\n },\n dayperiod: {\n short: \"enne/pärast lõunat\",\n wide: \"enne/pärast lõunat\",\n narrow: \"enne/pärast lõunat\"\n },\n hour: {\n wide: \"tund\",\n short: \"t\",\n narrow: \"t\"\n },\n minute: {\n wide: \"minut\",\n short: \"min\",\n narrow: \"min\"\n },\n second: {\n wide: \"sekund\",\n short: \"sek\",\n narrow: \"s\"\n },\n zone: {\n wide: \"ajavöönd\",\n short: \"vöönd\",\n narrow: \"vöönd\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"et\",\n likelySubtags: {\n et: \"et-Latn-EE\"\n },\n identity: {\n language: \"et\"\n },\n territory: \"EE\",\n numbers: {\n symbols: {\n decimal: \",\",\n group: \" \",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"−\",\n exponential: \"×10^\",\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 accounting: {\n patterns: [\n \"n $\",\n \"(n $)\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"hr\",\n likelySubtags: {\n hr: \"hr-Latn-HR\"\n },\n identity: {\n language: \"hr\"\n },\n territory: \"HR\",\n calendar: {\n patterns: {\n d: \"dd. MM. y.\",\n D: \"EEEE, d. MMMM y.\",\n m: \"d. MMM\",\n M: \"d. MMMM\",\n y: \"LLL y.\",\n Y: \"LLLL y.\",\n F: \"EEEE, d. MMMM y. HH:mm:ss\",\n g: \"dd. MM. y. HH:mm\",\n G: \"dd. MM. y. HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'u' {0}\",\n long: \"{1} 'u' {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: \"E, d.\",\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: \"LLL y. G\",\n GyMMMd: \"d. MMM y. G\",\n GyMMMEd: \"E, d. MMM y. G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"hh:mm a\",\n Hm: \"HH:mm\",\n hms: \"hh: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: \"dd. MM.\",\n MEd: \"E, dd. MM.\",\n MMdd: \"dd. MM.\",\n MMM: \"LLL\",\n MMMd: \"d. MMM\",\n MMMEd: \"E, d. MMM\",\n MMMMd: \"d. MMMM\",\n MMMMEd: \"E, d. MMMM\",\n \"MMMMW-count-one\": \"W. 'tjedan' MMMM\",\n \"MMMMW-count-few\": \"W. 'tjedan' MMMM\",\n \"MMMMW-count-other\": \"W. 'tjedan' MMMM\",\n ms: \"mm:ss\",\n y: \"y.\",\n yM: \"MM. y.\",\n yMd: \"dd. MM. y.\",\n yMEd: \"E, dd. MM. y.\",\n yMM: \"MM. y.\",\n yMMM: \"LLL y.\",\n yMMMd: \"d. MMM y.\",\n yMMMEd: \"E, d. MMM y.\",\n yMMMM: \"LLLL y.\",\n yQQQ: \"QQQ y.\",\n yQQQQ: \"QQQQ y.\",\n \"yw-count-one\": \"w. 'tjedan' 'u' Y.\",\n \"yw-count-few\": \"w. 'tjedan' 'u' Y.\",\n \"yw-count-other\": \"w. 'tjedan' 'u' Y.\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss (zzzz)\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, d. MMMM y.\",\n long: \"d. MMMM y.\",\n medium: \"d. MMM y.\",\n short: \"dd. MM. y.\"\n },\n days: {\n format: {\n abbreviated: [\n \"ned\",\n \"pon\",\n \"uto\",\n \"sri\",\n \"čet\",\n \"pet\",\n \"sub\"\n ],\n narrow: [\n \"N\",\n \"P\",\n \"U\",\n \"S\",\n \"Č\",\n \"P\",\n \"S\"\n ],\n short: [\n \"ned\",\n \"pon\",\n \"uto\",\n \"sri\",\n \"čet\",\n \"pet\",\n \"sub\"\n ],\n wide: [\n \"nedjelja\",\n \"ponedjeljak\",\n \"utorak\",\n \"srijeda\",\n \"četvrtak\",\n \"petak\",\n \"subota\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"ned\",\n \"pon\",\n \"uto\",\n \"sri\",\n \"čet\",\n \"pet\",\n \"sub\"\n ],\n narrow: [\n \"n\",\n \"p\",\n \"u\",\n \"s\",\n \"č\",\n \"p\",\n \"s\"\n ],\n short: [\n \"ned\",\n \"pon\",\n \"uto\",\n \"sri\",\n \"čet\",\n \"pet\",\n \"sub\"\n ],\n wide: [\n \"nedjelja\",\n \"ponedjeljak\",\n \"utorak\",\n \"srijeda\",\n \"četvrtak\",\n \"petak\",\n \"subota\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"sij\",\n \"velj\",\n \"ožu\",\n \"tra\",\n \"svi\",\n \"lip\",\n \"srp\",\n \"kol\",\n \"ruj\",\n \"lis\",\n \"stu\",\n \"pro\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\",\n \"5.\",\n \"6.\",\n \"7.\",\n \"8.\",\n \"9.\",\n \"10.\",\n \"11.\",\n \"12.\"\n ],\n wide: [\n \"siječnja\",\n \"veljače\",\n \"ožujka\",\n \"travnja\",\n \"svibnja\",\n \"lipnja\",\n \"srpnja\",\n \"kolovoza\",\n \"rujna\",\n \"listopada\",\n \"studenoga\",\n \"prosinca\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"sij\",\n \"velj\",\n \"ožu\",\n \"tra\",\n \"svi\",\n \"lip\",\n \"srp\",\n \"kol\",\n \"ruj\",\n \"lis\",\n \"stu\",\n \"pro\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\",\n \"5.\",\n \"6.\",\n \"7.\",\n \"8.\",\n \"9.\",\n \"10.\",\n \"11.\",\n \"12.\"\n ],\n wide: [\n \"siječanj\",\n \"veljača\",\n \"ožujak\",\n \"travanj\",\n \"svibanj\",\n \"lipanj\",\n \"srpanj\",\n \"kolovoz\",\n \"rujan\",\n \"listopad\",\n \"studeni\",\n \"prosinac\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"1kv\",\n \"2kv\",\n \"3kv\",\n \"4kv\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\"\n ],\n wide: [\n \"1. kvartal\",\n \"2. kvartal\",\n \"3. kvartal\",\n \"4. kvartal\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"1. kv.\",\n \"2. kv.\",\n \"3. kv.\",\n \"4. kv.\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\"\n ],\n wide: [\n \"1. kvartal\",\n \"2. kvartal\",\n \"3. kvartal\",\n \"4. kvartal\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"ponoć\",\n am: \"AM\",\n noon: \"podne\",\n pm: \"PM\",\n morning1: \"ujutro\",\n afternoon1: \"popodne\",\n evening1: \"navečer\",\n night1: \"noću\"\n },\n narrow: {\n midnight: \"ponoć\",\n am: \"AM\",\n noon: \"podne\",\n pm: \"PM\",\n morning1: \"ujutro\",\n afternoon1: \"popodne\",\n evening1: \"navečer\",\n night1: \"noću\"\n },\n wide: {\n midnight: \"ponoć\",\n am: \"AM\",\n noon: \"podne\",\n pm: \"PM\",\n morning1: \"ujutro\",\n afternoon1: \"poslije podne\",\n evening1: \"navečer\",\n night1: \"noću\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"ponoć\",\n am: \"AM\",\n noon: \"podne\",\n pm: \"PM\",\n morning1: \"ujutro\",\n afternoon1: \"popodne\",\n evening1: \"navečer\",\n night1: \"noću\"\n },\n narrow: {\n midnight: \"ponoć\",\n am: \"AM\",\n noon: \"podne\",\n pm: \"PM\",\n morning1: \"ujutro\",\n afternoon1: \"popodne\",\n evening1: \"navečer\",\n night1: \"noću\"\n },\n wide: {\n midnight: \"ponoć\",\n am: \"AM\",\n noon: \"podne\",\n pm: \"PM\",\n morning1: \"ujutro\",\n afternoon1: \"popodne\",\n evening1: \"navečer\",\n night1: \"noću\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"prije Krista\",\n \"1\": \"poslije Krista\",\n \"0-alt-variant\": \"prije nove ere\",\n \"1-alt-variant\": \"nove ere\"\n },\n abbreviated: {\n \"0\": \"pr. Kr.\",\n \"1\": \"po. Kr.\",\n \"0-alt-variant\": \"pr. n. e.\",\n \"1-alt-variant\": \"n. e.\"\n },\n narrow: {\n \"0\": \"pr.n.e.\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"pr. n. e.\",\n \"1-alt-variant\": \"n. e.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"godina\",\n short: \"g.\",\n narrow: \"g.\"\n },\n quarter: {\n wide: \"kvartal\",\n short: \"kv.\",\n narrow: \"kv.\"\n },\n month: {\n wide: \"mjesec\",\n short: \"mj.\",\n narrow: \"m.\"\n },\n week: {\n wide: \"tjedan\",\n short: \"tj.\",\n narrow: \"tj.\"\n },\n weekOfMonth: {\n wide: \"tjedan u mjesecu\",\n short: \"tj. u mj.\",\n narrow: \"tj. u mjesecu\"\n },\n day: {\n wide: \"dan\",\n short: \"d.\",\n narrow: \"d.\"\n },\n dayOfYear: {\n wide: \"dan u godini\",\n short: \"dan u god.\",\n narrow: \"dan u g.\"\n },\n weekday: {\n wide: \"dan u tjednu\",\n short: \"dan u tjed.\",\n narrow: \"dan u tj.\"\n },\n weekdayOfMonth: {\n wide: \"radni dan u mjesecu\",\n short: \"radni dan u mj.\",\n narrow: \"r. dan u mj.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"AM/PM\"\n },\n hour: {\n wide: \"sat\",\n short: \"h\",\n narrow: \"h\"\n },\n minute: {\n wide: \"minuta\",\n short: \"min\",\n narrow: \"min\"\n },\n second: {\n wide: \"sekunda\",\n short: \"s\",\n narrow: \"s\"\n },\n zone: {\n wide: \"vremenska zona\",\n short: \"zona\",\n narrow: \"zona\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"hr\",\n likelySubtags: {\n hr: \"hr-Latn-HR\"\n },\n identity: {\n language: \"hr\"\n },\n territory: \"HR\",\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-few\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"hu\",\n likelySubtags: {\n hu: \"hu-Latn-HU\"\n },\n identity: {\n language: \"hu\"\n },\n territory: \"HU\",\n calendar: {\n patterns: {\n d: \"y. MM. dd.\",\n D: \"y. MMMM d., EEEE\",\n m: \"MMM d.\",\n M: \"MMMM d.\",\n y: \"y. MMM\",\n Y: \"y. MMMM\",\n F: \"y. MMMM d., EEEE H:mm:ss\",\n g: \"y. MM. dd. H:mm\",\n G: \"y. MM. dd. H:mm:ss\",\n t: \"H:mm\",\n T: \"H:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} {0}\",\n long: \"{1} {0}\",\n medium: \"{1} {0}\",\n short: \"{1} {0}\",\n availableFormats: {\n Bh: \"B h\",\n Bhm: \"B h:mm\",\n Bhms: \"B h:mm:ss\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E B h:mm\",\n EBhms: \"E B h:mm:ss\",\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: \"G y.\",\n GyMMM: \"G y. MMM\",\n GyMMMd: \"G y. MMM d.\",\n GyMMMEd: \"G y. MMM d., E\",\n h: \"a h\",\n H: \"H\",\n hm: \"a h:mm\",\n Hm: \"H:mm\",\n hms: \"a h:mm:ss\",\n Hms: \"H:mm:ss\",\n hmsv: \"a h:mm:ss v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"a h:mm v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M. d.\",\n MEd: \"M. d., E\",\n MMM: \"LLL\",\n MMMd: \"MMM d.\",\n MMMEd: \"MMM d., E\",\n MMMMd: \"MMMM d.\",\n \"MMMMW-count-one\": \"MMMM W. 'hete'\",\n \"MMMMW-count-other\": \"MMMM W. 'hete'\",\n mmss: \"mm:ss\",\n ms: \"mm:ss\",\n y: \"y.\",\n yM: \"y. M.\",\n yMd: \"y. MM. dd.\",\n yMEd: \"y. MM. dd., E\",\n yMMM: \"y. MMM\",\n yMMMd: \"y. MMM d.\",\n yMMMEd: \"y. MMM d., E\",\n yMMMM: \"y. MMMM\",\n yQQQ: \"y. QQQ\",\n yQQQQ: \"y. QQQQ\",\n \"yw-count-one\": \"Y w. 'hete'\",\n \"yw-count-other\": \"Y w. 'hete'\"\n }\n },\n timeFormats: {\n full: \"H:mm:ss zzzz\",\n long: \"H:mm:ss z\",\n medium: \"H:mm:ss\",\n short: \"H:mm\"\n },\n dateFormats: {\n full: \"y. MMMM d., EEEE\",\n long: \"y. MMMM d.\",\n medium: \"y. MMM d.\",\n short: \"y. MM. dd.\"\n },\n days: {\n format: {\n abbreviated: [\n \"V\",\n \"H\",\n \"K\",\n \"Sze\",\n \"Cs\",\n \"P\",\n \"Szo\"\n ],\n narrow: [\n \"V\",\n \"H\",\n \"K\",\n \"Sz\",\n \"Cs\",\n \"P\",\n \"Sz\"\n ],\n short: [\n \"V\",\n \"H\",\n \"K\",\n \"Sze\",\n \"Cs\",\n \"P\",\n \"Szo\"\n ],\n wide: [\n \"vasárnap\",\n \"hétfő\",\n \"kedd\",\n \"szerda\",\n \"csütörtök\",\n \"péntek\",\n \"szombat\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"V\",\n \"H\",\n \"K\",\n \"Sze\",\n \"Cs\",\n \"P\",\n \"Szo\"\n ],\n narrow: [\n \"V\",\n \"H\",\n \"K\",\n \"Sz\",\n \"Cs\",\n \"P\",\n \"Sz\"\n ],\n short: [\n \"V\",\n \"H\",\n \"K\",\n \"Sze\",\n \"Cs\",\n \"P\",\n \"Szo\"\n ],\n wide: [\n \"vasárnap\",\n \"hétfő\",\n \"kedd\",\n \"szerda\",\n \"csütörtök\",\n \"péntek\",\n \"szombat\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"jan.\",\n \"febr.\",\n \"márc.\",\n \"ápr.\",\n \"máj.\",\n \"jún.\",\n \"júl.\",\n \"aug.\",\n \"szept.\",\n \"okt.\",\n \"nov.\",\n \"dec.\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"Á\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"Sz\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"január\",\n \"február\",\n \"március\",\n \"április\",\n \"május\",\n \"június\",\n \"július\",\n \"augusztus\",\n \"szeptember\",\n \"október\",\n \"november\",\n \"december\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"jan.\",\n \"febr.\",\n \"márc.\",\n \"ápr.\",\n \"máj.\",\n \"jún.\",\n \"júl.\",\n \"aug.\",\n \"szept.\",\n \"okt.\",\n \"nov.\",\n \"dec.\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"Á\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"Sz\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"január\",\n \"február\",\n \"március\",\n \"április\",\n \"május\",\n \"június\",\n \"július\",\n \"augusztus\",\n \"szeptember\",\n \"október\",\n \"november\",\n \"december\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"I. n.év\",\n \"II. n.év\",\n \"III. n.év\",\n \"IV. n.év\"\n ],\n narrow: [\n \"I.\",\n \"II.\",\n \"III.\",\n \"IV.\"\n ],\n wide: [\n \"I. negyedév\",\n \"II. negyedév\",\n \"III. negyedév\",\n \"IV. negyedév\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"1. n.év\",\n \"2. n.év\",\n \"3. n.év\",\n \"4. n.év\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\"\n ],\n wide: [\n \"1. negyedév\",\n \"2. negyedév\",\n \"3. negyedév\",\n \"4. negyedév\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"éjfél\",\n am: \"de.\",\n noon: \"dél\",\n pm: \"du.\",\n morning1: \"reggel\",\n morning2: \"de.\",\n afternoon1: \"du.\",\n evening1: \"este\",\n night1: \"éjjel\",\n night2: \"hajnal\"\n },\n narrow: {\n midnight: \"éjfél\",\n am: \"de.\",\n noon: \"dél\",\n pm: \"du.\",\n morning1: \"reggel\",\n morning2: \"de.\",\n afternoon1: \"du.\",\n evening1: \"este\",\n night1: \"éjjel\",\n night2: \"hajnal\"\n },\n wide: {\n midnight: \"éjfél\",\n am: \"de.\",\n noon: \"dél\",\n pm: \"du.\",\n morning1: \"reggel\",\n morning2: \"délelőtt\",\n afternoon1: \"délután\",\n evening1: \"este\",\n night1: \"éjjel\",\n night2: \"hajnal\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"éjfél\",\n am: \"de.\",\n noon: \"dél\",\n pm: \"du.\",\n morning1: \"reggel\",\n morning2: \"de.\",\n afternoon1: \"du.\",\n evening1: \"este\",\n night1: \"éjjel\",\n night2: \"hajnal\"\n },\n narrow: {\n midnight: \"éjfél\",\n am: \"de.\",\n noon: \"dél\",\n pm: \"du.\",\n morning1: \"reggel\",\n morning2: \"de.\",\n afternoon1: \"du.\",\n evening1: \"este\",\n night1: \"éjjel\",\n night2: \"hajnal\"\n },\n wide: {\n midnight: \"éjfél\",\n am: \"de.\",\n noon: \"dél\",\n pm: \"du.\",\n morning1: \"reggel\",\n morning2: \"délelőtt\",\n afternoon1: \"délután\",\n evening1: \"este\",\n night1: \"éjjel\",\n night2: \"hajnal\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Krisztus előtt\",\n \"1\": \"időszámításunk szerint\",\n \"0-alt-variant\": \"időszámításunk előtt\",\n \"1-alt-variant\": \"i. sz.\"\n },\n abbreviated: {\n \"0\": \"i. e.\",\n \"1\": \"i. sz.\",\n \"0-alt-variant\": \"i.e.\",\n \"1-alt-variant\": \"i.sz.\"\n },\n narrow: {\n \"0\": \"ie.\",\n \"1\": \"isz.\",\n \"0-alt-variant\": \"i.e.\",\n \"1-alt-variant\": \"i.sz.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"éra\",\n short: \"éra\",\n narrow: \"éra\"\n },\n year: {\n wide: \"év\",\n short: \"év\",\n narrow: \"év\"\n },\n quarter: {\n wide: \"negyedév\",\n short: \"n.év\",\n narrow: \"n.év\"\n },\n month: {\n wide: \"hónap\",\n short: \"hónap\",\n narrow: \"hónap\"\n },\n week: {\n wide: \"hét\",\n short: \"hét\",\n narrow: \"hét\"\n },\n weekOfMonth: {\n wide: \"hónap hete\",\n short: \"hónap hete\",\n narrow: \"hónap hete\"\n },\n day: {\n wide: \"nap\",\n short: \"nap\",\n narrow: \"nap\"\n },\n dayOfYear: {\n wide: \"év napja\",\n short: \"év napja\",\n narrow: \"év napja\"\n },\n weekday: {\n wide: \"hét napja\",\n short: \"hét napja\",\n narrow: \"hét napja\"\n },\n weekdayOfMonth: {\n wide: \"hónap hétköznapja\",\n short: \"hónap hétköznapja\",\n narrow: \"hónap hétköznapja\"\n },\n dayperiod: {\n short: \"napszak\",\n wide: \"napszak\",\n narrow: \"napszak\"\n },\n hour: {\n wide: \"óra\",\n short: \"óra\",\n narrow: \"ó\"\n },\n minute: {\n wide: \"perc\",\n short: \"perc\",\n narrow: \"p\"\n },\n second: {\n wide: \"másodperc\",\n short: \"másodperc\",\n narrow: \"mp\"\n },\n zone: {\n wide: \"időzóna\",\n short: \"időzóna\",\n narrow: \"időzóna\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"hu\",\n likelySubtags: {\n hu: \"hu-Latn-HU\"\n },\n identity: {\n language: \"hu\"\n },\n territory: \"HU\",\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 accounting: {\n patterns: [\n \"n $\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n currencyData: {\n HUF: {\n _rounding: \"0\",\n _digits: \"2\",\n _cashRounding: \"0\",\n _cashDigits: \"0\"\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"lt\",\n likelySubtags: {\n lt: \"lt-Latn-LT\"\n },\n identity: {\n language: \"lt\"\n },\n territory: \"LT\",\n calendar: {\n patterns: {\n d: \"y-MM-dd\",\n D: \"y 'm'. MMMM d 'd'., EEEE\",\n m: \"MM-dd\",\n M: \"MMMM d 'd'.\",\n y: \"y-MM\",\n Y: \"y 'm'. LLLL\",\n F: \"y 'm'. MMMM d 'd'., EEEE HH:mm:ss\",\n g: \"y-MM-dd HH:mm\",\n G: \"y-MM-dd HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} {0}\",\n long: \"{1} {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: \"dd\",\n E: \"ccc\",\n EBhm: \"h:mm B, E\",\n EBhms: \"h:mm:ss B, E\",\n Ed: \"d, E\",\n Ehm: \"hh:mm a, E\",\n EHm: \"HH:mm, E\",\n Ehms: \"hh:mm:ss a, E\",\n EHms: \"HH:mm:ss, E\",\n Gy: \"y 'm'. G\",\n GyMMM: \"y-MM G\",\n GyMMMd: \"y-MM-dd G\",\n GyMMMEd: \"y-MM-dd G, E\",\n GyMMMM: \"y 'm'. G, LLLL\",\n GyMMMMd: \"y 'm'. G MMMM d 'd'.\",\n GyMMMMEd: \"y 'm'. G MMMM d 'd'., E\",\n h: \"hh a\",\n H: \"HH\",\n hm: \"hh:mm a\",\n Hm: \"HH:mm\",\n hms: \"hh:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"hh:mm:ss a; v\",\n Hmsv: \"HH:mm:ss; v\",\n hmv: \"hh:mm a; v\",\n Hmv: \"HH:mm; v\",\n M: \"MM\",\n Md: \"MM-d\",\n MEd: \"MM-dd, E\",\n MMdd: \"MM-dd\",\n MMM: \"MM\",\n MMMd: \"MM-dd\",\n MMMEd: \"MM-dd, E\",\n MMMM: \"LLLL\",\n MMMMd: \"MMMM d 'd'.\",\n MMMMEd: \"MMMM d 'd'., E\",\n \"MMMMW-count-one\": \"MMMM W 'sav'.\",\n \"MMMMW-count-few\": \"MMMM W 'sav'.\",\n \"MMMMW-count-many\": \"MMMM W 'sav'.\",\n \"MMMMW-count-other\": \"MMMM W 'sav'.\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"y-MM\",\n yMd: \"y-MM-dd\",\n yMEd: \"y-MM-dd, E\",\n yMMM: \"y-MM\",\n yMMMd: \"y-MM-dd\",\n yMMMEd: \"y-MM-dd, E\",\n yMMMM: \"y 'm'. LLLL\",\n yMMMMd: \"y 'm'. MMMM d 'd'.\",\n yMMMMEd: \"y 'm'. MMMM d 'd'., E\",\n yQQQ: \"y QQQ\",\n yQQQQ: \"y QQQQ\",\n \"yw-count-one\": \"Y w 'sav'.\",\n \"yw-count-few\": \"Y w 'sav'.\",\n \"yw-count-many\": \"Y w 'sav'.\",\n \"yw-count-other\": \"Y w 'sav'.\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"y 'm'. MMMM d 'd'., EEEE\",\n long: \"y 'm'. MMMM d 'd'.\",\n medium: \"y-MM-dd\",\n short: \"y-MM-dd\"\n },\n days: {\n format: {\n abbreviated: [\n \"sk\",\n \"pr\",\n \"an\",\n \"tr\",\n \"kt\",\n \"pn\",\n \"št\"\n ],\n narrow: [\n \"S\",\n \"P\",\n \"A\",\n \"T\",\n \"K\",\n \"P\",\n \"Š\"\n ],\n short: [\n \"Sk\",\n \"Pr\",\n \"An\",\n \"Tr\",\n \"Kt\",\n \"Pn\",\n \"Št\"\n ],\n wide: [\n \"sekmadienis\",\n \"pirmadienis\",\n \"antradienis\",\n \"trečiadienis\",\n \"ketvirtadienis\",\n \"penktadienis\",\n \"šeštadienis\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"sk\",\n \"pr\",\n \"an\",\n \"tr\",\n \"kt\",\n \"pn\",\n \"št\"\n ],\n narrow: [\n \"S\",\n \"P\",\n \"A\",\n \"T\",\n \"K\",\n \"P\",\n \"Š\"\n ],\n short: [\n \"Sk\",\n \"Pr\",\n \"An\",\n \"Tr\",\n \"Kt\",\n \"Pn\",\n \"Št\"\n ],\n wide: [\n \"sekmadienis\",\n \"pirmadienis\",\n \"antradienis\",\n \"trečiadienis\",\n \"ketvirtadienis\",\n \"penktadienis\",\n \"šeštadienis\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"saus.\",\n \"vas.\",\n \"kov.\",\n \"bal.\",\n \"geg.\",\n \"birž.\",\n \"liep.\",\n \"rugp.\",\n \"rugs.\",\n \"spal.\",\n \"lapkr.\",\n \"gruod.\"\n ],\n narrow: [\n \"S\",\n \"V\",\n \"K\",\n \"B\",\n \"G\",\n \"B\",\n \"L\",\n \"R\",\n \"R\",\n \"S\",\n \"L\",\n \"G\"\n ],\n wide: [\n \"sausio\",\n \"vasario\",\n \"kovo\",\n \"balandžio\",\n \"gegužės\",\n \"birželio\",\n \"liepos\",\n \"rugpjūčio\",\n \"rugsėjo\",\n \"spalio\",\n \"lapkričio\",\n \"gruodžio\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"saus.\",\n \"vas.\",\n \"kov.\",\n \"bal.\",\n \"geg.\",\n \"birž.\",\n \"liep.\",\n \"rugp.\",\n \"rugs.\",\n \"spal.\",\n \"lapkr.\",\n \"gruod.\"\n ],\n narrow: [\n \"S\",\n \"V\",\n \"K\",\n \"B\",\n \"G\",\n \"B\",\n \"L\",\n \"R\",\n \"R\",\n \"S\",\n \"L\",\n \"G\"\n ],\n wide: [\n \"sausis\",\n \"vasaris\",\n \"kovas\",\n \"balandis\",\n \"gegužė\",\n \"birželis\",\n \"liepa\",\n \"rugpjūtis\",\n \"rugsėjis\",\n \"spalis\",\n \"lapkritis\",\n \"gruodis\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"I k.\",\n \"II k.\",\n \"III k.\",\n \"IV k.\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"I ketvirtis\",\n \"II ketvirtis\",\n \"III ketvirtis\",\n \"IV ketvirtis\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"I ketv.\",\n \"II ketv.\",\n \"III ketv.\",\n \"IV ketv.\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"I ketvirtis\",\n \"II ketvirtis\",\n \"III ketvirtis\",\n \"IV ketvirtis\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"vidurnaktis\",\n am: \"priešpiet\",\n noon: \"perpiet\",\n pm: \"popiet\",\n morning1: \"rytas\",\n afternoon1: \"popietė\",\n evening1: \"vakaras\",\n night1: \"naktis\"\n },\n narrow: {\n midnight: \"vidurnaktis\",\n am: \"pr. p.\",\n noon: \"perpiet\",\n pm: \"pop.\",\n morning1: \"rytas\",\n afternoon1: \"popietė\",\n evening1: \"vakaras\",\n night1: \"naktis\"\n },\n wide: {\n midnight: \"vidurnaktis\",\n am: \"priešpiet\",\n noon: \"perpiet\",\n pm: \"popiet\",\n morning1: \"rytas\",\n afternoon1: \"popietė\",\n evening1: \"vakaras\",\n night1: \"naktis\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"vidurnaktis\",\n am: \"priešpiet\",\n noon: \"vidurdienis\",\n pm: \"popiet\",\n morning1: \"rytas\",\n afternoon1: \"diena\",\n evening1: \"vakaras\",\n night1: \"naktis\"\n },\n narrow: {\n midnight: \"vidurnaktis\",\n am: \"pr. p.\",\n noon: \"vidurdienis\",\n pm: \"pop.\",\n morning1: \"rytas\",\n afternoon1: \"diena\",\n evening1: \"vakaras\",\n night1: \"naktis\"\n },\n wide: {\n midnight: \"vidurnaktis\",\n am: \"priešpiet\",\n noon: \"vidurdienis\",\n pm: \"popiet\",\n morning1: \"rytas\",\n afternoon1: \"diena\",\n evening1: \"vakaras\",\n night1: \"naktis\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"prieš Kristų\",\n \"1\": \"po Kristaus\",\n \"0-alt-variant\": \"prieš mūsų erą\",\n \"1-alt-variant\": \"mūsų eroje\"\n },\n abbreviated: {\n \"0\": \"pr. Kr.\",\n \"1\": \"po Kr.\",\n \"0-alt-variant\": \"pr. m. e.\",\n \"1-alt-variant\": \"mūsų eroje\"\n },\n narrow: {\n \"0\": \"pr. Kr.\",\n \"1\": \"po Kr.\",\n \"0-alt-variant\": \"pr. m. e.\",\n \"1-alt-variant\": \"mūsų eroje\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"metai\",\n short: \"m.\",\n narrow: \"m.\"\n },\n quarter: {\n wide: \"ketvirtis\",\n short: \"ketv.\",\n narrow: \"ketv.\"\n },\n month: {\n wide: \"mėnuo\",\n short: \"mėn.\",\n narrow: \"mėn.\"\n },\n week: {\n wide: \"savaitė\",\n short: \"sav.\",\n narrow: \"sav.\"\n },\n weekOfMonth: {\n wide: \"mėnesio savaitė\",\n short: \"mėnesio savaitė\",\n narrow: \"mėnesio savaitė\"\n },\n day: {\n wide: \"diena\",\n short: \"d.\",\n narrow: \"d.\"\n },\n dayOfYear: {\n wide: \"metų diena\",\n short: \"metų diena\",\n narrow: \"metų diena\"\n },\n weekday: {\n wide: \"savaitės diena\",\n short: \"savaitės diena\",\n narrow: \"savaitės diena\"\n },\n weekdayOfMonth: {\n wide: \"mėnesio šiokiadienis\",\n short: \"mėnesio šiokiadienis\",\n narrow: \"mėnesio šiokiadienis\"\n },\n dayperiod: {\n short: \"iki pietų / po pietų\",\n wide: \"iki pietų / po pietų\",\n narrow: \"iki pietų / po pietų\"\n },\n hour: {\n wide: \"valanda\",\n short: \"val.\",\n narrow: \"h\"\n },\n minute: {\n wide: \"minutė\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"sekundė\",\n short: \"sek.\",\n narrow: \"s\"\n },\n zone: {\n wide: \"laiko juosta\",\n short: \"laiko juosta\",\n narrow: \"laiko juosta\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"lt\",\n likelySubtags: {\n lt: \"lt-Latn-LT\"\n },\n identity: {\n language: \"lt\"\n },\n territory: \"LT\",\n numbers: {\n symbols: {\n decimal: \",\",\n group: \" \",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"−\",\n exponential: \"×10^\",\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-few\": \"n $\",\n \"unitPattern-count-many\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"lv\",\n likelySubtags: {\n lv: \"lv-Latn-LV\"\n },\n identity: {\n language: \"lv\"\n },\n territory: \"LV\",\n calendar: {\n patterns: {\n d: \"dd.MM.y\",\n D: \"EEEE, y. 'gada' d. MMMM\",\n m: \"d. MMM\",\n M: \"d. MMMM\",\n y: \"y. 'g'. MMM\",\n Y: \"y. 'g'. MMMM\",\n F: \"EEEE, y. 'gada' d. MMMM HH:mm:ss\",\n g: \"y.MM.d. HH:mm\",\n G: \"y.MM.d. HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} {0}\",\n long: \"{1} {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: \"E, d.\",\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: \"G y. 'g'.\",\n GyMMM: \"G y. 'g'. MMM\",\n GyMMMd: \"G y. 'g'. d. MMM\",\n GyMMMEd: \"E, G y. 'g'. d. MMM\",\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: \"dd.MM.\",\n MEd: \"E, dd.MM.\",\n MMM: \"LLL\",\n MMMd: \"d. MMM\",\n MMMEd: \"E, d. MMM\",\n MMMMd: \"d. MMMM\",\n MMMMEd: \"E, d. MMMM\",\n \"MMMMW-count-zero\": \"MMMM, W. 'nedēļa'\",\n \"MMMMW-count-one\": \"MMMM, W. 'nedēļa'\",\n \"MMMMW-count-other\": \"MMMM, W. 'nedēļa'\",\n mmss: \"mm:ss\",\n ms: \"mm:ss\",\n y: \"y. 'g'.\",\n yM: \"MM.y.\",\n yMd: \"y.MM.d.\",\n yMEd: \"E, d.M.y.\",\n yMMM: \"y. 'g'. MMM\",\n yMMMd: \"y. 'g'. d. MMM\",\n yMMMEd: \"E, y. 'g'. d. MMM\",\n yMMMM: \"y. 'g'. MMMM\",\n yQQQ: \"y. 'g'. QQQ\",\n yQQQQ: \"y. 'g'. QQQQ\",\n \"yw-count-zero\": \"Y. 'g'. w. 'nedēļa'\",\n \"yw-count-one\": \"Y. 'g'. w. 'nedēļa'\",\n \"yw-count-other\": \"Y. 'g'. w. 'nedēļa'\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, y. 'gada' d. MMMM\",\n long: \"y. 'gada' d. MMMM\",\n medium: \"y. 'gada' d. MMM\",\n short: \"dd.MM.yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"svētd.\",\n \"pirmd.\",\n \"otrd.\",\n \"trešd.\",\n \"ceturtd.\",\n \"piektd.\",\n \"sestd.\"\n ],\n narrow: [\n \"S\",\n \"P\",\n \"O\",\n \"T\",\n \"C\",\n \"P\",\n \"S\"\n ],\n short: [\n \"Sv\",\n \"Pr\",\n \"Ot\",\n \"Tr\",\n \"Ce\",\n \"Pk\",\n \"Se\"\n ],\n wide: [\n \"svētdiena\",\n \"pirmdiena\",\n \"otrdiena\",\n \"trešdiena\",\n \"ceturtdiena\",\n \"piektdiena\",\n \"sestdiena\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Svētd.\",\n \"Pirmd.\",\n \"Otrd.\",\n \"Trešd.\",\n \"Ceturtd.\",\n \"Piektd.\",\n \"Sestd.\"\n ],\n narrow: [\n \"S\",\n \"P\",\n \"O\",\n \"T\",\n \"C\",\n \"P\",\n \"S\"\n ],\n short: [\n \"Sv\",\n \"Pr\",\n \"Ot\",\n \"Tr\",\n \"Ce\",\n \"Pk\",\n \"Se\"\n ],\n wide: [\n \"Svētdiena\",\n \"Pirmdiena\",\n \"Otrdiena\",\n \"Trešdiena\",\n \"Ceturtdiena\",\n \"Piektdiena\",\n \"Sestdiena\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"janv.\",\n \"febr.\",\n \"marts\",\n \"apr.\",\n \"maijs\",\n \"jūn.\",\n \"jūl.\",\n \"aug.\",\n \"sept.\",\n \"okt.\",\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 \"janvāris\",\n \"februāris\",\n \"marts\",\n \"aprīlis\",\n \"maijs\",\n \"jūnijs\",\n \"jūlijs\",\n \"augusts\",\n \"septembris\",\n \"oktobris\",\n \"novembris\",\n \"decembris\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"janv.\",\n \"febr.\",\n \"marts\",\n \"apr.\",\n \"maijs\",\n \"jūn.\",\n \"jūl.\",\n \"aug.\",\n \"sept.\",\n \"okt.\",\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 \"janvāris\",\n \"februāris\",\n \"marts\",\n \"aprīlis\",\n \"maijs\",\n \"jūnijs\",\n \"jūlijs\",\n \"augusts\",\n \"septembris\",\n \"oktobris\",\n \"novembris\",\n \"decembris\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"1. cet.\",\n \"2. cet.\",\n \"3. cet.\",\n \"4. cet.\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\"\n ],\n wide: [\n \"1. ceturksnis\",\n \"2. ceturksnis\",\n \"3. ceturksnis\",\n \"4. ceturksnis\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"1. cet.\",\n \"2. cet.\",\n \"3. cet.\",\n \"4. cet.\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\"\n ],\n wide: [\n \"1. ceturksnis\",\n \"2. ceturksnis\",\n \"3. ceturksnis\",\n \"4. ceturksnis\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"pusnaktī\",\n am: \"priekšp.\",\n noon: \"pusd.\",\n pm: \"pēcp.\",\n morning1: \"no rīta\",\n afternoon1: \"pēcpusd.\",\n evening1: \"vakarā\",\n night1: \"naktī\"\n },\n narrow: {\n midnight: \"pusnaktī\",\n am: \"priekšp.\",\n noon: \"pusd.\",\n pm: \"pēcp.\",\n morning1: \"no rīta\",\n afternoon1: \"pēcpusd.\",\n evening1: \"vakarā\",\n night1: \"naktī\"\n },\n wide: {\n midnight: \"pusnaktī\",\n am: \"priekšpusdienā\",\n noon: \"pusdienlaikā\",\n pm: \"pēcpusdienā\",\n morning1: \"no rīta\",\n afternoon1: \"pēcpusdienā\",\n evening1: \"vakarā\",\n night1: \"naktī\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"pusnakts\",\n am: \"priekšp.\",\n noon: \"pusd.\",\n pm: \"pēcpusd.\",\n morning1: \"rīts\",\n afternoon1: \"pēcpusdiena\",\n evening1: \"vakars\",\n night1: \"nakts\"\n },\n narrow: {\n midnight: \"pusnakts\",\n am: \"priekšp.\",\n noon: \"pusd.\",\n pm: \"pēcpusd.\",\n morning1: \"rīts\",\n afternoon1: \"pēcpusd.\",\n evening1: \"vakars\",\n night1: \"nakts\"\n },\n wide: {\n midnight: \"pusnakts\",\n am: \"priekšpusdiena\",\n noon: \"pusdienlaiks\",\n pm: \"pēcpusdiena\",\n morning1: \"rīts\",\n afternoon1: \"pēcpusdiena\",\n evening1: \"vakars\",\n night1: \"nakts\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"pirms mūsu ēras\",\n \"1\": \"mūsu ērā\",\n \"0-alt-variant\": \"pirms mūsu ēras\",\n \"1-alt-variant\": \"mūsu ērā\"\n },\n abbreviated: {\n \"0\": \"p.m.ē.\",\n \"1\": \"m.ē.\",\n \"0-alt-variant\": \"p.m.ē.\",\n \"1-alt-variant\": \"m.ē.\"\n },\n narrow: {\n \"0\": \"p.m.ē.\",\n \"1\": \"m.ē.\",\n \"0-alt-variant\": \"p.m.ē.\",\n \"1-alt-variant\": \"m.ē.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"ēra\",\n short: \"ēra\",\n narrow: \"ēra\"\n },\n year: {\n wide: \"gads\",\n short: \"g.\",\n narrow: \"g.\"\n },\n quarter: {\n wide: \"ceturksnis\",\n short: \"cet.\",\n narrow: \"cet.\"\n },\n month: {\n wide: \"mēnesis\",\n short: \"mēn.\",\n narrow: \"mēn.\"\n },\n week: {\n wide: \"nedēļa\",\n short: \"ned.\",\n narrow: \"ned.\"\n },\n weekOfMonth: {\n wide: \"mēneša nedēļa\",\n short: \"mēneša ned.\",\n narrow: \"mēneša ned.\"\n },\n day: {\n wide: \"diena\",\n short: \"d.\",\n narrow: \"d.\"\n },\n dayOfYear: {\n wide: \"gada diena\",\n short: \"gada diena\",\n narrow: \"gada diena\"\n },\n weekday: {\n wide: \"nedēļas diena\",\n short: \"nedēļas diena\",\n narrow: \"nedēļas diena\"\n },\n weekdayOfMonth: {\n wide: \"mēneša nedēļas diena\",\n short: \"mēneša ned. diena\",\n narrow: \"mēneša ned. diena\"\n },\n dayperiod: {\n short: \"priekšpusd./pēcpusd.\",\n wide: \"priekšpusdienā/pēcpusdienā\",\n narrow: \"priekšpusd./pēcpusd.\"\n },\n hour: {\n wide: \"stundas\",\n short: \"st.\",\n narrow: \"h\"\n },\n minute: {\n wide: \"minūtes\",\n short: \"min.\",\n narrow: \"min\"\n },\n second: {\n wide: \"sekundes\",\n short: \"sek.\",\n narrow: \"s\"\n },\n zone: {\n wide: \"laika josla\",\n short: \"laika josla\",\n narrow: \"laika josla\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"lv\",\n likelySubtags: {\n lv: \"lv-Latn-LV\"\n },\n identity: {\n language: \"lv\"\n },\n territory: \"LV\",\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: \"NS\",\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-zero\": \"n $\",\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"pl\",\n likelySubtags: {\n pl: \"pl-Latn-PL\"\n },\n identity: {\n language: \"pl\"\n },\n territory: \"PL\",\n calendar: {\n patterns: {\n d: \"dd.MM.y\",\n D: \"EEEE, d MMMM y\",\n m: \"d MMM\",\n M: \"d MMMM\",\n y: \"LLL y\",\n Y: \"LLLL y\",\n F: \"EEEE, d MMMM y HH:mm:ss\",\n g: \"d.MM.y HH:mm\",\n G: \"d.MM.y HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} {0}\",\n long: \"{1} {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: \"E, d\",\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: \"d MMM y G\",\n GyMMMEd: \"E, d MMM y G\",\n GyMMMM: \"LLLL y G\",\n GyMMMMd: \"d MMMM y G\",\n GyMMMMEd: \"E, d MMMM 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: \"d.MM\",\n MEd: \"E, d.MM\",\n MMM: \"LLL\",\n MMMd: \"d MMM\",\n MMMEd: \"E, d MMM\",\n MMMMd: \"d MMMM\",\n MMMMEd: \"E, d MMMM\",\n \"MMMMW-count-one\": \"LLLL, 'tydz'. W\",\n \"MMMMW-count-few\": \"LLLL, 'tydz'. W\",\n \"MMMMW-count-many\": \"LLLL, 'tydz'. W\",\n \"MMMMW-count-other\": \"LLLL, 'tydz'. W\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"MM.y\",\n yMd: \"d.MM.y\",\n yMEd: \"E, d.MM.y\",\n yMMM: \"LLL y\",\n yMMMd: \"d MMM y\",\n yMMMEd: \"E, d MMM y\",\n yMMMM: \"LLLL y\",\n yMMMMd: \"d MMMM y\",\n yMMMMEd: \"E, d MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"Y, 'tydz'. w\",\n \"yw-count-few\": \"Y, 'tydz'. w\",\n \"yw-count-many\": \"Y, 'tydz'. w\",\n \"yw-count-other\": \"Y, 'tydz'. w\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, d MMMM y\",\n long: \"d MMMM y\",\n medium: \"d MMM y\",\n short: \"dd.MM.y\"\n },\n days: {\n format: {\n abbreviated: [\n \"niedz.\",\n \"pon.\",\n \"wt.\",\n \"śr.\",\n \"czw.\",\n \"pt.\",\n \"sob.\"\n ],\n narrow: [\n \"n\",\n \"p\",\n \"w\",\n \"ś\",\n \"c\",\n \"p\",\n \"s\"\n ],\n short: [\n \"nie\",\n \"pon\",\n \"wto\",\n \"śro\",\n \"czw\",\n \"pią\",\n \"sob\"\n ],\n wide: [\n \"niedziela\",\n \"poniedziałek\",\n \"wtorek\",\n \"środa\",\n \"czwartek\",\n \"piątek\",\n \"sobota\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"niedz.\",\n \"pon.\",\n \"wt.\",\n \"śr.\",\n \"czw.\",\n \"pt.\",\n \"sob.\"\n ],\n narrow: [\n \"N\",\n \"P\",\n \"W\",\n \"Ś\",\n \"C\",\n \"P\",\n \"S\"\n ],\n short: [\n \"nie\",\n \"pon\",\n \"wto\",\n \"śro\",\n \"czw\",\n \"pią\",\n \"sob\"\n ],\n wide: [\n \"niedziela\",\n \"poniedziałek\",\n \"wtorek\",\n \"środa\",\n \"czwartek\",\n \"piątek\",\n \"sobota\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"sty\",\n \"lut\",\n \"mar\",\n \"kwi\",\n \"maj\",\n \"cze\",\n \"lip\",\n \"sie\",\n \"wrz\",\n \"paź\",\n \"lis\",\n \"gru\"\n ],\n narrow: [\n \"s\",\n \"l\",\n \"m\",\n \"k\",\n \"m\",\n \"c\",\n \"l\",\n \"s\",\n \"w\",\n \"p\",\n \"l\",\n \"g\"\n ],\n wide: [\n \"stycznia\",\n \"lutego\",\n \"marca\",\n \"kwietnia\",\n \"maja\",\n \"czerwca\",\n \"lipca\",\n \"sierpnia\",\n \"września\",\n \"października\",\n \"listopada\",\n \"grudnia\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"sty\",\n \"lut\",\n \"mar\",\n \"kwi\",\n \"maj\",\n \"cze\",\n \"lip\",\n \"sie\",\n \"wrz\",\n \"paź\",\n \"lis\",\n \"gru\"\n ],\n narrow: [\n \"S\",\n \"L\",\n \"M\",\n \"K\",\n \"M\",\n \"C\",\n \"L\",\n \"S\",\n \"W\",\n \"P\",\n \"L\",\n \"G\"\n ],\n wide: [\n \"styczeń\",\n \"luty\",\n \"marzec\",\n \"kwiecień\",\n \"maj\",\n \"czerwiec\",\n \"lipiec\",\n \"sierpień\",\n \"wrzesień\",\n \"październik\",\n \"listopad\",\n \"grudzień\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"I kw.\",\n \"II kw.\",\n \"III kw.\",\n \"IV kw.\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"I kwartał\",\n \"II kwartał\",\n \"III kwartał\",\n \"IV kwartał\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"I kw.\",\n \"II kw.\",\n \"III kw.\",\n \"IV kw.\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"I kwartał\",\n \"II kwartał\",\n \"III kwartał\",\n \"IV kwartał\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"o północy\",\n am: \"AM\",\n noon: \"w południe\",\n pm: \"PM\",\n morning1: \"rano\",\n morning2: \"przed południem\",\n afternoon1: \"po południu\",\n evening1: \"wieczorem\",\n night1: \"w nocy\"\n },\n narrow: {\n midnight: \"o półn.\",\n am: \"a\",\n noon: \"w poł.\",\n pm: \"p\",\n morning1: \"rano\",\n morning2: \"przed poł.\",\n afternoon1: \"po poł.\",\n evening1: \"wiecz.\",\n night1: \"w nocy\"\n },\n wide: {\n midnight: \"o północy\",\n am: \"AM\",\n noon: \"w południe\",\n pm: \"PM\",\n morning1: \"rano\",\n morning2: \"przed południem\",\n afternoon1: \"po południu\",\n evening1: \"wieczorem\",\n night1: \"w nocy\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"północ\",\n am: \"AM\",\n noon: \"południe\",\n pm: \"PM\",\n morning1: \"rano\",\n morning2: \"przedpołudnie\",\n afternoon1: \"popołudnie\",\n evening1: \"wieczór\",\n night1: \"noc\"\n },\n narrow: {\n midnight: \"półn.\",\n am: \"a\",\n noon: \"poł.\",\n pm: \"p\",\n morning1: \"rano\",\n morning2: \"przedpoł.\",\n afternoon1: \"popoł.\",\n evening1: \"wiecz.\",\n night1: \"noc\"\n },\n wide: {\n midnight: \"północ\",\n am: \"AM\",\n noon: \"południe\",\n pm: \"PM\",\n morning1: \"rano\",\n morning2: \"przedpołudnie\",\n afternoon1: \"popołudnie\",\n evening1: \"wieczór\",\n night1: \"noc\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"przed naszą erą\",\n \"1\": \"naszej ery\",\n \"0-alt-variant\": \"p.n.e.\",\n \"1-alt-variant\": \"n.e.\"\n },\n abbreviated: {\n \"0\": \"p.n.e.\",\n \"1\": \"n.e.\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"p.n.e.\",\n \"1\": \"n.e.\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"rok\",\n short: \"r.\",\n narrow: \"r.\"\n },\n quarter: {\n wide: \"kwartał\",\n short: \"kw.\",\n narrow: \"kw.\"\n },\n month: {\n wide: \"miesiąc\",\n short: \"mies.\",\n narrow: \"mc\"\n },\n week: {\n wide: \"tydzień\",\n short: \"tydz.\",\n narrow: \"tydz.\"\n },\n weekOfMonth: {\n wide: \"tydzień miesiąca\",\n short: \"tydz. mies.\",\n narrow: \"tydz. mies.\"\n },\n day: {\n wide: \"dzień\",\n short: \"dz.\",\n narrow: \"d.\"\n },\n dayOfYear: {\n wide: \"dzień roku\",\n short: \"dz. roku\",\n narrow: \"dz. r.\"\n },\n weekday: {\n wide: \"dzień tygodnia\",\n short: \"dzień tyg.\",\n narrow: \"dz. tyg.\"\n },\n weekdayOfMonth: {\n wide: \"dzień miesiąca\",\n short: \"dzień mies.\",\n narrow: \"dz. mies.\"\n },\n dayperiod: {\n short: \"rano / po południu / wieczorem\",\n wide: \"rano / po południu / wieczorem\",\n narrow: \"rano / po poł. / wiecz.\"\n },\n hour: {\n wide: \"godzina\",\n short: \"godz.\",\n narrow: \"g.\"\n },\n minute: {\n wide: \"minuta\",\n short: \"min\",\n narrow: \"min\"\n },\n second: {\n wide: \"sekunda\",\n short: \"sek.\",\n narrow: \"s\"\n },\n zone: {\n wide: \"strefa czasowa\",\n short: \"str. czasowa\",\n narrow: \"str. czas.\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"pl\",\n likelySubtags: {\n pl: \"pl-Latn-PL\"\n },\n identity: {\n language: \"pl\"\n },\n territory: \"PL\",\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-few\": \"n $\",\n \"unitPattern-count-many\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\",\n \"(n $)\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"ro\",\n likelySubtags: {\n ro: \"ro-Latn-RO\"\n },\n identity: {\n language: \"ro\"\n },\n territory: \"RO\",\n calendar: {\n patterns: {\n d: \"dd.MM.y\",\n D: \"EEEE, d MMMM y\",\n m: \"d MMM\",\n M: \"d MMMM\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, d MMMM y HH:mm:ss\",\n g: \"dd.MM.y HH:mm\",\n G: \"dd.MM.y HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1}, {0}\",\n long: \"{1}, {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: \"E d\",\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: \"d MMM y G\",\n GyMMMEd: \"E, d MMM 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: \"dd.MM\",\n MEd: \"E, dd.MM\",\n MMdd: \"dd.MM\",\n MMM: \"LLL\",\n MMMd: \"d MMM\",\n MMMEd: \"E, d MMM\",\n MMMMd: \"d MMMM\",\n MMMMEd: \"E, d MMMM\",\n \"MMMMW-count-one\": \"'săptămâna' W 'din' MMMM\",\n \"MMMMW-count-few\": \"'săptămâna' W 'din' MMMM\",\n \"MMMMW-count-other\": \"'săptămâna' W 'din' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"MM.y\",\n yMd: \"dd.MM.y\",\n yMEd: \"E, dd.MM.y\",\n yMM: \"MM.y\",\n yMMM: \"MMM y\",\n yMMMd: \"d MMM y\",\n yMMMEd: \"E, d MMM y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'săptămâna' w 'din' Y\",\n \"yw-count-few\": \"'săptămâna' w 'din' Y\",\n \"yw-count-other\": \"'săptămâna' w 'din' Y\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, d MMMM y\",\n long: \"d MMMM y\",\n medium: \"d MMM y\",\n short: \"dd.MM.y\"\n },\n days: {\n format: {\n abbreviated: [\n \"dum.\",\n \"lun.\",\n \"mar.\",\n \"mie.\",\n \"joi\",\n \"vin.\",\n \"sâm.\"\n ],\n narrow: [\n \"D\",\n \"L\",\n \"M\",\n \"M\",\n \"J\",\n \"V\",\n \"S\"\n ],\n short: [\n \"du.\",\n \"lu.\",\n \"ma.\",\n \"mi.\",\n \"joi\",\n \"vi.\",\n \"sâ.\"\n ],\n wide: [\n \"duminică\",\n \"luni\",\n \"marți\",\n \"miercuri\",\n \"joi\",\n \"vineri\",\n \"sâmbătă\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"dum.\",\n \"lun.\",\n \"mar.\",\n \"mie.\",\n \"joi\",\n \"vin.\",\n \"sâm.\"\n ],\n narrow: [\n \"D\",\n \"L\",\n \"M\",\n \"M\",\n \"J\",\n \"V\",\n \"S\"\n ],\n short: [\n \"du.\",\n \"lu.\",\n \"ma.\",\n \"mi.\",\n \"joi\",\n \"vi.\",\n \"sâ.\"\n ],\n wide: [\n \"duminică\",\n \"luni\",\n \"marți\",\n \"miercuri\",\n \"joi\",\n \"vineri\",\n \"sâmbătă\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"ian.\",\n \"feb.\",\n \"mar.\",\n \"apr.\",\n \"mai\",\n \"iun.\",\n \"iul.\",\n \"aug.\",\n \"sept.\",\n \"oct.\",\n \"nov.\",\n \"dec.\"\n ],\n narrow: [\n \"I\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"I\",\n \"I\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"ianuarie\",\n \"februarie\",\n \"martie\",\n \"aprilie\",\n \"mai\",\n \"iunie\",\n \"iulie\",\n \"august\",\n \"septembrie\",\n \"octombrie\",\n \"noiembrie\",\n \"decembrie\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"ian.\",\n \"feb.\",\n \"mar.\",\n \"apr.\",\n \"mai\",\n \"iun.\",\n \"iul.\",\n \"aug.\",\n \"sept.\",\n \"oct.\",\n \"nov.\",\n \"dec.\"\n ],\n narrow: [\n \"I\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"I\",\n \"I\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"ianuarie\",\n \"februarie\",\n \"martie\",\n \"aprilie\",\n \"mai\",\n \"iunie\",\n \"iulie\",\n \"august\",\n \"septembrie\",\n \"octombrie\",\n \"noiembrie\",\n \"decembrie\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"trim. I\",\n \"trim. II\",\n \"trim. III\",\n \"trim. IV\"\n ],\n narrow: [\n \"I\",\n \"II\",\n \"III\",\n \"IV\"\n ],\n wide: [\n \"trimestrul I\",\n \"trimestrul al II-lea\",\n \"trimestrul al III-lea\",\n \"trimestrul al IV-lea\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"trim. I\",\n \"trim. II\",\n \"trim. III\",\n \"trim. IV\"\n ],\n narrow: [\n \"I\",\n \"II\",\n \"III\",\n \"IV\"\n ],\n wide: [\n \"trimestrul I\",\n \"trimestrul al II-lea\",\n \"trimestrul al III-lea\",\n \"trimestrul al IV-lea\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"miezul nopții\",\n am: \"a.m.\",\n noon: \"amiază\",\n pm: \"p.m.\",\n morning1: \"dimineața\",\n afternoon1: \"după-amiaza\",\n evening1: \"seara\",\n night1: \"noaptea\"\n },\n narrow: {\n midnight: \"miezul nopții\",\n am: \"a.m.\",\n noon: \"la amiază\",\n pm: \"p.m.\",\n morning1: \"dimineața\",\n afternoon1: \"după-amiaza\",\n evening1: \"seara\",\n night1: \"noaptea\"\n },\n wide: {\n midnight: \"la miezul nopții\",\n am: \"a.m.\",\n noon: \"la amiază\",\n pm: \"p.m.\",\n morning1: \"dimineața\",\n afternoon1: \"după-amiaza\",\n evening1: \"seara\",\n night1: \"noaptea\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"miezul nopții\",\n am: \"a.m.\",\n noon: \"amiază\",\n pm: \"p.m.\",\n morning1: \"dimineața\",\n afternoon1: \"după-amiaza\",\n evening1: \"seara\",\n night1: \"noaptea\"\n },\n narrow: {\n midnight: \"miezul nopții\",\n am: \"a.m.\",\n noon: \"amiază\",\n pm: \"p.m.\",\n morning1: \"dimineața\",\n afternoon1: \"după-amiaza\",\n evening1: \"seara\",\n night1: \"noaptea\"\n },\n wide: {\n midnight: \"la miezul nopții\",\n am: \"a.m.\",\n noon: \"la amiază\",\n pm: \"p.m.\",\n morning1: \"dimineața\",\n afternoon1: \"după-amiaza\",\n evening1: \"seara\",\n night1: \"noaptea\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"înainte de Hristos\",\n \"1\": \"după Hristos\",\n \"0-alt-variant\": \"înaintea erei noastre\",\n \"1-alt-variant\": \"era noastră\"\n },\n abbreviated: {\n \"0\": \"î.Hr.\",\n \"1\": \"d.Hr.\",\n \"0-alt-variant\": \"î.e.n\",\n \"1-alt-variant\": \"e.n.\"\n },\n narrow: {\n \"0\": \"î.Hr.\",\n \"1\": \"d.Hr.\",\n \"0-alt-variant\": \"î.e.n\",\n \"1-alt-variant\": \"e.n.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"eră\",\n short: \"eră\",\n narrow: \"eră\"\n },\n year: {\n wide: \"an\",\n short: \"an\",\n narrow: \"an\"\n },\n quarter: {\n wide: \"trimestru\",\n short: \"trim.\",\n narrow: \"trim.\"\n },\n month: {\n wide: \"lună\",\n short: \"lună\",\n narrow: \"lună\"\n },\n week: {\n wide: \"săptămână\",\n short: \"săpt.\",\n narrow: \"săpt.\"\n },\n weekOfMonth: {\n wide: \"săptămâna din lună\",\n short: \"săpt. din lună\",\n narrow: \"săpt. din lună\"\n },\n day: {\n wide: \"zi\",\n short: \"zi\",\n narrow: \"zi\"\n },\n dayOfYear: {\n wide: \"ziua din an\",\n short: \"ziua din an\",\n narrow: \"ziua din an\"\n },\n weekday: {\n wide: \"ziua din săptămână\",\n short: \"ziua din săpt.\",\n narrow: \"ziua din săpt.\"\n },\n weekdayOfMonth: {\n wide: \"ziua săptămânii din lună\",\n short: \"ziua săpt. din lună\",\n narrow: \"ziua săpt. din lună\"\n },\n dayperiod: {\n short: \"a.m/p.m.\",\n wide: \"a.m/p.m.\",\n narrow: \"a.m/p.m.\"\n },\n hour: {\n wide: \"oră\",\n short: \"h\",\n narrow: \"h\"\n },\n minute: {\n wide: \"minut\",\n short: \"min.\",\n narrow: \"m\"\n },\n second: {\n wide: \"secundă\",\n short: \"sec.\",\n narrow: \"s\"\n },\n zone: {\n wide: \"fus orar\",\n short: \"fus\",\n narrow: \"fus\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"ro\",\n likelySubtags: {\n ro: \"ro-Latn-RO\"\n },\n identity: {\n language: \"ro\"\n },\n territory: \"RO\",\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-few\": \"n $\",\n \"unitPattern-count-other\": \"n de $\"\n },\n accounting: {\n patterns: [\n \"n $\",\n \"(n $)\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"ru\",\n likelySubtags: {\n ru: \"ru-Cyrl-RU\"\n },\n identity: {\n language: \"ru\"\n },\n territory: \"RU\",\n calendar: {\n patterns: {\n d: \"dd.MM.y\",\n D: \"EEEE, d MMMM y 'г'.\",\n m: \"d MMM\",\n M: \"d MMMM\",\n y: \"LLL y 'г'.\",\n Y: \"LLLL y 'г'.\",\n F: \"EEEE, d MMMM y 'г'. HH:mm:ss\",\n g: \"dd.MM.y HH:mm\",\n G: \"dd.MM.y HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1}, {0}\",\n long: \"{1}, {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: \"ccc, h:mm B\",\n EBhms: \"ccc, h:mm:ss B\",\n Ed: \"ccc, d\",\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: \"LLL y G\",\n GyMMMd: \"d MMM y 'г'. G\",\n GyMMMEd: \"E, d MMM 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: \"dd.MM\",\n MEd: \"E, dd.MM\",\n MMdd: \"dd.MM\",\n MMM: \"LLL\",\n MMMd: \"d MMM\",\n MMMEd: \"ccc, d MMM\",\n MMMMd: \"d MMMM\",\n \"MMMMW-count-one\": \"W-'я' 'неделя' MMMM\",\n \"MMMMW-count-few\": \"W-'я' 'неделя' MMMM\",\n \"MMMMW-count-many\": \"W-'я' 'неделя' MMMM\",\n \"MMMMW-count-other\": \"W-'я' 'неделя' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"MM.y\",\n yMd: \"dd.MM.y\",\n yMEd: \"ccc, dd.MM.y 'г'.\",\n yMM: \"MM.y\",\n yMMM: \"LLL y 'г'.\",\n yMMMd: \"d MMM y 'г'.\",\n yMMMEd: \"E, d MMM y 'г'.\",\n yMMMM: \"LLLL y 'г'.\",\n yQQQ: \"QQQ y 'г'.\",\n yQQQQ: \"QQQQ y 'г'.\",\n \"yw-count-one\": \"w-'я' 'неделя' Y 'г'.\",\n \"yw-count-few\": \"w-'я' 'неделя' Y 'г'.\",\n \"yw-count-many\": \"w-'я' 'неделя' Y 'г'.\",\n \"yw-count-other\": \"w-'я' 'неделя' Y 'г'.\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, d MMMM y 'г'.\",\n long: \"d MMMM y 'г'.\",\n medium: \"d MMM y 'г'.\",\n short: \"dd.MM.y\"\n },\n days: {\n format: {\n abbreviated: [\n \"вс\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n narrow: [\n \"вс\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n short: [\n \"вс\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n wide: [\n \"воскресенье\",\n \"понедельник\",\n \"вторник\",\n \"среда\",\n \"четверг\",\n \"пятница\",\n \"суббота\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"вс\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n narrow: [\n \"В\",\n \"П\",\n \"В\",\n \"С\",\n \"Ч\",\n \"П\",\n \"С\"\n ],\n short: [\n \"вс\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n wide: [\n \"воскресенье\",\n \"понедельник\",\n \"вторник\",\n \"среда\",\n \"четверг\",\n \"пятница\",\n \"суббота\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"янв.\",\n \"февр.\",\n \"мар.\",\n \"апр.\",\n \"мая\",\n \"июн.\",\n \"июл.\",\n \"авг.\",\n \"сент.\",\n \"окт.\",\n \"нояб.\",\n \"дек.\"\n ],\n narrow: [\n \"Я\",\n \"Ф\",\n \"М\",\n \"А\",\n \"М\",\n \"И\",\n \"И\",\n \"А\",\n \"С\",\n \"О\",\n \"Н\",\n \"Д\"\n ],\n wide: [\n \"января\",\n \"февраля\",\n \"марта\",\n \"апреля\",\n \"мая\",\n \"июня\",\n \"июля\",\n \"августа\",\n \"сентября\",\n \"октября\",\n \"ноября\",\n \"декабря\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"янв.\",\n \"февр.\",\n \"март\",\n \"апр.\",\n \"май\",\n \"июнь\",\n \"июль\",\n \"авг.\",\n \"сент.\",\n \"окт.\",\n \"нояб.\",\n \"дек.\"\n ],\n narrow: [\n \"Я\",\n \"Ф\",\n \"М\",\n \"А\",\n \"М\",\n \"И\",\n \"И\",\n \"А\",\n \"С\",\n \"О\",\n \"Н\",\n \"Д\"\n ],\n wide: [\n \"январь\",\n \"февраль\",\n \"март\",\n \"апрель\",\n \"май\",\n \"июнь\",\n \"июль\",\n \"август\",\n \"сентябрь\",\n \"октябрь\",\n \"ноябрь\",\n \"декабрь\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"1-й кв.\",\n \"2-й кв.\",\n \"3-й кв.\",\n \"4-й кв.\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1-й квартал\",\n \"2-й квартал\",\n \"3-й квартал\",\n \"4-й квартал\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"1-й кв.\",\n \"2-й кв.\",\n \"3-й кв.\",\n \"4-й кв.\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1-й квартал\",\n \"2-й квартал\",\n \"3-й квартал\",\n \"4-й квартал\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"полн.\",\n am: \"AM\",\n noon: \"полд.\",\n pm: \"PM\",\n morning1: \"утра\",\n afternoon1: \"дня\",\n evening1: \"вечера\",\n night1: \"ночи\"\n },\n narrow: {\n midnight: \"полн.\",\n am: \"AM\",\n noon: \"полд.\",\n pm: \"PM\",\n morning1: \"утра\",\n afternoon1: \"дня\",\n evening1: \"веч.\",\n night1: \"ночи\"\n },\n wide: {\n midnight: \"полночь\",\n am: \"AM\",\n noon: \"полдень\",\n pm: \"PM\",\n morning1: \"утра\",\n afternoon1: \"дня\",\n evening1: \"вечера\",\n night1: \"ночи\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"полн.\",\n am: \"AM\",\n noon: \"полд.\",\n pm: \"PM\",\n morning1: \"утро\",\n afternoon1: \"день\",\n evening1: \"веч.\",\n night1: \"ночь\"\n },\n narrow: {\n midnight: \"полн.\",\n am: \"AM\",\n noon: \"полд.\",\n pm: \"PM\",\n morning1: \"утро\",\n afternoon1: \"день\",\n evening1: \"веч.\",\n night1: \"ночь\"\n },\n wide: {\n midnight: \"полночь\",\n am: \"AM\",\n noon: \"полдень\",\n pm: \"PM\",\n morning1: \"утро\",\n afternoon1: \"день\",\n evening1: \"вечер\",\n night1: \"ночь\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"до Рождества Христова\",\n \"1\": \"от Рождества Христова\",\n \"0-alt-variant\": \"до нашей эры\",\n \"1-alt-variant\": \"нашей эры\"\n },\n abbreviated: {\n \"0\": \"до н. э.\",\n \"1\": \"н. э.\",\n \"0-alt-variant\": \"до н. э.\",\n \"1-alt-variant\": \"н. э.\"\n },\n narrow: {\n \"0\": \"до н.э.\",\n \"1\": \"н.э.\",\n \"0-alt-variant\": \"до н. э.\",\n \"1-alt-variant\": \"н. э.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"эра\",\n short: \"эра\",\n narrow: \"эра\"\n },\n year: {\n wide: \"год\",\n short: \"г.\",\n narrow: \"г.\"\n },\n quarter: {\n wide: \"квартал\",\n short: \"кв.\",\n narrow: \"кв.\"\n },\n month: {\n wide: \"месяц\",\n short: \"мес.\",\n narrow: \"мес.\"\n },\n week: {\n wide: \"неделя\",\n short: \"нед.\",\n narrow: \"нед.\"\n },\n weekOfMonth: {\n wide: \"неделя месяца\",\n short: \"нед. месяца\",\n narrow: \"нед. мес.\"\n },\n day: {\n wide: \"день\",\n short: \"дн.\",\n narrow: \"дн.\"\n },\n dayOfYear: {\n wide: \"день года\",\n short: \"дн. года\",\n narrow: \"дн. года\"\n },\n weekday: {\n wide: \"день недели\",\n short: \"дн. недели\",\n narrow: \"дн. нед.\"\n },\n weekdayOfMonth: {\n wide: \"день недели в месяце\",\n short: \"дн. нед. в месяце\",\n narrow: \"дн. нед. в мес.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"AM/PM\"\n },\n hour: {\n wide: \"час\",\n short: \"ч\",\n narrow: \"ч\"\n },\n minute: {\n wide: \"минута\",\n short: \"мин.\",\n narrow: \"мин\"\n },\n second: {\n wide: \"секунда\",\n short: \"сек.\",\n narrow: \"с\"\n },\n zone: {\n wide: \"часовой пояс\",\n short: \"час. пояс\",\n narrow: \"час. пояс\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"ru\",\n likelySubtags: {\n ru: \"ru-Cyrl-RU\"\n },\n identity: {\n language: \"ru\"\n },\n territory: \"RU\",\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: \"не число\",\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-few\": \"n $\",\n \"unitPattern-count-many\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"sk\",\n likelySubtags: {\n sk: \"sk-Latn-SK\"\n },\n identity: {\n language: \"sk\"\n },\n territory: \"SK\",\n calendar: {\n patterns: {\n d: \"d. M. y\",\n D: \"EEEE d. MMMM y\",\n m: \"d. M.\",\n M: \"d. MMMM\",\n y: \"M/y\",\n Y: \"LLLL y\",\n F: \"EEEE d. MMMM y H:mm:ss\",\n g: \"d. M. y H:mm\",\n G: \"d. M. y H:mm:ss\",\n t: \"H:mm\",\n T: \"H:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1}, {0}\",\n long: \"{1}, {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: \"E d.\",\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: \"LLLL y G\",\n GyMMMd: \"d. M. y G\",\n GyMMMEd: \"E d. M. y G\",\n GyMMMMd: \"d. M. y G\",\n h: \"h a\",\n H: \"H\",\n hm: \"h:mm a\",\n Hm: \"H:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"H:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"H:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"H:mm v\",\n M: \"L.\",\n Md: \"d. M.\",\n MEd: \"E d. M.\",\n MMM: \"LLL\",\n MMMd: \"d. M.\",\n MMMEd: \"E d. M.\",\n MMMMd: \"d. MMMM\",\n MMMMEd: \"E d. MMMM\",\n \"MMMMW-count-one\": \"W. 'týždeň' MMMM\",\n \"MMMMW-count-few\": \"W. 'týždeň' MMMM\",\n \"MMMMW-count-many\": \"W. 'týždeň' MMMM\",\n \"MMMMW-count-other\": \"W. 'týždeň' MMMM\",\n mmss: \"mm:ss\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"d. M. y\",\n yMEd: \"E d. M. y\",\n yMMM: \"M/y\",\n yMMMd: \"d. M. y\",\n yMMMEd: \"E d. M. y\",\n yMMMM: \"LLLL y\",\n yMMMMd: \"d. MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"w. 'týždeň' 'roka' Y\",\n \"yw-count-few\": \"w. 'týždeň' 'roka' Y\",\n \"yw-count-many\": \"w. 'týždeň' 'roka' Y\",\n \"yw-count-other\": \"w. 'týždeň' 'roka' Y\"\n }\n },\n timeFormats: {\n full: \"H:mm:ss zzzz\",\n long: \"H:mm:ss z\",\n medium: \"H:mm:ss\",\n short: \"H:mm\"\n },\n dateFormats: {\n full: \"EEEE d. MMMM y\",\n long: \"d. MMMM y\",\n medium: \"d. M. y\",\n short: \"d. M. y\"\n },\n days: {\n format: {\n abbreviated: [\n \"ne\",\n \"po\",\n \"ut\",\n \"st\",\n \"št\",\n \"pi\",\n \"so\"\n ],\n narrow: [\n \"n\",\n \"p\",\n \"u\",\n \"s\",\n \"š\",\n \"p\",\n \"s\"\n ],\n short: [\n \"ne\",\n \"po\",\n \"ut\",\n \"st\",\n \"št\",\n \"pi\",\n \"so\"\n ],\n wide: [\n \"nedeľa\",\n \"pondelok\",\n \"utorok\",\n \"streda\",\n \"štvrtok\",\n \"piatok\",\n \"sobota\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"ne\",\n \"po\",\n \"ut\",\n \"st\",\n \"št\",\n \"pi\",\n \"so\"\n ],\n narrow: [\n \"n\",\n \"p\",\n \"u\",\n \"s\",\n \"š\",\n \"p\",\n \"s\"\n ],\n short: [\n \"ne\",\n \"po\",\n \"ut\",\n \"st\",\n \"št\",\n \"pi\",\n \"so\"\n ],\n wide: [\n \"nedeľa\",\n \"pondelok\",\n \"utorok\",\n \"streda\",\n \"štvrtok\",\n \"piatok\",\n \"sobota\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"máj\",\n \"jún\",\n \"júl\",\n \"aug\",\n \"sep\",\n \"okt\",\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 \"januára\",\n \"februára\",\n \"marca\",\n \"apríla\",\n \"mája\",\n \"júna\",\n \"júla\",\n \"augusta\",\n \"septembra\",\n \"októbra\",\n \"novembra\",\n \"decembra\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"máj\",\n \"jún\",\n \"júl\",\n \"aug\",\n \"sep\",\n \"okt\",\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 \"január\",\n \"február\",\n \"marec\",\n \"apríl\",\n \"máj\",\n \"jún\",\n \"júl\",\n \"august\",\n \"september\",\n \"október\",\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 \"1. štvrťrok\",\n \"2. štvrťrok\",\n \"3. štvrťrok\",\n \"4. štvrťrok\"\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 \"1. štvrťrok\",\n \"2. štvrťrok\",\n \"3. štvrťrok\",\n \"4. štvrťrok\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"o poln.\",\n am: \"AM\",\n noon: \"napol.\",\n pm: \"PM\",\n morning1: \"ráno\",\n morning2: \"dopol.\",\n afternoon1: \"popol.\",\n evening1: \"večer\",\n night1: \"v noci\"\n },\n narrow: {\n midnight: \"o poln.\",\n am: \"AM\",\n noon: \"nap.\",\n pm: \"PM\",\n morning1: \"ráno\",\n morning2: \"dop.\",\n afternoon1: \"pop.\",\n evening1: \"več.\",\n night1: \"v n.\"\n },\n wide: {\n midnight: \"o polnoci\",\n am: \"AM\",\n noon: \"napoludnie\",\n pm: \"PM\",\n morning1: \"ráno\",\n morning2: \"dopoludnia\",\n afternoon1: \"popoludní\",\n evening1: \"večer\",\n night1: \"v noci\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"poln.\",\n am: \"AM\",\n noon: \"pol.\",\n pm: \"PM\",\n morning1: \"ráno\",\n morning2: \"dopol.\",\n afternoon1: \"popol.\",\n evening1: \"večer\",\n night1: \"noc\"\n },\n narrow: {\n midnight: \"poln.\",\n am: \"AM\",\n noon: \"pol.\",\n pm: \"PM\",\n morning1: \"ráno\",\n morning2: \"dop.\",\n afternoon1: \"pop.\",\n evening1: \"več.\",\n night1: \"noc\"\n },\n wide: {\n midnight: \"polnoc\",\n am: \"AM\",\n noon: \"poludnie\",\n pm: \"PM\",\n morning1: \"ráno\",\n morning2: \"dopoludnie\",\n afternoon1: \"popoludnie\",\n evening1: \"večer\",\n night1: \"noc\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"pred Kristom\",\n \"1\": \"po Kristovi\",\n \"0-alt-variant\": \"pred naším letopočtom\",\n \"1-alt-variant\": \"nášho letopočtu\"\n },\n abbreviated: {\n \"0\": \"pred Kr.\",\n \"1\": \"po Kr.\",\n \"0-alt-variant\": \"pred n. l.\",\n \"1-alt-variant\": \"n. l.\"\n },\n narrow: {\n \"0\": \"pred Kr.\",\n \"1\": \"po Kr.\",\n \"0-alt-variant\": \"pred n. l.\",\n \"1-alt-variant\": \"n. l.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"letopočet\",\n short: \"letop.\",\n narrow: \"letop.\"\n },\n year: {\n wide: \"rok\",\n short: \"r.\",\n narrow: \"r.\"\n },\n quarter: {\n wide: \"štvrťrok\",\n short: \"Q\",\n narrow: \"Q\"\n },\n month: {\n wide: \"mesiac\",\n short: \"mes.\",\n narrow: \"mes.\"\n },\n week: {\n wide: \"týždeň\",\n short: \"týž.\",\n narrow: \"týž.\"\n },\n weekOfMonth: {\n wide: \"týždeň mesiaca\",\n short: \"týž. mes.\",\n narrow: \"týž. mes.\"\n },\n day: {\n wide: \"deň\",\n short: \"d.\",\n narrow: \"d.\"\n },\n dayOfYear: {\n wide: \"deň roka\",\n short: \"deň r.\",\n narrow: \"deň r.\"\n },\n weekday: {\n wide: \"deň týždňa\",\n short: \"deň týž.\",\n narrow: \"deň týž.\"\n },\n weekdayOfMonth: {\n wide: \"deň týždňa v mesiaci\",\n short: \"d.  týž. v mes.\",\n narrow: \"d.  týž. v mes.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"AM/PM\"\n },\n hour: {\n wide: \"hodina\",\n short: \"h\",\n narrow: \"h\"\n },\n minute: {\n wide: \"minúta\",\n short: \"min\",\n narrow: \"min\"\n },\n second: {\n wide: \"sekunda\",\n short: \"s\",\n narrow: \"s\"\n },\n zone: {\n wide: \"časové pásmo\",\n short: \"pásmo\",\n narrow: \"pásmo\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"sk\",\n likelySubtags: {\n sk: \"sk-Latn-SK\"\n },\n identity: {\n language: \"sk\"\n },\n territory: \"SK\",\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-few\": \"n $\",\n \"unitPattern-count-many\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\",\n \"(n $)\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"sr\",\n likelySubtags: {\n sr: \"sr-Cyrl-RS\"\n },\n identity: {\n language: \"sr\"\n },\n territory: \"RS\",\n calendar: {\n patterns: {\n d: \"d.M.y.\",\n D: \"EEEE, dd. MMMM y.\",\n m: \"d. MMM\",\n M: \"d. MMMM\",\n y: \"MMM y.\",\n Y: \"MMMM y.\",\n F: \"EEEE, dd. MMMM y. HH:mm:ss\",\n g: \"d.M.y. HH:mm\",\n G: \"d.M.y. HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} {0}\",\n long: \"{1} {0}\",\n medium: \"{1} {0}\",\n short: \"{1} {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"hh:mm B\",\n Bhms: \"hh:mm:ss B\",\n d: \"d\",\n E: \"E\",\n EBhm: \"E hh:mm B\",\n EBhms: \"E hh:mm:ss B\",\n Ed: \"E d.\",\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: \"d. MMM y. G\",\n GyMMMEd: \"E, d. MMM 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: \"d.M.\",\n MEd: \"E, d.M.\",\n MMdd: \"dd.MM.\",\n MMM: \"LLL\",\n MMMd: \"d. MMM\",\n MMMdd: \"dd.MMM\",\n MMMEd: \"E d. MMM\",\n MMMMd: \"d. MMMM\",\n MMMMEd: \"E, d. MMMM\",\n \"MMMMW-count-one\": \"W. 'седмица' 'у' MMMM.\",\n \"MMMMW-count-few\": \"W. 'седмица' 'у' MMMM.\",\n \"MMMMW-count-other\": \"W. 'седмица' 'у' MMMM.\",\n ms: \"mm:ss\",\n y: \"y.\",\n yM: \"M.y.\",\n yMd: \"d.M.y.\",\n yMEd: \"E, d.M.y.\",\n yMM: \"MM.y.\",\n yMMdd: \"dd.MM.y.\",\n yMMM: \"MMM y.\",\n yMMMd: \"d. MMM y.\",\n yMMMEd: \"E, d. MMM y.\",\n yMMMM: \"MMMM y.\",\n yQQQ: \"QQQ y.\",\n yQQQQ: \"QQQQ y.\",\n \"yw-count-one\": \"w. 'седмица' 'у' Y.\",\n \"yw-count-few\": \"w. 'седмица' 'у' Y.\",\n \"yw-count-other\": \"w. 'седмица' 'у' Y.\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, dd. MMMM y.\",\n long: \"dd. MMMM y.\",\n medium: \"dd.MM.y.\",\n short: \"d.M.yy.\"\n },\n days: {\n format: {\n abbreviated: [\n \"нед\",\n \"пон\",\n \"уто\",\n \"сре\",\n \"чет\",\n \"пет\",\n \"суб\"\n ],\n narrow: [\n \"н\",\n \"п\",\n \"у\",\n \"с\",\n \"ч\",\n \"п\",\n \"с\"\n ],\n short: [\n \"не\",\n \"по\",\n \"ут\",\n \"ср\",\n \"че\",\n \"пе\",\n \"су\"\n ],\n wide: [\n \"недеља\",\n \"понедељак\",\n \"уторак\",\n \"среда\",\n \"четвртак\",\n \"петак\",\n \"субота\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"нед\",\n \"пон\",\n \"уто\",\n \"сре\",\n \"чет\",\n \"пет\",\n \"суб\"\n ],\n narrow: [\n \"н\",\n \"п\",\n \"у\",\n \"с\",\n \"ч\",\n \"п\",\n \"с\"\n ],\n short: [\n \"не\",\n \"по\",\n \"ут\",\n \"ср\",\n \"че\",\n \"пе\",\n \"су\"\n ],\n wide: [\n \"недеља\",\n \"понедељак\",\n \"уторак\",\n \"среда\",\n \"четвртак\",\n \"петак\",\n \"субота\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"јан\",\n \"феб\",\n \"мар\",\n \"апр\",\n \"мај\",\n \"јун\",\n \"јул\",\n \"авг\",\n \"сеп\",\n \"окт\",\n \"нов\",\n \"дец\"\n ],\n narrow: [\n \"ј\",\n \"ф\",\n \"м\",\n \"а\",\n \"м\",\n \"ј\",\n \"ј\",\n \"а\",\n \"с\",\n \"о\",\n \"н\",\n \"д\"\n ],\n wide: [\n \"јануар\",\n \"фебруар\",\n \"март\",\n \"април\",\n \"мај\",\n \"јун\",\n \"јул\",\n \"август\",\n \"септембар\",\n \"октобар\",\n \"новембар\",\n \"децембар\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"јан\",\n \"феб\",\n \"мар\",\n \"апр\",\n \"мај\",\n \"јун\",\n \"јул\",\n \"авг\",\n \"сеп\",\n \"окт\",\n \"нов\",\n \"дец\"\n ],\n narrow: [\n \"ј\",\n \"ф\",\n \"м\",\n \"а\",\n \"м\",\n \"ј\",\n \"ј\",\n \"а\",\n \"с\",\n \"о\",\n \"н\",\n \"д\"\n ],\n wide: [\n \"јануар\",\n \"фебруар\",\n \"март\",\n \"април\",\n \"мај\",\n \"јун\",\n \"јул\",\n \"август\",\n \"септембар\",\n \"октобар\",\n \"новембар\",\n \"децембар\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"К1\",\n \"К2\",\n \"К3\",\n \"К4\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\"\n ],\n wide: [\n \"први квартал\",\n \"други квартал\",\n \"трећи квартал\",\n \"четврти квартал\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"К1\",\n \"К2\",\n \"К3\",\n \"К4\"\n ],\n narrow: [\n \"1.\",\n \"2.\",\n \"3.\",\n \"4.\"\n ],\n wide: [\n \"први квартал\",\n \"други квартал\",\n \"трећи квартал\",\n \"четврти квартал\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"поноћ\",\n am: \"пре подне\",\n noon: \"подне\",\n pm: \"по подне\",\n morning1: \"ујутро\",\n afternoon1: \"по подне\",\n evening1: \"увече\",\n night1: \"ноћу\"\n },\n narrow: {\n midnight: \"поноћ\",\n am: \"a\",\n noon: \"подне\",\n pm: \"p\",\n morning1: \"ујутру\",\n afternoon1: \"по подне\",\n evening1: \"увече\",\n night1: \"ноћу\"\n },\n wide: {\n midnight: \"поноћ\",\n am: \"пре подне\",\n noon: \"подне\",\n pm: \"по подне\",\n morning1: \"ујутро\",\n afternoon1: \"по подне\",\n evening1: \"увече\",\n night1: \"ноћу\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"поноћ\",\n am: \"пре подне\",\n noon: \"подне\",\n pm: \"по подне\",\n morning1: \"јутро\",\n afternoon1: \"поподне\",\n evening1: \"вече\",\n night1: \"ноћ\"\n },\n narrow: {\n midnight: \"поноћ\",\n am: \"пре подне\",\n noon: \"подне\",\n pm: \"по подне\",\n morning1: \"јутро\",\n afternoon1: \"поподне\",\n evening1: \"вече\",\n night1: \"ноћ\"\n },\n wide: {\n midnight: \"поноћ\",\n am: \"пре подне\",\n noon: \"подне\",\n pm: \"по подне\",\n morning1: \"јутро\",\n afternoon1: \"поподне\",\n evening1: \"вече\",\n night1: \"ноћ\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"пре нове ере\",\n \"1\": \"нове ере\",\n \"0-alt-variant\": \"п. н. е.\",\n \"1-alt-variant\": \"н. е.\"\n },\n abbreviated: {\n \"0\": \"п. н. е.\",\n \"1\": \"н. е.\",\n \"0-alt-variant\": \"п. н. е.\",\n \"1-alt-variant\": \"н. е.\"\n },\n narrow: {\n \"0\": \"п.н.е.\",\n \"1\": \"н.е.\",\n \"0-alt-variant\": \"п. н. е.\",\n \"1-alt-variant\": \"н. е.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"ера\",\n short: \"ера\",\n narrow: \"ера\"\n },\n year: {\n wide: \"година\",\n short: \"год.\",\n narrow: \"г.\"\n },\n quarter: {\n wide: \"квартал\",\n short: \"кв.\",\n narrow: \"кв.\"\n },\n month: {\n wide: \"месец\",\n short: \"мес.\",\n narrow: \"м.\"\n },\n week: {\n wide: \"недеља\",\n short: \"нед.\",\n narrow: \"н.\"\n },\n weekOfMonth: {\n wide: \"недеља у месецу\",\n short: \"нед. у мес.\",\n narrow: \"нед. у мес.\"\n },\n day: {\n wide: \"дан\",\n short: \"д.\",\n narrow: \"д.\"\n },\n dayOfYear: {\n wide: \"дан у години\",\n short: \"дан у год.\",\n narrow: \"дан у год.\"\n },\n weekday: {\n wide: \"дан у недељи\",\n short: \"дан у недељи\",\n narrow: \"дан у недељи\"\n },\n weekdayOfMonth: {\n wide: \"дан у месецу\",\n short: \"дан у месецу\",\n narrow: \"дан у месецу\"\n },\n dayperiod: {\n short: \"пре подне/по подне\",\n wide: \"пре подне/по подне\",\n narrow: \"пре подне/по подне\"\n },\n hour: {\n wide: \"сат\",\n short: \"ч.\",\n narrow: \"ч.\"\n },\n minute: {\n wide: \"минут\",\n short: \"мин.\",\n narrow: \"мин.\"\n },\n second: {\n wide: \"секунд\",\n short: \"сек.\",\n narrow: \"с.\"\n },\n zone: {\n wide: \"временска зона\",\n short: \"временска зона\",\n narrow: \"временска зона\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"sr\",\n likelySubtags: {\n sr: \"sr-Cyrl-RS\"\n },\n identity: {\n language: \"sr\"\n },\n territory: \"RS\",\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-few\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\",\n \"(n $)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n currencyData: {\n RSD: {\n _rounding: \"0\",\n _digits: \"0\"\n }\n }\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"uk\",\n likelySubtags: {\n uk: \"uk-Cyrl-UA\"\n },\n identity: {\n language: \"uk\"\n },\n territory: \"UA\",\n calendar: {\n patterns: {\n d: \"dd.MM.y\",\n D: \"EEEE, d MMMM y 'р'.\",\n m: \"d MMM\",\n M: \"d MMMM\",\n y: \"LLL y\",\n Y: \"LLLL y\",\n F: \"EEEE, d MMMM y 'р'. HH:mm:ss\",\n g: \"dd.MM.y HH:mm\",\n G: \"dd.MM.y HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'о' {0}\",\n long: \"{1} 'о' {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: \"E, d\",\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: \"LLL y G\",\n GyMMMd: \"d MMM y G\",\n GyMMMEd: \"E, d MMM 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: \"LL\",\n Md: \"dd.MM\",\n MEd: \"E, dd.MM\",\n MMM: \"LLL\",\n MMMd: \"d MMM\",\n MMMEd: \"E, d MMM\",\n MMMMd: \"d MMMM\",\n MMMMEd: \"E, d MMMM\",\n \"MMMMW-count-one\": \"W-'й' 'тиж'. MMMM\",\n \"MMMMW-count-few\": \"W-'й' 'тиж'. MMMM\",\n \"MMMMW-count-many\": \"W-'й' 'тиж'. MMMM\",\n \"MMMMW-count-other\": \"W-'й' 'тиж'. MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"MM.y\",\n yMd: \"dd.MM.y\",\n yMEd: \"E, dd.MM.y\",\n yMMM: \"LLL y\",\n yMMMd: \"d MMM y\",\n yMMMEd: \"E, d MMM y\",\n yMMMM: \"LLLL y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y 'р'.\",\n \"yw-count-one\": \"w-'й' 'тиж'. Y 'р'.\",\n \"yw-count-few\": \"w-'й' 'тиж'. Y 'р'.\",\n \"yw-count-many\": \"w-'й' 'тиж'. Y 'р'.\",\n \"yw-count-other\": \"w-'й' 'тиж'. Y 'р'.\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\"\n },\n dateFormats: {\n full: \"EEEE, d MMMM y 'р'.\",\n long: \"d MMMM y 'р'.\",\n medium: \"d MMM y 'р'.\",\n short: \"dd.MM.yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"нд\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n narrow: [\n \"Н\",\n \"П\",\n \"В\",\n \"С\",\n \"Ч\",\n \"П\",\n \"С\"\n ],\n short: [\n \"нд\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n wide: [\n \"неділя\",\n \"понеділок\",\n \"вівторок\",\n \"середа\",\n \"четвер\",\n \"пʼятниця\",\n \"субота\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"нд\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n narrow: [\n \"Н\",\n \"П\",\n \"В\",\n \"С\",\n \"Ч\",\n \"П\",\n \"С\"\n ],\n short: [\n \"нд\",\n \"пн\",\n \"вт\",\n \"ср\",\n \"чт\",\n \"пт\",\n \"сб\"\n ],\n wide: [\n \"неділя\",\n \"понеділок\",\n \"вівторок\",\n \"середа\",\n \"четвер\",\n \"пʼятниця\",\n \"субота\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"січ.\",\n \"лют.\",\n \"бер.\",\n \"квіт.\",\n \"трав.\",\n \"черв.\",\n \"лип.\",\n \"серп.\",\n \"вер.\",\n \"жовт.\",\n \"лист.\",\n \"груд.\"\n ],\n narrow: [\n \"с\",\n \"л\",\n \"б\",\n \"к\",\n \"т\",\n \"ч\",\n \"л\",\n \"с\",\n \"в\",\n \"ж\",\n \"л\",\n \"г\"\n ],\n wide: [\n \"січня\",\n \"лютого\",\n \"березня\",\n \"квітня\",\n \"травня\",\n \"червня\",\n \"липня\",\n \"серпня\",\n \"вересня\",\n \"жовтня\",\n \"листопада\",\n \"грудня\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"січ\",\n \"лют\",\n \"бер\",\n \"кві\",\n \"тра\",\n \"чер\",\n \"лип\",\n \"сер\",\n \"вер\",\n \"жов\",\n \"лис\",\n \"гру\"\n ],\n narrow: [\n \"С\",\n \"Л\",\n \"Б\",\n \"К\",\n \"Т\",\n \"Ч\",\n \"Л\",\n \"С\",\n \"В\",\n \"Ж\",\n \"Л\",\n \"Г\"\n ],\n wide: [\n \"січень\",\n \"лютий\",\n \"березень\",\n \"квітень\",\n \"травень\",\n \"червень\",\n \"липень\",\n \"серпень\",\n \"вересень\",\n \"жовтень\",\n \"листопад\",\n \"грудень\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"1-й кв.\",\n \"2-й кв.\",\n \"3-й кв.\",\n \"4-й кв.\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1-й квартал\",\n \"2-й квартал\",\n \"3-й квартал\",\n \"4-й квартал\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"1-й кв.\",\n \"2-й кв.\",\n \"3-й кв.\",\n \"4-й кв.\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1-й квартал\",\n \"2-й квартал\",\n \"3-й квартал\",\n \"4-й квартал\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"опівночі\",\n am: \"дп\",\n noon: \"пополудні\",\n pm: \"пп\",\n morning1: \"ранку\",\n afternoon1: \"дня\",\n evening1: \"вечора\",\n night1: \"ночі\"\n },\n narrow: {\n midnight: \"північ\",\n am: \"дп\",\n noon: \"п\",\n pm: \"пп\",\n morning1: \"ранку\",\n afternoon1: \"дня\",\n evening1: \"вечора\",\n night1: \"ночі\"\n },\n wide: {\n midnight: \"опівночі\",\n am: \"дп\",\n noon: \"пополудні\",\n pm: \"пп\",\n morning1: \"ранку\",\n afternoon1: \"дня\",\n evening1: \"вечора\",\n night1: \"ночі\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"північ\",\n am: \"дп\",\n noon: \"полудень\",\n pm: \"пп\",\n morning1: \"ранок\",\n afternoon1: \"день\",\n evening1: \"вечір\",\n night1: \"ніч\"\n },\n narrow: {\n midnight: \"північ\",\n am: \"дп\",\n noon: \"полудень\",\n pm: \"пп\",\n morning1: \"ранок\",\n afternoon1: \"день\",\n evening1: \"вечір\",\n night1: \"ніч\"\n },\n wide: {\n midnight: \"опівніч\",\n am: \"дп\",\n noon: \"полудень\",\n pm: \"пп\",\n morning1: \"ранок\",\n afternoon1: \"день\",\n evening1: \"вечір\",\n night1: \"ніч\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"до нашої ери\",\n \"1\": \"нашої ери\",\n \"0-alt-variant\": \"до нової ери\",\n \"1-alt-variant\": \"нової ери\"\n },\n abbreviated: {\n \"0\": \"до н. е.\",\n \"1\": \"н. е.\",\n \"0-alt-variant\": \"до н. е.\",\n \"1-alt-variant\": \"н. е.\"\n },\n narrow: {\n \"0\": \"до н.е.\",\n \"1\": \"н.е.\",\n \"0-alt-variant\": \"до н. е.\",\n \"1-alt-variant\": \"н. е.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"ера\",\n short: \"е.\",\n narrow: \"е\"\n },\n year: {\n wide: \"рік\",\n short: \"р.\",\n narrow: \"р\"\n },\n quarter: {\n wide: \"квартал\",\n short: \"кв.\",\n narrow: \"кв\"\n },\n month: {\n wide: \"місяць\",\n short: \"міс.\",\n narrow: \"м\"\n },\n week: {\n wide: \"тиждень\",\n short: \"тиж.\",\n narrow: \"т\"\n },\n weekOfMonth: {\n wide: \"тиждень місяця\",\n short: \"тиж. місяця\",\n narrow: \"тиж. міс.\"\n },\n day: {\n wide: \"день\",\n short: \"д.\",\n narrow: \"д\"\n },\n dayOfYear: {\n wide: \"день року\",\n short: \"д. року\",\n narrow: \"день року\"\n },\n weekday: {\n wide: \"день тижня\",\n short: \"д. тижня\",\n narrow: \"д тижня\"\n },\n weekdayOfMonth: {\n wide: \"день місяця\",\n short: \"д. місяця\",\n narrow: \"д місяця\"\n },\n dayperiod: {\n short: \"дп/пп\",\n wide: \"дп/пп\",\n narrow: \"дп/пп\"\n },\n hour: {\n wide: \"година\",\n short: \"год.\",\n narrow: \"год\"\n },\n minute: {\n wide: \"хвилина\",\n short: \"хв.\",\n narrow: \"хв\"\n },\n second: {\n wide: \"секунда\",\n short: \"с\",\n narrow: \"с\"\n },\n zone: {\n wide: \"часовий пояс\",\n short: \"час. пояс\",\n narrow: \"час. п.\"\n }\n }\n },\n firstDay: 1\n});\n\n","var setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"uk\",\n likelySubtags: {\n uk: \"uk-Cyrl-UA\"\n },\n identity: {\n language: \"uk\"\n },\n territory: \"UA\",\n numbers: {\n symbols: {\n decimal: \",\",\n group: \" \",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"Е\",\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-few\": \"n $\",\n \"unitPattern-count-many\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\n \"n $\"\n ],\n groupSize: [\n 3\n ]\n }\n }\n});\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __param, __metadata } from 'tslib';\nimport { Injectable, InjectionToken, Inject, Optional } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { skip, map, tap } from 'rxjs/operators';\n\n/* tslint:disable:max-line-length */\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 */\nimport * as ɵngcc0 from '@angular/core';\nlet MessageService = class MessageService {\n /* tslint:disable:max-line-length */\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 */\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 = function MessageService_Factory(t) { return new (t || MessageService)(); };\nMessageService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MessageService, factory: function (t) { return MessageService.ɵfac(t); } });\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 = function ComponentMessages_Factory(t) { return new (t || ComponentMessages)(); };\nComponentMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ComponentMessages, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\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 */\nlet LocalizationService = class 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 = function LocalizationService_Factory(t) { return new (t || LocalizationService)(ɵngcc0.ɵɵinject(L10N_PREFIX), ɵngcc0.ɵɵinject(MessageService, 8), ɵngcc0.ɵɵinject(RTL, 8)); };\nLocalizationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LocalizationService, factory: function (t) { return LocalizationService.ɵfac(t); } });\nLocalizationService = __decorate([ __param(0, Inject(L10N_PREFIX)),\n __param(1, Optional()),\n __param(2, Optional()), __param(2, Inject(RTL)),\n __metadata(\"design:paramtypes\", [String, MessageService, Boolean])\n], LocalizationService);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MessageService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizationService, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: MessageService, decorators: [{\n type: Optional\n }] }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, null); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MessageService, ComponentMessages, L10N_PREFIX, LocalizationService, RTL };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { Injectable, Directive, TemplateRef, Optional, isDevMode, Input, ViewChild, ElementRef, HostBinding, ViewChildren, QueryList, ContentChildren, Component, SkipSelf, Host, Renderer2, EventEmitter, Output, ContentChild, HostListener, ChangeDetectorRef, NgZone, Inject, forwardRef, ViewEncapsulation, NgModule } from '@angular/core';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { Keys, PreventableEvent, isDocumentAvailable, hasObservers, EventsModule, DraggableDirective, DraggableModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { trigger, state, style, transition, animate, AUTO_STYLE, AnimationBuilder } from '@angular/animations';\nimport { Subject, BehaviorSubject, Subscription, of } from 'rxjs';\nimport { take, tap, filter, switchMap, delay, takeUntil, map } from 'rxjs/operators';\nimport Draggable from '@telerik/kendo-draggable';\nimport { CommonModule } from '@angular/common';\nimport { ProgressBarModule } from '@progress/kendo-angular-progressbar';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc3 from '@progress/kendo-angular-common';\nimport * as ɵngcc4 from '@angular/animations';\nimport * as ɵngcc5 from '@progress/kendo-angular-progressbar';\n\nconst _c0 = [\"header\"];\nconst _c1 = [\"contentWrapper\"];\nfunction PanelBarItemComponent_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 6);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r1.iconClasses);\n} }\nfunction PanelBarItemComponent_img_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"img\", 7);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"src\", ctx_r2.imageUrl, ɵngcc0.ɵɵsanitizeUrl);\n} }\nfunction PanelBarItemComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 8);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.title);\n} }\nfunction PanelBarItemComponent_5_ng_template_0_Template(rf, ctx) { }\nfunction PanelBarItemComponent_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, PanelBarItemComponent_5_ng_template_0_Template, 0, 0, \"ng-template\", 9);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.titleTemplate);\n} }\nconst _c2 = function (a0, a1) { return { \"k-i-arrow-chevron-up k-panelbar-collapse\": a0, \"k-i-arrow-chevron-down k-panelbar-expand\": a1 }; };\nfunction PanelBarItemComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 10);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(1, _c2, ctx_r5.expanded, !ctx_r5.expanded));\n} }\nfunction PanelBarItemComponent_div_7_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 14);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"overflow\", ctx_r9.contentOverflow)(\"height\", ctx_r9.contentHeight);\n} }\nfunction PanelBarItemComponent_div_7_div_3_ng_template_1_Template(rf, ctx) { }\nconst _c3 = function (a0, a1, a2, a3, a4, a5) { return { title: a0, id: a1, icon: a2, imageUrl: a3, disabled: a4, content: a5 }; };\nconst _c4 = function (a0) { return { $implicit: a0 }; };\nfunction PanelBarItemComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 15);\n ɵngcc0.ɵɵtemplate(1, PanelBarItemComponent_div_7_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 16);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"overflow\", ctx_r10.contentOverflow)(\"height\", ctx_r10.contentHeight);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r10.contentTemplate.first.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(13, _c4, ɵngcc0.ɵɵpureFunction6(6, _c3, ctx_r10.title, ctx_r10.id, ctx_r10.icon, ctx_r10.imageUrl, ctx_r10.disabled, ctx_r10.content)));\n} }\nfunction PanelBarItemComponent_div_7_div_4_ng_container_1_kendo_panelbar_item_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-panelbar-item\", 19);\n} if (rf & 2) {\n const item_r15 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r16 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"title\", item_r15.title)(\"id\", item_r15.id)(\"icon\", item_r15.icon)(\"iconClass\", item_r15.iconClass)(\"imageUrl\", item_r15.imageUrl)(\"selected\", !!item_r15.selected)(\"expanded\", !!item_r15.expanded)(\"disabled\", !!item_r15.disabled)(\"template\", ctx_r16.template)(\"items\", item_r15.children)(\"content\", item_r15.content);\n} }\nfunction PanelBarItemComponent_div_7_div_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, PanelBarItemComponent_div_7_div_4_ng_container_1_kendo_panelbar_item_1_Template, 1, 11, \"kendo-panelbar-item\", 18);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const item_r15 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !item_r15.hidden);\n} }\nfunction PanelBarItemComponent_div_7_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 14);\n ɵngcc0.ɵɵtemplate(1, PanelBarItemComponent_div_7_div_4_ng_container_1_Template, 2, 1, \"ng-container\", 17);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"overflow\", ctx_r11.contentOverflow)(\"height\", ctx_r11.contentHeight);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r11.items);\n} }\nfunction PanelBarItemComponent_div_7_div_5_ng_template_1_Template(rf, ctx) { }\nfunction PanelBarItemComponent_div_7_div_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r19 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵtextInterpolate(ctx_r19.content);\n} }\nfunction PanelBarItemComponent_div_7_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 15);\n ɵngcc0.ɵɵtemplate(1, PanelBarItemComponent_div_7_div_5_ng_template_1_Template, 0, 0, \"ng-template\", 16);\n ɵngcc0.ɵɵtemplate(2, PanelBarItemComponent_div_7_div_5_ng_template_2_Template, 1, 1, \"ng-template\", 20);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"overflow\", ctx_r12.contentOverflow)(\"height\", ctx_r12.contentHeight);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r12.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(14, _c4, ɵngcc0.ɵɵpureFunction6(7, _c3, ctx_r12.title, ctx_r12.id, ctx_r12.icon, ctx_r12.imageUrl, ctx_r12.disabled, ctx_r12.content)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r12.template);\n} }\nfunction PanelBarItemComponent_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", null, 11);\n ɵngcc0.ɵɵtemplate(2, PanelBarItemComponent_div_7_div_2_Template, 2, 4, \"div\", 12);\n ɵngcc0.ɵɵtemplate(3, PanelBarItemComponent_div_7_div_3_Template, 2, 15, \"div\", 13);\n ɵngcc0.ɵɵtemplate(4, PanelBarItemComponent_div_7_div_4_Template, 2, 5, \"div\", 12);\n ɵngcc0.ɵɵtemplate(5, PanelBarItemComponent_div_7_div_5_Template, 3, 16, \"div\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@toggle\", ctx_r6.state);\n ɵngcc0.ɵɵattribute(\"role\", \"group\")(\"aria-hidden\", !ctx_r6.disabled && !ctx_r6.expanded);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.hasChildItems && !(ctx_r6.items == null ? null : ctx_r6.items.length));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.hasContent && !ctx_r6.content);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.hasItems);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.content);\n} }\nconst _c5 = [[[\"kendo-panelbar-item\"]]];\nconst _c6 = [\"kendo-panelbar-item\"];\nfunction PanelBarComponent_ng_content_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngIf\", \"contentChildItems && !items\"]);\n} }\nfunction PanelBarComponent_ng_template_1_ng_container_0_kendo_panelbar_item_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-panelbar-item\", 4);\n} if (rf & 2) {\n const item_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"title\", item_r3.title)(\"id\", item_r3.id)(\"icon\", item_r3.icon)(\"iconClass\", item_r3.iconClass)(\"imageUrl\", item_r3.imageUrl)(\"selected\", !!item_r3.selected)(\"expanded\", !!item_r3.expanded)(\"disabled\", !!item_r3.disabled)(\"template\", ctx_r4.templateRef)(\"items\", item_r3.children)(\"content\", item_r3.content);\n} }\nfunction PanelBarComponent_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, PanelBarComponent_ng_template_1_ng_container_0_kendo_panelbar_item_1_Template, 1, 11, \"kendo-panelbar-item\", 3);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const item_r3 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !item_r3.hidden);\n} }\nfunction PanelBarComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, PanelBarComponent_ng_template_1_ng_container_0_Template, 2, 1, \"ng-container\", 2);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.items);\n} }\nfunction SplitterPaneComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} }\nfunction SplitterPaneComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 2);\n} }\nconst _c7 = [\"*\"];\nfunction SplitterComponent_ng_container_1_kendo_splitter_bar_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-splitter-bar\", 2);\n} if (rf & 2) {\n const index_r2 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"index\", index_r2)(\"orientation\", ctx_r4.orientation);\n} }\nfunction SplitterComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, SplitterComponent_ng_container_1_kendo_splitter_bar_1_Template, 1, 2, \"kendo-splitter-bar\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const last_r3 = ctx.last;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !last_r3);\n} }\nconst _c8 = [[[\"kendo-splitter-pane\"]]];\nconst _c9 = [\"kendo-splitter-pane\"];\nconst _c10 = [\"kendoTabStripScrollableButton\", \"\"];\nconst _c11 = [\"tablist\"];\nconst _c12 = [\"prevScrollButton\"];\nconst _c13 = [\"nextScrollButton\"];\nconst _c14 = [\"tabHeaderContainer\"];\nfunction TabStripComponent_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0);\n} }\nfunction TabStripComponent_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0);\n} }\nfunction TabStripComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, TabStripComponent_ng_container_1_ng_container_1_Template, 1, 0, \"ng-container\", 5);\n ɵngcc0.ɵɵtemplate(2, TabStripComponent_ng_container_1_ng_container_2_Template, 1, 0, \"ng-container\", 5);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n ɵngcc0.ɵɵnextContext();\n const _r2 = ɵngcc0.ɵɵreference(4);\n const _r4 = ɵngcc0.ɵɵreference(6);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r4);\n} }\nfunction TabStripComponent_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0);\n} }\nfunction TabStripComponent_ng_container_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0);\n} }\nfunction TabStripComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, TabStripComponent_ng_container_2_ng_container_1_Template, 1, 0, \"ng-container\", 5);\n ɵngcc0.ɵɵtemplate(2, TabStripComponent_ng_container_2_ng_container_2_Template, 1, 0, \"ng-container\", 5);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n ɵngcc0.ɵɵnextContext();\n const _r4 = ɵngcc0.ɵɵreference(6);\n const _r2 = ɵngcc0.ɵɵreference(4);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r4);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r2);\n} }\nfunction TabStripComponent_ng_template_3_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 11, 12);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"prev\", true);\n} }\nfunction TabStripComponent_ng_template_3_ng_container_4_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 14, 15);\n ɵngcc0.ɵɵlistener(\"click\", function TabStripComponent_ng_template_3_ng_container_4_li_1_Template_li_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const i_r17 = ɵngcc0.ɵɵnextContext().index; const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.onTabClick($event, i_r17); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r23 = ɵngcc0.ɵɵnextContext();\n const tab_r16 = ctx_r23.$implicit;\n const i_r17 = ctx_r23.index;\n const ctx_r18 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", tab_r16.cssClass)(\"ngStyle\", tab_r16.cssStyle)(\"tab\", tab_r16)(\"index\", i_r17)(\"tabStripClosable\", ctx_r18.closable)(\"tabStripCloseIcon\", ctx_r18.closeIcon)(\"id\", \"k-tabstrip-tab-\" + i_r17);\n ɵngcc0.ɵɵattribute(\"aria-controls\", \"k-tabstrip-tabpanel-\" + i_r17);\n} }\nfunction TabStripComponent_ng_template_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, TabStripComponent_ng_template_3_ng_container_4_li_1_Template, 2, 8, \"li\", 13);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const tab_r16 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !tab_r16.closed);\n} }\nfunction TabStripComponent_ng_template_3_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 11, 16);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"prev\", false);\n} }\nfunction TabStripComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵtemplate(1, TabStripComponent_ng_template_3_span_1_Template, 2, 1, \"span\", 7);\n ɵngcc0.ɵɵelementStart(2, \"ul\", 8, 9);\n ɵngcc0.ɵɵtemplate(4, TabStripComponent_ng_template_3_ng_container_4_Template, 2, 1, \"ng-container\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, TabStripComponent_ng_template_3_span_5_Template, 2, 1, \"span\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r3.itemsWrapperClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r3.hasScrollButtons);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"justify-content\", ctx_r3.tabsAlignmentStyles);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.tabs);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r3.hasScrollButtons);\n} }\nfunction TabStripComponent_ng_template_5_ng_template_0_div_0_ng_template_1_Template(rf, ctx) { }\nfunction TabStripComponent_ng_template_5_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵtemplate(1, TabStripComponent_ng_template_5_ng_template_0_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 20);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r30 = ɵngcc0.ɵɵnextContext();\n const tab_r26 = ctx_r30.$implicit;\n const i_r27 = ctx_r30.index;\n const ctx_r28 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"@state\", tab_r26.selected && ctx_r28.animate ? \"active\" : \"inactive\")(\"ngClass\", !ctx_r28.keepTabContent || tab_r26.selected ? \"k-content k-state-active\" : \"k-content\")(\"tabIndex\", 0)(\"id\", \"k-tabstrip-tabpanel-\" + i_r27);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", !tab_r26.selected)(\"aria-expanded\", tab_r26.selected)(\"aria-labelledby\", \"k-tabstrip-tab-\" + i_r27)(\"aria-disabled\", tab_r26.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", tab_r26.tabContent == null ? null : tab_r26.tabContent.templateRef);\n} }\nfunction TabStripComponent_ng_template_5_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TabStripComponent_ng_template_5_ng_template_0_div_0_Template, 2, 9, \"div\", 18);\n} if (rf & 2) {\n const tab_r26 = ctx.$implicit;\n const ctx_r25 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !tab_r26.closed && (tab_r26.selected || ctx_r25.keepTabContent));\n} }\nfunction TabStripComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TabStripComponent_ng_template_5_ng_template_0_Template, 1, 1, \"ng-template\", 17);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r5.tabs);\n} }\nfunction TabStripComponent_kendo_resize_sensor_7_Template(rf, ctx) { if (rf & 1) {\n const _r32 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-resize-sensor\", 21);\n ɵngcc0.ɵɵlistener(\"resize\", function TabStripComponent_kendo_resize_sensor_7_Template_kendo_resize_sensor_resize_0_listener() { ɵngcc0.ɵɵrestoreView(_r32); const ctx_r31 = ɵngcc0.ɵɵnextContext(); return ctx_r31.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction DrawerComponent_div_0_ng_container_1_1_ng_template_0_Template(rf, ctx) { }\nfunction DrawerComponent_div_0_ng_container_1_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DrawerComponent_div_0_ng_container_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.headerTemplate == null ? null : ctx_r3.headerTemplate.templateRef);\n} }\nfunction DrawerComponent_div_0_ng_container_1_3_ng_template_0_Template(rf, ctx) { }\nfunction DrawerComponent_div_0_ng_container_1_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DrawerComponent_div_0_ng_container_1_3_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.footerTemplate == null ? null : ctx_r4.footerTemplate.templateRef);\n} }\nfunction DrawerComponent_div_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, DrawerComponent_div_0_ng_container_1_1_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵelement(2, \"ul\", 3);\n ɵngcc0.ɵɵtemplate(3, DrawerComponent_div_0_ng_container_1_3_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"items\", ctx_r1.items)(\"mini\", ctx_r1.mini)(\"expanded\", ctx_r1.expanded)(\"itemTemplate\", ctx_r1.itemTemplate == null ? null : ctx_r1.itemTemplate.templateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n} }\nfunction DrawerComponent_div_0_2_ng_template_0_Template(rf, ctx) { }\nfunction DrawerComponent_div_0_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DrawerComponent_div_0_2_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.drawerTemplate == null ? null : ctx_r2.drawerTemplate.templateRef);\n} }\nfunction DrawerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 1);\n ɵngcc0.ɵɵtemplate(1, DrawerComponent_div_0_ng_container_1_Template, 4, 6, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(2, DrawerComponent_div_0_2_Template, 1, 1, null, 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r0.drawerWidth, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.drawerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.drawerTemplate);\n} }\nfunction DrawerContainerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function DrawerContainerComponent_div_0_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.closeDrawer(); });\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction StepperComponent_kendo_progressbar_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-progressbar\", 3);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"animation\", ctx_r0.progressAnimation)(\"max\", ctx_r0.steps.length - 1)(\"label\", false)(\"orientation\", ctx_r0.orientation)(\"reverse\", !ctx_r0.isHorizontal)(\"value\", ctx_r0.currentStep)(\"ngStyle\", ctx_r0.progressBarStyling);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", true);\n} }\nfunction AvatarComponent_ng_content_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngIf\", \"customAvatar\"]);\n} }\nfunction AvatarComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"div\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-image\", ctx_r1.imageUrl);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx_r1.cssStyle);\n} }\nfunction AvatarComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 2);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx_r2.cssStyle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.initials.substring(0, 2));\n} }\nfunction AvatarComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"span\", 3);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx_r3.cssStyle)(\"ngClass\", ctx_r3.iconClasses());\n} }\nfunction CardActionsComponent_ng_content_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngIf\", \"!actions\"]);\n} }\nfunction CardActionsComponent_ng_container_1_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function CardActionsComponent_ng_container_1_button_1_Template_button_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const action_r4 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(2); return ctx_r5.onClick(action_r4); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const action_r4 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"k-primary\", action_r4.primary)(\"k-flat\", action_r4.flat);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", action_r4.text, \" \");\n} }\nfunction CardActionsComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, CardActionsComponent_ng_container_1_button_1_Template, 2, 5, \"button\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.actions);\n} }\nfunction CardActionsComponent_2_ng_template_0_Template(rf, ctx) { }\nfunction CardActionsComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CardActionsComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 3);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.actions);\n} }\nconst _c19 = [\"content\"];\nfunction ExpansionPanelComponent_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 10);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.title);\n} }\nfunction ExpansionPanelComponent_ng_container_1_div_3_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 ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.subtitle, \" \");\n} }\nfunction ExpansionPanelComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, ExpansionPanelComponent_ng_container_1_div_1_Template, 2, 1, \"div\", 7);\n ɵngcc0.ɵɵelement(2, \"span\", 8);\n ɵngcc0.ɵɵtemplate(3, ExpansionPanelComponent_ng_container_1_div_3_Template, 2, 1, \"div\", 9);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.subtitle);\n} }\nfunction ExpansionPanelComponent_2_ng_template_0_Template(rf, ctx) { }\nfunction ExpansionPanelComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ExpansionPanelComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.titleTemplate == null ? null : ctx_r1.titleTemplate.templateRef);\n} }\nfunction TileLayoutItemComponent_kendo_tilelayout_item_header_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-tilelayout-item-header\");\n ɵngcc0.ɵɵelementStart(1, \"h5\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n} }\nfunction TileLayoutItemComponent_ng_container_2_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 3);\n} if (rf & 2) {\n const dir_r3 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassMapInterpolate1(\"k-resize-handle k-cursor-\", dir_r3, \"-resize k-touch-action-none\");\n ɵngcc0.ɵɵproperty(\"rtl\", ctx_r2.rtl)(\"resizeDirection\", dir_r3);\n} }\nfunction TileLayoutItemComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, TileLayoutItemComponent_ng_container_2_div_1_Template, 1, 5, \"div\", 2);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.resizeDirections);\n} }\nconst _c20 = [\"hint\"];\nconst _c21 = [\"kendoDrawerItem\", \"\"];\nfunction DrawerItemComponent_0_ng_template_0_Template(rf, ctx) { }\nfunction DrawerItemComponent_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DrawerItemComponent_0_ng_template_0_Template, 0, 0, \"ng-template\", 2);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.itemTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c4, ctx_r0.item));\n} }\nfunction DrawerItemComponent_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"span\", 4);\n ɵngcc0.ɵɵelementStart(2, \"span\", 5);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.iconClasses);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r4.item.text);\n} }\nfunction DrawerItemComponent_ng_template_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"span\", 4);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r5.iconClasses);\n} }\nfunction DrawerItemComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DrawerItemComponent_ng_template_1_ng_container_0_Template, 4, 2, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(1, DrawerItemComponent_ng_template_1_ng_container_1_Template, 2, 1, \"ng-container\", 3);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.expanded);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.mini && !ctx_r2.expanded);\n} }\nconst _c22 = [\"kendoDrawerList\", \"\"];\nfunction DrawerListComponent_ng_container_0_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"li\", 3);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n const item_r1 = ctx_r5.$implicit;\n const idx_r2 = ctx_r5.index;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"item\", item_r1)(\"index\", idx_r2)(\"mini\", ctx_r3.mini)(\"expanded\", ctx_r3.expanded)(\"itemTemplate\", ctx_r3.itemTemplate)(\"ngClass\", item_r1.cssClass)(\"ngStyle\", item_r1.cssStyle);\n ɵngcc0.ɵɵattribute(\"data-kendo-drawer-index\", idx_r2);\n} }\nfunction DrawerListComponent_ng_container_0_li_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 4);\n ɵngcc0.ɵɵtext(1, \" \\u00A0 \");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"ngClass\", item_r1.cssClass)(\"ngStyle\", item_r1.cssStyle);\n} }\nfunction DrawerListComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, DrawerListComponent_ng_container_0_li_1_Template, 1, 8, \"li\", 1);\n ɵngcc0.ɵɵtemplate(2, DrawerListComponent_ng_container_0_li_2_Template, 2, 2, \"li\", 2);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !item_r1.separator);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", item_r1.separator);\n} }\nconst _c23 = [\"stepLink\"];\nconst _c24 = [\"kendoStepperStep\", \"\"];\nfunction StepperStepComponent_2_ng_template_0_Template(rf, ctx) { }\nconst _c25 = function (a0, a1) { return { $implicit: a0, index: a1 }; };\nfunction StepperStepComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, StepperStepComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 3);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.stepTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c25, ctx_r1.step, ctx_r1.index));\n} }\nfunction StepperStepComponent_ng_container_3_span_1_1_ng_template_0_Template(rf, ctx) { }\nfunction StepperStepComponent_ng_container_3_span_1_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, StepperStepComponent_ng_container_3_span_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 3);\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r6.indicatorTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c25, ctx_r6.step, ctx_r6.index));\n} }\nfunction StepperStepComponent_ng_container_3_span_1_ng_container_2_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 9);\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r9.indicatorIconClasses);\n} }\nfunction StepperStepComponent_ng_container_3_span_1_ng_container_2_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 10);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r10.indicatorText);\n} }\nfunction StepperStepComponent_ng_container_3_span_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_1_ng_container_2_span_1_Template, 1, 1, \"span\", 7);\n ɵngcc0.ɵɵtemplate(2, StepperStepComponent_ng_container_3_span_1_ng_container_2_span_2_Template, 2, 1, \"span\", 8);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.showIndicatorIcon);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r7.showIndicatorIcon);\n} }\nfunction StepperStepComponent_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6);\n ɵngcc0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_1_1_Template, 1, 5, null, 2);\n ɵngcc0.ɵɵtemplate(2, StepperStepComponent_ng_container_3_span_1_ng_container_2_Template, 3, 2, \"ng-container\", 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"transition-duration\", ctx_r4.transitionDuration, \"ms\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.indicatorTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r4.indicatorTemplate);\n} }\nfunction StepperStepComponent_ng_container_3_span_2_1_ng_template_0_Template(rf, ctx) { }\nfunction StepperStepComponent_ng_container_3_span_2_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, StepperStepComponent_ng_container_3_span_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 3);\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r11.labelTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c25, ctx_r11.step, ctx_r11.index));\n} }\nfunction StepperStepComponent_ng_container_3_span_2_ng_container_2_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r14.step.label);\n} }\nfunction StepperStepComponent_ng_container_3_span_2_ng_container_2_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 16);\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r15.validationIconClasses);\n} }\nfunction StepperStepComponent_ng_container_3_span_2_ng_container_2_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 17);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"(\", ctx_r16.optionalText, \")\");\n} }\nfunction StepperStepComponent_ng_container_3_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_2_ng_container_2_span_1_Template, 2, 1, \"span\", 12);\n ɵngcc0.ɵɵtemplate(2, StepperStepComponent_ng_container_3_span_2_ng_container_2_span_2_Template, 1, 1, \"span\", 13);\n ɵngcc0.ɵɵtemplate(3, StepperStepComponent_ng_container_3_span_2_ng_container_2_span_3_Template, 2, 1, \"span\", 14);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.showLabelText);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.showLabelIcon);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r12.step.optional);\n} }\nfunction StepperStepComponent_ng_container_3_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 11);\n ɵngcc0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_2_1_Template, 1, 5, null, 2);\n ɵngcc0.ɵɵtemplate(2, StepperStepComponent_ng_container_3_span_2_ng_container_2_Template, 4, 3, \"ng-container\", 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.labelTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r5.labelTemplate);\n} }\nfunction StepperStepComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_1_Template, 3, 4, \"span\", 4);\n ɵngcc0.ɵɵtemplate(2, StepperStepComponent_ng_container_3_span_2_Template, 3, 2, \"span\", 5);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.showIndicator);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.showLabel);\n} }\nconst _c26 = [\"kendoStepperList\", \"\"];\nfunction StepperListComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"li\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const step_r1 = ctx.$implicit;\n const idx_r2 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"max-width\", ctx_r0.maxStepWidth, \"%\")(\"max-height\", ctx_r0.maxStepHeight, \"%\");\n ɵngcc0.ɵɵclassProp(\"k-step-first\", idx_r2 === 0)(\"k-step-last\", idx_r2 === ctx_r0.steps.length - 1)(\"k-step-done\", idx_r2 < ctx_r0.currentStep)(\"k-step-current\", idx_r2 === ctx_r0.currentStep)(\"k-step-optional\", step_r1.optional)(\"k-step-disabled\", step_r1.disabled);\n ɵngcc0.ɵɵproperty(\"type\", ctx_r0.stepType)(\"step\", step_r1)(\"index\", idx_r2)(\"current\", ctx_r0.currentStep)(\"successIcon\", ctx_r0.successIcon)(\"errorIcon\", ctx_r0.errorIcon)(\"indicatorTemplate\", ctx_r0.indicatorTemplate)(\"labelTemplate\", ctx_r0.labelTemplate)(\"stepTemplate\", ctx_r0.stepTemplate)(\"ngClass\", step_r1.cssClass)(\"ngStyle\", step_r1.cssStyle);\n ɵngcc0.ɵɵattribute(\"data-kendo-stepper-index\", idx_r2);\n} }\nconst _c27 = [\"kendoTabStripTab\", \"\"];\nfunction TabComponent_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.tab.title);\n} }\nfunction TabComponent_span_1_ng_template_1_Template(rf, ctx) { }\nfunction TabComponent_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtemplate(1, TabComponent_span_1_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.tab.tabTitle == null ? null : ctx_r1.tab.tabTitle.templateRef);\n} }\nfunction TabComponent_span_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function TabComponent_span_2_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.closeTab(ctx_r4.index); });\n ɵngcc0.ɵɵelement(1, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"title\", ctx_r2.closeButtonTitle);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.closeButtonTitle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r2.closeButtonClasses);\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-layout',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635940072,\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 expand modes of the PanelBar.\n * By default, the expand mode is set to `multiple`.\n */\nvar PanelBarExpandMode;\n(function (PanelBarExpandMode) {\n /**\n * Allows you to expand only one item at a time.\n * When you expand an item, the item that was previously expanded is coll.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Single\"] = 0] = \"Single\";\n /**\n * Allows you to expand only one item at a time and requires you to set the `height` property.\n * The expanded area occupies the entire height of the PanelBar.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Full\"] = 1] = \"Full\";\n /**\n * The default mode of the PanelBar.\n * Allows you to expand more than one item at a time. Items can also be toggled.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Multiple\"] = 2] = \"Multiple\";\n /**\n * By default, the expand mode is set to `multiple`.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Default\"] = 2] = \"Default\";\n})(PanelBarExpandMode || (PanelBarExpandMode = {}));\n\n/**\n * @hidden\n */\nlet nextPanelbarId = 0;\n/**\n * @hidden\n */\nlet PanelBarService = class PanelBarService {\n constructor() {\n this.parentSource = new Subject();\n this.keepContentSource = new BehaviorSubject(false);\n this.childSource = new Subject();\n this.parent$ = this.parentSource.asObservable();\n this.children$ = this.childSource.asObservable();\n this.keepContent$ = this.keepContentSource.asObservable();\n this.pbId = nextPanelbarId++;\n }\n onKeepContent(keepContent) {\n this.keepContentSource.next(keepContent);\n }\n onSelect(event) {\n this.childSource.next(event);\n }\n onFocus() {\n this.parentSource.next(true);\n }\n onBlur() {\n this.parentSource.next(false);\n }\n};\nPanelBarService.ɵfac = function PanelBarService_Factory(t) { return new (t || PanelBarService)(); };\nPanelBarService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PanelBarService, factory: function (t) { return PanelBarService.ɵfac(t); } });\nPanelBarService = __decorate([ __metadata(\"design:paramtypes\", [])\n], PanelBarService);\n\n/**\n * Represents the content template of the declaratively initialized PanelBar items.\n * The content can be expanded or collapsed through the item.\n */\nlet PanelBarContentDirective = class PanelBarContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nPanelBarContentDirective.ɵfac = function PanelBarContentDirective_Factory(t) { return new (t || PanelBarContentDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nPanelBarContentDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PanelBarContentDirective, selectors: [[\"\", \"kendoPanelBarContent\", \"\"]] });\nPanelBarContentDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], PanelBarContentDirective);\n\n/**\n * Represents the template directive of the PanelBar which helps to customize the item title\n * ([more information and example]({% slug templates_panelbar %}#toc-customizing-the-appearance-of-the-title)).\n *\n * > The `kendoPanelBarItemTitle` directive overrides the PanelBarItem [title]({% slug api_layout_panelbaritemcomponent %}#toc-title) option.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Item Title\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nlet PanelBarItemTitleDirective = class PanelBarItemTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nPanelBarItemTitleDirective.ɵfac = function PanelBarItemTitleDirective_Factory(t) { return new (t || PanelBarItemTitleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nPanelBarItemTitleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PanelBarItemTitleDirective, selectors: [[\"\", \"kendoPanelBarItemTitle\", \"\"]] });\nPanelBarItemTitleDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], PanelBarItemTitleDirective);\n\nlet nextId = 0;\nconst parsePanelBarItems = (data) => {\n return data.map((item) => {\n if (!item.id) {\n item.id = `default-${nextId++}`;\n }\n if (item.children) {\n item.children = parsePanelBarItems(item.children);\n }\n return item;\n });\n};\nvar util = {\n parsePanelBarItems\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isHorizontalArrowKey = keyCode => keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight;\n/**\n * @hidden\n */\nconst isVerticalArrowKey = keyCode => keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown;\n/**\n * @hidden\n */\nconst isArrowKey = keyCode => isHorizontalArrowKey(keyCode) || isVerticalArrowKey(keyCode);\n/**\n * @hidden\n */\nconst isNavigationKey = keyCode => keyCode === Keys.PageUp || keyCode === Keys.PageDown ||\n keyCode === Keys.Home || keyCode === Keys.End;\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\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 hasClass = (element, className) => Boolean(toClassList(element.className).find((name) => name === className));\n/**\n * @hidden\n */\nconst closestInScope = (target, predicate, scope, targetAttr) => {\n while (target && target !== scope && !predicate(target, targetAttr)) {\n target = target.parentNode;\n }\n if (target !== scope) {\n return target;\n }\n};\n/**\n * @hidden\n */\nconst itemIndex = (item, indexAttr) => +item.getAttribute(indexAttr);\nconst hasItemIndex = (item, indexAttr) => isPresent(item.getAttribute(indexAttr));\n/**\n * @hidden\n */\nconst closestItem = (target, targetAttr, scope) => closestInScope(target, hasItemIndex, scope, targetAttr);\n\nvar PanelBarItemComponent_1;\n/**\n * @hidden\n */\nlet nextId$1 = 0;\n/**\n * Represents the items of the PanelBar.\n */\nlet PanelBarItemComponent = PanelBarItemComponent_1 = class PanelBarItemComponent {\n constructor(parent, eventService, element, renderer) {\n this.parent = parent;\n this.eventService = eventService;\n this.element = element;\n this.renderer = renderer;\n /**\n * Allows the component to set the `\"id\"` property to each item.\n * Used to set the `id` attributes of the nested elements and to enable the WAI-ARIA support.\n */\n this.id = `default-${nextId$1++}`;\n /**\n * Defines the icon that will be rendered next to the title ([see example]({% slug items_panelbar %}#toc-title-icons)).\n */\n this.icon = '';\n /**\n * Defines the icon that will be rendered next to the title by using a custom CSS class\n * ([see example]({% slug items_panelbar %}#toc-title-icons)).\n */\n this.iconClass = '';\n /**\n * Defines the location of the image that will be displayed next to the title\n * ([see example]({% slug items_panelbar %}#toc-title-images)).\n */\n this.imageUrl = '';\n /**\n * When set to `true`, disables a PanelBar item ([see example]({% slug items_panelbar %}#toc-disabled-state)).\n */\n this.disabled = false;\n /**\n * Sets the selected state of a PanelBar item ([see example]({% slug items_panelbar %}#toc-selected-state)).\n */\n this.selected = false;\n this.keepContent = false;\n this.hasChildItems = false;\n this.hasItems = false;\n this.hasContent = false;\n this.state = \"inactive\";\n this.role = \"treeitem\";\n this.titleAttribute = null; // tslint:disable-line\n this.kItemClass = true;\n this.focused = false;\n this.wrapperFocused = false;\n this.subscriptions = new Subscription(() => { });\n this._expanded = false;\n this.subscriptions.add(eventService.parent$.subscribe(focused => this.onWrapperFocusChange(focused)));\n this.subscriptions.add(eventService.keepContent$.subscribe(keepContent => this.keepContent = keepContent));\n this.wrapperFocused = parent ? parent.focused : false;\n this.level = this.parent ? this.parent.level + 1 : 0;\n }\n /**\n * When set to `true`, expands the PanelBar item ([see example]({% slug items_panelbar %}#toc-expanded-state)).\n */\n set expanded(value) {\n const activeState = this.animate ? \"active\" : \"activeWithoutAnimation\";\n this.state = value ? activeState : \"inactive\";\n if (!this.keepContent) {\n this.toggleExpandedChildAnimations(value);\n }\n this._expanded = value;\n }\n get expanded() {\n return this._expanded;\n }\n get animate() {\n return this.eventService.animate;\n }\n get kStateDefaultClass() {\n return !this.disabled;\n }\n get kStateDisabledClass() {\n return this.disabled;\n }\n get kStateExpandedClass() {\n return !this.disabled && this.expanded && (this.hasChildItems || this.hasContent);\n }\n get itemId() {\n return 'k-panelbar-' + this.eventService.pbId + '-item-' + this.id;\n }\n get ariaExpanded() {\n return (this.hasChildItems || this.hasContent) ? !this.disabled && this.expanded : null;\n }\n get ariaSelected() {\n return !this.disabled && this.selected;\n }\n get ariaDisabled() {\n return this.disabled ? true : null;\n }\n get headerClass() {\n return this.parent ? null : true;\n }\n get childClass() {\n return this.parent ? true : null;\n }\n /**\n * @hidden\n */\n get titleTemplate() {\n return this.titleTemplates.length > 0 ? this.titleTemplates.toArray()[0].templateRef : undefined;\n }\n /**\n * @hidden\n */\n headerHeight() {\n return this.element.nativeElement.offsetHeight - (this.contentWrapper ? this.contentWrapper.nativeElement.offsetHeight : 0);\n }\n ngOnInit() {\n this.addLevelClass();\n }\n ngAfterContentChecked() {\n this.hasItems = this.items && this.items.filter(item => !item.hidden).length > 0;\n this.hasChildItems = this.contentItems.filter(item => item !== this).length > 0 || this.hasItems;\n this.hasContent = (this.contentTemplate !== undefined && this.contentTemplate.length > 0) ||\n this.content !== undefined;\n this.validateConfiguration();\n }\n ngAfterViewChecked() {\n if (this.items) {\n this.childrenItems = this.viewChildItems.toArray();\n }\n else {\n this.childrenItems = this.contentItems.filter(item => item !== this);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n onItemAction() {\n if (!this.disabled) {\n this.eventService.onSelect(this);\n }\n }\n /**\n * @hidden\n */\n onItemClick(e) {\n if (!isFocusable(e.target)) {\n this.onItemAction();\n }\n }\n /**\n * @hidden\n */\n get iconClasses() {\n let icon = this.icon ? 'k-i-' + this.icon : null;\n return {\n [icon || this.iconClass]: true\n };\n }\n /**\n * @hidden\n */\n serialize() {\n return {\n content: this.content,\n disabled: this.disabled,\n expanded: this.expanded,\n focused: this.focused,\n icon: this.icon,\n iconClass: this.iconClass,\n id: this.id,\n imageUrl: this.imageUrl,\n selected: this.selected,\n title: this.title\n };\n }\n /**\n * @hidden\n */\n subTreeViewItems() {\n let subTree = [];\n this.viewChildItems.forEach(item => {\n subTree = subTree.concat(item.subTreeViewItems());\n subTree.push(item);\n });\n return subTree;\n }\n /**\n * @hidden\n */\n validateConfiguration() {\n if (isDevMode()) {\n if (this.content && (this.contentTemplate !== undefined && this.contentTemplate.length > 0)) {\n throw new Error(\"Invalid configuration: mixed template components and component property.\");\n }\n }\n }\n /**\n * @hidden\n */\n toggleAnimationState(value) {\n if (!this.animate) {\n return;\n }\n this.state = value && this.eventService.expandMode !== PanelBarExpandMode.Single ? 'active' : 'activeWithoutAnimation';\n }\n /**\n * @hidden\n */\n toggleExpandedChildAnimations(value) {\n if (this.childrenItems) {\n this.childrenItems.forEach(child => {\n if (child.expanded) {\n child.toggleAnimationState(value);\n child.toggleExpandedChildAnimations(value);\n }\n });\n }\n }\n /**\n * @hidden\n */\n addLevelClass() {\n if (this.level >= 0) {\n this.renderer.addClass(this.element.nativeElement, `k-level-${this.level}`);\n }\n }\n onWrapperFocusChange(focused) {\n this.wrapperFocused = focused;\n }\n};\nPanelBarItemComponent.ɵfac = function PanelBarItemComponent_Factory(t) { return new (t || PanelBarItemComponent)(ɵngcc0.ɵɵdirectiveInject(PanelBarItemComponent, 13), ɵngcc0.ɵɵdirectiveInject(PanelBarService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nPanelBarItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PanelBarItemComponent, selectors: [[\"kendo-panelbar-item\"]], contentQueries: function PanelBarItemComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, PanelBarItemComponent_1, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, PanelBarContentDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, PanelBarItemTitleDirective, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentItems = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTemplates = _t);\n } }, viewQuery: function PanelBarItemComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 5);\n ɵngcc0.ɵɵviewQuery(PanelBarItemComponent_1, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.header = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentWrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.viewChildItems = _t);\n } }, hostVars: 18, hostBindings: function PanelBarItemComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.itemId);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"title\", ctx.titleAttribute)(\"aria-expanded\", ctx.ariaExpanded)(\"aria-selected\", ctx.ariaSelected)(\"aria-disabled\", ctx.ariaDisabled);\n ɵngcc0.ɵɵclassProp(\"k-item\", ctx.kItemClass)(\"k-state-default\", ctx.kStateDefaultClass)(\"k-state-disabled\", ctx.kStateDisabledClass)(\"k-state-expanded\", ctx.kStateExpandedClass)(\"k-panelbar-header\", ctx.headerClass)(\"k-panelbar-item\", ctx.childClass);\n } }, inputs: { id: \"id\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\", selected: \"selected\", expanded: \"expanded\", title: \"title\", content: \"content\", items: \"items\", template: \"template\" }, exportAs: [\"kendoPanelbarItem\"], ngContentSelectors: _c6, decls: 8, vars: 12, consts: [[3, \"click\"], [\"header\", \"\"], [\"class\", \"k-icon k-panelbar-item-icon\", 3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"k-image k-panelbar-item-icon\", \"alt\", \"\", 3, \"src\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"k-icon k-panelbar-toggle\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-icon\", \"k-panelbar-item-icon\", 3, \"ngClass\"], [\"alt\", \"\", 1, \"k-image\", \"k-panelbar-item-icon\", 3, \"src\"], [1, \"k-panelbar-item-text\"], [3, \"ngTemplateOutlet\"], [1, \"k-icon\", \"k-panelbar-toggle\", 3, \"ngClass\"], [\"contentWrapper\", \"\"], [\"class\", \"k-panel k-group k-panelbar-group\", 3, \"overflow\", \"height\", 4, \"ngIf\"], [\"class\", \"k-content k-panelbar-content\", 3, \"overflow\", \"height\", 4, \"ngIf\"], [1, \"k-panel\", \"k-group\", \"k-panelbar-group\"], [1, \"k-content\", \"k-panelbar-content\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [4, \"ngFor\", \"ngForOf\"], [3, \"title\", \"id\", \"icon\", \"iconClass\", \"imageUrl\", \"selected\", \"expanded\", \"disabled\", \"template\", \"items\", \"content\", 4, \"ngIf\"], [3, \"title\", \"id\", \"icon\", \"iconClass\", \"imageUrl\", \"selected\", \"expanded\", \"disabled\", \"template\", \"items\", \"content\"], [3, \"ngIf\"]], template: function PanelBarItemComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c5);\n ɵngcc0.ɵɵelementStart(0, \"span\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function PanelBarItemComponent_Template_span_click_0_listener($event) { return ctx.onItemClick($event); });\n ɵngcc0.ɵɵtemplate(2, PanelBarItemComponent_span_2_Template, 1, 1, \"span\", 2);\n ɵngcc0.ɵɵtemplate(3, PanelBarItemComponent_img_3_Template, 1, 1, \"img\", 3);\n ɵngcc0.ɵɵtemplate(4, PanelBarItemComponent_ng_container_4_Template, 3, 1, \"ng-container\", 4);\n ɵngcc0.ɵɵtemplate(5, PanelBarItemComponent_5_Template, 1, 1, null, 4);\n ɵngcc0.ɵɵtemplate(6, PanelBarItemComponent_span_6_Template, 1, 4, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, PanelBarItemComponent_div_7_Template, 6, 7, \"div\", 4);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-link\", true)(\"k-state-selected\", !ctx.disabled && ctx.selected)(\"k-state-focused\", ctx.focused && ctx.wrapperFocused);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.iconClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.titleTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.titleTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasChildItems || ctx.hasContent);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.keepContent || !ctx.disabled && ctx.expanded && (ctx.hasChildItems || ctx.hasContent));\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgClass, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf, PanelBarItemComponent], encapsulation: 2, data: { animation: [\n trigger('toggle', [\n state('inactive', style({ display: 'none' })),\n transition('* => active', [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(200, style({ height: AUTO_STYLE }))\n ]),\n transition('active => *', [\n style({ overflow: 'hidden', height: AUTO_STYLE }),\n animate(200, style({ height: 0, display: 'none' }))\n ])\n ])\n ] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanelBarItemComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanelBarItemComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanelBarItemComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanelBarItemComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PanelBarItemComponent.prototype, \"imageUrl\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PanelBarItemComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], PanelBarItemComponent.prototype, \"expanded\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PanelBarItemComponent.prototype, \"selected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PanelBarItemComponent.prototype, \"content\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], PanelBarItemComponent.prototype, \"items\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], PanelBarItemComponent.prototype, \"template\", void 0);\n__decorate([\n ViewChild('header', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], PanelBarItemComponent.prototype, \"header\", void 0);\n__decorate([\n ViewChild('contentWrapper', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], PanelBarItemComponent.prototype, \"contentWrapper\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], PanelBarItemComponent.prototype, \"role\", void 0);\n__decorate([\n HostBinding('attr.title'),\n __metadata(\"design:type\", String)\n], PanelBarItemComponent.prototype, \"titleAttribute\", void 0);\n__decorate([\n HostBinding('class.k-item'),\n __metadata(\"design:type\", Boolean)\n], PanelBarItemComponent.prototype, \"kItemClass\", void 0);\n__decorate([\n HostBinding('class.k-state-default'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"kStateDefaultClass\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"kStateDisabledClass\", null);\n__decorate([\n HostBinding('class.k-state-expanded'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"kStateExpandedClass\", null);\n__decorate([\n HostBinding('id'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"itemId\", null);\n__decorate([\n HostBinding('attr.aria-expanded'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"ariaExpanded\", null);\n__decorate([\n HostBinding('attr.aria-selected'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"ariaSelected\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"ariaDisabled\", null);\n__decorate([\n HostBinding('class.k-panelbar-header'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"headerClass\", null);\n__decorate([\n HostBinding('class.k-panelbar-item'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], PanelBarItemComponent.prototype, \"childClass\", null);\n__decorate([\n ViewChildren(PanelBarItemComponent_1),\n __metadata(\"design:type\", QueryList)\n], PanelBarItemComponent.prototype, \"viewChildItems\", void 0);\n__decorate([\n ContentChildren(PanelBarItemComponent_1),\n __metadata(\"design:type\", QueryList)\n], PanelBarItemComponent.prototype, \"contentItems\", void 0);\n__decorate([\n ContentChildren(PanelBarContentDirective, { descendants: false }),\n __metadata(\"design:type\", QueryList)\n], PanelBarItemComponent.prototype, \"contentTemplate\", void 0);\n__decorate([\n ContentChildren(PanelBarItemTitleDirective, { descendants: false }),\n __metadata(\"design:type\", QueryList)\n], PanelBarItemComponent.prototype, \"titleTemplates\", void 0);\nPanelBarItemComponent = PanelBarItemComponent_1 = __decorate([ __param(0, SkipSelf()), __param(0, Host()), __param(0, Optional()),\n __metadata(\"design:paramtypes\", [PanelBarItemComponent,\n PanelBarService,\n ElementRef,\n Renderer2])\n], PanelBarItemComponent);\n\n/**\n * Represents the template directive of the PanelBar which helps to customize the item content.\n */\nlet PanelBarItemTemplateDirective = class PanelBarItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nPanelBarItemTemplateDirective.ɵfac = function PanelBarItemTemplateDirective_Factory(t) { return new (t || PanelBarItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nPanelBarItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PanelBarItemTemplateDirective, selectors: [[\"\", \"kendoPanelBarItemTemplate\", \"\"]] });\nPanelBarItemTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], PanelBarItemTemplateDirective);\n\n/**\n * Represents the [Kendo UI PanelBar component for Angular]({% slug overview_panelbar %}).\n */\nlet PanelBarComponent = \n// TODO: add styles as input prop\nclass PanelBarComponent {\n constructor(elementRef, eventService, localization) {\n this.localization = localization;\n /**\n * Sets the expand mode of the PanelBar through the `PanelBarExpandMode` enum ([see example]({% slug expandmodes_panelbar %})).\n *\n * The available modes are:\n * - `\"single\"`—Expands only one item at a time. Expanding an item collapses the item that was previously expanded.\n * - `\"multiple\"`—The default mode of the PanelBar.\n * Expands more than one item at a time. Items can also be toggled.\n * - `\"full\"`—Expands only one item at a time.\n * The expanded area occupies the entire height of the PanelBar. Requires you to set the `height` property.\n */\n this.expandMode = PanelBarExpandMode.Default;\n /**\n * Allows the PanelBar to modify the selected state of the items.\n */\n this.selectable = true;\n /**\n * Sets the animate state of the PanelBar ([see example]({% slug animations_panelbar %})).\n */\n this.animate = true;\n /**\n * Sets the height of the component when the `\"full\"` expand mode is used.\n * This option is ignored in the `\"multiple\"` and `\"single\"` expand modes.\n */\n this.height = \"400px\";\n /**\n * Fires each time the user interacts with a PanelBar item\n * ([see example]({% slug routing_panelbar %}#toc-getting-the-selected-item)).\n * The event data contains all items that are modified.\n */\n this.stateChange = new EventEmitter();\n this.tabIndex = 0;\n this.role = \"tree\";\n this.hostClass = true;\n this.activeDescendant = \"\";\n this.isViewInit = true;\n this.focused = false;\n this._keepItemContent = false;\n this.updateChildrenHeight = () => {\n let childrenHeight = 0;\n const panelbarHeight = this.elementRef.nativeElement.offsetHeight;\n const contentOverflow = this.expandMode === PanelBarExpandMode.Full ? 'auto' : 'visible';\n this.childrenItems.forEach(item => {\n childrenHeight += item.headerHeight();\n });\n this.childrenItems.forEach(item => {\n item.contentHeight = PanelBarExpandMode.Full === this.expandMode ? (panelbarHeight - childrenHeight) + \"px\" : 'auto';\n item.contentOverflow = contentOverflow;\n });\n };\n validatePackage(packageMetadata);\n /* tslint:disable-line */\n this.keyBindings = this.computedKeys;\n this.elementRef = elementRef;\n this.eventService = eventService;\n this.eventService.children$.subscribe(event => this.onItemAction(event));\n }\n /**\n * When set to `true`, the PanelBar renders the content of all items and they are persisted in the DOM\n * ([see example]({% slug templates_panelbar %}#toc-collections)).\n * By default, this option is set to `false`.\n */\n get keepItemContent() {\n return this._keepItemContent;\n }\n set keepItemContent(keepItemContent) {\n this._keepItemContent = keepItemContent;\n this.eventService.onKeepContent(keepItemContent);\n }\n /**\n * Sets the items of the PanelBar as an array of `PanelBarItemModel` instances\n * ([see example]({% slug items_panelbar %})).\n */\n set items(data) {\n if (data) {\n this._items = util.parsePanelBarItems(data);\n }\n }\n get items() {\n return this._items;\n }\n get hostHeight() {\n return this.expandMode === PanelBarExpandMode.Full ? this.height : 'auto';\n }\n get overflow() {\n return this.expandMode === PanelBarExpandMode.Full ? \"hidden\" : \"visible\";\n }\n get dir() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n invertKeys(original, inverted) {\n return this.localization.rtl ? inverted : original;\n }\n get computedKeys() {\n return {\n [Keys.Space]: () => this.selectFocusedItem(),\n [Keys.Enter]: () => this.selectFocusedItem(),\n [Keys.ArrowUp]: () => this.focusPreviousItem(),\n [this.invertKeys(Keys.ArrowLeft, Keys.ArrowRight)]: () => this.collapseItem(),\n [Keys.ArrowDown]: () => this.focusNextItem(),\n [this.invertKeys(Keys.ArrowRight, Keys.ArrowLeft)]: () => this.expandItem(),\n [Keys.End]: () => this.focusLastItem(),\n [Keys.Home]: () => this.focusFirstItem()\n };\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(() => this.keyBindings = this.computedKeys);\n this.eventService.animate = this.animate;\n this.eventService.expandMode = this.expandMode;\n }\n ngAfterViewChecked() {\n if (this.items) {\n this.childrenItems = this.viewChildItems.toArray();\n this.allItems = this.viewItems;\n }\n else {\n this.childrenItems = this.contentChildItems.toArray();\n this.allItems = this.contentItems.toArray();\n }\n if (this.isViewInit && this.childrenItems.length) {\n this.isViewInit = false;\n setTimeout(() => this.updateChildrenHeight());\n }\n this.validateConfiguration();\n }\n ngOnChanges(changes) {\n if (changes['height'] || changes['expandMode'] || changes[\"items\"]) { // tslint:disable-line\n if (this.childrenItems) {\n setTimeout(this.updateChildrenHeight);\n }\n }\n if (changes.animate) {\n this.eventService.animate = this.animate;\n }\n if (changes.expandMode) {\n this.eventService.expandMode = this.expandMode;\n }\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n onComponentClick(event) {\n const itemClicked = this.visibleItems().some((item) => {\n return item.header.nativeElement.contains(event.target);\n });\n if (!isFocusable(event.target) && !this.focused && itemClicked) {\n this.elementRef.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n this.eventService.onFocus();\n this.focused = true;\n if (this.allItems.length > 0) {\n const visibleItems = this.visibleItems();\n const focusedItems = visibleItems.filter(item => item.focused);\n if (!focusedItems.length && visibleItems.length > 0) {\n visibleItems[0].focused = true;\n this.activeDescendant = visibleItems[0].itemId;\n }\n }\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n this.eventService.onBlur();\n this.focused = false;\n this.activeDescendant = \"\";\n }\n /**\n * @hidden\n */\n onComponentKeyDown(event) {\n if (event.target === this.elementRef.nativeElement) {\n if (event.keyCode === Keys.Space || event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowDown ||\n event.keyCode === Keys.ArrowLeft || event.keyCode === Keys.ArrowRight || event.keyCode === Keys.Home ||\n event.keyCode === Keys.End || event.keyCode === Keys.PageUp || event.keyCode === Keys.PageDown) {\n event.preventDefault();\n }\n const handler = this.keyBindings[event.keyCode];\n //TODO: check if next item is disabled and skip operation?\n if (handler) {\n handler();\n }\n }\n }\n get viewItems() {\n let treeItems = [];\n this.viewChildItems.toArray().forEach(item => {\n treeItems.push(item);\n treeItems = treeItems.concat(item.subTreeViewItems());\n });\n return treeItems;\n }\n validateConfiguration() {\n if (isDevMode()) {\n if (this.items && (this.contentItems && this.contentItems.length > 0)) {\n throw new Error(\"Invalid configuration: mixed template components and items property.\");\n }\n }\n }\n onItemAction(item) {\n if (!item) {\n return;\n }\n let modifiedItems = new Array();\n this.allItems\n .forEach((currentItem) => {\n let selectedState = currentItem === item;\n let focusedState = selectedState;\n selectedState = this.selectable ? selectedState : currentItem.selected;\n if (currentItem.selected !== selectedState || currentItem.focused !== focusedState) {\n currentItem.selected = selectedState;\n currentItem.focused = focusedState;\n this.activeDescendant = focusedState ? currentItem.itemId : \"\";\n modifiedItems.push(currentItem);\n }\n });\n if (this.expandMode === PanelBarExpandMode.Multiple) {\n if (item.hasChildItems || item.hasContent) {\n item.expanded = !item.expanded;\n }\n if (modifiedItems.indexOf(item) < 0) {\n modifiedItems.push(item);\n }\n }\n else {\n let siblings = item.parent ? item.parent.childrenItems : this.childrenItems;\n if (item.hasChildItems || item.hasContent) {\n siblings\n .forEach((currentItem) => {\n let expandedState = currentItem === item;\n if (currentItem.expanded !== expandedState) {\n currentItem.expanded = expandedState;\n if (modifiedItems.indexOf(currentItem) < 0) {\n modifiedItems.push(currentItem);\n }\n }\n });\n }\n }\n if (modifiedItems.length > 0) {\n this.stateChange.emit(modifiedItems.map(currentItem => currentItem.serialize()));\n }\n }\n isVisible(item) {\n const visibleItems = this.visibleItems();\n return visibleItems.some(i => i === item);\n }\n getVisibleParent(item) {\n const visibleItems = this.visibleItems();\n if (!item.parent) {\n return item;\n }\n return visibleItems.some(i => i === item.parent) ? item.parent : this.getVisibleParent(item.parent);\n }\n focusItem(action) {\n const visibleItems = this.visibleItems();\n let currentIndex = visibleItems.findIndex(item => item.focused);\n let currentItem = visibleItems[currentIndex];\n let nextItem;\n if (currentIndex === -1) {\n let focusedItem = this.allItems.find(item => item.focused);\n focusedItem.focused = false;\n currentItem = this.getVisibleParent(focusedItem);\n currentIndex = visibleItems.findIndex(item => item === currentItem);\n }\n switch (action) {\n case \"lastItem\":\n nextItem = visibleItems[visibleItems.length - 1];\n break;\n case \"firstItem\":\n nextItem = visibleItems[0];\n break;\n case \"nextItem\":\n nextItem = visibleItems[currentIndex < visibleItems.length - 1 ? currentIndex + 1 : 0];\n break;\n case \"previousItem\":\n nextItem = visibleItems[currentIndex > 0 ? currentIndex - 1 : visibleItems.length - 1];\n break;\n default:\n }\n if (currentItem && nextItem && currentItem !== nextItem) {\n this.moveFocus(currentItem, nextItem);\n }\n }\n moveFocus(from, to) {\n from.focused = false;\n to.focused = true;\n this.activeDescendant = to.itemId;\n const modifiedItems = new Array(from.serialize(), to.serialize());\n this.stateChange.emit(modifiedItems);\n }\n focusLastItem() {\n this.focusItem(\"lastItem\");\n }\n focusFirstItem() {\n this.focusItem(\"firstItem\");\n }\n focusNextItem() {\n this.focusItem(\"nextItem\");\n }\n focusPreviousItem() {\n this.focusItem(\"previousItem\");\n }\n expandItem() {\n let currentItem = this.allItems.filter(item => item.focused)[0];\n if (!this.isVisible(currentItem)) {\n currentItem.focused = false;\n currentItem = this.getVisibleParent(currentItem);\n }\n if (currentItem.hasChildItems || currentItem.hasContent) {\n if (!currentItem.expanded) {\n this.onItemAction(currentItem);\n }\n else if (currentItem.hasChildItems) {\n const firstChildIndex = currentItem.childrenItems.findIndex(item => !item.disabled);\n if (firstChildIndex > -1) {\n this.moveFocus(currentItem, currentItem.childrenItems[firstChildIndex]);\n }\n }\n }\n }\n collapseItem() {\n const currentItem = this.allItems.filter(item => item.focused)[0];\n if (currentItem.expanded) {\n this.onItemAction(currentItem);\n }\n else if (currentItem.parent) {\n this.moveFocus(currentItem, currentItem.parent);\n }\n }\n selectFocusedItem() {\n let focusedItem = this.allItems.filter(item => item.focused)[0];\n if (!this.isVisible(focusedItem)) {\n focusedItem.focused = false;\n focusedItem = this.getVisibleParent(focusedItem);\n }\n if (focusedItem) {\n focusedItem.onItemAction();\n }\n }\n visibleItems() {\n return this.flatVisibleItems(this.childrenItems);\n }\n flatVisibleItems(listOfItems = new Array(), flattedItems = new Array()) {\n listOfItems.forEach(item => {\n flattedItems.push(item);\n if (item.expanded && item.hasChildItems) {\n this.flatVisibleItems(item.childrenItems, flattedItems);\n }\n });\n return flattedItems;\n }\n};\nPanelBarComponent.ɵfac = function PanelBarComponent_Factory(t) { return new (t || PanelBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(PanelBarService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nPanelBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PanelBarComponent, selectors: [[\"kendo-panelbar\"]], contentQueries: function PanelBarComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, PanelBarItemTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, PanelBarItemComponent, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, PanelBarItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentItems = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentChildItems = _t);\n } }, viewQuery: function PanelBarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(PanelBarItemComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.viewChildItems = _t);\n } }, hostVars: 10, hostBindings: function PanelBarComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function PanelBarComponent_click_HostBindingHandler($event) { return ctx.onComponentClick($event); })(\"focus\", function PanelBarComponent_focus_HostBindingHandler() { return ctx.onComponentFocus(); })(\"blur\", function PanelBarComponent_blur_HostBindingHandler() { return ctx.onComponentBlur(); })(\"keydown\", function PanelBarComponent_keydown_HostBindingHandler($event) { return ctx.onComponentKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabIndex\", ctx.tabIndex)(\"role\", ctx.role)(\"aria-activedescendant\", ctx.activeDescendant)(\"dir\", ctx.dir);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.hostHeight)(\"overflow\", ctx.overflow);\n ɵngcc0.ɵɵclassProp(\"k-panelbar\", ctx.hostClass);\n } }, inputs: { expandMode: \"expandMode\", selectable: \"selectable\", animate: \"animate\", height: \"height\", keepItemContent: \"keepItemContent\", items: \"items\" }, outputs: { stateChange: \"stateChange\" }, exportAs: [\"kendoPanelbar\"], features: [ɵngcc0.ɵɵProvidersFeature([\n PanelBarService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.panelbar'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c6, decls: 2, vars: 2, consts: [[4, \"ngIf\"], [3, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [3, \"title\", \"id\", \"icon\", \"iconClass\", \"imageUrl\", \"selected\", \"expanded\", \"disabled\", \"template\", \"items\", \"content\", 4, \"ngIf\"], [3, \"title\", \"id\", \"icon\", \"iconClass\", \"imageUrl\", \"selected\", \"expanded\", \"disabled\", \"template\", \"items\", \"content\"]], template: function PanelBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c5);\n ɵngcc0.ɵɵtemplate(0, PanelBarComponent_ng_content_0_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵtemplate(1, PanelBarComponent_ng_template_1_Template, 1, 1, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contentChildItems && !ctx.items);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.items == null ? null : ctx.items.length);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, PanelBarItemComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PanelBarComponent.prototype, \"expandMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PanelBarComponent.prototype, \"selectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PanelBarComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PanelBarComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], PanelBarComponent.prototype, \"keepItemContent\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], PanelBarComponent.prototype, \"items\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PanelBarComponent.prototype, \"stateChange\", void 0);\n__decorate([\n HostBinding('attr.tabIndex'),\n __metadata(\"design:type\", Number)\n], PanelBarComponent.prototype, \"tabIndex\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], PanelBarComponent.prototype, \"role\", void 0);\n__decorate([\n HostBinding('class.k-panelbar'),\n __metadata(\"design:type\", Boolean)\n], PanelBarComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.aria-activedescendant'),\n __metadata(\"design:type\", String)\n], PanelBarComponent.prototype, \"activeDescendant\", void 0);\n__decorate([\n HostBinding('style.height'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], PanelBarComponent.prototype, \"hostHeight\", null);\n__decorate([\n HostBinding('style.overflow'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], PanelBarComponent.prototype, \"overflow\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], PanelBarComponent.prototype, \"dir\", null);\n__decorate([\n ContentChild(PanelBarItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", PanelBarItemTemplateDirective)\n], PanelBarComponent.prototype, \"template\", void 0);\n__decorate([\n ContentChildren(PanelBarItemComponent, { descendants: true }),\n __metadata(\"design:type\", QueryList)\n], PanelBarComponent.prototype, \"contentItems\", void 0);\n__decorate([\n ContentChildren(PanelBarItemComponent),\n __metadata(\"design:type\", QueryList)\n], PanelBarComponent.prototype, \"contentChildItems\", void 0);\n__decorate([\n ViewChildren(PanelBarItemComponent),\n __metadata(\"design:type\", QueryList)\n], PanelBarComponent.prototype, \"viewChildItems\", void 0);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PanelBarComponent.prototype, \"onComponentClick\", null);\n__decorate([\n HostListener('focus'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], PanelBarComponent.prototype, \"onComponentFocus\", null);\n__decorate([\n HostListener('blur'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], PanelBarComponent.prototype, \"onComponentBlur\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PanelBarComponent.prototype, \"onComponentKeyDown\", null);\nPanelBarComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n PanelBarService,\n LocalizationService])\n], PanelBarComponent);\n\n/**\n * Represents the pane component of the Splitter.\n */\nlet SplitterPaneComponent = class SplitterPaneComponent {\n constructor(element, renderer, cdr) {\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * Specifies if the user is allowed to resize the pane and provide space for other panes.\n */\n this.resizable = true;\n /**\n * Specifies if the user is allowed to hide the pane and provide space for other panes.\n */\n this.collapsible = false;\n /**\n * Specifies if overflowing content is scrollable or hidden.\n */\n this.scrollable = true;\n /**\n * Specifies if the pane is initially collapsed.\n */\n this.collapsed = false;\n /**\n * @hidden\n */\n this.orientation = 'horizontal';\n /**\n * @hidden\n */\n this.overlayContent = false;\n /**\n * Fires each time the user resizes the Splitter pane.\n * The event data contains the new pane size.\n * Allows a two-way binding of the pane `size` property.\n */\n this.sizeChange = new EventEmitter();\n /**\n * Fires each time the `collapsed` property changes.\n * The event data contains the new property state.\n * Allows a two-way binding of the `collapsed` pane property.\n */\n this.collapsedChange = new EventEmitter();\n this.hostClass = true;\n /**\n * @hidden\n */\n this.forceExpand = false;\n /**\n * @hidden\n */\n this.isResized = false;\n }\n /**\n * @hidden\n */\n set order(paneOrder) {\n this._order = paneOrder;\n this.setOrderStyles();\n }\n get order() {\n return this._order;\n }\n /**\n * Sets the initial size of the pane.\n * Has to be between the `min` and `max` properties.\n */\n set size(newSize) {\n this._size = newSize;\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, '-ms-flex-preferred-size', newSize);\n this.renderer.setStyle(element, 'flex-basis', newSize);\n if (this.staticPaneClass) {\n this.renderer.addClass(element, 'k-pane-static');\n }\n else {\n this.renderer.removeClass(element, 'k-pane-static');\n }\n }\n get size() {\n return this._size;\n }\n /**\n * @hidden\n */\n set containsSplitter(value) {\n const element = this.element.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-pane-flex');\n }\n else {\n this.renderer.removeClass(element, 'k-pane-flex');\n }\n }\n get isHidden() {\n return this.collapsed;\n }\n get staticPaneClass() {\n if (this.forceExpand) {\n return false;\n }\n return !this.resizable && !this.collapsible || this.fixedSize;\n }\n get scrollablePaneClass() {\n return this.scrollable;\n }\n get fixedSize() {\n return this.size && this.size.length > 0;\n }\n ngAfterViewChecked() {\n const element = this.element.nativeElement;\n if (this.isHidden) {\n this.renderer.addClass(element, 'k-state-hidden');\n this.renderer.addClass(element, 'hidden');\n }\n else {\n this.renderer.removeClass(element, 'k-state-hidden');\n this.renderer.removeClass(element, 'hidden');\n }\n }\n /**\n * @hidden\n */\n get computedSize() {\n if (this.orientation === 'vertical') {\n return this.element.nativeElement.offsetHeight;\n }\n else {\n return this.element.nativeElement.offsetWidth;\n }\n }\n /**\n * @hidden\n */\n toggleOverlay(show) {\n this.overlayContent = show;\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n detectChanges() {\n this.cdr.detectChanges();\n }\n setOrderStyles() {\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, '-ms-flex-order', this.order);\n this.renderer.setStyle(element, 'order', this.order);\n }\n};\nSplitterPaneComponent.ɵfac = function SplitterPaneComponent_Factory(t) { return new (t || SplitterPaneComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSplitterPaneComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SplitterPaneComponent, selectors: [[\"kendo-splitter-pane\"]], hostVars: 6, hostBindings: function SplitterPaneComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-pane\", ctx.hostClass)(\"k-pane-static\", ctx.staticPaneClass)(\"k-scrollable\", ctx.scrollablePaneClass);\n } }, inputs: { resizable: \"resizable\", collapsible: \"collapsible\", scrollable: \"scrollable\", collapsed: \"collapsed\", orientation: \"orientation\", overlayContent: \"overlayContent\", order: \"order\", size: \"size\", containsSplitter: \"containsSplitter\", min: \"min\", max: \"max\" }, outputs: { sizeChange: \"sizeChange\", collapsedChange: \"collapsedChange\" }, exportAs: [\"kendoSplitterPane\"], ngContentSelectors: _c7, decls: 2, vars: 2, consts: [[4, \"ngIf\"], [\"class\", \"k-splitter-overlay k-overlay\", 4, \"ngIf\"], [1, \"k-splitter-overlay\", \"k-overlay\"]], template: function SplitterPaneComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, SplitterPaneComponent_ng_container_0_Template, 2, 0, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(1, SplitterPaneComponent_div_1_Template, 1, 0, \"div\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.collapsed);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.overlayContent);\n } }, directives: [ɵngcc1.NgIf], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], SplitterPaneComponent.prototype, \"order\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], SplitterPaneComponent.prototype, \"size\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitterPaneComponent.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitterPaneComponent.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SplitterPaneComponent.prototype, \"resizable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SplitterPaneComponent.prototype, \"collapsible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SplitterPaneComponent.prototype, \"scrollable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SplitterPaneComponent.prototype, \"collapsed\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitterPaneComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], SplitterPaneComponent.prototype, \"containsSplitter\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], SplitterPaneComponent.prototype, \"overlayContent\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SplitterPaneComponent.prototype, \"sizeChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SplitterPaneComponent.prototype, \"collapsedChange\", void 0);\n__decorate([\n HostBinding('class.k-pane'),\n __metadata(\"design:type\", Boolean)\n], SplitterPaneComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-pane-static'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SplitterPaneComponent.prototype, \"staticPaneClass\", null);\n__decorate([\n HostBinding('class.k-scrollable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SplitterPaneComponent.prototype, \"scrollablePaneClass\", null);\nSplitterPaneComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ChangeDetectorRef])\n], SplitterPaneComponent);\n\nconst SIZING_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/layout/splitter/panes/#toc-size';\n/**\n * @hidden\n */\nlet SplitterService = class SplitterService {\n constructor(zone) {\n this.zone = zone;\n this.layoutChange = new EventEmitter();\n this.containerSize = () => { };\n }\n tryToggle(paneIndex) {\n const pane = this.pane(paneIndex);\n if (pane.collapsible) {\n pane.collapsed = !pane.collapsed;\n pane.collapsedChange.emit(pane.collapsed);\n this.emit(this.layoutChange, {});\n if (pane.collapsed) {\n pane.detectChanges();\n }\n }\n const notCollapsed = this.panes.filter(p => !p.collapsed);\n const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);\n notCollapsed[notCollapsed.length - 1].forceExpand = allHaveFixedSize ? true : false;\n return pane.collapsible;\n }\n toggleContentOverlay(index, show) {\n this.pane(index).toggleOverlay(show);\n this.pane(index + 1).toggleOverlay(show);\n }\n dragState(splitbarIndex) {\n let prev = this.pane(splitbarIndex);\n let next = this.pane(splitbarIndex + 1);\n const total = prev.computedSize + next.computedSize;\n const px = s => this.toPixels(s);\n return {\n prev: {\n index: splitbarIndex,\n initialSize: prev.computedSize,\n min: px(prev.min) || total - px(next.max) || 0,\n max: px(prev.max) || total - px(next.min) || total\n },\n next: {\n index: splitbarIndex + 1,\n initialSize: next.computedSize,\n min: px(next.min) || total - px(prev.max) || 0,\n max: px(next.max) || total - px(prev.min) || total\n }\n };\n }\n setSize(state$$1, delta) {\n const clamp = (min, max, v) => Math.min(max, Math.max(min, v));\n const resize = (paneState, change) => {\n const pane = this.pane(paneState.index);\n const splitterSize = this.containerSize();\n const newSize = clamp(paneState.min, paneState.max, paneState.initialSize + change);\n let size = \"\";\n if (this.isPercent(pane.size)) {\n size = (100 * newSize / splitterSize) + \"%\";\n }\n else {\n size = newSize + \"px\";\n }\n pane.size = size;\n pane.isResized = true;\n this.emit(pane.sizeChange, size);\n };\n const prev = this.pane(state$$1.prev.index);\n const next = this.pane(state$$1.next.index);\n // determine which pane to resize\n if (prev.fixedSize && next.fixedSize) {\n // resizing both panes\n resize(state$$1.prev, delta);\n resize(state$$1.next, -delta);\n }\n else if (next.collapsible || next.fixedSize) {\n // resizing next\n resize(state$$1.next, -delta);\n }\n else {\n // resizing prev\n resize(state$$1.prev, delta);\n }\n this.emit(this.layoutChange, {});\n }\n isDraggable(splitBarIndex) {\n const prev = this.pane(splitBarIndex);\n const next = this.pane(splitBarIndex + 1);\n const betweenResizablePanes = prev.resizable && next.resizable;\n const nearCollapsedPane = prev.collapsed || next.collapsed;\n return betweenResizablePanes && !nearCollapsedPane;\n }\n isStatic(splitBarIndex) {\n const prev = this.pane(splitBarIndex);\n const next = this.pane(splitBarIndex + 1);\n const betweenResizablePanes = prev.resizable && next.resizable;\n const nearCollapsiblePane = prev.collapsible || next.collapsible;\n return !betweenResizablePanes && !nearCollapsiblePane;\n }\n pane(index) {\n if (!this.panes) {\n throw new Error(\"Panes not initialized\");\n }\n if (index < 0 || index >= this.panes.length) {\n throw new Error(\"Index out of range\");\n }\n return this.panes[index];\n }\n configure({ panes, orientation, containerSize }) {\n this.panes = panes;\n this.panes.forEach((pane, index) => {\n pane.order = index * 2;\n pane.orientation = orientation;\n });\n if (isDevMode()) {\n const allPanesWithSize = panes.length && !panes.some(pane => !pane.fixedSize);\n const hasResizedPane = panes.length && panes.some(pane => pane.isResized);\n if (allPanesWithSize && !hasResizedPane) {\n throw new Error(`\n The Splitter should have at least one pane without a set size.\n See ${SIZING_DOC_LINK} for more information.\n `);\n }\n }\n this.containerSize = containerSize;\n }\n isPercent(size) {\n return /%$/.test(size);\n }\n toPixels(size) {\n let result = parseFloat(size);\n if (this.isPercent(size)) {\n result = (this.containerSize() * result / 100);\n }\n return result;\n }\n emit(emitter, args) {\n if (emitter.observers.length) {\n this.zone.run(() => emitter.emit(args));\n }\n }\n};\nSplitterService.ɵfac = function SplitterService_Factory(t) { return new (t || SplitterService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nSplitterService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SplitterService, factory: function (t) { return SplitterService.ɵfac(t); } });\nSplitterService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], SplitterService);\n\n/**\n * Represents the [Kendo UI Splitter component for Angular]({% slug overview_splitter %}).\n *\n * ```ts-preview\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n *\n * \n *

    Inner splitter / left pane

    \n *

    Resizable and collapsible.

    \n *
    \n *\n * \n *

    Inner splitter / center pane

    \n *

    Resizable only.

    \n *
    \n *\n * \n *

    Inner splitter / right pane

    \n *

    Resizable and collapsible.

    \n *
    \n *\n *
    \n * `,\n * styles: [ `\n * h3 { font-size: 1.2em; }\n * h3, p { margin: 10px; padding: 0; }\n * ` ]\n * })\n * class AppComponent {}\n * ```\n */\nlet SplitterComponent = class SplitterComponent {\n constructor(element, splitterService, localization, enclosingPane) {\n this.element = element;\n this.splitterService = splitterService;\n this.localization = localization;\n this.enclosingPane = enclosingPane;\n /**\n * Specifies the orientation of the panes within the Splitter.\n * Panes in a horizontal Splitter are placed horizontally.\n * Panes in a vertical Splitter are placed vertically.\n */\n this.orientation = 'horizontal';\n this.ariaRole = 'splitter';\n validatePackage(packageMetadata);\n if (enclosingPane) {\n enclosingPane.containsSplitter = true;\n }\n // the handler only runs in NgZone if there are bound handlers\n // this line merges both streams\n this.layoutChange = this.splitterService.layoutChange;\n this.configure = this.configure.bind(this);\n }\n get hostClasses() {\n return true;\n }\n get horizontalHostClasses() {\n return this.orientation === 'horizontal';\n }\n get verticalHostClasses() {\n return this.orientation === 'vertical';\n }\n get dir() {\n return this.direction;\n }\n ngAfterContentInit() {\n this.reconfigure();\n }\n ngOnChanges(changes) {\n if (changes.orientation && !changes.orientation.isFirstChange()) {\n this.reconfigure();\n }\n }\n ngOnDestroy() {\n if (this.enclosingPane) {\n this.enclosingPane.containsSplitter = false;\n }\n this.unsubscribeChanges();\n }\n reconfigure() {\n this.unsubscribeChanges();\n this.configure();\n this.paneChangesSubscription = this.panes.changes.subscribe(this.configure);\n }\n unsubscribeChanges() {\n if (this.paneChangesSubscription) {\n this.paneChangesSubscription.unsubscribe();\n this.paneChangesSubscription = null;\n }\n }\n configure() {\n this.splitterService.configure({\n panes: this.panes.toArray(),\n orientation: this.orientation,\n containerSize: () => {\n if (this.orientation === 'vertical') {\n return this.element.nativeElement.clientHeight;\n }\n else {\n return this.element.nativeElement.clientWidth;\n }\n }\n });\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n};\nSplitterComponent.ɵfac = function SplitterComponent_Factory(t) { return new (t || SplitterComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(SplitterService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(SplitterPaneComponent, 9)); };\nSplitterComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SplitterComponent, selectors: [[\"kendo-splitter\"]], contentQueries: function SplitterComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, SplitterPaneComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panes = _t);\n } }, hostVars: 12, hostBindings: function SplitterComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.ariaRole)(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-splitter\", ctx.hostClasses)(\"k-splitter-flex\", ctx.hostClasses)(\"k-splitter-horizontal\", ctx.horizontalHostClasses)(\"k-splitter-vertical\", ctx.verticalHostClasses);\n } }, inputs: { orientation: \"orientation\" }, outputs: { layoutChange: \"layoutChange\" }, exportAs: [\"kendoSplitter\"], features: [ɵngcc0.ɵɵProvidersFeature([\n SplitterService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.spliter'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c9, decls: 2, vars: 1, consts: [[4, \"ngFor\", \"ngForOf\"], [\"kendoDraggable\", \"\", 3, \"index\", \"orientation\", 4, \"ngIf\"], [\"kendoDraggable\", \"\", 3, \"index\", \"orientation\"]], template: function SplitterComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c8);\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, SplitterComponent_ng_container_1_Template, 2, 1, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.panes);\n } }, directives: function () { return [ɵngcc1.NgForOf, ɵngcc1.NgIf, SplitterBarComponent, ɵngcc3.DraggableDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], SplitterComponent.prototype, \"orientation\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SplitterComponent.prototype, \"layoutChange\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-splitter'),\n HostBinding('class.k-splitter-flex'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SplitterComponent.prototype, \"hostClasses\", null);\n__decorate([\n HostBinding('class.k-splitter-horizontal'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SplitterComponent.prototype, \"horizontalHostClasses\", null);\n__decorate([\n HostBinding('class.k-splitter-vertical'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SplitterComponent.prototype, \"verticalHostClasses\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], SplitterComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], SplitterComponent.prototype, \"ariaRole\", void 0);\n__decorate([\n ContentChildren(SplitterPaneComponent),\n __metadata(\"design:type\", QueryList)\n], SplitterComponent.prototype, \"panes\", void 0);\nSplitterComponent = __decorate([ __param(3, Optional()), __param(3, Host()), __param(3, Inject(SplitterPaneComponent)),\n __metadata(\"design:paramtypes\", [ElementRef,\n SplitterService,\n LocalizationService,\n SplitterPaneComponent])\n], SplitterComponent);\n\n/**\n * Represents the content template of the Kendo UI TabStrip.\n * To define the template, nest a `` tag with the `kendoTabContent` inside the component tag.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *

    Content 1

    \n *
    \n *
    \n *\n * \n * \n *

    Content 2

    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nlet TabContentDirective = class TabContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nTabContentDirective.ɵfac = function TabContentDirective_Factory(t) { return new (t || TabContentDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nTabContentDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TabContentDirective, selectors: [[\"\", \"kendoTabContent\", \"\"]] });\nTabContentDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], TabContentDirective);\n\n/**\n * Represents the title template of the Kendo UI TabStrip.\n * To define the template, nest a `` tag with the `kendoTabTitle` directive inside the component tag.\n *\n * > The `kendoTabTitle` directive overrides the TabStripTab [title]({% slug api_layout_tabstriptabcomponent %}#toc-title) option.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *

    Custom Title

    \n *
    \n * \n *

    Content 1

    \n *
    \n *
    \n *\n * \n * \n *

    Content 2

    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nlet TabTitleDirective = class TabTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nTabTitleDirective.ɵfac = function TabTitleDirective_Factory(t) { return new (t || TabTitleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nTabTitleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TabTitleDirective, selectors: [[\"\", \"kendoTabTitle\", \"\"]] });\nTabTitleDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], TabTitleDirective);\n\n/**\n * Represents the tab component of the TabStrip.\n */\nlet TabStripTabComponent = class TabStripTabComponent {\n /**\n * Represents the tab component of the TabStrip.\n */\n constructor() {\n /**\n * Used to disable a tab ([see example]({% slug tabs_tabstrip %}#toc-disabled-tabs)).\n *\n * Defaults to `false`.\n */\n this.disabled = false;\n this._tabContent = new QueryList();\n /**\n * @hidden\n *\n * Currently only disabled tabs can be focused. Otherwise they will be\n * immediately selected\n */\n this.focused = false;\n }\n get tabContent() {\n return this._tabContent.first;\n }\n get tabTitle() {\n return this._tabTitleDirective.first;\n }\n};\nTabStripTabComponent.ɵfac = function TabStripTabComponent_Factory(t) { return new (t || TabStripTabComponent)(); };\nTabStripTabComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TabStripTabComponent, selectors: [[\"kendo-tabstrip-tab\"]], contentQueries: function TabStripTabComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TabContentDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TabTitleDirective, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._tabContent = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._tabTitleDirective = _t);\n } }, inputs: { disabled: \"disabled\", title: \"title\", cssClass: \"cssClass\", cssStyle: \"cssStyle\", selected: \"selected\", closable: \"closable\", closeIcon: \"closeIcon\" }, exportAs: [\"kendoTabStripTab\"], decls: 0, vars: 0, template: function TabStripTabComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TabStripTabComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TabStripTabComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TabStripTabComponent.prototype, \"cssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TabStripTabComponent.prototype, \"cssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TabStripTabComponent.prototype, \"selected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TabStripTabComponent.prototype, \"closable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TabStripTabComponent.prototype, \"closeIcon\", void 0);\n__decorate([\n ContentChildren(TabContentDirective),\n __metadata(\"design:type\", QueryList)\n], TabStripTabComponent.prototype, \"_tabContent\", void 0);\n__decorate([\n ContentChildren(TabTitleDirective),\n __metadata(\"design:type\", QueryList)\n], TabStripTabComponent.prototype, \"_tabTitleDirective\", void 0);\n\n/**\n * Arguments for the `tabClose` event of the TabStrip.\n * The `tabClose` event fires when the close button of the tab is clicked.\n *\n */\nclass TabCloseEvent {\n /**\n * Constructs the event arguments for the `tabClose` event.\n * @param index - The index of the closed tab.\n * @param tab - The closed tab instance\n */\n constructor(index, tab) {\n this.index = index;\n this.tab = tab;\n }\n}\n\n/**\n * Arguments for the `select` event of the TabStrip.\n * The `select` event fires when a tab is selected (clicked).\n */\nclass SelectEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `select` event.\n * @param index - The index of the selected tab.\n * @param title - The title of the selected tab.\n */\n constructor(index, title) {\n super();\n this.index = index;\n this.title = title;\n }\n}\n\n/**\n * @hidden\n *\n * Checks if the current target is a TabStrip tab element\n */\nconst isTabElement = (target) => {\n const targetId = target.getAttribute('id');\n if (isPresent(targetId) || targetId.indexOf('k-tabstrip-tab-') >= 0) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n *\n * Checks if the current tab is closable. Depends on the value of the TabStrip closable property.\n */\nconst isTabClosable = (tab, tabStripClosable) => {\n if (tab.closable !== undefined) {\n return tab.closable;\n }\n return tabStripClosable;\n};\n/**\n * @hidden\n *\n * Checks if the TabStrip scroll buttons will be rendered. Depends on the value of the TabStrip scrollable settings.\n */\nconst tabStripHasScrollButtons = (scrollableSettings) => {\n return scrollableSettings.enabled && scrollableSettings.scrollButtons !== 'hidden';\n};\n/**\n * @hidden\n *\n * Checks if the TabStrip mouse scroll will be enabled. Depends on the value of the TabStrip scrollable settings.\n */\nconst mouseScrollEnabled = (scrollableSettings) => {\n return scrollableSettings.enabled && scrollableSettings.mouseScroll;\n};\n/**\n * @hidden\n *\n * Retrieves the current active tab element and its index.\n * This could either be the currently selected tab or the currently focused tab.\n */\nconst getActiveTab = (tabs) => {\n let focusedTab;\n let selectedTab;\n let focusedIndex = -1;\n let selectedIndex = -1;\n tabs.forEach((tab, index) => {\n if (tab.selected) {\n selectedTab = tab;\n selectedIndex = index;\n }\n else if (tab.focused) {\n focusedTab = tab;\n focusedIndex = index;\n }\n });\n return focusedIndex >= 0 ?\n { tab: focusedTab, index: focusedIndex } :\n { tab: selectedTab, index: selectedIndex };\n};\n/**\n * @hidden\n */\nconst getTabByIndex = (tabs, index) => {\n const filtered = tabs.filter((_tab, i) => i === index);\n if (filtered.length > 0) {\n return filtered[0];\n }\n return null;\n};\n/**\n * @hidden\n */\nconst getTabHeaderByIndex = (tabHeaderContainers, index) => {\n const filtered = tabHeaderContainers.filter((_tabHeader, i) => i === index);\n if (filtered.length > 0) {\n return filtered[0];\n }\n return null;\n};\n/**\n * @hidden\n */\nconst resetTabFocus = (tabs) => {\n tabs.forEach((tab) => {\n tab.focused = false;\n });\n};\n/**\n * @hidden\n */\nconst resetTabSelection = (tabs) => {\n tabs.forEach((tab) => {\n tab.selected = false;\n });\n};\n/**\n * @hidden\n */\nconst isTablistHorizontal = (tabPosition) => tabPosition === 'top' || tabPosition === 'bottom';\n\n/**\n * @hidden\n */\nlet TabStripService = class TabStripService {\n constructor(localization, ngZone) {\n this.localization = localization;\n this.ngZone = ngZone;\n }\n onKeyDown(event) {\n if (!isTabElement(event.target)) {\n return;\n }\n const key = event.keyCode;\n if (this.shouldHandleKey(key)) {\n event.preventDefault();\n }\n else {\n return;\n }\n if (isNavigationKey(key) || isArrowKey(key)) {\n this.onNavigate(key);\n }\n else if (key === Keys.Delete) {\n this.onDelete();\n }\n }\n onTabSelect(tab, index) {\n const selectArgs = new SelectEvent(index, tab.title);\n this.owner.tabSelect.emit(selectArgs);\n if (!selectArgs.isDefaultPrevented()) {\n if (tab.selected) {\n this.focusTabHeader(index);\n return;\n }\n this.selectTab(tab, index);\n }\n }\n selectTab(tab, index) {\n resetTabSelection(this.owner.tabs);\n this.focusTabHeader(index);\n tab.selected = true;\n if (this.owner.isScrollable) {\n this.owner.scrollToSelectedTab();\n }\n }\n onTabClose(tab, index) {\n const closeArgs = new TabCloseEvent(index, tab);\n this.owner.tabClose.emit(closeArgs);\n }\n onNavigate(keyCode) {\n let { tab: activeTab, index: activeIndex } = getActiveTab(this.owner.tabs);\n if (!NgZone.isInAngularZone()) {\n this.ngZone.run(() => {\n if (activeIndex < 0) {\n this.owner.selectTab(this.firstNavigatableIndex());\n return;\n }\n activeTab.focused = false;\n const nextIndex = this.computeNextIndex(activeIndex, keyCode);\n this.activateTab(nextIndex);\n });\n }\n }\n onDelete() {\n let { tab: activeTab, index: activeTabIndex } = getActiveTab(this.owner.tabs);\n if (isTabClosable(activeTab, this.owner.closable) && !activeTab.disabled) {\n this.ngZone.run(() => {\n this.onTabClose(activeTab, activeTabIndex);\n });\n }\n }\n activateTab(index) {\n const tab = getTabByIndex(this.owner.tabs, index);\n if (tab.disabled) {\n this.focusTabHeader(index);\n tab.focused = true;\n }\n else {\n this.onTabSelect(tab, index);\n }\n }\n focusTabHeader(index) {\n const tabHeader = getTabHeaderByIndex(this.owner.tabHeaderContainers, index);\n tabHeader.nativeElement.focus();\n }\n shouldHandleKey(keyCode) {\n if (isNavigationKey(keyCode)) {\n return true;\n }\n if (isTablistHorizontal(this.owner.tabPosition) && isHorizontalArrowKey(keyCode)) {\n return true;\n }\n if (!isTablistHorizontal(this.owner.tabPosition) && isVerticalArrowKey(keyCode)) {\n return true;\n }\n if (keyCode === Keys.Delete) {\n return true;\n }\n return false;\n }\n computeNextIndex(activeIndex, keyCode) {\n switch (keyCode) {\n case this.invertKeys(Keys.ArrowLeft, Keys.ArrowRight):\n case this.invertKeys(Keys.ArrowUp, Keys.ArrowDown):\n return this.prevNavigatableIndex(activeIndex);\n case this.invertKeys(Keys.ArrowRight, Keys.ArrowLeft):\n case this.invertKeys(Keys.ArrowDown, Keys.ArrowUp):\n return this.nextNavigatableIndex(activeIndex);\n case Keys.Home:\n return this.firstNavigatableIndex();\n case Keys.End:\n return this.lastNavigatableIndex();\n default:\n return;\n }\n }\n invertKeys(original, inverted) {\n return this.localization.rtl ? inverted : original;\n }\n firstNavigatableIndex() {\n return 0;\n }\n lastNavigatableIndex() {\n return this.owner.tabs.length - 1;\n }\n prevNavigatableIndex(selectedIndex) {\n if (selectedIndex - 1 < 0) {\n return this.lastNavigatableIndex();\n }\n return selectedIndex - 1;\n }\n nextNavigatableIndex(selectedIndex) {\n if (selectedIndex + 1 >= this.owner.tabs.length) {\n return this.firstNavigatableIndex();\n }\n return selectedIndex + 1;\n }\n};\nTabStripService.ɵfac = function TabStripService_Factory(t) { return new (t || TabStripService)(ɵngcc0.ɵɵinject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nTabStripService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TabStripService, factory: function (t) { return TabStripService.ɵfac(t); } });\nTabStripService = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n NgZone])\n], TabStripService);\n\n/**\n * @hidden\n */\nconst MOUSE_SCROLL_SPEED = 10;\n/**\n * @hidden\n */\nconst BUTTON_SCROLL_SPEED = 100;\n/**\n * @hidden\n */\nconst HIDDEN_CLASS = 'k-hidden';\n/**\n * @hidden\n */\nconst DIRECTION_CLASSES = {\n left: 'k-i-arrow-60-left',\n right: 'k-i-arrow-60-right',\n up: 'k-i-arrow-60-up',\n down: 'k-i-arrow-60-down'\n};\n/**\n * @hidden\n */\nconst DEFAULT_SCROLL_BEHAVIOR = 'smooth';\n\n/**\n * @hidden\n */\nclass PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n this.prevented = false;\n Object.assign(this, args);\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 `tabScroll` event of the TabStrip.\n * The `tabScroll` event fires when the tabs are being scrolled.\n *\n */\nclass TabScrollEvent extends PreventableEvent$1 {\n}\n\n/**\n * @hidden\n */\nlet ScrollService = class ScrollService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.position = 0;\n this.scrollButtonActiveStateChange = new Subject();\n }\n get tablistElement() {\n return this.owner.tablist.nativeElement;\n }\n get scrollButtonIconClass() {\n const tabStrip = this.owner;\n const defaultPrevIcon = isTablistHorizontal(tabStrip.tabPosition) ? DIRECTION_CLASSES.left : DIRECTION_CLASSES.up;\n const defaultNextIcon = isTablistHorizontal(tabStrip.tabPosition) ? DIRECTION_CLASSES.right : DIRECTION_CLASSES.down;\n if (typeof tabStrip.scrollable === 'object') {\n const prevIcon = typeof tabStrip.scrollable.prevButtonIcon === 'undefined' ? defaultPrevIcon : tabStrip.scrollable.prevButtonIcon;\n const nextIcon = typeof tabStrip.scrollable.nextButtonIcon === 'undefined' ? defaultNextIcon : tabStrip.scrollable.nextButtonIcon;\n return { prevScrollButton: prevIcon, nextScrollButton: nextIcon };\n }\n return { prevScrollButton: defaultPrevIcon, nextScrollButton: defaultNextIcon };\n }\n get tabstripSize() {\n const hostElement = this.owner.wrapper.nativeElement;\n const wrapperWidth = parseFloat(getComputedStyle(hostElement).width);\n const wrapperHeight = parseFloat(getComputedStyle(hostElement).height);\n return isTablistHorizontal(this.owner.tabPosition) ? wrapperWidth : wrapperHeight;\n }\n get tablistOverflowSize() {\n if (!isDocumentAvailable()) {\n return 0;\n }\n const isHorizontal = isTablistHorizontal(this.owner.tabPosition);\n const overflowSize = Math.floor(this.tablistElement[isHorizontal ? 'scrollWidth' : 'scrollHeight']\n - this.tablistElement.getBoundingClientRect()[isHorizontal ? 'width' : 'height']);\n return overflowSize < 0 ? 0 : overflowSize;\n }\n get tabsOverflow() {\n return this.tablistOverflowSize > 0;\n }\n get scrollButtonsSize() {\n if (!this.owner.hasScrollButtons) {\n return 0;\n }\n const prevRect = this.owner.prevScrollButton.hostBoundingClientRect;\n const prevSize = isTablistHorizontal(this.owner.tabPosition) ? prevRect.width : prevRect.height;\n const nextRect = this.owner.nextScrollButton.hostBoundingClientRect;\n const nextSize = isTablistHorizontal(this.owner.tabPosition) ? nextRect.width : nextRect.height;\n return prevSize + nextSize;\n }\n toggleScrollButtonsState() {\n const tabStrip = this.owner;\n if (!tabStrip.hasScrollButtons) {\n return;\n }\n const currentPrevButtonActive = !tabStrip.prevScrollButton.disabled;\n const currentNextButtonActive = !tabStrip.nextScrollButton.disabled;\n const calculatedPrevButtonActive = this.position > 0 && this.tablistOverflowSize > 0;\n const calculatedNextButtonActive = this.position < this.tablistOverflowSize + this.scrollButtonsSize && this.tablistOverflowSize > 0;\n if (calculatedPrevButtonActive !== currentPrevButtonActive) {\n this.ngZone.run(() => this.toggleButtonActiveState('prev', calculatedPrevButtonActive));\n }\n if (calculatedNextButtonActive !== currentNextButtonActive) {\n this.ngZone.run(() => this.toggleButtonActiveState('next', calculatedNextButtonActive));\n }\n }\n scrollToSelectedTab() {\n if (!this.tabsOverflow) {\n return;\n }\n let { index: activeIndex } = getActiveTab(this.owner.tabs);\n if (activeIndex === -1) {\n return;\n }\n this.position += this.getScrollOffset(activeIndex);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n }\n else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n const tabStrip = this.owner;\n if (!tabStrip.hasScrollButtons) {\n return;\n }\n const isFirstTabActive = activeIndex === 0;\n const isLastTabActive = activeIndex === this.owner.tabs.length - 1;\n if (isFirstTabActive && !tabStrip.prevScrollButton.disabled) {\n this.ngZone.run(() => this.toggleButtonActiveState('prev', false));\n }\n if (isLastTabActive && !tabStrip.nextScrollButton.disabled) {\n this.ngZone.run(() => this.toggleButtonActiveState('next', false));\n }\n }\n getScrollOffset(activeIndex) {\n if (!isDocumentAvailable()) {\n return 0;\n }\n const isHorizontal = isTablistHorizontal(this.owner.tabPosition);\n this.tablistElement[`scroll${isHorizontal ? 'Left' : 'Top'}`] = this.position;\n const activeTabRect = this.tablistElement.children[activeIndex].getBoundingClientRect();\n const tablistRect = this.tablistElement.getBoundingClientRect();\n const end = isHorizontal ? 'right' : 'bottom';\n const start = isHorizontal ? 'left' : 'top';\n const activeTabStart = activeTabRect[start];\n const activeTabEnd = activeTabRect[end];\n const tablistStart = tablistRect[start];\n const tablistEnd = tablistRect[end];\n const tabEndIsInVisibleRange = activeTabEnd <= tablistEnd;\n const tabStartIsInVisibleRange = activeTabStart >= tablistStart;\n const isWholeTabVisible = tabEndIsInVisibleRange && tabStartIsInVisibleRange;\n if (isWholeTabVisible) {\n return 0;\n }\n if (!tabEndIsInVisibleRange) {\n return activeTabEnd - tablistEnd;\n }\n if (!tabStartIsInVisibleRange) {\n return activeTabStart - tablistStart;\n }\n }\n onMouseScroll(event) {\n event.preventDefault();\n if (!mouseScrollEnabled(this.owner.scrollable)) {\n return;\n }\n const direction = event.deltaY < 0 ? 'prev' : 'next';\n this.calculateListPosition(direction, this.owner.scrollable.mouseScrollSpeed);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n }\n else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n }\n scrollTabs(direction) {\n this.calculateListPosition(direction, this.owner.scrollable.buttonScrollSpeed);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollTo({ left: this.position, behavior: DEFAULT_SCROLL_BEHAVIOR });\n }\n else {\n this.tablistElement.scrollTo({ top: this.position, behavior: DEFAULT_SCROLL_BEHAVIOR });\n }\n this.toggleScrollButtonsState();\n }\n calculateListPosition(direction, scrollSpeed) {\n const adjustedMaxScroll = this.tablistOverflowSize + this.scrollButtonsSize;\n if (direction === 'prev' && this.position > 0) {\n this.position = this.position - scrollSpeed <= 0 ? 0 : this.position - scrollSpeed;\n }\n else if (direction === 'next' && this.position < adjustedMaxScroll) {\n if (this.position + scrollSpeed > adjustedMaxScroll) {\n this.position = adjustedMaxScroll;\n return;\n }\n this.position += scrollSpeed;\n }\n }\n emitScrollEvent(ev) {\n const scrollEvent = new TabScrollEvent({\n originalEvent: ev\n });\n if (hasObservers(this.owner.tabScroll)) {\n this.owner.tabScroll.emit(scrollEvent);\n }\n return scrollEvent;\n }\n restoreScrollPosition() {\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollTo({ left: this.position });\n }\n else {\n this.tablistElement.scrollTo({ top: this.position });\n }\n this.toggleScrollButtonsState();\n }\n toggleButtonActiveState(buttonType, active) {\n this.scrollButtonActiveStateChange.next({ buttonType, active });\n }\n};\nScrollService.ɵfac = function ScrollService_Factory(t) { return new (t || ScrollService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nScrollService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ScrollService, factory: function (t) { return ScrollService.ɵfac(t); } });\nScrollService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], ScrollService);\n\n/**\n * @hidden\n */\nconst normalizeSettings = ({ enabled = true, scrollButtons = 'auto', mouseScroll = true, buttonScrollSpeed = BUTTON_SCROLL_SPEED, mouseScrollSpeed = MOUSE_SCROLL_SPEED, prevButtonIcon, nextButtonIcon }) => ({\n enabled,\n scrollButtons,\n mouseScroll,\n buttonScrollSpeed,\n mouseScrollSpeed,\n prevButtonIcon,\n nextButtonIcon\n});\n/**\n * @hidden\n */\nconst normalizeScrollableSettings = (settings) => normalizeSettings(settings === false ? { enabled: false } : settings);\n\n/**\n * @hidden\n */\nlet TabStripScrollableButtonComponent = class TabStripScrollableButtonComponent {\n constructor(host, scrollService, renderer, ngZone) {\n this.host = host;\n this.scrollService = scrollService;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.btnClasses = true;\n this.prev = false;\n this._disabled = false;\n this.subs = new Subscription();\n this.clickHandler = (scrollEvent) => {\n const tabStripScrollEvent = this.scrollService.emitScrollEvent(scrollEvent);\n const isTabStripScrollEventPrevented = tabStripScrollEvent.isDefaultPrevented();\n if (isTabStripScrollEventPrevented) {\n return;\n }\n const buttonType = this.prev ? 'prev' : 'next';\n this.scrollService.scrollTabs(buttonType);\n };\n this.subs.add(this.scrollService.scrollButtonActiveStateChange.subscribe((activeButtonSettings) => {\n const applyActiveState = (this.prev && activeButtonSettings.buttonType === 'prev') ||\n (!this.prev && activeButtonSettings.buttonType === 'next');\n if (applyActiveState) {\n this.disabled = !activeButtonSettings.active;\n }\n }));\n }\n get prevClass() {\n return this.prev;\n }\n get nextClass() {\n return !this.prev;\n }\n get disabled() {\n return this._disabled;\n }\n get hostBoundingClientRect() {\n return this.host.nativeElement.getBoundingClientRect();\n }\n get iconClass() {\n return this.scrollService.scrollButtonIconClass[this.prev ? 'prevScrollButton' : 'nextScrollButton'];\n }\n set disabled(value) {\n this._disabled = value;\n }\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(this.host.nativeElement, 'click', this.clickHandler));\n });\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n toggle(show) {\n this.renderer[show ? 'removeClass' : 'addClass'](this.host.nativeElement, HIDDEN_CLASS);\n }\n};\nTabStripScrollableButtonComponent.ɵfac = function TabStripScrollableButtonComponent_Factory(t) { return new (t || TabStripScrollableButtonComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ScrollService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nTabStripScrollableButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TabStripScrollableButtonComponent, selectors: [[\"\", \"kendoTabStripScrollableButton\", \"\"]], hostVars: 12, hostBindings: function TabStripScrollableButtonComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-button\", ctx.btnClasses)(\"k-button-icon\", ctx.btnClasses)(\"k-flat\", ctx.btnClasses)(\"k-disabled\", ctx.disabled)(\"k-tabstrip-prev\", ctx.prevClass)(\"k-tabstrip-next\", ctx.nextClass);\n } }, inputs: { prev: \"prev\" }, attrs: _c10, decls: 1, vars: 1, consts: [[1, \"k-icon\", 3, \"ngClass\"]], template: function TabStripScrollableButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.iconClass);\n } }, directives: [ɵngcc1.NgClass], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-button'),\n HostBinding('class.k-button-icon'),\n HostBinding('class.k-flat'),\n __metadata(\"design:type\", Boolean)\n], TabStripScrollableButtonComponent.prototype, \"btnClasses\", void 0);\n__decorate([\n HostBinding('class.k-tabstrip-prev'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabStripScrollableButtonComponent.prototype, \"prevClass\", null);\n__decorate([\n HostBinding('class.k-tabstrip-next'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabStripScrollableButtonComponent.prototype, \"nextClass\", null);\n__decorate([\n HostBinding('class.k-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], TabStripScrollableButtonComponent.prototype, \"disabled\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TabStripScrollableButtonComponent.prototype, \"prev\", void 0);\nTabStripScrollableButtonComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ScrollService,\n Renderer2,\n NgZone])\n], TabStripScrollableButtonComponent);\n\n/**\n * Represents the [Kendo UI TabStrip component for Angular]({% slug overview_tabstrip %}).\n */\nlet TabStripComponent = class TabStripComponent {\n constructor(localization, renderer, wrapper, tabstripService, scrollService, ngZone) {\n this.localization = localization;\n this.renderer = renderer;\n this.wrapper = wrapper;\n this.tabstripService = tabstripService;\n this.scrollService = scrollService;\n this.ngZone = ngZone;\n /**\n * Enables the tab animation.\n *\n * @default true\n */\n this.animate = true;\n /**\n * Sets the position of the tabs. Defaults to `top`.\n *\n * @default 'top'\n */\n this.tabPosition = 'top';\n /**\n * When set to `true`, the component renders all tabs and they are persisted in the DOM.\n * By default, `keepTabContent` is `false`.\n *\n * @default false\n */\n this.keepTabContent = false;\n /**\n * When set to `true`, a close button will be rendered inside each tab.\n * By default, `closable` is `false`.\n *\n * @default false\n */\n this.closable = false;\n /**\n * Allows defining a custom CSS class, or multiple classes separated by spaces, which will be applied to the close button span element.\n * Allows the usage of custom icons.\n */\n this.closeIcon = 'k-icon k-i-x';\n /**\n * Fires each time the user selects a tab ([see example]({% slug overview_tabstrip %}#toc-basic-usage)).\n * The event data contains the index of the selected tab and its title.\n */\n this.tabSelect = new EventEmitter();\n /**\n * Fires each time the user closes a tab.\n * The event data contains the index of the closed tab and its instance.\n */\n this.tabClose = new EventEmitter();\n /**\n * Fires each time the user scrolls the TabStrip list.\n * The event is preventable.\n */\n this.tabScroll = new EventEmitter();\n this.hostClasses = true;\n /**\n * A query list of all declared tabs.\n */\n this.tabs = new QueryList();\n this._scrollableSettings = normalizeScrollableSettings(false);\n this.subscriptions = new Subscription();\n this.subscriptionsArePresent = false;\n validatePackage(packageMetadata);\n this.tabstripService.owner = this;\n this.scrollService.owner = this;\n }\n /**\n * Sets the height of the TabStrip.\n */\n set height(value) {\n this._height = value;\n this.renderer.setStyle(this.wrapper.nativeElement, 'height', value);\n }\n get height() {\n return this._height;\n }\n /**\n * Enables the scrolling of the tab list. When set to `true` and the total size of all tabs\n * is greater than the size of the TabStrip container, scroll buttons will be rendered on each end of the tab list.\n *\n * By default, `scrollable` is `false`.\n *\n * @default false\n */\n set scrollable(value) {\n this._scrollableSettings = normalizeScrollableSettings(value);\n if (this.tablist) {\n this.toggleScrollButtons(this.scrollService.tabsOverflow);\n this.attachWheelHandler(this.tablist.nativeElement);\n }\n }\n get scrollable() {\n return this._scrollableSettings;\n }\n get tabsAtTop() {\n return this.tabPosition === 'top';\n }\n get tabsAtRight() {\n return this.tabPosition === 'right';\n }\n get tabsAtBottom() {\n return this.tabPosition === 'bottom';\n }\n get tabsAtLeft() {\n return this.tabPosition === 'left';\n }\n get dir() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n get tabStripScrollable() {\n return this._scrollableSettings.enabled;\n }\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n if (this.scrollService.tabsOverflow) {\n this.toggleScrollButtons(true);\n }\n else {\n this.toggleScrollButtons(false);\n }\n setTimeout(() => {\n this.scrollToSelectedTab();\n });\n });\n this.initDomEvents();\n }\n ngOnChanges(changes) {\n const positionChange = changes.tabPosition;\n if (positionChange) {\n const tabsAtBottomChanged = positionChange.previousValue === 'bottom' || positionChange.currentValue === 'bottom';\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (tabsAtBottomChanged) {\n if (this.subscriptionsArePresent) {\n this.subscriptions.unsubscribe();\n this.subscriptions = new Subscription();\n this.subscriptionsArePresent = false;\n }\n this.initDomEvents();\n }\n this.scrollService.restoreScrollPosition();\n });\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get tabsAlignmentStyles() {\n return {\n start: 'flex-start',\n end: 'flex-end',\n center: 'center',\n justify: 'space-between'\n }[this.tabAlignment];\n }\n /**\n * @hidden\n */\n get isScrollable() {\n return this._scrollableSettings.enabled;\n }\n /**\n * @hidden\n */\n get hasScrollButtons() {\n return tabStripHasScrollButtons(this._scrollableSettings);\n }\n /**\n * @hidden\n */\n get mouseScrollEnabled() {\n return mouseScrollEnabled(this._scrollableSettings);\n }\n /**\n * @hidden\n */\n get itemsWrapperClass() {\n return isTablistHorizontal(this.tabPosition) ? 'k-hstack' : 'k-vstack';\n }\n /**\n * Allows the user to select a tab programmatically.\n * @param {number} index - The index of the tab that will be selected.\n */\n selectTab(index) {\n const tab = getTabByIndex(this.tabs, index);\n if (!tab || tab.disabled) {\n return;\n }\n this.tabstripService.selectTab(tab, index);\n this.scrollToSelectedTab();\n }\n /**\n * @hidden\n */\n onTabClick(originalEvent, tabIndex) {\n if (isFocusable(originalEvent.target)) {\n return;\n }\n const targetElement = originalEvent.target;\n const isTargetCloseButton = hasClass(targetElement, 'k-remove-tab') || hasClass(targetElement.parentElement, 'k-remove-tab');\n if (isTargetCloseButton) {\n return;\n }\n const tab = getTabByIndex(this.tabs, tabIndex);\n this.tabstripService.onTabSelect(tab, tabIndex);\n this.scrollToSelectedTab();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.scrollService.tabsOverflow) {\n this.toggleScrollButtons(true);\n }\n else {\n this.toggleScrollButtons(false);\n }\n this.ngZone.runOutsideAngular(() => {\n this.scrollService.toggleScrollButtonsState();\n });\n }\n /**\n * @hidden\n */\n scrollToSelectedTab() {\n if (this._scrollableSettings.enabled) {\n this.scrollService.scrollToSelectedTab();\n }\n }\n initDomEvents() {\n if (!this.wrapper || this.subscriptionsArePresent) {\n return;\n }\n const tablist = this.tablist.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(tablist, 'keydown', (ev) => {\n this.tabstripService.onKeyDown(ev);\n }));\n });\n this.subscriptions.add(this.renderer.listen(tablist, 'focusout', () => {\n resetTabFocus(this.tabs);\n }));\n if (this.isScrollable && this.mouseScrollEnabled) {\n this.attachWheelHandler(tablist);\n }\n this.subscriptionsArePresent = true;\n }\n toggleScrollButtons(tabsOverflow) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n const scrollButtonsSetting = this._scrollableSettings.scrollButtons;\n const scrollButtonsArePresent = this.prevScrollButton && this.nextScrollButton;\n const shouldShowButtons = scrollButtonsArePresent && tabsOverflow;\n const shouldHideButtons = scrollButtonsArePresent &&\n !tabsOverflow &&\n scrollButtonsSetting !== 'visible';\n const alwaysVisible = scrollButtonsSetting === 'visible';\n if (shouldHideButtons) {\n this.prevScrollButton.toggle(false);\n this.nextScrollButton.toggle(false);\n }\n else if (shouldShowButtons || alwaysVisible) {\n this.prevScrollButton.toggle(true);\n this.nextScrollButton.toggle(true);\n }\n if (scrollButtonsArePresent && alwaysVisible) {\n this.ngZone.runOutsideAngular(() => {\n this.scrollService.toggleScrollButtonsState();\n });\n }\n });\n }\n attachWheelHandler(tablist) {\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(tablist, 'wheel', (wheelEvent) => {\n const tabStripScrollEvent = this.scrollService.emitScrollEvent(wheelEvent);\n const isTabStripScrollEventPrevented = tabStripScrollEvent.isDefaultPrevented();\n if (isTabStripScrollEventPrevented || !this.scrollService.tabsOverflow) {\n return;\n }\n this.scrollService.onMouseScroll(wheelEvent);\n }));\n });\n }\n};\nTabStripComponent.ɵfac = function TabStripComponent_Factory(t) { return new (t || TabStripComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(TabStripService), ɵngcc0.ɵɵdirectiveInject(ScrollService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nTabStripComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TabStripComponent, selectors: [[\"kendo-tabstrip\"]], contentQueries: function TabStripComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TabStripTabComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tabs = _t);\n } }, viewQuery: function TabStripComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c11, 5);\n ɵngcc0.ɵɵviewQuery(_c12, 5);\n ɵngcc0.ɵɵviewQuery(_c13, 5);\n ɵngcc0.ɵɵviewQuery(_c14, 5, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tablist = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.prevScrollButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.nextScrollButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tabHeaderContainers = _t);\n } }, hostVars: 15, hostBindings: function TabStripComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-tabstrip\", ctx.hostClasses)(\"k-floatwrap\", ctx.hostClasses)(\"k-tabstrip-top\", ctx.tabsAtTop)(\"k-tabstrip-right\", ctx.tabsAtRight)(\"k-tabstrip-bottom\", ctx.tabsAtBottom)(\"k-tabstrip-left\", ctx.tabsAtLeft)(\"k-tabstrip-scrollable\", ctx.tabStripScrollable);\n } }, inputs: { animate: \"animate\", tabPosition: \"tabPosition\", keepTabContent: \"keepTabContent\", closable: \"closable\", closeIcon: \"closeIcon\", height: \"height\", scrollable: \"scrollable\", tabAlignment: \"tabAlignment\" }, outputs: { tabSelect: \"tabSelect\", tabClose: \"tabClose\", tabScroll: \"tabScroll\" }, exportAs: [\"kendoTabStrip\"], features: [ɵngcc0.ɵɵProvidersFeature([\n TabStripService,\n ScrollService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tabstrip'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 3, consts: function () { let i18n_15; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Close** button in the TabStrip tab.\n * @meaning kendo.tabstrip.closeTitle\n */\n const MSG_EXTERNAL_6238253944136586274$$DIST_FESM2015_INDEX_JS_16 = goog.getMsg(\"Close\");\n i18n_15 = MSG_EXTERNAL_6238253944136586274$$DIST_FESM2015_INDEX_JS_16;\n }\n else {\n i18n_15 = $localize `:kendo.tabstrip.closeTitle|The title for the **Close** button in the TabStrip tab.␟28d3600711ed2cde12f915765a15978db3ec0fd1␟6238253944136586274:Close`;\n } return [[\"kendoTabStripLocalizedMessages\", \"\", \"closeTitle\", i18n_15], [4, \"ngIf\"], [\"heading\", \"\"], [\"content\", \"\"], [3, \"resize\", 4, \"ngIf\"], [4, \"ngTemplateOutlet\"], [1, \"k-tabstrip-items-wrapper\", 3, \"ngClass\"], [\"kendoTabStripScrollableButton\", \"\", 3, \"prev\", 4, \"ngIf\"], [\"role\", \"tablist\", 1, \"k-reset\", \"k-tabstrip-items\"], [\"tablist\", \"\"], [4, \"ngFor\", \"ngForOf\"], [\"kendoTabStripScrollableButton\", \"\", 3, \"prev\"], [\"prevScrollButton\", \"\"], [\"kendoTabStripTab\", \"\", \"role\", \"tab\", 3, \"ngClass\", \"ngStyle\", \"tab\", \"index\", \"tabStripClosable\", \"tabStripCloseIcon\", \"id\", \"click\", 4, \"ngIf\"], [\"kendoTabStripTab\", \"\", \"role\", \"tab\", 3, \"ngClass\", \"ngStyle\", \"tab\", \"index\", \"tabStripClosable\", \"tabStripCloseIcon\", \"id\", \"click\"], [\"tabHeaderContainer\", \"\"], [\"nextScrollButton\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"tabpanel\", 3, \"ngClass\", \"tabIndex\", \"id\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 3, \"ngClass\", \"tabIndex\", \"id\"], [3, \"ngTemplateOutlet\"], [3, \"resize\"]]; }, template: function TabStripComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵtemplate(1, TabStripComponent_ng_container_1_Template, 3, 2, \"ng-container\", 1);\n ɵngcc0.ɵɵtemplate(2, TabStripComponent_ng_container_2_Template, 3, 2, \"ng-container\", 1);\n ɵngcc0.ɵɵtemplate(3, TabStripComponent_ng_template_3_Template, 6, 6, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(5, TabStripComponent_ng_template_5_Template, 1, 1, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(7, TabStripComponent_kendo_resize_sensor_7_Template, 1, 0, \"kendo-resize-sensor\", 4);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tabsAtBottom);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.tabsAtBottom);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isScrollable);\n } }, directives: function () { return [LocalizedTabStripMessagesDirective, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgClass, TabStripScrollableButtonComponent, ɵngcc1.NgForOf, TabComponent, ɵngcc1.NgStyle, ɵngcc3.ResizeSensorComponent]; }, encapsulation: 2, data: { animation: [\n trigger('state', [\n state('active', style({ opacity: 1 })),\n transition('* => active', [\n style({ opacity: 0 }),\n animate('400ms ease-in')\n ])\n ])\n ] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], TabStripComponent.prototype, \"height\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TabStripComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TabStripComponent.prototype, \"tabAlignment\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TabStripComponent.prototype, \"tabPosition\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TabStripComponent.prototype, \"keepTabContent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TabStripComponent.prototype, \"closable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TabStripComponent.prototype, \"scrollable\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TabStripComponent.prototype, \"closeIcon\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TabStripComponent.prototype, \"tabSelect\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TabStripComponent.prototype, \"tabClose\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TabStripComponent.prototype, \"tabScroll\", void 0);\n__decorate([\n HostBinding('class.k-tabstrip'),\n HostBinding('class.k-floatwrap'),\n __metadata(\"design:type\", Boolean)\n], TabStripComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('class.k-tabstrip-top'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabStripComponent.prototype, \"tabsAtTop\", null);\n__decorate([\n HostBinding('class.k-tabstrip-right'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabStripComponent.prototype, \"tabsAtRight\", null);\n__decorate([\n HostBinding('class.k-tabstrip-bottom'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabStripComponent.prototype, \"tabsAtBottom\", null);\n__decorate([\n HostBinding('class.k-tabstrip-left'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabStripComponent.prototype, \"tabsAtLeft\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TabStripComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('class.k-tabstrip-scrollable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabStripComponent.prototype, \"tabStripScrollable\", null);\n__decorate([\n ContentChildren(TabStripTabComponent),\n __metadata(\"design:type\", QueryList)\n], TabStripComponent.prototype, \"tabs\", void 0);\n__decorate([\n ViewChild('tablist', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], TabStripComponent.prototype, \"tablist\", void 0);\n__decorate([\n ViewChildren('tabHeaderContainer', { read: ElementRef }),\n __metadata(\"design:type\", QueryList)\n], TabStripComponent.prototype, \"tabHeaderContainers\", void 0);\n__decorate([\n ViewChild('prevScrollButton', { static: false }),\n __metadata(\"design:type\", TabStripScrollableButtonComponent)\n], TabStripComponent.prototype, \"prevScrollButton\", void 0);\n__decorate([\n ViewChild('nextScrollButton', { static: false }),\n __metadata(\"design:type\", TabStripScrollableButtonComponent)\n], TabStripComponent.prototype, \"nextScrollButton\", void 0);\nTabStripComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n Renderer2,\n ElementRef,\n TabStripService,\n ScrollService,\n NgZone])\n], TabStripComponent);\n\n/**\n * @hidden\n */\nclass TabStripMessages extends ComponentMessages {\n}\nTabStripMessages.ɵfac = /*@__PURE__*/ function () { let ɵTabStripMessages_BaseFactory; return function TabStripMessages_Factory(t) { return (ɵTabStripMessages_BaseFactory || (ɵTabStripMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TabStripMessages)))(t || TabStripMessages); }; }();\nTabStripMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TabStripMessages, inputs: { closeTitle: \"closeTitle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TabStripMessages.prototype, \"closeTitle\", void 0);\n\nvar LocalizedTabStripMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedTabStripMessagesDirective = LocalizedTabStripMessagesDirective_1 = class LocalizedTabStripMessagesDirective extends TabStripMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedTabStripMessagesDirective.ɵfac = function LocalizedTabStripMessagesDirective_Factory(t) { return new (t || LocalizedTabStripMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nLocalizedTabStripMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedTabStripMessagesDirective, selectors: [[\"\", \"kendoTabStripLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => LocalizedTabStripMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedTabStripMessagesDirective = LocalizedTabStripMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedTabStripMessagesDirective);\n\nvar TabStripCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nlet TabStripCustomMessagesComponent = TabStripCustomMessagesComponent_1 = class TabStripCustomMessagesComponent extends TabStripMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nTabStripCustomMessagesComponent.ɵfac = function TabStripCustomMessagesComponent_Factory(t) { return new (t || TabStripCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nTabStripCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TabStripCustomMessagesComponent, selectors: [[\"kendo-tabstrip-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => TabStripCustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function TabStripCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nTabStripCustomMessagesComponent = TabStripCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], TabStripCustomMessagesComponent);\n\n/**\n * Represents a template that defines the content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerTemplate` directive inside the `` tag.\n * Using this template directive will override all other templates,\n * for example, `kendoDrawerHeaderTemplate` and `kendoDrawerItemTemplate`.\n */\nlet DrawerTemplateDirective = class DrawerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDrawerTemplateDirective.ɵfac = function DrawerTemplateDirective_Factory(t) { return new (t || DrawerTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDrawerTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DrawerTemplateDirective, selectors: [[\"\", \"kendoDrawerTemplate\", \"\"]] });\nDrawerTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DrawerTemplateDirective);\n\n/**\n * Represents a template that defines the item content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerItemTemplate` directive inside the `` tag.\n */\nlet DrawerItemTemplateDirective = class DrawerItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDrawerItemTemplateDirective.ɵfac = function DrawerItemTemplateDirective_Factory(t) { return new (t || DrawerItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDrawerItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DrawerItemTemplateDirective, selectors: [[\"\", \"kendoDrawerItemTemplate\", \"\"]] });\nDrawerItemTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DrawerItemTemplateDirective);\n\n/**\n * Represents a template that defines the header content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerHeaderTemplate` directive inside the `` tag.\n */\nlet DrawerHeaderTemplateDirective = class DrawerHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDrawerHeaderTemplateDirective.ɵfac = function DrawerHeaderTemplateDirective_Factory(t) { return new (t || DrawerHeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDrawerHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DrawerHeaderTemplateDirective, selectors: [[\"\", \"kendoDrawerHeaderTemplate\", \"\"]] });\nDrawerHeaderTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DrawerHeaderTemplateDirective);\n\n/**\n * Represents a template that defines the footer content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerFooterTemplate` directive inside the `` tag.\n */\nlet DrawerFooterTemplateDirective = class DrawerFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDrawerFooterTemplateDirective.ɵfac = function DrawerFooterTemplateDirective_Factory(t) { return new (t || DrawerFooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDrawerFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DrawerFooterTemplateDirective, selectors: [[\"\", \"kendoDrawerFooterTemplate\", \"\"]] });\nDrawerFooterTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DrawerFooterTemplateDirective);\n\n/**\n * @hidden\n */\nfunction miniExpandPush(duration, width, miniWidth) {\n return [\n style({ overflow: 'hidden', flexBasis: `${miniWidth}px` }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction miniCollapsePush(duration, width, miniWidth) {\n return [\n style({ overflow: 'hidden', flexBasis: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${miniWidth}px` }))\n ];\n}\n/**\n * @hidden\n *\n */\nfunction miniExpandOverlay(duration, width, miniWidth) {\n return [\n style({ width: `${miniWidth}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', width: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandPush(duration, width) {\n return [\n style({ overflow: 'hidden', flexBasis: '0px' }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapsePush(duration, width) {\n return [\n style({ flexBasis: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', flexBasis: `0px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandRTLOverlay(duration) {\n return [\n style({ transform: `translateX(100%)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(0)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandOverlay(duration, position) {\n const translateDir = position !== 'end' ? `-100%` : `100%`;\n return [\n style({ transform: `translateX(${translateDir})` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(0)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction miniCollapseOverlay(duration, width, miniWidth) {\n return [\n style({ width: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', width: `${miniWidth}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapseOverlay(duration, position) {\n const translateDir = position !== 'end' ? '-100%' : '100%';\n return [\n style({ transform: `translateX(0)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(${translateDir})` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapseRTLOverlay(duration) {\n return [\n style({ transform: `translateX(0)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(100%)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandAnimation(settings) {\n const duration = settings.animation.duration;\n const width = settings.width;\n const miniWidth = settings.miniWidth;\n const mode = settings.mode;\n const mini = settings.mini;\n const rtl = settings.rtl;\n const position = settings.position;\n if (mini && mode === 'push') {\n return miniExpandPush(duration, width, miniWidth);\n }\n if (!mini && mode === 'push') {\n return expandPush(duration, width);\n }\n if (!mini && mode === 'overlay') {\n return rtl ? expandRTLOverlay(duration) : expandOverlay(duration, position);\n }\n if (mini && mode === 'overlay') {\n return miniExpandOverlay(duration, width, miniWidth);\n }\n}\n/**\n * @hidden\n */\nfunction collapseAnimation(settings) {\n const duration = settings.animation.duration;\n const width = settings.width;\n const miniWidth = settings.miniWidth;\n const mode = settings.mode;\n const mini = settings.mini;\n const rtl = settings.rtl;\n const position = settings.position;\n if (mini && mode === 'push') {\n return miniCollapsePush(duration, width, miniWidth);\n }\n if (!mini && mode === 'push') {\n return collapsePush(duration, width);\n }\n if (!mini && mode === 'overlay') {\n return rtl ? collapseRTLOverlay(duration) : collapseOverlay(duration, position);\n }\n if (mini && mode === 'overlay') {\n return miniCollapseOverlay(duration, width, miniWidth);\n }\n}\n\n/**\n * Arguments for the `select` event of the Drawer.\n */\nclass DrawerSelectEvent extends PreventableEvent$1 {\n}\n\n/**\n * @hidden\n */\nlet DrawerService = class DrawerService {\n /**\n * @hidden\n */\n constructor() {\n this.selectedIndices = [];\n }\n emit(event, args) {\n const drawer = this.owner;\n const eventArgs = new DrawerSelectEvent(Object.assign({}, args, { sender: drawer }));\n if (hasObservers(drawer[event])) {\n drawer[event].emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n onSelect(selectedIdx) {\n this.selectedIndices = [selectedIdx];\n const drawer = this.owner;\n if (drawer.autoCollapse && !drawer.minimized) {\n drawer.toggle(false);\n }\n }\n initSelection() {\n const items = this.owner.items;\n this.selectedIndices = [];\n for (let i = 0; i < items.length; i++) {\n if (items[i].selected) {\n this.selectedIndices.push(i);\n }\n }\n }\n};\nDrawerService.ɵfac = function DrawerService_Factory(t) { return new (t || DrawerService)(); };\nDrawerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DrawerService, factory: function (t) { return DrawerService.ɵfac(t); } });\n\nconst DEFAULT_ANIMATION = { type: 'slide', duration: 200 };\n/**\n * Represents the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public expanded = false;\n *\n * public items: any[] = [\n * { text: 'Inbox', icon: 'k-i-inbox' },\n * { text: 'Notifications', icon: 'k-i-bell' },\n * { text: 'Date', icon: 'k-i-calendar' }\n * ];\n * }\n * ```\n */\nlet DrawerComponent = class DrawerComponent {\n constructor(element, builder, localizationService, drawerService) {\n this.element = element;\n this.builder = builder;\n this.localizationService = localizationService;\n this.drawerService = drawerService;\n this.hostClasses = true;\n /**\n * Specifies the mode in which the Drawer will be displayed.\n *\n * The possible values are:\n * * (Default) `overlay`\n * * `push`\n */\n this.mode = 'overlay';\n /**\n * Specifies the position of the Drawer\n * ([see example]({% slug positioning_drawer %})).\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.position = 'start';\n /**\n * Enables the mini (compact) view of the Drawer which is displayed when the component is collapsed\n * ([see example]({% slug expandmodespositions_drawer %}#toc-mini-view)).\n */\n this.mini = false;\n /**\n * Specifies the state of the Drawer.\n */\n this.expanded = false;\n /**\n * Defines the width of the Drawer when it is expanded.\n * Defaults to `240`.\n */\n this.width = 240;\n /**\n * Defines the width of the Drawer when the mini view is enabled\n * and the component is collapsed. Defaults to `60`.\n */\n this.miniWidth = 50;\n /**\n * Specifies if the Drawer will be automatically collapsed when an item\n * or the overlay is clicked. Defaults to `true`.\n */\n this.autoCollapse = true;\n /**\n * Specifies the animation settings of the Drawer.\n * ([see example]({% slug interaction_drawer %}#toc-toggling-between-states)).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`\n * * `false`\n * * `DrawerAnimation`\n * * (Default) `type?: 'slide'`\n * * `duration`—Accepts a number in milliseconds. Defaults to `300ms`.\n */\n this.animation = DEFAULT_ANIMATION;\n /**\n * Fires when the Drawer is expanded and its animation is complete.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the Drawer is collapsed and its animation is complete.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires when a Drawer item is selected. This event is preventable.\n */\n this.select = new EventEmitter();\n /**\n * Fires when the `expanded` property of the component was updated.\n * Used to provide a two-way binding for the `expanded` property.\n */\n this.expandedChange = new EventEmitter();\n this.animationEnd = new EventEmitter();\n this.rtl = false;\n this._items = [];\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n this.drawerService.owner = this;\n }\n get startPositionClass() {\n return this.position === 'start';\n }\n get endPositionClass() {\n return this.position === 'end';\n }\n get overlayTransofrmStyles() {\n if (this.mode === 'push') {\n return;\n }\n if (this.expanded || this.minimized) {\n return `translateX(0px)`;\n }\n return `translateX(-100%)`;\n }\n get flexStyles() {\n if (this.mode === 'overlay') {\n return;\n }\n if (!this.expanded && !this.minimized) {\n return 0;\n }\n return this.drawerWidth;\n }\n /**\n * The collection of items that will be rendered in the Drawer.\n */\n set items(items) {\n if (isPresent(items)) {\n this._items = items;\n this.drawerService.initSelection();\n }\n }\n get items() {\n return this._items;\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get minimized() {\n return this.mini && !this.expanded;\n }\n /**\n * @hidden\n */\n get drawerWidth() {\n return this.minimized ? this.miniWidth : this.width;\n }\n /**\n * Toggles the visibility of the Drawer.\n *\n * @param expanded? - Boolean. Specifies if the Drawer will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n if (current === true) {\n this.setExpanded(true);\n }\n else if (current === false && !this.animation) {\n this.setExpanded(false);\n }\n if (this.animation) {\n this.animationEnd.pipe(take(1))\n .subscribe(() => { this.onAnimationEnd(current); });\n this.animate(current);\n }\n else {\n this[current ? 'expand' : 'collapse'].emit();\n }\n }\n onAnimationEnd(currentExpanded) {\n if (currentExpanded) {\n this.expand.emit();\n }\n else {\n this.setExpanded(false);\n this.collapse.emit();\n }\n }\n setExpanded(value) {\n this.expanded = value;\n this.expandedChange.emit(value);\n }\n animate(expanded) {\n const settings = {\n mode: this.mode,\n mini: this.mini,\n miniWidth: this.miniWidth,\n width: this.width,\n rtl: this.rtl,\n position: this.position,\n animation: (typeof this.animation !== 'boolean') ? this.animation : DEFAULT_ANIMATION\n };\n const animation = expanded ? expandAnimation(settings) : collapseAnimation(settings);\n const player = this.createPlayer(animation, this.element.nativeElement);\n player.play();\n }\n createPlayer(animation, animatedElement) {\n const factory = this.builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n return player;\n }\n};\nDrawerComponent.ɵfac = function DrawerComponent_Factory(t) { return new (t || DrawerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.AnimationBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(DrawerService)); };\nDrawerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DrawerComponent, selectors: [[\"kendo-drawer\"]], contentQueries: function DrawerComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DrawerTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DrawerFooterTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DrawerHeaderTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DrawerItemTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.drawerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);\n } }, hostVars: 13, hostBindings: function DrawerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵstyleProp(\"transform\", ctx.overlayTransofrmStyles)(\"flex-basis\", ctx.flexStyles, \"px\");\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-drawer\", ctx.hostClasses)(\"k-drawer-start\", ctx.startPositionClass)(\"k-drawer-end\", ctx.endPositionClass);\n } }, inputs: { mode: \"mode\", position: \"position\", mini: \"mini\", expanded: \"expanded\", width: \"width\", miniWidth: \"miniWidth\", autoCollapse: \"autoCollapse\", animation: \"animation\", items: \"items\" }, outputs: { expand: \"expand\", collapse: \"collapse\", select: \"select\", expandedChange: \"expandedChange\" }, exportAs: [\"kendoDrawer\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n DrawerService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer'\n }\n ])], decls: 1, vars: 1, consts: [[\"class\", \"k-drawer-wrapper\", 3, \"width\", 4, \"ngIf\"], [1, \"k-drawer-wrapper\"], [4, \"ngIf\"], [\"kendoDrawerList\", \"\", 1, \"k-drawer-items\", 3, \"items\", \"mini\", \"expanded\", \"itemTemplate\"], [3, \"ngTemplateOutlet\"]], template: function DrawerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DrawerComponent_div_0_Template, 3, 4, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.expanded || ctx.mini);\n } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, DrawerListComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-drawer'),\n __metadata(\"design:type\", Boolean)\n], DrawerComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('class.k-drawer-start'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerComponent.prototype, \"startPositionClass\", null);\n__decorate([\n HostBinding('class.k-drawer-end'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerComponent.prototype, \"endPositionClass\", null);\n__decorate([\n HostBinding('style.transform'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], DrawerComponent.prototype, \"overlayTransofrmStyles\", null);\n__decorate([\n HostBinding('style.flexBasis.px'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], DrawerComponent.prototype, \"flexStyles\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DrawerComponent.prototype, \"mode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], DrawerComponent.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerComponent.prototype, \"mini\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerComponent.prototype, \"expanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DrawerComponent.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DrawerComponent.prototype, \"miniWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerComponent.prototype, \"autoCollapse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], DrawerComponent.prototype, \"items\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], DrawerComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DrawerComponent.prototype, \"animation\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DrawerComponent.prototype, \"expand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DrawerComponent.prototype, \"collapse\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DrawerComponent.prototype, \"select\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], DrawerComponent.prototype, \"expandedChange\", void 0);\n__decorate([\n ContentChild(DrawerTemplateDirective, { static: false }),\n __metadata(\"design:type\", DrawerTemplateDirective)\n], DrawerComponent.prototype, \"drawerTemplate\", void 0);\n__decorate([\n ContentChild(DrawerFooterTemplateDirective, { static: false }),\n __metadata(\"design:type\", DrawerFooterTemplateDirective)\n], DrawerComponent.prototype, \"footerTemplate\", void 0);\n__decorate([\n ContentChild(DrawerHeaderTemplateDirective, { static: false }),\n __metadata(\"design:type\", DrawerHeaderTemplateDirective)\n], DrawerComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n ContentChild(DrawerItemTemplateDirective, { static: false }),\n __metadata(\"design:type\", DrawerItemTemplateDirective)\n], DrawerComponent.prototype, \"itemTemplate\", void 0);\nDrawerComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n AnimationBuilder,\n LocalizationService,\n DrawerService])\n], DrawerComponent);\n\n/**\n * Serves as a container for the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}) and its content.\n */\nlet DrawerContainerComponent = class DrawerContainerComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.rtl = false;\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get hostClass() {\n return true;\n }\n get overlayClass() {\n return this.drawer.mode === 'overlay';\n }\n get miniClass() {\n return this.drawer.mini;\n }\n get pushClass() {\n return this.drawer.mode === 'push';\n }\n get isExpandedClass() {\n return this.drawer.expanded;\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get overlay() {\n return isPresent(this.drawer) &&\n this.drawer.expanded &&\n this.drawer.mode === 'overlay';\n }\n /**\n * @hidden\n */\n closeDrawer() {\n if (this.overlay && this.drawer.autoCollapse) {\n this.drawer.toggle(false);\n }\n }\n};\nDrawerContainerComponent.ɵfac = function DrawerContainerComponent_Factory(t) { return new (t || DrawerContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nDrawerContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DrawerContainerComponent, selectors: [[\"kendo-drawer-container\"]], contentQueries: function DrawerContainerComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DrawerComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.drawer = _t.first);\n } }, hostVars: 11, hostBindings: function DrawerContainerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassProp(\"k-drawer-container\", ctx.hostClass)(\"k-drawer-overlay\", ctx.overlayClass)(\"k-drawer-mini\", ctx.miniClass)(\"k-drawer-push\", ctx.pushClass)(\"k-drawer-expanded\", ctx.isExpandedClass);\n } }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer.container'\n }\n ])], ngContentSelectors: _c7, decls: 2, vars: 1, consts: [[\"class\", \"k-overlay\", 3, \"click\", 4, \"ngIf\"], [1, \"k-overlay\", 3, \"click\"]], template: function DrawerContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, DrawerContainerComponent_div_0_Template, 1, 0, \"div\", 0);\n ɵngcc0.ɵɵprojection(1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.overlay);\n } }, directives: [ɵngcc1.NgIf], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-drawer-container'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerContainerComponent.prototype, \"hostClass\", null);\n__decorate([\n HostBinding('class.k-drawer-overlay'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerContainerComponent.prototype, \"overlayClass\", null);\n__decorate([\n HostBinding('class.k-drawer-mini'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerContainerComponent.prototype, \"miniClass\", null);\n__decorate([\n HostBinding('class.k-drawer-push'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerContainerComponent.prototype, \"pushClass\", null);\n__decorate([\n HostBinding('class.k-drawer-expanded'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerContainerComponent.prototype, \"isExpandedClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], DrawerContainerComponent.prototype, \"direction\", void 0);\n__decorate([\n ContentChild(DrawerComponent, { static: false }),\n __metadata(\"design:type\", DrawerComponent)\n], DrawerContainerComponent.prototype, \"drawer\", void 0);\nDrawerContainerComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], DrawerContainerComponent);\n\n/**\n * Represents the content of the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}).\n */\nlet DrawerContentComponent = class DrawerContentComponent {\n constructor() {\n this.hostClasses = true;\n }\n};\nDrawerContentComponent.ɵfac = function DrawerContentComponent_Factory(t) { return new (t || DrawerContentComponent)(); };\nDrawerContentComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DrawerContentComponent, selectors: [[\"kendo-drawer-content\"]], hostVars: 2, hostBindings: function DrawerContentComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-drawer-content\", ctx.hostClasses);\n } }, ngContentSelectors: _c7, decls: 1, vars: 0, template: function DrawerContentComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-drawer-content'),\n __metadata(\"design:type\", Boolean)\n], DrawerContentComponent.prototype, \"hostClasses\", void 0);\nDrawerContentComponent = __decorate([ __metadata(\"design:paramtypes\", [])\n], DrawerContentComponent);\n\n/**\n * Represents a template that defines the content of the whole Step.\n * To define the template, nest an `` tag\n * with the `kendoStepperStepTemplate` directive inside the `` tag.\n */\nlet StepperStepTemplateDirective = class StepperStepTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nStepperStepTemplateDirective.ɵfac = function StepperStepTemplateDirective_Factory(t) { return new (t || StepperStepTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nStepperStepTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: StepperStepTemplateDirective, selectors: [[\"\", \"kendoStepperStepTemplate\", \"\"]] });\nStepperStepTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], StepperStepTemplateDirective);\n\n/**\n * Represents a template that defines the content of the Step label.\n * To define the template, nest an `` tag\n * with the `kendoStepperLabelTemplate` directive inside the `` tag.\n */\nlet StepperLabelTemplateDirective = class StepperLabelTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nStepperLabelTemplateDirective.ɵfac = function StepperLabelTemplateDirective_Factory(t) { return new (t || StepperLabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nStepperLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: StepperLabelTemplateDirective, selectors: [[\"\", \"kendoStepperLabelTemplate\", \"\"]] });\nStepperLabelTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], StepperLabelTemplateDirective);\n\n/**\n * Represents a template that defines the content of the Step indicator.\n * To define the template, nest an `` tag\n * with the `kendoStepperIndicatorTemplate` directive inside the `` tag.\n */\nlet StepperIndicatorTemplateDirective = class StepperIndicatorTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nStepperIndicatorTemplateDirective.ɵfac = function StepperIndicatorTemplateDirective_Factory(t) { return new (t || StepperIndicatorTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nStepperIndicatorTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: StepperIndicatorTemplateDirective, selectors: [[\"\", \"kendoStepperIndicatorTemplate\", \"\"]] });\nStepperIndicatorTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], StepperIndicatorTemplateDirective);\n\n/**\n * Arguments for the `activate` event of the Stepper.\n */\nclass StepperActivateEvent extends PreventableEvent$1 {\n}\n\nconst DEFAULT_CURRENT_STEP = 0;\nconst handlers = {};\nhandlers[Keys.ArrowLeft] = 'left';\nhandlers[Keys.ArrowRight] = 'right';\nhandlers[Keys.ArrowUp] = 'up';\nhandlers[Keys.ArrowDown] = 'down';\nhandlers[Keys.Home] = 'home';\nhandlers[Keys.End] = 'end';\nhandlers[Keys.Enter] = 'enter';\nhandlers[Keys.Space] = 'enter';\nconst handlersRTL = Object.assign({}, handlers);\nhandlersRTL[Keys.ArrowLeft] = 'right';\nhandlersRTL[Keys.ArrowRight] = 'left';\n/**\n * @hidden\n */\nlet StepperService = class StepperService {\n constructor(localization, ngZone, changeDetector) {\n this.localization = localization;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.currentStep = DEFAULT_CURRENT_STEP;\n this.triggerValidation = new EventEmitter();\n this.focusedStepChange = new EventEmitter();\n }\n get handlers() {\n return this.localization.rtl ? handlersRTL : handlers;\n }\n emit(event, eventArgs) {\n const stepper = this.owner;\n if (hasObservers(stepper[event])) {\n stepper[event].emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n onActivate(currentIdx, originalEvent) {\n const eventArgs = new StepperActivateEvent({\n index: currentIdx,\n step: this.owner.steps[currentIdx],\n originalEvent: originalEvent,\n sender: this.owner\n });\n this.ngZone.run(() => {\n if (!this.emit('activate', eventArgs)) {\n this.currentStep = currentIdx;\n this.owner['currentStepChange'].emit(currentIdx);\n this.changeDetector.detectChanges();\n }\n });\n }\n validateSteps() {\n this.triggerValidation.emit();\n }\n keydown(e) {\n const current = this.focusedStep || this.currentStep;\n const handler = this.handlers[e.keyCode];\n if (!isPresent(current)) {\n return;\n }\n if (handler) {\n e.preventDefault();\n this[handler](e);\n }\n }\n left() {\n if (!this.isHorizontal) {\n return;\n }\n this.focusPrevStep();\n }\n right() {\n if (!this.isHorizontal) {\n return;\n }\n this.focusNextStep();\n }\n up() {\n if (this.isHorizontal) {\n return;\n }\n this.focusPrevStep();\n }\n down() {\n if (this.isHorizontal) {\n return;\n }\n this.focusNextStep();\n }\n home() {\n this.focusedStep = 0;\n this.focusedStepChange.emit();\n }\n end() {\n this.focusedStep = this.owner.steps.length - 1;\n this.focusedStepChange.emit();\n }\n enter(event) {\n if (this.focusedStep === this.currentStep) {\n return;\n }\n if (this.isStepDisabled(this.focusedStep)) {\n return;\n }\n if (this.owner.linear && this.isPrevOrNextStep(this.focusedStep) === false) {\n return;\n }\n this.onActivate(this.focusedStep, event);\n }\n focus(focusedIdx) {\n this.focusedStep = focusedIdx;\n }\n focusNextStep() {\n if (this.focusedStep < this.owner.steps.length) {\n this.focusedStep += 1;\n this.focusedStepChange.emit();\n }\n }\n focusPrevStep() {\n if (this.focusedStep > 0) {\n this.focusedStep -= 1;\n this.focusedStepChange.emit();\n }\n }\n isStepDisabled(index) {\n return this.owner.steps[index].disabled;\n }\n isPrevOrNextStep(index) {\n return index === this.currentStep + 1 || index === this.currentStep - 1;\n }\n get isHorizontal() {\n return this.owner.orientation === 'horizontal';\n }\n};\nStepperService.ɵfac = function StepperService_Factory(t) { return new (t || StepperService)(ɵngcc0.ɵɵinject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc0.ChangeDetectorRef)); };\nStepperService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: StepperService, factory: function (t) { return StepperService.ɵfac(t); } });\nStepperService = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n NgZone,\n ChangeDetectorRef])\n], StepperService);\n\nconst DEFAULT_ANIMATION_DURATION = 400;\n/**\n * Represents the [Kendo UI Stepper component for Angular]({% slug overview_stepper %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public steps: Array = [\n * { label: 'Step One' }, { label: 'Step Two' }, { label: 'Step Three' }\n * ];\n * }\n * ```\n */\nlet StepperComponent = class StepperComponent {\n constructor(renderer, elem, localization, stepperService) {\n this.renderer = renderer;\n this.elem = elem;\n this.localization = localization;\n this.stepperService = stepperService;\n this.hostClasses = true;\n this.ariaRole = 'navigation';\n this.displayStyle = 'grid';\n /**\n * Specifies the type of the steps in the Stepper.\n *\n * The possible values are:\n * * (Default) `indicator`\n * * `label`\n * * `full`\n */\n this.stepType = 'indicator';\n /**\n * Specifies the linear flow of the Stepper.\n *\n * @default true\n */\n this.linear = true;\n /**\n * Specifies the orientation of the Stepper\n * ([see example]({% slug orientation_stepper %})).\n *\n * The possible values are:\n * * (Default) `horizontal`\n * * `vertical`\n */\n this.orientation = 'horizontal';\n /**\n * Specifies the duration of the progress indicator animation in milliseconds. Defaults to `400ms`.\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`\n * * false\n * * Number\n */\n this.animation = true;\n /**\n * Fires when a step is about to be activated. This event is preventable.\n */\n this.activate = new EventEmitter();\n /**\n * Fires when the `currentStep` property of the component was updated.\n * Used to provide a two-way binding for the `currentStep` property.\n */\n this.currentStepChange = new EventEmitter();\n this._steps = [];\n this.dynamicRTLSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.stepperService.owner = this;\n }\n get linearClass() {\n return this.linear;\n }\n /**\n * The index of the current step.\n */\n set currentStep(value) {\n this.stepperService.currentStep = value;\n }\n get currentStep() {\n return this.stepperService.currentStep;\n }\n /**\n * The collection of steps that will be rendered in the Stepper.\n * ([see example]({% slug step_appearance_stepper %}))\n */\n set steps(steps) {\n if (isPresent(steps) && steps.length > 0) {\n this._steps = steps;\n }\n }\n get steps() {\n return this._steps;\n }\n ngOnInit() {\n this.applyHostStyling();\n }\n ngOnChanges(changes) {\n if (changes.steps && !changes.steps.firstChange) {\n this.applyHostStyling();\n }\n if (changes.orientation) {\n this.resetHostStyling();\n this.applyHostStyling();\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * Manually triggers the validity check configured by the [isValid]({% slug api_layout_stepperstep %}#toc-isvalid) property of the steps ([see example]({% slug step_validation_stepper %}#toc-triggering-the-validation)).\n *\n * Steps that have their [validate]({% slug api_layout_stepperstep %}#toc-validate) property set to `false`, will not be validated.\n */\n validateSteps() {\n this.stepperService.validateSteps();\n }\n applyHostStyling() {\n const stepFramesStyle = this.orientation === 'horizontal' ? 'grid-template-columns' : 'grid-template-rows';\n const stepFramesValue = `repeat(${this.steps.length * 2}, 1fr)`;\n this.renderer.setStyle(this.elem.nativeElement, stepFramesStyle, stepFramesValue);\n }\n resetHostStyling() {\n this.renderer.removeStyle(this.elem.nativeElement, 'grid-template-columns');\n this.renderer.removeStyle(this.elem.nativeElement, 'grid-template-rows');\n }\n /**\n * @hidden\n */\n get progressAnimation() {\n return { duration: this.animationDuration };\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'number') {\n return this.animation;\n }\n if (typeof this.animation === 'boolean' && this.animation) {\n return DEFAULT_ANIMATION_DURATION;\n }\n return 0;\n }\n /**\n * @hidden\n */\n get stepsListStyling() {\n if (this.orientation === 'horizontal') {\n return { 'grid-column-start': 1, 'grid-column-end': -1 };\n }\n return { 'grid-row-start': 1, 'grid-row-end': -1 };\n }\n /**\n * @hidden\n */\n get progressBarStyling() {\n if (this.orientation === 'horizontal') {\n return {\n 'grid-column-start': 2,\n 'grid-column-end': this.steps.length * 2\n };\n }\n return {\n 'grid-row-start': 2,\n 'grid-row-end': this.steps.length * 2\n };\n }\n /***\n * @hidden\n */\n get isHorizontal() {\n return this.stepperService.isHorizontal;\n }\n};\nStepperComponent.ɵfac = function StepperComponent_Factory(t) { return new (t || StepperComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(StepperService)); };\nStepperComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StepperComponent, selectors: [[\"kendo-stepper\"]], contentQueries: function StepperComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, StepperStepTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, StepperLabelTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, StepperIndicatorTemplateDirective, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.stepTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.indicatorTemplate = _t.first);\n } }, hostVars: 10, hostBindings: function StepperComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.ariaRole)(\"dir\", ctx.direction);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.displayStyle);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-stepper\", ctx.hostClasses)(\"k-stepper-linear\", ctx.linearClass);\n } }, inputs: { stepType: \"stepType\", linear: \"linear\", orientation: \"orientation\", animation: \"animation\", currentStep: \"currentStep\", steps: \"steps\", successIcon: \"successIcon\", errorIcon: \"errorIcon\" }, outputs: { activate: \"activate\", currentStepChange: \"currentStepChange\" }, exportAs: [\"kendoStepper\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n StepperService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stepper'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 16, consts: function () { let i18n_17; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the optional segment of the step label\n * @meaning kendo.stepper.optional\n */\n const MSG_EXTERNAL_9222129954657106830$$DIST_FESM2015_INDEX_JS_18 = goog.getMsg(\"Optional\");\n i18n_17 = MSG_EXTERNAL_9222129954657106830$$DIST_FESM2015_INDEX_JS_18;\n }\n else {\n i18n_17 = $localize `:kendo.stepper.optional|The text for the optional segment of the step label␟5662ca90a1b7d36b2f55d6e21c0f4f7e166291af␟9222129954657106830:Optional`;\n } return [[\"kendoStepperLocalizedMessages\", \"\", \"optional\", i18n_17], [\"kendoStepperList\", \"\", 1, \"k-step-list\", 3, \"stepType\", \"linear\", \"orientation\", \"steps\", \"currentStep\", \"successIcon\", \"errorIcon\", \"indicatorTemplate\", \"labelTemplate\", \"stepTemplate\", \"ngStyle\"], [3, \"animation\", \"max\", \"label\", \"orientation\", \"reverse\", \"value\", \"ngStyle\", 4, \"ngIf\"], [3, \"animation\", \"max\", \"label\", \"orientation\", \"reverse\", \"value\", \"ngStyle\"]]; }, template: function StepperComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelement(1, \"ol\", 1);\n ɵngcc0.ɵɵtemplate(2, StepperComponent_kendo_progressbar_2_Template, 1, 8, \"kendo-progressbar\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"k-step-list-horizontal\", ctx.isHorizontal)(\"k-step-list-vertical\", !ctx.isHorizontal);\n ɵngcc0.ɵɵproperty(\"stepType\", ctx.stepType)(\"linear\", ctx.linear)(\"orientation\", ctx.orientation)(\"steps\", ctx.steps)(\"currentStep\", ctx.currentStep)(\"successIcon\", ctx.successIcon)(\"errorIcon\", ctx.errorIcon)(\"indicatorTemplate\", ctx.indicatorTemplate == null ? null : ctx.indicatorTemplate.templateRef)(\"labelTemplate\", ctx.labelTemplate == null ? null : ctx.labelTemplate.templateRef)(\"stepTemplate\", ctx.stepTemplate == null ? null : ctx.stepTemplate.templateRef)(\"ngStyle\", ctx.stepsListStyling);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.steps.length > 0);\n } }, directives: function () { return [LocalizedStepperMessagesDirective, StepperListComponent, ɵngcc1.NgStyle, ɵngcc1.NgIf, ɵngcc5.ProgressBarComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-stepper'),\n __metadata(\"design:type\", Boolean)\n], StepperComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('class.k-stepper-linear'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], StepperComponent.prototype, \"linearClass\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], StepperComponent.prototype, \"ariaRole\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], StepperComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('style.display'),\n __metadata(\"design:type\", String)\n], StepperComponent.prototype, \"displayStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperComponent.prototype, \"stepType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], StepperComponent.prototype, \"linear\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], StepperComponent.prototype, \"currentStep\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], StepperComponent.prototype, \"steps\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperComponent.prototype, \"successIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperComponent.prototype, \"errorIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StepperComponent.prototype, \"animation\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], StepperComponent.prototype, \"activate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], StepperComponent.prototype, \"currentStepChange\", void 0);\n__decorate([\n ContentChild(StepperStepTemplateDirective, { static: true }),\n __metadata(\"design:type\", StepperStepTemplateDirective)\n], StepperComponent.prototype, \"stepTemplate\", void 0);\n__decorate([\n ContentChild(StepperLabelTemplateDirective, { static: true }),\n __metadata(\"design:type\", StepperLabelTemplateDirective)\n], StepperComponent.prototype, \"labelTemplate\", void 0);\n__decorate([\n ContentChild(StepperIndicatorTemplateDirective, { static: true }),\n __metadata(\"design:type\", StepperIndicatorTemplateDirective)\n], StepperComponent.prototype, \"indicatorTemplate\", void 0);\nStepperComponent = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n LocalizationService,\n StepperService])\n], StepperComponent);\n\n/**\n * @hidden\n */\nclass StepperMessages extends ComponentMessages {\n}\nStepperMessages.ɵfac = /*@__PURE__*/ function () { let ɵStepperMessages_BaseFactory; return function StepperMessages_Factory(t) { return (ɵStepperMessages_BaseFactory || (ɵStepperMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(StepperMessages)))(t || StepperMessages); }; }();\nStepperMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: StepperMessages, inputs: { optional: \"optional\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperMessages.prototype, \"optional\", void 0);\n\nvar StepperCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nlet StepperCustomMessagesComponent = StepperCustomMessagesComponent_1 = class StepperCustomMessagesComponent extends StepperMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nStepperCustomMessagesComponent.ɵfac = function StepperCustomMessagesComponent_Factory(t) { return new (t || StepperCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nStepperCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StepperCustomMessagesComponent, selectors: [[\"kendo-stepper-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => StepperCustomMessagesComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function StepperCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nStepperCustomMessagesComponent = StepperCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], StepperCustomMessagesComponent);\n\nvar LocalizedStepperMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedStepperMessagesDirective = LocalizedStepperMessagesDirective_1 = class LocalizedStepperMessagesDirective extends StepperMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedStepperMessagesDirective.ɵfac = function LocalizedStepperMessagesDirective_Factory(t) { return new (t || LocalizedStepperMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nLocalizedStepperMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedStepperMessagesDirective, selectors: [[\"\", \"kendoStepperLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => LocalizedStepperMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedStepperMessagesDirective = LocalizedStepperMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedStepperMessagesDirective);\n\nconst SIZE_CLASSES = {\n 'small': 'k-avatar-sm',\n 'medium': 'k-avatar-md',\n 'large': 'k-avatar-lg'\n};\nconst SHAPE_CLASSES = {\n 'circle': 'k-avatar-circle',\n 'square': 'k-avatar-square',\n 'rectangle': 'k-avatar-rectangle',\n 'rounded': 'k-avatar-rounded'\n};\n/**\n * Displays images, icons or initials representing people or other entities.\n */\nlet AvatarComponent = class AvatarComponent {\n constructor(renderer, element) {\n this.renderer = renderer;\n this.element = element;\n this.hostClass = true;\n /**\n * Specifies the appearance fill style of the avatar.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `outline`\n *\n */\n this.fill = 'solid';\n /**\n * Sets a border to the avatar.\n */\n this.border = false;\n this._themeColor = 'primary';\n this._size = 'medium';\n this._shape = 'square';\n this.avatar = this.element.nativeElement;\n validatePackage(packageMetadata);\n }\n /**\n * @hidden\n */\n get solidClass() {\n return this.fill === 'solid';\n }\n /**\n * @hidden\n */\n get outlineClass() {\n return this.fill === 'outline';\n }\n /**\n * @hidden\n */\n get borderClass() {\n return this.border;\n }\n /**\n * @hidden\n */\n get flexBasis() {\n return this.width;\n }\n /**\n * Sets the shape for the avatar.\n *\n * Possible values are:\n * * (Default) `square`\n * * `circle`\n * * `rectangle`\n * * `rounded`\n *\n */\n set shape(shape) {\n this.renderer.removeClass(this.avatar, SHAPE_CLASSES[this.shape]);\n this.renderer.addClass(this.avatar, SHAPE_CLASSES[shape]);\n this._shape = shape;\n }\n get shape() {\n return this._shape;\n }\n /**\n * Specifies the size of the avatar\n * ([see example]({% slug appearance_avatar %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.avatar, SIZE_CLASSES[this.size]);\n this.renderer.addClass(this.avatar, SIZE_CLASSES[size]);\n this._size = size;\n }\n get size() {\n return this._size;\n }\n /**\n * Specifies the theme color of the avatar.\n * The theme color will be applied as background and border color, while also amending the text color accordingly.\n *\n * The possible values are:\n * * `primary` (Default)—Applies coloring based on primary theme color.\n * * `secondary`—Applies coloring based on secondary theme color.\n * * `tertiary`— Applies coloring based on tertiary theme color.\n * * `inherit`— Applies inherited coloring value.\n * * `info`—Applies coloring based on info theme color.\n * * `success`— Applies coloring based on success theme color.\n * * `warning`— Applies coloring based on warning theme color.\n * * `error`— Applies coloring based on error theme color.\n * * `dark`— Applies coloring based on dark theme color.\n * * `light`— Applies coloring based on light theme color.\n * * `inverse`— Applies coloring based on inverted theme color.\n *\n */\n set themeColor(themeColor) {\n this.renderer.removeClass(this.avatar, `k-avatar-${this.themeColor}`);\n this.renderer.addClass(this.avatar, `k-avatar-${themeColor}`);\n this._themeColor = themeColor;\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * @hidden\n */\n get avatarWidth() {\n return this.width;\n }\n /**\n * @hidden\n */\n get avatarHeight() {\n return this.height;\n }\n ngAfterViewInit() {\n this.setAvatarClasses();\n }\n /**\n * @hidden\n */\n get imageUrl() {\n return `url(${this.imageSrc})`;\n }\n ngOnInit() {\n this.verifyProperties();\n }\n /**\n * @hidden\n */\n iconClasses() {\n if (this.icon) {\n return `k-icon k-i-${this.icon}`;\n }\n if (this.iconClass) {\n return `${this.iconClass}`;\n }\n }\n /**\n * @hidden\n */\n get customAvatar() {\n return !(this.imageSrc || this.initials || this.icon || this.iconClass);\n }\n verifyProperties() {\n if (!isDevMode()) {\n return;\n }\n const inputs = [this.icon || this.iconClass, this.imageSrc, this.initials];\n const inputsLength = inputs.filter((value) => value).length;\n if (inputsLength > 1) {\n throw new Error(`\n Invalid property configuration given.\n The kendo-avatar component can accept only one of:\n icon, imageSrc or initials properties.\n `);\n }\n }\n setAvatarClasses() {\n this.renderer.addClass(this.avatar, SHAPE_CLASSES[this.shape]);\n this.renderer.addClass(this.avatar, `k-avatar-${this.themeColor}`);\n this.renderer.addClass(this.avatar, SIZE_CLASSES[this.size]);\n }\n};\nAvatarComponent.ɵfac = function AvatarComponent_Factory(t) { return new (t || AvatarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nAvatarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AvatarComponent, selectors: [[\"kendo-avatar\"]], hostVars: 14, hostBindings: function AvatarComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"flex-basis\", ctx.flexBasis)(\"width\", ctx.avatarWidth)(\"height\", ctx.avatarHeight);\n ɵngcc0.ɵɵclassProp(\"k-avatar\", ctx.hostClass)(\"k-avatar-solid\", ctx.solidClass)(\"k-avatar-outline\", ctx.outlineClass)(\"k-avatar-bordered\", ctx.borderClass);\n } }, inputs: { fill: \"fill\", border: \"border\", shape: \"shape\", size: \"size\", themeColor: \"themeColor\", iconClass: \"iconClass\", width: \"width\", height: \"height\", cssStyle: \"cssStyle\", initials: \"initials\", icon: \"icon\", imageSrc: \"imageSrc\" }, ngContentSelectors: _c7, decls: 4, vars: 4, consts: [[4, \"ngIf\"], [1, \"k-avatar-image\", 3, \"ngStyle\"], [1, \"k-avatar-text\", 3, \"ngStyle\"], [1, \"k-avatar-icon\", 3, \"ngStyle\", \"ngClass\"]], template: function AvatarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, AvatarComponent_ng_content_0_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵtemplate(1, AvatarComponent_ng_container_1_Template, 2, 3, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(2, AvatarComponent_ng_container_2_Template, 3, 2, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(3, AvatarComponent_ng_container_3_Template, 2, 2, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.customAvatar);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.imageSrc);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.initials);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.iconClass);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgStyle, ɵngcc1.NgClass], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-avatar'),\n __metadata(\"design:type\", Boolean)\n], AvatarComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-avatar-solid'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], AvatarComponent.prototype, \"solidClass\", null);\n__decorate([\n HostBinding('class.k-avatar-outline'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], AvatarComponent.prototype, \"outlineClass\", null);\n__decorate([\n HostBinding('class.k-avatar-bordered'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], AvatarComponent.prototype, \"borderClass\", null);\n__decorate([\n HostBinding('style.flexBasis'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], AvatarComponent.prototype, \"flexBasis\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], AvatarComponent.prototype, \"shape\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], AvatarComponent.prototype, \"size\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], AvatarComponent.prototype, \"themeColor\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AvatarComponent.prototype, \"fill\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], AvatarComponent.prototype, \"border\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AvatarComponent.prototype, \"iconClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AvatarComponent.prototype, \"width\", void 0);\n__decorate([\n HostBinding('style.width'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], AvatarComponent.prototype, \"avatarWidth\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AvatarComponent.prototype, \"height\", void 0);\n__decorate([\n HostBinding('style.height'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], AvatarComponent.prototype, \"avatarHeight\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AvatarComponent.prototype, \"cssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AvatarComponent.prototype, \"initials\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AvatarComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], AvatarComponent.prototype, \"imageSrc\", void 0);\nAvatarComponent = __decorate([ __metadata(\"design:paramtypes\", [Renderer2, ElementRef])\n], AvatarComponent);\n\n/**\n * Represents the [Kendo UI Card component for Angular]({% slug overview_card %})\n */\nlet CardComponent = class CardComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClass = true;\n /**\n * Specifies the layout of the Card content.\n *\n * The possible values are:\n * * (Default) `vertical`\n * * `horizontal`\n *\n */\n this.orientation = 'vertical';\n /**\n * Defines the width of the Card.\n * Defaults to `285px`.\n */\n this.width = '285px';\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get widthStyle() {\n return this.width;\n }\n get vertical() {\n return this.orientation === 'vertical';\n }\n get horizontal() {\n return this.orientation === 'horizontal';\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n};\nCardComponent.ɵfac = function CardComponent_Factory(t) { return new (t || CardComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nCardComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CardComponent, selectors: [[\"kendo-card\"]], hostVars: 11, hostBindings: function CardComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.widthStyle);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClass)(\"k-card\", ctx.hostClass)(\"k-card-vertical\", ctx.vertical)(\"k-card-horizontal\", ctx.horizontal);\n } }, inputs: { orientation: \"orientation\", width: \"width\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.card.component'\n }\n ])], ngContentSelectors: _c7, decls: 1, vars: 0, template: function CardComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-card'),\n __metadata(\"design:type\", Boolean)\n], CardComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('style.width'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], CardComponent.prototype, \"widthStyle\", null);\n__decorate([\n HostBinding('class.k-card-vertical'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardComponent.prototype, \"vertical\", null);\n__decorate([\n HostBinding('class.k-card-horizontal'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardComponent.prototype, \"horizontal\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], CardComponent.prototype, \"direction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CardComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CardComponent.prototype, \"width\", void 0);\nCardComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CardComponent);\n\n/**\n * Specifies the content in the Card header.\n */\nlet CardHeaderComponent = class CardHeaderComponent {\n /**\n * Specifies the content in the Card header.\n */\n constructor() {\n this.hostClass = true;\n }\n};\nCardHeaderComponent.ɵfac = function CardHeaderComponent_Factory(t) { return new (t || CardHeaderComponent)(); };\nCardHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CardHeaderComponent, selectors: [[\"kendo-card-header\"]], hostVars: 2, hostBindings: function CardHeaderComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-card-header\", ctx.hostClass);\n } }, ngContentSelectors: _c7, decls: 1, vars: 0, template: function CardHeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-card-header'),\n __metadata(\"design:type\", Boolean)\n], CardHeaderComponent.prototype, \"hostClass\", void 0);\n\n/**\n * Specifies the content in the Card body.\n */\nlet CardBodyComponent = class CardBodyComponent {\n /**\n * Specifies the content in the Card body.\n */\n constructor() {\n this.hostClass = true;\n }\n};\nCardBodyComponent.ɵfac = function CardBodyComponent_Factory(t) { return new (t || CardBodyComponent)(); };\nCardBodyComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CardBodyComponent, selectors: [[\"kendo-card-body\"]], hostVars: 2, hostBindings: function CardBodyComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-card-body\", ctx.hostClass);\n } }, ngContentSelectors: _c7, decls: 1, vars: 0, template: function CardBodyComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-card-body'),\n __metadata(\"design:type\", Boolean)\n], CardBodyComponent.prototype, \"hostClass\", void 0);\n\n/**\n * Specifies the content in the Card footer.\n */\nlet CardFooterComponent = class CardFooterComponent {\n /**\n * Specifies the content in the Card footer.\n */\n constructor() {\n this.hostClass = true;\n }\n};\nCardFooterComponent.ɵfac = function CardFooterComponent_Factory(t) { return new (t || CardFooterComponent)(); };\nCardFooterComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CardFooterComponent, selectors: [[\"kendo-card-footer\"]], hostVars: 2, hostBindings: function CardFooterComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-card-footer\", ctx.hostClass);\n } }, ngContentSelectors: _c7, decls: 1, vars: 0, template: function CardFooterComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-card-footer'),\n __metadata(\"design:type\", Boolean)\n], CardFooterComponent.prototype, \"hostClass\", void 0);\n\n/**\n * Specifies the action buttons of the Card.\n * * ([see example]({% slug actions_card %})).\n */\nlet CardActionsComponent = class CardActionsComponent {\n /**\n * Specifies the action buttons of the Card.\n * * ([see example]({% slug actions_card %})).\n */\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the layout of the Card action buttons.\n *\n * * The possible values are:\n * * (Default) `horizontal`\n * * `vertical`\n *\n */\n this.orientation = 'horizontal';\n /**\n * Specifies the layout of the Card action buttons.\n *\n * The possible values are:\n * * (Default) `start`\n * * `center`\n * * `end`\n * * `stretched`\n *\n */\n this.layout = 'start';\n /**\n * Fires when the user clicks an action button.\n */\n this.action = new EventEmitter();\n }\n get stretchedClass() {\n return this.layout === 'stretched';\n }\n get startClass() {\n return this.layout === 'start';\n }\n get endClass() {\n return this.layout === 'end';\n }\n get centerClass() {\n return this.layout === 'center';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n /**\n * @hidden\n */\n onClick(action) {\n this.action.emit(action);\n }\n /**\n * @hidden\n */\n actionTemplate() {\n return this.actions instanceof TemplateRef;\n }\n};\nCardActionsComponent.ɵfac = function CardActionsComponent_Factory(t) { return new (t || CardActionsComponent)(); };\nCardActionsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CardActionsComponent, selectors: [[\"kendo-card-actions\"]], hostVars: 14, hostBindings: function CardActionsComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-card-actions\", ctx.hostClass)(\"k-card-actions-stretched\", ctx.stretchedClass)(\"k-card-actions-start\", ctx.startClass)(\"k-card-actions-end\", ctx.endClass)(\"k-card-actions-center\", ctx.centerClass)(\"k-card-actions-vertical\", ctx.verticalClass)(\"k-card-actions-horizontal\", ctx.horizontalClass);\n } }, inputs: { orientation: \"orientation\", layout: \"layout\", actions: \"actions\" }, outputs: { action: \"action\" }, ngContentSelectors: _c7, decls: 3, vars: 3, consts: [[4, \"ngIf\"], [\"type\", \"button\", \"class\", \"k-button\", 3, \"k-primary\", \"k-flat\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", 1, \"k-button\", 3, \"click\"], [3, \"ngTemplateOutlet\"]], template: function CardActionsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, CardActionsComponent_ng_content_0_Template, 1, 0, \"ng-content\", 0);\n ɵngcc0.ɵɵtemplate(1, CardActionsComponent_ng_container_1_Template, 2, 1, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(2, CardActionsComponent_2_Template, 1, 1, null, 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.actions);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.actionTemplate());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.actionTemplate());\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-card-actions'),\n __metadata(\"design:type\", Boolean)\n], CardActionsComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-card-actions-stretched'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardActionsComponent.prototype, \"stretchedClass\", null);\n__decorate([\n HostBinding('class.k-card-actions-start'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardActionsComponent.prototype, \"startClass\", null);\n__decorate([\n HostBinding('class.k-card-actions-end'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardActionsComponent.prototype, \"endClass\", null);\n__decorate([\n HostBinding('class.k-card-actions-center'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardActionsComponent.prototype, \"centerClass\", null);\n__decorate([\n HostBinding('class.k-card-actions-vertical'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardActionsComponent.prototype, \"verticalClass\", null);\n__decorate([\n HostBinding('class.k-card-actions-horizontal'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardActionsComponent.prototype, \"horizontalClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CardActionsComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CardActionsComponent.prototype, \"layout\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CardActionsComponent.prototype, \"actions\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CardActionsComponent.prototype, \"action\", void 0);\n\n/**\n * Specifies a separator in the content of the Card.\n */\nlet CardSeparatorDirective = class CardSeparatorDirective {\n /**\n * Specifies a separator in the content of the Card.\n */\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the orientation of the Card separator.\n *\n * The possible values are:\n * (Default) `horizontal`\n * `vertical`\n */\n this.orientation = 'horizontal';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n};\nCardSeparatorDirective.ɵfac = function CardSeparatorDirective_Factory(t) { return new (t || CardSeparatorDirective)(); };\nCardSeparatorDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CardSeparatorDirective, selectors: [[\"\", \"kendoCardSeparator\", \"\"]], hostVars: 8, hostBindings: function CardSeparatorDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"color\", ctx.color);\n ɵngcc0.ɵɵclassProp(\"k-card-separator\", ctx.hostClass)(\"k-separator-vertical\", ctx.verticalClass)(\"k-separator-horizontal\", ctx.horizontalClass);\n } }, inputs: { orientation: \"orientation\", color: \"color\" } });\n__decorate([\n HostBinding('class.k-card-separator'),\n __metadata(\"design:type\", Boolean)\n], CardSeparatorDirective.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-separator-vertical'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardSeparatorDirective.prototype, \"verticalClass\", null);\n__decorate([\n HostBinding('class.k-separator-horizontal'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CardSeparatorDirective.prototype, \"horizontalClass\", null);\n__decorate([\n HostBinding('style.color'),\n Input(),\n __metadata(\"design:type\", String)\n], CardSeparatorDirective.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CardSeparatorDirective.prototype, \"orientation\", void 0);\n\n/**\n * Specifies the text and styles for the title of the Card.\n */\nlet CardTitleDirective = class CardTitleDirective {\n /**\n * Specifies the text and styles for the title of the Card.\n */\n constructor() {\n this.hostClass = true;\n }\n};\nCardTitleDirective.ɵfac = function CardTitleDirective_Factory(t) { return new (t || CardTitleDirective)(); };\nCardTitleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CardTitleDirective, selectors: [[\"\", \"kendoCardTitle\", \"\"]], hostVars: 2, hostBindings: function CardTitleDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-card-title\", ctx.hostClass);\n } } });\n__decorate([\n HostBinding('class.k-card-title'),\n __metadata(\"design:type\", Boolean)\n], CardTitleDirective.prototype, \"hostClass\", void 0);\n\n/**\n * Specifies the text and styles for the subtitle of the Card.\n */\nlet CardSubtitleDirective = class CardSubtitleDirective {\n /**\n * Specifies the text and styles for the subtitle of the Card.\n */\n constructor() {\n this.hostClass = true;\n }\n};\nCardSubtitleDirective.ɵfac = function CardSubtitleDirective_Factory(t) { return new (t || CardSubtitleDirective)(); };\nCardSubtitleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CardSubtitleDirective, selectors: [[\"\", \"kendoCardSubtitle\", \"\"]], hostVars: 2, hostBindings: function CardSubtitleDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-card-subtitle\", ctx.hostClass);\n } } });\n__decorate([\n HostBinding('class.k-card-subtitle'),\n __metadata(\"design:type\", Boolean)\n], CardSubtitleDirective.prototype, \"hostClass\", void 0);\n\n/**\n * Specifies any media that will be displayed and aligned in the Card.\n */\nlet CardMediaDirective = class CardMediaDirective {\n /**\n * Specifies any media that will be displayed and aligned in the Card.\n */\n constructor() {\n this.hostClass = true;\n }\n};\nCardMediaDirective.ɵfac = function CardMediaDirective_Factory(t) { return new (t || CardMediaDirective)(); };\nCardMediaDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CardMediaDirective, selectors: [[\"\", \"kendoCardMedia\", \"\"]], hostVars: 2, hostBindings: function CardMediaDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-card-media\", ctx.hostClass);\n } } });\n__decorate([\n HostBinding('class.k-card-media'),\n __metadata(\"design:type\", Boolean)\n], CardMediaDirective.prototype, \"hostClass\", void 0);\n\n/**\n * The settings of the Card action buttons.\n */\nclass CardAction {\n}\n\n/**\n * Represents a template that defines the content of the ExpansionPanel title.\n * To define the template, nest an `` tag\n * with the `kendoExpansionPanelTitleDirective` directive inside the `` tag.\n * ([see example]({% slug title_expansionpanel %}#toc-title-template)).\n */\nlet ExpansionPanelTitleDirective = class ExpansionPanelTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nExpansionPanelTitleDirective.ɵfac = function ExpansionPanelTitleDirective_Factory(t) { return new (t || ExpansionPanelTitleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nExpansionPanelTitleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ExpansionPanelTitleDirective, selectors: [[\"\", \"kendoExpansionPanelTitleDirective\", \"\"]] });\nExpansionPanelTitleDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ExpansionPanelTitleDirective);\n\n/**\n * @hidden\n */\nfunction expand(duration, height) {\n return [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(`${duration}ms ease-in`, style({ height: `${height}` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapse(duration, height) {\n return [\n style({ overflow: 'hidden', height: `${height}` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', height: 0 }))\n ];\n}\n\n/**\n * Arguments for the `action` event of the ExpansionPanel.\n */\nclass ExpansionPanelActionEvent extends PreventableEvent$1 {\n}\n\nconst DEFAULT_DURATION = 200;\nconst CONTENT_HIDDEN_CLASS = 'k-hidden';\n/**\n * Represents the [Kendo UI ExpansionPanel component for Angular]({% slug overview_expansionpanel %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * There are various theories about the origin of the word Chile.\n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nlet ExpansionPanelComponent = class ExpansionPanelComponent {\n constructor(renderer, hostElement, ngZone, localizationService, builder) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.localizationService = localizationService;\n this.builder = builder;\n /**\n * Specifies the primary text in the header of the ExpansionPanel\n * ([see example]({% slug title_expansionpanel %}#toc-title-and-subtitle)).\n */\n this.title = '';\n /**\n * Specifies the secondary text in the header of the ExpansionPanel, which is rendered next to the collapse/expand icon\n * ([see example]({% slug title_expansionpanel %}#toc-title-and-subtitle)).\n */\n this.subtitle = '';\n /**\n * Specifies whether the ExpansionPanel is disabled. If disabled, the ExpansionPanel can be neither expanded nor collapsed\n * ([see example]({% slug disabled_expansionpanel %})).\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the animation settings of the ExpansionPanel\n * ([see example]({% slug animations_expansionpanel %})).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true` Numeric values represent duration. Default duration is 200ms.\n * * false\n * * Number\n */\n this.animation = true;\n /**\n * Fires when the `expanded` property of the component is updated.\n * Used to provide a two-way binding for the `expanded` property\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.expandedChange = new EventEmitter();\n /**\n * Fires when the expanded state of the ExpansionPanel is about to change. This event is preventable\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.action = new EventEmitter();\n /**\n * Fires when the ExpansionPanel is expanded. If there is animation it will fire when the animation is complete\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the ExpansionPanel is collapsed. If there is animation it will fire when the animation is complete\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.collapse = new EventEmitter();\n this.hostClass = true;\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.focused = false;\n this.animationEnd = new EventEmitter();\n this.subscriptions = new Subscription();\n this._expanded = false;\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Specifies whether the ExpansionPanel is expanded. The property supports two-way binding.\n * ([see example]({% slug interaction_expansionpanel %}#toc-setting-the-initial-state)).\n *\n * @default false\n */\n set expanded(value) {\n if (value === this.expanded) {\n return;\n }\n this._expanded = value;\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n else {\n this.addContentHiddenClass();\n }\n }\n get expanded() {\n return this._expanded;\n }\n get expandedClass() {\n return this.expanded && !this.disabled;\n }\n get focusClass() {\n return this.focused;\n }\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n if (this.focused) {\n this.focused = false;\n }\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n if (!this.focused) {\n this.focused = true;\n }\n }\n ngOnInit() {\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => { this.direction = rtl ? 'rtl' : 'ltr'; });\n }\n ngAfterViewInit() {\n this.initDomEvents();\n if (!this.expanded) {\n this.renderer.addClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n initDomEvents() {\n if (!this.hostElement) {\n return;\n }\n if (!this.disabled) {\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.hostElement.nativeElement;\n this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', this.keyDownHandler.bind(this)));\n });\n }\n }\n /**\n * @hidden\n */\n keyDownHandler(ev) {\n const isEnterOrSpace = ev.keyCode === Keys.Enter || ev.keyCode === Keys.Space;\n if (!isEnterOrSpace) {\n return;\n }\n if (hasClass(ev.target, 'k-expander')) {\n ev.preventDefault();\n this.ngZone.run(() => {\n this.onHeaderAction();\n });\n }\n }\n /**\n * @hidden\n */\n onHeaderClick(ev) {\n if (!isFocusable(ev.target) && !this.disabled) {\n this.onHeaderAction();\n }\n }\n /**\n * @hidden\n */\n onHeaderAction() {\n this.focused = true;\n const eventArgs = new ExpansionPanelActionEvent();\n eventArgs.action = this.expanded ? 'collapse' : 'expand';\n this.action.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.setExpanded(!this.expanded);\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n if (this.animation) {\n this.animateContent();\n return;\n }\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n }\n }\n /**\n * @hidden\n */\n get indicatorClasses() {\n if (this.expanded) {\n return this.collapseIcon ? this.collapseIcon : `k-icon k-i-arrow-chevron-up`;\n }\n else {\n return this.expandIcon ? this.expandIcon : `k-icon k-i-arrow-chevron-down`;\n }\n }\n /**\n * Toggles the visibility of the ExpansionPanel\n * ([see example]({% slug interaction_expansionpanel %}#toc-toggling-the-content)).\n *\n * @param expanded? - Boolean. Specifies, whether the ExpansionPanel will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n this.setExpanded(current);\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n if (this.animation) {\n this.animateContent();\n return;\n }\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n }\n setExpanded(value) {\n this._expanded = value;\n this.expandedChange.emit(value);\n }\n animateContent() {\n const duration = typeof this.animation === 'boolean' ? DEFAULT_DURATION : this.animation;\n const contentHeight = getComputedStyle(this.content.nativeElement).height;\n const animation = this.expanded ? expand(duration, contentHeight) : collapse(duration, contentHeight);\n const player = this.createPlayer(animation, this.content.nativeElement);\n this.animationEnd.pipe(take(1)).subscribe(() => {\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n });\n player.play();\n }\n createPlayer(animation, animatedElement) {\n const factory = this.builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n return player;\n }\n emitExpandCollapseEvent() {\n this[this.expanded ? 'expand' : 'collapse'].emit();\n }\n addContentHiddenClass() {\n this.renderer.addClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n removeContentHiddenClass() {\n this.renderer.removeClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n};\nExpansionPanelComponent.ɵfac = function ExpansionPanelComponent_Factory(t) { return new (t || ExpansionPanelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.AnimationBuilder)); };\nExpansionPanelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ExpansionPanelComponent, selectors: [[\"kendo-expansionpanel\"]], contentQueries: function ExpansionPanelComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ExpansionPanelTitleDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTemplate = _t.first);\n } }, viewQuery: function ExpansionPanelComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c19, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.content = _t.first);\n } }, hostVars: 12, hostBindings: function ExpansionPanelComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function ExpansionPanelComponent_blur_HostBindingHandler() { return ctx.onComponentBlur(); })(\"focus\", function ExpansionPanelComponent_focus_HostBindingHandler() { return ctx.onComponentFocus(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.tabindex)(\"dir\", ctx.direction)(\"aria-expanded\", ctx.expandedClass)(\"aria-disabled\", ctx.disabledClass);\n ɵngcc0.ɵɵclassProp(\"k-expander\", ctx.hostClass)(\"k-expanded\", ctx.expandedClass)(\"k-state-focus\", ctx.focusClass)(\"k-state-disabled\", ctx.disabledClass);\n } }, inputs: { title: \"title\", subtitle: \"subtitle\", disabled: \"disabled\", animation: \"animation\", expanded: \"expanded\", expandIcon: \"expandIcon\", collapseIcon: \"collapseIcon\" }, outputs: { expandedChange: \"expandedChange\", action: \"action\", expand: \"expand\", collapse: \"collapse\" }, exportAs: [\"kendoExpansionPanel\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.expansionpanel'\n }\n ])], ngContentSelectors: _c7, decls: 9, vars: 6, consts: [[3, \"click\"], [4, \"ngIf\"], [1, \"k-expander-indicator\"], [3, \"ngClass\"], [1, \"k-expander-content-wrapper\"], [\"content\", \"\"], [1, \"k-expander-content\"], [\"class\", \"k-expander-title\", 4, \"ngIf\"], [1, \"k-spacer\"], [\"class\", \"k-expander-sub-title\", 4, \"ngIf\"], [1, \"k-expander-title\"], [1, \"k-expander-sub-title\"], [3, \"ngTemplateOutlet\"]], template: function ExpansionPanelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function ExpansionPanelComponent_Template_div_click_0_listener($event) { return ctx.onHeaderClick($event); });\n ɵngcc0.ɵɵtemplate(1, ExpansionPanelComponent_ng_container_1_Template, 4, 2, \"ng-container\", 1);\n ɵngcc0.ɵɵtemplate(2, ExpansionPanelComponent_2_Template, 1, 1, null, 1);\n ɵngcc0.ɵɵelementStart(3, \"span\", 2);\n ɵngcc0.ɵɵelement(4, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"div\", 4, 5);\n ɵngcc0.ɵɵelementStart(7, \"div\", 6);\n ɵngcc0.ɵɵprojection(8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-expander-header\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.titleTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.titleTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.indicatorClasses);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", !ctx.expanded);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExpansionPanelComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExpansionPanelComponent.prototype, \"subtitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ExpansionPanelComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ExpansionPanelComponent.prototype, \"expanded\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExpansionPanelComponent.prototype, \"expandIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ExpansionPanelComponent.prototype, \"collapseIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ExpansionPanelComponent.prototype, \"animation\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ExpansionPanelComponent.prototype, \"expandedChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ExpansionPanelComponent.prototype, \"action\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ExpansionPanelComponent.prototype, \"expand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ExpansionPanelComponent.prototype, \"collapse\", void 0);\n__decorate([\n ContentChild(ExpansionPanelTitleDirective, { static: false }),\n __metadata(\"design:type\", ExpansionPanelTitleDirective)\n], ExpansionPanelComponent.prototype, \"titleTemplate\", void 0);\n__decorate([\n ViewChild('content', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], ExpansionPanelComponent.prototype, \"content\", void 0);\n__decorate([\n HostBinding('class.k-expander'),\n __metadata(\"design:type\", Boolean)\n], ExpansionPanelComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.aria-expanded'),\n HostBinding('class.k-expanded'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ExpansionPanelComponent.prototype, \"expandedClass\", null);\n__decorate([\n HostBinding('class.k-state-focus'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ExpansionPanelComponent.prototype, \"focusClass\", null);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ExpansionPanelComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], ExpansionPanelComponent.prototype, \"direction\", void 0);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number)\n], ExpansionPanelComponent.prototype, \"tabindex\", void 0);\n__decorate([\n HostListener('blur'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ExpansionPanelComponent.prototype, \"onComponentBlur\", null);\n__decorate([\n HostListener('focus'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ExpansionPanelComponent.prototype, \"onComponentFocus\", null);\nExpansionPanelComponent = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef,\n NgZone,\n LocalizationService,\n AnimationBuilder])\n], ExpansionPanelComponent);\n\n/**\n * @hidden\n */\nconst normalizeValue = (value) => {\n return value ? +value : undefined;\n};\n/**\n * @hidden\n */\nconst isRowItemPresent = (items) => {\n return items.some(item => isPresent(item.row));\n};\n/**\n * @hidden\n */\nconst propsChanged = (initialProps, newProps) => {\n for (let i = 0; i < initialProps.length; i++) {\n if (initialProps[i] !== newProps[i]) {\n return true;\n }\n }\n return false;\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.elementsFromPoint))) {\n return [event.target];\n }\n return document.elementsFromPoint(event.clientX, event.clientY)\n .filter(item => item.classList && (item.classList.contains('k-tilelayout-item') || item.classList.contains('k-layout-item-hint')));\n};\n/**\n * @hidden\n */\nconst setElementStyles = (renderer, elem, styles) => {\n const props = Object.keys(styles);\n props.forEach(p => {\n renderer.setStyle(elem, p, styles[p]);\n });\n};\n/**\n * @hidden\n */\nconst calculateCellFromPosition = (coordinates, tileLayoutElement, gap, cellSize, columns, rtl = false) => {\n const tileLayoutRect = tileLayoutElement.getBoundingClientRect();\n const totalRows = (tileLayoutRect.height - gap.rows) / (cellSize.height + gap.rows);\n const distanceFromTop = coordinates.y - tileLayoutRect.y;\n const distanceFromLeft = coordinates.x - tileLayoutRect.x;\n const distanceFromRight = tileLayoutRect.right - coordinates.x;\n const distanceToCellWidthRatio = Math.floor((rtl ? distanceFromRight : distanceFromLeft) / (gap.columns + cellSize.width));\n const cappedColumnPosition = Math.min(distanceToCellWidthRatio + 1, columns);\n const distanceToCellHeightRatio = Math.floor(distanceFromTop / (gap.rows + cellSize.height));\n const cappedRowPosition = Math.min(distanceToCellHeightRatio + 1, totalRows);\n const col = Math.max(cappedColumnPosition, 0);\n const row = Math.max(cappedRowPosition, 0);\n return {\n row, col\n };\n};\n\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_UNIDIRECTIONAL_SIZE = 9;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_BIDIRECTIONAL_SIZE = 25;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP = 5;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP = 18;\n/**\n * @hidden\n */\nconst DRAGGED_ZINDEX = 10;\n/**\n * @hidden\n */\nconst RESIZE_DIRECTIONS = ['ew', 'ns', 'nwse'];\n/**\n * @hidden\n */\nconst RTL_RESIZE_DIRECTIONS = ['ew', 'ns', 'nesw'];\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_DIMENSIONS = {\n // numeric values represent pixels\n ew: {\n width: RESIZE_HANDLE_UNIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP\n },\n ns: {\n height: RESIZE_HANDLE_UNIDIRECTIONAL_SIZE,\n overlapY: RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP\n },\n nwse: {\n width: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n height: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP,\n overlapY: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP\n },\n nesw: {\n width: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n height: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP,\n overlapY: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP\n }\n};\n/**\n * @hidden\n */\nconst OVERLAP_THRESHOLD = 0.3;\n/**\n * @hidden\n */\nconst REVERSE_OVERLAP_THRESHOLD = -0.7;\n/**\n * @hidden\n */\nconst HINT_BORDERS_HEIGHT = 2;\n\n/**\n * @hidden\n */\nclass PreventableEvent$2 {\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 `reorder` event. The event fires when the order or starting\n * positions of the items is changed via the UI. If you prevent the event, the change is canceled ([see example]({% slug reordering_tilelayout %}#toc-handling-the-reorder-event)).\n */\nclass TileLayoutReorderEvent extends PreventableEvent$2 {\n /**\n * Constructs the event arguments for the `reorder` event.\n * @param item - The TileLayoutItem being reordered.\n * @param items - The TileLayoutItem collection that holds the currently rendered items and their internal state.\n * @param newIndex - The new order index of the reordered item used to determine its positioning relative to the other items.\n * @param oldIndex - The initial order index of the reordered item used to determine its positioning relative to the other items.\n * @param newCol - The new start column of the reordered item.\n * @param oldCol - The initial start column of the reordered item.\n * @param newRow - The new start row of the reordered item.\n * @param oldRow - The initial start row of the reordered item.\n * @hidden\n */\n constructor(item, items, newIndex, oldIndex, newCol, oldCol, newRow, oldRow) {\n super();\n this.item = item;\n this.items = items;\n this.newIndex = newIndex;\n this.oldIndex = oldIndex;\n this.newCol = newCol;\n this.oldCol = oldCol;\n this.newRow = newRow;\n this.oldRow = oldRow;\n }\n}\n\n/**\n * Arguments for the `resize` event. The `resize` event fires when any item size\n * is changed from the UI. If you cancel the event, the change is prevented ([see example]({% slug resizing_tilelayout %}#toc-handling-the-resize-event)).\n */\nclass TileLayoutResizeEvent extends PreventableEvent$2 {\n /**\n * Constructs the event arguments for the `resize` event.\n * @param item - The TileLayoutItem being resized\n * @param items - The TileLayoutItem collection\n * @param newRowSpan - The new rowSpan of the resized item\n * @param oldRowSpan - The initial rowSpan of the resized item\n * @param newColSpan - The new colSpan of the resized item\n * @param oldColSpan - The initial colSpan of the resized item\n * @hidden\n */\n constructor(item, items, newRowSpan, oldRowSpan, newColSpan, oldColSpan) {\n super();\n this.item = item;\n this.items = items;\n this.newRowSpan = newRowSpan;\n this.oldRowSpan = oldRowSpan;\n this.newColSpan = newColSpan;\n this.oldColSpan = oldColSpan;\n }\n}\n\n/**\n * @hidden\n */\nlet TileLayoutDraggingService = class TileLayoutDraggingService {\n constructor(zone, renderer, localization) {\n this.zone = zone;\n this.renderer = renderer;\n this.localization = localization;\n this.reorderable = new BehaviorSubject(null);\n this.resizable = new BehaviorSubject(null);\n this.reorder = new Subject();\n this.resize = new Subject();\n this.lastDragCursorOffset = {\n x: 0,\n y: 0\n };\n this.localizationSubscription = this.localization.changes.subscribe(({ rtl }) => this.rtl = rtl);\n }\n get colStart() {\n return this.currentColStart;\n }\n get rowStart() {\n return this.currentRowStart;\n }\n get itemWrapper() {\n return this.draggedItemWrapper;\n }\n get order() {\n return this.targetOrder;\n }\n ngOnDestroy() {\n this.localizationSubscription.unsubscribe();\n }\n handlePress(originalEvent) {\n const resizing = !!originalEvent.target.classList.contains('k-resize-handle');\n const closestTile = closestInScope(originalEvent.target, el => el.classList.contains('k-tilelayout-item'), this.tileLayoutSettings.tileLayoutElement);\n const closestHeader = closestInScope(originalEvent.target, el => el.classList.contains('k-tilelayout-item-header'), this.tileLayoutSettings.tileLayoutElement);\n if (!closestTile) {\n return;\n }\n this.zone.run(() => {\n this.draggedItemWrapper = closestTile;\n this.draggedItem = this.tileLayoutSettings.items\n .find(item => item.order === +closestTile.style.order);\n });\n const reordering = !resizing && this.reorderable.getValue() && this.draggedItem.reorderable && closestHeader;\n if (!(reordering || resizing)) {\n return;\n }\n else {\n originalEvent.preventDefault();\n }\n this.zone.run(() => {\n this.reordering = reordering;\n this.resizing = resizing;\n });\n const tileRect = this.draggedItemWrapper.getBoundingClientRect();\n this.zone.run(() => {\n this.offset = {\n top: originalEvent.clientY - tileRect.top,\n left: originalEvent.clientX - tileRect.left,\n x: tileRect.x,\n y: tileRect.y,\n width: tileRect.width,\n height: tileRect.height\n };\n this.targetSize = {\n rowSpan: this.draggedItem.rowSpan,\n colSpan: this.draggedItem.colSpan\n };\n this.cellSize = {\n width: (tileRect.width - ((this.targetSize.colSpan - 1) * this.tileLayoutSettings.gap.columns)) / this.targetSize.colSpan,\n height: (tileRect.height - ((this.targetSize.rowSpan - 1) * this.tileLayoutSettings.gap.rows)) / this.targetSize.rowSpan\n };\n this.lastDragCursorOffset = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n });\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n left: tileRect.left + window.pageXOffset + 'px',\n top: tileRect.top + window.pageYOffset + 'px',\n width: tileRect.width + 'px',\n height: tileRect.height + 'px',\n zIndex: DRAGGED_ZINDEX\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n display: 'flex',\n height: (tileRect.height - HINT_BORDERS_HEIGHT) + 'px'\n });\n this.zone.run(() => this.targetOrder = this.draggedItem.order);\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n position: 'absolute'\n });\n if (this.reorderable.getValue() && !resizing) {\n this.zone.run(() => {\n this.currentColStart = this.draggedItem.colStart;\n this.currentRowStart = this.draggedItem.rowStart;\n });\n const headerEl = this.draggedItem.elem.nativeElement.querySelector('.k-tilelayout-item-header');\n this.renderer.addClass(headerEl, 'k-cursor-grabbing');\n }\n else if (this.resizable && resizing) {\n this.zone.run(() => {\n this.startingPoint = {\n top: originalEvent.clientY,\n left: originalEvent.clientX\n };\n this.currentResizingColSpan = this.draggedItem.colSpan;\n this.currentResizingRowSpan = this.draggedItem.rowSpan;\n if (this.draggedItem.col) {\n this.currentColStart = this.draggedItem.col.toString();\n }\n if (this.draggedItem.row) {\n this.currentRowStart = this.draggedItem.row.toString();\n }\n this.direction = originalEvent.target.classList[1];\n });\n }\n }\n handleDrag(originalEvent) {\n if (this.draggedItemWrapper) {\n if (this.reordering) {\n this.reorderItems(originalEvent);\n }\n else if (this.resizing) {\n this.resizeItem(originalEvent);\n }\n this.lastDragCursorOffset = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n }\n }\n handleRelease(originalEvent) {\n originalEvent.preventDefault();\n if (this.reordering) {\n const initialOrder = this.draggedItem.order;\n const initialCol = this.draggedItem.col;\n const initialRow = this.draggedItem.row;\n const targetCol = normalizeValue(this.currentColStart);\n const targetRow = normalizeValue(this.currentRowStart);\n if (propsChanged([this.targetOrder, targetCol, targetRow], [initialOrder, initialCol, initialRow])) {\n const reorderEvent = new TileLayoutReorderEvent(this.draggedItem, this.tileLayoutSettings.items, this.targetOrder, initialOrder, normalizeValue(this.currentColStart), initialCol, targetRow, initialRow);\n this.reorder.next(reorderEvent);\n if (!reorderEvent.isDefaultPrevented()) {\n if (this.targetOrder > initialOrder) {\n this.zone.run(() => {\n for (let i = initialOrder + 1; i <= this.targetOrder; i++) {\n this.tileLayoutSettings.items.find(item => item.order === i).order = i - 1;\n }\n });\n }\n else {\n this.zone.run(() => {\n for (let i = this.targetOrder; i < initialOrder; i++) {\n this.tileLayoutSettings.items.find(item => item.order === i).order = i + 1;\n }\n });\n }\n this.draggedItem.order = this.targetOrder;\n if (this.draggedItem.col) {\n this.draggedItem.col = +this.currentColStart;\n }\n if (this.draggedItem.row) {\n this.draggedItem.row = +this.currentRowStart;\n }\n }\n }\n this.tileLayoutSettings.tileLayoutElement.appendChild(this.tileLayoutSettings.hintElement);\n this.zone.run(() => this.cleanUp());\n }\n else if (!this.reordering && this.resizing) {\n const initialRowSpan = this.draggedItem.rowSpan;\n const initialColSpan = this.draggedItem.colSpan;\n const { targetColSpan, targetRowSpan } = isRowItemPresent(this.tileLayoutSettings.items) ?\n this.targetSpan() :\n { targetColSpan: this.currentResizingColSpan, targetRowSpan: this.currentResizingRowSpan };\n if (propsChanged([initialRowSpan, initialColSpan], [targetRowSpan, targetColSpan])) {\n const resizeEvent = new TileLayoutResizeEvent(this.draggedItem, this.tileLayoutSettings.items, targetRowSpan, initialRowSpan, targetColSpan, initialColSpan);\n this.resize.next(resizeEvent);\n if (!resizeEvent.isDefaultPrevented()) {\n this.draggedItem.colSpan = this.currentResizingColSpan;\n this.draggedItem.rowSpan = this.currentResizingRowSpan;\n }\n }\n this.zone.run(() => this.cleanUp());\n }\n }\n reorderItems(event) {\n const targets = getDropTarget(event);\n const closestTile = targets.find(t => t !== this.draggedItemWrapper);\n let tileOrder = closestTile ? +closestTile.style.order : +this.draggedItemWrapper.style.order;\n if (this.tileLayoutSettings.autoFlow !== 'none') {\n const deltaX = event.clientX - this.lastDragCursorOffset.x;\n const deltaY = event.clientY - this.lastDragCursorOffset.y;\n const directionX = deltaX > 0 ? 'right' : deltaX < 0 ? 'left' : undefined;\n const directionY = deltaY > 0 ? 'down' : deltaX < 0 ? 'up' : undefined;\n const rect = this.draggedItemWrapper.getBoundingClientRect();\n const horizontalGap = this.tileLayoutSettings.gap.columns;\n const verticalGap = this.tileLayoutSettings.gap.rows;\n if (directionX && this.draggedItem.col) {\n const { col } = calculateCellFromPosition({\n x: directionX === 'right' ? rect.right - horizontalGap : rect.left + horizontalGap,\n y: event.clientY\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetStartCol = this.getTargetCol(col, directionX);\n this.currentColStart = targetStartCol.toString();\n }\n if (directionY && this.draggedItem.row) {\n const { row } = calculateCellFromPosition({\n x: event.clientX,\n y: directionY === 'down' ? rect.bottom - verticalGap : rect.top + verticalGap\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetStartRow = this.getTargetRow(row, directionY);\n this.currentRowStart = targetStartRow.toString();\n }\n }\n const hintBefore = tileOrder < this.targetOrder;\n const hintAfter = tileOrder > this.targetOrder;\n this.zone.run(() => this.targetOrder = tileOrder);\n if (hintBefore) {\n this.tileLayoutSettings.tileLayoutElement\n .insertBefore(this.tileLayoutSettings.hintElement, this.tileLayoutSettings.tileLayoutElement.firstChild);\n }\n else if (hintAfter) {\n this.tileLayoutSettings.tileLayoutElement.appendChild(this.tileLayoutSettings.hintElement);\n }\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n top: (event.pageY - this.offset.top) + 'px',\n left: (event.pageX - this.offset.left) + 'px'\n });\n }\n resizeItem(event) {\n setElementStyles(this.renderer, this.tileLayoutSettings.tileLayoutElement, {\n cursor: this.direction.split('k-cursor-')[1]\n });\n const currentWidth = this.rtl ?\n this.offset.width + (this.offset.x - event.clientX) :\n this.offset.width + (event.clientX - this.startingPoint.left);\n const currentHeight = this.offset.height + (event.clientY - this.startingPoint.top);\n const hintRect = this.tileLayoutSettings.hintElement.getBoundingClientRect();\n const hintWidth = hintRect.width;\n const hintHeight = hintRect.height;\n const horizontalDragDirection = event.clientX - this.lastDragCursorOffset.x;\n const verticalDragDirection = event.clientY - this.lastDragCursorOffset.y;\n const startCol = this.draggedItem.col ? this.draggedItem.col : calculateCellFromPosition({\n x: this.rtl ? hintRect.right : hintRect.x,\n y: hintRect.y\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl).col;\n const maxWidth = (this.tileLayoutSettings.columns - startCol) * (this.cellSize.width + this.tileLayoutSettings.gap.columns) + this.cellSize.width;\n const resizeHorizontally = () => {\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n width: Math.min(Math.max(currentWidth, this.cellSize.width), maxWidth) + 'px'\n });\n if (this.rtl && currentWidth > this.cellSize.width) {\n const totalWidth = this.tileLayoutSettings.columns * (this.cellSize.width + this.tileLayoutSettings.gap.columns);\n const leftBoundary = this.tileLayoutSettings.tileLayoutElement.getBoundingClientRect().right - totalWidth;\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n left: Math.max(event.clientX, leftBoundary) + 'px'\n });\n }\n const deltaX = currentWidth - hintWidth;\n const { x, y, right } = this.draggedItem.elem.nativeElement.getBoundingClientRect();\n const { col } = calculateCellFromPosition({ x: (this.rtl ? right : x), y: y }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const resizedColSpan = col + this.currentResizingColSpan;\n const expandingCondition = this.rtl ? horizontalDragDirection < 0 : horizontalDragDirection > 0;\n const shrinkingCondition = this.rtl ? horizontalDragDirection > 0 : horizontalDragDirection < 0;\n if (deltaX > OVERLAP_THRESHOLD * this.cellSize.width &&\n expandingCondition &&\n resizedColSpan <= this.tileLayoutSettings.columns) {\n this.currentResizingColSpan++;\n }\n else if (this.currentResizingColSpan > 1 &&\n shrinkingCondition &&\n deltaX < REVERSE_OVERLAP_THRESHOLD * this.cellSize.width) {\n this.currentResizingColSpan--;\n }\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n gridColumnEnd: `span ${this.currentResizingColSpan}`\n });\n };\n const resizeVertically = () => {\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n height: Math.max(currentHeight, this.cellSize.height) + 'px'\n });\n const deltaY = currentHeight - hintHeight;\n if (deltaY > OVERLAP_THRESHOLD * this.cellSize.height && verticalDragDirection > 0) {\n this.currentResizingRowSpan++;\n }\n else if (this.currentResizingRowSpan > 1 &&\n verticalDragDirection < 0 && deltaY < REVERSE_OVERLAP_THRESHOLD * this.cellSize.height) {\n this.currentResizingRowSpan--;\n }\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n gridRowEnd: `span ${this.currentResizingRowSpan}`\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n height: `${this.calculateHintHeight()}px`\n });\n };\n if (this.direction.indexOf('ew') > -1) {\n resizeHorizontally();\n }\n else if (this.direction.indexOf('ns') > -1) {\n resizeVertically();\n }\n else {\n resizeHorizontally();\n resizeVertically();\n }\n }\n cleanUp() {\n this.targetOrder = this.currentResizingColSpan = this.currentColStart = this.currentResizingRowSpan = this.currentRowStart = undefined;\n this.resizing = this.reordering = false;\n this.direction = null;\n if (this.draggedItemWrapper) {\n const grabHandle = this.draggedItemWrapper.querySelector('.k-cursor-grab');\n if (grabHandle) {\n this.renderer.removeClass(grabHandle, 'k-cursor-grabbing');\n }\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n top: '',\n left: '',\n display: '',\n width: '',\n height: '',\n zIndex: '',\n position: ''\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n display: 'none',\n height: 'auto'\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.tileLayoutElement, {\n cursor: 'default'\n });\n this.draggedItemWrapper =\n this.offset =\n this.draggedItem =\n this.resizing =\n this.reordering =\n this.currentResizingColSpan =\n this.currentResizingRowSpan =\n this.startingPoint = undefined;\n this.lastDragCursorOffset = {\n x: 0,\n y: 0\n };\n }\n }\n targetSpan() {\n const itemRect = this.draggedItem.elem.nativeElement.getBoundingClientRect();\n const startingCell = calculateCellFromPosition({ x: this.rtl ? itemRect.right : itemRect.x, y: itemRect.y }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetEndCell = calculateCellFromPosition({\n x: this.rtl ? itemRect.x + OVERLAP_THRESHOLD * this.cellSize.width : itemRect.right - OVERLAP_THRESHOLD * this.cellSize.width,\n y: itemRect.bottom - OVERLAP_THRESHOLD * this.cellSize.height\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n return {\n targetColSpan: targetEndCell.col - startingCell.col + 1,\n targetRowSpan: targetEndCell.row - startingCell.row + 1\n };\n }\n getTargetCol(col, direction) {\n if (this.rtl) {\n return direction === 'left' ? col - this.draggedItem.colSpan + 1 : col;\n }\n return direction === 'right' ? col - this.draggedItem.colSpan + 1 : col;\n }\n getTargetRow(row, direction) {\n return direction === 'down' ? row - this.draggedItem.rowSpan + 1 : row;\n }\n calculateHintHeight() {\n const totalHintCellsHeight = this.currentResizingRowSpan * this.cellSize.height;\n const totalHintGapsHeight = (this.currentResizingRowSpan - 1) * this.tileLayoutSettings.gap.rows;\n const hintHeight = totalHintCellsHeight + totalHintGapsHeight - HINT_BORDERS_HEIGHT;\n return hintHeight;\n }\n};\nTileLayoutDraggingService.ɵfac = function TileLayoutDraggingService_Factory(t) { return new (t || TileLayoutDraggingService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc0.Renderer2), ɵngcc0.ɵɵinject(ɵngcc2.LocalizationService)); };\nTileLayoutDraggingService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TileLayoutDraggingService, factory: function (t) { return TileLayoutDraggingService.ɵfac(t); } });\nTileLayoutDraggingService = __decorate([ __metadata(\"design:paramtypes\", [NgZone,\n Renderer2,\n LocalizationService])\n], TileLayoutDraggingService);\n\n/**\n * Represents a tile item within the TileLayoutComponent.\n */\nlet TileLayoutItemComponent = class TileLayoutItemComponent {\n constructor(elem, renderer, localization, draggingService) {\n this.elem = elem;\n this.renderer = renderer;\n this.localization = localization;\n this.draggingService = draggingService;\n /**\n * Determines how many rows will the tile item span ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.rowSpan = 1;\n /**\n * Determines how many columns will the tile item span ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.colSpan = 1;\n /**\n * Determines whether the item can be reordered. By default all items are reorderable when the [reorderable]({% slug api_layout_tilelayoutcomponent %}#toc-reorderable) property of the TileLayoutComponent is set to `true` ([see example]({% slug reordering_tilelayout %}#toc-disable-reordering)).\n *\n * @default true\n */\n this.reorderable = true;\n /**\n * Determines whether the item can be resized. By default all items are resizable when the [resizable]({% slug api_layout_tilelayoutcomponent %}#resizable) property of the TileLayoutComponent is set to `true` ([see example]({% slug resizing_tilelayout %}#toc-disable-resizing)).\n * @default true\n */\n this.resizable = true;\n this.itemClass = true;\n this.subs = new Subscription();\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n }));\n this.subs.add(this.draggingService.resizable.subscribe(resizable => {\n this.resizeDirections = resizable && this.resizable ?\n this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;\n }));\n }\n /**\n * Determines the order of the tile items within the TileLayout.\n * If not set, the items will receive increasing sequential order in accordance with\n * their position in the DOM when initially rendered.\n */\n set order(value) {\n this._order = value;\n this.renderer.setStyle(this.elem.nativeElement, 'order', `${this._order}`);\n }\n get order() {\n return this._order;\n }\n get colEnd() {\n return `span ${this.colSpan}`;\n }\n get rowEnd() {\n return `span ${this.rowSpan}`;\n }\n get colStart() {\n return isPresent(this.col) ? this.col.toString() : undefined;\n }\n get rowStart() {\n return isPresent(this.row) ? this.row.toString() : undefined;\n }\n ngAfterViewInit() {\n this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {\n this.toggleCursorClass(reorderable && this.reorderable);\n }));\n }\n ngOnChanges(changes) {\n if (changes.reorderable && !changes.reorderable.firstChange) {\n this.toggleCursorClass(changes.reorderable.currentValue && this.draggingService.reorderable.getValue());\n }\n if (changes.resizable) {\n this.resizeDirections = this.resizable && this.draggingService.resizable.getValue() ?\n this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n toggleCursorClass(isReorderable) {\n const headerEl = this.elem.nativeElement.querySelector('.k-tilelayout-item-header');\n if (!headerEl) {\n return;\n }\n if (isReorderable) {\n this.renderer.addClass(headerEl, 'k-cursor-grab');\n }\n else {\n this.renderer.removeClass(headerEl, 'k-cursor-grab');\n }\n }\n};\nTileLayoutItemComponent.ɵfac = function TileLayoutItemComponent_Factory(t) { return new (t || TileLayoutItemComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(TileLayoutDraggingService)); };\nTileLayoutItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TileLayoutItemComponent, selectors: [[\"kendo-tilelayout-item\"]], hostVars: 12, hostBindings: function TileLayoutItemComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"grid-column-end\", ctx.colEnd)(\"grid-row-end\", ctx.rowEnd)(\"grid-column-start\", ctx.colStart)(\"grid-row-start\", ctx.rowStart);\n ɵngcc0.ɵɵclassProp(\"k-tilelayout-item\", ctx.itemClass)(\"k-card\", ctx.itemClass);\n } }, inputs: { rowSpan: \"rowSpan\", colSpan: \"colSpan\", reorderable: \"reorderable\", resizable: \"resizable\", order: \"order\", title: \"title\", col: \"col\", row: \"row\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c7, decls: 3, vars: 2, consts: [[4, \"ngIf\"], [1, \"k-card-title\"], [\"kendoTileLayoutResizeHandle\", \"\", 3, \"class\", \"rtl\", \"resizeDirection\", 4, \"ngFor\", \"ngForOf\"], [\"kendoTileLayoutResizeHandle\", \"\", 3, \"rtl\", \"resizeDirection\"]], template: function TileLayoutItemComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, TileLayoutItemComponent_kendo_tilelayout_item_header_0_Template, 3, 1, \"kendo-tilelayout-item-header\", 0);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵtemplate(2, TileLayoutItemComponent_ng_container_2_Template, 2, 1, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.resizable);\n } }, directives: function () { return [ɵngcc1.NgIf, TileLayoutItemHeaderComponent, ɵngcc1.NgForOf, TileLayoutResizeHandleDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TileLayoutItemComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TileLayoutItemComponent.prototype, \"rowSpan\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TileLayoutItemComponent.prototype, \"colSpan\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], TileLayoutItemComponent.prototype, \"order\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TileLayoutItemComponent.prototype, \"col\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TileLayoutItemComponent.prototype, \"row\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TileLayoutItemComponent.prototype, \"reorderable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TileLayoutItemComponent.prototype, \"resizable\", void 0);\n__decorate([\n HostBinding('class.k-tilelayout-item'),\n HostBinding('class.k-card'),\n __metadata(\"design:type\", Boolean)\n], TileLayoutItemComponent.prototype, \"itemClass\", void 0);\n__decorate([\n HostBinding('style.grid-column-end'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TileLayoutItemComponent.prototype, \"colEnd\", null);\n__decorate([\n HostBinding('style.grid-row-end'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TileLayoutItemComponent.prototype, \"rowEnd\", null);\n__decorate([\n HostBinding('style.grid-column-start'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TileLayoutItemComponent.prototype, \"colStart\", null);\n__decorate([\n HostBinding('style.grid-row-start'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TileLayoutItemComponent.prototype, \"rowStart\", null);\nTileLayoutItemComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n LocalizationService,\n TileLayoutDraggingService])\n], TileLayoutItemComponent);\n\nconst autoFlowClasses = {\n column: 'k-grid-flow-col',\n row: 'k-grid-flow-row',\n 'column-dense': 'k-grid-flow-col-dense',\n 'row-dense': 'k-grid-flow-row-dense'\n};\n/**\n * Represents the [Kendo UI TileLayout component for Angular]({% slug overview_tilelayout %})\n */\nlet TileLayoutComponent = class TileLayoutComponent {\n constructor(elem, renderer, localization, draggingService, zone) {\n this.elem = elem;\n this.renderer = renderer;\n this.localization = localization;\n this.draggingService = draggingService;\n this.zone = zone;\n /**\n * Defines the number of columns ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.columns = 1;\n /**\n * Determines the width of the columns. Numeric values are treated as pixels ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default '1fr'\n */\n this.columnWidth = '1fr';\n /**\n * Determines whether the reordering functionality will be enabled ([see example]({% slug reordering_tilelayout %})).\n * @default false\n */\n this.reorderable = false;\n /**\n * Determines whether the resizing functionality will be enabled ([see example]({% slug resizing_tilelayout %})).\n * @default false\n */\n this.resizable = false;\n /**\n * Determines the height of the rows. Numeric values are treated as pixels ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default '1fr'\n */\n this.rowHeight = '1fr';\n /**\n * Controls how the auto-placement algorithm works, specifying exactly how auto-placed items are flowed in the TileLayout ([see example]({% slug tiles_autoflow_tilelayout %})).\n * For further reference, check the [grid-auto-flow CSS article](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow).\n *\n * The possible values are:\n * * (Default) `column`\n * * `row`\n * * `row dense`\n * * `column dense`\n * * `none`\n *\n */\n this.autoFlow = 'column';\n /**\n * Fires when the user completes the reordering of the item ([see example]({% slug overview_tilelayout %}#toc-events)).\n * This event is preventable. If you cancel it, the item will not be reordered.\n */\n this.reorder = new EventEmitter();\n /**\n * Fires when the user completes the resizing of the item ([see example]({% slug overview_tilelayout %}#toc-events)).\n * This event is preventable. If you cancel it, the item will not be resized.\n */\n this.resize = new EventEmitter();\n this.hostClass = true;\n this.subs = new Subscription();\n this._gap = {\n rows: 16,\n columns: 16\n };\n validatePackage(packageMetadata);\n }\n /**\n * The numeric values which determine the spacing in pixels between the layout items horizontally and vertically.\n * Properties:\n * * rows - the vertical spacing. Numeric values are treated as pixels. Defaults to `16`.\n * * columns - the horizontal spacing. Numeric values are treated as pixels. Defaults to `16`.\n *\n * When bound to a single numeric value, it will be set to both `rows` and `columns` properties.\n */\n set gap(value) {\n this._gap = (typeof value === 'number') ? { rows: value, columns: value } : Object.assign(this._gap, value);\n }\n get gap() {\n return this._gap;\n }\n get gapStyle() {\n return `${this.gap.rows}px ${this.gap.columns}px`;\n }\n get currentColStart() {\n return this.draggingService.colStart;\n }\n get currentRowStart() {\n return this.draggingService.rowStart;\n }\n get draggedItemWrapper() {\n return this.draggingService.itemWrapper;\n }\n get targetOrder() {\n return this.draggingService.order;\n }\n ngOnInit() {\n this.applyColStyling();\n this.applyRowStyling();\n this.draggingService.reorderable.next(this.reorderable);\n this.draggingService.resizable.next(this.resizable);\n if (hasObservers(this.reorder)) {\n this.subs.add(this.draggingService.reorder.subscribe(e => this.reorder.emit(e)));\n }\n if (hasObservers(this.resize)) {\n this.subs.add(this.draggingService.resize.subscribe(e => this.resize.emit(e)));\n }\n this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {\n if (reorderable && !this.draggable) {\n this.initializeDraggable();\n }\n }));\n this.subs.add(this.draggingService.resizable.subscribe(resizable => {\n if (resizable && !this.draggable) {\n this.initializeDraggable();\n }\n }));\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n ngAfterViewInit() {\n this.draggingService.tileLayoutSettings = this.draggingServiceConfig();\n this.applyAutoFlow(null, autoFlowClasses[this.autoFlow]);\n this.items.changes.subscribe(() => {\n this.setItemsOrder();\n this.draggingService.tileLayoutSettings.items = this.items.toArray();\n });\n }\n ngAfterContentInit() {\n this.setItemsOrder();\n }\n ngOnChanges(changes) {\n if (changes.columns || changes.columnWidth) {\n this.applyColStyling();\n }\n if (changes.rowHeight) {\n this.applyRowStyling();\n }\n if (changes.reorderable) {\n this.draggingService.reorderable.next(changes.reorderable.currentValue);\n }\n if (changes.resizable) {\n this.draggingService.resizable.next(changes.resizable.currentValue);\n }\n if (changes.gap || changes.autoFlow || changes.columns) {\n this.draggingService.tileLayoutSettings = this.draggingServiceConfig();\n if (changes.autoFlow) {\n this.applyAutoFlow(autoFlowClasses[changes.autoFlow.previousValue] || '', autoFlowClasses[changes.autoFlow.currentValue]);\n }\n }\n }\n ngOnDestroy() {\n if (this.draggable) {\n this.draggable.destroy();\n }\n this.subs.unsubscribe();\n }\n handlePress({ originalEvent }) {\n this.draggingService.handlePress(originalEvent);\n }\n handleDrag({ originalEvent }) {\n this.draggingService.handleDrag(originalEvent);\n }\n handleRelease({ originalEvent }) {\n this.draggingService.handleRelease(originalEvent);\n }\n applyColStyling() {\n const colWidth = typeof this.columnWidth === 'number' ? `${this.columnWidth}px` : this.columnWidth;\n const gridTemplateColumnsStyle = `repeat(${this.columns}, ${colWidth})`;\n this.renderer.setStyle(this.elem.nativeElement, 'grid-template-columns', gridTemplateColumnsStyle);\n }\n applyRowStyling() {\n const rowHeight = typeof this.rowHeight === 'number' ? `${this.rowHeight}px` : this.rowHeight;\n const gridAutoRowsStyle = `${rowHeight}`;\n this.renderer.setStyle(this.elem.nativeElement, 'grid-auto-rows', gridAutoRowsStyle);\n }\n draggingServiceConfig() {\n return {\n tileLayoutElement: this.elem ? this.elem.nativeElement : undefined,\n hintElement: this.hint ? this.hint.nativeElement : undefined,\n gap: this.gap,\n columns: this.columns,\n autoFlow: this.autoFlow,\n items: this.items ? this.items.toArray() : []\n };\n }\n initializeDraggable() {\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.elem.nativeElement));\n }\n applyAutoFlow(classToRemove, classToAdd) {\n const element = this.elem.nativeElement;\n if (classToRemove) {\n this.renderer.removeClass(element, classToRemove);\n }\n if (this.autoFlow !== 'none' && isPresent(classToAdd)) {\n this.renderer.addClass(element, classToAdd);\n }\n }\n setItemsOrder() {\n this.items.forEach((item, index) => {\n if (!isPresent(item.order)) {\n item.order = index;\n }\n });\n }\n};\nTileLayoutComponent.ɵfac = function TileLayoutComponent_Factory(t) { return new (t || TileLayoutComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(TileLayoutDraggingService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nTileLayoutComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TileLayoutComponent, selectors: [[\"kendo-tilelayout\"]], contentQueries: function TileLayoutComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TileLayoutItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n } }, viewQuery: function TileLayoutComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c20, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.hint = _t.first);\n } }, hostVars: 9, hostBindings: function TileLayoutComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵstyleProp(\"gap\", ctx.gapStyle)(\"padding\", ctx.gapStyle);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClass)(\"k-tilelayout\", ctx.hostClass);\n } }, inputs: { columns: \"columns\", columnWidth: \"columnWidth\", reorderable: \"reorderable\", resizable: \"resizable\", rowHeight: \"rowHeight\", autoFlow: \"autoFlow\", gap: \"gap\" }, outputs: { reorder: \"reorder\", resize: \"resize\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n TileLayoutDraggingService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tilelayout.component'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c7, decls: 3, vars: 14, consts: [[1, \"k-layout-item-hint\", \"k-layout-item-hint-reorder\"], [\"hint\", \"\"]], template: function TileLayoutComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelement(1, \"div\", 0, 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"display\", \"none\")(\"order\", ctx.targetOrder)(\"grid-column-end\", ctx.draggedItemWrapper == null ? null : ctx.draggedItemWrapper.style.gridColumnEnd)(\"grid-row-end\", ctx.draggedItemWrapper == null ? null : ctx.draggedItemWrapper.style.gridRowEnd)(\"grid-column-start\", ctx.currentColStart)(\"grid-row-start\", ctx.currentRowStart)(\"z-index\", \"1\");\n } }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TileLayoutComponent.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TileLayoutComponent.prototype, \"columnWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TileLayoutComponent.prototype, \"gap\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TileLayoutComponent.prototype, \"reorderable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TileLayoutComponent.prototype, \"resizable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TileLayoutComponent.prototype, \"rowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TileLayoutComponent.prototype, \"autoFlow\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TileLayoutComponent.prototype, \"reorder\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TileLayoutComponent.prototype, \"resize\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-tilelayout'),\n __metadata(\"design:type\", Boolean)\n], TileLayoutComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('style.gap'),\n HostBinding('style.padding'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TileLayoutComponent.prototype, \"gapStyle\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TileLayoutComponent.prototype, \"direction\", void 0);\n__decorate([\n ContentChildren(TileLayoutItemComponent),\n __metadata(\"design:type\", QueryList)\n], TileLayoutComponent.prototype, \"items\", void 0);\n__decorate([\n ViewChild('hint', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], TileLayoutComponent.prototype, \"hint\", void 0);\nTileLayoutComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n LocalizationService,\n TileLayoutDraggingService,\n NgZone])\n], TileLayoutComponent);\n\n/**\n * Holds the main content of the TileLayoutItem component.\n */\nlet TileLayoutItemBodyComponent = class TileLayoutItemBodyComponent {\n /**\n * Holds the main content of the TileLayoutItem component.\n */\n constructor() {\n this.hostClass = true;\n this.minHeight = 0;\n }\n};\nTileLayoutItemBodyComponent.ɵfac = function TileLayoutItemBodyComponent_Factory(t) { return new (t || TileLayoutItemBodyComponent)(); };\nTileLayoutItemBodyComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TileLayoutItemBodyComponent, selectors: [[\"kendo-tilelayout-item-body\"]], hostVars: 6, hostBindings: function TileLayoutItemBodyComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"min-height\", ctx.minHeight);\n ɵngcc0.ɵɵclassProp(\"k-tilelayout-item-body\", ctx.hostClass)(\"k-card-body\", ctx.hostClass);\n } }, ngContentSelectors: _c7, decls: 1, vars: 0, template: function TileLayoutItemBodyComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-tilelayout-item-body'),\n HostBinding('class.k-card-body'),\n __metadata(\"design:type\", Boolean)\n], TileLayoutItemBodyComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('style.min-height'),\n __metadata(\"design:type\", Number)\n], TileLayoutItemBodyComponent.prototype, \"minHeight\", void 0);\n\n/**\n * Holds the content of the header section of the TileLayoutItem component.\n * This is the area which can be dragged to reorder the items if reordering is enabled for this item.\n */\nlet TileLayoutItemHeaderComponent = class TileLayoutItemHeaderComponent {\n constructor(draggingService) {\n this.draggingService = draggingService;\n this.hostClass = true;\n }\n get touchActionNone() {\n return this.draggingService.reorderable.getValue();\n }\n get touchActionAuto() {\n return !this.draggingService.reorderable.getValue();\n }\n};\nTileLayoutItemHeaderComponent.ɵfac = function TileLayoutItemHeaderComponent_Factory(t) { return new (t || TileLayoutItemHeaderComponent)(ɵngcc0.ɵɵdirectiveInject(TileLayoutDraggingService)); };\nTileLayoutItemHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TileLayoutItemHeaderComponent, selectors: [[\"kendo-tilelayout-item-header\"]], hostVars: 8, hostBindings: function TileLayoutItemHeaderComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-tilelayout-item-header\", ctx.hostClass)(\"k-card-header\", ctx.hostClass)(\"k-touch-action-none\", ctx.touchActionNone)(\"k-touch-action-auto\", ctx.touchActionAuto);\n } }, ngContentSelectors: _c7, decls: 1, vars: 0, template: function TileLayoutItemHeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-tilelayout-item-header'),\n HostBinding('class.k-card-header'),\n __metadata(\"design:type\", Boolean)\n], TileLayoutItemHeaderComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('class.k-touch-action-none'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TileLayoutItemHeaderComponent.prototype, \"touchActionNone\", null);\n__decorate([\n HostBinding('class.k-touch-action-auto'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TileLayoutItemHeaderComponent.prototype, \"touchActionAuto\", null);\nTileLayoutItemHeaderComponent = __decorate([ __metadata(\"design:paramtypes\", [TileLayoutDraggingService])\n], TileLayoutItemHeaderComponent);\n\nconst exportedModules = [\n AvatarComponent\n];\nconst declarations = [\n ...exportedModules\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Avatar component.\n */\nlet AvatarModule = class AvatarModule {\n};\nAvatarModule.ɵfac = function AvatarModule_Factory(t) { return new (t || AvatarModule)(); };\nAvatarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AvatarModule });\nAvatarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nconst cardDirectives = [\n CardTitleDirective,\n CardSubtitleDirective,\n CardSeparatorDirective,\n CardMediaDirective\n];\nconst exportedModules$1 = [\n CardComponent,\n CardHeaderComponent,\n CardBodyComponent,\n CardFooterComponent,\n CardActionsComponent,\n ...cardDirectives\n];\nconst declarations$1 = [...exportedModules$1];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Card component.\n */\nlet CardModule = class CardModule {\n};\nCardModule.ɵfac = function CardModule_Factory(t) { return new (t || CardModule)(); };\nCardModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CardModule });\nCardModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * @hidden\n */\nconst DRAWER_LINK_SELECTOR = '.k-drawer-link';\n/**\n * @hidden\n */\nconst ACTIVE_NESTED_LINK_SELECTOR = ':focus:not(.k-state-disabled) .k-drawer-link';\n/**\n * @hidden\n */\nconst nestedLink = (element, selector) => element.querySelector(selector);\n\n/**\n * @hidden\n */\nlet DrawerItemComponent = class DrawerItemComponent {\n constructor(drawer, element, renderer) {\n this.drawer = drawer;\n this.element = element;\n this.renderer = renderer;\n }\n get disabledClass() {\n return this.item.disabled;\n }\n get selectedClass() {\n return this.drawer.selectedIndices.indexOf(this.index) >= 0;\n }\n get label() {\n return this.item.text ? this.item.text : null;\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n const link = nestedLink(this.element.nativeElement, DRAWER_LINK_SELECTOR);\n if (link) {\n this.renderer.removeAttribute(link, 'tabindex');\n }\n }\n /**\n * @hidden\n */\n get iconClasses() {\n const classes = [];\n if (this.item.icon) {\n classes.push(`k-icon ${this.item.icon}`);\n }\n if (this.item.iconClass) {\n classes.push(`${this.item.iconClass}`);\n }\n return classes;\n }\n};\nDrawerItemComponent.ɵfac = function DrawerItemComponent_Factory(t) { return new (t || DrawerItemComponent)(ɵngcc0.ɵɵdirectiveInject(DrawerService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nDrawerItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DrawerItemComponent, selectors: [[\"\", \"kendoDrawerItem\", \"\"]], hostVars: 7, hostBindings: function DrawerItemComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-disabled\", ctx.disabledClass)(\"aria-selected\", ctx.selectedClass)(\"aria-label\", ctx.label);\n ɵngcc0.ɵɵclassProp(\"k-state-disabled\", ctx.disabledClass)(\"k-state-selected\", ctx.selectedClass);\n } }, inputs: { item: \"item\", index: \"index\", itemTemplate: \"itemTemplate\", mini: \"mini\", expanded: \"expanded\", disabled: \"disabled\", cssClass: \"cssClass\", cssStyle: \"cssStyle\" }, attrs: _c21, decls: 3, vars: 2, consts: [[4, \"ngIf\", \"ngIfElse\"], [\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [4, \"ngIf\"], [3, \"ngClass\"], [1, \"k-item-text\"]], template: function DrawerItemComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DrawerItemComponent_0_Template, 1, 4, null, 0);\n ɵngcc0.ɵɵtemplate(1, DrawerItemComponent_ng_template_1_Template, 2, 2, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n const _r1 = ɵngcc0.ɵɵreference(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.itemTemplate)(\"ngIfElse\", _r1);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DrawerItemComponent.prototype, \"item\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DrawerItemComponent.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], DrawerItemComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerItemComponent.prototype, \"mini\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerItemComponent.prototype, \"expanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerItemComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerItemComponent.prototype, \"cssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerItemComponent.prototype, \"cssStyle\", void 0);\n__decorate([\n HostBinding('attr.aria-disabled'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerItemComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('attr.aria-selected'),\n HostBinding('class.k-state-selected'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerItemComponent.prototype, \"selectedClass\", null);\n__decorate([\n HostBinding('attr.aria-label'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], DrawerItemComponent.prototype, \"label\", null);\nDrawerItemComponent = __decorate([ __metadata(\"design:paramtypes\", [DrawerService, ElementRef, Renderer2])\n], DrawerItemComponent);\n\n/**\n * @hidden\n */\nconst DRAWER_ITEM_INDEX = 'data-kendo-drawer-index';\n\n/**\n * @hidden\n */\nlet DrawerListComponent = class DrawerListComponent {\n constructor(drawerService, renderer, ngZone, changeDetector, element) {\n this.drawerService = drawerService;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.element = element;\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.initialSelection();\n this.initDomEvents();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n initialSelection() {\n /* Differentiates a user selected item */\n if (this.drawerService.selectedIndices.length === 0) {\n this.drawerService.initSelection();\n }\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n this.subscriptions.add(this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this)));\n this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', this.keyDownHandler.bind(this)));\n });\n }\n clickHandler(e) {\n const itemIdx = this.getDrawerItemIndex(e.target);\n const item = this.items[itemIdx];\n if (!item) {\n return;\n }\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n const args = {\n index: itemIdx,\n item: item,\n originalEvent: e\n };\n this.ngZone.run(() => {\n if (!this.drawerService.emit('select', args)) {\n this.drawerService.onSelect(itemIdx);\n this.changeDetector.detectChanges();\n }\n });\n }\n keyDownHandler(e) {\n const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;\n if (!isEnterOrSpace) {\n return;\n }\n this.clickHandler(e);\n const link = nestedLink(this.element.nativeElement, ACTIVE_NESTED_LINK_SELECTOR);\n if (link) {\n link.click();\n }\n return false;\n }\n getDrawerItemIndex(target) {\n const item = closestItem(target, DRAWER_ITEM_INDEX, this.element.nativeElement);\n if (item) {\n return itemIndex(item, DRAWER_ITEM_INDEX);\n }\n }\n};\nDrawerListComponent.ɵfac = function DrawerListComponent_Factory(t) { return new (t || DrawerListComponent)(ɵngcc0.ɵɵdirectiveInject(DrawerService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nDrawerListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DrawerListComponent, selectors: [[\"\", \"kendoDrawerList\", \"\"]], inputs: { items: \"items\", itemTemplate: \"itemTemplate\", mini: \"mini\", expanded: \"expanded\" }, attrs: _c22, decls: 1, vars: 1, consts: [[4, \"ngFor\", \"ngForOf\"], [\"kendoDrawerItem\", \"\", \"class\", \"k-drawer-item\", \"tabindex\", \"0\", 3, \"item\", \"index\", \"mini\", \"expanded\", \"itemTemplate\", \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"class\", \"k-drawer-item k-drawer-separator\", 3, \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"kendoDrawerItem\", \"\", \"tabindex\", \"0\", 1, \"k-drawer-item\", 3, \"item\", \"index\", \"mini\", \"expanded\", \"itemTemplate\", \"ngClass\", \"ngStyle\"], [1, \"k-drawer-item\", \"k-drawer-separator\", 3, \"ngClass\", \"ngStyle\"]], template: function DrawerListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DrawerListComponent_ng_container_0_Template, 3, 2, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.items);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, DrawerItemComponent, ɵngcc1.NgClass, ɵngcc1.NgStyle], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], DrawerListComponent.prototype, \"items\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], DrawerListComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerListComponent.prototype, \"mini\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DrawerListComponent.prototype, \"expanded\", void 0);\nDrawerListComponent = __decorate([ __metadata(\"design:paramtypes\", [DrawerService,\n Renderer2,\n NgZone,\n ChangeDetectorRef,\n ElementRef])\n], DrawerListComponent);\n\nconst templateDirectives = [\n DrawerTemplateDirective,\n DrawerHeaderTemplateDirective,\n DrawerFooterTemplateDirective,\n DrawerItemTemplateDirective\n];\nconst exportedModules$2 = [\n DrawerComponent,\n DrawerContainerComponent,\n DrawerContentComponent,\n ...templateDirectives\n];\nconst declarations$2 = [\n DrawerItemComponent,\n DrawerListComponent,\n ...exportedModules$2\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Drawer component.\n */\nlet DrawerModule = class DrawerModule {\n};\nDrawerModule.ɵfac = function DrawerModule_Factory(t) { return new (t || DrawerModule)(); };\nDrawerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DrawerModule });\nDrawerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nconst exportedModules$3 = [\n ExpansionPanelComponent,\n ExpansionPanelTitleDirective\n];\nconst declarations$3 = [\n ...exportedModules$3\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ExpansionPanel component.\n */\nlet ExpansionPanelModule = class ExpansionPanelModule {\n};\nExpansionPanelModule.ɵfac = function ExpansionPanelModule_Factory(t) { return new (t || ExpansionPanelModule)(); };\nExpansionPanelModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ExpansionPanelModule });\nExpansionPanelModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, EventsModule]] });\n\nconst exportedModules$4 = [\n PanelBarComponent,\n PanelBarItemComponent,\n PanelBarContentDirective,\n PanelBarItemTemplateDirective,\n PanelBarItemTitleDirective\n];\nconst declarations$4 = [\n ...exportedModules$4\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the PanelBar component.\n *\n * The module registers:\n * - `PanelBarComponent`—The `PanelBar` component class.\n * - `PanelBarItemComponent`—The `PanelBarItem` component class.\n * - `PanelBarContentComponent`—The `PanelBarContent` component class.\n * - `PanelBarItemTemplateDirective—The `PanelBarItemTemplate` directive.\n * - `PanelBarItemTitleDirective—The `PanelBarItemTitle` directive.\n */\nlet PanelBarModule = class PanelBarModule {\n};\nPanelBarModule.ɵfac = function PanelBarModule_Factory(t) { return new (t || PanelBarModule)(); };\nPanelBarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PanelBarModule });\nPanelBarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nconst stopPropagation = ({ originalEvent: event }) => {\n event.stopPropagation();\n event.preventDefault();\n};\nconst preventOnDblClick = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\nconst classFromObject = classes => Object.keys(classes).filter(c => classes[c]).join(' ');\nconst createMoveStream = (draggable) => mouseDown => draggable.kendoDrag\n .pipe(takeUntil(draggable.kendoRelease), map(({ pageX, pageY }) => ({\n originalX: mouseDown.pageX,\n originalY: mouseDown.pageY,\n pageX,\n pageY\n})));\n/**\n * @hidden\n */\nlet SplitterBarComponent = class SplitterBarComponent {\n constructor(draggable, splitter, localization) {\n this.draggable = draggable;\n this.splitter = splitter;\n this.localization = localization;\n this.orientation = 'horizontal';\n this.index = 0;\n this.ariaRole = 'separator';\n this.focused = false;\n this.subscriptions = new Subscription();\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n get tabIndex() {\n return this.splitter.isStatic(this.index) ? -1 : 0;\n }\n get hostClasses() {\n const isHorizontal = this.orientation === 'horizontal';\n const isDraggable = this.splitter.isDraggable(this.index);\n const isStatic = this.splitter.isStatic(this.index);\n return classFromObject({\n 'k-state-focused': this.focused,\n 'k-splitbar': true,\n 'k-splitbar-horizontal': isHorizontal,\n 'k-splitbar-vertical': !isHorizontal,\n 'k-splitbar-draggable-horizontal': isHorizontal && isDraggable,\n 'k-splitbar-draggable-vertical': !isHorizontal && isDraggable,\n 'k-splitbar-static-horizontal': isHorizontal && isStatic,\n 'k-splitbar-static-vertical': !isHorizontal && isStatic,\n 'k-touch-action-none': isDraggable\n });\n }\n get order() {\n return 2 * this.index + 1;\n }\n collapseAny() {\n if (this.expandLast) {\n this.toggleNext();\n }\n else {\n this.tryToggleNearest();\n }\n }\n onFocusIn() {\n this.focused = true;\n }\n onFocusOut() {\n this.focused = false;\n }\n onKeyDown(event) {\n const keyCode = event && event.keyCode;\n const isHorizontal = this.orientation === 'horizontal';\n const resize = delta => {\n event.preventDefault();\n const state$$1 = this.splitter.dragState(this.index);\n this.splitter.setSize(state$$1, delta);\n };\n if (keyCode === Keys.Enter) {\n event.preventDefault();\n this.collapseAny();\n }\n else if (isHorizontal && keyCode === Keys.ArrowLeft) {\n resize(-10);\n }\n else if (isHorizontal && keyCode === Keys.ArrowRight) {\n resize(10);\n }\n else if (!isHorizontal && keyCode === Keys.ArrowUp) {\n resize(-10);\n }\n else if (!isHorizontal && keyCode === Keys.ArrowDown) {\n resize(10);\n }\n }\n get expandLast() {\n const panes = this.splitter.panes;\n return panes.length === 2 && panes[1].collapsed;\n }\n ngOnInit() {\n let state$$1;\n const listener = this.draggable.kendoPress.pipe(tap(stopPropagation), filter(() => this.splitter.isDraggable(this.index)), tap(() => state$$1 = this.splitter.dragState(this.index)), tap(() => this.splitter.toggleContentOverlay(this.index, true)), switchMap(preventOnDblClick(this.draggable.kendoRelease)), switchMap(createMoveStream(this.draggable))).subscribe(({ pageX, pageY, originalX, originalY }) => {\n let delta;\n if (this.orientation === 'vertical') {\n delta = pageY - originalY;\n }\n else if (this.direction === 'rtl') {\n delta = originalX - pageX;\n }\n else {\n delta = pageX - originalX;\n }\n this.splitter.setSize(state$$1, delta);\n });\n this.subscriptions.add(listener);\n this.subscriptions.add(this.draggable.kendoRelease.subscribe(() => this.splitter.toggleContentOverlay(this.index, false)));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n togglePrevious() {\n this.splitter.tryToggle(this.index);\n }\n toggleNext() {\n this.splitter.tryToggle(this.index + 1);\n }\n previousArrowClass() {\n const pane = this.splitter.pane(this.index);\n const nextPane = this.splitter.pane(this.index + 1);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n return classFromObject({\n 'k-icon': true,\n 'k-hidden': !isCollapsible || nextPane.isHidden,\n 'k-collapse-prev': isCollapsible,\n 'k-i-arrow-60-left': isCollapsible && isHorizontal && !isCollapsed,\n 'k-i-arrow-60-right': isCollapsible && isHorizontal && isCollapsed,\n 'k-i-arrow-60-up': isCollapsible && !isHorizontal && !isCollapsed,\n 'k-i-arrow-60-down': isCollapsible && !isHorizontal && isCollapsed\n });\n }\n nextArrowClass() {\n const pane = this.splitter.pane(this.index + 1);\n const prevPane = this.splitter.pane(this.index);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n return classFromObject({\n 'k-icon': true,\n 'k-hidden': !isCollapsible || prevPane.isHidden,\n 'k-collapse-next': isCollapsible,\n 'k-i-arrow-60-right': isCollapsible && isHorizontal && !isCollapsed,\n 'k-i-arrow-60-left': isCollapsible && isHorizontal && isCollapsed,\n 'k-i-arrow-60-down': isCollapsible && !isHorizontal && !isCollapsed,\n 'k-i-arrow-60-up': isCollapsible && !isHorizontal && isCollapsed\n });\n }\n tryToggleNearest() {\n const prev = this.index;\n const next = this.index + 1;\n if (!this.splitter.tryToggle(prev)) {\n this.splitter.tryToggle(next);\n }\n }\n};\nSplitterBarComponent.ɵfac = function SplitterBarComponent_Factory(t) { return new (t || SplitterBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.DraggableDirective, 1), ɵngcc0.ɵɵdirectiveInject(SplitterService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nSplitterBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SplitterBarComponent, selectors: [[\"kendo-splitter-bar\"]], hostVars: 11, hostBindings: function SplitterBarComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"dblclick\", function SplitterBarComponent_dblclick_HostBindingHandler() { return ctx.collapseAny(); })(\"focusin\", function SplitterBarComponent_focusin_HostBindingHandler() { return ctx.onFocusIn(); })(\"focusout\", function SplitterBarComponent_focusout_HostBindingHandler() { return ctx.onFocusOut(); })(\"keydown\", function SplitterBarComponent_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-orientation\", ctx.orientation)(\"role\", ctx.ariaRole)(\"tabindex\", ctx.tabIndex);\n ɵngcc0.ɵɵclassMap(ctx.hostClasses);\n ɵngcc0.ɵɵstyleProp(\"-ms-flex-order\", ctx.order)(\"order\", ctx.order);\n ɵngcc0.ɵɵclassProp(\"k-state-focused\", ctx.focused);\n } }, inputs: { orientation: \"orientation\", index: \"index\" }, decls: 3, vars: 4, consts: [[3, \"click\"], [1, \"k-resize-handle\"]], template: function SplitterBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function SplitterBarComponent_Template_div_click_0_listener() { return ctx.togglePrevious(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function SplitterBarComponent_Template_div_click_2_listener() { return ctx.toggleNext(); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.previousArrowClass());\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassMap(ctx.nextArrowClass());\n } }, encapsulation: 2 });\n__decorate([\n Input(),\n HostBinding('attr.aria-orientation'),\n __metadata(\"design:type\", String)\n], SplitterBarComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], SplitterBarComponent.prototype, \"index\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], SplitterBarComponent.prototype, \"ariaRole\", void 0);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean)\n], SplitterBarComponent.prototype, \"focused\", void 0);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], SplitterBarComponent.prototype, \"tabIndex\", null);\n__decorate([\n HostBinding('class'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], SplitterBarComponent.prototype, \"hostClasses\", null);\n__decorate([\n HostBinding('style.-ms-flex-order'),\n HostBinding('style.order'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], SplitterBarComponent.prototype, \"order\", null);\n__decorate([\n HostListener('dblclick'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], SplitterBarComponent.prototype, \"collapseAny\", null);\n__decorate([\n HostListener('focusin'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], SplitterBarComponent.prototype, \"onFocusIn\", null);\n__decorate([\n HostListener('focusout'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], SplitterBarComponent.prototype, \"onFocusOut\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], SplitterBarComponent.prototype, \"onKeyDown\", null);\nSplitterBarComponent = __decorate([ __param(0, Host()),\n __metadata(\"design:paramtypes\", [DraggableDirective,\n SplitterService,\n LocalizationService])\n], SplitterBarComponent);\n\nconst exportedModules$5 = [\n SplitterComponent,\n SplitterPaneComponent\n];\nconst declarations$5 = [\n SplitterBarComponent,\n ...exportedModules$5\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Splitter component.\n *\n * The module registers:\n * - `SplitterComponent`—The `Splitter` component class.\n * - `SplitterPaneComponent`—The `SplitterPane` component class.\n */\nlet SplitterModule = class SplitterModule {\n};\nSplitterModule.ɵfac = function SplitterModule_Factory(t) { return new (t || SplitterModule)(); };\nSplitterModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SplitterModule });\nSplitterModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n DraggableModule\n ]] });\n\n/**\n * @hidden\n */\nlet StepperStepComponent = class StepperStepComponent {\n constructor(service, localization, ngZone) {\n this.service = service;\n this.localization = localization;\n this.ngZone = ngZone;\n this.isStepValid = undefined;\n this.shouldCheckValidity = undefined;\n validatePackage(packageMetadata);\n this.subs = this.service.focusedStepChange.subscribe(() => {\n this.onFocusedStepChange();\n });\n this.subs.add(this.service.triggerValidation.subscribe(() => {\n this.handleValidityChecks();\n }));\n }\n get errorStepClass() {\n if (isPresent(this.isStepValid)) {\n return !this.isStepValid;\n }\n return false;\n }\n get successStepClass() {\n if (isPresent(this.isStepValid)) {\n return this.isStepValid;\n }\n return false;\n }\n ngOnInit() {\n this.handleValidityChecks();\n }\n ngOnChanges(changes) {\n if (changes.current && !changes.current.firstChange) {\n this.handleValidityChecks();\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n onFocusedStepChange() {\n this.ngZone.runOutsideAngular(() => {\n if (this.index === this.service.focusedStep) {\n this.stepLink.nativeElement.focus();\n }\n });\n }\n onFocus() {\n this.service.focus(this.index);\n }\n get tabIndexAttr() {\n const active = this.service.focusedStep || this.service.currentStep;\n return this.index === active ? 0 : -1;\n }\n get indicatorIconClasses() {\n if (this.step.icon) {\n return `k-icon k-i-${this.step.icon}`;\n }\n if (this.step.iconClass) {\n return `${this.step.iconClass}`;\n }\n if (this.shouldCheckValidity) {\n return this.validationIconClasses;\n }\n }\n get showIndicatorIcon() {\n if (this.shouldCheckValidity) {\n return true;\n }\n if (this.step.icon || this.step.iconClass) {\n return true;\n }\n return false;\n }\n get showLabelIcon() {\n if (this.shouldCheckValidity) {\n if (this.type === 'label') {\n return true;\n }\n if (this.step.icon || this.step.iconClass) {\n return true;\n }\n }\n return false;\n }\n get showLabelText() {\n return this.type === 'label' || this.type === 'full';\n }\n get validationIconClasses() {\n if (this.isStepValid) {\n return this.successIcon ? `${this.successIcon}` : 'k-icon k-i-check';\n }\n else {\n return this.errorIcon ? `${this.errorIcon}` : 'k-icon k-i-warning';\n }\n }\n get indicatorText() {\n const text = this.step.text;\n return text ? text : this.index + 1;\n }\n updateStepValidity() {\n if (typeof this.step.isValid === 'boolean') {\n return this.step.isValid;\n }\n if (typeof this.step.isValid === 'function') {\n return this.step.isValid(this.index);\n }\n return undefined;\n }\n get showIndicator() {\n return this.type === 'indicator' || this.type === 'full';\n }\n get showLabel() {\n if (this.type === 'label' || this.type === 'full') {\n return true;\n }\n return this.step.optional;\n }\n get optionalText() {\n return this.localization.get('optional');\n }\n get transitionDuration() {\n return this.service.owner.animationDuration;\n }\n _shouldCheckValidity() {\n if (isPresent(this.step.validate)) {\n if (typeof this.step.validate === 'boolean') {\n return this.step.validate;\n }\n if (typeof this.step.validate === 'function') {\n return this.step.validate(this.index);\n }\n }\n return isPresent(this.step.isValid) && this.index < this.current;\n }\n handleValidityChecks() {\n this.isStepValid = undefined;\n this.shouldCheckValidity = this._shouldCheckValidity();\n if (this.shouldCheckValidity) {\n this.isStepValid = this.updateStepValidity();\n }\n }\n};\nStepperStepComponent.ɵfac = function StepperStepComponent_Factory(t) { return new (t || StepperStepComponent)(ɵngcc0.ɵɵdirectiveInject(StepperService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nStepperStepComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StepperStepComponent, selectors: [[\"\", \"kendoStepperStep\", \"\"]], viewQuery: function StepperStepComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c23, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.stepLink = _t.first);\n } }, hostVars: 4, hostBindings: function StepperStepComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-step-error\", ctx.errorStepClass)(\"k-step-success\", ctx.successStepClass);\n } }, inputs: { step: \"step\", index: \"index\", current: \"current\", type: \"type\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", indicatorTemplate: \"indicatorTemplate\", labelTemplate: \"labelTemplate\", stepTemplate: \"stepTemplate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c24, decls: 4, vars: 6, consts: [[\"href\", \"#\", 1, \"k-step-link\", 3, \"focus\"], [\"stepLink\", \"\"], [4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"k-step-indicator\", \"aria-hidden\", \"true\", 3, \"transition-duration\", 4, \"ngIf\"], [\"class\", \"k-step-label\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", 1, \"k-step-indicator\"], [\"class\", \"k-step-indicator-icon\", 3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"k-step-indicator-text\", 4, \"ngIf\"], [1, \"k-step-indicator-icon\", 3, \"ngClass\"], [1, \"k-step-indicator-text\"], [1, \"k-step-label\"], [\"class\", \"k-step-text\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", 3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"k-step-label-optional\", 4, \"ngIf\"], [1, \"k-step-text\"], [\"aria-hidden\", \"true\", 3, \"ngClass\"], [1, \"k-step-label-optional\"]], template: function StepperStepComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 0, 1);\n ɵngcc0.ɵɵlistener(\"focus\", function StepperStepComponent_Template_a_focus_0_listener() { return ctx.onFocus(); });\n ɵngcc0.ɵɵtemplate(2, StepperStepComponent_2_Template, 1, 5, null, 2);\n ɵngcc0.ɵɵtemplate(3, StepperStepComponent_ng_container_3_Template, 3, 2, \"ng-container\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.tabIndexAttr)(\"title\", ctx.step.label)(\"aria-disabled\", ctx.step.disabled)(\"aria-current\", ctx.index === ctx.current ? \"step\" : null);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.stepTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.stepTemplate);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], StepperStepComponent.prototype, \"step\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], StepperStepComponent.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], StepperStepComponent.prototype, \"current\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperStepComponent.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperStepComponent.prototype, \"successIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperStepComponent.prototype, \"errorIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], StepperStepComponent.prototype, \"indicatorTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], StepperStepComponent.prototype, \"labelTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], StepperStepComponent.prototype, \"stepTemplate\", void 0);\n__decorate([\n ViewChild('stepLink', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], StepperStepComponent.prototype, \"stepLink\", void 0);\n__decorate([\n HostBinding('class.k-step-error'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], StepperStepComponent.prototype, \"errorStepClass\", null);\n__decorate([\n HostBinding('class.k-step-success'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], StepperStepComponent.prototype, \"successStepClass\", null);\nStepperStepComponent = __decorate([ __metadata(\"design:paramtypes\", [StepperService,\n LocalizationService,\n NgZone])\n], StepperStepComponent);\n\n/**\n * @hidden\n */\nconst STEPPER_STEP_INDEX = 'data-kendo-stepper-index';\n\n/**\n * @hidden\n */\nlet StepperListComponent = class StepperListComponent {\n constructor(renderer, ngZone, service, element) {\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.service = service;\n this.element = element;\n }\n ngOnInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n if (this.domSubs) {\n this.domSubs();\n }\n }\n get maxStepWidth() {\n return this.maxStepDimension('width');\n }\n get maxStepHeight() {\n return this.maxStepDimension('height');\n }\n maxStepDimension(dimension) {\n if (dimension === 'width' && this.orientation === 'vertical') {\n return null;\n }\n if (dimension === 'height' && this.orientation === 'horizontal') {\n return null;\n }\n return 100 / this.steps.length;\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n const clickSubscription = this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this));\n const keydownSubscription = this.renderer.listen(nativeElement, 'keydown', (e) => {\n if (hasClass(e.target, 'k-step-link')) {\n this.service.keydown(e);\n }\n });\n this.domSubs = () => {\n clickSubscription();\n keydownSubscription();\n };\n });\n }\n clickHandler(e) {\n e.preventDefault();\n const stepIdx = this.getStepIndex(e.target);\n const step = this.steps[stepIdx];\n if (!step || step.disabled) {\n return;\n }\n if (stepIdx === this.currentStep) {\n this.service.focus(stepIdx);\n return;\n }\n if (this.linear && this.service.isPrevOrNextStep(stepIdx) === false) {\n return;\n }\n this.service.onActivate(stepIdx, e);\n }\n getStepIndex(target) {\n const step = closestItem(target, STEPPER_STEP_INDEX, this.element.nativeElement);\n if (step) {\n return itemIndex(step, STEPPER_STEP_INDEX);\n }\n }\n};\nStepperListComponent.ɵfac = function StepperListComponent_Factory(t) { return new (t || StepperListComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(StepperService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nStepperListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StepperListComponent, selectors: [[\"\", \"kendoStepperList\", \"\"]], inputs: { linear: \"linear\", stepType: \"stepType\", orientation: \"orientation\", currentStep: \"currentStep\", steps: \"steps\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", indicatorTemplate: \"indicatorTemplate\", labelTemplate: \"labelTemplate\", stepTemplate: \"stepTemplate\" }, attrs: _c26, decls: 1, vars: 1, consts: [[4, \"ngFor\", \"ngForOf\"], [\"kendoStepperStep\", \"\", 1, \"k-step\", 3, \"type\", \"step\", \"index\", \"current\", \"successIcon\", \"errorIcon\", \"indicatorTemplate\", \"labelTemplate\", \"stepTemplate\", \"ngClass\", \"ngStyle\"]], template: function StepperListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, StepperListComponent_ng_container_0_Template, 2, 28, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.steps);\n } }, directives: [ɵngcc1.NgForOf, StepperStepComponent, ɵngcc1.NgClass, ɵngcc1.NgStyle], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], StepperListComponent.prototype, \"linear\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperListComponent.prototype, \"stepType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperListComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], StepperListComponent.prototype, \"currentStep\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], StepperListComponent.prototype, \"steps\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperListComponent.prototype, \"successIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], StepperListComponent.prototype, \"errorIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], StepperListComponent.prototype, \"indicatorTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], StepperListComponent.prototype, \"labelTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], StepperListComponent.prototype, \"stepTemplate\", void 0);\nStepperListComponent = __decorate([ __metadata(\"design:paramtypes\", [Renderer2,\n NgZone,\n StepperService,\n ElementRef])\n], StepperListComponent);\n\nconst templateDirectives$1 = [\n StepperStepTemplateDirective,\n StepperLabelTemplateDirective,\n StepperIndicatorTemplateDirective\n];\nconst exportedModules$6 = [\n StepperComponent,\n StepperCustomMessagesComponent,\n ...templateDirectives$1\n];\nconst declarations$6 = [\n StepperStepComponent,\n StepperListComponent,\n LocalizedStepperMessagesDirective,\n ...exportedModules$6\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Stepper component.\n */\nlet StepperModule = class StepperModule {\n};\nStepperModule.ɵfac = function StepperModule_Factory(t) { return new (t || StepperModule)(); };\nStepperModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: StepperModule });\nStepperModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, ProgressBarModule]] });\n\n/**\n * @hidden\n */\nlet TabComponent = class TabComponent {\n constructor(localization, tabstripService) {\n this.localization = localization;\n this.tabstripService = tabstripService;\n this.hostClasses = true;\n }\n get activeClass() {\n return this.tab.selected;\n }\n get disabledClass() {\n return this.tab.disabled;\n }\n get focusedClass() {\n return this.tab.focused;\n }\n get tabIndex() {\n return this.tab.selected || this.tab.focused ? 0 : -1;\n }\n get tabClosable() {\n if (this.tab.closable !== undefined) {\n return this.tab.closable;\n }\n return this.tabStripClosable;\n }\n get closeButtonClasses() {\n if (isPresent(this.tab.closeIcon)) {\n return this.tab.closeIcon;\n }\n return this.tabStripCloseIcon;\n }\n get closeButtonTitle() {\n return this.localization.get('closeTitle');\n }\n closeTab(index) {\n this.tabstripService.onTabClose(this.tab, index);\n }\n};\nTabComponent.ɵfac = function TabComponent_Factory(t) { return new (t || TabComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(TabStripService)); };\nTabComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TabComponent, selectors: [[\"\", \"kendoTabStripTab\", \"\"]], hostVars: 13, hostBindings: function TabComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-selected\", ctx.activeClass)(\"aria-disabled\", ctx.disabledClass)(\"tabindex\", ctx.tabIndex);\n ɵngcc0.ɵɵclassProp(\"k-item\", ctx.hostClasses)(\"k-state-default\", ctx.hostClasses)(\"k-state-active\", ctx.activeClass)(\"k-state-disabled\", ctx.disabledClass)(\"k-state-focused\", ctx.focusedClass);\n } }, inputs: { tab: \"tab\", index: \"index\", tabStripClosable: \"tabStripClosable\", tabStripCloseIcon: \"tabStripCloseIcon\" }, attrs: _c27, decls: 3, vars: 3, consts: [[\"class\", \"k-link\", 4, \"ngIf\"], [\"class\", \"k-remove-tab k-button k-icon-button k-flat\", \"role\", \"button\", 3, \"title\", \"click\", 4, \"ngIf\"], [1, \"k-link\"], [3, \"ngTemplateOutlet\"], [\"role\", \"button\", 1, \"k-remove-tab\", \"k-button\", \"k-icon-button\", \"k-flat\", 3, \"title\", \"click\"], [3, \"ngClass\"]], template: function TabComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TabComponent_span_0_Template, 2, 1, \"span\", 0);\n ɵngcc0.ɵɵtemplate(1, TabComponent_span_1_Template, 2, 1, \"span\", 0);\n ɵngcc0.ɵɵtemplate(2, TabComponent_span_2_Template, 2, 3, \"span\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tab.tabTitle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.tab.tabTitle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.tabClosable);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", TabStripTabComponent)\n], TabComponent.prototype, \"tab\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TabComponent.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TabComponent.prototype, \"tabStripClosable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TabComponent.prototype, \"tabStripCloseIcon\", void 0);\n__decorate([\n HostBinding('class.k-item'),\n HostBinding('class.k-state-default'),\n __metadata(\"design:type\", Boolean)\n], TabComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.aria-selected]'),\n HostBinding('class.k-state-active'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabComponent.prototype, \"activeClass\", null);\n__decorate([\n HostBinding('attr.aria-disabled]'),\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabComponent.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TabComponent.prototype, \"focusedClass\", null);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], TabComponent.prototype, \"tabIndex\", null);\nTabComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n TabStripService])\n], TabComponent);\n\nconst exportedModules$7 = [\n TabStripComponent,\n TabStripTabComponent,\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabStripCustomMessagesComponent,\n LocalizedTabStripMessagesDirective\n];\nconst declarations$7 = [\n ...exportedModules$7,\n TabStripScrollableButtonComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TabStrip component.\n *\n * The module registers:\n * - `TabStripComponent`—The `TabStrip` component class.\n * - `TabStripTabComponent`—The `TabStripTab` component class.\n * - `TabContentDirective`—The tab content directive used on the `` tag.\n * - `TabTitleDirective`—The tab title directive used on the `` tag.\n */\nlet TabStripModule = class TabStripModule {\n};\nTabStripModule.ɵfac = function TabStripModule_Factory(t) { return new (t || TabStripModule)(); };\nTabStripModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TabStripModule });\nTabStripModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, ResizeSensorModule]] });\n\n/**\n * @hidden\n */\nlet TileLayoutResizeHandleDirective = class TileLayoutResizeHandleDirective {\n constructor(el, renderer) {\n this.el = el;\n this.renderer = renderer;\n }\n ngOnInit() {\n this.sizeHandle();\n }\n setHorizontalPosition(element) {\n this.renderer.setStyle(element, this.rtl ? 'left' : 'right', -RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].overlapX + 'px');\n }\n setBottom(element) {\n this.renderer.setStyle(element, 'bottom', -RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].overlapY + 'px');\n }\n sizeHandle() {\n const element = this.el.nativeElement;\n const handleWidth = RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].width ?\n `${RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].width}px` : '100%';\n const handleHeight = RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].height ?\n `${RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].height}px` : '100%';\n this.renderer.setStyle(element, 'width', handleWidth);\n this.renderer.setStyle(element, 'height', handleHeight);\n if (this.resizeDirection === 'ew') {\n this.setHorizontalPosition(element);\n }\n else if (this.resizeDirection === 'ns') {\n this.setBottom(element);\n }\n else {\n this.setHorizontalPosition(element);\n this.setBottom(element);\n }\n }\n};\nTileLayoutResizeHandleDirective.ɵfac = function TileLayoutResizeHandleDirective_Factory(t) { return new (t || TileLayoutResizeHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nTileLayoutResizeHandleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TileLayoutResizeHandleDirective, selectors: [[\"\", \"kendoTileLayoutResizeHandle\", \"\"]], inputs: { resizeDirection: \"resizeDirection\", rtl: \"rtl\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TileLayoutResizeHandleDirective.prototype, \"resizeDirection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TileLayoutResizeHandleDirective.prototype, \"rtl\", void 0);\nTileLayoutResizeHandleDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2])\n], TileLayoutResizeHandleDirective);\n\nconst exportedModules$8 = [\n TileLayoutComponent,\n TileLayoutItemComponent,\n TileLayoutItemHeaderComponent,\n TileLayoutItemBodyComponent,\n TileLayoutResizeHandleDirective\n];\nconst declarations$8 = [\n ...exportedModules$8\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TileLayout component.\n *\n * The module registers:\n * - `TileLayoutComponent`—The `TileLayoutComponent` component class.\n * - `TileLayoutItemComponent`—The `TileLayoutItemComponent` component class.\n * - `TileLayoutItemHeaderComponent`—The `TileLayoutItemHeaderComponent` component class.\n * - `TileLayoutItemBodyComponent`—The `TileLayoutItemBodyComponent` component class.\n */\nlet TileLayoutModule = class TileLayoutModule {\n};\nTileLayoutModule.ɵfac = function TileLayoutModule_Factory(t) { return new (t || TileLayoutModule)(); };\nTileLayoutModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TileLayoutModule });\nTileLayoutModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Layout components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Layout module\n * import { LayoutModule } from '@progress/kendo-angular-layout';\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, LayoutModule], // import Layout module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet LayoutModule = class LayoutModule {\n};\nLayoutModule.ɵfac = function LayoutModule_Factory(t) { return new (t || LayoutModule)(); };\nLayoutModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: LayoutModule });\nLayoutModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [AvatarModule, CardModule, DrawerModule, PanelBarModule, ExpansionPanelModule, SplitterModule, StepperModule, TabStripModule, TileLayoutModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanelBarService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanelBarContentDirective, [{\n type: Directive,\n args: [{\n selector: \"[kendoPanelBarContent]\"\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanelBarItemTitleDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoPanelBarItemTitle]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanelBarItemComponent, [{\n type: Component,\n args: [{\n animations: [\n trigger('toggle', [\n state('inactive', style({ display: 'none' })),\n transition('* => active', [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(200, style({ height: AUTO_STYLE }))\n ]),\n transition('active => *', [\n style({ overflow: 'hidden', height: AUTO_STYLE }),\n animate(200, style({ height: 0, display: 'none' }))\n ])\n ])\n ],\n exportAs: 'kendoPanelbarItem',\n selector: \"kendo-panelbar-item\",\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
    \n {{content}}\n \n `\n }]\n }], function () { return [{ type: PanelBarItemComponent, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: PanelBarService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { id: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], selected: [{\n type: Input\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], titleAttribute: [{\n type: HostBinding,\n args: ['attr.title']\n }], kItemClass: [{\n type: HostBinding,\n args: ['class.k-item']\n }], expanded: [{\n type: Input\n }], kStateDefaultClass: [{\n type: HostBinding,\n args: ['class.k-state-default']\n }], kStateDisabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], kStateExpandedClass: [{\n type: HostBinding,\n args: ['class.k-state-expanded']\n }], itemId: [{\n type: HostBinding,\n args: ['id']\n }], ariaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], ariaSelected: [{\n type: HostBinding,\n args: ['attr.aria-selected']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], headerClass: [{\n type: HostBinding,\n args: ['class.k-panelbar-header']\n }], childClass: [{\n type: HostBinding,\n args: ['class.k-panelbar-item']\n }], title: [{\n type: Input\n }], content: [{\n type: Input\n }], items: [{\n type: Input\n }], template: [{\n type: Input\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: false }]\n }], viewChildItems: [{\n type: ViewChildren,\n args: [PanelBarItemComponent_1]\n }], contentItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent_1]\n }], contentTemplate: [{\n type: ContentChildren,\n args: [PanelBarContentDirective, { descendants: false }]\n }], titleTemplates: [{\n type: ContentChildren,\n args: [PanelBarItemTitleDirective, { descendants: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanelBarItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoPanelBarItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanelBarComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoPanelbar',\n providers: [\n PanelBarService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.panelbar'\n }\n ],\n selector: 'kendo-panelbar',\n template: `\n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: PanelBarService }, { type: ɵngcc2.LocalizationService }]; }, { expandMode: [{\n type: Input\n }], selectable: [{\n type: Input\n }], animate: [{\n type: Input\n }], height: [{\n type: Input\n }], stateChange: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-panelbar']\n }], activeDescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], keepItemContent: [{\n type: Input\n }], items: [{\n type: Input\n }], hostHeight: [{\n type: HostBinding,\n args: ['style.height']\n }], overflow: [{\n type: HostBinding,\n args: ['style.overflow']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], \n /**\n * @hidden\n */\n onComponentClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], \n /**\n * @hidden\n */\n onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }], \n /**\n * @hidden\n */\n onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }], \n /**\n * @hidden\n */\n onComponentKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], template: [{\n type: ContentChild,\n args: [PanelBarItemTemplateDirective, { static: false }]\n }], contentItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent, { descendants: true }]\n }], contentChildItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent]\n }], viewChildItems: [{\n type: ViewChildren,\n args: [PanelBarItemComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SplitterPaneComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitterPane',\n selector: 'kendo-splitter-pane',\n template: `\n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { resizable: [{\n type: Input\n }], collapsible: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], collapsed: [{\n type: Input\n }], orientation: [{\n type: Input\n }], overlayContent: [{\n type: Input\n }], sizeChange: [{\n type: Output\n }], collapsedChange: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-pane']\n }], order: [{\n type: Input\n }], size: [{\n type: Input\n }], containsSplitter: [{\n type: Input\n }], staticPaneClass: [{\n type: HostBinding,\n args: ['class.k-pane-static']\n }], scrollablePaneClass: [{\n type: HostBinding,\n args: ['class.k-scrollable']\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SplitterService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SplitterComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitter',\n selector: 'kendo-splitter',\n providers: [\n SplitterService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.spliter'\n }\n ],\n template: `\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: SplitterService }, { type: ɵngcc2.LocalizationService }, { type: SplitterPaneComponent, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: Inject,\n args: [SplitterPaneComponent]\n }] }]; }, { orientation: [{\n type: Input\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], layoutChange: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-splitter']\n }, {\n type: HostBinding,\n args: ['class.k-splitter-flex']\n }], horizontalHostClasses: [{\n type: HostBinding,\n args: ['class.k-splitter-horizontal']\n }], verticalHostClasses: [{\n type: HostBinding,\n args: ['class.k-splitter-vertical']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], panes: [{\n type: ContentChildren,\n args: [SplitterPaneComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabContentDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTabContent]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabTitleDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTabTitle]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabStripTabComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoTabStripTab',\n selector: 'kendo-tabstrip-tab',\n template: ``\n }]\n }], function () { return []; }, { disabled: [{\n type: Input\n }], _tabContent: [{\n type: ContentChildren,\n args: [TabContentDirective]\n }], title: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], selected: [{\n type: Input\n }], closable: [{\n type: Input\n }], closeIcon: [{\n type: Input\n }], _tabTitleDirective: [{\n type: ContentChildren,\n args: [TabTitleDirective]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabStripService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabStripScrollableButtonComponent, [{\n type: Component,\n args: [{\n template: `\n \n `,\n selector: '[kendoTabStripScrollableButton]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ScrollService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { btnClasses: [{\n type: HostBinding,\n args: ['class.k-button']\n }, {\n type: HostBinding,\n args: ['class.k-button-icon']\n }, {\n type: HostBinding,\n args: ['class.k-flat']\n }], prev: [{\n type: Input\n }], disabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], prevClass: [{\n type: HostBinding,\n args: ['class.k-tabstrip-prev']\n }], nextClass: [{\n type: HostBinding,\n args: ['class.k-tabstrip-next']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabStripComponent, [{\n type: Component,\n args: [{\n animations: [\n trigger('state', [\n state('active', style({ opacity: 1 })),\n transition('* => active', [\n style({ opacity: 0 }),\n animate('400ms ease-in')\n ])\n ])\n ],\n providers: [\n TabStripService,\n ScrollService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tabstrip'\n }\n ],\n exportAs: 'kendoTabStrip',\n selector: 'kendo-tabstrip',\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 \n \n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: TabStripService }, { type: ScrollService }, { type: ɵngcc0.NgZone }]; }, { animate: [{\n type: Input\n }], tabPosition: [{\n type: Input\n }], keepTabContent: [{\n type: Input\n }], closable: [{\n type: Input\n }], closeIcon: [{\n type: Input\n }], tabSelect: [{\n type: Output\n }], tabClose: [{\n type: Output\n }], tabScroll: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-tabstrip']\n }, {\n type: HostBinding,\n args: ['class.k-floatwrap']\n }], tabs: [{\n type: ContentChildren,\n args: [TabStripTabComponent]\n }], height: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], tabsAtTop: [{\n type: HostBinding,\n args: ['class.k-tabstrip-top']\n }], tabsAtRight: [{\n type: HostBinding,\n args: ['class.k-tabstrip-right']\n }], tabsAtBottom: [{\n type: HostBinding,\n args: ['class.k-tabstrip-bottom']\n }], tabsAtLeft: [{\n type: HostBinding,\n args: ['class.k-tabstrip-left']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabStripScrollable: [{\n type: HostBinding,\n args: ['class.k-tabstrip-scrollable']\n }], tabAlignment: [{\n type: Input\n }], tablist: [{\n type: ViewChild,\n args: ['tablist', { static: false }]\n }], tabHeaderContainers: [{\n type: ViewChildren,\n args: ['tabHeaderContainer', { read: ElementRef }]\n }], prevScrollButton: [{\n type: ViewChild,\n args: ['prevScrollButton', { static: false }]\n }], nextScrollButton: [{\n type: ViewChild,\n args: ['nextScrollButton', { static: false }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedTabStripMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => LocalizedTabStripMessagesDirective_1)\n }\n ],\n selector: `[kendoTabStripLocalizedMessages]`\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabStripCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => TabStripCustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-tabstrip-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerHeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerHeaderTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerFooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerFooterTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoDrawer',\n providers: [\n LocalizationService,\n DrawerService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer'\n }\n ],\n selector: 'kendo-drawer',\n template: `\n
    \n \n \n \n\n
      \n
    \n\n \n \n
    \n\n \n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc4.AnimationBuilder }, { type: ɵngcc2.LocalizationService }, { type: DrawerService }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-drawer']\n }], mode: [{\n type: Input\n }], position: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }], width: [{\n type: Input\n }], miniWidth: [{\n type: Input\n }], autoCollapse: [{\n type: Input\n }], animation: [{\n type: Input\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], select: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], startPositionClass: [{\n type: HostBinding,\n args: ['class.k-drawer-start']\n }], endPositionClass: [{\n type: HostBinding,\n args: ['class.k-drawer-end']\n }], overlayTransofrmStyles: [{\n type: HostBinding,\n args: ['style.transform']\n }], flexStyles: [{\n type: HostBinding,\n args: ['style.flexBasis.px']\n }], items: [{\n type: Input\n }], drawerTemplate: [{\n type: ContentChild,\n args: [DrawerTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [DrawerFooterTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [DrawerHeaderTemplateDirective, { static: false }]\n }], itemTemplate: [{\n type: ContentChild,\n args: [DrawerItemTemplateDirective, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerContainerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-drawer-container',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer.container'\n }\n ],\n template: `\n
    \n \n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-drawer-container']\n }], overlayClass: [{\n type: HostBinding,\n args: ['class.k-drawer-overlay']\n }], miniClass: [{\n type: HostBinding,\n args: ['class.k-drawer-mini']\n }], pushClass: [{\n type: HostBinding,\n args: ['class.k-drawer-push']\n }], isExpandedClass: [{\n type: HostBinding,\n args: ['class.k-drawer-expanded']\n }], drawer: [{\n type: ContentChild,\n args: [DrawerComponent, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerContentComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-drawer-content',\n template: `\n \n `,\n encapsulation: ViewEncapsulation.None\n }]\n }], function () { return []; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-drawer-content']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperStepTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoStepperStepTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperLabelTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoStepperLabelTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperIndicatorTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoStepperIndicatorTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoStepper',\n providers: [\n LocalizationService,\n StepperService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stepper'\n }\n ],\n selector: 'kendo-stepper',\n template: `\n \n \n
      \n
    \n\n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc2.LocalizationService }, { type: StepperService }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-stepper']\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], stepType: [{\n type: Input\n }], linear: [{\n type: Input\n }], orientation: [{\n type: Input\n }], animation: [{\n type: Input\n }], activate: [{\n type: Output\n }], currentStepChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], linearClass: [{\n type: HostBinding,\n args: ['class.k-stepper-linear']\n }], currentStep: [{\n type: Input\n }], steps: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], stepTemplate: [{\n type: ContentChild,\n args: [StepperStepTemplateDirective, { static: true }]\n }], labelTemplate: [{\n type: ContentChild,\n args: [StepperLabelTemplateDirective, { static: true }]\n }], indicatorTemplate: [{\n type: ContentChild,\n args: [StepperIndicatorTemplateDirective, { static: true }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => StepperCustomMessagesComponent_1)\n }\n ],\n selector: 'kendo-stepper-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedStepperMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => LocalizedStepperMessagesDirective_1)\n }\n ],\n selector: `\n [kendoStepperLocalizedMessages]\n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AvatarComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-avatar',\n template: `\n \n\n \n
    \n
    \n\n \n {{ initials.substring(0, 2) }}\n \n\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-avatar']\n }], fill: [{\n type: Input\n }], border: [{\n type: Input\n }], solidClass: [{\n type: HostBinding,\n args: ['class.k-avatar-solid']\n }], outlineClass: [{\n type: HostBinding,\n args: ['class.k-avatar-outline']\n }], borderClass: [{\n type: HostBinding,\n args: ['class.k-avatar-bordered']\n }], flexBasis: [{\n type: HostBinding,\n args: ['style.flexBasis']\n }], shape: [{\n type: Input\n }], size: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], avatarWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], avatarHeight: [{\n type: HostBinding,\n args: ['style.height']\n }], iconClass: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], initials: [{\n type: Input\n }], icon: [{\n type: Input\n }], imageSrc: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-card',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.card.component'\n }\n ],\n template: `\n \n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-card']\n }], orientation: [{\n type: Input\n }], width: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], widthStyle: [{\n type: HostBinding,\n args: ['style.width']\n }], vertical: [{\n type: HostBinding,\n args: ['class.k-card-vertical']\n }], horizontal: [{\n type: HostBinding,\n args: ['class.k-card-horizontal']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-card-header',\n template: `\n \n `\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-header']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardBodyComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-card-body',\n template: `\n \n `\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-body']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardFooterComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-card-footer',\n template: `\n \n `\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-footer']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardActionsComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-card-actions',\n template: `\n \n\n \n \n \n\n \n `\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-actions']\n }], orientation: [{\n type: Input\n }], layout: [{\n type: Input\n }], action: [{\n type: Output\n }], stretchedClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-stretched']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-end']\n }], centerClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-center']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-vertical']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-horizontal']\n }], actions: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardSeparatorDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCardSeparator]'\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-separator']\n }], orientation: [{\n type: Input\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-separator-vertical']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-separator-horizontal']\n }], color: [{\n type: HostBinding,\n args: ['style.color']\n }, {\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardTitleDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCardTitle]'\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-title']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardSubtitleDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCardSubtitle]'\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-subtitle']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardMediaDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoCardMedia]'\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-media']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpansionPanelTitleDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoExpansionPanelTitleDirective]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpansionPanelComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoExpansionPanel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.expansionpanel'\n }\n ],\n selector: 'kendo-expansionpanel',\n template: `\n \n \n
    {{ title }}
    \n \n
    \n {{ subtitle }}\n
    \n
    \n \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc4.AnimationBuilder }]; }, { title: [{\n type: Input\n }], subtitle: [{\n type: Input\n }], disabled: [{\n type: Input\n }], animation: [{\n type: Input\n }], expandedChange: [{\n type: Output\n }], action: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-expander']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], expanded: [{\n type: Input\n }], expandedClass: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }, {\n type: HostBinding,\n args: ['class.k-expanded']\n }], focusClass: [{\n type: HostBinding,\n args: ['class.k-state-focus']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], \n /**\n * @hidden\n */\n onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }], \n /**\n * @hidden\n */\n onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }], expandIcon: [{\n type: Input\n }], collapseIcon: [{\n type: Input\n }], titleTemplate: [{\n type: ContentChild,\n args: [ExpansionPanelTitleDirective, { static: false }]\n }], content: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TileLayoutDraggingService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TileLayoutItemComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item',\n template: `\n \n
    {{ title }}
    \n
    \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.LocalizationService }, { type: TileLayoutDraggingService }]; }, { rowSpan: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], itemClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item']\n }, {\n type: HostBinding,\n args: ['class.k-card']\n }], order: [{\n type: Input\n }], colEnd: [{\n type: HostBinding,\n args: ['style.grid-column-end']\n }], rowEnd: [{\n type: HostBinding,\n args: ['style.grid-row-end']\n }], colStart: [{\n type: HostBinding,\n args: ['style.grid-column-start']\n }], rowStart: [{\n type: HostBinding,\n args: ['style.grid-row-start']\n }], title: [{\n type: Input\n }], col: [{\n type: Input\n }], row: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TileLayoutComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout',\n providers: [\n LocalizationService,\n TileLayoutDraggingService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tilelayout.component'\n }\n ],\n template: `\n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.LocalizationService }, { type: TileLayoutDraggingService }, { type: ɵngcc0.NgZone }]; }, { columns: [{\n type: Input\n }], columnWidth: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], autoFlow: [{\n type: Input\n }], reorder: [{\n type: Output\n }], resize: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-tilelayout']\n }], gap: [{\n type: Input\n }], gapStyle: [{\n type: HostBinding,\n args: ['style.gap']\n }, {\n type: HostBinding,\n args: ['style.padding']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], items: [{\n type: ContentChildren,\n args: [TileLayoutItemComponent]\n }], hint: [{\n type: ViewChild,\n args: ['hint', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TileLayoutItemBodyComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item-body',\n template: `\n \n `\n }]\n }], function () { return []; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item-body']\n }, {\n type: HostBinding,\n args: ['class.k-card-body']\n }], minHeight: [{\n type: HostBinding,\n args: ['style.min-height']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TileLayoutItemHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item-header',\n template: `\n \n `\n }]\n }], function () { return [{ type: TileLayoutDraggingService }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item-header']\n }, {\n type: HostBinding,\n args: ['class.k-card-header']\n }], touchActionNone: [{\n type: HostBinding,\n args: ['class.k-touch-action-none']\n }], touchActionAuto: [{\n type: HostBinding,\n args: ['class.k-touch-action-auto']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AvatarModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AvatarModule, { declarations: function () { return [AvatarComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [AvatarComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CardModule, { declarations: function () { return [CardComponent, CardHeaderComponent, CardBodyComponent, CardFooterComponent, CardActionsComponent, CardTitleDirective, CardSubtitleDirective, CardSeparatorDirective, CardMediaDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [CardComponent, CardHeaderComponent, CardBodyComponent, CardFooterComponent, CardActionsComponent, CardTitleDirective, CardSubtitleDirective, CardSeparatorDirective, CardMediaDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerItemComponent, [{\n type: Component,\n args: [{\n selector: '[kendoDrawerItem]',\n template: `\n \n \n\n \n \n \n {{ item.text }}\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: DrawerService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], selectedClass: [{\n type: HostBinding,\n args: ['attr.aria-selected']\n }, {\n type: HostBinding,\n args: ['class.k-state-selected']\n }], label: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], item: [{\n type: Input\n }], index: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerListComponent, [{\n type: Component,\n args: [{\n selector: '[kendoDrawerList]',\n template: `\n \n
  • \n
  • \n\n
  • \n  \n
  • \n
    \n `\n }]\n }], function () { return [{ type: DrawerService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { items: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DrawerModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$2],\n exports: [exportedModules$2],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DrawerModule, { declarations: function () { return [DrawerItemComponent, DrawerListComponent, DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerTemplateDirective, DrawerHeaderTemplateDirective, DrawerFooterTemplateDirective, DrawerItemTemplateDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerTemplateDirective, DrawerHeaderTemplateDirective, DrawerFooterTemplateDirective, DrawerItemTemplateDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpansionPanelModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$3],\n exports: [exportedModules$3],\n imports: [CommonModule, EventsModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ExpansionPanelModule, { declarations: function () { return [ExpansionPanelComponent, ExpansionPanelTitleDirective]; }, imports: function () { return [CommonModule, EventsModule]; }, exports: function () { return [ExpansionPanelComponent, ExpansionPanelTitleDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PanelBarModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$4],\n exports: [exportedModules$4],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PanelBarModule, { declarations: function () { return [PanelBarComponent, PanelBarItemComponent, PanelBarContentDirective, PanelBarItemTemplateDirective, PanelBarItemTitleDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [PanelBarComponent, PanelBarItemComponent, PanelBarContentDirective, PanelBarItemTemplateDirective, PanelBarItemTitleDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SplitterBarComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-splitter-bar',\n template: `\n
    \n
    \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc3.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: SplitterService }, { type: ɵngcc2.LocalizationService }]; }, { orientation: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['attr.aria-orientation']\n }], index: [{\n type: Input\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], focused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class']\n }], order: [{\n type: HostBinding,\n args: ['style.-ms-flex-order']\n }, {\n type: HostBinding,\n args: ['style.order']\n }], collapseAny: [{\n type: HostListener,\n args: ['dblclick']\n }], onFocusIn: [{\n type: HostListener,\n args: ['focusin']\n }], onFocusOut: [{\n type: HostListener,\n args: ['focusout']\n }], onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SplitterModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$5],\n exports: [exportedModules$5],\n imports: [\n CommonModule,\n DraggableModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SplitterModule, { declarations: function () { return [SplitterBarComponent, SplitterComponent, SplitterPaneComponent]; }, imports: function () { return [CommonModule,\n DraggableModule]; }, exports: function () { return [SplitterComponent, SplitterPaneComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperStepComponent, [{\n type: Component,\n args: [{\n selector: '[kendoStepperStep]',\n template: `\n \n \n \n\n \n \n\n \n \n \n\n \n {{ step.label }}\n \n ({{optionalText}})\n \n \n \n \n `\n }]\n }], function () { return [{ type: StepperService }, { type: ɵngcc2.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { errorStepClass: [{\n type: HostBinding,\n args: ['class.k-step-error']\n }], successStepClass: [{\n type: HostBinding,\n args: ['class.k-step-success']\n }], step: [{\n type: Input\n }], index: [{\n type: Input\n }], current: [{\n type: Input\n }], type: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], indicatorTemplate: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], stepTemplate: [{\n type: Input\n }], stepLink: [{\n type: ViewChild,\n args: ['stepLink', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperListComponent, [{\n type: Component,\n args: [{\n selector: '[kendoStepperList]',\n template: `\n \n
  • \n
  • \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: StepperService }, { type: ɵngcc0.ElementRef }]; }, { linear: [{\n type: Input\n }], stepType: [{\n type: Input\n }], orientation: [{\n type: Input\n }], currentStep: [{\n type: Input\n }], steps: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], indicatorTemplate: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], stepTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StepperModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$6],\n exports: [exportedModules$6],\n imports: [CommonModule, ProgressBarModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(StepperModule, { declarations: function () { return [StepperStepComponent, StepperListComponent, LocalizedStepperMessagesDirective, StepperComponent, StepperCustomMessagesComponent, StepperStepTemplateDirective, StepperLabelTemplateDirective, StepperIndicatorTemplateDirective]; }, imports: function () { return [CommonModule, ProgressBarModule]; }, exports: function () { return [StepperComponent, StepperCustomMessagesComponent, StepperStepTemplateDirective, StepperLabelTemplateDirective, StepperIndicatorTemplateDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabComponent, [{\n type: Component,\n args: [{\n selector: '[kendoTabStripTab]',\n template: `\n {{ tab.title }}\n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }, { type: TabStripService }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-item']\n }, {\n type: HostBinding,\n args: ['class.k-state-default']\n }], activeClass: [{\n type: HostBinding,\n args: ['attr.aria-selected]']\n }, {\n type: HostBinding,\n args: ['class.k-state-active']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled]']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], tab: [{\n type: Input\n }], index: [{\n type: Input\n }], tabStripClosable: [{\n type: Input\n }], tabStripCloseIcon: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TabStripModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$7],\n exports: [exportedModules$7],\n imports: [CommonModule, ResizeSensorModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TabStripModule, { declarations: function () { return [TabStripComponent, TabStripTabComponent, TabContentDirective, TabTitleDirective, TabComponent, TabStripCustomMessagesComponent, LocalizedTabStripMessagesDirective, TabStripScrollableButtonComponent]; }, imports: function () { return [CommonModule, ResizeSensorModule]; }, exports: function () { return [TabStripComponent, TabStripTabComponent, TabContentDirective, TabTitleDirective, TabComponent, TabStripCustomMessagesComponent, LocalizedTabStripMessagesDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TileLayoutResizeHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTileLayoutResizeHandle]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { resizeDirection: [{\n type: Input\n }], rtl: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TileLayoutModule, [{\n type: NgModule,\n args: [{\n declarations: [declarations$8],\n exports: [exportedModules$8],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TileLayoutModule, { declarations: function () { return [TileLayoutComponent, TileLayoutItemComponent, TileLayoutItemHeaderComponent, TileLayoutItemBodyComponent, TileLayoutResizeHandleDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [TileLayoutComponent, TileLayoutItemComponent, TileLayoutItemHeaderComponent, TileLayoutItemBodyComponent, TileLayoutResizeHandleDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayoutModule, [{\n type: NgModule,\n args: [{\n exports: [\n AvatarModule,\n CardModule,\n DrawerModule,\n PanelBarModule,\n ExpansionPanelModule,\n SplitterModule,\n StepperModule,\n TabStripModule,\n TileLayoutModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LayoutModule, { exports: [AvatarModule, CardModule, DrawerModule, PanelBarModule, ExpansionPanelModule, SplitterModule, StepperModule, TabStripModule, TileLayoutModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PreventableEvent$1 as PreventableEvent, DrawerService, DrawerItemComponent, DrawerListComponent, DRAWER_ITEM_INDEX, PanelBarService, SplitterBarComponent, SplitterService, StepperListComponent, StepperMessages, STEPPER_STEP_INDEX, StepperStepComponent, StepperService, TabStripMessages, TabComponent, TabStripScrollableButtonComponent, ScrollService, TabStripService, TileLayoutDraggingService, PreventableEvent$2 as PreventableEvent$1, TileLayoutResizeHandleDirective, PanelBarComponent, PanelBarItemComponent, PanelBarContentDirective, PanelBarItemTemplateDirective, PanelBarItemTitleDirective, PanelBarExpandMode, SplitterComponent, SplitterPaneComponent, TabStripComponent, TabStripTabComponent, TabContentDirective, TabTitleDirective, LocalizedTabStripMessagesDirective, TabStripCustomMessagesComponent, DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerSelectEvent, StepperComponent, StepperActivateEvent, StepperCustomMessagesComponent, LocalizedStepperMessagesDirective, AvatarComponent, CardComponent, CardHeaderComponent, CardBodyComponent, CardFooterComponent, CardActionsComponent, CardSeparatorDirective, CardTitleDirective, CardSubtitleDirective, CardMediaDirective, CardAction, ExpansionPanelComponent, ExpansionPanelTitleDirective, ExpansionPanelActionEvent, TileLayoutComponent, TileLayoutItemComponent, TileLayoutItemBodyComponent, TileLayoutItemHeaderComponent, TileLayoutReorderEvent, TileLayoutResizeEvent, AvatarModule, CardModule, DrawerModule, LayoutModule, PanelBarModule, SplitterModule, StepperModule, TabStripModule, ExpansionPanelModule, TileLayoutModule, TabCloseEvent, SelectEvent, DrawerTemplateDirective, DrawerItemTemplateDirective, DrawerHeaderTemplateDirective, DrawerFooterTemplateDirective, StepperIndicatorTemplateDirective, StepperLabelTemplateDirective, StepperStepTemplateDirective };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { Injectable, NgZone, EventEmitter, Directive, Optional, TemplateRef, Input, ContentChildren, QueryList, Component, Output, HostBinding, forwardRef, Renderer2, ElementRef, ViewChild, ChangeDetectorRef, isDevMode, NgModule, ViewContainerRef, ContentChild } from '@angular/core';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { hasObservers, isDocumentAvailable, Keys } from '@progress/kendo-angular-common';\nimport { PopupService, POPUP_CONTAINER, PopupModule } from '@progress/kendo-angular-popup';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@progress/kendo-angular-popup';\n\nconst _c0 = [\"kendoMenuList\", \"\"];\nfunction ListComponent_ng_container_0_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"li\", 3);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n const idx_r2 = ctx_r5.index;\n const item_r1 = ctx_r5.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-first\", idx_r2 === 0)(\"k-last\", idx_r2 === ctx_r3.items.length - 1)(\"k-state-disabled\", item_r1.disabled);\n ɵngcc0.ɵɵproperty(\"item\", item_r1)(\"level\", ctx_r3.level)(\"vertical\", ctx_r3.vertical)(\"animate\", ctx_r3.animate)(\"rtl\", ctx_r3.rtl)(\"itemTemplate\", ctx_r3.itemTemplate)(\"itemLinkTemplate\", ctx_r3.itemLinkTemplate)(\"openOnClick\", ctx_r3.openOnClick)(\"index\", ctx_r3.hierarchyIndex(idx_r2))(\"siblingIndex\", idx_r2)(\"ngClass\", item_r1.cssClass)(\"ngStyle\", item_r1.cssStyle);\n ɵngcc0.ɵɵattribute(\"data-kendo-menu-index\", ctx_r3.hierarchyIndex(idx_r2));\n} }\nfunction ListComponent_ng_container_0_li_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 4);\n ɵngcc0.ɵɵtext(1, \" \\u00A0 \");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"ngClass\", item_r1.cssClass)(\"ngStyle\", item_r1.cssStyle);\n} }\nfunction ListComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, ListComponent_ng_container_0_li_1_Template, 1, 19, \"li\", 1);\n ɵngcc0.ɵɵtemplate(2, ListComponent_ng_container_0_li_2_Template, 2, 2, \"li\", 2);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !item_r1.separator);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", item_r1.separator);\n} }\nconst _c1 = [\"link\"];\nconst _c2 = [\"popupTemplate\"];\nconst _c3 = [\"kendoMenuItem\", \"\"];\nfunction ItemComponent_span_0_ng_template_2_Template(rf, ctx) { }\nfunction ItemComponent_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6, 7);\n ɵngcc0.ɵɵtemplate(2, ItemComponent_span_0_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n const _r6 = ɵngcc0.ɵɵreference(7);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r0.opened);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r6);\n} }\nfunction ItemComponent_a_1_ng_template_2_Template(rf, ctx) { }\nfunction ItemComponent_a_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 9, 7);\n ɵngcc0.ɵɵtemplate(2, ItemComponent_a_1_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n const _r6 = ɵngcc0.ɵɵreference(7);\n ɵngcc0.ɵɵclassProp(\"k-state-active\", ctx_r1.opened);\n ɵngcc0.ɵɵattribute(\"href\", ctx_r1.item.url, ɵngcc0.ɵɵsanitizeUrl);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r6);\n} }\nfunction ItemComponent_2_ng_template_0_Template(rf, ctx) { }\nconst _c4 = function (a0, a1) { return { item: a0, index: a1 }; };\nfunction ItemComponent_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ItemComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.linkTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c4, ctx_r2.item, ctx_r2.index));\n} }\nfunction ItemComponent_div_3_ng_template_1_Template(rf, ctx) { }\nfunction ItemComponent_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 11);\n ɵngcc0.ɵɵtemplate(1, ItemComponent_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.item.content)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c4, ctx_r3.item.owner, ctx_r3.item.ownerIndex));\n} }\nfunction ItemComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 12);\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"animate\", ctx_r5.animate)(\"rtl\", ctx_r5.rtl)(\"vertical\", ctx_r5.vertical)(\"openOnClick\", ctx_r5.openOnClick)(\"items\", ctx_r5.children)(\"level\", ctx_r5.level + 1)(\"index\", ctx_r5.index)(\"itemTemplate\", ctx_r5.itemTemplate)(\"itemLinkTemplate\", ctx_r5.itemLinkTemplate);\n ɵngcc0.ɵɵattribute(\"id\", ctx_r5.childId);\n} }\nfunction ItemComponent_ng_template_6_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 15);\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r14.iconClass);\n} }\nfunction ItemComponent_ng_template_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r15.item.text, \" \");\n} }\nfunction ItemComponent_ng_template_6_2_ng_template_0_Template(rf, ctx) { }\nfunction ItemComponent_ng_template_6_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ItemComponent_ng_template_6_2_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r16.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c4, ctx_r16.item, ctx_r16.index));\n} }\nfunction ItemComponent_ng_template_6_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 16);\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"k-i-arrow-60-down\", !ctx_r17.horizontal)(\"k-i-arrow-60-right\", ctx_r17.horizontal && !ctx_r17.rtl)(\"k-i-arrow-60-left\", ctx_r17.horizontal && ctx_r17.rtl);\n} }\nfunction ItemComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ItemComponent_ng_template_6_span_0_Template, 1, 1, \"span\", 13);\n ɵngcc0.ɵɵtemplate(1, ItemComponent_ng_template_6_ng_container_1_Template, 2, 1, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(2, ItemComponent_ng_template_6_2_Template, 1, 5, null, 2);\n ɵngcc0.ɵɵtemplate(3, ItemComponent_ng_template_6_span_3_Template, 1, 6, \"span\", 14);\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.item.icon);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r7.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.hasContent);\n} }\nconst _c5 = [\"default\"];\nfunction ContextMenuComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-menu\", 1);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"items\", ctx_r1.rootItems)(\"vertical\", ctx_r1.vertical)(\"openOnClick\", ctx_r1.openOnClick)(\"hoverDelay\", ctx_r1.hoverDelay)(\"animate\", ctx_r1.animate)(\"menuItemTemplate\", ctx_r1.itemTemplate.first == null ? null : ctx_r1.itemTemplate.first.templateRef)(\"menuItemLinkTemplate\", ctx_r1.itemLinkTemplate.first == null ? null : ctx_r1.itemLinkTemplate.first.templateRef);\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-menu',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635940879,\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 PARENT_REGEX = /_?\\d+$/;\nconst SEPARATOR = '_';\nlet id = 0;\nconst itemIndexComparer = (a, b) => a.siblingIndex - b.siblingIndex;\nconst next = (idx, items, dir) => {\n let current = items[idx + dir];\n while (!current) {\n if (idx < 0) {\n idx = items.length - 1;\n }\n else if (idx >= items.length) {\n idx = 0;\n }\n else {\n idx += dir;\n }\n current = items[idx];\n }\n return current;\n};\n/**\n * @hidden\n */\nlet ItemsService = class ItemsService {\n /**\n * @hidden\n */\n constructor() {\n this.items = {};\n this.lists = [];\n this.idPrefix = `k-menu${id++}`;\n }\n get hasItems() {\n return Object.keys(this.items).length > 0;\n }\n childId(index) {\n return `${this.idPrefix}-child${index}`;\n }\n itemIndex(parentIndex, index) {\n return (parentIndex ? parentIndex + SEPARATOR : '') + index;\n }\n get(index) {\n return this.items[index];\n }\n add(item) {\n this.items[item.index] = item;\n }\n remove(item) {\n if (this.items[item.index] === item) {\n delete this.items[item.index];\n }\n }\n addList(list) {\n this.lists.push(list);\n }\n removeList(list) {\n const index = this.lists.indexOf(list);\n if (index >= 0) {\n this.lists.splice(index, 1);\n }\n }\n containsList(element) {\n return Boolean(this.lists.find(list => list.element.nativeElement === element));\n }\n siblings(item) {\n const parentIndex = this.parentIndex(item.index);\n return this.filter((index) => this.parentIndex(index) === parentIndex);\n }\n otherSiblings(item) {\n const parentIndex = this.parentIndex(item.index);\n return this.filter((index) => this.parentIndex(index) === parentIndex && index !== item.index);\n }\n children(item) {\n return this.filter((index) => this.parentIndex(index) === item.index);\n }\n parent(item) {\n return this.items[this.parentIndex(item.index)];\n }\n root(item) {\n return this.items[this.indices(item.index)[0]];\n }\n indices(index) {\n return index.split(SEPARATOR);\n }\n filter(predicate) {\n const result = [];\n const items = this.items;\n for (let index in items) {\n if (predicate(index, items[index])) {\n result.push(items[index]);\n }\n }\n return result.sort(itemIndexComparer);\n }\n previous(item) {\n const siblings = this.siblings(item);\n const itemIndex = siblings.indexOf(item);\n return next(itemIndex, siblings, -1);\n }\n next(item) {\n const siblings = this.siblings(item);\n const itemIndex = siblings.indexOf(item);\n return next(itemIndex, siblings, 1);\n }\n hasParent(item, parent) {\n return item.index.startsWith(parent.index);\n }\n areSiblings(item1, item2) {\n return item1 !== item2 && this.parent(item1) === this.parent(item2);\n }\n forEach(callback) {\n const items = this.items;\n for (let index in items) {\n if (items.hasOwnProperty(index)) {\n callback(items[index]);\n }\n }\n }\n parentIndex(index) {\n return index.replace(PARENT_REGEX, '');\n }\n};\nItemsService.ɵfac = function ItemsService_Factory(t) { return new (t || ItemsService)(); };\nItemsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ItemsService, factory: function (t) { return ItemsService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n this.prevented = false;\n Object.assign(this, args);\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 `open` and `close` events of the Menu.\n */\nclass MenuEvent extends PreventableEvent {\n}\n\nconst canPerformAction = (item, action) => !((action === 'open' && item.opened) || (action === 'close' && !item.opened));\n/**\n * @hidden\n */\nlet ActionsService = class ActionsService {\n constructor(ngZone, items) {\n this.ngZone = ngZone;\n this.items = items;\n this.actions = [];\n }\n open(item, finished) {\n if (item.disabled) {\n return;\n }\n if (item.hasContent && !item.opened) {\n this.actions.push({\n name: 'open',\n requiresZone: item.hasContentTemplates(),\n item,\n finished\n });\n }\n else if (finished) {\n finished();\n }\n }\n close(item) {\n this.closeChildren(item);\n this.closeItem(item);\n }\n closeItem(item) {\n if (item.opened) {\n this.actions.push({\n name: 'close',\n item\n });\n }\n }\n closeToRoot(item) {\n this.closeChildren(item);\n let current = item;\n do {\n this.closeItem(current);\n current = this.items.parent(current);\n } while (current);\n }\n closeOthers(item) {\n this.closeChildren(item);\n let current = item;\n while (current) {\n const siblings = this.items.otherSiblings(current);\n this.closeItems(siblings);\n current = this.items.parent(current);\n }\n }\n closeAll() {\n this.items.forEach((item) => {\n if (item.opened && item.level === 0) {\n this.close(item);\n }\n });\n }\n select(item, domEvent, prevented, finished) {\n this.actions.push({\n name: 'select',\n item,\n prevented,\n finished,\n domEvent\n });\n }\n emit(name, item, domEvent) {\n const owner = this.owner;\n const eventArgs = new MenuEvent({\n sender: owner,\n item: item.item,\n index: item.index,\n originalEvent: domEvent,\n hasContent: item.hasContent\n });\n owner[name].emit(eventArgs);\n if (owner.contextService) {\n owner.contextService.emit(name, eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n get hasPending() {\n return this.actions.length > 0;\n }\n execute(toExecute) {\n if (!this.hasPending && !toExecute) {\n return;\n }\n const actions = toExecute || this.clear();\n if (!NgZone.isInAngularZone() && this.requiresZone(actions)) {\n this.ngZone.run(() => {\n this.executeActions(actions);\n });\n }\n else {\n this.executeActions(actions);\n }\n }\n clear() {\n const actions = this.actions;\n this.actions = [];\n return actions;\n }\n executeActions(actions) {\n for (let idx = 0; idx < actions.length; idx++) {\n const { item, name, prevented, finished, domEvent } = actions[idx];\n if (!canPerformAction(item, name)) {\n continue;\n }\n if (!this.emit(name, item, domEvent)) {\n if (item[name]) {\n item[name]();\n }\n if (finished) {\n finished();\n }\n }\n else if (prevented) {\n prevented();\n }\n }\n }\n requiresZone(toExecute) {\n const actions = toExecute || this.actions;\n const owner = this.owner;\n const contextService = owner.contextService;\n for (let idx = 0; idx < actions.length; idx++) {\n const action = actions[idx];\n const name = action.name;\n if (action.requiresZone || (name && (hasObservers(owner[name]) || (contextService && contextService.hasObservers(name))))) {\n return true;\n }\n }\n return false;\n }\n closeChildren(item) {\n if (!item.opened) {\n return;\n }\n const children = this.items.children(item);\n this.closeItems(children);\n }\n closeItems(items) {\n for (let idx = 0; idx < items.length; idx++) {\n this.close(items[idx]);\n }\n }\n};\nActionsService.ɵfac = function ActionsService_Factory(t) { return new (t || ActionsService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ItemsService)); };\nActionsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ActionsService, factory: function (t) { return ActionsService.ɵfac(t); } });\nActionsService = __decorate([ __metadata(\"design:paramtypes\", [NgZone, ItemsService])\n], ActionsService);\n\nconst DEFAULT_ACTIVE = '0';\nconst NO_SPACE_REGEX = /\\S/;\nconst handlers = {};\nhandlers['37'] = 'left';\nhandlers['39'] = 'right';\nhandlers['38'] = 'up';\nhandlers['40'] = 'down';\nhandlers['36'] = 'home';\nhandlers['35'] = 'end';\nhandlers['32'] = 'enter';\nhandlers['13'] = 'enter';\nhandlers['27'] = 'esc';\nhandlers['9'] = 'tab';\nconst handlersRTL = Object.assign({}, handlers, {\n '37': 'right',\n '39': 'left'\n});\nfunction isPrintableCharacter(key) {\n return key.length === 1 && NO_SPACE_REGEX.test(key);\n}\nconst resolvedPromise = Promise.resolve(null);\n/**\n * @hidden\n */\nlet NavigationService = class NavigationService {\n constructor(items, actions, localization, ngZone) {\n this.items = items;\n this.actions = actions;\n this.localization = localization;\n this.ngZone = ngZone;\n this.vertical = false;\n this.activeIndex = DEFAULT_ACTIVE;\n }\n get focusedItem() {\n return this.items.get(this.focusedIdx);\n }\n get activeItem() {\n return this.items.get(this.activeIndex);\n }\n get handlers() {\n return this.localization.rtl ? handlersRTL : handlers;\n }\n focus(item) {\n if (item.index === this.focusedIdx) {\n return;\n }\n if (!this.activeItem || !this.items.hasParent(item, this.activeItem)) {\n this.setActive(item);\n }\n this.setFocus(item);\n }\n setFocus(item) {\n this.focusedIdx = item.index;\n item.focus();\n }\n focusLeave() {\n const focused = this.focusedItem;\n if (focused) {\n this.actions.closeToRoot(focused);\n this.actions.execute();\n }\n this.focusedIdx = null;\n }\n updateActive() {\n if (!this.activeItem && this.items.hasItems) {\n const firstItem = this.items.get(DEFAULT_ACTIVE);\n firstItem.toggleActive(true);\n this.ngZone.runOutsideAngular(() => {\n resolvedPromise.then(() => {\n this.activeIndex = DEFAULT_ACTIVE;\n });\n });\n }\n }\n keydown(e) {\n const current = this.focusedItem || this.activeItem;\n const handler = this.handlers[e.keyCode];\n if (!current) {\n return;\n }\n if (handler) {\n if (handler !== 'tab') {\n e.preventDefault();\n }\n this[handler](current, e);\n }\n else if (isPrintableCharacter(e.key)) {\n this.search(current, e.key);\n }\n this.actions.execute();\n }\n focusIndex(index) {\n if (!index && this.activeItem) {\n this.setFocus(this.activeItem);\n }\n else if (index === 'first') {\n this.focusFirst();\n }\n else if (index === 'last') {\n this.focusLast();\n }\n else {\n const item = this.items.get(index);\n if (item) {\n this.focus(item);\n }\n }\n }\n focusFirst() {\n const items = this.items.siblings(this.items.get('0'));\n this.focus(items[0]);\n }\n focusLast() {\n const items = this.items.siblings(this.items.get('0'));\n this.focus(items[items.length - 1]);\n }\n search(current, key) {\n const siblings = this.items.siblings(current);\n const startIndex = siblings.indexOf(current);\n const items = siblings.slice(startIndex + 1).concat(siblings.slice(0, startIndex));\n for (let idx = 0; idx < items.length; idx++) {\n const sibling = items[idx];\n const text = sibling.item.text || \"\";\n if (text.toLowerCase().startsWith(key.toLowerCase())) {\n this.focus(sibling);\n break;\n }\n }\n }\n down(current) {\n if (current.level === 0 && !this.vertical) {\n if (current.hasContent) {\n this.actions.open(current, this.focusChild(current, 0));\n }\n }\n else {\n this.focus(this.items.next(current));\n }\n }\n up(current) {\n if (current.level === 0 && !this.vertical) {\n if (current.hasContent) {\n this.actions.open(current, this.focusChild(current, current.children.length - 1));\n }\n }\n else {\n this.focus(this.items.previous(current));\n }\n }\n left(current) {\n if (this.vertical && current.level === 0 && current.disabled) {\n return;\n }\n if (current.level > 1 || (this.vertical && current.level > 0)) {\n const parent = this.items.parent(current);\n this.focus(parent);\n this.actions.close(parent);\n }\n else if (this.vertical && current.level === 0 && !current.disabled) {\n if (current.hasContent) {\n this.actions.open(current, this.focusChild(current, current.children.length - 1));\n }\n }\n else {\n this.focus(this.items.previous(this.activeItem));\n }\n }\n right(current) {\n if (this.vertical && current.level === 0 && current.disabled) {\n return;\n }\n if (current.horizontal && !current.disabled) {\n if (current.hasContent) {\n this.actions.open(current, this.focusChild(current, 0));\n }\n else if (!this.vertical || current.level > 0) {\n this.focus(this.items.next(this.activeItem));\n }\n }\n else {\n this.focus(this.items.next(this.activeItem));\n }\n }\n home(current) {\n const siblings = this.items.siblings(current);\n this.focus(siblings[0]);\n }\n end(current) {\n const siblings = this.items.siblings(current);\n this.focus(siblings[siblings.length - 1]);\n }\n enter(current, domEvent) {\n const actions = this.actions;\n if (current.disabled) {\n return;\n }\n if (current.hasContent) {\n actions.select(current, domEvent);\n actions.open(current, this.focusChild(current, 0));\n }\n else {\n actions.select(current, domEvent, null, () => {\n current.navigate();\n });\n this.focus(this.items.root(current));\n actions.closeToRoot(current);\n }\n }\n esc(current) {\n if (current.level > 0) {\n const parent = this.items.parent(current);\n this.actions.close(parent);\n this.focus(parent);\n }\n }\n tab(current) {\n if (current.level > 0) {\n this.activeItem.focus();\n }\n }\n focusChild(item, index) {\n return () => {\n const child = this.items.children(item)[index];\n this.setFocus(child);\n };\n }\n setActive(item) {\n const focused = this.focusedItem;\n const active = this.items.root(item);\n if (this.activeItem) {\n this.activeItem.toggleActive(false);\n }\n this.activeIndex = active.index;\n active.toggleActive(true);\n if (focused) {\n this.actions.closeToRoot(focused);\n if (focused.level > 0) {\n this.actions.open(active);\n }\n }\n }\n};\nNavigationService.ɵfac = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(ItemsService), ɵngcc0.ɵɵinject(ActionsService), ɵngcc0.ɵɵinject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [ItemsService,\n ActionsService,\n LocalizationService,\n NgZone])\n], NavigationService);\n\nconst DISABLE_OPEN_ON_OVER_DELAY = 500;\n/**\n * @hidden\n */\nlet HoverService = class HoverService {\n constructor(actions, items) {\n this.actions = actions;\n this.items = items;\n this.delay = 100;\n this._openOnOver = true;\n this.scheduled = [];\n }\n get openOnOver() {\n return this._openOnOver;\n }\n set openOnOver(value) {\n this.cancelActions();\n this._openOnOver = value;\n }\n get hovered() {\n return this.items.get(this.hoveredIdx);\n }\n set hovered(item) {\n this.hoveredIdx = item ? item.index : null;\n }\n ngOnDestroy() {\n this.cancelActions();\n }\n over(item) {\n this.cancelActions((action) => action.name === 'openOnOver');\n if (!this.hovered || this.hovered !== item) {\n this.actions.closeOthers(item);\n this.hovered = item;\n if ((item.level > 0 || this.openOnOver) && !item.disabled) {\n this.actions.open(item);\n this.cancelActions((action) => (action.name === 'close' && (item === action.item || this.items.hasParent(item, action.item))) ||\n (action.name === 'open' && !this.items.hasParent(item, action.item)));\n }\n this.scheduleActions();\n }\n }\n leave(disableOpenOnOver) {\n const hovered = this.hovered;\n if (hovered) {\n this.actions.closeToRoot(hovered);\n this.cancelActions(action => action.name === 'open');\n this.scheduleActions();\n }\n if (disableOpenOnOver && this._openOnOver) {\n this.scheduleDisableOpenOnOver();\n }\n this.hovered = null;\n }\n closeCurrent() {\n const hovered = this.hovered;\n if (hovered) {\n this.actions.closeToRoot(hovered);\n this.hovered = null;\n }\n }\n scheduleActions() {\n if (this.actions.hasPending) {\n const item = {};\n item.actions = this.actions.clear();\n item.id = setTimeout(() => {\n this.actions.execute(item.actions);\n this.removeScheduled(item);\n }, this.delay);\n this.scheduled.push(item);\n }\n }\n scheduleDisableOpenOnOver() {\n const item = {\n actions: [{ name: 'openOnOver' }]\n };\n item.id = setTimeout(() => {\n this._openOnOver = false;\n this.removeScheduled(item);\n }, Math.max(this.delay, DISABLE_OPEN_ON_OVER_DELAY));\n this.scheduled.push(item);\n }\n removeScheduled(item) {\n const scheduled = this.scheduled;\n for (let idx = 0; idx < scheduled.length; idx++) {\n if (scheduled[idx] === item) {\n scheduled.splice(idx, 1);\n return;\n }\n }\n }\n cancelActions(predicate) {\n const scheduled = this.scheduled;\n for (let idx = scheduled.length - 1; idx >= 0; idx--) {\n const item = scheduled[idx];\n const actions = item.actions;\n if (predicate) {\n for (let actionIdx = actions.length - 1; actionIdx >= 0; actionIdx--) {\n if (predicate(actions[actionIdx])) {\n actions.splice(actionIdx, 1);\n }\n }\n }\n if (!predicate || actions.length === 0) {\n clearTimeout(item.id);\n scheduled.splice(idx, 1);\n }\n }\n }\n};\nHoverService.ɵfac = function HoverService_Factory(t) { return new (t || HoverService)(ɵngcc0.ɵɵinject(ActionsService), ɵngcc0.ɵɵinject(ItemsService)); };\nHoverService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HoverService, factory: function (t) { return HoverService.ɵfac(t); } });\nHoverService = __decorate([ __metadata(\"design:paramtypes\", [ActionsService, ItemsService])\n], HoverService);\n\n/* tslint:disable:max-line-length */\n/**\n * @hidden\n */\nconst normalize = (settings) => settings && Object.assign({\n toggle: 'select'\n}, settings);\n\n/**\n * @hidden\n */\nconst NODE_INDEX = 'data-kendo-menu-index';\n\nconst DEFAULT_ID = 'kendo-matches-container';\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst matches = (element, selector) => (element.matches || element.msMatchesSelector).call(element, selector);\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 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};\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClass = (element, name) => {\n return toClassList(element.className).indexOf(name) >= 0;\n};\n/**\n * @hidden\n */\nconst matchesClasses = (classes) => {\n const list = toClassList(classes);\n return (element) => {\n const classList = toClassList(element.className);\n return Boolean(list.find(name => classList.indexOf(name) >= 0));\n };\n};\n/**\n * @hidden\n */\nconst nodeIndex = (node) => node.getAttribute(NODE_INDEX);\n/**\n * @hidden\n */\nconst closestItem = (node, scope) => closestInScope(node, nodeIndex, scope);\n/**\n * @hidden\n */\nconst closestList = (node) => {\n let list = closest(node, matchesClasses('k-menu-popup k-menu k-menu-group'));\n if (list && hasClass(list, 'k-menu-popup')) {\n list = list.querySelector('.k-menu-group');\n }\n return list;\n};\n/**\n * @hidden\n */\nconst inMenu = (node, itemsService) => {\n if (node === itemsService.lists[0].element.nativeElement) {\n return false;\n }\n const list = closestList(node);\n return list && itemsService.containsList(list);\n};\n/**\n * @hidden\n */\nconst findInContainer = (element, selector, container) => {\n const id = container.getAttribute('id');\n if (!id) {\n container.setAttribute('id', DEFAULT_ID);\n }\n const contextSelector = `#${id || DEFAULT_ID} ${selector}`;\n const match = closestInScope(element, node => matches(node, contextSelector), container);\n if (!id) {\n container.removeAttribute('id');\n }\n return match;\n};\n\n/**\n * @hidden\n */\nlet ContextMenuService = class ContextMenuService {\n /**\n * @hidden\n */\n constructor() {\n this.keydown = new EventEmitter();\n }\n emit(name, args) {\n this.owner.emitMenuEvent(name, args);\n }\n hasObservers(name) {\n return this.owner && hasObservers(this.owner[name]);\n }\n leaveMenu(e) {\n return this.items ? !inMenu(e.target, this.items) : true;\n }\n};\nContextMenuService.ɵfac = function ContextMenuService_Factory(t) { return new (t || ContextMenuService)(); };\nContextMenuService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ContextMenuService, factory: function (t) { return ContextMenuService.ɵfac(t); } });\n\n/**\n * Represents a template for the Menu items ([see example]({% slug templates_menu %})). To define a template\n * for an item, nest an `` tag with the `kendoMenuItemTemplate` directive inside a ``\n * component. To define a template for all Menu items, nest the template inside the `` component.\n *\n * The available fields in the template context are:\n * - `item`—The item data.\n * - `index`—The item index.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *
    \n * My Template for: {{ item.text }} at index: {{ index }}\n *
    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {\n * }\n * ```\n */\nlet ItemTemplateDirective = class ItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nItemTemplateDirective.ɵfac = function ItemTemplateDirective_Factory(t) { return new (t || ItemTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nItemTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ItemTemplateDirective, selectors: [[\"\", \"kendoMenuItemTemplate\", \"\"]] });\nItemTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ItemTemplateDirective);\n\n/**\n * Represents a template for the links of the Menu items ([see example]({% slug templates_menu %})). To define a template\n * for an item, nest an `` tag with the `kendoMenuItemLinkTemplate` directive inside a ``\n * component. To define a template for all Menu items, nest the template inside the `` component.\n *\n * The available fields in the template context are:\n * - `item`—The item data.\n * - `index`—The item index.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * {{ item.text }}\n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * }\n * ```\n */\nlet ItemLinkTemplateDirective = class ItemLinkTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nItemLinkTemplateDirective.ɵfac = function ItemLinkTemplateDirective_Factory(t) { return new (t || ItemLinkTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nItemLinkTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ItemLinkTemplateDirective, selectors: [[\"\", \"kendoMenuItemLinkTemplate\", \"\"]] });\nItemLinkTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ItemLinkTemplateDirective);\n\n/**\n * Represents a template for the content of the Menu items ([see example]({% slug templates_menu %})). To define the template,\n * nest an `` tag with the `kendoMenuItemContentTemplate` directive inside a `` component.\n *\n * The available fields in the template context are:\n * - `item`—The item data.\n * - `index`—The item index.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *
    \n * My Content Template for: {{ item.text }} at index: {{ index }}\n *
    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {\n * }\n * ```\n */\nlet ItemContentTemplateDirective = class ItemContentTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nItemContentTemplateDirective.ɵfac = function ItemContentTemplateDirective_Factory(t) { return new (t || ItemContentTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nItemContentTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ItemContentTemplateDirective, selectors: [[\"\", \"kendoMenuItemContentTemplate\", \"\"]] });\nItemContentTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ItemContentTemplateDirective);\n\nvar MenuItemComponent_1;\n/**\n * A component that can be used to specify the Menu items\n * ([more information and examples]({% slug items_menu %})).\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 * My Content Template: {{ item.text }}\n *
    \n *
    \n * \n *
    \n * My Template: {{ item.text }}\n *
    \n *
    \n *
    \n * \n * \n * \n * {{ item.text }}\n * \n * \n * \n * \n *
    \n * `\n * })\n *\n * class AppComponent {\n * }\n * ```\n */\nlet MenuItemComponent = MenuItemComponent_1 = class MenuItemComponent {\n /**\n * @hidden\n */\n get template() {\n if (this.itemTemplate && this.itemTemplate.length) {\n return this.itemTemplate.first.templateRef;\n }\n }\n /**\n * @hidden\n */\n get linkTemplate() {\n if (this.itemLinkTemplate && this.itemLinkTemplate.length) {\n return this.itemLinkTemplate.first.templateRef;\n }\n }\n /**\n * @hidden\n */\n get contentTemplate() {\n if (this.itemContentTemplate && this.itemContentTemplate.length) {\n return this.itemContentTemplate.first.templateRef;\n }\n }\n /**\n * @hidden\n */\n get items() {\n if (this.children.length) {\n return this.children.toArray().filter(c => c !== this);\n }\n }\n};\nMenuItemComponent.ɵfac = function MenuItemComponent_Factory(t) { return new (t || MenuItemComponent)(); };\nMenuItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MenuItemComponent, selectors: [[\"kendo-menu-item\"]], contentQueries: function MenuItemComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemLinkTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemContentTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MenuItemComponent_1, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemTemplate = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemLinkTemplate = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemContentTemplate = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, inputs: { text: \"text\", url: \"url\", disabled: \"disabled\", cssClass: \"cssClass\", cssStyle: \"cssStyle\", icon: \"icon\", data: \"data\", separator: \"separator\" }, decls: 0, vars: 0, template: function MenuItemComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MenuItemComponent.prototype, \"text\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MenuItemComponent.prototype, \"url\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MenuItemComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MenuItemComponent.prototype, \"cssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MenuItemComponent.prototype, \"cssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], MenuItemComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MenuItemComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MenuItemComponent.prototype, \"separator\", void 0);\n__decorate([\n ContentChildren(ItemTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], MenuItemComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n ContentChildren(ItemLinkTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], MenuItemComponent.prototype, \"itemLinkTemplate\", void 0);\n__decorate([\n ContentChildren(ItemContentTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], MenuItemComponent.prototype, \"itemContentTemplate\", void 0);\n__decorate([\n ContentChildren(MenuItemComponent_1),\n __metadata(\"design:type\", QueryList)\n], MenuItemComponent.prototype, \"children\", void 0);\n\n/**\n * @hidden\n */\nclass MenuBase {\n constructor() {\n /**\n * Specifies if the Menu will be vertical ([see example]({% slug vertical_menu %})).\n */\n this.vertical = false;\n /**\n * Specifies that the root items can be opened only on click\n * ([see example]({% slug openclose_menu %}#toc-opening-on-click)).\n */\n this.openOnClick = false;\n /**\n * Specifies the delay in milliseconds before the Menu items are opened or closed on item hover\n * or leave ([see example]({% slug openclose_menu %}#toc-delay-on-hover)). Used to avoid the accidental\n * opening or closing of the items.\n */\n this.hoverDelay = 100;\n /**\n * Sets the Menu animation.\n */\n this.animate = true;\n }\n /**\n * @hidden\n */\n get rootItems() {\n return this.items || (this.children ? this.children.toArray() : []);\n }\n}\nMenuBase.ɵfac = function MenuBase_Factory(t) { return new (t || MenuBase)(); };\nMenuBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MenuBase, contentQueries: function MenuBase_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, ItemLinkTemplateDirective, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MenuItemComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemTemplate = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.itemLinkTemplate = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.children = _t);\n } }, inputs: { vertical: \"vertical\", openOnClick: \"openOnClick\", hoverDelay: \"hoverDelay\", animate: \"animate\", items: \"items\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], MenuBase.prototype, \"items\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], MenuBase.prototype, \"vertical\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MenuBase.prototype, \"openOnClick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], MenuBase.prototype, \"hoverDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MenuBase.prototype, \"animate\", void 0);\n__decorate([\n ContentChildren(ItemTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], MenuBase.prototype, \"itemTemplate\", void 0);\n__decorate([\n ContentChildren(ItemLinkTemplateDirective),\n __metadata(\"design:type\", QueryList)\n], MenuBase.prototype, \"itemLinkTemplate\", void 0);\n__decorate([\n ContentChildren(MenuItemComponent),\n __metadata(\"design:type\", QueryList)\n], MenuBase.prototype, \"children\", void 0);\n\nvar MenuComponent_1;\n/**\n * Represents the [Kendo UI Menu component for Angular]({% slug overview_menu %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: any[] = [{ text: 'item1', items: [{ text: 'item1.1' }] }, { text: 'item2', disabled: true }];\n * }\n * ```\n */\nlet MenuComponent = MenuComponent_1 = class MenuComponent extends MenuBase {\n constructor(itemsService, hover, actions, navigation, localization, ngZone, renderer, contextService) {\n super();\n this.itemsService = itemsService;\n this.hover = hover;\n this.actions = actions;\n this.navigation = navigation;\n this.localization = localization;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.contextService = contextService;\n /**\n * Fires when a Menu item is selected ([see example]({% slug routing_menu %})).\n */\n this.select = new EventEmitter();\n /**\n * Fires when a Menu item is opened.\n */\n this.open = new EventEmitter();\n /**\n * Fires when a Menu item is closed.\n */\n this.close = new EventEmitter();\n validatePackage(packageMetadata);\n this.actions.owner = this;\n if (contextService) {\n contextService.items = this.itemsService;\n this.contextKeyDownSubscription = contextService.keydown.subscribe(this.contextKeyDown.bind(this));\n }\n }\n /**\n * @hidden\n */\n get ariaOrientation() {\n if (this.vertical) {\n return 'vertical';\n }\n }\n /**\n * @hidden\n */\n get contextMenuClass() {\n return Boolean(this.contextService);\n }\n get direction() {\n return this.rtl;\n }\n get rtl() {\n return this.localization.rtl;\n }\n /**\n * Opens or closes the specified Menu items.\n *\n * @param open - A Boolean value which indicates if the items will be opened or closed.\n * @param indices - One or more values which represent the hierarchical indices of the items that will be opened or closed.\n */\n toggle(open, ...indices) {\n for (let idx = 0; idx < indices.length; idx++) {\n const item = this.itemsService.get(indices[idx]);\n if (item && !item.disabled) {\n if (open) {\n item.open();\n }\n else {\n item.close();\n }\n }\n }\n }\n /**\n * @hidden\n */\n focus(index) {\n this.navigation.focusIndex(index);\n }\n ngOnChanges(changes) {\n this.navigation.vertical = this.vertical;\n this.hover.delay = this.hoverDelay;\n if (changes.openOnClick) {\n const openOnClick = this.openOnClick = normalize(this.openOnClick);\n this.hover.openOnOver = !openOnClick;\n if (openOnClick && openOnClick.toggle === 'click') {\n this.attachCloseClick();\n }\n else {\n this.unsubscribeClick();\n }\n }\n }\n ngAfterViewChecked() {\n this.navigation.updateActive();\n }\n ngOnDestroy() {\n this.unsubscribeClick();\n if (this.contextService) {\n this.contextService.items = null;\n this.contextKeyDownSubscription.unsubscribe();\n }\n }\n attachCloseClick() {\n if (!this.closeClickSubscription && isDocumentAvailable()) {\n this.ngZone.runOutsideAngular(() => {\n this.closeClickSubscription = this.renderer.listen('document', 'click', (e) => {\n if (!inMenu(e.target, this.itemsService)) {\n this.hover.openOnOver = false;\n this.actions.closeAll();\n this.actions.execute();\n }\n });\n });\n }\n }\n unsubscribeClick() {\n if (this.closeClickSubscription) {\n this.closeClickSubscription();\n }\n }\n contextKeyDown(e) {\n if (!this.itemsService.hasItems) {\n return;\n }\n const keyCode = e.keyCode;\n const rtl = this.localization.rtl;\n const first = keyCode === Keys.ArrowDown || keyCode === Keys.ArrowRight;\n const last = keyCode === Keys.ArrowUp || keyCode === Keys.ArrowLeft;\n let index;\n if ((first && !rtl) || (last && rtl)) {\n index = 'first';\n }\n else if ((first && rtl) || (last && !rtl)) {\n index = 'last';\n }\n if (index) {\n e.preventDefault();\n this.focus(index);\n }\n }\n};\nMenuComponent.ɵfac = function MenuComponent_Factory(t) { return new (t || MenuComponent)(ɵngcc0.ɵɵdirectiveInject(ItemsService), ɵngcc0.ɵɵdirectiveInject(HoverService), ɵngcc0.ɵɵdirectiveInject(ActionsService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ContextMenuService, 8)); };\nMenuComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MenuComponent, selectors: [[\"kendo-menu\"]], hostVars: 2, hostBindings: function MenuComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-rtl\", ctx.direction);\n } }, inputs: { menuItemTemplate: \"menuItemTemplate\", menuItemLinkTemplate: \"menuItemLinkTemplate\" }, outputs: { select: \"select\", open: \"open\", close: \"close\" }, exportAs: [\"kendoMenu\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ItemsService,\n ActionsService,\n NavigationService,\n HoverService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.menu'\n },\n {\n provide: MenuBase,\n useExisting: forwardRef(() => MenuComponent_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 15, consts: [[\"role\", \"menubar\", \"kendoMenuList\", \"\", 1, \"k-widget\", \"k-reset\", \"k-header\", \"k-menu\", 3, \"items\", \"level\", \"vertical\", \"rtl\", \"animate\", \"openOnClick\", \"itemTemplate\", \"itemLinkTemplate\"]], template: function MenuComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-menu-horizontal\", !ctx.vertical)(\"k-menu-vertical\", ctx.vertical)(\"k-context-menu\", ctx.contextMenuClass);\n ɵngcc0.ɵɵproperty(\"items\", ctx.rootItems)(\"level\", 0)(\"vertical\", ctx.vertical)(\"rtl\", ctx.rtl)(\"animate\", ctx.animate)(\"openOnClick\", ctx.openOnClick)(\"itemTemplate\", (ctx.itemTemplate.first == null ? null : ctx.itemTemplate.first.templateRef) || ctx.menuItemTemplate)(\"itemLinkTemplate\", (ctx.itemLinkTemplate.first == null ? null : ctx.itemLinkTemplate.first.templateRef) || ctx.menuItemLinkTemplate);\n ɵngcc0.ɵɵattribute(\"aria-orientation\", ctx.ariaOrientation);\n } }, directives: function () { return [ListComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], MenuComponent.prototype, \"menuItemTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], MenuComponent.prototype, \"menuItemLinkTemplate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MenuComponent.prototype, \"select\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MenuComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], MenuComponent.prototype, \"close\", void 0);\n__decorate([\n HostBinding('class.k-rtl'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], MenuComponent.prototype, \"direction\", null);\nMenuComponent = MenuComponent_1 = __decorate([ __param(7, Optional()),\n __metadata(\"design:paramtypes\", [ItemsService,\n HoverService,\n ActionsService,\n NavigationService,\n LocalizationService,\n NgZone,\n Renderer2,\n ContextMenuService])\n], MenuComponent);\n\n/* tslint:disable:component-selector */\n/**\n * @hidden\n */\nlet ListComponent = class ListComponent {\n constructor(itemsService, hover, actions, navigation, renderer, ngZone, element) {\n this.itemsService = itemsService;\n this.hover = hover;\n this.actions = actions;\n this.navigation = navigation;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.element = element;\n this.animate = true;\n }\n hierarchyIndex(index) {\n return this.itemsService.itemIndex(this.index, index);\n }\n ngOnInit() {\n this.itemsService.addList(this);\n this.initDomEvents();\n }\n ngOnDestroy() {\n this.itemsService.removeList(this);\n if (this.domSubscriptions) {\n this.domSubscriptions();\n }\n }\n initDomEvents() {\n if (!isDocumentAvailable() || !this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const element = this.element.nativeElement;\n const container = this.level > 0 ? closest(element, (node) => hasClass(node, 'k-popup')) : element;\n const overSubscription = this.renderer.listen(element, 'mouseover', (e) => {\n if (e.target === element && this.level === 0) {\n this.onLeave();\n }\n else {\n const item = this.nodeItem(e.target) || this.itemsService.get(this.index);\n if (item && !(this.openOnClick && this.openOnClick.toggle === 'click' && item.level === 0 && !item.hasContent)) {\n this.hover.over(item);\n }\n }\n });\n const leaveSubscription = this.renderer.listen(container, 'mouseleave', (e) => {\n if (this.leavesMenu(e)) {\n this.onLeave();\n }\n });\n const keydownSubscription = this.renderer.listen(element, 'keydown', (e) => {\n if (hasClass(e.target, 'k-menu-item')) {\n this.navigation.keydown(e);\n }\n });\n const blurSubscription = this.renderer.listen(element, 'focusout', (e) => {\n if (this.leavesMenu(e)) {\n this.navigation.focusLeave();\n }\n });\n /**\n * Handle focus/blur open/close for iOS devices since it behaves inconsistently with the rest\n * Refer to: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n */\n const touchSubscription = this.renderer.listen(document, 'touchstart', (e) => {\n if (inMenu(e.target, this.itemsService)) {\n const item = this.nodeItem(e.target);\n // Needs to be called because the 'click' handler will be called only on secondary tap and the item will remain unfocused\n this.navigation.focus(item);\n // This is needed since the 'mouseover' event is not always dispatched\n if (!item.opened) {\n this.hover.over(item);\n }\n }\n else if (this.navigation.focusedIdx) {\n // If the touch is outside of the menu and the menu is not currently in focus\n const activeItem = this.itemsService.get(this.navigation.activeIndex);\n this.onLeave(); // needs to be called explicitly since mouseleave event is not triggered\n activeItem.blur(); // needs to be called explicitly otherwise the item remains focused => triggers focusout\n }\n });\n const clickSubscription = this.renderer.listen(element, 'click', this.clickHandler.bind(this));\n this.domSubscriptions = () => {\n overSubscription();\n leaveSubscription();\n keydownSubscription();\n blurSubscription();\n clickSubscription();\n touchSubscription();\n };\n });\n }\n leavesMenu(e) {\n if (!e.relatedTarget) {\n return true;\n }\n return !inMenu(e.relatedTarget, this.itemsService);\n }\n onLeave() {\n const openOnClick = this.openOnClick;\n if (!openOnClick || openOnClick.toggle !== 'click') {\n this.hover.leave(openOnClick && openOnClick.toggle === 'leave');\n }\n }\n nodeItem(target) {\n const node = closestItem(target, this.element.nativeElement);\n if (node) {\n const index = nodeIndex(node);\n return this.itemsService.get(index);\n }\n }\n clickHandler(e) {\n if (isFocusable(e.target) && !hasClass(e.target, 'k-menu-item')) {\n return;\n }\n const item = this.nodeItem(e.target);\n if (!item || item.isContent || item.navigating) {\n return;\n }\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n this.actions.select(item, e, () => {\n e.preventDefault();\n });\n this.navigation.focus(item);\n if (item.level > 0 && !item.hasContent) {\n this.actions.closeToRoot(item);\n }\n if (this.openOnClick) {\n const hover = this.hover;\n if (item.opened) {\n if (item.level === 0) {\n hover.openOnOver = false;\n this.actions.close(item);\n }\n }\n else if (item.hasContent) {\n hover.openOnOver = true;\n this.actions.closeOthers(item);\n this.actions.open(item);\n }\n else {\n hover.openOnOver = false;\n if (item.level === 0 && this.openOnClick.toggle === 'click') {\n this.hover.closeCurrent();\n }\n }\n }\n this.actions.execute();\n }\n};\nListComponent.ɵfac = function ListComponent_Factory(t) { return new (t || ListComponent)(ɵngcc0.ɵɵdirectiveInject(ItemsService), ɵngcc0.ɵɵdirectiveInject(HoverService), ɵngcc0.ɵɵdirectiveInject(ActionsService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ListComponent, selectors: [[\"\", \"kendoMenuList\", \"\"]], inputs: { animate: \"animate\", items: \"items\", level: \"level\", index: \"index\", vertical: \"vertical\", rtl: \"rtl\", openOnClick: \"openOnClick\", itemTemplate: \"itemTemplate\", itemLinkTemplate: \"itemLinkTemplate\" }, attrs: _c0, decls: 1, vars: 1, consts: [[4, \"ngFor\", \"ngForOf\"], [\"kendoMenuItem\", \"\", \"role\", \"menuitem\", \"class\", \"k-item k-menu-item\", 3, \"item\", \"level\", \"vertical\", \"animate\", \"rtl\", \"itemTemplate\", \"itemLinkTemplate\", \"openOnClick\", \"index\", \"siblingIndex\", \"ngClass\", \"ngStyle\", \"k-first\", \"k-last\", \"k-state-disabled\", 4, \"ngIf\"], [\"class\", \"k-separator k-item\", \"role\", \"separator\", 3, \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"kendoMenuItem\", \"\", \"role\", \"menuitem\", 1, \"k-item\", \"k-menu-item\", 3, \"item\", \"level\", \"vertical\", \"animate\", \"rtl\", \"itemTemplate\", \"itemLinkTemplate\", \"openOnClick\", \"index\", \"siblingIndex\", \"ngClass\", \"ngStyle\"], [\"role\", \"separator\", 1, \"k-separator\", \"k-item\", 3, \"ngClass\", \"ngStyle\"]], template: function ListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ListComponent_ng_container_0_Template, 3, 2, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.items);\n } }, directives: function () { return [ɵngcc2.NgForOf, ɵngcc2.NgIf, ItemComponent, ɵngcc2.NgClass, ɵngcc2.NgStyle]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ListComponent.prototype, \"items\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ListComponent.prototype, \"level\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ListComponent.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"vertical\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ListComponent.prototype, \"rtl\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ListComponent.prototype, \"openOnClick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ListComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ListComponent.prototype, \"itemLinkTemplate\", void 0);\nListComponent = __decorate([ __metadata(\"design:paramtypes\", [ItemsService,\n HoverService,\n ActionsService,\n NavigationService,\n Renderer2,\n NgZone,\n ElementRef])\n], ListComponent);\n\nconst POPUP_ALIGN = {\n vertical: 'top',\n horizontal: 'left'\n};\nconst POPUP_ALIGN_RTL = {\n vertical: 'top',\n horizontal: 'right'\n};\nconst VERTICAL_COLLISION = {\n vertical: 'flip',\n horizontal: 'fit'\n};\nconst HORIZONTAL_COLLISION = {\n vertical: 'fit',\n horizontal: 'flip'\n};\n/**\n * @hidden\n */\nconst POPUP_SETTINGS_RTL = {\n vertical: {\n anchor: {\n vertical: 'bottom',\n horizontal: 'right'\n },\n popup: POPUP_ALIGN_RTL,\n collision: VERTICAL_COLLISION,\n animate: 'down'\n },\n horizontal: {\n anchor: {\n vertical: 'top',\n horizontal: 'left'\n },\n popup: POPUP_ALIGN_RTL,\n collision: HORIZONTAL_COLLISION,\n animate: 'left'\n }\n};\n/**\n * @hidden\n */\nconst POPUP_SETTINGS = {\n vertical: {\n anchor: {\n vertical: 'bottom',\n horizontal: 'left'\n },\n popup: POPUP_ALIGN,\n collision: VERTICAL_COLLISION,\n animate: 'down'\n },\n horizontal: {\n anchor: {\n vertical: 'top',\n horizontal: 'right'\n },\n popup: POPUP_ALIGN,\n collision: HORIZONTAL_COLLISION,\n animate: 'right'\n }\n};\n\n/**\n * @hidden\n */\nconst defined = (value) => typeof value !== 'undefined';\n/**\n * @hidden\n */\nconst bodyFactory = () => {\n if (isDocumentAvailable()) {\n return new ElementRef(document.body);\n }\n};\n\nconst ɵ0$3 = bodyFactory;\n/* tslint:disable:component-selector */\n/**\n * @hidden\n */\nlet ItemComponent = class ItemComponent {\n constructor(itemsService, navigation, changeDetector, renderer, popupService, element) {\n this.itemsService = itemsService;\n this.navigation = navigation;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.popupService = popupService;\n this.element = element;\n this.animate = true;\n this.openOnClick = false;\n this.opened = false;\n this.navigating = false;\n this.destroyed = false;\n }\n set index(index) {\n if (this._index && this._index !== index) {\n this.itemsService.remove(this);\n this._index = index;\n this.itemsService.add(this);\n }\n else {\n this._index = index;\n }\n this.childId = this.itemsService.childId(index);\n }\n get index() {\n return this._index;\n }\n get disabled() {\n return this.item.disabled;\n }\n get hasPopup() {\n return this.hasContent ? true : null;\n }\n get expanded() {\n return this.hasContent ? this.opened : null;\n }\n get label() {\n return this.item.text ? this.item.text : null;\n }\n get activeId() {\n return this.index === this.navigation.activeIndex ? '0' : '-1';\n }\n get popupSettings() {\n const settings = this.rtl ? POPUP_SETTINGS_RTL : POPUP_SETTINGS;\n return this.horizontal ? settings.horizontal : settings.vertical;\n }\n get horizontal() {\n return this.vertical || this.level > 0;\n }\n get hasLink() {\n return Boolean(this.item.url);\n }\n get linkTemplate() {\n return this.item.linkTemplate || this.itemLinkTemplate;\n }\n get hasContent() {\n const items = this.item.items;\n return items && items.length || this.item.contentTemplate;\n }\n get isContent() {\n return Boolean(this.item.content);\n }\n get iconClass() {\n return `k-i-${this.item.icon}`;\n }\n get children() {\n const item = this.item;\n if (item.contentTemplate) {\n if (!this.contentItems) {\n this.contentItems = [{\n content: item.contentTemplate,\n owner: item,\n ownerIndex: this.index\n }];\n }\n return this.contentItems;\n }\n return item.items;\n }\n get template() {\n return this.item.template || this.itemTemplate;\n }\n hasContentTemplates() {\n const item = this.item;\n return this.itemTemplate || item.contentTemplate || this.itemLinkTemplate ||\n (item.items && item.items.find(current => current.template || current.linkTemplate));\n }\n ngOnInit() {\n this.itemsService.add(this);\n }\n ngOnDestroy() {\n this.itemsService.remove(this);\n this.destroyed = true;\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n focus() {\n this.element.nativeElement.focus();\n }\n blur() {\n this.element.nativeElement.blur();\n }\n toggleActive(isActive) {\n if (isActive) {\n this.setAttribute('tabindex', '0');\n }\n else {\n this.setAttribute('tabindex', '-1');\n }\n }\n open() {\n if (!this.destroyed && this.hasContent && !this.opened) {\n const popupSettings = this.popupSettings;\n const animate = this.animate ? Object.assign({}, this.animate, {\n direction: popupSettings.animate\n }) : false;\n this.opened = true;\n this.popupRef = this.popupService.open({\n popupAlign: popupSettings.popup,\n anchorAlign: popupSettings.anchor,\n collision: popupSettings.collision,\n anchor: this.element,\n positionMode: 'absolute',\n content: this.popupTemplate,\n popupClass: {\n 'k-rtl': this.rtl,\n 'k-menu-popup': true\n },\n animate: animate\n });\n this.setAttribute('aria-expanded', 'true');\n this.setAttribute('aria-owns', this.childId);\n this.changeDetector.detectChanges();\n }\n }\n close() {\n if (!this.destroyed && this.opened) {\n this.opened = false;\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n this.changeDetector.detectChanges();\n this.setAttribute('aria-expanded', 'false');\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-owns');\n }\n }\n navigate() {\n let link;\n if (this.linkTemplate) {\n link = this.element.nativeElement.querySelector('a.k-menu-link');\n }\n else if (this.hasLink) {\n link = this.link.nativeElement;\n }\n if (link) {\n this.navigating = true;\n link.click();\n this.navigating = false;\n }\n }\n setAttribute(name, value) {\n this.renderer.setAttribute(this.element.nativeElement, name, value);\n }\n};\nItemComponent.ɵfac = function ItemComponent_Factory(t) { return new (t || ItemComponent)(ɵngcc0.ɵɵdirectiveInject(ItemsService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.PopupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ItemComponent, selectors: [[\"\", \"kendoMenuItem\", \"\"]], viewQuery: function ItemComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c1, 5);\n ɵngcc0.ɵɵviewQuery(_c2, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.link = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n } }, hostVars: 5, hostBindings: function ItemComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-disabled\", ctx.disabled)(\"aria-haspopup\", ctx.hasPopup)(\"aria-expanded\", ctx.expanded)(\"aria-label\", ctx.label)(\"tabindex\", ctx.activeId);\n } }, inputs: { animate: \"animate\", openOnClick: \"openOnClick\", index: \"index\", item: \"item\", level: \"level\", siblingIndex: \"siblingIndex\", vertical: \"vertical\", rtl: \"rtl\", itemTemplate: \"itemTemplate\", itemLinkTemplate: \"itemLinkTemplate\" }, features: [ɵngcc0.ɵɵProvidersFeature([PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: ɵ0$3\n }])], attrs: _c3, decls: 8, vars: 4, consts: [[\"class\", \"k-link k-menu-link\", \"role\", \"presentation\", 3, \"k-state-active\", 4, \"ngIf\"], [\"class\", \"k-link k-menu-link\", \"tabindex\", \"-1\", \"role\", \"presentation\", 3, \"k-state-active\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"k-content\", \"role\", \"presentation\", 4, \"ngIf\"], [\"popupTemplate\", \"\"], [\"itemcontent\", \"\"], [\"role\", \"presentation\", 1, \"k-link\", \"k-menu-link\"], [\"link\", \"\"], [3, \"ngTemplateOutlet\"], [\"tabindex\", \"-1\", \"role\", \"presentation\", 1, \"k-link\", \"k-menu-link\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"presentation\", 1, \"k-content\"], [\"kendoMenuList\", \"\", \"role\", \"menu\", 1, \"k-group\", \"k-menu-group\", \"k-reset\", 3, \"animate\", \"rtl\", \"vertical\", \"openOnClick\", \"items\", \"level\", \"index\", \"itemTemplate\", \"itemLinkTemplate\"], [\"class\", \"k-icon\", \"role\", \"presentation\", 3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"k-icon k-menu-expand-arrow\", \"role\", \"presentation\", 3, \"k-i-arrow-60-down\", \"k-i-arrow-60-right\", \"k-i-arrow-60-left\", 4, \"ngIf\"], [\"role\", \"presentation\", 1, \"k-icon\", 3, \"ngClass\"], [\"role\", \"presentation\", 1, \"k-icon\", \"k-menu-expand-arrow\"]], template: function ItemComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ItemComponent_span_0_Template, 3, 3, \"span\", 0);\n ɵngcc0.ɵɵtemplate(1, ItemComponent_a_1_Template, 3, 4, \"a\", 1);\n ɵngcc0.ɵɵtemplate(2, ItemComponent_2_Template, 1, 5, null, 2);\n ɵngcc0.ɵɵtemplate(3, ItemComponent_div_3_Template, 2, 5, \"div\", 3);\n ɵngcc0.ɵɵtemplate(4, ItemComponent_ng_template_4_Template, 1, 10, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(6, ItemComponent_ng_template_6_Template, 4, 4, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.hasLink && !ctx.item.content && !ctx.linkTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.item.url && !ctx.linkTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.linkTemplate && !ctx.item.content);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.item.content);\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet, ListComponent, ɵngcc2.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ItemComponent.prototype, \"item\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ItemComponent.prototype, \"level\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ItemComponent.prototype, \"index\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ItemComponent.prototype, \"siblingIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ItemComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ItemComponent.prototype, \"vertical\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ItemComponent.prototype, \"rtl\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ItemComponent.prototype, \"openOnClick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ItemComponent.prototype, \"itemTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], ItemComponent.prototype, \"itemLinkTemplate\", void 0);\n__decorate([\n ViewChild('link', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ItemComponent.prototype, \"link\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ItemComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n HostBinding('attr.aria-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ItemComponent.prototype, \"disabled\", null);\n__decorate([\n HostBinding('attr.aria-haspopup'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ItemComponent.prototype, \"hasPopup\", null);\n__decorate([\n HostBinding('attr.aria-expanded'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ItemComponent.prototype, \"expanded\", null);\n__decorate([\n HostBinding('attr.aria-label'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ItemComponent.prototype, \"label\", null);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ItemComponent.prototype, \"activeId\", null);\nItemComponent = __decorate([ __metadata(\"design:paramtypes\", [ItemsService,\n NavigationService,\n ChangeDetectorRef,\n Renderer2,\n PopupService,\n ElementRef])\n], ItemComponent);\n\n/**\n * Represents a directive that can be used in the [`linkTemplate`]({% slug api_menu_itemlinktemplatedirective %})\n * of the items to apply the default styling and behavior.\n */\nlet LinkDirective = class LinkDirective {\n constructor(itemsService) {\n this.itemsService = itemsService;\n this.hostClasses = true;\n this.role = 'presentation';\n this.tabindex = '-1';\n }\n get activeClass() {\n return this.item.opened;\n }\n ngOnInit() {\n if (isDevMode() && !this.index) {\n throw new Error('The kendoMenuItemLink directive requires the item index to be set.');\n }\n this.item = this.itemsService.get(this.index) || {};\n }\n};\nLinkDirective.ɵfac = function LinkDirective_Factory(t) { return new (t || LinkDirective)(ɵngcc0.ɵɵdirectiveInject(ItemsService)); };\nLinkDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LinkDirective, selectors: [[\"\", \"kendoMenuItemLink\", \"\"]], hostVars: 8, hostBindings: function LinkDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵclassProp(\"k-link\", ctx.hostClasses)(\"k-menu-link\", ctx.hostClasses)(\"k-state-active\", ctx.activeClass);\n } }, inputs: { index: [\"kendoMenuItemLink\", \"index\"] } });\n__decorate([\n Input('kendoMenuItemLink'),\n __metadata(\"design:type\", String)\n], LinkDirective.prototype, \"index\", void 0);\n__decorate([\n HostBinding('class.k-link'),\n HostBinding('class.k-menu-link'),\n __metadata(\"design:type\", Boolean)\n], LinkDirective.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], LinkDirective.prototype, \"role\", void 0);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", String)\n], LinkDirective.prototype, \"tabindex\", void 0);\n__decorate([\n HostBinding('class.k-state-active'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], LinkDirective.prototype, \"activeClass\", null);\nLinkDirective = __decorate([ __metadata(\"design:paramtypes\", [ItemsService])\n], LinkDirective);\n\n/**\n * Represents a directive that can be used in the [`linkTemplate`]({% slug api_menu_itemlinktemplatedirective %})\n * of the items to render the default expand arrow.\n */\nlet ExpandArrowDirective = class ExpandArrowDirective {\n constructor(itemsService) {\n this.itemsService = itemsService;\n this.hostClasses = true;\n this.role = 'presentation';\n }\n get arrowDown() {\n return !this.item.horizontal;\n }\n get arrowRight() {\n return this.item.horizontal && !this.item.rtl;\n }\n get arrowLeft() {\n return this.item.horizontal && this.item.rtl;\n }\n ngOnInit() {\n if (isDevMode() && !this.index) {\n throw new Error('The kendoMenuExpandArrow directive requires the item index to be set.');\n }\n this.item = this.itemsService.get(this.index) || {};\n }\n};\nExpandArrowDirective.ɵfac = function ExpandArrowDirective_Factory(t) { return new (t || ExpandArrowDirective)(ɵngcc0.ɵɵdirectiveInject(ItemsService)); };\nExpandArrowDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ExpandArrowDirective, selectors: [[\"\", \"kendoMenuExpandArrow\", \"\"]], hostVars: 11, hostBindings: function ExpandArrowDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role);\n ɵngcc0.ɵɵclassProp(\"k-icon\", ctx.hostClasses)(\"k-menu-expand-arrow\", ctx.hostClasses)(\"k-i-arrow-60-down\", ctx.arrowDown)(\"k-i-arrow-60-right\", ctx.arrowRight)(\"k-i-arrow-60-left\", ctx.arrowLeft);\n } }, inputs: { index: [\"kendoMenuExpandArrow\", \"index\"] } });\n__decorate([\n Input('kendoMenuExpandArrow'),\n __metadata(\"design:type\", String)\n], ExpandArrowDirective.prototype, \"index\", void 0);\n__decorate([\n HostBinding('class.k-icon'),\n HostBinding('class.k-menu-expand-arrow'),\n __metadata(\"design:type\", Boolean)\n], ExpandArrowDirective.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], ExpandArrowDirective.prototype, \"role\", void 0);\n__decorate([\n HostBinding('class.k-i-arrow-60-down'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ExpandArrowDirective.prototype, \"arrowDown\", null);\n__decorate([\n HostBinding('class.k-i-arrow-60-right'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ExpandArrowDirective.prototype, \"arrowRight\", null);\n__decorate([\n HostBinding('class.k-i-arrow-60-left'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ExpandArrowDirective.prototype, \"arrowLeft\", null);\nExpandArrowDirective = __decorate([ __metadata(\"design:paramtypes\", [ItemsService])\n], ExpandArrowDirective);\n\n/**\n * Arguments for the `select` event of the Menu.\n */\nclass MenuSelectEvent extends MenuEvent {\n}\n\nconst ITEM_FIELDS = ['textField', 'urlField', 'iconField', 'disabledField', 'cssClassField', 'cssStyleField', 'separatorField'];\n/**\n * @hidden\n */\nclass BindingDirectiveBase {\n constructor(menu) {\n this.menu = menu;\n }\n ngOnChanges() {\n this.rebind();\n }\n /**\n * Rebinds the Menu items.\n */\n rebind() {\n const fields = this.fields = [];\n for (let idx = 0; idx < ITEM_FIELDS.length; idx++) {\n const inputName = ITEM_FIELDS[idx];\n const inputValue = this[inputName];\n if (inputValue) {\n fields.push({ target: inputName.replace('Field', ''), source: inputValue });\n }\n }\n this.menu.items = this.data ? this.mapItems(this.data) : [];\n }\n}\nBindingDirectiveBase.ɵfac = function BindingDirectiveBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nBindingDirectiveBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BindingDirectiveBase, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = (obj) => obj;\n/**\n * @hidden\n */\nconst getter = (field) => {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = [];\n field.replace(FIELD_REGEX, (_match, index, indexAccessor, name) => {\n fields.push(index !== undefined ? index : (indexAccessor || name));\n });\n getterCache[field] = (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/**\n * @hidden\n */\nconst last = (arr) => arr[arr.length - 1];\n\nconst getField = (field, level) => Array.isArray(field) ? field[level] || last(field) : field;\n/* tslint:disable:no-input-rename */\n/**\n * A directive that converts the provided hierarchical data to [MenuItems]({% slug api_menu_menuitem %}) and binds them to the Menu.\n */\nlet HierarchyBindingDirective = class HierarchyBindingDirective extends BindingDirectiveBase {\n constructor(menu) {\n super(menu);\n }\n mapItems(items, level = 0) {\n return items.map((item) => {\n const menuItem = this.createItem(item, level);\n const children = this.getChildren(item, level);\n if (children) {\n menuItem.items = this.mapItems(children, level + 1);\n }\n return menuItem;\n });\n }\n createItem(item, level) {\n const result = { data: item };\n const fields = this.fields;\n for (let idx = 0; idx < fields.length; idx++) {\n const { target, source } = fields[idx];\n result[target] = getter(getField(source, level))(item);\n }\n return result;\n }\n getChildren(item, level) {\n if (this.childrenField) {\n const field = getField(this.childrenField, level);\n return item[field];\n }\n }\n};\nHierarchyBindingDirective.ɵfac = function HierarchyBindingDirective_Factory(t) { return new (t || HierarchyBindingDirective)(ɵngcc0.ɵɵdirectiveInject(MenuBase)); };\nHierarchyBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: HierarchyBindingDirective, selectors: [[\"\", \"kendoMenuHierarchyBinding\", \"\"]], inputs: { data: [\"kendoMenuHierarchyBinding\", \"data\"], textField: \"textField\", urlField: \"urlField\", iconField: \"iconField\", disabledField: \"disabledField\", cssClassField: \"cssClassField\", cssStyleField: \"cssStyleField\", separatorField: \"separatorField\", childrenField: \"childrenField\" }, exportAs: [\"kendoMenuHierarchyBinding\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(\"kendoMenuHierarchyBinding\"),\n __metadata(\"design:type\", Array)\n], HierarchyBindingDirective.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HierarchyBindingDirective.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HierarchyBindingDirective.prototype, \"urlField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HierarchyBindingDirective.prototype, \"iconField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HierarchyBindingDirective.prototype, \"disabledField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HierarchyBindingDirective.prototype, \"cssClassField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HierarchyBindingDirective.prototype, \"cssStyleField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HierarchyBindingDirective.prototype, \"separatorField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HierarchyBindingDirective.prototype, \"childrenField\", void 0);\nHierarchyBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [MenuBase])\n], HierarchyBindingDirective);\n\n/* tslint:disable:no-input-rename */\n/**\n * A directive that converts the provided flat data to [MenuItems]({% slug api_menu_menuitem %}) and binds them to the Menu.\n */\nlet FlatBindingDirective = class FlatBindingDirective extends BindingDirectiveBase {\n constructor(menu) {\n super(menu);\n }\n mapItems(items) {\n if (!this.idField || !this.parentIdField) {\n return items.map(item => this.createItem(item));\n }\n const result = [];\n const map = {};\n for (let idx = 0; idx < items.length; idx++) {\n const item = items[idx];\n const menuItem = this.createItem(item);\n const id = getter(this.idField)(item);\n const parentId = getter(this.parentIdField)(item);\n if (parentId === null || parentId === undefined) {\n result.push(menuItem);\n }\n else {\n const parent = map[parentId] = map[parentId] || {};\n parent.items = parent.items || [];\n parent.items.push(menuItem);\n }\n if (map[id]) {\n menuItem.items = map[id].items;\n }\n map[id] = menuItem;\n }\n return result;\n }\n createItem(dataItem) {\n const result = { data: dataItem };\n const fields = this.fields;\n for (let idx = 0; idx < fields.length; idx++) {\n const { source, target } = fields[idx];\n result[target] = getter(source)(dataItem);\n }\n return result;\n }\n};\nFlatBindingDirective.ɵfac = function FlatBindingDirective_Factory(t) { return new (t || FlatBindingDirective)(ɵngcc0.ɵɵdirectiveInject(MenuBase)); };\nFlatBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlatBindingDirective, selectors: [[\"\", \"kendoMenuFlatBinding\", \"\"]], inputs: { data: [\"kendoMenuFlatBinding\", \"data\"], textField: \"textField\", urlField: \"urlField\", iconField: \"iconField\", disabledField: \"disabledField\", cssClassField: \"cssClassField\", cssStyleField: \"cssStyleField\", separatorField: \"separatorField\", idField: \"idField\", parentIdField: \"parentIdField\" }, exportAs: [\"kendoMenuFlatBinding\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(\"kendoMenuFlatBinding\"),\n __metadata(\"design:type\", Array)\n], FlatBindingDirective.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatBindingDirective.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatBindingDirective.prototype, \"urlField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FlatBindingDirective.prototype, \"iconField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatBindingDirective.prototype, \"disabledField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatBindingDirective.prototype, \"cssClassField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatBindingDirective.prototype, \"cssStyleField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatBindingDirective.prototype, \"separatorField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatBindingDirective.prototype, \"idField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatBindingDirective.prototype, \"parentIdField\", void 0);\nFlatBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [MenuBase])\n], FlatBindingDirective);\n\nconst COMPONENT_EXPORTS = [\n MenuComponent,\n MenuItemComponent,\n ItemTemplateDirective,\n ItemLinkTemplateDirective,\n ItemContentTemplateDirective,\n HierarchyBindingDirective,\n FlatBindingDirective,\n LinkDirective,\n ExpandArrowDirective\n];\nconst COMPONENT_DIRECTIVES = [\n ...COMPONENT_EXPORTS,\n ListComponent,\n ItemComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Menu component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Menu module\n * import { MenuModule } from '@progress/kendo-angular-menu';\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, MenuModule], // import Menu module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet MenuModule = class MenuModule {\n};\nMenuModule.ɵfac = function MenuModule_Factory(t) { return new (t || MenuModule)(); };\nMenuModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MenuModule });\nMenuModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[PopupModule, CommonModule]] });\n\n/**\n * Arguments for the `open` and `close` events of the ContextMenu.\n */\nclass ContextMenuEvent {\n}\n\n/**\n * Arguments for the `select` event of the ContextMenu.\n */\nclass ContextMenuSelectEvent extends ContextMenuEvent {\n}\n\n/**\n * Arguments for the `popupOpen` and `popupClose` events of the ContextMenu.\n */\nclass ContextMenuPopupEvent extends PreventableEvent {\n}\n\n/**\n * Represents a template for the content of the ContextMenu. To define a template, nest an ``\n * tag with the `kendoContextMenuTemplate` directive inside a `` component\n * ([more information and examples]({% slug templates_contextmenu %})).\n *\n * {% meta height:200 %}\n * {% embed_file context-menu/template/app.component.ts preview %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nlet ContextMenuTemplateDirective = class ContextMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nContextMenuTemplateDirective.ɵfac = function ContextMenuTemplateDirective_Factory(t) { return new (t || ContextMenuTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nContextMenuTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ContextMenuTemplateDirective, selectors: [[\"\", \"kendoContextMenuTemplate\", \"\"]] });\nContextMenuTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], ContextMenuTemplateDirective);\n\n/**\n * @hidden\n */\nlet ContextMenuItemsService = class ContextMenuItemsService {\n constructor(contextService) {\n this.contextService = contextService;\n }\n get(index) {\n if (this.contextService.items) {\n return this.contextService.items.get(index);\n }\n }\n};\nContextMenuItemsService.ɵfac = function ContextMenuItemsService_Factory(t) { return new (t || ContextMenuItemsService)(ɵngcc0.ɵɵinject(ContextMenuService)); };\nContextMenuItemsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ContextMenuItemsService, factory: function (t) { return ContextMenuItemsService.ɵfac(t); } });\nContextMenuItemsService = __decorate([ __metadata(\"design:paramtypes\", [ContextMenuService])\n], ContextMenuItemsService);\n\n/**\n * @hidden\n */\nlet ContextMenuTargetService = class ContextMenuTargetService {\n /**\n * @hidden\n */\n constructor() {\n this.targets = [];\n }\n add(target) {\n this.targets.push(target);\n }\n remove(target) {\n const index = this.targets.indexOf(target);\n this.targets.splice(index, 1);\n }\n find(targetElement) {\n return this.targets.find(target => target.element === targetElement);\n }\n};\nContextMenuTargetService.ɵfac = function ContextMenuTargetService_Factory(t) { return new (t || ContextMenuTargetService)(); };\nContextMenuTargetService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ContextMenuTargetService, factory: function (t) { return ContextMenuTargetService.ɵfac(t); } });\n\n/**\n * Specifies a container for the [targets]({% slug api_menu_contextmenutargetdirective %}) of the ContextMenu.\n */\nlet ContextMenuTargetContainerDirective = class ContextMenuTargetContainerDirective {\n /**\n * @hidden\n */\n constructor(elementRef, targetService) {\n this.targetService = targetService;\n if (elementRef) {\n this.element = elementRef.nativeElement;\n }\n }\n};\nContextMenuTargetContainerDirective.ɵfac = function ContextMenuTargetContainerDirective_Factory(t) { return new (t || ContextMenuTargetContainerDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ContextMenuTargetService)); };\nContextMenuTargetContainerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ContextMenuTargetContainerDirective, selectors: [[\"\", \"kendoContextMenuTargetContainer\", \"\"]], exportAs: [\"kendoContextMenuTargetContainer\"], features: [ɵngcc0.ɵɵProvidersFeature([ContextMenuTargetService])] });\nContextMenuTargetContainerDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, ContextMenuTargetService])\n], ContextMenuTargetContainerDirective);\n\n/**\n * @hidden\n */\nconst TARGET_CLASS = 'k-contextmenu-target';\n/**\n * Specifies a [target]({% slug api_menu_contextmenutargetdirective %}) for the ContextMenu\n * ([see example]({% slug target_contextmenu %}#toc-directives)).\n */\nlet ContextMenuTargetDirective = class ContextMenuTargetDirective {\n constructor(elementRef, targetService) {\n this.targetService = targetService;\n /**\n * @hidden\n */\n this.hostClass = true;\n if (elementRef) {\n this.element = elementRef.nativeElement;\n }\n targetService.add(this);\n }\n ngOnDestroy() {\n this.targetService.remove(this);\n }\n};\nContextMenuTargetDirective.ɵfac = function ContextMenuTargetDirective_Factory(t) { return new (t || ContextMenuTargetDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ContextMenuTargetService)); };\nContextMenuTargetDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ContextMenuTargetDirective, selectors: [[\"\", \"kendoContextMenuTarget\", \"\"]], hostVars: 2, hostBindings: function ContextMenuTargetDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-contextmenu-target\", ctx.hostClass);\n } }, inputs: { data: [\"kendoContextMenuTarget\", \"data\"] }, exportAs: [\"kendoContextMenuTarget\"] });\n__decorate([\n Input('kendoContextMenuTarget'),\n __metadata(\"design:type\", Object)\n], ContextMenuTargetDirective.prototype, \"data\", void 0);\n__decorate([\n HostBinding(`class.${TARGET_CLASS}`),\n __metadata(\"design:type\", Boolean)\n], ContextMenuTargetDirective.prototype, \"hostClass\", void 0);\nContextMenuTargetDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, ContextMenuTargetService])\n], ContextMenuTargetDirective);\n\nvar ContextMenuComponent_1;\nconst CONTEXT_MENU = 'contextmenu';\nconst DEFAULT_ANCHOR_ALIGN = { horizontal: 'left', vertical: 'bottom' };\nconst DEFAULT_POPUP_ALIGN = { horizontal: 'left', vertical: 'top' };\nconst DEFAULT_COLLISION = { horizontal: 'fit', vertical: 'flip' };\nconst preventDefault = e => e.preventDefault();\nconst ɵ1$2 = bodyFactory;\n/**\n * Represents the [Kendo UI ContextMenu component for Angular]({% slug overview_contextmenu %}).\n *\n * {% meta height:200 %}\n * {% embed_file context-menu/basic/app.component.ts preview %}\n * {% embed_file shared/contextmenu-items.ts %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nlet ContextMenuComponent = ContextMenuComponent_1 = class ContextMenuComponent extends MenuBase {\n constructor(popupService, service, ngZone, renderer) {\n super();\n this.popupService = popupService;\n this.service = service;\n this.ngZone = ngZone;\n this.renderer = renderer;\n /**\n * Specifies the event on which the ContextMenu will open ([see example]({% slug showon_contextmenu %})).\n * Accepts the name of a native DOM event. Defaults to `contextmenu` which opens the ContextMenu for the target element.\n */\n this.showOn = CONTEXT_MENU;\n /**\n * Indicates that the ContextMenu will be aligned to the target or to the `filter` element (if specified).\n */\n this.alignToAnchor = false;\n /**\n * Specifies if the Menu will be vertically rendered ([see example]({% slug orientation_contextmenu %})).\n * @default true\n */\n this.vertical = true;\n /**\n * Fires when the Menu is opened ([see example]({% slug target_contextmenu %}#toc-changing-items-for-specified-targets)).\n */\n this.popupOpen = new EventEmitter();\n /**\n * Fires when the Menu is closed.\n */\n this.popupClose = new EventEmitter();\n /**\n * Fires when a Menu item is selected.\n */\n this.select = new EventEmitter();\n /**\n * Fires when a Menu item is opened.\n */\n this.open = new EventEmitter();\n /**\n * Fires when a Menu item is closed.\n */\n this.close = new EventEmitter();\n this.service.owner = this;\n this.popupKeyDownHandler = this.popupKeyDownHandler.bind(this);\n }\n /**\n * Hides the ContextMenu.\n */\n hide() {\n this.removePopup();\n }\n /**\n * Shows the ContextMenu for the specified target.\n * @param target - The offset or the target element for which the ContextMenu will open.\n */\n show(target) {\n if (!target) {\n return;\n }\n const showTarget = target;\n this.removePopup();\n if (defined(showTarget.left) && defined(showTarget.top)) {\n this.createPopup({ offset: showTarget });\n }\n else {\n this.currentTarget = showTarget.nativeElement || showTarget;\n this.createPopup({ anchor: this.currentTarget });\n }\n }\n ngOnChanges(changes) {\n if (changes.target || changes.showOn) {\n this.bindShowHandler();\n }\n }\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n const closeClickSubscription = this.renderer.listen('document', 'mousedown', (e) => {\n if (this.popupRef && !closest(e.target, node => node === this.popupRef.popupElement) && this.service.leaveMenu(e)) {\n this.closePopup(e);\n }\n });\n const closeBlurSubscription = this.renderer.listen('window', 'blur', (e) => {\n if (this.popupRef) {\n this.closePopup(e);\n }\n });\n this.closeSubscription = () => {\n closeClickSubscription();\n closeBlurSubscription();\n };\n });\n }\n ngOnDestroy() {\n if (this.closeSubscription) {\n this.closeSubscription();\n this.closeSubscription = null;\n }\n this.unbindShowHandler();\n this.removePopup();\n }\n /**\n * @hidden\n */\n emitMenuEvent(name, args) {\n args.target = this.currentTarget;\n args.sender = this;\n this[name].emit(args);\n if (name === 'select' && !args.hasContent) {\n this.closeAndFocus(args.originalEvent);\n }\n }\n bindShowHandler() {\n this.unbindShowHandler();\n this.ngZone.runOutsideAngular(() => {\n const element = this.targetElement();\n if (!element) {\n return;\n }\n const eventName = this.showOn || CONTEXT_MENU;\n this.showSubscription = this.renderer.listen(element, this.showOn || CONTEXT_MENU, (e) => {\n this.showContextMenu(e, element);\n });\n if (eventName === CONTEXT_MENU) {\n this.keydownSubscription = this.renderer.listen(element, 'keydown', (e) => {\n if (e.shiftKey && e.keyCode === Keys.F10) {\n this.showContextMenu(e, element);\n }\n });\n }\n });\n }\n showContextMenu(e, element) {\n const filter = this.targetFilter();\n let currentTarget = element;\n if (filter) {\n currentTarget = findInContainer(e.target, filter, element);\n if (currentTarget && currentTarget !== e.target && isFocusable(e.target)) {\n return;\n }\n if (currentTarget && this.directiveTarget) {\n currentTarget = this.target.targetService.find(currentTarget);\n }\n }\n if (!currentTarget) {\n this.closePopup(e);\n return;\n }\n this.ngZone.run(() => {\n if (!this.closePopup(e)) {\n this.currentTarget = currentTarget;\n this.openPopup(e);\n }\n });\n }\n unbindShowHandler() {\n if (this.showSubscription) {\n this.showSubscription();\n this.showSubscription = null;\n }\n if (this.keydownSubscription) {\n this.keydownSubscription();\n this.keydownSubscription = null;\n }\n }\n targetElement() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.directiveTarget = false;\n let target = this.target;\n if (typeof target === 'string') {\n target = document.querySelector(target); // maybe querySelectorAll?\n }\n else if (target && target.nativeElement) {\n target = target.nativeElement;\n }\n else if (target instanceof ContextMenuTargetContainerDirective) {\n target = target.element;\n this.directiveTarget = true;\n }\n return target;\n }\n targetFilter() {\n if (this.directiveTarget) {\n return `.${TARGET_CLASS}`;\n }\n return this.filter;\n }\n closePopup(e) {\n if (!this.popupRef) {\n return;\n }\n return this.popupAction('popupClose', e, () => {\n this.removePopup();\n });\n }\n removePopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.currentTarget = null;\n }\n if (this.popupSubscriptions) {\n this.popupSubscriptions();\n this.popupSubscriptions = null;\n }\n }\n openPopup(e) {\n this.popupAction('popupOpen', e, () => {\n e.preventDefault();\n let anchor, offset;\n if (this.alignToAnchor || e.type === 'keydown') {\n anchor = this.currentTargetElement;\n }\n else {\n offset = { left: e.pageX, top: e.pageY };\n }\n this.createPopup({ anchor, offset });\n });\n }\n createPopup(options) {\n this.popupRef = this.popupService.open(Object.assign({\n animate: defined(this.popupAnimate) ? this.popupAnimate : true,\n appendTo: this.appendTo,\n collision: this.collision || DEFAULT_COLLISION,\n popupAlign: this.popupAlign || DEFAULT_POPUP_ALIGN,\n anchorAlign: this.anchorAlign || DEFAULT_ANCHOR_ALIGN,\n content: this.contentTemplate ? this.contentTemplate.templateRef : this.defaultContentTemplate,\n popupClass: 'k-menu-popup'\n }, options));\n const element = this.popupRef.popupElement;\n this.renderer.addClass(element, 'k-context-menu-popup');\n this.renderer.setAttribute(element, 'tabindex', '-1');\n this.renderer.setStyle(element, 'outline', '0'); //possibly move to styles\n if (this.ariaLabel) {\n this.renderer.setAttribute(element, 'aria-label', this.ariaLabel);\n }\n this.activeTarget = this.currentTargetElement === document.activeElement;\n this.ngZone.runOutsideAngular(() => {\n const unbindKeyDown = this.renderer.listen(element, 'keydown', this.popupKeyDownHandler);\n const unbindContextmenu = this.renderer.listen(element, 'contextmenu', preventDefault);\n this.popupSubscriptions = () => {\n unbindKeyDown();\n unbindContextmenu();\n };\n });\n element.focus();\n }\n closeAndFocus(e) {\n const currentTarget = this.currentTargetElement;\n if (!this.closePopup(e) && this.activeTarget) {\n currentTarget.focus();\n }\n }\n popupKeyDownHandler(e) {\n const element = this.popupRef.popupElement;\n if (e.keyCode === Keys.Escape && (hasClass(e.target, 'k-menu-item') || e.target === element)) {\n this.closeAndFocus(e);\n }\n else if (e.target === element) {\n this.service.keydown.emit(e);\n }\n }\n popupAction(name, originalEvent, callback) {\n const emitter = this[name];\n let prevented = false;\n if (hasObservers(emitter)) {\n this.ngZone.run(() => {\n const args = new ContextMenuPopupEvent({\n originalEvent: originalEvent,\n sender: this,\n target: this.currentTarget\n });\n emitter.emit(args);\n if (!args.isDefaultPrevented()) {\n callback();\n }\n prevented = args.isDefaultPrevented();\n });\n }\n else {\n callback();\n }\n return prevented;\n }\n get currentTargetElement() {\n return this.directiveTarget && this.currentTarget ? this.currentTarget.element : this.currentTarget;\n }\n};\nContextMenuComponent.ɵfac = function ContextMenuComponent_Factory(t) { return new (t || ContextMenuComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.PopupService), ɵngcc0.ɵɵdirectiveInject(ContextMenuService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nContextMenuComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ContextMenuComponent, selectors: [[\"kendo-contextmenu\"]], contentQueries: function ContextMenuComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ContextMenuTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n } }, viewQuery: function ContextMenuComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c5, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.defaultContentTemplate = _t.first);\n } }, inputs: { showOn: \"showOn\", alignToAnchor: \"alignToAnchor\", vertical: \"vertical\", target: \"target\", filter: \"filter\", popupAnimate: \"popupAnimate\", popupAlign: \"popupAlign\", anchorAlign: \"anchorAlign\", collision: \"collision\", appendTo: \"appendTo\", ariaLabel: \"ariaLabel\" }, outputs: { popupOpen: \"popupOpen\", popupClose: \"popupClose\", select: \"select\", open: \"open\", close: \"close\" }, exportAs: [\"kendoContextMenu\"], features: [ɵngcc0.ɵɵProvidersFeature([\n ContextMenuService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.contextmenu'\n },\n {\n provide: ItemsService,\n useClass: ContextMenuItemsService\n },\n {\n provide: MenuBase,\n useExisting: forwardRef(() => ContextMenuComponent_1)\n },\n PopupService,\n {\n provide: POPUP_CONTAINER,\n useFactory: ɵ1$2\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 0, consts: [[\"default\", \"\"], [3, \"items\", \"vertical\", \"openOnClick\", \"hoverDelay\", \"animate\", \"menuItemTemplate\", \"menuItemLinkTemplate\"]], template: function ContextMenuComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ContextMenuComponent_ng_template_0_Template, 1, 7, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [MenuComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContextMenuComponent.prototype, \"showOn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ContextMenuComponent.prototype, \"target\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContextMenuComponent.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ContextMenuComponent.prototype, \"alignToAnchor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ContextMenuComponent.prototype, \"vertical\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ContextMenuComponent.prototype, \"popupAnimate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ContextMenuComponent.prototype, \"popupAlign\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ContextMenuComponent.prototype, \"anchorAlign\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ContextMenuComponent.prototype, \"collision\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ViewContainerRef)\n], ContextMenuComponent.prototype, \"appendTo\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ContextMenuComponent.prototype, \"ariaLabel\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ContextMenuComponent.prototype, \"popupOpen\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ContextMenuComponent.prototype, \"popupClose\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ContextMenuComponent.prototype, \"select\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ContextMenuComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ContextMenuComponent.prototype, \"close\", void 0);\n__decorate([\n ContentChild(ContextMenuTemplateDirective, { static: false }),\n __metadata(\"design:type\", ContextMenuTemplateDirective)\n], ContextMenuComponent.prototype, \"contentTemplate\", void 0);\n__decorate([\n ViewChild('default', { static: false }),\n __metadata(\"design:type\", TemplateRef)\n], ContextMenuComponent.prototype, \"defaultContentTemplate\", void 0);\nContextMenuComponent = ContextMenuComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [PopupService,\n ContextMenuService,\n NgZone,\n Renderer2])\n], ContextMenuComponent);\n\nconst COMPONENT_DIRECTIVES$1 = [\n ContextMenuComponent,\n ContextMenuTemplateDirective,\n ContextMenuTargetDirective,\n ContextMenuTargetContainerDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ContextMenu component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ContextMenu module\n * import { ContextMenuModule } from '@progress/kendo-angular-menu';\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, ContextMenuModule], // import ContextMenuModule module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet ContextMenuModule = class ContextMenuModule {\n};\nContextMenuModule.ɵfac = function ContextMenuModule_Factory(t) { return new (t || ContextMenuModule)(); };\nContextMenuModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ContextMenuModule });\nContextMenuModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[PopupModule, CommonModule, MenuModule], MenuModule] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the Menu and ContextMenu components and directives.\n * Imports the MenusModule into your application [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity)\n * or any other sub-module that will use the Menu and ContextMenu components.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { MenusModule } from '@progress/kendo-angular-menu';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, BrowserAnimationsModule, MenusModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nlet MenusModule = class MenusModule {\n};\nMenusModule.ɵfac = function MenusModule_Factory(t) { return new (t || MenusModule)(); };\nMenusModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MenusModule });\nMenusModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [MenuModule, ContextMenuModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ItemsService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ActionsService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ItemsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: ItemsService }, { type: ActionsService }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HoverService, [{\n type: Injectable\n }], function () { return [{ type: ActionsService }, { type: ItemsService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContextMenuService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ItemTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMenuItemTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ItemLinkTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMenuItemLinkTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ItemContentTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMenuItemContentTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MenuItemComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-menu-item',\n template: ``\n }]\n }], null, { text: [{\n type: Input\n }], url: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], icon: [{\n type: Input\n }], data: [{\n type: Input\n }], separator: [{\n type: Input\n }], itemTemplate: [{\n type: ContentChildren,\n args: [ItemTemplateDirective]\n }], itemLinkTemplate: [{\n type: ContentChildren,\n args: [ItemLinkTemplateDirective]\n }], itemContentTemplate: [{\n type: ContentChildren,\n args: [ItemContentTemplateDirective]\n }], children: [{\n type: ContentChildren,\n args: [MenuItemComponent_1]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MenuComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoMenu',\n providers: [\n ItemsService,\n ActionsService,\n NavigationService,\n HoverService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.menu'\n },\n {\n provide: MenuBase,\n useExisting: forwardRef(() => MenuComponent_1)\n }\n ],\n selector: 'kendo-menu',\n template: `\n
      \n
    \n `\n }]\n }], function () { return [{ type: ItemsService }, { type: HoverService }, { type: ActionsService }, { type: NavigationService }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ContextMenuService, decorators: [{\n type: Optional\n }] }]; }, { select: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['class.k-rtl']\n }], menuItemTemplate: [{\n type: Input\n }], menuItemLinkTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListComponent, [{\n type: Component,\n args: [{\n selector: '[kendoMenuList]',\n template: `\n \n
  • \n
  • \n  \n
  • \n
    \n `\n }]\n }], function () { return [{ type: ItemsService }, { type: HoverService }, { type: ActionsService }, { type: NavigationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }]; }, { animate: [{\n type: Input\n }], items: [{\n type: Input\n }], level: [{\n type: Input\n }], index: [{\n type: Input\n }], vertical: [{\n type: Input\n }], rtl: [{\n type: Input\n }], openOnClick: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], itemLinkTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ItemComponent, [{\n type: Component,\n args: [{\n providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: ɵ0$3\n }],\n selector: '[kendoMenuItem]',\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 {{ item.text }}\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ItemsService }, { type: NavigationService }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc3.PopupService }, { type: ɵngcc0.ElementRef }]; }, { animate: [{\n type: Input\n }], openOnClick: [{\n type: Input\n }], index: [{\n type: Input\n }], disabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], hasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], expanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], label: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], activeId: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], item: [{\n type: Input\n }], level: [{\n type: Input\n }], siblingIndex: [{\n type: Input\n }], vertical: [{\n type: Input\n }], rtl: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], itemLinkTemplate: [{\n type: Input\n }], link: [{\n type: ViewChild,\n args: ['link', { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinkDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMenuItemLink]'\n }]\n }], function () { return [{ type: ItemsService }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-link']\n }, {\n type: HostBinding,\n args: ['class.k-menu-link']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], activeClass: [{\n type: HostBinding,\n args: ['class.k-state-active']\n }], index: [{\n type: Input,\n args: ['kendoMenuItemLink']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandArrowDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoMenuExpandArrow]'\n }]\n }], function () { return [{ type: ItemsService }]; }, { hostClasses: [{\n type: HostBinding,\n args: ['class.k-icon']\n }, {\n type: HostBinding,\n args: ['class.k-menu-expand-arrow']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], arrowDown: [{\n type: HostBinding,\n args: ['class.k-i-arrow-60-down']\n }], arrowRight: [{\n type: HostBinding,\n args: ['class.k-i-arrow-60-right']\n }], arrowLeft: [{\n type: HostBinding,\n args: ['class.k-i-arrow-60-left']\n }], index: [{\n type: Input,\n args: ['kendoMenuExpandArrow']\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HierarchyBindingDirective, [{\n type: Directive,\n args: [{\n exportAs: 'kendoMenuHierarchyBinding',\n selector: '[kendoMenuHierarchyBinding]'\n }]\n }], function () { return [{ type: MenuBase }]; }, { data: [{\n type: Input,\n args: [\"kendoMenuHierarchyBinding\"]\n }], textField: [{\n type: Input\n }], urlField: [{\n type: Input\n }], iconField: [{\n type: Input\n }], disabledField: [{\n type: Input\n }], cssClassField: [{\n type: Input\n }], cssStyleField: [{\n type: Input\n }], separatorField: [{\n type: Input\n }], childrenField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlatBindingDirective, [{\n type: Directive,\n args: [{\n exportAs: 'kendoMenuFlatBinding',\n selector: '[kendoMenuFlatBinding]'\n }]\n }], function () { return [{ type: MenuBase }]; }, { data: [{\n type: Input,\n args: [\"kendoMenuFlatBinding\"]\n }], textField: [{\n type: Input\n }], urlField: [{\n type: Input\n }], iconField: [{\n type: Input\n }], disabledField: [{\n type: Input\n }], cssClassField: [{\n type: Input\n }], cssStyleField: [{\n type: Input\n }], separatorField: [{\n type: Input\n }], idField: [{\n type: Input\n }], parentIdField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MenuModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_EXPORTS],\n imports: [PopupModule, CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MenuModule, { declarations: function () { return [MenuComponent, MenuItemComponent, ItemTemplateDirective, ItemLinkTemplateDirective, ItemContentTemplateDirective, HierarchyBindingDirective, FlatBindingDirective, LinkDirective, ExpandArrowDirective, ListComponent, ItemComponent]; }, imports: function () { return [PopupModule, CommonModule]; }, exports: function () { return [MenuComponent, MenuItemComponent, ItemTemplateDirective, ItemLinkTemplateDirective, ItemContentTemplateDirective, HierarchyBindingDirective, FlatBindingDirective, LinkDirective, ExpandArrowDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContextMenuTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoContextMenuTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContextMenuItemsService, [{\n type: Injectable\n }], function () { return [{ type: ContextMenuService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContextMenuTargetService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContextMenuTargetContainerDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoContextMenuTargetContainer]',\n exportAs: 'kendoContextMenuTargetContainer',\n providers: [ContextMenuTargetService]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ContextMenuTargetService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContextMenuTargetDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoContextMenuTarget]',\n exportAs: 'kendoContextMenuTarget'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ContextMenuTargetService }]; }, { hostClass: [{\n type: HostBinding,\n args: [`class.${TARGET_CLASS}`]\n }], data: [{\n type: Input,\n args: ['kendoContextMenuTarget']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContextMenuComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoContextMenu',\n providers: [\n ContextMenuService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.contextmenu'\n },\n {\n provide: ItemsService,\n useClass: ContextMenuItemsService\n },\n {\n provide: MenuBase,\n useExisting: forwardRef(() => ContextMenuComponent_1)\n },\n PopupService,\n {\n provide: POPUP_CONTAINER,\n useFactory: ɵ1$2\n }\n ],\n selector: 'kendo-contextmenu',\n template: `\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc3.PopupService }, { type: ContextMenuService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { showOn: [{\n type: Input\n }], alignToAnchor: [{\n type: Input\n }], vertical: [{\n type: Input\n }], popupOpen: [{\n type: Output\n }], popupClose: [{\n type: Output\n }], select: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], target: [{\n type: Input\n }], filter: [{\n type: Input\n }], popupAnimate: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], collision: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], contentTemplate: [{\n type: ContentChild,\n args: [ContextMenuTemplateDirective, { static: false }]\n }], defaultContentTemplate: [{\n type: ViewChild,\n args: ['default', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContextMenuModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1, MenuModule],\n imports: [PopupModule, CommonModule, MenuModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ContextMenuModule, { declarations: function () { return [ContextMenuComponent, ContextMenuTemplateDirective, ContextMenuTargetDirective, ContextMenuTargetContainerDirective]; }, imports: function () { return [PopupModule, CommonModule, MenuModule]; }, exports: function () { return [ContextMenuComponent, ContextMenuTemplateDirective, ContextMenuTargetDirective, ContextMenuTargetContainerDirective, MenuModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MenusModule, [{\n type: NgModule,\n args: [{\n exports: [MenuModule, ContextMenuModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MenusModule, { exports: [MenuModule, ContextMenuModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NODE_INDEX, ContextMenuItemsService, ContextMenuTargetContainerDirective, ContextMenuTargetDirective, ContextMenuTargetService, BindingDirectiveBase, MenuBase, PreventableEvent, ActionsService, HoverService, ItemsService, NavigationService, bodyFactory, MenuComponent, ListComponent, ItemComponent, LinkDirective, ExpandArrowDirective, MenuItemComponent, MenuEvent, MenuSelectEvent, ItemContentTemplateDirective, ItemTemplateDirective, ItemLinkTemplateDirective, HierarchyBindingDirective, FlatBindingDirective, MenuModule, ContextMenuEvent, ContextMenuSelectEvent, ContextMenuPopupEvent, ContextMenuTemplateDirective, ContextMenuComponent, ContextMenuModule, ContextMenuService, MenusModule };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __param, __metadata } from 'tslib';\nimport { Directive, Optional, TemplateRef, Input, Component, ContentChild, ElementRef, 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 */\nimport * as ɵngcc0 from '@angular/core';\n\nconst _c0 = [\"*\"];\nconst packageMetadata = {\n name: '@progress/kendo-angular-pdf-export',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635940188,\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\nlet PDFExportTemplateDirective = class PDFExportTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nPDFExportTemplateDirective.ɵfac = function PDFExportTemplateDirective_Factory(t) { return new (t || PDFExportTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nPDFExportTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PDFExportTemplateDirective, selectors: [[\"\", \"kendoPDFTemplate\", \"\"]] });\nPDFExportTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], PDFExportTemplateDirective);\n\nconst FIELDS = ['bottom', 'left', 'right', 'top'];\n/**\n * Represents the Kendo UI PDFMargin component for Angular.\n */\nlet PDFExportMarginComponent = class 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 = function PDFExportMarginComponent_Factory(t) { return new (t || PDFExportMarginComponent)(); };\nPDFExportMarginComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PDFExportMarginComponent, selectors: [[\"kendo-pdf-export-margin\"]], inputs: { left: \"left\", top: \"top\", right: \"right\", bottom: \"bottom\" }, decls: 0, vars: 0, template: function PDFExportMarginComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportMarginComponent.prototype, \"left\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportMarginComponent.prototype, \"top\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportMarginComponent.prototype, \"right\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportMarginComponent.prototype, \"bottom\", void 0);\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 */\nlet PDFExportComponent = class 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 = function PDFExportComponent_Factory(t) { return new (t || PDFExportComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPDFExportComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PDFExportComponent, selectors: [[\"kendo-pdf-export\"]], contentQueries: function PDFExportComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, PDFExportTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, PDFExportMarginComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.pageTemplateDirective = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.marginComponent = _t.first);\n } }, inputs: { creator: \"creator\", fileName: \"fileName\", autoPrint: \"autoPrint\", author: \"author\", avoidLinks: \"avoidLinks\", forcePageBreak: \"forcePageBreak\", keepTogether: \"keepTogether\", date: \"date\", imageResolution: \"imageResolution\", 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\" }, ngContentSelectors: _c0, decls: 2, vars: 0, template: function PDFExportComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n } }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFExportComponent.prototype, \"autoPrint\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"author\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportComponent.prototype, \"avoidLinks\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"forcePageBreak\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"keepTogether\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"creator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], PDFExportComponent.prototype, \"date\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PDFExportComponent.prototype, \"imageResolution\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"fileName\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFExportComponent.prototype, \"forceProxy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"keywords\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFExportComponent.prototype, \"landscape\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportComponent.prototype, \"margin\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportComponent.prototype, \"paperSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PDFExportComponent.prototype, \"repeatHeaders\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], PDFExportComponent.prototype, \"scale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PDFExportComponent.prototype, \"proxyData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"proxyURL\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"proxyTarget\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"producer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"subject\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PDFExportComponent.prototype, \"title\", void 0);\n__decorate([\n ContentChild(PDFExportTemplateDirective, { static: false }),\n __metadata(\"design:type\", PDFExportTemplateDirective)\n], PDFExportComponent.prototype, \"pageTemplateDirective\", void 0);\n__decorate([\n ContentChild(PDFExportMarginComponent, { static: false }),\n __metadata(\"design:type\", PDFExportMarginComponent)\n], PDFExportComponent.prototype, \"marginComponent\", void 0);\nPDFExportComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef])\n], PDFExportComponent);\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 */\nlet PDFExportModule = class PDFExportModule {\n};\nPDFExportModule.ɵfac = function PDFExportModule_Factory(t) { return new (t || PDFExportModule)(); };\nPDFExportModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PDFExportModule });\nPDFExportModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFExportTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoPDFTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFExportMarginComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-pdf-export-margin',\n template: ``\n }]\n }], null, { left: [{\n type: Input\n }], top: [{\n type: Input\n }], right: [{\n type: Input\n }], bottom: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFExportComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-pdf-export',\n template: `
    `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { creator: [{\n type: Input\n }], fileName: [{\n type: Input\n }], 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 }], date: [{\n type: Input\n }], imageResolution: [{\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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PDFExportModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PDFExportModule, { declarations: [PDFExportComponent, PDFExportMarginComponent, PDFExportTemplateDirective], exports: [PDFExportComponent, PDFExportMarginComponent, PDFExportTemplateDirective] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PDFExportComponent, PDFExportModule, PDFExportMarginComponent, PDFExportTemplateDirective, compileTemplate };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __param, __metadata } from 'tslib';\nimport { Injectable, InjectionToken, Inject, Optional, NgZone, EventEmitter, isDevMode, Input, ElementRef, Output, ViewChild, Component, Renderer2, TemplateRef, ApplicationRef, ComponentFactoryResolver, Injector, NgModule } from '@angular/core';\nimport { siblingContainer, parents, addScroll, align, boundingOffset, offset, positionWithScroll, removeScroll, restrictToView, scrollPosition, getWindowViewPort } from '@progress/kendo-popup-common';\nimport { isDocumentAvailable, hasObservers, ResizeSensorComponent, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { fromEvent, merge, from } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport { style, animate, AnimationBuilder } from '@angular/animations';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/animations';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@progress/kendo-angular-common';\n\nconst _c0 = [\"container\"];\nfunction PopupComponent_ng_template_3_Template(rf, ctx) { }\nconst _c1 = [\"*\"];\nconst eitherRect = (rect, offset$$1) => {\n if (!rect) {\n return { height: 0, left: offset$$1.left, top: offset$$1.top, width: 0 };\n }\n return rect;\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 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}\nconst ɵ3 = () => {\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 hasRelativeStackingContext = memoize(ɵ3);\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\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 */\nlet DOMService = class 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(this.nativeElement(el));\n }\n getFontStyles(el) {\n const window = this.getWindow();\n if (!window || !el) {\n return [];\n }\n const computedStyles = window.getComputedStyle(this.nativeElement(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(this.nativeElement(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 // tslint:disable-next-line:no-unused-expression\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(this.nativeElement(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(this.nativeElement(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(this.nativeElement(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 = function DOMService_Factory(t) { return new (t || DOMService)(); };\nDOMService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DOMService, factory: function (t) { return DOMService.ɵfac(t); } });\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\n/**\n * @hidden\n */\nlet AlignService = class 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: offset$$1, 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$$1, scale) : this.relativeRect(anchor, element, offset$$1, scale);\n const elementRect = scaleRect(this._dom.offset(element), 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$$1, scale) {\n const scrollPos = this.elementScrollPosition(anchor, element);\n const rect = eitherRect(this._dom.offset(anchor), offset$$1);\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$$1, scale) {\n const rect = eitherRect(this._dom.position(anchor, element, scale), offset$$1);\n return scaleRect(rect, scale);\n }\n};\nAlignService.ɵfac = function AlignService_Factory(t) { return new (t || AlignService)(ɵngcc0.ɵɵinject(DOMService), ɵngcc0.ɵɵinject(SCALE, 8)); };\nAlignService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AlignService, factory: function (t) { return AlignService.ɵfac(t); } });\nAlignService = __decorate([ __param(1, Inject(SCALE)), __param(1, Optional()),\n __metadata(\"design:paramtypes\", [DOMService, Number])\n], AlignService);\n\n/**\n * @hidden\n */\nlet PositionService = class 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$$1 = dom.addOffset(currentLocation, result.offset);\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset$$1\n };\n }\n};\nPositionService.ɵfac = function PositionService_Factory(t) { return new (t || PositionService)(ɵngcc0.ɵɵinject(DOMService), ɵngcc0.ɵɵinject(SCALE, 8)); };\nPositionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PositionService, factory: function (t) { return PositionService.ɵfac(t); } });\nPositionService = __decorate([ __param(1, Inject(SCALE)), __param(1, Optional()),\n __metadata(\"design:paramtypes\", [DOMService, Number])\n], PositionService);\n\n/**\n * @hidden\n */\nlet ResizeService = class 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 = function ResizeService_Factory(t) { return new (t || ResizeService)(ɵngcc0.ɵɵinject(DOMService), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nResizeService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ResizeService, factory: function (t) { return ResizeService.ɵfac(t); } });\nResizeService = __decorate([ __metadata(\"design:paramtypes\", [DOMService, NgZone])\n], ResizeService);\n\n/**\n * @hidden\n */\nconst THRESHOLD_DIFF = 1;\n/**\n * @hidden\n */\nlet ScrollableService = class 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 nativeElement = this._dom.nativeElement(this.element);\n const parents$$1 = this._dom.scrollableParents(this.element);\n this._zone.runOutsideAngular(() => {\n const observables = parents$$1.map(p => fromEvent(p, \"scroll\").pipe(auditTime(FRAME_DURATION)));\n const subscriber = (e) => {\n const target = e.target;\n const isParent = parents$$1.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(nativeElement, 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(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 = function ScrollableService_Factory(t) { return new (t || ScrollableService)(ɵngcc0.ɵɵinject(DOMService), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nScrollableService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ScrollableService, factory: function (t) { return ScrollableService.ɵfac(t); } });\nScrollableService = __decorate([ __metadata(\"design:paramtypes\", [DOMService, NgZone])\n], ScrollableService);\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst DOWN = 'down';\nconst UP = 'up';\nconst DEFAULT_TYPE = 'slide';\nconst DEFAULT_DURATION = 100;\nconst animationTypes = {};\n/* tslint:disable:object-literal-sort-keys */\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 */\nlet AnimationService = class 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 = function AnimationService_Factory(t) { return new (t || AnimationService)(ɵngcc0.ɵɵinject(ɵngcc1.AnimationBuilder)); };\nAnimationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AnimationService, factory: function (t) { return AnimationService.ɵfac(t); } });\nAnimationService = __decorate([ __metadata(\"design:paramtypes\", [AnimationBuilder])\n], AnimationService);\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: 1642583997,\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 */\nlet PopupComponent = class 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.anchor || this.container).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$$1) {\n this.setContainerStyle('left', `${offset$$1.left}px`);\n this.setContainerStyle('top', `${offset$$1.top}px`);\n this._currentOffset = offset$$1;\n }\n setZIndex() {\n if (this.anchor) {\n this.setContainerStyle('z-index', String(this.domService.zIndex(this.anchor, this.container)));\n }\n }\n reposition() {\n if (!isDocumentAvailable()) {\n return;\n }\n const { flip, offset: offset$$1 } = this.position();\n if (!this.currentOffset || isDifferentOffset(this.currentOffset, offset$$1)) {\n this.currentOffset = offset$$1;\n if (hasObservers(this.positionChange)) {\n this._zone.run(() => this.positionChange.emit({ offset: offset$$1, 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.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.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.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 = function PopupComponent_Factory(t) { return new (t || PopupComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(AlignService), ɵngcc0.ɵɵdirectiveInject(DOMService), ɵngcc0.ɵɵdirectiveInject(PositionService), ɵngcc0.ɵɵdirectiveInject(ResizeService), ɵngcc0.ɵɵdirectiveInject(ScrollableService), ɵngcc0.ɵɵdirectiveInject(AnimationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nPopupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PopupComponent, selectors: [[\"kendo-popup\"]], viewQuery: function PopupComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n ɵngcc0.ɵɵviewQuery(ResizeSensorComponent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentContainer = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.resizeSensor = _t.first);\n } }, inputs: { animate: \"animate\", anchorAlign: \"anchorAlign\", collision: \"collision\", popupAlign: \"popupAlign\", copyAnchorStyles: \"copyAnchorStyles\", positionMode: \"positionMode\", offset: \"offset\", anchor: \"anchor\", popupClass: \"popupClass\", margin: \"margin\" }, outputs: { anchorViewportLeave: \"anchorViewportLeave\", close: \"close\", open: \"open\", positionChange: \"positionChange\" }, exportAs: [\"kendo-popup\"], features: [ɵngcc0.ɵɵProvidersFeature([AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c1, decls: 5, vars: 4, consts: [[1, \"k-popup\", 3, \"ngClass\"], [\"container\", \"\"], [3, \"ngTemplateOutlet\", \"ngIf\"], [3, \"rateLimit\", \"resize\"]], template: function PopupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵtemplate(3, PopupComponent_ng_template_3_Template, 0, 0, \"ng-template\", 2);\n ɵngcc0.ɵɵelementStart(4, \"kendo-resize-sensor\", 3);\n ɵngcc0.ɵɵlistener(\"resize\", function PopupComponent_Template_kendo_resize_sensor_resize_4_listener() { return ctx.onResize(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.popupClass);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.content)(\"ngIf\", ctx.content);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"rateLimit\", 100);\n } }, directives: [ɵngcc2.NgClass, ɵngcc2.NgTemplateOutlet, ɵngcc2.NgIf, ɵngcc3.ResizeSensorComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ElementRef)\n], PopupComponent.prototype, \"anchor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"anchorAlign\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"collision\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"popupAlign\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], PopupComponent.prototype, \"copyAnchorStyles\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"popupClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], PopupComponent.prototype, \"positionMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"offset\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], PopupComponent.prototype, \"margin\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupComponent.prototype, \"anchorViewportLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupComponent.prototype, \"close\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], PopupComponent.prototype, \"positionChange\", void 0);\n__decorate([\n ViewChild('container', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], PopupComponent.prototype, \"contentContainer\", void 0);\n__decorate([\n ViewChild(ResizeSensorComponent, { static: true }),\n __metadata(\"design:type\", ResizeSensorComponent)\n], PopupComponent.prototype, \"resizeSensor\", void 0);\nPopupComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n AlignService,\n DOMService,\n PositionService,\n ResizeService,\n ScrollableService,\n AnimationService,\n Renderer2,\n NgZone])\n], PopupComponent);\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 */\nlet PopupService = class 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 = function PopupService_Factory(t) { return new (t || PopupService)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(POPUP_CONTAINER, 8)); };\nPopupService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PopupService, factory: function (t) { return PopupService.ɵfac(t); } });\nPopupService = __decorate([ __param(3, Inject(POPUP_CONTAINER)), __param(3, Optional()),\n __metadata(\"design:paramtypes\", [ApplicationRef,\n ComponentFactoryResolver,\n Injector,\n ElementRef])\n], PopupService);\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 */\nlet PopupModule = class PopupModule {\n};\nPopupModule.ɵfac = function PopupModule_Factory(t) { return new (t || PopupModule)(); };\nPopupModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PopupModule });\nPopupModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [PopupService], imports: [[CommonModule, ResizeSensorModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DOMService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AlignService, [{\n type: Injectable\n }], function () { return [{ type: DOMService }, { type: Number, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PositionService, [{\n type: Injectable\n }], function () { return [{ type: DOMService }, { type: Number, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeService, [{\n type: Injectable\n }], function () { return [{ type: DOMService }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollableService, [{\n type: Injectable\n }], function () { return [{ type: DOMService }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AnimationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.AnimationBuilder }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopupComponent, [{\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 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: AlignService }, { type: DOMService }, { type: PositionService }, { type: ResizeService }, { type: ScrollableService }, { type: AnimationService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }]; }, { animate: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], copyAnchorStyles: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], offset: [{\n type: Input\n }], anchorViewportLeave: [{\n type: Output\n }], close: [{\n type: Output\n }], open: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], anchor: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], margin: [{\n type: Input\n }], contentContainer: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopupService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ElementRef, decorators: [{\n type: Inject,\n args: [POPUP_CONTAINER]\n }, {\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopupModule, [{\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 }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PopupModule, { declarations: function () { return [PopupComponent]; }, imports: function () { return [CommonModule, ResizeSensorModule]; }, exports: function () { return [PopupComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService, PopupService, POPUP_CONTAINER, PopupComponent, PopupModule, SCALE };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata } from 'tslib';\nimport { isDevMode, HostBinding, Input, EventEmitter, Output, ViewChild, ElementRef, Component, NgZone, Renderer2, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { hasObservers } from '@progress/kendo-angular-common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@angular/common';\n\nconst _c0 = [\"progressStatus\"];\nconst _c1 = [\"progressStatusWrap\"];\nfunction ProgressBarComponent_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.formattedLabelValue);\n} }\nfunction ProgressBarComponent_span_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 6);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.formattedLabelValue);\n} }\nfunction ChunkProgressBarComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"li\", 2);\n} if (rf & 2) {\n const chunk_r1 = ctx.$implicit;\n const i_r2 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r0.orientationStyles.width)(\"height\", ctx_r0.orientationStyles.height);\n ɵngcc0.ɵɵclassProp(\"k-first\", i_r2 === 0)(\"k-last\", i_r2 === ctx_r0.chunkCount - 1)(\"k-state-selected\", chunk_r1);\n ɵngcc0.ɵɵproperty(\"ngClass\", chunk_r1 ? ctx_r0.progressCssClass : ctx_r0.emptyCssClass)(\"ngStyle\", chunk_r1 ? ctx_r0.progressCssStyle : ctx_r0.emptyCssStyle);\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-progressbar',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635939889,\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 MIN_MAX_ERROR_MESSAGE = `The max value should be greater than the min.`;\n/**\n * @hidden\n */\nconst LABEL_DECIMALS = 3;\n/**\n * @hidden\n */\nconst MIN_RATIO = 0.0001;\n\n/**\n * @hidden\n */\nconst reverseChunks = (orientation, reverse) => (orientation === 'vertical' && !reverse || orientation === 'horizontal' && reverse);\n/**\n * @hidden\n */\nconst formatValue = (value, min, max, label) => {\n const defaultFormattedValue = truncateNumber(value);\n if (typeof label !== 'boolean') {\n if (typeof label.format === 'string') {\n switch (label.format) {\n case 'value':\n return defaultFormattedValue;\n case 'percent':\n return `${Math.floor(calculatePercentage(value, min, max))}%`;\n default:\n return defaultFormattedValue;\n }\n }\n else if (typeof label.format === 'function') {\n return label.format(value);\n }\n else {\n return defaultFormattedValue;\n }\n }\n return defaultFormattedValue;\n};\n/**\n * @hidden\n */\nconst validateRange = (min, max) => {\n if (isDevMode && min > max) {\n throw new Error(MIN_MAX_ERROR_MESSAGE);\n }\n};\n/**\n * @hidden\n */\nconst adjustValueToRange = (min, max, value) => Math.max(Math.min(value, max), min);\n/**\n * @hidden\n */\nconst calculatePercentage = (value, min, max) => {\n const onePercent = Math.abs((max - min) / 100);\n return Math.abs((value - min) / onePercent);\n};\n/**\n * @hidden\n */\nconst truncateNumber = (value) => {\n const numberParts = value.toString().split('.');\n return numberParts.length === 1 ? `${numberParts[0]}` : `${numberParts[0]}.${numberParts[1].substr(0, LABEL_DECIMALS)}`;\n};\n/**\n * @hidden\n */\nconst calculateRatio = (min, max, value) => Math.max((value - min) / (max - min), MIN_RATIO);\n/**\n * @hidden\n */\nconst extractValueFromChanges = (changes, type, value) => changes[type] && changes[type].currentValue !== undefined ? changes[type].currentValue : value;\n/**\n * @hidden\n */\nconst runAnimation = (changes, animation, previousValue, displayValue) => animation && typeof requestAnimationFrame !== 'undefined' && changes.value && previousValue !== displayValue;\n/**\n * @hidden\n */\nconst stopCurrentAnimation = (changes) => {\n const isAnimationChanged = Boolean(changes.animation);\n const hasAnimation = isAnimationChanged && changes.animation.currentValue;\n return isAnimationChanged && !hasAnimation;\n};\n\n/**\n * @hidden\n */\nclass ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization) {\n this.localization = localization;\n this.widgetClasses = true;\n this.roleAttribute = 'progressbar';\n /**\n * The maximum value of the ProgressBar.\n * Defaults to `100`.\n */\n this.max = 100;\n /**\n * The minimum value of the ProgressBar.\n * Defaults to `0`.\n */\n this.min = 0;\n /**\n * The value of the ProgressBar.\n * Has to be between `min` and `max`.\n * By default, the value is equal to the `min` value.\n */\n /**\n * The value of the ProgressBar.\n * Has to be between `min` and `max`.\n * Defaults to `0`.\n */\n this.value = 0;\n /**\n * Defines the orientation of the ProgressBar\n * ([see example]({% slug progressbar_orientation %})).\n * Defaults to `horizontal`.\n */\n this.orientation = 'horizontal';\n /**\n * If set to `true`, the ProgressBar will be disabled\n * ([see example]({% slug progressbar_disabled %})).\n * It will still allow you to change its value.\n * Defaults to `false`.\n */\n this.disabled = false;\n /**\n * If set to `true`, the ProgressBar will be reversed\n * ([see example]({% slug progressbar_direction %})).\n * Defaults to `false`.\n */\n this.reverse = false;\n /**\n * Sets the `indeterminate` state of the ProgressBar.\n * Defaults to `false`.\n */\n this.indeterminate = false;\n this.displayValue = 0;\n this.previousValue = 0;\n validatePackage(packageMetadata);\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get isHorizontal() {\n return this.orientation === 'horizontal';\n }\n get isVertical() {\n return this.orientation === 'vertical';\n }\n get disabledClass() {\n return this.disabled;\n }\n get reverseClass() {\n return this.reverse;\n }\n get indeterminateClass() {\n return this.indeterminate;\n }\n get dirAttribute() {\n return this.direction;\n }\n get ariaMinAttribute() {\n return String(this.min);\n }\n get ariaMaxAttribute() {\n return String(this.max);\n }\n get ariaValueAttribute() {\n return this.indeterminate ? undefined : String(this.displayValue);\n }\n /**\n * @hidden\n */\n get isCompleted() {\n return this.value === this.max;\n }\n /**\n * @hidden\n */\n get statusWidth() {\n return this.orientation === 'horizontal' ? this._progressRatio * 100 : 100;\n }\n /**\n * @hidden\n */\n get statusHeight() {\n return this.orientation === 'vertical' ? this._progressRatio * 100 : 100;\n }\n /**\n * @hidden\n */\n get statusWrapperWidth() {\n return this.orientation === 'horizontal' ? 100 / this._progressRatio : 100;\n }\n /**\n * @hidden\n */\n get statusWrapperHeight() {\n return this.orientation === 'vertical' ? 100 / this._progressRatio : 100;\n }\n get _progressRatio() {\n return calculateRatio(this.min, this.max, this.displayValue);\n }\n ngOnChanges(changes) {\n const min = extractValueFromChanges(changes, 'min', this.min);\n const max = extractValueFromChanges(changes, 'max', this.max);\n const value = extractValueFromChanges(changes, 'value', this.value);\n if (changes.min || changes.max || changes.value) {\n if (changes.min || changes.max) {\n validateRange(min, max);\n }\n if (changes.value) {\n if (value == null || Number.isNaN(value)) {\n this.value = min;\n }\n const previousValue = this.displayValue;\n this.displayValue = adjustValueToRange(this.min, this.max, value);\n this.previousValue = previousValue;\n }\n this.min = min;\n this.max = max;\n this.displayValue = adjustValueToRange(this.min, this.max, value);\n }\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n}\nProgressBarBase.ɵfac = function ProgressBarBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nProgressBarBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ProgressBarBase, hostVars: 19, hostBindings: function ProgressBarBase_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.roleAttribute)(\"dir\", ctx.dirAttribute)(\"aria-valuemin\", ctx.ariaMinAttribute)(\"aria-valuemax\", ctx.ariaMaxAttribute)(\"aria-valuenow\", ctx.ariaValueAttribute);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClasses)(\"k-progressbar\", ctx.widgetClasses)(\"k-progressbar-horizontal\", ctx.isHorizontal)(\"k-progressbar-vertical\", ctx.isVertical)(\"k-state-disabled\", ctx.disabledClass)(\"k-progressbar-reverse\", ctx.reverseClass)(\"k-progressbar-indeterminate\", ctx.indeterminateClass);\n } }, inputs: { max: \"max\", min: \"min\", value: \"value\", orientation: \"orientation\", disabled: \"disabled\", reverse: \"reverse\", indeterminate: \"indeterminate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-progressbar'),\n __metadata(\"design:type\", Boolean)\n], ProgressBarBase.prototype, \"widgetClasses\", void 0);\n__decorate([\n HostBinding('class.k-progressbar-horizontal'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"isHorizontal\", null);\n__decorate([\n HostBinding('class.k-progressbar-vertical'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"isVertical\", null);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"disabledClass\", null);\n__decorate([\n HostBinding('class.k-progressbar-reverse'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"reverseClass\", null);\n__decorate([\n HostBinding('class.k-progressbar-indeterminate'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"indeterminateClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"dirAttribute\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String)\n], ProgressBarBase.prototype, \"roleAttribute\", void 0);\n__decorate([\n HostBinding('attr.aria-valuemin'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"ariaMinAttribute\", null);\n__decorate([\n HostBinding('attr.aria-valuemax'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"ariaMaxAttribute\", null);\n__decorate([\n HostBinding('attr.aria-valuenow'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ProgressBarBase.prototype, \"ariaValueAttribute\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ProgressBarBase.prototype, \"max\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ProgressBarBase.prototype, \"min\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ProgressBarBase.prototype, \"value\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ProgressBarBase.prototype, \"orientation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ProgressBarBase.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ProgressBarBase.prototype, \"reverse\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ProgressBarBase.prototype, \"indeterminate\", void 0);\n\n/**\n * Represents the [Kendo UI ProgressBar component for Angular]({% slug overview_progressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value = 50;\n * }\n * ```\n */\nlet ProgressBarComponent = class ProgressBarComponent extends ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization, zone, renderer) {\n super(localization);\n this.localization = localization;\n this.zone = zone;\n this.renderer = renderer;\n /**\n * Determines whether the status label will be visible.\n * Defaults to `true`—the label will be visible and displayed with the default\n * `LabelSettings` having its position set to `end` and its format set to `value`.\n */\n this.label = true;\n /**\n * The animation configuration of the ProgressBar.\n * Defaults to `false`.\n */\n this.animation = false;\n /**\n * Fires when the animation which indicates the latest value change is completed.\n */\n this.animationEnd = new EventEmitter();\n }\n /**\n * @hidden\n */\n get showLabel() {\n if (typeof this.label === 'boolean') {\n return this.label;\n }\n else {\n if (this.label && !this.label.hasOwnProperty('visible')) {\n this.label.visible = true;\n }\n return this.label.visible;\n }\n }\n /**\n * @hidden\n */\n get labelPosition() {\n if (typeof this.label === 'boolean') {\n return 'end';\n }\n else {\n if (this.label && !this.label.hasOwnProperty('position')) {\n this.label.position = 'end';\n }\n return this.label.position;\n }\n }\n /**\n * @hidden\n */\n get isPositionStart() {\n return this.labelPosition === 'start';\n }\n /**\n * @hidden\n */\n get isPositionCenter() {\n return this.labelPosition === 'center';\n }\n /**\n * @hidden\n */\n get isPositionEnd() {\n return this.labelPosition === 'end';\n }\n /**\n * @hidden\n */\n get formattedLabelValue() {\n return formatValue(this.displayValue, this.min, this.max, this.label);\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n if (this.isAnimationInProgress && stopCurrentAnimation(changes)) {\n this.cancelCurrentAnimation = true;\n }\n if (runAnimation(changes, this.animation, this.previousValue, this.displayValue) && !changes.value.firstChange) {\n this.startAnimation(this.previousValue);\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n /**\n * @hidden\n */\n startAnimation(previousValue) {\n this.isAnimationInProgress = true;\n const element = this.progressStatusElement.nativeElement;\n const wrapperElement = this.progressStatusWrapperElement.nativeElement;\n const animationOptions = this.getAnimationOptions(previousValue);\n this.zone.runOutsideAngular(() => {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n const animate = () => {\n const elapsed = new Date().getTime() - animationOptions.startTime;\n const position = Math.min(elapsed / animationOptions.duration, 1);\n const size = animationOptions.startSize + animationOptions.deltaSize * position;\n const wrapperSize = (100 / size) * 100;\n this.renderValueChange(element, wrapperElement, animationOptions.property, size, wrapperSize);\n if (position < 1) {\n if (this.cancelCurrentAnimation) {\n this.resetProgress(element, wrapperElement, animationOptions.property);\n return;\n }\n this.animationFrame = requestAnimationFrame(animate);\n }\n else {\n this.stopAnimation(previousValue);\n }\n };\n animate();\n });\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'boolean') {\n return 400;\n }\n else {\n if (this.animation && !this.animation.hasOwnProperty('duration')) {\n this.animation.duration = 400;\n }\n return this.animation.duration;\n }\n }\n stopAnimation(value) {\n if (hasObservers(this.animationEnd)) {\n this.zone.run(() => {\n this.animationEnd.emit({\n from: value,\n to: this.displayValue\n });\n });\n }\n this.zone.run(() => {\n this.isAnimationInProgress = false;\n });\n }\n getAnimationOptions(value) {\n const isHorizontal = this.orientation === 'horizontal';\n const previousRatio = calculateRatio(this.min, this.max, value);\n const previousStatusWidth = isHorizontal ? previousRatio * 100 : 100;\n const previousStatusHeight = !isHorizontal ? previousRatio * 100 : 100;\n const property = isHorizontal ? 'width' : 'height';\n const startTime = new Date().getTime();\n const startSize = isHorizontal ? previousStatusWidth : previousStatusHeight;\n const deltaSize = isHorizontal ? this.statusWidth - previousStatusWidth : this.statusHeight - previousStatusHeight;\n const duration = this.animationDuration * Math.abs((deltaSize / 100));\n return {\n property,\n startTime,\n startSize,\n deltaSize,\n duration\n };\n }\n renderValueChange(element, wrapperElement, property, size, wrapperSize) {\n this.renderer.setStyle(element, property, size + '%');\n this.renderer.setStyle(wrapperElement, property, wrapperSize + '%');\n }\n resetProgress(element, wrapperElement, property) {\n const size = calculateRatio(this.min, this.max, this.value);\n const newSize = size * 100;\n const newWrapperSize = 100 / size;\n this.renderValueChange(element, wrapperElement, property, newSize, newWrapperSize);\n this.zone.run(() => {\n this.cancelCurrentAnimation = false;\n this.isAnimationInProgress = false;\n });\n }\n};\nProgressBarComponent.ɵfac = function ProgressBarComponent_Factory(t) { return new (t || ProgressBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nProgressBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ProgressBarComponent, selectors: [[\"kendo-progressbar\"]], viewQuery: function ProgressBarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.progressStatusElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.progressStatusWrapperElement = _t.first);\n } }, inputs: { label: \"label\", animation: \"animation\", progressCssStyle: \"progressCssStyle\", progressCssClass: \"progressCssClass\", emptyCssStyle: \"emptyCssStyle\", emptyCssClass: \"emptyCssClass\" }, outputs: { animationEnd: \"animationEnd\" }, exportAs: [\"kendoProgressBar\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.progressbar'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], decls: 7, vars: 28, consts: [[1, \"k-progress-status-wrap\", 3, \"ngStyle\", \"ngClass\"], [\"class\", \"k-progress-status\", 4, \"ngIf\"], [1, \"k-state-selected\", 3, \"ngStyle\", \"ngClass\"], [\"progressStatus\", \"\"], [1, \"k-progress-status-wrap\"], [\"progressStatusWrap\", \"\"], [1, \"k-progress-status\"]], template: function ProgressBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵtemplate(1, ProgressBarComponent_span_1_Template, 2, 1, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 2, 3);\n ɵngcc0.ɵɵelementStart(4, \"span\", 4, 5);\n ɵngcc0.ɵɵtemplate(6, ProgressBarComponent_span_6_Template, 2, 1, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-progress-start\", ctx.isPositionStart)(\"k-progress-center\", ctx.isPositionCenter)(\"k-progress-end\", ctx.isPositionEnd);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.emptyCssStyle)(\"ngClass\", ctx.emptyCssClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.statusWidth, \"%\")(\"height\", ctx.statusHeight, \"%\");\n ɵngcc0.ɵɵclassProp(\"k-complete\", ctx.isCompleted);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.progressCssStyle)(\"ngClass\", ctx.progressCssClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.statusWrapperWidth, \"%\")(\"height\", ctx.statusWrapperHeight, \"%\");\n ɵngcc0.ɵɵclassProp(\"k-progress-start\", ctx.isPositionStart)(\"k-progress-center\", ctx.isPositionCenter)(\"k-progress-end\", ctx.isPositionEnd);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n } }, directives: [ɵngcc2.NgStyle, ɵngcc2.NgClass, ɵngcc2.NgIf], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ProgressBarComponent.prototype, \"label\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ProgressBarComponent.prototype, \"progressCssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ProgressBarComponent.prototype, \"progressCssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ProgressBarComponent.prototype, \"emptyCssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ProgressBarComponent.prototype, \"emptyCssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ProgressBarComponent.prototype, \"animation\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ProgressBarComponent.prototype, \"animationEnd\", void 0);\n__decorate([\n ViewChild('progressStatus', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ProgressBarComponent.prototype, \"progressStatusElement\", void 0);\n__decorate([\n ViewChild('progressStatusWrap', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ProgressBarComponent.prototype, \"progressStatusWrapperElement\", void 0);\nProgressBarComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n NgZone,\n Renderer2])\n], ProgressBarComponent);\n\n/**\n * Represents the [Kendo UI ChunkProgressBar component for Angular]({% slug overview_chunkprogressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value = 40;\n * }\n * ```\n */\nlet ChunkProgressBarComponent = class ChunkProgressBarComponent extends ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization) {\n super(localization);\n this.localization = localization;\n /**\n * Sets the number of chunks into which the ChunkProgressBar will be split.\n * Defaults to `5`.\n */\n this.chunkCount = 5;\n this._orientationStyles = {\n width: `${this.chunkSizePercentage}%`\n };\n }\n /**\n * @hidden\n */\n get chunks() {\n const count = this.chunkCount;\n const chunks = Array(count).fill(false);\n const completedChunks = Math.floor(this._progressRatio * count);\n for (let i = 0; i < completedChunks; i++) {\n chunks[i] = true;\n }\n if (reverseChunks(this.orientation, this.reverse)) {\n chunks.reverse();\n }\n return chunks;\n }\n /**\n * @hidden\n */\n get chunkSizePercentage() {\n return 100 / this.chunkCount;\n }\n /**\n * @hidden\n */\n get orientationStyles() {\n if (this.orientation === 'horizontal') {\n this._orientationStyles.width = `${this.chunkSizePercentage}%`;\n this._orientationStyles.height = undefined;\n }\n else {\n this._orientationStyles.height = `${this.chunkSizePercentage}%`;\n this._orientationStyles.width = undefined;\n }\n return this._orientationStyles;\n }\n};\nChunkProgressBarComponent.ɵfac = function ChunkProgressBarComponent_Factory(t) { return new (t || ChunkProgressBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nChunkProgressBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ChunkProgressBarComponent, selectors: [[\"kendo-chunkprogressbar\"]], inputs: { chunkCount: \"chunkCount\", progressCssStyle: \"progressCssStyle\", progressCssClass: \"progressCssClass\", emptyCssStyle: \"emptyCssStyle\", emptyCssClass: \"emptyCssClass\" }, exportAs: [\"kendoChunkProgressBar\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chunkprogressbar'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, \"k-reset\"], [\"class\", \"k-item\", 3, \"k-first\", \"k-last\", \"k-state-selected\", \"ngClass\", \"ngStyle\", \"width\", \"height\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-item\", 3, \"ngClass\", \"ngStyle\"]], template: function ChunkProgressBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵtemplate(1, ChunkProgressBarComponent_li_1_Template, 1, 12, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.chunks);\n } }, directives: [ɵngcc2.NgForOf, ɵngcc2.NgClass, ɵngcc2.NgStyle], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ChunkProgressBarComponent.prototype, \"chunkCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChunkProgressBarComponent.prototype, \"progressCssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChunkProgressBarComponent.prototype, \"progressCssClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChunkProgressBarComponent.prototype, \"emptyCssStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ChunkProgressBarComponent.prototype, \"emptyCssClass\", void 0);\nChunkProgressBarComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ChunkProgressBarComponent);\n\nconst COMPONENT_DIRECTIVES = [ProgressBarComponent, ChunkProgressBarComponent];\nconst MODULES = [CommonModule];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmodules'] }})\n * definition for the ProgressBar components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ProgressBar module\n * import { ProgressBarModule } from '@progress/kendo-angular-progressbar';\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, ProgressBarModule], // import ProgressBar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet ProgressBarModule = class ProgressBarModule {\n};\nProgressBarModule.ɵfac = function ProgressBarModule_Factory(t) { return new (t || ProgressBarModule)(); };\nProgressBarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ProgressBarModule });\nProgressBarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [MODULES] });\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ProgressBarComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoProgressBar',\n selector: 'kendo-progressbar',\n template: `\n \n {{formattedLabelValue}}\n \n \n \n {{formattedLabelValue}}\n \n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.progressbar'\n }\n ]\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { label: [{\n type: Input\n }], animation: [{\n type: Input\n }], animationEnd: [{\n type: Output\n }], progressCssStyle: [{\n type: Input\n }], progressCssClass: [{\n type: Input\n }], emptyCssStyle: [{\n type: Input\n }], emptyCssClass: [{\n type: Input\n }], progressStatusElement: [{\n type: ViewChild,\n args: ['progressStatus', { static: false }]\n }], progressStatusWrapperElement: [{\n type: ViewChild,\n args: ['progressStatusWrap', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChunkProgressBarComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoChunkProgressBar',\n selector: 'kendo-chunkprogressbar',\n template: `\n
      \n
    • \n
    • \n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chunkprogressbar'\n }\n ]\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { chunkCount: [{\n type: Input\n }], progressCssStyle: [{\n type: Input\n }], progressCssClass: [{\n type: Input\n }], emptyCssStyle: [{\n type: Input\n }], emptyCssClass: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ProgressBarModule, [{\n type: NgModule,\n args: [{\n declarations: COMPONENT_DIRECTIVES,\n exports: COMPONENT_DIRECTIVES,\n imports: MODULES\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ProgressBarModule, { declarations: [ProgressBarComponent, ChunkProgressBarComponent], imports: [CommonModule], exports: [ProgressBarComponent, ChunkProgressBarComponent] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ProgressBarBase, ProgressBarComponent, ChunkProgressBarComponent, ProgressBarModule };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata } from 'tslib';\nimport { EventEmitter, Input, Output, ContentChild, TemplateRef, HostBinding, HostListener, Component, ElementRef, ApplicationRef, NgZone, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { Keys, DraggableModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@progress/kendo-angular-common';\nimport * as ɵngcc3 from '@angular/common';\n\nfunction ScrollViewComponent_li_1_ng_template_1_Template(rf, ctx) { }\nconst _c0 = function (a0) { return { item: a0 }; };\nfunction ScrollViewComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 3);\n ɵngcc0.ɵɵtemplate(1, ScrollViewComponent_li_1_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r2 = ctx.$implicit;\n const i_r3 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx_r0.inlineListItemStyles(i_r3));\n ɵngcc0.ɵɵattribute(\"aria-hidden\", i_r3 !== 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.itemTemplateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(4, _c0, item_r2));\n} }\nfunction ScrollViewComponent_div_2_a_1_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function ScrollViewComponent_div_2_a_1_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.leftArrowClick(); });\n ɵngcc0.ɵɵelement(1, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction ScrollViewComponent_div_2_a_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function ScrollViewComponent_div_2_a_2_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.rightArrowClick(); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction ScrollViewComponent_div_2_kendo_scrollview_pager_3_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-scrollview-pager\", 13);\n ɵngcc0.ɵɵlistener(\"pagerIndexChange\", function ScrollViewComponent_div_2_kendo_scrollview_pager_3_Template_kendo_scrollview_pager_pagerIndexChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.pageChange($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"data\", ctx_r7.data)(\"activeIndex\", ctx_r7.activeIndex);\n} }\nconst _c1 = function (a0) { return { \"height\": a0 }; };\nfunction ScrollViewComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtemplate(1, ScrollViewComponent_div_2_a_1_Template, 2, 0, \"a\", 6);\n ɵngcc0.ɵɵtemplate(2, ScrollViewComponent_div_2_a_2_Template, 2, 0, \"a\", 7);\n ɵngcc0.ɵɵtemplate(3, ScrollViewComponent_div_2_kendo_scrollview_pager_3_Template, 1, 2, \"kendo-scrollview-pager\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngStyle\", ɵngcc0.ɵɵpureFunction1(4, _c1, ctx_r1.height));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.arrows && ctx_r1.displayLeftArrow());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.arrows && ctx_r1.displayRightArrow());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.pageable);\n} }\nconst _c2 = function (a0) { return { transform: a0 }; };\nfunction ScrollViewPagerComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function ScrollViewPagerComponent_li_1_Template_li_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r4); const i_r2 = restoredCtx.index; const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.indexChange(i_r2); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const i_r2 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.itemClass(i_r2));\n} }\nvar Dir;\n(function (Dir) {\n Dir[Dir[\"Next\"] = 1] = \"Next\";\n Dir[Dir[\"Prev\"] = -1] = \"Prev\";\n})(Dir || (Dir = {}));\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-scrollview',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635940117,\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/* tslint:disable:use-life-cycle-interface */\n/** @hidden */\nconst iterator = getIterator();\n// TODO: Move to kendo-common\nfunction getIterator() {\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 EMPTY_OBJ = {};\n/**\n * @hidden\n */\nclass DataResultIterator {\n constructor(source, index, endless, pageIndex, rtl) {\n this.rtl = false;\n this.source = source ? source : [];\n this.index = index ? index : 0;\n this.endless = endless;\n this.pageIndex = pageIndex;\n this.rtl = rtl;\n }\n get data() {\n let itemCount = this.total;\n let result;\n if (this.endless) {\n result = [\n this.source[(this.index - 1 + itemCount) % itemCount],\n this.source[this.index % itemCount],\n this.source[(this.index + 1 + itemCount) % itemCount]\n ];\n }\n else {\n const data = [EMPTY_OBJ, ...this.source, EMPTY_OBJ];\n result = data.slice(this.index, this.index + 3);\n }\n if (this.pageIndex !== null) {\n let isForward = this.pageIndex > this.index;\n result[isForward ? 2 : 0] = this.source[this.pageIndex];\n }\n return this.rtl ? result.reverse() : result;\n }\n get total() {\n return this.source.length;\n }\n canMoveNext() {\n return (this.endless || (this.index < this.total - 1));\n }\n canMovePrev() {\n return (this.endless || this.index > 0);\n }\n [iterator]() {\n return this.data[iterator]();\n }\n}\n/**\n * @hidden\n */\nclass DataCollection {\n constructor(accessor) {\n this.accessor = accessor;\n }\n get length() { return this.accessor().data.length; }\n get total() { return this.accessor().total; }\n item(index) {\n return this.accessor().data[index];\n }\n canMoveNext() {\n return this.accessor().canMoveNext();\n }\n canMovePrev() {\n return this.accessor().canMovePrev();\n }\n [Symbol.iterator]() {\n return this.accessor()[Symbol.iterator]();\n }\n}\n\n/**\n * Represents the [Kendo UI ScrollView component for Angular]({% slug overview_scrollview %}).\n *\n * @example\n * ```ts\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

    {{item.title}}

    \n * {{item.title}}\n *
    \n * \n * `,\n * styles: [`\n * .k-scrollview-wrap {\n * margin: 0 auto;\n * }\n * .demo-title {\n * position: absolute;\n * top: 0;\n * left: 0;\n * right: 0;\n * margin: 0;\n * padding: 15px;\n * color: #fff;\n * background-color: rgba(0,0,0,.4);\n * text-align: center;\n * font-size: 24px;\n * }\n * `]\n * })\n *\n * class AppComponent {\n * public width: string = \"600px\";\n * public height: string = \"400px\";\n * public endless: boolean = false;\n * public pageable: boolean = false;\n * public items: any[] = [\n * { title: 'Flower', url: 'https://bit.ly/2cJjYuB' },\n * { title: 'Mountain', url: 'https://bit.ly/2cTBNaL' },\n * { title: 'Sky', url: 'https://bit.ly/2cJl3Cx' }\n * ];\n * }\n * ```\n */\nlet ScrollViewComponent = class ScrollViewComponent {\n constructor(element, application, localization, ngZone) {\n this.element = element;\n this.application = application;\n this.localization = localization;\n this.ngZone = ngZone;\n /**\n * Provides the data source for the ScrollView ([see example]({% slug datasources_scrollview %})).\n */\n this.data = [];\n /**\n * Enables or disables the endless scrolling mode in which the data source items are endlessly looped\n * ([see example]({% slug endlessscrolling_scrollview %})). By default, `endless` is set to `false`\n * and the endless scrolling mode is disabled.\n */\n this.endless = false;\n /**\n * Sets `pagerOverlay` to one of three possible values: `dark`, `light` or `none`.\n * By default, the pager overlay is set to `none`.\n */\n this.pagerOverlay = 'none';\n /**\n * Enables or disables the built-in animations ([see example]({% slug animations_scrollview %})).\n * By default, `animate` is set to `true` and animations are enabled.\n */\n this.animate = true;\n /**\n * Enables or disables the built-in pager ([see example]({% slug paging_scrollview %})).\n * By default, `pageable` is set to `false` and paging is disabled.\n */\n this.pageable = false;\n /**\n * Enables or disables the built-in navigation arrows ([see example]({% slug arrows_scrollview %})).\n * By default, `arrows` is set to `false` and arrows are disabled.\n */\n this.arrows = false;\n /**\n * Fires after the current item is changed.\n */\n this.itemChanged = new EventEmitter();\n /**\n * Fires after the activeIndex has changed. Allows for two-way binding of the activeIndex property.\n */\n this.activeIndexChange = new EventEmitter();\n this.touchAction = 'pan-y pinch-zoom';\n this.animationState = null;\n this.transitionStyle = null;\n this.view = new DataCollection(() => new DataResultIterator(this.data, this.activeIndex, this.endless, this.pageIndex, this.isRTL));\n this.isDataSourceEmpty = false;\n this._activeIndex = 0;\n this.index = 0;\n this.pageIndex = null;\n this.transforms = ['translateX(-100%)', 'translateX(0%)', 'translateX(100%)'];\n validatePackage(packageMetadata);\n }\n /**\n * Represents the current item index ([see example]({% slug activeitems_scrollview %})).\n */\n set activeIndex(value) {\n this.index = this._activeIndex = value;\n }\n get activeIndex() {\n return this._activeIndex;\n }\n get widgetClass() {\n return true;\n }\n get scrollViewClass() {\n return true;\n }\n get scrollViewLightOverlayClass() {\n return this.pagerOverlay === 'light';\n }\n get scrollViewDarkOverlayClass() {\n return this.pagerOverlay === 'dark';\n }\n get hostWidth() { return this.width; }\n get hostHeight() { return this.height; }\n get tabIndex() { return 1; }\n get ariaLive() { return 'assertive'; }\n get dir() {\n return this.direction;\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n keyDown(e) {\n if (e.keyCode === Keys.ArrowLeft) {\n if (this.isRTL) {\n this.next();\n }\n else {\n this.prev();\n }\n }\n if (e.keyCode === Keys.ArrowRight) {\n if (this.isRTL) {\n this.prev();\n }\n else {\n this.next();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(_) {\n this.activeIndex = Math.max(Math.min(this.activeIndex, this.view.total - 1), 0);\n }\n /**\n * Navigates the ScrollView to the previous item.\n */\n prev() {\n this.navigate(Dir.Prev);\n }\n /**\n * Navigates the ScrollView to the next item.\n */\n next() {\n this.navigate(Dir.Next);\n }\n /**\n * @hidden\n */\n transitionEndHandler(e) {\n this.animationState = null;\n this.transitionStyle = null;\n if (e.toState === 'left' || e.toState === 'right') {\n if (this.pageIndex !== null) {\n this.activeIndex = this.pageIndex;\n this.pageIndex = null;\n }\n this.activeIndex = this.index;\n this.activeIndexChange.emit(this.activeIndex);\n this.itemChanged.emit({ index: this.activeIndex, item: this.view.item(1) });\n this.application.tick();\n }\n }\n /**\n * @hidden\n */\n handlePress(e) {\n this.initialTouchCoordinate = e.pageX;\n }\n /**\n * @hidden\n */\n handleDrag(e) {\n const deltaX = e.pageX - this.initialTouchCoordinate;\n if (!this.animationState && !this.isDragForbidden(deltaX) && this.draggedInsideBounds(deltaX)) {\n // TO DO: refactor to apply style without triggering the change detection\n this.ngZone.run(() => {\n this.transitionStyle = `translateX(${deltaX}px)`;\n });\n }\n }\n /**\n * @hidden\n */\n handleRelease(e) {\n const deltaX = e.pageX - this.initialTouchCoordinate;\n if (this.isDragForbidden(deltaX)) {\n return;\n }\n this.ngZone.run(() => {\n if (this.draggedEnoughToNavigate(deltaX)) {\n if (this.isRTL) {\n this.changeIndex(deltaX < 0 ? Dir.Prev : Dir.Next);\n }\n else {\n this.changeIndex(deltaX > 0 ? Dir.Prev : Dir.Next);\n }\n if (!this.animate) {\n this.transitionStyle = null;\n this.activeIndexChange.emit(this.activeIndex);\n this.itemChanged.emit({ index: this.activeIndex, item: this.view.item(1) });\n }\n }\n else if (Math.abs(deltaX) > 0) {\n if (this.animate) {\n this.animationState = 'center';\n }\n else {\n this.transitionStyle = null;\n }\n }\n });\n }\n /**\n * @hidden\n */\n pageChange(idx) {\n if (!this.animationState && this.activeIndex !== idx) {\n if (this.animate) {\n this.pageIndex = idx;\n if (this.isRTL) {\n this.animationState = (this.pageIndex > this.index ? 'right' : 'left');\n }\n else {\n this.animationState = (this.pageIndex > this.index ? 'left' : 'right');\n }\n }\n else {\n this.activeIndex = idx;\n }\n }\n }\n /**\n * @hidden\n */\n inlineListItemStyles(idx) {\n return {\n 'height': this.height,\n 'transform': this.transforms[idx],\n 'width': '100%'\n };\n }\n /**\n * @hidden\n */\n displayLeftArrow() {\n let isNotBorderItem;\n if (this.isRTL) {\n isNotBorderItem = this.activeIndex + 1 < this.view.total;\n }\n else {\n isNotBorderItem = this.activeIndex > 0;\n }\n return (this.endless || isNotBorderItem) && this.view.total > 0;\n }\n /**\n * @hidden\n */\n leftArrowClick() {\n if (this.isRTL) {\n this.next();\n }\n else {\n this.prev();\n }\n }\n /**\n * @hidden\n */\n displayRightArrow() {\n let isNotBorderItem;\n if (this.isRTL) {\n isNotBorderItem = this.activeIndex > 0;\n }\n else {\n isNotBorderItem = this.activeIndex + 1 < this.view.total;\n }\n return (this.endless || isNotBorderItem) && this.view.total > 0;\n }\n /**\n * @hidden\n */\n rightArrowClick() {\n if (this.isRTL) {\n this.prev();\n }\n else {\n this.next();\n }\n }\n draggedInsideBounds(deltaX) {\n return Math.abs(deltaX) <= this.element.nativeElement.offsetWidth;\n }\n draggedEnoughToNavigate(deltaX) {\n return Math.abs(deltaX) > (this.element.nativeElement.offsetWidth / 2);\n }\n isDragForbidden(deltaX) {\n let pastEnd;\n let isEndReached;\n if (this.isRTL) {\n pastEnd = deltaX < 0 && deltaX !== 0;\n }\n else {\n pastEnd = deltaX > 0 && deltaX !== 0;\n }\n isEndReached = ((this.activeIndex === 0 && pastEnd) || (this.activeIndex === this.view.total - 1 && !pastEnd));\n return !this.endless && isEndReached;\n }\n navigate(direction) {\n if (this.isDataSourceEmpty || this.animationState) {\n return;\n }\n this.changeIndex(direction);\n if (!this.animate) {\n this.activeIndexChange.emit(this.activeIndex);\n this.itemChanged.emit({ index: this.activeIndex, item: this.view.item(1) });\n }\n }\n changeIndex(direction) {\n if (direction === Dir.Next && this.view.canMoveNext()) {\n this.index = (this.index + 1) % this.view.total;\n if (this.animate) {\n this.animationState = this.isRTL ? 'right' : 'left';\n }\n else {\n this.activeIndex = this.index;\n }\n }\n else if (direction === Dir.Prev && this.view.canMovePrev()) {\n this.index = this.index === 0 ? this.view.total - 1 : this.index - 1;\n if (this.animate) {\n this.animationState = this.isRTL ? 'left' : 'right';\n }\n else {\n this.activeIndex = this.index;\n }\n }\n }\n get isRTL() {\n return this.direction === 'rtl';\n }\n};\nScrollViewComponent.ɵfac = function ScrollViewComponent_Factory(t) { return new (t || ScrollViewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nScrollViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ScrollViewComponent, selectors: [[\"kendo-scrollview\"]], contentQueries: function ScrollViewComponent_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.itemTemplateRef = _t.first);\n } }, hostVars: 17, hostBindings: function ScrollViewComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function ScrollViewComponent_keydown_HostBindingHandler($event) { return ctx.keyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.tabIndex)(\"aria-live\", ctx.ariaLive)(\"dir\", ctx.dir);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx.touchAction)(\"width\", ctx.hostWidth)(\"height\", ctx.hostHeight);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.widgetClass)(\"k-scrollview\", ctx.scrollViewClass)(\"k-scrollview-light\", ctx.scrollViewLightOverlayClass)(\"k-scrollview-dark\", ctx.scrollViewDarkOverlayClass);\n } }, inputs: { data: \"data\", endless: \"endless\", pagerOverlay: \"pagerOverlay\", animate: \"animate\", pageable: \"pageable\", arrows: \"arrows\", activeIndex: \"activeIndex\", width: \"width\", height: \"height\" }, outputs: { itemChanged: \"itemChanged\", activeIndexChange: \"activeIndexChange\" }, exportAs: [\"kendoScrollView\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.scrollview'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 6, consts: [[\"kendoDraggable\", \"\", 1, \"k-scrollview-wrap\", 3, \"ngStyle\", \"kendoDrag\", \"kendoPress\", \"kendoRelease\"], [3, \"ngStyle\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"k-scrollview-elements\", 3, \"ngStyle\", 4, \"ngIf\"], [3, \"ngStyle\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"k-scrollview-elements\", 3, \"ngStyle\"], [\"class\", \"k-scrollview-prev\", \"aria-label\", \"previous\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"k-scrollview-next\", \"aria-label\", \"next\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"k-scrollview-nav-wrap\", 3, \"data\", \"activeIndex\", \"pagerIndexChange\", 4, \"ngIf\"], [\"aria-label\", \"previous\", 1, \"k-scrollview-prev\", 3, \"click\"], [1, \"k-icon\", \"k-i-arrowhead-w\"], [\"aria-label\", \"next\", 1, \"k-scrollview-next\", 3, \"click\"], [1, \"k-icon\", \"k-i-arrowhead-e\"], [1, \"k-scrollview-nav-wrap\", 3, \"data\", \"activeIndex\", \"pagerIndexChange\"]], template: function ScrollViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵlistener(\"@animateTo.done\", function ScrollViewComponent_Template_ul_animation_animateTo_done_0_listener($event) { return ctx.transitionEndHandler($event); })(\"kendoDrag\", function ScrollViewComponent_Template_ul_kendoDrag_0_listener($event) { return ctx.handleDrag($event); })(\"kendoPress\", function ScrollViewComponent_Template_ul_kendoPress_0_listener($event) { return ctx.handlePress($event); })(\"kendoRelease\", function ScrollViewComponent_Template_ul_kendoRelease_0_listener($event) { return ctx.handleRelease($event); });\n ɵngcc0.ɵɵtemplate(1, ScrollViewComponent_li_1_Template, 2, 6, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, ScrollViewComponent_div_2_Template, 4, 6, \"div\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngStyle\", ɵngcc0.ɵɵpureFunction1(4, _c2, ctx.transitionStyle))(\"@animateTo\", ctx.animationState);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.view);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.isDataSourceEmpty && (ctx.pageable || ctx.arrows));\n } }, directives: function () { return [ɵngcc2.DraggableDirective, ɵngcc3.NgStyle, ɵngcc3.NgForOf, ɵngcc3.NgTemplateOutlet, ɵngcc3.NgIf, ScrollViewPagerComponent]; }, encapsulation: 2, data: { animation: [\n trigger('animateTo', [\n state('center, left, right', style({ transform: 'translateX(0)' })),\n transition('* => right', [\n animate('300ms ease-out', style({ transform: 'translateX(100%)' }))\n ]),\n transition('* => left', [\n animate('300ms ease-out', style({ transform: 'translateX(-100%)' }))\n ]),\n transition('* => center', [\n animate('300ms ease-out')\n ])\n ])\n ] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ScrollViewComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ScrollViewComponent.prototype, \"activeIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ScrollViewComponent.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ScrollViewComponent.prototype, \"height\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ScrollViewComponent.prototype, \"endless\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ScrollViewComponent.prototype, \"pagerOverlay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ScrollViewComponent.prototype, \"animate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ScrollViewComponent.prototype, \"pageable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ScrollViewComponent.prototype, \"arrows\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ScrollViewComponent.prototype, \"itemChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ScrollViewComponent.prototype, \"activeIndexChange\", void 0);\n__decorate([\n ContentChild(TemplateRef, { static: false }),\n __metadata(\"design:type\", TemplateRef)\n], ScrollViewComponent.prototype, \"itemTemplateRef\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"widgetClass\", null);\n__decorate([\n HostBinding('class.k-scrollview'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"scrollViewClass\", null);\n__decorate([\n HostBinding('class.k-scrollview-light'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"scrollViewLightOverlayClass\", null);\n__decorate([\n HostBinding('class.k-scrollview-dark'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"scrollViewDarkOverlayClass\", null);\n__decorate([\n HostBinding('style.width'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"hostWidth\", null);\n__decorate([\n HostBinding('style.height'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"hostHeight\", null);\n__decorate([\n HostBinding('attr.tabindex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"tabIndex\", null);\n__decorate([\n HostBinding('attr.aria-live'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"ariaLive\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ScrollViewComponent.prototype, \"dir\", null);\n__decorate([\n HostBinding('style.touch-action'),\n __metadata(\"design:type\", String)\n], ScrollViewComponent.prototype, \"touchAction\", void 0);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ScrollViewComponent.prototype, \"keyDown\", null);\nScrollViewComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ApplicationRef,\n LocalizationService,\n NgZone])\n], ScrollViewComponent);\n\n/**\n * @hidden\n */\nlet ScrollViewPagerComponent = class ScrollViewPagerComponent {\n /**\n * @hidden\n */\n constructor() {\n this.pagerIndexChange = new EventEmitter();\n }\n itemClass(idx) {\n return {\n 'k-primary': idx === this.activeIndex\n };\n }\n indexChange(selectedIndex) {\n this.pagerIndexChange.emit(selectedIndex);\n }\n};\nScrollViewPagerComponent.ɵfac = function ScrollViewPagerComponent_Factory(t) { return new (t || ScrollViewPagerComponent)(); };\nScrollViewPagerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ScrollViewPagerComponent, selectors: [[\"kendo-scrollview-pager\"]], inputs: { activeIndex: \"activeIndex\", data: \"data\" }, outputs: { pagerIndexChange: \"pagerIndexChange\" }, decls: 2, vars: 1, consts: [[1, \"k-scrollview-pageable\", \"k-scrollview-nav\"], [\"class\", \"k-button\", 3, \"ngClass\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-button\", 3, \"ngClass\", \"click\"]], template: function ScrollViewPagerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵtemplate(1, ScrollViewPagerComponent_li_1_Template, 1, 1, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data);\n } }, directives: [ɵngcc3.NgForOf, ɵngcc3.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ScrollViewPagerComponent.prototype, \"activeIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ScrollViewPagerComponent.prototype, \"data\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ScrollViewPagerComponent.prototype, \"pagerIndexChange\", void 0);\n\nconst DECLARATIONS = [\n ScrollViewComponent,\n ScrollViewPagerComponent\n];\nconst EXPORTS = [\n ScrollViewComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ScrollView component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ScrollView module\n * import { ScrollViewModule } from '@progress/kendo-angular-scrollview';\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, ScrollViewModule], // import ScrollView module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet ScrollViewModule = class ScrollViewModule {\n};\nScrollViewModule.ɵfac = function ScrollViewModule_Factory(t) { return new (t || ScrollViewModule)(); };\nScrollViewModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ScrollViewModule });\nScrollViewModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, DraggableModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollViewComponent, [{\n type: Component,\n args: [{\n animations: [\n trigger('animateTo', [\n state('center, left, right', style({ transform: 'translateX(0)' })),\n transition('* => right', [\n animate('300ms ease-out', style({ transform: 'translateX(100%)' }))\n ]),\n transition('* => left', [\n animate('300ms ease-out', style({ transform: 'translateX(-100%)' }))\n ]),\n transition('* => center', [\n animate('300ms ease-out')\n ])\n ])\n ],\n exportAs: 'kendoScrollView',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.scrollview'\n }\n ],\n selector: 'kendo-scrollview',\n template: `\n
      \n \n \n \n \n
    \n
    \n\n \n \n \n \n \n \n \n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ApplicationRef }, { type: ɵngcc1.LocalizationService }, { type: ɵngcc0.NgZone }]; }, { data: [{\n type: Input\n }], endless: [{\n type: Input\n }], pagerOverlay: [{\n type: Input\n }], animate: [{\n type: Input\n }], pageable: [{\n type: Input\n }], arrows: [{\n type: Input\n }], itemChanged: [{\n type: Output\n }], activeIndexChange: [{\n type: Output\n }], touchAction: [{\n type: HostBinding,\n args: ['style.touch-action']\n }], activeIndex: [{\n type: Input\n }], widgetClass: [{\n type: HostBinding,\n args: ['class.k-widget']\n }], scrollViewClass: [{\n type: HostBinding,\n args: ['class.k-scrollview']\n }], scrollViewLightOverlayClass: [{\n type: HostBinding,\n args: ['class.k-scrollview-light']\n }], scrollViewDarkOverlayClass: [{\n type: HostBinding,\n args: ['class.k-scrollview-dark']\n }], hostWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], hostHeight: [{\n type: HostBinding,\n args: ['style.height']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaLive: [{\n type: HostBinding,\n args: ['attr.aria-live']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], \n /**\n * @hidden\n */\n keyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], itemTemplateRef: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollViewPagerComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-scrollview-pager',\n template: `\n
      \n
    • \n
    • \n
    \n `\n }]\n }], function () { return []; }, { pagerIndexChange: [{\n type: Output\n }], activeIndex: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollViewModule, [{\n type: NgModule,\n args: [{\n declarations: [DECLARATIONS],\n exports: [EXPORTS],\n imports: [CommonModule, DraggableModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ScrollViewModule, { declarations: function () { return [ScrollViewComponent, ScrollViewPagerComponent]; }, imports: function () { return [CommonModule, DraggableModule]; }, exports: function () { return [ScrollViewComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ScrollViewComponent, ScrollViewModule, ScrollViewPagerComponent };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata } from 'tslib';\nimport { EventEmitter, Injectable, NgZone, Input, Component, Output, ContentChildren, QueryList, ViewChild, ElementRef, TemplateRef, ViewContainerRef, ViewChildren, HostBinding, HostListener, ChangeDetectorRef, Renderer2, forwardRef, Directive, NgModule } from '@angular/core';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport { Keys, isDocumentAvailable, ResizeSensorComponent, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { take, filter, takeUntil } from 'rxjs/operators';\nimport { Subject, Subscription, merge, fromEvent } from 'rxjs';\nimport { ButtonGroupComponent, DropDownButtonComponent, SplitButtonComponent, ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@progress/kendo-angular-popup';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@progress/kendo-angular-common';\nimport * as ɵngcc5 from '@progress/kendo-angular-buttons';\n\nconst _c0 = [\"overflowButton\"];\nconst _c1 = [\"popupTemplate\"];\nconst _c2 = [\"resizeSensor\"];\nconst _c3 = [\"container\"];\nconst _c4 = [\"toolbarRenderer\"];\nconst _c5 = [\"overflowRenderer\"];\nfunction ToolBarComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"kendo-toolbar-renderer\", 6, 7);\n ɵngcc0.ɵɵlistener(\"rendererClick\", function ToolBarComponent_ng_container_1_Template_kendo_toolbar_renderer_rendererClick_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onRendererClick($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const tool_r6 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"location\", \"toolbar\")(\"resizable\", ctx_r0.overflow)(\"tool\", tool_r6);\n} }\nfunction ToolBarComponent_button_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 8, 9);\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarComponent_button_2_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.showPopup(); });\n ɵngcc0.ɵɵelement(2, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r1.displayAnchor);\n ɵngcc0.ɵɵproperty(\"title\", ctx_r1.moreToolsTitle);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.moreToolsTitle);\n} }\nfunction ToolBarComponent_ng_template_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"li\", 12);\n ɵngcc0.ɵɵelementStart(2, \"kendo-toolbar-renderer\", 6, 13);\n ɵngcc0.ɵɵlistener(\"rendererClick\", function ToolBarComponent_ng_template_3_ng_container_1_Template_kendo_toolbar_renderer_rendererClick_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.onRendererClick($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const tool_r15 = ctx.$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"location\", \"overflow\")(\"resizable\", ctx_r14.overflow)(\"tool\", tool_r15);\n} }\nfunction ToolBarComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 11);\n ɵngcc0.ɵɵtemplate(1, ToolBarComponent_ng_template_3_ng_container_1_Template, 4, 3, \"ng-container\", 1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.allTools);\n} }\nfunction ToolBarComponent_kendo_resize_sensor_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-resize-sensor\", 14, 15);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"rateLimit\", 1000);\n} }\nconst _c8 = [\"toolbarTemplate\"];\nconst _c9 = [\"toolbarButton\"];\nfunction ToolBarButtonComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 2, 3);\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarButtonComponent_ng_template_0_Template_button_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.click.emit($event); })(\"pointerdown\", function ToolBarButtonComponent_ng_template_0_Template_button_pointerdown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.pointerdown.emit($event); })(\"selectedChange\", function ToolBarButtonComponent_ng_template_0_Template_button_selectedChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.selectedChange.emit($event); })(\"blur\", function ToolBarButtonComponent_ng_template_0_Template_button_blur_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onBlur(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabindex\", ctx_r1.tabIndex)(\"ngStyle\", ctx_r1.style)(\"ngClass\", ctx_r1.className)(\"disabled\", ctx_r1.disabled)(\"toggleable\", ctx_r1.toggleable)(\"primary\", ctx_r1.primary)(\"selected\", ctx_r1.selected)(\"icon\", ctx_r1.toolbarOptions.icon)(\"iconClass\", ctx_r1.toolbarOptions.iconClass)(\"imageUrl\", ctx_r1.toolbarOptions.imageUrl)(\"look\", ctx_r1.look);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r1.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.toolbarOptions.text, \" \");\n} }\nfunction ToolBarButtonComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4, 5);\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarButtonComponent_ng_template_2_Template_button_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.click.emit($event); })(\"selectedChange\", function ToolBarButtonComponent_ng_template_2_Template_button_selectedChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.selectedChange.emit($event); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx_r3.style)(\"ngClass\", ctx_r3.className)(\"disabled\", ctx_r3.disabled)(\"toggleable\", ctx_r3.toggleable)(\"primary\", ctx_r3.primary)(\"selected\", ctx_r3.selected)(\"icon\", ctx_r3.overflowOptions.icon)(\"iconClass\", ctx_r3.overflowOptions.iconClass)(\"imageUrl\", ctx_r3.overflowOptions.imageUrl)(\"look\", ctx_r3.look);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.overflowOptions.text, \" \");\n} }\nconst _c10 = [\"toolbarButtonGroup\"];\nconst _c11 = [\"overflowButtonGroup\"];\nfunction ToolBarButtonGroupComponent_ng_template_0_span_2_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarButtonGroupComponent_ng_template_0_span_2_Template_span_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r8); const button_r6 = restoredCtx.$implicit; const ctx_r7 = ɵngcc0.ɵɵnextContext(2); button_r6.click.emit($event); return ctx_r7.onButtonClick($event); })(\"pointerdown\", function ToolBarButtonGroupComponent_ng_template_0_span_2_Template_span_pointerdown_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r8); const button_r6 = restoredCtx.$implicit; return button_r6.pointerdown.emit($event); })(\"selectedChange\", function ToolBarButtonGroupComponent_ng_template_0_span_2_Template_span_selectedChange_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r8); const button_r6 = restoredCtx.$implicit; const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.selectedChangeHandler($event, button_r6); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const button_r6 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngStyle\", button_r6.style)(\"ngClass\", button_r6.className)(\"disabled\", button_r6.disabled)(\"togglable\", button_r6.togglable)(\"primary\", button_r6.primary)(\"selected\", button_r6.selected)(\"icon\", button_r6.toolbarOptions.icon)(\"iconClass\", button_r6.toolbarOptions.iconClass)(\"imageUrl\", button_r6.toolbarOptions.imageUrl);\n ɵngcc0.ɵɵattribute(\"title\", button_r6.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", button_r6.toolbarOptions.text, \" \");\n} }\nfunction ToolBarButtonGroupComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-buttongroup\", 2, 3);\n ɵngcc0.ɵɵlistener(\"navigate\", function ToolBarButtonGroupComponent_ng_template_0_Template_kendo_buttongroup_navigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onNavigate($event); })(\"focus\", function ToolBarButtonGroupComponent_ng_template_0_Template_kendo_buttongroup_focus_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onFocus(); });\n ɵngcc0.ɵɵtemplate(2, ToolBarButtonGroupComponent_ng_template_0_span_2_Template, 2, 11, \"span\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabIndex\", -1)(\"selection\", ctx_r1.selection)(\"disabled\", ctx_r1.disabled)(\"look\", ctx_r1.look)(\"width\", ctx_r1.width);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.buttonComponents);\n} }\nfunction ToolBarButtonGroupComponent_ng_template_2_span_2_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarButtonGroupComponent_ng_template_2_span_2_Template_span_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const button_r16 = restoredCtx.$implicit; const ctx_r17 = ɵngcc0.ɵɵnextContext(2); button_r16.click.emit($event); return ctx_r17.onButtonClick($event); })(\"selectedChange\", function ToolBarButtonGroupComponent_ng_template_2_span_2_Template_span_selectedChange_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r18); const button_r16 = restoredCtx.$implicit; const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.selectedChangeHandler($event, button_r16); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const button_r16 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngStyle\", button_r16.style)(\"ngClass\", button_r16.className)(\"disabled\", button_r16.disabled)(\"togglable\", button_r16.togglable)(\"primary\", button_r16.primary)(\"selected\", button_r16.selected)(\"icon\", button_r16.overflowOptions.icon)(\"iconClass\", button_r16.overflowOptions.iconClass)(\"imageUrl\", button_r16.overflowOptions.imageUrl);\n ɵngcc0.ɵɵattribute(\"title\", button_r16.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", button_r16.overflowOptions.text, \" \");\n} }\nfunction ToolBarButtonGroupComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"kendo-buttongroup\", 6, 7);\n ɵngcc0.ɵɵtemplate(2, ToolBarButtonGroupComponent_ng_template_2_span_2_Template, 2, 11, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"tabIndex\", -1)(\"selection\", ctx_r3.selection)(\"disabled\", ctx_r3.disabled)(\"look\", ctx_r3.look)(\"width\", ctx_r3.width);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.buttonComponents);\n} }\nconst _c12 = [\"button\"];\nfunction ToolBarButtonListComponent_button_0_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 1, 2);\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarButtonListComponent_button_0_Template_button_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const item_r1 = restoredCtx.$implicit; const i_r2 = restoredCtx.index; const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick(item_r1, i_r2); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled || item_r1.disabled)(\"icon\", item_r1.icon)(\"iconClass\", item_r1.iconClass)(\"imageUrl\", item_r1.imageUrl)(\"look\", ctx_r0.look);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.getText(item_r1), \" \");\n} }\nconst _c13 = [\"dropdownButton\"];\nconst _c14 = [\"toolbarDropDownButton\"];\nconst _c15 = [\"overflowDropDownButtonButtonList\"];\nfunction ToolBarDropDownButtonComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-dropdownbutton\", 2, 3);\n ɵngcc0.ɵɵlistener(\"open\", function ToolBarDropDownButtonComponent_ng_template_0_Template_kendo_dropdownbutton_open_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.open.emit($event); })(\"close\", function ToolBarDropDownButtonComponent_ng_template_0_Template_kendo_dropdownbutton_close_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.close.emit($event); })(\"itemClick\", function ToolBarDropDownButtonComponent_ng_template_0_Template_kendo_dropdownbutton_itemClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.itemClick.emit($event); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", ctx_r1.toolbarOptions.icon)(\"iconClass\", ctx_r1.toolbarOptions.iconClass)(\"imageUrl\", ctx_r1.toolbarOptions.imageUrl)(\"buttonClass\", ctx_r1.buttonClass)(\"disabled\", ctx_r1.disabled)(\"tabIndex\", -1)(\"data\", ctx_r1.data)(\"textField\", ctx_r1.textField)(\"popupSettings\", ctx_r1.popupSettings)(\"look\", ctx_r1.look)(\"primary\", ctx_r1.primary);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.toolbarOptions.text, \" \");\n} }\nfunction ToolBarDropDownButtonComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarDropDownButtonComponent_ng_template_2_Template_button_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.itemClick.emit($event); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"kendo-toolbar-buttonlist\", 5, 6);\n ɵngcc0.ɵɵlistener(\"itemClick\", function ToolBarDropDownButtonComponent_ng_template_2_Template_kendo_toolbar_buttonlist_itemClick_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.itemClick.emit($event); })(\"click\", function ToolBarDropDownButtonComponent_ng_template_2_Template_kendo_toolbar_buttonlist_click_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onButtonListClick($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", true)(\"icon\", ctx_r3.overflowOptions.icon)(\"iconClass\", ctx_r3.overflowOptions.iconClass)(\"imageUrl\", ctx_r3.overflowOptions.imageUrl)(\"ngClass\", ctx_r3.buttonClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.overflowOptions.text, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"data\", ctx_r3.data)(\"disabled\", ctx_r3.disabled)(\"textField\", ctx_r3.textField);\n} }\nconst _c16 = [\"toolbarSplitButton\"];\nconst _c17 = [\"overflowSplitButton\"];\nconst _c18 = [\"overflowSplitButtonButtonList\"];\nfunction ToolBarSplitButtonComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-splitbutton\", 2, 3);\n ɵngcc0.ɵɵlistener(\"buttonClick\", function ToolBarSplitButtonComponent_ng_template_0_Template_kendo_splitbutton_buttonClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.buttonClick.emit($event); })(\"open\", function ToolBarSplitButtonComponent_ng_template_0_Template_kendo_splitbutton_open_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.open.emit($event); })(\"close\", function ToolBarSplitButtonComponent_ng_template_0_Template_kendo_splitbutton_close_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.close.emit($event); })(\"itemClick\", function ToolBarSplitButtonComponent_ng_template_0_Template_kendo_splitbutton_itemClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.itemClick.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"data\", ctx_r1.data)(\"text\", ctx_r1.toolbarOptions.text)(\"icon\", ctx_r1.toolbarOptions.icon)(\"iconClass\", ctx_r1.toolbarOptions.iconClass)(\"imageUrl\", ctx_r1.toolbarOptions.imageUrl)(\"buttonClass\", ctx_r1.buttonClass)(\"arrowButtonClass\", ctx_r1.arrowButtonClass)(\"arrowButtonIcon\", ctx_r1.arrowButtonIcon)(\"disabled\", ctx_r1.disabled)(\"tabIndex\", -1)(\"textField\", ctx_r1.textField)(\"popupSettings\", ctx_r1.popupSettings)(\"look\", ctx_r1.look);\n} }\nfunction ToolBarSplitButtonComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4, 5);\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarSplitButtonComponent_ng_template_2_Template_button_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.buttonClick.emit($event); })(\"click\", function ToolBarSplitButtonComponent_ng_template_2_Template_button_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.onMainButtonClick($event); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"kendo-toolbar-buttonlist\", 6, 7);\n ɵngcc0.ɵɵlistener(\"itemClick\", function ToolBarSplitButtonComponent_ng_template_2_Template_kendo_toolbar_buttonlist_itemClick_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.itemClick.emit($event); })(\"click\", function ToolBarSplitButtonComponent_ng_template_2_Template_kendo_toolbar_buttonlist_click_3_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.onButtonListClick($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled)(\"icon\", ctx_r3.overflowOptions.icon)(\"iconClass\", ctx_r3.overflowOptions.iconClass)(\"imageUrl\", ctx_r3.overflowOptions.imageUrl)(\"look\", ctx_r3.look)(\"ngClass\", ctx_r3.buttonClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.overflowOptions.text, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"look\", ctx_r3.look)(\"data\", ctx_r3.data)(\"disabled\", ctx_r3.disabled)(\"textField\", ctx_r3.textField);\n} }\nconst _c19 = [\"separator\"];\nfunction ToolBarSeparatorComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 1);\n} }\nfunction ToolBarRendererComponent_ng_container_0_ng_template_1_Template(rf, ctx) { }\nfunction ToolBarRendererComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, ToolBarRendererComponent_ng_container_0_ng_template_1_Template, 0, 0, \"ng-template\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.template);\n} }\nfunction ToolBarRendererComponent_ng_container_1_ng_template_1_Template(rf, ctx) { }\nfunction ToolBarRendererComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, ToolBarRendererComponent_ng_container_1_ng_template_1_Template, 0, 0, \"ng-template\", 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template);\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-toolbar',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635939564,\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 */\nlet RefreshService = class RefreshService {\n /**\n * @hidden\n */\n constructor() {\n this.onRefresh = new EventEmitter();\n }\n refresh(tool) {\n this.onRefresh.emit(tool);\n }\n};\nRefreshService.ɵfac = function RefreshService_Factory(t) { return new (t || RefreshService)(); };\nRefreshService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: RefreshService, factory: function (t) { return RefreshService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nfunction outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseFloat(style.marginLeft) || 0 + parseFloat(style.marginRight) || 0;\n return width;\n}\n/**\n * @hidden\n */\nfunction innerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width -= parseFloat(style.paddingLeft) || 0 + parseFloat(style.borderLeftWidth) || 0;\n width -= parseFloat(style.paddingRight) || 0 + parseFloat(style.borderRightWidth) || 0;\n return width;\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 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 should 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 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 isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n let focusable = tabIndex !== null;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusable(node, checkVisibility));\n};\n/**\n * @hidden\n */\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusable(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nconst findFocusableSibling = (element, checkVisibility = true, reverse) => {\n let node = reverse ? element.prevSibling : element.nextSibling;\n while (node) {\n if (node.nodeType === 1) {\n const result = findElement(node, el => isFocusable(el, checkVisibility));\n if (result) {\n return result;\n }\n }\n node = reverse ? node.prevSibling : node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst makePeeker = (collection) => (index) => isPresent(collection[index]);\n/**\n * @hidden\n */\nconst getIndexOfFocused = (prevKeyCode, nextKeyCode, collection) => (ev) => {\n switch (ev.type) {\n case 'keydown':\n if (ev.keyCode === prevKeyCode) {\n return collection.length - 1;\n }\n if (ev.keyCode === nextKeyCode) {\n return 0;\n }\n break;\n case 'click':\n return collection.findIndex(be => be === ev.target || be.contains(ev.target));\n case 'focus':\n return 0;\n default:\n return 0;\n }\n};\n/**\n * @hidden\n */\nconst seekFocusedIndex = (prevKeyCode, nextKeyCode, seeker) => (startIndex, ev) => {\n switch (ev.keyCode) {\n case prevKeyCode:\n return seeker(startIndex - 1) ? startIndex - 1 : startIndex;\n case nextKeyCode:\n return seeker(startIndex + 1) ? startIndex + 1 : startIndex;\n default:\n return startIndex;\n }\n};\n/**\n * @hidden\n */\nconst areEqual = (first) => (second) => first === second;\n/**\n * @hidden\n */\nconst getNextKey = (rtl = false) => (overflows = true) => overflows ? Keys.ArrowDown : rtl ? Keys.ArrowLeft : Keys.ArrowRight;\n/**\n * @hidden\n */\nconst getPrevKey = (rtl = false) => (overflows = true) => overflows ? Keys.ArrowUp : rtl ? Keys.ArrowRight : Keys.ArrowLeft;\n/**\n * @hidden\n */\nconst getValueForLocation = (property, displayMode, overflows) => {\n switch (displayMode) {\n case 'toolbar':\n return overflows ? undefined : property;\n case 'overflow':\n return overflows ? property : undefined;\n default:\n return property;\n }\n};\n\n/**\n * @hidden\n */\nlet NavigationService = class NavigationService {\n constructor(zone) {\n this.zone = zone;\n this.focused = { renderedTool: null, index: -1 };\n this.renderedTools = [];\n this.isPopupFocused = false;\n this.isOverflowButtonFocused = false;\n }\n setRenderedTools(rts) {\n this.renderedTools = [...rts];\n }\n click({ context, event: ev }) {\n if (this.focused.renderedTool !== context && ev) {\n this.focus(context, ev);\n }\n }\n moveFocusToToolBar() {\n this.isPopupFocused = false;\n this.focusOverflowButton();\n }\n moveFocusToPopup() {\n this.isPopupFocused = true;\n this.blurOverflowButton();\n this.focus();\n }\n focusNext(ev) {\n if (!this.isOverflowButtonFocused && this.focused.renderedTool && !this.focused.renderedTool.tool.handleKey(ev)) {\n const nextRT = this.getFocusableTools().slice(this.focused.index + 1)[0];\n if (nextRT) {\n this.focus(nextRT, ev);\n }\n else {\n if (this.isOverflowButtonVisible() && !this.isPopupFocused) {\n this.focusOverflowButton();\n }\n }\n }\n }\n focusPrev(ev) {\n if (this.isOverflowButtonFocused) {\n const lastFocusableRT = this.getFocusableTools().reverse()[0];\n this.focus(lastFocusableRT, ev);\n }\n else if (this.focused.renderedTool && !this.focused.renderedTool.tool.handleKey(ev)) {\n const prevRT = this.getFocusableTools()\n .slice(0, this.focused.index)\n .reverse()[0];\n if (prevRT) {\n this.focus(prevRT, ev);\n }\n }\n }\n resetNavigation() {\n this.blurOverflowButton();\n this.focused.renderedTool = null;\n this.focused.index = -1;\n }\n focusFirst(ev) {\n const firstTool = this.getFocusableTools()[0];\n const overFlowButton = this.overflowButton;\n if (firstTool) {\n this.focused.renderedTool = firstTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === firstTool);\n this.focus(firstTool, ev);\n }\n else if (overFlowButton) {\n overFlowButton.nativeElement.focus();\n }\n }\n getFocusableTools() {\n return this.renderedTools.filter(rt => rt.tool.overflows === this.isPopupFocused && rt.tool.canFocus());\n }\n focus(renderedTool, ev) {\n // running the code below in onStable fixes issue #2939\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (!renderedTool) {\n const focusableRTs = this.getFocusableTools();\n const lastFocusedRT = focusableRTs.find(rt => rt === this.focused.renderedTool) || focusableRTs[0];\n // guard against only disabled tools\n if (lastFocusedRT) {\n this.focused.renderedTool = lastFocusedRT;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === lastFocusedRT);\n // if event is undefined, then this means that the tool is the first one in the overflow popup\n lastFocusedRT.tool.focus(ev);\n }\n }\n else if (renderedTool.tool.canFocus && renderedTool.tool.canFocus()) {\n this.focused.renderedTool = renderedTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === renderedTool);\n renderedTool.tool.focus(ev);\n this.blurOverflowButton();\n }\n });\n }\n blurOverflowButton() {\n if (this.overflowButton) {\n this.isOverflowButtonFocused = false;\n this.overflowButton.nativeElement.tabIndex = -1;\n }\n }\n focusOverflowButton() {\n this.isOverflowButtonFocused = true;\n this.overflowButton.nativeElement.tabIndex = 0;\n this.overflowButton.nativeElement.focus();\n }\n isOverflowButtonVisible() {\n return (isPresent(this.overflowButton) &&\n window.getComputedStyle(this.overflowButton.nativeElement).getPropertyValue('visibility') === 'visible');\n }\n};\nNavigationService.ɵfac = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], NavigationService);\n\n/**\n * Represents the Base ToolBar Tool component for Angular.\n * Extend this class to create custom tools.\n */\nlet ToolBarToolComponent = class ToolBarToolComponent {\n /**\n * Represents the Base ToolBar Tool component for Angular.\n * Extend this class to create custom tools.\n */\n constructor() {\n this.tabIndex = -1; //Focus movement inside the toolbar is managed using roving tabindex.\n this.overflows = true;\n // this should be replaced with showTool: DisplayMode = 'both';\n /**\n * @hidden\n */\n this.responsive = true;\n }\n get toolbarDisplay() {\n return this.overflows ? 'none' : 'inline-block';\n }\n get overflowDisplay() {\n return this.overflows ? 'block' : 'none';\n }\n /**\n * Determines if the tool can be focused.\n * If the returned value is `false`, the tool will not be part of the keyboard navigation.\n * @returns `true` if the tool should take part in keyboard navigation.\n */\n canFocus() {\n return false;\n }\n /**\n * Called when the tool is focused.\n * The method accepts as argument the original browser event, which can be a `KeyboardEvent`, `MouseEvent` or `FocusEvent`.\n * @param {Event} ev - This is the event that caused the tool to be focused.\n */\n // @ts-ignore\n focus(ev) {\n /* noop */\n }\n /**\n * Called when the tool is focused and one of the arrow keys is pressed.\n * The returned boolean value determines whether the `ToolBarComponent` will move the focus to the next/previous `ToolBarToolComponent`\n * ([see example]({% slug customcontroltypes_toolbar %}#toc-adding-keyboard-navigation)).\n * @param {KeyboardEvent} ev - The last pressed arrow key\n * @returns\n */\n // @ts-ignore\n handleKey(ev) {\n return false;\n }\n};\nToolBarToolComponent.ɵfac = function ToolBarToolComponent_Factory(t) { return new (t || ToolBarToolComponent)(); };\nToolBarToolComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarToolComponent, selectors: [[\"toolbar-tool\"]], inputs: { responsive: \"responsive\" }, decls: 0, vars: 0, template: function ToolBarToolComponent_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarToolComponent.prototype, \"responsive\", void 0);\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 defaultPopupWidth = '150px';\n\nconst getInitialPopupSettings = (isRtl) => ({\n animate: true,\n anchorAlign: { horizontal: isRtl ? 'left' : 'right', vertical: 'bottom' },\n popupAlign: { horizontal: isRtl ? 'left' : 'right', vertical: 'top' }\n});\n/**\n * Represents the [Kendo UI ToolBar component for Angular]({% slug overview_toolbar %}).\n */\nlet ToolBarComponent = class ToolBarComponent {\n constructor(localization, popupService, refreshService, navigationService, element, cdr, zone, renderer) {\n this.localization = localization;\n this.popupService = popupService;\n this.refreshService = refreshService;\n this.navigationService = navigationService;\n this.element = element;\n this.cdr = cdr;\n this.zone = zone;\n this.renderer = renderer;\n /**\n * Hides the overflowing tools in a popup.\n */\n this.overflow = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the ToolBar.\n */\n this.tabindex = 0;\n /**\n * Fires when the overflow popup of the ToolBar is opened.\n */\n this.open = new EventEmitter();\n /**\n * Fires when the overflow popup of the ToolBar is closed.\n */\n this.close = new EventEmitter();\n this.hostClasses = true;\n this.cancelRenderedToolsSubscription$ = new Subject();\n this.subscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n set resizable(value) {\n this.overflow = value;\n }\n get resizable() {\n return this.overflow;\n }\n /**\n * Configures the popup of the ToolBar drop-down list.\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 */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, getInitialPopupSettings(this.localization.rtl), settings);\n }\n get popupSettings() {\n return this._popupSettings || getInitialPopupSettings(this.localization.rtl);\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return 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 set popupOpen(open) {\n if (this.popupOpen === open) {\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 get popupOpen() {\n return this._open;\n }\n /**\n * @hidden\n */\n onFocus(ev) {\n this.navigationService.resetNavigation();\n this.navigationService.focusFirst(ev);\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n }\n /**\n * @hidden\n */\n onFocusOut(event) {\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n if (closest(event.relatedTarget, (el) => el === this.element.nativeElement)) {\n this.element.nativeElement.setAttribute('tabindex', '-1');\n return;\n }\n this.element.nativeElement.setAttribute('tabindex', this.tabindex.toString());\n }\n get getRole() {\n return 'toolbar';\n }\n get getDir() {\n return this.direction;\n }\n get resizableClass() {\n return this.overflow;\n }\n ngAfterViewInit() {\n const element = this.element.nativeElement;\n if (!element.getAttribute('tabindex')) {\n this.element.nativeElement.setAttribute('tabindex', '0');\n }\n this.zone.runOutsideAngular(() => {\n this.toolbarKeydownListener = this.renderer.listen(this.element.nativeElement, 'keydown', (ev) => {\n switch (ev.keyCode) {\n case Keys.ArrowLeft:\n this.zone.run(() => {\n ev.preventDefault();\n this.direction === 'ltr' ? this.navigationService.focusPrev(ev) : this.navigationService.focusNext(ev);\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n });\n break;\n case Keys.ArrowRight:\n this.zone.run(() => {\n ev.preventDefault();\n this.direction === 'ltr' ? this.navigationService.focusNext(ev) : this.navigationService.focusPrev(ev);\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n });\n break;\n case Keys.Tab:\n this.zone.run(() => this.navigationService.resetNavigation());\n break;\n case Keys.Escape:\n this.zone.run(() => this.toggle(false));\n break;\n default:\n break;\n }\n });\n });\n if (this.overflow) {\n this.subscriptions.add(merge(this.resizeSensor.resize.pipe(filter(() => this.overflow)), this.renderedTools.changes).subscribe(() => this.onResize()));\n // because of https://github.com/telerik/kendo-angular-buttons/pull/276\n this.zone.runOutsideAngular(() => setTimeout(() => this.onResize()));\n this.navigationService.overflowButton = this.overflowButton;\n }\n this.navigationService.setRenderedTools(this.renderedTools.toArray());\n this.subscriptions.add(this.renderedTools.changes.subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray())));\n }\n ngOnInit() {\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n if (isDocumentAvailable()) {\n this.zone.runOutsideAngular(() => this.subscriptions.add(fromEvent(document, 'click')\n .pipe(filter(() => !!this.popupRef), filter((ev) => !this.popupRef.popup.instance.container.nativeElement.contains(ev.target)), filter((ev) => !this.overflowButton.nativeElement.contains(ev.target)))\n .subscribe(() => {\n this.zone.run(() => {\n this.popupOpen = false;\n });\n })));\n }\n }\n ngOnChanges(changes) {\n if (changes.tabindex) {\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', changes.tabindex.currentValue.toString());\n }\n }\n ngOnDestroy() {\n if (this.popupRef) {\n this.popupRef.close();\n }\n if (this.toolbarKeydownListener) {\n this.toolbarKeydownListener();\n }\n this.cancelRenderedToolsSubscription$.next();\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n get moreToolsTitle() {\n return this.localization.get('moreToolsTitle');\n }\n /**\n * @hidden\n */\n onRendererClick(data) {\n this.navigationService.click(data);\n this.element.nativeElement.setAttribute('tabindex', '-1');\n }\n /**\n * @hidden\n */\n showPopup() {\n this.popupOpen = !this.popupOpen;\n this.navigationService.click({ context: undefined, event: undefined });\n }\n /**\n * Toggles the visibility of the overflow popup.\n */\n toggle(popupOpen) {\n this._open = popupOpen !== undefined ? popupOpen : !this.popupOpen;\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (this.popupOpen) {\n this.popupRef = this.popupService.open({\n anchor: this.overflowButton,\n anchorAlign: this.popupSettings.anchorAlign,\n popupAlign: this.popupSettings.popupAlign,\n content: this.popupTemplate,\n appendTo: this.appendTo,\n animate: this.popupSettings.animate,\n popupClass: this.popupSettings.popupClass,\n positionMode: 'absolute'\n });\n this.setPopupContentDimensions();\n this.popupRef.popupOpen.subscribe(this.onPopupOpen.bind(this));\n this.popupRef.popupClose.subscribe(this.onPopupClose.bind(this));\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (isDocumentAvailable()) {\n const containerWidth = innerWidth(this.element.nativeElement) - this.overflowAnchorWidth;\n this.shrink(containerWidth, this.childrenWidth);\n this.stretch(containerWidth, this.childrenWidth);\n }\n this.cdr.detectChanges();\n this.resizeSensor.acceptSize();\n }\n /**\n * @hidden\n */\n onPopupOpen() {\n this.zone.runOutsideAngular(() => {\n this.overflowKeydownListener = this.renderer.listen(this.popupRef.popupElement, 'keydown', (ev) => {\n switch (ev.keyCode) {\n case Keys.ArrowUp:\n this.zone.run(() => {\n ev.preventDefault();\n this.navigationService.focusPrev(ev);\n });\n break;\n case Keys.ArrowDown:\n this.zone.run(() => {\n ev.preventDefault();\n this.navigationService.focusNext(ev);\n });\n break;\n case Keys.Escape:\n this.zone.run(() => this.toggle(false));\n break;\n case Keys.Tab:\n this.zone.run(() => {\n this.toggle(false);\n this.navigationService.resetNavigation();\n });\n break;\n default:\n break;\n }\n });\n });\n this.cancelRenderedToolsSubscription$.next();\n this.navigationService.moveFocusToPopup();\n this.navigationService.setRenderedTools(this.overflowRenderedTools.toArray());\n this.overflowRenderedTools.changes\n .pipe(takeUntil(this.cancelRenderedToolsSubscription$))\n .subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray()));\n }\n /**\n * @hidden\n */\n onPopupClose() {\n this.cancelRenderedToolsSubscription$.next();\n this.navigationService.setRenderedTools(this.renderedTools.toArray());\n this.renderedTools.changes\n .pipe(takeUntil(this.cancelRenderedToolsSubscription$))\n .subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray()));\n this.navigationService.moveFocusToToolBar();\n if (this.overflowKeydownListener) {\n this.overflowKeydownListener();\n }\n }\n get displayAnchor() {\n return this.allTools.filter(t => t.overflows && t.responsive).length > 0 ? 'visible' : 'hidden';\n }\n get popupWidth() {\n if (!this.popupSettings || !this.popupSettings.width) {\n return defaultPopupWidth;\n }\n return isNaN(this.popupSettings.width) ? this.popupSettings.width : `${this.popupSettings.width}px`;\n }\n get popupHeight() {\n if (!this.popupSettings || !this.popupSettings.height) {\n return;\n }\n return isNaN(this.popupSettings.height) ? this.popupSettings.height : `${this.popupSettings.height}px`;\n }\n get overflowAnchorWidth() {\n if (!this.overflow) {\n return 0;\n }\n if (!this.cachedOverflowAnchorWidth) {\n this.cachedOverflowAnchorWidth = outerWidth(this.overflowButton.nativeElement);\n }\n return this.cachedOverflowAnchorWidth;\n }\n get childrenWidth() {\n const width = this.renderedTools.reduce((totalWidth, tool) => tool.width + totalWidth, 0);\n return Math.ceil(width);\n }\n get visibleTools() {\n return this.allTools.filter((tool) => {\n return tool.overflows === false;\n });\n }\n get overflowTools() {\n return this.allTools.filter((tool) => {\n return tool.overflows === true;\n });\n }\n shrink(containerWidth, childrenWidth) {\n let width;\n if (containerWidth < childrenWidth) {\n for (var i = this.visibleTools.length - 1; i >= 0; i--) {\n if (containerWidth > childrenWidth) {\n break;\n }\n else {\n width = this.hideLastVisibleTool();\n childrenWidth -= width;\n }\n }\n }\n }\n stretch(containerWidth, childrenWidth) {\n let width;\n if (containerWidth > childrenWidth) {\n for (var i = this.overflowTools.length - 1; i >= 0; i--) {\n width = this.showFirstHiddenTool(containerWidth, childrenWidth);\n if (width) {\n childrenWidth += width;\n }\n else {\n break;\n }\n }\n }\n }\n hideLastVisibleTool() {\n const tool = this.visibleTools[this.visibleTools.length - 1];\n const renderedElement = this.renderedTools.find((r) => {\n return r.tool === tool;\n });\n const width = renderedElement.width;\n tool.overflows = true;\n this.refreshService.refresh(tool);\n return width;\n }\n showFirstHiddenTool(containerWidth, childrenWidth) {\n const tool = this.overflowTools[0];\n const renderedElement = this.renderedTools.find(r => r.tool === tool);\n tool.overflows = false;\n tool.visibility = 'hidden';\n this.refreshService.refresh(tool);\n if (containerWidth > childrenWidth + renderedElement.width) {\n tool.visibility = 'visible';\n this.refreshService.refresh(tool);\n }\n else {\n tool.overflows = true;\n this.refreshService.refresh(tool);\n }\n return renderedElement.width; // returns 0 if `overflows` is true\n }\n setPopupContentDimensions() {\n const popupContentContainer = this.popupRef.popup.instance.contentContainer.nativeElement;\n popupContentContainer.style.width = this.popupWidth;\n popupContentContainer.style.height = this.popupHeight;\n popupContentContainer.style.overflow = 'auto';\n }\n};\nToolBarComponent.ɵfac = function ToolBarComponent_Factory(t) { return new (t || ToolBarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.PopupService), ɵngcc0.ɵɵdirectiveInject(RefreshService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nToolBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarComponent, selectors: [[\"kendo-toolbar\"]], contentQueries: function ToolBarComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ToolBarToolComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.allTools = _t);\n } }, viewQuery: function ToolBarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c2, 5);\n ɵngcc0.ɵɵviewQuery(_c3, 7, ViewContainerRef);\n ɵngcc0.ɵɵviewQuery(_c4, 5);\n ɵngcc0.ɵɵviewQuery(_c5, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overflowButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.resizeSensor = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.container = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.renderedTools = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overflowRenderedTools = _t);\n } }, hostVars: 8, hostBindings: function ToolBarComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focus\", function ToolBarComponent_focus_HostBindingHandler($event) { return ctx.onFocus($event); })(\"focusout\", function ToolBarComponent_focusout_HostBindingHandler($event) { return ctx.onFocusOut($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.getRole)(\"dir\", ctx.getDir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostClasses)(\"k-toolbar\", ctx.hostClasses)(\"k-toolbar-resizable\", ctx.resizableClass);\n } }, inputs: { overflow: \"overflow\", tabindex: \"tabindex\", resizable: \"resizable\", popupSettings: \"popupSettings\", tabIndex: \"tabIndex\" }, outputs: { open: \"open\", close: \"close\" }, exportAs: [\"kendoToolBar\"], features: [ɵngcc0.ɵɵProvidersFeature([\n RefreshService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.toolbar'\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 3, consts: function () { let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the **more tools** button in a responsive ToolBar\n * @meaning kendo.toolbar.moreToolsTitle\n */\n const MSG_EXTERNAL_6762596725712096287$$DIST_FESM2015_INDEX_JS_7 = goog.getMsg(\"More tools\");\n i18n_6 = MSG_EXTERNAL_6762596725712096287$$DIST_FESM2015_INDEX_JS_7;\n }\n else {\n i18n_6 = $localize `:kendo.toolbar.moreToolsTitle|The title of the **more tools** button in a responsive ToolBar␟b8a8c1c9015e93172a76b7a44854e362b1fd921c␟6762596725712096287:More tools`;\n } return [[\"kendoToolbarLocalizedMessages\", \"\", \"moreToolsTitle\", i18n_6], [4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", \"tabindex\", \"-1\", \"class\", \"k-overflow-anchor k-button\", 3, \"title\", \"visibility\", \"click\", 4, \"ngIf\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [3, \"rateLimit\", 4, \"ngIf\"], [3, \"location\", \"resizable\", \"tool\", \"rendererClick\"], [\"toolbarRenderer\", \"\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"k-overflow-anchor\", \"k-button\", 3, \"title\", \"click\"], [\"overflowButton\", \"\"], [1, \"k-icon\", \"k-i-more-vertical\"], [1, \"k-overflow-container\", \"k-list-container\", \"k-reset\"], [1, \"k-item\"], [\"overflowRenderer\", \"\"], [3, \"rateLimit\"], [\"resizeSensor\", \"\"]]; }, template: function ToolBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵtemplate(1, ToolBarComponent_ng_container_1_Template, 3, 3, \"ng-container\", 1);\n ɵngcc0.ɵɵtemplate(2, ToolBarComponent_button_2_Template, 3, 4, \"button\", 2);\n ɵngcc0.ɵɵtemplate(3, ToolBarComponent_ng_template_3_Template, 2, 1, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementContainer(5, null, 4);\n ɵngcc0.ɵɵtemplate(7, ToolBarComponent_kendo_resize_sensor_7_Template, 2, 1, \"kendo-resize-sensor\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.allTools);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.overflow);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.overflow);\n } }, directives: function () { return [LocalizedToolbarMessagesDirective, ɵngcc3.NgForOf, ToolBarRendererComponent, ɵngcc3.NgIf, ɵngcc4.ResizeSensorComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarComponent.prototype, \"overflow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ToolBarComponent.prototype, \"resizable\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ToolBarComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], ToolBarComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input('tabIndex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], ToolBarComponent.prototype, \"tabIndex\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarComponent.prototype, \"close\", void 0);\n__decorate([\n ContentChildren(ToolBarToolComponent),\n __metadata(\"design:type\", QueryList)\n], ToolBarComponent.prototype, \"allTools\", void 0);\n__decorate([\n ViewChild('overflowButton', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ToolBarComponent.prototype, \"overflowButton\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('resizeSensor', { static: false }),\n __metadata(\"design:type\", ResizeSensorComponent)\n], ToolBarComponent.prototype, \"resizeSensor\", void 0);\n__decorate([\n ViewChild('container', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], ToolBarComponent.prototype, \"container\", void 0);\n__decorate([\n ViewChildren('toolbarRenderer'),\n __metadata(\"design:type\", QueryList)\n], ToolBarComponent.prototype, \"renderedTools\", void 0);\n__decorate([\n ViewChildren('overflowRenderer'),\n __metadata(\"design:type\", QueryList)\n], ToolBarComponent.prototype, \"overflowRenderedTools\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-toolbar'),\n __metadata(\"design:type\", Boolean)\n], ToolBarComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostListener('focus', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ToolBarComponent.prototype, \"onFocus\", null);\n__decorate([\n HostListener('focusout', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ToolBarComponent.prototype, \"onFocusOut\", null);\n__decorate([\n HostBinding('attr.role'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ToolBarComponent.prototype, \"getRole\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ToolBarComponent.prototype, \"getDir\", null);\n__decorate([\n HostBinding('class.k-toolbar-resizable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], ToolBarComponent.prototype, \"resizableClass\", null);\nToolBarComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n PopupService,\n RefreshService,\n NavigationService,\n ElementRef,\n ChangeDetectorRef,\n NgZone,\n Renderer2])\n], ToolBarComponent);\n\nvar ToolBarButtonComponent_1;\n/**\n * Represents the [Kendo UI ToolBar Button tool for Angular]({% slug controltypes_toolbar %}#toc-buttons).\n */\nlet ToolBarButtonComponent = ToolBarButtonComponent_1 = class ToolBarButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Specifies where button text should be displayed\n */\n this.showText = 'both';\n /**\n * Specifies where button icon should be displayed\n */\n this.showIcon = 'both';\n /**\n * Provides visual styling that indicates if the Button is active\n * ([see example]({% slug controltypes_toolbar %}#toc-toggle-buttons)).\n * By default, `toggleable` is set to `false`.\n */\n this.toggleable = false;\n /**\n * Adds visual weight to the Button and makes it primary\n * ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n */\n this.primary = false;\n /**\n * Changes the visual appearance by using alternative styling options\n * ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n *\n * The available values are:\n * * `bare`\n * * `flat`\n * * `outline`\n */\n this.look = 'default';\n /**\n * Sets the selected state of the Button.\n */\n this.selected = false;\n /**\n * Fires each time the Button is clicked.\n */\n this.click = new EventEmitter();\n /**\n * Fires when the Button [pointerdown](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/pointerdown_event) event is triggered.\n */\n this.pointerdown = new EventEmitter();\n /**\n * Fires each time the selected state of a Toggle Button is changed.\n * The event argument is the new selected state (Boolean).\n */\n this.selectedChange = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n }\n /**\n * Specifies the text of the Button ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * @hidden\n */\n get togglable() {\n return this.toggleable;\n }\n set togglable(value) {\n this.toggleable = value;\n }\n /**\n * Defines the name for an existing icon in a Kendo UI theme\n * ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n * The icon is rendered inside the Button by a `span.k-icon` element.\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\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(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\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 this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * @hidden\n */\n onBlur() {\n this.getButton().tabIndex = -1;\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev) {\n // guard against focusing twice on mousedown.\n if (!ev || ev.type === 'focus' || ev.type === 'keydown') {\n this.getButton().focus();\n }\n this.getButton().tabIndex = 0;\n }\n /**\n * @hidden\n */\n handleKey() {\n this.getButton().tabIndex = -1;\n return false;\n }\n getButton() {\n return (this.overflows ? this.overflowButtonElement : this.toolbarButtonElement).nativeElement;\n }\n};\nToolBarButtonComponent.ɵfac = function ToolBarButtonComponent_Factory(t) { return new (t || ToolBarButtonComponent)(); };\nToolBarButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarButtonComponent, selectors: [[\"kendo-toolbar-button\"]], viewQuery: function ToolBarButtonComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c8, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c9, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c0, 5, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarButtonElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overflowButtonElement = _t.first);\n } }, inputs: { showText: \"showText\", showIcon: \"showIcon\", toggleable: \"toggleable\", primary: \"primary\", look: \"look\", selected: \"selected\", text: \"text\", togglable: \"togglable\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", style: \"style\", className: \"className\", title: \"title\", disabled: \"disabled\" }, outputs: { click: \"click\", pointerdown: \"pointerdown\", selectedChange: \"selectedChange\" }, exportAs: [\"kendoToolBarButton\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [\"type\", \"button\", \"kendoButton\", \"\", 3, \"tabindex\", \"ngStyle\", \"ngClass\", \"disabled\", \"toggleable\", \"primary\", \"selected\", \"icon\", \"iconClass\", \"imageUrl\", \"look\", \"click\", \"pointerdown\", \"selectedChange\", \"blur\"], [\"toolbarButton\", \"\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"kendoButton\", \"\", 1, \"k-overflow-button\", 3, \"ngStyle\", \"ngClass\", \"disabled\", \"toggleable\", \"primary\", \"selected\", \"icon\", \"iconClass\", \"imageUrl\", \"look\", \"click\", \"selectedChange\"], [\"overflowButton\", \"\"]], template: function ToolBarButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolBarButtonComponent_ng_template_0_Template, 3, 13, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, ToolBarButtonComponent_ng_template_2_Template, 3, 12, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [ɵngcc5.ButtonDirective, ɵngcc3.NgStyle, ɵngcc3.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonComponent.prototype, \"showText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonComponent.prototype, \"showIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarButtonComponent.prototype, \"text\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ToolBarButtonComponent.prototype, \"style\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ToolBarButtonComponent.prototype, \"className\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonComponent.prototype, \"title\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarButtonComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarButtonComponent.prototype, \"toggleable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], ToolBarButtonComponent.prototype, \"togglable\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarButtonComponent.prototype, \"primary\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonComponent.prototype, \"look\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarButtonComponent.prototype, \"selected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarButtonComponent.prototype, \"icon\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarButtonComponent.prototype, \"iconClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarButtonComponent.prototype, \"imageUrl\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarButtonComponent.prototype, \"click\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarButtonComponent.prototype, \"pointerdown\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarButtonComponent.prototype, \"selectedChange\", void 0);\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarButtonComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarButtonComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('toolbarButton', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ToolBarButtonComponent.prototype, \"toolbarButtonElement\", void 0);\n__decorate([\n ViewChild('overflowButton', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ToolBarButtonComponent.prototype, \"overflowButtonElement\", void 0);\nToolBarButtonComponent = ToolBarButtonComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [])\n], ToolBarButtonComponent);\n\nvar ToolBarButtonGroupComponent_1;\n/**\n * Represents the Kendo UI Toolbar ButtonGroup for Angular.\n */\nlet ToolBarButtonGroupComponent = ToolBarButtonGroupComponent_1 = class ToolBarButtonGroupComponent extends ToolBarToolComponent {\n constructor(localization) {\n super();\n this.localization = localization;\n /**\n * By default, the selection mode of the ButtonGroup is set to `multiple`.\n */\n this.selection = 'multiple';\n /**\n * Changes the visual appearance by using alternative styling options.\n * Setting the `look` property on individual buttons inside the ToolBarButtonGroupComponent is not supported.\n *\n * The available values are:\n * * `bare`\n * * `flat`\n * * `outline`\n */\n this.look = 'default';\n this.focusedIndex = -1;\n this.getNextKey = getNextKey(this.localization.rtl);\n this.getPrevKey = getPrevKey(this.localization.rtl);\n }\n get buttonElements() {\n return this.getButtonGroup()\n .buttons.filter(b => !b.isDisabled)\n .map(b => b.element);\n }\n /**\n * @hidden\n */\n onFocus() {\n // triggered on tabin\n this.focusedIndex = 0;\n }\n /**\n * @hidden\n */\n onNavigate(ev) {\n ev.preventDefault();\n }\n /**\n * @hidden\n */\n selectedChangeHandler(state, button) {\n button.selected = state;\n button.selectedChange.emit(state);\n }\n /**\n * @hidden\n */\n onButtonClick(ev) {\n this.focusedIndex = this.buttonElements.findIndex(be => be === ev.target || be.contains(ev.target));\n this.focusButton(this.focusedIndex, ev);\n }\n /**\n * @hidden\n */\n canFocus() {\n return !(this.disabled || this.buttonElements.length === 0);\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n const nextKey = this.getNextKey(this.overflows);\n const prevKey = this.getPrevKey(this.overflows);\n this.focusedIndex = getIndexOfFocused(prevKey, nextKey, this.buttonElements)(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n const nextKey = this.getNextKey(this.overflows);\n const prevKey = this.getPrevKey(this.overflows);\n const peekAtIndex = makePeeker(this.buttonElements);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(prevKey, nextKey, peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n getButtonGroup() {\n return this.overflows ? this.overflowButtonGroup : this.toolbarButtonGroup;\n }\n focusButton(index, ev) {\n // Guard against focusing twice on mousedown.\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n this.buttonElements[index].focus();\n }\n }\n};\nToolBarButtonGroupComponent.ɵfac = function ToolBarButtonGroupComponent_Factory(t) { return new (t || ToolBarButtonGroupComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nToolBarButtonGroupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarButtonGroupComponent, selectors: [[\"kendo-toolbar-buttongroup\"]], contentQueries: function ToolBarButtonGroupComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, ToolBarButtonComponent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.buttonComponents = _t);\n } }, viewQuery: function ToolBarButtonGroupComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c8, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c10, 5);\n ɵngcc0.ɵɵviewQuery(_c11, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarButtonGroup = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overflowButtonGroup = _t.first);\n } }, inputs: { selection: \"selection\", look: \"look\", disabled: \"disabled\", width: \"width\" }, exportAs: [\"kendoToolBarButtonGroup\"], features: [ɵngcc0.ɵɵProvidersFeature([LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [3, \"tabIndex\", \"selection\", \"disabled\", \"look\", \"width\", \"navigate\", \"focus\"], [\"toolbarButtonGroup\", \"\"], [\"kendoButton\", \"\", 3, \"ngStyle\", \"ngClass\", \"disabled\", \"togglable\", \"primary\", \"selected\", \"icon\", \"iconClass\", \"imageUrl\", \"click\", \"pointerdown\", \"selectedChange\", 4, \"ngFor\", \"ngForOf\"], [\"kendoButton\", \"\", 3, \"ngStyle\", \"ngClass\", \"disabled\", \"togglable\", \"primary\", \"selected\", \"icon\", \"iconClass\", \"imageUrl\", \"click\", \"pointerdown\", \"selectedChange\"], [1, \"k-overflow-button\", 3, \"tabIndex\", \"selection\", \"disabled\", \"look\", \"width\"], [\"overflowButtonGroup\", \"\"], [\"kendoButton\", \"\", \"class\", \"k-overflow-button\", 3, \"ngStyle\", \"ngClass\", \"disabled\", \"togglable\", \"primary\", \"selected\", \"icon\", \"iconClass\", \"imageUrl\", \"click\", \"selectedChange\", 4, \"ngFor\", \"ngForOf\"], [\"kendoButton\", \"\", 1, \"k-overflow-button\", 3, \"ngStyle\", \"ngClass\", \"disabled\", \"togglable\", \"primary\", \"selected\", \"icon\", \"iconClass\", \"imageUrl\", \"click\", \"selectedChange\"]], template: function ToolBarButtonGroupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolBarButtonGroupComponent_ng_template_0_Template, 3, 6, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, ToolBarButtonGroupComponent_ng_template_2_Template, 3, 6, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [ɵngcc5.ButtonGroupComponent, ɵngcc3.NgForOf, ɵngcc5.ButtonDirective, ɵngcc3.NgStyle, ɵngcc3.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarButtonGroupComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonGroupComponent.prototype, \"selection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonGroupComponent.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonGroupComponent.prototype, \"look\", void 0);\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarButtonGroupComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarButtonGroupComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ContentChildren(forwardRef(() => ToolBarButtonComponent)),\n __metadata(\"design:type\", QueryList)\n], ToolBarButtonGroupComponent.prototype, \"buttonComponents\", void 0);\n__decorate([\n ViewChild('toolbarButtonGroup', { static: false }),\n __metadata(\"design:type\", ButtonGroupComponent)\n], ToolBarButtonGroupComponent.prototype, \"toolbarButtonGroup\", void 0);\n__decorate([\n ViewChild('overflowButtonGroup', { static: false }),\n __metadata(\"design:type\", ButtonGroupComponent)\n], ToolBarButtonGroupComponent.prototype, \"overflowButtonGroup\", void 0);\nToolBarButtonGroupComponent = ToolBarButtonGroupComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ToolBarButtonGroupComponent);\n\n/**\n * @hidden\n */\nlet ToolBarButtonListComponent = class ToolBarButtonListComponent {\n /**\n * @hidden\n */\n constructor() {\n this.disabled = false;\n this.look = 'default';\n this.itemClick = new EventEmitter();\n }\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n onClick(item, index) {\n const dataItem = this.data[index];\n if (item.click) {\n item.click(dataItem);\n }\n this.itemClick.emit(dataItem);\n }\n};\nToolBarButtonListComponent.ɵfac = function ToolBarButtonListComponent_Factory(t) { return new (t || ToolBarButtonListComponent)(); };\nToolBarButtonListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarButtonListComponent, selectors: [[\"kendo-toolbar-buttonlist\"]], viewQuery: function ToolBarButtonListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c12, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.buttons = _t);\n } }, inputs: { disabled: \"disabled\", look: \"look\", data: \"data\", textField: \"textField\" }, outputs: { itemClick: \"itemClick\" }, decls: 1, vars: 1, consts: [[\"type\", \"button\", \"tabindex\", \"-1\", \"kendoButton\", \"\", \"style\", \"padding-left: 16px\", \"class\", \"k-overflow-button\", 3, \"disabled\", \"icon\", \"iconClass\", \"imageUrl\", \"look\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", \"tabindex\", \"-1\", \"kendoButton\", \"\", 1, \"k-overflow-button\", 2, \"padding-left\", \"16px\", 3, \"disabled\", \"icon\", \"iconClass\", \"imageUrl\", \"look\", \"click\"], [\"button\", \"\"]], template: function ToolBarButtonListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolBarButtonListComponent_button_0_Template, 3, 6, \"button\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data);\n } }, directives: [ɵngcc3.NgForOf, ɵngcc5.ButtonDirective], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], ToolBarButtonListComponent.prototype, \"data\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonListComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarButtonListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarButtonListComponent.prototype, \"look\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarButtonListComponent.prototype, \"itemClick\", void 0);\n__decorate([\n ViewChildren('button'),\n __metadata(\"design:type\", QueryList)\n], ToolBarButtonListComponent.prototype, \"buttons\", void 0);\n\nvar ToolBarDropDownButtonComponent_1;\n/**\n * Represents the [Kendo UI ToolBar DropDownButton for Angular]({% slug controltypes_toolbar %}#toc-dropdownbuttons).\n */\nlet ToolBarDropDownButtonComponent = ToolBarDropDownButtonComponent_1 = class ToolBarDropDownButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Defines the location of the button text that will be displayed.\n */\n this.showText = 'both';\n /**\n * Defines the location of the button icon that will be displayed.\n */\n this.showIcon = 'both';\n /**\n * Changes the visual appearance by using alternative styling options.\n * ([see example]({% slug controltypes_toolbar %}#toc-split-buttons)).\n *\n * The available values are:\n * * `flat`\n * * `outline`\n */\n this.look = 'default';\n /**\n * Adds visual weight to the default button and makes it primary.\n */\n this.primary = false;\n /**\n * Fires each time the user clicks a DropDownButton item.\n * The event data contains the data item that is 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 this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this._popupSettings = { animate: true, popupClass: '' };\n this.focusedIndex = -1;\n this.getNextKey = getNextKey();\n this.getPrevKey = getPrevKey();\n }\n /**\n * Sets the text of the DropDownButton\n * ([see example]({% slug controltypes_toolbar %}#toc-dropdownbuttons).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * Defines an icon that will be rendered next to the button text.\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an icon with a custom CSS class that will be rendered next to the button text.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines the location of an image that will be displayed next to the button text.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\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 */\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 DropDownButton\n * ([see example]({% slug controltypes_toolbar %}#toc-dropdownbuttons)).\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 get overflowButtons() {\n return [...this.overflowDropDownButtonButtonList.buttons.toArray().filter(b => !b.nativeElement.disabled)];\n }\n /**\n * @hidden\n */\n onButtonListClick(ev) {\n this.focusedIndex = this.overflowDropDownButtonButtonList.buttons\n .toArray()\n .findIndex(b => b.nativeElement.contains(ev.target));\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n if (!this.overflows) {\n if (ev.type === 'focus' || ev.type === 'keydown') {\n this.toolbarDropDownButton.focus();\n }\n }\n else if (this.overflowButtons.length > 0) {\n this.focusedIndex = getIndexOfFocused(this.getPrevKey(), this.getNextKey(), this.overflowButtons.map(ob => ob.nativeElement))(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (!this.overflows && (ev.keyCode === this.getPrevKey(this.overflows) || ev.keyCode === this.getNextKey(this.overflows))) {\n return false;\n }\n if (this.overflows) {\n const peekAtIndex = makePeeker(this.overflowButtons);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(this.getPrevKey(), this.getNextKey(), peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n }\n focusButton(index, ev) {\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n this.overflowButtons[index].nativeElement.focus();\n }\n }\n};\nToolBarDropDownButtonComponent.ɵfac = function ToolBarDropDownButtonComponent_Factory(t) { return new (t || ToolBarDropDownButtonComponent)(); };\nToolBarDropDownButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarDropDownButtonComponent, selectors: [[\"kendo-toolbar-dropdownbutton\"]], viewQuery: function ToolBarDropDownButtonComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c8, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c13, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(DropDownButtonComponent, 5);\n ɵngcc0.ɵɵviewQuery(_c14, 5);\n ɵngcc0.ɵɵviewQuery(_c15, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropdownButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropDownButtonComponent = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarDropDownButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overflowDropDownButtonButtonList = _t.first);\n } }, inputs: { showText: \"showText\", showIcon: \"showIcon\", look: \"look\", primary: \"primary\", text: \"text\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", popupSettings: \"popupSettings\", data: \"data\", buttonClass: \"buttonClass\", textField: \"textField\", disabled: \"disabled\" }, outputs: { itemClick: \"itemClick\", open: \"open\", close: \"close\" }, exportAs: [\"kendoToolBarDropDownButton\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarDropDownButtonComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [3, \"icon\", \"iconClass\", \"imageUrl\", \"buttonClass\", \"disabled\", \"tabIndex\", \"data\", \"textField\", \"popupSettings\", \"look\", \"primary\", \"open\", \"close\", \"itemClick\"], [\"toolbarDropDownButton\", \"\"], [\"type\", \"button\", \"tabindex\", \"-1\", \"kendoButton\", \"\", 1, \"k-overflow-button\", 3, \"disabled\", \"icon\", \"iconClass\", \"imageUrl\", \"ngClass\", \"click\"], [3, \"data\", \"disabled\", \"textField\", \"itemClick\", \"click\"], [\"overflowDropDownButtonButtonList\", \"\"]], template: function ToolBarDropDownButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolBarDropDownButtonComponent_ng_template_0_Template, 3, 12, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, ToolBarDropDownButtonComponent_ng_template_2_Template, 4, 9, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [ɵngcc5.DropDownButtonComponent, ɵngcc5.ButtonDirective, ɵngcc3.NgClass, ToolBarButtonListComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarDropDownButtonComponent.prototype, \"showText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarDropDownButtonComponent.prototype, \"showIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarDropDownButtonComponent.prototype, \"text\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarDropDownButtonComponent.prototype, \"icon\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarDropDownButtonComponent.prototype, \"iconClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarDropDownButtonComponent.prototype, \"imageUrl\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ToolBarDropDownButtonComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarDropDownButtonComponent.prototype, \"buttonClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarDropDownButtonComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarDropDownButtonComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarDropDownButtonComponent.prototype, \"look\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], ToolBarDropDownButtonComponent.prototype, \"data\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarDropDownButtonComponent.prototype, \"primary\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarDropDownButtonComponent.prototype, \"itemClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarDropDownButtonComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarDropDownButtonComponent.prototype, \"close\", void 0);\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarDropDownButtonComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarDropDownButtonComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('dropdownButton', { read: ElementRef, static: true }),\n __metadata(\"design:type\", ElementRef)\n], ToolBarDropDownButtonComponent.prototype, \"dropdownButton\", void 0);\n__decorate([\n ViewChild(DropDownButtonComponent, { static: false }),\n __metadata(\"design:type\", DropDownButtonComponent)\n], ToolBarDropDownButtonComponent.prototype, \"dropDownButtonComponent\", void 0);\n__decorate([\n ViewChild('toolbarDropDownButton', { static: false }),\n __metadata(\"design:type\", DropDownButtonComponent)\n], ToolBarDropDownButtonComponent.prototype, \"toolbarDropDownButton\", void 0);\n__decorate([\n ViewChild('overflowDropDownButtonButtonList', { static: false }),\n __metadata(\"design:type\", ToolBarButtonListComponent)\n], ToolBarDropDownButtonComponent.prototype, \"overflowDropDownButtonButtonList\", void 0);\nToolBarDropDownButtonComponent = ToolBarDropDownButtonComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [])\n], ToolBarDropDownButtonComponent);\n\nvar ToolBarSplitButtonComponent_1;\n/**\n * Represents the [Kendo UI ToolBar SplitButton for Angular]({% slug controltypes_toolbar %}#toc-splitbuttons).\n */\nlet ToolBarSplitButtonComponent = ToolBarSplitButtonComponent_1 = class ToolBarSplitButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Specifies where button text should be displayed\n */\n this.showText = 'both';\n /**\n * Specifies where button icon should be displayed\n */\n this.showIcon = 'both';\n /**\n * Changes the visual appearance by using alternative styling options\n * ([see example]({% slug controltypes_toolbar %}#toc-split-buttons)).\n *\n * The available values are:\n * * `default`\n * * `flat`\n * * `outline`\n */\n this.look = 'default';\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 * Configures the text field of the button-list popup.\n */\n this.textField = 'text';\n /**\n * Fires each time the user clicks the main button.\n */\n this.buttonClick = new EventEmitter();\n /**\n * Fires each time the user clicks the drop-down list.\n * The event data contains the data item that is 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 this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this._popupSettings = { animate: true, popupClass: '' };\n this.focusedIndex = -1;\n this.getNextKey = getNextKey();\n this.getPrevKey = getPrevKey();\n }\n /**\n * Sets the text of the SplitButton ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * Defines the icon that will be rendered next to the button text\n * ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons)).\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an icon with a custom CSS class that will be rendered next to the button text.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines the location of an image that will be displayed next to the button text.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\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 */\n set popupSettings(value) {\n this._popupSettings = value;\n }\n get popupSettings() {\n if (!this._popupSettings) {\n this._popupSettings = { animate: true, popupClass: '' };\n }\n return this._popupSettings;\n }\n /**\n * Sets the data of the SplitButton ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons)).\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 get overflowButtons() {\n return [this.overflowSplitButton, ...this.overflowSplitButtonButtonList.buttons.toArray().filter(b => !b.nativeElement.disabled)];\n }\n /**\n * @hidden\n */\n onButtonListClick(ev) {\n this.focusedIndex = this.overflowButtons.findIndex(b => b.nativeElement.contains(ev.target));\n }\n /**\n * @hidden\n */\n onMainButtonClick(ev) {\n this.buttonClick.emit(ev);\n this.focusedIndex = 0;\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n if (!this.overflows) {\n if (ev.type === 'focus' || ev.type === 'keydown') {\n this.toolbarSplitButton.focus();\n }\n }\n else if (this.overflowButtons.length > 0) {\n this.focusedIndex = getIndexOfFocused(this.getPrevKey(), this.getNextKey(), this.overflowButtons.map(ob => ob.nativeElement))(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (!this.overflows && (ev.keyCode === this.getPrevKey(this.overflows) || ev.keyCode === this.getNextKey(this.overflows))) {\n return false;\n }\n if (this.overflows) {\n const peekAtIndex = makePeeker(this.overflowButtons);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(this.getPrevKey(), this.getNextKey(), peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n }\n focusButton(index, ev) {\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown' || ev.type === 'click') {\n this.overflowButtons[index].nativeElement.focus();\n }\n }\n};\nToolBarSplitButtonComponent.ɵfac = function ToolBarSplitButtonComponent_Factory(t) { return new (t || ToolBarSplitButtonComponent)(); };\nToolBarSplitButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarSplitButtonComponent, selectors: [[\"kendo-toolbar-splitbutton\"]], viewQuery: function ToolBarSplitButtonComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c8, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c16, 5);\n ɵngcc0.ɵɵviewQuery(_c17, 5, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c18, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarSplitButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overflowSplitButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overflowSplitButtonButtonList = _t.first);\n } }, inputs: { showText: \"showText\", showIcon: \"showIcon\", look: \"look\", arrowButtonIcon: \"arrowButtonIcon\", textField: \"textField\", text: \"text\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", popupSettings: \"popupSettings\", data: \"data\", disabled: \"disabled\", buttonClass: \"buttonClass\", arrowButtonClass: \"arrowButtonClass\" }, outputs: { buttonClick: \"buttonClick\", itemClick: \"itemClick\", open: \"open\", close: \"close\" }, exportAs: [\"kendoToolBarSplitButton\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSplitButtonComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 4, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [\"popupTemplate\", \"\"], [3, \"data\", \"text\", \"icon\", \"iconClass\", \"imageUrl\", \"buttonClass\", \"arrowButtonClass\", \"arrowButtonIcon\", \"disabled\", \"tabIndex\", \"textField\", \"popupSettings\", \"look\", \"buttonClick\", \"open\", \"close\", \"itemClick\"], [\"toolbarSplitButton\", \"\"], [\"type\", \"button\", \"tabindex\", \"-1\", \"kendoButton\", \"\", 1, \"k-overflow-button\", 3, \"disabled\", \"icon\", \"iconClass\", \"imageUrl\", \"look\", \"ngClass\", \"click\"], [\"overflowSplitButton\", \"\"], [3, \"look\", \"data\", \"disabled\", \"textField\", \"itemClick\", \"click\"], [\"overflowSplitButtonButtonList\", \"\"]], template: function ToolBarSplitButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolBarSplitButtonComponent_ng_template_0_Template, 2, 13, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, ToolBarSplitButtonComponent_ng_template_2_Template, 5, 11, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, directives: [ɵngcc5.SplitButtonComponent, ɵngcc5.ButtonDirective, ɵngcc3.NgClass, ToolBarButtonListComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarSplitButtonComponent.prototype, \"showText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarSplitButtonComponent.prototype, \"showIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarSplitButtonComponent.prototype, \"text\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarSplitButtonComponent.prototype, \"icon\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarSplitButtonComponent.prototype, \"iconClass\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], ToolBarSplitButtonComponent.prototype, \"imageUrl\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarSplitButtonComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarSplitButtonComponent.prototype, \"look\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], ToolBarSplitButtonComponent.prototype, \"popupSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarSplitButtonComponent.prototype, \"buttonClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ToolBarSplitButtonComponent.prototype, \"arrowButtonClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarSplitButtonComponent.prototype, \"arrowButtonIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarSplitButtonComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], ToolBarSplitButtonComponent.prototype, \"data\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarSplitButtonComponent.prototype, \"buttonClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarSplitButtonComponent.prototype, \"itemClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarSplitButtonComponent.prototype, \"open\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarSplitButtonComponent.prototype, \"close\", void 0);\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarSplitButtonComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarSplitButtonComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('toolbarSplitButton', { static: false }),\n __metadata(\"design:type\", SplitButtonComponent)\n], ToolBarSplitButtonComponent.prototype, \"toolbarSplitButton\", void 0);\n__decorate([\n ViewChild('overflowSplitButton', { read: ElementRef, static: false }),\n __metadata(\"design:type\", ElementRef)\n], ToolBarSplitButtonComponent.prototype, \"overflowSplitButton\", void 0);\n__decorate([\n ViewChild('overflowSplitButtonButtonList', { static: false }),\n __metadata(\"design:type\", ToolBarButtonListComponent)\n], ToolBarSplitButtonComponent.prototype, \"overflowSplitButtonButtonList\", void 0);\nToolBarSplitButtonComponent = ToolBarSplitButtonComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [])\n], ToolBarSplitButtonComponent);\n\nvar ToolBarSeparatorComponent_1;\n/**\n * Represents the [Kendo UI ToolBar Separator for Angular]({% slug controltypes_toolbar %}#toc-separators).\n */\nlet ToolBarSeparatorComponent = ToolBarSeparatorComponent_1 = class ToolBarSeparatorComponent extends ToolBarToolComponent {\n constructor() {\n super();\n }\n /**\n * @hidden\n */\n canFocus() {\n return false;\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n focus() {\n /* noop */\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n handleKey() {\n return false;\n }\n ngAfterViewInit() {\n if (!this.popupTemplate) {\n this.popupTemplate = this.toolbarTemplate;\n }\n }\n};\nToolBarSeparatorComponent.ɵfac = function ToolBarSeparatorComponent_Factory(t) { return new (t || ToolBarSeparatorComponent)(); };\nToolBarSeparatorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarSeparatorComponent, selectors: [[\"kendo-toolbar-separator\"]], viewQuery: function ToolBarSeparatorComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c8, 7);\n ɵngcc0.ɵɵviewQuery(_c19, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.toolbarTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.separator = _t.first);\n } }, exportAs: [\"kendoToolBarSeparator\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSeparatorComponent_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 0, consts: [[\"toolbarTemplate\", \"\"], [1, \"k-separator\"]], template: function ToolBarSeparatorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolBarSeparatorComponent_ng_template_0_Template, 1, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, encapsulation: 2 });\n__decorate([\n ViewChild('toolbarTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarSeparatorComponent.prototype, \"toolbarTemplate\", void 0);\n__decorate([\n ViewChild('popupTemplate', { static: true }),\n __metadata(\"design:type\", TemplateRef)\n], ToolBarSeparatorComponent.prototype, \"popupTemplate\", void 0);\n__decorate([\n ViewChild('separator', { static: false }),\n __metadata(\"design:type\", ElementRef)\n], ToolBarSeparatorComponent.prototype, \"separator\", void 0);\nToolBarSeparatorComponent = ToolBarSeparatorComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [])\n], ToolBarSeparatorComponent);\n\n/**\n * @hidden\n */\nlet RendererService = class RendererService {\n getElement() {\n return this.element.nativeElement;\n }\n querySelector(selector) {\n return this.element.nativeElement.querySelector(selector);\n }\n querySelectorAll(selector) {\n return this.element.nativeElement.querySelectorAll(selector);\n }\n findFocusable() {\n return findFocusable(this.element.nativeElement, false);\n }\n findFocusableChild(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableChild(element, false);\n }\n findNextFocusableSibling(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableSibling(element, false);\n }\n findPrevFocusableSibling(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableSibling(element, false, true);\n }\n setAttribute(element, attr, value) {\n this.renderer.setAttribute(element, attr, value);\n }\n};\nRendererService.ɵfac = function RendererService_Factory(t) { return new (t || RendererService)(); };\nRendererService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: RendererService, factory: function (t) { return RendererService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet ToolBarRendererComponent = class ToolBarRendererComponent {\n constructor(element, renderer, rendererService, refreshService) {\n this.element = element;\n this.renderer = renderer;\n this.rendererService = rendererService;\n this.refreshService = refreshService;\n this.rendererClick = new EventEmitter();\n this.rendererService.element = element;\n this.rendererService.renderer = this;\n this.refreshSubscription = this.refreshService.onRefresh.subscribe((tool) => {\n if (this.tool === tool) {\n this.refresh();\n }\n });\n }\n onClick(ev) {\n this.rendererClick.emit({ context: this, event: ev });\n }\n ngOnInit() {\n if (this.resizable) {\n if (this.location === 'toolbar') {\n this.template = this.tool.toolbarTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(this.element.nativeElement, 'display', 'none');\n }\n else {\n this.template = this.tool.popupTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'display', 'none');\n }\n }\n else {\n this.tool.overflows = false;\n this.template = this.tool.toolbarTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'display');\n this.renderer.setStyle(this.element.nativeElement, 'display', 'inline-block');\n }\n }\n ngOnDestroy() {\n this.refreshSubscription.unsubscribe();\n }\n ngAfterViewInit() {\n if (this.resizable) {\n this.refresh();\n }\n }\n /**\n * @hidden\n */\n get width() {\n return this.tool.overflows ? 0 : outerWidth(this.element.nativeElement);\n }\n /**\n * @hidden\n */\n isDisplayed() {\n return this.element.nativeElement.style.display !== 'none';\n }\n /**\n * @hidden\n */\n refresh() {\n if (this.resizable) {\n if (this.location === 'toolbar') {\n this.renderer.setStyle(this.element.nativeElement, 'visibility', this.tool.visibility);\n this.renderer.setStyle(this.element.nativeElement, 'display', this.tool.toolbarDisplay);\n }\n else {\n this.renderer.setStyle(this.element.nativeElement, 'display', this.tool.overflowDisplay);\n }\n }\n }\n /**\n * @hidden\n */\n setAttribute(element, attr, value) {\n this.renderer.setAttribute(element, attr, value);\n }\n};\nToolBarRendererComponent.ɵfac = function ToolBarRendererComponent_Factory(t) { return new (t || ToolBarRendererComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(RendererService), ɵngcc0.ɵɵdirectiveInject(RefreshService)); };\nToolBarRendererComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolBarRendererComponent, selectors: [[\"kendo-toolbar-renderer\"]], hostBindings: function ToolBarRendererComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function ToolBarRendererComponent_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } }, inputs: { tool: \"tool\", location: \"location\", resizable: \"resizable\" }, outputs: { rendererClick: \"rendererClick\" }, exportAs: [\"kendoToolBarRenderer\"], features: [ɵngcc0.ɵɵProvidersFeature([RendererService])], decls: 2, vars: 2, consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\"]], template: function ToolBarRendererComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToolBarRendererComponent_ng_container_0_Template, 2, 1, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(1, ToolBarRendererComponent_ng_container_1_Template, 2, 1, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.location === \"toolbar\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.location === \"overflow\" && ctx.tool.responsive);\n } }, directives: [ɵngcc3.NgIf, ɵngcc3.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", ToolBarToolComponent)\n], ToolBarRendererComponent.prototype, \"tool\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolBarRendererComponent.prototype, \"location\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], ToolBarRendererComponent.prototype, \"resizable\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ToolBarRendererComponent.prototype, \"rendererClick\", void 0);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ToolBarRendererComponent.prototype, \"onClick\", null);\nToolBarRendererComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n RendererService,\n RefreshService])\n], ToolBarRendererComponent);\n\n/**\n * @hidden\n */\nclass ToolbarMessages extends ComponentMessages {\n}\nToolbarMessages.ɵfac = /*@__PURE__*/ function () { let ɵToolbarMessages_BaseFactory; return function ToolbarMessages_Factory(t) { return (ɵToolbarMessages_BaseFactory || (ɵToolbarMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ToolbarMessages)))(t || ToolbarMessages); }; }();\nToolbarMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ToolbarMessages, inputs: { moreToolsTitle: \"moreToolsTitle\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], ToolbarMessages.prototype, \"moreToolsTitle\", void 0);\n\nvar LocalizedToolbarMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedToolbarMessagesDirective = LocalizedToolbarMessagesDirective_1 = class LocalizedToolbarMessagesDirective extends ToolbarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedToolbarMessagesDirective.ɵfac = function LocalizedToolbarMessagesDirective_Factory(t) { return new (t || LocalizedToolbarMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedToolbarMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedToolbarMessagesDirective, selectors: [[\"\", \"kendoToolbarLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => LocalizedToolbarMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedToolbarMessagesDirective = LocalizedToolbarMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedToolbarMessagesDirective);\n\nvar ToolbarCustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages.\n */\nlet ToolbarCustomMessagesComponent = ToolbarCustomMessagesComponent_1 = class ToolbarCustomMessagesComponent extends ToolbarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nToolbarCustomMessagesComponent.ɵfac = function ToolbarCustomMessagesComponent_Factory(t) { return new (t || ToolbarCustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nToolbarCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToolbarCustomMessagesComponent, selectors: [[\"kendo-toolbar-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => ToolbarCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function ToolbarCustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nToolbarCustomMessagesComponent = ToolbarCustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], ToolbarCustomMessagesComponent);\n\nconst TOOLBAR_TOOLS = [\n ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent\n];\nconst TOOLBAR_COMMON = [\n ToolBarRendererComponent,\n ToolBarButtonListComponent,\n ToolbarCustomMessagesComponent,\n LocalizedToolbarMessagesDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the ToolBar component.\n *\n * The package exports:\n * - `ToolBarComponent`—The ToolBarComponent class.\n * - `ToolBarToolComponent`—The base Tool component class.\n * - `ToolBarButtonComponent`—The Button Tool component class.\n * - `ToolBarButtonGroupComponent`—The ButtonGroup Tool component class.\n * - `ToolBarDropDownButtonComponent`—The DropDownButton Tool component class.\n * - `ToolBarSplitButtonComponent`—The SplitButton Tool component class.\n * - `ToolBarSeparatorComponent`—The Separator Tool component class.\n */\nlet ToolBarModule = class ToolBarModule {\n};\nToolBarModule.ɵfac = function ToolBarModule_Factory(t) { return new (t || ToolBarModule)(); };\nToolBarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToolBarModule });\nToolBarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, ButtonsModule, PopupModule, ResizeSensorModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RefreshService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarToolComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:component-selector\n selector: 'toolbar-tool',\n template: ``\n }]\n }], function () { return []; }, { responsive: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBar',\n providers: [\n RefreshService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.toolbar'\n }\n ],\n selector: 'kendo-toolbar',\n template: `\n \n \n \n \n \n \n \n \n \n
      \n \n
    • \n \n
    • \n
      \n
    \n
    \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }, { type: ɵngcc2.PopupService }, { type: RefreshService }, { type: NavigationService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { overflow: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-toolbar']\n }], resizable: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: ['tabIndex']\n }], \n /**\n * @hidden\n */\n onFocus: [{\n type: HostListener,\n args: ['focus', ['$event']]\n }], \n /**\n * @hidden\n */\n onFocusOut: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }], getRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], getDir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], resizableClass: [{\n type: HostBinding,\n args: ['class.k-toolbar-resizable']\n }], allTools: [{\n type: ContentChildren,\n args: [ToolBarToolComponent]\n }], overflowButton: [{\n type: ViewChild,\n args: ['overflowButton', { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: ['resizeSensor', { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], renderedTools: [{\n type: ViewChildren,\n args: ['toolbarRenderer']\n }], overflowRenderedTools: [{\n type: ViewChildren,\n args: ['overflowRenderer']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarButtonComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarButton',\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonComponent_1) }],\n selector: 'kendo-toolbar-button',\n template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n `\n }]\n }], function () { return []; }, { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], toggleable: [{\n type: Input\n }], primary: [{\n type: Input\n }], look: [{\n type: Input\n }], selected: [{\n type: Input\n }], click: [{\n type: Output\n }], pointerdown: [{\n type: Output\n }], selectedChange: [{\n type: Output\n }], text: [{\n type: Input\n }], togglable: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], style: [{\n type: Input\n }], className: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarButtonElement: [{\n type: ViewChild,\n args: ['toolbarButton', { read: ElementRef, static: false }]\n }], overflowButtonElement: [{\n type: ViewChild,\n args: ['overflowButton', { read: ElementRef, static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarButtonGroupComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarButtonGroup',\n // tslint:disable-next-line:no-forward-ref\n providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent_1) }],\n selector: 'kendo-toolbar-buttongroup',\n template: `\n \n \n \n {{ button.toolbarOptions.text }}\n \n \n \n \n \n \n {{ button.overflowOptions.text }}\n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { selection: [{\n type: Input\n }], look: [{\n type: Input\n }], disabled: [{\n type: Input\n }], width: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], buttonComponents: [{\n type: ContentChildren,\n args: [forwardRef(() => ToolBarButtonComponent)]\n }], toolbarButtonGroup: [{\n type: ViewChild,\n args: ['toolbarButtonGroup', { static: false }]\n }], overflowButtonGroup: [{\n type: ViewChild,\n args: ['overflowButtonGroup', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarButtonListComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-toolbar-buttonlist',\n template: `\n \n {{ getText(item) }}\n \n `\n }]\n }], function () { return []; }, { disabled: [{\n type: Input\n }], look: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], data: [{\n type: Input\n }], textField: [{\n type: Input\n }], buttons: [{\n type: ViewChildren,\n args: ['button']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarDropDownButtonComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarDropDownButton',\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarDropDownButtonComponent_1) }],\n selector: 'kendo-toolbar-dropdownbutton',\n template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `\n }]\n }], function () { return []; }, { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], look: [{\n type: Input\n }], primary: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], data: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], dropdownButton: [{\n type: ViewChild,\n args: ['dropdownButton', { read: ElementRef, static: true }]\n }], dropDownButtonComponent: [{\n type: ViewChild,\n args: [DropDownButtonComponent, { static: false }]\n }], toolbarDropDownButton: [{\n type: ViewChild,\n args: ['toolbarDropDownButton', { static: false }]\n }], overflowDropDownButtonButtonList: [{\n type: ViewChild,\n args: ['overflowDropDownButtonButtonList', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarSplitButtonComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSplitButton',\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSplitButtonComponent_1) }],\n selector: 'kendo-toolbar-splitbutton',\n template: `\n \n \n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `\n }]\n }], function () { return []; }, { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], look: [{\n type: Input\n }], arrowButtonIcon: [{\n type: Input\n }], textField: [{\n type: Input\n }], buttonClick: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], data: [{\n type: Input\n }], disabled: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], arrowButtonClass: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarSplitButton: [{\n type: ViewChild,\n args: ['toolbarSplitButton', { static: false }]\n }], overflowSplitButton: [{\n type: ViewChild,\n args: ['overflowSplitButton', { read: ElementRef, static: false }]\n }], overflowSplitButtonButtonList: [{\n type: ViewChild,\n args: ['overflowSplitButtonButtonList', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarSeparatorComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSeparator',\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSeparatorComponent_1) }],\n selector: 'kendo-toolbar-separator',\n template: `\n \n
    \n
    \n `\n }]\n }], function () { return []; }, { popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], separator: [{\n type: ViewChild,\n args: ['separator', { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RendererService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarRendererComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarRenderer',\n providers: [RendererService],\n selector: 'kendo-toolbar-renderer',\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: RendererService }, { type: RefreshService }]; }, { rendererClick: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], tool: [{\n type: Input\n }], location: [{\n type: Input\n }], resizable: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedToolbarMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => LocalizedToolbarMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: '[kendoToolbarLocalizedMessages]'\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolbarCustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => ToolbarCustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-toolbar-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToolBarModule, [{\n type: NgModule,\n args: [{\n declarations: [ToolBarComponent, TOOLBAR_TOOLS, TOOLBAR_COMMON],\n exports: [ToolBarComponent, TOOLBAR_TOOLS, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective],\n imports: [CommonModule, ButtonsModule, PopupModule, ResizeSensorModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToolBarModule, { declarations: function () { return [ToolBarComponent, ToolBarToolComponent, ToolBarButtonComponent, ToolBarButtonGroupComponent, ToolBarDropDownButtonComponent, ToolBarSplitButtonComponent, ToolBarSeparatorComponent, ToolBarRendererComponent, ToolBarButtonListComponent, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective]; }, imports: function () { return [CommonModule, ButtonsModule, PopupModule, ResizeSensorModule]; }, exports: function () { return [ToolBarComponent, ToolBarToolComponent, ToolBarButtonComponent, ToolBarButtonGroupComponent, ToolBarDropDownButtonComponent, ToolBarSplitButtonComponent, ToolBarSeparatorComponent, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ToolbarMessages, NavigationService, RefreshService, ToolBarRendererComponent, RendererService, ToolBarButtonListComponent, ToolBarComponent, ToolBarToolComponent, ToolBarButtonComponent, ToolBarButtonGroupComponent, ToolBarDropDownButtonComponent, ToolBarSplitButtonComponent, ToolBarSeparatorComponent, ToolBarModule, LocalizedToolbarMessagesDirective, ToolbarCustomMessagesComponent };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { InjectionToken, Injectable, EventEmitter, HostBinding, Output, Input, TemplateRef, ElementRef, Component, isDevMode, Directive, Optional, Inject, NgZone, Renderer2, forwardRef, NgModule } from '@angular/core';\nimport { filter, debounceTime, take } from 'rxjs/operators';\nimport { fromEvent } from 'rxjs';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@progress/kendo-angular-popup';\n\nfunction TooltipContentComponent_div_2_ng_template_1_Template(rf, ctx) { }\nconst _c2 = function (a0, a1) { return { $implicit: a0, anchor: a1 }; };\nfunction TooltipContentComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 7);\n ɵngcc0.ɵɵtemplate(1, TooltipContentComponent_div_2_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.titleTemplate)(\"ngTemplateOutlet\", ctx_r0.titleTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(3, _c2, ctx_r0.anchor, ctx_r0.anchor));\n} }\nfunction TooltipContentComponent_ng_template_3_Template(rf, ctx) { }\nfunction TooltipContentComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r2.templateString, \" \");\n} }\nfunction TooltipContentComponent_div_5_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function TooltipContentComponent_div_5_Template_div_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.onCloseClick($event); });\n ɵngcc0.ɵɵelement(1, \"a\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r3.closeButtonTitle);\n} }\nfunction TooltipContentComponent_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 10);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.calloutPositionClass());\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-tooltip',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635939563,\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 * Obsolete. Provide the TooltipSettings class instead.\n *\n * @hidden\n */\nconst TOOLTIP_SETTINGS = new InjectionToken('kendo-ui-tooltip-settings');\n/**\n * Provides a global configuration for the Kendo UI Tooltip. Once injected through\n * the `AppComponent` constructor, the configuration properties can be overridden.\n *\n * @example\n * ```ts-no-run\n * import { TooltipSettings } from '@progress/kendo-angular-tooltip';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    `,\n * providers: [{\n * provide: TooltipSettings,\n * useFactory: (): TooltipSettings => ({\n * // Override default values of tooltips if wanted\n * position: 'right'\n * })\n * }]\n * })\n * export class AppComponent { }\n * ```\n */\nlet TooltipSettings = class TooltipSettings {\n};\nTooltipSettings.ɵfac = function TooltipSettings_Factory(t) { return new (t || TooltipSettings)(); };\nTooltipSettings.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TooltipSettings, factory: function (t) { return TooltipSettings.ɵfac(t); } });\n\n/**\n * @hidden\n */\nfunction align(position, offset) {\n let anchorAlign = {};\n let popupAlign = {};\n let popupMargin = {};\n switch (position) {\n case 'top':\n anchorAlign = { horizontal: 'center', vertical: 'top' };\n popupAlign = { horizontal: 'center', vertical: 'bottom' };\n popupMargin = { horizontal: 0, vertical: offset };\n break;\n case 'bottom':\n anchorAlign = { horizontal: 'center', vertical: 'bottom' };\n popupAlign = { horizontal: 'center', vertical: 'top' };\n popupMargin = { horizontal: 0, vertical: offset };\n break;\n case 'right':\n anchorAlign = { horizontal: 'right', vertical: 'center' };\n popupAlign = { horizontal: 'left', vertical: 'center' };\n popupMargin = { horizontal: offset, vertical: 0 };\n break;\n case 'left':\n anchorAlign = { horizontal: 'left', vertical: 'center' };\n popupAlign = { horizontal: 'right', vertical: 'center' };\n popupMargin = { horizontal: offset, vertical: 0 };\n break;\n default: break;\n }\n return {\n anchorAlign,\n popupAlign,\n popupMargin\n };\n}\n/**\n * @hidden\n */\nfunction collision(inputcollision, position) {\n if (inputcollision) {\n return inputcollision;\n }\n if (position === 'top' || position === 'bottom') {\n return { horizontal: 'fit', vertical: 'flip' };\n }\n return { horizontal: 'flip', vertical: 'fit' };\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 */\nfunction contains(container, child) {\n if (!container) {\n return false;\n }\n if (isDocumentNode(container)) {\n return false;\n }\n if (container.contains) {\n return container.contains(child);\n }\n if (container.compareDocumentPosition) {\n // tslint:disable-next-line\n return !!(container.compareDocumentPosition(child) & Node.DOCUMENT_POSITION_CONTAINED_BY);\n }\n}\n/**\n * @hidden\n */\nconst hasParent = (node, parent) => {\n while (node && node !== parent) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nfunction getCenterOffset(item, dir, size) {\n const rect = item.getBoundingClientRect();\n return rect[dir] + (rect[size] / 2);\n}\n/**\n * @hidden\n */\nfunction containsItem(collection, item) {\n return collection.indexOf(item) !== -1;\n}\n\n/**\n * @hidden\n */\nlet TooltipContentComponent = class TooltipContentComponent {\n constructor(content, localizationService) {\n this.content = content;\n this.localizationService = localizationService;\n this.close = new EventEmitter();\n this.tooltipWidth = null;\n this.tooltipHeight = null;\n this.callout = true;\n this.calloutStyles = (position, calloutSize, isFlip) => {\n const styles = {};\n const isVertical = position === 'top' || position === 'bottom';\n const flipDeg = '180deg';\n const zeroDeg = '0deg';\n if (!isFlip) {\n styles.transform = isVertical ? `rotateX(${zeroDeg})` : `rotateY(${zeroDeg})`;\n return styles;\n }\n if (position === 'top') {\n styles.bottom = 'unset';\n }\n else if (position === 'bottom') {\n styles.top = 'unset';\n }\n else if (position === 'left') {\n styles.right = 'unset';\n }\n else if (position === 'right') {\n styles.left = 'unset';\n }\n styles[position] = `${-calloutSize}px`;\n styles.transform = isVertical ? `rotateX(${flipDeg})` : `rotateY(${flipDeg})`;\n return styles;\n };\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get cssClasses() {\n return 'k-widget k-tooltip';\n }\n get className() {\n return this.closable;\n }\n get cssPosition() {\n return 'relative';\n }\n ngOnInit() {\n this.dynamicRTLSubscription = this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n calloutPositionClass() {\n return {\n 'top': 'k-callout-s',\n 'left': 'k-callout-e',\n 'bottom': 'k-callout-n',\n 'right': 'k-callout-w'\n }[this.position];\n }\n onCloseClick(event) {\n event.preventDefault();\n this.close.emit();\n }\n updateCalloutPosition(position, isFlip) {\n if (!this.callout) {\n return;\n }\n const callout = this.content.nativeElement.querySelector('.k-callout');\n const isVertical = position === 'top' || position === 'bottom';\n const size = isVertical ? 'width' : 'height';\n const dir = isVertical ? 'left' : 'top';\n const offsetProperty = isVertical ? 'marginLeft' : 'marginTop';\n const calloutSize = callout.getBoundingClientRect()[size];\n const anchorCenter = getCenterOffset(this.anchor.nativeElement, dir, size);\n const contentCenter = getCenterOffset(this.content.nativeElement, dir, size);\n const diff = Math.abs(contentCenter - anchorCenter);\n if (diff > 1 || diff === 0 || Math.round(diff) === 0) {\n const newMargin = contentCenter - anchorCenter + (calloutSize / 2);\n callout.style[offsetProperty] = `${-newMargin}px`;\n }\n const calloutStyles = this.calloutStyles(position, calloutSize, isFlip);\n Object.keys(calloutStyles).forEach((style) => {\n callout.style[style] = calloutStyles[style];\n });\n }\n};\nTooltipContentComponent.ɵfac = function TooltipContentComponent_Factory(t) { return new (t || TooltipContentComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nTooltipContentComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TooltipContentComponent, selectors: [[\"kendo-tooltip\"]], hostVars: 11, hostBindings: function TooltipContentComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.direction);\n ɵngcc0.ɵɵclassMap(ctx.cssClasses);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.tooltipWidth, \"px\")(\"height\", ctx.tooltipHeight, \"px\")(\"position\", ctx.cssPosition);\n ɵngcc0.ɵɵclassProp(\"k-tooltip-closable\", ctx.className);\n } }, inputs: { tooltipWidth: \"tooltipWidth\", tooltipHeight: \"tooltipHeight\", titleTemplate: \"titleTemplate\", anchor: \"anchor\", closable: \"closable\", templateRef: \"templateRef\", templateString: \"templateString\" }, outputs: { close: \"close\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tooltip'\n }\n ])], decls: 7, vars: 10, consts: function () { let i18n_0; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the close button\n * @meaning kendo.tooltip.closeTitle\n */\n const MSG_EXTERNAL_1245147641110884896$$DIST_FESM2015_INDEX_JS_1 = goog.getMsg(\"Close\");\n i18n_0 = MSG_EXTERNAL_1245147641110884896$$DIST_FESM2015_INDEX_JS_1;\n }\n else {\n i18n_0 = $localize `:kendo.tooltip.closeTitle|The title of the close button␟de53b3f74f2d4a81b5c3f54c0ac1269cb017bd4f␟1245147641110884896:Close`;\n } return [[\"kendoTooltipLocalizedMessages\", \"\", \"closeTitle\", i18n_0], [1, \"k-tooltip-content\"], [\"class\", \"k-tooltip-title\", 4, \"ngIf\"], [3, \"ngIf\", \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"ngIf\"], [\"class\", \"k-tooltip-button\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"k-callout\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-tooltip-title\"], [1, \"k-tooltip-button\", 3, \"click\"], [\"href\", \"#\", 1, \"k-icon\", \"k-i-close\"], [1, \"k-callout\", 3, \"ngClass\"]]; }, template: function TooltipContentComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, TooltipContentComponent_div_2_Template, 2, 6, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, TooltipContentComponent_ng_template_3_Template, 0, 0, \"ng-template\", 3);\n ɵngcc0.ɵɵtemplate(4, TooltipContentComponent_ng_template_4_Template, 1, 1, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, TooltipContentComponent_div_5_Template, 2, 1, \"div\", 5);\n ɵngcc0.ɵɵtemplate(6, TooltipContentComponent_div_6_Template, 1, 1, \"div\", 6);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.titleTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.templateRef)(\"ngTemplateOutlet\", ctx.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(7, _c2, ctx.anchor, ctx.anchor));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.templateString);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.closable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.callout);\n } }, directives: function () { return [LocalizedMessagesDirective, ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet, ɵngcc2.NgClass]; }, encapsulation: 2 });\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String)\n], TooltipContentComponent.prototype, \"direction\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TooltipContentComponent.prototype, \"close\", void 0);\n__decorate([\n HostBinding('class'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TooltipContentComponent.prototype, \"cssClasses\", null);\n__decorate([\n HostBinding('class.k-tooltip-closable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], TooltipContentComponent.prototype, \"className\", null);\n__decorate([\n HostBinding('style.position'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TooltipContentComponent.prototype, \"cssPosition\", null);\n__decorate([\n HostBinding('style.width.px'),\n Input(),\n __metadata(\"design:type\", Number)\n], TooltipContentComponent.prototype, \"tooltipWidth\", void 0);\n__decorate([\n HostBinding('style.height.px'),\n Input(),\n __metadata(\"design:type\", Number)\n], TooltipContentComponent.prototype, \"tooltipHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], TooltipContentComponent.prototype, \"titleTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", ElementRef)\n], TooltipContentComponent.prototype, \"anchor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TooltipContentComponent.prototype, \"closable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], TooltipContentComponent.prototype, \"templateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipContentComponent.prototype, \"templateString\", void 0);\nTooltipContentComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n LocalizationService])\n], TooltipContentComponent);\n\n/**\n * Represents the [Kendo UI Tooltip directive for Angular]({% slug overview_tooltip %}).\n * Used to display additional information that is related to an element.\n *\n * @example\n * ```ts-no-run\n *
    \n * foo\n *
    \n * ```\n */\nlet TooltipDirective = class TooltipDirective {\n constructor(tooltipWrapper, ngZone, renderer, popupService, settings, legacySettings) {\n this.tooltipWrapper = tooltipWrapper;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.popupService = popupService;\n /**\n * Specifies a selector for elements within a container which will display a tooltip\n * ([see example]({% slug anchorelements_tooltip %})). The possible values include any\n * DOM `selector`. The default value is `[title]`.\n */\n this.filter = '[title]';\n /**\n * Specifies the position of the Tooltip that is relative to the\n * anchor element ([see example]({% slug positioning_tooltip %})).\n *\n * The possible values are:\n * * `top` (default)\n * * `bottom`\n * * `left`\n * * `right`\n */\n this.position = 'top';\n /**\n * Specifies the delay in milliseconds before the Tooltip is shown.\n * * `100` (default) milliseconds.\n */\n this.showAfter = 100;\n /**\n * Specifies if the Тooltip will display a callout arrow.\n *\n * The possible values are:\n * * `true` (default)\n * * `false`\n */\n this.callout = true;\n /**\n * Specifies if the Тooltip will display a **Close** button\n * ([see example]({% slug closable_tooltip %})).\n *\n * The possible values are:\n * * `true`\n * * `false`\n */\n this.closable = false;\n /**\n * Specifies the offset in pixels between the Tooltip and the anchor. Defaults to `6` pixels.\n * If the `callout` property is set to `true`, the offset is rendered from the callout arrow.\n * If the `callout` property is set to `false`, the offset is rendered from the content of the Tooltip.\n */\n this.offset = 6;\n this.anchor = null;\n this.validPositions = ['top', 'bottom', 'right', 'left'];\n this.validShowOptions = ['hover', 'click', 'none'];\n validatePackage(packageMetadata);\n Object.assign(this, settings, legacySettings);\n this.ngZone.runOutsideAngular(() => {\n const wrapper = this.tooltipWrapper.nativeElement;\n this.anchorTitleSubscription = fromEvent(wrapper, 'mouseover')\n .pipe(filter(() => this.filter !== ''))\n .subscribe((e) => {\n const filterElement = closest(e.target, this.filter);\n if (filterElement) {\n this.hideElementTitle({ nativeElement: filterElement });\n }\n });\n this.mouseOverSubscription = fromEvent(wrapper, 'mouseover')\n .pipe(debounceTime(100), filter(() => this.filter !== ''))\n .subscribe(e => this.onMouseOver(e));\n this.mouseOutSubscription = fromEvent(wrapper, 'mouseout')\n .pipe(debounceTime(100))\n .subscribe(e => this.onMouseOut(e));\n });\n }\n /**\n * Sets the content of the Tooltip as a template reference\n * ([see example]({% slug templates_tooltip %})).\n */\n set tooltipTemplate(value) {\n this.template = value;\n }\n get tooltipTemplate() { return this.template; }\n /**\n * Shows the Tooltip.\n * @param anchor— ElementRef|Element.\n * Specifies the element that will be used as an anchor. The Tooltip opens relative to that element.\n */\n show(anchor) {\n if (this.popupRef) {\n return;\n }\n if (anchor instanceof Element) {\n anchor = { nativeElement: anchor };\n }\n this.anchor = anchor;\n if (this.showOn === 'hover') {\n if (this.popupRef) {\n return;\n }\n clearTimeout(this.showTimeout);\n this.showTimeout = window.setTimeout(() => this.showContent(this.anchor), this.showAfter);\n }\n else {\n this.hideElementTitle(this.anchor);\n this.showContent(this.anchor);\n }\n }\n /**\n * Hides the Tooltip.\n */\n hide() {\n clearTimeout(this.showTimeout);\n const anchor = this.anchor && this.anchor.nativeElement;\n if (anchor && anchor.getAttribute('data-title')) {\n if (!anchor.getAttribute('title') && anchor.hasAttribute('title')) {\n anchor.setAttribute('title', anchor.getAttribute('data-title'));\n }\n anchor.setAttribute('data-title', '');\n }\n if (this.popupMouseOutSubscription) {\n this.popupMouseOutSubscription.unsubscribe();\n }\n if (this.closeClickSubscription) {\n this.closeClickSubscription.unsubscribe();\n }\n this.closePopup();\n }\n /**\n * Toggle visibility of the Tooltip.\n *\n * @param anchor— ElementRef|Element. Specifies the element that will be used as an anchor.\n * @param show— Optional. Boolean. Specifies if the Tooltip will be rendered.\n */\n toggle(anchor, show) {\n const previousAnchor = this.anchor && this.anchor.nativeElement;\n if (anchor instanceof Element) {\n anchor = { nativeElement: anchor };\n }\n if (previousAnchor !== anchor.nativeElement) {\n this.hide();\n }\n if (previousAnchor === anchor.nativeElement && this.showOn === 'click') {\n this.hide();\n }\n if (typeof show === 'undefined') {\n show = !this.popupRef;\n }\n if (show) {\n this.show(anchor);\n }\n else {\n this.hide();\n }\n }\n ngOnInit() {\n if (this.showOn === undefined) {\n this.showOn = 'hover';\n }\n this.verifyProperties();\n }\n ngOnChanges(changes) {\n if (changes.showOn) {\n this.subscribeClick();\n }\n }\n ngAfterViewChecked() {\n if (!this.popupRef) {\n return;\n }\n if (this.anchor &&\n !hasParent(this.anchor.nativeElement || this.anchor, this.tooltipWrapper.nativeElement)) {\n this.anchor = null;\n this.hide();\n }\n }\n ngOnDestroy() {\n this.hide();\n this.template = null;\n this.anchorTitleSubscription.unsubscribe();\n this.mouseOverSubscription.unsubscribe();\n this.mouseOutSubscription.unsubscribe();\n if (this.mouseClickSubscription) {\n this.mouseClickSubscription.unsubscribe();\n }\n if (this.popupPositionChangeSubscription) {\n this.popupPositionChangeSubscription.unsubscribe();\n }\n if (this.popupMouseOutSubscription) {\n this.popupMouseOutSubscription.unsubscribe();\n }\n }\n showContent(anchorRef) {\n if (!anchorRef.nativeElement.getAttribute('data-title') && !this.template) {\n return;\n }\n this.ngZone.run(() => {\n this.openPopup(anchorRef);\n this.bindContent(this.popupRef.content, anchorRef);\n });\n this.popupRef.popupAnchorViewportLeave\n .pipe(take(1))\n .subscribe(() => this.hide());\n }\n bindContent(contentComponent, anchorRef) {\n const content = contentComponent.instance;\n this.closeClickSubscription = content.close\n .subscribe(() => { this.hide(); });\n if (!this.template) {\n content.templateString = this.anchor.nativeElement.getAttribute('data-title');\n }\n else {\n content.templateRef = this.template;\n }\n if (this.titleTemplate) {\n content.titleTemplate = this.titleTemplate;\n }\n content.closeTitle = this.closeTitle;\n content.anchor = anchorRef;\n content.callout = this.callout;\n content.closable = this.closable;\n content.position = this.position;\n content.tooltipWidth = this.tooltipWidth;\n content.tooltipHeight = this.tooltipHeight;\n this.popupRef.content.changeDetectorRef.detectChanges();\n }\n hideElementTitle(elementRef) {\n const element = elementRef.nativeElement;\n if (element.getAttribute('title')) {\n element.setAttribute('data-title', element.getAttribute('title'));\n element.setAttribute('title', '');\n }\n }\n openPopup(anchorRef) {\n const alignSettings = align(this.position, this.offset);\n const anchorAlign = alignSettings.anchorAlign;\n const popupAlign = alignSettings.popupAlign;\n const popupMargin = alignSettings.popupMargin;\n this.popupRef = this.popupService.open({\n anchor: anchorRef,\n anchorAlign,\n animate: false,\n content: TooltipContentComponent,\n collision: collision(this.collision, this.position),\n margin: popupMargin,\n popupAlign,\n popupClass: 'k-popup-transparent'\n });\n this.renderer.addClass(this.popupRef.popupElement, 'k-tooltip-wrapper');\n if (this.tooltipClass) {\n this.renderer.addClass(this.popupRef.popupElement, this.tooltipClass);\n }\n const popupInstance = this.popupRef.content.instance;\n if (popupInstance.callout) {\n this.popupPositionChangeSubscription = this.popupRef.popupPositionChange\n .subscribe(({ flip }) => {\n const isFlip = flip.horizontal === true || flip.vertical === true;\n popupInstance.updateCalloutPosition(this.position, isFlip);\n });\n }\n if (this.showOn === 'hover') {\n this.ngZone.runOutsideAngular(() => {\n const popup = this.popupRef.popupElement;\n this.popupMouseOutSubscription = fromEvent(popup, 'mouseout')\n .subscribe((e) => this.onMouseOut(e));\n });\n }\n }\n closePopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (this.popupPositionChangeSubscription) {\n this.popupPositionChangeSubscription.unsubscribe();\n }\n }\n subscribeClick() {\n if (this.mouseClickSubscription) {\n this.mouseClickSubscription.unsubscribe();\n }\n if (this.showOn === 'click') {\n this.mouseClickSubscription = fromEvent(document, 'click')\n .pipe(filter(() => this.filter !== ''))\n .subscribe(e => this.onMouseClick(e, this.tooltipWrapper.nativeElement));\n }\n }\n onMouseClick(e, wrapper) {\n const target = e.target;\n const filterElement = closest(target, this.filter);\n const popup = this.popupRef && this.popupRef.popupElement;\n if (popup) {\n if (popup.contains(target)) {\n return;\n }\n if (this.closable) {\n return;\n }\n }\n if (wrapper.contains(target) && filterElement) {\n this.toggle(filterElement, true);\n }\n else if (popup) {\n this.hide();\n }\n }\n onMouseOver(e) {\n const filterElement = closest(e.target, this.filter);\n if (this.showOn !== 'hover') {\n return;\n }\n if (filterElement) {\n this.toggle(filterElement, true);\n }\n }\n onMouseOut(e) {\n if (this.showOn !== 'hover') {\n return;\n }\n if (this.closable) {\n return;\n }\n const popup = this.popupRef && this.popupRef.popupElement;\n const relatedTarget = e.relatedTarget;\n if (relatedTarget && this.anchor && contains(this.anchor.nativeElement, relatedTarget)) {\n return;\n }\n if (relatedTarget && contains(popup, relatedTarget)) {\n return;\n }\n this.hide();\n }\n verifyProperties() {\n if (!isDevMode()) {\n return;\n }\n if (!containsItem(this.validPositions, this.position)) {\n throw new Error(`Invalid value provided for position property.The available options are 'top', 'bottom', 'left', or 'right'.`);\n }\n if (!containsItem(this.validShowOptions, this.showOn)) {\n throw new Error(`Invalid value provided for showOn property.The available options are 'hover' or 'none'.`);\n }\n }\n};\nTooltipDirective.ɵfac = function TooltipDirective_Factory(t) { return new (t || TooltipDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.PopupService), ɵngcc0.ɵɵdirectiveInject(TooltipSettings, 8), ɵngcc0.ɵɵdirectiveInject(TOOLTIP_SETTINGS, 8)); };\nTooltipDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TooltipDirective, selectors: [[\"\", \"kendoTooltip\", \"\"]], inputs: { filter: \"filter\", position: \"position\", showAfter: \"showAfter\", callout: \"callout\", closable: \"closable\", offset: \"offset\", tooltipTemplate: \"tooltipTemplate\", showOn: \"showOn\", titleTemplate: \"titleTemplate\", tooltipWidth: \"tooltipWidth\", tooltipHeight: \"tooltipHeight\", tooltipClass: \"tooltipClass\", collision: \"collision\", closeTitle: \"closeTitle\" }, exportAs: [\"kendoTooltip\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipDirective.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipDirective.prototype, \"position\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], TooltipDirective.prototype, \"titleTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipDirective.prototype, \"showOn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TooltipDirective.prototype, \"showAfter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TooltipDirective.prototype, \"callout\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TooltipDirective.prototype, \"closable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TooltipDirective.prototype, \"offset\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TooltipDirective.prototype, \"tooltipWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], TooltipDirective.prototype, \"tooltipHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipDirective.prototype, \"tooltipClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TooltipDirective.prototype, \"collision\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TooltipDirective.prototype, \"closeTitle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], TooltipDirective.prototype, \"tooltipTemplate\", null);\nTooltipDirective = __decorate([ __param(4, Optional()),\n __param(5, Optional()), __param(5, Inject(TOOLTIP_SETTINGS)),\n __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n Renderer2,\n PopupService,\n TooltipSettings,\n TooltipSettings])\n], TooltipDirective);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends ComponentMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoTooltipLocalizedMessages\", \"\"]], inputs: { closeTitle: \"closeTitle\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LocalizedMessagesDirective.prototype, \"closeTitle\", void 0);\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\nconst COMPONENT_DIRECTIVES = [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective];\nconst COMPONENT_MODULES = [PopupModule];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Tooltip component.\n *\n * The package exports:\n * - `KendoTooltipDirective`—The Tooltip directive class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Tooltip module\n * import { TooltipModule } from '@progress/kendo-angular-tooltip';\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 * _@NgModule{{\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TooltipModule], // import TooltipModule module\n * bootstrap: [AppComponent]\n * }}\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nlet TooltipModule = class TooltipModule {\n};\nTooltipModule.ɵfac = function TooltipModule_Factory(t) { return new (t || TooltipModule)(); };\nTooltipModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TooltipModule });\nTooltipModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, ...COMPONENT_MODULES]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipSettings, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipContentComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-tooltip',\n template: `\n \n \n\n
    \n
    \n \n \n
    \n\n \n \n \n {{ templateString }}\n \n
    \n\n
    \n \n
    \n\n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tooltip'\n }\n ]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.LocalizationService }]; }, { close: [{\n type: Output\n }], tooltipWidth: [{\n type: HostBinding,\n args: ['style.width.px']\n }, {\n type: Input\n }], tooltipHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], cssClasses: [{\n type: HostBinding,\n args: ['class']\n }], className: [{\n type: HostBinding,\n args: ['class.k-tooltip-closable']\n }], cssPosition: [{\n type: HostBinding,\n args: ['style.position']\n }], titleTemplate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], closable: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], templateString: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTooltip]',\n exportAs: 'kendoTooltip'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc3.PopupService }, { type: TooltipSettings, decorators: [{\n type: Optional\n }] }, { type: TooltipSettings, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOOLTIP_SETTINGS]\n }] }]; }, { filter: [{\n type: Input\n }], position: [{\n type: Input\n }], showAfter: [{\n type: Input\n }], callout: [{\n type: Input\n }], closable: [{\n type: Input\n }], offset: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], showOn: [{\n type: Input\n }], titleTemplate: [{\n type: Input\n }], tooltipWidth: [{\n type: Input\n }], tooltipHeight: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], collision: [{\n type: Input\n }], closeTitle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1)\n }\n ],\n selector: `[kendoTooltipLocalizedMessages]`\n }]\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, { closeTitle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n entryComponents: [TooltipContentComponent],\n imports: [CommonModule, ...COMPONENT_MODULES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TooltipModule, { declarations: function () { return [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective]; }, imports: function () { return [CommonModule, PopupModule]; }, exports: function () { return [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LocalizedMessagesDirective, TooltipContentComponent, TooltipDirective, TooltipModule, TooltipSettings, TOOLTIP_SETTINGS };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata, __param } from 'tslib';\nimport { EventEmitter, Injectable, Directive, Optional, TemplateRef, forwardRef, isDevMode, HostBinding, ViewChild, ViewContainerRef, Input, Output, ContentChild, Component, ChangeDetectionStrategy, ElementRef, ChangeDetectorRef, NgZone, Renderer2, ComponentFactoryResolver, Host, NgModule } from '@angular/core';\nimport { isDocumentAvailable, Keys, anyChanged, hasObservers, isChanged, guid } from '@progress/kendo-angular-common';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { Subject, of, BehaviorSubject, Subscription, EMPTY, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter, setter } from '@progress/kendo-common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { filter, catchError, tap, finalize, switchMap, take, map, delay, takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport Draggable from '@telerik/kendo-draggable';\nimport { InputsModule } from '@progress/kendo-angular-inputs';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@progress/kendo-angular-inputs';\n\nconst _c0 = [\"assetsContainer\"];\nfunction TreeViewComponent_kendo_textbox_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 6);\n} }\nfunction TreeViewComponent_kendo_textbox_0_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-textbox\", 3, 4);\n ɵngcc0.ɵɵlistener(\"valueChange\", function TreeViewComponent_kendo_textbox_0_Template_kendo_textbox_valueChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.filterChange.emit($event); });\n ɵngcc0.ɵɵtemplate(2, TreeViewComponent_kendo_textbox_0_ng_template_2_Template, 1, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", ctx_r0.filter)(\"clearButton\", true)(\"placeholder\", ctx_r0.filterInputPlaceholder);\n} }\nconst _c1 = [\"kendoTreeViewGroup\", \"\"];\nfunction TreeViewGroupComponent_li_0_span_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function TreeViewGroupComponent_li_0_span_2_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); const index_r3 = ctx_r10.index; const node_r2 = ctx_r10.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.expandNode(ctx_r9.nodeIndex(index_r3), node_r2, !ctx_r9.isExpanded(node_r2, ctx_r9.nodeIndex(index_r3))); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n const node_r2 = ctx_r12.$implicit;\n const index_r3 = ctx_r12.index;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-i-collapse\", ctx_r4.isExpanded(node_r2, ctx_r4.nodeIndex(index_r3)))(\"k-i-expand\", !ctx_r4.isExpanded(node_r2, ctx_r4.nodeIndex(index_r3)));\n ɵngcc0.ɵɵproperty(\"kendoTreeViewLoading\", ctx_r4.nodeIndex(index_r3));\n} }\nfunction TreeViewGroupComponent_li_0_kendo_checkbox_3_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"kendo-checkbox\", 12);\n ɵngcc0.ɵɵlistener(\"checkStateChange\", function TreeViewGroupComponent_li_0_kendo_checkbox_3_Template_kendo_checkbox_checkStateChange_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const index_r3 = ɵngcc0.ɵɵnextContext().index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.checkNode(ctx_r13.nodeIndex(index_r3)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext();\n const node_r2 = ctx_r16.$implicit;\n const index_r3 = ctx_r16.index;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"node\", node_r2)(\"index\", ctx_r5.nodeIndex(index_r3))(\"isChecked\", ctx_r5.isChecked);\n} }\nfunction TreeViewGroupComponent_li_0_ng_container_6_ng_template_1_Template(rf, ctx) { }\nconst _c2 = function (a0, a1) { return { $implicit: a0, index: a1 }; };\nfunction TreeViewGroupComponent_li_0_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, TreeViewGroupComponent_li_0_ng_container_6_ng_template_1_Template, 0, 0, \"ng-template\", 13);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext();\n const node_r2 = ctx_r18.$implicit;\n const index_r3 = ctx_r18.index;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r6.nodeTemplateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c2, node_r2, ctx_r6.nodeIndex(index_r3)));\n} }\nfunction TreeViewGroupComponent_li_0_ng_container_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const node_r2 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r7.nodeText(node_r2), \" \");\n} }\nfunction TreeViewGroupComponent_li_0_ul_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 14);\n} if (rf & 2) {\n const ctx_r20 = ɵngcc0.ɵɵnextContext();\n const node_r2 = ctx_r20.$implicit;\n const index_r3 = ctx_r20.index;\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"nodes\", ctx_r8.fetchChildren)(\"loadOnDemand\", ctx_r8.loadOnDemand)(\"checkboxes\", ctx_r8.checkboxes)(\"expandIcons\", ctx_r8.expandIcons)(\"selectable\", ctx_r8.selectable)(\"touchActions\", ctx_r8.touchActions)(\"children\", ctx_r8.children)(\"hasChildren\", ctx_r8.hasChildren)(\"isChecked\", ctx_r8.isChecked)(\"isDisabled\", ctx_r8.isDisabled)(\"disabled\", ctx_r8.disabled || ctx_r8.isDisabled(node_r2, ctx_r8.nodeIndex(index_r3)))(\"isExpanded\", ctx_r8.isExpanded)(\"isSelected\", ctx_r8.isSelected)(\"isVisible\", ctx_r8.isVisible)(\"nodeTemplateRef\", ctx_r8.nodeTemplateRef)(\"loadMoreButtonTemplateRef\", ctx_r8.loadMoreButtonTemplateRef)(\"parentIndex\", ctx_r8.nodeIndex(index_r3))(\"parentDataItem\", node_r2)(\"textField\", ctx_r8.nextFields)(\"loadMoreService\", ctx_r8.loadMoreService)(\"@toggle\", true)(\"trackBy\", ctx_r8.trackBy);\n} }\nfunction TreeViewGroupComponent_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 2);\n ɵngcc0.ɵɵelementStart(1, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, TreeViewGroupComponent_li_0_span_2_Template, 1, 5, \"span\", 4);\n ɵngcc0.ɵɵtemplate(3, TreeViewGroupComponent_li_0_kendo_checkbox_3_Template, 1, 3, \"kendo-checkbox\", 5);\n ɵngcc0.ɵɵelementStart(4, \"span\", 6);\n ɵngcc0.ɵɵelementContainerStart(5, 7);\n ɵngcc0.ɵɵtemplate(6, TreeViewGroupComponent_li_0_ng_container_6_Template, 2, 5, \"ng-container\", 8);\n ɵngcc0.ɵɵtemplate(7, TreeViewGroupComponent_li_0_ng_container_7_Template, 2, 1, \"ng-container\", 9);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, TreeViewGroupComponent_li_0_ul_8_Template, 1, 22, \"ul\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const node_r2 = ctx.$implicit;\n const index_r3 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-display-none\", !ctx_r0.isVisible(node_r2, ctx_r0.nodeIndex(index_r3)));\n ɵngcc0.ɵɵproperty(\"dataItem\", node_r2)(\"index\", ctx_r0.nodeIndex(index_r3))(\"parentDataItem\", ctx_r0.parentDataItem)(\"parentIndex\", ctx_r0.parentIndex)(\"loadOnDemand\", ctx_r0.loadOnDemand)(\"checkable\", ctx_r0.checkboxes)(\"isChecked\", ctx_r0.isChecked(node_r2, ctx_r0.nodeIndex(index_r3)))(\"isDisabled\", ctx_r0.disabled || ctx_r0.isDisabled(node_r2, ctx_r0.nodeIndex(index_r3)))(\"isVisible\", ctx_r0.isVisible(node_r2, ctx_r0.nodeIndex(index_r3)))(\"expandable\", ctx_r0.expandIcons && ctx_r0.hasChildren(node_r2))(\"isExpanded\", ctx_r0.isExpanded(node_r2, ctx_r0.nodeIndex(index_r3)))(\"selectable\", ctx_r0.selectable)(\"isSelected\", ctx_r0.isSelected(node_r2, ctx_r0.nodeIndex(index_r3)));\n ɵngcc0.ɵɵattribute(\"aria-setsize\", ctx_r0.totalNodesCount)(\"data-treeindex\", ctx_r0.nodeIndex(index_r3));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.expandIcons && ctx_r0.hasChildren(node_r2));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.checkboxes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"touch-action\", ctx_r0.touchActions ? \"\" : \"none\");\n ɵngcc0.ɵɵproperty(\"dataItem\", node_r2)(\"index\", ctx_r0.nodeIndex(index_r3))(\"initialSelection\", ctx_r0.isSelected(node_r2, ctx_r0.nodeIndex(index_r3)))(\"isSelected\", ctx_r0.isSelected);\n ɵngcc0.ɵɵattribute(\"data-treeindex\", ctx_r0.nodeIndex(index_r3));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx_r0.hasTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.isExpanded(node_r2, ctx_r0.nodeIndex(index_r3)) && ctx_r0.hasChildren(node_r2));\n} }\nfunction TreeViewGroupComponent_li_1_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 19);\n} }\nfunction TreeViewGroupComponent_li_1_4_ng_template_0_Template(rf, ctx) { }\nconst _c3 = function (a0) { return { index: a0 }; };\nfunction TreeViewGroupComponent_li_1_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TreeViewGroupComponent_li_1_4_ng_template_0_Template, 0, 0, \"ng-template\", 13);\n} if (rf & 2) {\n const ctx_r22 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r22.loadMoreButtonTemplateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r22.loadMoreButtonIndex));\n} }\nfunction TreeViewGroupComponent_li_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1, \" Load more \");\n ɵngcc0.ɵɵelementContainerEnd();\n} }\nfunction TreeViewGroupComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 15);\n ɵngcc0.ɵɵelementStart(1, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, TreeViewGroupComponent_li_1_span_2_Template, 1, 0, \"span\", 16);\n ɵngcc0.ɵɵelementStart(3, \"span\", 17);\n ɵngcc0.ɵɵtemplate(4, TreeViewGroupComponent_li_1_4_Template, 1, 4, null, 18);\n ɵngcc0.ɵɵtemplate(5, TreeViewGroupComponent_li_1_ng_container_5_Template, 2, 0, \"ng-container\", 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"k-treeview-load-more-checkboxes-container\", ctx_r1.checkboxes);\n ɵngcc0.ɵɵproperty(\"selectable\", false)(\"checkable\", false)(\"expandable\", false)(\"index\", ctx_r1.loadMoreButtonIndex)(\"parentDataItem\", ctx_r1.parentDataItem)(\"parentIndex\", ctx_r1.parentIndex);\n ɵngcc0.ɵɵattribute(\"data-treeindex\", ctx_r1.loadMoreButtonIndex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.loadingMoreNodes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"index\", ctx_r1.loadMoreButtonIndex);\n ɵngcc0.ɵɵattribute(\"data-treeindex\", ctx_r1.loadMoreButtonIndex);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.loadMoreButtonTemplateRef);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.loadMoreButtonTemplateRef);\n} }\nfunction DragClueComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelement(1, \"span\");\n ɵngcc0.ɵɵelementStart(2, \"span\");\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"k-icon \", ctx_r0.statusIconClass, \" k-drag-status\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.text);\n} }\nfunction DragClueComponent_1_ng_template_0_Template(rf, ctx) { }\nconst _c4 = function (a0, a1, a2, a3) { return { text: a0, action: a1, sourceItem: a2, destinationItem: a3 }; };\nfunction DragClueComponent_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DragClueComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 1);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction4(2, _c4, ctx_r1.text, ctx_r1.action, ctx_r1.sourceItem, ctx_r1.destinationItem));\n} }\nfunction DropHintComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵelement(1, \"div\", 3);\n ɵngcc0.ɵɵelement(2, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction DropHintComponent_1_ng_template_0_ng_template_0_Template(rf, ctx) { }\nfunction DropHintComponent_1_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropHintComponent_1_ng_template_0_ng_template_0_Template, 0, 0, \"ng-template\");\n} }\nconst _c5 = function (a0, a1, a2) { return { action: a0, sourceItem: a1, destinationItem: a2 }; };\nfunction DropHintComponent_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropHintComponent_1_ng_template_0_Template, 1, 0, \"ng-template\", 5);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c5, ctx_r1.action, ctx_r1.sourceItem, ctx_r1.destinationItem));\n} }\nconst packageMetadata = {\n name: '@progress/kendo-angular-treeview',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635943171,\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}\nDataChangeNotificationService.ɵfac = function DataChangeNotificationService_Factory(t) { return new (t || DataChangeNotificationService)(); };\nDataChangeNotificationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DataChangeNotificationService, factory: DataChangeNotificationService.ɵfac });\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 */\nlet ExpandStateService = class ExpandStateService {\n /**\n * @hidden\n */\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 = function ExpandStateService_Factory(t) { return new (t || ExpandStateService)(); };\nExpandStateService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ExpandStateService, factory: function (t) { return ExpandStateService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet IndexBuilderService = class IndexBuilderService {\n /**\n * @hidden\n */\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 = function IndexBuilderService_Factory(t) { return new (t || IndexBuilderService)(); };\nIndexBuilderService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: IndexBuilderService, factory: function (t) { return IndexBuilderService.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet LoadingNotificationService = class LoadingNotificationService {\n /**\n * @hidden\n */\n constructor() {\n this.changes = new Subject();\n }\n notifyLoaded(index) {\n this.changes.next(index);\n }\n};\nLoadingNotificationService.ɵfac = function LoadingNotificationService_Factory(t) { return new (t || LoadingNotificationService)(); };\nLoadingNotificationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LoadingNotificationService, factory: function (t) { return LoadingNotificationService.ɵfac(t); } });\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-in: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-in:not(.k-treeview-load-more-button)');\n }\n};\n/**\n * @hidden\n *\n * Returns the nested .k-in: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-in: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-in.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 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 ɵ2 = (a, b) => a.indexOf(b) >= 0, ɵ3 = (a, b) => a.indexOf(b) === -1, ɵ4 = (a, b) => a.lastIndexOf(b, 0) === 0, ɵ5 = (a, b) => a.lastIndexOf(b, 0) === -1, ɵ6 = (a, b) => a.indexOf(b, a.length - b.length) >= 0, ɵ7 = (a, b) => a.indexOf(b, a.length - b.length) < 0;\nconst operators = {\n contains: ɵ2,\n doesnotcontain: ɵ3,\n startswith: ɵ4,\n doesnotstartwith: ɵ5,\n endswith: ɵ6,\n doesnotendwith: ɵ7\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 arrays to determine whether all unique elements in one, are present in the other.\n * Important:\n * - it disregards the element order\n * - it disregards element repetitions - sameValues([1, 1, 2], [1, 2, 2]) will return true\n */\nconst sameValues = (a, b) => {\n if (a.length !== b.length) {\n return false;\n }\n const values = new Set(b);\n return a.every(v => values.has(v));\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 */\nlet NavigationService = class 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)),\n [Keys.ArrowDown]: () => this.activate(this.model.findVisibleNext(this.focusableItem)),\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()),\n [Keys.End]: () => this.activate(this.model.lastVisibleNode()),\n [Keys.Enter]: () => this.handleEnter(),\n [Keys.Space]: () => this.handleSpace()\n };\n this.isFocused = 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) {\n if (!this.navigable || !item || this.isActive(nodeIndex(item))) {\n return;\n }\n this.isFocused = true;\n this.activeItem = item || this.activeItem;\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 });\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 = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(ɵngcc1.LocalizationService)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], NavigationService);\n\n/**\n * @hidden\n */\nlet NodeChildrenService = class NodeChildrenService {\n /**\n * @hidden\n */\n constructor() {\n this.changes = new Subject();\n }\n childrenLoaded(item, children) {\n this.changes.next({ item, children });\n }\n};\nNodeChildrenService.ɵfac = function NodeChildrenService_Factory(t) { return new (t || NodeChildrenService)(); };\nNodeChildrenService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NodeChildrenService, factory: function (t) { return NodeChildrenService.ɵfac(t); } });\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 */\nlet NodeTemplateDirective = class NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNodeTemplateDirective.ɵfac = function NodeTemplateDirective_Factory(t) { return new (t || NodeTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nNodeTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NodeTemplateDirective, selectors: [[\"\", \"kendoTreeViewNodeTemplate\", \"\"]] });\nNodeTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], NodeTemplateDirective);\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 */\nlet LoadMoreButtonTemplateDirective = class LoadMoreButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nLoadMoreButtonTemplateDirective.ɵfac = function LoadMoreButtonTemplateDirective_Factory(t) { return new (t || LoadMoreButtonTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nLoadMoreButtonTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LoadMoreButtonTemplateDirective, selectors: [[\"\", \"kendoTreeViewLoadMoreButtonTemplate\", \"\"]] });\nLoadMoreButtonTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], LoadMoreButtonTemplateDirective);\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 */\nlet DataBoundComponent = class DataBoundComponent {\n};\nDataBoundComponent.ɵfac = function DataBoundComponent_Factory(t) { return new (t || DataBoundComponent)(); };\nDataBoundComponent.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DataBoundComponent, factory: function (t) { return DataBoundComponent.ɵfac(t); } });\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 */\nlet ExpandableComponent = class ExpandableComponent {\n};\nExpandableComponent.ɵfac = function ExpandableComponent_Factory(t) { return new (t || ExpandableComponent)(); };\nExpandableComponent.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ExpandableComponent, factory: function (t) { return ExpandableComponent.ɵfac(t); } });\n\n/**\n * @hidden\n */\nlet SelectionService = class SelectionService {\n /**\n * @hidden\n */\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 = function SelectionService_Factory(t) { return new (t || SelectionService)(); };\nSelectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SelectionService, factory: function (t) { return SelectionService.ɵfac(t); } });\n\nconst INDEX_REGEX = /\\d+$/;\n/**\n * @hidden\n */\nlet TreeViewLookupService = class TreeViewLookupService {\n /**\n * @hidden\n */\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 = function TreeViewLookupService_Factory(t) { return new (t || TreeViewLookupService)(); };\nTreeViewLookupService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TreeViewLookupService, factory: function (t) { return TreeViewLookupService.ɵfac(t); } });\n\nconst LOAD_MORE_DOC_LINK = '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/* tslint:disable:member-ordering */\n/**\n * Represents the [Kendo UI TreeView component for Angular]({% slug overview_treeview %}).\n *\n * @example\n * {% meta height:350 %}\n * {% embed_file basic-usage/app.component.ts preview %}\n * {% embed_file basic-usage/app.module.ts %}\n * {% endmeta %}\n */\nlet TreeViewComponent = class 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.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 set nodeTemplateRef(template) {\n this.nodeTemplate = template;\n }\n /**\n * @hidden\n */\n set loadMoreButtonTemplateRef(template) {\n this.loadMoreButtonTemplate = template;\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 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 }\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-state-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}.`);\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 = function TreeViewComponent_Factory(t) { return new (t || TreeViewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ExpandStateService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(NodeChildrenService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(TreeViewLookupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DataChangeNotificationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.LocalizationService)); };\nTreeViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TreeViewComponent, selectors: [[\"kendo-treeview\"]], contentQueries: function TreeViewComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 7);\n ɵngcc0.ɵɵcontentQuery(dirIndex, LoadMoreButtonTemplateDirective, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.nodeTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadMoreButtonTemplate = _t.first);\n } }, viewQuery: function TreeViewComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7, ViewContainerRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.assetsContainer = _t.first);\n } }, hostVars: 7, hostBindings: function TreeViewComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"dir\", ctx.direction);\n ɵngcc0.ɵɵsyntheticHostProperty(\"@.disabled\", ctx.animate);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.classNames)(\"k-treeview\", ctx.classNames);\n } }, inputs: { filterInputPlaceholder: \"filterInputPlaceholder\", trackBy: \"trackBy\", isDisabled: \"isDisabled\", isVisible: \"isVisible\", navigable: \"navigable\", children: \"children\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", animate: \"animate\", nodeTemplateRef: [\"nodeTemplate\", \"nodeTemplateRef\"], loadMoreButtonTemplateRef: [\"loadMoreButtonTemplate\", \"loadMoreButtonTemplateRef\"], nodes: \"nodes\", hasChildren: \"hasChildren\", isChecked: \"isChecked\", isExpanded: \"isExpanded\", isSelected: \"isSelected\", textField: \"textField\" }, 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\" }, exportAs: [\"kendoTreeView\"], features: [ɵngcc0.ɵɵProvidersFeature(providers), ɵngcc0.ɵɵNgOnChangesFeature], decls: 4, vars: 19, consts: [[3, \"value\", \"clearButton\", \"placeholder\", \"valueChange\", 4, \"ngIf\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"group\", 1, \"k-treeview-lines\", 3, \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"textField\", \"nodes\", \"loadMoreService\", \"trackBy\"], [\"assetsContainer\", \"\"], [3, \"value\", \"clearButton\", \"placeholder\", \"valueChange\"], [\"filterInput\", \"\"], [\"kendoTextBoxPrefixTemplate\", \"\"], [1, \"k-icon\", \"k-i-search\"]], template: function TreeViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TreeViewComponent_kendo_textbox_0_Template, 3, 3, \"kendo-textbox\", 0);\n ɵngcc0.ɵɵelement(1, \"ul\", 1);\n ɵngcc0.ɵɵelementContainer(2, null, 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.filterable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"loadOnDemand\", ctx.loadOnDemand)(\"checkboxes\", ctx.checkboxes)(\"expandIcons\", ctx.expandIcons)(\"selectable\", ctx.selectable)(\"touchActions\", ctx.touchActions)(\"children\", ctx.children)(\"hasChildren\", ctx.hasChildren)(\"isChecked\", ctx.isChecked)(\"isDisabled\", ctx.isDisabled)(\"isExpanded\", ctx.isExpanded)(\"isSelected\", ctx.isSelected)(\"isVisible\", ctx.isVisible)(\"nodeTemplateRef\", ctx.nodeTemplate == null ? null : ctx.nodeTemplate.templateRef)(\"loadMoreButtonTemplateRef\", ctx.loadMoreButtonTemplate == null ? null : ctx.loadMoreButtonTemplate.templateRef)(\"textField\", ctx.textField)(\"nodes\", ctx.fetchNodes)(\"loadMoreService\", ctx.loadMoreService)(\"trackBy\", ctx.trackBy);\n } }, directives: function () { return [ɵngcc2.NgIf, ɵngcc3.TextBoxComponent, ɵngcc3.TextBoxPrefixTemplateDirective, TreeViewGroupComponent]; }, encapsulation: 2 });\n__decorate([\n HostBinding(\"class.k-widget\"),\n HostBinding(\"class.k-treeview\"),\n __metadata(\"design:type\", Boolean)\n], TreeViewComponent.prototype, \"classNames\", void 0);\n__decorate([\n HostBinding(\"attr.role\"),\n __metadata(\"design:type\", String)\n], TreeViewComponent.prototype, \"role\", void 0);\n__decorate([\n HostBinding(\"attr.dir\"),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], TreeViewComponent.prototype, \"direction\", null);\n__decorate([\n ViewChild('assetsContainer', { read: ViewContainerRef, static: true }),\n __metadata(\"design:type\", ViewContainerRef)\n], TreeViewComponent.prototype, \"assetsContainer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewComponent.prototype, \"filterInputPlaceholder\", void 0);\n__decorate([\n Input(),\n HostBinding('@.disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], TreeViewComponent.prototype, \"animate\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"childrenLoaded\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"expand\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"collapse\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDragStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDrag\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"filterStateChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDrop\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDragEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"addItem\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"removeItem\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"checkedChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"selectionChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"filterChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeClick\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], TreeViewComponent.prototype, \"nodeDblClick\", void 0);\n__decorate([\n ContentChild(NodeTemplateDirective, { static: true }),\n __metadata(\"design:type\", NodeTemplateDirective)\n], TreeViewComponent.prototype, \"nodeTemplate\", void 0);\n__decorate([\n Input('nodeTemplate'),\n __metadata(\"design:type\", NodeTemplateDirective),\n __metadata(\"design:paramtypes\", [NodeTemplateDirective])\n], TreeViewComponent.prototype, \"nodeTemplateRef\", null);\n__decorate([\n ContentChild(LoadMoreButtonTemplateDirective, { static: true }),\n __metadata(\"design:type\", LoadMoreButtonTemplateDirective)\n], TreeViewComponent.prototype, \"loadMoreButtonTemplate\", void 0);\n__decorate([\n Input('loadMoreButtonTemplate'),\n __metadata(\"design:type\", LoadMoreButtonTemplateDirective),\n __metadata(\"design:paramtypes\", [LoadMoreButtonTemplateDirective])\n], TreeViewComponent.prototype, \"loadMoreButtonTemplateRef\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewComponent.prototype, \"trackBy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], TreeViewComponent.prototype, \"nodes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], TreeViewComponent.prototype, \"hasChildren\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], TreeViewComponent.prototype, \"isChecked\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewComponent.prototype, \"isDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], TreeViewComponent.prototype, \"isExpanded\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], TreeViewComponent.prototype, \"isSelected\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewComponent.prototype, \"isVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewComponent.prototype, \"navigable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewComponent.prototype, \"children\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewComponent.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewComponent.prototype, \"filterable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewComponent.prototype, \"filter\", void 0);\nTreeViewComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ChangeDetectorRef,\n ExpandStateService,\n NavigationService,\n NodeChildrenService,\n SelectionService,\n TreeViewLookupService,\n NgZone,\n Renderer2,\n DataChangeNotificationService,\n LocalizationService])\n], TreeViewComponent);\n\n/**\n * @hidden\n */\nlet TreeViewGroupComponent = class 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.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 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 = function TreeViewGroupComponent_Factory(t) { return new (t || TreeViewGroupComponent)(ɵngcc0.ɵɵdirectiveInject(ExpandStateService), ɵngcc0.ɵɵdirectiveInject(LoadingNotificationService), ɵngcc0.ɵɵdirectiveInject(IndexBuilderService), ɵngcc0.ɵɵdirectiveInject(TreeViewLookupService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(NodeChildrenService), ɵngcc0.ɵɵdirectiveInject(DataChangeNotificationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTreeViewGroupComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TreeViewGroupComponent, selectors: [[\"\", \"kendoTreeViewGroup\", \"\"]], hostVars: 3, hostBindings: function TreeViewGroupComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role);\n ɵngcc0.ɵɵclassProp(\"k-group\", ctx.kGroupClass);\n } }, inputs: { loadOnDemand: \"loadOnDemand\", textField: \"textField\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isExpanded: \"isExpanded\", isVisible: \"isVisible\", isSelected: \"isSelected\", children: \"children\", hasChildren: \"hasChildren\", checkboxes: \"checkboxes\", expandIcons: \"expandIcons\", disabled: \"disabled\", selectable: \"selectable\", touchActions: \"touchActions\", trackBy: \"trackBy\", nodes: \"nodes\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", nodeTemplateRef: \"nodeTemplateRef\", loadMoreButtonTemplateRef: \"loadMoreButtonTemplateRef\", loadMoreService: \"loadMoreService\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c1, decls: 2, vars: 3, consts: [[\"class\", \"k-item k-treeview-item\", \"kendoTreeViewItem\", \"\", 3, \"k-display-none\", \"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"loadOnDemand\", \"checkable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"expandable\", \"isExpanded\", \"selectable\", \"isSelected\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"k-item k-treeview-item\", \"kendoTreeViewItem\", \"\", \"role\", \"button\", 3, \"k-treeview-load-more-checkboxes-container\", \"selectable\", \"checkable\", \"expandable\", \"index\", \"parentDataItem\", \"parentIndex\", 4, \"ngIf\"], [\"kendoTreeViewItem\", \"\", 1, \"k-item\", \"k-treeview-item\", 3, \"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"loadOnDemand\", \"checkable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"expandable\", \"isExpanded\", \"selectable\", \"isSelected\"], [1, \"k-mid\"], [\"class\", \"k-icon\", 3, \"k-i-collapse\", \"k-i-expand\", \"kendoTreeViewLoading\", \"click\", 4, \"ngIf\"], [\"tabindex\", \"-1\", 3, \"node\", \"index\", \"isChecked\", \"checkStateChange\", 4, \"ngIf\"], [\"kendoTreeViewItemContent\", \"\", 1, \"k-in\", 3, \"dataItem\", \"index\", \"initialSelection\", \"isSelected\"], [3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [4, \"ngSwitchDefault\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"group\", 3, \"nodes\", \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"disabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"parentIndex\", \"parentDataItem\", \"textField\", \"loadMoreService\", \"trackBy\", 4, \"ngIf\"], [1, \"k-icon\", 3, \"kendoTreeViewLoading\", \"click\"], [\"tabindex\", \"-1\", 3, \"node\", \"index\", \"isChecked\", \"checkStateChange\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"group\", 3, \"nodes\", \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"disabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"parentIndex\", \"parentDataItem\", \"textField\", \"loadMoreService\", \"trackBy\"], [\"kendoTreeViewItem\", \"\", \"role\", \"button\", 1, \"k-item\", \"k-treeview-item\", 3, \"selectable\", \"checkable\", \"expandable\", \"index\", \"parentDataItem\", \"parentIndex\"], [\"class\", \"k-icon k-i-loading k-i-expand\", 4, \"ngIf\"], [\"kendoTreeViewItemContent\", \"\", 1, \"k-in\", \"k-treeview-load-more-button\", 3, \"index\"], [4, \"ngIf\"], [1, \"k-icon\", \"k-i-loading\", \"k-i-expand\"]], template: function TreeViewGroupComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TreeViewGroupComponent_li_0_Template, 9, 29, \"li\", 0);\n ɵngcc0.ɵɵtemplate(1, TreeViewGroupComponent_li_1_Template, 6, 14, \"li\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.initialNodesLoaded && ctx.moreNodesAvailable);\n } }, directives: function () { return [ɵngcc2.NgForOf, TreeViewItemDirective, ɵngcc2.NgIf, LoadingIndicatorDirective, CheckBoxComponent, TreeViewItemContentDirective, ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase, ɵngcc2.NgTemplateOutlet, ɵngcc2.NgSwitchDefault, TreeViewGroupComponent]; }, encapsulation: 2, data: { animation: [\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__decorate([\n HostBinding(\"class.k-group\"),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"kGroupClass\", void 0);\n__decorate([\n HostBinding(\"attr.role\"),\n __metadata(\"design:type\", String)\n], TreeViewGroupComponent.prototype, \"role\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"checkboxes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"expandIcons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"selectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"touchActions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewGroupComponent.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"trackBy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"nodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewGroupComponent.prototype, \"textField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewGroupComponent.prototype, \"parentDataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewGroupComponent.prototype, \"parentIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], TreeViewGroupComponent.prototype, \"nodeTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], TreeViewGroupComponent.prototype, \"loadMoreButtonTemplateRef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewGroupComponent.prototype, \"loadMoreService\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isChecked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"isSelected\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"children\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewGroupComponent.prototype, \"hasChildren\", void 0);\nTreeViewGroupComponent = __decorate([ __metadata(\"design:paramtypes\", [ExpandStateService,\n LoadingNotificationService,\n IndexBuilderService,\n TreeViewLookupService,\n NavigationService,\n NodeChildrenService,\n DataChangeNotificationService,\n ChangeDetectorRef])\n], TreeViewGroupComponent);\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 */\nlet CheckDirective = class 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 this._checkedKeys = [];\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 /**\n * Defines the collection that will store the checked keys\n * ([see example]({% slug checkboxes_treeview %})).\n */\n get checkedKeys() {\n return this._checkedKeys;\n }\n set checkedKeys(keys) {\n this._checkedKeys = keys;\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 }\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 keyIndex = this.checkedKeys.indexOf(this.itemKey({ dataItem, index }));\n return keyIndex > -1 ? 'checked' : 'none';\n }\n isIndexChecked(index) {\n const checkedKeys = this.checkedKeys.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 this.checkedKeys = this.checkedKeys[0] !== key ? [key] : [];\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 checkedKeys = new Set(this.checkedKeys);\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 = !checkedKeys.has(currentKey);\n pendingCheck.forEach(key => {\n if (shouldCheck) {\n checkedKeys.add(key);\n }\n else {\n checkedKeys.delete(key);\n }\n });\n this.checkedKeys = Array.from(checkedKeys);\n }\n checkParents(parent) {\n if (!isPresent(parent)) {\n return;\n }\n const checkedKeys = new Set(this.checkedKeys);\n let currentParent = parent;\n while (currentParent) {\n const parentKey = this.itemKey(currentParent.item);\n const allChildrenSelected = currentParent.children.every(item => checkedKeys.has(this.itemKey(item)));\n if (allChildrenSelected) {\n checkedKeys.add(parentKey);\n }\n else {\n checkedKeys.delete(parentKey);\n }\n currentParent = currentParent.parent;\n }\n this.checkedKeys = Array.from(checkedKeys);\n }\n notify() {\n this.checkedKeysChange.emit(this.checkedKeys.slice());\n }\n addCheckedItemsChildren(lookups) {\n if (!isPresent(lookups) || lookups.length === 0) {\n return;\n }\n const initiallyCheckedItemsCount = this.checkedKeys.length;\n const checkedKeys = new Set(this.checkedKeys);\n lookups.forEach(lookup => {\n const itemKey = this.itemKey(lookup.item);\n if (!checkedKeys.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 checkedKeys.add(this.itemKey(item));\n }\n });\n });\n const hasNewlyCheckedItems = initiallyCheckedItemsCount !== checkedKeys.size;\n if (hasNewlyCheckedItems) {\n this.checkedKeys = Array.from(checkedKeys);\n this.zone.run(() => this.notify());\n }\n }\n};\nCheckDirective.ɵfac = function CheckDirective_Factory(t) { return new (t || CheckDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCheckDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CheckDirective, selectors: [[\"\", \"kendoTreeViewCheckable\", \"\"]], inputs: { isChecked: \"isChecked\", checkedKeys: \"checkedKeys\", checkKey: [\"checkBy\", \"checkKey\"], checkable: [\"kendoTreeViewCheckable\", \"checkable\"] }, outputs: { checkedKeysChange: \"checkedKeysChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], CheckDirective.prototype, \"isChecked\", null);\n__decorate([\n Input(\"checkBy\"),\n __metadata(\"design:type\", Object)\n], CheckDirective.prototype, \"checkKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], CheckDirective.prototype, \"checkedKeys\", null);\n__decorate([\n Input('kendoTreeViewCheckable'),\n __metadata(\"design:type\", Object)\n], CheckDirective.prototype, \"checkable\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CheckDirective.prototype, \"checkedKeysChange\", void 0);\nCheckDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent,\n NgZone])\n], CheckDirective);\n\n/**\n * A directive which manages the disabled in-memory state of the TreeView node\n * ([see example]({% slug disabledstate_treeview %})).\n */\nlet DisableDirective = class 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 = function DisableDirective_Factory(t) { return new (t || DisableDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nDisableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DisableDirective, selectors: [[\"\", \"kendoTreeViewDisable\", \"\"]], inputs: { disabledKeys: \"disabledKeys\", isDisabled: \"isDisabled\", disableKey: [\"kendoTreeViewDisable\", \"disableKey\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], DisableDirective.prototype, \"isDisabled\", null);\n__decorate([\n Input(\"kendoTreeViewDisable\"),\n __metadata(\"design:type\", Object)\n], DisableDirective.prototype, \"disableKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], DisableDirective.prototype, \"disabledKeys\", void 0);\nDisableDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent,\n ChangeDetectorRef])\n], DisableDirective);\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 */\nlet ExpandDirective = class 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 this._expandedKeys = [];\n this.originalExpandedKeys = [];\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.expandedKeys.indexOf(this.itemKey({ dataItem, index })) > -1;\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({}, this.expandOnFilter, { enabled: true });\n return Object.assign({}, DEFAULT_FILTER_EXPAND_SETTINGS, settings);\n }\n /**\n * Defines the collection that will store the expanded keys.\n */\n get expandedKeys() {\n return this._expandedKeys;\n }\n set expandedKeys(keys) {\n this._expandedKeys = keys;\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 item = this.itemKey({ index, dataItem });\n const idx = this.expandedKeys.indexOf(item);\n let notify = false;\n if (idx > -1 && !expand) {\n this.expandedKeys.splice(idx, 1);\n notify = true;\n }\n else if (idx === -1 && expand) {\n this.expandedKeys.push(item);\n notify = true;\n }\n if (notify) {\n this.expandedKeysChange.emit(this.expandedKeys);\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 = this.expandedKeys.slice();\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.expandedKeys, this.originalExpandedKeys)) {\n this.expandedKeys = this.originalExpandedKeys;\n this.expandedKeysChange.emit(this.expandedKeys);\n }\n break;\n }\n case \"all\": {\n this.expandedKeys = nodes.reduce((acc, rootNode) => {\n this.getEveryExpandKey(acc, rootNode);\n return acc;\n }, []);\n this.expandedKeysChange.emit(this.expandedKeys);\n break;\n }\n case \"unchanged\": {\n break;\n }\n case \"none\":\n default: {\n if (this.expandedKeys.length !== 0) {\n this.expandedKeys = [];\n this.expandedKeysChange.emit(this.expandedKeys);\n }\n break;\n }\n }\n this.isFiltered = false;\n return;\n }\n const indicesToExpand = nodes.reduce((acc, rootNode) => {\n this.updateExpandedNodes(acc, rootNode, autoExpandMatches);\n return acc;\n }, []);\n if (!sameValues(this.expandedKeys, indicesToExpand)) {\n this.expandedKeys = indicesToExpand;\n this.expandedKeysChange.emit(this.expandedKeys);\n }\n this.isFiltered = true;\n }\n};\nExpandDirective.ɵfac = function ExpandDirective_Factory(t) { return new (t || ExpandDirective)(ɵngcc0.ɵɵdirectiveInject(ExpandableComponent)); };\nExpandDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ExpandDirective, selectors: [[\"\", \"kendoTreeViewExpandable\", \"\"]], inputs: { expandOnFilter: \"expandOnFilter\", isExpanded: \"isExpanded\", expandedKeys: \"expandedKeys\", expandKey: [\"expandBy\", \"expandKey\"] }, outputs: { expandedKeysChange: \"expandedKeysChange\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], ExpandDirective.prototype, \"isExpanded\", null);\n__decorate([\n Input(\"expandBy\"),\n __metadata(\"design:type\", Object)\n], ExpandDirective.prototype, \"expandKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ExpandDirective.prototype, \"expandOnFilter\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], ExpandDirective.prototype, \"expandedKeysChange\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], ExpandDirective.prototype, \"expandedKeys\", null);\nExpandDirective = __decorate([ __metadata(\"design:paramtypes\", [ExpandableComponent])\n], ExpandDirective);\n\n/**\n * A directive which manages the in-memory selection state of the TreeView node\n * ([see example]({% slug selection_treeview %})).\n */\nlet SelectDirective = class 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 this._selectedKeys = [];\n this.subscriptions.add(this.treeView.selectionChange.subscribe(this.select.bind(this)));\n this.treeView.isSelected = (dataItem, index) => (this.selectedKeys.indexOf(this.itemKey({ dataItem, index })) > -1);\n }\n /**\n * @hidden\n */\n set isSelected(value) {\n this.treeView.isSelected = value;\n }\n /**\n * Defines the collection that will store the selected keys\n * ([see example]({% slug selection_treeview %}#toc-selection-modes)).\n */\n get selectedKeys() {\n return this._selectedKeys;\n }\n set selectedKeys(keys) {\n this._selectedKeys = keys;\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 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.selectedKeys[0] === key) {\n return;\n }\n this.selectedKeys = [key];\n this.notify();\n }\n selectMultiple(node) {\n const key = this.itemKey(node);\n const idx = this.selectedKeys.indexOf(key);\n const isSelected = idx > -1;\n if (!isPresent(key)) {\n return;\n }\n if (isSelected) {\n this.selectedKeys.splice(idx, 1);\n }\n else {\n this.selectedKeys.push(key);\n }\n this.notify();\n }\n notify() {\n this.selectedKeysChange.emit(this.selectedKeys.slice());\n }\n};\nSelectDirective.ɵfac = function SelectDirective_Factory(t) { return new (t || SelectDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent)); };\nSelectDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SelectDirective, selectors: [[\"\", \"kendoTreeViewSelectable\", \"\"]], hostVars: 1, hostBindings: function SelectDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-multiselectable\", ctx.getAriaMultiselectable);\n } }, inputs: { isSelected: \"isSelected\", selectedKeys: \"selectedKeys\", selectKey: [\"selectBy\", \"selectKey\"], selection: [\"kendoTreeViewSelectable\", \"selection\"] }, outputs: { selectedKeysChange: \"selectedKeysChange\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], SelectDirective.prototype, \"isSelected\", null);\n__decorate([\n Input('selectBy'),\n __metadata(\"design:type\", Object)\n], SelectDirective.prototype, \"selectKey\", void 0);\n__decorate([\n Input('kendoTreeViewSelectable'),\n __metadata(\"design:type\", Object)\n], SelectDirective.prototype, \"selection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], SelectDirective.prototype, \"selectedKeys\", null);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], SelectDirective.prototype, \"selectedKeysChange\", void 0);\n__decorate([\n HostBinding('attr.aria-multiselectable'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], SelectDirective.prototype, \"getAriaMultiselectable\", null);\nSelectDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent])\n], SelectDirective);\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}\n\nconst ɵ0$3 = () => {\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 * 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(ɵ0$3);\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-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-mid');\n if (!isPresent(item)) {\n return;\n }\n // the content element (.k-in: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 */\nlet DragClueComponent = class 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 = function DragClueComponent_Factory(t) { return new (t || DragClueComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nDragClueComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DragClueComponent, selectors: [[\"kendo-treeview-drag-clue\"]], hostVars: 6, hostBindings: function DragClueComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"position\", ctx.posistionStyle);\n ɵngcc0.ɵɵclassProp(\"k-header\", ctx.hostClasses)(\"k-drag-clue\", ctx.hostClasses);\n } }, decls: 2, vars: 2, consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function DragClueComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DragClueComponent_ng_container_0_Template, 4, 4, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(1, DragClueComponent_1_Template, 1, 7, null, 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.template);\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding('class.k-header'),\n HostBinding('class.k-drag-clue'),\n __metadata(\"design:type\", Boolean)\n], DragClueComponent.prototype, \"hostClasses\", void 0);\n__decorate([\n HostBinding('style.position'),\n __metadata(\"design:type\", String)\n], DragClueComponent.prototype, \"posistionStyle\", void 0);\nDragClueComponent = __decorate([ __metadata(\"design:paramtypes\", [ChangeDetectorRef])\n], DragClueComponent);\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 = function DragAndDropAssetService_Factory(t) { return new (t || DragAndDropAssetService)(); };\nDragAndDropAssetService.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DragAndDropAssetService });\n\n/**\n * @hidden\n */\nconst CLUE_OFFSET = 10;\n/**\n * @hidden\n */\nconst RETURN_ANIMATION_DURATION = 200;\n/**\n * @hidden\n */\nlet DragClueService = class 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 = function DragClueService_Factory(t) { return new (t || DragClueService)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver)); };\nDragClueService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DragClueService, factory: function (t) { return DragClueService.ɵfac(t); } });\nDragClueService = __decorate([ __metadata(\"design:paramtypes\", [ComponentFactoryResolver])\n], DragClueService);\n\n/**\n * @hidden\n */\nlet DropHintComponent = class 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 = function DropHintComponent_Factory(t) { return new (t || DropHintComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nDropHintComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DropHintComponent, selectors: [[\"kendo-treeview-drop-hint\"]], hostVars: 6, hostBindings: function DropHintComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"position\", ctx.position)(\"pointer-events\", ctx.pointerEvents);\n ɵngcc0.ɵɵclassProp(\"k-drop-hint-container\", ctx.hostClass);\n } }, decls: 2, vars: 2, consts: [[\"class\", \"k-drop-hint k-drop-hint-h\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"k-drop-hint\", \"k-drop-hint-h\"], [1, \"k-drop-hint-start\"], [1, \"k-drop-hint-line\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function DropHintComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DropHintComponent_div_0_Template, 3, 0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, DropHintComponent_1_Template, 1, 6, null, 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.template);\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n__decorate([\n HostBinding('class.k-drop-hint-container'),\n __metadata(\"design:type\", Boolean)\n], DropHintComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('style.position'),\n __metadata(\"design:type\", String)\n], DropHintComponent.prototype, \"position\", void 0);\n__decorate([\n HostBinding('style.pointer-events'),\n __metadata(\"design:type\", String)\n], DropHintComponent.prototype, \"pointerEvents\", void 0);\nDropHintComponent = __decorate([ __metadata(\"design:paramtypes\", [ChangeDetectorRef])\n], DropHintComponent);\n\n/**\n * @hidden\n */\nlet DropHintService = class 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 = function DropHintService_Factory(t) { return new (t || DropHintService)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver)); };\nDropHintService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DropHintService, factory: function (t) { return DropHintService.ɵfac(t); } });\nDropHintService = __decorate([ __metadata(\"design:paramtypes\", [ComponentFactoryResolver])\n], DropHintService);\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 */\nlet DragClueTemplateDirective = class DragClueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDragClueTemplateDirective.ɵfac = function DragClueTemplateDirective_Factory(t) { return new (t || DragClueTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDragClueTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DragClueTemplateDirective, selectors: [[\"\", \"kendoTreeViewDragClueTemplate\", \"\"]] });\nDragClueTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DragClueTemplateDirective);\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 */\nlet DropHintTemplateDirective = class DropHintTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nDropHintTemplateDirective.ɵfac = function DropHintTemplateDirective_Factory(t) { return new (t || DropHintTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef, 8)); };\nDropHintTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropHintTemplateDirective, selectors: [[\"\", \"kendoTreeViewDropHintTemplate\", \"\"]] });\nDropHintTemplateDirective = __decorate([ __param(0, Optional()),\n __metadata(\"design:paramtypes\", [TemplateRef])\n], DropHintTemplateDirective);\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 */\nlet DragAndDropDirective = class 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-in');\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-mid');\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 = function DragAndDropDirective_Factory(t) { return new (t || DragAndDropDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(TreeViewComponent), ɵngcc0.ɵɵdirectiveInject(DragClueService), ɵngcc0.ɵɵdirectiveInject(DropHintService)); };\nDragAndDropDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DragAndDropDirective, selectors: [[\"\", \"kendoTreeViewDragAndDrop\", \"\"]], contentQueries: function DragAndDropDirective_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, DragClueTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, DropHintTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dragClueTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropHintTemplate = _t.first);\n } }, hostVars: 8, hostBindings: function DragAndDropDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"user-select\", ctx.userSelectStyle)(\"-ms-user-select\", ctx.userSelectStyle)(\"-moz-user-select\", ctx.userSelectStyle)(\"-webkit-user-select\", ctx.userSelectStyle);\n } }, inputs: { allowCopy: \"allowCopy\", dropZoneTreeViews: \"dropZoneTreeViews\", startDragAfter: \"startDragAfter\", autoScroll: \"autoScroll\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n DragClueService,\n DropHintService\n ])] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DragAndDropDirective.prototype, \"allowCopy\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], DragAndDropDirective.prototype, \"dropZoneTreeViews\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], DragAndDropDirective.prototype, \"startDragAfter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DragAndDropDirective.prototype, \"autoScroll\", void 0);\n__decorate([\n ContentChild(DragClueTemplateDirective, { static: false }),\n __metadata(\"design:type\", DragClueTemplateDirective)\n], DragAndDropDirective.prototype, \"dragClueTemplate\", void 0);\n__decorate([\n ContentChild(DropHintTemplateDirective, { static: false }),\n __metadata(\"design:type\", DropHintTemplateDirective)\n], DragAndDropDirective.prototype, \"dropHintTemplate\", void 0);\n__decorate([\n HostBinding('style.user-select'),\n HostBinding('style.-ms-user-select'),\n HostBinding('style.-moz-user-select'),\n HostBinding('style.-webkit-user-select'),\n __metadata(\"design:type\", String)\n], DragAndDropDirective.prototype, \"userSelectStyle\", void 0);\nDragAndDropDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n TreeViewComponent,\n DragClueService,\n DropHintService])\n], DragAndDropDirective);\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({}, 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 = function FilteringBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nFilteringBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FilteringBase, inputs: { filterSettings: \"filterSettings\", filter: \"filter\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FilteringBase.prototype, \"filterSettings\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FilteringBase.prototype, \"filter\", null);\n\nconst indexBuilder = 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.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 */\nlet HierarchyBindingDirective = class 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 = function HierarchyBindingDirective_Factory(t) { return new (t || HierarchyBindingDirective)(ɵngcc0.ɵɵdirectiveInject(DataBoundComponent), ɵngcc0.ɵɵdirectiveInject(DragAndDropDirective, 9)); };\nHierarchyBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: HierarchyBindingDirective, selectors: [[\"\", \"kendoTreeViewHierarchyBinding\", \"\"]], inputs: { loadOnDemand: \"loadOnDemand\", childrenField: \"childrenField\", nodes: \"nodes\", isVisible: \"isVisible\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], HierarchyBindingDirective.prototype, \"childrenField\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], HierarchyBindingDirective.prototype, \"nodes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], HierarchyBindingDirective.prototype, \"isVisible\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HierarchyBindingDirective.prototype, \"loadOnDemand\", void 0);\nHierarchyBindingDirective = __decorate([ __param(1, Optional()), __param(1, Host()),\n __metadata(\"design:paramtypes\", [DataBoundComponent,\n DragAndDropDirective])\n], HierarchyBindingDirective);\n\n/**\n * @hidden\n */\nlet LoadingIndicatorDirective = class 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 = function LoadingIndicatorDirective_Factory(t) { return new (t || LoadingIndicatorDirective)(ɵngcc0.ɵɵdirectiveInject(ExpandStateService), ɵngcc0.ɵɵdirectiveInject(LoadingNotificationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nLoadingIndicatorDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LoadingIndicatorDirective, selectors: [[\"\", \"kendoTreeViewLoading\", \"\"]], hostVars: 2, hostBindings: function LoadingIndicatorDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-i-loading\", ctx.loading);\n } }, inputs: { index: [\"kendoTreeViewLoading\", \"index\"] } });\n__decorate([\n HostBinding(\"class.k-i-loading\"),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], LoadingIndicatorDirective.prototype, \"loading\", null);\n__decorate([\n Input(\"kendoTreeViewLoading\"),\n __metadata(\"design:type\", String)\n], LoadingIndicatorDirective.prototype, \"index\", void 0);\nLoadingIndicatorDirective = __decorate([ __metadata(\"design:paramtypes\", [ExpandStateService,\n LoadingNotificationService,\n ChangeDetectorRef])\n], LoadingIndicatorDirective);\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$1 = 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$1.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 */\nlet FlatDataBindingDirective = class 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 = function FlatDataBindingDirective_Factory(t) { return new (t || FlatDataBindingDirective)(ɵngcc0.ɵɵdirectiveInject(DataBoundComponent)); };\nFlatDataBindingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlatDataBindingDirective, selectors: [[\"\", \"kendoTreeViewFlatDataBinding\", \"\"]], inputs: { loadOnDemand: \"loadOnDemand\", nodes: \"nodes\", isVisible: \"isVisible\", parentIdField: \"parentIdField\", idField: \"idField\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [Array])\n], FlatDataBindingDirective.prototype, \"nodes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatDataBindingDirective.prototype, \"parentIdField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FlatDataBindingDirective.prototype, \"idField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FlatDataBindingDirective.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Function])\n], FlatDataBindingDirective.prototype, \"isVisible\", null);\nFlatDataBindingDirective = __decorate([ __metadata(\"design:paramtypes\", [DataBoundComponent])\n], FlatDataBindingDirective);\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 */\nlet TreeViewItemDirective = class 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(() => {\n this.updateTabIndex();\n this.focusItem();\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() {\n if (this.isInitialized && this.navigationService.isActive(this.index)) {\n this.element.nativeElement.focus();\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-state-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 = function TreeViewItemDirective_Factory(t) { return new (t || TreeViewItemDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ExpandStateService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(TreeViewLookupService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(IndexBuilderService)); };\nTreeViewItemDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TreeViewItemDirective, selectors: [[\"\", \"kendoTreeViewItem\", \"\"]], inputs: { role: \"role\", loadOnDemand: \"loadOnDemand\", isDisabled: \"isDisabled\", isVisible: \"isVisible\", isChecked: \"isChecked\", isExpanded: \"isExpanded\", isSelected: \"isSelected\", dataItem: \"dataItem\", index: \"index\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", checkable: \"checkable\", selectable: \"selectable\", expandable: \"expandable\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewItemDirective.prototype, \"dataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewItemDirective.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewItemDirective.prototype, \"parentDataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewItemDirective.prototype, \"parentIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewItemDirective.prototype, \"role\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"loadOnDemand\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"checkable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"selectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"expandable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], TreeViewItemDirective.prototype, \"isChecked\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"isDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemDirective.prototype, \"isVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], TreeViewItemDirective.prototype, \"isExpanded\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], TreeViewItemDirective.prototype, \"isSelected\", null);\nTreeViewItemDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ExpandStateService,\n NavigationService,\n SelectionService,\n TreeViewLookupService,\n Renderer2,\n IndexBuilderService])\n], TreeViewItemDirective);\n\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nlet TreeViewItemContentDirective = class 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-state-focused');\n }\n updateSelectionClass(selected) {\n this.render(selected, 'k-state-selected');\n }\n render(addClass, className) {\n const action = addClass ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n};\nTreeViewItemContentDirective.ɵfac = function TreeViewItemContentDirective_Factory(t) { return new (t || TreeViewItemContentDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(SelectionService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nTreeViewItemContentDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TreeViewItemContentDirective, selectors: [[\"\", \"kendoTreeViewItemContent\", \"\"]], inputs: { initialSelection: \"initialSelection\", isSelected: \"isSelected\", dataItem: \"dataItem\", index: \"index\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], TreeViewItemContentDirective.prototype, \"dataItem\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], TreeViewItemContentDirective.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], TreeViewItemContentDirective.prototype, \"initialSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], TreeViewItemContentDirective.prototype, \"isSelected\", void 0);\nTreeViewItemContentDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NavigationService,\n SelectionService,\n Renderer2])\n], TreeViewItemContentDirective);\n\n/**\n * @hidden\n *\n * Represents the CheckBox component of the Kendo UI TreeView for Angular.\n *\n */\nlet CheckBoxComponent = class 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 * 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 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 = function CheckBoxComponent_Factory(t) { return new (t || CheckBoxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nCheckBoxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CheckBoxComponent, selectors: [[\"kendo-checkbox\"]], hostVars: 2, hostBindings: function CheckBoxComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-checkbox-wrapper\", ctx.classWrapper);\n } }, inputs: { id: \"id\", tabindex: \"tabindex\", isChecked: \"isChecked\", node: \"node\", index: \"index\", labelText: \"labelText\" }, outputs: { checkStateChange: \"checkStateChange\" }, decls: 3, vars: 6, consts: [[\"type\", \"checkbox\", 1, \"k-checkbox\", 3, \"id\", \"checked\", \"indeterminate\", \"tabindex\", \"change\"], [\"tabindex\", \"-1\", 1, \"k-checkbox-label\", 3, \"for\"]], template: function CheckBoxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"input\", 0);\n ɵngcc0.ɵɵlistener(\"change\", function CheckBoxComponent_Template_input_change_0_listener($event) { return ctx.handleChange($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(1, \"label\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.id)(\"checked\", ctx.checked)(\"indeterminate\", ctx.indeterminate)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"for\", ctx.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.labelText);\n } }, encapsulation: 2 });\n__decorate([\n HostBinding('class.k-checkbox-wrapper'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], CheckBoxComponent.prototype, \"classWrapper\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CheckBoxComponent.prototype, \"id\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckBoxComponent.prototype, \"isChecked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CheckBoxComponent.prototype, \"node\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CheckBoxComponent.prototype, \"index\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CheckBoxComponent.prototype, \"labelText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CheckBoxComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CheckBoxComponent.prototype, \"checkStateChange\", void 0);\nCheckBoxComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n ChangeDetectorRef])\n], CheckBoxComponent);\n\nconst COMPONENT_DIRECTIVES = [\n CheckBoxComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the CheckBox component.\n */\nlet CheckBoxModule = class CheckBoxModule {\n};\nCheckBoxModule.ɵfac = function CheckBoxModule_Factory(t) { return new (t || CheckBoxModule)(); };\nCheckBoxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CheckBoxModule });\nCheckBoxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\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 */\nlet DragAndDropEditingDirective = class 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 = function DragAndDropEditingDirective_Factory(t) { return new (t || DragAndDropEditingDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent)); };\nDragAndDropEditingDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DragAndDropEditingDirective, selectors: [[\"\", \"kendoTreeViewDragAndDropEditing\", \"\"]], inputs: { editService: \"editService\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], DragAndDropEditingDirective.prototype, \"editService\", null);\nDragAndDropEditingDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent])\n], DragAndDropEditingDirective);\n\nconst LOAD_MORE_DOC_LINK$1 = '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 */\nlet LoadMoreDirective = class 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$1}.`);\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$1}.`);\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$1}.`);\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 = function LoadMoreDirective_Factory(t) { return new (t || LoadMoreDirective)(ɵngcc0.ɵɵdirectiveInject(TreeViewComponent)); };\nLoadMoreDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LoadMoreDirective, selectors: [[\"\", \"kendoTreeViewLoadMore\", \"\"]], inputs: { loadMoreNodes: [\"kendoTreeViewLoadMore\", \"loadMoreNodes\"], pageSize: \"pageSize\", totalRootNodes: \"totalRootNodes\", totalField: \"totalField\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n__decorate([\n Input('kendoTreeViewLoadMore'),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], LoadMoreDirective.prototype, \"loadMoreNodes\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LoadMoreDirective.prototype, \"pageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], LoadMoreDirective.prototype, \"totalRootNodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], LoadMoreDirective.prototype, \"totalField\", void 0);\nLoadMoreDirective = __decorate([ __metadata(\"design:paramtypes\", [TreeViewComponent])\n], LoadMoreDirective);\n\nconst COMPONENT_DIRECTIVES$1 = [\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 */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n CheckBoxModule,\n InputsModule\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 */\nlet TreeViewModule = class TreeViewModule {\n};\nTreeViewModule.ɵfac = function TreeViewModule_Factory(t) { return new (t || TreeViewModule)(); };\nTreeViewModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TreeViewModule });\nTreeViewModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandStateService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IndexBuilderService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadingNotificationService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NodeChildrenService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NodeTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewNodeTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadMoreButtonTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMoreButtonTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DataBoundComponent, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandableComponent, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectionService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewLookupService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewComponent, [{\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 }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ExpandStateService }, { type: NavigationService }, { type: NodeChildrenService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: DataChangeNotificationService }, { type: ɵngcc1.LocalizationService }]; }, { classNames: [{\n type: HostBinding,\n args: [\"class.k-widget\"]\n }, {\n type: HostBinding,\n args: [\"class.k-treeview\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], filterInputPlaceholder: [{\n type: Input\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 }], trackBy: [{\n type: Input\n }], isDisabled: [{\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 }], direction: [{\n type: HostBinding,\n args: [\"attr.dir\"]\n }], animate: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['@.disabled']\n }], nodeTemplateRef: [{\n type: Input,\n args: ['nodeTemplate']\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: true }]\n }], loadMoreButtonTemplateRef: [{\n type: Input,\n args: ['loadMoreButtonTemplate']\n }], loadMoreButtonTemplate: [{\n type: ContentChild,\n args: [LoadMoreButtonTemplateDirective, { static: true }]\n }], nodes: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], assetsContainer: [{\n type: ViewChild,\n args: ['assetsContainer', { read: ViewContainerRef, static: true }]\n }], textField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewGroupComponent, [{\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 selector: '[kendoTreeViewGroup]',\n template: `\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 Load more\n \n \n
    \n \n `\n }]\n }], function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: IndexBuilderService }, { type: TreeViewLookupService }, { type: NavigationService }, { type: NodeChildrenService }, { type: DataChangeNotificationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { kGroupClass: [{\n type: HostBinding,\n args: [\"class.k-group\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], loadOnDemand: [{\n type: Input\n }], textField: [{\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 }], 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 }], trackBy: [{\n type: Input\n }], nodes: [{\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 }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewCheckable]' }]\n }], function () { return [{ type: TreeViewComponent }, { type: ɵngcc0.NgZone }]; }, { checkedKeysChange: [{\n type: Output\n }], isChecked: [{\n type: Input\n }], checkedKeys: [{\n type: Input\n }], checkKey: [{\n type: Input,\n args: [\"checkBy\"]\n }], checkable: [{\n type: Input,\n args: ['kendoTreeViewCheckable']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DisableDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewDisable]' }]\n }], function () { return [{ type: TreeViewComponent }, { type: ɵngcc0.ChangeDetectorRef }]; }, { disabledKeys: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], disableKey: [{\n type: Input,\n args: [\"kendoTreeViewDisable\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewExpandable]' }]\n }], function () { return [{ type: ExpandableComponent }]; }, { expandOnFilter: [{\n type: Input\n }], expandedKeysChange: [{\n type: Output\n }], isExpanded: [{\n type: Input\n }], expandedKeys: [{\n type: Input\n }], expandKey: [{\n type: Input,\n args: [\"expandBy\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewSelectable]' }]\n }], function () { return [{ type: TreeViewComponent }]; }, { selectedKeysChange: [{\n type: Output\n }], isSelected: [{\n type: Input\n }], selectedKeys: [{\n type: Input\n }], getAriaMultiselectable: [{\n type: HostBinding,\n args: ['attr.aria-multiselectable']\n }], selectKey: [{\n type: Input,\n args: ['selectBy']\n }], selection: [{\n type: Input,\n args: ['kendoTreeViewSelectable']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragClueComponent, [{\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 }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragClueService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropHintComponent, [{\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 }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, { 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(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropHintService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragClueTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragClueTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropHintTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDropHintTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragAndDropDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDrop]',\n providers: [\n DragClueService,\n DropHintService\n ]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: TreeViewComponent }, { type: DragClueService }, { type: DropHintService }]; }, { allowCopy: [{\n type: Input\n }], dropZoneTreeViews: [{\n type: Input\n }], startDragAfter: [{\n type: Input\n }], autoScroll: [{\n type: Input\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 }], dragClueTemplate: [{\n type: ContentChild,\n args: [DragClueTemplateDirective, { static: false }]\n }], dropHintTemplate: [{\n type: ContentChild,\n args: [DropHintTemplateDirective, { static: false }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HierarchyBindingDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewHierarchyBinding]' }]\n }], function () { return [{ type: DataBoundComponent }, { type: DragAndDropDirective, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, { loadOnDemand: [{\n type: Input\n }], childrenField: [{\n type: Input\n }], nodes: [{\n type: Input\n }], isVisible: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadingIndicatorDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewLoading]' }]\n }], function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { loading: [{\n type: HostBinding,\n args: [\"class.k-i-loading\"]\n }], index: [{\n type: Input,\n args: [\"kendoTreeViewLoading\"]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlatDataBindingDirective, [{\n type: Directive,\n args: [{ selector: \"[kendoTreeViewFlatDataBinding]\" }]\n }], function () { return [{ type: DataBoundComponent }]; }, { loadOnDemand: [{\n type: Input\n }], nodes: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], parentIdField: [{\n type: Input\n }], idField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewItemDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItem]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ExpandStateService }, { type: NavigationService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: ɵngcc0.Renderer2 }, { type: IndexBuilderService }]; }, { role: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], checkable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], expandable: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewItemContentDirective, [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItemContent]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: NavigationService }, { type: SelectionService }, { type: ɵngcc0.Renderer2 }]; }, { initialSelection: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckBoxComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-checkbox',\n template: `\n \n {{labelText}}\n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { id: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], checkStateChange: [{\n type: Output\n }], classWrapper: [{\n type: HostBinding,\n args: ['class.k-checkbox-wrapper']\n }], isChecked: [{\n type: Input\n }], node: [{\n type: Input\n }], index: [{\n type: Input\n }], labelText: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckBoxModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CheckBoxModule, { declarations: [CheckBoxComponent], exports: [CheckBoxComponent] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragAndDropEditingDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDropEditing]'\n }]\n }], function () { return [{ type: TreeViewComponent }]; }, { editService: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoadMoreDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMore]'\n }]\n }], function () { return [{ type: TreeViewComponent }]; }, { loadMoreNodes: [{\n type: Input,\n args: ['kendoTreeViewLoadMore']\n }], pageSize: [{\n type: Input\n }], totalRootNodes: [{\n type: Input\n }], totalField: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1],\n imports: [\n CommonModule,\n CheckBoxModule,\n InputsModule\n ],\n entryComponents: [\n DragClueComponent,\n DropHintComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: function () { return [TreeViewComponent, TreeViewGroupComponent, TreeViewItemDirective, TreeViewItemContentDirective, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, HierarchyBindingDirective, LoadingIndicatorDirective, FlatDataBindingDirective, DragAndDropDirective, DragClueTemplateDirective, DragClueComponent, DropHintTemplateDirective, DropHintComponent, DragAndDropEditingDirective, LoadMoreDirective, LoadMoreButtonTemplateDirective]; }, imports: function () { return [CommonModule, CheckBoxModule, InputsModule]; }, exports: function () { return [TreeViewComponent, TreeViewGroupComponent, TreeViewItemDirective, TreeViewItemContentDirective, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, HierarchyBindingDirective, LoadingIndicatorDirective, FlatDataBindingDirective, DragAndDropDirective, DragClueTemplateDirective, DragClueComponent, DropHintTemplateDirective, DropHintComponent, DragAndDropEditingDirective, LoadMoreDirective, LoadMoreButtonTemplateDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeViewModule, [{\n type: NgModule,\n args: [{\n exports: [EXPORTS],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TreeViewModule, { imports: [SharedModule], exports: [TreeViewComponent, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, HierarchyBindingDirective, FlatDataBindingDirective, DragAndDropDirective, DragClueTemplateDirective, DropHintTemplateDirective, DragAndDropEditingDirective, LoadMoreDirective, LoadMoreButtonTemplateDirective] }); })();\n\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CheckBoxComponent, CheckBoxModule, DataChangeNotificationService, DragClueComponent, DragClueService, DropHintComponent, DropHintService, DragAndDropAssetService, PreventableEvent, ExpandStateService, FilteringBase, IndexBuilderService, LoadingIndicatorDirective, LoadingNotificationService, NavigationService, NodeChildrenService, SelectionService, SharedModule, TreeViewGroupComponent, TreeViewItemContentDirective, TreeViewItemDirective, TreeViewLookupService, TreeViewComponent, TreeViewModule, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, DataBoundComponent, ExpandableComponent, HierarchyBindingDirective, FlatDataBindingDirective, DragAndDropDirective, DragAndDropEditingDirective, DropHintTemplateDirective, DragClueTemplateDirective, DropAction, DropPosition, TreeItemDropEvent, TreeItemDragStartEvent, TreeItemDragEvent, LoadMoreDirective, LoadMoreButtonTemplateDirective };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 { __decorate, __metadata } from 'tslib';\nimport { EventEmitter, Injectable, Directive, TemplateRef, forwardRef, Input, ContentChild, ViewChild, ElementRef, Output, HostBinding, HostListener, Component, NgZone, Renderer2, ChangeDetectorRef, ViewChildren, QueryList, ViewContainerRef, isDevMode, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { guid, Keys, isDocumentAvailable, KendoInput, isChanged } from '@progress/kendo-angular-common';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { HttpHeaders, HttpRequest, HttpEventType, HttpResponse, HttpClient } from '@angular/common/http';\nimport { CommonModule } from '@angular/common';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\n\n/**\n * @hidden\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common/http';\nimport * as ɵngcc2 from '@progress/kendo-angular-l10n';\nimport * as ɵngcc3 from '@angular/common';\n\nconst _c0 = [\"fileSelect\"];\nconst _c1 = [\"fileSelectButton\"];\nfunction FileSelectComponent_ul_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 8);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled)(\"fileList\", ctx_r2.fileList.files)(\"fileTemplate\", ctx_r2.fileTemplate)(\"fileInfoTemplate\", ctx_r2.fileInfoTemplate);\n} }\nconst _c14 = [\"kendo-upload-file-list\", \"\"];\nfunction FileListComponent_ng_template_0_kendo_upload_file_list_single_item_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-upload-file-list-single-item\", 5);\n} if (rf & 2) {\n const files_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled)(\"file\", files_r1[0])(\"fileInfoTemplate\", ctx_r3.fileInfoTemplate);\n} }\nfunction FileListComponent_ng_template_0_kendo_upload_file_list_multiple_items_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-upload-file-list-multiple-items\", 6);\n} if (rf & 2) {\n const files_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r4.disabled)(\"files\", files_r1)(\"fileInfoTemplate\", ctx_r4.fileInfoTemplate);\n} }\nfunction FileListComponent_ng_template_0_3_ng_template_0_Template(rf, ctx) { }\nconst _c15 = function (a0, a1, a2) { return { templateRef: a0, state: a1, $implicit: a2 }; };\nfunction FileListComponent_ng_template_0_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FileListComponent_ng_template_0_3_ng_template_0_Template, 0, 0, \"ng-template\", 7);\n} if (rf & 2) {\n const files_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction3(1, _c15, ctx_r5.fileTemplate.templateRef, files_r1[0].state, files_r1));\n} }\nfunction FileListComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 1);\n ɵngcc0.ɵɵtemplate(1, FileListComponent_ng_template_0_kendo_upload_file_list_single_item_1_Template, 1, 3, \"kendo-upload-file-list-single-item\", 2);\n ɵngcc0.ɵɵtemplate(2, FileListComponent_ng_template_0_kendo_upload_file_list_multiple_items_2_Template, 1, 3, \"kendo-upload-file-list-multiple-items\", 3);\n ɵngcc0.ɵɵtemplate(3, FileListComponent_ng_template_0_3_Template, 1, 5, null, 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const files_r1 = ctx.$implicit;\n const index_r2 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"files\", files_r1)(\"index\", index_r2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", files_r1.length === 1 && !ctx_r0.fileTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", files_r1.length > 1 && !ctx_r0.fileTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.fileTemplate);\n} }\nfunction FileListItemActionButtonComponent_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\", ctx_r0.progress, \"%\");\n} }\nconst _c16 = function (a0) { return { \"k-state-focused\": a0 }; };\nfunction FileListItemActionButtonComponent_button_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"focus\", function FileListItemActionButtonComponent_button_2_Template_button_focus_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onFocus(\"retry\"); })(\"blur\", function FileListItemActionButtonComponent_button_2_Template_button_blur_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.onBlur(\"retry\"); })(\"click\", function FileListItemActionButtonComponent_button_2_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onRetryClick(); });\n ɵngcc0.ɵɵelement(1, \"span\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(4, _c16, ctx_r1.retryFocused));\n ɵngcc0.ɵɵattribute(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.retryButtonTitle)(\"title\", ctx_r1.retryButtonTitle);\n} }\nconst _c17 = function (a0, a1) { return { \"k-i-play-sm\": a0, \"k-i-pause-sm\": a1 }; };\nfunction FileListItemActionButtonComponent_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"focus\", function FileListItemActionButtonComponent_button_3_Template_button_focus_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onFocus(\"pauseResume\"); })(\"blur\", function FileListItemActionButtonComponent_button_3_Template_button_blur_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onBlur(\"pauseResume\"); })(\"click\", function FileListItemActionButtonComponent_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onPauseResumeClick(); });\n ɵngcc0.ɵɵelement(1, \"span\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(5, _c16, ctx_r2.pauseResumeFocused));\n ɵngcc0.ɵɵattribute(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(7, _c17, ctx_r2.isPaused, !ctx_r2.isPaused));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r2.pauseResumeButtonTitle)(\"title\", ctx_r2.pauseResumeButtonTitle);\n} }\nconst _c18 = function (a0, a1) { return { \"k-i-cancel\": a0, \"k-delete k-i-x\": a1 }; };\nfunction FileListItemActionButtonComponent_button_4_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"focus\", function FileListItemActionButtonComponent_button_4_Template_button_focus_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onFocus(\"action\"); })(\"blur\", function FileListItemActionButtonComponent_button_4_Template_button_blur_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.onBlur(\"action\"); })(\"click\", function FileListItemActionButtonComponent_button_4_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.onRemoveCancelClick(); });\n ɵngcc0.ɵɵelement(1, \"span\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(5, _c16, ctx_r3.actionFocused));\n ɵngcc0.ɵɵattribute(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(7, _c18, ctx_r3.isUploading, !ctx_r3.isUploading));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r3.actionButtonTitle)(\"title\", ctx_r3.actionButtonTitle);\n} }\nconst _c19 = function (a0, a1, a2) { return { \"k-text-error\": a0, \"k-file-validation-message\": a1, \"k-file-size\": a2 }; };\nfunction FileListMultipleItemsComponent_ng_container_5_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵelementStart(1, \"span\", 10);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 11);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const file_r3 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"title\", file_r3.name);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", file_r3.name, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction3(4, _c19, file_r3.validationErrors, file_r3.validationErrors, !file_r3.validationErrors));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.fileStatusText(file_r3));\n} }\nconst _c20 = function (a0, a1) { return { \"k-text-success\": a0, \"k-text-error\": a1 }; };\nfunction FileListMultipleItemsComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, FileListMultipleItemsComponent_ng_container_5_span_1_Template, 5, 8, \"span\", 7);\n ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.files);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(3, _c20, ctx_r0.isUploadSuccessful, ctx_r0.isUploadFailed));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.batchStatusText);\n} }\nfunction FileListMultipleItemsComponent_6_ng_template_0_Template(rf, ctx) { }\nfunction FileListMultipleItemsComponent_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FileListMultipleItemsComponent_6_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction3(1, _c15, ctx_r1.fileInfoTemplate.templateRef, ctx_r1.files[0].state, ctx_r1.files));\n} }\nconst _c21 = function (a0, a1, a2, a3, a4) { return { \"k-file-validation-message\": a0, \"k-file-size\": a1, \"k-text-success\": a2, \"k-text-error\": a3, \"k-file-information\": a4 }; };\nfunction FileListSingleItemComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 7);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 8);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"title\", ctx_r0.file.name);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.file.name);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction5(4, _c21, ctx_r0.file.validationErrors, !ctx_r0.file.validationErrors && ctx_r0.isNotYetUploaded, ctx_r0.isUploadSuccessful, ctx_r0.file.validationErrors || ctx_r0.isUploadFailed, ctx_r0.isUploadSuccessful || ctx_r0.isUploadFailed));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.fileStatusText);\n} }\nfunction FileListSingleItemComponent_6_ng_template_0_Template(rf, ctx) { }\nconst _c22 = function (a0) { return [a0]; };\nfunction FileListSingleItemComponent_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FileListSingleItemComponent_6_ng_template_0_Template, 0, 0, \"ng-template\", 9);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"templateContext\", ɵngcc0.ɵɵpureFunction3(3, _c15, ctx_r1.fileInfoTemplate.templateRef, ctx_r1.file.state, ɵngcc0.ɵɵpureFunction1(1, _c22, ctx_r1.file)));\n} }\nfunction UploadComponent_kendo_upload_status_total_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-upload-status-total\", 10);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"fileList\", ctx_r2.fileList);\n} }\nfunction UploadComponent_ul_11_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ul\", 11);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled)(\"fileList\", ctx_r3.fileList.files)(\"fileTemplate\", ctx_r3.fileTemplate)(\"fileInfoTemplate\", ctx_r3.fileInfoTemplate);\n} }\nfunction UploadComponent_kendo_upload_action_buttons_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"kendo-upload-action-buttons\", 12);\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r4.disabled)(\"actionsLayout\", ctx_r4.actionsLayout);\n} }\nconst _c65 = [\"*\"];\nconst _c66 = [\"clearButton\"];\nconst _c67 = [\"uploadButton\"];\nconst _c68 = function (a0, a1, a2, a3) { return { \"k-i-checkmark\": a0, \"k-i-exception\": a1, \"k-i-upload\": a2, \"k-i-pause-sm\": a3 }; };\nconst packageMetadata = {\n name: '@progress/kendo-angular-upload',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1635939353,\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 * Lists the possible states of a file.\n */\nvar FileState;\n(function (FileState) {\n /**\n * The file upload process has failed.\n */\n FileState[FileState[\"Failed\"] = 0] = \"Failed\";\n /**\n * An initially selected fake file without a set state.\n */\n FileState[FileState[\"Initial\"] = 1] = \"Initial\";\n /**\n * The file is selected.\n */\n FileState[FileState[\"Selected\"] = 2] = \"Selected\";\n /**\n * The file is successfully uploaded.\n */\n FileState[FileState[\"Uploaded\"] = 3] = \"Uploaded\";\n /**\n * The file is in the process of uploading.\n */\n FileState[FileState[\"Uploading\"] = 4] = \"Uploading\";\n /**\n * The file upload process has been paused.\n */\n FileState[FileState[\"Paused\"] = 5] = \"Paused\";\n})(FileState || (FileState = {}));\n\n/**\n * @hidden\n */\nclass FileMap {\n constructor() {\n this._files = {};\n }\n add(file) {\n let uid = file.uid;\n if (this.has(uid)) {\n if (file.validationErrors && file.validationErrors.length > 0) {\n this._files[uid].unshift(file);\n }\n else {\n this._files[uid].push(file);\n }\n }\n else {\n this._files[uid] = [file];\n }\n }\n remove(uid) {\n if (this.has(uid)) {\n this._files[uid] = null;\n delete this._files[uid];\n }\n }\n clear() {\n let allFiles = this._files;\n for (let uid in allFiles) {\n if (allFiles.hasOwnProperty(uid)) {\n for (let file of allFiles[uid]) {\n if (file.httpSubscription) {\n file.httpSubscription.unsubscribe();\n }\n }\n allFiles[uid] = null;\n delete allFiles[uid];\n }\n }\n }\n has(uid) {\n return uid in this._files;\n }\n get(uid) {\n return this._files[uid];\n }\n setFilesState(files, state$$1) {\n for (let file of files) {\n this.setFilesStateByUid(file.uid, state$$1);\n }\n }\n setFilesStateByUid(uid, state$$1) {\n this.get(uid).forEach((f) => {\n f.state = state$$1;\n });\n }\n get count() {\n return Object.getOwnPropertyNames(this._files).length;\n }\n get files() {\n let initial = this._files;\n let transformed = [];\n for (let uid in initial) {\n if (initial.hasOwnProperty(uid)) {\n transformed.push(initial[uid]);\n }\n }\n return transformed;\n }\n get filesFlat() {\n let initial = this._files;\n let transformed = [];\n for (let uid in initial) {\n if (initial.hasOwnProperty(uid)) {\n let current = initial[uid];\n current.forEach((file) => {\n transformed.push(file);\n });\n }\n }\n return transformed;\n }\n get filesToUpload() {\n let files = this._files;\n let notUploaded = [];\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n let currentFilesValid = true;\n for (let file of currentFiles) {\n if (file.state !== FileState.Selected || (file.validationErrors && file.validationErrors.length > 0)) {\n currentFilesValid = false;\n }\n }\n if (currentFilesValid) {\n notUploaded.push(currentFiles);\n }\n }\n }\n return notUploaded;\n }\n get firstFileToUpload() {\n let files = this._files;\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n let currentFilesValid = true;\n for (let file of currentFiles) {\n if (file.state !== FileState.Selected || (file.validationErrors && file.validationErrors.length > 0)) {\n currentFilesValid = false;\n }\n }\n if (currentFilesValid) {\n return currentFiles;\n }\n }\n }\n return null;\n }\n getFilesWithState(state$$1) {\n return this.filesFlat.filter(file => file.state === state$$1);\n }\n hasFileWithState(fileStates) {\n let files = this._files;\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n for (let file of currentFiles) {\n if (fileStates.indexOf(file.state) >= 0) {\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n\n/**\n * Arguments for the `cancel` event. The `cancel` event fires when\n * the user cancels the process of uploading a file or a batch of files.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n *

    Click the icon during upload to trigger the event

    \n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * cancelEventHandler(e: CancelEvent) {\n * console.log('Canceling file upload', e.files);\n * }\n * }\n * ```\n */\nclass CancelEvent {\n /**\n * Constructs the event arguments for the `cancel` event.\n * @param files - The list of the files that were going to be uploaded.\n */\n constructor(files) {\n this.files = files;\n }\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 * Arguments for the `clear` event. The `clear` event fires when\n * the **Clear** button is clicked. At this point, the selected files are about to be cleared.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * clearEventHandler(e: ClearEvent) {\n * console.log('Clearing the file upload');\n * }\n * }\n * ```\n */\nclass ClearEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `clear` event.\n */\n constructor() { super(); }\n}\n\n/**\n * Arguments for the `error` event. The `error` event fires when\n * an `upload` or `remove` operation fails.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * errorEventHandler(e: ErrorEvent) {\n * console.log('An error occurred');\n * }\n * }\n * ```\n */\nclass ErrorEvent {\n /**\n * Constructs the event arguments for the `error` event.\n *\n * @param files - The list of the files that failed to be uploaded or removed.\n * @param operation - The operation type (`upload` or `remove`).\n * @param response - The response object returned by the server.\n */\n constructor(files, operation, response) {\n this.files = files;\n this.operation = operation;\n this.response = response;\n }\n}\n\n/**\n * Arguments for the `pause` event. The `pause` event fires when the user\n * pauses a file that is currently uploading.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * pauseEventHandler(ev: PauseEvent) {\n * console.log('File paused');\n * }\n * }\n * ```\n *\n */\nclass PauseEvent {\n /**\n * Constructs the event arguments for the `pause` event.\n * @param file - The file that is going to be paused.\n */\n constructor(file) {\n this.file = file;\n }\n}\n\n/**\n * Arguments for the `remove` event. The `remove` event fires when an uploaded\n * or selected file is about to be removed. If you cancel the event, the removal is prevented.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * removeEventHandler(e: RemoveEvent) {\n * console.log('Removing a file');\n * }\n * }\n * ```\n */\nclass RemoveEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `remove` event.\n * @param files - The list of the files that will be removed.\n * @param headers - The headers of the request.\n */\n constructor(files, headers) {\n super();\n this.files = files;\n this.headers = headers;\n }\n}\n\n/**\n * Arguments for the `resume` event. The `resume` event fires when the user\n * resumes the upload of a file that has been previously paused.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * resumeEventHandler(ev: ResumeEvent) {\n * console.log('File resumed');\n * }\n * }\n * ```\n *\n */\nclass ResumeEvent {\n /**\n * Constructs the event arguments for the `resume` event.\n * @param file - The file that is going to be resumed.\n */\n constructor(file) {\n this.file = file;\n }\n}\n\n/**\n * Arguments for the `select` event. The `select` event fires when the user\n * selects a file or multiple files for upload. If you cancel the event, the selection is prevented.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * selectEventHandler(e: SelectEvent) {\n * console.log('File selected');\n * }\n * }\n * ```\n */\nclass SelectEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `select` event.\n * @param files - The list of the selected files.\n */\n constructor(files) {\n super();\n this.files = files;\n }\n}\n\n/**\n * Arguments for the `success` event. The `success` event fires when\n * the selected files are successfully uploaded or removed.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * successEventHandler(e: SuccessEvent) {\n * console.log('The ' + e.operation + ' was successful!');\n * }\n * }\n * ```\n */\nclass SuccessEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `success` event.\n * @param files - The list of the files that were uploaded or removed.\n * @param operation - The operation type (`upload` or `remove`).\n * @param response - The response object returned by the server.\n */\n constructor(files, operation, response) {\n super();\n this.files = files;\n this.operation = operation;\n this.response = response;\n }\n}\n\n/**\n * Arguments for the `upload` event. The `upload` event fires when one or more files are about\n * to be uploaded. If you cancel the event, the upload is prevented. You can add headers to the request.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * uploadEventHandler(e: UploadEvent) {\n * e.headers = e.headers.append('X-Foo', 'Bar');\n * }\n * }\n * ```\n */\nclass UploadEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `upload` event.\n * @param files - The list of the files that will be uploaded.\n * @param headers - The headers of the request.\n */\n constructor(files, headers) {\n super();\n this.files = files;\n this.headers = headers;\n }\n}\n\n/**\n * Arguments for the `uploadprogress` event. The `uploadprogress` event\n * fires when the files are in the process of uploading.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * uploadProgressEventHandler(e: UploadProgressEvent) {\n * console.log(e.files[0].name + ' is ' + e.percentComplete + ' uploaded');\n * }\n * }\n * ```\n */\nclass UploadProgressEvent {\n /**\n * Constructs the event arguments for the `uploadprogress` event.\n * @param files - The list of files that are being uploaded.\n * @param percentComplete - The portion that has been uploaded.\n */\n constructor(files, percentComplete) {\n this.files = files;\n this.percentComplete = percentComplete;\n }\n}\n\nconst ɵ0 = [\n \".xlr\", \".xls\", \".xlsx\"\n];\n/**\n * @hidden\n */\nconst fileGroupMap = {\n audio: [\n \".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"\n ],\n video: [\n \".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\", \".rm\", \".swf\", \".vob\", \".wmv\"\n ],\n image: [\n \".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\", \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"\n ],\n txt: [\n \".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"\n ],\n presentation: [\n \".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"\n ],\n data: ɵ0,\n programming: [\n \".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\", \".sys\", \".cfg\",\n \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\", \".php\", \".rss\", \".xhtml\"\n ],\n pdf: [\n \".pdf\"\n ],\n config: [\n \".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"\n ],\n zip: [\n \".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"\n ],\n discImage: [\n \".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"\n ]\n};\n\n/* tslint:disable: no-bitwise */\n/**\n * @hidden\n */\nconst getTotalFilesSizeMessage = (files) => {\n let totalSize = 0;\n let i;\n if (typeof files[0].size === \"number\") {\n for (i = 0; i < files.length; i++) {\n if (files[i].size) {\n totalSize += files[i].size;\n }\n }\n }\n else {\n return \"\";\n }\n totalSize /= 1024;\n if (totalSize < 1024) {\n return totalSize.toFixed(2) + \" KB\";\n }\n else {\n return (totalSize / 1024).toFixed(2) + \" MB\";\n }\n};\nconst stripPath = (name) => {\n let slashIndex = name.lastIndexOf(\"\\\\\");\n return (slashIndex !== -1) ? name.substr(slashIndex + 1) : name;\n};\nconst getFileExtension = (fileName) => {\n const rFileExtension = /\\.([^\\.]+)$/;\n const matches = fileName.match(rFileExtension);\n return matches ? matches[0] : \"\";\n};\n/**\n * @hidden\n */\nconst validateInitialFileInfo = (file) => {\n if (file instanceof Object && file.hasOwnProperty(\"name\")) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst validateInitialFileSelectFile = (file) => {\n if (file instanceof File || validateInitialFileInfo(file)) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst getInitialFileInfo = (fakeFile) => {\n fakeFile.extension = fakeFile.extension || getFileExtension(fakeFile.name);\n fakeFile.name = fakeFile.name;\n fakeFile.size = fakeFile.size || 0;\n if (!fakeFile.hasOwnProperty(\"state\")) {\n fakeFile.state = FileState.Initial;\n }\n if (!fakeFile.hasOwnProperty(\"uid\")) {\n fakeFile.uid = guid();\n }\n return fakeFile;\n};\n/**\n * @hidden\n */\nconst convertFileToFileInfo = (file) => {\n let fileInfo = getFileInfo(file);\n fileInfo.uid = guid();\n // Used to differentiate initial FileInfo objects and actual Files\n fileInfo.state = FileState.Selected;\n return fileInfo;\n};\nconst getFileInfo = (rawFile) => {\n const fileName = rawFile.name;\n const fileSize = rawFile.size;\n return {\n extension: getFileExtension(fileName),\n name: fileName,\n rawFile: rawFile,\n size: fileSize,\n state: FileState.Selected\n };\n};\n/**\n * @hidden\n */\nconst getAllFileInfo = (rawFiles) => {\n let allFileInfo = new Array();\n let i;\n for (i = 0; i < rawFiles.length; i++) {\n allFileInfo.push(getFileInfo(rawFiles[i]));\n }\n return allFileInfo;\n};\n/**\n * @hidden\n */\nconst fileHasValidationErrors = (file) => {\n if (file.validationErrors && file.validationErrors.length > 0) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst filesHaveValidationErrors = (files) => {\n for (let file of files) {\n if (fileHasValidationErrors(file)) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n */\nconst inputFiles = (input) => {\n if (input.files) {\n return getAllFileInfo(input.files);\n }\n else {\n //Required for testing\n let fileNames = input.value.split(\"|\").map((file, index) => {\n let fileName = file.trim();\n return {\n extension: getFileExtension(fileName),\n name: stripPath(fileName),\n rawFile: null,\n size: (index + 1) * 1000,\n state: FileState.Selected\n };\n });\n return fileNames;\n }\n};\n/**\n * @hidden\n */\nconst assignGuidToFiles = (files, isUnique) => {\n const uid = guid();\n return files.map((file) => {\n file.uid = isUnique ? guid() : uid;\n return file;\n });\n};\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nconst IGNORE_TARGET_CLASSES = 'k-icon k-select k-input k-multiselect-wrap';\n/**\n * @hidden\n */\nconst UPLOAD_CLASSES = 'k-upload-button k-clear-selected k-upload-selected k-upload-action';\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n return !!(rect.width && rect.height) && window.getComputedStyle(element).visibility !== 'hidden';\n};\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 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 getFileGroupCssClass = (fileExtension) => {\n const initial = 'k-i-file';\n for (let group in fileGroupMap) {\n if (fileGroupMap[group].indexOf(fileExtension) >= 0) {\n return `${initial}-${group}`;\n }\n }\n return initial;\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n\n/**\n * @hidden\n */\nclass ChunkMap {\n constructor() {\n this._files = {};\n }\n add(uid, totalChunks) {\n const initialChunkInfo = {\n index: 0,\n position: 0,\n retries: 0,\n totalChunks: totalChunks\n };\n this._files[uid] = initialChunkInfo;\n return initialChunkInfo;\n }\n remove(uid) {\n if (this.has(uid)) {\n this._files[uid] = null;\n delete this._files[uid];\n }\n }\n has(uid) {\n return uid in this._files;\n }\n get(uid) {\n return this._files[uid];\n }\n}\n\n/**\n * @hidden\n */\nlet UploadService = class UploadService {\n constructor(http) {\n this.http = http;\n this.cancelEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.completeEvent = new EventEmitter();\n this.errorEvent = new EventEmitter();\n this.pauseEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.resumeEvent = new EventEmitter();\n this.selectEvent = new EventEmitter();\n this.successEvent = new EventEmitter();\n this.uploadEvent = new EventEmitter();\n this.uploadProgressEvent = new EventEmitter();\n /**\n * Required for the `ControlValueAccessor` integration\n */\n this.changeEvent = new EventEmitter();\n /**\n * Default async settings\n */\n this.async = {\n autoUpload: true,\n batch: false,\n chunk: false,\n concurrent: true,\n removeField: \"fileNames\",\n removeHeaders: new HttpHeaders(),\n removeMethod: \"POST\",\n removeUrl: \"\",\n responseType: \"json\",\n saveField: \"files\",\n saveHeaders: new HttpHeaders(),\n saveMethod: \"POST\",\n saveUrl: \"\",\n withCredentials: true\n };\n /**\n * Default chunk settings\n */\n this.chunk = {\n autoRetryAfter: 100,\n size: 1024 * 1024,\n maxAutoRetries: 1,\n resumable: true\n };\n this.component = 'Upload';\n this.chunkMap = new ChunkMap();\n this.fileList = new FileMap();\n }\n get files() {\n return this.fileList;\n }\n setChunkSettings(settings) {\n if (settings !== false) {\n this.async.chunk = true;\n if (typeof settings === \"object\") {\n this.chunk = Object.assign({}, this.chunk, settings);\n }\n }\n }\n onChange() {\n let files = this.fileList.filesFlat.filter((file) => {\n return file.state === FileState.Initial ||\n file.state === FileState.Uploaded;\n });\n this.changeEvent.emit(files.length > 0 ? files : null);\n }\n addFiles(files) {\n let selectEventArgs = new SelectEvent(files);\n this.selectEvent.emit(selectEventArgs);\n if (!selectEventArgs.isDefaultPrevented()) {\n for (let file of files) {\n this.fileList.add(file);\n }\n if (this.async.autoUpload) {\n this.uploadFiles();\n }\n }\n if (this.component === 'FileSelect') {\n const flatFiles = this.fileList.filesFlat;\n this.changeEvent.emit(flatFiles.length > 0 ? flatFiles : null);\n }\n }\n addInitialFiles(initialFiles) {\n this.fileList.clear();\n initialFiles.forEach((file) => {\n let fakeFile = getInitialFileInfo(file);\n this.fileList.add(fakeFile);\n });\n }\n addInitialFileSelectFiles(initialFiles) {\n this.fileList.clear();\n initialFiles.forEach((file) => {\n if (file instanceof File) {\n this.fileList.add(convertFileToFileInfo(file));\n }\n else {\n this.fileList.add(getInitialFileInfo(file));\n }\n });\n }\n resumeFile(uid) {\n const fileToResume = this.fileList.get(uid);\n this.resumeEvent.emit(new ResumeEvent(fileToResume[0]));\n this.fileList.setFilesStateByUid(uid, FileState.Uploading);\n this._uploadFiles([fileToResume]);\n }\n pauseFile(uid) {\n let pausedFile = this.fileList.get(uid)[0];\n this.pauseEvent.emit(new PauseEvent(pausedFile));\n this.fileList.setFilesStateByUid(uid, FileState.Paused);\n }\n removeFiles(uid) {\n let removedFiles = this.fileList.get(uid);\n // Clone the Headers so that the default ones are not overridden\n let removeEventArgs = new RemoveEvent(removedFiles, this.cloneRequestHeaders(this.async.removeHeaders));\n this.removeEvent.emit(removeEventArgs);\n if (!removeEventArgs.isDefaultPrevented()) {\n if (this.component === 'Upload' &&\n (removedFiles[0].state === FileState.Uploaded ||\n removedFiles[0].state === FileState.Initial)) {\n this.performRemove(removedFiles, removeEventArgs);\n }\n else {\n this.fileList.remove(uid);\n if (this.component === 'FileSelect') {\n const flatFiles = this.fileList.filesFlat;\n this.changeEvent.emit(flatFiles.length > 0 ? flatFiles : null);\n }\n }\n }\n }\n cancelFiles(uid) {\n let canceledFiles = this.fileList.get(uid);\n let cancelEventArgs = new CancelEvent(canceledFiles);\n this.cancelEvent.emit(cancelEventArgs);\n for (let file of canceledFiles) {\n if (file.httpSubscription) {\n file.httpSubscription.unsubscribe();\n }\n }\n this.fileList.remove(uid);\n this.checkAllComplete();\n }\n clearFiles() {\n let clearEventArgs = new ClearEvent();\n this.clearEvent.emit(clearEventArgs);\n if (!clearEventArgs.isDefaultPrevented()) {\n let triggerChange = this.fileList.hasFileWithState([\n FileState.Initial,\n FileState.Uploaded\n ]);\n this.fileList.clear();\n if (triggerChange) {\n this.onChange();\n }\n }\n }\n uploadFiles() {\n let filesToUpload = [];\n if (this.async.concurrent) {\n filesToUpload = this.fileList.filesToUpload;\n }\n if (!this.async.concurrent && !this.fileList.hasFileWithState([FileState.Uploading])) {\n filesToUpload = this.fileList.firstFileToUpload ? [this.fileList.firstFileToUpload] : [];\n }\n if (filesToUpload && filesToUpload.length > 0) {\n this._uploadFiles(filesToUpload);\n }\n }\n retryFiles(uid) {\n let filesToRetry = [this.fileList.get(uid)];\n if (filesToRetry) {\n this._uploadFiles(filesToRetry);\n }\n }\n _uploadFiles(allFiles) {\n for (let filesToUpload of allFiles) {\n if (filesToUpload[0].state === FileState.Paused) {\n return;\n }\n // Clone the Headers so that the default ones are not overridden\n let uploadEventArgs = new UploadEvent(filesToUpload, this.cloneRequestHeaders(this.async.saveHeaders));\n this.uploadEvent.emit(uploadEventArgs);\n if (!uploadEventArgs.isDefaultPrevented()) {\n this.fileList.setFilesState(filesToUpload, FileState.Uploading);\n let httpSubcription = this.performUpload(filesToUpload, uploadEventArgs);\n filesToUpload.forEach((file) => {\n file.httpSubscription = httpSubcription;\n });\n }\n else {\n this.fileList.remove(filesToUpload[0].uid);\n }\n }\n }\n performRemove(files, removeEventArgs) {\n const async = this.async;\n let fileNames = files.map((file) => {\n return file.name;\n });\n let formData = this.populateRemoveFormData(fileNames, removeEventArgs.data);\n let options = this.populateRequestOptions(removeEventArgs.headers);\n let removeRequest = new HttpRequest(async.removeMethod, async.removeUrl, formData, options);\n this.http.request(removeRequest)\n .subscribe(success => {\n this.onSuccess(success, files, \"remove\");\n }, error => {\n this.onError(error, files, \"remove\");\n });\n }\n performUpload(files, uploadEventArgs) {\n const async = this.async;\n let formData = this.populateUploadFormData(files, uploadEventArgs.data);\n let options = this.populateRequestOptions(uploadEventArgs.headers);\n let uploadRequest = new HttpRequest(async.saveMethod, async.saveUrl, formData, options);\n let httpSubscription = this.http.request(uploadRequest)\n .subscribe(event => {\n if (event.type === HttpEventType.UploadProgress && !this.async.chunk) {\n this.onProgress(event, files);\n }\n else if (event instanceof HttpResponse) {\n this.onSuccess(event, files, \"upload\");\n this.checkAllComplete();\n }\n }, error => {\n this.onError(error, files, \"upload\");\n this.checkAllComplete();\n });\n return httpSubscription;\n }\n onSuccess(successResponse, files, operation) {\n if (operation === \"upload\" && this.async.chunk) {\n this.onChunkProgress(files);\n if (this.isChunkUploadComplete(files[0].uid)) {\n this.removeChunkInfo(files[0].uid);\n }\n else {\n this.updateChunkInfo(files[0].uid);\n this._uploadFiles([files]);\n return;\n }\n }\n const successArgs = new SuccessEvent(files, operation, successResponse);\n this.successEvent.emit(successArgs);\n if (operation === \"upload\") {\n this.fileList.setFilesState(files, successArgs.isDefaultPrevented() ? FileState.Failed : FileState.Uploaded);\n }\n else {\n if (!successArgs.isDefaultPrevented()) {\n this.fileList.remove(files[0].uid);\n }\n }\n if (!successArgs.isDefaultPrevented()) {\n this.onChange();\n }\n }\n onError(errorResponse, files, operation) {\n if (operation === \"upload\" && this.async.chunk) {\n const maxRetries = this.chunk.maxAutoRetries;\n const chunkInfo = this.chunkMap.get(files[0].uid);\n if (chunkInfo.retries < maxRetries) {\n chunkInfo.retries += 1;\n setTimeout(() => {\n this.retryFiles(files[0].uid);\n }, this.chunk.autoRetryAfter);\n return;\n }\n }\n const errorArgs = new ErrorEvent(files, operation, errorResponse);\n this.errorEvent.emit(errorArgs);\n if (operation === \"upload\") {\n this.fileList.setFilesState(files, FileState.Failed);\n }\n }\n onProgress(event, files) {\n const percentComplete = Math.round(100 * event.loaded / event.total);\n const progressArgs = new UploadProgressEvent(files, percentComplete < 100 ? percentComplete : 100);\n this.uploadProgressEvent.emit(progressArgs);\n }\n onChunkProgress(files) {\n const chunkInfo = this.chunkMap.get(files[0].uid);\n let percentComplete = 0;\n if (chunkInfo) {\n if (chunkInfo.index === chunkInfo.totalChunks - 1) {\n percentComplete = 100;\n }\n else {\n percentComplete = Math.round(((chunkInfo.index + 1) / chunkInfo.totalChunks) * 100);\n }\n }\n const progressArgs = new UploadProgressEvent(files, percentComplete < 100 ? percentComplete : 100);\n this.uploadProgressEvent.emit(progressArgs);\n }\n checkAllComplete() {\n if (!this.fileList.hasFileWithState([\n FileState.Uploading,\n FileState.Paused\n ]) && this.areAllSelectedFilesHandled()) {\n this.completeEvent.emit();\n }\n else if (this.shouldUploadNextFile()) {\n this.uploadFiles();\n }\n }\n shouldUploadNextFile() {\n return !this.async.concurrent &&\n this.fileList.hasFileWithState([FileState.Selected]) &&\n !this.fileList.hasFileWithState([FileState.Uploading]);\n }\n areAllSelectedFilesHandled() {\n const validSelectedFiles = this.fileList.getFilesWithState(FileState.Selected).filter(file => !file.validationErrors);\n return validSelectedFiles.length === 0;\n }\n cloneRequestHeaders(headers) {\n let cloned = {};\n if (headers) {\n headers.keys().forEach((key) => {\n cloned[key] = headers.get(key);\n });\n }\n return new HttpHeaders(cloned);\n }\n populateRequestOptions(headers) {\n return {\n headers: headers,\n reportProgress: true,\n responseType: this.async.responseType,\n withCredentials: this.async.withCredentials\n };\n }\n populateUploadFormData(files, clientData) {\n const saveField = this.async.saveField;\n let data = new FormData();\n this.populateClientFormData(data, clientData);\n if (this.async.chunk) {\n data.append(saveField, this.getNextChunk(files[0]));\n data.append(\"metadata\", this.getChunkMetadata(files[0]));\n }\n else {\n for (let file of files) {\n data.append(saveField, file.rawFile);\n }\n }\n return data;\n }\n populateRemoveFormData(fileNames, clientData) {\n let data = new FormData();\n this.populateClientFormData(data, clientData);\n for (let fileName of fileNames) {\n data.append(this.async.removeField, fileName);\n }\n return data;\n }\n populateClientFormData(data, clientData) {\n for (var key in clientData) {\n if (clientData.hasOwnProperty(key)) {\n data.append(key, clientData[key]);\n }\n }\n }\n /* Chunking Helper Methods Section */\n getNextChunk(file) {\n const info = this.getChunkInfo(file);\n const newPosition = info.position + this.chunk.size;\n return file.rawFile.slice(info.position, newPosition);\n }\n getChunkInfo(file) {\n let chunkInfo = this.chunkMap.get(file.uid);\n if (!chunkInfo) {\n const totalChunks = Math.ceil(file.size / this.chunk.size);\n chunkInfo = this.chunkMap.add(file.uid, totalChunks);\n }\n return chunkInfo;\n }\n updateChunkInfo(uid) {\n const chunkInfo = this.chunkMap.get(uid);\n if (chunkInfo.index < chunkInfo.totalChunks - 1) {\n chunkInfo.index += 1;\n chunkInfo.position += this.chunk.size;\n chunkInfo.retries = 0;\n }\n }\n removeChunkInfo(uid) {\n this.chunkMap.remove(uid);\n }\n getChunkMetadata(file) {\n const chunkInfo = this.chunkMap.get(file.uid);\n const chunkMetadata = {\n chunkIndex: chunkInfo.index,\n contentType: file.rawFile.type,\n fileName: file.name,\n fileSize: file.size,\n fileUid: file.uid,\n totalChunks: chunkInfo.totalChunks\n };\n return JSON.stringify(chunkMetadata);\n }\n isChunkUploadComplete(uid) {\n const chunkInfo = this.chunkMap.get(uid);\n if (chunkInfo) {\n return chunkInfo.index + 1 === chunkInfo.totalChunks;\n }\n return false;\n }\n};\nUploadService.ɵfac = function UploadService_Factory(t) { return new (t || UploadService)(ɵngcc0.ɵɵinject(ɵngcc1.HttpClient)); };\nUploadService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: UploadService, factory: function (t) { return UploadService.ɵfac(t); } });\nUploadService = __decorate([ __metadata(\"design:paramtypes\", [HttpClient])\n], UploadService);\n\n/**\n * @hidden\n */\nlet NavigationService = class NavigationService {\n constructor(uploadService) {\n this.uploadService = uploadService;\n this.onActionButtonAction = new EventEmitter();\n this.onActionButtonFocus = new EventEmitter();\n this.onFileAction = new EventEmitter();\n this.onFileFocus = new EventEmitter();\n this.onTab = new EventEmitter();\n this.onWrapperFocus = new EventEmitter();\n this.onSelectButtonFocus = new EventEmitter();\n this.actionButtonsVisible = false;\n this.focused = false;\n this._focusedIndex = -1;\n }\n action(event) {\n const key = event.keyCode;\n return this.keyBindings[key];\n }\n process(event) {\n const handler = this.action(event);\n if (handler) {\n handler(event.shiftKey);\n }\n }\n computeKeys(direction) {\n this.keyBindings = {\n [Keys.Enter]: () => this.handleEnter(),\n [Keys.Escape]: () => this.handleEscape(),\n [Keys.Delete]: () => this.handleDelete(),\n [Keys.Tab]: (shifted) => this.handleTab(shifted),\n [Keys.ArrowUp]: () => this.handleUp(),\n [Keys.ArrowDown]: () => this.handleDown(),\n [this.invertKeys(direction, Keys.ArrowLeft, Keys.ArrowRight)]: () => this.handleLeft(),\n [this.invertKeys(direction, Keys.ArrowRight, Keys.ArrowLeft)]: () => this.handleRight()\n };\n }\n invertKeys(direction, original, inverted) {\n return direction === 'rtl' ? inverted : original;\n }\n focusSelectButton() {\n this.focused = true;\n this._focusedIndex = -1;\n this.onSelectButtonFocus.emit();\n }\n handleEnter() {\n if (this.lastIndex >= 0) {\n if (this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Enter);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex <= this.lastIndex) {\n this.onActionButtonAction.emit(this.focusedIndex < this.lastIndex ? \"clear\" : \"upload\");\n }\n }\n }\n handleDelete() {\n if (this.focusedIndex >= 0 && this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Delete);\n }\n }\n handleEscape() {\n if (this.focusedIndex >= 0 && this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Escape);\n }\n }\n handleLeft() {\n if (this.actionButtonsVisible && this.focusedIndex === this.lastIndex) {\n this.focusedIndex -= 1;\n this.onActionButtonFocus.emit(\"clear\");\n }\n }\n handleRight() {\n if (this.actionButtonsVisible && this.focusedIndex === this.lastIndex - 1) {\n this.focusedIndex += 1;\n this.onActionButtonFocus.emit(\"upload\");\n }\n }\n handleTab(shifted) {\n if (this.focusedIndex >= 0 && shifted) {\n this.focusedIndex = -1;\n return;\n }\n this.onTab.emit();\n }\n handleDown() {\n if (this.lastIndex >= 0 && this.focusedIndex < this.lastIndex) {\n if (this.focusedIndex < this.lastFileIndex) {\n this.focusedIndex += 1;\n this.onFileFocus.emit(this.focusedIndex);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex === this.lastFileIndex) {\n this.focusedIndex += 1;\n this.onActionButtonFocus.emit(\"clear\");\n }\n }\n }\n handleUp() {\n if (this.lastIndex >= 0 && this.focusedIndex > -1) {\n this.focusedIndex -= 1;\n if (this.focusedIndex === -1) {\n this.onSelectButtonFocus.emit();\n return;\n }\n if (this.focusedIndex <= this.lastFileIndex) {\n this.onFileFocus.emit(this.focusedIndex);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex <= this.lastIndex) {\n this.focusedIndex = this.lastFileIndex;\n this.onFileFocus.emit(this.focusedIndex);\n }\n }\n }\n get focusedIndex() {\n return this._focusedIndex;\n }\n set focusedIndex(index) {\n if (!this.focused) {\n this.onWrapperFocus.emit();\n }\n this._focusedIndex = index;\n this.focused = true;\n if (this._focusedIndex >= 0 && this._focusedIndex <= this.lastFileIndex) {\n this.onFileFocus.emit(index);\n }\n }\n get lastFileIndex() {\n return this.actionButtonsVisible ? this.lastIndex - 2 : this.lastIndex;\n }\n get lastIndex() {\n const fileCount = this.uploadService.files.count;\n return this.actionButtonsVisible ? fileCount + 1 : fileCount - 1;\n }\n};\nNavigationService.ɵfac = function NavigationService_Factory(t) { return new (t || NavigationService)(ɵngcc0.ɵɵinject(UploadService)); };\nNavigationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NavigationService, factory: function (t) { return NavigationService.ɵfac(t); } });\nNavigationService = __decorate([ __metadata(\"design:paramtypes\", [UploadService])\n], NavigationService);\n\n/**\n * Used to customize the rendering of the files in the list ([see example]({% slug templates_upload %}#toc-file-template)).\n */\nlet FileTemplateDirective = class FileTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFileTemplateDirective.ɵfac = function FileTemplateDirective_Factory(t) { return new (t || FileTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nFileTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FileTemplateDirective, selectors: [[\"\", \"kendoUploadFileTemplate\", \"\"], [\"\", \"kendoFileSelectFileTemplate\", \"\"]] });\nFileTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], FileTemplateDirective);\n\nlet components = {};\n/**\n * @hidden\n */\nlet DropZoneService = class DropZoneService {\n addComponent(component, zoneId) {\n if (this.has(zoneId)) {\n components[zoneId].push(component);\n }\n else {\n components[zoneId] = [component];\n }\n }\n getComponents(zoneId) {\n return components[zoneId];\n }\n has(id) {\n return id in components;\n }\n};\nDropZoneService.ɵfac = function DropZoneService_Factory(t) { return new (t || DropZoneService)(); };\nDropZoneService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DropZoneService, factory: function (t) { return DropZoneService.ɵfac(t); } });\n\n/**\n * Used to customize the rendering of the file info section in the list. All other elements of the default template, such as file icon, action buttons, upload progress etc. will be preserved in place. ([see example]({% slug templates_upload %}#toc-file-info-template)).\n */\nlet FileInfoTemplateDirective = class FileInfoTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nFileInfoTemplateDirective.ɵfac = function FileInfoTemplateDirective_Factory(t) { return new (t || FileInfoTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nFileInfoTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FileInfoTemplateDirective, selectors: [[\"\", \"kendoUploadFileInfoTemplate\", \"\"], [\"\", \"kendoFileSelectFileInfoTemplate\", \"\"]] });\nFileInfoTemplateDirective = __decorate([ __metadata(\"design:paramtypes\", [TemplateRef])\n], FileInfoTemplateDirective);\n\nvar FileSelectComponent_1;\n/**\n * @hidden\n */\nconst FILESELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileSelectComponent) // tslint:disable-line:no-forward-ref\n};\nlet FileSelectComponent = FileSelectComponent_1 = class FileSelectComponent {\n constructor(uploadService, localization, navigation, dropZoneService, ngZone, renderer, cdr, wrapper) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.dropZoneService = dropZoneService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * Disables the FileSelect.\n * The default value is `false`.\n */\n this.disabled = false;\n /**\n * Enables the selection of multiple files\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-sinlge-or-multiple-files)).\n * If set to `false`, only one file can be selected at a time.\n */\n this.multiple = true;\n /**\n * Toggles the visibility of the file list.\n */\n this.showFileList = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the FileSelect.\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Fires when the user navigates outside the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the component is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when files are selected. If prevented, the selected files will not be added to the list.\n */\n this.select = new EventEmitter();\n /**\n * Fires when a file is about to be removed. If prevented, the file will remain in the list.\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the value of the component has changed as a result of a successful `select` or `remove` operation.\n */\n this.valueChange = new EventEmitter();\n this.hostDefaultClasses = true;\n /**\n * @hidden\n */\n this._restrictions = {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n };\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n validatePackage(packageMetadata);\n this.wrapper = wrapper.nativeElement;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n this.fileList = this.uploadService.files;\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n });\n this.subscribeBlur();\n this.subscribeFocus();\n this.attachEventHandlers();\n this.setDefaultSettings();\n }\n /**\n * Sets the `name` attribute of the `input` element of the FileSelect.\n */\n set name(name) {\n this.uploadService.async.saveField = name;\n }\n get name() {\n return this.uploadService.async.saveField;\n }\n /**\n * Sets the restrictions for selected files.\n */\n set restrictions(restrictions) {\n let parsedRestrictions = Object.assign({}, this._restrictions, restrictions);\n this._restrictions = parsedRestrictions;\n }\n get restrictions() {\n return this._restrictions;\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n if (this.zoneId) {\n this.dropZoneService.addComponent(this, this.zoneId);\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * Focuses the underlying input element.\n */\n focus() {\n setTimeout(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n ngOnDestroy() {\n this.fileList.clear();\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n }\n if (this.wrapperFocusSubscription) {\n this.wrapperFocusSubscription.unsubscribe();\n }\n if (this.selectButtonFocusSubscription) {\n this.selectButtonFocusSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled) {\n return;\n }\n if ((event.keyCode === Keys.Enter || event.keyCode === Keys.Space) &&\n event.target === this.fileSelectButton.nativeElement) {\n event.preventDefault();\n this.fileSelect.nativeElement.click();\n return;\n }\n if (hasClasses(event.target, UPLOAD_CLASSES) ||\n (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES))) {\n this.navigation.process(event);\n }\n }\n /**\n * @hidden\n */\n writeValue(newValue) {\n let isValid = true;\n if (newValue instanceof Array) {\n newValue.forEach((file) => {\n if (!validateInitialFileSelectFile(file)) {\n isValid = false;\n }\n });\n if (isValid) {\n this.uploadService.addInitialFileSelectFiles(newValue);\n }\n }\n if (newValue === null) {\n this.fileList.clear();\n }\n this.cdr.markForCheck();\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 * Removes specific file from the file list.\n */\n removeFileByUid(uid) {\n this.uploadService.removeFiles(uid);\n }\n /**\n * Visually clears all files from the UI.\n */\n clearFiles() {\n this.uploadService.clearFiles();\n }\n /**\n * @hidden\n * Used to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * @hidden\n * Used by the external dropzone to add files to the FileSelect\n */\n addFiles(files) {\n this.uploadService.addFiles(files);\n }\n /**\n * @hidden\n */\n get selectButtonTabIndex() {\n return this.disabled ? undefined : this.tabindex;\n }\n /**\n * @hidden\n */\n onFileSelectButtonFocus(_event) {\n this.renderer.addClass(this.fileSelectButton.nativeElement, 'k-state-focused');\n if (!this.navigation.focused) {\n this.navigation.focusedIndex = -1;\n }\n }\n /**\n * @hidden\n */\n onFileSelectButtonBlur(_event) {\n this.renderer.removeClass(this.fileSelectButton.nativeElement, 'k-state-focused');\n }\n subscribeBlur() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.documentClick = fromEvent(document, 'click').pipe(filter((event) => {\n return !(this.wrapper !== event.target && this.wrapper.contains(event.target));\n }));\n this.blurSubscription = merge(this.documentClick, this.navigation.onTab).subscribe(() => {\n if (this.navigation.focused) {\n this.ngZone.run(() => {\n this.navigation.focused = false;\n this.onTouchedCallback();\n this.onBlur.emit();\n });\n }\n });\n });\n }\n subscribeFocus() {\n this.wrapperFocusSubscription = this.navigation.onWrapperFocus.subscribe(() => {\n this.onFocus.emit();\n });\n this.selectButtonFocusSubscription = this.navigation.onSelectButtonFocus.subscribe(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n attachEventHandlers() {\n this.subs = this.uploadService.changeEvent.subscribe((files) => {\n let model = [];\n if (files !== null) {\n files.forEach((file) => {\n if (file.state === FileState.Initial) {\n model.push(file);\n }\n if (file.state === FileState.Selected && file.rawFile && !file.validationErrors) {\n model.push(file.rawFile);\n }\n });\n }\n if (model.length === 0) {\n model = null;\n }\n this.onChangeCallback(model);\n this.valueChange.emit(model);\n });\n this.subs.add(this.uploadService.removeEvent.subscribe((args) => {\n this.remove.emit(args);\n }));\n this.subs.add(this.uploadService.selectEvent.subscribe((args) => {\n this.select.emit(args);\n }));\n }\n setDefaultSettings() {\n this.uploadService.async.autoUpload = false;\n this.uploadService.component = 'FileSelect';\n }\n};\nFileSelectComponent.ɵfac = function FileSelectComponent_Factory(t) { return new (t || FileSelectComponent)(ɵngcc0.ɵɵdirectiveInject(UploadService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DropZoneService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nFileSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FileSelectComponent, selectors: [[\"kendo-fileselect\"]], contentQueries: function FileSelectComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, FileTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FileInfoTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileInfoTemplate = _t.first);\n } }, viewQuery: function FileSelectComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileSelect = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileSelectButton = _t.first);\n } }, hostVars: 7, hostBindings: function FileSelectComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function FileSelectComponent_keydown_HostBindingHandler($event) { return ctx.handleKeydown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostDefaultClasses)(\"k-upload\", ctx.hostDefaultClasses)(\"k-state-disabled\", ctx.hostDisabledClass);\n } }, inputs: { disabled: \"disabled\", multiple: \"multiple\", showFileList: \"showFileList\", tabindex: \"tabindex\", focusableId: \"focusableId\", name: \"name\", restrictions: \"restrictions\", accept: \"accept\", zoneId: \"zoneId\" }, outputs: { onBlur: \"blur\", onFocus: \"focus\", select: \"select\", remove: \"remove\", valueChange: \"valueChange\" }, exportAs: [\"kendoFileSelect\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n FILESELECT_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.fileselect'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FileSelectComponent_1)\n }\n ])], decls: 11, vars: 14, consts: function () { let i18n_2; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The drop zone hint\n * @meaning kendo.fileselect.dropFilesHere\n */\n const MSG_EXTERNAL_660278350824582724$$DIST_FESM2015_INDEX_JS_3 = goog.getMsg(\"Drop files here to select\");\n i18n_2 = MSG_EXTERNAL_660278350824582724$$DIST_FESM2015_INDEX_JS_3;\n }\n else {\n i18n_2 = $localize `:kendo.fileselect.dropFilesHere|The drop zone hint␟fc9dc41483f5cb38bd14b6c7003fb09ef73aa357␟660278350824582724:Drop files here to select`;\n } let i18n_4; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the invalid allowed extensions restriction message\n * @meaning kendo.fileselect.invalidFileExtension\n */\n const MSG_EXTERNAL_4664331691591215211$$DIST_FESM2015_INDEX_JS_5 = goog.getMsg(\"File type not allowed.\");\n i18n_4 = MSG_EXTERNAL_4664331691591215211$$DIST_FESM2015_INDEX_JS_5;\n }\n else {\n i18n_4 = $localize `:kendo.fileselect.invalidFileExtension|The text for the invalid allowed extensions restriction message␟cd37b839ea9e6b35f63d735544dee56d4380e2f9␟4664331691591215211:File type not allowed.`;\n } let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the invalid max file size restriction message\n * @meaning kendo.fileselect.invalidMaxFileSize\n */\n const MSG_EXTERNAL_7793317101233274017$$DIST_FESM2015_INDEX_JS_7 = goog.getMsg(\"File size too large.\");\n i18n_6 = MSG_EXTERNAL_7793317101233274017$$DIST_FESM2015_INDEX_JS_7;\n }\n else {\n i18n_6 = $localize `:kendo.fileselect.invalidMaxFileSize|The text for the invalid max file size restriction message␟98382b80d6551de7650912776b22a6c70a80f7fd␟7793317101233274017:File size too large.`;\n } let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the invalid min file size restriction message\n * @meaning kendo.fileselect.invalidMinFileSize\n */\n const MSG_EXTERNAL_6852116465202092102$$DIST_FESM2015_INDEX_JS_9 = goog.getMsg(\"File size too small.\");\n i18n_8 = MSG_EXTERNAL_6852116465202092102$$DIST_FESM2015_INDEX_JS_9;\n }\n else {\n i18n_8 = $localize `:kendo.fileselect.invalidMinFileSize|The text for the invalid min file size restriction message␟448bd77b7081ff65298df29ebcfe776401613b21␟6852116465202092102:File size too small.`;\n } let i18n_10; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Remove button\n * @meaning kendo.fileselect.remove\n */\n const MSG_EXTERNAL_8968399983135301359$$DIST_FESM2015_INDEX_JS_11 = goog.getMsg(\"Remove\");\n i18n_10 = MSG_EXTERNAL_8968399983135301359$$DIST_FESM2015_INDEX_JS_11;\n }\n else {\n i18n_10 = $localize `:kendo.fileselect.remove|The text for the Remove button␟19fcca3d504982c668a7a793a545930003c7a0a7␟8968399983135301359:Remove`;\n } let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Select button\n * @meaning kendo.fileselect.select\n */\n const MSG_EXTERNAL_3297892120691863975$$DIST_FESM2015_INDEX_JS_13 = goog.getMsg(\"Select files...\");\n i18n_12 = MSG_EXTERNAL_3297892120691863975$$DIST_FESM2015_INDEX_JS_13;\n }\n else {\n i18n_12 = $localize `:kendo.fileselect.select|The text for the Select button␟fb88c598155545d9cb1e15ff76bdec63d72c03c9␟3297892120691863975:Select files...`;\n } return [[\"kendoFileSelectLocalizedMessages\", \"\", \"dropFilesHere\", i18n_2, \"invalidFileExtension\", i18n_4, \"invalidMaxFileSize\", i18n_6, \"invalidMinFileSize\", i18n_8, \"remove\", i18n_10, \"select\", i18n_12], [\"kendoFileSelectInternalDropZone\", \"\", 3, \"restrictions\", \"multiple\", \"disabled\"], [\"role\", \"button\", 1, \"k-button\", \"k-upload-button\", 3, \"id\", \"focus\", \"blur\"], [\"fileSelectButton\", \"\"], [\"kendoFileSelect\", \"\", 3, \"dir\", \"restrictions\", \"multiple\", \"disabled\"], [\"fileSelect\", \"\"], [1, \"k-dropzone-hint\"], [\"kendo-upload-file-list\", \"\", \"class\", \"k-upload-files k-reset\", 3, \"disabled\", \"fileList\", \"fileTemplate\", \"fileInfoTemplate\", 4, \"ngIf\"], [\"kendo-upload-file-list\", \"\", 1, \"k-upload-files\", \"k-reset\", 3, \"disabled\", \"fileList\", \"fileTemplate\", \"fileInfoTemplate\"]]; }, template: function FileSelectComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2, 3);\n ɵngcc0.ɵɵlistener(\"focus\", function FileSelectComponent_Template_div_focus_2_listener($event) { return ctx.onFileSelectButtonFocus($event); })(\"blur\", function FileSelectComponent_Template_div_blur_2_listener($event) { return ctx.onFileSelectButtonBlur($event); });\n ɵngcc0.ɵɵelement(4, \"input\", 4, 5);\n ɵngcc0.ɵɵelementStart(6, \"span\");\n ɵngcc0.ɵɵtext(7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"div\", 6);\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, FileSelectComponent_ul_10_Template, 1, 4, \"ul\", 7);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"restrictions\", ctx.restrictions)(\"multiple\", ctx.multiple)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.textFor(\"select\"))(\"tabindex\", ctx.selectButtonTabIndex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"dir\", ctx.direction)(\"restrictions\", ctx.restrictions)(\"multiple\", ctx.multiple)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵattribute(\"accept\", ctx.accept ? ctx.accept : null);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"select\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dropFilesHere\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showFileList && ctx.fileList.count > 0);\n } }, directives: function () { return [LocalizedMessagesDirective, DropZoneInternalDirective, FileSelectDirective, ɵngcc3.NgIf, FileListComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FileSelectComponent.prototype, \"accept\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileSelectComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileSelectComponent.prototype, \"multiple\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], FileSelectComponent.prototype, \"name\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileSelectComponent.prototype, \"showFileList\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FileSelectComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], FileSelectComponent.prototype, \"restrictions\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FileSelectComponent.prototype, \"zoneId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FileSelectComponent.prototype, \"focusableId\", void 0);\n__decorate([\n ContentChild(FileTemplateDirective, { static: false }),\n __metadata(\"design:type\", FileTemplateDirective)\n], FileSelectComponent.prototype, \"fileTemplate\", void 0);\n__decorate([\n ContentChild(FileInfoTemplateDirective, { static: false }),\n __metadata(\"design:type\", FileInfoTemplateDirective)\n], FileSelectComponent.prototype, \"fileInfoTemplate\", void 0);\n__decorate([\n ViewChild('fileSelect', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], FileSelectComponent.prototype, \"fileSelect\", void 0);\n__decorate([\n ViewChild('fileSelectButton', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], FileSelectComponent.prototype, \"fileSelectButton\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], FileSelectComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], FileSelectComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FileSelectComponent.prototype, \"select\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FileSelectComponent.prototype, \"remove\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], FileSelectComponent.prototype, \"valueChange\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-upload'),\n __metadata(\"design:type\", Boolean)\n], FileSelectComponent.prototype, \"hostDefaultClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FileSelectComponent.prototype, \"hostDisabledClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], FileSelectComponent.prototype, \"dir\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], FileSelectComponent.prototype, \"handleKeydown\", null);\nFileSelectComponent = FileSelectComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [UploadService,\n LocalizationService,\n NavigationService,\n DropZoneService,\n NgZone,\n Renderer2,\n ChangeDetectorRef,\n ElementRef])\n], FileSelectComponent);\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = /*@__PURE__*/ function () { let ɵMessages_BaseFactory; return function Messages_Factory(t) { return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(Messages)))(t || Messages); }; }();\nMessages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Messages, inputs: { cancel: \"cancel\", clearSelectedFiles: \"clearSelectedFiles\", dropFilesHere: \"dropFilesHere\", externalDropFilesHere: \"externalDropFilesHere\", filesBatchStatus: \"filesBatchStatus\", filesBatchStatusFailed: \"filesBatchStatusFailed\", filesBatchStatusUploaded: \"filesBatchStatusUploaded\", fileStatusFailed: \"fileStatusFailed\", fileStatusUploaded: \"fileStatusUploaded\", headerStatusPaused: \"headerStatusPaused\", headerStatusUploaded: \"headerStatusUploaded\", headerStatusUploading: \"headerStatusUploading\", invalidFileExtension: \"invalidFileExtension\", invalidMaxFileSize: \"invalidMaxFileSize\", invalidMinFileSize: \"invalidMinFileSize\", pause: \"pause\", remove: \"remove\", resume: \"resume\", retry: \"retry\", select: \"select\", uploadSelectedFiles: \"uploadSelectedFiles\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"cancel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"clearSelectedFiles\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"dropFilesHere\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"externalDropFilesHere\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filesBatchStatus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filesBatchStatusFailed\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"filesBatchStatusUploaded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"fileStatusFailed\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"fileStatusUploaded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"headerStatusPaused\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"headerStatusUploaded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"headerStatusUploading\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"invalidFileExtension\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"invalidMaxFileSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"invalidMinFileSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"pause\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"remove\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"resume\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"retry\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"select\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], Messages.prototype, \"uploadSelectedFiles\", void 0);\n\nvar CustomMessagesComponent_1;\n/**\n * Custom component messages override default component messages ([more information and example]({% slug globalization_upload %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\nlet CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n};\nCustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(t) { return new (t || CustomMessagesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nCustomMessagesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CustomMessagesComponent, selectors: [[\"kendo-upload-messages\"], [\"kendo-fileselect-messages\"], [\"kendo-uploaddropzone-messages\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function CustomMessagesComponent_Template(rf, ctx) { }, encapsulation: 2 });\nCustomMessagesComponent = CustomMessagesComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], CustomMessagesComponent);\n\n/**\n * @hidden\n */\nconst INVALIDMAXFILESIZE = \"invalidMaxFileSize\";\n/**\n * @hidden\n */\nconst INVALIDMINFILESIZE = \"invalidMinFileSize\";\n/**\n * @hidden\n */\nconst INVALIDFILEEXTENSION = \"invalidFileExtension\";\nconst validateFileExtension = (file, allowedExtensions) => {\n if (allowedExtensions.length > 0) {\n if (allowedExtensions.indexOf(file.extension.toLowerCase()) < 0) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDFILEEXTENSION) < 0) {\n file.validationErrors.push(INVALIDFILEEXTENSION);\n }\n }\n }\n};\nconst validateFileSize = (file, minFileSize, maxFileSize) => {\n if (minFileSize !== 0 && file.size < minFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMINFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMINFILESIZE);\n }\n }\n if (maxFileSize !== 0 && file.size > maxFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMAXFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMAXFILESIZE);\n }\n }\n};\nconst parseAllowedExtensions = (extensions) => {\n const allowedExtensions = extensions.map((ext) => {\n var parsedExt = (ext.substring(0, 1) === \".\") ? ext : (\".\" + ext);\n return parsedExt.toLowerCase();\n });\n return allowedExtensions;\n};\n/**\n * @hidden\n */\nconst validateFiles = (files, restrictionInfo) => {\n const allowedExtensions = parseAllowedExtensions(restrictionInfo.allowedExtensions);\n const maxFileSize = restrictionInfo.maxFileSize;\n const minFileSize = restrictionInfo.minFileSize;\n let i;\n for (i = 0; i < files.length; i++) {\n validateFileExtension(files[i], allowedExtensions);\n validateFileSize(files[i], minFileSize, maxFileSize);\n }\n};\n\n/**\n * @hidden\n */\nclass DropZoneBase {\n constructor(element, renderer, hoverClass) {\n this.element = element;\n this.renderer = renderer;\n this.hideIntervalElement = null;\n this.hoverClass = hoverClass;\n }\n /**\n * @hidden\n */\n onElementDragEnterListener() {\n this.addClass(this.hoverClass);\n this.lastDragElement = new Date();\n if (!this.hideIntervalElement) {\n this.hideIntervalElement = setInterval(() => {\n if (this.calculateTimeDiff(this.lastDragElement) < 100) {\n return;\n }\n this.removeClass(this.hoverClass);\n clearInterval(this.hideIntervalElement);\n this.hideIntervalElement = null;\n }, 100);\n }\n return false;\n }\n /**\n * @hidden\n */\n onElementDragOverListener() {\n this.lastDragElement = new Date();\n return false;\n }\n calculateTimeDiff(prevEvent) {\n return new Date().getTime() - prevEvent.getTime();\n }\n addClass(className) {\n this.renderer.addClass(this.element.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.element.nativeElement, className);\n }\n}\nDropZoneBase.ɵfac = function DropZoneBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nDropZoneBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropZoneBase, hostBindings: function DropZoneBase_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"dragenter\", function DropZoneBase_dragenter_HostBindingHandler() { return ctx.onElementDragEnterListener(); })(\"dragover\", function DropZoneBase_dragover_HostBindingHandler() { return ctx.onElementDragOverListener(); });\n } } });\n__decorate([\n HostListener('dragenter'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Boolean)\n], DropZoneBase.prototype, \"onElementDragEnterListener\", null);\n__decorate([\n HostListener('dragover'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Boolean)\n], DropZoneBase.prototype, \"onElementDragOverListener\", null);\n\n/**\n * @hidden\n */\nlet DropZoneInternalDirective = class DropZoneInternalDirective extends DropZoneBase {\n constructor(element, renderer, ngZone, uploadService) {\n super(element, renderer, 'k-dropzone-hover');\n this.ngZone = ngZone;\n this.uploadService = uploadService;\n this.initialClassName = true;\n this.hideIntervalDocument = null;\n this.activeClass = 'k-dropzone-active';\n this.ngZone.runOutsideAngular(() => {\n this.unsubscribeDocumentDragEnter = this.renderer.listen('document', 'dragenter', () => this.onDocumentDragEnter());\n this.unsubscribeDocumentDragOver = this.renderer.listen('document', 'dragover', () => this.onDocumentDragOver());\n });\n }\n ngOnDestroy() {\n this.ngZone.runOutsideAngular(() => {\n if (this.unsubscribeDocumentDragEnter) {\n this.unsubscribeDocumentDragEnter();\n }\n if (this.unsubscribeDocumentDragOver) {\n this.unsubscribeDocumentDragOver();\n }\n });\n }\n onDocumentDragEnter() {\n this.addClass(this.activeClass);\n this.lastDragDocument = new Date();\n if (!this.hideIntervalDocument) {\n this.hideIntervalDocument = setInterval(() => {\n if (this.calculateTimeDiff(this.lastDragDocument) < 100) {\n return;\n }\n this.removeClass(this.activeClass);\n clearInterval(this.hideIntervalDocument);\n this.hideIntervalDocument = null;\n }, 100);\n }\n return false;\n }\n /**\n * @hidden\n */\n onDocumentDragOver() {\n this.lastDragDocument = new Date();\n return false;\n }\n onDropListener(event) {\n let droppedFiles = event.dataTransfer.files;\n if (droppedFiles.length > 0 && !this.disabled) {\n let files = getAllFileInfo(droppedFiles);\n files = assignGuidToFiles(files, !this.uploadService.async.batch);\n if (!this.multiple) {\n files.splice(1, files.length - 1);\n this.uploadService.clearFiles();\n }\n validateFiles(files, this.restrictions);\n this.uploadService.addFiles(files);\n }\n return false;\n }\n};\nDropZoneInternalDirective.ɵfac = function DropZoneInternalDirective_Factory(t) { return new (t || DropZoneInternalDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(UploadService)); };\nDropZoneInternalDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DropZoneInternalDirective, selectors: [[\"\", \"kendoUploadInternalDropZone\", \"\"], [\"\", \"kendoFileSelectInternalDropZone\", \"\"]], hostVars: 2, hostBindings: function DropZoneInternalDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"drop\", function DropZoneInternalDirective_drop_HostBindingHandler($event) { return ctx.onDropListener($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-dropzone\", ctx.initialClassName);\n } }, inputs: { disabled: \"disabled\", multiple: \"multiple\", restrictions: \"restrictions\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropZoneInternalDirective.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], DropZoneInternalDirective.prototype, \"multiple\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], DropZoneInternalDirective.prototype, \"restrictions\", void 0);\n__decorate([\n HostBinding('class.k-dropzone'),\n __metadata(\"design:type\", Boolean)\n], DropZoneInternalDirective.prototype, \"initialClassName\", void 0);\n__decorate([\n HostListener('drop', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Boolean)\n], DropZoneInternalDirective.prototype, \"onDropListener\", null);\nDropZoneInternalDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n NgZone,\n UploadService])\n], DropZoneInternalDirective);\n\n/**\n * @hidden\n */\nlet FileListItemDirective = class FileListItemDirective {\n constructor(el, navigationService, uploadService) {\n this.navigationService = navigationService;\n this.uploadService = uploadService;\n this.fileClass = true;\n this.focused = false;\n this.element = el;\n }\n focus() {\n this.element.nativeElement.focus();\n }\n get uidAttribute() {\n return this.files[0].uid;\n }\n get tabIndex() {\n return \"-1\";\n }\n get kFileError() {\n return this.files[0].state === FileState.Failed;\n }\n get kFileInvalid() {\n return filesHaveValidationErrors(this.files);\n }\n get kFileProgress() {\n return this.files[0].state === FileState.Uploading ||\n this.files[0].state === FileState.Paused;\n }\n get kFileSuccess() {\n if (this.uploadService.component === 'Upload') {\n return this.files[0].state === FileState.Uploaded ||\n this.files[0].state === FileState.Initial;\n }\n return false;\n }\n get kStateFocused() {\n return this.focused;\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n }\n onClick(event) {\n if (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES)) {\n this.navigationService.focusedIndex = this.index;\n }\n }\n};\nFileListItemDirective.ɵfac = function FileListItemDirective_Factory(t) { return new (t || FileListItemDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(UploadService)); };\nFileListItemDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FileListItemDirective, selectors: [[\"\", \"kendoUploadFileListItem\", \"\"]], hostVars: 14, hostBindings: function FileListItemDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focus\", function FileListItemDirective_focus_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function FileListItemDirective_blur_HostBindingHandler() { return ctx.onBlur(); })(\"click\", function FileListItemDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"data-uid\", ctx.uidAttribute)(\"tabIndex\", ctx.tabIndex);\n ɵngcc0.ɵɵclassProp(\"k-file\", ctx.fileClass)(\"k-file-error\", ctx.kFileError)(\"k-file-invalid\", ctx.kFileInvalid)(\"k-file-progress\", ctx.kFileProgress)(\"k-file-success\", ctx.kFileSuccess)(\"k-state-focused\", ctx.kStateFocused);\n } }, inputs: { files: \"files\", index: \"index\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FileListItemDirective.prototype, \"files\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FileListItemDirective.prototype, \"index\", void 0);\n__decorate([\n HostBinding('class.k-file'),\n __metadata(\"design:type\", Boolean)\n], FileListItemDirective.prototype, \"fileClass\", void 0);\n__decorate([\n HostBinding('attr.data-uid'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], FileListItemDirective.prototype, \"uidAttribute\", null);\n__decorate([\n HostBinding('attr.tabIndex'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], FileListItemDirective.prototype, \"tabIndex\", null);\n__decorate([\n HostBinding('class.k-file-error'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FileListItemDirective.prototype, \"kFileError\", null);\n__decorate([\n HostBinding('class.k-file-invalid'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FileListItemDirective.prototype, \"kFileInvalid\", null);\n__decorate([\n HostBinding('class.k-file-progress'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FileListItemDirective.prototype, \"kFileProgress\", null);\n__decorate([\n HostBinding('class.k-file-success'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FileListItemDirective.prototype, \"kFileSuccess\", null);\n__decorate([\n HostBinding('class.k-state-focused'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], FileListItemDirective.prototype, \"kStateFocused\", null);\n__decorate([\n HostListener(\"focus\"),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], FileListItemDirective.prototype, \"onFocus\", null);\n__decorate([\n HostListener(\"blur\"),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], FileListItemDirective.prototype, \"onBlur\", null);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], FileListItemDirective.prototype, \"onClick\", null);\nFileListItemDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NavigationService,\n UploadService])\n], FileListItemDirective);\n\n/**\n * @hidden\n */\nlet FileListComponent = class FileListComponent {\n constructor(uploadService, navigation) {\n this.uploadService = uploadService;\n this.navigation = navigation;\n this.onItemFocus();\n this.onItemAction();\n }\n onItemFocus() {\n this.focusSubscription = this.navigation.onFileFocus.subscribe((index) => {\n this.fileListItems.toArray()[index].focus();\n });\n }\n onItemAction() {\n this.actionSubscription = this.navigation.onFileAction.subscribe((key) => {\n this.itemActionHandler(key);\n });\n }\n itemActionHandler(key) {\n let index = this.navigation.focusedIndex;\n let item = this.fileListItems.toArray()[index];\n let uid = item.uidAttribute;\n let files = this.uploadService.files.get(uid);\n if (key === Keys.Escape && files[0].state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n this.navigation.focusSelectButton();\n return;\n }\n if (key === Keys.Enter && files[0].state === FileState.Failed) {\n this.uploadService.retryFiles(uid);\n return;\n }\n if (key === Keys.Delete) {\n if (files[0].state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n }\n else if (this.hasDelete(item)) {\n this.uploadService.removeFiles(uid);\n }\n this.navigation.focusSelectButton();\n }\n }\n hasDelete(item) {\n return item.element.nativeElement.getElementsByClassName('k-delete').length > 0;\n }\n ngOnDestroy() {\n this.focusSubscription.unsubscribe();\n this.actionSubscription.unsubscribe();\n }\n};\nFileListComponent.ɵfac = function FileListComponent_Factory(t) { return new (t || FileListComponent)(ɵngcc0.ɵɵdirectiveInject(UploadService), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nFileListComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FileListComponent, selectors: [[\"\", \"kendo-upload-file-list\", \"\"]], viewQuery: function FileListComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(FileListItemDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileListItems = _t);\n } }, inputs: { disabled: \"disabled\", fileList: \"fileList\", fileTemplate: \"fileTemplate\", fileInfoTemplate: \"fileInfoTemplate\" }, attrs: _c14, decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [\"kendoUploadFileListItem\", \"\", 3, \"files\", \"index\"], [\"class\", \"k-file-single\", 3, \"disabled\", \"file\", \"fileInfoTemplate\", 4, \"ngIf\"], [\"class\", \"k-file-multiple\", 3, \"disabled\", \"files\", \"fileInfoTemplate\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"k-file-single\", 3, \"disabled\", \"file\", \"fileInfoTemplate\"], [1, \"k-file-multiple\", 3, \"disabled\", \"files\", \"fileInfoTemplate\"], [3, \"templateContext\"]], template: function FileListComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FileListComponent_ng_template_0_Template, 4, 5, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.fileList);\n } }, directives: function () { return [ɵngcc3.NgForOf, FileListItemDirective, ɵngcc3.NgIf, FileListSingleItemComponent, FileListMultipleItemsComponent, TemplateContextDirective]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileListComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FileListComponent.prototype, \"fileList\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FileTemplateDirective)\n], FileListComponent.prototype, \"fileTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FileInfoTemplateDirective)\n], FileListComponent.prototype, \"fileInfoTemplate\", void 0);\n__decorate([\n ViewChildren(FileListItemDirective),\n __metadata(\"design:type\", QueryList)\n], FileListComponent.prototype, \"fileListItems\", void 0);\nFileListComponent = __decorate([ __metadata(\"design:paramtypes\", [UploadService,\n NavigationService])\n], FileListComponent);\n\n/**\n * @hidden\n */\nlet FileListItemActionButtonComponent = class FileListItemActionButtonComponent {\n constructor(uploadService, localization) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.actionFocused = false;\n this.retryFocused = false;\n this.pauseResumeFocused = false;\n }\n onFocus(type) {\n if (type === 'action') {\n this.actionFocused = true;\n }\n if (type === 'retry') {\n this.retryFocused = true;\n }\n if (type === 'pauseResume') {\n this.pauseResumeFocused = true;\n }\n }\n onBlur(type) {\n if (type === 'retry') {\n this.retryFocused = false;\n }\n if (type === 'action') {\n this.actionFocused = false;\n }\n if (type === 'pauseResume') {\n this.pauseResumeFocused = false;\n }\n }\n onRetryClick() {\n if (this.disabled) {\n return;\n }\n this.uploadService.retryFiles(this.file.uid);\n }\n onRemoveCancelClick() {\n if (this.disabled) {\n return;\n }\n const uid = this.file.uid;\n if (this.file.state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n }\n else {\n this.uploadService.removeFiles(uid);\n }\n }\n onPauseResumeClick() {\n if (this.disabled) {\n return;\n }\n const uid = this.file.uid;\n if (this.file.state === FileState.Paused) {\n this.uploadService.resumeFile(uid);\n }\n else {\n this.uploadService.pauseFile(uid);\n }\n }\n get actionButtonTitle() {\n if (this.file.state === FileState.Uploading) {\n return this.localization.get('cancel');\n }\n return this.localization.get('remove');\n }\n get retryButtonTitle() {\n return this.localization.get('retry');\n }\n get pauseResumeButtonTitle() {\n if (this.file.state === FileState.Uploading) {\n return this.localization.get('pause');\n }\n return this.localization.get('resume');\n }\n get isUploading() {\n return this.file.state === FileState.Uploading;\n }\n get isFailed() {\n return this.file.state === FileState.Failed;\n }\n get isPaused() {\n return this.file.state === FileState.Paused;\n }\n get isResumable() {\n const service = this.uploadService;\n const isResumable = service.async.chunk && service.chunk.resumable;\n const isUploading = (this.file.state === FileState.Paused) || (this.file.state === FileState.Uploading);\n return isResumable && isUploading;\n }\n get isActionButtonVisible() {\n if ((this.file.state === FileState.Uploaded || this.file.state === FileState.Initial) &&\n !this.uploadService.async.removeUrl && this.uploadService.component === 'Upload') {\n return false;\n }\n return true;\n }\n};\nFileListItemActionButtonComponent.ɵfac = function FileListItemActionButtonComponent_Factory(t) { return new (t || FileListItemActionButtonComponent)(ɵngcc0.ɵɵdirectiveInject(UploadService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nFileListItemActionButtonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FileListItemActionButtonComponent, selectors: [[\"kendo-upload-file-list-item-action-button\"]], inputs: { file: \"file\", disabled: \"disabled\", progress: \"progress\" }, decls: 5, vars: 4, consts: [[1, \"k-upload-status\"], [\"class\", \"k-upload-pct\", 4, \"ngIf\"], [\"type\", \"button\", \"class\", \"k-button k-button-icon k-flat k-upload-action\", 3, \"ngClass\", \"focus\", \"blur\", \"click\", 4, \"ngIf\"], [1, \"k-upload-pct\"], [\"type\", \"button\", 1, \"k-button\", \"k-button-icon\", \"k-flat\", \"k-upload-action\", 3, \"ngClass\", \"focus\", \"blur\", \"click\"], [1, \"k-icon\", \"k-retry\", \"k-i-refresh-sm\"], [1, \"k-icon\", 3, \"ngClass\"]], template: function FileListItemActionButtonComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\", 0);\n ɵngcc0.ɵɵtemplate(1, FileListItemActionButtonComponent_span_1_Template, 2, 1, \"span\", 1);\n ɵngcc0.ɵɵtemplate(2, FileListItemActionButtonComponent_button_2_Template, 2, 6, \"button\", 2);\n ɵngcc0.ɵɵtemplate(3, FileListItemActionButtonComponent_button_3_Template, 2, 10, \"button\", 2);\n ɵngcc0.ɵɵtemplate(4, FileListItemActionButtonComponent_button_4_Template, 2, 10, \"button\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isUploading || ctx.isPaused);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isFailed);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isResumable);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isActionButtonVisible);\n } }, directives: [ɵngcc3.NgIf, ɵngcc3.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FileListItemActionButtonComponent.prototype, \"file\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileListItemActionButtonComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], FileListItemActionButtonComponent.prototype, \"progress\", void 0);\nFileListItemActionButtonComponent = __decorate([ __metadata(\"design:paramtypes\", [UploadService,\n LocalizationService])\n], FileListItemActionButtonComponent);\n\n/**\n * @hidden\n */\nclass FileListItemBase {\n constructor(uploadService) {\n this.uploadService = uploadService;\n this.progressComplete = 0;\n }\n subscribeUploadProgress(uploadProgressHandler) {\n this.uploadProgressSubscription = this.uploadService.uploadProgressEvent.subscribe(uploadProgressHandler);\n }\n fileHasValidationErrors(file) {\n return fileHasValidationErrors(file);\n }\n filesHaveValidationErrors(files) {\n return filesHaveValidationErrors(files);\n }\n ngOnDestroy() {\n this.uploadProgressSubscription.unsubscribe();\n }\n getFileValidationMessage(file) {\n let validationMessage;\n if (file.validationErrors && file.validationErrors.length > 0) {\n validationMessage = this.localization.get(file.validationErrors[0]);\n }\n return validationMessage;\n }\n getTotalFilesSizeMessage(files) {\n return getTotalFilesSizeMessage(files);\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nFileListItemBase.ɵfac = function FileListItemBase_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nFileListItemBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FileListItemBase });\n\n/**\n * @hidden\n */\nlet FileListMultipleItemsComponent = class FileListMultipleItemsComponent extends FileListItemBase {\n constructor(localization, uploadService) {\n super(uploadService);\n this.localization = localization;\n this.subscribeUploadProgress((args) => {\n if (args.files[0].uid === this.files[0].uid) {\n this.progressComplete = args.percentComplete;\n }\n });\n }\n get showProgress() {\n const showProgress = this.files[0].state === FileState.Uploading || this.files[0].state === FileState.Paused;\n return showProgress ? 'active' : 'inactive';\n }\n ngOnInit() {\n this.filesHaveErrors = super.filesHaveValidationErrors(this.files);\n }\n fileStatusText(file) {\n const errors = file.validationErrors;\n if (!isPresent(errors)) {\n return this.getTotalFilesSizeMessage([file]);\n }\n return this.getFileValidationMessage(file);\n }\n get batchStatusText() {\n const state$$1 = this.files[0].state;\n const fileCount = this.files.length;\n if (state$$1 === FileState.Uploaded) {\n return `${fileCount} ${this.textFor('filesBatchStatusUploaded')}`;\n }\n if (state$$1 === FileState.Failed) {\n return `${fileCount} ${this.textFor('filesBatchStatusFailed')}`;\n }\n return `${fileCount} ${this.textFor('filesBatchStatus')}`;\n }\n get isUploadSuccessful() {\n return this.files[0].state === FileState.Uploaded;\n }\n get isUploadFailed() {\n return this.files[0].state === FileState.Failed;\n }\n};\nFileListMultipleItemsComponent.ɵfac = function FileListMultipleItemsComponent_Factory(t) { return new (t || FileListMultipleItemsComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(UploadService)); };\nFileListMultipleItemsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FileListMultipleItemsComponent, selectors: [[\"kendo-upload-file-list-multiple-items\"]], inputs: { disabled: \"disabled\", files: \"files\", fileInfoTemplate: \"fileInfoTemplate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 8, vars: 8, consts: [[1, \"k-progressbar\"], [1, \"k-progress\"], [1, \"k-multiple-files-group-wrapper\"], [1, \"k-file-group\", \"k-icon\", \"k-i-copy\"], [1, \"k-multiple-files-wrapper\"], [4, \"ngIf\"], [3, \"file\", \"disabled\", \"progress\"], [\"class\", \"k-file-name-size-wrapper\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-file-information\", 3, \"ngClass\"], [1, \"k-file-name-size-wrapper\"], [1, \"k-file-name\", 3, \"title\"], [3, \"ngClass\"], [3, \"templateContext\"]], template: function FileListMultipleItemsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelement(1, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 2);\n ɵngcc0.ɵɵelement(3, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, FileListMultipleItemsComponent_ng_container_5_Template, 4, 6, \"ng-container\", 5);\n ɵngcc0.ɵɵtemplate(6, FileListMultipleItemsComponent_6_Template, 1, 5, null, 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(7, \"kendo-upload-file-list-item-action-button\", 6);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"@progressState\", ctx.showProgress);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.progressComplete + \"%\");\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.fileInfoTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.fileInfoTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"file\", ctx.files[0])(\"disabled\", ctx.disabled)(\"progress\", ctx.progressComplete);\n } }, directives: function () { return [ɵngcc3.NgIf, ɵngcc3.NgForOf, ɵngcc3.NgClass, TemplateContextDirective, FileListItemActionButtonComponent]; }, encapsulation: 2, data: { animation: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileListMultipleItemsComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], FileListMultipleItemsComponent.prototype, \"files\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FileInfoTemplateDirective)\n], FileListMultipleItemsComponent.prototype, \"fileInfoTemplate\", void 0);\nFileListMultipleItemsComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService,\n UploadService])\n], FileListMultipleItemsComponent);\n\n/**\n * @hidden\n */\nlet FileListSingleItemComponent = class FileListSingleItemComponent extends FileListItemBase {\n constructor(localization, uploadService) {\n super(uploadService);\n this.localization = localization;\n this.subscribeUploadProgress((args) => {\n if (args.files[0].uid === this.file.uid) {\n this.progressComplete = args.percentComplete;\n }\n });\n }\n get fileStatusText() {\n const errors = this.file.validationErrors;\n if (this.file.state === FileState.Uploaded) {\n return `${this.textFor('fileStatusUploaded')}`;\n }\n if (this.file.state === FileState.Failed) {\n return `${this.textFor('fileStatusFailed')}`;\n }\n if (!isPresent(errors)) {\n return this.getTotalFilesSizeMessage([this.file]);\n }\n return this.getFileValidationMessage(this.file);\n }\n get showProgress() {\n const showProgress = this.file.state === FileState.Uploading || this.file.state === FileState.Paused;\n return showProgress ? 'active' : 'inactive';\n }\n get fileGroupClass() {\n return getFileGroupCssClass(this.file.extension ? this.file.extension : '');\n }\n get isUploadSuccessful() {\n return this.file.state === FileState.Uploaded;\n }\n get isUploadFailed() {\n return this.file.state === FileState.Failed;\n }\n get isNotYetUploaded() {\n return !this.isUploadFailed && !this.isUploadSuccessful;\n }\n};\nFileListSingleItemComponent.ɵfac = function FileListSingleItemComponent_Factory(t) { return new (t || FileListSingleItemComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(UploadService)); };\nFileListSingleItemComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FileListSingleItemComponent, selectors: [[\"kendo-upload-file-list-single-item\"]], inputs: { disabled: \"disabled\", file: \"file\", fileInfoTemplate: \"fileInfoTemplate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 8, vars: 9, consts: [[1, \"k-progressbar\"], [1, \"k-progress\"], [1, \"k-file-group-wrapper\"], [1, \"k-file-group\", \"k-icon\", 3, \"ngClass\"], [1, \"k-file-name-size-wrapper\"], [4, \"ngIf\"], [3, \"file\", \"disabled\", \"progress\"], [1, \"k-file-name\", 3, \"title\"], [3, \"ngClass\"], [3, \"templateContext\"]], template: function FileListSingleItemComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelement(1, \"span\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 2);\n ɵngcc0.ɵɵelement(3, \"span\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"span\", 4);\n ɵngcc0.ɵɵtemplate(5, FileListSingleItemComponent_ng_container_5_Template, 5, 10, \"ng-container\", 5);\n ɵngcc0.ɵɵtemplate(6, FileListSingleItemComponent_6_Template, 1, 7, null, 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(7, \"kendo-upload-file-list-item-action-button\", 6);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"@progressState\", ctx.showProgress);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.progressComplete + \"%\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.fileGroupClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.fileInfoTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.fileInfoTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"file\", ctx.file)(\"disabled\", ctx.disabled)(\"progress\", ctx.progressComplete);\n } }, directives: function () { return [ɵngcc3.NgClass, ɵngcc3.NgIf, TemplateContextDirective, FileListItemActionButtonComponent]; }, encapsulation: 2, data: { animation: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileListSingleItemComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FileListSingleItemComponent.prototype, \"file\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", FileInfoTemplateDirective)\n], FileListSingleItemComponent.prototype, \"fileInfoTemplate\", void 0);\nFileListSingleItemComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService, UploadService])\n], FileListSingleItemComponent);\n\n/**\n * @hidden\n */\nlet FileSelectDirective = class FileSelectDirective {\n constructor(uploadService, navigation, el) {\n this.uploadService = uploadService;\n this.navigation = navigation;\n this.type = \"file\";\n this.autocomplete = \"off\";\n this.tabIndex = -1;\n this.element = el;\n }\n get nameAttribute() {\n return this.uploadService.async.saveField;\n }\n get multipleAttribute() {\n return this.multiple ? \"multiple\" : null;\n }\n get dirAttribute() {\n return this.dir;\n }\n get disabledAttribute() {\n return this.disabled ? \"true\" : null;\n }\n onInputChange(event) {\n const ua = navigator.userAgent;\n const webkit = /(webkit)[ \\/]([\\w.]+)/i;\n const ie = /(windows)[ \\/]([\\w.]+)/i;\n let selectedFiles = inputFiles(event.target);\n selectedFiles = assignGuidToFiles(selectedFiles, !this.uploadService.async.batch);\n validateFiles(selectedFiles, this.restrictions);\n if (!this.multiple) {\n this.uploadService.clearFiles();\n }\n this.uploadService.addFiles(selectedFiles);\n /*\n Chrome, IE, Edge and Safari do not trigger a `change` event\n when a file with the same name is selected a number of consecutive times.\n As a workaround, clear the input value after handling the file.\n */\n const native = this.element.nativeElement;\n if (ua.match(webkit) || ua.match(ie)) {\n native.type = \"\";\n native.type = \"file\";\n }\n setTimeout(() => {\n this.navigation.focusedIndex = -1;\n });\n }\n};\nFileSelectDirective.ɵfac = function FileSelectDirective_Factory(t) { return new (t || FileSelectDirective)(ɵngcc0.ɵɵdirectiveInject(UploadService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nFileSelectDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FileSelectDirective, selectors: [[\"\", \"kendoFileSelect\", \"\"]], hostVars: 7, hostBindings: function FileSelectDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function FileSelectDirective_change_HostBindingHandler($event) { return ctx.onInputChange($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"type\", ctx.type)(\"autocomplete\", ctx.autocomplete)(\"tabindex\", ctx.tabIndex)(\"name\", ctx.nameAttribute)(\"multiple\", ctx.multipleAttribute)(\"dir\", ctx.dirAttribute)(\"disabled\", ctx.disabledAttribute);\n } }, inputs: { dir: \"dir\", disabled: \"disabled\", multiple: \"multiple\", restrictions: \"restrictions\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], FileSelectDirective.prototype, \"dir\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileSelectDirective.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], FileSelectDirective.prototype, \"multiple\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], FileSelectDirective.prototype, \"restrictions\", void 0);\n__decorate([\n HostBinding(\"attr.type\"),\n __metadata(\"design:type\", String)\n], FileSelectDirective.prototype, \"type\", void 0);\n__decorate([\n HostBinding(\"attr.autocomplete\"),\n __metadata(\"design:type\", String)\n], FileSelectDirective.prototype, \"autocomplete\", void 0);\n__decorate([\n HostBinding(\"attr.tabindex\"),\n __metadata(\"design:type\", Number)\n], FileSelectDirective.prototype, \"tabIndex\", void 0);\n__decorate([\n HostBinding(\"attr.name\"),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], FileSelectDirective.prototype, \"nameAttribute\", null);\n__decorate([\n HostBinding(\"attr.multiple\"),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], FileSelectDirective.prototype, \"multipleAttribute\", null);\n__decorate([\n HostBinding(\"attr.dir\"),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], FileSelectDirective.prototype, \"dirAttribute\", null);\n__decorate([\n HostBinding(\"attr.disabled\"),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], FileSelectDirective.prototype, \"disabledAttribute\", null);\n__decorate([\n HostListener(\"change\", [\"$event\"]),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], FileSelectDirective.prototype, \"onInputChange\", null);\nFileSelectDirective = __decorate([ __metadata(\"design:paramtypes\", [UploadService,\n NavigationService,\n ElementRef])\n], FileSelectDirective);\n\nvar LocalizedMessagesDirective_1;\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n};\nLocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(t) { return new (t || LocalizedMessagesDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nLocalizedMessagesDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LocalizedMessagesDirective, selectors: [[\"\", \"kendoUploadLocalizedMessages\", \"\"], [\"\", \"kendoFileSelectLocalizedMessages\", \"\"], [\"\", \"kendoUploadDropZoneLocalizedMessages\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nLocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], LocalizedMessagesDirective);\n\n/**\n * @hidden\n */\nlet TemplateContextDirective = class 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 = function TemplateContextDirective_Factory(t) { return new (t || TemplateContextDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nTemplateContextDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TemplateContextDirective, selectors: [[\"\", \"templateContext\", \"\"]], inputs: { templateContext: \"templateContext\" } });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], TemplateContextDirective.prototype, \"templateContext\", null);\nTemplateContextDirective = __decorate([ __metadata(\"design:paramtypes\", [ViewContainerRef])\n], TemplateContextDirective);\n\nvar UploadComponent_1;\n/* tslint:disable: no-use-before-declare */\n/**\n * @hidden\n */\nconst UPLOAD_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UploadComponent) // tslint:disable-line:no-forward-ref\n};\n/**\n * Represents the [Kendo UI Upload component for Angular]({% slug overview_upload %}).\n */\nlet UploadComponent = UploadComponent_1 = class UploadComponent {\n constructor(uploadService, localization, navigation, dropZoneService, _ngZone, renderer, cdr, wrapper) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.dropZoneService = dropZoneService;\n this._ngZone = _ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * Enables the chunk functionality of the Upload.\n *\n * The default value is `false`.\n */\n this.chunkable = false;\n /**\n * Enables the selection of multiple files\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-sinlge-or-multiple-files)).\n * If set to `false`, only one file can be selected at a time.\n */\n this.multiple = true;\n /**\n * Disables the Upload ([see example]({% slug disabledstate_upload %})).\n * The default value is `false`.\n */\n this.disabled = false;\n /**\n * Toggles the visibility of the file list.\n */\n this.showFileList = 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 * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Specifies the possible layout of the action buttons.\n */\n this.actionsLayout = 'end';\n /**\n * Fires when the user navigates outside the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the upload is canceled while in progress.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires when the file list is about to be cleared. If prevented, the files will not be cleared.\n */\n this.clear = new EventEmitter();\n /**\n * Fires when all active uploads are completed either successfully or with errors.\n */\n this.complete = new EventEmitter();\n /**\n * Fires when an `upload` or `remove` operation has failed.\n */\n this.error = new EventEmitter();\n /**\n * Fires when the component is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the upload of a file has been paused.\n */\n this.pause = new EventEmitter();\n /**\n * Fires when an uploaded file is about to be removed. If prevented, the files will remain in the list.\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the upload of a file has been resumed.\n */\n this.resume = new EventEmitter();\n /**\n * Fires when files are selected. If prevented, the selected files will not be added to the list.\n */\n this.select = new EventEmitter();\n /**\n * Fires when an `upload` or `remove` operation is successfully completed.\n */\n this.success = new EventEmitter();\n /**\n * Fires when one or more files are about to be uploaded. If prevented, the files will neither be uploaded, nor added to the file list.\n */\n this.upload = new EventEmitter();\n /**\n * Fires when one or more files are being uploaded.\n */\n this.uploadProgress = new EventEmitter();\n /**\n * Fires when the value of the component has changed as a result of a successful `upload`, `remove` or `clear` operation.\n */\n this.valueChange = new EventEmitter();\n this.hostDefaultClasses = true;\n /**\n * @hidden\n */\n this._restrictions = {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n };\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n validatePackage(packageMetadata);\n this.fileList = this.uploadService.files;\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n });\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n this.wrapper = wrapper.nativeElement;\n this.subscribeBlur();\n this.subscribeFocus();\n this.attachEventHandlers();\n }\n /**\n * By default, the selected files are immediately uploaded\n * ([see example]({% slug fileprocessing_upload %}#toc-automatic-upload-of-files)).\n * To change this behavior, set `autoUpload` to `false`.\n */\n set autoUpload(autoUpload) {\n this.uploadService.async.autoUpload = autoUpload;\n }\n get autoUpload() {\n return this.uploadService.async.autoUpload;\n }\n /**\n * When enabled, all files in the selection are uploaded in one request\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-batches-of-files)).\n * Any files that are selected one after the other are uploaded in separate requests.\n */\n set batch(batch) {\n this.uploadService.async.batch = batch;\n }\n get batch() {\n return this.uploadService.async.batch;\n }\n /**\n * Configures whether credentials (cookies, headers) will be sent for cross-site requests\n * ([see example]({% slug credentials_upload %}#toc-attaching-credentials-to-requests)).\n * The default values is `true`. Setting `withCredentials` has no effect on same-site requests.\n * To add credentials to the request, use the `saveHeaders` or `removeHeaders` property,\n * or the [`upload`]({% slug api_upload_uploadevent %}) event.\n */\n set withCredentials(withCredentials) {\n this.uploadService.async.withCredentials = withCredentials;\n }\n get withCredentials() {\n return this.uploadService.async.withCredentials;\n }\n /**\n * Sets the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key which contains the files submitted to `saveUrl`.\n * The default value is `files`.\n */\n set saveField(saveField) {\n this.uploadService.async.saveField = saveField;\n }\n get saveField() {\n return this.uploadService.async.saveField;\n }\n /**\n * Configures the [`HttpHeaders`](https://angular.io/api/common/http/HttpHeaders)\n * that are attached to each upload request.\n */\n set saveHeaders(saveHeaders) {\n this.uploadService.async.saveHeaders = saveHeaders;\n }\n get saveHeaders() {\n return this.uploadService.async.saveHeaders;\n }\n /**\n * Sets the [`RequestMethod`](https://angular.io/api/http/RequestMethod) of the upload request.\n * The default value is `POST`.\n */\n set saveMethod(saveMethod) {\n this.uploadService.async.saveMethod = saveMethod;\n }\n get saveMethod() {\n return this.uploadService.async.saveMethod;\n }\n /**\n * Sets the URL of the endpoint for the upload request.\n * The request [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key is named after the `saveField` property.\n * It contains the list of files to be uploaded.\n */\n set saveUrl(saveUrl) {\n this.uploadService.async.saveUrl = saveUrl;\n }\n get saveUrl() {\n return this.uploadService.async.saveUrl;\n }\n /**\n * Sets the expected [`response type`](https://angular.io/api/common/http/HttpRequest#responseType) of the server.\n * It is used to parse the response appropriately.\n * The default value is `json`.\n */\n set responseType(responseType) {\n this.uploadService.async.responseType = responseType;\n }\n get responseType() {\n return this.uploadService.async.responseType;\n }\n /**\n * Sets the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key\n * which contains the list of file names that are submitted to `removeUrl`.\n * The default value is `fileNames`.\n */\n set removeField(removeField) { this.uploadService.async.removeField = removeField; }\n get removeField() { return this.uploadService.async.removeField; }\n /**\n * Configures the [`HttpHeaders`](https://angular.io/api/common/http/HttpHeaders)\n * that are attached to each `remove` request.\n */\n set removeHeaders(removeHeaders) {\n this.uploadService.async.removeHeaders = removeHeaders;\n }\n get removeHeaders() {\n return this.uploadService.async.removeHeaders;\n }\n /**\n * Sets the [`RequestMethod`](https://angular.io/api/http/RequestMethod) of the `remove` request.\n * The default value is `POST`.\n */\n set removeMethod(removeMethod) {\n this.uploadService.async.removeMethod = removeMethod;\n }\n get removeMethod() {\n return this.uploadService.async.removeMethod;\n }\n /**\n * Sets the URL of the endpoint for the `remove` request.\n * The [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) request key is named after the `removeField` property.\n * It contains the list of file names which will be removed.\n */\n set removeUrl(removeUrl) {\n this.uploadService.async.removeUrl = removeUrl;\n }\n get removeUrl() {\n return this.uploadService.async.removeUrl;\n }\n /**\n * Specifies if the selected files are uploaded simultaneously or one by one.\n *\n * The default value is `true`.\n */\n set concurrent(concurrent) {\n this.uploadService.async.concurrent = concurrent;\n }\n get concurrent() {\n return this.uploadService.async.concurrent;\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 restrictions for selected files ([see example]({% slug api_upload_filerestrictions %})).\n */\n set restrictions(restrictions) {\n let parsedRestrictions = Object.assign({}, this._restrictions, restrictions);\n this._restrictions = parsedRestrictions;\n }\n get restrictions() {\n return this._restrictions;\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.verifySettings();\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n this.uploadService.setChunkSettings(this.chunkable);\n if (this.zoneId) {\n this.dropZoneService.addComponent(this, this.zoneId);\n }\n }\n ngOnChanges(changes) {\n if (isChanged(\"chunkable\", changes)) {\n const newChunkable = changes.chunkable.currentValue;\n if (typeof newChunkable === 'boolean') {\n this.uploadService.async.chunk = newChunkable;\n }\n if (typeof newChunkable === \"object\" && newChunkable !== null) {\n this.uploadService.async.chunk = true;\n this.uploadService.chunk = Object.assign({}, this.uploadService.chunk, newChunkable);\n }\n }\n }\n ngOnDestroy() {\n this.fileList.clear();\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n }\n if (this.wrapperFocusSubscription) {\n this.wrapperFocusSubscription.unsubscribe();\n }\n if (this.selectButtonFocusSubscription) {\n this.selectButtonFocusSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled) {\n return;\n }\n if ((event.keyCode === Keys.Enter || event.keyCode === Keys.Space) &&\n event.target === this.fileSelectButton.nativeElement) {\n event.preventDefault();\n this.fileSelect.nativeElement.click();\n return;\n }\n if (hasClasses(event.target, UPLOAD_CLASSES) ||\n (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES))) {\n this.navigation.process(event);\n }\n }\n /**\n * @hidden\n */\n writeValue(newValue) {\n let isValid = true;\n if (newValue instanceof Array) {\n newValue.forEach((file) => {\n if (!validateInitialFileInfo(file)) {\n isValid = false;\n }\n });\n if (isValid) {\n this.uploadService.addInitialFiles(newValue);\n }\n }\n if (newValue === null) {\n this.fileList.clear();\n }\n this.cdr.markForCheck();\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 selectButtonTabIndex() {\n return this.disabled ? undefined : this.tabIndex;\n }\n /**\n * @hidden\n */\n onFileSelectButtonFocus(_event) {\n this.renderer.addClass(this.fileSelectButton.nativeElement, 'k-state-focused');\n if (!this.navigation.focused) {\n this.navigation.focusedIndex = -1;\n }\n }\n /**\n * @hidden\n */\n onFileSelectButtonBlur(_event) {\n this.renderer.removeClass(this.fileSelectButton.nativeElement, 'k-state-focused');\n }\n /**\n * @hidden\n */\n get showActionButtons() {\n let areVisible = false;\n if (!this.autoUpload) {\n const hasFilesToUpload = this.fileList.filesToUpload.length > 0;\n const uploadingFiles = this.fileList.hasFileWithState([FileState.Uploading]);\n if (this.concurrent && hasFilesToUpload) {\n areVisible = true;\n }\n if (!this.concurrent && hasFilesToUpload && !uploadingFiles) {\n areVisible = true;\n }\n }\n this.navigation.actionButtonsVisible = areVisible;\n return areVisible;\n }\n /**\n * @hidden\n */\n get showTotalStatus() {\n const states = [\n FileState.Uploaded,\n FileState.Uploading,\n FileState.Failed,\n FileState.Paused\n ];\n if (this.fileList.hasFileWithState(states)) {\n return true;\n }\n return false;\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * Focuses the underlying input element.\n */\n focus() {\n setTimeout(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n /**\n * @hidden\n * @deprecated\n */\n focusComponent() {\n this.focus();\n }\n /**\n * Blurs the Upload if it was previously focused.\n */\n blur() {\n if (this.navigation.focused) {\n this.navigation.focused = false;\n document.activeElement.blur();\n this.onBlur.emit();\n }\n }\n /**\n * @hidden\n * @deprecated\n */\n blurComponent() {\n this.blur();\n }\n /**\n * Pauses the upload process of a file that is currently uploading.\n * The `pauseFileByUid` method requires the `chunkable` option of the Upload to be enabled.\n *\n * @param uid - The `uid` of the file that will be paused.\n */\n pauseFileByUid(uid) {\n this.uploadService.pauseFile(uid);\n }\n /**\n * Resumes the upload process for a file that has been previously paused.\n * The `resumeFileByUid` method requires the `chunkable` option of the Upload to be enabled.\n *\n * @param uid - The `uid` of the file that will be resumed.\n */\n resumeFileByUid(uid) {\n this.uploadService.resumeFile(uid);\n }\n /**\n * Triggers the removal of a file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files that will be removed.\n */\n removeFilesByUid(uid) {\n this.uploadService.removeFiles(uid);\n }\n /**\n * Triggers another upload attempt of an unsuccessfully uploaded file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files to be retried.\n */\n retryUploadByUid(uid) {\n this.uploadService.retryFiles(uid);\n }\n /**\n * Cancels the upload of a file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files that will be canceled.\n */\n cancelUploadByUid(uid) {\n this.uploadService.cancelFiles(uid);\n }\n /**\n * Uploads the currently selected files which pass the set restrictions.\n */\n uploadFiles() {\n if (this.fileList.filesToUpload.length) {\n this.uploadService.uploadFiles();\n }\n }\n /**\n * Visually clears all files from the UI without issuing requests to the remove handler.\n */\n clearFiles() {\n this.uploadService.clearFiles();\n }\n /**\n * @hidden\n * Used by the external dropzone to add files to the Upload\n */\n addFiles(files) {\n this.uploadService.addFiles(files);\n }\n /**\n * @hidden\n * Used to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n verifySettings() {\n if (isDevMode()) {\n if (this.batch && this.chunkable !== false) {\n throw new Error('The file chunking functionality requires the batch setting to be disabled.');\n }\n }\n }\n subscribeBlur() {\n if (!isDocumentAvailable()) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n this.documentClick = fromEvent(document, 'click').pipe(filter((event) => {\n return !(this.wrapper !== event.target && this.wrapper.contains(event.target));\n }));\n this.blurSubscription = merge(this.documentClick, this.navigation.onTab).subscribe(() => {\n if (this.navigation.focused) {\n this._ngZone.run(() => {\n this.navigation.focused = false;\n this.onTouchedCallback();\n this.onBlur.emit();\n });\n }\n });\n });\n }\n subscribeFocus() {\n this.wrapperFocusSubscription = this.navigation.onWrapperFocus.subscribe(() => {\n this.onFocus.emit();\n });\n this.selectButtonFocusSubscription = this.navigation.onSelectButtonFocus.subscribe(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n attachEventHandlers() {\n this.subs = this.uploadService.cancelEvent.subscribe((args) => {\n this.cancel.emit(args);\n });\n this.subs.add(this.uploadService.changeEvent.subscribe((files) => {\n this.onChangeCallback(files);\n this.valueChange.emit(files);\n }));\n this.subs.add(this.uploadService.clearEvent.subscribe((args) => {\n this.clear.emit(args);\n }));\n this.subs.add(this.uploadService.completeEvent.subscribe(() => {\n this.complete.emit();\n }));\n this.subs.add(this.uploadService.errorEvent.subscribe((args) => {\n this.error.emit(args);\n }));\n this.subs.add(this.uploadService.pauseEvent.subscribe((args) => {\n this.pause.emit(args);\n }));\n this.subs.add(this.uploadService.removeEvent.subscribe((args) => {\n this.remove.emit(args);\n }));\n this.subs.add(this.uploadService.resumeEvent.subscribe((args) => {\n this.resume.emit(args);\n }));\n this.subs.add(this.uploadService.selectEvent.subscribe((args) => {\n this.select.emit(args);\n }));\n this.subs.add(this.uploadService.successEvent.subscribe((args) => {\n this.success.emit(args);\n }));\n this.subs.add(this.uploadService.uploadEvent.subscribe((args) => {\n this.upload.emit(args);\n }));\n this.subs.add(this.uploadService.uploadProgressEvent.subscribe((args) => {\n this.uploadProgress.emit(args);\n }));\n }\n};\nUploadComponent.ɵfac = function UploadComponent_Factory(t) { return new (t || UploadComponent)(ɵngcc0.ɵɵdirectiveInject(UploadService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(NavigationService), ɵngcc0.ɵɵdirectiveInject(DropZoneService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nUploadComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: UploadComponent, selectors: [[\"kendo-upload\"]], contentQueries: function UploadComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, FileTemplateDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, FileInfoTemplateDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileInfoTemplate = _t.first);\n } }, viewQuery: function UploadComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileSelect = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fileSelectButton = _t.first);\n } }, hostVars: 7, hostBindings: function UploadComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function UploadComponent_keydown_HostBindingHandler($event) { return ctx.handleKeydown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dir);\n ɵngcc0.ɵɵclassProp(\"k-widget\", ctx.hostDefaultClasses)(\"k-upload\", ctx.hostDefaultClasses)(\"k-state-disabled\", ctx.hostDisabledClass);\n } }, inputs: { chunkable: \"chunkable\", multiple: \"multiple\", disabled: \"disabled\", showFileList: \"showFileList\", tabindex: \"tabindex\", focusableId: \"focusableId\", actionsLayout: \"actionsLayout\", autoUpload: \"autoUpload\", batch: \"batch\", withCredentials: \"withCredentials\", saveField: \"saveField\", saveHeaders: \"saveHeaders\", saveMethod: \"saveMethod\", saveUrl: \"saveUrl\", responseType: \"responseType\", removeField: \"removeField\", removeHeaders: \"removeHeaders\", removeMethod: \"removeMethod\", removeUrl: \"removeUrl\", concurrent: \"concurrent\", tabIndex: \"tabIndex\", restrictions: \"restrictions\", zoneId: \"zoneId\", accept: \"accept\" }, outputs: { onBlur: \"blur\", cancel: \"cancel\", clear: \"clear\", complete: \"complete\", error: \"error\", onFocus: \"focus\", pause: \"pause\", remove: \"remove\", resume: \"resume\", select: \"select\", success: \"success\", upload: \"upload\", uploadProgress: \"uploadProgress\", valueChange: \"valueChange\" }, exportAs: [\"kendoUpload\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n UPLOAD_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.upload'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => UploadComponent_1)\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 13, vars: 17, consts: function () { let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Cancel button\n * @meaning kendo.upload.cancel\n */\n const MSG_EXTERNAL_1628868291685658590$$DIST_FESM2015_INDEX_JS_24 = goog.getMsg(\"Cancel\");\n i18n_23 = MSG_EXTERNAL_1628868291685658590$$DIST_FESM2015_INDEX_JS_24;\n }\n else {\n i18n_23 = $localize `:kendo.upload.cancel|The text for the Cancel button␟262a7a2e1c2c01f72e494499e4031ca52bfb6c62␟1628868291685658590:Cancel`;\n } let i18n_25; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Clear button\n * @meaning kendo.upload.clearSelectedFiles\n */\n const MSG_EXTERNAL_3149650400352762187$$DIST_FESM2015_INDEX_JS_26 = goog.getMsg(\"Clear\");\n i18n_25 = MSG_EXTERNAL_3149650400352762187$$DIST_FESM2015_INDEX_JS_26;\n }\n else {\n i18n_25 = $localize `:kendo.upload.clearSelectedFiles|The text for the Clear button␟47d53c4c549530374586d580a1fffb90509aa114␟3149650400352762187:Clear`;\n } let i18n_27; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The drop zone hint\n * @meaning kendo.upload.dropFilesHere\n */\n const MSG_EXTERNAL_6841325639465061593$$DIST_FESM2015_INDEX_JS_28 = goog.getMsg(\"Drop files here to upload\");\n i18n_27 = MSG_EXTERNAL_6841325639465061593$$DIST_FESM2015_INDEX_JS_28;\n }\n else {\n i18n_27 = $localize `:kendo.upload.dropFilesHere|The drop zone hint␟ed0e4f0924eb8ac2dfc0a30d0852da2f0a356e8f␟6841325639465061593:Drop files here to upload`;\n } let i18n_29; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The status message for a batch of files\n * @meaning kendo.upload.filesBatchStatus\n */\n const MSG_EXTERNAL_1052757211842837603$$DIST_FESM2015_INDEX_JS_30 = goog.getMsg(\"files\");\n i18n_29 = MSG_EXTERNAL_1052757211842837603$$DIST_FESM2015_INDEX_JS_30;\n }\n else {\n i18n_29 = $localize `:kendo.upload.filesBatchStatus|The status message for a batch of files␟c6ce7b0d23357eba501fa8e17eb2e2c8ce2ca81a␟1052757211842837603:files`;\n } let i18n_31; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The status message for a batch of files after failed upload\n * @meaning kendo.upload.filesBatchStatusFailed\n */\n const MSG_EXTERNAL_5934737755327152932$$DIST_FESM2015_INDEX_JS_32 = goog.getMsg(\"files failed to upload.\");\n i18n_31 = MSG_EXTERNAL_5934737755327152932$$DIST_FESM2015_INDEX_JS_32;\n }\n else {\n i18n_31 = $localize `:kendo.upload.filesBatchStatusFailed|The status message for a batch of files after failed upload␟1b556c65fa0c566e50ca9a29984c0f2c1299f1a1␟5934737755327152932:files failed to upload.`;\n } let i18n_33; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The status message for a batch of files after successful upload\n * @meaning kendo.upload.filesBatchStatusUploaded\n */\n const MSG_EXTERNAL_4678582374156884660$$DIST_FESM2015_INDEX_JS_34 = goog.getMsg(\"files successfully uploaded.\");\n i18n_33 = MSG_EXTERNAL_4678582374156884660$$DIST_FESM2015_INDEX_JS_34;\n }\n else {\n i18n_33 = $localize `:kendo.upload.filesBatchStatusUploaded|The status message for a batch of files after successful upload␟799ee1c7cad3b2114cfbf5cdc4811d87261a2ed8␟4678582374156884660:files successfully uploaded.`;\n } let i18n_35; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The file status message after failed upload\n * @meaning kendo.upload.fileStatusFailed\n */\n const MSG_EXTERNAL_372927175642445287$$DIST_FESM2015_INDEX_JS_36 = goog.getMsg(\"File failed to upload.\");\n i18n_35 = MSG_EXTERNAL_372927175642445287$$DIST_FESM2015_INDEX_JS_36;\n }\n else {\n i18n_35 = $localize `:kendo.upload.fileStatusFailed|The file status message after failed upload␟4a3deae307b634742b5b7d7790c22e60ddd83668␟372927175642445287:File failed to upload.`;\n } let i18n_37; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The file status message after successful upload\n * @meaning kendo.upload.fileStatusUploaded\n */\n const MSG_EXTERNAL_6873833183057253097$$DIST_FESM2015_INDEX_JS_38 = goog.getMsg(\"File successfully uploaded.\");\n i18n_37 = MSG_EXTERNAL_6873833183057253097$$DIST_FESM2015_INDEX_JS_38;\n }\n else {\n i18n_37 = $localize `:kendo.upload.fileStatusUploaded|The file status message after successful upload␟967a89b151d61724cee57583e4c5f50cd5419369␟6873833183057253097:File successfully uploaded.`;\n } let i18n_39; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The header status message when the file upload is paused\n * @meaning kendo.upload.headerStatusPaused\n */\n const MSG_EXTERNAL_3443987862990095035$$DIST_FESM2015_INDEX_JS_40 = goog.getMsg(\"Paused\");\n i18n_39 = MSG_EXTERNAL_3443987862990095035$$DIST_FESM2015_INDEX_JS_40;\n }\n else {\n i18n_39 = $localize `:kendo.upload.headerStatusPaused|The header status message when the file upload is paused␟940cf4e04c5b4fd5e98b4affd35a4b2c9c3036a4␟3443987862990095035:Paused`;\n } let i18n_41; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The header status message after file upload completion\n * @meaning kendo.upload.headerStatusUploaded\n */\n const MSG_EXTERNAL_9210921126598204924$$DIST_FESM2015_INDEX_JS_42 = goog.getMsg(\"Done\");\n i18n_41 = MSG_EXTERNAL_9210921126598204924$$DIST_FESM2015_INDEX_JS_42;\n }\n else {\n i18n_41 = $localize `:kendo.upload.headerStatusUploaded|The header status message after file upload completion␟30d5eeceb66bae90056d593fcf90eecd851b36a4␟9210921126598204924:Done`;\n } let i18n_43; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The header status message during file upload\n * @meaning kendo.upload.headerStatusUploading\n */\n const MSG_EXTERNAL_6336385612571616916$$DIST_FESM2015_INDEX_JS_44 = goog.getMsg(\"Uploading...\");\n i18n_43 = MSG_EXTERNAL_6336385612571616916$$DIST_FESM2015_INDEX_JS_44;\n }\n else {\n i18n_43 = $localize `:kendo.upload.headerStatusUploading|The header status message during file upload␟be0775f64ce53906c132f6b5a50280ff5b948b35␟6336385612571616916:Uploading...`;\n } let i18n_45; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the invalid allowed extensions restriction message\n * @meaning kendo.upload.invalidFileExtension\n */\n const MSG_EXTERNAL_2924979995055776233$$DIST_FESM2015_INDEX_JS_46 = goog.getMsg(\"File type not allowed.\");\n i18n_45 = MSG_EXTERNAL_2924979995055776233$$DIST_FESM2015_INDEX_JS_46;\n }\n else {\n i18n_45 = $localize `:kendo.upload.invalidFileExtension|The text for the invalid allowed extensions restriction message␟8292c7f6c967dcade8639d0dd477a67ad08457c7␟2924979995055776233:File type not allowed.`;\n } let i18n_47; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the invalid max file size restriction message\n * @meaning kendo.upload.invalidMaxFileSize\n */\n const MSG_EXTERNAL_6669611501469754964$$DIST_FESM2015_INDEX_JS_48 = goog.getMsg(\"File size too large.\");\n i18n_47 = MSG_EXTERNAL_6669611501469754964$$DIST_FESM2015_INDEX_JS_48;\n }\n else {\n i18n_47 = $localize `:kendo.upload.invalidMaxFileSize|The text for the invalid max file size restriction message␟1d3c53a4169aceb03929a0dcdd2f4c5436aa4470␟6669611501469754964:File size too large.`;\n } let i18n_49; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the invalid min file size restriction message\n * @meaning kendo.upload.invalidMinFileSize\n */\n const MSG_EXTERNAL_4319370666600195324$$DIST_FESM2015_INDEX_JS_50 = goog.getMsg(\"File size too small.\");\n i18n_49 = MSG_EXTERNAL_4319370666600195324$$DIST_FESM2015_INDEX_JS_50;\n }\n else {\n i18n_49 = $localize `:kendo.upload.invalidMinFileSize|The text for the invalid min file size restriction message␟dde6c68c96cf06aab654c8054c516d0d12f6309a␟4319370666600195324:File size too small.`;\n } let i18n_51; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Pause button\n * @meaning kendo.upload.pause\n */\n const MSG_EXTERNAL_2303075305806756763$$DIST_FESM2015_INDEX_JS_52 = goog.getMsg(\"Pause\");\n i18n_51 = MSG_EXTERNAL_2303075305806756763$$DIST_FESM2015_INDEX_JS_52;\n }\n else {\n i18n_51 = $localize `:kendo.upload.pause|The text for the Pause button␟8a0a61519fec031579cf6b1c4f31c94578bd0981␟2303075305806756763:Pause`;\n } let i18n_53; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Remove button\n * @meaning kendo.upload.remove\n */\n const MSG_EXTERNAL_8941644637700654622$$DIST_FESM2015_INDEX_JS_54 = goog.getMsg(\"Remove\");\n i18n_53 = MSG_EXTERNAL_8941644637700654622$$DIST_FESM2015_INDEX_JS_54;\n }\n else {\n i18n_53 = $localize `:kendo.upload.remove|The text for the Remove button␟1e81e5de447f5792cd15c18c435360a7b946ac70␟8941644637700654622:Remove`;\n } let i18n_55; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Resume button\n * @meaning kendo.upload.resume\n */\n const MSG_EXTERNAL_4056147860620862675$$DIST_FESM2015_INDEX_JS_56 = goog.getMsg(\"Resume\");\n i18n_55 = MSG_EXTERNAL_4056147860620862675$$DIST_FESM2015_INDEX_JS_56;\n }\n else {\n i18n_55 = $localize `:kendo.upload.resume|The text for the Resume button␟f9ef89f76dd3d8c5a3184830d60e4d4f9c4dc998␟4056147860620862675:Resume`;\n } let i18n_57; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Retry button\n * @meaning kendo.upload.retry\n */\n const MSG_EXTERNAL_8567960350691997515$$DIST_FESM2015_INDEX_JS_58 = goog.getMsg(\"Retry\");\n i18n_57 = MSG_EXTERNAL_8567960350691997515$$DIST_FESM2015_INDEX_JS_58;\n }\n else {\n i18n_57 = $localize `:kendo.upload.retry|The text for the Retry button␟9150dfa816d23dfa75f231ca6f053f5e0ae26713␟8567960350691997515:Retry`;\n } let i18n_59; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Select button\n * @meaning kendo.upload.select\n */\n const MSG_EXTERNAL_2943392613806104166$$DIST_FESM2015_INDEX_JS_60 = goog.getMsg(\"Select files...\");\n i18n_59 = MSG_EXTERNAL_2943392613806104166$$DIST_FESM2015_INDEX_JS_60;\n }\n else {\n i18n_59 = $localize `:kendo.upload.select|The text for the Select button␟24063b06532dc5303d28524d6245ba6d3eed80c1␟2943392613806104166:Select files...`;\n } let i18n_61; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Upload files button\n * @meaning kendo.upload.uploadSelectedFiles\n */\n const MSG_EXTERNAL_4936937427147701307$$DIST_FESM2015_INDEX_JS_62 = goog.getMsg(\"Upload\");\n i18n_61 = MSG_EXTERNAL_4936937427147701307$$DIST_FESM2015_INDEX_JS_62;\n }\n else {\n i18n_61 = $localize `:kendo.upload.uploadSelectedFiles|The text for the Upload files button␟3449491aa76964a8dceb9ed3957b6fc4c17f568f␟4936937427147701307:Upload`;\n } return [[\"kendoUploadLocalizedMessages\", \"\", \"cancel\", i18n_23, \"clearSelectedFiles\", i18n_25, \"dropFilesHere\", i18n_27, \"filesBatchStatus\", i18n_29, \"filesBatchStatusFailed\", i18n_31, \"filesBatchStatusUploaded\", i18n_33, \"fileStatusFailed\", i18n_35, \"fileStatusUploaded\", i18n_37, \"headerStatusPaused\", i18n_39, \"headerStatusUploaded\", i18n_41, \"headerStatusUploading\", i18n_43, \"invalidFileExtension\", i18n_45, \"invalidMaxFileSize\", i18n_47, \"invalidMinFileSize\", i18n_49, \"pause\", i18n_51, \"remove\", i18n_53, \"resume\", i18n_55, \"retry\", i18n_57, \"select\", i18n_59, \"uploadSelectedFiles\", i18n_61], [\"kendoUploadInternalDropZone\", \"\", 3, \"restrictions\", \"multiple\", \"disabled\"], [\"role\", \"button\", 1, \"k-button\", \"k-upload-button\", 3, \"id\", \"focus\", \"blur\"], [\"fileSelectButton\", \"\"], [\"kendoFileSelect\", \"\", 3, \"dir\", \"restrictions\", \"multiple\", \"disabled\"], [\"fileSelect\", \"\"], [\"class\", \"k-upload-status k-upload-status-total\", 3, \"fileList\", 4, \"ngIf\"], [1, \"k-dropzone-hint\"], [\"kendo-upload-file-list\", \"\", \"class\", \"k-upload-files k-reset\", 3, \"disabled\", \"fileList\", \"fileTemplate\", \"fileInfoTemplate\", 4, \"ngIf\"], [3, \"disabled\", \"actionsLayout\", 4, \"ngIf\"], [1, \"k-upload-status\", \"k-upload-status-total\", 3, \"fileList\"], [\"kendo-upload-file-list\", \"\", 1, \"k-upload-files\", \"k-reset\", 3, \"disabled\", \"fileList\", \"fileTemplate\", \"fileInfoTemplate\"], [3, \"disabled\", \"actionsLayout\"]]; }, template: function UploadComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2, 3);\n ɵngcc0.ɵɵlistener(\"focus\", function UploadComponent_Template_div_focus_2_listener($event) { return ctx.onFileSelectButtonFocus($event); })(\"blur\", function UploadComponent_Template_div_blur_2_listener($event) { return ctx.onFileSelectButtonBlur($event); });\n ɵngcc0.ɵɵelement(4, \"input\", 4, 5);\n ɵngcc0.ɵɵelementStart(6, \"span\");\n ɵngcc0.ɵɵtext(7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, UploadComponent_kendo_upload_status_total_8_Template, 1, 1, \"kendo-upload-status-total\", 6);\n ɵngcc0.ɵɵelementStart(9, \"div\", 7);\n ɵngcc0.ɵɵtext(10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(11, UploadComponent_ul_11_Template, 1, 4, \"ul\", 8);\n ɵngcc0.ɵɵtemplate(12, UploadComponent_kendo_upload_action_buttons_12_Template, 1, 2, \"kendo-upload-action-buttons\", 9);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"restrictions\", ctx.restrictions)(\"multiple\", ctx.multiple)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx.focusableId);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.textFor(\"select\"))(\"tabindex\", ctx.selectButtonTabIndex);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"dir\", ctx.direction)(\"restrictions\", ctx.restrictions)(\"multiple\", ctx.multiple)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵattribute(\"accept\", ctx.accept ? ctx.accept : null)(\"aria-hidden\", true);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"select\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showTotalStatus);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"dropFilesHere\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showFileList && ctx.fileList.count > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showActionButtons);\n } }, directives: function () { return [LocalizedMessagesDirective, DropZoneInternalDirective, FileSelectDirective, ɵngcc3.NgIf, UploadStatusTotalComponent, FileListComponent, UploadActionButtonsComponent]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], UploadComponent.prototype, \"autoUpload\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], UploadComponent.prototype, \"batch\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], UploadComponent.prototype, \"withCredentials\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], UploadComponent.prototype, \"saveField\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", HttpHeaders),\n __metadata(\"design:paramtypes\", [HttpHeaders])\n], UploadComponent.prototype, \"saveHeaders\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], UploadComponent.prototype, \"saveMethod\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], UploadComponent.prototype, \"saveUrl\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], UploadComponent.prototype, \"responseType\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], UploadComponent.prototype, \"removeField\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", HttpHeaders),\n __metadata(\"design:paramtypes\", [HttpHeaders])\n], UploadComponent.prototype, \"removeHeaders\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], UploadComponent.prototype, \"removeMethod\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [String])\n], UploadComponent.prototype, \"removeUrl\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], UploadComponent.prototype, \"chunkable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [Boolean])\n], UploadComponent.prototype, \"concurrent\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], UploadComponent.prototype, \"multiple\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], UploadComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], UploadComponent.prototype, \"showFileList\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], UploadComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], UploadComponent.prototype, \"zoneId\", void 0);\n__decorate([\n Input('tabIndex'),\n __metadata(\"design:type\", Number),\n __metadata(\"design:paramtypes\", [Number])\n], UploadComponent.prototype, \"tabIndex\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], UploadComponent.prototype, \"accept\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [Object])\n], UploadComponent.prototype, \"restrictions\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], UploadComponent.prototype, \"focusableId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], UploadComponent.prototype, \"actionsLayout\", void 0);\n__decorate([\n ContentChild(FileTemplateDirective, { static: false }),\n __metadata(\"design:type\", FileTemplateDirective)\n], UploadComponent.prototype, \"fileTemplate\", void 0);\n__decorate([\n ContentChild(FileInfoTemplateDirective, { static: false }),\n __metadata(\"design:type\", FileInfoTemplateDirective)\n], UploadComponent.prototype, \"fileInfoTemplate\", void 0);\n__decorate([\n ViewChild('fileSelect', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], UploadComponent.prototype, \"fileSelect\", void 0);\n__decorate([\n ViewChild('fileSelectButton', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], UploadComponent.prototype, \"fileSelectButton\", void 0);\n__decorate([\n Output('blur'),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"cancel\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"clear\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"complete\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"error\", void 0);\n__decorate([\n Output('focus'),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"pause\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"remove\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"resume\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"select\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"success\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"upload\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"uploadProgress\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], UploadComponent.prototype, \"valueChange\", void 0);\n__decorate([\n HostBinding('class.k-widget'),\n HostBinding('class.k-upload'),\n __metadata(\"design:type\", Boolean)\n], UploadComponent.prototype, \"hostDefaultClasses\", void 0);\n__decorate([\n HostBinding('class.k-state-disabled'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], UploadComponent.prototype, \"hostDisabledClass\", null);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], UploadComponent.prototype, \"dir\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], UploadComponent.prototype, \"handleKeydown\", null);\nUploadComponent = UploadComponent_1 = __decorate([ __metadata(\"design:paramtypes\", [UploadService,\n LocalizationService,\n NavigationService,\n DropZoneService,\n NgZone,\n Renderer2,\n ChangeDetectorRef,\n ElementRef])\n], UploadComponent);\n\nlet UploadDropZoneDirective = class UploadDropZoneDirective {\n constructor(dropZoneService) {\n this.dropZoneService = dropZoneService;\n }\n /**\n * @hidden\n */\n onElementDragEnter() {\n return false;\n }\n /**\n * @hidden\n */\n onElementDragOver() {\n return false;\n }\n /**\n * @hidden\n */\n onDropListener(event) {\n const components = this.componentInstance;\n if (!isPresent(components)) {\n return;\n }\n components.forEach((component) => {\n let droppedFiles = event.dataTransfer.files;\n if (droppedFiles.length > 0 && !component.disabled) {\n let files = getAllFileInfo(droppedFiles);\n if (component instanceof UploadComponent) {\n files = assignGuidToFiles(files, !component.batch);\n }\n else {\n files = assignGuidToFiles(files, true);\n }\n if (!component.multiple) {\n files.splice(1, files.length - 1);\n component.clearFiles();\n }\n validateFiles(files, component.restrictions);\n component.addFiles(files);\n }\n });\n return false;\n }\n /**\n * @hidden\n */\n get componentInstance() {\n return this.dropZoneService.getComponents(this.zoneId);\n }\n};\nUploadDropZoneDirective.ɵfac = function UploadDropZoneDirective_Factory(t) { return new (t || UploadDropZoneDirective)(ɵngcc0.ɵɵdirectiveInject(DropZoneService)); };\nUploadDropZoneDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: UploadDropZoneDirective, selectors: [[\"\", \"kendoUploadDropZone\", \"\"], [\"\", \"kendoFileSelectDropZone\", \"\"]], hostBindings: function UploadDropZoneDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"dragenter\", function UploadDropZoneDirective_dragenter_HostBindingHandler() { return ctx.onElementDragEnter(); })(\"dragover\", function UploadDropZoneDirective_dragover_HostBindingHandler() { return ctx.onElementDragOver(); })(\"drop\", function UploadDropZoneDirective_drop_HostBindingHandler($event) { return ctx.onDropListener($event); });\n } }, inputs: { zoneId: [\"kendoUploadDropZone\", \"zoneId\"] }, features: [ɵngcc0.ɵɵProvidersFeature([\n DropZoneService\n ])] });\n__decorate([\n Input('kendoUploadDropZone'),\n __metadata(\"design:type\", String)\n], UploadDropZoneDirective.prototype, \"zoneId\", void 0);\n__decorate([\n HostListener('dragenter'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Boolean)\n], UploadDropZoneDirective.prototype, \"onElementDragEnter\", null);\n__decorate([\n HostListener('dragover'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Boolean)\n], UploadDropZoneDirective.prototype, \"onElementDragOver\", null);\n__decorate([\n HostListener('drop', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Boolean)\n], UploadDropZoneDirective.prototype, \"onDropListener\", null);\nUploadDropZoneDirective = __decorate([ __metadata(\"design:paramtypes\", [DropZoneService])\n], UploadDropZoneDirective);\n\n/* tslint:disable: no-use-before-declare */\n/**\n * Represents the [Kendo UI UploadDropZone component for Angular]({% slug overview_upload %}).\n */\nlet UploadDropZoneComponent = class UploadDropZoneComponent extends DropZoneBase {\n constructor(element, renderer, localization) {\n super(element, renderer, 'k-external-dropzone-hover');\n this.localization = localization;\n this.hostClass = true;\n this.localizationChangeSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get dirAttribute() {\n return this.direction;\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get iconClasses() {\n if (this.icon) {\n return `k-icon k-i-${this.icon}`;\n }\n if (this.iconClass) {\n return `${this.iconClass}`;\n }\n return 'k-icon k-i-upload';\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n};\nUploadDropZoneComponent.ɵfac = function UploadDropZoneComponent_Factory(t) { return new (t || UploadDropZoneComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nUploadDropZoneComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: UploadDropZoneComponent, selectors: [[\"kendo-uploaddropzone\"]], hostVars: 3, hostBindings: function UploadDropZoneComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx.dirAttribute);\n ɵngcc0.ɵɵclassProp(\"k-external-dropzone\", ctx.hostClass);\n } }, inputs: { zoneId: \"zoneId\", icon: \"icon\", iconClass: \"iconClass\" }, exportAs: [\"kendoUploadDropZone\"], features: [ɵngcc0.ɵɵProvidersFeature([\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.uploaddropzone'\n }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c65, decls: 7, vars: 3, consts: function () { let i18n_63; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc Sets the external drop-zone hint\n * @meaning kendo.uploaddropzone.externalDropFilesHere\n */\n const MSG_EXTERNAL_4908353240416682626$$DIST_FESM2015_INDEX_JS_64 = goog.getMsg(\"Drag and drop files here to upload\");\n i18n_63 = MSG_EXTERNAL_4908353240416682626$$DIST_FESM2015_INDEX_JS_64;\n }\n else {\n i18n_63 = $localize `:kendo.uploaddropzone.externalDropFilesHere|Sets the external drop-zone hint␟0b9299bc1023ea6dce824348625df34e3ca92374␟4908353240416682626:Drag and drop files here to upload`;\n } return [[\"kendoUploadDropZoneLocalizedMessages\", \"\", \"externalDropFilesHere\", i18n_63], [1, \"k-dropzone-inner\", 3, \"kendoUploadDropZone\"], [3, \"ngClass\"], [1, \"k-dropzone-hint\"], [1, \"k-dropzone-note\"]]; }, template: function UploadDropZoneComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementContainer(0, 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementStart(3, \"span\", 3);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"span\", 4);\n ɵngcc0.ɵɵprojection(6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"kendoUploadDropZone\", ctx.zoneId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.iconClasses);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.textFor(\"externalDropFilesHere\"));\n } }, directives: [LocalizedMessagesDirective, UploadDropZoneDirective, ɵngcc3.NgClass], encapsulation: 2 });\n__decorate([\n HostBinding('class.k-external-dropzone'),\n __metadata(\"design:type\", Boolean)\n], UploadDropZoneComponent.prototype, \"hostClass\", void 0);\n__decorate([\n HostBinding('attr.dir'),\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], UploadDropZoneComponent.prototype, \"dirAttribute\", null);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], UploadDropZoneComponent.prototype, \"zoneId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], UploadDropZoneComponent.prototype, \"icon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], UploadDropZoneComponent.prototype, \"iconClass\", void 0);\nUploadDropZoneComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n Renderer2,\n LocalizationService])\n], UploadDropZoneComponent);\n\n/**\n * @hidden\n */\nconst SHARED_DECLARATIONS = [\n DropZoneInternalDirective,\n FileListComponent,\n FileListItemDirective,\n FileListItemActionButtonComponent,\n FileListMultipleItemsComponent,\n FileListSingleItemComponent,\n FileSelectDirective,\n LocalizedMessagesDirective,\n TemplateContextDirective\n];\n/**\n * @hidden\n */\nconst PUBLIC_DIRECTIVES = [\n FileTemplateDirective,\n FileInfoTemplateDirective,\n CustomMessagesComponent,\n UploadDropZoneDirective,\n UploadDropZoneComponent\n];\n/**\n * @hidden\n */\nlet SharedModule = class SharedModule {\n};\nSharedModule.ɵfac = function SharedModule_Factory(t) { return new (t || SharedModule)(); };\nSharedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: SharedModule });\nSharedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule], CommonModule] });\n\nconst FILESELECT_DECLARATIONS = [\n FileSelectComponent\n];\n/**\n * Represents the [NgModule](https://angular.io/api/core/NgModule) definition for the FileSelect component.\n */\nlet FileSelectModule = class FileSelectModule {\n};\nFileSelectModule.ɵfac = function FileSelectModule_Factory(t) { return new (t || FileSelectModule)(); };\nFileSelectModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FileSelectModule });\nFileSelectModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule]] });\n\n/**\n * @hidden\n */\nlet UploadActionButtonsComponent = class UploadActionButtonsComponent {\n constructor(uploadService, localization, navigation) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.hostDefaultClass = true;\n this.onAction();\n this.onFocus();\n }\n get actionButtonsEndClassName() {\n return this.actionsLayout === 'end';\n }\n get actionButtonsStretchedClassName() {\n return this.actionsLayout === 'stretched';\n }\n get actionButtonsStartClassName() {\n return this.actionsLayout === 'start';\n }\n get actionButtonsCenterClassName() {\n return this.actionsLayout === 'center';\n }\n onAction() {\n this.actionSubscription = this.navigation.onActionButtonAction.subscribe((button) => {\n if (button === \"clear\") {\n this.clearFiles();\n }\n else {\n this.performUpload();\n }\n this.navigation.focusSelectButton();\n });\n }\n onFocus() {\n this.focusSubscription = this.navigation.onActionButtonFocus.subscribe((button) => {\n this.focusButton(button);\n });\n }\n focusButton(button) {\n const el = (button === \"clear\") ? this.clearButton : this.uploadButton;\n el.nativeElement.focus();\n }\n ngOnDestroy() {\n this.actionSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n performUpload(_event) {\n if (!this.disabled) {\n this.uploadService.uploadFiles();\n }\n }\n clearFiles(_event) {\n if (!this.disabled) {\n this.uploadService.clearFiles();\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n};\nUploadActionButtonsComponent.ɵfac = function UploadActionButtonsComponent_Factory(t) { return new (t || UploadActionButtonsComponent)(ɵngcc0.ɵɵdirectiveInject(UploadService), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService), ɵngcc0.ɵɵdirectiveInject(NavigationService)); };\nUploadActionButtonsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: UploadActionButtonsComponent, selectors: [[\"kendo-upload-action-buttons\"]], viewQuery: function UploadActionButtonsComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c66, 7);\n ɵngcc0.ɵɵviewQuery(_c67, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.clearButton = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.uploadButton = _t.first);\n } }, hostVars: 10, hostBindings: function UploadActionButtonsComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"k-actions\", ctx.hostDefaultClass)(\"k-actions-end\", ctx.actionButtonsEndClassName)(\"k-actions-stretched\", ctx.actionButtonsStretchedClassName)(\"k-actions-start\", ctx.actionButtonsStartClassName)(\"k-actions-center\", ctx.actionButtonsCenterClassName);\n } }, inputs: { disabled: \"disabled\", actionsLayout: \"actionsLayout\" }, decls: 6, vars: 4, consts: [[\"type\", \"button\", 1, \"k-button\", \"k-clear-selected\", 3, \"click\"], [\"clearButton\", \"\"], [\"type\", \"button\", 1, \"k-button\", \"k-primary\", \"k-upload-selected\", 3, \"click\"], [\"uploadButton\", \"\"]], template: function UploadActionButtonsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function UploadActionButtonsComponent_Template_button_click_0_listener($event) { return ctx.clearFiles($event); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"button\", 2, 3);\n ɵngcc0.ɵɵlistener(\"click\", function UploadActionButtonsComponent_Template_button_click_3_listener($event) { return ctx.performUpload($event); });\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"clearSelectedFiles\"), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabIndex\", -1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"uploadSelectedFiles\"), \" \");\n } }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], UploadActionButtonsComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], UploadActionButtonsComponent.prototype, \"actionsLayout\", void 0);\n__decorate([\n ViewChild('clearButton', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], UploadActionButtonsComponent.prototype, \"clearButton\", void 0);\n__decorate([\n ViewChild('uploadButton', { static: true }),\n __metadata(\"design:type\", ElementRef)\n], UploadActionButtonsComponent.prototype, \"uploadButton\", void 0);\n__decorate([\n HostBinding('class.k-actions'),\n __metadata(\"design:type\", Boolean)\n], UploadActionButtonsComponent.prototype, \"hostDefaultClass\", void 0);\n__decorate([\n HostBinding('class.k-actions-end'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], UploadActionButtonsComponent.prototype, \"actionButtonsEndClassName\", null);\n__decorate([\n HostBinding('class.k-actions-stretched'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], UploadActionButtonsComponent.prototype, \"actionButtonsStretchedClassName\", null);\n__decorate([\n HostBinding('class.k-actions-start'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], UploadActionButtonsComponent.prototype, \"actionButtonsStartClassName\", null);\n__decorate([\n HostBinding('class.k-actions-center'),\n __metadata(\"design:type\", Boolean),\n __metadata(\"design:paramtypes\", [])\n], UploadActionButtonsComponent.prototype, \"actionButtonsCenterClassName\", null);\nUploadActionButtonsComponent = __decorate([ __metadata(\"design:paramtypes\", [UploadService,\n LocalizationService,\n NavigationService])\n], UploadActionButtonsComponent);\n\n/**\n * @hidden\n */\nlet UploadStatusTotalComponent = class UploadStatusTotalComponent {\n constructor(localization) {\n this.localization = localization;\n }\n ngDoCheck() {\n this.isPaused = this.fileList.hasFileWithState([FileState.Paused]);\n this.isFailed = this.fileList.hasFileWithState([FileState.Failed]);\n this.isUploading = this.fileList.hasFileWithState([FileState.Uploading]);\n if (this.isPaused && !this.isUploading) {\n this.statusText = this.localization.get('headerStatusPaused');\n }\n else {\n this.statusText = this.isUploading ? this.localization.get('headerStatusUploading')\n : this.localization.get('headerStatusUploaded');\n }\n }\n};\nUploadStatusTotalComponent.ɵfac = function UploadStatusTotalComponent_Factory(t) { return new (t || UploadStatusTotalComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LocalizationService)); };\nUploadStatusTotalComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: UploadStatusTotalComponent, selectors: [[\"kendo-upload-status-total\"]], inputs: { fileList: \"fileList\" }, decls: 2, vars: 7, consts: [[1, \"k-icon\", 3, \"ngClass\"]], template: function UploadStatusTotalComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 0);\n ɵngcc0.ɵɵtext(1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction4(2, _c68, !ctx.isUploading && !ctx.isFailed, !ctx.isUploading && ctx.isFailed, ctx.isUploading, ctx.isPaused));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.statusText, \" \");\n } }, directives: [ɵngcc3.NgClass], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", FileMap)\n], UploadStatusTotalComponent.prototype, \"fileList\", void 0);\nUploadStatusTotalComponent = __decorate([ __metadata(\"design:paramtypes\", [LocalizationService])\n], UploadStatusTotalComponent);\n\nconst UPLOAD_DECLARATIONS = [\n UploadComponent,\n UploadActionButtonsComponent,\n UploadStatusTotalComponent\n];\n/**\n * Represents the [NgModule](https://angular.io/api/core/NgModule) definition for the Upload component.\n */\nlet UploadModule = class UploadModule {\n};\nUploadModule.ɵfac = function UploadModule_Factory(t) { return new (t || UploadModule)(); };\nUploadModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: UploadModule });\nUploadModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[SharedModule]] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Uploads components.\n *\n * @example\n *\n * ```ts-no-run\n * import { UploadsModule } from '@progress/kendo-angular-upload';\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, UploadsModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet UploadsModule = class UploadsModule {\n};\nUploadsModule.ɵfac = function UploadsModule_Factory(t) { return new (t || UploadsModule)(); };\nUploadsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: UploadsModule });\nUploadsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [FileSelectModule, UploadModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UploadService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.HttpClient }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationService, [{\n type: Injectable\n }], function () { return [{ type: UploadService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileTemplate], [kendoFileSelectFileTemplate]' // tslint:disable-line:directive-selector-prefix\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropZoneService, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileInfoTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileInfoTemplate], [kendoFileSelectFileInfoTemplate]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileSelectComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoFileSelect',\n providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n FILESELECT_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.fileselect'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FileSelectComponent_1)\n }\n ],\n selector: 'kendo-fileselect',\n template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n `\n }]\n }], function () { return [{ type: UploadService }, { type: ɵngcc2.LocalizationService }, { type: NavigationService }, { type: DropZoneService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], showFileList: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], select: [{\n type: Output\n }], remove: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], hostDefaultClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-upload']\n }], name: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], \n /**\n * @hidden\n */\n handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], accept: [{\n type: Input\n }], zoneId: [{\n type: Input\n }], fileTemplate: [{\n type: ContentChild,\n args: [FileTemplateDirective, { static: false }]\n }], fileInfoTemplate: [{\n type: ContentChild,\n args: [FileInfoTemplateDirective, { static: false }]\n }], fileSelect: [{\n type: ViewChild,\n args: ['fileSelect', { static: true }]\n }], fileSelectButton: [{\n type: ViewChild,\n args: ['fileSelectButton', { static: true }]\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomMessagesComponent, [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: 'kendo-upload-messages, kendo-fileselect-messages, kendo-uploaddropzone-messages',\n template: ``\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, null); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DropZoneInternalDirective, [{\n type: Directive,\n args: [{\n selector: `\n [kendoUploadInternalDropZone],\n [kendoFileSelectInternalDropZone]\n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: UploadService }]; }, { initialClassName: [{\n type: HostBinding,\n args: ['class.k-dropzone']\n }], onDropListener: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }], disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], restrictions: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileListItemDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileListItem]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: NavigationService }, { type: UploadService }]; }, { fileClass: [{\n type: HostBinding,\n args: ['class.k-file']\n }], uidAttribute: [{\n type: HostBinding,\n args: ['attr.data-uid']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], kFileError: [{\n type: HostBinding,\n args: ['class.k-file-error']\n }], kFileInvalid: [{\n type: HostBinding,\n args: ['class.k-file-invalid']\n }], kFileProgress: [{\n type: HostBinding,\n args: ['class.k-file-progress']\n }], kFileSuccess: [{\n type: HostBinding,\n args: ['class.k-file-success']\n }], kStateFocused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], onFocus: [{\n type: HostListener,\n args: [\"focus\"]\n }], onBlur: [{\n type: HostListener,\n args: [\"blur\"]\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], files: [{\n type: Input\n }], index: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileListComponent, [{\n type: Component,\n args: [{\n selector: '[kendo-upload-file-list]',\n template: `\n \n
  • \n \n \n \n \n \n
  • \n
    \n `\n }]\n }], function () { return [{ type: UploadService }, { type: NavigationService }]; }, { disabled: [{\n type: Input\n }], fileList: [{\n type: Input\n }], fileTemplate: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }], fileListItems: [{\n type: ViewChildren,\n args: [FileListItemDirective]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileListItemActionButtonComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-upload-file-list-item-action-button',\n template: `\n \n {{progress}}%\n\n \n\n \n\n \n \n `\n }]\n }], function () { return [{ type: UploadService }, { type: ɵngcc2.LocalizationService }]; }, { file: [{\n type: Input\n }], disabled: [{\n type: Input\n }], progress: [{\n type: Input\n }] }); })();\n\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileListMultipleItemsComponent, [{\n type: Component,\n args: [{\n animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ],\n selector: 'kendo-upload-file-list-multiple-items',\n template: `\n
    \n \n
    \n \n \n \n \n \n \n \n {{file.name}}\n \n {{fileStatusText(file)}}\n \n {{batchStatusText}}\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }, { type: UploadService }]; }, { disabled: [{\n type: Input\n }], files: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileListSingleItemComponent, [{\n type: Component,\n args: [{\n animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ],\n selector: 'kendo-upload-file-list-single-item',\n template: `\n
    \n \n
    \n \n \n \n \n \n {{ file.name }}\n {{fileStatusText}}\n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }, { type: UploadService }]; }, { disabled: [{\n type: Input\n }], file: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileSelectDirective, [{\n type: Directive,\n args: [{\n selector: '[kendoFileSelect]'\n }]\n }], function () { return [{ type: UploadService }, { type: NavigationService }, { type: ɵngcc0.ElementRef }]; }, { type: [{\n type: HostBinding,\n args: [\"attr.type\"]\n }], autocomplete: [{\n type: HostBinding,\n args: [\"attr.autocomplete\"]\n }], tabIndex: [{\n type: HostBinding,\n args: [\"attr.tabindex\"]\n }], nameAttribute: [{\n type: HostBinding,\n args: [\"attr.name\"]\n }], multipleAttribute: [{\n type: HostBinding,\n args: [\"attr.multiple\"]\n }], dirAttribute: [{\n type: HostBinding,\n args: [\"attr.dir\"]\n }], disabledAttribute: [{\n type: HostBinding,\n args: [\"attr.disabled\"]\n }], onInputChange: [{\n type: HostListener,\n args: [\"change\", [\"$event\"]]\n }], dir: [{\n type: Input\n }], disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], restrictions: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizedMessagesDirective, [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective_1) // tslint:disable-line:no-forward-ref\n }\n ],\n selector: `\n [kendoUploadLocalizedMessages],\n [kendoFileSelectLocalizedMessages],\n [kendoUploadDropZoneLocalizedMessages]\n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplateContextDirective, [{\n type: Directive,\n args: [{\n selector: '[templateContext]' // tslint:disable-line:directive-selector\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { templateContext: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UploadComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoUpload',\n providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n UPLOAD_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.upload'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => UploadComponent_1)\n }\n ],\n selector: 'kendo-upload',\n template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n \n \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n class=\"k-upload-files k-reset\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n \n \n `\n }]\n }], function () { return [{ type: UploadService }, { type: ɵngcc2.LocalizationService }, { type: NavigationService }, { type: DropZoneService }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { chunkable: [{\n type: Input\n }], multiple: [{\n type: Input\n }], disabled: [{\n type: Input\n }], showFileList: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], cancel: [{\n type: Output\n }], clear: [{\n type: Output\n }], complete: [{\n type: Output\n }], error: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], pause: [{\n type: Output\n }], remove: [{\n type: Output\n }], resume: [{\n type: Output\n }], select: [{\n type: Output\n }], success: [{\n type: Output\n }], upload: [{\n type: Output\n }], uploadProgress: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], hostDefaultClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-upload']\n }], autoUpload: [{\n type: Input\n }], batch: [{\n type: Input\n }], withCredentials: [{\n type: Input\n }], saveField: [{\n type: Input\n }], saveHeaders: [{\n type: Input\n }], saveMethod: [{\n type: Input\n }], saveUrl: [{\n type: Input\n }], responseType: [{\n type: Input\n }], removeField: [{\n type: Input\n }], removeHeaders: [{\n type: Input\n }], removeMethod: [{\n type: Input\n }], removeUrl: [{\n type: Input\n }], concurrent: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: ['tabIndex']\n }], restrictions: [{\n type: Input\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], \n /**\n * @hidden\n */\n handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], zoneId: [{\n type: Input\n }], accept: [{\n type: Input\n }], fileTemplate: [{\n type: ContentChild,\n args: [FileTemplateDirective, { static: false }]\n }], fileInfoTemplate: [{\n type: ContentChild,\n args: [FileInfoTemplateDirective, { static: false }]\n }], fileSelect: [{\n type: ViewChild,\n args: ['fileSelect', { static: true }]\n }], fileSelectButton: [{\n type: ViewChild,\n args: ['fileSelectButton', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UploadDropZoneDirective, [{\n type: Directive,\n args: [{\n providers: [\n DropZoneService\n ],\n selector: '[kendoUploadDropZone], [kendoFileSelectDropZone]'\n }]\n }], function () { return [{ type: DropZoneService }]; }, { \n /**\n * @hidden\n */\n onElementDragEnter: [{\n type: HostListener,\n args: ['dragenter']\n }], \n /**\n * @hidden\n */\n onElementDragOver: [{\n type: HostListener,\n args: ['dragover']\n }], \n /**\n * @hidden\n */\n onDropListener: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }], zoneId: [{\n type: Input,\n args: ['kendoUploadDropZone']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UploadDropZoneComponent, [{\n type: Component,\n args: [{\n exportAs: 'kendoUploadDropZone',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.uploaddropzone'\n }\n ],\n selector: 'kendo-uploaddropzone',\n template: `\n \n \n
    \n \n {{ textFor('externalDropFilesHere') }}\n \n \n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.LocalizationService }]; }, { hostClass: [{\n type: HostBinding,\n args: ['class.k-external-dropzone']\n }], dirAttribute: [{\n type: HostBinding,\n args: ['attr.dir']\n }], zoneId: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SharedModule, [{\n type: NgModule,\n args: [{\n declarations: [\n PUBLIC_DIRECTIVES,\n SHARED_DECLARATIONS\n ],\n exports: [\n PUBLIC_DIRECTIVES,\n SHARED_DECLARATIONS,\n CommonModule\n ],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SharedModule, { declarations: function () { return [FileTemplateDirective, FileInfoTemplateDirective, CustomMessagesComponent, UploadDropZoneDirective, UploadDropZoneComponent, DropZoneInternalDirective, FileListComponent, FileListItemDirective, FileListItemActionButtonComponent, FileListMultipleItemsComponent, FileListSingleItemComponent, FileSelectDirective, LocalizedMessagesDirective, TemplateContextDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [FileTemplateDirective, FileInfoTemplateDirective, CustomMessagesComponent, UploadDropZoneDirective, UploadDropZoneComponent, DropZoneInternalDirective, FileListComponent, FileListItemDirective, FileListItemActionButtonComponent, FileListMultipleItemsComponent, FileListSingleItemComponent, FileSelectDirective, LocalizedMessagesDirective, TemplateContextDirective, CommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileSelectModule, [{\n type: NgModule,\n args: [{\n declarations: [FILESELECT_DECLARATIONS],\n exports: [\n PUBLIC_DIRECTIVES,\n FILESELECT_DECLARATIONS\n ],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FileSelectModule, { declarations: [FileSelectComponent], imports: [SharedModule], exports: [FileTemplateDirective, FileInfoTemplateDirective, CustomMessagesComponent, UploadDropZoneDirective, UploadDropZoneComponent, FileSelectComponent] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UploadActionButtonsComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-upload-action-buttons',\n template: `\n \n \n `\n }]\n }], function () { return [{ type: UploadService }, { type: ɵngcc2.LocalizationService }, { type: NavigationService }]; }, { hostDefaultClass: [{\n type: HostBinding,\n args: ['class.k-actions']\n }], actionButtonsEndClassName: [{\n type: HostBinding,\n args: ['class.k-actions-end']\n }], actionButtonsStretchedClassName: [{\n type: HostBinding,\n args: ['class.k-actions-stretched']\n }], actionButtonsStartClassName: [{\n type: HostBinding,\n args: ['class.k-actions-start']\n }], actionButtonsCenterClassName: [{\n type: HostBinding,\n args: ['class.k-actions-center']\n }], disabled: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], clearButton: [{\n type: ViewChild,\n args: ['clearButton', { static: true }]\n }], uploadButton: [{\n type: ViewChild,\n args: ['uploadButton', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UploadStatusTotalComponent, [{\n type: Component,\n args: [{\n selector: 'kendo-upload-status-total',\n template: `\n \n \n {{statusText}}\n `\n }]\n }], function () { return [{ type: ɵngcc2.LocalizationService }]; }, { fileList: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UploadModule, [{\n type: NgModule,\n args: [{\n declarations: [UPLOAD_DECLARATIONS],\n exports: [\n PUBLIC_DIRECTIVES,\n UPLOAD_DECLARATIONS\n ],\n imports: [SharedModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(UploadModule, { declarations: [UploadComponent, UploadActionButtonsComponent, UploadStatusTotalComponent], imports: [SharedModule], exports: [FileTemplateDirective, FileInfoTemplateDirective, CustomMessagesComponent, UploadDropZoneDirective, UploadDropZoneComponent, UploadComponent, UploadActionButtonsComponent, UploadStatusTotalComponent] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UploadsModule, [{\n type: NgModule,\n args: [{\n exports: [\n FileSelectModule,\n UploadModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(UploadsModule, { exports: [FileSelectModule, UploadModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DropZoneBase, DropZoneInternalDirective, DropZoneService, PreventableEvent, FILESELECT_VALUE_ACCESSOR, LocalizedMessagesDirective, Messages, NavigationService, FileListItemDirective, FileListItemBase, PUBLIC_DIRECTIVES, SHARED_DECLARATIONS, SharedModule, UPLOAD_VALUE_ACCESSOR, UploadService, FileSelectModule, UploadModule, UploadsModule, UploadComponent, FileSelectComponent, UploadDropZoneComponent, FileSelectDirective, FileListComponent, FileListSingleItemComponent, FileListItemActionButtonComponent, FileListMultipleItemsComponent, FileTemplateDirective, FileInfoTemplateDirective, TemplateContextDirective, UploadStatusTotalComponent, UploadActionButtonsComponent, UploadDropZoneDirective, CustomMessagesComponent, CancelEvent, ClearEvent, ErrorEvent, PauseEvent, RemoveEvent, ResumeEvent, SelectEvent, SuccessEvent, UploadEvent, UploadProgressEvent, FileState };\n\n","export const ARC = \"arc\";\nexport const AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport const BLACK = \"#000\";\nexport const BOTTOM = \"bottom\";\nexport const CENTER = \"center\";\nexport const CIRCLE = \"circle\";\nexport const COORD_PRECISION = 3;\nexport const CROSS = \"cross\";\nexport const DATE = \"date\";\nexport const DEFAULT_FONT = \"12px sans-serif\";\nexport const DEFAULT_HEIGHT = 400;\nexport const DEFAULT_PRECISION = 10;\nexport const DEFAULT_WIDTH = 600;\nexport const END = \"end\";\nexport const FORMAT_REGEX = /\\{\\d+:?/;\nexport const HEIGHT = \"height\";\nexport const HIGHLIGHT_ZINDEX = 100;\nexport const INSIDE = \"inside\";\nexport const LEFT = \"left\";\nexport const MAX_VALUE = Number.MAX_VALUE;\nexport const MIN_VALUE = -Number.MAX_VALUE;\nexport const NONE = \"none\";\nexport const NOTE_CLICK = \"noteClick\";\nexport const NOTE_HOVER = \"noteHover\";\nexport const NOTE_LEAVE = \"noteLeave\";\nexport const OBJECT = \"object\";\nexport const OUTSIDE = \"outside\";\nexport const RIGHT = \"right\";\nexport const ROUNDED_RECT = \"roundedRect\";\nexport const START = \"start\";\nexport const STRING = \"string\";\nexport const TOP = \"top\";\nexport const TRIANGLE = \"triangle\";\nexport const VALUE = \"value\";\nexport const WHITE = \"#fff\";\nexport const WIDTH = \"width\";\nexport const X = \"x\";\nexport const Y = \"y\";\nexport const DEFAULT_SERIES_OPACITY = 1;\n","export default function isArray(value) {\n return Array.isArray(value);\n}","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n const classArray = isArray(classes) ? classes : [ classes ];\n\n for (let idx = 0; idx < classArray.length; idx++) {\n const className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n}","const SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n let offset = 0.5;\n if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (let i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n}","export default function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export default function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n return typeof value === STRING;\n}","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n}","export default function isFunction(fn) {\n return typeof fn === \"function\";\n}","import isFunction from './is-function';\n\nconst OBJECT = \"object\";\nconst UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n\n for (let property in source) {\n let propValue = source[property];\n let propType = typeof propValue;\n\n let propInit;\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit && propInit !== Array) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n let destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n}\n\nexport default function deepExtend(destination) {\n const length = arguments.length;\n\n for (let i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n}","export default function isObject(value) {\n return typeof value === \"object\";\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n}","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nconst SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n const stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n const result = {};\n const style = window.getComputedStyle(element);\n\n for (let idx = 0; idx < stylesArray.length; idx++) {\n let field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (let field in styles) {\n element.style[field] = styleValue(styles[field]);\n }\n }\n}","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing = 0) {\n const spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n}","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;\n","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options = {}) {\n let template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n}\n","import { drawing } from '@progress/kendo-drawing';\n\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\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(drawing.util.defined(index) ? 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 grep(array, callback) {\n const length = array.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n}","export default function hasClasses(element, classNames) {\n if (element.className) {\n const names = classNames.split(\" \");\n for (let idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n}","\nexport default class HashMap {\n constructor() {\n this._map = {};\n }\n\n get(name) {\n return this._map[this._key(name)];\n }\n\n set(name, value) {\n this._map[this._key(name)] = value;\n }\n\n _key(name) {\n return name instanceof Date ? name.getTime() : name;\n }\n}","export default function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n}","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","import deepExtend from './deep-extend';\n\nconst TRIGGER = 'trigger';\n\nclass InstanceObserver {\n constructor(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n }\n\n trigger(name, args) {\n const { observer, handlerMap } = this;\n let isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n }\n\n callObserver(fnName, ...args) {\n return this.observer[fnName].apply(this.observer, args);\n }\n\n requiresHandlers(names) {\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (let idx = 0; idx < names.length; idx++) {\n if (this.handlerMap[names[idx]]) {\n return true;\n }\n }\n }\n}\n\nexport default InstanceObserver;","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n const length = array.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n let value = callback(array[idx]);\n if (drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n}","import { support } from '@progress/kendo-drawing';\n\nconst browser = support.browser || {};\n\nexport default function mousewheelDelta(e) {\n let delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n}\n","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n const console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import { drawing, Class, logToConsole } from '@progress/kendo-drawing';\n\nconst { append, bindEvents, defined, deg, elementOffset, elementSize, eventElement, eventCoordinates, last, limitValue, objectKey, rad, round, unbindEvents, valueOrDefault } = drawing.util;\n\nexport { append, bindEvents, Class, defined, deg, elementOffset, elementSize, eventElement, eventCoordinates, last, limitValue, logToConsole, objectKey, rad, round, unbindEvents, valueOrDefault };","import { logToConsole } from '../drawing-utils';\n\nclass FontLoader {\n static fetchFonts(options, fonts, state = { depth: 0 }) {\n const MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n const value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n }\n\n static loadFonts(fonts, callback) {\n let promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n }\n\n static preloadFonts(options, callback) {\n const fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n }\n}\n\nexport default FontLoader;","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n const proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n}","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n let min = MAX_VALUE;\n let max = MIN_VALUE;\n\n for (let idx = 0, length = arr.length; idx < length; idx++) {\n const value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n}","export default function find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n const item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n}\n","import { geometry } from '@progress/kendo-drawing';\n\nconst Matrix = geometry.Matrix;\nconst matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n const match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n const members = match[1].split(',').map(x => parseFloat(x));\n return new Matrix(...members);\n}\n\nfunction transformMatrix(element) {\n const transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n let matrix = transformMatrix(element);\n let parent = element.parentElement;\n while (parent) {\n const parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import { Color } from '@progress/kendo-drawing';\nimport { WHITE, BLACK } from './constants';\n\nfunction autoTextColor(color) {\n const isDark = new Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n}\n\nexport default autoTextColor;\n","const DELETED = {};\n\nclass LegacySet {\n constructor(values) {\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (let i = 0; i < this._values.length; i++) {\n this._index[this._values[i]] = i;\n }\n }\n\n values() {\n return this._values.filter(item => item !== DELETED);\n }\n\n has(value) {\n return this._index[value] !== undefined;\n }\n\n add(value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n }\n\n delete(value) {\n const index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n }\n\n clear() {\n this._index = {};\n this._values = [];\n }\n\n get size() {\n return this._values.length;\n }\n}\n\nclass SetWrapper {\n constructor(values) {\n this._set = new Set(values);\n }\n\n values() {\n return Array.from(this._set);\n }\n\n has(value) {\n return this._set.has(value);\n }\n\n add(value) {\n this._set.add(value);\n }\n\n delete(value) {\n this._set.delete(value);\n }\n\n clear() {\n this._set.clear();\n }\n\n get size() {\n return this._set.size;\n }\n}\n\n// TODO: Drop LegacySet when removing support for IE10\nlet supportsSet = () => {\n let supported = false;\n\n if (typeof Set === 'function') {\n const set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n};\n\nexport default function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n}\n","export default function defaultErrorHandler(error) {\n throw error;\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n let diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n const scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n const relativeValue = round((diff / scale), DEFAULT_PRECISION);\n let scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nclass Point extends Class {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n equals(point) {\n return point && this.x === point.x && this.y === point.y;\n }\n\n rotate(center, degrees) {\n const theta = rad(degrees);\n const cosT = Math.cos(theta);\n const sinT = Math.sin(theta);\n const { x: cx, y: cy } = center;\n const { x, y } = this;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n }\n\n multiply(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\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 static onCircle(center, angle, radius) {\n const radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n }\n}\n\n\nexport default Point;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nclass Box extends Class {\n constructor(x1, y1, x2, y2) {\n super();\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n }\n\n equals(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n }\n\n width() {\n return this.x2 - this.x1;\n }\n\n height() {\n return this.y2 - this.y1;\n }\n\n translate(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n }\n\n move(x, y) {\n const height = this.height();\n const width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n }\n\n wrap(targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n }\n\n wrapPoint(point) {\n const arrayPoint = isArray(point);\n const x = arrayPoint ? point[0] : point.x;\n const y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n }\n\n snapTo(targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n }\n\n alignTo(targetBox, anchor) {\n const height = this.height();\n const width = this.width();\n const axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n const offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n const targetCenter = targetBox.center();\n const center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n }\n\n shrink(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n }\n\n expand(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n }\n\n pad(padding) {\n const spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n }\n\n unpad(padding) {\n const spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n }\n\n clone() {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n }\n\n center() {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n }\n\n containsPoint(point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n }\n\n points() {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n }\n\n getHash() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n }\n\n overlaps(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n }\n\n rotate(rotation) {\n let width = this.width();\n let height = this.height();\n const { x: cx, y: cy } = this.center();\n\n const r1 = rotatePoint(0, 0, cx, cy, rotation);\n const r2 = rotatePoint(width, 0, cx, cy, rotation);\n const r3 = rotatePoint(width, height, cx, cy, rotation);\n const r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n }\n\n toRect() {\n return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n }\n\n hasSize() {\n return this.width() !== 0 && this.height() !== 0;\n }\n\n align(targetBox, axis, alignment) {\n const c1 = axis + 1;\n const c2 = axis + 2;\n const sizeFunc = axis === X ? WIDTH : HEIGHT;\n const size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n }\n}\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n const theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n}\n\nexport default Box;\n","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nclass Ring extends Class {\n\n constructor(center, innerRadius, radius, startAngle, angle) {\n super();\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n }\n\n clone() {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n }\n\n middle() {\n return this.startAngle + this.angle / 2;\n }\n\n setRadius(newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n }\n\n // TODO: Remove and replace with Point.onCircle\n point(angle, innerRadius) {\n const radianAngle = rad(angle);\n const ax = Math.cos(radianAngle);\n const ay = Math.sin(radianAngle);\n const radius = innerRadius ? this.innerRadius : this.radius;\n const x = round(this.center.x - (ax * radius), COORD_PRECISION);\n const y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n }\n\n adjacentBox(distance, width, height) {\n const sector = this.clone().expand(distance);\n const midAndle = sector.middle();\n const midPoint = sector.point(midAndle);\n const hw = width / 2;\n const hh = height / 2;\n const sa = Math.sin(rad(midAndle));\n const ca = Math.cos(rad(midAndle));\n let x = midPoint.x - hw;\n let y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n }\n\n containsPoint(p) {\n const center = this.center;\n const innerRadius = this.innerRadius;\n const radius = this.radius;\n const startAngle = this.startAngle;\n const endAngle = this.startAngle + this.angle;\n const dx = p.x - center.x;\n const dy = p.y - center.y;\n const vector = new Point(dx, dy);\n const startPoint = this.point(startAngle);\n const startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n const endPoint = this.point(endAngle);\n const endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n const dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n }\n\n getBBox() {\n const box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n const startAngle = round(this.startAngle % 360);\n const endAngle = round((startAngle + this.angle) % 360);\n const innerRadius = this.innerRadius;\n const allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n const startAngleIndex = allAngles.indexOf(startAngle);\n const endAngleIndex = allAngles.indexOf(endAngle);\n let angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (let i = 0; i < angles.length; i++) {\n let point = this.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n }\n\n expand(value) {\n this.radius += value;\n return this;\n }\n}\n\nfunction numericComparer(a, b) {\n return a - b;\n}\n\nexport default Ring;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nconst DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nclass ShapeBuilder extends Class {\n createRing(sector, options) {\n const startAngle = sector.startAngle + 180;\n let endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n const center = new geom.Point(sector.center.x, sector.center.y);\n const radius = Math.max(sector.radius, 0);\n const innerRadius = Math.max(sector.innerRadius, 0);\n const arc = new geom.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n const path = draw.Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n const innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n }\n}\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n let s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","import { Class } from '../common';\n\nlet instance;\n\nclass AnimationFactory extends Class {\n static get current() {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n }\n\n constructor() {\n super();\n\n this._items = [];\n }\n\n register(name, type) {\n this._items.push({\n name: name,\n type: type\n });\n }\n\n create(element, options) {\n const items = this._items;\n let match;\n\n if (options && options.type) {\n const type = options.type.toLowerCase();\n for (let i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n }\n}\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue, now } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nclass Animation extends Class {\n static create(type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n }\n\n get options() {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n }\n\n set options(value) {\n this._options = value;\n }\n\n constructor(element, options) {\n super();\n\n this.options = Object.assign({}, this.options, options);\n this.element = element;\n }\n\n setup() {}\n step() {}\n\n play() {\n const options = this.options;\n const { duration, delay = 0 } = options;\n const easing = easingFunctions[options.easing];\n const start = now() + delay;\n const finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(() => {\n const loop = () => {\n if (this._stopped) {\n return;\n }\n\n const wallTime = now();\n\n const time = limitValue(wallTime - start, 0, duration);\n const position = time / duration;\n const easingPosition = easing(position, time, 0, 1, duration);\n\n this.step(easingPosition);\n\n if (wallTime < finish) {\n animationFrame(loop);\n } else {\n this.abort();\n }\n };\n\n loop();\n }, delay);\n }\n }\n\n abort() {\n this._stopped = true;\n }\n\n destroy() {\n this.abort();\n }\n}\n\nexport default Animation;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault } from '../common';\n\nclass ChartElement extends Class {\n constructor(options) {\n super();\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n }\n\n initUserOptions(options) {\n return options;\n }\n\n reflow(targetBox) {\n const children = this.children;\n let box;\n\n for (let i = 0; i < children.length; i++) {\n let currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n }\n\n destroy() {\n const children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (let i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n }\n\n getRoot() {\n const parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n }\n\n getSender() {\n const service = this.getService();\n if (service) {\n return service.sender;\n }\n }\n\n getService() {\n let element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n }\n\n translateChildren(dx, dy) {\n const children = this.children;\n const childrenCount = children.length;\n\n for (let i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n }\n\n append() {\n for (let i = 0; i < arguments.length; i++) {\n let item = arguments[i];\n this.children.push(item);\n item.parent = this;\n }\n }\n\n renderVisual() {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n }\n\n addVisual() {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n }\n\n renderChildren() {\n const children = this.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n }\n\n createVisual() {\n this.visual = new draw.Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n }\n\n createAnimation() {\n if (this.visual && this.options.animation) {\n this.animation = draw.Animation.create(\n this.visual, this.options.animation\n );\n }\n }\n\n appendVisual(childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n }\n\n clipRoot() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n }\n\n stackRoot() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n }\n\n stackVisual(childVisual) {\n const zIndex = childVisual.options.zIndex || 0;\n const visuals = this.visual.children;\n const length = visuals.length;\n let pos;\n\n for (pos = 0; pos < length; pos++) {\n let sibling = visuals[pos];\n let here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n }\n\n traverse(callback) {\n const children = this.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++) {\n let child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n }\n\n closest(match) {\n let element = this;\n let matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n }\n\n renderComplete() {}\n\n hasHighlight() {\n const options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false));\n }\n\n toggleHighlight(show, opacity) {\n const options = (this.options || {}).highlight || {};\n const customVisual = options.visual;\n let highlight = this._highlight;\n\n if (!highlight) {\n const highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n Object.assign(this.highlightVisualArgs(), {\n createVisual: () => this.createHighlight(highlightOptions),\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n }\n ));\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n }\n\n createGradientOverlay(element, options, gradientOptions) {\n const overlay = new draw.Path(Object.assign({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n }\n\n createGradient(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n }\n\n supportsPointInactiveOpacity() {\n return true;\n }\n}\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\n\nclass BoxElement extends ChartElement {\n constructor(options) {\n super(options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n }\n\n reflow(targetBox) {\n const options = this.options;\n const { width, height, shrinkToFit } = options;\n const hasSetSize = width && height;\n const margin = options.margin;\n const padding = options.padding;\n const borderWidth = options.border.width;\n let box;\n\n const reflowPaddingBox = () => {\n this.align(targetBox, X, options.align);\n this.align(targetBox, Y, options.vAlign);\n this.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n let contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n super.reflow(contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n const children = this.children;\n for (let i = 0; i < children.length; i++) {\n let item = children[i];\n item.reflow(item.box);\n }\n }\n\n align(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n }\n\n hasBox() {\n const options = this.options;\n return options.border.width || options.background;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(draw.Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n }\n\n visualStyle() {\n const options = this.options;\n const border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n}\n\nsetDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n});\n\nexport default BoxElement;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport { round, setDefaultOptions } from '../common';\nimport { CENTER, CIRCLE, COORD_PRECISION, CROSS, ROUNDED_RECT, TRIANGLE } from '../common/constants';\nimport { valueOrDefault } from '../drawing-utils';\nimport BoxElement from './box-element';\n\nclass ShapeElement extends BoxElement {\n\n constructor(options, pointData) {\n super(options);\n\n this.pointData = pointData;\n }\n\n getElement() {\n const { options, paddingBox: box } = this;\n const { type, rotation } = options;\n const center = box.center();\n const halfWidth = box.width() / 2;\n const halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n const style = this.visualStyle();\n let element;\n\n if (type === CIRCLE) {\n element = new draw.Circle(\n new geom.Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = draw.Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new draw.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n const rect = box.toRect();\n if (type === ROUNDED_RECT) {\n const borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = draw.Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geom.transform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n }\n\n createElement() {\n const customVisual = this.options.visual;\n const pointData = this.pointData || {};\n let visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: () => this.getElement()\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n }\n\n visualOptions() {\n const options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n }\n\n createVisual() {\n this.visual = this.createElement();\n }\n}\n\nsetDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n});\n\nexport default ShapeElement;\n","import { WHITE } from '../common/constants';\n\nconst LINEAR = \"linear\";\nconst RADIAL = \"radial\";\n\nconst GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n};\n\nexport default GRADIENTS;","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n const a = Math.min(r.x1, s.x1);\n const b = Math.max(r.x1, s.x1);\n const c = Math.min(r.x2, s.x2);\n const d = Math.max(r.x2, s.x2);\n const e = Math.min(r.y1, s.y1);\n const f = Math.max(r.y1, s.y1);\n const g = Math.min(r.y2, s.y2);\n const h = Math.max(r.y2, s.y2);\n const boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nclass RootElement extends ChartElement {\n constructor(options) {\n super(options);\n\n const rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n }\n\n reflow() {\n const { options, children } = this;\n let currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (let i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n }\n\n createVisual() {\n this.visual = new draw.Group();\n this.createBackground();\n }\n\n createBackground() {\n const options = this.options;\n const border = options.border || {};\n const box = this.box.clone().pad(options.margin).unpad(border.width);\n\n const background = draw.Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n }\n\n getRoot() {\n return this;\n }\n\n createGradient(options) {\n const gradients = this.gradients;\n const hashCode = objectKey(options);\n const gradient = GRADIENTS[options.gradient];\n let drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n const gradientOptions = Object.assign({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new draw.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new draw.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n }\n\n cleanGradients() {\n const gradients = this.gradients;\n for (let hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n }\n\n size() {\n const options = this.options;\n return new Box(0, 0, options.width, options.height);\n }\n}\n\nsetDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n const stops = options.stops;\n const usedSpace = ((options.innerRadius / options.radius) * 100);\n const length = stops.length;\n const currentStops = [];\n\n for (let i = 0; i < length; i++) {\n let currentStop = Object.assign({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n}\n\nexport default RootElement;","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nclass FloatElement extends ChartElement {\n constructor(options) {\n super(options);\n this._initDirection();\n }\n\n _initDirection() {\n const options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n }\n\n reflow(targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n }\n\n reflowChildren() {\n const { box, elementAxis, groupAxis, elementSizeField, groupSizeField } = this;\n const { groups, groupsSize, maxGroupElementsSize } = this.groupOptions();\n const groupsCount = groups.length;\n const groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n let groupStart = groupsStart;\n\n for (let groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n let group = groups[groupIdx];\n let groupElements = group.groupElements;\n let elementStart = box[elementAxis + 1];\n let groupElementsCount = groupElements.length;\n\n for (let idx = 0; idx < groupElementsCount; idx++) {\n let element = groupElements[idx];\n let elementSize = this.elementSize(element);\n let groupElementStart = groupStart + this.alignStart(elementSize[groupSizeField], group.groupSize);\n\n let elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize[elementSizeField] + this.elementSpacing;\n }\n groupStart += group.groupSize + this.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n }\n\n alignStart(size, maxSize) {\n let start = 0;\n const align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n }\n\n groupOptions() {\n const { box, children, elementSizeField, groupSizeField, elementSpacing, groupSpacing } = this;\n const maxSize = round(box[elementSizeField]());\n const childrenCount = children.length;\n const groups = [];\n\n let groupSize = 0;\n let groupElementsSize = 0;\n let groupsSize = 0;\n let maxGroupElementsSize = 0;\n let groupElements = [];\n\n for (let idx = 0; idx < childrenCount; idx++) {\n let element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n let elementSize = this.elementSize(element);\n if (this.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n }\n\n elementSize(element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n }\n\n createVisual() {}\n}\n\nsetDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n});\n\nexport default FloatElement;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nconst DrawingText = draw.Text;\n\nclass Text extends ChartElement {\n\n constructor(content, options) {\n super(options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n }\n\n reflow(targetBox) {\n const options = this.options;\n const size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n }\n\n createVisual() {\n const { font, color, opacity, cursor } = this.options;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n }\n}\n\nsetDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n});\n\nexport default Text;\n","import Box from '../box';\n\nexport default function rectToBox(rect) {\n const origin = rect.origin;\n const bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nconst ROWS_SPLIT_REGEX = /\\n/m;\n\nclass TextBox extends BoxElement {\n\n constructor(content, options, data) {\n super(options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n }\n\n _initContainer() {\n const options = this.options;\n const rows = String(this.content).split(ROWS_SPLIT_REGEX);\n const floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n const textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n let text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n }\n\n reflow(targetBox) {\n const options = this.options;\n const visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n let visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n const visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n super.reflow(targetBox);\n\n if (options.rotation) {\n const margin = getSpacing(options.margin);\n let box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n }\n\n createVisual() {\n const options = this.options;\n\n this.visual = new draw.Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n const box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n }\n\n renderVisual() {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n const visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n super.renderVisual();\n }\n }\n\n visualContext(targetBox) {\n const context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: () => {\n this._boxReflow = true;\n this.reflow(targetBox);\n this._boxReflow = false;\n return this.getDefaultVisual();\n }\n };\n if (this.data) {\n Object.assign(context, this.data);\n }\n\n return context;\n }\n\n getDefaultVisual() {\n this.createVisual();\n this.renderChildren();\n const visual = this.visual;\n delete this.visual;\n return visual;\n }\n\n rotate() {\n const options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n }\n\n rotationTransform() {\n const rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n const { x: cx, y: cy } = this.normalBox.center();\n const boxCenter = this.rotatedBox.center();\n\n return geom.transform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n }\n}\n\nexport default TextBox;","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nclass Title extends ChartElement {\n constructor(options) {\n super(options);\n\n this.append(\n new TextBox(this.options.text, Object.assign({}, this.options, {\n vAlign: this.options.position\n }))\n );\n }\n\n reflow(targetBox) {\n super.reflow(targetBox);\n this.box.snapTo(targetBox, X);\n }\n\n static buildTitle(options, parent, defaultOptions) {\n let titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n let title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n parent.append(title);\n }\n\n return title;\n }\n}\n\nsetDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n\nexport default Title;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nclass AxisLabel extends TextBox {\n constructor(value, text, index, dataItem, options) {\n super(text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n }\n\n visualContext(targetBox) {\n const context = super.visualContext(targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n }\n\n click(widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n }\n\n rotate() {\n if (this.options.alignRotation !== CENTER) {\n const box = this.normalBox.toRect();\n const transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n super.rotate();\n }\n\n return this.box;\n }\n\n rotationTransform() {\n const options = this.options;\n const rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return super.rotationTransform();\n }\n\n const rotationMatrix = geom.transform().rotate(rotation).matrix();\n const box = this.normalBox.toRect();\n const rect = this.targetBox.toRect();\n\n const rotationOrigin = options.rotationOrigin || TOP;\n const alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n const distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n const axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n const topLeft = box.topLeft().transformCopy(rotationMatrix);\n const topRight = box.topRight().transformCopy(rotationMatrix);\n const bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n const bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n const rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n const translate = {\n [distanceAxis]: rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis]\n };\n\n const distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n const distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n let alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n const alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geom.transform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n }\n}\n\nsetDefaultOptions(AxisLabel, {\n _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nconst DEFAULT_ICON_SIZE = 7;\nconst DEFAULT_LABEL_COLOR = \"#fff\";\n\nclass Note extends BoxElement {\n constructor(fields, options, chartService) {\n super(options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n }\n\n hide() {\n this.options.visible = false;\n }\n\n show() {\n this.options.visible = true;\n }\n\n render() {\n const options = this.options;\n\n if (options.visible) {\n const { label, icon } = options;\n const box = new Box();\n const childAlias = () => this;\n let size = icon.size;\n let text = this.fields.text;\n let width, height;\n\n if (defined(label) && label.visible) {\n const noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n const marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n }\n\n reflow(targetBox) {\n const { options, label, marker, wrapperBox } = this;\n const center = targetBox.center();\n const length = options.line.length;\n const position = options.position;\n\n // TODO: Review\n if (options.visible) {\n let lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n }\n\n createVisual() {\n super.createVisual();\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n }\n\n renderVisual() {\n const options = this.options;\n const customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual(Object.assign(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: () => {\n this.createVisual();\n this.renderChildren();\n const defaultVisual = this.visual;\n delete this.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n super.renderVisual();\n }\n }\n\n createLine() {\n const options = this.options.line;\n\n if (this.linePoints) {\n const path = draw.Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n }\n\n click(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n }\n\n over(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n }\n\n out(widget, e) {\n const args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n }\n\n eventArgs(e) {\n const options = this.options;\n\n return Object.assign(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n }\n}\n\nsetDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n});\n\nexport default Note;","const defaultImplementation = {\n format: (format, value) => value,\n\n toString: (value) => value,\n\n parseDate: (value) => new Date(value),\n\n firstDay: () => 0\n};\n\nlet current = defaultImplementation;\n\nclass IntlService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static get implementation() {\n return current;\n }\n}\n\nexport default IntlService;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\nconst FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nclass FormatService {\n constructor(intlService) {\n this._intlService = intlService;\n }\n\n get intl() {\n return this._intlService || IntlService.implementation;\n }\n\n set intl(value) {\n this._intlService = value;\n }\n\n auto(formatString, ...values) {\n const intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format(formatString, ...values);\n }\n\n return intl.toString(values[0], formatString);\n }\n\n localeAuto(formatString, values, locale) {\n const intl = this.intl;\n let result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n }\n}\n\nexport default FormatService;","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nclass ChartService {\n constructor(chart, context = {}) {\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n }\n\n get intl() {\n return this._intlService || IntlService.implementation;\n }\n\n set intl(value) {\n this._intlService = value;\n this.format.intl = value;\n }\n\n notify(name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n }\n\n isPannable(axis) {\n const pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n }\n}\n\nexport default ChartService;","let current;\n\nclass DomEventsBuilder {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static create(element, events) {\n if (current) {\n return current.create(element, events);\n }\n }\n}\n\nexport default DomEventsBuilder;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n const { tickX, tickY, position } = options;\n\n const tick = new draw.Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n}\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n const { lineStart, lineEnd, position } = options;\n\n const line = new draw.Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nclass Axis extends ChartElement {\n constructor(options, chartService = new ChartService()) {\n super(options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n }\n\n initFields() {\n }\n\n // abstract labelsCount(): Number\n // abstract createAxisLabel(index, options): AxisLabel\n\n labelsRange() {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n }\n\n normalizeLabelRotation(labelOptions) {\n const rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n }\n\n createLabels() {\n const options = this.options;\n const align = options.vertical ? RIGHT : CENTER;\n const labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n const step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n const range = this.labelsRange();\n for (let idx = range.min; idx < range.max; idx += step) {\n const labelContext = { index: idx, count: range.max };\n let label = this.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this.append(label);\n this.labels.push(label);\n }\n }\n }\n }\n\n clearLabels() {\n this.children = grep(this.children, child => !(child instanceof AxisLabel));\n this.labels = [];\n }\n\n clearTitle() {\n if (this.title) {\n this.children = grep(this.children, child => child !== this.title);\n this.title = undefined;\n }\n }\n\n clear() {\n this.clearLabels();\n this.clearTitle();\n }\n\n lineBox() {\n const { options, box } = this;\n const vertical = options.vertical;\n const mirror = options.labels.mirror;\n const axisX = mirror ? box.x1 : box.x2;\n const axisY = mirror ? box.y2 : box.y1;\n const lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n }\n\n createTitle() {\n const options = this.options;\n const titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n const title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n }\n\n createNotes() {\n const options = this.options;\n const notes = options.notes;\n const items = notes.data || [];\n\n this.notes = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = deepExtend({}, notes, items[i]);\n item.value = this.parseNoteValue(item.value);\n\n const note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this.append(note);\n this.notes.push(note);\n }\n }\n }\n\n parseNoteValue(value) {\n return value;\n }\n\n renderVisual() {\n super.renderVisual();\n\n this.createPlotBands();\n }\n\n createVisual() {\n super.createVisual();\n\n this.createBackground();\n this.createLine();\n }\n\n gridLinesVisual() {\n let gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new draw.Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n }\n\n createTicks(lineGroup) {\n const options = this.options;\n const lineBox = this.lineBox();\n const mirror = options.labels.mirror;\n const majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n const tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n const count = tickPositions.length;\n const step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (let i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n }\n\n createLine() {\n const options = this.options;\n const line = options.line;\n const lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n const path = new draw.Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n const group = this._lineGroup = new draw.Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n }\n\n getActualTickSize() {\n const options = this.options;\n let tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n }\n\n createBackground() {\n const { options, box } = this;\n const background = options.background;\n\n if (background) {\n this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n }\n\n createPlotBands() {\n const options = this.options;\n const plotBands = options.plotBands || [];\n const vertical = options.vertical;\n const plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n const altAxis = grep(this.pane.axes, axis => axis.options.vertical !== this.options.vertical)[0];\n\n for (let idx = 0; idx < plotBands.length; idx++) {\n let item = plotBands[idx];\n let slotX, slotY;\n let labelOptions = item.label;\n let label;\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this.getSlot(item.from, item.to, true);\n } else {\n slotX = this.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n const bandRect = new geom.Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n const path = draw.Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n }\n\n createPlotBandLabel(label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n let text = label.text;\n let textbox;\n\n if (defined(label) && label.visible) {\n const labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n }\n\n createGridLines(altAxis) {\n const options = this.options;\n const { minorGridLines, majorGridLines, minorUnit, vertical } = options;\n const axisLineVisible = altAxis.options.line.visible;\n const majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n const lineBox = altAxis.lineBox();\n const linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n const lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n const majorTicks = [];\n\n const container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n const count = tickPositions.length;\n const step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (let i = gridLine.skip; i < count; i += step) {\n let pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n }\n\n reflow(box) {\n const { options, labels, title } = this;\n const vertical = options.vertical;\n const count = labels.length;\n const sizeFn = vertical ? WIDTH : HEIGHT;\n const titleSize = title ? title.box[sizeFn]() : 0;\n const space = this.getActualTickSize() + options.margin + titleSize;\n const rootBox = (this.getRoot() || {}).box || box;\n const boxSize = rootBox[sizeFn]();\n let maxLabelSize = 0;\n\n for (let i = 0; i < count; i++) {\n let labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n }\n\n getLabelsTickPositions() {\n return this.getMajorTickPositions();\n }\n\n labelTickIndex(label) {\n return label.index;\n }\n\n arrangeLabels() {\n const { options, labels } = this;\n const labelsBetweenTicks = this.labelsBetweenTicks();\n const vertical = options.vertical;\n const mirror = options.labels.mirror;\n const tickPositions = this.getLabelsTickPositions();\n\n for (let idx = 0; idx < labels.length; idx++) {\n const label = labels[idx];\n const tickIx = this.labelTickIndex(label);\n const labelSize = vertical ? label.box.height() : label.box.width();\n const firstTickPosition = tickPositions[tickIx];\n const nextTickPosition = tickPositions[tickIx + 1];\n let positionStart, positionEnd;\n\n if (vertical) {\n if (labelsBetweenTicks) {\n const middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this.positionLabel(label, mirror, positionStart, positionEnd);\n }\n }\n\n positionLabel(label, mirror, positionStart, positionEnd = positionStart) {\n const options = this.options;\n const vertical = options.vertical;\n const lineBox = this.lineBox();\n const labelOffset = this.getActualTickSize() + options.margin;\n let labelBox;\n\n if (vertical) {\n let labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n let labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n }\n\n autoRotateLabelAngle(labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n }\n\n autoRotateLabels() {\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n const tickPositions = this.getMajorTickPositions();\n const labels = this.labels;\n const limit = Math.min(labels.length, tickPositions.length - 1);\n let angle = 0;\n\n for (let idx = 0; idx < limit; idx++) {\n const width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n const labelBox = labels[idx].box;\n const labelAngle = this.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (let idx = 0; idx < labels.length; idx++) {\n labels[idx].options.rotation = angle;\n labels[idx].reflow(new Box());\n }\n\n return true;\n }\n }\n\n arrangeTitle() {\n const { options, title } = this;\n const mirror = options.labels.mirror;\n const vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n }\n\n arrangeNotes() {\n for (let idx = 0; idx < this.notes.length; idx++) {\n const item = this.notes[idx];\n const value = item.options.value;\n let slot;\n\n if (defined(value)) {\n if (this.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this.lineBox());\n }\n }\n\n noteSlot(value) {\n return this.getSlot(value);\n }\n\n alignTo(secondAxis) {\n const lineBox = secondAxis.lineBox();\n const vertical = this.options.vertical;\n const pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n }\n\n axisLabelText(value, options, context) {\n let text;\n const tmpl = getTemplate(options);\n const defaultText = () => {\n if (!options.format) {\n return value;\n }\n\n return this.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n const templateContext = Object.assign({}, context, {\n get text() { return defaultText(); },\n value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n }\n\n slot(from , to, limit) {\n const slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n }\n\n contentBox() {\n const box = this.box.clone();\n const labels = this.labels;\n if (labels.length) {\n const axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n const offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n const lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n }\n\n maxLabelOffset() {\n const { vertical, reverse } = this.options;\n const labelsBetweenTicks = this.labelsBetweenTicks();\n const tickPositions = this.getLabelsTickPositions();\n const offsetField = vertical ? Y : X;\n const labels = this.labels;\n const startPosition = reverse ? 1 : 0;\n const endPosition = reverse ? 0 : 1;\n let maxStartOffset = 0;\n let maxEndOffset = 0;\n\n for (let idx = 0; idx < labels.length; idx++) {\n const label = labels[idx];\n const tickIx = this.labelTickIndex(label);\n let startTick, endTick;\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n }\n\n limitRange(from, to, min, max, offset) {\n const options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n const rangeSize = to - from;\n let minValue = from;\n let maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n }\n\n valueRange() {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n }\n\n lineDir() {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n const { vertical, reverse } = this.options;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n }\n\n lineInfo() {\n const { vertical } = this.options;\n const lineBox = this.lineBox();\n const lineSize = vertical ? lineBox.height() : lineBox.width();\n const axis = vertical ? Y : X;\n const axisDir = this.lineDir();\n const startEdge = axisDir === 1 ? 1 : 2;\n const axisOrigin = axis + startEdge.toString();\n const lineStart = lineBox[axisOrigin];\n\n return {\n axis,\n axisOrigin,\n axisDir,\n lineBox,\n lineSize,\n lineStart\n };\n }\n\n pointOffset(point) {\n const { axis, axisDir, axisOrigin, lineBox, lineSize } = this.lineInfo();\n const relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n const offset = relative / lineSize;\n\n return offset;\n }\n\n // Computes the axis range change (delta) for a given scale factor.\n // The delta is subtracted from the axis range:\n // * delta > 0 reduces the axis range (zoom-in)\n // * delta < 0 expands the axis range (zoom-out)\n scaleToDelta(rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n const MAX_SCALE = 0.999;\n const scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n let delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n }\n\n labelsBetweenTicks() {\n return !this.options.justified;\n }\n\n //add legacy fields to the options that are no longer generated by default\n prepareUserOptions() {\n }\n}\n\nsetDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n});\n\nexport default Axis;\n","export const MILLISECONDS = \"milliseconds\";\nexport const SECONDS = \"seconds\";\nexport const MINUTES = \"minutes\";\nexport const HOURS = \"hours\";\nexport const DAYS = \"days\";\nexport const WEEKS = \"weeks\";\nexport const MONTHS = \"months\";\nexport const YEARS = \"years\";\n\nexport const TIME_PER_MILLISECOND = 1;\nexport const TIME_PER_SECOND = 1000;\nexport const TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport const TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport const TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport const TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport const TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport const TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport const TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n const diff = a.getTime() - b;\n const offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n}","export default function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n}","export default function toDate(value) {\n let result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n}\n\nfunction addHours(date, hours) {\n const roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n const tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n let result = dateValue;\n\n if (dateValue) {\n let date = toDate(dateValue);\n const hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay = 0) {\n let daysToSubtract = 0;\n let day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n const date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n}","export default function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n}","export default function dateDiff(a, b) {\n return a.getTime() - b;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n if (isArray(value)) {\n let result = [];\n for (let idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n const date = toDate(value);\n const startDate = toDate(start);\n let index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n let diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n let result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n if (isArray(dates)) {\n const result = [];\n for (let idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n}","import { isNumber } from '../common';\n\nexport default function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n}\n","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nconst MIN_CATEGORY_POINTS_RANGE = 0.01;\nconst MIN_CATEGORY_RANGE = 0.1;\n\nfunction indexOf(value, arr) {\n if (value instanceof Date) {\n const length = arr.length;\n for (let idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n}\n\nclass CategoryAxis extends Axis {\n initFields() {\n this._ticks = {};\n }\n\n categoriesHash() {\n return \"\";\n }\n\n clone() {\n const copy = new CategoryAxis(Object.assign({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n }\n\n initUserOptions(options) {\n const categories = options.categories || [];\n const definedMin = defined(options.min);\n const definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n const min = definedMin ? Math.floor(options.min) : 0;\n let max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n }\n\n rangeIndices() {\n const options = this.options;\n const length = options.categories.length || 1;\n const min = isNumber(options.min) ? options.min % 1 : 0;\n let max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n totalRangeIndices(limit) {\n const options = this.options;\n let min = isNumber(options.min) ? options.min : 0;\n let max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (limit) {\n const totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n range() {\n const options = this.options;\n const min = isNumber(options.min) ? options.min : 0;\n const max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n }\n\n roundedRange() {\n return this.range();\n }\n\n totalRange() {\n const options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n }\n\n scaleOptions() {\n const { min, max } = this.rangeIndices();\n const lineBox = this.lineBox();\n const size = this.options.vertical ? lineBox.height() : lineBox.width();\n const scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n }\n\n arrangeLabels() {\n super.arrangeLabels();\n this.hideOutOfRangeLabels();\n }\n\n hideOutOfRangeLabels() {\n const { box, labels } = this;\n\n if (labels.length > 0) {\n const valueAxis = this.options.vertical ? Y : X;\n const start = box[valueAxis + 1];\n const end = box[valueAxis + 2];\n const firstLabel = labels[0];\n const lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n }\n\n getMajorTickPositions() {\n return this.getTicks().majorTicks;\n }\n\n getMinorTickPositions() {\n return this.getTicks().minorTicks;\n }\n\n getLabelsTickPositions() {\n return this.getTicks().labelTicks;\n }\n\n tickIndices(stepSize) {\n const { min, max } = this.rangeIndices();\n const limit = Math.ceil(max);\n let current = Math.floor(min);\n const indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n }\n\n getTickPositions(stepSize) {\n const { vertical, reverse } = this.options;\n const { scale, box, min } = this.scaleOptions();\n const pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n const indices = this.tickIndices(stepSize);\n const positions = [];\n\n for (let idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n }\n\n getTicks() {\n const options = this.options;\n const cache = this._ticks;\n const range = this.rangeIndices();\n const lineBox = this.lineBox();\n const hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n const hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n }\n\n filterOutOfRangePositions(positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n const axis = this.options.vertical ? Y : X;\n const inRange = (position) => lineBox[axis + 1] <= position && position <= lineBox[axis + 2];\n\n const end = positions.length - 1;\n let startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n let endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n }\n\n lineInfo() {\n const { vertical, reverse } = this.options;\n const lineBox = this.lineBox();\n const lineSize = vertical ? lineBox.height() : lineBox.width();\n const axis = vertical ? Y : X;\n const axisDir = reverse ? -1 : 1;\n const startEdge = axisDir === 1 ? 1 : 2;\n const axisOrigin = axis + startEdge.toString();\n const lineStart = lineBox[axisOrigin];\n\n return {\n axis,\n axisOrigin,\n axisDir,\n lineBox,\n lineSize,\n lineStart\n };\n }\n\n lineDir() {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n const { reverse } = this.options;\n return reverse ? -1 : 1;\n }\n\n // TODO: Rename to slotBox, valueSlot, slotByIndex?\n getSlot(from, to, limit) {\n const options = this.options;\n const { reverse, justified } = options;\n const { scale, box, min } = this.scaleOptions();\n const { axis: valueAxis, lineStart } = this.lineInfo();\n\n const slotBox = box.clone();\n const singleSlot = !defined(to);\n\n const start = valueOrDefault(from, 0);\n let end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n let p1 = lineStart + (start - min) * scale;\n let p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n }\n\n limitSlot(slot) {\n const vertical = this.options.vertical;\n const valueAxis = vertical ? Y : X;\n const lineBox = this.lineBox();\n const limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n }\n\n slot(from, to, limit) {\n const min = Math.floor(this.options.min || 0);\n let start = from;\n let end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return super.slot(start, end, limit);\n }\n\n pointCategoryIndex(point) {\n const { reverse, justified, vertical } = this.options;\n const valueAxis = vertical ? Y : X;\n const { scale, box, min, max } = this.scaleOptions();\n const startValue = reverse ? max : min;\n const lineStart = box[valueAxis + 1];\n const lineEnd = box[valueAxis + 2];\n const pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n let value = startValue + (pos - lineStart) / scale;\n const diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n }\n\n getCategory(point) {\n const index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n }\n\n categoryIndex(value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n }\n\n categoryAt(index, total) {\n const options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n }\n\n categoriesCount() {\n return (this.options.categories || []).length;\n }\n\n translateRange(delta) {\n const options = this.options;\n const lineBox = this.lineBox();\n const size = options.vertical ? lineBox.height() : lineBox.width();\n const range = options.categories.length;\n const scale = size / range;\n const offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const rangeIndices = this.totalRangeIndices();\n const range = rangeIndices.max - rangeIndices.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = rangeIndices.min + minDelta;\n let max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const { min: totalMin, max: totalMax } = this.totalRange();\n const range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n labelsCount() {\n const labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n }\n\n labelsRange() {\n const options = this.options;\n const { justified, labels: labelOptions } = options;\n let { min, max } = this.totalRangeIndices(true);\n const start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n let skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const dataItem = options.dataItems ? options.dataItems[index] : null;\n const category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n const text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.totalRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n }\n\n noteSlot(value) {\n const options = this.options;\n const index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n }\n\n arrangeNotes() {\n super.arrangeNotes();\n this.hideOutOfRangeNotes();\n }\n\n hideOutOfRangeNotes() {\n const { notes, box } = this;\n if (notes && notes.length) {\n const valueAxis = this.options.vertical ? Y : X;\n const start = box[valueAxis + 1];\n const end = box[valueAxis + 2];\n\n for (let idx = 0; idx < notes.length; idx++) {\n const note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n }\n\n pan(delta) {\n const range = this.totalRangeIndices(true);\n const { scale } = this.scaleOptions();\n const offset = round(delta / scale, DEFAULT_PRECISION);\n const totalRange = this.totalRange();\n const min = range.min + offset;\n const max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n }\n\n pointsRange(start, end) {\n const { reverse, vertical } = this.options;\n const valueAxis = vertical ? Y : X;\n const range = this.totalRangeIndices(true);\n const { scale, box } = this.scaleOptions();\n const lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n const diffStart = start[valueAxis] - lineStart;\n const diffEnd = end[valueAxis] - lineStart;\n\n const min = range.min + diffStart / scale;\n const max = range.min + diffEnd / scale;\n const rangeMin = Math.min(min, max);\n const rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n }\n\n valueRange() {\n return this.range();\n }\n\n totalIndex(value) {\n const options = this.options;\n const index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n }\n\n currentRangeIndices() {\n const options = this.options;\n let min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n let max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n mapCategories() {\n if (!this._categoriesMap) {\n const map = this._categoriesMap = new HashMap();\n const srcCategories = this.options.srcCategories;\n for (let idx = 0; idx < srcCategories.length; idx++) {\n map.set(srcCategories[idx], idx);\n }\n }\n }\n\n totalCount() {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n }\n}\n\nsetDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n});\n\nexport default CategoryAxis;\n","const COORDINATE_LIMIT = 300000;\n\nconst DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n};\n\nconst ZERO_THRESHOLD = 0.2;\n\nexport {\n COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { CENTER, DATE, DEFAULT_PRECISION, MAX_VALUE, OBJECT, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n dateIndex, dateEquals, toTime, parseDate, parseDates, firstDay } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nconst AUTO = \"auto\";\nconst BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nconst FIT = \"fit\";\n\n\nfunction categoryRange(categories) {\n let range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n}\n\nclass EmptyDateRange {\n constructor(options) {\n this.options = options;\n }\n\n displayIndices() {\n return {\n min: 0,\n max: 1\n };\n }\n\n displayRange() {\n return {};\n }\n\n total() {\n return {};\n }\n\n valueRange() {\n return {};\n }\n\n valueIndex() {\n return -1;\n }\n\n values() {\n return [];\n }\n\n totalIndex() {\n return -1;\n }\n\n valuesCount() {\n return 0;\n }\n\n totalCount() {\n return 0;\n }\n\n dateAt() {\n return null;\n }\n}\n\nclass DateRange {\n constructor(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n const { roundToBaseUnit, justified } = options;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n const lowerEnd = this.roundToTotalStep(end);\n const expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n const min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n const max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n const next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n }\n\n displayRange() {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n }\n\n displayIndices() {\n if (!this._indices) {\n const options = this.options;\n\n const { baseUnit, baseUnitStep } = options;\n\n const minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n const maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n }\n\n total() {\n return {\n min: this.start,\n max: this.end\n };\n }\n\n totalCount() {\n const last = this.totalIndex(this.end);\n\n return last + (this.options.justified ? 1 : 0);\n }\n\n valueRange() {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n }\n\n valueIndex(value) {\n const options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n }\n\n totalIndex(value) {\n const options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n }\n\n dateIndex(value) {\n const options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n }\n\n valuesCount() {\n const maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n }\n\n values() {\n let values = this._values;\n if (!values) {\n const options = this.options;\n const range = this.valueRange();\n this._values = values = [];\n\n for (let date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n }\n\n dateAt(index, total) {\n const options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n }\n\n roundToTotalStep(value, upper, next) {\n const { baseUnit, baseUnitStep, weekStartDay } = this.options;\n const start = this.start;\n\n const step = dateIndex(value, start, baseUnit, baseUnitStep);\n let roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n }\n\n}\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n const categoryLimits = categoryRange(options.categories);\n const span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n const { autoBaseUnitSteps, maxDateGroups } = options;\n const autoUnit = options.baseUnit === FIT;\n let autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n let baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n let units = span / TIME_PER_UNIT[baseUnit];\n let totalUnits = units;\n let unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n const categories = options.categories;\n const count = defined(categories) ? categories.length : 0;\n let minDiff = MAX_VALUE;\n let lastCategory, unit;\n\n for (let categoryIx = 0; categoryIx < count; categoryIx++) {\n const category = categories[categoryIx];\n\n if (category && lastCategory) {\n const diff = absoluteDateDiff(category, lastCategory);\n if (diff > 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n const baseUnit = (options.baseUnit || \"\").toLowerCase();\n const useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n}\n\nclass DateCategoryAxis extends CategoryAxis {\n\n clone() {\n const copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n }\n\n categoriesHash() {\n const start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n }\n\n initUserOptions(options) {\n return options;\n }\n\n initFields() {\n super.initFields();\n\n const chartService = this.chartService;\n const intlService = chartService.intl;\n let options = this.options;\n\n let categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n const range = categoryRange(categories);\n const maxDivisions = options.maxDivisions;\n\n this.dataRange = new DateRange(range.min, range.max, initUnit(options));\n\n if (maxDivisions) {\n const dataRange = this.dataRange.displayRange();\n\n const divisionOptions = Object.assign({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n const dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n }\n\n tickIndices(stepSize) {\n const { dataRange, divisionRange } = this;\n const valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return super.tickIndices(stepSize);\n }\n\n const indices = [];\n let values = divisionRange.values();\n let offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (let idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n const last = indices.length - 1;\n indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n }\n }\n\n return indices;\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n const categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n }\n\n parseNoteValue(value) {\n return parseDate(this.chartService.intl, value);\n }\n\n noteSlot(value) {\n return this.getSlot(value);\n }\n\n translateRange(delta) {\n const options = this.options;\n const { baseUnit, weekStartDay, vertical } = options;\n const lineBox = this.lineBox();\n const size = vertical ? lineBox.height() : lineBox.width();\n let range = this.range();\n const scale = size / (range.max - range.min);\n const offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n const from = addTicks(options.min || range.min, offset);\n const to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n }\n\n labelsRange() {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n }\n\n pan(delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n const options = this.options;\n const lineBox = this.lineBox();\n const size = options.vertical ? lineBox.height() : lineBox.width();\n const { min, max } = this.dataRange.displayRange();\n const totalLimits = this.dataRange.total();\n const scale = size / (max - min);\n const offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n const from = addTicks(min, offset);\n const to = addTicks(max, offset);\n\n const panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n }\n\n pointsRange(start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n const pointsRange = super.pointsRange(start, end);\n const datesRange = this.dataRange.displayRange();\n const indicesRange = this.dataRange.displayIndices();\n const scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n const options = this.options;\n\n const min = addTicks(datesRange.min, pointsRange.min * scale);\n const max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n\n scaleRange(scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n const options = this.options;\n const fit = options.userSetBaseUnit === FIT;\n const totalLimits = this.dataRange.total();\n const { min: rangeMin, max: rangeMax } = this.dataRange.displayRange();\n\n const position = Math.abs(this.pointOffset(cursor));\n const range = rangeMax - rangeMin;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = Math.round(position * delta);\n const maxDelta = Math.round((1 - position) * delta);\n\n let { baseUnit } = this.dataRange.options;\n let min = new Date(rangeMin.getTime() + minDelta);\n let max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n const { autoBaseUnitSteps, maxDateGroups } = options;\n\n const maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n const rangeDiff = dateDiff(rangeMax, rangeMin);\n const diff = dateDiff(max, min);\n let baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n let autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n let stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n }\n\n zoomRange(scale, cursor) {\n const totalLimits = this.dataRange.total();\n const range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n }\n\n range() {\n return this.dataRange.displayRange();\n }\n\n createLabels() {\n super.createLabels();\n this.createRangeLabels();\n }\n\n clearLabels() {\n super.clearLabels();\n this.rangeLabels = [];\n }\n\n arrangeLabels() {\n this.arrangeRangeLabels();\n super.arrangeLabels();\n }\n\n arrangeRangeLabels() {\n const { options, rangeLabels } = this;\n if (rangeLabels.length === 0) {\n return;\n }\n\n const lineBox = this.lineBox();\n const vertical = options.vertical;\n const mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n const firstLabel = rangeLabels[0];\n if (firstLabel) {\n const position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n const lastLabel = rangeLabels[1];\n if (lastLabel) {\n const position = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position);\n }\n }\n\n autoRotateLabels() {\n super.autoRotateLabels();\n this.autoRotateRangeLabels();\n }\n\n hideOutOfRangeLabels() {\n super.hideOutOfRangeLabels();\n this.hideOverlappingLabels();\n }\n\n hideOverlappingLabels() {\n const { rangeLabels, labels } = this;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n const firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (let i = 0; i < labels.length; i++) {\n const overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n const lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (let i = labels.length - 1; i > 0; --i) {\n const overlaps = clip(lastRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n }\n\n contentBox() {\n const box = super.contentBox();\n const rangeLabels = this.rangeLabels;\n\n for (let i = 0; i < rangeLabels.length; i++) {\n const label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n }\n\n createAxisLabel(index, labelOptions, labelContext = {}) {\n const options = this.options;\n const dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n const date = this.divisionRange.dateAt(index);\n const unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n const text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n }\n\n createRangeLabels() {\n const { displayStart, displayEnd } = this.divisionRange;\n const options = this.options;\n const labelOptions = Object.assign({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n const unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n const createLabel = (index, date, text) => {\n if (text) {\n const label = new AxisLabel(date, text, index, null, labelOptions);\n this.append(label);\n this.rangeLabels.push(label);\n }\n };\n\n const startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n const endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n }\n\n autoRotateRangeLabels() {\n const labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n const rotateLabel = (label, tickPositions, index) => {\n const width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n const angle = this.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n const tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n }\n\n categoryIndex(value) {\n return this.dataRange.valueIndex(value);\n }\n\n slot(from, to, limit) {\n const dateRange = this.dataRange;\n let start = from;\n let end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n const slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n }\n\n getSlot(a, b, limit) {\n let start = a;\n let end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return super.getSlot(start, end, limit);\n }\n\n valueRange() {\n const options = this.options;\n const range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n }\n\n categoryAt(index, total) {\n return this.dataRange.dateAt(index, total);\n }\n\n categoriesCount() {\n return this.dataRange.valuesCount();\n }\n\n rangeIndices() {\n return this.dataRange.displayIndices();\n }\n\n labelsBetweenTicks() {\n return !this.divisionRange.options.justified;\n }\n\n prepareUserOptions() {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n }\n\n getCategory(point) {\n const index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n }\n\n totalIndex(value) {\n return this.dataRange.totalIndex(value);\n }\n\n currentRangeIndices() {\n const range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n }\n\n totalRange() {\n return this.dataRange.total();\n }\n\n totalCount() {\n return this.dataRange.totalCount();\n }\n\n isEmpty() {\n return !this.options.srcCategories.length;\n }\n\n roundedRange() {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n const options = this.options;\n const datesRange = categoryRange(options.srcCategories);\n\n const dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: options.justified\n }));\n\n return dateRange.displayRange();\n }\n}\n\nsetDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nconst MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nclass NumericAxis extends Axis {\n\n constructor(seriesMin, seriesMax, options, chartService) {\n super(Object.assign({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n }\n\n initUserOptions(options) {\n const autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n }\n\n initFields() {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n }\n\n clone() {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n }\n\n startValue() {\n return 0;\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n getDivisions(stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n const options = this.options;\n const range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n }\n\n getTickPositions(unit, skipUnit) {\n const options = this.options;\n const { axisDir, axisOrigin, lineBox, lineSize } = this.lineInfo();\n const range = options.max - options.min;\n const scale = lineSize / range;\n const step = unit * scale;\n const divisions = this.getDivisions(unit);\n const positions = [];\n let pos = lineBox[axisOrigin];\n let skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (let idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n }\n\n getMajorTickPositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n getMinorTickPositions() {\n return this.getTickPositions(this.options.minorUnit);\n }\n\n getSlot(a, b, limit = false) {\n const options = this.options;\n const { axis, axisDir, lineBox, lineSize, lineStart } = this.lineInfo();\n const step = axisDir * (lineSize / (options.max - options.min));\n\n let start = valueOrDefault(a, b || 0);\n let end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n const p1 = Math.min(start, end) - options.min;\n const p2 = Math.max(start, end) - options.min;\n\n const slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n }\n\n getValue(point) {\n const options = this.options;\n const max = Number(options.max);\n const min = Number(options.min);\n const offset = this.pointOffset(point);\n const valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n const value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n }\n\n translateRange(delta) {\n const options = this.options;\n const { vertical, reverse, max, min } = options;\n const { lineSize } = this.lineInfo();\n const range = max - min;\n const scale = lineSize / range;\n let offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n }\n\n labelsCount() {\n return this.getDivisions(this.options.majorUnit);\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n const text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n return range.min <= value && value <= range.max;\n }\n\n pan(delta) {\n const range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const range = this.options.max - this.options.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n let max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const { totalMin, totalMax } = this;\n const range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n isValidRange(min, max) {\n return max - min > MIN_VALUE_RANGE;\n }\n}\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n const narrowRange = options.narrowRange;\n\n let autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n let autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n const majorUnit = autoMajorUnit(autoMin, autoMax);\n const autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n}\n\nfunction clearNullValues(options, fields) {\n for (let idx = 0; idx < fields.length; idx++) {\n const field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n let options = userOptions;\n let userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n const userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n const result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n const remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n const threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n});\n\nexport default NumericAxis;\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n let axisMin;\n\n if (min >= 0 && max >= 0) {\n const minValue = min === max ? 0 : min;\n\n let diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n}\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n let axisMax;\n\n if (min <= 0 && max <= 0) {\n const maxValue = min === max ? 0 : max;\n\n let diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n}","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nconst MIN_VALUE_RANGE = 1000;\n\nclass DateValueAxis extends Axis {\n constructor(seriesMin, seriesMax, axisOptions, chartService) {\n const min = toDate(seriesMin);\n const max = toDate(seriesMax);\n\n const intlService = chartService.intl;\n let options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n super(options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n const weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n }\n\n clone() {\n return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n getDivisions(stepValue) {\n const options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n }\n\n getTickPositions(step) {\n const options = this.options;\n const { axisDir: dir, lineSize, lineStart: start } = this.lineInfo();\n const divisions = this.getDivisions(step);\n const timeRange = dateDiff(options.max, options.min);\n const scale = lineSize / timeRange;\n const weekStartDay = options.weekStartDay || 0;\n\n const positions = [ start ];\n for (let i = 1; i < divisions; i++) {\n const date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n const pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n }\n\n getMajorTickPositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n getMinorTickPositions() {\n return this.getTickPositions(this.options.minorUnit);\n }\n\n getSlot(a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n }\n\n getValue(point) {\n const value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n }\n\n labelsCount() {\n return this.getDivisions(this.options.majorUnit);\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const offset = index * options.majorUnit;\n const weekStartDay = options.weekStartDay || 0;\n let date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n const unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n const text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n }\n\n translateRange(delta) {\n const options = this.options;\n const lineBox = this.lineBox();\n const { vertical, reverse } = options;\n const size = vertical ? lineBox.height() : lineBox.width();\n const range = this.range();\n const scale = size / dateDiff(range.max, range.min);\n\n let offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n let from = addTicks(options.min, offset);\n let to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n }\n\n pan(delta) {\n const range = this.translateRange(delta, true);\n const limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const range = this.options.max - this.options.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = toDate(toTime(this.options.min) + minDelta);\n let max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const range = this.scaleRange(scale, cursor);\n const min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n const max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min,\n max\n };\n }\n}\n\nfunction timeUnits(delta) {\n let unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n const min = options.min || seriesMin;\n const max = options.max || seriesMax;\n const baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n const baseUnitTime = TIME_PER_UNIT[baseUnit];\n const weekStartDay = options.weekStartDay || 0;\n const autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n const autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n const userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n const majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n const actualUnits = duration(autoMin, autoMax, baseUnit);\n const totalUnits = ceil(actualUnits, majorUnit);\n const unitsToAdd = totalUnits - actualUnits;\n const head = Math.floor(unitsToAdd / 2);\n const tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n});\n\nexport default DateValueAxis;\n","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nconst DEFAULT_MAJOR_UNIT = 10;\nconst MIN_VALUE_RANGE = 1e-6;\n\nclass LogarithmicAxis extends Axis {\n constructor(seriesMin, seriesMax, options, chartService) {\n\n const axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n const base = axisOptions.majorUnit;\n const autoMax = autoAxisMax(seriesMax, base);\n const autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n const range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n super(axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n }\n\n clone() {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n }\n\n startValue() {\n return this.options.min;\n }\n\n getSlot(a, b, limit) {\n const { options, logMin, logMax } = this;\n const { majorUnit: base, min, max } = options;\n const { axis, axisDir, lineBox, lineSize, lineStart } = this.lineInfo();\n const step = axisDir * (lineSize / (logMax - logMin));\n let start = valueOrDefault(a, b || 1);\n let end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n const p1 = Math.min(start, end) - logMin;\n const p2 = Math.max(start, end) - logMin;\n\n const slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n }\n\n getValue(point) {\n const { options, logMin, logMax } = this;\n const { majorUnit: base } = options;\n const { axis, axisDir, lineStart, lineSize } = this.lineInfo();\n const step = ((logMax - logMin) / lineSize);\n const offset = axisDir * (point[axis] - lineStart);\n const valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n const value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n translateRange(delta) {\n const { options, logMin, logMax } = this;\n const { reverse, vertical, majorUnit: base } = options;\n const lineBox = this.lineBox();\n const size = vertical ? lineBox.height() : lineBox.width();\n const scale = size / (logMax - logMin);\n let offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n }\n\n labelsCount() {\n const floorMax = Math.floor(this.logMax);\n const count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n }\n\n getMajorTickPositions() {\n const ticks = [];\n\n this.traverseMajorTicksPositions((position) => {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n }\n\n createTicks(lineGroup) {\n const options = this.options;\n const { majorTicks, minorTicks, vertical } = options;\n const mirror = options.labels.mirror;\n const lineBox = this.lineBox();\n const ticks = [];\n const tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n }\n\n createGridLines(altAxis) {\n const options = this.options;\n const { minorGridLines, majorGridLines, vertical } = options;\n const lineBox = altAxis.lineBox();\n const lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n const majorTicks = [];\n\n const container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n }\n\n traverseMajorTicksPositions(callback, tickOptions) {\n const { lineStart, step } = this.lineInfo();\n const { logMin, logMax } = this;\n\n for (let power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n let position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n\n traverseMinorTicksPositions(callback, tickOptions) {\n const { min, max, minorUnit, majorUnit: base } = this.options;\n const { lineStart, step } = this.lineInfo();\n const { logMin, logMax } = this;\n const start = Math.floor(logMin);\n\n for (let power = start; power < logMax; power++) {\n const minorOptions = this._minorIntervalOptions(power);\n for (let idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n const value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n const position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const power = Math.ceil(this.logMin + index);\n const value = Math.pow(this.options.majorUnit, power);\n const text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n return range.min <= value && value <= range.max;\n }\n\n pan(delta) {\n const range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n }\n\n scaleRange(scale, cursor) {\n const { majorUnit: base } = this.options;\n const logMin = log(this.options.min, base);\n const logMax = log(this.options.max, base);\n const position = Math.abs(this.pointOffset(cursor));\n const range = logMax - logMin;\n const delta = this.scaleToDelta(scale, range);\n const min = Math.pow(base, logMin + position * delta);\n let max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const range = this.scaleRange(scale, cursor);\n const { totalMin, totalMax } = this;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n _minorIntervalOptions(power) {\n const { minorUnit, majorUnit: base } = this.options;\n const value = Math.pow(base, power);\n const nextValue = Math.pow(base, power + 1);\n const difference = nextValue - value;\n const minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n }\n\n lineInfo() {\n const info = super.lineInfo();\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n }\n}\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n let { min, max } = axisOptions;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction autoAxisMin(min, max, options) {\n const base = options.majorUnit;\n let autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n const logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n let autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(x, base) {\n return Math.log(x) / Math.log(base);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nconst GridLinesMixin = {\n createGridLines: function(altAxis) {\n const options = this.options;\n const radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n let gridLines = [];\n let skipMajor = false;\n let majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n const radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n const style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n const center = this.box.center();\n const circle = new geom.Circle([ center.x, center.y ], radius);\n const container = this.gridLinesVisual();\n\n for (let i = 0; i < angles.length; i++) {\n const line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n const divs = this.intervals(size, skip, step, skipAngles);\n const options = altAxis.options;\n const altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, (d) => {\n const alpha = this.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nclass RadarCategoryAxis extends CategoryAxis {\n range() {\n return { min: 0, max: this.options.categories.length };\n }\n\n reflow(box) {\n this.box = box;\n this.reflowLabels();\n }\n\n lineBox() {\n return this.box;\n }\n\n reflowLabels() {\n const { labels, options: { labels: labelOptions } } = this;\n const skip = labelOptions.skip || 0;\n const step = labelOptions.step || 1;\n const measureBox = new Box();\n\n for (let i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n const labelBox = labels[i].box;\n\n labels[i].reflow(this.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n }\n\n intervals(size, skipOption, stepOption, skipAngles = false) {\n const options = this.options;\n const categories = options.categories.length;\n const divCount = categories / size || 1;\n const divAngle = 360 / divCount;\n const skip = skipOption || 0;\n const step = stepOption || 1;\n const divs = [];\n let angle = 0;\n\n for (let i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n }\n\n majorIntervals() {\n return this.intervals(1);\n }\n\n minorIntervals() {\n return this.intervals(0.5);\n }\n\n intervalAngle(interval) {\n return (360 + interval + this.options.startAngle) % 360;\n }\n\n majorAngles() {\n return map(this.majorIntervals(), (interval) => this.intervalAngle(interval));\n }\n\n createLine() {\n return [];\n }\n\n majorGridLineAngles(altAxis) {\n const majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n }\n\n minorGridLineAngles(altAxis, skipMajor) {\n const { minorGridLines, majorGridLines } = this.options;\n const majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n }\n\n radiusCallback(radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n const minorAngle = rad(360 / (this.options.categories.length * 2));\n const minorRadius = Math.cos(minorAngle) * radius;\n const majorAngles = this.majorAngles();\n\n const radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n }\n\n createPlotBands() {\n const plotBands = this.options.plotBands || [];\n\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (let i = 0; i < plotBands.length; i++) {\n const band = plotBands[i];\n const slot = this.plotBandSlot(band);\n const singleSlot = this.getSlot(band.from);\n\n const head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n const tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n const ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n }\n\n plotBandSlot(band) {\n return this.getSlot(band.from, band.to - 1);\n }\n\n getSlot(from, to) {\n const options = this.options;\n const justified = options.justified;\n const box = this.box;\n const divs = this.majorAngles();\n const totalDivs = divs.length;\n const slotAngle = 360 / totalDivs;\n let fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n let slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n const toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n const slots = toValue - fromValue + 1;\n const angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n }\n\n slot(from, to) {\n const slot = this.getSlot(from, to);\n const startAngle = slot.startAngle + 180;\n const endAngle = startAngle + slot.angle;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n }\n\n pointCategoryIndex(point) {\n const length = this.options.categories.length;\n let index = null;\n\n for (let i = 0; i < length; i++) {\n const slot = this.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n }\n}\n\nsetDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nclass PolarAxis extends Axis {\n constructor(options, chartService) {\n super(options, chartService);\n\n const instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n }\n\n getDivisions(stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n }\n\n reflow(box) {\n this.box = box;\n this.reflowLabels();\n }\n\n reflowLabels() {\n const { options, labels, options: { labels: labelOptions } } = this;\n const skip = labelOptions.skip || 0;\n const step = labelOptions.step || 1;\n\n const measureBox = new Box();\n const divs = this.intervals(options.majorUnit, skip, step);\n\n for (let i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n const labelBox = labels[i].box;\n\n labels[i].reflow(this.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n }\n\n lineBox() {\n return this.box;\n }\n\n intervals(size, skipOption, stepOption, skipAngles = false) {\n const min = this.options.min;\n const divisions = this.getDivisions(size);\n const divs = [];\n const skip = skipOption || 0;\n const step = stepOption || 1;\n\n for (let i = skip; i < divisions; i += step) {\n const current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n }\n\n majorIntervals() {\n return this.intervals(this.options.majorUnit);\n }\n\n minorIntervals() {\n return this.intervals(this.options.minorUnit);\n }\n\n intervalAngle(i) {\n return (540 - i - this.options.startAngle) % 360;\n }\n\n createLine() {\n return [];\n }\n\n majorGridLineAngles(altAxis) {\n const majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n }\n\n minorGridLineAngles(altAxis, skipMajor) {\n const options = this.options;\n const { minorGridLines, majorGridLines } = options;\n const majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n }\n\n plotBandSlot(band) {\n return this.getSlot(band.from, band.to);\n }\n\n getSlot(a, b) {\n const { options, box } = this;\n const startAngle = options.startAngle;\n let start = limitValue(a, options.min, options.max);\n let end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n const tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n }\n\n slot(from, to = from) {\n const options = this.options;\n const start = 360 - options.startAngle;\n const slot = this.getSlot(from, to);\n const min = Math.min(from, to);\n const max = Math.max(from, to);\n let startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n }\n\n getValue(point) {\n const options = this.options;\n const center = this.box.center();\n const dx = point.x - center.x;\n const dy = point.y - center.y;\n let theta = Math.round(deg(Math.atan2(dy, dx)));\n let start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n }\n\n valueRange() {\n return {\n min: 0,\n max: Math.PI * 2\n };\n }\n}\n\nsetDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nconst RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n const { majorGridLines: { type }, plotBands = [] } = this.options;\n const altAxis = this.plotArea.polarAxis;\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (let i = 0; i < plotBands.length; i++) {\n const band = plotBands[i];\n const bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n const slot = this.getSlot(band.from, band.to, true);\n const ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n let shape;\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(this.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n const innerPoints = [];\n const outerPoints = [];\n const center = [ ring.center.x, ring.center.y ];\n const innerCircle = new geom.Circle(center, ring.innerRadius);\n const outerCircle = new geom.Circle(center, ring.radius);\n\n for (let i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n const options = this.options;\n const majorTicks = this.radarMajorGridLinePositions();\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n let gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n const minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n const style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n const { skip = 0, step = 0 } = options;\n const container = this.gridLinesVisual();\n\n for (let tickIx = skip; tickIx < ticks.length; tickIx += step) {\n const tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n const circle = new geom.Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n const line = new draw.Path(style);\n for (let angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n const lineBox = this.lineBox();\n const altAxis = this.plotArea.polarAxis;\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n const radius = point.distanceTo(center);\n let distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n const dx = point.x - center.x;\n const dy = point.y - center.y;\n const theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n const midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n const alpha = angularDistance(theta, majorAngles[0]);\n const gamma = 90 - midAngle;\n const beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n};\n\nfunction angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nclass RadarNumericAxis extends NumericAxis {\n radarMajorGridLinePositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n radarMinorGridLinePositions() {\n const options = this.options;\n let minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n }\n\n axisType() {\n return NumericAxis;\n }\n}\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nclass RadarLogarithmicAxis extends LogarithmicAxis {\n radarMajorGridLinePositions() {\n const positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n }\n\n radarMinorGridLinePositions() {\n const positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n }\n\n axisType() {\n return LogarithmicAxis;\n }\n}\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nconst WEIGHT = 0.333;\nconst EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nclass CurveProcessor extends Class {\n\n constructor(closed) {\n super();\n\n this.closed = closed;\n }\n\n process(dataPoints) {\n const points = dataPoints.slice(0);\n const segments = [];\n let closed = this.closed;\n let length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n let p0 = points[0];\n let p1 = points[1];\n let p2 = points[2];\n\n segments.push(new geom.Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n const tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new geom.Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n let initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n const controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n const tangent = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent, p0, p1, X, Y);\n }\n\n let cp0 = initialControlPoint;\n for (let idx = 0; idx <= length - 3; idx++) {\n this.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n const controlPoints = this.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints[1];\n\n const cp1 = controlPoints[0];\n segments.push(new geom.Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n const controlPoints = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p1,\n controlPoints[0]\n ));\n\n last(segments).controlOut(controlPoints[1]);\n segments.push(new geom.Segment(\n p2,\n lastControlPoint\n ));\n } else {\n const tangent = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p2,\n this.secondControlPoint(tangent, p1, p2, X, Y)\n ));\n }\n\n return segments;\n }\n\n removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n }\n\n invertAxis(p0, p1, p2) {\n let invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n const fn = this.lineFunction(p0,p1);\n const y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n }\n\n isLine(p0, p1, p2) {\n const fn = this.lineFunction(p0, p1);\n const y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n }\n\n lineFunction(p1, p2) {\n const a = (p2.y - p1.y) / (p2.x - p1.x);\n const b = p1.y - a * p1.x;\n\n return [ b, a ];\n }\n\n controlPoints(p0, p1, p2) {\n let xField = X;\n let yField = Y;\n let restrict = false;\n let switchOrientation = false;\n let tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n const monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n let sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n const secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n const oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n const firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n }\n\n restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n }\n\n tangent(p0, p1, xField, yField) {\n const x = p1[xField] - p0[xField];\n const y = p1[yField] - p0[yField];\n let tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n }\n\n isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n }\n\n firstControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n }\n\n secondControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n }\n\n point(xValue, yValue, xField, yField) {\n const controlPoint = new geom.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n }\n\n calculateFunction(fn, x) {\n const length = fn.length;\n let result = 0;\n\n for (let i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n}\n\nfunction numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import { Class } from '../../common';\n\nclass ChartAxis extends Class {\n constructor(axis) {\n super();\n\n this._axis = axis;\n this.options = axis.options;\n }\n\n value(point) {\n const axis = this._axis;\n const value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n }\n\n slot(from, to, limit = true) {\n return this._axis.slot(from, to, limit);\n }\n\n range() {\n return this._axis.range();\n }\n\n valueRange() {\n return this._axis.valueRange();\n }\n}\n\nexport default ChartAxis;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n for (let idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n}","import findAxisByName from './find-axis-by-name';\n\nclass ChartPane {\n constructor(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n }\n\n findAxisByName(name) {\n return findAxisByName(name, this._pane.axes);\n }\n}\n\nexport default ChartPane;","import { Class } from '../../common';\n\nclass ChartPlotArea extends Class {\n constructor(plotArea) {\n super();\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n}\n\nexport default ChartPlotArea;","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n const length = values.length;\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n const num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n}","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nconst Aggregates = {\n min: function(values) {\n const length = values.length;\n let min = MAX_VALUE;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n const length = values.length;\n let max = MIN_VALUE;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n const length = values.length;\n let sum = 0;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n let result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n const length = values.length;\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n const count = countNumbers(values);\n let result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n const length = values.length;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n};\n\nexport default Aggregates;","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n const get = getter(field, true);\n return get(row);\n}","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nclass SeriesBinder extends Class {\n\n constructor() {\n super();\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n }\n\n register(seriesTypes, valueFields = [ VALUE ], otherFields = {}) {\n\n for (let i = 0; i < seriesTypes.length; i++) {\n const type = seriesTypes[i];\n\n this._valueFields[type] = valueFields;\n this._otherFields[type] = otherFields;\n this._nullValue[type] = this._makeValue(valueFields, null);\n this._undefinedValue[type] = this._makeValue(valueFields, undefined);\n }\n }\n\n canonicalFields(series) {\n return this.valueFields(series).concat(this.otherFields(series));\n }\n\n valueFields(series) {\n return this._valueFields[series.type] || [ VALUE ];\n }\n\n otherFields(series) {\n return this._otherFields[series.type] || [ VALUE ];\n }\n\n bindPoint(series, pointIx, item) {\n const data = series.data;\n const pointData = defined(item) ? item : data[pointIx];\n const result = { valueFields: { value: pointData } };\n const valueFields = this.valueFields(series);\n const otherFields = this._otherFields[series.type];\n let fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n const fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n const srcValueFields = this.sourceFields(series, valueFields);\n const srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n }\n\n _makeValue(fields, initialValue) {\n const value = {};\n const length = fields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n }\n\n _bindFromArray(array, fields) {\n const value = {};\n\n if (fields) {\n const length = Math.min(fields.length, array.length);\n\n for (let i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n }\n\n _bindFromObject(object, fields, srcFields = fields) {\n const value = {};\n\n if (fields) {\n const length = fields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = fields[i];\n const srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n }\n\n sourceFields(series, canonicalFields) {\n const sourceFields = [];\n\n if (canonicalFields) {\n const length = canonicalFields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = canonicalFields[i];\n const sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n }\n}\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nconst STD_ERR = \"stderr\";\nconst STD_DEV = \"stddev\";\nconst percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nconst standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nclass ErrorRangeCalculator extends Class {\n constructor(errorValue, series, field) {\n super();\n\n this.initGlobalRanges(errorValue, series, field);\n }\n\n initGlobalRanges(errorValue, series, field) {\n const data = series.data;\n const deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n const average = this.getAverage(data);\n const deviation = this.getStandardDeviation(data, average, false);\n const multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n const errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n const standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n }\n\n createValueGetter(series, field) {\n const data = series.data;\n const binder = SeriesBinder.current;\n const valueFields = binder.valueFields(series);\n const item = defined(data[0]) ? data[0] : {};\n let valueGetter;\n\n if (isArray(item)) {\n const index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === OBJECT) {\n const srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n }\n\n getErrorRange(pointValue, errorValue) {\n let low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n const percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n }\n\n getStandardError(data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n }\n\n getStandardDeviation(data, average, isSample) {\n const length = data.length;\n const total = isSample ? average.count - 1 : average.count;\n let squareDifferenceSum = 0;\n\n for (let idx = 0; idx < length; idx++) {\n const value = this.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n }\n\n getAverage(data) {\n const length = data.length;\n let sum = 0;\n let count = 0;\n\n for (let idx = 0; idx < length; idx++) {\n const value = this.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n }\n}\n\nexport default ErrorRangeCalculator;","import { support } from '@progress/kendo-drawing';\n\nconst browser = support.browser || {};\n\nconst INITIAL_ANIMATION_DURATION = 600;\nconst FADEIN = \"fadeIn\";\n\nconst GLASS = \"glass\";\nconst BORDER_BRIGHTNESS = 0.8;\nconst TOOLTIP_OFFSET = 5;\nconst START_SCALE = browser.msie ? 0.001 : 0;\nconst ERROR_LOW_FIELD = \"errorLow\";\nconst ERROR_HIGH_FIELD = \"errorHigh\";\nconst X_ERROR_LOW_FIELD = \"xErrorLow\";\nconst X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nconst Y_ERROR_LOW_FIELD = \"yErrorLow\";\nconst Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nconst LINE_MARKER_SIZE = 8;\nconst ZERO = \"zero\";\nconst INTERPOLATE = \"interpolate\";\nconst GAP = \"gap\";\nconst ABOVE = \"above\";\nconst BELOW = \"below\";\n\nconst SMOOTH = \"smooth\";\nconst STEP = \"step\";\n\nconst AREA = \"area\";\nconst BAR = \"bar\";\nconst BOX_PLOT = \"boxPlot\";\nconst BUBBLE = \"bubble\";\nconst BULLET = \"bullet\";\nconst CANDLESTICK = \"candlestick\";\nconst COLUMN = \"column\";\nconst DONUT = \"donut\";\nconst FUNNEL = \"funnel\";\nconst HEATMAP = \"heatmap\";\nconst HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nconst LINE = \"line\";\nconst OHLC = \"ohlc\";\nconst PIE = \"pie\";\nconst POLAR_AREA = \"polarArea\";\nconst POLAR_LINE = \"polarLine\";\nconst POLAR_SCATTER = \"polarScatter\";\nconst RADAR_AREA = \"radarArea\";\nconst RADAR_COLUMN = \"radarColumn\";\nconst RADAR_LINE = \"radarLine\";\nconst RANGE_AREA = \"rangeArea\";\nconst RANGE_BAR = \"rangeBar\";\nconst RANGE_COLUMN = \"rangeColumn\";\nconst SCATTER = \"scatter\";\nconst SCATTER_LINE = \"scatterLine\";\nconst VERTICAL_AREA = \"verticalArea\";\nconst VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nconst VERTICAL_BULLET = \"verticalBullet\";\nconst VERTICAL_LINE = \"verticalLine\";\nconst VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nconst WATERFALL = \"waterfall\";\nconst EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nconst LEGEND_ITEM_CLICK = \"legendItemClick\";\nconst LEGEND_ITEM_HOVER = \"legendItemHover\";\nconst LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nconst SERIES_CLICK = \"seriesClick\";\nconst SERIES_HOVER = \"seriesHover\";\nconst SERIES_OVER = \"seriesOver\";\nconst SERIES_LEAVE = \"seriesLeave\";\nconst PLOT_AREA_CLICK = \"plotAreaClick\";\nconst PLOT_AREA_HOVER = \"plotAreaHover\";\nconst PLOT_AREA_LEAVE = \"plotAreaLeave\";\nconst DRAG = \"drag\";\nconst DRAG_END = \"dragEnd\";\nconst DRAG_START = \"dragStart\";\nconst ZOOM_START = \"zoomStart\";\nconst ZOOM = \"zoom\";\nconst ZOOM_END = \"zoomEnd\";\nconst SELECT_START = \"selectStart\";\nconst SELECT = \"select\";\nconst SELECT_END = \"selectEnd\";\nconst RENDER = \"render\";\nconst SHOW_TOOLTIP = \"showTooltip\";\nconst HIDE_TOOLTIP = \"hideTooltip\";\nconst PANE_RENDER = \"paneRender\";\n\nconst LOGARITHMIC = \"log\";\nconst CATEGORY = \"category\";\n\nconst INSIDE_END = \"insideEnd\";\nconst INSIDE_BASE = \"insideBase\";\nconst OUTSIDE_END = \"outsideEnd\";\n\nconst MOUSEWHEEL = \"DOMMouseScroll mousewheel\";\nconst MOUSEWHEEL_DELAY = 150;\nconst MOUSEWHEEL_ZOOM_RATE = 0.3;\n\nexport {\n INITIAL_ANIMATION_DURATION, FADEIN,\n LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE, GLASS,\n BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n SMOOTH, STEP, CATEGORY, FUNNEL,\n BAR, CANDLESTICK, PIE, COLUMN, AREA,\n VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,\n SHOW_TOOLTIP, HIDE_TOOLTIP,\n EQUALLY_SPACED_SERIES, ABOVE, BELOW,\n HEATMAP\n};\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nconst DEFAULT_ERROR_BAR_WIDTH = 4;\n\nclass ErrorBarBase extends ChartElement {\n constructor(low, high, isVertical, chart, series, options) {\n super(options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n }\n\n reflow(targetBox) {\n const endCaps = this.options.endCaps;\n const isVertical = this.isVertical;\n const axis = this.getAxis();\n const valueBox = axis.getSlot(this.low, this.high);\n const centerBox = targetBox.center();\n const capsWidth = this.getCapsWidth(targetBox, isVertical);\n const capValue = isVertical ? centerBox.x : centerBox.y;\n const capStart = capValue - capsWidth;\n const capEnd = capValue + capsWidth;\n let linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n }\n\n getCapsWidth(box, isVertical) {\n const boxSize = isVertical ? box.width() : box.height();\n const capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n }\n\n createVisual() {\n const options = this.options;\n const visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: () => {\n this.createDefaultVisual();\n const defaultVisual = this.visual;\n delete this.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n }\n\n createDefaultVisual() {\n const { options, linePoints } = this;\n const lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n super.createVisual();\n\n for (let idx = 0; idx < linePoints.length; idx += 2) {\n const line = new draw.Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this.visual.append(line);\n }\n }\n}\n\nsetDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n});\n\nexport default ErrorBarBase;","import ErrorBarBase from './error-bar-base';\n\nclass CategoricalErrorBar extends ErrorBarBase {\n getAxis() {\n const axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n }\n}\n\nexport default CategoricalErrorBar;","import { inArray, isFunction, isObject, valueOrDefault } from '../../common';\n\nconst MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state = {}, dryRun = false) {\n const defaults = state.defaults = state.defaults || {};\n const depth = state.depth = state.depth || 0;\n let needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (let property in options) {\n if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n const propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n}","export default function categoriesCount(series) {\n const seriesCount = series.length;\n let categories = 0;\n\n for (let i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n}","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport SeriesBinder from './series-binder';\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport evalOptions from './utils/eval-options';\nimport categoriesCount from './utils/categories-count';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nclass CategoricalChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n }\n\n plotValue(point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n const categoryIx = point.categoryIx;\n const categoryPoints = this.categoryPoints[categoryIx];\n const otherValues = [];\n let categorySum = 0;\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n if (other) {\n const stack = point.series.stack;\n const otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n }\n\n plotRange(point, startValue = 0) {\n const categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n let plotValue = this.plotValue(point);\n const positive = plotValue >= 0;\n let prevValue = startValue;\n let isStackedBar = false;\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n const stack = point.series.stack;\n const otherStack = other.series.stack;\n if (stack && otherStack) {\n if (typeof stack === STRING && stack !== otherStack) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n }\n\n const otherValue = this.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n const series = point.series;\n const valueAxis = this.seriesValueAxis(series);\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n }\n\n stackLimits(axisName, stackName) {\n let min = MAX_VALUE;\n let max = MIN_VALUE;\n\n for (let i = 0; i < this.categoryPoints.length; i++) {\n const categoryPoints = this.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (let pIx = 0; pIx < categoryPoints.length; pIx++) {\n const point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n const to = this.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n }\n\n updateStackRange() {\n const { isStacked, series: chartSeries } = this.options;\n const limitsCache = {};\n\n if (isStacked) {\n for (let i = 0; i < chartSeries.length; i++) {\n const series = chartSeries[i];\n const axisName = series.axis;\n const key = axisName + series.stack;\n\n let limits = limitsCache[key];\n if (!limits) {\n limits = this.stackLimits(axisName, series.stack);\n\n const errorTotals = this.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this.valueAxisRanges[axisName] = limits;\n }\n }\n }\n }\n\n addErrorBar(point, data, categoryIx) {\n const { value, series, seriesIx } = point;\n const errorBars = point.options.errorBars;\n const lowValue = data.fields[ERROR_LOW_FIELD];\n const highValue = data.fields[ERROR_HIGH_FIELD];\n let errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n }\n\n addPointErrorBar(point, categoryIx) {\n const isVertical = !this.options.invertAxes;\n const options = point.options.errorBars;\n let { series, low, high } = point;\n\n if (this.options.isStacked) {\n const stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n const fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n const errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n }\n\n stackedErrorRange(point, categoryIx) {\n const plotValue = this.plotRange(point, 0)[1] - point.value;\n const low = point.low + plotValue;\n const high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n }\n\n addValue(data, fields) {\n const { categoryIx, series, seriesIx } = fields;\n\n let categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n let seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n const point = this.createPoint(data, fields);\n if (point) {\n Object.assign(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n }\n\n evalPointOptions(options, value, category, categoryIx, series, seriesIx) {\n const state = { defaults: series._defaults, excluded: [ \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n }\n\n updateRange(data, fields) {\n const axisName = fields.series.axis;\n const value = data.value;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n }\n\n seriesValueAxis(series) {\n const plotArea = this.plotArea;\n const axisName = series.axis;\n const axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n }\n\n reflow(targetBox) {\n const categorySlots = this.categorySlots = [];\n const chartPoints = this.points;\n const categoryAxis = this.categoryAxis;\n let pointIx = 0;\n\n this.traverseDataPoints((data, fields) => {\n const { categoryIx, series: currentSeries } = fields;\n\n const valueAxis = this.seriesValueAxis(currentSeries);\n const point = chartPoints[pointIx++];\n\n let categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n const plotRange = this.plotRange(point, valueAxis.startValue());\n const valueSlot = this.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n const pointSlot = this.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this.options.isStacked100) {\n point.percentage = this.plotValue(point);\n }\n\n this.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n }\n\n valueSlot(valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n }\n\n limitPoints() {\n const categoryPoints = this.categoryPoints;\n const points = categoryPoints[0].concat(last(categoryPoints));\n for (let idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this.limitPoint(points[idx]);\n }\n }\n }\n\n limitPoint(point) {\n const limittedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limittedSlot.equals(point.box)) {\n point.reflow(limittedSlot);\n }\n }\n\n aboveAxis(point, valueAxis) {\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n const value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n }\n\n categoryAxisCrossingValue(valueAxis) {\n const categoryAxis = this.categoryAxis;\n const options = valueAxis.options;\n const crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n }\n\n reflowPoint(point, pointSlot) {\n point.reflow(pointSlot);\n }\n\n reflowCategories() { }\n\n pointSlot(categorySlot, valueSlot) {\n const options = this.options;\n const invertAxes = options.invertAxes;\n const slotX = invertAxes ? valueSlot : categorySlot;\n const slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n categorySlot(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n }\n\n traverseDataPoints(callback) {\n const series = this.options.series;\n const count = categoriesCount(series);\n const seriesCount = series.length;\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (let categoryIx = 0; categoryIx < count; categoryIx++) {\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const currentCategory = this.categoryAxis.categoryAt(categoryIx);\n const pointData = this._bindPoint(currentSeries, seriesIx, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx\n });\n }\n }\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this._outOfRangeCallback(series[seriesIx], \"_outOfRangeMaxPoint\", seriesIx, callback);\n }\n }\n\n _outOfRangeCallback(series, field, seriesIx, callback) {\n const outOfRangePoint = series[field];\n if (outOfRangePoint) {\n const categoryIx = outOfRangePoint.categoryIx;\n const pointData = this._bindPoint(series, seriesIx, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n }\n\n _bindPoint(series, seriesIx, categoryIx, item) {\n if (!this._bindCache) {\n this._bindCache = [];\n }\n\n let bindCache = this._bindCache[seriesIx];\n if (!bindCache) {\n bindCache = this._bindCache[seriesIx] = [];\n }\n\n let data = bindCache[categoryIx];\n if (!data) {\n data = bindCache[categoryIx] = SeriesBinder.current.bindPoint(series, categoryIx, item);\n }\n\n return data;\n }\n\n formatPointValue(point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n }\n\n pointValue(data) {\n return data.valueFields.value;\n }\n}\n\nsetDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n});\n\nexport default CategoricalChart;\n","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nconst PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n};\n\nexport default PointEventsMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nconst NoteMixin = {\n createNote: function() {\n const options = this.options.notes;\n const text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n};\n\nexport default NoteMixin;","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, valueOrDefault, getSpacing } from '../../common';\n\nclass LinePoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n }\n\n render() {\n const { markers, labels } = this.options;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n if (labels.visible) {\n const labelTemplate = getTemplate(labels);\n const pointData = this.pointData();\n let labelText = this.value;\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = this.formatValue(labels.format);\n }\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n }, labels),\n pointData\n );\n this.append(this.label);\n }\n\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n }\n\n markerBorder() {\n const options = this.options.markers;\n const background = options.background;\n const border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n }\n\n createVisual() {}\n\n createMarker() {\n const options = this.options.markers;\n const marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n }\n\n markerBox() {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n }\n\n reflow(targetBox) {\n const { options, aboveAxis } = this;\n const vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n const childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (let i = 0; i < this.errorBars.length; i++) {\n this.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n let noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n const center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n }\n\n reflowLabel(box) {\n const { options, label } = this;\n let anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n }\n\n createHighlight() {\n const markers = this.options.highlight.markers;\n const defaultColor = this.markerBorder().color;\n const options = this.options.markers;\n const size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n const shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n }\n\n highlightVisual() {\n return (this.marker || {}).visual;\n }\n\n highlightVisualArgs() {\n const marker = this.marker;\n let visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n const size = this.options.markers.size;\n const halfSize = size / 2;\n const center = this.box.center();\n rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n }\n\n tooltipAnchor() {\n const markerBox = this.markerBox();\n const clipBox = this.owner.pane.clipBox();\n const showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n const x = markerBox.x2 + TOOLTIP_OFFSET;\n const horizontalAlign = LEFT;\n let y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n const markerBox = this.markerBox();\n return markerBox.overlaps(box);\n }\n\n unclipElements() {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n }\n}\n\nLinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nclass LineSegment extends ChartElement {\n constructor(linePoints, series, seriesIx) {\n super();\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n }\n\n points() {\n return this.toGeometryPoints(this.linePoints);\n }\n\n toGeometryPoints(points) {\n const result = [];\n for (let i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n }\n\n createVisual() {\n const customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: () => {\n this.segmentVisual();\n\n return this.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n }\n\n segmentVisual() {\n const { options, series } = this;\n let { color, _defaults: defaults } = series;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n const line = draw.Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n }\n\n aliasFor(e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n }\n}\n\nsetDefaultOptions(LineSegment, {\n closed: false\n});\n\nexport default LineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nconst StepLineMixin = {\n calculateStepPoints: function(points) {\n const categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n const { justified, vertical, reverse } = categoryAxis.options;\n\n const stepAxis = vertical ? X : Y;\n const axis = vertical ? Y : X;\n const stepDir = reverse ? 2 : 1;\n const dir = stepDir;\n\n let previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n const result = [ previousPoint ];\n\n for (let idx = 1; idx < points.length; idx++) {\n const point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n const stepPoint = new geom.Point();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n const box = lintPoint.box;\n const result = new geom.Point();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nclass StepLineSegment extends LineSegment {\n points() {\n return this.calculateStepPoints(this.linePoints);\n }\n}\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nclass SplineSegment extends LineSegment {\n segmentVisual() {\n const series = this.series;\n const defaults = series._defaults;\n let color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n const curveProcessor = new CurveProcessor(this.options.closed);\n const segments = curveProcessor.process(this.points());\n const curve = new draw.Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n }\n}\n\nexport default SplineSegment;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nconst LineChartMixin = {\n renderSegments: function() {\n const { options, seriesPoints } = this;\n const series = options.series;\n const seriesCount = seriesPoints.length;\n let lastSegment;\n\n this._segments = [];\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const sortedPoints = this.sortPoints(seriesPoints[seriesIx]);\n const pointCount = sortedPoints.length;\n let linePoints = [];\n\n for (let pointIx = 0; pointIx < pointCount; pointIx++) {\n const point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n const missingValues = series.missingValues;\n const assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n const target = new Point(x, y);\n const allPoints = this.seriesPoints[seriesIx];\n let nearestPointDistance = MAX_VALUE;\n let nearestPoint;\n\n for (let i = 0; i < allPoints.length; i++) {\n const point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n const pointBox = point.box;\n const pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n};\n\nexport default LineChartMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nclass ClipAnimation extends draw.Animation {\n setup() {\n this._setEnd(this.options.box.x1);\n }\n\n step(pos) {\n const box = this.options.box;\n this._setEnd(interpolateValue(box.x1, box.x2, pos));\n }\n\n _setEnd(x) {\n const element = this.element;\n const segments = element.segments;\n const topRight = segments[1].anchor();\n const bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n }\n}\n\nsetDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nconst ClipAnimationMixin = {\n createAnimation: function() {\n const root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n const box = root.size();\n const clipPath = draw.Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n const points = this.animationPoints();\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n};\n\nexport default ClipAnimationMixin;","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nclass LineChart extends CategoricalChart {\n render() {\n\n super.render();\n\n this.updateStackRange();\n this.renderSegments();\n }\n\n pointType() {\n return LinePoint;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const missingValues = this.seriesMissingValues(series);\n let value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n let pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n let color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n plotRange(point) {\n let plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n const categoryIx = point.categoryIx;\n const categoryPoints = this.categoryPoints[categoryIx];\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this.plotValue(other);\n\n if (this.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\n\nclass AreaSegment extends LineSegment {\n constructor(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n super(linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n }\n\n createVisual() {\n const series = this.series;\n const defaults = series._defaults;\n const lineOptions = series.line || {};\n let color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new draw.Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n }\n\n strokeSegments() {\n let segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n }\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.points());\n }\n\n stackSegments() {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n }\n\n createStackSegments(stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n }\n\n segmentsFromPoints(points) {\n return points.map((point) => new geom.Segment(point));\n }\n\n createStroke(style) {\n const stroke = new draw.Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n }\n\n hasStackSegment() {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n }\n\n createFill(style) {\n const strokeSegments = this.strokeSegments();\n const fillSegments = strokeSegments.slice(0);\n const hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n const stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n const fill = new draw.Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n }\n\n fillToAxes(fillPath) {\n const chart = this.parent;\n const invertAxes = chart.options.invertAxes;\n const valueAxis = chart.seriesValueAxis(this.series);\n const crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n const endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n const segments = this.strokeSegments();\n const firstPoint = segments[0].anchor();\n const lastPoint = last(segments).anchor();\n let end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n }\n}\n\nexport default AreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nclass StepAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n }\n\n createStackSegments(stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n }\n}\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nclass SplineAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n const curveProcessor = new CurveProcessor(this.options.closed);\n const linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n }\n\n createStackSegments() {\n const strokeSegments = this.strokeSegments();\n const stackSegments = [];\n for (let idx = strokeSegments.length - 1; idx >= 0; idx--) {\n const segment = strokeSegments[idx];\n stackSegments.push(new geom.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n }\n}\n\nexport default SplineAreaSegment;","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nclass AreaChart extends LineChart {\n createSegment(linePoints, currentSeries, seriesIx, prevSegment) {\n const isStacked = this.options.isStacked;\n const style = (currentSeries.line || {}).style;\n let previousSegment;\n\n let stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n const missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n let pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n reflow(targetBox) {\n super.reflow(targetBox);\n\n const stackPoints = this._stackPoints;\n if (stackPoints) {\n for (let idx = 0; idx < stackPoints.length; idx++) {\n const stackPoint = stackPoints[idx];\n const pointSlot = this.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n }\n\n _gapStackPoints(linePoints, seriesIx, style) {\n const seriesPoints = this.seriesPoints;\n let startIdx = linePoints[0].categoryIx;\n let length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n const endIdx = startIdx + length;\n const pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n const stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (let categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n const pointIx = categoryIx + pointOffset;\n let currentSeriesIx = seriesIx;\n let point;\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n const gapStackPoint = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n }\n\n _previousSegmentPoint(categoryIx, pointIx, segmentIx, seriesIdx) {\n const seriesPoints = this.seriesPoints;\n let index = seriesIdx;\n let point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n }\n\n _createGapStackPoint(categoryIx) {\n const options = this.pointOptions({}, 0);\n const point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\nexport default AreaChart;\n","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nclass AxisGroupRangeTracker extends Class {\n constructor() {\n super();\n\n this.axisRanges = {};\n }\n\n update(chartAxisRanges) {\n const axisRanges = this.axisRanges;\n\n for (let axisName in chartAxisRanges) {\n const chartRange = chartAxisRanges[axisName];\n let range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n }\n\n reset(axisName) {\n this.axisRanges[axisName] = undefined;\n }\n\n query(axisName) {\n return this.axisRanges[axisName];\n }\n}\n\nexport default AxisGroupRangeTracker;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nclass BarLabel extends ChartElement {\n constructor(content, options, pointData) {\n super(options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n }\n\n createVisual() {\n this.textBox.options.noclip = this.options.noclip;\n }\n\n reflow(targetBox) {\n const options = this.options;\n const { vertical, aboveAxis } = options;\n const text = this.children[0];\n const textOptions = text.options;\n const box = text.box;\n const padding = text.options.padding;\n let labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n }\n\n alignToClipBox(clipBox) {\n const vertical = this.options.vertical;\n const field = vertical ? Y : X;\n const start = field + \"1\";\n const end = field + \"2\";\n const text = this.children[0];\n const parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n const targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n }\n}\n\nsetDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n});\n\nexport default BarLabel;","export default function hasGradientOverlay(options) {\n const overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nconst BAR_ALIGN_MIN_WIDTH = 6;\n\nclass Bar extends ChartElement {\n constructor(value, options) {\n super();\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n const pointData = this.pointData();\n let labelTemplate = getTemplate(labels);\n let labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText,\n deepExtend({\n vertical: options.vertical\n },\n labels\n ), pointData);\n this.append(this.label);\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n reflow(targetBox) {\n this.render();\n\n const label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (let i = 0; i < this.errorBars.length; i++) {\n this.errorBars[i].reflow(targetBox);\n }\n }\n }\n\n createVisual() {\n const { box, options } = this;\n const customVisual = options.visual;\n\n if (this.visible !== false) {\n super.createVisual();\n\n if (customVisual) {\n const visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: () => {\n const group = new draw.Group();\n this.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n }\n\n createRect(visual) {\n const options = this.options;\n const border = options.border;\n const strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n const rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n const path = this.rectVisual = draw.Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n const width = this.box.width();\n const height = this.box.height();\n\n const size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n const overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n }\n\n createHighlight(style) {\n const highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n }\n\n highlightVisual() {\n return this.rectVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n }\n\n getBorderColor() {\n const color = this.color;\n const border = this.options.border;\n const brightness = border._brightness || BORDER_BRIGHTNESS;\n let borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n }\n\n tooltipAnchor() {\n const { options, box, aboveAxis } = this;\n const clipBox = this.owner.pane.clipBox() || box;\n let horizontalAlign = LEFT;\n let verticalAlign = TOP;\n let x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n const x1 = Math.max(box.x1, clipBox.x1);\n const x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n }\n}\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\n\nBar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default Bar;","export function forEach(elements, callback) {\n elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n const length = elements.length;\n\n for (let idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n}","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nclass ClusterLayout extends ChartElement {\n constructor(options) {\n super(options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n reflow(box) {\n const { vertical, gap, spacing } = this.options;\n const children = this.children;\n const count = children.length;\n const axis = vertical ? Y : X;\n const slots = count + gap + (spacing * (count - 1));\n const slotSize = (vertical ? box.height() : box.width()) / slots;\n let position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, (child, idx) => {\n const childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n }\n}\n\nsetDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nclass StackWrap extends ChartElement {\n reflow(targetBox) {\n const positionAxis = this.options.vertical ? X : Y;\n const children = this.children;\n const childrenCount = children.length;\n let box = this.box = new Box();\n\n for (let i = 0; i < childrenCount; i++) {\n const currentChild = children[i];\n\n if (currentChild.visible !== false) {\n const childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n }\n}\n\nsetDefaultOptions(StackWrap, {\n vertical: true\n});\n\nexport default StackWrap;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nclass BarChart extends CategoricalChart {\n\n render() {\n super.render();\n this.updateStackRange();\n }\n\n pointType() {\n return Bar;\n }\n\n clusterType() {\n return ClusterLayout;\n }\n\n stackType() {\n return StackWrap;\n }\n\n stackLimits(axisName, stackName) {\n const limits = super.stackLimits(axisName, stackName);\n\n return limits;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { options, children } = this;\n const isStacked = options.isStacked;\n const value = this.pointValue(data);\n let pointOptions = this.pointOptions(series, seriesIx);\n\n const labelOptions = pointOptions.labels;\n if (isStacked) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = isStacked;\n\n let color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const pointType = this.pointType();\n const point = new pointType(value, pointOptions);\n point.color = color;\n\n let cluster = children[categoryIx];\n if (!cluster) {\n const clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (isStacked) {\n const stackWrap = this.getStackWrap(series, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n }\n\n getStackWrap(series, cluster) {\n const stack = series.stack;\n const stackGroup = stack ? stack.group || stack : stack;\n const wraps = cluster.children;\n let stackWrap;\n\n if (typeof stackGroup === STRING) {\n for (let i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n } else {\n stackWrap = wraps[0];\n }\n\n if (!stackWrap) {\n const stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n }\n\n categorySlot(categoryAxis, categoryIx, valueAxis) {\n const options = this.options;\n const categorySlot = categoryAxis.getSlot(categoryIx);\n const startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n const zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n const stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n }\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n createAnimation() {\n this._setAnimationOptions();\n super.createAnimation();\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n }\n\n _setChildrenAnimation() {\n const points = this.points;\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n const pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this.options.animation;\n point.createAnimation();\n }\n }\n }\n\n _setAnimationOptions() {\n const options = this.options;\n const animation = options.animation || {};\n let origin;\n\n if (options.isStacked) {\n const valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new geom.Point(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n }\n}\n\nsetDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n});\n\nexport default BarChart;","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass Candlestick extends ChartElement {\n constructor(value, options) {\n super(options);\n this.value = value;\n }\n\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n const ocSlot = valueAxis.getSlot(value.open, value.close);\n const lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n const mid = lhSlot.center().x;\n const points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n }\n\n reflowNote() {\n if (this.note) {\n this.note.reflow(this.box);\n }\n }\n\n createVisual() {\n super.createVisual();\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n }\n\n mainVisual(options) {\n const group = new draw.Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n }\n\n createBody(container, options) {\n const body = draw.Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n }\n\n createLines(container, options) {\n this.drawLines(container, options, this.lines, options.line);\n }\n\n drawLines(container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n const lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (let i = 0; i < lines.length; i++) {\n const line = draw.Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n }\n\n getBorderColor() {\n const border = this.options.border;\n let borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n }\n\n createOverlay() {\n const overlay = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n }\n\n createHighlight() {\n const highlight = this.options.highlight;\n const normalColor = this.color;\n\n this.color = highlight.color || this.color;\n const overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n }\n\n highlightVisual() {\n return this._mainVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n }\n\n tooltipAnchor() {\n const box = this.box;\n const clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n}\n\nsetDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {4:d}
    Open:{0:C}
    High:{1:C}
    Low:{2:C}
    Close:{3:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\n\nexport default Candlestick;","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n return countNumbers(values) === values.length;\n}","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nclass CandlestickChart extends CategoricalChart {\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n addValue(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { children, options } = this;\n const value = data.valueFields;\n const valueParts = this.splitValue(value);\n const hasValue = areNumbers(valueParts);\n const dataItem = series.data[categoryIx];\n let categoryPoints = this.categoryPoints[categoryIx];\n let point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n }\n\n pointType() {\n return Candlestick;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const pointType = this.pointType();\n const value = data.valueFields;\n let pointOptions = deepExtend({}, series);\n let color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (series.type === CANDLESTICK) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n const point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n }\n\n splitValue(value) {\n return [ value.low, value.open, value.close, value.high ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n const parts = this.splitValue(value);\n let axisRange = this.valueAxisRanges[axisName];\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n }\n\n animationPoints() {\n return this.points;\n }\n}\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nclass BoxPlot extends Candlestick {\n constructor(value, options) {\n super(value, options);\n\n this.createNote();\n }\n\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n let whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n const medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n const meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n }\n\n reflowBoxSlot(box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n }\n\n reflowWhiskerSlot(box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n }\n\n calcMeanPoints(box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n }\n\n calcWhiskerPoints(boxSlot, whiskerSlot) {\n const mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n }\n\n calcMedianPoints(box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n }\n\n renderOutliers(options) {\n const value = this.value;\n const outliers = value.outliers || [];\n const outerFence = Math.abs(value.q3 - value.q1) * 3;\n const elements = [];\n let markers = options.markers || {};\n\n for (let i = 0; i < outliers.length; i++) {\n const outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n let markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this.color)) {\n markersBorder.color = this.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n const shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n }\n\n reflowOutliers(outliers) {\n const valueAxis = this.owner.seriesValueAxis(this.options);\n const center = this.box.center();\n\n for (let i = 0; i < outliers.length; i++) {\n const outlierValue = outliers[i].value;\n const markerBox = valueAxis.getSlot(outlierValue);\n\n if (this.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this.box = this.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n }\n\n mainVisual(options) {\n const group = super.mainVisual(options);\n const outliers = this.renderOutliers(options);\n\n for (let i = 0; i < outliers.length; i++) {\n const element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n }\n\n createLines(container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n }\n\n getBorderColor() {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return super.getBorderColor();\n }\n}\n\nsetDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {6:d}
    Lower:{0:C}
    Q1:{1:C}
    Median:{2:C}
    Mean:{5:C}
    Q3:{3:C}
    Upper:{4:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nclass VerticalBoxPlot extends BoxPlot {\n reflowBoxSlot(box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n }\n\n reflowWhiskerSlot(box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n }\n\n calcMeanPoints(box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n }\n\n calcWhiskerPoints(boxSlot, whiskerSlot) {\n const mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n }\n\n calcMedianPoints(box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n }\n}\n\nexport default VerticalBoxPlot;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nclass BoxPlotChart extends CandlestickChart {\n addValue(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { children, options } = this;\n const value = data.valueFields;\n const valueParts = this.splitValue(value);\n const hasValue = areNumbers(valueParts);\n const dataItem = series.data[categoryIx];\n let categoryPoints = this.categoryPoints[categoryIx];\n let point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n }\n\n pointType() {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n }\n\n splitValue(value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n let axisRange = this.valueAxisRanges[axisName];\n let parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n }\n\n filterOutliers(items) {\n const length = (items || []).length;\n const result = [];\n\n for (let i = 0; i < length; i++) {\n const item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\nexport default BoxPlotChart;\n","import ErrorBarBase from './error-bar-base';\n\nclass ScatterErrorBar extends ErrorBarBase {\n getAxis() {\n const axes = this.chart.seriesAxes(this.series);\n const axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n }\n}\n\nexport default ScatterErrorBar;","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n return defined(value) && value !== null;\n}","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\nimport CategoricalChart from '../categorical-chart';\n\nimport hasValue from '../utils/has-value';\nimport evalOptions from '../utils/eval-options';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nclass ScatterChart extends ChartElement {\n constructor(plotArea, options) {\n\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n _initFields() {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n addErrorBar(point, field, fields) {\n const value = point.value[field];\n const valueErrorField = field + \"Value\";\n const lowField = field + \"ErrorLow\";\n const highField = field + \"ErrorHigh\";\n const { seriesIx, series } = fields;\n const errorBars = point.options.errorBars;\n const lowValue = fields[lowField];\n const highValue = fields[highField];\n\n if (isNumber(value)) {\n let errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n }\n\n addPointErrorBar(errorRange, point, field) {\n const { low, high } = errorRange;\n const { series, options: { errorBars: options } } = point;\n const isVertical = field === Y;\n const item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n const errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n }\n\n addValue(value, fields) {\n const { x, y } = value;\n const seriesIx = fields.seriesIx;\n const series = this.options.series[seriesIx];\n const missingValues = this.seriesMissingValues(series);\n const seriesPoints = this.seriesPoints[seriesIx];\n\n let pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n let point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n Object.assign(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n }\n\n seriesMissingValues(series) {\n return series.missingValues;\n }\n\n createMissingValue() {}\n\n updateRange(value, series) {\n const intlService = this.chartService.intl;\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n let { x, y } = value;\n let xAxisRange = this.xAxisRanges[xAxisName];\n let yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n }\n\n evalPointOptions(options, value, fields) {\n const { series, seriesIx } = fields;\n const state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n }\n\n pointType() {\n return LinePoint;\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n let pointOptions = this.pointOptions(series, fields.seriesIx);\n let color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n seriesAxes(series) {\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n const plotArea = this.plotArea;\n const xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n const yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n }\n\n reflow(targetBox) {\n const chartPoints = this.points;\n const limit = !this.options.clip;\n let pointIx = 0;\n\n\n this.traverseDataPoints((value, fields) => {\n const point = chartPoints[pointIx++];\n const seriesAxes = this.seriesAxes(fields.series);\n const slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n const slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n const pointSlot = this.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n }\n\n pointSlot(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n traverseDataPoints(callback) {\n const { options: { series }, seriesPoints } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields: value, fields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this\n }, fields));\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n}\nsetDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default ScatterChart;","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\n\nclass Bubble extends LinePoint {\n constructor(value, options) {\n super(value, options);\n\n this.category = value.category;\n }\n\n createHighlight() {\n const highlight = this.options.highlight;\n const border = highlight.border;\n const markers = this.options.markers;\n const center = this.box.center();\n const radius = (markers.size + markers.border.width + border.width) / 2;\n const highlightGroup = new draw.Group();\n const shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n const overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n }\n}\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass BubbleChart extends ScatterChart {\n _initFields() {\n this._maxSize = MIN_VALUE;\n super._initFields();\n }\n\n addValue(value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n super.addValue(value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n }\n\n reflow(box) {\n this.updateBubblesSize(box);\n super.reflow(box);\n }\n\n pointType() {\n return Bubble;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n const pointsCount = series.data.length;\n const delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n const animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n let color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n let pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n const point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n updateBubblesSize(box) {\n const { options: { series } } = this;\n const boxSize = Math.min(box.width(), box.height());\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesPoints = this.seriesPoints[seriesIx];\n const minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n const maxSize = currentSeries.maxSize || boxSize * 0.2;\n const minR = minSize / 2;\n const maxR = maxSize / 2;\n const minArea = Math.PI * minR * minR;\n const maxArea = Math.PI * maxR * maxR;\n const areaRange = maxArea - minArea;\n const areaRatio = areaRange / this._maxSize;\n\n for (let pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n const point = seriesPoints[pointIx];\n if (point) {\n const area = Math.abs(point.value.size) * areaRatio;\n const radius = Math.sqrt((minArea + area) / Math.PI);\n const baseZIndex = valueOrDefault(point.options.zIndex, 0);\n const zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n }\n\n createAnimation() {}\n createVisual() {}\n}\n\nsetDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n});\n\nexport default BubbleChart;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nclass Target extends ShapeElement { }\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { ChartElement, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass Bullet extends ChartElement {\n constructor(value, options) {\n super(options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n render() {\n const options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createNote();\n }\n }\n\n reflow(box) {\n this.render();\n\n const { options, target, owner: chart } = this;\n const invertAxes = options.invertAxes;\n const valueAxis = chart.seriesValueAxis(this.options);\n const categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n const targetValueSlot = valueAxis.getSlot(this.value.target);\n const targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n const targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n const targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n const body = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n }\n\n createAnimation() {\n if (this.bodyVisual) {\n this.animation = draw.Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n }\n\n createHighlight(style) {\n return draw.Path.fromRect(this.box.toRect(), style);\n }\n\n highlightVisual() {\n return this.bodyVisual;\n }\n\n highlightVisualArgs() {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n}\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\nsetDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n tooltip: {\n format: \"Current: {0}
    Target: {1}\"\n }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\n\nexport default Bullet;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nclass BulletChart extends CategoricalChart {\n constructor(plotArea, options) {\n\n wrapData(options);\n\n super(plotArea, options);\n }\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n plotRange(point) {\n const series = point.series;\n const valueAxis = this.seriesValueAxis(series);\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { options, children } = this;\n const value = data.valueFields;\n\n let bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n let color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(\n bulletOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n const bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n }\n\n updateRange(value, fields) {\n const { current, target } = value;\n const axisName = fields.series.axis;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n }\n\n pointValue(data) {\n return data.valueFields.current;\n }\n\n aboveAxis(point) {\n const value = point.value.current;\n\n return value > 0;\n }\n\n createAnimation() {\n const points = this.points;\n\n this._setAnimationOptions();\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n point.options.animation = this.options.animation;\n point.createAnimation();\n }\n }\n}\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n});\n\nfunction wrapData(options) {\n const series = options.series;\n\n for (let i = 0; i < series.length; i++) {\n const seriesItem = series[i];\n const data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n}\n\nexport default BulletChart;","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nclass BaseTooltip extends Class {\n constructor(chartService, options) {\n super();\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n }\n\n getStyle(options, point) {\n let { background, border: { color: border } } = options;\n\n if (point) {\n const pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n const padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n }\n\n show(options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n const style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n const background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n }\n\n hide() {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n }\n\n destroy() {\n delete this.chartService;\n }\n}\n\nsetDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nclass CrosshairTooltip extends BaseTooltip {\n constructor(chartService, crosshair, options) {\n super(chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n }\n\n initAxisName() {\n const axis = this.crosshair.axis;\n const plotArea = axis.plotArea;\n let name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n }\n\n showAt(point) {\n const { crosshair: { axis }, options } = this;\n let value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n let formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n }\n\n hide() {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n }\n\n getAnchor() {\n const { crosshair, options: { position, padding } } = this;\n const vertical = !crosshair.axis.options.vertical;\n const lineBox = crosshair.line.bbox();\n let horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n}\n\nsetDefaultOptions(CrosshairTooltip, {\n padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass Crosshair extends ChartElement {\n constructor(chartService, axis, options) {\n super(options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n const tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n }\n\n showAt(point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n }\n\n hide() {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n }\n\n moveLine() {\n const { axis, point } = this;\n const vertical = axis.options.vertical;\n const box = this.getBox();\n const dim = vertical ? Y : X;\n const lineStart = new geom.Point(box.x1, box.y1);\n let lineEnd;\n\n if (vertical) {\n lineEnd = new geom.Point(box.x2, box.y1);\n } else {\n lineEnd = new geom.Point(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n const slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n }\n\n getBox() {\n const axis = this.axis;\n const axes = axis.pane.axes;\n const length = axes.length;\n const vertical = axis.options.vertical;\n const box = axis.lineBox().clone();\n const dim = vertical ? X : Y;\n let axisLineBox;\n\n for (let i = 0; i < length; i++) {\n const currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n this.line = new draw.Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n }\n\n destroy() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n super.destroy();\n }\n}\n\nsetDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n});\n\nexport default Crosshair;","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nclass ChartContainer extends ChartElement {\n constructor(options, pane) {\n super(options);\n this.pane = pane;\n }\n\n shouldClip() {\n const children = this.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n }\n\n _clipBox() {\n return this.pane.chartsBox();\n }\n\n createVisual() {\n this.visual = new draw.Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n const clipBox = this.clipBox = this._clipBox();\n const clipRect = clipBox.toRect();\n const clipPath = draw.Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n }\n\n stackRoot() {\n return this;\n }\n\n unclipLabels() {\n const { children: charts, clipBox } = this;\n\n for (let i = 0; i < charts.length; i++) {\n const points = charts[i].points || {};\n const length = points.length;\n\n for (let j = 0; j < length; j++) {\n const point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n const { label, note } = point;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n }\n\n destroy() {\n super.destroy();\n\n delete this.parent;\n }\n}\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nclass Pane extends BoxElement {\n constructor(options) {\n super(options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n }\n\n createTitle() {\n let titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, this, Pane.prototype.options.title);\n }\n\n appendAxis(axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n }\n\n appendAxisAt(axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n }\n\n appendChart(chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n }\n\n empty() {\n const plotArea = this.parent;\n\n if (plotArea) {\n for (let i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this.axes[i]);\n }\n\n for (let i = 0; i < this.charts.length; i++) {\n plotArea.removeChart(this.charts[i]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n }\n\n reflow(targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n let content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n super.reflow(targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n }\n\n visualStyle() {\n const style = super.visualStyle();\n style.zIndex = -10;\n\n return style;\n }\n\n renderComplete() {\n if (this.options.visible) {\n this.createGridLines();\n }\n }\n\n stackRoot() {\n return this;\n }\n\n clipRoot() {\n return this;\n }\n\n createGridLines() {\n const axes = this.axes;\n const allAxes = axes.concat(this.parent.axes);\n const vGridLines = [];\n const hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const vertical = axis.options.vertical;\n const gridLines = vertical ? vGridLines : hGridLines;\n for (let j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n const altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n }\n\n refresh() {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n }\n\n chartsBox() {\n const axes = this.axes;\n const length = axes.length;\n const chartsBox = new Box();\n\n for (let idx = 0; idx < length; idx++) {\n const axis = axes[idx];\n const axisValueField = axis.options.vertical ? Y : X;\n const lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n const allAxes = this.parent.axes;\n const length = allAxes.length;\n\n for (let idx = 0; idx < length; idx++) {\n const axis = allAxes[idx];\n if (!axis.options.vertical) {\n const lineBox = axis.lineBox();\n chartsBox.x1 = lineBox.x1;\n chartsBox.x2 = lineBox.x2;\n }\n }\n }\n return chartsBox;\n }\n\n clipBox() {\n return this.chartContainer.clipBox;\n }\n\n notifyRender() {\n const service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n }\n}\n\nlet ID = 1;\n\nfunction paneID() {\n return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n});\n\nexport default Pane;\n","export default function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n const visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n const pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n}\n\n","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n const data = series.data;\n const points = [];\n let sum = 0;\n let count = 0;\n\n for (let idx = 0; idx < data.length; idx++) {\n const pointData = SeriesBinder.current.bindPoint(series, idx);\n let value = pointData.valueFields.value;\n\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n}","export default function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n const result = [];\n\n const seriesTypes = [].concat(types);\n for (let idx = 0; idx < series.length; idx++) {\n const currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n}","import { parseDate } from '../../date-utils';\nimport { getter } from '../../common';\n\nexport default function getDateField(field, row, intlService) {\n if (row === null) {\n return row;\n }\n\n const key = \"_date_\" + field;\n let value = row[key];\n\n if (!value) {\n value = parseDate(intlService, getter(field, true)(row));\n row[key] = value;\n }\n\n return value;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n const type = axisOptions.type;\n const dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","export default function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nconst AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n const fields = SeriesBinder.current.bindPoint(series, null, item);\n const valueFields = fields.valueFields;\n\n for (let field in valueFields) {\n if (convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n}\n\nfunction findNext({ start, dir, min, max, getter, hasItem, series }) {\n let pointHasValue, outPoint;\n let idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter(idx);\n pointHasValue = hasValue(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n const { min, max } = range;\n const hasMinPoint = min > 0 && min < count;\n const hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n const missingValues = seriesMissingValues(series);\n let minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter(max + 1);\n }\n } else {\n let outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter(min - 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter(max + 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString, limitValue, round, setDefaultOptions } from '../../common';\n\nclass PlotAreaBase extends ChartElement {\n constructor(series, options, chartService) {\n super(options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.items = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n }\n\n initFields() { }\n\n initSeries() {\n const series = this.series;\n\n for (let i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n }\n\n createPanes() {\n const titleOptions = this.options.title || {};\n const paneDefaults = this.options.paneDefaults;\n const paneOptions = this.options.panes || [];\n const panesLength = Math.max(paneOptions.length, 1);\n const panes = [];\n\n const defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (let i = 0; i < panesLength; i++) {\n const options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n const currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this.append(currentPane);\n }\n\n this.panes = panes;\n }\n\n crosshairOptions(axis) {\n return axis.options.crosshair;\n }\n\n createCrosshairs(panes = this.panes) {\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n for (let j = 0; j < pane.axes.length; j++) {\n const axis = pane.axes[j];\n const options = this.crosshairOptions(axis);\n if (options && options.visible) {\n const currentCrosshair = new Crosshair(this.chartService, axis, options);\n\n this.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n }\n\n removeCrosshairs(pane) {\n const crosshairs = this.crosshairs;\n const axes = pane.axes;\n\n for (let i = crosshairs.length - 1; i >= 0; i--) {\n for (let j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n }\n\n hideCrosshairs() {\n const crosshairs = this.crosshairs;\n for (let idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n }\n\n findPane(name) {\n const panes = this.panes;\n let matchingPane;\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n }\n\n findPointPane(point) {\n const panes = this.panes;\n let matchingPane;\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n }\n\n appendAxis(axis) {\n const pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n }\n\n removeAxis(axisToRemove) {\n const filteredAxes = [];\n\n for (let i = 0; i < this.axes.length; i++) {\n const axis = this.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n }\n\n appendChart(chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n }\n\n removeChart(chartToRemove) {\n const filteredCharts = [];\n\n for (let i = 0; i < this.charts.length; i++) {\n const chart = this.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n }\n\n addToLegend(series) {\n const count = series.length;\n const legend = this.options.legend;\n const labels = legend.labels || {};\n const inactiveItems = legend.inactiveItems || {};\n const inactiveItemsLabels = inactiveItems.labels || {};\n const data = [];\n\n for (let i = 0; i < count; i++) {\n const currentSeries = series[i];\n const seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n let text = currentSeries.name;\n const labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n const defaults = currentSeries._defaults;\n let color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n let itemLabelOptions, markerColor;\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.items, data);\n }\n\n groupAxes(panes) {\n const xAxes = [];\n const yAxes = [];\n\n for (let paneIx = 0; paneIx < panes.length; paneIx++) {\n const paneAxes = panes[paneIx].axes;\n for (let axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n const axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n }\n\n groupSeriesByPane() {\n const series = this.series;\n const seriesByPane = {};\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const pane = this.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n }\n\n filterVisibleSeries(series) {\n const result = [];\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n }\n\n reflow(targetBox) {\n const options = this.options.plotArea;\n const panes = this.panes;\n const margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n }\n\n redraw(panes) {\n const panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n const root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (let i = 0; i < panesArray.length; i++) {\n this.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (let i = 0; i < panesArray.length; i++) {\n panesArray[i].refresh();\n }\n }\n\n axisCrossingValues(axis, crossingAxes) {\n const options = axis.options;\n const crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n const valuesToAdd = crossingAxes.length - crossingValues.length;\n const defaultValue = crossingValues[0] || 0;\n\n for (let i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n }\n\n alignAxisTo(axis, targetAxis, crossingValue, targetCrossingValue) {\n const slot = axis.getSlot(crossingValue, crossingValue, true);\n const slotEdge = axis.options.reverse ? 2 : 1;\n const targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n const targetEdge = targetAxis.options.reverse ? 2 : 1;\n const axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n }\n\n alignAxes(xAxes, yAxes) {\n const xAnchor = xAxes[0];\n const yAnchor = yAxes[0];\n const xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n const yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n const leftAnchors = {};\n const rightAnchors = {};\n const topAnchors = {};\n const bottomAnchors = {};\n\n for (let i = 0; i < yAxes.length; i++) {\n const axis = yAxes[i];\n const pane = axis.pane;\n const paneId = pane.id;\n const visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n const anchor = paneAnchor(xAxes, pane) || xAnchor;\n let anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this.axisCrossingValues(anchor, yAxes);\n }\n\n this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0 && yAnchor.pane === axis.pane) {\n axis.alignTo(yAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (let i = 0; i < xAxes.length; i++) {\n const axis = xAxes[i];\n const pane = axis.pane;\n const paneId = pane.id;\n const visible = axis.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n const anchor = paneAnchor(yAxes, pane) || yAnchor;\n let anchorCrossings = yAnchorCrossings;\n if (anchor !== yAnchor) {\n anchorCrossings = this.axisCrossingValues(anchor, xAxes);\n }\n\n this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().y1) === round(anchor.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(topAnchors[paneId].box, TOP)\n .translate(0, -axis.options.margin)\n );\n }\n\n if (visible) {\n topAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().y2, COORD_PRECISION) === round(anchor.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(bottomAnchors[paneId].box, BOTTOM)\n .translate(0, axis.options.margin)\n );\n }\n\n if (visible) {\n bottomAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0) {\n axis.alignTo(xAnchor);\n axis.reflow(axis.box);\n }\n }\n }\n\n shrinkAxisWidth(panes) {\n const axes = this.groupAxes(panes).any;\n const axisBox = axisGroupBox(axes);\n let overflowX = 0;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n }\n\n shrinkAxisHeight(panes) {\n let shrinked;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n const axes = currentPane.axes;\n const overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (let j = 0; j < axes.length; j++) {\n const currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n }\n\n fitAxes(panes) {\n const axes = this.groupAxes(panes).any;\n let offsetX = 0;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n const paneAxes = currentPane.axes;\n const paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n const axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n const offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n for (let j = 0; j < paneAxes.length; j++) {\n const currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n\n currentAxis.reflow(\n currentAxis.box.translate(offsetX, 0)\n );\n }\n }\n\n reflowAxes(panes) {\n const axes = this.groupAxes(panes);\n\n for (let i = 0; i < panes.length; i++) {\n this.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n }\n\n autoRotateAxisLabels(groupedAxes) {\n const { panes } = this;\n const axes = allPaneAxes(panes);\n let rotated;\n\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (let idx = 0; idx < panes.length; idx++) {\n this.reflowPaneAxes(panes[idx]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n }\n\n reflowPaneAxes(pane) {\n const axes = pane.axes;\n const length = axes.length;\n\n if (length > 0) {\n for (let i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n }\n\n reflowCharts(panes) {\n const charts = this.charts;\n const count = charts.length;\n const box = this.box;\n\n for (let i = 0; i < count; i++) {\n const chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n }\n\n reflowPanes() {\n const { box, panes } = this;\n const panesLength = panes.length;\n let remainingHeight = box.height();\n let remainingPanes = panesLength;\n let autoHeightPanes = 0;\n let top = box.y1;\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n const height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n const percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n\n if (!currentPane.options.height) {\n currentPane.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n const paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane.reflow(paneBox);\n\n remainingPanes--;\n top += currentPane.options.height;\n }\n }\n\n backgroundBox() {\n const axes = this.axes;\n const axesCount = axes.length;\n let box;\n\n for (let i = 0; i < axesCount; i++) {\n const axisA = axes[i];\n\n for (let j = 0; j < axesCount; j++) {\n const axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n const lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n }\n\n chartsBoxes() {\n const panes = this.panes;\n const boxes = [];\n\n for (let idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n }\n\n addBackgroundPaths(multipath) {\n const boxes = this.chartsBoxes();\n for (let idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n }\n }\n\n backgroundContainsPoint(point) {\n const boxes = this.chartsBoxes();\n for (let idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options.plotArea;\n let { opacity, background, border = {} } = options;\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n const bg = this._bgVisual = new draw.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n }\n\n pointsByCategoryIndex(categoryIndex) {\n const charts = this.charts;\n const result = [];\n\n if (categoryIndex !== null) {\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n const points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n }\n\n pointsBySeriesIndex(seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n }\n\n pointsBySeriesName(name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n }\n\n filterPoints(callback) {\n const charts = this.charts;\n const result = [];\n\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n const points = chart.points;\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n }\n\n findPoint(callback) {\n const charts = this.charts;\n\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n const points = chart.points;\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n }\n\n paneByPoint(point) {\n const panes = this.panes;\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n }\n\n detachLabels() {\n const axes = this.groupAxes(this.panes);\n const xAxes = axes.x;\n const yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n }\n\n detachAxisGroupLabels(axes, crossingAxes) {\n let labelAxisCount = 0;\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const pane = axis.pane;\n const anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n const axisIndex = i + labelAxisCount;\n const labelAxis = this.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n const pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n }\n\n createLabelAxis(axis, axisIndex, anchor) {\n const labelOptions = axis.options.labels;\n const position = labelOptions.position;\n const onAxis = position !== END && position !== START;\n const visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n const allAxes = this.groupAxes(this.panes);\n const crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n const anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n const end = position === END;\n const range = anchor.range();\n const edge = end ? range.max : range.min;\n const crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n const labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n }\n}\n\nfunction isSingleAxis(axis) {\n return !axis.pane.axes.some((a) =>\n a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false\n );\n}\n\nfunction axisGroupBox(axes) {\n const length = axes.length;\n let box;\n\n for (let i = 0; i < length; i++) {\n const axis = axes[i];\n const visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n const axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n for (let i = 0; i < axes.length; i++) {\n const anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n}\n\nfunction isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nconst allPaneAxes = (panes) => panes.reduce((acc, pane) => acc.concat(pane.axes), []);\n\nsetDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n});\n\nexport default PlotAreaBase;\n","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nconst PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n};\n\nexport default PlotAreaEventsMixin;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nclass SeriesAggregator extends Class {\n constructor(series, binder, defaultAggregates) {\n super();\n\n const canonicalFields = binder.canonicalFields(series);\n const valueFields = binder.valueFields(series);\n const sourceFields = binder.sourceFields(series, canonicalFields);\n const seriesFields = this._seriesFields = [];\n const defaults = defaultAggregates.query(series.type);\n const rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (let i = 0; i < canonicalFields.length; i++) {\n const field = canonicalFields[i];\n let fieldAggregate;\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n }\n\n aggregatePoints(srcPoints, group) {\n const { _series: series, _seriesFields: seriesFields } = this;\n const data = this._bindPoints(srcPoints || []);\n const firstDataItem = data.dataItems[0];\n let result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n const fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (let i = 0; i < seriesFields.length; i++) {\n const field = seriesFields[i];\n const srcValues = this._bindField(data.values, field.canonicalName);\n const value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n }\n\n _bindPoints(points) {\n const { _binder: binder, _series: series } = this;\n const values = [];\n const dataItems = [];\n\n for (let i = 0; i < points.length; i++) {\n const pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n }\n\n _bindField(data, field) {\n const values = [];\n const count = data.length;\n\n for (let i = 0; i < count; i++) {\n const item = data[i];\n const valueFields = item.valueFields;\n let value;\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n }\n}\n\nfunction setValue(fieldName, target, value) {\n let parentObj = target;\n let field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n const parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import { Class } from '../../common';\n\nclass DefaultAggregates extends Class {\n constructor() {\n super();\n\n this._defaults = {};\n }\n\n register(seriesTypes, aggregates) {\n for (let i = 0; i < seriesTypes.length; i++) {\n this._defaults[seriesTypes[i]] = aggregates;\n }\n }\n\n query(seriesType) {\n return this._defaults[seriesType];\n }\n}\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Bar from '../bar-chart/bar';\nimport BarLabel from '../bar-chart/bar-label';\n\nimport { deepExtend, getTemplate } from '../../common';\n\nclass RangeBar extends Bar {\n createLabel() {\n const labels = this.options.labels;\n const fromOptions = deepExtend({}, labels, labels.from);\n const toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this._createLabel(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this._createLabel(toOptions);\n this.append(this.labelTo);\n }\n }\n\n _createLabel(options) {\n const labelTemplate = getTemplate(options);\n const pointData = this.pointData();\n\n let labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(options.format);\n }\n\n return new BarLabel(labelText,\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), pointData);\n }\n\n reflow(targetBox) {\n this.render();\n\n const { labelFrom, labelTo, value } = this;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n }\n}\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n});\n\nexport default RangeBar;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nclass RangeBarChart extends BarChart {\n pointType() {\n return RangeBar;\n }\n\n pointValue(data) {\n return data.valueFields;\n }\n\n formatPointValue(point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n }\n\n plotRange(point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n const { from, to } = value;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n }\n\n aboveAxis(point) {\n const value = point.value;\n return value.from < value.to;\n }\n}\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import LinePoint from '../line-chart/line-point';\n\nclass RangeLinePoint extends LinePoint {\n aliasFor() {\n return this.parent;\n }\n}\n\nexport default RangeLinePoint;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\n\nconst AUTO = 'auto';\nconst DEFAULT_FROM_FORMAT = '{0}';\nconst DEFAULT_TO_FORMAT = '{1}';\n\nclass RangeAreaPoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this.initLabelsFormat();\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n const { markers, labels } = this.options;\n const value = this.value;\n\n const fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n const toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n }\n\n reflow(targetBox) {\n this.render();\n\n const { from: fromBox, to: toBox } = targetBox;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n }\n\n createHighlight() {\n const group = new draw.Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n }\n\n highlightVisual() {\n return this.visual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n }\n\n tooltipAnchor() {\n const clipBox = this.owner.pane.clipBox();\n const showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n const box = this.box;\n const center = box.center();\n const horizontalAlign = LEFT;\n let x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n unclipElements() {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n }\n\n initLabelsFormat() {\n const labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = Object.assign({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = Object.assign({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n }\n\n positionLabels(fromBox, toBox) {\n const { labels, vertical } = this.options;\n\n if (labels.position === AUTO) {\n let fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n }\n\n copyFields(point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n }\n}\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nclass RangeAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n }\n\n createStroke(style) {\n const toPath = new draw.Path(style);\n const fromPath = new draw.Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n }\n\n hasStackSegment() {\n return true;\n }\n\n fromPoints() {\n return this.linePoints.map(point => point.fromPoint);\n }\n\n toPoints() {\n return this.linePoints.map(point => point.toPoint);\n }\n}\n\nexport default RangeAreaSegment;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nclass SplineRangeAreaSegment extends RangeAreaSegment {\n\n createStrokeSegments() {\n return this.createCurveSegments(this.toPoints());\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n }\n\n createCurveSegments(points) {\n const curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n }\n\n\n}\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nclass StepRangeAreaSegment extends RangeAreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n }\n}\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nclass RangeAreaChart extends CategoricalChart {\n\n render() {\n super.render();\n\n this.renderSegments();\n }\n\n pointType() {\n return RangeAreaPoint;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n let value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n let pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n let color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = (currentSeries.line || {}).style;\n let segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n }\n\n plotRange(point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n }\n\n valueSlot(valueAxis, plotRange) {\n const fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n const toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n }\n\n pointSlot(categorySlot, valueSlot) {\n const { from, to } = valueSlot;\n let fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n\n addValue(data, fields) {\n const valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n super.addValue(data, fields);\n }\n\n updateRange(value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n const axisName = fields.series.axis;\n const axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n const { from, to } = value;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n }\n}\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import Candlestick from '../candlestick-chart/candlestick';\n\nclass OHLCPoint extends Candlestick {\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n const oPoints = [];\n const cPoints = [];\n const lhPoints = [];\n\n const lhSlot = valueAxis.getSlot(value.low, value.high);\n const oSlot = valueAxis.getSlot(value.open, value.open);\n const cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n const mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n }\n\n createBody() {}\n}\n\nexport default OHLCPoint;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nclass OHLCChart extends CandlestickChart {\n pointType() {\n return OHLCPoint;\n }\n}\n\nexport default OHLCChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nclass WaterfallSegment extends ChartElement {\n constructor(from, to, series) {\n super();\n\n this.from = from;\n this.to = to;\n this.series = series;\n }\n\n linePoints() {\n const from = this.from;\n const { from: { box: fromBox }, to: { box: toBox } } = this;\n const points = [];\n\n if (from.isVertical) {\n const y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n const x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n }\n\n createVisual() {\n super.createVisual();\n\n const line = this.series.line || {};\n\n const path = draw.Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n}\n\nsetDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n});\n\nexport default WaterfallSegment;","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nclass WaterfallChart extends BarChart {\n render() {\n super.render();\n this.createSegments();\n }\n\n traverseDataPoints(callback) {\n const series = this.options.series;\n const totalCategories = categoriesCount(series);\n const isVertical = !this.options.invertAxes;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n let total = 0;\n let runningTotal = 0;\n\n for (let categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n const data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n const value = data.valueFields.value;\n const summary = data.fields.summary;\n let from = total;\n let to;\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n }\n\n updateRange(value, fields) {\n super.updateRange({ value: fields.to }, fields);\n }\n\n aboveAxis(point) {\n return point.value >= 0;\n }\n\n plotRange(point) {\n return [ point.from, point.to ];\n }\n\n createSegments() {\n const series = this.options.series;\n const seriesPoints = this.seriesPoints;\n const segments = this.segments = [];\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const points = seriesPoints[seriesIx];\n\n if (points) {\n let prevPoint;\n for (let pointIx = 0; pointIx < points.length; pointIx++) {\n const point = points[pointIx];\n\n if (point && prevPoint) {\n const segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n }\n}\n\nexport default WaterfallChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n getDateField, getField, isDateAxis, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, isNumber, deepExtend, defined, eventElement, grep } from '../../common';\n\nconst AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nconst OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nclass CategoricalPlotArea extends PlotAreaBase {\n\n initFields(series) {\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (let i = 0; i < series.length; i++) {\n const stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this.stack100 = true;\n break;\n }\n }\n }\n\n }\n\n render(panes = this.panes) {\n this.createCategoryAxes(panes);\n this.aggregateCategories(panes);\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n }\n\n createCharts(panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n\n const visibleSeries = this.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n const groups = this.groupSeriesByCategoryAxis(visibleSeries);\n for (let groupIx = 0; groupIx < groups.length; groupIx++) {\n this.createChartGroup(groups[groupIx], pane);\n }\n }\n }\n\n createChartGroup(series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n }\n\n aggregateCategories(panes) {\n const series = this.srcSeries || this.series;\n const processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (let i = 0; i < series.length; i++) {\n let currentSeries = series[i];\n const categoryAxis = this.seriesCategoryAxis(currentSeries);\n const axisPane = this.findPane(categoryAxis.options.pane);\n const dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this.aggregateSeries(currentSeries, categoryAxis);\n } else {\n currentSeries = this.filterSeries(currentSeries, categoryAxis);\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n }\n\n filterSeries(series, categoryAxis) {\n const dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(isNumber(categoryAxis.options.min) || isNumber(categoryAxis.options.max))) {\n return series;\n }\n\n const range = categoryAxis.currentRangeIndices();\n const outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n const currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, (idx) => ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }), (idx) => defined(series.data[idx]));\n }\n\n return currentSeries;\n }\n\n clearSeriesPointsCache() {\n this._seriesPointsCache = {};\n }\n\n seriesSourcePoints(series, categoryAxis) {\n const key = `${ series.index };${ categoryAxis.categoriesHash() }`;\n if (this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n const axisOptions = categoryAxis.options;\n const srcCategories = axisOptions.srcCategories;\n const dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n const srcData = series.data;\n const getFn = dateAxis ? getDateField : getField;\n const result = [];\n if (!dateAxis) {\n categoryAxis.mapCategories();//fixes major performance issue caused by searching for the index for large data\n }\n\n for (let idx = 0; idx < srcData.length; idx++) {\n let category;\n if (series.categoryField) {\n category = getFn(series.categoryField, srcData[idx], this.chartService.intl);\n } else {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n const categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n }\n\n aggregateSeries(series, categoryAxis) {\n const srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n const srcPoints = this.seriesSourcePoints(series, categoryAxis);\n const result = deepExtend({}, series);\n const aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n const data = result.data = [];\n const dataItems = categoryAxis.options.dataItems || [];\n\n const range = categoryAxis.currentRangeIndices();\n const categoryItem = (idx) => {\n const categoryIdx = idx - range.min;\n let point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n const category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (let idx = range.min; idx <= range.max; idx++) {\n const point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, (idx) => srcPoints[idx]);\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n }\n\n appendChart(chart, pane) {\n const series = chart.options.series;\n const categoryAxis = this.seriesCategoryAxis(series[0]);\n let categories = categoryAxis.options.categories;\n let categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n super.appendChart(chart, pane);\n }\n\n // TODO: Refactor, optionally use series.pane option\n seriesPaneName(series) {\n const options = this.options;\n const axisName = series.axis;\n const axisOptions = [].concat(options.valueAxis);\n const axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = (panes[0] || {}).name || \"default\";\n const paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n seriesCategoryAxis(series) {\n const axisName = series.categoryAxis;\n const axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n }\n\n stackableChartOptions(firstSeries, pane) {\n const stack = firstSeries.stack;\n const isStacked100 = stack && stack.type === \"100%\";\n const clip = pane.options.clip;\n\n return {\n isStacked: stack,\n isStacked100: isStacked100,\n clip: clip\n };\n }\n\n groupSeriesByCategoryAxis(series) {\n const categoryAxes = [];\n const unique = {};\n for (let idx = 0; idx < series.length; idx++) {\n const name = series[idx].categoryAxis || \"$$default$$\";\n if (!unique.hasOwnProperty(name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n const groups = [];\n for (let axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n const axis = categoryAxes[axisIx];\n const axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n }\n\n createBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const barChart = new BarChart(this, Object.assign({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(barChart, pane);\n }\n\n createRangeBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n }\n\n createBulletChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const lineChart = new LineChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(lineChart, pane);\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const areaChart = new AreaChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(areaChart, pane);\n }\n\n createRangeAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n }\n\n createOHLCChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createCandlestickChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createBoxPlotChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createWaterfallChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n }\n\n axisRequiresRounding(categoryAxisName, categoryAxisIndex) {\n const centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (let seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n const currentSeries = this.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n const line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (let seriesIx = 0; seriesIx < centeredSeries.length; seriesIx++) {\n const seriesAxis = centeredSeries[seriesIx].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n }\n\n aggregatedAxis(categoryAxisName, categoryAxisIndex) {\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n }\n\n createCategoryAxesLabels() {\n const axes = this.axes;\n for (let i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n }\n\n createCategoryAxes(panes) {\n const invertAxes = this.invertAxes;\n const definitions = [].concat(this.options.categoryAxis);\n const axes = [];\n\n for (let i = 0; i < definitions.length; i++) {\n let axisOptions = definitions[i];\n const axisPane = this.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n const { name, categories = [] } = axisOptions;\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this.isJustified();\n }\n\n if (this.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n let categoryAxis;\n\n if (isDateAxis(axisOptions, categories[0])) {\n categoryAxis = new DateCategoryAxis(axisOptions, this.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this.namedCategoryAxes[name]) {\n throw new Error(`Category axis with name ${ name } is already defined`);\n }\n this.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this.appendAxis(categoryAxis);\n }\n }\n\n const primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n }\n\n isJustified() {\n const series = this.series;\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n }\n\n createValueAxes(panes) {\n const tracker = this.valueAxisRangeTracker;\n const defaultRange = tracker.query();\n const definitions = [].concat(this.options.valueAxis);\n const invertAxes = this.invertAxes;\n const baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n const axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (let i = 0; i < definitions.length; i++) {\n const axisOptions = definitions[i];\n const axisPane = this.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n const name = axisOptions.name;\n const defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n const range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n const valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this.chartService\n );\n\n if (name) {\n if (this.namedValueAxes[name]) {\n throw new Error(`Value axis with name ${ name } is already defined`);\n }\n this.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this.appendAxis(valueAxis);\n }\n }\n\n const primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const pane = this.pointPane(point);\n const categories = [];\n const values = [];\n\n if (!pane) {\n return;\n }\n\n const allAxes = pane.axes;\n for (let i = 0; i < allAxes.length; i++) {\n const axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n }\n\n pointPane(point) {\n const panes = this.panes;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n }\n\n updateAxisOptions(axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n }\n}\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n const axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nconst ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\nconst SPACE = \" \";\n\nclass PathNode extends Node {\n\n geometryChange() {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n }\n\n optionsChange(e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n const name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n super.optionsChange(e);\n }\n\n content() {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n }\n\n renderData() {\n return this.printPath(this.srcElement);\n }\n\n printPath(path) {\n const segments = path.segments;\n const length = segments.length;\n if (length > 0) {\n const parts = [];\n let output, currentType;\n\n for (let i = 1; i < length; i++) {\n let segmentType = this.segmentType(segments[i - 1], segments[i]);\n if (segmentType !== currentType) {\n currentType = segmentType;\n parts.push(segmentType);\n }\n\n if (segmentType === \"L\") {\n parts.push(this.printPoints(segments[i].anchor()));\n } else {\n parts.push(this.printPoints(segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()));\n }\n }\n\n output = \"M\" + this.printPoints(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (path.options.closed) {\n output += \"Z\";\n }\n\n return output;\n }\n }\n\n printPoints() {\n const points = arguments;\n const length = points.length;\n const result = [];\n\n for (let i = 0; i < length; i++) {\n result.push(points[i].toString(3));\n }\n\n return result.join(\" \");\n }\n\n segmentType(segmentStart, segmentEnd) {\n return segmentStart.controlOut() && segmentEnd.controlIn() ? \"C\" : \"L\";\n }\n\n mapStroke(stroke) {\n const attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n }\n\n renderStroke() {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n }\n\n renderDashType(stroke) {\n const { dashType, width = 1 } = stroke;\n\n if (dashType && dashType !== SOLID) {\n const dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n const result = [];\n\n for (let i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n }\n\n renderLinecap(stroke) {\n const { dashType, lineCap } = stroke;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n }\n\n mapFill(fill) {\n const attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n }\n\n renderFill() {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n }\n\n template() {\n return ``;\n }\n}\n\nexport default PathNode;\n","import PathNode from './path-node';\n\nclass ArcNode extends PathNode {\n renderData() {\n return this.printPath(this.srcElement.toPath());\n }\n}\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nclass CircleNode extends PathNode {\n\n geometryChange() {\n const center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n }\n\n center() {\n return this.srcElement.geometry().center;\n }\n\n radius() {\n return this.srcElement.geometry().radius;\n }\n\n template() {\n return ``;\n }\n}\n\nexport default CircleNode;\n","import Node from './node';\n\nclass GroupNode extends Node {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n optionsChange(e) {\n if (e.field === \"transform\") {\n this.transformChange(e.value);\n }\n\n super.optionsChange(e);\n }\n}\n\nexport default GroupNode;\n","const ampRegExp = /&/g;\nconst ltRegExp = //g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nclass ImageNode extends PathNode {\n\n geometryChange() {\n this.allAttr(this.mapPosition());\n this.invalidate();\n }\n\n optionsChange(e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n super.optionsChange(e);\n }\n\n mapPosition() {\n const rect = this.srcElement.rect();\n const tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n }\n\n renderPosition() {\n return renderAllAttr(this.mapPosition());\n }\n\n mapSource(encode) {\n let src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n }\n\n renderSource() {\n return renderAllAttr(this.mapSource(true));\n }\n\n template() {\n return `` +\n ``;\n }\n}\n\nexport default ImageNode;\n","import PathNode from './path-node';\n\nclass MultiPathNode extends PathNode {\n renderData() {\n const paths = this.srcElement.paths;\n\n if (paths.length > 0) {\n const result = [];\n\n for (let i = 0; i < paths.length; i++) {\n result.push(this.printPath(paths[i]));\n }\n\n return result.join(\" \");\n }\n }\n}\n\nexport default MultiPathNode;\n","import PathNode from './path-node';\n\nclass RectNode extends PathNode {\n\n geometryChange() {\n const geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n }\n\n size() {\n return this.srcElement.geometry().size;\n }\n\n origin() {\n return this.srcElement.geometry().origin;\n }\n\n rx() {\n return this.srcElement.geometry().cornerRadius[0];\n }\n\n ry() {\n return this.srcElement.geometry().cornerRadius[1];\n }\n\n template() {\n return ``;\n }\n}\n\nexport default RectNode;\n","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nconst ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n const element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, (match) => {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nclass TextNode extends PathNode {\n\n geometryChange() {\n const pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n }\n\n optionsChange(e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n super.content(this.srcElement.content());\n }\n\n super.optionsChange(e);\n }\n\n mapStyle(encode) {\n const style = super.mapStyle(encode);\n let font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n }\n\n pos() {\n const pos = this.srcElement.position();\n const size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n }\n\n renderContent() {\n let content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n }\n\n renderTextAnchor() {\n let anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n }\n\n template() {\n return `${ this.renderContent() }`;\n }\n}\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nconst RTL = 'rtl';\n\nfunction alignToScreen(element) {\n let ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n const left = - ctm.e % 1;\n const top = - ctm.f % 1;\n const style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nclass Surface extends BaseSurface {\n get type() {\n return \"svg\";\n }\n\n constructor(element, options) {\n super(element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template());\n\n this._rootElement = this.element.firstElementChild;\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n destroy() {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n super.destroy();\n }\n\n translate(offset) {\n const viewBox = `${ Math.round(offset.x) } ${ Math.round(offset.y) } ${ this._size.width } ${ this._size.height }`;\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n }\n\n draw(element) {\n super.draw(element);\n this._root.load([ element ]);\n }\n\n clear() {\n super.clear();\n this._root.clear();\n }\n\n svg() {\n return \"\" + this._template();\n }\n\n exportVisual() {\n let { _visual: visual, _offset: offset } = this;\n\n if (offset) {\n const wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n }\n\n _resize() {\n if (this._offset) {\n this.translate(this._offset);\n }\n }\n\n _template() {\n return `${ this._root.render() }`;\n }\n}\n\nexport default Surface;\n","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nlet instance;\nlet support;\n\nconst hasDocument = () => typeof document !== \"undefined\";\n\nconst supportsCanvas = () => hasDocument() &&\n document.createElement(\"canvas\").getContext;\n\nconst supportsSVG = () => hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\");\n\nclass SurfaceFactory extends Class {\n static get support() {\n if (!support) {\n support = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support;\n }\n\n static get current() {\n if (!instance) {\n instance = new SurfaceFactory();\n }\n\n return instance;\n }\n\n constructor() {\n super();\n\n this._items = [ {\n name: \"svg\",\n type: SVGSurface\n }, {\n name: \"canvas\",\n type: CanvasSurface\n } ];\n }\n\n create(element, options) {\n const items = this._items;\n let match = items[0];\n\n if (options && options.type) {\n const preferred = options.type.toLowerCase();\n for (let i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n `- The browser does not support SVG and Canvas. User agent: ${ navigator.userAgent }`);\n }\n}\n\nexport default SurfaceFactory;\n\n","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nclass Surface extends BaseSurface {\n static get support() {\n return SurfaceFactory.support;\n }\n\n static create(element, options) {\n return SurfaceFactory.current.create(element, options);\n }\n}\n\nexport default Surface;\n\n","import { Class } from '../common';\n\nclass Highlight extends Class {\n constructor() {\n super();\n\n this._points = [];\n }\n\n destroy() {\n this._points = [];\n }\n\n show(points, opacity) {\n const arrayPoints = [].concat(points);\n this.hide();\n\n for (let i = 0; i < arrayPoints.length; i++) {\n const point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this.togglePointHighlight(point, true, opacity);\n this._points.push(point);\n }\n }\n }\n\n togglePointHighlight(point, show, opacity) {\n const toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n const eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n }\n\n hide() {\n const points = this._points;\n while (points.length) {\n this.togglePointHighlight(points.pop(), false);\n }\n }\n\n isHighlighted(element) {\n const points = this._points;\n\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n }\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nexport default Highlight;","export default function acceptKey(e, mouseKey) {\n const key = (mouseKey || \"\").toLowerCase();\n const event = e.event;\n const accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n}","export default function toChartAxisRanges(axisRanges) {\n const ranges = {};\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nclass Pannable extends Class {\n constructor(plotArea, options) {\n super();\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n }\n\n start(e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n }\n\n move(e) {\n if (this._active) {\n const axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n }\n\n end() {\n const active = this._active;\n this._active = false;\n\n return active;\n }\n\n pan() {\n const { plotArea, axisRanges } = this;\n if (axisRanges.length) {\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n delete this.plotArea;\n }\n\n _panAxes(e, position) {\n const plotArea = this.plotArea;\n const delta = -e[position].delta;\n const lock = (this.options.lock || \"\").toLowerCase();\n const updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n const axes = plotArea.axes;\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n const range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n }\n}\n\nPannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n};\n\nexport default Pannable;","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nclass ZoomSelection extends Class {\n constructor(chart, options) {\n super();\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n }\n\n createElement() {\n const marquee = this._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 }\n\n removeElement() {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n }\n\n setStyles(styles) {\n elementStyles(this._marquee, styles);\n }\n\n start(e) {\n if (acceptKey(e, this.options.key)) {\n const chart = this.chart;\n const point = chart._eventCoordinates(e);\n const zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n const clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n const offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n }\n\n _elementOffset() {\n const chartElement = this.chart.element;\n const { paddingLeft, paddingTop } = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n const offset = elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n }\n\n move(e) {\n const zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n }\n\n end(e) {\n const zoomPane = this._zoomPane;\n if (zoomPane) {\n const elementOffset = this._elementOffset();\n const selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset.left;\n selectionPosition.top -= elementOffset.top;\n\n const start = { x: selectionPosition.left, y: selectionPosition.top };\n const end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n }\n\n zoom() {\n const axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n const plotArea = this.chart._plotArea;\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n }\n\n _updateAxisRanges(start, end) {\n const lock = (this.options.lock || \"\").toLowerCase();\n const axisRanges = [];\n\n const axes = this._zoomPane.axes;\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n const vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n const range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n }\n\n _selectionPosition(e) {\n const clipBox = this._zoomPaneClipBox;\n const startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n const { x: { location: pageX }, y: { location: pageY } } = e;\n const lock = (this.options.lock || \"\").toLowerCase();\n let left = Math.min(startLocation.x, pageX);\n let top = Math.min(startLocation.y, pageY);\n let width = Math.abs(startLocation.x - pageX);\n let height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n }\n}\n\nZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n};\n\nexport default ZoomSelection;","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\nimport { limitValue } from '../../drawing-utils';\n\n// Limit the zoom rate between 1% and 90% per mousewheel event.\n// At zoom rates close to 100% the axis range quickly becomes 0.\nconst MIN_RATE = 0.01;\nconst MAX_RATE = 0.9;\nconst DEFAULT_RATE = 0.3;\n\nclass MousewheelZoom extends Class {\n constructor(chart, options) {\n super();\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n }\n\n updateRanges(delta, coords) {\n const lock = (this.options.lock || \"\").toLowerCase();\n const axisRanges = [];\n const axes = this.chart._plotArea.axes;\n\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n const vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n const rate = limitValue(this.options.rate, MIN_RATE, MAX_RATE);\n const range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n\n zoom() {\n const axisRanges = this.axisRanges;\n const plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n delete this.chart;\n }\n}\n\nexport default MousewheelZoom;\n","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n const transofrm = element.transform() || createTransform();\n const matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n}","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n let start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n let start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nconst DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n};\n\nconst forEach = (elements, callback) => {\n elements.forEach(callback);\n};\n\nconst forEachReverse = (elements, callback) => {\n const length = elements.length;\n\n for (let idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n};\n\nclass Layout extends Group {\n\n constructor(rect, options) {\n super(Object.assign({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n rect(value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n }\n\n _initMap() {\n const options = this.options;\n const fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n }\n\n reflow() {\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n const options = this.options;\n const rect = this._rect;\n const { groups, groupsSize } = this._initGroups();\n const { sizeField, groupsSizeField, groupAxis, groupsAxis } = this._fieldMap;\n const groupOrigin = new Point();\n const elementOrigin = new Point();\n const size = new Size();\n let groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n let elementStart, group, groupBox;\n\n const arrangeElements = (bbox, idx) => {\n const element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n const scale = rect.size[sizeField] / groupBox.size[sizeField];\n const scaledStart = groupBox.topLeft().scale(scale, scale);\n const scaledSize = groupBox.size[groupsSizeField] * scale;\n const newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n const transform = createTransform();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n }\n\n _initGroups() {\n const { options, children } = this;\n const { lineSpacing, wrap, spacing } = options;\n const sizeField = this._fieldMap.sizeField;\n let group = this._newGroup();\n const groups = [];\n const addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n let groupsSize = -lineSpacing;\n\n for (let idx = 0; idx < children.length; idx++) {\n let element = children[idx];\n let bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this._addToGroup(group, bbox, element);\n addGroup();\n group = this._newGroup();\n } else {\n addGroup();\n group = this._newGroup();\n this._addToGroup(group, bbox, element);\n }\n } else {\n this._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n }\n\n _addToGroup(group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n }\n\n _newGroup() {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n }\n}\n\nexport default Layout;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\n\nclass LegendLayout extends ChartElement {\n\n constructor(options, chartService) {\n super(options);\n\n this.chartService = chartService;\n }\n\n render() {\n const { children, options } = this;\n const vertical = options.vertical;\n\n this.visual = new draw.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? \"vertical\" : \"horizontal\",\n reverse: options.rtl,\n alignItems: vertical ? \"start\" : \"center\"\n });\n\n for (let idx = 0; idx < children.length; idx++) {\n let legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n }\n\n reflow(box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n const bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n }\n\n renderVisual() {\n this.addVisual();\n }\n\n createVisual() {}\n}\n\nexport default LegendLayout;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, ShapeElement, TextBox } from '../../core';\nimport { LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE } from '../constants';\nimport { CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement } from '../../common';\n\nclass LegendItem extends BoxElement {\n constructor(options) {\n super(options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n }\n\n createContainer() {\n this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n }\n\n createMarker() {\n this.container.append(new ShapeElement(this.markerOptions()));\n }\n\n markerOptions() {\n const options = this.options;\n const markerColor = options.markerColor;\n return deepExtend({}, options.markers, {\n background: markerColor,\n border: {\n color: markerColor\n }\n });\n }\n\n createLabel() {\n const options = this.options;\n const labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n }\n\n renderComplete() {\n super.renderComplete();\n\n const cursor = this.options.cursor || {};\n const eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n }\n\n click(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n }\n\n over(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n }\n\n // Don't trigger point hover for legend items\n return true;\n }\n\n out(widget, e) {\n widget._unsetActivePoint();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n }\n\n eventArgs(e) {\n const options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n }\n\n renderVisual() {\n const options = this.options;\n const customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n markers: this.markerOptions(),\n labels: options.labels\n },\n createVisual: () => {\n this.createVisual();\n this.renderChildren();\n this.renderComplete();\n\n const defaultVisual = this.visual;\n\n delete this.visual;\n\n return defaultVisual;\n }\n });\n this.addVisual();\n } else {\n super.renderVisual();\n }\n }\n}\n\nexport default LegendItem;\n","\nimport { ChartElement, BoxElement, Box, TextBox, FloatElement } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nconst HORIZONTAL = \"horizontal\";\nconst POINTER = \"pointer\";\nconst CUSTOM = \"custom\";\n\nclass Legend extends ChartElement {\n constructor(options, chartService = {}) {\n super(options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n }\n\n createContainers() {\n const options = this.options;\n const { position, align: userAlign } = options;\n let align = position;\n let vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === \"start\") {\n align = LEFT;\n } else if (userAlign === \"end\") {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === \"start\") {\n vAlign = TOP;\n } else if (userAlign === \"end\") {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n }\n\n createItems() {\n const chartService = this.getService();\n const options = this.options;\n const vertical = this.isVertical();\n const innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n let items = options.items;\n\n if (options.reverse) {\n items = items.slice(0).reverse();\n }\n\n const count = items.length;\n\n for (let i = 0; i < count; i++) {\n let item = items[i];\n\n innerElement.append(new LegendItem(deepExtend({}, {\n markers: options.markers,\n labels: options.labels,\n rtl: chartService.rtl\n }, options.item, item)));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n }\n\n isVertical() {\n const { orientation, position } = this.options;\n const vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n }\n\n hasItems() {\n return this.container.children[0].children.length > 0;\n }\n\n reflow(targetBox) {\n const options = this.options;\n const legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n }\n\n containerReflow(targetBox) {\n const { options, container } = this;\n const { position, width, height } = options;\n const pos = position === TOP || position === BOTTOM ? X : Y;\n const vertical = this.isVertical();\n const alignTarget = targetBox.clone();\n let containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n const box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n }\n\n containerCustomReflow(targetBox) {\n const { options, container } = this;\n const { offsetX, offsetY, width, height } = options;\n const vertical = this.isVertical();\n let containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n }\n\n renderVisual() {\n if (this.hasItems()) {\n super.renderVisual();\n }\n }\n\n createLegendTitle(title) {\n let titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n let text = titleOptions.text;\n\n if (!title || title.visible === false) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n const labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n }\n\n createTitleLayout() {\n this.layout = new FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n }\n\n hasTitle() {\n return Boolean(this.options.title && this.options.title.visible !== false);\n }\n\n appendTitleLayoutContent() {\n const options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n }\n}\n\nsetDefaultOptions(Legend, {\n position: RIGHT,\n items: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(5),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {\n border: {\n width: 0\n },\n width: 15,\n height: 3,\n type: \"rect\",\n align: LEFT,\n vAlign: CENTER\n }\n});\n\nexport default Legend;\n","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\n\nclass PlotAreaFactory extends Class {\n\n constructor() {\n super();\n\n this._registry = [];\n }\n\n register(type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n }\n\n create(srcSeries, options, chartService) {\n const registry = this._registry;\n let match = registry[0];\n let series;\n\n for (let idx = 0; idx < registry.length; idx++) {\n const entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n\n if (series.length > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n }\n}\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';\nimport { addClass, Class, removeClass, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nconst ZOOM_ACCELERATION = 3;\nconst SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(className) {\n const element = document.createElement(\"div\");\n if (className) {\n element.className = className;\n }\n\n return element;\n}\n\nfunction closestHandle(element) {\n let current = element;\n while (current && !hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n}\n\nclass Selection extends Class {\n constructor(chart, categoryAxis, options, observer) {\n super();\n\n const chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n }\n\n onPane(pane) {\n return this.categoryAxis.pane === pane;\n }\n\n createElements() {\n const options = this.options;\n const wrapper = this.wrapper = createDiv(\"k-selector\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n const selection = this.selection = createDiv(\"k-selection\");\n this.leftMask = createDiv(\"k-mask\");\n this.rightMask = createDiv(\"k-mask\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n selection.appendChild(createDiv(\"k-selection-bg\"));\n\n const leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle\");\n const rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n const selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n const leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n const rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n wrapper.style.cssText = wrapper.style.cssText;\n }\n\n bindEvents() {\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n bindEvents(this.wrapper, {\n [ MOUSEWHEEL ]: this._mousewheelHandler\n });\n }\n\n this._domEvents = DomEventsBuilder.create(this.wrapper, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n }\n\n initOptions() {\n const { options, categoryAxis } = this;\n const box = categoryAxis.pane.chartsBox();\n const intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n const { paddingLeft, paddingTop } = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n }\n\n destroy() {\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n unbindEvents(this.wrapper, {\n [ MOUSEWHEEL ]: this._mousewheelHandler\n });\n this._mousewheelHandler = null;\n }\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n }\n\n _rangeEventArgs(range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n }\n\n _start(e) {\n const options = this.options;\n const target = eventElement(e);\n\n if (this._state || !target) {\n return;\n }\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: closestHandle(target) || target,\n startLocation: e.x ? e.x.location : 0,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n const args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n }\n\n _press(e) {\n let handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n addClass(handle, \"k-handle-active\");\n }\n }\n\n _move(e) {\n if (!this._state) {\n return;\n }\n\n const { _state: state, options, categoryAxis } = this;\n const { range, moveTarget: target } = state;\n const reverse = categoryAxis.options.reverse;\n const from = this._index(options.from);\n const to = this._index(options.to);\n const min = this._index(options.min);\n const max = this._index(options.max);\n const delta = state.startLocation - e.x.location;\n const oldRange = { from: range.from, to: range.to };\n const span = range.to - range.from;\n const scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n const offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target) {\n return;\n }\n\n const leftHandle = hasClasses(target, \"k-left-handle\");\n const rightHandle = hasClasses(target, \"k-right-handle\");\n\n if (hasClasses(target, \"k-selection k-selection-bg\")) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n }\n\n _end() {\n if (this._state) {\n const moveTarget = this._state.moveTarget;\n if (moveTarget) {\n removeClass(moveTarget, \"k-handle-active\");\n }\n\n const range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n }\n\n _tap(e) {\n const { options, categoryAxis } = this;\n const coords = this.chart._eventCoordinates(e);\n const categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n const from = this._index(options.from);\n const to = this._index(options.to);\n const min = this._index(options.min);\n const max = this._index(options.max);\n const span = to - from;\n const mid = from + span / 2;\n const range = {};\n const rightClick = e.event.which === 3;\n let offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n }\n\n _mousewheel(e) {\n let delta = mousewheelDelta(e);\n\n this._start({ target: this.selection });\n\n if (this._state) {\n const range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(() => {\n this._end();\n }, MOUSEWHEEL_DELAY);\n }\n }\n\n _gesturestart(e) {\n const options = this.options;\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n const args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n }\n\n _gestureend() {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n }\n\n _gesturechange(e) {\n const { chart, _state: state, options, categoryAxis } = this;\n const range = state.range;\n const p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n const p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n const left = Math.min(p0, p1);\n const right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n\n _index(value) {\n let index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n }\n\n _value(index) {\n let value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n }\n\n _slot(value) {\n const categoryAxis = this.categoryAxis;\n const index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n }\n\n move(from, to) {\n const options = this.options;\n const reverse = this.categoryAxis.options.reverse;\n const { offset, padding, selection: { border } } = options;\n const left = reverse ? to : from;\n const right = reverse ? from : to;\n const edge = 'x' + (reverse ? 2 : 1);\n\n let box = this._slot(left);\n const leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n const rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n let distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n }\n\n set(from, to) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const fromValue = limitValue(this._index(from), min, max);\n const toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n }\n\n expand(delta) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const zDir = options.mousewheel.zoom;\n const from = this._index(options.from);\n const to = this._index(options.to);\n let range = { from: from, to: to };\n const oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n }\n\n zoom(delta, coords) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const from = this._index(options.from);\n const to = this._index(options.to);\n let range = { from: from, to: to };\n const oldRange = deepExtend({}, range);\n\n const { reverse } = this.categoryAxis.options;\n const origin = X + (reverse ? '2' : '1');\n const lineBox = this.categoryAxis.lineBox();\n const relative = Math.abs(lineBox[origin] - coords[X]);\n const size = lineBox.width();\n const position = round(relative / size, 2);\n const minDelta = round(position * delta);\n const maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n }\n\n trigger(name, args) {\n return (this.observer || this.chart).trigger(name, args);\n }\n}\n\nsetDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n});\n\nexport default Selection;\n","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nclass Tooltip extends BaseTooltip {\n show(point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n const options = deepExtend({}, this.options, point.options.tooltip);\n const anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n super.show({\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n }\n\n hide() {\n delete this._current;\n super.hide();\n }\n}\n\nexport default Tooltip;","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nclass SharedTooltip extends BaseTooltip {\n constructor(plotArea, options) {\n super(plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n }\n\n showAt(points, coords) {\n const tooltipPoints = grep(points, function(point) {\n const tooltip = point.series.tooltip;\n const excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n const point = tooltipPoints[0];\n const slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n const anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n }\n\n _slotAnchor(point, slot) {\n const axis = this.plotArea.categoryAxis;\n const align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n }\n\n _defaultAnchor(point, slot) {\n const box = point.owner.pane.chartsBox();\n const vertical = this.plotArea.categoryAxis.options.vertical;\n const center = box.center();\n const slotCenter = slot.center();\n const align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n let centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n }\n}\n\nsetDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nclass BarChartAnimation extends draw.Animation {\n\n setup() {\n const { element, options } = this;\n const bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n const axis = options.vertical ? Y : X;\n\n const fromScale = this.fromScale = new geom.Point(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(geom.transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n }\n\n step(pos) {\n const scaleX = interpolateValue(this.fromScale.x, 1, pos);\n const scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(geom.transform()\n .scale(scaleX, scaleY, this.origin)\n );\n }\n\n abort() {\n super.abort();\n this.element.transform(null);\n }\n}\n\nsetDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass BubbleAnimation extends draw.Animation {\n setup() {\n const center = this.center = this.element.bbox().center();\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n }\n\n step(pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.center)\n );\n }\n}\n\nsetDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass FadeInAnimation extends draw.Animation {\n setup() {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n }\n\n step(pos) {\n this.element.opacity(pos * this.fadeTo);\n }\n}\n\nsetDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PieAnimation extends draw.Animation {\n setup() {\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n }\n\n step(pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.options.center)\n );\n }\n}\n\nsetDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nclass ScatterLineChart extends ScatterChart {\n render() {\n super.render();\n\n this.renderSegments();\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n }\n\n animationPoints() {\n const points = super.animationPoints();\n return points.concat(this._segments);\n }\n\n createMissingValue(value, missingValues) {\n if (missingValues === ZERO) {\n const missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n }\n}\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\nimport equalsIgnoreCase from '../utils/equals-ignore-case';\nimport singleItemOrArray from '../utils/single-item-or-array';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nclass XYPlotArea extends PlotAreaBase {\n initFields() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n }\n\n render(panes = this.panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n const filteredSeries = this.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n }\n\n appendChart(chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n super.appendChart(chart, pane);\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n }\n\n // TODO: Refactor, optionally use series.pane option\n seriesPaneName(series) {\n const options = this.options;\n const xAxisName = series.xAxis;\n const xAxisOptions = [].concat(options.xAxis);\n const xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n const yAxisName = series.yAxis;\n const yAxisOptions = [].concat(options.yAxis);\n const yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = panes[0].name || \"default\";\n const paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n createScatterChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createScatterLineChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createBubbleChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createXYAxis(options, vertical, axisIndex) {\n const axisName = options.name;\n const namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n const tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n const axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n const isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n const defaultRange = tracker.query();\n const defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n const range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n const typeSamples = [ axisOptions.min, axisOptions.max ];\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n const firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n let inferredDate;\n\n for (let i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateValueAxis;\n } else if (isLog) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n const axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(`${ vertical ? \"Y\" : \"X\" } axis with name ${ axisName } is already defined`);\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n }\n\n createAxes(panes) {\n const options = this.options;\n const xAxesOptions = [].concat(options.xAxis);\n const xAxes = [];\n const yAxesOptions = [].concat(options.yAxis);\n const yAxes = [];\n\n for (let idx = 0; idx < xAxesOptions.length; idx++) {\n const axisPane = this.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (let idx = 0; idx < yAxesOptions.length; idx++) {\n const axisPane = this.findPane(yAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n yAxes.push(this.createXYAxis(yAxesOptions[idx], true, idx));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const allAxes = this.axes;\n const length = allAxes.length;\n const xValues = [];\n const yValues = [];\n\n for (let i = 0; i < length; i++) {\n const axis = allAxes[i];\n const values = axis.options.vertical ? yValues : xValues;\n const currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n }\n\n updateAxisOptions(axis, options) {\n const vertical = axis.options.vertical;\n const axes = this.groupAxes(this.panes);\n const index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n }\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n const axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { autoTextColor, setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\n\nclass PieSegment extends ChartElement {\n constructor(value, sector, options) {\n super(options);\n\n this.value = value;\n this.sector = sector;\n }\n\n render() {\n const labels = this.options.labels;\n const chartService = this.owner.chartService;\n let labelText = this.value;\n\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n const labelTemplate = getTemplate(labels);\n const pointData = this.pointData();\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = chartService.format.auto(labels.format, labelText);\n }\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n const themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), pointData);\n\n this.append(this.label);\n }\n }\n\n reflow(targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n }\n\n reflowLabel() {\n const { options: { labels: labelsOptions }, label } = this;\n const sector = this.sector.clone();\n const labelsDistance = labelsOptions.distance;\n const angle = sector.middle();\n\n if (label) {\n const labelHeight = label.box.height();\n const labelWidth = label.box.width();\n let lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n let x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n }\n\n createVisual() {\n const { sector, options } = this;\n\n super.createVisual();\n\n if (this.value) {\n if (options.visual) {\n const startAngle = (sector.startAngle + 180) % 360;\n const visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new geom.Point(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: () => {\n const group = new draw.Group();\n this.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n }\n\n createSegmentVisual(group) {\n const { sector, options } = this;\n const borderOptions = options.border || {};\n const border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n const color = options.color;\n const fill = {\n color: color,\n opacity: options.opacity\n };\n const visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n }\n\n createSegment(sector, options) {\n if (options.singleSegment) {\n return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return ShapeBuilder.current.createRing(sector, options);\n }\n\n createAnimation() {\n const { options, sector: { center } } = this;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n super.createAnimation();\n }\n\n createHighlight(options) {\n const highlight = this.options.highlight || {};\n const border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n }\n\n highlightVisual() {\n return this.visual.children[0];\n }\n\n highlightVisualArgs() {\n const sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new geom.Point(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n }\n\n tooltipAnchor() {\n const sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n const midAndle = sector.middle();\n const midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n }\n}\n\nconst RAD_30 = round(rad(30), DEFAULT_PRECISION);\nconst RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n const radians = rad(angle);\n const sine = round(Math.sin(radians), DEFAULT_PRECISION);\n const cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n let horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n let vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n}\n\nsetDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\n\nexport default PieSegment;\n","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nconst PieChartMixin = {\n createLegendItem: function(value, point, options) {\n const legendOptions = this.options.legend || {};\n const labelsOptions = legendOptions.labels || {};\n const inactiveItems = legendOptions.inactiveItems || {};\n const inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n const pointVisible = options.visible !== false;\n const labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n let text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n let itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n};\n\nexport default PieChartMixin;","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nconst PIE_SECTOR_ANIM_DELAY = 70;\n\nclass PieChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n traverseDataPoints(callback) {\n const { options, plotArea: { options: { seriesColors = [] } } } = this;\n const colorsCount = seriesColors.length;\n const series = options.series;\n const seriesCount = series.length;\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const data = currentSeries.data;\n const { total, points, count } = bindSegments(currentSeries);\n const anglePerValue = 360 / total;\n let constantAngle;\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n let currentAngle;\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (let i = 0; i < points.length; i++) {\n const pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n const { fields, value, visible } = pointData;\n const angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n const explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(pointData.valueFields.value, new Ring(null, 0, 0, currentAngle, angle), {\n owner: this,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n }\n\n evalSegmentOptions(options, value, fields) {\n const series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n }\n\n addValue(value, sector, fields) {\n const segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n const segment = new PieSegment(value, sector, segmentOptions);\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n }\n\n reflow(targetBox) {\n const { options, points, seriesConfigs = [] } = this;\n const count = points.length;\n const box = targetBox.clone();\n const space = 5;\n const minWidth = Math.min(box.width(), box.height());\n const halfMinWidth = minWidth / 2;\n const defaultPadding = minWidth - minWidth * 0.85;\n const newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n const newBoxCenter = newBox.center();\n const boxCenter = box.center();\n const seriesCount = options.series.length;\n const leftSideLabels = [];\n const rightSideLabels = [];\n let padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n const radius = halfMinWidth - padding;\n const center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (let i = 0; i < count; i++) {\n const segment = points[i];\n const sector = segment.sector;\n const seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n const seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n const label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n }\n\n leftLabelsReflow(labels) {\n const distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n }\n\n rightLabelsReflow(labels) {\n const distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n }\n\n distanceBetweenLabels(labels) {\n const segment = last(this.points);\n const sector = segment.sector;\n const count = labels.length - 1;\n const lr = sector.radius + segment.options.labels.distance;\n const distances = [];\n let firstBox = labels[0].box;\n let distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (let i = 0; i < count; i++) {\n const secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n }\n\n distributeLabels(distances, labels) {\n const count = distances.length;\n let left, right, remaining;\n\n for (let i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this._takeDistance(distances, i, --left, remaining);\n remaining = this._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n }\n\n _takeDistance(distances, anchor, position, amount) {\n let result = amount;\n if (distances[position] > 0) {\n const available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n }\n\n reflowLabels(distances, labels) {\n const segment = last(this.points);\n const sector = segment.sector;\n const labelOptions = segment.options.labels;\n const labelsCount = labels.length;\n const labelDistance = labelOptions.distance;\n let boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n let boxX;\n\n distances[0] += 2;\n for (let i = 0; i < labelsCount; i++) {\n const label = labels[i];\n const box = label.box;\n\n boxY += distances[i];\n boxX = this.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n }\n\n createVisual() {\n const { options: { connectors }, points } = this;\n const count = points.length;\n const space = 4;\n\n super.createVisual();\n\n this._connectorLines = [];\n\n for (let i = 0; i < count; i++) {\n const segment = points[i];\n const { sector, label } = segment;\n const angle = sector.middle();\n const connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n const connectorLine = new draw.Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n const box = label.box;\n const centerPoint = sector.center;\n let start = sector.point(angle);\n let middle = new Point(box.x1, box.center().y);\n let sr, end, crossing;\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this._connectorLines.push(connectorLine);\n this.visual.append(connectorLine);\n }\n }\n }\n }\n\n renderVisual() {\n super.renderVisual();\n\n if (find(this.options.series, options => options.autoFit)) {\n const targetBox = this.targetBox;\n const pieCenter = this.box.center();\n const bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n const bboxBottom = bbox.bottomRight();\n\n const scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n }\n\n labelComparator(reverse) {\n const reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n const first = (a.parent.sector.middle() + 270) % 360;\n const second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n }\n\n hAlignLabel(originalX, sector, y1, y2, direction) {\n const { radius, center: { x: cx, y: cy } } = sector;\n const t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n }\n\n pointInCircle(point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format, point.value);\n }\n\n animationDelay(categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n }\n\n stackRoot() {\n return this;\n }\n}\n\nfunction intersection(a1, a2, b1, b2) {\n const uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n const ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n let result;\n if (ub !== 0) {\n const ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n}\n\nsetDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nclass PiePlotArea extends PlotAreaBase {\n render() {\n this.createPieChart(this.series);\n }\n\n createPieChart(series) {\n const firstSeries = series[0];\n const pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n }\n\n appendChart(chart, pane) {\n super.appendChart(chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n}\n\nexport default PiePlotArea;","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass DonutSegment extends PieSegment {\n reflowLabel() {\n const { options: { labels: labelsOptions }, label } = this;\n const sector = this.sector.clone();\n const angle = sector.middle();\n\n if (label) {\n const labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n const lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n super.reflowLabel();\n }\n }\n }\n\n createSegment(sector, options) {\n return ShapeBuilder.current.createRing(sector, options);\n }\n}\n\nsetDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nconst DONUT_SECTOR_ANIM_DELAY = 50;\n\nclass DonutChart extends PieChart {\n addValue(value, sector, fields) {\n const segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (!value || fields.visible === false) {\n return;\n }\n\n const segment = new DonutSegment(value, sector, segmentOptions);\n\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n }\n\n reflow(targetBox) {\n const options = this.options;\n const box = targetBox.clone();\n const space = 5;\n const minWidth = Math.min(box.width(), box.height());\n const halfMinWidth = minWidth / 2;\n const defaultPadding = minWidth - minWidth * 0.85;\n const series = options.series;\n const seriesCount = series.length;\n\n let padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n let totalSize = halfMinWidth - padding;\n let seriesWithoutSize = 0;\n let holeSize;\n\n for (let i = 0; i < seriesCount; i++) {\n const currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n const currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n let innerRadius = holeSize;\n let margin = 0;\n let size, radius;\n\n this.seriesConfigs = [];\n\n for (let i = 0; i < seriesCount; i++) {\n const currentSeries = series[i];\n size = valueOrDefault(currentSeries.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries.margin || 0;\n innerRadius = radius;\n }\n\n super.reflow(targetBox);\n }\n\n animationDelay(categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n }\n}\n\n\nsetDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n});\n\nexport default DonutChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nconst DEFAULT_PADDING = 0.15;\n\nclass PolarPlotAreaBase extends PlotAreaBase {\n initFields() {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n }\n\n render() {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n }\n\n alignAxes() {\n const axis = this.valueAxis;\n const range = axis.range();\n const crossingValue = axis.options.reverse ? range.max : range.min;\n const slot = axis.getSlot(crossingValue);\n const center = this.polarAxis.getSlot(0).center;\n const axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n }\n\n createValueAxis() {\n const tracker = this.valueAxisRangeTracker;\n const defaultRange = tracker.query();\n const axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n let axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n const range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n const valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n }\n\n reflowAxes() {\n const { options: { plotArea: options }, valueAxis, polarAxis, box } = this;\n const defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n const padding = getSpacing(options.padding || {}, defaultPadding);\n const paddingBox = box.clone().unpad(padding);\n const axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n const valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n const heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n }\n\n backgroundBox() {\n return this.box;\n }\n\n detachLabels() {}\n}\n\nexport default PolarPlotAreaBase;\n","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PolarScatterChart extends ScatterChart {\n pointSlot(slotX, slotY) {\n const valueRadius = slotX.center.y - slotY.y1;\n const slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n}\n\nsetDefaultOptions(PolarScatterChart, {\n clip: false\n});\n\nexport default PolarScatterChart;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PolarLineChart extends ScatterLineChart {\n}\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n clip: false\n});\n\nexport default PolarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nclass SplinePolarAreaSegment extends SplineAreaSegment {\n fillToAxes(fillPath) {\n const center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n }\n\n _polarAxisCenter() {\n const polarAxis = this.parent.plotArea.polarAxis;\n const center = polarAxis.box.center();\n return center;\n }\n\n strokeSegments() {\n let segments = this._strokeSegments;\n\n if (!segments) {\n const center = this._polarAxisCenter();\n const curveProcessor = new CurveProcessor(false);\n const linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n }\n}\n\nexport default SplinePolarAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nclass PolarAreaSegment extends AreaSegment {\n fillToAxes(fillPath) {\n const polarAxis = this.parent.plotArea.polarAxis;\n const center = polarAxis.box.center();\n const centerSegment = new geom.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n }\n}\n\nexport default PolarAreaSegment;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nclass PolarAreaChart extends PolarLineChart {\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = (currentSeries.line || {}).style;\n let segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n }\n\n createMissingValue(value, missingValues) {\n let missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n\n _hasMissingValuesGap() {\n const series = this.options.series;\n\n for (let idx = 0; idx < series.length; idx++) {\n if (this.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n }\n\n sortPoints(points) {\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point) {\n const value = point.value;\n if (!hasValue(value.y) && this.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n }\n}\n\nfunction xComparer(a, b) {\n return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\n\nclass PolarPlotArea extends PolarPlotAreaBase {\n createPolarAxis() {\n const polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n }\n\n valueAxisOptions(defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n }\n\n createValueAxis() {\n super.createValueAxis();\n this.axisY = this.valueAxis;\n }\n\n appendChart(chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n }\n\n createCharts() {\n const series = this.filterVisibleSeries(this.series);\n const pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n }\n\n createScatterChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const xValue = this.axisX.getValue(point);\n const yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n }\n\n createCrosshairs() {}\n}\n\nsetDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default PolarPlotArea;","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH, INTERPOLATE } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n const seriesSegments = [];\n for (let idx = 0; idx < segments.length; idx++) {\n const segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n}\n\nclass RadarLineChart extends LineChart {\n\n pointSlot(categorySlot, valueSlot) {\n const valueRadius = categorySlot.center.y - valueSlot.y1;\n const slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n\n renderSegments() {\n super.renderSegments();\n\n if (this._segments && this._segments.length > 1) {\n const seriesSegments = groupBySeriesIx(this._segments);\n\n for (let idx = 0; idx < seriesSegments.length; idx++) {\n const segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n const firstPoint = segments[0].linePoints[0];\n const lastSegment = last(segments);\n const lastPoint = last(lastSegment.linePoints);\n const isFirstDataPoint = firstPoint.categoryIx === 0;\n const isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n const segment = new pointType(linePoints, currentSeries, seriesIx);\n const missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n }\n}\n\nsetDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n});\n\nexport default RadarLineChart;\n","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nclass SplineRadarAreaSegment extends SplineAreaSegment {\n fillToAxes() {}\n}\n\nexport default SplineRadarAreaSegment;","import AreaSegment from '../area-chart/area-segment';\n\nclass RadarAreaSegment extends AreaSegment {\n fillToAxes() {}\n}\n\nexport default RadarAreaSegment;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nclass RadarAreaChart extends RadarLineChart {\n createSegment(linePoints, currentSeries, seriesIx, prevSegment) {\n const isStacked = this.options.isStacked;\n const style = (currentSeries.line || {}).style;\n let previousSegment;\n let stackPoints;\n let segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n}\n\nexport default RadarAreaChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nclass RadarSegment extends DonutSegment {\n constructor(value, options) {\n super(value, null, options);\n }\n}\n\nsetDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n});\n\nexport default RadarSegment;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nclass RadarClusterLayout extends ChartElement {\n constructor(options) {\n super(options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n reflow(sector) {\n const { options, children } = this;\n const { gap, spacing } = options;\n const count = children.length;\n const slots = count + gap + (spacing * (count - 1));\n const slotAngle = sector.angle / slots;\n let angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, (child) => {\n const slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n }\n}\n\nsetDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nclass RadarStackLayout extends ChartElement {\n reflow(sector) {\n const { options: { reverse }, children } = this;\n const childrenCount = children.length;\n const first = reverse ? childrenCount - 1 : 0;\n const step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (let i = first; i >= 0 && i < childrenCount; i += step) {\n const childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n}\n\nexport default RadarStackLayout;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nclass RadarBarChart extends BarChart {\n pointType() {\n return RadarSegment;\n }\n\n clusterType() {\n return RadarClusterLayout;\n }\n\n stackType() {\n return RadarStackLayout;\n }\n\n categorySlot(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n }\n\n pointSlot(categorySlot, valueSlot) {\n const slot = categorySlot.clone();\n const y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n }\n\n reflowPoint(point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n }\n\n createAnimation() {\n this.options.animation.center = this.box.toRect().center();\n super.createAnimation();\n }\n}\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n});\n\nexport default RadarBarChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nclass RadarPlotArea extends PolarPlotAreaBase {\n createPolarAxis() {\n const categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createCategoryAxesLabels();\n }\n\n valueAxisOptions(defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n }\n\n aggregateCategories() {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n }\n\n createCategoryAxesLabels() {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n }\n\n filterSeries(currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n }\n\n createCharts() {\n const series = this.filterVisibleSeries(this.series);\n const pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n }\n\n chartOptions(series) {\n const options = { series: series };\n const firstSeries = series[0];\n if (firstSeries) {\n const filteredSeries = this.filterVisibleSeries(series);\n const stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n }\n\n createBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n\n const barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n }\n\n seriesCategoryAxis() {\n return this.categoryAxis;\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const category = this.categoryAxis.getCategory(point);\n const value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n }\n\n createCrosshairs() {}\n}\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints\n});\n\nsetDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n});\n\nexport default RadarPlotArea;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass FunnelSegment extends ChartElement {\n constructor(value, options, segmentOptions) {\n super(options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n }\n\n reflow(chartBox) {\n const points = this.points;\n const label = this.children[0];\n\n this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n }\n\n createVisual() {\n const options = this.options;\n let visual;\n\n super.createVisual();\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: () => this.createPath()\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n }\n\n createPath() {\n const options = this.options;\n const border = options.border;\n const path = draw.Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n }\n\n createHighlight(style) {\n return draw.Path.fromPoints(this.points, style);\n }\n\n highlightVisual() {\n return this.visual.children[0];\n }\n\n highlightVisualArgs() {\n const path = draw.Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n }\n\n tooltipAnchor() {\n const box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n }\n\n formatValue(format) {\n const point = this;\n return point.owner.formatPointValue(point, format);\n }\n}\n\nsetDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\n\nexport default FunnelSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CENTER, LEFT } from '../../common/constants';\nimport { autoTextColor, deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nclass FunnelChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format,point.value);\n }\n\n render() {\n const { options, plotArea: { options: { seriesColors = [] } } } = this;\n const series = options.series[0];\n const data = series.data;\n\n if (!data) {\n return;\n }\n\n const { total, points } = bindSegments(series);\n\n for (let i = 0; i < points.length; i++) {\n const pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n let fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this,\n series: series,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n const value = pointData.valueFields.value;\n const segment = this.createSegment(value, fields);\n const label = this.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n }\n\n evalSegmentOptions(options, value, fields) {\n const series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n }\n\n createSegment(value, fields) {\n const seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n const segment = new FunnelSegment(value, seriesOptions, fields);\n Object.assign(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n }\n\n createLabel(value, fields) {\n const { series, dataItem } = fields;\n const labels = deepExtend({}, this.options.labels, series.labels);\n let text = value;\n\n if (labels.visible) {\n const labelTemplate = getTemplate(labels);\n const data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.plotArea.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n const textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n }\n\n labelPadding() {\n const labels = this.labels;\n const padding = { left: 0, right: 0 };\n\n for (let i = 0; i < labels.length; i++) {\n const label = labels[i];\n const align = label.options.align;\n if (align !== CENTER) {\n const width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n }\n\n dynamicSlopeReflow(box, width, totalHeight) {\n const { options, points: segments } = this;\n const count = segments.length;\n const firstSegment = segments[0];\n let maxSegment = firstSegment;\n\n for (let idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n let lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n let previousOffset = (width - lastUpperSide) / 2;\n let previousHeight = 0;\n\n for (let idx = 0; idx < count; idx++) {\n const percentage = segments[idx].percentage;\n const nextSegment = segments[idx + 1];\n const nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n const points = segments[idx].points = [];\n const height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n let offset;\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n }\n\n constantSlopeReflow(box, width, totalHeight) {\n const { options, points: segments } = this;\n const count = segments.length;\n const decreasingWidth = options.neckRatio <= 1;\n const neckRatio = decreasingWidth ? options.neckRatio * width : width;\n let previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n const topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n const finalNarrow = (topMostWidth - neckRatio) / 2;\n let previousHeight = 0;\n\n for (let idx = 0; idx < count; idx++) {\n const points = segments[idx].points = [];\n const percentage = segments[idx].percentage;\n const offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n const height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n }\n\n reflow(chartBox) {\n const points = this.points;\n const count = points.length;\n\n if (!count) {\n return;\n }\n\n const options = this.options;\n const box = chartBox.clone().unpad(this.labelPadding());\n const totalHeight = box.height() - options.segmentSpacing * (count - 1);\n const width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (let idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n }\n}\n\nsetDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import { autoTextColor, deepExtend, getTemplate, valueOrDefault } from '../../common';\nimport { CENTER, ROUNDED_RECT, BOTTOM, WHITE } from '../../common/constants';\nimport { ChartElement, Point, rectToBox, ShapeElement, TextBox } from '../../core';\nimport { TOOLTIP_OFFSET } from '../constants';\nimport NoteMixin from '../mixins/note-mixin';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nclass HeatmapPoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n const pointData = this.pointData();\n let labelTemplate = getTemplate(labels);\n let labelText;\n let labelColor = labels.color;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n if (!labelColor) {\n labelColor = autoTextColor(this.color);\n }\n\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n },\n labels, {\n color: labelColor\n }),\n pointData\n );\n this.append(this.label);\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n reflow(targetBox) {\n this.render();\n\n const label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n }\n\n markerBox() {\n const options = this.options;\n const markers = options.markers;\n const border = markers.border;\n const rect = this.box.toRect();\n const type = valueOrDefault(markers.type, 'rect');\n const isRoundRect = type === ROUNDED_RECT;\n let borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n const halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n const center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return rectToBox(rect);\n }\n\n markerBorder() {\n const options = this.options;\n const markers = options.markers;\n const border = markers.border;\n const opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n }\n\n createMarker() {\n const options = this.options;\n const markerOptions = options.markers;\n const marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n }\n\n createHighlight(style) {\n const options = this.options;\n const markerOptions = this.options.highlight.markers || this.options.markers;\n\n const highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n const visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n }\n\n highlightVisual() {\n return this.rectVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n }\n\n tooltipAnchor() {\n const left = this.box.center().x;\n const top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n unclipElements() {\n /* noop, clip labels */\n }\n\n pointData() {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n }\n}\n\ndeepExtend(HeatmapPoint.prototype, PointEventsMixin);\ndeepExtend(HeatmapPoint.prototype, NoteMixin);\n\nHeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default HeatmapPoint;\n","import { deepExtend, defined, isFunction, setDefaultOptions } from '../../common';\nimport { MAX_VALUE, MIN_VALUE } from '../../common/constants';\nimport { Box, ChartElement } from '../../core';\nimport CategoricalChart from '../categorical-chart';\nimport evalOptions from '../utils/eval-options';\nimport colorScale from './color-scale';\nimport HeatmapPoint from './heatmap-point';\n\nclass HeatmapChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n _initFields() {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n }\n\n render() {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n setRange() {\n const { options: { series } } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n this.valueRange.min = Math.min(this.valueRange.min, valueFields.value);\n this.valueRange.max = Math.max(this.valueRange.max, valueFields.value);\n }\n }\n }\n\n addValue(value, fields) {\n let point;\n if (value) {\n point = this.createPoint(value, fields);\n if (point) {\n Object.assign(point, fields);\n }\n }\n\n this.points.push(point);\n }\n\n evalPointOptions(options, value, fields) {\n const { series, seriesIx } = fields;\n const state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n }\n\n pointType() {\n return HeatmapPoint;\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n let pointOptions = this.pointOptions(series, fields.seriesIx);\n let color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else {\n const scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n const point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n seriesAxes(series) {\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n const plotArea = this.plotArea;\n const xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n const yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis, yAxis };\n }\n\n reflow(targetBox) {\n const chartPoints = this.points;\n const limit = !this.options.clip;\n let pointIx = 0;\n\n\n this.traverseDataPoints((value, fields) => {\n const point = chartPoints[pointIx++];\n const { xAxis, yAxis } = this.seriesAxes(fields.series);\n const indexX = xAxis.categoryIndex(value.x);\n const indexY = yAxis.categoryIndex(value.y);\n const slotX = xAxis.getSlot(indexX, indexX, limit);\n const slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n const pointSlot = this.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n }\n\n pointSlot(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n traverseDataPoints(callback) {\n const { options: { series } } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const { xAxis, yAxis } = this.seriesAxes(currentSeries);\n const xRange = xAxis.currentRangeIndices();\n const yRange = yAxis.currentRangeIndices();\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields: value, fields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n const xIndex = xAxis.totalIndex(value.x);\n const yIndex = yAxis.totalIndex(value.y);\n const xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n const yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this\n }, fields));\n }\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n}\nsetDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n});\ndeepExtend(HeatmapChart.prototype, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default HeatmapChart;\n","import { parseColor } from '@progress/kendo-drawing';\n\n// Linear color scale from the given color to white minus minimum lightness offset.\nconst colorScale = (color, minLightnessOffset = 0.05) => {\n const baseColor = parseColor(color);\n const offset = 1 - minLightnessOffset;\n\n return (value) => {\n const hsl = baseColor .toHSL();\n const range = 100 - hsl.l;\n const point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n};\n\nexport default colorScale;\n","import { deepExtend, eventElement, grep, inArray, setDefaultOptions, createHashSet } from '../../common';\nimport { DATE } from '../../common/constants';\nimport { CategoryAxis, DateCategoryAxis, Point } from '../../core';\nimport { HEATMAP } from '../constants';\nimport HeatmapChart from '../heatmap-chart/heatmap-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesBinder from '../series-binder';\nimport { appendIfNotNull, equalsIgnoreCase, filterSeriesByType, singleItemOrArray } from '../utils';\nimport PlotAreaBase from './plotarea-base';\n\n\nclass HeatmapPlotArea extends PlotAreaBase {\n initFields() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n }\n\n render(panes = this.panes) {\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n }\n\n bindCategories() {\n const series = this.srcSeries || this.series;\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const data = currentSeries.data || [];\n const { xAxis, yAxis } = this.seriesAxes(currentSeries);\n\n const xCategories = createHashSet(xAxis.categories || []);\n const yCategories = createHashSet(yAxis.categories || []);\n\n for (let pointIndex = 0; pointIndex < data.length; pointIndex++) {\n const { x, y } = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n }\n\n createCharts(panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n const filteredSeries = this.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n }\n\n createHeatmapChart(series, pane) {\n const chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n }\n\n seriesPaneName(series) {\n const options = this.options;\n const xAxisName = series.xAxis;\n const xAxisOptions = [].concat(options.xAxis);\n const xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n const yAxisName = series.yAxis;\n const yAxisOptions = [].concat(options.yAxis);\n const yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = panes[0].name || \"default\";\n const paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n seriesAxes(series) {\n let xAxis;\n let yAxis;\n\n const options = this.options;\n\n const xAxisOptions = [].concat(options.xAxis);\n const xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(axis => axis.name === xAxisName);\n } else {\n xAxis = xAxisOptions[0];\n }\n\n const yAxisOptions = [].concat(options.yAxis);\n const yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(axis => axis.name === yAxisName);\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis, yAxis };\n }\n\n createAxisLabels() {\n const axes = this.axes;\n for (let i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n }\n\n createXYAxis(options, vertical, axisIndex) {\n const axisName = options.name;\n const namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n const axisOptions = Object.assign({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n const firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n const typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n const firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n let inferredDate;\n\n for (let i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n const axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(`${ vertical ? \"Y\" : \"X\" } axis with name ${ axisName } is already defined`);\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.mapCategories();\n\n return axis;\n }\n\n createAxes(panes) {\n const options = this.options;\n const xAxesOptions = [].concat(options.xAxis);\n const xAxes = [];\n const yAxesOptions = [].concat(options.yAxis);\n const yAxes = [];\n\n for (let idx = 0; idx < xAxesOptions.length; idx++) {\n const axisPane = this.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (let idx = 0; idx < yAxesOptions.length; idx++) {\n const axisPane = this.findPane(yAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n yAxes.push(this.createXYAxis(yAxesOptions[idx], true, idx));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const allAxes = this.axes;\n const length = allAxes.length;\n const xValues = [];\n const yValues = [];\n\n for (let i = 0; i < length; i++) {\n const axis = allAxes[i];\n const values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n }\n\n updateAxisOptions(axis, options) {\n const vertical = axis.options.vertical;\n const axes = this.groupAxes(this.panes);\n const index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n }\n\n crosshairOptions(axis) {\n // Stack the crosshair above the series points.\n return Object.assign({}, axis.options.crosshair, { zIndex: 0 });\n }\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n const axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default HeatmapPlotArea;\n","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\nimport HeatmapPlotArea from './plotarea/heatmap-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n ERROR_LOW_FIELD, ERROR_HIGH_FIELD, HEATMAP } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nconst COLOR = \"color\";\nconst FIRST = \"first\";\nconst FROM = \"from\";\nconst MAX = \"max\";\nconst MIN = \"min\";\nconst NOTE_TEXT = \"noteText\";\nconst SUMMARY_FIELD = \"summary\";\nconst TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA\n]);\n\nPlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE\n]);\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ]);\nPlotAreaFactory.current.register(RadarPlotArea, [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ]);\n\nPlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\nSeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR ]);\n\nSeriesBinder.current.register(\n [ FUNNEL ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\" ]\n);\n\nDefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\" ]\n);\n","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nclass DonutPlotArea extends PiePlotArea {\n render() {\n this.createDonutChart(this.series);\n }\n\n createDonutChart(series) {\n const firstSeries = series[0];\n const donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n }\n}\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\n\nimport { append } from '../../common';\n\nclass FunnelPlotArea extends PlotAreaBase {\n render() {\n this.createFunnelChart(this.series);\n }\n\n createFunnelChart(series) {\n const firstSeries = series[0];\n const funnelChart = new FunnelChart(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(funnelChart);\n }\n\n appendChart(chart, pane) {\n super.appendChart(chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n}\n\nexport default FunnelPlotArea;","import { drawing as draw, throttle, geometry } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport getField from './utils/get-field';\nimport isDateAxis from './utils/is-date-axis';\nimport getDateField from './utils/get-date-field';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY } from '../common/constants';\nimport { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round,\n HashMap, valueOrDefault } from '../common';\n\nimport { dateComparer } from '../date-utils';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n RENDER, CATEGORY, PIE, DONUT, FUNNEL, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER } from './constants';\n\nimport './animations';\nimport './register-charts';\n\nconst AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nconst MOUSEMOVE = \"mousemove\";\nconst CONTEXTMENU = \"contextmenu\";\nconst MOUSELEAVE = \"mouseleave\";\nconst MOUSEMOVE_DELAY = 20;\n\nclass Chart extends Class {\n constructor(element, userOptions, themeOptions, context = {}) {\n super();\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n const options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n FontLoader.preloadFonts(userOptions, () => {\n this.fontLoaded = true;\n if (!this._destroyed) {\n this.trigger('init');\n this._redraw();\n this._attachEvents();\n }\n });\n }\n\n _initElement(element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n }\n\n _setElementClass(element) {\n addClass(element, \"k-chart\");\n }\n\n _initTheme(options, themeOptions) {\n const seriesCopies = [];\n const series = options.series || [];\n\n for (let i = 0; i < series.length; i++) {\n seriesCopies.push(Object.assign({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n }\n\n getSize() {\n const chartArea = this.options.chartArea || {};\n const width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n const height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n }\n\n resize(force) {\n const size = this.getSize();\n const currentSize = this._size;\n const hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && find(this._selections, s => !s.visible)) {\n this._destroySelections();\n this._setupSelection();\n }\n }\n\n _resize() {\n this._noTransitionsRedraw();\n }\n\n redraw(paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n const plotArea = this._model._plotArea;\n const pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n }\n\n getAxis(name) {\n return findAxisByName(name, this._plotArea.axes);\n }\n\n findAxisByName(name) {\n return this.getAxis(name);\n }\n\n findPaneByName(name) {\n const panes = this._plotArea.panes;\n\n for (let idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n }\n\n findPaneByIndex(idx) {\n const panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n }\n\n plotArea() {\n return new ChartPlotArea(this._plotArea);\n }\n\n toggleHighlight(show, filter) {\n const plotArea = this._plotArea;\n const firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n let points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n let seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (firstSeries.type === PIE || firstSeries.type === FUNNEL) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n }\n\n togglePointsHighlight(show, points) {\n const highlight = this._highlight;\n for (let idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n }\n\n showTooltip(filter) {\n const shared = this._sharedTooltip();\n const { _tooltip: tooltip, _plotArea: plotArea } = this;\n let point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n const points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n }\n\n hideTooltip() {\n this._tooltip.hide();\n }\n\n _initSurface() {\n const surface = this.surface;\n const wrap = this._surfaceWrap();\n\n const chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = draw.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n }\n\n _surfaceWrap() {\n return this.element;\n }\n\n _redraw() {\n const model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._model = model;\n this._plotArea = model._plotArea;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n }\n\n exportVisual(exportOptions) {\n let visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n const currentOptions = this.options;\n const options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n const model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n }\n\n _sharedTooltip() {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n }\n\n _createPannable() {\n const options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n }\n\n _createZoomSelection() {\n const zoomable = this.options.zoomable;\n const selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n }\n\n _createMousewheelZoom() {\n const zoomable = this.options.zoomable;\n const mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n }\n\n _toggleDragZoomEvents() {\n const pannable = this.options.pannable;\n const zoomable = this.options.zoomable;\n const selection = (zoomable || {}).selection;\n const mousewheel = (zoomable || {}).mousewheel;\n const allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n const allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n const element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n }\n\n _toggleDomEvents(drag, zoom) {\n const domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n }\n\n _createTooltip() {\n const { options: { tooltip: tooltipOptions } } = this;\n let tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n }\n\n _createSharedTooltip(options) {\n return new SharedTooltip(this._plotArea, options);\n }\n\n applyDefaults(options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n }\n\n applySeriesColors() {\n const options = this.options;\n const series = options.series;\n const colors = options.seriesColors || [];\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const seriesColor = colors[i % colors.length];\n const defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n }\n\n _getModel() {\n const options = this.options;\n const plotArea = this._createPlotArea();\n const model = new RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n Title.buildTitle(options.title, model);\n\n if (options.legend && options.legend.visible) {\n model.append(new Legend(plotArea.options.legend, this.chartService));\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n }\n\n _modelOptions() {\n const options = this.options;\n const size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || DEFAULT_WIDTH,\n height: size.height || DEFAULT_HEIGHT\n }, options.chartArea);\n }\n\n _createPlotArea(skipSeries) {\n const options = this.options;\n\n const plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n }\n\n _setupSelection() {\n const { _plotArea: { axes } } = this;\n const selections = this._selections = [];\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n const range = axis.range();\n\n const selection = new Selection(this, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n }\n\n _selectStart(e) {\n return this.trigger(SELECT_START, e);\n }\n\n _select(e) {\n return this.trigger(SELECT, e);\n }\n\n _selectEnd(e) {\n return this.trigger(SELECT_END, e);\n }\n\n _initHandlers() {\n this._clickHandler = this._click.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n }\n\n addObserver(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n }\n\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n }\n\n requiresHandlers(eventNames) {\n const observers = this.observers;\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n }\n\n trigger(name, args = {}) {\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n }\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n }\n\n _attachEvents() {\n const element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n bindEvents(element, {\n [ CONTEXTMENU ]: this._clickHandler,\n [ MOUSEWHEEL ]: this._mousewheelHandler,\n [ MOUSELEAVE ]: this._mouseleaveHandler\n });\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(element, { [ MOUSEMOVE ]: this._mousemove });\n }\n\n this.domEvents = DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n }\n\n _mouseleave(e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotArea.hovered) {\n this.trigger(PLOT_AREA_LEAVE);\n this._plotArea.hovered = false;\n }\n }\n\n _cancelDomEvents() {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n }\n\n _gesturestart(e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this.surface.suspendTracking();\n }\n }\n\n _gestureend(e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n }\n\n _gesturechange(e) {\n const mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n const previousGestureDistance = this._gestureDistance;\n let scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n const args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n const coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n const ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n }\n\n _mouseout(e) {\n if (e.element) {\n const element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n }\n\n _start(e) {\n const coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n }\n\n _move(e) {\n let { _navState: state, _pannable: pannable } = this;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n const ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n const ranges = {};\n const axes = state.axes;\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n const axisName = currentAxis.options.name;\n if (axisName) {\n const axis = currentAxis.options.vertical ? e.y : e.x;\n const delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges;\n this.trigger(DRAG, {\n axisRanges: ranges,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n }\n\n _end(e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n const pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n const ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n }\n\n _stopChartHandlers(e) {\n const selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n const coords = this._eventCoordinates(e);\n const pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (let idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n }\n\n _mousewheelZoomRate() {\n const zoomable = this.options.zoomable;\n const mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n }\n\n _mousewheel(e) {\n const delta = mousewheelDelta(e);\n const mousewheelZoom = this._mousewheelZoom;\n const coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n const args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(() => {\n this.trigger(ZOOM_END, args);\n this._zooming = false;\n if (this.surface) {\n this.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n let state = this._navState;\n if (!state) {\n const prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n const totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n const axes = this._navState.axes;\n const ranges = {};\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n const axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(() => {\n this._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n }\n\n _startNavigation(e, coords, chartEvent) {\n const plotArea = this._model._plotArea;\n const pane = plotArea.findPointPane(coords);\n const axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n const ranges = axisRanges(axes);\n\n const prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n }\n\n _endNavigation(e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n }\n\n _getChartElement(e, match) {\n const element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n }\n\n _drawingChartElement(element, e, match) {\n let current = element;\n let chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n }\n\n _eventCoordinates(e) {\n const coordinates = eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n }\n\n _elementPadding() {\n if (!this._padding) {\n const { paddingLeft, paddingTop } = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n }\n\n _toDocumentCoordinates(point) {\n const padding = this._elementPadding();\n const offset = elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n }\n\n // TODO: Breaking change due to peer version change\n // Reuse by exposing _surfacePoint on Surface\n _toModelCoordinates(clientX, clientY) {\n const element = this.element;\n const offset = elementOffset(element);\n const padding = this._elementPadding();\n const inverseTransform = elementScale(element).invert();\n const point = new geometry.Point(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n }\n\n _tap(e) {\n const drawingElement = this.surface.eventTarget(e);\n const element = this._drawingChartElement(drawingElement, e);\n const sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(() => {\n this.handlingTap = false;\n }, 0);\n }\n\n _click(e) {\n const element = this._getChartElement(e);\n this._propagateClick(element, e);\n }\n\n _propagateClick(element, e) {\n let current = element;\n while (current) {\n if (current.click) {\n current.click(this, e);\n }\n\n current = current.parent;\n }\n }\n\n _startHover(element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n let point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n const activePoint = this._activePoint;\n const multipleSeries = this._plotArea.series.length > 1;\n const hasInactiveOpacity = this._hasInactiveOpacity();\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n } else if (!point && hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n\n return point;\n }\n\n _displayTooltip(point) {\n const tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n }\n\n _displayInactiveOpacity(activePoint, multipleSeries, highlightPoints) {\n const chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n let inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n }\n\n _getInactivePoints(activePoint, chartInstance) {\n let allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(point => point !== activePoint);\n }\n\n _getAllPointsOfType(container, type) {\n let points = [];\n\n for (let i = 0; i < container.children.length; i++) {\n const element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n }\n\n _updateHoveredPoint(point, e) {\n const hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n }\n\n _updateSeriesOpacity(point, resetOpacity) {\n const plotArea = this._plotArea;\n const length = plotArea.series.length;\n\n for (let i = 0; i < length; i++) {\n const currSeries = plotArea.series[i];\n const defaultOpacity = this._getDefaultOpacityForSeries(currSeries);\n const inactiveOpacity = this._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n }\n\n _applySeriesOpacity(elements, activeSeries, reset, series) {\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const currSeries = element.series || series;\n const shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n const opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n }\n\n _chartInstanceFromPoint(point) {\n let chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n }\n\n _hasInactiveOpacity() {\n let hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n let hasInactiveOpacity = this.options.series.filter(s => s.highlight.inactiveOpacity !== undefined ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n }\n\n _getInactiveOpacityForSeries(series) {\n let defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n let seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n }\n\n _getDefaultOpacityForSeries(series) {\n return series.defaultOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n }\n\n _mouseover(e) {\n const point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n bindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n }\n }\n\n _mouseMoveTracking(e) {\n const { options, _tooltip: tooltip, _highlight: highlight, _activePoint: point } = this;\n const coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n const seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n const tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n unbindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n this._unsetActivePoint();\n this._mouseMoveTrackHandler = null;\n }\n }\n\n _mousemove(e) {\n const coords = this._eventCoordinates(e);\n const plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n const overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n plotArea.hovered = true;\n this._plotArea.hover(this, e);\n } else if (plotArea.hovered && !overPlotArea) {\n this.trigger(PLOT_AREA_LEAVE);\n plotArea.hovered = false;\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n }\n\n _trackCrosshairs(coords) {\n const crosshairs = this._plotArea.crosshairs;\n\n for (let i = 0; i < crosshairs.length; i++) {\n const current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n }\n\n _trackSharedTooltip(coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n const { options: { tooltip: tooltipOptions }, _plotArea: plotArea, _plotArea: { categoryAxis }, _tooltip: tooltip, _highlight: highlight } = this;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n const index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n const points = plotArea.pointsByCategoryIndex(index);\n const pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n const hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n }\n\n hideElements(options) {\n const plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n }\n\n _unsetActivePoint(options) {\n const { _tooltip: tooltip, _highlight: highlight } = this;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n }\n\n _deferRedraw() {\n this._redraw();\n }\n\n _clearRedrawTimeout() {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n }\n\n bindCategories() {\n const options = this.options;\n const definitions = [].concat(options.categoryAxis);\n\n for (let axisIx = 0; axisIx < definitions.length; axisIx++) {\n const axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n }\n\n bindCategoryAxisFromSeries(axis, axisIx) {\n const series = this.options.series;\n const seriesLength = series.length;\n const uniqueCategories = new HashMap();//perf improvement in case type category with dates\n let items = [];\n let bindable = false;\n let dateAxis;\n\n for (let seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n const s = series[seriesIx];\n const onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n const data = s.data;\n const dataLength = data.length;\n const bind = s.categoryField && onAxis;\n bindable = bind || bindable;\n\n if (bind && dataLength > 0) {\n dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n const getFn = dateAxis ? getDateField : getField;\n\n for (let dataIx = 0; dataIx < dataLength; dataIx++) {\n const dataRow = data[dataIx];\n const category = getFn(s.categoryField, dataRow, this.chartService.intl);\n\n if (dateAxis || !uniqueCategories.get(category)) {\n items.push([ category, dataRow ]);\n\n if (!dateAxis) {\n uniqueCategories.set(category, true);\n }\n }\n }\n }\n }\n\n if (items.length > 0) {\n if (dateAxis) {\n items = uniqueDates(items, function(a, b) {\n return dateComparer(a[0], b[0]);\n });\n }\n\n const result = transpose(items);\n axis.categories = result[0];\n } else if (bindable) {\n axis.categories = [];\n }\n }\n\n _isBindable(series) {\n const valueFields = SeriesBinder.current.valueFields(series);\n let result = true;\n\n for (let i = 0; i < valueFields.length; i++) {\n let field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n }\n\n _noTransitionsRedraw() {\n const options = this.options;\n let transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n }\n\n _legendItemHover(seriesIndex, pointIndex) {\n const { _plotArea: plotArea, _highlight: highlight } = this;\n const currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n let items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n const multipleSeries = plotArea.series.length > 1;\n const point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n }\n\n _shouldAttachMouseMove() {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n }\n\n updateMouseMoveHandler() {\n unbindEvents(this.element, {\n [ MOUSEMOVE ]: this._mousemove\n });\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(this.element, {\n [ MOUSEMOVE ]: this._mousemove\n });\n }\n }\n\n applyOptions(options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n }\n\n setOptions(options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n }\n\n setDirection(rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n }\n\n setIntlService(intl) {\n this.chartService.intl = intl;\n }\n\n noTransitionsRedraw() {\n this._noTransitionsRedraw();\n }\n\n destroy() {\n this._destroyed = true;\n\n unbindEvents(this.element, {\n [ CONTEXTMENU ]: this._clickHandler,\n [ MOUSEWHEEL ]: this._mousewheelHandler,\n [ MOUSEMOVE ]: this._mousemove,\n [ MOUSELEAVE ]: this._mouseleaveHandler\n });\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n unbindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n }\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n }\n\n _destroySurface() {\n const surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n }\n\n _destroySelections() {\n const selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n }\n\n _destroyView() {\n const model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n }\n}\n\nfunction resolveAxisAliases(options) {\n const aliases = AXIS_NAMES;\n\n for (let idx = 0; idx < aliases.length; idx++) {\n const alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n}\n\nfunction pointByCategoryName(points, name) {\n if (points) {\n for (let idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n const themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n let axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n const axisColor = (axisOptions || {}).color || axisDefaults.color;\n const result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (let idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n const series = options.series;\n const seriesLength = series.length;\n const seriesDefaults = options.seriesDefaults;\n const commonDefaults = deepExtend({}, options.seriesDefaults);\n const themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n const commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (let i = 0; i < seriesLength; i++) {\n const seriesType = series[i].type || options.seriesDefaults.type;\n\n const baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n const ranges = {};\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n}\n\nfunction sortDates(dates, comparer = dateComparer) {\n for (let i = 1, length = dates.length; i < length; i++) {\n if (comparer(dates[i], dates[i - 1]) < 0) {\n dates.sort(comparer);\n break;\n }\n }\n\n return dates;\n}\n\nfunction uniqueDates(srcDates, comparer = dateComparer) {\n const dates = sortDates(srcDates, comparer);\n const length = dates.length;\n const result = length > 0 ? [ dates[0] ] : [];\n\n for (let i = 1; i < length; i++) {\n if (comparer(dates[i], last(result)) !== 0) {\n result.push(dates[i]);\n }\n }\n\n return result;\n}\n\nfunction transpose(rows) {\n const rowCount = rows.length;\n const result = [];\n\n for (let rowIx = 0; rowIx < rowCount; rowIx++) {\n const row = rows[rowIx];\n const colCount = row.length;\n\n for (let colIx = 0; colIx < colCount; colIx++) {\n result[colIx] = result[colIx] || [];\n result[colIx].push(row[colIx]);\n }\n }\n\n return result;\n}\n\nconst DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n for (let field in options) {\n if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n const fieldValue = options[field];\n const originalValue = originalOptions[field];\n if (defined(originalValue)) {\n const nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n}\n\nfunction triggerPaneRender(panes) {\n for (let idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n}\n\nsetDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {}\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n});\n\nexport default Chart;\n","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nconst TOP_OFFSET = -2;\n\nclass SharedTooltip extends ChartSharedTooltip {\n _slotAnchor(coords, slot) {\n const axis = this.plotArea.categoryAxis;\n const vertical = axis.options.vertical;\n const align = vertical ? {\n horizontal: \"left\",\n vertical: \"center\"\n } : {\n horizontal: \"center\",\n vertical: \"bottom\"\n };\n\n let point;\n\n if (vertical) {\n point = new Point(this.plotArea.box.x2, slot.center().y);\n } else {\n point = new Point(slot.center().x, TOP_OFFSET);\n }\n\n return {\n point: point,\n align: align\n };\n }\n\n _defaultAnchor(point, slot) {\n return this._slotAnchor({}, slot);\n }\n}\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport{ addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nconst DEAULT_BAR_WIDTH = 150;\nconst DEAULT_BULLET_WIDTH = 150;\nconst NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n const state = [];\n for (let idx = 0; idx < children.length; idx++) {\n const child = children[idx];\n state[idx] = child.style.display;\n child.style.display = \"none\";\n }\n\n return state;\n}\n\nfunction show(children, state) {\n for (let idx = 0; idx < children.length; idx++) {\n children[idx].style.display = state[idx];\n }\n}\n\nfunction wrapNumber(value) {\n return isNumber(value) ? [ value ] : value;\n}\n\nclass Sparkline extends Chart {\n _setElementClass(element) {\n addClass(element, 'k-sparkline');\n }\n\n _initElement(element) {\n super._initElement(element);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n }\n\n _resize() {\n const element = this.element;\n const state = hide(element.childNodes);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n\n show(element.childNodes, state);\n\n super._resize();\n }\n\n _modelOptions() {\n const chartOptions = this.options;\n const stage = this._surfaceWrap();\n const displayState = hide(stage.childNodes);\n\n const space = document.createElement('span');\n space.innerHTML = ' ';\n\n stage.appendChild(space);\n\n const options = deepExtend({\n width: this._autoWidth,\n height: elementSize(stage).height,\n transitions: chartOptions.transitions\n }, chartOptions.chartArea, {\n inline: true,\n align: false\n });\n\n elementSize(stage, {\n width: options.width,\n height: options.height\n });\n\n stage.removeChild(space);\n\n show(stage.childNodes, displayState);\n\n if (this.surface) {\n this.surface.resize();\n }\n\n return options;\n }\n\n _surfaceWrap() {\n if (!this.stage) {\n const stage = this.stage = document.createElement('span');\n this.element.appendChild(stage);\n }\n return this.stage;\n }\n\n _createPlotArea(skipSeries) {\n const plotArea = super._createPlotArea(skipSeries);\n this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n return plotArea;\n }\n\n _calculateWidth(plotArea) {\n const options = this.options;\n const margin = getSpacing(options.chartArea.margin);\n const charts = plotArea.charts;\n const stage = this._surfaceWrap();\n let total = 0;\n\n\n for (let i = 0; i < charts.length; i++) {\n const currentChart = charts[i];\n const firstSeries = (currentChart.options.series || [])[0];\n if (!firstSeries) {\n continue;\n }\n\n if (firstSeries.type === BAR) {\n return DEAULT_BAR_WIDTH;\n }\n\n if (firstSeries.type === BULLET) {\n return DEAULT_BULLET_WIDTH;\n }\n\n if (firstSeries.type === PIE) {\n return elementSize(stage).height;\n }\n\n const categoryAxis = currentChart.categoryAxis;\n if (categoryAxis) {\n const pointsCount = categoryAxis.categoriesCount() *\n (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n total = Math.max(total, pointsCount);\n }\n }\n\n let size = total * options.pointWidth;\n if (size > 0) {\n size += margin.left + margin.right;\n }\n\n return size;\n }\n\n _createSharedTooltip(options) {\n return new SharedTooltip(this._plotArea, options);\n }\n\n static normalizeOptions(userOptions) {\n let options = wrapNumber(userOptions);\n\n if (isArray(options)) {\n options = { seriesDefaults: { data: options } };\n } else {\n options = deepExtend({}, options);\n }\n\n if (!options.series) {\n options.series = [ { data: wrapNumber(options.data) } ];\n }\n\n deepExtend(options, {\n seriesDefaults: {\n type: options.type\n }\n });\n\n if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n options = deepExtend({}, {\n categoryAxis: {\n crosshair: {\n visible: false\n }\n }\n }, options);\n }\n\n return options;\n }\n}\n\nsetDefaultOptions(Sparkline, {\n chartArea: {\n margin: 2\n },\n axisDefaults: {\n visible: false,\n majorGridLines: {\n visible: false\n },\n valueAxis: {\n narrowRange: true\n }\n },\n seriesDefaults: {\n type: \"line\",\n area: {\n line: {\n width: 0.5\n }\n },\n bar: {\n stack: true\n },\n padding: 2,\n width: 0.5,\n overlay: {\n gradient: null\n },\n highlight: {\n visible: false\n },\n border: {\n width: 0\n },\n markers: {\n size: 2,\n visible: false\n }\n },\n tooltip: {\n visible: true,\n shared: true\n },\n categoryAxis: {\n crosshair: {\n visible: true,\n tooltip: {\n visible: false\n }\n }\n },\n legend: {\n visible: false\n },\n transitions: false,\n\n pointWidth: 5,\n\n panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nclass FadeOutAnimation extends draw.Animation {\n\n setup() {\n this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n }\n\n step(pos) {\n elementStyles(this.element, {\n opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n });\n }\n\n abort() {\n super.abort();\n elementStyles(this.element, {\n display: 'none',\n opacity: String(this._initialOpacity)\n });\n }\n\n cancel() {\n super.abort();\n elementStyles(this.element, {\n opacity: String(this._initialOpacity)\n });\n }\n}\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n const div = document.createElement(\"div\");\n div.className = className;\n if (style) {\n div.style.cssText = style;\n }\n\n return div;\n}\n\nclass NavigatorHint extends Class {\n constructor(container, chartService, options) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.container = container;\n this.chartService = chartService;\n\n const padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n this.chartPadding = {\n top: padding.paddingTop,\n left: padding.paddingLeft\n };\n\n this.createElements();\n container.appendChild(this.element);\n }\n\n createElements() {\n const element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n const tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n const scroll = this.scroll = createDiv('k-scroll');\n\n tooltip.innerHTML = ' ';\n\n element.appendChild(tooltip);\n element.appendChild(scroll);\n }\n\n show(from, to, bbox) {\n const { element, options, scroll, tooltip } = this;\n const middle = toDate(toTime(from) + toTime(to - from) / 2);\n const scrollWidth = bbox.width() * 0.4;\n const minPos = bbox.center().x - scrollWidth;\n const maxPos = bbox.center().x;\n const posRange = maxPos - minPos;\n const range = options.max - options.min;\n const scale = posRange / range;\n const offset = middle - options.min;\n let text = this.chartService.intl.format(options.format, from, to);\n const template = getTemplate(options);\n\n this.clearHideTimeout();\n\n if (!this._visible) {\n elementStyles(element, {\n visibility: 'hidden',\n display: 'block'\n });\n this._visible = true;\n }\n\n if (template) {\n text = template({\n from: from,\n to: to\n });\n }\n\n tooltip.innerHTML = text;\n elementStyles(tooltip, {\n left: bbox.center().x - tooltip.offsetWidth / 2,\n top: bbox.y1\n });\n\n const tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n elementStyles(scroll, {\n width: scrollWidth,\n left: minPos + offset * scale,\n top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n });\n\n elementStyles(element, {\n visibility: 'visible'\n });\n }\n\n clearHideTimeout() {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n if (this._hideAnimation) {\n this._hideAnimation.cancel();\n }\n }\n\n hide() {\n this.clearHideTimeout();\n\n this._hideTimeout = setTimeout(() => {\n this._visible = false;\n this._hideAnimation = new FadeOutAnimation(this.element);\n this._hideAnimation.setup();\n this._hideAnimation.play();\n }, this.options.hideDelay);\n }\n\n destroy() {\n this.clearHideTimeout();\n if (this.container) {\n this.container.removeChild(this.element);\n }\n delete this.container;\n delete this.chartService;\n delete this.element;\n delete this.tooltip;\n delete this.scroll;\n }\n}\n\nsetDefaultOptions(NavigatorHint, {\n format: \"{0:d} - {1:d}\",\n hideDelay: 500\n});\n\nexport default NavigatorHint;","const NAVIGATOR_PANE = \"_navigator\";\nconst NAVIGATOR_AXIS = NAVIGATOR_PANE;\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE };","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nconst ZOOM_ACCELERATION = 3;\n\nclass Navigator extends Class {\n constructor(chart) {\n super();\n\n this.chart = chart;\n const options = this.options = deepExtend({}, this.options, chart.options.navigator);\n const select = options.select;\n if (select) {\n select.from = this.parseDate(select.from);\n select.to = this.parseDate(select.to);\n }\n\n if (!defined(options.hint.visible)) {\n options.hint.visible = options.visible;\n }\n\n this.chartObserver = new InstanceObserver(this, {\n [DRAG]: '_drag',\n [DRAG_END]: '_dragEnd',\n [ZOOM]: '_zoom',\n [ZOOM_END]: '_zoomEnd'\n });\n chart.addObserver(this.chartObserver);\n }\n\n parseDate(value) {\n return parseDate(this.chart.chartService.intl, value);\n }\n\n clean() {\n if (this.selection) {\n this.selection.destroy();\n this.selection = null;\n }\n\n if (this.hint) {\n this.hint.destroy();\n this.hint = null;\n }\n }\n\n destroy() {\n if (this.chart) {\n this.chart.removeObserver(this.chartObserver);\n delete this.chart;\n }\n\n this.clean();\n }\n\n redraw() {\n this._redrawSelf();\n this.initSelection();\n }\n\n initSelection() {\n const { chart, options } = this;\n const axis = this.mainAxis();\n const { min, max } = axis.roundedRange();\n const { from, to, mousewheel } = options.select;\n const axisClone = clone(axis);\n\n if (axis.categoriesCount() === 0) {\n return;\n }\n\n this.clean();\n\n // \"Freeze\" the selection axis position until the next redraw\n axisClone.box = axis.box;\n\n this.selection = new Selection(chart, axisClone, {\n min: min,\n max: max,\n from: from || min,\n to: to || max,\n mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n visible: options.visible\n }, new InstanceObserver(this, {\n selectStart: '_selectStart',\n select: '_select',\n selectEnd: '_selectEnd'\n }));\n\n if (options.hint.visible) {\n this.hint = new NavigatorHint(chart.element, chart.chartService, {\n min: min,\n max: max,\n template: getTemplate(options.hint),\n format: options.hint.format\n });\n }\n }\n\n setRange() {\n const plotArea = this.chart._createPlotArea(true);\n const axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n const { min, max } = axis.roundedRange();\n\n const select = this.options.select || {};\n let from = select.from || min;\n if (from < min) {\n from = min;\n }\n\n let to = select.to || max;\n if (to > max) {\n to = max;\n }\n\n this.options.select = deepExtend({}, select, {\n from: from,\n to: to\n });\n\n this.filterAxes();\n }\n\n _redrawSelf(silent) {\n const plotArea = this.chart._plotArea;\n\n if (plotArea) {\n plotArea.redraw(last(plotArea.panes), silent);\n }\n }\n\n redrawSlaves() {\n const chart = this.chart;\n const plotArea = chart._plotArea;\n const slavePanes = plotArea.panes.slice(0, -1);\n\n // Update the original series and categoryAxis before partial refresh.\n plotArea.srcSeries = chart.options.series;\n plotArea.options.categoryAxis = chart.options.categoryAxis;\n plotArea.clearSeriesPointsCache();\n\n plotArea.redraw(slavePanes);\n }\n\n _drag(e) {\n const { chart, selection } = this;\n const coords = chart._eventCoordinates(e.originalEvent);\n const navigatorAxis = this.mainAxis();\n const naviRange = navigatorAxis.roundedRange();\n const inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n const axis = chart._plotArea.categoryAxis;\n const range = e.axisRanges[axis.options.name];\n const select = this.options.select;\n let duration;\n\n if (!range || inNavigator || !selection) {\n return;\n }\n\n if (select.from && select.to) {\n duration = toTime(select.to) - toTime(select.from);\n } else {\n duration = toTime(selection.options.to) - toTime(selection.options.from);\n }\n\n const from = toDate(limitValue(\n toTime(range.min),\n naviRange.min, toTime(naviRange.max) - duration\n ));\n\n const to = toDate(limitValue(\n toTime(from) + duration,\n toTime(naviRange.min) + duration, naviRange.max\n ));\n\n this.options.select = { from: from, to: to };\n\n if (this.options.liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(from, to);\n\n this.showHint(from, to);\n }\n\n _dragEnd() {\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n if (this.hint) {\n this.hint.hide();\n }\n }\n\n readSelection() {\n const { selection: { options: { from, to } }, options: { select } } = this;\n\n select.from = from;\n select.to = to;\n }\n\n filterAxes() {\n const { options: { select = { } }, chart } = this;\n const allAxes = chart.options.categoryAxis;\n const { from, to } = select;\n\n for (let idx = 0; idx < allAxes.length; idx++) {\n const axis = allAxes[idx];\n if (axis.pane !== NAVIGATOR_PANE) {\n axis.min = from;\n axis.max = to;\n }\n }\n }\n\n filter() {\n const { chart, options: { select } } = this;\n\n if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n return;\n }\n\n const mainAxis = this.mainAxis();\n const args = {\n from: select.from,\n to: select.to\n };\n\n if (mainAxis.options.type !== 'category') {\n const axisOptions = new DateCategoryAxis(deepExtend({\n baseUnit: \"fit\"\n }, chart.options.categoryAxis[0], {\n categories: [ select.from, select.to ]\n }), chart.chartService).options;\n\n args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n }\n\n this.chart.trigger(\"navigatorFilter\", args);\n }\n\n _zoom(e) {\n const { chart: { _plotArea: { categoryAxis: axis } }, selection, options: { select, liveDrag } } = this;\n const mainAxis = this.mainAxis();\n let delta = e.delta;\n\n if (!selection) {\n return;\n }\n\n const fromIx = mainAxis.categoryIndex(selection.options.from);\n const toIx = mainAxis.categoryIndex(selection.options.to);\n const coords = this.chart._eventCoordinates(e.originalEvent);\n\n e.originalEvent.preventDefault();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (toIx - fromIx > 1) {\n selection.zoom(delta, coords);\n this.readSelection();\n } else {\n axis.options.min = select.from;\n select.from = axis.scaleRange(-e.delta * this.chart._mousewheelZoomRate(), coords).min;\n }\n\n if (liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(select.from, select.to);\n\n this.showHint(this.options.select.from, this.options.select.to);\n }\n\n _zoomEnd(e) {\n this._dragEnd(e);\n }\n\n showHint(from, to) {\n const plotArea = this.chart._plotArea;\n\n if (this.hint) {\n this.hint.show(from, to, plotArea.backgroundBox());\n }\n }\n\n _selectStart(e) {\n return this.chart._selectStart(e);\n }\n\n _select(e) {\n this.showHint(e.from, e.to);\n\n return this.chart._select(e);\n }\n\n _selectEnd(e) {\n if (this.hint) {\n this.hint.hide();\n }\n\n this.readSelection();\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n return this.chart._selectEnd(e);\n }\n\n mainAxis() {\n const plotArea = this.chart._plotArea;\n\n if (plotArea) {\n return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n }\n }\n\n select(from, to) {\n const select = this.options.select;\n\n if (from && to) {\n select.from = this.parseDate(from);\n select.to = this.parseDate(to);\n\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n this.selection.set(from, to);\n }\n\n return {\n from: select.from,\n to: select.to\n };\n }\n\n static setup(options = {}, themeOptions = {}) {\n if (options.__navi) {\n return;\n }\n options.__navi = true;\n\n const naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n const panes = options.panes = [].concat(options.panes);\n const paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n if (!naviOptions.visible) {\n paneOptions.visible = false;\n paneOptions.height = 0.1;\n }\n\n panes.push(paneOptions);\n\n Navigator.attachAxes(options, naviOptions);\n Navigator.attachSeries(options, naviOptions, themeOptions);\n }\n\n static attachAxes(options, naviOptions) {\n const series = naviOptions.series || [];\n const categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n const valueAxes = options.valueAxis = [].concat(options.valueAxis);\n\n const equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n const justifyAxis = equallySpacedSeries.length === 0;\n\n const base = deepExtend({\n type: \"date\",\n pane: NAVIGATOR_PANE,\n roundToBaseUnit: !justifyAxis,\n justified: justifyAxis,\n _collapse: false,\n majorTicks: { visible: true },\n tooltip: { visible: false },\n labels: { step: 1 },\n autoBind: naviOptions.autoBindElements,\n autoBaseUnitSteps: {\n minutes: [ 1 ],\n hours: [ 1, 2 ],\n days: [ 1, 2 ],\n weeks: [],\n months: [ 1 ],\n years: [ 1 ]\n }\n });\n const user = naviOptions.categoryAxis;\n\n categoryAxes.push(\n deepExtend({}, base, {\n maxDateGroups: 200\n }, user, {\n name: NAVIGATOR_AXIS,\n title: null,\n baseUnit: \"fit\",\n baseUnitStep: \"auto\",\n labels: { visible: false },\n majorTicks: { visible: false }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_labels\",\n maxDateGroups: 20,\n baseUnitStep: \"auto\",\n labels: { position: \"\" },\n plotBands: [],\n autoBaseUnitSteps: {\n minutes: []\n },\n _overlap: true\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_ticks\",\n maxDateGroups: 200,\n majorTicks: {\n width: 0.5\n },\n plotBands: [],\n title: null,\n labels: { visible: false, mirror: true },\n _overlap: true\n })\n );\n\n valueAxes.push(deepExtend({\n name: NAVIGATOR_AXIS,\n pane: NAVIGATOR_PANE,\n majorGridLines: {\n visible: false\n },\n visible: false\n }, naviOptions.valueAxis));\n }\n\n static attachSeries(options, naviOptions, themeOptions) {\n const series = options.series = options.series || [];\n const navigatorSeries = [].concat(naviOptions.series || []);\n const seriesColors = themeOptions.seriesColors;\n const defaults = naviOptions.seriesDefaults;\n\n for (let idx = 0; idx < navigatorSeries.length; idx++) {\n series.push(\n deepExtend({\n color: seriesColors[idx % seriesColors.length],\n categoryField: naviOptions.dateField,\n visibleInLegend: false,\n tooltip: {\n visible: false\n }\n }, defaults, navigatorSeries[idx], {\n axis: NAVIGATOR_AXIS,\n categoryAxis: NAVIGATOR_AXIS,\n autoBind: naviOptions.autoBindElements\n })\n );\n }\n }\n}\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n ClonedObject.prototype = obj;\n return new ClonedObject();\n}\n\nexport default Navigator;\n","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nconst AUTO_CATEGORY_WIDTH = 28;\n\nclass StockChart extends Chart {\n\n applyDefaults(options, themeOptions) {\n const width = elementSize(this.element).width || DEFAULT_WIDTH;\n let theme = themeOptions;\n\n const stockDefaults = {\n seriesDefaults: {\n categoryField: options.dateField\n },\n axisDefaults: {\n categoryAxis: {\n name: \"default\",\n majorGridLines: {\n visible: false\n },\n labels: {\n step: 2\n },\n majorTicks: {\n visible: false\n },\n maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n }\n }\n };\n\n if (theme) {\n theme = deepExtend({}, theme, stockDefaults);\n }\n\n Navigator.setup(options, theme);\n\n super.applyDefaults(options, theme);\n }\n\n _setElementClass(element) {\n addClass(element, 'k-chart k-stockchart');\n }\n\n setOptions(options) {\n this.destroyNavigator();\n super.setOptions(options);\n }\n\n noTransitionsRedraw() {\n const transitions = this.options.transitions;\n\n this.options.transitions = false;\n this._fullRedraw();\n this.options.transitions = transitions;\n }\n\n _resize() {\n this.noTransitionsRedraw();\n }\n\n _redraw() {\n const navigator = this.navigator;\n\n if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n navigator.redrawSlaves();\n } else {\n this._fullRedraw();\n }\n }\n\n _dirty() {\n const options = this.options;\n const series = [].concat(options.series, options.navigator.series);\n const seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n const dirty = this._seriesCount !== seriesCount;\n this._seriesCount = seriesCount;\n\n return dirty;\n }\n\n _fullRedraw() {\n let navigator = this.navigator;\n\n if (!navigator) {\n navigator = this.navigator = new Navigator(this);\n this.trigger(\"navigatorCreated\", { navigator: navigator });\n }\n\n navigator.clean();\n navigator.setRange();\n\n super._redraw();\n\n navigator.initSelection();\n }\n\n _trackSharedTooltip(coords) {\n const plotArea = this._plotArea;\n const pane = plotArea.paneByPoint(coords);\n\n if (pane && pane.options.name === NAVIGATOR_PANE) {\n this._unsetActivePoint();\n } else {\n super._trackSharedTooltip(coords);\n }\n }\n\n bindCategories() {\n super.bindCategories();\n this.copyNavigatorCategories();\n }\n\n copyNavigatorCategories() {\n const definitions = [].concat(this.options.categoryAxis);\n let categories;\n\n for (let axisIx = 0; axisIx < definitions.length; axisIx++) {\n const axis = definitions[axisIx];\n if (axis.name === NAVIGATOR_AXIS) {\n categories = axis.categories;\n } else if (categories && axis.pane === NAVIGATOR_PANE) {\n axis.categories = categories;\n }\n }\n }\n\n destroyNavigator() {\n if (this.navigator) {\n this.navigator.destroy();\n this.navigator = null;\n }\n }\n\n destroy() {\n this.destroyNavigator();\n super.destroy();\n }\n\n _stopChartHandlers(e) {\n const coords = this._eventCoordinates(e);\n const pane = this._plotArea.paneByPoint(coords);\n\n return super._stopChartHandlers(e) || (pane && pane.options.name === NAVIGATOR_PANE);\n }\n\n _toggleDragZoomEvents() {\n if (!this._dragZoomEnabled) {\n this.element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n }\n}\n\nsetDefaultOptions(StockChart, {\n dateField: \"date\",\n axisDefaults: {\n categoryAxis: {\n type: \"date\",\n baseUnit: \"fit\",\n justified: true\n },\n valueAxis: {\n narrowRange: true,\n labels: {\n format: \"C\"\n }\n }\n },\n navigator: {\n select: {},\n seriesDefaults: {\n markers: {\n visible: false\n },\n tooltip: {\n visible: true\n },\n line: {\n width: 2\n }\n },\n hint: {},\n visible: true\n },\n tooltip: {\n visible: true\n },\n legend: {\n visible: false\n }\n});\n\nexport default StockChart;","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport { Path } from './path';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport { defined } from '../util';\n\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Arc extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Arc\";\n }\n\n constructor(geometry = new GeometryArc(), 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 _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n rawBBox() {\n return this.geometry().bbox();\n }\n\n toPath() {\n const path = new Path();\n const curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\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 Arc;\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\n\nclass Rect extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(geometry = new GeometryRect(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n rawBBox() {\n return this._geometry.bbox();\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 Rect;\n","import translateToPoint from './translate-to-point';\nimport alignStart from './align-start';\n\nexport default function alignElements(elements, rect, alignment, axis, sizeField) {\n for (let idx = 0; idx < elements.length; idx++) {\n const bbox = elements[idx].clippedBBox();\n if (bbox) {\n const point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n}","\nimport alignElements from './align-elements';\n\nexport default function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"x\", \"width\");\n}","import alignElements from './align-elements';\n\nexport default function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"y\", \"height\");\n}","import Point from '../geometry/point';\nimport translateToPoint from './translate-to-point';\n\nexport default function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n const origin = new Point();\n let previousBBox = elements[0].bbox;\n\n for (let idx = 1; idx < elements.length; idx++) {\n let element = elements[idx].element;\n let bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n}","export default function createStackElements(elements) {\n const stackElements = [];\n\n for (let idx = 0; idx < elements.length; idx++) {\n let element = elements[idx];\n let bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n\n return stackElements;\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function stack(elements) {\n stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function vStack(elements) {\n stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n}","import translateToPoint from './translate-to-point';\nimport stackElements from './stack-elements';\n\nfunction getStacks(elements, rect, sizeField) {\n const maxSize = rect.size[sizeField];\n const stacks = [];\n let stack = [];\n let stackSize = 0;\n let element, bbox;\n\n const addElementToStack = function() {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n\n for (let idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n\n bbox = element.clippedBBox();\n if (bbox) {\n let size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n\n if (stack.length) {\n stacks.push(stack);\n }\n\n return stacks;\n}\n\nexport default function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n const stacks = getStacks(elements, rect, sizeField);\n const origin = rect.origin.clone();\n const result = [];\n\n for (let idx = 0; idx < stacks.length; idx++) {\n let stack = stacks[idx];\n let startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (let elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n}","import wrapElements from './wrap-elements';\n\nexport default function wrap(elements, rect) {\n return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n}","import wrapElements from './wrap-elements';\n\nexport default function vWrap(elements, rect) {\n return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n}","import createTransform from '../geometry/transform';\n\nexport default function fit(element, rect) {\n const bbox = element.clippedBBox();\n if (bbox) {\n const elementSize = bbox.size;\n const rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n const scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n const transform = element.transform() || createTransform();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n}","import { Class } from '../common';\nimport { MultiPath } from '../shapes/path';\nimport parsePath from './parse-path';\n\nlet instance;\n\nclass PathParser extends Class {\n static get current() {\n if (!instance) {\n instance = new PathParser();\n }\n\n return instance;\n }\n\n parse(str, options) {\n const multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n }\n}\n\nexport default PathParser;\n\n","const ANGULAR_SPEED = 150;\nconst LINEAR_SPEED = 250;\nconst ARROW = \"arrow\";\nconst ARROW_POINTER = \"arrowPointer\";\nconst BAR_POINTER = \"barPointer\";\nconst DEFAULT_HEIGHT = 200;\nconst DEFAULT_LINE_WIDTH = 0.5;\nconst DEFAULT_WIDTH = 200;\nconst DEGREE = Math.PI / 180;\nconst INSIDE = \"inside\";\nconst LINEAR = \"linear\";\nconst OUTSIDE = \"outside\";\nconst RADIAL_POINTER = \"radialPointer\";\nconst RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n const origin = bbox.getOrigin();\n const size = bbox.getSize();\n const spacing = getSpacing(value);\n\n bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n return bbox;\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nconst { Group, Path, Text } = drawing;\n\nexport default function buildLabelElement(label, options) {\n const labelBox = label.box;\n const textBox = label.children[0].box;\n const border = options.border || {};\n const background = options.background || \"\";\n\n const wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n stroke: {}\n });\n\n const text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n\n const styleGeometry = pad(text.bbox().clone(), options.padding);\n\n const styleBox = Path.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: background\n }\n });\n\n const elements = new Group();\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n\n return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n const from = defined(range.from) ? range.from : MIN_VALUE;\n const to = defined(range.to) ? range.to : MAX_VALUE;\n\n range.from = Math.max(Math.min(to, from), min);\n range.to = Math.min(Math.max(to, from), max);\n\n return range;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n const spacing = getSpacing(value);\n\n spacing.left = -spacing.left; spacing.top = -spacing.top;\n spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n return pad(bbox, spacing);\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nconst DEFAULT_MARGIN = 5;\nconst { Path, Surface } = drawing;\n\nclass Gauge extends Class {\n\n constructor(element, userOptions, theme, context = {}) {\n super();\n\n this.element = element;\n this.theme = theme;\n this.contextService = new ChartService(this, context);\n this._originalOptions = deepExtend({}, this.options, userOptions);\n this.options = deepExtend({}, this._originalOptions);\n this._initTheme(theme);\n\n this.redraw();\n }\n\n destroy() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n }\n\n delete this.element;\n delete this.surfaceElement;\n }\n\n value(pointerValue) {\n const pointer = this.pointers[0];\n\n if (arguments.length === 0) {\n return pointer.value();\n }\n\n pointer.value(pointerValue);\n this._setValueOptions(pointerValue);\n }\n\n _draw() {\n const surface = this.surface;\n\n surface.clear();\n surface.draw(this._visuals);\n }\n\n exportVisual() {\n return this._visuals;\n }\n\n allValues(values) {\n const pointers = this.pointers;\n const allValues = [];\n\n if (arguments.length === 0) {\n for (let i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n\n return allValues;\n }\n\n if (isArray(values)) {\n for (let i = 0; i < values.length; i++) {\n if (isNumber(values[i])) {\n pointers[i].value(values[i]);\n }\n }\n }\n\n this._setValueOptions(values);\n }\n\n _setValueOptions(values) {\n const pointers = [].concat(this.options.pointer);\n const arrayValues = [].concat(values);\n\n for (let i = 0; i < arrayValues.length; i++) {\n pointers[i].value = arrayValues[i];\n }\n }\n\n resize() {\n this.noTransitionsRedraw();\n }\n\n noTransitionsRedraw() {\n const transitions = this.options.transitions;\n\n this._toggleTransitions(false);\n\n this.redraw();\n\n this._toggleTransitions(transitions);\n }\n\n redraw() {\n const size = this._surfaceSize();\n const wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._initSurface();\n\n this.gaugeArea = this._createGaugeArea();\n\n this._createModel();\n\n const bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n this.reflow(bbox);\n }\n\n setOptions(options, theme) {\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n this._initTheme(theme);\n\n this.redraw();\n }\n\n setDirection(rtl) {\n this.contextService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this.surface.destroy();\n this.surface = null;\n }\n }\n\n setIntlService(intl) {\n this.contextService.intl = intl;\n }\n\n _initTheme(theme) {\n let currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n\n this.options = deepExtend({}, currentTheme, this.options);\n const options = this.options;\n const pointer = options.pointer;\n\n if (isArray(pointer)) {\n const pointers = [];\n for (let i = 0; i < pointer.length; i++) {\n pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n }\n options.pointer = pointers;\n }\n }\n\n _createGaugeArea() {\n const options = this.options.gaugeArea;\n const size = this.surface.size();\n const border = options.border || {};\n let areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n if (border.width > 0) {\n areaGeometry = unpad(areaGeometry, border.width);\n }\n\n const gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: options.background\n }\n });\n\n return gaugeArea;\n }\n\n _initSurface() {\n const { options, surface } = this;\n const element = this._surfaceElement();\n const size = this._surfaceSize();\n\n elementSize(element, size);\n\n if (!surface || surface.options.type !== options.renderAs) {\n if (surface) {\n surface.destroy();\n }\n\n this.surface = Surface.create(element, {\n type: options.renderAs\n });\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n }\n\n _surfaceSize() {\n const options = this.options;\n const size = this._getSize();\n\n if (options.gaugeArea) {\n deepExtend(size, options.gaugeArea);\n }\n\n return size;\n }\n\n _surfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n\n return this.surfaceElement;\n }\n\n getSize() {\n return this._getSize();\n }\n\n _getSize() {\n const element = this.element;\n const defaultSize = this._defaultSize();\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n\n if (!width) {\n width = defaultSize.width;\n }\n\n if (!height) {\n height = defaultSize.height;\n }\n\n return { width: width, height: height };\n }\n\n _defaultSize() {\n return {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT\n };\n }\n\n _toggleTransitions(value) {\n this.options.transitions = value;\n for (let i = 0; i < this.pointers.length; i++) {\n this.pointers[i].options.animation.transitions = value;\n }\n }\n}\n\nsetDefaultOptions(Gauge, {\n plotArea: {},\n theme: \"default\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nconst { Path, Group } = drawing;\nconst Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n const { position, tickX, tickY } = tickRenderOptions;\n let start, end;\n\n if (tickRenderOptions.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n\n const tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n\n return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n const count = tickPositions.length;\n\n if (tickOptions.visible) {\n const { mirror, lineBox } = tickRenderOptions;\n for (let i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n\n tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickRenderOptions.position = tickPositions[i];\n\n tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n }\n }\n}\n\nclass LinearScale extends NumericAxis {\n constructor(options, service) {\n let scaleOptions = options || {};\n if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n scaleOptions = Object.assign({}, scaleOptions, {\n reverse: true\n });\n }\n\n super(0, 1, scaleOptions, service);\n\n this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n }\n\n initUserOptions(options) {\n let scaleOptions = deepExtend({}, this.options, options);\n scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n return scaleOptions;\n }\n\n initFields() {\n }\n\n render() {\n const elements = this.elements = new Group();\n const labels = this.renderLabels();\n const scaleLine = this.renderLine();\n const scaleTicks = this.renderTicks();\n const ranges = this.renderRanges();\n\n elements.append(scaleLine, labels, scaleTicks, ranges);\n\n return elements;\n }\n\n renderRanges() {\n const options = this.options;\n const { min, max, vertical, labels: { mirror } } = options;\n const ranges = options.ranges || [];\n const elements = new Group();\n const count = ranges.length;\n const rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n for (let i = 0; i < count; i++) {\n const range = getRange(ranges[i], min, max);\n const slot = this.getSlot(range.from, range.to);\n const slotX = vertical ? this.lineBox() : slot;\n const slotY = vertical ? slot : this.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n\n elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n fill: { color: range.color, opacity: range.opacity },\n stroke: { }\n }));\n }\n\n return elements;\n }\n\n renderLabels() {\n const { labels, options } = this;\n const elements = new Group();\n\n for (let i = 0; i < labels.length; i++) {\n elements.append(buildLabelElement(labels[i], options.labels));\n }\n\n return elements;\n }\n\n renderLine() {\n const line = this.options.line;\n const lineBox = this.lineBox();\n const elements = new Group();\n\n if (line.width > 0 && line.visible) {\n const linePath = new Path({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n\n return elements;\n }\n\n renderTicks() {\n const ticks = new Group();\n const options = this.options;\n const majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n const tickRenderOptions = {\n vertical: options.vertical,\n mirror: options.labels.mirror,\n lineBox: this.lineBox()\n };\n\n renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n skipUnit: majorUnit / options.minorUnit\n }, options.minorTicks));\n\n return ticks;\n }\n}\n\nsetDefaultOptions(LinearScale, {\n min: 0,\n max: 50,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n line: {\n width: DEFAULT_LINE_WIDTH\n },\n\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nclass Pointer extends Class {\n constructor(scale, userOptions) {\n super();\n\n const { min, max } = scale.options;\n const options = this.options = deepExtend({}, this.options, userOptions);\n\n options.fill = options.color;\n\n this.scale = scale;\n\n if (defined(options.value)) {\n options.value = limitValue(options.value, min, max);\n } else {\n options.value = min;\n }\n }\n\n value(newValue) {\n const options = this.options;\n const value = options.value;\n\n if (arguments.length === 0) {\n return value;\n }\n\n const { min, max } = this.scale.options;\n\n options._oldValue = defined(options._oldValue) ? options.value : min;\n options.value = limitValue(newValue, min, max);\n\n if (this.elements) {\n this.repaint();\n }\n }\n}\n\nsetDefaultOptions(Pointer, {\n color: BLACK\n});\n\nexport default Pointer;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nclass LinearPointer extends Pointer {\n constructor(scale, options) {\n super(scale, options);\n\n this.options = deepExtend({\n track: {\n visible: defined(options.track)\n }\n }, this.options);\n }\n\n reflow() {\n const { options, scale } = this;\n const { mirror, vertical } = scale.options;\n const scaleLine = scale.lineBox();\n const trackSize = options.track.size || options.size;\n const pointerHalfSize = options.size / 2;\n const margin = getSpacing(options.margin);\n let space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n let pointerBox, pointerRangeBox, trackBox;\n\n space = mirror ? -space : space;\n\n if (vertical) {\n trackBox = new Box(\n scaleLine.x1 + space, scaleLine.y1,\n scaleLine.x1 + space, scaleLine.y2);\n\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n );\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box(\n scaleLine.x1, scaleLine.y1 - space,\n scaleLine.x2, scaleLine.y1 - space);\n\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n );\n pointerBox = pointerRangeBox;\n }\n }\n\n this.trackBox = trackBox;\n this.pointerRangeBox = pointerRangeBox;\n this.box = pointerBox || trackBox.clone().pad(options.border.width);\n }\n\n getElementOptions() {\n const options = this.options;\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : \"\",\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n }\n\n _margin() {\n const { scale, options } = this;\n const { mirror, vertical } = scale.options;\n const margin = getSpacing(options.margin);\n\n const space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n\n return space;\n }\n}\n\nsetDefaultOptions(LinearPointer, {\n shape: BAR_POINTER,\n\n track: {\n border: {\n width: 1\n }\n },\n\n color: BLACK,\n border: {\n width: 1\n },\n opacity: 1,\n\n margin: getSpacing(3),\n animation: {\n type: BAR_POINTER\n },\n visible: true\n});\n\nexport default LinearPointer;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nclass ArrowLinearPointerAnimation extends drawing.Animation {\n\n setup() {\n const options = this.options;\n const { margin, from, to, vertical } = options;\n const axis = vertical ? \"x1\" : \"y1\";\n\n if (options.mirror === vertical) {\n from[axis] -= margin; to[axis] -= margin;\n } else {\n from[axis] += margin; to[axis] += margin;\n }\n\n const fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n const toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n if (options.duration !== 0) {\n options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n }\n }\n\n step(pos) {\n const translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n const translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n this.element.transform(geometry.transform().translate(translateX, translateY));\n }\n}\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n easing: LINEAR,\n duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nconst Point = geo.Point;\nconst Path = drawing.Path;\n\nclass ArrowLinearPointer extends LinearPointer {\n constructor(scale, options) {\n super(scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n }\n\n pointerShape() {\n const { scale, options: { size } } = this;\n const halfSize = size / 2;\n const sign = (scale.options.mirror ? -1 : 1);\n let shape;\n\n if (scale.options.vertical) {\n shape = [\n new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n ];\n } else {\n shape = [\n new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n ];\n }\n\n return shape;\n }\n\n repaint() {\n const { scale, options } = this;\n const animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: this._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n }\n\n render() {\n const { scale, options } = this;\n const elementOptions = this.getElementOptions();\n const shape = this.pointerShape(options.value);\n\n options.animation.type = ARROW_POINTER;\n\n const elements = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n const slot = scale.getSlot(options.value);\n elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n this.elements = elements;\n\n return elements;\n }\n}\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nclass BarLinearPointerAnimation extends drawing.Animation {\n\n setup() {\n const options = this.options;\n const axis = this.axis = options.vertical ? Y : X;\n const to = this.to = options.newPoints[0][axis];\n const from = this.from = options.oldPoints[0][axis];\n\n if (options.duration !== 0) {\n options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n }\n\n this._set(from);\n }\n\n step(pos) {\n const value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n }\n\n _set(value) {\n const setter = \"set\" + this.axis.toUpperCase();\n const points = this.options.newPoints;\n\n points[0][setter](value);\n points[1][setter](value);\n }\n}\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n easing: LINEAR,\n speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nconst { Group, Path } = drawing;\n\nclass BarLinearPointer extends LinearPointer {\n constructor(scale, options) {\n super(scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n }\n\n pointerShape(value) {\n const { scale, options } = this;\n const { mirror, vertical } = scale.options;\n const dir = mirror === vertical ? -1 : 1;\n const size = options.size * dir;\n const minSlot = scale.getSlot(scale.options.min);\n const slot = scale.getSlot(value);\n const axis = vertical ? Y : X;\n const sizeAxis = vertical ? X : Y;\n const margin = this._margin() * dir;\n\n const p1 = new geo.Point();\n p1[axis] = minSlot[axis + \"1\"];\n p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n const p2 = new geo.Point();\n p2[axis] = slot[axis + \"1\"];\n p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n\n const p3 = p2.clone();\n const p4 = p1.clone();\n\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n\n return [ p1, p2, p3, p4 ];\n }\n\n repaint() {\n const { scale, options } = this;\n const shape = this.pointerShape(options.value);\n const pointerPath = this.pointerPath;\n const oldShape = this.pointerShape(options._oldValue);\n\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n const animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [ oldShape[1], oldShape[2] ],\n newPoints: [ shape[1], shape[2] ]\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n }\n\n render() {\n const group = new Group();\n const elementOptions = this.getElementOptions();\n\n if (this.options.track.visible) {\n group.append(this.renderTrack());\n }\n\n const pointer = this.pointerPath = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n\n group.append(pointer);\n\n this.elements = group;\n\n return group;\n }\n\n renderTrack() {\n const trackOptions = this.options.track;\n const border = trackOptions.border || {};\n const trackBox = this.trackBox.clone().pad(border.width || 0);\n\n return new Path.fromRect(trackBox.toRect(), {\n fill: {\n color: trackOptions.color,\n opacity: trackOptions.opacity\n },\n stroke: {\n color: border.width ? border.color || trackOptions.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n }\n}\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nconst DEFAULT_MIN_WIDTH = 60;\nconst DEFAULT_MIN_HEIGHT = 60;\n\nconst Group = drawing.Group;\n\nclass LinearGauge extends Gauge {\n\n reflow(bbox) {\n const pointers = this.pointers;\n const bboxX = bbox.origin.x;\n const bboxY = bbox.origin.y;\n\n const box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n this.scale.reflow(box);\n this._shrinkScaleWidth(box);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n\n this.bbox = this._getBox(box);\n this._alignElements();\n this._shrinkElements();\n this._buildVisual();\n this._draw();\n }\n\n _buildVisual() {\n const visuals = new Group();\n const scaleElements = this.scale.render();\n const pointers = this.pointers;\n\n visuals.append(this.gaugeArea);\n visuals.append(scaleElements);\n\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n\n this._visuals = visuals;\n }\n\n _createModel() {\n const options = this.options;\n const scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n let pointers = options.pointer;\n pointers = isArray(pointers) ? pointers : [ pointers ];\n\n for (let i = 0; i < pointers.length; i++) {\n const currentOptions = deepExtend({}, pointers[i], {\n animation: {\n transitions: options.transitions\n }\n });\n const pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n this.pointers.push(new pointerType(scale, currentOptions));\n }\n }\n\n _defaultSize() {\n const vertical = this.options.scale.vertical;\n\n return {\n width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n };\n }\n\n _getBox(box) {\n const { scale, pointers } = this;\n const boxCenter = box.center();\n let plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n for (let i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n\n let size;\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box(\n boxCenter.x - size, box.y1,\n boxCenter.x + size, box.y2\n );\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box(\n box.x1, boxCenter.y - size,\n box.x2, boxCenter.y + size\n );\n }\n\n return plotAreaBox;\n }\n\n _alignElements() {\n const { scale, pointers } = this;\n const scaleBox = scale.box;\n const box = pointers[0].box.clone().wrap(scale.box);\n const plotAreaBox = this.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n\n let diff;\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box(\n scaleBox.x1 + diff, plotAreaBox.y1,\n scaleBox.x2 + diff, plotAreaBox.y2\n ));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box(\n scaleBox.x1, scaleBox.y1 + diff,\n scaleBox.x2, scaleBox.y2 + diff\n ));\n }\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.bbox);\n }\n }\n\n _shrinkScaleWidth(bbox) {\n const { scale } = this;\n if (!scale.options.vertical) {\n const overflow = scale.contentBox().width() - bbox.width();\n if (overflow > 0) {\n scale.box.shrink(overflow, 0);\n scale.box.alignTo(bbox, 'center');\n scale.reflow(scale.box);\n }\n }\n }\n\n _shrinkElements() {\n const { scale, pointers } = this;\n const scaleBox = scale.box.clone();\n const pos = scale.options.vertical ? \"y\" : \"x\";\n const pointerBox = pointers[0].box;\n\n for (let i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n\n scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n scale.reflow(scaleBox);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.bbox);\n }\n }\n}\n\nsetDefaultOptions(LinearGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n },\n scale: {\n vertical: true\n }\n});\n\nexport default LinearGauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nconst GEO_ARC_ADJUST_ANGLE = 180;\n\nconst { Arc, Path, Group } = drawing;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n const ticks = new Group();\n const center = arc.center;\n const radius = arc.getRadiusX();\n\n if (tickOptions.visible) {\n for (let i = 0; i < tickAngles.length; i++) {\n const tickStart = arc.pointAt(tickAngles[i]);\n const tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n\n return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n return { from: from, to: to, color: color, opacity: opacity };\n}\n\nclass RadialScale extends NumericAxis {\n constructor(options, service) {\n super(0, 1, options, service);\n }\n\n initUserOptions(options) {\n const scaleOptions = deepExtend({}, this.options, options);\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n return scaleOptions;\n }\n\n initFields() {\n }\n\n render(center, radius) {\n const arc = this.renderArc(center, radius);\n\n this.bbox = arc.bbox();\n this.labelElements = this.renderLabels();\n this.ticks = this.renderTicks();\n this.ranges = this.renderRanges();\n }\n\n reflow(bbox) {\n const center = bbox.center();\n const radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n if (defined(this.bbox)) {\n this.bbox = this.arc.bbox();\n this.radius(this.arc.getRadiusX());\n this.repositionRanges();\n this.renderLabels();\n } else {\n return this.render(center, radius);\n }\n }\n\n slotAngle(value) {\n const { min, max, reverse, startAngle, endAngle } = this.options;\n const angle = endAngle - startAngle;\n let result;\n\n if (reverse) {\n result = endAngle - (value - min) / (max - min) * angle;\n } else {\n result = ((value - min) / (max - min) * angle) + startAngle;\n }\n\n return result + GEO_ARC_ADJUST_ANGLE;\n }\n\n hasRanges() {\n const ranges = this.options.ranges;\n\n return ranges && ranges.length;\n }\n\n ticksSize() {\n const { majorTicks, minorTicks } = this.options;\n let size = 0;\n if (majorTicks.visible) {\n size = majorTicks.size;\n }\n\n if (minorTicks.visible) {\n size = Math.max(minorTicks.size, size);\n }\n\n return size;\n }\n\n labelsCount() {\n let count = super.labelsCount();\n const options = this.options;\n const angle = options.endAngle - options.startAngle;\n\n if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n count -= 1;\n }\n\n return count;\n }\n\n renderLabels() {\n const options = this.options;\n const arc = this.arc.clone();\n let radius = arc.getRadiusX();\n const tickAngles = this.tickAngles(arc, options.majorUnit);\n const rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n const labelsGroup = new Group();\n\n let rangeDistance = radius * 0.05;\n if (defined(options.rangeDistance)) {\n rangeDistance = options.rangeDistance;\n } else {\n options.rangeDistance = rangeDistance;\n }\n\n const labelsOptions = options.labels;\n const isInside = labelsOptions.position === INSIDE;\n const hasLabelElements = defined(this.labelElements);\n\n if (isInside) {\n radius -= this.ticksSize();\n\n if (this.hasRanges() && !hasLabelElements) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n\n const labels = this.labels;\n const count = labels.length;\n const padding = getSpacing(labelsOptions.padding);\n const paddingWidth = (padding.left + padding.right) / 2;\n const paddingHeight = (padding.top + padding.bottom) / 2;\n\n for (let i = 0; i < count; i++) {\n const label = labels[i];\n const halfWidth = label.box.width() / 2;\n const halfHeight = label.box.height() / 2;\n const angle = tickAngles[i];\n const labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n const lp = arc.pointAt(angle);\n const cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n const cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n const labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n let labelElement;\n if (!hasLabelElements) {\n labelElement = buildLabelElement(label, options.labels);\n labelsGroup.append(labelElement);\n } else {\n labelElement = this.labelElements.children[i];\n const prevLabelPos = labelElement.bbox().origin;\n\n const labelTransform = labelElement.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n labelElement.transform(labelTransform);\n }\n\n this.bbox = geo.Rect.union(this.bbox, labelElement.bbox());\n }\n\n return labelsGroup;\n }\n\n repositionRanges() {\n const ranges = this.ranges.children;\n\n if (ranges.length > 0) {\n const { rangeDistance, rangeSize } = this.options;\n let rangeRadius = this.getRangeRadius();\n\n if (this.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n\n const newRadius = rangeRadius + (rangeSize / 2);\n\n for (let i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n\n this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n }\n }\n\n renderRanges() {\n const segments = this.rangeSegments();\n const segmentsCount = segments.length;\n const result = new Group();\n\n if (segmentsCount) {\n const { rangeSize, reverse, rangeDistance } = this.options;\n const rangeRadius = this.getRangeRadius();\n\n // move the ticks with a range distance and a range size\n this.radius(this.radius() - rangeSize - rangeDistance);\n\n for (let i = 0; i < segmentsCount; i++) {\n const segment = segments[i];\n const from = this.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n const to = this.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n if (to - from !== 0) {\n result.append(this.createRange(from, to, rangeRadius, segment));\n }\n }\n }\n\n return result;\n }\n\n createRange(startAngle, endAngle, rangeRadius, options) {\n const rangeSize = this.options.rangeSize;\n const rangeGeom = new geo.Arc(this.arc.center, {\n radiusX: rangeRadius + (rangeSize / 2),\n radiusY: rangeRadius + (rangeSize / 2),\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return new Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: options.color,\n opacity: options.opacity,\n lineCap: options.lineCap\n }\n });\n }\n\n rangeSegments() {\n const options = this.options;\n const ranges = options.ranges || [];\n const count = ranges.length;\n const segments = [];\n\n if (count) {\n const { min, max, rangePlaceholderColor: defaultColor } = options;\n segments.push(rangeSegment(min, max, defaultColor));\n\n for (let i = 0; i < count; i++) {\n const range = getRange(ranges[i], min, max);\n const segmentsCount = segments.length;\n\n for (let j = 0; j < segmentsCount; j++) {\n const segment = segments[j];\n\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n\n segment.to = range.from;\n\n break;\n }\n }\n }\n }\n\n return segments;\n }\n\n getRangeRadius() {\n const { arc, options } = this;\n const { rangeSize, rangeDistance, majorTicks: { size: majorTickSize } } = options;\n let radius;\n\n if (options.labels.position === OUTSIDE) {\n radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n radius = arc.getRadiusX() - rangeSize;\n }\n\n return radius;\n }\n\n renderArc(center, radius) {\n const options = this.options;\n\n const arc = this.arc = new geo.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n\n return arc;\n }\n\n renderTicks() {\n const { arc, options } = this;\n const tickArc = arc.clone();\n\n this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n const allTicks = new Group();\n allTicks.append(this.majorTicks);\n\n const majorTickSize = options.majorTicks.size;\n const minorTickSize = options.minorTicks.size;\n\n this._tickDifference = majorTickSize - minorTickSize;\n\n if (options.labels.position === OUTSIDE) {\n const radius = tickArc.getRadiusX();\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n .setRadiusY(radius - majorTickSize + minorTickSize);\n }\n\n this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n allTicks.append(this.minorTicks);\n\n return allTicks;\n }\n\n normalizeTickAngles(angles) {\n const options = this.options;\n const skip = options.majorUnit / options.minorUnit;\n\n for (let i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n\n return angles;\n }\n\n tickAngles(ring, stepValue) {\n const options = this.options;\n const reverse = options.reverse;\n const range = options.max - options.min;\n const angle = ring.endAngle - ring.startAngle;\n let tickCount = range / stepValue;\n let pos = ring.startAngle;\n let step = angle / tickCount;\n\n if (reverse) {\n pos += angle;\n step = -step;\n }\n\n if (angle >= 360 && (options.max % stepValue === 0)) {\n tickCount -= 1;\n }\n\n const positions = [];\n for (let i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n\n return positions;\n }\n\n radius(value) {\n if (value) {\n this.arc.setRadiusX(value).setRadiusY(value);\n this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n } else {\n return this.arc.getRadiusX();\n }\n }\n\n repositionTicks(ticks, tickAngles, minor) {\n const diff = minor ? (this._tickDifference || 0) : 0;\n let tickArc = this.arc;\n const radius = tickArc.getRadiusX();\n\n if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = this.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n\n for (let i = 0; i < ticks.length; i++) {\n const newPoint = tickArc.pointAt(tickAngles[i]);\n const segments = ticks[i].segments;\n const xDiff = newPoint.x - segments[0].anchor().x;\n const yDiff = newPoint.y - segments[0].anchor().y;\n\n ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n }\n }\n}\n\nsetDefaultOptions(RadialScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n startAngle: -30,\n endAngle: 210,\n\n labels: {\n position: INSIDE,\n padding: 2\n }\n});\n\nexport default RadialScale;\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nclass RadialPointerAnimation extends drawing.Animation {\n constructor(element, options) {\n super(element, options);\n\n const animationOptions = this.options;\n\n animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n }\n\n step(pos) {\n const options = this.options;\n const angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n this.element.transform(geometry.transform().rotate(angle, options.center));\n }\n}\n\nsetDefaultOptions(RadialPointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nconst CAP_SIZE = 0.05;\nconst { Circle, Group, Path } = drawing;\n\nclass RadialPointer extends Pointer {\n\n setAngle(angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n }\n\n repaint() {\n const { scale, options } = this;\n const oldAngle = scale.slotAngle(options._oldValue);\n const newAngle = scale.slotAngle(options.value);\n\n if (options.animation.transitions === false) {\n this.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n }\n\n render() {\n const { scale, options } = this;\n const elements = new Group();\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n elements.append(this._renderNeedle(), this._renderCap());\n\n this.elements = elements;\n this.setAngle(DEGREE);\n\n return elements;\n }\n\n reflow(arc) {\n const center = this.center = arc.center;\n const length = limitValue(this.options.length || 1, 0.1, 1.5);\n const radius = this.radius = arc.getRadiusX() * length;\n const capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n new geo.Point(center.x + capSize, center.y + capSize));\n }\n\n _renderNeedle() {\n const minorTickSize = this.scale.options.minorTicks.size;\n const center = this.center;\n const needleColor = this.options.color;\n\n const needlePath = new Path({\n fill: { color: needleColor },\n stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n });\n\n needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n .lineTo(center.x, center.y - (this.capSize / 2))\n .lineTo(center.x, center.y + (this.capSize / 2))\n .close();\n\n return needlePath;\n }\n\n _renderCap() {\n const options = this.options;\n const capColor = options.cap.color || options.color;\n const circle = new geo.Circle(this.center, this.capSize);\n\n const cap = new Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n\n return cap;\n }\n}\n\nsetDefaultOptions(RadialPointer, {\n cap: {\n size: CAP_SIZE\n },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nconst Group = drawing.Group;\n\nclass RadialGauge extends Gauge {\n\n reflow(bbox) {\n const pointers = this.pointers;\n this.scale.reflow(bbox);\n this._initialPlotArea = this.scale.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.scale.arc);\n this._initialPlotArea = geo.Rect.union(this._initialPlotArea, pointers[i].bbox);\n }\n\n this.fitScale(bbox);\n this.alignScale(bbox);\n this._buildVisual(this.gaugeArea, pointers, this.scale);\n this._draw();\n }\n\n _buildVisual(gaugeArea, pointers, scale) {\n const visuals = this._visuals = new Group();\n\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n this._buildPointers(pointers);\n visuals.append(scale.labelElements);\n }\n\n _buildPointers(pointers) {\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n current.render();\n this._visuals.append(current.elements);\n\n current.value(current.options.value);\n }\n }\n\n fitScale(bbox) {\n const arc = this.scale.arc;\n const plotAreaBox = this._initialPlotArea;\n const step = Math.abs(this.getDiff(plotAreaBox, bbox));\n let min = round(step, COORD_PRECISION);\n let max = round(-step, COORD_PRECISION);\n let minDiff, midDiff, maxDiff, mid, oldDiff;\n let staleFlag = 0;\n let i = 0;\n\n while (i++ < 100) {\n staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n if (staleFlag > 5) {\n break;\n }\n\n if (min !== mid) {\n minDiff = this.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n\n if (max !== mid) {\n maxDiff = this.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n }\n\n midDiff = this.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n\n oldDiff = maxDiff;\n\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n }\n\n getPlotBox(step, bbox, arc) {\n const scale = this.scale;\n const pointers = this.pointers;\n const radius = arc.getRadiusX();\n const scaleArc = arc.clone();\n\n scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n scale.arc = scaleArc;\n scale.reflow(bbox);\n this.plotBbox = scale.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scaleArc);\n this.plotBbox = geo.Rect.union(this.plotBbox, pointers[i].bbox);\n }\n\n return this.getDiff(this.plotBbox, bbox);\n }\n\n getDiff(plotBox, box) {\n return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n }\n\n alignScale(bbox) {\n const plotBoxCenter = this.plotBbox.center();\n const boxCenter = bbox.center();\n const paddingX = plotBoxCenter.x - boxCenter.x;\n const paddingY = plotBoxCenter.y - boxCenter.y;\n const { scale, pointers } = this;\n\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n\n scale.reflow(bbox);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n this.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n }\n }\n\n _createModel() {\n const options = this.options;\n const pointers = options.pointer;\n const scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n const pointersArr = isArray(pointers) ? pointers : [ pointers ];\n for (let i = 0; i < pointersArr.length; i++) {\n const current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers.push(current);\n }\n }\n}\n\nsetDefaultOptions(RadialGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n }\n});\n\nexport default RadialGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nclass ArcScale extends RadialScale {\n\n rangeSegments() {\n const { min, max, rangePlaceholderColor, rangeLineCap } = this.options;\n\n return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n }\n\n hasRanges() {\n return true;\n }\n\n placeholderRangeAngle(angle) {\n const geometry = this.ranges.children[0].geometry();\n\n if (this.options.reverse) {\n geometry.setEndAngle(angle);\n } else {\n geometry.setStartAngle(angle);\n }\n }\n\n addRange(from, to, options) {\n const reverse = this.options.reverse;\n\n const startAngle = this.slotAngle(reverse ? to : from);\n const endAngle = this.slotAngle(reverse ? from : to);\n\n const range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n this.ranges.append(range);\n\n return range;\n }\n}\n\nsetDefaultOptions(ArcScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n visible: false\n },\n\n minorTicks: {\n visible: false\n },\n\n labels: {\n visible: false\n },\n\n startAngle: 0,\n endAngle: 180,\n rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nconst MAX_DURATION = 800;\n\nclass RangePointerAnimation extends drawing.Animation {\n constructor(element, options) {\n super(element, options);\n\n const animationOptions = this.options;\n const duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n const startColor = element.elements.options.get(\"stroke.color\");\n const color = element.currentColor();\n if (startColor !== color) {\n this.startColor = new Color(startColor);\n this.color = new Color(color);\n }\n }\n\n step(pos) {\n const { options, startColor, color } = this;\n const angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n this.element.angle(angle);\n\n if (color) {\n const r = round(interpolateValue(startColor.r, color.r, pos));\n const g = round(interpolateValue(startColor.g, color.g, pos));\n const b = round(interpolateValue(startColor.b, color.b, pos));\n\n this.element.stroke(new Color(r, g, b).toHex());\n }\n }\n}\n\nsetDefaultOptions(RangePointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nclass RangePointer extends Pointer {\n\n repaint() {\n const { scale, options } = this;\n const oldAngle = scale.slotAngle(options._oldValue);\n const newAngle = scale.slotAngle(options.value);\n\n if (this.animation) {\n this.animation.abort();\n }\n\n if (options.animation.transitions === false) {\n this.angle(newAngle);\n this.stroke(this.currentColor());\n } else {\n this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n }));\n\n this.animation.play();\n }\n }\n\n angle(value) {\n const geometry = this.elements.geometry();\n if (this.scale.options.reverse) {\n geometry.setStartAngle(value);\n } else {\n geometry.setEndAngle(value);\n }\n this.scale.placeholderRangeAngle(value);\n }\n\n stroke(value) {\n this.elements.stroke(value);\n }\n\n render() {\n if (this.elements) {\n return;\n }\n\n const { scale, options } = this;\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n this.elements = scale.addRange(scale.options.min, this.options.value, {\n color: this.currentColor(),\n opacity: options.opacity,\n lineCap: scale.options.rangeLineCap\n });\n }\n\n currentColor() {\n const { min, max } = this.scale.options;\n const { colors, color, value } = this.options;\n const currentValue = isNumber(value) ? value : min;\n\n if (colors) {\n for (let idx = 0; idx < colors.length; idx++) {\n const { color: rangeColor, from = min, to = max } = colors[idx];\n\n if (from <= currentValue && currentValue <= to) {\n return rangeColor;\n }\n }\n }\n\n return color;\n }\n\n reflow() {\n this.render();\n\n this.bbox = this.elements.bbox();\n }\n}\n\nsetDefaultOptions(RangePointer, {\n animation: {\n type: RADIAL_RANGE_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RangePointer;\n","import RadialGauge from '../radial/radial-gauge';\nimport ArcScale from './arc-scale';\nimport RangePointer from './range-pointer';\n\nimport { deepExtend } from '../../common';\n\n\nclass ArcGauge extends RadialGauge {\n\n _initTheme(theme) {\n super._initTheme(theme);\n\n this.options.color = this.options.color || (this.theme.pointer || {}).color;\n }\n\n _createModel() {\n const options = this.options;\n const scale = this.scale = new ArcScale(options.scale, this.contextService);\n\n const pointer = new RangePointer(scale, deepExtend({}, {\n colors: options.colors,\n color: options.color,\n value: options.value,\n opacity: options.opacity,\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers = [ pointer ];\n }\n\n _buildPointers(pointers) {\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n current.render();\n\n current.value(current.options.value);\n }\n }\n\n _setValueOptions(value) {\n this.options.value = value;\n }\n\n currentColor() {\n const pointer = this.pointers[0];\n if (pointer) {\n return pointer.currentColor();\n }\n }\n\n centerLabelPosition(width, height) {\n const size = this.getSize();\n const center = this.scale.arc.center;\n\n let left = center.x - width / 2;\n let top = center.y - height / 2;\n\n if (width < size.width) {\n const right = left + width;\n\n left = Math.max(left, 0);\n\n if (right > size.width) {\n left -= right - size.width;\n }\n }\n\n if (height < size.height) {\n const bbox = this.scale.bbox;\n const yLimit = bbox.bottomRight().y;\n const bottom = top + height;\n\n top = Math.max(top, bbox.origin.y);\n\n if (bottom > yLimit) {\n top -= bottom - yLimit;\n }\n }\n\n return {\n left: left,\n top: top\n };\n }\n}\n\nexport default ArcGauge;","import ArcGauge from '../arc/arc-gauge';\n\nconst defaultStartAngle = 90;\n\nclass CircularGauge extends ArcGauge {\n _createModel() {\n const scaleOptions = this.options.scale;\n if (typeof scaleOptions.startAngle !== 'number') {\n scaleOptions.startAngle = defaultStartAngle;\n }\n\n scaleOptions.endAngle = scaleOptions.startAngle + 360;\n\n super._createModel();\n }\n}\n\nexport default CircularGauge;\n","import {\n Class,\n defined,\n setDefaultOptions\n} from '../../common';\n\nconst DEFAULT_QUIET_ZONE_LENGTH = 10;\n\nexport class Encoding extends Class {\n constructor(options) {\n super();\n this.setOptions(options);\n this.initProperties();\n }\n\n initProperties() { }\n\n setOptions(options) {\n this.options = Object.assign({}, this.options, options);\n this.quietZoneLength = this.options.addQuietZone ? 2 * this.options.quietZoneLength : 0;\n }\n\n encode(value, width, height) {\n const convertedValue = defined(value) ? String(value) : value;\n\n this.initValue(convertedValue, width, height);\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n this.addData();\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n return {\n baseUnit: this.baseUnit,\n pattern: this.pattern\n };\n }\n\n initValue() { }\n\n addQuietZone() {\n this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIET_ZONE_LENGTH);\n }\n\n addData() { }\n\n invalidCharacterError(character) {\n throw new Error(`Character \"${character}\" is not valid for symbology ${this.name}.`);\n }\n}\n\nsetDefaultOptions(Encoding, {\n quietZoneLength: DEFAULT_QUIET_ZONE_LENGTH,\n addQuietZone: true,\n addCheckSum: true\n});\n","import { Encoding } from './encoding';\nimport { setDefaultOptions } from '../../common';\n\nconst extend = Object.assign;\n\nexport class Code11 extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 11\",\n characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n cCheckSumTotal: 10,\n kCheckSumTotal: 9,\n kCheckSumMinLength: 10,\n checkSumMod: 11,\n DASH_VALUE: 10,\n DASH: \"-\",\n START: \"112211\",\n STOP: \"11221\"\n });\n }\n\n initValue(value, width) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.totalUnits = 0;\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n }\n\n setBaseUnit() {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n }\n\n addCheckSum() {\n const value = this.value;\n let length = value.length;\n const cValue = this.getWeightedSum(value, length, this.cCheckSumTotal) % this.checkSumMod;\n\n this.checksum = String(cValue);\n this.addPattern(this.characterMap[cValue]);\n\n length++;\n\n if (length >= this.kCheckSumMinLength) {\n let kValue = (cValue + this.getWeightedSum(value, length, this.kCheckSumTotal)) % this.checkSumMod;\n this.checksum += kValue;\n this.addPattern(this.characterMap[kValue]);\n }\n }\n\n getWeightedSum(value, length, total) {\n let weightedSum = 0;\n\n for (let i = 0; i < value.length; i++) {\n weightedSum += this.weightedValue(this.getValue(value.charAt(i)), length, i, total);\n }\n\n return weightedSum;\n }\n\n weightedValue(value, length, index, total) {\n const weight = (length - index) % total || total;\n return weight * value;\n }\n\n getValue(character) {\n if (!isNaN(character)) {\n return parseInt(character, 10);\n } else if (character !== this.DASH) {\n this.invalidCharacterError(character);\n }\n\n return this.DASH_VALUE;\n }\n\n addCharacter(character) {\n const value = this.getValue(character);\n const pattern = this.characterMap[value];\n\n this.addPattern(pattern);\n }\n\n addPattern(pattern) {\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n }\n}\n\nsetDefaultOptions(Code11, {\n addCheckSum: true\n});\n","import { setDefaultOptions } from '../../common';\nimport { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class Code39Base extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n minBaseUnitLength: 0.7\n });\n }\n\n addData() {\n const value = this.value;\n\n this.addStart();\n\n for (let idx = 0; idx < value.length; idx++) {\n this.addCharacter(value.charAt(idx));\n }\n\n if (this.options.addCheckSum) {\n this.pushCheckSum();\n }\n\n this.addStop();\n this.prepareValues();\n }\n\n addCharacter(character) {\n const characterData = this.characterMap[character];\n\n if (!characterData) {\n this.invalidCharacterError(character);\n }\n\n this.addBase(characterData);\n }\n\n addBase() { }\n}\n\nexport class Code39 extends Code39Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 39\",\n checkSumMod: 43,\n minRatio: 2.5,\n maxRatio: 3,\n gapWidth: 1,\n splitCharacter: \"|\",\n patternMappings: {\n \"b\": \"1|\",\n \"w\": \"1|\",\n \"B\": \"ratio|\",\n \"W\": \"ratio|\"\n },\n characterMap: {\n \"0\": { \"pattern\": \"bwbWBwBwb\", \"value\": 0 },\n \"1\": { \"pattern\": \"BwbWbwbwB\", \"value\": 1 },\n \"2\": { \"pattern\": \"bwBWbwbwB\", \"value\": 2 },\n \"3\": { \"pattern\": \"BwBWbwbwb\", \"value\": 3 },\n \"4\": { \"pattern\": \"bwbWBwbwB\", \"value\": 4 },\n \"5\": { \"pattern\": \"BwbWBwbwb\", \"value\": 5 },\n \"6\": { \"pattern\": \"bwBWBwbwb\", \"value\": 6 },\n \"7\": { \"pattern\": \"bwbWbwBwB\", \"value\": 7 },\n \"8\": { \"pattern\": \"BwbWbwBwb\", \"value\": 8 },\n \"9\": { \"pattern\": \"bwBWbwBwb\", \"value\": 9 },\n \"A\": { \"pattern\": \"BwbwbWbwB\", \"value\": 10 },\n \"B\": { \"pattern\": \"bwBwbWbwB\", \"value\": 11 },\n \"C\": { \"pattern\": \"BwBwbWbwb\", \"value\": 12 },\n \"D\": { \"pattern\": \"bwbwBWbwB\", \"value\": 13 },\n \"E\": { \"pattern\": \"BwbwBWbwb\", \"value\": 14 },\n \"F\": { \"pattern\": \"bwBwBWbwb\", \"value\": 15 },\n \"G\": { \"pattern\": \"bwbwbWBwB\", \"value\": 16 },\n \"H\": { \"pattern\": \"BwbwbWBwb\", \"value\": 17 },\n \"I\": { \"pattern\": \"bwBwbWBwb\", \"value\": 18 },\n \"J\": { \"pattern\": \"bwbwBWBwb\", \"value\": 19 },\n \"K\": { \"pattern\": \"BwbwbwbWB\", \"value\": 20 },\n \"L\": { \"pattern\": \"bwBwbwbWB\", \"value\": 21 },\n \"M\": { \"pattern\": \"BwBwbwbWb\", \"value\": 22 },\n \"N\": { \"pattern\": \"bwbwBwbWB\", \"value\": 23 },\n \"O\": { \"pattern\": \"BwbwBwbWb\", \"value\": 24 },\n \"P\": { \"pattern\": \"bwBwBwbWb\", \"value\": 25 },\n \"Q\": { \"pattern\": \"bwbwbwBWB\", \"value\": 26 },\n \"R\": { \"pattern\": \"BwbwbwBWb\", \"value\": 27 },\n \"S\": { \"pattern\": \"bwBwbwBWb\", \"value\": 28 },\n \"T\": { \"pattern\": \"bwbwBwBWb\", \"value\": 29 },\n \"U\": { \"pattern\": \"BWbwbwbwB\", \"value\": 30 },\n \"V\": { \"pattern\": \"bWBwbwbwB\", \"value\": 31 },\n \"W\": { \"pattern\": \"BWBwbwbwb\", \"value\": 32 },\n \"X\": { \"pattern\": \"bWbwBwbwB\", \"value\": 33 },\n \"Y\": { \"pattern\": \"BWbwBwbwb\", \"value\": 34 },\n \"Z\": { \"pattern\": \"bWBwBwbwb\", \"value\": 35 },\n \"-\": { \"pattern\": \"bWbwbwBwB\", \"value\": 36 },\n \".\": { \"pattern\": \"BWbwbwBwb\", \"value\": 37 },\n \" \": { \"pattern\": \"bWBwbwBwb\", \"value\": 38 },\n \"$\": { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n \"/\": { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n \"+\": { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n \"%\": { \"pattern\": \"bwbWbWbWb\", \"value\": 42 },\n START: { pattern: \"bWbwBwBwb\" }\n }\n });\n }\n\n initValue(value, width, height) {\n this.width = width;\n this.height = height;\n this.value = value;\n this.dataLength = value.length;\n this.pattern = [];\n this.patternString = \"\";\n }\n\n prepareValues() {\n const minBaseUnit = this.minBaseUnitLength;\n const minRatio = this.minRatio;\n const minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n let baseUnit;\n let ratio = this.maxRatio;\n\n if (this.height < minHeight) {\n throw new Error(`Insufficient height for Code39 encoding: the current height is ${this.height}px and the minimum height is ${minHeight}px.`);\n }\n\n baseUnit = this.getBaseUnit(ratio);\n\n while (baseUnit < minBaseUnit && ratio > minRatio) {\n ratio = parseFloat((ratio - 0.1).toFixed(1));\n baseUnit = this.getBaseUnit(ratio);\n }\n\n if (baseUnit < minBaseUnit) {\n let minWidth = Math.ceil(this.getBaseWidth(minRatio) * minBaseUnit);\n throw new Error(`Insufficient width for Code39 encoding: the current width is ${this.width}px and the minimum width for value \"${this.value}\" is ${minWidth}px.`);\n }\n\n this.ratio = ratio;\n this.baseUnit = baseUnit;\n this.patternString = this.patternString.substring(0, this.patternString.length - 1);\n this.pattern = this.pattern.concat(this.patternString.replace(/ratio/g, ratio).split(this.splitCharacter));\n }\n\n getBaseUnit(ratio) {\n return this.width / this.getBaseWidth(ratio);\n }\n\n getBaseWidth(ratio) {\n const characterLength = 3 * (ratio + 2);\n return this.quietZoneLength + characterLength * (this.dataLength + 2) + this.gapWidth * (this.dataLength + 1);\n }\n\n addStart() {\n this.addPattern(this.characterMap.START.pattern);\n this.addCharacterGap();\n }\n\n addBase(character) {\n this.addPattern(character.pattern);\n this.addCharacterGap();\n }\n\n addStop() {\n this.addPattern(this.characterMap.START.pattern);\n }\n\n addPattern(pattern) {\n for (let i = 0; i < pattern.length; i++) {\n this.patternString += this.patternMappings[pattern.charAt(i)];\n }\n }\n\n addCharacterGap() {\n this.patternString += this.gapWidth + this.splitCharacter;\n }\n}\n\nsetDefaultOptions(Code39, {\n addCheckSum: false\n});\n","import { Code39 } from './code39';\nimport deepExtend from '../../common/deep-extend';\n\nexport const Code39ExtendedBase = {\n addCharacter(character) {\n if (this.characterMap[character]) {\n this.addBase(this.characterMap[character]);\n } else if (character.charCodeAt(0) > 127) {\n this.invalidCharacterError(character);\n } else {\n this.addExtended(character.charCodeAt(0));\n }\n },\n\n addExtended(code) {\n let patterns;\n\n for (let i = 0; i < this.extendedMappings.length; i++) {\n patterns = this.extendedMappings[i].call(this, code);\n\n if (patterns) {\n for (let patternIndex = 0; patternIndex < patterns.length; patternIndex++) {\n const pattern = patterns[patternIndex];\n this.addBase(pattern);\n }\n\n this.dataLength += patterns.length - 1;\n return;\n }\n }\n },\n\n extendedMappings: [\n function(code) {\n if (97 <= code && code <= 122) {\n return [this.characterMap[this.shiftCharacters[0]], this.characterMap[String.fromCharCode(code - 32)]];\n }\n },\n function(code) {\n if (33 <= code && code <= 58) {\n return [this.characterMap[this.shiftCharacters[1]], this.characterMap[String.fromCharCode(code + 32)]];\n }\n },\n function(code) {\n if (1 <= code && code <= 26) {\n return [this.characterMap[this.shiftCharacters[2]], this.characterMap[String.fromCharCode(code + 64)]];\n }\n },\n function(code) {\n let result;\n let dataCharacter;\n\n if (!this.specialAsciiCodes[code]) {\n dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n result = [this.characterMap[this.shiftCharacters[3]], this.characterMap[String.fromCharCode(dataCharacter)]];\n } else {\n result = [];\n\n for (let i = 0; i < this.specialAsciiCodes[code].length; i++) {\n result.push(this.characterMap[this.shiftCharacters[3]]);\n result.push(this.characterMap[this.specialAsciiCodes[code][i]]);\n }\n }\n\n return result;\n }\n ],\n specialAsciiCodes: {\n \"0\": [\"U\"],\n \"64\": [\"V\"],\n \"96\": [\"W\"],\n \"127\": [\"T\", \"X\", \"Y\", \"Z\"]\n },\n shiftValuesAsciiCodes: {\n \"39\": 36,\n \"40\": 47,\n \"41\": 43,\n \"42\": 37\n },\n characterMap: {\n \"+\": false,\n \"/\": false,\n \"$\": false,\n \"%\": false\n },\n shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n};\n\nexport class Code39Extended extends Code39 {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 39 extended\",\n characterMap: {\n SHIFT0: { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n SHIFT1: { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n SHIFT2: { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n SHIFT3: { \"pattern\": \"bwbWbWbWb\", \"value\": 42 }\n }\n });\n }\n}\n","import { Code39Base } from './code39';\n\nconst extend = Object.assign;\n\nexport class Code93 extends Code39Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 93\",\n cCheckSumTotal: 20,\n kCheckSumTotal: 15,\n checkSumMod: 47,\n characterMap: {\n \"0\": { \"pattern\": \"131112\", \"value\": 0 },\n \"1\": { \"pattern\": \"111213\", \"value\": 1 },\n \"2\": { \"pattern\": \"111312\", \"value\": 2 },\n \"3\": { \"pattern\": \"111411\", \"value\": 3 },\n \"4\": { \"pattern\": \"121113\", \"value\": 4 },\n \"5\": { \"pattern\": \"121212\", \"value\": 5 },\n \"6\": { \"pattern\": \"121311\", \"value\": 6 },\n \"7\": { \"pattern\": \"111114\", \"value\": 7 },\n \"8\": { \"pattern\": \"131211\", \"value\": 8 },\n \"9\": { \"pattern\": \"141111\", \"value\": 9 },\n \"A\": { \"pattern\": \"211113\", \"value\": 10 },\n \"B\": { \"pattern\": \"211212\", \"value\": 11 },\n \"C\": { \"pattern\": \"211311\", \"value\": 12 },\n \"D\": { \"pattern\": \"221112\", \"value\": 13 },\n \"E\": { \"pattern\": \"221211\", \"value\": 14 },\n \"F\": { \"pattern\": \"231111\", \"value\": 15 },\n \"G\": { \"pattern\": \"112113\", \"value\": 16 },\n \"H\": { \"pattern\": \"112212\", \"value\": 17 },\n \"I\": { \"pattern\": \"112311\", \"value\": 18 },\n \"J\": { \"pattern\": \"122112\", \"value\": 19 },\n \"K\": { \"pattern\": \"132111\", \"value\": 20 },\n \"L\": { \"pattern\": \"111123\", \"value\": 21 },\n \"M\": { \"pattern\": \"111222\", \"value\": 22 },\n \"N\": { \"pattern\": \"111321\", \"value\": 23 },\n \"O\": { \"pattern\": \"121122\", \"value\": 24 },\n \"P\": { \"pattern\": \"131121\", \"value\": 25 },\n \"Q\": { \"pattern\": \"212112\", \"value\": 26 },\n \"R\": { \"pattern\": \"212211\", \"value\": 27 },\n \"S\": { \"pattern\": \"211122\", \"value\": 28 },\n \"T\": { \"pattern\": \"211221\", \"value\": 29 },\n \"U\": { \"pattern\": \"221121\", \"value\": 30 },\n \"V\": { \"pattern\": \"222111\", \"value\": 31 },\n \"W\": { \"pattern\": \"112122\", \"value\": 32 },\n \"X\": { \"pattern\": \"112221\", \"value\": 33 },\n \"Y\": { \"pattern\": \"122121\", \"value\": 34 },\n \"Z\": { \"pattern\": \"123111\", \"value\": 35 },\n \"-\": { \"pattern\": \"121131\", \"value\": 36 },\n \".\": { \"pattern\": \"311112\", \"value\": 37 },\n \" \": { \"pattern\": \"311211\", \"value\": 38 },\n \"$\": { \"pattern\": \"321111\", \"value\": 39 },\n \"/\": { \"pattern\": \"112131\", \"value\": 40 },\n \"+\": { \"pattern\": \"113121\", \"value\": 41 },\n \"%\": { \"pattern\": \"211131\", \"value\": 42 },\n SHIFT0: { \"pattern\": \"122211\", \"value\": 46 },\n SHIFT1: { \"pattern\": \"311121\", \"value\": 45 },\n SHIFT2: { \"pattern\": \"121221\", \"value\": 43 },\n SHIFT3: { \"pattern\": \"312111\", \"value\": 44 },\n START: { \"pattern\": \"111141\" },\n TERMINATION_BAR: \"1\"\n }\n });\n }\n\n initValue(value, width, height) {\n this.value = value;\n this.width = width;\n this.height = height;\n this.pattern = [];\n this.values = [];\n this.dataLength = value.length;\n }\n\n prepareValues() {\n let minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n\n if (this.height < minHeight) {\n throw new Error(`Insufficient height for Code93 encoding: the current height is ${this.height}px, the minimum required height is ${minHeight}px.`);\n }\n\n this.setBaseUnit();\n\n if (this.baseUnit < this.minBaseUnitLength) {\n const minWidth = Math.ceil(this.minBaseUnitLength * (this.width / this.baseUnit));\n throw new Error(`Insufficient width for Code93 encoding: the current width is ${this.width}px and the minimum required width for value \"${this.value}\" is ${minWidth}px.`);\n }\n }\n\n setBaseUnit() {\n const checkSumLength = 2;\n\n this.baseUnit = this.width / (9 * (this.dataLength + 2 + checkSumLength) + this.quietZoneLength + 1);\n }\n\n addStart() {\n let pattern = this.characterMap.START.pattern;\n this.addPattern(pattern);\n }\n\n addStop() {\n this.addStart();\n this.pattern.push(this.characterMap.TERMINATION_BAR);\n }\n\n addBase(charData) {\n this.addPattern(charData.pattern);\n this.values.push(charData.value);\n }\n\n pushCheckSum() {\n const checkValues = this._getCheckValues();\n let charData;\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n charData = this.characterMap[this._findCharacterByValue(checkValues[i])];\n this.addPattern(charData.pattern);\n }\n }\n\n _getCheckValues() {\n const values = this.values;\n const length = values.length;\n let wightedSum = 0;\n let cValue;\n let kValue;\n let idx;\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this.weightedValue(values[idx], length - idx, this.cCheckSumTotal);\n }\n\n cValue = wightedSum % this.checkSumMod;\n\n wightedSum = this.weightedValue(cValue, 1, this.kCheckSumTotal);\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this.weightedValue(values[idx], length - idx + 1, this.kCheckSumTotal);\n }\n\n kValue = wightedSum % this.checkSumMod;\n return [cValue, kValue];\n }\n\n _findCharacterByValue(value) {\n for (let character in this.characterMap) {\n if (this.characterMap[character].value === value) {\n return character;\n }\n }\n }\n\n weightedValue(value, index, total) {\n return (index % total || total) * value;\n }\n\n addPattern(pattern) {\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n }\n }\n}\n","import { Encoding } from './encoding';\nimport inArray from '../../common/in-array';\n\nconst numberRegex = /^\\d+$/;\nconst extend = Object.assign;\n\nexport class Postnet extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Postnet\",\n START: \"2\",\n VALID_CODE_LENGTHS: [5, 9, 11],\n DIGIT_SEPARATOR: \"-\",\n characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n });\n }\n\n initValue(value, width, height) {\n this.height = height;\n this.width = width;\n this.baseHeight = height / 2;\n this.value = value.replace(new RegExp(this.DIGIT_SEPARATOR, \"g\"), \"\");\n this.pattern = [];\n this.validate(this.value);\n this.checkSum = 0;\n this.setBaseUnit();\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.START);\n this.pattern.pop();\n }\n\n addCharacter(character) {\n const pattern = this.characterMap[character];\n this.checkSum += parseInt(character, 10);\n this.addPattern(pattern);\n }\n\n addCheckSum() {\n this.checksum = (10 - (this.checkSum % 10)) % 10;\n this.addCharacter(this.checksum);\n }\n\n setBaseUnit() {\n const startStopLength = 3;\n\n this.baseUnit = this.width / ((this.value.length + 1) * 10 + startStopLength + this.quietZoneLength);\n }\n\n validate(value) {\n if (!numberRegex.test(value)) {\n this.invalidCharacterError(value.match(/[^0-9]/)[0]);\n }\n\n if (!inArray(value.length, this.VALID_CODE_LENGTHS)) {\n throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + this.VALID_CODE_LENGTHS.join(\",\") + \".\");\n }\n }\n\n addPattern(pattern) {\n let y1;\n\n for (let i = 0; i < pattern.length; i++) {\n y1 = this.height - this.baseHeight * pattern.charAt(i);\n this.pattern.push({ width: 1, y1: y1, y2: this.height });\n this.pattern.push(1);\n }\n }\n}\n","import { Class } from '../../common';\nimport { Encoding } from './encoding';\nimport deepExtend from '../../common/deep-extend';\nimport inArray from '../../common/in-array';\n\nconst numberRegex = /^\\d+$/;\nconst alphanumericRegex = /^[a-z0-9]+$/i;\nconst extend = Object.assign;\n\nexport class State128 extends Class {\n constructor(encoding) {\n super();\n this.encoding = encoding;\n this.initProperties();\n }\n\n initProperties() { }\n\n addStart() { }\n\n is() { }\n\n isCode() {\n return false;\n }\n\n move() { }\n\n pushState() { }\n}\n\nexport class State128AB extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this.states = states;\n this._initMoves(states);\n }\n\n initProperties() {\n super.initProperties();\n\n deepExtend(this, {\n FNC4: \"FNC4\",\n SHIFT: 98\n });\n }\n\n addStart() {\n this.encoding.addPattern(this.START);\n }\n\n is(value, index) {\n let code = value.charCodeAt(index);\n return this.isCode(code);\n }\n\n move(encodingState) {\n let idx = 0;\n\n while (!this._moves[idx].call(this, encodingState) && idx < this._moves.length) {\n idx++;\n }\n }\n\n pushState(encodingState) {\n let states = this.states,\n value = encodingState.value,\n maxLength = value.length,\n code;\n\n if (inArray(\"C\", states)) {\n let numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n\n if (numberMatch) {\n maxLength = value.indexOf(numberMatch[0], encodingState.index);\n }\n }\n\n while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n this.isCode(code) &&\n encodingState.index < maxLength) {\n this.encoding.addPattern(this.getValue(code));\n encodingState.index++;\n }\n }\n\n _initMoves(states) {\n this._moves = [];\n\n if (inArray(this.FNC4, states)) {\n this._moves.push(this._moveFNC);\n }\n\n if (inArray(this.shiftKey, states)) {\n this._moves.push(this._shiftState);\n }\n\n this._moves.push(this._moveState);\n }\n\n _moveFNC(encodingState) {\n if (encodingState.fnc) {\n encodingState.fnc = false;\n return encodingState.previousState === this.key;\n }\n }\n\n _shiftState(encodingState) {\n if (encodingState.previousState === this.shiftKey &&\n (encodingState.index + 1 >= encodingState.value.length ||\n this.encoding[this.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n this.encoding.addPattern(this.SHIFT);\n encodingState.shifted = true;\n return true;\n }\n }\n\n _moveState() {\n this.encoding.addPattern(this.MOVE);\n return true;\n }\n}\n\nconst states128 = {};\n\nstates128.A = class State128A extends State128AB {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"A\",\n shiftKey: \"B\",\n MOVE: 101,\n START: 103\n });\n }\n\n isCode(code) {\n return 0 <= code && code < 96;\n }\n\n getValue(code) {\n if (code < 32) {\n return code + 64;\n }\n\n return code - 32;\n }\n};\n\nstates128.B = class State128B extends State128AB {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"B\",\n shiftKey: \"A\",\n MOVE: 100,\n START: 104\n });\n }\n\n isCode(code) {\n return 32 <= code && code < 128;\n }\n\n getValue(code) {\n return code - 32;\n }\n};\n\nstates128.C = class State128C extends State128 {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"C\",\n MOVE: 99,\n START: 105\n });\n }\n\n addStart() {\n this.encoding.addPattern(this.START);\n }\n\n is(value, index) {\n let next4 = getSubstring(value, index, 4);\n return (index + 4 <= value.length || value.length === 2) && numberRegex.test(next4);\n }\n\n move() {\n this.encoding.addPattern(this.MOVE);\n }\n\n pushState(encodingState) {\n let code;\n\n while ((code = getSubstring(encodingState.value, encodingState.index, 2)) &&\n numberRegex.test(code) && code.length === 2) {\n this.encoding.addPattern(parseInt(code, 10));\n encodingState.index += 2;\n }\n }\n\n getValue(code) {\n return code;\n }\n};\n\nstates128.FNC4 = class State128FNC4 extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this._initSubStates(states);\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"FNC4\",\n dependentStates: [\"A\", \"B\"]\n });\n }\n\n addStart(encodingState) {\n let code = encodingState.value.charCodeAt(0) - 128,\n subState = this._getSubState(code);\n\n this.encoding[subState].addStart();\n }\n\n is(value, index) {\n let code = value.charCodeAt(index);\n return this.isCode(code);\n }\n\n isCode(code) {\n return 128 <= code && code < 256;\n }\n\n pushState(encodingState) {\n let subState = this._initSubState(encodingState),\n encoding = this.encoding,\n length = subState.value.length;\n let code;\n\n encodingState.index += length;\n\n if (length < 3) {\n for (; subState.index < length; subState.index++) {\n code = subState.value.charCodeAt(subState.index);\n subState.state = this._getSubState(code);\n\n if (subState.previousState !== subState.state) {\n subState.previousState = subState.state;\n encoding[subState.state].move(subState);\n }\n\n encoding.addPattern(encoding[subState.state].MOVE);\n encoding.addPattern(encoding[subState.state].getValue(code));\n }\n } else {\n if (subState.state !== subState.previousState) {\n encoding[subState.state].move(subState);\n }\n\n this._pushStart(subState);\n encoding.pushData(subState, this.subStates);\n\n if (encodingState.index < encodingState.value.length) {\n this._pushStart(subState);\n }\n }\n\n encodingState.fnc = true;\n encodingState.state = subState.state;\n }\n\n _pushStart(subState) {\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n }\n\n _initSubState(encodingState) {\n const subState = {\n value: this._getAll(encodingState.value, encodingState.index),\n index: 0\n };\n\n subState.state = this._getSubState(subState.value.charCodeAt(0));\n subState.previousState = encodingState.previousState === this.key ?\n subState.state :\n encodingState.previousState;\n\n return subState;\n }\n\n _initSubStates(states) {\n this.subStates = [];\n\n for (let i = 0; i < states.length; i++) {\n if (inArray(states[i], this.dependentStates)) {\n this.subStates.push(states[i]);\n }\n }\n }\n\n _getSubState(code) {\n for (let i = 0; i < this.subStates.length; i++) {\n if (this.encoding[this.subStates[i]].isCode(code)) {\n return this.subStates[i];\n }\n }\n }\n\n _getAll(value, index) {\n let code;\n let result = \"\";\n let i = index;\n\n while ((code = value.charCodeAt(i++)) && this.isCode(code)) {\n result += String.fromCharCode(code - 128);\n }\n\n return result;\n }\n};\n\nstates128.FNC1 = class States128FNC1 extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this.states = states;\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"FNC1\",\n startState: \"C\",\n startAI: \"(\",\n endAI: \")\",\n dependentStates: [\"C\", \"B\"],\n applicationIdentifiers: {\n \"22\": { max: 29, type: \"alphanumeric\" },\n \"402\": { length: 17 },\n \"7004\": { max: 4, type: \"alphanumeric\" },\n \"242\": { max: 6, type: \"alphanumeric\" },\n \"8020\": { max: 25, type: \"alphanumeric\" },\n \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n multiKey: [{\n ids: [\"15\", \"17\", \"8005\", \"8100\"],\n ranges: [\n [11, 13],\n [310, 316],\n [320, 336],\n [340, 369]\n ],\n type: { length: 6 }\n }, {\n ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n ranges: [[90 - 99]],\n type: { max: 30, type: \"alphanumeric\" }\n }, {\n ids: [\"7001\"],\n ranges: [[410, 414]],\n type: { length: 13 }\n }, {\n ids: [\"10\", \"21\", \"254\", \"420\", \"8002\"],\n type: { max: 20, type: \"alphanumeric\" }\n }, {\n ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n type: { length: 18 }\n }, {\n ids: [\"01\", \"02\", \"8001\"],\n type: { length: 14 }\n }, {\n ids: [\"422\"],\n ranges: [\n [424, 426]\n ],\n type: { length: 3 }\n }, {\n ids: [\"20\", \"8102\"],\n type: { length: 2 }\n }, {\n ids: [\"30\", \"37\"],\n type: { max: 8, type: \"alphanumeric\" }\n }, {\n ids: [\"390\", \"392\"],\n type: { max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"421\", \"423\"],\n type: { min: 3, max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"391\", \"393\"],\n type: { min: 3, max: 18, type: \"alphanumeric\" }\n }, {\n ids: [\"7003\", \"8101\"],\n type: { length: 10 }\n }]\n },\n START: 102\n });\n }\n\n\n addStart() {\n this.encoding[this.startState].addStart();\n }\n\n is() {\n return inArray(this.key, this.states);\n }\n\n pushState(encodingState) {\n let encoding = this.encoding,\n value = encodingState.value.replace(/\\s/g, \"\"),\n regexSeparators = new RegExp(\"[\" + this.startAI + this.endAI + \"]\", \"g\"),\n index = encodingState.index,\n subState = {\n state: this.startState\n },\n current,\n nextStart,\n separatorLength;\n\n encoding.addPattern(this.START);\n\n const trueCondition = true;\n\n while (trueCondition) {\n subState.index = 0;\n\n separatorLength = value.charAt(index) === this.startAI ? 2 : 0;\n current = separatorLength > 0 ? this.getBySeparator(value, index) : this.getByLength(value, index);\n\n if (current.ai.length) {\n nextStart = index + separatorLength + current.id.length + current.ai.length;\n } else {\n nextStart = value.indexOf(this.startAI, index + 1);\n\n if (nextStart < 0) {\n if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n throw new Error(\"Separators are required after variable length identifiers\");\n }\n\n nextStart = value.length;\n }\n }\n\n subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n this.validate(current, subState.value);\n encoding.pushData(subState, this.dependentStates);\n\n if (nextStart >= value.length) {\n break;\n }\n\n index = nextStart;\n\n if (subState.state !== this.startState) {\n encoding[this.startState].move(subState);\n subState.state = this.startState;\n }\n\n if (!current.ai.length) {\n encoding.addPattern(this.START);\n }\n }\n\n encodingState.index = encodingState.value.length;\n }\n\n validate(current, value) {\n let code = value.substr(current.id.length),\n ai = current.ai;\n\n if (!ai.type && !numberRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n }\n\n if (ai.type === \"alphanumeric\" && !alphanumericRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n }\n\n if (ai.length && ai.length !== code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n }\n\n if (ai.min && ai.min > code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n }\n\n if (ai.max && ai.max < code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n }\n }\n\n getByLength(value, index) {\n let id;\n let applicationIdentifier;\n\n for (let i = 2; i <= 4; i++) {\n id = getSubstring(value, index, i);\n applicationIdentifier = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substring(0, id.length - 1));\n if (applicationIdentifier) {\n return {\n id: id,\n ai: applicationIdentifier\n };\n }\n }\n this.unsupportedAIError(id);\n }\n\n unsupportedAIError(id) {\n throw new Error(\"'\" + id + \"' is not a supported Application Identifier\");\n }\n\n getBySeparator(value, index) {\n let start = value.indexOf(this.startAI, index),\n end = value.indexOf(this.endAI, start),\n id = value.substring(start + 1, end),\n ai = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substr(id.length - 1));\n\n if (!ai) {\n this.unsupportedAIError(id);\n }\n\n return {\n ai: ai,\n id: id\n };\n }\n\n getApplicationIdentifier(id) {\n let applicationIdentifier = this.applicationIdentifiers,\n multiKey = applicationIdentifier.multiKey;\n\n if (applicationIdentifier[id]) {\n return applicationIdentifier[id];\n }\n\n for (let i = 0; i < multiKey.length; i++) {\n if (multiKey[i].ids && inArray(id, multiKey[i].ids)) {\n return multiKey[i].type;\n } else if (multiKey[i].ranges) {\n let ranges = multiKey[i].ranges;\n\n for (let j = 0; j < ranges.length; j++) {\n if (ranges[j][0] <= id && id <= ranges[j][1]) {\n return multiKey[i].type;\n }\n }\n }\n }\n }\n};\n\nexport class Code128Base extends Encoding {\n constructor(options) {\n super(options);\n this._initStates();\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characterMap: [\n 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, 132212, 221213,\n 221312, 231212, 112232, 122132, 122231, 113222, 123122, 123221, 223211, 221132,\n 221231, 213212, 223112, 312131, 311222, 321122, 321221, 312212, 322112, 322211,\n 212123, 212321, 232121, 111323, 131123, 131321, 112313, 132113, 132311, 211313,\n 231113, 231311, 112133, 112331, 132131, 113123, 113321, 133121, 313121, 211331,\n 231131, 213113, 213311, 213131, 311123, 311321, 331121, 312113, 312311, 332111,\n 314111, 221411, 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214,\n 112412, 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111,\n 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, 212141,\n 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, 411311, 113141,\n 114131, 311141, 411131, 211412, 211214, 211232, 2331112\n ],\n STOP: 106\n });\n }\n\n _initStates() {\n for (let i = 0; i < this.states.length; i++) {\n this[this.states[i]] = new states128[this.states[i]](this, this.states);\n }\n }\n\n initValue(value, width, height) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.height = height;\n this.checkSum = 0;\n this.totalUnits = 0;\n this.index = 0;\n this.position = 1;\n }\n\n addData() {\n let encodingState = {\n value: this.value,\n index: 0,\n state: \"\"\n };\n\n if (this.value.length === 0) {\n return;\n }\n\n encodingState.state =\n encodingState.previousState = this.getNextState(encodingState, this.states);\n\n this.addStart(encodingState);\n\n this.pushData(encodingState, this.states);\n\n this.addCheckSum();\n this.addStop();\n this.setBaseUnit();\n }\n\n pushData(encodingState, states) {\n const trueCondition = true;\n\n while (trueCondition) {\n this[encodingState.state].pushState(encodingState);\n\n if (encodingState.index >= encodingState.value.length) {\n break;\n }\n\n if (!encodingState.shifted) {\n encodingState.previousState = encodingState.state;\n encodingState.state = this.getNextState(encodingState, states);\n this[encodingState.state].move(encodingState);\n } else {\n let temp = encodingState.state;\n encodingState.state = encodingState.previousState;\n encodingState.previousState = temp;\n encodingState.shifted = false;\n }\n }\n }\n\n addStart(encodingState) {\n this[encodingState.state].addStart(encodingState);\n this.position = 1;\n }\n\n addCheckSum() {\n this.checksum = this.checkSum % 103;\n this.addPattern(this.checksum);\n }\n\n addStop() {\n this.addPattern(this.STOP);\n }\n\n setBaseUnit() {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n }\n\n addPattern(code) {\n const pattern = this.characterMap[code].toString();\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n this.checkSum += code * this.position++;\n }\n\n getNextState(encodingState, states) {\n for (let i = 0; i < states.length; i++) {\n if (this[states[i]].is(encodingState.value, encodingState.index)) {\n return states[i];\n }\n }\n\n this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n }\n}\n\nexport class Code128a extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 A\",\n states: [\"A\"]\n });\n }\n}\n\nexport class Code128b extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 B\",\n states: [\"B\"]\n });\n }\n}\n\nexport class Code128c extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 C\",\n states: [\"C\"]\n });\n }\n}\n\nexport class Code128 extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128\",\n states: [\"C\", \"B\", \"A\", \"FNC4\"]\n });\n }\n}\n\nexport class CodeGS1128 extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code GS1-128\",\n states: [\"FNC1\", \"C\", \"B\"]\n });\n }\n}\n\nfunction getSubstring(value, index, count) {\n return value.substring(index, index + count);\n}\n","import { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class MsiBase extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characterMap: [\n \"12121212\",\n \"12121221\",\n \"12122112\",\n \"12122121\",\n \"12211212\",\n \"12211221\",\n \"12212112\",\n \"12212121\",\n \"21121212\",\n \"21121221\"\n ],\n START: \"21\",\n STOP: \"121\",\n checkSumType: \"\",\n checkSums: checkSums\n });\n }\n\n initValue(value, width) {\n this.pattern = [];\n this.value = value;\n this.checkSumLength = 0;\n this.width = width;\n }\n\n setBaseUnit() {\n const startStopLength = 7;\n\n this.baseUnit = this.width /\n (12 * (this.value.length + this.checkSumLength) + this.quietZoneLength + startStopLength);\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n }\n\n addCharacter(character) {\n const pattern = this.characterMap[character];\n\n if (!pattern) {\n this.invalidCharacterError(character);\n }\n\n this.addPattern(pattern);\n }\n\n addPattern(pattern) {\n for (let i = 0; i < pattern.length; i++) {\n this.pattern.push(parseInt(pattern.charAt(i), 10));\n }\n }\n\n addCheckSum() {\n const checkSumFunction = this.checkSums[this.checkSumType];\n const checkValues = checkSumFunction.call(this.checkSums, this.value);\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n this.checkSumLength++;\n this.addPattern(this.characterMap[checkValues[i]]);\n }\n }\n}\n\nexport class MsiMod10 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo10\",\n checkSumType: \"Modulo10\"\n });\n }\n}\n\nexport class MsiMod11 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo11\",\n checkSumType: \"Modulo11\"\n });\n }\n}\n\nexport class MsiMod1010 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo10 Modulo10\",\n checkSumType: \"Modulo10Modulo10\"\n });\n }\n}\n\nexport class MsiMod1110 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo11 Modulo10\",\n checkSumType: \"Modulo11Modulo10\"\n });\n }\n}\n\nconst checkSums = {\n Modulo10(value) {\n let checkValues = [0, \"\"],\n odd = value.length % 2,\n idx,\n evenSum,\n oddSum;\n\n for (idx = 0; idx < value.length; idx++) {\n checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx), 10);\n }\n\n oddSum = checkValues[0];\n evenSum = (checkValues[1] * 2).toString();\n\n for (idx = 0; idx < evenSum.length; idx++) {\n oddSum += parseInt(evenSum.charAt(idx), 10);\n }\n\n return [(10 - (oddSum % 10)) % 10];\n },\n Modulo11(value) {\n let weightedSum = 0,\n mod = 11,\n length = value.length,\n weight,\n checkValue;\n\n for (let i = 0; i < length; i++) {\n weight = ((length - i) % 6 || 6) + 1;\n weightedSum += weight * value.charAt(i);\n }\n\n checkValue = (mod - weightedSum % mod) % mod;\n\n if (checkValue !== 10) {\n return [checkValue];\n }\n\n return [1, 0];\n },\n Modulo11Modulo10(value) {\n let checkValues = this.Modulo11(value),\n mod11Value;\n mod11Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod11Value));\n },\n Modulo10Modulo10(value) {\n let checkValues = this.Modulo10(value),\n mod10Value;\n mod10Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod10Value));\n }\n};\n","import { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class Ean13 extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"EAN 13\",\n keyTable: [\n '000000',\n '001011',\n '001101',\n '001110',\n '010011',\n '011001',\n '011100',\n '010101',\n '010110',\n '011010'\n ],\n characterMap: {\n digits: [\n [3, 2, 1, 1],\n [2, 2, 2, 1],\n [2, 1, 2, 2],\n [1, 4, 1, 1],\n [1, 1, 3, 2],\n [1, 2, 3, 1],\n [1, 1, 1, 4],\n [1, 3, 1, 2],\n [1, 2, 1, 3],\n [3, 1, 1, 2]\n ],\n start: [1, 1, 1],\n middle: [1, 1, 1, 1, 1]\n }\n });\n }\n\n initValue(value, width, height) {\n const valueAsString = String(value);\n\n if (valueAsString.length !== 12 || /\\D/.test(valueAsString)) {\n throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n }\n\n this.pattern = [];\n this.options.height = height;\n this.baseUnit = width / (95 + this.quietZoneLength);\n this.value = valueAsString;\n this.checksum = this.calculateChecksum();\n this.leftKey = valueAsString[0];\n this.leftPart = valueAsString.substr(1, 6);\n this.rightPart = valueAsString.substr(7) + this.checksum;\n }\n\n addData() {\n this.addPieces(this.characterMap.start);\n this.addSide(this.leftPart, this.leftKey);\n this.addPieces(this.characterMap.middle);\n this.addSide(this.rightPart);\n this.addPieces(this.characterMap.start);\n }\n\n addSide(leftPart, key) {\n for (let i = 0; i < leftPart.length; i++) {\n if (key && parseInt(this.keyTable[key].charAt(i), 10)) {\n this.addPieces(Array.prototype.slice.call(this.characterMap.digits[leftPart.charAt(i)]).reverse(), true);\n } else {\n this.addPieces(this.characterMap.digits[leftPart.charAt(i)], true);\n }\n }\n }\n\n addPieces(arrToAdd, limitedHeight) {\n for (let i = 0; i < arrToAdd.length; i++) {\n if (limitedHeight) {\n this.pattern.push({\n y1: 0,\n y2: this.options.height * 0.95,\n width: arrToAdd[i]\n });\n } else {\n this.pattern.push(arrToAdd[i]);\n }\n }\n }\n\n calculateChecksum() {\n let odd = 0,\n even = 0,\n value = this.value.split(\"\").reverse().join(\"\");\n\n for (let i = 0; i < value.length; i++) {\n if (i % 2) {\n even += parseInt(value.charAt(i), 10);\n } else {\n odd += parseInt(value.charAt(i), 10);\n }\n }\n\n let checksum = (10 - ((3 * odd + even) % 10)) % 10;\n\n return checksum;\n }\n}\n","import { Ean13 } from './ean13';\n\nconst extend = Object.assign;\n\nexport class Ean8 extends Ean13 {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"EAN 8\"\n });\n }\n\n initValue(value, width, height) {\n if (value.length !== 7 || /\\D/.test(value)) {\n throw new Error('Invalid value provided');\n }\n\n this.value = value;\n this.options.height = height;\n this.checksum = this.calculateChecksum(this.value);\n this.leftPart = this.value.substr(0, 4);\n this.rightPart = this.value.substr(4) + this.checksum;\n this.pattern = [];\n this.baseUnit = width / (67 + this.quietZoneLength);\n }\n}\n","import { Code11 } from './code11';\nimport { Code39 } from './code39';\nimport { Code39Extended } from './code39-extended';\nimport { Code93 } from './code93';\nimport { Code93Extended } from './code93-extended';\nimport { Postnet } from './postnet';\n\nimport {\n Code128,\n Code128a,\n Code128b,\n Code128c,\n CodeGS1128\n} from './code128';\n\nimport {\n MsiMod10,\n MsiMod11,\n MsiMod1010,\n MsiMod1110\n} from './msi';\n\nimport { Ean8 } from './ean8';\nimport { Ean13 } from './ean13';\n\nexport const Encodings = {\n code11: Code11,\n\n code39: Code39,\n code39extended: Code39Extended,\n\n code93: Code93,\n code93extended: Code93Extended,\n\n code128: Code128,\n code128a: Code128a,\n code128b: Code128b,\n code128c: Code128c,\n [\"gs1-128\"]: CodeGS1128,\n\n msimod10: MsiMod10,\n msimod11: MsiMod11,\n msimod1010: MsiMod1010,\n msimod1110: MsiMod1110,\n\n postnet: Postnet,\n\n ean8: Ean8,\n ean13: Ean13\n};\n","import { Code93 } from './code93';\nimport { Code39ExtendedBase } from './code39-extended';\nimport deepExtend from '../../common/deep-extend';\n\nexport class Code93Extended extends Code93 {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 93 extended\",\n pushCheckSum: function() {\n const checkValues = this._getCheckValues();\n let value;\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n value = checkValues[i];\n\n if (this.shiftValuesAsciiCodes[value]) {\n this.addExtended(this.shiftValuesAsciiCodes[value]);\n } else {\n const characterByValue = this._findCharacterByValue(value);\n this.addPattern(this.characterMap[characterByValue].pattern);\n }\n }\n }\n });\n }\n}\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n addClass,\n setDefaultOptions,\n deepExtend,\n getSpacing,\n isObject,\n defaultErrorHandler\n} from '../common';\n\nimport {\n Box,\n TextBox\n} from '../core';\n\nimport { Encodings } from './encodings/main';\n\nconst DEFAULT_BARCODE_WIDTH = 300;\nconst DEFAULT_BARCODE_HEIGHT = 100;\n\nclass Barcode extends Class {\n constructor(element, options, errorHandler = defaultErrorHandler) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n this._setOptions(options);\n\n if (options && defined(options.value)) {\n this.redraw();\n }\n }\n\n destroy() {\n this._destroySurface();\n }\n\n _initElement() {\n addClass(this.element, \"k-barcode\");\n }\n\n _initSurface() {\n const { options, surface } = this;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _createSurface() {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = \"relative\";\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n setOptions(options) {\n this._setOptions(options);\n this.redraw();\n }\n\n redraw() {\n let size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size.width,\n height: size.height\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n getSize() {\n return {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n };\n }\n\n _resize() {\n this.redraw();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n _render() {\n const options = this.options;\n const value = options.value;\n const textOptions = options.text;\n const textMargin = getSpacing(textOptions.margin);\n const size = this._getSize();\n const border = options.border || {};\n const encoding = this.encoding;\n const contentBox = new Box(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding);\n let barHeight = contentBox.height();\n let encodedValue;\n let textToDisplay;\n let textHeight;\n const visual = new draw.Group();\n\n this.contentBox = contentBox;\n visual.append(this._getBackground(size));\n\n if (textOptions.visible) {\n textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n barHeight -= textHeight + textMargin.top + textMargin.bottom;\n }\n\n try {\n encodedValue = encoding.encode(value, contentBox.width(), barHeight);\n } catch (error) {\n this.onError(error);\n return visual;\n }\n\n if (textOptions.visible) {\n textToDisplay = value;\n\n if (options.checksum && defined(encoding.checksum)) {\n textToDisplay += \" \" + encoding.checksum;\n }\n\n visual.append(this._getText(textToDisplay));\n }\n\n this.barHeight = barHeight;\n this._bandsGroup = this._getBands(encodedValue.pattern, encodedValue.baseUnit);\n visual.append(this._bandsGroup);\n\n return visual;\n }\n\n exportVisual() {\n return this._render();\n }\n\n _getSize() {\n const element = this.element;\n const elementWidth = element.clientWidth;\n const elementHeight = element.clientHeight;\n const size = new geom.Size(DEFAULT_BARCODE_WIDTH, DEFAULT_BARCODE_HEIGHT);\n\n if (elementWidth > 0) {\n size.width = elementWidth;\n }\n\n if (elementHeight) {\n size.height = elementHeight;\n }\n\n if (this.options.width) {\n size.width = this.options.width;\n }\n\n if (this.options.height) {\n size.height = this.options.height;\n }\n\n return size;\n }\n\n value(value) {\n if (!defined(value)) {\n return this.options.value;\n }\n\n this.options.value = String(value);\n this.redraw();\n }\n\n _getBands(pattern, baseUnit) {\n const contentBox = this.contentBox;\n let offsetX = contentBox.x1;\n let stepX;\n let patternItem;\n const group = new draw.Group();\n\n for (let i = 0; i < pattern.length; i++) {\n patternItem = isObject(pattern[i]) ? pattern[i] : {\n width: pattern[i],\n y1: 0,\n y2: this.barHeight\n };\n\n stepX = patternItem.width * baseUnit;\n\n if (i % 2) {\n const rect = geom.Rect.fromPoints(\n new geom.Point(offsetX, patternItem.y1 + contentBox.y1),\n new geom.Point(offsetX + stepX, patternItem.y2 + contentBox.y1)\n );\n\n const path = draw.Path.fromRect(rect, {\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n group.append(path);\n }\n\n offsetX += stepX;\n }\n\n return group;\n }\n\n _getBackground(size) {\n const options = this.options;\n const border = options.border || {};\n const box = new Box(0, 0, size.width, size.height).unpad(border.width / 2);\n const path = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: options.background\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n\n return path;\n }\n\n _getText(value) {\n const textOptions = this.options.text;\n const text = this._textbox = new TextBox(value, {\n font: textOptions.font,\n color: textOptions.color,\n align: \"center\",\n vAlign: \"bottom\",\n margin: textOptions.margin\n });\n\n text.reflow(this.contentBox);\n text.renderVisual();\n\n return text.visual;\n }\n\n _setOptions(options) {\n this.type = (options.type || this.options.type).toLowerCase();\n\n if (this.type === \"upca\") {\n this.type = \"ean13\";\n options.value = '0' + options.value;\n }\n\n if (this.type === \"upce\") {\n this.type = \"ean8\";\n options.value = '0' + options.value;\n }\n\n if (!Encodings[this.type]) {\n throw new Error(`Encoding '${this.type}' is not supported.`);\n }\n\n this.encoding = new Encodings[this.type]();\n\n this.options = deepExtend({}, this.options, options);\n }\n}\n\nsetDefaultOptions(Barcode, {\n name: \"Barcode\",\n renderAs: \"svg\",\n value: \"\",\n type: \"code39\",\n checksum: false,\n width: 0,\n height: 0,\n color: \"black\",\n background: \"white\",\n text: {\n visible: true,\n font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n color: \"black\",\n margin: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n },\n border: {\n width: 0,\n dashType: \"solid\",\n color: \"black\"\n },\n padding: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n});\n\nexport default Barcode;\n","import { Encodings } from './encodings/main';\n\nconst validate = (encoding, size, prefix) => (value) => {\n try {\n encoding.encode(\n prefix + value,\n size.width,\n size.height\n );\n } catch (error) {\n return {\n valid: false,\n error\n };\n }\n\n return {\n valid: true\n };\n};\n\n// A default size for encodings, so the validator can check only the value if no size is provided.\nconst fallbackSize = { width: 500, height: 100 };\n\nfunction barcodeValidator(type, size = fallbackSize) {\n if (!type) {\n throw new Error(`Please specify barcode type to validate.`);\n }\n\n let resolvedType = type.toLowerCase();\n let prefix = '';\n if (resolvedType === 'upca') {\n resolvedType = 'ean13';\n prefix = '0';\n } else if (resolvedType === 'upce') {\n resolvedType = 'ean8';\n prefix = '0';\n }\n\n if (!Encodings[resolvedType]) {\n throw new Error(`Encoding '${type}' is not supported.`);\n }\n\n const encoding = new Encodings[resolvedType]();\n return validate(encoding, size, prefix);\n}\n\nexport default barcodeValidator;\n","export const extend = Object.assign;\n\nexport function splitInto(str, chunkLength) {\n let result = [];\n let idx = 0;\n\n while (idx < str.length) {\n result.push(str.substring(idx, idx + chunkLength));\n idx += chunkLength;\n }\n\n return result;\n}\n\nexport function toBitsString(value, length) {\n let bitString = Number(value).toString(2);\n\n if (bitString.length < length) {\n bitString = new Array(length - bitString.length + 1).join(0) + bitString;\n }\n\n return bitString;\n}\n\nexport function toDecimal(value) {\n return parseInt(value, 2);\n}\n\n","import { Class } from '../../common';\n\nexport class FreeCellVisitor extends Class {\n constructor(matrix) {\n super();\n\n this.matrix = matrix;\n this.row = matrix.length - 1;\n this.column = matrix.length - 1;\n this.startColumn = this.column;\n this.dir = -1;\n this.c = 0;\n }\n\n move() {\n this.row += this.dir * this.c;\n this.c ^= 1;\n this.column = this.startColumn - this.c;\n }\n\n getNextCell() {\n while (this.matrix[this.row][this.column] !== undefined) {\n this.move();\n\n if (this.row < 0 || this.row >= this.matrix.length) {\n this.dir = -this.dir;\n this.startColumn -= this.startColumn !== 8 ? 2 : 3;\n this.column = this.startColumn;\n this.row = this.dir < 0 ? this.matrix.length - 1 : 0;\n }\n }\n\n return {\n row: this.row,\n column: this.column\n };\n }\n\n getNextRemainderCell() {\n this.move();\n\n if (this.matrix[this.row][this.column] === undefined) {\n return {\n row: this.row,\n column: this.column\n };\n }\n }\n}\n","import { Class } from '../../common';\n\nexport class EncodingResult extends Class {\n constructor(dataString, version) {\n super();\n\n this.dataString = dataString;\n this.version = version;\n }\n}\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport {\n getModes,\n getVersion,\n getDataCodewordsCount,\n getDataString\n} from '../encoding';\n\nexport class IsoEncoder extends Class {\n getEncodingResult(inputString, errorCorrectionLevel) {\n let modes = getModes(inputString),\n dataCodewordsCount = getDataCodewordsCount(modes),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = getDataString(modes, version);\n\n return new EncodingResult(dataString, version);\n }\n}\n","import {\n toBitsString,\n toDecimal\n} from '../utils';\nimport { FreeCellVisitor } from './free-cell-visitor';\nimport { IsoEncoder } from './encoders/iso-encoder';\nimport { Utf8Encoder } from './encoders/utf8-encoder';\nimport { VersionsCodewordsInformation } from './version-codewords';\nimport { DataModeInstances } from './data-modes/data-mode-instances';\n\nlet terminator = \"0000\",\n NUMERIC = \"numeric\",\n ALPHA_NUMERIC = \"alphanumeric\",\n BYTE = \"byte\",\n powersOfTwo = { \"1\": 0 },\n powersOfTwoResult = { \"0\": 1 },\n irregularAlignmentPatternsStartDistance = {\n 15: 20, 16: 20, 18: 24, 19: 24, 22: 20,\n 24: 22, 26: 24, 28: 20, 30: 20, 31: 24,\n 32: 28, 33: 24, 36: 18, 37: 22, 39: 20, 40: 24\n },\n finderPattern = [1, 0, 1, 1, 1],\n alignmentPattern = [1, 0, 1],\n errorCorrectionPatterns = { L: \"01\", M: \"00\", Q: \"11\", H: \"10\" },\n formatMaskPattern = \"101010000010010\",\n formatGeneratorPolynomial = \"10100110111\",\n versionGeneratorPolynomial = \"1111100100101\",\n paddingCodewords = [\"11101100\", \"00010001\"],\n finderPatternValue = 93,\n /* eslint-disable arrow-body-style */\n maskPatternConditions = [\n (row, column) => { return (row + column) % 2 === 0; },\n (row) => { return row % 2 === 0; },\n (column) => { return column % 3 === 0; },\n (row, column) => { return (row + column) % 3 === 0; },\n (row, column) => { return (Math.floor(row / 2) + Math.floor(column / 3)) % 2 === 0; },\n (row, column) => { return ((row * column) % 2) + ((row * column) % 3) === 0; },\n (row, column) => { return (((row * column) % 2) + ((row * column) % 3)) % 2 === 0; },\n (row, column) => { return (((row + column) % 2) + ((row * column) % 3)) % 2 === 0; }\n ],\n /* eslint-enable arrow-body-style */\n numberRegex = /^\\d+/,\n alphaPattern = \"A-Z0-9 $%*+./:-\",\n alphaExclusiveSet = \"A-Z $%*+./:-\",\n alphaRegex = new RegExp(\"^[\" + alphaExclusiveSet + \"]+\"),\n alphaNumericRegex = new RegExp(\"^[\" + alphaPattern + \"]+\"),\n byteRegex = new RegExp(\"^[^\" + alphaPattern + \"]+\"),\n initMinNumericBeforeAlpha = 8,\n initMinNumericBeforeByte = 5,\n initMinAlphaBeforeByte = 8,\n minNumericBeforeAlpha = 17,\n minNumericBeforeByte = 9,\n minAlphaBeforeByte = 16;\n\nexport const generatorPolynomials = [[1, 0], [1, 25, 0]];\n\nexport function fillFunctionCell(matrices, bit, x, y) {\n for (let i = 0; i < matrices.length; i++) {\n matrices[i][x][y] = bit;\n }\n}\n\nexport function fillDataCell(matrices, bit, x, y) {\n for (let i = 0; i < maskPatternConditions.length; i++) {\n matrices[i][x][y] = maskPatternConditions[i](x, y) ? bit ^ 1 : parseInt(bit, 10);\n }\n}\n\nexport function fillData(matrices, blocks) {\n let cellVisitor = new FreeCellVisitor(matrices[0]),\n block,\n codewordIdx,\n cell;\n\n for (let blockIdx = 0; blockIdx < blocks.length; blockIdx++) {\n block = blocks[blockIdx];\n codewordIdx = 0;\n\n while (block.length > 0) {\n for (let i = 0; i < block.length; i++) {\n for (let j = 0; j < 8; j++) {\n cell = cellVisitor.getNextCell();\n fillDataCell(matrices, block[i][codewordIdx].charAt(j), cell.row, cell.column);\n }\n }\n\n codewordIdx++;\n\n while (block[0] && codewordIdx === block[0].length) {\n block.splice(0, 1);\n }\n }\n }\n\n while ((cell = cellVisitor.getNextRemainderCell())) {\n fillDataCell(matrices, 0, cell.row, cell.column);\n }\n}\n\nexport function padDataString(initialDataString, totalDataCodewords) {\n let dataBitsCount = totalDataCodewords * 8,\n terminatorIndex = 0,\n paddingCodewordIndex = 0;\n let dataString = initialDataString;\n\n while (dataString.length < dataBitsCount && terminatorIndex < terminator.length) {\n dataString += terminator.charAt(terminatorIndex++);\n }\n\n if (dataString.length % 8 !== 0) {\n dataString += new Array(9 - dataString.length % 8).join(\"0\");\n }\n\n while (dataString.length < dataBitsCount) {\n dataString += paddingCodewords[paddingCodewordIndex];\n paddingCodewordIndex ^= 1;\n }\n\n return dataString;\n}\n\nexport function generatePowersOfTwo() {\n let result;\n let power;\n\n for (power = 1; power < 255; power++) {\n result = powersOfTwoResult[power - 1] * 2;\n if (result > 255) {\n result = result ^ 285;\n }\n\n powersOfTwoResult[power] = result;\n powersOfTwo[result] = power;\n }\n\n result = (powersOfTwoResult[power - 1] * 2) ^ 285;\n powersOfTwoResult[power] = result;\n powersOfTwoResult[-1] = 0;\n}\n\nexport function xorPolynomials(x, y) {\n let result = [],\n idx = x.length - 2;\n\n for (let i = idx; i >= 0; i--) {\n result[i] = x[i] ^ y[i];\n }\n\n return result;\n}\n\nexport function multiplyPolynomials(x, y) {\n let result = [];\n\n for (let i = 0; i < x.length; i++) {\n for (let j = 0; j < y.length; j++) {\n if (result[i + j] === undefined) {\n result[i + j] = (x[i] + (y[j] >= 0 ? y[j] : 0)) % 255;\n } else {\n result[i + j] = powersOfTwo[powersOfTwoResult[result[i + j]] ^ powersOfTwoResult[(x[i] + y[j]) % 255]];\n }\n }\n }\n\n return result;\n}\n\nexport function generateGeneratorPolynomials() {\n let maxErrorCorrectionCodeWordsCount = 68;\n\n for (let idx = 2; idx <= maxErrorCorrectionCodeWordsCount; idx++) {\n let firstPolynomial = generatorPolynomials[idx - 1],\n secondPolynomial = [idx, 0];\n\n generatorPolynomials[idx] = multiplyPolynomials(firstPolynomial, secondPolynomial);\n }\n}\n\n//possibly generate on demand\ngeneratePowersOfTwo();\ngenerateGeneratorPolynomials();\n\nexport function multiplyByConstant(polynomial, power) {\n let result = [],\n idx = polynomial.length - 1;\n\n do {\n result[idx] = powersOfTwoResult[(polynomial[idx] + power) % 255];\n idx--;\n }\n while (polynomial[idx] !== undefined);\n\n return result;\n}\n\nexport function generateErrorCodewords(data, errorCodewordsCount) {\n let generator = generatorPolynomials[errorCodewordsCount - 1],\n result = new Array(errorCodewordsCount).concat(data),\n generatorPolynomial = new Array(result.length - generator.length).concat(generator),\n steps = data.length,\n errorCodewords = [],\n divisor,\n idx;\n\n for (idx = 0; idx < steps; idx++) {\n divisor = multiplyByConstant(generatorPolynomial, powersOfTwo[result[result.length - 1]]);\n generatorPolynomial.splice(0, 1);\n\n result = xorPolynomials(divisor, result);\n }\n\n for (idx = result.length - 1; idx >= 0; idx--) {\n errorCodewords[errorCodewordsCount - 1 - idx] = toBitsString(result[idx], 8);\n }\n\n return errorCodewords;\n}\n\nexport function getBlocks(dataStream, versionCodewordsInformation) {\n let codewordStart = 0,\n dataBlocks = [],\n errorBlocks = [],\n dataBlock,\n versionGroups = versionCodewordsInformation.groups,\n blockCodewordsCount,\n groupBlocksCount,\n messagePolynomial,\n codeword;\n\n for (let groupIdx = 0; groupIdx < versionGroups.length; groupIdx++) {\n groupBlocksCount = versionGroups[groupIdx][0];\n\n for (let blockIdx = 0; blockIdx < groupBlocksCount; blockIdx++) {\n blockCodewordsCount = versionGroups[groupIdx][1];\n dataBlock = [];\n messagePolynomial = [];\n\n for (let codewordIdx = 1; codewordIdx <= blockCodewordsCount; codewordIdx++) {\n codeword = dataStream.substring(codewordStart, codewordStart + 8);\n dataBlock.push(codeword);\n messagePolynomial[blockCodewordsCount - codewordIdx] = toDecimal(codeword);\n codewordStart += 8;\n }\n\n dataBlocks.push(dataBlock);\n errorBlocks.push(generateErrorCodewords(messagePolynomial,\n versionCodewordsInformation.errorCodewordsPerBlock));\n }\n }\n return [dataBlocks, errorBlocks];\n}\n\nexport function chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode) {\n let numeric = numberRegex.exec(str),\n numericMatch = numeric ? numeric[0] : \"\",\n alpha = alphaRegex.exec(str),\n alphaMatch = alpha ? alpha[0] : \"\",\n alphaNumeric = alphaNumericRegex.exec(str),\n alphaNumericMatch = alphaNumeric ? alphaNumeric[0] : \"\",\n mode,\n modeString;\n\n if (numericMatch &&\n (numericMatch.length >= minNumericBeforeAlpha || str.length === numericMatch.length ||\n (numericMatch.length >= minNumericBeforeByte && !alphaNumericRegex.test(str.charAt(numericMatch.length))))) {\n mode = NUMERIC;\n modeString = numericMatch;\n } else if (alphaNumericMatch && (str.length === alphaNumericMatch.length ||\n alphaNumericMatch.length >= minAlphaBeforeByte || previousMode === ALPHA_NUMERIC)) {\n mode = ALPHA_NUMERIC;\n modeString = numericMatch || alphaMatch;\n } else {\n mode = BYTE;\n\n if (alphaNumericMatch) {\n modeString = alphaNumericMatch + byteRegex.exec(str.substring(alphaNumericMatch.length))[0];\n } else {\n modeString = byteRegex.exec(str)[0];\n }\n }\n\n return {\n mode: mode,\n modeString: modeString\n };\n}\n\nexport function getModes(inputString) {\n let modes = [],\n previousMode,\n idx = 0;\n let str = inputString;\n\n modes.push(chooseMode(str, initMinNumericBeforeAlpha, initMinNumericBeforeByte, initMinAlphaBeforeByte, previousMode));\n previousMode = modes[0].mode;\n str = str.substr(modes[0].modeString.length);\n\n while (str.length > 0) {\n let nextMode = chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode);\n\n if (nextMode.mode !== previousMode) {\n previousMode = nextMode.mode;\n modes.push(nextMode);\n idx++;\n } else {\n modes[idx].modeString += nextMode.modeString;\n }\n\n str = str.substr(nextMode.modeString.length);\n }\n\n return modes;\n}\n\nexport function getDataCodewordsCount(modes) {\n let length = 0,\n mode;\n\n for (let i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n length += mode.getStringBitsLength(modes[i].modeString.length);\n }\n\n return Math.ceil(length / 8);\n}\n\nexport function getVersion(dataCodewordsCount, errorCorrectionLevel) {\n let x = 0,\n y = VersionsCodewordsInformation.length - 1,\n version = Math.floor(VersionsCodewordsInformation.length / 2);\n\n do {\n if (dataCodewordsCount < VersionsCodewordsInformation[version][errorCorrectionLevel].totalDataCodewords) {\n y = version;\n } else {\n x = version;\n }\n\n version = x + Math.floor((y - x) / 2);\n } while (y - x > 1);\n\n if (dataCodewordsCount <= VersionsCodewordsInformation[x][errorCorrectionLevel].totalDataCodewords) {\n return version + 1;\n }\n\n return y + 1;\n}\n\nexport function getDataString(modes, version) {\n let dataString = \"\",\n mode;\n\n for (let i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n dataString += mode.encode(modes[i].modeString, version);\n }\n\n return dataString;\n}\n\n//fix case all zeros\nexport function encodeFormatInformation(format) {\n let formatNumber = toDecimal(format),\n encodedString,\n result = \"\";\n\n if (formatNumber === 0) {\n return \"101010000010010\";\n }\n\n encodedString = encodeBCH(toDecimal(format), formatGeneratorPolynomial, 15);\n\n for (let i = 0; i < encodedString.length; i++) {\n result += encodedString.charAt(i) ^ formatMaskPattern.charAt(i);\n }\n\n return result;\n}\n\nexport function encodeBCH(value, generatorPolynomial, codeLength) {\n let generatorNumber = toDecimal(generatorPolynomial),\n polynomialLength = generatorPolynomial.length - 1,\n valueNumber = value << polynomialLength,\n length = codeLength - polynomialLength,\n valueString = toBitsString(value, length),\n result = dividePolynomials(valueNumber, generatorNumber);\n\n result = valueString + toBitsString(result, polynomialLength);\n\n return result;\n}\n\nexport function dividePolynomials(numberX, numberY) {\n let yLength = numberY.toString(2).length,\n xLength = numberX.toString(2).length;\n let x = numberX;\n\n do {\n x ^= numberY << xLength - yLength;\n xLength = x.toString(2).length;\n }\n while (xLength >= yLength);\n\n return x;\n}\n\nexport function getNumberAt(str, idx) {\n return parseInt(str.charAt(idx), 10);\n}\n\nexport function initMatrices(version) {\n let matrices = [],\n modules = 17 + 4 * version;\n\n for (let i = 0; i < maskPatternConditions.length; i++) {\n matrices[i] = new Array(modules);\n\n for (let j = 0; j < modules; j++) {\n matrices[i][j] = new Array(modules);\n }\n }\n\n return matrices;\n}\n\nexport function addFormatInformation(matrices, formatString) {\n let matrix = matrices[0],\n x,\n y,\n idx = 0,\n length = formatString.length;\n\n for (x = 0, y = 8; x <= 8; x++) {\n if (x !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n for (x = 8, y = 7; y >= 0; y--) {\n if (y !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n idx = 0;\n\n for (y = matrix.length - 1, x = 8; y >= matrix.length - 8; y--) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n\n fillFunctionCell(matrices, 1, matrix.length - 8, 8);\n\n for (x = matrix.length - 7, y = 8; x < matrix.length; x++) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n}\n\nexport function encodeVersionInformation(version) {\n return encodeBCH(version, versionGeneratorPolynomial, 18);\n}\n\nexport function addVersionInformation(matrices, dataString) {\n let matrix = matrices[0],\n modules = matrix.length,\n x1 = 0,\n y1 = modules - 11,\n x2 = modules - 11,\n y2 = 0,\n quotient,\n mod,\n value;\n\n for (let idx = 0; idx < dataString.length; idx++) {\n quotient = Math.floor(idx / 3);\n mod = idx % 3;\n value = getNumberAt(dataString, dataString.length - idx - 1);\n\n fillFunctionCell(matrices, value, x1 + quotient, y1 + mod);\n fillFunctionCell(matrices, value, x2 + mod, y2 + quotient);\n }\n}\n\nexport function addCentricPattern(matrices, pattern, x, y) {\n let size = pattern.length + 2,\n length = pattern.length + 1,\n value;\n\n for (let i = 0; i < pattern.length; i++) {\n for (let j = i; j < size - i; j++) {\n value = pattern[i];\n\n fillFunctionCell(matrices, value, x + j, y + i);\n fillFunctionCell(matrices, value, x + i, y + j);\n fillFunctionCell(matrices, value, x + length - j, y + length - i);\n fillFunctionCell(matrices, value, x + length - i, y + length - j);\n }\n }\n}\n\nexport function addFinderSeparator(matrices, direction, x, y) {\n let nextX = x,\n nextY = y,\n matrix = matrices[0];\n\n do {\n fillFunctionCell(matrices, 0, nextX, y);\n fillFunctionCell(matrices, 0, x, nextY);\n nextX += direction[0];\n nextY += direction[1];\n }\n while (nextX >= 0 && nextX < matrix.length);\n}\n\nexport function addFinderPatterns(matrices) {\n let modules = matrices[0].length;\n\n addCentricPattern(matrices, finderPattern, 0, 0);\n addFinderSeparator(matrices, [-1, -1], 7, 7);\n addCentricPattern(matrices, finderPattern, modules - 7, 0);\n addFinderSeparator(matrices, [1, -1], modules - 8, 7);\n addCentricPattern(matrices, finderPattern, 0, modules - 7);\n addFinderSeparator(matrices, [-1, 1], 7, modules - 8);\n}\n\nexport function addAlignmentPatterns(matrices, version) {\n if (version < 2) {\n return;\n }\n\n let matrix = matrices[0],\n modules = matrix.length,\n pointsCount = Math.floor(version / 7),\n points = [6],\n startDistance,\n distance,\n idx = 0;\n\n if ((startDistance = irregularAlignmentPatternsStartDistance[version])) {\n distance = (modules - 13 - startDistance) / pointsCount;\n } else {\n startDistance = distance = (modules - 13) / (pointsCount + 1);\n }\n\n points.push(points[idx++] + startDistance);\n\n while ((points[idx] + distance) < modules) {\n points.push(points[idx++] + distance);\n }\n\n for (let i = 0; i < points.length; i++) {\n for (let j = 0; j < points.length; j++) {\n if (matrix[points[i]][points[j]] === undefined) {\n addCentricPattern(matrices, alignmentPattern, points[i] - 2, points[j] - 2);\n }\n }\n }\n}\n\nexport function addTimingFunctions(matrices) {\n let row = 6,\n column = 6,\n value = 1,\n modules = matrices[0].length;\n\n for (let i = 8; i < modules - 8; i++) {\n fillFunctionCell(matrices, value, row, i);\n fillFunctionCell(matrices, value, i, column);\n value ^= 1;\n }\n}\n\nexport function scoreMaskMatrixes(matrices) {\n let scores = [],\n previousBits = [],\n darkModules = [],\n patterns = [],\n adjacentSameBits = [],\n matrix,\n i,\n row = 0,\n column = 1,\n modulesLength = matrices[0].length;\n\n for (i = 0; i < matrices.length; i++) {\n scores[i] = 0;\n darkModules[i] = 0;\n adjacentSameBits[i] = [0, 0];\n patterns[i] = [0, 0];\n previousBits[i] = [];\n }\n\n for (let rowIndex = 0; rowIndex < modulesLength; rowIndex++) {\n for (let columnIndex = 0; columnIndex < modulesLength; columnIndex++) {\n for (let matrixIndex = 0; matrixIndex < matrices.length; matrixIndex++) {\n matrix = matrices[matrixIndex];\n darkModules[matrixIndex] += parseInt(matrix[rowIndex][columnIndex], 10);\n\n if (previousBits[matrixIndex][row] === matrix[rowIndex][columnIndex] &&\n rowIndex + 1 < modulesLength &&\n columnIndex - 1 >= 0 &&\n matrix[rowIndex + 1][columnIndex] === previousBits[matrixIndex][row] &&\n matrix[rowIndex + 1][columnIndex - 1] === previousBits[matrixIndex][row]) {\n scores[matrixIndex] += 3;\n }\n\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, row, matrix[rowIndex][columnIndex]);\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, column, matrix[columnIndex][rowIndex]);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[rowIndex][columnIndex], adjacentSameBits, row);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[columnIndex][rowIndex], adjacentSameBits, column);\n }\n }\n }\n\n let total = modulesLength * modulesLength,\n minIdx,\n min = Number.MAX_VALUE;\n\n for (i = 0; i < scores.length; i++) {\n scores[i] += calculateDarkModulesRatioScore(darkModules[i], total);\n\n if (scores[i] < min) {\n min = scores[i];\n minIdx = i;\n }\n }\n\n return minIdx;\n}\n\nexport function scoreFinderPatternOccurance(idx, patterns, scores, rowColumn, bit) {\n patterns[idx][rowColumn] = ((patterns[idx][rowColumn] << 1) ^ bit) % 128;\n\n if (patterns[idx][rowColumn] === finderPatternValue) {\n scores[idx] += 40;\n }\n}\n\nexport function scoreAdjacentSameBits(idx, scores, previousBits, bit, adjacentBits, rowColumn) {\n if (previousBits[idx][rowColumn] === bit) {\n adjacentBits[idx][rowColumn]++;\n } else {\n previousBits[idx][rowColumn] = bit;\n\n if (adjacentBits[idx][rowColumn] >= 5) {\n scores[idx] += 3 + adjacentBits[idx][rowColumn] - 5;\n }\n\n adjacentBits[idx][rowColumn] = 1;\n }\n}\n\nexport function calculateDarkModulesRatioScore(darkModules, total) {\n let percent = Math.floor((darkModules / total) * 100),\n mod5 = percent % 5,\n previous = Math.abs(percent - mod5 - 50),\n next = Math.abs(percent + 5 - mod5 - 50),\n score = 10 * Math.min(previous / 5, next / 5);\n\n return score;\n}\n\nexport function createQRCodeDataEncoder(encoding) {\n if (encoding && encoding.toLowerCase().indexOf(\"utf_8\") >= 0) {\n return new Utf8Encoder();\n }\n\n return new IsoEncoder();\n}\n\nexport function encodeData(inputString, errorCorrectionLevel, encoding) {\n let encoder = createQRCodeDataEncoder(encoding),\n encodingResult = encoder.getEncodingResult(inputString, errorCorrectionLevel),\n version = encodingResult.version,\n versionInformation = VersionsCodewordsInformation[version - 1][errorCorrectionLevel],\n dataString = padDataString(encodingResult.dataString, versionInformation.totalDataCodewords),\n blocks = getBlocks(dataString, versionInformation),\n matrices = initMatrices(version);\n\n addFinderPatterns(matrices);\n addAlignmentPatterns(matrices, version);\n addTimingFunctions(matrices);\n\n if (version >= 7) {\n addVersionInformation(matrices, toBitsString(0, 18));\n }\n\n addFormatInformation(matrices, toBitsString(0, 15));\n fillData(matrices, blocks);\n\n let minIdx = scoreMaskMatrixes(matrices),\n optimalMatrix = matrices[minIdx];\n\n if (version >= 7) {\n addVersionInformation([optimalMatrix], encodeVersionInformation(version));\n }\n\n let formatString = errorCorrectionPatterns[errorCorrectionLevel] + toBitsString(minIdx, 3);\n addFormatInformation([optimalMatrix], encodeFormatInformation(formatString));\n\n return optimalMatrix;\n}\n","import { Class } from '../../../common';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport class QRDataMode extends Class {\n constructor() {\n super();\n\n this.initProperties();\n }\n\n initProperties() {\n extend(this, {\n modeIndicator: \"\",\n bitsInCharacterCount: []\n });\n }\n\n getVersionIndex(version) {\n if (version < 10) {\n return 0;\n } else if (version > 26) {\n return 2;\n }\n\n return 1;\n }\n\n getBitsCharacterCount(version) {\n return this.bitsInCharacterCount[this.getVersionIndex(version || 40)];\n }\n\n getModeCountString(length, version) {\n return this.modeIndicator + toBitsString(length, this.getBitsCharacterCount(version));\n }\n\n encode() { }\n\n getStringBitsLength() { }\n\n getValue() { }\n}\n","import { NumericQRDataMode } from './numeric-data-mode';\nimport { AlphaNumericQRDataMode } from './alpha-numeric-data-mode';\nimport { ByteQRDataMode } from './byte-data-mode';\n\nconst NUMERIC = \"numeric\";\nconst ALPHA_NUMERIC = \"alphanumeric\";\nconst BYTE = \"byte\";\n\nexport let DataModeInstances = {\n [NUMERIC]: new NumericQRDataMode(),\n [ALPHA_NUMERIC]: new AlphaNumericQRDataMode(),\n [BYTE]: new ByteQRDataMode()\n};\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport class NumericQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n bitsInCharacterCount: [10, 12, 14],\n modeIndicator: \"0001\"\n });\n }\n\n getValue(character) {\n return parseInt(character, 10);\n }\n\n encode(str, version) {\n let mode = this,\n parts = splitInto(str, 3),\n result = mode.getModeCountString(str.length, version);\n let i;\n\n for (i = 0; i < parts.length - 1; i++) {\n result += toBitsString(parts[i], 10);\n }\n\n return result + toBitsString(parts[i], 1 + 3 * parts[i].length);\n }\n\n getStringBitsLength(inputLength, version) {\n let mod3 = inputLength % 3;\n return 4 + this.getBitsCharacterCount(version) + 10 * Math.floor(inputLength / 3) + 3 * mod3 + (mod3 === 0 ? 0 : 1);\n }\n}\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport class AlphaNumericQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characters: {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"A\": 10,\n \"B\": 11,\n \"C\": 12,\n \"D\": 13,\n \"E\": 14,\n \"F\": 15,\n \"G\": 16,\n \"H\": 17,\n \"I\": 18,\n \"J\": 19,\n \"K\": 20,\n \"L\": 21,\n \"M\": 22,\n \"N\": 23,\n \"O\": 24,\n \"P\": 25,\n \"Q\": 26,\n \"R\": 27,\n \"S\": 28,\n \"T\": 29,\n \"U\": 30,\n \"V\": 31,\n \"W\": 32,\n \"X\": 33,\n \"Y\": 34,\n \"Z\": 35,\n \" \": 36,\n \"$\": 37,\n \"%\": 38,\n \"*\": 39,\n \"+\": 40,\n \"-\": 41,\n \".\": 42,\n \"/\": 43,\n \":\": 44\n },\n bitsInCharacterCount: [9, 11, 13],\n modeIndicator: \"0010\"\n });\n }\n\n getValue(character) {\n return this.characters[character];\n }\n\n encode(str, version) {\n let\n parts = splitInto(str, 2),\n result = this.getModeCountString(str.length, version),\n value;\n let i;\n\n for (i = 0; i < parts.length - 1; i++) {\n value = 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1));\n result += toBitsString(value, 11);\n }\n\n value = parts[i].length === 2 ?\n 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1)) :\n this.getValue(parts[i].charAt(0));\n\n return result + toBitsString(value, 1 + 5 * parts[i].length);\n }\n\n getStringBitsLength(inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 11 * Math.floor(inputLength / 2) + 6 * (inputLength % 2);\n }\n}\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport class ByteQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n bitsInCharacterCount: [8, 16, 16],\n modeIndicator: \"0100\"\n });\n }\n\n getValue(character) {\n let code = character.charCodeAt(0);\n\n if (code <= 127 || (160 <= code && code <= 255)) {\n return code;\n }\n\n throw new Error(`Unsupported character in QR Code: \"${character}\".`);\n }\n\n encode(str, version) {\n let mode = this,\n result = mode.getModeCountString(str.length, version);\n\n for (let i = 0; i < str.length; i++) {\n result += toBitsString(mode.getValue(str.charAt(i)), 8);\n }\n\n return result;\n }\n\n getStringBitsLength(inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 8 * inputLength;\n }\n}\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport { DataModeInstances } from '../data-modes/data-mode-instances';\nimport { extend } from '../../utils';\nimport { toBitsString } from '../../utils';\nimport { getVersion } from '../encoding';\n\nconst BYTE = \"byte\";\n\nexport class Utf8Encoder extends Class {\n constructor() {\n super();\n\n this.initProperties();\n\n this.mode = DataModeInstances[this.encodingMode];\n }\n\n initProperties() {\n extend(this, {\n encodingMode: BYTE,\n utfBOM: \"111011111011101110111111\",\n initialModeCountStringLength: 20,\n ranges: [128, 2048, 65536, 2097152, 67108864]\n });\n }\n\n getEncodingResult(inputString, errorCorrectionLevel) {\n let data = this.encode(inputString),\n dataCodewordsCount = this.getDataCodewordsCount(data),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = this.mode.getModeCountString(data.length / 8, version) + data;\n\n return new EncodingResult(dataString, version);\n }\n\n getDataCodewordsCount(data) {\n let dataLength = data.length,\n dataCodewordsCount = Math.ceil((this.initialModeCountStringLength + dataLength) / 8);\n\n return dataCodewordsCount;\n }\n\n encode(str) {\n let result = this.utfBOM;\n\n for (let i = 0; i < str.length; i++) {\n result += this.encodeCharacter(str.charCodeAt(i));\n }\n\n return result;\n }\n\n encodeCharacter(code) {\n let bytesCount = this.getBytesCount(code),\n bc = bytesCount - 1,\n result = \"\";\n\n if (bytesCount === 1) {\n result = toBitsString(code, 8);\n } else {\n let significantOnes = 8 - bytesCount;\n\n for (let i = 0; i < bc; i++) {\n result = toBitsString(code >> (i * 6) & 63 | 128, 8) + result;\n }\n\n result = ((code >> bc * 6) | ((255 >> significantOnes) << significantOnes)).toString(2) + result;\n }\n\n return result;\n }\n\n getBytesCount(code) {\n let ranges = this.ranges;\n\n for (let i = 0; i < ranges.length; i++) {\n if (code < ranges[i]) {\n return i + 1;\n }\n }\n }\n}\n","export const VersionsCodewordsInformation = [{\n L: {\n groups: [\n [1, 19]\n ],\n totalDataCodewords: 19,\n errorCodewordsPerBlock: 7\n },\n M: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 10\n },\n Q: {\n groups: [\n [1, 13]\n ],\n totalDataCodewords: 13,\n errorCodewordsPerBlock: 13\n },\n H: {\n groups: [\n [1, 9]\n ],\n totalDataCodewords: 9,\n errorCodewordsPerBlock: 17\n }\n}, {\n L: {\n groups: [\n [1, 34]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 10\n },\n M: {\n groups: [\n [1, 28]\n ],\n totalDataCodewords: 28,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [1, 22]\n ],\n totalDataCodewords: 22,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [1, 55]\n ],\n totalDataCodewords: 55,\n errorCodewordsPerBlock: 15\n },\n M: {\n groups: [\n [1, 44]\n ],\n totalDataCodewords: 44,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [2, 17]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 13]\n ],\n totalDataCodewords: 26,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [1, 80]\n ],\n totalDataCodewords: 80,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [2, 32]\n ],\n totalDataCodewords: 64,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 24]\n ],\n totalDataCodewords: 48,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [4, 9]\n ],\n totalDataCodewords: 36,\n errorCodewordsPerBlock: 16\n }\n}, {\n L: {\n groups: [\n [1, 108]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [2, 43]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [2, 15],\n [2, 16]\n ],\n totalDataCodewords: 62,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 11],\n [2, 12]\n ],\n totalDataCodewords: 46,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [2, 68]\n ],\n totalDataCodewords: 136,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 27]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [4, 19]\n ],\n totalDataCodewords: 76,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [4, 15]\n ],\n totalDataCodewords: 60,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [2, 78]\n ],\n totalDataCodewords: 156,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [4, 31]\n ],\n totalDataCodewords: 124,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 14],\n [4, 15]\n ],\n totalDataCodewords: 88,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [4, 13],\n [1, 14]\n ],\n totalDataCodewords: 66,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 97]\n ],\n totalDataCodewords: 194,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [2, 38],\n [2, 39]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 18],\n [2, 19]\n ],\n totalDataCodewords: 110,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [4, 14],\n [2, 15]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 116]\n ],\n totalDataCodewords: 232,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 36],\n [2, 37]\n ],\n totalDataCodewords: 182,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 16],\n [4, 17]\n ],\n totalDataCodewords: 132,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [4, 12],\n [4, 13]\n ],\n totalDataCodewords: 100,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 68],\n [2, 69]\n ],\n totalDataCodewords: 274,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 43],\n [1, 44]\n ],\n totalDataCodewords: 216,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [6, 19],\n [2, 20]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [6, 15],\n [2, 16]\n ],\n totalDataCodewords: 122,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 81]\n ],\n totalDataCodewords: 324,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [1, 50],\n [4, 51]\n ],\n totalDataCodewords: 254,\n errorCodewordsPerBlock: 30\n },\n Q: {\n groups: [\n [4, 22],\n [4, 23]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [3, 12],\n [8, 13]\n ],\n totalDataCodewords: 140,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 92],\n [2, 93]\n ],\n totalDataCodewords: 370,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [6, 36],\n [2, 37]\n ],\n totalDataCodewords: 290,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 20],\n [6, 21]\n ],\n totalDataCodewords: 206,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [7, 14],\n [4, 15]\n ],\n totalDataCodewords: 158,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 107]\n ],\n totalDataCodewords: 428,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 37],\n [1, 38]\n ],\n totalDataCodewords: 334,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [8, 20],\n [4, 21]\n ],\n totalDataCodewords: 244,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [12, 11],\n [4, 12]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [3, 115],\n [1, 116]\n ],\n totalDataCodewords: 461,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 40],\n [5, 41]\n ],\n totalDataCodewords: 365,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [11, 16],\n [5, 17]\n ],\n totalDataCodewords: 261,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [11, 12],\n [5, 13]\n ],\n totalDataCodewords: 197,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 87],\n [1, 88]\n ],\n totalDataCodewords: 523,\n errorCodewordsPerBlock: 22\n },\n M: {\n groups: [\n [5, 41],\n [5, 42]\n ],\n totalDataCodewords: 415,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [5, 24],\n [7, 25]\n ],\n totalDataCodewords: 295,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 12],\n [7, 13]\n ],\n totalDataCodewords: 223,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 98],\n [1, 99]\n ],\n totalDataCodewords: 589,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [7, 45],\n [3, 46]\n ],\n totalDataCodewords: 453,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 19],\n [2, 20]\n ],\n totalDataCodewords: 325,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [3, 15],\n [13, 16]\n ],\n totalDataCodewords: 253,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [1, 107],\n [5, 108]\n ],\n totalDataCodewords: 647,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [10, 46],\n [1, 47]\n ],\n totalDataCodewords: 507,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 22],\n [15, 23]\n ],\n totalDataCodewords: 367,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [17, 15]\n ],\n totalDataCodewords: 283,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [5, 120],\n [1, 121]\n ],\n totalDataCodewords: 721,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [9, 43],\n [4, 44]\n ],\n totalDataCodewords: 563,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [1, 23]\n ],\n totalDataCodewords: 397,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [19, 15]\n ],\n totalDataCodewords: 313,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [3, 113],\n [4, 114]\n ],\n totalDataCodewords: 795,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 44],\n [11, 45]\n ],\n totalDataCodewords: 627,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 21],\n [4, 22]\n ],\n totalDataCodewords: 445,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [9, 13],\n [16, 14]\n ],\n totalDataCodewords: 341,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [3, 107],\n [5, 108]\n ],\n totalDataCodewords: 861,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 41],\n [13, 42]\n ],\n totalDataCodewords: 669,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [15, 24],\n [5, 25]\n ],\n totalDataCodewords: 485,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [15, 15],\n [10, 16]\n ],\n totalDataCodewords: 385,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 116],\n [4, 117]\n ],\n totalDataCodewords: 932,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 42]\n ],\n totalDataCodewords: 714,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [6, 23]\n ],\n totalDataCodewords: 512,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [19, 16],\n [6, 17]\n ],\n totalDataCodewords: 406,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [2, 111],\n [7, 112]\n ],\n totalDataCodewords: 1006,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 46]\n ],\n totalDataCodewords: 782,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [16, 25]\n ],\n totalDataCodewords: 568,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [34, 13]\n ],\n totalDataCodewords: 442,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [4, 121],\n [5, 122]\n ],\n totalDataCodewords: 1094,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 47],\n [14, 48]\n ],\n totalDataCodewords: 860,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [14, 25]\n ],\n totalDataCodewords: 614,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [16, 15],\n [14, 16]\n ],\n totalDataCodewords: 464,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 117],\n [4, 118]\n ],\n totalDataCodewords: 1174,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 45],\n [14, 46]\n ],\n totalDataCodewords: 914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [16, 25]\n ],\n totalDataCodewords: 664,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [30, 16],\n [2, 17]\n ],\n totalDataCodewords: 514,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 106],\n [4, 107]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 47],\n [13, 48]\n ],\n totalDataCodewords: 1000,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [22, 25]\n ],\n totalDataCodewords: 718,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [13, 16]\n ],\n totalDataCodewords: 538,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [10, 114],\n [2, 115]\n ],\n totalDataCodewords: 1370,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [19, 46],\n [4, 47]\n ],\n totalDataCodewords: 1062,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [28, 22],\n [6, 23]\n ],\n totalDataCodewords: 754,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [33, 16],\n [4, 17]\n ],\n totalDataCodewords: 596,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 122],\n [4, 123]\n ],\n totalDataCodewords: 1468,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [22, 45],\n [3, 46]\n ],\n totalDataCodewords: 1128,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [8, 23],\n [26, 24]\n ],\n totalDataCodewords: 808,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [12, 15],\n [28, 16]\n ],\n totalDataCodewords: 628,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [3, 117],\n [10, 118]\n ],\n totalDataCodewords: 1531,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 45],\n [23, 46]\n ],\n totalDataCodewords: 1193,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [4, 24],\n [31, 25]\n ],\n totalDataCodewords: 871,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [31, 16]\n ],\n totalDataCodewords: 661,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [7, 116],\n [7, 117]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [21, 45],\n [7, 46]\n ],\n totalDataCodewords: 1267,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 23],\n [37, 24]\n ],\n totalDataCodewords: 911,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [26, 16]\n ],\n totalDataCodewords: 701,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [5, 115],\n [10, 116]\n ],\n totalDataCodewords: 1735,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [19, 47],\n [10, 48]\n ],\n totalDataCodewords: 1373,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 24],\n [25, 25]\n ],\n totalDataCodewords: 985,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [25, 16]\n ],\n totalDataCodewords: 745,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [3, 116]\n ],\n totalDataCodewords: 1843,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [2, 46],\n [29, 47]\n ],\n totalDataCodewords: 1455,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [42, 24],\n [1, 25]\n ],\n totalDataCodewords: 1033,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [28, 16]\n ],\n totalDataCodewords: 793,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115]\n ],\n totalDataCodewords: 1955,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [10, 46],\n [23, 47]\n ],\n totalDataCodewords: 1541,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [10, 24],\n [35, 25]\n ],\n totalDataCodewords: 1115,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [35, 16]\n ],\n totalDataCodewords: 845,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115],\n [1, 116]\n ],\n totalDataCodewords: 2071,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [21, 47]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [29, 24],\n [19, 25]\n ],\n totalDataCodewords: 1171,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [46, 16]\n ],\n totalDataCodewords: 901,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [6, 116]\n ],\n totalDataCodewords: 2191,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [23, 47]\n ],\n totalDataCodewords: 1725,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [44, 24],\n [7, 25]\n ],\n totalDataCodewords: 1231,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [59, 16],\n [1, 17]\n ],\n totalDataCodewords: 961,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [12, 121],\n [7, 122]\n ],\n totalDataCodewords: 2306,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [12, 47],\n [26, 48]\n ],\n totalDataCodewords: 1812,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [39, 24],\n [14, 25]\n ],\n totalDataCodewords: 1286,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [41, 16]\n ],\n totalDataCodewords: 986,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 121],\n [14, 122]\n ],\n totalDataCodewords: 2434,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 47],\n [34, 48]\n ],\n totalDataCodewords: 1914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [46, 24],\n [10, 25]\n ],\n totalDataCodewords: 1354,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [2, 15],\n [64, 16]\n ],\n totalDataCodewords: 1054,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 122],\n [4, 123]\n ],\n totalDataCodewords: 2566,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [29, 46],\n [14, 47]\n ],\n totalDataCodewords: 1992,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [49, 24],\n [10, 25]\n ],\n totalDataCodewords: 1426,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [24, 15],\n [46, 16]\n ],\n totalDataCodewords: 1096,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [4, 122],\n [18, 123]\n ],\n totalDataCodewords: 2702,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [13, 46],\n [32, 47]\n ],\n totalDataCodewords: 2102,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [48, 24],\n [14, 25]\n ],\n totalDataCodewords: 1502,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [42, 15],\n [32, 16]\n ],\n totalDataCodewords: 1142,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [20, 117],\n [4, 118]\n ],\n totalDataCodewords: 2812,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [40, 47],\n [7, 48]\n ],\n totalDataCodewords: 2216,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [43, 24],\n [22, 25]\n ],\n totalDataCodewords: 1582,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [10, 15],\n [67, 16]\n ],\n totalDataCodewords: 1222,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [19, 118],\n [6, 119]\n ],\n totalDataCodewords: 2956,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [18, 47],\n [31, 48]\n ],\n totalDataCodewords: 2334,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [34, 24],\n [34, 25]\n ],\n totalDataCodewords: 1666,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [20, 15],\n [61, 16]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 30\n }\n}];\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n addClass,\n setDefaultOptions,\n deepExtend,\n defaultErrorHandler\n} from '../common';\n\nimport { Box } from '../core';\nimport { encodeData } from './encodings/encoding';\nimport { extend } from './utils';\n\nconst round = Math.round;\nconst crossPattern = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [3, 0], [2, 0], [2, -1], [1, -1], [1, 0]];\nconst squarePattern = [[0, 1], [1, 1], [1, 0]];\n\nconst QRCodeDefaults = {\n DEFAULT_SIZE: 200,\n QUIET_ZONE_LENGTH: 4,\n DEFAULT_ERROR_CORRECTION_LEVEL: \"L\",\n DEFAULT_BACKGROUND: \"#fff\",\n DEFAULT_DARK_MODULE_COLOR: \"#000\",\n MIN_BASE_UNIT_SIZE: 1,\n DEFAULT_LOGO_SIZE: 7\n};\n\nclass QRCode extends Class {\n constructor(element, options, errorHandler = defaultErrorHandler) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.wrapper = this.element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n\n this.setOptions(options);\n }\n\n destroy() {\n this._destroySurface();\n }\n\n _initElement() {\n addClass(this.element, \"k-qrcode\");\n }\n\n _initSurface() {\n const { options, surface } = this;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _createSurface() {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = \"relative\";\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n redraw() {\n let size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size,\n height: size\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n getSize() {\n const element = this.element;\n const elementWidth = element.clientWidth;\n const elementHeight = element.clientHeight;\n const size = { width: 0, height: 0 };\n\n if (elementWidth > 0) {\n size.width = elementWidth;\n }\n\n if (elementHeight) {\n size.height = elementHeight;\n }\n\n return size;\n }\n\n _resize() {\n this.redraw();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n exportVisual() {\n return this._render();\n }\n\n _render() {\n let value = this._value,\n baseUnit,\n border = this.options.border || {},\n padding = this.options.padding || 0,\n borderWidth = border.width || 0,\n quietZoneSize,\n matrix,\n size,\n dataSize,\n contentSize;\n\n border.width = borderWidth;\n\n let visual = new draw.Group();\n\n try {\n if (value) {\n matrix = encodeData(value, this.options.errorCorrection, this.options.encoding);\n size = this._getSize();\n contentSize = size - 2 * (borderWidth + padding);\n baseUnit = this._calculateBaseUnit(contentSize, matrix.length);\n dataSize = matrix.length * baseUnit;\n quietZoneSize = borderWidth + padding + (contentSize - dataSize) / 2;\n\n visual.append(this._renderBackground(size, border));\n visual.append(this._renderMatrix(matrix, baseUnit, quietZoneSize));\n\n if (this._hasCustomLogo()) {\n visual.append(this._renderLogo(size, baseUnit));\n } else if (this._isSwiss()) {\n visual.append(this._renderSwissCode(size, baseUnit));\n }\n }\n } catch (error) {\n this.onError(error);\n }\n\n return visual;\n }\n\n _renderLogo(qrSize, baseUnit) {\n let image;\n let imageRect;\n let center = round(qrSize / 2);\n let logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n let logoUrl = this.options.overlay.imageUrl;\n let position = {\n x: center - logoSize.width / 2,\n y: center - logoSize.height / 2\n };\n\n imageRect = new geom.Rect(\n new geom.Point(position.x, position.y),\n new geom.Size(logoSize.width, logoSize.height)\n );\n\n image = new draw.Image(logoUrl, imageRect);\n\n return image;\n }\n\n _renderSwissCode(qrSize, baseUnit) {\n let logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n logoSize = Math.max(logoSize.width, logoSize.height);\n let crossSize = logoSize / 4;\n let crossOffset = crossSize / 2;\n let center = qrSize / 2;\n let start = {};\n let visual = new draw.Group();\n\n start.x = start.y = Math.ceil(center - baseUnit - logoSize / 2);\n visual.append(this._renderShape(start, Math.ceil(logoSize + baseUnit * 2), squarePattern, \"#fff\"));\n\n start.x = start.y = center - logoSize / 2;\n visual.append(this._renderShape(start, logoSize, squarePattern, this.options.color));\n\n start.x = center + crossOffset - logoSize / 2;\n start.y = center + crossOffset + crossSize - logoSize / 2;\n visual.append(this._renderShape(start, crossSize, crossPattern, \"#fff\"));\n\n return visual;\n }\n\n _renderShape(start, step, pattern, color) {\n let path = new draw.MultiPath({\n fill: {\n color: color\n },\n stroke: null\n });\n\n path.moveTo(start.x, start.y);\n\n for (let i = 0; i < pattern.length; i++) {\n path.lineTo(start.x + step * pattern[i][0], start.y + step * pattern[i][1]);\n }\n\n path.close();\n\n return path;\n }\n\n _getSize() {\n let size;\n\n if (this.options.size) {\n size = parseInt(this.options.size, 10);\n } else {\n const element = this.element;\n const min = Math.min(element.clientWidth, element.clientHeight);\n\n if (min > 0) {\n size = min;\n } else {\n size = QRCodeDefaults.DEFAULT_SIZE;\n }\n }\n\n return size;\n }\n\n _calculateBaseUnit(size, matrixSize) {\n let baseUnit = Math.floor(size / matrixSize);\n\n if (baseUnit < QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n const minSize = Math.ceil(matrixSize * QRCodeDefaults.MIN_BASE_UNIT_SIZE);\n this.onError(new Error(\n `Insufficient size for QR Code: the current size is ${size}px and the minimum size is ${minSize}px.`\n ));\n } else if (baseUnit * matrixSize >= size &&\n baseUnit - 1 >= QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n baseUnit--;\n }\n\n return baseUnit;\n }\n\n _renderMatrix(matrix, baseUnit, quietZoneSize) {\n let path = new draw.MultiPath({\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n for (let row = 0; row < matrix.length; row++) {\n let y = quietZoneSize + row * baseUnit;\n let column = 0;\n\n while (column < matrix.length) {\n while (matrix[row][column] === 0 && column < matrix.length) {\n column++;\n }\n\n if (column < matrix.length) {\n let x = column;\n while (matrix[row][column] === 1) {\n column++;\n }\n\n let x1 = round(quietZoneSize + x * baseUnit);\n let y1 = round(y);\n let x2 = round(quietZoneSize + column * baseUnit);\n let y2 = round(y + baseUnit);\n\n path.moveTo(x1, y1)\n .lineTo(x1, y2)\n .lineTo(x2, y2)\n .lineTo(x2, y1)\n .close();\n }\n }\n }\n\n return path;\n }\n\n _renderBackground(size, border) {\n const box = new Box(0, 0, size, size).unpad(border.width / 2);\n const background = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: this.options.background\n },\n stroke: {\n color: border.color,\n width: border.width\n }\n });\n\n return background;\n }\n\n setOptions(options) {\n let newOptions = options || {};\n this.options = extend(this.options, newOptions);\n\n if (options.value !== undefined) {\n this._value = String(this.options.value);\n }\n\n this.redraw();\n }\n\n value(value) {\n if (value === undefined) {\n return this._value;\n }\n\n this._value = String(value);\n\n this.redraw();\n }\n\n _hasCustomLogo() {\n return Boolean(this.options.overlay.imageUrl);\n }\n\n _isSwiss() {\n return this.options.overlay.type === \"swiss\";\n }\n\n _getLogoSize(defautLogoSize) {\n let width = this.options.overlay.width;\n let height = this.options.overlay.height;\n\n if (!width && !height) {\n width = height = defautLogoSize;\n } else if (width && !height) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n return {\n width: width,\n height: height\n };\n }\n}\n\nsetDefaultOptions(QRCode, {\n name: \"QRCode\",\n renderAs: \"svg\",\n encoding: \"ISO_8859_1\",\n value: \"\",\n errorCorrection: QRCodeDefaults.DEFAULT_ERROR_CORRECTION_LEVEL,\n background: QRCodeDefaults.DEFAULT_BACKGROUND,\n color: QRCodeDefaults.DEFAULT_DARK_MODULE_COLOR,\n size: \"\",\n padding: 0,\n border: {\n color: \"\",\n width: 0\n },\n overlay: {\n type: \"image\",\n imageUrl: \"\",\n width: 0,\n height: 0\n }\n});\n\nexport default QRCode;\n","import { encodeData } from './encodings/encoding';\n\nconst ISO = 'ISO_8859_1';\n\nfunction qrcodeValidator(encoding = ISO) {\n return function(value) {\n try {\n encodeData(value, 'L', encoding);\n } catch (error) {\n return {\n valid: false,\n error\n };\n }\n\n return {\n valid: true\n };\n };\n}\n\nexport default qrcodeValidator;\n","const BAR_GAP = 1.5;\nconst BAR_SPACING = 0.4;\nconst BLACK = '#000';\nconst SANS = 'Arial, Helvetica, sans-serif';\nconst SANS11 = \"11px \" + SANS;\nconst SANS12 = '12px ' + SANS;\nconst SANS16 = '16px ' + SANS;\nconst TRANSPARENT = 'transparent';\nconst WHITE = '#fff';\n\nconst notes = () => ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n visible: true\n});\n\nconst axisDefaults = () => ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n});\n\nconst areaSeries = () => ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n});\n\nconst rangeAreaSeries = () => ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n});\n\nconst barSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst boxPlotSeries = () => ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n }\n});\n\nconst bubbleSeries = () => ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n opacity: 0.6\n});\n\nconst bulletSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n }\n});\n\nconst candlestickSeries = () => ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n spacing: 0.3\n});\n\nconst columnSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst donutSeries = () => ({\n margin: 1\n});\n\nconst lineSeries = () => ({\n width: 2\n});\n\nconst ohlcSeries = () => ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n spacing: 0.3\n});\n\nconst radarAreaSeries = () => ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.5\n});\n\nconst radarLineSeries = () => ({\n markers: {\n visible: false\n },\n width: 2\n});\n\nconst rangeBarSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst rangeColumnSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst scatterLineSeries = () => ({\n width: 1\n});\n\nconst waterfallSeries = () => ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n spacing: BAR_SPACING\n});\n\nconst pieSeries = () => ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n});\n\nconst funnelSeries = () => ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n});\n\nconst heatmapSeries = () => ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n }\n});\n\nconst seriesDefaults = (options) => ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries()\n});\n\nconst title = () => ({\n font: SANS16\n});\n\nconst legend = () => ({\n labels: {\n font: SANS12\n }\n});\n\nexport const baseTheme = (options = {}) => ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n legend: legend()\n});\n\n","/**\n * @hidden\n */\nexport const isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\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","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","/**\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 { 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","/**\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 { 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, 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 { 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 { 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';\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 { 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","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","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 { 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","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 } 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 { 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","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, 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","/**\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","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nclass ArcNode extends PathNode {\n renderPoints(ctx) {\n const path = this.srcElement.toPath();\n renderPath(ctx, path);\n }\n}\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nclass CircleNode extends PathNode {\n renderPoints(ctx) {\n const { center, radius } = this.srcElement.geometry();\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n }\n}\n\nexport default CircleNode;\n","import Surface from './surface';\nimport { transform } from '../geometry';\nimport Group from '../shapes/group';\n\nexport default function exportImage(group, options) {\n const defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n let exportRoot = group;\n const bbox = group.clippedBBox();\n\n\n if (bbox) {\n const origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n const size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n const surfaceOptions = Object.assign(defaults, options);\n\n const container = document.createElement(\"div\");\n const style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n const surface = new Surface(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n const promise = surface.image();\n const destroy = () => {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n}","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nclass GroupNode extends traversable(Node, \"childNodes\") {\n renderTo(ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n const childNodes = this.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n let child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n }\n}\n\nexport default GroupNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nclass ImageNode extends PathNode {\n constructor(srcElement, cors) {\n super(srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n const img = this.img = new Image();\n\n if (cors && !(/^data:/i.test(srcElement.src()))) {\n img.crossOrigin = cors;\n }\n\n img.src = srcElement.src();\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n renderTo(ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n }\n\n optionsChange(e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n super.optionsChange(e);\n }\n }\n\n onLoad() {\n this.loading.resolve();\n this.invalidate();\n }\n\n onError() {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n }\n\n drawImage(ctx) {\n const rect = this.srcElement.rect();\n const topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n }\n}\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nclass MultiPathNode extends PathNode {\n renderPoints(ctx) {\n const paths = this.srcElement.paths;\n for (let i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n }\n}\n\nexport default MultiPathNode;\n","const NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\nimport { defined } from '../util';\n\nclass Node extends BaseNode {\n constructor(srcElement) {\n super(srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n initClip() {\n const clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n }\n\n clear() {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n super.clear();\n }\n\n clearClip() {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n }\n\n setClip(ctx) {\n if (this.clip) {\n ctx.beginPath();\n renderPath(ctx, this.clip);\n ctx.clip();\n }\n }\n\n optionsChange(e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n super.optionsChange(e);\n }\n\n setTransform(ctx) {\n if (this.srcElement) {\n const transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n }\n\n loadElements(elements, pos, cors) {\n for (let i = 0; i < elements.length; i++) {\n let srcElement = elements[i];\n let children = srcElement.children;\n\n let childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this.insertAt(childNode, pos);\n } else {\n this.append(childNode);\n }\n }\n }\n\n load(elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n }\n\n setOpacity(ctx) {\n if (this.srcElement) {\n const opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n }\n\n globalAlpha(ctx, value) {\n let opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n }\n\n visible() {\n const src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n }\n}\n\nexport default Node;","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n for (let idx = 0; idx < stops.length; idx++) {\n let stop = stops[idx];\n let color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nclass PathNode extends Node {\n\n renderTo(ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n }\n\n setFill(ctx) {\n const fill = this.srcElement.options.fill;\n let hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n }\n\n setGradientFill(ctx, fill) {\n const bbox = this.srcElement.rawBBox();\n let gradient;\n\n if (fill instanceof LinearGradient) {\n let start = fill.start();\n let end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n let center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n }\n\n setStroke(ctx) {\n const stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n }\n\n dashType() {\n const stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n }\n\n setLineDash(ctx) {\n const dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n const dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n }\n\n setLineCap(ctx) {\n const dashType = this.dashType();\n const stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n }\n\n setLineJoin(ctx) {\n const stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n }\n\n renderPoints(ctx, path) {\n renderPath(ctx, path);\n }\n}\n\nexport default PathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nclass RectNode extends PathNode {\n renderPoints(ctx) {\n const geometry = this.srcElement.geometry();\n const [ rx, ry ] = geometry.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n const { origin, size } = geometry;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n super.renderPoints(ctx, Path.fromRect(geometry));\n }\n }\n}\n\nexport default RectNode;\n","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nconst FRAME_DELAY = 1000 / 60;\n\nclass RootNode extends traversable(GroupNode, \"childNodes\") {\n constructor(canvas, size) {\n super();\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n const invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(() => {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n destroy() {\n super.destroy();\n this.canvas = null;\n this.ctx = null;\n }\n\n load(elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n }\n\n _rescale(scale) {\n const { canvas, size } = this;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n }\n\n _devicePixelRatio() {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n }\n\n _invalidate(options) {\n if (!this.ctx) {\n return;\n }\n\n const fixedScale = options && options.fixedScale;\n const scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n }\n}\n\nexport default RootNode;\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nclass Surface extends BaseSurface {\n get type() {\n return \"canvas\";\n }\n\n constructor(element, options) {\n super(element, options);\n\n this.element.innerHTML = this._template(this);\n\n const canvas = this.element.firstElementChild;\n const size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n destroy() {\n super.destroy();\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n draw(element) {\n super.draw(element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n }\n\n clear() {\n super.clear();\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n }\n\n eventTarget(e) {\n if (this._searchTree) {\n const point = this._surfacePoint(e);\n const shape = this._searchTree.pointShape(point);\n return shape;\n }\n }\n\n image() {\n const { _root: root, _rootElement: rootElement } = this;\n const loadingStates = [];\n\n root.traverse((childNode) => {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n const promise = createPromise();\n const resolveDataURL = () => {\n root._invalidate({ fixedScale: true });\n\n try {\n const data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n }\n\n suspendTracking() {\n super.suspendTracking();\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n }\n\n resumeTracking() {\n super.resumeTracking();\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n const childNodes = this._root.childNodes;\n const rootElements = [];\n for (let idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n }\n\n _resize() {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n }\n\n _template() {\n return \"\";\n }\n\n _enableTracking() {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n super._enableTracking();\n }\n\n _trackMouse(e) {\n if (this._suspendedTracking) {\n return;\n }\n\n const shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n const currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n }\n}\n\nexport default Surface;\n","import { defined } from '../util';\n\nclass SurfaceCursor {\n\n constructor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n }\n\n clear() {\n this._resetCursor();\n }\n\n destroy() {\n this._resetCursor();\n delete this.element;\n }\n\n _mouseenter(e) {\n const cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n }\n\n _mouseleave() {\n this._resetCursor();\n }\n\n _shapeCursor(e) {\n let shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n }\n\n _getCursor() {\n if (this.element) {\n return this.element.style.cursor;\n }\n }\n\n _setCursor(cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n }\n\n _resetCursor() {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n }\n}\n\nexport default SurfaceCursor;\n\n","import PathNode from './path-node';\n\nclass TextNode extends PathNode {\n renderTo(ctx) {\n const text = this.srcElement;\n const pos = text.position();\n const size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n }\n}\n\n\nexport default TextNode;\n","\nexport default function renderPath(ctx, path) {\n const segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n let segment = segments[0];\n let anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (let i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n let prevSeg = segments[i - 1];\n let prevOut = prevSeg.controlOut();\n let controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}","let animationFrameProxy = (callback) => {\n const wnd = typeof window !== \"undefined\" ? window : {};\n const animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n animationFrameProxy = callback => animationFrame.call(wnd, callback);\n animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\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() { return this.toBytes().toHex(); }\n\n toBytes() { return this; }\n\n toCss() { return \"#\" + this.toHex(); }\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() {\n return hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\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\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 = /^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","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 = {};\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 = {};\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","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n let lastExecTime = 0;\n let timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n const throttled = function() {\n const elapsed = now() - lastExecTime;\n const args = arguments;\n\n const exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\n };\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n}\n","import { Class } from '../common';\n\nclass BaseNode extends Class {\n constructor(srcElement) {\n super();\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n destroy() {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n const children = this.childNodes;\n for (let i = 0; i < children.length; i++) {\n this.childNodes[i].destroy();\n }\n\n this.parent = null;\n }\n\n load() {}\n\n observe() {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n }\n\n append(node) {\n this.childNodes.push(node);\n node.parent = this;\n }\n\n insertAt(node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n }\n\n remove(index, count) {\n const end = index + count;\n for (let i = index; i < end; i++) {\n this.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n }\n\n removeSelf() {\n this.clear();\n this.destroy();\n }\n\n clear() {\n this.remove(0, this.childNodes.length);\n }\n\n invalidate() {\n if (this.parent) {\n this.parent.invalidate();\n }\n }\n\n geometryChange() {\n this.invalidate();\n }\n\n optionsChange() {\n this.invalidate();\n }\n\n childrenChange(e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n }\n}\n\nexport default BaseNode;","const DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nconst SOLID = \"solid\";\nconst BUTT = \"butt\";\n\nexport { DASH_ARRAYS, SOLID, BUTT };","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 Class from './class';\n\nclass Observable extends Class {\n constructor() {\n super();\n\n this._events = {};\n }\n\n bind(eventName, handlers, one) {\n const eventNames = getArray(eventName);\n const handlersIsFunction = isFunction(handlers);\n const length = eventNames.length;\n\n if (handlers === undefined) {\n for (let field in eventName) {\n this.bind(field, eventName[field]);\n }\n return this;\n }\n\n for (let idx = 0; idx < length; idx++) {\n const eventName = eventNames[idx];\n\n let handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n const original = handler;\n handler = () => { // eslint-disable-line no-loop-func\n this.unbind(eventName, handler);\n original.apply(this, arguments);\n };\n handler.original = original;\n }\n let events = this._events[eventName] = this._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return this;\n }\n\n one(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n }\n\n first(eventName, handlers) {\n const eventNames = getArray(eventName);\n const handlersIsFunction = isFunction(handlers);\n\n for (let idx = 0, length = eventNames.length; idx < length; idx++) {\n const eventName = eventNames[idx];\n\n const handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n const events = this._events[eventName] = this._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n }\n\n trigger(eventName, e = {}) {\n let events = this._events[eventName];\n\n if (events) {\n const length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (let idx = 0; idx < length; idx++) {\n events[idx].call(this, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n }\n\n unbind(eventName, handler) {\n const events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (let idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n this._events[eventName] = [];\n }\n }\n\n return this;\n }\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nconst events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nclass Surface extends Observable {\n constructor(element, options) {\n super();\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n draw(element) {\n this._visual.children.push(element);\n }\n\n clear() {\n this._visual.children = [];\n }\n\n destroy() {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n }\n\n eventTarget(e) {\n let domNode = eventElement(e);\n let node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n }\n\n exportVisual() {\n return this._visual;\n }\n\n getSize() {\n return elementSize(this.element);\n }\n\n currentSize(size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n }\n\n setSize(size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n }\n\n resize(force) {\n const size = this.getSize();\n const currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n }\n\n size(value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n }\n\n suspendTracking() {\n this._suspendedTracking = true;\n }\n\n resumeTracking() {\n this._suspendedTracking = false;\n }\n\n _enableTracking() {}\n\n _resize() {}\n\n _handler(eventName) {\n return (e) => {\n const node = this.eventTarget(e);\n if (node && !this._suspendedTracking) {\n this.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n }\n\n _elementOffset() {\n const element = this.element;\n const padding = elementPadding(element);\n const { left, top } = elementOffset(element);\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n }\n\n _surfacePoint(e) {\n const offset = this._elementOffset();\n const coord = eventCoordinates(e);\n const x = coord.x - offset.left;\n const y = coord.y - offset.top;\n\n const inverseTransform = elementScale(this.element).invert();\n const point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n }\n}\n\nexport default Surface;\n","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\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 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}","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 };","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}","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}","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 { 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 { 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}","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}","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 { 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 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}","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 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 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}","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 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 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 { 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 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 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;","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","/* 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 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 = new window.XMLSerializer().serializeToString(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) {\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","export default function template() {\n throw new Error(\"Template implementation missing.\");\n}\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';\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 { 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;","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 { 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","/* 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 { 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 { 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\";\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 bloburl = URL.createObjectURL(blob);\n _load(bloburl);\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 it's 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","/* 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\nvar TEXT_RENDERING_MODE = PDF.TEXT_RENDERING_MODE;\n\nvar 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\nvar LINE_CAP = {\n butt : 0,\n round : 1,\n square : 2\n};\n\nvar 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\");\n\n PDF.clearImageCache();\n\n group.traverse(function(element){\n dispatch({\n Image: function(element) {\n var url = element.src();\n if (imgDPI) {\n var box = element.bbox().size;\n var prev = images[url];\n box = {\n width: Math.ceil(box.width * imgDPI / 72),\n height: Math.ceil(box.height * imgDPI / 72)\n };\n if (prev) {\n box.width = Math.max(prev.width, box.width);\n box.height = Math.max(prev.height, box.height);\n }\n images[url] = box;\n } else {\n images[url] = null;\n }\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","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nclass QuadNode extends QuadRoot {\n constructor(rect) {\n super();\n this.children = [];\n this.rect = rect;\n }\n\n inBounds(rect) {\n const nodeRect = this.rect;\n const nodeBottomRight = nodeRect.bottomRight();\n const bottomRight = rect.bottomRight();\n const inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n }\n\n pointShapes(point) {\n const children = this.children;\n const length = children.length;\n const result = super.pointShapes(point);\n for (let idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n }\n\n insert(shape, bbox) {\n const children = this.children;\n let inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n }\n\n _initChildren() {\n const { rect, children } = this;\n const center = rect.center();\n const halfWidth = rect.width() / 2;\n const halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n }\n}\n\nexport default QuadNode;","import { Class } from '../common';\n\nclass QuadRoot extends Class {\n constructor() {\n super();\n\n this.shapes = [];\n }\n\n _add(shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n }\n\n pointShapes(point) {\n const shapes = this.shapes;\n const length = shapes.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n }\n\n insert(shape, bbox) {\n this._add(shape, bbox);\n }\n\n remove(shape) {\n const shapes = this.shapes;\n const length = shapes.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n }\n}\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nconst ROOT_SIZE = 3000;\nconst LEVEL_STEP = 10000;\nconst MAX_LEVEL = 75;\n\nclass ShapesQuadTree extends Class {\n\n constructor() {\n super();\n\n this.initRoots();\n }\n\n initRoots() {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n }\n\n clear() {\n const rootElements = this.rootElements;\n for (let idx = 0; idx < rootElements.length; idx++) {\n this.remove(rootElements[idx]);\n }\n this.initRoots();\n }\n\n pointShape(point) {\n const sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n let result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (let idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n }\n\n assignZindex(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n let element = elements[idx];\n let zIndex = 0;\n let levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n let parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n }\n\n optionsChange(e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n }\n\n geometryChange(e) {\n this.bboxChange(e.element);\n }\n\n bboxChange(element) {\n if (element.nodeType === \"Group\") {\n for (let idx = 0; idx < element.children.length; idx++) {\n this.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n }\n\n add(elements) {\n const elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n }\n\n childrenChange(e) {\n if (e.action === \"remove\") {\n for (let idx = 0; idx < e.items.length; idx++) {\n this.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n }\n\n _insert(elements) {\n let element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this._insertShape(element);\n }\n }\n }\n\n _insertShape(shape) {\n const bbox = shape.bbox();\n if (bbox) {\n const sectors = this.getSectors(bbox);\n const x = sectors[0][0];\n const y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n const rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n }\n\n remove(element) {\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n const children = element.children;\n for (let idx = 0; idx < children.length; idx++) {\n this.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n }\n\n inRoot(sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n }\n\n getSectors(rect) {\n const bottomRight = rect.bottomRight();\n const bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n const bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n const sectors = [ [], [] ];\n for (let x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (let y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n }\n}\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","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 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 ElementsArray from './elements-array';\n\nclass GeometryElementsArray extends ElementsArray {\n _change() {\n this.geometryChange();\n }\n}\n\nexport default GeometryElementsArray;","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 Node from './node';\n\nclass ClipNode extends Node {\n constructor(srcElement) {\n super();\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n template() {\n return `${ this.renderChildren() }`;\n }\n}\n\nexport default ClipNode;","const SVG_NS = \"http://www.w3.org/2000/svg\";\nconst NONE = \"none\";\n\nexport { SVG_NS, NONE };","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\n\nclass DefinitionNode extends Node {\n constructor() {\n super();\n this.definitionMap = {};\n }\n\n attachTo(domElement) {\n this.element = domElement;\n }\n\n template() {\n return `${ this.renderChildren() }`;\n }\n\n definitionChange(e) {\n const { definitions, action } = e;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n }\n\n createDefinition(type, item) {\n let nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n }\n\n addDefinitions(definitions) {\n for (let field in definitions) {\n this.addDefinition(field, definitions[field]);\n }\n }\n\n addDefinition(type, srcElement) {\n const { element, definitionMap } = this;\n const id = srcElement.id;\n const mapItem = definitionMap[id];\n if (!mapItem) {\n const node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n }\n\n removeDefinitions(definitions) {\n for (let field in definitions) {\n this.removeDefinition(definitions[field]);\n }\n }\n\n removeDefinition(srcElement) {\n const definitionMap = this.definitionMap;\n const id = srcElement.id;\n const mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n }\n}\n\nexport default DefinitionNode;","import RootNode from './root-node';\nimport { Group } from '../shapes';\nimport { transform } from '../geometry';\nimport { SVG_NS } from './constants';\n\nexport default function exportGroup(group) {\n const root = new RootNode({\n skipBaseHref: true\n });\n const bbox = group.clippedBBox();\n let rootGroup = group;\n\n if (bbox) {\n const origin = bbox.getOrigin();\n const exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n\n root.load([ rootGroup ]);\n\n const svg = `${ root.render() }`;\n\n root.destroy();\n\n return svg;\n}","import { createPromise, encodeBase64 } from '../util';\nimport exportGroup from './export-group';\n\nexport default function exportSVG(group, options) {\n let svg = exportGroup(group);\n\n if (!options || !options.raw) {\n svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n }\n\n return createPromise().resolve(svg);\n}\n","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nclass GradientNode extends Node {\n constructor(srcElement) {\n super(srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n loadStops() {\n const stops = this.srcElement.stops;\n const element = this.element;\n\n for (let idx = 0; idx < stops.length; idx++) {\n let stopNode = new GradientStopNode(stops[idx]);\n this.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n }\n\n optionsChange(e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n }\n\n renderCoordinates() {\n return renderAllAttr(this.mapCoordinates());\n }\n\n mapSpace() {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n }\n}\n\nexport default GradientNode;","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nclass GradientStopNode extends Node {\n template() {\n return ``;\n }\n\n renderOffset() {\n return renderAttr(\"offset\", this.srcElement.offset());\n }\n\n mapStyle() {\n const srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n }\n\n optionsChange(e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n }\n}\n\nexport default GradientStopNode;","import GradientNode from './gradient-node';\n\nclass LinearGradientNode extends GradientNode {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n mapCoordinates() {\n const srcElement = this.srcElement;\n const start = srcElement.start();\n const end = srcElement.end();\n const attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n }\n}\n\nexport default LinearGradientNode;","const NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support } from '../common';\nimport { defined } from '../util';\n\nconst TRANSFORM = \"transform\";\nconst DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n}\n\nfunction baseUrl() {\n const base = document.getElementsByTagName(\"base\")[0];\n let href = document.location.href;\n let url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n const hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nclass Node extends BaseNode {\n\n constructor(srcElement, options) {\n super(srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n destroy() {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n super.destroy();\n }\n\n load(elements, pos) {\n for (let i = 0; i < elements.length; i++) {\n const srcElement = elements[i];\n const children = srcElement.children;\n\n const childNode = new NODE_MAP[srcElement.nodeType](srcElement, this.options);\n\n if (defined(pos)) {\n this.insertAt(childNode, pos);\n } else {\n this.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n const element = this.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n }\n\n root() {\n let root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n }\n\n attachTo(domElement, pos) {\n const container = document.createElement(\"div\");\n renderSVG(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n const element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n }\n\n setElement(element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n const nodes = this.childNodes;\n for (let i = 0; i < nodes.length; i++) {\n let childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n }\n\n clear() {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n const children = this.childNodes;\n for (let i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n }\n\n removeSelf() {\n if (this.element) {\n const parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n super.removeSelf();\n }\n\n template() {\n return this.renderChildren();\n }\n\n render() {\n return this.template();\n }\n\n renderChildren() {\n const nodes = this.childNodes;\n let output = \"\";\n\n for (let i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n }\n\n optionsChange(e) {\n const { field, value } = e;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n super.optionsChange(e);\n }\n\n attr(name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n }\n\n allAttr(attrs) {\n for (let i = 0; i < attrs.length; i++) {\n this.attr(attrs[i][0], attrs[i][1]);\n }\n }\n\n css(name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n }\n\n allCss(styles) {\n for (let i = 0; i < styles.length; i++) {\n this.css(styles[i][0], styles[i][1]);\n }\n }\n\n removeAttr(name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n }\n\n mapTransform(transform) {\n const attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n }\n\n renderTransform() {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n }\n\n transformChange(value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n }\n\n mapStyle() {\n const options = this.srcElement.options;\n const style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n }\n\n renderStyle() {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n }\n\n renderOpacity() {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n }\n\n renderId() {\n return renderAttr(\"id\", this.srcElement.options.id);\n }\n\n createDefinitions() {\n const srcElement = this.srcElement;\n const definitions = this.definitions;\n if (srcElement) {\n const options = srcElement.options;\n let hasDefinitions;\n\n for (let field in DefinitionMap) {\n let definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n }\n\n definitionChange(e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n }\n\n updateDefinition(type, value) {\n const definitions = this.definitions;\n const current = definitions[type];\n const attr = DefinitionMap[type];\n const definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n }\n\n clearDefinitions() {\n const definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n }\n\n renderDefinitions() {\n return renderAllAttr(this.mapDefinitions());\n }\n\n mapDefinitions() {\n const definitions = this.definitions;\n const attrs = [];\n\n for (let field in definitions) {\n attrs.push([ DefinitionMap[field], this.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n }\n\n refUrl(id) {\n const skipBaseHref = (this.options || {}).skipBaseHref;\n const baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n const base = skipBaseHref ? '' : baseHref;\n return `url(${ base }#${ id })`;\n }\n\n baseUrl() {\n return baseUrl();\n }\n}\n\nexport default Node;\n","import GradientNode from './gradient-node';\n\nclass RadialGradientNode extends GradientNode {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n mapCoordinates() {\n const srcElement = this.srcElement;\n const center = srcElement.center();\n const radius = srcElement.radius();\n const attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n }\n}\n\nexport default RadialGradientNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nclass RootNode extends Node {\n constructor(options) {\n super();\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n attachTo(domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n }\n\n clear() {\n BaseNode.prototype.clear.call(this);\n }\n\n template() {\n return this.defs.render() + this.renderChildren();\n }\n\n definitionChange(e) {\n this.defs.definitionChange(e);\n }\n}\n\nexport default RootNode;","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n let output = \"\";\n for (let i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? ` ${ name }=\"${ value }\" ` : \"\";\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n let output = \"\";\n for (let i = 0; i < attrs.length; i++) {\n let value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","import { SVG_NS } from '../constants';\n\nlet renderSVG = function(container, svg) {\n container.innerHTML = svg;\n};\n\nif (typeof document !== \"undefined\") {\n const testFragment = \"\";\n const testContainer = document.createElement(\"div\");\n const hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n const parser = new DOMParser();\n const chartDoc = parser.parseFromString(svg, \"text/xml\");\n const importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;","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}","export default function bindEvents(element, events) {\n for (let eventName in events) {\n const eventNames = eventName.trim().split(\" \");\n for (let idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\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}","export default function elementOffset(element) {\n const box = element.getBoundingClientRect();\n\n const documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n const { paddingLeft, paddingTop } = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n}\n","import Matrix from '../geometry/matrix';\n\nconst matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n const match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n const members = match[1].split(',').map(x => parseFloat(x));\n return new Matrix(...members);\n}\n\nfunction transformMatrix(element) {\n const transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n let matrix = transformMatrix(element);\n let parent = element.parentElement;\n while (parent) {\n const parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n const { width, height } = size;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n const size = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size.width, 10),\n height: parseInt(size.height, 10)\n };\n }\n}","export default function elementStyles(element, styles) {\n const result = {};\n const style = window.getComputedStyle(element) || {};\n const stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (let idx = 0; idx < stylesArray.length; idx++) {\n let field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\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 eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","export default function eventElement(e = {}) {\n return e.touch ? e.touch.initialTouch : e.target;\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}","const now = Date.now || function() {\n return new Date().getTime();\n};\n\nexport default now;\n","export default function promiseAll(promises) {\n return Promise.all(promises);\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}","export default function unbindEvents(element, events = {}) {\n for (let name in events) {\n const eventNames = name.trim().split(\" \");\n for (let idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nvar orderedmap = OrderedMap;\n\nexport default orderedmap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (var i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n { return a.childCount == b.childCount ? null : pos }\n\n var childA = a.child(i), childB = b.child(i);\n if (childA == childB) { pos += childA.nodeSize; continue }\n\n if (!childA.sameMarkup(childB)) { return pos }\n\n if (childA.isText && childA.text != childB.text) {\n for (var j = 0; childA.text[j] == childB.text[j]; j++)\n { pos++; }\n return pos\n }\n if (childA.content.size || childB.content.size) {\n var inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null) { return inner }\n }\n pos += childA.nodeSize;\n }\n}\n\nfunction findDiffEnd(a, b, posA, posB) {\n for (var iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n { return iA == iB ? null : {a: posA, b: posB} }\n\n var childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size; posB -= size;\n continue\n }\n\n if (!childA.sameMarkup(childB)) { return {a: posA, b: posB} }\n\n if (childA.isText && childA.text != childB.text) {\n var same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++; posA--; posB--;\n }\n return {a: posA, b: posB}\n }\n if (childA.content.size || childB.content.size) {\n var inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner) { return inner }\n }\n posA -= size; posB -= size;\n }\n}\n\n// ::- A fragment represents a node's collection of child nodes.\n//\n// Like nodes, fragments are persistent data structures, and you\n// should not mutate them or their content. Rather, you create new\n// instances whenever needed. The API tries to make this easy.\nvar Fragment = function Fragment(content, size) {\n this.content = content;\n // :: number\n // The size of the fragment, which is the total of the size of its\n // content nodes.\n this.size = size || 0;\n if (size == null) { for (var i = 0; i < content.length; i++)\n { this.size += content[i].nodeSize; } }\n};\n\nvar prototypeAccessors = { firstChild: { configurable: true },lastChild: { configurable: true },childCount: { configurable: true } };\n\n// :: (number, number, (node: Node, start: number, parent: Node, index: number) → ?bool, ?number)\n// Invoke a callback for all descendant nodes between the given two\n// positions (relative to start of this fragment). Doesn't descend\n// into a node when the callback returns `false`.\nFragment.prototype.nodesBetween = function nodesBetween (from, to, f, nodeStart, parent) {\n if ( nodeStart === void 0 ) nodeStart = 0;\n\n for (var i = 0, pos = 0; pos < to; i++) {\n var child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent, i) !== false && child.content.size) {\n var start = pos + 1;\n child.nodesBetween(Math.max(0, from - start),\n Math.min(child.content.size, to - start),\n f, nodeStart + start);\n }\n pos = end;\n }\n};\n\n// :: ((node: Node, pos: number, parent: Node) → ?bool)\n// Call the given callback for every descendant node. The callback\n// may return `false` to prevent traversal of a given node's children.\nFragment.prototype.descendants = function descendants (f) {\n this.nodesBetween(0, this.size, f);\n};\n\n// :: (number, number, ?string, ?string | ?(leafNode: Node) -> string) → string\n// Extract the text between `from` and `to`. See the same method on\n// [`Node`](#model.Node.textBetween).\nFragment.prototype.textBetween = function textBetween (from, to, blockSeparator, leafText) {\n var text = \"\", separated = true;\n this.nodesBetween(from, to, function (node, pos) {\n if (node.isText) {\n text += node.text.slice(Math.max(from, pos) - pos, to - pos);\n separated = !blockSeparator;\n } else if (node.isLeaf && leafText) {\n text += typeof leafText === 'function' ? leafText(node): leafText;\n separated = !blockSeparator;\n } else if (!separated && node.isBlock) {\n text += blockSeparator;\n separated = true;\n }\n }, 0);\n return text\n};\n\n// :: (Fragment) → Fragment\n// Create a new fragment containing the combined content of this\n// fragment and the other.\nFragment.prototype.append = function append (other) {\n if (!other.size) { return this }\n if (!this.size) { return other }\n var last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++) { content.push(other.content[i]); }\n return new Fragment(content, this.size + other.size)\n};\n\n// :: (number, ?number) → Fragment\n// Cut out the sub-fragment between the two given positions.\nFragment.prototype.cut = function cut (from, to) {\n if (to == null) { to = this.size; }\n if (from == 0 && to == this.size) { return this }\n var result = [], size = 0;\n if (to > from) { for (var i = 0, pos = 0; pos < to; i++) {\n var child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n { child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos)); }\n else\n { child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1)); }\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n } }\n return new Fragment(result, size)\n};\n\nFragment.prototype.cutByIndex = function cutByIndex (from, to) {\n if (from == to) { return Fragment.empty }\n if (from == 0 && to == this.content.length) { return this }\n return new Fragment(this.content.slice(from, to))\n};\n\n// :: (number, Node) → Fragment\n// Create a new fragment in which the node at the given index is\n// replaced by the given node.\nFragment.prototype.replaceChild = function replaceChild (index, node) {\n var current = this.content[index];\n if (current == node) { return this }\n var copy = this.content.slice();\n var size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size)\n};\n\n// : (Node) → Fragment\n// Create a new fragment by prepending the given node to this\n// fragment.\nFragment.prototype.addToStart = function addToStart (node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize)\n};\n\n// : (Node) → Fragment\n// Create a new fragment by appending the given node to this\n// fragment.\nFragment.prototype.addToEnd = function addToEnd (node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize)\n};\n\n// :: (Fragment) → bool\n// Compare this fragment to another one.\nFragment.prototype.eq = function eq (other) {\n if (this.content.length != other.content.length) { return false }\n for (var i = 0; i < this.content.length; i++)\n { if (!this.content[i].eq(other.content[i])) { return false } }\n return true\n};\n\n// :: ?Node\n// The first child of the fragment, or `null` if it is empty.\nprototypeAccessors.firstChild.get = function () { return this.content.length ? this.content[0] : null };\n\n// :: ?Node\n// The last child of the fragment, or `null` if it is empty.\nprototypeAccessors.lastChild.get = function () { return this.content.length ? this.content[this.content.length - 1] : null };\n\n// :: number\n// The number of child nodes in this fragment.\nprototypeAccessors.childCount.get = function () { return this.content.length };\n\n// :: (number) → Node\n// Get the child node at the given index. Raise an error when the\n// index is out of range.\nFragment.prototype.child = function child (index) {\n var found = this.content[index];\n if (!found) { throw new RangeError(\"Index \" + index + \" out of range for \" + this) }\n return found\n};\n\n// :: (number) → ?Node\n// Get the child node at the given index, if it exists.\nFragment.prototype.maybeChild = function maybeChild (index) {\n return this.content[index]\n};\n\n// :: ((node: Node, offset: number, index: number))\n// Call `f` for every child node, passing the node, its offset\n// into this parent node, and its index.\nFragment.prototype.forEach = function forEach (f) {\n for (var i = 0, p = 0; i < this.content.length; i++) {\n var child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n};\n\n// :: (Fragment) → ?number\n// Find the first position at which this fragment and another\n// fragment differ, or `null` if they are the same.\nFragment.prototype.findDiffStart = function findDiffStart$1 (other, pos) {\n if ( pos === void 0 ) pos = 0;\n\n return findDiffStart(this, other, pos)\n};\n\n// :: (Fragment) → ?{a: number, b: number}\n// Find the first position, searching from the end, at which this\n// fragment and the given fragment differ, or `null` if they are the\n// same. Since this position will not be the same in both nodes, an\n// object with two separate positions is returned.\nFragment.prototype.findDiffEnd = function findDiffEnd$1 (other, pos, otherPos) {\n if ( pos === void 0 ) pos = this.size;\n if ( otherPos === void 0 ) otherPos = other.size;\n\n return findDiffEnd(this, other, pos, otherPos)\n};\n\n// : (number, ?number) → {index: number, offset: number}\n// Find the index and inner offset corresponding to a given relative\n// position in this fragment. The result object will be reused\n// (overwritten) the next time the function is called. (Not public.)\nFragment.prototype.findIndex = function findIndex (pos, round) {\n if ( round === void 0 ) round = -1;\n\n if (pos == 0) { return retIndex(0, pos) }\n if (pos == this.size) { return retIndex(this.content.length, pos) }\n if (pos > this.size || pos < 0) { throw new RangeError((\"Position \" + pos + \" outside of fragment (\" + (this) + \")\")) }\n for (var i = 0, curPos = 0;; i++) {\n var cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0) { return retIndex(i + 1, end) }\n return retIndex(i, curPos)\n }\n curPos = end;\n }\n};\n\n// :: () → string\n// Return a debugging string that describes this fragment.\nFragment.prototype.toString = function toString () { return \"<\" + this.toStringInner() + \">\" };\n\nFragment.prototype.toStringInner = function toStringInner () { return this.content.join(\", \") };\n\n// :: () → ?Object\n// Create a JSON-serializeable representation of this fragment.\nFragment.prototype.toJSON = function toJSON () {\n return this.content.length ? this.content.map(function (n) { return n.toJSON(); }) : null\n};\n\n// :: (Schema, ?Object) → Fragment\n// Deserialize a fragment from its JSON representation.\nFragment.fromJSON = function fromJSON (schema, value) {\n if (!value) { return Fragment.empty }\n if (!Array.isArray(value)) { throw new RangeError(\"Invalid input for Fragment.fromJSON\") }\n return new Fragment(value.map(schema.nodeFromJSON))\n};\n\n// :: ([Node]) → Fragment\n// Build a fragment from an array of nodes. Ensures that adjacent\n// text nodes with the same marks are joined together.\nFragment.fromArray = function fromArray (array) {\n if (!array.length) { return Fragment.empty }\n var joined, size = 0;\n for (var i = 0; i < array.length; i++) {\n var node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined) { joined = array.slice(0, i); }\n joined[joined.length - 1] = node.withText(joined[joined.length - 1].text + node.text);\n } else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size)\n};\n\n// :: (?union) → Fragment\n// Create a fragment from something that can be interpreted as a set\n// of nodes. For `null`, it returns the empty fragment. For a\n// fragment, the fragment itself. For a node or array of nodes, a\n// fragment containing those nodes.\nFragment.from = function from (nodes) {\n if (!nodes) { return Fragment.empty }\n if (nodes instanceof Fragment) { return nodes }\n if (Array.isArray(nodes)) { return this.fromArray(nodes) }\n if (nodes.attrs) { return new Fragment([nodes], nodes.nodeSize) }\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"))\n};\n\nObject.defineProperties( Fragment.prototype, prototypeAccessors );\n\nvar found = {index: 0, offset: 0};\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found\n}\n\n// :: Fragment\n// An empty fragment. Intended to be reused whenever a node doesn't\n// contain anything (rather than allocating a new empty fragment for\n// each leaf node).\nFragment.empty = new Fragment([], 0);\n\nfunction compareDeep(a, b) {\n if (a === b) { return true }\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\")) { return false }\n var array = Array.isArray(a);\n if (Array.isArray(b) != array) { return false }\n if (array) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!compareDeep(a[i], b[i])) { return false } }\n } else {\n for (var p in a) { if (!(p in b) || !compareDeep(a[p], b[p])) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n }\n return true\n}\n\n// ::- A mark is a piece of information that can be attached to a node,\n// such as it being emphasized, in code font, or a link. It has a type\n// and optionally a set of attributes that provide further information\n// (such as the target of the link). Marks are created through a\n// `Schema`, which controls which types exist and which\n// attributes they have.\nvar Mark = function Mark(type, attrs) {\n // :: MarkType\n // The type of this mark.\n this.type = type;\n // :: Object\n // The attributes associated with this mark.\n this.attrs = attrs;\n};\n\n// :: ([Mark]) → [Mark]\n// Given a set of marks, create a new set which contains this one as\n// well, in the right position. If this mark is already in the set,\n// the set itself is returned. If any marks that are set to be\n// [exclusive](#model.MarkSpec.excludes) with this mark are present,\n// those are replaced by this one.\nMark.prototype.addToSet = function addToSet (set) {\n var copy, placed = false;\n for (var i = 0; i < set.length; i++) {\n var other = set[i];\n if (this.eq(other)) { return set }\n if (this.type.excludes(other.type)) {\n if (!copy) { copy = set.slice(0, i); }\n } else if (other.type.excludes(this.type)) {\n return set\n } else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy) { copy = set.slice(0, i); }\n copy.push(this);\n placed = true;\n }\n if (copy) { copy.push(other); }\n }\n }\n if (!copy) { copy = set.slice(); }\n if (!placed) { copy.push(this); }\n return copy\n};\n\n// :: ([Mark]) → [Mark]\n// Remove this mark from the given set, returning a new set. If this\n// mark is not in the set, the set itself is returned.\nMark.prototype.removeFromSet = function removeFromSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (this.eq(set[i]))\n { return set.slice(0, i).concat(set.slice(i + 1)) } }\n return set\n};\n\n// :: ([Mark]) → bool\n// Test whether this mark is in the given set of marks.\nMark.prototype.isInSet = function isInSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (this.eq(set[i])) { return true } }\n return false\n};\n\n// :: (Mark) → bool\n// Test whether this mark has the same type and attributes as\n// another mark.\nMark.prototype.eq = function eq (other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs))\n};\n\n// :: () → Object\n// Convert this mark to a JSON-serializeable representation.\nMark.prototype.toJSON = function toJSON () {\n var obj = {type: this.type.name};\n for (var _ in this.attrs) {\n obj.attrs = this.attrs;\n break\n }\n return obj\n};\n\n// :: (Schema, Object) → Mark\nMark.fromJSON = function fromJSON (schema, json) {\n if (!json) { throw new RangeError(\"Invalid input for Mark.fromJSON\") }\n var type = schema.marks[json.type];\n if (!type) { throw new RangeError((\"There is no mark type \" + (json.type) + \" in this schema\")) }\n return type.create(json.attrs)\n};\n\n// :: ([Mark], [Mark]) → bool\n// Test whether two sets of marks are identical.\nMark.sameSet = function sameSet (a, b) {\n if (a == b) { return true }\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++)\n { if (!a[i].eq(b[i])) { return false } }\n return true\n};\n\n// :: (?union) → [Mark]\n// Create a properly sorted mark set from null, a single mark, or an\n// unsorted array of marks.\nMark.setFrom = function setFrom (marks) {\n if (!marks || marks.length == 0) { return Mark.none }\n if (marks instanceof Mark) { return [marks] }\n var copy = marks.slice();\n copy.sort(function (a, b) { return a.type.rank - b.type.rank; });\n return copy\n};\n\n// :: [Mark] The empty set of marks.\nMark.none = [];\n\n// ReplaceError:: class extends Error\n// Error type raised by [`Node.replace`](#model.Node.replace) when\n// given an invalid replacement.\n\nfunction ReplaceError(message) {\n var err = Error.call(this, message);\n err.__proto__ = ReplaceError.prototype;\n return err\n}\n\nReplaceError.prototype = Object.create(Error.prototype);\nReplaceError.prototype.constructor = ReplaceError;\nReplaceError.prototype.name = \"ReplaceError\";\n\n// ::- A slice represents a piece cut out of a larger document. It\n// stores not only a fragment, but also the depth up to which nodes on\n// both side are ‘open’ (cut through).\nvar Slice = function Slice(content, openStart, openEnd) {\n // :: Fragment The slice's content.\n this.content = content;\n // :: number The open depth at the start.\n this.openStart = openStart;\n // :: number The open depth at the end.\n this.openEnd = openEnd;\n};\n\nvar prototypeAccessors$1 = { size: { configurable: true } };\n\n// :: number\n// The size this slice would add when inserted into a document.\nprototypeAccessors$1.size.get = function () {\n return this.content.size - this.openStart - this.openEnd\n};\n\nSlice.prototype.insertAt = function insertAt (pos, fragment) {\n var content = insertInto(this.content, pos + this.openStart, fragment, null);\n return content && new Slice(content, this.openStart, this.openEnd)\n};\n\nSlice.prototype.removeBetween = function removeBetween (from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd)\n};\n\n// :: (Slice) → bool\n// Tests whether this slice is equal to another slice.\nSlice.prototype.eq = function eq (other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd\n};\n\nSlice.prototype.toString = function toString () {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\"\n};\n\n// :: () → ?Object\n// Convert a slice to a JSON-serializable representation.\nSlice.prototype.toJSON = function toJSON () {\n if (!this.content.size) { return null }\n var json = {content: this.content.toJSON()};\n if (this.openStart > 0) { json.openStart = this.openStart; }\n if (this.openEnd > 0) { json.openEnd = this.openEnd; }\n return json\n};\n\n// :: (Schema, ?Object) → Slice\n// Deserialize a slice from its JSON representation.\nSlice.fromJSON = function fromJSON (schema, json) {\n if (!json) { return Slice.empty }\n var openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n { throw new RangeError(\"Invalid input for Slice.fromJSON\") }\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd)\n};\n\n// :: (Fragment, ?bool) → Slice\n// Create a slice from a fragment by taking the maximum possible\n// open value on both side of the fragment.\nSlice.maxOpen = function maxOpen (fragment, openIsolating) {\n if ( openIsolating === void 0 ) openIsolating=true;\n\n var openStart = 0, openEnd = 0;\n for (var n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild) { openStart++; }\n for (var n$1 = fragment.lastChild; n$1 && !n$1.isLeaf && (openIsolating || !n$1.type.spec.isolating); n$1 = n$1.lastChild) { openEnd++; }\n return new Slice(fragment, openStart, openEnd)\n};\n\nObject.defineProperties( Slice.prototype, prototypeAccessors$1 );\n\nfunction removeRange(content, from, to) {\n var ref = content.findIndex(from);\n var index = ref.index;\n var offset = ref.offset;\n var child = content.maybeChild(index);\n var ref$1 = content.findIndex(to);\n var indexTo = ref$1.index;\n var offsetTo = ref$1.offset;\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText) { throw new RangeError(\"Removing non-flat range\") }\n return content.cut(0, from).append(content.cut(to))\n }\n if (index != indexTo) { throw new RangeError(\"Removing non-flat range\") }\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)))\n}\n\nfunction insertInto(content, dist, insert, parent) {\n var ref = content.findIndex(dist);\n var index = ref.index;\n var offset = ref.offset;\n var child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert)) { return null }\n return content.cut(0, dist).append(insert).append(content.cut(dist))\n }\n var inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner))\n}\n\n// :: Slice\n// The empty slice.\nSlice.empty = new Slice(Fragment.empty, 0, 0);\n\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n { throw new ReplaceError(\"Inserted content deeper than insertion position\") }\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n { throw new ReplaceError(\"Inconsistent open depths\") }\n return replaceOuter($from, $to, slice, 0)\n}\n\nfunction replaceOuter($from, $to, slice, depth) {\n var index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n var inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner))\n } else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth))\n } else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n var parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)))\n } else {\n var ref = prepareSliceForReplace(slice, $from);\n var start = ref.start;\n var end = ref.end;\n return close(node, replaceThreeWay($from, start, end, $to, depth))\n }\n}\n\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n { throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name) }\n}\n\nfunction joinable($before, $after, depth) {\n var node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node\n}\n\nfunction addNode(child, target) {\n var last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n { target[last] = child.withText(target[last].text + child.text); }\n else\n { target.push(child); }\n}\n\nfunction addRange($start, $end, depth, target) {\n var node = ($end || $start).node(depth);\n var startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n } else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (var i = startIndex; i < endIndex; i++) { addNode(node.child(i), target); }\n if ($end && $end.depth == depth && $end.textOffset)\n { addNode($end.nodeBefore, target); }\n}\n\nfunction close(node, content) {\n if (!node.type.validContent(content))\n { throw new ReplaceError(\"Invalid content for node \" + node.type.name) }\n return node.copy(content)\n}\n\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n var openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n var openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n\n var content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n } else {\n if (openStart)\n { addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content); }\n addRange($start, $end, depth, content);\n if (openEnd)\n { addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content); }\n }\n addRange($to, null, depth, content);\n return new Fragment(content)\n}\n\nfunction replaceTwoWay($from, $to, depth) {\n var content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n var type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content)\n}\n\nfunction prepareSliceForReplace(slice, $along) {\n var extra = $along.depth - slice.openStart, parent = $along.node(extra);\n var node = parent.copy(slice.content);\n for (var i = extra - 1; i >= 0; i--)\n { node = $along.node(i).copy(Fragment.from(node)); }\n return {start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra)}\n}\n\n// ::- You can [_resolve_](#model.Node.resolve) a position to get more\n// information about it. Objects of this class represent such a\n// resolved position, providing various pieces of context information,\n// and some helper methods.\n//\n// Throughout this interface, methods that take an optional `depth`\n// parameter will interpret undefined as `this.depth` and negative\n// numbers as `this.depth + value`.\nvar ResolvedPos = function ResolvedPos(pos, path, parentOffset) {\n // :: number The position that was resolved.\n this.pos = pos;\n this.path = path;\n // :: number\n // The number of levels the parent node is from the root. If this\n // position points directly into the root node, it is 0. If it\n // points into a top-level paragraph, 1, and so on.\n this.depth = path.length / 3 - 1;\n // :: number The offset this position has into its parent node.\n this.parentOffset = parentOffset;\n};\n\nvar prototypeAccessors$2 = { parent: { configurable: true },doc: { configurable: true },textOffset: { configurable: true },nodeAfter: { configurable: true },nodeBefore: { configurable: true } };\n\nResolvedPos.prototype.resolveDepth = function resolveDepth (val) {\n if (val == null) { return this.depth }\n if (val < 0) { return this.depth + val }\n return val\n};\n\n// :: Node\n// The parent node that the position points into. Note that even if\n// a position points into a text node, that node is not considered\n// the parent—text nodes are ‘flat’ in this model, and have no content.\nprototypeAccessors$2.parent.get = function () { return this.node(this.depth) };\n\n// :: Node\n// The root node in which the position was resolved.\nprototypeAccessors$2.doc.get = function () { return this.node(0) };\n\n// :: (?number) → Node\n// The ancestor node at the given level. `p.node(p.depth)` is the\n// same as `p.parent`.\nResolvedPos.prototype.node = function node (depth) { return this.path[this.resolveDepth(depth) * 3] };\n\n// :: (?number) → number\n// The index into the ancestor at the given level. If this points at\n// the 3rd node in the 2nd paragraph on the top level, for example,\n// `p.index(0)` is 1 and `p.index(1)` is 2.\nResolvedPos.prototype.index = function index (depth) { return this.path[this.resolveDepth(depth) * 3 + 1] };\n\n// :: (?number) → number\n// The index pointing after this position into the ancestor at the\n// given level.\nResolvedPos.prototype.indexAfter = function indexAfter (depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1)\n};\n\n// :: (?number) → number\n// The (absolute) position at the start of the node at the given\n// level.\nResolvedPos.prototype.start = function start (depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1\n};\n\n// :: (?number) → number\n// The (absolute) position at the end of the node at the given\n// level.\nResolvedPos.prototype.end = function end (depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size\n};\n\n// :: (?number) → number\n// The (absolute) position directly before the wrapping node at the\n// given level, or, when `depth` is `this.depth + 1`, the original\n// position.\nResolvedPos.prototype.before = function before (depth) {\n depth = this.resolveDepth(depth);\n if (!depth) { throw new RangeError(\"There is no position before the top-level node\") }\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1]\n};\n\n// :: (?number) → number\n// The (absolute) position directly after the wrapping node at the\n// given level, or the original position when `depth` is `this.depth + 1`.\nResolvedPos.prototype.after = function after (depth) {\n depth = this.resolveDepth(depth);\n if (!depth) { throw new RangeError(\"There is no position after the top-level node\") }\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize\n};\n\n// :: number\n// When this position points into a text node, this returns the\n// distance between the position and the start of the text node.\n// Will be zero for positions that point between nodes.\nprototypeAccessors$2.textOffset.get = function () { return this.pos - this.path[this.path.length - 1] };\n\n// :: ?Node\n// Get the node directly after the position, if any. If the position\n// points into a text node, only the part of that node after the\n// position is returned.\nprototypeAccessors$2.nodeAfter.get = function () {\n var parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount) { return null }\n var dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child\n};\n\n// :: ?Node\n// Get the node directly before the position, if any. If the\n// position points into a text node, only the part of that node\n// before the position is returned.\nprototypeAccessors$2.nodeBefore.get = function () {\n var index = this.index(this.depth);\n var dOff = this.pos - this.path[this.path.length - 1];\n if (dOff) { return this.parent.child(index).cut(0, dOff) }\n return index == 0 ? null : this.parent.child(index - 1)\n};\n\n// :: (number, ?number) → number\n// Get the position at the given index in the parent node at the\n// given depth (which defaults to `this.depth`).\nResolvedPos.prototype.posAtIndex = function posAtIndex (index, depth) {\n depth = this.resolveDepth(depth);\n var node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (var i = 0; i < index; i++) { pos += node.child(i).nodeSize; }\n return pos\n};\n\n// :: () → [Mark]\n// Get the marks at this position, factoring in the surrounding\n// marks' [`inclusive`](#model.MarkSpec.inclusive) property. If the\n// position is at the start of a non-empty node, the marks of the\n// node after it (if any) are returned.\nResolvedPos.prototype.marks = function marks () {\n var parent = this.parent, index = this.index();\n\n // In an empty parent, return the empty array\n if (parent.content.size == 0) { return Mark.none }\n\n // When inside a text node, just return the text node's marks\n if (this.textOffset) { return parent.child(index).marks }\n\n var main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) { var tmp = main; main = other; other = tmp; }\n\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n var marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n { if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n { marks = marks[i--].removeFromSet(marks); } }\n\n return marks\n};\n\n// :: (ResolvedPos) → ?[Mark]\n// Get the marks after the current position, if any, except those\n// that are non-inclusive and not present at position `$end`. This\n// is mostly useful for getting the set of marks to preserve after a\n// deletion. Will return `null` if this position is at the end of\n// its parent node or its parent node isn't a textblock (in which\n// case no marks should be preserved).\nResolvedPos.prototype.marksAcross = function marksAcross ($end) {\n var after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline) { return null }\n\n var marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n { if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n { marks = marks[i--].removeFromSet(marks); } }\n return marks\n};\n\n// :: (number) → number\n// The depth up to which this position and the given (non-resolved)\n// position share the same parent nodes.\nResolvedPos.prototype.sharedDepth = function sharedDepth (pos) {\n for (var depth = this.depth; depth > 0; depth--)\n { if (this.start(depth) <= pos && this.end(depth) >= pos) { return depth } }\n return 0\n};\n\n// :: (?ResolvedPos, ?(Node) → bool) → ?NodeRange\n// Returns a range based on the place where this position and the\n// given position diverge around block content. If both point into\n// the same textblock, for example, a range around that textblock\n// will be returned. If they point into different blocks, the range\n// around those blocks in their shared ancestor is returned. You can\n// pass in an optional predicate that will be called with a parent\n// node to see if a range into that parent is acceptable.\nResolvedPos.prototype.blockRange = function blockRange (other, pred) {\n if ( other === void 0 ) other = this;\n\n if (other.pos < this.pos) { return other.blockRange(this) }\n for (var d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n { if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n { return new NodeRange(this, other, d) } }\n};\n\n// :: (ResolvedPos) → bool\n// Query whether the given position shares the same parent node.\nResolvedPos.prototype.sameParent = function sameParent (other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset\n};\n\n// :: (ResolvedPos) → ResolvedPos\n// Return the greater of this and the given position.\nResolvedPos.prototype.max = function max (other) {\n return other.pos > this.pos ? other : this\n};\n\n// :: (ResolvedPos) → ResolvedPos\n// Return the smaller of this and the given position.\nResolvedPos.prototype.min = function min (other) {\n return other.pos < this.pos ? other : this\n};\n\nResolvedPos.prototype.toString = function toString () {\n var str = \"\";\n for (var i = 1; i <= this.depth; i++)\n { str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1); }\n return str + \":\" + this.parentOffset\n};\n\nResolvedPos.resolve = function resolve (doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size)) { throw new RangeError(\"Position \" + pos + \" out of range\") }\n var path = [];\n var start = 0, parentOffset = pos;\n for (var node = doc;;) {\n var ref = node.content.findIndex(parentOffset);\n var index = ref.index;\n var offset = ref.offset;\n var rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem) { break }\n node = node.child(index);\n if (node.isText) { break }\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset)\n};\n\nResolvedPos.resolveCached = function resolveCached (doc, pos) {\n for (var i = 0; i < resolveCache.length; i++) {\n var cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc) { return cached }\n }\n var result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result\n};\n\nObject.defineProperties( ResolvedPos.prototype, prototypeAccessors$2 );\n\nvar resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n\n// ::- Represents a flat range of content, i.e. one that starts and\n// ends in the same node.\nvar NodeRange = function NodeRange($from, $to, depth) {\n // :: ResolvedPos A resolved position along the start of the\n // content. May have a `depth` greater than this object's `depth`\n // property, since these are the positions that were used to\n // compute the range, not re-resolved positions directly at its\n // boundaries.\n this.$from = $from;\n // :: ResolvedPos A position along the end of the content. See\n // caveat for [`$from`](#model.NodeRange.$from).\n this.$to = $to;\n // :: number The depth of the node that this range points into.\n this.depth = depth;\n};\n\nvar prototypeAccessors$1$1 = { start: { configurable: true },end: { configurable: true },parent: { configurable: true },startIndex: { configurable: true },endIndex: { configurable: true } };\n\n// :: number The position at the start of the range.\nprototypeAccessors$1$1.start.get = function () { return this.$from.before(this.depth + 1) };\n// :: number The position at the end of the range.\nprototypeAccessors$1$1.end.get = function () { return this.$to.after(this.depth + 1) };\n\n// :: Node The parent node that the range points into.\nprototypeAccessors$1$1.parent.get = function () { return this.$from.node(this.depth) };\n// :: number The start index of the range in the parent node.\nprototypeAccessors$1$1.startIndex.get = function () { return this.$from.index(this.depth) };\n// :: number The end index of the range in the parent node.\nprototypeAccessors$1$1.endIndex.get = function () { return this.$to.indexAfter(this.depth) };\n\nObject.defineProperties( NodeRange.prototype, prototypeAccessors$1$1 );\n\nvar emptyAttrs = Object.create(null);\n\n// ::- This class represents a node in the tree that makes up a\n// ProseMirror document. So a document is an instance of `Node`, with\n// children that are also instances of `Node`.\n//\n// Nodes are persistent data structures. Instead of changing them, you\n// create new ones with the content you want. Old ones keep pointing\n// at the old document shape. This is made cheaper by sharing\n// structure between the old and new data as much as possible, which a\n// tree shape like this (without back pointers) makes easy.\n//\n// **Do not** directly mutate the properties of a `Node` object. See\n// [the guide](/docs/guide/#doc) for more information.\nvar Node = function Node(type, attrs, content, marks) {\n // :: NodeType\n // The type of node that this is.\n this.type = type;\n\n // :: Object\n // An object mapping attribute names to values. The kind of\n // attributes allowed and required are\n // [determined](#model.NodeSpec.attrs) by the node type.\n this.attrs = attrs;\n\n // :: Fragment\n // A container holding the node's children.\n this.content = content || Fragment.empty;\n\n // :: [Mark]\n // The marks (things like whether it is emphasized or part of a\n // link) applied to this node.\n this.marks = marks || Mark.none;\n};\n\nvar prototypeAccessors$3 = { nodeSize: { configurable: true },childCount: { configurable: true },textContent: { configurable: true },firstChild: { configurable: true },lastChild: { configurable: true },isBlock: { configurable: true },isTextblock: { configurable: true },inlineContent: { configurable: true },isInline: { configurable: true },isText: { configurable: true },isLeaf: { configurable: true },isAtom: { configurable: true } };\n\n// text:: ?string\n// For text nodes, this contains the node's text content.\n\n// :: number\n// The size of this node, as defined by the integer-based [indexing\n// scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n// amount of characters. For other leaf nodes, it is one. For\n// non-leaf nodes, it is the size of the content plus two (the start\n// and end token).\nprototypeAccessors$3.nodeSize.get = function () { return this.isLeaf ? 1 : 2 + this.content.size };\n\n// :: number\n// The number of children that the node has.\nprototypeAccessors$3.childCount.get = function () { return this.content.childCount };\n\n// :: (number) → Node\n// Get the child node at the given index. Raises an error when the\n// index is out of range.\nNode.prototype.child = function child (index) { return this.content.child(index) };\n\n// :: (number) → ?Node\n// Get the child node at the given index, if it exists.\nNode.prototype.maybeChild = function maybeChild (index) { return this.content.maybeChild(index) };\n\n// :: ((node: Node, offset: number, index: number))\n// Call `f` for every child node, passing the node, its offset\n// into this parent node, and its index.\nNode.prototype.forEach = function forEach (f) { this.content.forEach(f); };\n\n// :: (number, number, (node: Node, pos: number, parent: Node, index: number) → ?bool, ?number)\n// Invoke a callback for all descendant nodes recursively between\n// the given two positions that are relative to start of this node's\n// content. The callback is invoked with the node, its\n// parent-relative position, its parent node, and its child index.\n// When the callback returns false for a given node, that node's\n// children will not be recursed over. The last parameter can be\n// used to specify a starting position to count from.\nNode.prototype.nodesBetween = function nodesBetween (from, to, f, startPos) {\n if ( startPos === void 0 ) startPos = 0;\n\n this.content.nodesBetween(from, to, f, startPos, this);\n};\n\n// :: ((node: Node, pos: number, parent: Node) → ?bool)\n// Call the given callback for every descendant node. Doesn't\n// descend into a node when the callback returns `false`.\nNode.prototype.descendants = function descendants (f) {\n this.nodesBetween(0, this.content.size, f);\n};\n\n// :: string\n// Concatenates all the text nodes found in this fragment and its\n// children.\nprototypeAccessors$3.textContent.get = function () { return this.textBetween(0, this.content.size, \"\") };\n\n// :: (number, number, ?string, ?string | ?(leafNode: Node) -> string) → string\n// Get all text between positions `from` and `to`. When\n// `blockSeparator` is given, it will be inserted whenever a new\n// block node is started. When `leafText` is given, it'll be\n// inserted for every non-text leaf node encountered.\nNode.prototype.textBetween = function textBetween (from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText)\n};\n\n// :: ?Node\n// Returns this node's first child, or `null` if there are no\n// children.\nprototypeAccessors$3.firstChild.get = function () { return this.content.firstChild };\n\n// :: ?Node\n// Returns this node's last child, or `null` if there are no\n// children.\nprototypeAccessors$3.lastChild.get = function () { return this.content.lastChild };\n\n// :: (Node) → bool\n// Test whether two nodes represent the same piece of document.\nNode.prototype.eq = function eq (other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content))\n};\n\n// :: (Node) → bool\n// Compare the markup (type, attributes, and marks) of this node to\n// those of another. Returns `true` if both have the same markup.\nNode.prototype.sameMarkup = function sameMarkup (other) {\n return this.hasMarkup(other.type, other.attrs, other.marks)\n};\n\n// :: (NodeType, ?Object, ?[Mark]) → bool\n// Check whether this node's markup correspond to the given type,\n// attributes, and marks.\nNode.prototype.hasMarkup = function hasMarkup (type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none)\n};\n\n// :: (?Fragment) → Node\n// Create a new node with the same markup as this node, containing\n// the given content (or empty, if no content is given).\nNode.prototype.copy = function copy (content) {\n if ( content === void 0 ) content = null;\n\n if (content == this.content) { return this }\n return new this.constructor(this.type, this.attrs, content, this.marks)\n};\n\n// :: ([Mark]) → Node\n// Create a copy of this node, with the given set of marks instead\n// of the node's own marks.\nNode.prototype.mark = function mark (marks) {\n return marks == this.marks ? this : new this.constructor(this.type, this.attrs, this.content, marks)\n};\n\n// :: (number, ?number) → Node\n// Create a copy of this node with only the content between the\n// given positions. If `to` is not given, it defaults to the end of\n// the node.\nNode.prototype.cut = function cut (from, to) {\n if (from == 0 && to == this.content.size) { return this }\n return this.copy(this.content.cut(from, to))\n};\n\n// :: (number, ?number) → Slice\n// Cut out the part of the document between the given positions, and\n// return it as a `Slice` object.\nNode.prototype.slice = function slice (from, to, includeParents) {\n if ( to === void 0 ) to = this.content.size;\n if ( includeParents === void 0 ) includeParents = false;\n\n if (from == to) { return Slice.empty }\n\n var $from = this.resolve(from), $to = this.resolve(to);\n var depth = includeParents ? 0 : $from.sharedDepth(to);\n var start = $from.start(depth), node = $from.node(depth);\n var content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth)\n};\n\n// :: (number, number, Slice) → Node\n// Replace the part of the document between the given positions with\n// the given slice. The slice must 'fit', meaning its open sides\n// must be able to connect to the surrounding content, and its\n// content nodes must be valid children for the node they are placed\n// into. If any of this is violated, an error of type\n// [`ReplaceError`](#model.ReplaceError) is thrown.\nNode.prototype.replace = function replace$1 (from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice)\n};\n\n// :: (number) → ?Node\n// Find the node directly after the given position.\nNode.prototype.nodeAt = function nodeAt (pos) {\n for (var node = this;;) {\n var ref = node.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n node = node.maybeChild(index);\n if (!node) { return null }\n if (offset == pos || node.isText) { return node }\n pos -= offset + 1;\n }\n};\n\n// :: (number) → {node: ?Node, index: number, offset: number}\n// Find the (direct) child node after the given offset, if any,\n// and return it along with its index and offset relative to this\n// node.\nNode.prototype.childAfter = function childAfter (pos) {\n var ref = this.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n return {node: this.content.maybeChild(index), index: index, offset: offset}\n};\n\n// :: (number) → {node: ?Node, index: number, offset: number}\n// Find the (direct) child node before the given offset, if any,\n// and return it along with its index and offset relative to this\n// node.\nNode.prototype.childBefore = function childBefore (pos) {\n if (pos == 0) { return {node: null, index: 0, offset: 0} }\n var ref = this.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n if (offset < pos) { return {node: this.content.child(index), index: index, offset: offset} }\n var node = this.content.child(index - 1);\n return {node: node, index: index - 1, offset: offset - node.nodeSize}\n};\n\n// :: (number) → ResolvedPos\n// Resolve the given position in the document, returning an\n// [object](#model.ResolvedPos) with information about its context.\nNode.prototype.resolve = function resolve (pos) { return ResolvedPos.resolveCached(this, pos) };\n\nNode.prototype.resolveNoCache = function resolveNoCache (pos) { return ResolvedPos.resolve(this, pos) };\n\n// :: (number, number, union) → bool\n// Test whether a given mark or mark type occurs in this document\n// between the two given positions.\nNode.prototype.rangeHasMark = function rangeHasMark (from, to, type) {\n var found = false;\n if (to > from) { this.nodesBetween(from, to, function (node) {\n if (type.isInSet(node.marks)) { found = true; }\n return !found\n }); }\n return found\n};\n\n// :: bool\n// True when this is a block (non-inline node)\nprototypeAccessors$3.isBlock.get = function () { return this.type.isBlock };\n\n// :: bool\n// True when this is a textblock node, a block node with inline\n// content.\nprototypeAccessors$3.isTextblock.get = function () { return this.type.isTextblock };\n\n// :: bool\n// True when this node allows inline content.\nprototypeAccessors$3.inlineContent.get = function () { return this.type.inlineContent };\n\n// :: bool\n// True when this is an inline node (a text node or a node that can\n// appear among text).\nprototypeAccessors$3.isInline.get = function () { return this.type.isInline };\n\n// :: bool\n// True when this is a text node.\nprototypeAccessors$3.isText.get = function () { return this.type.isText };\n\n// :: bool\n// True when this is a leaf node.\nprototypeAccessors$3.isLeaf.get = function () { return this.type.isLeaf };\n\n// :: bool\n// True when this is an atom, i.e. when it does not have directly\n// editable content. This is usually the same as `isLeaf`, but can\n// be configured with the [`atom` property](#model.NodeSpec.atom) on\n// a node's spec (typically used when the node is displayed as an\n// uneditable [node view](#view.NodeView)).\nprototypeAccessors$3.isAtom.get = function () { return this.type.isAtom };\n\n// :: () → string\n// Return a string representation of this node for debugging\n// purposes.\nNode.prototype.toString = function toString () {\n if (this.type.spec.toDebugString) { return this.type.spec.toDebugString(this) }\n var name = this.type.name;\n if (this.content.size)\n { name += \"(\" + this.content.toStringInner() + \")\"; }\n return wrapMarks(this.marks, name)\n};\n\n// :: (number) → ContentMatch\n// Get the content match in this node at the given index.\nNode.prototype.contentMatchAt = function contentMatchAt (index) {\n var match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match) { throw new Error(\"Called contentMatchAt on a node with invalid content\") }\n return match\n};\n\n// :: (number, number, ?Fragment, ?number, ?number) → bool\n// Test whether replacing the range between `from` and `to` (by\n// child index) with the given replacement fragment (which defaults\n// to the empty fragment) would leave the node's content valid. You\n// can optionally pass `start` and `end` indices into the\n// replacement fragment.\nNode.prototype.canReplace = function canReplace (from, to, replacement, start, end) {\n if ( replacement === void 0 ) replacement = Fragment.empty;\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = replacement.childCount;\n\n var one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n var two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd) { return false }\n for (var i = start; i < end; i++) { if (!this.type.allowsMarks(replacement.child(i).marks)) { return false } }\n return true\n};\n\n// :: (number, number, NodeType, ?[Mark]) → bool\n// Test whether replacing the range `from` to `to` (by index) with a\n// node of the given type would leave the node's content valid.\nNode.prototype.canReplaceWith = function canReplaceWith (from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks)) { return false }\n var start = this.contentMatchAt(from).matchType(type);\n var end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false\n};\n\n// :: (Node) → bool\n// Test whether the given node's content could be appended to this\n// node. If that node is empty, this will only return true if there\n// is at least one node type that can appear in both nodes (to avoid\n// merging completely incompatible nodes).\nNode.prototype.canAppend = function canAppend (other) {\n if (other.content.size) { return this.canReplace(this.childCount, this.childCount, other.content) }\n else { return this.type.compatibleContent(other.type) }\n};\n\n// :: ()\n// Check whether this node and its descendants conform to the\n// schema, and raise error when they do not.\nNode.prototype.check = function check () {\n if (!this.type.validContent(this.content))\n { throw new RangeError((\"Invalid content for node \" + (this.type.name) + \": \" + (this.content.toString().slice(0, 50)))) }\n var copy = Mark.none;\n for (var i = 0; i < this.marks.length; i++) { copy = this.marks[i].addToSet(copy); }\n if (!Mark.sameSet(copy, this.marks))\n { throw new RangeError((\"Invalid collection of marks for node \" + (this.type.name) + \": \" + (this.marks.map(function (m) { return m.type.name; })))) }\n this.content.forEach(function (node) { return node.check(); });\n};\n\n// :: () → Object\n// Return a JSON-serializeable representation of this node.\nNode.prototype.toJSON = function toJSON () {\n var obj = {type: this.type.name};\n for (var _ in this.attrs) {\n obj.attrs = this.attrs;\n break\n }\n if (this.content.size)\n { obj.content = this.content.toJSON(); }\n if (this.marks.length)\n { obj.marks = this.marks.map(function (n) { return n.toJSON(); }); }\n return obj\n};\n\n// :: (Schema, Object) → Node\n// Deserialize a node from its JSON representation.\nNode.fromJSON = function fromJSON (schema, json) {\n if (!json) { throw new RangeError(\"Invalid input for Node.fromJSON\") }\n var marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks)) { throw new RangeError(\"Invalid mark data for Node.fromJSON\") }\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\") { throw new RangeError(\"Invalid text node in JSON\") }\n return schema.text(json.text, marks)\n }\n var content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks)\n};\n\nObject.defineProperties( Node.prototype, prototypeAccessors$3 );\n\nvar TextNode = /*@__PURE__*/(function (Node) {\n function TextNode(type, attrs, content, marks) {\n Node.call(this, type, attrs, null, marks);\n\n if (!content) { throw new RangeError(\"Empty text nodes are not allowed\") }\n\n this.text = content;\n }\n\n if ( Node ) TextNode.__proto__ = Node;\n TextNode.prototype = Object.create( Node && Node.prototype );\n TextNode.prototype.constructor = TextNode;\n\n var prototypeAccessors$1 = { textContent: { configurable: true },nodeSize: { configurable: true } };\n\n TextNode.prototype.toString = function toString () {\n if (this.type.spec.toDebugString) { return this.type.spec.toDebugString(this) }\n return wrapMarks(this.marks, JSON.stringify(this.text))\n };\n\n prototypeAccessors$1.textContent.get = function () { return this.text };\n\n TextNode.prototype.textBetween = function textBetween (from, to) { return this.text.slice(from, to) };\n\n prototypeAccessors$1.nodeSize.get = function () { return this.text.length };\n\n TextNode.prototype.mark = function mark (marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks)\n };\n\n TextNode.prototype.withText = function withText (text) {\n if (text == this.text) { return this }\n return new TextNode(this.type, this.attrs, text, this.marks)\n };\n\n TextNode.prototype.cut = function cut (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.text.length;\n\n if (from == 0 && to == this.text.length) { return this }\n return this.withText(this.text.slice(from, to))\n };\n\n TextNode.prototype.eq = function eq (other) {\n return this.sameMarkup(other) && this.text == other.text\n };\n\n TextNode.prototype.toJSON = function toJSON () {\n var base = Node.prototype.toJSON.call(this);\n base.text = this.text;\n return base\n };\n\n Object.defineProperties( TextNode.prototype, prototypeAccessors$1 );\n\n return TextNode;\n}(Node));\n\nfunction wrapMarks(marks, str) {\n for (var i = marks.length - 1; i >= 0; i--)\n { str = marks[i].type.name + \"(\" + str + \")\"; }\n return str\n}\n\n// ::- Instances of this class represent a match state of a node\n// type's [content expression](#model.NodeSpec.content), and can be\n// used to find out whether further content matches here, and whether\n// a given position is a valid end of the node.\nvar ContentMatch = function ContentMatch(validEnd) {\n // :: bool\n // True when this match state represents a valid end of the node.\n this.validEnd = validEnd;\n this.next = [];\n this.wrapCache = [];\n};\n\nvar prototypeAccessors$4 = { inlineContent: { configurable: true },defaultType: { configurable: true },edgeCount: { configurable: true } };\n\nContentMatch.parse = function parse (string, nodeTypes) {\n var stream = new TokenStream(string, nodeTypes);\n if (stream.next == null) { return ContentMatch.empty }\n var expr = parseExpr(stream);\n if (stream.next) { stream.err(\"Unexpected trailing text\"); }\n var match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match\n};\n\n// :: (NodeType) → ?ContentMatch\n// Match a node type, returning a match after that node if\n// successful.\nContentMatch.prototype.matchType = function matchType (type) {\n for (var i = 0; i < this.next.length; i += 2)\n { if (this.next[i] == type) { return this.next[i + 1] } }\n return null\n};\n\n// :: (Fragment, ?number, ?number) → ?ContentMatch\n// Try to match a fragment. Returns the resulting match when\n// successful.\nContentMatch.prototype.matchFragment = function matchFragment (frag, start, end) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = frag.childCount;\n\n var cur = this;\n for (var i = start; cur && i < end; i++)\n { cur = cur.matchType(frag.child(i).type); }\n return cur\n};\n\nprototypeAccessors$4.inlineContent.get = function () {\n var first = this.next[0];\n return first ? first.isInline : false\n};\n\n// :: ?NodeType\n// Get the first matching node type at this match position that can\n// be generated.\nprototypeAccessors$4.defaultType.get = function () {\n for (var i = 0; i < this.next.length; i += 2) {\n var type = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs())) { return type }\n }\n};\n\nContentMatch.prototype.compatible = function compatible (other) {\n for (var i = 0; i < this.next.length; i += 2)\n { for (var j = 0; j < other.next.length; j += 2)\n { if (this.next[i] == other.next[j]) { return true } } }\n return false\n};\n\n// :: (Fragment, bool, ?number) → ?Fragment\n// Try to match the given fragment, and if that fails, see if it can\n// be made to match by inserting nodes in front of it. When\n// successful, return a fragment of inserted nodes (which may be\n// empty if nothing had to be inserted). When `toEnd` is true, only\n// return a fragment if the resulting match goes to the end of the\n// content expression.\nContentMatch.prototype.fillBefore = function fillBefore (after, toEnd, startIndex) {\n if ( toEnd === void 0 ) toEnd = false;\n if ( startIndex === void 0 ) startIndex = 0;\n\n var seen = [this];\n function search(match, types) {\n var finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n { return Fragment.from(types.map(function (tp) { return tp.createAndFill(); })) }\n\n for (var i = 0; i < match.next.length; i += 2) {\n var type = match.next[i], next = match.next[i + 1];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n var found = search(next, types.concat(type));\n if (found) { return found }\n }\n }\n }\n\n return search(this, [])\n};\n\n// :: (NodeType) → ?[NodeType]\n// Find a set of wrapping node types that would allow a node of the\n// given type to appear at this position. The result may be empty\n// (when it fits directly) and will be null when no such wrapping\n// exists.\nContentMatch.prototype.findWrapping = function findWrapping (target) {\n for (var i = 0; i < this.wrapCache.length; i += 2)\n { if (this.wrapCache[i] == target) { return this.wrapCache[i + 1] } }\n var computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed\n};\n\nContentMatch.prototype.computeWrapping = function computeWrapping (target) {\n var seen = Object.create(null), active = [{match: this, type: null, via: null}];\n while (active.length) {\n var current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n var result = [];\n for (var obj = current; obj.type; obj = obj.via)\n { result.push(obj.type); }\n return result.reverse()\n }\n for (var i = 0; i < match.next.length; i += 2) {\n var type = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || match.next[i + 1].validEnd)) {\n active.push({match: type.contentMatch, type: type, via: current});\n seen[type.name] = true;\n }\n }\n }\n};\n\n// :: number\n// The number of outgoing edges this node has in the finite\n// automaton that describes the content expression.\nprototypeAccessors$4.edgeCount.get = function () {\n return this.next.length >> 1\n};\n\n// :: (number) → {type: NodeType, next: ContentMatch}\n// Get the _n_​th outgoing edge from this node in the finite\n// automaton that describes the content expression.\nContentMatch.prototype.edge = function edge (n) {\n var i = n << 1;\n if (i >= this.next.length) { throw new RangeError((\"There's no \" + n + \"th edge in this content match\")) }\n return {type: this.next[i], next: this.next[i + 1]}\n};\n\nContentMatch.prototype.toString = function toString () {\n var seen = [];\n function scan(m) {\n seen.push(m);\n for (var i = 1; i < m.next.length; i += 2)\n { if (seen.indexOf(m.next[i]) == -1) { scan(m.next[i]); } }\n }\n scan(this);\n return seen.map(function (m, i) {\n var out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (var i$1 = 0; i$1 < m.next.length; i$1 += 2)\n { out += (i$1 ? \", \" : \"\") + m.next[i$1].name + \"->\" + seen.indexOf(m.next[i$1 + 1]); }\n return out\n }).join(\"\\n\")\n};\n\nObject.defineProperties( ContentMatch.prototype, prototypeAccessors$4 );\n\nContentMatch.empty = new ContentMatch(true);\n\nvar TokenStream = function TokenStream(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\") { this.tokens.pop(); }\n if (this.tokens[0] == \"\") { this.tokens.shift(); }\n};\n\nvar prototypeAccessors$1$2 = { next: { configurable: true } };\n\nprototypeAccessors$1$2.next.get = function () { return this.tokens[this.pos] };\n\nTokenStream.prototype.eat = function eat (tok) { return this.next == tok && (this.pos++ || true) };\n\nTokenStream.prototype.err = function err (str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\") };\n\nObject.defineProperties( TokenStream.prototype, prototypeAccessors$1$2 );\n\nfunction parseExpr(stream) {\n var exprs = [];\n do { exprs.push(parseExprSeq(stream)); }\n while (stream.eat(\"|\"))\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs: exprs}\n}\n\nfunction parseExprSeq(stream) {\n var exprs = [];\n do { exprs.push(parseExprSubscript(stream)); }\n while (stream.next && stream.next != \")\" && stream.next != \"|\")\n return exprs.length == 1 ? exprs[0] : {type: \"seq\", exprs: exprs}\n}\n\nfunction parseExprSubscript(stream) {\n var expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n { expr = {type: \"plus\", expr: expr}; }\n else if (stream.eat(\"*\"))\n { expr = {type: \"star\", expr: expr}; }\n else if (stream.eat(\"?\"))\n { expr = {type: \"opt\", expr: expr}; }\n else if (stream.eat(\"{\"))\n { expr = parseExprRange(stream, expr); }\n else { break }\n }\n return expr\n}\n\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next)) { stream.err(\"Expected number, got '\" + stream.next + \"'\"); }\n var result = Number(stream.next);\n stream.pos++;\n return result\n}\n\nfunction parseExprRange(stream, expr) {\n var min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\") { max = parseNum(stream); }\n else { max = -1; }\n }\n if (!stream.eat(\"}\")) { stream.err(\"Unclosed braced range\"); }\n return {type: \"range\", min: min, max: max, expr: expr}\n}\n\nfunction resolveName(stream, name) {\n var types = stream.nodeTypes, type = types[name];\n if (type) { return [type] }\n var result = [];\n for (var typeName in types) {\n var type$1 = types[typeName];\n if (type$1.groups.indexOf(name) > -1) { result.push(type$1); }\n }\n if (result.length == 0) { stream.err(\"No node type or group '\" + name + \"' found\"); }\n return result\n}\n\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n var expr = parseExpr(stream);\n if (!stream.eat(\")\")) { stream.err(\"Missing closing paren\"); }\n return expr\n } else if (!/\\W/.test(stream.next)) {\n var exprs = resolveName(stream, stream.next).map(function (type) {\n if (stream.inline == null) { stream.inline = type.isInline; }\n else if (stream.inline != type.isInline) { stream.err(\"Mixing inline and block content\"); }\n return {type: \"name\", value: type}\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs: exprs}\n } else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n\n// The code below helps compile a regular-expression-like language\n// into a deterministic finite automaton. For a good introduction to\n// these concepts, see https://swtch.com/~rsc/regexp/regexp1.html\n\n// : (Object) → [[{term: ?any, to: number}]]\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n var nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa\n\n function node() { return nfa.push([]) - 1 }\n function edge(from, to, term) {\n var edge = {term: term, to: to};\n nfa[from].push(edge);\n return edge\n }\n function connect(edges, to) { edges.forEach(function (edge) { return edge.to = to; }); }\n\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce(function (out, expr) { return out.concat(compile(expr, from)); }, [])\n } else if (expr.type == \"seq\") {\n for (var i = 0;; i++) {\n var next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1) { return next }\n connect(next, from = node());\n }\n } else if (expr.type == \"star\") {\n var loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)]\n } else if (expr.type == \"plus\") {\n var loop$1 = node();\n connect(compile(expr.expr, from), loop$1);\n connect(compile(expr.expr, loop$1), loop$1);\n return [edge(loop$1)]\n } else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from))\n } else if (expr.type == \"range\") {\n var cur = from;\n for (var i$1 = 0; i$1 < expr.min; i$1++) {\n var next$1 = node();\n connect(compile(expr.expr, cur), next$1);\n cur = next$1;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n } else {\n for (var i$2 = expr.min; i$2 < expr.max; i$2++) {\n var next$2 = node();\n edge(cur, next$2);\n connect(compile(expr.expr, cur), next$2);\n cur = next$2;\n }\n }\n return [edge(cur)]\n } else if (expr.type == \"name\") {\n return [edge(from, null, expr.value)]\n }\n }\n}\n\nfunction cmp(a, b) { return b - a }\n\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n var result = [];\n scan(node);\n return result.sort(cmp)\n\n function scan(node) {\n var edges = nfa[node];\n if (edges.length == 1 && !edges[0].term) { return scan(edges[0].to) }\n result.push(node);\n for (var i = 0; i < edges.length; i++) {\n var ref = edges[i];\n var term = ref.term;\n var to = ref.to;\n if (!term && result.indexOf(to) == -1) { scan(to); }\n }\n }\n}\n\n// : ([[{term: ?any, to: number}]]) → ContentMatch\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n var labeled = Object.create(null);\n return explore(nullFrom(nfa, 0))\n\n function explore(states) {\n var out = [];\n states.forEach(function (node) {\n nfa[node].forEach(function (ref) {\n var term = ref.term;\n var to = ref.to;\n\n if (!term) { return }\n var known = out.indexOf(term), set = known > -1 && out[known + 1];\n nullFrom(nfa, to).forEach(function (node) {\n if (!set) { out.push(term, set = []); }\n if (set.indexOf(node) == -1) { set.push(node); }\n });\n });\n });\n var state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (var i = 0; i < out.length; i += 2) {\n var states$1 = out[i + 1].sort(cmp);\n state.next.push(out[i], labeled[states$1.join(\",\")] || explore(states$1));\n }\n return state\n }\n}\n\nfunction checkForDeadEnds(match, stream) {\n for (var i = 0, work = [match]; i < work.length; i++) {\n var state = work[i], dead = !state.validEnd, nodes = [];\n for (var j = 0; j < state.next.length; j += 2) {\n var node = state.next[j], next = state.next[j + 1];\n nodes.push(node.name);\n if (dead && !(node.isText || node.hasRequiredAttrs())) { dead = false; }\n if (work.indexOf(next) == -1) { work.push(next); }\n }\n if (dead) { stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\"); }\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n var defaults = Object.create(null);\n for (var attrName in attrs) {\n var attr = attrs[attrName];\n if (!attr.hasDefault) { return null }\n defaults[attrName] = attr.default;\n }\n return defaults\n}\n\nfunction computeAttrs(attrs, value) {\n var built = Object.create(null);\n for (var name in attrs) {\n var given = value && value[name];\n if (given === undefined) {\n var attr = attrs[name];\n if (attr.hasDefault) { given = attr.default; }\n else { throw new RangeError(\"No value supplied for attribute \" + name) }\n }\n built[name] = given;\n }\n return built\n}\n\nfunction initAttrs(attrs) {\n var result = Object.create(null);\n if (attrs) { for (var name in attrs) { result[name] = new Attribute(attrs[name]); } }\n return result\n}\n\n// ::- Node types are objects allocated once per `Schema` and used to\n// [tag](#model.Node.type) `Node` instances. They contain information\n// about the node type, such as its name and what kind of node it\n// represents.\nvar NodeType = function NodeType(name, schema, spec) {\n // :: string\n // The name the node type has in this schema.\n this.name = name;\n\n // :: Schema\n // A link back to the `Schema` the node type belongs to.\n this.schema = schema;\n\n // :: NodeSpec\n // The spec that this type is based on\n this.spec = spec;\n\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n\n this.defaultAttrs = defaultAttrs(this.attrs);\n\n // :: ContentMatch\n // The starting match of the node type's content expression.\n this.contentMatch = null;\n\n // : ?[MarkType]\n // The set of marks allowed in this node. `null` means all marks\n // are allowed.\n this.markSet = null;\n\n // :: bool\n // True if this node type has inline content.\n this.inlineContent = null;\n\n // :: bool\n // True if this is a block type\n this.isBlock = !(spec.inline || name == \"text\");\n\n // :: bool\n // True if this is the text node type.\n this.isText = name == \"text\";\n};\n\nvar prototypeAccessors$5 = { isInline: { configurable: true },isTextblock: { configurable: true },isLeaf: { configurable: true },isAtom: { configurable: true } };\n\n// :: bool\n// True if this is an inline type.\nprototypeAccessors$5.isInline.get = function () { return !this.isBlock };\n\n// :: bool\n// True if this is a textblock type, a block that contains inline\n// content.\nprototypeAccessors$5.isTextblock.get = function () { return this.isBlock && this.inlineContent };\n\n// :: bool\n// True for node types that allow no content.\nprototypeAccessors$5.isLeaf.get = function () { return this.contentMatch == ContentMatch.empty };\n\n// :: bool\n// True when this node is an atom, i.e. when it does not have\n// directly editable content.\nprototypeAccessors$5.isAtom.get = function () { return this.isLeaf || this.spec.atom };\n\n// :: () → bool\n// Tells you whether this node type has any required attributes.\nNodeType.prototype.hasRequiredAttrs = function hasRequiredAttrs () {\n for (var n in this.attrs) { if (this.attrs[n].isRequired) { return true } }\n return false\n};\n\nNodeType.prototype.compatibleContent = function compatibleContent (other) {\n return this == other || this.contentMatch.compatible(other.contentMatch)\n};\n\nNodeType.prototype.computeAttrs = function computeAttrs$1 (attrs) {\n if (!attrs && this.defaultAttrs) { return this.defaultAttrs }\n else { return computeAttrs(this.attrs, attrs) }\n};\n\n// :: (?Object, ?union, ?[Mark]) → Node\n// Create a `Node` of this type. The given attributes are\n// checked and defaulted (you can pass `null` to use the type's\n// defaults entirely, if no required attributes exist). `content`\n// may be a `Fragment`, a node, an array of nodes, or\n// `null`. Similarly `marks` may be `null` to default to the empty\n// set of marks.\nNodeType.prototype.create = function create (attrs, content, marks) {\n if (this.isText) { throw new Error(\"NodeType.create can't construct text nodes\") }\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks))\n};\n\n// :: (?Object, ?union, ?[Mark]) → Node\n// Like [`create`](#model.NodeType.create), but check the given content\n// against the node type's content restrictions, and throw an error\n// if it doesn't match.\nNodeType.prototype.createChecked = function createChecked (attrs, content, marks) {\n content = Fragment.from(content);\n if (!this.validContent(content))\n { throw new RangeError(\"Invalid content for node \" + this.name) }\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks))\n};\n\n// :: (?Object, ?union, ?[Mark]) → ?Node\n// Like [`create`](#model.NodeType.create), but see if it is necessary to\n// add nodes to the start or end of the given fragment to make it\n// fit the node. If no fitting wrapping can be found, return null.\n// Note that, due to the fact that required nodes can always be\n// created, this will always succeed if you pass null or\n// `Fragment.empty` as content.\nNodeType.prototype.createAndFill = function createAndFill (attrs, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n var before = this.contentMatch.fillBefore(content);\n if (!before) { return null }\n content = before.append(content);\n }\n var after = this.contentMatch.matchFragment(content).fillBefore(Fragment.empty, true);\n if (!after) { return null }\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks))\n};\n\n// :: (Fragment) → bool\n// Returns true if the given fragment is valid content for this node\n// type with the given attributes.\nNodeType.prototype.validContent = function validContent (content) {\n var result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd) { return false }\n for (var i = 0; i < content.childCount; i++)\n { if (!this.allowsMarks(content.child(i).marks)) { return false } }\n return true\n};\n\n// :: (MarkType) → bool\n// Check whether the given mark type is allowed in this node.\nNodeType.prototype.allowsMarkType = function allowsMarkType (markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1\n};\n\n// :: ([Mark]) → bool\n// Test whether the given set of marks are allowed in this node.\nNodeType.prototype.allowsMarks = function allowsMarks (marks) {\n if (this.markSet == null) { return true }\n for (var i = 0; i < marks.length; i++) { if (!this.allowsMarkType(marks[i].type)) { return false } }\n return true\n};\n\n// :: ([Mark]) → [Mark]\n// Removes the marks that are not allowed in this node from the given set.\nNodeType.prototype.allowedMarks = function allowedMarks (marks) {\n if (this.markSet == null) { return marks }\n var copy;\n for (var i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy) { copy = marks.slice(0, i); }\n } else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.empty\n};\n\nNodeType.compile = function compile (nodes, schema) {\n var result = Object.create(null);\n nodes.forEach(function (name, spec) { return result[name] = new NodeType(name, schema, spec); });\n\n var topType = schema.spec.topNode || \"doc\";\n if (!result[topType]) { throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\") }\n if (!result.text) { throw new RangeError(\"Every schema needs a 'text' type\") }\n for (var _ in result.text.attrs) { throw new RangeError(\"The text node type should not have attributes\") }\n\n return result\n};\n\nObject.defineProperties( NodeType.prototype, prototypeAccessors$5 );\n\n// Attribute descriptors\n\nvar Attribute = function Attribute(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n};\n\nvar prototypeAccessors$1$3 = { isRequired: { configurable: true } };\n\nprototypeAccessors$1$3.isRequired.get = function () {\n return !this.hasDefault\n};\n\nObject.defineProperties( Attribute.prototype, prototypeAccessors$1$3 );\n\n// Marks\n\n// ::- Like nodes, marks (which are associated with nodes to signify\n// things like emphasis or being part of a link) are\n// [tagged](#model.Mark.type) with type objects, which are\n// instantiated once per `Schema`.\nvar MarkType = function MarkType(name, rank, schema, spec) {\n // :: string\n // The name of the mark type.\n this.name = name;\n\n // :: Schema\n // The schema that this mark type instance is part of.\n this.schema = schema;\n\n // :: MarkSpec\n // The spec on which the type is based.\n this.spec = spec;\n\n this.attrs = initAttrs(spec.attrs);\n\n this.rank = rank;\n this.excluded = null;\n var defaults = defaultAttrs(this.attrs);\n this.instance = defaults && new Mark(this, defaults);\n};\n\n// :: (?Object) → Mark\n// Create a mark of this type. `attrs` may be `null` or an object\n// containing only some of the mark's attributes. The others, if\n// they have defaults, will be added.\nMarkType.prototype.create = function create (attrs) {\n if (!attrs && this.instance) { return this.instance }\n return new Mark(this, computeAttrs(this.attrs, attrs))\n};\n\nMarkType.compile = function compile (marks, schema) {\n var result = Object.create(null), rank = 0;\n marks.forEach(function (name, spec) { return result[name] = new MarkType(name, rank++, schema, spec); });\n return result\n};\n\n// :: ([Mark]) → [Mark]\n// When there is a mark of this type in the given set, a new set\n// without it is returned. Otherwise, the input set is returned.\nMarkType.prototype.removeFromSet = function removeFromSet (set) {\n for (var i = 0; i < set.length; i++) { if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n } }\n return set\n};\n\n// :: ([Mark]) → ?Mark\n// Tests whether there is a mark of this type in the given set.\nMarkType.prototype.isInSet = function isInSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (set[i].type == this) { return set[i] } }\n};\n\n// :: (MarkType) → bool\n// Queries whether a given mark type is\n// [excluded](#model.MarkSpec.excludes) by this one.\nMarkType.prototype.excludes = function excludes (other) {\n return this.excluded.indexOf(other) > -1\n};\n\n// SchemaSpec:: interface\n// An object describing a schema, as passed to the [`Schema`](#model.Schema)\n// constructor.\n//\n// nodes:: union, OrderedMap>\n// The node types in this schema. Maps names to\n// [`NodeSpec`](#model.NodeSpec) objects that describe the node type\n// associated with that name. Their order is significant—it\n// determines which [parse rules](#model.NodeSpec.parseDOM) take\n// precedence by default, and which nodes come first in a given\n// [group](#model.NodeSpec.group).\n//\n// marks:: ?union, OrderedMap>\n// The mark types that exist in this schema. The order in which they\n// are provided determines the order in which [mark\n// sets](#model.Mark.addToSet) are sorted and in which [parse\n// rules](#model.MarkSpec.parseDOM) are tried.\n//\n// topNode:: ?string\n// The name of the default top-level node for the schema. Defaults\n// to `\"doc\"`.\n\n// NodeSpec:: interface\n//\n// content:: ?string\n// The content expression for this node, as described in the [schema\n// guide](/docs/guide/#schema.content_expressions). When not given,\n// the node does not allow any content.\n//\n// marks:: ?string\n// The marks that are allowed inside of this node. May be a\n// space-separated string referring to mark names or groups, `\"_\"`\n// to explicitly allow all marks, or `\"\"` to disallow marks. When\n// not given, nodes with inline content default to allowing all\n// marks, other nodes default to not allowing marks.\n//\n// group:: ?string\n// The group or space-separated groups to which this node belongs,\n// which can be referred to in the content expressions for the\n// schema.\n//\n// inline:: ?bool\n// Should be set to true for inline nodes. (Implied for text nodes.)\n//\n// atom:: ?bool\n// Can be set to true to indicate that, though this isn't a [leaf\n// node](#model.NodeType.isLeaf), it doesn't have directly editable\n// content and should be treated as a single unit in the view.\n//\n// attrs:: ?Object\n// The attributes that nodes of this type get.\n//\n// selectable:: ?bool\n// Controls whether nodes of this type can be selected as a [node\n// selection](#state.NodeSelection). Defaults to true for non-text\n// nodes.\n//\n// draggable:: ?bool\n// Determines whether nodes of this type can be dragged without\n// being selected. Defaults to false.\n//\n// code:: ?bool\n// Can be used to indicate that this node contains code, which\n// causes some commands to behave differently.\n//\n// defining:: ?bool\n// Determines whether this node is considered an important parent\n// node during replace operations (such as paste). Non-defining (the\n// default) nodes get dropped when their entire content is replaced,\n// whereas defining nodes persist and wrap the inserted content.\n// Likewise, in _inserted_ content the defining parents of the\n// content are preserved when possible. Typically,\n// non-default-paragraph textblock types, and possibly list items,\n// are marked as defining.\n//\n// isolating:: ?bool\n// When enabled (default is false), the sides of nodes of this type\n// count as boundaries that regular editing operations, like\n// backspacing or lifting, won't cross. An example of a node that\n// should probably have this enabled is a table cell.\n//\n// toDOM:: ?(node: Node) → DOMOutputSpec\n// Defines the default way a node of this type should be serialized\n// to DOM/HTML (as used by\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)).\n// Should return a DOM node or an [array\n// structure](#model.DOMOutputSpec) that describes one, with an\n// optional number zero (“hole”) in it to indicate where the node's\n// content should be inserted.\n//\n// For text nodes, the default is to create a text DOM node. Though\n// it is possible to create a serializer where text is rendered\n// differently, this is not supported inside the editor, so you\n// shouldn't override that in your text node spec.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this node, which can be\n// used by [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) to\n// automatically derive a parser. The `node` field in the rules is\n// implied (the name of this node will be filled in automatically).\n// If you supply your own parser, you do not need to also specify\n// parsing rules in your schema.\n//\n// toDebugString:: ?(node: Node) -> string\n// Defines the default way a node of this type should be serialized\n// to a string representation for debugging (e.g. in error messages).\n\n// MarkSpec:: interface\n//\n// attrs:: ?Object\n// The attributes that marks of this type get.\n//\n// inclusive:: ?bool\n// Whether this mark should be active when the cursor is positioned\n// at its end (or at its start when that is also the start of the\n// parent node). Defaults to true.\n//\n// excludes:: ?string\n// Determines which other marks this mark can coexist with. Should\n// be a space-separated strings naming other marks or groups of marks.\n// When a mark is [added](#model.Mark.addToSet) to a set, all marks\n// that it excludes are removed in the process. If the set contains\n// any mark that excludes the new mark but is not, itself, excluded\n// by the new mark, the mark can not be added an the set. You can\n// use the value `\"_\"` to indicate that the mark excludes all\n// marks in the schema.\n//\n// Defaults to only being exclusive with marks of the same type. You\n// can set it to an empty string (or any string not containing the\n// mark's own name) to allow multiple marks of a given type to\n// coexist (as long as they have different attributes).\n//\n// group:: ?string\n// The group or space-separated groups to which this mark belongs.\n//\n// spanning:: ?bool\n// Determines whether marks of this type can span multiple adjacent\n// nodes when serialized to DOM/HTML. Defaults to true.\n//\n// toDOM:: ?(mark: Mark, inline: bool) → DOMOutputSpec\n// Defines the default way marks of this type should be serialized\n// to DOM/HTML. When the resulting spec contains a hole, that is\n// where the marked content is placed. Otherwise, it is appended to\n// the top node.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this mark (see the\n// corresponding [node spec field](#model.NodeSpec.parseDOM)). The\n// `mark` field in the rules is implied.\n\n// AttributeSpec:: interface\n//\n// Used to [define](#model.NodeSpec.attrs) attributes on nodes or\n// marks.\n//\n// default:: ?any\n// The default value for this attribute, to use when no explicit\n// value is provided. Attributes that have no default must be\n// provided whenever a node or mark of a type that has them is\n// created.\n\n// ::- A document schema. Holds [node](#model.NodeType) and [mark\n// type](#model.MarkType) objects for the nodes and marks that may\n// occur in conforming documents, and provides functionality for\n// creating and deserializing such documents.\nvar Schema = function Schema(spec) {\n // :: SchemaSpec\n // The [spec](#model.SchemaSpec) on which the schema is based,\n // with the added guarantee that its `nodes` and `marks`\n // properties are\n // [`OrderedMap`](https://github.com/marijnh/orderedmap) instances\n // (not raw objects).\n this.spec = {};\n for (var prop in spec) { this.spec[prop] = spec[prop]; }\n this.spec.nodes = OrderedMap.from(spec.nodes);\n this.spec.marks = OrderedMap.from(spec.marks);\n\n // :: Object\n // An object mapping the schema's node names to node type objects.\n this.nodes = NodeType.compile(this.spec.nodes, this);\n\n // :: Object\n // A map from mark names to mark type objects.\n this.marks = MarkType.compile(this.spec.marks, this);\n\n var contentExprCache = Object.create(null);\n for (var prop$1 in this.nodes) {\n if (prop$1 in this.marks)\n { throw new RangeError(prop$1 + \" can not be both a node and a mark\") }\n var type = this.nodes[prop$1], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (var prop$2 in this.marks) {\n var type$1 = this.marks[prop$2], excl = type$1.spec.excludes;\n type$1.excluded = excl == null ? [type$1] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n\n // :: NodeType\n // The type of the [default top node](#model.SchemaSpec.topNode)\n // for this schema.\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n\n // :: Object\n // An object for storing whatever values modules may want to\n // compute and cache per schema. (If you want to store something\n // in it, try to use property names unlikely to clash.)\n this.cached = Object.create(null);\n this.cached.wrappings = Object.create(null);\n};\n\n// :: (union, ?Object, ?union, ?[Mark]) → Node\n// Create a node in this schema. The `type` may be a string or a\n// `NodeType` instance. Attributes will be extended\n// with defaults, `content` may be a `Fragment`,\n// `null`, a `Node`, or an array of nodes.\nSchema.prototype.node = function node (type, attrs, content, marks) {\n if (typeof type == \"string\")\n { type = this.nodeType(type); }\n else if (!(type instanceof NodeType))\n { throw new RangeError(\"Invalid node type: \" + type) }\n else if (type.schema != this)\n { throw new RangeError(\"Node type from different schema used (\" + type.name + \")\") }\n\n return type.createChecked(attrs, content, marks)\n};\n\n// :: (string, ?[Mark]) → Node\n// Create a text node in the schema. Empty text nodes are not\n// allowed.\nSchema.prototype.text = function text (text$1, marks) {\n var type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text$1, Mark.setFrom(marks))\n};\n\n// :: (union, ?Object) → Mark\n// Create a mark with the given type and attributes.\nSchema.prototype.mark = function mark (type, attrs) {\n if (typeof type == \"string\") { type = this.marks[type]; }\n return type.create(attrs)\n};\n\n// :: (Object) → Node\n// Deserialize a node from its JSON representation. This method is\n// bound.\nSchema.prototype.nodeFromJSON = function nodeFromJSON (json) {\n return Node.fromJSON(this, json)\n};\n\n// :: (Object) → Mark\n// Deserialize a mark from its JSON representation. This method is\n// bound.\nSchema.prototype.markFromJSON = function markFromJSON (json) {\n return Mark.fromJSON(this, json)\n};\n\nSchema.prototype.nodeType = function nodeType (name) {\n var found = this.nodes[name];\n if (!found) { throw new RangeError(\"Unknown node type: \" + name) }\n return found\n};\n\nfunction gatherMarks(schema, marks) {\n var found = [];\n for (var i = 0; i < marks.length; i++) {\n var name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n } else {\n for (var prop in schema.marks) {\n var mark$1 = schema.marks[prop];\n if (name == \"_\" || (mark$1.spec.group && mark$1.spec.group.split(\" \").indexOf(name) > -1))\n { found.push(ok = mark$1); }\n }\n }\n if (!ok) { throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\") }\n }\n return found\n}\n\n// ParseOptions:: interface\n// These are the options recognized by the\n// [`parse`](#model.DOMParser.parse) and\n// [`parseSlice`](#model.DOMParser.parseSlice) methods.\n//\n// preserveWhitespace:: ?union\n// By default, whitespace is collapsed as per HTML's rules. Pass\n// `true` to preserve whitespace, but normalize newlines to\n// spaces, and `\"full\"` to preserve whitespace entirely.\n//\n// findPositions:: ?[{node: dom.Node, offset: number}]\n// When given, the parser will, beside parsing the content,\n// record the document positions of the given DOM positions. It\n// will do so by writing to the objects, adding a `pos` property\n// that holds the document position. DOM positions that are not\n// in the parsed content will not be written to.\n//\n// from:: ?number\n// The child node index to start parsing from.\n//\n// to:: ?number\n// The child node index to stop parsing at.\n//\n// topNode:: ?Node\n// By default, the content is parsed into the schema's default\n// [top node type](#model.Schema.topNodeType). You can pass this\n// option to use the type and attributes from a different node\n// as the top container.\n//\n// topMatch:: ?ContentMatch\n// Provide the starting content match that content parsed into the\n// top node is matched against.\n//\n// context:: ?ResolvedPos\n// A set of additional nodes to count as\n// [context](#model.ParseRule.context) when parsing, above the\n// given [top node](#model.ParseOptions.topNode).\n\n// ParseRule:: interface\n// A value that describes how to parse a given DOM node or inline\n// style as a ProseMirror node or mark.\n//\n// tag:: ?string\n// A CSS selector describing the kind of DOM elements to match. A\n// single rule should have _either_ a `tag` or a `style` property.\n//\n// namespace:: ?string\n// The namespace to match. This should be used with `tag`.\n// Nodes are only matched when the namespace matches or this property\n// is null.\n//\n// style:: ?string\n// A CSS property name to match. When given, this rule matches\n// inline styles that list that property. May also have the form\n// `\"property=value\"`, in which case the rule only matches if the\n// property's value exactly matches the given value. (For more\n// complicated filters, use [`getAttrs`](#model.ParseRule.getAttrs)\n// and return false to indicate that the match failed.) Rules\n// matching styles may only produce [marks](#model.ParseRule.mark),\n// not nodes.\n//\n// priority:: ?number\n// Can be used to change the order in which the parse rules in a\n// schema are tried. Those with higher priority come first. Rules\n// without a priority are counted as having priority 50. This\n// property is only meaningful in a schema—when directly\n// constructing a parser, the order of the rule array is used.\n//\n// consuming:: ?boolean\n// By default, when a rule matches an element or style, no further\n// rules get a chance to match it. By setting this to `false`, you\n// indicate that even when this rule matches, other rules that come\n// after it should also run.\n//\n// context:: ?string\n// When given, restricts this rule to only match when the current\n// context—the parent nodes into which the content is being\n// parsed—matches this expression. Should contain one or more node\n// names or node group names followed by single or double slashes.\n// For example `\"paragraph/\"` means the rule only matches when the\n// parent node is a paragraph, `\"blockquote/paragraph/\"` restricts\n// it to be in a paragraph that is inside a blockquote, and\n// `\"section//\"` matches any position inside a section—a double\n// slash matches any sequence of ancestor nodes. To allow multiple\n// different contexts, they can be separated by a pipe (`|`)\n// character, as in `\"blockquote/|list_item/\"`.\n//\n// node:: ?string\n// The name of the node type to create when this rule matches. Only\n// valid for rules with a `tag` property, not for style rules. Each\n// rule should have one of a `node`, `mark`, or `ignore` property\n// (except when it appears in a [node](#model.NodeSpec.parseDOM) or\n// [mark spec](#model.MarkSpec.parseDOM), in which case the `node`\n// or `mark` property will be derived from its position).\n//\n// mark:: ?string\n// The name of the mark type to wrap the matched content in.\n//\n// ignore:: ?bool\n// When true, ignore content that matches this rule.\n//\n// closeParent:: ?bool\n// When true, finding an element that matches this rule will close\n// the current node.\n//\n// skip:: ?bool\n// When true, ignore the node that matches this rule, but do parse\n// its content.\n//\n// attrs:: ?Object\n// Attributes for the node or mark created by this rule. When\n// `getAttrs` is provided, it takes precedence.\n//\n// getAttrs:: ?(union) → ?union\n// A function used to compute the attributes for the node or mark\n// created by this rule. Can also be used to describe further\n// conditions the DOM element or style must match. When it returns\n// `false`, the rule won't match. When it returns null or undefined,\n// that is interpreted as an empty/default set of attributes.\n//\n// Called with a DOM Element for `tag` rules, and with a string (the\n// style's value) for `style` rules.\n//\n// contentElement:: ?union\n// For `tag` rules that produce non-leaf nodes or marks, by default\n// the content of the DOM element is parsed as content of the mark\n// or node. If the child nodes are in a descendent node, this may be\n// a CSS selector string that the parser must use to find the actual\n// content element, or a function that returns the actual content\n// element to the parser.\n//\n// getContent:: ?(dom.Node, schema: Schema) → Fragment\n// Can be used to override the content of a matched node. When\n// present, instead of parsing the node's child nodes, the result of\n// this function is used.\n//\n// preserveWhitespace:: ?union\n// Controls whether whitespace should be preserved when parsing the\n// content inside the matched element. `false` means whitespace may\n// be collapsed, `true` means that whitespace should be preserved\n// but newlines normalized to spaces, and `\"full\"` means that\n// newlines should also be preserved.\n\n// ::- A DOM parser represents a strategy for parsing DOM content into\n// a ProseMirror document conforming to a given schema. Its behavior\n// is defined by an array of [rules](#model.ParseRule).\nvar DOMParser = function DOMParser(schema, rules) {\n var this$1 = this;\n\n // :: Schema\n // The schema into which the parser parses.\n this.schema = schema;\n // :: [ParseRule]\n // The set of [parse rules](#model.ParseRule) that the parser\n // uses, in order of precedence.\n this.rules = rules;\n this.tags = [];\n this.styles = [];\n\n rules.forEach(function (rule) {\n if (rule.tag) { this$1.tags.push(rule); }\n else if (rule.style) { this$1.styles.push(rule); }\n });\n\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(function (r) {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node) { return false }\n var node = schema.nodes[r.node];\n return node.contentMatch.matchType(node)\n });\n};\n\n// :: (dom.Node, ?ParseOptions) → Node\n// Parse a document from the content of a DOM node.\nDOMParser.prototype.parse = function parse (dom, options) {\n if ( options === void 0 ) options = {};\n\n var context = new ParseContext(this, options, false);\n context.addAll(dom, null, options.from, options.to);\n return context.finish()\n};\n\n// :: (dom.Node, ?ParseOptions) → Slice\n// Parses the content of the given DOM node, like\n// [`parse`](#model.DOMParser.parse), and takes the same set of\n// options. But unlike that method, which produces a whole node,\n// this one returns a slice that is open at the sides, meaning that\n// the schema constraints aren't applied to the start of nodes to\n// the left of the input and the end of nodes at the end.\nDOMParser.prototype.parseSlice = function parseSlice (dom, options) {\n if ( options === void 0 ) options = {};\n\n var context = new ParseContext(this, options, true);\n context.addAll(dom, null, options.from, options.to);\n return Slice.maxOpen(context.finish())\n};\n\nDOMParser.prototype.matchTag = function matchTag (dom, context, after) {\n for (var i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n var rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n var result = rule.getAttrs(dom);\n if (result === false) { continue }\n rule.attrs = result;\n }\n return rule\n }\n }\n};\n\nDOMParser.prototype.matchStyle = function matchStyle (prop, value, context, after) {\n for (var i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n var rule = this.styles[i];\n if (rule.style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n rule.style.length > prop.length &&\n (rule.style.charCodeAt(prop.length) != 61 || rule.style.slice(prop.length + 1) != value))\n { continue }\n if (rule.getAttrs) {\n var result = rule.getAttrs(value);\n if (result === false) { continue }\n rule.attrs = result;\n }\n return rule\n }\n};\n\n// : (Schema) → [ParseRule]\nDOMParser.schemaRules = function schemaRules (schema) {\n var result = [];\n function insert(rule) {\n var priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n var next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority) { break }\n }\n result.splice(i, 0, rule);\n }\n\n var loop = function ( name ) {\n var rules = schema.marks[name].spec.parseDOM;\n if (rules) { rules.forEach(function (rule) {\n insert(rule = copy(rule));\n rule.mark = name;\n }); }\n };\n\n for (var name in schema.marks) loop( name );\n var loop$1 = function ( name ) {\n var rules$1 = schema.nodes[name$1].spec.parseDOM;\n if (rules$1) { rules$1.forEach(function (rule) {\n insert(rule = copy(rule));\n rule.node = name$1;\n }); }\n };\n\n for (var name$1 in schema.nodes) loop$1();\n return result\n};\n\n// :: (Schema) → DOMParser\n// Construct a DOM parser using the parsing rules listed in a\n// schema's [node specs](#model.NodeSpec.parseDOM), reordered by\n// [priority](#model.ParseRule.priority).\nDOMParser.fromSchema = function fromSchema (schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)))\n};\n\n// : Object The block-level tags in HTML5\nvar blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\n\n// : Object The tags that we normally ignore.\nvar ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\n\n// : Object List tags.\nvar listTags = {ol: true, ul: true};\n\n// Using a bitfield for node context options\nvar OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\n\nfunction wsOptionsFor(preserveWhitespace) {\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) | (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0)\n}\n\nvar NodeContext = function NodeContext(type, attrs, marks, pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.solid = solid;\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n this.options = options;\n this.content = [];\n // Marks applied to this node itself\n this.marks = marks;\n // Marks applied to its children\n this.activeMarks = Mark.none;\n // Marks that can't apply here, but will be used in children if possible\n this.pendingMarks = pendingMarks;\n // Nested Marks with same type\n this.stashMarks = [];\n};\n\nNodeContext.prototype.findWrapping = function findWrapping (node) {\n if (!this.match) {\n if (!this.type) { return [] }\n var fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n } else {\n var start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap\n } else {\n return null\n }\n }\n }\n return this.match.findWrapping(node.type)\n};\n\nNodeContext.prototype.finish = function finish (openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n var last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n if (last.text.length == m[0].length) { this.content.pop(); }\n else { this.content[this.content.length - 1] = last.withText(last.text.slice(0, last.text.length - m[0].length)); }\n }\n }\n var content = Fragment.from(this.content);\n if (!openEnd && this.match)\n { content = content.append(this.match.fillBefore(Fragment.empty, true)); }\n return this.type ? this.type.create(this.attrs, content, this.marks) : content\n};\n\nNodeContext.prototype.popFromStashMark = function popFromStashMark (mark) {\n for (var i = this.stashMarks.length - 1; i >= 0; i--)\n { if (mark.eq(this.stashMarks[i])) { return this.stashMarks.splice(i, 1)[0] } }\n};\n\nNodeContext.prototype.applyPending = function applyPending (nextType) {\n for (var i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n var mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n};\n\nNodeContext.prototype.inlineContext = function inlineContext (node) {\n if (this.type) { return this.type.inlineContent }\n if (this.content.length) { return this.content[0].isInline }\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase())\n};\n\nvar ParseContext = function ParseContext(parser, options, open) {\n // : DOMParser The parser we are using.\n this.parser = parser;\n // : Object The options passed to this parse.\n this.options = options;\n this.isOpen = open;\n var topNode = options.topNode, topContext;\n var topOptions = wsOptionsFor(options.preserveWhitespace) | (open ? OPT_OPEN_LEFT : 0);\n if (topNode)\n { topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true,\n options.topMatch || topNode.type.contentMatch, topOptions); }\n else if (open)\n { topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions); }\n else\n { topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions); }\n this.nodes = [topContext];\n // : [Mark] The current set of marks\n this.open = 0;\n this.find = options.findPositions;\n this.needsBlock = false;\n};\n\nvar prototypeAccessors$6 = { top: { configurable: true },currentPos: { configurable: true } };\n\nprototypeAccessors$6.top.get = function () {\n return this.nodes[this.open]\n};\n\n// : (dom.Node)\n// Add a DOM node to the content. Text is inserted as text node,\n// otherwise, the node is passed to `addElement` or, if it has a\n// `style` attribute, `addElementWithStyles`.\nParseContext.prototype.addDOM = function addDOM (dom) {\n if (dom.nodeType == 3) {\n this.addTextNode(dom);\n } else if (dom.nodeType == 1) {\n var style = dom.getAttribute(\"style\");\n var marks = style ? this.readStyles(parseStyles(style)) : null, top = this.top;\n if (marks != null) { for (var i = 0; i < marks.length; i++) { this.addPendingMark(marks[i]); } }\n this.addElement(dom);\n if (marks != null) { for (var i$1 = 0; i$1 < marks.length; i$1++) { this.removePendingMark(marks[i$1], top); } }\n }\n};\n\nParseContext.prototype.addTextNode = function addTextNode (dom) {\n var value = dom.nodeValue;\n var top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n var nodeBefore = top.content[top.content.length - 1];\n var domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n { value = value.slice(1); }\n }\n } else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n } else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value) { this.insertNode(this.parser.schema.text(value)); }\n this.findInText(dom);\n } else {\n this.findInside(dom);\n }\n};\n\n// : (dom.Element, ?ParseRule)\n// Try to find a handler for the given tag and use that to parse. If\n// none is found, the element's content nodes are added directly.\nParseContext.prototype.addElement = function addElement (dom, matchAfter) {\n var name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists) { normalizeList(dom); }\n var rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n } else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent) { this.open = Math.max(0, this.open - 1); }\n else if (rule && rule.skip.nodeType) { dom = rule.skip; }\n var sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n sync = true;\n if (!top.type) { this.needsBlock = true; }\n } else if (!dom.firstChild) {\n this.leafFallback(dom);\n return\n }\n this.addAll(dom);\n if (sync) { this.sync(top); }\n this.needsBlock = oldNeedsBlock;\n } else {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : null);\n }\n};\n\n// Called for leaf DOM nodes that would otherwise be ignored\nParseContext.prototype.leafFallback = function leafFallback (dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n { this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\")); }\n};\n\n// Called for ignored nodes\nParseContext.prototype.ignoreFallback = function ignoreFallback (dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n { this.findPlace(this.parser.schema.text(\"-\")); }\n};\n\n// Run any style parser associated with the node's styles. Either\n// return an array of marks, or null to indicate some of the styles\n// had a rule with `ignore` set.\nParseContext.prototype.readStyles = function readStyles (styles) {\n var marks = Mark.none;\n style: for (var i = 0; i < styles.length; i += 2) {\n for (var after = null;;) {\n var rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after);\n if (!rule) { continue style }\n if (rule.ignore) { return null }\n marks = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(marks);\n if (rule.consuming === false) { after = rule; }\n else { break }\n }\n }\n return marks\n};\n\n// : (dom.Element, ParseRule) → bool\n// Look up a handler for the given node. If none are found, return\n// false. Otherwise, apply it, use its return value to drive the way\n// the node's content is wrapped, and return true.\nParseContext.prototype.addElementByRule = function addElementByRule (dom, rule, continueAfter) {\n var this$1 = this;\n\n var sync, nodeType, markType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs, rule.preserveWhitespace);\n } else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n } else {\n markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n var startIn = this.top;\n\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n } else if (continueAfter) {\n this.addElement(dom, continueAfter);\n } else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(function (node) { return this$1.insertNode(node); });\n } else {\n var contentDOM = rule.contentElement;\n if (typeof contentDOM == \"string\") { contentDOM = dom.querySelector(contentDOM); }\n else if (typeof contentDOM == \"function\") { contentDOM = contentDOM(dom); }\n if (!contentDOM) { contentDOM = dom; }\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM, sync);\n }\n if (sync) { this.sync(startIn); this.open--; }\n if (mark) { this.removePendingMark(mark, startIn); }\n};\n\n// : (dom.Node, ?NodeBuilder, ?number, ?number)\n// Add all child nodes between `startIndex` and `endIndex` (or the\n// whole node, if not given). If `sync` is passed, use it to\n// synchronize after every block element.\nParseContext.prototype.addAll = function addAll (parent, sync, startIndex, endIndex) {\n var index = startIndex || 0;\n for (var dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild,\n end = endIndex == null ? null : parent.childNodes[endIndex];\n dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n if (sync && blockTags.hasOwnProperty(dom.nodeName.toLowerCase()))\n { this.sync(sync); }\n }\n this.findAtPoint(parent, index);\n};\n\n// Try to find a way to fit the given node type into the current\n// context. May add intermediate wrappers and/or leave non-solid\n// nodes that we're in.\nParseContext.prototype.findPlace = function findPlace (node) {\n var route, sync;\n for (var depth = this.open; depth >= 0; depth--) {\n var cx = this.nodes[depth];\n var found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length) { break }\n }\n if (cx.solid) { break }\n }\n if (!route) { return false }\n this.sync(sync);\n for (var i = 0; i < route.length; i++)\n { this.enterInner(route[i], null, false); }\n return true\n};\n\n// : (Node) → ?Node\n// Try to insert the given node, adjusting the context when needed.\nParseContext.prototype.insertNode = function insertNode (node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n var block = this.textblockFromContext();\n if (block) { this.enterInner(block); }\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n var top = this.top;\n top.applyPending(node.type);\n if (top.match) { top.match = top.match.matchType(node.type); }\n var marks = top.activeMarks;\n for (var i = 0; i < node.marks.length; i++)\n { if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n { marks = node.marks[i].addToSet(marks); } }\n top.content.push(node.mark(marks));\n return true\n }\n return false\n};\n\n// : (NodeType, ?Object) → bool\n// Try to start a node of the given type, adjusting the context when\n// necessary.\nParseContext.prototype.enter = function enter (type, attrs, preserveWS) {\n var ok = this.findPlace(type.create(attrs));\n if (ok) { this.enterInner(type, attrs, true, preserveWS); }\n return ok\n};\n\n// Open a node of the given type\nParseContext.prototype.enterInner = function enterInner (type, attrs, solid, preserveWS) {\n this.closeExtra();\n var top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type, attrs);\n var options = preserveWS == null ? top.options & ~OPT_OPEN_LEFT : wsOptionsFor(preserveWS);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0) { options |= OPT_OPEN_LEFT; }\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n};\n\n// Make sure all nodes above this.open are finished and added to\n// their parents\nParseContext.prototype.closeExtra = function closeExtra (openEnd) {\n var i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--) { this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd)); }\n this.nodes.length = this.open + 1;\n }\n};\n\nParseContext.prototype.finish = function finish () {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen)\n};\n\nParseContext.prototype.sync = function sync (to) {\n for (var i = this.open; i >= 0; i--) { if (this.nodes[i] == to) {\n this.open = i;\n return\n } }\n};\n\nprototypeAccessors$6.currentPos.get = function () {\n this.closeExtra();\n var pos = 0;\n for (var i = this.open; i >= 0; i--) {\n var content = this.nodes[i].content;\n for (var j = content.length - 1; j >= 0; j--)\n { pos += content[j].nodeSize; }\n if (i) { pos++; }\n }\n return pos\n};\n\nParseContext.prototype.findAtPoint = function findAtPoint (parent, offset) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n { this.find[i].pos = this.currentPos; }\n } }\n};\n\nParseContext.prototype.findInside = function findInside (parent) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n { this.find[i].pos = this.currentPos; }\n } }\n};\n\nParseContext.prototype.findAround = function findAround (parent, content, before) {\n if (parent != content && this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n var pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n { this.find[i].pos = this.currentPos; }\n }\n } }\n};\n\nParseContext.prototype.findInText = function findInText (textNode) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n { this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset); }\n } }\n};\n\n// : (string) → bool\n// Determines whether the given [context\n// string](#ParseRule.context) matches this context.\nParseContext.prototype.matchesContext = function matchesContext (context) {\n var this$1 = this;\n\n if (context.indexOf(\"|\") > -1)\n { return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this) }\n\n var parts = context.split(\"/\");\n var option = this.options.context;\n var useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n var minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n var match = function (i, depth) {\n for (; i >= 0; i--) {\n var part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0) { continue }\n for (; depth >= minDepth; depth--)\n { if (match(i - 1, depth)) { return true } }\n return false\n } else {\n var next = depth > 0 || (depth == 0 && useRoot) ? this$1.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n { return false }\n depth--;\n }\n }\n return true\n };\n return match(parts.length - 1, this.open)\n};\n\nParseContext.prototype.textblockFromContext = function textblockFromContext () {\n var $context = this.options.context;\n if ($context) { for (var d = $context.depth; d >= 0; d--) {\n var deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs) { return deflt }\n } }\n for (var name in this.parser.schema.nodes) {\n var type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs) { return type }\n }\n};\n\nParseContext.prototype.addPendingMark = function addPendingMark (mark) {\n var found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found) { this.top.stashMarks.push(found); }\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n};\n\nParseContext.prototype.removePendingMark = function removePendingMark (mark, upto) {\n for (var depth = this.open; depth >= 0; depth--) {\n var level = this.nodes[depth];\n var found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n } else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n var stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n { level.activeMarks = stashMark.addToSet(level.activeMarks); }\n }\n if (level == upto) { break }\n }\n};\n\nObject.defineProperties( ParseContext.prototype, prototypeAccessors$6 );\n\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (var child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n var name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n } else if (name == \"li\") {\n prevItem = child;\n } else if (name) {\n prevItem = null;\n }\n }\n}\n\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector)\n}\n\n// : (string) → [string]\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n var re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style)) { result.push(m[1], m[2].trim()); }\n return result\n}\n\nfunction copy(obj) {\n var copy = {};\n for (var prop in obj) { copy[prop] = obj[prop]; }\n return copy\n}\n\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n var nodes = nodeType.schema.nodes;\n var loop = function ( name ) {\n var parent = nodes[name];\n if (!parent.allowsMarkType(markType)) { return }\n var seen = [], scan = function (match) {\n seen.push(match);\n for (var i = 0; i < match.edgeCount; i++) {\n var ref = match.edge(i);\n var type = ref.type;\n var next = ref.next;\n if (type == nodeType) { return true }\n if (seen.indexOf(next) < 0 && scan(next)) { return true }\n }\n };\n if (scan(parent.contentMatch)) { return { v: true } }\n };\n\n for (var name in nodes) {\n var returned = loop( name );\n\n if ( returned ) return returned.v;\n }\n}\n\nfunction findSameMarkInSet(mark, set) {\n for (var i = 0; i < set.length; i++) {\n if (mark.eq(set[i])) { return set[i] }\n }\n}\n\n// DOMOutputSpec:: interface\n// A description of a DOM structure. Can be either a string, which is\n// interpreted as a text node, a DOM node, which is interpreted as\n// itself, a `{dom: Node, contentDOM: ?Node}` object, or an array.\n//\n// An array describes a DOM element. The first value in the array\n// should be a string—the name of the DOM element, optionally prefixed\n// by a namespace URL and a space. If the second element is plain\n// object, it is interpreted as a set of attributes for the element.\n// Any elements after that (including the 2nd if it's not an attribute\n// object) are interpreted as children of the DOM elements, and must\n// either be valid `DOMOutputSpec` values, or the number zero.\n//\n// The number zero (pronounced “hole”) is used to indicate the place\n// where a node's child nodes should be inserted. If it occurs in an\n// output spec, it should be the only child element in its parent\n// node.\n\n// ::- A DOM serializer knows how to convert ProseMirror nodes and\n// marks of various types to DOM nodes.\nvar DOMSerializer = function DOMSerializer(nodes, marks) {\n // :: Object<(node: Node) → DOMOutputSpec>\n // The node serialization functions.\n this.nodes = nodes || {};\n // :: Object\n // The mark serialization functions.\n this.marks = marks || {};\n};\n\n// :: (Fragment, ?Object) → dom.DocumentFragment\n// Serialize the content of this fragment to a DOM fragment. When\n// not in the browser, the `document` option, containing a DOM\n// document, should be passed so that the serializer can create\n// nodes.\nDOMSerializer.prototype.serializeFragment = function serializeFragment (fragment, options, target) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n if (!target) { target = doc(options).createDocumentFragment(); }\n\n var top = target, active = null;\n fragment.forEach(function (node) {\n if (active || node.marks.length) {\n if (!active) { active = []; }\n var keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n var next = node.marks[rendered];\n if (!this$1.marks[next.type.name]) { rendered++; continue }\n if (!next.eq(active[keep]) || next.type.spec.spanning === false) { break }\n keep += 2; rendered++;\n }\n while (keep < active.length) {\n top = active.pop();\n active.pop();\n }\n while (rendered < node.marks.length) {\n var add = node.marks[rendered++];\n var markDOM = this$1.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push(add, top);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this$1.serializeNodeInner(node, options));\n });\n\n return target\n};\n\nDOMSerializer.prototype.serializeNodeInner = function serializeNodeInner (node, options) {\n if ( options === void 0 ) options = {};\n\n var ref =\n DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n var dom = ref.dom;\n var contentDOM = ref.contentDOM;\n if (contentDOM) {\n if (node.isLeaf)\n { throw new RangeError(\"Content hole not allowed in a leaf node spec\") }\n if (options.onContent)\n { options.onContent(node, contentDOM, options); }\n else\n { this.serializeFragment(node.content, options, contentDOM); }\n }\n return dom\n};\n\n// :: (Node, ?Object) → dom.Node\n// Serialize this node to a DOM node. This can be useful when you\n// need to serialize a part of a document, as opposed to the whole\n// document. To serialize a whole document, use\n// [`serializeFragment`](#model.DOMSerializer.serializeFragment) on\n// its [content](#model.Node.content).\nDOMSerializer.prototype.serializeNode = function serializeNode (node, options) {\n if ( options === void 0 ) options = {};\n\n var dom = this.serializeNodeInner(node, options);\n for (var i = node.marks.length - 1; i >= 0; i--) {\n var wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n(wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom\n};\n\nDOMSerializer.prototype.serializeMark = function serializeMark (mark, inline, options) {\n if ( options === void 0 ) options = {};\n\n var toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline))\n};\n\n// :: (dom.Document, DOMOutputSpec) → {dom: dom.Node, contentDOM: ?dom.Node}\n// Render an [output spec](#model.DOMOutputSpec) to a DOM node. If\n// the spec has a hole (zero) in it, `contentDOM` will point at the\n// node with the hole.\nDOMSerializer.renderSpec = function renderSpec (doc, structure, xmlNS) {\n if ( xmlNS === void 0 ) xmlNS = null;\n\n if (typeof structure == \"string\")\n { return {dom: doc.createTextNode(structure)} }\n if (structure.nodeType != null)\n { return {dom: structure} }\n if (structure.dom && structure.dom.nodeType != null)\n { return structure }\n var tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n var contentDOM = null, dom = xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName);\n var attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (var name in attrs) { if (attrs[name] != null) {\n var space$1 = name.indexOf(\" \");\n if (space$1 > 0) { dom.setAttributeNS(name.slice(0, space$1), name.slice(space$1 + 1), attrs[name]); }\n else { dom.setAttribute(name, attrs[name]); }\n } }\n }\n for (var i = start; i < structure.length; i++) {\n var child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n { throw new RangeError(\"Content hole must be the only child of its parent node\") }\n return {dom: dom, contentDOM: dom}\n } else {\n var ref = DOMSerializer.renderSpec(doc, child, xmlNS);\n var inner = ref.dom;\n var innerContent = ref.contentDOM;\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM) { throw new RangeError(\"Multiple content holes\") }\n contentDOM = innerContent;\n }\n }\n }\n return {dom: dom, contentDOM: contentDOM}\n};\n\n// :: (Schema) → DOMSerializer\n// Build a serializer using the [`toDOM`](#model.NodeSpec.toDOM)\n// properties in a schema's node and mark specs.\nDOMSerializer.fromSchema = function fromSchema (schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)))\n};\n\n// : (Schema) → Object<(node: Node) → DOMOutputSpec>\n// Gather the serializers in a schema's node specs into an object.\n// This can be useful as a base to build a custom serializer from.\nDOMSerializer.nodesFromSchema = function nodesFromSchema (schema) {\n var result = gatherToDOM(schema.nodes);\n if (!result.text) { result.text = function (node) { return node.text; }; }\n return result\n};\n\n// : (Schema) → Object<(mark: Mark) → DOMOutputSpec>\n// Gather the serializers in a schema's mark specs into an object.\nDOMSerializer.marksFromSchema = function marksFromSchema (schema) {\n return gatherToDOM(schema.marks)\n};\n\nfunction gatherToDOM(obj) {\n var result = {};\n for (var name in obj) {\n var toDOM = obj[name].spec.toDOM;\n if (toDOM) { result[name] = toDOM; }\n }\n return result\n}\n\nfunction doc(options) {\n // declare global: window\n return options.document || window.document\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { ReplaceError, Slice, Fragment, MarkType } from 'prosemirror-model';\n\n// Mappable:: interface\n// There are several things that positions can be mapped through.\n// Such objects conform to this interface.\n//\n// map:: (pos: number, assoc: ?number) → number\n// Map a position through this object. When given, `assoc` (should\n// be -1 or 1, defaults to 1) determines with which side the\n// position is associated, which determines in which direction to\n// move when a chunk of content is inserted at the mapped position.\n//\n// mapResult:: (pos: number, assoc: ?number) → MapResult\n// Map a position, and return an object containing additional\n// information about the mapping. The result's `deleted` field tells\n// you whether the position was deleted (completely enclosed in a\n// replaced range) during the mapping. When content on only one side\n// is deleted, the position itself is only considered deleted when\n// `assoc` points in the direction of the deleted content.\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\n\nvar lower16 = 0xffff;\nvar factor16 = Math.pow(2, 16);\n\nfunction makeRecover(index, offset) { return index + offset * factor16 }\nfunction recoverIndex(value) { return value & lower16 }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16 }\n\n// ::- An object representing a mapped position with extra\n// information.\nvar MapResult = function MapResult(pos, deleted, recover) {\n if ( deleted === void 0 ) deleted = false;\n if ( recover === void 0 ) recover = null;\n\n // :: number The mapped version of the position.\n this.pos = pos;\n // :: bool Tells you whether the position was deleted, that is,\n // whether the step removed its surroundings from the document.\n this.deleted = deleted;\n this.recover = recover;\n};\n\n// :: class extends Mappable\n// A map describing the deletions and insertions made by a step, which\n// can be used to find the correspondence between positions in the\n// pre-step version of a document and the same position in the\n// post-step version.\nvar StepMap = function StepMap(ranges, inverted) {\n if ( inverted === void 0 ) inverted = false;\n\n this.ranges = ranges;\n this.inverted = inverted;\n};\n\nStepMap.prototype.recover = function recover (value) {\n var diff = 0, index = recoverIndex(value);\n if (!this.inverted) { for (var i = 0; i < index; i++)\n { diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1]; } }\n return this.ranges[index * 3] + diff + recoverOffset(value)\n};\n\n// : (number, ?number) → MapResult\nStepMap.prototype.mapResult = function mapResult (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, false) };\n\n// : (number, ?number) → number\nStepMap.prototype.map = function map (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, true) };\n\nStepMap.prototype._map = function _map (pos, assoc, simple) {\n var diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos) { break }\n var oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n var side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n var result = start + diff + (side < 0 ? 0 : newSize);\n if (simple) { return result }\n var recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n return new MapResult(result, assoc < 0 ? pos != start : pos != end, recover)\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff)\n};\n\nStepMap.prototype.touches = function touches (pos, recover) {\n var diff = 0, index = recoverIndex(recover);\n var oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos) { break }\n var oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3) { return true }\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false\n};\n\n// :: ((oldStart: number, oldEnd: number, newStart: number, newEnd: number))\n// Calls the given function on each of the changed ranges included in\n// this map.\nStepMap.prototype.forEach = function forEach (f) {\n var oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0, diff = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n var oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n};\n\n// :: () → StepMap\n// Create an inverted version of this map. The result can be used to\n// map positions in the post-step document to the pre-step document.\nStepMap.prototype.invert = function invert () {\n return new StepMap(this.ranges, !this.inverted)\n};\n\nStepMap.prototype.toString = function toString () {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges)\n};\n\n// :: (n: number) → StepMap\n// Create a map that moves all positions by offset `n` (which may be\n// negative). This can be useful when applying steps meant for a\n// sub-document to a larger document, or vice-versa.\nStepMap.offset = function offset (n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n])\n};\n\nStepMap.empty = new StepMap([]);\n\n// :: class extends Mappable\n// A mapping represents a pipeline of zero or more [step\n// maps](#transform.StepMap). It has special provisions for losslessly\n// handling mapping positions through a series of steps in which some\n// steps are inverted versions of earlier steps. (This comes up when\n// ‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\n// collaboration or history management.)\nvar Mapping = function Mapping(maps, mirror, from, to) {\n // :: [StepMap]\n // The step maps in this mapping.\n this.maps = maps || [];\n // :: number\n // The starting position in the `maps` array, used when `map` or\n // `mapResult` is called.\n this.from = from || 0;\n // :: number\n // The end position in the `maps` array.\n this.to = to == null ? this.maps.length : to;\n this.mirror = mirror;\n};\n\n// :: (?number, ?number) → Mapping\n// Create a mapping that maps only through a part of this one.\nMapping.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.maps.length;\n\n return new Mapping(this.maps, this.mirror, from, to)\n};\n\nMapping.prototype.copy = function copy () {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to)\n};\n\n// :: (StepMap, ?number)\n// Add a step map to the end of this mapping. If `mirrors` is\n// given, it should be the index of the step map that is the mirror\n// image of this one.\nMapping.prototype.appendMap = function appendMap (map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null) { this.setMirror(this.maps.length - 1, mirrors); }\n};\n\n// :: (Mapping)\n// Add all the step maps in a given mapping to this one (preserving\n// mirroring information).\nMapping.prototype.appendMapping = function appendMapping (mapping) {\n for (var i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n var mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : null);\n }\n};\n\n// :: (number) → ?number\n// Finds the offset of the step map that mirrors the map at the\n// given offset, in this mapping (as per the second argument to\n// `appendMap`).\nMapping.prototype.getMirror = function getMirror (n) {\n if (this.mirror) { for (var i = 0; i < this.mirror.length; i++)\n { if (this.mirror[i] == n) { return this.mirror[i + (i % 2 ? -1 : 1)] } } }\n};\n\nMapping.prototype.setMirror = function setMirror (n, m) {\n if (!this.mirror) { this.mirror = []; }\n this.mirror.push(n, m);\n};\n\n// :: (Mapping)\n// Append the inverse of the given mapping to this one.\nMapping.prototype.appendMappingInverted = function appendMappingInverted (mapping) {\n for (var i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n var mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : null);\n }\n};\n\n// :: () → Mapping\n// Create an inverted version of this mapping.\nMapping.prototype.invert = function invert () {\n var inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse\n};\n\n// : (number, ?number) → number\n// Map a position through this mapping.\nMapping.prototype.map = function map (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n\n if (this.mirror) { return this._map(pos, assoc, true) }\n for (var i = this.from; i < this.to; i++)\n { pos = this.maps[i].map(pos, assoc); }\n return pos\n};\n\n// : (number, ?number) → MapResult\n// Map a position through this mapping, returning a mapping\n// result.\nMapping.prototype.mapResult = function mapResult (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, false) };\n\nMapping.prototype._map = function _map (pos, assoc, simple) {\n var deleted = false;\n\n for (var i = this.from; i < this.to; i++) {\n var map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n var corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue\n }\n }\n\n if (result.deleted) { deleted = true; }\n pos = result.pos;\n }\n\n return simple ? pos : new MapResult(pos, deleted)\n};\n\nfunction TransformError(message) {\n var err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err\n}\n\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n\n// ::- Abstraction to build up and track an array of\n// [steps](#transform.Step) representing a document transformation.\n//\n// Most transforming methods return the `Transform` object itself, so\n// that they can be chained.\nvar Transform = function Transform(doc) {\n // :: Node\n // The current document (the result of applying the steps in the\n // transform).\n this.doc = doc;\n // :: [Step]\n // The steps in this transform.\n this.steps = [];\n // :: [Node]\n // The documents before each of the steps.\n this.docs = [];\n // :: Mapping\n // A mapping with the maps for each of the steps in this transform.\n this.mapping = new Mapping;\n};\n\nvar prototypeAccessors = { before: { configurable: true },docChanged: { configurable: true } };\n\n// :: Node The starting document.\nprototypeAccessors.before.get = function () { return this.docs.length ? this.docs[0] : this.doc };\n\n// :: (step: Step) → this\n// Apply a new step in this transform, saving the result. Throws an\n// error when the step fails.\nTransform.prototype.step = function step (object) {\n var result = this.maybeStep(object);\n if (result.failed) { throw new TransformError(result.failed) }\n return this\n};\n\n// :: (Step) → StepResult\n// Try to apply a step in this transformation, ignoring it if it\n// fails. Returns the step result.\nTransform.prototype.maybeStep = function maybeStep (step) {\n var result = step.apply(this.doc);\n if (!result.failed) { this.addStep(step, result.doc); }\n return result\n};\n\n// :: bool\n// True when the document has been changed (when there are any\n// steps).\nprototypeAccessors.docChanged.get = function () {\n return this.steps.length > 0\n};\n\nTransform.prototype.addStep = function addStep (step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n};\n\nObject.defineProperties( Transform.prototype, prototypeAccessors );\n\nfunction mustOverride() { throw new Error(\"Override me\") }\n\nvar stepsByID = Object.create(null);\n\n// ::- A step object represents an atomic change. It generally applies\n// only to the document it was created for, since the positions\n// stored in it will only make sense for that document.\n//\n// New steps are defined by creating classes that extend `Step`,\n// overriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\n// methods, and registering your class with a unique\n// JSON-serialization identifier using\n// [`Step.jsonID`](#transform.Step^jsonID).\nvar Step = function Step () {};\n\nStep.prototype.apply = function apply (_doc) { return mustOverride() };\n\n// :: () → StepMap\n// Get the step map that represents the changes made by this step,\n// and which can be used to transform between positions in the old\n// and the new document.\nStep.prototype.getMap = function getMap () { return StepMap.empty };\n\n// :: (doc: Node) → Step\n// Create an inverted version of this step. Needs the document as it\n// was before the step as argument.\nStep.prototype.invert = function invert (_doc) { return mustOverride() };\n\n// :: (mapping: Mappable) → ?Step\n// Map this step through a mappable thing, returning either a\n// version of that step with its positions adjusted, or `null` if\n// the step was entirely deleted by the mapping.\nStep.prototype.map = function map (_mapping) { return mustOverride() };\n\n// :: (other: Step) → ?Step\n// Try to merge this step with another one, to be applied directly\n// after it. Returns the merged step when possible, null if the\n// steps can't be merged.\nStep.prototype.merge = function merge (_other) { return null };\n\n// :: () → Object\n// Create a JSON-serializeable representation of this step. When\n// defining this for a custom subclass, make sure the result object\n// includes the step type's [JSON id](#transform.Step^jsonID) under\n// the `stepType` property.\nStep.prototype.toJSON = function toJSON () { return mustOverride() };\n\n// :: (Schema, Object) → Step\n// Deserialize a step from its JSON representation. Will call\n// through to the step class' own implementation of this method.\nStep.fromJSON = function fromJSON (schema, json) {\n if (!json || !json.stepType) { throw new RangeError(\"Invalid input for Step.fromJSON\") }\n var type = stepsByID[json.stepType];\n if (!type) { throw new RangeError((\"No step type \" + (json.stepType) + \" defined\")) }\n return type.fromJSON(schema, json)\n};\n\n// :: (string, constructor)\n// To be able to serialize steps to JSON, each step needs a string\n// ID to attach to its JSON representation. Use this method to\n// register an ID for your step classes. Try to pick something\n// that's unlikely to clash with steps from other modules.\nStep.jsonID = function jsonID (id, stepClass) {\n if (id in stepsByID) { throw new RangeError(\"Duplicate use of step JSON ID \" + id) }\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass\n};\n\n// ::- The result of [applying](#transform.Step.apply) a step. Contains either a\n// new document or a failure value.\nvar StepResult = function StepResult(doc, failed) {\n // :: ?Node The transformed document.\n this.doc = doc;\n // :: ?string Text providing information about a failed step.\n this.failed = failed;\n};\n\n// :: (Node) → StepResult\n// Create a successful step result.\nStepResult.ok = function ok (doc) { return new StepResult(doc, null) };\n\n// :: (string) → StepResult\n// Create a failed step result.\nStepResult.fail = function fail (message) { return new StepResult(null, message) };\n\n// :: (Node, number, number, Slice) → StepResult\n// Call [`Node.replace`](#model.Node.replace) with the given\n// arguments. Create a successful result if it succeeds, and a\n// failed one if it throws a `ReplaceError`.\nStepResult.fromReplace = function fromReplace (doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice))\n } catch (e) {\n if (e instanceof ReplaceError) { return StepResult.fail(e.message) }\n throw e\n }\n};\n\n// ::- Replace a part of the document with a slice of new content.\nvar ReplaceStep = /*@__PURE__*/(function (Step) {\n function ReplaceStep(from, to, slice, structure) {\n Step.call(this);\n // :: number\n // The start position of the replaced range.\n this.from = from;\n // :: number\n // The end position of the replaced range.\n this.to = to;\n // :: Slice\n // The slice to insert.\n this.slice = slice;\n this.structure = !!structure;\n }\n\n if ( Step ) ReplaceStep.__proto__ = Step;\n ReplaceStep.prototype = Object.create( Step && Step.prototype );\n ReplaceStep.prototype.constructor = ReplaceStep;\n\n ReplaceStep.prototype.apply = function apply (doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n { return StepResult.fail(\"Structure replace would overwrite content\") }\n return StepResult.fromReplace(doc, this.from, this.to, this.slice)\n };\n\n ReplaceStep.prototype.getMap = function getMap () {\n return new StepMap([this.from, this.to - this.from, this.slice.size])\n };\n\n ReplaceStep.prototype.invert = function invert (doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to))\n };\n\n ReplaceStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted) { return null }\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice)\n };\n\n ReplaceStep.prototype.merge = function merge (other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure) { return null }\n\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n var slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure)\n } else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n var slice$1 = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice$1, this.structure)\n } else {\n return null\n }\n };\n\n ReplaceStep.prototype.toJSON = function toJSON () {\n var json = {stepType: \"replace\", from: this.from, to: this.to};\n if (this.slice.size) { json.slice = this.slice.toJSON(); }\n if (this.structure) { json.structure = true; }\n return json\n };\n\n ReplaceStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\") }\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure)\n };\n\n return ReplaceStep;\n}(Step));\n\nStep.jsonID(\"replace\", ReplaceStep);\n\n// ::- Replace a part of the document with a slice of content, but\n// preserve a range of the replaced content by moving it into the\n// slice.\nvar ReplaceAroundStep = /*@__PURE__*/(function (Step) {\n function ReplaceAroundStep(from, to, gapFrom, gapTo, slice, insert, structure) {\n Step.call(this);\n // :: number\n // The start position of the replaced range.\n this.from = from;\n // :: number\n // The end position of the replaced range.\n this.to = to;\n // :: number\n // The start of preserved range.\n this.gapFrom = gapFrom;\n // :: number\n // The end of preserved range.\n this.gapTo = gapTo;\n // :: Slice\n // The slice to insert.\n this.slice = slice;\n // :: number\n // The position in the slice where the preserved range should be\n // inserted.\n this.insert = insert;\n this.structure = !!structure;\n }\n\n if ( Step ) ReplaceAroundStep.__proto__ = Step;\n ReplaceAroundStep.prototype = Object.create( Step && Step.prototype );\n ReplaceAroundStep.prototype.constructor = ReplaceAroundStep;\n\n ReplaceAroundStep.prototype.apply = function apply (doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n { return StepResult.fail(\"Structure gap-replace would overwrite content\") }\n\n var gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n { return StepResult.fail(\"Gap is not a flat range\") }\n var inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted) { return StepResult.fail(\"Content does not fit in gap\") }\n return StepResult.fromReplace(doc, this.from, this.to, inserted)\n };\n\n ReplaceAroundStep.prototype.getMap = function getMap () {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert])\n };\n\n ReplaceAroundStep.prototype.invert = function invert (doc) {\n var gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap,\n this.from + this.insert, this.from + this.insert + gap,\n doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from),\n this.gapFrom - this.from, this.structure)\n };\n\n ReplaceAroundStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n var gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deleted && to.deleted) || gapFrom < from.pos || gapTo > to.pos) { return null }\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure)\n };\n\n ReplaceAroundStep.prototype.toJSON = function toJSON () {\n var json = {stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert};\n if (this.slice.size) { json.slice = this.slice.toJSON(); }\n if (this.structure) { json.structure = true; }\n return json\n };\n\n ReplaceAroundStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n { throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\") }\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo,\n Slice.fromJSON(schema, json.slice), json.insert, !!json.structure)\n };\n\n return ReplaceAroundStep;\n}(Step));\n\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\n\nfunction contentBetween(doc, from, to) {\n var $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n var next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf) { return true }\n next = next.firstChild;\n dist--;\n }\n }\n return false\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end))\n}\n\n// :: (NodeRange) → ?number\n// Try to find a target depth to which the content in the given range\n// can be lifted. Will not go across\n// [isolating](#model.NodeSpec.isolating) parent nodes.\nfunction liftTarget(range) {\n var parent = range.parent;\n var content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (var depth = range.depth;; --depth) {\n var node = range.$from.node(depth);\n var index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n { return depth }\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex)) { break }\n }\n}\n\n// :: (NodeRange, number) → this\n// Split the content in the given range off from its parent, if there\n// is sibling content before or after it, and move it up the tree to\n// the depth specified by `target`. You'll probably want to use\n// [`liftTarget`](#transform.liftTarget) to compute `target`, to make\n// sure the lift is valid.\nTransform.prototype.lift = function(range, target) {\n var $from = range.$from;\n var $to = range.$to;\n var depth = range.depth;\n\n var gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n var start = gapStart, end = gapEnd;\n\n var before = Fragment.empty, openStart = 0;\n for (var d = depth, splitting = false; d > target; d--)\n { if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n } else {\n start--;\n } }\n var after = Fragment.empty, openEnd = 0;\n for (var d$1 = depth, splitting$1 = false; d$1 > target; d$1--)\n { if (splitting$1 || $to.after(d$1 + 1) < $to.end(d$1)) {\n splitting$1 = true;\n after = Fragment.from($to.node(d$1).copy(after));\n openEnd++;\n } else {\n end++;\n } }\n\n return this.step(new ReplaceAroundStep(start, end, gapStart, gapEnd,\n new Slice(before.append(after), openStart, openEnd),\n before.size - openStart, true))\n};\n\n// :: (NodeRange, NodeType, ?Object, ?NodeRange) → ?[{type: NodeType, attrs: ?Object}]\n// Try to find a valid way to wrap the content in the given range in a\n// node of the given type. May introduce extra nodes around and inside\n// the wrapper node, if necessary. Returns null if no valid wrapping\n// could be found. When `innerRange` is given, that range's content is\n// used as the content to fit into the wrapping, instead of the\n// content of `range`.\nfunction findWrapping(range, nodeType, attrs, innerRange) {\n if ( innerRange === void 0 ) innerRange = range;\n\n var around = findWrappingOutside(range, nodeType);\n var inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner) { return null }\n return around.map(withAttrs).concat({type: nodeType, attrs: attrs}).concat(inner.map(withAttrs))\n}\n\nfunction withAttrs(type) { return {type: type, attrs: null} }\n\nfunction findWrappingOutside(range, type) {\n var parent = range.parent;\n var startIndex = range.startIndex;\n var endIndex = range.endIndex;\n var around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around) { return null }\n var outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null\n}\n\nfunction findWrappingInside(range, type) {\n var parent = range.parent;\n var startIndex = range.startIndex;\n var endIndex = range.endIndex;\n var inner = parent.child(startIndex);\n var inside = type.contentMatch.findWrapping(inner.type);\n if (!inside) { return null }\n var lastType = inside.length ? inside[inside.length - 1] : type;\n var innerMatch = lastType.contentMatch;\n for (var i = startIndex; innerMatch && i < endIndex; i++)\n { innerMatch = innerMatch.matchType(parent.child(i).type); }\n if (!innerMatch || !innerMatch.validEnd) { return null }\n return inside\n}\n\n// :: (NodeRange, [{type: NodeType, attrs: ?Object}]) → this\n// Wrap the given [range](#model.NodeRange) in the given set of wrappers.\n// The wrappers are assumed to be valid in this position, and should\n// probably be computed with [`findWrapping`](#transform.findWrapping).\nTransform.prototype.wrap = function(range, wrappers) {\n var content = Fragment.empty;\n for (var i = wrappers.length - 1; i >= 0; i--)\n { content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content)); }\n\n var start = range.start, end = range.end;\n return this.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true))\n};\n\n// :: (number, ?number, NodeType, ?Object) → this\n// Set the type of all textblocks (partly) between `from` and `to` to\n// the given node type with the given attributes.\nTransform.prototype.setBlockType = function(from, to, type, attrs) {\n var this$1 = this;\n if ( to === void 0 ) to = from;\n\n if (!type.isTextblock) { throw new RangeError(\"Type given to setBlockType should be a textblock\") }\n var mapFrom = this.steps.length;\n this.doc.nodesBetween(from, to, function (node, pos) {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(this$1.doc, this$1.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n this$1.clearIncompatible(this$1.mapping.slice(mapFrom).map(pos, 1), type);\n var mapping = this$1.mapping.slice(mapFrom);\n var startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n this$1.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1,\n new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false\n }\n });\n return this\n};\n\nfunction canChangeType(doc, pos, type) {\n var $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type)\n}\n\n// :: (number, ?NodeType, ?Object, ?[Mark]) → this\n// Change the type, attributes, and/or marks of the node at `pos`.\n// When `type` isn't given, the existing node type is preserved,\nTransform.prototype.setNodeMarkup = function(pos, type, attrs, marks) {\n var node = this.doc.nodeAt(pos);\n if (!node) { throw new RangeError(\"No node at given position\") }\n if (!type) { type = node.type; }\n var newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n { return this.replaceWith(pos, pos + node.nodeSize, newNode) }\n\n if (!type.validContent(node.content))\n { throw new RangeError(\"Invalid content for node type \" + type.name) }\n\n return this.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1,\n new Slice(Fragment.from(newNode), 0, 0), 1, true))\n};\n\n// :: (Node, number, number, ?[?{type: NodeType, attrs: ?Object}]) → bool\n// Check whether splitting at the given position is allowed.\nfunction canSplit(doc, pos, depth, typesAfter) {\n if ( depth === void 0 ) depth = 1;\n\n var $pos = doc.resolve(pos), base = $pos.depth - depth;\n var innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n { return false }\n for (var d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n var node = $pos.node(d), index$1 = $pos.index(d);\n if (node.type.spec.isolating) { return false }\n var rest = node.content.cutByIndex(index$1, node.childCount);\n var after = (typesAfter && typesAfter[i]) || node;\n if (after != node) { rest = rest.replaceChild(0, after.type.create(after.attrs)); }\n if (!node.canReplace(index$1 + 1, node.childCount) || !after.type.validContent(rest))\n { return false }\n }\n var index = $pos.indexAfter(base);\n var baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type)\n}\n\n// :: (number, ?number, ?[?{type: NodeType, attrs: ?Object}]) → this\n// Split the node at the given position, and optionally, if `depth` is\n// greater than one, any number of nodes above that. By default, the\n// parts split off will inherit the node type of the original node.\n// This can be changed by passing an array of types and attributes to\n// use after the split.\nTransform.prototype.split = function(pos, depth, typesAfter) {\n if ( depth === void 0 ) depth = 1;\n\n var $pos = this.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (var d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n var typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n return this.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true))\n};\n\n// :: (Node, number) → bool\n// Test whether the blocks before and after a given position can be\n// joined.\nfunction canJoin(doc, pos) {\n var $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1)\n}\n\nfunction joinable(a, b) {\n return a && b && !a.isLeaf && a.canAppend(b)\n}\n\n// :: (Node, number, ?number) → ?number\n// Find an ancestor of the given position that can be joined to the\n// block before (or after if `dir` is positive). Returns the joinable\n// point, if any.\nfunction joinPoint(doc, pos, dir) {\n if ( dir === void 0 ) dir = -1;\n\n var $pos = doc.resolve(pos);\n for (var d = $pos.depth;; d--) {\n var before = (void 0), after = (void 0), index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n } else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n } else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1)) { return pos }\n if (d == 0) { break }\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\n\n// :: (number, ?number) → this\n// Join the blocks around the given position. If depth is 2, their\n// last and first siblings are also joined, and so on.\nTransform.prototype.join = function(pos, depth) {\n if ( depth === void 0 ) depth = 1;\n\n var step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n return this.step(step)\n};\n\n// :: (Node, number, NodeType) → ?number\n// Try to find a point where a node of the given type can be inserted\n// near `pos`, by searching up the node hierarchy when `pos` itself\n// isn't a valid place but is at the start or end of a node. Return\n// null if no position was found.\nfunction insertPoint(doc, pos, nodeType) {\n var $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType)) { return pos }\n\n if ($pos.parentOffset == 0)\n { for (var d = $pos.depth - 1; d >= 0; d--) {\n var index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType)) { return $pos.before(d + 1) }\n if (index > 0) { return null }\n } }\n if ($pos.parentOffset == $pos.parent.content.size)\n { for (var d$1 = $pos.depth - 1; d$1 >= 0; d$1--) {\n var index$1 = $pos.indexAfter(d$1);\n if ($pos.node(d$1).canReplaceWith(index$1, index$1, nodeType)) { return $pos.after(d$1 + 1) }\n if (index$1 < $pos.node(d$1).childCount) { return null }\n } }\n}\n\n// :: (Node, number, Slice) → ?number\n// Finds a position at or around the given position where the given\n// slice can be inserted. Will look at parent nodes' nearest boundary\n// and try there, even if the original position wasn't directly at the\n// start or end of that node. Returns null when no position was found.\nfunction dropPoint(doc, pos, slice) {\n var $pos = doc.resolve(pos);\n if (!slice.content.size) { return pos }\n var content = slice.content;\n for (var i = 0; i < slice.openStart; i++) { content = content.firstChild.content; }\n for (var pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (var d = $pos.depth; d >= 0; d--) {\n var bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n var insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n var parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n } else {\n var wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n { return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1) }\n }\n }\n return null\n}\n\nfunction mapFragment(fragment, f, parent) {\n var mapped = [];\n for (var i = 0; i < fragment.childCount; i++) {\n var child = fragment.child(i);\n if (child.content.size) { child = child.copy(mapFragment(child.content, f, child)); }\n if (child.isInline) { child = f(child, parent, i); }\n mapped.push(child);\n }\n return Fragment.fromArray(mapped)\n}\n\n// ::- Add a mark to all inline content between two positions.\nvar AddMarkStep = /*@__PURE__*/(function (Step) {\n function AddMarkStep(from, to, mark) {\n Step.call(this);\n // :: number\n // The start of the marked range.\n this.from = from;\n // :: number\n // The end of the marked range.\n this.to = to;\n // :: Mark\n // The mark to add.\n this.mark = mark;\n }\n\n if ( Step ) AddMarkStep.__proto__ = Step;\n AddMarkStep.prototype = Object.create( Step && Step.prototype );\n AddMarkStep.prototype.constructor = AddMarkStep;\n\n AddMarkStep.prototype.apply = function apply (doc) {\n var this$1 = this;\n\n var oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n var parent = $from.node($from.sharedDepth(this.to));\n var slice = new Slice(mapFragment(oldSlice.content, function (node, parent) {\n if (!node.isAtom || !parent.type.allowsMarkType(this$1.mark.type)) { return node }\n return node.mark(this$1.mark.addToSet(node.marks))\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice)\n };\n\n AddMarkStep.prototype.invert = function invert () {\n return new RemoveMarkStep(this.from, this.to, this.mark)\n };\n\n AddMarkStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos) { return null }\n return new AddMarkStep(from.pos, to.pos, this.mark)\n };\n\n AddMarkStep.prototype.merge = function merge (other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n { return new AddMarkStep(Math.min(this.from, other.from),\n Math.max(this.to, other.to), this.mark) }\n };\n\n AddMarkStep.prototype.toJSON = function toJSON () {\n return {stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to}\n };\n\n AddMarkStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\") }\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark))\n };\n\n return AddMarkStep;\n}(Step));\n\nStep.jsonID(\"addMark\", AddMarkStep);\n\n// ::- Remove a mark from all inline content between two positions.\nvar RemoveMarkStep = /*@__PURE__*/(function (Step) {\n function RemoveMarkStep(from, to, mark) {\n Step.call(this);\n // :: number\n // The start of the unmarked range.\n this.from = from;\n // :: number\n // The end of the unmarked range.\n this.to = to;\n // :: Mark\n // The mark to remove.\n this.mark = mark;\n }\n\n if ( Step ) RemoveMarkStep.__proto__ = Step;\n RemoveMarkStep.prototype = Object.create( Step && Step.prototype );\n RemoveMarkStep.prototype.constructor = RemoveMarkStep;\n\n RemoveMarkStep.prototype.apply = function apply (doc) {\n var this$1 = this;\n\n var oldSlice = doc.slice(this.from, this.to);\n var slice = new Slice(mapFragment(oldSlice.content, function (node) {\n return node.mark(this$1.mark.removeFromSet(node.marks))\n }), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice)\n };\n\n RemoveMarkStep.prototype.invert = function invert () {\n return new AddMarkStep(this.from, this.to, this.mark)\n };\n\n RemoveMarkStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos) { return null }\n return new RemoveMarkStep(from.pos, to.pos, this.mark)\n };\n\n RemoveMarkStep.prototype.merge = function merge (other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n { return new RemoveMarkStep(Math.min(this.from, other.from),\n Math.max(this.to, other.to), this.mark) }\n };\n\n RemoveMarkStep.prototype.toJSON = function toJSON () {\n return {stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to}\n };\n\n RemoveMarkStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\") }\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark))\n };\n\n return RemoveMarkStep;\n}(Step));\n\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n\n// :: (number, number, Mark) → this\n// Add the given mark to the inline content between `from` and `to`.\nTransform.prototype.addMark = function(from, to, mark) {\n var this$1 = this;\n\n var removed = [], added = [], removing = null, adding = null;\n this.doc.nodesBetween(from, to, function (node, pos, parent) {\n if (!node.isInline) { return }\n var marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n var start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n var newSet = mark.addToSet(marks);\n\n for (var i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n { removing.to = end; }\n else\n { removed.push(removing = new RemoveMarkStep(start, end, marks[i])); }\n }\n }\n\n if (adding && adding.to == start)\n { adding.to = end; }\n else\n { added.push(adding = new AddMarkStep(start, end, mark)); }\n }\n });\n\n removed.forEach(function (s) { return this$1.step(s); });\n added.forEach(function (s) { return this$1.step(s); });\n return this\n};\n\n// :: (number, number, ?union) → this\n// Remove marks from inline nodes between `from` and `to`. When `mark`\n// is a single mark, remove precisely that mark. When it is a mark type,\n// remove all marks of that type. When it is null, remove all marks of\n// any type.\nTransform.prototype.removeMark = function(from, to, mark) {\n var this$1 = this;\n if ( mark === void 0 ) mark = null;\n\n var matched = [], step = 0;\n this.doc.nodesBetween(from, to, function (node, pos) {\n if (!node.isInline) { return }\n step++;\n var toRemove = null;\n if (mark instanceof MarkType) {\n var set = node.marks, found;\n while (found = mark.isInSet(set)) {\n(toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n } else if (mark) {\n if (mark.isInSet(node.marks)) { toRemove = [mark]; }\n } else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n var end = Math.min(pos + node.nodeSize, to);\n for (var i = 0; i < toRemove.length; i++) {\n var style = toRemove[i], found$1 = (void 0);\n for (var j = 0; j < matched.length; j++) {\n var m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style)) { found$1 = m; }\n }\n if (found$1) {\n found$1.to = end;\n found$1.step = step;\n } else {\n matched.push({style: style, from: Math.max(pos, from), to: end, step: step});\n }\n }\n }\n });\n matched.forEach(function (m) { return this$1.step(new RemoveMarkStep(m.from, m.to, m.style)); });\n return this\n};\n\n// :: (number, NodeType, ?ContentMatch) → this\n// Removes all marks and nodes from the content of the node at `pos`\n// that don't match the given new parent node type. Accepts an\n// optional starting [content match](#model.ContentMatch) as third\n// argument.\nTransform.prototype.clearIncompatible = function(pos, parentType, match) {\n if ( match === void 0 ) match = parentType.contentMatch;\n\n var node = this.doc.nodeAt(pos);\n var delSteps = [], cur = pos + 1;\n for (var i = 0; i < node.childCount; i++) {\n var child = node.child(i), end = cur + child.nodeSize;\n var allowed = match.matchType(child.type, child.attrs);\n if (!allowed) {\n delSteps.push(new ReplaceStep(cur, end, Slice.empty));\n } else {\n match = allowed;\n for (var j = 0; j < child.marks.length; j++) { if (!parentType.allowsMarkType(child.marks[j].type))\n { this.step(new RemoveMarkStep(cur, end, child.marks[j])); } }\n }\n cur = end;\n }\n if (!match.validEnd) {\n var fill = match.fillBefore(Fragment.empty, true);\n this.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (var i$1 = delSteps.length - 1; i$1 >= 0; i$1--) { this.step(delSteps[i$1]); }\n return this\n};\n\n// :: (Node, number, ?number, ?Slice) → ?Step\n// ‘Fit’ a slice into a given position in the document, producing a\n// [step](#transform.Step) that inserts it. Will return null if\n// there's no meaningful way to insert the slice here, or inserting it\n// would be a no-op (an empty slice over an empty range).\nfunction replaceStep(doc, from, to, slice) {\n if ( to === void 0 ) to = from;\n if ( slice === void 0 ) slice = Slice.empty;\n\n if (from == to && !slice.size) { return null }\n\n var $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice)) { return new ReplaceStep(from, to, slice) }\n return new Fitter($from, $to, slice).fit()\n}\n\n// :: (number, ?number, ?Slice) → this\n// Replace the part of the document between `from` and `to` with the\n// given `slice`.\nTransform.prototype.replace = function(from, to, slice) {\n if ( to === void 0 ) to = from;\n if ( slice === void 0 ) slice = Slice.empty;\n\n var step = replaceStep(this.doc, from, to, slice);\n if (step) { this.step(step); }\n return this\n};\n\n// :: (number, number, union) → this\n// Replace the given range with the given content, which may be a\n// fragment, node, or array of nodes.\nTransform.prototype.replaceWith = function(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0))\n};\n\n// :: (number, number) → this\n// Delete the content between the given positions.\nTransform.prototype.delete = function(from, to) {\n return this.replace(from, to, Slice.empty)\n};\n\n// :: (number, union) → this\n// Insert the given content at the given position.\nTransform.prototype.insert = function(pos, content) {\n return this.replaceWith(pos, pos, content)\n};\n\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content)\n}\n\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nvar Fitter = function Fitter($from, $to, slice) {\n this.$to = $to;\n this.$from = $from;\n this.unplaced = slice;\n\n this.frontier = [];\n for (var i = 0; i <= $from.depth; i++) {\n var node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n\n this.placed = Fragment.empty;\n for (var i$1 = $from.depth; i$1 > 0; i$1--)\n { this.placed = Fragment.from($from.node(i$1).copy(this.placed)); }\n};\n\nvar prototypeAccessors$1 = { depth: { configurable: true } };\n\nprototypeAccessors$1.depth.get = function () { return this.frontier.length - 1 };\n\nFitter.prototype.fit = function fit () {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n var fit = this.findFittable();\n if (fit) { this.placeNodes(fit); }\n else { this.openMore() || this.dropNode(); }\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n var moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n var $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to) { return null }\n\n // If closing to `$to` succeeded, create a step\n var content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--; openEnd--;\n }\n var slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n { return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize) }\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n { return new ReplaceStep($from.pos, $to.pos, slice) }\n};\n\n// Find a position on the start spine of `this.unplaced` that has\n// content that can be moved somewhere on the frontier. Returns two\n// depths, one for the slice and one for the frontier.\nFitter.prototype.findFittable = function findFittable () {\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (var pass = 1; pass <= 2; pass++) {\n for (var sliceDepth = this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n var fragment = (void 0), parent = (void 0);\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n } else {\n fragment = this.unplaced.content;\n }\n var first = fragment.firstChild;\n for (var frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n var ref = this.frontier[frontierDepth];\n var type = ref.type;\n var match = ref.match;\n var wrap = (void 0), inject = (void 0);\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : type.compatibleContent(parent.type)))\n { return {sliceDepth: sliceDepth, frontierDepth: frontierDepth, parent: parent, inject: inject} }\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n { return {sliceDepth: sliceDepth, frontierDepth: frontierDepth, parent: parent, wrap: wrap} }\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type)) { break }\n }\n }\n }\n};\n\nFitter.prototype.openMore = function openMore () {\n var ref = this.unplaced;\n var content = ref.content;\n var openStart = ref.openStart;\n var openEnd = ref.openEnd;\n var inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf) { return false }\n this.unplaced = new Slice(content, openStart + 1,\n Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true\n};\n\nFitter.prototype.dropNode = function dropNode () {\n var ref = this.unplaced;\n var content = ref.content;\n var openStart = ref.openStart;\n var openEnd = ref.openEnd;\n var inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n var openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1,\n openAtEnd ? openStart - 1 : openEnd);\n } else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n};\n\n// : ({sliceDepth: number, frontierDepth: number, parent: ?Node, wrap: ?[NodeType], inject: ?Fragment})\n// Move content from the unplaced slice at `sliceDepth` to the\n// frontier node at `frontierDepth`. Close that frontier node when\n// applicable.\nFitter.prototype.placeNodes = function placeNodes (ref) {\n var sliceDepth = ref.sliceDepth;\n var frontierDepth = ref.frontierDepth;\n var parent = ref.parent;\n var inject = ref.inject;\n var wrap = ref.wrap;\n\n while (this.depth > frontierDepth) { this.closeFrontierNode(); }\n if (wrap) { for (var i = 0; i < wrap.length; i++) { this.openFrontierNode(wrap[i]); } }\n\n var slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n var openStart = slice.openStart - sliceDepth;\n var taken = 0, add = [];\n var ref$1 = this.frontier[frontierDepth];\n var match = ref$1.match;\n var type = ref$1.type;\n if (inject) {\n for (var i$1 = 0; i$1 < inject.childCount; i$1++) { add.push(inject.child(i$1)); }\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n var openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n var next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches) { break }\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0,\n taken == fragment.childCount ? openEndCount : -1));\n }\n }\n var toEnd = taken == fragment.childCount;\n if (!toEnd) { openEndCount = -1; }\n\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n { this.closeFrontierNode(); }\n\n // Add new frontier nodes for any open nodes at the end.\n for (var i$2 = 0, cur = fragment; i$2 < openEndCount; i$2++) {\n var node = cur.lastChild;\n this.frontier.push({type: node.type, match: node.contentMatchAt(node.childCount)});\n cur = node.content;\n }\n\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1),\n sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n};\n\nFitter.prototype.mustMoveInline = function mustMoveInline () {\n if (!this.$to.parent.isTextblock || this.$to.end() == this.$to.pos) { return -1 }\n var top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth)) { return -1 }\n\n var ref = this.$to;\n var depth = ref.depth;\n var after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth)) { ++after; }\n return after\n};\n\nFitter.prototype.findCloseLevel = function findCloseLevel ($to) {\n scan: for (var i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n var ref = this.frontier[i];\n var match = ref.match;\n var type = ref.type;\n var dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n var fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit) { continue }\n for (var d = i - 1; d >= 0; d--) {\n var ref$1 = this.frontier[d];\n var match$1 = ref$1.match;\n var type$1 = ref$1.type;\n var matches = contentAfterFits($to, d, type$1, match$1, true);\n if (!matches || matches.childCount) { continue scan }\n }\n return {depth: i, fit: fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to}\n }\n};\n\nFitter.prototype.close = function close ($to) {\n var close = this.findCloseLevel($to);\n if (!close) { return null }\n\n while (this.depth > close.depth) { this.closeFrontierNode(); }\n if (close.fit.childCount) { this.placed = addToFragment(this.placed, close.depth, close.fit); }\n $to = close.move;\n for (var d = close.depth + 1; d <= $to.depth; d++) {\n var node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to\n};\n\nFitter.prototype.openFrontierNode = function openFrontierNode (type, attrs, content) {\n var top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({type: type, match: type.contentMatch});\n};\n\nFitter.prototype.closeFrontierNode = function closeFrontierNode () {\n var open = this.frontier.pop();\n var add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount) { this.placed = addToFragment(this.placed, this.frontier.length, add); }\n};\n\nObject.defineProperties( Fitter.prototype, prototypeAccessors$1 );\n\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0) { return fragment.cutByIndex(count) }\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)))\n}\n\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0) { return fragment.append(content) }\n return fragment.replaceChild(fragment.childCount - 1,\n fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)))\n}\n\nfunction contentAt(fragment, depth) {\n for (var i = 0; i < depth; i++) { fragment = fragment.firstChild.content; }\n return fragment\n}\n\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0) { return node }\n var frag = node.content;\n if (openStart > 1)\n { frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0)); }\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0) { frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true)); }\n }\n return node.copy(frag)\n}\n\nfunction contentAfterFits($to, depth, type, match, open) {\n var node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type)) { return null }\n var fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null\n}\n\nfunction invalidMarks(type, fragment, start) {\n for (var i = start; i < fragment.childCount; i++)\n { if (!type.allowsMarks(fragment.child(i).marks)) { return true } }\n return false\n}\n\n// :: (number, number, Slice) → this\n// Replace a range of the document with a given slice, using `from`,\n// `to`, and the slice's [`openStart`](#model.Slice.openStart) property\n// as hints, rather than fixed start and end points. This method may\n// grow the replaced area or close open nodes in the slice in order to\n// get a fit that is more in line with WYSIWYG expectations, by\n// dropping fully covered parent nodes of the replaced region when\n// they are marked [non-defining](#model.NodeSpec.defining), or\n// including an open parent node from the slice that _is_ marked as\n// [defining](#model.NodeSpec.defining).\n//\n// This is the method, for example, to handle paste. The similar\n// [`replace`](#transform.Transform.replace) method is a more\n// primitive tool which will _not_ move the start and end of its given\n// range, and is useful in situations where you need more precise\n// control over what happens.\nTransform.prototype.replaceRange = function(from, to, slice) {\n if (!slice.size) { return this.deleteRange(from, to) }\n\n var $from = this.doc.resolve(from), $to = this.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n { return this.step(new ReplaceStep(from, to, slice)) }\n\n var targetDepths = coveredDepths($from, this.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0) { targetDepths.pop(); }\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n var preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (var d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n var spec = $from.node(d).type.spec;\n if (spec.defining || spec.isolating) { break }\n if (targetDepths.indexOf(d) > -1) { preferredTarget = d; }\n else if ($from.before(d) == pos) { targetDepths.splice(1, 0, -d); }\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n var preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n\n var leftNodes = [], preferredDepth = slice.openStart;\n for (var content = slice.content, i = 0;; i++) {\n var node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart) { break }\n content = node.content;\n }\n // Back up if the node directly above openStart, or the node above\n // that separated only by a non-defining textblock node, is defining.\n if (preferredDepth > 0 && leftNodes[preferredDepth - 1].type.spec.defining &&\n $from.node(preferredTargetIndex).type != leftNodes[preferredDepth - 1].type)\n { preferredDepth -= 1; }\n else if (preferredDepth >= 2 && leftNodes[preferredDepth - 1].isTextblock && leftNodes[preferredDepth - 2].type.spec.defining &&\n $from.node(preferredTargetIndex).type != leftNodes[preferredDepth - 2].type)\n { preferredDepth -= 2; }\n\n for (var j = slice.openStart; j >= 0; j--) {\n var openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n var insert = leftNodes[openDepth];\n if (!insert) { continue }\n for (var i$1 = 0; i$1 < targetDepths.length; i$1++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n var targetDepth = targetDepths[(i$1 + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) { expand = false; targetDepth = -targetDepth; }\n var parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n { return this.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to,\n new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth),\n openDepth, slice.openEnd)) }\n }\n }\n\n var startSteps = this.steps.length;\n for (var i$2 = targetDepths.length - 1; i$2 >= 0; i$2--) {\n this.replace(from, to, slice);\n if (this.steps.length > startSteps) { break }\n var depth = targetDepths[i$2];\n if (depth < 0) { continue }\n from = $from.before(depth); to = $to.after(depth);\n }\n return this\n};\n\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n var first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n var match = parent.contentMatchAt(0);\n var start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment\n}\n\n// :: (number, number, Node) → this\n// Replace the given range with a node, but use `from` and `to` as\n// hints, rather than precise positions. When from and to are the same\n// and are at the start or end of a parent node in which the given\n// node doesn't fit, this method may _move_ them out towards a parent\n// that does allow the given node to be placed. When the given range\n// completely covers a parent node, this method may completely replace\n// that parent node.\nTransform.prototype.replaceRangeWith = function(from, to, node) {\n if (!node.isInline && from == to && this.doc.resolve(from).parent.content.size) {\n var point = insertPoint(this.doc, from, node.type);\n if (point != null) { from = to = point; }\n }\n return this.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0))\n};\n\n// :: (number, number) → this\n// Delete the given range, expanding it to cover fully covered\n// parent nodes until a valid replace is found.\nTransform.prototype.deleteRange = function(from, to) {\n var $from = this.doc.resolve(from), $to = this.doc.resolve(to);\n var covered = coveredDepths($from, $to);\n for (var i = 0; i < covered.length; i++) {\n var depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n { return this.delete($from.start(depth), $to.end(depth)) }\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n { return this.delete($from.before(depth), $to.after(depth)) }\n }\n for (var d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n { return this.delete($from.before(d), to) }\n }\n return this.delete(from, to)\n};\n\n// : (ResolvedPos, ResolvedPos) → [number]\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n var result = [], minDepth = Math.min($from.depth, $to.depth);\n for (var d = minDepth; d >= 0; d--) {\n var start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating) { break }\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n { result.push(d); }\n }\n return result\n}\n\nexport { AddMarkStep, MapResult, Mapping, RemoveMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nvar classesById = Object.create(null);\n\n// ::- Superclass for editor selections. Every selection type should\n// extend this. Should not be instantiated directly.\nvar Selection = function Selection($anchor, $head, ranges) {\n // :: [SelectionRange]\n // The ranges covered by the selection.\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n // :: ResolvedPos\n // The resolved anchor of the selection (the side that stays in\n // place when the selection is modified).\n this.$anchor = $anchor;\n // :: ResolvedPos\n // The resolved head of the selection (the side that moves when\n // the selection is modified).\n this.$head = $head;\n};\n\nvar prototypeAccessors = { anchor: { configurable: true },head: { configurable: true },from: { configurable: true },to: { configurable: true },$from: { configurable: true },$to: { configurable: true },empty: { configurable: true } };\n\n// :: number\n// The selection's anchor, as an unresolved position.\nprototypeAccessors.anchor.get = function () { return this.$anchor.pos };\n\n// :: number\n// The selection's head.\nprototypeAccessors.head.get = function () { return this.$head.pos };\n\n// :: number\n// The lower bound of the selection's main range.\nprototypeAccessors.from.get = function () { return this.$from.pos };\n\n// :: number\n// The upper bound of the selection's main range.\nprototypeAccessors.to.get = function () { return this.$to.pos };\n\n// :: ResolvedPos\n// The resolved lowerbound of the selection's main range.\nprototypeAccessors.$from.get = function () {\n return this.ranges[0].$from\n};\n\n// :: ResolvedPos\n// The resolved upper bound of the selection's main range.\nprototypeAccessors.$to.get = function () {\n return this.ranges[0].$to\n};\n\n// :: bool\n// Indicates whether the selection contains any content.\nprototypeAccessors.empty.get = function () {\n var ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++)\n { if (ranges[i].$from.pos != ranges[i].$to.pos) { return false } }\n return true\n};\n\n// eq:: (Selection) → bool\n// Test whether the selection is the same as another selection.\n\n// map:: (doc: Node, mapping: Mappable) → Selection\n// Map this selection through a [mappable](#transform.Mappable) thing. `doc`\n// should be the new document to which we are mapping.\n\n// :: () → Slice\n// Get the content of this selection as a slice.\nSelection.prototype.content = function content () {\n return this.$from.node(0).slice(this.from, this.to, true)\n};\n\n// :: (Transaction, ?Slice)\n// Replace the selection with a slice or, if no slice is given,\n// delete the selection. Will append to the given transaction.\nSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n var lastNode = content.content.lastChild, lastParent = null;\n for (var i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i$1 = 0; i$1 < ranges.length; i$1++) {\n var ref = ranges[i$1];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i$1 ? Slice.empty : content);\n if (i$1 == 0)\n { selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1); }\n }\n};\n\n// :: (Transaction, Node)\n// Replace the selection with the given node, appending the changes\n// to the given transaction.\nSelection.prototype.replaceWith = function replaceWith (tr, node) {\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n var from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n } else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n};\n\n// toJSON:: () → Object\n// Convert the selection to a JSON representation. When implementing\n// this for a custom selection class, make sure to give the object a\n// `type` property whose value matches the ID under which you\n// [registered](#state.Selection^jsonID) your class.\n\n// :: (ResolvedPos, number, ?bool) → ?Selection\n// Find a valid cursor or leaf node selection starting at the given\n// position and searching back if `dir` is negative, and forward if\n// positive. When `textOnly` is true, only consider cursor\n// selections. Will return null when no valid selection position is\n// found.\nSelection.findFrom = function findFrom ($pos, dir, textOnly) {\n var inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner) { return inner }\n\n for (var depth = $pos.depth - 1; depth >= 0; depth--) {\n var found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found) { return found }\n }\n};\n\n// :: (ResolvedPos, ?number) → Selection\n// Find a valid cursor or leaf node selection near the given\n// position. Searches forward first by default, but if `bias` is\n// negative, it will search backwards first.\nSelection.near = function near ($pos, bias) {\n if ( bias === void 0 ) bias = 1;\n\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0))\n};\n\n// :: (Node) → Selection\n// Find the cursor or leaf node selection closest to the start of\n// the given document. Will return an\n// [`AllSelection`](#state.AllSelection) if no valid position\n// exists.\nSelection.atStart = function atStart (doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc)\n};\n\n// :: (Node) → Selection\n// Find the cursor or leaf node selection closest to the end of the\n// given document.\nSelection.atEnd = function atEnd (doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc)\n};\n\n// :: (Node, Object) → Selection\n// Deserialize the JSON representation of a selection. Must be\n// implemented for custom classes (as a static class method).\nSelection.fromJSON = function fromJSON (doc, json) {\n if (!json || !json.type) { throw new RangeError(\"Invalid input for Selection.fromJSON\") }\n var cls = classesById[json.type];\n if (!cls) { throw new RangeError((\"No selection type \" + (json.type) + \" defined\")) }\n return cls.fromJSON(doc, json)\n};\n\n// :: (string, constructor)\n// To be able to deserialize selections from JSON, custom selection\n// classes must register themselves with an ID string, so that they\n// can be disambiguated. Try to pick something that's unlikely to\n// clash with classes from other modules.\nSelection.jsonID = function jsonID (id, selectionClass) {\n if (id in classesById) { throw new RangeError(\"Duplicate use of selection JSON ID \" + id) }\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass\n};\n\n// :: () → SelectionBookmark\n// Get a [bookmark](#state.SelectionBookmark) for this selection,\n// which is a value that can be mapped without having access to a\n// current document, and later resolved to a real selection for a\n// given document again. (This is used mostly by the history to\n// track and restore old selections.) The default implementation of\n// this method just converts the selection to a text selection and\n// returns the bookmark for that.\nSelection.prototype.getBookmark = function getBookmark () {\n return TextSelection.between(this.$anchor, this.$head).getBookmark()\n};\n\nObject.defineProperties( Selection.prototype, prototypeAccessors );\n\n// :: bool\n// Controls whether, when a selection of this type is active in the\n// browser, the selected range should be visible to the user. Defaults\n// to `true`.\nSelection.prototype.visible = true;\n\n// SelectionBookmark:: interface\n// A lightweight, document-independent representation of a selection.\n// You can define a custom bookmark type for a custom selection class\n// to make the history handle it well.\n//\n// map:: (mapping: Mapping) → SelectionBookmark\n// Map the bookmark through a set of changes.\n//\n// resolve:: (doc: Node) → Selection\n// Resolve the bookmark to a real selection again. This may need to\n// do some error checking and may fall back to a default (usually\n// [`TextSelection.between`](#state.TextSelection^between)) if\n// mapping made the bookmark invalid.\n\n// ::- Represents a selected range in a document.\nvar SelectionRange = function SelectionRange($from, $to) {\n // :: ResolvedPos\n // The lower bound of the range.\n this.$from = $from;\n // :: ResolvedPos\n // The upper bound of the range.\n this.$to = $to;\n};\n\n// ::- A text selection represents a classical editor selection, with\n// a head (the moving side) and anchor (immobile side), both of which\n// point into textblock nodes. It can be empty (a regular cursor\n// position).\nvar TextSelection = /*@__PURE__*/(function (Selection) {\n function TextSelection($anchor, $head) {\n if ( $head === void 0 ) $head = $anchor;\n\n Selection.call(this, $anchor, $head);\n }\n\n if ( Selection ) TextSelection.__proto__ = Selection;\n TextSelection.prototype = Object.create( Selection && Selection.prototype );\n TextSelection.prototype.constructor = TextSelection;\n\n var prototypeAccessors$1 = { $cursor: { configurable: true } };\n\n // :: ?ResolvedPos\n // Returns a resolved position if this is a cursor selection (an\n // empty text selection), and null otherwise.\n prototypeAccessors$1.$cursor.get = function () { return this.$anchor.pos == this.$head.pos ? this.$head : null };\n\n TextSelection.prototype.map = function map (doc, mapping) {\n var $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent) { return Selection.near($head) }\n var $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head)\n };\n\n TextSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n Selection.prototype.replace.call(this, tr, content);\n if (content == Slice.empty) {\n var marks = this.$from.marksAcross(this.$to);\n if (marks) { tr.ensureMarks(marks); }\n }\n };\n\n TextSelection.prototype.eq = function eq (other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head\n };\n\n TextSelection.prototype.getBookmark = function getBookmark () {\n return new TextBookmark(this.anchor, this.head)\n };\n\n TextSelection.prototype.toJSON = function toJSON () {\n return {type: \"text\", anchor: this.anchor, head: this.head}\n };\n\n TextSelection.fromJSON = function fromJSON (doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n { throw new RangeError(\"Invalid input for TextSelection.fromJSON\") }\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head))\n };\n\n // :: (Node, number, ?number) → TextSelection\n // Create a text selection from non-resolved positions.\n TextSelection.create = function create (doc, anchor, head) {\n if ( head === void 0 ) head = anchor;\n\n var $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head))\n };\n\n // :: (ResolvedPos, ResolvedPos, ?number) → Selection\n // Return a text selection that spans the given positions or, if\n // they aren't text positions, find a text selection near them.\n // `bias` determines whether the method searches forward (default)\n // or backwards (negative number) first. Will fall back to calling\n // [`Selection.near`](#state.Selection^near) when the document\n // doesn't contain a valid text position.\n TextSelection.between = function between ($anchor, $head, bias) {\n var dPos = $anchor.pos - $head.pos;\n if (!bias || dPos) { bias = dPos >= 0 ? 1 : -1; }\n if (!$head.parent.inlineContent) {\n var found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found) { $head = found.$head; }\n else { return Selection.near($head, bias) }\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n } else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0)) { $anchor = $head; }\n }\n }\n return new TextSelection($anchor, $head)\n };\n\n Object.defineProperties( TextSelection.prototype, prototypeAccessors$1 );\n\n return TextSelection;\n}(Selection));\n\nSelection.jsonID(\"text\", TextSelection);\n\nvar TextBookmark = function TextBookmark(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n};\nTextBookmark.prototype.map = function map (mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head))\n};\nTextBookmark.prototype.resolve = function resolve (doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head))\n};\n\n// ::- A node selection is a selection that points at a single node.\n// All nodes marked [selectable](#model.NodeSpec.selectable) can be\n// the target of a node selection. In such a selection, `from` and\n// `to` point directly before and after the selected node, `anchor`\n// equals `from`, and `head` equals `to`..\nvar NodeSelection = /*@__PURE__*/(function (Selection) {\n function NodeSelection($pos) {\n var node = $pos.nodeAfter;\n var $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n Selection.call(this, $pos, $end);\n // :: Node The selected node.\n this.node = node;\n }\n\n if ( Selection ) NodeSelection.__proto__ = Selection;\n NodeSelection.prototype = Object.create( Selection && Selection.prototype );\n NodeSelection.prototype.constructor = NodeSelection;\n\n NodeSelection.prototype.map = function map (doc, mapping) {\n var ref = mapping.mapResult(this.anchor);\n var deleted = ref.deleted;\n var pos = ref.pos;\n var $pos = doc.resolve(pos);\n if (deleted) { return Selection.near($pos) }\n return new NodeSelection($pos)\n };\n\n NodeSelection.prototype.content = function content () {\n return new Slice(Fragment.from(this.node), 0, 0)\n };\n\n NodeSelection.prototype.eq = function eq (other) {\n return other instanceof NodeSelection && other.anchor == this.anchor\n };\n\n NodeSelection.prototype.toJSON = function toJSON () {\n return {type: \"node\", anchor: this.anchor}\n };\n\n NodeSelection.prototype.getBookmark = function getBookmark () { return new NodeBookmark(this.anchor) };\n\n NodeSelection.fromJSON = function fromJSON (doc, json) {\n if (typeof json.anchor != \"number\")\n { throw new RangeError(\"Invalid input for NodeSelection.fromJSON\") }\n return new NodeSelection(doc.resolve(json.anchor))\n };\n\n // :: (Node, number) → NodeSelection\n // Create a node selection from non-resolved positions.\n NodeSelection.create = function create (doc, from) {\n return new this(doc.resolve(from))\n };\n\n // :: (Node) → bool\n // Determines whether the given node may be selected as a node\n // selection.\n NodeSelection.isSelectable = function isSelectable (node) {\n return !node.isText && node.type.spec.selectable !== false\n };\n\n return NodeSelection;\n}(Selection));\n\nNodeSelection.prototype.visible = false;\n\nSelection.jsonID(\"node\", NodeSelection);\n\nvar NodeBookmark = function NodeBookmark(anchor) {\n this.anchor = anchor;\n};\nNodeBookmark.prototype.map = function map (mapping) {\n var ref = mapping.mapResult(this.anchor);\n var deleted = ref.deleted;\n var pos = ref.pos;\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos)\n};\nNodeBookmark.prototype.resolve = function resolve (doc) {\n var $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node)) { return new NodeSelection($pos) }\n return Selection.near($pos)\n};\n\n// ::- A selection type that represents selecting the whole document\n// (which can not necessarily be expressed with a text selection, when\n// there are for example leaf block nodes at the start or end of the\n// document).\nvar AllSelection = /*@__PURE__*/(function (Selection) {\n function AllSelection(doc) {\n Selection.call(this, doc.resolve(0), doc.resolve(doc.content.size));\n }\n\n if ( Selection ) AllSelection.__proto__ = Selection;\n AllSelection.prototype = Object.create( Selection && Selection.prototype );\n AllSelection.prototype.constructor = AllSelection;\n\n AllSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n var sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection)) { tr.setSelection(sel); }\n } else {\n Selection.prototype.replace.call(this, tr, content);\n }\n };\n\n AllSelection.prototype.toJSON = function toJSON () { return {type: \"all\"} };\n\n AllSelection.fromJSON = function fromJSON (doc) { return new AllSelection(doc) };\n\n AllSelection.prototype.map = function map (doc) { return new AllSelection(doc) };\n\n AllSelection.prototype.eq = function eq (other) { return other instanceof AllSelection };\n\n AllSelection.prototype.getBookmark = function getBookmark () { return AllBookmark };\n\n return AllSelection;\n}(Selection));\n\nSelection.jsonID(\"all\", AllSelection);\n\nvar AllBookmark = {\n map: function map() { return this },\n resolve: function resolve(doc) { return new AllSelection(doc) }\n};\n\n// FIXME we'll need some awareness of text direction when scanning for selections\n\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text) {\n if (node.inlineContent) { return TextSelection.create(doc, pos) }\n for (var i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n var child = node.child(i);\n if (!child.isAtom) {\n var inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner) { return inner }\n } else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0))\n }\n pos += child.nodeSize * dir;\n }\n}\n\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n var last = tr.steps.length - 1;\n if (last < startLen) { return }\n var step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) { return }\n var map = tr.mapping.maps[last], end;\n map.forEach(function (_from, _to, _newFrom, newTo) { if (end == null) { end = newTo; } });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nvar UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n\n// ::- An editor state transaction, which can be applied to a state to\n// create an updated state. Use\n// [`EditorState.tr`](#state.EditorState.tr) to create an instance.\n//\n// Transactions track changes to the document (they are a subclass of\n// [`Transform`](#transform.Transform)), but also other state changes,\n// like selection updates and adjustments of the set of [stored\n// marks](#state.EditorState.storedMarks). In addition, you can store\n// metadata properties in a transaction, which are extra pieces of\n// information that client code or plugins can use to describe what a\n// transacion represents, so that they can update their [own\n// state](#state.StateField) accordingly.\n//\n// The [editor view](#view.EditorView) uses a few metadata properties:\n// it will attach a property `\"pointer\"` with the value `true` to\n// selection transactions directly caused by mouse or touch input, and\n// a `\"uiEvent\"` property of that may be `\"paste\"`, `\"cut\"`, or `\"drop\"`.\nvar Transaction = /*@__PURE__*/(function (Transform) {\n function Transaction(state) {\n Transform.call(this, state.doc);\n // :: number\n // The timestamp associated with this transaction, in the same\n // format as `Date.now()`.\n this.time = Date.now();\n this.curSelection = state.selection;\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // :: ?[Mark]\n // The stored marks set by this transaction, if any.\n this.storedMarks = state.storedMarks;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n }\n\n if ( Transform ) Transaction.__proto__ = Transform;\n Transaction.prototype = Object.create( Transform && Transform.prototype );\n Transaction.prototype.constructor = Transaction;\n\n var prototypeAccessors = { selection: { configurable: true },selectionSet: { configurable: true },storedMarksSet: { configurable: true },isGeneric: { configurable: true },scrolledIntoView: { configurable: true } };\n\n // :: Selection\n // The transaction's current selection. This defaults to the editor\n // selection [mapped](#state.Selection.map) through the steps in the\n // transaction, but can be overwritten with\n // [`setSelection`](#state.Transaction.setSelection).\n prototypeAccessors.selection.get = function () {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection\n };\n\n // :: (Selection) → Transaction\n // Update the transaction's current selection. Will determine the\n // selection that the editor gets when the transaction is applied.\n Transaction.prototype.setSelection = function setSelection (selection) {\n if (selection.$from.doc != this.doc)\n { throw new RangeError(\"Selection passed to setSelection must point at the current document\") }\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this\n };\n\n // :: bool\n // Whether the selection was explicitly updated by this transaction.\n prototypeAccessors.selectionSet.get = function () {\n return (this.updated & UPDATED_SEL) > 0\n };\n\n // :: (?[Mark]) → Transaction\n // Set the current stored marks.\n Transaction.prototype.setStoredMarks = function setStoredMarks (marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this\n };\n\n // :: ([Mark]) → Transaction\n // Make sure the current stored marks or, if that is null, the marks\n // at the selection, match the given set of marks. Does nothing if\n // this is already the case.\n Transaction.prototype.ensureMarks = function ensureMarks (marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n { this.setStoredMarks(marks); }\n return this\n };\n\n // :: (Mark) → Transaction\n // Add a mark to the set of stored marks.\n Transaction.prototype.addStoredMark = function addStoredMark (mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()))\n };\n\n // :: (union) → Transaction\n // Remove a mark or mark type from the set of stored marks.\n Transaction.prototype.removeStoredMark = function removeStoredMark (mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()))\n };\n\n // :: bool\n // Whether the stored marks were explicitly set for this transaction.\n prototypeAccessors.storedMarksSet.get = function () {\n return (this.updated & UPDATED_MARKS) > 0\n };\n\n Transaction.prototype.addStep = function addStep (step, doc) {\n Transform.prototype.addStep.call(this, step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n };\n\n // :: (number) → Transaction\n // Update the timestamp for the transaction.\n Transaction.prototype.setTime = function setTime (time) {\n this.time = time;\n return this\n };\n\n // :: (Slice) → Transaction\n // Replace the current selection with the given slice.\n Transaction.prototype.replaceSelection = function replaceSelection (slice) {\n this.selection.replace(this, slice);\n return this\n };\n\n // :: (Node, ?bool) → Transaction\n // Replace the selection with the given node. When `inheritMarks` is\n // true and the content is inline, it inherits the marks from the\n // place where it is inserted.\n Transaction.prototype.replaceSelectionWith = function replaceSelectionWith (node, inheritMarks) {\n var selection = this.selection;\n if (inheritMarks !== false)\n { node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none))); }\n selection.replaceWith(this, node);\n return this\n };\n\n // :: () → Transaction\n // Delete the selection.\n Transaction.prototype.deleteSelection = function deleteSelection () {\n this.selection.replace(this);\n return this\n };\n\n // :: (string, from: ?number, to: ?number) → Transaction\n // Replace the given range, or the selection if no range is given,\n // with a text node containing the given string.\n Transaction.prototype.insertText = function insertText (text, from, to) {\n if ( to === void 0 ) to = from;\n\n var schema = this.doc.type.schema;\n if (from == null) {\n if (!text) { return this.deleteSelection() }\n return this.replaceSelectionWith(schema.text(text), true)\n } else {\n if (!text) { return this.deleteRange(from, to) }\n var marks = this.storedMarks;\n if (!marks) {\n var $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty) { this.setSelection(Selection.near(this.selection.$to)); }\n return this\n }\n };\n\n // :: (union, any) → Transaction\n // Store a metadata property in this transaction, keyed either by\n // name or by plugin.\n Transaction.prototype.setMeta = function setMeta (key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this\n };\n\n // :: (union) → any\n // Retrieve a metadata property for a given name or plugin.\n Transaction.prototype.getMeta = function getMeta (key) {\n return this.meta[typeof key == \"string\" ? key : key.key]\n };\n\n // :: bool\n // Returns true if this transaction doesn't contain any metadata,\n // and can thus safely be extended.\n prototypeAccessors.isGeneric.get = function () {\n for (var _ in this.meta) { return false }\n return true\n };\n\n // :: () → Transaction\n // Indicate that the editor should scroll the selection into view\n // when updated to the state produced by this transaction.\n Transaction.prototype.scrollIntoView = function scrollIntoView () {\n this.updated |= UPDATED_SCROLL;\n return this\n };\n\n prototypeAccessors.scrolledIntoView.get = function () {\n return (this.updated & UPDATED_SCROLL) > 0\n };\n\n Object.defineProperties( Transaction.prototype, prototypeAccessors );\n\n return Transaction;\n}(Transform));\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self)\n}\n\nvar FieldDesc = function FieldDesc(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n};\n\nvar baseFields = [\n new FieldDesc(\"doc\", {\n init: function init(config) { return config.doc || config.schema.topNodeType.createAndFill() },\n apply: function apply(tr) { return tr.doc }\n }),\n\n new FieldDesc(\"selection\", {\n init: function init(config, instance) { return config.selection || Selection.atStart(instance.doc) },\n apply: function apply(tr) { return tr.selection }\n }),\n\n new FieldDesc(\"storedMarks\", {\n init: function init(config) { return config.storedMarks || null },\n apply: function apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null }\n }),\n\n new FieldDesc(\"scrollToSelection\", {\n init: function init() { return 0 },\n apply: function apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev }\n })\n];\n\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nvar Configuration = function Configuration(schema, plugins) {\n var this$1 = this;\n\n this.schema = schema;\n this.fields = baseFields.concat();\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n if (plugins) { plugins.forEach(function (plugin) {\n if (this$1.pluginsByKey[plugin.key])\n { throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\") }\n this$1.plugins.push(plugin);\n this$1.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n { this$1.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin)); }\n }); }\n};\n\n// ::- The state of a ProseMirror editor is represented by an object\n// of this type. A state is a persistent data structure—it isn't\n// updated, but rather a new state value is computed from an old one\n// using the [`apply`](#state.EditorState.apply) method.\n//\n// A state holds a number of built-in fields, and plugins can\n// [define](#state.PluginSpec.state) additional fields.\nvar EditorState = function EditorState(config) {\n this.config = config;\n};\n\nvar prototypeAccessors$1 = { schema: { configurable: true },plugins: { configurable: true },tr: { configurable: true } };\n\n// doc:: Node\n// The current document.\n\n// selection:: Selection\n// The selection.\n\n// storedMarks:: ?[Mark]\n// A set of marks to apply to the next input. Will be null when\n// no explicit marks have been set.\n\n// :: Schema\n// The schema of the state's document.\nprototypeAccessors$1.schema.get = function () {\n return this.config.schema\n};\n\n// :: [Plugin]\n// The plugins that are active in this state.\nprototypeAccessors$1.plugins.get = function () {\n return this.config.plugins\n};\n\n// :: (Transaction) → EditorState\n// Apply the given transaction to produce a new state.\nEditorState.prototype.apply = function apply (tr) {\n return this.applyTransaction(tr).state\n};\n\n// : (Transaction) → bool\nEditorState.prototype.filterTransaction = function filterTransaction (tr, ignore) {\n if ( ignore === void 0 ) ignore = -1;\n\n for (var i = 0; i < this.config.plugins.length; i++) { if (i != ignore) {\n var plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n { return false }\n } }\n return true\n};\n\n// :: (Transaction) → {state: EditorState, transactions: [Transaction]}\n// Verbose variant of [`apply`](#state.EditorState.apply) that\n// returns the precise transactions that were applied (which might\n// be influenced by the [transaction\n// hooks](#state.PluginSpec.filterTransaction) of\n// plugins) along with the new state.\nEditorState.prototype.applyTransaction = function applyTransaction (rootTr) {\n if (!this.filterTransaction(rootTr)) { return {state: this, transactions: []} }\n\n var trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n var haveNew = false;\n for (var i = 0; i < this.config.plugins.length; i++) {\n var plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n var n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n var tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (var j = 0; j < this.config.plugins.length; j++)\n { seen.push(j < i ? {state: newState, n: trs.length} : {state: this, n: 0}); }\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen) { seen[i] = {state: newState, n: trs.length}; }\n }\n }\n if (!haveNew) { return {state: newState, transactions: trs} }\n }\n};\n\n// : (Transaction) → EditorState\nEditorState.prototype.applyInner = function applyInner (tr) {\n if (!tr.before.eq(this.doc)) { throw new RangeError(\"Applying a mismatched transaction\") }\n var newInstance = new EditorState(this.config), fields = this.config.fields;\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n for (var i$1 = 0; i$1 < applyListeners.length; i$1++) { applyListeners[i$1](this, tr, newInstance); }\n return newInstance\n};\n\n// :: Transaction\n// Start a [transaction](#state.Transaction) from this state.\nprototypeAccessors$1.tr.get = function () { return new Transaction(this) };\n\n// :: (Object) → EditorState\n// Create a new state.\n//\n// config::- Configuration options. Must contain `schema` or `doc` (or both).\n//\n// schema:: ?Schema\n// The schema to use (only relevant if no `doc` is specified).\n//\n// doc:: ?Node\n// The starting document.\n//\n// selection:: ?Selection\n// A valid selection in the document.\n//\n// storedMarks:: ?[Mark]\n// The initial set of [stored marks](#state.EditorState.storedMarks).\n//\n// plugins:: ?[Plugin]\n// The plugins that should be active in this state.\nEditorState.create = function create (config) {\n var $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n var instance = new EditorState($config);\n for (var i = 0; i < $config.fields.length; i++)\n { instance[$config.fields[i].name] = $config.fields[i].init(config, instance); }\n return instance\n};\n\n// :: (Object) → EditorState\n// Create a new state based on this one, but with an adjusted set of\n// active plugins. State fields that exist in both sets of plugins\n// are kept unchanged. Those that no longer exist are dropped, and\n// those that are new are initialized using their\n// [`init`](#state.StateField.init) method, passing in the new\n// configuration object..\n//\n// config::- configuration options\n//\n// plugins:: [Plugin]\n// New set of active plugins.\nEditorState.prototype.reconfigure = function reconfigure (config) {\n var $config = new Configuration(this.schema, config.plugins);\n var fields = $config.fields, instance = new EditorState($config);\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance\n};\n\n// :: (?union, string, number>) → Object\n// Serialize this state to JSON. If you want to serialize the state\n// of plugins, pass an object mapping property names to use in the\n// resulting JSON object to plugin objects. The argument may also be\n// a string or number, in which case it is ignored, to support the\n// way `JSON.stringify` calls `toString` methods.\nEditorState.prototype.toJSON = function toJSON (pluginFields) {\n var result = {doc: this.doc.toJSON(), selection: this.selection.toJSON()};\n if (this.storedMarks) { result.storedMarks = this.storedMarks.map(function (m) { return m.toJSON(); }); }\n if (pluginFields && typeof pluginFields == 'object') { for (var prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n { throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\") }\n var plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON) { result[prop] = state.toJSON.call(plugin, this[plugin.key]); }\n } }\n return result\n};\n\n// :: (Object, Object, ?Object) → EditorState\n// Deserialize a JSON representation of a state. `config` should\n// have at least a `schema` field, and should contain array of\n// plugins to initialize the state with. `pluginFields` can be used\n// to deserialize the state of plugins, by associating plugin\n// instances with the property names they use in the JSON object.\n//\n// config::- configuration options\n//\n// schema:: Schema\n// The schema to use.\n//\n// plugins:: ?[Plugin]\n// The set of active plugins.\nEditorState.fromJSON = function fromJSON (config, json, pluginFields) {\n if (!json) { throw new RangeError(\"Invalid input for EditorState.fromJSON\") }\n if (!config.schema) { throw new RangeError(\"Required config field 'schema' missing\") }\n var $config = new Configuration(config.schema, config.plugins);\n var instance = new EditorState($config);\n $config.fields.forEach(function (field) {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n } else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n } else if (field.name == \"storedMarks\") {\n if (json.storedMarks) { instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON); }\n } else {\n if (pluginFields) { for (var prop in pluginFields) {\n var plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n // This field belongs to a plugin mapped to a JSON field, read it from there.\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return\n }\n } }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance\n};\n\n// Kludge to allow the view to track mappings between different\n// instances of a state.\n//\n// FIXME this is no longer needed as of prosemirror-view 1.9.0,\n// though due to backwards-compat we should probably keep it around\n// for a while (if only as a no-op)\nEditorState.addApplyListener = function addApplyListener (f) {\n applyListeners.push(f);\n};\nEditorState.removeApplyListener = function removeApplyListener (f) {\n var found = applyListeners.indexOf(f);\n if (found > -1) { applyListeners.splice(found, 1); }\n};\n\nObject.defineProperties( EditorState.prototype, prototypeAccessors$1 );\n\nvar applyListeners = [];\n\n// PluginSpec:: interface\n//\n// This is the type passed to the [`Plugin`](#state.Plugin)\n// constructor. It provides a definition for a plugin.\n//\n// props:: ?EditorProps\n// The [view props](#view.EditorProps) added by this plugin. Props\n// that are functions will be bound to have the plugin instance as\n// their `this` binding.\n//\n// state:: ?StateField\n// Allows a plugin to define a [state field](#state.StateField), an\n// extra slot in the state object in which it can keep its own data.\n//\n// key:: ?PluginKey\n// Can be used to make this a keyed plugin. You can have only one\n// plugin with a given key in a given state, but it is possible to\n// access the plugin's configuration and state through the key,\n// without having access to the plugin instance object.\n//\n// view:: ?(EditorView) → Object\n// When the plugin needs to interact with the editor view, or\n// set something up in the DOM, use this field. The function\n// will be called when the plugin's state is associated with an\n// editor view.\n//\n// return::-\n// Should return an object with the following optional\n// properties:\n//\n// update:: ?(view: EditorView, prevState: EditorState)\n// Called whenever the view's state is updated.\n//\n// destroy:: ?()\n// Called when the view is destroyed or receives a state\n// with different plugins.\n//\n// filterTransaction:: ?(Transaction, EditorState) → bool\n// When present, this will be called before a transaction is\n// applied by the state, allowing the plugin to cancel it (by\n// returning false).\n//\n// appendTransaction:: ?(transactions: [Transaction], oldState: EditorState, newState: EditorState) → ?Transaction\n// Allows the plugin to append another transaction to be applied\n// after the given array of transactions. When another plugin\n// appends a transaction after this was called, it is called again\n// with the new state and new transactions—but only the new\n// transactions, i.e. it won't be passed transactions that it\n// already saw.\n\nfunction bindProps(obj, self, target) {\n for (var prop in obj) {\n var val = obj[prop];\n if (val instanceof Function) { val = val.bind(self); }\n else if (prop == \"handleDOMEvents\") { val = bindProps(val, self, {}); }\n target[prop] = val;\n }\n return target\n}\n\n// ::- Plugins bundle functionality that can be added to an editor.\n// They are part of the [editor state](#state.EditorState) and\n// may influence that state and the view that contains it.\nvar Plugin = function Plugin(spec) {\n // :: EditorProps\n // The [props](#view.EditorProps) exported by this plugin.\n this.props = {};\n if (spec.props) { bindProps(spec.props, this, this.props); }\n // :: Object\n // The plugin's [spec object](#state.PluginSpec).\n this.spec = spec;\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n};\n\n// :: (EditorState) → any\n// Extract the plugin's state field from an editor state.\nPlugin.prototype.getState = function getState (state) { return state[this.key] };\n\n// StateField:: interface\n// A plugin spec may provide a state field (under its\n// [`state`](#state.PluginSpec.state) property) of this type, which\n// describes the state it wants to keep. Functions provided here are\n// always called with the plugin instance as their `this` binding.\n//\n// init:: (config: Object, instance: EditorState) → T\n// Initialize the value of the field. `config` will be the object\n// passed to [`EditorState.create`](#state.EditorState^create). Note\n// that `instance` is a half-initialized state instance, and will\n// not have values for plugin fields initialized after this one.\n//\n// apply:: (tr: Transaction, value: T, oldState: EditorState, newState: EditorState) → T\n// Apply the given transaction to this state field, producing a new\n// field value. Note that the `newState` argument is again a partially\n// constructed state does not yet contain the state from plugins\n// coming after this one.\n//\n// toJSON:: ?(value: T) → *\n// Convert this field to JSON. Optional, can be left off to disable\n// JSON serialization for the field.\n//\n// fromJSON:: ?(config: Object, value: *, state: EditorState) → T\n// Deserialize the JSON representation of this field. Note that the\n// `state` argument is again a half-initialized state.\n\nvar keys = Object.create(null);\n\nfunction createKey(name) {\n if (name in keys) { return name + \"$\" + ++keys[name] }\n keys[name] = 0;\n return name + \"$\"\n}\n\n// ::- A key is used to [tag](#state.PluginSpec.key)\n// plugins in a way that makes it possible to find them, given an\n// editor state. Assigning a key does mean only one plugin of that\n// type can be active in a state.\nvar PluginKey = function PluginKey(name) {\nif ( name === void 0 ) name = \"key\";\n this.key = createKey(name); };\n\n// :: (EditorState) → ?Plugin\n// Get the active plugin with this key, if any, from an editor\n// state.\nPluginKey.prototype.get = function get (state) { return state.config.pluginsByKey[this.key] };\n\n// :: (EditorState) → ?any\n// Get the plugin's state from an editor state.\nPluginKey.prototype.getState = function getState (state) { return state[this.key] };\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","import { DOMSerializer, DOMParser as ProseMirrorDOMParser } from 'prosemirror-model';\nimport { AllSelection } from 'prosemirror-state';\nconst blockWrappers = [\n 'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'td', 'th', 'p',\n 'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'\n];\n/**\n * Trims the whitespace around the provided block nodes.\n *\n * @param html - Input HTML content\n * @param trimAroundTags - Block elements to which trimming will be applied.\n * Defaults to block nodes of the current default schema:\n * 'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'td', 'th', 'p'\n * and additional table and semantic nodes from the default Angular Editor schema:\n * 'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'\n *\n * @returns The trimmed HTML content\n */\nexport const trimWhitespace = (html, trimAroundTags = blockWrappers) => {\n const tags = trimAroundTags.join('|');\n return html.replace(new RegExp('\\\\s*(<(?:' + tags + ')(?:\\\\s[^>]*?)?>)', 'g'), '$1')\n .replace(new RegExp('(<\\\\/(?:' + tags + ')(?:\\\\s[^>]*?)?>)\\\\s*', 'g'), '$1');\n};\n/**\n * Creates a DocumentFragment from the given HTML content.\n *\n * @param html\n * @returns DocumentFragment\n */\nexport const htmlToFragment = (html) => {\n const template = document.createElement('template');\n let fragment;\n if ('content' in template) {\n template.innerHTML = html;\n fragment = template.content;\n }\n else {\n // Internet Explorer\n const parsedDocument = new DOMParser().parseFromString(html, 'text/html');\n fragment = document.createDocumentFragment();\n const dom = parsedDocument.body;\n while (dom && dom.firstChild) {\n fragment.appendChild(dom.firstChild);\n }\n }\n return fragment;\n};\n/**\n * Creates a DocumentFragment from the given ProseMirrorNode.\n * @param doc ProseMirrorNode\n * @returns DocumentFragment\n */\nexport const pmDocToFragment = (doc) => {\n return DOMSerializer.fromSchema(doc.type.schema).serializeFragment(doc.content);\n};\n/**\n * Creates a ProseMirrorNode from the given DOM element.\n *\n * @param dom\n * @param schema\n * @param parseOptions\n * @returns ProseMirrorNode\n */\nexport const domToPmDoc = (dom, schema, parseOptions) => {\n return ProseMirrorDOMParser.fromSchema(schema).parse(dom, parseOptions);\n};\n/**\n * Creates a ProseMirrorNode from the given HTML content.\n *\n * @param content - The new HTML content.\n * @param schema - The document schema.\n * @param parseOptions - ProseMirror parse options recognized by the `parse` and `parseSlice` methods.\n * @returns - New ProseMirrorNode instance.\n */\nexport const parseContent = (content, schema, parseOptions) => {\n const dom = htmlToFragment(content);\n return domToPmDoc(dom, schema, parseOptions);\n};\n/**\n * A function that serializes the Editor State content as HTML string.\n *\n * @param state - The Editor State\n * @returns - The serialized content\n */\nexport const getHtml = (state) => {\n const fragment = pmDocToFragment(state.doc);\n const container = document.createElement('div');\n container.appendChild(fragment);\n return container.innerHTML;\n};\n/**\n * Replaces the content of the editor with a new one.\n *\n * @param content - The new HTML content.\n * @param commandName - The name of the command.\n * @param parseOptions - ProseMirror parse options recognized by the `parse` and `parseSlice` methods.\n * @returns - Command function that takes an editor `state` and `dispatch` function.\n */\nexport const setHtml = (content, command = 'setHTML', parseOptions = { preserveWhitespace: 'full' }) => (state, dispatch) => dispatch(state.tr\n .setSelection(new AllSelection(state.doc))\n .replaceSelectionWith(parseContent(content, state.schema, parseOptions))\n .setMeta('commandName', command));\n","import { Node, Fragment } from 'prosemirror-model';\nimport { TextSelection, AllSelection, NodeSelection } from 'prosemirror-state';\nimport { parseContent } from './source';\nexport const changeStylesString = (styleText, newStyle) => {\n const styleToChange = newStyle.style;\n const regExp = newStyle.value;\n const newValue = newStyle.newValue;\n if (!styleText) {\n return { changed: false, style: null };\n }\n const styles = styleText.split(/\\s*;\\s*/).filter(s => Boolean(s));\n const filtered = styles.filter(s => {\n const nameValue = s.split(/\\s*:\\s*/);\n return !(nameValue[0].toLowerCase() === styleToChange && regExp.test(nameValue[1]));\n });\n if (newValue) {\n filtered.push(`${styleToChange}: ${newValue}`);\n }\n return {\n style: filtered.join('; ') + (filtered.length ? ';' : ''),\n changed: Boolean(newValue) || filtered.length !== styles.length\n };\n};\n/**\n * Determines if a given node type can be inserted at the current cursor position.\n */\nexport const canInsert = (state, nodeType) => {\n let $from = state.selection.$from;\n for (let d = $from.depth; d >= 0; d--) {\n let index = $from.index(d);\n if ($from.node(d).canReplaceWith(index, index, nodeType)) {\n return true;\n }\n }\n return false;\n};\nconst getTypeName = (n) => {\n return n instanceof Node ? n.type.name : n.name;\n};\nconst findNthParentNode = (predicate, depth = 1) => {\n return (selection) => {\n const { $from } = selection;\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (predicate(node)) {\n depth = depth - 1;\n if (depth === 0) {\n return { depth: i, node };\n }\n }\n }\n };\n};\nexport const findNthParentNodeOfType = (nodeType, depth = 1) => {\n return (selection) => {\n return findNthParentNode((node) => getTypeName(node) === getTypeName(nodeType), depth)(selection);\n };\n};\n/**\n * Inserts the given node at the place of current selection.\n */\nexport const insertNode = (node, scrollIntoView) => (state, dispatch) => {\n const tr = state.tr.replaceSelectionWith(node);\n if (scrollIntoView) {\n tr.scrollIntoView();\n }\n dispatch(tr);\n};\nexport const hasSameMarkup = (dom1, dom2, schema, parseOptions) => {\n const fragment1 = Fragment.from(parseContent(dom1, schema, parseOptions));\n const fragment2 = Fragment.from(parseContent(dom2, schema, parseOptions));\n return fragment1.eq(fragment2);\n};\nexport const getSelectionText = (state) => {\n const sel = state.selection;\n if (sel instanceof TextSelection || sel instanceof AllSelection) {\n const fragment = sel.content().content;\n return fragment.textBetween(0, fragment.size);\n }\n return '';\n};\nexport const getNodeFromSelection = (state) => {\n if (state.selection instanceof NodeSelection) {\n return state.selection.node;\n }\n};\n/**\n * Returns the text from the selection if only text is selected on a single line.\n * If selection contains leaf nodes (br, image) between text elements or\n * text from multiple block nodes, the function will return empty string.\n *\n * Useful for values of the inputs of Link and Find&Replace dialogs where the inputs value has been retrieved from the selection and\n * should be single line text only.\n */\nexport const selectedLineTextOnly = (state) => {\n let result = '', hasLeafs = false;\n const { selection, doc } = state;\n const { $from, $to, from, to } = selection;\n if ($from.sameParent($to)) {\n doc.nodesBetween(from, to, (node) => {\n hasLeafs = hasLeafs || (node.isLeaf && !node.isText);\n });\n if (!hasLeafs) {\n result = getSelectionText(state);\n }\n }\n return result;\n};\n/**\n * Used by ViewHtml/ViewSource dialogs for making the HTML more readable.\n */\nexport const indentHtml = (content) => {\n return content.replace(/<\\/(p|li|ul|ol|h[1-6]|table|tr|td|th)>/ig, '\\n')\n .replace(/<(ul|ol)([^>]*)>
  • \\n/ig, '
    \\n')\n .replace(/\\n$/, '');\n};\nexport const shallowEqual = (object1, object2) => {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n return keys1.length === keys2.length &&\n keys1.every(k => object1[k] === object2[k]);\n};\nconst applyToWordDefault = { before: /[^ !,?.\\[\\]{}()]+$/i, after: /^[^ !,?.\\[\\]{}()]+/i };\n/**\n * if options.applyToWord is set, expands the selection to the word where the cursor is and\n * returns modified state and dispatch.\n */\nexport const expandSelection = (state, dispatch, options) => {\n if (!options.applyToWord || !state.selection.empty) {\n return { state, dispatch };\n }\n const applyToWordOptions = options.applyToWord === true ? applyToWordDefault : options.applyToWord;\n let initialPosition = null;\n const tr = state.tr;\n const selection = state.selection;\n const before = selection.$head.nodeBefore;\n const after = selection.$head.nodeAfter;\n if (before && before.type.name === 'text' && before.text && after && after.type.name === 'text' && after.text) {\n const children = [];\n selection.$head.parent.descendants((node, pos) => {\n children.push({ node, pos });\n return false;\n });\n let cursor = selection.$head.parentOffset;\n const nodeIndex = children.findIndex(({ node, pos }) => pos <= cursor && pos + node.nodeSize >= cursor);\n let text = children[nodeIndex].node.text;\n let skip = false;\n for (let i = nodeIndex - 1; i >= 0; i--) {\n const element = children[i];\n if (!skip && element && element.node.type.name === 'text') {\n text = element.node.text + text;\n }\n else {\n skip = true;\n cursor -= element.node.nodeSize;\n }\n }\n for (let i = nodeIndex + 1; i < children.length; i++) {\n const element = children[i];\n if (element && element.node.type.name === 'text') {\n text = text + element.node.text;\n }\n else {\n break;\n }\n }\n const textBefore = text.substring(0, cursor);\n const textAfter = text.substring(cursor);\n const matchBefore = applyToWordOptions.before.exec(textBefore);\n const matchAfter = applyToWordOptions.after.exec(textAfter);\n if (matchBefore && matchAfter) {\n const extendLeft = matchBefore[0].length;\n const extendRight = matchAfter[0].length;\n const pos = initialPosition = selection.from;\n tr.setSelection(TextSelection.create(state.doc, pos - extendLeft, pos + extendRight));\n const cmdState = {\n tr,\n selection: tr.selection,\n doc: tr.doc,\n storedMarks: null,\n schema: tr.doc.type.schema\n };\n const cmdDispatch = tran => {\n tran.setSelection(TextSelection.create(tran.doc, initialPosition));\n dispatch(tran);\n };\n return { state: cmdState, dispatch: cmdDispatch };\n }\n }\n return { state, dispatch };\n};\n/**\n * if options.applyToWord is set, expands the selection to the word where the cursor is and\n * use the modified state for the passed command.\n * Designed to work with toggleInlineFormat, applyInlineStyle and applyLink functions.\n *\n * Example:\n * const applyToWord: boolean|{before: RegExp, after: RegExp} = true;\n * // or applyToWord = { before: /[^ !,?.\\[\\]{}()]+$/i, after: /^[^ !,?.\\[\\]{}()]+/i }};\n *\n * const command = expandToWordWrap(toggleInlineFormat, {...bold, applyToWord );\n * command(view.state, view.dispatch);\n */\nexport const expandToWordWrap = (command, options) => {\n return (state, dispatch, _view) => {\n const { state: cmdState, dispatch: cmdDispatch } = expandSelection(state, dispatch, options);\n return command(options)(cmdState, cmdDispatch);\n };\n};\n","import { RemoveMarkStep } from 'prosemirror-transform';\nimport { MarkType } from 'prosemirror-model';\nexport const markApplies = (doc, ranges, type) => {\n let loop = i => {\n let ref = ranges[i];\n let $from = ref.$from;\n let $to = ref.$to;\n let can = $from.depth === 0 ? doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can) {\n return false;\n }\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can) {\n return { v: true };\n }\n };\n for (let i = 0; i < ranges.length; i++) {\n let returned = loop(i);\n if (returned) {\n return returned.v;\n }\n }\n return false;\n};\nexport const toggleMark = (markType, attrs, tr) => (state, dispatch) => {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks())) {\n dispatch(tr.removeStoredMark(markType));\n }\n else {\n dispatch(tr.addStoredMark(markType.create(attrs)));\n }\n }\n else {\n let has = false;\n for (let i = 0; !has && i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n tr.addMark($from.pos, $to.pos, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n};\nexport const removeMark = (tr, from, to, mark) => {\n if (mark === void 0) {\n mark = null;\n }\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline) {\n return;\n }\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let found = mark.isInSet(node.marks);\n if (found) {\n toRemove = [found];\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks)) {\n toRemove = [mark];\n }\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found$1 = (void 0);\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step === step - 1 && style.eq(m.style)) {\n found$1 = m;\n }\n }\n if (found$1) {\n found$1.to = end;\n found$1.step = step;\n }\n else {\n matched.push({ style: style, from: Math.max(pos, from), to: end, step: step });\n }\n }\n }\n });\n matched.forEach((m) => { return tr.step(new RemoveMarkStep(m.from, m.to, m.style)); });\n return tr;\n};\nexport const removeMarks = (marks, state, dispatch, tr) => {\n let { $cursor, ranges } = state.selection;\n tr = tr || state.tr;\n if ($cursor) {\n marks.forEach(m => {\n if (m.isInSet(state.storedMarks || $cursor.marks())) {\n dispatch(tr.removeStoredMark(m));\n }\n });\n }\n else {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n marks.forEach(m => {\n removeMark(tr, $from.pos, $to.pos, m);\n });\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\nconst toArray = (x) => x instanceof Array ? x : [x];\nexport const removeAllMarks = ({ except = [] } = {}) => (state, dispatch) => {\n const tr = state.tr;\n cleanMarks(tr, { except: toArray(except) });\n if (tr.docChanged) {\n dispatch(tr);\n }\n};\n/**\n * Removes the marks from the selection base on the passed parameter.\n * Requires to dispatch the transaction.\n *\n * @example\n * See `removeAllMarks` or `cleanFormatting` function.\n */\nexport const cleanMarks = (tr, { except }) => {\n const { doc, selection } = tr;\n const schema = doc.type.schema;\n const { empty, ranges } = selection;\n const excludedMarkTypes = (except || []).map(mt => mt.name);\n if (!empty) {\n const marks = Object.keys(schema.marks)\n .map(m => schema.marks[m])\n .filter(mt => excludedMarkTypes.indexOf(mt.name) === -1);\n ranges.forEach(({ $from, $to }) => {\n marks.forEach(mark => tr.removeMark($from.pos, $to.pos, mark));\n });\n }\n};\n/**\n * Checks if a mark exists in the selection.\n * Used for checking the state of bold, italic, ... and unlink tools.\n */\nexport const hasMark = (state, options) => {\n const marks = state.schema.marks;\n const altMarks = (options.altMarks || []).filter(m => marks[m]);\n const altStyle = options.altStyle;\n let { from, $from, to, empty } = state.selection;\n const type = marks[options.mark];\n const doc = state.doc;\n let result = false;\n let currMarks;\n if (empty) {\n currMarks = state.storedMarks || $from.marks();\n result = (type && type.isInSet(currMarks)) || altMarks.some(m => marks[m].isInSet(currMarks));\n }\n else {\n result = (type && doc.rangeHasMark(from, to, type)) || altMarks.some(m => doc.rangeHasMark(from, to, marks[m]));\n }\n if (!result && altStyle && marks.style) {\n return selectionMarks(state, marks.style)\n .some(mark => styleValue(mark, altStyle) !== null);\n }\n return Boolean(result);\n};\nexport const styleValue = (mark, style) => {\n const styleText = (mark && mark.attrs.style) || '';\n const styles = styleText.split(/\\s*;\\s*/).filter(s => Boolean(s));\n for (let i = 0; i < styles.length; i++) {\n const nameValue = styles[i].split(/\\s*:\\s*/);\n if (nameValue[0].toLowerCase() === style.name && style.value.test(nameValue[1])) {\n return nameValue[1];\n }\n }\n return null;\n};\n/**\n * Returns the marks of a specific type for every inline node in the selection.\n */\nexport const selectionMarks = (state, markType) => {\n let { from, $from, to, empty } = state.selection;\n let marks = [];\n if (empty) {\n marks.push(markType.isInSet(state.storedMarks || $from.marks()));\n }\n else {\n state.doc.nodesBetween(from, to, node => {\n if (node.isInline) {\n marks.push(markType.isInSet(node.marks));\n }\n });\n }\n return marks;\n};\n/**\n * Returns the specified mark which wraps the selection.\n * Used by link tools.\n */\nexport const getMark = (state, markType) => {\n const marks = selectionMarks(state, markType);\n const filtered = marks.filter(m => Boolean(m));\n return marks.length === filtered.length ? marks[0] : undefined;\n};\n/**\n * **Deprecated.** Use `selectionMarks` function instead.\n */\nexport const getActiveMarks = (state, markType) => {\n const marks = selectionMarks(state, markType);\n const filtered = marks.filter(m => Boolean(m));\n let hasNodesWithoutMarks = marks.length !== filtered.length;\n return {\n hasNodesWithoutMarks,\n marks: filtered\n };\n};\n","import { AddMarkStep, RemoveMarkStep } from 'prosemirror-transform';\nimport { changeStylesString, shallowEqual } from './utils';\nimport { markApplies, hasMark, removeMarks, toggleMark, styleValue, selectionMarks } from './mark';\nconst changeStyleFromMark = (marks, toChange) => {\n const styleMark = marks.find(m => m.type.name === 'style');\n const elementStyle = styleMark && styleMark.attrs.style;\n return changeStylesString(elementStyle, toChange);\n};\nconst changeStyleMark = (tr, from, to, attrs, markType) => {\n const mark = markType.create({ style: attrs.style });\n let removed = [], added = [], removing = null, adding = null;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline) {\n return;\n }\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n const newStyle = changeStyleFromMark(marks, attrs);\n if (newStyle.changed || attrs.newValue) {\n const style = newStyle.changed ?\n { style: newStyle.style || null } : { style: `${[attrs.style]}: ${attrs.newValue};` };\n const currentMark = markType.isInSet(marks) ? marks.find(m => m.type.name === 'style') : null;\n const newMarkAttrs = currentMark ? Object.assign({}, currentMark.attrs, style) : style;\n const newStyleMark = markType.create(newMarkAttrs);\n let newSet = newStyleMark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to === start && removing.mark.eq(marks[i])) {\n removing.to = end;\n }\n else {\n removing = new RemoveMarkStep(start, end, marks[i]);\n removed.push(removing);\n }\n }\n }\n const previousAdded = adding && adding.to === start;\n const sameAdding = previousAdded && newStyleMark.attrs.style === adding.mark.attrs.style;\n if (previousAdded && sameAdding) {\n adding.to = end;\n }\n else if (Object.keys(newMarkAttrs).some(attrName => newMarkAttrs[attrName] !== null)) {\n adding = new AddMarkStep(start, end, newStyleMark);\n added.push(adding);\n }\n }\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n return removed.length + added.length > 0;\n};\n/**\n * Used by FontSize and FontName tools for getting their state.\n */\nexport const getInlineStyles = (state, style) => {\n const styleMark = state.schema.marks.style;\n const marks = styleMark ? selectionMarks(state, styleMark) : [];\n return marks.map(mark => styleValue(mark, style)).filter(m => m !== null);\n};\nconst changeStyle = (markType, attrs) => {\n return function (state, dispatch, tr) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n let result = false;\n if (dispatch) {\n const transaction = tr || state.tr;\n if ($cursor) {\n const currentMarks = state.storedMarks || $cursor.marks();\n if (markType.isInSet(currentMarks)) {\n const newStyle = changeStyleFromMark(currentMarks, attrs);\n const styleMark = currentMarks.find(m => m.type.name === 'style');\n const newAttrs = Object.assign({}, (styleMark ? styleMark.attrs : {}), { style: newStyle.style || null });\n if (shallowEqual(styleMark.attrs, newAttrs)) {\n return false;\n }\n dispatch(transaction.removeStoredMark(markType));\n if (Object.keys(newAttrs).some(attrName => newAttrs[attrName] !== null)) {\n dispatch(transaction.addStoredMark(markType.create(newAttrs)));\n }\n result = true;\n }\n }\n else {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n result = changeStyleMark(transaction, $from.pos, $to.pos, attrs, markType);\n }\n if (result) {\n transaction.scrollIntoView();\n dispatch(transaction);\n }\n }\n }\n return result;\n };\n};\n/**\n * Used by bold, italic, ... and link commands.\n */\nexport const toggleInlineFormat = (options, tr, markAttrs) => (state, dispatch) => {\n const marks = state.schema.marks;\n const { altStyle, altMarks = [], mark } = options;\n const transaction = tr || state.tr;\n let styleRemoved = false;\n let dispatched = false;\n const markDispatched = () => dispatched = true;\n if (altStyle && marks.style) {\n const cmd = changeStyle(marks.style, { style: altStyle.name, value: altStyle.value });\n styleRemoved = cmd(state, markDispatched, transaction);\n }\n const allMarks = [mark, ...altMarks].filter(m => marks[m]);\n const toRemove = allMarks.map(m => hasMark(state, { mark: m }) && marks[m]).filter(m => m);\n if (toRemove.length) {\n removeMarks(toRemove, state, markDispatched, transaction);\n }\n else {\n if (!styleRemoved) {\n toggleMark(marks[mark], markAttrs, transaction)(state, markDispatched);\n }\n }\n if (dispatched) {\n dispatch(transaction);\n }\n return dispatched;\n};\n/**\n * Used by FontSize, FontName, Color and BackColor commands.\n */\nexport const applyInlineStyle = (options, command) => (state, dispatch) => {\n const marks = state.schema.marks;\n const markType = marks.style;\n const attrs = {\n style: options.style, value: /^.+$/, newValue: options.value\n };\n const tr = state.tr;\n if (command) {\n tr.setMeta('commandName', command);\n }\n tr.setMeta('args', options);\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markType || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n // Empty selection\n if ($cursor) {\n const marksFromSelection = state.storedMarks || $cursor.marks();\n const currentMark = markType.isInSet(marksFromSelection) ? marksFromSelection.find(m => m.type.name === 'style') : null;\n const newStyles = { style: null };\n if (currentMark && currentMark.attrs.style) {\n const resultStyles = changeStylesString(currentMark.attrs.style, attrs);\n if (resultStyles.changed && resultStyles.style) {\n newStyles.style = resultStyles.style;\n }\n }\n else if (attrs.newValue) {\n newStyles.style = `${[attrs.style]}: ${attrs.newValue};`;\n }\n const newMarkAttrs = currentMark ? Object.assign({}, currentMark.attrs, newStyles) : newStyles;\n if (Object.keys(newMarkAttrs).some(attrName => newMarkAttrs[attrName] !== null)) {\n dispatch(tr.addStoredMark(markType.create(newMarkAttrs)));\n }\n else {\n dispatch(tr.removeStoredMark(markType));\n }\n return true;\n }\n return changeStyle(markType, attrs)(state, dispatch, tr);\n};\n","import { toggleInlineFormat } from './inline-style';\nimport { hasMark, toggleMark, removeMark, selectionMarks } from './mark';\nimport { EditorState } from 'prosemirror-state';\nconst modifyLink = (options, tr) => (state, dispatch) => {\n const { $cursor, from, to } = state.selection;\n const markType = state.schema.marks[options.mark];\n if (!$cursor) {\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isInline && markType.isInSet(node.marks)) {\n tr.removeMark(pos, pos + node.nodeSize, markType);\n tr.addMark(pos, pos + node.nodeSize, markType.create(options.attrs));\n dispatch(tr);\n }\n });\n }\n else {\n const parentNode = $cursor.parent;\n const cursorNodeIndex = $cursor.index();\n const mark = parentNode.child(cursorNodeIndex).marks.find(m => m.type === markType);\n const childCount = parentNode.childCount;\n let linkStart = $cursor.pos - $cursor.textOffset, linkSize = parentNode.child(cursorNodeIndex).nodeSize, index, nodeSize;\n index = cursorNodeIndex - 1;\n while (index >= 0 && mark.isInSet(parentNode.child(index).marks)) {\n nodeSize = parentNode.child(index).nodeSize;\n linkSize += nodeSize;\n linkStart -= nodeSize;\n index -= 1;\n }\n index = cursorNodeIndex + 1;\n while (index < childCount && mark.isInSet(parentNode.child(index).marks)) {\n linkSize += parentNode.child(index).nodeSize;\n index += 1;\n }\n tr.removeMark(linkStart, linkStart + linkSize, markType);\n tr.addMark(linkStart, linkStart + linkSize, markType.create(options.attrs));\n dispatch(tr);\n }\n};\nexport const removeLink = (options, tr) => (state, dispatch) => {\n const { $cursor } = state.selection;\n if (!$cursor) {\n toggleInlineFormat(options, tr)(state, dispatch);\n }\n else {\n const parentNode = $cursor.parent;\n const cursorNodeIndex = $cursor.index();\n const toolMark = state.schema.marks[options.mark];\n const mark = parentNode.child(cursorNodeIndex).marks.find(m => m.type === toolMark);\n const childCount = parentNode.childCount;\n let linkStart = $cursor.pos - $cursor.textOffset, linkSize = parentNode.child(cursorNodeIndex).nodeSize, index, nodeSize;\n index = cursorNodeIndex - 1;\n while (index >= 0 && mark.isInSet(parentNode.child(index).marks)) {\n nodeSize = parentNode.child(index).nodeSize;\n linkSize += nodeSize;\n linkStart -= nodeSize;\n index -= 1;\n }\n index = cursorNodeIndex + 1;\n while (index < childCount && mark.isInSet(parentNode.child(index).marks)) {\n linkSize += parentNode.child(index).nodeSize;\n index += 1;\n }\n dispatch(removeMark(tr || state.tr, linkStart, linkStart + linkSize, mark));\n }\n};\n/**\n * Returns a mark which wraps the selection.\n */\nconst getParentMark = (state, markType) => {\n const marks = selectionMarks(state, markType);\n return marks.length === 1 && marks[0] ? marks[0] : null;\n};\nexport const applyLink = ({ mark, attrs }, commandName = 'link') => (state, dispatch) => {\n const marks = state.schema.marks;\n const tr = state.tr;\n if (commandName) {\n tr.setMeta('commandName', commandName);\n tr.setMeta('args', attrs);\n }\n let dispatched = false;\n const markDispatched = () => dispatched = true;\n if (getParentMark(state, marks[mark])) {\n modifyLink({ mark, attrs }, tr)(state, markDispatched);\n }\n else {\n let nextState = state;\n if (hasMark(state, { mark })) {\n removeLink({ mark, attrs }, tr)(state, markDispatched);\n nextState = EditorState.create({ doc: tr.doc, selection: tr.selection });\n }\n if (dispatched) {\n toggleMark(marks[mark], attrs, tr)(nextState, markDispatched);\n }\n else {\n toggleInlineFormat({ mark: mark }, tr, attrs)(nextState, markDispatched);\n }\n }\n if (dispatched) {\n dispatch(tr);\n }\n return dispatched;\n};\n","export const insertText = (attrs) => (state, dispatch) => {\n dispatch(state.tr.insertText(attrs.text, attrs.from, attrs.to));\n};\n","import { insertNode } from './utils';\nexport const insertImage = (attrs) => (state, dispatch) => {\n const { image } = state.schema.nodes;\n const commandName = 'insertImage';\n const newImage = image.createAndFill(attrs);\n insertNode(newImage)(state, tr => dispatch(tr.setMeta('commandName', commandName).setMeta('args', attrs)));\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import * as tslib_1 from \"tslib\";\nimport { changeStylesString } from './utils';\nimport { ReplaceAroundStep } from 'prosemirror-transform';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { NodeSelection } from 'prosemirror-state';\n/**\n * @hidden\n */\nconst canChangeType = (stateDoc, pos, type) => {\n let $pos = stateDoc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n};\n/**\n * Changes the type or the attributes of the passed node.\n *\n * @example\n * See `cleanTextBlockFormatting` or `formatBlockElements` function.\n */\nexport const changeTextBlock = (tr, node, nodeType, attrs) => {\n if (!nodeType.isTextblock) {\n return false;\n }\n const { ranges } = tr.selection;\n ranges.forEach(range => {\n const mapFrom = tr.steps.length;\n const from = range.$from.pos;\n const to = range.$to.pos;\n tr.doc.nodesBetween(from, to, (currNode, pos) => {\n if (currNode.eq(node) &&\n currNode.isTextblock &&\n !currNode.hasMarkup(nodeType, attrs) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), nodeType)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), nodeType);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + currNode.nodeSize, 1);\n let slice = new Slice(Fragment.from(nodeType.create(attrs, null, currNode.marks)), 0, 0);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, slice, 1, true));\n return false; // this will skip the node children\n }\n });\n });\n};\n/**\n * Traverses the selection and returns the block nodes in it.\n *\n * @example\n * See `cleanTextBlockFormatting` function.\n */\nexport const blockNodes = (state, options = { blocksInSelection: false }) => {\n const { doc, selection } = state;\n let { $from, ranges } = selection;\n const { blocksInSelection } = options;\n const result = [];\n const selNode = selection instanceof NodeSelection ? selection.node : undefined;\n if (selNode) {\n if (selNode.isBlock) {\n result.push(selNode);\n selNode.nodesBetween(0, selNode.content.size, node => {\n if (node.isBlock) {\n result.push(node);\n }\n });\n }\n else if (!blocksInSelection && $from.parent && $from.parent.isBlock) {\n result.push($from.parent);\n }\n }\n else {\n ranges.forEach(range => {\n const from = range.$from.pos;\n const to = range.$to.pos;\n doc.nodesBetween(from, to, (node, pos, _parent, _index) => {\n if (node.isBlock && (!blocksInSelection || (pos >= from && pos + node.content.size + 2 <= to))) {\n result.push(node);\n }\n });\n });\n }\n return result;\n};\nexport const formatBlockElements = (value, commandName) => (state, dispatch) => {\n const blocks = blockNodes(state);\n const nodes = state.schema.nodes;\n const tr = state.tr;\n tr.setMeta('commandName', commandName);\n tr.setMeta('args', { value });\n blocks.forEach(node => {\n if (node.type.isTextblock) {\n if (value === 'p') {\n const _a = node.attrs, { level } = _a, attrs = tslib_1.__rest(_a, [\"level\"]);\n changeTextBlock(tr, node, nodes.paragraph, attrs);\n }\n else if (/^h[1-6]$/i.test(value)) {\n const level = parseInt(value.substr(1), 10);\n changeTextBlock(tr, node, nodes.heading, Object.assign({}, node.attrs, { level }));\n }\n else if (value === 'blockquote') {\n const _b = node.attrs, { level } = _b, attrs = tslib_1.__rest(_b, [\"level\"]);\n changeTextBlock(tr, node, nodes.blockquote, attrs);\n }\n }\n });\n const result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n};\n/**\n * Removes the style and class attributes of text block elements.\n * Requires to dispatch the transaction.\n *\n * @example\n * See `cleanFormatting` function.\n */\nexport const cleanTextBlockFormatting = (tr, options = { blocksInSelection: true }) => {\n const { doc, selection } = tr;\n const { blocksInSelection, blockNodeType } = options;\n const nodes = blockNodes({ doc, selection }, { blocksInSelection });\n const textBlocks = nodes.filter(node => node.isTextblock);\n textBlocks.forEach(node => {\n const _a = node.attrs || {}, { style = '', class: className = '' } = _a, attrs = tslib_1.__rest(_a, [\"style\", \"class\"]);\n const nodeType = blockNodeType || node.type;\n if (style || className || nodeType !== node.type) {\n changeTextBlock(tr, node, nodeType, attrs);\n }\n });\n};\nexport const getBlockFormats = (state) => {\n const blocks = blockNodes(state);\n const nodes = state.schema.nodes;\n const result = [];\n blocks.forEach((node) => {\n if (node.type === nodes.paragraph) {\n result.push('p');\n }\n else if (node.type === nodes.heading) {\n result.push(`h${node.attrs.level}`);\n }\n else if (node.type === nodes.blockquote) {\n // In case the blockquote can have inline content.\n // Will be removed once a blockquote command is implemented.\n result.push('blockquote');\n }\n });\n return result;\n};\nexport const addStyles = (node, stylesToApply) => {\n let currentStyles = node.attrs.style, changedStyleResult, toChange;\n if (currentStyles) {\n stylesToApply.forEach(style => {\n toChange = { style: style.name, value: /^.+$/, newValue: style.value };\n changedStyleResult = changeStylesString(currentStyles, toChange);\n currentStyles = changedStyleResult.changed ? changedStyleResult.style : currentStyles;\n });\n }\n const reducer = (acc, curr) => ((acc && curr.value ? acc + ' ' : '') + curr.value ? `${curr.name}: ${curr.value};` : '');\n currentStyles = currentStyles || stylesToApply.reduce(reducer, '');\n return Object.assign({}, node.attrs, { style: currentStyles || null });\n};\nexport const hasNode = (state, nodeType) => {\n let { from, to } = state.selection;\n let result = false;\n state.doc.nodesBetween(from, to, node => {\n result = result || node.type === nodeType;\n return !result;\n });\n return result;\n};\nexport const parentBlockFormat = (state) => {\n const formats = getBlockFormats(state);\n return new Set(formats).size === 1 ? formats[0] : null;\n};\n/**\n * **Deprecated.** Use `parentBlockFormat` function instead.\n */\nexport const activeNode = (state) => {\n return { tag: parentBlockFormat(state) || '' };\n};\n","import { blockNodes, addStyles, changeTextBlock } from './blockNode';\n/**\n * Aligning block elements in the selection.\n *\n * @returns {boolean} - Returns true if any alignment is applied.\n */\nexport const alignBlocks = (actions, commandName) => (state, dispatch) => {\n const blocks = blockNodes(state);\n const tr = state.tr;\n tr.setMeta('commandName', commandName);\n blocks.forEach(node => {\n if (node.type.isTextblock) {\n let newAttrs = {};\n const action = actions.find(n => n.node === node.type.name);\n if (action) {\n newAttrs = addStyles(node, action.style);\n }\n changeTextBlock(tr, node, node.type, newAttrs);\n }\n });\n const result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n};\nexport const isAligned = (state, actions) => {\n const blocks = blockNodes(state);\n let result = false;\n blocks.forEach(node => {\n if (!result && node.type.isTextblock && node.attrs.style) {\n const action = actions.find(a => a.node === node.type.name);\n if (action) {\n result = action.style.every(style => {\n return !!style.value && new RegExp(`${style.name}:\\\\s?${style.value}`, 'i').test(node.attrs.style);\n });\n }\n }\n });\n return result;\n};\n","import { cleanTextBlockFormatting } from './blockNode';\nimport { cleanMarks } from './mark';\n/**\n * A command which removes the inline formatting, class and style attributes of paragraph and heading elements in the selection.\n */\nexport const cleanFormatting = (options = { blocksInSelection: true }) => (state, dispatch) => {\n const tr = state.tr;\n const { blocksInSelection, blockNodeType, exceptMarks } = options;\n const except = (exceptMarks || [state.schema.marks.link]).filter(Boolean);\n cleanMarks(tr, { except });\n cleanTextBlockFormatting(tr, { blocksInSelection, blockNodeType });\n const result = tr.docChanged;\n if (result && dispatch) {\n dispatch(tr);\n }\n return result;\n};\n","import { findWrapping, ReplaceAroundStep, canSplit, liftTarget } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\n\nvar olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n\n// :: NodeSpec\n// An ordered list [node spec](#model.NodeSpec). Has a single\n// attribute, `order`, which determines the number at which the list\n// starts counting, and defaults to 1. Represented as an `
      `\n// element.\nvar orderedList = {\n attrs: {order: {default: 1}},\n parseDOM: [{tag: \"ol\", getAttrs: function getAttrs(dom) {\n return {order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1}\n }}],\n toDOM: function toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", {start: node.attrs.order}, 0]\n }\n};\n\n// :: NodeSpec\n// A bullet list node spec, represented in the DOM as `
        `.\nvar bulletList = {\n parseDOM: [{tag: \"ul\"}],\n toDOM: function toDOM() { return ulDOM }\n};\n\n// :: NodeSpec\n// A list item (`
      • `) spec.\nvar listItem = {\n parseDOM: [{tag: \"li\"}],\n toDOM: function toDOM() { return liDOM },\n defining: true\n};\n\nfunction add(obj, props) {\n var copy = {};\n for (var prop in obj) { copy[prop] = obj[prop]; }\n for (var prop$1 in props) { copy[prop$1] = props[prop$1]; }\n return copy\n}\n\n// :: (OrderedMap, string, ?string) → OrderedMap\n// Convenience function for adding list-related node types to a map\n// specifying the nodes for a schema. Adds\n// [`orderedList`](#schema-list.orderedList) as `\"ordered_list\"`,\n// [`bulletList`](#schema-list.bulletList) as `\"bullet_list\"`, and\n// [`listItem`](#schema-list.listItem) as `\"list_item\"`.\n//\n// `itemContent` determines the content expression for the list items.\n// If you want the commands defined in this module to apply to your\n// list structure, it should have a shape like `\"paragraph block*\"` or\n// `\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\n// given to assign a group name to the list node types, for example\n// `\"block\"`.\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, {content: \"list_item+\", group: listGroup}),\n bullet_list: add(bulletList, {content: \"list_item+\", group: listGroup}),\n list_item: add(listItem, {content: itemContent})\n })\n}\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command function that wraps the selection in a list with\n// the given type an attributes. If `dispatch` is null, only return a\n// value to indicate whether this is possible, but don't actually\n// perform the change.\nfunction wrapInList(listType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), doJoin = false, outerRange = range;\n if (!range) { return false }\n // This is at the top of an existing list item\n if (range.depth >= 2 && $from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if ($from.index(range.depth - 1) == 0) { return false }\n var $insert = state.doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n { range = new NodeRange($from, state.doc.resolve($to.end(range.depth)), range.depth); }\n doJoin = true;\n }\n var wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap) { return false }\n if (dispatch) { dispatch(doWrapInList(state.tr, range, wrap, doJoin, listType).scrollIntoView()); }\n return true\n }\n}\n\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n var content = Fragment.empty;\n for (var i = wrappers.length - 1; i >= 0; i--)\n { content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content)); }\n\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end,\n new Slice(content, 0, 0), wrappers.length, true));\n\n var found = 0;\n for (var i$1 = 0; i$1 < wrappers.length; i$1++) { if (wrappers[i$1].type == listType) { found = i$1 + 1; } }\n var splitDepth = wrappers.length - found;\n\n var splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (var i$2 = range.startIndex, e = range.endIndex, first = true; i$2 < e; i$2++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i$2).nodeSize;\n }\n return tr\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Build a command that splits a non-empty textblock at the top level\n// of a list item by also splitting that list item.\nfunction splitListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var node = ref.node;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) { return false }\n var grandParent = $from.node(-1);\n if (grandParent.type != itemType) { return false }\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 2 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1) { return false }\n if (dispatch) {\n var wrap = Fragment.empty;\n var depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (var d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n { wrap = Fragment.from($from.node(d).copy(wrap)); }\n var depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n var start = $from.before($from.depth - (depthBefore - 1));\n var tr$1 = state.tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n var sel = -1;\n tr$1.doc.nodesBetween(start, tr$1.doc.content.size, function (node, pos) {\n if (sel > -1) { return false }\n if (node.isTextblock && node.content.size == 0) { sel = pos + 1; }\n });\n if (sel > -1) { tr$1.setSelection(state.selection.constructor.near(tr$1.doc.resolve(sel))); }\n dispatch(tr$1.scrollIntoView());\n }\n return true\n }\n var nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n var tr = state.tr.delete($from.pos, $to.pos);\n var types = nextType && [null, {type: nextType}];\n if (!canSplit(tr.doc, $from.pos, 2, types)) { return false }\n if (dispatch) { dispatch(tr.split($from.pos, 2, types).scrollIntoView()); }\n return true\n }\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command to lift the list item around the selection up into\n// a wrapping list.\nfunction liftListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to, function (node) { return node.childCount && node.firstChild.type == itemType; });\n if (!range) { return false }\n if (!dispatch) { return true }\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n { return liftToOuterList(state, dispatch, itemType, range) }\n else // Outer list node\n { return liftOutOfList(state, dispatch, range) }\n }\n}\n\nfunction liftToOuterList(state, dispatch, itemType, range) {\n var tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList,\n new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n dispatch(tr.lift(range, liftTarget(range)).scrollIntoView());\n return true\n}\n\nfunction liftOutOfList(state, dispatch, range) {\n var tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (var pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n var $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize) { return false }\n var atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n var parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1,\n item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n { return false }\n var start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1,\n new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))),\n atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command to sink the list item around the selection down\n// into an inner list.\nfunction sinkListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to, function (node) { return node.childCount && node.firstChild.type == itemType; });\n if (!range) { return false }\n var startIndex = range.startIndex;\n if (startIndex == 0) { return false }\n var parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType) { return false }\n\n if (dispatch) {\n var nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n var inner = Fragment.from(nestedBefore ? itemType.create() : null);\n var slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))),\n nestedBefore ? 3 : 1, 0);\n var before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after,\n before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true\n }\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, wrapInList };\n","export const listsTypes = {\n orderedList: 'ordered_list',\n bulletList: 'bullet_list',\n listItem: 'list_item'\n};\n/**\n * The object of the OrderedList tool settings.\n */\nexport const orderedList = {\n listType: listsTypes.orderedList,\n types: Object.assign({}, listsTypes)\n};\n/**\n * The object of the UnorderedList tool settings.\n */\nexport const bulletList = {\n listType: listsTypes.bulletList,\n types: Object.assign({}, listsTypes)\n};\n","import { listsTypes } from './list-settings';\n/**\n * The object of the Indent tool settings.\n */\nexport const indentRules = {\n nodes: [{\n node: 'paragraph',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: 30,\n unit: 'px'\n }, {\n node: 'heading',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: 30,\n unit: 'px'\n }],\n listsTypes: Object.assign({}, listsTypes)\n};\n/**\n * The object of the Outdent tool settings.\n */\nexport const outdentRules = {\n nodes: [{\n node: 'paragraph',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: -30,\n unit: 'px'\n }, {\n node: 'heading',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: -30,\n unit: 'px'\n }],\n listsTypes: Object.assign({}, listsTypes)\n};\n","import { liftTarget, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { NodeSelection, Selection, AllSelection, TextSelection } from 'prosemirror-state';\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Delete the selection, if there is one.\nfunction deleteSelection(state, dispatch) {\n if (state.selection.empty) { return false }\n if (dispatch) { dispatch(state.tr.deleteSelection().scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and at the start of a textblock, try to\n// reduce the distance between that block and the one before it—if\n// there's a block directly before it that can be joined, join them.\n// If not, try to move the selected block closer to the next one in\n// the document structure by lifting it out of its parent or moving it\n// into a parent of the previous block. Will use the view for accurate\n// (bidi-aware) start-of-textblock detection if given.\nfunction joinBackward(state, dispatch, view) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n { return false }\n\n var $cut = findCutBefore($cursor);\n\n // If there is no node before this, try to lift\n if (!$cut) {\n var range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n }\n\n var before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n { return true }\n\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n if (dispatch) {\n var tr = state.tr.deleteRange($cursor.before(), $cursor.after());\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) { dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\nfunction textblockAt(node, side, only) {\n for (; node; node = (side == \"start\" ? node.firstChild : node.lastChild)) {\n if (node.isTextblock) { return true }\n if (only && node.childCount != 1) { return false }\n }\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the start of a textblock, select\n// the node before that textblock, if possible. This is intended to be\n// bound to keys like backspace, after\n// [`joinBackward`](#commands.joinBackward) or other deleting\n// commands, as a fall-back behavior when the schema doesn't allow\n// deletion at the selected point.\nfunction selectNodeBackward(state, dispatch, view) {\n var ref = state.selection;\n var $head = ref.$head;\n var empty = ref.empty;\n var $cut = $head;\n if (!empty) { return false }\n\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0) { return false }\n $cut = findCutBefore($head);\n }\n var node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node)) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView()); }\n return true\n}\n\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating) { for (var i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0) { return $pos.doc.resolve($pos.before(i + 1)) }\n if ($pos.node(i).type.spec.isolating) { break }\n } }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and the cursor is at the end of a\n// textblock, try to reduce or remove the boundary between that block\n// and the one after it, either by joining them or by moving the other\n// block closer to this one in the tree structure. Will use the view\n// for accurate start-of-textblock detection if given.\nfunction joinForward(state, dispatch, view) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n { return false }\n\n var $cut = findCutAfter($cursor);\n\n // If there is no node after this, there's nothing to do\n if (!$cut) { return false }\n\n var after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch)) { return true }\n\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n if (dispatch) {\n var tr = state.tr.deleteRange($cursor.before(), $cursor.after());\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) { dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the end of a textblock, select\n// the node coming after that textblock, if possible. This is intended\n// to be bound to keys like delete, after\n// [`joinForward`](#commands.joinForward) and similar deleting\n// commands, to provide a fall-back behavior when the schema doesn't\n// allow deletion at the selected point.\nfunction selectNodeForward(state, dispatch, view) {\n var ref = state.selection;\n var $head = ref.$head;\n var empty = ref.empty;\n var $cut = $head;\n if (!empty) { return false }\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n { return false }\n $cut = findCutAfter($head);\n }\n var node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node)) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView()); }\n return true\n}\n\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating) { for (var i = $pos.depth - 1; i >= 0; i--) {\n var parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount) { return $pos.doc.resolve($pos.after(i + 1)) }\n if (parent.type.spec.isolating) { break }\n } }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block or, if there is a text selection, the\n// closest ancestor block of the selection that can be joined, with\n// the sibling above it.\nfunction joinUp(state, dispatch) {\n var sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from)) { return false }\n point = sel.from;\n } else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null) { return false }\n }\n if (dispatch) {\n var tr = state.tr.join(point);\n if (nodeSel) { tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize)); }\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block, or the closest ancestor of the selection\n// that can be joined, with the sibling after it.\nfunction joinDown(state, dispatch) {\n var sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to)) { return false }\n point = sel.to;\n } else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null) { return false }\n }\n if (dispatch)\n { dispatch(state.tr.join(point).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Lift the selected block, or the closest ancestor block of the\n// selection that can be lifted, out of its parent node.\nfunction lift(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the selection is in a node whose type has a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, replace the\n// selection with a newline character.\nfunction newlineInCode(state, dispatch) {\n var ref = state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) { return false }\n if (dispatch) { dispatch(state.tr.insertText(\"\\n\").scrollIntoView()); }\n return true\n}\n\nfunction defaultBlockAt(match) {\n for (var i = 0; i < match.edgeCount; i++) {\n var ref = match.edge(i);\n var type = ref.type;\n if (type.isTextblock && !type.hasRequiredAttrs()) { return type }\n }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// When the selection is in a node with a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, create a\n// default block after the code block, and move the cursor there.\nfunction exitCode(state, dispatch) {\n var ref = state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) { return false }\n var above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!above.canReplaceWith(after, after, type)) { return false }\n if (dispatch) {\n var pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If a block node is selected, create an empty paragraph before (if\n// it is its parent's first child) or after it.\nfunction createParagraphNear(state, dispatch) {\n var sel = state.selection;\n var $from = sel.$from;\n var $to = sel.$to;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent) { return false }\n var type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock) { return false }\n if (dispatch) {\n var side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n var tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the cursor is in an empty textblock that can be lifted, lift the\n// block.\nfunction liftEmptyBlock(state, dispatch) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || $cursor.parent.content.size) { return false }\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n var before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch) { dispatch(state.tr.split(before).scrollIntoView()); }\n return true\n }\n }\n var range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Split the parent block of the selection. If the selection is a text\n// selection, also delete its content.\nfunction splitBlock(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos)) { return false }\n if (dispatch) { dispatch(state.tr.split($from.pos).scrollIntoView()); }\n return true\n }\n\n if (!$from.parent.isBlock) { return false }\n\n if (dispatch) {\n var atEnd = $to.parentOffset == $to.parent.content.size;\n var tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection) { tr.deleteSelection(); }\n var deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n var types = atEnd && deflt ? [{type: deflt}] : null;\n var can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt && [{type: deflt}])) {\n types = [{type: deflt}];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n var first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);\n if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n { tr.setNodeMarkup(tr.mapping.map($from.before()), deflt); }\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Acts like [`splitBlock`](#commands.splitBlock), but without\n// resetting the set of active marks at the cursor.\nfunction splitBlockKeepMarks(state, dispatch) {\n return splitBlock(state, dispatch && (function (tr) {\n var marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks) { tr.ensureMarks(marks); }\n dispatch(tr);\n }))\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Move the selection to the node wrapping the current selection, if\n// any. (Will not select the document node.)\nfunction selectParentNode(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var to = ref.to;\n var pos;\n var same = $from.sharedDepth(to);\n if (same == 0) { return false }\n pos = $from.before(same);\n if (dispatch) { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos))); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Select the whole document.\nfunction selectAll(state, dispatch) {\n if (dispatch) { dispatch(state.tr.setSelection(new AllSelection(state.doc))); }\n return true\n}\n\nfunction joinMaybeClear(state, $pos, dispatch) {\n var before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type)) { return false }\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch) { dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView()); }\n return true\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n { return false }\n if (dispatch)\n { dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView()); }\n return true\n}\n\nfunction deleteBarrier(state, $cut, dispatch) {\n var before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating) { return false }\n if (joinMaybeClear(state, $cut, dispatch)) { return true }\n\n var canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n var end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (var i = conn.length - 1; i >= 0; i--)\n { wrap = Fragment.from(conn[i].create(null, wrap)); }\n wrap = Fragment.from(before.copy(wrap));\n var tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n var joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt)) { tr.join(joinAt); }\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n\n var selAfter = Selection.findFrom($cut, 1);\n var range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n }\n\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n var at = before, wrap$1 = [];\n for (;;) {\n wrap$1.push(at);\n if (at.isTextblock) { break }\n at = at.lastChild;\n }\n var afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild) { afterDepth++; }\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n var end$1 = Fragment.empty;\n for (var i$1 = wrap$1.length - 1; i$1 >= 0; i$1--) { end$1 = Fragment.from(wrap$1[i$1].copy(end$1)); }\n var tr$1 = state.tr.step(new ReplaceAroundStep($cut.pos - wrap$1.length, $cut.pos + after.nodeSize,\n $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth,\n new Slice(end$1, wrap$1.length, 0), 0, true));\n dispatch(tr$1.scrollIntoView());\n }\n return true\n }\n }\n\n return false\n}\n\n// Parameterized commands\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Wrap the selection in a node of the given type with the given\n// attributes.\nfunction wrapIn(nodeType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping) { return false }\n if (dispatch) { dispatch(state.tr.wrap(range, wrapping).scrollIntoView()); }\n return true\n }\n}\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command that tries to set the selected textblocks to the\n// given node type with the given attributes.\nfunction setBlockType(nodeType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var from = ref.from;\n var to = ref.to;\n var applicable = false;\n state.doc.nodesBetween(from, to, function (node, pos) {\n if (applicable) { return false }\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs)) { return }\n if (node.type == nodeType) {\n applicable = true;\n } else {\n var $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n if (!applicable) { return false }\n if (dispatch) { dispatch(state.tr.setBlockType(from, to, nodeType, attrs).scrollIntoView()); }\n return true\n }\n}\n\nfunction markApplies(doc, ranges, type) {\n var loop = function ( i ) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var can = $from.depth == 0 ? doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, function (node) {\n if (can) { return false }\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can) { return { v: true } }\n };\n\n for (var i = 0; i < ranges.length; i++) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\n// :: (MarkType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command function that toggles the given mark with the\n// given attributes. Will return `false` when the current selection\n// doesn't support that mark. This will remove the mark if any marks\n// of that type exist in the selection, or add it otherwise. If the\n// selection is empty, this applies to the [stored\n// marks](#state.EditorState.storedMarks) instead of a range of the\n// document.\nfunction toggleMark(markType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var empty = ref.empty;\n var $cursor = ref.$cursor;\n var ranges = ref.ranges;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) { return false }\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n { dispatch(state.tr.removeStoredMark(markType)); }\n else\n { dispatch(state.tr.addStoredMark(markType.create(attrs))); }\n } else {\n var has = false, tr = state.tr;\n for (var i = 0; !has && i < ranges.length; i++) {\n var ref$1 = ranges[i];\n var $from = ref$1.$from;\n var $to = ref$1.$to;\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (var i$1 = 0; i$1 < ranges.length; i$1++) {\n var ref$2 = ranges[i$1];\n var $from$1 = ref$2.$from;\n var $to$1 = ref$2.$to;\n if (has) {\n tr.removeMark($from$1.pos, $to$1.pos, markType);\n } else {\n var from = $from$1.pos, to = $to$1.pos, start = $from$1.nodeAfter, end = $to$1.nodeBefore;\n var spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n var spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) { from += spaceStart; to -= spaceEnd; }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true\n }\n}\n\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return function (tr) {\n if (!tr.isGeneric) { return dispatch(tr) }\n\n var ranges = [];\n for (var i = 0; i < tr.mapping.maps.length; i++) {\n var map = tr.mapping.maps[i];\n for (var j = 0; j < ranges.length; j++)\n { ranges[j] = map.map(ranges[j]); }\n map.forEach(function (_s, _e, from, to) { return ranges.push(from, to); });\n }\n\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n var joinable = [];\n for (var i$1 = 0; i$1 < ranges.length; i$1 += 2) {\n var from = ranges[i$1], to = ranges[i$1 + 1];\n var $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (var index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n var after = parent.maybeChild(index);\n if (!after) { break }\n if (index && joinable.indexOf(pos) == -1) {\n var before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n { joinable.push(pos); }\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort(function (a, b) { return a - b; });\n for (var i$2 = joinable.length - 1; i$2 >= 0; i$2--) {\n if (canJoin(tr.doc, joinable[i$2])) { tr.join(joinable[i$2]); }\n }\n dispatch(tr);\n }\n}\n\n// :: ((state: EditorState, ?(tr: Transaction)) → bool, union<(before: Node, after: Node) → bool, [string]>) → (state: EditorState, ?(tr: Transaction)) → bool\n// Wrap a command so that, when it produces a transform that causes\n// two joinable nodes to end up next to each other, those are joined.\n// Nodes are considered joinable when they are of the same type and\n// when the `isJoinable` predicate returns true for them or, if an\n// array of strings was passed, if their node type name is in that\n// array.\nfunction autoJoin(command, isJoinable) {\n if (Array.isArray(isJoinable)) {\n var types = isJoinable;\n isJoinable = function (node) { return types.indexOf(node.type.name) > -1; };\n }\n return function (state, dispatch, view) { return command(state, dispatch && wrapDispatchForJoin(dispatch, isJoinable), view); }\n}\n\n// :: (...[(EditorState, ?(tr: Transaction), ?EditorView) → bool]) → (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// Combine a number of command functions into a single function (which\n// calls them one by one until one returns true).\nfunction chainCommands() {\n var commands = [], len = arguments.length;\n while ( len-- ) commands[ len ] = arguments[ len ];\n\n return function(state, dispatch, view) {\n for (var i = 0; i < commands.length; i++)\n { if (commands[i](state, dispatch, view)) { return true } }\n return false\n }\n}\n\nvar backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nvar del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n\n// :: Object\n// A basic keymap containing bindings not specific to any schema.\n// Binds the following keys (when multiple commands are listed, they\n// are chained with [`chainCommands`](#commands.chainCommands)):\n//\n// * **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n// * **Mod-Enter** to `exitCode`\n// * **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n// * **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-a** to `selectAll`\nvar pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n\n// :: Object\n// A copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n// **Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n// **Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\n// Ctrl-Delete.\nvar macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"]\n};\nfor (var key in pcBaseKeymap) { macBaseKeymap[key] = pcBaseKeymap[key]; }\n\n// declare global: os, navigator\nvar mac = typeof navigator != \"undefined\" ? /Mac/.test(navigator.platform)\n : typeof os != \"undefined\" ? os.platform() == \"darwin\" : false;\n\n// :: Object\n// Depending on the detected platform, this will hold\n// [`pcBasekeymap`](#commands.pcBaseKeymap) or\n// [`macBaseKeymap`](#commands.macBaseKeymap).\nvar baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, setBlockType, splitBlock, splitBlockKeepMarks, toggleMark, wrapIn };\n","import { wrapIn } from 'prosemirror-commands';\nexport const blockquote = (state, dispatch) => {\n return wrapIn(state.schema.nodes.blockquote)(state, dispatch);\n};\nexport const liftBlockquote = (state, dispatch) => {\n const { $from, $to } = state.selection;\n const nodeType = state.schema.nodes.blockquote;\n const doc = state.doc;\n let target = -1;\n const range = $from.blockRange($to);\n if (range) {\n doc.nodesBetween(range.start, range.end, (node, pos, _parent, _index) => {\n if (node.type === nodeType) {\n target = pos;\n }\n });\n }\n const result = target !== -1;\n if (dispatch && result) {\n dispatch(state.tr.lift(range, doc.resolve(target).depth));\n }\n return result;\n};\n","import { sinkListItem, liftListItem } from 'prosemirror-schema-list';\nimport { indentRules, outdentRules } from './config/indent-rules';\nimport { blockNodes, addStyles, changeTextBlock, hasNode } from './blockNode';\nimport { findNthParentNodeOfType } from './utils';\nimport { liftBlockquote } from './blockquote';\n/**\n * Indenting block elements in the selection.\n *\n * @returns {boolean} - Returns true if any indentation is applied.\n */\nexport const indentBlocks = (actions, command, dir) => (state, dispatch) => {\n const blocks = blockNodes(state);\n const tr = state.tr;\n tr.setMeta('commandName', command);\n blocks.forEach(node => {\n if (node.type.isTextblock) {\n let newAttrs;\n const action = actions.find(a => a.node === node.type.name);\n if (action) {\n const style = dir === 'rtl' ? action.rtlStyle : action.style;\n const newStyle = {\n name: style,\n value: action.step > 0 ? `${action.step}${action.unit}` : ''\n };\n if (node.attrs.style) {\n const re = new RegExp(`${style}:\\\\s?(\\\\d+)${action.unit}`, 'i');\n const match = node.attrs.style.match(re);\n if (match) {\n let newMargin = parseFloat(match[1]) + action.step;\n newMargin = newMargin <= 0 ? '' : newMargin;\n newStyle.value = `${newMargin}${newMargin ? action.unit : ''}`;\n }\n }\n newAttrs = addStyles(node, [newStyle]);\n }\n if (newAttrs) {\n changeTextBlock(tr, node, node.type, newAttrs);\n }\n }\n });\n const result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n};\nexport const isIndented = (state, rules, dir) => {\n const blocks = blockNodes(state);\n let result = false;\n blocks.forEach(node => {\n if (!result && node.type.isTextblock && node.attrs.style) {\n const action = rules.find(a => a.node === node.type.name);\n if (action) {\n const style = dir === 'rtl' ? action.rtlStyle : action.style;\n const reIndent = new RegExp(`${style}:\\\\s?\\\\d+${action.unit}`, 'i');\n result = reIndent.test(node.attrs.style);\n }\n }\n });\n return result;\n};\nexport const canIndentAsListItem = (state, nodeType) => {\n return sinkListItem(nodeType)(state);\n};\nexport const canOutdentAsListItem = (state, rules) => {\n const listItem = state.schema.nodes[rules.listsTypes.listItem];\n const orderedList = state.schema.nodes[rules.listsTypes.orderedList];\n const bulletList = state.schema.nodes[rules.listsTypes.bulletList];\n const isNestedInOL = !!findNthParentNodeOfType(orderedList, 2)(state.selection);\n const isNestedInUL = !!findNthParentNodeOfType(bulletList, 2)(state.selection);\n return (isNestedInOL || isNestedInUL) && liftListItem(listItem)(state);\n};\nexport const canBeIndented = (state, rules) => {\n const nodes = state.schema.nodes;\n const listItem = nodes[indentRules.listsTypes.listItem];\n return ((isIndented(state, rules.nodes) || indentRules.nodes.some(rule => nodes[rule.node] && hasNode(state, nodes[rule.node]))) &&\n !hasNode(state, listItem));\n};\nexport const indent = (state, dispatch) => {\n const listItem = state.schema.nodes[indentRules.listsTypes.listItem];\n const isIndentableBlock = canBeIndented(state, indentRules);\n if (canIndentAsListItem(state, listItem)) {\n sinkListItem(listItem)(state, dispatch);\n }\n else if (isIndentableBlock) {\n indentBlocks(indentRules.nodes)(state, dispatch);\n }\n};\nexport const outdent = (state, dispatch) => {\n const nodes = state.schema.nodes;\n const listItem = nodes[outdentRules.listsTypes.listItem];\n const isIndentableBlock = canBeIndented(state, outdentRules);\n if (hasNode(state, nodes.blockquote)) {\n liftBlockquote(state, dispatch);\n }\n else if (canOutdentAsListItem(state, outdentRules)) {\n liftListItem(listItem)(state, dispatch);\n }\n else if (isIndentableBlock) {\n indentBlocks(outdentRules.nodes)(state, dispatch);\n }\n};\n","import { Fragment, Slice, NodeRange } from 'prosemirror-model';\nimport { TextSelection, NodeSelection } from 'prosemirror-state';\nimport { liftTarget, ReplaceAroundStep } from 'prosemirror-transform';\nimport { autoJoin } from 'prosemirror-commands';\nimport { wrapInList as pmWrapInList, splitListItem } from 'prosemirror-schema-list';\nimport { bulletList as bulletListSettings, orderedList as orderedListSettings } from './config/list-settings';\nconst rootListDepth = (pos, nodes) => {\n // Get the depth of the nearest ancestor list\n const { bulletList, orderedList, listItem } = nodes;\n let depth;\n for (let i = pos.depth - 1; i > 0; i--) {\n const node = pos.node(i);\n if (node.type === bulletList || node.type === orderedList) {\n depth = i;\n }\n if (node.type !== bulletList && node.type !== orderedList && node.type !== listItem) {\n break;\n }\n }\n return depth;\n};\nconst getListLiftTarget = (schema, resPos, listNodeNames) => {\n // This will return (depth - 1) for root list parent of a list.\n let target = resPos.depth;\n const bulletList = schema.nodes[listNodeNames.bulletList];\n const orderedList = schema.nodes[listNodeNames.orderedList];\n const listItem = schema.nodes[listNodeNames.listItem];\n for (let i = resPos.depth; i > 0; i--) {\n const node = resPos.node(i);\n if (node.type === bulletList || node.type === orderedList) {\n target = i;\n }\n if (node.type !== bulletList && node.type !== orderedList && node.type !== listItem) {\n break;\n }\n }\n return target - 1;\n};\nfunction liftSelectionList(state, tr, listNodeNames) {\n // The function will list paragraphs in selection out to level 1 below root list.\n const { from, to } = state.selection;\n const { paragraph, heading } = state.schema.nodes;\n const listCol = [];\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === paragraph || node.type === heading) {\n listCol.push({ node, pos });\n }\n });\n for (let i = listCol.length - 1; i >= 0; i--) {\n const block = listCol[i];\n const start = tr.doc.resolve(tr.mapping.map(block.pos));\n if (start.depth > 0) {\n let end;\n if (block.node.textContent && block.node.textContent.length > 0) {\n end = tr.doc.resolve(tr.mapping.map(block.pos + block.node.textContent.length));\n }\n else {\n end = tr.doc.resolve(tr.mapping.map(block.pos + 1));\n }\n const range = start.blockRange(end);\n if (range) {\n tr.lift(range, getListLiftTarget(state.schema, start, listNodeNames));\n }\n }\n }\n return tr;\n}\nfunction toggleListCommand(listNodeNames) {\n return function (state, dispatch, view) {\n if (!view) {\n return false;\n }\n state = view.state;\n const listNode = state.schema.nodes[listNodeNames.listType];\n const { $from, $to } = state.selection;\n const parent = $from.node(-2);\n const grandgrandParent = $from.node(-3);\n const isRangeOfSingleType = isRangeOfType(state.doc, $from, $to, listNode);\n if (((parent && parent.type === listNode) ||\n (grandgrandParent && grandgrandParent.type === listNode)) &&\n isRangeOfSingleType) {\n // Untoggles list\n return liftListItems(listNodeNames)(state, dispatch);\n }\n else {\n // Wraps selection in list and converts list type e.g. bullet_list -> ordered_list if needed\n if (!isRangeOfSingleType) {\n liftListItems(listNodeNames)(state, dispatch);\n state = view.state;\n }\n return wrapInList(listNode)(state, dispatch);\n }\n };\n}\nfunction liftListItem(state, selection, tr, nodeType) {\n if (!nodeType) {\n nodeType = state.schema.nodes.listItem;\n }\n let { $from, $to } = selection;\n let range = $from.blockRange($to, node => node.childCount && node.firstChild.type === nodeType);\n if (!range || range.depth < 2 || $from.node(range.depth - 1).type !== nodeType) {\n return tr;\n }\n let end = range.end;\n let endOfList = $to.end(range.depth);\n if (end < endOfList) {\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(nodeType.create(undefined, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve($from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n return tr.lift(range, liftTarget(range)).scrollIntoView();\n}\nfunction liftFollowingList(state, from, to, rootListDepthNum, tr, listItem) {\n // Function will lift list item following selection to level-1.\n if (!listItem) {\n listItem = state.schema.nodes.listItem;\n }\n let lifted = false;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!lifted && node.type === listItem && pos > from) {\n lifted = true;\n let listDepth = rootListDepthNum + 3;\n while (listDepth > rootListDepthNum + 2) {\n const start = tr.doc.resolve(tr.mapping.map(pos));\n listDepth = start.depth;\n const end = tr.doc.resolve(tr.mapping.map(pos + node.textContent.length));\n const sel = new TextSelection(start, end);\n tr = liftListItem(state, sel, tr, listItem);\n }\n }\n });\n return tr;\n}\nfunction isRangeOfType(doc, $from, $to, nodeType) {\n // Step through block-nodes between $from and $to and returns false if a node is\n // found that isn't of the specified type\n return getAncestorNodesBetween(doc, $from, $to).filter((node) => node.type !== nodeType).length === 0;\n}\nfunction getAncestorNodesBetween(doc, $from, $to) {\n // Returns all top-level ancestor-nodes between $from and $to\n const nodes = Array();\n const maxDepth = findAncestorPosition(doc, $from).depth;\n let current = doc.resolve($from.start(maxDepth));\n while (current.pos <= $to.start($to.depth)) {\n const depth = Math.min(current.depth, maxDepth);\n const node = current.node(depth);\n if (node) {\n nodes.push(node);\n }\n if (depth === 0) {\n break;\n }\n let next = doc.resolve(current.after(depth));\n if (next.start(depth) >= doc.nodeSize - 2) {\n break;\n }\n if (next.depth !== current.depth) {\n next = doc.resolve(next.pos + 2);\n }\n if (next.depth) {\n current = doc.resolve(next.start(next.depth));\n }\n else {\n current = doc.resolve(next.end(next.depth));\n }\n }\n return nodes;\n}\nfunction findAncestorPosition(doc, pos) {\n // Traverse the document until an \"ancestor\" is found. Any nestable block can be an ancestor.\n const nestableBlocks = ['blockquote', 'bulletList', 'orderedList'];\n if (pos.depth === 1) {\n return pos;\n }\n let node = pos.node(pos.depth);\n let newPos = pos;\n while (pos.depth >= 1) {\n pos = doc.resolve(pos.before(pos.depth));\n node = pos.node(pos.depth);\n if (node && nestableBlocks.indexOf(node.type.name) !== -1) {\n newPos = pos;\n }\n }\n return newPos;\n}\nfunction liftListItems(listNodeNames) {\n return function (state, dispatch) {\n const { tr } = state;\n const { $from, $to } = state.selection;\n tr.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n // Following condition will ensure that block types `paragraph`, `heading`, `codeBlock`, `blockquote`, `div` are lifted.\n // isTextblock is true for paragraph, heading, codeBlock.\n if (node.isTextblock || node.type.name === 'blockquote' || node.type.name === 'div') {\n const sel = new NodeSelection(tr.doc.resolve(tr.mapping.map(pos)));\n const range = sel.$from.blockRange(sel.$to);\n if (!range || sel.$from.parent.type !== state.schema.nodes[listNodeNames.listItem]) {\n return false;\n }\n const target = range && liftTarget(range);\n if (target === undefined || target === null) {\n return false;\n }\n tr.lift(range, target);\n }\n });\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n };\n}\nfunction wrapInList(nodeType) {\n return autoJoin(pmWrapInList(nodeType), (before, after) => before.type === after.type && before.type === nodeType);\n}\nexport const toggleList = (state, dispatch, view, listNodeNames, command) => {\n const { listType } = listNodeNames;\n const { selection } = state;\n const fromNode = selection.$from.node(selection.$from.depth - 2);\n const endNode = selection.$to.node(selection.$to.depth - 2);\n if (!fromNode || fromNode.type.name !== listType || (!endNode || endNode.type.name !== listType)) {\n return toggleListCommand(listNodeNames)(state, dispatch, view);\n }\n else {\n const nodes = view.state.schema.nodes;\n const listNodes = {\n bulletList: nodes[listNodeNames.bulletList],\n orderedList: nodes[listNodeNames.orderedList],\n listItem: nodes[listNodeNames.listItem]\n };\n const depth = rootListDepth(selection.$to, listNodes);\n let tr = liftFollowingList(state, selection.$to.pos, selection.$to.end(depth), depth, view.state.tr, listNodes.listItem);\n tr = liftSelectionList(state, tr, listNodeNames);\n tr.setMeta('commandName', command);\n dispatch(tr);\n return true;\n }\n};\nexport function toggleUnorderedList(state, dispatch, view) {\n return toggleList(state, dispatch, view, Object.assign({ listType: bulletListSettings.listType }, bulletListSettings.types));\n}\nexport function toggleOrderedList(state, dispatch, view) {\n return toggleList(state, dispatch, view, Object.assign({ listType: orderedListSettings.listType }, orderedListSettings.types));\n}\nexport const splitListItemKeepMarks = (itemType) => (state, dispatch) => {\n // see https://github.com/ProseMirror/prosemirror-commands/blob/master/src/commands.js#L321-L327\n return splitListItem(itemType)(state, tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks) {\n tr.ensureMarks(marks);\n }\n dispatch(tr);\n });\n};\n","const style = (name, value) => {\n return { name: name, value: value };\n};\nexport const alignLeftRules = [\n { node: 'paragraph', style: [style('text-align', 'left')] },\n { node: 'heading', style: [style('text-align', 'left')] }\n];\nexport const alignRightRules = [\n { node: 'paragraph', style: [style('text-align', 'right')] },\n { node: 'heading', style: [style('text-align', 'right')] }\n];\nexport const alignCenterRules = [\n { node: 'paragraph', style: [style('text-align', 'center')] },\n { node: 'heading', style: [style('text-align', 'center')] }\n];\nexport const alignJustifyRules = [\n { node: 'paragraph', style: [style('text-align', 'justify')] },\n { node: 'heading', style: [style('text-align', 'justify')] }\n];\nexport const alignRemoveRules = [\n { node: 'paragraph', style: [style('text-align', '')] },\n { node: 'heading', style: [style('text-align', '')] }\n];\n","export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 229: \"q\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\",\n 229: \"Q\"\n}\n\nvar chrome = typeof navigator != \"undefined\" && /Chrome\\/(\\d+)/.exec(navigator.userAgent)\nvar safari = typeof navigator != \"undefined\" && /Apple Computer/.test(navigator.vendor)\nvar gecko = typeof navigator != \"undefined\" && /Gecko\\/\\d+/.test(navigator.userAgent)\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\nvar brokenModifierNames = chrome && (mac || +chrome[1] < 57) || gecko && mac\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // Don't trust event.key in Chrome when there are modifiers until\n // they fix https://bugs.chromium.org/p/chromium/issues/detail?id=633838\n var ignoreKey = brokenModifierNames && (event.ctrlKey || event.altKey || event.metaKey) ||\n (safari || ie) && event.shiftKey && event.key && event.key.length == 1\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n","import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\n// declare global: navigator\n\nvar mac = typeof navigator != \"undefined\" ? /Mac/.test(navigator.platform) : false;\n\nfunction normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\") { result = \" \"; }\n var alt, ctrl, shift, meta;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { meta = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else if (/^mod$/i.test(mod)) { if (mac) { meta = true; } else { ctrl = true; } }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { result = \"Alt-\" + result; }\n if (ctrl) { result = \"Ctrl-\" + result; }\n if (meta) { result = \"Meta-\" + result; }\n if (shift) { result = \"Shift-\" + result; }\n return result\n}\n\nfunction normalize(map) {\n var copy = Object.create(null);\n for (var prop in map) { copy[normalizeKeyName(prop)] = map[prop]; }\n return copy\n}\n\nfunction modifiers(name, event, shift) {\n if (event.altKey) { name = \"Alt-\" + name; }\n if (event.ctrlKey) { name = \"Ctrl-\" + name; }\n if (event.metaKey) { name = \"Meta-\" + name; }\n if (shift !== false && event.shiftKey) { name = \"Shift-\" + name; }\n return name\n}\n\n// :: (Object) → Plugin\n// Create a keymap plugin for the given set of bindings.\n//\n// Bindings should map key names to [command](#commands)-style\n// functions, which will be called with `(EditorState, dispatch,\n// EditorView)` arguments, and should return true when they've handled\n// the key. Note that the view argument isn't part of the command\n// protocol, but can be used as an escape hatch if a binding needs to\n// directly interact with the UI.\n//\n// Key names may be strings like `\"Shift-Ctrl-Enter\"`—a key\n// identifier prefixed with zero or more modifiers. Key identifiers\n// are based on the strings that can appear in\n// [`KeyEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\n// Use lowercase letters to refer to letter keys (or uppercase letters\n// if you want shift to be held). You may use `\"Space\"` as an alias\n// for the `\" \"` name.\n//\n// Modifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n// `a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n// `Meta-`) are recognized. For characters that are created by holding\n// shift, the `Shift-` prefix is implied, and should not be added\n// explicitly.\n//\n// You can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\n// other platforms.\n//\n// You can add multiple keymap plugins to an editor. The order in\n// which they appear determines their precedence (the ones early in\n// the array get to dispatch first).\nfunction keymap(bindings) {\n return new Plugin({props: {handleKeyDown: keydownHandler(bindings)}})\n}\n\n// :: (Object) → (view: EditorView, event: dom.Event) → bool\n// Given a set of bindings (using the same format as\n// [`keymap`](#keymap.keymap), return a [keydown\n// handler](#view.EditorProps.handleKeyDown) that handles them.\nfunction keydownHandler(bindings) {\n var map = normalize(bindings);\n return function(view, event) {\n var name = keyName(event), isChar = name.length == 1 && name != \" \", baseName;\n var direct = map[modifiers(name, event, !isChar)];\n if (direct && direct(view.state, view.dispatch, view)) { return true }\n if (isChar && (event.shiftKey || event.altKey || event.metaKey || name.charCodeAt(0) > 127) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060\n var fromCode = map[modifiers(baseName, event, true)];\n if (fromCode && fromCode(view.state, view.dispatch, view)) { return true }\n } else if (isChar && event.shiftKey) {\n // Otherwise, if shift is active, also try the binding with the\n // Shift- prefix enabled. See #997\n var withShift = map[modifiers(name, event, true)];\n if (withShift && withShift(view.state, view.dispatch, view)) { return true }\n }\n return false\n }\n}\n\nexport { keydownHandler, keymap };\n","import { TextSelection, NodeSelection, Selection, AllSelection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, DOMParser, Slice } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nvar result = {};\n\nif (typeof navigator != \"undefined\" && typeof document != \"undefined\") {\n var ie_edge = /Edge\\/(\\d+)/.exec(navigator.userAgent);\n var ie_upto10 = /MSIE \\d/.test(navigator.userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);\n\n result.mac = /Mac/.test(navigator.platform);\n var ie = result.ie = !!(ie_upto10 || ie_11up || ie_edge);\n result.ie_version = ie_upto10 ? document.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : null;\n result.gecko = !ie && /gecko\\/(\\d+)/i.test(navigator.userAgent);\n result.gecko_version = result.gecko && +(/Firefox\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n var chrome = !ie && /Chrome\\/(\\d+)/.exec(navigator.userAgent);\n result.chrome = !!chrome;\n result.chrome_version = chrome && +chrome[1];\n // Is true for both iOS and iPadOS for convenience\n result.safari = !ie && /Apple Computer/.test(navigator.vendor);\n result.ios = result.safari && (/Mobile\\/\\w+/.test(navigator.userAgent) || navigator.maxTouchPoints > 2);\n result.android = /Android \\d/.test(navigator.userAgent);\n result.webkit = \"webkitFontSmoothing\" in document.documentElement.style;\n result.webkit_version = result.webkit && +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n}\n\nvar domIndex = function(node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node) { return index }\n }\n};\n\nvar parentNode = function(node) {\n var parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent\n};\n\nvar reusedRange = null;\n\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nvar textRange = function(node, from, to) {\n var range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range\n};\n\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nvar isEquivalentPosition = function(node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1))\n};\n\nvar atomElements = /^(img|br|input|textarea|hr)$/i;\n\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff) { return true }\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n var parent = node.parentNode;\n if (parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) || node.contentEditable == \"false\")\n { return false }\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n } else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\") { return false }\n off = dir < 0 ? nodeSize(node) : 0;\n } else {\n return false\n }\n }\n}\n\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isOnEdge(node, offset, parent) {\n for (var atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent) { return true }\n var index = domIndex(node);\n node = node.parentNode;\n if (!node) { return false }\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\n\nfunction hasBlockDesc(dom) {\n var desc;\n for (var cur = dom; cur; cur = cur.parentNode) { if (desc = cur.pmViewDesc) { break } }\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom)\n}\n\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nvar selectionCollapsed = function(domSel) {\n var collapsed = domSel.isCollapsed;\n if (collapsed && result.chrome && domSel.rangeCount && !domSel.getRangeAt(0).collapsed)\n { collapsed = false; }\n return collapsed\n};\n\nfunction keyEvent(keyCode, key) {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event\n}\n\nfunction windowRect(doc) {\n return {left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight}\n}\n\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side]\n}\n\nfunction clientRect(node) {\n var rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n var scaleX = (rect.width / node.offsetWidth) || 1;\n var scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return {left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY}\n}\n\nfunction scrollRectIntoView(view, rect, startDOM) {\n var scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n var doc = view.dom.ownerDocument;\n for (var parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent) { break }\n if (parent.nodeType != 1) { continue }\n var atTop = parent == doc.body || parent.nodeType != 1;\n var bounding = atTop ? windowRect(doc) : clientRect(parent);\n var moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n { moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\")); }\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n { moveY = rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\"); }\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n { moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\")); }\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n { moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\"); }\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n } else {\n var startX = parent.scrollLeft, startY = parent.scrollTop;\n if (moveY) { parent.scrollTop += moveY; }\n if (moveX) { parent.scrollLeft += moveX; }\n var dX = parent.scrollLeft - startX, dY = parent.scrollTop - startY;\n rect = {left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY};\n }\n }\n if (atTop) { break }\n }\n}\n\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n var rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n var refDOM, refTop;\n for (var x = (rect.left + rect.right) / 2, y = startY + 1;\n y < Math.min(innerHeight, rect.bottom); y += 5) {\n var dom = view.root.elementFromPoint(x, y);\n if (dom == view.dom || !view.dom.contains(dom)) { continue }\n var localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break\n }\n }\n return {refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom)}\n}\n\nfunction scrollStack(dom) {\n var stack = [], doc = dom.ownerDocument;\n for (; dom; dom = parentNode(dom)) {\n stack.push({dom: dom, top: dom.scrollTop, left: dom.scrollLeft});\n if (dom == doc) { break }\n }\n return stack\n}\n\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos(ref) {\n var refDOM = ref.refDOM;\n var refTop = ref.refTop;\n var stack = ref.stack;\n\n var newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\n\nfunction restoreScrollStack(stack, dTop) {\n for (var i = 0; i < stack.length; i++) {\n var ref = stack[i];\n var dom = ref.dom;\n var top = ref.top;\n var left = ref.left;\n if (dom.scrollTop != top + dTop) { dom.scrollTop = top + dTop; }\n if (dom.scrollLeft != left) { dom.scrollLeft = left; }\n }\n}\n\nvar preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive) { return dom.setActive() } // in IE\n if (preventScrollSupported) { return dom.focus(preventScrollSupported) }\n\n var stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = {preventScroll: true};\n return true\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\n\nfunction findOffsetInNode(node, coords) {\n var closest, dxClosest = 2e8, coordsClosest, offset = 0;\n var rowBot = coords.top, rowTop = coords.top;\n for (var child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n var rects = (void 0);\n if (child.nodeType == 1) { rects = child.getClientRects(); }\n else if (child.nodeType == 3) { rects = textRange(child).getClientRects(); }\n else { continue }\n\n for (var i = 0; i < rects.length; i++) {\n var rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n var dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {left: rect.right < coords.left ? rect.right : rect.left, top: coords.top} : coords;\n if (child.nodeType == 1 && dx)\n { offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0); }\n continue\n }\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n { offset = childIndex + 1; }\n }\n }\n if (closest && closest.nodeType == 3) { return findOffsetInText(closest, coordsClosest) }\n if (!closest || (dxClosest && closest.nodeType == 1)) { return {node: node, offset: offset} }\n return findOffsetInNode(closest, coordsClosest)\n}\n\nfunction findOffsetInText(node, coords) {\n var len = node.nodeValue.length;\n var range = document.createRange();\n for (var i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n var rect = singleRect(range, 1);\n if (rect.top == rect.bottom) { continue }\n if (inRect(coords, rect))\n { return {node: node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0)} }\n }\n return {node: node, offset: 0}\n}\n\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1&&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1\n}\n\nfunction targetKludge(dom, coords) {\n var parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n { return parent }\n return dom\n}\n\nfunction posFromElement(view, elt, coords) {\n var ref = findOffsetInNode(elt, coords);\n var node = ref.node;\n var offset = ref.offset;\n var bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n var rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias)\n}\n\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n var outside = -1;\n for (var cur = node;;) {\n if (cur == view.dom) { break }\n var desc = view.docView.nearestDesc(cur, true);\n if (!desc) { return null }\n if (desc.node.isBlock && desc.parent) {\n var rect = desc.dom.getBoundingClientRect();\n if (rect.left > coords.left || rect.top > coords.top) { outside = desc.posBefore; }\n else if (rect.right < coords.left || rect.bottom < coords.top) { outside = desc.posAfter; }\n else { break }\n }\n cur = desc.dom.parentNode;\n }\n return outside > -1 ? outside : view.docView.posFromDOM(node, offset)\n}\n\nfunction elementFromPoint(element, coords, box) {\n var len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (var startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n var child = element.childNodes[i];\n if (child.nodeType == 1) {\n var rects = child.getClientRects();\n for (var j = 0; j < rects.length; j++) {\n var rect = rects[j];\n if (inRect(coords, rect)) { return elementFromPoint(child, coords, rect) }\n }\n }\n if ((i = (i + 1) % len) == startI) { break }\n }\n }\n return element\n}\n\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n var assign, assign$1;\n\n var doc = view.dom.ownerDocument, node, offset;\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n var pos$1 = doc.caretPositionFromPoint(coords.left, coords.top);\n if (pos$1) { ((assign = pos$1, node = assign.offsetNode, offset = assign.offset)); }\n } catch (_) {}\n }\n if (!node && doc.caretRangeFromPoint) {\n var range = doc.caretRangeFromPoint(coords.left, coords.top);\n if (range) { ((assign$1 = range, node = assign$1.startContainer, offset = assign$1.startOffset)); }\n }\n\n var elt = (view.root.elementFromPoint ? view.root : doc).elementFromPoint(coords.left, coords.top + 1), pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n var box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box)) { return null }\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt) { return null }\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (result.safari) {\n for (var p = elt; node && p; p = parentNode(p))\n { if (p.draggable) { node = offset = null; } }\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (result.gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n var next = node.childNodes[offset], box$1;\n if (next.nodeName == \"IMG\" && (box$1 = next.getBoundingClientRect()).right <= coords.left &&\n box$1.bottom > coords.top)\n { offset++; }\n }\n }\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n { pos = view.state.doc.content.size; }\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n { pos = posFromCaret(view, node, offset, coords); }\n }\n if (pos == null) { pos = posFromElement(view, elt, coords); }\n\n var desc = view.docView.nearestDesc(elt, true);\n return {pos: pos, inside: desc ? desc.posAtStart - desc.border : -1}\n}\n\nfunction singleRect(object, bias) {\n var rects = object.getClientRects();\n return !rects.length ? object.getBoundingClientRect() : rects[bias < 0 ? 0 : rects.length - 1]\n}\n\nvar BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n\n// : (EditorView, number, number) → {left: number, top: number, right: number, bottom: number}\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n var ref = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n var node = ref.node;\n var offset = ref.offset;\n\n var supportEmptyRange = result.webkit || result.gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n var rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (result.gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n var rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n var rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n { return flattenV(rectAfter, rectAfter.left < rectBefore.left) }\n }\n }\n return rect\n } else {\n var from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) { to++; takeSide = -1; }\n else if (side >= 0 && offset == node.nodeValue.length) { from--; takeSide = 1; }\n else if (side < 0) { from--; }\n else { to ++; }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0)\n }\n }\n\n // Return a horizontal line in block context\n if (!view.state.doc.resolve(pos).parent.inlineContent) {\n if (offset && (side < 0 || offset == nodeSize(node))) {\n var before = node.childNodes[offset - 1];\n if (before.nodeType == 1) { return flattenH(before.getBoundingClientRect(), false) }\n }\n if (offset < nodeSize(node)) {\n var after = node.childNodes[offset];\n if (after.nodeType == 1) { return flattenH(after.getBoundingClientRect(), true) }\n }\n return flattenH(node.getBoundingClientRect(), side >= 0)\n }\n\n // Inline, not in text node (this is not Bidi-safe)\n if (offset && (side < 0 || offset == nodeSize(node))) {\n var before$1 = node.childNodes[offset - 1];\n var target = before$1.nodeType == 3 ? textRange(before$1, nodeSize(before$1) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before$1.nodeType == 1 && (before$1.nodeName != \"BR\" || !before$1.nextSibling) ? before$1 : null;\n if (target) { return flattenV(singleRect(target, 1), false) }\n }\n if (offset < nodeSize(node)) {\n var after$1 = node.childNodes[offset];\n while (after$1.pmViewDesc && after$1.pmViewDesc.ignoreForCoords) { after$1 = after$1.nextSibling; }\n var target$1 = !after$1 ? null : after$1.nodeType == 3 ? textRange(after$1, 0, (supportEmptyRange ? 0 : 1))\n : after$1.nodeType == 1 ? after$1 : null;\n if (target$1) { return flattenV(singleRect(target$1, -1), true) }\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0)\n}\n\nfunction flattenV(rect, left) {\n if (rect.width == 0) { return rect }\n var x = left ? rect.left : rect.right;\n return {top: rect.top, bottom: rect.bottom, left: x, right: x}\n}\n\nfunction flattenH(rect, top) {\n if (rect.height == 0) { return rect }\n var y = top ? rect.top : rect.bottom;\n return {top: y, bottom: y, left: rect.left, right: rect.right}\n}\n\nfunction withFlushedState(view, state, f) {\n var viewState = view.state, active = view.root.activeElement;\n if (viewState != state) { view.updateState(state); }\n if (active != view.dom) { view.focus(); }\n try {\n return f()\n } finally {\n if (viewState != state) { view.updateState(viewState); }\n if (active != view.dom && active) { active.focus(); }\n }\n}\n\n// : (EditorView, number, number)\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n var sel = state.selection;\n var $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, function () {\n var ref = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n var dom = ref.node;\n for (;;) {\n var nearest = view.docView.nearestDesc(dom, true);\n if (!nearest) { break }\n if (nearest.node.isBlock) { dom = nearest.dom; break }\n dom = nearest.dom.parentNode;\n }\n var coords = coordsAtPos(view, $pos.pos, 1);\n for (var child = dom.firstChild; child; child = child.nextSibling) {\n var boxes = (void 0);\n if (child.nodeType == 1) { boxes = child.getClientRects(); }\n else if (child.nodeType == 3) { boxes = textRange(child, 0, child.nodeValue.length).getClientRects(); }\n else { continue }\n for (var i = 0; i < boxes.length; i++) {\n var box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n { return false }\n }\n }\n return true\n })\n}\n\nvar maybeRTL = /[\\u0590-\\u08ac]/;\n\nfunction endOfTextblockHorizontal(view, state, dir) {\n var ref = state.selection;\n var $head = ref.$head;\n if (!$head.parent.isTextblock) { return false }\n var offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n var sel = view.root.getSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n { return dir == \"left\" || dir == \"backward\" ? atStart : atEnd }\n\n return withFlushedState(view, state, function () {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n var oldRange = sel.getRangeAt(0), oldNode = sel.focusNode, oldOff = sel.focusOffset;\n var oldBidiLevel = sel.caretBidiLevel; // Only for Firefox\n sel.modify(\"move\", dir, \"character\");\n var parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n var result = !parentDOM.contains(sel.focusNode.nodeType == 1 ? sel.focusNode : sel.focusNode.parentNode) ||\n (oldNode == sel.focusNode && oldOff == sel.focusOffset);\n // Restore the previous selection\n sel.removeAllRanges();\n sel.addRange(oldRange);\n if (oldBidiLevel != null) { sel.caretBidiLevel = oldBidiLevel; }\n return result\n })\n}\n\nvar cachedState = null, cachedDir = null, cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir) { return cachedResult }\n cachedState = state; cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir)\n}\n\n// NodeView:: interface\n//\n// By default, document nodes are rendered using the result of the\n// [`toDOM`](#model.NodeSpec.toDOM) method of their spec, and managed\n// entirely by the editor. For some use cases, such as embedded\n// node-specific editing interfaces, you want more control over\n// the behavior of a node's in-editor representation, and need to\n// [define](#view.EditorProps.nodeViews) a custom node view.\n//\n// Mark views only support `dom` and `contentDOM`, and don't support\n// any of the node view methods.\n//\n// Objects returned as node views must conform to this interface.\n//\n// dom:: ?dom.Node\n// The outer DOM node that represents the document node. When not\n// given, the default strategy is used to create a DOM node.\n//\n// contentDOM:: ?dom.Node\n// The DOM node that should hold the node's content. Only meaningful\n// if the node view also defines a `dom` property and if its node\n// type is not a leaf node type. When this is present, ProseMirror\n// will take care of rendering the node's children into it. When it\n// is not present, the node view itself is responsible for rendering\n// (or deciding not to render) its child nodes.\n//\n// update:: ?(node: Node, decorations: [Decoration], innerDecorations: DecorationSource) → bool\n// When given, this will be called when the view is updating itself.\n// It will be given a node (possibly of a different type), an array\n// of active decorations around the node (which are automatically\n// drawn, and the node view may ignore if it isn't interested in\n// them), and a [decoration source](#view.DecorationSource) that\n// represents any decorations that apply to the content of the node\n// (which again may be ignored). It should return true if it was\n// able to update to that node, and false otherwise. If the node\n// view has a `contentDOM` property (or no `dom` property), updating\n// its child nodes will be handled by ProseMirror.\n//\n// selectNode:: ?()\n// Can be used to override the way the node's selected status (as a\n// node selection) is displayed.\n//\n// deselectNode:: ?()\n// When defining a `selectNode` method, you should also provide a\n// `deselectNode` method to remove the effect again.\n//\n// setSelection:: ?(anchor: number, head: number, root: dom.Document)\n// This will be called to handle setting the selection inside the\n// node. The `anchor` and `head` positions are relative to the start\n// of the node. By default, a DOM selection will be created between\n// the DOM positions corresponding to those positions, but if you\n// override it you can do something else.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to prevent the editor view from trying to handle some\n// or all DOM events that bubble up from the node view. Events for\n// which this returns true are not handled by the editor.\n//\n// ignoreMutation:: ?(dom.MutationRecord) → bool\n// Called when a DOM\n// [mutation](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)\n// or a selection change happens within the view. When the change is\n// a selection change, the record will have a `type` property of\n// `\"selection\"` (which doesn't occur for native mutation records).\n// Return false if the editor should re-read the selection or\n// re-parse the range around the mutation, true if it can safely be\n// ignored.\n//\n// destroy:: ?()\n// Called when the node view is removed from the editor or the whole\n// editor is destroyed. (Not available for marks.)\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\n\nvar NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nvar ViewDesc = function ViewDesc(parent, children, dom, contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n};\n\nvar prototypeAccessors = { size: { configurable: true },border: { configurable: true },posBefore: { configurable: true },posAtStart: { configurable: true },posAfter: { configurable: true },posAtEnd: { configurable: true },contentLost: { configurable: true },domAtom: { configurable: true },ignoreForCoords: { configurable: true } };\n\n// Used to check whether a given description corresponds to a\n// widget/mark/node.\nViewDesc.prototype.matchesWidget = function matchesWidget () { return false };\nViewDesc.prototype.matchesMark = function matchesMark () { return false };\nViewDesc.prototype.matchesNode = function matchesNode () { return false };\nViewDesc.prototype.matchesHack = function matchesHack (_nodeName) { return false };\n\n// : () → ?ParseRule\n// When parsing in-editor content (in domchange.js), we allow\n// descriptions to determine the parse rules that should be used to\n// parse them.\nViewDesc.prototype.parseRule = function parseRule () { return null };\n\n// : (dom.Event) → bool\n// Used by the editor's event handler to ignore events that come\n// from certain descs.\nViewDesc.prototype.stopEvent = function stopEvent () { return false };\n\n// The size of the content represented by this desc.\nprototypeAccessors.size.get = function () {\n var size = 0;\n for (var i = 0; i < this.children.length; i++) { size += this.children[i].size; }\n return size\n};\n\n// For block nodes, this represents the space taken up by their\n// start/end tokens.\nprototypeAccessors.border.get = function () { return 0 };\n\nViewDesc.prototype.destroy = function destroy () {\n this.parent = null;\n if (this.dom.pmViewDesc == this) { this.dom.pmViewDesc = null; }\n for (var i = 0; i < this.children.length; i++)\n { this.children[i].destroy(); }\n};\n\nViewDesc.prototype.posBeforeChild = function posBeforeChild (child) {\n for (var i = 0, pos = this.posAtStart; i < this.children.length; i++) {\n var cur = this.children[i];\n if (cur == child) { return pos }\n pos += cur.size;\n }\n};\n\nprototypeAccessors.posBefore.get = function () {\n return this.parent.posBeforeChild(this)\n};\n\nprototypeAccessors.posAtStart.get = function () {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0\n};\n\nprototypeAccessors.posAfter.get = function () {\n return this.posBefore + this.size\n};\n\nprototypeAccessors.posAtEnd.get = function () {\n return this.posAtStart + this.size - 2 * this.border\n};\n\n// : (dom.Node, number, ?number) → number\nViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n var domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this)) { domBefore = domBefore.previousSibling; }\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart\n } else {\n var domAfter, desc$1;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc$1 = domAfter.pmViewDesc) && desc$1.parent == this)) { domAfter = domAfter.nextSibling; }\n return domAfter ? this.posBeforeChild(desc$1) : this.posAtEnd\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n var atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n } else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n } else if (this.dom.firstChild) {\n if (offset == 0) { for (var search = dom;; search = search.parentNode) {\n if (search == this.dom) { atEnd = false; break }\n if (search.parentNode.firstChild != search) { break }\n } }\n if (atEnd == null && offset == dom.childNodes.length) { for (var search$1 = dom;; search$1 = search$1.parentNode) {\n if (search$1 == this.dom) { atEnd = true; break }\n if (search$1.parentNode.lastChild != search$1) { break }\n } }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart\n};\n\n// Scan up the dom finding the first desc that is a descendant of\n// this one.\nViewDesc.prototype.nearestDesc = function nearestDesc (dom, onlyNodes) {\n for (var first = true, cur = dom; cur; cur = cur.parentNode) {\n var desc = this.getDesc(cur);\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && desc.nodeDOM &&\n !(desc.nodeDOM.nodeType == 1 ? desc.nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : desc.nodeDOM == dom))\n { first = false; }\n else\n { return desc }\n }\n }\n};\n\nViewDesc.prototype.getDesc = function getDesc (dom) {\n var desc = dom.pmViewDesc;\n for (var cur = desc; cur; cur = cur.parent) { if (cur == this) { return desc } }\n};\n\nViewDesc.prototype.posFromDOM = function posFromDOM (dom, offset, bias) {\n for (var scan = dom; scan; scan = scan.parentNode) {\n var desc = this.getDesc(scan);\n if (desc) { return desc.localPosFromDOM(dom, offset, bias) }\n }\n return -1\n};\n\n// : (number) → ?NodeViewDesc\n// Find the desc for the node after the given pos, if any. (When a\n// parent node overrode rendering, there might not be one.)\nViewDesc.prototype.descAt = function descAt (pos) {\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) { child = child.children[0]; }\n return child\n }\n if (pos < end) { return child.descAt(pos - offset - child.border) }\n offset = end;\n }\n};\n\n// : (number, number) → {node: dom.Node, offset: number}\nViewDesc.prototype.domFromPos = function domFromPos (pos, side) {\n if (!this.contentDOM) { return {node: this.dom, offset: 0} }\n // First find the position in the child array\n var i = 0, offset = 0;\n for (var curPos = 0; i < this.children.length; i++) {\n var child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) { offset = pos - curPos; break }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset) { return this.children[i].domFromPos(offset - this.children[i].border, side) }\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (var prev = (void 0); i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.widget.type.side >= 0; i--) {}\n // Scan towards the first useable node\n if (side <= 0) {\n var prev$1, enter = true;\n for (;; i--, enter = false) {\n prev$1 = i ? this.children[i - 1] : null;\n if (!prev$1 || prev$1.dom.parentNode == this.contentDOM) { break }\n }\n if (prev$1 && side && enter && !prev$1.border && !prev$1.domAtom) { return prev$1.domFromPos(prev$1.size, side) }\n return {node: this.contentDOM, offset: prev$1 ? domIndex(prev$1.dom) + 1 : 0}\n } else {\n var next, enter$1 = true;\n for (;; i++, enter$1 = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM) { break }\n }\n if (next && enter$1 && !next.border && !next.domAtom) { return next.domFromPos(0, side) }\n return {node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length}\n }\n};\n\n// Used to find a DOM range in a single parent for a given changed\n// range.\nViewDesc.prototype.parseRange = function parseRange (from, to, base) {\n if ( base === void 0 ) base = 0;\n\n if (this.children.length == 0)\n { return {node: this.contentDOM, from: from, to: to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length} }\n\n var fromOffset = -1, toOffset = -1;\n for (var offset = base, i = 0;; i++) {\n var child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n var childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n { return child.parseRange(from, to, childBase) }\n\n from = offset;\n for (var j = i; j > 0; j--) {\n var prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break\n }\n from -= prev.size;\n }\n if (fromOffset == -1) { fromOffset = 0; }\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (var j$1 = i + 1; j$1 < this.children.length; j$1++) {\n var next = this.children[j$1];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break\n }\n to += next.size;\n }\n if (toOffset == -1) { toOffset = this.contentDOM.childNodes.length; }\n break\n }\n offset = end;\n }\n return {node: this.contentDOM, from: from, to: to, fromOffset: fromOffset, toOffset: toOffset}\n};\n\nViewDesc.prototype.emptyChildAt = function emptyChildAt (side) {\n if (this.border || !this.contentDOM || !this.children.length) { return false }\n var child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side)\n};\n\n// : (number) → dom.Node\nViewDesc.prototype.domAfterPos = function domAfterPos (pos) {\n var ref = this.domFromPos(pos, 0);\n var node = ref.node;\n var offset = ref.offset;\n if (node.nodeType != 1 || offset == node.childNodes.length)\n { throw new RangeError(\"No node after pos \" + pos) }\n return node.childNodes[offset]\n};\n\n// : (number, number, dom.Document)\n// View descs are responsible for setting any selection that falls\n// entirely inside of them, so that custom implementations can do\n// custom things with the selection. Note that this falls apart when\n// a selection starts in such a node and ends in another, in which\n// case we just use whatever domFromPos produces as a best effort.\nViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n // If the selection falls entirely in a child, give it to that child\n var from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n { return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force) }\n offset = end;\n }\n\n var anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n var headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n var domSel = root.getSelection();\n\n var brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((result.gecko || result.safari) && anchor == head) {\n var node = anchorDOM.node;\n var offset$1 = anchorDOM.offset;\n if (node.nodeType == 3) {\n brKludge = offset$1 && node.nodeValue[offset$1 - 1] == \"\\n\";\n // Issue #1128\n if (brKludge && offset$1 == node.nodeValue.length) {\n for (var scan = node, after = (void 0); scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n { anchorDOM = headDOM = {node: after.parentNode, offset: domIndex(after) + 1}; }\n break\n }\n var desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock) { break }\n }\n }\n } else {\n var prev = node.childNodes[offset$1 - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (result.gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n var after$1 = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after$1 && after$1.contentEditable == \"false\") { force = true; }\n }\n\n if (!(force || brKludge && result.safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n { return }\n\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n var domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head) { domSel.extend(headDOM.node, headDOM.offset); }\n domSelExtended = true;\n } catch (err) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n if (!(err instanceof DOMException)) { throw err }\n // declare global: DOMException\n }\n }\n if (!domSelExtended) {\n if (anchor > head) { var tmp = anchorDOM; anchorDOM = headDOM; headDOM = tmp; }\n var range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n};\n\n// : (dom.MutationRecord) → bool\nViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return !this.contentDOM && mutation.type != \"selection\"\n};\n\nprototypeAccessors.contentLost.get = function () {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM)\n};\n\n// Remove a subtree of the element tree that has been touched\n// by a DOM change, so that the next update will redraw it.\nViewDesc.prototype.markDirty = function markDirty (from, to) {\n for (var offset = 0, i = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n var startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM)) { child.dirty = NODE_DIRTY; }\n else { child.markDirty(from - startInside, to - startInside); }\n return\n } else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n};\n\nViewDesc.prototype.markParentsDirty = function markParentsDirty () {\n var level = 1;\n for (var node = this.parent; node; node = node.parent, level++) {\n var dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty) { node.dirty = dirty; }\n }\n};\n\nprototypeAccessors.domAtom.get = function () { return false };\n\nprototypeAccessors.ignoreForCoords.get = function () { return false };\n\nObject.defineProperties( ViewDesc.prototype, prototypeAccessors );\n\n// Reused array to avoid allocating fresh arrays for things that will\n// stay empty anyway.\nvar nothing = [];\n\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nvar WidgetViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function WidgetViewDesc(parent, widget, view, pos) {\n var self, dom = widget.type.toDOM;\n if (typeof dom == \"function\") { dom = dom(view, function () {\n if (!self) { return pos }\n if (self.parent) { return self.parent.posBeforeChild(self) }\n }); }\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n var wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = false;\n dom.classList.add(\"ProseMirror-widget\");\n }\n ViewDesc.call(this, parent, nothing, dom, null);\n this.widget = widget;\n self = this;\n }\n\n if ( ViewDesc ) WidgetViewDesc.__proto__ = ViewDesc;\n WidgetViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n WidgetViewDesc.prototype.constructor = WidgetViewDesc;\n\n var prototypeAccessors$1 = { domAtom: { configurable: true } };\n\n WidgetViewDesc.prototype.matchesWidget = function matchesWidget (widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type)\n };\n\n WidgetViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n\n WidgetViewDesc.prototype.stopEvent = function stopEvent (event) {\n var stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false\n };\n\n WidgetViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection\n };\n\n prototypeAccessors$1.domAtom.get = function () { return true };\n\n Object.defineProperties( WidgetViewDesc.prototype, prototypeAccessors$1 );\n\n return WidgetViewDesc;\n}(ViewDesc));\n\nvar CompositionViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function CompositionViewDesc(parent, dom, textDOM, text) {\n ViewDesc.call(this, parent, nothing, dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n\n if ( ViewDesc ) CompositionViewDesc.__proto__ = ViewDesc;\n CompositionViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n CompositionViewDesc.prototype.constructor = CompositionViewDesc;\n\n var prototypeAccessors$2 = { size: { configurable: true } };\n\n prototypeAccessors$2.size.get = function () { return this.text.length };\n\n CompositionViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset) {\n if (dom != this.textDOM) { return this.posAtStart + (offset ? this.size : 0) }\n return this.posAtStart + offset\n };\n\n CompositionViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.textDOM, offset: pos}\n };\n\n CompositionViewDesc.prototype.ignoreMutation = function ignoreMutation (mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue\n };\n\n Object.defineProperties( CompositionViewDesc.prototype, prototypeAccessors$2 );\n\n return CompositionViewDesc;\n}(ViewDesc));\n\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nvar MarkViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function MarkViewDesc(parent, mark, dom, contentDOM) {\n ViewDesc.call(this, parent, [], dom, contentDOM);\n this.mark = mark;\n }\n\n if ( ViewDesc ) MarkViewDesc.__proto__ = ViewDesc;\n MarkViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n MarkViewDesc.prototype.constructor = MarkViewDesc;\n\n MarkViewDesc.create = function create (parent, mark, inline, view) {\n var custom = view.nodeViews[mark.type.name];\n var spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n { spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline)); }\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom)\n };\n\n MarkViewDesc.prototype.parseRule = function parseRule () { return {mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM} };\n\n MarkViewDesc.prototype.matchesMark = function matchesMark (mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark) };\n\n MarkViewDesc.prototype.markDirty = function markDirty (from, to) {\n ViewDesc.prototype.markDirty.call(this, from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n var parent = this.parent;\n while (!parent.node) { parent = parent.parent; }\n if (parent.dirty < this.dirty) { parent.dirty = this.dirty; }\n this.dirty = NOT_DIRTY;\n }\n };\n\n MarkViewDesc.prototype.slice = function slice (from, to, view) {\n var copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n var nodes = this.children, size = this.size;\n if (to < size) { nodes = replaceNodes(nodes, to, size, view); }\n if (from > 0) { nodes = replaceNodes(nodes, 0, from, view); }\n for (var i = 0; i < nodes.length; i++) { nodes[i].parent = copy; }\n copy.children = nodes;\n return copy\n };\n\n return MarkViewDesc;\n}(ViewDesc));\n\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nvar NodeViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n ViewDesc.call(this, parent, node.isLeaf ? nothing : [], dom, contentDOM);\n this.nodeDOM = nodeDOM;\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n if (contentDOM) { this.updateChildren(view, pos); }\n }\n\n if ( ViewDesc ) NodeViewDesc.__proto__ = ViewDesc;\n NodeViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n NodeViewDesc.prototype.constructor = NodeViewDesc;\n\n var prototypeAccessors$3 = { size: { configurable: true },border: { configurable: true },domAtom: { configurable: true } };\n\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n NodeViewDesc.create = function create (parent, node, outerDeco, innerDeco, view, pos) {\n var assign;\n\n var custom = view.nodeViews[node.type.name], descObj;\n var spec = custom && custom(node, view, function () {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj) { return pos }\n if (descObj.parent) { return descObj.parent.posBeforeChild(descObj) }\n }, outerDeco, innerDeco);\n\n var dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom) { dom = document.createTextNode(node.text); }\n else if (dom.nodeType != 3) { throw new RangeError(\"Text must be rendered as a DOM text node\") }\n } else if (!dom) {\n((assign = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)), dom = assign.dom, contentDOM = assign.contentDOM));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
        \n if (!dom.hasAttribute(\"contenteditable\")) { dom.contentEditable = false; }\n if (node.type.spec.draggable) { dom.draggable = true; }\n }\n\n var nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n\n if (spec)\n { return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM,\n spec, view, pos + 1) }\n else if (node.isText)\n { return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) }\n else\n { return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos + 1) }\n };\n\n NodeViewDesc.prototype.parseRule = function parseRule () {\n var this$1 = this;\n\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView) { return null }\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n var rule = {node: this.node.type.name, attrs: this.node.attrs};\n if (this.node.type.spec.code) { rule.preserveWhitespace = \"full\"; }\n if (this.contentDOM && !this.contentLost) { rule.contentElement = this.contentDOM; }\n else { rule.getContent = function () { return this$1.contentDOM ? Fragment.empty : this$1.node.content; }; }\n return rule\n };\n\n NodeViewDesc.prototype.matchesNode = function matchesNode (node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco)\n };\n\n prototypeAccessors$3.size.get = function () { return this.node.nodeSize };\n\n prototypeAccessors$3.border.get = function () { return this.node.isLeaf ? 0 : 1 };\n\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n NodeViewDesc.prototype.updateChildren = function updateChildren (view, pos) {\n var this$1 = this;\n\n var inline = this.node.inlineContent, off = pos;\n var composition = view.composing && this.localCompositionInfo(view, pos);\n var localComposition = composition && composition.pos > -1 ? composition : null;\n var compositionInChild = composition && composition.pos < 0;\n var updater = new ViewTreeUpdater(this, localComposition && localComposition.node);\n iterDeco(this.node, this.innerDeco, function (widget, i, insideNode) {\n if (widget.spec.marks)\n { updater.syncToMarks(widget.spec.marks, inline, view); }\n else if (widget.type.side >= 0 && !insideNode)\n { updater.syncToMarks(i == this$1.node.childCount ? Mark.none : this$1.node.child(i).marks, inline, view); }\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, function (child, outerDeco, innerDeco, i) {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n var compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ; else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ; else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i)) ; else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks(nothing, inline, view);\n if (this.node.isTextblock) { updater.addTextblockHacks(); }\n updater.destroyRest();\n\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition) { this.protectLocalComposition(view, localComposition); }\n renderDescs(this.contentDOM, this.children, view);\n if (result.ios) { iosHacks(this.dom); }\n }\n };\n\n NodeViewDesc.prototype.localCompositionInfo = function localCompositionInfo (view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n var ref = view.state.selection;\n var from = ref.from;\n var to = ref.to;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size) { return }\n var sel = view.root.getSelection();\n var textNode = nearbyTextNode(sel.focusNode, sel.focusOffset);\n if (!textNode || !this.dom.contains(textNode.parentNode)) { return }\n\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n var text = textNode.nodeValue;\n var textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : {node: textNode, pos: textPos, text: text}\n } else {\n return {node: textNode, pos: -1}\n }\n };\n\n NodeViewDesc.prototype.protectLocalComposition = function protectLocalComposition (view, ref) {\n var node = ref.node;\n var pos = ref.pos;\n var text = ref.text;\n\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node)) { return }\n\n // Create a composition view for the orphaned nodes\n var topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM) { break }\n while (topNode.previousSibling) { topNode.parentNode.removeChild(topNode.previousSibling); }\n while (topNode.nextSibling) { topNode.parentNode.removeChild(topNode.nextSibling); }\n if (topNode.pmViewDesc) { topNode.pmViewDesc = null; }\n }\n var desc = new CompositionViewDesc(this, topNode, node, text);\n view.compositionNodes.push(desc);\n\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n };\n\n // : (Node, [Decoration], DecorationSource, EditorView) → bool\n // If this desc be updated to match the given node decoration,\n // do so and return true.\n NodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node)) { return false }\n this.updateInner(node, outerDeco, innerDeco, view);\n return true\n };\n\n NodeViewDesc.prototype.updateInner = function updateInner (node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM) { this.updateChildren(view, this.posAtStart); }\n this.dirty = NOT_DIRTY;\n };\n\n NodeViewDesc.prototype.updateOuterDeco = function updateOuterDeco (outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco)) { return }\n var needsWrap = this.nodeDOM.nodeType != 1;\n var oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM,\n computeOuterDeco(this.outerDeco, this.node, needsWrap),\n computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = null;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n };\n\n // Mark this node as being the selected node.\n NodeViewDesc.prototype.selectNode = function selectNode () {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.draggable = true; }\n };\n\n // Remove selected node marking from this node.\n NodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.removeAttribute(\"draggable\"); }\n };\n\n prototypeAccessors$3.domAtom.get = function () { return this.node.isAtom };\n\n Object.defineProperties( NodeViewDesc.prototype, prototypeAccessors$3 );\n\n return NodeViewDesc;\n}(ViewDesc));\n\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n return new NodeViewDesc(null, doc, outerDeco, innerDeco, dom, dom, dom, view, 0)\n}\n\nvar TextViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view);\n }\n\n if ( NodeViewDesc ) TextViewDesc.__proto__ = NodeViewDesc;\n TextViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n TextViewDesc.prototype.constructor = TextViewDesc;\n\n var prototypeAccessors$4 = { domAtom: { configurable: true } };\n\n TextViewDesc.prototype.parseRule = function parseRule () {\n var skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco) { skip = skip.parentNode; }\n return {skip: skip || true}\n };\n\n TextViewDesc.prototype.update = function update (node, outerDeco, _, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node)) { return false }\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM) { view.trackWrites = null; }\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true\n };\n\n TextViewDesc.prototype.inParent = function inParent () {\n var parentDOM = this.parent.contentDOM;\n for (var n = this.nodeDOM; n; n = n.parentNode) { if (n == parentDOM) { return true } }\n return false\n };\n\n TextViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.nodeDOM, offset: pos}\n };\n\n TextViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n if (dom == this.nodeDOM) { return this.posAtStart + Math.min(offset, this.node.text.length) }\n return NodeViewDesc.prototype.localPosFromDOM.call(this, dom, offset, bias)\n };\n\n TextViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\"\n };\n\n TextViewDesc.prototype.slice = function slice (from, to, view) {\n var node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view)\n };\n\n TextViewDesc.prototype.markDirty = function markDirty (from, to) {\n NodeViewDesc.prototype.markDirty.call(this, from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n { this.dirty = NODE_DIRTY; }\n };\n\n prototypeAccessors$4.domAtom.get = function () { return false };\n\n Object.defineProperties( TextViewDesc.prototype, prototypeAccessors$4 );\n\n return TextViewDesc;\n}(NodeViewDesc));\n\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nvar TrailingHackViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function TrailingHackViewDesc () {\n ViewDesc.apply(this, arguments);\n }\n\n if ( ViewDesc ) TrailingHackViewDesc.__proto__ = ViewDesc;\n TrailingHackViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n TrailingHackViewDesc.prototype.constructor = TrailingHackViewDesc;\n\n var prototypeAccessors$5 = { domAtom: { configurable: true },ignoreForCoords: { configurable: true } };\n\n TrailingHackViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n TrailingHackViewDesc.prototype.matchesHack = function matchesHack (nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName };\n prototypeAccessors$5.domAtom.get = function () { return true };\n prototypeAccessors$5.ignoreForCoords.get = function () { return this.dom.nodeName == \"IMG\" };\n\n Object.defineProperties( TrailingHackViewDesc.prototype, prototypeAccessors$5 );\n\n return TrailingHackViewDesc;\n}(ViewDesc));\n\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nvar CustomNodeViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n\n if ( NodeViewDesc ) CustomNodeViewDesc.__proto__ = NodeViewDesc;\n CustomNodeViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n CustomNodeViewDesc.prototype.constructor = CustomNodeViewDesc;\n\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n CustomNodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY) { return false }\n if (this.spec.update) {\n var result = this.spec.update(node, outerDeco, innerDeco);\n if (result) { this.updateInner(node, outerDeco, innerDeco, view); }\n return result\n } else if (!this.contentDOM && !node.isLeaf) {\n return false\n } else {\n return NodeViewDesc.prototype.update.call(this, node, outerDeco, innerDeco, view)\n }\n };\n\n CustomNodeViewDesc.prototype.selectNode = function selectNode () {\n this.spec.selectNode ? this.spec.selectNode() : NodeViewDesc.prototype.selectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.spec.deselectNode ? this.spec.deselectNode() : NodeViewDesc.prototype.deselectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : NodeViewDesc.prototype.setSelection.call(this, anchor, head, root, force);\n };\n\n CustomNodeViewDesc.prototype.destroy = function destroy () {\n if (this.spec.destroy) { this.spec.destroy(); }\n NodeViewDesc.prototype.destroy.call(this);\n };\n\n CustomNodeViewDesc.prototype.stopEvent = function stopEvent (event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false\n };\n\n CustomNodeViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : NodeViewDesc.prototype.ignoreMutation.call(this, mutation)\n };\n\n return CustomNodeViewDesc;\n}(NodeViewDesc));\n\n// : (dom.Node, [ViewDesc])\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n var dom = parentDOM.firstChild, written = false;\n for (var i = 0; i < descs.length; i++) {\n var desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) { dom = rm(dom); written = true; }\n dom = dom.nextSibling;\n } else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n var pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) { dom = rm(dom); written = true; }\n if (written && view.trackWrites == parentDOM) { view.trackWrites = null; }\n}\n\nfunction OuterDecoLevel(nodeName) {\n if (nodeName) { this.nodeName = nodeName; }\n}\nOuterDecoLevel.prototype = Object.create(null);\n\nvar noDeco = [new OuterDecoLevel];\n\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0) { return noDeco }\n\n var top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n\n for (var i = 0; i < outerDeco.length; i++) {\n var attrs = outerDeco[i].type.attrs;\n if (!attrs) { continue }\n if (attrs.nodeName)\n { result.push(top = new OuterDecoLevel(attrs.nodeName)); }\n\n for (var name in attrs) {\n var val = attrs[name];\n if (val == null) { continue }\n if (needsWrap && result.length == 1)\n { result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\")); }\n if (name == \"class\") { top.class = (top.class ? top.class + \" \" : \"\") + val; }\n else if (name == \"style\") { top.style = (top.style ? top.style + \";\" : \"\") + val; }\n else if (name != \"nodeName\") { top[name] = val; }\n }\n }\n\n return result\n}\n\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco) { return nodeDOM }\n\n var curDOM = nodeDOM;\n for (var i = 0; i < curComputed.length; i++) {\n var deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n var parent = (void 0);\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.tagName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n } else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM\n}\n\nfunction patchAttributes(dom, prev, cur) {\n for (var name in prev)\n { if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n { dom.removeAttribute(name); } }\n for (var name$1 in cur)\n { if (name$1 != \"class\" && name$1 != \"style\" && name$1 != \"nodeName\" && cur[name$1] != prev[name$1])\n { dom.setAttribute(name$1, cur[name$1]); } }\n if (prev.class != cur.class) {\n var prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : nothing;\n var curList = cur.class ? cur.class.split(\" \").filter(Boolean) : nothing;\n for (var i = 0; i < prevList.length; i++) { if (curList.indexOf(prevList[i]) == -1)\n { dom.classList.remove(prevList[i]); } }\n for (var i$1 = 0; i$1 < curList.length; i$1++) { if (prevList.indexOf(curList[i$1]) == -1)\n { dom.classList.add(curList[i$1]); } }\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n var prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n { dom.style.removeProperty(m[1]); }\n }\n if (cur.style)\n { dom.style.cssText += cur.style; }\n }\n}\n\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1))\n}\n\n// : ([Decoration], [Decoration]) → bool\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!a[i].type.eq(b[i].type)) { return false } }\n return true\n}\n\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n var next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next\n}\n\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nvar ViewTreeUpdater = function ViewTreeUpdater(top, lockedNode) {\n this.top = top;\n this.lock = lockedNode;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n\n this.preMatch = preMatch(top.node.content, top.children);\n};\n\n// Destroy and remove the children between the given indices in\n// `this.top`.\nViewTreeUpdater.prototype.destroyBetween = function destroyBetween (start, end) {\n if (start == end) { return }\n for (var i = start; i < end; i++) { this.top.children[i].destroy(); }\n this.top.children.splice(start, end - start);\n this.changed = true;\n};\n\n// Destroy all remaining children in `this.top`.\nViewTreeUpdater.prototype.destroyRest = function destroyRest () {\n this.destroyBetween(this.index, this.top.children.length);\n};\n\n// : ([Mark], EditorView)\n// Sync the current stack of mark descs with the given array of\n// marks, reusing existing mark descs when possible.\nViewTreeUpdater.prototype.syncToMarks = function syncToMarks (marks, inline, view) {\n var keep = 0, depth = this.stack.length >> 1;\n var maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1]).matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n { keep++; }\n\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n var found = -1;\n for (var i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n if (this.top.children[i].matchesMark(marks[depth])) { found = i; break }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n } else {\n var markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n};\n\n// : (Node, [Decoration], DecorationSource) → bool\n// Try to find a node desc matching the given data. Skip over it and\n// return true when successful.\nViewTreeUpdater.prototype.findNodeMatch = function findNodeMatch (node, outerDeco, innerDeco, index) {\n var children = this.top.children, found = -1;\n if (index >= this.preMatch.index) {\n for (var i = this.index; i < children.length; i++) { if (children[i].matchesNode(node, outerDeco, innerDeco)) {\n found = i;\n break\n } }\n } else {\n for (var i$1 = this.index, e = Math.min(children.length, i$1 + 1); i$1 < e; i$1++) {\n var child = children[i$1];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i$1;\n break\n }\n }\n }\n if (found < 0) { return false }\n this.destroyBetween(this.index, found);\n this.index++;\n return true\n};\n\nViewTreeUpdater.prototype.updateNodeAt = function updateNodeAt (node, outerDeco, innerDeco, index, view) {\n var child = this.top.children[index];\n if (!child.update(node, outerDeco, innerDeco, view)) { return false }\n this.destroyBetween(this.index, index);\n this.index = index + 1;\n return true\n};\n\nViewTreeUpdater.prototype.findIndexWithChild = function findIndexWithChild (domNode) {\n for (;;) {\n var parent = domNode.parentNode;\n if (!parent) { return -1 }\n if (parent == this.top.contentDOM) {\n var desc = domNode.pmViewDesc;\n if (desc) { for (var i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc) { return i }\n } }\n return -1\n }\n domNode = parent;\n }\n};\n\n// : (Node, [Decoration], DecorationSource, EditorView, Fragment, number) → bool\n// Try to update the next node, if any, to the given data. Checks\n// pre-matches to avoid overwriting nodes that could still be used.\nViewTreeUpdater.prototype.updateNextNode = function updateNextNode (node, outerDeco, innerDeco, view, index) {\n for (var i = this.index; i < this.top.children.length; i++) {\n var next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n var preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index) { return false }\n var nextDOM = next.dom;\n\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n var locked = this.lock && (nextDOM == this.lock || nextDOM.nodeType == 1 && nextDOM.contains(this.lock.parentNode)) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM) { this.changed = true; }\n this.index++;\n return true\n }\n break\n }\n }\n return false\n};\n\n// : (Node, [Decoration], DecorationSource, EditorView)\n// Insert the node as a newly created node desc.\nViewTreeUpdater.prototype.addNode = function addNode (node, outerDeco, innerDeco, view, pos) {\n this.top.children.splice(this.index++, 0, NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos));\n this.changed = true;\n};\n\nViewTreeUpdater.prototype.placeWidget = function placeWidget (widget, view, pos) {\n var next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) && (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n } else {\n var desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n};\n\n// Make sure a textblock looks and behaves correctly in\n// contentEditable.\nViewTreeUpdater.prototype.addTextblockHacks = function addTextblockHacks () {\n var lastChild = this.top.children[this.index - 1];\n while (lastChild instanceof MarkViewDesc) { lastChild = lastChild.children[lastChild.children.length - 1]; }\n\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text)) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((result.safari || result.chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n { this.addHackNode(\"IMG\"); }\n this.addHackNode(\"BR\");\n }\n};\n\nViewTreeUpdater.prototype.addHackNode = function addHackNode (nodeName) {\n if (this.index < this.top.children.length && this.top.children[this.index].matchesHack(nodeName)) {\n this.index++;\n } else {\n var dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") { dom.className = \"ProseMirror-separator\"; }\n if (nodeName == \"BR\") { dom.className = \"ProseMirror-trailingBreak\"; }\n this.top.children.splice(this.index++, 0, new TrailingHackViewDesc(this.top, nothing, dom, null));\n this.changed = true;\n }\n};\n\n// : (Fragment, [ViewDesc]) → {index: number, matched: Map}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, descs) {\n var fI = frag.childCount, dI = descs.length, matched = new Map;\n for (; fI > 0 && dI > 0; dI--) {\n var desc = descs[dI - 1], node = desc.node;\n if (!node) { continue }\n if (node != frag.child(fI - 1)) { break }\n --fI;\n matched.set(desc, fI);\n }\n return {index: fI, matched: matched}\n}\n\nfunction compareSide(a, b) { return a.type.side - b.type.side }\n\n// : (ViewDesc, DecorationSource, (Decoration, number), (Node, [Decoration], DecorationSource, number))\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n var locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (var i = 0; i < parent.childCount; i++) {\n var child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return\n }\n\n var decoIndex = 0, active = [], restNode = null;\n for (var parentIndex = 0;;) {\n if (decoIndex < locals.length && locals[decoIndex].to == offset) {\n var widget = locals[decoIndex++], widgets = (void 0);\n while (decoIndex < locals.length && locals[decoIndex].to == offset)\n { (widgets || (widgets = [widget])).push(locals[decoIndex++]); }\n if (widgets) {\n widgets.sort(compareSide);\n for (var i$1 = 0; i$1 < widgets.length; i$1++) { onWidget(widgets[i$1], parentIndex, !!restNode); }\n } else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n\n var child$1 = (void 0), index = (void 0);\n if (restNode) {\n index = -1;\n child$1 = restNode;\n restNode = null;\n } else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child$1 = parent.child(parentIndex++);\n } else {\n break\n }\n\n for (var i$2 = 0; i$2 < active.length; i$2++) { if (active[i$2].to <= offset) { active.splice(i$2--, 1); } }\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n { active.push(locals[decoIndex++]); }\n\n var end = offset + child$1.nodeSize;\n if (child$1.isText) {\n var cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt) { cutAt = locals[decoIndex].from; }\n for (var i$3 = 0; i$3 < active.length; i$3++) { if (active[i$3].to < cutAt) { cutAt = active[i$3].to; } }\n if (cutAt < end) {\n restNode = child$1.cut(cutAt - offset);\n child$1 = child$1.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n\n var outerDeco = !active.length ? nothing\n : child$1.isInline && !child$1.isLeaf ? active.filter(function (d) { return !d.inline; })\n : active.slice();\n onNode(child$1, outerDeco, deco.forChild(offset, child$1), index);\n offset = end;\n }\n}\n\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n var oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3) { return node }\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n { return node.childNodes[offset] }\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n } else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n } else {\n return null\n }\n }\n}\n\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (var i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n var child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText) { continue }\n var str = child.text;\n while (i < frag.childCount) {\n var next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText) { break }\n str += next.text;\n }\n if (pos >= from) {\n var found = str.lastIndexOf(text, to - childStart);\n if (found >= 0 && found + text.length + childStart >= from)\n { return childStart + found }\n }\n }\n return -1\n}\n\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n var result = [];\n for (var i = 0, off = 0; i < nodes.length; i++) {\n var child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n } else {\n if (start < from) { result.push(child.slice(0, from - start, view)); }\n if (replacement) {\n result.push(replacement);\n replacement = null;\n }\n if (end > to) { result.push(child.slice(to - start, child.size, view)); }\n }\n }\n return result\n}\n\nfunction selectionFromDOM(view, origin) {\n var domSel = view.root.getSelection(), doc = view.state.doc;\n if (!domSel.focusNode) { return null }\n var nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n var head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);\n if (head < 0) { return null }\n var $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node) { nearestDesc = nearestDesc.parent; }\n if (nearestDesc && nearestDesc.node.isAtom && NodeSelection.isSelectable(nearestDesc.node) && nearestDesc.parent\n && !(nearestDesc.node.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n var pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n } else {\n var anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);\n if (anchor < 0) { return null }\n $anchor = doc.resolve(anchor);\n }\n\n if (!selection) {\n var bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection\n}\n\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom)\n}\n\nfunction selectionToDOM(view, force) {\n var sel = view.state.selection;\n syncNodeSelection(view, sel);\n\n if (!editorOwnsSelection(view)) { return }\n\n if (!force && view.mouseDown && view.mouseDown.allowDefault) {\n view.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return\n }\n\n view.domObserver.disconnectSelection();\n\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n } else {\n var anchor = sel.anchor;\n var head = sel.head;\n var resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n { resetEditableFrom = temporarilyEditableNear(view, sel.from); }\n if (!sel.empty && !sel.$from.parent.inlineContent)\n { resetEditableTo = temporarilyEditableNear(view, sel.to); }\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom) { resetEditable(resetEditableFrom); }\n if (resetEditableTo) { resetEditable(resetEditableTo); }\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n } else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document) { removeClassOnSelectionChange(view); }\n }\n }\n\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\n\nvar brokenSelectBetweenUneditable = result.safari || result.chrome && result.chrome_version < 63;\n\nfunction temporarilyEditableNear(view, pos) {\n var ref = view.docView.domFromPos(pos, 0);\n var node = ref.node;\n var offset = ref.offset;\n var after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n var before = offset ? node.childNodes[offset - 1] : null;\n if (result.safari && after && after.contentEditable == \"false\") { return setEditable(after) }\n if ((!after || after.contentEditable == \"false\") && (!before || before.contentEditable == \"false\")) {\n if (after) { return setEditable(after) }\n else if (before) { return setEditable(before) }\n }\n}\n\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (result.safari && element.draggable) { element.draggable = false; element.wasDraggable = true; }\n return element\n}\n\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) { element.draggable = true; element.wasDraggable = null; }\n}\n\nfunction removeClassOnSelectionChange(view) {\n var doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n var domSel = view.root.getSelection();\n var node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.hideSelectionGuard = function () {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n setTimeout(function () {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n { view.dom.classList.remove(\"ProseMirror-hideselection\"); }\n }, 20);\n }\n });\n}\n\nfunction selectCursorWrapper(view) {\n var domSel = view.root.getSelection(), range = document.createRange();\n var node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img) { range.setEnd(node.parentNode, domIndex(node) + 1); }\n else { range.setEnd(node, 0); }\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && result.ie && result.ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\n\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n var desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc) { desc.selectNode(); }\n view.lastSelectedViewDesc = desc;\n }\n } else {\n clearNodeSelection(view);\n }\n}\n\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n { view.lastSelectedViewDesc.deselectNode(); }\n view.lastSelectedViewDesc = null;\n }\n}\n\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", function (f) { return f(view, $anchor, $head); })\n || TextSelection.between($anchor, $head, bias)\n}\n\nfunction hasFocusAndSelection(view) {\n if (view.editable && view.root.activeElement != view.dom) { return false }\n return hasSelection(view)\n}\n\nfunction hasSelection(view) {\n var sel = view.root.getSelection();\n if (!sel.anchorNode) { return false }\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode))\n } catch(_) {\n return false\n }\n}\n\nfunction anchorInRightPlace(view) {\n var anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n var domSel = view.root.getSelection();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset)\n}\n\nfunction moveSelectionBlock(state, dir) {\n var ref = state.selection;\n var $anchor = ref.$anchor;\n var $head = ref.$head;\n var $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n var $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir)\n}\n\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true\n}\n\nfunction selectHorizontally(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (!sel.empty || mods.indexOf(\"s\") > -1) {\n return false\n } else if (view.endOfTextblock(dir > 0 ? \"right\" : \"left\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection)) { return apply(view, next) }\n return false\n } else if (!(result.mac && mods.indexOf(\"m\") > -1)) {\n var $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText) { return false }\n var nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM)) { return false }\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head))\n } else if (result.webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)))\n } else {\n return false\n }\n }\n } else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from))\n } else {\n var next$1 = moveSelectionBlock(view.state, dir);\n if (next$1) { return apply(view, next$1) }\n return false\n }\n}\n\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isIgnorable(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dom.nextSibling || dom.nodeName != \"BR\")\n}\n\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesLeft(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (result.gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset])) { force = true; }\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break\n } else {\n var before = node.childNodes[offset - 1];\n if (isIgnorable(before)) {\n moveNode = node;\n moveOffset = --offset;\n } else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n } else { break }\n }\n } else if (isBlockNode(node)) {\n break\n } else {\n var prev = node.previousSibling;\n while (prev && isIgnorable(prev)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = 0;\n } else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force) { setSelFocus(view, sel, node, offset); }\n else if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesRight(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var len = nodeLen(node);\n var moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1) { break }\n var after = node.childNodes[offset];\n if (isIgnorable(after)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else { break }\n } else if (isBlockNode(node)) {\n break\n } else {\n var next = node.nextSibling;\n while (next && isIgnorable(next)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = len = 0;\n } else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\nfunction isBlockNode(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock\n}\n\nfunction setSelFocus(view, sel, node, offset) {\n if (selectionCollapsed(sel)) {\n var range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n var state = view.state;\n // If no state update ends up happening, reset the selection.\n setTimeout(function () {\n if (view.state == state) { selectionToDOM(view); }\n }, 50);\n}\n\n// : (EditorState, number)\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1) { return false }\n if (result.mac && mods.indexOf(\"m\") > -1) { return false }\n var $from = sel.$from;\n var $to = sel.$to;\n\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n { return apply(view, next) }\n }\n if (!$from.parent.inlineContent) {\n var side = dir < 0 ? $from : $to;\n var beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false\n }\n return false\n}\n\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection)) { return true }\n var ref = view.state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n var empty = ref.empty;\n if (!$head.sameParent($anchor)) { return true }\n if (!empty) { return false }\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) { return true }\n var nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n var tr = view.state.tr;\n if (dir < 0) { tr.delete($head.pos - nextNode.nodeSize, $head.pos); }\n else { tr.delete($head.pos, $head.pos + nextNode.nodeSize); }\n view.dispatch(tr);\n return true\n }\n return false\n}\n\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!result.safari || view.state.selection.$head.parentOffset > 0) { return }\n var ref = view.root.getSelection();\n var focusNode = ref.focusNode;\n var focusOffset = ref.focusOffset;\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n var child = focusNode.firstChild;\n switchEditable(view, child, true);\n setTimeout(function () { return switchEditable(view, child, false); }, 20);\n }\n}\n\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\n\nfunction getMods(event) {\n var result = \"\";\n if (event.ctrlKey) { result += \"c\"; }\n if (event.metaKey) { result += \"m\"; }\n if (event.altKey) { result += \"a\"; }\n if (event.shiftKey) { result += \"s\"; }\n return result\n}\n\nfunction captureKeyDown(view, event) {\n var code = event.keyCode, mods = getMods(event);\n if (code == 8 || (result.mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodesLeft(view)\n } else if (code == 46 || (result.mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodesRight(view)\n } else if (code == 13 || code == 27) { // Enter, Esc\n return true\n } else if (code == 37) { // Left arrow\n return selectHorizontally(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 39) { // Right arrow\n return selectHorizontally(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (code == 38) { // Up arrow\n return selectVertically(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 40) { // Down arrow\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (mods == (result.mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true\n }\n return false\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\n\nfunction parseBetween(view, from_, to_) {\n var ref = view.docView.parseRange(from_, to_);\n var parent = ref.node;\n var fromOffset = ref.fromOffset;\n var toOffset = ref.toOffset;\n var from = ref.from;\n var to = ref.to;\n\n var domSel = view.root.getSelection(), find = null, anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{node: anchor, offset: domSel.anchorOffset}];\n if (!selectionCollapsed(domSel))\n { find.push({node: domSel.focusNode, offset: domSel.focusOffset}); }\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (result.chrome && view.lastKeyCode === 8) {\n for (var off = toOffset; off > fromOffset; off--) {\n var node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) { toOffset = off; break }\n if (!desc || desc.size) { break }\n }\n }\n var startDoc = view.state.doc;\n var parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n var $from = startDoc.resolve(from);\n\n var sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.spec.code ? \"full\" : true,\n editableContent: true,\n findPositions: find,\n ruleFromNode: ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n var anchor$1 = find[0].pos, head = find[1] && find[1].pos;\n if (head == null) { head = anchor$1; }\n sel = {anchor: anchor$1 + from, head: head + from};\n }\n return {doc: doc, sel: sel, from: from, to: to}\n}\n\nfunction ruleFromNode(dom) {\n var desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule()\n } else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (result.safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n var skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return {skip: skip}\n } else if (dom.parentNode.lastChild == dom || result.safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return {ignore: true}\n }\n } else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return {ignore: true}\n }\n}\n\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n if (from < 0) {\n var origin = view.lastSelectionTime > Date.now() - 50 ? view.lastSelectionOrigin : null;\n var newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n var tr$1 = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\") { tr$1.setMeta(\"pointer\", true); }\n else if (origin == \"key\") { tr$1.scrollIntoView(); }\n view.dispatch(tr$1);\n }\n return\n }\n\n var $before = view.state.doc.resolve(from);\n var shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n\n var sel = view.state.selection;\n var parse = parseBetween(view, from, to);\n // Chrome sometimes leaves the cursor before the inserted text when\n // composing after a cursor wrapper. This moves it forward.\n if (result.chrome && view.cursorWrapper && parse.sel && parse.sel.anchor == view.cursorWrapper.deco.from) {\n var text = view.cursorWrapper.deco.type.toDOM.nextSibling;\n var size = text && text.nodeValue ? text.nodeValue.length : 1;\n parse.sel = {anchor: parse.sel.anchor + size, head: parse.sel.anchor + size};\n }\n\n var doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n var preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.lastKeyCode === 8 && Date.now() - 100 < view.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n } else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.lastKeyCode = null;\n\n var change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = {start: sel.from, endA: sel.to, endB: sel.to};\n } else if ((result.ios && view.lastIOSEnter > Date.now() - 225 || result.android) &&\n addedNodes.some(function (n) { return n.nodeName == \"DIV\" || n.nodeName == \"P\"; }) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })) {\n view.lastIOSEnter = 0;\n return\n } else {\n if (parse.sel) {\n var sel$1 = resolveSelection(view, view.state.doc, parse.sel);\n if (sel$1 && !sel$1.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel$1)); }\n }\n return\n }\n }\n view.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2) {\n change.start = view.state.selection.from;\n } else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (result.ie && result.ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n\n var $from = parse.doc.resolveNoCache(change.start - parse.from);\n var $to = parse.doc.resolveNoCache(change.endB - parse.from);\n var inlineChange = $from.sameParent($to) && $from.parent.inlineContent;\n var nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((result.ios && view.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(function (n) { return n.nodeName == \"DIV\" || n.nodeName == \"P\"; }))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })) {\n view.lastIOSEnter = 0;\n return\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) {\n if (result.android && result.chrome) { view.domObserver.suppressSelectionUpdates(); } // #820\n return\n }\n\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (result.chrome && result.android && change.toB == change.from)\n { view.lastAndroidDelete = Date.now(); }\n\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (result.android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(function () {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n\n var chFrom = change.start, chTo = change.endA;\n\n var tr, storedMarks, markChange, $from1;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (result.ie && result.ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(function () { return selectionToDOM(view); }, 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n } else if ( // Adding or removing a mark\n change.endA == change.endB && ($from1 = doc.resolve(change.start)) &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset),\n $from1.parent.content.cut($from1.parentOffset, change.endA - $from1.start())))\n ) {\n tr = view.state.tr;\n if (markChange.type == \"add\") { tr.addMark(chFrom, chTo, markChange.mark); }\n else { tr.removeMark(chFrom, chTo, markChange.mark); }\n } else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n var text$1 = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", function (f) { return f(view, chFrom, chTo, text$1); })) { return }\n tr = view.state.tr.insertText(text$1, chFrom, chTo);\n }\n }\n\n if (!tr)\n { tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from)); }\n if (parse.sel) {\n var sel$2 = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel$2 && !(result.chrome && result.android && view.composing && sel$2.empty &&\n (change.start != change.endB || view.lastAndroidDelete < Date.now() - 100) &&\n (sel$2.head == chFrom || sel$2.head == tr.mapping.map(chTo) - 1) ||\n result.ie && sel$2.empty && sel$2.head == chFrom))\n { tr.setSelection(sel$2); }\n }\n if (storedMarks) { tr.ensureMarks(storedMarks); }\n view.dispatch(tr.scrollIntoView());\n}\n\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size) { return null }\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head))\n}\n\n// : (Fragment, Fragment) → ?{mark: Mark, type: string}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n var curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n var added = curMarks, removed = prevMarks, type, mark, update;\n for (var i = 0; i < prevMarks.length; i++) { added = prevMarks[i].removeFromSet(added); }\n for (var i$1 = 0; i$1 < curMarks.length; i$1++) { removed = curMarks[i$1].removeFromSet(removed); }\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = function (node) { return node.mark(mark.addToSet(node.marks)); };\n } else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = function (node) { return node.mark(mark.removeFromSet(node.marks)); };\n } else {\n return null\n }\n var updated = [];\n for (var i$2 = 0; i$2 < prev.childCount; i$2++) { updated.push(update(prev.child(i$2))); }\n if (Fragment.from(updated).eq(cur)) { return {mark: mark, type: type} }\n}\n\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n { return false }\n\n var $start = old.resolve(start);\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n { return false }\n var $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n { return false }\n\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content)\n}\n\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n var depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n var next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end\n}\n\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n var start = a.findDiffStart(b, pos);\n if (start == null) { return null }\n var ref = a.findDiffEnd(b, pos + a.size, pos + b.size);\n var endA = ref.a;\n var endB = ref.b;\n if (preferredSide == \"end\") {\n var adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n var move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n endB = start + (endB - endA);\n endA = start;\n } else if (endB < start) {\n var move$1 = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move$1;\n endA = start + (endA - endB);\n endB = start;\n }\n return {start: start, endA: endA, endB: endB}\n}\n\nfunction serializeForClipboard(view, slice) {\n var context = [];\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n var node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n\n var serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n var doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, {document: doc}));\n\n var firstChild = wrap.firstChild, needsWrap;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (var i = needsWrap.length - 1; i >= 0; i--) {\n var wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild) { wrapper.appendChild(wrap.firstChild); }\n wrap.appendChild(wrapper);\n if (needsWrap[i] != \"tbody\") {\n openStart++;\n openEnd++;\n }\n }\n firstChild = wrap.firstChild;\n }\n\n if (firstChild && firstChild.nodeType == 1)\n { firstChild.setAttribute(\"data-pm-slice\", (openStart + \" \" + openEnd + \" \" + (JSON.stringify(context)))); }\n\n var text = view.someProp(\"clipboardTextSerializer\", function (f) { return f(slice); }) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n\n return {dom: wrap, text: text}\n}\n\n// : (EditorView, string, string, ?bool, ResolvedPos) → ?Slice\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n var dom, inCode = $context.parent.type.spec.code, slice;\n if (!html && !text) { return null }\n var asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", function (f) { text = f(text, inCode || plainText); });\n if (inCode) { return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty }\n var parsed = view.someProp(\"clipboardTextParser\", function (f) { return f(text, $context, plainText); });\n if (parsed) {\n slice = parsed;\n } else {\n var marks = $context.marks();\n var ref = view.state;\n var schema = ref.schema;\n var serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(function (block) {\n var p = dom.appendChild(document.createElement(\"p\"));\n if (block) { p.appendChild(serializer.serializeNode(schema.text(block, marks))); }\n });\n }\n } else {\n view.someProp(\"transformPastedHTML\", function (f) { html = f(html); });\n dom = readHTML(html);\n if (result.webkit) { restoreReplacedSpaces(dom); }\n }\n\n var contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n var sliceData = contextNode && /^(\\d+) (\\d+) (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\"));\n if (!slice) {\n var parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {preserveWhitespace: !!(asText || sliceData), context: $context});\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[3]);\n } else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n var openStart = 0, openEnd = 0;\n for (var node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating;\n openStart++, node = node.firstChild) {}\n for (var node$1 = slice.content.lastChild; openEnd < slice.openEnd && !node$1.type.spec.isolating;\n openEnd++, node$1 = node$1.lastChild) {}\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n\n view.someProp(\"transformPasted\", function (f) { slice = f(slice); });\n return slice\n}\n\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2) { return fragment }\n var loop = function ( d ) {\n var parent = $context.node(d);\n var match = parent.contentMatchAt($context.index(d));\n var lastWrap = (void 0), result = [];\n fragment.forEach(function (node) {\n if (!result) { return }\n var wrap = match.findWrapping(node.type), inLast;\n if (!wrap) { return result = null }\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n } else {\n if (result.length) { result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length); }\n var wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type, wrapped.attrs);\n lastWrap = wrap;\n }\n });\n if (result) { return { v: Fragment.from(result) } }\n };\n\n for (var d = $context.depth; d >= 0; d--) {\n var returned = loop( d );\n\n if ( returned ) return returned.v;\n }\n return fragment\n}\n\nfunction withWrappers(node, wrap, from) {\n if ( from === void 0 ) from = 0;\n\n for (var i = wrap.length - 1; i >= from; i--)\n { node = wrap[i].create(null, Fragment.from(node)); }\n return node\n}\n\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n var inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner) { return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner)) }\n var match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n { return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1)))) }\n }\n}\n\nfunction closeRight(node, depth) {\n if (depth == 0) { return node }\n var fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n var fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill))\n}\n\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n var node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (depth < to - 1) { inner = closeRange(inner, side, from, to, depth + 1, openEnd); }\n if (depth >= from)\n { inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, fragment.childCount > 1 || openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true)); }\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner))\n}\n\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n { slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd); }\n if (openEnd < slice.openEnd)\n { slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd); }\n return slice\n}\n\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"
  • \"` the table cells are ignored.\nvar wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\n\nvar _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"))\n}\n\nfunction readHTML(html) {\n var metas = /^(\\s*]*>)*/.exec(html);\n if (metas) { html = html.slice(metas[0].length); }\n var elt = detachedDoc().createElement(\"div\");\n var firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n { html = wrap.map(function (n) { return \"<\" + n + \">\"; }).join(\"\") + html + wrap.map(function (n) { return \"\"; }).reverse().join(\"\"); }\n elt.innerHTML = html;\n if (wrap) { for (var i = 0; i < wrap.length; i++) { elt = elt.querySelector(wrap[i]) || elt; } }\n return elt\n}\n\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n var nodes = dom.querySelectorAll(result.chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n { node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node); }\n }\n}\n\nfunction addContext(slice, context) {\n if (!slice.size) { return slice }\n var schema = slice.content.firstChild.type.schema, array;\n try { array = JSON.parse(context); }\n catch(e) { return slice }\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n for (var i = array.length - 2; i >= 0; i -= 2) {\n var type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs()) { break }\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++; openEnd++;\n }\n return new Slice(content, openStart, openEnd)\n}\n\nvar observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nvar useCharData = result.ie && result.ie_version <= 11;\n\nvar SelectionState = function SelectionState() {\n this.anchorNode = this.anchorOffset = this.focusNode = this.focusOffset = null;\n};\n\nSelectionState.prototype.set = function set (sel) {\n this.anchorNode = sel.anchorNode; this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode; this.focusOffset = sel.focusOffset;\n};\n\nSelectionState.prototype.eq = function eq (sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset\n};\n\nvar DOMObserver = function DOMObserver(view, handleDOMChange) {\n var this$1 = this;\n\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(function (mutations) {\n for (var i = 0; i < mutations.length; i++) { this$1.queue.push(mutations[i]); }\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (result.ie && result.ie_version <= 11 && mutations.some(\n function (m) { return m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length; }))\n { this$1.flushSoon(); }\n else\n { this$1.flush(); }\n });\n this.currentSelection = new SelectionState;\n if (useCharData) {\n this.onCharData = function (e) {\n this$1.queue.push({target: e.target, type: \"characterData\", oldValue: e.prevValue});\n this$1.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n this.suppressingSelectionUpdates = false;\n};\n\nDOMObserver.prototype.flushSoon = function flushSoon () {\n var this$1 = this;\n\n if (this.flushingSoon < 0)\n { this.flushingSoon = window.setTimeout(function () { this$1.flushingSoon = -1; this$1.flush(); }, 20); }\n};\n\nDOMObserver.prototype.forceFlush = function forceFlush () {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n};\n\nDOMObserver.prototype.start = function start () {\n if (this.observer)\n { this.observer.observe(this.view.dom, observeOptions); }\n if (useCharData)\n { this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.connectSelection();\n};\n\nDOMObserver.prototype.stop = function stop () {\n var this$1 = this;\n\n if (this.observer) {\n var take = this.observer.takeRecords();\n if (take.length) {\n for (var i = 0; i < take.length; i++) { this.queue.push(take[i]); }\n window.setTimeout(function () { return this$1.flush(); }, 20);\n }\n this.observer.disconnect();\n }\n if (useCharData) { this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.disconnectSelection();\n};\n\nDOMObserver.prototype.connectSelection = function connectSelection () {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.disconnectSelection = function disconnectSelection () {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.suppressSelectionUpdates = function suppressSelectionUpdates () {\n var this$1 = this;\n\n this.suppressingSelectionUpdates = true;\n setTimeout(function () { return this$1.suppressingSelectionUpdates = false; }, 50);\n};\n\nDOMObserver.prototype.onSelectionChange = function onSelectionChange () {\n if (!hasFocusAndSelection(this.view)) { return }\n if (this.suppressingSelectionUpdates) { return selectionToDOM(this.view) }\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (result.ie && result.ie_version <= 11 && !this.view.state.selection.empty) {\n var sel = this.view.root.getSelection();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n { return this.flushSoon() }\n }\n this.flush();\n};\n\nDOMObserver.prototype.setCurSelection = function setCurSelection () {\n this.currentSelection.set(this.view.root.getSelection());\n};\n\nDOMObserver.prototype.ignoreSelectionChange = function ignoreSelectionChange (sel) {\n if (sel.rangeCount == 0) { return true }\n var container = sel.getRangeAt(0).commonAncestorContainer;\n var desc = this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({type: \"selection\", target: container.nodeType == 3 ? container.parentNode : container})) {\n this.setCurSelection();\n return true\n }\n};\n\nDOMObserver.prototype.flush = function flush () {\n if (!this.view.docView || this.flushingSoon > -1) { return }\n var mutations = this.observer ? this.observer.takeRecords() : [];\n if (this.queue.length) {\n mutations = this.queue.concat(mutations);\n this.queue.length = 0;\n }\n\n var sel = this.view.root.getSelection();\n var newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasSelection(this.view) && !this.ignoreSelectionChange(sel);\n\n var from = -1, to = -1, typeOver = false, added = [];\n if (this.view.editable) {\n for (var i = 0; i < mutations.length; i++) {\n var result$1 = this.registerMutation(mutations[i], added);\n if (result$1) {\n from = from < 0 ? result$1.from : Math.min(result$1.from, from);\n to = to < 0 ? result$1.to : Math.max(result$1.to, to);\n if (result$1.typeOver) { typeOver = true; }\n }\n }\n }\n\n if (result.gecko && added.length > 1) {\n var brs = added.filter(function (n) { return n.nodeName == \"BR\"; });\n if (brs.length == 2) {\n var a = brs[0];\n var b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode) { b.remove(); }\n else { a.remove(); }\n }\n }\n\n if (from > -1 || newSel) {\n if (from > -1) {\n this.view.docView.markDirty(from, to);\n checkCSS(this.view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (this.view.docView.dirty) { this.view.updateState(this.view.state); }\n else if (!this.currentSelection.eq(sel)) { selectionToDOM(this.view); }\n this.currentSelection.set(sel);\n }\n};\n\nDOMObserver.prototype.registerMutation = function registerMutation (mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1) { return null }\n var desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n { return null }\n if (!desc || desc.ignoreMutation(mut)) { return null }\n\n if (mut.type == \"childList\") {\n for (var i = 0; i < mut.addedNodes.length; i++) { added.push(mut.addedNodes[i]); }\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n { return {from: desc.posBefore, to: desc.posAfter} }\n var prev = mut.previousSibling, next = mut.nextSibling;\n if (result.ie && result.ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (var i$1 = 0; i$1 < mut.addedNodes.length; i$1++) {\n var ref = mut.addedNodes[i$1];\n var previousSibling = ref.previousSibling;\n var nextSibling = ref.nextSibling;\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0) { prev = previousSibling; }\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0) { next = nextSibling; }\n }\n }\n var fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n var from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n var toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n var to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return {from: from, to: to}\n } else if (mut.type == \"attributes\") {\n return {from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border}\n } else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n }\n }\n};\n\nvar cssChecked = false;\n\nfunction checkCSS(view) {\n if (cssChecked) { return }\n cssChecked = true;\n if (getComputedStyle(view.dom).whiteSpace == \"normal\")\n { console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\"); }\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nvar handlers = {}, editHandlers = {};\n\nfunction initInput(view) {\n view.shiftKey = false;\n view.mouseDown = null;\n view.lastKeyCode = null;\n view.lastKeyCodeTime = 0;\n view.lastClick = {time: 0, x: 0, y: 0, type: \"\"};\n view.lastSelectionOrigin = null;\n view.lastSelectionTime = 0;\n\n view.lastIOSEnter = 0;\n view.lastIOSEnterFallbackTimeout = null;\n view.lastAndroidDelete = 0;\n\n view.composing = false;\n view.composingTimeout = null;\n view.compositionNodes = [];\n view.compositionEndedAt = -2e8;\n\n view.domObserver = new DOMObserver(view, function (from, to, typeOver, added) { return readDOMChange(view, from, to, typeOver, added); });\n view.domObserver.start();\n // Used by hacks like the beforeinput handler to check whether anything happened in the DOM\n view.domChangeCount = 0;\n\n view.eventHandlers = Object.create(null);\n var loop = function ( event ) {\n var handler = handlers[event];\n view.dom.addEventListener(event, view.eventHandlers[event] = function (event) {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n { handler(view, event); }\n });\n };\n\n for (var event in handlers) loop( event );\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (result.safari) { view.dom.addEventListener(\"input\", function () { return null; }); }\n\n ensureListeners(view);\n}\n\nfunction setSelectionOrigin(view, origin) {\n view.lastSelectionOrigin = origin;\n view.lastSelectionTime = Date.now();\n}\n\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (var type in view.eventHandlers)\n { view.dom.removeEventListener(type, view.eventHandlers[type]); }\n clearTimeout(view.composingTimeout);\n clearTimeout(view.lastIOSEnterFallbackTimeout);\n}\n\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", function (currentHandlers) {\n for (var type in currentHandlers) { if (!view.eventHandlers[type])\n { view.dom.addEventListener(type, view.eventHandlers[type] = function (event) { return runCustomHandler(view, event); }); } }\n });\n}\n\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", function (handlers) {\n var handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false\n })\n}\n\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles) { return true }\n if (event.defaultPrevented) { return false }\n for (var node = event.target; node != view.dom; node = node.parentNode)\n { if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n { return false } }\n return true\n}\n\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n { handlers[event.type](view, event); }\n}\n\neditHandlers.keydown = function (view, event) {\n view.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event)) { return }\n if (event.keyCode != 229) { view.domObserver.forceFlush(); }\n view.lastKeyCode = event.keyCode;\n view.lastKeyCodeTime = Date.now();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (result.ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n var now = Date.now();\n view.lastIOSEnter = now;\n view.lastIOSEnterFallbackTimeout = setTimeout(function () {\n if (view.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n view.lastIOSEnter = 0;\n }\n }, 200);\n } else if (view.someProp(\"handleKeyDown\", function (f) { return f(view, event); }) || captureKeyDown(view, event)) {\n event.preventDefault();\n } else {\n setSelectionOrigin(view, \"key\");\n }\n};\n\neditHandlers.keyup = function (view, e) {\n if (e.keyCode == 16) { view.shiftKey = false; }\n};\n\neditHandlers.keypress = function (view, event) {\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || result.mac && event.metaKey) { return }\n\n if (view.someProp(\"handleKeyPress\", function (f) { return f(view, event); })) {\n event.preventDefault();\n return\n }\n\n var sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n var text = String.fromCharCode(event.charCode);\n if (!view.someProp(\"handleTextInput\", function (f) { return f(view, sel.$from.pos, sel.$to.pos, text); }))\n { view.dispatch(view.state.tr.insertText(text).scrollIntoView()); }\n event.preventDefault();\n }\n};\n\nfunction eventCoords(event) { return {left: event.clientX, top: event.clientY} }\n\nfunction isNear(event, click) {\n var dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100\n}\n\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside);\n var loop = function ( i ) {\n if (view.someProp(propName, function (f) { return i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false); }))\n { return { v: true } }\n };\n\n for (var i = $pos.depth + 1; i > 0; i--) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\nfunction updateSelection(view, selection, origin) {\n if (!view.focused) { view.focus(); }\n var tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\") { tr.setMeta(\"pointer\", true); }\n view.dispatch(tr);\n}\n\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true\n }\n return false\n}\n\nfunction selectClickedNode(view, inside) {\n if (inside == -1) { return false }\n var sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection) { selectedNode = sel.node; }\n\n var $pos = view.state.doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n { selectAt = $pos.before(sel.$from.depth); }\n else\n { selectAt = $pos.before(i); }\n break\n }\n }\n\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true\n } else {\n return false\n }\n}\n\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", function (f) { return f(view, pos, event); }) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside))\n}\n\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", function (f) { return f(view, pos, event); })\n}\n\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", function (f) { return f(view, pos, event); }) ||\n defaultTripleClick(view, inside, event)\n}\n\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0) { return false }\n var doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true\n }\n return false\n }\n\n var $pos = doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n var nodePos = $pos.before(i);\n if (node.inlineContent)\n { updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\"); }\n else if (NodeSelection.isSelectable(node))\n { updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\"); }\n else\n { continue }\n return true\n }\n}\n\nfunction forceDOMFlush(view) {\n return endComposition(view)\n}\n\nvar selectNodeModifier = result.mac ? \"metaKey\" : \"ctrlKey\";\n\nhandlers.mousedown = function (view, event) {\n view.shiftKey = event.shiftKey;\n var flushed = forceDOMFlush(view);\n var now = Date.now(), type = \"singleClick\";\n if (now - view.lastClick.time < 500 && isNear(event, view.lastClick) && !event[selectNodeModifier]) {\n if (view.lastClick.type == \"singleClick\") { type = \"doubleClick\"; }\n else if (view.lastClick.type == \"doubleClick\") { type = \"tripleClick\"; }\n }\n view.lastClick = {time: now, x: event.clientX, y: event.clientY, type: type};\n\n var pos = view.posAtCoords(eventCoords(event));\n if (!pos) { return }\n\n if (type == \"singleClick\") {\n if (view.mouseDown) { view.mouseDown.done(); }\n view.mouseDown = new MouseDown(view, pos, event, flushed);\n } else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n } else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\n\nvar MouseDown = function MouseDown(view, pos, event, flushed) {\n var this$1 = this;\n\n this.view = view;\n this.startDoc = view.state.doc;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.selectNode = event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n this.delayedSelectionSync = false;\n\n var targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n } else {\n var $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n\n this.mightDrag = null;\n\n var target = flushed ? null : event.target;\n var targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n\n var ref = view.state;\n var selection = ref.selection;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n { this.mightDrag = {node: targetNode,\n pos: targetPos,\n addAttr: this.target && !this.target.draggable,\n setUneditable: this.target && result.gecko && !this.target.hasAttribute(\"contentEditable\")}; }\n\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.draggable = true; }\n if (this.mightDrag.setUneditable)\n { setTimeout(function () {\n if (this$1.view.mouseDown == this$1) { this$1.target.setAttribute(\"contentEditable\", \"false\"); }\n }, 20); }\n this.view.domObserver.start();\n }\n\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n};\n\nMouseDown.prototype.done = function done () {\n var this$1 = this;\n\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.removeAttribute(\"draggable\"); }\n if (this.mightDrag.setUneditable) { this.target.removeAttribute(\"contentEditable\"); }\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync) { setTimeout(function () { return selectionToDOM(this$1.view); }); }\n this.view.mouseDown = null;\n};\n\nMouseDown.prototype.up = function up (event) {\n this.done();\n\n if (!this.view.dom.contains(event.target.nodeType == 3 ? event.target.parentNode : event.target))\n { return }\n\n var pos = this.pos;\n if (this.view.state.doc != this.startDoc) { pos = this.view.posAtCoords(eventCoords(event)); }\n\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n } else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n } else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (result.safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (result.chrome && !(this.view.state.selection instanceof TextSelection) &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from),\n Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n } else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n};\n\nMouseDown.prototype.move = function move (event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n { this.allowDefault = true; }\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0) { this.done(); }\n};\n\nhandlers.touchdown = function (view) {\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\n\nhandlers.contextmenu = function (view) { return forceDOMFlush(view); };\n\nfunction inOrNearComposition(view, event) {\n if (view.composing) { return true }\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (result.safari && Math.abs(event.timeStamp - view.compositionEndedAt) < 500) {\n view.compositionEndedAt = -2e8;\n return true\n }\n return false\n}\n\n// Drop active composition after 5 seconds of inactivity on Android\nvar timeoutComposition = result.android ? 5000 : -1;\n\neditHandlers.compositionstart = editHandlers.compositionupdate = function (view) {\n if (!view.composing) {\n view.domObserver.flush();\n var state = view.state;\n var $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(function (m) { return m.type.spec.inclusive === false; })))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n } else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (result.gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n var sel = view.root.getSelection();\n for (var node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n var before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before) { break }\n if (before.nodeType == 3) {\n sel.collapse(before, before.nodeValue.length);\n break\n } else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\n\neditHandlers.compositionend = function (view, event) {\n if (view.composing) {\n view.composing = false;\n view.compositionEndedAt = event.timeStamp;\n scheduleComposeEnd(view, 20);\n }\n};\n\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.composingTimeout);\n if (delay > -1) { view.composingTimeout = setTimeout(function () { return endComposition(view); }, delay); }\n}\n\nfunction clearComposition(view) {\n if (view.composing) {\n view.composing = false;\n view.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.compositionNodes.length > 0) { view.compositionNodes.pop().markParentsDirty(); }\n}\n\nfunction timestampFromCustomEvent() {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp\n}\n\nfunction endComposition(view, forceUpdate) {\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView.dirty) {\n var sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel)); }\n else { view.updateState(view.state); }\n return true\n }\n return false\n}\n\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode) { return }\n var wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n var sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(function () {\n if (wrap.parentNode) { wrap.parentNode.removeChild(wrap); }\n view.focus();\n }, 50);\n}\n\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nvar brokenClipboardAPI = (result.ie && result.ie_version < 15) ||\n (result.ios && result.webkit_version < 604);\n\nhandlers.copy = editHandlers.cut = function (view, e) {\n var sel = view.state.selection, cut = e.type == \"cut\";\n if (sel.empty) { return }\n\n // IE and Edge's clipboard interface is completely broken\n var data = brokenClipboardAPI ? null : e.clipboardData;\n var slice = sel.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n if (data) {\n e.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n } else {\n captureCopy(view, dom);\n }\n if (cut) { view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\")); }\n};\n\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null\n}\n\nfunction capturePaste(view, e) {\n if (!view.dom.parentNode) { return }\n var plainText = view.shiftKey || view.state.selection.$from.parent.type.spec.code;\n var target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText) { target.contentEditable = \"true\"; }\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n setTimeout(function () {\n view.focus();\n if (target.parentNode) { target.parentNode.removeChild(target); }\n if (plainText) { doPaste(view, target.value, null, e); }\n else { doPaste(view, target.textContent, target.innerHTML, e); }\n }, 50);\n}\n\nfunction doPaste(view, text, html, e) {\n var slice = parseFromClipboard(view, text, html, view.shiftKey, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", function (f) { return f(view, e, slice || Slice.empty); })) { return true }\n if (!slice) { return false }\n\n var singleNode = sliceSingleNode(slice);\n var tr = singleNode ? view.state.tr.replaceSelectionWith(singleNode, view.shiftKey) : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true\n}\n\neditHandlers.paste = function (view, e) {\n var data = brokenClipboardAPI ? null : e.clipboardData;\n if (data && doPaste(view, data.getData(\"text/plain\"), data.getData(\"text/html\"), e)) { e.preventDefault(); }\n else { capturePaste(view, e); }\n};\n\nvar Dragging = function Dragging(slice, move) {\n this.slice = slice;\n this.move = move;\n};\n\nvar dragCopyModifier = result.mac ? \"altKey\" : \"ctrlKey\";\n\nhandlers.dragstart = function (view, e) {\n var mouseDown = view.mouseDown;\n if (mouseDown) { mouseDown.done(); }\n if (!e.dataTransfer) { return }\n\n var sel = view.state.selection;\n var pos = sel.empty ? null : view.posAtCoords(eventCoords(e));\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1: sel.to)) ; else if (mouseDown && mouseDown.mightDrag) {\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos)));\n } else if (e.target && e.target.nodeType == 1) {\n var desc = view.docView.nearestDesc(e.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n { view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, desc.posBefore))); }\n }\n var slice = view.state.selection.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n e.dataTransfer.clearData();\n e.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n e.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI) { e.dataTransfer.setData(\"text/plain\", text); }\n view.dragging = new Dragging(slice, !e[dragCopyModifier]);\n};\n\nhandlers.dragend = function (view) {\n var dragging = view.dragging;\n window.setTimeout(function () {\n if (view.dragging == dragging) { view.dragging = null; }\n }, 50);\n};\n\neditHandlers.dragover = editHandlers.dragenter = function (_, e) { return e.preventDefault(); };\n\neditHandlers.drop = function (view, e) {\n var dragging = view.dragging;\n view.dragging = null;\n\n if (!e.dataTransfer) { return }\n\n var eventPos = view.posAtCoords(eventCoords(e));\n if (!eventPos) { return }\n var $mouse = view.state.doc.resolve(eventPos.pos);\n if (!$mouse) { return }\n var slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", function (f) { slice = f(slice); });\n } else {\n slice = parseFromClipboard(view, e.dataTransfer.getData(brokenClipboardAPI ? \"Text\" : \"text/plain\"),\n brokenClipboardAPI ? null : e.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n var move = dragging && !e[dragCopyModifier];\n if (view.someProp(\"handleDrop\", function (f) { return f(view, e, slice || Slice.empty, move); })) {\n e.preventDefault();\n return\n }\n if (!slice) { return }\n\n e.preventDefault();\n var insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null) { insertPos = $mouse.pos; }\n\n var tr = view.state.tr;\n if (move) { tr.deleteSelection(); }\n\n var pos = tr.mapping.map(insertPos);\n var isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n var beforeInsert = tr.doc;\n if (isNode)\n { tr.replaceRangeWith(pos, pos, slice.content.firstChild); }\n else\n { tr.replaceRange(pos, pos, slice); }\n if (tr.doc.eq(beforeInsert)) { return }\n\n var $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n } else {\n var end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach(function (_from, _to, _newFrom, newTo) { return end = newTo; });\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\n\nhandlers.focus = function (view) {\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(function () {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.root.getSelection()))\n { selectionToDOM(view); }\n }, 20);\n }\n};\n\nhandlers.blur = function (view, e) {\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (e.relatedTarget && view.dom.contains(e.relatedTarget))\n { view.domObserver.currentSelection.set({}); }\n view.focused = false;\n }\n};\n\nhandlers.beforeinput = function (view, event) {\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (result.chrome && result.android && event.inputType == \"deleteContentBackward\") {\n var domChangeCount = view.domChangeCount;\n setTimeout(function () {\n if (view.domChangeCount != domChangeCount) { return } // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) { return }\n var ref = view.state.selection;\n var $cursor = ref.$cursor;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0) { view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView()); }\n }, 50);\n }\n};\n\n// Make sure all handlers get registered\nfor (var prop in editHandlers) { handlers[prop] = editHandlers[prop]; }\n\nfunction compareObjs(a, b) {\n if (a == b) { return true }\n for (var p in a) { if (a[p] !== b[p]) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n return true\n}\n\nvar WidgetType = function WidgetType(toDOM, spec) {\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n this.toDOM = toDOM;\n};\n\nWidgetType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var ref = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n var pos = ref.pos;\n var deleted = ref.deleted;\n return deleted ? null : new Decoration(pos - offset, pos - offset, this)\n};\n\nWidgetType.prototype.valid = function valid () { return true };\n\nWidgetType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)))\n};\n\nvar InlineType = function InlineType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nInlineType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n var to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this)\n};\n\nInlineType.prototype.valid = function valid (_, span) { return span.from < span.to };\n\nInlineType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\nInlineType.is = function is (span) { return span.type instanceof InlineType };\n\nvar NodeType = function NodeType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nNodeType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted) { return null }\n var to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos) { return null }\n return new Decoration(from.pos - offset, to.pos - offset, this)\n};\n\nNodeType.prototype.valid = function valid (node, span) {\n var ref = node.content.findIndex(span.from);\n var index = ref.index;\n var offset = ref.offset;\n var child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to\n};\n\nNodeType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\n// ::- Decoration objects can be provided to the view through the\n// [`decorations` prop](#view.EditorProps.decorations). They come in\n// several variants—see the static members of this class for details.\nvar Decoration = function Decoration(from, to, type) {\n // :: number\n // The start position of the decoration.\n this.from = from;\n // :: number\n // The end position. Will be the same as `from` for [widget\n // decorations](#view.Decoration^widget).\n this.to = to;\n this.type = type;\n};\n\nvar prototypeAccessors$1 = { spec: { configurable: true },inline: { configurable: true } };\n\nDecoration.prototype.copy = function copy (from, to) {\n return new Decoration(from, to, this.type)\n};\n\nDecoration.prototype.eq = function eq (other, offset) {\n if ( offset === void 0 ) offset = 0;\n\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to\n};\n\nDecoration.prototype.map = function map (mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset)\n};\n\n// :: (number, union<(view: EditorView, getPos: () → number) → dom.Node, dom.Node>, ?Object) → Decoration\n// Creates a widget decoration, which is a DOM node that's shown in\n// the document at the given position. It is recommended that you\n// delay rendering the widget by passing a function that will be\n// called when the widget is actually drawn in a view, but you can\n// also directly pass a DOM node. `getPos` can be used to find the\n// widget's current document position.\n//\n// spec::- These options are supported:\n//\n// side:: ?number\n// Controls which side of the document position this widget is\n// associated with. When negative, it is drawn before a cursor\n// at its position, and content inserted at that position ends\n// up after the widget. When zero (the default) or positive, the\n// widget is drawn after the cursor and content inserted there\n// ends up before the widget.\n//\n// When there are multiple widgets at a given position, their\n// `side` values determine the order in which they appear. Those\n// with lower values appear first. The ordering of widgets with\n// the same `side` value is unspecified.\n//\n// When `marks` is null, `side` also determines the marks that\n// the widget is wrapped in—those of the node before when\n// negative, those of the node after when positive.\n//\n// marks:: ?[Mark]\n// The precise set of marks to draw around the widget.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to control which DOM events, when they bubble out\n// of this widget, the editor view should ignore.\n//\n// ignoreSelection:: ?bool\n// When set (defaults to false), selection changes inside the\n// widget are ignored, and don't cause ProseMirror to try and\n// re-sync the selection with its selection state.\n//\n// key:: ?string\n// When comparing decorations of this type (in order to decide\n// whether it needs to be redrawn), ProseMirror will by default\n// compare the widget DOM node by identity. If you pass a key,\n// that key will be compared instead, which can be useful when\n// you generate decorations on the fly and don't want to store\n// and reuse DOM nodes. Make sure that any widgets with the same\n// key are interchangeable—if widgets differ in, for example,\n// the behavior of some event handler, they should get\n// different keys.\nDecoration.widget = function widget (pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates an inline decoration, which adds the given attributes to\n// each inline node between `from` and `to`.\n//\n// spec::- These options are recognized:\n//\n// inclusiveStart:: ?bool\n// Determines how the left side of the decoration is\n// [mapped](#transform.Position_Mapping) when content is\n// inserted directly at that position. By default, the decoration\n// won't include the new content, but you can set this to `true`\n// to make it inclusive.\n//\n// inclusiveEnd:: ?bool\n// Determines how the right side of the decoration is mapped.\n// See\n// [`inclusiveStart`](#view.Decoration^inline^spec.inclusiveStart).\nDecoration.inline = function inline (from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates a node decoration. `from` and `to` should point precisely\n// before and after a node in the document. That node, and only that\n// node, will receive the given attributes.\n//\n// spec::-\n//\n// Optional information to store with the decoration. It\n// is also used when comparing decorators for equality.\nDecoration.node = function node (from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec))\n};\n\n// :: Object\n// The spec provided when creating this decoration. Can be useful\n// if you've stored extra information in that object.\nprototypeAccessors$1.spec.get = function () { return this.type.spec };\n\nprototypeAccessors$1.inline.get = function () { return this.type instanceof InlineType };\n\nObject.defineProperties( Decoration.prototype, prototypeAccessors$1 );\n\n// DecorationAttrs:: interface\n// A set of attributes to add to a decorated node. Most properties\n// simply directly correspond to DOM attributes of the same name,\n// which will be set to the property's value. These are exceptions:\n//\n// class:: ?string\n// A CSS class name or a space-separated set of class names to be\n// _added_ to the classes that the node already had.\n//\n// style:: ?string\n// A string of CSS to be _added_ to the node's existing `style` property.\n//\n// nodeName:: ?string\n// When non-null, the target node is wrapped in a DOM element of\n// this type (and the other attributes are applied to this element).\n\nvar none = [], noSpec = {};\n\n// :: class extends DecorationSource\n// A collection of [decorations](#view.Decoration), organized in\n// such a way that the drawing algorithm can efficiently use and\n// compare them. This is a persistent data structure—it is not\n// modified, updates create a new value.\nvar DecorationSet = function DecorationSet(local, children) {\n this.local = local && local.length ? local : none;\n this.children = children && children.length ? children : none;\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Create a set of decorations, using the structure of the given\n// document.\nDecorationSet.create = function create (doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty\n};\n\n// :: (?number, ?number, ?(spec: Object) → bool) → [Decoration]\n// Find all decorations in this set which touch the given range\n// (including decorations that start or end directly at the\n// boundaries) and match the given predicate on their spec. When\n// `start` and `end` are omitted, all decorations in the set are\n// considered. When `predicate` isn't given, all decorations are\n// assumed to match.\nDecorationSet.prototype.find = function find (start, end, predicate) {\n var result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result\n};\n\nDecorationSet.prototype.findInner = function findInner (start, end, result, offset, predicate) {\n for (var i = 0; i < this.local.length; i++) {\n var span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n { result.push(span.copy(span.from + offset, span.to + offset)); }\n }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3) {\n if (this.children[i$1] < end && this.children[i$1 + 1] > start) {\n var childOff = this.children[i$1] + 1;\n this.children[i$1 + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n};\n\n// :: (Mapping, Node, ?Object) → DecorationSet\n// Map the set of decorations in response to a change in the\n// document.\n//\n// options::- An optional set of options.\n//\n// onRemove:: ?(decorationSpec: Object)\n// When given, this function will be called for each decoration\n// that gets dropped as a result of the mapping, passing the\n// spec of that decoration.\nDecorationSet.prototype.map = function map (mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0) { return this }\n return this.mapInner(mapping, doc, 0, 0, options || noSpec)\n};\n\nDecorationSet.prototype.mapInner = function mapInner (mapping, node, offset, oldOffset, options) {\n var newLocal;\n for (var i = 0; i < this.local.length; i++) {\n var mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped)) { (newLocal || (newLocal = [])).push(mapped); }\n else if (options.onRemove) { options.onRemove(this.local[i].spec); }\n }\n\n if (this.children.length)\n { return mapChildren(this.children, newLocal, mapping, node, offset, oldOffset, options) }\n else\n { return newLocal ? new DecorationSet(newLocal.sort(byPos)) : empty }\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Add the given array of decorations to the ones in the set,\n// producing a new set. Needs access to the current document to\n// create the appropriate tree structure.\nDecorationSet.prototype.add = function add (doc, decorations) {\n if (!decorations.length) { return this }\n if (this == empty) { return DecorationSet.create(doc, decorations) }\n return this.addInner(doc, decorations, 0)\n};\n\nDecorationSet.prototype.addInner = function addInner (doc, decorations, offset) {\n var this$1 = this;\n\n var children, childIndex = 0;\n doc.forEach(function (childNode, childOffset) {\n var baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset))) { return }\n\n if (!children) { children = this$1.children.slice(); }\n while (childIndex < children.length && children[childIndex] < childOffset) { childIndex += 3; }\n if (children[childIndex] == childOffset)\n { children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1); }\n else\n { children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec)); }\n childIndex += 3;\n });\n\n var local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (var i = 0; i < local.length; i++) { if (!local[i].type.valid(doc, local[i])) { local.splice(i--, 1); } }\n\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local,\n children || this.children)\n};\n\n// :: ([Decoration]) → DecorationSet\n// Create a new set that contains the decorations in this set, minus\n// the ones in the given array.\nDecorationSet.prototype.remove = function remove (decorations) {\n if (decorations.length == 0 || this == empty) { return this }\n return this.removeInner(decorations, 0)\n};\n\nDecorationSet.prototype.removeInner = function removeInner (decorations, offset) {\n var children = this.children, local = this.local;\n for (var i = 0; i < children.length; i += 3) {\n var found = (void 0), from = children[i] + offset, to = children[i + 1] + offset;\n for (var j = 0, span = (void 0); j < decorations.length; j++) { if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null\n ;(found || (found = [])).push(span);\n }\n } }\n if (!found) { continue }\n if (children == this.children) { children = this.children.slice(); }\n var removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n } else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length) { for (var i$1 = 0, span$1 = (void 0); i$1 < decorations.length; i$1++) { if (span$1 = decorations[i$1]) {\n for (var j$1 = 0; j$1 < local.length; j$1++) { if (local[j$1].eq(span$1, offset)) {\n if (local == this.local) { local = this.local.slice(); }\n local.splice(j$1--, 1);\n } }\n } } }\n if (children == this.children && local == this.local) { return this }\n return local.length || children.length ? new DecorationSet(local, children) : empty\n};\n\nDecorationSet.prototype.forChild = function forChild (offset, node) {\n if (this == empty) { return this }\n if (node.isLeaf) { return DecorationSet.empty }\n\n var child, local;\n for (var i = 0; i < this.children.length; i += 3) { if (this.children[i] >= offset) {\n if (this.children[i] == offset) { child = this.children[i + 2]; }\n break\n } }\n var start = offset + 1, end = start + node.content.size;\n for (var i$1 = 0; i$1 < this.local.length; i$1++) {\n var dec = this.local[i$1];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n var from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to) { (local || (local = [])).push(dec.copy(from, to)); }\n }\n }\n if (local) {\n var localSet = new DecorationSet(local.sort(byPos));\n return child ? new DecorationGroup([localSet, child]) : localSet\n }\n return child || empty\n};\n\nDecorationSet.prototype.eq = function eq (other) {\n if (this == other) { return true }\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length) { return false }\n for (var i = 0; i < this.local.length; i++)\n { if (!this.local[i].eq(other.local[i])) { return false } }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3)\n { if (this.children[i$1] != other.children[i$1] ||\n this.children[i$1 + 1] != other.children[i$1 + 1] ||\n !this.children[i$1 + 2].eq(other.children[i$1 + 2])) { return false } }\n return true\n};\n\nDecorationSet.prototype.locals = function locals (node) {\n return removeOverlap(this.localsInner(node))\n};\n\nDecorationSet.prototype.localsInner = function localsInner (node) {\n if (this == empty) { return none }\n if (node.inlineContent || !this.local.some(InlineType.is)) { return this.local }\n var result = [];\n for (var i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n { result.push(this.local[i]); }\n }\n return result\n};\n\n// DecorationSource:: interface\n// An object that can [provide](#view.EditorProps.decorations)\n// decorations. Implemented by [`DecorationSet`](#view.DecorationSet),\n// and passed to [node views](#view.EditorProps.nodeViews).\n//\n// map:: (Mapping, Node) → DecorationSource\n// Map the set of decorations in response to a change in the\n// document.\n\nvar empty = new DecorationSet();\n\n// :: DecorationSet\n// The empty set of decorations.\nDecorationSet.empty = empty;\n\nDecorationSet.removeOverlap = removeOverlap;\n\n// :- An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nvar DecorationGroup = function DecorationGroup(members) {\n this.members = members;\n};\n\nDecorationGroup.prototype.map = function map (mapping, doc) {\n var mappedDecos = this.members.map(\n function (member) { return member.map(mapping, doc, noSpec); }\n );\n return DecorationGroup.from(mappedDecos)\n};\n\nDecorationGroup.prototype.forChild = function forChild (offset, child) {\n if (child.isLeaf) { return DecorationSet.empty }\n var found = [];\n for (var i = 0; i < this.members.length; i++) {\n var result = this.members[i].forChild(offset, child);\n if (result == empty) { continue }\n if (result instanceof DecorationGroup) { found = found.concat(result.members); }\n else { found.push(result); }\n }\n return DecorationGroup.from(found)\n};\n\nDecorationGroup.prototype.eq = function eq (other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length) { return false }\n for (var i = 0; i < this.members.length; i++)\n { if (!this.members[i].eq(other.members[i])) { return false } }\n return true\n};\n\nDecorationGroup.prototype.locals = function locals (node) {\n var result, sorted = true;\n for (var i = 0; i < this.members.length; i++) {\n var locals = this.members[i].localsInner(node);\n if (!locals.length) { continue }\n if (!result) {\n result = locals;\n } else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (var j = 0; j < locals.length; j++) { result.push(locals[j]); }\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none\n};\n\n// : ([DecorationSet]) → union\n// Create a group for the given array of decoration sets, or return\n// a single set when possible.\nDecorationGroup.from = function from (members) {\n switch (members.length) {\n case 0: return empty\n case 1: return members[0]\n default: return new DecorationGroup(members)\n }\n};\n\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n var children = oldChildren.slice();\n\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n var shift = function (oldStart, oldEnd, newStart, newEnd) {\n for (var i = 0; i < children.length; i += 3) {\n var end = children[i + 1], dSize = (void 0);\n if (end == -1 || oldStart > end + oldOffset) { continue }\n if (oldEnd >= children[i] + oldOffset) {\n children[i + 1] = -1;\n } else if (newStart >= offset && (dSize = (newEnd - newStart) - (oldEnd - oldStart))) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n };\n for (var i = 0; i < mapping.maps.length; i++) { mapping.maps[i].forEach(shift); }\n\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n var mustRebuild = false;\n for (var i$1 = 0; i$1 < children.length; i$1 += 3) { if (children[i$1 + 1] == -1) { // Touched nodes\n var from = mapping.map(oldChildren[i$1] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue\n }\n // Must read oldChildren because children was tagged with -1\n var to = mapping.map(oldChildren[i$1 + 1] + oldOffset, -1), toLocal = to - offset;\n var ref = node.content.findIndex(fromLocal);\n var index = ref.index;\n var childOffset = ref.offset;\n var childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n var mapped = children[i$1 + 2].mapInner(mapping, childNode, from + 1, oldChildren[i$1] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i$1] = fromLocal;\n children[i$1 + 1] = toLocal;\n children[i$1 + 2] = mapped;\n } else {\n children[i$1 + 1] = -2;\n mustRebuild = true;\n }\n } else {\n mustRebuild = true;\n }\n } }\n\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n var decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal || [], mapping,\n offset, oldOffset, options);\n var built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (var i$2 = 0; i$2 < children.length; i$2 += 3) { if (children[i$2 + 1] < 0) {\n children.splice(i$2, 3);\n i$2 -= 3;\n } }\n for (var i$3 = 0, j = 0; i$3 < built.children.length; i$3 += 3) {\n var from$1 = built.children[i$3];\n while (j < children.length && children[j] < from$1) { j += 3; }\n children.splice(j, 0, built.children[i$3], built.children[i$3 + 1], built.children[i$3 + 2]);\n }\n }\n\n return new DecorationSet(newLocal && newLocal.sort(byPos), children)\n}\n\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length) { return spans }\n var result = [];\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result\n}\n\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (var i = 0; i < set.local.length; i++) {\n var mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped) { decorations.push(mapped); }\n else if (options.onRemove) { options.onRemove(set.local[i].spec); }\n }\n for (var i$1 = 0; i$1 < set.children.length; i$1 += 3)\n { gather(set.children[i$1 + 2], set.children[i$1] + oldOffset + 1); }\n }\n for (var i = 0; i < children.length; i += 3) { if (children[i + 1] == -1)\n { gather(children[i + 2], oldChildren[i] + oldOffset + 1); } }\n\n return decorations\n}\n\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf) { return null }\n var end = offset + node.nodeSize, found = null;\n for (var i = 0, span = (void 0); i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n(found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found\n}\n\nfunction withoutNulls(array) {\n var result = [];\n for (var i = 0; i < array.length; i++)\n { if (array[i] != null) { result.push(array[i]); } }\n return result\n}\n\n// : ([Decoration], Node, number) → DecorationSet\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n var children = [], hasNulls = false;\n node.forEach(function (childNode, localStart) {\n var found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n var subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n { children.push(localStart, localStart + childNode.nodeSize, subtree); }\n }\n });\n var locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (var i = 0; i < locals.length; i++) { if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove) { options.onRemove(locals[i].spec); }\n locals.splice(i--, 1);\n } }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty\n}\n\n// : (Decoration, Decoration) → number\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to\n}\n\n// : ([Decoration]) → [Decoration]\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n var working = spans;\n for (var i = 0; i < working.length - 1; i++) {\n var span = working[i];\n if (span.from != span.to) { for (var j = i + 1; j < working.length; j++) {\n var next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans) { working = spans.slice(); }\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue\n } else {\n if (next.from < span.to) {\n if (working == spans) { working = spans.slice(); }\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break\n }\n } }\n }\n return working\n}\n\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0) { i++; }\n array.splice(i, 0, deco);\n}\n\n// : (EditorView) → union\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n var found = [];\n view.someProp(\"decorations\", function (f) {\n var result = f(view.state);\n if (result && result != empty) { found.push(result); }\n });\n if (view.cursorWrapper)\n { found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco])); }\n return DecorationGroup.from(found)\n}\n\n// ::- An editor view manages the DOM structure that represents an\n// editable document. Its state and behavior are determined by its\n// [props](#view.DirectEditorProps).\nvar EditorView = function EditorView(place, props) {\n this._props = props;\n // :: EditorState\n // The view's current [state](#state.EditorState).\n this.state = props.state;\n\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n\n this.dispatch = this.dispatch.bind(this);\n\n this._root = null;\n this.focused = false;\n // Kludge used to work around a Chrome bug\n this.trackWrites = null;\n\n // :: dom.Element\n // An editable DOM node containing the document. (You probably\n // should not directly interfere with its content.)\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild) { place.appendChild(this.dom); }\n else if (place.apply) { place(this.dom); }\n else if (place.mount) { this.mounted = true; }\n }\n\n // :: bool\n // Indicates whether the editor is currently [editable](#view.EditorProps.editable).\n this.editable = getEditable(this);\n this.markCursor = null;\n this.cursorWrapper = null;\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n\n this.lastSelectedViewDesc = null;\n // :: ?{slice: Slice, move: bool}\n // When editor content is being dragged, this object contains\n // information about the dragged slice and whether it is being\n // copied or moved. At any other time, it is null.\n this.dragging = null;\n\n initInput(this);\n\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n this.updatePluginViews();\n};\n\nvar prototypeAccessors$2 = { props: { configurable: true },root: { configurable: true } };\n\n// composing:: boolean\n// Holds `true` when a\n// [composition](https://developer.mozilla.org/en-US/docs/Mozilla/IME_handling_guide)\n// is active.\n\n// :: DirectEditorProps\n// The view's current [props](#view.EditorProps).\nprototypeAccessors$2.props.get = function () {\n if (this._props.state != this.state) {\n var prev = this._props;\n this._props = {};\n for (var name in prev) { this._props[name] = prev[name]; }\n this._props.state = this.state;\n }\n return this._props\n};\n\n// :: (DirectEditorProps)\n// Update the view's props. Will immediately cause an update to\n// the DOM.\nEditorView.prototype.update = function update (props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents) { ensureListeners(this); }\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, true);\n};\n\n// :: (DirectEditorProps)\n// Update the view by updating existing props object with the object\n// given as argument. Equivalent to `view.update(Object.assign({},\n// view.props, props))`.\nEditorView.prototype.setProps = function setProps (props) {\n var updated = {};\n for (var name in this._props) { updated[name] = this._props[name]; }\n updated.state = this.state;\n for (var name$1 in props) { updated[name$1] = props[name$1]; }\n this.update(updated);\n};\n\n// :: (EditorState)\n// Update the editor's `state` prop, without touching any of the\n// other props.\nEditorView.prototype.updateState = function updateState (state) {\n this.updateStateInner(state, this.state.plugins != state.plugins);\n};\n\nEditorView.prototype.updateStateInner = function updateStateInner (state, reconfigured) {\n var this$1 = this;\n\n var prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n if (reconfigured) {\n var nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n ensureListeners(this);\n }\n\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n var innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n\n var scroll = reconfigured ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n var updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection)) { updateSel = true; }\n var oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n var forceSelUpdate = updateDoc && (result.ie || result.chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n var chromeKludge = result.chrome ? (this.trackWrites = this.root.getSelection().focusNode) : null;\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([]);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites) { forceSelUpdate = true; }\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.mouseDown && this.domObserver.currentSelection.eq(this.root.getSelection()) && anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n } else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n\n this.updatePluginViews(prev);\n\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n } else if (scroll == \"to selection\") {\n var startDOM = this.root.getSelection().focusNode;\n if (this.someProp(\"handleScrollToSelection\", function (f) { return f(this$1); }))\n ; // Handled\n else if (state.selection instanceof NodeSelection)\n { scrollRectIntoView(this, this.docView.domAfterPos(state.selection.from).getBoundingClientRect(), startDOM); }\n else\n { scrollRectIntoView(this, this.coordsAtPos(state.selection.head, 1), startDOM); }\n } else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n};\n\nEditorView.prototype.destroyPluginViews = function destroyPluginViews () {\n var view;\n while (view = this.pluginViews.pop()) { if (view.destroy) { view.destroy(); } }\n};\n\nEditorView.prototype.updatePluginViews = function updatePluginViews (prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (var i = 0; i < this.directPlugins.length; i++) {\n var plugin = this.directPlugins[i];\n if (plugin.spec.view) { this.pluginViews.push(plugin.spec.view(this)); }\n }\n for (var i$1 = 0; i$1 < this.state.plugins.length; i$1++) {\n var plugin$1 = this.state.plugins[i$1];\n if (plugin$1.spec.view) { this.pluginViews.push(plugin$1.spec.view(this)); }\n }\n } else {\n for (var i$2 = 0; i$2 < this.pluginViews.length; i$2++) {\n var pluginView = this.pluginViews[i$2];\n if (pluginView.update) { pluginView.update(this, prevState); }\n }\n }\n};\n\n// :: (string, ?(prop: *) → *) → *\n// Goes over the values of a prop, first those provided directly,\n// then those from plugins given to the view, then from plugins in\n// the state (in order), and calls `f` every time a non-undefined\n// value is found. When `f` returns a truthy value, that is\n// immediately returned. When `f` isn't provided, it is treated as\n// the identity function (the prop value is returned directly).\nEditorView.prototype.someProp = function someProp (propName, f) {\n var prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop)) { return value }\n for (var i = 0; i < this.directPlugins.length; i++) {\n var prop$1 = this.directPlugins[i].props[propName];\n if (prop$1 != null && (value = f ? f(prop$1) : prop$1)) { return value }\n }\n var plugins = this.state.plugins;\n if (plugins) { for (var i$1 = 0; i$1 < plugins.length; i$1++) {\n var prop$2 = plugins[i$1].props[propName];\n if (prop$2 != null && (value = f ? f(prop$2) : prop$2)) { return value }\n } }\n};\n\n// :: () → bool\n// Query whether the view has focus.\nEditorView.prototype.hasFocus = function hasFocus () {\n return this.root.activeElement == this.dom\n};\n\n// :: ()\n// Focus the editor.\nEditorView.prototype.focus = function focus () {\n this.domObserver.stop();\n if (this.editable) { focusPreventScroll(this.dom); }\n selectionToDOM(this);\n this.domObserver.start();\n};\n\n// :: union\n// Get the document root in which the editor exists. This will\n// usually be the top-level `document`, but might be a [shadow\n// DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n// root if the editor is inside one.\nprototypeAccessors$2.root.get = function () {\n var cached = this._root;\n if (cached == null) { for (var search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection) { Object.getPrototypeOf(search).getSelection = function () { return document.getSelection(); }; }\n return this._root = search\n }\n } }\n return cached || document\n};\n\n// :: ({left: number, top: number}) → ?{pos: number, inside: number}\n// Given a pair of viewport coordinates, return the document\n// position that corresponds to them. May return null if the given\n// coordinates aren't inside of the editor. When an object is\n// returned, its `pos` property is the position nearest to the\n// coordinates, and its `inside` property holds the position of the\n// inner node that the position falls inside of, or -1 if it is at\n// the top level, not in any node.\nEditorView.prototype.posAtCoords = function posAtCoords$1 (coords) {\n return posAtCoords(this, coords)\n};\n\n// :: (number, number) → {left: number, right: number, top: number, bottom: number}\n// Returns the viewport rectangle at a given document position.\n// `left` and `right` will be the same number, as this returns a\n// flat cursor-ish rectangle. If the position is between two things\n// that aren't directly adjacent, `side` determines which element is\n// used. When < 0, the element before the position is used,\n// otherwise the element after.\nEditorView.prototype.coordsAtPos = function coordsAtPos$1 (pos, side) {\n if ( side === void 0 ) side = 1;\n\n return coordsAtPos(this, pos, side)\n};\n\n// :: (number, number) → {node: dom.Node, offset: number}\n// Find the DOM position that corresponds to the given document\n// position. When `side` is negative, find the position as close as\n// possible to the content before the position. When positive,\n// prefer positions close to the content after the position. When\n// zero, prefer as shallow a position as possible.\n//\n// Note that you should **not** mutate the editor's internal DOM,\n// only inspect it (and even that is usually not necessary).\nEditorView.prototype.domAtPos = function domAtPos (pos, side) {\n if ( side === void 0 ) side = 0;\n\n return this.docView.domFromPos(pos, side)\n};\n\n// :: (number) → ?dom.Node\n// Find the DOM node that represents the document node after the\n// given position. May return `null` when the position doesn't point\n// in front of a node or if the node is inside an opaque node view.\n//\n// This is intended to be able to call things like\n// `getBoundingClientRect` on that DOM node. Do **not** mutate the\n// editor DOM directly, or add styling this way, since that will be\n// immediately overriden by the editor as it redraws the node.\nEditorView.prototype.nodeDOM = function nodeDOM (pos) {\n var desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null\n};\n\n// :: (dom.Node, number, ?number) → number\n// Find the document position that corresponds to a given DOM\n// position. (Whenever possible, it is preferable to inspect the\n// document structure directly, rather than poking around in the\n// DOM, but sometimes—for example when interpreting an event\n// target—you don't have a choice.)\n//\n// The `bias` parameter can be used to influence which side of a DOM\n// node to use when the position is inside a leaf node.\nEditorView.prototype.posAtDOM = function posAtDOM (node, offset, bias) {\n if ( bias === void 0 ) bias = -1;\n\n var pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null) { throw new RangeError(\"DOM position not inside the editor\") }\n return pos\n};\n\n// :: (union<\"up\", \"down\", \"left\", \"right\", \"forward\", \"backward\">, ?EditorState) → bool\n// Find out whether the selection is at the end of a textblock when\n// moving in a given direction. When, for example, given `\"left\"`,\n// it will return true if moving left from the current cursor\n// position would leave that position's parent textblock. Will apply\n// to the view's current state by default, but it is possible to\n// pass a different state.\nEditorView.prototype.endOfTextblock = function endOfTextblock$1 (dir, state) {\n return endOfTextblock(this, state || this.state, dir)\n};\n\n// :: ()\n// Removes the editor from the DOM and destroys all [node\n// views](#view.NodeView).\nEditorView.prototype.destroy = function destroy () {\n if (!this.docView) { return }\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n } else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n};\n\n// Used for testing.\nEditorView.prototype.dispatchEvent = function dispatchEvent$1 (event) {\n return dispatchEvent(this, event)\n};\n\n// :: (Transaction)\n// Dispatch a transaction. Will call\n// [`dispatchTransaction`](#view.DirectEditorProps.dispatchTransaction)\n// when given, and otherwise defaults to applying the transaction to\n// the current state and calling\n// [`updateState`](#view.EditorView.updateState) with the result.\n// This method is bound to the view instance, so that it can be\n// easily passed around.\nEditorView.prototype.dispatch = function dispatch (tr) {\n var dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction) { dispatchTransaction.call(this, tr); }\n else { this.updateState(this.state.apply(tr)); }\n};\n\nObject.defineProperties( EditorView.prototype, prototypeAccessors$2 );\n\nfunction computeDocDeco(view) {\n var attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n attrs.translate = \"no\";\n\n view.someProp(\"attributes\", function (value) {\n if (typeof value == \"function\") { value = value(view.state); }\n if (value) { for (var attr in value) {\n if (attr == \"class\")\n { attrs.class += \" \" + value[attr]; }\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n { attrs[attr] = String(value[attr]); }\n } }\n });\n\n return [Decoration.node(0, view.state.doc.content.size, attrs)]\n}\n\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n var dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n view.cursorWrapper = {dom: dom, deco: Decoration.widget(view.state.selection.head, dom, {raw: true, marks: view.markCursor})};\n } else {\n view.cursorWrapper = null;\n }\n}\n\nfunction getEditable(view) {\n return !view.someProp(\"editable\", function (value) { return value(view.state) === false; })\n}\n\nfunction selectionContextChanged(sel1, sel2) {\n var depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth)\n}\n\nfunction buildNodeViews(view) {\n var result = {};\n view.someProp(\"nodeViews\", function (obj) {\n for (var prop in obj) { if (!Object.prototype.hasOwnProperty.call(result, prop))\n { result[prop] = obj[prop]; } }\n });\n return result\n}\n\nfunction changedNodeViews(a, b) {\n var nA = 0, nB = 0;\n for (var prop in a) {\n if (a[prop] != b[prop]) { return true }\n nA++;\n }\n for (var _ in b) { nB++; }\n return nA != nB\n}\n\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n { throw new RangeError(\"Plugins passed directly to the view must not have a state component\") }\n}\n\n// EditorProps:: interface\n//\n// Props are configuration values that can be passed to an editor view\n// or included in a plugin. This interface lists the supported props.\n//\n// The various event-handling functions may all return `true` to\n// indicate that they handled the given event. The view will then take\n// care to call `preventDefault` on the event, except with\n// `handleDOMEvents`, where the handler itself is responsible for that.\n//\n// How a prop is resolved depends on the prop. Handler functions are\n// called one at a time, starting with the base props and then\n// searching through the plugins (in order of appearance) until one of\n// them returns true. For some props, the first plugin that yields a\n// value gets precedence.\n//\n// handleDOMEvents:: ?Object<(view: EditorView, event: dom.Event) → bool>\n// Can be an object mapping DOM event type names to functions that\n// handle them. Such functions will be called before any handling\n// ProseMirror does of events fired on the editable DOM element.\n// Contrary to the other event handling props, when returning true\n// from such a function, you are responsible for calling\n// `preventDefault` yourself (or not, if you want to allow the\n// default behavior).\n//\n// handleKeyDown:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Called when the editor receives a `keydown` event.\n//\n// handleKeyPress:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Handler for `keypress` events.\n//\n// handleTextInput:: ?(view: EditorView, from: number, to: number, text: string) → bool\n// Whenever the user directly input text, this handler is called\n// before the input is applied. If it returns `true`, the default\n// behavior of actually inserting the text is suppressed.\n//\n// handleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a click, from the inside out. The\n// `direct` flag will be true for the inner node.\n//\n// handleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is clicked, after `handleClickOn` handlers\n// have been called.\n//\n// handleDoubleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a double click.\n//\n// handleDoubleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is double-clicked, after `handleDoubleClickOn`.\n//\n// handleTripleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a triple click.\n//\n// handleTripleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is triple-clicked, after `handleTripleClickOn`.\n//\n// handlePaste:: ?(view: EditorView, event: dom.ClipboardEvent, slice: Slice) → bool\n// Can be used to override the behavior of pasting. `slice` is the\n// pasted content parsed by the editor, but you can directly access\n// the event to get at the raw content.\n//\n// handleDrop:: ?(view: EditorView, event: dom.Event, slice: Slice, moved: bool) → bool\n// Called when something is dropped on the editor. `moved` will be\n// true if this drop moves from the current selection (which should\n// thus be deleted).\n//\n// handleScrollToSelection:: ?(view: EditorView) → bool\n// Called when the view, after updating its state, tries to scroll\n// the selection into view. A handler function may return false to\n// indicate that it did not handle the scrolling and further\n// handlers or the default behavior should be tried.\n//\n// createSelectionBetween:: ?(view: EditorView, anchor: ResolvedPos, head: ResolvedPos) → ?Selection\n// Can be used to override the way a selection is created when\n// reading a DOM selection between the given anchor and head.\n//\n// domParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading editor changes\n// from the DOM. Defaults to calling\n// [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) on the\n// editor's schema.\n//\n// transformPastedHTML:: ?(html: string) → string\n// Can be used to transform pasted HTML text, _before_ it is parsed,\n// for example to clean it up.\n//\n// clipboardParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading content from\n// the clipboard. When not given, the value of the\n// [`domParser`](#view.EditorProps.domParser) prop is used.\n//\n// transformPastedText:: ?(text: string, plain: bool) → string\n// Transform pasted plain text. The `plain` flag will be true when\n// the text is pasted as plain text.\n//\n// clipboardTextParser:: ?(text: string, $context: ResolvedPos, plain: bool) → Slice\n// A function to parse text from the clipboard into a document\n// slice. Called after\n// [`transformPastedText`](#view.EditorProps.transformPastedText).\n// The default behavior is to split the text into lines, wrap them\n// in `

    ` tags, and call\n// [`clipboardParser`](#view.EditorProps.clipboardParser) on it.\n// The `plain` flag will be true when the text is pasted as plain text.\n//\n// transformPasted:: ?(Slice) → Slice\n// Can be used to transform pasted content before it is applied to\n// the document.\n//\n// nodeViews:: ?Object<(node: Node, view: EditorView, getPos: () → number, decorations: [Decoration], innerDecorations: DecorationSource) → NodeView>\n// Allows you to pass custom rendering and behavior logic for nodes\n// and marks. Should map node and mark names to constructor\n// functions that produce a [`NodeView`](#view.NodeView) object\n// implementing the node's display behavior. For nodes, the third\n// argument `getPos` is a function that can be called to get the\n// node's current position, which can be useful when creating\n// transactions to update it. For marks, the third argument is a\n// boolean that indicates whether the mark's content is inline.\n//\n// `decorations` is an array of node or inline decorations that are\n// active around the node. They are automatically drawn in the\n// normal way, and you will usually just want to ignore this, but\n// they can also be used as a way to provide context information to\n// the node view without adding it to the document itself.\n//\n// `innerDecorations` holds the decorations for the node's content.\n// You can safely ignore this if your view has no content or a\n// `contentDOM` property, since the editor will draw the decorations\n// on the content. But if you, for example, want to create a nested\n// editor with the content, it may make sense to provide it with the\n// inner decorations.\n//\n// clipboardSerializer:: ?DOMSerializer\n// The DOM serializer to use when putting content onto the\n// clipboard. If not given, the result of\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)\n// will be used.\n//\n// clipboardTextSerializer:: ?(Slice) → string\n// A function that will be called to get the text for the current\n// selection when copying text to the clipboard. By default, the\n// editor will use [`textBetween`](#model.Node.textBetween) on the\n// selected range.\n//\n// decorations:: ?(state: EditorState) → ?DecorationSource\n// A set of [document decorations](#view.Decoration) to show in the\n// view.\n//\n// editable:: ?(state: EditorState) → bool\n// When this returns false, the content of the view is not directly\n// editable.\n//\n// attributes:: ?union, (EditorState) → ?Object>\n// Control the DOM attributes of the editable element. May be either\n// an object or a function going from an editor state to an object.\n// By default, the element will get a class `\"ProseMirror\"`, and\n// will have its `contentEditable` attribute determined by the\n// [`editable` prop](#view.EditorProps.editable). Additional classes\n// provided here will be added to the class. For other attributes,\n// the value provided first (as in\n// [`someProp`](#view.EditorView.someProp)) will be used.\n//\n// scrollThreshold:: ?union\n// Determines the distance (in pixels) between the cursor and the\n// end of the visible viewport at which point, when scrolling the\n// cursor into view, scrolling takes place. Defaults to 0.\n//\n// scrollMargin:: ?union\n// Determines the extra space (in pixels) that is left above or\n// below the cursor when it is scrolled into view. Defaults to 5.\n\n// DirectEditorProps:: interface extends EditorProps\n//\n// The props object given directly to the editor view supports two\n// fields that can't be used in plugins:\n//\n// state:: EditorState\n// The current state of the editor.\n//\n// plugins:: [Plugin]\n// A set of plugins to use in the view, applying their [plugin\n// view](#state.PluginSpec.view) and\n// [props](#state.PluginSpec.props). Passing plugins with a state\n// component (a [state field](#state.PluginSpec.state) field or a\n// [transaction)[#state.PluginSpec.filterTransaction] filter or\n// appender) will result in an error, since such plugins must be\n// present in the state to work.\n//\n// dispatchTransaction:: ?(tr: Transaction)\n// The callback over which to send transactions (state updates)\n// produced by the view. If you specify this, you probably want to\n// make sure this ends up calling the view's\n// [`updateState`](#view.EditorView.updateState) method with a new\n// state that has the transaction\n// [applied](#state.EditorState.apply). The callback will be bound to have\n// the view instance as its `this` binding.\n\nexport { Decoration, DecorationSet, EditorView, endComposition as __endComposition, parseFromClipboard as __parseFromClipboard, serializeForClipboard as __serializeForClipboard };\n","import { PluginKey, TextSelection, Selection, SelectionRange, NodeSelection, Plugin } from 'prosemirror-state';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { keydownHandler } from 'prosemirror-keymap';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { Transform } from 'prosemirror-transform';\n\n// Because working with row and column-spanning cells is not quite\n// trivial, this code builds up a descriptive structure for a given\n// table node. The structures are cached with the (persistent) table\n// nodes as key, so that they only have to be recomputed when the\n// content of the table changes.\n//\n// This does mean that they have to store table-relative, not\n// document-relative positions. So code that uses them will typically\n// compute the start position of the table and offset positions passed\n// to or gotten from this structure by that amount.\n\nvar readFromCache, addToCache;\n// Prefer using a weak map to cache table maps. Fall back on a\n// fixed-size cache if that's not supported.\nif (typeof WeakMap != \"undefined\") {\n var cache = new WeakMap;\n readFromCache = function (key) { return cache.get(key); };\n addToCache = function (key, value) {\n cache.set(key, value);\n return value\n };\n} else {\n var cache$1 = [], cacheSize = 10, cachePos = 0;\n readFromCache = function (key) {\n for (var i = 0; i < cache$1.length; i += 2)\n { if (cache$1[i] == key) { return cache$1[i + 1] } }\n };\n addToCache = function (key, value) {\n if (cachePos == cacheSize) { cachePos = 0; }\n cache$1[cachePos++] = key;\n return cache$1[cachePos++] = value\n };\n}\n\nvar Rect = function Rect(left, top, right, bottom) {\n this.left = left; this.top = top; this.right = right; this.bottom = bottom;\n};\n\n// ::- A table map describes the structore of a given table. To avoid\n// recomputing them all the time, they are cached per table node. To\n// be able to do that, positions saved in the map are relative to the\n// start of the table, rather than the start of the document.\nvar TableMap = function TableMap(width, height, map, problems) {\n // :: number The width of the table\n this.width = width;\n // :: number The table's height\n this.height = height;\n // :: [number] A width * height array with the start position of\n // the cell covering that part of the table in each slot\n this.map = map;\n // An optional array of problems (cell overlap or non-rectangular\n // shape) for the table, used by the table normalizer.\n this.problems = problems;\n};\n\n// :: (number) → Rect\n// Find the dimensions of the cell at the given position.\nTableMap.prototype.findCell = function findCell (pos) {\n for (var i = 0; i < this.map.length; i++) {\n var curPos = this.map[i];\n if (curPos != pos) { continue }\n var left = i % this.width, top = (i / this.width) | 0;\n var right = left + 1, bottom = top + 1;\n for (var j = 1; right < this.width && this.map[i + j] == curPos; j++) { right++; }\n for (var j$1 = 1; bottom < this.height && this.map[i + (this.width * j$1)] == curPos; j$1++) { bottom++; }\n return new Rect(left, top, right, bottom)\n }\n throw new RangeError(\"No cell with offset \" + pos + \" found\")\n};\n\n// :: (number) → number\n// Find the left side of the cell at the given position.\nTableMap.prototype.colCount = function colCount (pos) {\n for (var i = 0; i < this.map.length; i++)\n { if (this.map[i] == pos) { return i % this.width } }\n throw new RangeError(\"No cell with offset \" + pos + \" found\")\n};\n\n// :: (number, string, number) → ?number\n// Find the next cell in the given direction, starting from the cell\n// at `pos`, if any.\nTableMap.prototype.nextCell = function nextCell (pos, axis, dir) {\n var ref = this.findCell(pos);\n var left = ref.left;\n var right = ref.right;\n var top = ref.top;\n var bottom = ref.bottom;\n if (axis == \"horiz\") {\n if (dir < 0 ? left == 0 : right == this.width) { return null }\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)]\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height) { return null }\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)]\n }\n};\n\n// :: (number, number) → Rect\n// Get the rectangle spanning the two given cells.\nTableMap.prototype.rectBetween = function rectBetween (a, b) {\n var ref = this.findCell(a);\n var leftA = ref.left;\n var rightA = ref.right;\n var topA = ref.top;\n var bottomA = ref.bottom;\n var ref$1 = this.findCell(b);\n var leftB = ref$1.left;\n var rightB = ref$1.right;\n var topB = ref$1.top;\n var bottomB = ref$1.bottom;\n return new Rect(Math.min(leftA, leftB), Math.min(topA, topB),\n Math.max(rightA, rightB), Math.max(bottomA, bottomB))\n};\n\n// :: (Rect) → [number]\n// Return the position of all cells that have the top left corner in\n// the given rectangle.\nTableMap.prototype.cellsInRect = function cellsInRect (rect) {\n var result = [], seen = {};\n for (var row = rect.top; row < rect.bottom; row++) {\n for (var col = rect.left; col < rect.right; col++) {\n var index = row * this.width + col, pos = this.map[index];\n if (seen[pos]) { continue }\n seen[pos] = true;\n if ((col != rect.left || !col || this.map[index - 1] != pos) &&\n (row != rect.top || !row || this.map[index - this.width] != pos))\n { result.push(pos); }\n }\n }\n return result\n};\n\n// :: (number, number, Node) → number\n// Return the position at which the cell at the given row and column\n// starts, or would start, if a cell started there.\nTableMap.prototype.positionAt = function positionAt (row, col, table) {\n for (var i = 0, rowStart = 0;; i++) {\n var rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n var index = col + row * this.width, rowEndIndex = (row + 1) * this.width;\n // Skip past cells from previous rows (via rowspan)\n while (index < rowEndIndex && this.map[index] < rowStart) { index++; }\n return index == rowEndIndex ? rowEnd - 1 : this.map[index]\n }\n rowStart = rowEnd;\n }\n};\n\n// :: (Node) → TableMap\n// Find the table map for the given table node.\nTableMap.get = function get (table) {\n return readFromCache(table) || addToCache(table, computeMap(table))\n};\n\n// Compute a table map.\nfunction computeMap(table) {\n if (table.type.spec.tableRole != \"table\") { throw new RangeError(\"Not a table node: \" + table.type.name) }\n var width = findWidth(table), height = table.childCount;\n var map = [], mapPos = 0, problems = null, colWidths = [];\n for (var i = 0, e = width * height; i < e; i++) { map[i] = 0; }\n\n for (var row = 0, pos = 0; row < height; row++) {\n var rowNode = table.child(row);\n pos++;\n for (var i$1 = 0;; i$1++) {\n while (mapPos < map.length && map[mapPos] != 0) { mapPos++; }\n if (i$1 == rowNode.childCount) { break }\n var cellNode = rowNode.child(i$1);\n var ref = cellNode.attrs;\n var colspan = ref.colspan;\n var rowspan = ref.rowspan;\n var colwidth = ref.colwidth;\n for (var h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({type: \"overlong_rowspan\", pos: pos, n: rowspan - h});\n break\n }\n var start = mapPos + (h * width);\n for (var w = 0; w < colspan; w++) {\n if (map[start + w] == 0)\n { map[start + w] = pos; }\n else\n { (problems || (problems = [])).push({type: \"collision\", row: row, pos: pos, n: colspan - w}); }\n var colW = colwidth && colwidth[w];\n if (colW) {\n var widthIndex = ((start + w) % width) * 2, prev = colWidths[widthIndex];\n if (prev == null || (prev != colW && colWidths[widthIndex + 1] == 1)) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n var expectedPos = (row + 1) * width, missing = 0;\n while (mapPos < expectedPos) { if (map[mapPos++] == 0) { missing++; } }\n if (missing) { (problems || (problems = [])).push({type: \"missing\", row: row, n: missing}); }\n pos++;\n }\n\n var tableMap = new TableMap(width, height, map, problems), badWidths = false;\n\n // For columns that have defined widths, but whose widths disagree\n // between rows, fix up the cells whose width doesn't match the\n // computed one.\n for (var i$2 = 0; !badWidths && i$2 < colWidths.length; i$2 += 2)\n { if (colWidths[i$2] != null && colWidths[i$2 + 1] < height) { badWidths = true; } }\n if (badWidths) { findBadColWidths(tableMap, colWidths, table); }\n\n return tableMap\n}\n\nfunction findWidth(table) {\n var width = -1, hasRowSpan = false;\n for (var row = 0; row < table.childCount; row++) {\n var rowNode = table.child(row), rowWidth = 0;\n if (hasRowSpan) { for (var j = 0; j < row; j++) {\n var prevRow = table.child(j);\n for (var i = 0; i < prevRow.childCount; i++) {\n var cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row) { rowWidth += cell.attrs.colspan; }\n }\n } }\n for (var i$1 = 0; i$1 < rowNode.childCount; i$1++) {\n var cell$1 = rowNode.child(i$1);\n rowWidth += cell$1.attrs.colspan;\n if (cell$1.attrs.rowspan > 1) { hasRowSpan = true; }\n }\n if (width == -1)\n { width = rowWidth; }\n else if (width != rowWidth)\n { width = Math.max(width, rowWidth); }\n }\n return width\n}\n\nfunction findBadColWidths(map, colWidths, table) {\n if (!map.problems) { map.problems = []; }\n for (var i = 0, seen = {}; i < map.map.length; i++) {\n var pos = map.map[i];\n if (seen[pos]) { continue }\n seen[pos] = true;\n var node = table.nodeAt(pos), updated = null;\n for (var j = 0; j < node.attrs.colspan; j++) {\n var col = (i + j) % map.width, colWidth = colWidths[col * 2];\n if (colWidth != null && (!node.attrs.colwidth || node.attrs.colwidth[j] != colWidth))\n { (updated || (updated = freshColWidth(node.attrs)))[j] = colWidth; }\n }\n if (updated) { map.problems.unshift({type: \"colwidth mismatch\", pos: pos, colwidth: updated}); }\n }\n}\n\nfunction freshColWidth(attrs) {\n if (attrs.colwidth) { return attrs.colwidth.slice() }\n var result = [];\n for (var i = 0; i < attrs.colspan; i++) { result.push(0); }\n return result\n}\n\n// Helper for creating a schema that supports tables.\n\nfunction getCellAttrs(dom, extraAttrs) {\n var widthAttr = dom.getAttribute(\"data-colwidth\");\n var widths = widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr) ? widthAttr.split(\",\").map(function (s) { return Number(s); }) : null;\n var colspan = Number(dom.getAttribute(\"colspan\") || 1);\n var result = {\n colspan: colspan,\n rowspan: Number(dom.getAttribute(\"rowspan\") || 1),\n colwidth: widths && widths.length == colspan ? widths : null\n };\n for (var prop in extraAttrs) {\n var getter = extraAttrs[prop].getFromDOM;\n var value = getter && getter(dom);\n if (value != null) { result[prop] = value; }\n }\n return result\n}\n\nfunction setCellAttrs(node, extraAttrs) {\n var attrs = {};\n if (node.attrs.colspan != 1) { attrs.colspan = node.attrs.colspan; }\n if (node.attrs.rowspan != 1) { attrs.rowspan = node.attrs.rowspan; }\n if (node.attrs.colwidth)\n { attrs[\"data-colwidth\"] = node.attrs.colwidth.join(\",\"); }\n for (var prop in extraAttrs) {\n var setter = extraAttrs[prop].setDOMAttr;\n if (setter) { setter(node.attrs[prop], attrs); }\n }\n return attrs\n}\n\n// :: (Object) → Object\n//\n// This function creates a set of [node\n// specs](http://prosemirror.net/docs/ref/#model.SchemaSpec.nodes) for\n// `table`, `table_row`, and `table_cell` nodes types as used by this\n// module. The result can then be added to the set of nodes when\n// creating a a schema.\n//\n// options::- The following options are understood:\n//\n// tableGroup:: ?string\n// A group name (something like `\"block\"`) to add to the table\n// node type.\n//\n// cellContent:: string\n// The content expression for table cells.\n//\n// cellAttributes:: ?Object\n// Additional attributes to add to cells. Maps attribute names to\n// objects with the following properties:\n//\n// default:: any\n// The attribute's default value.\n//\n// getFromDOM:: ?(dom.Node) → any\n// A function to read the attribute's value from a DOM node.\n//\n// setDOMAttr:: ?(value: any, attrs: Object)\n// A function to add the attribute's value to an attribute\n// object that's used to render the cell's DOM.\nfunction tableNodes(options) {\n var extraAttrs = options.cellAttributes || {};\n var cellAttrs = {\n colspan: {default: 1},\n rowspan: {default: 1},\n colwidth: {default: null}\n };\n for (var prop in extraAttrs)\n { cellAttrs[prop] = {default: extraAttrs[prop].default}; }\n\n return {\n table: {\n content: \"table_row+\",\n tableRole: \"table\",\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{tag: \"table\"}],\n toDOM: function toDOM() { return [\"table\", [\"tbody\", 0]] }\n },\n table_row: {\n content: \"(table_cell | table_header)*\",\n tableRole: \"row\",\n parseDOM: [{tag: \"tr\"}],\n toDOM: function toDOM() { return [\"tr\", 0] }\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"cell\",\n isolating: true,\n parseDOM: [{tag: \"td\", getAttrs: function (dom) { return getCellAttrs(dom, extraAttrs); }}],\n toDOM: function toDOM(node) { return [\"td\", setCellAttrs(node, extraAttrs), 0] }\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"header_cell\",\n isolating: true,\n parseDOM: [{tag: \"th\", getAttrs: function (dom) { return getCellAttrs(dom, extraAttrs); }}],\n toDOM: function toDOM(node) { return [\"th\", setCellAttrs(node, extraAttrs), 0] }\n }\n }\n}\n\nfunction tableNodeTypes(schema) {\n var result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (var name in schema.nodes) {\n var type = schema.nodes[name], role = type.spec.tableRole;\n if (role) { result[role] = type; }\n }\n }\n return result\n}\n\n// Various helper function for working with tables\n\nvar key = new PluginKey(\"selectingCells\");\n\nfunction cellAround($pos) {\n for (var d = $pos.depth - 1; d > 0; d--)\n { if ($pos.node(d).type.spec.tableRole == \"row\") { return $pos.node(0).resolve($pos.before(d + 1)) } }\n return null\n}\n\nfunction cellWrapping($pos) {\n for (var d = $pos.depth; d > 0; d--) { // Sometimes the cell can be in the same depth.\n var role = $pos.node(d).type.spec.tableRole;\n if (role === \"cell\" || role === 'header_cell') { return $pos.node(d) }\n }\n return null\n}\n\nfunction isInTable(state) {\n var $head = state.selection.$head;\n for (var d = $head.depth; d > 0; d--) { if ($head.node(d).type.spec.tableRole == \"row\") { return true } }\n return false\n}\n\nfunction selectionCell(state) {\n var sel = state.selection;\n if (sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos ? sel.$anchorCell : sel.$headCell;\n } else if (sel.node && sel.node.type.spec.tableRole == \"cell\") {\n return sel.$anchor\n }\n return cellAround(sel.$head) || cellNear(sel.$head)\n}\n\nfunction cellNear($pos) {\n for (var after = $pos.nodeAfter, pos = $pos.pos; after; after = after.firstChild, pos++) {\n var role = after.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\") { return $pos.doc.resolve(pos) }\n }\n for (var before = $pos.nodeBefore, pos$1 = $pos.pos; before; before = before.lastChild, pos$1--) {\n var role$1 = before.type.spec.tableRole;\n if (role$1 == \"cell\" || role$1 == \"header_cell\") { return $pos.doc.resolve(pos$1 - before.nodeSize) }\n }\n}\n\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole == \"row\" && $pos.nodeAfter\n}\n\nfunction moveCellForward($pos) {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter.nodeSize)\n}\n\nfunction inSameTable($a, $b) {\n return $a.depth == $b.depth && $a.pos >= $b.start(-1) && $a.pos <= $b.end(-1)\n}\n\nfunction findCell($pos) {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1))\n}\n\nfunction colCount($pos) {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1))\n}\n\nfunction nextCell($pos, axis, dir) {\n var start = $pos.start(-1), map = TableMap.get($pos.node(-1));\n var moved = map.nextCell($pos.pos - start, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(start + moved)\n}\n\nfunction setAttr(attrs, name, value) {\n var result = {};\n for (var prop in attrs) { result[prop] = attrs[prop]; }\n result[name] = value;\n return result\n}\n\nfunction removeColSpan(attrs, pos, n) {\n if ( n === void 0 ) n=1;\n\n var result = setAttr(attrs, \"colspan\", attrs.colspan - n);\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some(function (w) { return w > 0; })) { result.colwidth = null; }\n }\n return result\n}\n\nfunction addColSpan(attrs, pos, n) {\n if ( n === void 0 ) n=1;\n\n var result = setAttr(attrs, \"colspan\", attrs.colspan + n);\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (var i = 0; i < n; i++) { result.colwidth.splice(pos, 0, 0); }\n }\n return result\n}\n\nfunction columnIsHeader(map, table, col) {\n var headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (var row = 0; row < map.height; row++)\n { if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n { return false } }\n return true\n}\n\n// This file defines a ProseMirror selection subclass that models\n\n// ::- A [`Selection`](http://prosemirror.net/docs/ref/#state.Selection)\n// subclass that represents a cell selection spanning part of a table.\n// With the plugin enabled, these will be created when the user\n// selects across cells, and will be drawn by giving selected cells a\n// `selectedCell` CSS class.\nvar CellSelection = /*@__PURE__*/(function (Selection) {\n function CellSelection($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var table = $anchorCell.node(-1), map = TableMap.get(table), start = $anchorCell.start(-1);\n var rect = map.rectBetween($anchorCell.pos - start, $headCell.pos - start);\n var doc = $anchorCell.node(0);\n var cells = map.cellsInRect(rect).filter(function (p) { return p != $headCell.pos - start; });\n // Make the head cell the first range, so that it counts as the\n // primary part of the selection\n cells.unshift($headCell.pos - start);\n var ranges = cells.map(function (pos) {\n var cell = table.nodeAt(pos), from = pos + start + 1;\n return new SelectionRange(doc.resolve(from), doc.resolve(from + cell.content.size))\n });\n Selection.call(this, ranges[0].$from, ranges[0].$to, ranges);\n // :: ResolvedPos\n // A resolved position pointing _in front of_ the anchor cell (the one\n // that doesn't move when extending the selection).\n this.$anchorCell = $anchorCell;\n // :: ResolvedPos\n // A resolved position pointing in front of the head cell (the one\n // moves when extending the selection).\n this.$headCell = $headCell;\n }\n\n if ( Selection ) CellSelection.__proto__ = Selection;\n CellSelection.prototype = Object.create( Selection && Selection.prototype );\n CellSelection.prototype.constructor = CellSelection;\n\n CellSelection.prototype.map = function map (doc, mapping) {\n var $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n var $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (pointsAtCell($anchorCell) && pointsAtCell($headCell) && inSameTable($anchorCell, $headCell)) {\n var tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n { return CellSelection.rowSelection($anchorCell, $headCell) }\n else if (tableChanged && this.isColSelection())\n { return CellSelection.colSelection($anchorCell, $headCell) }\n else\n { return new CellSelection($anchorCell, $headCell) }\n }\n return TextSelection.between($anchorCell, $headCell)\n };\n\n // :: () → Slice\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n CellSelection.prototype.content = function content () {\n var table = this.$anchorCell.node(-1), map = TableMap.get(table), start = this.$anchorCell.start(-1);\n var rect = map.rectBetween(this.$anchorCell.pos - start, this.$headCell.pos - start);\n var seen = {}, rows = [];\n for (var row = rect.top; row < rect.bottom; row++) {\n var rowContent = [];\n for (var index = row * map.width + rect.left, col = rect.left; col < rect.right; col++, index++) {\n var pos = map.map[index];\n if (!seen[pos]) {\n seen[pos] = true;\n var cellRect = map.findCell(pos), cell = table.nodeAt(pos);\n var extraLeft = rect.left - cellRect.left, extraRight = cellRect.right - rect.right;\n if (extraLeft > 0 || extraRight > 0) {\n var attrs = cell.attrs;\n if (extraLeft > 0) { attrs = removeColSpan(attrs, 0, extraLeft); }\n if (extraRight > 0) { attrs = removeColSpan(attrs, attrs.colspan - extraRight, extraRight); }\n if (cellRect.left < rect.left) { cell = cell.type.createAndFill(attrs); }\n else { cell = cell.type.create(attrs, cell.content); }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n var attrs$1 = setAttr(cell.attrs, \"rowspan\", Math.min(cellRect.bottom, rect.bottom) - Math.max(cellRect.top, rect.top));\n if (cellRect.top < rect.top) { cell = cell.type.createAndFill(attrs$1); }\n else { cell = cell.type.create(attrs$1, cell.content); }\n }\n rowContent.push(cell);\n }\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n\n var fragment = this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1)\n };\n\n CellSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n tr.replace(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n }\n var sel = Selection.findFrom(tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)), -1);\n if (sel) { tr.setSelection(sel); }\n };\n\n CellSelection.prototype.replaceWith = function replaceWith (tr, node) {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n };\n\n CellSelection.prototype.forEachCell = function forEachCell (f) {\n var table = this.$anchorCell.node(-1), map = TableMap.get(table), start = this.$anchorCell.start(-1);\n var cells = map.cellsInRect(map.rectBetween(this.$anchorCell.pos - start, this.$headCell.pos - start));\n for (var i = 0; i < cells.length; i++)\n { f(table.nodeAt(cells[i]), start + cells[i]); }\n };\n\n // :: () → bool\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n CellSelection.prototype.isColSelection = function isColSelection () {\n var anchorTop = this.$anchorCell.index(-1), headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0) { return false }\n var anchorBot = anchorTop + this.$anchorCell.nodeAfter.attrs.rowspan,\n headBot = headTop + this.$headCell.nodeAfter.attrs.rowspan;\n return Math.max(anchorBot, headBot) == this.$headCell.node(-1).childCount\n };\n\n // :: (ResolvedPos, ?ResolvedPos) → CellSelection\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n CellSelection.colSelection = function colSelection ($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var map = TableMap.get($anchorCell.node(-1)), start = $anchorCell.start(-1);\n var anchorRect = map.findCell($anchorCell.pos - start), headRect = map.findCell($headCell.pos - start);\n var doc = $anchorCell.node(0);\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n { $anchorCell = doc.resolve(start + map.map[anchorRect.left]); }\n if (headRect.bottom < map.height)\n { $headCell = doc.resolve(start + map.map[map.width * (map.height - 1) + headRect.right - 1]); }\n } else {\n if (headRect.top > 0)\n { $headCell = doc.resolve(start + map.map[headRect.left]); }\n if (anchorRect.bottom < map.height)\n { $anchorCell = doc.resolve(start + map.map[map.width * (map.height - 1) + anchorRect.right - 1]); }\n }\n return new CellSelection($anchorCell, $headCell)\n };\n\n // :: () → bool\n // True if this selection goes all the way from the left to the\n // right of the table.\n CellSelection.prototype.isRowSelection = function isRowSelection () {\n var map = TableMap.get(this.$anchorCell.node(-1)), start = this.$anchorCell.start(-1);\n var anchorLeft = map.colCount(this.$anchorCell.pos - start),\n headLeft = map.colCount(this.$headCell.pos - start);\n if (Math.min(anchorLeft, headLeft) > 0) { return false }\n var anchorRight = anchorLeft + this.$anchorCell.nodeAfter.attrs.colspan,\n headRight = headLeft + this.$headCell.nodeAfter.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width\n };\n\n CellSelection.prototype.eq = function eq (other) {\n return other instanceof CellSelection && other.$anchorCell.pos == this.$anchorCell.pos &&\n other.$headCell.pos == this.$headCell.pos\n };\n\n // :: (ResolvedPos, ?ResolvedPos) → CellSelection\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n CellSelection.rowSelection = function rowSelection ($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var map = TableMap.get($anchorCell.node(-1)), start = $anchorCell.start(-1);\n var anchorRect = map.findCell($anchorCell.pos - start), headRect = map.findCell($headCell.pos - start);\n var doc = $anchorCell.node(0);\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n { $anchorCell = doc.resolve(start + map.map[anchorRect.top * map.width]); }\n if (headRect.right < map.width)\n { $headCell = doc.resolve(start + map.map[map.width * (headRect.top + 1) - 1]); }\n } else {\n if (headRect.left > 0)\n { $headCell = doc.resolve(start + map.map[headRect.top * map.width]); }\n if (anchorRect.right < map.width)\n { $anchorCell = doc.resolve(start + map.map[map.width * (anchorRect.top + 1) - 1]); }\n }\n return new CellSelection($anchorCell, $headCell)\n };\n\n CellSelection.prototype.toJSON = function toJSON () {\n return {type: \"cell\", anchor: this.$anchorCell.pos, head: this.$headCell.pos}\n };\n\n CellSelection.fromJSON = function fromJSON (doc, json) {\n return new CellSelection(doc.resolve(json.anchor), doc.resolve(json.head))\n };\n\n // :: (Node, number, ?number) → CellSelection\n CellSelection.create = function create (doc, anchorCell, headCell) {\n if ( headCell === void 0 ) headCell = anchorCell;\n\n return new CellSelection(doc.resolve(anchorCell), doc.resolve(headCell))\n };\n\n CellSelection.prototype.getBookmark = function getBookmark () { return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos) };\n\n return CellSelection;\n}(Selection));\n\nCellSelection.prototype.visible = false;\n\nSelection.jsonID(\"cell\", CellSelection);\n\nvar CellBookmark = function CellBookmark(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n};\nCellBookmark.prototype.map = function map (mapping) {\n return new CellBookmark(mapping.map(this.anchor), mapping.map(this.head))\n};\nCellBookmark.prototype.resolve = function resolve (doc) {\n var $anchorCell = doc.resolve(this.anchor), $headCell = doc.resolve(this.head);\n if ($anchorCell.parent.type.spec.tableRole == \"row\" &&\n $headCell.parent.type.spec.tableRole == \"row\" &&\n $anchorCell.index() < $anchorCell.parent.childCount &&\n $headCell.index() < $headCell.parent.childCount &&\n inSameTable($anchorCell, $headCell))\n { return new CellSelection($anchorCell, $headCell) }\n else\n { return Selection.near($headCell, 1) }\n};\n\nfunction drawCellSelection(state) {\n if (!(state.selection instanceof CellSelection)) { return null }\n var cells = [];\n state.selection.forEachCell(function (node, pos) {\n cells.push(Decoration.node(pos, pos + node.nodeSize, {class: \"selectedCell\"}));\n });\n return DecorationSet.create(state.doc, cells)\n}\n\nfunction isCellBoundarySelection(ref) {\n var $from = ref.$from;\n var $to = ref.$to;\n\n if ($from.pos == $to.pos || $from.pos < $from.pos - 6) { return false } // Cheap elimination\n var afterFrom = $from.pos, beforeTo = $to.pos, depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n { if ($from.after(depth + 1) < $from.end(depth)) { break } }\n for (var d = $to.depth; d >= 0; d--, beforeTo--)\n { if ($to.before(d + 1) > $to.start(d)) { break } }\n return afterFrom == beforeTo && /row|table/.test($from.node(depth).type.spec.tableRole)\n}\n\nfunction isTextSelectionAcrossCells(ref) {\n var $from = ref.$from;\n var $to = ref.$to;\n\n var fromCellBoundaryNode;\n var toCellBoundaryNode;\n\n for (var i = $from.depth; i > 0; i--) {\n var node = $from.node(i);\n if (node.type.spec.tableRole === 'cell' || node.type.spec.tableRole === 'header_cell') {\n fromCellBoundaryNode = node;\n break;\n }\n }\n\n for (var i$1 = $to.depth; i$1 > 0; i$1--) {\n var node$1 = $to.node(i$1);\n if (node$1.type.spec.tableRole === 'cell' || node$1.type.spec.tableRole === 'header_cell') {\n toCellBoundaryNode = node$1;\n break;\n }\n }\n\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0\n}\n\nfunction normalizeSelection(state, tr, allowTableNodeSelection) {\n var sel = (tr || state).selection, doc = (tr || state).doc, normalize, role;\n if (sel instanceof NodeSelection && (role = sel.node.type.spec.tableRole)) {\n if (role == \"cell\" || role == \"header_cell\") {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == \"row\") {\n var $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n var map = TableMap.get(sel.node), start = sel.from + 1;\n var lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize)\n { (tr || (tr = state.tr)).setSelection(normalize); }\n return tr\n}\n\n// Utilities used for copy/paste handling.\n\n// Utilities to help with copying and pasting table cells\n\n// : (Slice) → ?{width: number, height: number, rows: [Fragment]}\n// Get a rectangular area of cells from a slice, or null if the outer\n// nodes of the slice aren't table cells or rows.\nfunction pastedCells(slice) {\n if (!slice.size) { return null }\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n while (content.childCount == 1 && (openStart > 0 && openEnd > 0 || content.firstChild.type.spec.tableRole == \"table\")) {\n openStart--;\n openEnd--;\n content = content.firstChild.content;\n }\n var first = content.firstChild, role = first.type.spec.tableRole;\n var schema = first.type.schema, rows = [];\n if (role == \"row\") {\n for (var i = 0; i < content.childCount; i++) {\n var cells = content.child(i).content;\n var left = i ? 0 : Math.max(0, openStart - 1);\n var right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right) { cells = fitSlice(tableNodeTypes(schema).row, new Slice(cells, left, right)).content; }\n rows.push(cells);\n }\n } else if (role == \"cell\" || role == \"header_cell\") {\n rows.push(openStart || openEnd ? fitSlice(tableNodeTypes(schema).row, new Slice(content, openStart, openEnd)).content : content);\n } else {\n return null\n }\n return ensureRectangular(schema, rows)\n}\n\n// : (Schema, [Fragment]) → {width: number, height: number, rows: [Fragment]}\n// Compute the width and height of a set of cells, and make sure each\n// row has the same number of cells.\nfunction ensureRectangular(schema, rows) {\n var widths = [];\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n for (var j = row.childCount - 1; j >= 0; j--) {\n var ref = row.child(j).attrs;\n var rowspan = ref.rowspan;\n var colspan = ref.colspan;\n for (var r = i; r < i + rowspan; r++)\n { widths[r] = (widths[r] || 0) + colspan; }\n }\n }\n var width = 0;\n for (var r$1 = 0; r$1 < widths.length; r$1++) { width = Math.max(width, widths[r$1]); }\n for (var r$2 = 0; r$2 < widths.length; r$2++) {\n if (r$2 >= rows.length) { rows.push(Fragment.empty); }\n if (widths[r$2] < width) {\n var empty = tableNodeTypes(schema).cell.createAndFill(), cells = [];\n for (var i$1 = widths[r$2]; i$1 < width; i$1++) { cells.push(empty); }\n rows[r$2] = rows[r$2].append(Fragment.from(cells));\n }\n }\n return {height: rows.length, width: width, rows: rows}\n}\n\nfunction fitSlice(nodeType, slice) {\n var node = nodeType.createAndFill();\n var tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc\n}\n\n// : ({width: number, height: number, rows: [Fragment]}, number, number) → {width: number, height: number, rows: [Fragment]}\n// Clip or extend (repeat) the given set of cells to cover the given\n// width and height. Will clip rowspan/colspan cells at the edges when\n// they stick out.\nfunction clipCells(ref, newWidth, newHeight) {\n var width = ref.width;\n var height = ref.height;\n var rows = ref.rows;\n\n if (width != newWidth) {\n var added = [], newRows = [];\n for (var row = 0; row < rows.length; row++) {\n var frag = rows[row], cells = [];\n for (var col = added[row] || 0, i = 0; col < newWidth; i++) {\n var cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n { cell = cell.type.create(removeColSpan(cell.attrs, cell.attrs.colspan, col + cell.attrs.colspan - newWidth), cell.content); }\n cells.push(cell);\n col += cell.attrs.colspan;\n for (var j = 1; j < cell.attrs.rowspan; j++)\n { added[row + j] = (added[row + j] || 0) + cell.attrs.colspan; }\n }\n newRows.push(Fragment.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n\n if (height != newHeight) {\n var newRows$1 = [];\n for (var row$1 = 0, i$1 = 0; row$1 < newHeight; row$1++, i$1++) {\n var cells$1 = [], source = rows[i$1 % height];\n for (var j$1 = 0; j$1 < source.childCount; j$1++) {\n var cell$1 = source.child(j$1);\n if (row$1 + cell$1.attrs.rowspan > newHeight)\n { cell$1 = cell$1.type.create(setAttr(cell$1.attrs, \"rowspan\", Math.max(1, newHeight - cell$1.attrs.rowspan)), cell$1.content); }\n cells$1.push(cell$1);\n }\n newRows$1.push(Fragment.from(cells$1));\n }\n rows = newRows$1;\n height = newHeight;\n }\n\n return {width: width, height: height, rows: rows}\n}\n\n// Make sure a table has at least the given width and height. Return\n// true if something was changed.\nfunction growTable(tr, map, table, start, width, height, mapFrom) {\n var schema = tr.doc.type.schema, types = tableNodeTypes(schema), empty, emptyHead;\n if (width > map.width) {\n for (var row = 0, rowEnd = 0; row < map.height; row++) {\n var rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n var cells = [], add = (void 0);\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n { add = empty || (empty = types.cell.createAndFill()); }\n else\n { add = emptyHead || (emptyHead = types.header_cell.createAndFill()); }\n for (var i = map.width; i < width; i++) { cells.push(add); }\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n var cells$1 = [];\n for (var i$1 = 0, start$1 = (map.height - 1) * map.width; i$1 < Math.max(map.width, width); i$1++) {\n var header = i$1 >= map.width ? false :\n table.nodeAt(map.map[start$1 + i$1]).type == types.header_cell;\n cells$1.push(header\n ? (emptyHead || (emptyHead = types.header_cell.createAndFill()))\n : (empty || (empty = types.cell.createAndFill())));\n }\n\n var emptyRow = types.row.create(null, Fragment.from(cells$1)), rows = [];\n for (var i$2 = map.height; i$2 < height; i$2++) { rows.push(emptyRow); }\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead)\n}\n\n// Make sure the given line (left, top) to (right, top) doesn't cross\n// any rowspan cells by splitting cells that cross it. Return true if\n// something changed.\nfunction isolateHorizontal(tr, map, table, start, left, right, top, mapFrom) {\n if (top == 0 || top == map.height) { return false }\n var found = false;\n for (var col = left; col < right; col++) {\n var index = top * map.width + col, pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n var cell = table.nodeAt(pos);\n var ref = map.findCell(pos);\n var cellTop = ref.top;\n var cellLeft = ref.left;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, setAttr(cell.attrs, \"rowspan\", top - cellTop));\n tr.insert(tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill(setAttr(cell.attrs, \"rowspan\", (cellTop + cell.attrs.rowspan) - top)));\n col += cell.attrs.colspan - 1;\n }\n }\n return found\n}\n\n// Make sure the given line (left, top) to (left, bottom) doesn't\n// cross any colspan cells by splitting cells that cross it. Return\n// true if something changed.\nfunction isolateVertical(tr, map, table, start, top, bottom, left, mapFrom) {\n if (left == 0 || left == map.width) { return false }\n var found = false;\n for (var row = top; row < bottom; row++) {\n var index = row * map.width + left, pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n var cell = table.nodeAt(pos), cellLeft = map.colCount(pos);\n var updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(updatePos, null, removeColSpan(cell.attrs, left - cellLeft, cell.attrs.colspan - (left - cellLeft)));\n tr.insert(updatePos + cell.nodeSize, cell.type.createAndFill(removeColSpan(cell.attrs, 0, left - cellLeft)));\n row += cell.attrs.rowspan - 1;\n }\n }\n return found\n}\n\n// Insert the given set of cells (as returned by `pastedCells`) into a\n// table, at the position pointed at by rect.\nfunction insertCells(state, dispatch, tableStart, rect, cells) {\n var table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc, map = TableMap.get(table);\n var top = rect.top;\n var left = rect.left;\n var right = left + cells.width, bottom = top + cells.height;\n var tr = state.tr, mapFrom = 0;\n function recomp() {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n // Prepare the table to be large enough and not have any cells\n // crossing the boundaries of the rectangle that we want to\n // insert into. If anything about it changes, recompute the table\n // map so that subsequent operations can see the current shape.\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom)) { recomp(); }\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom)) { recomp(); }\n if (isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom)) { recomp(); }\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom)) { recomp(); }\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom)) { recomp(); }\n\n for (var row = top; row < bottom; row++) {\n var from = map.positionAt(row, left, table), to = map.positionAt(row, right, table);\n tr.replace(tr.mapping.slice(mapFrom).map(from + tableStart), tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice(cells.rows[row - top], 0, 0));\n }\n recomp();\n tr.setSelection(new CellSelection(tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table))));\n dispatch(tr);\n}\n\n// This file defines a number of helpers for wiring up user input to\n\nvar handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1),\n\n \"Shift-ArrowLeft\": shiftArrow(\"horiz\", -1),\n \"Shift-ArrowRight\": shiftArrow(\"horiz\", 1),\n \"Shift-ArrowUp\": shiftArrow(\"vert\", -1),\n \"Shift-ArrowDown\": shiftArrow(\"vert\", 1),\n\n \"Backspace\": deleteCellSelection,\n \"Mod-Backspace\": deleteCellSelection,\n \"Delete\": deleteCellSelection,\n \"Mod-Delete\": deleteCellSelection\n});\n\nfunction maybeSetSelection(state, dispatch, selection) {\n if (selection.eq(state.selection)) { return false }\n if (dispatch) { dispatch(state.tr.setSelection(selection).scrollIntoView()); }\n return true\n}\n\nfunction arrow(axis, dir) {\n return function (state, dispatch, view) {\n var sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(state, dispatch, Selection.near(sel.$headCell, dir))\n }\n if (axis != \"horiz\" && !sel.empty) { return false }\n var end = atEndOfCell(view, axis, dir);\n if (end == null) { return false }\n if (axis == \"horiz\") {\n return maybeSetSelection(state, dispatch, Selection.near(state.doc.resolve(sel.head + dir), dir))\n } else {\n var $cell = state.doc.resolve(end), $next = nextCell($cell, axis, dir), newSel;\n if ($next) { newSel = Selection.near($next, 1); }\n else if (dir < 0) { newSel = Selection.near(state.doc.resolve($cell.before(-1)), -1); }\n else { newSel = Selection.near(state.doc.resolve($cell.after(-1)), 1); }\n return maybeSetSelection(state, dispatch, newSel)\n }\n }\n}\n\nfunction shiftArrow(axis, dir) {\n return function (state, dispatch, view) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection)) {\n var end = atEndOfCell(view, axis, dir);\n if (end == null) { return false }\n sel = new CellSelection(state.doc.resolve(end));\n }\n var $head = nextCell(sel.$headCell, axis, dir);\n if (!$head) { return false }\n return maybeSetSelection(state, dispatch, new CellSelection(sel.$anchorCell, $head))\n }\n}\n\nfunction deleteCellSelection(state, dispatch) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection)) { return false }\n if (dispatch) {\n var tr = state.tr, baseContent = tableNodeTypes(state.schema).cell.createAndFill().content;\n sel.forEachCell(function (cell, pos) {\n if (!cell.content.eq(baseContent))\n { tr.replace(tr.mapping.map(pos + 1), tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice(baseContent, 0, 0)); }\n });\n if (tr.docChanged) { dispatch(tr); }\n }\n return true\n}\n\nfunction handleTripleClick(view, pos) {\n var doc = view.state.doc, $cell = cellAround(doc.resolve(pos));\n if (!$cell) { return false }\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true\n}\n\nfunction handlePaste(view, _, slice) {\n if (!isInTable(view.state)) { return false }\n var cells = pastedCells(slice), sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells) { cells = {width: 1, height: 1, rows: [Fragment.from(fitSlice(tableNodeTypes(view.state.schema).cell, slice))]}; }\n var table = sel.$anchorCell.node(-1), start = sel.$anchorCell.start(-1);\n var rect = TableMap.get(table).rectBetween(sel.$anchorCell.pos - start, sel.$headCell.pos - start);\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true\n } else if (cells) {\n var $cell = selectionCell(view.state), start$1 = $cell.start(-1);\n insertCells(view.state, view.dispatch, start$1, TableMap.get($cell.node(-1)).findCell($cell.pos - start$1), cells);\n return true\n } else {\n return false\n }\n}\n\nfunction handleMouseDown(view, startEvent) {\n if (startEvent.ctrlKey || startEvent.metaKey) { return }\n\n var startDOMCell = domInCell(view, startEvent.target), $anchor;\n if (startEvent.shiftKey && (view.state.selection instanceof CellSelection)) {\n // Adding to an existing cell selection\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (startEvent.shiftKey && startDOMCell &&\n ($anchor = cellAround(view.state.selection.$anchor)) != null &&\n cellUnderMouse(view, startEvent).pos != $anchor.pos) {\n // Adding to a selection that starts in another cell (causing a\n // cell selection to be created).\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n // Not in a cell, let the default behavior happen.\n return\n }\n\n // Create and dispatch a cell selection between the given anchor and\n // the position under the mouse.\n function setCellSelection($anchor, event) {\n var $head = cellUnderMouse(view, event);\n var starting = key.getState(view.state) == null;\n if (!$head || !inSameTable($anchor, $head)) {\n if (starting) { $head = $anchor; }\n else { return }\n }\n var selection = new CellSelection($anchor, $head);\n if (starting || !view.state.selection.eq(selection)) {\n var tr = view.state.tr.setSelection(selection);\n if (starting) { tr.setMeta(key, $anchor.pos); }\n view.dispatch(tr);\n }\n }\n\n // Stop listening to mouse motion events.\n function stop() {\n view.root.removeEventListener(\"mouseup\", stop);\n view.root.removeEventListener(\"dragstart\", stop);\n view.root.removeEventListener(\"mousemove\", move);\n if (key.getState(view.state) != null) { view.dispatch(view.state.tr.setMeta(key, -1)); }\n }\n\n function move(event) {\n var anchor = key.getState(view.state), $anchor;\n if (anchor != null) {\n // Continuing an existing cross-cell selection\n $anchor = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target) != startDOMCell) {\n // Moving out of the initial cell -- start a new cell selection\n $anchor = cellUnderMouse(view, startEvent);\n if (!$anchor) { return stop() }\n }\n if ($anchor) { setCellSelection($anchor, event); }\n }\n view.root.addEventListener(\"mouseup\", stop);\n view.root.addEventListener(\"dragstart\", stop);\n view.root.addEventListener(\"mousemove\", move);\n}\n\n// Check whether the cursor is at the end of a cell (so that further\n// motion would move out of the cell)\nfunction atEndOfCell(view, axis, dir) {\n if (!(view.state.selection instanceof TextSelection)) { return null }\n var ref = view.state.selection;\n var $head = ref.$head;\n for (var d = $head.depth - 1; d >= 0; d--) {\n var parent = $head.node(d), index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount)) { return null }\n if (parent.type.spec.tableRole == \"cell\" || parent.type.spec.tableRole == \"header_cell\") {\n var cellPos = $head.before(d);\n var dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return view.endOfTextblock(dirStr) ? cellPos : null\n }\n }\n return null\n}\n\nfunction domInCell(view, dom) {\n for (; dom && dom != view.dom; dom = dom.parentNode)\n { if (dom.nodeName == \"TD\" || dom.nodeName == \"TH\") { return dom } }\n}\n\nfunction cellUnderMouse(view, event) {\n var mousePos = view.posAtCoords({left: event.clientX, top: event.clientY});\n if (!mousePos) { return null }\n return mousePos ? cellAround(view.state.doc.resolve(mousePos.pos)) : null\n}\n\n// This file defines helpers for normalizing tables, making sure no\n\nvar fixTablesKey = new PluginKey(\"fix-tables\");\n\n// Helper for iterating through the nodes in a document that changed\n// compared to the given previous document. Useful for avoiding\n// duplicate work on each transaction.\nfunction changedDescendants(old, cur, offset, f) {\n var oldSize = old.childCount, curSize = cur.childCount;\n outer: for (var i = 0, j = 0; i < curSize; i++) {\n var child = cur.child(i);\n for (var scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n { changedDescendants(old.child(j), child, offset + 1, f); }\n else\n { child.nodesBetween(0, child.content.size, f, offset + 1); }\n offset += child.nodeSize;\n }\n}\n\n// :: (EditorState, ?EditorState) → ?Transaction\n// Inspect all tables in the given state's document and return a\n// transaction that fixes them, if necessary. If `oldState` was\n// provided, that is assumed to hold a previous, known-good state,\n// which will be used to avoid re-scanning unchanged parts of the\n// document.\nfunction fixTables(state, oldState) {\n var tr, check = function (node, pos) {\n if (node.type.spec.tableRole == \"table\") { tr = fixTable(state, node, pos, tr); }\n };\n if (!oldState) { state.doc.descendants(check); }\n else if (oldState.doc != state.doc) { changedDescendants(oldState.doc, state.doc, 0, check); }\n return tr\n}\n\n// : (EditorState, Node, number, ?Transaction) → ?Transaction\n// Fix the given table, if necessary. Will append to the transaction\n// it was given, if non-null, or create a new one if necessary.\nfunction fixTable(state, table, tablePos, tr) {\n var map = TableMap.get(table);\n if (!map.problems) { return tr }\n if (!tr) { tr = state.tr; }\n\n // Track which rows we must add cells to, so that we can adjust that\n // when fixing collisions.\n var mustAdd = [];\n for (var i = 0; i < map.height; i++) { mustAdd.push(0); }\n for (var i$1 = 0; i$1 < map.problems.length; i$1++) {\n var prob = map.problems[i$1];\n if (prob.type == \"collision\") {\n var cell = table.nodeAt(prob.pos);\n for (var j = 0; j < cell.attrs.rowspan; j++) { mustAdd[prob.row + j] += prob.n; }\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, removeColSpan(cell.attrs, cell.attrs.colspan - prob.n, prob.n));\n } else if (prob.type == \"missing\") {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == \"overlong_rowspan\") {\n var cell$1 = table.nodeAt(prob.pos);\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, setAttr(cell$1.attrs, \"rowspan\", cell$1.attrs.rowspan - prob.n));\n } else if (prob.type == \"colwidth mismatch\") {\n var cell$2 = table.nodeAt(prob.pos);\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, setAttr(cell$2.attrs, \"colwidth\", prob.colwidth));\n }\n }\n var first, last;\n for (var i$2 = 0; i$2 < mustAdd.length; i$2++) { if (mustAdd[i$2]) {\n if (first == null) { first = i$2; }\n last = i$2;\n } }\n // Add the necessary cells, using a heuristic for whether to add the\n // cells at the start or end of the rows (if it looks like a 'bite'\n // was taken out of the table, add cells at the start of the row\n // after the bite. Otherwise add them at the end).\n for (var i$3 = 0, pos = tablePos + 1; i$3 < map.height; i$3++) {\n var row = table.child(i$3);\n var end = pos + row.nodeSize;\n var add = mustAdd[i$3];\n if (add > 0) {\n var tableNodeType = 'cell';\n if (row.firstChild) {\n tableNodeType = row.firstChild.type.spec.tableRole;\n }\n var nodes = [];\n for (var j$1 = 0; j$1 < add; j$1++)\n { nodes.push(tableNodeTypes(state.schema)[tableNodeType].createAndFill()); }\n var side = (i$3 == 0 || first == i$3 - 1) && last == i$3 ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true })\n}\n\n// This file defines a number of table-related commands.\n\n// Helper to get the selected rectangle in a table, if any. Adds table\n// map, table node, and table start offset to the object for\n// convenience.\nfunction selectedRect(state) {\n var sel = state.selection, $pos = selectionCell(state);\n var table = $pos.node(-1), tableStart = $pos.start(-1), map = TableMap.get(table);\n var rect;\n if (sel instanceof CellSelection)\n { rect = map.rectBetween(sel.$anchorCell.pos - tableStart, sel.$headCell.pos - tableStart); }\n else\n { rect = map.findCell($pos.pos - tableStart); }\n rect.tableStart = tableStart;\n rect.map = map;\n rect.table = table;\n return rect\n}\n\n// Add a column at the given position in a table.\nfunction addColumn(tr, ref, col) {\n var map = ref.map;\n var tableStart = ref.tableStart;\n var table = ref.table;\n\n var refColumn = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn))\n { refColumn = col == 0 || col == map.width ? null : 0; }\n\n for (var row = 0; row < map.height; row++) {\n var index = row * map.width + col;\n // If this position falls inside a col-spanning cell\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n var pos = map.map[index], cell = table.nodeAt(pos);\n tr.setNodeMarkup(tr.mapping.map(tableStart + pos), null,\n addColSpan(cell.attrs, col - map.colCount(pos)));\n // Skip ahead if rowspan > 1\n row += cell.attrs.rowspan - 1;\n } else {\n var type = refColumn == null ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refColumn]).type;\n var pos$1 = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos$1), type.createAndFill());\n }\n }\n return tr\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command to add a column before the column with the selection.\nfunction addColumnBefore(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command to add a column after the column with the selection.\nfunction addColumnAfter(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true\n}\n\nfunction removeColumn(tr, ref, col) {\n var map = ref.map;\n var table = ref.table;\n var tableStart = ref.tableStart;\n\n var mapStart = tr.mapping.maps.length;\n for (var row = 0; row < map.height;) {\n var index = row * map.width + col, pos = map.map[index], cell = table.nodeAt(pos);\n // If this is part of a col-spanning cell\n if ((col > 0 && map.map[index - 1] == pos) || (col < map.width - 1 && map.map[index + 1] == pos)) {\n tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + pos), null,\n removeColSpan(cell.attrs, col - map.colCount(pos)));\n } else {\n var start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += cell.attrs.rowspan;\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command function that removes the selected columns from a table.\nfunction deleteColumn(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state), tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width) { return false }\n for (var i = rect.right - 1;; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left) { break }\n rect.table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true\n}\n\nfunction rowIsHeader(map, table, row) {\n var headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (var col = 0; col < map.width; col++)\n { if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n { return false } }\n return true\n}\n\nfunction addRow(tr, ref, row) {\n var map = ref.map;\n var tableStart = ref.tableStart;\n var table = ref.table;\n\n var rowPos = tableStart;\n for (var i = 0; i < row; i++) { rowPos += table.child(i).nodeSize; }\n var cells = [], refRow = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n { refRow = row == 0 || row == map.height ? null : 0; }\n for (var col = 0, index = map.width * row; col < map.width; col++, index++) {\n // Covered by a rowspan cell\n if (row > 0 && row < map.height && map.map[index] == map.map[index - map.width]) {\n var pos = map.map[index], attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tableStart + pos, null, setAttr(attrs, \"rowspan\", attrs.rowspan + 1));\n col += attrs.colspan - 1;\n } else {\n var type = refRow == null ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refRow * map.width]).type;\n cells.push(type.createAndFill());\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Add a table row before the selection.\nfunction addRowBefore(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Add a table row after the selection.\nfunction addRowAfter(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true\n}\n\nfunction removeRow(tr, ref, row) {\n var map = ref.map;\n var table = ref.table;\n var tableStart = ref.tableStart;\n\n var rowPos = 0;\n for (var i = 0; i < row; i++) { rowPos += table.child(i).nodeSize; }\n var nextRow = rowPos + table.child(row).nodeSize;\n\n var mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n\n for (var col = 0, index = row * map.width; col < map.width; col++, index++) {\n var pos = map.map[index];\n if (row > 0 && pos == map.map[index - map.width]) {\n // If this cell starts in the row above, simply reduce its rowspan\n var attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, setAttr(attrs, \"rowspan\", attrs.rowspan - 1));\n col += attrs.colspan - 1;\n } else if (row < map.width && pos == map.map[index + map.width]) {\n // Else, if it continues in the row below, it has to be moved down\n var cell = table.nodeAt(pos);\n var copy = cell.type.create(setAttr(cell.attrs, \"rowspan\", cell.attrs.rowspan - 1), cell.content);\n var newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += cell.attrs.colspan - 1;\n }\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Remove the selected rows from a table.\nfunction deleteRow(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state), tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height) { return false }\n for (var i = rect.bottom - 1;; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top) { break }\n rect.table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true\n}\n\nfunction isEmpty(cell) {\n var c = cell.content;\n return c.childCount == 1 && c.firstChild.isTextblock && c.firstChild.childCount == 0\n}\n\nfunction cellsOverlapRectangle(ref, rect) {\n var width = ref.width;\n var height = ref.height;\n var map = ref.map;\n\n var indexTop = rect.top * width + rect.left, indexLeft = indexTop;\n var indexBottom = (rect.bottom - 1) * width + rect.left, indexRight = indexTop + (rect.right - rect.left - 1);\n for (var i = rect.top; i < rect.bottom; i++) {\n if (rect.left > 0 && map[indexLeft] == map[indexLeft - 1] ||\n rect.right < width && map[indexRight] == map[indexRight + 1]) { return true }\n indexLeft += width; indexRight += width;\n }\n for (var i$1 = rect.left; i$1 < rect.right; i$1++) {\n if (rect.top > 0 && map[indexTop] == map[indexTop - width] ||\n rect.bottom < height && map[indexBottom] == map[indexBottom + width]) { return true }\n indexTop++; indexBottom++;\n }\n return false\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Merge the selected cells into a single cell. Only available when\n// the selected cells' outline forms a rectangle.\nfunction mergeCells(state, dispatch) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection) || sel.$anchorCell.pos == sel.$headCell.pos) { return false }\n var rect = selectedRect(state);\n var map = rect.map;\n if (cellsOverlapRectangle(map, rect)) { return false }\n if (dispatch) {\n var tr = state.tr, seen = {}, content = Fragment.empty, mergedPos, mergedCell;\n for (var row = rect.top; row < rect.bottom; row++) {\n for (var col = rect.left; col < rect.right; col++) {\n var cellPos = map.map[row * map.width + col], cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos]) { continue }\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell)) { content = content.append(cell.content); }\n var mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n tr.setNodeMarkup(mergedPos + rect.tableStart, null,\n setAttr(addColSpan(mergedCell.attrs, mergedCell.attrs.colspan, (rect.right - rect.left) - mergedCell.attrs.colspan),\n \"rowspan\", rect.bottom - rect.top));\n if (content.size) {\n var end = mergedPos + 1 + mergedCell.content.size;\n var start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart)));\n dispatch(tr);\n }\n return true\n}\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Split a selected cell, whose rowpan or colspan is greater than one,\n// into smaller cells. Use the first cell type for the new cells.\nfunction splitCell(state, dispatch) {\n var nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(function (ref) {\n var node = ref.node;\n\n return nodeTypes[node.type.spec.tableRole]\n })(state, dispatch)\n}\n\n// :: (getCellType: ({ row: number, col: number, node: Node}) → NodeType) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Split a selected cell, whose rowpan or colspan is greater than one,\n// into smaller cells with the cell type (th, td) returned by getType function.\nfunction splitCellWithType(getCellType) {\n return function (state, dispatch) {\n var sel = state.selection;\n var cellNode, cellPos;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode) { return false }\n cellPos = cellAround(sel.$from).pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos) { return false }\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {return false}\n if (dispatch) {\n var baseAttrs = cellNode.attrs, attrs = [], colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1) { baseAttrs = setAttr(baseAttrs, \"rowspan\", 1); }\n if (baseAttrs.colspan > 1) { baseAttrs = setAttr(baseAttrs, \"colspan\", 1); }\n var rect = selectedRect(state), tr = state.tr;\n for (var i = 0; i < rect.right - rect.left; i++)\n { attrs.push(colwidth ? setAttr(baseAttrs, \"colwidth\", colwidth && colwidth[i] ? [colwidth[i]] : null) : baseAttrs); }\n var lastCell;\n for (var row = rect.top; row < rect.bottom; row++) {\n var pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top) { pos += cellNode.nodeSize; }\n for (var col = rect.left, i$1 = 0; col < rect.right; col++, i$1++) {\n if (col == rect.left && row == rect.top) { continue }\n tr.insert(lastCell = tr.mapping.map(pos + rect.tableStart, 1), getCellType({ node: cellNode, row: row, col: col}).createAndFill(attrs[i$1]));\n }\n }\n tr.setNodeMarkup(cellPos, getCellType({ node: cellNode, row: rect.top, col: rect.left}), attrs[0]);\n if (sel instanceof CellSelection)\n { tr.setSelection(new CellSelection(tr.doc.resolve(sel.$anchorCell.pos),\n lastCell && tr.doc.resolve(lastCell))); }\n dispatch(tr);\n }\n return true\n }\n}\n\n// :: (string, any) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command that sets the given attribute to the given value,\n// and is only available when the currently selected cell doesn't\n// already have that attribute set to that value.\nfunction setCellAttr(name, value) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n var $cell = selectionCell(state);\n if ($cell.nodeAfter.attrs[name] === value) { return false }\n if (dispatch) {\n var tr = state.tr;\n if (state.selection instanceof CellSelection)\n { state.selection.forEachCell(function (node, pos) {\n if (node.attrs[name] !== value)\n { tr.setNodeMarkup(pos, null, setAttr(node.attrs, name, value)); }\n }); }\n else\n { tr.setNodeMarkup($cell.pos, null, setAttr($cell.nodeAfter.attrs, name, value)); }\n dispatch(tr);\n }\n return true\n }\n}\n\nfunction deprecated_toggleHeader(type) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var types = tableNodeTypes(state.schema);\n var rect = selectedRect(state), tr = state.tr;\n var cells = rect.map.cellsInRect(type == \"column\" ? new Rect(rect.left, 0, rect.right, rect.map.height) :\n type == \"row\" ? new Rect(0, rect.top, rect.map.width, rect.bottom) : rect);\n var nodes = cells.map(function (pos) { return rect.table.nodeAt(pos); });\n for (var i = 0; i < cells.length; i++) // Remove headers, if any\n { if (nodes[i].type == types.header_cell)\n { tr.setNodeMarkup(rect.tableStart + cells[i], types.cell, nodes[i].attrs); } }\n if (tr.steps.length == 0) { for (var i$1 = 0; i$1 < cells.length; i$1++) // No headers removed, add instead\n { tr.setNodeMarkup(rect.tableStart + cells[i$1], types.header_cell, nodes[i$1].attrs); } }\n dispatch(tr);\n }\n return true\n }\n}\n\nfunction isHeaderEnabledByType(type, rect, types) {\n // Get cell positions for first row or first column\n var cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == \"row\" ? rect.map.width : 1,\n bottom: type == \"column\" ? rect.map.height : 1,\n });\n\n for (var i = 0; i < cellPositions.length; i++) {\n var cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false\n }\n }\n\n return true\n}\n\n// :: (string, ?{ useDeprecatedLogic: bool }) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles between row/column header and normal cells (Only applies to first row/column).\n// For deprecated behavior pass `useDeprecatedLogic` in options with true.\nfunction toggleHeader(type, options) {\n options = options || { useDeprecatedLogic: false };\n\n if (options.useDeprecatedLogic)\n { return deprecated_toggleHeader(type) }\n\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var types = tableNodeTypes(state.schema);\n var rect = selectedRect(state), tr = state.tr;\n\n var isHeaderRowEnabled = isHeaderEnabledByType(\"row\", rect, types);\n var isHeaderColumnEnabled = isHeaderEnabledByType(\"column\", rect, types);\n\n var isHeaderEnabled = type === \"column\" ? isHeaderRowEnabled :\n type === \"row\" ? isHeaderColumnEnabled : false;\n\n var selectionStartsAt = isHeaderEnabled ? 1 : 0;\n\n var cellsRect = type == \"column\" ? new Rect(0, selectionStartsAt, 1, rect.map.height) :\n type == \"row\" ? new Rect(selectionStartsAt, 0, rect.map.width, 1) : rect;\n\n var newType = type == \"column\" ? isHeaderColumnEnabled ? types.cell : types.header_cell :\n type == \"row\" ? isHeaderRowEnabled ? types.cell : types.header_cell : types.cell;\n\n rect.map.cellsInRect(cellsRect).forEach(function (relativeCellPos) {\n var cellPos = relativeCellPos + rect.tableStart;\n var cell = tr.doc.nodeAt(cellPos);\n\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n\n dispatch(tr);\n }\n return true\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected row contains header cells.\nvar toggleHeaderRow = toggleHeader(\"row\", { useDeprecatedLogic: true });\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected column contains header cells.\nvar toggleHeaderColumn = toggleHeader(\"column\", { useDeprecatedLogic: true });\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected cells are header cells.\nvar toggleHeaderCell = toggleHeader(\"cell\", { useDeprecatedLogic: true });\n\nfunction findNextCell($cell, dir) {\n if (dir < 0) {\n var before = $cell.nodeBefore;\n if (before) { return $cell.pos - before.nodeSize }\n for (var row = $cell.index(-1) - 1, rowEnd = $cell.before(); row >= 0; row--) {\n var rowNode = $cell.node(-1).child(row);\n if (rowNode.childCount) { return rowEnd - 1 - rowNode.lastChild.nodeSize }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) { return $cell.pos + $cell.nodeAfter.nodeSize }\n var table = $cell.node(-1);\n for (var row$1 = $cell.indexAfter(-1), rowStart = $cell.after(); row$1 < table.childCount; row$1++) {\n var rowNode$1 = table.child(row$1);\n if (rowNode$1.childCount) { return rowStart + 1 }\n rowStart += rowNode$1.nodeSize;\n }\n }\n}\n\n// :: (number) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command for selecting the next (direction=1) or previous\n// (direction=-1) cell in a table.\nfunction goToNextCell(direction) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n var cell = findNextCell(selectionCell(state), direction);\n if (cell == null) { return }\n if (dispatch) {\n var $cell = state.doc.resolve(cell);\n dispatch(state.tr.setSelection(TextSelection.between($cell, moveCellForward($cell))).scrollIntoView());\n }\n return true\n }\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Deletes the table around the selection, if any.\nfunction deleteTable(state, dispatch) {\n var $pos = state.selection.$anchor;\n for (var d = $pos.depth; d > 0; d--) {\n var node = $pos.node(d);\n if (node.type.spec.tableRole == \"table\") {\n if (dispatch) { dispatch(state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView()); }\n return true\n }\n }\n return false\n}\n\nvar TableView = function TableView(node, cellMinWidth) {\n this.node = node;\n this.cellMinWidth = cellMinWidth;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"tableWrapper\";\n this.table = this.dom.appendChild(document.createElement(\"table\"));\n this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n updateColumns(node, this.colgroup, this.table, cellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n};\n\nTableView.prototype.update = function update (node) {\n if (node.type != this.node.type) { return false }\n this.node = node;\n updateColumns(node, this.colgroup, this.table, this.cellMinWidth);\n return true\n};\n\nTableView.prototype.ignoreMutation = function ignoreMutation (record) {\n return record.type == \"attributes\" && (record.target == this.table || this.colgroup.contains(record.target))\n};\n\nfunction updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {\n var totalWidth = 0, fixedWidth = true;\n var nextDOM = colgroup.firstChild, row = node.firstChild;\n for (var i = 0, col = 0; i < row.childCount; i++) {\n var ref = row.child(i).attrs;\n var colspan = ref.colspan;\n var colwidth = ref.colwidth;\n for (var j = 0; j < colspan; j++, col++) {\n var hasWidth = overrideCol == col ? overrideValue : colwidth && colwidth[j];\n var cssWidth = hasWidth ? hasWidth + \"px\" : \"\";\n totalWidth += hasWidth || cellMinWidth;\n if (!hasWidth) { fixedWidth = false; }\n if (!nextDOM) {\n colgroup.appendChild(document.createElement(\"col\")).style.width = cssWidth;\n } else {\n if (nextDOM.style.width != cssWidth) { nextDOM.style.width = cssWidth; }\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n\n while (nextDOM) {\n var after = nextDOM.nextSibling;\n nextDOM.parentNode.removeChild(nextDOM);\n nextDOM = after;\n }\n\n if (fixedWidth) {\n table.style.width = totalWidth + \"px\";\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = totalWidth + \"px\";\n }\n}\n\nvar key$1 = new PluginKey(\"tableColumnResizing\");\n\nfunction columnResizing(ref) {\n if ( ref === void 0 ) ref = {};\n var handleWidth = ref.handleWidth; if ( handleWidth === void 0 ) handleWidth = 5;\n var cellMinWidth = ref.cellMinWidth; if ( cellMinWidth === void 0 ) cellMinWidth = 25;\n var View = ref.View; if ( View === void 0 ) View = TableView;\n var lastColumnResizable = ref.lastColumnResizable; if ( lastColumnResizable === void 0 ) lastColumnResizable = true;\n\n var plugin = new Plugin({\n key: key$1,\n state: {\n init: function init(_, state) {\n this.spec.props.nodeViews[tableNodeTypes(state.schema).table.name] =\n function (node, view) { return new View(node, cellMinWidth, view); };\n return new ResizeState(-1, false)\n },\n apply: function apply(tr, prev) {\n return prev.apply(tr)\n }\n },\n props: {\n attributes: function attributes(state) {\n var pluginState = key$1.getState(state);\n return pluginState.activeHandle > -1 ? {class: \"resize-cursor\"} : null\n },\n\n handleDOMEvents: {\n mousemove: function mousemove(view, event) { handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable); },\n mouseleave: function mouseleave(view) { handleMouseLeave(view); },\n mousedown: function mousedown(view, event) { handleMouseDown$1(view, event, cellMinWidth); }\n },\n\n decorations: function decorations(state) {\n var pluginState = key$1.getState(state);\n if (pluginState.activeHandle > -1) { return handleDecorations(state, pluginState.activeHandle) }\n },\n\n nodeViews: {}\n }\n });\n return plugin\n}\n\nvar ResizeState = function ResizeState(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n};\n\nResizeState.prototype.apply = function apply (tr) {\n var state = this, action = tr.getMeta(key$1);\n if (action && action.setHandle != null)\n { return new ResizeState(action.setHandle, null) }\n if (action && action.setDragging !== undefined)\n { return new ResizeState(state.activeHandle, action.setDragging) }\n if (state.activeHandle > -1 && tr.docChanged) {\n var handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) { handle = null; }\n state = new ResizeState(handle, state.dragging);\n }\n return state\n};\n\nfunction handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable) {\n var pluginState = key$1.getState(view.state);\n\n if (!pluginState.dragging) {\n var target = domCellAround(event.target), cell = -1;\n if (target) {\n var ref = target.getBoundingClientRect();\n var left = ref.left;\n var right = ref.right;\n if (event.clientX - left <= handleWidth)\n { cell = edgeCell(view, event, \"left\"); }\n else if (right - event.clientX <= handleWidth)\n { cell = edgeCell(view, event, \"right\"); }\n }\n\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n\n if (col == map.width - 1) {\n return\n }\n }\n\n updateHandle(view, cell);\n }\n }\n}\n\nfunction handleMouseLeave(view) {\n var pluginState = key$1.getState(view.state);\n if (pluginState.activeHandle > -1 && !pluginState.dragging) { updateHandle(view, -1); }\n}\n\nfunction handleMouseDown$1(view, event, cellMinWidth) {\n var pluginState = key$1.getState(view.state);\n if (pluginState.activeHandle == -1 || pluginState.dragging) { return false }\n\n var cell = view.state.doc.nodeAt(pluginState.activeHandle);\n var width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(view.state.tr.setMeta(key$1, {setDragging: {startX: event.clientX, startWidth: width}}));\n\n function finish(event) {\n window.removeEventListener(\"mouseup\", finish);\n window.removeEventListener(\"mousemove\", move);\n var pluginState = key$1.getState(view.state);\n if (pluginState.dragging) {\n updateColumnWidth(view, pluginState.activeHandle, draggedWidth(pluginState.dragging, event, cellMinWidth));\n view.dispatch(view.state.tr.setMeta(key$1, {setDragging: null}));\n }\n }\n function move(event) {\n if (!event.which) { return finish(event) }\n var pluginState = key$1.getState(view.state);\n var dragged = draggedWidth(pluginState.dragging, event, cellMinWidth);\n displayColumnWidth(view, pluginState.activeHandle, dragged, cellMinWidth);\n }\n\n window.addEventListener(\"mouseup\", finish);\n window.addEventListener(\"mousemove\", move);\n event.preventDefault();\n return true\n}\n\nfunction currentColWidth(view, cellPos, ref) {\n var colspan = ref.colspan;\n var colwidth = ref.colwidth;\n\n var width = colwidth && colwidth[colwidth.length - 1];\n if (width) { return width }\n var dom = view.domAtPos(cellPos);\n var node = dom.node.childNodes[dom.offset];\n var domWidth = node.offsetWidth, parts = colspan;\n if (colwidth) { for (var i = 0; i < colspan; i++) { if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n } } }\n return domWidth / parts\n}\n\nfunction domCellAround(target) {\n while (target && target.nodeName != \"TD\" && target.nodeName != \"TH\")\n { target = target.classList.contains(\"ProseMirror\") ? null : target.parentNode; }\n return target\n}\n\nfunction edgeCell(view, event, side) {\n var found = view.posAtCoords({left: event.clientX, top: event.clientY});\n if (!found) { return -1 }\n var pos = found.pos;\n var $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell) { return -1 }\n if (side == \"right\") { return $cell.pos }\n var map = TableMap.get($cell.node(-1)), start = $cell.start(-1);\n var index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1]\n}\n\nfunction draggedWidth(dragging, event, cellMinWidth) {\n var offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset)\n}\n\nfunction updateHandle(view, value) {\n view.dispatch(view.state.tr.setMeta(key$1, {setHandle: value}));\n}\n\nfunction updateColumnWidth(view, cell, width) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n var tr = view.state.tr;\n for (var row = 0; row < map.height; row++) {\n var mapIndex = row * map.width + col;\n // Rowspanning cell that has already been handled\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width]) { continue }\n var pos = map.map[mapIndex];\n var ref = table.nodeAt(pos);\n var attrs = ref.attrs;\n var index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width) { continue }\n var colwidth = attrs.colwidth ? attrs.colwidth.slice() : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, setAttr(attrs, \"colwidth\", colwidth));\n }\n if (tr.docChanged) { view.dispatch(tr); }\n}\n\nfunction displayColumnWidth(view, cell, width, cellMinWidth) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), start = $cell.start(-1);\n var col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n var dom = view.domAtPos($cell.start(-1)).node;\n while (dom.nodeName != \"TABLE\") { dom = dom.parentNode; }\n updateColumns(table, dom.firstChild, dom, cellMinWidth, col, width);\n}\n\nfunction zeroes(n) {\n var result = [];\n for (var i = 0; i < n; i++) { result.push(0); }\n return result\n}\n\nfunction handleDecorations(state, cell) {\n var decorations = [];\n var $cell = state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan;\n for (var row = 0; row < map.height; row++) {\n var index = col + row * map.width - 1;\n // For positions that are have either a different cell or the end\n // of the table to their right, and either the top of the table or\n // a different cell above them, add a decoration\n if ((col == map.width || map.map[index] != map.map[index + 1]) &&\n (row == 0 || map.map[index - 1] != map.map[index - 1 - map.width])) {\n var cellPos = map.map[index];\n var pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n var dom = document.createElement(\"div\");\n dom.className = \"column-resize-handle\";\n decorations.push(Decoration.widget(pos, dom));\n }\n }\n return DecorationSet.create(state.doc, decorations)\n}\n\n// This file defines a plugin that handles the drawing of cell\n\n// :: () → Plugin\n//\n// Creates a [plugin](http://prosemirror.net/docs/ref/#state.Plugin)\n// that, when added to an editor, enables cell-selection, handles\n// cell-based copy/paste, and makes sure tables stay well-formed (each\n// row has the same width, and cells don't overlap).\n//\n// You should probably put this plugin near the end of your array of\n// plugins, since it handles mouse and arrow key events in tables\n// rather broadly, and other plugins, like the gap cursor or the\n// column-width dragging plugin, might want to get a turn first to\n// perform more specific behavior.\nfunction tableEditing(ref) {\n if ( ref === void 0 ) ref = {};\n var allowTableNodeSelection = ref.allowTableNodeSelection; if ( allowTableNodeSelection === void 0 ) allowTableNodeSelection = false;\n\n return new Plugin({\n key: key,\n\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init: function init() { return null },\n apply: function apply(tr, cur) {\n var set = tr.getMeta(key);\n if (set != null) { return set == -1 ? null : set }\n if (cur == null || !tr.docChanged) { return cur }\n var ref = tr.mapping.mapResult(cur);\n var deleted = ref.deleted;\n var pos = ref.pos;\n return deleted ? null : pos\n }\n },\n\n props: {\n decorations: drawCellSelection,\n\n handleDOMEvents: {\n mousedown: handleMouseDown\n },\n\n createSelectionBetween: function createSelectionBetween(view) {\n if (key.getState(view.state) != null) { return view.state.selection }\n },\n\n handleTripleClick: handleTripleClick,\n\n handleKeyDown: handleKeyDown,\n\n handlePaste: handlePaste\n },\n\n appendTransaction: function appendTransaction(_, oldState, state) {\n return normalizeSelection(state, fixTables(state, oldState), allowTableNodeSelection)\n }\n })\n}\n\nexport { CellSelection, TableMap, TableView, clipCells as __clipCells, insertCells as __insertCells, pastedCells as __pastedCells, addColSpan, addColumn, addColumnAfter, addColumnBefore, addRow, addRowAfter, addRowBefore, cellAround, colCount, columnIsHeader, columnResizing, key$1 as columnResizingPluginKey, deleteColumn, deleteRow, deleteTable, findCell, fixTables, fixTablesKey, goToNextCell, handlePaste, inSameTable, isInTable, mergeCells, moveCellForward, nextCell, pointsAtCell, removeColSpan, removeColumn, removeRow, rowIsHeader, selectedRect, selectionCell, setAttr, setCellAttr, splitCell, splitCellWithType, tableEditing, key as tableEditingKey, tableNodeTypes, tableNodes, toggleHeader, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow, updateColumns as updateColumnsOnResize };\n","import { tableNodes } from 'prosemirror-tables';\nconst hole = 0;\nconst blockquoteDOM = ['blockquote', hole], hrDOM = ['hr'], preDOM = ['pre', ['code', hole]];\nconst olDOM = ['ol', 0], ulDOM = ['ul', 0], liDOM = ['li', 0];\nconst getAttributes = (dom) => {\n const result = {};\n let attributes = dom.attributes, attr;\n for (let i = 0; i < attributes.length; i++) {\n attr = attributes[i];\n result[attr.name] = attr.value;\n }\n return result;\n};\nconst commonAttributes = () => {\n return {\n style: { default: null },\n class: { default: null },\n id: { default: null }\n };\n};\nconst hasAttrs = (attrs, exclude) => {\n for (let attr in attrs) {\n if (attr && attrs[attr] !== null && attr !== exclude) {\n return true;\n }\n }\n return false;\n};\nconst getAttrs = (attrs, exclude) => {\n const result = {};\n for (let attr in attrs) {\n if (attr && attrs[attr] !== null && attr !== exclude) {\n result[attr] = attrs[attr];\n }\n }\n return result;\n};\nconst tagMark = tag => {\n return {\n [tag]: {\n name: tag,\n inclusive: true,\n parseDOM: [{ tag: tag }],\n toDOM: () => [tag, hole]\n }\n };\n};\nconst marks = Object.assign({ \n // :: MarkSpec A link. Has `href` and `title` attributes. `title`\n // defaults to the empty string. Rendered and parsed as an ``\n // element.\n link: {\n attrs: Object.assign({}, commonAttributes(), { href: { default: null }, target: { default: null }, title: { default: null } }),\n inclusive: false,\n parseDOM: [{ tag: 'a', getAttrs: getAttributes }],\n toDOM: (node) => ['a', getAttrs(node.attrs), hole]\n } }, tagMark('strong'), tagMark('b'), tagMark('em'), tagMark('i'), tagMark('u'), tagMark('del'), tagMark('sub'), tagMark('sup'), tagMark('code'), { style: {\n attrs: Object.assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'span',\n getAttrs: getAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ?\n ['span', getAttrs(node.attrs), hole] : ['span', hole]\n } });\nconst nodes = Object.assign({ \n // :: NodeSpec The top level document node.\n doc: {\n content: 'block+'\n }, \n // :: NodeSpec A plain paragraph textblock. Represented in the DOM\n // as a `

    ` element.\n paragraph: {\n content: 'inline*',\n group: 'block',\n attrs: Object.assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'p',\n getAttrs: getAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? ['p', getAttrs(node.attrs), hole] : ['p', hole]\n }, div: {\n // Uncaught SyntaxError: Mixing inline and block content (in content expression '(block | inline)*')\n // content: '(block | inline)*',\n content: 'block*',\n group: 'block',\n attrs: Object.assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'div',\n getAttrs: getAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? ['div', getAttrs(node.attrs), hole] : ['div', hole]\n }, \n // :: NodeSpec A blockquote (`

    `) wrapping one or more blocks.\n blockquote: {\n attrs: Object.assign({}, commonAttributes()),\n content: 'block+',\n group: 'block',\n defining: true,\n parseDOM: [{\n tag: 'blockquote',\n getAttrs: getAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? ['blockquote', getAttrs(node.attrs), hole] : blockquoteDOM\n }, \n // :: NodeSpec A horizontal rule (`
    `).\n horizontal_rule: {\n group: 'block',\n parseDOM: [{ tag: 'hr' }],\n toDOM: () => hrDOM\n }, \n // :: NodeSpec A heading textblock, with a `level` attribute that\n // has to hold the numbers from 1 to 6. Parsed and serialized as `

    ` to\n // `

    ` elements.\n heading: {\n attrs: Object.assign({}, commonAttributes(), { level: { default: 1 } }),\n content: 'inline*',\n group: 'block',\n defining: true,\n parseDOM: [\n { tag: 'h1', getAttrs: node => (Object.assign({}, getAttributes(node), { level: 1 })) },\n { tag: 'h2', getAttrs: node => (Object.assign({}, getAttributes(node), { level: 2 })) },\n { tag: 'h3', getAttrs: node => (Object.assign({}, getAttributes(node), { level: 3 })) },\n { tag: 'h4', getAttrs: node => (Object.assign({}, getAttributes(node), { level: 4 })) },\n { tag: 'h5', getAttrs: node => (Object.assign({}, getAttributes(node), { level: 5 })) },\n { tag: 'h6', getAttrs: node => (Object.assign({}, getAttributes(node), { level: 6 })) }\n ],\n toDOM: node => hasAttrs(node.attrs, 'level') ?\n ['h' + node.attrs.level, getAttrs(node.attrs, 'level'), hole] :\n ['h' + node.attrs.level, hole]\n }, \n // :: NodeSpec A code listing. Disallows marks or non-text inline\n // nodes by default. Represented as a `
    ` element with a\n    // `` element inside it.\n    code_block: {\n        content: 'text*',\n        marks: '',\n        group: 'block',\n        code: true,\n        defining: true,\n        parseDOM: [{ tag: 'pre', preserveWhitespace: 'full' }],\n        toDOM: () => preDOM\n    }, \n    // :: NodeSpec The text node.\n    text: {\n        inline: true,\n        group: 'inline'\n    }, \n    // :: NodeSpec An inline image (``) node. Supports `src`,\n    // `alt`, and `href` attributes. The latter two default to an empty\n    // string.\n    image: {\n        inline: true,\n        attrs: Object.assign({ src: { default: null }, alt: { default: null }, title: { default: null }, width: { default: null }, height: { default: null } }, commonAttributes()),\n        group: 'inline',\n        draggable: true,\n        parseDOM: [{ tag: 'img', getAttrs: getAttributes }],\n        toDOM: node => hasAttrs(node.attrs) ? ['img', getAttrs(node.attrs)] : ['img']\n    }, \n    // :: NodeSpec A hard line break represented in the DOM as a `
    ` element.\n hard_break: {\n inline: true,\n attrs: Object.assign({}, commonAttributes()),\n group: 'inline',\n selectable: false,\n parseDOM: [{\n tag: 'br',\n getAttrs: getAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? ['br', getAttrs(node.attrs)] : ['br']\n }, \n // :: NodeSpec\n // An ordered list [node spec](#model.NodeSpec). Has a single\n // attribute, `order`, which determines the number at which the list\n // starts counting, and defaults to 1. Represented as an `
      `\n // element.\n ordered_list: {\n content: 'list_item+',\n group: 'block',\n attrs: Object.assign({}, commonAttributes(), { type: { default: null }, order: { default: 1 } }),\n parseDOM: [{ tag: 'ol', getAttrs: (dom) => {\n return Object.assign({}, getAttributes(dom), { order: dom.hasAttribute('start') ? parseInt(dom.getAttribute('start') || '1', 10) : 1 });\n } }],\n toDOM: node => {\n return node.attrs.order === 1 ?\n (hasAttrs(node.attrs, 'order') ? ['ol', getAttrs(node.attrs, 'order'), hole] : olDOM) :\n ['ol', Object.assign({}, getAttrs(node.attrs, 'order'), { start: node.attrs.order }), hole];\n }\n }, \n // :: NodeSpec\n // A bullet list node specification represented in the DOM as a `
    ..